以下、図面を参照して、各実施形態について説明する。
(第1実施形態)
まず、第1実施形態について説明する。本実施形態においては、現実の空間内を移動体が移動(自律走行)する場合を想定しており、当該移動体には撮像装置が設置されている。
ここで、本実施形態において、撮像装置が設置される移動体としては例えば自動車等を想定しているが、自律的に移動するものであればロボットまたはドローンのような無人航空機(飛行体)等であってもよい。
また、移動体に設置される撮像装置は、例えばレンズ及びイメージセンサを備える単眼カメラであり、画像を撮像するために用いられる。なお、撮像装置は、例えば魚眼カメラ等であってもよい。撮像装置は、例えば移動体の進行方向に存在する被写体(観察物)を含む画像を撮像する位置に設置されている。
本実施形態に係る位置姿勢推定装置は、上記した移動体に設置されている撮像装置と通信可能に接続されており、当該撮像装置によって撮像された画像に基づいて、当該移動体の位置及び姿勢を推定するために用いられる。
なお、本実施形態において、位置姿勢推定装置によって推定される移動体の位置及び姿勢には、例えば起点となる位置からの移動体の位置及び姿勢(の変化)が含まれる。すなわち、本実施形態において「移動体の位置及び姿勢を推定する」とは、当該移動体の移動距離及び撮像装置の向き(移動方向)を推定することを含む概念である。
ここで、上記した位置姿勢推定装置によって推定される移動体の位置及び姿勢は、例えば当該移動体が現実の空間内を移動する際の当該移動体の移動経路を決定する際に利用することができるが、この場合における移動体の位置及び姿勢は実スケールに基づいている必要がある。
しかしながら、例えばGPS(Global Positioning System)機能等の利用が制限されているような環境下において、上記したように画像に基づいて実スケールに基づく移動体の位置及び姿勢を推定するためには、AR(Augmented Reality)マーカ及びチェッカーボードのような既知の物体(被写体)、または予め辞書データに登録した被写体(の3次元形状)を含む画像を撮像する必要がある。
また、撮像装置によって撮像される被写体を限定しない場合には、慣性計測装置(IMU:Inertial Measurement Unit)のような物理量を直接計測することが可能なセンサとフュージョンする必要がある。
更に、例えば複数の撮像装置(カメラ)または複数のセンサを移動体に設置することによって実スケールに基づく移動体の位置及び姿勢を推定することは可能であるが、このような構成の場合には、複数の撮像装置または複数のセンサを設置するためのスペースを移動体に確保しなければならない上に、当該複数の撮像装置及び複数のセンサ間でデータを同期する必要がある。
そこで、本実施形態においては、単眼カメラである撮像装置によって撮像された画像を用いて、実スケールに基づく移動体の位置及び姿勢を容易に推定することが可能な位置姿勢推定装置を提供する。
図1は、本実施形態に係る位置姿勢推定装置において推定される移動体の位置及び姿勢の概要を説明するための図である。
ここでは、図1に示すように、移動体(自動車)1に撮像装置(単眼カメラ)2が設置されており、当該移動体1が移動している間に当該撮像装置2が連続的に画像を撮像する場合を想定する。
ここで、時刻tにおいて撮像装置2によって撮像された画像及び時刻t1において撮像装置2によって撮像された画像から、時刻tから時刻t1の間に移動した移動体1の位置及び姿勢(つまり、移動距離及び撮像装置2の向き)を推定することができる。
しかしながら、このように推定された移動体1の位置及び姿勢は実スケールに基づくものではない場合がある。
このため、本実施形態においては、時刻tにおいて撮像装置2によって撮像された画像に含まれる被写体3までの距離及び時刻t+1において撮像装置2によって撮像された画像に含まれる被写体3までの距離を推定し、当該推定された距離に基づいて移動体1の位置及び姿勢を実スケール化(つまり、補正)する。
なお、本実施形態において、実スケールとは現実空間で用いられる単位を含む概念であり、例えば実スケールに基づく位置及び姿勢とは現実空間で用いられる単位に基づいて定められる位置及び姿勢(移動距離及び撮像装置2の向き)を意味している。
以下、本実施形態に係る位置姿勢推定装置について詳細に説明する。本実施形態において、位置姿勢推定装置は、例えばパーソナルコンピュータ等の情報処理装置(電子機器)であるが、撮像装置2とともに移動体1に搭載されるように構成されていてもよい。
図2は、位置姿勢推定装置10のシステム構成の一例を示す。位置姿勢推定装置10は、CPU11、不揮発性メモリ12、RAM13及び通信デバイス14等を備える。なお、CPU11、不揮発性メモリ12、RAM13及び通信デバイス14は、バス15を介して相互に接続されている。
CPU11は、位置姿勢推定装置10内の様々なコンポーネントの動作を制御するためのプロセッサである。CPU11は、単一のプロセッサであってもよいし、複数のプロセッサで構成されていてもよい。CPU11は、不揮発性メモリ12からRAM13にロードされる様々なプログラムを実行する。これらプログラムは、オペレーティングシステム(OS)や様々なアプリケーションプログラムを含む。このようにCPU11によって実行されるアプリケーションプログラムには、移動体1の位置及び姿勢を推定するための位置姿勢推定プログラム13Aが含まれる。
不揮発性メモリ12は、補助記憶装置として用いられる記憶媒体である。RAM13は、主記憶装置として用いられる記憶媒体である。図2においては不揮発性メモリ12及びRAM13のみが示されているが、位置姿勢推定装置10は、例えばHDD(Hard Disk Drive)及びSSD(Solid State Drive)等の他の記憶装置を備えていてもよい。
通信デバイス14は、有線通信または無線通信を実行するように構成されたデバイスである。位置姿勢推定装置10は、この通信デバイス14を介して撮像装置2との通信を実行し、当該撮像装置2によって撮像された画像を受信(取得)することができる。
図2においては省略されているが、位置姿勢推定装置10は、例えばマウスまたはキーボードのような入力デバイス及びディスプレイのような表示デバイスを更に備えていてもよい。
図3は、位置姿勢推定装置10の機能構成の一例を示すブロック図である。図3に示すように、位置姿勢推定装置10は、撮像装置2と通信可能に接続されており、画像取得部101、位置姿勢推定部102、距離推定部103及び位置姿勢補正部104を含む。
本実施形態において、位置姿勢推定装置10に含まれる各部101~104の一部または全ては、CPU11(つまり、位置姿勢推定装置10のコンピュータ)に位置姿勢推定プログラム13Aを実行させること、すなわち、ソフトウェアによって実現されるものとする。なお、位置姿勢推定プログラム13Aは、コンピュータ読み取り可能な記憶媒体に格納して頒布されてもよいし、ネットワークを通じて位置姿勢推定装置10にダウンロードされてもよい。
ここでは、CPU11に位置姿勢推定プログラム13Aを実行させるものとして説明したが、各部101~104の一部または全ては、例えばIC(Integrated Circuit)等のハードウェアによって実現されてもよいし、ソフトウェア及びハードウェアの組み合わせによって実現されてもよい。
画像取得部101は、撮像装置2によって撮像された被写体3を含む画像を当該撮像装置2から取得(受信)する。なお、画像取得部101は、撮像装置2によって連続的に撮像された時系列の画像(少なくとも2つの画像)を取得する。
位置姿勢推定部102は、画像取得部101によって取得された時系列の画像に基づいて、当該画像を撮像した撮像装置2が設置されている移動体1の位置及び姿勢を推定する。
距離推定部103は、画像取得部101によって取得された時系列の画像の各々に含まれる被写体(画像に投影される観測物)3までの距離を推定する。なお、距離推定部103によって推定される被写体3までの距離は、実スケールに基づく距離(現実空間で用いられる単位に基づく距離)である。
ここで、上記した位置姿勢推定部102によって推定された移動体1の位置及び姿勢は、実スケールに基づいておらず、例えば起点となる位置からの相対的な位置及び姿勢を示すものである。
このため、本実施形態において、位置姿勢補正部104は、距離推定部103によって推定された距離に基づいて、位置姿勢推定部102によって推定された移動体1の位置及び姿勢を実スケールに基づく位置及び姿勢に補正する(つまり、位置姿勢推定部102によって推定された移動体1の位置及び姿勢を実スケール化する)。
次に、図4のフローチャートを参照して、本実施形態に係る位置姿勢推定装置10の処理手順の一例について説明する。
まず、位置姿勢推定装置10において移動体1の位置及び姿勢を推定する場合、当該移動体1に設置されている撮像装置2が起動される。これにより、撮像装置2は、移動体1が移動している間に、当該移動体1の進行方向に存在する被写体3を含む画像を連続的に撮像する。
なお、本実施形態において撮像装置2によって撮像される画像は、例えば赤色(R)の波長帯域の光を検出することによって生成される画像(R画像)、緑色(G)の波長帯域の光を検出することによって生成される画像(G画像)及び青色(B)の波長帯域の光を検出することによって生成される画像(B画像)で構成されたカラー画像(つまり、RGBの3チャネルで構成された画像)であってもよいし、モノクロ画像(グレースケールで表現された1チャネルの画像)であってもよい。
画像取得部101は、撮像装置2によって連続的に撮像された時系列の画像を取得する(ステップS1)。ステップS1において取得される時系列の画像は、少なくとも2つの画像(フレーム)を含む。以下の説明においては、ステップS1において取得された時系列の画像を、便宜的に、対象画像と称する。
ステップS1の処理が実行されると、位置姿勢推定部102は、対象画像に基づいて、移動体1の位置及び姿勢を推定する処理(以下、位置姿勢推定処理と表記)を実行する(ステップS2)。
このステップS2においては、例えば対象画像(少なくとも2つの画像の各々)から複数の特徴点を検出し、当該検出された複数の特徴点を当該対象画像間で対応づけることによって移動体1の相対的な位置及び姿勢を推定(算出)する。なお、ステップS2において実行される位置姿勢推定処理の詳細については後述する。
また、ステップS1の処理が実行されると、距離推定部103は、対象画像に含まれる被写体3までの距離を推定する処理(以下、距離推定処理と表記)を実行する(ステップS3)。
ステップS3においては、例えば対象画像に生じるぼけ(ぼけ情報)を物理的な手掛かりとして被写体3までの距離を推定することができる。なお、ステップS3において実行される距離推定処理の詳細については後述する。
ステップS2及びS3の処理が実行されると、位置姿勢補正部104は、ステップS3の処理(距離推定処理)が実行されることによって推定された距離に基づいて、ステップS2の処理(位置姿勢推定処理)が実行されることによって推定された移動体1の位置及び姿勢を補正する処理(以下、位置姿勢補正処理と表記)を実行する(ステップS4)。このステップS4の処理(位置姿勢補正処理)が実行されることによって補正された移動体1の位置及び姿勢は、実スケールに基づく移動体1の位置及び姿勢である。なお、位置姿勢補正処理の詳細については後述する。
本実施形態においては、上記した図4に示す処理が実行されることによって単眼カメラである撮像装置2を用いて実スケールに基づく移動体1の位置及び姿勢を得る(推定する)ことができるが、当該図4に示す処理においてステップS2の位置姿勢推定処理及びステップS3の距離推定処理はそれぞれ独立して(または並列に)実行される。
ここで、例えば移動体1が移動する現実空間内の環境等によっては、撮像装置2によって撮像される画像から移動体1の位置及び姿勢や被写体3までの距離を得る(推定する)ことが困難な場合がある。
しかしながら、本実施形態によれば、位置姿勢推定処理及び距離推定処理が独立して実行される構成であるため、例えばステップS1において距離を推定することができない画像が取得されたような場合であっても、ステップS2の位置姿勢推定処理が実行されることによって移動体1の位置及び姿勢を推定することができる。同様に、例えばステップS1において移動体1の位置及び姿勢を推定することができない画像が取得されたような場合であっても、ステップS3の距離推定処理が実行されることによって被写体3までの距離を推定することができる。
なお、位置姿勢推定処理及び距離推定処理の一方のみが実行されたような場合には、ステップS4の処理を実行する(つまり、実スケールに基づく移動体1の位置または姿勢を得る)ことはできないが、当該位置姿勢推定処理及び距離推定処理の一方が実行されることによって得られた情報(移動体1の位置及び姿勢または被写体3までの距離)は、他の処理等に利用することができる。
次に、図5のフローチャートを参照して、上記した位置姿勢推定処理(図4に示すステップS2の処理)の処理手順の一例について説明する。なお、図5に示す処理は、移動体1の位置及び姿勢を推定するために対象画像に対してSLAM(Simultaneous Localization And Mapping)が適用された場合に実行される処理であり、SLAM処理等と称される。
まず、位置姿勢推定部102は、対象画像(図4に示すステップS1において取得された時系列の画像)から第1キーフレームを探索する(ステップS11)。ステップS11において探索される第1キーフレームは、対象画像(に含まれる複数のフレーム)のうち、移動体1の位置及び姿勢を推定するためのキーとなる画像(フレーム)である。
ここで、ステップS11の処理について説明する。ステップS11においては、まず、対象画像(時系列の画像)のうちの1つのフレーム(以下、対象フレームと表記)から特徴点群が抽出される。なお、本実施形態において、特徴点には、対象フレームにおける局所的な特徴量を用いて検出される当該対象フレーム上のエッジ及び角(コーナー)等が含まれる。このような特徴点は、対象フレームから複数抽出される。また、特徴点を抽出するために用いられる特徴量としては、例えばORB、BRIEF、FAST、AKAZEまたはSIFT等を用いることができる。
次に、対象フレームから抽出された特徴点群に含まれる特徴点の数が予め定められた値(以下、第1閾値と表記)以上であるか否かが判定される。この第1閾値は動的に変更される値であってもよい。
特徴点の数が第1閾値以上であると判定された場合、対象フレームが第1キーフレームとして探索(特定)される。
一方、特徴点の数が第1閾値以上でない(つまり、第1閾値未満である)と判定された場合、対象フレームは第1キーフレームとして認識(探索)されず、対象画像に含まれる他のフレームを対象フレームとして上記した処理が繰り返される。
位置姿勢推定部102は、ステップS11において探索された第1キーフレームと、当該第1キーフレームから抽出された特徴点(画像特徴点)とを、当該第1キーフレームに関する情報として保持する(ステップS12)。
次に、位置姿勢推定部102は、対象画像から第2キーフレームを探索する(ステップS13)。この場合、第2キーフレームは、対象画像(時系列の画像)に含まれるフレームのうちの上記した第1キーフレームに後続するフレームの中から探索される。なお、ステップS13の処理はステップS11の処理と同様の処理であるため、ここではその詳しい説明を省略する。
位置姿勢推定部102は、ステップS13において探索された第2キーフレームと、当該第2キーフレームから抽出された特徴点とを、当該第2キーフレームに関する情報として保持する(ステップS14)。
次に、位置姿勢推定部102は、第1キーフレームから抽出された特徴点の各々に対応する第2キーフレームから抽出された特徴点を検出することによって、第1キーフレームと第2キーフレームとの間で、特徴点の対応付け(特徴点追跡)を行う(ステップS15)。なお、特徴点の対応付けは、例えばテンプレートマッチング、Lucas-Kanade法またはSIFT等を用いることによって実現可能である。以下の説明においては、ステップS15において対応付けられた2つの特徴点を、便宜的に対応点と称する。
ステップS15の処理が実行されると、位置姿勢推定部102は、当該ステップS15において対応付けられた対応点の数が予め定められた値(以下、第2閾値と表記)以上であるか否かを判定する(ステップS16)。
対応点の数が第2閾値以上でない(つまり、第2閾値未満である)と判定された場合(ステップS16のNO)、ステップS13に戻って処理が繰り返される。この場合、ステップS13において新たな第2キーフレームが探索される。なお、ステップS11に戻って処理が繰り返されることによって、第2キーフレームだけでなく、第1キーフレームも再度探索されるようにしてもよい。
一方、対応点の数が第2閾値以上であると判定された場合(ステップS16のYES)、位置姿勢推定部102は、対応点群間の変位が予め定められた値(以下、第3閾値と表記)以上であるか否かを判定する(ステップS17)。この場合、位置姿勢推定部102は、例えば対応点(2つの特徴点)間の変位を対応点毎に算出し、当該算出された変位の総和が第3閾値以上であるか否かを判定する。
対応点群間の変位が第3閾値以上でない(つまり、第3閾値未満である)と判定された場合(ステップS17のNO)、ステップS13に戻って処理が繰り返される。なお、上記したようにステップS11に戻って処理が繰り返される構成であってもよい。
対応点群間の変位が第3閾値以上であると判定された場合(ステップS17のYES)、位置姿勢推定部102は、上記した対応点を用いて、移動体1の位置及び姿勢を推定(算出)する(ステップS18)。
このステップS18においては、例えば複数の特徴点のカメラ座標(第1及び第2キーフレーム上の座標)の組に基づく基本行列、基礎行列または射影変換行列等を用いて、移動体1の位置及び姿勢を算出することが可能である。この場合、例えば第1キーフレーム(に対応する画像)が撮像された時点の移動体1の位置及び姿勢から、第2キーフレーム(に対応する画像)が撮像された時点の移動体1の位置及び姿勢への移動体1の移動を推定し、当該推定された移動に基づいて、移動体1の相対的な位置及び姿勢が推定される。
位置姿勢推定部102は、上記した図5に示す処理(SLAM処理)を実行することによって、少なくとも2つの画像(第1及び第2キーフレーム)の各々から検出された複数の特徴点を当該2つの画像間で対応付けることによって算出される相対的な位置及び姿勢を、移動体1の位置及び姿勢として推定することができる。
なお、ステップS18において推定される移動体1の位置及び姿勢は、例えば3次元空間中の座標(つまり、3次元座標)と回転(向き)とを表す4元数の組み合わせによって表現される。
ただし、例えば移動体1の移動が平面上で行われる(つまり、移動体1が床面でのみ移動する)と仮定することができる場合には、並進に関する2自由度と、回転に関する1自由度とを合わせた3自由度で移動体1の位置及び姿勢が表現されてもよい。
また、例えば3次元空間中の移動体1の位置及び姿勢を表現するために、上記した4元数の代わりに回転行列、回転軸及び回転方向を表すベクトル、またはオイラー角等を用いても構わない。
上記した図5に示す処理によれば移動体1の位置及び姿勢を推定することが可能であるが、当該処理においては、例えば上記した各特徴点(各対応点)の3次元座標を推定し、当該推定された各特徴点の3次元座標と移動体1の位置及び姿勢とを最適化する処理が更に実行されても構わない。
なお、本実施形態においては、撮像装置2によって撮像された時系列の画像にSLAMを適用する(つまり、SLAM処理が実行される)ことにより、移動体1の位置及び姿勢を推定する場合について説明したが、当該移動体1の位置及び姿勢は、他の処理が実行されることによって推定されても構わない。
具体的には、例えば対象画像(時系列の画像)に対してSfM(Structure from Motion)適用することによって、対象画像が撮像されたときの移動体1の位置及び姿勢を推定するようにしてもよい。
次に、上記した距離推定処理(図4に示すステップS3の処理)について詳細に説明する。
ここで、図6は、移動体1に設置される撮像装置2の構成の一例を示す。撮像装置2は、上記したように移動体1の進行方向に存在する被写体3を含む画像を撮像するために用いられる。撮像装置2は、レンズ21とイメージセンサ22とを備える。レンズ21及びイメージセンサ22は、撮像装置2の光学系(単眼カメラ)に相当する。
レンズ21には、被写体3で反射した光が入射する。レンズ21に入射した光は、レンズ21を透過する。レンズ21を透過した光は、イメージセンサ22に到達し、当該イメージセンサ22によって受光(検出)される。イメージセンサ22は、受光した光を電気信号に変換(光電変換)することによって、複数の画素から構成される画像を生成する。
なお、イメージセンサ22は、例えばCCD(Charge Coupled Device)イメージセンサ及びCMOS(Complementary Metal Oxide Semiconductor)イメージセンサ等により実現される。イメージセンサ22は、例えば赤色(R)の波長帯域の光を検出する第1センサ(Rセンサ)221、緑色(G)の波長帯域の光を検出する第2センサ(Gセンサ)222及び青色(B)の波長帯域の光を検出する第3センサ(Bセンサ)223を含む。イメージセンサ22は、第1~第3センサ221~223により対応する波長帯域の光を受光して、各波長帯域(色成分)に対応するセンサ画像(R画像、G画像及びB画像)を生成することができる。すなわち、撮像装置2によって撮像される画像はカラー画像(RGB画像)であり、当該画像はR画像、G画像及びB画像から構成される。
なお、本実施形態においてはイメージセンサ22が第1~第3センサ221~223を含むものとして説明するが、イメージセンサ22は、第1~第3センサ221~223のうちの少なくとも1つを含むように構成されていればよい。また、イメージセンサ22は、第1~第3センサ221~223に代えて、例えばモノクロ画像を生成するためのセンサを含むように構成されていてもよい。
本実施形態においてレンズ21を透過した光に基づいて生成された画像(つまり、撮像装置2によって撮像された画像)は、光学系(に含まれるレンズ21)の収差の影響を受けた画像であり、当該収差により生じるぼけを含む。なお、画像に生じるぼけの詳細については後述する。
図6においては示されていないが、撮像装置2は、例えばレンズ21の位置を調整することによりピント位置を制御するためのピント調整機構(レンズ駆動回路)及び撮像装置2の光学系に取り込まれる光の量(入光量)を調節するための開口部を有する絞り機構(絞り制御回路)等を更に備えている。
次に、図7を参照して、距離推定処理の概要について説明する。本実施形態において、撮像装置2(イメージセンサ22)は、上記したように光学系(レンズ21)の収差の影響を受けた画像を撮像(生成)する。
ここで、本実施形態において、位置姿勢推定装置10(または距離推定部103)内には、被写体3までの距離を撮像装置2によって撮像された画像から推定するために用いられる統計モデルが保持されているものとする。この統計モデルは、上記した光学系の収差の影響を受けた画像に生じる、当該画像に含まれる被写体3までの距離に応じて非線形に変化するぼけを学習することによって生成されている。
なお、統計モデルは、例えばニューラルネットワークまたはランダムフォレスト等の既知の様々な機械学習のアルゴリズムを適用して生成することができるものとする。また、本実施形態において適用可能なニューラルネットワークには、例えば畳み込みニューラルネットワーク(CNN:Convolutional Neural Network)、全結合ニューラルネットワーク及び再帰型ニューラルネットワーク等が含まれていてもよい。
このため、距離推定部103は、撮像装置2によって撮像された画像(つまり、対象画像)を取得し、当該画像を統計モデルに入力する。
この場合、距離推定部103は、画像が入力された統計モデルから出力される当該画像に含まれる被写体3までの距離を取得する。
このように本実施形態においては、上記した統計モデルを用いて、撮像装置2によって撮像された画像から被写体3までの距離を推定することができる。
ここで、本実施形態において、撮像装置2によって撮像された画像には、上記したように当該撮像装置2の光学系の収差(レンズ収差)に起因するぼけが生じている。
以下、撮像装置2によって撮像された画像に生じるぼけについて説明する。まず、撮像装置2の光学系の収差に起因するぼけのうち、色収差について説明する。
図8は、被写体までの距離と色収差により画像に生じるぼけとの関係性について示している。以下の説明では、撮像装置2においてピントが合う位置をピント位置と称する。
収差のあるレンズ21を透過する際の光の屈折率は波長帯域毎に異なるため、例えば被写体の位置がピント位置からずれているような場合には、各波長帯域の光が1点に集まらず異なった点に到達する。これが画像上で色収差(ぼけ)として現れる。
図8の上段は、撮像装置2(イメージセンサ22)に対する被写体の位置がピント位置よりも遠い(つまり、被写体の位置がピント位置よりも奥にある)場合を示している。
この場合、赤色の波長帯域の光401に関しては、イメージセンサ22(第1センサ221)において比較的小さいぼけbRを含む画像が生成される。一方、青色の波長帯域の光402に関しては、イメージセンサ22(第3センサ223)において比較的大きいぼけbBを含む画像が生成される。なお、緑色の波長帯域の光403に関しては、ぼけbRとぼけbBとの中間大きさのぼけを含む画像が生成される。したがって、このような被写体の位置がピント位置よりも遠い状態で撮像された画像においては、当該画像中の被写体の外側に青色のぼけが観察される。
一方、図8の下段は、撮像装置2(イメージセンサ22)に対する被写体の位置がピント位置よりも近い(つまり、被写体の位置がピント位置よりも手前にある)場合を示している。
この場合、赤色の波長帯域の光401に関しては、イメージセンサ22(第1センサ221)において比較的大きいぼけbRを含む画像が生成される。一方、青色の波長帯域の光402に関しては、イメージセンサ22(第3センサ223)において比較的小さいぼけbBを含む画像が生成される。なお、緑色の波長帯域の光403に関しては、ぼけbRとぼけbBとの中間の大きさのぼけを含む画像が生成される。したがって、このような被写体の位置がピント位置よりも近い状態で撮像された画像においては、当該画像中の被写体の外側に赤色のぼけが観察される。
ここで、図8はレンズ21が単純な単レンズの例を示しているが、一般的に、撮像装置2においては、例えば色収差補正が施されたレンズ(以下、色消しレンズと表記)が用いられる場合がある。なお、色消しレンズとは、低分散の凸レンズと高分散の凹レンズを組み合わせたレンズであり、色収差を補正するレンズとして最もレンズ枚数が少ないレンズである。
図9は、レンズ21として上記した色消しレンズを用いた場合における被写体までの距離と色収差により画像に生じるぼけとの関係性を示している。色消しレンズにおいては青色の波長と赤色の波長の焦点位置を揃える設計がされているが、色収差は完全には除去することができない。このため、被写体の位置がピント位置よりも遠い場合には図9の上段に示すように緑色のぼけが発生し、被写体の位置がピント位置よりも近い場合には図9の下段に示すように紫色のぼけが発生する。
なお、図8及び図9の中段は、撮像装置2(イメージセンサ22)に対する被写体の位置とピント位置とが一致している場合を示している。この場合には、イメージセンサ22(第1~第3センサ221~223)においてぼけの少ない画像が生成される。
ここで、撮像装置2(の光学系)には上記したように絞り機構が備えられているが、当該撮像装置2によって撮像された画像に生じるぼけの形状は、当該絞り機構の開口部の大きさによっても異なる。なお、ぼけの形状は、PSF(Point Spread Function)形状と称され、点光源が撮像されたときに生じる光の拡散分布を示している。
なお、以下の説明において、焦点距離とは、レンズから、当該レンズに対して平行に光が入射したときに当該光が収束する位置までの距離をいう。また、F値とは、絞り機構に応じて撮像装置2に取り込まれる光の量を数値化したものである。なお、F値は、値が小さくなるにつれて、撮像装置2に取り込まれる光の量が多くなる(つまり、開口部の大きさが大きくなる)ことを示す。
図10の上段は、焦点距離が50mmのレンズを用いた撮像装置2(の光学系)においてピント位置を1500mm、F値(絞り)をF1.8とした場合に当該撮像装置2によって撮像された画像の中央部に生じるPSF形状を、被写体の位置が撮像装置2から近い順に左から示している。図10の下段は、焦点距離が50mmのレンズを用いた撮像装置2(の光学系)においてピント位置を1500mm、F値(絞り)をF4とした場合に当該撮像装置2によって撮像された画像に生じるPSF形状を、被写体の位置が撮像装置2から近い順に左から示している。なお、図10の上段及び下段の中央は、被写体の位置がピント位置と一致している場合のPSF形状を示している。
図10の上段及び下段の対応する位置に示されているPSF形状は撮像装置2に対する被写体の位置が同一である場合のPSF形状であるが、当該被写体の位置が同一である場合であっても、上段のPSF形状(F値をF1.8として撮像した画像に生じるPSF形状)と下段のPSF形状(F値をF4として撮像した画像に生じるPSF形状)とでは形状が異なっている。
更に、図10の最も左側のPSF形状と最も右側のPSF形状に示すように、例えば被写体の位置からピント位置までの距離が同程度である場合であっても、当該被写体の位置がピント位置よりも近い場合と当該被写体の位置がピント位置よりも遠い場合とで、PSF形状が異なっている。
なお、上記したように絞り機構の開口部の大きさや撮像装置2に対する被写体の位置に応じてPSF形状が異なる現象は、各チャネル(RGB、R画像、G画像及びB画像)においても同様に生じる。図11は、焦点距離が50mmのレンズを用いた撮像装置2においてピント位置を1500mm、F値をF1.8とした場合に当該撮像装置2によって撮像された各チャネルの画像に生じるPSF形状を、被写体の位置がピント位置よりも近い(手前にある)場合と被写体の位置がピント位置よりも遠い(奥にある)場合とに分けて示している。図12は、焦点距離が50mmのレンズを用いた撮像装置2においてピント位置を1500mm、F値をF4とした場合に当該撮像装置2によって撮像された各チャネルの画像に生じるPSF形状を、被写体の位置がピント位置よりも近い場合と被写体の位置がピント位置よりも遠い場合とに分けて示している。
更に、撮像装置2によって撮像された画像に生じるPSF形状は、当該画像中の位置によっても異なる。
図13の上段は、焦点距離が50mmのレンズを用いた撮像装置2においてピント位置を1500mm、F値をF1.8とした場合に当該撮像装置2によって撮像された画像中の各位置に生じるPSF形状を、被写体の位置がピント位置よりも近い場合と被写体の位置がピント位置よりも遠い場合とに分けて示している。
図13の中段は、焦点距離が50mmのレンズを用いた撮像装置2においてピント位置を1500mm、F値をF4とした場合に当該撮像装置2によって撮像された画像中の各位置に生じるPSF形状を、被写体の位置がピント位置よりも近い場合と被写体の位置がピント位置よりも遠い場合とに分けて示している。
図13の上段及び中段に示すように、撮像装置2によって撮像された画像の端部近傍(特に、左上等の角部近傍)においては、例えば画像中央付近に位置するPSF形状とは異なるPSF形状を観察することができる。
また、図13の下段は、焦点距離が105mmのレンズを用いた撮像装置2においてピント位置を1500mm、F値をF4とした場合に当該撮像装置2によって撮像された画像中の各位置に生じるPSF形状を、被写体の位置がピント位置よりも近い場合と被写体の位置がピント位置よりも遠い場合とに分けて示している。
上記した図13の上段及び中段は同一のレンズを用いて撮像された画像に生じるPSF形状を示しているが、図13の下段に示すように、焦点距離が異なるレンズを用いた場合には当該レンズに応じた異なるPSF形状(図13の上段及び中段とは異なるPSF形状)が観察される。
次に、図14を参照して、上記した撮像装置2の光学系に用いるレンズの種別に応じたPSF形状(レンズの収差)の位置依存性について具体的に説明する。図14は、焦点距離が異なる複数のレンズの各々を用いて撮像された画像の中央付近(画面中央)及び端部付近(画面端)に生じるPSF形状を、被写体の位置がピント位置よりも近い場合と被写体の位置がピント位置よりも遠い場合とに分けて示している。
図14に示すように、画像の中央付近に生じるPSF形状は、レンズの種別が異なる場合であっても概ね円形で同一であるが、画像の端部付近に生じるPSF形状は、画像の中央付近に生じるPSF形状と異なる形状を有し、かつ、レンズの種別に応じてそれぞれ特性(特徴)が異なる。なお、上記した図9において説明した被写体の位置がピント位置よりも近い場合にはPSF形状のふち付近に紫色のぼけが発生し、被写体の位置がピント位置よりも遠い場合にはPSF形状のふち付近に緑色のぼけが発生する点については、レンズの種別が異なる場合であっても共通している。
また、図14においては、焦点距離が50mmのレンズに関しては2つの例(#1及び#2)が示されているが、これは、焦点距離が50mmで同一であるが、レンズの製造元が異なる(つまり、異なる製品である)ことを示している。焦点距離が85mmのレンズについても同様である。
ここで、本実施形態においては、画像に生じるぼけを学習することによって生成された統計モデルを用いて被写体3までの距離を推定するが、上記したようにレンズの種別によって特に画像の端部近傍のPSF形状が大きく異なることから、当該レンズの種別を考慮することなく生成された1つの統計モデルを用いて距離を推定する構成では、画像から推定される距離の精度が低下する場合がある。
このため、本実施形態においては、上記した対象画像に含まれる被写体3までの距離(つまり、撮像装置2に対する被写体3の位置)に応じて非線形に変化するぼけに着目して撮像装置2の光学系に用いられるレンズ毎に生成された統計モデルを用いて、被写体3までの距離を当該撮像装置2によって撮像された画像から推定するものとする。
本実施形態において、被写体3までの距離に応じて非線形に変化するぼけには、上記した図8及び図9において説明した撮像装置2の光学系の色収差により生じるぼけ、図10~図12において説明した撮像装置2の光学系に取り込まれる光の量を調節する絞り機構の開口部の大きさ(つまり、F値)に応じて生じるぼけ、図13及び図14において説明した撮像装置2によって撮像された画像中の位置に応じて変化するぼけ等が含まれる。
なお、PSF形状は、絞り機構の開口部の形状によっても異なる。ここで、図15は、PSF形状の非線形性(非対称性)と絞り機構の開口部の形状との関係を表している。上記したPSF形状の非線形性は、絞り機構の開口部の形状が円以外の場合に生じやすい。特に、PSF形状の非線形性は、開口部の形状が奇数角形、或いはイメージセンサ22の水平または垂直軸に対して非対称に配置された偶数角形の場合により生じやすい。
ここで、上記した図13においては、画像に含まれる被写体までの距離及び当該画像中の位置に依存するPSF形状(つまり、距離依存性及び位置依存性を有するぼけ)を画像上に表しているが、当該画像の各々は、収差マップと称される。
収差マップは、光学系の収差を受けた画像に生じるぼけであって、当該画像に含まれる被写体までの距離及び当該画像中の位置に依存するぼけの分布を表すマップ形式の情報である。換言すれば、収差マップとは、収差によって生じる画像中のぼけ(つまり、光学系の収差)の距離依存性と位置依存性とを示す情報である。
なお、本実施形態において、収差マップには、当該収差マップによって示される距離依存性及び位置依存性を有するぼけを生じさせるレンズに応じた統計モデル(つまり、当該距離依存性及び位置依存性を有するぼけを学習した統計モデル)が紐づけられている。収差マップは、統計モデルと同様に、位置姿勢推定装置10(または距離推定部103)内に保持されている。
図16は、本実施形態において対象画像から被写体までの距離を推定する動作の概要を示す。
図16に示す対象画像501に生じるぼけ(ぼけ情報)502は、被写体503までの距離に関する物理的な手掛かりとなる。具体的には、ぼけの色、PSFのサイズ及び形状が、被写体503までの距離に関する手掛かりとなる。
距離推定部103においては、このような物理的な手掛かりである対象画像501に生じるぼけ502を統計モデルで分析(解析)することによって被写体503までの距離504を推定する。
以下、本実施形態において統計モデルによって対象画像から距離を推定する方式の一例について説明する。ここでは、第1~第3方式について説明する。
まず、図17を参照して、第1方式について説明する。第1方式において、距離推定部103は、対象画像501から局所領域(画像パッチ)501aを抽出する。
この場合、例えば対象画像501の全領域をマトリクス状に分割し、当該分割後の部分領域を局所領域501aとして順次抽出するようにしてもよいし、対象画像501を認識して、被写体(像)が検出された領域を網羅するように局所領域501aを抽出してもよい。また、局所領域501aは、他の局所領域501aとの間で一部がオーバーラップしていてもよい。
距離推定部103は、抽出された局所領域501a毎に、当該局所領域501aに関する情報(対象画像501の情報)を統計モデルへ入力することによって、当該局所領域501a中の被写体までの距離504を推定する。
このように局所領域501aに関する情報が入力される統計モデルは、当該局所領域501aを構成する画素毎に距離を推定する。
ここで、例えば特定の画素が第1局所領域501a及び第2局所領域501aの両方に属する(つまり、第1局所領域501a及び第2局所領域501aとの間で当該画素を含む領域がオーバーラップしている)場合、当該画素が第1局所領域501aに属するものとして推定された距離と、当該画素が第2局所領域501aに属するものとして推定された距離とでは異なる場合がある。
このため、例えば上記したように一部がオーバーラップする複数の局所領域501aが抽出されている場合、当該複数の局所領域501aがオーバーラップしている領域を構成する画素の距離は、例えば当該オーバーラップしている一方の局所領域501aの一部の領域(画素)について推定された距離と他方の局所領域501aの一部の領域(画素)について推定された距離との平均値としてもよい。また、一部がオーバーラップする3以上の局所領域501aが抽出されている場合、当該オーバーラップしている3以上の局所領域501aの一部の領域毎に推定された距離による多数決で決定されてもよい。
図18は、上記した第1方式において統計モデルに入力される局所領域501aに関する情報の一例を示す。
距離推定部103は、対象画像501に含まれるR画像、G画像及びB画像のそれぞれについて、当該対象画像501から抽出された局所領域501aの勾配データ(R画像の勾配データ、G画像の勾配データ及びB画像の勾配データ)を生成する。このように距離推定部103によって生成された勾配データが統計モデルに入力される。
なお、勾配データは、各画素と当該画素に隣接する画素との画素値の差分(差分値)を示す。例えば、局所領域501aがn画素(X軸方向)×m画素(Y軸方向)の矩形領域として抽出される場合、当該局所領域501a内の各画素について算出した例えば右隣の画素との差分値をn行×m列のマトリクス状に配置した勾配データが生成される。
統計モデルは、R画像の勾配データと、G画像の勾配データと、B画像の勾配データとを用いて、当該各画像に生じているぼけから距離を推定する。図18においてはR画像、G画像及びB画像の各々の勾配データが統計モデルに入力される場合について示しているが、対象画像501(RGB画像)の勾配データが統計モデルに入力される構成であってもよい。
次に、図19を参照して、第2方式について説明する。第2方式においては、第1方式における局所領域501aに関する情報として、当該局所領域(画像パッチ)501a毎の勾配データ及び対象画像501における当該局所領域501aの位置情報が統計モデルに入力される。
位置情報501bは、例えば局所領域501aの中心点を示すものであってもよいし、左上辺等の予め定められた一辺を示すものであってもよい。また、位置情報501bとして、局所領域(画像パッチ)501aを構成する画素それぞれの対象画像501上での位置情報を用いてもよい。
上記したように位置情報501bを更に統計モデルに入力することで、例えばレンズ21の中心部を透過する光によって結像された被写体像のぼけと、当該レンズ21の端部を透過する光によって結像された被写体像のぼけとの間の差異を考慮して距離を推定することができる。
つまり、この第2方式によれば、ぼけ、距離及び画像上の位置の相関に基づいて対象画像501から距離をより確実に推定することができる。
図20は、上記した第2方式において統計モデルに入力される局所領域501aに関する情報の一例を示す。
例えばn画素(X軸方向)×m画素(Y軸方向)の矩形領域が局所領域501aとして抽出される場合、距離推定部103は、当該局所領域501aの例えば中心点に対応する対象画像501上のX座標値(X座標データ)と、当該局所領域501aの例えば中心点に対応する対象画像501上のY座標値(Y座標データ)とを取得する。
第2方式においては、このように距離推定部103によって取得されたX座標データ及びY座標データが、上記したR画像、G画像及びB画像の勾配データとともに、統計モデルに入力される。
更に、図21を参照して、第3方式について説明する。第3方式においては、上記した第1方式及び第2方式のような対象画像501からの局所領域(画像パッチ)501aの抽出は行われない。第3方式において、距離推定部103は、対象画像501の全領域に関する情報(R画像、G画像及びB画像の勾配データ)を統計モデルに入力する。
局所領域501a毎に距離504を推定する第1方式及び第2方式と比較して、第3方式は、統計モデルによる推定の不確実性が高くなる可能性があるが、距離推定部103の負荷を軽減することができる。
以下の説明においては、上記した第1~第3方式において統計モデルに入力される情報を、便宜的に画像に関する情報と称する。
図22は、本実施形態における統計モデルの学習方法の一例を示す。ここでは、撮像装置2によって撮像された画像を用いた統計モデルの学習について説明するが、当該統計モデルの学習は、例えば撮像装置2の光学系と同様の光学系を有する他のデバイス(カメラ等)によって撮像された画像を用いて行われてもよい。
なお、以下の説明において、距離に応じて非線形に変化するぼけを統計モデルが学習するための画像を、便宜的に、学習用画像と称する。
上記した図17を参照して説明した第1方式、図19を参照して説明した第2方式、図21を参照して説明した第3方式のいずれの方式を用いる場合においても、統計モデルの学習は、基本的に、学習用画像601に関する情報を統計モデルに入力することによって当該統計モデルによって推定された距離602と正解値603との誤差を当該統計モデルにフィードバックすることによって行われる。なお、誤差がフィードバックされた場合、統計モデルのパラメータ(例えば、重み係数)は、当該誤差が減少するように更新される。
上記した対象画像から距離を推定する方式として第1方式が適用される場合には、統計モデルの学習時においても、学習用画像601から抽出された局所領域(画像パッチ)毎に、当該局所領域に関する情報(勾配データ)が統計モデルに入力され、当該統計モデルによって各局所領域内の各画素の距離602が推定される。このように推定された距離602と正解値603とが比較されることによって得られる誤差が、統計モデルにフィードバックされる。
同様に、対象画像から距離を推定する方式として第2方式が適用される場合には、統計モデルの学習時においても、学習用画像601から抽出された局所領域(画像パッチ)毎に、当該局所領域に関する情報として勾配データ及び位置情報が統計モデルに入力され、当該統計モデルによって各局所領域内の各画素の距離602が推定される。このように推定された距離602と正解値603とが比較されることによって得られる誤差が、統計モデルにフィードバックされる。
また、対象画像から距離を推定する方式として第3方式が適用される場合には、統計モデルの学習時においても、学習用画像601の全領域に関する情報(勾配データ)が一括して統計モデルに入力され、当該統計モデルによって当該学習用画像601内の各画素の距離602が推定される。このように推定された距離602と正解値603とが比較されることによって得られる誤差が、統計モデルにフィードバックされる。
本実施形態における統計モデルは、例えばピント位置を固定した状態で撮像装置2から被写体までの距離を変化させながら撮像される画像を用いた学習が繰り返し実行されることによって生成される。また、1つのピント位置についての学習が完了した場合には、他のピント位置についても同様に学習を実行することによって、より精度の高い統計モデルを生成することができる。
ここで、図23を参照して、画像(対象画像または学習用画像)から推定される被写体までの距離について具体的に説明する。
図23においては、被写体がピント位置よりも近い(手前にある)場合に生じるぼけのサイズをX軸上においてマイナスの値で示し、被写体がピント位置よりも遠い(奥にある)場合に生じるぼけのサイズをX軸上においてプラスの値で示している。つまり、図23においては、ぼけの色及びサイズを正負の値で示している。
図23においては、被写体の位置がピント位置よりも近い場合及び被写体の位置がピント位置よりも遠い場合のいずれの場合においても、被写体がピント位置から離れるほど、ぼけのサイズ(ピクセル)の絶対値が大きくなることが示されている。
図23に示す例では、画像を撮像した光学系におけるピント位置が約1500mmである場合を想定している。この場合、例えば約-4.8ピクセルのぼけは光学系から約1000mmの距離に対応し、0ピクセルのぼけは光学系から1500mmの距離に対応し、約4.8ピクセルのぼけは光学系から約750mmの距離に対応する。
ここでは、便宜的に、ぼけのサイズ(ピクセル)をX軸上に示す場合について説明したが、上記した図10~図14において説明したように、画像に生じるぼけの形状(PSF形状)は、当該被写体がピント位置よりも近い場合と当該被写体がピント位置よりも遠い場合とで異なるし、画像中の位置によっても異なる。このため、図23においてX軸上に示す値は、実際には当該ぼけの形状(PSF形状)を反映した値である。
なお、統計モデルの学習時に、学習用画像に関する情報が統計モデルに入力される場合には、当該学習用画像が撮像された際の被写体までの実際の距離に対応する、ぼけの色、サイズ及び形状を正負で示す値(以下、ぼけ値と表記)が正解値として用いられる。このような学習が行われた統計モデルによれば、画像に含まれる被写体までの距離として、上記したぼけ値が出力される。
例えば図23の線分d1によって示されるように被写体までの距離とぼけの色、サイズ及び形状とは相関があるため、距離を推定することと、ぼけの色、サイズ及び形状を推定することとは同義である。
なお、統計モデルに直接的に距離を推定させる場合と比較して、当該統計モデルにぼけの色、サイズ及び形状を推定させる場合の方が、統計モデルによる推定の精度を高めることができる。この場合、例えばn画素(X軸方向)×m画素(Y軸方向)の局所領域毎に当該局所領域に関する情報が統計モデルに入力される場合、当該統計モデルは、その局所領域を構成する各画素について推定したぼけの色、サイズ及び形状(を示すぼけ値)をn行×m列に配列した距離を出力するものとする。
また、統計モデルの学習においては、距離推定部103において推定可能な距離の下限値(手前)から上限値(奥)まで極力細かい粒度で被写体を各距離で撮像した学習用画像を用意し、これらの学習用画像に関する情報を統計モデルに入力する。統計モデルの学習において用いられる正解値としては、このような学習用画像が撮像されたときの被写体までの距離に対応するぼけの色、サイズ及び形状を示すぼけ値を用いる。なお、統計モデルの学習には、被写体が異なる様々な学習用画像が用意されることが好ましい。
次に、図24に示すフローチャートを参照して、距離推定部103において用いられる統計モデルを生成する処理の処理手順の一例について説明する。なお、図24に示す処理は、例えば位置姿勢推定装置10において実行されてもよいし、他の装置等において実行されてもよい。
まず、予め用意された学習用画像に関する情報が統計モデルに入力される(ステップS21)。この学習用画像は、例えば撮像装置2に備えられるレンズ21を透過した光に基づいてイメージセンサ22によって生成された画像であって、撮像装置2の光学系(レンズ21)の収差の影響を受けた画像である。具体的には、学習用画像には、上記した図8~図14において説明した被写体までの距離に応じて非線形に変化するぼけが生じている。
なお、学習用画像に生じるぼけと相関がある当該学習用画像を撮像した光学系の情報(例えば、焦点距離、F値、ピント位置等)については、図24に示す処理を実行する位置姿勢推定装置10または他の装置等において把握されているものとする。
対象画像から距離を推定する方式として上記した第1方式が適用される場合には、学習用画像に関する情報として、当該学習用画像の局所領域毎に、R画像、G画像及びB画像の勾配データが統計モデルに入力される。
対象画像から距離を推定する方式として上記した第2方式が適用される場合には、学習用画像に関する情報として、学習用画像の局所領域毎に、R画像、G画像及びB画像の勾配データと当該局所領域の学習用画像上における位置情報とが統計モデルに入力される。
対象画像から距離を推定する方式として上記した第3方式が適用される場合には、学習用画像に関する情報として、当該学習用画像の全領域分のR画像、G画像及びB画像の勾配データが統計モデルに入力される。
なお、本実施形態においてはR画像、G画像及びB画像の勾配データが統計モデルに入力されるものとして説明するが、上記した学習用画像に生じるぼけの形状(PSF形状)の観点から距離を推定する場合には、R画像、G画像及びB画像の勾配データのうちの少なくとも1つの勾配データが統計モデルに入力されればよい。一方、色収差により学習用画像に生じるぼけの色及びサイズの観点から距離を推定する場合には、R画像、G画像及びB画像の勾配データのうちの少なくとも2つの勾配データが統計モデルに入力されればよい。
統計モデルに対して学習用画像に関する情報が入力されると、統計モデルによって、被写体までの距離が推定される(ステップS22)。この場合、統計モデルにより、学習用画像に生じているぼけが当該学習用画像から抽出され、当該ぼけに応じた距離が推定される。
ステップS2において推定された距離は、学習用画像の撮像時に得られている正解値と比較される(ステップS23)。
ステップS23における比較結果(誤差)は、統計モデルにフィードバックされる(ステップS24)。これにより、統計モデルにおいては、誤差が減少する用にパラメータが更新される(つまり、学習用画像に生じているぼけが学習される)。
上記した図24に示す処理が学習用画像毎に繰り返し実行されることによって、当該学習用画像中の被写体までの距離に応じて非線形に変化するぼけ(の距離依存性及び位置依存性)を学習した統計モデルが生成される。このように生成された統計モデルは、位置姿勢推定装置10内において保持される。
ここでは1つの統計モデルの学習について説明したが、本実施形態においては、上記したように撮像装置2の光学系に用いられるレンズ毎に統計モデルが用意される。ここで、移動体1に設置される撮像装置2において例えば第1レンズまたは第2レンズが用いられるものとすると、第1レンズに応じた統計モデルは、当該第1レンズを用いた撮像装置2によって撮像される画像(学習用画像)を用いた学習を繰り返すことによって生成される。一方、第2レンズに応じた統計モデルは、当該第2レンズを用いた撮像装置2によって撮像される画像(学習用画像)を用いた学習を繰り返すことによって生成される。他のレンズについても同様である。すなわち、本実施形態においては、例えば撮像装置2の光学系に用いられるレンズを交換しながら学習を繰り返すことによって、当該レンズの各々に応じた統計モデルを生成することができる。
なお、ここでは複数のレンズを交換しながら撮像された画像を学習用画像として利用する場合について説明したが、本実施形態においては、各レンズの焦点距離、F値、ピント値に応じた距離依存性及び位置依存性を示す複数の収差マップが位置姿勢推定装置10内に保持されている。この複数の収差マップは複数のレンズの各々を用いて撮像された画像に生じるぼけの分布を表すものであるため、所定の画像にこれらの収差マップが畳み込まれた画像(カラー画像)を学習用画像として利用して、各レンズに応じた統計モデルの学習を行うことも可能である。このような構成によれば、学習用画像を収集する手間を軽減することが可能となる。
次に、図25のフローチャートを参照して、上記した距離推定処理の処理手順の一例について説明する。なお、以下の説明においては、対象画像を撮像する撮像装置2の光学系に用いられているレンズ21(つまり、撮像装置2に装着されているレンズ21)を対象レンズ21と称する。また、本実施形態において、距離推定処理は、例えば対象画像(時系列の画像)の各々に対して実行されるものとする。
まず、距離推定部103は、例えば対象レンズ21を用いた撮像装置2によって撮像された画像(以下、サンプル画像と表記)から当該対象レンズ21の収差マップ(PSF形状)を推定する(ステップS31)。
ここで、ステップS31において用いられるサンプル画像は、例えば白点画像や白黒ストライプ等のテストパターンを撮像することによって得られる画像(テストパターン画像)であるものとする。この場合、距離推定部103は、このようなサンプル画像の各位置に生じているぼけ(PSF形状)を抽出することによって対象レンズ21の収差マップを推定する。サンプル画像は、例えば撮像装置2に備えられているメモリ等に保持されていてもよいし、位置姿勢推定装置10(または距離推定部103)内に保持されていてもよい。
なお、ステップS31においては、サンプル画像全体の収差マップを推定するようにしてもよいし、当該サンプル画像の一部の領域の収差マップを推定するようにしてもよい。また、サンプル画像の一部の領域の収差マップを推定する場合、当該一部の領域は、特徴的な形状のぼけが生じるサンプル画像の端部近傍の領域であってもよい。
次に、距離推定部103は、ステップS31において推定された対象レンズ21の収差マップを、当該距離推定部103において保持されている収差マップの各々と照合する(ステップS32)。ステップS32において、距離推定部103は、対象レンズ21の収差マップと、当該距離推定部103において保持されている収差マップの各々との類似度を算出し、当該類似度が高い収差マップを特定する。
なお、上記したステップS31及びS32の処理が実行されることによって収差マップが特定されるが、収差マップは、例えば撮像装置2の光学系(対象レンズ21)の収差を受けた第1サンプル画像(ぼけが生じている画像)と、撮像装置2に取り込まれる光の量を少なくする(つまり、開口部の大きさを小さくする)ことによって得られる収差の影響が少ない第2サンプル画像(ぼけが生じていない画像)とを用いて特定されてもよい。具体的には、第1サンプル画像(デフォーカスした画像)と、第2サンプル画像に対して距離推定部103において保持されている収差マップの各々を畳み込むことによって生成される画像との類似度を算出し、当該類似度が高い画像の生成に用いられた収差マップ(当該画像に畳み込まれた収差マップ)を特定するようにしてもよい。
ここで、位置姿勢推定装置10内に保持されている収差マップの各々は、上記したように統計モデルに紐づけられている。このため、距離推定部103は、位置姿勢推定装置10において保持されている複数の統計モデルの中から、上記したように特定された収差マップに紐づけられている統計モデルを選定する(ステップS33)。ステップS33において選定された統計モデルは、対象レンズ21を用いた撮像装置2によって撮像された対象画像に対して高い精度で距離を推定可能な統計モデルに相当し、対象レンズ21に応じた統計モデルとして設定されている。
ステップS33の処理が実行されると、距離推定部103は、対象画像に関する情報(勾配データ)を、ステップS33において選定された統計モデルに入力する(ステップS34)。
ステップS34の処理が実行されると、対象画像に含まれる被写体3までの距離が当該統計モデルから出力される。なお、被写体3までの距離は、対象画像を構成する画素毎に出力される。これにより、距離推定部103は、対象画像に含まれる被写体3までの距離を推定する(ステップS35)。
なお、図25に示す処理においては位置姿勢推定装置10内に保持されている収差マップを用いて統計モデルが選定されるものとして説明したが、距離推定部103が対象レンズ21を把握している場合には、収差マップを用いることなく、当該対象レンズ21に応じた統計モデルを選定する構成としてもよい。
また、撮像装置2にメモリが備えられている場合において、当該メモリに対象レンズ21に関するレンズ情報が保持されている場合がある。このレンズ情報は、例えば対象レンズ21の使用値(カタログ値)に相当し、当該対象レンズ21の焦点距離やF値を含む。また、レンズ情報には、現在のピント位置等の情報が含まれていてもよい。この場合には、このようなレンズ情報を用いて対象レンズ21を特定し、当該対象レンズ21に応じた統計モデルを選定する構成とすることも可能である。
更に、対象レンズ21の製造元(レンズメーカー)から対象レンズ21の収差マップに相当する収差情報を取得することができる場合がある。この場合には、この収差情報を用いてステップS32に相当する処理を実行することによって統計モデルを選定してもよい。
また、ユーザが手動で焦点距離、F値及びピント位置を設定し、当該設定された値を用いて統計モデルを選定するようにしてもよい。
なお、本実施形態における距離推定処理(統計モデル)においては対象画像を構成する画素毎に被写体3までの距離が推定されるものとして説明したが、当該被写体3までの距離は、例えば複数の画素から構成される領域毎に推定される構成であってもよい。
更に、ここでは統計モデルを用いて被写体3までの距離を推定するものとして説明したが、本実施形態における距離推定処理においては、例えば撮像装置2の開口部に特殊なカラーフィルタを設ける、当該開口部の形状を加工する、または任意の色収差を得るためにカスタマイズされたレンズを設ける等によって生じるぼけの幅及び色の組み合わせに基づいて被写体3までの距離が推定されてもよい。また、実スケールに基づく被写体3までの距離を推定することが可能であれば、本実施形態において説明した距離推定処理以外の処理が実行されても構わない。
次に、図26のフローチャートを参照して、上記した位置姿勢補正処理(図4に示すステップS4の処理)の処理手順の一例について説明する。
なお、図4に示すように、位置姿勢補正処理が実行される場合には、既に位置姿勢推定処理及び距離推定処理が実行されているが、位置姿勢推定処理においては、上記した図5において説明したように、対象画像(時系列の画像)を構成する第1キーフレーム(に対応する画像)が撮像された時点の移動体1の位置及び姿勢から第2キーフレーム(に対応する画像)が撮像された時点の移動体1の位置及び姿勢への移動体1の移動に基づいて、移動体1の相対的な位置及び姿勢が推定されている。また、距離推定処理においては、対象画像(時系列の画像)の各々に含まれる被写体3までの距離が画素毎に推定されている。
以下、対象画像のうちの第1キーフレームに対応する画像を第1画像、対象画像のうちの第2キーフレームに対応する画像を第2画像と称する。また、第1画像が撮像された時点を時刻t、第2画像が撮像された時点を時刻t+1とする。
この場合、位置姿勢補正部104は、上記した距離推定処理において推定された第1画像に含まれる被写体3までの距離及び第2画像に含まれる被写体3までの距離に基づいて、第1及び第2距離マップを生成する(ステップS41)。
なお、第1距離マップは、第1画像中の被写体3の位置に当該被写体3までの距離を割り当てる(つまり、当該距離に対応する値を当該距離が推定された画素に対応する位置に配置する)ことによって生成されるマップ形式の画像(データ)である。
同様に、第2距離マップは、第2画像中の被写体3の位置に当該被写体3までの距離を割り当てる(つまり、当該距離に対応する値を当該距離が推定された画素に対応する位置に配置する)ことによって生成されるマップ形式の画像(データ)である。
上記した第1及び第2距離マップは、例えば距離を推定する際に物理的な手がかりとして利用したぼけのヒストグラムの信頼区間が輝度値の値域(例えば、0~255)に分布されるように正規化した上で、キャリブレーション時に最小及び最大輝度値に相当する実距離を紐づけておく方式で生成することも可能である。また、第1及び第2距離マップは、例えばカメラ設計値(理論値)に基づく方法で生成することも可能である。
また、本実施形態においては、第1及び第2距離マップが位置姿勢補正処理において生成されるものとして説明したが、対象画像の各々に含まれる被写体3までの距離に基づく複数の距離マップは、距離推定処理において生成されていてもよい。
次に、位置姿勢補正部104は、ステップS41において生成された第1及び第2距離マップのうちの一方の距離マップ(例えば、第1距離マップ)をワーピング(変形)する(ステップS42)。この第1距離マップのワーピングは、例えば第1及び第2画像に基づく時刻tから時刻t+1までの間のフロー(変形式)に基づいて行われる。
ここで、位置姿勢推定処理において推定されている移動体1の位置及び姿勢は、上記したように第1画像(第1キーフレーム)が撮像された時点(時刻t)の移動体1の位置及び姿勢から第2画像(第2キーフレーム)が撮像された時点(時刻t+1)の移動体1の位置及び姿勢への移動体1の移動に基づいて推定されたものである。
このため、上記したステップS42において第1距離マップをワーピングするための当該時刻tから時刻t+1までの間のフローとしては、位置姿勢推定処理が実行されることによって推定された移動体1の位置及び姿勢を利用することができる。
この場合、ステップS42においては、第1距離マップに移動体1の位置及び姿勢を適用することによって、当該第1距離マップがワーピングされた距離マップ(以下、第3距離マップと表記)が生成される。
なお、第1距離マップをワーピングする前の画素(位置)をp
t、ワーピングした後の当該画素(位置)をp
sとすると、p
sは、以下の式(1)によって求めることができる。
なお、位置姿勢推定処理において推定された移動体1の位置及び姿勢は3次元座標と回転とによって表されるところ、式(1)のTt→sは当該並進及び回転を表しており、Dtは画素に割り当てられている距離を表している。また、Kは、撮像装置2に対して設定されている既知のパラメータ(カメラパラメータ)である。
ここで、上記したステップS41において第1及び第2距離マップの生成に用いられた距離(つまり、距離推定処理が実行されることによって推定された距離)は実スケールに基づいているところ、上記した位置姿勢推定処理が実行されることによって推定された移動体1の位置及び姿勢が実スケールに基づくものであれば、当該移動体1の位置及び姿勢を適用することによって第1距離マップがワーピングされた第3距離マップは、第2距離マップと等しくなるはずである。
一方、位置姿勢推定処理において推定された移動体1の位置及び姿勢が実スケールに基づいていないのであれば、当該移動体1の位置及び姿勢を適用することによって第1距離マップがワーピングされた第3距離マップは第2距離マップと等しくならず、当該第2距離マップと第3距離マップとの残差は、移動体1の位置及び姿勢の実スケールとのずれに相当するといえる。
このため、位置姿勢補正部104は、ステップS41において生成された第2距離マップとステップS42の処理が実行されることによって生成された第3距離マップとを比較し、当該比較結果として当該第2及び第3距離マップの残差を計算する(ステップS43)。第2及び第3距離マップは画素毎に距離が割り当てられた画像であるところ、ステップS43において残差(距離の残差)は、第2及び第3距離マップを構成する画素毎に計算される。
次に、位置姿勢補正部104は、ステップS43において計算された残差に基づいて、位置姿勢推定処理において推定された移動体1の位置及び姿勢を実スケールに基づく移動体1の位置及び姿勢に補正する(ステップS44)。なお、ステップS44における移動体1の位置及び姿勢の補正は、ステップS43において画素毎に計算された残差の平均値を用いて実行される。
具体的には、実スケールに基づく移動体1の位置及び姿勢(つまり、補正後の位置及び姿勢)をReal Scale Pose(R
t→t+1,T
t→t+1)と表現すると、このReal Scale Pose(R
t→t+1,T
t→t+1)は、以下の式(2)を用いて求められる。
なお、式(2)においてPose(Rt→t+1,Tt→t+1)は位置姿勢推定処理が実行されることによって推定された移動体1の位置及び姿勢(つまり、補正前の位置及び姿勢)を示しており、P(tz)は当該移動体1の位置及び姿勢における3次元座標のz成分(つまり、奥行き)を示しており、diffは上記した残差の平均値を表している。
このような式(2)によれば、位置姿勢推定処理において推定された移動体1の位置及び姿勢を実スケール化することが可能となる。
なお、ここでは移動体1の位置及び姿勢を実スケール化するために式(2)が用いられるものとして説明したが、当該移動体1の位置及び姿勢の実スケール化は他の手法によって行われても構わない。
また、図26に示す位置姿勢補正処理においては、第1距離マップをワーピングすることによって第3距離マップを生成し、当該第3距離マップを第2距離マップと比較するものとして主に説明したが、第2距離マップをワーピングすることによって第3距離マップを生成し、当該第3距離マップを第1距離マップと比較する構成としても構わない。
更に、位置姿勢推定処理が実行されることによって推定された移動体1の位置及び姿勢はステップS43において画素毎に計算された残差の平均値に基づいて補正されるが、当該残差に外れ値(適切でない値)が存在する場合には、例えば残差のヒストグラムにおいて頻度が上位の残差のみをピックアップすることによって外れ値を除外する構成とすることも可能である。また、このような残差における外れ値の除外は、例えばロバスト推定のアルゴリズムであるRansacを利用して行うようにしてもよい。また、残差計算の際にオクルージョンの影響を考慮する構成とすることも可能である。具体的には、例えば撮像装置2が前進している場合、時刻t→t+1において撮像装置2から被写体3までの距離はt+1の方が近くなるが、オクルージョンによって距離関係が逆転する場合があるため、そのような画素に対しては残差計算に含めない方法を取ることで実現可能である。
上記したように本実施形態においては、移動体1に設置された撮像装置2によって連続的に撮像された時系列の画像に基づいて、移動体1の位置及び姿勢(第1位置及び姿勢)を推定する位置姿勢推定処理が実行されるとともに、当該時系列の画像に含まれる被写体3までの距離(実スケールに基づく距離)を推定する距離推定処理が実行される。本実施形態において、位置姿勢推定処理が実行されることによって推定された移動体1の位置及び姿勢は、距離推定処理が実行されることによって推定された距離に基づいて、実スケールに基づく移動体1の位置及び姿勢(第2位置及び姿勢)に補正される。
なお、本実施形態においては、時系列の画像が第1及び第2画像を含み、第1画像に含まれる被写体3までの第1距離及び第2画像に含まれる被写体3までの第2距離が推定される。また、第1画像に含まれる被写体3の位置に第1距離が割り当てられた第1距離マップ及び第2画像に含まれる被写体3の位置に第2距離が割り当てられた第2距離マップが生成され、当該第1距離マップに位置姿勢推定処理が実行されることによって推定された移動体1の位置及び姿勢を適用することによって第3距離マップが生成される。この場合、第2距離マップと第3距離マップとの比較結果(つまり、第2距離マップと第3距離マップとの画素毎の距離の残差)に基づいて、位置姿勢推定処理が実行されることによって推定された移動体1の位置及び姿勢を補正することができる。
本実施形態においては、このような構成により、単眼カメラを用いた場合であっても、実スケールに基づく移動体の位置及び姿勢を容易に得る(推定する)ことが可能となり、当該移動体の位置及び姿勢を移動体1の移動経路等の生成に利用することが可能となる。
また、本実施形態においては、例えば少なくとも2つの画像(第1及び第2キーフレーム)から複数の特徴点を検出し、当該検出された複数の特徴点を当該2つの画像間で対応付けることによって算出される相対的な位置及び姿勢を、移動体1の位置及び姿勢として推定する。このような構成によれば、幾何ベースで移動体1の位置及び姿勢を推定することが可能である。
なお、本実施形態においては、例えば少なくとも2つの画像を入力した場合に当該2つの画像間における移動体1の位置及び姿勢の移動に基づく相対的な位置及び姿勢を出力することが可能な深層学習モデル(第2統計モデル)を予め用意しておくことによって、当該深層学習モデルを用いた移動体1の位置及び姿勢の推定を行う(つまり、深層学習ベースで移動体1の位置及び姿勢を推定する)ようにしてもよい。
(第2実施形態)
次に、第2実施形態について説明する。図27は、本実施形態に係る位置姿勢推定装置の機能構成の一例を示すブロック図である。なお、前述した図3と同様の部分には同一参照符号を付してその詳しい説明を省略する。ここでは、図3と異なる部分について主に述べる。
なお、本実施形態に係る位置姿勢推定装置において推定される移動体の位置及び姿勢の概要及び当該位置姿勢推定装置のハードウェア構成は、前述した第1実施形態と同様であるため、適宜、図1及び図2を用いて説明する。
図27に示すように、本実施形態に係る位置姿勢推定装置10は、前述した第1実施形態において説明した画像取得部101、位置姿勢推定部102、距離推定部103及び位置姿勢補正部104に加えて、領域抽出部105を更に含む。すなわち、本実施形態に係る位置姿勢推定装置10は、領域抽出部105を含む点で前述した第1実施形態とは異なる。
なお、本実施形態において、位置姿勢推定装置10に含まれる領域抽出部105の一部または全ては、CPU11(つまり、位置姿勢推定装置10のコンピュータ)に位置姿勢推定プログラム13Aを実行させること、すなわち、ソフトウェアによって実現されるが、例えばハードウェアによって実現されてもよいし、ソフトウェア及びハードウェアの組み合わせによって実現されてもよい。
ここで、距離推定部103は、前述した第1実施形態において説明したように画像取得部101によって取得された時系列の画像の各々に含まれる被写体3までの距離を推定する際に、当該推定された距離(実スケールに基づく距離)に対する信頼度を算出する。
領域抽出部105は、距離推定部103によって算出された信頼度に基づいて、画像取得部101によって取得された時系列の画像の各々から信頼度が予め定められた値以上である距離が推定された領域(実スケールに基づく推定距離が高信頼度である領域)を抽出する。
位置姿勢補正部104は、領域抽出部105によって抽出された領域(に含まれる被写体3までの距離)に基づいて、位置姿勢推定部102によって推定された移動体1の位置及び姿勢を実スケールに基づく移動体1の位置及び姿勢に補正する。
次に、図28のフローチャートを参照して、本実施形態に係る位置姿勢推定装置10の処理手順の一例について説明する。
まず、前述した図4に示すステップS1~S3の処理に相当するステップS51~S53の処理が実行される。
ここで、前述した図4に示すステップS3において距離推定処理が実行されると、ステップS1において取得された時系列の画像(対象画像)を構成する画素毎に距離が推定されるが、図28に示すステップS53において実行される距離推定処理においては、当該対象画像を構成する画素毎に距離が推定されるとともに、当該画素毎に信頼度(当該距離に対する信頼度)が算出される。信頼度は距離に対する妥当性を表現する指標であればよく、当該信頼度の算出方法は、特定の方法に限定されない。すなわち、信頼度は、既知の様々な方法を適用して算出することができる。
なお、距離推定処理においては例えば複数の画素から構成される領域毎に距離が推定されてもよいが、この場合には、信頼度も当該領域毎に算出されればよい。この場合、領域毎に算出される信頼度は、当該領域を構成する複数の画素のうちの代表画素について算出された信頼度であってもよいし、当該領域を構成する複数の画素の各々について算出された信頼度の代表値(例えば、平均値等)であってもよい。
ステップS53において実行される距離推定処理は、信頼度が算出される以外の点では前述した図4に示すステップS3において実行される距離推定処理と同様であるので、ここではその詳しい説明を省略する。
ステップS53の処理が実行されると、領域抽出部105は、ステップS53において距離推定処理が実行されることによって算出された信頼度に基づいて、対象画像(時系列の画像の各々)から高信頼度領域を抽出する(ステップS54)。なお、高信頼度領域とは、例えば予め定められた値(閾値)以上の信頼度が算出された画素を含む領域をいう。具体的には、高信頼度領域は、対象画像を構成する複数の画素のうちの例えば信頼度が閾値未満である画素に対するブール値を0とし、当該ブール値が0である領域をマスク領域として対象画像から分離することで抽出することができる。
次に、位置姿勢補正部104は、位置姿勢補正処理を実行する(ステップS55)。この位置姿勢補正処理においては、ステップS54において抽出された高信頼度領域(を構成する画素について推定された距離)に基づいて、ステップS52において位置姿勢推定処理が実行されることによって推定された移動体1の位置及び姿勢が実スケールに基づく移動体1の位置及び姿勢に補正される(つまり、実スケール化される)。
具体的には、前述した第1実施形態における位置姿勢補正処理(図26に示す処理)においては、第1距離マップをワーピングすることによって生成される第3距離マップと第2距離マップとを比較することによって第2及び第3距離マップを構成する全ての画素について残差が計算されるが、本実施形態においては、第2及び第3距離マップを構成する画素のうち、ステップS54において第1画像から抽出された高信頼度領域以外の領域(マスク領域)を構成する複数の画素及び第2画像から抽出された高信頼度領域以外の領域(マスク領域)を構成する複数の画素について推定された距離については残差を計算しないものとする。
なお、ステップS55において実行される位置姿勢補正処理は、ここで説明した以外の点では前述した図4に示すステップS4(図26に示す処理)と同様であるので、ここではその詳しい説明を省略する。
上記したように本実施形態においては、対象画像に含まれる第1及び第2画像を構成する画素(領域)毎に距離が推定される際に、当該画素毎に推定された距離の各々の信頼度が算出され、当該第1及び第2画像の各々から当該信頼度が予め定められた値以上である距離が推定された領域が抽出される。本実施形態においては、このように第1及び第2画像から抽出された領域に基づいて、位置姿勢推定処理において推定された移動体1の位置及び姿勢(相対的な位置及び姿勢)が実スケールに基づく位置及び姿勢に補正される。
本実施形態においては、上記したように信頼度が高い距離に基づいて移動体1の位置及び姿勢を補正する構成であるため、実スケールに基づくより精度の高い移動体1の位置及び姿勢を得ることが可能となる。
(第3実施形態)
次に、第3実施形態について説明する。図29は、本実施形態に係る位置姿勢推定装置の機能構成の一例を示すブロック図である。なお、前述した図3と同様の部分には同一参照符号を付してその詳しい説明を省略する。ここでは、図3と異なる部分について主に述べる。
なお、本実施形態に係る位置姿勢推定装置において推定される移動体の位置及び姿勢の概要及び当該位置姿勢推定装置のハードウェア構成は、前述した第1実施形態と同様であるため、適宜、図1及び図2を用いて説明する。
図29に示すように、本実施形態に係る位置姿勢推定装置10は、前述した第1実施形態において説明した画像取得部101、位置姿勢推定部102及び位置姿勢補正部104に加えて、第1距離推定部106、第2距離推定部107及び距離補正部108を更に含む。すなわち、本実施形態に係る位置姿勢推定装置10は、第1距離推定部106、第2距離推定部107及び距離補正部108を含む点で前述した第1実施形態とは異なる。
なお、本実施形態において、位置姿勢推定装置10に含まれる第1距離推定部106、第2距離推定部107及び距離補正部108の一部または全ては、CPU11(つまり、位置姿勢推定装置10のコンピュータ)に位置姿勢推定プログラム13Aを実行させること、すなわち、ソフトウェアによって実現されるが、例えばハードウェアによって実現されてもよいし、ソフトウェア及びハードウェアの組み合わせによって実現されてもよい。
第1距離推定部106は、画像取得部101によって取得された時系列の画像の各々に含まれる被写体3までの距離を推定する。なお、距離推定部103によって推定される被写体3までの距離は、実スケールに基づく距離である。
第2距離推定部107は、画像取得部101によって取得された時系列の画像の各々含まれる被写体3までの距離を推定する。なお、距離推定部103によって推定される被写体3までの距離は、スケールが不定な距離(以下、スケール不定の距離と表記)である。本実施形態において、スケール不定の距離とは、当該距離の単位(スケール)が定められていないことを意味し、前述した現実空間で用いられる単位に基づく距離(実スケールに基づく距離)ではないものをいう。
なお、本実施形態において、第1距離推定部106は、前述した第1実施形態における距離推定部103に相当する機能部であり、前述した第1実施形態において説明した距離推定部103と同様の方式で被写体3までの距離を推定するものとする。一方、第2距離推定部107は、第1距離推定部106とは異なる方式で被写体3までの距離を推定するものとする。
距離補正部108は、第2距離推定部107によって推定された距離(スケール不定の距離)を第1距離推定部106によって推定された距離(実スケールに基づく距離)を用いて補正する(実スケール化する)。
次に、図30のフローチャートを参照して、本実施形態に係る位置姿勢推定装置10の処理手順の一例について説明する。
まず、前述した図4に示すステップS1及びS2の処理に相当するステップS61及びS62の処理が実行される。
また、ステップS61の処理が実行されると、第1距離推定部106は、対象画像(時系列の画像の各々)に含まれる被写体3までの距離を推定する処理(以下、第1距離推定処理と表記)を実行する(ステップS63)。なお、このステップS63において実行される第1距離推定処理は前述した第1実施形態において説明した距離推定処理と同様であるため、ここではその詳しい説明を省略する。
更に、ステップS61の処理が実行されると、第2距離推定部107は、対象画像(時系列の画像の各々)に含まれる被写体3までの距離を推定する処理(以下、第2距離推定処理と表記)を実行する(ステップS64)。
なお、この第2距離推定処理は上記した第1距離推定処理とは異なる方式で被写体3までの距離(スケール不定の距離)を推定する処理であればよいが、当該第2距離推定処理においては、第1距離推定処理と同様に、画素毎に距離が推定されるものとする。ただし、第1距離推定処理において例えば複数の画素から構成される領域毎に距離が推定される場合には、第2距離推定処理においても当該領域毎に距離が推定されればよい。すなわち、第2距離推定処理は、第1距離推定処理と同程度の密度で対象画像に含まれる被写体の距離を推定可能であればよい。
具体的には、第2距離推定処理においては、例えば対象画像のコンテクスト情報(対象画像中の線分や色の分布等に関する特徴量または被写体の形状等)を距離の手掛かりとして、1つの画像から距離を推定することが可能な深層学習ベースの推定方式が採用されていてもよい。
また、第2距離推定処理においては、例えば対象画像に含まれる連続する2つの画像間のオプティカルフロー(移動体1が移動することによって生じる被写体の視覚的な流れ)を距離の手掛かりとして、当該2つの画像から距離を推定することが可能な深層学習ベースの推定方式が採用されていてもよい。
すなわち、本実施形態においては、対象画像(時系列の画像)のうちの少なくとも1つの画像を入力することによってスケール不定の距離を出力する深層学習モデルを用いて、当該対象画像に含まれる被写体3までの距離を推定する構成とすることができる。なお、このような深層学習モデルは、距離マップの形式(つまり、マップ形式)で被写体3までの距離を出力するように構築されていてもよい。
また、第2距離推定処理においては、ここで説明した以外の推定方式が採用されていてもよい。
ここで、上記した第1距離推定処理(前述した第1実施形態において説明した距離推定処理)が実行されることによって推定される距離は、比較的高い精度を有する実スケールに基づく距離であるが、当該画素毎に推定される距離の中には精度が低いものも含まれる(つまり、画素毎に推定された全ての距離が正確に実スケールに基づく距離でない場合がある)。
このため、距離補正部108は、ステップS64の処理(第2距離推定処理)が実行されることによって画素毎に推定された距離を、ステップS63の処理(第1距離推定処理)が実行されることによって画素毎に推定された距離を用いて補正する(ステップS65)。このステップS65においては、第2距離推定処理が実行されることによって画素毎に推定された距離(スケール不定の距離)が、第1距離推定処理が実行されることによって画素毎に推定される距離(実スケールに基づく距離)に近づくようなスケール値を算出(最適化)し、当該スケール値を第2距離推定処理が実行されることによって推定された距離に適用することによって、実スケール化された距離を得ることができる。
ステップS65の処理が実行されると、図4に示すステップS4の処理に相当するステップS66の処理が実行される。
なお、上記した図30に示す処理においてステップS62の位置姿勢推定処理、ステップS63の第1距離推定処理及びステップS64の第2距離推定処理は、それぞれ独立して(または並列に)実行可能である。
上記したように本実施形態においては、第1距離推定処理が実行されることによって推定された実スケールに基づく距離に基づいて、第2距離推定処理が実行されることによって推定されたスケール不定の距離(スケールが不定な距離)を補正する構成により、より精度の高い実スケールに基づく距離に基づいて移動体1の位置及び姿勢を補正することが可能となるため、実スケールに基づくより精度の高い移動体1の位置及び姿勢を得ることが可能となる。
また、前述した第2実施形態を本実施形態に適用してもよい。この場合、第1距離推定部106によって画素毎に推定された実スケールに基づく距離のうち、信頼度が予め定められた値以上である距離に基づいて、第2距離推定部107によって推定された距離を補正する構成とすることができる。このような構成の場合には、信頼度が予め定められた値以上である実スケールに基づく距離(第1距離)及び当該距離が推定された画素(領域)について推定されたスケール不定の距離(第2距離)に基づいて、当該スケール不定の距離を実スケールに基づく距離に近づけるためのスケール値が算出されればよい。なお、このように算出されたスケール値を第2距離推定部107によって画素毎に推定された全ての距離に適用すれば、マスク領域(高信頼度領域以外の領域)を構成する画素に対して推定されたスケール不定の距離を補正することも可能である。
また、前述した第2実施形態が本実施形態に適用される場合には、図30に示すステップS66の処理の代わりに、図28に示すステップS55の処理が実行されてもよい。これによれば、更に精度の高い移動体1の位置及び姿勢を得ることができる。
なお、本実施形態においては第2距離推定処理が実行されることによってスケール不定の距離が推定されるものとして説明したが、上記した第1距離推定処理が実行されることによって推定される距離と第2距離推定処理が実行されることによって推定される距離とが互いに補完し合い、より精度の高い実スケールに基づく距離を取得することが可能であれば、第2距離推定処理が実行されることによって推定される距離は実スケールに基づく距離であっても構わない。すなわち、第2距離推定処理が実行されることによって推定される距離は、第1距離推定処理が実行されることによって推定される距離と特性(性質)が異なるものであればよい。
以上述べた少なくとも1つの実施形態によれば、実スケールに基づく移動体の位置及び姿勢を容易に推定することが可能な位置姿勢推定装置、位置姿勢推定方法及びプログラムを提供することにある。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。