java - 在较大的图像中查找已知的子图像

标签 java algorithm image-processing image-manipulation

有没有人知道在较大图像中定位已知图像的算法(或搜索词/描述)?

例如

我有一个包含各种按钮和区域(目标)的单个桌面窗口的图像。我还有代码来捕获当前桌面的屏幕截图。我想要一个算法来帮助我在较大的桌面图像中找到目标图像(窗口所在的确切 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/

相关文章:

java - 在 CentOS 6.5 32 位上安装 32 位 Java JDK

java - 我们可以在面板内添加面板来创建嵌套选项卡式菜单吗?

objective-c - 优化数组搜索,通过比较 Objective C 中的 2 个字符串进行搜索

python - python中的OpenCV透视变换

python - Tensorflow 的对象检测 API 的输出是什么?

java - jTextFields 请求焦点(如果在丢失焦点后为空)不起作用

java - 检查文件夹和所有数据是否已存在

java - Box2D 中的碰撞检测

javascript - 为什么字符串中的非空格元素不会更改为大写

c++ - 在两台计算机上使用 float 的相同代码会给出两个不同的结果