颜色直方图是在许多图像检索系统中被广泛采用的颜色特征。它所描述的是不同色彩在整幅图像中所占的比例,而并不关心每种色彩所处的空间位置,即无法描述图像中的对象或物体。颜色直方图特别适于描述那些难以进行自动分割的图像,直方图中的数值都是统计而来,描述了该图像中关于颜色的数量特征,可以反映图像颜色的统计分布和基本色调;直方图只包含了该图像中某一颜色值出现的频数,而丢失了某象素所在的空间位置信息。
在图像处理中考虑到量化直方图的很多问题便产生了主色调直方图的方法。因一幅图像中,往往少数几种颜色就涵盖了图像的大多数像素,而且不同颜色在图像中的出现概率是不同的,因此,可以通过统计图像中各种颜色出现的概率,选出最频繁出现的几种做为主色。使用主色并不会降低颜色匹配的效果,因为颜色直方图中出现频率很低的那些颜色往往不是图像的主要内容,从某种程度上讲,是对图像内容表示的一种噪声。
颜色直方图可以是基于不同的颜色空间和坐标系,颜色空间包括RGB、HSV、CMYK、HSL、HSB、HSI、Ycc、XYZ、Lab、YUV。最常用的颜色空间是RGB颜色空间,原因在于大部分的数字图像都是用这种颜色空间表达的。然而,RGB空间结构并不符合人们对颜色相似性的主观判断。因此,有人提出了基于HSV空间、Luv空间和Lab空间的颜色直方图,因为它们更接近于人们对颜色的主观认识。其中HSV空间是直方图最常用的颜色空间。它的三个分量分别代表色彩(Hue)、饱和度(Saturation)和值(Value)。
OpenCV对颜色直方图进行统计的代码如下所示,
#include <cv.h>
#include <highgui.h>
#in