Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
如何找到不是子字符串而是子图片?我需要在大图像上找到小图像的位置。任何想法如何做到这一点?
我的意思是:如何比 gtk.gdk.Pixbuf 中的像素的简单循环更快地完成它?
您正在寻找的是模板匹配算法。我简要地研究了图像处理,我学会这样做的唯一方法是使用广义霍夫变换,它可以用来检测你想要的任何形状。可能还有其他方法,但是这种方法肯定比遍历所有像素要快得多,也更健壮得多。
显然,Python 的PIL包实现了霍夫变换。示例代码在这里。我从未使用过 PIL,但这些链接可能足以让您入门。
由于您开始描述与子字符串相关的问题,因此我假设您的子图片存在于更大的图片中(就像子字符串问题中的情况一样)。要执行此任务,您需要在子图片和较大的图片之间进行关联。更具体地说,您需要它们之间的归一化互相关,并且由此产生的全局峰值表示最佳匹配。
这是一个示例图像,从中获取的一些子图片以及生成的相关图像。
这是结果相关性中的全局最大值(单个点):
这是原始图像上方的子图,以全局最大值为中心。
在 Matlab 中,这需要一行:
h = normxcorr2(g, f); % g is a subpicture from f.