图像比较的SSIM算法:图像形状问题

3

我正在计算两张图片之间的结构相似性指数。我不理解维度应该是什么。这两张图片(参考图像和目标图像)都是RGB图像。

如果将我的图像格式设置为(256*256, 3),我会得到:

    ref = Image.open('path1').convert("RGB")
    ref_array = np.array(ref).reshape(256*256, 3)
    print(ref_array.shape)    # (65536, 3)
    img = Image.open('path2').convert("RGB")
    img_array = np.array(img).reshape(256*256, 3)
    print(img_array.shape)    # (65536, 3)

    ssim = compare_ssim(ref_array,img_array,multichannel=True,data_range=255)

结果是0.0786
另一方面,如果我将其重塑为(256,256,3):
    ref = Image.open('path1').convert("RGB")
    ref_array = np.array(ref)
    print(ref_array.shape)    # (256, 256, 3)
    img = Image.open('path2').convert("RGB")
    img_array = np.array(img)
    print(img_array.shape)    # (256, 256, 3)

    ssim = compare_ssim(ref_array, img_array, multichannel=True, data_range=255)

结果是 0.0583
这两个结果哪一个是正确的?为什么?因为文档可能存在概念问题,所以没有提及。

你好,您是否认为这些图片应该看起来一样? SSIM 是用于评估“之前”和“之后”过滤/压缩的另一种替代 MSE 的方法,因此我认为它对旋转或稍微不同的裁剪效果不佳。 - Pam
我正在使用机器学习方法进行渲染,因此生成的图像应该看起来像N个样本->无穷大的参考图像。对于这个任务,SSIM通常比MSE更可靠。 - maurock
像自编码器?这似乎相当低,但如果您刚开始训练,那可能是这种情况。 - Pam
不像自编码器。这是一种基于物理渲染的MC重要性采样的变体,其中采样方法基于强化学习。SSIM非常低,因为我将生成的参考图与5120 SSP的示例进行了比较,而8SPP只是一个例子。 - maurock
好的,这听起来很合理。还有一件事,我已经在YUV颜色空间(1个灰度通道,2个彩色通道)上使用了SSIM。 问题暗示RGB可能会给出不同的值。但是,它是“旧的”,我的SSIM经验并不新! - Pam
1个回答

3
第二个是正确的,假设你有一个正方形的图像而不是一个非常长和窄的图像。
SSIM考虑相邻的像素(用于亮度和色度掩蔽和识别结构)。图像可以是任何形状,但如果告诉算法您的形状为256×256个像素,则垂直结构将不会被考虑。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接