您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > 深圳大学图像的灰度变换与空域滤波
深圳大学实验报告课程名称:数字图像处理实验项目名称:图像的灰度变换与空域滤波学院:信息工程学院专业:电子信息工程指导教师:张坤华报告人:学号:班级:实验时间:2016.4.14实验报告提交时间:2016.4.20教务部制实验目的与要求:1、掌握Matlab显示直方图的方法。2、掌握Matlab对比度调整与灰度直方图均衡化的方法。3、理解图像滤波的基本定义及目的,掌握Matlab空域滤波的基本原理及方法。实验原理:1、MATLAB中灰度直方图的显示MATLAB图像处理工具箱提供了imhist函数来计算和显示图像的直方图,imhist函数的语法格式为:imhist(I,n)imhist(X,MAP)其中imhist(I,n)计算和显示灰度图像I的直方图,n为指定的灰度级数目,默认值为256。imhist(X,MAP)计算和显示索引色图像X的直方图,map为调色板。2、对比度调整如果原图像f(x,y)的灰度范围是[m,M],我们希望对图像的灰度范围进行线性调整,调整后的图像g(x,y)的灰度范围是[n,N],那么下述变换:[fxym]nMmgxyNn−+−−(,)=(,)就可以实现这一要求。MATLAB图像处理工具箱中提供的imadjust函数,可以实现上述的线性变换对比度调整。imadjust函数的语法格式为:J=imadjust(I,[low_inhigh_in],[low_outhigh_out])J=imadjust(I,[low_inhigh_in],[low_outhigh_out])返回原图像I经过直方图调整后的新图像J,[low_inhigh_in]为原图像中要变换的灰度范围,[low_outhigh_out]指定了变换后的灰度范围,灰度范围可以用[]空矩阵表示默认范围,默认值为[0,1]。不使用imadjust函数,利用matlab语言直接编程也很容易实现灰度图像的对比度调整。但运算的过程中应当注意以下问题,由于我们读出的图像数据一般是uint8型,而在MATLAB的矩阵运算中要求所有的运算变量为double型(双精度型)。因此读出的图像数据不能直接进行运算,必须将图像数据转换成双精度型数据。3、直方图均衡化直方图均衡化的目的是将原始图像的直方图变为均衡分布的形式,即将一已知灰度概率密度分布的图像,经过某种变换变成一幅具有均匀灰度概率密度分布的新图像,从而改善图像的灰度层次。MATLAB图像处理工具箱中提供的histeq函数,可以实现直方图的均衡化。对于灰度图像,histeq函数的基本调用格式为J=histeq(I,n)该函数返回原图像I经过直方图均衡化处理后的新图像J。n为指定的均衡化后的灰度级数,缺省值为64。对于索引图像,调用格式为:Newmap=histeq(X,map)返回值Newmap将是输出图像的新的调色板。利用matlab语言直接编程也很容易实现直方图均衡化处理。4、均值滤波均值滤波是在空间域对图像进行平滑处理的一种方法,易于实现,效果也挺好。设噪声η(m,n)是加性噪声,其均值为0,方差(噪声功率)为σ2,而且噪声与图像f(m,n)不相关。其有噪声的图像f’(m,n)为:f'(m,n)=f(m,n)+η(m,n)(4.1)经均值滤波处理后的图像g(m,n)为:(,)(,)(,)(,)1111(,)'(,)[(,)(,)](,)(,)ijsijsijsijsgmnfijfijijfijijNNNNηη∈∈∈∈=ΣΣ=ΣΣ+=ΣΣ+ΣΣ(4.2)其中s是(m,n)点的领域内的点集。除了对噪声有上述假定之外,该算法还基于这样一种假设:图像是由许多灰度值相近的小块组成。这个假设大体上反映了许多图像的结构特征。(4.2)式表达的算法是由某像素领域内各点灰度值的平均值来代替该像素原来的灰度值。可用模块反映领域平均算法的特征。模版沿水平和垂直两个方向逐点移动,相当于用这样一个模块与图像进行卷积运算,从而平滑了整幅图像。模版内各系数和为1,用这样的模版处理常数图像时,图像没有变化;对一般图像处理后,整幅图像灰度的平均值可不变。5、中值滤波中值滤波是一种非线性处理技术,能抑制图像中的噪声。它是基于图像的这样一种特性:噪声往往以孤立的点的形式出现,这些点对应的象素很少,而图像则是由像素数较多、面积较大的小块构成。在一维的情况下,中值滤波器是一个含有奇数个像素的窗口。在处理之后,位于窗口正中的像素的灰度值,用窗口内各像素灰度值的中值代替。例如若窗口长度为5,窗口中像素的灰度值为80、90、200、110、120,则中值为110,因为按小到大(或大到小)排序后,第三位的值是110。于是原理的窗口正中的灰度值200就由110取代。如果200是一个噪声的尖峰,则将被滤除。然而,如果它是一个信号,则滤波后就被消除,降低了分辨率。因此中值滤波在某些情况下抑制噪声,而在另一些情况下却会抑制信号。中值滤波很容易推广到二维的情况。二维窗口的形式可以是正方形、近似圆形的或十字形的。在图像增强的具体应用中,中值滤波只能是一种抑制噪声的特殊工具,在处理中应监视其效果,以决定最终是否采用这种方案。实施过程中的关键问题是探讨一些快速算法。MATLAB中提供了卷积运算的函数命令conv2,其语法格式为:C=conv2(A,B)C=conv2(A,B)返回矩阵A和B的二维卷积C。若A为ma×na的矩阵,B为mb×nb的矩阵,则C的大小为(ma+mb+1)×(na+nb+1)。MATLAB图像处理工具箱提供了基于卷积的图像滤波函数filter2。filter2的语法格式为:Y=filter2(h,X)其中Y=filter2(h,X)返回图像X经算子h滤波后的结果,默认返回图像Y与输入图像X大小相同。其实filter2和conv2是等价的。MATLAB在计算filter2时先将卷积核旋转180度,再调用conv2函数进行计算。fspecial函数用于创建预定义的滤波算子,其语法格式为:h=fspecial(type)h=fspecial(type,parameters)参数type指定算子类型,parameters指定相应的参数,具体格式为:type='average',为均值滤波,参数parameters为n,代表模版尺寸,用向量表示,默认值为[3,3]。type='gaussian',为高斯低通滤波器,参数parameters有两个,n表示模版尺寸,默认值为[3,3],sigma表示滤波器的标准差,单位为像素,默认值为0.5。type='laplacian',为拉普拉斯算子,参数parameters为alpha,用于控制拉普拉斯算子的形状,取值范围为[0,1],默认值为0.2。type='log',为拉普拉斯高斯算子,参数parameters有两个,n表示模版尺寸,默认值为[3,3],sigma为滤波器的标准差,单位为像素,默认值为0.5type='prewitt',为prewitt算子,用于边缘增强,无参数。type='sobel',为著名的sobel算子,用于边缘提取,无参数。type='unsharp',为对比度增强滤波器,参数alpha用于控制滤波器的形状,范围为[0,1],默认值为0.2。实验内容及要求1、显示图像A及其灰度直方图。用imadjust函数将它的灰度值调整到[0,1]之间,并观察调整后的图像与原图像的差别,调整后的灰度直方图与原灰度直方图的区别;改变灰度值调整范围,观察调整后的图像的变化及其与原图像的差别,调整后的灰度直方图的变化及其与原灰度直方图的区别;进一步利用改变灰度值调整范围,实现图像的反转。2、读取灰度图像B,用histeq函数将原始图像的灰度直方图均衡化,同时观察均衡化后的图像与前面图像的差别,均衡化后的灰度直方图与前面的灰度直方图的区别。3、给图像C加入高斯噪声,分别采用不同大小的模板对加有噪声的图像进行均值滤波,用一个图像处理对话框(subplot)显示原图像、加有噪声的图像及均值滤波的图像。比较结果。4、分别采用不同大小的模板对上述加有噪声的图像进行中值滤波,用一个图像处理对话框(subplot)显示原图像、加有噪声的图像及中值滤波的图像。比较结果。5、(选做内容)不调用histeq函数及imadjust函数,利用matlab语言直接编程实现图像的直方图均衡化处理。6、(选做内容)不调用工具箱的函数,自编程序,实现均值滤波和中值滤波。实验代码及结果:(一)代码:I=imread('A.tif');J=imadjust(I,[01],[10]);subplot(2,2,1),imshow(I)subplot(2,2,2),imshow(J)subplot(2,2,3),imhist(I)subplot(2,2,4),imhist(J)结果:(二)代码:I=imread('B.tif');J=histeq(I);subplot(2,2,1),imshow(I)subplot(2,2,2),imshow(J)subplot(2,2,3),imhist(I)subplot(2,2,4),imhist(J)(三)代码:I=imread('C.tif');J=imnoise(I,'gaussian',0.02);h=fspecial('average',[3,3]);I1=filter2(h,J);h=fspecial('average',[13,13]);I2=filter2(h,J);subplot(2,2,1),imshow(I),title('Ôͼ');subplot(2,2,2),imshow(J),title('¼Ó¸ß˹ÔëÉù');subplot(2,2,3),imshow(I1,[]),title('½øÐÐ[3x3]¾ùÖµ¹ýÂË')subplot(2,2,4),imshow(I2,[]),title('½øÐÐ[13x13]¾ùÖµ¹ýÂË')实验结果:(4)代码I=imread('C.tif');J=imnoise(I,'gaussian',0.02);I1=medfilt2(J,[3,3]);I2=medfilt2(J,[5,5]);I3=medfilt2(J,[10,10]);I4=medfilt2(J,[20,20]);subplot(3,2,1),imshow(I),title('原图');subplot(3,2,2),imshow(J),title('加高斯噪声');subplot(3,2,3),imshow(I1,[]),title('进行[3x3]中值过滤')subplot(3,2,4),imshow(I2,[]),title('进行[5x5]中值过滤')subplot(3,2,5),imshow(I3,[]),title('进行[10x10]中值过滤')subplot(3,2,6),imshow(I4,[]),title('进行[20x20]中值过滤')实验结果:(5)代码:I=imread('B.tif');J1=im2double(I)*255;[m,n]=size(J1);p=zeros(1,256);fork=1:256p(k)=sum(sum(J1==k-1))/(m*n);endfori=2:256p(i)=p(i)+p(i-1);endfori=1:256p(i)=round(p(i)*255);endfori=1:mforj=1:nJ1(i,j)=p(J1(i,j)+1);endendfigure();subplot(1,2,1),imshow(I);J1=im2uint8(J1/255);subplot(1,2,2),imshow(J1);实验结果:实验结论:由本次实验法,我学会了如何用Matlab显示直方图,如何进行图像对比度的调整与灰度直方图的均衡化处理。更深入学习了图像滤波的定义和意义,掌握了Matlab空间滤波的基本原理和方法,基本达到了实验要求。指导教师批阅意见:成绩评定:实验态度20分实验设计与操作50分实验报告30分指导教
本文标题:深圳大学图像的灰度变换与空域滤波
链接地址:https://www.777doc.com/doc-5047497 .html