image - 如何检测压缩图像是否是从未压缩的图像创建的
问题描述
我有 2 个图像: 1 个 pgm 格式的原始图像 1 个 pgn/jpg 格式的压缩图像
是否有工具可以检测压缩图像是否是从原始图像创建的?
我在 linux 中使用 c++,但是关于这个主题的任何线索都会非常有帮助。
解决方案
有很多方法可以比较图像。你可以看看:
- 绝对误差 - 不同像素数的计数
- 峰值绝对误差 - 任何像素的最大差异
- 平均绝对误差 - 所有像素的平均误差
- 均方误差 - 如上所述但平方
- 均方根误差 - 以上的平方根
- 归一化互相关。
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)
推荐阅读
- node.js - 黑名单 JWT 令牌
- python - 如何打印动态分配函数的方法名称?
- utf-8 - 从 bash 中的大文本文件中删除 latin-1 字符
- javascript - 按年龄对数组进行排序
- excel - 使用 Apache poi 在 Selenium 中处理 excel 的问题
- python - 如何在 scrapy 中使用选择器解析这个特定的 html 正文?
- javascript - 将多个复选框值存储在一个 localStorage 键中
- c# - 控件上的透明图像
- android - VS 2017 中的 Xamarin Android 调试问题
- python - 删除非常大的数据集上的重复项