以下、実施の形態について図面を参照して説明する。
まず、図1を参照して、一実施形態に係る推定システムの構成を説明する。この推定システム1は、カメラ、カメラを備えるコンピュータ、データを相互に送受信可能なカメラとコンピュータ、または各種電子機器に内蔵される組み込みシステムとして実現され得る。推定システム1は、例えば、撮像部11と処理部12と推定部13とを備える。
撮像部11は、被写体を撮像するとき、被写体と撮像部11(カメラ)との間の実際の距離である実距離を符号化して撮像する。撮像部11は、少なくとも一つのカメラ(例えば、単眼カメラ)を備え、カメラの開口部に符号化開口を設けることにより、被写体から撮像部11までの距離を符号化して撮像する。つまり、撮像部11は、単眼で、画像と、画像に含まれる被写体までの距離に関する情報とを一度の撮影で取得可能である。撮像部11は、撮像により得られた撮像画像である符号化情報を生成し、処理部12に出力する。
距離の符号化は、撮像過程を変更することにより、例えば、カメラの開口部に入射する光の位相、波長、および強度の少なくともいずれか一つを変化させることにより、実現される。したがって、変化した光に基づく撮像画像に、当該変化の特性が考慮された特定の処理を施すことにより、撮像画像に符号化された距離を算出(推定)することができる。撮像部11は、画像と距離に関する情報とを同期して記録できるものであれば、符号化開口に限らず、他の形態のコンピュテーショナルフォトグラフィを用いるものであってもよい。
処理部12は、符号化情報を処理することにより、符号化情報を画像と距離に関する情報とに変換する。具体的な変換方法については図2から図7を参照して後述する。処理部12は、画像と距離に関する情報とを推定部13に出力する。
推定部13は、符号化情報を用いて、実距離に基づいて、自己位置と自己姿勢と地図の少なくともいずれか一つを推定する。より具体的には、推定部13は、例えば、画像と距離に関する情報とを用いて、実距離に基づいて、自己位置と自己姿勢と地図の少なくともいずれか一つを推定する。実距離に基づく位置や座標は、実寸大の三次元空間上の位置や座標として表現されている。推定部13は、例えば、少なくとも自己位置を推定する。
自己位置は、例えば、撮像部11の位置を示す。また、自己姿勢は、例えば基準軸に対する姿勢であってもよい。なお、自己位置は、撮像部11の位置に限らず、任意の位置であってもよい。この任意の位置と撮像部11との位置関係は、予め取得されていてもよい。そのような自己位置として、例えば、撮像部11または撮像部11を含む推定システム1が設けられる移動体(例えば、自動車、ロボット等)の中心の位置が用いられ得る。自己姿勢は、例えば、撮像部11に設けられるレンズの光軸の姿勢を示す。地図は、例えば、画像上の複数の特徴点に対応する複数の三次元座標によって示される。地図は、例えば自己位置を含む領域の地図である。地図は、例えば三次元で表される。推定部13は、画像と距離に関する情報とを用いて、例えば、Simultaneous Localization And Mapping(SLAM)処理を行うことにより、実スケールに基づく自己位置、自己姿勢、および地図の少なくともいずれか一つを推定することができる。
実スケールに基づく位置や座標は、実寸大の三次元空間上の位置や座標として表現されている。したがって、例えば、自己位置と地図上の複数の点の三次元座標とが推定された場合、推定された自己位置から地図上のある点(三次元座標)までの距離は、撮像の対象となった実際の空間における、自己位置から、その地図上の点に対応する被写体上の点までの距離に相当し、高精度の推定が行われたならば略一致する。
推定部13は、例えばRGB-D SLAMを適用して、実スケールに基づいて自己位置、自己姿勢、および地図の少なくともいずれかを推定することができる。RGB-D
SLAMは、RGB画像と奥行きマップ(depth map)とを用いた手法であるので、画像と距離に関する情報とが用いられる推定システム1に適用することが容易である。一般に、RGB画像と奥行きマップとは、データ取得時のタイムスタンプに基づいて、すなわち、RGB画像がカメラによって取得された時点を示すタイムスタンプと、奥行きマップが距離センサ等によって取得された時点を示すタイムスタンプとに基づいて、同期させる必要がある。これに対して、本実施形態の推定システム1で用いられる画像と距離に関する情報とは、例えば、符号化開口(例えば、カラー開口)を備える単眼カメラを用いて取得されるので、既に同期されている。そのため、推定システム1では、データの同期のための処理が必要とされず、その分の計算コストを低減したり、同期のための処理装置を省略したりすることができる。
あるいは、推定部13は、例えばMonocular SLAMを適用して、相対スケールに基づいて画像から自己位置や自己姿勢、地図を推定する。その後、推定部13は、距離に関する情報をさらに用いて、推定された自己位置や自己姿勢、地図を実スケールに基づいて拡大または縮小(すなわち、スケーリング)することにより、実スケール(実距離)に基づく自己位置や自己姿勢、地図を推定することができる。
推定部13は、上述したRGB-D SLAMやMonocular SLAMに限らず、様々なSLAMの手法(例えば、非特許文献1参照)を適用してSLAM処理を行うことができる。
実スケールに基づく自己位置や自己姿勢、地図の推定には、例えば、ステレオカメラを用いる方法、単眼カメラと距離センサとを用いる方法、単眼カメラと被写体に関する辞書データとを用いる方法等がある。ステレオカメラを用いる方法や、単眼カメラと距離センサとを用いる方法では、移動体に複数のカメラやセンサを設置するためのスペースが必要になり、またカメラとセンサ間でデータを同期しなければならない。また、単眼カメラと物体に関する辞書データを用いる方法では、物体の三次元形状に関する辞書データを準備しておく必要があり、また辞書データに示される物体が撮影されなければ、実スケールに基づく推定ができない。本実施形態の推定システム1は、単眼カメラを用いて、一度の撮影で画像と距離情報とを取得できるので、画像と距離情報との同期の必要がなく、且つ物体の辞書データを準備しておく必要がなく、自己位置・姿勢や地図を容易に推定することができる。
なお、推定システム1の撮像部11、処理部12、および推定部13は、一つの装置内に設けられていてもよいし、複数の装置に分かれて設けられていてもよい。以下では、推定システム1は、撮像部11と処理部12とを有する撮像装置と、この撮像装置との間でデータを相互に送受信可能な情報処理装置とを備える場合を例示する。なお、処理部12は、撮像装置ではなく、情報処理装置に組み込まれていてもよい。
図2は、撮像部11および処理部12を備える撮像装置2のシステム構成の例を示す。撮像部11は、例えば、フィルタ21、レンズ22およびイメージセンサ23を備える。処理部12は、例えばCPU24で構成される。撮像装置2は、さらに記憶部を備える。記憶部は、例えば、RAM25、不揮発性メモリ26、メモリカードスロット27で構成される。撮像装置2は、さらに通信デバイス28を備えていてもよい。CPU24は、例えば、不揮発性メモリ26からRAM25にロードされた特定のプログラムを実行することにより、処理部12として機能する。イメージセンサ23、CPU24、RAM25、不揮発性メモリ26、メモリカードスロット27、および通信デバイス28は、例えば、バス20を介して相互に接続され得る。
イメージセンサ23は、フィルタ21とレンズ22とを透過した光を受光し、受光した光を電気信号に変換(光電変換)する。イメージセンサ23には、例えばCCD(Charge Coupled Device)やCMOS(Complementary Metal Oxide Semiconductor)が用いられる。イメージセンサ23は、例えば、赤色(R)の光を受光する撮像素子と、緑色(G)の光を受光する撮像素子と、青色(B)の光を受光する撮像素子とを備える。各撮像素子は、対応する波長帯域の光を受光し、受光した光を電気信号に変換する。この電気信号をA/D変換することによりカラー画像を生成することができる。以下では、画像のR成分、G成分、B成分を、それぞれR画像、G画像、B画像とも称する。なお、赤色、緑色、青色の撮像素子毎の電気信号を用いて、R画像、G画像、B画像をそれぞれ生成することもできる。
CPU24は、撮像装置2内の様々なコンポーネントの動作を制御するプロセッサである。CPU24は、ストレージデバイスである不揮発性メモリ26からRAM25にロードされる様々なプログラムを実行する。不揮発性メモリ26には、イメージセンサ23によって出力された電気信号に基づく撮像画像や、その画像の処理結果も格納され得る。
メモリカードスロット27には、SDメモリカードやSDHCメモリカードのような各種の可搬記憶媒体が挿入され得る。メモリカードスロット27に記憶媒体が挿入された場合、その記憶媒体に対するデータの書き込みおよび読み出しが実行され得る。データは、例えば画像データや距離に関するデータである。
通信デバイス28は、有線通信または無線通信を実行するように構成されたインターフェース機器である。通信デバイス28は、信号を有線または無線送信する送信部と、信号を有線または無線受信する受信部とを含む。
次いで、図3は、フィルタ21の構成の例を示す。フィルタ21は、互いに異なる光の波長帯域(色成分)を透過する複数のフィルタ領域を有し、2以上のフィルタ領域は、撮像装置2の光学中心213に対して非点対称な形状である。フィルタ21は、例えば、二色のカラーフィルタ領域である第1フィルタ領域211と第2フィルタ領域212とで構成される。フィルタ21の中心は、撮像装置2(レンズ22)の光学中心213と一致している。第1フィルタ領域211および第2フィルタ領域212はそれぞれ、光学中心213に対して非点対称である形状を有している。また、例えば、二つのフィルタ領域211,212は重複せず、且つ二つのフィルタ領域211,212によってフィルタ21の全領域を構成している。図3に示す例では、第1フィルタ領域211および第2フィルタ領域212はそれぞれ、円形のフィルタ21が光学中心213を通る線分で分割された半円の形状を有している。第1フィルタ領域211は、例えばイエロー(Y)のフィルタ領域であり、第2フィルタ領域212は、例えばシアン(C)のフィルタ領域である。なお、第1フィルタ領域211がマゼンタ(M)のフィルタ領域であって、第2フィルタ領域212がイエロー(Y)のフィルタ領域であってもよい。さらに、第1フィルタ領域211がシアン(C)のフィルタ領域であって、第2フィルタ領域212がマゼンタ(M)のフィルタ領域であってもよい。
各カラーフィルタが透過する波長領域は異なる。一つのフィルタ領域が透過する光の波長帯域の一部と、別の一つのカラーフィルタ領域が透過する光の波長帯域の一部は、例えば重複する。一つのカラーフィルタ領域が透過する光の波長帯域は、例えば別の一つのカラーフィルタ領域が透過する光の波長帯域を含んでもよい。
なお、第1フィルタ領域211と第2フィルタ領域212とは、任意の波長帯域の透過率を変更するフィルタ、任意方向の偏光光を通過させる偏光フィルタ、または任意の波長帯域の集光パワーを変更するマイクロレンズであってもよい。例えば、任意の波長帯域の透過率を変更するフィルタは、原色フィルタ(RGB)、補色フィルタ(CMY)、色補正フィルタ(CC-RGB/CMY)、赤外線・紫外線カットフィルタ、NDフィルタ、または遮蔽板であってもよい。第1フィルタ領域211や第2フィルタ領域212がマイクロレンズである場合は、レンズ22により光線の集光の分布に偏りが生じることでぼけの形状が変化する。
また、図4は、三つ以上のカラーフィルタ領域を有するフィルタ21A,21B,21Cの例を示す。各フィルタ21A,21B,21Cは、フィルタ21の代わりに用いられ得る。上述したように、各フィルタ領域は、撮像装置2の光学中心213に対して非点対称な形状を有している。
図4(A)に示すフィルタ21Aは、三つのフィルタ領域231,232,233を有する。第1フィルタ領域231は、光学中心213を通る線分に対して対称な瞳形状を有し、第2フィルタ領域232および第3フィルタ領域233は、瞳形状の第1フィルタ領域231の左右にそれぞれ隣接する三日月状の領域である。各フィルタ領域231,232,233は重複せず、且つ三つのフィルタ領域231,232,233によってフィルタ21Aの全領域を構成している。第1フィルタ領域231は、例えば透明のフィルタ領域であり、第2フィルタ領域232は、例えばイエロー(Y)のフィルタ領域であり、第3フィルタ領域233は、例えばシアン(C)のフィルタ領域である。なお、第2フィルタ領域232がマゼンタ(M)のフィルタ領域であり、第3フィルタ領域233がイエロー(Y)のフィルタ領域であってもよい。また、第2フィルタ領域232がシアン(C)のフィルタ領域であり、第3フィルタ領域233がマゼンタ(M)のフィルタ領域であってもよい。このフィルタ21Aでは、中心の領域を含む第1フィルタ領域231で全ての光線が透過されるので、高い透過率(例えば、90%)で透過された光線に基づく画像を得ることができる。
図4(B)に示すフィルタ21Bは、三つのフィルタ領域241,242,243を有する。第1フィルタ領域241および第2フィルタ領域242は、円形のフィルタ21Bの直径の半分の直径を有する円形を有し、各フィルタ領域241,242が、レンズ22の光学中心213を通る線分に対して対称に配置されている。これら第1フィルタ領域241および第2フィルタ領域242を除いた、フィルタ21B上の残りの領域が、第3フィルタ領域243である。第1フィルタ領域241は、例えばシアン(C)のフィルタ領域であり、第2フィルタ領域242は、例えばイエロー(Y)のフィルタ領域であり、第3フィルタ領域243は、例えば緑(G)のフィルタ領域である。このフィルタ21Bを用いて得られるR画像およびB画像では、ぼけ関数を均等に制御することができる。なお、第1フィルタ領域241がマゼンタ(M)のフィルタ領域であり、第2フィルタ領域242がイエロー(Y)のフィルタ領域であり、第3フィルタ領域243が赤(R)のフィルタ領域であってもよい。また、第1フィルタ領域241がシアン(C)のフィルタ領域であり、第2フィルタ領域242がマゼンタ(M)のフィルタ領域であり、第3フィルタ領域243が青(B)のフィルタ領域であってもよい。
図4(C)に示すフィルタ21Cは、四つのフィルタ領域251,252,253,254を有する。第1フィルタ領域251、第2フィルタ領域252、および第3フィルタ領域253は正方形の形状を有し、これらフィルタ領域251,252,253を除く残りの部分が第4フィルタ領域254である。第1フィルタ領域251は、例えば赤(R)のフィルタ領域である。第2フィルタ領域252は、例えば緑(G)のフィルタ領域である。第3フィルタ領域253は、例えば青(B)のフィルタ領域である。また、第4フィルタ領域254は、例えば黒(遮蔽)のフィルタ領域である。
以下では、説明を分かりやすくするために、図3に示すフィルタ21において、第1フィルタ領域211がイエロー(Y)のフィルタ領域であり、第2フィルタ領域212がシアン(C)のフィルタ領域である場合を主に例示する。
このようなフィルタ21がカメラの開口部に配置されることによって、開口部が二色で二分割された構造開口であるカラー開口が構成される。このカラー開口を透過する光線に基づき、イメージセンサ23を用いて画像が生成される。イメージセンサ23に入射する光の光路上において、レンズ22とイメージセンサ23との間にフィルタ21が配置されてもよい。また、レンズ22が複数設けられる場合には、フィルタ21が2つのレンズ22の間に配置されてもよい。
イメージセンサ23の緑(G)の光を受光する撮像素子に対応する波長帯域の光は、イエローの第1フィルタ領域211とシアンの第2フィルタ領域212の両方を透過する。イメージセンサ23の赤(R)の光を受光する撮像素子に対応する波長帯域の光は、イエローの第1フィルタ領域211を透過し、シアンの第2フィルタ領域212を透過しない。イメージセンサ23の青(B)の光を受光する撮像素子に対応する波長帯域の光は、シアンの第2フィルタ領域212を透過し、イエローの第1フィルタ領域211を透過しない。
なお、ある波長帯域の光がフィルタまたはフィルタ領域を透過するとは、フィルタまたはフィルタ領域が高い透過率でその波長帯域の光を透過し、そのフィルタまたはフィルタ領域による当該波長帯域の光の減衰(すなわち、光量の低下)が極めて小さいことを意味する。また、ある波長帯域の光がフィルタまたはフィルタ領域を透過しないとは、光がフィルタまたはフィルタ領域に遮蔽されることであり、例えば、フィルタまたはフィルタ領域が低い透過率でその波長帯域の光を透過し、そのフィルタまたはフィルタ領域による当該波長帯域の光の減衰が極めて大きいことを意味する。フィルタまたはフィルタ領域は、例えば、ある波長帯域の光を吸収することにより光を減衰させる。
図5は、第1フィルタ領域211および第2フィルタ領域212の透過率特性の例を示す。なお、可視光の波長帯域のうち700nmより長い波長の光に対する透過率は図示を省略してあるが、その透過率は700nmの場合に近いものである。図5に示すイエローの第1フィルタ領域211の透過率特性215では、波長帯域が620nmから750nm程度のR画像に対応する光と、波長帯域が495nmから570nm程度のG画像に対応する光とが高い透過率で透過され、波長帯域が450nmから495nm程度のB画像に対応する光がほとんど透過されていない。また、シアンの第2フィルタ領域212の透過率特性216では、B画像およびG画像に対応する波長帯域の光が高い透過率で透過され、R画像に対応する波長帯域の光がほとんど透過されていない。
したがって、R画像に対応する波長帯域の光はイエローの第1フィルタ領域211のみを透過し、B画像に対応する波長帯域の光はシアンの第2フィルタ領域212のみを透過する。G画像に対応する波長帯域の光は、第1フィルタ領域211と第2フィルタ領域212を透過する。
このようなR画像、B画像および画像上のぼけの形状は被写体までの距離dに応じて変化する。また、各フィルタ領域211,212が光学中心213に対して非点対称な形状であるので、R画像およびB画像上のぼけの偏りの方向が、撮像点から見て、被写体が合焦位置よりも手前にあるか、それとも奥にあるかによってそれぞれ反転する。この合焦位置は、撮像点から合焦距離dfだけ離れた点であり、画像上にぼけが発生しないピントが合う位置である。
図6を参照して、フィルタ21が配置されたカラー開口による光線変化と、ぼけの形状とについて説明する。
まず、被写体5が合焦距離df(合焦位置)よりも奥にある場合(d>df)、イメージセンサ23によって撮像された画像にはぼけが発生する。この画像上のぼけの形状を示すぼけ関数は、R画像、G画像およびB画像でそれぞれ異なっている。すなわち、R画像のぼけ関数201Rは左側に偏ったぼけの形状を示し、G画像のぼけ関数201Gは偏りのないぼけの形状を示し、B画像のぼけ関数201Bは右側に偏ったぼけの形状を示している。
次に、被写体5が合焦距離dfにある場合(d=df)、イメージセンサ23によって撮像された画像にはほとんどぼけが発生しない。この画像上のぼけの形状を示すぼけ関数は、R画像、G画像およびB画像でほぼ同じである。すなわち、R画像のぼけ関数202R、G画像のぼけ関数202G、およびB画像のぼけ関数202Bは、偏りのないぼけの形状を示している。
さらに、被写体5が合焦距離dfよりも手前にある場合(d<df)、イメージセンサ23によって撮像された画像にはぼけが発生する。この画像上のぼけの形状を示すぼけ関数は、R画像、G画像およびB画像でそれぞれ異なっている。すなわち、R画像のぼけ関数203Rは右側に偏ったぼけの形状を示し、G画像のぼけ関数203Gは偏りのないぼけの形状を示し、B画像のぼけ関数203Bは左側に偏ったぼけの形状を示している。
このように、被写体5が合焦距離dfよりも手前または奥にある場合、イエローの第1フィルタ領域211を透過した光線に基づくR画像のぼけ関数201R,203Rは非対称であり、またシアンの第2フィルタ領域212を透過した光線に基づくB画像のぼけ関数201B,203Bも非対称である。そして、そのR画像のぼけ関数201R,203Rは、B画像のぼけ関数201B,203Bとは異なっている。
図7は、このような画像上のぼけを利用して被写体5までの距離を算出(推定)する方法を示す。図7に示す例では、フィルタ21は、イエローの第1フィルタ領域211とシアンの第2フィルタ領域212とによって構成されている。そのため、R画像に対応する波長帯域の光が、第1フィルタ領域211に対応する部分51Rを通過し、G画像に対応する波長帯域の光が、第1フィルタ領域211および第2フィルタ領域212に対応する部分51Gを通過し、B画像に対応する波長帯域の光が、第2フィルタ領域212に対応する部分51Bを通過する。
このようなフィルタ21を用いて撮像された画像上にぼけが生じた場合、R画像、G画像およびB画像上のぼけはそれぞれ異なる形状になる。図7に示すように、G画像のぼけ関数52Gは左右対称であるぼけの形状を表している。また、R画像のぼけ関数52RおよびB画像のぼけ関数52Bは非点対称であるぼけの形状を表し、ぼけの偏りはそれぞれ異なっている。
R画像のぼけ関数52RおよびB画像のぼけ関数52Bには、R画像およびB画像上の非点対称なぼけを左右対称なぼけに補正するためのぼけ補正フィルタ53,54が適用され、ぼけ補正フィルタ53、54が適用された後のぼけ関数がG画像のぼけ関数52Gと一致するかどうかが判定される。ぼけ補正フィルタ53,54は複数用意されており、複数のぼけ補正フィルタ53、54は、被写体との複数の距離に対応する。あるぼけ補正フィルタ53,54が適用されたぼけ関数が、G画像のぼけ関数52Gと一致した場合には、そのぼけ補正フィルタ53,54に対応する距離が、撮影された被写体5までの距離に決定される。
このぼけ関数が一致しているかどうかの判定には、例えば、ぼけ補正フィルタが適用されたR画像またはB画像と、G画像との相関が用いられる。したがって、例えば、複数のぼけ補正フィルタから、ぼけ補正フィルタが適用されたぼけ関数と、G画像のぼけ関数との相関がより高くなるぼけ補正フィルタを探索することで、画像上の各画素に写る被写体までの距離が推定される。
ぼけ補正フィルタが適用されたR画像またはB画像と、G画像との相関を示す相関値には、例えば、NCC(Normalized Cross-Correlation)、ZNCC(Zero-mean Normalized Cross-Correlation)、Color Alignment Measure、等が用いられ得る。
また、あるぼけ補正フィルタ53,54が適用されたぼけ関数55R,55Bが、G画像のぼけ関数52Gと一致しているかどうかの判定に、ぼけ補正フィルタが適用されたR画像またはB画像と、G画像との相違度が用いられてもよい。この相違度がより低くなる距離を求めることで、被写体までの距離を算出することができる。相違度には、例えば、SSD(Sum of Squared Difference)、SAD(Sum of Absolute Difference)、等が用いられ得る。
なお、ここでは、距離自体が算出される例を示したが、距離に関する指標や画像(画素)のぼけに関する指標が算出されるようにしてもよい。算出される距離や指標には、上述した相関値や相違度に基づいて、その距離や指標の妥当性を示す信頼度が付加されていてもよい。例えば、相関値が高い場合または相違度が低い場合には、算出される距離や指標に高い信頼度が付加される。一方、例えば、相関値が低い場合または相違度が高い場合には、算出される距離や指標に低い信頼度が付加される。信頼度は、画素毎に付加されてもよいし、画像に対して付加されてもよい。また、信頼度はいくつかの画素にまたがったものを複数定義しても良い。信頼度が画像に対して付加される場合、例えば、ダウンサンプルした画像に対して1つの信頼度が設定されてもよい。また、画像内の複数の代表画素に与えられる信頼度を基に、画像に対する信頼度を設定してもよい。代表値は、例えば複数の代表画素の信頼度の平均値である。例えば、画像上の各画素について距離が算出(決定)されたときの相関値(または相違度)を全て用いて、それら相関値の最大値または最小値に基づいて信頼度が決定されてもよい。
次いで、図8は、情報処理装置3のシステム構成を示す。情報処理装置3は、撮像装置2(処理部12)によって出力される画像と距離に関する情報とを用いて、撮像装置2(撮像部11)の位置、姿勢、および地図を推定する推定部13の機能を有する。
情報処理装置3は、例えば、CPU31、システムコントローラ32、主メモリ33、不揮発性メモリ34、BIOS-ROM35、通信デバイス36、エンベデッドコントローラ(EC)37等を備える。
CPU31は、情報処理装置3内の様々なコンポーネントの動作を制御するプロセッサである。CPU31は、ストレージデバイスである不揮発性メモリ34から主メモリ33にロードされる様々なプログラムを実行する。これらプログラムには、オペレーティングシステム(OS)33A、および様々なアプリケーションプログラムが含まれている。アプリケーションプログラムには、SLAMプログラム33Bが含まれている。このSLAMプログラム33Bは、撮像部11の位置、姿勢、および地図を推定するための命令群を含んでいる。
また、CPU31は、BIOS-ROM35に格納された基本入出力システム(BIOS)も実行する。BIOSは、ハードウェア制御のためのプログラムである。
システムコントローラ32は、CPU31のローカルバスと各種コンポーネントとの間を接続するデバイスである。システムコントローラ32には、主メモリ33をアクセス制御するメモリコントローラも内蔵されている。
通信デバイス36は、有線または無線通信を実行するように構成されたデバイスである。通信デバイス36は、信号を送信する送信部と、信号を受信する受信部とを含む。EC37は、電力管理のためのエンベデッドコントローラを含むワンチップマイクロコンピュータである。EC37は、ユーザによるパワーボタンの操作に応じて本情報処理装置3を電源オンまたは電源オフする機能を有している。
次いで、図9と図10とを参照して、撮像装置2と情報処理装置3の機能構成について説明する。以下に記載する構成は一例であって、撮像装置2に設けられる構成の一部が情報処理装置3に設けられていてもよいし、あるいは情報処理装置3に設けられる構成の一部が撮像装置2に設けられていてもよい。
まず、図9は、撮像装置2の機能構成の例を示す。上述したように、撮像装置2は、フィルタ21、レンズ22およびイメージセンサ23を備えている。フィルタ21からイメージセンサ23までの矢印は、光の経路を示す。フィルタ21は、第1フィルタ領域211と第2フィルタ領域212とを含んでいる。ここでは、第1フィルタ領域211がイエローのフィルタ領域であり、第2フィルタ領域212がシアンのフィルタ領域である場合を例示する。イメージセンサ23は、第1センサ231、第2センサ232および第3センサ233を含んでいる。第1センサ231は、例えば赤色(R)の光を受光する撮像素子を含む。第2センサ232は、例えば緑色(G)の光を受光する撮像素子を含む。第3センサ233は、例えば青色(B)の光を受光する撮像素子を含む。イメージセンサ23は、受光した光を光電変換することにより電気信号を生成する。
撮像装置2は、さらに、生成部29および処理部12を備える。イメージセンサ23から生成部29までの矢印は、電気信号の経路を示す。生成部29から処理部12への矢印はデータの経路を示す。この生成部29および処理部12を含む撮像装置2内の各機能構成は、ハードウェア(回路)、CPU24によって実行されるソフトウェア(プログラム)、およびソフトウェアとハードウェアの組み合わせのいずれとして実現されてもよい。
生成部29は、イメージセンサ23によって生成された電気信号を用いて、撮像画像を生成(出力)する。生成される撮像画像は、R成分、G成分およびB成分を含む画像であってもよいし、R画像、G画像およびB画像の三つの画像であってもよい。撮像画像は、フィルタ21により距離情報が符号化された符号化情報である。より詳しくは、撮像画像では、距離情報が符号化されることにより、被写体までの距離が合焦距離である画素ではぼけが発生せず、被写体までの距離が合焦距離でない画素ではぼけが発生する。R成分、G成分およびB成分を含む画像が生成される場合、例えば、第1色成分の画像に生じるぼけは、非点対称なぼけ関数で表され、第2色成分の画像に生じるぼけは、点対称なぼけ関数で表される。この第1色成分は、例えばR成分またはB成分であり、第2色成分は、例えばG成分である。
処理部12は、撮像画像を処理することにより、距離に関する情報を生成する。処理部12は、図6および図7を参照して述べたような、撮像画像上のぼけに基づいて、画素毎に、その画素に撮像されている物体(被写体)までの距離に関する情報を算出する機能を有する。この距離に関する情報は、距離自体であってもよいし、距離に関する指標やぼけに関する指標であってもよい。距離に関する指標およびぼけに関する指標は、各々に関連付けられた特定のルックアップテーブル(LUT)を用いることにより、距離に換算することができる。
また、処理部12は、算出される距離や指標に、その距離や指標の妥当性を示す信頼度を付加してもよい。その場合、距離に関する情報には、算出される距離や指標と、その距離や指標の妥当性を示す信頼度とが含まれている。
処理部12は、通信デバイス28を介して、画像と距離に関する情報とを情報処理装置3に送信(出力)する。処理部12が情報処理装置3に含まれる場合には、撮像画像と距離に関する情報の代わりに、撮像画像が情報処理装置3に送信されるようにしてもよい。その場合、生成部29が、通信デバイス28を介して、撮像画像を情報処理装置3に送信する。
なお、生成部29は、連続した撮影により得られる複数の撮像画像を生成し得る。複数の画像は単一の光学系により取得されたものである。各画像は、非対称なぼけ関数を含む第1色成分画像(例えば、赤や青の成分画像)を含む。各画像はさらに、対象なぼけ関数を含む第2色成分画像(例えば緑の成分画像)を含んでもよい。撮像画像は、順次、処理部12に出力される。以下では、各撮像画像をフレームとも称する。
図10は、情報処理装置3によって実行されるSLAMプログラム33Bの機能構成を示す。SLAMプログラム33Bは、例えば、推定部13を備える。すなわち、CPU31は、SLAMプログラム33Bに含まれる命令群を実行することにより、推定部13の機能を実現する。SLAMプログラム33Bには、例えば、撮像装置2の撮像部11および処理部12を用いて得られた画像と距離に関する情報とが入力される。図10の推定部13は、例えば、自己位置と自己姿勢と地図とを推定する。
推定部13は、処理部12から、画像と距離に関する情報とを受信する。推定部13は、画像と距離に関する情報とを用いて、撮像装置2(撮像部11)の位置、姿勢、および撮像装置2周辺の地図を推定する。距離に関する情報には信頼度が含まれ得る。推定部13は、例えば、特徴点抽出部131、キーフレーム判定部132、距離取得部133、特徴点追跡部134、対応点判定部135、位置・姿勢推定部136、地図推定部137、及び作業メモリ65を含む。推定部13は、さらに最適化部138を含んでもよい。
特徴点抽出部131は、画像から特徴点群を抽出する。特徴点抽出部131は、画像上の局所的な特徴量を用いて、画像上のエッジや角(コーナー)のような特徴点を検出する。特徴点は、一枚の画像から複数検出され得る。また、特徴点の抽出のために用いられる特徴量には、例えば、ORB、BRIEF、FAST、AKAZE、SIFT等が用いられ得る。なお、特徴点抽出部131は、画像上の各画素に対応する距離(距離に関する情報)をさらに考慮して、例えば、隣接する画素間での距離の変化量が大きな画素を特徴点として抽出してもよい。
距離取得部133は、距離に関する情報から、抽出された各特徴点に対応する距離を取得することにより、特徴点と距離とを対応付ける。例えば、距離に関する情報が距離画像である場合、距離取得部133は、特徴点毎に、特徴点である画素に対応する距離を取得し、特徴点と取得された距離とを対応付ける。また、距離に関する情報がぼけに関する指標である場合、距離取得部133は、特徴点毎に、特徴点である画素に対応するぼけに関する指標を取得し、特徴点と取得されたぼけに関する指標とを対応付ける。
なお、距離取得部133は、距離に関する情報の信頼度を考慮して、特徴点群を抽出してもよい。距離取得部133は、例えば、信頼度が閾値未満である特徴点を、特徴点群から除外してもよいし、当該特徴点に距離に関する情報を対応付けないようにしてもよい。これは、特徴点に信頼度が低い距離に関する情報が対応付けられることが、自己位置、姿勢および地図の推定精度の悪化を招くためである。また、信頼度が高い距離(距離に関する情報)に対応付けられる特徴点を選択して利用することにより、自己位置、姿勢および地図の推定精度を向上させることができる。なお、閾値は動的に変化し得る。
キーフレーム判定部132は、特定の条件に基づいて、フレームが、自己位置等の推定のためのキーフレームに適しているか否かを判定する。キーフレーム判定部132は、フレームがキーフレームに適していると判断した場合、フレームに関する情報を、例えば作業メモリ65等に保存する。作業メモリ65には、少なくとも2のキーフレーム(第1キーフレーム651、第2キーフレーム652)に関する情報が保存される。より具体的には、キーフレーム判定部132は、例えば、特徴点抽出部131によって補正画像から抽出された特徴点の数が第1閾値以上であり、且つそれら特徴点の内、距離取得部133によって距離に関する情報が対応付けられた特徴点の数が第2閾値以上である場合に、フレームに関する情報を作業メモリ65に保存する。フレームに関する情報は、キーフレーム(撮像画像)を含む。保存される情報には、さらに、例えば、対応付けられた特徴点と距離に関する情報とが含まれる。キーフレームに適していないフレームの情報は破棄され、後続するフレームの情報からキーフレームがさらに探索される。
なお、距離取得部133は、キーフレーム判定部132によって補正画像から抽出された特徴点の数が第1閾値以上であると判定された場合に、特徴点と距離に関する情報とを対応付ける処理を行ってもよい。その後、キーフレーム判定部132は、距離に関する情報が対応付けられた特徴点の数が第2閾値以上であるか否かを判定する。
特徴点追跡部134は、作業メモリ65に二つのキーフレーム651,652に関する情報が保存された場合、特徴点追跡部134は、第1キーフレーム651の特徴点と第2キーフレーム652の特徴点との対応付けを行う。特徴点追跡部134は、第1キーフレーム651のある特徴点に対応する、第2キーフレーム652の特徴点を検出する。より具体的には、推定部13は、第1キーフレーム651のある特徴点の特徴量と、第2キーフレーム652のある特徴点の特徴量との近似度(あるいは相違度)を算出し、例えば、近似度が閾値以上である場合に、それら特徴点が対応すると判断する。また、例えば、第1キーフレーム651のある特徴点との近似度が閾値以上である特徴点が第2キーフレーム652にない場合には、第1キーフレーム651のその特徴点に対応する特徴点がないと判断する。このような特徴点間の対応付けの際に、各特徴点に対応付けられた距離に関する情報が考慮されてもよい。以下では、対応付けされた二つの特徴点を、対応点とも称する。
対応点判定部135は、特定の条件に基づいて、取得された対応点が、自己位置、姿勢および地図の推定に適しているか否かを判定する。対応点判定部135は、例えば、対応点の数が第3閾値以上であり、且つ対応点間の変位が第4閾値以上である場合に、取得された対応点が推定に適していると判定する。なお、対応点判定部135は、例えば、対応点の数が第3閾値未満である場合、または対応点間の変位が第4閾値未満である場合、取得された対応点が推定に適していないと判定し、特徴点抽出部131、距離取得部133およびキーフレーム判定部132に新たなキーフレームを探索させる。新たなキーフレームの探索により、作業メモリ65に保存されたキーフレーム651,652の内の一方のフレームが取り替えられてもよいし、それらキーフレーム651,652の両方が取り替えられてもよい。
位置・姿勢推定部136は、推定に適していると判定された対応点を用いて、自己位置および姿勢(例えば、撮像部11の位置および姿勢)を推定する。自己位置は、例えば、任意のローカル座標系における三次元座標によって示される。自己位置は、世界座標系の三次元座標や、緯度経度によってあらわされてもよい。自己姿勢は、例えば、ヨー、ロール、ピッチで示されても良いし、クオータニオンによって示されても良い。
より具体的には、位置・姿勢推定部136は、例えば、第1キーフレーム651と第2キーフレーム652との間で、対応点を用いて、例えば、Two-view Structure from Motion(Two-view SfM)を行うことにより、撮像部11の移動を推定する。より具体的には、位置・姿勢推定部136は、第1キーフレーム651に対応する撮像画像が撮像された時点の第1位置および姿勢から、第2キーフレーム652に対応する撮像画像が撮像された時点の第2位置および姿勢への撮像部11の移動(カメラ運動)を推定し、推定された移動に基づいて、第1位置および姿勢と第2位置および各位置における姿勢とを相対的に推定する。第1位置および第1位置における姿勢と第2位置および第2位置における姿勢とは、例えば、実スケールで推定される。推定に当たっては、処理部12が第1キーフレーム651に関して算出した距離と、第2キーフレーム652に関して算出した距離と、が用いられる。具体的には、第1キーフレーム651から算出された被写体までの距離と、第2キーフレーム652から算出された被写体までの距離と、の片方もしくは両方が推定に用いられる。第1キーフレーム651が撮像された時の自己位置と被写体の相対関係と、第2キーフレーム651が撮像された時の自己位置と被写体の相対関係と、から撮像部11の移動または被写体の移動を推定することに依り、自己位置、自己姿勢および地図を推定する。
位置・姿勢推定部136は、少なくとも、第1位置と第2位置に関する情報を出力する。位置・姿勢推定部136は、例えば、さらに第1位置における姿勢と第2位置における姿勢に関する情報を出力してもよい。位置・姿勢推定部136は、例えば、第1位置と第2位置および各位置における姿勢に関する情報を出力してもよい。
地図推定部137は、推定に適していると判定された対応点を用いて、地図を推定する。地図推定部137は、上記のローカル座標系における各対応点(特徴点)の三次元座標を推定する。地図推定部137は、撮像部11の位置を含む領域の第1地図を実距離に基づいて推定する。地図推定部137は、例えば、推定された撮像部11の第1位置および姿勢と第2位置および姿勢とから三角測量の原理に基づいて、各対応点の三次元座標を実スケールで算出する。地図推定部137は、推定された対応点群の三次元座標に基づいて、物体(被写体)上の特徴点群によって構成される立体的な地図を作成することができる。地図推定部137は、例えば推定した地図に関する情報を出力してもよい。
また、最適化部138は、推定された対応点群の三次元座標と自己位置および姿勢とを最適化するための処理を行ってもよい。この処理には、例えば、Bundle adjustmentが用いられる。Bundle adjustmentでは、特徴点の画像上の座標と、特徴点の推定された三次元座標を画像上に再投影した投影座標との誤差(再投影誤差)を特徴点毎に算出し、この再投影誤差の総和を最小化することにより、各特徴点の三次元座標と自己位置および姿勢が最適化される。三次元画像を算出する度に最適化を行わなくともよい。例えば、3以上の画像(キーフレーム)をもとに1の特徴点につき得られた複数の三次元座標と、特徴点の画像上の座標と、の誤差を最小化することで最適化を行ってもよい。さらに、現在の三次元座標を算出する処理が行われているスレッドとは別に、マルチスレッドで過去に算出した三次元画像を使った最適化処理をしても良い。最適化部138は、例えば、最適化した自己位置を出力する。最適化部138は、さらに、姿勢、地図の少なくともいずれかを出力してもよい。
なお、撮像部11の位置、姿勢および地図は相対スケールに基づいて推定されてもよく、対応点(特徴点)の三次元座標は相対スケールに基づいて推定されてもよい。この場合、位置・姿勢推定部136および地図推定部137は、相対スケールで推定された撮像部の位置や対応点の三次元座標を、距離に関する情報をさらに用いて実スケールに基づいて推定(変換)する。
以上のように、推定システム1では、撮像部11から物体までの距離情報が符号化された撮像画像を用いることにより、撮像部11の位置、姿勢および撮像画像に捉えられたシーンの地図を、実スケールに基づいて容易に推定することができる。なお、推定システム1において、情報処理装置3は撮像装置2の遠隔に設置され、ネットワークを介して互いにデータを通信するように構成されていてもよい。例えば、撮像装置2はロボットや自動車のような移動体に設けられ、情報処理装置3はネットワークを介して撮像装置2と通信可能なサーバコンピュータとして実現され得る。
また、上述した例では、画像と距離に関する情報とを用いて推定部13における処理(SLAM)が行われる場合について記載したが、距離に関する情報だけを用いて、画像を用いずにSLAMが行われてもよい。例えば、距離に関する情報が距離画像である場合、特徴点抽出部131は、画素毎の距離情報に基づいて、距離画像からエッジ等に基づく特徴点群を抽出する。各特徴点は、距離画像から抽出されているので距離情報を有している。キーフレーム判定部132、特徴点追跡部134、対応点判定部135、位置・姿勢推定部136、地図推定部137、および最適化部138は、上述した方法と同様にして、抽出された特徴点群と各特徴点が有する距離情報とを用いて、自己位置、姿勢および地図を推定する。なお、この場合、特徴点の特徴量には、例えば、距離に基づく特徴量が用いられる。
例えば、LiDAR(Light Detection And Ranging,Laser Imaging Detection And Ranging)等で得られた距離情報では、エッジ等に基づく特徴点抽出が困難である場合がある。特徴点が抽出できない場合にはSLAMにより自己位置や地図の推定を行うことができず、また抽出される特徴点が少ない場合にはSLAMにより推定される自己位置や地図の精度が極めて悪くなる。
これに対して、符号化開口を用いて得られた距離情報では、エッジ等に基づく特徴点を効率的に抽出することができ、そのため、SLAMによる自己位置や地図の推定に成功しやすく、またSLAMにより推定される自己位置や地図の精度を高めることができる。
次いで、図11のフローチャートを参照して、推定システム1によって実行される処理の手順を説明する。この処理では、撮像部11と被写体との間の距離に関する情報を利用して、自己位置、自己姿勢および地図が実スケールに基づいて推定される。
まず、撮像部11は、撮像により、画像と距離とに関する撮像情報を取得する(ステップS101)。取得される撮像情報は、例えば、距離情報が符号化された撮像画像を含む。なお、この撮像情報には、画像と距離に関する情報とが含まれていてもよい。撮像部11は、取得された撮像情報を処理部12に送る(ステップS102)。撮像情報は、例えば撮像画像である。
処理部12は、撮像情報から得られた変換情報を出力する(ステップS103)。変換情報は、距離に関する情報である。そして、処理部12は、出力された変換情報を推定部13に送る(ステップS104)。処理部12は、さらに撮像画像を推定部13に送信してもよい。距離に関する情報には、信頼度が付加されていてもよい。
次いで、推定部13は、変換情報を基に、自己位置と自己姿勢と地図の少なくともいずれかを実スケールに基づいて推定する(ステップS105)。
このような処理は、SLAM処理(例えば、RGB-D SLAM)として実現され得る。図12のフローチャートは、推定システム1によって実行されるSLAM処理の手順の例を示す。
まず、推定部13は、実スケールのキーフレームを探索するためのキーフレーム探索処理を行う(ステップS201)。撮像部11および処理部12はフレーム単位のデータを順次取得する。より具体的には、フレーム単位のデータとして、撮像部11は距離情報が符号化された撮像画像(符号化情報)を取得し、処理部12は、撮像画像から距離に関する情報を取得する。推定部13は、撮像画像との中からキーフレームを探索する。キーフレーム探索処理の詳細な手順については、図13のフローチャートを参照して後述する。
推定部13は、フレーム(撮像画像)と、画像特徴点と、各画像特徴点に対応付けられた距離に関する情報とを第1キーフレーム651に関する情報として、例えば、作業メモリ65に保持する(ステップS202)。つまり、第1キーフレーム651に関する情報には、特徴点と距離に関する情報との複数の組が含まれている。
次いで、推定部13は、ステップS201と同様にして、例えば後続するフレームから、実スケールのキーフレームを探索するためのキーフレーム探索処理を行う(ステップS203)。推定部13は、探索されたフレームと、画像特徴点と、各画像特徴点に対応付けられた距離に関する情報とを第2キーフレーム652に関する情報として、例えば、作業メモリ65に保持する(ステップS204)。つまり、第2キーフレーム652に関する情報には、特徴点と距離に関する情報との複数の組が含まれている。
そして、推定部13は、第1キーフレーム651と第2キーフレーム652との間で、特徴点の対応付け(特徴点追跡)を行う(ステップS205)。推定部13は、第1キーフレーム651のある特徴点に対応する、第2キーフレーム652の特徴点を検出する。なお、対応付けされた二つの特徴点は、対応点とも称する。
推定部13は、ステップS205で対応付けされた対応点の数が第3閾値以上であるか否かを判定する(ステップS206)。対応点の数が第3閾値未満である場合(ステップS206のNO)、ステップS203に戻り、新たな第2キーフレームが探索される。なお、ステップS201に戻り、新たな第1キーフレームと第2キーフレームとが探索されるようにしてもよい。
対応点の数が第3閾値以上である場合(ステップS206のYES)、推定部13は、対応点群間の変位が第4閾値以上であるか否かを判定する(ステップS207)。推定部13は、例えば、対応点である二つの特徴点間の変位を対応点毎に算出し、算出された変位の総和が第4閾値以上であるか否かを判定する。対応点群間の変位が第4閾値未満である場合(ステップS207のNO)、ステップS203に戻り、新たな第2キーフレームが探索される。なお、ステップS201に戻り、新たな第1キーフレームと第2キーフレームとが探索されるようにしてもよい。
対応点群間の変位が第4閾値以上である場合(ステップS207のYES)、推定部13は、撮像部11の位置および姿勢を実スケールに基づいて推定する(ステップS208)。そして、推定部13は、各特徴点(各対応点)の三次元座標を実スケールに基づいて推定する(ステップS209)。
また、推定部13は、推定された各特徴点の三次元座標と撮像部11の位置および姿勢とを最適化するための処理を行ってもよい(ステップS210)。
ステップS208とステップS209のいずれかは、省略されてもよい。また、ステップS208が実行される場合には、少なくとも自己位置と自己姿勢のいずれかが推定されればよい。
次いで、図13のフローチャートは、撮像画像を取得してからキーフレーム探索処理を行うまでの手順の例を示す。このキーフレーム探索処理は、上述したSLAM処理の一部(例えば、ステップS201およびステップS203の手順)として行われるものである。
まず、撮像部11は、符号化情報(例えば、距離情報が符号化された撮像画像)を取得する(ステップS301)。そして、撮像部11は、取得された符号化情報を処理部12に送る(ステップS302)。
処理部12は、符号化情報を距離に関する情報とに変換し(ステップS303)、撮像画像と距離に関する情報を推定部13に送る(ステップS304)。
推定部13は、画像から画像特徴点群を抽出する(ステップS305)。そして、推定部13は、補正画像から抽出された特徴点群に含まれる特徴点の数が第1閾値以上であるか否かを判定する(ステップS306)。この第1閾値は動的に変更されてもよい。特徴点の数が第1閾値未満である場合(ステップS306のNO)、ステップS301で取得された符号化情報が自己位置、姿勢および地図の推定に適していないので、ステップS301に戻り、撮像部11によって新たな符号化情報が取得される。
特徴点の数が第1閾値以上である場合(ステップS306のYES)、推定部13は、抽出された各特徴点と、距離に関する情報とを対応付ける(ステップS307)。そして、推定部13は、画像から抽出された特徴点群の内、距離に関する情報に対応付けられた特徴点の数が第2閾値以上であるか否かを判定する(ステップS308)。この第2閾値は動的に変更されてもよい。対応付けられた特徴点の数が第2閾値未満である場合(ステップS308のNO)、ステップS301で取得された符号化情報が自己位置、姿勢および地図の推定に適していないので、ステップS301に戻り、新たな符号化情報が取得される。
対応付けられた特徴点の数が第2閾値以上である場合(ステップS308のYES)、その画像をキーフレームと決定して処理を終了する。キーフレームと特徴点と距離に関する情報は、作業メモリ65に保存される。
以上の処理により、自己位置、姿勢および地図の推定に適したキーフレームを取得することができる。
また、図14のフローチャートは、推定システム1によって実行される処理の手順の別の例を示す。図11のフローチャートを参照して上述した処理では、地図や撮像部11の位置が実スケールで推定されるのに対して、図14に示す処理では、地図や撮像部11の位置を相対スケールに基づいて推定した後に、推定された地図や撮像部11の位置が実スケール化される例を示す。
ステップS401からステップS404までの手順は、図11のフローチャートに示したステップS101からステップS104までの手順と同じである。
これらステップS401からステップS404までの手順が行われた後、推定部13は、変換情報(例えば、補正画像と距離に関する情報)を基に、自己位置、自己姿勢、および地図を相対スケールに基づいて推定する(ステップS405)。そして、推定部13は、推定された地図を、距離に関する情報を用いてスケーリング(拡大または縮小)することにより実スケール化する(ステップS406)。推定部13は、例えば、距離に関する情報により、撮像部11から地図上の地点(特徴点)までの実際の距離が示されるとき、相対スケールで示されている地図における自己位置と当該地点との距離がその実際の距離になるようにスケーリングすることにより、地図を実スケール化することができる。推定部13は、自己位置、自己姿勢、および地図に関する情報を出力する。
以上説明したように、推定システム1は、実スケールに基づく自己位置、姿勢および地図を容易に推定することができる。推定システム1は、実スケールに基づく自己位置、自己姿勢、地図の少なくともいずれかを出力することができる。
例えば、カメラで撮像された画像と、距離センサで計測された距離とを用いて自己位置、姿勢および地図を推定する方法では、画像と距離とを同期させるための処理が必要となる。本実施形態の推定システム1は、一度の撮影で取得される画像と距離に関する情報、あるいは符号化情報が推定に用いられるので、画像と距離とを同期させるための処理が必要ない。そのため、この処理に要する時間が省略されるので、撮像部11の位置を容易に推定することができる。
また、例えば、単眼カメラで撮像された画像と、物体の形状等の辞書データとを用いて自己位置、姿勢および地図を推定する方法では、この辞書データを準備しておく必要があり、また辞書に登録された物体がカメラで撮影されない場合には、自己位置、姿勢および地図を推定することができない。本実施形態の推定システム1では、辞書データを準備しておく必要がなく、ユーザによる手間を軽減することができる。
次いで、上記のような構成を有する推定システム1が適用される応用例についていくつか説明する。
図15は、推定システム1を含む移動体6の機能構成例を示す。移動体6は、例えば、自動運転機能を有する自動車、無人航空機、自律型の移動ロボット等として実現され得る。無人航空機は、人が乗ることができない飛行機、回転翼航空機、滑空機、飛行船であって、遠隔操作または自動操縦により飛行させることができるものであり、例えば、ドローン(マルチコプター)、ラジコン機、農薬散布用ヘリコプター等を含む。自律型の移動ロボットは、無人搬送車(Automated Guided Vehicle:AGV)のような移動ロボット、床を掃除するための掃除ロボット、来場者に各種案内を行うコミュニケーションロボット等を含む。移動体6にはさらに、ロボット本体が移動するものだけでなく、ロボットアームのような、ロボットの一部分の移動・回転用の駆動機構を有する産業用ロボットも含まれ得る。
図15に示すように、移動体6は、例えば、推定システム1と制御信号生成部14と駆動機構15とを有する。推定システム1の内、少なくとも撮像部11は、例えば、移動体6またはその一部分の進行方向の被写体を撮像するように設置される。
図16に示すように、移動体6が自動車6Aである場合、撮像部11は、前方を撮像するいわゆるフロントカメラとして設置され得るほか、バック時に後方を撮像するいわゆるリアカメラとしても設置され得る。もちろん、これら両方が設置されてもよい。また、撮像部11は、いわゆるドライブレコーダーとしての機能を兼ねて設置されるものであってもよい。すなわち、撮像部11は録画機器であってもよい。
次いで、図17は、移動体6がドローン6Bである場合の例を示す。ドローン6Bは、駆動機構15に相当するドローン本体71と四つのプロペラ部721,722,723,724とを備える。各プロペラ部721,722,723,724はプロペラとモータとを有する。モータの駆動がプロペラに伝達されることによって、プロペラが回転し、その回転による揚力によってドローン6Bが浮上する。ドローン本体71の、例えば下部には、撮像部11(あるいは、撮像部11を含む推定システム1)が搭載されている。
また、図18は、移動体6が自律型の移動ロボット6Cである場合の例を示す。移動ロボット6Cの下部には、駆動機構15に相当する、モータや車輪等を含む動力部81が設けられている。動力部81は、モータの回転数や車輪の向きを制御する。移動ロボット6Cは、モータの駆動が伝達されることによって、路面又は床面に接地する車輪が回転し、当該車輪の向きが制御されることにより任意の方向に移動することができる。撮像部11は、例えば、人型の移動ロボット6Cの頭部に、前方を撮像するように設置され得る。なお、撮像部11は、後方や左右を撮像するように設置されてもよいし、複数の方位を撮像するように複数設置されてもよい。また、センサ等を搭載するためのスペースが少ない小型ロボットに少なくとも撮像部11を設けて、自己位置、姿勢および地図を推定することにより、デッドレコニングを行うこともできる。
なお、移動体6の一部分の移動および回転を制御する場合、図19に示すように、撮像部11は、例えば、ロボットアーム6Dで把持される物体を撮像するように、ロボットアームの先端等に設置されてもよい。推定部13は、把持しようとする物体の三次元形状やその物体が置かれている位置を推定する。これにより、物体の正確な把持動作を行うことができる。
制御信号生成部14は、推定システム1から出力される自己位置、姿勢および地図に基づいて、駆動機構15を制御するための制御信号を出力する。駆動機構15は、制御信号により、移動体6または移動体の一部分を駆動する。駆動機構15は、例えば、移動体6またはその一部分の移動、回転、加速、減速、推力(揚力)の加減、進行方向の転換、通常運転モードと自動運転モード(衝突回避モード)の切り替え、およびエアバック等の安全装置の作動の内の少なくとも一つを行う。駆動機構15は、例えば、自己位置から被写体までの距離がしきい値未満である場合、移動、回転、加速、推力(揚力)の加減、物体に近寄る方向への方向転換、および自動運転モード(衝突回避モード)から通常運転モードへの切り替えの内の少なくとも一つを行ってもよい。
自動車6Aの駆動機構15は、例えばタイヤである。ドローン6Bの駆動機構は、例えばプロペラである。移動ロボット6Cの駆動機構は、例えば足部である。ロボットアーム6Dの駆動機構15は、例えば撮像部が設けられた先端を支持する支持部である。
移動体6は、さらに推定部13からの自己位置、自己姿勢、および地図に関する情報が入力されるスピーカやディスプレイを備えていてもよい。スピーカやディスプレイは、自己位置、自己姿勢、および地図に関する音声または画像を出力する。スピーカやディスプレイは、自己推定システム1と有線または無線で接続されている。さらに、移動体6は、推定部13からの自己位置、自己姿勢、および地図に関する情報が入力される発光部を有していていもよい。発光部は、例えば、推定部13からの自己位置、自己姿勢、および地図に関する情報に応じて点灯したり消灯したりする。
なお、推定システム1の推定部13は、推定された撮像部11の位置と、推定システム1以外によって作成され推定システム1に入力される地図(例えばカーナビゲーションのための地図)とを用いて、この地図上での撮像部11の位置を推定してもよい。移動体6は、GPS信号を受信し、GPS座標系における位置を検出するためのGPSレシーバ(図示せず)を備えていてもよい。また、カーナビゲーションのための地図は、例えば、自動車に設けられるカーナビゲーションシステムで用いられる地図であって、GPS座標系に基づいた、道路や、橋、建物等のオブジェクトを示すデータが含まれている。GPSレシーバを用いて取得される位置には、GPS信号の取得状況等によって誤差(例えば、数メートルの誤差)が含まれている場合がある。そのため、GPSレシーバを用いて取得される位置だけでなく、推定システム1によって推定された撮像部11の位置も用いることにより、地図上でのより正確な自己位置を推定することができる。さらに、GPS信号が受信できずにGPSレシーバを用いて位置が取得できない場合にも、一旦、地図上での自己位置が取得できていれば、推定部13は、推定システム1によって連続して推定される撮像部11の位置を用いて、地図上での自己位置を推定し続けることができるので、移動体6を目的位置まで移動等させることができる。
また、推定部13は、推定された特徴点の三次元座標(すなわち、補正画像上の画素に撮像された被写体の三次元座標)を用いて、カーナビゲーションのための地図を補完してもよい。推定部13は、例えば、自動車の走行中に連続して得られる撮像画像から、特徴点の三次元座標を繰り返し推定することができる。これにより、カーナビゲーションのための地図に含まれていないオブジェクトの三次元座標を当該地図に追加することができ、より詳細な地図を得ることができる。制御信号生成部14および駆動機構15は、補完された地図上での撮像部11の位置に基づいて、例えば、衝突を回避するように移動体6(例えば、自動車)を移動させることができる。
別の例として、例えば、移動体6がドローンである場合、上空から、地図(物体の三次元形状)の作成、ビルや地形の構造調査、ひび割れや電線破断等の点検等が行われる際に、撮像部11は対象を撮影した画像を取得し、自己位置と地図上の物体との距離が閾値以上であるか否かを判定する。制御信号生成部14は、この判定結果に基づいて、点検対象との距離が一定になるようにドローンの推力を制御するための制御信号を生成する。ここで、推力には揚力も含まれる。駆動機構15が、この制御信号に基づいてドローンを動作させることにより、ドローンを点検対象に並行して飛行させることができる。移動体6が監視用のドローンである場合、監視対象の物体との距離を一定に保つようにドローンの推力を制御するための制御信号を生成してもよい。
また、ドローンの飛行時に、撮像部11は地面方向を撮影した画像を取得し、自己位置と地面との距離が閾値以上であるか否かを判定する。制御信号生成部14は、この判定結果に基づいて、地面からの高さが指定された高さになるようにドローンの推力を制御するための制御信号を生成する。駆動機構15が、この制御信号に基づいてドローンを動作させることにより、ドローンを指定された高さで飛行させることができる。農薬散布用ドローンであれば、ドローンの地面からの高さを一定に保つことで、農薬を均等に散布しやすくなる。
また、移動体6がドローンまたは自動車である場合、ドローンの連携飛行や自動車の連隊走行時に、撮像部11は、周囲のドローンや前方の自動車を撮影した画像を取得し、自己位置からそのドローンや自動車までの距離が閾値以上であるか否かを判定する。制御信号生成部14は、この判定結果に基づいて、その周囲のドローンや前方の自動車との距離が一定になるように、ドローンの推力や自動車の速度を制御するための制御信号を生成する。駆動機構15が、この制御信号に基づいてドローンや自動車を動作させることにより、ドローンの連携飛行や自動車の連隊走行を容易に行うことができる。移動体6が自動車である場合、ドライバーが閾値を設定できるように、ユーザインタフェースを介してドライバーの指示を受理することで、閾値を変化させてもよい。これにより、ドライバーが好む車間距離で自動車を走行させられる。あるいは、前方の自動車との安全な車間距離を保つために、自動車の速度に応じて閾値を変化させてもよい。安全な車間距離は、自動車の速度によって異なる。そこで、自動車の速度が速いほど閾値を長く設定することができる。また、移動体6が自動車である場合に、進行方向の所定の距離を閾値に設定しておき、その閾値の手前に物体が現れた場合にブレーキが自動で作動したり、エアバック等の安全装置が自動で作動する制御信号生成部14を構成するとよい。この場合、自動ブレーキやエアバック等の安全装置が駆動機構15に設けられる。
以上説明したように、本実施形態によれば、実スケールに基づく自己位置や地図を容易に推定することができ、この実スケールに基づく自己位置や地図を用いることにより、例えば、自動車、ドローン、ロボット等の各種の移動体6の動作を容易に制御することができる。
また、本実施形態に記載された様々な機能の各々は、回路(処理回路)によって実現されてもよい。処理回路の例には、中央処理装置(CPU)のような、プログラムされたプロセッサが含まれる。このプロセッサは、メモリに格納されたコンピュータプログラム(命令群)を実行することによって、記載された機能それぞれを実行する。このプロセッサは、電気回路を含むマイクロプロセッサであってもよい。処理回路の例には、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、マイクロコントローラ、コントローラ、他の電気回路部品も含まれる。本実施形態に記載されたCPU以外の他のコンポーネントの各々もまた処理回路によって実現されてもよい。
また、本実施形態の各種処理はコンピュータプログラムによって実現することができるので、このコンピュータプログラムを格納したコンピュータ読み取り可能な記憶媒体を通じてこのコンピュータプログラムをコンピュータにインストールして実行するだけで、本実施形態と同様の効果を容易に実現することができる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。