MATLAB内置代码写简单图像复原SNR代码
时间: 2023-11-23 19:58:09 浏览: 30
以下是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的值,并将结果打印出来。
MATLAB图像复原写简单PSNR、SSIM、MSE、MAE、SNR、ISNR代码
下面是MATLAB图像复原中常用的一些评价指标的简单代码实现:
1. PSNR(峰值信噪比)
```matlab
function psnr_value = psnr(original_image, restored_image)
mse_value = mean(mean((double(original_image) - double(restored_image)).^2));
if(mse_value == 0)
psnr_value = 100;
else
psnr_value = 10*log10(255^2/mse_value);
end
end
```
2. SSIM(结构相似性)
```matlab
function ssim_value = ssim(original_image, restored_image)
k1 = 0.01;
k2 = 0.03;
L = 255;
C1 = (k1*L)^2;
C2 = (k2*L)^2;
mu1 = mean2(original_image);
mu2 = mean2(restored_image);
sigma1 = std2(original_image);
sigma2 = std2(restored_image);
sigma12 = cov2(original_image,restored_image);
numerator = (2*mu1*mu2 + C1)*(2*sigma12 + C2);
denominator = (mu1^2 + mu2^2 + C1)*(sigma1^2 + sigma2^2 + C2);
ssim_value = numerator/denominator;
end
```
3. MSE(均方误差)
```matlab
function mse_value = mse(original_image, restored_image)
mse_value = mean(mean((double(original_image) - double(restored_image)).^2));
end
```
4. MAE(平均绝对误差)
```matlab
function mae_value = mae(original_image, restored_image)
mae_value = mean(mean(abs(double(original_image) - double(restored_image))));
end
```
5. SNR(信噪比)
```matlab
function snr_value = snr(original_image, restored_image)
mse_value = mean(mean((double(original_image) - double(restored_image)).^2));
snr_value = 10*log10(mean(mean(double(original_image).^2))/mse_value);
end
```
6. ISNR(改进信噪比)
```matlab
function isnr_value = isnr(original_image, restored_image, noise_image)
mse_restored = mean(mean((double(original_image) - double(restored_image)).^2));
mse_noise = mean(mean((double(original_image) - double(noise_image)).^2));
isnr_value = 10*log10(mse_noise/mse_restored);
end
```