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 作為輸入)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.