收藏 分销(赏)

数字图象处理实验报告.doc

上传人:仙人****88 文档编号:12072317 上传时间:2025-09-06 格式:DOC 页数:13 大小:392.50KB 下载积分:10 金币
下载 相关 举报
数字图象处理实验报告.doc_第1页
第1页 / 共13页
数字图象处理实验报告.doc_第2页
第2页 / 共13页


点击查看更多>>
资源描述
数字图像处理实验报告 姓名:杨彪 学号:20111003311 指导老师:傅华明 实验地点:信息楼 实验一 实验内容 图像旋转,尺寸不变 图像旋转,尺寸变换 解:图像的旋转要用到旋转因子,对尺寸不变而言,只需将旋转之后不在原图像范围内的部分截掉。对于尺寸变换,则需先用旋转因子算出旋转之后的各点坐标,再算出能将旋转之后的图像完全包围进去的新的图像的尺寸,然后把旋转后的图像放进去。 ①、程序代码 图像旋转,尺寸不变 img=imread(C:\Documents and Settings\账户2\桌面\赵琛\数字图像处理\DIP-11级上机1-空域增强\p08.TIF'); subplot(1,3,1),imshow(img), title('原始图像'); [M,N]=size(img); g=zeros(M,N); img=double(img); g=double(g); a=3.14*15/180; for i=1:M, for j=1:N, m=round(i*cos(a)+j*sin(a)); n=round(-i*sin(a)+j*cos(a)); if m>0.5&&m<256&&n>0.5&&n<256 g(i,j)=img(m,n); else g(i,j)=250; end end end g=uint8(g); subplot(1,3,2),imshow(g), title('尺寸不变'); 图像旋转,尺度变换 im1=imread('C:\Documents and Settings\账户2\桌面\赵琛\数字图像处理\DIP-11级上机1- 空域增强\p08.tif'); angle=30; pai=3.14; subplot(121); imshow(im1); title('原始图像'); roteang=angle/180*pi; [im1X,im1Y]=size(im1); %计算旋转矩阵 rotmatrix=[cos(roteang),-sin(roteang);sin(roteang),cos(roteang)]; %计算反旋转矩阵 rrotmatrix=[cos(-roteang),-sin(-roteang);sin(-roteang),cos(-roteang)]; %计算新图像大小,以及新图像的1,1精确定位点 im2XY1=[im1X,im1Y]*rotmatrix; im2XY2=[im1X,1]*rotmatrix; im2XY3=[1,1]*rotmatrix; im2XY4=[1,im1Y]*rotmatrix; im2p11=[min([im2XY1(1),im2XY2(1),im2XY3(1),im2XY4(1)]),min([im2XY1(2),im2XY2(2),im2XY3(2),im2XY4(2)])]; im2X=round(max([im2XY1(1),im2XY2(1),im2XY3(1),im2XY4(1)])-im2p11(1)); im2Y=round(max([im2XY1(2),im2XY2(2),im2XY3(2),im2XY4(2)])-im2p11(2)); %建立新图像 im2=uint8(zeros(im2X,im2Y)+255); %对于每个像素点,进行上文所述的计算。 for i=1:im2X for j=1:im2Y pij=round([i+im2p11(1)-1,j+im2p11(2)-1]*rrotmatrix); if (pij(1)>=1)&&(pij(2)>=1)&&(pij(1)<=im1X)&&(pij(2)<=im1Y) im2(i,j)=im1(pij(1),pij(2)); end end end; %绘制新图 subplot(122); imshow(im2); title('尺寸变换'); ②、程序运行结果及对比分析 1. 2. 分析:在旋转的图像操作中,主要要理解旋转因子的具体意义,得到旋转后图像的尺寸后,要用逆旋转因子,因为原图像经过运算后并没有发生旋转,只是通过运算过程求出来旋转后的尺寸,这是要理解的地方。 实验二 实验内容 设计图象f5(x,y)为3*30*30/256*256,垂直排列; 解:设计一个零矩阵,将其中取三个小矩阵让它的像素值为1,即满足题目要求。再通过函数调用,绘制图像的频域图 ①、程序代码 f=zeros(256,256); f([30:60],[113:143])=1; f([90:120],[113:143])=1; f([150:180],[113:143])=1; subplot(221);imshow(f); F=fft2(f); subplot(223);mesh(fftshift(abs(F))); subplot(222);imshow(fftshift(log(abs(F)))); ②、程序运行结果及对比分析 分析:通过图像的频域图可以看出,三个小正方形的频域图中低频部分比一个的多(此处未附上一个的频域图),低频部分为原图像中的黑白交接处。符合由题目直接得出的结论。 实验三 实验内容 频域平移性 自行设计f3(x,y),求得F3(u,v),将F3(u,v)右移后反变换求f 2(x,y);将F3(u,v)下移后反变换,求f 1(x,y);证明f1(x,y)、f 2(x,y)、f 3(x,y)的绝对值相等。 对图象p07实施对数变换(公式4.1.7) 解:设计一个图像f3,将其进行傅里叶变换之后得到其频域图,将频域图分别向右和向下移动128个单位,移出部分补到空白处,再用逆变换求得f2和f3,f1,f2,f3分别求其像素和,通过所得值判断是否相等。 ①、程序代码 f3=zeros(256,256); f3(41:71,113:143)=1; f3(112:142,113:143)=1; f3(183:213,113:143)=1; F3=fft2(f3); f3=ifft2(F3); subplot(321); imshow(f3);title('图像f3'); subplot(322); imshow(F3);title('f3的傅立叶变换F3'); [M,N]=size(F3); F2=zeros(M,N); P=fix(M/2); Q=fix(N/2); F2(:,Q+1:N)=F3(:,1:Q); F2(:,1:Q)=F3(:,Q+1:N); f2=ifft2(F2); subplot(323); imshow(f2);title('图像f2'); subplot(324); imshow(F2);title('F3右移图F2'); F1(Q+1:N,:)=F3(1:Q,:); F1(1:Q,:)=F3(Q+1:N,:); f1=ifft2(F1); subplot(325); imshow(f1);title('图像f1'); subplot(326); imshow(F1);title('F3上移图F1'); g1=sum(sum(abs(f1))) g2=sum(sum(abs(f2))) g3=sum(sum(abs(f3))) g4=sum(sum(abs(F1))) g5=sum(sum(abs(F2))) g6=sum(sum(abs(F3))) ②、程序运行结果及对比分析 实验四 实验内容 自行设计f(x,y),(1)调用Matlab函数直接调用实现其离散傅立叶变换、离散余弦变换;(2)自行编程对f(x,y)实施Walsh变换和Hadamard变换,比较四种变换所得到的频谱。 解:写出子程序Walsh变换和Hadamard变换,子程序中为了方便起见,均将二维变换分为两个一维变换,用for循环和bitget函数实现题目要求。 ①、程序代码 img=zeros(256,256); img(1:10,1:10)=1; img(246:256,246:256)=1; img_temp=double(img); [M N]=size(img_temp); img_fft=fftshift(log(1+abs(fft2(img)))); img_dct=log(abs(dct2(img))); img_walsh=(walsh(N)*img_temp*walsh(M)); img_hadamard=(hadamard(N)*img_temp*hadamard(M)); imshow(img); title('原图像'); subplot(2,2,1); imshow(img_fft,[]); title('傅里叶'); subplot(2,2,2); imshow(img_dct); title('余弦'); subplot(2,2,3); imshow(img_walsh,[]); title('walsh'); subplot(2,2,4); imshow(img_hadamard,[]); title('hadamard '); 其中调用的walsh函数代码详列如下: function g=walsh(N) n=log2(N); for x=0:N-1 for u=0:N-1 temp=1; for i=0:n-1 temp=temp*((-1)^(bitget(x,i+1)*bitget(u,n-i))); end g(x+1,u+1)=temp/N; end end 其中调用的hadamard函数代码详列如下: function g=hadamard(N) n=log2(N); for x=0:N-1 for u=0:N-1 temp=0; for i=0:n-1 temp=temp+bitget(x,i+1)*bitget(u,i+1); end temp=(-1)^temp; g(x+1,u+1)=temp/N; end end ②、程序运行结果及对比分析 分析:由实验结果可知,经过余弦变换后的图像的能量都集中在左上方(看的 不太清晰)。Walsh变换和hadamard变换都可用于图像压缩,但两者运 算后的结果不同。 实验五 实验内容 根据窗函数法设计一个低通滤波器,对两图象(f1(x,y)为90*30/256*256的图象;f2(x,y) 30*90/256*256图象)进行低通滤波,观察分析滤波前后空域图象和频谱分布的变化。 解:先设定低通滤波器的截止频率,对图像进行预处理(先进行傅里叶变换,再将低频部分移到图像中央),然后计算各点到中心点的距离,距离越远,频率越高。将频率低于设定频率的部分保留。 ①、程序代码 f=zeros(256,256); f(80:173,113:143)=1; B=double(f); g=fft2(f); g=fftshift(g); subplot(2,2,1),imshow(f);title('f'); subplot(2,2,2),imshow(log(abs(g)),[-1 5]);title('傅里叶变换'); [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 I(i,j)=h*g(i,j); end end subplot(2,2,3),imshow(I);title('理想低通滤波器'); J1=ifft2(I); J1=ifftshift(J1); J2=uint8(real(J1)); subplot(2,2,4),imshow(J1); title('复原图'); f=zeros(256,256); f(113:143,80:173)=1; B=double(f); g=fft2(f); g=fftshift(g); subplot(2,2,1),imshow(f);title('f'); subplot(2,2,2),imshow(log(abs(g)),[-1 5]);title('傅里叶变换'); [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 I(i,j)=h*g(i,j); end end subplot(2,2,3),imshow(I);title('理想低通滤波器'); J1=ifft2(I); J1=ifftshift(J1); J2=uint8(real(J1)); subplot(2,2,4),imshow(J1); title('复原图'); ②、程序运行结果及对比分析 分析:进行低通滤波之后,低频部分被保留。由于理想滤波器没有过渡的区域,因此在处理之后图像会变得模糊。同时可以看到,两幅图像的傅里叶变换是一样的,进过理想低通滤波器后的图像以及复原图也是一样的(方向有所不同)。
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服