FLIR がサーマル イメージング FPGA の開発を加速

「MATLAB と HDL Coder を利用することで、市場の需要にすばやく対応できるようになりました。また、わずか数週間で新しいアイデアからリアルタイム対応のハードウェア プロトタイプを作成できるため、変更作業に前向きに対応できるようになりました。エンジニアの仕事が楽しくなり、顧客の満足度だけでなく、社員の満足度も向上しています。」

課題

FPGA ハードウェアへの高度なサーマル イメージング フィルターとアルゴリズムの実装を加速すること

ソリューション

MATLAB を使用してアルゴリズムの開発、シミュレーション、評価を行い、HDL Coder を使用して最適なアルゴリズムを FPGA に実装

結果

  • コンセプトから実地試験可能なプロトタイプ作成までの期間を 60% 短縮
  • 以前は数週間要したアルゴリズムの拡張を数分で完了
  • コードの再利用がゼロから 30% に増加

生のイメージ (上) と HDL Coder で開発したフィルターを適用したイメージ (下)。

サーマル イメージングの赤外線カメラは、セキュリティ、消防、ガス漏れの検出、実験と計測など、商業用アプリケーションで幅広く使用されています。カメラに内蔵されている FPGA は、センサーや検出器で生成された信号をフィルターにかけて処理します。通常、新しい信号処理コンセプトから量産カメラでリアルタイムに実行されるアルゴリズムを開発する場合、アルゴリズム担当エンジニアが開発したアルゴリズムをハードウェア担当エンジニアが HDL に変換しなければなりません。しかし、ハードウェア担当エンジニアがアルゴリズムの機能に精通しているとは限らないため、これは時間のかかる作業となります。

FLIR Systems では、MATLAB® で高度なアルゴリズムを開発、シミュレーションし、HDL Coder™ を使用してこれらのアルゴリズムを 短期間でFPGAに実装しています。FLIR の Manager of Image Processing Technology である Nicholas Hogasten 氏は次のように述べています。「以前では、アイデアが製品に組み込まれるまで長時間がかかったため、顧客にシミュレーションを見せることはほとんどありませんでした。しかし最近、新しいサーマル イメージング フィルターのシミュレーションを主要な顧客に見せる機会がありました。これは、当社が今までに開発した中でも、最も複雑なフィルターです。数か月後、HDL Coder を使用してこの新しいフィルターを生成し、実際のカメラに組み込んでこの顧客に見せたところ、カメラが MATLAB のシミュレーション通りに機能したため、非常に感心していただきました。」

課題

FLIR の従来の開発プロセスにおける問題は、新しいアイデアおよびアルゴリズムを開発するアルゴリズム担当エンジニアと、アルゴリズムを FPGA に実装するハードウェア担当エンジニアの連携にありました。アルゴリズム担当エンジニアがノイズ除去やダイナミック レンジ圧縮に関する新しい手法を検討してから、書面による仕様書をハードウェア担当エンジニアに渡していましたが、ハードウェア担当エンジニアはアルゴリズムについて十分に理解していないことがありました。

Hogasten 氏は次のように述べています。「多くの場合、FPGA への実装はシミュレーション通りに動作せず、実装とアルゴリズムのどちらに問題があるのかを判断することはできませんでした。また、ハードウェア担当エンジニアがアルゴリズムについてよく理解していなかったため、最適化のためにどの条件に手を加えても影響が出ないかが分かりませんでした。さらに、アルゴリズムをわずかに拡張しただけでも、ほとんどの HDL を書き直さなければならないということがありました。」

ソリューション

FLIR では FPGA ベースのサーマル イメージング アルゴリズムの開発において、MATLAB と HDL Coder を使用した新しいワークフローを確立しました。

アルゴリズム担当エンジニアが MATLAB と Image Processing Toolbox™ を使用し、モルフォロジー演算と多次元画像フィルター処理に基づいて新しいアルゴリズムを検討します。

ここで、実装するアルゴリズムが選択され、ターゲット FPGA ハードウェアにマッピングされるアルゴリズムのコンポーネントが特定されます。この機能分割の作業では、Image Processing Toolbox の高抽象度の関数が、コード生成をサポートする MATLAB コードに置き換えられます。そして、Image Processing Toolbox のアルゴリズムによってゴールデン リファレンスが作成され、FLIR によるカスタム MATLAB コードの検証が容易になります。

ビットトルゥーのシミュレーションと解析のために、HDL Coder に統合されている浮動小数点から固定小数点への変換ワークフローにより、浮動小数点の MATLAB アルゴリズムが、Fixed-Point Designer™ により、固定小数点のデータ型と演算が組み込まれたMATLAB コードに自動変換されます。

また、FLIR で使用されている他のテスト環境をサポートするため、生成した固定小数点の MATLAB コードから MATLAB Coder™ を使用して C コードと MEX ファイルが生成されます。

次に HDL Coder を使用して、MATLAB アルゴリズムから合成可能な HDL コードが生成されます。その後、HDL コードが FPGA に実装されてテストが行われ、結果を固定小数点の MATLAB アルゴリズムからの結果と比較して検証されます。

関連するプロジェクトでは、エンジニアが MATLAB Compiler™ と Image Acquisition Toolbox™ を使用してカメラとフレーム グラバーからイメージを取得し、さまざまなアルゴリズムを使用してイメージを処理して、結果を表示するアプリケーションを構築しました。このアプリケーションによって、FLIR のエンジニアは MATLAB がインストールされていない場合でも、一定範囲の入力に対してアルゴリズムを評価できるようになります。

結果

  • コンセプトから実地試験可能なプロトタイプ作成までの期間を 60% 短縮. Hogasten 氏は次のように述べています。「MATLAB と HDL Coder を利用することで、初期のアルゴリズムを手作業で HDL に書き直す作業を排除できました。現在はアルゴリズムの開発者が自分で FPGA のプロトタイプを作成できるため、プロトタイピングにかかる期間を 60% 短縮しています。」
  • 以前は数週間要したアルゴリズムの拡張を数分で完了. Hogasten 氏は次のように述べています。「最近、当社のエンジニアに、コア フィルターのアルゴリズムに大幅な変更を行うように依頼したところ、3 時間後には MATLAB での変更が済み、HDL Coder を使用して FPGA へのアルゴリズムの再実装が完了しました。以前では、このような変更には 6 週間要していました。」
  • コードの再利用がゼロから 30% に増加. Hogasten 氏は次のように述べています。「現在当社では、アルゴリズム、シンプルなコンポーネント、HDL コード生成用に検証された MATLAB コードを集約した共有のリポジトリがあります。以前には、基本的にコードの再利用は行っていませんでしたが、現在では MATLAB コードの 30% を再利用して他のプロジェクトの HDL を生成しています。」