《数字图像处理》课程设计报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1.课程设计目的

1、提高分析问题、解决问题的能力,进一步巩固数字图像处理系统中的基本原理与方

法。

2、熟悉掌握一门计算机语言,可以进行数字图像的应用处理的开发设计。

2.课程设计内容及实现

2.1、二维快速傅立叶变换:

本项目的重点是:

这个项目的目的是开发一个2-D FFT程序“包”,将用于在其他几个项目。您的实现必须有能力:

(a)乘以(-1),x + y的中心变换输入图像进行滤波。

(b) 一个真正的函数相乘所得到的(复杂的)的阵列(在这个意义上的实系数乘以变换

的实部和虚部)。回想一下,对相应的元件上完成两幅图像的乘法。

(c) 计算傅立叶逆变换。

(d) 结果乘以(-1)x + y的实部。

(e) 计算频谱。

基本上,这个项目实现了图。4.5。如果您正在使用MATLAB,那么您的傅立叶变换程序将不会受到限制,其大小是2的整数次幂的图像。如果要实现自己的计划,那么您所使用的FFT例程可能被限制到2的整数次幂。在这种情况下,你可能需要放大或缩小图像到适当的大小,使用你的程序开发项目02-04

逼近:为了简化这个和以下的工程(除项目04-05),您可以忽略图像填充(4.6.3节)。虽然你的结果不会完全正确,将获得显着的简化,不仅在图像的大小,而且在需要裁剪的最终结果。由这种近似的原则将不会受到影响

结果如下:

主要代码

f=imread('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:M1

for y=1:N1

f(x,y)=(-1)^(x+y)*f(x,y); %用(-1)^(x+y)乘以输入图像,来实现中心化变换

end

end

F=fft2(f); %使用函数fft2可计算傅立叶变换

subplot(3,2,3);

imshow(F);

title('(b)傅立叶变换的图像');

if(M2==1)&&(N2==1)

G=F(x,y)*H(x,y);

elseif((M1==M2)&&(N1==N2))

for x=1:M1

for y=1:N1

G(x,y)=F(x,y)*H(x,y);

end

end

else

error('输入图像有误','ERROR');

end %通过两个图像的乘法程序,实现对相应元素的相乘

g=ifft2(G);

subplot(3,2,4);

imshow(g);

title('(c)傅立叶逆变换的图像');

for x=1:M1

for y=1:N1

g(x,y)=(-1)^(x+y)*g(x,y);

end

end

g=real(g);

S=log(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)^(x+y)乘以输入图像,来实现中心化变换得到(b),(c)为傅里叶变换的逆变换得到的图像。对应(d)、(e)分别为计算的幅度谱和相位谱。

2.2、傅立叶频谱和平均值

本项目的重点是:

(a)下载图。 4.18(a)和计算(居中)傅立叶频谱。

(b)显示频谱。

(c)使用(a)中计算图像的平均值的结果

结果如下:

主要代码

%abs-取绝对值和复数幅度

%fft2-求二维离散傅立叶变换

I = imread('Fig4.11(a).jpg');

I1 = 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/max(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)。你必须能够指定大小,M×N的,由此产

生的2D功能。此外,你必须能够指定二维高斯函数的中心位置

(b)下载图。4.11(一)[这个形象是同图。 4.18(a)〕和低通滤波器中取得图。

4.18(三)

结果如下:

主要代码

I=imread('Fig4.11(a).jpg')

subplot(1,2,1);

imshow(I);

title('(a)原始图像');

相关文档
最新文档