《2018秋西安电子科技大学数字图像处理上机实验题答案及matlab程序(共18页).doc》由会员分享,可在线阅读,更多相关《2018秋西安电子科技大学数字图像处理上机实验题答案及matlab程序(共18页).doc(18页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上西安电子科技大学数字图像处理上机实验题李XX2018-12-16数字图像处理上机实验题1. 产生右图所示图像 f1(m,n),其中图像大小为256256,中间亮条为12832,暗处=0,亮处=100。对其进行FFT:(matlab程序附于文末附录) 同屏显示原图f1(m,n)和FFT(f1)的幅度谱图; 若令f2(m,n)=(-1)m+n f1(m,n),重复以上过程,比较二者幅度谱的异同,简述理由;结论:相同点:图像f1,f2的幅度谱的实质没有改变,幅度等都没有发生变化。不同点:f2的频谱是对f1频谱的移位,它是f1的频谱从原点(0,0)移动到中心点(64,64)得
2、到的频谱。原因:f2图像是对f1图像做频谱中心化变换得来的,这一过程不改变图像的幅度等特性。 若将f2(m,n)顺时针旋转90 度得到f3(m,n),试显示FFT(f3)的幅度谱,并与FFT(f2)的幅度谱进行比较;结论:由图可知,FFT(f3)的幅度谱是由FFT(f2)的幅度谱顺时针旋转90度得到的。 若将f1(m,n) 顺时针旋转90 度得到f4(m,n),令f5(m,n)=f1(m,n)+f4(m,n),试显示FFT(f5)的幅度谱,并指出其与 FFT(f1)和FFT(f4)的关系;结论: FFT(f5)的幅度谱是FFT(f1)和FFT(f4)幅度谱叠加的结果。 若令f6(m,n)=f2
3、(m,n)+f3(m,n),试显示FFT(f6)的幅度谱,并指出其与 FFT(f2)和FFT(f3)的关系,比较FFT(f6)和FFT(f5)的幅度谱。结论:FFT(f6)的幅度谱是FFT(f2)和FFT(f3)幅度谱叠加的结果。FFT(f6)是FFT(f5)频谱中心化的结果。2. 产生教材104 页题图4.18(右图)所示的二值图像(白为1,黑为0),编程实现习题4.18 所要求的处理(33 的平均滤波和中值滤波)功能(图像四周边界不考虑,处理结果按四舍五入仍取0 或1),显示处理前后的图像,比较其异同。(matlab程序附于文末附录)结论:图像fa的平均滤波图像和平均加权图像与原图像相同;
4、fb的平均滤波图像的处理点在白、黑块组成的4块交界处时,由于窗内1值点等于0值点个数,0值点的值变为1,形成如图所示图像,加权平均滤波图像与原图像相同。3. 产生教材104 页题图4.16 所示的灰度图像(白为255,黑为0),分别加入高斯白噪声和椒盐噪声,再分别进行33 的平均滤波和中值滤波,显示原图像、加噪图像和滤波结果图像,并比较四种滤波结果。(matlab程序附于文末附录)结论:由图可知,对于加高斯白噪声后的图像,平均滤波后对噪声的滤除总体上效果好,但在局部边缘处存在误将噪声当作图像保留和误将图像细节当作噪声滤除的现象;中值滤波则对图像的边缘信息保留的较好,但总体滤除效果不佳。对于加椒
5、盐噪声后的图像,平均滤波后在图像边缘上的损失较多,相对的,中值滤波后边缘信息损失较少。4. 对某一灰度图像,进行如下处理:(matlab程序附于文末附录)(1)分别利用Roberts、Prewitt 和Sobel 边缘检测算子进行边缘检测;本题选取此图片进行处理。(2)将Roberts、Prewitt 和Sobel 边缘检测算子修改为锐化算子,对原图像进行锐化,同屏显示原图像、边缘检测结果和锐化后图像,说明三者之间的关系。结论:Roberts边缘检测算子获得的边缘效果较差,把一些边缘也剔除掉了。Prewitt边缘检测算子获得的边缘要好于Roberts算子,但仍有部分边缘被剔除。Sobel边缘检
6、测算子相较于Prewitt算子主要是对噪声的抑制能力增强,由于此处原图像没有噪声,所以对比不明显。每种算子的锐化结果是将其检测到的边缘相应加强的结果。5、编程实现教材214 页所给图像门限化分割的迭代阈值算法,实现对某一灰度图像的二值化。(matlab程序附于文末附录)所有题目的matlab程序皆附于文末附录。专心-专注-专业附录题目1 matlab程序:close all;clear;f1=zeros(256,256);f2=zeros(256,256);for m=64:1:192 for n=112:1:144 f1(m,n)=100/255; f2(m,n)=(-1)(m+n)*100
7、/255; endend% figure% imshow(f1)f3=imrotate(f2,-90,nearest);f4=imrotate(f1,-90,nearest);f5=f1+f4;f6=f2+f3;%FFT变换fft_f1=log(1+abs(fft2(f1);fft_f2=log(1+abs(fft2(f2);fft_f3=log(1+abs(fft2(f3);fft_f5=log(1+abs(fft2(f5);fft_f6=log(1+abs(fft2(f6);%显示图像figuresubplot(1,2,1);imshow(f1);title(f1的图像);subplot(
8、1,2,2);imshow(fft_f1,);title(FFT(f1) 的幅度频谱);figuresubplot(1,2,1);imshow(f2);title(f2的图像);subplot(1,2,2);imshow(fft_f2,);title(FFT(f2) 的幅度频谱);figuresubplot(1,2,1);imshow(fft_f2,);title(FFT(f2) 的幅度频谱);subplot(1,2,2);imshow(fft_f3,);title(FFT(f3) 的幅度频谱);figureimshow(fft_f5,);title(FFT(f5)的图像);figureims
9、how(fft_f6,);title(FFT(f6)的图像);题目2 matlab程序:clear;close all;fb=zeros(64,64);fa=ones(64,32),zeros(64,32);for m=1:8:64 for n=1:8:64 fb(m:m+7,n:n+7)=1/2*(1+(-1)(floor(m/8)+floor(n/8)*ones(8,8); endend%33平均模板W1=1/8*1 1 1;1 0 1;1 1 1;%平均滤波模板fa_avefilter=fa;fb_avefilter=fb;for m=2:1:63 for n=2:1:63 fa_ave
10、filter(m,n)=round(W1(1,1)*fa(m-1,n-1)+W1(1,2)*fa(m-1,n)+W1(1,3)*fa(m-1,n+1). +W1(2,1)*fa(m,n-1)+W1(2,2)*fa(m,n)+W1(2,3)*fa(m,n+1). +W1(3,1)*fa(m+1,n-1)+W1(3,2)*fa(m+1,n)+W1(3,3)*fa(m+1,n+1); fb_avefilter(m,n)=round(W1(1,1)*fb(m-1,n-1)+W1(1,2)*fb(m-1,n)+W1(1,3)*fb(m-1,n+1). +W1(2,1)*fb(m,n-1)+W1(2,2)
11、*fb(m,n)+W1(2,3)*fb(m,n+1). +W1(3,1)*fb(m+1,n-1)+W1(3,2)*fb(m+1,n)+W1(3,3)*fb(m+1,n+1); endendW2=1/9*1 1 1;1 1 1;1 1 1;%加权平均滤波模板fa_whtavefilter=fa;fb_whtavefilter=fb;for m=2:1:63 for n=2:1:63 fa_whtavefilter(m,n)=round(W2(1,1)*fa(m-1,n-1)+W2(1,2)*fa(m-1,n)+W2(1,3)*fa(m-1,n+1). +W2(2,1)*fa(m,n-1)+W2(
12、2,2)*fa(m,n)+W2(2,3)*fa(m,n+1). +W2(3,1)*fa(m+1,n-1)+W2(3,2)*fa(m+1,n)+W2(3,3)*fa(m+1,n+1); fb_whtavefilter(m,n)=round(W2(1,1)*fb(m-1,n-1)+W2(1,2)*fb(m-1,n)+W2(1,3)*fb(m-1,n+1). +W2(2,1)*fb(m,n-1)+W2(2,2)*fb(m,n)+W2(2,3)*fb(m,n+1). +W2(3,1)*fb(m+1,n-1)+W2(3,2)*fb(m+1,n)+W2(3,3)*fb(m+1,n+1); endend%中
13、值滤波fa_midfilter=fa;fb_midfilter=fb;for m=2:1:63 for n=2:1:63 fa_midfilter(m,n)=mid(fa(m-1,n-1),fa(m-1,n),fa(m-1,n+1),fa(m,n-1),fa(m,n),fa(m,n+1),fa(m+1,n-1),fa(m+1,n),fa(m+1,n+1); fb_midfilter(m,n)=mid(fb(m-1,n-1),fb(m-1,n),fb(m-1,n+1),fb(m,n-1),fb(m,n),fb(m,n+1),fb(m+1,n-1),fb(m+1,n),fb(m+1,n+1); e
14、ndendfigure(1)subplot(1,2,1);imshow(fa);title(fa的图像);subplot(1,2,2);imshow(fb);title(fb的图像);figure(2)subplot(1,2,1);imshow(fa_avefilter);title(fa的平均滤波图像);subplot(1,2,2);imshow(fb_avefilter);title(fb的平均滤波图像);figure(3)subplot(1,2,1);imshow(fa_whtavefilter);title(fa的加权平均滤波图像);subplot(1,2,2);imshow(fb_w
15、htavefilter);title(fb的加权平均滤波图像);figure(4)subplot(1,2,1);imshow(fa_midfilter);title(fa的中值滤波图像);subplot(1,2,2);imshow(fb_midfilter);title(fb的中值滤波图像);function MID=mid(F)N=length(F);%冒泡排序for i=1:1:N for j=i:1:N if(F(i)F(j) tmp=F(i);F(i)=F(j);F(j)=tmp; end endendMID=F(round(N/2);end问题3 matlab程序:close all
16、;clear;f=zeros(256,256);for m=28:24:220 f(23:233,m:m+7)=1;end%高斯白噪声guass_noise=0.2*randn(size(f);f_gn=f+guass_noise;%椒盐噪声f_pep=f;k1=0.1;k2=0.3;a1=rand(size(f)k1;a2=rand(size(f)=0.1 B_Roberts(m,n)=1; end endendclear m nfigureimshow(B_Roberts);title(Roberts算子处理结果图);% Prewitt梯度算子Gh=zeros(256,256);Gv=ze
17、ros(256,256);for m=2:1:255 for n=2:1:255 Gh(m,n)=1/3*(f(m-1,n+1)+f(m,n+1)+f(m+1,n+1)-f(m-1,n-1)-f(m,n-1)-f(m+1,n-1); Gv(m,n)=1/3*(f(m-1,n-1)+f(m-1,n)+f(m-1,n+1)-f(m+1,n-1)-f(m+1,n)-f(m+1,n+1); endendG_Prewitt=sqrt(Gh.*Gh+Gv.*Gv);g_Prewitt=f+Gh+Gv;% 用Prewitt算子做锐化clear Gh GvB_Prewitt=zeros(256,256);fo
18、r m=2:1:255 for n=2:1:255 if G_Prewitt(m,n)=0.1 B_Prewitt(m,n)=1; end endendclear m nfigureimshow(B_Prewitt);title(Prewitt算子处理结果图);% Sobel梯度算子Gh=zeros(256,256);Gv=zeros(256,256);for m=2:1:255 for n=2:1:255 Gh(m,n)=1/4*(f(m-1,n+1)+2*f(m,n+1)+f(m+1,n+1)-f(m-1,n-1)-2*f(m,n-1)-f(m+1,n-1); Gv(m,n)=1/4*(f
19、(m-1,n-1)+2*f(m-1,n)+f(m-1,n+1)-f(m+1,n-1)-2*f(m+1,n)-f(m+1,n+1); endendG_Sobel=sqrt(Gh.*Gh+Gv.*Gv);g_Sobel=f+Gh+Gv;% 用Sobel算子做锐化clear Gh GvB_Sobel=zeros(256,256);for m=2:1:255 for n=2:1:255 if G_Sobel(m,n)=0.1 B_Sobel(m,n)=1; end endendclear m nfigureimshow(B_Sobel);title(Sobel算子处理结果图);figuretitle(
20、Roberts算子);subplot(1,3,1)imshow(f);title(原图像);subplot(1,3,2)imshow(B_Roberts);title(Roberts算子边缘检测结果);subplot(1,3,3)imshow(g_Roberts);title(锐化处理结果);figuretitle(Prewitt算子);subplot(1,3,1)imshow(f);title(原图像);subplot(1,3,2)imshow(B_Prewitt);title(Prewitt算子边缘检测结果);subplot(1,3,3)imshow(g_Prewitt);title(锐化
21、处理结果);figuretitle(Sobel算子)subplot(1,3,1)imshow(f);title(原图像);subplot(1,3,2)imshow(B_Sobel);title(Sobel算子边缘检测结果);subplot(1,3,3)imshow(g_Sobel);title(锐化处理结果);问题5 matlab程序:close all;clear;% 读取图像dim=256;fid=fopen(lena.img,r);Img=(fread(fid,dim,dim,uint8);f=Img/(dim-1);clear fid Imgt1=max(max(f);% 最大灰度值点
22、tk=min(min(f);% 最小灰度值点N=ones(dim,dim);T(1)=(t1+tk)/2;% 初始阈值clear t1 tkk=1;M=10;% 设定迭代次数% 迭代阈值法while 1 N1(k)=0;N2(k)=0; t_O=0;t_B=0; for m=1:1:dim for n=1:1:dim if f(m,n)T(k) t_B=t_B+f(m,n)*N(m,n); N2(k)=N2(k)+1; end end end t_O=t_O/N1(k); t_B=t_B/N2(k); T(k+1)=(t_O+t_B)/2; if T(k)=T(k+1)|kM break; end k=k+1;endclear N N1 N2 t_O t_B% 使用所得阈值处理图像f1=f;for m=1:1:dim for n=1:1:dim if f1(m,n)T(k+1) f1(m,n)=0; else f1(m,n)=1; end endendfiguresubplot(1,2,1)imshow(f);title(原图像);subplot(1,2,2)imshow(f1);title(迭代阈值处理后的二值图像);