opencv中的TM_CCORR和TM_CCOEFF是什么意思?我发现TM_CCORR代表相关系数。然而,由于其命名,TM_CCOEFF接缝也是相关系数。
你知道缩写是什么意思吗?
TM_SQDIFF = Template Matching Square Diff>E 211erence
TM_CCOEFF = Template Matching C或CoeffE 221的原因?
TM_CCORR = Template Matching Corr?
发布于 2019-12-05 03:32:15
参见禤浩焯Kaehler,Gary著的“学习OpenCV 3: C++中的计算机视觉与OpenCV图书馆”
根据这本书:
TM_CCORR =互相关
TM_CCOEFF =相关系数
FWIW:−1/(w⋅h)⋅∑x″,y″T(x″,y″)在TM_CCOEFF方法中被简单地用于: a)使模板和图像零均值,b)使图像负值的暗部分和图像正值的亮部分。
这意味着,当模板的亮部分与图像重叠时,您将在点积中得到一个正值,以及当暗部分与暗部分重叠时(-ve值x -ve值给出+ve值)。这意味着你在明亮的部分匹配和黑暗的部分匹配中都得到了+ve的分数。
当您有黑暗的模板( -ve )和明亮的图像(+ve)时,您将得到一个-ve值。当您有明亮的模板(+ve)和深色的图像( -ve )时,您也会得到一个-ve值。这意味着在不匹配的情况下你会得到一个负面的分数。
另一方面,如果您没有−1/(w⋅h)⋅∑x″,y″T(x″,y″)项,即在TM_CCORR方法中,那么当模板和图像之间存在不匹配时,就不会受到任何惩罚。实际上,这种方法是测量图像中与模板形状相同的最亮像素集的位置。(这就是为什么这个标志,足球和梅西腿部上方的区域在匹配结果上有很高的强度)。
发布于 2019-04-02 08:06:55
正如HansHire提到的,正式文件给出了窗口幻灯片中像素相加的公式。此外,Python OpenCV文档还显示了一些示例:
TM_CCOEFF

TM_CCORR

请注意,医生们说:
您可以看到,使用cv2.TM_CCORR的结果并不像我们预期的那样好。
如果您想使用屏幕截图或图像(a-la 西库利)的部分总是保持不变(而不是真实的相机帧,在那里照明/转换可以改变),那么使用matchTemplate,否则尽量避免它。它只适用于特定的用例,不同的求和函数在实际结果上没有太大的差异。
要说明您对缩写TM_CCORR和TM_CCOEFF代表什么的评论?:
我不知道,但这并不能阻止我猜测:)
根据文档公式,我的预感是TM_CCORR是模板和图像之间的直接(“最简单”)关联:
结果像素是模板像素与模板中每个像素的像素和图像像素之间的点积之和。
当模板在图像中“滑动”时,将计算结果图像。
TM_CCOEFF,而不是当前的模板像素(T),而是使用了一个更复杂的“系数”(T') (T(x′,y′)−1/(w⋅h)⋅∑x″,y″T(x″,y″)) (类似地(I'使用))。
我对数学表示法的理解非常有限,但据我所知,从公式中可以看出,CORR版本(相对于COEFF )考虑了模板和图像的尺寸以及像素强度之和。
唯一支持的方法是TM_SQDIFF,顾名思义和公式确认使用模板和图像像素强度之间的平方距离。
这三种主要方法中的每一种都有赋范版本。
好的,这就是我对缩写的意思的理解(例如,直接(点积)相关性相对于更复杂(没有双关意)的关联)。
但这是否意味着?
实际上,我主要注意的是,TM_CCORR和TM_CCOEFF最有可能匹配最亮的像素,而TM_SQDIFF则相反:最暗的值可能匹配(参见链接的示例图像)。
我将从TM_CCOEFF开始,如果当前图像的结果不返回一致的结果,就会篡改参数,但正如前面提到的,我只在非常非常控制的条件下使用这一方法。
对于不是屏幕截图或模板的实时数据(a-la“哪里是Waldo"),我将研究对象检测(例如,使用HOG作为特征描述符来训练SVM )。
发布于 2020-11-25 11:44:02
下面的公式给出了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-是单位滤波器,锐度=U-M是锐度滤波器.
因此,TM_CCOEFF是TM_CCORR的锐度,具有一定的归一化。
https://stackoverflow.com/questions/55469431
复制相似问题