diff --git "a/docs/02_ENV/ENV_02_\343\203\207\343\202\243\343\203\254\343\202\257\343\203\210\343\203\252\346\247\213\346\210\220.md" "b/docs/02_ENV/ENV_02_\343\203\207\343\202\243\343\203\254\343\202\257\343\203\210\343\203\252\346\247\213\346\210\220.md" index 571cefc..c0c3f8e 100644 --- "a/docs/02_ENV/ENV_02_\343\203\207\343\202\243\343\203\254\343\202\257\343\203\210\343\203\252\346\247\213\346\210\220.md" +++ "b/docs/02_ENV/ENV_02_\343\203\207\343\202\243\343\203\254\343\202\257\343\203\210\343\203\252\346\247\213\346\210\220.md" @@ -12,23 +12,31 @@ └── docs/ ← ドキュメント ``` -※ メインプロジェクト `TIASshot/` 配下のソース一覧(下記)はリファクタリング前の旧構成のままドリフトしている(現状は `Cameras/`・`UI/`・`ChartDetection/`・`ColorCorrection/`・`Utils/` 等に分離済み).別途修正が必要. - ## メインプロジェクト TIASshot/ (Main Project) ### ソースコード +責務ごとにサブフォルダへ分離している(リファクタリング Phase 1〜5 による). + ```text ├── Program.cs ← エントリポイント -├── Form1.cs ← メインフォーム(UI・操作イベント) -├── Form1.Designer.cs ← メインフォームのデザイナー自動生成コード -├── PreviewMonitor.cs ← プレビューモニタフォーム -├── PreviewMonitor.Designer.cs ← プレビューモニタのデザイナー自動生成コード -├── CameraBase.cs ← カメラ制御の基底クラス(共通処理) -├── IScam.cs ← ImagingSource カメラの実装 -├── Lucam.cs ← Lumenera カメラの実装 ├── Config.cs ← config.xml の読み込みユーティリティ -└── LightSource.cs ← 光源(シリアル通信)制御 +├── LightSource.cs ← 光源(シリアル通信)制御 +├── Cameras/ ← カメラ制御 +│ ├── CameraBase.cs ← カメラ制御の基底クラス(共通処理・撮影/校正の骨格) +│ ├── IScam.cs ← ImagingSource カメラの実装 +│ └── Lucam.cs ← Lumenera カメラの実装 +├── ChartDetection/ ← チャート検出 +│ └── ChartDetector.cs ← ArUco マーカー検出・マスク生成 +├── ColorCorrection/ ← 色補正 +│ └── ColorCorrector.cs ← TCC 変換行列の計算・色変換 +├── UI/ ← フォーム(WinForms) +│ ├── Form1.cs ← メインフォーム(UI・操作イベント) +│ ├── Form1.Designer.cs ← メインフォームのデザイナー自動生成コード +│ ├── PreviewMonitor.cs ← プレビューモニタフォーム +│ └── PreviewMonitor.Designer.cs ← プレビューモニタのデザイナー自動生成コード +└── Utils/ ← ユーティリティ + └── IoUtil.cs ← ファイル I/O(CSV・保存フォルダ・撮影情報)・サウンド ``` ### 設定・データファイル diff --git "a/docs/05_TECH/TECH_01_\343\202\257\343\203\251\343\202\271\350\250\255\350\250\210.md" "b/docs/05_TECH/TECH_01_\343\202\257\343\203\251\343\202\271\350\250\255\350\250\210.md" index b861ef5..d8c6ad6 100644 --- "a/docs/05_TECH/TECH_01_\343\202\257\343\203\251\343\202\271\350\250\255\350\250\210.md" +++ "b/docs/05_TECH/TECH_01_\343\202\257\343\203\251\343\202\271\350\250\255\350\250\210.md" @@ -4,30 +4,31 @@ **CameraBase(抽象基底クラス)** -- ファイル: `CameraBase.cs` +- ファイル: `Cameras/CameraBase.cs` - カメラに共通する処理をまとめた抽象クラス. - IScam・Lucam の両方が継承する. +- チャート検出・色補正・ファイル I/O はそれぞれ `ChartDetector`・`ColorCorrector`・`IoUtil` に委譲する. **IScam** -- ファイル: `IScam.cs` +- ファイル: `Cameras/IScam.cs` - ImagingSource カメラ(DFK33UX178,DFK23UX249)の実装. - IC Imaging Control SDK(`TIS.Imaging`)を使用する. **Lucam** -- ファイル: `Lucam.cs` +- ファイル: `Cameras/Lucam.cs` - Lumenera カメラ(Lw110)の実装. - Lumenera SDK(`lumenera.api.dll`)を使用する. **Form1** -- ファイル: `Form1.cs` +- ファイル: `UI/Form1.cs` - メインウィンドウ.UI イベントの受け取りとカメラ・光源の操作を担う. **PreviewMonitor** -- ファイル: `PreviewMonitor.cs` +- ファイル: `UI/PreviewMonitor.cs` - サブモニタへのプレビュー表示フォーム. **Config(静的クラス)** @@ -41,6 +42,24 @@ - ファイル: `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` から委譲される. + ## 継承関係 (Inheritance) ```text @@ -65,9 +84,11 @@ ### 保護メソッド(派生クラスから呼ぶ) - `BootCheck() : bool`: 起動時の前提条件チェック(設定・TCC参照ファイル) -- `DetectChart(img)`: ArUco マーカーによるチャート検出 -- `CalcTcc(img)`: TCC 変換行列の計算・保存 -- `ConvertImage(src, conv) : Mat`: 画像の色変換 +- `DetectChart(img)`: チャート検出(`ChartDetector` に委譲) +- `CalcTcc(img)`: TCC 変換行列の計算・保存(`ColorCorrector` に委譲) +- `ProcessCalibrationFrame(img)`: プレビュー/校正フローの共通骨格(テンプレートメソッド) +- `RunShotLoop(numImages, interval)`: 撮影ループの共通骨格(テンプレートメソッド) +- `SaveImages(img, idx)`: 撮影画像の保存(RGB・sRGB 変換画像.色変換は `ColorCorrector` に委譲) - `SaveThread(numImages)`: 画像保存スレッド処理 - `GetRatio(value, target) : float`: ゲイン更新比率の計算 @@ -76,9 +97,8 @@ - `_calibrating`: キャリブレーション残りフレーム数(0 で完了) - `_calibrated`: キャリブレーション完了フラグ - `_chartMasks`: 24色票の ROI マスクリスト -- `_convRGB2SRGB`: 次元数をキーとした RGB→sRGB 変換行列の辞書 - `_roi`: ROI 矩形(IScam のみ使用) -- `_shots`: 撮影済み画像バッファ +- `_shots`: 撮影済み画像バッファ(`BlockingCollection`.撮影スレッドと保存スレッドの受け渡しに使用) ## Form1 とカメラの関係 (Form1 and Camera)