opencv中的TM_CCORR和TM_CCOEFF是什么意思?
opencv中的TM_CCORR和TM_CCOEFF是什么意思?我发现TM_CCORR代表相关系数。然而,由于其命名,TM_CCOEFF煤层也可能是相关系数 你知道abbrevations代表什么吗? TM_SQDIFF=T安置MATCHSquareDiff TM\U CCEFF=T侵位MATCHC相关系数icient TM\U CCORR=TemplateMatchingCorrelation???正如HansHire提到的那样,在窗口幻灯片中显示了用于像素求和的公式。此外,示例还包括:opencv中的TM_CCORR和TM_CCOEFF是什么意思?,opencv,computer-vision,opencv3.0,Opencv,Computer Vision,Opencv3.0,opencv中的TM_CCORR和TM_CCOEFF是什么意思?我发现TM_CCORR代表相关系数。然而,由于其命名,TM_CCOEFF煤层也可能是相关系数 你知道abbrevations代表什么吗? TM_SQDIFF=T安置MATCHSquareDiff TM\U CCEFF=T侵位MATCHC相关系数icient TM\U CCORR=TemplateMatchingCorrelation???正如HansHire提到的那样,在窗口幻灯片中显示了用于像素求和的公式。此外,示例还包括: TM
TM_CCOEFF
请注意,文档中说:
您可以看到,使用cv2.TM_CCORR的结果并不像我们预期的那样好
如果您想使用始终保持不变的屏幕截图或图像部分(a-la)(而不是照明/变换可以改变的真实世界的相机帧),请使用匹配模板
,否则请尽量避免使用。它只适用于特定的用例,不同的求和函数在实际结果方面没有太大的差异
为了回答您对缩写TM_CCORR
和TM_cceeff
代表什么的评论:
我真的不知道,但这不会阻止我猜测:))
根据文档公式,我的直觉是,TM\u CCORR
是模板和图像之间的直接(“最简单”)关联:
结果像素是模板中每个像素的模板像素和图像像素之间的点积之和
当模板在图像中“滑动”时,计算结果图像
TM_CCOEFF
但使用更复杂的“系数”(T'
)代替当前模板像素(T
)(T(x′,y′)−1/(w)⋅h)⋅∑x〃,y〃T(x〃,y〃)
)(类似地(I'
使用)
我对数学符号的理解非常有限,但从公式中可以看出,CORR
版本与COEFF
版本相比,考虑了模板和图像的尺寸以及像素强度的总和
另一种受支持的方法是TM_SQDIFF
,正如简写名称所示,该方法使用模板和图像像素强度之间的平方距离
对于这三种主要方法中的每一种,都有规范化的版本
好的,这就是我对缩写的理解(例如,直接(点积)关联与更复杂(非双关语)关联)
但这意味着什么
实际上,我主要要注意的是,TM_CCORR
和TM_cceeff
最有可能匹配最亮的像素,而TM_SQDIFF
则相反:最暗的值很可能匹配(参见链接的示例图像)
我会从TM_CCOEFF
开始,然后如果当前图像的结果没有返回一致的结果,请修改参数,但如前所述,我只会将其用于非常非常受控的条件
对于不属于同一图像(A- La)的瓦尔多()的截屏或模板的实时数据,我将查看对象检测(例如,用HOG作为特征描述符来训练SVM)< /P> < P>参见“OpenCV 3:用OpenCV库在C++中实现计算机视觉” 作者:阿德里安·凯勒,加里·布拉德斯基
书中说:TM\u CCORR
=互相关
TM_CCOEFF
=相关系数
FWIW:The−1/(w)⋅h)⋅∑在TM_CCOEFF
方法中,x〃,y〃T(x〃,y〃)
仅用于a)使模板和图像零均值,b)使图像的暗部分为负值,而使图像的亮部分为正值
这意味着当模板和图像的明亮部分重叠时,点积中会得到正值,当黑暗部分与黑暗部分重叠时(-ve值x-ve值给出+ve值)。
这意味着您在亮部匹配和暗部匹配方面都获得+ve分数
当模板上有暗(-ve)和图像上有亮(+ve)时,将得到-ve值。当模板上有亮的(+ve)和图像上有暗的(-ve)时,也会得到-ve值。
这意味着你会在不匹配的情况下得到一个负分
另一方面,如果您没有
−1/(w)⋅h)⋅∑x〃,y〃T(x〃,y〃)
术语,即在TM_CCORR
方法中,当模板和图像之间存在不匹配时,您不会得到任何惩罚。实际上,这种方法是测量图像中与模板形状相同的最亮像素集的位置。(这就是为什么徽标、足球和梅西腿部上方区域在匹配结果中具有高强度的原因)。以下公式给出了T(x,y)的居中版本:
T′(x′,y′)=T(x′,y′)−1/(w)⋅h)⋅∑x′,y′T(x′,y′)
与I′稍有不同,因为它将I集中在内核(w,h)中
I′(x+x′,y+y′)=I(x+x′,y+y′)−1/(w)⋅h)⋅∑x′,y′I(x+x′,y+y′)
我认为理想情况下,TM_CCORR_NORMED和TM_cceff_NORMED应该给出类似的结果。
这种差异可能是由于计算机四舍五入造成的,因为TM_CCOEFF_NORMED通常在数字接近零的情况下运行
更新
T'=T-m,其中m是T的平均值
I'=I-I*M,其中M是大小为(w,h)的平均滤波器矩阵
其中U-为单位滤波器,锐度=U-M为锐度滤波器
所以,TM_CCOEFF是TM_CCORR的锐度
TM_CCORR
TM_CCOEFF = T' * I' = (T - m) * (I - I * M) =
= ((T - m) * I) * (U - M)
= TM_CCORR * SHARPNESS - m * (I * SHARPNESS)