失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 图像质量评价指标之 PSNR 和 SSIM

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

时间:2024-05-13 08:00:15

相关推荐

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

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

概念:PSNR(PeakSignaltoNoiseRatio) 峰值信噪比,是信号最大功率与信号噪声功率之比。

通常使用PSNR来测量已经被压缩的重构图像的质量。每个图片元素(像素)都有一个颜色值,当图像被压缩,然后解压缩时,颜色值可以改变。信号可以具有很宽的动态范围,所以PSNR通常以分贝(dB)表示。

PSNR是最普遍,最广泛使用的评鉴画质的客观量测法,不过许多实验结果都显示,PSNR的分数无法和人眼看到的视觉品质完全一致,有可能PSNR较高者看起来反而比PSNR较低者差。这是因为人眼的视觉对于误差的敏感度并不是绝对的,其感知结果会受到许多因素的影响而产生变化(例如:人眼对空间频率较低的对比差异敏感度较高,人眼对亮度差异的敏感度比对色度的敏感度高,人眼对一个区域的感知结果会受到其周围邻近区域的影响,甚至在一些特定的环境中会产生视觉被欺骗的效果)。

两个图像之间PSNR值越大,则越相似。图像压缩中典型的峰值信噪比值在 30 到 40dB 之间。普遍基准为30dB,30dB以下的图像劣化较为明显。

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

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

然后 PSNR(dB) 就定义为:

P S N R = 10 ∗ log ⁡ 10 ( M A X I 2 M S E ) PSNR=10*\log_{10}(\frac{MAX_I^{2}}{MSE}) PSNR=10∗log10​(MSEMAXI2​​)

其中 M A X I MAX_I MAXI​为图片可能的最大像素值。如果每个像素都由 8 位二进制来表示,那么就为 255。通常,如果像素值由 B 位二进制来表示,那么 M A X I = 2 B − 1 MAX_I=2^B−1 MAXI​=2B−1。这是针对灰度图像的计算方法,如果是彩色图像,通常有三种方法来计算。

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

# im1 和 im2 都为灰度图像,uint8 类型# method 1diff = im1 - im2mse = np.mean(np.square(diff))psnr = 10 * np.log10(255 * 255 / mse)# method 2psnr = pare_psnr(im1, im2, 255)

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

概念:SSIM的全称为structural similarity index,即为结构相似性,是一种衡量两幅图像相似度的指标。该指标首先由德州大学奥斯丁分校的图像和视频工程实验室(Laboratory for Image and Video Engineering)提出。而如果两幅图像是压缩前和压缩后的图像,那么SSIM算法就可以用来评估压缩后的图像质量。

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

亮度 l ( x , y ) = 2 ∗ μ x ∗ μ y + c 1 μ x 2 + μ y 2 + c 1 l(x,y) = \frac{2 * \mu_x * \mu_y + c_1}{\mu_x^2 + \mu_y^2 +c_1} l(x,y)=μx2​+μy2​+c1​2∗μx​∗μy​+c1​​对比度 c ( x , y ) = 2 ∗ σ x ∗ σ y + c 2 σ x 2 + σ y 2 + c 2 c(x,y) = \frac{2 * \sigma_x * \sigma_y + c_2}{\sigma_x^2 + \sigma_y^2 +c_2} c(x,y)=σx2​+σy2​+c2​2∗σx​∗σy​+c2​​结构 s ( x , y ) = σ x y + c 3 σ x ∗ σ y + c 3 s(x,y) = \frac{\sigma_{xy} + c_3}{\sigma_x * \sigma_y +c_3} s(x,y)=σx​∗σy​+c3​σxy​+c3​​

一般来说取 c 3 = c 2 / 2 c_3 = c_2 / 2 c3​=c2​/2 ,其中 μ x \mu_x μx​和 μ y \mu_y μy​分别为x和y的均值,而 σ x 2 \sigma_x^2 σx2​和 σ y 2 \sigma_y^2 σy2​分别表示x和y的方差,同理 σ x y \sigma_{xy} σxy​表示x和y的协方差。 c 1 c_1 c1​和 c 2 c_2 c2​代表两个常数,是为了避免除零,其中 c 1 = ( k 1 ∗ L ) 2 c_1 = (k_1 * L)^2 c1​=(k1​∗L)2, c 2 = ( k 2 ∗ L ) 2 c_2 = (k_2 * L)^2 c2​=(k2​∗L)2。 L L L为像素值得范围既 L = 2 B − 1 L = 2^B - 1 L=2B−1, k 1 = 0.01 k_1 = 0.01 k1​=0.01, k 1 = 0.03 k_1 = 0.03 k1​=0.03均为默认值。

那么

S S I M ( x , y ) = [ l ( x , y ) α ∗ c ( x , y ) β ∗ s ( x , y ) γ ] SSIM(x,y) = [l(x,y)^\alpha * c(x,y)^\beta * s(x,y)^\gamma] SSIM(x,y)=[l(x,y)α∗c(x,y)β∗s(x,y)γ]

将 α , β , γ \alpha ,\beta, \gamma α,β,γ 设为 1,可以得到

S S I M ( x , y ) = ( 2 ∗ μ x ∗ μ y + c 1 ) ∗ ( 2 ∗ σ x y + c 2 ) ( μ x 2 + μ y 2 + c 1 ) ∗ ( σ x 2 + σ y 2 + c 2 ) SSIM(x,y) = \frac{(2 * \mu_x * \mu_y + c_1) * (2 * \sigma_{x y} + c_2)}{(\mu_x^2 + \mu_y^2 +c_1) * (\sigma_x^2 + \sigma_y^2 +c_2)} SSIM(x,y)=(μx2​+μy2​+c1​)∗(σx2​+σy2​+c2​)(2∗μx​∗μy​+c1​)∗(2∗σxy​+c2​)​

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

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

如果觉得《图像质量评价指标之 PSNR 和 SSIM》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。