Skimage.measure 的compare_psnr和compare_ssim的改动

Skimage.measure 的compare_psnr和compare_ssim的改动及错误解决
最近在尝试复现使用DnCNN进行图像去噪的过程中发现,代码中计算峰值信噪比psnr和结构相似性指数ssim的代码还是之前旧版本的,在进行导入的时候会爆红

from skimage.measure import compare_psnr, compare_ssim

参考Skimage.measure 的compare_psnr和compare_ssim的改动,解决了函数导入问题,将原本的导入语句修改为以下格式即可

from skimage.metrics import structural_similarity as compare_ssim
from skimage.metrics import peak_signal_noise_ratio as compare_psnr

成功导入代码之后运行又出现了新的问题,报错无法使用
Traceback (most recent call last):
File “D:DnCNN\TrainingCodes\dncnn_keras\main_test.py”, line 128, in < module >
ssim_x_ = compare_ssim(x, x_)
File “C:\Users\dandelion\anaconda3\envs\RDDCNN\lib\site-packages\skimage\metrics_structural_similarity.py”, line 194, in structural_similarity
raise ValueError(
ValueError: Since image dtype is floating point, you must specify the data_range parameter. Please read the documentation carefully (including the note). It is recommended that you always specify the data_range anyway.

查询相关资料发现,在使用scikit-image库的compare_ssim函数计算结构相似性指数(SSIM)时,没有指定data_range参数所致。
data_range参数指定了图像像素值的范围,用于对标准差和协方差进行归一化。当图像的像素值类型为浮点型时,必须指定data_range参数。如果没有指定,则会引发该错误。
要解决这个问题,可以在调用compare_ssim函数时添加data_range参数。data_range参数的值应该等于像素值的最大值减去最小值。例如,如果像素值的范围是[0, 1],那么data_range参数应该设置为1。
在原本代码中的

ssim_x_ = compare_ssim(x, x_)

替换为

ssim_x_ = compare_ssim(x, x_, data_range=x.max() - x.min())

即使像素值类型为整数类型,也建议在使用的过程中始终指定data_range参数,以确保计算正确。

  • 15
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: Q: "from skimage.measure import compare_psnr"表示什么意思? A: 这段代码是在Python中导入skimage库中的measure模块中的compare_psnr函数。compare_psnr函数用于计算两张图像之间的峰值信噪比(PSNR)值,是一种衡量图像质量的指标。 ### 回答2: from skimage.measure import compare_psnr是一个Python库中的一个类,用于计算图像的峰值信噪比(PSNR)。PSNR是一个可以量化图像质量的指标,它是比较两幅图像的相似度时常用的度量标准之一。 在计算PSNR时,我们需要比较两幅图像之间的差异。比较pnsr函数会首先将两个输入的图像归一化到相同的尺寸,然后比较它们之间的像素值是否相同。接下来,该函数将相邻像素之间的误差平方相加,并除以像素数来计算平均误差平方值(MSE)。然后,通过将MSE除以峰值信号功率得到PSNR。 峰值信号功率表示像素值的范围。对于一幅图像,峰值信号功率就是该像素值的最大值。例如,对于一个8位的灰度图像,其像素值范围为0到255,峰值信号功率为255。我们可以使用相同的方法来计算彩色图像的峰值信号功率。 通过使用比较pnsr函数,我们可以计算两幅图像之间的PSNR,并将其用于图像质量控制和优化算法。在实际应用中,我们可能需要针对不同的应用场景,选择不同的图像质量指标来进行计算和评估。峰值信噪比是其中一种广泛应用的图像质量指标,它可以同时考虑图像的结构和像素值的精度,可以很好地适用于多种场景的图像处理需求。 ### 回答3: 从skimage.measure中导入compare_psnr函数是用于计算图像之间的峰值信噪比(Peak Signal-to-Noise Ratio,PSNR)。峰值信噪比是评估图像质量的一种常用指标,通常被用于比较原始图像和经过压缩或处理后的图像之间的相似性。 PSNR是通过计算图像的峰值信号功率和图像的均方误差之间的比率来衡量图像质量。峰值信号功率代表的是图像所能表示的最大功率,均方误差则是用来衡量压缩或处理后的图像与原始图像之间的差异。PSNR的计算公式为PSNR = 10 * log10 (峰值信号功率 / 均方误差)。 使用compare_psnr函数可以计算两个图像之间的PSNR值,其中需要传入两个图像数组作为参数。该函数计算出的PSNR值越高,表示两个图像之间的相似度越高,即图像质量越接近。 总的来说,skimage.measure中的compare_psnr函数是一个非常实用的工具,可以方便地评估和比较图像质量,适用于图像压缩、处理、传输等方面。它可以提供给用户一种量化的方式来描述图像之间的差异,并提供有关图像重建质量的信息,帮助用户制定更好的图像处理策略。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值