图像处理psnr和ssim评价指标Matlab代码
时间: 2024-10-21 13:03:58 浏览: 68
PSNR (Peak Signal-to-Noise Ratio) 和 SSIM (Structural Similarity Index Measure) 都是用于衡量图像处理中两幅图片质量差异的常用指标。
- PSNR 是一种主观度量,它基于像素级的均方误差(MSE),数值越高表明图像质量越好。在 MATLAB 中,计算 PSNR 的代码通常如下:
```matlab
function psnr = computePSNR(img1, img2)
mse = mean((img1 - img2).^2);
if mse == 0
psnr = Inf; % 或者可以设置为最大值,比如30dB,取决于你的应用场景
else
max_value = max(max(img1(:)));
psnr = 20*log10(max_value / sqrt(mse));
end
end
```
- SSIM 则更注重结构相似性,同时考虑亮度、对比度和结构三个维度。在 MATLAB 中,SSIM 的计算可能需要使用一些库函数,如 `ssim` 函数,如果使用的是 Image Processing Toolbox,你可以这样做:
```matlab
function ssim_val = computeSSIM(img1, img2)
ssim_val = ssim(img1, img2, 'DataRange', [0 255]); % 数据范围通常设定为原始图像的像素值范围
end
```
如果你想要在 MATLAB 中比较两个图像并打印这两个指标,可以组合上面的函数:
```matlab
img1 = ...; % 你的图像1
img2 = ...; % 你的图像2
psnr_val = computePSNR(img1, img2);
ssim_val = computeSSIM(img1, img2);
fprintf('PSNR: %.2f dB\n', psnr_val);
fprintf('SSIM: %.4f\n', ssim_val);
```
阅读全文