WebP 的 SSIM 计算
SSIM calculation for WebP
ImageMagick 的 'compare' 在使用 SSIM 作为比较指标时似乎提供了不相关的数字。我正在使用 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 脚本的 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 的其他方法是什么?
您是否安装了 webp 作为 ImageMagick 的委托? 如果是,它应该显示在 magick -version
的委托列表中。你的 platform/OS 是多少?
我的 ssim 脚本似乎适用于 IM 7.0.8.59 Q16 Mac OSX
magick rose: rose.webp
ssim rose.webp rose.webp
ssim=1 dssim=0
ImageMagick 比较也适合我。
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
其实答案很简单。我使用了有问题的 ImageMagick 版本。只需更改比较顺序即可解决问题:
magick compare -metric SSIM compressed.jpg original.png difference.png
ImageMagick 的 'compare' 在使用 SSIM 作为比较指标时似乎提供了不相关的数字。我正在使用 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 脚本的 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 的其他方法是什么?
您是否安装了 webp 作为 ImageMagick 的委托? 如果是,它应该显示在 magick -version
的委托列表中。你的 platform/OS 是多少?
我的 ssim 脚本似乎适用于 IM 7.0.8.59 Q16 Mac OSX
magick rose: rose.webp
ssim rose.webp rose.webp
ssim=1 dssim=0
ImageMagick 比较也适合我。
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
其实答案很简单。我使用了有问题的 ImageMagick 版本。只需更改比较顺序即可解决问题:
magick compare -metric SSIM compressed.jpg original.png difference.png