error_level_map — IMGFORENSICS 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.