diff --git "a/docs/04_SPEC/SPEC_02_\347\205\247\346\230\216\345\235\207\344\270\200\346\200\247\350\251\225\344\276\241\343\202\242\343\203\253\343\202\264\343\203\252\343\202\272\343\203\240.md" "b/docs/04_SPEC/SPEC_02_\347\205\247\346\230\216\345\235\207\344\270\200\346\200\247\350\251\225\344\276\241\343\202\242\343\203\253\343\202\264\343\203\252\343\202\272\343\203\240.md" index a9ac83f..933cefd 100644 --- "a/docs/04_SPEC/SPEC_02_\347\205\247\346\230\216\345\235\207\344\270\200\346\200\247\350\251\225\344\276\241\343\202\242\343\203\253\343\202\264\343\203\252\343\202\272\343\203\240.md" +++ "b/docs/04_SPEC/SPEC_02_\347\205\247\346\230\216\345\235\207\344\270\200\346\200\247\350\251\225\344\276\241\343\202\242\343\203\253\343\202\264\343\203\252\343\202\272\343\203\240.md" @@ -82,6 +82,60 @@ OpenCV のウィンドウが開くので,マウスで矩形を選択して Enter で確定する.ESC でキャンセル. +## 空間分析 (Spatial Analysis) + +ROI 内の輝度の空間的な偏り(中心-周辺勾配)を定量化する. + +### 正規化楕円距離マップ + +各ピクセルについて,ROI 中心からの正規化楕円距離 $d$ を算出する. + +$$d(x, y) = \sqrt{\left(\frac{x - c_x}{c_x}\right)^2 + \left(\frac{y - c_y}{c_y}\right)^2}$$ + +- $c_x = W/2$, $c_y = H/2$: ROI の中心座標 +- 値域を $[0, 1]$ に再正規化($d \leftarrow d / d_{\max}$) +- 楕円距離を使用することで,縦横比が異なる ROI でも等方的な評価が可能 + +### 3 ゾーン分類 + +正規化距離の閾値で ROI を 3 つの同心楕円ゾーンに分割する. + +| ゾーン | ラベル | 距離条件 | +| --- | --- | --- | +| Center(中心) | 0 | $d < 0.33$ | +| Middle(中間) | 1 | $0.33 \leq d < 0.66$ | +| Periphery(周辺) | 2 | $0.66 \leq d$ | + +閾値は正規化距離の三等分点に設定し,標準的な照明評価の領域分割に対応する. + +### 空間分析指標 + +#### ゾーン別統計 + +各ゾーンの平均輝度 $\mu_z$ と標準偏差 $\sigma_z$ を算出する($z \in \{center, middle, periphery\}$). + +#### 中心/周辺比 + +$$\text{C/P Ratio} = \frac{\mu_{center}}{\mu_{periphery}}$$ + +- 1.0 に近いほど均一 +- 1.0 より大 → 中心が明るい(照明の集中) +- 1.0 より小 → 周辺が明るい + +#### 勾配量(%) + +$$\text{Gradient} = \frac{\mu_{center} - \mu_{periphery}}{\mu_{center}} \times 100$$ + +- 0% に近いほど空間的ムラが小さい +- 正値 → 中心から周辺に向かって輝度が減衰 + +### 放射状輝度プロファイル + +正規化距離を 20 等分のビンに分割し,各ビン内の平均輝度を集計する.中心から周辺にかけての輝度変化の傾向を連続的に把握できる. + +- 出力: 20 × 2 の配列(列 0 = ビン中心距離,列 1 = 平均輝度) +- 最外ビンは上端を含める($d = 1.0$ の画素を欠損させない) + ## バッチ解析 (Batch Analysis) `scripts/run_uniformity.py` で白板画像を一括解析する.ROI 設定済みであること. @@ -99,9 +153,12 @@ ### 出力 - `output/results/summary_uniformity.csv` — 全画像の均一性指標一覧 -- `output/results/<画像名>_uniformity.json` — 各画像の詳細結果 +- `output/results/summary_spatial.csv` — 全画像の空間分析指標一覧 +- `output/results/<画像名>_uniformity.csv` — 各画像の均一性指標 - `output/figures/<画像名>_luminance_map.png` — 輝度マップ - `output/figures/<画像名>_histogram.png` — 輝度ヒストグラム +- `output/figures/<画像名>_radial_profile.png` — 放射状輝度プロファイル +- `output/figures/<画像名>_zone_map.png` — ゾーンオーバーレイマップ ## 結果の確認 (Result Viewer) @@ -123,6 +180,33 @@ - **全体比較タブ**: 全画像の均一性指標テーブル・統計サマリー・指標の比較グラフ(2×2 棒グラフ) - **個別画像タブ**: ドロップダウンまたは矢印ボタンで画像を切り替え,元画像(ROI オーバーレイ付き)・輝度マップ・ヒストグラムを横並びで確認 +## レポート生成 (Report Generation) + +バッチ解析の結果から自己完結型の HTML レポートを生成する. + +### 起動コマンド + +```bash +python scripts/generate_report.py --output output/ +``` + +### 前提条件 + +- `scripts/run_uniformity.py` でバッチ解析(空間分析を含む)が完了していること +- `output/results/summary_uniformity.csv` と `output/results/summary_spatial.csv` が存在すること + +### 出力 + +- `output/reports/uniformity_report.html` — 自己完結 HTML レポート + +### レポート内容 + +- 均一性指標サマリテーブル(CoV,std,max_min_ratio 等) +- 空間分析サマリテーブル(center_mean,periphery_mean,C/P ratio,gradient 等) +- 画像別の詳細セクション(輝度マップ,ヒストグラム,放射状プロファイル,ゾーンマップ) + +画像はすべて base64 でインライン埋め込みされるため,HTML ファイル単体で閲覧可能.PDF が必要な場合はブラウザの印刷機能を使用する. + ## キャリブレーション (Calibration) 照明均一性評価ではカラーキャリブレーションを行わない.輝度の相対的なばらつき(CoV 等)は画像内の比較であり,カメラの色特性のズレが全画素に等しく影響するため,指標の値に影響しない.