图像的峰值信噪比(PSNR)的计算方法

PSNR定义与计算

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

                                       图像的峰值信噪比(PSNR)的计算方法_第1张图片

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

均方误差是反映估计量与被估计量之间差异程度的一种度量,换句话说,参数估计值与参数真值之差的平方的期望值。MSE可以评价数据的变化程度,MSE的值越小,说明预测模型描述实验数据具有更好的精确度。

                                         图像的峰值信噪比(PSNR)的计算方法_第2张图片
MAXI:表示图像颜色的最大数值,8位采样点表示为255。I 和 K是需要做对比的两幅图像

PSNR的单位为dB。所以PSNR值越大,就代表失真越少。

PSNR是最普遍和使用最为广泛的一种图像客观评价指标,然而它是基于对应像素点间的误差,即基于误差敏感的图像质量评价。由于并未考虑到人眼的视觉特性(人眼对空间频率较低的对比差异敏感度较高,人眼对亮度对比差异的敏感度较色度高,人眼对一个区域的感知结果会受到其周围邻近区域的影响等),因而经常出现评价结果与人的主观感觉不一致的情况。

 程序实现

double calcPSNR(char *DstImg, char *SrcImg, int iSize)
{
    double dSSE = 0.0;

    for (int i = 0; i < iSize; i++)
    {
        double dDiff = (double)(DstImg[i] - SrcImg[i]);
        dSSE += pow(dDiff, 2);
    }

    double dMES = dSSE / (double)iSize;
    return 10.0 * log10(pow(255.0, 2)/dMES);

}

 

你可能感兴趣的:(图像处理)