【问题标题】:Comparing two similar pictures to get similarity value比较两张相似的图片得到相似度值
【发布时间】:2019-08-08 05:45:34
【问题描述】:

我正在尝试创建自己的应用,我需要比较两张图片。

澄清一点。

  • 图片将包含一个写在纸上的符号。

  • 我将得到一张带有符号的纸的“原始”图片。

  • 我需要将新捕获的符号图片与原始图片进行比较,并确定它们是否都是相同符号的相同图片。

  • 新捕获的符号图片可以从不同的角度拍摄。

我查看了 OpenCV 和 Google Vision ,但我有点迷茫,不知道该怎么做。

我的问题

我有这样的“原始”图片

我有一张新拍的照片,上面有相同的符号,但是从不同的角度拍摄,像这样

我需要确定它们是“相同”(相似)还是不同。

提前致谢。

【问题讨论】:

  • 关于其他符号可能是什么样子的任何线索?或者有几个?您是否打算继续使用无益的背景?背景是否不同?大小是否完全微不足道,所以小星星与大星星相似?颜色是否重要,即蓝色星星与红色星星相似吗?
  • 您好,感谢您的回答。没有线索,符号可能是随机的,就像涂鸦一样。将只有一个符号。背景可能是随机的并且是变化的。但是“原件”和比较背景应该是一样的。大小应该很重要,但我认为它会有所不同,因为“新拍摄的图片”的角度。颜色应该保持不变,但如果它没有检测到颜色差异就可以了。主要目标是认识到“新拍摄的照片”类似于“原始照片”(在相同的背景上,在相同的表面上)。
  • 在连体网络上见:becominghuman.ai/…
  • 嘿@Nuzhny 这个神经网络只能处理两张图片吗?没有测试样品。 ?因为我不知道有哪些符号可用,因为它们可以是随机的。因此我无法训练网络识别类似的东西。

标签: image opencv image-processing similarity google-vision


【解决方案1】:

OpenCV 支持比较两个图像以及这些图像有多“相似”的方式有多种。这些方法包括比较直方图、模板匹配和特征匹配。

比较直方图的方法 cv2.compareHist() 可能是最简单和最快的方法,但有时它可能过于简单和不准确。另一种方法是模板匹配 cv2.matchTemplate(),它将“模板”搜索图像与目标图像进行比较。此方法适用于具有相似大小和方向的相同图像,但对于有角度的图像可能无效。 特征匹配方法可能是最有效的方法之一,因为提取的特征可用于确定图像之间的相似性。这些特征可以针对旋转或缩放的目标进行识别,因为高比例的相似性意味着相同的对象。该类别可以进一步分为纹理描述符(HOG、LBP、Haar)和关键点描述符(SIFT/SURF)。

对于您的应用程序,我会考虑模板或特征匹配,因为您的图像可能因角度而异。

【讨论】:

    猜你喜欢
    • 2011-09-30
    • 1970-01-01
    • 2011-08-09
    • 2015-09-13
    • 1970-01-01
    • 1970-01-01
    • 2019-09-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多