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




白黒判定

 ライントレースでは、「白」「黒」の2色に分ける必要があります。これを画像処理では「2値化」と言います。2値化を行う場合、ある値より大きければ「白」それ以下なら「黒」にします。そのある値を「閾値」と言います。この閾値を最適な値にすることが大変重要となります。
 通常、2値化を行う場合の閾値は全体の値からヒストグラムを求め、2つのピークの間の谷間を閾値とします。マイコンカーで画像処理する場合は特に、移動しながらカメラで画像を取り込み、処理していきますので、色々な場所で光の方向や強さが変化しますので、ヒストグラムを描くことで、正確な2値化が行えます。

ヒストグラム

 しかし、画像処理を行うとすれば処理能力の非力なH8コンピュータで、ヒストグラムを描き、2つのピーク値から閾値を算出し2値化するのは決して簡単なことではありません。  今回、少しでも処理を簡単にする方法として、「アベレージ法」で試みた。

○ アベレージ法

 マイコンカーラリーでは、コースの色が「白」「黒」(「灰」)とコントラストがはっきりしています。そこで、閾値を得る方法として、カメラから読み取った1ライン、128ドットの最大値と最低値から、平均値を計算し、この値を閾値とします。

アベレージ法

ヒストグラム

 この方法は、2つの山のピークが急峻で間隔が広い場合に適用できます。ただし、光が横から差し込んできたりして山がなだらかになったり、光量が少なく山の間隔が狭くなると、うまく2値化が出来なくなります。最近は高速なマイコンも手軽に使えるようになっていますので、ヒストグラムより解析する方法と、このアベレージ法で誤差等をいずれ調査したいと考えています。

○ 実際のデータ

 ここに実際にラインを読みとったときのデータを示します。

実データ

 ラインが8ラインを読みとっていますが、先の法と後ろの方では、平均値の値が2倍ぐらい違います。原因としてLEDライトの光が距離が遠くなるほど当然、弱くなるのでその影響が考えられます。この閾値で2値化した結果が

2値化データ

 1列目で少しノイズがありますが、ほぼ問題なく読み取れています。ただし、このデータは車体を止めてモニタしていますので、走行中のデータではありません。今のところ特に問題はありませんが、速度が高速になるとどうしても誤動作が起きます。関連を今後、調査したいと思います。

○ ライトの効果

 このように2値化という重要な処理をアベレージ法という簡単な方法で処理をしているので、外部から光の強さの影響を受けたくないと考えました。そこでカメラが読みとる位置に白色LEDで光を照射することで、光量を一定に保つようにしました。特にコースをくぐる場所がある時は、効果絶大です。

LEDライト



次回はラインの検出です

<< カメラでラインがどのように見えているか?   目次  ラインの検出 >>