当前位置:首页 > 编程笔记 > 正文
已解决

两个图像性能对比的指标

来自网友在路上 160860提问 提问时间:2023-09-21 14:56:37阅读次数: 60

最佳答案 问答题库608位专家为你答疑解惑

适用范围:

1、无前景图像的评估,可以评估对这种图像矫正、去除噪声、滤波等等前后两张图像的性能

2、两张特征固定的图像的评估

性能指标为连个:一个是PSNR,基于对图像灰阶的均方差的评估,opencv中double PSNR(InputArray src1, InputArray src2, double R=255.);可以直接调用

第二个是SSIM,对形状结构的评估,代码如下

  Scalar getMSSIM(const Mat& i1, const Mat& i2)
{const double C1 = 6.5025, C2 = 58.5225;int d = CV_32F;Mat I1, I2;i1.convertTo(I1, d);            i2.convertTo(I2, d);Mat I2_2 = I2.mul(I2);        // I2^2Mat I1_2 = I1.mul(I1);        // I1^2Mat I1_I2 = I1.mul(I2);        // I1 * I2Mat mu1, mu2;                  GaussianBlur(I1, mu1, Size(11, 11), 1.5);GaussianBlur(I2, mu2, Size(11, 11), 1.5);Mat mu1_2 = mu1.mul(mu1);Mat mu2_2 = mu2.mul(mu2);Mat mu1_mu2 = mu1.mul(mu2);Mat sigma1_2, sigma2_2, sigma12;GaussianBlur(I1_2, sigma1_2, Size(11, 11), 1.5);sigma1_2 -= mu1_2;GaussianBlur(I2_2, sigma2_2, Size(11, 11), 1.5);sigma2_2 -= mu2_2;GaussianBlur(I1_I2, sigma12, Size(11, 11), 1.5);sigma12 -= mu1_mu2;Mat t1, t2, t3;t1 = 2 * mu1_mu2 + C1;t2 = 2 * sigma12 + C2;t3 = t1.mul(t2);                 // t3 = ((2*mu1_mu2 + C1).*(2*sigma12 + C2))t1 = mu1_2 + mu2_2 + C1;t2 = sigma1_2 + sigma2_2 + C2;t1 = t1.mul(t2);                 // t1 =((mu1_2 + mu2_2 + C1).*(sigma1_2 + sigma2_2 + C2))Mat ssim_map;divide(t3, t1, ssim_map);        // ssim_map =  t3./t1;Scalar mssim = mean(ssim_map);   // mssim是ssim的平均值return mssim;
}

查看全文

99%的人还看了

猜你感兴趣

版权申明

本文"两个图像性能对比的指标":http://eshow365.cn/6-10753-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!