OpenCV计算图像PSNR峰值信噪比
程序员文章站
2023-12-31 18:45:04
...
均方误差定义:
峰值信噪比定义:
需要提前将所用的矩阵的datatype转为CV_32F
double getPSNR(const cv::Mat M1, const cv::Mat M2) {
/// PSNR越大越好,单位dB
M1.convertTo(M1, cv::CV_32F);
M2.convertTo(M2, cv::CV_32F);
cv::Mat diff(M1.size(), cv::CV_32F);
cv::absdiff(M1, M2, diff); // |M1 - M2|
diff = diff.mul(diff); // |M1 - M2|^2
cv::Scalar s = cv::sum(diff); // sum elements per channel
double N = M1.channels() * M1.total(); // total number of elements
double sse;
if (M1.channels() == 3)
sse = s.val[0] + s.val[1] + s.val[2];
else
sse = s.val[0];
if (sse > 1e6 || isnan(sse)) return 0;
else {
double mse = sse / N;
double psnr = 10.0 * log10((255 * 255) / (mse + 1e-6));
return psnr;
}
}
推荐阅读
-
OpenCV计算图像PSNR峰值信噪比
-
matalb计算灰度图像PSNR
-
利用opencv提高图像分辨率和降低分辨率(双三次插值),并计算PSNR的值
-
【碎片知识(1)· 计算机视觉基础】利用OpenCV实现图像的“Hello, world!”
-
计算机视觉之OpenCV中的图像处理2(18章-20章)
-
计算机视觉 OpenCV Android | 图像操作之 统计排序滤波、边缘保留滤波
-
计算机视觉之OpenCV中的图像处理1(13章-17章)
-
opencv中图像直方图常见操作之直方图均衡化及直方图计算(一)
-
OpenCV计算机视觉实战(Python)| 02、图像基本操作
-
python计算机视觉opencv图像金字塔轮廓及模板匹配