function Badworth_Filter_Callback(hObject, eventdata, handles)%巴特沃斯高通滤波 % hObject handle to Badworth_Filter (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) axis off; %%关闭坐标轴显示 global im; %%声明全局变量 global str; im = imread(str); I=im2double(im); A=imnoise(I,'salt & pepper',0.01); %椒盐噪声 J=fftshift(fft2(A)); [x, y]=meshgrid(-128:127, -128:127); %产生离散数据 z=sqrt(x.^2+y.^2); %幅度值 D1=30; %滤波器的截止频率 阶 n=4,截断频率为 D0=30 n=4; %滤波器的阶数 H1=1./(1+(D1./z).^(2*n)); %滤波器1 K1=J.*H1; %滤波 L1=ifft2(ifftshift(K1)); %傅里叶反变换 axes(handles.axes2); imshow(real(L1));
时间: 2024-03-15 11:42:18 浏览: 74
这是一个MATLAB程序,实现了巴特沃斯高通滤波。程序首先读取一个图片,然后添加了椒盐噪声。接着,进行FFT变换,产生离散数据,并计算幅度值。然后,设置滤波器的截止频率和阶数,根据公式计算出滤波器1,对数据进行滤波,最后进行傅里叶反变换,显示处理后的图片。程序中用到了MATLAB中的许多函数,比如imread、im2double、imnoise、fftshift、meshgrid、sqrt、ifft2、ifftshift、imshow等。
相关问题
function butterworth_low_Callback(hObject, eventdata, handles)%巴特沃斯低通滤波 % hObject handle to butterworth_low (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) axis off %%关闭坐标轴显示 global im; %%声明全局变量 global str; im=imread(str); I=im2double(im); A=imnoise(I,'salt & pepper',0.06); %椒盐噪声 J=fftshift(fft2(A)); [x, y]=meshgrid(-128:127, -128:127); %产生离散数据 z=sqrt(x.^2+y.^2); %幅度值 D1=40; %滤波器的截止频率 n=4; %滤波器的阶数 H1=1./(1+( z/D1).^(2*n)); %滤波器1 K1=J.*H1; %滤波 L1=ifft2(ifftshift(K1)); %傅里叶反变换 axes(handles.axes2); imshow(real(L1));给我修改一下
function butterworth_low_Callback(hObject, eventdata, handles)%巴特沃斯低通滤波
% hObject handle to butterworth_low (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
axis off; %%关闭坐标轴显示
global im; %%声明全局变量
global str;
im = imread(str);
I = im2double(im);
A = imnoise(I,'salt & pepper',0.06); %椒盐噪声
J = fftshift(fft2(A));
[x, y] = meshgrid(-128:127, -128:127); %产生离散数据
z = sqrt(x.^2 + y.^2); %幅度值
D1 = 40; %滤波器的截止频率
n = 4; %滤波器的阶数
H1 = 1./(1 + (z/D1).^(2*n)); %滤波器1
K1 = J.*H1; %滤波
L1 = real(ifft2(ifftshift(K1))); %傅里叶反变换并取实部
axes(handles.axes2);
imshow(L1); %显示滤波后的图像
阅读全文
相关推荐














