MiniTIAS で撮影した白板画像の照明均一性を定量的に評価する.白板の白壁面領域の輝度分布を解析し,3 つの指標で均一性を定量化する.
RGB 画像を ITU-R BT.709(Rec.709)の輝度係数でグレースケールに変換する 1.
| 方法 | 定義 | 不採用の理由 |
|---|---|---|
| Rec.709(採用) | 上記の加重平均 | — |
| V チャネル(HSV) | max(R, G, B) | 白板では R≈G≈B のため差は小さいが,規格に基づかない |
| L*(CIE L*a*b*) | 非線形変換 | 物理的な照明ムラと比例せず,照明均一性評価には不適 |
Rec.709 は人間の視感度に基づく標準的な輝度定義であり,照明工学・画像評価の分野で広く使用されている 2.
ROI 内の全画素の輝度値から以下の 3 指標を算出する.
MiniTIAS の開口部に白板を取り付けて撮影する.ROI は白板の表面領域(中央の白い四角形)とする.以下を除外する:
scripts/select_roi.py で 1 枚の画像上に矩形を描いて座標を決定config/roi_config.json に保存python scripts/select_roi.py --image data/minitias/whiteboard/<画像ファイル名>.png --config config/roi_config.json --roi minitias.whiteboard
OpenCV のウィンドウが開くので,マウスで矩形を選択して Enter で確定する.ESC でキャンセル.
ROI 内の輝度の空間的な偏り(中心-周辺勾配)を定量化する.
各ピクセルについて,ROI 中心からの正規化楕円距離 d を算出する.
正規化距離の閾値で ROI を 3 つの同心楕円ゾーンに分割する.
| ゾーン | ラベル | 距離条件 |
|---|---|---|
| Center(中心) | 0 | d < 0.33 |
| Middle(中間) | 1 | $0.33 \leq d < 0.66$ |
| Periphery(周辺) | 2 | $0.66 \leq d$ |
閾値は正規化距離の三等分点に設定し,標準的な照明評価の領域分割に対応する.
各ゾーンの平均輝度 と標準偏差 を算出する(z \in {center, middle, periphery}$).
正規化距離を 20 等分のビンに分割し,各ビン内の平均輝度を集計する.中心から周辺にかけての輝度変化の傾向を連続的に把握できる.
スマートフォンの取り付け位置の微小なずれを補正し,照明パターンの真の再現性を評価するために,位相相関法による並進位置合わせを実装する 10.
2 枚の画像 f, g の並進シフト (dy, dx) を周波数領域で算出する.
scipy.fft.fft2)FFT のピーク位置は整数精度のみのため,ピーク周辺 3 点で放物線補間を行いサブピクセル精度を達成する.
FFT の周期境界による折り返しを補正するため,シフト量が画像サイズの半分を超える場合は反対方向として解釈する.
scipy.ndimage.shift(3 次スプライン補間,order=3,mode='constant',cval=0.0)でサブピクセルシフトを適用する.
シフトにより境界にゼロパディング領域が生じる.マスクで無効領域を除外し,有効領域のみで SSIM を算出することで境界の影響を排除する.
| シフト方向 | 無効領域 | ||
|---|---|---|---|
| 正(下・右) | 上端・左端 ,\lceil | dx | \rceil$ 行列 |
| 負(上・左) | 下端・右端 ,\lceil | dx | \rceil$ 行列 |
バッチ解析時に複数画像間の再現性を SSIM(Structural Similarity Index)で評価する 9.
2 枚の画像 x, y 間の構造的類似度を以下の式で算出する.
N 枚の輝度マップに対し,全 $\binom{N}{2}$ ペアの SSIM を算出する.集計統計として平均・最小・最大・標準偏差を報告する.
各ペアに対し,位置合わせなし SSIM と位置合わせ後 SSIM の両方を算出する(calc_pairwise_ssim_registered).
phase_correlate でシフト (dy, dx) を推定apply_shift でターゲット画像をシフトcompute_valid_mask で有効領域を限定副産物として各ペアのシフト量(ピクセル単位)を定量化し,取り付け位置ずれの統計量として報告する.
| SSIM | 解釈 |
|---|---|
| $\geq 0.99$ | 極めて高い再現性 |
| SSIM < 0.99$ | 高い再現性 |
| < 0.95 | 再現性に課題あり |
scripts/run_uniformity.py で白板画像を一括解析する.ROI 設定済みであること.
# ディレクトリ内の全画像を一括解析 python scripts/run_uniformity.py --image data/minitias/whiteboard/ --config config/roi_config.json --roi minitias.whiteboard # 単一画像の解析 python scripts/run_uniformity.py --image data/minitias/whiteboard/<画像ファイル名>.png --config config/roi_config.json --roi minitias.whiteboard
output/results/summary_uniformity.csv — 全画像の均一性指標一覧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 — ゾーンオーバーレイマップStreamlit ベースのビューアで解析結果を確認できる.
.venv\Scripts\streamlit run scripts/viewer.py
scripts/run_uniformity.py でバッチ解析が完了していることoutput/results/summary_uniformity.csv および output/figures/ に画像ファイルが存在すること照明均一性評価ではカラーキャリブレーションを行わない.輝度の相対的なばらつき(CoV 等)は画像内の比較であり,カメラの色特性のズレが全画素に等しく影響するため,指標の値に影響しない.