OpenCVとは

OpenCV とは、画像処理を想定したオープン・ソース・コンピュータ・ビジョン・ライブラリです。
BSD(Berkeley Software Distribution)ライセンスの下で、教育目的および商用目的の両方に対して無償で提供されています。

近年、カメラが人の眼となって安全で快適な暮らしをサポートする応用製品をよく見かけるようになりました。みなさんも以下のような画像処理技術を応用した製品をニュースでご覧になったことはありませんか?

Article header library 125693 pic01  2
応用製品の例

このような応用製品などの機器では、高度な画像処理の技術が必要とされ、日々進化しています。

また、カメラから出力された画像データ情報から「物体を検知」するためには複雑な数学的なアルゴリズムの知識を要しますが、OpenCVで数行のプログラムを記述すれば、簡単に物体検知を実現することができます。

OpenCVを使って出来ること

OpenCVを使って出来ること

画像処理

  • イメージ・フィルタリング
  • 画像変換
  • ColorMaps
  • 構造解析
  • 特徴検出

映像解析

  • モーション解析
  • 対象追跡
  • 高密度オプティカル・フロー
  • カルマン・フィルタ

障害物検知

  • カスケード分類器
  • 関心領域検出

更にOpenCVについて詳しく知りたい方はこちらをご覧ください。
OpenCV: Introduction

OpenCV のパフォーマンス

以下2つのグラフは、TI社のWEBにて公開されているものです。
特定のデバイスに搭載されたArm コアおよび DSP コアについて、Arm コアから DSP コアにコードを移動した場合に、OpenCVルーチンがどのくらい高速化されたのかグラフから読み取ることができます。

尚、Cortex-A15 コアのパフォーマンスは 1 を標準としており、C66x コアのパフォーマンスは、Cortex-A15 に対する相対値で示されています。また、この比較では、コア数とプロセッサの速度を考慮に入れています。

ベンチマーク対象のコアが Arm A15(1.5GHz)が2個、C66x DSP(750MHz)2個の場合

Article header library 125693 pic03  1
出典:http://www.tij.co.jp/ja-jp/processors/dsp/libraries/open-cv.html


ベンチマーク対象のコアが Arm A15(1.2GHz)が4個、C66x DSP(1.2GHz)8個の場合

Article header library 125693 pic04  1
出典:http://www.tij.co.jp/ja-jp/processors/dsp/libraries/open-cv.html

※ユーザーから見た場合、DSP コアを利用した高速化は透過的に行われます。測定されたパフォーマンスは、ある時点でのコンパイラによる結果であり、DSP 用に最適化したものではありません。

TI社では、デバイスの Arm コアから DSP コアにオフロードを行うことで得られる相対的なパフォーマンスの改善を示した表もございますので、詳しくはこちらをご覧ください。
OpenCV ライブラリ(TI社オフィシャルサイト)

OpenCVに対応した TI社のプロセッサ

TI社の製品では、すべての Arm® Cortex®-A ベース・プロセッサで OpenCV 3.1 を全面的にサポートしています。

これには、AM335x、AM437x、および AM57xx Sitara プロセッサ・ファミリに加え、66AK2x マルチコア DSP + Arm プロセッサ・ファミリのプロセッサも含みます。また、複数の Arm Cortex-A15 コアを備えたプロセッサに対し、すべての OpenCV 機能でマルチコア Arm がサポートされています。

代表的な対応製品の特長

特  長 高性能マルチコア
プロセッサ
Video入力サポート
プロセッサ
最も汎用性の高い
プロセッサ
シリーズ名 AM57x AM437x AM335x
Processing Cortex®-A15@1.5GHzx2
(Max10500DMIPS)
DSP(C66x@750MHz)x2
Cortex®-A9@1GHz
(Max2500DMIPS)
Cortex®-A8@1GHz
(Max2000DMIPS)
Graphics 2xSGX5443D, GC3202D,
IVAHDVideoAccelerator
SGX530 SGX530
メモリ DDR3(L) LPDDR2/DDR3(L) LPDDR1/DDR2/DDR3(L)
ペリフェラル
  • USB3.0
  • ディスプレイサブシステム
    (HDMI,3系統LCD出力)
  • Video入出力
  • 10/100/1000EMACx2
  • QSPI, SATA, PCIe
  • USB2.0
  • ディスプレイサブシステム
  • Video入力
  • 10/100/1000EMACx2
  • QSPI
  • USB2.0
  • LCDコントローラ
  • 10/100/1000EMACx2
工業通信 2つのプロトコルを同時処理 2つのプロトコルを同時処理 EtherCAT, EthernetIP, Profinetなど


※サポートされているOpenCVモジュールを知りたい方はこちらをご覧ください。
OpenCV - Texas Instruments Wiki

無償のプロセッサ SDK の一部としてOpenCVが付属

OpenCV は、TI社が無償提供しているプロセッサSDKの一部として付属しており、以下のデバイス向けにご用意しています。プロセッサSDKはそれぞれの製品名に掲載したリンクからダウンロードできます。

Sitara AM335x, Sitara AM437x, Sitara AM57x

C6000 DSP + Arm 66AK2Ex, C6000 DSP + Arm 66AK2Hx, C6000 DSP + Arm 66AK2Gx

最後に

いかがでしたでしょうか。今回ご紹介したTI社のSitara プロセッサ・ファミリを使って、実際に歩行者の検知も行ってみました。環境準備から動作の結果まで紹介していますので、是非こちらの記事も合わせてご覧ください。

OpenCV対応のArm(R)プロセッサで人物検知をしよう


おすすめ記事/資料はこちら

産業用イーサネット規格にマルチ対応!ASICやFPGA不要のプロセッサ
フレーズに応答する音声認識デモを作ってみよう

商品の購入はこちら

TMDSEVM572X
TMDXIDK5728
TMDXIDK5718
BEAGLEBOARDX15
BBB01-SC-505

メーカーサイト/その他関連リンクはこちら

スケーラブルな TI のプロセッサ向け Linux、TI-RTOS、Androidソリューション
C66x opencv - Texas Instruments Wiki
OpenCV AM57 Test Instructions - Texas Instruments Wiki