10秒目をつむったら…

画像認識によるライントレースをしようと考えているのですが、いいアルゴリズムが思いつきません。

画像を二値化してみたのですが、その後どのように判断するのでしょうか?

アイデアやヒント、又は参考サイトがあれば是非教えてください。

A 回答 (3件)

No.1 = Interest です。


難しいことを考える前に、まずはすごく単純でいいから動かしてみることが大切だと思います。難しいことは、単純なことができてからでないと手を出せませんからね。

ライントレースをやってみると、非常にいろいろな「難しい」場面に遭遇します。ラインの幅は一定か、照明はどうか、ラインの色、点線、補助マーカー、分岐、鋭角ターン、上り坂、下り坂など、コースの条件によって考慮すべきことが沢山あります。酷かった例としては、紙に印刷されたコースが雨天による湿気で波打ってしまい、コースが平らじゃなかったなんてこともありました。

しかし、こういう難しいことにチャレンジするのは、単純なO字型コースを1時間でも2時間でも安定して走り続けられるようになってからです。そうしないと、コースアウトしたときに何が原因なのか切り分けが出来なくなります。

参考までに、鋭角カーブにも対応できそうなアイデアを考えましたので書いてみます。
【作戦2:今度は画面を縦に切る!】
1.カメラから取得した画像の中心から、縦に1ラインだけデータを取り出す。
2.画面中央のラインから適当な幅をおいて、左右からも1ラインずつデータを取り出す。
3.取り出したデータ中の、黒情報の中心部分をそれぞれ探す。
4.見つかった3つの黒中心位置からラインの状態を判別し、車体とラインの位置関係を求めて、ずれ幅が0になるようフィードバックをかけてステアリングを制御する。

【応用2】
切り出す縦のラインを5本~に増やす。

ああでも、ANo.1のやり方で90度くらいなら上手に曲がれそうな気がしてきた。
    • good
    • 0

画像ラボ・・だったっけな?


画像解析の事について載ってる雑誌があります。
見てみるといいことあるかも。
    • good
    • 1
この回答へのお礼

返信ありがとうございます。
参考にします。

お礼日時:2008/06/06 18:55

画像処理は手を出したことがないのですが、アイデアだけ。



【仮定】
カメラはラインが引かれた床を撮影している。
白い床に、一定の幅で黒いラインが引かれている。
床にはライン以外の模様が存在しない。

【作戦】
1.カメラから取得した画像の適当なところから、水平に1ラインだけデータを取り出す。
2.取り出したデータ中の、黒情報の中心部分を探す。(これがラインの中心になっているはず。)
3.ラインの中心と台車の進行方向とのずれ幅を求めて、ずれ幅が0になるようフィードバックをかけてステアリングを制御する。

【応用】
4.カメラ画像から水平にデータを取り出す位置を複数個所に増やして、黒ラインが直線なのか、カーブなのか判定し、走行速度の加減速に役立てる。

余力があったら OpenCV使ってみたいと思ってます。
http://opencv.jp/document/
    • good
    • 0
この回答へのお礼

返信ありがとうございます。

この方法の問題点としては、90度以上曲がるラインではうまく読み取ることができない?ことですかね。

応用のようにデータを取り出す位置を複数個所に増やすと、この問題点が改善されるかもしれません。

お礼日時:2008/06/06 19:02

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!