首页 > 解决方案 > 如何检测压缩图像是否是从未压缩的图像创建的

问题描述

我有 2 个图像: 1 个 pgm 格式的原始图像 1 个 pgn/jpg 格式的压缩图像

是否有工具可以检测压缩图像是否是从原始图像创建的?

我在 linux 中使用 c++,但是关于这个主题的任何线索都会非常有帮助。

标签: imagecompression

解决方案


有很多方法可以比较图像。你可以看看:

  • 绝对误差 - 不同像素数的计数
  • 峰值绝对误差 - 任何像素的最大差异
  • 平均绝对误差 - 所有像素的平均误差
  • 均方误差 - 如上所述但平方
  • 均方根误差 - 以上的平方根
  • 归一化互相关。

Anthony Thyssen在这里有一个很好的总结。

如果我们拍摄一张灰度 Lena 图像并将其 PGM 格式与 PNG 和 JPEG 进行比较,您可以在命令行中很好地了解 ImageMagick 的不同之处,如下所示:

# Compare lossy JPEG Lena with PGM
compare -metric RMSE lena.pgm lena.jpg null:
567.167 (0.00865442)

# Compare lossless PNG Lena with PGM
compare -metric RMSE lena.pgm lena.png null:
0 (0)

如果我现在生成一个质量较低的 JPEG Lena 并再次与 PGM 进行比较,您可以看到错误/差异更大:

convert lena.pgm -quality 50 lena.jpg
compare -metric RMSE lena.pgm lena.jpg null:
1110.81 (0.0169498)

推荐阅读