公開日:2022/12/20
ここ数年、自動運転や無人コンビニなど、画像処理とAIを融合したサービスが話題になったことや、スマートフォンのQRコード決済や顔認証など、様々な分野で画像処理技術が活用されています。
このように身近になってきた画像処理技術ですが、組込みシステムで実現する場合、汎用マイコンでは処理が遅いため、FPGAや専用ICなどを使って処理を高速化するのが一般的です。この場合、回路構成が複雑になったり、BOMコストが高くなるなどの問題があります。
今回はそのような問題を解決するために、RZ/A2Mに内蔵されたDRP(Dynamically Reconfigurable Processor:動的再構成可能プロセッサ)を使って、画像処理性能を最大で10倍以上に高速化する方法をご紹介します。
1.DRPの概要
DRPはルネサス エレクトロニクス社が開発したプログラマブルなハードウェアです。
「Dynamically Reconfigurable Processor(動的再構成可能)」とあるように、中身の回路構成を動的に変更できる特徴を持っています。
DRPは主に以下の2つの機能からなります。
- ダイナミック・リコンフィギュレーション
- 一つの処理を複数のデータパスに分解して並列的に実行する機能
- ダイナミック・ローディング
- 演算器の構成(処理)を約1msという短時間で即座に切り替えられる機能
演算器の構成を瞬時に切り替えられるため、例えばノイズ除去や画像フィルタのような専用のアルゴリズムを用いた、複雑で複数の処理をCPUの遅延なくスムーズに処理できます。
なお、FPGAでも回路構成を動的に変更することもできますが、コンフィグレーションに時間がかかることや、回路の一部のみを入れ替えたりする機能はないため、DRPのようにシームレスに処理を行うことが困難で、静的に回路を配置して利用するのが一般的です。
項目 | DRP | FPGA |
---|---|---|
構成要素 | 小規模プロセッサをアレイ状に並べた構造 | 論理ゲート(ロジックエレメント/ロジックセル)をアレイ状に並べた構造 |
回路変更時間 | 約1ms(ダイナミック・ローディング機能使用時) | 数ms~数十ms |
プログラム記述言語 | C言語 | HDL言語 |
また、DRPの特長として、C言語ベースで実装できるという点があります。
従来FPGAなどではハードウェア技術者がHDL言語などを使って、処理を記述する必要がありますが、DRPはC言語で記述できますので、ソフトウェア技術者がすべての処理を実装することが可能です。また、複雑なアルゴリズムの実装が容易で、メンテナンス性も向上します。
その他のDRPの特長については、ルネサス エレクトロニクス社のWebサイトをご参考ください。
動的再構成プロセッサ(DRP:Dynamically Reconfigurable Processor)DRPの機能と利点(ルネサス エレクトロニクス社)
2.DRPで画像処理時間が1/10以下に
RZ/A2Mは、Arm® Cortex®-A9 528MHzとDRPを搭載し、内蔵RAM 4MByteのほか、カメラ入力、LCD出力、EthernetやUSBなどのインタフェース機能を内蔵しています。
今回は、RZ/A2M搭載CPUボード「AP-RZA2-0A」とタッチパネルLCD「LCD-KIT-C01」、MIPIカメラ「Raspberry Pi Camera V2」を使って、画像処理のテストを行ってみます。
「AP-RZA2-0A」の詳細については、製品ページを参照してください。
今回の画像処理のテストでは「ノイズ除去処理」「Cannyエッジ処理」「ヒステリシス判定処理」を実行して輪郭を抽出します。
これらの処理をDRPで行った場合とソフトウェア(OpenCV)で行った場合の処理時間を比較します。
今回のテストでは、さまざまな小物を載せた回転する台座を撮影対象としました。
(1)ソフトウェア(OpenCV)のみで画像処理を行った場合
まずは、DRPを使用せず、RZ/A2MのCPU(Arm Cortex-A9 528MHz)のみで画像処理を行ってみます。画像処理のミドルウェアは、一般的なOpenCVを使用しています。
画像内の黄色の線が輪郭(エッジ)を検出した箇所になります。
RZ/A2Mによる画像処理の様子(DRP無し)
1フレームの処理(ノイズ除去+エッジ検出・ヒステリシス判定の合計)で124.546msかかっています。
(2)DRPを使用して画像処理を行った場合
次に、DRPを使って同様の処理を行ってみます。
RZ/A2Mによる画像処理の様子(DRP有り)
1フレームの処理(ノイズ除去+エッジ検出・ヒステリシス判定の合計)が7.041msで完了しています。DRP無しの場合が124msなので、約1/18に処理時間が短縮されていることがわかります。
3. DRPを使った画像処理プログラムの作成
3-1. DRPライブラリについて
RZ/A2MのDRP機能を使用する場合、ルネサス エレクトロニクス社から提供されている「DRPライブラリ」を使用します。
「DRPライブラリ」では、画像処理に必要な様々な機能が用意されており、RZ/A2Mのプログラムから関数として呼び出すことで、DRPを全く意識することなく使用することができます。以下は、DRPライブラリで提供される機能の一部です。
カテゴリ | 機能名 | 概要 |
---|---|---|
Image proccessing | Simple ISP with background subtraction | 背景差分法により移動物体の抽出を行う |
Simple ISP with distortion correction | 樽型歪み補正を行う | |
Simple ISP with color calibration and 3DNR | カラーマトリクス補正や3Dノイズリダクションにより、色再現性の高い画像を出力する | |
Image transformation | Bayer2Rgb | CMOSカメラからのRAWデータをRGBカラーへ変換する |
BinarizationFixed | 画像を固定閾値(Threshold)で二値画像へ変換する | |
GammaCorrection | 画像全体をガンマ値により補正する | |
ResizeBilinearFixed | 画像(RGB)のサイズを変更する | |
ImageRotate | 画像を回転する | |
Image filter | MedianBlur | 画像のノイズを除去する |
GaussianBlur | 画像を平滑化する | |
UnsharpMasking | 画像を鮮鋭化する | |
Laplacian | Laplacianフィルタを使って輪郭を強調した画像を出力する | |
Feature detection | CannyCalculate | Canny法を使って、画像の輪郭を検出する |
MinutiaeExtract | 指紋認識で使用される指紋隆線の特徴点を抽出する | |
CircleFitting | 円を検出する | |
Histograms | Histogram | 入力画像のヒストグラムを生成する |
HistogramNormalization | 画像をヒストグラム正規化する | |
Other | ReedSolomon | Reed-Solomon符号を用いた誤りを訂正する |
Thinning | 細線化した画像を出力する |
DRPライブラリの詳細は、ルネサス エレクトロニクス社の「RZ/A2M FreeRTOS™ Software Package用DRPライブラリ」のページを参照してください。
なお、「DRPライブラリ」以外にオリジナルの機能の実装も可能ですが、一般には公開されていない専用の開発環境が必要になりますので、パートナーベンダなどに依頼する必要があります。
3-2. プログラムの開発手順
今回は、弊社製CPUボード「AP-RZA2-0A」で提供している「DRPサンプルプログラム」を利用して、プログラム開発の手順について説明します。
- (1)サンプルプログラムのインポート
- (2)DRP設定データの確認
- (3)アプリケーションプログラムの記述とビルド
- (4)デバッグ
(1)サンプルプログラムのインポート
まず初めにベースとなるサンプルプログラムをe2studioにインポートします。
e2studioの使い方については、AP-RZA2-0Aのアプリケーションノート「AN1634 RZ/A 開発環境の使用方法(e2studio)」「AN1627 AP-RZA2-0A DRPサンプルプログラム解説」をご参照ください。
(2)DRP設定データの確認
サンプルプログラムのインポートができたら、ルネサス エレクトロニクス社がデフォルトで用意しているDRP設定データを確認してみます。
エクスプローラーから以下のフォルダを開くとDRP設定データが並んでいます。
それぞれのデータの機能については、ルネサス エレクトロニクス社の「RZ/A2Mグループ DRP Libraryユーザーズマニュアル」を参照してください。
RZ/A2M FreeRTOS™ Software Package用DRPライブラリ
(ページ内「RZ/A2Mグループ DRP Driverユーザーズマニュアル」)
(3)アプリケーションプログラムの記述とビルド
1. アプリケーションプログラムの記述
サンプルプログラムは次のファイルにてDRPを制御しています。
ソースコード内の「R_DK2_Load」や「R_DK2_Activate」といったAPIがDRP制御用ドライバAPIです。DRP制御用ドライバAPIについてはルネサス エレクトロニクス社の「RZ/A2Mグループ DRP Driverユーザーズマニュアル」をご参照ください。
RZ/A2M FreeRTOS™ Software Package用DRPライブラリ
(ページ内「RZ/A2Mグループ DRP Driverユーザーズマニュアル」)
各資料やソースコードを参考に、ユーザーは必要なDRPの機能をアプリケーションプログラムに記述します。
2. プログラムのビルド
コーディングが完了したら、「e2studio」のビルドボタンを押して、ビルドします。
(4)デバッグ
1. 実機動作確認
ビルドが正常に完了したら、実機でのデバッグを行います。
「AP-RZA2-0A」にJTAGエミュレータを接続し、電源を投入後、e2studio上のデバッグボタンを押します。正常な場合は、マイコンにプログラムがダウンロードされ、デバッグが開始されます。
e2studioのデバッグ画面を操作して、プログラムが仕様通りに動作しているか確認します。ダウンロードでエラーが発生した場合は、設定を再度確認してください。
サンプルプログラムをそのまま動作させた場合は、撮影した画像に対してコーナー(頂点)検出をして水色で強調するという動作になります。
サンプルプログラムの実行(画面内の水色点がコーナー検出できた箇所)
4. まとめ
今回は、画像処理を劇的に高速化できるRZ/A2MのDRPについて簡単にご紹介しました。
最近のPCやスマートフォン向けのプロセッサには、DRPのようなAIエンジンが標準搭載されていますが、汎用の組込み機器向けマイコンで、同様の機能を実現できるデバイスはまだ少ないと思います。従来、FPGAなどの専用ハードウェアが必要だった画像処理が、ワンチップで、しかもソフトウェアのみで実装できるのは、RZ/A2Mの大きな利点です。
画像処理の高速化やコストダウンなどでお悩みの方は、選択肢の一つとして検討してみてはいかがでしょうか。
製品のご案内
本コラム以外にも開発にお役立ていただける技術情報をアプリケーションノートとして公開しております。
ご興味のある方は、ぜひ製品をご利用ください。
- ※ArmおよびCortexは、米国および/またはその他の地域におけるArm Limited(またはその子会社)の登録商標です。
- ※記載されている会社名、製品名は、各社の登録商標または商標です。
- ※記載の内容は改良のため、予告なく変更する場合がございます。