# 設定ファイル仕様 (Configuration File Specification)

実行ファイルと同じディレクトリに `config.xml` を配置する．
XML のルート要素は `<Config>` とする．

※ ファイル名・保存先のテンプレート変数: `{NO}` は4桁連番，`{CN}` は2桁の次元数に展開される．

## Lucam カメラ設定 (Lucam Camera)

Lumenera Lw110 の初期パラメータ．

**`<Lucam>`**

- `<Exposure>`: 露光時間 (ms)
  - 例: `60.0`
- `<Gain>`: マスターゲイン
  - 例: `1.5`
- `<GainB>`: ブルーゲイン
  - 例: `2.62`
- `<GainG>`: グリーンゲイン
  - 例: `1.72`
- `<GainR>`: レッドゲイン
  - 例: `1.70`

## ImagingSource カメラ設定 (ImagingSource Camera)

各カメラの ROI（関心領域）設定．カメラ名はデバイス名と一致させる．

**`<DFK33UX178>` / `<DFK23UX249>`**

- `<ROI>`
  - `<X>`: ROI の左端座標 (px)
  - `<Y>`: ROI の上端座標 (px)
  - `<W>`: ROI の幅 (px)
  - `<H>`: ROI の高さ (px)

※ ImagingSource カメラは画像を転置してから ROI を切り出す．X・Y・W・H は転置後の座標系で指定する．

## キャリブレーション設定 (Calibration)

**`<Calib>`**

- `<ChartSetCriteria>`: チャート固定判定の閾値 (px)
  - ARマーカーの移動量がこの値未満のフレームを「静止」とみなす．
  - 例: `4.0`
- `<ChartSetCount>`: チャート固定判定に必要な連続静止フレーム数
  - 例: `30`
- `<Reference>`: 白色票（24色票の13番）の目標 RGB 値
  - `<B>`: ブルー目標値 (0-255)
  - `<G>`: グリーン目標値 (0-255)
  - `<R>`: レッド目標値 (0-255)
  - 例: `226`（各チャンネル共通）
- `<UpdateRate>`: ホワイトバランスゲインの更新率（0.0-1.0）
  - 1.0 で即時反映，値を下げると緩やかに収束する．
  - 例: `0.8`
- `<Frames>`: キャリブレーションに使用するフレーム数
  - 例: `100`
- `<UpdateInterval>`: ゲインを更新するフレーム間隔
  - 例: `5`（5フレームごとに更新）
- `<ConversionChannels>`: 変換行列の次元数
  - 4 (1次式)，10 (2次式)，17 (3次式) から選択する．
  - カンマ区切りで複数指定可能（例: `4,10,17`）．
  - 詳細は `SPEC_01_機能仕様.md` の「TCC（色変換行列）計算」を参照．

## 撮影設定 (Shot)

**`<Shot>`**

- `<PreviewMonitorWidth>`: プレビューモニタの表示幅 (px)
  - 例: `1280`
- `<MultiShotCount>`: 連続撮影の枚数（UI の初期値）
  - 例: `10`
- `<MultiShotInterval>`: 連続撮影の間隔 (ms)（UI の初期値）
  - 例: `500`
- `<SubjectName>`: データ名の初期値（UI のテキストボックスに表示）
  - 例: `無記名`

## ファイル設定 (File)

**`<File>`**

- `<SaveFolder>`: データの保存先フォルダ（絶対パス）
  - 例: `C:\TIAS_Data`
- `<TccSrgbRef>`: sRGB 変換参照値 CSV のパス
  - 例: `tcc_srgb.csv`
- `<TccXyzRef>`: XYZ 変換参照値 CSV のパス
  - 例: `tcc_xyz.csv`
- `<TccImage>`: キャリブ時の画像ファイル名
  - 例: `TCC.png`
- `<TccRoisImage>`: チャート ROI 確認画像ファイル名
  - 例: `TCC_ROIs.jpg`
- `<RgbImage>`: 撮影画像ファイル名（`{NO}` で連番）
  - 例: `Shot{NO}.png`
- `<SrgbImage>`: sRGB 変換画像ファイル名（`{CN}` で次元数，`{NO}` で連番）
  - 例: `sRGB{CN}_{NO}.jpg`
- `<Info>`: 撮影情報 CSV のファイル名
  - 例: `Info.csv`
- `<TccRgbValues>`: チャート RGB 値 CSV のファイル名
  - 例: `TCC_RGB.csv`
- `<TccSrgbValues>`: チャート sRGB 値 CSV のファイル名（`{CN}` で次元数）
  - 例: `TCC_sRGB{CN}.csv`
- `<ConvRgb2Srgb>`: RGB→sRGB 変換行列 CSV のファイル名
  - 例: `Conv_RGB-sRGB{CN}.csv`
- `<ConvRgb2Xyz>`: RGB→XYZ 変換行列 CSV のファイル名
  - 例: `Conv_RGB-XYZ{CN}.csv`
- `<ConvSrgb2Xyz>`: sRGB→XYZ 変換行列 CSV のファイル名
  - 例: `Conv_sRGB-XYZ{CN}.csv`
- `<ConvRgb2XyzOld>`: RGB→XYZ 変換行列（旧形式）CSV のファイル名
  - 例: `Conv_RGB-XYZold.csv`

## 光源設定 (Light Source)

**`<LightSource>`**

- `<Device>`: 光源デバイスのデバイス名（部分一致で検索）
  - 例: `Silicon Labs CP210x`
- `<BaudRate>`: シリアル通信のボーレート (bps)
  - 例: `38400`

## サウンド設定 (Sound)

**`<Sound>`**

- `<CalibDone>`: キャリブレーション完了時の効果音ファイル名
  - 例: `CalibDone.wav`
- `<OneShotDone>`: 1枚撮影完了時の効果音ファイル名
  - 例: `OneShot.wav`
- `<MultiShotDone>`: 連続撮影完了時の効果音ファイル名
  - 例: `MultiShot.wav`
