Ren*_* B. 1 opencv computer-vision opencv3.0
opencv中的TM_CCORR和TM_CCOEFF是什么意思?我发现TM_CCORR代表相关系数。但是,由于其命名,TM_CCOEFF接缝也将是相关系数。
您知道缩写的意思吗?
TM_SQDIFF = Ť emplate 中号 atching 呎 uare DIFF erence
TM_CCOEFF = Ť emplate 中号 atching Ç orrelation Coeff进行 icient?
TM_CCORR = Ť emplate 中号 atching 科尔兴高采烈???
正如HansHire提到的那样,官方文档介绍了在窗口滑动时用于像素求和的公式。此外,Python OpenCV文档显示了示例:
TM_CCOEFF
Run Code Online (Sandbox Code Playgroud)
TM_CCORR
Run Code Online (Sandbox Code Playgroud)
注意文档说:
您会看到,使用cv2.TM_CCORR的结果并不理想。
如果要使用始终保持不变的屏幕截图或图像部分(a-la Sikuli)(不是可以更改照明/变换的真实相机框架),请使用matchTemplate,否则请避免使用它。它仅对特定用例非常有用,并且就实际结果而言,不同的求和函数之间并没有太大差异。
要表达您对缩写词TM_CCORR和代表什么的评论TM_CCOEFF:
成为100%我并不诚实,但这不会阻止我进行猜测:)))
基于文档公式,我的直觉是TM_CCORR模板和图像之间的直接(“最简单”)关联:
结果像素是模板像素中每个像素与模板像素和图像像素之间的点积之和。
当模板“滑过”图像时,将计算结果图像。
TM_CCOEFF但使用()代替当前模板像素(T),使用更复杂的“系数” T'(T(x?,y?)?1/(w?h)??x?,y?T(x?,y?))(类似地I'使用)。
我对数学符号的理解是非常有限的,但是据我从公式可以看出,与之CORR相对的版本COEFF考虑了模板和图像的尺寸以及像素强度的总和。
唯一支持的其他方法是TM_SQDIFF速记名称所暗示的方法,并且公式确认使用模板和图像像素强度之间的平方距离。
这3种主要方法中的每一种都有标准版本。
好的,这就是我对缩写的含义的理解(例如,直接(点积)相关与更复杂的(无双关)相关)
但这是什么意思?
在实践中,我将主要注重的事实,TM_CCORR并TM_CCOEFF做出最有可能匹配最亮的像素,而TM_SQDIFF正好相反:最黑暗的值可能匹配(见例如图像链接)。
TM_CCOEFF如果当前图像的结果未返回与参数一致的一致结果,那么我将从此开始,但是如前所述,我仅将其用于非常受控制的条件。
对于不是屏幕快照或模板(属于同一图像的一部分)的实时数据(a-la“哪里是Waldo”),我将研究对象检测(例如,使用HOG作为特征描述符来训练SVM)
请参阅 Adrian Kaehler、Gary Bradski 撰写的“Learning OpenCV 3: Computer Vision in C++ with the OpenCV Library”
根据这本书:
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方法中,那么当模板和图像之间存在不匹配时,您不会受到任何惩罚。这种方法实际上是测量图像中与模板形状相同的最亮像素集的位置。(这就是为什么标志、足球和梅西腿上方的区域在匹配结果中强度很高的原因)。
| 归档时间: |
|
| 查看次数: |
1410 次 |
| 最近记录: |