varmodel_fit — SPC variation op

• Data kinds: video → table

• Call: import fullseye as fs; fs.ledger.varmodel_fit(stack, spread='moderated', far=0.001, align='check', max_misalign_px=0.5, spread_floor=0.0, mask=None) (implementation को सीधे call करना हो तो import varmodel; varmodel.varmodel_fit(stack, spread='moderated', far=0.001, align='check', max_misalign_px=0.5, spread_floor=0.0, mask=None), registry से लेना हो तो opsspc.get("varmodel_fit"))

उपयोग

अच्छे samples के stack से per-pixel variation model (centre, spread, band की आधी चौड़ाई k) सीखना (table)।

> नीचे का विस्तृत विवरण मूल text में है — सारांश और headings का अनुवाद हो चुका है।

stack is (n, H, W) or a list of equal 2-D images, all good. spread chooses the estimator (SPREADS): std (mean / per-pixel sample std, needs n >= 3), pooled (mean / one std for all valid pixels — few samples, homoscedastic noise), moderated (mean / empirical-Bayes shrinkage of every pixel's variance toward a prior estimated from all pixels, Smyth 2004 — few samples, heteroscedastic noise; the default) or mad (median / 1.4826 MAD — robust to a few defective images hidden in the "good" set, needs n >= 5). far is the declared two-sided per-pixel false-alarm rate; k follows from it (see varmodel_band_k) and is never tuned on defects.

Alignment: align="check" measures every sample's translation (varmodel_alignment) and REFUSES the stack if any exceeds max_misalign_px; align="translate" registers the samples to the median by a Fourier shift (all-pass, so white noise keeps its variance), re-checks the residual against max_misalign_px and marks the wrapped border invalid. A stack without structure (alignment["observable"] False) is neither refused nor shifted; its band is then only an intensity threshold on the overall variation. Stochastic textures, whose every sample shows a different pattern, are therefore not a variation-model problem (on DAGM 2007 Class1 it scores at chance — see the PoC).

spread_floor (>= 0, image units) lower-bounds the spread (8-bit data has pixels whose good samples are all equal); any remaining zero spread is refused. mask (H, W) bool limits the inspected area. Returns center, spread, k, far, n, df, spread_kind, lower / upper (the band), valid (bool), n_floored, d0 / s0 (the prior's degrees of freedom and scale: 0 for std / mad; for pooled and a fully pooled moderated prior d0 = valid pixels x (n - 1)), k_source, mc_far_rel_se and alignment (the offset report, after registration if any).

Raises ValueError on an empty / malformed / non-finite stack, too few samples, an unknown spread / align, far outside its range, a misaligned stack, a mask of the wrong shape, or zero spread left after the floor.

संदर्भ (sample data, साहित्य)

• Sample data catalog (DL URL / license) — 2-D के लिए skimage.data (BSD/public) + synthetic, 3-D के लिए real data sources (Stanford/PDS आदि) के DL URL।

• Operators का स्रोत और संदर्भ — इस op family के मूल research/methods के स्रोत।

• Algorithm का मानक स्रोत (लेखक, वर्ष) और उपयोग ऊपर की family usage guide में दिए गए हैं।

चलाए जा सकने वाले उदाहरण (verified samples जो सच में यह op call करते हैं)

• poc_good_sample_variation_model — py -3.11 examples/poc_good_sample_variation_model.py

• poc_patch_anomaly — py -3.11 examples/poc_patch_anomaly.py

वे अगले ops जिनसे type जुड़ता है (table को input के रूप में लेते हैं)

msa_anova_table · msa_gauge_rr · msa_bias_linearity · msa_attribute_agreement · gum_standard_uncertainty · gum_propagate · gum_expanded · gum_monte_carlo

इसी category के (variation)

varmodel_alignment · varmodel_band_k · varmodel_calibrate · varmodel_score


*Provenance: varmodel.py — SPC operator registry. यह per-op note tools/opdocs.py md से अपने-आप generate होता है (हाथ से edit न करें)।*

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