1

如何找到不是子字符串而是子图片?我需要在大图像上找到小图像的位置。任何想法如何做到这一点?

我的意思是:如何比 gtk.gdk.Pixbuf 中的像素的简单循环更快地完成它?

4

2 回答 2

2

您正在寻找的是模板匹配算法。我简要地研究了图像处理,我学会这样做的唯一方法是使用广义霍夫变换,它可以用来检测你想要的任何形状。可能还有其他方法,但是这种方法肯定比遍历所有像素要快得多,也更健壮得多。

显然,Python 的PIL包实现了霍夫变换。示例代码在这里。我从未使用过 PIL,但这些链接可能足以让您入门。

于 2012-08-23T13:40:17.833 回答
1

由于您开始描述与子字符串相关的问题,因此我假设您的子图片存在于更大的图片中(就像子字符串问题中的情况一样)。要执行此任务,您需要在子图片和较大的图片之间进行关联。更具体地说,您需要它们之间的归一化互相关,并且由此产生的全局峰值表示最佳匹配。

这是一个示例图像,从中获取的一些子图片以及生成的相关图像。

在此处输入图像描述 在此处输入图像描述 在此处输入图像描述

这是结果相关性中的全局最大值(单个点):

在此处输入图像描述

这是原始图像上方的子图,以全局最大值为中心。

在此处输入图像描述

在 Matlab 中,这需要一行:

h = normxcorr2(g, f); % g is a subpicture from f.
于 2012-12-14T23:06:29.023 回答