noise op• 資料種類:image2d → image2d
• 呼叫: import fullseye as fs; fs.ledger.noise_inconsistency_map(image, block: 'int' = 16) -> 'np.ndarray'(要直接呼叫實作,import imgforensics; imgforensics.noise_inconsistency_map(image, block: 'int' = 16) -> 'np.ndarray';從台帳取用則 opsimgforensics.get("noise_inconsistency_map"))
逐塊雜訊標準差的地圖。image2d。
以 Immerkær 1996 的 3x3 遮罩取高頻成分,對 block 見方的非重疊區塊分別求出 sigma = sqrt(pi/2) / 6 * mean(|conv|),以區塊常數還原。若貼入的區域來自不同的曝光、不同的壓縮率、不同的相機,該值就會與周圍形成階差。
精度很好(由 tests/test_imgforensics.py 固定)。在真實 σ 上半為 0.01、下半為 0.04(8 bit 下為 2.55 與 10.20,比 4.0)的合成影像上,估計為 2.533 與 10.214,比 4.033 —— 絕對值和比都在 1% 以內。
這張圖無法斷言的事:
• 紋理會被算作雜訊。Immerkær 的遮罩類似拉普拉斯運算子,所以細紋理區域的 σ 會偏高。實測:在上下雜訊同為 σ=0.01、只在下半加了棋盤格的影像中,紋理側 15.97 / 平坦側 2.58 = 6.2 倍。即使有階差,也可能不是「竄改」而是「紋理」。
• 反之,被平滑過的竄改 σ 會下降所以能看見,但在平坦背景上貼入平坦物體時不會出現差異。
• JPEG 逐區塊削減雜訊,所以對已壓縮的影像,若 block 不是 8 的倍數,就會與區塊網格干涉而出現條紋(預設 16 是 8 的倍數)。
• ★ 影像邊緣必定會出現與竄改無關的階差(2026-09-06 實測)。由於摺積以 mode="reflect" 折返,外圍區塊的高頻減少,σ 偏低。在零竄改、均勻雜訊的 256x256 上,最外層區塊帶為 8.815,中心為 9.537(-7.6 %)。同一影像的原始局部 std 為 0.03491 與 0.03563(-2.0 %),差別很小,所以差異的大半是估計器造成的。以與中位數的偏離來看,最外層 0.7173 / 中心 0.5948 = 1.21 倍。逐像素取 ROC 的話,僅此一項就會使零點 AUC 偏離 0.5 (examples/poc_forensics_roc.py 實測為 0.447)。請將外圍 1 個區塊排除在判定之外,或依位置分別取中位數。
• 範例資料目錄(下載 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 · error_level_map · jpeg_quality_estimate · jpeg_ghost_map · copy_move_regions · watermark_embed · watermark_extract
noise)—
*Provenance: imgforensics.py — IMGFORENSICS 運算子登記表。本條目由 tools/opdocs.py md 自動產生(請勿手動編輯)。*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.