*

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開発(10)-opOUTPUT_CLEAR_COUNTコマンド

どもです。 前回のエントリーのラストで、「モーターを動かすコマンド」と書きましたが、今回紹介するコ

記事を読む

no image

Windows/EclipseでRaspberryPiのクロス環境を構築してみた

どもです。 今回は、Windows/EclipseでRaspberry Piのクロス環境を構築した

記事を読む

MindStormControl_SprachScreen

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

どもです。 前回に引き続き、今回もC#/WPFでの独自UI(ユーザーコントロール)の作成についての

記事を読む

toppers

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

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

記事を読む

no image

Windows-QtCreatorでのデバッグ

どもです。 更新の間隔が空いてしまいました。 久しぶりの更新です。 最近、Qtを触り始めま

記事を読む

no image

C言語でEV3開発(9)-opOUTPUT_SPEEDコマンド

どもです。 今回のエントリーでは、前回に引き続きEV3のモーターを動かしていきます。 ただし、単

記事を読む

eclipse-juno-logo

C言語でEV3開発(1)

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

記事を読む

RasPi_Qt

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

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

記事を読む

OpenCvLogo

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

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

記事を読む

toppers

C言語でEV3開発(24)-APIの実行時間を測定してみた。

どもです。 今回、以前から気になっていた、開発環境/プラットフォームであるTOPPERS HRP2

記事を読む

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="">

no image
QtでRaspberryPi/GUI開発(8):pigpioを使用したチャタリング対策の問題の対策

どもです。 だいぶ、間が空いてしまいました。 久しぶりの更新です。

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):イベントハンドラの設定

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

→もっと見る

PAGE TOP ↑