在另一个图像中搜索图像的算法。 (大学)

Posted

技术标签:

【中文标题】在另一个图像中搜索图像的算法。 (大学)【英文标题】:Algorithm for searching for an image in another image. (Collage) 【发布时间】:2010-01-29 18:54:03 【问题描述】:

这甚至可能吗?我有一张巨大的图片,80mb 有很多小图片。它们也倾斜并转身。如何通过编程搜索图像?我知道如何使用 java 和 c++。你会怎么做呢?

【问题讨论】:

如何在拼贴中搜索较小的图像?使用较小的图像本身?期待什么回来?坐标? 你在做 BrokenClayTile 的问题吗? 我学的是计算机科学,但这其实和我的学位无关。 【参考方案1】:

您可能需要查找尺度不变特征变换 (SIFT) 算法。举个例子,它在相当多的程序中用于自动生成全景图,以识别匹配的图片部分,尽管在缩放、倾斜、平移等方面存在差异。

编辑:非常正确——它已获得专利,我可能应该一开始就提到这一点。万一有人关心它是美国专利#6,711,293。

【讨论】:

SIFT有个很大的问题,就是它获得了专利,只能用于研究目的。【参考方案2】:

我以前使用过的一种算法是SIFT。如果您有兴趣自己实现该算法,可以查看course notes for CPSC 425 at UBC,其中详细描述了如何在 MATLAB 中实现 SIFT。如果您只想要执行此操作的代码,请查看VLFeat,这是一个执行 SIFT 和许多其他算法的 C 库。


来自 Jerry Coffin 的Quotation:

编辑:非常正确——它已获得专利,我可能应该一开始就提到这一点。万一有人在乎,它是美国专利#6,711,293。

【讨论】:

我实际上过那门课,笔记没有详细描述如何实现SIFT。此外,如果您不熟悉图像处理,那么立即实施 SIFT 是一项非常没有希望的任务。 回想起来,你是对的:SIFT 实施起来肯定不是一件容易的事。希望 VLFeat(或 sift++ 或 pysift 等)能有所帮助。 我认为课程笔记的网站已更改为cs.ubc.ca/~woodham/cpsc425/notes/index.html。如有错误请更正此评论。【参考方案3】:

你对图片了解多少?它到底长什么样?您是否有图像的副本,您只需要找出它在大图像中的位置吗?

无论如何,处理这类问题的 CS 分支称为Computer Vision

Open CV 和TINA 是您可以使用的两个开源库。

【讨论】:

【参考方案4】:

您可能应该从最简单的想法开始,看看它们是否足以满足您的需求。在模式匹配领域,最简单的想法是template matching。在OpenCv 中找到了模板匹配的有效实现。

请注意,模板匹配是旋转变体,这意味着如果您尝试匹配的模板可以在您尝试找到它的图像中旋转,除非您预先旋转模板,否则它将不起作用。

【讨论】:

+1 用于建议 OpenCV。但是如果图像可以旋转和倾斜,模板匹配会很慢。 是的,它可能很慢,但 SIFT 本身绝不是一种快速算法。模板匹配有几项改进声称比 SIFT 获得更好的结果,例如一位研究人员的想法:lps.usp.br/~hae/software/cirateg/index.html

以上是关于在另一个图像中搜索图像的算法。 (大学)的主要内容,如果未能解决你的问题,请参考以下文章

各类场景应用中涉及的AI算法汇总

图像分割基于matlab和声搜索算法图像多级阈值分割含Matlab源码 2044期

图像分割基于matlab和声搜索算法图像多级阈值分割含Matlab源码 2044期

图像分割基于matlab和声搜索算法图像多级阈值分割含Matlab源码 2044期

图像重建基于matlab遗传算法二值化图像重建含Matlab源码 2396期

检测另一幅图像中带有一些噪声的图像的算法