在颜色直方图中,我们通常会提取每个颜色通道的直方图,但这并不包含颜色如何共存的信息,例如有多少像素具有强度I(100,200,50)?
是否有任何方法可以构建代表颜色共现的直方图?(有多少像素包含强度值(200,100,50)?)
我正在寻找一些改进版本的此类直方图,例如像这样的paper。
是否有任何方法可以构建代表颜色共现的直方图?(有多少像素包含强度值(200,100,50)?)
我正在寻找一些改进版本的此类直方图,例如像这样的paper。
你可以构建一个包含256^3个值的大直方图,或者对每个通道中的值进行量化(例如每个通道10个值),这将导致一个包含1000个条目的直方图。
由于您希望将其用作图像级描述符以进行进一步识别,因此简单的分箱可能不是最佳选择,因为颜色在样本中不均匀分布。
典型的方法是单词袋。您从整个图像集(3D空间中的点)中获取所有像素值,并使用某些聚类算法(如k-means或EM算法)对其进行量化。假设您使用了K个簇(可能取决于您的目的和样本大小,您可以从K=100开始)。要描述单个图像,您需要找到每个像素的最接近的簇(所谓的视觉词),并使用K个箱构建直方图,以便每个箱值都是对应于视觉词的像素数量。这就是您的描述符,您可以使用欧几里得距离或描述符上的χ²距离来比较图像。
注意,根据您的平台,有许多聚类算法(甚至是词袋框架)的实现可用。 OpenCV 是其中最受欢迎的之一。请注意,根据您的问题,您还可以使用基于梯度的描述符,如HOG。我认为你已经回答了自己的问题。
是的,可以构建这样的直方图。从实现的角度来看,它应该相当简单,因为通常 (r,g,b)
由32位表示,其中前三位分别是 r
、g
和 b
。