如何在较大的图像中检测图像的位置?我有一个未经修改的图像副本。然后将该图像改变为任意分辨率并随机放置在任意大小的更大图像内。没有对结果图像进行其他转换。 Python代码是理想的,它可能需要libgd。如果您知道解决此问题的好方法,您将获得+1。
答案 0 :(得分:7)
有一个快速而肮脏的解决方案,只需在目标图像上滑动窗口并在每个位置计算一些相似度,然后选择具有最高相似度的位置。然后将相似度与阈值进行比较,如果得分高于阈值,则得出图像在那里,那就是位置;如果分数低于阈值,则图像不存在。
作为相似性度量,您可以使用归一化相关或平方差之和(也称为L2范数)。正如人们所提到的,这不会涉及规模变化。因此,您还要多次重新缩放原始图像,并使用每个缩放版本重复上述过程。根据输入图像的大小和可能的比例范围,这可能足够好,而且很容易实现。
正确的解决方案是使用仿射不变量。尝试查找“宽基线立体匹配”,人们在那个环境中查看了这个问题。使用的方法通常是这样的:
在此阶段结束时,您将拥有一组描述符。
答案 1 :(得分:3)
你可能想要cross-correlation。 (自相关是将信号与自身相关联;互相关是将两个不同的信号相关联。)
与简单检查完全匹配相比,你有什么相关性,它会告诉你最佳匹配在哪里,以及它们有多好。翻转方面是,对于二维图像,它类似于O(N ^ 3),并不是那么简单的算法。但是一旦你开始工作,这就是魔力。
编辑:Aargh,你指定了一个任意调整大小。这将打破任何基于相关性的算法。对不起,您现在不在我的经验范围内,因此我不会删除此答案。答案 2 :(得分:2)
答案 3 :(得分:2)
看看Scale-Invariant Feature Transforms;有许多不同的口味可能或多或少地适合您正在使用的图像类型。