首页 > 其他分享 >图像质量评价指标 PSNR 和 SSIM

图像质量评价指标 PSNR 和 SSIM

时间:2023-12-17 11:45:20浏览次数:32  
标签:PSNR SSIM mu 图像 MSE sigma

PSNR 和 SSIM 是两种常见的图像质量评价指标,通常用于衡量两张图像的相似度。

参考材料:

PSNR

PSNR:峰值信噪比(Peak signal-to-noise ratio),常用对数分贝单位来表示。

先定义均方误差 \(MSE\)。

灰度 MSE

两张大小均为 \(m\times n\) 的灰度图像,原图为 \(I\),有损图为 \(K\),则定义

\[MSE=\frac{1}{mn}\sum_{i=1}^{m-1}\sum_{j=0}^{n-1}\left[I(i, j)-K(i, j)\right]^2 \]

RGB MSE

分别计算 RGB 三个通道的 MSE,然后取平均值。

\[MSE=\frac{1}{3mn}\sum_{R,G,B}\sum_{i=1}^{m-1}\sum_{j=0}^{n-1}\left[I_{color}(i, j)-K_{color}(i, j)\right]^2 \]

PSNR

先定义 \({MAX}_I\) 为 \(I\) 中每个像素的可能颜色数量。对于 8 位图像,每个像素可能有255种颜色,于是 \({MAX}_I\)=255。当然也有 \({MAX}_K\)=255。

那么,

\[\begin{align*} PSNR&=10\cdot \log_{10}\left(\frac{{MAX}_I^2}{MSE}\right) \\ &= 20\cdot \log_{10}\left(\frac{{MAX}_I}{\sqrt{MSE}}\right) \end{align*} \]

PSNR 的取值

PSNR 没有理论上限值,值越大,表明 \(I\) 和 \(K\) 越相似。

  • PSNR 接近 50dB,代表压缩后的图像仅有些许非常小的误差。
  • PSNR 大于 30dB,人眼很难察觉压缩后和原始影像的差异。
  • PSNR 介于 20dB 到 30dB 之间,人眼就可以察觉出图像的差异。
  • PSNR 介于 10dB 到 20dB 之间,人眼还是可以用肉眼看出这个图像原始的结构,且直观上会判断两张图像不存在很大的差异。
  • PSNR 低于 10dB,人类很难用肉眼去判断两个图像是否为相同,一个图像是否为另一个图像的压缩结果。

一组来自 wiki 的对比图[1]

原图 PSNR 47.61dB PSNR 34.02dB PSNR 24.46dB
img img img img

SSIM

SSIM:结构相似性指标(structural similarity index)

SSIM 的基本思想为自然图像是高度结构化的,即在自然图像中相邻像素之间有很强的关系性,而这样的关系性承载了场景中物体的结构信息。人类视觉系统在观看图像时已经很习惯抽取这样的结构性信息。

SSIM 的定义

设两张图分别为 \(x\) 和 \(y\)。

SSIM 从三个维度来衡量图像的相似性:

  • 亮度 luminance

    \[l(x,y)=\frac{2\mu_x+\mu_y+c_1}{\mu_x^2+\mu_y^2+c_1} \]

    其中 \(\mu\) 表示图像的均值,\(c_1\) 和 \(c_2\) 是为了避免除以 0 而添加的常数:

    \[c_1=(k_1 L)^2,\quad c_2=(k_2 L)^2 \]

    \(k_1\) 默认取 0.01,\(k_2\) 默认取 0.03。\(L\) 和 PSNR 中的 \({MAX}_I\) 是同一个东西。

  • 对比度 contrast

    \[c(x,y)=\frac{2\sigma_x\sigma_y+c_2}{\sigma_x^2+\sigma_y^2+c_2} \]

    其中 \(\sigma^2\) 表示图像的方差。

  • 结构 structure

    \[s(x,y)=\frac{\sigma_{xy}+c_3}{\sigma_x\sigma_y+c_3} \]

    其中 \(\sigma_{xy}\) 是 \(x\) 和 \(y\) 的协方差,\(c_3\) 一般取 \(c_2\) 的一半。

于是,得到

\[SSIM(x,y)=l(x,y)^\alpha \cdot c(x,y)^\beta \cdot s(x,y)^\gamma \]

\(\alpha\)、\(\beta\)、\(\gamma\) 是控制三者相对重要性的参数,一般都取1即可。

在实际计算时,一般从图片上取一个固定大小的窗口,在窗口内进行 \(SSIM\) 计算,然后不断滑动窗口,最后取平均值作为全局的 \(SSIM\)。

SSIM 的取值

如果 \(x=y\),则有 \(\mu_x=\mu_y\),\(\sigma_x=\sigma_y\),可以推算得出此时 \(SSIM=1\)。

SSIM 是可以取负值的。

SSIM 越大,表明两张图的相似性越高。

局限性

有时,PNSR 和 SSIM 可能无法正确地反映图像的视觉质量。见 https://videoprocessing.ai/metrics/ways-of-cheating-on-popular-objective-metrics.html

SSIM 不适用于位移、旋转、缩放这些非结构性失真。这些种类的极轻微失真就会导致 SSIM 剧烈变化。


  1. 来自 Miiishele - 自己的作品,CC BY-SA 4.0,https://commons.wikimedia.org/w/index.php?curid=91759828 ↩︎

标签:PSNR,SSIM,mu,图像,MSE,sigma
From: https://www.cnblogs.com/eslzzyl/p/17908894.html

相关文章

  • 图像处理的基本操作
    图像处理最基本的操作,包括读取图像、显示图像、保存图像、获取图像属性等。下面将依次讲解这4个内容。1 读取图像OpenCV提供了用于读取图像的imread()方法,其语法格式如下:image=cv2.imread(filename,flags)参数说明:l image:是imread()方法的返回值,返回的是读......
  • C++读取FY卫星遥感图像(HDF格式)
    转一下我自己的博客网上找了大概2周,艰难的实现了C++读取HDF图像,CSDN吃相真难看,好多文章都要会员。。。#include<cstdint>#include<hdf5.h>#include<iostream>#include<matplotlibcpp.h>#include<opencv2/opencv.hpp>#include<opencv2/core/core.hpp>#include<......
  • 智能计算与图形图像处理Intelligent Computing and Graphics and Image Processing
      智能算法IntelligenceAlgorithms图形图像处理Graphics&ImageProcessing机器视觉machinevision计算机视觉computervision 计算机视觉(computervision),用计算机来模拟人的视觉机理获取和处理信息的能力。就是是指用摄影机和电脑代替人眼对......
  • 基于FPGA的图像形态学腐蚀算法实现,包括tb测试文件和MATLAB辅助验证
    1.算法运行效果图预览 将FPGA的仿真结果导入到MATLAB,结果如下所示:   2.算法运行软件版本vivado2019.2 matlab2022a 3.算法理论概述      基于FPGA的图像形态学腐蚀算法实现主要依赖于图像处理的基本原理和数学形态学的基础知识。在图像处理中,形态学操......
  • 真实照片与人工智能生成的艺术:新标准 (C2PA) 使用 PKI 来显示图像的历史
    https://www.asiaregister.com/zh/news/zhen-shi-zhao-pian-yu-ren-gong-zhi-neng-sheng-cheng-de-yi-shu-xin-biao-zhun-C2PA-shi-yong-PKI-lai-xian-shi-tu-xiang-de-li-shi-2661.htm在网上辨别真假变得越来越困难。Adobe、微软、索尼、DigiCert和数十家其他行业领导者推出的......
  • 图像识别的精度与效率优化研究
    基于深度学习的图像识别算法研究摘要:随着深度学习技术的快速发展,基于深度学习的图像识别算法已经成为计算机视觉领域的研究热点。本文将介绍基于深度学习的图像识别算法的基本原理、研究进展和应用领域,并探讨其未来的发展趋势。一、引言深度学习是一种基于神经网络的机器学习方......
  • C++中的图像处理与变换总结
    个人总结图像加法去噪是对同一场景的多幅图像求平均值,以降低加性随机噪声。随机噪声在不同的图像中是独立的,而场景信息是相同的。因此,通过将多幅图像相加并求平均,可以使场景信息保持不变,而噪声的影响则会减小。这是因为随机噪声的期望值为零,所以多幅图像的平均值会使噪声趋向于零......
  • 零基础 从 yolo8 入门计算机视觉超简单:物体识别、图像分类、轨迹追踪、姿势识别
    目录安装Ultralytics训练模型验证预测&识别导出追踪图像分割提取分类姿势识别轨迹生成UltralyticsYOLOv8是备受好评的实时目标检测和图像分割模型,主要功能是物体识别、分割图片物体、分类、姿态识别和跟踪等。Ultralytics支持使用CPU、GPU进行训练,支持x64、arm64等CPU......
  • ArcPy批量计算多张栅格图像各像元的平均数值
      本文介绍基于Python中ArcPy模块,对大量长时间序列栅格遥感影像文件的每一个像元进行多时序平均值的求取。  在遥感应用中,我们经常需要对某一景遥感影像中的全部像元的像素值进行平均值求取——这一操作很好实现,基于ArcMap软件或者简单的Python代码就可以实现;但有时候,我们会需......
  • 基于WTMM算法的图像多重分形谱计算matlab仿真
    1.算法运行效果图预览 2.算法运行软件版本matlab2022a 3.算法理论概述       基于WTMM算法的图像多重分形谱计算是一种利用小波变换模极大值(WTMM)方法,对图像进行多重分形分析的方法。下面将详细介绍这种方法的原理和数学公式。 3.1、WTMM算法概述   ......