一、峰值信噪比(PSNR)
PSNR是最常用的图像质量评价指标之一,它可以衡量信号与噪声的比率,进而反映出图像的失真程度。
PSNR的公式为:
void psnr(unsigned char* img1, unsigned char* img2, int width, int height, float* v_psnr)
{
double mse = 0;
for(int i=0; i<height; ++i)
{
for(int j=0; j<width; ++j)
{
int t = img1[i*width+j] - img2[i*width+j];
mse += (double)(t*t);
}
}
mse /= (width*height);
v_psnr[0] = 10 * log10((255.0 * 255.0) / mse);
}
其中,img1和img2为比较的两张图像,width和height分别为图像的宽度和高度,v_psnr为输出的PSNR值。该函数计算img1和img2之间的均方误差(MSE),并将结果代入PSNR公式中计算得到PSNR值。
二、结构相似性(SSIM)
SSIM能够更好地反映图像的感知质量,它可以同时考虑图像的亮度、对比度和结构等方面的失真程度,进而生成最终的感知质量评价。
SSIM的公式为:
void ssim(unsigned char* img1, unsigned char* img2, int width, int height, float* v_ssim)
{
const double alpha = 1.0;
const double beta = 1.0;
const double gamma = 1.0;
double mu1 = 0, mu2 = 0, mu1_2 = 0, mu2_2 = 0, mu1_mu2 = 0;
double sigma1_2 = 0, sigma2_2 = 0, sigma12 = 0;
for(int i=0; i<height; ++i)
{
for(int j=0; j<width; ++j)
{
mu1 += img1[i*width+j];
mu2 += img2[i*width+j];
mu1_2 += img1[i*width+j] * img1[i*width+j];
mu2_2 += img2[i*width+j] * img2[i*width+j];
mu1_mu2 += img1[i*width+j] * img2[i*width+j];
}
}
mu1 /= (width*height);
mu2 /= (width*height);
mu1_2 /= (width*height);
mu2_2 /= (width*height);
mu1_mu2 /= (width*height);
sigma1_2 = mu1_2 - mu1 * mu1;
sigma2_2 = mu2_2 - mu2 * mu2;
sigma12 = mu1_mu2 - mu1 * mu2;
v_ssim[0] = (float)((2 * mu1 * mu2 + alpha) * (2 * sigma12 + beta) * (gamma*gamma + sigma1_2 + sigma2_2 + beta) / ((mu1*mu1 + mu2*mu2 + alpha) * (sigma1_2 + sigma2_2 + beta) * (gamma*gamma + alpha)));
}
其中,img1和img2为比较的两张图像,width和height分别为图像的宽度和高度,v_ssim为输出的SSIM值。该函数分别计算img1和img2的均值、方差、协方差等参数,并代入SSIM公式中计算得到SSIM值。注:该函数中的alpha、beta、gamma分别为3个常数,可根据不同需求进行调整。
三、均方误差(MSE)
均方误差是衡量图像质量的一种常用指标,它可以衡量参考图像与被测图像的差距,该指标值越小,表示两张图像越相似。
均方误差的公式为:
void mse(unsigned char* img1, unsigned char* img2, int width, int height, float* v_mse)
{
double mse = 0;
for(int i=0; i<height; ++i)
{
for(int j=0; j<width; ++j)
{
int t = img1[i*width+j] - img2[i*width+j];
mse += (double)(t*t);
}
}
mse /= (width*height);
v_mse[0] = (float)mse;
}
其中,img1和img2为比较的两张图像,width和height分别为图像的宽度和高度,v_mse为输出的MSE值。该函数计算img1和img2之间的均方误差(MSE),并将结果返回。
四、峰值信噪比与结构相似性的比较
PSNR和SSIM是两种常用的图像质量评估指标,下面进行简单的比较:
PSNR指标可以较好地反映出信号像素值的不同,但是没有考虑人类视觉系统的感知方式,因此对于具有较强纹理的图像效果评估会有一定的局限性;而SSIM指标不仅考虑了图像的像素值,还考虑了图像结构的相似性,可以更好地反映人类视觉的感知过程,因此比PSNR对图像质量评价更加准确。
五、总结
图像质量评价指标是对图像失真程度进行客观化评价的重要手段,目前主流的评价指标有PSNR和SSIM等。针对不同的应用场景,可以根据具体需求选择适合的评价指标进行评估。
