【发布时间】:2021-08-10 01:01:23
【问题描述】:
我正在尝试在 Python-OpenCV 中实现模板图像和视频流帧之间的某种相关性跟踪
我正在尝试使用加权平均绝对偏差(加权 MAD)作为模板和视频帧之间的相似性度量(对象应位于最小 MAD 的位置。)。
我需要做的等式是:
其中F是图片,T是模板,w是权重窗口(与模板大小相同)
我知道 open-cv 提供了模板匹配的功能(即:cv2.matchTemplate)。与 MAD 最接近的是 TM_SQDIFF_NORMED,即均方偏差 (MSD),我相信 open-cv 实现了这个方程
如果有办法像这样在其中实现权重函数,这将给出我想要的相似性度量
我的问题是如何在 Open-CV 中实现任何加权 MAD 或加权 MSD 而无需自己实现循环(以免失去速度)利用 cv2.matchTemplate 函数(或类似方法
【问题讨论】:
-
也许通过使用权重作为掩码图像。有关掩码选项,请参阅docs.opencv.org/4.1.1/df/dfb/…
-
@fmw42 文档说掩码乘以模板,这不是所示的等式。 gregorkovalcik.github.io/opencv_contrib/…
-
这只是一个想法。否则,我看不到任何方法可以在不重新编程代码的情况下向当前 matchTemplate() 添加权重。因此,您必须编写自己的例程。
-
@fmw42 我试过实现它,但是对于普通的视频文件来说太慢了。如果我能有合理的速度,我执行它没有问题
-
循环太慢了,我已经使用 numpy.convolve(或 scipy)实现了 TM_CCOEFF。那么你能把方程变成卷积吗?
标签: python numpy opencv image-processing scipy