(57)【特許請求の範囲】
【請求項１】
車線変位補正システムにおいて、
路面上の車線位置を特定する車線認識部と、
前記車線認識部において認識された車線位置より算出される認識レーン幅に基づいて、少なくとも一つのレーン幅種を算出するとともに、レーン幅種の出現頻度に応じて主レーン幅を特定するレーン幅認識部と、
両側の車線が認識された場合、認識レーン幅と、少なくとも一つのレーン幅種と、主レーン幅とに基づいて、主たる車線と補助車線との位置的関係を判断し、当該判断結果に応じて、車線認識部によって認識された車線位置を主たる車線に補正する車線変位補正部と
を有することを特徴とする車線変位補正システム。
【請求項２】
前記車線変位補正部は、主たる車線の内側に補助車線が存在すると判断した場合、補助車線が存在する側の車線位置を外側にオフセット補正することを特徴とする請求項１に記載された車線変位補正システム。
【請求項３】
前記車線変位補正部は、主たる車線の内片側に補助車線が存在すると判断した場合には、主レーン幅と主レーン幅よりも一つ小さいレーン幅種との差に相当するオフセット量で、補正すべき片側の車線位置をオフセットさせることを特徴とする請求項２に記載された車線変位補正システム。
【請求項４】
前記車線変位補正部は、主たる車線の内両側に補助車線が存在すると判断した場合には、主レーン幅と主レーン幅よりも二つ小さいレーン幅種との差の半分に相当するオフセット量で、両側の車線位置をそれぞれオフセットさせることを特徴とする請求項２に記載された車線変位補正システム。
【請求項５】
前記車線変位補正部は、主たる車線の外側に補助車線が存在すると判断した場合、補助車線が存在する側の車線位置を無効データ化し、車線位置の過去の履歴を用いて、無効データ間を直線補完することを特徴とする請求項１に記載された車線変位補正システム。
【請求項６】
前記車線変位補正部は、車線位置の過去の履歴を用いて、車線認識部において認識された車線位置を直線補完し、当該直線補完された車線位置に基づいて認識レーン幅を算出することを特徴とする請求項１から５のいずれかに記載された車線変位補正システム。
【請求項７】
前記車線変位補正部は、片側の車線のみが認識された場合、認識できた側の車線位置と主レーン幅とに基づいて、認識できなかった側の車線位置を特定することを特徴とする請求項１から６のいずれかに記載された車線変位補正システム。
【請求項８】
前記レーン幅認識部は、所定の時間内において、個々の認識レーン幅に関して、認識レーン幅が属する回数をカウントし、当該カウント数が最も多い認識レーン幅を主レーン幅として特定することを特徴とする請求項１に記載された車線変位補正システム。
【請求項９】
前記レーン幅認識部は、認識レーン幅が属するレーン幅種の値を、従前のレーン幅種の値と認識レーン幅の値との平均を求めることにより、更新することを特徴とする請求項８に記載された車線変位補正システム。
【請求項１０】
前記レーン幅認識部は、認識レーン幅がいずれのレーン幅種にも属さない場合、新たなレーン幅種と判断して、認識レーン幅に基づいたレーン幅種を設定することを特徴とする請求項８に記載された車線変位補正システム。
【請求項１１】
前記レーン幅認識部は、特定のレーン幅種に関して、それと隣り合ったレーン幅種同士の差が所定値よりも小さい場合には、当該特定のレーン幅種を削除することを特徴とする請求項８に記載された車線変位補正システム。
【請求項１２】
前記レーン幅認識部は、特定のレーン幅種に関して、認識レーン幅が属さない状態が所定時間継続した場合、当該特定のレーン幅種を削除することを特徴とする請求項８に記載された車線変位補正システム。
【請求項１３】
前記車線変位補正部において補正された車線位置から算出される車両の横変位量に基づいて、ドライバの覚醒度を推定する覚醒度判定部をさらに有することを特徴とする請求項１から１２のいずれかに記載された車線変位補正システム。
【請求項１４】
車線変位補正方法において、
路面上の車線位置を特定するステップと、
認識された車線位置より認識レーン幅を算出するステップと、
認識レーン幅に基づいて、少なくとも一つのレーン幅種を算出するステップと、
レーン幅種の出現頻度に応じて主レーン幅を特定するステップと、
両側の車線が認識された場合、認識レーン幅と、少なくとも一つのレーン幅種と主レーン幅とに基づいて、主たる車線と補助車線との位置的関係を判断するステップと、
当該判断結果に応じて、車線認識部によって認識された車線位置を主たる車線に補正するステップと
を有することを特徴とする車線変位補正方法。
【請求項１５】
上記補正するステップは、主たる車線の内側に補助車線が存在すると判断された場合、補助車線が存在する側の車線位置を外側にオフセット補正することを特徴とする請求項１４に記載された車線変位補正方法。
【請求項１６】
上記補正するステップは、主たる車線の内片側に補助車線が存在すると判断した場合には、主レーン幅と主レーン幅よりも一つ小さいレーン幅種との差に相当するオフセット量で、補正すべき片側の車線位置をオフセットさせることを特徴とする請求項１５に記載された車線変位補正方法。
【請求項１７】
上記補正するステップは、主たる車線の内両側に補助車線が存在すると判断した場合には、主レーン幅と主レーン幅よりも二つ小さいレーン幅種との差の半分に相当するオフセット量で、両側の車線位置をそれぞれオフセットさせることを特徴とする請求項１５に記載された車線変位補正方法。
【請求項１８】
上記補正するステップは、主たる車線の外側に補助車線が存在すると判断した場合、補助車線が存在する側の車線位置を無効データ化するステップと、
車線位置の過去の履歴を用いて、無効データ間を直線補完するステップとを含むことを特徴とする請求項１４に記載された車線変位補正方法。
【請求項１９】
上記認識レーン幅を算出するステップは、車線位置の過去の履歴を用いて、車線認識部において認識された車線位置を直線補完するステップと、
当該直線補完された車線位置に基づいて、認識レーン幅を算出するステップとを含むことを特徴とする請求項１４から１８のいずれかに記載された車線変位補正方法。
【請求項２０】
片側の車線のみが認識された場合、認識できた側の車線位置と主レーン幅とに基づいて、認識できなかった側の車線位置を特定するステップをさらに有することを特徴とする請求項１４から１９のいずれかに記載された車線変位補正方法。
【請求項２１】
上記主レーン幅を特定するステップは、所定の時間内において、個々の認識レーン幅に関して、認識レーン幅が属する回数をカウントし、当該カウント数が最も多い認識レーン幅を主レーン幅として特定することを特徴とする請求項１４に記載された車線変位補正方法。
【請求項２２】
認識レーン幅が属するレーン幅種の値を、従前のレーン幅種の値と認識レーン幅の値との平均を求めることにより、更新するステップをさらに有することを特徴とする請求項１４に記載された車線変位補正方法。
【請求項２３】
認識レーン幅がいずれのレーン幅種にも属さない場合、新たなレーン幅種と判断して、認識レーン幅に基づいたレーン幅種を設定するステップをさらに有することを特徴とする請求項１４に記載された車線変位補正方法。
【請求項２４】
特定のレーン幅種に関して、それと隣り合ったレーン幅種同士の差が所定値よりも小さい場合には、当該特定のレーン幅種を削除するステップをさらに有することを特徴とする請求項１４に記載された車線変位補正方法。
【請求項２５】
特定のレーン幅種に関して、認識レーン幅が属さない状態が所定時間継続した場合、当該特定のレーン幅種を削除するステップをさらに有することを特徴とする請求項１４に記載された車線変位補正方法。
【請求項２６】
補正された車線位置から算出される車両の横変位量に基づいて、ドライバの覚醒度を推定するステップをさらに有することを特徴とする請求項１４から２５のいずれかに記載された車線変位補正方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、路面上の車線を認識し、認識された車線位置を補正する車線変位補正システムおよび車線変位補正方法に係り、特に、主たる車線と補助車線とが併存する走行状況において、主たる車線の位置を推定する手法に関する。
【０００２】
【従来の技術】
ドライバの覚醒度の低下に起因した事故を未然に防止する技術の開発は、安全性の観点から重要な研究課題の一つであり、覚醒度低下を検出する手法や警報技術に関する研究が盛んに行われている。ドライバの覚醒度が低下し居眠り状態になると、特に高速走行時に重大な事故を引き起しかねない。また、居眠り状態までは至らないぼんやりした状態であっても、走行状況の急激な変化に素早く反応できないため、事故を引き起こす可能性がある。そこで、路面上の輝度差より車線（白線）を認識し、認識車線の変位より特定される車両の横変位（ふらつき）を周波数解析することで、ドライバの覚醒度を推定する手法が従来より知られている。
【０００３】
車線認識に関する技術として、例えば、特開平５−１０８１４７号公報には、破線状の車線（主たる車線）の認識手法が開示されている。具体的には、走行路前方の撮像画像において、基準位置に存在する白線領域を基準白線領域として抽出する。続いて、この白線領域の空間的な配置を示す特徴量が算出され、この特徴量に基づいて、後続する白線領域が存在すると推定される候補領域が特定される。そして、この候補領域内を探索することにより、白線領域が抽出される。同様の処理を繰り返すことにより、破線状の白線領域を順次抽出していく。
【０００４】
また、特開平７−１４１５９２号公報には、撮像画像から道路上に描かれた白線を、アスファルト面から切り出したテンプレートにより検出する手法が開示されている。具体的には、車両中央直前からテンプレートを切り出し、このテンプレートと監視領域とから、切り出した比較画像との相関演算を行う。アスファルト面から切り出したテンプレートに対して、最も低相関となる位置を車線位置として認識する。
【０００５】
【発明が解決しようとする課題】
しかしながら、路面上の車線パターンには様々なものが存在し、主たる車線と補助車線とが併存するケースも存在する。例えば、高速道路の一部区間では、主たる車線の外側または内側に破線状の補助車線が描かれていることがある。上述した従来の技術では、このような区間の走行時に補助車線を主たる車線と誤って認識してしまうことがあり、車線位置の急激な変化となって現われる。その結果、例えば、誤認識された車線をそのまま用いてドライバの覚醒度を推定すると、推定精度の低下を招くおそれがあった。
【０００６】
本発明はかかる事情に鑑みてなされたものであり、その目的は、路面上に描かれた主たる車線と補助車線との位置的関係を適切に認識することである。
【０００７】
また、本発明の別の目的は、主たる車線と補助車線とが併存する走行状況において、主たる車線の位置を適切に推定することである。
【０００８】
さらに、本発明の別の目的は、存在するはずの片側車線が認識不可の状況において、認識できた側の車線位置とレーン幅の推定値とを用いて、認識不可側の車線位置を推定することである。
【０００９】
【課題を解決するための手段】
かかる課題を解決するために、第１の発明は、車線変位補正システムにおいて、路面上の車線位置を特定する車線認識部と、車線認識部において認識された車線位置より算出される認識レーン幅に基づいて、少なくとも一つのレーン幅種を算出するとともに、レーン幅種の出現頻度に応じて主レーン幅を特定するレーン幅認識部と、両側の車線が認識された場合、認識レーン幅と、少なくとも一つのレーン幅種と、主レーン幅とに基づいて、主たる車線と補助車線との位置的関係を判断し、その判断結果に応じて、車線認識部によって認識された車線位置を主たる車線に補正する車線変位補正部とを有する車線変位補正システムを提供する。
【００１１】
第２の発明において、車線変位補正方法において、路面上の車線位置を特定するステップと、認識された車線位置より認識レーン幅を算出するステップと、認識レーン幅に基づいて、少なくとも一つのレーン幅種を算出するステップと、レーン幅種の出現頻度に応じて主レーン幅を特定するステップと、両側の車線が認識された場合、認識レーン幅と、少なくとも一つのレーン幅種と主レーン幅とに基づいて、主たる車線と補助車線との位置的関係を判断するステップと、その判断結果に応じて、車線認識部によって認識された車線位置を主たる車線に補正するステップとを有する車線変位補正方法を提供する。
【００１３】
ここで、第１または第２の発明において、主たる車線の内側に補助車線が存在すると判断した場合、補助車線が存在する側の車線位置を外側にオフセット補正することが好ましい。例えば、主たる車線の内片側に補助車線が存在すると判断した場合には、主レーン幅と主レーン幅よりも一つ小さいレーン幅種との差に相当するオフセット量で、補正すべき片側の車線位置をオフセットさせる。また、主たる車線の内両側に補助車線が存在すると判断した場合には、主レーン幅と主レーン幅よりも二つ小さいレーン幅種との差の半分に相当するオフセット量で、両側の車線位置をそれぞれオフセットさせる。
【００１４】
また、第１または第２の発明において、主たる車線の外側に補助車線が存在すると判断した場合、補助車線が存在する側の車線位置を無効データ化し、車線位置の過去の履歴を用いて、無効データ間を直線補完することが好ましい。
【００１５】
第１または第２の発明において、車線位置の過去の履歴を用いて、車線認識部において認識された車線位置を直線補完し、その直線補完された車線位置に基づいて認識レーン幅を算出することが好ましい。
【００１６】
第１または第２の発明において、片側の車線のみが認識された場合、認識できた側の車線位置と主レーン幅とに基づいて、認識できなかった側の車線位置を特定してもよい。
【００１７】
第１または第２の発明において、所定の時間内において、個々の認識レーン幅に関して、認識レーン幅が属する回数をカウントし、カウント数が最も多い認識レーン幅を主レーン幅として特定することが望ましい。また、認識レーン幅が属するレーン幅種の値を、従前のレーン幅種の値と認識レーン幅の値との平均を求めることにより、更新してもよい。また、認識レーン幅がいずれのレーン幅種にも属さない場合、新たなレーン幅種と判断して、認識レーン幅に基づいたレーン幅種を設定することが好ましい。さらに、特定のレーン幅種に関して、それと隣り合ったレーン幅種同士の差が所定値よりも小さい場合には、その特定のレーン幅種を削除してもよい。また、特定のレーン幅種に関して、認識レーン幅が属さない状態が所定時間継続した場合、その特定のレーン幅種を削除してもよい。
【００１８】
さらに、第１または第２の発明において、補正された車線位置から算出される車両の横変位量に基づいて、ドライバの覚醒度を推定してもよい。
【００１９】
【発明の実施の形態】
［基本ブロック構成］
図１は、車線変位補正システムの一例を示すブロック構成図である。このシステムは、走行路上の車線で区切られたレーン幅の推定値を用いて、撮像画像より認識された車線位置を補正する。補正された車線位置は、路面上の車線パターンに拘わらず、主たる車線位置を適切に表している。したがって、例えば、これを用いて車両の横変位量（ふらつき）を算出すれば、ドライバの覚醒度を精度よく推定することができる。
【００２０】
前方監視センサ１は、車両前方の状況を撮像して、撮像画像を出力するセンサであり、例えば、ＣＣＤ（固体撮像素子）等を用いたステレオカメラや単眼カメラを用いることができる。車線認識部２は、画像認識技術を用いて、撮像画像に映し出された走行路上の車線を認識し、その位置を算出する。路面に描かれた車線（一般的には白線）は、画像の水平方向の輝度差が大きいエッジ部として特定することができる（アスファルトと白線との境界部分は輝度差が大きい）。白線に起因したエッジ部（白線エッジ）は、走行路の左側と右側とについて別個に探索され、左右の白線のそれぞれについて特定される。一例として、下記の３つの条件を具備する部分を白線エッジとして認識することができ、白線エッジの位置（画像の横方向座標）を車線位置とする。
【００２１】
［白線エッジの条件］
（条件１）輝度変化量が所定値以上である輝度エッジで、かつ、輝度エッジの内側（画像中央側）の画素よりも外側（画像端側）の画素の方が輝度が大きいことすなわち走行路の左右の白線に起因した白線エッジは、白線の内側の境界（白線と舗装路との境界）における輝度エッジである。
（条件２）条件１を満たす白線エッジの候補に関して、それと同一水平線上の外側にさらに輝度エッジが存在し、かつ、この輝度エッジの外側の画素よりも内側の画素の方が輝度が大きいこと
白線は所定の幅を有しているため、白線エッジの外側にも境界が存在する。この条件は、このような白線の特徴に鑑みて設けられたものである。
（条件３）条件１を満たす白線エッジを含む画素ブロックに関して、視差が算出されていること（前方監視センサ１としてステレオカメラを用いた場合）
白線エッジが存在する箇所に視差が算出されていなければ、その白線エッジは道路形状を認識するのに有効な情報とはならないからである。
【００２２】
車線認識部２は、前方監視センサ１としてステレオカメラを用いた場合、左右の白線エッジの座標（ｉ，ｊ）と視差ｄとを周知の座標変換式に代入し、車線の実空間上の座標（Ｘ，Ｙ，Ｚ）を算出する。この座標変換に関しては、例えば、特開平５−２６５５４７号公報に開示されている。本実施形態は、車線の横方向の変位をモニタリングするものであるから、画像水平方向（車幅方向）の車線位置が評価対象となる。車両より10ｍ前方における車両中心を基準とした左車線位置をＸ0（Ｘ0＜0）とし、右車線位置をＸ1（Ｘ1＞0）とする。
【００２３】
なお、車線認識部２は、車線の認識を行うとともに、その確信度（すなわち、認識された車線の確からしさ）も併せて算出する。走行路上の輝度エッジは、白線に起因したもの以外にも、スリップ痕や雪面上のわだち等に起因して生じることがある。そこで、認識された車線位置の連続性や車線位置のデータ数等に基づいて、認識された車線の確信度（信頼性）が算出される。なお、認識車線の信頼性については、本願出願人の先願である特願平１１−２６９５７８号に開示されている。確信度は0〜10の範囲で算出され、認識車線を最も信頼できる場合は確信度が10に設定される。左車線位置Ｘ0の確信度をＰＦＳ0，右車線位置Ｘ1の確信度をＰＦＳ1とする。
【００２４】
車線補正部３は、現在の車線位置とその過去の履歴とに基づいて、レーン幅を推定し、これに基づいて認識車線位置を補正する。この補正により、主たる車線と補助車線とが併存する走行状況にあっても、主車線の位置を適切に求めることができる。補正後の左車線位置をＸＣＫ0、補正後の右車線位置をＸＣＫ1とする。なお、これらの補正車線位置ＸＣＫ0，ＸＣＫ1に関しては、過去4秒分に相当する42個の履歴（ＸＣＫ0[41]，ＸＣＫ1[41]）が履歴保持部４に保存され、これらは、現在の補正車線位置ＸＣＫ0，ＸＣＫ1を算出する際に用いられる。なお、車線補正部３は、補正車線位置ＸＣＫ0，ＸＣＫ1を算出する過程において、認識レーン幅Ｗ（Ｗ＞0）を算出する。後述するように、認識レーン幅Ｗは、認識された左右の車線位置（正確には直線補完後の車線位置）の差より算出される。
【００２５】
レーン幅認識部５は、左右の車線位置Ｘ0，Ｘ1より算出される認識レーン幅Ｗをデータとして収集し、少なくとも１つ、最大で５つのレーン幅種ＷＩＤＴＨ[i]（ｉ＝0〜4）をストックする。また、これらのレーン幅種ＷＩＤＴＨ[i]の出現頻度をモニタリングして、出現頻度のもっと高いものを主レーン幅ＷＭＳＴＲとして決定する。レーン幅種ＷＩＤＴＨ[i]とレーン幅の推定値である主レーン幅ＷＭＳＴＲとは、車線変位補正部３における補正車線位置ＸＣＫ0，ＷＣＫ1の算出過程で用いられる。
【００２６】
以下の説明は、５つのレーン幅種ＷＩＤＴＨ[i]が出現していることを前提としているが、走行状況によってはそれ以下の個数しか出現しないことも当然にあり得る。例えば、ケース０が長時間継続する場合には最小レーン幅種ＷＩＤＴＨ[0]のみが出現する。
【００２７】
車両中心変位算出部６は、車線変位補正部３より出力された補正車線位置ＸＣＫ0，ＸＣＫ1の差（ＸＣＫ0−ＸＣＫ1）を算出する。そして、1.0Hzのローバスフィルタをかけてノイズ成分を除去し、車両中心変位ＸＣを算出する。この車両中心変位ＸＣは、補助車線の影響を受けない横方向の車両変位（ふらつき）に相当する。
【００２８】
覚醒度判定部７は、車両中心変位ＸＣの周波数スペクトルにおける周波数成分を解析することにより、ドライバの覚醒度を判定する。ＦＦＴ（高速フィーリエ変換）を用いた周波数スペクトルによる覚醒度の判定手法については様々なものが提案されているが、その一例については、本願出願人が先に出願した特開２０００−１８５５７５号公報を参照されたい。覚醒度判定部７は、ドライバの覚醒度が低下していると判断した場合、スピーカやディスプレイ等の警報部８に対して、ドライバに覚醒を促すための各種警報の実行を指示する。
【００２９】
［基本ロジック］
つぎに、車線位置補正ロジックの概略について述べる。本実施形態では、前方監視センサ１から出力された撮像画像より走行中のレーンの両側車線が認識された場合、認識レーン幅Ｗに基づいて、路面上に描かれた車線の状態を５つの車線パターンのいずれかに分類する。図２は、車線パターンの分類の説明図であり、主たる車線と補助車線との位置的関係を規定したものである。そして、分類されたパターンに応じて、認識車線位置の補正を行う。本実施形態では、両側車線が認識された場合における車線パターンを以下の５ケースに分類する。なお、同図に出現する５つのレーン幅種ＷＩＤＴＨ[i]は、ＷＩＤＴＨ[0]＜ＷＩＤＴＨ[1]＜ＷＩＤＴＨ[2]＜ＷＩＤＴＨ[3]＜ＷＩＤＴＨ[4]の関係にある。
【００３０】
（ケース０）左右に主たる車線（通常車線）が存在する通常のケースである。左右の主たる車線間の距離をレーン幅種ＷＩＤＴＨ[2]とする。以下のケース１〜４の出現頻度は基本的にそれほど高くないが、ケース０は出現頻度が高い。したがって、ある時間内にケース０〜４が混在して出現し、ケース０の出現頻度が最も高いならば、主レーン幅ＷＭＳＴＲはレーン幅種ＷＩＤＴＨ[2]となる。なお、同図において、破線状車線間のデータ空白部分を点線で結んでいるが、これは、後述するように、前後の車線位置より直線補完していることを意味している（以下のケースについても同様）。認識レーン幅Ｗが主レーン幅ＷＭＳＴＲに対して±α（例えば40mm）未満ならば、本ケースに該当すると判断する。
【００３１】
（ケース１）補助車線（内両側）がかすれる等で片側を通常車線として認識する場合に出現し、基本的に一部区間において存在するケースである。車線認識への影響としては、主たる車線に対して認識車線が内側にオフセットするときがある（確信度は高い状態が保持される）。レーン幅種ＷＩＤＴＨ[2]（＝ＷＭＳＴＲ）の他に、それよりも狭いレーン幅種ＷＩＤＴＨ[1]が出現する。認識レーン幅Ｗが主レーン幅ＷＭＳＴＲより一つ内側のレーン幅種ＷＩＤＴＨ[i-1]（すなわちＷＩＤＴＨ[1]）に対して±β（例えば30mm）未満ならば、本ケースの内片側補助車線と判断する。
【００３２】
図３は、内側に補助車線が存在する場合の変位特性図である（ケース２についても該当）。同図（ａ）に示す補正前の特性からわかるように、内側破線の特徴として、真の車線位置（主たる車線位置）に対してステップ状のシフトが見られる。そこで、左右とも１つ前の車線位置との差をとり、大きい方が内側にオフセットしていると判断し、後述するオフセット量を用いて、片側の車線位置を外側へオフセット補正する。同図（ｂ）は補正後の特性を示しており、オフセット補正により内側補助車線の影響が除去されていることがわかる。
【００３３】
（ケース２）カーブ等車線内走行を喚起する場所において出現し、基本的に一部区間において存在するケースである。車線認識への影響としては、主たる車線に対して認識車線が内側にオフセットするときがある（確信度は高い状態が保持される）。レーン幅種ＷＩＤＴＨ[2]（＝ＷＭＳＴＲ）の他に、それよりも狭いレーン幅種ＷＩＤＴＨ[0]が出現する（ＷＩＤＴＨ[0]＜ＷＩＤＴＨ[1]）。認識レーン幅Ｗが主レーン幅ＷＭＳＴＲより二つ内側のレーン幅種ＷＩＤＴＨ[i-2]（すなわちＷＩＤＴＨ[0]）に対して±β未満ならば、本ケースの内両側補助車線と判断する。ケース１と同様の手法で、両側の車線位置を外側へオフセット補正する。
【００３４】
（ケース３）内両側補助車線（ケース２）走行中で分岐合流がある場所において出現し易く、基本的に一部区間において存在するケースである。認識車線への影響としては、主たる車線に対して認識車線が外側にオフセットするときがある（確信度は高い状態が保持される）。レーン幅種ＷＩＤＴＨ[2]（＝ＷＭＳＴＲ）の他に、それよりも広いレーン幅種ＷＩＤＴＨ[3]が出現する。認識レーン幅Ｗが主レーン幅ＷＭＳＴＲより一つ外側のレーン幅種ＷＩＤＴＨ[i+1]（すなわちＷＩＤＴＨ[3]）に対して±β未満ならば、本ケースの外片側補助車線と判断する。
【００３５】
図４は、外側に補助車線が存在する場合の変位特性図である（ケース４についても該当）。同図（ａ）に示す補正前の特性からわかるように、外側補助車線の特徴として、正しい車線認識結果の上に、短周期のノイズ状の信号成分が乗る。ここでは、ノイズ上では左右変位とも0に落とし無効データ化するとともに、ノイズ幅が小さいときは通常車線と認識する。無効データ化された部分は、その後の処理において直線補完する。同図（ｂ）は補正後の特性を示しており、直線補完により外側補助車線の影響が除去されていることがわかる。
【００３６】
（ケース４）内両側補助車線（ケース２）への進入初期（一部）に出現し易く、基本的に一部区間において存在するケースである。認識車線への影響としては、主たる車線に対して認識車線が外側にオフセットするときがある（確信度は高い状態が保持される）。レーン幅種ＷＩＤＴＨ[2]（＝ＷＭＳＴＲ）の他に、それよりも広いレーン幅種ＷＩＤＴＨ[4]が出現する（ＷＩＤＴＨ[3]＜ＷＩＤＴＨ[4]）。認識レーン幅Ｗが主レーン幅ＷＭＳＴＲより二つ外側のレーン幅種ＷＩＤＴＨ[i+2]（すなわちＷＩＤＴＨ[4]）に対して±β未満ならば、本ケースの外両側補助車線と判断する。ケース３と同様の手法で、左右の車線ともに直線補完を行う。
【００３７】
なお、図２の最下欄に示したケースは、逆行で路面が光っている状況やガードレールの影に入る状況等で左右いずれかの白線エッジが検出できず、片側車線のみ認識されるケースである。このケースでは、認識された車線側の車線位置と、認識が不安定になるまでに計測された主レーン幅ＷＭＳＴＲとを用いて、認識できなかった側の車線位置を推定（復元）する。
【００３８】
図５は、図１に示した車線変位補正部３の詳細なブロック構成図である。車線変位補正部３は、車線補完部１１，レーン幅算出部１２，車線パターン分類部１３，車線位置補正部１４および車線補完部１５で構成されている。
【００３９】
［車線補完部］
車線変位補正部３の前段に位置する車線補完部１１は、左右の車線位置Ｘ0，Ｘ1と、履歴保持部４より読み出した過去4秒分の補正車線位置ＸＣＫ0[41]，ＸＣＫ1[41]とに基づいて、破線状車線間のデータ空白部分を直線近似で補完する。つまり、白線エッジが存在しない部分を、今回の車線位置と過去の車線位置とによって直線近似で補完する。このように直線補完された左右の車線位置をそれぞれＸＨ0，ＸＨ1とする。補完された車線位置ＸＨ0，ＸＨ1に関する確信度ＰＦＳＨ0，ＰＦＳＨ1は共に10（高信頼）とする。また、4秒分の履歴で補完できなかった場合は、その確信度ＰＦＳＨ0，ＰＦＳＨ1を0にして無効データ化する。無効データ化されたものは、それ以降の処理において演算対象としない。なお、本実施形態では、無効データ化された補完車線位置ＸＨ0，ＸＨ1に関しては、その値も0に設定している。
【００４０】
［レーン幅算出部］
レーン幅算出部１２は、車線補完部１１より出力された補完車線位置ＸＨ0，ＸＨ1に基づいて、下式に従い認識レーン幅Ｗを算出する。
【数１】
Ｗ ＝ ＸＨ1−ＸＨ0
【００４１】
［車線パターン分類部］
車線パターン分類部１３は、両側の車線が認識された場合、現在の車線状態を図２に示した５つの車線パターンのいずれかに分類する。図６は、車線パターン分類ルーチンのフローチャートであり、車線パターン分類部１３は本ルーチンを所定の間隔（例えば100ms）で繰り返し実行する。
【００４２】
まず、ステップ１において、両側の車線が認識されているか否か、すなわち、左右車線に関する確信度ＰＦＳＨ0，ＰＦＳＨ1がともに10（高信頼）であるか否かが判断される。このステップ１で否定判定された場合には本ルーチンを抜け、肯定判定された場合にはステップ２に進む。ステップ２では、認識レーン幅Ｗがレーン幅種ＷＩＤＴＨ[2]（＝ＷＭＳＴＲ）に対して±α（例えば40mm）未満であるか否かが判断される。このステップ２で肯定判定された場合は、分類フラグＦnsdを「０」（図２に示したパターン０を指示）にセットした後（ステップ３）、本ルーチンを抜ける。一方、ステップ２で否定判定された場合はステップ４に進む。
【００４３】
なお、ケース０の分類判定の基準となるマージンαは、後述する他のケース１〜４の判定マージンβよりも大きな値に設定している。その理由は、ケース０は、一部区間で出現するケース１〜４よりも出現頻度が高い点を反映するためである。
【００４４】
ステップ４では、認識レーン幅Ｗがレーン幅種ＷＩＤＴＨ[1]に対して±β（例えば30mm）未満であるか否かが判断される。このステップ４で肯定判定された場合は、分類フラグＦnsdを「１」（図２に示したパターン１を指示）にセットした上で（ステップ５）、本ルーチンを抜ける。一方、ステップ４で否定判定された場合はステップ６に進む。ステップ６では、認識レーン幅Ｗがレーン幅種ＷＩＤＴＨ[0]に対して±β未満であるか否かが判断される。このステップ６で肯定判定された場合は分類フラグＦnsdを「２」（図２に示したパターン２を指示）にセットし（ステップ７）、本ルーチンを抜ける。一方、ステップ６で否定判定された場合はステップ８に進み、認識レーン幅Ｗがレーン幅種ＷＩＤＴＨ[3]に対して±β未満であるか否かが判断される。このステップ８で肯定判定された場合は分類フラグＦnsdを「３」（図２に示したパターン３を指示）にセットし（ステップ９）、本ルーチンを抜ける。一方、ステップ９で否定判定された場合はステップ１０に進む。ステップ１０では、認識レーン幅Ｗがレーン幅種ＷＩＤＴＨ[4]に対して±β未満であるか否かが判断される。このステップ１０で肯定判定された場合は分類フラグＦnsdを「４」（図２に示したパターン４を指示）にセットし（ステップ１１）、本ルーチンを抜ける。一方、このステップ１０で否定判定された場合は本ルーチンを抜ける。
【００４５】
以上の説明からわかるように、両側車線認識時においては、認識レーン幅Ｗをレーン幅種ＷＩＤＴＨ[i]と比較する。そして、その比較結果に応じて、現在の車線状態を予め設定された５つの車線パターンのいずれかに分類する。車線パターンを特定することにより、主たる車線と補助車線との位置的関係は一義的に特定される。
【００４６】
［車線位置補正部］
車線位置補正部１４は、両側車線が認識された場合における車線位置補正、片側車線が認識された場合における認識不良側の車線位置推定、および両側車線が共に認識できなかった場合におけるデータ無効化を行う。図７は、両側車線認識時における車線位置補正ルーチンのフローチャートであり、車線位置補正部１４は、本ルーチンを所定の間隔（例えば100ms）で繰り返し実行する。
【００４７】
まず、ステップ２０において、両側の車線が認識されているか否か、すなわち、左右車線に関する確信度ＰＦＳＨ0，ＰＦＳＨ1がともに10（高信頼）であるか否かが判断される。このステップ２０で否定判定された場合には本ルーチンを抜け、肯定判定された場合にはステップ２１に進む。ステップ２１では、車線パターン分類部１３において求められた分類フラグＦnsdが「０」であるか否かが判断される。このステップ２１で肯定判定された場合、すなわち、ケース０に相当する場合には、補助車線が存在しないので、補正は行わずに（ステップ２２）、本ルーチンを抜ける。すなわち、補完車線位置ＸＨ0，ＸＨ1をそのまま補正後の車線位置ＸＤ0，ＸＤ1として出力する。また、確信度ＰＦＳＨ0，ＰＦＳＨ1をそのまま補正後の確信度ＰＦＳＤ0，ＰＦＳＤ1として出力する。
【００４８】
一方、ステップ２１で否定判定された場合にはステップ２３に進み、分類フラグFnsdが「１」であるか否かが判断される。このステップ２３で肯定判定された場合、すなわち、ケース１の内片側補助車線に相当する場合には、数式２または数式３に従い、片側車線のみを対象とした外側へのオフセット補正を行い、補正車線位置ＸＤ0，ＸＤ1を求める（ステップ２４）。左車線位置ＸＨ0は、車両中心に対してマイナス側に位置しているため、左車線を対象としたオフセット補正では、マイナス側へのシフトとなる（数式２）。これに対して、右車線位置ＸＨ1は、車両中心に対してプラス側に位置しているため、右車線を対象としたオフセット補正では、プラス側へのシフトとなる（数式３）。レーン幅種ＷＩＤＴＨ[2]の出現度合いが最も高い場合（ＷＭＳＴＲ＝ＷＩＤＴＨ[2]）、オフセット量SINGLEは、主レーン幅ＷＭＳＴＲとそれよりも一つ小さいＷＩＤＴＨ[1]との差に相当する。また、確信度ＰＦＳＨ0，ＰＦＳＨ1をそのまま補正確信度ＰＦＳＤ0，ＰＦＳＤ1として出力する。ステップ２４の処理が終了すると、本ルーチンを抜ける。
【数２】
ＸＤ0 ← ＸＨ0 − SINGLE
ＸＤ1 ← ＸＨ1
SINGLE ＝ ＷＭＳＴＲ−ＷＩＤＴＨ[1]
【数３】
ＸＤ0 ← ＸＨ0
ＸＤ1 ← ＸＨ1 ＋ SINGLE
SINGLE ＝ ＷＭＳＴＲ−ＷＩＤＴＨ[1]
【００４９】
ステップ２３で否定判定された場合にはステップ２５に進み、分類フラグFnsdが「２」であるか否かが判断される。このステップ２５で肯定判定された場合、すなわち、ケース２の内両側補助車線に相当する場合には、数式４に従い、両側車線を対象とした外側へのオフセット補正を行い、補正車線位置ＸＤ0，ＸＤ1を求める（ステップ２６）。なお、レーン幅種ＷＩＤＴＨ[2]の出現度合いが最も高い場合（ＷＭＳＴＲ＝ＷＩＤＴＨ[2]）、オフセット量は、主レーン幅ＷＭＳＴＲとそれよりも二つ小さいＷＩＤＴＨ[0]との差の半分に相当する。また、確信度ＰＦＳＨ0，ＰＦＳＨ1をそのまま補正確信度ＰＦＳＤ0，ＰＦＳＤ1として出力する。ステップ２６の処理が終了すると、本ルーチンを抜ける。
【数４】
ＸＤ0 ← ＸＨ0 − DOUBLE/2
ＸＤ1 ← ＸＨ1 ＋ DOUBLE/2
DOUBLE ＝ ＷＭＳＴＲ−ＷＩＤＴＨ[0]
【００５０】
ステップ２５で否定判定された場合にはステップ２７に進み、分類フラグＦnsdが「３」であるか否かが判断される。このステップ２７で肯定判定される状況としては、ケース３以外に、レーン幅が実際に広がった状況も考えられる。そこで、これらのケースを分類するために、レーン幅が所定時間（例えば3秒）以上広くなっているかが判断される（ステップ２８）。ステップ２８で肯定判定された場合には、レーン幅が実際に広がったものと判断し補正を行わず、補完車線位置ＸＨ0，ＸＨ1をそのまま補正車線位置ＸＤ0，ＸＤ1として出力する（ステップ２９）。また、確信度ＰＦＳＨ0，ＰＦＳＨ1をそのまま補正確信度ＰＦＳＤ0，ＰＦＳＤ1として出力する。これに対して、ステップ２８で否定判定された場合には、ケース３の外片側補助車線に相当すると判断する。そして、補助車線がある側の車線データを無効化、すなわち、補正確信度ＰＦＳＤ0（またはＰＦＳＨ1）を0にする（ステップ３０）。片側の車線データを無効化し、後段の車線補完部１５で無効化されたデータ間を直線近似で補完することによって、図４（ａ）の特性で表れる片側車線における短周期のノイズ状成分を除去する。ステップ２９，３０の処理が終了すると、本ルーチンを抜ける。
【００５１】
ステップ２７で否定判定された場合にはステップ３１に進み、分類フラグＦnsdが「４」であるか否かが判断される。このステップ３１で肯定判定される状況としては、ケース４以外に、レーン幅が実際に広がった状況も考えられる。そこで、これらのケースを分類するために、レーン幅が所定時間（例えば3秒）以上広くなっているかが判断される（ステップ３２）。このステップ３２で肯定判定された場合には、レーン幅が実際に広がったものと判断し補正を行わず、補完車線位置ＸＨ0，ＸＨ1をそのまま補正車線位置ＸＤ0，ＸＤ1として出力する（ステップ３３）。また、確信度ＰＦＳＨ0，ＰＦＳＨ1をそのまま補正確信度ＰＦＳＤ0，ＰＦＳＤ1として出力する。これに対して、ステップ３２で否定判定された場合には、ケース４の外両側補助車線に相当すると判断する。そして、両側の車線データを無効化、すなわち、補正確信度ＰＦＳＤ0，ＰＦＳＨ1を0にする（ステップ３４）。両側の車線データを無効化し、後段の車線補完部１５で無効化されたデータ間を直線近似で補完することによって、図４（ａ）の特性で表れる両側車線に関する短周期のノイズ状成分を除去する。ステップ３３，３４の処理が終了すると、本ルーチンを抜ける。
【００５２】
ステップ３１で否定判定された場合には、補正を行うことなく（ステップ３５）、本ルーチンを抜ける。この場合、補完車線位置ＸＨ0，ＸＨ1をそのまま補正車線位置ＸＤ0，ＸＤ1として出力し、確信度ＰＦＳＨ0，ＰＦＳＨ1をそのまま補正確信度ＰＦＳＤ0，ＰＦＳＤ1として出力する。
【００５３】
以上の説明からわかるように、車線パターンに応じて、補完車線位置ＸＨ0，ＸＨ1を補正することにより、補助車線の影響を除去する。主たる車線の内側に補助車線が存在する場合には、補完車線位置ＸＨ0，ＸＨ1にオフセット補正を施す。一方、主たる車線の外側に補助車線が存在する場合には、補完車線位置ＸＨ0，ＸＨ1を無効データ化し、無効データ化された間を直線補完することによって、補助車線の影響を除去する。
【００５４】
図８は、片側車線認識時における車線位置補正ルーチンのフローチャートであり、車線位置補正部１４は、本ルーチンを所定の間隔（例えば100ms）で繰り返し実行する。片側の車線のみが認識される状態では、左右の車線に関する確信度ＰＦＳ0，ＰＦＳ1の一方のみが10となる。左車線の確信度ＰＦＳ0が10で、右車線の確信度ＰＦＳ1が10でない場合（左車線のみ十分に認識）、ステップ４０，４１の判断を経て、ステップ４２に進む。この場合、高信頼の左車線に関しては、補完車線位置ＸＨ0をそのまま補正車線位置ＸＤ0とする。これに対して、右車線に関しては、左車線の補完車線位置ＸＨ0を基準として、これに主レーン幅ＷＭＳＴＲを加算することで、補正車線位置ＸＤ1を推定する。左右の補正確信度ＰＦＳＤ0，ＰＦＳＤ1は共に10に設定する。ステップ４２の処理が終了すると、本ルーチンを抜ける。
【００５５】
一方、右車線の確信度ＰＦＳ1が10で、左車線の確信度ＰＦＳ0が10でない場合（右車線のみ十分に認識）、ステップ４０，４３の判断を経て、ステップ４４に進む。この場合、高信頼の右車線に関しては、補完車線位置ＸＨ1をそのまま補正車線位置ＸＤ1とする。これに対して、左車線に関しては、右車線の補完車線位置ＸＨ1を基準として、これに主レーン幅ＷＭＳＴＲを減算することで、補正車線位置ＸＤ0を推定する。左右の補正確信度ＰＦＳＤ0，ＰＦＳＤ1は共に10に設定する。ステップ４４の処理が終了すると本ルーチンを抜ける。
【００５６】
車線位置補正部１４は、両側の車線が共に十分認識できない場合（ＰＦＳＨ0≠10，ＰＦＳＨ1≠10）、左右の補正確信度ＰＦＳＤ0，ＰＦＳＤ1を共に0に設定し、無効データ化する。
【００５７】
［車線補完部］
車線補完部１５は、左右の補正車線位置ＸＤ0，Ｘ1と、履歴保持部４より読み出した過去4秒分の補正車線位置ＸＣＫ0[41]，ＸＣＫ1[41]とに基づいて、直線補完処理を行う。ここでは、外側補助車線等でクリアされたデータ（無効データ）を最大4秒分で直線補完することにより、外側補助車線に起因した短周期のノイズ状成分が除去される。4秒以内に補完できなかった場合は、補完が可能になった時点で一次直線で補完する。このようにして補完された左右の車線位置をそれぞれＸＣＫ0，ＸＣＫ1とし、これらが車線変位補正部３からの最終的な出力データとなる。
【００５８】
図９は、図１に示したレーン幅認識部５の詳細なブロック構成図であり、レーン幅帯域カウンタ２１，レーン幅域分類部２２，決定レーン幅消去部２３および主レーン幅決定部２４で構成されている。上述したように、レーン幅認識部５は、認識レーン幅Ｗをデータとして収集し、最大で５つのレーン幅種ＷＩＤＴＨ[i]をストックするとともに、レーン幅種ＷＩＤＴＨ[i]の出現頻度により主レーン幅ＷＭＳＴＲを決定する。
【００５９】
［レーン幅値域カウンタ］
レーン幅認識部５の前段に位置するレーン幅帯域カウンタ２１は、認識レーン幅Ｗを予め設定された複数の帯域のいずれかに分類するとともに、同一帯域への分類が何回継続するかをレーン幅カウンタｎｎ1，ｎｎ2によってカウントする。本実施形態では、2500mmから帯域幅80mm，帯域間ステップ40mmで13個の第１の帯域ＷＲ1[N]（N=13）を設定する（例えば、ＷＲ1[1]は2500mm〜2580mm，ＷＲ1[13]は3940mm〜）。そして、経時的に順次算出される認識レーン幅Ｗが同一帯域ＷＲ1[n]に連続して属する場合、その度にレーン幅カウンタｎｎ1を１ずつインクリメントしていく。一方、認識レーン幅Ｗが前回の帯域ＷＲ1[n]と異なる帯域ＷＲ1[n']に属する場合には、レーン幅カウンタｎｎ1を一旦リセットした後、再度インクリメントを開始する。
【００６０】
また、第１の帯域ＷＲ1[N]では不感帯となる帯域（帯域間ステップ）をカバーするために、2560mmから帯域幅80mm，帯域間ステップ40mmで12の第２の帯域ＷＲ2[M]（M=12）を設定する。（例えば、ＷＲ2[1]は2560mm〜2640mm，ＷＲ2[12]は3880mm〜3960mm）。そして、経時的に順次算出される認識レーン幅Ｗが同一帯域ＷＲ2[m]に連続して属する場合、その度にレーン幅カウンタｎｎ2を１ずつインクリメントしていく。一方、認識レーン幅Ｗが前回の帯域ＷＲ2[m]と異なる帯域ＷＲ2[m']に属する場合には、レーン幅カウンタｎｎ2を一旦リセットした後、再度インクリメントを開始する。
【００６１】
［レーン幅域分類部］
レーン幅域分類部２２は、レーン幅カウンタｎｎ1（またはｎｎ2）が所定値以上になった場合、認識レーン幅Ｗと、それと同一帯域に属する過去の認識レーン幅Ｗoldの履歴との平均を求め、平均レーン幅Ｗaveを算出する。そして、算出された平均レーン幅Ｗaveをレーン幅種ＷＩＤＴＨ[i]のいずれかに分類する。また、レーン幅域分類部２２は、平均レーン幅Ｗaveに応じて、各レーン幅種ＷＩＤＴＨ[i]の値を随時更新する。図１０および図１１は、レーン幅域分類ルーチンのフローチャートであり、レーン幅域分類部２２は、本ルーチンを所定の間隔（例えば100ms）で繰り返し実行する。
【００６２】
まず、ステップ５０において、レーン幅帯域カウンタ２１において算出されたｎｎ1またはｎｎ2が３よりも大きいか否か、すなわち、認識レーン幅Ｗが同一帯域ＷＲ1[N]，ＷＲ2[M]を３回以上連続して属するか否かが判断される。このステップ５０で否定判定された場合には本ルーチンを抜け、肯定判定された場合にはステップ５１に進む。
【００６３】
ステップ５１では、認識レーン幅Ｗの平均化処理を下式に従い行い、平均レーン幅Ｗaveを算出する。ここで、Ｗoldは、認識レーン幅Ｗと同一帯域に属する過去の認識レーン幅（履歴）であり、ｎは、過去の履歴Ｗoldを含む認識レーン幅の総数である（ｎ＞3）。
【数５】
Ｗave ← （Ｗ＋ΣＷold）／ｎ
【００６４】
続くステップ５２以降の手順は、５つのレーン幅種ＷＩＤＴＨ[i]の分類・更新処理に関する。まず、ステップ５２において、平均レーン幅Ｗaveが最大レーン幅種ＷＩＤＴＨ[4]から所定値（例えば100mm）を減算した値よりも大きいか否かが判断される。このステップ５２で肯定判定された場合には、さらに、平均レーン幅Ｗaveが最大レーン幅種ＷＩＤＴＨ[4]＋100よりも小さいか否かが判断される（ステップ５３）。ステップ５３で肯定判定された場合、すなわち、平均レーン幅Ｗaveがレーン幅種ＷＩＤＴＨ[4]±100未満の場合には、平均レーン幅Ｗaveがレーン幅種ＷＩＤＴＨ[4]に属すると認識する。そして、傾斜平均によるレーン幅種ＷＩＤＴＨ[4]の更新処理を下式に従い行った後（ステップ５４）、本ルーチンを抜ける。
【図６】
ＷＩＤＴＨ[4] ← （ＷＩＤＴＨ[4]×３＋Ｗave）／４
【００６５】
ステップ５３において否定判定された場合、すなわち、平均レーン幅Ｗaveがレーン幅種ＷＩＤＴＨ[4]＋100mm以上の場合（ＷＩＤＴＨ[4]に属さない場合）、平均レーン幅Ｗaveを新たなレーン幅種（一つ外側）と判断する。そして、平均レーン幅Ｗaveを新たな最大レーン幅種ＷＩＤＴＨ[4]と設定し（ステップ５５）、本ルーチンを抜ける。ステップ５５では、図１５に示すようなレーン幅種配列ＷＩＤＴＨ[i]の代入・シフト処理が行われる。すなわち、平均レーン幅Ｗaveを配列ＷＩＤＴＨ[4]に代入し、配列ＷＩＤＴＨ[4]の従前値を配列ＷＩＤＴＨ[3]にシフトする。同様に、配列ＷＩＤＴＨ[3]，[2]，[1]の従前値を一つ前の配列ＷＩＤＴＨ[2]，[1]，[0]にそれぞれシフトする。配列ＷＩＤＴＨ[0]の従前値は消去される。
【００６６】
ステップ５２において否定判定された場合はステップ５６に進み、平均レーン幅Ｗaveがレーン幅種ＷＩＤＴＨ[3]−100mmよりも大きいか否かが判断される。このステップ５６で肯定判定された場合には、さらに、平均レーン幅Ｗaveがレーン幅種ＷＩＤＴＨ[3]＋100よりも小さいか否かが判断される（ステップ５７）。ステップ５７で肯定判定された場合、すなわち、平均レーン幅Ｗaveがレーン幅種ＷＩＤＴＨ[3]±100未満の場合には、平均レーン幅Ｗaveがレーン幅種ＷＩＤＴＨ[3]に属すると判断する。そして、傾斜平均によるレーン幅種ＷＩＤＴＨ[3]の更新処理を下式に従い行った後（ステップ５８）、本ルーチンを抜ける。
【図７】
ＷＩＤＴＨ[3] ← （ＷＩＤＴＨ[3]×３＋Ｗave）／４
【００６７】
これに対して、ステップ５７において否定判定された場合、すなわち、平均レーン幅Ｗaveがレーン幅種ＷＩＤＴＨ[3]＋100mm以上の場合（ＷＩＤＴＨ[3]に属さない場合）、さらに、レーン幅種ＷＩＤＴＨ{4]−500mmよりも大きいか否かが判断される（ステップ５９）。このステップ５９で否定判定された場合（ＷＩＤＴＨ[3]から大きくはずれていない場合）、平均レーン幅Ｗaveを新たなレーン幅種と判断する。この場合、平均レーン幅Ｗaveを新たなレーン幅種ＷＩＤＴＨ[3]として設定した後（ステップ６０）、本ルーチンを抜ける。ステップ６０では、図１６に示すようなレーン幅種配列ＷＩＤＴＨ[i]の代入・シフト処理が行われる。すなわち、平均レーン幅Ｗaveを配列ＷＩＤＴＨ[3]に代入し、配列ＷＩＤＴＨ[3]の従前値を配列ＷＩＤＴＨ[2]にシフトする。同様に、配列ＷＩＤＴＨ[2]，[1]の従前値を一つ前の配列ＷＩＤＴＨ[1]，[0]にそれぞれシフトする。そして、配列ＷＩＤＴＨ[0]の従前値は消去される。なお、配列ＷＩＤＴＨ[4]の値は変更されることなく保持される。
【００６８】
一方、ステップ５９で肯定判定された場合（ＷＩＤＴＨ[3]から大きくはずれている場合）、平均レーン幅Ｗaveを新たなレーン幅種と判断する。この場合、平均レーン幅Ｗaveを新たなレーン幅種ＷＩＤＴＨ[2]として設定した後（ステップ６１）、本ルーチンを抜ける。ステップ６１では、図１７に示すようなレーン幅種配列ＷＩＤＴＨ[i]の代入・シフト処理が行われる。すなわち、平均レーン幅Ｗaveを配列ＷＩＤＴＨ[2]に代入する。また、配列ＷＩＤＴＨ[3]には、これと隣接した配列ＷＩＤＴＨ[2]（＝Ｗave）と配列ＷＩＤＴＨ[4]（この値は保持）との平均値を代入する。そして、配列ＷＩＤＴＨ[3]の従前値は、２つ前の配列ＷＩＤＴＨ[1]にシフトし、それに伴い配列ＷＩＤＴＨ[1]の従前値を消去する。同様に、配列ＷＩＤＴＨ[2]の従前値は、２つ前の配列ＷＩＤＴＨ[0]にシフトし、それに伴い配列ＷＩＤＴＨ[0]の従前値を消去する。
【００６９】
ステップ５６で否定判定された場合、図１１のステップ６２に進み、平均レーン幅Ｗaveがレーン幅種ＷＩＤＴＨ[2]−100mmよりも大きいか否かが判断される。このステップ６２で肯定判定された場合には、さらに、平均レーン幅Ｗaveがレーン幅種ＷＩＤＴＨ[2]＋100よりも小さいか否かが判断される（ステップ６３）。ステップ６３で肯定判定された場合、すなわち、平均レーン幅Ｗaveがレーン幅種ＷＩＤＴＨ[2]±100の範囲に入る場合には、平均レーン幅Ｗaveがレーン幅種ＷＩＤＴＨ[2]に属すると判断する。この場合、傾斜平均によるレーン幅種ＷＩＤＴＨ[2]の更新処理が下式に従い行った後（ステップ６４）、本ルーチンを抜ける。
【図８】
ＷＩＤＴＨ[2] ← （ＷＩＤＴＨ[2]×３＋Ｗave）／４
【００７０】
これに対して、ステップ６３において否定判定された場合、すなわち、平均レーン幅Ｗaveがレーン幅種ＷＩＤＴＨ[2]＋100mm以上の場合（ＷＩＤＴＨ[2]に属さない場合）、さらに、レーン幅種ＷＩＤＴＨ{3]−500mmよりも大きいか否かが判断される（ステップ６５）。このステップ６５で否定判定された場合（ＷＩＤＴＨ[2]から大きくはずれていない場合）、平均レーン幅Ｗaveを新たなレーン幅種と判断し、平均レーン幅Ｗaveを新たなレーン幅種ＷＩＤＴＨ[2]と設定する（ステップ６６）。ステップ６６では、図１８に示すようなレーン幅種配列ＷＩＤＴＨ[i]の代入・シフト処理が行われる。すなわち、平均レーン幅Ｗaveを配列ＷＩＤＴＨ[2]に代入し、配列ＷＩＤＴＨ[2]の従前値を配列ＷＩＤＴＨ[1]にシフトする。同様に、配列ＷＩＤＴＨ[2]，[1]の従前値を一つ前の配列ＷＩＤＴＨ[1]，[0]にそれぞれシフトする。配列ＷＩＤＴＨ[0]の従前値は消去される。なお、配列ＷＩＤＴＨ[3]，[4]の値は変更されることなく保持される。
【００７１】
一方、ステップ６５で肯定判定された場合（ＷＩＤＴＨ[2]から大きくはずれている場合）、平均レーン幅Ｗaveを新たなレーン幅種と判断し、平均レーン幅Ｗaveを新たなレーン幅種ＷＩＤＴＨ[1]と設定する（ステップ６７）。ステップ６７では、図１９に示すようなレーン幅種配列ＷＩＤＴＨ[i]の代入・シフト処理が行われる。すなわち、平均レーン幅Ｗaveを配列ＷＩＤＴＨ[1]に代入する。また、配列ＷＩＤＴＨ[2]には、これと隣接した配列ＷＩＤＴＨ[1]（＝Ｗave）と配列ＷＩＤＴＨ[3]（この値は保持）との平均値を代入する。そして、配列ＷＩＤＴＨ[2]の従前値は、２つ前の配列ＷＩＤＴＨ[0]にシフトし、それに伴い配列ＷＩＤＴＨ[0]の従前値を消去する。同様に、配列ＷＩＤＴＨ[1]の従前値を消去する。
【００７２】
ステップ６２で否定判定された場合、ステップ６８に進み、平均レーン幅Ｗaveがレーン幅種ＷＩＤＴＨ[1]−100mmよりも大きいか否かが判断される。このステップ６８で肯定判定された場合には、さらに、平均レーン幅Ｗaveがレーン幅種ＷＩＤＴＨ[1]＋100よりも小さいか否かが判断される（ステップ６９）。ステップ６９で肯定判定された場合、すなわち、平均レーン幅Ｗaveがレーン幅種ＷＩＤＴＨ[1]±100の範囲に入る場合には、平均レーン幅Ｗaveがレーン幅種ＷＩＤＴＨ[1]に属すると判断する。そして、傾斜平均によるレーン幅種ＷＩＤＴＨ[1]の更新処理が下式に従い行われる（ステップ７０）。
【図９】
ＷＩＤＴＨ[1] ← （ＷＩＤＴＨ[1]×３＋Ｗave）／４
【００７３】
これに対して、ステップ６９において否定判定された場合、すなわち、平均レーン幅Ｗaveがレーン幅種ＷＩＤＴＨ[1]＋100mm以上の場合（ＷＩＤＴＨ[1]に属さない場合）、さらに、レーン幅種ＷＩＤＴＨ{2]−500mmよりも大きいか否かが判断される（ステップ７１）。このステップ７１で否定判定された場合（ＷＩＤＴＨ[1]から大きくはずれていない場合）、平均レーン幅Ｗaveを新たなレーン幅種と判断し、平均レーン幅Ｗaveを新たなレーン幅種ＷＩＤＴＨ[1]と設定する（ステップ７２）。ステップ７２では、図２０に示すようなレーン幅種配列ＷＩＤＴＨ[i]の代入・シフト処理が行われる。すなわち、平均レーン幅Ｗaveを配列ＷＩＤＴＨ[1]に代入し、配列ＷＩＤＴＨ[1]その従前値を配列ＷＩＤＴＨ[0]にシフトし、配列ＷＩＤＴＨ[0]の従前値を消去する。なお、配列ＷＩＤＴＨ[2]，[3]，[4]の値は変更されることなく保持される。
【００７４】
一方、ステップ７１で肯定判定された場合（ＷＩＤＴＨ[1]から大きくはずれている場合）、平均レーン幅Ｗaveを新たなレーン幅種と判断し、平均レーン幅Ｗaveを新たな最小レーン幅種ＷＩＤＴＨ[0]と設定する（ステップ７３）。ステップ７３では、図２１に示すようなレーン幅種配列ＷＩＤＴＨ[i]の代入・シフト処理が行われる。すなわち、平均レーン幅Ｗaveを配列ＷＩＤＴＨ[0]に代入する。また、配列ＷＩＤＴＨ[1]には、これと隣接した配列ＷＩＤＴＨ[0]（＝Ｗave）と配列ＷＩＤＴＨ[2]（この値は保持）との平均値を代入する。配列ＷＩＤＴＨ[0]，[1]の従前値は消去される。
【００７５】
ステップ６８で否定判定された場合はステップ７４に進み、平均レーン幅Ｗaveがレーン幅種ＷＩＤＴＨ[0]−100mmよりも大きいか否かが判断される。このステップ７４で肯定判定された場合には、平均レーン幅Ｗaveがレーン幅種ＷＩＤＴＨ[0]に属すると判断する。そして、傾斜平均によるレーン幅種ＷＩＤＴＨ[0]の更新処理が下式に従い行われる（ステップ７５）。
【図１０】
ＷＩＤＴＨ[0] ← （ＷＩＤＴＨ[0]×３＋Ｗave）／４
【００７６】
これに対して、ステップ７４において否定判定された場合、すなわち、平均レーン幅Ｗaveがレーン幅種ＷＩＤＴＨ[0]＋100mm以上の場合（ＷＩＤＴＨ[0]に属さない場合）、平均レーン幅Ｗaveを新たなレーン幅種と判断し、平均レーン幅Ｗaveを新たな最大レーン幅種ＷＩＤＴＨ[0]と設定する（ステップ７６）。ステップ７６では、図２２に示すようなレーン幅種配列ＷＩＤＴＨ[i]の代入・シフト処理が行われる。すなわち、平均レーン幅Ｗaveを配列ＷＩＤＴＨ[0]に代入し、その従前値を消去する。
【００７７】
以上の説明からわかるように、主レーン幅ＷＭＳＴＲを特定する際のベースとなるレーン幅種ＷＩＤＴＨ[i]は、認識レーン幅Ｗ（正確には平均レーン幅Ｗave）に応じて、更新、追加或いはシフト等の更新処理が適宜行われる。
【００７８】
［決定レーン幅消去部］
決定レーン幅消去部２３は、重複しているとみなせる程に値が近接しているレーン幅種ＷＩＤＴＨ[i]や所定時間使用されていないレーン幅種ＷＩＤＴＨ[i]を、不要なものとして消去する。レーン幅種ＷＩＤＴＨ[i]を消去するか否かは、それに対応して個別に設定された消去カウンタＷＣＮＴ[i]の値に応じて決定される。この点を概略的にいえば、レーン幅種ＷＩＤＴＨ[i]の出現頻度（使用頻度）が高い場合には、それに関する消去カウンタＷＣＮＴ[i]の値は小さいが、出現頻度が低下するとカウンタ値が増大する。そして、このカウンタ値が所定値に到達すると、それに対応するレーン幅種ＷＩＤＴＨ[i]が消去される。図１２は、決定レーン幅消去ルーチンのフローチャートであり、決定レーン幅消去部２３は、本ルーチンを所定の間隔（例えば100ms）で繰り返し実行する。
【００７９】
まず、ステップ８０において、認識レーン幅Ｗがいずれかのレーン幅種ＷＩＤＴＨ[i]に属するか否か（換言すれば、レーン幅種ＷＩＤＴＨ[i]を基準とした所定レンジ内（例えば±30mm）か否か）が判断される。このステップ８０で肯定判定された場合には、ステップ８１に進み、対応するレーン幅種ＷＩＤＴＨ[i]に関する消去カウンタＷＣＮＴ[i]がリセットされる（ＷＣＮＴ[i]←0（高頻度を意味する））。これに対して、ステップ８０で否定判定された場合には、ステップ８１をスキップしてステップ８２に進む。
【００８０】
ステップ８２では、レーン幅種ＷＩＤＴＨ[i]とこれと隣接したレーン幅種ＷＩＤＴＨ[i+1]（またはＷＩＤＴＨ[i-1]）との差が所定値（例えば30mm）未満であるか否かが判断される。このステップ８３で肯定判定された場合、隣接したレーン幅種ＷＩＤＴＨ[i+1]（またはＷＩＤＴＨ[i-1]）と重複しているとみなせる程近接している場合は、対応するレーン幅種ＷＩＤＴＨ[i]に関する消去カウンタＷＣＮＴ[i]の値が999（極低頻度）にセットされる（ステップ８３）。これに対して、ステップ８２で否定判定された場合には、ステップ８３をスキップしてステップ８４に進む。ステップ８４では、すべての消去カウンタＷＣＮＴ[i]（i=0〜4）の現在値に１がインクリメントされる。
【００８１】
ステップ８５では、所定の判定値（例えば400）に到達した消去カウンタＷＣＮＴ[i]が存在するか否かが判断される。400に到達している消去カウンタＷＣＮＴ[i]が存在する場合、それに対応するレーン幅種ＷＩＤＴＨ[i]が削除される（ステップ８６）。そして、削除されたものより下側のレーン幅種ＷＩＤＴＨ[i]の値を順次繰り上げるとともに、消去カウンタＷＣＮＴ[i]も繰り上げる。空白になった最小レーン幅種ＷＩＤＴＨ[0]には、所定の代表値ＩＮＩ（例えば50）がセットされる。一方、ステップ８５で否定判定された場合には、ステップ８６をスキップして本ルーチンを抜ける。
【００８２】
［主レーン幅決定部］
主レーン幅決定部２４は、計測初期（例えば、計測開始から30〜40秒後）において、５つのレーン幅種ＷＩＤＴＨ[i]のうち、最も出現頻度が高いレーン幅種ＷＩＤＴＨmaxを主レーン幅ＷＭＳＴＲとする。それ以降は、主レーン幅ＷＭＳＴＲが５つのレーン幅種のいずれとも一致しなくなった場合に、再び同じ処理を開始し、新たな主レーン幅ＷＭＳＴＲを決定する。図１３および図１４は、主レーン幅決定ルーチンのフローチャートであり、主レーン幅決定部２４は、本ルーチンを所定の間隔（例えば100ms）で繰り返し実行する。
【００８３】
まず、ステップ９１において、所定のカウントアップ条件を具備するか否かが判断される。本実施形態では、車線認識ができ、かつ車速が75km/h以上であることをカウントアップ条件としている。この条件を具備しない場合はタイマＴＭＲをリセットして（ステップ１１１）、本ルーチンを抜ける。一方、カウントアップ条件を具備する場合はステップ９２に進み、カウントアップ、すなわち、タイマＴＭＲの現在値に1がインクリメントされる。
【００８４】
ステップ９２に続くステップ９３では、タイマＴＭＲが3に到達しているか否かが判断される。タイマＴＭＲが3に到達するまでは、ステップ９３の肯定判定が繰り返されるため、使用カウンタＷＭＣＮＴ[i]がすべて0にリセットされる（ステップ９４）。この使用カウンタＷＭＣＮＴ[i]は、レーン幅種ＷＩＤＴＨ[i]の数だけ用意されており（i=0〜4）、個々のレーン幅種ＷＩＤＴＨ[i]の出現回数（換言すれば、認識レーン幅Ｗが属するレーン幅種ＷＩＤＴＨ[i]の分類回数）をカウントするカウンタである。
【００８５】
タイマＴＭＲが3に到達すると、ステップ９３の判定結果が肯定から否定に切り替わるためステップ９５に進む。このステップ９５では、タイマＴＭＲが300に到達しているか否かが判断される。タイマＴＭＲが300に到達するまでの期間は、加速車線等を走行しているケース等が想定されるため、走行状態が安定しないことが多い。そこで、この期間では、ステップ９５の否定判定が繰り返されるため、それ以降の処理を行うことなく本ルーチンを抜ける。
【００８６】
タイマＴＭＲが300から400までの間は、ステップ９６の肯定判定が繰り返され、レーン幅種ＷＩＤＴＨ[i]に関する使用回数のカウントが継続的に行われる。具体的には、まず、ステップ９７において、主レーン幅ＷＭＳＴＲを3330mmに仮設定する。つぎに、ステップ９８において、最大レーン幅種ＷＩＤＴＨ[4]が100mm以下であるか否かが判断される。正常な状態では最大レーン幅種ＷＩＤＴＨ[4]が100mm以下ということはあり得ない。したがって、ステップ９８で肯定判定された場合は正常な状態ではないと判断して、タイマＴＭＲを300にセットし、すべての使用カウンタＷＭＣＮＴ[i]を0にリセットすることにより、レーン幅を取り直す（ステップ９９）。
【００８７】
これに対して、ステップ９８で否定判定された場合は、それぞれのレーン幅種ＷＩＤＴＨ[i]が使用された回数を、それに対応した使用カウンタＷＭＣＮＴ[i]でカウントする。ここでは、図１２に示した決定レーン幅消去ルーチンで用いられている消去カウンタＷＣＮＴ[i]を参照し、その値が1ならば、それに対応する使用カウンタＷＭＣＮＴ[i]のインクリメントを行う。上述したように、決定レーン幅消去ルーチンでは、あるレーン幅種ＷＩＤＴＨ[i]が使用された場合、それに対応する消去カウンタＷＣＮＴ[i]は1にセットされる（ステップ８１，８４）。使用カウンタＷＭＣＮＴ[i]によるカウントは、タイマＴＭＲが400に到達するまで継続され、レーン幅種ＷＩＤＴＨ[i]が使用される度に対応する使用カウンタＷＭＣＮＴ[i]が順次インクリメントされていく。
【００８８】
タイマＴＭＲが400に到達すると、ステップ９６の判定結果が肯定から否定に切り替わるためステップ１０１に進み、さらに、主レーン幅ＷＭＳＴＲの決定を行うべく図１４のステップ１０２に進む。ステップ１０２では、使用回数の最も多いレーン幅種ＷＩＤＴＨ[i]（以下、「最頻レーン幅種ＷＩＤＴＨmax」という）が所定値（例えば2750mm）よりも大きいか否かが判断される。この設定値は、主レーン幅ＷＭＳＴＲの下限値を規定している。ステップ１０２で肯定判定された場合には、最頻レーン幅種ＷＩＤＴＨmaxを主レーン幅ＷＭＳＴＲとして設定する（ステップ１０３）。これに対して、ステップ１０２で否定判定された場合、すなわち、最頻レーン幅種ＷＩＤＴＨmaxが下限値以下の場合には、この下限値を主レーン幅ＷＭＳＴＲとして仮設定する（ステップ１０４）。
【００８９】
ステップ１０５では、最頻レーン幅種ＷＩＤＴＨmaxの出現回数が30回未満か否かが判断される。このステップ１０５で否定判定された場合には、信頼できる主レーン幅ＷＭＳＴＲを設定できるほどのサンプル数が得られていないと判断して、レーン幅の取り直を行う（ステップ１０６）。すなわち、タイマＴＭＲを300にセットするとともに、すべての使用カウンタＷＭＣＮＴ[i]を0にリセットする。これに対して、ステップ１０５で肯定判定された場合は、十分なサンプル数が得られていると判断して、ステップ１０６をスキップして本ルーチンを抜ける。
【００９０】
そして、タイマＴＭＲが401に到達すると、ステップ１０１の判定結果が肯定から否定に切り替わるためステップ１０７以降の手順に進む。まず、タイマＴＭＲが401にホールドされた後（ステップ１０７）、主レーン幅ＷＭＳＴＲに対して対応するレーン幅域が±α（例えば30mm）以内であるか否かが判断される（ステップ１０８）。ステップ１０８で肯定判定された場合は、レーン幅種ＷＩＤＴＨ[i]のうち最も出現頻度が高いものを主レーン幅ＷＭＳＴＲに設定する（ステップ１０９）。これに対して、ステップ１０８で否定判定された場合は、タイマＴＭＲを300，すべての使用カウンタＷＭＣＮＴ[i]を0に設定し、レーン幅の取り直しを行う（ステップ１１０）。
【００９１】
本実施形態では、基本的に、走行路上の補助車線が一部区間に存在する点に着目して、レーン幅の分布をとることにより主たる車線とそれ以外の補助車線とを分けることができる。主たる車線の場合は、撮像画像より認識された車線位置をそのまま用い、それ以外の場合はそれぞれの補助車線種に適した補正を行うことで、主たる車線の位置を適切に算出することができる。
【００９２】
また、主レーン幅ＷＭＳＴＲを利用することにより、片側の車線しか認識できない状況でも、認識不可側の車線位置を適切に推定することが可能となる。
【００９３】
また、このように補正された車線位置を用いて車両の横変位を周波数解析することにより、補助車線の影響を受けることなく、ドライバの覚醒度を精度よく推定することが可能となる。
【００９４】
【発明の効果】
このように、本発明によれば、両側の車線が認識された場合、認識レーン幅と、少なくとも一つのレーン幅種と、主レーン幅とに基づいて、主たる車線と補助車線との位置的関係を判断する。そして、その判断結果に応じて、認識された車線位置を補正する。これにより、主たる車線と補助車線とが併存する状況においても、主たる車線の位置を適切に算出することができる。また、本来存在するはずの片側車線が陰等の影響で認識できない状況下では、認識できた側の車線位置と、レーン幅の推定値である主レーン幅とを用いて、認識不可側の車線位置を推定することができる。このように補正・推定された車線位置から算出される車両の横変位量に基づいて、ドライバの覚醒度を推定すれば、推定精度の一層の向上を図ることができる。
【図面の簡単な説明】
【図１】車線変位補正システムのブロック構成図
【図２】車線パターンの分類の説明図
【図３】内側に補助車線が存在する場合の変位特性図
【図４】外側に補助車線が存在する場合の変位特性図
【図５】車線変位補正部のブロック構成図
【図６】車線パターン分類ルーチンのフローチャート
【図７】両側車線認識時における車線位置補正ルーチンのフローチャート
【図８】片側車線認識時における車線位置補正ルーチンのフローチャート
【図９】レーン幅認識部のブロック図
【図１０】レーン幅域分類ルーチンのフローチャート
【図１１】レーン幅域分類ルーチンのフローチャート
【図１２】決定レーン幅消去ルーチンのフローチャート
【図１３】主レーン幅決定ルーチンのフローチャート
【図１４】主レーン幅決定ルーチンのフローチャート
【図１５】レーン幅種配列ＷＩＤＴＨ[i]の代入・シフト処理の説明図
【図１６】レーン幅種配列ＷＩＤＴＨ[i]の代入・シフト処理の説明図
【図１７】レーン幅種配列ＷＩＤＴＨ[i]の代入・シフト処理の説明図
【図１８】レーン幅種配列ＷＩＤＴＨ[i]の代入・シフト処理の説明図
【図１９】レーン幅種配列ＷＩＤＴＨ[i]の代入・シフト処理の説明図
【図２０】レーン幅種配列ＷＩＤＴＨ[i]の代入・シフト処理の説明図
【図２１】レーン幅種配列ＷＩＤＴＨ[i]の代入・シフト処理の説明図
【図２２】レーン幅種配列ＷＩＤＴＨ[i]の代入・シフト処理の説明図
【符号の説明】
１  前方監視センサ、
２  車線認識部、
３  車線変位補正部、
４  履歴保持部、
５  レーン幅認識部、
６  車両中心変位算出部、
７  覚醒度判定部、
８  警報部、
１１  車線補完部、
１２  レーン幅算出部、
１３  車線パターン分類部、
１４  車線位置補正部、
１５  車線補完部、
２１  レーン幅帯域カウンタ、
２２  レーン幅域分類部、
２３  決定レーン幅消去部、
２４  主レーン幅決定部
【図１】
0004707823.tif 000002
【図２】
0004707823.tif 000003
【図３】
0004707823.tif 000004
【図４】
0004707823.tif 000005
【図５】
0004707823.tif 000006
【図６】
0004707823.tif 000007
【図７】
0004707823.tif 000008
【図８】
0004707823.tif 000009
【図９】
0004707823.tif 000010
【図１０】
0004707823.tif 000011
【図１１】
0004707823.tif 000012
【図１２】
0004707823.tif 000013
【図１３】
0004707823.tif 000014
【図１４】
0004707823.tif 000015
【図１５】
0004707823.tif 000016
【図１６】
0004707823.tif 000017
【図１７】
0004707823.tif 000018
【図１８】
0004707823.tif 000019
【図１９】
0004707823.tif 000020
【図２０】
0004707823.tif 000021
【図２１】
0004707823.tif 000022
【図２２】
0004707823.tif 000023