perceptual op• Data kinds: image2d × image2d → scalar
• Call: import fullseye as fs; fs.ledger.vifp(ref, dist, data_range: 'float' = 255.0, sigma_nsq: 'float' = 2.0, nscales: 'int' = 4) -> 'float' (to call the implementation directly, import iqafsim; iqafsim.vifp(ref, dist, data_range: 'float' = 255.0, sigma_nsq: 'float' = 2.0, nscales: 'int' = 4) -> 'float'; from the registry, opsimgmetrics.get("vifp"))
Pixel-domain version of VIF (the scalar GSM of Sheikh & Bovik 2006 §V, following the convention of the public vifp_mscale). 1 = identical, higher is better.
Each scale s = 1..4: window N = 2^(4−s+1)+1, Gaussian σ = N/5 (17/3.4, 9/1.8, 5/1.0, 3/0.6). For s > 1, smooth with the window and decimate by 2. Local statistics (μ, σ², σ12) are 'valid' correlations, g = σ12/(σ1²+1e-10), σ_v² = σ2² − g σ12; pixels with σ1² < 1e-10, σ2² < 1e-10 or g < 0 are clamped per the convention, σ_v² ≤ 1e-10 → 1e-10. VIF = Σ log10(1 + g² σ1²/(σ_v² + σ_n²)) / Σ log10(1 + σ1²/σ_n²). Asymmetric (divides by the reference's information: vif(a, b) ≠ vif(b, a)), and contrast enhancement makes it exceed 1 (TID2013 author values also reach max 1.1379 = distortion 17) -- a ratio of information, not fidelity. Input (H, W) or (H, W, 3) (3-ch uses Y). What agrees to 4 digits with TID2013's VIFP.txt (the paper's "VIFP", a separate row from the steerable "VIF") is Y′ limited grey images (iqatid.tid2013_evaluate(root, vifp, luma="limited_u8"), 3,000 pairs, max |diff| 6.8e-5). Raises ValueError: shapes differ, smaller than the window at the smallest scale, flat reference (denominator 0), sigma_nsq ≤ 0.
• image_difference_metrics family guide
• Sample-data catalog (download URLs / licences) — 2-D uses skimage.data (BSD/public domain) plus synthetic images; 3-D lists download URLs for real data sources (Stanford, PDS, …).
• Operator provenance and references — the sources of the research/methods this op family came from.
• The canonical algorithm (author, year) and its uses are named in the family usage guide above.
• poc_iqa_fsim_gmsd_vif — py -3.11 examples/poc_iqa_fsim_gmsd_vif.py
scalar as input)luma_limited_u8 · rank_data · tid2013_index
perceptual)fsim · fsimc · fsim_pair · gmsd · gmsd_map · phase_congruency_pc
*Provenance: iqafsim.py — IMGMETRICS operator registry. This per-op note is generated by tools/opdocs.py md (do not hand-edit).*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.