电子科技大学实验报告学生姓名: XXX学号: XXXXXXXXXX指导教师: XXX日期: 2010年3月25日一、实验室名称: 光电楼327机房二、实验项目名称: 图像增强三、实验原理:图像在生成、获取、传输等过程中,受照明光源性能、成像系统性能、通道带宽和噪声等因素的影响,造成对比度偏低、清晰度下降、并引入干扰噪声。
因此,图像增强的目的,就是改善图像质量,获得更适合于人眼观察、或者对后续计算机处理、分析过程更有利的图像。
图像增强是有选择地突出某些对人或计算机分析有意义的信息,抑制无用信息,提高图像的使用价值。
1、对数与指数变换提高对比度(1) 对数变换,低灰度区扩展,高灰度区压缩。
(2) 指数变换,高灰度区扩展,低灰度区压缩。
对合适的图像选择对数变换或者指数变换,均可提高图像对比度。
cb y x f a y x g ln ]1),(ln[),(++=1),(]),([-=-a y x f c b y x g2、中值滤波中值滤波法是把邻域内所有像素按灰度顺序排列,然后取中间值作为中心像素的输出。
中值滤波可以有效的去除椒盐噪声。
四、实验目的:1、熟练掌握各种灰度域变换的图像增强原理及方法;2、熟悉直方图均衡化和直方图规格化的原理及方法;3、了解空域滤波中常用的平滑和锐化滤波器;4、熟悉和掌握利用Matlab 工具进行图像的读、写、显示及基本的图像处理步骤;5、利用Matlab 工具进行图像增强处理。
五、实验内容:1、读取一幅低对比度图像,分别对其进行对数变换与指数变换。
进行变换前,应根据需要分别选取合适的指数和对数函数(即确定a、b、c 等调节因子),画出指数和变换曲线。
程序设计及处理过程中,要求在同一窗口中分别显示原始图像、变换结果及其直方图。
2、读取一幅含有椒盐噪声的被污染图像,并对其进行中值滤波处理。
要求在同一窗口中显示原始图像及中值滤波的结果。
(选作内容)六、实验器材(设备、元件):计算机,Matlab软件七、实验步骤:1、对数与指数变换提高对比度⑴打开计算机,从计算机中选择一幅对比度较低的图像作为原始图像。
⑵观察图像类型,选择合适的提高对比度的方法,指数变换或者对数变换。
⑶画出程序设计流程图(图一),在Matlab中输入代码调入图像。
⑷选择将图像进行指数变换,设置常数a,b,c,并输出显示变换曲线。
⑸输出显示原图像和变换后图像以及其直方图,观察直方图和图像,看是否达到提高对比度的效果,若未达到,重新设置常数a,b,c。
直到图像对比度提高,并且变换后直方图上灰度分布较原直方图广。
⑹记录下数值,并将各图存储。
图一图二2、中值滤波⑴打开计算机,从计算机中选择一幅含有椒盐噪声的图像作为原始图像。
⑵画出程序设计流程图(图二),在Matlab中输入代码调入图像。
⑶用3*3的窗口对原图进行中值滤波。
⑷用窗口长度为13的菱形窗口对原图进行中值滤波。
⑸用窗口长度为21的窗口对原图进行中值滤波。
⑹在同一窗口中分别显示原图和三种不同滤波后的图像并进行比较。
⑺记录整理实验报告,关闭计算机。
八、实验结果及分析1、 对数变换与指数变换提高对比度图三50100150200250040.20.40.60.8104图四如图,图三为指数变换曲线图,由图可见,地灰度变换较为缓慢,高灰度变换较快,对此图高灰度区域偏多,故用指数变换合适。
图四左上角为原图,右上角为对应直方图,左下角为变换后图像,右下角为对应变换后直方图。
由左边两图直观比较可以看出变换后图像对比度比变换前高。
再由右边两直方图比较可得出变换后图像直方图灰度分布较广,变换后图像最大灰度值与最小灰度值之差比原图大。
故对比度得到了提高。
但由于变换,导致了部分灰度细节的丢失,这也是不可避免的。
综上所述:用指数变换对此图像进行处理后对比度得到了明显改善。
2、中值滤波图五如图所示,图五左上角为带有椒盐噪声的原图,右上角为进行3*3窗口中值滤波后的图像,左下角为进行窗口长度13的菱形中值滤波后的图像,右下角为进行窗口长度21的中值滤波后的图像。
由四幅图像比较观察后可以看出,进过3*3窗口中值滤波后的图像比原图有了明显的改善,绝大多数椒盐噪声被去除。
进行窗口长度13的菱形中值滤波后的图像比3*3窗口又些许改善,椒盐噪声进一步减少。
进行窗口长度21的中值滤波后的图像又有少量改善,但已很不明显,图像有少许模糊。
综上所述:中值滤波可以在保留细节的情况下去除图像中的椒盐噪声。
并且窗口长度越大,噪声去除效果越好。
九、实验结论:1、通过实验,可知对图像的指数变换可以提高图像对比度。
2、通过实验,可知对图像进行中值滤波可以去除图像椒盐噪声。
十、总结及心得体会:1、对于不同的图像,采取非线性灰度变化的方法不同得到的效果不同。
2、RGB 图像需要灰度化处理。
3、对像素进行处理时,需要转换类型为双精度型;以免因数据类型问题造成计算精度误差。
4、处理完毕,显示前需要再次转换为Matlab 认可的图像类型,方可得到正确的显示结果。
5、对于中值滤波,只对椒盐噪声效果较好,高斯噪声的图像不能处理。
十一、实验改进意见或建议所给图像图像类型较少了些,可以多提供点图像供选择。
十二、思考题:1、图像经过对数变换与指数变换后,变换结果有什么差异?答:图像经过指数变换后,灰度较高的区域灰度变换较为明显,变化大,灰度较低的区域变化小。
图像经过对数变换后,灰度较低的区域灰度变换较为明显,变化大,而灰度高的区域变化小。
但两种变化均有改善对比度的作用。
2、一幅图像的直方图反映了图像的什么信息,它有哪些性质?直方图均衡化的主要作用是什么?答:直方图描述了图像中像素的灰度级分布,表示了图像中不同灰度级像素出现的次数或者概率密度。
直方图的性质:①直方图是图像最基本的统计特征②直方图对应概率密度函数③任一特定的图像有唯一的直方图,但反之不成立④整个图像的直方图是部分图像之和直方图均衡化是将原图像的直方图通过变换函数修正为均匀的直方图,然后按均衡直方图修正原图像。
图像均衡化处理后,图像的直方图是平直的,即各灰度级具有相同的出现频数,那么由于灰度级具有均匀的概率分布,图像看起来就更清晰了。
3、简述中值滤波的优、缺点?答:优点:1、对离散阶跃信号、斜声信号不产生作用,对点状噪声和干扰脉冲有良好的抑制作用。
2、能保持图像边缘,使原始图像不产生模糊。
缺点:1、对高斯噪声无能为力;2、计算比较费时,需研究快速算法。
十二、源程序代码:1、对数与指数变换:A=imread('d:\baby.jpg');x=0:255;a=80,b=1.8,c=0.009;B=b.^(c.*(double(A)-a))-1; %做指数变换y=b.^(c.*(x-a))-1; %指数变换曲函数subplot(2,2,1)imshow(A)subplot(2,2,2)imhist(A)subplot(2,2,3)imshow(B)subplot(2,2,4)imhist(B)figure,plot(x,y) %指数变换曲线图2、中值滤波:img=imread('d:\jiao.jpg');[width,height]=size(img);a=zeros(1,9);newimg=zeros(width,height);newimg2=zeros(width,height);newimg3=zeros(width,height);%3*3窗口中值滤波for x = 2:width-1,for y = 2:height-1,a(1,1)=img(x-1,y-1);a(1,2)=img(x,y-1);a(1,3)=img(x+1,y-1);a(1,4)=img(x-1,y);a(1,5)=img(x,y);a(1,6)=img(x+1,y);a(1,7)=img(x-1,y+1);a(1,8)=img(x,y+1);a(1,9)=img(x+1,y+1);for temp1 = 1 : 8, %冒泡法排序for temp2 = 1 : (9-temp1),if(a(temp2)>a(temp2+1))temp=a(temp2);a(temp2)=a(temp2+1);a(temp2+1)=temp;endendendnewimg(x,y)=uint8(a(5));endend%窗口长度为13菱形中值滤波for x = 3:width-2,for y = 3:height-2,b(1)=img(x,y-2);b(2)=img(x-1,y-1);b(3)=img(x,y-1);b(4)=img(x+1,y-1);b(5)=img(x-2,y);b(6)=img(x-1,y);b(7)=img(x,y);b(8)=img(x+1,y);b(9)=img(x+2,y);b(10)=img(x-1,y+1);b(11)=img(x,y+1);b(12)=img(x+1,y+1);b(13)=img(x,y+2);for temp1 = 1 : 12, %冒泡法排序for temp2 = 1 : (12-temp1),if(b(temp2)>b(temp2+1))temp=b(temp2);b(temp2)=b(temp2+1);b(temp2+1)=temp;endendendnewimg2(x,y)=uint8(b(7));endend%窗口长度为21的中值滤波for x = 3:width-2,for y = 3:height-2,c(1)=img(x-1,y-2);c(2)=img(x,y-2);c(3)=img(x+1,y-2);c(4)=img(x-2,y-1);c(5)=img(x-1,y-1);c(6)=img(x,y-1);c(7)=img(x+1,y-1);c(8)=img(x+2,y-1);c(9)=img(x-2,y);c(10)=img(x-1,y);c(11)=img(x,y);c(12)=img(x+1,y);c(13)=img(x+2,y);c(14)=img(x-2,y+1);c(15)=img(x-1,y+1);c(16)=img(x,y+1);c(17)=img(x+1,y+1);c(18)=img(x+2,y+1);c(19)=img(x-1,y+2);c(20)=img(x,y+2);c(21)=img(x+1,y+2);for temp1 = 1 : 20, %冒泡法排序for temp2 = 1 : (20-temp1),if(c(temp2)>c(temp2+1))temp=c(temp2);c(temp2)=c(temp2+1);c(temp2+1)=temp;endendendnewimg3(x,y)=uint8(c(11));endendsubplot(2,2,1)imshow(img) %原图subplot(2,2,2)imshow(uint8(newimg)) %3*3窗口中值滤波subplot(2,2,3)imshow(uint8(newimg2)) %窗口长度为13的菱形中值滤波subplot(2,2,4)imshow(uint8(newimg3)) %窗口长度为21的中值滤波。