*

RaspberryPiで物体検出(2)-白線検出への挑戦(2):輪郭検出による白線検出(実機編)

公開日: : 最終更新日:2018/06/21 C++, OpenCv, RaspberryPi, 開発

どもです。
今回は、前回に引き続きOpenCvを用いて道路の白線検出について、です。

1.今回の環境
開発環境は、前回と同じで下記の通りです。
OS:Linus Ubuntu 16.04 LTS
IDE:Eclipse Oxygen
OpenCv:3.4.1

しかし実行環境は、「Raspberry Pi 3 model B」にしています。
OpenCvについては、開発環境と同じバージョンを使用しています。

2.白線検出のために実施した内容
基本的な流れは、前回と同じで下記の通りです。

1. 画像のグレー化
2. フィルター処理
3. 2値化
4. 輪郭検出
5. 検出描画

です。
これらの処理は、全てOpenCvが提供しているAPIを使用しています。
また、「3. 2値化」でのパラメータ設定により、結果が変化します。

なお、今回の実装では、時間の短縮/計算量の削減を目指して、白線検出の範囲を画面下半分に限定するようにしてみました。

3.実装です
白線検出(描画含む)の実装の一部抜粋を示します。

CRoiObjectDetectionクラスは、前回の記事で示したクラスを継承しています。

検出の対象範囲を画面下側に限定する際には、OpenCvの「ROI」(Region of Interest)を使用しています。
さらに、単に画面下側に限定するのではなく、下側の左/右に分割しています。
これは、輪郭検出の際に、原点が左上にあることが原因(だっけかな?)で、左上から右下に対して、不要な輪郭が検出されてしまうためです。
コレに対応するため、左下側の画像については、

1. 左右反転
2. 輪郭検出と描画
3. 左右反転(元に戻す)

という処理を行っています。
コレにより、不要な輪郭の検出が無くなります(無くなりました)。

4.結果です
…えー…RaspberryPi3で動かしましたが…、全っ然使えません。
認識から描画まで、おおよそ2秒かかってしまいます。

※録画ができていないので、その様子が見せられないのが残念です。

さてさて。
いよいよ、実機での画像解析が適さないことが判明してきました。

どうしましょう。

余談ですが、開発環境側で上記プログラムを動作させた場合には、まったく問題ない速度で処理できます。
PCのパワーに頼ったやり方は、やはりスマートではないですね。

5.公開しています
今回のアプリケーションについて、GitHubで公開しています。
必要に応じて、参照してみてください。

ではっ!

2018/06/21:追記
ROIでの物体検出の処理に要する時間を計算してみました。
その結果、おおよそ80msec ~ 150msecを要していました。
6.6 ~ 12.5(FPS)程度となりました。

う~ん、もう少し処理は遅いする気がするが、コレが測定結果です…。

関連記事

no image

C言語でEV3開発(15)-TOPPERS/HRP2 EV3 で PID制御

どもです。 今回のエントリーは、コレまでのエントリーから内容を変えて、モーターの動作の制御をします

記事を読む

toppers

C言語でEV3開発(23)-モーターの性能確認

どもです。 今回は、EV3に付属しているモーター(Lモーター/Mモーター)の性能について調べてみた

記事を読む

no image

C言語でEV3開発(4)

どもです。 今回のエントリーは、前回のエントリー内容/EclipseでEV3の実行ファイルをビルド

記事を読む

eclipse_oxygen

Eclipse/CrossCompile環境でプロジェクトをクリーンできない

どもです。 今回は、Eclipseでクロスコンパイル環境を作成した場合、を実行すると「指定されたフ

記事を読む

Splash

EV3開発サポートツール(3)-Ev3Controller

どもです。 今回は、以前ちらりと紹介した、Ev3のモーターの出力を調整するアプリケーションについて

記事を読む

eclipse_4.3_kepler

eclipse/CDTにおけるgdbでのデバッグ中に発生するpythonのエラー

どもです。 今回のエントリーは、Eclipse上でのデバッグの際に「pythonのエンコードエラー

記事を読む

toppers

C言語でEV3開発(19)-コマンド通信処理でEchoBackしてみた

どもです。 前回は、Bluetoothの接続状態の変化に伴う、状態遷移について書きました。 今回

記事を読む

OpenCvLogo

OpenCvによる画像サイズ変更

どもです。 最近、カメラの動画をOpenCvで加工する、ということに挑戦し始めました。 しか

記事を読む

no image

Objective-CからC++コードを呼び出す

どもどもです。 今回は、突然ながらMacに関係する投稿です。 ソフト関係のことを勉強していて

記事を読む

eclipse-juno-logo

C言語でEV3開発(1)

どもです。 2回目の投稿。 本格的な投稿としては、初めての投稿になります。 内容は、LEG

記事を読む

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

raspberry-pi
RaspberryPiで物体検出(2)-白線検出への挑戦(2):輪郭検出による白線検出(実機編)

どもです。 今回は、前回に引き続きOpenCvを用いて道路の白線検出

OpenCvLogo
RaspberryPiで物体検出(1)-白線検出への挑戦(1):輪郭検出による白線検出

どもです。 今回は、OpenCvを用いて道路の白線検出について、です

OpenCvLogo
OpenCvによる画像サイズ変更

どもです。 最近、カメラの動画をOpenCvで加工する、というこ

eclipse_oxygen
苦肉の策でLinux/EclipseでRaspberryPiのクロス環境を構築してみた

どもです。 前回のエントリでは、仮想環境(VirtaulBox)を用

eclipse_oxygen
Linux/EclipseでRaspberryPiのクロス環境を構築してみた…がっ!

どもです。 前回のエントリでは、WindowsにRaspberryP

→もっと見る

PAGE TOP ↑