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.