From: yao Date: Wed, 29 May 2013 07:48:56 +0000 (+0800) Subject: adjust test cases X-Git-Tag: accepted/tizen/6.0/unified/20201030.111113~1314^2~1271^2~3 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=a9b7ff41bd1e17977d75324783d6b61090cfa712;p=platform%2Fupstream%2Fopencv.git adjust test cases --- diff --git a/modules/ocl/perf/perf_brute_force_matcher.cpp b/modules/ocl/perf/perf_brute_force_matcher.cpp index 9b2ce89..406b46a 100644 --- a/modules/ocl/perf/perf_brute_force_matcher.cpp +++ b/modules/ocl/perf/perf_brute_force_matcher.cpp @@ -95,7 +95,7 @@ PERFTEST(BruteForceMatcher) GPU_FULL_ON; d_query.upload(query); d_train.upload(train); - d_matcher.match(d_query, d_train, matches[0]); + d_matcher.match(d_query, d_train, d_matches[0]); GPU_FULL_OFF; int diff = abs((int)d_matches[0].size() - (int)matches[0].size()); diff --git a/modules/ocl/perf/perf_pyrlk.cpp b/modules/ocl/perf/perf_opticalflow.cpp similarity index 76% rename from modules/ocl/perf/perf_pyrlk.cpp rename to modules/ocl/perf/perf_opticalflow.cpp index 76442d9..9887970 100644 --- a/modules/ocl/perf/perf_pyrlk.cpp +++ b/modules/ocl/perf/perf_opticalflow.cpp @@ -156,3 +156,73 @@ PERFTEST(PyrLKOpticalFlow) } } + + +PERFTEST(tvl1flow) +{ + cv::Mat frame0 = imread("rubberwhale1.png", cv::IMREAD_GRAYSCALE); + assert(!frame0.empty()); + + cv::Mat frame1 = imread("rubberwhale2.png", cv::IMREAD_GRAYSCALE); + assert(!frame1.empty()); + + cv::ocl::OpticalFlowDual_TVL1_OCL d_alg; + cv::ocl::oclMat d_flowx(frame0.size(), CV_32FC1); + cv::ocl::oclMat d_flowy(frame1.size(), CV_32FC1); + + cv::Ptr alg = cv::createOptFlow_DualTVL1(); + cv::Mat flow; + + + SUBTEST << frame0.cols << 'x' << frame0.rows << "; rubberwhale1.png; "<calc(frame0, frame1, flow); + + CPU_ON; + alg->calc(frame0, frame1, flow); + CPU_OFF; + + cv::Mat gold[2]; + cv::split(flow, gold); + + cv::ocl::oclMat d0(frame0.size(), CV_32FC1); + d0.upload(frame0); + cv::ocl::oclMat d1(frame1.size(), CV_32FC1); + d1.upload(frame1); + + WARMUP_ON; + d_alg(d0, d1, d_flowx, d_flowy); + WARMUP_OFF; +/* + double diff1 = 0.0, diff2 = 0.0; + if(ExceptedMatSimilar(gold[0], cv::Mat(d_flowx), 3e-3, diff1) == 1 + &&ExceptedMatSimilar(gold[1], cv::Mat(d_flowy), 3e-3, diff2) == 1) + TestSystem::instance().setAccurate(1); + else + TestSystem::instance().setAccurate(0); + + TestSystem::instance().setDiff(diff1); + TestSystem::instance().setDiff(diff2); +*/ + + + GPU_ON; + d_alg(d0, d1, d_flowx, d_flowy); + d_alg.collectGarbage(); + GPU_OFF; + + + cv::Mat flowx, flowy; + + GPU_FULL_ON; + d0.upload(frame0); + d1.upload(frame1); + d_alg(d0, d1, d_flowx, d_flowy); + d_alg.collectGarbage(); + d_flowx.download(flowx); + d_flowy.download(flowy); + GPU_FULL_OFF; + + TestSystem::instance().ExceptedMatSimilar(gold[0], flowx, 3e-3); + TestSystem::instance().ExceptedMatSimilar(gold[1], flowy, 3e-3); +} \ No newline at end of file diff --git a/modules/ocl/perf/perf_pyrdown.cpp b/modules/ocl/perf/perf_pyramid.cpp similarity index 76% rename from modules/ocl/perf/perf_pyrdown.cpp rename to modules/ocl/perf/perf_pyramid.cpp index b6eca45..3b96251 100644 --- a/modules/ocl/perf/perf_pyrdown.cpp +++ b/modules/ocl/perf/perf_pyramid.cpp @@ -86,4 +86,47 @@ PERFTEST(pyrDown) TestSystem::instance().ExpectedMatNear(dst, ocl_dst, dst.depth() == CV_32F ? 1e-4f : 1.0f); } } +} + +///////////// pyrUp //////////////////////// +PERFTEST(pyrUp) +{ + Mat src, dst, ocl_dst; + int all_type[] = {CV_8UC1, CV_8UC4}; + std::string type_name[] = {"CV_8UC1", "CV_8UC4"}; + + for (int size = 500; size <= 2000; size *= 2) + { + for (size_t j = 0; j < sizeof(all_type) / sizeof(int); j++) + { + SUBTEST << size << 'x' << size << "; " << type_name[j] ; + + gen(src, size, size, all_type[j], 0, 256); + + pyrUp(src, dst); + + CPU_ON; + pyrUp(src, dst); + CPU_OFF; + + ocl::oclMat d_src(src); + ocl::oclMat d_dst; + + WARMUP_ON; + ocl::pyrUp(d_src, d_dst); + WARMUP_OFF; + + GPU_ON; + ocl::pyrUp(d_src, d_dst); + GPU_OFF; + + GPU_FULL_ON; + d_src.upload(src); + ocl::pyrUp(d_src, d_dst); + d_dst.download(ocl_dst); + GPU_FULL_OFF; + + TestSystem::instance().ExpectedMatNear(dst, ocl_dst, (src.depth() == CV_32F ? 1e-4f : 1.0)); + } + } } \ No newline at end of file diff --git a/modules/ocl/perf/perf_pyrup.cpp b/modules/ocl/perf/perf_pyrup.cpp deleted file mode 100644 index bfefe5e..0000000 --- a/modules/ocl/perf/perf_pyrup.cpp +++ /dev/null @@ -1,89 +0,0 @@ -/*M/////////////////////////////////////////////////////////////////////////////////////// -// -// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. -// -// By downloading, copying, installing or using the software you agree to this license. -// If you do not agree to this license, do not download, install, -// copy or use the software. -// -// -// License Agreement -// For Open Source Computer Vision Library -// -// Copyright (C) 2010-2012, Multicoreware, Inc., all rights reserved. -// Copyright (C) 2010-2012, Advanced Micro Devices, Inc., all rights reserved. -// Third party copyrights are property of their respective owners. -// -// @Authors -// Fangfang Bai, fangfang@multicorewareinc.com -// Jin Ma, jin@multicorewareinc.com -// -// Redistribution and use in source and binary forms, with or without modification, -// are permitted provided that the following conditions are met: -// -// * Redistribution's of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// * Redistribution's in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation -// and/or other oclMaterials provided with the distribution. -// -// * The name of the copyright holders may not be used to endorse or promote products -// derived from this software without specific prior written permission. -// -// This software is provided by the copyright holders and contributors as is and -// any express or implied warranties, including, but not limited to, the implied -// warranties of merchantability and fitness for a particular purpose are disclaimed. -// In no event shall the Intel Corporation or contributors be liable for any direct, -// indirect, incidental, special, exemplary, or consequential damages -// (including, but not limited to, procurement of substitute goods or services; -// loss of use, data, or profits; or business interruption) however caused -// and on any theory of liability, whether in contract, strict liability, -// or tort (including negligence or otherwise) arising in any way out of -// the use of this software, even if advised of the possibility of such damage. -// -//M*/ -#include "precomp.hpp" - -///////////// pyrUp //////////////////////// -PERFTEST(pyrUp) -{ - Mat src, dst, ocl_dst; - int all_type[] = {CV_8UC1, CV_8UC4}; - std::string type_name[] = {"CV_8UC1", "CV_8UC4"}; - - for (int size = 500; size <= 2000; size *= 2) - { - for (size_t j = 0; j < sizeof(all_type) / sizeof(int); j++) - { - SUBTEST << size << 'x' << size << "; " << type_name[j] ; - - gen(src, size, size, all_type[j], 0, 256); - - pyrUp(src, dst); - - CPU_ON; - pyrUp(src, dst); - CPU_OFF; - - ocl::oclMat d_src(src); - ocl::oclMat d_dst; - - WARMUP_ON; - ocl::pyrUp(d_src, d_dst); - WARMUP_OFF; - - GPU_ON; - ocl::pyrUp(d_src, d_dst); - GPU_OFF; - - GPU_FULL_ON; - d_src.upload(src); - ocl::pyrUp(d_src, d_dst); - d_dst.download(ocl_dst); - GPU_FULL_OFF; - - TestSystem::instance().ExpectedMatNear(dst, ocl_dst, (src.depth() == CV_32F ? 1e-4f : 1.0)); - } - } -} \ No newline at end of file diff --git a/modules/ocl/perf/precomp.cpp b/modules/ocl/perf/precomp.cpp index 616ef4d..71a13a1 100644 --- a/modules/ocl/perf/precomp.cpp +++ b/modules/ocl/perf/precomp.cpp @@ -471,134 +471,6 @@ void gen(Mat &mat, int rows, int cols, int type, Scalar low, Scalar high) RNG rng(0); rng.fill(mat, RNG::UNIFORM, low, high); } -#if 0 -void gen(Mat &mat, int rows, int cols, int type, int low, int high, int n) -{ - assert(n > 0&&n <= cols * rows); - assert(type == CV_8UC1||type == CV_8UC3||type == CV_8UC4 - ||type == CV_32FC1||type == CV_32FC3||type == CV_32FC4); - - RNG rng; - //generate random position without duplication - std::vector pos; - for(int i = 0; i < cols * rows; i++) - { - pos.push_back(i); - } - - for(int i = 0; i < cols * rows; i++) - { - int temp = i + rng.uniform(0, cols * rows - 1 - i); - int temp1 = pos[temp]; - pos[temp]= pos[i]; - pos[i] = temp1; - } - - std::vector selected_pos; - for(int i = 0; i < n; i++) - { - selected_pos.push_back(pos[i]); - } - - pos.clear(); - //end of generating random y without duplication - - if(type == CV_8UC1) - { - typedef struct coorStruct_ - { - int x; - int y; - uchar xy; - }coorStruct; - - coorStruct coor_struct; - - std::vector coor; - - for(int i = 0; i < n; i++) - { - coor_struct.x = -1; - coor_struct.y = -1; - coor_struct.xy = (uchar)rng.uniform(low, high); - coor.push_back(coor_struct); - } - - for(int i = 0; i < n; i++) - { - coor[i].y = selected_pos[i]/cols; - coor[i].x = selected_pos[i]%cols; - } - selected_pos.clear(); - - mat.create(rows, cols, type); - mat.setTo(0); - - for(int i = 0; i < n; i++) - { - mat.at(coor[i].y, coor[i].x) = coor[i].xy; - } - } - - if(type == CV_8UC4 || type == CV_8UC3) - { - mat.create(rows, cols, type); - mat.setTo(0); - - typedef struct Coor - { - int x; - int y; - - uchar r; - uchar g; - uchar b; - uchar alpha; - }coor; - - std::vector coor_vect; - - coor xy_coor; - - for(int i = 0; i < n; i++) - { - xy_coor.r = (uchar)rng.uniform(low, high); - xy_coor.g = (uchar)rng.uniform(low, high); - xy_coor.b = (uchar)rng.uniform(low, high); - if(type == CV_8UC4) - xy_coor.alpha = (uchar)rng.uniform(low, high); - - coor_vect.push_back(xy_coor); - } - - for(int i = 0; i < n; i++) - { - coor_vect[i].y = selected_pos[i]/((int)mat.step1()/mat.elemSize()); - coor_vect[i].x = selected_pos[i]%((int)mat.step1()/mat.elemSize()); - //printf("coor_vect[%d] = (%d, %d)\n", i, coor_vect[i].y, coor_vect[i].x); - } - - if(type == CV_8UC4) - { - for(int i = 0; i < n; i++) - { - mat.at(coor_vect[i].y, 4 * coor_vect[i].x) = coor_vect[i].r; - mat.at(coor_vect[i].y, 4 * coor_vect[i].x + 1) = coor_vect[i].g; - mat.at(coor_vect[i].y, 4 * coor_vect[i].x + 2) = coor_vect[i].b; - mat.at(coor_vect[i].y, 4 * coor_vect[i].x + 3) = coor_vect[i].alpha; - } - }else if(type == CV_8UC3) - { - for(int i = 0; i < n; i++) - { - mat.at(coor_vect[i].y, 3 * coor_vect[i].x) = coor_vect[i].r; - mat.at(coor_vect[i].y, 3 * coor_vect[i].x + 1) = coor_vect[i].g; - mat.at(coor_vect[i].y, 3 * coor_vect[i].x + 2) = coor_vect[i].b; - } - } - } -} -#endif string abspath(const string &relpath) { @@ -631,34 +503,6 @@ double checkSimilarity(const Mat &m1, const Mat &m2) return std::abs(diff.at(0, 0) - 1.f); } -/* -int ExpectedMatNear(cv::Mat dst, cv::Mat cpu_dst, double eps) -{ - assert(dst.type() == cpu_dst.type()); - assert(dst.size() == cpu_dst.size()); - if(checkNorm(cv::Mat(dst), cv::Mat(cpu_dst)) < eps ||checkNorm(cv::Mat(dst), cv::Mat(cpu_dst)) == eps) - return 1; - return 0; -} - -int ExceptDoubleNear(double val1, double val2, double abs_error) -{ - const double diff = fabs(val1 - val2); - if (diff <= abs_error) - return 1; - - return 0; -} -/* -int ExceptedMatSimilar(cv::Mat dst, cv::Mat cpu_dst, double eps) -{ - assert(dst.type() == cpu_dst.type()); - assert(dst.size() == cpu_dst.size()); - if(checkSimilarity(cv::Mat(cpu_dst), cv::Mat(dst)) <= eps) - return 1; - return 0; -} -*/