Newer
Older
SmTIAS-LightSim / docs / 05_TECH / TECH_07_LSC取り扱い方針.md
@rintoHasegawa rintoHasegawa on 2 Jun 13 KB [add] TECH_07 LSC 取り扱い方針 + Step C' 新規 baseline config — 3 プロジェクト (MiniTias / MiniTias-Evaluation / SmTIAS-LightSim) における LSC 取り扱いの設計判断を一元化 docs/05_TECH/TECH_07 として明文化.結論: SmTIAS-LightSim はシミュ側で LSC を一切扱わない (Mitsuba orthographic が LSC 完璧補正後相当という物理的根拠).3 プロジェクト役割分担を 1 表で明確化: MiniTias=SHADING_MODE=HIGH_QUALITY 撮影 + lscMap 保存 / MiniTias-Evaluation=lscMap 順方向適用で評価 / SmTIAS-LightSim=一切扱わない.検討した代替案 3 つすべて却下と理由を明文化: (A) シミュに LSC モデル化追加 → overfitting リスク + 実機側改善で目的達成済 / (B) perspective+thinlens で物理 cos⁴ → lscMap で割り戻すと結局 orthographic と等価で得るものなし / (C) ISP 補正残差を物理導出 → メーカー非公開で不可能.フォールバック条件 C1-C3 (SHADING_OFF 撮影) を TECH_04 から再掲.過去 TEST_03 「LSC モデル化が唯一の道」の前提変更 (当時は実機側を改善しない前提) を明示.過去 Step 8 残差 2.1× の解釈見直し (PNG sRGB ガンマ圧縮による楽観値,真の linear 比較では 2.66× 程度) を明記.Step C' として configs/eval_baseline_dng_target.yaml 新規作成 (eval_baseline_linear.yaml ベースで target_mean=207.82, metrics.radial_min_max=true,過去 Step 8-1〜8-12 評価 config 群と並列で Step 8-13 評価条件固定化).動作確認で既存シミュ baseline (output/baseline/luminance.npy) を新 config で評価し,Step 8-13 数値が判明: シミュ CoV=0.1826 / 勾配=24.65% / 中心/周辺=1.3271 / 動径 min/max=0.6151.実機 DNG+LSC (CoV=0.0695 / 勾配=8.35% / C/P=1.0911 / 動径 min/max=0.860) と比較して残差 2.63× (TECH_06 で予想した 2.66× とほぼ一致.LSC 由来ではない別要因 = 物理モデル誤差等).LSC 取り扱いは本コミットで決着,残差 2.63× は別問題として今後の課題に.handoff_smtias_lightsim/ ディレクトリは S3 全体完了 (Step 8-13 TEST_01 記録) 後に削除予定で本コミットには含めない.CLAUDE.md 進捗欄に Step C' 完了・Step 8-13 数値・TECH_07 への参照を追記

LSC 取り扱い方針 (Lens Shading Correction Handling Policy)

本ドキュメントは 3 プロジェクト(MiniTias / MiniTias-Evaluation / SmTIAS-LightSim)における LSC (Lens Shading Correction) の取り扱い に関する設計判断と物理的根拠を明文化したものである.過去 TECH_03〜TECH_06 / TEST_05 / TEST_06 で散在していた議論の 結論をここに集約し,将来の参照を容易にする.

結論(先に) (Conclusion First)

役割分担

プロジェクトLSC の扱い採用理由
MiniTias(撮影アプリ)SHADING_MODE=HIGH_QUALITY で撮影.STATISTICS_LENS_SHADING_MAP_MODE=ON で lscMap を meta.json に保存.DNG 自体は LSC 未補正 (RAW_SENSOR)TECH_04 で本流維持と決定.SHADING_OFF はフォールバック候補として温存
MiniTias-Evaluation(実機評価)DNG 読み込み後に lscMap を順方向適用 (image × interp(lscMap)) してレンズビネット除去.残った成分を照明ムラとして評価TEST_05 で「LSC 補正なし CoV=0.148 → あり CoV=0.069」と実証
SmTIAS-LightSim(シミュ)一切扱わない.Mitsuba orthographic sensor が「LSC を完璧に補正できた場合の理想値」と本質的に等価のためTECH_04 §SHADING_MODE 判断 / 本ドキュメント §物理的根拠

一言で言うと

**「実機側で LSC 順方向適用で物理 cos⁴ を除去」+「シミュ側で orthographic で物理 cos⁴ を最初から持たない」**で,両者を 同じドメイン (LSC 補正後相当) で比較する設計.シミュ側に LSC モデル化を追加する必要も価値もない.

背景・経緯 (Background)

LSC 取り扱いの議論は,過去 Step 8 キャリブレーション(TEST_01)で「シミュ vs 実機の形が違う」現象の原因解明から始まった.時系列:

時期議論内容結論
Step 8-3 (2026-05)sRGB OETF を sm-evaluate に追加 → 残差 4.3× → 2.1×OETF が「見かけ差の 2/3」を占めていたと判明
Step 8-12 (2026-05)Helmholtz 相反原理で「方向独立性」検証形は方向独立.残差は方向では解消しない
TECH_03 (2026-06)MiniTias 側で定量モード DNG 実装.SHADING_MODE 相談SHADING_MODE = HIGH_QUALITY を本流維持 (TECH_04)
TECH_04 (2026-06)Mitsuba orthographic の物理的意味を整理orthographic ≒「LSC 完璧補正後相当」を確定
TECH_05 (2026-06)MiniTias-Evaluation 側に DNG 対応依頼apply_lsc_inverse (誤り) を仕様化
TECH_06 (2026-06)MiniTias-Evaluation 側で実装完了DNG は LSC 未補正と判明.TECH_05 を apply_lsc_forward に訂正
TEST_05 (2026-06)PNG/DNG ドメイン比較LSC 補正なし CoV=0.148 → あり CoV=0.069.LSC の効果が数値で実証
本ドキュメント (2026-06-02)LSC 取り扱いの結論を一元化—

シミュ側で LSC を扱わない物理的根拠 (Physical Rationale)

各経路で「何を測っているか」

[実機・新パイプライン]
LED 発光
  ↓ 多重反射(筐体内壁)
評価板表面の放射輝度 L (W/m²/sr)  ← この値を測りたい本質
  ↓ レンズ通過時に物理 cos⁴ falloff
センサ raw (cos⁴ 残ったまま)
  ↓ DNG (RAW_SENSOR) として保存
  ↓ ★ MiniTias-Evaluation 側で lscMap を順方向適用
  = 理論上「cos⁴ を打ち消した = 評価板表面の放射輝度 L 相当」
  ↓ Rec.709 luma 抽出 + 白板 ROI
評価指標 (CoV / 勾配 / 中心/周辺 / 動径 min/max)

[シミュ側]
LED 発光(SceneConfig)
  ↓ Mitsuba path tracer + 多重反射(max_depth=8)
評価板表面の放射輝度 L (W/m²/sr)  ← 全画素 orthographic で取得
  ↓ ★ cos⁴ falloff は最初から含まない(全画素平行光線)
luminance.npy = 放射輝度 L そのもの
  ↓ ROI 抽出
評価指標

等価性の本質

両方の「★」で同じドメイン(放射輝度 L 相当)に到達する:

  • 実機: 生raw × lscMap = 放射輝度 L 相当(実機 ISP の lscMap が完璧なら)
  • シミュ: 最初から放射輝度 L(cos⁴ を持たないので除去すべきものがない)

→ 両者は 構造的に同じものを測っている.シミュ側に追加の操作は不要.

検討した代替案と却下理由 (Alternatives Considered & Rejected)

過去議論で「シミュ側で LSC を考慮するか」という観点で 3 つの選択肢を検討した.結果はすべて却下:

選択肢 A: シミュに LSC 順方向モデルを追加(Step 8-N 候補だったもの)

当初の発想: 過去 TEST_03 で「形を変える唯一の道は LSC モデル化」と結論していた.シミュ側で cos⁴ または多項式モデルを sm-evaluate に追加する案.

却下理由:

  • 実機側で LSC 順方向適用するアプローチが MiniTias-Evaluation で確立した(TEST_05)→ シミュ側にモデルを追加する必要が消失
  • シミュ側に自由度パラメータ(cos^n の n や多項式係数)を追加すると overfitting リスクが増す
  • 過去 TEST_03 finding 4 の「形を変える唯一の道は LSC モデル化」は 当時の前提(実機側を改善しない)下での結論であり,実機側改善で同じ目的を達成した今は無効

選択肢 B: Mitsuba を perspective + thinlens に変えて物理 cos⁴ をシミュレート

発想: Mitsuba 3 の thinlens カメラを使えば物理 cos⁴ falloff が自動で出る.

却下理由:

  • thinlens で cos⁴ falloff を入れても,実機側との比較には lscMap で割り戻す必要が出る
  • → 結果として (シミュ × cos⁴) / lscMap と シミュ(orthographic) が 数学的に等価(lscMap ≒ cos⁴ の逆数のため)
  • 余分な計算ステップが増えるだけで得るものがない
  • 加えて thinlens は aperture / focal_length の物理値が必要で,自由度パラメータが増える

選択肢 C: 実機 ISP の LSC 補正残差を物理から導出してシミュに反映

発想: 「実機 LSC マップが完璧に物理 cos⁴ を補正できているか」を独立に検証してから,残差をシミュに反映する.

却下理由:

  • 実機 ISP の LSC アルゴリズム・補正残差は メーカー非公開で,物理から導出できない
  • 実機計測から残差を逆推定すれば数値は出るが,それは「物理モデル」ではなく「fit」であり overfitting リスク
  • 残差を物理的に切り分けたい場合は SHADING_OFF 撮影(フォールバック条件 C1〜C3)が必要だが,それは別途撮影が必要な大掛かりな話

つまり「数値的に正しく考慮できない」の正確な意味

ユーザー疑問(2026-06-02)への正式回答として:

何を物理的にできるか価値
物理 cos⁴ falloff のモデル化(選択肢 B)✓ できる× 余分なだけで価値ゼロ
実機 LSC 補正残差の物理導出(選択肢 C)✗ できない—
シミュ側に LSC モデル化追加(選択肢 A)△ fit で形式上は可能× overfitting リスク.得るものなし

→ 「シミュ側で LSC を考慮しない」は構造的に最適.他の選択肢は「できないか」「できても価値が増えない」.

限界と注意点 (Limitations & Caveats)

1. 実機側にも残る誤差

実機 ISP の lscMap は「メーカー出荷時にキャリブされた標準補正値」であり,個体差・経時変化・撮影条件(色温度等)による補正残差が残る.これは:

  • SHADING_OFF 撮影で生 raw を取得 → 物理 cos⁴ パターンと比較すれば定量化可能(フォールバック条件 C1〜C3 で実施,TECH_04)
  • 現状(フォールバック未発動)では「補正残差は実機側に残るが小さい」と仮定して進めている

2. SmTIAS-LightSim 側の「実機との一致度」は別問題

LSC 取り扱いの整理が完了しても,シミュ vs 実機の 残差そのものは消えない:

指標実機 (DNG+LSC)シミュ (Step 8-13)残差
CoV0.06950.1832.63×
勾配 %8.3524.652.95×
動径 min/max0.8600.615絶対差 0.245

→ この残差は LSC 由来ではない別要因(シミュ側の物理モデル誤差 / 反射率 / 配光 / 幾何精度等).LSC モデル化で解消できる問題ではない.

3. 過去 Step 8 残差解釈の見直し

過去 Step 8-1〜8-12 で「シミュ vs 実機の残差 2.1×」と評価していたが,これは PNG sRGB(ガンマ圧縮)と シミュ sRGB の比較で,PNG 側がガンマでムラを過小評価していた.Step 8-13 で 真の linear ドメイン比較を行った結果 2.63× と判明(TEST_05 §結果比較 参照).

→ 過去残差 2.1× は楽観的.真の残差 2.63× は LSC モデル化以外の方法で減らす必要がある.

フォールバック条件(再掲) (Fallback Conditions)

TECH_04 §将来 SHADING_OFF 切替のフォールバック条件 で定義した条件:

ID発動条件対応
C1シミュ vs HIGH_QUALITY 残差が 再現的に大きい(CoV/勾配 1.5× 以上 + 形が物理説明不能)SHADING_OFF 撮影で物理 cos⁴ と ISP 補正残差を切り分け
C2lscMap が 撮影ごとに大きく変動(中央値 variation > 5%)ISP 動的計算の証拠.補正後画像の解析時に動的性を考慮
C3シミュモデル精度向上後も残差が 物理説明不能別要因の探索.SHADING_OFF 比較で物理 cos⁴ 寄与を独立評価

現状(2026-06-02)の状態: Step 8-13 で残差 2.63× を計測.これは C1 候補(残差は大きく、形は説明可能性が要検討).SHADING_OFF 撮影の正式検討に進むか,物理モデル見直しに進むかは別途判断.

次のアクション (Next Actions)

LSC 取り扱いは本ドキュメントで決着.残る課題:

短期

  • Step 8-13 の正式記録(TEST_01 への Step 8-13 セクション追記)
  • handoff_smtias_lightsim/ 一時ディレクトリの削除(S3 完了処理)

中期(残差 2.63× の解消が必要なら)

  • 物理モデル精緻化: 反射率 / LED 配光 / メッシュ幾何の各要素を 1 つずつ詰める
  • SHADING_OFF 撮影: フォールバック条件 C1 発動として実施.MiniTias 側で 1 ショット撮影 → 物理 cos⁴ パターンと lscMap の合致度を独立検証

中長期

  • 「実機との完全一致」を諦めて 形状指標の相対比較に絞る選択肢(過去 TEST_03 の「形」観点)
  • LSC モデル化を「fit」として割り切って追加(overfitting リスク受容.推奨しない)

TECH 系(設計判断)

TEST 系(試行検証)

外部参考