========================================================================
機能仕様 (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` で変更可能).
・キャリブレーション中は光源の切り替えが無効になる.
・光源デバイスが見つからない場合,光源ボタンが無効化される.