【问题标题】:Using Objective-C, is there any way to compare two images and get a % difference value returned?使用 Objective-C,有没有办法比较两个图像并返回一个 % 差异值?
【发布时间】:2011-10-13 05:35:31
【问题描述】:

使用 Objective-C,有什么方法可以比较两个图像并返回 % 差异值?

例如,一张图片将包含 和 X。另一个图像中会有一个 X。第三个里面会有一个H。所有相同的字体/颜色。

显然,X 和 X 的 % 差异非常小。 X 和 H 之间的百分比会很大。

我将如何编写一个可以返回百分比差异的函数?

【问题讨论】:

  • 我认为这更像是计算机视觉问题而不是 iOS 问题
  • @Ethan Allen:你能给我们一些示例代码吗?

标签: iphone objective-c cocoa-touch ipad


【解决方案1】:

你将不得不非常仔细地考虑你关心什么样的差异。

对相同大小的图像进行逐像素比较不会太难。为每个像素分配一个误差值,然后以某种方式将差异组合成一个图形。

如果一张或另一张图像以不同的尺寸开始但纵横比相同,则缩放它们也相当简单。

但是,边缘情况很快就会变得棘手。例如,如果您的两个 X 字符移位,一个在图像的左侧,另一个在右侧,会发生什么情况?这些是否应该以某种方式被检测为“相似”?

此外,在将 H 与 X 进行比较时,您想要一个高分 - 但是您如何将 X 与蝴蝶的彩色图片进行排名?可能更高,但要高多少?

某种学习神经网络可能会对您有所帮助,您可以在其中计算出为某些样本比较分配的值,然后训练网络为您的样本图像返回这些值。但这对编码来说并非易事。

如果您的比较要求更简单 - 例如,您正在执行某种等效的 OCR,并且您知道您的输入可能是单色字符,那么您可以使用其他技巧 - 但适当的技巧取决于关于你想要达到的目标。

【讨论】:

    【解决方案2】:

    你可以在iphone中使用OpenCV (Open Source Computer Vision)库。这个question对图像比较算法有很好的讨论。 Image processing on the iPhone此链接可能会有所帮助。

    【讨论】:

      【解决方案3】:

      API 没有类似的东西可用。

      如果你想这样做,你必须自己动手或使用外部库。

      我建议找一个外部库,因为这不是一项简单的任务。

      例如,您有两张图片,其中 x 的字体和颜色相同。图片大小一样吗?如果不是,它们是否被认为 100% 不同?如果您调整图像大小以匹配,差异将比其他情况大得多。

      或者,假设您有两张图片,其中 x 字体和图片大小相同,但颜色不同。你会如何衡量这个百分比?完全不同还是部分不同?如果你说颜色只是部分不同,那么你怎么会得到 100% 的不同呢?

      无论如何,执行此操作的基本方法(我可以看到,我相信更聪明的人会有更好的主意)是逐个像素地比较颜色数据(HSV 可能是一个不错的选择) .对组件进行加权并计算差异。

      【讨论】:

        【解决方案4】:

        如果源图像大小和目标图像大小不同,逐像素比较将无济于事。在这种情况下,缩放比例应该是正确的。任何其他解决方案?

        【讨论】:

          猜你喜欢
          • 2012-01-24
          • 2014-02-26
          • 1970-01-01
          • 1970-01-01
          • 2020-10-22
          • 2021-08-30
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多