【发布时间】:2011-02-15 03:40:44
【问题描述】:
基本上我想在大图像中找到小图像的像素位置。 我已经搜索过类似的东西,但没有运气。
【问题讨论】:
-
小图像会是大图像中某个区域的精确的逐像素副本吗?选择算法时比较重要。
标签: c# image-recognition
基本上我想在大图像中找到小图像的像素位置。 我已经搜索过类似的东西,但没有运气。
【问题讨论】:
标签: c# image-recognition
这取决于您希望结果与查询图像匹配的相似程度。如果您尝试匹配不同逼真图像的相应部分,请查看Feature detection Wikipedia 页面。您要使用什么取决于您期望一张图像变成另一张图像所经历的转换。
也就是说,如果您正在寻找精确的逐像素匹配,那么暴力搜索可能会很糟糕。对于用于在n*n 图像中搜索的m*m 图像,这可以是O(m^2*n^2)。使用更好的算法,它可以提高到O(n^2),在像素数上是线性的。对两个图像进行下采样并进行分层搜索可能是一种不错的方法。
【讨论】:
您可能可以使用AForge Framework 来执行此类操作。它提供了多种图像处理工具。可能您可以使用他们的 blob 提取来提取 blob,然后将这些 blob 与您拥有的存储图像进行比较,看看它们是否匹配。
【讨论】:
如果图像是逐像素相等的,您可以首先在小图像中搜索一个与像素 (0,0) 具有相同颜色的像素。找到后,比较小图像将覆盖的区域中的每个像素。如果没有差异,您就找到了自己的位置。否则通过搜索下一个像素匹配 (0,0) 重新开始。
【讨论】:
Booyer-Moore 如果您将像素视为字符并正在寻找精确匹配,那么这里的搜索听起来像是一个解决方案。也比每像素搜索快得多。
【讨论】: