本ドキュメントは 3 プロジェクト(SmTIAS / SmTIAS-Evaluation / SmTIAS-LightSim)における LSC (Lens Shading Correction) の取り扱い に関する設計判断と物理的根拠を明文化したものである.過去 TECH_03〜TECH_06 / TEST_05 / TEST_06 で散在していた議論の 結論をここに集約し,将来の参照を容易にする.
| プロジェクト | LSC の扱い | 採用理由 |
|---|---|---|
| SmTIAS(撮影アプリ) | SHADING_MODE=HIGH_QUALITY で撮影.STATISTICS_LENS_SHADING_MAP_MODE=ON で lscMap を meta.json に保存.DNG 自体は LSC 未補正 (RAW_SENSOR) | TECH_04 で本流維持と決定.SHADING_OFF はフォールバック候補として温存 |
| SmTIAS-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 モデル化を追加する必要も価値もない.
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) | SmTIAS 側で定量モード DNG 実装.SHADING_MODE 相談 | SHADING_MODE = HIGH_QUALITY を本流維持 (TECH_04) |
| TECH_04 (2026-06) | Mitsuba orthographic の物理的意味を整理 | orthographic ≒「LSC 完璧補正後相当」を確定 |
| TECH_05 (2026-06) | SmTIAS-Evaluation 側に DNG 対応依頼 | apply_lsc_inverse (誤り) を仕様化 |
| TECH_06 (2026-06) | SmTIAS-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 取り扱いの結論を一元化 | — |
[実機・新パイプライン] LED 発光 ↓ 多重反射(筐体内壁) 評価板表面の放射輝度 L (W/m²/sr) ← この値を測りたい本質 ↓ レンズ通過時に物理 cos⁴ falloff センサ raw (cos⁴ 残ったまま) ↓ DNG (RAW_SENSOR) として保存 ↓ ★ SmTIAS-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 が完璧なら)→ 両者は 構造的に同じものを測っている.シミュ側に追加の操作は不要.
過去議論で「シミュ側で LSC を考慮するか」という観点で 3 つの選択肢を検討した.結果はすべて却下:
当初の発想: 過去 TEST_03 で「形を変える唯一の道は LSC モデル化」と結論していた.シミュ側で cos⁴ または多項式モデルを sm-evaluate に追加する案.
却下理由:
発想: Mitsuba 3 の thinlens カメラを使えば物理 cos⁴ falloff が自動で出る.
却下理由:
(シミュ × cos⁴) / lscMap と シミュ(orthographic) が 数学的に等価(lscMap ≒ cos⁴ の逆数のため)発想: 「実機 LSC マップが完璧に物理 cos⁴ を補正できているか」を独立に検証してから,残差をシミュに反映する.
却下理由:
ユーザー疑問(2026-06-02)への正式回答として:
| 何を | 物理的にできるか | 価値 |
|---|---|---|
| 物理 cos⁴ falloff のモデル化(選択肢 B) | ✓ できる | × 余分なだけで価値ゼロ |
| 実機 LSC 補正残差の物理導出(選択肢 C) | ✗ できない | — |
| シミュ側に LSC モデル化追加(選択肢 A) | △ fit で形式上は可能 | × overfitting リスク.得るものなし |
→ 「シミュ側で LSC を考慮しない」は構造的に最適.他の選択肢は「できないか」「できても価値が増えない」.
実機 ISP の lscMap は「メーカー出荷時にキャリブされた標準補正値」であり,個体差・経時変化・撮影条件(色温度等)による補正残差が残る.これは:
LSC 取り扱いの整理が完了しても,シミュ vs 実機の 残差そのものは消えない:
| 指標 | 実機 (DNG+LSC) | シミュ (Step 8-13) | 残差 |
|---|---|---|---|
| CoV | 0.0695 | 0.183 | 2.63× |
| 勾配 % | 8.35 | 24.65 | 2.95× |
| 動径 min/max | 0.860 | 0.615 | 絶対差 0.245 |
→ この残差は LSC 由来ではない別要因(シミュ側の物理モデル誤差 / 反射率 / 配光 / 幾何精度等).LSC モデル化で解消できる問題ではない.
過去 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 モデル化以外の方法で減らす必要がある.
TECH_04 §将来 SHADING_OFF 切替のフォールバック条件 で定義した条件:
| ID | 発動条件 | 対応 |
|---|---|---|
| C1 | シミュ vs HIGH_QUALITY 残差が 再現的に大きい(CoV/勾配 1.5× 以上 + 形が物理説明不能) | SHADING_OFF 撮影で物理 cos⁴ と ISP 補正残差を切り分け |
| C2 | lscMap が 撮影ごとに大きく変動(中央値 variation > 5%) | ISP 動的計算の証拠.補正後画像の解析時に動的性を考慮 |
| C3 | シミュモデル精度向上後も残差が 物理説明不能 | 別要因の探索.SHADING_OFF 比較で物理 cos⁴ 寄与を独立評価 |
現状(2026-06-02)の状態: Step 8-13 で残差 2.63× を計測.これは C1 候補(残差は大きく、形は説明可能性が要検討).SHADING_OFF 撮影の正式検討に進むか,物理モデル見直しに進むかは別途判断.
LSC 取り扱いは本ドキュメントで決着.残る課題:
handoff_smtias_lightsim/ 一時ディレクトリの削除(S3 完了処理)