本ドキュメントは MiniTias-Evaluation 側で TECH_05 DNG 対応要求仕様 の Phase 1(DNG 読み込み I/F)が完了したことの受領記録であり,併せて MiniTias-Evaluation 側から共有された 重要な設計判断・指摘事項 をまとめたものである.
C:\Users\user\source\MiniTias-Evaluation\)handoff_smtias_lightsim/(一時アーティファクト,取り込み完了後に削除)TECH_05 で要求した 6 Phase のうち,本受領時点で完了しているのは Phase 1(DNG 読み込み I/F)のみ.
| Phase | 内容 | 受領状態 |
|---|---|---|
| Phase 1 | DNG 読み込み I/F (dng_loader.py) | ✅ 完了(コピー対象) |
| Phase 2 | メタデータ JSON 読み込み I/F (metadata_loader.py) | ❌ 未実装 |
| Phase 3 | LSC マップ参照・hot pixel マスク | △ LSC 順適用はプロトタイプのみ(run_uniformity_dng.py 内) |
| Phase 4 | 既存パイプライン統合 | ❌ 未着手 |
| Phase 5 | PNG vs DNG 検証 | △ 別撮影での比較のみ実施(TEST_05) |
| Phase 6 | SPEC 更新 | ❌ 未着手 |
→ Phase 1 を SmTIAS-LightSim 側にコピーして統合する.Phase 2〜6 は SmTIAS-LightSim 側の必要性に応じて優先順位を判断する.
以下は実装の前提であり,TECH_05 要求仕様 の記述と食い違う点を含む.取り込み時に必ず反映すること.
apply_lsc_inverse は誤り| 項目 | TECH_05 当初の前提(誤り) | 実態(MiniTias-Evaluation 側が発見) |
|---|---|---|
| RAW_SENSOR DNG の状態 | LSC 補正済み | LSC 未補正 |
| rawpy の挙動 | LSC 自動適用 | LSC 適用しない(OpcodeList2 GainMap は無視) |
meta.json lscMap の位置付け | ISP 適用後の参考データ | 適用に使うべきマップ(順方向適用が正しい) |
| シェーディング除去方法 | image / interpolate(lscMap) で逆適用 | image × interpolate(lscMap) で順方向適用 |
→ TECH_05 の apply_lsc_inverse 関数仕様は 物理的に逆方向で誤り.正しくは apply_lsc_forward(順方向適用).TECH_05 をこの受領と同時に訂正する.
output_color=rawカラーマトリクスを通すとチャンネル混合で per-channel の比例が崩れる:
rgb_float32 / luma_float32: output_color=rawpy.ColorSpace.raw(カラーマトリクス非適用)rgb_uint8 のみ: output_color=rawpy.ColorSpace.sRGB(カラーマトリクス+ sRGB OETF 適用)これにより入射光量とセンサ信号の比例(放射輝度リニアリティ)を担保する.
PNG / preview と同じ portrait にするには numpy.rot90(image, -1) で回転:
output_color=raw のとき Rec.709 luma (R=0.2126, G=0.7152, B=0.0722) は 厳密な CIE 輝度ではなく,既存 PNG 経路と互換の固定加重輝度プロキシ.
Rec.709 係数を維持する理由:
uniformity.py の to_grayscale)との方法論的一貫性PNG(既存通常モード)は以下のため真のシーン linear を復元できない:
→ inverse-sRGB OETF を掛けても得られるのは「表示参照 linear」で,入射光量との比例性は復元できない.これが定量 DNG モード採用の根拠(詳細は TEST_05).
| コピー元(MiniTias-Evaluation) | コピー先(SmTIAS-LightSim) | 区分 |
|---|---|---|
src/io/dng_loader.py | src/sm_tias_lightsim/evaluation/dng_loader.py | ★ 正規コピー対象 |
scripts/run_uniformity_dng.py | (参考)cli/evaluate.py 等への統合参考 | LSC 順適用・向き合わせ・評価フローの参考 |
src/analysis/spatial.py の calc_radial_min_max_ratio | 既存 evaluation/radial.py または zones.py へ マージ(全体コピーは禁止) | 動径 min/max 比指標(追加指標) |
TECH_05 §SmTIAS-LightSim 側へのコピー手順 の指定通り:
"""DNG 読み込みモジュール. MiniTias-Evaluation/src/io/dng_loader.py を SmTIAS-LightSim にコピーしたもの. オリジナルは MiniTias-Evaluation 側で管理する.バグ修正・機能追加はそちらで行い, 本プロジェクトに反映する形を取る. """
spatial.py のマージ方針SmTIAS-LightSim 側の既存均一性コード(evaluation/zones.py の calc_zone_stats 等)と競合する関数が含まれるため,丸ごとコピーせず calc_radial_min_max_ratio のみマージする.
代表結果は 外乱光に汚染されていない「MiniTIAS の照明のみ」の撮影(MiniTIAS_QM_20260601_124500,室内灯 OFF).
評価条件: linear(output_color=raw)/ portrait / LSC 補正あり / 白板 ROI.
| 指標 | 値 |
|---|---|
| CoV | 0.0695 |
| max/min 比 | 1.617 |
| 中心/周辺比 | 1.0911 |
| 勾配 (%) | 8.35 |
| 動径 min/max 比 | 0.8600 |
→ 本値が 新しい正規実機ターゲット(TEST_01 Step 8-13 以降).従来の通常モード PNG 値(CoV=0.0427)は,sRGB ガンマでムラが圧縮された 過小評価値だったことが TEST_05 で確認された.
成果物(評価結果図・CSV・meta.json)は元ハンドオフパッケージ handoff_smtias_lightsim/results_dark_124500/ に同梱されていたが,S3(突合検証)段階で必要になった時点で再取得する.
本受領を起点に,SmTIAS-LightSim 側で以下の 3 サブタスクを順次実施する:
apply_lsc_inverse を apply_lsc_forward に訂正/implement)src/sm_tias_lightsim/evaluation/dng_loader.py 新規作成(MiniTias-Evaluation からコピー+冒頭注記)evaluation/radial.py または zones.py に calc_radial_min_max_ratio をマージpyproject.toml に rawpy>=0.21.0 追加/implement)cli/evaluate.py に DNG 入力経路追加(拡張子で自動判定)configs/eval_baseline_quantitative.yaml 新規作成S2 / S3 完了後に以下を確認:
MiniTIAS_QM_20260601_124500.dng) を読み込んで,§4 の表と同じ評価指標が出ることrawpy>=0.21.0