# 開発ステップ (Development Steps)

## 方針 (Approach)

PLAN_01 の検証対象の優先度に従い，段階的に実装する．各ステップは独立してテスト・実行可能な単位とする．

実装状況の凡例: ✅ 完了 / 🟡 一部完了 / ⬜ 未着手．詳細な経緯は [docs/PROGRESS.md](../PROGRESS.md) を参照．

## ステップ一覧 (Steps)

### ステップ 1: プロジェクト骨格の構築 ✅ 完了

- `src/`，`tests/` のディレクトリ・`__init__.py` を作成
- `loader.py` で PNG 読み込み・ROI 抽出を実装
- ユニットテストで動作確認

### ステップ 2: SmTIAS 照明均一性評価 ✅ 完了

- `uniformity.py` で輝度分布・均一性指標（CoV，標準偏差，最大/最小比）を実装
- `plotter.py` で輝度マップ・ヒストグラムを生成
- `exporter.py` で CSV・PNG 出力
- SmTIAS の白板画像で実行し結果を確認

**当初計画から追加で実装した項目（実装済み）:**

- `spatial.py`: 空間解析（中心/中間/周辺ゾーン，中心周辺勾配，動径輝度プロファイル，動径 min/max 比）
- `reproducibility.py` ＋ `registration.py`: 位置合わせ（位相相関）付き SSIM による画像間再現性評価
- `viewer.py`: Streamlit による結果ビューア / `select_roi.py`: OpenCV による対話的 ROI 選択
- 報告書 REPORT_01（照明均一性）/ REPORT_02（PNG・DNG 比較）/ REPORT_03（外乱光影響）

### ステップ 2.5: DNG (RAW_SENSOR) 対応 ✅ 完了（TECH_05 Phase 1）

- SmTIAS 定量モードの出力が PNG → DNG(RAW_SENSOR) に変わったため DNG 読み込み I/F を新設
- `io/dng_loader.py`（linear 展開）＋ `io/dng_pipeline.py`（LSC 補正・portrait 化・Rec.709 輝度化）
- `run_uniformity_dng.py` で PNG 版と同じ出力一式を DNG から生成
- 残フェーズ（既存パイプライン統合・SPEC 更新 等）は [TECH_01](../05_TECH/TECH_01_DNG対応要求仕様.md) / PROGRESS.md を参照

### ステップ 3: TIAS との照明均一性比較 ⬜ 未着手

- ステップ 2 のパイプラインを TIAS 画像にも適用
- 装置間の比較グラフ（並列表示，差分）を追加
- 比較結果を CSV に出力
- 前提: TIAS 画像の取得（`data/tias/` は現状空）

### ステップ 4: 色再現性評価 ⬜ 未着手

- `color.py` で sRGB → L\*a\*b\* 変換・ΔE2000 計算を実装
- 舌模型画像の色差を装置間で比較
- 比較グラフ・表を出力

### ステップ 5: 実行スクリプトの整備 🟡 一部完了

- 解析の実行スクリプトを整備（実装: `run_uniformity.py`（PNG）/ `run_uniformity_dng.py`（DNG）．当初想定の単一 `run_analysis.py` ではなく評価軸ごとに分割）
- コマンドライン引数（`--image` 等）で対象切り替え・ディレクトリ一括処理に対応済み
- 色再現性（ステップ 4）など未実装軸の統合は今後

## 依存関係 (Dependencies)

```text
ステップ 1 → ステップ 2 → ステップ 2.5 (DNG)
                         → ステップ 3
                         → ステップ 4
                                    → ステップ 5
```

- ステップ 1 はすべてのステップの前提
- ステップ 2.5（DNG 対応）はステップ 2 完了後に実施（実装済み）
- ステップ 3 と 4 はステップ 2 の完了後，並行して進めることも可能
- ステップ 5 は 3・4 の完了後
