Newer
Older
SmTIAS-Evaluation / docs / PROGRESS.md

開発進捗ログ

  •  ステップ 2: SmTIAS 照明均一性評価 完了: 照明均一性の評価指標算出・可視化を実装し,REPORT_01(照明均一性評価報告書)を作成済み.次はステップ 3.

    • 注: 本エントリはテンプレート同期で PROGRESS.md を新設した際の移記ベースライン(詳細経緯は git log を参照).以降の進捗は本ファイル末尾に追記する.

  •  TECH_05 Phase 1: DNG 読み込み I/F + 動径 min/max 比指標: SmTIAS 定量モードの出力が PNG→DNG(RAW_SENSOR) に変わったため DNG 読み込み I/F(src/io/dng_loader.py)を新設.あわせて照明均一性に動径 min/max 比指標を追加.SmTIAS-LightSim へのコピー前提で再利用性重視.

    • 設計判断(線形性): linear 系出力は output_color=raw(カラーマトリクス非適用)とし,入射光量とセンサ信号の比例(放射輝度リニアリティ)を担保.カラーマトリクス経路はチャンネル混合で per-channel 比例が崩れるため不採用.luma は既存 PNG 経路互換のため Rec.709 維持(raw 経路では厳密な CIE 輝度でなく固定加重プロキシ).
    • 重要な発見(仕様との食い違い): RAW_SENSOR DNG はレンズシェーディング未補正(補正は DNG の OpcodeList2 GainMap・meta.json lscMap として付随するが rawpy は適用しない/lscMap ゲインは 1〜5).TECH_05 の apply_lsc_inverse は「DNG=補正済み」前提だが実際は未補正.照明ムラを測るには lscMap を順方向適用してレンズビネットを除去する向きで Phase 3 を設計すること.LSC 順適用で白板 ROI の CoV は約半減を実測.
    • 向き: DNG はセンサ native が landscape,PNG/preview は portrait.PNG と揃えるには rot90(-1)(左右反転なし).フロントカメラ(id=1) の preview はミラーされるが RAW はミラーされないため反転不要(ラベル位置で確認).
    • PNG vs DNG 比較の注意: 違いはスケール(0-1/0-255)でなくドメイン(PNG=sRGB / DNG=linear).CoV 等はスケール不変なので,公平比較には PNG を inverse-sRGB で linear 化する必要がある.
    • 動径 min/max 比: 画素単位 max/min は外れ画素に弱いため,20点輪帯平均の min/max をロバスト指標として追加.
    • 後段(未着手): TECH_05 Phase 4(既存パイプライン統合)/ Phase 5(PNG vs DNG,撮影フレーミング差への ROI 対応)/ Phase 6(SPEC_01/02 更新)/ ビューア(viewer.py) の DNG 対応.SPEC のフル更新は TECH_05 Phase 6 に委ねる.scripts/run_uniformity_dng.py は PNG 版の DNG 対応ランナーとして暫定追加(共通化は将来).

  •  リリース準備: SmTIAS へ全面改名 + 共通化リファクタ + ドキュメント整理: 新バージョンのタグ付けに向けて以下を実施.

    • 改名: プロジェクト/デバイス名を MiniTIAS → SmTIAS に全面統一(pyproject.toml,ROI キー smtias.whiteboard,docs/scripts/tests/src,GitHub リポジトリ名 SmTIAS-Evaluation,data/・output/ の実データ/成果物ファイル名).参照コピー MiniTias/(外部リポジトリ)は対象外.
    • リファクタ(共通化): 重複していた load_roi_config を src/config.py に集約.run_uniformity_dng.py 内の DNG 輝度化パイプライン(dng_luminance/lsc_gain_rgb/_upsample)を src/io/dng_pipeline.py に移設し,compare 系・plot 系スクリプトが「スクリプト間 import」をやめて src/ から取得するように変更(上記「共通化は将来」を解消).dng_loader.py の Rec.709 係数重複は SmTIAS-LightSim への単体コピー前提のため意図的に据え置き.
    • ドキュメント: ルート README.md を新設.CLAUDE.md にプロジェクト概要と SPEC_02 索引を追加.TECH_01 のローカル TECH_02 リンク切れを修正.
    • 検証: pytest 381 passed,主要スクリプト(run/plot/compare 各種)の smoke test も成功(指標値は改名前と一致).

  •  単灯照明の切り分け評価 + output 構造のデバイス別整理(2026-06-23): 下・左・右の 3 灯を 1 灯ずつ単独点灯(他 2 灯を黒テープで遮光)して白板を撮影し,各灯単体の照射偏り・均一性を評価.3 灯合成均一性の根拠(相補配置)を確認した.

    • 対象データ: data/smtias/quantitative/SmTIAS_QM_20260615_{141420=下,150300=左,170948=右}.各 DNG を run_uniformity_dng.py(linear+LSC,ROI=smtias.whiteboard)で評価.
    • 命名判断: 取り込み時のファイル名は MiniTIAS_QM_* だが,既存 QM 規約に統一して SmTIAS_QM_<timestamp> へリネーム.LED 条件(下/左/右)はファイル名に含めず報告書側で管理する方針(ユーザー選択).
    • 失敗と対処(写り込み): 右のみ初回 170358 は ROI 内に黒テープが写り込み,最小輝度 2.89・max/min≈27.7 と min 依存指標が無効化.撮り直し版 170948(min 46.0・max/min 1.66)に差し替え,初回分はデータ・結果とも削除.→ 撮影時はフレーム外で遮光する運用を徹底.
    • 結果: 明るさ・均一性とも 右 > 左 > 下(mean 63.6/61.5/57.8,CoV 0.062/0.086/0.070).各灯は異なる方向(像面で下=上側/左=右寄り/右=中央〜左寄り;プレビューは鏡像で像面右=実空間左)を強く照らし,互いの暗部を補完する相補配置.合成均一性の弱点は下灯側.
    • 新規スクリプト: scripts/compare_single_leds.py(3 単灯を共通絶対カラースケールで並置+動径プロファイル重ね描き+指標表,出力 output/smtias/figures/compare_single_leds.png).スケールは外れ値に強い p1–p99 で決定.
    • 報告書: docs/06_TEST/TEST_04_単灯照明比較評価報告書.md を作成し CLAUDE.md 索引に追記.
    • output 構造の整理(再発防止込み): 混在していた output/figures・output/results をデバイス別へ集約 → output/smtias/{figures,results}(SmTIAS 全成果物)/output/compare/(smtias↔tias 横断比較)/output/tias_dfk23*(既存).さらに figures 内で非 QM(PNG 白板 SmTIAS_20260408_* セット)を output/smtias/figures/whiteboard/ サブフォルダへ分離.
    • スクリプト追従: 再実行で散らからないよう出力先を更新.compare 系のハードコード OUTPUT_PATH を新構造へ(ambient/png_dng→output/smtias/figures/,smtias_tias→output/compare/)+ mkdir(parents=True) を追加.run_uniformity*.py・plot_radial_clean.py の --output 既定を output/ → output/smtias/ に変更(TIAS は従来どおり --output 明示で分離).compare_png_dng_slide.py の mkdir 重複も解消.pytest は 381 passed のまま(テストは tmp_path 依存でパス変更の影響なし).
    • 未着手(保留): output/smtias/results/ 側は非 QM/summary を whiteboard/ 配下へ分離する整理が未対応(figures のみ実施).3 灯合成の実測 vs 単灯加算(下+左+右)の検証も今後の課題(TEST_04 限界節).

  •  後側ロフト w=1.4 筐体の実機評価(2026-07-27): 後側筐体のみロフト 1.4 版(SmTIAS-LightSim 後側_w1p4.stl,下側フレア部が最大約 10 mm 膨張・キャビティ +6.3%)に交換した SmTIAS 001 を白板撮影で評価.従来筐体の後側ロフトは 0.5(比較の基準).全灯×2(汚れあり/清掃後)+単灯 3 枚を取得し,TEST_10(シミュ)の実機検証と TEST_04 限界節の「実測 vs 単灯加算」検証を実施.報告書 docs/06_TEST/TEST_05_後側ロフトw1p4実機評価報告書.md.

    • 対象データ: data/smtias/quantitative/SmTIAS_QM_20260726_183416(全灯・汚れあり)/20260727_{124257=全灯清掃後,134105=下,134853=左,140129=右}.取り込み名 MiniTIAS_QM_* は既存規約どおり SmTIAS_QM_* へリネーム(LED 条件はファイル名に含めず報告書側で管理).
    • 結果(全灯): CoV 0.0695(従来筐体 0601_124500)→ 0.0617(w1p4 清掃後)と同等〜微改善.標準偏差はほぼ同一で改善は平均輝度 +13% による.TEST_10 のシミュ予測「均一性・形はほぼ不変」を実機で支持.白板清掃で CoV 0.0639→0.0617(汚れ由来の暗点 2 つが消失).
    • 結果(単灯): 明るさ順が 下 81.2 > 左 75.2 > 右 71.3 と TEST_04(右>左>下)から逆転.増分は下 +41% > 左 +22% > 右 +12% で変形部位(下側)に近いほど大きく筐体効果として整合的.ただし撮影条件差との切り分けは残課題.
    • 結果(加算検証): 全灯実測 ≈ 単灯加算が成立(実測/加算 比: 平均 1.031,p5,p95=0.994,1.065,CoV は両者 0.062 で一致).3 灯相補仮説を定量的に裏付け.比マップは中心 <1・周辺 >1 の緩い構造(遮光テープの内面反射喪失 or 光量ドリフト,未分離).
    • 失敗の再発(写り込み): 下のみ 134105 の ROI 下端(y≈1391–1408, x≈68–611, 面積比 0.14%)に遮光テープが写り込み min 依存指標が無効化(max/min 11.5).写り込み行除外の参考値 CoV 0.0576・max/min 1.560 を報告書に併記.TEST_04 で提起した「フレーム外で遮光」運用が徹底されず → SPEC_03 への手順明文化を推奨として記載.
    • スクリプト: compare_single_leds.py を CLI 引数化(--bottom/--left/--right/--output/--title-suffix,既定値は従来撮影で挙動不変).compare_composite_vs_sum.py を新規追加(実測/加算の共通スケール並置+比マップ+動径重ね描き+指標表).出力は compare_single_leds_w1p4.png・compare_composite_vs_sum_w1p4.png.
    • 筐体直接比較(w0.5 vs w1.4,追加実施): compare_loft_housings.py を新規追加し,全灯(比マップ付き)と単灯(2×3 並置+動径重ね描き 6 本)を筐体間で直接比較.画素比 w1.4/w0.5 は中央値 1.131・p5,p95=1.090,1.172 で,増光は像面上側の暗部で最大(+15〜17%)・中心明部で最小(+9%).暗部の選択的持ち上げが CoV 微改善の実体と判明.出力 compare_loft_housings_{all,singles}.png.