TAPI: fix OpenCL warpers and test
authorAlexander Alekhin <alexander.alekhin@itseez.com>
Wed, 19 Feb 2014 10:00:39 +0000 (14:00 +0400)
committerAlexander Alekhin <alexander.alekhin@itseez.com>
Wed, 19 Feb 2014 11:30:43 +0000 (15:30 +0400)
modules/stitching/src/warpers_ocl.cpp
modules/stitching/test/ocl/test_warpers.cpp

index ce4b894..4c7eb27 100644 (file)
@@ -64,12 +64,12 @@ Rect PlaneWarperOcl::buildMaps(Size src_size, InputArray K, InputArray R, InputA
             xmap.create(dsize, CV_32FC1);
             ymap.create(dsize, CV_32FC1);
 
-            Mat r_kinv(1, 9, CV_32FC1, projector_.r_kinv), t(1, 3, CV_32FC1, projector_.t);
+            Mat k_rinv(1, 9, CV_32FC1, projector_.k_rinv), t(1, 3, CV_32FC1, projector_.t);
             UMat uxmap = xmap.getUMat(), uymap = ymap.getUMat(),
-                    ur_kinv = r_kinv.getUMat(ACCESS_READ), ut = t.getUMat(ACCESS_READ);
+                    uk_rinv = k_rinv.getUMat(ACCESS_READ), ut = t.getUMat(ACCESS_READ);
 
             k.args(ocl::KernelArg::WriteOnlyNoSize(uxmap), ocl::KernelArg::WriteOnly(uymap),
-                   ocl::KernelArg::PtrReadOnly(ur_kinv), ocl::KernelArg::PtrReadOnly(ut),
+                   ocl::KernelArg::PtrReadOnly(uk_rinv), ocl::KernelArg::PtrReadOnly(ut),
                    dst_tl.x, dst_tl.y, projector_.scale);
 
             size_t globalsize[2] = { dsize.width, dsize.height };
@@ -111,11 +111,11 @@ Rect SphericalWarperOcl::buildMaps(Size src_size, InputArray K, InputArray R, Ou
             xmap.create(dsize, CV_32FC1);
             ymap.create(dsize, CV_32FC1);
 
-            Mat r_kinv(1, 9, CV_32FC1, projector_.r_kinv);
-            UMat uxmap = xmap.getUMat(), uymap = ymap.getUMat(), ur_kinv = r_kinv.getUMat(ACCESS_READ);
+            Mat k_rinv(1, 9, CV_32FC1, projector_.k_rinv);
+            UMat uxmap = xmap.getUMat(), uymap = ymap.getUMat(), uk_rinv = k_rinv.getUMat(ACCESS_READ);
 
             k.args(ocl::KernelArg::WriteOnlyNoSize(uxmap), ocl::KernelArg::WriteOnly(uymap),
-                   ocl::KernelArg::PtrReadOnly(ur_kinv), dst_tl.x, dst_tl.y, projector_.scale);
+                   ocl::KernelArg::PtrReadOnly(uk_rinv), dst_tl.x, dst_tl.y, projector_.scale);
 
             size_t globalsize[2] = { dsize.width, dsize.height };
             if (k.run(2, globalsize, NULL, true))
@@ -156,11 +156,11 @@ Rect CylindricalWarperOcl::buildMaps(Size src_size, InputArray K, InputArray R,
             xmap.create(dsize, CV_32FC1);
             ymap.create(dsize, CV_32FC1);
 
-            Mat r_kinv(1, 9, CV_32FC1, projector_.r_kinv);
-            UMat uxmap = xmap.getUMat(), uymap = ymap.getUMat(), ur_kinv = r_kinv.getUMat(ACCESS_READ);
+            Mat k_rinv(1, 9, CV_32FC1, projector_.k_rinv);
+            UMat uxmap = xmap.getUMat(), uymap = ymap.getUMat(), uk_rinv = k_rinv.getUMat(ACCESS_READ);
 
             k.args(ocl::KernelArg::WriteOnlyNoSize(uxmap), ocl::KernelArg::WriteOnly(uymap),
-                   ocl::KernelArg::PtrReadOnly(ur_kinv), dst_tl.x, dst_tl.y, projector_.scale);
+                   ocl::KernelArg::PtrReadOnly(uk_rinv), dst_tl.x, dst_tl.y, projector_.scale);
 
             size_t globalsize[2] = { dsize.width, dsize.height };
             if (k.run(2, globalsize, NULL, true))
index d2f5dc0..94050e9 100644 (file)
@@ -64,7 +64,13 @@ struct WarperTestBase :
         src = randomMat(size, CV_32FC1, -500, 500);
 
         K = Mat::eye(3, 3, CV_32FC1);
-        R = Mat::eye(3, 3, CV_32FC1);
+        float angle = (float)(30.0 * CV_PI / 180.0);
+        float rotationMatrix[9] = {
+                (float)cos(angle), (float)sin(angle), 0,
+                (float)-sin(angle), (float)cos(angle), 0,
+                0, 0, 1
+        };
+        Mat(3, 3, CV_32FC1, rotationMatrix).copyTo(R);
     }
 
     void Near(double threshold = 0.)
@@ -140,7 +146,7 @@ OCL_TEST_F(PlaneWarperOclTest, Mat)
         OCL_OFF(warper->warp(src, K, R, INTER_LINEAR, BORDER_REPLICATE, dst));
         OCL_ON(warper->warp(src, K, R, INTER_LINEAR, BORDER_REPLICATE, udst));
 
-        Near(1e-5);
+        Near(1e-4);
     }
 }