画像処理マイコンカー製作




ラインの検出

 2値化後、いよいよトレース用のラインを検出します。今回、ラインを検出するだけでなく「中心点」最小二乗制御法で使います。「ライン幅」クロスライン、ハーフラインの判定に使います。ついでにラインだけでなく「白」の割合も求めます。これは、ハーフラインの処理やゲートバーが開いたかどうかの処理に使うことが出来ます。

○ 白の幅(ライン幅)

白の幅

 読み取った1ラインごとに白い線の幅を求めます。先の2値化によって「白」は「1」となっているので「1」の幅を求めます。
 左端より最初に白(1)が出てくるところを探します。上の図では「開始」のところ「51」の位置です。次に黒(0)が出てくるところを探しますが、上の図では青く囲った「53」のところで黒(0)が出てきてしまってます。しかし、この黒(0)はノイズと考えられるので連続で黒(0)が2回出てくるまでライン幅としています。連続して黒(0)が出てくるのは「70」の位置の白(1)のところまでです。ここまでを白の幅とします。これより「開始」位置と「終了」位置が求まりましたので、次の計算式でライン幅が求めます。

白の幅



 しかし、求めたライン幅が「10」より狭い時は、ノイズとして扱い、読み取った画像に白の幅はなかったことにしています。また、ライン幅より「クロスライン」「ハーフライン」の発見にも使用しています。この部分は、別の章で解説します。
 この処理の問題点は、マイコンカーラリーのコースには中央だけでなくコースの両端にも白のラインが引かれています。このコース端の白を読み取った場合、誤動作してしまいます。マシンの速度が速くなるとどうしても、カーブで外に膨らんでしまいますので、誤動作し脱輪してしまいます。
 対策として、画像をもう少しワイドに見てコースの両端の白と中央の白との3本を常に見れるようにしておきます。3本の白の中から真ん中の白をトレース用のラインとする方法が良いと考えています。
 現在の使用しているカメラでは横の解像度が128ドットですので、もう少し解像度がほしいと思います。解像度が上がれば、この処理を試して見るつもりです。そうすることで、マシンの速度が速くなっても誤動作することなく走行できると考えています。

○ 座標変換と重心

 現在、左端が「0」位置となっていますが、マシンは中央付近を走行しますので、中央付近を「0」とくるように座標変換します。

白の幅

 これで白のライン位置が左に見えれば、「−」に右の位置に見えれば「+」となります、また、次の章で紹介します、「最小二乗制御法」ではこの変換された座標でマシンの位置とラインとの傾きを計算しますので、大変重要な処理になります。併せて、白の幅の重心位置を求めます。これも次の章で紹介します、「最小二乗制御法」で重要となってきます。



次回は「最小二乗制御法」(理論編)です

<< 白黒判定   目次  最小二乗制御法 (入門編)>>