# PNG / DNG 照明均一性評価 比較 (PNG vs DNG Uniformity Evaluation Comparison)

> **注**: 本ファイルは MiniTias-Evaluation で作成された [REPORT_02 PNG/DNG 評価比較報告書](https://github.com/rintoHasegawa/MiniTias-Evaluation) を SmTIAS-LightSim 側に取り込んだスナップショット．本文中で参照される他の MiniTias-Evaluation 側ドキュメント (REPORT_01, PROGRESS.md 等) のリンクは **MiniTias-Evaluation リポジトリ起点**で，SmTIAS-LightSim 側からは到達しない（リンク切れは許容）．取り込みの位置付けは [TECH_06 MiniTias-Evaluation 引き継ぎ受領](../05_TECH/TECH_06_MiniTias-Evaluation引き継ぎ受領.md) を参照．

## 概要 (Overview)

MiniTIAS 撮影アプリの定量撮影モードの出力フォーマットが **PNG から DNG (RAW_SENSOR) に変更**された（[TECH_01 (Evaluation 側) / TECH_05 (SmTIAS-LightSim 側)](../05_TECH/TECH_05_MiniTiasEvaluation_DNG対応要求仕様.md)）ことに伴い，照明均一性評価の結果が PNG 経路と DNG 経路でどのように変わるかを比較した．

結論を先に述べると，**PNG→DNG は単なるファイル形式の変更ではなく，「何を測っているか」が変わる**．PNG は sRGB エンコード済み・端末 ISP でレンズシェーディング補正済みの「処理後」データであり，DNG は linear・補正前の「物理生信号」である．このため評価指標の数値は大きく変化する．

## 前提・対象データ (Scope and Samples)

| 項目 | 内容 |
| --- | --- |
| PNG サンプル | `data/minitias/whiteboard/MiniTIAS_20260408_140317.png`（2026-04-08 撮影） |
| DNG サンプル | `data/minitias/quantitative/MiniTIAS_QM_20260601_102753.dng`（2026-06-01 撮影，SH-02M 定量モード） |
| 評価領域 (ROI) | `config/roi_config.json` の `minitias.whiteboard`（白板中央，全条件で同一） |
| 向き | portrait に統一（DNG は landscape native のため `rot90(-1)` で PNG と整合） |
| 評価指標 | CoV / max-min比 / 中心-周辺比 / 勾配 / 動径 min/max 比（20点輪帯平均の最小/最大） |

> **重要な前提（本報告書の限界）**: PNG（4月）と DNG（6月）は**別セッションの撮影でフレーミングが異なる**．したがって TECH_05 の検証 V1 が要求する「同一シーンを PNG/DNG で連続撮影した厳密な対照比較」**ではない**．**評価手法・ドメインの違いが指標に与える影響**を既存サンプルで定量的に示すものである．厳密な同一シーン比較は今後の課題（後述）．

## 評価条件（ドメイン）の違い (Domain Differences)

PNG 経路と DNG 経路は，評価に入る前の信号の性質が根本的に異なる．

| 観点 | PNG（従来） | DNG（新規・定量モード） |
| --- | --- | --- |
| 信号ドメイン | **sRGB**（OETF/ガンマ適用済み） | **linear**（TONEMAP=CONTRAST_CURVE_LINEAR，OETF 未適用） |
| レンズシェーディング | **端末 ISP で補正済み**（SHADING_MODE=HIGH_QUALITY が YUV/JPEG に適用） | **未補正**（RAW_SENSOR は ISP 前．補正は DNG OpcodeList2 の GainMap / meta.json の lscMap として付随するのみ） |
| ビット深度 | 8bit | 10bit |
| 入射光量との関係 | ガンマで非線形 | **比例（放射輝度リニア）** |

→ つまり PNG をそのまま評価した「従来値」と，DNG を物理的に正しく評価した値は，**同じものを測っていない**．公平に比較するにはドメインを揃える必要がある．

## 結果比較 (Results)

同一 ROI で算出した均一性指標（数値が大きいほどムラが大きい．動径 min/max のみ 1.0 に近いほど均一）：

| 条件 | CoV | max/min | 中心/周辺比 | 勾配(%) | 動径 min/max |
| --- | --- | --- | --- | --- | --- |
| **PNG sRGB（従来評価）** | 0.0423 | 1.387 | 1.066 | 6.23 | 0.8964 |
| PNG 擬似linear化（inverse-sRGB 仮定）※ | 0.0901 | 2.031 | 1.148 | 12.88 | 0.7902 |
| DNG linear（LSC 補正なし） | 0.1477 | 2.287 | 1.456 | 31.33 | 0.5304 |
| **DNG linear（LSC 補正あり）** | 0.0689 | 1.641 | 1.095 | 8.69 | 0.8533 |

> ※ **「PNG 擬似linear化」は近似であり，真のシーン linear（入射光量比例）ではない**．詳細は考察「4. PNG は厳密には linear 化できない」を参照．

## 考察：なぜ結果が変わるのか (Analysis)

数値変化は主に3つの要因に分解できる．

### 1. ドメイン（sRGB ガンマ）の影響 — 最大の要因

同じ PNG データでも，**sRGB のまま（CoV 0.0423）か擬似linear化（CoV 0.0901）かで CoV が約2倍**変わる（撮影は同一，ドメインのみ変更）．sRGB の OETF は暗部を持ち上げ明部を圧縮するため，**ムラを実際より穏やかに見せる**．従来の PNG 評価値（CoV 0.042）は，このガンマ圧縮により**楽観的に小さく出ていた**．

なお CoV・max/min・動径比は**スケール不変**なので，0〜255 と 0〜1 のスケール差では変わらない．変化はあくまでドメイン（ガンマ）によるもの．

### 2. レンズシェーディング補正の有無

DNG raw は未補正のため，**レンズビネット（端ほど暗い）が指標に混入**する．LSC 補正なしの DNG は中心/周辺比 1.456・勾配 31.3%・動径 min/max 0.530 と大きなムラを示すが，これは**照明ムラではなくレンズ特性**を多く含む．lscMap を順方向適用してレンズビネットを除去すると，中心/周辺比 1.456→1.095，勾配 31.3%→8.7%，動径 min/max 0.530→0.853 と**劇的に平坦化**する（残りが照明そのもののムラ）．

### 3. 撮影セッションの違い

PNG（4月）と DNG（6月）は別撮影で，照明配置・フレーミング・距離が異なる．この差も数値に含まれるため，厳密な大小比較はできない（前提参照）．

### 4. PNG は厳密には linear 化できない（重要な限界）

上表の「PNG 擬似linear化」は inverse-sRGB OETF を掛けたものだが，これは**真のシーン linear（入射光量比例）を復元しない**．理由：

- **透過関数が不明**: 本サンプル PNG は ICC プロファイル・gAMA・EXIF を一切持たず，**sRGB である保証すらない**（sRGB と仮定して逆変換しているだけ）．
- **トーンカーブが残る（最大の壁）**: 端末 PNG は `linear生信号 →[WB・カラー行列・レンズ補正・トーンカーブ・NR・シャープ化]→ 表示RGB → sRGB符号化 → 8bit` を経る．inverse-sRGB が戻せるのは最後の符号化だけで，得られるのは「**表示参照 linear**」．間のトーンカーブ（端末固有・非公開のコントラスト曲線）は焼き込まれたままで，入射光量には比例しない．
- **不可逆な損失**: 8bit 量子化（暗部の段差が逆ガンマで増幅）・クリップ（白飛び/黒潰れ）は復元不能．

→ つまり **PNG は確実には linear 化できない**．これこそが定量 DNG モード採用の理由（TECH_05 背景「実機 PNG 自体が定量データとして揺らぐ」）であり，DNG (RAW_SENSOR, TONEMAP=CONTRAST_CURVE_LINEAR) は最初から真のシーン linear を出すことでこの問題を回避する．

### 公平な比較（ドメインを揃える，ただし近似）

両者を linear ドメインに寄せると比較の目安は得られる（PNG は上記の通り**擬似linear＝近似**である点に注意）：

- **PNG 擬似linear化: CoV 0.0901**（近似） vs **DNG linear+LSC: CoV 0.0689**（真の linear）
- → 目安としては **DNG（LSC補正）の方が均一**．従来の「PNG 0.042 < DNG 0.069 で DNG が悪い」という見え方は，sRGB ガンマが PNG のムラを圧縮していた錯覚．
- ただし PNG 側が近似である以上この比較は厳密ではなく，**確実な比較には同一シーンを DNG で撮影することが必要**（後述 残課題）．

## 結論と推奨 (Conclusion)

1. **PNG→DNG の移行で評価値が変わるのは正常**．主因は形式ではなく，sRGB→linear のドメイン変化とレンズシェーディング補正の有無．
2. **物理的に正しい照明均一性評価は DNG linear + LSC 補正経路**で行うべき．入射光量に比例した信号で，レンズ特性を分離して照明ムラのみを測れる．
3. 従来の **PNG sRGB 評価値は，ガンマ圧縮によりムラを過小評価**していた点に注意．過去の PNG 値と DNG 値を近づけるには PNG を擬似linear化（inverse-sRGB）できるが，**PNG は真のシーン linear を復元できない**（トーンカーブ・8bit・透過関数不明のため）．したがって**厳密な比較には DNG での再撮影が必要**．
4. ノイズに弱い画素単位 max/min 比に代わり，**動径 min/max 比（20点輪帯平均）**をロバストな減衰指標として併用する．

## SmTIAS-LightSim 側への含意 (Implications for SmTIAS-LightSim)

本報告書の発見は SmTIAS-LightSim 側のキャリブレーション作業に重大な影響を与える：

### 過去 Step 8 キャリブの解釈見直し

過去のキャリブ作業（[TEST_01](TEST_01_キャリブレーション検証履歴.md) Step 8-1〜8-12）で「シミュ vs 実機の残差 2.1×」と評価していたが，これは：

- 実機側: **PNG sRGB CoV=0.0423**（ガンマ圧縮で過小評価）
- シミュ側: **linear CoV=0.183**（OETF 適用前） or **sRGB CoV=0.089**（OETF 順方向適用後）

の比較で，**ドメイン整合性が不完全**だった可能性がある．特に：

- 過去評価: PNG sRGB (0.0423) vs シミュ sRGB (0.089) = 残差 2.1×
- 正しい linear 比較: DNG linear+LSC (0.0689) vs シミュ linear (0.183) = **残差 2.66×**
- → 過去の「2.1× 残差」は楽観的．真の残差はやや大きいが，比較自体が物理的に意味を持つようになった

### Step 8-13 以降の正規評価方針

- 実機側: **DNG linear + LSC 順方向適用 + 白板 ROI**
- シミュ側: **linear（OETF/正規化なし）+ 同じ ROI**
- 比較指標: CoV / 勾配 / C/P / max-min / **動径 min/max 比（新規）**

これにより「シミュレーションの良し悪し」を物理的に妥当な土俵で評価できる．

## 残課題 (Open Issues)

- **厳密な V1 比較**: 同一シーン（白板）を同一フレーミングで PNG（通常モード）＋ DNG（定量モード）連続撮影し，同条件で比較する（TECH_05 検証 V1）．
- **ROI のフレーミング差対応**: PNG/DNG で白板の写る位置・スケールが異なるため，キャプチャごとの ROI 調整または同一フレーミング撮影が必要（TECH_05 Phase 5）．
- **LSC 順適用機能の正式実装**: 現状は検証スクリプトでの順適用．本流の評価フローへ正式統合する（TECH_05 Phase 3〜4）．
- **シミュ側の対応**: SmTIAS-LightSim 側の `sm-evaluate` に DNG 入力経路と LSC 順方向適用機能を実装し，[TEST_01](TEST_01_キャリブレーション検証履歴.md) に Step 8-13 として記録．

## 関連ドキュメント (Related Documents)

- [TECH_05 MiniTias-Evaluation DNG 対応要求仕様](../05_TECH/TECH_05_MiniTiasEvaluation_DNG対応要求仕様.md)
- [TECH_06 MiniTias-Evaluation 引き継ぎ受領](../05_TECH/TECH_06_MiniTias-Evaluation引き継ぎ受領.md)
- [TEST_01 キャリブレーション検証履歴](TEST_01_キャリブレーション検証履歴.md) — 過去 Step 8 と Step 8-13 続編
- [TEST_03 輝度マップ形状追跡](TEST_03_輝度マップ形状追跡.md) — 形のずれ議論
- [TEST_06 外乱光影響評価](TEST_06_外乱光影響評価.md) — 同時に取り込まれた関連報告
- 評価実装（MiniTias-Evaluation 側）: `src/io/dng_loader.py`, `src/analysis/spatial.py`, `scripts/run_uniformity_dng.py`
- 設計判断・経緯の詳細: MiniTias-Evaluation `docs/PROGRESS.md`
