细看都是坑(OpenCV中的matchTemplate方法)

最近利用OpenCV做2幅图像的比较,用的TM_CCORR_NORMED方法,发现对于图像中,有明确目标的情况下,匹配的结果较好,90+%;对于图像中没有明确目标,如基本黑色的情况下,返回值只有40-50%,或更低。可明明2幅黑色的图像也是类似的嘛,好不?只好再翻一下Learning OpenCV 3关于matchTemplate的说明:
####1. cv::TM_SQDIFF
计算模板与目标图像的方差,由于是像素值差值的平方的和,所以值越小匹配程度越高;
####2. cv::TM_SQDIFF_NORMED
范化的cv::TM_SQDIFF,取值为0-1之间,完美匹配返回值为0;
####3. cv::TM_CCORR
使用dot product计算匹配度(不清楚怎么计算dot product,没看过代码),越高匹配度就好;
####4. cv::TM_CCORR_NORMED
范化的cv::TM_CCORR,0-1之间,我用的这个;
####5. cv::TM_CCOEFF
采用模板与目标图像像素与各自图像的平均值计算dot product,正值越大匹配度越高,负值越大图像的区别越大,但如果图像没有明显的特征(即图像中的像素值与平均值接近)则返回值越接近0;
####6. cv::TM_CCOEFF_NORMED
范化的cv::TM_CCOEFF,-1 ~ 1之间。

从上面的几个方法中,6比较符合目前需求:没有明显的特征,但2幅图像还是非常接近的,so,改为方法cv::TM_CCOEFF_NORMED。

猜你喜欢

转载自blog.csdn.net/coroutines/article/details/78229105
今日推荐