Newer
Older
TIASShot / docs / 05_TECH / TECH_01_クラス設計.md

クラス設計 (Class Design)

クラス一覧 (Class Overview)

CameraBase(抽象基底クラス)

  • ファイル: Cameras/CameraBase.cs
  • カメラに共通する処理をまとめた抽象クラス.
  • IScam・Lucam の両方が継承する.
  • チャート検出・色補正・ファイル I/O はそれぞれ ChartDetectorColorCorrectorIoUtil に委譲する.

IScam

  • ファイル: Cameras/IScam.cs
  • ImagingSource カメラ(DFK33UX178,DFK23UX249)の実装.
  • IC Imaging Control SDK(TIS.Imaging)を使用する.

Lucam

  • ファイル: Cameras/Lucam.cs
  • Lumenera カメラ(Lw110)の実装.
  • Lumenera SDK(lumenera.api.dll)を使用する.

Form1

  • ファイル: UI/Form1.cs
  • メインウィンドウ.UI イベントの受け取りとカメラ・光源の操作を担う.

PreviewMonitor

  • ファイル: UI/PreviewMonitor.cs
  • サブモニタへのプレビュー表示フォーム.

Config(静的クラス)

  • ファイル: Config.cs
  • config.xml の読み込みユーティリティ.
  • XPath を使って文字列・整数・浮動小数点数の値を取得する.

LightSource

  • ファイル: LightSource.cs
  • シリアル通信(USB-シリアル変換)による光源の ON/OFF 制御.

ChartDetector

  • ファイル: ChartDetection/ChartDetector.cs
  • ArUco マーカーによるチャート検出・ホモグラフィ計算・24色票の ROI マスク生成.
  • CameraBase から委譲される.

ColorCorrector

  • ファイル: ColorCorrection/ColorCorrector.cs
  • TCC 変換行列の計算(次元拡張・SVD)と画像の色変換(RGB→sRGB).
  • CameraBase から委譲される.変換行列はチャネル数をキーとした辞書(_convRGB2SRGB)で保持する.

IoUtil(静的クラス)

  • ファイル: Utils/IoUtil.cs
  • ファイル I/O(CSV 読み書き・保存フォルダ生成・撮影情報出力)とサウンド再生.状態を持たない.
  • CameraBase から委譲される.

GainCalc(静的クラス)

  • ファイル: Cameras/GainCalc.cs
  • ゲイン更新比率の計算(ホワイトバランス自動調整).ハードウェアに依存しない純粋計算.
  • CameraBase.GetRatio から委譲される(テスト可能なピュアロジック層).

継承関係 (Inheritance)

CameraBase(抽象)
├── IScam       ← ImagingSource カメラ
└── Lucam       ← Lumenera カメラ

CameraBase の主なメンバ (CameraBase Members)

抽象メソッド(派生クラスで実装する)

  • Connect() : bool: カメラに接続する
  • Disconnect(): カメラを切断する
  • Shot(numImages, interval): 撮影処理

公開メソッド

  • ShotOne(): 1枚撮影
  • ShotMulti(): 連続撮影

保護メソッド(派生クラスから呼ぶ)

  • BootCheck() : bool: 起動時の前提条件チェック(設定・TCC参照ファイル)
  • DetectChart(img): チャート検出(ChartDetector に委譲)
  • CalcTcc(img): TCC 変換行列の計算・保存(ColorCorrector に委譲)
  • ProcessCalibrationFrame(img): プレビュー/校正フローの共通骨格(テンプレートメソッド)
  • RunShotLoop(numImages, interval): 撮影ループの共通骨格(テンプレートメソッド)
  • SaveImages(img, idx): 撮影画像の保存(RGB・sRGB 変換画像.色変換は ColorCorrector に委譲)
  • SaveThread(numImages): 画像保存スレッド処理
  • GetRatio(value, target) : float: ゲイン更新比率の計算(GainCalc.CalcRatio に委譲)

主なフィールド

  • _calibrating: キャリブレーション残りフレーム数(0 で完了)
  • _calibrated: キャリブレーション完了フラグ
  • _chartMasks: 24色票の ROI マスクリスト
  • _roi: ROI 矩形(IScam のみ使用)
  • _shots: 撮影済み画像バッファ(BlockingCollection<Mat>.撮影スレッドと保存スレッドの受け渡しに使用)

Form1 とカメラの関係 (Form1 and Camera)

  • Form1 は CameraBase 型の _camera フィールドを持つ.
  • 起動時に Lucam → IScam の順で接続を試みる(詳細は TECH_02 参照).
  • UI スレッドとカメラスレッドをまたぐメソッド(ShowMessageEnableShots 等)は InvokeRequired を確認してスレッドセーフに呼び出す.