周辺減光の強さ・ボケの幅・膜の厚さ・カメラの利得のような物理の係数を、実物の画像との差が雑音の大きさになるまで自動で
合わせます(simcal、10 op)。模型は fullseye の op の連鎖(例 thin_film_reflectance → 画像 → 利得と黒レベル)で、各段の
引数を単位・範囲・線形 / 対数つきの「つまみ」にします。当てはめは雑音の分散で重みをつけた最小二乗(重みは予測で更新)。
この層の要点は数を出さないことです。
Ten ops (simcal / simcalcheck) fit the physical coefficients of a forward model built from fullseye ops (knobs with units,
ranges and linear/log scales) to real images by noise-weighted least squares, and refuse to give a number for a coefficient the
images do not determine: confounded knobs (illumination x gain, n x d at one wavelength) are reported as the determined
combination, knobs without influence or pinned to a range end are refused, a profile likelihood that closes on one side only
withdraws the estimate. Over-fitting gates on held-out images reject an 8th-order vignetting polynomial, and residual PCA against
the Tracy-Widom edge of white noise detects a model discrepancy (a decentred lens).
simcal_screen は模型だけで答える)。simcal_model → simcal_observe → simcal_fit → simcal_identifiability → simcal_report
simcal_model で連鎖・つまみ・雑音モデルを組み → simcal_observe で実物の画像(images)を付け → simcal_fit で拒否つきの当てはめ →
simcal_identifiability で下界とプロファイル(片側しか閉じないつまみは取り下げ)→ simcal_report で表 1 枚。
撮る前に simcal_screen(効くか・交絡か・出力の次元)。区間が要るなら simcal_uncertainty(Laplace / ブートストラップ)、
取り置いた画像があれば simcal_validate(過適合の門・LOCKED は 1 回)、模型の不足を疑うなら simcal_discrepancy。
感度だけなら sens_morris / mv_confounding、残差の構造だけなら mv_residual_pca。
雑音モデルが物差しで、これを見誤ると下界も区間も見誤ります。位置合わせは整数画素。谷がいくつもある問題(干渉の次数)では
method="multistart" を使い、fit.warnings を読むこと。モデルの食い違いがあれば不確かさは楽観側です。
係数はつまみの単位で返ります。画素ピッチと倍率は積でしか効かないので、両方をつまみにすると拒否されます —— mm/px を 1 つの つまみにするか、片方を固定してください。
import fullseye as fs
m = fs.ledger.simcal_model() # 例の模型(チャート → cos^4 の周辺減光 → 利得と黒レベル、合成の観測つき)
r = fs.ledger.simcal_fit(m)
r = fs.ledger.simcal_identifiability(r)
print(fs.ledger.simcal_report(r)["text"])
# demo: chart -> cos^4 vignetting -> gain/offset — status: accepted
# f = 22.0876 px [21.8461, 22.334]
# gain = 899.054 DN [893.726, 904.382]
# offset = 63.5621 DN [61.2762, 65.8468]
simcal_model / simcal_simulate / simcal_observe / simcal_screen / simcal_fit / simcal_identifiability /
simcal_uncertainty / simcal_validate / simcal_discrepancy / simcal_reportsimcal_tour —— 利得 x 照明の拒否と積、1 波長と 31 波長の膜、白い板とチャートのボケ、位置合わせ。simcal_checks_tour —— 40 組の真値で回収を採点(39 / 40 が 3 σ_CRLB 以内)、上限しか言えないボケ、
8 次の多項式の拒否、光軸のずれたレンズの残差 PCA。