计算两幅图像的相似度(PSNR、SSIM、MSE、余弦相似度、MD5、直方图、互信息、Hash)& 代码实现 与举例

2023-11-15

MSE(Mean Squared Error)均方误差

MSE公式 

MSE 计算模型的预测 Ŷ 与真实标签 Y 的接近程度。公式表示为:

 

对于两个m×n的单通道图像I和K,它们的均方误差可定义为:

优点:MSE的函数曲线光滑、连续,处处可导,便于使用梯度下降算法,是一种常用的损失函数。而且,随着误差的减小,梯度也在减小,这有利于收敛,即使使用固定的学习速率,也能较快的收敛到最小值。

缺点:当真实值y和预测值f(x)的差值大于1时,会放大误差;而当差值小于1时,则会缩小误差,这是平方运算决定的。MSE对于较大的误差(>1)给予较大的惩罚,较小的误差(<1)给予较小的惩罚。也就是说,对离群点比较敏感,受其影响较大。

代码实现

# MSE

# 方法一:自定义函数

import numpy as np
def MSE(img1,img2):
    mse = np.mean( (img1 - img2) ** 2 )
    return mse

# 方法二:调用库函数
# 老版本的scikit-image,加载SSIM、PSNR、MSE的方式:
from skimage.measure import compare_mse as mse

# 新版本的scikit-image,加载方式:
from skimage.metrics import mean_squared_error as mse

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

 PSNR(Peak Signal to Noise Ratio),峰值信噪比,是一种评价图像的客观标准。,应用场景有很多。它具有局性,PSNR是“Peak Signal to Noise Ratio”的缩写。peak的中文意思是顶点。而ratio的意思是比率或比列的。整个意思就是到达噪音比率的顶点信号,psnr一般是用于最大值信号和背景噪音之间的一个工程项目。通常在经过影像压缩之后,通常输出的影像都会在某种程度与原始影像不同。为了衡量经过处理后的影像品质,通常会参考PSNR值来衡量某个处理程序能否令人满意。它是原图像与被处理图 像之间的均方误差相对于(2n-1)2的对数值(信号最大值的平方,n是每个采样值的比特数),它的单位是dB。

PSNR是最普遍和使用最为广泛的一种图像客观评价指标,然而它是基于对应像素点间的误差,即 基于误差敏感的图像质量评价。由于并未考虑到人眼的视觉特性(人眼对空间频率较低的对比差异敏感度较高,人眼对亮度对比差异的敏感度较色度高,人眼对一个 区域的感知结果会受到其周围邻近区域的影响等),因而经常出现评价结果与人的主观感觉不一致的情况。

PSNR公式

PSNR是通过MSE得出来的,公式如下: 

 其中,MAXI是表示图像点颜色的最大数值,如果每个采样点用 8 位表示,那么就是 255。

 所以MSE越小,则PSNR越大;所以PSNR越大,代表着图像质量越好。一般来说,

  • PSNR高于40dB说明图像质量极好(即非常接近原始图像);
  • 在30—40dB通常表示图像质量是好的(即失真可以察觉但可以接受);
  • 在20—30dB说明图像质量差;
  • 最后,PSNR低于20dB图像不可接受。

代码实现

# PSNR

# 方法一:自定义函数 
 
import numpy
import math
def psnr(img1, img2):
    mse = numpy.mean( (img1 - img2) ** 2 )
    if mse == 0:
        return 100
    PIXEL_MAX = 255.0
    return 20 * math.log10(PIXEL_MAX / math.sqrt(mse))


# 方法二:调用库函数

# 老版本的scikit-image,加载SSIM、PSNR、MSE的方式:
from skimage.measure import compare_ssim as ssim
from skimage.measure import compare_psnr as psnr
from skimage.measure import compare_mse as mse

# 新版本的scikit-image,加载方式:
from skimage.metrics import structural_similarity as ssim
from skimage.metrics import peak_signal_noise_ratio as psnr
from skimage.metrics import mean_squared_error as mse

SSIM(structural similarity)结构相似性

SSIM(structural similarity),结构相似性,是一种衡量两幅图像相似度的指标。

SSIM算法主要用于检测两张相同尺寸的图像的相似度、或者检测图像的失真程度。

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

SSIM公式

 常数

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

计算两幅图像的相似度(PSNR、SSIM、MSE、余弦相似度、MD5、直方图、互信息、Hash)& 代码实现 与举例 的相关文章

随机推荐