Fixed using local variable instead of global var.

- Still need to change SSE_2
This commit is contained in:
Your Name 2016-07-26 23:29:05 -03:00
parent 440ba2e4a7
commit c6f790ce12

View File

@ -338,7 +338,7 @@ static void findStereoCorrespondenceBM_SSE2( const Mat& left, const Mat& right,
int ftzero = state.preFilterCap; int ftzero = state.preFilterCap;
int textureThreshold = state.textureThreshold; int textureThreshold = state.textureThreshold;
int uniquenessRatio = state.uniquenessRatio; int uniquenessRatio = state.uniquenessRatio;
short FILTERED = (short)((mindisp - 1) << DISPARITY_SHIFT); short FILTERED = (short)((mindisp - 1) << DISPARITY_SHIFT_16S);
ushort *sad, *hsad0, *hsad, *hsad_sub; ushort *sad, *hsad0, *hsad, *hsad_sub;
int *htext; int *htext;
@ -1096,7 +1096,14 @@ public:
if( params.uniquenessRatio < 0 ) if( params.uniquenessRatio < 0 )
CV_Error( Error::StsOutOfRange, "uniqueness ratio must be non-negative" ); CV_Error( Error::StsOutOfRange, "uniqueness ratio must be non-negative" );
int FILTERED = (params.minDisparity - 1) << DISPARITY_SHIFT; int disp_shift;
if (dtype == CV_16SC1)
disp_shift = DISPARITY_SHIFT_16S;
else
disp_shift = DISPARITY_SHIFT_32S;
int FILTERED = (params.minDisparity - 1) << disp_shift;
#ifdef HAVE_OPENCL #ifdef HAVE_OPENCL
if(ocl::useOpenCL() && disparr.isUMat() && params.textureThreshold == 0) if(ocl::useOpenCL() && disparr.isUMat() && params.textureThreshold == 0)
@ -1109,7 +1116,7 @@ public:
if( params.speckleRange >= 0 && params.speckleWindowSize > 0 ) if( params.speckleRange >= 0 && params.speckleWindowSize > 0 )
filterSpeckles(disparr.getMat(), FILTERED, params.speckleWindowSize, params.speckleRange, slidingSumBuf); filterSpeckles(disparr.getMat(), FILTERED, params.speckleWindowSize, params.speckleRange, slidingSumBuf);
if (dtype == CV_32F) if (dtype == CV_32F)
disparr.getUMat().convertTo(disparr, CV_32FC1, 1./(1 << DISPARITY_SHIFT), 0); disparr.getUMat().convertTo(disparr, CV_32FC1, 1./(1 << disp_shift), 0);
CV_IMPL_ADD(CV_IMPL_OCL); CV_IMPL_ADD(CV_IMPL_OCL);
return; return;
} }
@ -1138,7 +1145,7 @@ public:
if( lofs >= width || rofs >= width || width1 < 1 ) if( lofs >= width || rofs >= width || width1 < 1 )
{ {
disp0 = Scalar::all( FILTERED * ( disp0.type() < CV_32F ? 1 : 1./(1 << DISPARITY_SHIFT) ) ); disp0 = Scalar::all( FILTERED * ( disp0.type() < CV_32F ? 1 : 1./(1 << disp_shift) ) );
return; return;
} }
@ -1194,7 +1201,7 @@ public:
filterSpeckles(disp, FILTERED, params.speckleWindowSize, params.speckleRange, slidingSumBuf); filterSpeckles(disp, FILTERED, params.speckleWindowSize, params.speckleRange, slidingSumBuf);
if (disp0.data != disp.data) if (disp0.data != disp.data)
disp.convertTo(disp0, disp0.type(), 1./(1 << DISPARITY_SHIFT), 0); disp.convertTo(disp0, disp0.type(), 1./(1 << disp_shift), 0);
} }
int getMinDisparity() const { return params.minDisparity; } int getMinDisparity() const { return params.minDisparity; }