图像的颜色直方图

时间:2012-08-28 11:24:48

标签: image-processing machine-learning computer-vision

在颜色直方图中,我们通常会在每个颜色通道中提取直方图,这不包含颜色共同出现的信息,例如有多少像素具有强度I(100,200,50)?

有没有办法建立代表颜色共同出现的直方图? (有多少像素包含强度值(200,100,50)?)

我正在寻找这种直方图的改进版本,例如。像这样paper

3 个答案:

答案 0 :(得分:6)

您可以使用256 ^ 3值构建一个非常大的直方图,也可以量化每个通道中的值(例如,每个通道10个值),这将导致包含1000个条目的直方图。

答案 1 :(得分:3)

由于您希望将其用作图像级描述符以进一步识别,因此简单的分级可能不是最佳选择,因为颜色不会在样本中均匀分布。

典型方法是bag of words。您可以从整个图像集(3D空间中的点)中获取所有像素值,并使用某种聚类算法(如k-meansEM algorithm)对其进行量化。假设您使用了 K 群集(可能取决于您的目的和样本大小,您可以从 K = 100开始)。要描述单个图像,您可以找到每个像素最近的聚类(所谓的可视词),并使用 K 箱构建直方图,以便每个bin值都是对应于视觉词的像素数。这是您的描述符,您可以使用欧几里德距离或χ²距离描述符来比较图像。

请注意,根据您的平台,有许多可用的群集算法(甚至包含词语框架)。 OpenCV是最受欢迎的。请注意,您还可以使用基于渐变的描述符,例如HOG,具体取决于您的问题。

答案 2 :(得分:2)

我认为你刚回答了自己的问题。

是的,可以构建这样的直方图。它在实现方面应该相当简单,因为通常(r,g,b)由32位表示,其中前三位是rgb