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

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

【问题讨论】:

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

标签: java c++ algorithm image-processing


【解决方案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 CVTINA 是您可以使用的两个开源库。

【讨论】:

    【解决方案4】:

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

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

    【讨论】:

    • +1 用于建议 OpenCV。但是如果图像可以旋转和倾斜,模板匹配会很慢。
    • 是的,它可能很慢,但 SIFT 本身绝不是一种快速算法。模板匹配有几项改进声称比 SIFT 获得更好的结果,例如一位研究人员的想法:lps.usp.br/~hae/software/cirateg/index.html
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-10-28
    • 2018-06-22
    • 1970-01-01
    • 2015-07-02
    • 2012-11-19
    • 1970-01-01
    • 2017-04-02
    相关资源
    最近更新 更多