diff --git a/CLAUDE.md b/CLAUDE.md index 8675d45..aa5b1d1 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -68,7 +68,6 @@ ### 05_TECH(技術設計) - DNG 対応要求仕様: docs/05_TECH/TECH_01_DNG対応要求仕様.md -- SmTIAS-LightSim への引き継ぎ: docs/05_TECH/TECH_02_SmTIAS-LightSimへの引き継ぎ.md ### 07_REPORT(報告書) diff --git "a/docs/05_TECH/TECH_01_DNG\345\257\276\345\277\234\350\246\201\346\261\202\344\273\225\346\247\230.md" "b/docs/05_TECH/TECH_01_DNG\345\257\276\345\277\234\350\246\201\346\261\202\344\273\225\346\247\230.md" index a236bd1..ba776bc 100644 --- "a/docs/05_TECH/TECH_01_DNG\345\257\276\345\277\234\350\246\201\346\261\202\344\273\225\346\247\230.md" +++ "b/docs/05_TECH/TECH_01_DNG\345\257\276\345\277\234\350\246\201\346\261\202\344\273\225\346\247\230.md" @@ -2,7 +2,7 @@ > **本ドキュメントについて(取り込み注記)**: SmTIAS-LightSim プロジェクトから受領した DNG 対応要求仕様(先方での名称は TECH_05)を,本プロジェクトの命名規則(GUIDE_03)に従い取り込んだもの.文中の他ドキュメント参照(TECH_01/03/04・TEST_01・SPEC_04 等)は **SmTIAS-LightSim 側のドキュメント**を指し,本プロジェクト内には存在しない. > -> 本書は**要求の記録**である.実装の詳細(API・データ仕様・アルゴリズム)は [SPEC_01](../04_SPEC/SPEC_01_アーキテクチャ設計.md) / [SPEC_02](../04_SPEC/SPEC_02_照明均一性評価アルゴリズム.md),コピー向け要点は [TECH_02](TECH_02_SmTIAS-LightSimへの引き継ぎ.md),経緯の詳細は [PROGRESS.md](../PROGRESS.md) を参照.完了済みの実装計画(Phase 分割・検証手順 V1〜V4・Open Questions・関数シグネチャ案 等)は本整理で削除した(git 履歴に残る). +> 本書は**要求の記録**である.実装の詳細(API・データ仕様・アルゴリズム)は [SPEC_01](../04_SPEC/SPEC_01_アーキテクチャ設計.md) / [SPEC_02](../04_SPEC/SPEC_02_照明均一性評価アルゴリズム.md),経緯の詳細は [PROGRESS.md](../PROGRESS.md) を参照.完了済みの実装計画(Phase 分割・検証手順 V1〜V4・Open Questions・関数シグネチャ案 等)や SmTIAS-LightSim への引き継ぎ手順は本整理で削除した(git 履歴に残る). SmTIAS 側で実装された定量撮影モードの出力フォーマットが PNG から DNG (RAW_SENSOR) に変更されたことに伴い,SmTIAS-Evaluation 側にも DNG 読み込み・解析機能の追加を依頼したもの. @@ -74,7 +74,6 @@ ## 既存ドキュメントとの整合 (Cross-References) -- [TECH_02 SmTIAS-LightSim への引き継ぎ](TECH_02_SmTIAS-LightSimへの引き継ぎ.md) — コピー対象・設計判断・引き渡し評価値 - [TECH_01 定量撮影モード要求仕様](TECH_01_定量撮影モード要求仕様.md) — 撮影モード側の要求書(SmTIAS-LightSim 側) - [TECH_03 定量モード実装報告と SHADING_MODE 相談](TECH_03_定量モード実装報告とSHADING_MODE相談.md) — SmTIAS 側実装報告(meta.json スキーマ等) - [TECH_04 SmTIAS への回答](TECH_04_SmTIASへの回答.md) — SHADING_MODE 判断とフェーズ A/B 分割 diff --git "a/docs/05_TECH/TECH_02_SmTIAS-LightSim\343\201\270\343\201\256\345\274\225\343\201\215\347\266\231\343\201\216.md" "b/docs/05_TECH/TECH_02_SmTIAS-LightSim\343\201\270\343\201\256\345\274\225\343\201\215\347\266\231\343\201\216.md" deleted file mode 100644 index 53021a1..0000000 --- "a/docs/05_TECH/TECH_02_SmTIAS-LightSim\343\201\270\343\201\256\345\274\225\343\201\215\347\266\231\343\201\216.md" +++ /dev/null @@ -1,75 +0,0 @@ -# SmTIAS-LightSim への引き継ぎ (Hand-off to SmTIAS-LightSim) - -本ドキュメントは,SmTIAS-Evaluation で実装した **DNG 読み込み I/F** を SmTIAS-LightSim 側へコピー・統合するための引き継ぎ書である.要求仕様は [TECH_01](TECH_01_DNG対応要求仕様.md)(SmTIAS-LightSim 側での名称は TECH_05). - -## 1. 実装スコープ (What is done / not done) - -TECH_01 の Phase 分割のうち,本引き継ぎ時点で完了しているのは **Phase 1(DNG 読み込み I/F)のみ**. - -| TECH_01 Phase | 内容 | 状態 | -| --- | --- | --- | -| Phase 1 | DNG 読み込み I/F (`dng_loader.py`) | ✅ **完了**(コピー対象) | -| Phase 2 | メタデータ JSON 読み込み I/F (`metadata_loader.py`) | ❌ 未実装 | -| Phase 3 | LSC マップ参照・hot pixel マスク | △ LSC 順適用は `src/io/dng_pipeline.py`(`lsc_gain_rgb` / `dng_luminance`)に実装済み.hot pixel マスクは未実装 | -| Phase 4〜6 | 既存パイプライン統合 / PNG vs DNG / SPEC 更新 | ❌ 未着手 | - -## 2. コピー対象ファイル (Files to copy) - -| コピー元(SmTIAS-Evaluation) | コピー先(SmTIAS-LightSim) | 区分 | -| --- | --- | --- | -| `src/io/dng_loader.py` | `src/sm_tias_lightsim/evaluation/dng_loader.py` | ★ 正規コピー対象(DNG 低レベル読み込み) | -| `src/io/dng_pipeline.py` | `src/sm_tias_lightsim/evaluation/dng_pipeline.py` | ★ 正規コピー対象(LSC 順適用・portrait 化・Rec.709 輝度化) | -| `scripts/run_uniformity_dng.py` | (参考)`cli/` 等に統合 | 評価フロー(読み込み→ROI→指標→出力)の参考 | -| `src/analysis/spatial.py` の `calc_radial_min_max_ratio` | 既存 spatial/uniformity 相当へ**マージ** | 動径 min/max 比指標(追加指標) | - -- `dng_pipeline.py` は Rec.709 係数を `analysis/uniformity.py` から import している(コピー先では係数の出所を合わせること). - -- **ファイル先頭にコピー元を明記**(TECH_01 指定): - ```python - """DNG 読み込みモジュール. - - SmTIAS-Evaluation/src/io/dng_loader.py を SmTIAS-LightSim にコピーしたもの. - オリジナルは SmTIAS-Evaluation 側で管理する.バグ修正・機能追加はそちらで行い, - 本プロジェクトに反映する形を取る. - """ - ``` -- `spatial.py` は SmTIAS-LightSim 側の既存均一性コードと競合しうるため,**丸ごとコピーせず `calc_radial_min_max_ratio` のみマージ**すること. - -## 3. ★重要な設計判断・注意点(コピーだけでは伝わらない) - -以下は実装の前提であり,**TECH_01(要求仕様)の記述と食い違う点を含む**.必ず反映すること. - -1. **DNG は LSC 未補正 — `apply_lsc_inverse` は誤り**: RAW_SENSOR DNG はレンズシェーディング**未補正**(補正は DNG OpcodeList2 の GainMap / meta.json lscMap として付随するが rawpy は適用しない).TECH_01 の `apply_lsc_inverse`(「DNG=補正済み」前提で逆適用)は実態と逆.照明ムラを測るには **lscMap を順方向に適用**してレンズビネットを除去する(`image × interpolate(lscMap)`.実装: `dng_pipeline.lsc_gain_rgb` で補間ゲインを生成し `dng_luminance` で順適用). -2. **linear 系出力は `output_color=raw`**: カラーマトリクスを通すとチャンネル混合で per-channel 比例が崩れる.`rgb_float32`/`luma_float32` は `output_color=rawpy.ColorSpace.raw` で読む(`rgb_uint8` のみ sRGB).これにより入射光量とセンサ信号の比例(放射輝度リニアリティ)を担保. -3. **向き**: DNG はセンサ native が **landscape**.PNG/preview と同じ portrait にするには `rot90(-1)`(左右反転なし.フロントカメラ id=1 の preview はミラーされるが RAW はミラーされない). -4. **luma の Rec.709 は固定加重プロキシ**: `output_color=raw` では Rec.709 luma は厳密な CIE 輝度ではなく,既存 PNG 経路互換の固定加重. -5. **PNG は厳密に linear 化できない**: トーンカーブ・8bit・透過関数不明のため.DNG 採用の根拠([REPORT_02](../07_REPORT/REPORT_02_PNG_DNG評価比較報告書.md)). - -## 4. 引き渡す評価結果(暗闇=SmTIAS のみ) - -代表結果は **外乱光に汚染されていない「SmTIAS の照明のみ」の撮影**(`SmTIAS_QM_20260601_124500`,室内灯 OFF)を採用する.外乱光の有無で評価はほぼ変わらない([REPORT_03](../07_REPORT/REPORT_03_外乱光影響評価報告書.md))が,純粋な装置照明の均一性を代表させるため暗闇条件を選定. - -評価条件: linear(output_color=raw)/ portrait / LSC 補正あり / 白板 ROI. - -| 指標 | 値 | -| --- | --- | -| CoV | 0.0695 | -| max/min 比 | 1.617 | -| 中心/周辺比 | 1.0911 | -| 勾配 (%) | 8.35 | -| 動径 min/max 比 | 0.8600 | - -成果物(図・CSV)はハンドオフ束 `handoff_smtias_lightsim/results_dark_124500/` に同梱. - -## 5. コピー後の検証 (Verification — TECH_01 V4) - -- コピー後の SmTIAS-LightSim 側で**同じ DNG**(`SmTIAS_QM_20260601_124500.dng`)を読み込み,**上表と同じ評価指標**が出ること. -- SmTIAS-LightSim の既存テストが全合格すること. -- 依存追加: `rawpy>=0.21.0`. - -## 6. 参照 (References) - -- [TECH_01 DNG 対応要求仕様](TECH_01_DNG対応要求仕様.md) -- [REPORT_02 PNG/DNG 評価比較報告書](../07_REPORT/REPORT_02_PNG_DNG評価比較報告書.md) -- [REPORT_03 外乱光影響評価報告書](../07_REPORT/REPORT_03_外乱光影響評価報告書.md) -- 設計判断・経緯の詳細: `docs/PROGRESS.md`