perceptual op• Data kinds: rgbimage × rgbimage → table
• Call: import fullseye as fs; fs.ledger.fsim_pair(ref, dist, data_range: 'float' = 255.0, downsample: 'bool' = True) -> 'dict' (to call the implementation directly, import iqafsim; iqafsim.fsim_pair(ref, dist, data_range: 'float' = 255.0, downsample: 'bool' = True) -> 'dict'; from the registry, opsimgmetrics.get("fsim_pair"))
FSIM and FSIMc in one call (phase congruency is computed only 1 time per image — evaluators and PoCs call this one).
Procedure (paper §III): (1) F×F averaging + decimation with F = max(1, round(min(H, W)/256)) (TID2013's 384×512 has F = 2 → 192×256), (2) phase congruency PC of Y and Scharr ([3 0 −3; 10 0 −10; 3 0 −3]/16) gradient magnitude G, (3) S_PC = (2 PC1 PC2 + T1)/(PC1² + PC2² + T1), S_G = (2 G1 G2 + T2)/(G1² + G2² + T2),
(4) FSIM = Σ S_G S_PC PC_m / Σ PC_m (PC_m = max(PC1, PC2)), (5) FSIMc additionally multiplies by the real part of the λ = 0.03 power of the chroma I / Q term S_I S_Q (T3 = T4 = 200).
Input is (H, W) or (H, W, 3) of the same shape (0–255; declare the scale with data_range). For (H, W), FSIMc = FSIM (there is no chroma term). TID2013 author values: FSIM.txt is from Y′ limited grey images, FSIMc.txt from colour images (the table in the module docstring) -- computing both from 1 colour image, the FSIM does not match FSIM.txt (max 0.0318). Returns {"fsim", "fsimc", "f"} (f = decimation factor). 1 for identical inputs. Raises ValueError: shapes differ, smaller than 2×2, phase congruency 0 at every pixel (flat image: FSIM is 0/0 and undefined).
• 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
table as input)luma_limited_u8 · rank_data · tid2013_index · tid2013_by_distortion
perceptual)fsim · fsimc · gmsd · gmsd_map · vifp · 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.