【解決手段】区画線認識装置は、一部の視野が重複するように設置された複数のカメラと、複数のカメラの出力信号から得られたそれぞれの画像から特徴点を抽出する特徴点抽出部と、特徴点抽出部が抽出した特徴点の座標を、複数のカメラに共通する世界座標系の座標に変換する座標変換部と、世界座標系で示される複数の特徴点の位置関係に基づき白線を検出する白線検知部と、を備える。
【発明を実施するための形態】
【0008】
(第1の実施の形態)
以下、
図1〜
図19を参照して、区画線認識装置の第1の実施の形態を説明する。
図1は、車両2に搭載される区画線認識装置1の構成を示す図である。車両2は、区画線認識装置1と、車両制御ユニット108と、位置算出装置109とを備える。区画線認識装置1と、車両制御ユニット108とは、CANバス107により接続される。区画線認識装置1が認識した白線に関する情報は、車両制御ユニット108に出力される。
車両制御ユニット108は、区画線認識装置1が出力する白線に関する情報に基づき車両2を制御する。位置算出装置109は、航法衛星システムを構成する受信器であり、複数の航法衛星から受信した電波に含まれる情報に基づき、緯度および経度を算出する。位置算出装置109は、一定時間ごとに緯度および経度を算出し、区画線認識装置1に出力する。
【0009】
(区画線認識装置1の構成)
区画線認識装置1は、車両2の前方を撮影する前カメラ101−Frと、車両2の後方を撮影する後カメラ101−Rrと、車両2の左側方を監視する左カメラ101−SLと、車両2の右側方を撮影する右カメラ101−SRと、これらのカメラが撮影して得られた画像を処理する画像処理装置102と、記憶装置103と、CPU104と、メモリ105と、CAN I/F 106とを備える。
前カメラ101−Frは車両2の前方、後カメラ101−Rrは車両2の後方、左カメラ101−SLは車両2の左側面、右カメラ101−SRは車両2の右側面に取り付けられる。以下では、前カメラ101−Fr、後カメラ101−Rr、左カメラ101−SL、および右カメラ101−SRをまとめてカメラ101と呼ぶ。
【0010】
カメラ101は広角レンズ、たとえば魚眼レンズを備えたカメラであり、約180度の視野を有し、それぞれの視野が一部重複する。すなわち、前カメラ101−Frと右カメラ101−SRの視野が一部重複し、右カメラ101−SRと後カメラ101−Rrの視野が一部重複し、後カメラ101−Rrと左カメラ101−SLの視野が一部重複し、左カメラ101−SLと前カメラ101−Frの視野が一部重複する。カメラ101は所定時間ごとに撮影を行い、撮影して得られた信号を画像処理装置102へ出力する。
画像処理装置102は、マイクロコンピュータ、ハードウエア回路、またはFPGAにより構成される装置である。画像処理装置102は、カメラ101のそれぞれから受信した信号に基づき画像(以下、撮影画像)を生成し、撮影画像から特徴点を抽出し、特徴点に関する情報、たとえば抽出した特徴点の撮影画像上の座標をCPU104に出力する。ただし以下では、カメラ101の出力信号に基づき生成した画像を、「カメラ101の撮影画像」とも呼ぶ。
【0011】
記憶装置103は不揮発性記憶媒体である。記憶装置103には、区画線認識装置1が実行するプログラム、カメラ101の内部パラメータ、カメラ101の外部パラメータ、地図情報、および後述する道路別区画線情報103Aなどが記憶される。カメラ101の内部パラメータとは、カメラ101の焦点距離や撮像素子のサイズであり、カメラ101の外部パラメータとは、車両2に対するそれぞれのカメラ101の取付け位置、および姿勢である。なお、内部パラメータおよび外部パラメータの推定においては、車両2の出荷時に1回だけキャリブレーションが実行されてもよいし、走行中にリアルタイムにキャリブレーションが実行されてもよい。地図情報には、リンクとノードで表す道路データと、ノードの緯度・経度と、リンクの道路種別等がそれぞれ関連付けて格納されている。
【0012】
CPU104は、画像処理装置102が出力する特徴点の情報を用いて、画像処理装置102が抽出した特徴点の座標変換や白線検知処理を行う。特徴点の情報には、たとえばその特徴点のエッジ強度が含まれ、このエッジ強度を特徴量と呼ぶ。検知した白線の情報は、CAN I/F 106、およびCANバス107を経由して、車両制御ユニット108に送られる。
メモリ105は、揮発性記憶媒体である。メモリ105には、後述する共通座標バッファ203および白線情報105Aが格納される。
なお、本実施の形態において区画線認識装置1が4つのカメラを備えることは必須ではなく、少なくとも視野が重複する2つのカメラ、たとえば前カメラ101−Frと左カメラ101−SLとを備えればよい。
【0013】
図2は、区画線認識装置1のソフトウエア構成を示す図である。
図2に示すブロックは、画像処理装置102およびCPU104が実行する機能をブロック図として示したものである。
画像処理装置102は、その機能として、第1特徴点抽出部201−SL、第2特徴点抽出部201−SR、第3特徴点抽出部201−Rr、および第4特徴点抽出部201−Frを備える。これらはそれぞれ、左カメラ101−SL、右カメラ101−SR、後カメラ101−Rr、および前カメラ101−Frの撮影画像から特徴点を抽出する。特徴点の抽出処理は後述する。以下では、第1特徴点抽出部201−SL、第2特徴点抽出部201−SR、第3特徴点抽出部201−Rr、および第4特徴点抽出部201−Frは全体として、または個々に特徴点抽出部201と呼ぶ。
【0014】
CPU104は、その機能として、第1座標変換部202−SL、第2座標変換部202−SR、第3座標変換部202−Rr、第4座標変換部202−Fr、および白線検知部204を有する。以下では、第1座標変換部202−SL、第2座標変換部202−SR、第3座標変換部202−Rr、および第4座標変換部202−Frをまとめて座標変換部202と呼ぶ。4つの座標変換部202はそれぞれ、4つの特徴点抽出部201により抽出された特徴点の画像上の座標を、それぞれのカメラ101において独立しているローカル座標系から4つのカメラ101に共通する座標系(以下、世界座標系)に変換し、共通座標バッファ203に格納する。白線検知部204は、共通座標バッファ203に格納された特徴点の情報を用いて白線情報105Aを作成して白線を検知し、車両制御ユニット108に白線の情報を出力する。
なお、世界座標系は車両2の中心、たとえば前輪車軸中心や車の重心等を原点とし、車両2の前後方向をY軸、左右方向をX軸とする。ただし、いずれかのカメラ101を基準としてもよいし、地上の固定物を基準としてもよい。
【0015】
図3は、メモリ105に格納される白線情報105Aの構成を示す図である。
白線情報105Aは、撮影画像から得られた白線の候補数が格納される「白線候補数」、およびそれぞれの白線候補の情報が格納される「白線候補情報」から構成される。「白線候補情報」は「白線候補数」に格納された数と同数が格納され、たとえば「白線候補数」が2であれば、白線情報105Aは「白線候補数」と2つの「白線候補情報」とから構成される。
【0016】
「白線候補情報」は、白線候補を構成する特徴点の数が格納される「特徴点数」と白線候補の白線としての確からしさを示す指標が格納される「スコア累計値」と、白線の判定結果が格納される「線種」と、白線に対する車両2の角度が格納される「角度差」と、それぞれの特徴点の情報が格納される「特徴点情報」とから構成される。「特徴点情報」は「特徴点数」に格納された数と同数が格納される。
「特徴点情報」は、特徴が抽出された撮影画像を撮影したカメラを特定する情報である「取得カメラID」と、周辺の点との輝度差である「エッジ強度」と、特徴点である確からしさを示す指標である「スコア」と、特徴点の世界座標系における座標である「世界座標」とから構成される。
【0017】
図4は、記憶装置103に格納される道路別区画線情報103Aの一例を示す図である。道路別区画線情報103Aには、道路種別とレーン幅と破線間隔とが関連付けて格納されている。レーン幅とは車道外側線と車線境界線の間隔、または車線境界線同士の間隔である。破線間隔とは、破線が実線と空白の繰り返しから構成されると考えた場合の、実線部分の長さと空白部分の長さである。
【0018】
(区画線認識装置1の動作の概要)
図5〜
図7を用いて区画線認識装置1の動作の概要を説明する。
図5は、区画線認識装置1を搭載する車両2の走行シーンの一例を示す図である。
図5は同一方向に走行するための3つの走行レーンA〜Cを示しており、図示左から走行レーンA、中央が走行レーンB、右が走行レーンCである。これらの走行レーンA〜Cは白線411〜414により構成される。図示左から、白線413、白線411、白線412、白線414の順に並んでいる。白線411は白線411a〜d、白線412は白線412a〜d、白線413は白線413a〜d、白線414は白線414a〜cから構成される。
【0019】
区画線認識装置1を搭載する車両2は走行レーンBを走行しており、車両2の前方には前方車両417、左側方には左側方車両410が走行している。車両2は、4台のカメラ101により車両2の周辺に存在する白線を撮影する。しかし、白線の一部は前方車両417および左側方車両410により視野が遮られる。
図5では、他車両により視野が遮られる範囲をハッチングで示している。すなわち、前方車両417により生じる死角が領域421であり、側方車両410により生じる死角が領域422および領域423である。領域422は前カメラ101−Frの視野が遮られないが左カメラ101−SLの視野が遮られる領域である。領域423は、側方車両410により生じる死角のうち領域422を除いた領域である。
【0020】
白線411〜412は、いずれのカメラにより撮影可能か否か、および死角に含まれるか否かにより以下のように分節される。
白線411aは、白線411のうち領域421に含まれる白線である。白線411bは、白線411のうち車両2の前方にあり白線411aを除く白線である。白線411dは、白線411のうち車両2の後方にある白線である。白線411cは、白線411から白線411a、b、dを除いた白線である。
白線412aは、白線412のうち領域421に含まれる白線である。白線412bは、白線412のうち車両2の前方にあり白線412aを除く白線である。白線412dは、白線412のうち車両2の後方にある白線である。白線412cは、白線412から白線412a、b、dを除いた白線である。
【0021】
白線413aは、白線413のうち車両2の前方にあり、かつ領域422および領域423に含まれない白線である。白線413bは、白線413のうち領域422に含まれる白線である。白線413dは、白線413のうち車両2の後方にあり、かつ領域421に含まれない白線である。白線413cは、白線413から白線413a、b、dを除いた白線である。
白線414aは、白線414のうち車両2の前方にある白線である。白線414cは、白線414のうち車両2の後方にある白線である。白線414bは、白線414から白線414a、cを除いた白線である。
【0022】
図6は、
図5に示した状況における4つのカメラ101のそれぞれで撮影して得られた画像に、検出された特徴点を重畳して表示した図である。
図6(a)は前カメラ101−Frの撮影画像、
図6(b)は後カメラ101−Rrの撮影画像、
図6(c)は右カメラ101−SRの撮影画像、
図6(d)は左カメラ101−SLの撮影画像である。
図6では図示右方向をX軸のプラス側、図示下方向をY軸のプラス側と定義する。すなわち、
図6(a)および
図6(b)では図示縦方向が車両2の進行方向となり、
図6(b)および
図6(c)では図示横方向が車両2の進行方向となる。
図6(a)における丸、
図6(b)における四角、
図6(c)における上向き三角、
図6(d)における下向き三角、のそれぞれのマーカーは、特徴点抽出部201によりそれぞれの画像から抽出された特徴点を示している。
【0023】
図6(a)には、前方車両417の後部、および左側方車両410の側面が描かれ、これらの車両により、白線411、白線412、白線413の一部が遮られる。
図6(a)には、白線411b、白線412b、白線413a、および白線414aが描かれている。また
図6(a)に丸のマーカーで示すように、白線だけでなく左側方車両410からも特徴点が抽出されている。
車両後方には後カメラ101−Rrの視野を遮る車両が存在せず、
図6(b)には、白線414c、白線412d、白線411d、白線413dが描かれている。また
図6(b)に四角のマーカーで示すように、撮影された白線から特徴点が抽出されている。
【0024】
車両右側方には右カメラ101−SRの視野を遮る車両が存在せず、
図6(c)には、白線412、および白線412が描かれている。また
図6(c)に上向き三角のマーカーで示すように、撮影された白線から特徴点が抽出されている。
図6(d)には、左側方車両410の側面が描かれ、この車両により白線413の一部が遮られる。
図6(d)に描かれる白線は、白線411、白線413a、および白線413dである。また
図6(d)に下向き三角のマーカーで示すように、白線だけでなく左側方車両410からも特徴点が抽出されている。
【0025】
図7は、
図6(a)〜(d)から抽出されたそれぞれの特徴点を世界座標系に変換し、世界座標系の平面上にマッピングした図である。
図7の図示上方は、
図5と同様に車両2の進行方向である。
図7における特徴点を示すマーカーは
図6(a)〜(d)と対応させている。たとえば
図7の白線413bの位置に示す丸のマーカーは、
図6(a)、すなわち前カメラ101−Frの撮影画像から得られた特徴点である。
前述のとおり4台のカメラ101の視野は一部重複しており、視野が重複する位置、すなわち複数のカメラから撮影される位置では複数のカメラの撮影画像から特徴点が抽出される。たとえば
図7の左上にある白線413aの位置には、丸と下向き三角のマーカーが存在することからわかるように、前カメラ101−Frの撮影画像と左カメラ101−SLの撮影画像の両方から特徴点が抽出されている。
【0026】
左側方車両410に遮られ、前カメラ101−Frおよび左カメラ101−SLの死角に位置する白線413cの位置では、
図7においても特徴点が抽出されていない。また、左側方車両410の位置に特徴点が抽出されている。
このように得られた特徴点に基づき、区画線認識装置1は、以下に説明する処理により白線411〜414を白線として検出する。さらに左側方車両410から抽出された特徴点を白線ではないとして棄却する。
【0027】
<フローチャート>
(概要を示すフローチャート)
図8は、区画線認識装置1の処理概要を示すフローチャートである。
図8に示すフローチャートに示す処理は、画像処理装置102およびCPU104により実行される。画像処理装置102およびCPU104は、カメラ101が撮影を行うたびに以下の処理を行う。
ステップS301では、画像処理装置102の特徴点抽出部201が、それぞれのカメラ101の撮影画像から特徴点を抽出してステップS302に進む。
ステップS302では、CPU104が、カメラ101の内部パラメータ、および外部パラメータに基づき、画像処理装置102により抽出された特徴点の座標をカメラごとに独立した座標系から4つのカメラに共通する世界座標系に変換してステップS303に進む。
【0028】
ステップS303では、CPU104が、世界座標に変換された特徴点を用いて車両2の進行方向と白線のなす角度を推定し、白線から抽出される特徴点の列が世界座標系のY軸に平行になるように車両2を中心に特徴点を回転させて、ステップS304に進む。
ステップS304では、世界座標に変換された特徴点を用いて白線を検知し、
図8に示すフローチャートを終了する。カメラ101が再度撮影を行うと、それに応じて再びステップS301から処理を開始する。
以下、ステップS301の詳細は
図9、ステップS302の詳細は
図10、ステップS303の詳細は
図11、ステップS304の詳細は
図13、のそれぞれのフローチャートを用いて説明する。
【0029】
(特徴点抽出のフローチャート)
図9は、
図8のステップS301の詳細を示すフローチャートである。画像処理装置102は4つのカメラ101のそれぞれに対応する特徴点抽出部201を備えるが、以下ではまず前カメラ101−Frに対応する第4特徴点抽出部201−Fr、および後カメラ101−Rrに対応する第3特徴点抽出部201−Rrの動作を説明する。以下に説明する
図9の各ステップの実行主体は、特徴点抽出部201である。
【0030】
ステップS1801では、撮影画像からエッジを抽出する。エッジ抽出の手法としては、例えばソーベルフィルタ等の微分フィルタを用いてエッジ画像を作成する手法が好適である。あるいは、輝度に応じて画像全体を路面、白線、それ以外に分類し、各分類の境界をエッジとみなして抽出してもよい。次に、ステップS18Lsに進む。
ステップS18LsはY座標に関するループ処理の開始ステップであり、ループ終端のステップS18Leまで、すなわち以下に説明するステップS1802〜S1804までの処理が、撮影画像の全てのY座標について、処理対象とするY座標を順番に変化させて実行される。撮影画像におけるX座標、Y座標の定義は
図6に示したとおりであり、たとえば前カメラ101−Frの撮影画像では車両2の進行方向がY軸である。
【0031】
まず、処理対象のY座標において、
図6において左から右へ、すなわちX座標の小さい方から大きい方へエッジを探索し、エッジ強度が正になるエッジ、すなわち低輝度から高輝度になる境界を探索する。エッジ強度が正になるエッジが見つかると、さらに図示右へ、すなわちX座標が大きい方へ探索し、エッジ強度が負になるエッジ、すなわち高輝度から低輝度になる境界を探索する(ステップS1802)。これらのX座標の差分が予め定めた閾値の範囲に入っているか否かを判定し(ステップS1803)、閾値以内であれば、それらのうち、自車に近い方のエッジ座標を特徴点の座標として保存する(ステップS1804)。
【0032】
上述したステップS1803における「予め定めた閾値」とは、区画線の幅に基づく値であり、既知である白線の幅、カメラ101の外部パラメータ、カメラ101の内部パラメータ等により予め算出される。
上述したステップS1804において、撮影画像において「自車に近い」とは、Y座標が大きく、X座標が撮影画像の中心部の値に近いことを意味する。たとえば、前カメラ101−Frの撮影画像において、車両2が走行している走行レーンを構成する白線411および白線412の内側のエッジの座標が特徴点の座標として保存される。
【0033】
以上が第3特徴点抽出部201−Rr、および第4特徴点抽出部201−Frの処理であるが、第1特徴点抽出部201−SL、および第2特徴点抽出部201−SRは、上述した処理のX座標とY座標を入れ替えればよい。たとえば、上述したフローチャートでX座標とY座標の扱いを逆にするか、画像を90度回転させた後に処理すればよい。
上述した特徴点抽出部201の処理により、例えばアスファルトの継ぎ目、タールのこぼれた跡等、白い領域が現れずにエッジだけが抽出されるような特徴点について、白線の特徴量として誤検知することはなくなる。また、白く塗装された車両が撮影された場合でもその幅は白線と異なるので閾値外として棄却される(ステップS1803:NO)。したがって、白く塗装された車両を白線の特徴量として誤検出する恐れを低減できる。
【0034】
(座標変換のフローチャート)
図10は、
図8のステップS302の詳細を示すフローチャートである。このフローチャートにより示される処理は、CPU104により実行される機能である、座標変換部202により実行される。
ステップS19L1sはカメラに関するループ処理の開始ステップであり、ループ終端のステップS19L1eまで、すなわち以下に説明するステップS1901〜S1903の処理が、カメラ101のそれぞれで撮影された画像について実行される。すなわち、処理対象のカメラ101を順番に変更する。
ステップS1901では、記憶装置103から処理対象のカメラ101について、外部パラメータと内部パラメータを取得してステップS19L2sに進む。
ステップS19L2sは特徴点に関するループ処理の開始ステップであり、ループ終端のステップS19L2eまで、すなわち以下に説明するステップS1902〜S1903の処理が、処理対象のカメラ101に対応する特徴点抽出部201が抽出した全ての特徴点について実行される。
まず、処理対象の特徴点を外部パラメータおよび内部パラメータを用いて世界座標に変換する(ステップS1902)。そして、変換した結果を共通座標バッファ203に格納する(ステップS1903)。
全ての特徴点、全てのカメラについて処理が完了すると、
図10のフローチャートを終了する。
【0035】
(角度推定のフローチャート)
図11は、
図8のステップS303の詳細を示すフローチャートである。このフローチャートにより示される処理は、CPU104により実行される機能である、白線検知部204により実行される。
ステップS801では、共通座標バッファ203に格納されている世界座標の特徴点を、回転角度θがゼロの状態における座標と定義し、ステップS8Lsに進む。ここで車軸を基準とする座標系を採用する理由は、道路を走行中の車両の車軸は白線と略平行である時間が圧倒的に長く、車線変更の際にも白線と車軸のなす角は比較的小さい角度だからである。
【0036】
ステップS8Lsは回転角度θに関するループ処理の開始ステップであり、ループ終端のステップS8Leまで、すなわち以下に説明するステップS802〜S805の処理が、回転角度θを−20度〜+20度まで1度刻みで変化させて実行される。ただし、回転角度θを変化させる最大量および変化幅は一例であり、これらの量を適宜変更してもよい。
まず、特徴点の座標を、車両2を中心に基準状態から所定の角度だけ回転させ(ステップS802)、回転させた特徴点をX軸に投射する(ステップS803)。そして、所定のX座標値の幅ごとに特徴点の数を集計し、極大値と極小値を算出する(ステップS804)。最後に極大値と極小値の差を累計したものを評価値として保存する(ステップS805)。
【0037】
回転角度θを予め定めたとおり変化させて評価値を算出すると、すなわち−20度〜+20度まで1度刻みで41回繰り返すとステップS806に進む。後に
図12を用いて例示するように、回転させた特徴点の列がY軸に平行であるほど評価値が高くなる。
ステップS806では、繰り返した算出した評価値のうち、最大の評価値を有する回転角、すなわちθ_bestを特定してステップS807に進む。またこのときθ_bestを白線情報105Aの「角度差」に格納する。
ステップS807では、共通座標バッファ203に格納された特徴点を、車両2を中心に基準状態からθ_best回転させて
図11のフローチャートを終了する。
上述したステップS803〜S806の処理を要約すると、特徴点を仮に回転させて回転角度ごとの評価値を算出し、最後に特徴点を評価値の最も高い角度だけ回転させるものである。
【0038】
図12を用いて
図11のステップS802〜S805の動作例を説明する。
図12(a)は評価値が高い例を示す図であり、
図12(b)は評価値が低い例を示す図である。
図12(a)、および
図12(b)はそれぞれ、車両2を中心に回転させた特徴点、X軸に投射した特徴点を所定のX座標値の幅ごとに集計した数、および評価値を表している。図示X軸の目盛りが、X軸に投射した特徴点を集計する所定のX座標値の幅である。
【0039】
図12(b)に示すように特徴点の列がY軸に対して傾いていると、X軸に投射された特徴点が広く分布する。
図12(b)において図示左から極大値を抽出すると3,4,4であり、同様に図示左から極小値を抽出すると1,0,0なので、
図12(b)の評価値は、(3−1)+(4−0)+(4−0)=10となる。一方、
図12(a)に示すように特徴点の列がY軸に対して平行であると、X軸に投射された特徴点が特定の座標に集中する。
図12(a)において図示左から極大値を抽出すると9,9,9であり、同様に図示左から極小値を抽出すると0,0,0なので、
図12(a)の評価値は、(9−0)+(9−0)+(9−0)=27となる。
このように、回転した特徴点のX軸への投射を所定のX座標値の幅ごとに集計し、極大値と極小値の差を評価することにより、特徴点がY軸に平行に並ぶ最適な回転角度θ_bestを得ることができる。
【0040】
(白線検知のフローチャート)
図13は、
図8のステップS304の詳細を示すフローチャートである。このフローチャートにより示される処理は、CPU104により実行される機能である、白線検知部204により実行される。
ステップS601では、検出された特徴点が白線から検出されたものであるか否かを判断する閾値thを算出する。本ステップの処理は
図15を用いて詳述するが、白線が破線である場合を想定して閾値thを決定する。次にステップS602に進む。
ステップS602では、座標変換部202が座標変換処理を実行する。すなわち、
図11のステップS807において回転された特徴点をX軸へ投影する。続くステップS603では、投影された特徴点の特徴量をX座標ごとに累積する。上述したように特徴量とは、たとえばその特徴点のエッジ強度である。そしてステップS604では、その累積値がステップS601において算出した閾値th以上かつ極大となるX座標を抽出する。
【0041】
図14は、ステップS602〜S604の処理を概念的に表した図である。
図14は、座標変換部202が抽出された特徴点の座標値を世界座標に座標変換し、
図11のステップS807において回転された特徴点をX座標軸上に投影し、X座標軸上に投影された特徴点のそれぞれの特徴量の累積値をヒストグラムとして表し、累積値が極大となるX座標を検出する様子を表している。そして、累積値が極大となるX座標のうち、累積値が閾値thを超えるX座標が抽出され、後の処理に使用される。
図13のフローチャートに戻って説明を続ける。
【0042】
ステップS604の次に実行されるステップS605では、ステップS604において抽出されたX座標を中心として所定のX座標幅に含まれる特徴点を、同一の白線候補に含まれる特徴点であるとして、白線情報105Aに格納する。すなわち本ステップの処理により、以下の値が格納される。すなわち、白線情報105Aの白線候補数の値、それぞれの白線候補情報における特徴点数、ならびにそれぞれの特徴点情報における取得カメラID、エッジ強度、および世界座標が格納される。たとえば
図14に示す例では、白線候補数は「5」である。次にステップS6L1sに進む。
【0043】
ステップS6L1sは白線候補に関するループ処理の開始ステップであり、ループ終端のステップS6L1eまで、すなわち以下に説明するステップS606〜S607までの処理が、白線候補のそれぞれについて実行される。
後述する処理(
図16参照)により白線候補を構成する各特徴点が有する特徴量に基づきスコアを算出し(ステップS606)、それらのスコアを累積したスコア累積値を算出する(ステップS607)。算出した特徴点のスコア、および白線候補のスコア累積値は、白線情報105Aに格納される。
【0044】
全ての白線候補についてステップS606およびステップS607の処理が完了すると、ステップS6L2sに進む。ステップS6L2sは白線候補に関するループ処理の開始ステップであり、ループ終端のステップS6L2eまで、すなわち以下に説明するステップS608〜S610までの処理が、白線候補のそれぞれについて実行される。
後述する処理(
図18参照)により白線の確定処理を行い、当該白線候補が白線であるか否かを判断する(ステップS609)。そして、白線であると判断すると後述する処理(
図18参照)により線種、すなわち実線か破線かを判定する(ステップS610)。
全ての白線候補についてステップS608〜S610の処理が完了すると、
図12のフローチャートを終了する。
【0045】
(閾値算出のフローチャート)
図15は、
図13のステップS601の詳細を示すフローチャートである。このフローチャートにより示される処理は、CPU104により実行される機能である白線検知部204により実行される。本フローチャートは、カメラ101により撮影される白線が破線であったとしても後述する処理が支障を生じないように適切な閾値thを決定するものである。カメラ101により撮影される白線が道路外側線などであり実線の場合には多くの特徴点が検出されるが、カメラ101により撮影される白線が車線境界線などであり破線の場合には検出される特徴点が少ないからである。
【0046】
まず位置算出装置109を用いて車両2の位置を算出し(ステップS1201)、記憶装置103に格納された地図情報を用いて車両2が走行している道路の種別を検索する(ステップS1202)。そして、ステップS1202において検索した道路の種別における区画線の破線に関する情報を、記憶装置103に格納された道路別区画線情報103Aから読みとる(ステップS1203)。さらにカメラ101の外部パラメータ、および内部パラメータを用いて各カメラ101が撮影可能な路面上の距離を算出し(ステップS1204)、その距離とステップS1203において読みとった破線に関する情報に基づき閾値thを算出する(ステップS1205)。
以上で
図15のフローチャートを終了する。
【0047】
(スコア算出のフローチャート)
図16は、
図13のステップS606の詳細を示すフローチャートである。このフローチャートにより示される処理は、CPU104により実行される機能である白線検知部204により実行される。以下に説明する処理は、世界座標において所定距離以内に存在する特徴点であって異なるカメラの撮影画像から得られた特徴点を同一の特徴点とみなし、特徴点である確からしさを示す指標、すなわちスコアを高く設定する。
ステップS7Lsは特徴点に関するループ処理の開始ステップであり、ループ終端のステップS7Leまで、すなわち以下に説明するステップS701〜S704までの処理が、処理対象の白線候補に含まれる全特徴点についてそれぞれ実行される。すなわち、処理対象とする特徴点が順番に変更される。
【0048】
まず処理対象の特徴点を中心として半径rf以内に存在する特徴点を抽出する(ステップS701)。特徴点同士の距離は、白線情報105Aに含まれる特徴点情報の世界座標の値から算出可能である。次に、抽出した複数の特徴点のうち、処理対象である特徴点を得るための画像生成に供したカメラと同一のカメラの画像出力で得られた特徴点を棄却する(ステップS702)。各特徴点がいずれのカメラから得られたかは、特徴点情報の取得カメラIDから判断可能である。
【0049】
そして、棄却されなかった特徴点の特徴量、すなわちその特徴点の特徴点情報に含まれるエッジ強度の値を小計する(ステップS703)。最後に、ステップS703において算出した小計と、(1+検出した特徴点数)との積をスコアとして算出する(ステップS704)。ただしここでいう「検出した特徴点数」とは、ステップS701において検出され、かつステップS702において棄却されなかった特徴点である。
以上で
図16のフローチャートを終了する。
【0050】
図17を用いて
図16に示したフローチャートの動作例を説明する。
図17に示す丸マーカーは前カメラ101−Frの撮影画像から抽出された特徴点であり、下向き三角マーカーは左カメラ101−SLの撮影画像から抽出された特徴点である。図中の黒で塗りつぶした丸マーカーが処理対象の特徴点である。
ステップS701において、処理対象の特徴点から距離rf以内の特徴点を抽出すると5つの特徴点が抽出される。そして、ステップS702において処理対象と同じく前カメラ101−Frの撮影画像から得られた白丸のマーカー2つが棄却され、ステップS703では、残りの3つの下向き三角で示す特徴点のエッジ強度の和が算出される。そしてステップS704ではその小計値と(1+3)の積がスコアとして算出される。
【0051】
(白線の確定処理のフローチャート)
図18は、
図13のステップS609の詳細を示すフローチャートである。このフローチャートにより示される処理は、CPU104により実行される機能である白線検知部204により実行される。
ステップS801では、白線情報105Aを参照し、処理対象の白線候補のスコア累積値が所定の閾値以上であるか否かを判断する。閾値以上であると判断するとステップS802に進み、閾値未満であると判断するとステップS804に進む。
ステップS802では、スコア累積値が所定の閾値以上である他の白線候補とのX座標との差がレーン幅相当であるか否かを判断する。レーン幅相当であると判断するとステップS803に進み、当該白線候補が白線であると判断して
図18のフローチャートを終了する。一方、レーン幅相当ではないと判断するとステップS804に進み、当該白線候補が白線ではないと判断して
図18のフローチャートを終了する。
【0052】
(線種判定のフローチャート)
図19は、
図13のステップS611の詳細を示すフローチャートである。このフローチャートにより示される処理は、CPU104により実行される機能である白線検知部204により実行される。
ステップS901では、処理対象の白線候補に含まれるすべての特徴点を世界座標のY座標の値でソートし、配列lineに格納する。以下では、配列lineのk番目の要素をline[k]と表現し、配列lineの要素はline[0]〜line[n−1]の全部でn個であるとして説明を続ける。
【0053】
ステップS902では差分最大値をゼロとしてステップS9Lsに進む。
ステップS9LsはY座標に関するループ処理の開始ステップであり、ループ終端のステップS9Leまで、すなわち以下に説明するステップS903〜S905までの処理が、変数kを1からn−1まで1ずつ順番に増加させて実行される。
line[k]とline[k−1]の差を差分値として算出し(ステップS903)、差分値が差分最大値よりも大きい場合は差分最大値をその差分値とする(ステップS904:YES→ S905)。一方、差分値が差分最大値以下である場合は特段の処理を行わない。
変数kに「n−1」を代入したステップS903〜S905の処理が完了すると,差分最大値が所定の閾値以上であるか否かを判断し(ステップS906)、閾値以上であれば破線であると判断し(ステップS907)、閾値未満であれば直線であると判断する(ステップS908)。以上で
図19のフローチャートを終了する。
【0054】
以上、
図8〜
図19を用いて説明した処理により、区画線認識装置1は、たとえば
図5〜
図7に示した例では、一部が他の車両により遮られているが白線411〜414を白線として検出することができる。また、左側方車両410の画像から抽出された特徴点は、仮にその白線候補のスコア累計値が閾値より高くても(
図18、ステップS801:YES)、他のスコア累積値が閾値以上のX座標との差がレーン幅相当ではないので(
図18、ステップS802:NO)、白線ではないと判断される。
【0055】
上述した第1の実施の形態によれば、次の作用効果が得られる。
(1)区画線認識装置1は、一部の視野が重複するように設置された複数のカメラ101と、複数のカメラ101の出力信号から得られたそれぞれの画像から特徴点を抽出する特徴点抽出部201と、特徴点抽出部201が抽出した特徴点の座標を、複数のカメラに共通する世界座標系の座標に変換する座標変換部202と、世界座標系で示される複数の特徴点の位置関係に基づき白線を検出する白線検知部204と、を備える。
区画線認識装置1は、カメラ101のそれぞれの撮影画像から特徴点を抽出し、抽出された特徴点の座標を世界座標系に変換し、世界座標系における特徴点の位置関係に基づき白線を検出する。そのため、それぞれのカメラ101の撮影画像において、他のカメラと視野が重複するか否かに関わらず特徴点が抽出され、抽出された特徴点は白線検出に用いられる。すなわち、複数のカメラ101の視野が重複する領域において、複数のカメラの画像を用いて白線検出をすることができる。たとえば、あるカメラでは側方を走行する車両が障害物となり白線を撮影できない場合でも、別のカメラで白線を撮影し特徴点を抽出することが可能である。
【0056】
なお、各カメラの撮影画像を独立に処理して白線を検出し、視野が重複する領域については白線が検出されている撮影画像を採用する手法も考えられるが、区画線認識装置1の手法と比較すると以下の問題がある。すなわち、1つのカメラの視野だけでは白線を長い距離に渡って撮影できず、白線を検出することが困難である。特に白線が破線の場合に顕著である。区画線認識装置1の手法によれば、特徴点の抽出は撮影画像ごとに行うが、白線の検出は4つのカメラの視野から得られた情報、すなわち特徴点の位置関係に基づき白線を検出するので、このような問題が生じない。
また、座標変換を行う前に特徴点を抽出するので、座標変換を行う処理対象を撮影画像の全体から抽出された特徴点に減少させ、処理を高速化することができる。
【0057】
(2)白線検知部204は、世界座標系における特徴点の位置関係に基づき、複数の特徴点から構成される白線候補を抽出し(
図13のステップS602〜S604)、白線候補が白線と判断される指標であるスコア累計値を、当該白線候補を構成する特徴点の特徴点である確からしさを示すスコアの総計として算出し(
図13のステップS606〜S607)、スコア累計値が予め定めた閾値より大きい白線候補を白線として検出する(
図18のステップS801)。
そのため、白線候補を構成する各特徴点が特徴点である確からしさに基づき、白線を決定することができる。
【0058】
(3)白線検知部204は、世界座標系で所定距離以内に存在する特徴点であって、当該特徴点の検出に用いる撮影画像を得るカメラ101とは異なるカメラ101の撮影画像から得られた特徴点が存在する場合に、特徴点のスコアを高く算出する(
図16のステップS701〜S704)。
車両2に搭載されるカメラ101には、レンズへの異物の付着や太陽光の反射など外乱要素が多数存在しており、これら外乱により現実には物体が存在しない個所から特徴点を検出してしまうことがある。しかし、カメラ101を構成する別々のカメラの撮影画像からそれぞれ抽出された2つの特徴点が世界座標系において近傍に存在する場合は、その2点は同一の被写体である可能性が高い。すなわち、これら2点は信頼性が高いことを理由として、この特徴点のスコアを高く算出することができる。
【0059】
(4)白線検知部204は、スコア累計値が予め定めた閾値より大きい白線候補であって、他のスコア累計値が予め定めた閾値より大きい白線候補との間隔が、当該区画線認識装置を搭載した車両の走行している走行レーンの間隔と略一致する白線候補を白線として検出する(
図18のステップS802)。
そのため、白線と同様の幅を有する車両の模様を特徴点として検出した場合に、それらの特徴点から構成される白線候補を棄却することができる。
【0060】
(5)白線検知部は、閾値をカメラに撮影される白線の長さに基づき決定する(
図15のステップS1201〜S1205)。
そのため、車両2が走行する環境やカメラ101の内部パラメータ、および外部パラメータにあわせて適切な閾値を設定することができる。
【0061】
(変形例1)
区画線認識装置1が備える画像処理装置102とCPU104の処理分担が異なってもよい。区画線認識装置1は、
図2に示すソフトウエア構成を実現できればよく、たとえば、座標変換部202の機能は画像処理装置102が備えてもよいし、CPU104が特徴点抽出部201の機能を備えてもよい。
【0062】
(変形例2)
区画線認識装置1は、検出した白線と自車両との位置関係をさらに判別してもよい。本変形例では、車両2の世界座標系における位置がX=0となるように、共通座標バッファ203に格納された特徴点の座標があらかじめオフセットされていることとする。
図20は、自車位置と検出した白線との位置関係を判別するフローチャートである。
ステップS1701では、検知した白線の情報を取得し、ステップS17Lsに進む。
ステップS17LsはY座標に関するループ処理の開始ステップであり、ループ終端のステップS17Leまで、すなわち以下に説明するステップS1702〜S1707までの処理が、検知した全ての白線について繰り返される。
ステップS1702では、検出した白線のX座標を取得する。なお、前述のとおり世界座標系はY軸が白線と平行になるように回転させているので、白線の位置はX座標により特定される。
【0063】
続くステップS1703では、白線のX座標が自車両を中心に車両2の車幅よりも内側にあるか否かを判断する。本変形例では自車両の位置をX=0としているので、−車幅/2<X<車幅/2を満たすか否かを判断する。この条件を満たすと判断する場合はステップS1705に進み、その白線を車両2が跨いでいる状態にあると判断する。一方、この条件を満たさないと判断するとステップS1704に進む。
ステップS1704では、白線のX座標が正であるか否かを判断する。世界座標系は車両2の進行方向右側をX軸の正方向と定義しているので、この条件を満たすと判断するとステップS1707に進み、その白線が車両2の右側にあると判断する。一方、この条件を満たさないと判断するとステップS1706に進み、その白線が車両2の左側にあると判断する。
【0064】
この変形例2によれば、車両2が白線を跨いでいる場合を含めて、抽出された白線と車両2との位置関係を判別することができる。そのため、この位置関係の情報を用いて車両2が走行中の走行レーンや、左右に存在する走行レーンの有無や存在する数を把握することができる。隣接する走行レーンの有無により接近車両を注意する必要性や自車両の車線変更の検討などが変化するので、白線と車両2との位置関係を判別は、例えば車両2の自動運転に役立てることができる。
【0065】
(変形例3)
第1の実施の形態では、撮影画像から抽出された特徴点を世界座標に変換した(
図8のステップS301、S302)。しかし、撮影画像を世界座標に変換してから特徴点を抽出してもよい。ただし、特徴点の抽出は他のカメラ101の撮影画像とは独立して行い、他のカメラ101と視野が重複する領域からも特徴点を抽出する。
この変形例3によれば、4台のカメラ101の撮影画像を用いて車両2を上から見下ろしたような周囲環境の画像、いわゆる俯瞰画像を作成することを前提とすれば、高い処理負荷がかかる画像の座標変換処理を他の処理に先駆けて開始することができる。
【0066】
(第2の実施の形態)
図21〜
図22を参照して、区画線認識装置の第2の実施の形態を説明する。以下の説明では、第1の実施の形態と同じ構成要素には同じ符号を付して相違点を主に説明する。特に説明しない点については、第1の実施の形態と同じである。本実施の形態では、主に、複数のカメラの視野が重なる領域は特定のカメラの撮影画像のみを用いる点で、第1の実施の形態と異なる。
区画線認識装置1のハードウエア構成は第1の実施の形態と同様である。記憶装置103に格納されるプログラムの動作が第1の実施の形態と一部異なる。
【0067】
図21は、第2の実施の形態において
図8のステップS302の詳細を示すフローチャートであり、第1の実施の形態における
図10のフローチャートの代わりに実行される処理を表している。第1の実施の形態と同一の処理には同一のステップ番号を付して説明を省略する。
ステップS1900Aでは、世界座標系におけるカメラ101の撮影範囲の分担を設定し、ステップS19L1sに進む。
【0068】
図22は、カメラ101の撮影範囲の分担例を示す図である。
図22に示すように、前カメラ101−Frは車両2の前方であって車両を中心に距離Lの範囲の前方領域1502を、後カメラ101−Rrは車両2の後方であって車両を中心に距離Lの範囲の後方領域1503を、右カメラ101−SRは車両2の右側であって前方領域1502および後方領域1503を除く領域である右領域1504を、左カメラ101−SLは車両2の左側であって前方領域1502および後方領域1503を除く領域である左領域1501を分担させる。なお、ステップS1900Aの処理は予め実行しておき、実行結果を記憶装置103に格納してもよい。
【0069】
図21に戻って説明を続ける。
次に、記憶装置103から処理対象のカメラ101について、外部パラメータと内部パラメータを取得し(ステップS1901)、処理対象の特徴点を外部パラメータおよび内部パラメータを用いて世界座標に変換する(ステップ1902)。そして世界座標に変換した特徴点のうち、処理対象のカメラ101が分担する領域に含まれる特徴点を共通座標バッファ203に格納する(ステップ1903A)。すなわち、処理対象のカメラ101が分担する領域に含まれない特徴点は、共通座標バッファ203に格納しない。
上述した第2の実施の形態によれば、区画線認識装置1は、重複する視野はいずれか1つのカメラの撮影画像しか処理しないため、処理が簡便である。
【0070】
上述した各実施の形態および変形例は、それぞれ組み合わせてもよい。
上述した各実施の形態および変形例では、車道に描かれた白線の認識について説明したが、白線が描かれる場所は車道に限定されず、構内や屋内であってもよい。また、白線は道路区画線の一例として挙げたものであり、認識する線の色は白に限定されず、黄色やオレンジでもよい。
上記では、種々の実施の形態および変形例を説明したが、本発明はこれらの内容に限定されるものではない。本発明の技術的思想の範囲内で考えられるその他の態様も本発明の範囲内に含まれる。