Skip to content

Commit

Permalink
OCL: Fix for Haar classifier (thanks to Konstantin Rodyushkin).
Browse files Browse the repository at this point in the history
  • Loading branch information
akarsakov committed Feb 26, 2014
1 parent 7dc22b4 commit e6f6707
Show file tree
Hide file tree
Showing 3 changed files with 6 additions and 6 deletions.
4 changes: 2 additions & 2 deletions modules/ocl/src/haar.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -888,12 +888,12 @@ CvSeq *cv::ocl::OclCascadeClassifier::oclHaarDetectObjects( oclMat &gimg, CvMemS
for(int y=0;y<WGNumY;++y)
{
int gy = y*localThreads[1];
if(gy>=(Height-cascade->orig_window_size.height))
if(gy>=Height)
continue; // no data to process
for(int x=0;x<WGNumX;++x)
{
int gx = x*localThreads[0];
if(gx>=(Width-cascade->orig_window_size.width))
if(gx>=Width)
continue; // no data to process

if(scaleinfo[z].factor<=2)
Expand Down
4 changes: 2 additions & 2 deletions modules/ocl/src/opencl/haarobjectdetect.cl
Original file line number Diff line number Diff line change
Expand Up @@ -150,8 +150,8 @@ __kernel void gpuRunHaarClassifierCascadePacked(
int index = i+lid; // index in shared local memory
if(index<DATA_SIZE)
{// calc global x,y coordinat and read data from there
int x = min(GroupX + (index % (DATA_SIZE_X)),Width-1);
int y = min(GroupY + (index / (DATA_SIZE_X)),Height-1);
int x = min(GroupX + (index % (DATA_SIZE_X)),Width-1+WND_SIZE_X);
int y = min(GroupY + (index / (DATA_SIZE_X)),Height-1+WND_SIZE_Y);
SumL[index] = sum[ImgOffset+y*pixelstep+x];
}
}
Expand Down
4 changes: 2 additions & 2 deletions modules/ocl/test/test_objdetect.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -226,7 +226,7 @@ OCL_TEST_P(Haar, FaceDetect)
flags,
Size(30, 30), Size(0, 0));

EXPECT_LT(checkRectSimilarity(img.size(), faces, oclfaces), 1.0);
EXPECT_LT(checkRectSimilarity(img.size(), faces, oclfaces), 0.1);
}

OCL_TEST_P(Haar, FaceDetectUseBuf)
Expand All @@ -247,7 +247,7 @@ OCL_TEST_P(Haar, FaceDetectUseBuf)
Size(30, 30));
cascadebuf.release();

EXPECT_LT(checkRectSimilarity(img.size(), faces, oclfaces), 1.0);
EXPECT_LT(checkRectSimilarity(img.size(), faces, oclfaces), 0.1);
}

INSTANTIATE_TEST_CASE_P(OCL_ObjDetect, Haar,
Expand Down

0 comments on commit e6f6707

Please sign in to comment.