0

当使用 SSIM 作为比较指标时,ImageMagick 的“比较”似乎提供了不相关的数字。我正在使用 ImageMagick 7.0.8-58 Q16。

我尝试了各种级别的 WebP 压缩(包括无损)

magick compare -metric SSIM original.png lossless.webp difference.png

提供 0.734809。虽然我希望视觉上无法区分的图像约为 0.999(显然没有伪影,因为它是一个以无损模式压缩的 WebP 文件)

收到这样的结果,我认为将 PNG 与 WebP 进行比较存在问题,因此我尝试将原始 PNG 与具有目标 SSIM 的压缩 JPEG 进行比较。Fred 的 ImageMagick Scripts 中的 SSIM 包给出了 ssim=0.949 和 dssim=0.051 的结果。相反,ImageMagick 为同一个文件给出了 0.711049 结果。

magick compare -metric SSIM original.png compressed.jpg difference.png

遗憾的是,Fred 的 SSIM 似乎不适用于 WebP,GraphicsMagick 的比较不支持 SSIM。那么我如何从 ImageMagick 获得准确的 SSIM,或者还有哪些其他方法可以为 WebP 文件获取 SSIM?

4

2 回答 2

1

您是否安装了 webp 作为 ImageMagick 的代表?如果是这样,它应该显示在代表列表中magick -version。你的平台/操作系统是什么?

我的 ssim 脚本似乎适用于 IM 7.0.8.59 Q16 Mac OSX

magick rose: rose.webp
ssim rose.webp rose.webp

ssim=1 dssim=0


ImageMagick compare 也适用于我。

magick compare -metric ssim rose.webp rose.webp null:

1


我认为 webp 到 png 的较低值可能与 webp 有损压缩有关。我从 ImageMagick 和我的脚本中获得了类似的值:

magick rose: rose.webp
magick rose: rose.png

magick compare -metric ssim rose.webp rose.png null:
0.895189

ssim rose.webp rose.png
ssim=0.895 dssim=0.105


但是,如果我使用无损压缩,那么我会得到一个完美的比较:

magick rose: -define webp:lossless=true rose.webp
magick rose: rose.png

ssim rose.webp rose.png
ssim=1 dssim=0

magick compare -metric ssim rose.webp rose.png null:
1

添加:

对我来说,webp 图像在命令行中的顺序无关紧要。

在这里,我使用无损压缩。

magick rose: rose.png
magick rose: -define webp:lossless=true rose.webp

magick compare -metric ssim rose.webp rose.png null:
1
1magick compare -metric ssim rose.png rose.webp null:
1

在这里,我不使用无损压缩。

magick rose: rose.png
magick rose: rose.webp

magick compare -metric ssim rose.webp rose.png null:
0.895189
magick compare -metric ssim rose.png rose.webp null:
0.895189
于 2019-08-04T20:13:39.230 回答
1

其实答案很简单。我使用了一个错误版本的 ImageMagick。只需更改比较顺序就可以了:

magick compare -metric SSIM compressed.jpg original.png difference.png
于 2019-08-05T12:20:53.797 回答