在Python中如何判断一个图像是否是另一个图像的一部分?

2024-04-26 00:56:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我就是这样尝试的: (1) 使用像素图像打开原始(比如100*100)和目标(比如20*20)图像并将它们转换为np.数组; (2) 从原始像素的每个像素开始作为起始位置,裁剪一个20*20的区域,并将每个像素的RGB与目标进行比较。 (3) 如果总差值在某一给定水平下,则停止并输出原始像素中的特定起始像素位置。你知道吗

问题是,步骤(3)花费超过10秒,这太长了,甚至步骤(2)花费超过0.04秒,我希望优化我的程序。在我用来迭代数组的两个步骤中,有没有更有效的方法?你知道吗


Tags: 方法图像程序区域目标np水平步骤
1条回答
网友
1楼 · 发布于 2024-04-26 00:56:12

要比较不同位移下的两个信号(或图像),可以使用cross-correlation。你知道吗

如果你有scipy软件包,你可以使用二维互相关来测量当你把一个图像滑动到另一个图像上时两个图像的相似程度。 此示例复制自correlate2d函数:

from scipy import signal
from scipy import misc
lena = misc.lena() - misc.lena().mean()
template = np.copy(lena[235:295, 310:370]) # right eye
template -= template.mean()
lena = lena + np.random.randn(*lena.shape) * 50 # add noise
corr = signal.correlate2d(lena, template, boundary='symm', mode='same')
y, x = np.unravel_index(np.argmax(corr), corr.shape) # find the match

如果不想使用工具箱,可以自己实现互相关。你知道吗

相关问题 更多 >