# 開発進捗ログ

<!--
本ファイルは追記型のフル進捗ログ．

- 最新エントリは下に追記する（時系列順．古いものが上，新しいものが下）
- CLAUDE.md の「開発進捗」セクションは最新 1 行のみ（上書き運用）
- 詳細・失敗パターン・設計判断はすべて本ファイルに残す
- 書式・運用ルールは docs/01_GUIDE/GUIDE_05_エージェント運用ルール.md
  「進捗記録の運用ルール（CLAUDE.md / PROGRESS.md）」を参照
-->

- [x] **ステップ 2: SmTIAS 照明均一性評価 完了**: 照明均一性の評価指標算出・可視化を実装し，REPORT_01（照明均一性評価報告書）を作成済み．次はステップ 3．
  - 注: 本エントリはテンプレート同期で PROGRESS.md を新設した際の移記ベースライン（詳細経緯は `git log` を参照）．以降の進捗は本ファイル末尾に追記する．

- [x] **TECH_05 Phase 1: DNG 読み込み I/F ＋ 動径 min/max 比指標**: SmTIAS 定量モードの出力が PNG→DNG(RAW_SENSOR) に変わったため DNG 読み込み I/F（`src/io/dng_loader.py`）を新設．あわせて照明均一性に動径 min/max 比指標を追加．SmTIAS-LightSim へのコピー前提で再利用性重視．
  - **設計判断（線形性）**: linear 系出力は `output_color=raw`（カラーマトリクス非適用）とし，入射光量とセンサ信号の比例（放射輝度リニアリティ）を担保．カラーマトリクス経路はチャンネル混合で per-channel 比例が崩れるため不採用．luma は既存 PNG 経路互換のため Rec.709 維持（raw 経路では厳密な CIE 輝度でなく固定加重プロキシ）．
  - **重要な発見（仕様との食い違い）**: RAW_SENSOR DNG はレンズシェーディング**未補正**（補正は DNG の OpcodeList2 GainMap・meta.json lscMap として付随するが rawpy は適用しない／lscMap ゲインは 1〜5）．TECH_05 の `apply_lsc_inverse` は「DNG=補正済み」前提だが実際は未補正．照明ムラを測るには lscMap を**順方向適用**してレンズビネットを除去する向きで Phase 3 を設計すること．LSC 順適用で白板 ROI の CoV は約半減を実測．
  - **向き**: DNG はセンサ native が landscape，PNG/preview は portrait．PNG と揃えるには `rot90(-1)`（左右反転なし）．フロントカメラ(id=1) の preview はミラーされるが RAW はミラーされないため反転不要（ラベル位置で確認）．
  - **PNG vs DNG 比較の注意**: 違いはスケール(0-1/0-255)でなくドメイン（PNG=sRGB / DNG=linear）．CoV 等はスケール不変なので，公平比較には PNG を inverse-sRGB で linear 化する必要がある．
  - **動径 min/max 比**: 画素単位 max/min は外れ画素に弱いため，20点輪帯平均の min/max をロバスト指標として追加．
  - **後段（未着手）**: TECH_05 Phase 4（既存パイプライン統合）/ Phase 5（PNG vs DNG，撮影フレーミング差への ROI 対応）/ Phase 6（SPEC_01/02 更新）/ ビューア(viewer.py) の DNG 対応．SPEC のフル更新は TECH_05 Phase 6 に委ねる．`scripts/run_uniformity_dng.py` は PNG 版の DNG 対応ランナーとして暫定追加（共通化は将来）．

- [x] **リリース準備: SmTIAS へ全面改名 ＋ 共通化リファクタ ＋ ドキュメント整理**: 新バージョンのタグ付けに向けて以下を実施．
  - **改名**: プロジェクト/デバイス名を MiniTIAS → SmTIAS に全面統一（`pyproject.toml`，ROI キー `smtias.whiteboard`，docs/scripts/tests/src，GitHub リポジトリ名 `SmTIAS-Evaluation`，`data/`・`output/` の実データ／成果物ファイル名）．参照コピー `MiniTias/`（外部リポジトリ）は対象外．
  - **リファクタ（共通化）**: 重複していた `load_roi_config` を `src/config.py` に集約．`run_uniformity_dng.py` 内の DNG 輝度化パイプライン（`dng_luminance`/`lsc_gain_rgb`/`_upsample`）を `src/io/dng_pipeline.py` に移設し，compare 系・plot 系スクリプトが「スクリプト間 import」をやめて `src/` から取得するように変更（上記「共通化は将来」を解消）．`dng_loader.py` の Rec.709 係数重複は SmTIAS-LightSim への単体コピー前提のため意図的に据え置き．
  - **ドキュメント**: ルート `README.md` を新設．CLAUDE.md にプロジェクト概要と SPEC_02 索引を追加．TECH_01 のローカル TECH_02 リンク切れを修正．
  - **検証**: pytest 381 passed，主要スクリプト（run/plot/compare 各種）の smoke test も成功（指標値は改名前と一致）．

- [x] **単灯照明の切り分け評価 ＋ output 構造のデバイス別整理（2026-06-23）**: 下・左・右の 3 灯を 1 灯ずつ単独点灯（他 2 灯を黒テープで遮光）して白板を撮影し，各灯単体の照射偏り・均一性を評価．3 灯合成均一性の根拠（相補配置）を確認した．
  - **対象データ**: `data/smtias/quantitative/SmTIAS_QM_20260615_{141420=下,150300=左,170948=右}`．各 DNG を `run_uniformity_dng.py`（linear＋LSC，ROI=smtias.whiteboard）で評価．
  - **命名判断**: 取り込み時のファイル名は `MiniTIAS_QM_*` だが，既存 QM 規約に統一して `SmTIAS_QM_<timestamp>` へリネーム．LED 条件（下/左/右）は**ファイル名に含めず**報告書側で管理する方針（ユーザー選択）．
  - **失敗と対処（写り込み）**: 右のみ初回 `170358` は ROI 内に黒テープが写り込み，最小輝度 2.89・max/min≈27.7 と min 依存指標が無効化．撮り直し版 `170948`（min 46.0・max/min 1.66）に差し替え，初回分はデータ・結果とも削除．→ 撮影時はフレーム外で遮光する運用を徹底．
  - **結果**: 明るさ・均一性とも **右 > 左 > 下**（mean 63.6/61.5/57.8，CoV 0.062/0.086/0.070）．各灯は異なる方向（像面で下=上側／左=右寄り／右=中央〜左寄り；プレビューは鏡像で像面右＝実空間左）を強く照らし，互いの暗部を補完する相補配置．合成均一性の弱点は下灯側．
  - **新規スクリプト**: `scripts/compare_single_leds.py`（3 単灯を**共通絶対カラースケール**で並置＋動径プロファイル重ね描き＋指標表，出力 `output/smtias/figures/compare_single_leds.png`）．スケールは外れ値に強い p1–p99 で決定．
  - **報告書**: `docs/06_TEST/TEST_04_単灯照明比較評価報告書.md` を作成し CLAUDE.md 索引に追記．
  - **output 構造の整理（再発防止込み）**: 混在していた `output/figures`・`output/results` をデバイス別へ集約 → `output/smtias/{figures,results}`（SmTIAS 全成果物）／`output/compare/`（smtias↔tias 横断比較）／`output/tias_dfk23*`（既存）．さらに figures 内で非 QM（PNG 白板 `SmTIAS_20260408_*` セット）を `output/smtias/figures/whiteboard/` サブフォルダへ分離．
  - **スクリプト追従**: 再実行で散らからないよう出力先を更新．compare 系のハードコード `OUTPUT_PATH` を新構造へ（ambient/png_dng→`output/smtias/figures/`，smtias_tias→`output/compare/`）＋ `mkdir(parents=True)` を追加．`run_uniformity*.py`・`plot_radial_clean.py` の `--output` 既定を `output/` → `output/smtias/` に変更（TIAS は従来どおり `--output` 明示で分離）．`compare_png_dng_slide.py` の mkdir 重複も解消．pytest は 381 passed のまま（テストは tmp_path 依存でパス変更の影響なし）．
  - **未着手（保留）**: `output/smtias/results/` 側は非 QM/summary を `whiteboard/` 配下へ分離する整理が未対応（figures のみ実施）．3 灯合成の実測 vs 単灯加算（下＋左＋右）の検証も今後の課題（TEST_04 限界節）．
