(57)【特許請求の範囲】
【請求項１】
第１の移動体に設置された撮像装置で撮像された画像を取得し、
取得した前記画像に基づいて、第１のアルゴリズムで前記第１の移動体の自己位置を推定するとともに、前記第１の移動体の周囲の３次元の形状を示す第１の点群を生成し、
前記第１のアルゴリズムで用いたデータに基づいて、第２のアルゴリズムで前記３次元の形状を示す第２の点群を生成し、
生成した前記第１の点群と、前記第２の点群とをマージして第３の点群を生成し、
前記第１の移動体の移動軌跡と、第２の移動体のサイズに関する情報とに基づいて、前記第３の点群から前記第２の移動体を停めるエリア群の空間を抽出し、
抽出した前記空間を分割して前記エリア群の各エリアを特定する、
処理をコンピュータに実行させることを特徴とする情報処理プログラム。
【請求項２】
前記特定する処理は、抽出した前記空間における前記エリア群の前記各エリアの幅および奥行きの平均値を算出し、算出した前記各エリアの前記幅および奥行きの平均値に基づいて、前記空間を分割して前記エリア群の前記各エリアを特定する、
ことを特徴とする請求項１に記載の情報処理プログラム。
【請求項３】
さらに、
特定した前記各エリアの幅および奥行きに基づいて、前記第１の点群をアライメントすることで前記第１の点群のドリフトを補正する、
処理をコンピュータに実行させることを特徴とする請求項２に記載の情報処理プログラム。
【請求項４】
前記第２の移動体は、自動車であり、
前記特定する処理は、前記空間を分割して前記自動車を停めるエリア群の各駐車エリアを特定する、
ことを特徴とする請求項１に記載の情報処理プログラム。
【請求項５】
第１の移動体に設置された撮像装置で撮像された画像を取得し、
取得した前記画像に基づいて、第１のアルゴリズムで前記第１の移動体の自己位置を推定するとともに、前記第１の移動体の周囲の３次元の形状を示す第１の点群を生成し、
前記第１のアルゴリズムで用いたデータに基づいて、第２のアルゴリズムで前記３次元の形状を示す第２の点群を生成し、
生成した前記第１の点群と、前記第２の点群とをマージして第３の点群を生成し、
前記第１の移動体の移動軌跡と、第２の移動体のサイズに関する情報とに基づいて、前記第３の点群から前記第２の移動体を停めるエリア群の空間を抽出し、
抽出した前記空間を分割して前記エリア群の各エリアを特定する、
処理をコンピュータが実行することを特徴とする情報処理方法。
【請求項６】
第１の移動体に設置された撮像装置で撮像された画像を取得する取得部と、
取得した前記画像に基づいて、第１のアルゴリズムで前記第１の移動体の自己位置を推定するとともに、前記第１の移動体の周囲の３次元の形状を示す第１の点群を生成する第１生成部と、
前記第１のアルゴリズムで用いたデータに基づいて、第２のアルゴリズムで前記３次元の形状を示す第２の点群を生成する第２生成部と、
生成した前記第１の点群と、前記第２の点群とをマージして第３の点群を生成する第３生成部と、
前記第１の移動体の移動軌跡と、第２の移動体のサイズに関する情報とに基づいて、前記第３の点群から前記第２の移動体を停めるエリア群の空間を抽出する抽出部と、
抽出した前記空間を分割して前記エリア群の各エリアを特定する特定部と、
を有することを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理プログラム、情報処理方法および情報処理装置に関する。
【背景技術】
【０００２】
近年、各種のセンサを用いた自動車、ロボットおよびドローン等の自動走行や自律ナビゲーションが提案されている。これらの自動走行等は、例えば、地図を参照しながら自己位置を推定することで行われる。自動車の場合には、例えば、高速道路から民間の駐車場、さらには、個人施設まで様々な場所の地図が求められる。ところが、小規模な駐車場等では、正確な地図がない場合が多い。このため、例えばＳＬＡＭ（Simultaneous  Localization  and  Mapping）等のように、地図を生成しながら自車位置の推定を行う手法が提案されている。【０００３】
また、ＳＬＡＭ等で認識した周辺環境、自車位置および自車姿勢等の情報を対応付けて蓄積し、現在の自車位置や自車姿勢と蓄積した情報とに基づいて、自車にとって走行可能な複数の経路から走行経路を設定することが提案されている。また、ＳＬＡＭを実行するロボットが、外観変化を経験した場合に、マップの特徴記述子を用いて認識画像に対して広いベースラインマッチングを実行することで位置決めを行うことが提案されている。また、画像処理により駐車場の駐車領域の白線を検出して駐車場マップを生成し、再度駐車場に入場する際に生成した駐車場マップに基づいて駐車場を案内することが提案されている。また、超音波センサで駐車スペースが存在するか否かを判定し、駐車スペースが有る場合に、撮影した画像に基づいて駐車スペースを表す地図を作成することが提案されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１２−１１８９０９号公報
【特許文献２】特表２００７−５３５７６５号公報
【特許文献３】特開２００７−３１５９５６号公報
【特許文献４】特開２００２−１７０１０３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、ＳＬＡＭを用いて地図を生成すると、スパースな情報、つまりまばらな情報を地図として抽出する。このため、自動走行以外の用途、例えば、人が理解しやすい駐車場の地図を生成する等の用途に用いることは難しい。また、小規模な駐車場では駐車領域の白線がない場合もあるため、白線を検出する手法では駐車場の地図を生成することが困難である場合がある。【０００６】
一つの側面では、容易に駐車エリアを特定できる情報処理プログラム、情報処理方法および情報処理装置を提供することにある。
【課題を解決するための手段】
【０００７】
一つの態様では、情報処理プログラムは、第１の移動体に設置された撮像装置で撮像された画像を取得する処理をコンピュータに実行させる。情報処理プログラムは、取得した前記画像に基づいて、第１のアルゴリズムで前記第１の移動体の自己位置を推定するとともに、前記第１の移動体の周囲の３次元の形状を示す第１の点群を生成する処理をコンピュータに実行させる。情報処理プログラムは、前記第１のアルゴリズムで用いたデータに基づいて、第２のアルゴリズムで前記３次元の形状を示す第２の点群を生成する処理をコンピュータに実行させる。情報処理プログラムは、生成した前記第１の点群と、前記第２の点群とをマージして第３の点群を生成する処理をコンピュータに実行させる。情報処理プログラムは、前記第１の移動体の移動軌跡と、第２の移動体のサイズに関する情報とに基づいて、前記第３の点群から前記第２の移動体を停めるエリア群の空間を抽出する処理をコンピュータに実行させる。情報処理プログラムは、抽出した前記空間を分割して前記エリア群の各エリアを特定する処理をコンピュータに実行させる。
【発明の効果】
【０００８】
容易に駐車エリアを特定できる。
【図面の簡単な説明】
【０００９】
【図１】図１は、実施例の情報処理システムの構成の一例を示す図である。
【図２】図２は、ＳＬＡＭの概要を表す図である。
【図３】図３は、ＳＬＡＭの出力の一例を示す図である。
【図４】図４は、環境特徴点の一例を示す図である。
【図５】図５は、走行用地図の一例を示す図である。
【図６】図６は、理想的な駐車場地図の一例を示す図である。
【図７】図７は、実際の走行経路の一例を示す図である。
【図８】図８は、ＳＬＡＭによる走行経路および走行用地図の一例を示す図である。
【図９】図９は、実施例の情報処理システムの機能構成の概要の一例を示す図である。
【図１０】図１０は、実施例の情報処理システムの処理の概要を示す図である。
【図１１】図１１は、実施例の情報処理装置の機能構成の一例を示すブロック図である。
【図１２】図１２は、駐車場のある範囲のＳＬＡＭの出力と、画像およびポーズ情報の一例を示す図である。
【図１３】図１３は、準高密度化した第３の点群の一例を示す図である。
【図１４】図１４は、駐車空間の抽出の一例を示す図である。
【図１５】図１５は、駐車空間の分割の一例を示す図である。
【図１６】図１６は、駐車エリアの特定の一例を示す図である。
【図１７】図１７は、特定した駐車エリアの幅と奥行きとに基づく走行用地図の補正の一例を示す図である。
【図１８】図１８は、実施例の駐車場地図生成処理の一例を示すフローチャートである。
【図１９】図１９は、情報処理プログラムを実行するコンピュータの一例を示す図である。
【発明を実施するための形態】
【００１０】
以下、図面に基づいて、本願の開示する情報処理プログラム、情報処理方法および情報処理装置の実施例を詳細に説明する。なお、本実施例により、開示技術が限定されるものではない。また、以下の実施例は、矛盾しない範囲で適宜組みあわせてもよい。
【実施例】
【００１１】
図１は、実施例の情報処理システムの構成の一例を示す図である。図１に示す情報処理システム１は、自動車である車両１０に搭載された情報処理装置１００と、クラウド２００とを有する。なお、車両１０および情報処理装置１００の数は限定されず、任意の数の車両１０および情報処理装置１００を有してもよい。情報処理装置１００と、クラウド２００との間は、ネットワークＮを介して相互に通信可能に接続される。かかるネットワークＮには、有線または無線を問わず、インターネットを始め、ＬＡＮ（Local  Area  Network）やＶＰＮ（Virtual  Private  Network）などの任意の種類の通信網を採用できる。【００１２】
情報処理システム１は、例えば、駐車場における自動運転のための地図を生成するためのシステムである。情報処理システム１は、例えば、車両１０に搭載される情報処理装置１００から送信される自車位置、地図情報および走行履歴等をクラウド２００で収集し、駐車場に関する各種の情報をデータベースに記憶する。クラウド２００のデータベースには、例えば、駐車場の駐車車両等のダイナミック情報、走行計画用の地図、自車位置推定用の地図が記憶される。情報処理装置１００は、車両１０が駐車場内を走行すると、カメラを用いて周辺環境の情報を取得し、自車位置の推定や地図の生成を行う。【００１３】
情報処理装置１００は、車両１０に搭載される情報処理装置であり、車両１０における自動運転に関する処理を行うコンピュータである。情報処理装置１００は、クラウド２００に走行用の初期地図がある場合には、クラウド２００から走行用の初期地図を取得する。情報処理装置１００は、第１の移動体である車両１０に設置された撮像装置で撮像された画像を取得する。情報処理装置１００は、取得した画像に基づいて、第１のアルゴリズムで第１の移動体の自己位置を推定するとともに、第１の移動体の周囲の３次元の形状を示す第１の点群を生成する。なお、以下の説明では、第１の移動体が車両１０である場合には、自己位置の代わりに自車位置と表現する場合がある。情報処理装置１００は、第１のアルゴリズムで用いたデータに基づいて、第２のアルゴリズムで３次元の形状を示す第２の点群を生成する。情報処理装置１００は、生成した第１の点群と、第２の点群とをマージして第３の点群を生成する。情報処理装置１００は、第１の移動体の移動軌跡と、第２の移動体のサイズに関する情報とに基づいて、第３の点群から第２の移動体を停めるエリア群の空間を抽出する。情報処理装置１００は、抽出した空間を分割してエリア群の各エリア、つまり駐車エリアを特定する。これにより、情報処理装置１００は、容易に駐車エリアを特定できる。【００１４】
クラウド２００は、情報処理装置１００から送信される自車位置、地図情報および走行履歴等を収集し、駐車場に関する各種の情報をデータベースに記憶する駐車場ダイナミックマップクラウドの一例である。駐車場ダイナミックマップクラウドは、１つ以上の情報処理装置１００から収集した駐車場に関する各種の情報に基づいて、駐車場地図を整形したり、走行用地図の補正を行ったりする。また、クラウド２００の他のサービスに対して駐車場地図等の各種情報を提供する。【００１５】
ここで、図２から図８を用いて、地図を生成しながら自車位置の推定を行うＳＬＡＭについて説明する。図２は、ＳＬＡＭの概要を表す図である。図２は、カメラで取得した画像を用いてＳＬＡＭを行う一例であるＶｉｓｕａｌＳＬＡＭの処理の概要を示すものである。図２では、カメラは、位置２０ａ、２０ｂ、２０ｃ、２０ｄの順に移動し、カメラの向き、つまり姿勢を変えながら環境特徴点（以下、ランドマークともいう。）２１ａ、２１ｂを撮像する。ＶｉｓｕａｌＳＬＡＭでは、カメラの位置、姿勢、および、各位置で撮像された画像上の環境特徴点に基づいて、地図を生成しながら自車位置の推定を行う。【００１６】
図３は、ＳＬＡＭの出力の一例を示す図である。図３の出力例では、カメラの現在位置２２と、カメラによって画像が撮像された位置のキーフレーム２３と、３次元の環境特徴点を示す点群２４とが含まれる。【００１７】
図４は、環境特徴点の一例を示す図である。図４に示す画面２５は、あるキーフレームにおける画像の環境特徴点２６を表示したものである。環境特徴点２６は、例えば、駐車車両の角や木の頂点、建物の角等である。なお、図４では、各環境特徴点を代表して１つの環境特徴点２６に符号を付けている。【００１８】
図５は、走行用地図の一例を示す図である。図５に示す走行用地図２７は、ある駐車場を自動走行するための３次元の環境特徴点の点群を有する地図である。走行用地図２７は、スパースな、つまり疎な環境特徴点の点群で表されるため、人が見る場合や他のサービスでは、用いにくい地図である。【００１９】
図６は、理想的な駐車場地図の一例を示す図である。図６の駐車場地図２８は、人が見る場合や他のサービスで用いやすい理想的な駐車場地図の一例である。駐車場地図２８のように、駐車エリアが一目でわかる地図であれば、人が見ても理解しやすく、他のサービス、例えば、駐車場の空き状況の情報を提供するなどといったサービスに応用しやすくなる。【００２０】
図７は、実際の走行経路の一例を示す図である。図８は、ＳＬＡＭによる走行経路および走行用地図の一例を示す図である。図７に示す駐車場２９における走行経路３０は、実際の走行経路の一例である。また、図８の走行用地図３２は、ＶｉｓｕａｌＳＬＡＭによって生成した走行用地図である。走行用地図３２における走行経路３３は、実際の走行経路３０と比べて、図７の領域３１と対応する図８の領域３４において、ドリフト誤差が発生している。走行用地図３２では、駐車場２９に対してドリフト誤差が発生することで、地図精度が悪化している。本発明では、この様なドリフト誤差についても、生成した駐車場地図を用いて走行用地図を補正することで、地図精度の向上を図る。【００２１】
次に、図９および図１０を用いて情報処理システム１の機能構成および処理の概要について説明する。図９は、実施例の情報処理システムの機能構成の概要の一例を示す図である。図９に示すように、情報処理システム１は、情報処理装置１００とクラウド２００との間で各種の情報をやりとりする。情報処理装置１００は、ＳＬＡＭ処理１５０の他に、経路生成、走行制御、障害物検知といった処理を実行する。ＳＬＡＭ処理１５０では、クラウド２００から走行用初期地図を取得して記憶するとともに、自車初期位置を識別する。その後、車載カメラ群から入力される画像に基づいて、連続自己位置推定処理およびランドマーク地図更新を行う。なお、ランドマーク地図は、環境特徴点の点群である走行用地図である。また、ＳＬＡＭ処理１５０は、推定した自車位置情報およびランドマーク変化情報を、例えば携帯電話回線等を用いてネットワークＮを介してクラウド２００に送信する。さらに、ＳＬＡＭ処理１５０は、更新されたランドマーク地図および走行履歴についても同様にクラウド２００に送信する。また、ＳＬＡＭ処理１５０は、図示しない駐車場地図の生成処理等も実行する。【００２２】
クラウド２００は、駐車場地図の生成および走行用地図の生成に関する処理を行う駐車場ダイナミックマップクラウド２１０と、他のサービス群を提供するサービス群クラウド２２０とを有する。駐車場ダイナミックマップクラウド２１０は、制御部２１１と、ダイナミックマップデータベース（以下、データベースはＤＢと示す。）２１２と、ＡＰＩ（Application  Programming  Interface）２１３、２１４とを有する。制御部２１１は、各種情報のＤＢ登録、差分管理、地図更新といった処理を実行する。ダイナミックマップＤＢ２１２は、静的・準静的な情報から動的・準動的な情報まで記憶する。ダイナミックマップＤＢ２１２は、例えば、静的から動的な順に、走行用地図である自車位置推定用地図（ランドマーク情報）、例えば車両１０のユーザに対して表示する駐車場内走路地図（走行計画用）、ダイナミック情報（駐車車両、障害物等）を有する。ＡＰＩ２１３は、情報処理装置１００と各種情報のやりとりを行うＡＰＩである。ＡＰＩ２１４は、サービス群クラウド２２０と各種情報のやりとりを行うＡＰＩである。【００２３】
図１０は、実施例の情報処理システムの処理の概要を示す図である。図１０は、データの流れに着目した場合の情報処理システム１の処理の概要を示すものである。図１０に示すＡ車は車両１０の一例である。Ａ車の情報処理装置１００は、まず、ＶｉｓｕａｌＳＬＡＭによって、第１の点群であるスパース３Ｄ点群マップ４１と、画像およびカメラの位置および姿勢を示すポーズ情報とを含むキーフレーム４２とを生成する（ステップＳ１）。スパース３Ｄ点群マップ４１は、リアルタイム処理である自車位置推定および走行用地図生成処理の出力である。Ａ車の情報処理装置１００は、キーフレーム４２に対して、リアルタイム処理ではないオフラインＳＦＭ（Structure  from  Motion：以下、ＳｆＭともいう。）処理を実行し、第２の点群である密な３Ｄ点群マップ４３を生成する（ステップＳ２）。【００２４】
Ａ車の情報処理装置１００は、３Ｄ点群マップをマージする。すなわち、Ａ車の情報処理装置１００は、スパース３Ｄ点群マップ４１と、密な３Ｄ点群マップ４３とをマージして、第３の点群である準高密度化３Ｄ点群マップ４４を生成する（ステップＳ３）。すなわち、Ａ車の情報処理装置１００は、まず、スパース点群の準高密度化処理４５を実行する。Ａ車の情報処理装置１００は、生成した準高密度化３Ｄ点群マップ４４から駐車空間を抽出するフィルタリング処理を実行する（ステップＳ４）。Ａ車の情報処理装置１００は、抽出した駐車空間を車両サイズ等に基づいて、個々の駐車エリアに分割して駐車場地図を生成する（ステップＳ５）。Ａ車の情報処理装置１００は、生成した駐車場地図をクラウド２００に送信する。すなわち、Ａ車の情報処理装置１００は、スパース点群の準高密度化処理４５に続いて、点群のフィルタリングおよび分割処理４６を実行する。【００２５】
クラウド２００は、駐車場地図を受信すると、既にあるＤＢ上の駐車場地図と比較して、ＤＢ上の駐車場地図を受信した駐車場地図で整形する（ステップＳ６）。すなわち、クラウド２００は、例えば、Ｂ車、Ｃ車からも同じ駐車場の駐車場地図を受信すると、ＤＢ上の駐車場地図を順次整形して地図の精度を高める。また、クラウド２００は、整形した駐車場地図に基づいて、ＤＢ上の走行用地図の補正を実行する（ステップＳ７）。すなわち、情報処理システム１では、各車両１０から受信した地図情報でＤＢ上の地図情報が更新されるので、車両１０の数が多いほど精度を高めることができる。また、情報処理システム１では、駐車場の車の出入りによる変化を反映することができる。【００２６】
続いて、図１１を用いて情報処理装置１００の機能構成について説明する。図１１は、実施例の情報処理装置の機能構成の一例を示すブロック図である。図１１に示すように、情報処理装置１００は、通信部１１０と、カメラ１１１と、記憶部１２０と、制御部１３０とを有する。なお、情報処理装置１００は、図１１に示す機能部以外にも既知のコンピュータが有する各種の機能部、例えば各種の表示デバイス、入力デバイスや音声出力デバイス等の機能部を有することとしてもかまわない。【００２７】
通信部１１０は、例えば、第３世代移動通信システム、ＬＴＥ（Long  Term  Evolution）等の携帯電話回線および無線ＬＡＮ等の通信モジュール等によって実現される。通信部１１０は、ネットワークＮを介してクラウド２００と無線で接続され、クラウド２００との間で情報の通信を司る通信インタフェースである。なお、情報処理装置１００とクラウド２００との間は、携帯電話回線等の無線基地局を介して接続される場合、無線基地局とクラウド２００との間については、無線または有線で接続される。通信部１１０は、クラウド２００から走行用初期地図を受信すると、受信した走行用初期地図を制御部１３０に出力する。また、通信部１１０には、制御部１３０から自車位置情報、ランドマーク変化情報、走行用地図、走行履歴および駐車場地図等が入力される。通信部１１０は、入力された自車位置情報、ランドマーク変化情報、走行用地図、走行履歴および駐車場地図等をクラウド２００に送信する。【００２８】
カメラ１１１は、車両１０の周辺環境を撮像する撮像装置である。カメラ１１１は、例えば、撮像素子としてＣＭＯＳ（Complementary  Metal  Oxide  Semiconductor）イメージセンサまたはＣＣＤ（Charge  Coupled  Device）イメージセンサ等を用いて、画像を撮像する。カメラ１１１は、撮像素子が受光した光を光電変換しＡ／Ｄ（Analog／Digital）変換を行って撮像画像を生成する。カメラ１１１は、生成した撮像画像を制御部１３０に出力する。【００２９】
記憶部１２０は、例えば、ＲＡＭ（Random  Access  Memory）、フラッシュメモリ（Flash  Memory）等の半導体メモリ素子、ハードディスクや光ディスク等の記憶装置によって実現される。記憶部１２０は、走行用地図記憶部１２１と、自車位置記憶部１２２と、キーフレーム記憶部１２３と、駐車場地図記憶部１２４とを有する。また、記憶部１２０は、制御部１３０での処理に用いる情報を記憶する。【００３０】
走行用地図記憶部１２１は、走行用地図、つまり３次元の形状を環境特徴点の疎な点群で示す第１の点群を記憶する。走行用地図記憶部１２１は、車両１０が走行すると、ＳＬＡＭにより逐次更新される。【００３１】
自車位置記憶部１２２は、車両１０の自車位置および走行履歴を記憶する。自車位置記憶部１２２は、車両１０が走行すると、走行用地図記憶部１２１と同様にＳＬＡＭにより逐次更新される。【００３２】
キーフレーム記憶部１２３は、カメラで撮像された画像と、カメラの位置および姿勢を示すポーズ情報とを含むキーフレームを記憶する。キーフレームは、ＳＬＡＭに用いるデータであり、第１の点群の生成の際に生成される。キーフレーム記憶部１２３は、車両１０が走行すると、走行用地図記憶部１２１と同様にＳＬＡＭにより逐次更新される。【００３３】
駐車場地図記憶部１２４は、駐車空間における各駐車エリアが特定された駐車場地図を記憶する。駐車場地図記憶部１２４は、例えば、車両１０が駐車場を１回走行するたびに生成される駐車場地図を記憶する。【００３４】
図１１の説明に戻る。制御部１３０は、例えば、ＣＰＵ（Central  Processing  Unit）やＭＰＵ（Micro  Processing  Unit）等によって、内部の記憶装置に記憶されているプログラムがＲＡＭを作業領域として実行されることにより実現される。また、制御部１３０は、例えば、ＡＳＩＣ（Application  Specific  Integrated  Circuit）やＦＰＧＡ（Field  Programmable  Gate  Array）等の集積回路により実現されるようにしてもよい。制御部１３０は、取得部１３１と、第１生成部１３２と、第２生成部１３３と、第３生成部１３４と、抽出部１３５と、特定部１３６と、送信制御部１３７とを有し、以下に説明する情報処理の機能や作用を実現または実行する。なお、制御部１３０の内部構成は、図１１に示した構成に限られず、後述する情報処理を行う構成であれば他の構成であってもよい。【００３５】
取得部１３１は、カメラ１１１から撮像画像が入力されると、入力された撮像画像の取得を開始する。つまり、取得部１３１は、カメラ１１１で撮像された画像の取得を開始する。取得部１３１は、取得した画像を第１生成部１３２に出力する。【００３６】
また、取得部１３１は、走行用初期地図をクラウド２００から取得するようにしてもよい。取得部１３１は、例えば、図示しない位置検出装置等の位置情報を、通信部１１０およびネットワークＮを介して、クラウド２００に送信する。取得部１３１は、車両１０が位置する駐車場の走行用初期地図がクラウド２００にある場合には、ネットワークＮおよび通信部１１０を介して、クラウド２００から走行用初期地図を受信して取得する。取得部１３１は、取得した走行用初期地図を走行用地図記憶部１２１に記憶する。【００３７】
第１生成部１３２は、取得部１３１から画像が入力されると、入力された画像に基づいて、ＳＬＡＭを実行する。ＳＬＡＭは、例えば、Ｔｗｏ−ｖｉｅｗ  ＳｆＭによる推定結果の連結、Bundle  adjustmentを用いた順次復元、ＰＴＡＭ（Parallel  Tracking  and  Mapping）、ＭｏｎｏＳＬＡＭ等を用いることができる。なお、ＰＴＡＭは、キーフレームおよびBundle  adjustmentを用いたＴｒａｃｋｉｎｇとＭａｐｐｉｎｇとを並列化するアルゴリズムである。第１生成部１３２は、例えば、ＰＴＡＭを用いることで、入力された画像と、カメラ１１１の位置および姿勢を示すポーズ情報とを含むキーフレームを生成することができる。【００３８】
第１生成部１３２は、入力された画像に基づいて、当該画像と、カメラ１１１の位置および姿勢を示すポーズ情報とを含むキーフレームを生成する。第１生成部１３２は、生成したキーフレームに基づいて、自車位置の推定、および、車両１０の周囲の３次元の形状を示す第１の点群の生成を開始する。すなわち、第１生成部１３２は、車両１０の自車位置の推定を開始するとともに、走行用地図の生成を開始する。なお、第１生成部１３２は、走行用初期地図が走行用地図記憶部１２１に記憶されている場合には、走行用初期地図の更新を開始する。また、第１生成部１３２は、走行用地図の生成の際に、キーフレームおよび第１の点群に基づいて、同一地点に戻ってきたと判定すると、バンドル調整を行って、第１の点群、つまり走行用地図の補正を実行する。つまり、第１生成部１３２は、車両１０の現在位置、キーフレームおよび第１の点群に基づいて従前の第１の点群を補正し、走行用地図を生成または更新する。【００３９】
第１生成部１３２は、生成した第１の点群を走行用地図として走行用地図記憶部１２１に記憶する。また、第１生成部１３２は、推定した自車位置および走行履歴を自車位置記憶部１２２に記憶する。さらに、第１生成部１３２は、生成したキーフレームをキーフレーム記憶部１２３に記憶する。なお、走行用地図記憶部１２１、自車位置記憶部１２２およびキーフレーム記憶部１２３は、統合して一つの記憶部とし、第１の点群、自車位置、走行履歴およびキーフレームを統合した記憶部に記憶するようにしてもよい。また、第１生成部１３２は、ＳＬＡＭの出力である自車位置情報およびランドマーク変化情報の送信制御部１３７への出力を開始する。【００４０】
言い換えると、第１生成部１３２は、取得した画像に基づいて、第１のアルゴリズムで第１の移動体の自己位置を推定するとともに、第１の移動体の周囲の３次元の形状を示す第１の点群を生成する。【００４１】
第１生成部１３２は、推定した自車位置に基づいて、車両１０の走行が終了したか否かを判定する。第１生成部１３２は、車両１０の走行が終了していないと判定した場合には、引き続き、自車位置の推定および走行用地図の生成を行う。第１生成部１３２は、車両１０の走行が終了したと判定した場合には、第２の点群の生成指示を第２生成部１３３に出力する。【００４２】
ここで、図１２を用いてＳＬＡＭの出力と、画像およびポーズ情報について説明する。図１２は、駐車場のある範囲のＳＬＡＭの出力と、画像およびポーズ情報の一例を示す図である。図１２の例では、駐車場の所定領域５０内を車両１０が走行した場合のＳＬＡＭの出力を示す。所定領域５０に対応する走行用地図５１は、所定領域５０内に駐車されている車両の３次元の形状を示している。また、現在位置５２は、車両１０が所定領域５０内を１周した後に、さらに１／３程度進んだ位置である。車両１０の走行経路には、当該走行経路に沿って複数のキーフレーム５３が並んでおり、スタート地点では、バンドル調整がなされている。各キーフレーム５３は、カメラ１１１の位置および姿勢を示すポーズ情報と、各キーフレーム５３の位置におけるＲＧＢ画像とが対応付けられている。第２生成部１３３では、これらの情報に基づいて、オフラインＳＦＭを用いて密な点群を求める。【００４３】
図１１の説明に戻る。第２生成部１３３は、第１生成部１３２から第２の点群の生成指示が入力されると、キーフレーム記憶部１２３を参照し、各キーフレームの画像およびポーズ情報を取得する。第２生成部１３３は、取得した画像およびポーズ情報に基づいて、ＳｆＭにより、３次元モデルの構築、ＧＣＰ（Ground  Control  Point：地上基準点）の設定等の処理を実行する。また、第２生成部１３３は、構築した３次元モデルを地形モデルに変換して第２の点群として第３生成部１３４に出力する。すなわち、第２生成部１３３は、キーフレームに基づいて、第２の点群を生成する。言い換えると、第２生成部１３３は、第１のアルゴリズムで用いたデータに基づいて、第２のアルゴリズムで３次元の形状を示す第２の点群を生成する。なお、ＳｆＭには、例えば、ＶｉｓｕａｌＳＦＭ、ＰＭＶＳ２／ＣＭＶＳといったソフトウェアを用いることができる。【００４４】
すなわち、第２生成部１３３は、駐車場において撮像された全ての画像を用いて３次元モデルを生成する。このため、第２生成部１３３が出力する第２の点群は、第１生成部１３２の出力である第１の点群と比較して、高密度な点群となる。つまり、第１生成部１３２が出力する第１の点群は、リアルタイム性はあるが点群が疎らとなり、第２生成部１３３が出力する第２の点群は、リアルタイム性はないが点群が密となる。【００４５】
第３生成部１３４は、第２生成部１３３から第２の点群が入力されると、走行用地図記憶部１２１を参照し、第１の点群を取得する。第３生成部１３４は、第１の点群と第２の点群とをマージして第３の点群を生成する。すなわち、第３生成部１３４は、第１の点群の準高密度（Semi-Dense）化を行う。第３生成部１３４は、生成した第３の点群を抽出部１３５に出力する。【００４６】
ここで、図１３を用いて準高密度化した第３の点群について説明する。図１３は、準高密度化した第３の点群の一例を示す図である。図１３に示す点群５５は、駐車場５６における第３の点群の一例である。領域５７は、領域５８に対応し、領域５８に駐車されている車両の特徴点が多く含まれている。なお、点群５５の上部の特徴点５９は、駐車場５６の奥にある木等の特徴点である。点群６０は、領域５７の点群を拡大したものであり、通路側の車両の輪郭が人にも判る程度に表されている。【００４７】
図１１の説明に戻る。抽出部１３５は、第３生成部１３４から第３の点群が入力されると、第３の点群から駐車空間を抽出する。抽出部１３５は、自車位置記憶部１２２を参照し、駐車場における車両１０の走行履歴、つまり移動軌跡を取得する。抽出部１３５は、予め設定した車両の幅や高さ等のサイズに関する情報と、取得した移動軌跡とに基づいて、３次元の境界ボックス（３Ｄ  ＢｏｕｎｄｉｎｇＢｏｘ）を生成する。抽出部１３５は、第３の点群に対して生成した境界ボックスを用いてフィルタリングすることで、第３の点群から駐車空間を抽出する。言い換えると、抽出部１３５は、第１の移動体である車両１０の移動軌跡と、第２の移動体である駐車車両のサイズに関する情報とに基づいて、第３の点群から第２の移動体を停めるエリア群の空間を抽出する。抽出部１３５は、抽出した駐車空間の点群を特定部１３６に出力する。【００４８】
ここで、図１４を用いて駐車空間の抽出について説明する。図１４は、駐車空間の抽出の一例を示す図である。図１４の例では、抽出部１３５は、駐車場５６の領域５８内における車両１０の走行履歴である移動軌跡６１と、予め設定した車両のサイズに関する情報とに基づいて、境界ボックス６２を生成する。抽出部１３５は、点群５５に対して境界ボックス６２を用いてフィルタリングして点群６３を抽出する。なお、点群６３は、駐車車両を横から見た状態を表しており、上空からの視点、つまり平面上では、点群６４に示すようになる。【００４９】
図１１の説明に戻る。特定部１３６は、抽出部１３５から駐車空間の点群が入力されると、駐車空間を１台ごとの駐車エリアに分割する。特定部１３６は、駐車空間の点群の空間分布と、予め設定した車両の幅や高さ等のサイズに関する情報とに基づいて、駐車空間の点群を１台ごとの駐車エリアに分割する。特定部１３６は、分割した各駐車エリアの幅および奥行きを平均化して、各駐車エリアを特定する。すなわち、特定部１３６は、抽出した空間を分割してエリア群の各エリアを特定する。特定部１３６は、特定した各駐車エリアに基づいて、駐車場地図を生成する。特定部１３６は、生成した駐車場地図を駐車場地図記憶部１２４に記憶する。【００５０】
ここで、図１５および図１６を用いて駐車空間の分割および駐車エリアの特定について説明する。図１５は、駐車空間の分割の一例を示す図である。図１５の例では、特定部１３６は、駐車空間の点群６３の一部分である点群６５の空間分布と、車両のサイズに関する情報とに基づいて、点群６５を駐車エリア６６、６７、６８に分割する。特定部１３６は、駐車空間の点群６３の他の部分も同様に各駐車エリアに分割し、それらを平面上の点群６４に並べて駐車エリア群６９を生成する。なお、点群６５は、３次元の点群であるので、駐車車両の隙間が２次元の画像と比べて判りやすくなっている。【００５１】
図１６は、駐車エリアの特定の一例を示す図である。図１６の例では、特定部１３６は、点群６４の一部である点群６４ａに対する駐車エリア群６９について、各駐車エリアの幅ｄ０〜ｄｉ−１の平均値ｄａを算出する。また、特定部１３６は、各駐車エリアの奥行きＬ０〜Ｌｉの平均値Ｌａを算出する。特定部１３６は、幅ｄａと奥行きＬａとを有する駐車エリアを特定し、特定した複数の駐車エリアを纏めて駐車エリア群７０を生成する。特定部１３６は、生成した駐車エリア群７０を駐車場地図として駐車場地図記憶部１２４に記憶する。言い換えると、特定部１３６は、抽出した空間におけるエリア群の各エリアの幅および奥行きの平均値を算出し、算出した各エリアの幅および奥行きの平均値に基づいて、空間を分割してエリア群の各エリアを特定する。【００５２】
また、特定部１３６は、生成した駐車場地図に基づいて、走行用地図記憶部１２１に記憶された走行用地図を補正する。特定部１３６は、生成した駐車場地図に基づいて、３次元のテンプレート点群を生成する。特定部１３６は、走行用地図記憶部１２１から取得した走行用地図、つまり第１の点群に対して、生成したテンプレート点群をテンプレートとして、例えば非剛体ＩＣＰ（Iterative  Closest  Point）アライメントにより補正する。つまり、特定部１３６は、走行用地図である第１の点群を補正する。すなわち、特定部１３６は、駐車場地図を用いて走行用地図のドリフト誤差を補正する。言い換えると、特定部１３６は、特定した各エリアの幅および奥行きに基づいて、第１の点群をアライメントすることで第１の点群のドリフトを補正する。特定部１３６は、補正した走行用地図を走行用地図記憶部１２１に記憶する。特定部１３６は、補正した走行用地図を走行用地図記憶部１２１に記憶すると、地図送信指示を送信制御部１３７に出力する。【００５３】
ここで、図１７を用いて走行用地図の補正について説明する。図１７は、特定した駐車エリアの幅と奥行きとに基づく走行用地図の補正の一例を示す図である。図１７に示すように、特定部１３６は、駐車エリア群７０に基づいて、３次元のテンプレート点群７１を生成する。特定部１３６は、生成したテンプレート点群７１を用いて第１の点群７２に対して、非剛体ＩＣＰアルゴリズムを用いたアライメントによりドリフト誤差の補正を行う。特定部１３６は、例えば、テンプレート点群７１を駐車場の一部の駐車エリア群７０に基づいて生成し、駐車場の他の部分に適用することで、他の部分のドリフト誤差を補正する。【００５４】
具体的には、特定部１３６は、テンプレート点群７１を用いて第１の点群７２の位置合わせを行うことで、第１の点群７２のドリフト誤差を補正する。すなわち、特定部１３６は、第１の点群７２の各特徴点をテンプレート点群７１の対応する各特徴点に近づけるように変形させて補正する。特定部１３６は、ドリフト誤差の補正後の第１の点群、つまり走行用地図を走行用地図記憶部１２１に記憶する。【００５５】
図１１の説明に戻る。送信制御部１３７は、第１生成部１３２から自車位置情報およびランドマーク変化情報の入力が開始されると、通信部１１０およびネットワークＮを介して、自車位置情報およびランドマーク変化情報のクラウド２００への送信を開始する。また、送信制御部１３７は、特定部１３６から地図送信指示が入力されると、走行用地図記憶部１２１および駐車場地図記憶部１２４を参照し、通信部１１０およびネットワークＮを介して、走行用地図および駐車場地図をクラウド２００に送信する。なお、送信制御部１３７は、自車位置記憶部１２２を参照して、走行用地図および駐車場地図と併せて、車両１０の走行履歴をクラウド２００に送信するようにしてもよい。【００５６】
次に、実施例の情報処理装置１００の動作について説明する。図１８は、実施例の駐車場地図生成処理の一例を示すフローチャートである。【００５７】
取得部１３１は、カメラ１１１で撮像された画像の取得を開始する（ステップＳ１１）。取得部１３１は、取得した画像を第１生成部１３２に出力する。第１生成部１３２は、取得部１３１から画像が入力されると、入力された画像に基づいてＳＬＡＭを実行し、画像とポーズ情報とを含むキーフレームを生成する（ステップＳ１２）。第１生成部１３２は、生成したキーフレームに基づいて、自車位置推定および第１の点群の生成を開始する（ステップＳ１３）。【００５８】
第１生成部１３２は、車両１０の現在位置、キーフレームおよび第１の点群に基づいて従前の第１の点群を補正し、走行用地図を生成または更新する（ステップＳ１４）。第１生成部１３２は、生成した第１の点群を走行用地図として走行用地図記憶部１２１に記憶する。また、第１生成部１３２は、推定した自車位置および走行履歴を自車位置記憶部１２２に記憶する。さらに、第１生成部１３２は、生成したキーフレームをキーフレーム記憶部１２３に記憶する。【００５９】
第１生成部１３２は、推定した自車位置に基づいて、車両１０の走行が終了したか否かを判定する（ステップＳ１５）。第１生成部１３２は、車両１０の走行が終了していないと判定した場合には（ステップＳ１５：否定）、ステップＳ１４に戻る。第１生成部１３２は、車両１０の走行が終了したと判定した場合には（ステップＳ１５：肯定）、第２の点群の生成指示を第２生成部１３３に出力する。【００６０】
第２生成部１３３は、第１生成部１３２から第２の点群の生成指示が入力されると、キーフレーム記憶部１２３を参照し、キーフレームを取得する。第２生成部１３３は、取得したキーフレームに基づいて、第２の点群を生成し、第３生成部１３４に出力する（ステップＳ１６）。【００６１】
第３生成部１３４は、第２生成部１３３から第２の点群が入力されると、走行用地図記憶部１２１を参照し、第１の点群を取得する。第３生成部１３４は、第１の点群と第２の点群とをマージして第３の点群を生成する（ステップＳ１７）。第３生成部１３４は、生成した第３の点群を抽出部１３５に出力する。【００６２】
抽出部１３５は、第３生成部１３４から第３の点群が入力されると、第３の点群から駐車空間を抽出する（ステップＳ１８）。抽出部１３５は、抽出した駐車空間の点群を特定部１３６に出力する。特定部１３６は、抽出部１３５から駐車空間の点群が入力されると、駐車空間を１台ごとの駐車エリアに分割する。特定部１３６は、分割した各駐車エリアの幅および奥行きを平均化して、各駐車エリアを特定する。特定部１３６は、特定した各駐車エリアに基づいて、駐車場地図を生成する（ステップＳ１９）。特定部１３６は、生成した駐車場地図を駐車場地図記憶部１２４に記憶する。【００６３】
特定部１３６は、生成した駐車場地図に基づいて、走行用地図記憶部１２１に記憶された走行用地図を補正する（ステップＳ２０）。特定部１３６は、走行用地図を補正すると、地図送信指示を送信制御部１３７に出力する。【００６４】
送信制御部１３７は、特定部１３６から地図送信指示が入力されると、走行用地図記憶部１２１および駐車場地図記憶部１２４を参照し、走行用地図および駐車場地図をクラウド２００に送信する（ステップＳ２１）。これにより、情報処理装置１００は、容易に駐車エリアを特定できる。【００６５】
このように、情報処理装置１００は、第１の移動体である車両１０に設置されたカメラ１１１、つまり撮像装置で撮像された画像を取得する。また、情報処理装置１００は、取得した画像に基づいて、第１のアルゴリズムで第１の移動体の自己位置を推定するとともに、第１の移動体の周囲の３次元の形状を示す第１の点群を生成する。また、情報処理装置１００は、第１のアルゴリズムで用いたデータに基づいて、第２のアルゴリズムで３次元の形状を示す第２の点群を生成する。また、情報処理装置１００は、生成した第１の点群と、第２の点群とをマージして第３の点群を生成する。また、情報処理装置１００は、第１の移動体の移動軌跡と、第２の移動体のサイズに関する情報とに基づいて、第３の点群から第２の移動体を停めるエリア群の空間を抽出する。また、情報処理装置１００は、抽出した空間を分割してエリア群の各エリアを特定する。その結果、情報処理装置１００は、容易に駐車エリアを特定できる。【００６６】
また、情報処理装置１００は、抽出した空間におけるエリア群の各エリアの幅および奥行きの平均値を算出する。また、情報処理装置１００は、算出した各エリアの幅および奥行きの平均値に基づいて、空間を分割してエリア群の各エリアを特定する。その結果、情報処理装置１００は、大きさの異なる車両が駐車されている駐車場であっても、容易に駐車エリアを特定できる。【００６７】
また、情報処理装置１００は、特定した各エリアの幅および奥行きに基づいて、第１の点群をアライメントすることで第１の点群のドリフトを補正する。その結果、情報処理装置１００は、走行用地図のドリフト誤差を補正できる。【００６８】
また、情報処理装置１００では、第２の移動体は、車両、つまり自動車である。また、情報処理装置１００は、空間を分割して自動車を停めるエリア群の各駐車エリアを特定する。その結果、情報処理装置１００は、自動車の駐車エリアを容易に特定できる。【００６９】
なお、上記の実施例では、移動体として車両１０を用いたが、これに限定されない。例えば、ＵＡＶ（Unmanned  aerial  vehicle）等のいわゆるドローンを用いて画像を取得して駐車場地図を生成するようにしてもよい。【００７０】
また、上記の実施例では、複数の車両１０から取得した各種の情報を記憶するデータベースをクラウド２００として構成したが、これに限定されない。例えば、クラウドに代えて、単体のサーバやサーバ群を用いてもよい。【００７１】
また、図示した各部の各構成要素は、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各部の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況等に応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、抽出部１３５と特定部１３６とを統合してもよい。また、図示した各処理は、上記の順番に限定されるものでなく、処理内容を矛盾させない範囲において、同時に実施してもよく、順序を入れ替えて実施してもよい。【００７２】
さらに、各装置で行われる各種処理機能は、ＣＰＵ（またはＭＰＵ、ＭＣＵ（Micro  Controller  Unit）等のマイクロ・コンピュータ）上で、その全部または任意の一部を実行するようにしてもよい。また、各種処理機能は、ＣＰＵ（またはＭＰＵ、ＭＣＵ等のマイクロ・コンピュータ）で解析実行されるプログラム上、またはワイヤードロジックによるハードウェア上で、その全部または任意の一部を実行するようにしてもよいことは言うまでもない。【００７３】
ところで、上記の実施例で説明した各種の処理は、予め用意されたプログラムをコンピュータで実行することで実現できる。そこで、以下では、上記の実施例と同様の機能を有するプログラムを実行するコンピュータの一例を説明する。図１９は、情報処理プログラムを実行するコンピュータの一例を示す図である。【００７４】
図１９に示すように、コンピュータ３００は、各種演算処理を実行するＣＰＵ３０１と、データ入力を受け付ける入力装置３０２と、モニタ３０３とを有する。また、コンピュータ３００は、記憶媒体からプログラム等を読み取る媒体読取装置３０４と、各種装置と接続するためのインタフェース装置３０５と、他の情報処理装置等と有線または無線により接続するための通信装置３０６とを有する。また、コンピュータ３００は、各種情報を一時記憶するＲＡＭ３０７と、ハードディスク装置３０８とを有する。また、各装置３０１〜３０８は、バス３０９に接続される。【００７５】
ハードディスク装置３０８には、図１１に示した取得部１３１、第１生成部１３２、第２生成部１３３、第３生成部１３４、抽出部１３５、特定部１３６および送信制御部１３７の各処理部と同様の機能を有する情報処理プログラムが記憶される。また、ハードディスク装置３０８には、走行用地図記憶部１２１、自車位置記憶部１２２、キーフレーム記憶部１２３、駐車場地図記憶部１２４、および、情報処理プログラムを実現するための各種データが記憶される。入力装置３０２は、例えば、コンピュータ３００のユーザから操作情報等の各種情報の入力を受け付ける。モニタ３０３は、例えば、コンピュータ３００のユーザに対して表示画面等の各種画面を表示する。インタフェース装置３０５は、例えばカメラ等が接続される。通信装置３０６は、例えば、図１１に示した通信部１１０と同様の機能を有しネットワークＮと接続され、クラウド２００と各種情報をやりとりする。【００７６】
ＣＰＵ３０１は、ハードディスク装置３０８に記憶された各プログラムを読み出して、ＲＡＭ３０７に展開して実行することで、各種の処理を行う。また、これらのプログラムは、コンピュータ３００を図１１に示した取得部１３１、第１生成部１３２、第２生成部１３３、第３生成部１３４、抽出部１３５、特定部１３６および送信制御部１３７として機能させることができる。【００７７】
なお、上記の情報処理プログラムは、必ずしもハードディスク装置３０８に記憶されている必要はない。例えば、コンピュータ３００が読み取り可能な記憶媒体に記憶されたプログラムを、コンピュータ３００が読み出して実行するようにしてもよい。コンピュータ３００が読み取り可能な記憶媒体は、例えば、ＣＤ−ＲＯＭやＤＶＤディスク、ＵＳＢ（Universal  Serial  Bus）メモリ等の可搬型記録媒体、フラッシュメモリ等の半導体メモリ、ハードディスクドライブ等が対応する。また、公衆回線、インターネット、ＬＡＮ等に接続された装置にこの情報処理プログラムを記憶させておき、コンピュータ３００がこれらから情報処理プログラムを読み出して実行するようにしてもよい。
【符号の説明】
【００７８】
１  情報処理システム
１０  車両
１００  情報処理装置
１１０  通信部
１１１  カメラ
１２０  記憶部
１２１  走行用地図記憶部
１２２  自車位置記憶部
１２３  キーフレーム記憶部
１２４  駐車場地図記憶部
１３０  制御部
１３１  取得部
１３２  第１生成部
１３３  第２生成部
１３４  第３生成部
１３５  抽出部
１３６  特定部
１３７  送信制御部
２００  クラウド
Ｎ  ネットワーク
【図１】
0006699761.tif 000002
【図２】
0006699761.tif 000003
【図３】
0006699761.tif 000004
【図４】
0006699761.tif 000005
【図５】
0006699761.tif 000006
【図６】
0006699761.tif 000007
【図７】
0006699761.tif 000008
【図８】
0006699761.tif 000009
【図９】
0006699761.tif 000010
【図１０】
0006699761.tif 000011
【図１１】
0006699761.tif 000012
【図１２】
0006699761.tif 000013
【図１３】
0006699761.tif 000014
【図１４】
0006699761.tif 000015
【図１５】
0006699761.tif 000016
【図１６】
0006699761.tif 000017
【図１７】
0006699761.tif 000018
【図１８】
0006699761.tif 000019
【図１９】
0006699761.tif 000020