*

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開発(20)-超音波センサと安全状態

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

記事を読む

MY_MFC_LOGO

MFCプログラミング(1):CFileまたはCStdioFileクラスを使用してファイル出力

どもです。 突然ですが、仕事でMFCを使用することになりました。 MFCはこれまで触ったことがな

記事を読む

eclipse_cdt_top_100

C言語でEV3開発(3)

どもです。 今回のエントリーの内容は、前回まででセットアップした環境で、実際にEV3上で動く実行フ

記事を読む

raspberry-pi

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

どもです。 前回のエントリーで、pigpioを使用したチャタリング対策について記載しました。 今

記事を読む

raspberry-pi

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

どもです。 ついに、念願のRaspberryPi3対応のタッチスクリーンを買いました。 今回のエ

記事を読む

no image

自宅で電子工作(1):ブレッドボードでの配線を省略する

どもです。 突然ですが、電子工作を始めてみました。 1.背景 これまで、Raspber

記事を読む

RasPi_Qt

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

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

記事を読む

RasPi_Qt

QtでRaspberryPi/GUI開発(10)-SPI通信をしてみた(その2)

どもです。 えー。 「Qtで…」とか書いておきながら、今回もやっぱりQtは出てきません。

記事を読む

OpenCvLogo

OpenCvによる画像サイズ変更

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

記事を読む

no image

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

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

記事を読む

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

source_trail_eye_catch
Sourcetrailを試してみました(2)-Eclipseと連携

どもです。 前回のエントリで、ソースコードを解析するオープンソース「

source_trail_eye_catch
Sourcetrailを試してみました

どもです。 つい最近、ソースコードの解析に役に立ちそうなツールを見つ

SEN0193_0114_eye_catch
土壌湿度センサーの出力値の比較:SEN0114とSEN0193

どもです。 今回も、センサーの性能、測定結果を比較してみた結果につい

ADT7310_DHT11_eye_catch
温度センサの出力値の比較

どもです。 今回は、センサーの性能、測定結果を比較してみたので、それ

DIY_eye_catch
自宅で電子工作(2)-ラズパイのSPIコネクタ自作

どもです。 今回は、電子工作です。 1.何を作った 今回紹介

→もっと見る

PAGE TOP ↑