jpeg_quality_estimate — IMGFORENSICS compression op

• 数据种类:image2d → table

• 调用: import fullseye as fs; fs.ledger.jpeg_quality_estimate(image, max_step: 'int' = 64, n_coeff: 'int' = 21) -> 'dict'(要直接调用实现,import imgforensics; imgforensics.jpeg_quality_estimate(image, max_step: 'int' = 64, n_coeff: 'int' = 21) -> 'dict';从台账取用则 opsimgforensics.get("jpeg_quality_estimate"))

• GPU:无(仅 CPU 参考实现)

用法

由已解码图像盲估量化表与 JPEG 质量。table。

不要读取文件的 DQT,而是仅根据 像素 来估计它(这就是重点,即使图像被重新保存/粘贴为 PNG,也会显示“原始 JPEG 质量 N”。可见)。采用 8x8 块 DCT 并估计每个系数的梳间距(Fan & de Queiroz 2003),来自使用 IJG 的公共缩放规则创建的一系列标准表。选择最适合您的品质。

返回(字典):

jpeg_compressed 通过梳理了多少个n_coeff系数来判断

布尔。 这并不能证明它是 JPEG(注意事项如下)

“质量” 估计质量 1..100(如果没有梳子,则为“无”)table (8, 8) 的估计量化步长(0 = 未估计)n_quantized 梳状系数的原始数量,不包括 DC n_tested = n_coeff - 1 fit_error 与所选质量标准表的平均绝对差 警告这个数字不能说明什么

实际测量(tests/test_imgforensics.py::test_jpeg_quality_estimate_recovers_quality, 使用 Pillow 对 256x256 1/f^1.6 图像进行编码 → 解码和估计):

======= ========= =========================== 真实 Q 估计 Q 梳状系数 fit_error ======= ========= =========================== 95 95 11/20 0.091 90 90 19/20 0.579 80 80 13/20 1.308 70 71 12/20 2.083 60 60 9/20 2.111 50 52 7/20 1.857 40 40 6/20 3.333 30 无 4/20 — ======= ========= ===========================

这是一个理论上的限制,它会在低质量方面崩溃。随着质量下降,高频系数变为0。量化,并且梳状读取材料本身从图像中消失(“梳状系数”列是怎么消失的)。在质量 30 时,没有足够的材料并且不返回估计(“质量=无”)。此操作的设计策略不是在这里强制给出答案。

和 jpeg_compressed=False / quality=None** 用于未压缩的 PNG。(用4颗种子确认,在同一测试中固定)。你能做的最好的事情不仅仅是说“质量100”。在这种情况下,“未压缩”和“几乎未降级的 JPEG”将是相同的答案。

参考(示例数据、文献)

• 示例数据目录(下载 URL / 许可证) —— 2-D 用 skimage.data(BSD/公有领域)加合成图,3-D 给出真实数据源(Stanford/PDS 等)的下载 URL。

• 算子来历与参考文献 —— 该算子族所依据的研究/方法出处。

• 算法的正典(作者、年份)与用途见上面的族使用指南。

可运行的示例(实际调用该算子并已验证的样例)

• image_forensics_audit — py -3.11 examples/image_forensics_audit.py

类型可衔接的下一个算子(可接受 table 作为输入)

evidence_quantile

同类别(compression)

error_level_map · 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.