サンプルコードとドキュメント

GigE Visionカメラを用いたソフトウェアタイミング画像集録/Software-Timed Image Acquisition with GigE Vision Camera

コードとドキュメント

添付

概要

ホストコンピュータからGigE Vision準拠カメラにソフトウェアトリガ (SWトリガ) をアサートし、それに応じてカメラで1フレームを集録し、ホストコンピュータで読み取ります。

今日の多くのマシンビジョン用カメラには、ハードウェアトリガ入力端子が搭載されていますが、本サンプルではアプリケーション上の任意のイベントの発生時にソフトウェアタイミングで画像集録を行います。

説明

本サンプルは、Basler社のGigE Vision準拠カメラ「scA640-70gm」(8-bit, 659 x 494 pixels, 70 frames per second) を使用して開発されています。

なお、カメラがSWトリガをサポートしていない場合、本サンプルは使用できません。

カメラがSWトリガをサポートしているか否かは、カメラの仕様書を確認してください。

本サンプルのトップレベルVIのブロックダイアグラムは以下のように構成されています。

Grab with SW Trigger.png

VIの各部実装の詳細は、ブロックダイアグラム上のフリーラベルで示したコメントを確認してください。

以下の図は、上記のVIで200 ms周期でSWトリガをアサートして画像集録を行いつつ、ネットワーク解析ソフトウェア「Wireshark」を使用して、ホストコンピュータとカメラとの間の通信量をモニタし、その時間推移を示したものです。

swtriggered.png

黒線がカメラからホストコンピュータ、赤線がホストコンピュータからカメラへの通信データ量 [Bytes] ですが、フレーム集録時のみバーストでデータが転送されているのが確認できます。

一方、下のブロックダイアグラムのように、NI-IMAQdxの「Low-Level Grab」のサンプルに「待機 (ms)」関数を置いて待機時間を設けるだけの場合を考えます。

Grab.png

Image表示器を見ると、見かけ上は設定した待機時間でのみ画像集録がなされているように見えます。

しかし、カメラはフリーラン状態で画像集録を行い、絶えずホストコンピュータにデータを送信し続けるため、同様に通信量の時間推移を確認すると以下のようになります。

freerun.png

SWトリガを使用する場合とは異なり、カメラからホストコンピュータへ絶えずデータを送り続けていることがわかります。

(なお、カメラのスペックが上述のようなもののため、上図の「Tick interval」が0.001 secであることを考慮すると、8 [bits/pixel] x 659 x 484 [pixels/frame] x 70 [frames per second] ≒ 25 MByte/sと、カメラの集録条件から計算されるデータレートと測定されたデータレートが一致することがわかります)

SWトリガを使用しない場合、実際には必要としないフレームのデータもカメラからホストコンピュータへ送信されることとなり、ネットワーク資源を過剰に消費する問題が生じます。

SWトリガを使用することで、待機のみを行う場合と比較してネットワーク資源を効率的に使用できます。

SWトリガを使用した画像集録を行う場合の注意点として、ホストコンピュータにてトリガをアサートしてからカメラにてフレームを集録するまでに不確定的な遅延が生じる点があります。

1. カメラアトリビュートへの値の書き込みが成された直後から、ホストコンピュータにおいてトリガ用のデータパケットをネットワークに送出するまでにかかる遅延

2. トリガ用のデータパケットがホストコンピュータからカメラに到達するまでの遅延

3. カメラがトリガ用のデータパケットを受信してからフレームを集録するまでの遅延

特に、2はホストコンピュータ - カメラ間のネットワークの状態によって左右される側面があるため、トリガがアサートされてからフレームが集録されるまでの遅延に厳しい用件がある場合には、事前にベンチマークを取るなどしてください。

必要なもの

  • LabVIEW (サンプルはLabVIEW 2014で作成されていますが、同様の実装はそれより前のバージョンのLabVIEWでも可能です)
  • NI-IMAQdx (NI画像入力ソフトウェアに集録のソフトウェア)
  • SWトリガに対応したGigE Vision準拠カメラ

NIコミュニティのサンプルコード交換のサンプルコードは、MIT Licenseによりライセンス供与されています。

寄稿者