数字图像处理MATLAB上机作业.docx
- 文档编号:12478980
- 上传时间:2023-04-19
- 格式:DOCX
- 页数:18
- 大小:302.97KB
数字图像处理MATLAB上机作业.docx
《数字图像处理MATLAB上机作业.docx》由会员分享,可在线阅读,更多相关《数字图像处理MATLAB上机作业.docx(18页珍藏版)》请在冰豆网上搜索。
数字图像处理MATLAB上机作业
数字图像处理实验报告
指导老师:
学号
姓名
班级
1.产生右图所示图像f1(m,n),其中图像大小为256X256,中间亮条为128X32,暗处=0,亮处=100对其进行FFT:
1同屏显示原图f1(m,n)和FFT(f1)的幅度谱图;
2若令f2(m,n)=(-1)(m+n)f1(m,n),重复以上过程,
比较二者幅度谱的异同,简述理由;
3若将f2(m,n)顺时针旋转90度得到f3(m,n),试显示FFT(f3)的幅度谱,
并与FFT(f2)的幅度谱进行比较;
4若将f1(m,n)顺时针旋转90度得到f4(m,n),令f5(m,n)=f1(m,n)+f4(m,n),
试显示FFT(f5)的幅度谱,并指出其与FFT(f1)和FFT(f4)的关系;
5若令f6(m,n)=f2(m,n)+f3(m,n),试显示FFT(f6)的幅度谱,并指出其与FFT(f2)和FFT(f3)的关系,
比较FFT(f6)和FFT(f5)的幅度谱。
f1=zeros(256,256);
fori=64:
1:
192
forj=122:
1:
144
f1(i,j)=100;
end
end
fft_f1=fft2(f1);
fft_f1=abs(fft_f1);
tmax=fft_f1(1,1);
tmin=fft_f1(1,1);
fori=1:
256
forj=1:
256
iftmax tmax=fft_f1(i,j); end iftmin>fft_f1(i,j) tmin=fft_f1(i,j); end end end delta=tmax-tmin; fori=1: 256 forj=1: 256 fft_f1(i,j)=255*(fft_f1(i,j)-tmin)/delta; end end subplot(1,2,1); imshow(f1); title('原图’); subplot(1,2,2); imshow(fft_f1); title('原图的幅度谱’); 原因 原團的幅度谱 fori=1: 256 forj=1: 256f2(i,j)=(-1)F+j)*f1(i,j); end endfft_f2=fft2(f2);fft_f2=abs(fft_f2);tmax=fft_f2(1,1); tmin=fft_f2(1,1); fori=1: 256 forj=1: 256 iftmax end iftmin>fft_f2(i,j) tmin=fft_f2(i,j); end end end delta=tmax-tmin; fori=1: 256 forj=1: 256 fft_f2(i,j)=255*(fft_f2(i,j)-tmin)/delta; end endsubplot(2,2,1);imshow(f1);title('原图’); subplot(2,2,2); imshow(fft_f1); title('原图的幅度谱’);subplot(2,2,3); imshow(f2); title('原图中心化’); subplot(2,2,4); imshow(fft_f2); title('原图中心化的幅度谱’); 原團的幅度谱 原團中心化 原图中心化的幅度谱 iBv* f3=imrotate(f2,-90,'bilinear'); fft_f3=fft2(f3); fft_f3=abs(fft_f3); tmax=fft_f3(1,1); tmin=fft_f3(1,1); fori=1: 256 forj=1: 256 iftmax end iftmin>fft_f3(i,j) tmin=fft_f3(i,j); end end enddelta=tmax-tmin; fori=1: 256 forj=1: 256 fft_f3(i,j)=255*(fft_f3(i,j)-tmin)/delta; end end subplot(2,2,1); imshow(f2); title('原图中心化’); subplot(2,2,2); imshow(fft_f2); title('原图中心化的幅度谱’); subplot(2,2,3); imshow(f3); title('旋转后的图像’);subplot(2,2,4); imshow(fft_f3); title('旋转后的幅度谱’); 厲團中心化 原图中心化的幅度谱 I 旋转后的幅度谱 WWW f4=imrotate(f1,-90,'bilinear'); f5=f1+f4; fft_f5=fft2(f5); fft_f5=abs(fft_f5); tmax=fft_f5(1,1); tmin=fft_f5(1,1); fori=1: 256 forj=1: 256 iftmax end iftmin>fft_f5(i,j) tmin=fft_f5(i,j); end end end delta=tmax-tmin; fori=1: 256 forj=1: 256fft_f5(i,j)=255*(fft_f5(i,j)-tmin)/delta; end end subplot(2,2,1); imshow(f1); title('原图’); subplot(2,2,2); imshow(fft_f1); title('原图的幅度谱’); subplot(2,2,3); imshow(f5); title('相加后的图像’); subplot(2,2,4); imshow(fft_f5); title('相加后的幅度谱’); 原国的幅度谱 相加后的画像 原图与旋转90度后的图像进行叠加后,相应的幅度谱也进行叠加。 f6=f2+f3; fft_f6=fft2(f6); fft_f6=abs(fft_f6); tmax=fft_f6(1,1); tmin=fft_f6(1,1); fori=1: 256 forj=1: 256 iftmax tmax=fft_f6(i,j); end iftmin>fft_f6(i,j) tmin=fft_f6(i,j); end end end delta=tmax-tmin; fori=1: 256 forj=1: 256 fft_f6(i,j)=255*(fft_f6(i,j)-tmin)/delta; end end subplot(2,2,1); imshow(fft_f2);title('F2'); subplot(2,2,2);imshow(fft_f3);title('F3'); subplot(2,2,3);imshow(fft_f5);title('F5'); subplot(2,2,4);imshow(fft_f6);title('F6'); FFT (2)和FFT(3)相差90度。 FFT(6)是FFT(5)的中心化。 2.产生教材104页题图4.18(右图)所示的二值图像(白为1,黑为0),编程实现习题4.18所要求的处理(3*3的平均滤波和中值滤波)功能(图像四周边界不考虑,处理结果按四舍五入仍取0或1),显示处理前后的图像,比较其异同。 a=zeros(64,64); f=zeros(256,256); fori=1: 1: 32 forj=1: 1: 32 a(i,j)=1; end end fori=33: 1: 64 forj=33: 1: 64a(i,j)=1; end end fori=1: 64: 256 forj=1: 64: 256f(i: i+63,j: j+63)=a; end end imshow(f) fori=2: 1: 255 forj=2: 1: 255 a=[f(i-1,j-1),f(i-1,j),f(i-1,j+1),f(i,j-1),f(i,j),f(i,j+1),f(i+1,j-1),f(i+1,j),f(i+1, j+1)]; b=[f(i-1,j),f(i,j-1),f(i,j),f(i,j+1),f(i+1,j)]; c=sort(a); d=sort(b); zlf1(i,j)=c(5); zlf2(i,j)=d(5); endend subplot(1,3,1); imshow(f); title('原图像'); subplot(1,3,2); imshow(zlfl); title('方形中值滤波后图像’) subplot(1,3,3); imshow(zlf2); title('十字形中值滤波后图像') 方形中值滤波后图像 十字形中值滤波后图像 fori=2: 1: 255 forj=2: 1: 255jlf4(i,j)=(f(i-1,j)+f(i+1,j)+f(i,j-1)+f(i,j+1))/4; jlf8(i,j)=(f(i-1,j-1)+f(i-1,j)+f(i-1,j+1)+f(i,j-1)+f(i,j+1)+f(i+1,j-1)+f(i+1,j)+f(i+1,j+1))/8; jjlf4(i,j)=(f(i-1,j)+f(i+1,j)+f(i,j-1)+f(i,j+1)+f(i,j))/5; jjlf8(i,j)=(f(i-1,j-1)+f(i-1,j)+f(i-1,j+1)+f(i,j-1)+f(i,j+1)+f(i+1,j-1)+f(i+1,j)+f(i+ 1,j+1)+f(i,j))/9; end end jlf4=round(jlf4); jlf8=round(jlf8); jjlf4=round(jjlf4); jjlf8=round(jjlf8); subplot(2,2,1); imshow(jlf4); title('4邻域平均滤波后图像’); subplot(2,2,2); imshow(jlf8); title('8邻域平均滤波后图像') subplot(2,2,3); imshow(jjlf4); title('4邻域加权平均滤波后图像') subplot(2,2,4); imshow(jjlf8); title('8邻域加权平均滤波后图像') 4邻域平均滤波后團像 8邻域平均滤S后團像 4邻域加权平均滤波后團像 塔邻域加权平均滤波后图像 放大后可看出区别 4邻域平均滤波后图像 8邻域平均滤液后團像 4邻域加权平均滤波后團像 8邻域加权平均滤波后團像 3•产生教材104页题图4.16所示的灰度图像(白为255,黑为0),分别加入高斯白噪声和椒盐噪声,再分别进行3*3的平均滤波和中值滤波,显示原图像、加噪图像和滤波结果图像,并比较四种滤波结果。 f=zeros(256,256); a=255*ones(210,7); fori=0: 1: 8 f(24: 233,(29+24*i): (29+24*i+6))=a; end f1=imnoise(f,'gaussian',0,0.1);%加入均值为零方差为0.1的高斯噪声 f2=imnoise(f,'salt&pepper',0.1);%加入噪声密度为0.1的椒盐噪声 fori=2: 1: 255 forj=2: 1: 255 a=[f1(i-1,j-1),f1(i-1,j),f1(i-1,j+1),f1(i,j-1),f1(i,j),f1(i,j+1),f1(i+1,j-1),f1(i+1,j ),f1(i+1,j+1)]; b=[f2(i-1,j-1),f2(i-1,j),f2(i-1,j+1),f2(i,j-1),f2(i,j),f2(i,j+1),f2(i+1,j-1),f2(i+1,j ),f2(i+1,j+1)]; c=sort(a); d=sort(b); zlf1(i,j)=c(5);%中值滤波 zlf2(i,j)=d(5);%中值滤波 jlf8(i,j)=(f1(i-1,j-1)+f1(i-1,j)+f1(i-1,j+1)+f1(i,j-1)+f1(i,j+1)+f1(i+1,j-1)+f1(i+1,j )+f1(i+1,j+1)+f1(i,j))/9;%平均滤波 jjlf8(i,j)=(f2(i-1,j-1)+f2(i-1,j)+f2(i-1,j+1)+f2(i,j-1)+f2(i,j+1)+f2(i+1,j-1)+f2(i+1, j)+f2(i+1,j+1)+f2(i,j))/9;%平均滤波 end end subplot(2,4,1);imshow(f); title('原图像'); subplot(2,4,2);imshow(f1); title('高斯噪声污染后的图像’); subplot(2,4,3);imshow(zlf1); title('中值滤波后的图像’); subplot(2,4,4);imshow(jlf8); title('平均滤波后的图像’); subplot(2,4,5);imshow(f); title('原图像'); subplot(2,4,6);imshow(f2); title('椒盐噪声污染后的图像’); subplot(2,4,7);imshow(zlf2); title('中值滤波后的图像’); subplot(2,4,8);imshow(jjlf8); title('平均滤波后的图像’); 原團像根盐唾声污染石的團像中值遥渡后的團像平均遞波石的團像 5.(第4、5题选做一题)编程实现教材214页所给图像门限化分割的迭代阈值算法,实现对某一灰度图像的二值化。 Pic=imread('C: \Users\Administrator\Desktop\242dd42a2834349bfb0c018ccbea15ce36d3beb5.j pg');%读取RGB格式的图像 a=rgb2gray(Pic);%进行RGB到灰度图像的转换 T=0.5*(double(min(a(: )))+double(max(a(: )))); do=false; while~do g=(a>T); Tnext=0.5*(mean(a(g))+mean(a(~g))); do=abs(T-Tnext)<0.2; T=Tnext; end figure;subplot(1,2,1);imshow(a); subplot(1,2,2);imshow(g); '? ■■■uu■ 6. %ReadInputRetinaImageinlmg=imread('Input.bmp'); if(dim==3) dim=ndims(inlmg); %lnputisacolorimageinImg=rgb2gray(inlmg);end %ExtractBloodVessels Threshold=10; bloodVessels=VesselExtract(inlmg.Threshold); %OutputBloodVesselsimagefigure; subplot(121);imshow(inlmg);title('InputImage');subplot(122);imshow(bloodVessels);title('ExtractedBloodVessels'); VesselExtract.m: functionbloodVessels=VesselExtract(inlmg,threshold)%Kirsch'sTemplatesh1=[5-3-3; 50-3; 5-3-3]/15; h2=[-3-35; -305; -3-35]/15; h3=[-3-3-3; 50-3; 55-3]/15; h4=[-355; -305; -3-3-3]/15; h5=[-3-3-3; -30-3; 555]/15; h6=[555; -30-3; -3-3-3]/15; h7=[-3-3-3; -305; -355]/15; h8=[55-3; 50-3; -3-3-3]/15; %SpatialFilteringbyKirsch'sTemplates t仁filter2(h1,inlmg); t2=filter2(h2,inlmg); t3=filter2(h3,inlmg); t4=filter2(h4,inlmg); t5=filter2(h5,inlmg); t6=filter2(h6,inlmg); t7=filter2(h7,inlmg); t8=filter2(h8,inlmg); s=size(inlmg); bloodVessels=zeros(s (1),s (2)); temp=zeros(1,8); fori=1: s (1) forj=1: s (2) temp (1)=t1(i,j);temp (2)=t2(i,j);temp(3)=t3(i,j);temp(4)=t4(i,j);temp(5)=t5(i,j);temp(6)=t6(i,j);temp(7)=t7(i,j);temp(8)=t8(i,j);if(max(temp)>threshold) bloodVessels(i,j)=max(temp); endendend
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字图像 处理 MATLAB 上机 作业