(57)【要約】【課題】類似パターンが画像内に多く存在する場合でも、カメラ運動の推定精度を高める。【解決手段】実施形態のカメラ運動推定装置は、第１取得部、第２取得部及び推定部を備える。第１取得部は、時系列の画像に含まれる特徴点間の対応を示す特徴点対応情報を取得する。第２取得部は、時系列の画像に含まれる画素の軌跡を示す画素フロー情報を取得する。推定部は、画素フロー情報と特徴点対応情報とを使用して、時系列の画像を撮像したカメラの運動を推定する。【選択図】図２
2019032751.tif 000002
【特許請求の範囲】
【請求項１】
時系列の画像に含まれる特徴点間の対応を示す特徴点対応情報を取得する第１取得部と、
前記時系列の画像に含まれる画素の軌跡を示す画素フロー情報を取得する第２取得部と、
前記画素フロー情報と前記特徴点対応情報とを使用して、前記時系列の画像を撮像したカメラの運動を推定する推定部と、
を備えるカメラ運動推定装置。
【請求項２】
前記特徴点対応情報から、前記特徴点の移動を示す特徴点移動ベクトルを算出し、前記画素フロー情報から、前記特徴点移動ベクトルの算出に使用された特徴点が位置する画素の移動を示す画素移動ベクトルを算出し、前記特徴点移動ベクトルと前記画素移動ベクトルとの類似度を判定する判定部を更に備え、
前記推定部は、前記類似度が第１閾値以上の場合、前記特徴点移動ベクトルの算出に使用された特徴点の前記時系列の画像間の対応から、前記時系列の画像を撮像したカメラの運動を推定する、
請求項１に記載のカメラ運動推定装置。
【請求項３】
前記第２取得部は、前記時系列の画像を入力とし、前記画像に含まれる画素の軌跡を出力とするニューラルネットワークを用いて、前記画素フロー情報を取得する、
請求項１に記載のカメラ運動推定装置。
【請求項４】
前記ニューラルネットワークは、画素の軌跡を出力するように学習されたフィルタを前記画像にかけることによりフィルタデータを生成する処理と、前記フィルタデータを縮小、増加する処理とを規定回数以上繰り返した後、縮小、増加された前記フィルタデータを元の前記画像の画素数の軌跡データ数に戻す処理を含む、
請求項３に記載のカメラ運動推定装置。
【請求項５】
前記第２取得部は、過去の前記時系列の画像に含まれる被写体を示す第１画素から、前記被写体の３次元位置を算出し、前記カメラの過去の運動から予測される現在の前記カメラの位置及び姿勢における前記被写体の位置を示す第２画素を、前記３次元位置から算出し、前記第１画素と前記第２画素との対応をとることにより、前記画素フロー情報を取得する、
請求項１に記載のカメラ運動推定装置。
【請求項６】
前記第２取得部は、過去の前記時系列の画像に含まれる被写体を示す第１画素から、前記被写体の３次元位置を算出し、前記カメラの位置を示す位置センサと前記カメラの姿勢を示す姿勢センサとから現在の前記カメラの位置及び姿勢を特定し、前記現在の前記カメラの位置及び姿勢における前記被写体の位置を示す第２画素を、前記３次元位置から算出し、前記第１画素と前記第２画素との対応をとることにより、前記画素フロー情報を取得する、
請求項１に記載のカメラ運動推定装置。
【請求項７】
前記判定部は、前記特徴点移動ベクトルと前記画素移動ベクトルのなす角が小さいほど、前記類似度が大きいと判定する、
請求項２に記載のカメラ運動推定装置。
【請求項８】
前記判定部は、前記特徴点移動ベクトルと前記画素移動ベクトルの差を示すベクトルの長さが短いほど、前記類似度が大きいと判定する、
請求項２に記載のカメラ運動推定装置。
【請求項９】
前記判定部は、前記特徴点移動ベクトルと前記画素移動ベクトルの差を示すベクトルの長さが、前記特徴点移動ベクトルの長さと距離比率定数ｂ（０＜ｂ≦１）との積より小さい場合、前記類似度を第２閾値よりも大きくし、前記差を示すベクトルの長さが、前記特徴点移動ベクトルの長さと前記距離比率定数ｂとの積以上の場合、前記類似度を前記第２閾値以下にする、
請求項８に記載のカメラ運動推定装置。
【請求項１０】
前記判定部は、前記特徴点移動ベクトルと前記画素移動ベクトルの差を示すベクトルの長さが、前記画素移動ベクトルの長さと距離比率定数ｂ（０＜ｂ≦１）との積より小さい場合、前記類似度を第２閾値よりも大きくし、前記差を示すベクトルの長さが、前記画素移動ベクトルの長さと前記距離比率定数ｂとの積以上の場合、前記類似度を前記第２閾値以下にする、
請求項８に記載のカメラ運動推定装置。
【請求項１１】
前記特徴点対応情報は、前記特徴点の尤度を含み、
前記推定部は、前記尤度が第３閾値以上の前記特徴点の数が、第４閾値以上である場合、前記画素フロー情報を使用せずに、前記特徴点対応情報に含まれる特徴点の対応から、前記時系列の画像を撮像したカメラの運動を推定する、
請求項１に記載のカメラ運動推定装置。
【請求項１２】
前記特徴点対応情報は、尤度の異なる複数の前記特徴点の候補を含み、
前記判定部は、尤度がより大きい前記特徴点の候補から順に前記類似度を判定し、前記類似度が前記第１閾値未満であると判定された場合、尤度が次に大きい前記特徴点の候補の前記類似度を判定する、
請求項２に記載のカメラ運動推定装置。
【請求項１３】
前記判定部は、前記時系列の画像間で得られた所定の数の前記特徴点移動ベクトルの和を示すベクトルと、前記時系列の画像間で得られた所定の数の前記画素移動ベクトルの和を示すベクトルとの類似度を判定する、
請求項２に記載のカメラ運動推定装置。
【請求項１４】
前記カメラ運動推定装置は、
前記画素フロー情報と前記特徴点対応情報とを使用して、前記時系列の画像を撮像したカメラの運動を推定している状態か否かを示す情報を出力部に出力する出力制御部、
を更に備える請求項１１に記載のカメラ運動推定装置。
【請求項１５】
前記カメラは、移動体に搭載され、
前記カメラ運動推定装置は、
推定された前記カメラの運動を示す情報を、前記移動体の駆動部を駆動させる動力を制御する動力制御部に出力する出力制御部、
を更に備える請求項１に記載のカメラ運動推定装置。
【請求項１６】
時系列の画像に含まれる特徴点間の対応を示す特徴点対応情報を取得するステップと、
前記時系列の画像に含まれる画素の軌跡を示す画素フロー情報を取得するステップと、
前記画素フロー情報と前記特徴点対応情報とを使用して、前記時系列の画像を撮像したカメラの運動を推定するステップと、
を含むカメラ運動推定方法。
【請求項１７】
コンピュータを、
時系列の画像に含まれる特徴点間の対応を示す特徴点対応情報を取得する第１取得部と、
前記時系列の画像に含まれる画素の軌跡を示す画素フロー情報を取得する第２取得部と、
前記画素フロー情報と前記特徴点対応情報とを使用して、前記時系列の画像を撮像したカメラの運動を推定する推定部、
として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態はカメラ運動推定装置、カメラ運動推定方法及びプログラムに関する。
【背景技術】
【０００２】
移動体等に搭載されたカメラは、移動体の運動により位置及び姿勢が変わる。移動体等に搭載されたカメラにより撮像された画像を使用して、カメラの位置及び姿勢を推定する技術が従来から知られている。例えば、複数の画像に含まれる特徴点の対応関係から、エピポーラ拘束を利用して、カメラの運動を推定する技術が従来から知られている。
【０００３】
しかしながら、従来の技術では、類似パターンが画像内に多く存在する場合、カメラ運動の推定精度を高めることが難しかった。例えば１つの物体として切り出しにくい壁等が画像内に多く存在するシーンでは、カメラ運動の推定精度を高めることが難しかった。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平９−２１４９４５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明が解決しようとする課題は、カメラ運動の推定精度を高めるカメラ運動推定装置を提供することである。
【課題を解決するための手段】
【０００６】
実施形態のカメラ運動推定装置は、第１取得部、第２取得部及び推定部を備える。第１取得部は、時系列の画像に含まれる特徴点間の対応を示す特徴点対応情報を取得する。第２取得部は、前記時系列の画像に含まれる画素の軌跡を示す画素フロー情報を取得する。推定部は、前記画素フロー情報と前記特徴点対応情報とを使用して、前記時系列の画像を撮像したカメラの運動を推定する。
【図面の簡単な説明】
【０００７】
【図１】実施形態の移動体の例を示す図。
【図２】実施形態の移動体の機能構成の例を示す図。
【図３】特徴点対応の例を説明するための図。
【図４】実施形態の画素のフロー（軌跡）の例を説明するための図。
【図５】実施形態のカメラ運動と被写体の３次元位置との関係を説明するための図。
【図６】実施形態の特徴点移動ベクトル及び画素移動ベクトルの類似度の判定例を説明するための図。
【図７】実施形態の判定処理の例を示すフローチャート。
【図８】実施形態の効果の例を説明するための図。
【図９】実施形態のカメラ運動推定装置のハードウェア構成の例を示す図。
【発明を実施するための形態】
【０００８】
以下、添付図面を参照して実施形態のカメラ運動推定装置、カメラ運動推定方法及びプログラムについて説明する。
【０００９】
実施形態のカメラ運動推定装置は、例えば移動体に搭載される。
【００１０】
［移動体の例］
図１は実施形態の移動体１０の例を示す図である。
【００１１】
移動体１０は、カメラ運動推定装置２０、出力部１０Ａ、カメラ１０Ｂ、センサ１０Ｃ、動力制御部１０Ｇ及び動力部１０Ｈを備える。
【００１２】
移動体１０は任意でよい。移動体１０は、例えば車両、台車及びロボット等である。車両は、例えば自動二輪車、自動四輪車及び自転車等である。また、移動体１０は、例えば人による運転操作を介して走行する移動体でもよいし、人による運転操作を介さずに自動的に走行（自律走行）可能な移動体でもよい。
【００１３】
カメラ運動推定装置２０は、例えば専用または汎用のコンピュータにより実現される。
【００１４】
なお、カメラ運動推定装置２０は、移動体１０に搭載された形態に限定されない。カメラ運動推定装置２０は、静止物に搭載されていてもよい。静止物は、例えば地面に固定された物等の移動不可能な物である。地面に固定された静止物は、例えばガードレール、ポール、駐車車両及び道路標識等である。また例えば、静止物は、地面に対して静止した状態の物である。また、カメラ運動推定装置２０は、クラウドシステム上で処理を実行するクラウドサーバに搭載されていてもよい。
【００１５】
動力部１０Ｈは、移動体１０に搭載された駆動デバイスである。動力部１０Ｈは、例えば、エンジン、モータ及び車輪等である。
【００１６】
動力制御部１０Ｇは、動力部１０Ｈを制御する。動力制御部１０Ｇの制御によって動力部１０Ｈが駆動する。
【００１７】
出力部１０Ａは情報を出力する。実施形態では、出力部１０Ａは、カメラ運動推定装置２０により推定されたカメラ１０Ｂの運動の推定結果を示す推定結果情報を出力する。
【００１８】
出力部１０Ａは、例えば、推定結果情報を送信する通信機能、推定結果情報を表示する表示機能、及び、推定結果情報を示す音を出力する音出力機能等を備える。出力部１０Ａは、例えば通信部１０Ｄ、ディスプレイ１０Ｅ及びスピーカ１０Ｆの少なくとも１つを備える。なお、実施形態では、出力部１０Ａは、通信部１０Ｄ、ディスプレイ１０Ｅ及びスピーカ１０Ｆを備えた構成を例にして説明する。
【００１９】
通信部１０Ｄは、推定結果情報を他の装置へ送信する。例えば、通信部１０Ｄは、通信回線を介して推定結果情報を他の装置へ送信する。ディスプレイ１０Ｅは、推定結果に関する情報を表示する。ディスプレイ１０Ｅは、例えばＬＣＤ（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ）、投影装置及びライト等である。スピーカ１０Ｆは、推定結果に関する情報を示す音を出力する。
【００２０】
カメラ１０Ｂは、例えば単眼カメラ、ステレオカメラ及び赤外線カメラ等である。カメラ１０Ｂは、移動体１０周辺の時系列の画像を撮像する。時系列の画像は、モノクロであってもよいし、カラーであってもよい。カメラ１０Ｂは、例えば移動体１０の周辺を時系列に撮像することにより、時系列の画像を撮像する。移動体１０の周辺は、例えば当該移動体１０から予め定められた範囲内の領域である。この範囲は、例えばカメラ１０Ｂの撮像可能な範囲である。
【００２１】
実施形態では、カメラ１０Ｂが、移動体１０の前方を撮影方向として含むように設置されている場合を例にして説明する。すなわち、実施形態では、カメラ１０Ｂは、移動体１０の前方を時系列に撮像する。また、実施形態では、カメラ１０Ｂが、単眼のカラーカメラである場合を例にして説明する。
【００２２】
センサ１０Ｃは、測定情報を測定するセンサである。測定情報は、例えばカメラ１０Ｂを搭載する移動体１０の位置及び姿勢、移動体１０の速度、並びに、移動体１０のハンドルの舵角を含む。センサ１０Ｃは、例えば慣性計測装置（ＩＭＵ：Ｉｎｅｒｔｉａｌ  Ｍｅａｓｕｒｅｍｅｎｔ  Ｕｎｉｔ）、速度センサ及び舵角センサ等である。ＩＭＵは、移動体１０の三軸加速度及び三軸角速度を含む測定情報を測定する。すなわち、ＩＭＵにより、カメラ１０Ｂを搭載する移動体１０の位置及び姿勢を測定することができる。速度センサは、タイヤの回転量から速度を測定する。舵角センサは、移動体１０のハンドルの舵角を測定する。
【００２３】
次に、実施形態の移動体１０の機能構成の例について詳細に説明する。
【００２４】
［機能構成の例］
図２は移動体１０の機能構成の例を示す図である。
【００２５】
移動体１０は、カメラ運動推定装置２０、出力部１０Ａ、カメラ１０Ｂ、センサ１０Ｃ、動力制御部１０Ｇ及び動力部１０Ｈを備える。カメラ運動推定装置２０は、処理部２０Ａ及び記憶部２０Ｂを備える。出力部１０Ａは、通信部１０Ｄ、ディスプレイ１０Ｅ及びスピーカ１０Ｆを備える。
【００２６】
処理部２０Ａ、記憶部２０Ｂ、出力部１０Ａ、カメラ１０Ｂ、センサ１０Ｃ及び動力制御部１０Ｇは、バス１０Ｉを介して接続されている。動力部１０Ｈは、動力制御部１０Ｇに接続されている。
【００２７】
なお、出力部１０Ａ（通信部１０Ｄ、ディスプレイ１０Ｅ及びスピーカ１０Ｆ）、カメラ１０Ｂ、センサ１０Ｃ、動力制御部１０Ｇ及び記憶部２０Ｂは、ネットワークを介して接続されていてもよい。接続に使用されるネットワークの通信方式は、有線方式であっても無線方式であってもよい。また、接続に使用されるネットワークは、有線方式と無線方式とを組み合わせることにより実現されていてもよい。
【００２８】
記憶部２０Ｂは情報を記憶する。記憶部２０Ｂは、例えば半導体メモリ素子、ハードディスク及び光ディスク等である。半導体メモリ素子は、例えばＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）及びフラッシュメモリ等である。なお、記憶部２０Ｂは、カメラ運動推定装置２０の外部に設けられた記憶装置であってもよい。また、記憶部２０Ｂは、記憶媒体であってもよい。具体的には、記憶媒体は、プログラムや各種情報を、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）やインターネットなどを介してダウンロードして記憶または一時記憶したものであってもよい。また、記憶部２０Ｂを、複数の記憶媒体から構成してもよい。
【００２９】
処理部２０Ａは、第１取得部２０Ｃ、第２取得部２０Ｄ、判定部２０Ｅ、推定部２０Ｆ及び出力制御部２０Ｇを備える。第１取得部２０Ｃ、第２取得部２０Ｄ、判定部２０Ｅ、推定部２０Ｆ及び出力制御部２０Ｇは、例えば１又は複数のプロセッサにより実現される。
【００３０】
処理部２０Ａは、例えばＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）等のプロセッサにプログラムを実行させること、すなわちソフトウェアにより実現されてもよい。また例えば、処理部２０Ａは、専用のＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）等のプロセッサ、すなわちハードウェアにより実現されてもよい。また例えば、処理部２０Ａは、ソフトウェア及びハードウェアを併用することにより実現されてもよい。
【００３１】
なお、実施形態において用いられる「プロセッサ」の文言は、例えば、ＣＰＵ、ＧＰＵ（Ｇｒａｐｈｉｃａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、特定用途向け集積回路（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ：ＡＳＩＣ）、及び、プログラマブル論理デバイスを含む。プログラマブル論理デバイスは、例えば単純プログラマブル論理デバイス（Ｓｉｍｐｌｅ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  Ｄｅｖｉｃｅ：ＳＰＬＤ）、複合プログラマブル論理デバイス（Ｃｏｍｐｌｅｘ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  Ｄｅｖｉｃｅ：ＣＰＬＤ）、及び、フィールドプログラマブルゲートアレイ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ：ＦＰＧＡ）等を含む。
【００３２】
プロセッサは、記憶部２０Ｂに保存されたプログラムを読み出し実行することで、処理部２０Ａを実現する。なお、記憶部２０Ｂにプログラムを保存する代わりに、プロセッサの回路内にプログラムを直接組み込むよう構成してもよい。この場合、プロセッサは回路内に組み込まれたプログラムを読み出し実行することで、処理部２０Ａを実現する。
【００３３】
第１取得部２０Ｃは、時系列の画像毎に、周囲の画素との輝度の変化が大きい画素を特徴点として検出する。そして、第１取得部２０Ｃは、時系列の画像に含まれる特徴点間の対応を示す特徴点対応情報を取得する。
【００３４】
＜特徴点の対応の例＞
図３は特徴点対応の例を説明するための図である。カメラ１０Ｂにより時刻ｔ−１に撮像された画像は、特徴点１０１を含む。カメラ１０Ｂにより時刻ｔに撮像された画像は、特徴点２０１を含む。図３では、特徴点１０１と特徴点２０１との対応の例として、特徴点１０１ａと特徴点２０１ａとが対応し、特徴点１０１ｂと特徴点２０１ｂとが対応し、特徴点１０１ｃと特徴点２０１ｃとが対応する場合を示す。
【００３５】
ここで、特徴点を対応させる処理の例について説明する。まず、第１取得部２０Ｃは、検出された特徴点の周囲の画素を成分として有する特徴ベクトルＦを算出する。なお、特徴ベクトルＦの成分は、画素の並びそのものではなく、特徴点の特徴を示す情報でもよい。特徴点の特徴を示す情報は、例えば特徴点の周囲領域の輝度の差を０又は１で抽象化して表した情報等である。
【００３６】
次に、第１取得部２０Ｃは、時刻ｔ−１に撮像された画像に含まれる特徴点１０１の特徴ベクトルＦｔ−１と、距離が最も近い特徴ベクトルＦｔを持つ時刻ｔの特徴点２０１とを対応させる。次に、第１取得部２０Ｃは、時刻ｔ−１に撮像された画像に含まれる特徴点１０１と、時刻ｔに撮像された画像に含まれる特徴点２０１との対応を示す特徴点対応情報を、判定部２０Ｅに入力する。特徴点対応情報は、例えば時刻ｔ−１に撮像された画像に含まれる特徴点１０１の座標と、時刻ｔに撮像された画像に含まれる特徴点２０１の座標とを関連付けた情報を含む。
【００３７】
なお上述の図３の例では、時刻ｔ−１に撮像された画像に含まれる特徴点１０１と、時刻ｔに撮像された画像に含まれる特徴点２０１とを対応させる場合について説明した。しかしながら、第１取得部２０Ｃは、１組の画像から得られた１つの特徴点対応情報だけでなく、複数の画像の組み合わせから、複数の特徴点対応情報を取得してもよい。例えば、第１取得部２０Ｃは、時刻ｔ−１に撮像された画像と時刻ｔに撮像された画像との組だけでなく、時刻ｔ−２に撮像された画像と時刻ｔに撮像された画像との組からも特徴点対応情報を取得してもよい。
【００３８】
また、第１取得部２０Ｃは、特徴ベクトルＦｔ−１との距離が近い特徴ベクトルＦｔの順に、特徴点１０１と対応する複数の特徴点２０１の候補を含む特徴点対応情報を取得してもよい。例えば、第１取得部２０Ｃは、特徴ベクトルＦｔ−１Ｆｔ間の距離が最も近い特徴ベクトルＦｔを持つ特徴点２０１と、特徴ベクトルＦｔ−１Ｆｔ間の距離が２番目に近い特徴ベクトルＦｔを持つ特徴点２０１とを、特徴ベクトルＦｔ−１を持つ特徴点１０１に対応させた特徴点対応情報を取得してもよい。
【００３９】
また、第１取得部２０Ｃは、特徴点１０１に、複数の特徴点２０１の候補を対応させる場合、複数の特徴点２０１の候補の尤度を特徴点対応情報に含めてもよい。尤度は、例えば特徴ベクトルＦｔ−１Ｆｔ間の距離の逆数である。
【００４０】
また例えば、尤度は、特徴ベクトルＦｔ−１Ｆｔ間の距離が最も近い特徴ベクトルＦｔと、特徴ベクトルＦｔ−１Ｆｔ間の距離が２番目に近い特徴ベクトルＦｔとの距離の比率である。すなわち、特徴ベクトルＦｔ−１Ｆｔ間の距離が最も近い特徴ベクトルＦｔと、特徴ベクトルＦｔ−１Ｆｔ間の距離が２番目に近い特徴ベクトルＦｔとが異なっているほど、特徴ベクトルＦｔを持つ特徴点２０１の尤度が高いと考えられる。
【００４１】
なお尤度を示す値は、値が大きいほど、尤度が大きいことを示してもよいし、値が小さいほど、尤度が小さいことを示してもよい。実施形態では、値が大きいほど、尤度が大きい場合について説明する。なお、特徴ベクトルＦｔ−１Ｆｔ間の距離をそのまま尤度に使用する等により、値が小さいほど、尤度が小さい場合は、以下に説明する判定処理の閾値の不等号等が逆になる。
【００４２】
図２に戻り、第２取得部２０Ｄは、時系列の画像に含まれる画素の軌跡を示す画素フロー情報を取得する。
【００４３】
＜画素のフローの例＞
図４は実施形態の画素のフロー（軌跡）の例を説明するための図である。第２取得部２０Ｄは、時刻ｔ−１の画像に含まれる全画素１０２について、現在時刻ｔの画像では、どの位置の画素になるかを示す画素の軌跡を取得する。なお、図４の例では、見易さのため、等間隔で表示された画素１０２の軌跡のみを示しているが、実際には、画像に含まれる全画素の軌跡が得られる。
【００４４】
ここで、画素フロー情報を取得する処理の例を２つ説明する。
【００４５】
１つ目の画素フロー情報取得方法は、ニューラルネットワークを用いる方法である。ニューラルネットワークの入力は、例えば時系列の２枚の画像（時刻ｔ−１に撮像された画像、及び、現在時刻ｔに撮像された画像）である。また、ニューラルネットワークの出力は、例えば時刻ｔ−１に撮像された画像に含まれる全画素が、現在時刻ｔの画像では、どの位置の画素になるかを示す画素の軌跡である。
【００４６】
ニューラルネットワークを用いる方法では、フィルタにフローを出力するように学習させておくことで、全画素のフローを算出することができる。具体的には、ニューラルネットワークは、画像にフィルタをかけたフィルタ画像から代表的な部分を抜き出し、画像サイズを縮小したうえでさらにフィルタをかける。なお、フィルタ画像から抜き出される代表的な部分は、ニューラルネットワークが学習により得られた情報から決定する。縮小された画像にフィルタがかけられることにより、フィルタサイズが変更されていなくても相対的に画像の大きな領域にフィルタがかけられるようになり、大域的な情報も使えるようになる。ニューラルネットワークは、規定回数以上フィルタをかける処理と縮小処理とを終えたら、もとのサイズに戻るように拡大処理とフィルタをかける処理を行う。
【００４７】
ここでは、フィルタをかけた結果が画像となる例で説明したが、単純に配置が決まったフィルタデータとして表されてもよい。すなわち、第２取得部２０Ｄは、ニューラルネットワークを用いる場合、画素のフロー（軌跡）を出力するように学習されたフィルタを画像にかけることによりフィルタデータを生成する処理と、フィルタデータを縮小、増加する処理とを規定回数以上繰り返した後、縮小、増加されたフィルタデータを元の画像の画素数分の軌跡データ数に戻す処理を行う。
【００４８】
２つ目の画素フロー情報取得方法は、過去に得られたカメラ１０Ｂの運動の推定結果情報と、被写体の３次元位置とを利用する方法である。
【００４９】
図５は実施形態のカメラ運動と被写体２００の３次元位置との関係を説明するための図である。はじめに、第２取得部２０Ｄは、時刻ｔ−２及び時刻ｔ−１のカメラ１０Ｂの位置及び姿勢、時刻ｔ−２で撮像された画像に含まれる被写体２００の像を示す画素、及び、時刻ｔ−１で撮像された画像に含まれる被写体２００の像を示す画素から、三角測量等により、被写体２００の３次元位置を算出する。
【００５０】
次に、第２取得部２０Ｄは、時刻ｔ−２及び時刻ｔ−１のカメラ１０Ｂの位置及び姿勢から運動モデルを仮定して、現在時刻ｔのカメラ１０Ｂの位置及び姿勢を推定する。運動モデルは、例えば等加速度運動及び等速運動等である。
【００５１】
次に、第２取得部２０Ｄは、被写体２００の３次元位置を、現在時刻ｔのカメラ１０Ｂの位置及び姿勢で撮像される画像上に投影する。以上の動作により、第２取得部２０Ｄは、被写体２００の像を示す画素のフロー（軌跡）を取得することができる。
【００５２】
なお、第２取得部２０Ｄは、現在時刻ｔのカメラ１０Ｂの位置及び姿勢を、上述のセンサ１０Ｃを使用して推定してもよい。
【００５３】
図２に戻り、判定部２０Ｅは、上述の特徴点対応情報から、特徴点の移動を示す特徴点移動ベクトルを算出する。また、判定部２０Ｅは、上述の画素フロー情報から、特徴点移動ベクトルの算出に使用された特徴点が位置する画素の移動を示す画素移動ベクトルを算出する。そして判定部２０Ｅは、特徴点移動ベクトルと画素移動ベクトルとの類似度を判定する。
【００５４】
図６は実施形態の特徴点移動ベクトル２１１及び画素移動ベクトル２１２の類似度の判定例を説明するための図である。Ｐｔ−１（ｍ）は、時刻ｔ−１の画像に含まれる特徴点ｍを示す画素の位置を示す。Ｐｔ（ｍ）は、時刻ｔ−１の画像に含まれる特徴点ｍの特徴ベクトルＦｔ−１と最も類似した特徴ベクトルＦｔを持つ時刻ｔの画像上の特徴点ｍの位置を示す。すなわち、Ｐｔ（ｍ）は、上述の特徴点対応情報から得られる時刻ｔの画像上の特徴点ｍの位置を示す。Ｄｔ（ｍ）は、上述の画素フロー情報によりＰｔ−１（ｍ）から得られる時刻ｔでの特徴点ｍを示す画素の位置を示す。
【００５５】
ここで、特徴点移動ベクトル２１１及び画素移動ベクトル２１２が、図６のようにずれる理由について説明する。理想的には、第１取得部２０Ｃにより取得された特徴点対応情報から得られた特徴点２０１の特徴点移動ベクトル２１１と、第２取得部２０Ｄにより取得された画素フロー情報から得られた当該特徴点２０１の位置を示す画素の画素移動ベクトル２１２とは一致する。しかし上述のように、第２取得部２０Ｄは、画像にフィルタをかけることで得られる画素周辺の大域的な情報から画素のフローを算出したり、カメラ１０Ｂの運動を仮定して画素のフローを算出したりする。すなわち、第２取得部２０Ｄの処理では、画素間の対応を、点同士の対応として直接求めていない。したがって、特徴点移動ベクトル２１１及び画素移動ベクトル２１２が完全に一致することは少ない。
【００５６】
次に、判定部２０Ｅによる類似度の判定方法の例について説明する。
【００５７】
＜ベクトルの方向を利用する場合＞
判定部２０Ｅは、例えば特徴点移動ベクトル２１１と画素移動ベクトル２１２のなす角θが小さいほど、類似度が大きいと判定する。また例えば、判定部２０Ｅは、特徴点移動ベクトル２１１と画素移動ベクトル２１２のなす角θが閾値ａ以下の場合、特徴点移動ベクトル２１１と画素移動ベクトル２１２とが類似すると判定する。判定部２０Ｅは、特徴点移動ベクトル２１１と画素移動ベクトル２１２のなす角θが閾値ａより大きい場合、特徴点移動ベクトル２１１と画素移動ベクトル２１２とが類似しないと判定する。
【００５８】
なお、判定部２０Ｅは、例えば類似する場合を類似度１とし、類似しない場合を類似度０として、類似しているか否かを２値で表現してもよい。
【００５９】
＜ベクトルの長さを利用する場合＞
また例えば、判定部２０Ｅは、特徴点移動ベクトル２１１と画素移動ベクトル２１２の差を示すベクトル２１３の長さｌが、特徴点移動ベクトル２１１の長さＬｐと距離比率定数ｂ（０＜ｂ≦１）との積より小さい場合、特徴点移動ベクトル２１１と画素移動ベクトル２１２とが類似すると判定する。判定部２０Ｅは、差を示すベクトル２１３の長さｌが、特徴点移動ベクトル２１１の長さＬｐと距離比率定数ｂとの積以上の場合、特徴点移動ベクトル２１１と画素移動ベクトル２１２とが類似しないと判定する。
【００６０】
なお、判定部２０Ｅは、特徴点移動ベクトル２１１の長さＬｐではなく、画素移動ベクトル２１２の長さＬＤを使用して、特徴点移動ベクトル２１１と画素移動ベクトル２１２とが類似するか否かを判定してもよい。また、判定部２０Ｅは、特徴点移動ベクトル２１１の長さＬｐ、及び、画素移動ベクトル２１２の長さＬＤの両方を使用して、特徴点移動ベクトル２１１と画素移動ベクトル２１２とが類似するか否かを判定してもよい。
【００６１】
また、判定部２０Ｅは、ベクトルの方向及び長さの両方を利用して、特徴点移動ベクトル２１１と画素移動ベクトル２１２とが類似するか否かを判定してもよい。その場合、判定部２０Ｅは、例えば複数の条件（θ＜ａ、ｌ＜ｂＬｐ及びｌ＜ｂＬＤ）の全てを満たす場合、特徴点移動ベクトル２１１と画素移動ベクトル２１２とが類似すると判定してもよい。また例えば、判定部２０Ｅは、複数の条件（θ＜ａ、ｌ＜ｂＬｐ及びｌ＜ｂＬＤ）のいずれかを満たす場合、特徴点移動ベクトル２１１と画素移動ベクトル２１２とが類似すると判定してもよい。
【００６２】
また、判定部２０Ｅは、特徴点対応情報に尤度の異なる複数の特徴点２０１の候補が含まれる場合、尤度がより大きい特徴点２０１の候補から順に類似度を判定する。そして、判定部２０Ｅは、類似度が閾値未満であると判定された場合、尤度が次に大きい特徴点２０１の候補の類似度を判定する。例えば、判定部２０Ｅは、特徴点対応情報に尤度の異なる２つの特徴点２０１の候補が含まれる場合、まず、尤度が大きい方の特徴点２０１の候補の類似度を判定する。そして、判定部２０Ｅは、類似度が閾値未満であると判定された場合、尤度が小さい方の特徴点２０１の候補の類似度を判定する。これにより、尤度が最大ではない特徴点２０１の候補も、類似度が閾値以上であれば、特徴点１０１に対応する特徴点２０１として使用することができる。すなわち、特徴点対応情報のみを使用する従来の方法では、類似していないと判定されていた特徴点２０１の候補であっても、画素フロー情報も考慮された類似度が閾値以上であれば、特徴点１０１に対応する特徴点２０１として使用することができる。
【００６３】
なお、判定部２０Ｅは、時刻ｔ−１と時刻ｔでの類似度の判定だけでなく、時刻ｔ−１と時刻ｔ、及び、時刻ｔ−２と時刻ｔ等、複数の時刻の組み合わせで類似度を判定してもよい。
【００６４】
なお、類似度の判定に使用される複数の時刻の組み合わせの特徴点対応情報は、例えば第１取得部２０Ｃにより取得されてもよい。また例えば、類似度の判定に使用される複数の時刻の組み合わせの特徴点対応情報は、判定部２０Ｅが、隣り合う時刻間で類似していると判定された判定結果（特徴点の対応）を保持しておき、複数の当該判定結果を関連付けることにより得られてもよい。例えば、判定部２０Ｅは、時刻ｔ−２と時刻ｔ−１の判定結果、及び、時刻ｔ−１と時刻ｔの判定結果を、時刻ｔ−１の特徴点が同一である場合に関連付けることにより、時刻ｔ−２と時刻ｔの判定結果を得てもよい。
【００６５】
同様に、類似度の判定に使用される複数の時刻の組み合わせの画素フロー情報は、例えば第２取得部２０Ｄにより取得されてもよい。また例えば、類似度の判定に使用される複数の時刻の組み合わせの画素フロー情報は、判定部２０Ｅが、判定に使用された隣り合う時刻間の画素フロー情報を保持しておき、複数の当該隣り合う時刻間の画素フロー情報を関連付けることにより得られてもよい。例えば、判定部２０Ｅは、時刻ｔ−２と時刻ｔ−１の間の画素フロー情報、及び、時刻ｔ−１と時刻ｔの間の画像フロー情報を、時刻ｔ−１の画素が同一である画素により関連付けることにより、時刻ｔ−２と時刻ｔの間の画素フロー情報を得てもよい。
【００６６】
また、判定部２０Ｅは、時系列の画像間で得られた所定の数の特徴点移動ベクトル２１１の和を示すベクトルと、時系列の画像間で得られた所定の数の画素移動ベクトル２１２の和を示すベクトルとの類似度を判定してもよい。例えば、判定部２０Ｅは、所定の数が２である場合、時刻ｔ−２と時刻ｔ−１での特徴点移動ベクトル２１１、及び、時刻ｔ−１と時刻ｔでの特徴点移動ベクトル２１１の和を示すベクトルと、時刻ｔ−２と時刻ｔ−１での画素移動ベクトル２１２、及び、時刻ｔ−１と時刻ｔでの画素移動ベクトル２１２の和を示すベクトルとを使用して、類似度を判定してもよい。
【００６７】
図２に戻り、推定部２０Ｆは、判定部２０Ｅにより判定された類似度が閾値以上の場合、特徴点移動ベクトル２１１の算出に使用された特徴点の時系列の画像間の対応から、時系列の画像を撮像したカメラの運動を推定する。推定部２０Ｆは、例えば特徴点移動ベクトル２１１の算出に使用された時刻ｔの特徴点２０１と、時刻ｔ−１の特徴点１０１との対応から、時刻ｔ−１の画像、及び、時刻ｔの画像を撮像したカメラの運動を推定する。なお、推定部２０Ｆは、時刻ｔ−２と時刻ｔ−１、及び、時刻ｔ−１と時刻ｔ等、複数の特徴点対応を使用して、時系列の画像を撮像したカメラ１０Ｂの運動を推定してもよい。
【００６８】
なお、カメラ１０Ｂの運動の具体的な推定方法は任意でよい。推定部２０Ｆは、例えば複数の特徴点対応と、特徴点の３次元位置とが得られている場合、当該複数の特徴点対応と、過去のカメラ１０Ｂの運動から推定される運動の初期位置から計算される特徴点の投影位置との差が最も小さくなるように運動を推定していき、差が収束した時点での運動を推定結果として出力する。また例えば、推定部２０Ｆは、特徴点の３次元位置が得られていない場合、エピポーラ拘束を使用して、カメラ１０Ｂの運動を推定する。
【００６９】
なお、推定部２０Ｆは、特徴点対応情報に含まれる特徴点の数が個数閾値以上である場合、画素フロー情報を使用せずに、特徴点対応情報に含まれる特徴点の対応から、時系列の画像を撮像したカメラ１０Ｂの運動を推定してもよい。なお、特徴点の数が個数閾値以上であるか否かを判定する処理は、例えば上述の判定部２０Ｅにより実行される。
【００７０】
また、推定部２０Ｆは、特徴点対応情報に特徴点の尤度が含まれる場合、尤度が尤度閾値以上の特徴点の数が個数閾値以上である場合、画素フロー情報を使用せずに、特徴点対応情報に含まれる特徴点の対応から、時系列の画像を撮像したカメラ１０Ｂの運動を推定してもよい。なお、尤度が尤度閾値以上の特徴点の数が個数閾値以上であるか否かを判定する処理は、例えば上述の判定部２０Ｅにより実行される。
【００７１】
なお、推定部２０Ｆは、特徴点対応情報に特徴点の尤度が含まれる場合、特徴点毎に、尤度が尤度閾値以上の場合、画素フロー情報を使用せずに、特徴点対応情報に含まれる特徴点の対応から、時系列の画像を撮像したカメラ１０Ｂの運動を推定してもよい。なお、尤度が尤度閾値以上であるか否かを判定する処理は、例えば上述の判定部２０Ｅにより実行される。
【００７２】
出力制御部２０Ｇは、推定部２０Ｆにより推定されたカメラ１０Ｂの運動を示す推定結果情報を、出力部１０Ａ及び動力制御部１０Ｇに出力する。
【００７３】
なお、推定結果情報に、画素フロー情報と特徴点対応情報とを使用して、カメラ１０Ｂの運動を推定しているか否かを示す情報が含まれていてもよい。これにより、出力部１０Ａは、例えば特徴点対応情報のみからカメラ１０Ｂの運動が推定されている状態、又は、画素フロー情報と特徴点対応情報とからカメラ１０Ｂの運動が推定されている状態を示す情報を出力することができる。
【００７４】
動力制御部１０Ｇは、出力制御部２０Ｇから受け付けた推定結果情報に応じて、動力部１０Ｈを制御する。例えば、動力制御部１０Ｇは、推定結果情報に応じて、動力部１０Ｈを制御するための動力制御信号を生成し、動力部１０Ｈを制御してもよい。動力制御信号は、動力部１０Ｈにおける、移動体１０の走行に関する駆動を行う駆動部を制御するための制御信号である。具体的には、動力制御部１０Ｇは、例えば推定結果情報により特定されるカメラ１０Ｂを搭載する移動体１０の位置と、カメラ１０Ｂの運動の推定に使用された被写体２００の３次元位置とから、被写体２００を障害物として回避する回避動作を補助する動力制御をしてもよい。回避動作を補助する動力制御は、例えば操舵角の増減値に基準値よりも大きい回避動作用の値を使用する動力制御、及び、ブレーキをかけることを想定した動力制御等である。
【００７５】
なお、上述の図２の機能構成は一例であり、機能構成は変更されてもよい。例えば上述の判定部２０Ｅ及び推定部２０Ｆを１つの機能ブロックにより実現してもよい。
【００７６】
次に、フローチャートを参照して、実施形態の判定処理の例について説明する。
【００７７】
図７は実施形態の判定処理の例を示すフローチャートである。図７の例では、時刻ｔ−１で撮像された画像に含まれる特徴点１０１と、時刻ｔで撮像された画像に含まれる特徴点２０１との対応をとる場合を例にして説明する。
【００７８】
はじめに、判定部２０Ｅが、時刻ｔに撮像された画像に含まれる特徴点２０１の尤度が閾値未満であるか否かを判定する（ステップＳ１）。
【００７９】
特徴点２０１の尤度が閾値未満である場合（ステップＳ１，Ｙｅｓ）、判定部２０Ｅが、上述の特徴点移動ベクトル２１１、及び、上述の画素移動ベクトル２１２を算出する（ステップＳ２）。次に、判定部２０Ｅが、ステップＳ２の処理により算出された特徴点移動ベクトル２１１及び画素移動ベクトル２１２の類似度が閾値以上であるか否かを判定する（ステップＳ３）。
【００８０】
特徴点２０１の類似度が閾値以上でない場合（ステップＳ３，Ｎｏ）、推定部２０Ｆが、ステップＳ３の処理により類似度が閾値以上でないと判定された特徴点２０１を、カメラ１０Ｂの運動の推定に使用しない（ステップＳ５）。
【００８１】
特徴点２０１の尤度が閾値未満でない場合（ステップＳ１，Ｎｏ）、又は、特徴点２０１の類似度が閾値以上である場合（ステップＳ３，Ｙｅｓ）、推定部２０Ｆが、当該特徴点２０１を使用して、カメラ１０Ｂの運動を推定する（ステップＳ４）。
【００８２】
＜効果の例＞
図８は実施形態の効果の例を説明するための図である。時刻ｔに撮像された画像に含まれる特徴点２０１ｄ及び２０１ｅは、道路上の横断歩道のエッジ部分である。しかしながら、周囲の状況が類似しているため、時刻ｔ−１に撮像された画像に含まれる特徴点１０１との対応が一意にとれない可能性がある。そのため、特徴点２０１ｄ及び２０１ｅの尤度が閾値よりも低くなり、従来の方法では、特徴点２０１ｄ及び２０１ｅがカメラの運動の推定に使用されない可能性がある。一方、実施形態のカメラ運動推定装置２０では、特徴点２０１ｄの尤度が閾値未満の場合でも、判定部２０Ｅが、特徴点対応情報に基づく特徴点移動ベクトル２１１、及び、画素フロー情報に基づく画素移動ベクトル２１２の類似度が閾値以上であれば、特徴点２０１ｄがカメラ運動の推定に使用される。特徴点２０１ｅについても同様である。実施形態のカメラ運動推定装置２０によれば、類似パターンが画像内に多く存在する場合でも、カメラ運動の推定精度を高めることができる。
【００８３】
最後に、実施形態のカメラ運動推定装置２０のハードウェア構成の例について説明する。
【００８４】
［ハードウェア構成の例］
図９は実施形態のカメラ運動推定装置２０のハードウェア構成の例を示す図である。カメラ運動推定装置２０は、制御装置３０１、主記憶装置３０２、補助記憶装置３０３、表示装置３０４、入力装置３０５及び通信装置３０６を備える。制御装置３０１、主記憶装置３０２、補助記憶装置３０３、表示装置３０４、入力装置３０５及び通信装置３０６は、バス３１０を介して接続されている。
【００８５】
なお、表示装置３０４、入力装置３０５及び通信装置３０６は備えていなくてもよい。例えば、カメラ運動推定装置２０が他の装置と接続される場合、当該他の装置の表示機能、入力機能及び通信機能を利用してもよい。
【００８６】
制御装置３０１は補助記憶装置３０３から主記憶装置３０２に読み出されたプログラムを実行する。制御装置３０１は、例えばＣＰＵ等の１以上のプロセッサである。主記憶装置３０２はＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、及び、ＲＡＭ等のメモリである。補助記憶装置３０３はメモリカード、及び、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）等である。
【００８７】
表示装置３０４は情報を表示する。表示装置３０４は、例えば液晶ディスプレイである。入力装置３０５は、情報の入力を受け付ける。入力装置３０５は、例えばハードウェアキー等である。なお表示装置３０４及び入力装置３０５は、表示機能と入力機能とを兼ねる液晶タッチパネル等でもよい。通信装置３０６は他の装置と通信する。
【００８８】
カメラ運動推定装置２０で実行されるプログラムは、インストール可能な形式又は実行可能な形式のファイルでＣＤ−ＲＯＭ、メモリカード、ＣＤ−Ｒ、及び、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｃ）等のコンピュータで読み取り可能な記憶媒体に記憶されてコンピュータ・プログラム・プロダクトとして提供される。
【００８９】
またカメラ運動推定装置２０で実行されるプログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成してもよい。またカメラ運動推定装置２０が実行するプログラムを、ダウンロードさせずにインターネット等のネットワーク経由で提供するように構成してもよい。
【００９０】
またカメラ運動推定装置２０で実行されるプログラムを、ＲＯＭ等に予め組み込んで提供するように構成してもよい。
【００９１】
カメラ運動推定装置２０で実行されるプログラムは、カメラ運動推定装置２０の機能のうち、プログラムにより実現可能な機能を含むモジュール構成となっている。
【００９２】
プログラムにより実現される機能は、制御装置３０１が補助記憶装置３０３等の記憶媒体からプログラムを読み出して実行することにより、主記憶装置３０２にロードされる。すなわちプログラムにより実現される機能は、主記憶装置３０２上に生成される。
【００９３】
なおカメラ運動推定装置２０の機能の一部を、ＩＣ等のハードウェアにより実現してもよい。ＩＣは、例えば専用の処理を実行するプロセッサである。
【００９４】
また複数のプロセッサを用いて各機能を実現する場合、各プロセッサは、各機能のうち１つを実現してもよいし、各機能のうち２つ以上を実現してもよい。
【００９５】
以上説明したように、実施形態のカメラ運動推定装置２０では、第１取得部２０Ｃが、時系列の画像に含まれる特徴点間の対応を示す特徴点対応情報を取得する。第２取得部２０Ｄが、時系列の画像に含まれる画素の軌跡を示す画素フロー情報を取得する。そして、判定部２０Ｅ及び推定部２０Ｆが、画素フロー情報と特徴点対応情報とを使用して、時系列の画像を撮像したカメラの運動を推定する。
【００９６】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００９７】
１０  移動体
１０Ａ  出力部
１０Ｂ  カメラ
１０Ｃ  センサ
１０Ｄ  通信部
１０Ｅ  ディスプレイ
１０Ｆ  スピーカ
１０Ｇ  動力制御部
１０Ｈ  動力部
２０  カメラ運動推定装置
２０Ｃ  第１取得部
２０Ｄ  第２取得部
２０Ｅ  判定部
２０Ｆ  推定部
２０Ｇ  出力制御部
３０１  制御装置
３０２  主記憶装置
３０３  補助記憶装置
３０４  表示装置
３０５  入力装置
３０６  通信装置
３１０  バス
【図１】
2019032751.tif 000003
【図２】
2019032751.tif 000004
【図３】
2019032751.tif 000005
【図４】
2019032751.tif 000006
【図５】
2019032751.tif 000007
【図６】
2019032751.tif 000008
【図７】
2019032751.tif 000009
【図８】
2019032751.tif 000010
【図９】
2019032751.tif 000011