图4.1
3.3直方图均衡化
直方图均衡化过程如下:
(1)计算原图像的灰度直方图Pr(rK);
(2)计算原图像的灰度累积分布函数sk,进一步求出灰度变换表; (3)根据灰度变换表,将原图像各灰度级映射为新的灰度级。 灰度直方图均衡化程序: %灰度直方图均衡化
I=imread('D:\\image\\bubbles.bmp');%读取图像 subplot(2,2,1);
Imshow(I);%显示图像 title('原图'); subplot(2,2,2);
imhist(I);%绘制图像的灰度直方图 title('原图的灰度直方图'); subplot(2,2,3);
J=histeq(I,64);%对图像进行均衡化处理,返回有64级灰度的图像J Imshow(J);%显示图像
title('原图直方图均衡化'); subplot(2,2,4);
imhist(J);%绘制图像的灰度直方图 title('均衡后的灰度直方图')
3
以下展示了直方图均衡化的效果:
图4.2
优势:能够使得处理后图像的概率密度函数近似服从均匀分布,其结果扩张了像素值的动态范围,是一种常用的图像增强算法。
不足:不能抑制噪声。
四、图像二值化
4.1图像二值化
图像的二值化处理就是将图像上的像素点的灰度值设置为0或255,也就是讲整个图像呈现出明显的黑白效果。首先,图像的二值化有利于图像的进一步处理,使图像变得简单,而且数据量减小,能凸显出感兴趣的目标的轮廓。其次,要进行二值图像的处理与分析,首先要把灰度图像二值化,得到二值化图像。
图像二值化程序:
%图像二值化 (选取一个域值,(5) 将图像变为黑白图像) I=imread('beauty.tif');
bw=im2bw(I,0.5);%选取阈值为0.5 subplot(1,3,1); imshow(I);
4
title('原图'); subplot(1,3,2); imshow(bw);
title('显示二值图像'); J=find(I<150); I(J)=0;
J=find(I>=150); I(J)=255;
subplot(1,3,3); imshow(I);
title(' 图像二值化 ( 域值为150 ) '); 下图为图像二值化的效果:
图 4.3
五、对比度增强
5.1对比度增强
对比度增强是按一定的规则修改输入图像每一个像素的灰度,从而改变图像灰度的动态范围。例如,观察图4.4可以发现,该图的对比度不高其灰度直方图没有低于35或高于210的值,如果将图像数据映射到整个灰度范围内,则图像的对比度将大大增大。
5
图4.4
5.2灰度调整
灰度调整程序: %imadjust函数
I=imread('D:\\image\\rice.bmp');%读取图像 subplot(2,2,1);
Imshow(I);%显示图像 title('原图'); subplot(2,2,2);
imhist(I);%绘制图像的灰度直方图 title('原图的灰度直方图'); subplot(2,2,3);
J=imadjust(I,[0.3 0.7],[]);%对图像进行灰度变换 Imshow(J);%显示图像 title('原图直方图均衡化'); subplot(2,2,4);
imhist(J);%绘制图像的灰度直方图 title('均衡后的灰度直方图')
以下展示了常用对比度扩展法的结果:
6
图4.5
从图4.5【原图】可以看出原始图像动态范围较小,整体较暗,反映在直方图上像素主要集中在低灰度的一侧。经过对比度调整,图像变亮。
5.3对数变换
对数变化常用来扩展低值灰度,压缩高值灰度,这样可以使低值灰度的图像细节更容易看清。
对数变换程序: %对数变换
I=imread('beauty.tif');%读取图像
I=mat2gray(I);%对数变换不支持uint8类型数据,将一个矩阵转化为灰度图像的数据格式(double)
J=log(I+1); subplot(1,2,1);
Imshow(I);%显示图像 title('原图'); subplot(1,2,2); Imshow(J);
title('对数变换后的图像')
7