compression op• 数据种类:image2d → image2d
• 调用: import fullseye as fs; fs.ledger.error_level_map(image, quality: 'int' = 90, normalize: 'bool' = True) -> 'np.ndarray'(要直接调用实现,import imgforensics; imgforensics.error_level_map(image, quality: 'int' = 90, normalize: 'bool' = True) -> 'np.ndarray';从台账取用则 opsimgforensics.get("error_level_map"))
ELA(误差水平分析)。给出按指定质量重压缩后差分的地图。image2d。
Krawetz 2007。JPEG 按 8x8 块量化,所以基于这样的思路:压缩过一次的区域 以相同质量再压缩时误差小,而事后粘贴 / 绘制的区域误差会大量残留。
normalize=True(默认)时除以最大值变为 [0, 1] 区间(用于查看)。False 时为 8 bit 灰阶原样的绝对误差(用于计数)。
没有 Pillow 时为 ImportError。不会退化为近似。 若只用 numpy 模仿 DCT 的量化,就会成为编码器的舍入、色彩空间转换、色度抽样都消失了的*另一种东西*。把它称作 ELA,就等于自己去做这一族要消灭的“看似合理地出错”。
这张图无法断言的事(tests/test_imgforensics.py 以数值固定。在 256x256 的 1/f^1.6 图像中央 64x64 处粘贴了另一张图像):
==================================== =============== =============== =========
原图像 粘贴部的 ELA 背景的 ELA 比
==================================== =============== =============== =========
无压缩(从未经过 JPEG) 0.1966 0.1793 1.096
经过一次 JPEG 质量 75 0.1966 0.0401 4.898
==================================== =============== =============== =========
• 在无压缩 PNG 上什么也说不了。上面的 1.096 倍意味着“粘贴处与未粘贴处无法区分”。ELA 只有在“原图是 JPEG”时才有意义,那时才首次出现 4.898 倍的差异。
• 常说的“ELA 只是在追踪高频”,在这张图像上也不成立 —— ELA 与 Sobel 梯度强度的相关为 0.003(无压缩)/ 0.057(已 JPEG)。ELA 看的是 8x8 块的量化残差,所以测的是与梯度不同的东西。即便如此,如上表所示,无压缩时不能分离篡改。不是“因为它只是梯度的换种说法所以不行”,而是因为没有可作比较基准的量化历史所以不行。
• 平坦区域即使压缩也不产生误差,所以即使被篡改也仍然是暗的。
• 示例数据目录(下载 URL / 许可证) —— 2-D 用 skimage.data(BSD/公有领域)加合成图,3-D 给出真实数据源(Stanford/PDS 等)的下载 URL。
• 算子来历与参考文献 —— 该算子族所依据的研究/方法出处。
• 算法的正典(作者、年份)与用途见上面的族使用指南。
• image_forensics_audit — py -3.11 examples/image_forensics_audit.py
• poc_forensics_roc — py -3.11 examples/poc_forensics_roc.py
image2d 作为输入)perceptual_hash · fingerprint_correlate · jpeg_quality_estimate · jpeg_ghost_map · noise_inconsistency_map · copy_move_regions · watermark_embed · watermark_extract
compression)jpeg_quality_estimate · jpeg_ghost_map · jpeg_ghost_quality
*Provenance: imgforensics.py — IMGFORENSICS 算子登记表。本条目由 tools/opdocs.py md 自动生成(请勿手工编辑)。*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.