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

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)中心化的傅立叶谱图像');

结果截图

图 2 计算图像的频谱图并中心化

图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)原始图像');

s=fftshift(fft2(I));

[M,N]=size(s);                     %分别返回s的行数到M中,列数到N中

n=2;                                  %对n赋初值

%高斯低通滤波,这里以标准差d0=30来分析图像

d0=30;                                %初始化d0

n1=floor(M/2);                          %对M/2进行取整

n2=floor(N/2);                           %对N/2进行取整

for i=1:M

    for j=1:N

        d=sqrt((i-n1)^2+(j-n2)^2);         %点(i,j)到傅立叶变换中心的距离

               h=1*exp(-1/2*(d^2/d0^2));  %GLPF滤波函数

        s(i,j)=h*s(i,j);                   %GLPF滤波后的频域表示

    end

end

s=ifftshift(s);                           %对s进行反FFT移动

%对s进行二维反离散的Fourier变换后,取复数的实部转化为无符号8位整数

s=uint8(real(ifft2(s)));                                    

                            %创建图形图像对象

subplot(1,2,2);

imshow(s);                             %显示高斯低通滤波处理后的图像

title('(b)高斯低通滤波(d0=30)');

结果截图

图 4 高斯低通实现的图像

结果分析:

图4中(a)为原始图像,将原始图像经过高斯低通滤波,得到(b),这里以标准差d0=15来分析图像。

2.4使用一个低通图像高通滤波

本项目的重点是:

(a)         从原来的04-03项目减去你的形象得到锐化后的图像,如式。 (4.4-14)。你会注意到,生成的图像并不像高斯高通图。 4.26。解释为什么会是这样

(b)    调整的方差高斯低通滤波器,直到图像相减得到的结果看起来类似于     图。 4.26(三)。解释你的结果

结果如下:

主要代码

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

s=fftshift(fft2(I));

[M,N]=size(s);                     %分别返回s的行数到M中,列数到N中

n=2;                                  %对n赋初值

%高斯低通滤波,这里以标准差d0=30来分析图像

d0=30;                                %初始化d0

n1=floor(M/2);                          %对M/2进行取整

n2=floor(N/2);                           %对N/2进行取整

for i=1:M

    for j=1:N

        d=sqrt((i-n1)^2+(j-n2)^2);         %点(i,j)到傅立叶变换中心的距离

               h=1*exp(-1/2*(d^2/d0^2));  %GLPF滤波函数

        s(i,j)=h*s(i,j);                   %GLPF滤波后的频域表示

    end

end

s=ifftshift(s);                           %对s进行反FFT移动

%对s进行二维反离散的Fourier变换后,取复数的实部转化为无符号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;                                %初始化d0

n1=floor(M/2);                          %对M/2进行取整

n2=floor(N/2);                           %对N/2进行取整

for i=1:M

    for j=1:N

        d=sqrt((i-n1)^2+(j-n2)^2);         %点(i,j)到傅立叶变换中心的距离

               h=1-1*exp(-1/2*(d^2/d0^2));  %GLPF滤波函数

        s(i,j)=h*s(i,j);                   %GLPF滤波后的频域表示

    end

end

s=ifftshift(s);                           %对s进行反FFT移动

%对s进行二维反离散的Fourier变换后,取复数的实部转化为无符号8位整数

s=uint8(real(ifft2(s)));                                    

                            %创建图形图像对象

subplot(1,2,2);

imshow(s);                             %显示高斯高通滤波处理后的图像

title('(b)高斯高通滤波实现的图片');

结果截图

图 5 高通实现的图像

结果分析:

图5中(a)为经过高斯低通处理的图像,将此图像经过高斯高通处理得到(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]=size(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)两图像延拓之后的相关函数');

max(H(:))    %求取最大的相关值——因为是利用模板做的相关运算,值最大的地方最相关

thresh=21417100;%设置一个略低于最大相关值的阈值

figure;

imshow(H > thresh)%显示定位.

title('(f)图像定位');

结果截图

图 6 两原始图像的延拓

图7  延拓之后图像

图8 图像定位

图 9 结果

结果分析:

图6中(a)是图像,(b)是模板。延拓后的图像如图6中的(c)、(d)所示。两延拓图像的空间域相关以图像形式显示与图7中的(e),图8中的(f)显示的是图像的定位图。

3.课程设计总结与体会

    本次实验,通过使用MATLAB中的图像处理工具箱中的函数,对每个图像处理函数的功能都有了深入了认识。了解了日常看到的图片为什么会有各种模糊问题,也知道了该如何解决一些基本的图像问题。希望下次能知道更多使用MATLAB来解决新的问题。

 

第二篇:数字图像处理课程设计报告格式

数字图像处理》课程设计

——图像处理系统设计

指导教师:曹丽、周维达

班级:08电科(1)班

学号:X05640226

姓名:张三


数字图像处理课程设计任务书

一、题目:

XXXXXXXXXX

二、目的:

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

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

三、要求

3.1总体要求

    1、要充分认识课程设计对培养自己的重要性,认真做好设计前的各项准备工作。尤其是对编程软件的使用有基本的认识。

2、既要虚心接受老师的指导,又要充分发挥主观能动性。结合课题,独立思考,努力钻研,勤于实践,勇于创新。

3、独立按时完成规定的工作任务,不得弄虚作假,不准抄袭他人内容,否则成绩以不及格计。

4、在设计过程中,要严格要求自己,树立严肃、严密、严谨的科学态度,必须按时、按质、按量完成课程设计。

3.2实施要求

1、理解各种图像处理方法确切意义。

2、独立进行方案的制定,系统结构设计要合理。

3、在程序开发时,则必须清楚主要实现函数的目的和作用,需要在程序书写时说明做适当的注释。如果使用matlab来进行开发,要理解每个函数的具体意义和适用范围,在写课设报告时,必须要将主要函数的功能和参数做详细的说明。

4、通过多幅不同形式的图像来检测该系统的稳定性和正确性。

3.3 课程设计报告的内容及要求

在完成课题验收后,学生应在规定的时间内完成课程设计报告一份(不少于2000字)。

四、工作内容及工作计划:(一周,分散进行)

五、成绩评定标准与考核:

本课程设计的评价由三部分组成,包括程序演示(50%),课程设计报告(30%),回答教师提问(20%)。

1、   程序演示:

(1)   优       功能完善,全部测试正确,并且能够对局部进行完善

(2)   良       功能完善,但测试欠缺

(3)   中       功能基本完善,但程序尚有部分错误

(4)   及格     实现了主要功能基本完善,有部分功能尚未实现。

(5)   不及格   功能不完善,且程序错误较多,无法运行

2、   课程设计报告:

(1)   优       包括设计内容,设计思想,已经完成的任务及达到的目标,

设计思路清晰、书写条理清楚,源程序结构合理、清晰,注

释说明完整,有对本次课程设计的心得体会。

(2)   良       包括设计内容,设计思想,已经完成的任务及达到的目标,

设计思路基本清晰、书写条理基本清楚,源程序结构合理、

清晰,注释说明基本完整,有对本次课程设计的心得体会。

(3)   中       课程设计报告内容基本完整,思路较清晰,书写基本清楚,

源程序结构尚可,有注释说明但不完整

(4)   及格     课程设计报告内容基本完整,思路较差,书写尚清楚。

(5)   不及格   课程设计报告内容不完整,书写没有条理。

3、   回答教师提问:

(1)   优       能回答教师提出的所有问题,并完全正确,思路清晰

(2)   良       基本能回答教师提出的所有问题,有些小错误

(3)   中       基本能回答教师提出的问题,少数问题回答错误或不清楚

(4)   及格     能回答教师提出的问题,但较多问题回答错误或不能回答

(5)   不及格   基本不能回答教师提出的问题


一、实验目的

二、实验原理

三、实验步骤

四、实验结果

五、实验心得

六、主要代码


成绩评定表

相关推荐