有没有人知道在较大图像中定位已知图像的算法(或搜索词/描述)?
例如
我有一个包含各种按钮和区域(目标)的单个桌面窗口的图像。我还有代码来捕获当前桌面的屏幕截图。我想要一个算法来帮助我在较大的桌面图像中找到目标图像(窗口所在的确切 x 和 y 坐标)。目标图像可能位于较大图像中的任何位置,并且可能不是 100% 完全相同(非常相似但不完全可能 b/c 的操作系统显示差异)
有人知道这样的算法或算法类吗?
我发现了各种图像分割和计算机视觉算法,但它们似乎适用于区域的“模糊”分类,而不是在另一个图像中定位特定图像。
** 我的目标是创建一个框架,给定一些种子目标图像,可以在桌面上找到“查看”,找到目标区域并“观察”它的变化。 **
最佳答案
看看我写的论文:http://werner.yellowcouch.org/Papers/subimg/index.html .它非常详细,似乎是唯一一篇讨论如何将傅里叶变换应用于子图像查找问题的文章。
简而言之,如果你想使用傅立叶变换,可以应用以下公式:当图像 A 在 dx,dy 上移动时,图像 A 和图像 B 之间的相关性在以下矩阵中给出: C=ifft(fft (A) x conjugate(fft(B))。因此,图像 C 中具有最高值的位置具有最高的相关性,并且该位置反射(reflect)了 dx,dy。
此结果适用于相对较大的子图像。对于较小的图像,需要做更多的工作,如文章中所述。尽管如此,这种傅立叶变换还是相当快的。它导致大约 3*sxsylog_2(sx*sy)+3*sx*sy 操作。
关于java - 在较大的图像中查找已知的子图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/297762/