秋西安电子科技大学数字图像处理上机实验题答案及matlab程序可编辑修改word版.docx
- 文档编号:18598672
- 上传时间:2023-08-20
- 格式:DOCX
- 页数:29
- 大小:815.95KB
秋西安电子科技大学数字图像处理上机实验题答案及matlab程序可编辑修改word版.docx
《秋西安电子科技大学数字图像处理上机实验题答案及matlab程序可编辑修改word版.docx》由会员分享,可在线阅读,更多相关《秋西安电子科技大学数字图像处理上机实验题答案及matlab程序可编辑修改word版.docx(29页珍藏版)》请在冰点文库上搜索。
秋西安电子科技大学数字图像处理上机实验题答案及matlab程序可编辑修改word版
西安电子科技大学
数字图像处理上机实验题
李XX
2018-12-16
数字图像处理上机实验题
1.
产生右图所示图像f1(m,n),其中图像大小为256×256,中间亮条为128×32,暗处=0,亮处=100。
对其进行FFT:
(matlab程序附于文末附录)
①同屏显示原图f1(m,n)和FFT(f1)的幅度谱图;
f1的图像FFT(f1)的幅度频谱
②若令f2(m,n)=(-1)m+nf1(m,n),重复以上过程,比较二者幅度谱的异同,简述理由;
f2的图像FFT(f2)的幅度频谱
结论:
相同点:
图像f1,f2的幅度谱的实质没有改变,幅度等都没有发生变化。
不同点:
f2的频谱是对f1频谱的移位,它是f1的频谱从原点(0,0)移动到中心点(64,64)得到的频谱。
原因:
f2图像是对f1图像做频谱中心化变换得来的,这一过程不改变图像的幅度等特性。
③若将f2(m,n)顺时针旋转90度得到f3(m,n),试显示FFT(f3)的幅度谱,并与FFT(f2)的幅度谱进行比较;
FFT(f2)的幅度频谱FFT(f3)的幅度频谱
结论:
由图可知,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)幅度谱
FFT(f5)的图像
叠加的结果。
⑤若令f6(m,n)=f2(m,n)+f3(m,n),试显示FFT(f6)的幅度谱,并指出其与FFT(f2)和FFT(f3)
的关系,比较FFT(f6)和FFT(f5)的幅度谱。
FFT(f6)的图像
结论:
FFT(f6)的幅度谱是FFT(f2)和FFT(f3)幅度谱叠加的结果。
FFT(f6)是FFT(f5)频谱中心化的结果。
2.产生教材104页题图4.18(右图)所示的二值图像(白为1,黑为0),编程实现习题4.18所要求的处理(3×3的平均滤波和中值滤波)功能(图像四周边界不考虑,处理结果按四舍五入仍取0或1),显示处理前后的图像,比较其异同。
(matlab程序附于文末附录)
fa的图像fb的图像
fa的平均滤波图像fb的平均滤波图像
fa的加权平均滤波图像fb的加权平均滤波图像
结论:
图像fa的平均滤波图像和平均加权图像与原图像相同;fb的平均滤波图像的处理点在白、黑块组成的4块交界处时,由于窗内1值点等于0值点个数,0值点的值变为1,形成如图所示图像,加权平均滤波图像与原图像相同。
3.产生教材104页题图4.16所示的灰度图像(白为255,黑为0),分别加入高斯白噪声和椒盐噪声,再分别进行3×3的平均滤波和中值滤波,显示原图像、加噪图像和滤波结果图像,并比较四种滤波结果。
(matlab程序附于文末附录)
原图像f
加高斯白噪声后的图像平均滤波后的图像中值滤波后的图像
加椒盐噪声后的图像平均滤波后的图像中值滤波后的图像
结论:
由图可知,对于加高斯白噪声后的图像,平均滤波后对噪声的滤除总体上效果好,但在局部边缘处存在误将噪声当作图像保留和误将图像细节当作噪声滤除的现象;中值滤波则对图像的边缘信息保留的较好,但总体滤除效果不佳。
对于加椒盐噪声后的图像,平均滤波后在图像边缘上的损失较多,相对的,中值滤波后边缘信息损失较少。
4.对某一灰度图像,进行如下处理:
(matlab程序附于文末附录)
(1)分别利用Roberts、Prewitt和Sobel边缘检测算子进行边缘检测;
本题选取此图片进行处理。
Roberts算子处理结果图Prewitt算子处理结果图Sobel算子处理结果图
(2)将Roberts、Prewitt和Sobel边缘检测算子修改为锐化算子,对原图像进行锐化,同屏显示原图像、边缘检测结果和锐化后图像,说明三者之间的关系。
原图像Roberts算子边缘检测结果锐化处理结果
原图像Prewitt算子边缘检测结果锐化处理结果
原图像Sobel算子边缘检测结果锐化处理结果
结论:
Roberts边缘检测算子获得的边缘效果较差,把一些边缘也剔除掉了。
Prewitt边缘检测算子获得的边缘要好于Roberts算子,但仍有部分边缘被
剔除。
Sobel边缘检测算子相较于Prewitt算子主要是对噪声的抑制能力增强,由于此处原图像没有噪声,所以对比不明显。
每种算子的锐化结果是将其检测到的边缘相应加强的结果。
5、编程实现教材214页所给图像门限化分割的迭代阈值算法,实现对某一灰度图像的二值化。
(matlab程序附于文末附录)
原图像迭代阈值处理后的二值图像
所有题目的matlab程序皆附于文末附录。
附录
题目1matlab程序:
closeall;clear;
f1=zeros(256,256);
f2=zeros(256,256);
form=64:
1:
192
forn=112:
1:
144
f1(m,n)=100/255;
f2(m,n)=(-1)^(m+n)*100/255;
end
end
%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)));
%显示图像
figure
subplot(1,2,1);
imshow(f1);
title('f1的图像');
subplot(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)的图像');
figureimshow(fft_f6,[]);
title('FFT(f6)的图像');
题目2matlab程序:
clear;closeall;fb=zeros(64,64);fa=[ones(64,32),zeros(64,32)];form=1:
8:
64
forn=1:
8:
64
fb(m:
m+7,n:
n+7)=1/2*(1+(-1)^(floor(m/8)+floor(n/8)))*ones(8,8);
end
end
%3×3平均模板
W1=1/8*[111;101;111];%平均滤波模板
fa_avefilter=fa;fb_avefilter=fb;
form=2:
1:
63
forn=2:
1:
63
fa_avefilter(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)*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));
end
end
W2=1/9*[111;111;111];%加权平均滤波模板
fa_whtavefilter=fa;fb_whtavefilter=fb;
form=2:
1:
63
forn=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(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));
end
end
%中值滤波
fa_midfilter=fa;
fb_midfilter=fb;
form=2:
1:
63
forn=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)]);
end
end
figure
(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_whtavefilter);
title('fb的加权平均滤波图像');
figure(4)
subplot(1,2,1);
imshow(fa_midfilter);
title('fa的中值滤波图像');subplot(1,2,2);imshow(fb_midfilter);title('fb的中值滤波图像');
functionMID=mid(F)N=length(F);
%冒泡排序fori=1:
1:
N
forj=i:
1:
N
if(F(i)>F(j))
tmp=F(i);F(i)=F(j);F(j)=tmp;
end
end
endMID=F(round(N/2));end
问题3matlab程序:
closeall;clear;f=zeros(256,256);form=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)) a2=rand(size(f)) f_pep(a1&a2)=0; f_pep(a1&~a2)=1; %3×3平均滤波 W1=1/8*[111;101;111]; f_gn_avefilter=f_gn; f_pep_avefilter=f_pep; form=2: 1: 255 forn=2: 1: 255 f_gn_avefilter(m,n)=round(W1(1,1)*f_gn(m-1,n-1)+W1(1,2)*f_gn(m-1,n)+W1(1,3)*f_gn(m-1,n+1)... +W1(2,1)*f_gn(m,n-1)+W1(2,2)*f_gn(m,n)+W1(2,3)*f_gn(m,n+1)... +W1(3,1)*f_gn(m+1,n-1)+W1(3,2)*f_gn(m+1,n)+W1(3,3)*f_gn(m+1,n+1)); f_pep_avefilter(m,n)=round(W1(1,1)*f_pep(m-1,n-1)+W1(1,2)*f_pep(m-1,n)+W1(1,3)*f_pep(m-1,n+1)... +W1(2,1)*f_pep(m,n-1)+W1(2,2)*f_pep(m,n)+W1(2,3)*f_pep(m,n+1)... +W1(3,1)*f_pep(m+1,n-1)+W1(3,2)*f_pep(m+1,n)+W1(3,3)*f_pep(m+1,n+1)); end end %中值滤波 f_gn_midfilter=f_gn; f_pep_midfilter=f_pep; form=2: 1: 255 forn=2: 1: 255 f_gn_midfilter(m,n)=mid([f_gn(m-1,n-1),f_gn(m-1,n),f_gn(m-1,n+1),f_gn(m,n- 1),f_gn(m,n),f_gn(m,n+1),f_gn(m+1,n-1),f_gn(m+1,n),f_gn(m+1,n+1)]); f_pep_midfilter(m,n)=mid([f_pep(m-1,n-1),f_pep(m-1,n),f_pep(m-1,n+1),f_pep(m,n- 1),f_pep(m,n),f_pep(m,n+1),f_pep(m+1,n-1),f_pep(m+1,n),f_pep(m+1,n+1)]); end end figure (1) imshow(f); title('原图像f'); figure (2)subplot(1,3,1)imshow(f_gn); title('加高斯白噪声后的图像');subplot(1,3,2)imshow(f_gn_avefilter);title('平均滤波后的图像');subplot(1,3,3)imshow(f_gn_midfilter);title('中值滤波后的图像');figure(3) subplot(1,3,1)imshow(f_pep); title('加椒盐噪声后的图像');subplot(1,3,2)imshow(f_pep_avefilter);title('平均滤波后的图像');subplot(1,3,3)imshow(f_pep_midfilter);title('中值滤波后的图像'); 问题4matlab程序: closeall;clear; %读取图像fid=fopen('lena.img','r');Img=(fread(fid,[256,256],'uint8'))';f=Img/255; clearfidImgimshow(f); %Roberts边缘检测算子 Gh=zeros(256,256); Gv=zeros(256,256); form=2: 1: 255 forn=2: 1: 255 Gh(m,n)=f(m,n)-f(m-1,n-1); Gv(m,n)=f(m,n-1)-f(m-1,n); end end G_Roberts=sqrt(Gh.*Gh+Gv.*Gv); g_Roberts=f+Gh+Gv;%用Roberts算子做锐化 clearGhGv B_Roberts=zeros(256,256); form=2: 1: 255 forn=2: 1: 255 ifG_Roberts(m,n)>=0.1 B_Roberts(m,n)=1; end end end clearmn figure imshow(B_Roberts); title('Roberts算子处理结果图'); %Prewitt梯度算子 Gh=zeros(256,256); Gv=zeros(256,256); form=2: 1: 255 forn=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)); end end G_Prewitt=sqrt(Gh.*Gh+Gv.*Gv); g_Prewitt=f+Gh+Gv;%用Prewitt算子做锐化 clearGhGv B_Prewitt=zeros(256,256); form=2: 1: 255 forn=2: 1: 255 ifG_Prewitt(m,n)>=0.1 B_Prewitt(m,n)=1; end end end clearmn figure imshow(B_Prewitt); title('Prewitt算子处理结果图'); %Sobel梯度算子 Gh=zeros(256,256); Gv=zeros(256,256); form=2: 1: 255 forn=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(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)); end end G_Sobel=sqrt(Gh.*Gh+Gv.*Gv); g_Sobel=f+Gh+Gv;%用Sobel算子做锐化 clearGhGv B_Sobel=zeros(256,256); form=2: 1: 255 forn=2: 1: 255 ifG_Sobel(m,n)>=0.1 B_Sobel(m,n)=1; end end end clearmn figure imshow(B_Sobel); title('Sobel算子处理结果图'); figure title('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('锐化处理结果'); figure title('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('锐化处理结果'); figure title('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('锐化处理结果'); 问题5matlab程序: closeall;clear; %读取图像 dim=256;fid=fopen('lena.img','r'); Img=(fread(fid,[dim,dim],'uint8'))';f=Img/(dim-1); clearfidImgt1=max(max(f));%最大灰度值点tk=min(min(f));%最小灰度值点N=ones(dim,dim);T (1)=(t1+tk)/2;%初始阈值cleart1tk k=1; M=10;%设定迭代次数 %迭代阈值法 while1 N1(k)=0;N2(k)=0; t_O=0;t_B=0;form=1: 1: dim forn=1: 1: dim iff(m,n) t_O=t_O+f(m,n)*N(m,n); N1(k)=N1(k)+1; elseiff(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; ifT(k)==T(k+1)||k>M break; end k=k+1; end clearNN1N2t_Ot_B %使用所得阈值处理图像 f1=f; form=1: 1: dim forn=1: 1: dim iff1(m,n) f1(m,n)=0; else f
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 西安电子科技大学 数字图像 处理 上机 实验 答案 matlab 程序 编辑 修改 word