fix rounding bug in Level creation
authormarina.kolpakova <marina.kolpakova@itseez.com>
Mon, 15 Oct 2012 11:27:33 +0000 (15:27 +0400)
committermarina.kolpakova <marina.kolpakova@itseez.com>
Sat, 10 Nov 2012 01:11:11 +0000 (05:11 +0400)
modules/gpu/src/icf.hpp
modules/gpu/src/imgproc.cpp
modules/gpu/src/softcascade.cpp

index 06c8114..d829012 100644 (file)
@@ -81,16 +81,7 @@ struct __align__(8) Level //is actually 24 bytes
     uchar2 workRect;
     uchar2 objSize;
 
-    Level(int idx, const Octave& oct, const float scale, const int w, const int h)
-    :  octave(idx), relScale(scale / oct.scale), shrScale (relScale / (float)oct.shrinkage)
-    {
-        workRect.x = round(w / (float)oct.shrinkage);
-        workRect.y = round(h / (float)oct.shrinkage);
-
-        objSize.x  = round(oct.size.x * relScale);
-        objSize.y  = round(oct.size.y * relScale);
-    }
-
+    Level(int idx, const Octave& oct, const float scale, const int w, const int h);
     __device Level(){}
 };
 
index 0bf9c81..df02213 100644 (file)
@@ -553,7 +553,7 @@ void cv::gpu::integralBuffered(const GpuMat& src, GpuMat& sum, GpuMat& buffer, S
 
     src.locateROI(whole, offset);
 
-    if (info.supports(WARP_SHUFFLE_FUNCTIONS) && src.cols <= 2048)
+    if (false && info.supports(WARP_SHUFFLE_FUNCTIONS) && src.cols <= 2048)
     {
         GpuMat srcAlligned;
 
index fc7114b..e5d8cb9 100644 (file)
@@ -65,6 +65,16 @@ cv::Size cv::gpu::SoftCascade::getRoiSize() const { throw_nogpu(); return cv::Si
 
 #include <icf.hpp>
 
+cv::gpu::device::icf::Level::Level(int idx, const Octave& oct, const float scale, const int w, const int h)
+:  octave(idx), relScale(scale / oct.scale), shrScale (relScale / (float)oct.shrinkage)
+{
+    workRect.x = round(w / (float)oct.shrinkage);
+    workRect.y = round(h / (float)oct.shrinkage);
+
+    objSize.x  = cv::saturate_cast<uchar>(oct.size.x * relScale);
+    objSize.y  = cv::saturate_cast<uchar>(oct.size.y * relScale);
+}
+
 namespace cv { namespace gpu { namespace device {
 namespace icf {
     void fillBins(cv::gpu::PtrStepSzb hogluv, const cv::gpu::PtrStepSzf& nangle,
@@ -72,7 +82,7 @@ namespace icf {
 }
 namespace imgproc
 {
-    void meanShiftFiltering_gpu(const PtrStepSzb& src, PtrStepSzb dst, int sp, int sr, int maxIter, float eps, cudaStream_t stream);
+    void shfl_integral_gpu(PtrStepSzb img, PtrStepSz<unsigned int> integral, cudaStream_t stream);
 }
 }}}