0

我正在尝试计算两个图像的 SSIM 值,但出现错误。

  • img_np.shape = (1, 256, 256)
  • out.detach()[0].cpu().numpy().shape = (1, 256, 256)
  • out是模型生成的输出图像

当我尝试查找 SSIM 值ssim_ = compare_ssim(img_np, out.detach().cpu().numpy()[0])时出现错误ValueError: win_size exceeds image extent. If the input is a multichannel (color) image, set multichannel=True.

我努力了

  • ssim_ = compare_ssim(img_np, out.detach().cpu().numpy()[0], full=True)但同样的错误
  • ssim_ = compare_ssim(img_np, out.detach().cpu().numpy()[0], full=True, win_size=1,use_sample_covariance=False)然后我将输出作为数组而不是数字
4

1 回答 1

2

形状 (1, 256, 256) 被解释为具有 1 行、256 列和 256 个颜色通道的图像。

您可以使用numpy.squeeze删除冗余维度:

img_np = np.squeeze(img_np)

新形状将是 (256, 256) - 有效灰度图像的形状。


大多数 Python 包都采用“Channels-Last”图像格式。
请参阅:Channels-First 和 Channels-Last 图像格式的简要介绍

于 2021-06-22T08:45:11.513 回答