4

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

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

我正在寻找这种类型的直方图的一些改进版本,例如。喜欢这篇论文

4

3 回答 3

6

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

于 2012-08-28T11:29:34.687 回答
3

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

典型的做法是词袋。您从整组图像(3D 空间中的点)中获取所有像素值,并使用一些聚类算法(如k-meansEM 算法)对它们进行量化。假设您使用了K个集群(可能取决于您的目的和样本量,您可以从K = 100 开始)。为了描述一个单独的图像,你为每个像素找到最近的聚类(所谓的视觉词),并用K个 bin构建直方图,这样每个 bin 的值就是对应于视觉词的像素数。这是您的描述符,您可以使用欧几里得距离或 χ² 距离在描述符上比较图像。

请注意,根据您的平台,有很多可用的聚类算法(甚至是词袋框架)的实现。OpenCV是最受欢迎的之一。请注意,您还可以使用基于梯度的描述符,例如HOG,具体取决于您的问题。

于 2012-08-29T11:23:06.547 回答
2

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

是的,可以建立这样的直方图。就实现而言,它应该相当简单,因为通常(r,g,b)由 32 位表示,其中前三位是rg并且b

于 2012-08-28T11:29:25.703 回答