[总结]图像的信噪比和峰值信噪比_图像的峰值信噪比
[总结]图像的信噪比和峰值信噪比由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“图像的峰值信噪比”。
峰值信噪比(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
{
temp1=temp1+OldImage[i][j]*OldImage[i][j];
timp2=temp2+(OldImage[i][j]-NewImage[i][j])*(OldImage[i][[j]-NewImage[i][j];}
double SNR=255*255/Temp2*ROW*COL;
SNR=10*log10(SNR);//SNR即为信噪比
double PSNR=temp1/temp2;
PSNR=10*log10(PSNR);// PSNR即为峰值信噪比
另一段程序:(跟上一个不太一致)
doublemse = 0.0;
signed short temp;
for(y = 0;y
for(x = 0;x
{
temp =(signed short)map1[y][x]-(signed short)map2[y][x];
mse +=(double)temp*temp;
}
if(mse
{
printf(“nThe two file are the same!n”);
}
mse = mse /(1.0*r*c);
doublepsnr = 10 * log10(255.0*255.0/mse);