【実施例】
【0015】
次に、本発明の実施例について説明する。
図1は、本発明の実施例に係る走行車線識別システム1の構成例を示す図である。走行車線識別システム1は、車載装置10と撮像部20を含んで構成される。撮像部20は、自車の走行中、自車の周辺エリアを撮像し、その撮像データを車載装置10へ提供する。車載装置10は、撮像データを画像解析することで、白線の検知および認識、車線数の増減、走行車線の識別等を行う。
【0016】
車載装置10は、同図に示すように、入力部100、ナビゲーション部110、マルチメディア再生部120、表示部130、音声出力部140、通信部150、記憶部160、制御部170を含んで構成される。但し、ここに示す構成は一例であり、車載装置10の構成は、これに限定されるものではない。
【0017】
撮像部20は、例えば、車両の後方を撮像するリアカメラ200と、車両の側方を撮像するサイドカメラ210を含む。さらに車両の前方を撮像するフロントカメラを搭載することも可能である。リアカメラ200、サイドカメラ210によって撮像された撮像データS1、S2は、車載装置100へ提供される。好ましい例では、リアカメラ200によって撮像された撮像データS1に基づき白線の検知や認識、車線数の増減、走行車線の識別の判定が行われる。
【0018】
入力部100は、入力キーデバイス、音声入力認識装置、タッチパネルなどにより、ユーザーからの指示を受け取り、これを制御部170へ提供する。ナビゲーション部110は、GPS衛星から送信されるGPS信号、車両に搭載されるジャイロセンサや加速度センサのセンサ出力に基づき自車の現在地を算出し、入力部100から入力された目的地までの案内経路を算出し、算出された経路案内を行ったり、自車位置周辺の道路地図を表示部130に表示させたりする。
【0019】
マルチメディア再生部120は、DVD、CD、ブルーレイディスク等の記録媒体や記憶部160に記憶されたビデオデータ、オーディオデータを再生する。再生されたビデオデータは、表示部130に表示され、オーディオデータは音声出力部140から出力されることができる。
【0020】
表示部130は、液晶ディスプレイやその他の表示装置を含み、例えば、ナビゲーション部110によって生成された道路地図の画像を表示したり、車載装置10のユーザー設定を行うための設定画面やメニュー画面を表示したり、マルチメディア再生部120により再生する音楽データを選択する際の選択画面等を表示することができる。音声出力部140は、ナビゲーション部110によって算出された経路を案内する音声案内を出力したり、車載装置10のユーザーに対して各種音声案内を行ったりする。
【0021】
通信部150は、外部のネットワーク等と無線によるデータ通信を行うことを可能にする。記憶部160は、車載装置10が実行するアプリケーションソフトウエア、制御部170が実行するプログラム、ナビゲーション部110が実行されるときに必要とされる地図データ等を記憶することができる。好ましくは、当該地図データには、車線の基準点を示す複数の車線ノード、当該複数の車線ノード間における車線の区間態様を示す複数の車線リンクを含む。制御部170は、好ましい態様では、ROM、RAMなどを含むマイクロコントローラ等から構成され、ROMまたはRAMは、車載装置10の各部の動作を制御するための種々のプログラムを格納することができる。本実施例では、車両の走行車線を識別する走行車線識別プログラム300を含む。
【0022】
図2は、走行車線識別プログラム300の機能的な構成例を示す図である。走行車線識別プログラム300は、白線認識部310、車線幅検出部320、車線移動検出部330、車線増加検出部340、走行車線識別部350を含んで構成される。走行車線識別プログラム300は、リアカメラ200から一定の周期で提供される撮像データ(画像フレームデータ)を処理し、走行車線を識別するが、この処理の周期または間隔は、必ずしも画像フレームの周期である必要はなく、一定の周期または間隔で走行車線の識別を行うことも可能である。
【0023】
白線認識部310は、リアカメラ200により撮像された自車後方の撮像データを画像解析し、当該撮像データから白線(車線区分線)の検出および認識を行う。リアカメラ200は、例えば、自車後部の中心部に設置され、当該中心部から一定の視野角で後方エリアを撮像する。自車が左白線と右白線により規定された車線を走行しているとき、リアの撮像データには、左白線と右白線が映し出される。白線の検出方法は、任意であるが、例えば、撮像データの白線の輪郭を検出するエッジ検出、あるいは主走査線方向(水平方向)に走査し、一定以上の輝度を有する画素を抽出し、抽出された画素から白線を検出する。さらに白線認識部310は、一定の間隔で配置された複数の白線を検出したときに白線を検出したと認識するようにしてもよい。これ以外の公知の手法により白線の検出を行うものでもよい。白線認識部310は、左白線および右白線を検出することで、自車を基準とする左白線および右白線の位置の認識を可能にする。
【0024】
車線幅検出部320は、白線認識部310によって認識された左右の白線に基づき、自車後方の右車線から左車線までの距離や、自車から右車線までの距離、自車から左車線までの距離を測定する。測定方法は、任意であるが、リアカメラ200が自車の中心に設置されている場合には、例えば、撮像データの中心から左白線および右白線までの画素数をカウントすることで自車中心から左白線および右白線までの距離が測定される。また、実際に撮像された左白線および右白線は、自車の後方に向けて幾分広がるように傾斜されるので、主走査線方向の幾つかの測定地点を予め設定しておき、そこで測定された距離の平均値を算出したり、あるいは自車から一定の距離だけ後方の地点の左白線および右白線の距離を測定するようにしてもよい。
【0025】
図3は、車線幅検出部320によって検出される車線幅の一例を示す図である。車線幅検出部320は、車両Mの中心軸Yから車線R2の左白線Q1までの幅(または距離)W1および中心軸Yから車線R2の右白線Q2までの幅(または距離)W2を測定する。車線R2の車線幅は、幅W1および幅W2を加算することにより求めることができる。また、車線幅検出部320は、撮像データによって隣接する車線R3が撮像されている場合には、中心軸Yから隣接する車線R3の右白線Q3までの幅(または距離)W3を測定することができる。
【0026】
車線移動検出部330は、自車が車線移動をしたか否かを検出する。
図4Aは、車線移動検出部330の処理フローの一例を示す図である。ここで、変数「left」は、車両Mの中心軸Yから直近の左白線までの距離を示し、変数「right」は、車両Mの中心軸Yから直近の右白線までの距離を示し、変数「preLeft」は、1つ前に車線幅検出部320によって検出された中心軸Yから直近の左白線までの距離を示し、変数「preRight」は1つ前に車線幅検出部320によって検出された中心軸Yから直近の右白線までの距離を示す。また、変数「laneChange」は、車線移動を示す変数であり、左車線に車線移動したと判定された場合は「laneChange」に“−1”が設定され、右車線に車線移動したと判定された場合は“1”が設定される。車線移動が行われていない場合は、初期値の“0”が保持される。
【0027】
図4Bは、車線R3から車線R2への左車線への移動であり、この移動の検出を説明する。車両Mが車線R2の地点P2にいるとき、車線幅検出部320によって測定された右白線および左白線までの距離が変数「left」、「right」にそれぞれ設定される(S100、S102)。また、変数「laneChange」は“0”に初期化される(S104)。また、「preLeft」および「preRight」には、車両Mが車線R3の地点P1にいるときの左白線および右白線までの距離が設定されている。
【0028】
次に、車線移動検出部330は、ステップS106に示す条件に合致するか否かを判定する。すなわち、「preLeft」が「preRight」よりも小さく、かつ、「left」が「right」よりも大きく、さらに白線Q2を跨いだことを判定するために、「preLeft」および「right」が予め決められた値(0.2m)よりも小さい、という条件を満足するか否かを判定する。これらの条件を全て満たす場合、車線移動検出部330は、車両Mが左車線に移動したことを検出し、「laneChange」に−1を設定する(S110)。左車線の移動を検出した後は、「preLeft」および「preRight」を初期化(0を設定)し(S118、S120)、処理を終了する。
【0029】
図4Cは、車線R2から車線R3への右車線への移動を示す図である。この場合、「preLeft」および「preRight」には、車両Mが車線R2の地点P3にいるときの左白線および右白線までの距離が設定される。ステップS106によって、左車線への移動ではないと判定されるため、次に、右車線への移動か否かが判定される(S108)。すなわち、「preLeft」が「preRight」よりも大きく、かつ、「left」が「right」よりも小さく、かつ、「preRight」および「left」が予め決められた値(0.2m)よりも小さい場合に、車線移動検出部330は、車両が右車線に移動したと判定し、「laneChange」に“1”を設定する(S112)。右車線の移動を検出した後は、「preLeft」および「preRight」を初期化(0を設定)し(S118、S120)、処理を終了する。
【0030】
図4Aのフローに示すように、右車線および左車線への移動がない場合は、「left」および「right」の値は、「preLeft」および「preRight」として設定され(S114、S116)、再度、車両が車線移動をしたか否かを検出する際の処理に使用される。なお、
図4Aの処理を行う際は、
図4Dに示す初期化処理を事前に行われる。もっとも、初期化処理では、「preLeft」および「preRight」の値も初期化(0を設定)しているため、初回処理時のみ初期化することが好ましい。
【0031】
車線増加検出部340は、白線認識部310の認識結果および車線幅検出部320の検出結果に基づき、車線数の増加を検出する。車線増加検出部340は、典型的に、車線幅(
図3のW1+W2の合計距離)の絶対値または変化量が大きく変化したとき、あるいは白線認識部310によって認識された白線数が増加したとき、車線数が増加したことを検出する。但し、
図8に示すように、車線R1が増加するとき、その境界において車線R1と車線R2との間に白線が存在しないことがある。もし、車両Mが車線R2を走行するならば、その境界において、車両Mから左白線Q1までの距離が著しく大きく変化することになる。反対に、車両Mが車線R1へ進入する方向に進めば、車両Mから右白線Q2までの距離が著しく大きく変化することになる。つまり、車線が増加する分岐路において、仮に白線が存在しなくても、左白線Q1から右白線Q2までの車線幅の変化量または変化率が一定の値よりも大きくなれば、車線数が増加したことを判定することができる。さらに、左白線までの距離、あるいは右白線までの距離のいずれかが大きく変化したかを検出することで、大きく変化した側に車線が増加したと判定することができる。また、
図8に示すように、左側に車線R1が増加する境界では、白線Q1が左斜め方向に傾斜するので、車線増加検出部340は、白線認識部310により認識された白線の傾斜する方向が一定角度以上であるとき、その方向に車線が増加すると判定し、判定精度を高めるようにすることができる。さらにナビゲーション部110の道路地図データに車線数の情報が含まれている場合には、その車線数の情報を判定に利用したり、路側機から車線数の情報を得ることができる場合には、その情報を利用してもよい。
【0032】
図5Aは、車線増加検出部340の処理フローの一例を示す図である。ここで、「laneIncrease」は、車線数増加を示す変数であり、車線数の増加がない場合は“0”が設定され、車線数の増加が検出された場合には“1”が設定される。「lanePosition」は、車線数が増加した際の自車両の走行車線を示す変数であり、増加車線のうち左側の車線を自車が走行している場合には“−1”が設定され、右側の車線を自車両が走行している場合には“1”が設定される。
【0033】
車線増加検出部340は、車線幅検出部320により検出された車線幅が増大しているか否かを検出する(S300)。車線幅が増大しているか否かは、上記したように、前回測定された車線幅と今回測定された車線幅とを比較することにより行われる。車線幅が増大していないと判定された場合は、「laneIncrease」および「lanePosition」に“0”を設定し(S304、S306)、処理を終了する。
【0034】
一方、車線幅が増大していると判定された場合は、直前まで検出してきた直近の左右の白線の間に新たな白線があるか否かが判定される(S302)。新たな車線とは、例えば、
図8で示す道路R1および道路R2の間に存在する白線Lのような白線であり、新たな白線の有無は、白線認識部310の認識結果に基づき判定される。車線増加検出部340は、新たな白線を検出することができない場合には、「laneIncrease」および「lanePosition」に“0”を設定し(S304、S306)、処理を終了する。新たな白線を検出することができた場合には、車線数が増加したと判定し、「laneIncrease」に“1”を設定する(S308)。さらに、新たな白線は、車両の左右のいずれかを判定し(S310)、新たな白線が右側にある場合には「lanePosition」に“−1”を設定し(S312)、新たな白線が左側にある場合には「lanePosition」に“1”を設定し(S314)、処理を終了する。
【0035】
走行車線識別部350は、車線移動検出部330、車線増加検出部340等の検出結果に基づき自車が走行している車線を識別する。走行車線識別部350の識別結果は、例えば、後方からの障害物を報知する運転支援のための情報、あるいはナビゲーション部110の位置情報等に利用される。
【0036】
次に、本実施例の詳細な走行車線の識別動作について説明する。
図5Bは、車線が増加する分岐点において車両が増加した車線へ進入するときの走行車線の識別動作を説明する図である。車両Mは、地点P5から地点P6、地点P7の順に移動し、車線R2から分岐した車線R1へ移動するものとする。このような走行を行う場合、車両Mと直近の左白線Q1までの距離L1は、地点P5、P6、P7においてほぼ一定であるか、または極めて小さい変化量で変化する。一方、車両Mから直近の右白線Q2までの距離L2は、地点P6において急激に距離L3に増加する(L3>L2)。これは、分岐路する地点で車線R1と車線R2との境界を示す白線が存在せず、リアカメラ200によってその白線が撮像されず、白線Q2との距離L3が測定されるためである。
【0037】
1つの実施態様では、車線増加検出部340は、地点P5からP6への移動により距離L1+L3の合計が一定の値を越えるとき、車線数が増加すると判定する。さらに、車線増加検出部340は、地点P5からP6への移動において左白線Q1の傾斜角が左側に一定角以上傾斜しているとき、左側に車線が増加すると判定する。この車線増加検出部340の検出結果に基づき、走行車線識別部350は、地点P5において、距離L1と距離L3とを比較し、L1<L3であれば、増加した車線R1へ進入すると推定し、L1>L3であれば、車線R2へ進入すると推定する。この推定結果は、例えば、
図5Aのフローにおいて、新たな白線Lの検出を待たずに、ステップS304、S306において「lanePosition」に“1”または“−1”の設定に利用することができる。これにより、走行車線の識別に要する時間の短縮を図ることができる。
【0038】
さらに他の実施態様では、走行車線識別部350は、地点P7の車線幅L1、L4を判定に加えることができる。車両Mが道路R1に進入し白線Lが撮像されると、車両Mから右車線Lまでの距離L4が測定される。この距離L4は、距離L3よりも急激に小さくなり、変化量が極めて大きくなる。一方、地点P6から地点P7へ移動しても、距離L1の変化量は小さい。つまり、距離L2が増加して距離L3となり、距離L3が減少して距離L4に変化するとき、走行車線識別部350は、増加した車線R1を走行していると判定することができる。
【0039】
図5Cは、車両が車線R2から車線R1へ移動した場合の車両から左白線Q1および右白線Qまでの距離の変化を模式的に表す図である。右白線までの距離L1および左白線までの距離L2は、分岐路地点に到達するまではほぼ一定であるが、車両Mが分岐エリアに進入を開始すると(車線R1へ進入)、右白線までの距離L2が増加していき、白線Lが検出された時点で、最大変化量Xを伴って急激に降下する。車線増加検出部340は、ある変化量が一定の値または絶対値が一定の値を越えるとき、車線の増加を検出し、左白線までの距離または右白線までの距離の変化量または絶対値の比較により増加する車線の方向を検出するようにしてもよい。さらに走行車線識別部350は、右白線Q2までの距離の変動が増加し、その後減少する挙動、あるいは、最大変化量Xからの距離の低下量または変化量が一定の値以上である挙動から、増加した車線または増加してない車線のいずれの車線を走行しているか識別することができる。
【0040】
図5Dは、車線が増加する分岐点において車両が増加した車線へ進入しないときの走行車線の識別動作を説明する図である。車両Mは、地点P8から地点P9、地点P10の順に移動し、車線R2から分岐地点を越えて車線R2へ走行するものとする。このような場合、車両Mと直近の右白線Q2までの距離L2は、地点P8、P9、P10においてほぼ一定であるか、または極めて小さい変化量で変化する。一方、車両Mから直近の右白線Q1までの距離L1は、地点P9において急激に距離L5に増加する(L5>L1)。これは、分岐路する地点で車線R1と車線R2との境界を示す白線が存在せず、リアカメラ200によってその白線が撮像されず、白線Q1との距離L5が測定されるためである。この場合、
図5Bで示したときの同様の処理判定が実行される。
【0041】
図6は、車線数が右側に増加する分岐路における走行車線の識別を説明する図である。同図に示すように、新たに車線R4が右側に増加する場合、車両Mが地点P11、P12、P13を移動するものとする。車両が地点P12を移動するとき、右白線Q1と左白線Q2との車線幅(L1+L2)の変化量または絶対値が一定値よりも大きくなることで車線数の増加が検出される。また、右白線Q1が右側に傾斜することで、右側に車線R4が追加されることが検出される。さらに、地点P11、P12、P13における車両Mと右白線Q1との間の距離L1の変化、車両Mと左白線Q2との距離L2の変化に基づき走行車線識別部350は、分岐路において車両Mが車線R4またはR5のいずれかに進入するのかを識別する。
【0042】
図7は、本実施例の走行車線識別プログラム300の全体処理フローを示す図である。走行車線識別プログラム300が起動されたとき、必要に応じて車線移動検出部330および車線増加検出部340が初期化される。次に、リアカメラ200により撮像された撮像データが取得され(S500)、白線認識部310が取得した撮像データから白線を認識する(S502)。白線認識部310により白線が認識されると、車線幅検出部320は、自車から左車線Q1までの距離L1、右白線Q2までの距離L2を測定し、車線幅の検出を行う(S504)。ステップS504からステップS508までの処理は、リアカメラ200からの撮像データが提供される間、継続的に繰り返される。距離L1、L2が測定されると、車線移動検出部330、および車線増加検出部340により距離L1、L2が監視され(S506)、走行車線識別部350は、その検視結果に基づき分岐路の推定を行う(S508)。走行車線識別部350は、車線数の増加が検出されたにもかかわらず、新たな白線が認識されないとき、車線数が増加する分岐路であると推定する(S508)。分岐路であると推定されると、走行車線識別部350は、
図5B、
図5D、
図6で説明したように、自車が、増加した車線かそうでない車線のいずれかを走行するかが識別される(S510)。分岐路でない場合には、通常の
図4A、
図5Aに示すような通常の処理により走行車線が識別される(S512)。
【0043】
本実施例によれば、従来は白線Lを跨いだ場合に車線移動を検出していたが、白線Lの跨ぎを検出しなくとも、車線幅の変化量や白線の傾斜に基づき車線数の増加および走行車線の識別を行うことができる。従って、白線が存在しない、車線数が増加する分岐路等において走行車線の識別を行うことができ、その結果、分岐路を通過した後に白線が認識された時点での走行車線の識別が迅速かつ容易になる。また、本実施例では、道理地図データやGPSや自立航法センサ等の自車位置算出データを用いることなく、リアカメラからの撮像データだけを用いて走行車線の識別が可能となる。
【0044】
上記実施例では、リアカメラ200による撮像データから白線の認識や走行車線の識別を行う例を示したが、車両に複数のリアカメラが搭載されているとき、複数の撮像データを利用しても良い。さらに車両の後方を撮像するカメラは、車両の側部に搭載されたサイドビューカメラであってもよい。
【0045】
さらに上記実施例では、撮像データのみを用いて車線数が増加する分岐点における走行車線の識別を行ったが、さらに精度を向上するための他の情報、例えば、ナビゲーション部の道路地図データを利用してもよい。例えば、地図データから、自車の走行している道路の前方に、車線数が増加する交差点があるとき、自車位置が交差点に進入したことをトリガーにして車線数が増加すると判定し、車線幅の絶対値または変化量に基づく検出をキャンセルしてもよい。この場合、走行車線識別部は、自車から左白線までの距離L1または右白線までの距離L2を比較し、距離が小さい方の車線に進入すると識別する。
【0046】
さらに上記実施例の利用例として、走行車線の識別結果をマップマッチング処理に利用する例が挙げられる。例えば、ナビゲーション部110によって、GPS信号等から車両の現在地が算出された場合、上記実施例の処理に従い車両の走行車線を識別し、GPS信号等から算出した車両の現在地を識別された走行車線にマップマッチングすることにより、ナビゲーション部110によって現在地を算出した際の誤差を補正することができる。マップマッチングする際は、記憶部160に記憶された車線の区間態様を示す車線リンクに車両の現在地を補正することによりマップマッチングすることが可能である。
【0047】
以上、本発明の好ましい実施の形態について詳述したが、本発明は、特定の実施形態に限定されるものではなく、特許請求の範囲に記載された発明の要旨の範囲において、種々の変形、変更が可能である。