sensor_fingerprint — IMGFORENSICS sensor op

• 資料種類:images → fingerprint

• 呼叫: import fullseye as fs; fs.ledger.sensor_fingerprint(images, denoiser: 'str' = 'wiener', sigma: 'float' = 0.02, zero_mean: 'bool' = True) -> 'np.ndarray'(要直接呼叫實作,import imgforensics; imgforensics.sensor_fingerprint(images, denoiser: 'str' = 'wiener', sigma: 'float' = 0.02, zero_mean: 'bool' = True) -> 'np.ndarray';從台帳取用則 opsimgforensics.get("sensor_fingerprint"))

用法

由多影格最大概似估計 PRNU 感測器指紋 K(Chen et al. 2008)。

K = Σ_i W_i I_i / Σ_i I_i²(W_i = I_i - denoise(I_i))。在成像模型 I = I⁰ + I⁰·K + Θ 下,這就是 K 的最大概似估計量 —— 越亮的像素 PRNU 越明顯(因為是乘性缺陷),所以這是以亮度加權的平均。

回傳 (H, W) 的 float64,zero_mean=True(預設)時先去除列、行平均,再正規化為標準差 1。正規化是為了讓 fingerprint_correlate 的 PCE 具有尺度不變性,指紋的絕對強度由 fingerprint_strength_map 另行回傳。

images 為相同 shape 的 2 張以上。不可縮放來對齊 —— PRNU 就是像素的物理位置本身,一旦內插指紋就會消失(shape 不一致時為 ValueError)。

張數與分離度的實測(tests/test_imgforensics.py::test_prnu_separates_two_sensors,128x128、PRNU 強度 3%、讀出雜訊 σ=0.01、預設 denoiser="wiener"):

====== ======================== ================= =================

張數 與真 K 的相關 同一感測器 PCE 不同感測器 PCE

====== ======================== ================= =================

2 +0.727 5295 16.5

4 +0.809 6472 14.5

8 +0.859 7246 13.1

16 +0.892 7755 -12.3

====== ======================== ================= =================

測量「與真 K 的相關」才是關鍵。只看 PCE 的話,即使指紋完全沒有捕捉到感測器的圖樣,也會「看起來已分離」—— 實際上本實作曾經處於那種狀態(見 _wiener_denoise 的 docstring)。PCE 測的是「在同一感測器上一貫出現的某種東西」,它是否為 PRNU,PCE 本身並不保證。

denoiser="wavelet"(需要 PyWavelets)在相同條件下相關為 +0.745 〜 +0.901、同一感測器 PCE 為 6068 〜 8852,一貫更強。預設設為 "wiener" 是為了不把 optional 依賴變成必要,並不是依精度選的。

這是合成雜訊上的值,在真實相機上被攝內容會漏入殘差,所以會小幾個數量級。此表固定的是「實作在正確運作」,而不是實際運用的門檻值。

參考(範例資料、文獻)

• 範例資料目錄(下載 URL / 授權) —— 2-D 用 skimage.data(BSD/公有領域)加合成圖,3-D 給出真實資料源(Stanford/PDS 等)的下載 URL。

• 運算子來歷與參考文獻 —— 該運算子族所依據的研究/方法出處。

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

可執行的範例(實際呼叫該運算子並已驗證的樣例)

• image_forensics_audit — py -3.11 examples/image_forensics_audit.py

• poc_prnu_camera_fingerprint — py -3.11 examples/poc_prnu_camera_fingerprint.py

型別可銜接的下一個運算子(可接受 fingerprint 作為輸入)

fingerprint_correlate · fingerprint_strength_map

同類別(sensor)

fingerprint_correlate · fingerprint_strength_map


*Provenance: imgforensics.py — IMGFORENSICS 運算子登記表。本條目由 tools/opdocs.py md 自動產生(請勿手動編輯)。*

© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.