opencv中的TM_CCORR和TM_CCOEFF是什么意思?

What does the TM_CCORR and TM_CCOEFF in opencv mean?

opencv中的TM_CCORR和TM_CCOEFF是什么意思?我发现 TM_CCORR 代表相关系数。但是,TM_CCOEFF seams 由于其命名也是相关系数。

你知道缩写代表什么吗?

TM_SQDIFF = T模板M匹配 Square Difference

TM_CCOEFF = T模板M匹配 Correlation Coefficient ?

TM_CCORR = T模板M匹配 Corr兴高采烈???

正如 HansHire 提到的,official documentation presents the formulas used for pixel summing as the windows slide. Additionally the Python OpenCV docs 显示示例:

TM_CCOEFF

TM_CCORR

请注意文档说:

You can see that the result using cv2.TM_CCORR is not good as we expected.

如果您想使用始终保持不变的屏幕截图或图像部分 (a-la Sikuli)(而不是 lighting/transformations 可以更改的真实相机帧),请使用 matchTemplate,否则尽量避免。它仅适用于特定用例,并且在实际结果方面,不同求和函数之间没有太大差异。

要解决您对缩写 TM_CCORRTM_CCOEFF 代表什么的评论?:

100% 我真的不知道,但这不会阻止我猜测:)))

根据文档公式,我的预感是 TM_CCORR 是模板和图像之间的直接 ("simplest") 相关性:

结果像素是模板像素与模板中每个像素的图像像素点积之和。

作为模板"slides"通过图像,计算出结果图像。

TM_CCOEFF 但不是当前模板像素 (T),而是使用更复杂的 "coefficient"(T') (T(x′,y′)−1/(w⋅h)⋅∑x″,y″T(x″,y″))(类似地(I' 使用)。

我对数学符号的理解非常有限,但据我从公式中可以看出,CORR 版本相对于 COEFF 考虑了模板和图像的尺寸以及像素强度的总和。

唯一受支持的方法是 TM_SQDIFF,正如 shorthand 名称所暗示的那样,公式确认使用模板和图像像素强度之间的平方距离。

这 3 种主要方法中的每一种都有标准版本。

好的,这就是我对缩写含义的理解(例如,直接(点积)相关与更复杂的(无双关语)相关)

但这就是这个意思吗?

实际上,我主要关注的是 TM_CCORRTM_CCOEFF 最有可能匹配最亮的像素,而 TM_SQDIFF 相反:最暗的值很可能匹配(参见示例图片链接)。

我会从 TM_CCOEFF 开始,然后如果当前图像的结果 return 与参数不一致 fiddle,但如前所述,我会使用这个仅适用于非常非常 受控条件。

对于不是屏幕截图或模板的实时数据,它们是同一图像的一部分 (a-la "where's Waldo"),我会研究对象检测(例如,使用 HOG 作为特征描述符训练 SVM)

见"Learning OpenCV 3: Computer Vision in C++ with the OpenCV Library" 作者:阿德里安·凯勒 (Adrian Kaehler)、加里·布拉德斯基 (Gary Bradski)

https://books.google.com.au/books?id=SKy3DQAAQBAJ&lpg=PT607&ots=XGg5zrJXPp&dq=TM_CCOEFF&pg=PT606#v=onepage&q=TM_CCOEFF&f=false

据书:

TM_CCORR = 互相关

TM_CCOEFF = 相关系数

FWIW: TM_CCOEFF 方法中的 −1/(w⋅h)⋅∑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' 有点不同,因为它在内核 (w, h) 内将 I 居中。

I′(x+x′,y+y′)=I(x+x′,y+y′)−1/(w⋅h)⋅∑x′′,y′′I( x+x′′,y+y′′)

我认为理想情况下 TM_CCORR_NORMED 和 TM_CCOEFF_NORMED 应该会给出相似的结果。 由于计算机四舍五入,可能会出现差异,因为 TM_CCOEFF_NORMED 通常使用接近零的数字进行运算。

更新

T' = T - m,其中 m 是 T

的平均值

I' = I - I * M,其中 M 是大小为 (w, h) 的平均滤波器矩阵

TM_CCOEFF  = T' * I' = (T - m) * (I - I * M) =
           = ((T - m) * I) * (U - M)
           = TM_CCORR * SHARPNESS - m * (I * SHARPNESS)

       

其中 U - 是单位滤波器,SHARPNESS = U - M 是锐度滤波器。

所以,TM_CCOEFF 是 TM_CCORR 的清晰度,经过一些归一化处理。