*

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

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

関連記事

toppers

C言語でEV3開発(16)-TOPPERS/HRP2 EV3 で Bluetooth割込み

どもです。 今回は、EV3 の環境をTOPPERS/HRP2 EV3RT で作成したアプリをPC上

記事を読む

toppers

C言語でEV3開発(20)-超音波センサと安全状態

どもです。 前回は、BluetoothでPCとEv3を接続してコマンドの送受信について書きました。

記事を読む

no image

C言語でEV3開発(10)-opOUTPUT_CLEAR_COUNTコマンド

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

記事を読む

toppers

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

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

記事を読む

Qt_logo_2016

QtでRaspberryPi/GUI開発(2):ためしに時計を作ってみた(其の弐)

どもです。 前回のエントリーでは、ラジオボタンのグループ化と、選択されたボタンの特定方法まで記載し

記事を読む

toppers

C言語でEV3開発(27)-EV3にヒステリシス処理を実装してみた

どもです。 今回は、モーターから読み出した値に対するヒステリシス・フィルター処理です。 0.

記事を読む

OpenCvLogo

OpenCvによる画像サイズ変更

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

記事を読む

eclipse_4.3_kepler

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

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

記事を読む

google_test_top

C言語でEV3開発(5)

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

記事を読む

eclipse_oxygen

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

どもです。 前回のエントリでは、Windowsに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
RaspberryPi3対応のタッチスクリーンを買いました

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

no image
QtでRaspberryPi/GUI開発(3):ためしに時計を作ってみた(其の参)-StyleSheetの適用

どもです。 前回のエントリーでは、グループ化されたボタンに対するイベ

Qt_logo_2016
QtでRaspberryPi/GUI開発(2):ためしに時計を作ってみた(其の弐)

どもです。 前回のエントリーでは、ラジオボタンのグループ化と、選択さ

raspberry-pi
QtでRaspberryPi/GUI開発(1):ためしに時計を作ってみた

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

no image
Windows-QtCreatorでのデバッグ

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

→もっと見る

PAGE TOP ↑