@rintoHasegawa rintoHasegawa authored on 2 Jun
.claude [update] テンプレートを sync-template SHA 5fc4843 に同期 5 months ago
.vscode [add] .vscode/settings.json を追加(Pylance / Ruff / pytest 設定) 5 months ago
configs [add] TECH_07 LSC 取り扱い方針 + Step C' 新規 baseline config — 3 プロジェクト (MiniTias / MiniTias-Evaluation / SmTIAS-LightSim) における LSC 取り扱いの設計判断を一元化 docs/05_TECH/TECH_07 として明文化.結論: SmTIAS-LightSim はシミュ側で LSC を一切扱わない (Mitsuba orthographic が LSC 完璧補正後相当という物理的根拠).3 プロジェクト役割分担を 1 表で明確化: MiniTias=SHADING_MODE=HIGH_QUALITY 撮影 + lscMap 保存 / MiniTias-Evaluation=lscMap 順方向適用で評価 / SmTIAS-LightSim=一切扱わない.検討した代替案 3 つすべて却下と理由を明文化: (A) シミュに LSC モデル化追加 → overfitting リスク + 実機側改善で目的達成済 / (B) perspective+thinlens で物理 cos⁴ → lscMap で割り戻すと結局 orthographic と等価で得るものなし / (C) ISP 補正残差を物理導出 → メーカー非公開で不可能.フォールバック条件 C1-C3 (SHADING_OFF 撮影) を TECH_04 から再掲.過去 TEST_03 「LSC モデル化が唯一の道」の前提変更 (当時は実機側を改善しない前提) を明示.過去 Step 8 残差 2.1× の解釈見直し (PNG sRGB ガンマ圧縮による楽観値,真の linear 比較では 2.66× 程度) を明記.Step C' として configs/eval_baseline_dng_target.yaml 新規作成 (eval_baseline_linear.yaml ベースで target_mean=207.82, metrics.radial_min_max=true,過去 Step 8-1〜8-12 評価 config 群と並列で Step 8-13 評価条件固定化).動作確認で既存シミュ baseline (output/baseline/luminance.npy) を新 config で評価し,Step 8-13 数値が判明: シミュ CoV=0.1826 / 勾配=24.65% / 中心/周辺=1.3271 / 動径 min/max=0.6151.実機 DNG+LSC (CoV=0.0695 / 勾配=8.35% / C/P=1.0911 / 動径 min/max=0.860) と比較して残差 2.63× (TECH_06 で予想した 2.66× とほぼ一致.LSC 由来ではない別要因 = 物理モデル誤差等).LSC 取り扱いは本コミットで決着,残差 2.63× は別問題として今後の課題に.handoff_smtias_lightsim/ ディレクトリは S3 全体完了 (Step 8-13 TEST_01 記録) 後に削除予定で本コミットには含めない.CLAUDE.md 進捗欄に Step C' 完了・Step 8-13 数値・TECH_07 への参照を追記 4 months ago
docs [add] TECH_10 残差主因候補の網羅整理 と Step 8-14 候補 γ D1 ROI 整合検証 — 物理 ROI 差 < 1% でクリア,主因から除外 4 months ago
scripts [add] Step 8-11: データシート準拠の照明モデル統合 — configs/scene_baseline_datasheet.yaml 並列保持.LP-2835D90VW 規格値 (Φv 17.5 lm, LER 280 lm/W) から I_0=0.021951 W/sr を導出,同等品 SMD 2835 の典型配光 cos^1.2 を spot で表現 (cutoff=85°/beam=26.72°, FWHM 111.72°),反射率を Step 8-6 で導出した物理整合点 0.89 に変更.結果は Step 8-10 と Step 8-9 の中間値 (CoV 0.183, 勾配 26.79%, C/P 1.366).形は依然 Y 軸単調勾配で構造的変化なし.データシート従順度を上げても形は実機に近づかないことを確定.本筋 LSC が依然必要.SPEC_03 データシート従順版節・TEST_01 Step 8-11・TEST_02 索引・TEST_03 観察事実・CLAUDE.md を更新 4 months ago
src/ sm_tias_lightsim [add] S3 Step D sm-evaluate に動径 min/max 比を統合 — S3 方針見直し: 「sm-evaluate に DNG 入力経路を追加」当初案は不採用 (実機 DNG 評価は MiniTias-Evaluation の本業で完結.SmTIAS-LightSim 側で重複実装する必要なし).S3 を 3 項目に絞り込み: Step D (sm-evaluate に動径 min/max 比統合) + Step C' (新規シミュ baseline config 作成) + Step G (シミュ再評価 → Step 8-13 として TEST_01 記録).本コミットは Step D.MetricsConfig.radial_min_max: bool = False をスキーマ追加 (schema.py),cli/evaluate.py で _run_radial_min_max() 関数追加・main() 内で算出ステップ統合・_print_summary に代表 2 行追加.radial_profile を再利用 (重複算出回避),未算出時 (radial_profile: false) は関数内部で calc_radial_profile を呼んで自力算出 → 独立有効化可能.metrics.radial_min_max: true 時に metrics.csv 末尾に 4 列 (radial_min_max_ratio / radial_min_distance / radial_min / radial_max) を追加,既存列順序は不変で後方互換維持.既定 False で既存 3 configs (eval_baseline.yaml / eval_baseline_linear.yaml / eval_real.yaml) は無修正で動作.新規テスト 39 件追加 (tests/scene/test_metrics_radial_min_max_schema.py 250 行: A1-A4 スキーマ仕様 + tests/cli/test_evaluate_radial_min_max.py 740 行: B1-B5 関数仕様 + C1-C5 CLI 統合 + D2 slow 統合).既存 569 + 新規 39 = 608 件全通過.Refactorer 判断: プロダクションコード変更なし (既存パターン一貫性あり),テストコードのみ軽微な lint 修正 (未使用 import 削除・I001/E501).SPEC_04 §動径 min/max 比 (オプション) セクション新規追加 (4 列出力・nan 除外・独立有効化の仕様明記.evaluation/radial.py:calc_radial_min_max_ratio は MiniTias-Evaluation src/analysis/spatial.py からのマージと明記).CLAUDE.md 進捗欄に S3 方針見直しと Step D 完了 (608 件全通過) を追記.handoff_smtias_lightsim/ ディレクトリは S3 全体完了後に削除予定で本コミットには含めない.次フェーズ: Step C' (configs/eval_baseline_dng_target.yaml 作成: 既存 eval_baseline_linear.yaml ベース,target_mean=207.82,radial_min_max=true) → Step G (Step 8-13 計測) 4 months ago
tests [add] S3 Step D sm-evaluate に動径 min/max 比を統合 — S3 方針見直し: 「sm-evaluate に DNG 入力経路を追加」当初案は不採用 (実機 DNG 評価は MiniTias-Evaluation の本業で完結.SmTIAS-LightSim 側で重複実装する必要なし).S3 を 3 項目に絞り込み: Step D (sm-evaluate に動径 min/max 比統合) + Step C' (新規シミュ baseline config 作成) + Step G (シミュ再評価 → Step 8-13 として TEST_01 記録).本コミットは Step D.MetricsConfig.radial_min_max: bool = False をスキーマ追加 (schema.py),cli/evaluate.py で _run_radial_min_max() 関数追加・main() 内で算出ステップ統合・_print_summary に代表 2 行追加.radial_profile を再利用 (重複算出回避),未算出時 (radial_profile: false) は関数内部で calc_radial_profile を呼んで自力算出 → 独立有効化可能.metrics.radial_min_max: true 時に metrics.csv 末尾に 4 列 (radial_min_max_ratio / radial_min_distance / radial_min / radial_max) を追加,既存列順序は不変で後方互換維持.既定 False で既存 3 configs (eval_baseline.yaml / eval_baseline_linear.yaml / eval_real.yaml) は無修正で動作.新規テスト 39 件追加 (tests/scene/test_metrics_radial_min_max_schema.py 250 行: A1-A4 スキーマ仕様 + tests/cli/test_evaluate_radial_min_max.py 740 行: B1-B5 関数仕様 + C1-C5 CLI 統合 + D2 slow 統合).既存 569 + 新規 39 = 608 件全通過.Refactorer 判断: プロダクションコード変更なし (既存パターン一貫性あり),テストコードのみ軽微な lint 修正 (未使用 import 削除・I001/E501).SPEC_04 §動径 min/max 比 (オプション) セクション新規追加 (4 列出力・nan 除外・独立有効化の仕様明記.evaluation/radial.py:calc_radial_min_max_ratio は MiniTias-Evaluation src/analysis/spatial.py からのマージと明記).CLAUDE.md 進捗欄に S3 方針見直しと Step D 完了 (608 件全通過) を追記.handoff_smtias_lightsim/ ディレクトリは S3 全体完了後に削除予定で本コミットには含めない.次フェーズ: Step C' (configs/eval_baseline_dng_target.yaml 作成: 既存 eval_baseline_linear.yaml ベース,target_mean=207.82,radial_min_max=true) → Step G (Step 8-13 計測) 4 months ago
.gitattributes [add] テンプレートの初回同期(設定ファイル・GUIDE ドキュメント追加) 5 months ago
.gitignore [add] 輝度マップ形状の追跡を TEST_01 に導入 — 比較パネル生成スクリプト scripts/build_luminance_evolution_panel.py 追加、全 7 改善ステップ (8-1〜8-7) で「形」は不変 (Y 軸単調勾配のまま) との発見を新セクションに記述、LSC モデル化の構造的意義を「数値 + 形」の 2 軸で再認識、生成 png は再生成可能のため .gitignore で追跡しない 4 months ago
.python-version [add] uv + Mitsuba 3 環境構築と関連ドキュメントを更新 5 months ago
CLAUDE.md [add] TECH_10 残差主因候補の網羅整理 と Step 8-14 候補 γ D1 ROI 整合検証 — 物理 ROI 差 < 1% でクリア,主因から除外 4 months ago
pyproject.toml [add] S2 DNG ローダと新指標を MiniTias-Evaluation からコピー — evaluation/dng_loader.py 新規 (handoff_smtias_lightsim/src/dng_loader.py の完全コピー+ docstring 差替: rawpy で 10-bit BGGR Bayer 展開・output_color=raw で linear カラーマトリクス非適用・gamma=(1,1)+no_auto_bright+use_camera_wb=False+user_wb=[1,1,1,1] で linear raw 保持・output_format rgb_float32/luma_float32/rgb_uint8 切替・Rec.709 luma は output_color=raw 時の固定加重プロキシで既存 PNG 経路と互換).evaluation/radial.py に calc_radial_min_max_ratio をマージ追加 (MiniTias-Evaluation の src/analysis/spatial.py から.動径 min/max 比 = 20 点輪帯平均の min/max で 1.0 で均一.画素単位 max/min よりノイズロバスト.nan ビン除外を移植時補強).pyproject.toml + uv.lock に rawpy>=0.21.0 追加 (実 rawpy==0.27.0).新規テスト 32 件 (tests/evaluation/test_dng_loader.py 341 行) で仕様 A1-D 全項目カバー.既存 537 + 新規 32 = 569 件全通過 (slow 除外).検証 V4 完全合格: 実 DNG (reference_measurement/quantitative/MiniTIAS_QM_20260601_124500.dng, 16MB, 暗闇撮影) を LSC 順方向適用 + portrait 向き合わせ (rot90 -1) + 白板 ROI で評価し,CoV/std/max-min/mean/max/min 6 件が相対誤差 < 1e-6 で MiniTias-Evaluation 期待値完全一致.中心/周辺比 1.0911 vs 1.091143・勾配 8.35 vs 8.352987・動径 min/max 0.8600 vs 0.859962 も絶対誤差 < 0.003.Refactorer 判断: _apply_srgb_oetf は既存 evaluation/oetf.py:apply_srgb_oetf と実装重複だがコピー方針優先で放置 (3 箇所以上の違反基準未満・用途異なる).副次変更: roi.py / test_oetf.py / test_visualize.py の軽微な lint 修正.handoff_smtias_lightsim/ ディレクトリは S3 完了後に削除予定で本コミットには含めない.CLAUDE.md 実装済みモジュール一覧に dng_loader.py と radial.py の calc_radial_min_max_ratio 追記+進捗欄に S2 完了 (V4 完全一致含む) を追記 4 months ago
uv.lock [add] S2 DNG ローダと新指標を MiniTias-Evaluation からコピー — evaluation/dng_loader.py 新規 (handoff_smtias_lightsim/src/dng_loader.py の完全コピー+ docstring 差替: rawpy で 10-bit BGGR Bayer 展開・output_color=raw で linear カラーマトリクス非適用・gamma=(1,1)+no_auto_bright+use_camera_wb=False+user_wb=[1,1,1,1] で linear raw 保持・output_format rgb_float32/luma_float32/rgb_uint8 切替・Rec.709 luma は output_color=raw 時の固定加重プロキシで既存 PNG 経路と互換).evaluation/radial.py に calc_radial_min_max_ratio をマージ追加 (MiniTias-Evaluation の src/analysis/spatial.py から.動径 min/max 比 = 20 点輪帯平均の min/max で 1.0 で均一.画素単位 max/min よりノイズロバスト.nan ビン除外を移植時補強).pyproject.toml + uv.lock に rawpy>=0.21.0 追加 (実 rawpy==0.27.0).新規テスト 32 件 (tests/evaluation/test_dng_loader.py 341 行) で仕様 A1-D 全項目カバー.既存 537 + 新規 32 = 569 件全通過 (slow 除外).検証 V4 完全合格: 実 DNG (reference_measurement/quantitative/MiniTIAS_QM_20260601_124500.dng, 16MB, 暗闇撮影) を LSC 順方向適用 + portrait 向き合わせ (rot90 -1) + 白板 ROI で評価し,CoV/std/max-min/mean/max/min 6 件が相対誤差 < 1e-6 で MiniTias-Evaluation 期待値完全一致.中心/周辺比 1.0911 vs 1.091143・勾配 8.35 vs 8.352987・動径 min/max 0.8600 vs 0.859962 も絶対誤差 < 0.003.Refactorer 判断: _apply_srgb_oetf は既存 evaluation/oetf.py:apply_srgb_oetf と実装重複だがコピー方針優先で放置 (3 箇所以上の違反基準未満・用途異なる).副次変更: roi.py / test_oetf.py / test_visualize.py の軽微な lint 修正.handoff_smtias_lightsim/ ディレクトリは S3 完了後に削除予定で本コミットには含めない.CLAUDE.md 実装済みモジュール一覧に dng_loader.py と radial.py の calc_radial_min_max_ratio 追記+進捗欄に S2 完了 (V4 完全一致含む) を追記 4 months ago