|
|
@ -398,8 +398,8 @@ cv::Mat cv::findHomography( InputArray _points1, InputArray _points2, |
|
|
|
{ |
|
|
|
{ |
|
|
|
tempMask = Mat::ones(npoints, 1, CV_8U); |
|
|
|
tempMask = Mat::ones(npoints, 1, CV_8U); |
|
|
|
result = cb->runKernel(src, dst, H) > 0; |
|
|
|
result = cb->runKernel(src, dst, H) > 0; |
|
|
|
}
|
|
|
|
} |
|
|
|
else if( method == RANSAC) |
|
|
|
else if( method == RANSAC ) |
|
|
|
result = createRANSACPointSetRegistrator(cb, 4, ransacReprojThreshold, confidence, maxIters)->run(src, dst, H, tempMask); |
|
|
|
result = createRANSACPointSetRegistrator(cb, 4, ransacReprojThreshold, confidence, maxIters)->run(src, dst, H, tempMask); |
|
|
|
else if( method == LMEDS ) |
|
|
|
else if( method == LMEDS ) |
|
|
|
result = createLMeDSPointSetRegistrator(cb, 4, confidence, maxIters)->run(src, dst, H, tempMask); |
|
|
|
result = createLMeDSPointSetRegistrator(cb, 4, confidence, maxIters)->run(src, dst, H, tempMask); |
|
|
@ -408,7 +408,6 @@ cv::Mat cv::findHomography( InputArray _points1, InputArray _points2, |
|
|
|
else |
|
|
|
else |
|
|
|
CV_Error(Error::StsBadArg, "Unknown estimation method"); |
|
|
|
CV_Error(Error::StsBadArg, "Unknown estimation method"); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if( result && npoints > 4 && method != RHO) |
|
|
|
if( result && npoints > 4 && method != RHO) |
|
|
|
{ |
|
|
|
{ |
|
|
|
compressPoints( src.ptr<Point2f>(), tempMask.ptr<uchar>(), 1, npoints ); |
|
|
|
compressPoints( src.ptr<Point2f>(), tempMask.ptr<uchar>(), 1, npoints ); |
|
|
@ -419,9 +418,8 @@ cv::Mat cv::findHomography( InputArray _points1, InputArray _points2, |
|
|
|
Mat dst1 = dst.rowRange(0, npoints); |
|
|
|
Mat dst1 = dst.rowRange(0, npoints); |
|
|
|
src = src1; |
|
|
|
src = src1; |
|
|
|
dst = dst1; |
|
|
|
dst = dst1; |
|
|
|
if( method == RANSAC || method == LMEDS) |
|
|
|
if( method == RANSAC || method == LMEDS ) |
|
|
|
cb->runKernel( src, dst, H ); |
|
|
|
cb->runKernel( src, dst, H ); |
|
|
|
|
|
|
|
|
|
|
|
Mat H8(8, 1, CV_64F, H.ptr<double>()); |
|
|
|
Mat H8(8, 1, CV_64F, H.ptr<double>()); |
|
|
|
createLMSolver(makePtr<HomographyRefineCallback>(src, dst), 10)->run(H8); |
|
|
|
createLMSolver(makePtr<HomographyRefineCallback>(src, dst), 10)->run(H8); |
|
|
|
} |
|
|
|
} |
|
|
|