实验五图像高通和低通滤波处理一、实验目的掌握常用频域高通滤波器和低通滤波器的设计。进一步加深理解和掌握图像频谱的特点和频域高通滤波及频域低通滤波的原理。理解图象高通滤波和低通滤波的处理过程和特点。二、实验要求1.实验之前要预习2.独立完成程序的编写3.写出实验报告4.实验每组1人实验设备:每组计算机一台三、实验原理低通滤波器:容许低频信号通过,但减弱(或减少)频率高於截止频率的信号的通过。用在绘制长期走势或均化。高通滤波器:容许高频信号通过、但减弱(或减少)频率低於截止频率信号通过的滤波器。强调细节。二维理想高通滤波器的传递函数为:000.(,)(,)1.(,)DuvDHuvDuvDD0是从频率矩形中点测得的截止频率长度,它将以D0为半径的圆周内的所有频率置零,而毫不衰减地通过圆周外的任何频率。但其物理上是不可实现的。巴特沃斯高通滤波器的传递函数为:201(,)1[](,)nHuvDDuv式中D0为截止频率距远点距离。与低通滤波器的情况一样,可认为巴特沃斯高通型滤波器比IHPF更平滑。高斯高通滤波器传递函数为:220(,)/2(,)1DuvDHuve高通滤波器能够用高斯型低通滤波器的差构成。这些不同的滤波器有更多的参数,因此能够对滤波器的形状进行更多的控制。四、实验内容1.对数字图象进行低通滤波处理2.对数字图象进行高通滤波处理3.比较和分析所得到的结果。五、实验过程1.流程图开始选择打开图片图像格式正确是否在axes1中显示原始图像下拉菜单选项巴特沃兹低通滤波巴特沃兹高通滤波调用巴特沃兹高通滤波算法调用巴特沃兹低通滤波算法axes2中显示巴特沃兹高通滤波后图像axes3中显示巴特沃兹低通滤波后图像调用理想高通滤波算法调用理想低通滤波算法axes4中显示理想高通滤波后图像axes5中显示理想低通滤波图像理想高通滤波理想低通滤波2.试验程序%----------------------------选择图片路径及显示---------------------------%globalf%选择图片路径[filename,pathname]=...%...表示与下行连接uigetfile({'*.bmp';'*.jpg';'*gif';'*tif'},'选择图片');%打开文件类型,对话框名称f=imread([pathnamefilename]);axes(handles.axes1);%在axes1显示原图像imshow(f);title('原始图像');%---Executesonselectionchangeinpopupmenu1.functionpopupmenu1_Callback(hObject,eventdata,handles)%hObjecthandletopopupmenu1(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)%Hints:contents=get(hObject,'String')returnspopupmenu1contentsascellarray%contents{get(hObject,'Value')}returnsselecteditemfrompopupmenu1globalfva=get(handles.popupmenu1,'Value');val=get(hObject,'Value');switchval%用switch语句设置选项case1%巴特沃斯高通滤波器g=fft2(f);%傅立叶变换g=fftshift(g);%转换数据矩阵[M,N]=size(g);nn=2;%二阶Butterworth高通滤波器d0=20;%截止频率为10m=fix(M/2);n=fix(N/2);fori=1:Mforj=1:Nd=sqrt((i-m)^2+(j-n)^2);h=1/(1+d0/(0.414*d)^(2*nn));%计算高通滤波器传递函数result(i,j)=h*g(i,j);endendresult=ifftshift(result);y2=ifft2(result);y3=uint8(real(y2));axes(handles.axes2);imshow(y3);%显示滤波处理后的图像title('巴特沃斯高通滤波');case2%巴特沃斯低通滤波g=fft2(f);%傅立叶变换g=fftshift(g);%转换数据矩阵[M,N]=size(g);nn=2;%二阶巴特沃斯(Butterworth)低通滤波器d0=30;%截止频率为10m=fix(M/2);n=fix(N/2);fori=1:Mforj=1:Nd=sqrt((i-m)^2+(j-n)^2);h=1/(1+0.414*(d/d0)^(2*nn));%计算低通滤波器传递函数result(i,j)=h*g(i,j);endendresult=ifftshift(result);y2=ifft2(result);y3=uint8(real(y2));axes(handles.axes3);imshow(y3);%显示滤波处理后的图像title('巴特沃斯低通滤波')case3%理想高通滤波k=fft2(f);%傅立叶变换g=fftshift(k);%转换数据矩阵[M,N]=size(g);d0=10;%截止频率为10m=fix(M/2);n=fix(N/2);fori=1:Mforj=1:Nd=sqrt((i-m)^2+(j-n)^2);%计算高通滤波器传递函数ifd=d0h=0;elseh=1;endresult(i,j)=h*g(i,j);endendresult=ifftshift(result);y2=ifft2(result);y3=uint8(real(y2));axes(handles.axes4);imshow(y3);title('理想高通滤波')case4%理想低通滤波k=fft2(f);%傅立叶变换g=fftshift(k);%转换数据矩阵[M,N]=size(g);d0=30;%截止频率为30m=fix(M/2);n=fix(N/2);fori=1:Mforj=1:Nd=sqrt((i-m)^2+(j-n)^2);%计算高通滤波器传递函数ifd=d0h=1;elseh=0;endresult(i,j)=h*g(i,j);endendresult=ifftshift(result);y2=ifft2(result);y3=uint8(real(y2));axes(handles.axes5);imshow(y3);title('理想低通滤波')end;3.实验结果六、实验总结通过这次实验进一步加深了对图像高通和低通滤波的原理的理解和认识,运用MATLAB语言加以实现,锻炼了自己以程序语言实现内容的能力,并提高了解决问题的能力。在编程过程中也遇到了一些问题,经过不断的修正和调试,最终实现了实验内容,熟练了MATLAB平台的使用,并提高了对数字图像处理这门课程的理解和认识。