% Matlab实现维纳滤波的噪声抑制方法
% 该方法基于信噪比计算来确定滤波参数

% 导入需要处理的图像
im = imread('image.jpg');

% 添加高斯噪声
noise_im = imnoise(im,'gaussian',0,0.01);

% 计算噪声图像和原始图像的信噪比
SNR = @(x,y) 20*log10(norm(x(:))/norm(x(:)-y(:)));
snr_val = SNR(im, noise_im);

% 维纳滤波器参数的计算
[H,W] = size(im);
N = H*W;
K = 0.01;
alpha = K * N / snr_val;
h = fspecial('gaussian', [5,5], 2);
H = fft2(h, H, W);
S = abs(H).^2 ./ (abs(H).^2 + alpha);

% 应用滤波器
filtered_im = real(ifft2(S.*fft2(noise_im)));

% 显示结果
imshow(filtered_im);