黑白图像上的子图像匹配

时间:2019-11-06 14:58:03

标签: python computer-vision python-imaging-library cv2

我正在尝试在只有黑白像素的较大图像(主图像/基本图像)中检测子图像(从图像),然后用红色矩形勾勒出匹配项。图像几乎总是正方形或矩形。

我已经看过具有模板匹配的cv2和PIL,但是它永远无法正常工作,而是概述了整个图像作为匹配,而不是特定的匹配区域。此外,图片大小不同,因此我查看了多比例模板匹配,但仍然无法满足我的需求。

所以,我的问题是,因为我只是在处理黑白和直线,就像所附的图像一样,彼此之间是否存在足够的差异信息以进行准确匹配?或者,是否存在可以超越对象识别的ML方法?

道格

Master/Base Image

Subimage

1 个答案:

答案 0 :(得分:1)

问题在于,子图像搜索算法的工作原理是将子图像在主图像上滑动并测试它们在每个可能位置的比较程度。由于子图像的大小与主图像的大小相同,因此只有一个位置,子图像可以位于主图像之上-即它们完全对齐时。因此,您需要先修剪子图像。

在这里,我使用终端机中的 ImageMagick

segue

,没有结果。但是,如果我先修剪然后重试:

magick compare -metric RMSE -subimage-search haystack.png needle.png locations.png

我得到:

magick needle.png -trim +repage trimmed-needle.png
magick compare -metric RMSE -subimage-search haystack.png trimmed-needle.png locations.png

这意味着在这些坐标处完全匹配。

TLDR; 。您需要将子图像修整到最小尺寸,然后才能使用。