实验十一  Matlab在数字图像处理中的应用——图像增强
一、 实验目的
1.了解图像增强的概念、目的、意义和方法。
2. 掌握图像直方图显示函数imhist的用法。
3.掌握图像增强技术中的灰度变换法。
4. 掌握图像增强技术中的直方图均衡化方法。
二、 实验原理
1. 图像增强的概念和方法
图像增强是指按特定的需要突出图像中的某些信息,同时削弱或消除某些无关的信息,从而有目的地增强图像的整体或局部特征。增强后的图像往往能够增强对待殊信息的识别能力,改善图像的视觉效果,让观察者能够看到更加直接、清晰、适于分析的信息。因此,图像增强技术对已很理想的图像而言不太有效果,但对一些失真的图形则有明显的成效。
常用的图像增强技术有用于扩展对比度的灰度变换、直方图均衡化、图像平滑滤波、图像锐化等。图像增强没有固定不变的理论方法,增强质量主要是人根据增强目的而由主观视觉评定的,因而一般在得到满意的结果之前都会进行多次反复的试验和修改。从根本上讲,这些方法都是以图像的灰度映射变换为基础的,只是所用的映射变换类型(变换函数)不同。灰度变换主要是利用点运算来修改图像像素的灰度,是一种基于图像变换的操作;而平滑和锐化都是利用模板来修改像素灰度,是基于图像滤波的操作。
本实验以增强图像对比度的灰度变换和直方图均衡化方法为主要内容。
2. 像素值及其统计特性
图像灰度变换的基本原则是利用某种变换函数对图像进行点运算,从而修改图像像素的灰度值。显然,为了选择一种合理的变换函数,首先要对原始图像的像素灰度值有个大概的了解,然后根据像素的统计特性来确定需要的变换函数类型。直方图是灰度变换技术中最常用的统计像素特性的描述方式,除此之外还有单个点的像素值、某一线段上的像素灰度分布、图像的等高线图等方式。MATLAB图像处理工具箱提供了许多返回图像数据矩阵统计信息的函数。下面仅介绍其中的pixvalimhist函数的功能和用法。
pixval函数
使用pixval函数必须首先显示图像,然后输入命令
pixval on
pixval将在图形窗口的底部自动添加一个黑的状态栏,这个状态栏将显示当前鼠标所在像素的空间坐标xy以及该像素的颜数据。退出交互操作,可输入pixval off命令。注意,对于索引图像,pixval函数显示的是颜表中储存的RGB分量值,而非数据矩阵的元素值;对于强度图像显示的是像素的灰度值。
imhist函数
该函数的作用是显示图像的直方图(Histogram)。图像的直方图是一个显示灰度图像或索引图像像素分布情况的图表。图像直方图函数imhist通过使用n个等间隔的柱(每个柱代表一个亮度值或像素值的范围)来创建这个图表,然后计算每个范围内的像素个数。用法:
imhist(I, n)
作用是显示强度图像或者二值图像的直方图。I是图像数据矩阵,n代表柱的数目,缺省时系统自动选取256柱,但是对于二值图,n只能取2。例如:
I=imread('rice.png');
subplot(1,2,1),imshow(I);
subplot(1,2,2),imhist(I,64)    % 绘制64根柱的直方图 
pixval on   
结果如图1所示,其中横坐标是亮度值或灰度值,纵坐标代表每个亮度区间(对应一个柱)的像素个数。根据直方图显示,灰度值100附近出现了一个高峰,这个高峰对应于米粒图像中的背景像素,这点可以通过pixval on命令验证。当鼠标在背景中移动时,黑状态栏中显示背景像素的灰度值在100附近变化。
1  强度图像rice.png及其直方图
imhist(X, Map)
作用是显示索引图像的直方图。X是图像数据矩阵,Map是图像的图矩阵,即颜表。
[X, map]=imread('forest.tif');
imhist(X,map)
结果如图2所示。其中横坐标是像素值,条显示Map中的颜表(256),像素值和颜表是一一对应的;纵坐标是像素个数。
2 索引图像forest.tif的直方图
3.  灰度变换
灰度变换指的是将原图像的灰度范围[m,M]调整为[n,N],以改变图像的对比度。MATLAB图像处理工具箱中提供的imadjust函数,可以实现上述对比度调整。imadjust函数的语法格式为:
J = imadjust(I,[low_in  high_in], [top_out  bottom_out])
其中I代表原强度图像的数据矩阵,J是经过调整后的新图像数据,[low_in  high_in]为原图像中要变换的灰度范围,[bottom _out  top _out]指定了变换后的灰度范围,如图3所示:原图像中像素灰度小于或等于low的,全部映射为bottom,像素灰度高于或等于high的,映射为top,其余的按线性映射。
注意:无论I是哪一种数据类型的,指定的灰度值必须是0~1范围内的数值。如果I是uint8类型,那么真正用于判断的灰度值将是指定值乘以255的结果;如果I是uint16类型的,那么真正用于判断的灰度值将是指定值乘以65535的结果。    3 灰度变换的输入输出强度
灰度范围可用空矩阵[ ]表示,代表默认范围[0, 1]。                                     
使用imadjust函数调整图像的灰度一般有两个步骤:
(1)  观察图像的直方图,判断灰度范围。
(2)  将灰度范围转换为0~1之间的分数,使得灰度范围可以通过向量[low_in  high_in]传递给imadjust函数。
4. 直方图均衡化(Histogram Equalization)
直方图均衡化是一种使输出图像直方图近似为均匀分布,从而改变图像对比度的变换算法。在MATLAB中,可以调用函数histeq自动完成图像的直方图均衡化。不同于imadjust函数,该函数将自动调整图像的亮度和对比度,不需要指定调整的灰度区间。
对于灰度图像,该函数的调用格式:
Jhisteq(In)
其中,IJ是输入、输出图像的数据矩阵,n表示输出图像的灰度级数目,是一个可选参数,缺省值为64.
对于索引图像,其调用格式如下:
      newmaphisteq(x,map)
Xmap是输入图像数据矩阵和图矩阵(颜表);返回值newmap是输出图像的颜表。
三、 实验内容
1. 灰度变换增强图像的对比度
首先读入MATLAB图片库中的强度图像pout.tif,再利用灰度变换函数imadjust调整图像的对比度,使图像更清晰。程序如下:
I=imread('pout.tif');
subplot(1,2,1);imshow(I);    % 显示图像
subplot(1,2,2);imhist(I,64)    % 显示直方图
pixval on            % 开启单点像素统计交互工具
4 灰度图像pout.tif及其直方图
结果如图4所示,可见这是一幅低对比度的灰度图像,直方图给出了图像像素的统计结果:① 像素亮度的分布区间很窄,大约集中在80~150之间,高亮度和低亮度的像素都极少,因此图像的对比度较差。
图像亮度有两个主要的分布区域,大概是80~100130~150,前者对应图像背景像素的亮度区间,后者对应人物像素的亮度区间。这点通过pixval函数对像素逐点统计可知。
要增加上述图像的对比度,就必须增加高亮度和低亮度的像素数目,使得调整后图像直方图中的亮度分布扩展到整个亮度区间[0 255]。具体做法是:利用imadjust函数,将亮度在80以下的像素统统映射为亮度0,亮度在140以上的像素映射为亮度255,即
注意,使用imadjust函数时必须把上述亮度值转换为分数值(相对亮度):80/255≈0.3; 140/255≈0.55;
J=imadjust(I,[0.3 0.55],[0,1]);
figure;subplot(1,2,1);imshow(J);
subplot(1,2,2);imhist(J,64)
调整后的图像以及直方图如图5所示。调整后图像直方图扩展到了整个亮度区间,使得图像的对比度增加了。需要指出的是,在指定灰度区间的时候,要根据实际效果反复调整,请尝试改变灰度的输入区间,观察调整图像的实际效果
5 调整后的图像及其直方图
2. 灰度变换减小图像的对比度
在有些情况下,也可以减小图像的对比图,以突出图像的某些特征。
I=imread('cameraman.tif');
imshow(I)    % 读入强度图像并显示
figure,imhist(I,64)
 
(a)                              (b)
6 图像对比度调整前、后显示效果对比。(a) 调整前;(b) 调整后
结果如图6a7a所示。图中人物的大衣颜太暗而不能显示出衣服上的细节,例如纽扣。下面通过imadjust函数减小图像对比度,增加图像亮度,显示衣服细节特征。
J=imadjust(I,[0 0.2],[0.25 1]);
imshow(J)
figure,imhist(J,64)
结果如图6b7b所示。通过图7中直方图的对比,调整后图像的直方图变窄,对比度下降。而图6的对照结果表明上述操作使得图像的亮度增加,同时也使得图像灰暗部分的动态变化范围大大增加,从而使得外衣上的细节比较容易观察。然而要注意,原始图像中所有亮度值大于51(0.2*255)的像素均映射为调整后图像中的亮度值255,所以变换后的图像看起来被“洗白”了。再次强调,imadjust函数中的指定的灰度范围是根据实际效果多次调整的结果,不一定是最佳值。请大家改变灰度值范围,观察结果的变化
(a)                              (b)
7 图像对比度调整前、后直方图对比。(a) 调整前;(b) 调整后
局部直方图均衡化3. 使用直方图均衡化方法重做任务1。显示调整前、后的图像以及直方图。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。