在颜色直方图中,我们通常在每个颜色通道中提取直方图,这并不包含颜色如何共现的信息,例如有多少像素具有强度I(100,200,50)?
有没有什么方法可以构建一个表示颜色共现的直方图?(例如,有多少像素包含强度值(200,100,50)?)
我正在寻找这种类型直方图的改进版本,例如像这篇论文中提到的
回答:
由于你想将其用作进一步识别的图像级描述符,简单的分箱可能不是最佳选择,因为颜色在你的样本中分布不均匀。
典型的方法是词袋模型。你从整个图像集(三维空间中的点)中提取所有像素值,并使用某种聚类算法(如k-means或EM算法)对它们进行量化。假设你使用了K个聚类(这可能取决于你的目的和样本大小,你可以从K=100开始)。为了描述单个图像,你为每个像素找到最接近的聚类(所谓的视觉词),并构建具有K个箱的直方图,使每个箱的值是对应视觉词的像素数量。这就是你的描述符,你可以使用描述符上的欧几里得距离或χ²距离来比较图像。
请注意,根据你的平台,有很多聚类算法(甚至是词袋框架)的实现可用。OpenCV是最受欢迎的之一。请注意,根据你的问题,你也可以使用基于梯度的描述符,如HOG。