1、数字图像处理课程设计报告1课程设计目的1、 提高分析问题、解决问题的能力,进一步巩固数字图像处理系统中的基本原理与方法。2、 熟悉掌握一门计算机语言,可以进行数字图像的应用处理的开发设计。2课程设计内容及实现2.1 、二维快速傅立叶变换 :本项目的重点是 :这个项目的目的是开发一个 2-D FFT程序“包”,将用于在其他几个项目。您的实现必 须有能力 :(a) 乘以(-1),x + y的中心变换输入图像进行滤波。(b) 一个真正的函数相乘所得到的(复杂的)的阵列(在这个意义上的实系数乘以变换 的实部和虚部)。回想一下,对相应的元件上完成两幅图像的乘法。(c) 计算傅立叶逆变换。(d) 结果乘以
2、(-1)x + y的实部。(e) 计算频谱。基本上,这个项目实现了图。 4.5 。如果您正在使用 MATLAB ,那么您的傅立叶变换程 序将不会受到限制,其大小是 2的整数次幂的图像。如果要实现自己的计划,那么您所使用 的FFT例程可能被限制到2的整数次幕。在这种情况下,你可能需要放大或缩小图像到适当 的大小,使用你的程序开发项目 02-04逼近:为了简化这个和以下的工程 (除项目 04-05 ),您可以忽略图像填充 ( 4.6.3 节)。 虽然你的结果不会完全正确, 将获得显着的简化, 不仅在图像的大小, 而且在需要裁剪的最 终结果。由这种近似的原则将不会受到影响结果如下:主要代码f=imr
3、ead(Fig4.04(a).jpg);H=imread(Fig4.04(a).jpg);subplot(3,2,1);imshow(f);title(a) 原图像 );M1,N1=size(f);f=im2double(f);M2,N2=size(H);H=im2double(H); %把灰度图像 I1 的数据类型转换成转换成双精度浮点类型for x=1:M1for y=1:N1f(x,y)=(-1F(x+y)*f(x,y);%用(-1 ) A(x+y)乘以输入图像,来实现中心化变换endendF=fft2(f); %使用函数 fft2 可计算傅立叶变换subplot(3,2,3);imsh
4、ow(F);title(b) 傅立叶变换的图像 );if(M2=1)&(N2=1)G=F(x,y)*H(x,y);elseif(M1=M2)&(N1=N2)for x=1:M1for y=1:N1 G(x,y)=F(x,y)*H(x,y);endendelseerror(输入图像有误,ERROR);end %通过两个图像的乘法程序,实现对相应元素的相乘g=ifft2(G);subplot(3,2,4);imshow(g);title(c) 傅立叶逆变换的图像 );for x=1:M1for y=1:N1 g(x,y)=(-1)A(x+y)*g(x,y);endendg=real(g);S=lo
5、g(1+abs(F); %计算傅立叶幅度谱并做对数变换subplot(3,2,5);plot(S); %二维图像显示幅度谱title(d) 二维图像显示幅度谱 );Q=angle(F); %计算傅立叶变换相位谱subplot(3,2,6);plot(Q);title(e) 二维图像显示相位谱 ); %二维图像显示相位谱结果截图图 1 傅里叶变换及频谱图结果分析:图1中(a)是原始灰度图像,对原图进行傅里叶变换,用( -1) A(x+y)乘以输入图像来实现中心化变换得到(b),( c)为傅里叶变换的逆变换得到的图像。对应( d)、( e)分别为计算的幅度谱和相位谱。2.2 、傅立叶频谱和平均值本
6、项目的重点是 :(a) 下载图。4.18 (a)和计算(居中)傅立叶频谱。(b) 显示频谱。(c) 使用(a)中计算图像的平均值的结果 结果如下 :主要代码%abs-取绝对值和复数幅度%fft2- 求二维离散傅立叶变换I = imread(Fig4.11(a).jpg);II %直流分量移到频谱中心%平均值计算%傅立叶谱图像%中心化的傅立叶谱图像= fft2(I);X = fftshift(abs(I1);m,n = size(X);Average_value = X(m/2+1,n/2+1)/(m*n)I1 = abs(I1)*256/max(max(abs(I1);X = X*256/ma
7、x(max(X); subplot(1,3,1);imshow(I);title(a)原图像);subplot(1,3,2);imshow(I1);title(b) 傅立叶谱图像 );subplot(1,3,3);imshow(X);title(c) 中心化的傅立叶谱图像 ); 结果截图图 1 计算图像的频谱图并中心化图 3 平均值结果分析:图2中(a)为原始图像,先对图像进行傅里叶变换得到( b),然后移至频谱中心得到(c),图3为图像的平均值的结果,此结果是在 matlab窗口中实现的。2.3 、低通滤波 本项目的重点是 :(a) 实现高斯低通滤波器式。 (4.3-7 )。你必须能够指定大
8、小, MX N的,由此产生的2功能。此外,你必须能够指定二维高斯函数的中心位置(b) 下载图。4.11 (一)这个形象是同图。4.18 (a)和低通滤波器中取得图。4.18(三)结果如下:主要代码I=imread(Fig4.11(a).jpg)subplot(1,2,1);imshow(I);title(a) 原始图像 );s=fftshift(fft2(I);M,N=size(s); %分别返回s的行数到M中,列数到N中n=2; %对n赋初值%高斯低通滤波,这里以标准差 d0=30来分析图像d0=30; %初始化 d0n仁floor(M/2); %对M/2进行取整n2=floor(N/2);
9、 % 对 N/2 进行取整for i=1:Mfor j=1:Nd=sqrt(i-门1)人2+。-n2)9); %点(i,j)到傅立叶变换中心的距离h=1*exp(-1/2*(dA2/d0A2); %GLPF 滤波函数s(i,j)=h*s(i,j); %GLPF滤波后的频域表示endends=ifftshift(s); %对 s进行反 FFT移动%对s进行二维反离散的Fourier变换后,取复数的实部转化为无符号 8位整数s=uint8(real(ifft2(s);%创建图形图像对象subplot(1,2,2);imshow(s); %显示高斯低通滤波处理后的图像title(b) 高斯低通滤波
10、(d0=30);结果截图图 2 高斯低通实现的图像结果分析:d0=15图4中(a)为原始图像,将原始图像经过高斯低通滤波, 得到(b),这里以标准差 来分析图像。2.4 、使用一个低通图像高通滤波本项目的重点是 :(a) 从原来的 04-03 项目减去你的形象得到锐化后的图像,如式。 (4.4-14 )。你会注意到,生成的图像并不像高斯高通图。 4.26 。解释为什么会是这样4.26(b) 调整的方差高斯低通滤波器,直到图像相减得到的结果看起来类似于 图。 (三)。解释你的结果结果如下 :主要代码I=imread(Fig4.11(a).jpg)s=fftshift(fft2(I);M,N=si
11、ze(s); %分别返回s的行数到M中,列数到N中n=2; %对n赋初值%高斯低通滤波,这里以标准差 d0=30来分析图像d0=30; %初始化 d0n1=floor(M/2); %对 M/2 进行取整n2=floor(N/2); % 对 N/2 进行取整for i=1:Mfor j=1:Nd=sqrt(i-门1)人2+。-n2)9); %点(i,j)到傅立叶变换中心的距离h=1*exp(-1/2*(dA2/d0A2); %GLPF 滤波函数s(i,j)=h*s(i,j); %GLPF滤波后的频域表示endends=ifftshift(s); %对 s进行反 FFT移动%对s进行二维反离散的F
12、ourier变换后,取复数的实部转化为无符号 8位整数s=uint8(real(ifft2(s);%创建图形图像对象%显示高斯低通滤波处理后的图像subplot(1,2,1);imshow(s);title(a) 高斯低通滤波实现的图片 );s=fftshift(fft2(I);M,N=size(s); %分别返回s的行数到M中,列数到N中n=2; %对n赋初值%高斯高通滤波,这里以标准差 d0=30来分析图像d0=30; %初始化 d0n1=floor(M/2); %对 M/2 进行取整n2=floor(N/2); % 对 N/2 进行取整for i=1:Mfor j=1:Nd=sqrt(i
13、-门1)人2+。-n2)9); %点(i,j)到傅立叶变换中心的距离h=1-1*exp(-1/2*(dA2/d0A2); %GLPF 滤波函数s(i,j)=h*s(i,j); %GLPF滤波后的频域表示endends=ifftshift(s); %对 s进行反 FFT移动%对s进行二维反离散的Fourier变换后,取复数的实部转化为无符号 8位整数s=uint8(real(ifft2(s);%创建图形图像对象subplot(1,2,2);imshow(s); %显示高斯高通滤波处理后的图像title(b )高斯高通滤波实现的图片 );结果截图图 3 高通实现的图像结果分析:图5中(a)为经过高
14、斯低通处理的图像,将此图像经过高斯高通处理得到( b)。2.5 、在频域的相关性本项目的重点是 :下载图。4.41 (a)及(b)和重复例4.11获得图。4.41 (E)。给(的x, y)的二维相关函数中的最大值的位置的坐标。有没有必要在图中绘制的档案中。 4.41 (F)结果如下 : 主要代码 clear;clc;fa=imread(fig4.41(a).jpg);fb=imread(fig4.41(b).jpg); subplot(2,2,1);imshow(fa);title(a) 原始图像 ); subplot(2,2,2);imshow(fb);title(b) 模板 );A B=s
15、ize(fa);C D=size(fb); expfa=zeros(A+C-1,B+D-1); expfb=zeros(A+C-1,B+D-1); expfa(1:A,1:B)=fa;expfb(1:C,1:D)=fb; subplot(2,2,3);imshow(expfa); title(c) 图像延拓 );subplot(2,2,4); imshow(expfb); title(d) 图像延拓 );H=real(ifft2(fft2(expfa).*fft2(rot90(expfb,2),293,297);% 求相关性 figure;imshow(H,)值最大的地方最title(e) 两
16、图像延拓之后的相关函数 );max(H(:) %求取最大的相关值 因为是利用模板做的相关运算,相关thresh=21417100;%设置一个略低于最大相关值的阈值figure;imshow(H thresh)% 显示定位 .title(f ) 图像定位 );结果截图图 4 两原始图像的延拓图 7 延拓之后图像图8 图像定位图 9 结果结果分析:图6中(a)是图像,(b)是模板。延拓后的图像如图 6中的(c)、(d)所示。两延拓 图像的空间域相关以图像形式显示与图 7中的(e),图8中的(f)显示的是图像的定位图。3课程设计总结与体会本次实验,通过使用 MATLAB 中的图像处理工具箱中的函数,对每个图像处理函数的 功能都有了深入了认识。 了解了日常看到的图片为什么会有各种模糊问题, 也知道了该如何 解决一些基本的图像问题。希望下次能知道更多使用 MA TLAB 来解决新的问题。