]> rtime.felk.cvut.cz Git - opencv.git/commitdiff
fixed a few warnings + false fail in reprojectImageTo3D
authorvp153 <vp153@73c94f0f-984f-4a5f-82bc-2d8db8d8ee08>
Fri, 12 Mar 2010 16:45:13 +0000 (16:45 +0000)
committervp153 <vp153@73c94f0f-984f-4a5f-82bc-2d8db8d8ee08>
Fri, 12 Mar 2010 16:45:13 +0000 (16:45 +0000)
git-svn-id: https://code.ros.org/svn/opencv/trunk@2804 73c94f0f-984f-4a5f-82bc-2d8db8d8ee08

opencv/tests/cv/src/areprojectImageTo3D.cpp
opencv/tests/cv/src/aundistort.cpp

index 8062906a20497b791553ecfc95a997b02e5a9a7d..41be1241744b8d2ad85cb21218380d0d12e0742f 100644 (file)
@@ -66,33 +66,34 @@ protected:
     {        \r
         ts->set_failed_test_info(CvTS::OK);\r
         int progress = 0;\r
+        int caseId = 0;\r
 \r
         progress = update_progress( progress, 1, 14, 0 );\r
-        runCase<float, float>(-100.f, 100.f);\r
+        runCase<float, float>(++caseId, -100.f, 100.f);\r
         progress = update_progress( progress, 2, 14, 0 );\r
-        runCase<int, float>(-100, 100);\r
+        runCase<int, float>(++caseId, -100, 100);\r
         progress = update_progress( progress, 3, 14, 0 );\r
-        runCase<short, float>(-100, 100);\r
+        runCase<short, float>(++caseId, -100, 100);\r
         progress = update_progress( progress, 4, 14, 0 );\r
-        runCase<unsigned char, float>(10, 100);\r
+        runCase<unsigned char, float>(++caseId, 10, 100);\r
         progress = update_progress( progress, 5, 14, 0 );\r
 \r
-        runCase<float, int>(-100.f, 100.f);\r
+        runCase<float, int>(++caseId, -100.f, 100.f);\r
         progress = update_progress( progress, 6, 14, 0 );\r
-        runCase<int, int>(-100, 100);\r
+        runCase<int, int>(++caseId, -100, 100);\r
         progress = update_progress( progress, 7, 14, 0 );\r
-        runCase<short, int>(-100, 100);\r
+        runCase<short, int>(++caseId, -100, 100);\r
         progress = update_progress( progress, 8, 14, 0 );\r
-        runCase<unsigned char, int>(10, 100);\r
+        runCase<unsigned char, int>(++caseId, 10, 100);\r
         progress = update_progress( progress, 10, 14, 0 );\r
 \r
-        runCase<float, short>(-100.f, 100.f);\r
+        runCase<float, short>(++caseId, -100.f, 100.f);\r
         progress = update_progress( progress, 11, 14, 0 );\r
-        runCase<int, short>(-100, 100);\r
+        runCase<int, short>(++caseId, -100, 100);\r
         progress = update_progress( progress, 12, 14, 0 );\r
-        runCase<short, short>(-100, 100);\r
+        runCase<short, short>(++caseId, -100, 100);\r
         progress = update_progress( progress, 13, 14, 0 );\r
-        runCase<unsigned char, short>(10, 100);        \r
+        runCase<unsigned char, short>(++caseId, 10, 100);        \r
         progress = update_progress( progress, 14, 14, 0 );\r
     }\r
 \r
@@ -109,10 +110,10 @@ protected:
             sum += tmp * tmp;\r
             \r
         }        \r
-        return sqrt(sum)/sqrt(nsum);\r
+        return sqrt(sum)/(sqrt(nsum)+1.);\r
     }\r
 \r
-    template<class InT, class OutT> void runCase(InT min, InT max)\r
+    template<class InT, class OutT> void runCase(int caseId, InT min, InT max)\r
     {                     \r
         typedef Vec<OutT, 3> out3d_t;\r
 \r
@@ -141,8 +142,8 @@ protected:
                 InT d = disp(y, x);                \r
 \r
                 double from[4] = { x, y, d, 1 };\r
-                Mat res = Q * Mat_<double>(4, 1, from);\r
-                res /= res.at<double>(3, 0);\r
+                Mat_<double> res = Q * Mat_<double>(4, 1, from);\r
+                res /= res(3, 0);\r
 \r
                 out3d_t pixel_exp = *res.ptr<Vec3d>();\r
                 out3d_t pixel_out = _3dImg(y, x);\r
@@ -154,15 +155,22 @@ protected:
                     if (pixel_out[2] == largeZValue)\r
                         continue;\r
 \r
+                    ts->printf(CvTS::LOG, "Missing values are handled improperly\n");\r
                     ts->set_failed_test_info( CvTS::FAIL_BAD_ACCURACY );                       \r
                     return;\r
                 }\r
-                else                                \r
-                    if (error(pixel_exp, pixel_out) > thres<OutT>())\r
+                else\r
+                {\r
+                    double err = error(pixel_out, pixel_exp), t = thres<OutT>();\r
+                    if ( err > t )\r
                     {\r
-                        ts->set_failed_test_info( CvTS::FAIL_BAD_ACCURACY );                       \r
+                        ts->printf(CvTS::LOG, "case %d. too big error at (%d, %d): %g vs expected %g: res = (%g, %g, %g, w=%g) vs pixel_out = (%g, %g, %g)\n",\r
+                            caseId, x, y, err, t, res(0,0), res(1,0), res(2,0), res(3,0),\r
+                            (double)pixel_out[0], (double)pixel_out[1], (double)pixel_out[2]);\r
+                        ts->set_failed_test_info( CvTS::FAIL_BAD_ACCURACY );\r
                         return;\r
                     }\r
+                }\r
             }    \r
     }\r
 };   \r
index 45228e94ae6f5f01bce959f147de7fe50c758fda..f52f0c41960dc2a1205be2b39e357fb8693d0033 100644 (file)
@@ -904,4 +904,4 @@ double CV_InitUndistortRectifyMapTest::get_success_error_level( int /*test_case_
        return 8;
 }
 
-CV_InitUndistortRectifyMapTest init_undistort_rectify_map_test;
\ No newline at end of file
+CV_InitUndistortRectifyMapTest init_undistort_rectify_map_test;