已解决
两个图像性能对比的指标
来自网友在路上 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 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!
- 上一篇: Python中的POST请求参数
- 下一篇: MySQL只同步单个表或多个表,非全部同步!