图像的直方图
图像的直方图处理是从概率统计的角度出发,对图像灰度级的概率分布进行变换,从而达到使图像细节丰富、动态范围较大、便于观测和理解的目的。
直方图处理是多种空间域处理技术的基础,可以直接用于图像的增强以及图像的压缩和分割。在灰度级范围为[0,L-1]的数字图像的直方图可以表示为:
其中rk是第k级灰度值,nk是图像中灰度为rk的像素的个数,M和N分别是图像的行和列数。
我们首先对下列图像进行观测。我们可以看到,在亮图像中,直方图的分量集中在灰度级的高端,而在暗图像中,中直方图的分量倾向于灰度级的低端。低对比度的图像具有较窄的直方图,且集中于灰度级的中部。对于单色图像,这就意味着暗淡,好像灰度被冲淡了一样。而高对比度的图像的直方图的分量覆盖了很宽的灰度级范围,而且像素的分布比较均匀。因此,若一幅图像的像素倾向于占据整个可能的灰度级并且分布均匀,那么该图像会有高对比度的外观并展示灰色调的较大变化。最终效果将是一幅灰度细节丰富且动态范围较大的图像。
下面是图像直方图绘制的Matlab程序,其中numel(image)是求取图像的M×N的值,imhist是求取图像的直方图,这里进行了归一化处理,使每个值处于[0,1]范围内。bar()用于显示直方图。
clear
clc
%%读取图像数据
Cells_bright=imread('细胞亮.jpg');
Cells_dark=imread('细胞暗.jpg');
Cells_low_contrast=imread('细胞低对比度.jpg');
Cells_hight_contrast=imread('细胞高对比度.jpg');
%%灰度化
Cells_bright_gray=rgb2gray(Cells_bright);
Cells_dark_gray=rgb2gray(Cells_dark);
Cells_low_contrast_gray=rgb2gray(Cells_low_contrast);
Cells_hight_contrast_gray=rgb2gray(Cells_hight_contrast);
%%求直方图
h_bright =imhist(Cells_bright_gray)/numel(Cells_bright_gray);
h_dark =imhist(Cells_dark_gray)/numel(Cells_dark_gray);
h_lo