图片质量评价

  • Python 实现图片质量比较之PSNR和SSIM
    • PSNR
      • skimge 实现
        • 完示例代码
      • TensorFlow 实现
    • SSIM
      • 代码实现

Python 实现图片质量比较之PSNR和SSIM

PSNR

PSNR,Peak Signal-to-Noise Ratio,峰值信噪比,是一个表示信号最大可能功率和影响它的表示精度的破坏性噪声功率的比值的工程术语。由于许多信号都有非常宽的动态范围,峰值信噪比常用对数分贝单位来表示。

PSNR 是用于衡量图像质量的指标,比如在图像压缩、超分辨率重建图像等领域,其是一种重要的指标.

PSNR 常简单的通过均方误差(MSE)来定义. 比如,对于两张单色图像 I 和 K,如果一个为另外一个的噪声近似,则二者之间的均方误差定义为:

而峰值信噪比PSNR 的定义为:

其中,MAXIMAX_IMAXI​ 表示图像点颜色的最大数值,如果每个采样点用 8 位表示,则最大数值为 255.

更通用的表示是,如果每个采样点用 B 位线性脉冲编码调制表示,则 MAXI=2B−1MAX_I = 2^B - 1MAXI​=2B−1,即:

类似地,对于每点有 RGB 三个值的彩色图像来说,PSNR 的定义也是类似的,只是均方误差是所有方差之和除以图像尺寸再除以3。

MSE 越小,则 PSNR 越大;PSNR越大,代表着图像质量越好。

  1. PSNR高于40dB说明图像质量极好(即非常接近原始图像)
  2. 在30-40dB通常表示图像质量是好的(即失真可以察觉但可以接受)
  3. 在20-30dB说明图像质量差
  4. 低于20dB图像不可接受

skimge 实现

安装 skimage 库

pip install scikit-image

skimage 库也提供了相关的计算实现.
skimage.measure.compare_psnr

from skimage.metrics import structural_similarity
PSNR = peak_signal_noise_ratio(img1, img2)

完示例代码

import cv2
from skimage.metrics import mean_squared_error
from skimage.metrics import peak_signal_noise_ratioimg1 = cv2.imread('imgPred0.png')
img2 = cv2.imread('imgPred01.png')MSE = mean_squared_error(img1, img2)
PSNR = peak_signal_noise_ratio(img1, img2)print('MSE: ', MSE)
print('PSNR: ', PSNR)

TensorFlow 实现

TensorFlow 中已经包含 PSNR 计算的函数,可直接采用.
tf.image.psnr

import tensorflow as tfdef read_img(path):return tf.image.decode_image(tf.read_file(path))def psnr(tf_img1, tf_img2):return tf.image.psnr(tf_img1, tf_img2, max_val=255)def main():t1 = read_img('t1.jpg')t2 = read_img('t2.jpg')#两张图像t1和t2的尺寸要完全一致with tf.Session() as sess:sess.run(tf.global_variables_initializer())y = sess.run(psnr(t1, t2))print(y)if __name__ == '__main__':main()

SSIM

SSIM,Structural Similarity,结构相似性. 也是衡量两幅图片相似性的指标.

结构相似性的基本原理是,认为自然图像时高度结构化的,即相邻像素间具有很强的关联性,而这种关联性表达了场景中物体的结构信息. 人类视觉系统对于图像已经具有很强的理解与信息抽取能力,所以在衡量图像质量时,结构性失真是很重要的考量.

代码实现

同样还是使用 skimage 库进行代码的实现

import cv2
from skimage.measure import compare_ssimimg1 = cv2.imread('imgPred0.png')
img2 = cv2.imread('imgPred01.png')SSIM = structural_similarity(img1, img2, multichannel=True)print('SSIM: ', SSIM)

Ref

  1. 图片质量比较之PSNR和SSIM
  2. PSNR-峰值信噪比(原理及python代码实现)

Python 实现图片质量比较之PSNR和SSIM相关推荐

  1. 计算两个文件夹中图片的PSNR和SSIM

    注释:两个文件夹中图片的文件名要一致,格式.后缀都要一直,如果其他格式可以将.jpg改成.bmp 写来只是自己看,自己能用,所以跑不通您也别怪我菜 ```bash```bash```python im ...

  2. psnr 与 ssim评测步骤

    hi3559a平台: 原理: 编码器设置用户图片,作为无视频信号时的插入图片. 解码器通过VO获取视频层上的输出图像帧. 编码用到的关键MPI:HI_MPI_VI_SetUserPic 解码用到的关键 ...

  3. matlab中中图像PSNR和SSIM的计算

    图像处理结果的度量 -- SNR.PSNR.SSIM 网上找了很多关于PSNR和SSIM的计算,很多结果算出来都不一样,公式都是普遍的,如下: 现在总结下造成结果差异的原因. PSNR的差异: 1.灰 ...

  4. 图像质量评价指标: PSNR 和 SSIM

    PSNR: Image quality assessment: from error visibility to structural similarity SSIM: Image Quality A ...

  5. 全参考客观视频质量评价方法 (MSE, PSNR,SSIM)原理

    全参考客观视频质量评价方法是指把原始参考视频与失真视频在每一个对应帧中的每一个对应像素之问进行比较.准确的讲,这种方法得到的并不是真正的视频质量,而是失真视频相对于原始视频的相似程度或保真程度.最简单 ...

  6. 全参考视频质量评价方法(PSNR,SSIM)以及相关数据库

    最常用的全参考视频质量评价方法有以下2种: PSNR(峰值信噪比):用得最多,但是其值不能很好地反映人眼主观感受.一般取值范围:20-40.值越大,视频质量越好. SSIM(结构相似性):计算稍复杂, ...

  7. 图像评价常用指标(PSNR、SSIM、LPIPS 、FID、Recall)

    最近需要测试图像的指标,然后特意去关注了一下相关的信息,然后主要用的评价指标为: 1.PSNR 和 SSIM 去看:图像质量评价指标: PSNR 和 SSIM_马鹏森的博客-CSDN博客_psnr范围 ...

  8. 计算两张图像之间的PSNR和SSIM值

    计算两张图像之间的PSNR和SSIM值 from skimage.metrics import mean_squared_error as mse from skimage.metrics impor ...

  9. PSNR和SSIM计算工具

    全参考客观视频质量评价方法是指把原始参考视频与失真视频在每一个对应帧中的每一个对应像素之问进行比较.准确的讲,这种方法得到的并不是真正的视频质量,而是失真视频相对于原始视频的相似程度或保真程度.最简单 ...

最新文章

  1. WCF之自定义信道工厂,信道监听器
  2. asp.net网站中CrystalReport的简单应用
  3. python多线程爬取斗图啦数据
  4. msf aux模块使用
  5. KMP算法理解(转)
  6. python识别文字并且提示_python识别图像并提取文字的实现方法
  7. 【图像修复】基于matlab GUI中值+均值+维纳+最小平方图像恢复【含Matlab源码 838期】
  8. java学习之打印菱形和空心菱形
  9. ECG/PPG量测解决方案
  10. 【JavaWeb】用监听器实现单一登录
  11. instant-ngp总结
  12. aptana手动配置python环境_Aptana Studio 3配置Python开发环境图文教程
  13. win10网络重置后无法上网
  14. 企查查之企业信息查询自动化
  15. 36岁,被单位解聘,我干起了深夜外卖
  16. 谁是滕尚华?两获哥德尔奖,上交大校友,喜欢「躺平式」科研
  17. in a frame because it set 'X-Frame-Options' to 'sameorigin'.
  18. oracle的高级特性,Oracle SQL Developer 的高级特性
  19. java实现九九乘法表算法
  20. Csharp制作登录服务器,CSharp_Socket通信(含服务器端以及客户端)

热门文章

  1. 数据结构实验4:C++实现循环队列
  2. Linux chmod命令详解
  3. [原创]安装Ubuntu Server 14.04后
  4. Java眼中的XML--文件读取--2 应用SAX方式解析XML
  5. [翻译] RKCardView
  6. SPC.NET,为5年的开发做个结尾
  7. VS2008 error RC2170: bitmap file xxx.png is not in 3.00 format(转)
  8. 清理无用的CSS样式比较有用的几个工具
  9. UA OPTI570 量子力学34 Harmonic Perturbation简介
  10. UA OPTI570 量子力学18 量子谐振子基础