图像质量评价指标之 PSNR 和 SSIM

1. PSNR (Peak Signal-to-Noise Ratio) 峰值信噪比

给定一个大小为 \(m×n\) 的干净图像 \(I\) 和噪声图像 \(K\),均方误差 \((MSE)\) 定义为:

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

然后 \(PSNR (dB)\) 就定义为:

\[PSNR = 10 \cdot log_{10}(\frac{MAX_I^2}{MSE})\]

其中 \(MAX_I^2\) 为图片可能的最大像素值。如果每个像素都由 8 位二进制来表示,那么就为 255。通常,如果像素值由 \(B\) 位二进制来表示,那么 \(MAX_I = 2^B-1\)。

一般地,针对 uint8 数据,最大像素值为 255,;针对浮点型数据,最大像素值为 1。

上面是针对灰度图像的计算方法,如果是彩色图像,通常有三种方法来计算。

  • 分别计算 RGB 三个通道的 PSNR,然后取平均值。
  • 计算 RGB 三通道的 MSE ,然后再除以 3 。
  • 将图片转化为 YCbCr 格式,然后只计算 Y 分量也就是亮度分量的 PSNR。

其中,第二和第三种方法比较常见。

# im1 和 im2 都为灰度图像,uint8 类型

# method 1
diff = im1 - im2
mse = np.mean(np.square(diff))
psnr = 10 * np.log10(255 * 255 / mse)

# method 2
psnr = skimage.measure.compare_psnr(im1, im2, 255)

compare_psnr(im_true, im_test, data_range=None) 函数原型可见此处

针对超光谱图像,我们需要针对不同波段分别计算 PSNR,然后取平均值,这个指标称为 MPSNR。

2. SSIM (Structural SIMilarity) 结构相似性

\(SSIM\) 公式基于样本 \(x\) 和 \(y\) 之间的三个比较衡量:亮度 (luminance)、对比度 (contrast) 和结构 (structure)。

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

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

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

一般取 \(c_3 = c_2 / 2\)。

  • \(\mu_x\) 为 \(x\) 的均值
  • \(\mu_y\) 为 \(y\) 的均值
  • \(\sigma_x^2\) 为 \(x\) 的方差
  • \(\sigma_y^2\) 为 \(y\) 的方差
  • \(\sigma_{xy}\) 为 \(x\) 和 \(y\) 的协方差
  • \(c_1 = (k_1L)^2, c_2 = (k_2L)^2\) 为两个常数,避免除零
  • \(L\) 为像素值的范围,\(2^B-1\)
  • \(k_1=0.01, k_2=0.03\) 为默认值

那么

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

将 \(\alpha,\beta,\gamma\) 设为 1,可以得到

\[SSIM(x, y) = \frac{(2\mu_x \mu_y + c_1)(2\sigma_{xy}+c_2)}{(\mu_x^2+ \mu_y^2 + c_1)(\sigma_x^2+\sigma_y^2+c_2)}\]

每次计算的时候都从图片上取一个 \(N×N\) 的窗口,然后不断滑动窗口进行计算,最后取平均值作为全局的 SSIM。

# im1 和 im2 都为灰度图像,uint8 类型
ssim = skimage.measure.compare_ssim(im1, im2, data_range=255)

compare_ssim(X, Y, win_size=None, gradient=False, data_range=None, multichannel=False, gaussian_weights=False, full=False, **kwargs) 函数原型可见此处

针对超光谱图像,我们需要针对不同波段分别计算 SSIM,然后取平均值,这个指标称为 MSSIM。

获取更多精彩,请关注「seniusen」!

原文地址:https://www.cnblogs.com/seniusen/p/10012656.html

时间: 2024-11-19 17:35:57

图像质量评价指标之 PSNR 和 SSIM的相关文章

图像质量评价指标之Matlab实现

在图像处理算法研究中,很多时候需要有客观评价指标来对算法的性能进行评价. 比如,在图像复原.图像滤波算法研究中,需要采用客观评价指标来定量的来测试算法恢复出的图像相对于参考图像的好坏程度. 本文介绍文献中提到到三个比较好的客观评价指标——峰值性噪比PSNR.模糊系数K.质量因素Q,其定义分别是: 这三个指标的详细定义见参考文献[1]~[3],下面给出这三个评价指标的MatLab实现. [html] view plaincopy %说明:本文件为计算两幅视频图象相对于高清晰图象的质量,其中: %e

图像质量评价

1.PSNR,峰值信噪比 通常用来评价一幅图像压缩后和原图像相比质量的好坏,当然,压缩后图像一定会比原图像质量差的,所以就用这样一个评价指标来规定标准了.PSNR越高,压缩后失真越小.这里主要定义了两个值,一个是均方差MSE,另一个是峰值信噪比PSNR,公式如下: 这里的MAX通常是图像的灰度级,一般就是255了. close all; clear all; clc; img=imread('lena.jpg'); [h w]=size(img); imgn=imresize(img,[floo

OpenCV进行图像相似度对比的几种办法

对计算图像相似度的方法,本文做了如下总结,主要有三种办法: 1.PSNR(Peak Signal to Noise Ratio)峰值信噪比,一种全参考的图像质量评价指标. 简介: http://www.cnblogs.com/vincent2012/archive/2012/10/13/2723152.html PSNR是最普遍和使用最为广泛的一种图像客观评价指标,然而它是基于对应像素点间的误差,即基于误差敏感的图像质量评价.由于并未考虑到人眼的视觉特性(人眼对空间频率较低的对比差异敏感度较高,

转:视频压缩的基本概念(x264解压包)

第1页:前言——视频压缩无处不在H.264 或者说 MPEG-4 AVC 是目前使用最广泛的高清视频编码标准,和上一代 MPEG-2.h.263/MPEG-4 Part4 相比,它的压缩率大为提高,例如和 MPEG-2 相比,同样的压缩后画面品质,h.264 的码率通常只需要一半,这意味着存储空间和网络传输时间/带宽大为节省.h.264 是由 ITU-T Study Group 16 (VCEG) 和 ISO/IEC JTC 1 SC 29 / WG 11 (MPEG)这两个组织共同合作制定的,

MATLAB Image Processing Toolbox 官方文档

一.函数 导入,导出和转换 从文件读取和写入图像数据 imread 从图形文件读取图像 imwrite 将图像写入图形文件 imfinfo 显示图形文件的信息 nitfinfo 显示NITF文件信息 nitfread 从NITF文件读取映像 dpxinfo 显示DPX文件信息 dpxread 读取DPX图像 analyze75info 从Analyze 7.5数据集的头文件中读取元数据 analyze75read 从Analyze 7.5数据集的图像文件读取图像数据 interfileinfo

vlc 详细使用方法:libvlc_media_add_option 函数中的参数设置

[转载自]tinyle的专栏 [原文链接地址]http://blog.csdn.net/myaccella/article/details/7027962 [手记] 下面列出的参数可以在命令行中执行,也可以在VLC界面中填写.当然,更重要的是能在 程序中调用. 程序中调用的时候要注意,什么是全局参数,什么是会话参数.例如: RTP over TCP的选项,必须用冒号.用双减号则没有效果. 正确写法:libvlc_media_add_option(m_media, “:rtsp-tcp”); 错误

图像清晰度的评价及分析

图像清晰度的评价及分析 2016年07月28日 17:54:22 clxiaoclxiao 阅读数:17963更多 个人分类: opencv 在无参考图像的质量评价中,图像的清晰度是衡量图像质量优劣的重要指标,它能够较好的与人的主观感受相对应,图像的清晰度不高表现出图像的模糊.本文针对无参考图像质量评价应用,对目前几种较为常用的.具有代表性清晰度算法进行讨论分析,为实际应用中选择清晰度算法提供依据. (1)Brenner 梯度函数 Brenner梯度函数是最简单的梯度评价函数,它只是简单的计算相

用GAN进行图像压缩 by ch

论文连接:https://arxiv.org/abs/1804.02958v1 一.简介 利用生成对抗网络进行图像压缩,其实就相当于用一个生成器代替了原来的decoder.decoder将编码后的图片恢复成原始图片,靠的是encoder生成的编码,所以生成图像的质量和码字的长度直接相关,这也就限制了编码率的进一步减小.本文的作者提出利用生成对抗网络作为decoder就是为了解决这个问题.编码过程中,不再对整个图像进行编码,而是只对其中的某一部分进行编码,然后恢复原始图像时,编码部分通过解码进行恢

x264源代码简单分析:滤波(Filter)

本文记录x264的x264_slice_write()函数中调用的x264_fdec_filter_row()的源代码.x264_fdec_filter_row()对应着x264中的滤波模块.滤波模块主要完成了下面3个方面的功能: (1)环路滤波(去块效应滤波)(2)半像素内插(3)视频质量指标PSNR和SSIM的计算 本文分别记录上述3个方面的源代码. 函数调用关系图 滤波(Filter)部分的源代码在整个x264中的位置如下图所示. 单击查看更清晰的图片 滤波(Filter)部分的函数调用关