MATLAB内置代码写简单图像复原SNR代码
时间: 2023-11-23 08:58:09 浏览: 73
以下是MATLAB内置代码实现简单图像复原并计算信噪比(SNR)的示例:
```matlab
% 读取含有噪声的图像
img_noisy = imread('noisy_image.png');
% 显示含有噪声的图像
figure, imshow(img_noisy), title('Noisy Image');
% 创建高斯滤波器
h = fspecial('gaussian', [5 5], 2);
% 应用高斯滤波器进行图像复原
img_restored = imfilter(img_noisy, h);
% 显示复原后的图像
figure, imshow(img_restored), title('Restored Image');
% 计算信噪比
snr_val = psnr(img_restored, img_noisy);
% 显示信噪比
disp(['SNR: ' num2str(snr_val) ' dB']);
```
其中,`imread`函数用于读取含有噪声的图像,`imshow`函数用于显示图像,`fspecial`函数用于创建高斯滤波器,`imfilter`函数用于应用滤波器进行图像复原,`psnr`函数用于计算信噪比。最后,使用`disp`函数输出信噪比的值。
相关问题
MATLAB内置代码写简单图像复原PSNR、SSIM、MSE、MAE、SNR、ISNR代码
以下是MATLAB内置函数计算图像复原的PSNR、SSIM、MSE、MAE、SNR、ISNR的示例代码:
```matlab
% 读入原始图像和复原图像
original_image = imread('original.jpg');
restored_image = imread('restored.jpg');
% 计算 PSNR
peaksnr = psnr(restored_image, original_image);
fprintf('\n The Peak-SNR value is %0.4f', peaksnr);
% 计算 SSIM
[ssimval, ssimmap] = ssim(restored_image, original_image);
fprintf('\n The SSIM value is %0.4f', ssimval);
% 计算 MSE
mse = immse(restored_image, original_image);
fprintf('\n The MSE value is %0.4f', mse);
% 计算 MAE
mae = sum(abs(double(restored_image(:))-double(original_image(:))))/numel(original_image);
fprintf('\n The MAE value is %0.4f', mae);
% 计算 SNR
snr = 10*log10(sum(original_image(:).^2)/sum((original_image(:)-restored_image(:)).^2));
fprintf('\n The SNR value is %0.4f dB', snr);
% 计算 ISNR
isnr = 10*log10(sum((original_image(:)-restored_image(:)).^2)/sum((original_image(:)-noisy_image(:)).^2));
fprintf('\n The ISNR value is %0.4f dB', isnr);
```
其中,`original_image`和`restored_image`分别为原始图像和复原图像的矩阵,可以使用MATLAB中的`imread`函数读入图像文件。这段代码中计算了PSNR、SSIM、MSE、MAE、SNR、ISNR的值,并将结果打印出来。
阅读全文