比较opencv中的颜色配置文件

时间:2014-05-19 08:48:19

标签: opencv

我有不同的图像,各种颜色分布在一个圆圈中。enter image description here

如何比较不同图像之间的这些颜色配置文件?

目前我正在使用以下算法:

  1. “画出”一个半径为内圈50%的圆圈。

  2. 选择圆周上像素的RGB值。

  3. 将此RGB值存储在矢量中。

  4. 比较不同图像的RGB值。

  5. 但这是一种比较蛮力的方法,我不打算这样做。

    EDITED

    我想我没有正确解释这个问题。我有红色圆圈内的黄色物体(或者说,有两个不同颜色的同心圆)。内圈具有渐变和微小的颜色变化(如图所示),这是区别因素。我需要根据这些颜色变化识别对象。图像中的红色,绿色,蓝色等量可能相同,不同之处在于它们的分布。我该如何表示这种颜色变化?

    编辑2 enter image description here enter image description here

    根据我提到的算法,我已经在2个不同对象的圆周上表示了RGB像素。这2幅图像显示颜色的“位置”不同,但数量和图案几乎相同。

2 个答案:

答案 0 :(得分:1)

使用histogram comparison来衡量颜色配置文件的相似性

对于每个图像,计算其颜色直方图。然后,使用直方图距离对图像进行交叉比较。

答案 1 :(得分:0)

从输入图像中猜出你的实际目标并不容易。您还应提供所需输出的示例,以使事情更加清晰。

假设内部带有大红圈和部分颜色的图像与您的实际图像相似,您可能需要尝试:

  • 圈子检测(使用Hough transform)将图片细分为总区域。这将为您提供至少与内部相对的红色环;
  • 颜色聚类。假设您先前知道有多少种不同的颜色,您可以尝试使用简单的K-means算法(遗憾的是,它似乎不能在OpenCV API中轻松访问)。如果您没有先前的课程数,可以尝试OpenCV的FLANN层次聚类,并在要检测的颜色的最大尺寸(=颜色范围)上设置颜色距离阈值。 Juste使用RGB颜色作为特征向量。