psnr是“Peak Signal to Noise Ratio”的缩写,即峰值信噪比,是一种评价图像的客观标准,它具有局限性,一般是用于最大值信号和背景噪音之间的一个工程项目。

中文名

PSNR

外文名

Peak Signal to Noise Ratio”

意    义

峰值信噪比

作    用

评价图像的客观标准

目录 1 释义2 优缺点3 实现

释义

编辑

peak的中文意思是顶点。而ratio的意思是比率或比列的。整个意思就是到达噪音比率的顶点信号,psnr一般是用于最大值信号和背景噪音之间的一个工程项目。通常在经过影像压缩之后,输出的影像都会在某种程度与原始影像不同。为了衡量经过处理后的影像品质,我们通常会参考PSNR值来衡量某个处理程序能否令人满意。它是原图像与被处理图像之间的均方误差相对于(2^n-1)^2的对数值(信号最大值的平方,n是每个采样值的比特数),它的单位是dB。 MATLAB用法的公式如下:

PSNR=10*log10((2^n-1)^2/MSE)

其数学公式如下图所示:

其中,MSE是原图像与处理图像之间均方误差。

psnr

Peak就是指8bits表示法的最大值255。MSE指MeanSquareError,I(角标n)指原始影像第n个pixel值,P(角标n)指经处理后的影像第n个pixel值。PSNR的单位为dB。所以PSNR值越大,就代表失真越少。

优缺点

编辑

PSNR是最普遍,最广泛使用的评鉴画质的客观量测法,不过许多实验结果都显示,PSNR的分数无法和人眼看到的视觉品质完全一致,有可能PSNR较高者看起来反而比PSNR较低者差。这是因为人眼的视觉对于误差的敏感度并不是绝对的,其感知结果会受到许多因素的影响而产生变化(例如:人眼对空间频率较低的对比差异敏感度较高,人眼对亮度对比差异的敏感度较色度高,人眼对一个区域的感知结果会受到其周围邻近区域的影响)。 [1] 

实现

编辑

PSNR的Matlab实现

function PSNR = psnr(f1, f2)

%计算两幅图像的峰值信噪比

k = 8;

%k为图像是表示地个像素点所用的二进制位数,即位深。

fmax = 2.^k – 1;

a = fmax.^2;

MSE =(double(im2uint8(f1)) -double( im2uint8(f2))).^2;

b = mean(mean(MSE));

PSNR = 10*log10(a/b);