vifp — IMGMETRICS perceptual op

• 数据种类:image2d × image2d → scalar

• 调用: import fullseye as fs; fs.ledger.vifp(ref, dist, data_range: 'float' = 255.0, sigma_nsq: 'float' = 2.0, nscales: 'int' = 4) -> 'float'(要直接调用实现,import iqafsim; iqafsim.vifp(ref, dist, data_range: 'float' = 255.0, sigma_nsq: 'float' = 2.0, nscales: 'int' = 4) -> 'float';从台账取用则 opsimgmetrics.get("vifp"))

用法

VIF 的像素域版本(Sheikh & Bovik 2006 §V 的 scalar GSM,沿用公开的 vifp_mscale 的约定)。1 = 相同,越高越好。

各尺度 s = 1..4:窗口 N = 2^(4−s+1)+1,高斯 σ = N/5(17/3.4、9/1.8、5/1.0、3/0.6)。s > 1 时用窗口平滑后 2 倍抽取。局部统计(μ、σ²、σ12)为 'valid' 相关,g = σ12/(σ1²+1e-10),σ_v² = σ2² − g σ12,σ1² < 1e-10、σ2² < 1e-10、g < 0 的像素按约定压掉,σ_v² ≤ 1e-10 → 1e-10。VIF = Σ log10(1 + g² σ1²/(σ_v² + σ_n²)) / Σ log10(1 + σ1²/σ_n²)。非对称(除以参考的信息量:vif(a, b) ≠ vif(b, a)),对比度增强时 超过 1(TID2013 的作者值最大也是 1.1379 = 失真 17)—— 不是保真度而是信息量之比。输入 (H, W) 或 (H, W, 3)(3-ch 用 Y)。与 TID2013 的 VIFP.txt(论文中的“VIFP”,与 steerable 版的“VIF”是不同行)4 位一致的是 Y′ limited 的灰度图像 (iqatid.tid2013_evaluate(root, vifp, luma="limited_u8"),3,000 组 max |差| 6.8e-5)。Raises ValueError:形状不同、在最小尺度上小于窗口、参考平坦(分母 0)、sigma_nsq ≤ 0。

详细使用指南

• image_difference_metrics 族使用指南

参考(示例数据、文献)

• 示例数据目录(下载 URL / 许可证) —— 2-D 用 skimage.data(BSD/公有领域)加合成图,3-D 给出真实数据源(Stanford/PDS 等)的下载 URL。

• 算子来历与参考文献 —— 该算子族所依据的研究/方法出处。

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

可运行的示例(实际调用该算子并已验证的样例)

• poc_iqa_fsim_gmsd_vif — py -3.11 examples/poc_iqa_fsim_gmsd_vif.py

类型可衔接的下一个算子(可接受 scalar 作为输入)

luma_limited_u8 · rank_data · tid2013_index

同类别(perceptual)

fsim · fsimc · fsim_pair · gmsd · gmsd_map · phase_congruency_pc


*Provenance: iqafsim.py — IMGMETRICS 算子登记表。本条目由 tools/opdocs.py md 自动生成(请勿手工编辑)。*

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