matlab实现频率域平滑滤波器和锐化滤波器函数
时间: 2023-06-26 21:04:15 浏览: 113
平滑滤波Matlab实现
5星 · 资源好评率100%
频率域平滑滤波器函数:
```matlab
function [output] = freq_smooth_filter(input, D0)
% input为输入图像,D0为平滑半径
% output为滤波后的图像
% 获取输入图像的大小
[M, N] = size(input);
% 计算傅里叶变换
F = fft2(input);
% 构造平滑滤波器
H = zeros(M, N);
for i = 1:M
for j = 1:N
D = sqrt((i-M/2)^2 + (j-N/2)^2);
H(i,j) = exp(-(D^2)/(2*D0^2));
end
end
% 滤波
G = H .* F;
% 计算傅里叶反变换
output = real(ifft2(G));
end
```
频率域锐化滤波器函数:
```matlab
function [output] = freq_sharp_filter(input, alpha, D0)
% input为输入图像,alpha为锐化系数,D0为平滑半径
% output为滤波后的图像
% 获取输入图像的大小
[M, N] = size(input);
% 计算傅里叶变换
F = fft2(input);
% 构造平滑滤波器
H = zeros(M, N);
for i = 1:M
for j = 1:N
D = sqrt((i-M/2)^2 + (j-N/2)^2);
H(i,j) = 1 - exp(-(D^2)/(2*D0^2));
end
end
% 构造锐化滤波器
L = alpha + (1-alpha) * H;
% 滤波
G = L .* F;
% 计算傅里叶反变换
output = real(ifft2(G));
end
```
其中,D0为平滑半径,alpha为锐化系数。需要注意的是,频率域锐化滤波器可能会引入噪声,因此需要进行适当的平滑操作。在实际应用中,可以根据具体情况调整参数,达到最佳效果。
阅读全文