图像的颜色直方图

4
在颜色直方图中,我们通常会提取每个颜色通道的直方图,但这并不包含颜色如何共存的信息,例如有多少像素具有强度I(100,200,50)?
是否有任何方法可以构建代表颜色共现的直方图?(有多少像素包含强度值(200,100,50)?)
我正在寻找一些改进版本的此类直方图,例如像这样的paper

这可能取决于您的目的。您想要将其可视化吗?还是您想将其用作图像级描述符? - Roman Shapovalov
我想将其用作描述符。 - user570593
3个回答

6

你可以构建一个包含256^3个值的大直方图,或者对每个通道中的值进行量化(例如每个通道10个值),这将导致一个包含1000个条目的直方图。


这是一种适当的方法,但使用的容器可能会非常稀疏。相反,可以将所有三个值哈希在一起得到一个长字符串,然后使用它作为哈希表中的键。 - stackoverflowuser2010

3

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

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

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

谢谢。我在http://research.microsoft.com/pubs/68706/cvpr1.pdf找到了以下有趣的“使用颜色共现直方图进行对象识别”。 - user570593
计算机视觉在过去十年中取得了巨大进展,因此该论文可能已经远离最新技术。 - Roman Shapovalov
感谢您的回复。我认为这并不远离现有技术水平。它就像一种新型描述符。我阅读了几篇论文,发现这很有用,并被许多其他论文引用。但我仍然无法弄清楚如何有效地实现那篇论文。如果有人能帮助我给出一些提示以有效地实现它,那将非常有用。 - user570593

2

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接