【问题标题】:Comparing images using color difference使用色差比较图像
【发布时间】:2013-07-11 23:10:40
【问题描述】:

我正在尝试找出一种比较两个图像颜色的好方法。我的一个想法是取两张图像的平均颜色并减去该数量以获得“颜色距离”。无论哪两个图像具有最小的颜色距离,都将是匹配的。这似乎是从图像数据库中识别图像的可行选择吗?

理想情况下,我想用它来识别通过图像扫描仪放置的扑克牌。

例如,如果我将this card 的真实版本扫描到我的计算机上,我希望能够将其与数据库中的所有图像进行比较,以找到最接近的图像。

更新: 我忘了提及我的具体问题所涉及的挑战。

  1. 卡片的扫描图像和卡片的原始图像很可能是不同的尺寸(在宽度和高度方面)。
  2. 我需要尽可能提高效率。我计划使用它一次扫描/识别数百张卡片。我认为为每张图像查找(并存储)单个平均颜色值比比较数据库中每张图像的单个像素(数据库中有超过 10,000 张图像)需要识别的每张扫描卡要高效得多.我问这个问题的原因是看看是否有人尝试比较平均颜色值作为图像识别的一种手段。由于色值精度和准确性的问题,我感觉它可能无法像我想象的那样工作。

更新 2: 这是我所设想的一个例子。

要识别的图像 = A

数据库中的图像 = { D1, D2 }

图像 A 的平均颜色 = avg(A) = #8ba489

数据库中图像的平均颜色 = { #58727a, #8ba489 }

D2 与图像 A 匹配,因为 #8ba489 - #8ba489 小于 #8ba489 - #58727a。

当然,测试图像不会与这些图像中的任何一个完全匹配,因为它会被扫描进来;但是,我正在尝试找到最接近的匹配项。

【问题讨论】:

  • 你看this的问题了吗?

标签: java database image-processing


【解决方案1】:

基于内容的图像检索 (CBIR) 可以为您解决问题。有 LIRE,一个用于此的 java 库。您甚至可以在演示中首先尝试使用不同颜色的图像特征的几种方法。有关下载和来源,请参阅https://code.google.com/p/lire/。还有一个“简单的应用程序”可以帮助您快速开始索引和搜索。

根据我的经验,我建议使用 ColorLayout 功能(如果图像未旋转)、OpponentHistogram 或 AutoColorCorrelogram。 CEDD 功能也可能产生良好的效果,它是最小的,每张图像大约 60 字节的数据。

【讨论】:

  • 酷我一定会去看看。谢谢!
【解决方案2】:

如果你想像这样检查色差:

http://en.wikipedia.org/wiki/Color_difference

您可以使用 Catalano 框架,

http://code.google.com/p/catalano-framework/

它适用于 Java 和 Android。

使用色差的示例:

float[] lab = ColorConverter.RGBtoLAB(100, 120, 150, ColorConverter.CIE2_D65);
float[] lab2 = ColorConverter.RGBtoLAB(50, 80, 140, ColorConverter.CIE2_D65);

double diff = ColorDifference.DeltaC(lab, lab2);

【讨论】:

  • 我想在我的一个项目中使用这个功能,有没有办法标准化差异,我不知道我是否使用了正确的术语,但我希望结果接近如果图像完全不同,则为 0,如果它们相同,则接近 1(反之亦然,这是我感兴趣的 0-1 比例)。
  • 您可以在数据预处理中使用 SND 进行标准化,检查 Catalano.Statistics.DataPreprocessing
【解决方案3】:

我认为你的想法不足以完成这项任务。 您的方法会说下面的所有图像都是相同的(所有图像的平均颜色为 128)。

【讨论】:

  • 我考虑过这个问题,但我不确定这是否会成为问题。如果数据库中的每张卡片都明显不同,那么它们的平均颜色至少会有很小的差异。鉴于我所指的扑克牌是万智牌,每张都有自己独特的艺术品,我希望数据库中每张图像的平均颜色值之间的差异非常显着,或者至少显着足以将该卡与其他卡区分开来。
【解决方案4】:

正如@Heejin 已经解释的那样,您的颜色平均方法很可能会失败。

您可以尝试不同的方式。将所有图像缩小到任意大小,然后从所有已知图像中减去未知图像,差异最小的就是您要查找的图像。方法很简单,不会比平均慢。

另一种选择是使用一些更智能的算法:

http://www.hackerfactor.com/blog/index.php?/archives/432-Looks-Like-It.html

我过去使用过这种方法,结果还可以。 Ir 非常适合查找相同的图像,但不太适合查找相似的图像。

【讨论】:

    猜你喜欢
    • 2011-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多