*

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)程度となりました。

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

関連記事

google_test

C言語でEV3開発(6)

どもです。 今回のエントリーは、前回のエントリーの続き、google testでの単体テスト環境に

記事を読む

eclipse-juno-logo

C言語でEV3開発(2)

どもです。 今回のエントリーの内容は、前回に引き続き「EV3の開発環境の構築」の追記です。

記事を読む

no image

C言語でEV3開発(21)-モーター出力の制御

どもです。 前回は、超音波センサから前方障害物との距離を取得し、それを元に安全状態を判断する、とい

記事を読む

MindStormControl_SprachScreen

EV3開発サポートツール(1)-C#のユーザーコントロール開発

どもです。 突然ですが、今回はC#に関するエントリになります。 具体的には、C#/WPFで、独自

記事を読む

google_test_top

C言語でEV3開発(5)

どもです。 今回のエントリーは、前回のエントリーでちくっと触れた、「単体テスト」について、です。

記事を読む

toppers

C言語でEV3開発(28)-EV3の移動距離を計算できるようにしてみた

(テーマ) C言語でEV3開発(28)-EV3の移動距離を計算できるようにしてみた (下書き

記事を読む

no image

C言語でEV3開発(11)-opOUTPUT_STEP_POWERコマンド

どもです。 今回のエントリーでは、再びモーターを動かすためのコマンドについて書きます。 コマンド

記事を読む

eclipse_4.3_kepler

elicpse/CDTでのgdbでのソースを追従したデバッグができない問題

どもです。 今回のエントリーは、Eclipse上でgdbを利用したデバッグ中に発生する問題について

記事を読む

no image

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

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

記事を読む

eclipse_oxygen

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

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

記事を読む

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
QtでRaspberryPi/GUI開発(7):pigpioを使用したチャタリング対策の問題

どもです。 前回のエントリーで、pigpioを使用したチャタリング対

RasPi_Qt
QtでRaspberryPi/GUI開発(6):pigpioを使用したチャタリング対策

どもです。 前回のエントリーで、pigpioを使用したボタンを使用し

RasPi_Qt
QtでRaspberryPi/GUI開発(5):pigpioを使ってみた

どもです。 RaspberryPiを購入して、LEDも手に入れたので

RasPi_Qt
QtでRaspberryPi/GUI開発(4):イベントハンドラの設定

どもです。 前回のエントリーで、「タッチスクリーンを買った」と書きま

raspberry-pi
RaspberryPi3対応のタッチスクリーンを買いました

どもです。 ついに、念願のRaspberryPi3対応のタッチスクリ

→もっと見る

PAGE TOP ↑