0

例如我有:

X = [[1,2,3],[4,5,6]]
Y = [[1,4,7],[5,5,1]]

a=np.array(X)
grayA=(a-np.amin(a))/(np.amax(a)-np.amin(a))

b=np.array(Y)
grayB=(b-np.amin(b))/(np.amax(b)-np.amin(b))

但是,当我这样做时

compare_ssim(grayA, grayB)

我得到错误

ValueError: win_size exceeds image extent.  If the input is a multichannel (color) image, set multichannel=True.

我试过了

compare_ssim(grayA, grayB, multichannel = True)

但我仍然遇到同样的错误。

4

1 回答 1

1

产生错误是因为 win_size 的默认值为 7 并且

np.any((np.asarray(grayA.shape) - win_size) < 0)

要解决这个问题,您应该定义win_size为奇数且小于任何图像尺寸。所以,在你的例子中,它应该是win_size=1.

但是,当 win_size 等于 1 时,您需要设置use_sample_covariance=False,因为如果不是,代码需要除以 0。因此,您的示例可以使用

compare_ssim(grayA, grayB, win_size=1, use_sample_covariance=False)

如果您的图像是 7x7 或更大,问题就会消失。例如:

X = np.random.rand(7,7)
Y = np.random.rand(7,7)
compare_ssim(X, Y)
于 2020-06-26T22:36:00.190 回答