我正在尝试使用“compare_ssim”函数。我现在有两个x,y坐标的2xN矩阵,第一行是所有的x坐标,第二行是所有的y坐标。如何计算这两幅图像的SSIM(如果有方法的话)
例如,我有:
X = np.array([[1,2,3], [4,5,6]])
Y = np.array([[3,4,5],[5,6,7]])
compare_ssim(X,Y)
但是我得到了错误
ValueError: win_size exceeds image extent. If the input is a multichannel (color) image, set multichannel=True.
我不确定我是否缺少一个参数,或者我是否应该以这样一种方式转换矩阵,以使这个函数工作。或者如果有一种方法,我应该把我的坐标转换成灰度矩阵?对于函数参数的矩阵应该是什么样子,我有点困惑。我知道它们应该是ndarray,但是类型(Y)和类型(Y)都是numpy.ndarray
因为您没有提到您正在使用的框架/库,所以我假设您正在使用skimage的compare_ssim
问题中的错误是由于输入的形状造成的。您可以找到更多详细信息here
TL;DR:compare_ssim希望图像具有(H、W、C)维度,但您的输入图像具有(2、3)维度。因此,函数混淆了将哪个维度视为通道维度。当multichannel=True时,最后一个维度被视为通道维度
您的代码有3个关键问题
比较\u图像需要图像作为输入。所以你们的X和Y矩阵应该是(H,W,C)维而不是(2,3)
它们应该是浮点数据类型
下面我展示了一些演示代码(注意:自skimage v1.7以来,compare_ssim已移至skimage.metrics.structural_similarity)
相关问题 更多 >
编程相关推荐