峰值信噪比(Peak Signal to NoiseRatio, PSNR)是最广泛使用的评价图像质量的客观标准。它是原图像与处理图像之间均方误差相对于(2^n-1)^2的对数值(即信号最大值的平方,其中n 是每个采样值的比特数)。
一般的,
PSNR=10* log(255^2/MSE)
其中255就是8 bits表示法的最大值(Peak),而MSE 表示原图像与处理图像之间均方误差(Mean Square Error),如果不用8bit那么就不是255^2了,这里要注意下。
MSE=(1/PixelNum)*(对x,y求和(P(x,y)-P(x,y))^2) PSNR单位为dB,PSNR越大表示失真越小.
图象的信噪比应该等于信号与噪声的功率谱之比,但通常功率谱难以计算,有一种方法可以近似估计图象信噪比,即信号与噪声的方差之比。首先计算图象所有象素的局部方差,将局部方差的最大值认为是信号方差,最小值是噪声方差,求出它们的比值,再转成dB数,最后用经验公式修正,具体参数请参看“反卷积与信号复原(邹谋炎)”。
一段程序: double temp1= 0.0;
double temp2= 0.0;
for(inti=0;i for(int j=0;j PSNR=10*log10(PSNR);// PSNR即为峰值信噪比 另一段程序: (跟上一个不太一致) doublemse = 0.0; signed short temp; for( y = 0; y < c; y++ ) for( x = 0; x < r; x++ ){temp = (signed short)map1[y][x]-(signed short)map2[y][x]; mse += (double)temp*temp;}if(mse< 0.1e-6){printf(\"\\nThe two file are the same!\\n\");}mse = mse / ( 1.0*r*c); doublepsnr = 10 * log10( 2 / 3 255.0* 255.0/mse); 3 / 3 因篇幅问题不能全部显示,请点此查看更多更全内容