灰度图像频域处理的信号课程设计.docx
《灰度图像频域处理的信号课程设计.docx》由会员分享,可在线阅读,更多相关《灰度图像频域处理的信号课程设计.docx(13页珍藏版)》请在冰豆网上搜索。
灰度图像频域处理的信号课程设计
信号课程设计
题目:
灰度图像频域处理
1.理论目的
《信号与系统》课程设计的目的之一是为了巩固课堂理论学习,并能用所学理论知识正确分析信号处理的基本问题和解释信号处理的基本现象。
2.实践目的
正确理解二维傅里叶变换及滤波的基本概念,掌握低通、高通滤波器。
3、内容和要求
提供给学生一幅灰度图像(house.bmp,下载地址)。
(1)使用Matlab中的imread命令读取图像,并用imshow显示图像。
(2)将图像数据变换到二维频域(采用命令fft2),判断该图像的截止频率。
在频域进行低通滤波和高通滤波,恢复空域结果(采用命令ifft2),比较滤波前后的图像差异。
(3)设计一个差分滤波器,得到对该图像的二维一阶差分结果。
Matlab命令:
imread,imshow,fft2,fftshift
一、摘要
本次课程设计主要是利用MATLAB-图像处理工具箱,对二维信号(数字图像)进行快速傅立叶变换与反变换,并且设计差分滤波器、低通滤波器和高通滤波器对二维信号(数字图像)进行滤波。
关键词:
图像处理工具箱、二维数字图像处理、低通滤波、高通滤波、差分滤波
1、二维信号采集
2、1.1图像的选取
从所给网址下载图像并存于D盘中命名为house,得到原图如下
图1选取的需要处理的原图
1.2图像的读取
MATLAB是解释型语言,就是说MATLAB命令行中敲入的命令在当前MATLAB进程中被解释运行。
利用函数imread()可完成图形图像文件的读取,语法:
MATLAB程序:
imshow(f);
f=imread('D:
\house.bmp');
imshow(f);
title('原图');
图2MATLAB中读取图像的效果图
2、将图像数据变换到二维频域
MATLAB为计算数据的离散快速傅立叶变换,提供了一系列丰富的数学函数,主要有Fft、Ifft,Fft2、Ifft2,Fftn、Ifftn和Fftshift、Ifftshift等。
当所处理的数据的长度为2的幂次时,采用基-2算法进行计算,计算速度会显著增加。
所以,要尽可能使所要处理的数据长度为2的幂次或者用添零的方法来添补数据使之成为2的幂次。
2.1利用命令fft2判断截止频率
MATLAB程序:
f=imread('D:
\house.bmp');
imshow(f);
C=fft2(double(f));
D=fftshift(fft2(double(f)));
E=ifft2(D);
>>figure,imshow(log(abs(D)+1),[]);
>>title('变换频谱图');
图3直接变换频谱图
从图像可以看出,图中两竖线与X轴线的交点就是截止频率。
3、低通滤波处理
3.1低通滤波器介绍
低通滤波器是容许低于截至频率的信号通过,但高于截止频率的信号不能通过的电子滤波装置。
对于不同滤波器而言,每个频率的信号的减弱程度不同。
当使用在音频应用时,它有时被称为高频剪切滤波器,或高音消除滤波器。
低通滤波器概念有许多不同的形式,其中包括电子线路、图像模糊处理等等,这两个工具都通过剔除短期波动、保留长期发展趋势提供了信号的平滑形式。
低通滤波器有很多种,其中,最通用的就是巴特沃斯滤波器和切比雪夫滤波器。
3.1.1巴特沃斯滤波器
巴特沃斯滤波器,又被称为“最平”的幅频响应滤波器。
这是因为,该滤波器在通带内具有最大平坦的幅度特性,而且随着频率升高呈现出出单调减小的特点。
巴特沃斯滤波器的特点是通频带内的频率响应曲线最大限度平坦,没有起伏,而在阻频带则逐渐下降为零。
在振幅的对数对角频率的波得图上,从某一边界角频率开始,振幅随着角频率的增加而逐步减少,趋向负无穷大。
一阶巴特沃斯滤波器的衰减率为每倍频6分贝,每十倍频20分贝。
二阶巴特沃斯滤波器的衰减率为每倍频12分贝、三阶巴特沃斯滤波器的衰减率为每倍频18分贝、如此类推。
巴特沃斯滤波器的振幅对角频率单调下降,并且也是唯一的无论阶数,振幅对角频率曲线都保持同样的形状的滤波器。
只不过滤波器阶数越高,在阻频带振幅衰减速度越快。
其他滤波器高阶的振幅对角频率图和低级数的振幅对角频率有不同的形状。
3.2二维信号(数字图像)的低通滤波处理
先对二维信号(数字图像)进行FFT,然后进行低通滤波(即去掉高频分量),然后再反变换,得到滤波图像。
M=imread('D:
\house.bmp');%原图
figure,imshow(M)
title('原图')
F=fft2(M);%对原图像进行傅里叶变换
F=fftshift(F);
figure;imshow(log(abs(F)),[]);%显示傅里叶变换图像
title('快速傅立叶变换(FFT)图像')
[M,N]=size(F);
nn=2;%二阶巴特沃斯低通
d0=100;
m=fix(M/2);n=fix(N/2);
fori=1:
M
forj=1:
N
d=sqrt((i-m)^2+(j-n)^2);
h=1/(1+0.414*(d/d0)^(2*nn));%过滤器传递函数
result(i,j)=h*F(i,j);
end
end
result=ifftshift(result);
J1=ifft2(result);%傅里叶反变换
J2=uint8(real(J1));
figure,imshow(J2);%显示滤波图像
title('低通滤波图像100')
显示图像分别为原始图像、快速傅立叶变换(FFT)图像、低通滤波图像。
其中快速傅立叶变换(FFT)图像如图5所示,低通滤波图像(d0=100)如图6所示,
低通滤波图像(d0=50)如图7所示,低通滤波图像(d0=10)如图8所示。
图4原图图5快速傅立叶变换(FFT)图像
图6低通滤波图像(d0=100)
图7低通滤波图像(d0=50)图8低通滤波图像(d0=10)
3.3结果分析
根据低通滤波后图像显示可知:
当改变d0的取值时,滤波结果不同。
当d0=100时,滤波图像如图6所示,当d0=50时,滤波图像如图7所示,当d0=10时,滤波图像如图8所示,随着d0逐渐减小,图像越来越模糊,滤波带宽越窄,效果越来越差。
可见,d0的取值与滤波效果有着密切的关系,d0越大,滤波带宽越宽,能通过低通滤波器的频率范围越大,图像越清晰。
4高通滤波处理
4.1高通滤波器介绍
高通滤波是只对低于某一给定频率以下的频率成分有衰减作用,而允许这个截频以上的频率成分通过,并且没有相位移的滤波过程。
主要用来消除低频噪声,也称低截止滤波器。
4.2二维信号(数字图像)的高通滤波处理
先对二维信号(数字图像)进行FFT,然后进行低通滤波(即去掉高频分量),然后再反变换,得到滤波图像。
MATLAB代码为:
M=imread('D:
\house.bmp');%读入原始图像
F=fft2(M);%傅里叶变换
F=fftshift(F);
figure;imshow(log(abs(F)),[]);
title('快速傅立叶变换(FFT)图像')
[M,N]=size(F);
nn=2;%二阶巴特沃斯高通滤波
d0=100;
m=fix(M/2);n=fix(N/2);
fori=1:
M
forj=1:
N
d=sqrt((i-m)^2+(j-n)^2);
if(d==0)
h=0;
else
h=1/(1+0.414*(d0/d)^(2*nn));%变换参数计算
end
result(i,j)=h*F(i,j);
end
end
result=ifftshift(result);
J1=ifft2(result);%傅里叶反变换
J2=uint8(real(J1));
figure,imshow(J2);%显示滤波图像
title('高通滤波图像100')
显示图像分别为原始图像、快速傅立叶变换(FFT)图像、高通滤波图像。
其中高通滤波图像(d0=100)如图9所示,高通滤波图像(d0=50)如图10所示,高通滤波图像(d0=10)如图11所示。
图9高通滤波图像(d0=100)图10高通滤波图像(d0=50)
图11高通滤波图像(d0=10)
4.3结果分析
根据高通滤波后图像显示可知:
当改变d0的取值时,滤波结果不同。
当d0=100时,滤波图像如图9所示,当d0=50时,滤波图像如图10所示,当d0=10时,滤波图像如图11所示,随着d0逐渐减小,图像越来越亮,滤波效果越来越差。
可见,d0的取值与滤波效果有着密切的关系,d0越大,滤波效果越好。
5.二维信号(数字图像)的FFT及其逆变换
MATLAB程序:
I=imread('D:
\house.bmp');
C=fft2(double(I));%对图像进行傅立叶变换
D=fftshift(fft2(double(I)));%将直流分量移到频谱图的中心
E=ifft2(D);%傅立叶反变换
figure,%画图像原始图
imshow(I);
title('傅里叶变换原图');
figure,%画直接变换频谱图
imshow(log(abs(D)+1),[]);
title('直接变换频谱图');
figure,%显示反傅立叶变换后的图像
imshow(abs(E),[]);
title('反傅里叶变换图');
图12傅里叶变换原图图13反傅里叶变换图
5.3对变换后的图像的说明
在时域处理图像并不能得到很好的结果,我们需要把图像转化到频域空间去处理。
在频域空间里,Fourier变换具有很好的性质,他使我们能够定量地分析诸如数字化系统、采样点、电子放大器、卷积滤波器、噪声、显示点等的作用。
本图经过傅里叶变换之后,能够很方便的去除噪音,使图像更清晰。
当然傅里叶变换还有很多其他功能,要在后面更加深入的运用时才能体现出来。
6、差分法
functiondimg=mipcentraldiff(img,direction)
img=padarray(img,[11],'symmetric','both');
[row,col]=size(img);
dimg=zeros(row,col);
switch(direction)
case'dx',
dimg(:
2:
col-1)=(img(:
3:
col)-img(:
1:
col-2))/2;
case'dy',
dimg(2:
row-1,:
)=(img(3:
row,:
)-img(1:
row-2,:
))/2;
otherwise,
disp('Directionisunknown');
end
dimg=dimg(2:
end-1,2:
end-1);
>>I=imread(‘D:
\house.bmp');
>>Ix=chafen(I,'dx');
>>Ixy=chafen(Ix,'dy');
>>imshow(I);title('原图像')
>>figure;imshow(Ixy);title('差分滤波后图像')
图14原图图15差分滤波后图像:
6总结与体会
做完了这次信号课程设计之后,我发现信号与系统的功能非常多。
平时课上所学的一些知识才渐渐明白。
而且我发现图像处理似乎还比较有意思。
在短短的几天时间中,我独立完成了信号的课程设计报告相关资料的查询和搜集、程序的编写、相关参数的整理和分析、等任务。
在课程设计的过程中,自己遇到了这样那样的困难,很多程序总是因为这里那里的一点小问题,运行不出结果,让人很头疼。
但最后运用自己的相关知识、询问同学、查阅相关资料,跟同学们共同研究,最后成功克服了它们。
总的来说,这次课程设计让我对信号这门课程有了更深刻的了解,对高通、低通滤波器的原理有了更深刻的了解,掌握了一些设计滤波器的基本方法,提高了理论用于实践的能力,掌握了更多专业相关的使用知识与技能。
同时,也暴露了我很多的不足,在以后的学习中,将进一步发扬有点,克服缺点。