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

クラス設計 (Class Design)

クラス一覧 (Class Overview)

CameraBase(抽象基底クラス)

  • ファイル: CameraBase.cs
  • カメラに共通する処理をまとめた抽象クラス.
  • IScam・Lucam の両方が継承する.

IScam

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

Lucam

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

Form1

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

PreviewMonitor

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

Config(静的クラス)

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

LightSource

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

継承関係 (Inheritance)

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

CameraBase の主なメンバ (CameraBase Members)

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

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

公開メソッド

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

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

  • BootCheck() : bool: 起動時の前提条件チェック(設定・TCC参照ファイル)
  • DetectChart(img): ArUco マーカーによるチャート検出
  • CalcTcc(img): TCC 変換行列の計算・保存
  • ConvertImage(src, conv) : Mat: 画像の色変換
  • SaveThread(numImages): 画像保存スレッド処理
  • GetRatio(value, target) : float: ゲイン更新比率の計算

主なフィールド

  • _calibrating: キャリブレーション残りフレーム数(0 で完了)
  • _calibrated: キャリブレーション完了フラグ
  • _chartMasks: 24色票の ROI マスクリスト
  • _convRGB2SRGB: 次元数をキーとした RGB→sRGB 変換行列の辞書
  • _roi: ROI 矩形(IScam のみ使用)
  • _shots: 撮影済み画像バッファ

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

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