butterworth matlab,Matlab实现Butterworth滤波器

下面是用Matlab实现的Butterworth高通、低通滤波器。

clc;clear all;close all;

I=imread‘cameraman.tif’);

subplot3,2,1);imshowI);

title‘原始图’);

f=doubleI); % 数据类型转换,MATLAB不支持图像的无符号整型的计算

g=fft2f); % 傅立叶变换

g=fftshiftg); % 转换数据矩阵

subplot3,2,2);imshowlog1+absg)),[]);

title‘傅里叶频谱’);

%低通滤波***************************************************************

[M,N]=sizeg);

nn=2; % 二阶巴特沃斯Butterworth)低通滤波器

d0=10;

m=floorM/2); n=floorN/2);

for i=1:M

for j=1:N

d=sqrti-m)^2+j-n)^2);

h=1/1+0.414*d/d0)^2*nn)); % 计算低通滤波器传递函数

resulti,j)=h*gi,j);

end

end

subplot3,2,3);imshowlog1+absresult)),[]);

title‘butterworth低通滤波’);

result=ifftshiftresult);

J2=ifft2result);

J3=uint8realJ2));

subplot3,2,4),imshowJ3); % 显示滤波处理后的图像

title‘低通滤波图’);

%高通滤波

for i=1:M

for j=1:N

d=sqrti-m)^2+j-n)^2);

h=1/1+0.414*d0/d)^2*nn));% 计算传递函数

resulti,j)=h*gi,j);

end

end

subplot3,2,5);imshowlog1+absresult)),[]);

title‘butterworth高通滤波’);

result=ifftshiftresult);

J2=ifft2result);

J3=uint8realJ2));

subplot3,2,6),imshowJ3); % 显示滤波处理后的图像

title‘高通滤波图’);

效果图:

0818b9ca8b590ca3270a3433284dd417.png0818b9ca8b590ca3270a3433284dd417.png

Published by

风君子

独自遨游何稽首 揭天掀地慰生平

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注