# LensAdjustmentTool v4 x64

DFK 33UX178 のレンズフォーカス／開口調整を支援する Windows Forms アプリケーションです。

## v4 の設計方針

ユーザー環境で IC Imaging Control 3.5 SDK 付属サンプルを x64 に変更してビルド・実行できることが確認されたため、v4 はそのプロジェクト構成を基準にしています。

- Visual Studio 2026
- C# / Windows Forms
- .NET Framework 4.8
- **x64 only**
- IC Imaging Control 3.5 for C#
- OpenCvSharp4.Windows **4.13.0.20260627**
- OpenCvSharp4.Extensions **4.13.0.20260627**
- `licenses.licx` は使用しない

OpenCvSharp 5.x は .NET 8+ 系へ移行しているため、.NET Framework 4.8 を維持する本アプリでは OpenCvSharp 4.x の最新リリース 4.13.0.20260627 を使用します。

## プロジェクト設定

`LensAdjustmentTool.csproj` は従来型 .NET Framework プロジェクトです。

主要設定:

```xml
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
<PlatformTarget>x64</PlatformTarget>
<LangVersion>7.3</LangVersion>
```

IC Imaging Control は、SDK サンプルと同じく通常のアセンブリ参照を使用します。

```xml
<Reference Include="Microsoft.VisualC" />
<Reference Include="TIS.Imaging.ICImagingControl35" />
```

OpenCvSharp は PackageReference で復元します。

```xml
<PackageReference Include="OpenCvSharp4.Windows" Version="4.13.0.20260627" />
<PackageReference Include="OpenCvSharp4.Extensions" Version="4.13.0.20260627" />
```

## ビルド手順

1. IC Imaging Control 3.5 SDK がインストールされ、添付SDKサンプルの x64 版がビルド・実行できる環境で作業します。
2. `LensAdjustmentTool.sln` を Visual Studio 2026 で開きます。
3. Solution Configuration を `Debug`、Solution Platform を `x64` にします。
4. NuGet パッケージの復元を実行します。
5. `Build > Rebuild Solution` を実行します。

出力先:

- Debug: `bin\x64\Debug\`
- Release: `bin\x64\Release\`

`Config\DFK33UX178.xml` は出力フォルダへ自動コピーされます。

## カメラ設定

起動時に `Config\DFK33UX178.xml` を読み込み、以下を前提とします。

- Camera: DFK 33UX178
- Format: RGB24 3072 x 2048
- Frame rate: 約30 fps
- Auto Exposure: OFF
- Auto Gain: OFF
- Auto White Balance: OFF

## フォーカス調整

- ROI: `(2135, 800, 400, 600)`
- ROI を右 90 度回転して表示
- Sobel X/Y 勾配の絶対値平均をフォーカス評価値として表示
- 現在値と、モード開始後の最大値を表示
- 「最大値をリセット」ボタンあり

## 開口調整

- 表示ROI: `(860, 625, 1280, 960)`
- 計算ROI: `(950, 1150, 128, 128)`
- 計算ROIをグレースケール化し、平均輝度を算出
- 目標値: 225
- 現在値と `現在値 - 225` を表示
- 表示画像上に計算ROIを赤枠表示

## フレーム処理

IC Imaging Control の `FrameQueueSink` から取得したフレームを直接処理し、UIへは最新の解析結果だけを渡します。処理待ちフレームを無制限に蓄積しないため、調整操作に対する表示遅延を抑えます。

## 注意

この環境では IC Imaging Control 3.5 SDK / Visual Studio / 実機カメラを使用した最終ビルドは実施できないため、プロジェクト構成とソースの静的整合性までを確認しています。実機環境でビルドエラーが出た場合は、最初のエラーから順に確認してください。
