基于matlab写一段实现维纳滤波的代码
时间: 2024-05-28 13:08:35 浏览: 61
维纳滤波的matlab实现
5星 · 资源好评率100%
function output = wiener_filter(input, psf, noise_var)
% input: 输入图像
% psf: 模糊点扩散函数
% noise_var: 噪声方差
% 对输入图像进行快速傅里叶变换
input_fft = fft2(input);
% 对模糊点扩散函数进行快速傅里叶变换
psf_fft = fft2(psf, size(input, 1), size(input, 2));
% 计算维纳滤波器的频域表达式
wiener_filter_fft = conj(psf_fft) ./ (abs(psf_fft).^2 + noise_var./abs(input_fft).^2);
% 对输入图像进行维纳滤波
output_fft = wiener_filter_fft .* input_fft;
% 对输出图像进行反变换得到空域图像
output = ifft2(output_fft);
% 对结果进行归一化
output = output ./ max(output(:));
end
阅读全文