========================================================================
機能仕様 (Feature Specification)
========================================================================

1. 対応カメラ (Supported Cameras)
------------------------------------------------------------------------
起動時に Lucam → ImagingSource の順で接続を試みる．

■ ImagingSource カメラ（新カメラ）
    ・対応機種: DFK33UX178，DFK23UX249
        - ※ README には DBK33UX178 と記載されていたが，ソースコード上は DFK33UX178 として扱われている．実機の型番は要確認．
    ・SDK: IC Imaging Control (TIS.Imaging)
    ・設定ファイル: `[デバイス名].xml`（例: `DFK33UX178.xml`）

■ Lumenera カメラ（旧カメラ）
    ・対応機種: Lw110
    ・SDK: Lumenera SDK（`lumenera.api.dll`）


2. プレビュー (Preview)
------------------------------------------------------------------------
・起動後，接続したカメラのライブ映像をメインウィンドウに表示する．
・サブモニタへのプレビュー表示にも対応する（PreviewMonitor）．
・ImagingSource カメラはプレビュー時に ROI クリップを適用する．


3. 自動キャリブレーション (Auto Calibration)
------------------------------------------------------------------------
プレビュー中に舌診チャートを検出すると自動でキャリブレーションを開始する．

3-1. チャート検出
    ・ArUco マーカー（ID 40, 41）を使用してチャートを自動検出する．
    ・チャートが一定フレーム数静止したことを確認してからキャリブを開始する．

3-2. ホワイトバランス調整
    ・チャートの白色票（24色票の13番）を基準にカメラのゲインを自動調整する．
    ・目標値は `config.xml` の `Calib/Reference` で指定する．

3-3. TCC（色変換行列）計算
    ・24パッチの平均 RGB 値を計測し，最小二乗法（SVD）で変換行列を算出する．
    ・変換次元数（多項式の次数）は `Calib/ConversionChannels` で指定する．
        - 4: 1次式（R，G，B，1）
        - 10: 2次式（+RG，RB，GB，R²，G²，B²）
        - 17: 3次式（+R²B，R²G，G²R，G²B，B²R，B²G，RGB）
    ・複数の次元数をカンマ区切りで同時に指定可能（例: `4,10,17`）．
    ・算出した変換行列は CSV ファイルに保存される．


4. 撮影 (Shooting)
------------------------------------------------------------------------
キャリブレーション完了後に撮影ボタンが有効になる．

■ 1枚撮影
    ・撮影した画像を1枚保存する．

■ 連続撮影
    ・指定した枚数・間隔で連続撮影する．
    ・枚数・間隔は UI で変更可能（デフォルト値は `config.xml` で設定）．

■ 保存される画像
    ・元画像（RGB）: `Shot{NO}.png`
    ・sRGB 変換画像: `sRGB{CN}_{NO}.jpg`（指定した次元数ぶん生成される）


5. データ保存 (Data Saving)
------------------------------------------------------------------------
撮影・キャリブレーション結果は保存フォルダ以下に日時フォルダで自動保存される．

■ 保存先フォルダ構成
    ・`[SaveFolder]/[日付]/[時刻]-[データ名]/`

■ キャリブレーション保存ファイル
    ・`TCC.png`: キャリブ時の画像
    ・`TCC_ROIs.jpg`: チャートの ROI 確認画像
    ・`TCC_RGB.csv`: チャート24色票の RGB 値
    ・`TCC_sRGB{CN}.csv`: チャート24色票の sRGB 変換値
    ・`Conv_RGB-sRGB{CN}.csv`: RGB→sRGB 変換行列
    ・`Conv_RGB-XYZ{CN}.csv`: RGB→XYZ 変換行列
    ・`Conv_sRGB-XYZ{CN}.csv`: sRGB→XYZ 変換行列

■ 撮影保存ファイル
    ・`Info.csv`: 撮影情報（カメラ型番・SN，露光時間，ゲイン等）
    ・`Shot{NO}.png`: 元画像（RGB）
    ・`sRGB{CN}_{NO}.jpg`: sRGB 変換画像


6. 光源制御 (Light Source Control)
------------------------------------------------------------------------
・シリアル通信（USB-シリアル変換）で光源の ON/OFF を制御する．
・対応デバイス: Silicon Labs CP210x（`config.xml` で変更可能）．
・キャリブレーション中は光源の切り替えが無効になる．
・光源デバイスが見つからない場合，光源ボタンが無効化される．
