问题描述
我有一个 RGBA 图像(下图),我想计算不同的质量指标,将原始图像与失真版本进行比较。这样做时,我想忽略背景的影响,只关注对象。首先,我从原始图像中提取 Alpha 通道以创建 Alpha 蒙版并创建一个没有 Alpha 通道的图像版本。
convert man1_orig.png -alpha extract man1_mask.png
convert man1_orig.png -alpha off man1.png
然后我创建一个扭曲的版本并将 alpha 掩码传递给 -read-mask
的 compare
标志并计算 PSNR 和 SSIM:
magick man1.png -quality 5% distorted.jpg
compare -metric PSNR -read-mask man1_mask.png man1.png distorted.jpg diff_mask.png
// 23.9876
compare -metric SSIM -read-mask man1_mask.png man1.png distorted.jpg diff_mask.png
// 0.192216
然而,当我使用完整图像(无 alpha)重复相同的实验时,我得到了不同的 PSNR 结果,正如预期的那样,但 SSIM 产生相同的结果:
compare -metric PSNR man1.png distorted.jpg diff_full.png
// 27.7426
compare -metric SSIM man1.png distorted.jpg diff_full.png
// 0.192216
对于完整图像,我认为 PSNR 更高,因为未失真和失真图像中的背景像素非常相似,并且对结果有积极的贡献。对于 SSIM,我怀疑 -read-mask
没有效果。是否没有为 SSIM 实现此功能,或者在图像的屏蔽区域上测量 SSIM 可能没有任何意义?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)