最近看一个代码里面计算psnr和ssim使用的是老版本的用法,代码跑不起来。
from skimage.measure import compare_psnr,compare_ssim
查阅之后发现是新版本废弃了这两个方法。然后在API文档中搜索找到了新版本应该使用的API
from skimage.metrics import structural_similarity as compare_ssim
from skimage.metrics import peak_signal_noise_ratio as compare_psnr
就是把相关方法放到了metrics里面了,名字都从缩写变成了全名
在附上API说明吧。structural_similarity,peak_signal_noise_ratio
skimage.metrics.structural_similarity(im1, im2, *, win_size=None, gradient=False, data_range=None, channel_axis=None, multichannel=False, gaussian_weights=False, full=False, **kwargs)
计算两个图片之间的平均结构相似指数。
im1, im2: ndarray
两个图片,任何具有相同形状的维度。
win_size: int or None, optional
用来比对的滑动窗口的变长。必须是奇数。如果gaussian_weights是True,将其忽略,窗口尺寸将依赖于sigma
gradient: bool, optional
如果为True,也会返回相对于im2的梯度
data_range: float, optional
输入图像的数据范围(最大和最小值之间可能的距离)使用默认,这会从图像数据类型中估计
channel_axis: int or None, optional
如果为None,图像被假定为灰度图(单通道),否则,使用该参数索引轴的数组对应的通道。
multichannel: bool, optional
如果为True,则将数组的最后一维视为通道。相似度计算是独立完成的每个通道,然后平均。此参数已弃用:请指定channel_axis。
gaussian_weights: bool, optional
如果为True,则每个patch的均值和方差由宽度σ =1.5的归一化高斯核进行空间加权。
full: bool, optional
如果为True,也返回完整的结构相似度图像。
mssim: float
图像上的平均结构相似度指数。
grad: ndarray
im1和im2之间的结构相似度梯度。这只在梯度设置为True时返回。
S: ndarray
完整的SSIM映像。这只在full设置为True时返回。
最后再说一下,如果是以前的代码改成现在的这个structural_similarity,如果用了multichannel,他会提示使用channel_axis,选定通道的那个维度即可。
skimage.metrics.peak_signal_noise_ratio(image_true, image_test, *, data_range=None)
给一个图片计算峰值信噪比
image_true: ndarray
Ground-truth图像,与im_test形状相同。
image_test: ndarray
测试图像
data_range: int, optional
输入图像的数据范围(可能值的最小值和最大值之间的距离)。默认情况下,这是根据图像数据类型估计的。
psnr: float
PSNR值度量