Newer
Older
SmTIAS-Evaluation / docs / 04_SPEC / SPEC_01_アーキテクチャ設計.md

アーキテクチャ設計 (Architecture)

ディレクトリ構造 (Directory Structure)

SmTIAS-Evaluation/
├── src/
│   ├── config.py               # ROI 設定(roi_config.json)の読み込み
│   ├── io/
│   │   ├── loader.py           # PNG 読み込み・ROI 抽出(OpenCV)
│   │   ├── dng_loader.py       # DNG(RAW_SENSOR) 読み込み(rawpy, linear 展開)
│   │   └── dng_pipeline.py     # DNG 輝度化(LSC 補正・portrait 化・Rec.709 輝度化)
│   ├── analysis/
│   │   ├── uniformity.py       # 照明均一性指標(CoV, 標準偏差, max/min, Rec.709 輝度)
│   │   ├── spatial.py          # 空間解析(ゾーン・中心周辺勾配・動径プロファイル・動径 min/max 比)
│   │   ├── registration.py     # 位相相関による並進位置合わせ
│   │   └── reproducibility.py  # 位置合わせ付き SSIM 再現性評価
│   ├── visualization/
│   │   └── plotter.py          # 輝度マップ・ヒストグラム・動径プロファイル・ゾーンマップ(Matplotlib)
│   └── export/
│       └── exporter.py         # CSV 出力・バッチ集計(csv, NumPy)
├── scripts/
│   ├── run_uniformity.py       # PNG 解析ランナー(単一画像/ディレクトリ一括)
│   ├── run_uniformity_dng.py   # DNG 解析ランナー
│   ├── select_roi.py           # 対話的 ROI 選択(OpenCV)
│   ├── viewer.py               # 結果ビューア(Streamlit)
│   └── compare_*.py / plot_radial_clean.py  # 報告書用の比較図・クリーン出力
├── tests/
├── config/
│   └── roi_config.json         # ROI 定義(キー: smtias.whiteboard 等)
├── data/                       # 入力画像(.gitignore 対象)
│   ├── smtias/{whiteboard,quantitative}/
│   └── tias/whiteboard/        # TIAS は今後取得(現状空)
└── output/                     # 解析結果(.gitignore 対象)
    ├── figures/
    └── results/

処理パイプライン (Processing Pipeline)

入力画像
  ├─ PNG → loader.py                     読み込み(OpenCV, BGR→RGB)+ ROI 抽出
  └─ DNG → dng_loader.py + dng_pipeline.py
                                         linear 展開・LSC 補正・portrait 化・Rec.709 輝度化 + ROI 抽出
  ↓  uniformity.py       輝度分布・均一性指標(CoV, 標準偏差, max/min)
  ↓  spatial.py          空間解析(ゾーン別統計・中心周辺比・勾配・動径プロファイル・動径 min/max 比)
  ↓  reproducibility.py  (バッチ時)位置合わせ付き SSIM による画像間再現性
  ↓  plotter.py          図生成(輝度マップ・ヒストグラム・動径プロファイル・ゾーンマップ)
  ↓  exporter.py         CSV 出力・バッチ集計

アルゴリズムの詳細は SPEC_02 照明均一性評価アルゴリズム,DNG 経路の詳細は TECH_01 DNG 対応要求仕様 を参照.

モジュール設計 (Module Design)

モジュール責務主な依存
config.pyROI 設定 JSON の読み込み(標準ライブラリ)
io/loader.pyPNG 読み込み・ROI 抽出OpenCV,NumPy
io/dng_loader.pyDNG(RAW_SENSOR) を linear で読み込みrawpy,NumPy
io/dng_pipeline.pyDNG の LSC 補正・portrait 化・Rec.709 輝度化NumPy(uniformity の係数を参照)
analysis/uniformity.py輝度変換・均一性指標(CoV,標準偏差,max/min)の算出NumPy
analysis/spatial.pyゾーン分割・中心周辺比・勾配・動径プロファイル・動径 min/max 比NumPy
analysis/registration.py位相相関による並進位置合わせ(サブピクセル)SciPy,NumPy
analysis/reproducibility.py位置合わせ付き SSIM の画像間再現性評価scikit-image,NumPy
visualization/plotter.py輝度マップ・ヒストグラム・動径プロファイル・ゾーンマップの生成Matplotlib
export/exporter.py数値結果を CSV 保存・バッチ集計csv,NumPy
scripts/run_uniformity.pyPNG 解析の実行(単一/一括)全モジュール
scripts/run_uniformity_dng.pyDNG 解析の実行全モジュール
scripts/select_roi.py対話的 ROI 選択OpenCV
scripts/viewer.py結果ビューアStreamlit,pandas,Pillow

入出力仕様 (I/O Specification)

入力 (Input)

  • 形式: PNG(8bit RGB, sRGB)/ DNG(RAW_SENSOR, 10bit Bayer → rawpy で linear 展開)
  • 配置: data/smtias/{whiteboard,quantitative}/data/tias/whiteboard/

出力 (Output)

  • output/figures/ — グラフ画像(PNG,論文掲載用)
  • output/results/ — 数値結果(CSV)

将来導入予定 (Planned)

  • 色再現性評価analysis/color.py): sRGB → CIE L*a*b* 変換・ΔE2000 計算による TIAS / SmTIAS の色差比較(現状未実装.要件は PLAN_01PLAN_02 ステップ 4)