diff --git a/CLAUDE.md b/CLAUDE.md index c552804..1defc82 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -24,7 +24,8 @@ 補足: **Speed-1 完了**.`src/sm_tias_lightsim/runtime/llvm_init.py` に `ensure_drjit_libllvm_path()`(標準パス自動探索→ `os.environ` 設定)と `log_variant_status()`(llvm_/cuda_/scalar_ 経路を INFO 明示,要求 llvm_* で実 scalar_* なら WARNING 追加)を新規実装.`render/runner.py` で variant=llvm_* 時に自動検出を呼び、`ImportError` 時は原因明示ログ→ re-raise.`visualize/baker.py` でも `log_variant_status` 呼び出し追加+ Speed-2 wavefront 化用に LLVM 自動探索の分岐を先取り.`cli/render.py` で import 順を制御(`sensors.py`/`lights.py` のモジュールレベル `import mitsuba` 前に検出を確実に通す).`docs/02_ENV/ENV_02_環境構築手順.md` に LLVM インストール手順・DRJIT_LIBLLVM_PATH 説明・動作確認コマンドを追記.**速度は不変**(コード経路同等).新規テスト 51 件追加で **606 件全通過**(仕様 A1〜E1 すべてカバー).数値同等性: SHA256 は MC 内部シードで異なるが平均相対誤差 7.23e-05(5σ 閾値 0.4508 に対し差 0.011)で統計同等性パス.これで「環境変数が消えて沈黙クラッシュ」する事故が再発しない土台が整備された. 補足: **速度最適化ワーク一旦中断**(Speed-2 path bake wavefront 化は未着手).**実時間の改善は実質ゼロ**(B1=508s/B2=56s で不変).副次的成果として環境破綻問題の発見と恒久対処,JIT 診断ログ,ベンチ条件のドキュメント,テスト 51 件追加が得られた.中断理由: B2 は現状ボトルネックではなく,B1 は CPU 完結・精度据置の制約下で取れる打ち手が限定的.本筋のキャリブ作業(LSC モデル化)に戻ることがプロジェクト目的により近い.再開条件: path bake samples を増やすユースケース発生/NVIDIA GPU 利用可/クラウド計算活用判断/キャリブ反復回数増加でバッチ時間が研究進度を圧迫した場合.詳細・Speed-2 テンプレ保持は [TEST_04 中断記録](docs/06_TEST/TEST_04_シミュレーション速度最適化履歴.md#中断記録-suspension-note--2026-05-28) 参照.次のアクション: キャリブ作業(LSC モデル化)に戻る. 補足: **キャリブ方針の根本見直し(2026-05-28)**.「シミュ vs 実機 PNG の比較」を再検討した結果,**実機 PNG 自体が定量データとして揺らいでいる**ことが判明.MiniTIAS の現行撮影は AE/AWB/NR/EDGE/TONEMAP/SHADING がすべて Camera2 API のオート/デフォルトで,撮影ごとに露光・WB・補正量が変動する.既存 baseline `MiniTIAS_20260408_144434` もこのモードで取得されており,シミュ側でいくらモデルを精緻化しても比較対象が不安定.**当初考えていた「LSC モデル化」より上位の問題**として「**定量撮影モード**」を MiniTIAS 側に追加することを優先する.Android Camera2 API には `STATISTICS_LENS_SHADING_CORRECTION_MAP` (LSC ゲインマップ取得)・`SHADING_MODE=OFF` (LSC 無効化)・`MANUAL_SENSOR`/`MANUAL_POST_PROCESSING` 能力フラグが存在し,これらを活用すれば「ISP 介入を最小化した再現性ある撮影」が可能.要求仕様を [TECH_01 定量撮影モード要求仕様](docs/05_TECH/TECH_01_定量撮影モード要求仕様.md) に,MiniTias 側 Claude セッションで作業着手するためのハンドオフ手順を [TECH_02 MiniTIAS 引き継ぎ手順](docs/05_TECH/TECH_02_MiniTIAS引き継ぎ手順.md) にそれぞれ新規作成.データ受け渡しは `reference_measurement/quantitative/` 配下(gitignore 対象)で `MiniTIAS_QM_YYYYMMDD_HHmmss.{png,meta.json,lsc.npz}` 命名規則.MiniTIAS 側で実装後,定量モードで再撮影した baseline で改めてキャリブを進める方針.SmTIAS-LightSim 側のキャリブ作業は本仕様書を MiniTIAS に渡した時点で一旦停止. -補足: **MiniTIAS 側で定量モード実装完了(2026-06-01)**.[TECH_03 実装報告 (MiniTIAS 側原稿)](docs/05_TECH/TECH_03_定量モード実装報告とSHADING_MODE相談.md) と [TECH_04 SmTIAS-LightSim 側回答](docs/05_TECH/TECH_04_MiniTIASへの回答.md) を取り込み.**AQUOS sense3 (SH-02M) は `LEVEL_3`(最上位)でハードウェア能力フル**.Phase 1〜5 全完了で **DNG (RAW_SENSOR) 経路を第 1 優先採用**.撮影設定: 1/60s + ISO 40 + AWB/NR/EDGE/AF/AE OFF + TONEMAP 線形 + BLACK_LEVEL_LOCK + SHADING_MODE=HIGH_QUALITY (★) + STATISTICS_LENS_SHADING_MAP_MODE=ON.LSC マップは 13×17.保存ファイルは `MiniTIAS_QM_*.{dng, meta.json, preview.jpg}` 3 種,meta.json に LSC マップ・実適用値・センサ特性も埋め込み.**SHADING_MODE 判断**: HIGH_QUALITY を本流維持(Mitsuba orthographic 出力 ≒「ISP が完璧に補正できた場合の理想値」で HIGH_QUALITY DNG と直接比較が物理整合).OFF 切替は将来のフォールバック条件 C1-C3 発動時のみ.データ転送は **adb pull 推奨**(MTP は大容量 DNG で不整合リスク).次フェーズ: MiniTIAS 側は画素統計・Hot pixel map・10 連射 UI を追加実装.SmTIAS-LightSim 側は DNG/meta.json 読み込み I/F・再現性検証スクリプト・新規 baseline config・LSC 読み込み I/F(検証用)を sm-evaluate に追加してキャリブ再開(Step 8-13 として記録予定).既存実機 PNG の Y' 抽出は BT.601 係数(Rec.709 ではない)も判明. +補足: **MiniTIAS 側で定量モード実装完了(2026-06-01)**.[TECH_03 実装報告 (MiniTIAS 側原稿)](docs/05_TECH/TECH_03_定量モード実装報告とSHADING_MODE相談.md) と [TECH_04 SmTIAS-LightSim 側回答](docs/05_TECH/TECH_04_MiniTIASへの回答.md) を取り込み.**AQUOS sense3 (SH-02M) は `LEVEL_3`(最上位)でハードウェア能力フル**.Phase 1〜5 全完了で **DNG (RAW_SENSOR) 経路を第 1 優先採用**.撮影設定: 1/60s + ISO 40 + AWB/NR/EDGE/AF/AE OFF + TONEMAP 線形 + BLACK_LEVEL_LOCK + SHADING_MODE=HIGH_QUALITY (★) + STATISTICS_LENS_SHADING_MAP_MODE=ON.LSC マップは 13×17.保存ファイルは `MiniTIAS_QM_*.{dng, meta.json, preview.jpg}` 3 種,meta.json に LSC マップ・実適用値・センサ特性も埋め込み.**SHADING_MODE 判断**: HIGH_QUALITY を本流維持(Mitsuba orthographic 出力 ≒「ISP が完璧に補正できた場合の理想値」で HIGH_QUALITY DNG と直接比較が物理整合).OFF 切替は将来のフォールバック条件 C1-C3 発動時のみ.データ転送は **adb pull 推奨**(MTP は大容量 DNG で不整合リスク).既存実機 PNG の Y' 抽出は BT.601 係数(Rec.709 ではない)も判明. +補足: **作業フェーズを A/B に分割(2026-06-01)**.「連射再現性が確保できてもシミュとの対応が取れなければ意味が薄い」という研究上の判断から,**フェーズ A: 1 ショット撮影でシミュ vs 実機対応を先に検証** → **フェーズ B: 対応が取れたら連射 V1 再現性検証**の二段階方式に変更.フェーズ A で MiniTIAS 側に依頼するのは **画素統計・Hot pixel map(高優先 2 件)と白板 1 ショット試し撮りのみ**.**連射 UI は高優先→フェーズ B に降格**.SmTIAS-LightSim 側は DNG/meta.json/LSC マップ読み込み I/F・新規 baseline config を実装し,1 ショット突合で既存通常モード baseline 残差 2.1× が定量モードで変化するかを観察.結果次第でフェーズ B 移行 or SHADING_MODE フォールバック条件 C1 検討 or 物理モデル見直しを判断.[TEST_01](docs/06_TEST/TEST_01_キャリブレーション検証履歴.md) に **Step 8-13: 定量モード 1 ショット対応検証** として記録予定. 実装済みモジュール: - `src/sm_tias_lightsim/uniformity.py` — Rec.709 輝度変換 + CoV/std/max-min(MiniTias-Evaluation コピー) diff --git "a/docs/05_TECH/TECH_04_MiniTIAS\343\201\270\343\201\256\345\233\236\347\255\224.md" "b/docs/05_TECH/TECH_04_MiniTIAS\343\201\270\343\201\256\345\233\236\347\255\224.md" index e578e77..fdbfcdd 100644 --- "a/docs/05_TECH/TECH_04_MiniTIAS\343\201\270\343\201\256\345\233\236\347\255\224.md" +++ "b/docs/05_TECH/TECH_04_MiniTIAS\343\201\270\343\201\256\345\233\236\347\255\224.md" @@ -16,11 +16,12 @@ | LSC 逆適用機能 | SmTIAS-LightSim 側で **検証用ツール**として将来実装.本流の比較では使わない | | 既存 baseline 互換性 | TECH_02 既決:**新規 baseline で再キャリブ**.既存 `MiniTIAS_20260408_144434` は参考扱い | | 露光・ISO 目安 | **10-bit のうち中央値 500 前後**(飽和回避のため p99 < 900).現状 1/60s + ISO40 で適切か実機で要確認 | -| V1 連射再現性検証 | **解析は SmTIAS-LightSim 側 sm-evaluate に統合**.MiniTIAS 側は連射 UI のみ実装 | +| **作業フェーズ分け** | **フェーズ A(直近): 1 ショット撮影でシミュとの対応を先に検証** → **フェーズ B(後続): 対応が取れたら連射 UI 実装と V1 再現性検証** | +| V1 連射再現性検証 | **フェーズ B に後回し**.フェーズ A で対応の見通しが立ってから着手.解析は SmTIAS-LightSim 側 sm-evaluate に統合,MiniTIAS 側は連射 UI のみ実装(フェーズ B 時点) | | データ転送 | **`adb pull` 推奨**.MTP 経由は禁止しないが大容量 DNG で不整合リスクあり | -| 改善案優先度 | 画素統計・Hot pixel map・連射 V1 を **高優先で同意**.その他はキャリブ進捗を見て判断 | +| 改善案優先度 | フェーズ A 用: **画素統計・Hot pixel map** を高優先で同意.連射 UI は **フェーズ B に後回し**.他はキャリブ進捗を見て判断 | -→ MiniTIAS 側で必要な追加実装は **連射 UI・画素統計・Hot pixel map** の 3 件.他は現状維持で OK. +→ **フェーズ A** で MiniTIAS 側に追加で依頼するのは **画素統計・Hot pixel map** の 2 件と **白板 1 ショット試し撮り**のみ.連射機能はフェーズ B まで保留. ## SHADING_MODE 判断の詳細 (SHADING_MODE Decision Rationale) @@ -101,23 +102,90 @@ → MiniTIAS 側 DNG (HIGH_QUALITY) は **10-bit linear** で sRGB OETF 未適用のはず.SmTIAS-LightSim 側で DNG 読み込み時に linear 域で評価し,比較時には Mitsuba 側も linear のまま使う(または両者に同じ OETF を適用する). -## V1 連射再現性検証の役割分担 (V1 Verification Role) +## 作業フェーズ分け (Work Phase Strategy) -TECH_01 検証 V1(10 連射 mean CoV < 1%)の実施について: +本回答時点での研究上の優先順位として,**「シミュ vs 実機の対応がそもそも取れるか」を 1 ショットで先に確認してから連射に進む** 二段階方式を採用する. -| 担当 | 内容 | -| --- | --- | -| **MiniTIAS 側** | 連射 UI を実装.10 ショット連続キャプチャ → `MiniTIAS_QM_*_burst{N}.dng` 形式で保存.撮影ファイル群(DNG + meta.json)を `reference_measurement/quantitative/` へ転送 | -| **SmTIAS-LightSim 側** | sm-evaluate に DNG 読み込み機能と再現性検証スクリプト (`scripts/verify_repeatability.py` 仮称) を追加.mean / std / CoV / 形状指標を 10 ショット間で集計して合格判定 | +### 方針の根拠 + +- **連射再現性が確保できても,シミュとの対応自体が取れなければ意味が薄い** +- 1 ショット分析でフェーズ A の対応が取れない場合: + - 物理モデルの根本見直し(Mitsuba 側の物性・配光・反射特性) + - SHADING_MODE フォールバック条件 C1〜C3 の発動判断 + - シミュ側の自由度パラメータの再キャリブ +- これらは **どれも 1 ショット分析で判断できる** ことで,連射機能の有無に依らない +- 連射機能を先に実装すると「結局使わないかもしれない実装」のコストがかかるリスクがある + +### フェーズ A(直近・1 ショット対応検証) + +**目的**: 1 枚の定量モード DNG とシミュ Mitsuba 出力の対応そのものを評価する. + +**MiniTIAS 側の作業**: + +1. **白板で 1 ショット試し撮り**(現状実装で OK,追加実装なし) + - 1/60s + ISO 40 で mean が 10-bit 中央値 500 前後に収まるか確認 + - 範囲外なら露光時間 or ISO を 1〜2 通り試行 + - 確定した撮影条件と DNG + meta.json を SmTIAS-LightSim 側に共有 + +2. **画素統計を meta.json に追加**(高優先) + - mean_per_channel / max_per_channel / p99 / saturated_pixel_ratio + - 撮影直後に飽和判定したい.撮り直しの即時判定にも使える + +3. **Hot pixel map 取得**(高優先) + - `STATISTICS_HOT_PIXEL_MAP_MODE = ON` + - meta.json に座標リストを記録.SmTIAS-LightSim 側の解析でマスク + +**SmTIAS-LightSim 側の作業**: + +1. **DNG (RAW_SENSOR) 読み込み I/F の実装** (`evaluation/dng_loader.py` 想定) + - `rawpy` 等で 10-bit BGGR Bayer を展開 + - 黒レベル除去 + デモザイク + +2. **メタデータ JSON 読み込み I/F の実装** (`evaluation/metadata.py` 想定) + - `settings` / `actual` / `sensorCharacteristics` / `lscMap` の読み取り + - hot pixel マスク適用機能 + +3. **新規 baseline config の作成** (`configs/eval_baseline_quantitative.yaml`) + - 既存 baseline と並列保持 + +4. **1 ショット シミュ vs 実機 突合** + - sm-evaluate に DNG 入力経路を追加 + - 既存メトリクス(CoV / 勾配 / C/P / max-min)を 1 ショット定量モード DNG に適用 + - [TEST_01](../06_TEST/TEST_01_キャリブレーション検証履歴.md) に Step 8-13 として記録 + +**フェーズ A 完了の判定**: + +- 1 ショット定量モード DNG(10-bit linear,HIGH_QUALITY,hot pixel マスク済)と Mitsuba シミュ luminance.npy の評価指標を直接比較 +- 既存 baseline(通常モード PNG)での残差 2.1× が **どう変化するか** を観察 +- 結果次第で以下を判断: + - **残差が縮む(≤ 1.5×)**: 撮影モード変更が効いた.フェーズ B に進む + - **残差変わらず**: SHADING_MODE フォールバック条件 C1 の検討・物理モデル見直し + - **残差が増える**: 解析パイプラインの不整合(DNG 読み込み・黒レベル・デモザイク)を疑う + +### フェーズ B(後続・連射再現性検証) + +**フェーズ A で対応の見通しが立った場合のみ**着手.目的は TECH_01 検証 V1(10 連射 mean CoV < 1%)の達成. + +**MiniTIAS 側の作業**(フェーズ B 時点): + +- **連射 UI 実装**: ボタンタップ → 10 連射 → 全保存 + - ファイル命名: `MiniTIAS_QM_YYYYMMDD_HHmmss_burst{0..9}.dng` + - 連射間隔は端末性能依存.インターバル指定は不要 + - meta.json は撮影ごとに保存(10 個生成).プレビュー JPEG は 1 枚で十分 + +**SmTIAS-LightSim 側の作業**(フェーズ B 時点): + +- **再現性検証スクリプト** `scripts/verify_repeatability.py` + - 10 ショット間で mean / std / CoV / 形状指標を集計 + - V1 合格判定(mean CoV < 1%,形状指標 std < 0.005) 役割分担の根拠:SmTIAS-LightSim 側に既存の解析基盤([`uniformity.py`](../../src/sm_tias_lightsim/uniformity.py), `evaluation/*.py`)があるので,再現性検証もそこに統合する方が将来のキャリブ作業との整合性が高い. -### 連射 UI 仕様の依頼 +### フェーズ B 着手の条件 -- ボタンタップ → カウントダウンなし即時 → 10 連射 → 全保存 -- 連番 `_burst{N}` は 0〜9(基準ショットを `_burst0` ではなく `MiniTIAS_QM_*.dng` のままにする運用もアリ,MiniTIAS 側判断に委ねる) -- 連射間隔は端末性能依存.インターバル指定は不要 -- meta.json は撮影ごとに保存(10 個生成される).プレビュー JPEG は 1 枚だけで十分 +- フェーズ A で「シミュ vs 実機」の対応が一定程度取れた(残差 ≤ 1.5× 程度) +- もしくはフェーズ A の結果から「連射で SN 比改善 / 平均値安定化が必要」と判断された +- いずれもフェーズ A 完了後に判断する ## 露光時間・ISO 運用の目安 (Exposure & ISO Guideline) @@ -148,18 +216,18 @@ ## 改善案優先度のフィードバック (Improvement Priority Feedback) -TECH_03 「検討中の改善案」に対する SmTIAS-LightSim 側の優先度評価: +TECH_03 「検討中の改善案」に対する SmTIAS-LightSim 側の優先度評価.本回答ではフェーズ A/B 分けにより **連射 UI を高優先 → フェーズ B(中優先)に降格**する点が当初提案からの修正. -| MiniTIAS 側優先度 | 項目 | SmTIAS-LightSim 側評価 | 理由 | -| --- | --- | --- | --- | -| 高 | 画素統計を meta.json に追加(mean/max/p99/saturated_ratio) | **同意,高** | 飽和判定がないと「定量データの有効性」が事後判断になる.撮影時に即判定したい | -| 高 | Hot pixel map 取得 (`STATISTICS_HOT_PIXEL_MAP_MODE = ON`) | **同意,高** | 10-bit のホット画素は max/std 指標に大きく影響.マスク必須 | -| 高 | 連射機能(V1 検証用) | **同意,高** | V1 検証の前提.必須 | -| 中 | 露光時間・ISO の半自動キャリブ | **同意,中** | 手動ハードコードでも進められる.運用が定着した後でよい | -| 中 | レンズ・センサ校正値を meta に追加 | **同意,中** | DNG Exif に既に埋め込まれている分は重複.未埋め込み値のみ追加で十分 | -| 低 | Dark frame / Flat field キャリブ機能 | **同意,低** | 実物理 cos⁴ の独立測定として理想的だが,現状の HIGH_QUALITY 経路では LSC マップで代替可能 | +| MiniTIAS 側優先度 | 項目 | SmTIAS-LightSim 側評価 | フェーズ | 理由 | +| --- | --- | --- | --- | --- | +| 高 | 画素統計を meta.json に追加(mean/max/p99/saturated_ratio) | **同意,高** | **A** | 飽和判定がないと「定量データの有効性」が事後判断になる.撮影時に即判定したい.1 ショット分析でも必須 | +| 高 | Hot pixel map 取得 (`STATISTICS_HOT_PIXEL_MAP_MODE = ON`) | **同意,高** | **A** | 10-bit のホット画素は max/std 指標に大きく影響.マスク必須 | +| 高 | 連射機能(V1 検証用) | **降格.フェーズ A 結果次第で再評価** | **B(保留)** | 1 ショットで対応が取れることを先に確認すべき.対応が取れないなら連射しても無意味 | +| 中 | 露光時間・ISO の半自動キャリブ | **同意,中** | B 以降 | 手動ハードコードでも進められる.運用が定着した後でよい | +| 中 | レンズ・センサ校正値を meta に追加 | **同意,中** | B 以降 | DNG Exif に既に埋め込まれている分は重複.未埋め込み値のみ追加で十分 | +| 低 | Dark frame / Flat field キャリブ機能 | **同意,低** | C 以降 | 実物理 cos⁴ の独立測定として理想的だが,現状の HIGH_QUALITY 経路では LSC マップで代替可能 | -→ 高優先 3 件(**画素統計・Hot pixel map・連射 UI**)の実装を依頼する.完了後の検証 V1 で問題なければ中優先項目に進む. +→ **フェーズ A で MiniTIAS 側に依頼するのは「画素統計・Hot pixel map」の 2 件のみ**.連射 UI と他項目はフェーズ A 完了後に再評価. ## データ受け渡し細部の追補 (Data Exchange Refinements) @@ -190,26 +258,58 @@ ## 次のフェーズの作業範囲 (Next Phase Scope) -本回答に基づく次フェーズの作業を整理: +本回答に基づく次フェーズの作業を整理.**フェーズ A 完了後にフェーズ B への移行を判断**する. -### MiniTIAS 側(実装依頼) +### フェーズ A(直近・1 ショット対応検証) -1. **画素統計を meta.json に追加**(高優先) -2. **Hot pixel map 取得・meta.json に保存**(高優先) -3. **10 連射 UI 実装**(高優先・V1 検証前提) -4. **白板で 1 ショット試し撮り → mean 確認**(露光/ISO の妥当性確認) - - mean が 400〜600 なら現状の 1/60s + ISO 40 で運用 +#### MiniTIAS 側(実装依頼) + +1. **画素統計を meta.json に追加**(高優先・フェーズ A 必須) + - mean_per_channel / max_per_channel / p99 / saturated_pixel_ratio +2. **Hot pixel map 取得・meta.json に保存**(高優先・フェーズ A 必須) + - `STATISTICS_HOT_PIXEL_MAP_MODE = ON` +3. **白板で 1 ショット試し撮り → mean 確認**(露光/ISO の妥当性確認) + - mean が 400〜600(10-bit 黒レベル除去後)なら現状の 1/60s + ISO 40 で運用 - 範囲外なら設定を調整 -5. 最初の正式 baseline 撮影(連射機能で 10 ショット)→ `reference_measurement/quantitative/` へ転送 +4. 確定した撮影条件で **白板を 1 枚撮影** → `reference_measurement/quantitative/` へ adb pull 転送 -### SmTIAS-LightSim 側(受け入れ実装) +> **連射 UI は不要**.本フェーズでは 1 ショット分析を優先. + +#### SmTIAS-LightSim 側(受け入れ実装) 1. **DNG (RAW_SENSOR) 読み込み I/F の実装**(`evaluation/dng_loader.py` 新規想定) 2. **メタデータ JSON 読み込み I/F の実装**(`evaluation/metadata.py` 新規想定) 3. **LSC マップ読み込み I/F の実装**(検証用,本流では使わない) -4. **再現性検証スクリプト** `scripts/verify_repeatability.py` の実装(V1 連射の mean/std/CoV/形状指標集計) -5. **新規定量モード baseline 設定** `configs/eval_baseline_quantitative.yaml` の作成 -6. キャリブ再開([TEST_01](../06_TEST/TEST_01_キャリブレーション検証履歴.md) に Step 8-13 として記録) +4. **新規定量モード baseline 設定** `configs/eval_baseline_quantitative.yaml` の作成 +5. **1 ショット シミュ vs 実機の突合** + - 既存メトリクス(CoV / 勾配 / C/P / max-min)を 1 ショット DNG に適用 + - 既存通常モード baseline 残差 2.1× が定量モードで **どう変化するか** を観察 +6. [TEST_01](../06_TEST/TEST_01_キャリブレーション検証履歴.md) に **Step 8-13: 定量モード 1 ショット対応検証** として記録 + +### フェーズ A 完了判定とフェーズ B 移行条件 + +フェーズ A 完了後,1 ショット突合の結果から以下を判断: + +| 結果 | 判断 | 次の動き | +| --- | --- | --- | +| 残差が縮む(≤ 1.5×) | 撮影モード変更が効いた | フェーズ B(連射 V1 検証)に進む.連射 UI 実装依頼 | +| 残差変わらず(≈ 2.1×) | 撮影モード変更だけでは足りない | SHADING_MODE フォールバック条件 C1 検討.物理モデル見直し(LSC モデル化/反射特性/emitter 配光) | +| 残差が増える | 解析パイプラインに不整合 | DNG 読み込み・黒レベル・デモザイク・カラーマトリクスを疑う.デバッグ | + +### フェーズ B(後続・連射 V1 検証) + +**フェーズ A で対応の見通しが立った場合のみ**着手. + +#### MiniTIAS 側(フェーズ B 時点) + +- 10 連射 UI 実装(V1 検証前提) +- 連射機能で 10 ショット baseline 撮影 → `reference_measurement/quantitative/` へ転送 + +#### SmTIAS-LightSim 側(フェーズ B 時点) + +- **再現性検証スクリプト** `scripts/verify_repeatability.py` の実装 +- V1 検証実施 +- 必要に応じてキャリブ自由度(反射率・emitter 強度等)を再調整 ## 未確定事項 (Pending Items)