# define R_BIN 8
# define G_BIN 8
# define B_BIN 8
# define R_SHIFT 5
# define G_SHIFT 5
# define B_SHIFT 5
彩色图像直方图统计:彩色图像一般由RGB三个通道构成,每一个通道由8位构成,最大为255,如果直接根据三个通道每一个不同的值构造直方图很先得很庞大,为256*256*256=256三次方个bins,为简单起见,每一个通道设置8个bins,这样一来,每一个通道最大值256/8=32,即每一个通道划分8bins,每一个bins里面可以存放32个数,0-31,32-63,64-127,.....。224-255等。彩色RGB转化为一维总共8*8*8=512个bins,
r = image[(y*W+x)*3] >> R_SHIFT;
g = image[(y*W+x)*3+1] >> G_SHIFT;
b = image[(y*W+x)*3+2] >> B_SHIFT;
这里R_SHIFT, G_SHIFT,B_SHIFT宏定义5,右移5位,每一个R,G,B值除以32映射到相对应的8个bins中。0-31映射到bins1,32-63映射到bins2中......224-255映射到bins8中.
总结:对于每一个RGB像素值,通过计算都可以映射到唯一的index,根据index累加,将相应的核密度权值累加,统计出直方图。