1、图像直方图
直方图是对数据的集合 统计,并将统计结果分布于一系列预定义的 bins 中。这里的 数据 不仅仅指的是颜色灰度值 , 统计数据可能是任何能有效描述图像的特征(如梯度、方向等)。特别地,当图像直方图描述的是图像的各个灰度级的统计特性时,称之为灰度直方图。
结合灰度直方图了解直方图的一些具体细节(参考自OpenCV官网):
dims: 需要统计的特征的数目,仅统计灰度值(灰度图像)时dims=1,对于三通道图像dims=3。
bins: 每个特征空间 子区段 的数目,如:灰度图中每十六个连续的灰度值作为一个统计区间,则 bins = 16。
range: 每个特征空间的取值范围,灰度图像中, range = [0,255]。
2、颜色分布直方图的计算
OpenCV提供了计算图像直方图的API函数calcHist,其函数原型为:
void calcHist(const Mat* arrays,
int narrays,
const int* channels,
InputArray mask,
OutputArray hist,
int dims,
const int* histSize,
const float** ranges,
bool uniform=true,
bool accumulate=false )
1
2
3
4
5
6
7
8
9
10
parameters:
第一个参数:源输入(图像)数组,必须是深度和大小均相同的CV_8U或者CV_32F(即uchar或者float)图片,每一个可以是任意通道的;
第二个参数:源输入数组中的图片个数;
第三个参数:用来计算直方图的通道维数的数组,第一张图片的通道由0到arrays[0].channels()-1列出,第二张图片的通道从arrays[0].channels()到arrays[0].channels()+arrays[1].channels()-1,以