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.