一、什么是灰度级直方图&&灰度直方图的性质
灰度级直方图是反应一幅图像中的灰度级与出现这种灰度的概率之间的图形。如下图,其中所有像素点出现频率累加值为1:
性质1:它只反应该图像中不同灰度值出现的次数,而未反映某一灰度值像素所在的位置。也就是说,它只包含了该图像中某一个灰度值的像素出现的概率,而丢失了其所在位置信息。
性质2:任何一幅图像,都能唯一地确定出一幅与它对应的直方图,但不同的图像,可能有相同的直方图。
二、为什么要做直方图&&直方图均衡化
大多数自然图像,其灰度分布集中在较窄的区间,引起图像细节不够清晰,采用直方图修正后可使图像的灰度间距拉开或使灰度分布均匀,从而增大反差,使图像细节清晰,达到增强的目的。直方图均衡化的基本思想是把原始图像的直方图变换成均匀分布的形式。从而提高图像的对比度。
下图做直方图后拉开了灰度间距,使得图像变清晰。
三、实例
对于有些不适合做直方图均衡化的图像如何通过处理后再做直方图均衡化,增加图像对比度。如下图所示:
对于以上图像做分割非常不清晰,需要对每一个像素点进行处理后再做直方图均衡化:
Mat org = imread("../../饮料瓶字符识别/东方树叶(红茶)/Pos1.bmp", 0);
Mat ProcessImage = org.clone();
// 对每个像素点处理
for (int i = 0; i < org.rows; i++)
{
for (int j = 0; j < org.cols; j++)
{
if (org.at<unsigned char>(i, j) > 150 || org.at<unsigned char>(i, j) < 40)
ProcessImage.at<unsigned char>(i, j) = 95;
}
}
// 直方图均衡化
Mat heqResult;
equalizeHist(ProcessImage, heqResult);
得到的效果图如下所示: