《数字图像处理》期末大作业.docx
《《数字图像处理》期末大作业.docx》由会员分享,可在线阅读,更多相关《《数字图像处理》期末大作业.docx(12页珍藏版)》请在冰豆网上搜索。
《数字图像处理》期末大作业
1.Matlab编程:
给定矩阵A和B,请写一函数计算两矩阵的乘积,A和B作为该函数的输入参数,要求要判断两个矩阵是否可乘,不能用Matlab矩阵乘运算符*。
步骤:
functionAB=chengji(A,B)
[m,n]=size(A);
[p,q]=size(B);
ifn~=p
%判断第一个矩阵的列数是否等于第二个矩阵的行数
display('逻辑错误!
');
else
AB=zeros(m,q);
fori=1:
m
forj=1:
q
AB(i,j)=A(i,:
)*B(:
j);
end
end
end
结果如下:
2.给定如下图像Fig1.jpg,请使用某种图像增强方法,使其看起来效果“更好”。
步骤:
f=imread('Fig1.jpg');
figure,imshow(f)
f=double(f);
t=fft2(f);
g=fftshift(t);
[m,n]=size(t);
d0=10;
r1=0.5;
rh=2;
c=4;
n1=floor(m/2);
n2=floor(n/2);
fori=1:
m;
forj=1:
n
d=sqrt((i-n1)^2+(j-n2)^2);
h=(rh-r1)*(1-exp(-c*(d.^2/d0.^2)))+r1;
g(i,j)=h*g(i,j);
end
end
g=ifftshift(g);
g=uint8(real(ifft2(g)));
figure,imshow(g);
效果如下:
3.小波变换应用
(1)对给定的图像Fig2.tif进行三级小波分解,并以下图形式显示各级分解系数。
步骤:
f=imread('Fig2.tif');
f=im2double(f);
figure,imshow(f)
[cA,cH,cV,cD]=dwt2(f,'haar');
[cA2,cH2,cV2,cD2]=dwt2(cA,'haar');
cA11=[cA2,cH2;cV2,cD2]
[cA3,cH3,cV3,cD3]=dwt2(cA2,'haar');
cA111=[cA3,cH3;cV3,cD3]
fw1=[cA111,cH2;cV2,cD2]
fw2=[fw1,cH;cV,cD]
fw2=imadjust(fw2);
figure,imshow(fw2)
效果如下:
(2)对给定的图像Fig3.tif,检测其边缘。
步骤:
f=imread('Fig3.tif');
imshow(f)
BW=edge(f,'sobel',0.01,'vertical');
figure,imshow(BW)
效果如下:
4.对给定的已退化的图像Fig4.tif(如下图),请复原之。
程序:
Subplot(‘axesl’);
Holdoff;
GlobalA;
GlobalB;
xy=imputdlg({‘LEN’;’THETA’},’pleaseinput’)
end
PSF=fspecial(‘motion’,x,y);
Blurred=im(A,PSF,’eireular’,’conv’);
wnr=deconvwnr(Blurred,PSF);
B=wnr;
Imshow(B);
Figure;
subplot(1,2,1),imshow(A),title(‘维纳滤波前’);
Subplot(1,2,2),imshow(B),title(‘维纳滤波后’);
5.对给定的变形图像Fig5.tif和基准图像Fig6.tif,使用基于控制点的图像配准方法,对其进行配准。
写出步骤和程序代码。
步骤:
f=imread('Fig5.tif');
g=imread('Fig6.tif');
cpselect(f,g)
tform=cp2tform(input_points,base_points,'projective');
gp=imtransform(f,tform,'Xdata',[1502],'Ydata',[1502]);
imshow(gp);
执行cpselect(f,g)会弹出一个选取控制点的界面:
选取完后,保存到Workspace。
效果如下: