一、峰值信噪比
峰值信噪比( PSNR ) 用于表示信号的最大可能功率与影响其表示的保真度的破坏噪声的功率之间的比率。由于许多信号具有非常宽的动态范围,因此 PSNR 通常使用分贝标度表示为对数量。 PSNR 在图像处理上主要用于量化受有损压缩影响的图像和视频的重建质量。二、定义
PSNR 通过均方误差( MSE ) 定义。
给定一个无噪声的m×n单色图像I及其噪声近似值K,MSE定义为
PSNR定义为
这边的max是图像中最大可能的像素值,如你使用的是8位像素,那么max就是255。
三、质量评估和性能比较
1、质量评估
PSNR 最常用于测量有损压缩编解码器的重建质量。在这种情况下的信号是原始数据,噪声是压缩引入的误差。在比较压缩编解码器时,PSNR 是人类对重建质量感知的近似值。
如果位深为 8,则有损图像和视频压缩中PSNR 的建议值在 30 到 50 dB 之间,当然越高越好。当 PSNR 值为 60 dB 或更高时,12 位图像的处理质量被认为是好的。对于16 位,PSNR 的建议值在 60 到 80 dB 之间。无线传输质量损失的可接受值被认为是大约 20 dB 到 25 dB。
2、性能比较
虽然较高的 PSNR 通常表明重建质量较高,但在某些情况下可能并非如此,必须非常小心该指标的有效性范围。只有当它用于比较来自相同编解码器和相同内容的结果时,它才是最终有效的。
一般来说,在估计图像质量,尤其是人类感知的视频质量时,与其他质量指标相比,PSNR 表现不佳。
当然,目前还没有一个完善的质量评估体系,主要是通过主客观相结合,具体图像具体分析。主观评价打分,还是蛮依靠人力物力的。简单的一两个质量评估指标,难以具体分析图像的好坏。
四、PNSR 代码
function [psnr, mse] = psnr_mse(img1, img2, L)
MAX_PSNR = 1000;
if (nargin < 2 | nargin > 3)
psnr = -Inf;
mse = -Inf;
disp(['Error in psnr_mse.m: wrong input argument']);
return;
end
if (size(img1) ~= size(img2))
psnr = -Inf;
mse = -Inf;
disp(['Error in psnr_mse.m: images need to have the same size']);
return;
end
if (~exist('L'))
L = 255;
end
mse = mean2((double(img1) - double(img2)).^2);
psnr = 10*log10(L^2/mse);
psnr = min(MAX_PSNR, psnr);
function [im_quality,mse] = FR_PSNR( im_reference,im_distorted )
% im_reference and im_distorted is gray([0 255]) image;
% mse=mean2((im_reference-im_distorted).^2);
mse=mean(mean(mean((im_reference-im_distorted).^2)));
im_quality=10*log10(255^2/mse);
参考文献
[1]A_Statistical_Evaluation_of_Recent_Full_Reference_Image_Quality_Assessment_Algorithms
[2]piq库
文章出处登录后可见!
已经登录?立即刷新