Small change in the SURF algorithm to be sure that without TBB the template parallel_for is not used
(the reason: the parallelization in the SURF algorithm conflicts with ThreadingFramework, which is a temporary substitute of TBB for ARMs)
This commit is contained in:
parent
00a72d48af
commit
555e9c64bc
@ -490,6 +490,7 @@ static CvSeq* icvFastHessianDetector( const CvMat* sum, const CvMat* mask_sum,
|
||||
step*=2;
|
||||
}
|
||||
|
||||
#ifdef HAVE_TBB
|
||||
/* Calculate hessian determinant and trace samples in each layer*/
|
||||
cv::parallel_for( cv::BlockedRange(0, nTotalLayers),
|
||||
cv::SURFBuildInvoker(sum,sizes,sampleSteps,dets,traces) );
|
||||
@ -498,6 +499,13 @@ static CvSeq* icvFastHessianDetector( const CvMat* sum, const CvMat* mask_sum,
|
||||
cv::parallel_for( cv::BlockedRange(0, nMiddleLayers),
|
||||
cv::SURFFindInvoker(sum,mask_sum,params,dets,traces,sizes,
|
||||
sampleSteps,middleIndices,points) );
|
||||
#else
|
||||
cv::SURFBuildInvoker(sum,sizes,sampleSteps,dets,traces)
|
||||
(cv::BlockedRange(0, nTotalLayers));
|
||||
|
||||
cv::SURFFindInvoker(sum,mask_sum,params,dets,traces,sizes, sampleSteps,middleIndices,points)
|
||||
( cv::BlockedRange(0, nMiddleLayers) );
|
||||
#endif
|
||||
|
||||
/* Clean-up */
|
||||
for( layer = 0; layer < nTotalLayers; layer++ )
|
||||
@ -873,8 +881,15 @@ cvExtractSURF( const CvArr* _img, const CvArr* _mask,
|
||||
|
||||
|
||||
if ( N > 0 )
|
||||
{
|
||||
#ifdef HAVE_TBB
|
||||
cv::parallel_for(cv::BlockedRange(0, N),
|
||||
cv::SURFInvoker(¶ms, keypoints, descriptors, img, sum) );
|
||||
#else
|
||||
cv::SURFInvoker invoker(¶ms, keypoints, descriptors, img, sum);
|
||||
invoker(cv::BlockedRange(0, N));
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
/* remove keypoints that were marked for deletion */
|
||||
|
Loading…
x
Reference in New Issue
Block a user