スマートカメラ、コンピュータビジョン、マシンビジョン...呼び名は何であれ、ビジョンアプリケーションはますます多くの製品に取り入れられています。PCBデザイナーにとって馴染み深い典型的なアプリケーションは製造業であり、最近ではスマートフォンの顔認識などもあります。マシンビジョンの設計やシステムに定期的に取り組む精通したデザイナーは、医療、自動車、ロボティクス、航空宇宙、セキュリティ、そして他の分野でも多くのユニークなアプリケーションを目の当たりにしています。
電子業界で起こる興味深いことの一つは、新しい技術がどれほど容易に新しいシステムに統合されていくかです。マシンビジョンは確実に標準化の閾値を超え、開発者サポートや豊富なコンポーネントがデザイナーに提供されており、この分野で革新を望むデザイナーにとっては大きな利点となっています。今日では、新しいデザイナーにとって入門レベルのオプションとなるいくつかの人気のあるハードウェアプラットフォームがあります。プロトタイピングを超え、生産グレードのハードウェアを準備している場合、新しいプロセッサは、機械学習のような先進技術を活用したより高度に統合されたシステムを可能にしています。
このガイドでは、マシンビジョンシステムを構築するために必要なコンポーネントと、組み込み開発者が利用できるリソースについて探求します。マシンビジョンシステムには、カメラや光学系を扱うため、重要なハードウェアおよび機械工学の要素があります。これらのシステムの開発は非常に豊かで、複数の分野にまたがるタスクが含まれます。幸いなことに、コンポーネントメーカーやオープンソースの開発者は、ハードウェア設計とシステム開発を迅速に進めるための多くのリソースにアクセスでき、興味のある開発者はここで紹介するいくつかの例を見て、始めることをお勧めします。
電子機器の観点から見ると、マシンビジョンシステムは他のシステムと比較してやや一般的なアーキテクチャを持っています。以下に示されるブロック図は、マシンビジョンシステムに実装される一般的な高レベルアーキテクチャを示しています。これらのシステムは統合レベルやフォームファクターが異なる場合があり、以下に示されるブロックのいくつかはより強力なプロセッサに統合される可能性があります。
高レベルマシンビジョンシステムアーキテクチャ
他の設計の参考として使用できる典型的なマシンビジョンシステムは存在しません。マシンビジョンは能力であり、特定の製品や設計タイプではありません。上記のブロック図に示されているように、マシンビジョンシステムには共通の特徴がありますが、異なるコンポーネントセットで実装されます。マシンビジョンシステムをサポートするためのコンポーネントリストを提示するのではなく、画像処理アルゴリズムを効率的に実装する方法を見るために、プロセッサレベルから始める必要があります。
MCUやMCUベースのSoCは、機械視覚機能を実装するシステムであっても、常に人気があります。標準的なデジタルインターフェースを持つMCUは、視覚処理用のより専門的なASICとインターフェースすることができ、FPGAはインライン画像取得、DSP機能、その他のシステムレベルの処理を実装するのに十分な大きさになることがあります。GPUは、専用の外部視覚プロセッサを提供し、データをホストコントローラーに戻すことができます。
進歩のレベルに関しては、ほぼリアルタイムの機械視覚には、MPU + FPGAまたはMPU + GPUのアーキテクチャが好ましいです。これらは、高解像度の画像を処理する場合にも好ましいです。なぜなら、FPGA/GPUは並列処理を実装でき、高解像度/高色深度処理が必要な場合の処理時間を短縮できるからです。これは、ロジックが柔軟であるにもかかわらず、高度な処理の管理とアルゴリズムの開発が以前の経験なしには難しいという点で、FPGAの主な利点です。
これは、MCUやMPUが機械視覚アプリケーションでホストコントローラーとして使用できないと言っているわけではありません。例えば、あなたの電話やコンピューターはこれらを使用しておらず、低フレームレートのビデオや静止画像からいくつかの単純な画像処理タスクを実行することができます。公平を期すために、これらのデバイスのCPU/SoCは、高性能MPUよりもはるかに多くの計算能力を持っています。MCUは、解像度が低く、フレームレートが低く、色深度が低い、またはモノクロの画像処理に使用でき、より多くの計算能力を追加すると、より詳細な画像を処理できるようになります。MPUは、外部の高速メモリにアクセスする必要がある場合に生産でより良いオプションです。これは、DDR RAMインターフェースが必要であり、一部の周辺機器にはPCIeが必要になる可能性があることを意味します。これは、通常、遅いMCUには見つからないものです。
もし、システムにより高度な画像認識やセグメンテーションアルゴリズムを実装したい場合、SOM、COM、またはシングルボードコンピュータを機械視覚アプリケーションのメインコントローラとして選択するかもしれません。プロセッサに十分なオンチップメモリと外部RAMがあれば、ほとんどの取得と処理タスクを実装しながら、システムの残りの部分を制御するアプリケーションも実行できることが一般的です。これらのアーキテクチャは、低から中程度のフレームレートのビデオデータにおける閾値ベースの画像セグメンテーションやオブジェクト検出タスクによく使用されます。
低レベルのアナログ信号で基本的に動作する他の多くの設計と同様に、機械視覚システムと設計には考慮すべき独自の電気的課題があります。いくつかの解決策は画像処理レベルにあり、他のものはシステムレベルに関連し、コンポーネント選択に関連しています。ここに、機械視覚設計で設計者が考慮すべき主な課題がいくつかあります:
熱管理:よりコンパクトなシステムに搭載された高解像度カメラは、動作中に多くの熱を受けることがあり、冷却のためにヒートシンクやエンクロージャーを通る空気の流れが必要になることがあります。小さなプロセッサと大きなボードを持つシステムは通常、自己冷却が可能ですが、より小さなボードに高速プロセッサを搭載した場合、熱を除去するためにエンクロージャーに接着されたインターフェース材料が必要になることがあります。
EMI/EMC:機械ビジョンシステムは一般に混合信号システムであるため、デジタルコンポーネントとCMOSセンサーやCCDからの出力との間の干渉を防ぐために適切なレイアウトが必要です。データ変換がチップレベルで行われるため、CMOSがより良い選択肢になるかもしれません。高速処理を伴うコンパクトシステムで正確な画像復元を保証するためには、EMI抑制のためのベストプラクティスをいくつか実装することが重要です。
電力整合性:ビジョンシステムとHMIシステムは、レイアウトが適切に構築されていない場合、高速コンポーネントやプロトコルを使用していない場合でも、電力整合性の問題を経験することがあります。これはフィルタリングで解決できる問題のように思えるかもしれませんが、そうではありません。代わりに、解決策は、ホストボードに入るすべてのデジタル信号のルーティング用にグラウンドプレーンを配置することを確実にするほど単純なものかもしれません。
光学部品の取り付け:ビジョンシステムは、オブジェクトとイメージプレーンを定義し、イメージングセンサー上に鮮明な画像を形成してデータ取得を行うために、光学部品を必要とします。現代の機械ビジョンシステムは、低ヒステリシスで安定したマウントが必要であり、統合モーターコントロールを備えた自動フォーカスが可能です。これは機械設計の課題であると同時に、モーターコントロールとタイミング回路の電力消費に関わる電気設計の課題でもあります。
この記事ではすべての可能なコンポーネントを示すことはできませんが、システムの異なる部分を構築するために使用できる良いコンポーネントリストを提供することはできます。以下のリストには、新しいシステムの各部分から始めるために使用できるいくつかの例示コンポーネントを含めています:
STM32やMSP430のようなMCUは、軽量な機械視覚システムを実行し、いくつかの簡単なAI推論タスクを実装するのに適したオプションです。
もっと計算能力が必要な場合、Zynq FPGAプラットフォームは機械視覚システムにとって素晴らしい選択肢です。Xilinxは、Zynq上で構築された機械視覚システムのための多くの開発者サポートも提供しています。
CMOSイメージセンサーとCCDセンサーは、モノクロまたはカラーであり、解像度の範囲もさまざまです。ON SemiconductorのMT9P031I12STC-DR1は、高解像度機械視覚アプリケーション用のカラーCMOSセンサーの良い例です。
高レベルのアプリケーションを開発するために、OpenCVは、機械視覚システムで使用される標準的な画像処理機能の多くを含む優れたオープンソースライブラリのセットです。他にも、より特化したアプリケーション開発に使用できるオンラインのオープンソースライブラリがあります。
画像認識、セグメンテーション、ビデオデータ内のオブジェクト識別と追跡など、より一般化されたタスクには、GPUまたはFPGAを推奨します。これは、アプリケーション固有の前処理を適用せずに(つまり、生の画像から)行う必要があるためです。ここで言及するのは、イメージセンサーとのインターフェースの方法を考慮する必要があり、センサーはプロセッサーに適合させる必要があるからです。FPGAでは、取得ロジックとその後の処理を、アプリケーションの残りのロジックと並行して実装できます。
システム開発に使用できる人気のオープンハードウェアプラットフォームには、OpenMVがあります。これらのカメラモジュールは、画像取得のためのロジック、光学要素の取り付け用のハードウェア、EMI/EMCおよびSI/PIを確保するためのPCBを組み込んでいます。また、STM32 MCUや他のプラットフォームとも互換性があります。これは、ハードウェアの開発とデバッグの側面に深入りせずに、システム内でより大きなアプリケーションのホストコントローラーとして外部プロセッサーを使用したいアプリケーション開発者にとって良いシステムです。
M7カメラモジュール(左)とFLIR Leptonアダプターモジュール(右)。
マシンビジョンはその全形態で非常に有用であり、高度なMCU、MPU、またはFPGAベースのソリューションがクラウドと統合されるべきであることに驚くべきではありません。クラウドコンピューティングをどのように活用するかによって、データセンターに処理をオフロードする方が、エッジで実行するよりも良い場合がありますので、MCUや軽量MPUが使用されるかもしれません。現場で高速処理が必要な場合、より強力なホストコントローラ(FPGA、MPU + FPGA、またはMPU + GPU)を使用して現場で処理タスクを実行するべきです。再び、選択はデバイス上で画像をクリーンアップして圧縮する前処理の量に依存します。
マシンビジョンを含むAI/MLアプリケーションについては、一部の企業がSoCやASICを、遅いプロセッサの補完やSBCのアドオンモジュールとして提供しています。Google Coralはこれらのオプションの1つで、画像データからの推論を含むTensorFlow Liteモデルを実行するための専用プロセッサとして機能します。他にも、複数のビデオストリームのAI推論をターゲットとするスタートアップから市場に登場しているオプションがあり、理想的にはGPUをより小さなパッケージで置き換えます。
マシンビジョンシステムは、画像をキャプチャして処理するだけでなく、もっと多くのことを行う必要があります。今日のシステムは接続されています、複数のセンサーとインターフェースします。マシンビジョンシステムに必要な他のコンポーネントには以下が含まれます:
マシンビジョンシステムの設計には、複数の分野の専門知識とチームとの協力が必要ですが、これらのシステムのコンポーネント選択は難しくあるべきではありません。マシンビジョンアプリケーション用のコンポーネントを探す必要がある場合は、Octopartの高度な検索およびフィルタリング機能を使用してください。Octopartの電子部品検索エンジンを使用すると、最新のディストリビュータ価格データ、部品在庫、部品仕様にアクセスでき、すべてがユーザーフレンドリーなインターフェースで自由に利用できます。当社の統合回路ページをご覧ください。
最新の記事をチェックするには、ニュースレターにサインアップしてください。