帮我写一份数字图像处理的MATLAB代码,需要包括时域分析、频域分析、中值滤波增强,并且显示信干比和信噪比
时间: 2024-02-07 07:04:20 浏览: 217
好的,以下是一个简单的数字图像处理的MATLAB代码,实现了时域分析、频域分析、中值滤波增强,并且显示了信干比和信噪比:
```matlab
% 读入图像
img = imread('example.png');
% 显示原始图像
figure(1);
imshow(img);
title('原始图像');
% 进行时域分析
figure(2);
imhist(img);
title('时域分析');
% 进行频域分析
figure(3);
fft_img = fft2(img);
fft_img = fftshift(fft_img);
fft_img = abs(fft_img);
imshow(log(fft_img + 1), []);
title('频域分析');
% 进行中值滤波增强
img_median = medfilt2(img, [3 3]);
figure(4);
imshow(img_median);
title('中值滤波增强');
% 计算信干比和信噪比
snr = psnr(img, img_median);
snr_db = 10*log10(snr);
disp(['信噪比为:' num2str(snr_db) ' dB']);
% 计算峰值信号功率和噪声功率
peak_signal_power = max(max(img)).^2;
noise = img - img_median;
noise_power = sum(sum(noise.^2))/numel(noise);
disp(['信干比为:' num2str(10*log10(peak_signal_power/noise_power)) ' dB']);
```
注意:这只是一个简单的示例代码,实际使用时需要根据具体情况进行修改和优化。
阅读全文