以下、図を参照しつつ、地図生成装置、及び、その地図生成装置で利用される地図生成方法及び地図生成用コンピュータプログラムについて説明する。この地図生成装置は、道路が表された画像から車線の境界線を表す境界特徴物が表された画素を抽出し、その境界特徴物に基づいて道路を車線ごとに区分する。あるいは、この地図生成装置は、道路が表された画像に写っている、道路上の個々の車両を検出し、検出した車両が並ぶ線のそれぞれを、個々の車線として検出する。
なお、以下に説明する各実施形態または変形例において、地図生成処理の対象となる、道路が表された画像は、例えば、地面を鉛直上方から撮影することで得られ、かつ、道路上に表された個々の道路標示を識別可能な鳥瞰画像、例えば、高解像度の衛星写真あるいは航空写真が表された画像とすることができる。また、以下の説明では、地図生成処理の対象となる、道路が表された画像を、単に画像と呼ぶことがある。
最初に、第1の実施形態による地図生成装置について説明する。第1の実施形態による地図生成装置は、画像に表された境界特徴物を検出し、その境界特徴物に基づいて道路を車線ごとに区分する。
図1は、第1の実施形態による、地図生成装置のハードウェア構成図である。図1に示されるように、地図生成装置1は、通信インターフェース2と、入力装置3と、表示装置4と、メモリ5と、記憶媒体アクセス装置6と、プロセッサ7とを有する。
通信インターフェース2は、イーサネット(登録商標)などの通信規格に従った通信ネットワークに接続するための通信インターフェース及びその制御回路を有する。通信インターフェース2は、通信ネットワークを介して接続される他の機器(図示せず)から、様々な情報あるいはデータを受信してプロセッサ7へわたす。通信インターフェース2が受信するデータには、地図生成処理の対象となる、道路が表された画像と、その画像に表された地理的範囲を表す情報(例えば、その画像に表された領域の所定の位置(例えば、左上端または中心)の緯度及び経度、その領域の水平方向及び垂直方向の実空間サイズ、及び方位)が含まれていてもよい。また通信インターフェース2は、プロセッサ7から受け取った、地図生成処理の実行結果として得られた地図情報の一例である道路地図を、通信ネットワークを介して他の機器へ出力してもよい。
入力装置3は、例えば、キーボードと、マウスといったポインティングデバイスとを有する。そして入力装置3は、ユーザによる操作、例えば、地図生成処理の対象となる画像を選択する操作、地図生成処理の実行開始を指示する操作、あるいは、生成された道路地図を表示装置4に表示させる操作に応じた操作信号を生成し、その操作信号をプロセッサ7へ出力する。
表示装置4は、例えば、液晶ディスプレイまたは有機ELディスプレイを有する。そして表示装置4は、プロセッサ7から受け取った表示用のデータ、例えば、地図生成処理が実行される画像の候補を表すデータ、あるいは、生成された道路地図またはその一部を表示する。
なお、入力装置3と表示装置4とは、タッチパネルディスプレイのように一体化された装置であってもよい。
メモリ5は、記憶部の一例であり、例えば、読み書き可能な半導体メモリと読み出し専用の半導体メモリである。そしてメモリ5は、例えば、プロセッサ7で実行される地図生成処理用のコンピュータプログラム、その地図生成処理で用いられる各種のデータ、例えば、地図生成処理で用いられる識別器を規定するパラメータ群、及び、その地図生成処理の実行中に生成される各種のデータを記憶する。さらに、メモリ5は、地図生成処理の対象となる画像、及び、その画像に表された地理的範囲を表す情報を記憶してもよい。さらに、メモリ5は、生成された道路地図を記憶してもよい。
記憶媒体アクセス装置6は、例えば、磁気ディスク、半導体メモリカード及び光記憶媒体といった記憶媒体8にアクセスする装置である。なお、記憶媒体アクセス装置6は、記憶媒体8とともに、記憶部の他の一例を構成する。記憶媒体アクセス装置6は、例えば、記憶媒体8に記憶された、プロセッサ7上で実行される地図生成処理用のコンピュータプログラム、あるいは、地図生成処理の対象となる画像を読み込み、プロセッサ7に渡す。あるいは、記憶媒体アクセス装置6は、生成された道路地図をプロセッサ7から受け取って、その道路地図を記憶媒体8に書き込んでもよい。
プロセッサ7は、処理部の一例であり、例えば、1個または複数個のCPU及びその周辺回路を有する。さらに、プロセッサ7は、数値演算用の演算回路、グラフィック処理用の演算回路及び論理演算用の演算回路を有していてもよい。そしてプロセッサ7は、地図生成装置1全体を制御する。また、プロセッサ7は、地図生成処理の対象となる、道路が表された画像に対して地図生成処理を実行する。
図2は、第1の実施形態による、プロセッサ7の機能ブロック図である。図2に示されるように、プロセッサ7は、抽出部11と、車線検出部12と、交差点エリア検出部13と、交通規則設定部14と、地図生成部15とを有する。プロセッサ7が有するこれらの各部は、例えば、プロセッサ7上で実行されるコンピュータプログラムによって実現される機能モジュールである。あるいは、プロセッサ7が有するこれらの各部は、プロセッサ7に設けられる、専用の演算回路であってもよい。
抽出部11は、画像の画素ごとに、その画素に表された道路上の特徴物の種類を出力する識別器に、地図生成処理の対象となる、道路が表された画像を入力する。これにより、抽出部11は、その画像から、道路上の特徴物のうちの車線の境界を表す境界特徴物が表された画素、及び、交通規則を表す規則特徴物が表された画素などを抽出する。境界特徴物には、例えば、白線または黄線などの車線区画線、及び、縁石または中央分離帯といった道路境界線が含まれる。また、規則特徴物には、例えば、右左折などの矢印、一旦停止線、横断歩道、速度表示、停車禁止または特殊レーン(バス専用レーン、自転車専用レーンなど)を表す道路標示が含まれる。
抽出部11は、識別器として、例えば、画像が入力される入力層と、画像が有する複数の画素のそれぞれに表された特徴物の識別結果を出力する出力層と、入力層と出力層との間に接続される複数の隠れ層とを有するコンボリューショナルニューラルネットワーク(Convolutional Neural Network, CNN)を用いることができる。具体的には、抽出部11は、識別器として、セマンティックセグメンテーション用のCNN、例えば、Fully Convolutional Network(FCN)(Long, J., Shelhamer他, 「Fully convolutional networks for semantic segmentation」, In CVPR, 2015年)、SegNet、DeepLab、RefineNetあるいはPSPNetといったCNNを用いることができる。あるいはまた、抽出部11は、識別器として、ランダムフォレストといった他のセマンティックセグメンテーション技術に従った識別器を用いてもよい。
抽出部11は、画像を上記のような識別器に入力することで、画像に含まれる画素ごとに、その画素に表された特徴物を表す識別結果データを得る。識別結果データは、例えば、画像と同じサイズを持ち、かつ、各画素が、その画素に表される特徴物に相当する値(例えば、白線は1、矢印は2、横断歩道は3等)を持つ2次元データとして表される。なお、画像には、同じ種類の規則特徴物が複数表されていることがある。そこで抽出部11は、同じ種類の規則特徴物が表された画素の集合に対してラベリング処理あるいはクラスタリング処理を実行することで、その規則特徴物が表された画素の集合を、個々の規則特徴物ごとに分類してもよい。この場合、識別結果データにおいて、異なる規則特徴物が表された画素同士は、互いに異なる値を有してもよい。抽出部11は、識別結果データを、車線検出部12、交差点エリア検出部13、交通規則設定部14及び地図生成部15へわたす。
車線検出部12は、識別結果データに含まれる、境界特徴物が表された画素の集合に基づいて、画像に表された個々の道路について、その道路に含まれる個々の車線を検出する。本実施形態では、車線検出部12は、境界特徴物が表された画素のそれぞれを母点として画像をボロノイ分割することでボロノイ境界を求め、求められたボロノイ境界のそれぞれを一つの車線として検出する。なお、車線検出部12は、ボロノイ分割を実行する任意のアルゴリズムに従ってボロノイ境界を求めればよい。
ボロノイ境界は、直近の二つの母点から等距離となる位置に設けられる。したがって、境界特徴物のそれぞれを母点とした場合、ボロノイ境界は、個々の車線に沿って延伸し、かつ、個々の車線内に位置するように求められることになる。したがって、車線検出部12は、境界特徴物が表された画素のそれぞれを母点とするボロノイ境界を求めることで、個々の車線を正確に検出することができる。
車線検出部12は、個々のボロノイ境界(すなわち、個々の車線)を表す車線検出結果データを交差点エリア検出部13へわたす。なお、車線検出結果データは、例えば、地図生成処理の対象となる画像と同じサイズを持ち、ボロノイ境界が表された画素とそれ以外の画素とが互いに異なる値を持つ二値画像とすることができる。
交差点エリア検出部13は、画像上の交差点を含むエリアを交差点エリアとして検出する。本実施形態では、個々の車線を表すボロノイ境界が求められているので、交差点では、ボロノイ境界同士が交差する。したがって、個々の交差点には、ボロノイ境界が交差する点、すなわち、ボロノイ点が出現する。そこで、交差点エリア検出部13は、ボロノイ点を含む所定の領域を交差点エリアとして検出する。これにより、交差点エリア検出部13は、画像から個々の交差点を正確に検出できる。
そのために、交差点エリア検出部13は、車線検出結果データに表されるボロノイ点を特定する。そして交差点エリア検出部13は、特定したボロノイ点ごとに、識別結果データを参照して、そのボロノイ点から、個々のボロノイ境界に沿って最も近い停止線または横断歩道までを含むエリアを交差点エリアとする。
図3は、境界特徴物、ボロノイ境界及び交差点エリアの検出結果の一例を示す図である。図3に示される画像300において、車線区画線及び車線境界線等の境界特徴物が表された画素301が抽出されている。そして境界特徴物が表された画素301を母点として求められた個々のボロノイ境界302が、それぞれ、一つの車線を表していることが分かる。また、ボロノイ点303のそれぞれについて、そのボロノイ点を含むように交差点エリア304が設定されていることが分かる。
交差点エリア検出部13は、個々のボロノイ境界、すなわち、個々の車線を、交差点エリアと、交差点エリア間を接続する単路の何れかに区分する。すなわち、交差点エリア検出部13は、個々のボロノイ境界のうちの何れの交差点エリアにも含まれない区間を単路とする。なお、同じ二つの交差点エリア間を結ぶ複数のボロノイ境界が存在する場合、交差点エリア検出部13は、それらのボロノイ境界を一つの単路とする。したがって、複数の車線が設定された道路を表す単路については、その道路に含まれる車線の数だけのボロノイ境界が含まれる。これにより、画像に表された道路の個々の車線を表すレーンネットワークが形成される。
交差点エリア検出部13は、検出した個々の交差点エリア、個々の単路及び個々の単路に含まれる車線を表す情報、すなわち、レーンネットワークを表す情報を交通規則設定部14へわたす。なお、レーンネットワークを表す情報は、例えば、地図生成処理の対象となった画像における、個々の交差点エリアの位置及び範囲と、個々の単路の位置及びその単路に含まれる個々の車線の位置、その単路と接続される交差点エリアを示す情報が含まれる。
交通規則設定部14は、検出された車線ごとに、その車線上の規則特徴物で表される交通規則をその車線に関連付ける。例えば、交通規則設定部14は、識別結果データに表される規則特徴物のそれぞれについて、その規則特徴物が表された画素の集合の重心を求める。そして交通規則設定部14は、識別結果データに表される規則特徴物のうち、特殊レーンあるいは右左折の矢印といった、個々の車線ごとに設定される交通規則を表す規則特徴物について、その規則特徴物が表された画素の集合の重心に最も近いボロノイ境界に対応する車線に、その規則特徴物が表す交通規則を関連付ける。
また、交通規則設定部14は、識別結果データに表される規則特徴物のうち、制限速度、一旦停止あるいは停車禁止といった、道路そのものに設定される交通規則を表す規則特徴物について、その規則特徴物が表された画素の集合の重心が位置する単路に、その規則特徴物が表す交通規則を関連付ける。
さらに、交通規則設定部14は、右左折の矢印または一旦停止といった、交差点に関する交通規則を表す規則特徴物について、その規則特徴物が表された画素の集合の重心に最も近い交差点エリア、かつ、その重心が位置する車線に、その規則特徴物が表す交通規則を関連付ける。以上により、交通規則が関連付けられたレーンネットワークが求められる。
交通規則設定部14は、交通規則が関連付けられたレーンネットワークを表す情報を地図生成部15へわたす。
地図生成部15は、単路ごとに、検出された個々の車線の情報を含む道路地図を生成する。具体的に、地図生成部15は、交通規則が関連付けられたレーンネットワークを表す情報に対して、識別結果データに表された一旦停止線が表された画素の集合の位置に、一旦停止線があることを表す情報を関連付ける。同様に、地図生成部15は、交通規則が関連付けられたレーンネットワークを表す情報に対して、横断歩道が表された画素の集合の位置に、横断歩道があることを表す情報を関連付ける。さらに、地図生成部15は、交通規則が関連付けられたレーンネットワークを表す情報において、識別結果データに表された、車線区画線が表された画素の位置に車線区画線があることを表す情報を関連付ける。同様に、地図生成部15は、交通規則が関連付けられたレーンネットワークを表す情報において、識別結果データに表された、道路境界線が表された画素の位置に道路境界線があることを表す情報を関連付ける。これにより、地図生成処理の対象となった画像に表された地理的範囲の道路地図が生成される。
また、地図生成部15は、交差点エリアごとに、地図生成処理の対象となった画像に表された地理的範囲を表す情報及び画像上のその交差点エリアの位置を参照して、その交差点の位置を求め、道路地図にその位置を表す位置情報(例えば、緯度及び経度)を関連付けてもよい。さらに、地図生成部15は、単路のそれぞれについて、その単路を所定の長さの区間ごとに区分し、その区間ごとに、地図生成処理の対象となった画像に表された地理的範囲を表す情報及び画像上でのその区間の位置を参照して、その区間の位置を求め、道路地図にその位置を表す位置情報を関連付けてもよい。
さらに、地図生成部15は、画像ごとに生成された道路地図を結合することで、より広範囲な道路地図を生成してもよい。その際、地図生成部15は、画像ごとに、その画像に表された地理的範囲を表す情報を参照することで、同じ道路の同じ位置同士が重なるように、個々の画像から得られた道路地図を結合すればよい。
地図生成部15は、生成した道路地図を、メモリ5に記憶し、または、記憶媒体アクセス装置6を介して記憶媒体8に書き込む。あるいは、地図生成部15は、生成した道路地図を、通信インターフェース2を介して他の機器へ出力してもよい。
図4は、第1の実施形態による、地図生成処理の動作フローチャートである。プロセッサ7は、地図生成処理の対象となる画像ごとに、下記の動作フローチャートに従って地図生成処理を実行すればよい。
プロセッサ7の抽出部11は、画像を識別器に入力することで、境界特徴物が表された画素、及び、規則特徴物が表された画素などを抽出する(ステップS101)。
プロセッサ7の車線検出部12は、境界特徴物が表された画素のそれぞれを母点として画像をボロノイ分割することでボロノイ境界を求め、求められたボロノイ境界のそれぞれを一つの車線として検出する(ステップS102)。
プロセッサ7の交差点エリア検出部13は、ボロノイ境界同士が交差するボロノイ点ごとに、そのボロノイ点を含む所定の領域を交差点エリアとして検出する(ステップS103)。そして交差点エリア検出部13は、個々のボロノイ境界を、個々の交差点エリアと、交差点エリア間を接続する単路の何れかに区分することでレーンネットワークを求める(ステップS104)。
プロセッサ7の交通規則設定部14は、レーンネットワークの各車線について、その車線上の規則特徴物で表される交通規則をその車線に関連付ける(ステップS105)。また、交通規則設定部14は、レーンネットワークの各単路について、その単路上に位置し、かつ、道路そのものに設定される交通規則を表す規則特徴物が表す交通規則を関連付ける(ステップS106)。さらに、交通規則設定部14は、レーンネットワークの各交差点エリアについて、その交差点エリアまたはその近傍に位置する規則特徴物が表す、交差点に関する交通規則を関連付ける(ステップS107)。
プロセッサ7の地図生成部15は、検出された個々の車線に関する情報を含む道路地図を生成する(ステップS108)。その際、地図生成部15は、道路地図において、一旦停止線、横断歩道、車線区画線及び道路境界線のそれぞれが検出された位置に、それらが存在することを表す情報を関連付けてもよい。そしてプロセッサ7は、地図生成処理を終了する。
以上に説明してきたように、この地図生成装置は、道路が表された画像から車線の境界線を表す特徴物が表された画素を抽出し、抽出された画素を母点としてボロノイ分割することで求めたボロノイ境界のそれぞれを一つの車線として検出する。そのため、この地図生成装置は、道路が表された画像から、道路における車線ごとの情報を含む地図情報を生成することができる。またこの地図生成装置は、ボロノイ境界同士が交差するボロノイ点に基づいて交差点エリアを設定することで、地図情報に交差点に関する情報を含めることができる。さらに、この地図生成装置は、車線ごとに、その車線の交通規則を自動で関連付けることができるとともに、交差点に関連する交通規則を、車線ごとに自動で関連付けることができる。
次に、第2の実施形態による地図生成装置について説明する。第2の実施形態による地図生成装置は、道路が表された画像に写っている複数の車両を検出し、検出した複数の車両のうちの二つ以上が並ぶ線のそれぞれを、個々の車線として特定する。
なお、第1の実施形態による地図生成装置と、第2の実施形態による地図生成装置とは、プロセッサ7により実行される処理において相異する。そこで以下では、プロセッサ7により実行される、第2の実施形態による地図生成処理の詳細について説明する。
図5は、第2の実施形態による、プロセッサ7の機能ブロック図である。図5に示されるように、プロセッサ7は、車両検出部21と、車線検出部22と、地図生成部23とを有する。プロセッサ7が有するこれらの各部は、例えば、プロセッサ7上で実行されるコンピュータプログラムによって実現される機能モジュールである。あるいは、プロセッサ7が有するこれらの各部は、プロセッサ7に設けられる、専用の演算回路であってもよい。
車両検出部21は、道路生成処理の対象となる画像に表された車両を検出する。例えば、車両検出部21は、画像を、車両検出用の識別器に入力することで、入力された画像に表された車両を検出する。車両検出部21は、識別器として、例えば、入力された画像から、その画像に表された車両を検出するように予め学習されたディープニューラルネットワーク(DNN)を用いることができる。車両検出部21は、そのようなDNNとして、例えば、Single Shot MultiBox Detector(SSD)(Wei Liu他、「SSD: Single Shot MultiBox Detector」、ECCV2016、2016年を参照)、または、Faster R-CNN(Shaoqing Ren他、「Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks」、NIPS、2015年)といった、CNN型のアーキテクチャを持つDNNを用いることができる。
あるいは、車両検出部21は、識別器として、DNN以外の識別器を用いてもよい。例えば、車両検出部21は、識別器として、画像上に設定されるウィンドウから算出される特徴量(例えば、Histograms of Oriented Gradients, HOG)を入力として、そのウィンドウに車両が表されているか否かの判定結果を出力するように予め学習されたサポートベクトルマシン(SVM)またはadaBoost識別器を用いてもよい。車両検出部21は、画像上に設定するウィンドウの位置、サイズ及びアスペクト比を様々に変更しながら、そのウィンドウから特徴量を算出し、算出した特徴量をSVMまたはadaBoost識別器へ入力することで、そのウィンドウに車両が表されているか否かの判定結果を得る。
あるいはまた、車両検出部21は、識別器として、第1の実施形態における抽出部11が利用する識別器と同様に、セマンティックセグメンテーション用の識別器を用いてもよい。この場合には、画像を識別器に入力することで、車両または車両の一部が表された画素の集合が抽出される。そこで、車両検出部21は、抽出された画素の集合に対してラベリング処理を実行することで、互いに連結される個々の画素のグループを、それぞれ、一つの車両として検出すればよい。
車両検出部21は、検出された車両のそれぞれについて、その車両が表された領域内の所定の位置(例えば、その領域の重心)を、その車両の位置として、車線検出部22へ通知する。
車線検出部22は、画像から検出された複数の車両に基づいて車線を検出する。ここで、個々の車両は、一般に、車線に沿って走行する。そのため、画像上では、車線ごとに、その車線に沿って複数の車両が並ぶことが想定される。そこで、車線検出部22は、画像上で検出された複数の車両のうちの二つ以上が並ぶ線を検出し、その検出された個々の線を、それぞれ、一つの車線として検出する。
例えば、車線検出部22は、車両が並ぶ線の組み合わせを複数仮定する。そして車線検出部22は、その複数の組み合わせのうち、各車両の位置から仮定した組み合わせに含まれる何れかの線までの距離の合計が最小となる組み合わせを特定し、その組み合わせに含まれる個々の線を車線として検出する。
仮定する車両が並ぶ線の組み合わせを決定するために、車線検出部22は、例えば、画像から道路を検出する。そのために、車線検出部22は、例えば、道路が表された画素を抽出するように予め学習されたセマンティックセグメンテーション用の識別器に画像を入力することで、道路が表された画素の集合を抽出する。なお、車線検出部22は、このような識別器として、第1の実施形態による抽出部11が利用する識別器と同様の識別器を用いることができる。車線検出部22は、道路が表された画素の集合に対して細線化処理を実行することで得られた個々の線を一本の道路とし、その線同士が交差する位置を交差点として検出する。車線検出部22は、二つの交差点間を連結する道路のそれぞれを、車線検出の対象となる単路とすればよい。あるいは、車線検出部22は、道路が表された画素の集合に対して、第1の実施形態と同様に、ボロノイ分割を適用することで、その集合を単路と交差点エリアとに区分してもよい。この場合には、車線検出部22は、道路が表された画素の集合のうち、道路以外が表された画素と隣接する画素を母点としてボロノイ分割を実行することで、単路ごとにボロノイ境界を求めることができる。そこで、車線検出部22は、第1の実施形態と同様に、ボロノイ境界同士が交差するボロノイ点に基づいて交差点エリアを特定し、ボロノイ境界及びその周囲の道路が表された画素の集合のうち、交差点エリアに含まれない区間を個々の単路とすればよい。なお、車線検出の対象となる単路が曲線となっている場合には、車線検出部22は、その単路を、直線で近似可能な区間ごとに区切り、区間ごとに、車線を検出してもよい。また、車線検出部22は、車線検出の対象となる単路のそれぞれについて、抽出された道路が表された画素の集合から、その単路の延伸方向と直交する方向に並ぶその抽出された画素の数をカウントすることで、その単路の幅を求める。車線検出部22は、単路の幅の中心またはその幅を所定数(例えば、2~6)で等分割して得られる個々の区間ごとに一つの線を仮定することで、仮定する車両が並ぶ線の組み合わせを決定することができる。
図6は、画像から検出された個々の車両に基づく車線検出の一例を示す図である。図6に示される画像600において、個々の車両601が検出されている。そして車両601が道路に沿って並ぶ線602のそれぞれが、一つの車線として検出される。
車線検出部22は、個々の車線を表す車線検出結果データを地図生成部23へわたす。
地図生成部23は、車線検出結果データを参照して道路地図を生成する。その際、地図生成部23は、各単路に含まれる個々の車線に関する情報、例えば、各単路に含まれる車線の数などの情報を道路地図に含める。さらに、地図生成部23は、第1の実施形態による地図生成部15と同様に、地図生成処理の対象となった画像に表された地理的範囲を表す情報及び画像上での個々の交差点及び単路の位置を参照して、交差点及び単路のそれぞれについて、その交差点または単路の位置情報(例えば、緯度及び経度)を、道路地図に関連付けてもよい。さらにまた、地図生成部23は、第1の実施形態による地図生成部15と同様に、画像ごとに生成された道路地図を結合することで、より広範囲な道路地図を生成してもよい。
地図生成部23は、生成した道路地図を、メモリ5に記憶し、または、記憶媒体アクセス装置6を介して記憶媒体8に書き込む。あるいは、地図生成部23は、生成した道路地図を、通信インターフェース2を介して他の機器へ出力してもよい。
なお、本実施形態においても、プロセッサ7は、第1の実施形態における抽出部11及び交通規則設定部14と同様の処理を実行して、画像から規則特徴物が表された画素を抽出するとともに、規則特徴物ごとに、その規則特徴物が表された画素の集合に基づいて、車線ごと、単路ごと、あるいは、交差点ごとに、その車線、単路または交差点についての規則特徴物に相当する交通規則を関連付けてもよい。
図7は、第2の実施形態による、地図生成処理の動作フローチャートである。プロセッサ7は、地図生成処理の対象となる画像ごとに、下記の動作フローチャートに従って地図生成処理を実行すればよい。
プロセッサ7の車両検出部21は、画像を識別器に入力することで、画像に表された複数の車両を検出する(ステップS201)。
プロセッサ7の車線検出部22は、画像上で検出された複数の車両のうちの二つ以上が並ぶ線を検出し、その検出された個々の線を、それぞれ、一つの車線として検出する(ステップS202)。
プロセッサ7の地図生成部23は、検出された個々の車線に関する情報を含む道路地図を生成する(ステップS203)。そしてプロセッサ7は、地図生成処理を終了する。
以上に説明してきたように、この地図生成装置は、道路が表された画像から車両を検出し、検出された2以上の車両が並ぶ列のそれぞれを一つの車線として検出する。そのため、この地図生成装置は、道路上に車線区画線が表示されていなくても、車線を検出できる。その結果として、この地図生成装置は、道路が表された画像から、道路における車線ごとの情報を含む地図情報を生成することができる。
上記の各実施形態の変形例によれば、プロセッサ7は、前処理として、地図生成処理の対象となる画像に対して、超解像化処理を実行して解像度を向上し、オルソ(正射投影)補正処理を実行して画像に表されたビルの倒れこみを補正し、または、影の除去処理を実行してもよい。なお、プロセッサ7は、これらの処理として公知のものを利用すればよい。
また他の変形例によれば、地図生成装置のプロセッサ7は、第1の実施形態による各部の処理だけでなく、第2の実施形態による車両検出部21及び車線検出部22の処理を実行してもよい。例えば、プロセッサ7は、第1の実施形態による抽出部11及び車線検出部12の処理を実行することにより検出された、すなわち、ボロノイ境界に基づいて検出された車線が一つである単路について、第2の実施形態による車両検出部21及び車線検出部22の処理を実行して、車両が並んでいる線を検出し、検出した個々の線のそれぞれを、その単路に含まれる車線として検出してもよい。これにより、地図生成装置は、車線区画線が表示された道路については、車線区画線を含む道路境界線に基づいて個々の車線を検出できるとともに、車線区画線が表示されない道路についても個々の車線を検出できる。
第1の実施形態のさらに他の変形例によれば、車線検出部12は、抽出部11により抽出された、停止線が表された画素の集合に基づいて、停止線が単路全体を横切るように設けられているか否かを判定することで車線の数を判定してもよい。
図8(a)及び図8(b)は、それぞれ、道路に表示された停止線の一例を示す図である。図8(a)に示される例では、道路801は一車線の道路であるため、停止線802は、道路801の幅全体にわたって描画され、道路801の両端の道路境界線と接続されている。これに対して、図8(b)に示される例では、道路811は二車線の道路であるため、停止線812は、その停止線が対象とする車線のみを横切るように、すなわち、道路811の幅の略半分にわたって描画されている。このように、道路に含まれる車線の数に応じて、道路幅に対する停止線の長さの比が異なる。
そこで、この変形例によれば、車線検出部12は、交差点エリア検出部13により特定された各単路のうち、停止線を表す画素の集合が抽出された単路について、その画素の集合に基づいて単路の幅に対する停止線の長さの比を算出する。なお、単路の幅は、例えば、その単路について抽出部11により抽出された、その単路の両端の道路境界線を表す画素間の間隔とすることができる。あるいは、抽出部11が利用する識別器が、道路そのものが表された画素も抽出できるように予め学習されてもよい。この場合には、単路の幅は、その単路を横切る方向における、道路そのものが表された画素が連続する数とすることができる。そして車線検出部12は、単路の幅に対する停止線の長さの比が所定の閾値(例えば、0.6~0.8)よりも大きい場合、その単路において一つの車線を検出し、一方、その比が所定の閾値以下である場合、その単路において二つの車線を検出する。あるいは、車線検出部12は、停止線を表す画素の集合が、その単路の両端のそれぞれの境界特徴物を表す画素の集合と連結している場合、その単路において一つの車線を検出し、一方、その単路の何れか一方の端部の境界特徴物を表す画素の集合と連結している場合、その単路において二つの車線を検出してもよい。なお、この変形例においても、地図生成部15は、上記の実施形態と同様に、検出された個々の車線を表す道路地図を生成すればよい。
なお、この変形例においても、車線検出部12は、ボロノイ境界に基づいて検出された車線の数が一つである単路についてのみ、停止線に基づく上記の車線の数の判定処理を行ってもよい。
この変形例によれば、車線検出部は、車線区画線が表示されない道路についても個々の車線を検出できる。
さらに、上記の各実施形態または変形例による地図生成装置のプロセッサが有する各部の機能をコンピュータに実現させるコンピュータプログラムは、コンピュータによって読取り可能な記録媒体に記憶された形で提供されてもよい。なお、コンピュータによって読取り可能な記録媒体は、例えば、磁気記録媒体、光記録媒体、又は半導体メモリとすることができる。