1.峰值信噪比

峰值信噪比是常用的衡量信号失真的指标。该参数是基于图像像素灰度值进行统计分析,但是由于人类视觉特性的差异性,通常出现的评价结果与人的主管感觉不一致,但其仍然是一个有参考价值的评价指标。对于两幅图像I与K,尺寸大小为m x n,它们的均方误差的定义为公式:

那么信噪比的定义为公式:

其中,MSE表示当前图像I与K的均方误差, 表示图像点颜色的最大值。PSNE的单位为dB,在图像质量评价中,典型的峰值信噪比为30~40dB。PSNR的值越大,图像质量越好。

double PSNR(const cv::Mat& I1, const cv::Mat& I2)
{cv::Mat s1;cv::absdiff(I1, I2, s1);//计算图像差s1.convertTo(s1, CV_32F);//转成32浮点数进行平方运算//s1*s1,即|I1-I2|^2s1 = s1.mul(s1);cv::Scalar s = cv::sum(s1);//分别叠加每个通道元素,存于s中double sse = s.val[0] + s.val[1] + s.val[2];//计算所有通道元素和if (sse <= 1e-10)//当元素很小时返回0值{return 0;}else{double mse = sse / ((double)(I1.channels() * I1.total()));double psnr = 10.0*log10((255 * 255) / mse);return psnr;}
}

2.结构相似性(PSNR)

结构相似性是高度结构化的自然影像,从亮度、对比度、结构三方面评价图像质量,故邻域像素具有较强的关联性,即物体结构信息的相似性,对比峰值信噪比更复合人类视觉观察到的直观效果,其具有对称性、上下界等性质。

给定两个信号x和y。两者的结构相似性定义为公式:

其中表示x和y的亮度,代表x和y的对比度,表示x和y的结构,(都大于0)为SSIM参数调整,分别表示图像x和y的均值,分别表示图像x和y的方差,表示图像x和y的协方差, 为常数。SSIM的取值范围为0到1,值越大越好。

cv::Scalar MSSIM(const cv::Mat& i1, const cv::Mat& i2)
{const double C1 = 6.5025, C2 = 58.5225;cv::Mat I1, I2;i1.convertTo(I1, CV_32F);i2.convertTo(I2, CV_32F);cv::Mat I2_2 = I2.mul(I2);//I2^2cv::Mat I1_2 = I1.mul(I1);cv::Mat I1_I2 = I1.mul(I2);cv::Mat mu1, mu2;cv::GaussianBlur(I1, mu1, cv::Size(11, 11), 1.5);//高斯加权计算每一窗口的均值、方差以及协方差cv::GaussianBlur(I2, mu2, cv::Size(11, 11), 1.5);cv::Mat mu1_2 = mu1.mul(mu1);cv::Mat mu2_2 = mu2.mul(mu2);cv::Mat mu1_mu2 = mu1.mul(mu2);cv::Mat sigma1_2, sigma2_2, sigma12;cv::GaussianBlur(I1_2, sigma1_2, cv::Size(11, 11), 1.5);sigma1_2 -= mu1_2;cv::GaussianBlur(I2_2, sigma2_2, cv::Size(11, 11), 1.5);sigma2_2 -= mu2_2;cv::GaussianBlur(I1_I2, sigma12, cv::Size(11, 11), 1.5);sigma12 -= mu1_mu2;//根据公式计算相应参数cv::Mat t1, t2, t3;t1 = 2 * mu1_mu2 + C1;t2 = 2 * sigma12 + C2;//t3 = ((2*mu1_mu2+C1).*(2*sigma12+C2))t3 = t1.mul(t2);t1 = mu1_2 + mu2_2 + C1;t2 = sigma1_2 + sigma2_2 + C2;//t1 = ((mu1_2+mu2_2+C1).*(sigma1_2+sigma2_2+C2))t1 = t1.mul(t2);cv::Mat ssim_map;//ssim_map = t3  ./ t1;cv::divide(t3, t1, ssim_map);cv::Scalar mssim = mean(ssim_map);return mssim;
}

opencv图像处理学习(五十七)——峰值信噪比和结构相似性相关推荐

  1. OpenCV与图像处理学习五——图像滤波与增强:线性、非线性滤波、直方图均衡化与Gamma变换

    OpenCV与图像处理学习五--图像滤波与增强:线性.非线性滤波.直方图均衡化与Gamma变换 三.图像滤波与增强 3.1 线性滤波 3.1.1 方框滤波 3.1.2 均值滤波 3.1.3 高斯滤波 ...

  2. Python+OpenCV图像处理(五)——图像阈值和二值化

    系列文章 Python+OpenCV图像处理(一)--OpenCV框架与图像插值算法 Python+OpenCV图像处理(二)--几何变换 Python+OpenCV图像处理(三)--彩色空间互换 P ...

  3. 图像增强常用评价标准——峰值信噪比、结构相似度

    图像增强的评价标准在像素层面上通常包含有平均绝对误差法(MAE).均方误差法(MSE).峰值信噪比(PSNR)以及结构相似度(SSIM),目前图像增强(图像超分辨率.图像去噪.图像去模糊.图像去雨,图 ...

  4. 无参考图像质量评价之图像质量评价方法(一)[均方根误差、峰值信噪比、结构相似度]

    图像质量评价在计算机视觉,人工智能,高清视频传输上面有很广泛的应用.目前,图像质量评价主要分为三个方向,有参考图像的质量评价,半参考的图像质量评价,以及无参考的图像质量评价.但是,个人认为,无参考图像 ...

  5. opencv图像处理学习(五十二)——拟合(最小二乘法)

    怀着沉痛的心情,拖着疲惫的身心,为了拟合好圆,我实在不得不上最小二乘法了(我上班写的代码不要想了,不可能发在blog里的),现在进入正题. (1)基本原理 名称             自变量:x - ...

  6. opencv图像处理学习(十五)——minMaxLoc函数

    函数原型:  void minMaxLoc( const Mat& src,  double* minVal, double* maxVal=0, Point* minLoc=0, Point ...

  7. OpenCV 图像处理学习手册:1~5

    原文:Learning Image Processing with OpenCV 协议:CC BY-NC-SA 4.0 译者:飞龙 本文来自[ApacheCN 计算机视觉 译文集],采用译后编辑(MT ...

  8. opencv图像处理学习随笔:帮助文档运算公式中saturate的含义

    ☞ ░ 前往老猿Python博文目录 ░ 在opencv文档中中,加法运算的一种计算公式如下: dst(I)=saturate(src1(I)+src2(I))if mask(I)≠0 类似的公式还有 ...

  9. OpenCV图像处理学习十八,霍夫变换实现交通车道线检测

    一.霍夫变换 经典霍夫变换用来检测图像中的直线,后来霍夫变换经过扩展可以进行任意形状物体的识别,例如圆和椭圆.霍夫变换运用两个坐标空间之间的变换,将在一个空间中具有相同形状的曲线或直线映射到另一个坐标 ...

  10. 【OpenCV图像处理】五、图像的几何变换(下)

    5.1 图像的缩放变换 图像的缩放指的是将图像的尺寸变小或变大的过程,也就是减少或增加原图像数据的像素个数.简单来说,就是通过增加或删除像素点来改变图像的尺寸.当图像缩小时,图像会变得更加清晰,当图像 ...

最新文章

  1. Python第三周 学习笔记(2)
  2. 洛谷 - P2057 [SHOI2007]善意的投票 / [JLOI2010]冠军调查(最大流最小割)
  3. windows 全局变量_如何在Windows中使用全局系统环境变量
  4. Maven 依赖-镜像仓库替换为 -- 阿里云镜像仓库(飞快实现 pom 引入)
  5. 《机器学习实战》配套代码下载
  6. XStream的使用
  7. IT运维管理必备工具大全,看完还敢称自己是高手吗?
  8. 调用vba_VBA代码解决方案的第86讲内容:VBA代码的优化篇
  9. 六一儿童节海报合集,一起重拾童年吧~
  10. 你在工作中会写测试用例嘛?Mockito 的最佳实践
  11. Python+Opencv识别视频统计人数
  12. 【QT】缺少Qt5Widgetsd.dll等文件的问题
  13. 【Python数据处理篇——DataFrame数据准备】DataFrame的创建、增删改查、数据导入等
  14. 如何提高一个网站的排名?
  15. 【Task02】Numpy组队学习—随机抽样
  16. 诊断CAPL自动化(2)—— 封装了诊断发送的通用CAPL函数库
  17. c语言一维数组字符串数组初始化,一维数组的定义、初始化和引用
  18. 使用python中TsTables 软件包追加写入数据出现“pandas.tseries has no attribute‘index‘”的问题
  19. 可视化架构设计——C4介绍
  20. 使用for循环加if-else实现两个数最小公倍数和最大公约数的计算

热门文章

  1. 零基础如何学习PLC
  2. 成都青白江的羽毛球场地
  3. TextCNN代码解读及实战
  4. jpg格式怎么转换成plt格式的_一种JPG图像到PLT文件的转化方法.pdf
  5. 第六季 流放之路教程
  6. 3DMax VRay 渲染笔记
  7. 高拍仪Linux系统(银河麒麟/统信uos系统)二次开发
  8. 微信小程序底部导航栏
  9. 用HTML+CSS做一个漂亮简单的个人音乐网页
  10. 【2020版】Basic4Android安装配置指南