我有两个矩阵,我已经转换成灰度图像,我想找到它们之间的平均SSIM值(python)

2024-09-27 09:34:08 发布

您现在位置:Python中文网/ 问答频道 /正文

例如,我有:

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)

但我还是犯了同样的错误


Tags: imagetruesize错误nparraywincompare
1条回答
网友
1楼 · 发布于 2024-09-27 09:34:08

产生此错误的原因是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)

相关问题 更多 >

    热门问题