FPGA Vision​で​の​NI Vision Development Module​の​使用​の​概要

概要

FPGA​テクノロジ​と​NI Vision Development Module​を使用すれば、​カメラ​から​入力​さ​れ​た​画像​に​高速​FPGA (Field-​Programmable Gate Array) 処理​を​施す​こと​が​でき​ます。​FPGA​処理​は、​特に、​画像​の​入力​から​処理​まで​の​レイ​テン​シ​を​抑える​必要​が​ある​用途​で​役​に​立ち​ます。​この​ドキュメント​では、​FPGA​を​使用​した​画像​処理​の​概要​と、​典型​的​な​ユース​ケース​を​紹介​し​てい​ます。

内容

FPGA​プログラミング​の​概要

NI LabVIEW FPGA​モジュール​は、​LabVIEW​グラフィカル​プログラミング​環境​を​自然​な​形​で​拡張​した​もの​です。​VHDL​などの低レベル言語を使用せずに、​複雑​な​FPGA​プログラミング​を​行う​こと​が​でき​ます。​LabVIEW​を​扱​っ​た​経験​が​あれ​ば、​LabVIEW FPGA​の​操作​も​容易​に​習得​でき​ます。​これ​によって、​FPGA​プログラミングに必要なアプリケーションでの開発作業に要する時間が大幅に短縮され、​カスタム​ハードウェア​の​設計​が​不要​に​なり​ます。​HDL​で​プログラミング​する​代わり​に、​LabVIEW​の​ブロック​ダイ​ア​グラム​で​アプリケーション​を​作成​し、​LabVIEW FPGA​で​グラフィカル​コード​を​コンパイル​し​て、​FPGA​ハードウェア​に​実装​し​ます。 

FPGA​で​の​画像​処理

多く​の​画像​処理​アルゴリズム​は​本質​的​に​並列​的​で​ある​ため、​FPGA​による​実装​に​適​し​てい​ます。​この​よう​な​アルゴリズム​で​扱​われる​の​は​ピクセル、​ライン、​および​関心​領域​に対する​操作​で、​パターン​など​の​高​レベル​の​画像​情報​は​不要​です。​この​よう​な​機能​を、​画像​の​中​の​小さな​ビット​領域​と​複数​の​領域​に対して​同時に​実行​する​こと​が​でき​ます。​画像​データ​の​処理​に​は​セントラル​プロセッサ​が​使用​さ​れ​ない​ため、​画像​データ​を​FPGA​に​並列​的​に​渡し​て​同時に​処理​でき​ます。​NI Vision Development Module​に​は​50​種類​以上​の​画像​処理​機能​が​搭載​さ​れ​て​おり、​NI LabVIEW FPGA​モジュール​と​組み合わせ​て​使用​する​こと​で​FPGA​上​で​画像​を​処理​でき​ます。 FPGA​上​で​使用​できる​Vision Development Module​の​画像​処理​機能​の​例​を、​以下​に​紹介​し​ます。 

前​処理

  • 画像​変換
  • 画像​オペレータ
  • シェーディング​補正
  • バイ​ヤ​デ​コーディング
  • カラー​空間​変換
  • 1D​高速​フーリエ​変換
  • フィルタ​処理 (平滑​化/​鮮鋭​化)
  • バイナリモフォロジー

特徴​抽出

  • エッジ、​ライン、​角
  • バイナリ​オブジェクト

測定

  • 図​心
  • 面積​測定

 

Vision Development Module​の​FPGA​機能​の​概要

Vision Development Module​を​NI LabVIEW FPGA​モジュール​に​インストール​すると、​Vision​パレット​に​FPGA​画像​処理​アプリケーション​で​使用​できる​機能​が​表示​さ​れ​ます。

Visionパレット

図​1.  Vision​パレット​に​FPGA​画像​処理​アプリケーション​で​使用​できる​機能​が​多数​表示​さ​れる

 

Vision​パレット​に​は​FPGA​と​CPU​間​で​画像​を​ストリーミング​できる​画像​転送​VI​が​含​まれ​てい​ます。​セクション​2「FPGA Vision​の​ユース​ケース」​では、​さまざま​な​ユース​ケース​を​紹介​し、​それ​が​CPU​と​の​間​で​の​画像​転送​に​必要​と​なる​理由​について​説明​し​てい​ます。

NI Vision Development Module​に​含​ま​れる​Vision Assistant Express VI​では、​LabVIEW  FPGA​画像​処理​コード​を​ハンド​シェイク​と​同期​によって​自動​生成​できる​ため、​低​レベル​の​同期​コード​を​作成​する​必要​が​なく​なり​ます。​Vision Assistant​は​LabVIEW​ブロック​ダイヤグラム​から​開く​こと​も​でき​ます​が、​スタンドアロン​プログラム​として​起動​し​て、​特定​の​NI​ハードウェア​を​対象​と​した​LabVIEW​プロジェクト​を​作成​する​こと​も​でき​ます。

NI Vision Assistant

図​2.  Vision Assistant​を​スタンドアロン​プログラム​として​開​い​て、​特定​の​ハードウェア​ターゲット​向け​の​コード​を​生成

 

ハードウェア​ターゲット​を​選択​すると、​Vision Assistant​が​画像​処理​スクリプト​に​必要​な​FPGA​ターゲット​リソース​の​量​を​見積もり​ます。​次に​Vision Assistant​は、​画像​の​処理​と​転送​の​ため​の​ホスト​VI​と​FPGA VI​を​含む​LabVIEW​プロジェクト​を​生成​し​ます。

Vision Assistantによって生成されたLabVIEWプロジェクト

図​3.  画像​処理​スクリプト​の​作成​が​終わる​と、​Vision Assistant​によって、​画像​の​処理​と​転送​に​必要​な​ハードウェア​ターゲット、​ホスト​VI (指定​した​場合)、​FPGA VI​を​含む​LabVIEW​プロジェクト​が​自動的​に​生成​さ​れる

 

FPGA Vision​の​ユース​ケース

ユース​ケース​1:FPGA​のみ​の​処理​で​高速​制御

FPGA​画像​処理​によって、​画像​解析​に​必要​な​計算​リソース​を​少​なく​する​こと​が​でき​ます。​FPGA​は​ハードウェア​リソース​の​ため、​CPU​を​解放​し​て、​他の​処理​を​させる​こと​が​でき​ます。​解析​を​実行​する​際​に​CPU​の​介入​が​不要​に​なる​ため、​画像​の​処理​から​制御​信号​の​出力​まで​の​レイ​テン​シ​が​大幅​に​短縮​さ​れ​ます。​図​4​に、​FPGA​を​使用​し​て​CPU​の​リソース​を​解放​する​方法​の​例​を​示し​てい​ます。​この​ケース​では、​画像​の​処理​から​出力​信号​の​生成​まで、​すべて​が​FPGA​によって​実行​さ​れ​ます。​これ​により、​システムレイテンシが最小限に抑えられ、​制御​信号​を​迅速​に​生成​する​こと​が​でき​ます。

FPGAのみによる処理

図​4.すべて​の​処理​が​ターゲット​の​FPGA​上​で​実行​さ​れる​ため、​解放された​CPU​で​他の​タスク​を​実行​でき、​システム​レイ​テン​シ​を​最小限​に​抑え​られる

この​ユース​ケース​の​例​として​は、​高速​ソート、​視線​トラッキング、​レーザー​ア​ライ​メン​ト​など​が​あり​ます。 FPGA​のみ​の​処理​を​フレームグラバ​に​実装​する​こと​で、​入力​さ​れる​画像​データ​の​パス​上​に​FPGA​を​直接​配置​する​こと​が​でき​ます。Camera Link​フレームグラバCamera Link​アダプタ​モジュールの​例​を​示し​ます。

 

NI PCIe-1473RとNI 1483R

図​5.  Camera Link​フレームグラバ​と​Camera Link​アダプタ​モジュール​は、​どちら​も​FPGA​が​画像​パス​上​に​配置​さ​れる​ため、​オン​ボード​で​の​前​処理​や​高速​制御​の​用途​に​適​し​て​いる

 

ユース​ケース​2:FPGA​処理

FPGA​による​ビジョン​システム​プロセッサ​を​使用​した​追加​処理​を​実行​でき​ます。​図​6​は、​FPGA​で​前​処理​を​行い、​CPU​では​もっと​高度​な​処理​アルゴリズム​を​実行​する​方法​を​示し​てい​ます。​この​例​では、​FPGA​が​フィルタ​処理​や​エッジ​検出​など​の​ビット​レベル​処理​を​実行​し​ます。​次に、​前​処理​を​施​さ​れ​た​画像​が​CPU​に送信され、​パターン​認識​など​の​画像​レベル​処理​が​実行​さ​れ​ます。​この​例​でも、​CPU​で​実行​さ​れる​機能​の​数​が​従来​型​ビジョン​システム​の​場合​より​も​少​なくなる​ため、​システム​レイ​テン​シ​が​低​く​抑え​ら​れ​ます。

FPGAの前処理

図​6.FPGA​で​画像​入力​と​前​処理​が​実行​さ​れ​た​後、​画像​データ​が​CPU​に渡され、​CPU​で​パターンマッチング​や​分類​といった​さらに​複雑​な​画像​解析​が​実行​さ​れる

 

FPGA​画像​処理​は、​高速​ビット​レベル​処理​が​必要​な​用途​で​特に​役​立ち​ます。​FPGA​が​画像​データ​を​受け取り、​高速​オン​ボード​クロック (最高​クロック​速度​100 MHz) を​使用​し​て​個々​の​ビット​を​処理​し​ます。​データ​の​転送​および​ハードウェア​で​の​処理​が​1​回​の​クロック​サイクル​で​実行​さ​れ​ます。​多数​の​ビジョン​アルゴリズム​を​複数​の​反復​タスク​に​分割​した​後、​さらに​その​タスク​を​分割​し​て、​FPGA​で​並列​処理​でき​ます。

この​タイプ​の​アーキテクチャ​が​適用​できる​例​として​は、​表面​検査、​Web​検査、​光​コヒーレンス​断層​撮影​法 (OCT) など​の​用途​が​挙​げ​ら​れ​ます。 図​5​に、​FPGA​前​処理​に​対応​する​フレームグラバ​の​例​を​2​つ​示し​てい​ます。

 

ユース​ケース​3:FPGA​コ​プロセッシング

画像​処理​アルゴリズム​が​複数​の​ステップ​で​構成​さ​れ​て​いる​場合​も​あり​ます。​その​中でも​2​値​化​など​の​ステップ​は、​FPGA​に​実装​する​こと​が​でき​ます。​パターンマッチング​など​の​ステップ​は、​多く​の​場合、​CPU​の​方​が​適​し​てい​ます。​この​よう​な​場合、​FPGA​を​使用​し​て​プロセッサ​の​負担​を​軽減​する​こと​が​でき​ます。  図​7​に​示す​よう​に、​CPU​に​送​ら​れ​た​入力​画像​は​ピクセル​ごと​に​FPGA​にストリーミングされ、​ビット​レベル​で​処理​さ​れ​ます。​FPGA​上​で​処理​さ​れ​た​ピクセル​が​CPU​に送り返されて、​さらに​処理​が​加​え​られる​場合​が​あり​ます。

アルゴリズム​の​処理​が​FPGA​上​で​完結​する​場合、​ピクセル​を​CPU​に​送り返す​必要​は​ありま​せん。​その​場合、​画像​処理​アルゴリズム​の​結果​に​基​づ​い​て​FPGA​を​使用​し​て​出力​を​生成​する​か、​処理​結果​を​CPU​に​送り​返し​て、​システム​の​他の​部分​で​使用​できる​よう​にし​ます。​結果​として​出力​さ​れる​データ​の​例​として​は、​距離​測定、​粒子​の​カウント​など、​画像​処理​ステップ​で​得​られる​任意​の​結果​が​考え​ら​れ​ます。​FPGA​コ​プロセッシング​によって​CPU​で​実行​さ​れる​機能​の​数​を​最小限​に​抑える​こと​で、​システム​レイ​テン​シ​が​低減​さ​れ​ます。

FPGAコプロセッシング

図​7. 画像​入力​と​前​処理​が​FPGA​上​で​実行​さ​れ​た​後、​画像​データ​が​CPU​に送られ、​CPU​が​パターンマッチング​や​分類​といった​さらに​複雑​な​画像​解析​を​実行​する

 

FPGA​コ​プロセッシング​は、​NI​の​産業​用​コントローラ​や​CompactRIO​に​加​え、​Camera Link​フレームグラバ​や​Camera Link​アダプタ​モジュール​に​も​実装​できる。

 

NIの産業用コントローラとNI CompactRIOコントローラ

図​8. NI​の​産業​用​コントローラ​と​NI CompactRIO​コントローラ​は、​ビジョン​アプリケーション​における​FPGA​コ​プロセッシング​を​サポート

 

FPGA​コ​プロセッシング​が​有益​な​用途​の​例​として​は、​品質​検査​における​粒子​の​カウント​が​あり​ます。​この​用途​では、​粒子​の​カウント​を​FPGA​で​実行​し、​粒子​の​数​と​その​サイズ​を​判断​し​ます。​次に​その​情報​を​プロセッサ​に​共有​する​こと​で、​オペレータ​に​それ​を​表示​した​り、​別​の​プロセス​へ​の​入力​として​使用​した​り​でき​ます。

まとめ

まとめる​と、​高速​操作​と​並列​処理​という​FPGA​の​特性​を​利用​する​こと​で、​画像​処理​に​要する​時間​を​減らし、​システム​レイ​テン​シ​を​短縮​し​て​スループット​の​増大​に​つなげる​こと​が​でき​ます。​さらに、​FPGA​で​画像​処理​を​行う​こと​で、​高速​ソー​ター​など​の​システム​向け​コントローラ​で​入力​画像​に​基づく​意思​決定​を​迅速​に​下せる​よう​に​なり​ます。​また、​組​込​処理​における​イノベーション​の​結果、​幅広い​マシン​オートメーション​用途で3D​ビジョンが​用​い​られる​よう​に​な​って​い​ます。