OpenMVカメラは、小型で低消費電力のマイクロコントローラーボードであり、現実世界で機械視覚を活用したアプリケーションを容易に実装できます。C/C++ではなく、高水準のPythonスクリプト(MicroPythonオペレーティングシステムによる)でOpenMVカメラをプログラミングします。これにより、機械視覚アルゴリズムの複雑な出力処理や高水準データ構造の操作が容易になります。しかし、Pythonを通じてOpenMVカメラとそのI/Oピンを完全に制御できます。外部イベントに応じて写真や動画の撮影を簡単にトリガーしたり、機械視覚アルゴリズムを実行してI/Oピンの制御方法を判断したりすることが可能です。
OpenMVカメラの特徴:
- STM32H743IIARM Cortex M7プロセッサー、動作周波数480 MHz、32MB SDRAM + 1MB SRAM、32MB外部フラッシュ + 2MB内部フラッシュを搭載。すべてのI/Oピンは3.3V出力で5V耐性あり。プロセッサーは以下のI/Oインターフェースを備えています:
- コンピュータへのフルスピードUSB(12Mbps)インターフェース。OpenMVカメラを接続すると、仮想COMポートおよびUSBフラッシュドライブとして認識されます。
- 100Mbsの読み書きが可能なμSDカードソケットにより、OpenMVカメラは写真を撮影し、機械視覚アセットをμSDカードから容易に取り出すことができます。
- 最大80Mbpsで動作可能なSPIバスにより、LCDシールド、WiFiシールド、または他のマイクロコントローラへシステムから画像データを容易にストリーミングできます。
- I2Cバス(最大1Mb/s)、CANバス(最大1Mb/s)、および他のマイクロコントローラやセンサとのインターフェース用の非同期シリアルバス(TX/RX、最大7.5Mb/s)を備えています。
- 12ビットADCと12ビットDAC。
- サーボ制御用の2つのI/Oピン。
- すべてのI/Oピン(ボード上には10本のI/Oピンがあります)で割り込みとPWMをサポートします。
- また、RGB LEDと2つの高電力850nm赤外線LEDを搭載しています。
- 32 MBの外部32ビットSDRAM、100 MHzでクロックされ、400 MB/sの帯域幅を実現。
- 32 MBの外部クワッドSPIフラッシュは、4ビットDDRモードで100 MHzでクロックされ、100 MB/sの帯域幅(読み取り速度)を実現します。
- 取り外し可能なカメラモジュールシステム、8ビットパラレルをサポートし、OpenMV Cam H7が異なるセンサーとインターフェースできるようにします:
- OpenMV Cam H7 PlusにはOV5640イメージセンサーは2592x1944(5MP)の画像を撮影可能です。ほとんどの単純なアルゴリズムはQVGA(320x240)解像度以下で25-50 FPSで動作します。お使いのイメージセンサーには標準M12レンズマウントに2.8mmレンズが付属しています。より特殊なレンズを使用したい場合は、簡単に購入してご自身で取り付けることができます。より特殊なレンズをお使いになる場合も、簡単に取り付け可能です。
- プロフェッショナルなマシンビジョンアプリケーション向けに、当社のSingTownを購入できます。グローバルシャッターカメラモジュールMT9V034SingTown
- 赤外線熱画像マシンビジョン用途には、当社のSingTownをご購入いただけます。FLIR Lepton熱画像モジュール。
- 3.7Vリチウムイオン電池インターフェース、当社のSingTownを購入できます3.7V-1000MAHリチウムイオン電池
ドキュメンテーション:https://singtown.com/openmv/
アプリケーション
現在、OpenMVカメラは以下のことが可能です(今後さらに追加予定):
- ニューラルネットワーク物体検出
- OpenMVを使用してニューラルネットワークをトレーニングし、任意の検出対象を認識させることができます。例えば、異なる数字、果物、マーカー、部品、または特定の不規則なターゲットなど、様々な対象をトレーニングして、特定ターゲットの数値、座標、オブジェクトタイプ名を識別できます。
- 当社のビデオチュートリアルに基づいて、実際の道路で交通標識を検出できます。例えば、クラクション禁止、駐車禁止、制限速度80などです。/learn/50918
- ニューラルネットワーク分類
- OpenMVを使用してニューラルネットワークをトレーニングし、物体検出を行うことができます。検出したい任意のターゲットをトレーニング可能です。例えば、異なる数字、異なる果物、異なるマーカー、異なる部品、または任意の特定の不規則なターゲットをトレーニングし、特定のターゲットの番号、座標、および物体タイプ名を識別することができます。
- 当社のビデオチュートリアルに基づいて、人がマスクを着用しているかどうかを分類できます。/learn/50872
- TensorFlow Lite for Microcontrollers
- TensorFlow Liteサポートにより、OpenMVカメラ上でカスタム画像分類およびセグメンテーションモデルを実行できます。TensorFlow Liteを使用すると、画像内の複雑な領域を容易に分類し、認識した内容に基づいて1/0ピンを制御することが可能です。
- フレーム差分
- OpenMVカメラでフレーム差分アルゴリズムを使用すると、シーン内の動きを検出できます。フレーム差分により、OpenMVをセキュリティ用途に活用することが可能です。
- カラートラッキング
- OpenMVを使用すると、画像内で最大16色を同時に検出できます(ただし、4色以上を見つける必要はほとんどありません)。各色は任意の数の異なるブロブを持つことができます。OpenMVは各ブロブの位置、サイズ、中心、および向きを通知します。色追跡を使用することで、OpenMV Camをプログラムして太陽を追跡したり、ラインを追従したり、ターゲットを追跡したりすることができます。ビデオデモ:/learn/49993
- マーカートラッキング
- OpenMVカメラを使用して、個々の色ではなく色のグループを検出することができます。これにより、オブジェクトにカラータグ(2つ以上の色ラベル)を配置し、OpenMVがタグ付けされたオブジェクトの内容を取得できるようになります。
- 顔検出
- OpenMVカメラを使用して、顔(または任意の一般的な物体)を検出することができます。OpenMVカメラは一般的な物体検出のためのHaarテンプレートを処理でき、顔と目を検出するための正面顔および目用のHaarテンプレートが内蔵されています。/learn/50013
- アイトラッキング
- アイトラッキングを使用して、誰かが見ている方向を検出できます。これを使ってロボットを制御することが可能です。アイトラッキングは、画像内に目が存在するかどうかを検出しながら瞳孔の位置を検出します。
- 人物検知
- 組み込みの人物検出器(TensorFlow Liteモデル)を使用して、視野内に人物がいるかどうかを検出できます。
- オプティカルフロー
- オプティカルフローを使用して、OpenMVカメラの前の動きを検出できます。例えば、クアッドコプターにオプティカルフローを適用して、空中での安定性を制御することが可能です。
- QRコード検出/デコード
- OpenMVカメラを使用して視野内のQRコードを読み取ることができます。QRコードの検出・デコードにより、スマートロボットが環境内のラベルを読み取る機能を実現できます。
- Data Matrix検出/デコード
- OpenMV CamはData Matrixコード(2次元バーコード)の検出とデコードも可能です。詳細はこちらの動画でご覧いただけます。
- リニアバーコードデコード
- OpenMV Camは1次元バーコードも処理可能です。EAN2、EAN5、EAN8、UPCE、ISBN10、UPCA、EAN13、ISBN13、I25、DATABAR、DARABAR_EXP、CODABAR、CODE39、CODE93、CODE128をデコードできます。詳細はこちらの動画をご覧ください:/learn/50017
- AprilTagトラッキング
- 上記のQRコードよりもさらに優れている点として、OpenMVカメラはAprilTagsも追跡可能です。AprilTagsは最先端の基準マーカーであり、回転不変、スケール不変、せん断不変、照明不変の特性を備えています。詳細はこちらの動画をご覧ください:/learn/49590
- ライン検出
- OpenMV Camはほぼ全フレームレートで動作しながら、無限直線検出を迅速に完了できます。また、非無限の線分も検出可能です。詳細はこちらの動画をご覧ください:/learn/50009
- 円検出
- OpenMVを使用して画像内の円を簡単に検出できます。
- 矩形検出
- OpenMVは、AprilTagライブラリの四角形検出コードを使用して、長方形も検出できます。
- テンプレートマッチング
- OpenMVのテンプレートマッチングを使用して、視野内にテンプレート類似の画像が存在するかどうかを検出できます。例えば、テンプレートマッチングはPCB上のマーカーを見つけたり、ディスプレイ上の既知の数字を読み取るために使用できます。
- 画像キャプチャ
- OpenMVを使用してRGB565/グレースケールのBMP/JPG/PPM/PGM画像をキャプチャできます。Pythonスクリプトで直接画像のキャプチャ方法を制御できます。最も重要なのは、機械視覚アルゴリズムを使用して線を描画し、文字を描画し、その後保存することです。
- ビデオ録画
- OpenMVカメラを使用して、RGB565/グレースケールのMJPEG動画やGIF画像(またはRAW動画)を記録することができます。Pythonスクリプトで各動画フレームの記録方法を直接制御でき、動画記録の開始と終了を完全に管理できます。また、写真撮影と同様に、機械視覚アルゴリズムを使用して線や文字を描画し、その後保存することができます。
最後に、上記のすべての機能は、IOピン制御と組み合わせて、独自のカスタムアプリケーションで現実世界と相互作用するために使用することができます。