diff --git a/CLAUDE.md b/CLAUDE.md index 5a76d5a..310fad4 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -30,6 +30,7 @@ 補足: **MiniTias-Evaluation 側 Phase 1 完了とハンドオフ受領(2026-06-01)**.MiniTias-Evaluation 側で TECH_05 Phase 1 (DNG 読み込み I/F) と LSC 順適用プロトタイプ・新指標 (動径 min/max 比) が完成し,ハンドオフパッケージとして SmTIAS-LightSim 側に渡された.受領記録は [TECH_06 MiniTias-Evaluation 引き継ぎ受領](docs/05_TECH/TECH_06_MiniTias-Evaluation引き継ぎ受領.md),関連分析は [TEST_05 PNG/DNG 評価比較](docs/06_TEST/TEST_05_PNG_DNG評価比較.md) と [TEST_06 外乱光影響評価](docs/06_TEST/TEST_06_外乱光影響評価.md).**5 つの重要発見**: (1) **TECH_05 の `apply_lsc_inverse` は誤り**(DNG は LSC 未補正で逆ではなく順方向適用が正しい.TECH_05 §4 を訂正済).(2) **過去 Step 8 キャリブの残差 2.1× はドメイン不一致**(実機 PNG sRGB 0.0423 vs シミュ sRGB/linear 比較):正しい linear 比較では DNG linear+LSC 0.0689 vs シミュ linear 0.183 = **真の残差 2.66×**.(3) **新実機ターゲット = `MiniTIAS_QM_20260601_124500`(暗闇撮影)**: CoV=0.0695, 勾配=8.35%, 中心/周辺=1.0911, 動径 min/max=0.860.Step 8-13 以降の正規 baseline.(4) **外乱光ロバスト確認**: 室内灯 ON/OFF で指標差 < 1%.SmTIAS 自前照明が支配的で外乱光モデル化不要.(5) **新指標 `calc_radial_min_max_ratio`** (20 点輪帯平均 min/max 比) を追加.次フェーズ: S2 (dng_loader.py コピー + 新指標マージ + rawpy 依存追加) と S3 (sm-evaluate DNG 対応 + Step 8-13 突合) を別 `/implement` パイプラインで実施. 補足: **S2 完了 (2026-06-01)**.`src/sm_tias_lightsim/evaluation/dng_loader.py` を `handoff_smtias_lightsim/src/dng_loader.py` の完全コピーで新規作成 (docstring のみ差し替え).`src/sm_tias_lightsim/evaluation/radial.py` に `calc_radial_min_max_ratio` をマージ追加 (nan ビン除外を移植時に補強).`pyproject.toml` に `rawpy>=0.21.0` 追加 (実 rawpy==0.27.0).新規テスト 32 件追加 (`tests/evaluation/test_dng_loader.py` 341 行).既存 537 + 新規 32 = **569 件全通過** (slow 除外).**検証 V4 が完全一致**: 実 DNG (`MiniTIAS_QM_20260601_124500.dng`) を読み込んで LSC 順方向適用 + 白板 ROI で評価指標 6 件 (CoV/std/max-min/mean/max/min) が **相対誤差 < 1e-6 で期待値完全一致**,空間指標 3 件 (中心/周辺/勾配/動径 min/max) も絶対誤差 < 0.003.Refactorer 判断: `dng_loader.py` 内部の `_apply_srgb_oetf` は既存 `evaluation/oetf.py:apply_srgb_oetf` と実装重複だが「コピー方針優先」「用途が異なる」「違反基準 (3 箇所以上) 未満」の理由でそのまま放置.次フェーズ: S3 (sm-evaluate に DNG 入力経路追加 + 新規 baseline config + シミュ vs 実機 DNG 突合 → TEST_01 Step 8-13 記録) を別 /implement パイプラインで実施. 補足: **S3 方針見直しと Step D 完了 (2026-06-01)**.ユーザー指摘により「sm-evaluate に DNG 入力経路を追加する」当初案は **不採用**.理由: 実機 DNG 評価は MiniTias-Evaluation の本業で完結.SmTIAS-LightSim 側で重複実装する必要なし.S3 の作業範囲を **3 項目に絞り込み**: Step D (動径 min/max 比を sm-evaluate に統合)・Step C' (新規シミュ用 baseline config 作成)・Step G (シミュ再評価 → Step 8-13 として TEST_01 に記録).**Step D 完了**: `MetricsConfig.radial_min_max: bool = False` をスキーマ追加 (`schema.py`),`cli/evaluate.py` で `_run_radial_min_max` 関数追加して有効時に metrics.csv に 4 列 (radial_min_max_ratio / radial_min_distance / radial_min / radial_max) を末尾追加,コンソールサマリに 2 行追加.`radial_profile` を再利用 (重複算出回避),未算出時は内部算出.後方互換維持 (既存 3 configs は無修正で動作).新規テスト 39 件追加 (`tests/scene/test_metrics_radial_min_max_schema.py` 250 行 + `tests/cli/test_evaluate_radial_min_max.py` 740 行) で仕様 A1-D2 全カバー.既存 569 + 新規 39 = **608 件全通過**.SPEC_04 §動径 min/max 比 セクションを追記.次: Step C' (configs/eval_baseline_dng_target.yaml 作成: 既存 eval_baseline_linear.yaml ベース,target_mean=207.82,radial_min_max=true) → Step G (Step 8-13 計測). +補足: **Step C' 完了と Step G 計測 (2026-06-02)**.`configs/eval_baseline_dng_target.yaml` を新規作成(eval_baseline_linear.yaml ベース,target_mean=207.82,metrics.radial_min_max=true,OETF なし).動作確認で既存シミュ 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×」とほぼ一致.過去 Step 8-3 OETF 順方向適用時の「2.1×」は PNG sRGB ガンマ圧縮による楽観値であり,真の linear 比較では大きい.**LSC 取り扱いの結論を [TECH_07 LSC 取り扱い方針](docs/05_TECH/TECH_07_LSC取り扱い方針.md) として一元化**: 3 プロジェクト役割分担 (MiniTias=SHADING_MODE=HIGH_QUALITY 撮影 / MiniTias-Evaluation=lscMap 順方向適用 / SmTIAS-LightSim=一切扱わない),シミュ側で LSC を扱わない物理的根拠 (Mitsuba orthographic = LSC 完璧補正後相当),検討した代替案 3 つ (A: シミュに LSC モデル化追加・B: perspective+thinlens で物理 cos⁴・C: ISP 補正残差を物理導出) すべて却下,限界と注意点,フォールバック条件 C1-C3 (SHADING_OFF 撮影),Step 8-13 残差 2.63× の解釈 (LSC 由来ではない別要因,物理モデル誤差の可能性) を明文化.残差 2.63× の解消は今後の課題 (物理モデル精緻化 or SHADING_OFF 撮影で切り分け or 形状相対比較に絞る) .S3 残作業: TEST_01 への Step 8-13 正式記録・handoff_smtias_lightsim/ 削除. 実装済みモジュール: - `src/sm_tias_lightsim/uniformity.py` — Rec.709 輝度変換 + CoV/std/max-min(MiniTias-Evaluation コピー) diff --git a/configs/eval_baseline_dng_target.yaml b/configs/eval_baseline_dng_target.yaml new file mode 100644 index 0000000..a4a4af9 --- /dev/null +++ b/configs/eval_baseline_dng_target.yaml @@ -0,0 +1,45 @@ +# Step 8-13 用:定量モード DNG + LSC 順方向適用後の実機ターゲットと直接比較する +# シミュ評価設定(過去 Step 8-1〜8-12 の評価 config 群と並列に残し,Step 8-13 評価条件を固定化する). +# +# 実機側 (MiniTias-Evaluation): DNG → LSC 順方向適用 → linear → 白板 ROI で評価 +# mean=207.82, CoV=0.0695, 中心/周辺=1.0911, 勾配=8.35%, 動径 min/max=0.860 +# (`reference_measurement/quantitative/MiniTIAS_QM_20260601_124500.dng` 暗闇撮影, +# 詳細は docs/06_TEST/TEST_05_PNG_DNG評価比較.md と TEST_06_外乱光影響評価.md) +# +# シミュ側 (本設定): +# - linear のまま評価(OETF 設定なし.実機 DNG+LSC が linear のためドメイン一致) +# - mean アンカー正規化で実機 mean=207.82 に揃える(線形ゲインなので形状指標は不変) +# - 動径 min/max 比 (Step D で sm-evaluate に統合した新指標) を有効化 +# +# 既存 configs/eval_baseline_linear.yaml からの差分は 2 点だけ: +# 1. normalization.target_mean: 146.7146 → 207.82 +# 2. metrics.radial_min_max: true を追加 +# +# 過去設定との関係: +# - configs/eval_baseline.yaml : Step 8-1〜8-7 (OETF on,sRGB 比較,mean=146.71) +# - configs/eval_baseline_linear.yaml : Step 8-8〜8-12 (OETF off,linear 比較,mean=146.71) +# - configs/eval_baseline_dng_target.yaml ← 本設定: Step 8-13〜 (OETF off, linear, mean=207.82) +# - configs/eval_real.yaml : 実機 PNG 評価 (過去 sRGB ターゲット算出用,現状参考扱い) +# +# 詳細: docs/05_TECH/TECH_06_MiniTias-Evaluation引き継ぎ受領.md +roi: + type: image_pixel + x: 24 + y: 37 + width: 464 + height: 450 +zones: + enabled: true + boundaries: + - 0.33 + - 0.66 +metrics: + cov: true + std: true + max_min: true + radial_profile: true + radial_min_max: true # Step D で sm-evaluate に統合した新指標.動径 min/max 比 (20 ビン平均の min/max). +normalization: + enabled: true + type: mean_anchor + target_mean: 207.82 # 実機 DNG+LSC の白板 ROI mean (reference_measurement/quantitative/expected_results/MiniTIAS_QM_20260601_124500_uniformity.csv より) diff --git "a/docs/05_TECH/TECH_07_LSC\345\217\226\343\202\212\346\211\261\343\201\204\346\226\271\351\207\235.md" "b/docs/05_TECH/TECH_07_LSC\345\217\226\343\202\212\346\211\261\343\201\204\346\226\271\351\207\235.md" new file mode 100644 index 0000000..5756624 --- /dev/null +++ "b/docs/05_TECH/TECH_07_LSC\345\217\226\343\202\212\346\211\261\343\201\204\346\226\271\351\207\235.md" @@ -0,0 +1,197 @@ +# LSC 取り扱い方針 (Lens Shading Correction Handling Policy) + +本ドキュメントは 3 プロジェクト(MiniTias / MiniTias-Evaluation / SmTIAS-LightSim)における **LSC (Lens Shading Correction) の取り扱い** に関する設計判断と物理的根拠を明文化したものである.過去 [TECH_03](TECH_03_定量モード実装報告とSHADING_MODE相談.md)〜[TECH_06](TECH_06_MiniTias-Evaluation引き継ぎ受領.md) / [TEST_05](../06_TEST/TEST_05_PNG_DNG評価比較.md) / [TEST_06](../06_TEST/TEST_06_外乱光影響評価.md) で散在していた議論の **結論をここに集約**し,将来の参照を容易にする. + +## 結論(先に) (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](../06_TEST/TEST_01_キャリブレーション検証履歴.md))で「シミュ 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) + +### 各経路で「何を測っているか」 + +```text +[実機・新パイプライン] +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](../06_TEST/TEST_03_輝度マップ形状追跡.md) の「形を変える唯一の道は 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](TECH_04_MiniTIASへの回答.md)) +- 現状(フォールバック未発動)では「補正残差は実機側に残るが小さい」と仮定して進めている + +### 2. SmTIAS-LightSim 側の「実機との一致度」は別問題 + +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 モデル化で解消できる問題ではない. + +### 3. 過去 Step 8 残差解釈の見直し + +過去 Step 8-1〜8-12 で「シミュ vs 実機の残差 2.1×」と評価していたが,これは **PNG sRGB(ガンマ圧縮)と シミュ sRGB の比較**で,PNG 側がガンマでムラを過小評価していた.Step 8-13 で **真の linear ドメイン比較**を行った結果 **2.63×** と判明([TEST_05](../06_TEST/TEST_05_PNG_DNG評価比較.md) §結果比較 参照). + +→ 過去残差 2.1× は楽観的.真の残差 2.63× は LSC モデル化以外の方法で減らす必要がある. + +## フォールバック条件(再掲) (Fallback Conditions) + +[TECH_04 §将来 SHADING_OFF 切替のフォールバック条件](TECH_04_MiniTIASへの回答.md) で定義した条件: + +| 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 撮影の正式検討に進むか,物理モデル見直しに進むかは別途判断. + +## 次のアクション (Next Actions) + +LSC 取り扱いは本ドキュメントで決着.残る課題: + +### 短期 + +- Step 8-13 の正式記録([TEST_01](../06_TEST/TEST_01_キャリブレーション検証履歴.md) への Step 8-13 セクション追記) +- `handoff_smtias_lightsim/` 一時ディレクトリの削除(S3 完了処理) + +### 中期(残差 2.63× の解消が必要なら) + +- **物理モデル精緻化**: 反射率 / LED 配光 / メッシュ幾何の各要素を 1 つずつ詰める +- **SHADING_OFF 撮影**: フォールバック条件 C1 発動として実施.MiniTias 側で 1 ショット撮影 → 物理 cos⁴ パターンと lscMap の合致度を独立検証 + +### 中長期 + +- 「実機との完全一致」を諦めて **形状指標の相対比較**に絞る選択肢(過去 [TEST_03](../06_TEST/TEST_03_輝度マップ形状追跡.md) の「形」観点) +- LSC モデル化を「fit」として割り切って追加(overfitting リスク受容.推奨しない) + +## 関連ドキュメント (Related Documents) + +### TECH 系(設計判断) + +- [TECH_01 定量撮影モード要求仕様](TECH_01_定量撮影モード要求仕様.md) — MiniTias への撮影モード要求 +- [TECH_02 MiniTIAS 引き継ぎ手順](TECH_02_MiniTIAS引き継ぎ手順.md) — 引き継ぎパッケージの構造 +- [TECH_03 定量モード実装報告と SHADING_MODE 相談](TECH_03_定量モード実装報告とSHADING_MODE相談.md) — MiniTias 側からの SHADING_MODE 相談 +- [TECH_04 MiniTIAS への回答](TECH_04_MiniTIASへの回答.md) — SHADING_MODE = HIGH_QUALITY 維持判断とフェーズ A/B 分割 +- [TECH_05 MiniTias-Evaluation DNG 対応要求仕様](TECH_05_MiniTiasEvaluation_DNG対応要求仕様.md) — Evaluation 側への DNG 対応要求(§4 訂正済) +- [TECH_06 MiniTias-Evaluation 引き継ぎ受領](TECH_06_MiniTias-Evaluation引き継ぎ受領.md) — DNG ローダ受領.LSC 順方向適用が正しいと判明した経緯 + +### TEST 系(試行検証) + +- [TEST_01 キャリブレーション検証履歴](../06_TEST/TEST_01_キャリブレーション検証履歴.md) — Step 8 全イテレーション.Step 8-13 で本方針の数値結果を記録予定 +- [TEST_03 輝度マップ形状追跡](../06_TEST/TEST_03_輝度マップ形状追跡.md) — 「形のずれ」議論.finding 4 の前提変更を本ドキュメントで明示 +- [TEST_05 PNG/DNG 評価比較](../06_TEST/TEST_05_PNG_DNG評価比較.md) — LSC 補正なし/あり の数値実証 +- [TEST_06 外乱光影響評価](../06_TEST/TEST_06_外乱光影響評価.md) — 外乱光がロバスト < 1%(補正残差解析の前提) + +### 外部参考 + +- [Android Camera2 API LensShadingMap](https://developer.android.com/reference/android/hardware/camera2/params/LensShadingMap) +- [Android Camera2 API CaptureRequest.SHADING_MODE](https://developer.android.com/reference/android/hardware/camera2/CaptureRequest#SHADING_MODE) +- [DNG Spec 1.4 OpcodeList2 GainMap](https://www.adobe.com/content/dam/acom/en/products/photoshop/pdfs/dng_spec_1.4.0.0.pdf)