《数字图像处理实验报告(共50页).docx》由会员分享,可在线阅读,更多相关《数字图像处理实验报告(共50页).docx(50页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上数字图像处理实验报告 姓名 余贤锋 班级 计科1404 学号 指导老师 邹北骥 完成时间 2014年12月 12号 实验一 数字图像基本操作及灰度调整一、 实验目的 1.掌握读、写图像的基本方法; 2.掌握MATLAB语言中图像数据与信息的读取方法; 3.理解图像灰度变换处理在图像增强的作用; 4.掌握绘制灰度直方图的方法,理解灰度直方图的灰度变换及均衡二、 实验内容描述 copy 若干个图形文件如forest.tif和b747.jpg到MATLAB目录下work文件夹中。1. 熟悉MATLAB语言中对图像数据读取,显示等基本函数。特别需要熟悉下列命令:熟悉imrea
2、d()函数,imwrite()函数,size(函数subplot()函数:Figure()函数a.将MATLAB目录下work文件夹中的forest.tif图像文件读出.用到imread,imfinfo等文件,观察一下图像数据,了解一下数字图像在MATLAB中的处理就是处理一个矩阵。将这个图像显示出来(用imshow)。尝试修改map颜色矩阵的值,再将图像显示出来,观察图像颜色的变化。b将MATLAB目录下work文件夹中的b747.jpg图像文件读出,用rgb2gray()将其转化为灰度图像,记为变量B;2图像灰度变换处理在图像增强的作用; 读入不同情况的图像,请自己编程和调用Matlab函
3、数用常用灰度变换函数对输入图像进行灰度变换,比较相应的处理效果;3绘制图像灰度直方图的方法,对图像进行均衡化处理。 请自己编程和调用Matlab函数完成如下实验。a.显示B的图像及灰度直方图,可以发现其灰度值集中在一段区域,用imadjust函数将它的灰度值调整到0,1之间,并观察调整后的图像与原图像的差别,调整后的灰度直方图与原灰度直方图的区别。b.对B进行直方图均衡化处理,试比较与源图的异同。c.对B进行如图所示的分段线形变换处理,试比较与直方图均衡化处理的异同。三、 实验原理算法分析1. 灰度变换灰度变换是图像增强的一种重要手段,它常用于改变图象的灰度范围及分布,是图象数字化及图象显示的
4、重要工具。1) 图像反转灰度级范围为0, L-1的图像反转可由下式获得2) 对数运算:有时原图的动态范围太大,超出某些显示设备的允许动态范围,如直接使用原图,则一部分细节可能丢失。解决的方法是对原图进行灰度压缩,如对数变换:s = clog(1 + r),c为常数,r 03) 幂次变换:4) 对比拉伸:在实际应用中,为了突出图像中感兴趣的研究对象,常常要求局部扩展拉伸某一范围的灰度值,或对不同范围的灰度值进行不同的拉伸处理,即分段线性拉伸:其对应的数学表达式为:2. 直方图均衡化灰度直方图的横坐标是灰度级,纵坐标是该灰度级出现的频度,它是图像最基本的统计特征。依据定义,在离散形式下, 用rk代
5、表离散灰度级,用pr(rk)代表pr(r),并且有下式成立: 式中:nk为图像中出现rk级灰度的像素数,n是图像像素总数,而nk/n即为频数。直方图均衡化处理是以累积分布函数变换法为基础的直方图修正法。假定变换函数为 (a) Lena图像 (b) Lena图像的直方图图1-1 Lena图像及直方图当灰度级是离散值时,可用频数近似代替概率值,即式中:l是灰度级的总数目,pr(rk)是取第k级灰度值的概率,nk是图像中出现第k级灰度的次数,n是图像中像素总数。所以积分可以表示为下列累计分布函数(cumulative distribution function, CDF) 四、 实验步骤%改变map
6、颜色矩阵的值I,map=imread(forest.tif);imfinfo(forest.tif);imshow(I,map);title(原始图像);figure;imshow(I,map/2);title(减半图像);%将b747.jpg图像转化为灰度图像figure; subplot(1,2,1); i=imread(b747.jpg); imshow(i);title(原始图像); subplot(1,2,2); B=rgb2gray(i); imshow(B);title(灰度图像); figure; subplot(2,4,1); I=imread(b747.jpg); I=im
7、2double(I);imshow(I);title(原始图像); %图像反转subplot(2,4,2)E = imadjust(I,0 1,1 0);imshow(E);title(图像反转); %对数运算subplot(2,4,5);C = im2uint8(mat2gray(log(1+double(I);imshow(C);title(对数运算);%幂次变换subplot(2,4,6);D = im2uint8(mat2gray(double(I).0.5);imshow(D);title(幂次变换);%对比拉伸1subplot(2,4,7); r=0:0.001:1; s=r0.3
8、5.*r*0.3+r=0.35.*(0.105+2.6333*(r-0.35)+r0.65.*(1+0.3*(r-1); plot(r,s);title(2p,); subplot(2,4,3); T1=I0.35.*I*0.3+I=0.35.*(0.105+2.6333*(I-0.35)+I0.65.*(1+0.3*(I-1); imshow(T1);title(2I,); %对比拉伸2subplot(2,4,8); r=0:0.001:1; s=r=0.2*0.6+r0.4.*r+r0.2.*r; plot(r,s);title(6p,); subplot(2,4,4); T6=I=0.2
9、*0.6+I0.4.*I+I0.2.*I; imshow(T6);title(6I,); %三、(1)、显示B的图像及灰度直方图,可以发现其灰度值集中在一段区域,用imadjust函数将它的灰%度值调整到0,1之间,并观察调整后的图像与原图像的差别,调整后的灰度直方图与原灰度直方图的%区别。figure;subplot(2,2,1); I=imread(b747.jpg); B=rgb2gray(I); imshow(B);title(原始图像); subplot(2,2,3); imhist(B);title(原始直方图); subplot(2,2,2); C=imadjust(B,0,1,
10、0,1); imshow(C);title(处理图像); subplot(2,2,4); imhist(C);title(处理直方图); %(二)、对B进行直方图均衡化处理,试比较与源图的异同。figure;subplot(2,2,1); I=imread(b747.jpg); B=rgb2gray(I); imshow(B);title(原始图像); subplot(2,2,3); imhist(B);title(原始直方图); subplot(2,2,2); C=histeq(B); imshow(C);title(处理图像); subplot(2,2,4); imhist(C);titl
11、e(处理直方图); %(三)、对B进行如图所示的分段线形变换处理,试比较与直方图均衡化处理的异同figure;subplot(2,2,1); i=imread(b747.jpg); B=rgb2gray(i); imshow(B);title(原始图像);subplot(2,2,3); imhist(B);title(原始直方图);subplot(2,2,2); B=im2double(B); T=B0.125.*B*2+B=0.125.*(0.6*B+0.175)+B0.75.*(1.5*B-0.5); imshow(T);title(处理图像); subplot(2,2,4); imhis
12、t(T);title(处理直方图); 五、 实验结果分析与结论六、参考文献1Rafael C. Gonzalez & Richard E. Woods.北京:电子工业出版社. Digital Image processing, Third Edition,2011.6. 实验二 数字图像的空间域滤波和频域滤波一、实验目的1. 掌握图像滤波的基本定义及目的;2. 理解空间域滤波的基本原理及方法;3. 掌握进行图像的空域滤波的方法。4. 掌握傅立叶变换及逆变换的基本原理方法;5. 理解频域滤波的基本原理及方法;6. 掌握进行图像的频域滤波的方法。二、实验内容描述1. 平滑空间滤波:a) 读出eig
13、ht.tif这幅图像,给这幅图像分别加入椒盐噪声和高斯噪声后并与前一张图显示在同一图像窗口中;(提示:imnoise)b) 对加入噪声图像选用不同的平滑(低通)模板做运算,对比不同模板所形成的效果,要求在同一窗口中显示;(提示:fspecial、 imfilter或filter2)c) 使用函数imfilter时,分别采用不同的填充方法(或边界选项,如零填充、replicate、symmetric、circular)进行低通滤波,显示处理后的图像d) 运用for循环,将加有椒盐噪声的图像进行10次,20次均值滤波,查看其特点,显示均值处理后的图像;(提示:利用fspecial函数的averag
14、e类型生成均值滤波器)e) 对加入椒盐噪声的图像分别采用均值滤波法,和中值滤波法对有噪声的图像做处理,要求在同一窗口中显示结果。(提示:medfilt2)f) 自己设计平滑空间滤波器,并将其对噪声图像进行处理,显示处理后的图像;2. 锐化空间滤波a) 读出blurry_moon.tif这幅图像,采用33的拉普拉斯算子w = 1, 1, 1; 1 8 1; 1, 1, 1对其进行滤波;b) 编写函数w = genlaplacian(n),自动产生任一奇数尺寸n的拉普拉斯算子,如55的拉普拉斯算子w = 1 1 1 1 1 1 1 1 1 1 1 1 -24 1 1 1 1 1 1 1 1 1 1
15、 1 1c) 分别采用55,99,1515和2525大小的拉普拉斯算子对blurry_moon.tif进行锐化滤波,并利用式完成图像的锐化增强,观察其有何不同,要求在同一窗口中显示;d) 采用不同的梯度算子对blurry_moon.tif进行锐化滤波,并比较其效果e) 自己设计锐化空间滤波器,并将其对噪声图像进行处理,显示处理后的图像;3. 傅立叶变换a) 读出woman.tif这幅图像,对其进行快速傅立叶变换,分别显示其幅度图像和相位图像(提示:fft2, abs, angle)b) 仅对相位部分进行傅立叶反变换后查看结果图像(提示:记傅立叶变换的相位a,利用ifft2对exp(a*i)进行
16、反变换)c) 仅对幅度部分进行傅立叶反变换后查看结果图像d) 将图像的傅立叶变换F置为其共轭后进行反变换,比较新生成图像与原始图像的差异(提示:复数的共轭为)4. 平滑频域滤波a) 设计理想低通滤波器、巴特沃斯低通滤波器和高斯低通滤波器,截至频率自选,分别给出各种滤波器的透视图;b) 读出test_pattern.tif这幅图像,分别采用理想低通滤波器、巴特沃斯低通滤波器和高斯低通滤波器对其进行滤波(截至频率自选),再做反变换,观察不同的截止频率下采用不同低通滤波器得到的图像与原图像的区别,特别注意振铃效应。(提示:1)在频率域滤波同样要注意到填充问题;2)注意到(-1)x+y;)5. 锐化频
17、域滤波a) 设计理想高通滤波器、巴特沃斯高通滤波器和高斯高通滤波器,截至频率自选,分别给出各种滤波器的透视图;b) 读出test_pattern.tif这幅图像,分别采用理想高通滤波器、巴特沃斯高通滤波器和高斯高通滤波器对其进行滤波(截至频率自选),再做反变换,观察不同的截止频率下采用不同高通滤波器得到的图像与原图像的区别。三、实验原理算法分析1.空间域增强空间域滤波是在图像空间中借助模板对图像进行领域操作,处理图像每一个像素的取值都是根据模板对输入像素相应领域内的像素值进行计算得到的。空域滤波基本上是让图像在频域空间内某个范围的分量受到抑制,同时保证其他分量不变,从而改变输出图像的频率分布,
18、达到增强图像的目的。空域滤波一般分为线性滤波和非线性滤波两类。线性滤波器的设计常基于对傅立叶变换的分析,非线性空域滤波器则一般直接对领域进行操作。各种空域滤波器根据功能主要分为平滑滤波器和锐化滤波器。平滑可用低通来实现,平滑的目的可分为两类:一类是模糊,目的是在提取较大的目标前去除太小的细节或将目标内的小肩端连接起来;另一类是消除噪声。锐化可用高通滤波来实现,锐化的目的是为了增强被模糊的细节。结合这两种分类方法,可将空间滤波增强分为四类:线性平滑滤波器(低通)非线性平滑滤波器(低通)线性锐化滤波器(高通)非线性锐化滤波器(高通)空间滤波器都是基于模板卷积,其主要工作步骤是:1) 将模板在图中移
19、动,并将模板中心与图中某个像素位置重合;2) 将模板上的系数与模板下对应的像素相乘;3) 将所有乘积相加;4) 将和(模板的输出响应)赋给图中对应模板中心位置的像素。2.平滑滤波器1) 线性平滑滤波器线性低通平滑滤波器也称为均值滤波器,这种滤波器的所有系数都是正数,对33的模板来说,最简单的是取所有系数为1,为了保持输出图像任然在原来图像的灰度值范围内,模板与象素邻域的乘积都要除以9。MATLAB 提供了fspecial 函数生成滤波时所用的模板,并提供filter2 函数用指定的滤波器模板对图像进行运算。函数fspecial 的语法格式为:h=fspecial(type);h=fspecia
20、l(type,parameters);其中参数type 指定滤波器的种类,parameters 是与滤波器种类有关的具体参数。表2.1 MATLAB中预定义的滤波器种类MATLAB 提供了一个函数imnoise 来给图像增添噪声,其语法格式为:J=imnoise(I,type);J=imnoise(I,type,parameters);参数type 指定噪声的种类,parameters 是与噪声种类有关的具体参数。参数的种类见表2.2。表2.2 噪声种类及参数说明2) 非线性平滑滤波器中值滤波器是一种常用的非线性平滑滤波器,其滤波原理与均值滤波器方法类似,但计算的非加权求和,而是把领域中的图像
21、的象素按灰度级进行排序,然后选择改组的中间值作为输出象素值。MATLAB 提供了medfilt2 函数来实现中值滤波,其语法格式为:B=medfilt2(A,m n);B=medfilt2(A);其中,A 是原图象,B 是中值滤波后输出的图像。m n指定滤波模板的大小,默认模板为33。3.锐化滤波器图像平滑往往使图像中的边界、轮廓变得模糊,为了减少这类不利效果的影响,需要利用图像锐化技术,使图像的边缘变得清晰。1) 线性锐化滤波器线性高通滤波器是最常用的线性锐化滤波器。这种滤波器的中心系数都是正的,而周围的系数都是负的,所有的系数之和为0。对33 的模板来说,典型的系数取值为:-1 -1 -1
22、;-1 8 -1;-1 -1 -1事实上这是拉普拉斯算子。语句h=-fspecial(laplacian,0.5)得到的拉普拉斯算子为:h =-0.3333 -0.3333 -0.3333-0.3333 2.6667 -0.3333-0.3333 -0.3333 -0.3333拉普拉斯算子的数学定义:2) 非线性锐化滤波邻域平均可以模糊图像,因为平均对应积分,所以利用微分可以锐化图像。图像处理中最常用的微分方法是利用梯度。常用的空域非线性锐化滤波微分算子有sobel 算子、prewitt 算子、log 算子等。4.频域增强频域滤波分为低通滤波和高通滤波两类,对应的滤波器分别为低通滤波器和高通滤
23、波器。频域低通过滤的基本思想: F(u,v)是需要钝化图像的傅立叶变换形式,H(u,v)是选取的一个低通过滤器变换函数,G(u,v)是通过H(u,v)减少F(u,v)的高频部分来得到的结果,运用傅立叶逆变换得到钝化后的图像。理想低通滤波器(ILPF)具有传递函数: 其中,D0为指定的非负数,D(u,v)为(u,v)到滤波器的中心的距离。D(u,v,)=D0的点的轨迹为一个圆。n阶巴特沃兹低通滤波器(BLPF)(在距离原点D0处出现截至频率)的传递函数为 与理想地通滤波器不同的是,巴特沃兹率通滤波器的传递函数并不是在D0处突然不连续。 高斯低通滤波器(GLPF)的传递函数为 其中,为标准差。相应
24、的高通滤波器也包括:理想高通滤波器、n阶巴特沃兹高通滤波器、高斯高通滤波器。给定一个低通滤波器的传递函数 通过使用如下的简单关系,可以获得相应高通滤波器的传递函数: 四、实验步骤f=imread(eight.tif);%读取函数subplot(1,3,1),imshow(f); title(原图); f1=imnoise(f,gaussian,0.01,0.05);%图像加噪subplot(1,3,2),imshow(f1); title(加高斯噪声图像);f2=imnoise(f,salt & pepper,0.1);%给图像加椒盐噪声subplot(1,3,3),imshow(f2);ti
25、tle(椒盐噪声图像); a(1:3,1:3)=1;p=length(f1); M,N=size(f1); X1=double(f1); X2=X1; Y=zeros(M,N); funBox=zeros(3,3); for i=1:p-2 for j=1:p-2 c=X1(i:i+2,j:j+2).*a; s=sum(sum(c); x2(i+(3-1)/2,j+(3-1)/2)=s/(9); end end d=uint8(x2); subplot(2,3,4),imshow(d); figure;I=imread(eight.tif); %读原图 J=imnoise(I,salt & p
26、epper,0.05); %加均值为0,方差为0.02的椒盐噪声K=imnoise(I,gaussian,0.01,0.02); %加均值为0.01,方差为0.02的高斯噪声。 subplot(1,3,1),imshow(I);title(原图); %显示原图subplot(1,3,2),imshow(J);title(加椒盐噪声图像);%显示有椒盐噪声图像 subplot(1,3,3),imshow(K);title(加高斯噪声图像); %显示有高斯噪声图像 %均值滤波J=imnoise(I,salt & pepper,0.05); %加均值为0,方差为0.05的椒盐噪声 h=ones(3,
27、3)/9; %定义邻域为33 J1= imfilter(J,h); %对有椒盐噪声图像进行33方形窗口均值滤波 h=ones(7,7)/49;%定义邻域为77 J2= imfilter(J,h); %对有椒盐噪声图像进行77方形窗口均值滤波figure;subplot(1,3,1),imshow(J); title(加椒盐噪声图像);%显示有椒盐噪声图像 subplot(1,3,2),imshow(J1);title(33滤波图像);%显示滤波结果图J1 subplot(1,3,3),imshow(J2);title(77滤波图像);%显示滤波结果图J2 figure; J=imnoise(I
28、,salt & pepper,0.05); %加均值为0,方差为0.05的椒盐噪声 h=ones(5,5)/25; %定义邻域为55 J3= imfilter(J,h); %对有椒盐噪声图像进行55方形窗口均值滤波 red=medfilt2(J(:,:,1); %对有椒盐噪声图像红色分量中值滤波I1(:,:,1)= red; gre=medfilt2(J(:,:,2); %对有椒盐噪声图像绿色分量中值滤波I1(:,:,2)= green; blue=medfilt2(J(:,:,3); %对有椒盐噪声图像蓝色分量中值滤波I1(:,:,3)= blue; subplot(1,3,1),imsho
29、w(J);title(加椒盐噪声图像); %显示有椒盐噪声图像 subplot(1,3,2),imshow(J3);title(55均值滤波图像); %显示有均值滤波结果图J3 subplot(1,3,3),imshow(I1);title(中值滤波图像); %显示有中值滤波结果图I1 figure; K=imnoise(I,gaussian,0.01,0.02);%加均值为0.01,方差为0.05的高斯噪声 h=ones(5,5)/25; %定义邻域为55 J4= imfilter(K,h); %对高斯噪声图像进行55方形窗口均值滤波 red=K; red= medfilt2(red(:,:
30、,1); %对高斯噪声图像红色分量中值滤波I2(:,:,1)= red; green=K; green= medfilt2(green(:,:,2); %对高斯噪声图像绿色分量中值滤波I2(:,:,2)= green; blue=K; blue= medfilt2(blue(:,:,3); %对高斯噪声图像蓝色分量中值滤波I2(:,:,3)= blue; subplot(1,3,1),imshow(K);title(加高斯噪声图像); %显示高斯噪声图像subplot(1,3,2),imshow(J4);title(55均值滤波图像); %显示均值滤波结果图J4subplot(1,3,3),i
31、mshow(I2);title(中值滤波图像); %显示中值滤波结果图I2 K=imnoise(I,gaussian,0.01,0.02); %加均值为0.01,方差为0.05的高斯噪声 domain= 0 0 1 0 0;0 0 1 0 0;1 1 1 1 1;0 0 1 0 0;0 0 1 0 0/9;%自定义领域 K1= imfilter(K,domain); %对高斯噪声图像进行55方形窗口均值滤波subplot(1,3,1),imshow(K); title(加高斯噪声图像); %显示高斯噪声图像 subplot(1,3,2),imshow(J3);title(55均值滤波图像);
32、%显示自定义邻域的均值滤波结果图J3 subplot(1,3,3),imshow(K1);title(自定义均值滤波图像); %显示自定义领域的均值滤波结果图K1 f=imread(blurry_moon.tif);imshow(f); % 原图w8=1 1 1;1 -8 1;1 1 1; %33拉布拉斯算子g8=f-imfilter(f,w8,replicate); figure,imshow(g8); %33锐化空间滤波 %自动产生的拉布拉斯算子进行滤波w1 = genlaplacian(5);I=imread(blurry_moon.tif);T=double(I);K=T-imfilt
33、er(T,w1,replicate);imshow(K);%不同大小的拉布拉斯算子I,map=imread(blurry_moon.tif);I=double(I);Gx,Gy=gradient(I); G=sqrt(Gx.*Gx+Gy.*Gy); J1=G; figure;imshow(J1,map); J2=I; %K=find(G=7);J2(K)=G(K);figure;imshow(J2,map); J3=I; K=find(G=7);J3(K)=255;figure;imshow(J3,map); J4=I; K=find(G=7);J4(K)=255;figure;imshow(
34、J4,map); J5=I; K=find(G=7);J5(Q)=255;figure;imshow(J5,map);%自行设置的锐化空间滤波器domain=8 8 0 8 8; 8 8 0 8 8; 0 0 0 0 0; 8 8 0 8 8; 8 8 0 8 8;K1= ordfilt2(J,5,domain);J=I; J(K)=G(K);figure;imshow(J,map); %a.傅里叶变换F=imread(woman.tif);F1=fft2(F);F2=log(1+abs(F1); F3=fftshift(F1);figure;imshow(log(1+abs(F3),);%b
35、.相位 F1=fft2(F);i=sqrt(-1);f2=ifft2(exp(i*angle(F1);figure;imshow(real(f2),);%c.幅度f1=ifft2(abs(F1);figure;imshow(log(1+abs(f1),);%d.共轭F1=fft2(F);F2=log(1+abs(F1); F3=fftshift(F1);F4=angle(F1); F5=-F4; F6= double(F3*exp(F4);F7=ifft2(F6); figure;imshow(real(F7),);%平滑频域滤波%理想低通滤波器I=imread(test_pattern.ti
36、f);f=double(I); g=fft2(f); g=fftshift(g); M,N=size(g);d0=100; m=fix(M/2); n=fix(N/2);for i=1:M for j=1:N d=sqrt(i-m)2+(j-n)2); if(d=d0) h=1; else h=0; end result(i,j)=h*g(i,j); endendresult=ifftshift(result);J1=ifft2(result); J2=uint8(real(J1);figure;imshow(J2);%巴特沃斯高通滤波器I=imread(test_pattern.tif);f=double(I); g=fft2(f); g=fftshift(g); M,N=size(g);nn=2; d0=80;m=fix(M/2);n=fix(N/2);for i=1:M for j=1:N d=sqrt(i-m)2+(j-n)2); if (d=0) h=0; else h=1/(1+0.414*(d0/d)(2*nn); endresult(i,j)=h*g(i,j);endendresult=ifftshift(result);J1=ifft2(result);J2=uint8(real(J1);figur