什么是灰度直方图:
在数字图像处理中,灰度直方图是一种计算代价非常小但很有用的工具,它概括了一幅图像的灰度级信息。灰度直方图是图像灰度级的函数,用来描述每个灰度级在图像矩阵中的像素个数或者占有率。
c++代码如下:
Mat calcGrayHist(const Mat & image)
{
Mat histogram = Mat::zeros(Size(256,1),CV_32SC1); //256对应的是0~255共计256个像素值
//注意,Size对应的是x和y,也就是第一个元数是矩阵的列数
int rows = image.rows; //输入图像的行数
int cols = image.cols; //输入图像的列数
for(int r =0;r<rows;r++)
{
for(int c = 0;c<cols;c++)
{
int index = int(image.at<uchar>(r,c); //获取每个点的像素值
histogram.at<int>(0,index) +=1; //获取了一个像素值,在相应的位置上加1
}
}
return histogram;
}
图像对比度是通过灰度级范围来度量的,而灰度级范围可通过观察灰度直方图得到,灰度级范围越大代表对比度越高;反之,对比度越低,低对比度的图像在视觉上给人的感觉是看起来不够清晰。