黑白图像上的子图像匹配
Subimage matching on b&w images
我正在尝试检测只有黑白像素的较大图像(Master/Base 图像)中的子图像(从图像),然后用红色矩形勾勒出匹配项。图片几乎都是正方形或长方形。
我看过 cv2 和 PIL 的模板匹配,但它从来没有正确工作过,而是将整个图像勾勒出轮廓作为匹配项,而不是特定的匹配区域。另外图片大小不一样,我看了多尺度模板匹配,还是不能满足我的需要
所以,我的问题是,因为我只是处理 运行 相互连接的黑白和直线,就像附加的图像一样,图像之间是否没有足够的差异化信息进行准确匹配?或者,是否有一种 ML 方法可以超越对象识别?
道格
问题在于子图像搜索算法的工作原理是将子图像滑过主图像并测试它们在每个可能位置的比较效果。由于您的子图像与主图像的大小相同,因此只有一个位置可以使子图像位于主图像的顶部 - 即它们完全对齐时。所以你需要先 trim 你的子图像。
我在终端中使用 ImageMagick 来完成:
magick compare -metric RMSE -subimage-search haystack.png needle.png locations.png
并没有结果。但是如果我先 trim 然后重试:
magick needle.png -trim +repage trimmed-needle.png
magick compare -metric RMSE -subimage-search haystack.png trimmed-needle.png locations.png
我得到:
949,638
这意味着在这些坐标上完美匹配。
TLDR; 您需要 trim 将您的子图像缩小到尽可能小的尺寸,这样才能正常工作。
我正在尝试检测只有黑白像素的较大图像(Master/Base 图像)中的子图像(从图像),然后用红色矩形勾勒出匹配项。图片几乎都是正方形或长方形。
我看过 cv2 和 PIL 的模板匹配,但它从来没有正确工作过,而是将整个图像勾勒出轮廓作为匹配项,而不是特定的匹配区域。另外图片大小不一样,我看了多尺度模板匹配,还是不能满足我的需要
所以,我的问题是,因为我只是处理 运行 相互连接的黑白和直线,就像附加的图像一样,图像之间是否没有足够的差异化信息进行准确匹配?或者,是否有一种 ML 方法可以超越对象识别?
道格
问题在于子图像搜索算法的工作原理是将子图像滑过主图像并测试它们在每个可能位置的比较效果。由于您的子图像与主图像的大小相同,因此只有一个位置可以使子图像位于主图像的顶部 - 即它们完全对齐时。所以你需要先 trim 你的子图像。
我在终端中使用 ImageMagick 来完成:
magick compare -metric RMSE -subimage-search haystack.png needle.png locations.png
并没有结果。但是如果我先 trim 然后重试:
magick needle.png -trim +repage trimmed-needle.png
magick compare -metric RMSE -subimage-search haystack.png trimmed-needle.png locations.png
我得到:
949,638
这意味着在这些坐标上完美匹配。
TLDR; 您需要 trim 将您的子图像缩小到尽可能小的尺寸,这样才能正常工作。