(57)【要約】【課題】３次元データの生成において、位置を精度よく計算できることを目的とする。【解決手段】被写体を含む周辺を撮像する複数の撮像装置に接続される画像処理装置が、前記撮像装置から画像データをそれぞれ取得し、前記撮像装置を駆動させ、前記画像データから特徴点を算出し、前記駆動による駆動量に基づいて前記特徴点の算出結果を補正し、前記補正によって補正された特徴点に基づいてそれぞれオプティカルフローを計算し、前記補正によって補正された特徴点に基づいてそれぞれの前記撮像装置の角度及び位置を示すポーズをそれぞれ計算し、前記オプティカルフロー及び前記ポーズに基づいて前記被写体の３次元座標を計算し、前記３次元座標に基づいて前記周辺を示す３次元データを生成することにより上記課題を解決する。【選択図】図１
2017208038.tif 000002
【特許請求の範囲】
【請求項１】
被写体を含む周辺を撮像する複数の撮像装置に接続される画像処理装置であって、
前記撮像装置から画像データをそれぞれ取得する取得部と、
前記撮像装置を駆動させる駆動部と、
前記画像データから特徴点を算出し、前記駆動による駆動量に基づいて前記特徴点の算出結果を補正する補正部と、
前記補正によって補正された特徴点に基づいてそれぞれオプティカルフローを計算するオプティカルフロー計算部と、
前記補正によって補正された特徴点に基づいてそれぞれの前記撮像装置の角度及び位置を示すポーズをそれぞれ計算するポーズ計算部と、
前記オプティカルフロー及び前記ポーズに基づいて前記被写体の３次元座標を計算する３次元座標計算部と、
前記３次元座標に基づいて前記周辺を示す３次元データを生成する生成部と
を含む画像処理装置。
【請求項２】
それぞれの前記３次元座標について、同一の被写体を示す前記３次元座標をマッチングさせるマッチング部を更に含む請求項１に記載の画像処理装置。
【請求項３】
前記マッチングに基づいて、前記３次元座標のデータを削除する削除部を更に含む請求項２に記載の画像処理装置。
【請求項４】
前記補正部は、前記駆動量、前記撮像装置の画角及び前記画像データの画素数に基づいて補正量を計算する請求項１乃至３のいずれか１項に記載の画像処理装置。
【請求項５】
前記補正部は、前記ポーズの更新を停止させる請求項１乃至３のいずれか１項に記載の画像処理装置。
【請求項６】
１以上の情報処理装置を有し、かつ、被写体を含む周辺を撮像する複数の撮像装置に接続される画像処理システムであって、
前記撮像装置から画像データをそれぞれ取得する取得部と、
前記撮像装置を駆動させる駆動部と、
前記画像データから特徴点を算出し、前記駆動による駆動量に基づいて前記特徴点の算出結果を補正する補正部と、
前記補正によって補正された特徴点に基づいてそれぞれオプティカルフローを計算するオプティカルフロー計算部と、
前記補正によって補正された特徴点に基づいてそれぞれの前記撮像装置の角度及び位置を示すポーズをそれぞれ計算するポーズ計算部と、
前記オプティカルフロー及び前記ポーズに基づいて前記被写体の３次元座標を計算する３次元座標計算部と、
前記３次元座標に基づいて前記周辺を示す３次元データを生成する生成部と
を含む画像処理システム。
【請求項７】
被写体を含む周辺を撮像する複数の撮像装置に接続される画像処理装置が行う画像処理方法であって、
前記画像処理装置が、前記撮像装置から画像データをそれぞれ取得する取得手順と、
前記画像処理装置が、前記撮像装置を駆動させる駆動手順と、
前記画像処理装置が、前記画像データから特徴点を算出し、前記駆動による駆動量に基づいて前記特徴点の算出結果を補正する補正手順と、
前記画像処理装置が、前記補正によって補正された特徴点に基づいてそれぞれオプティカルフローを計算するオプティカルフロー計算手順と、
前記画像処理装置が、前記補正によって補正された特徴点に基づいてそれぞれの前記撮像装置の角度及び位置を示すポーズをそれぞれ計算するポーズ計算手順と、
前記画像処理装置が、前記オプティカルフロー及び前記ポーズに基づいて前記被写体の３次元座標を計算する３次元座標計算手順と、
前記画像処理装置が、前記３次元座標に基づいて前記周辺を示す３次元データを生成する生成手順と
を含む画像処理方法。
【請求項８】
被写体を含む周辺を撮像する複数の撮像装置に接続されるコンピュータに画像処理方法を実行させるためのプログラムであって、
前記コンピュータが、前記撮像装置から画像データをそれぞれ取得する取得手順と、
前記コンピュータが、前記撮像装置を駆動させる駆動手順と、
前記コンピュータが、前記画像データから特徴点を算出し、前記駆動による駆動量に基づいて前記特徴点の算出結果を補正する補正手順と、
前記コンピュータが、前記補正によって補正された特徴点に基づいてそれぞれオプティカルフローを計算するオプティカルフロー計算手順と、
前記コンピュータが、前記補正によって補正された特徴点に基づいてそれぞれの前記撮像装置の角度及び位置を示すポーズをそれぞれ計算するポーズ計算手順と、
前記コンピュータが、前記オプティカルフロー及び前記ポーズに基づいて前記被写体の３次元座標を計算する３次元座標計算手順と、
前記コンピュータが、前記３次元座標に基づいて前記周辺を示す３次元データを生成する生成手順と
を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置、画像処理方法、画像処理システム及びプログラムに関する。
【背景技術】
【０００２】
従来、車両等の移動体に複数のカメラを取り付け、それぞれのカメラによって撮像された画像を用いて、移動体の周辺環境を３次元的に認識する方法が知られている。
【０００３】
さらに、移動体の周辺環境のうち、撮像された画像に基づくいわゆるオプティカルフロー（ｏｐｔｉｃａｌ  ｆｌｏｗ）によって、移動体の運動量を推定する方法が知られている。
【０００４】
例えば、移動体の運動量を推定する方法において、まず、画像におけるオプティカルフローの向きに基づいてサンプリングされた特徴点がグループに振り分けられる。次に、振り分けられた特徴点を収束させて基礎行列が求められ、求められた基礎行列に基づいて、移動体の運動量を推定する方法が知られている（例えば、特許文献１参照）。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、画像にノイズ（ｎｏｉｓｅ）の入力、画像の分解能不足、又は遮蔽物の写り込み等が起きた場合、被写体を追跡できない場合がある。ゆえに、３次元データの生成において、被写体の位置が精度よく計算されない場合がある。
【０００６】
本発明の１つの側面は、３次元データの生成において、被写体の位置を精度よく計算できる画像処理装置を提供することを目的とする。
【課題を解決するための手段】
【０００７】
一態様における、被写体を含む周辺を撮像する複数の撮像装置に接続される画像処理装置は、
前記撮像装置から画像データをそれぞれ取得する取得部と、
前記撮像装置を駆動させる駆動部と、
前記画像データから特徴点を算出し、前記駆動による駆動量に基づいて前記特徴点の算出結果を補正する補正部と、
前記補正によって補正された特徴点に基づいてそれぞれオプティカルフローを計算するオプティカルフロー計算部と、
前記補正によって補正された特徴点に基づいてそれぞれの前記撮像装置の角度及び位置を示すポーズをそれぞれ計算するポーズ計算部と、
前記オプティカルフロー及び前記ポーズに基づいて前記被写体の３次元座標を計算する３次元座標計算部と、
前記３次元座標に基づいて前記周辺を示す３次元データを生成する生成部と
を含むことを特徴とする。
【発明の効果】
【０００８】
３次元データの生成において、被写体の位置を精度よく計算できる。
【図面の簡単な説明】
【０００９】
【図１】本発明の一実施形態に係る画像処理システムの全体構成の一例を示す全体構成図である。
【図２】本発明の一実施形態に係る画像処理装置のハードウェア構成の一例を示すブロック図である。
【図３】本発明の一実施形態に係る画像処理装置による全体処理の一例を示すフローチャートである。
【図４】本発明の一実施形態に係る画像処理装置によるカメラのポーズの計算の一例を示す図である。
【図５】本発明の一実施形態に係るピンホールカメラモデルの一例を示す図である。
【図６】本発明の一実施形態に係る３次元座標の計算の一例を示す図である。
【図７】本発明の一実施形態に係る３次元データの一例を示す図である。
【図８】本発明の一実施形態に係る画像処理装置による全体処理の処理結果の一例を示す図である。
【図９】本発明の一実施形態に係る遮蔽物の一例を示す図である。
【図１０】本発明の一実施形態に係る画像処理装置によるマッチングの一例を示す図である。
【図１１】本発明の一実施形態に係る第２実施形態の画像処理システムの全体構成の一例を示す全体構成図である。
【図１２】本発明の一実施形態に係る第２実施形態の画像処理装置による全体処理の処理結果の一例を示す図である。
【図１３】本発明の一実施形態に係る第２実施形態の画像処理装置によって計算される３次元座標の一例を示す図である。
【図１４】本発明の一実施形態に係る画像処理装置の機能構成の一例を示す機能ブロック図である。
【図１５】本発明の一実施形態に係る第３実施形態の画像処理システムの全体構成の一例を示す全体構成図である。
【図１６】本発明の一実施形態に係る第３実施形態の画像処理装置による全体処理の一例を示すフローチャートである。
【図１７】本発明の一実施形態に係る第３実施形態においてカメラが駆動する前に撮像される画像データの一例を示す図である。
【図１８】本発明の一実施形態に係る第３実施形態においてカメラの駆動例及びカメラが駆動した後に撮像される画像データの一例を示す図である。
【図１９】本発明の一実施形態に係る第３実施形態においてカメラの回転の駆動例を示す図である。
【図２０】本発明の一実施形態に係る第３実施形態の画像処理装置による全体処理の処理結果例及び効果例を示す図である。
【図２１】本発明の一実施形態に係る第３実施形態におけるカメラ駆動量に基づく補正を示す図である。
【図２２】本発明の一実施形態に係る第３実施形態における画像処理装置の機能構成の一例を示す機能ブロック図である。
【発明を実施するための形態】
【００１０】
以下、本発明の実施の形態について説明する。
【００１１】
（第１実施形態）
（全体構成例）
図１は、本発明の一実施形態に係る画像処理システムの全体構成の一例を示す全体構成図である。具体的には、図１は、撮像装置としてカメラを使用する例であり、画像処理システム１が有する第１カメラ１０及び第２カメラ１１を移動体の一例である車両２に設置した例である。
【００１２】
以下、図１では、車両２の進行方向をＺ軸とする。さらに、図示するように、第１カメラ１０の光軸１０Ｚは、Ｚ軸と同一方向とし、これに対して、第２カメラ１１の光軸１１Ｚは、Ｚ軸と反対方向となるように設置される例で説明する。
【００１３】
なお、画像処理システム１は、３つ以上のカメラを有してもよい。
【００１４】
図２は、本発明の一実施形態に係る画像処理装置のハードウェア構成の一例を示すブロック図である。具体的には、画像処理装置１００は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１００Ｈ１と、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）１００Ｈ２と、記憶装置１００Ｈ３と、入出力Ｉ／Ｆ（ｉｎｔｅｒｆａｃｅ）１００Ｈ４とを有する。
【００１５】
ＣＰＵ１００Ｈ１は、画像処理装置１００が行う画像処理に係る各種処理及び画像データ等の各種データの加工を行う演算装置である。さらに、ＣＰＵ１００Ｈ１は、画像処理装置１００が有する装置等を制御する制御装置である。
【００１６】
ＡＳＩＣ１００Ｈ２は、画像処理装置１００が行う画像処理に係る各種処理及び画像データ等の各種データの加工を行う電子回路である。なお、ＡＳＩＣ１００Ｈ２は、ＦＰＧＡ（Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）等のＰＬＤ（Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  Ｄｅｖｉｃｅ）でもよい。
【００１７】
記憶装置１００Ｈ３は、画像処理装置１００が使うデータ、プログラム、及び設定値等を記憶する。また、記憶装置１００Ｈ３は、いわゆるメモリ（ｍｅｍｏｒｙ）等である。なお、記憶装置１００Ｈ３は、ハードディスク（ｈａｒｄｄｉｓｋ）等の補助記憶装置等を有してもよい。
【００１８】
入出力Ｉ／Ｆ１００Ｈ４は、画像処理装置１００にデータを入出力するインタフェースである。具体的には、入出力Ｉ／Ｆ１００Ｈ４は、コネクタ等である。なお、入出力Ｉ／Ｆ１００Ｈ４は、ネットワーク又は無線等を使用してもよい。
【００１９】
また、画像処理装置１００は、ＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）等の情報処理装置でもよい。
【００２０】
画像処理システム１は、画像処理装置１００を有し、画像処理装置１００は、図１に示す第１カメラ１０及び第２カメラ１１に接続される。なお、画像処理装置１００は、ネットワークを介して他の１以上の情報処理装置と接続され、各種処理の全部又は一部を分散、並列、又は冗長して処理を行ってもよい。
【００２１】
以下、ロボット又は車両等の移動体の位置を推定するＳＬＡＭ（Ｓｉｍｕｌｔａｎｅｏｕｓ  Ｌｏｃａｌｉｚａｔｉｏｎ  Ａｎｄ  Ｍａｐｐｉｎｇ）においてカメラを使うＶｉｓｕａｌ  ＳＬＡＭについて説明する。具体的には、Ｖｉｓｕａｌ  ＳＬＡＭでは、カメラによって撮像された画像データに基づいて移動体の周辺を示す地図が生成され、移動体の位置が推定される。即ち、Ｖｉｓｕａｌ  ＳＬＡＭでは、移動体の周辺を示す地図及び移動体の位置を示す３次元データが生成される。
【００２２】
（全体処理例）
図３は、本発明の一実施形態に係る画像処理装置による全体処理の一例を示すフローチャートである。
【００２３】
（初期値の入力例（ステップＳ１））
ステップＳ１では、画像処理装置は、３次元データの初期値を入力する。
【００２４】
例えば、初期値となる３次元データは、ステレオカメラ等によって生成される。なお、３次元データは、レーダ等を用いて距離を計測するセンサ、速度を計測するセンサ、加速度センサ、ジャイロ（ｇｙｒｏ）センサ、ＧＰＳ（Ｇｌｏｂａｌ  Ｐｏｓｉｔｉｏｎｉｎｇ  Ｓｙｓｔｅｍ）、又はこれらを組み合わせたシステムによって生成されてもよい。また、３次元データの初期値は、画像処理システム１（図１）が有するカメラから取得される画像データ等から生成されてもよい。
【００２５】
（画像データの取得例（ステップＳ２））
ステップＳ２では、画像処理装置は、それぞれのカメラから画像データを取得する。具体的には、画像処理装置は、第１カメラ１０（図１）及び第２カメラ１１（図２）からそれぞれ画像データを取得する。
【００２６】
（特徴点の算出例（ステップＳ３））
ステップＳ３では、画像処理装置は、画像データ内に含まれる特徴点を画像データごとにそれぞれ算出する。具体的には、ステップＳ３では、画像処理装置は、Ｈａｒｒｉｓ行列等によって、ステップＳ２で取得されるそれぞれの画像データ内に含まれる特徴点を算出する。
【００２７】
（オプティカルフローの計算例（ステップＳ４））
ステップＳ４では、画像処理装置は、ステップＳ３で算出される特徴点のオプティカルフローを画像データごとにそれぞれ計算する。具体的には、ステップＳ４では、画像処理装置は、勾配法又はＬｕｃａｓ−Ｋａｎａｄｅ法等によって、オプティカルフローをそれぞれ計算する。
【００２８】
オプティカルフローは、連続して撮像される複数枚の静止画又は動画において、撮像される被写体の動きをベクトルで示す。即ち、同一の被写体が複数のフレームでそれぞれ撮像され、オプティカルフローが計算されると、被写体が有する特徴点の軌跡がオプティカルフローとして示される。
【００２９】
（カメラのポーズの計算例（ステップＳ５））
ステップＳ５では、画像処理装置は、ステップＳ４で計算されるオプティカルフローに基づいてカメラのポーズを計算する。
【００３０】
図４は、本発明の一実施形態に係る画像処理装置によるカメラのポーズの計算の一例を示す図である。具体的には、図４（Ａ）は、カメラが位置ＰＡから位置ＰＢに移動する例を示す図である。なお、位置ＰＡで撮像される画像を画像Ｉｍｇ１とし、位置ＰＢで撮像される画像を画像Ｉｍｇ２とする。また、画像Ｉｍｇ１の次のフレームで画像Ｉｍｇ２が撮像されるとする。
【００３１】
また、カメラのポーズは、例えば、６ＤＯＦ（Ｄｅｇｒｅｅｓ  Ｏｆ  Ｆｒｅｅｄｏｍ、自由度）で示される。即ち、カメラのポーズは、ＸＹＺ軸に対するそれぞれの位置及びＸＹＺ軸に対するそれぞれの角度で示される。
【００３２】
具体的には、図４（Ｂ）で示すように、３次元上の点Ｐ２、点Ｐ３、点Ｐ４、及び点Ｐ５のそれぞれの被写体が、画像Ｉｍｇ１及び画像Ｉｍｇ２にそれぞれ撮像される。次に、画像処理装置は、画像Ｉｍｇ１及び画像Ｉｍｇ２から特徴点ＦＰ２、特徴点ＦＰ３、特徴点ＦＰ４、及び特徴点ＦＰ５をステップＳ３の処理により、それぞれ算出する。また、図４（Ｂ）で示すように、画像処理装置は、特徴点ＦＰ２、特徴点ＦＰ３、特徴点ＦＰ４、及び特徴点ＦＰ５のそれぞれの各特徴点から位置ＰＡ及び位置ＰＢをそれぞれ計算することができる。
【００３３】
具体的には、カメラのポーズを示す位置ＰＡ及び位置ＰＢは、例えば各特徴点から下記（式１）に基づいてそれぞれ計算される。即ち、下記（式１）で示すように、カメラのポーズは、各特徴点の投影点の座標ｘ及び各投影点が実際に観測される座標ｘ'の差をそれぞれ計算し、それぞれの差の総和が最小となる位置である。
【００３４】
【数１】
2017208038.tif 000003
なお、上記（式１）では、Ｐは、射影行列を示す。また、ｉは、図４（Ｂ）に示す各特徴点を特定する値であり、Ｘｗは、３次元座標系である世界座標系での座標を示す。さらに、[Ｒ｜ｔ]は、座標を世界座標系から画像上の２次元座標系であるカメラ座標系に変換する変換行列である。
【００３５】
図５は、本発明の一実施形態に係るピンホールカメラモデルの一例を示す図である。例えば、図５（Ａ）に示すピンホールモデルでは、図５（Ｂ）に示すような関係で、世界座標系及びカメラ座標系の関係が示せる。なお、図５（Ａ）では、レンズＬＺの右側が世界座標系ＣＲ＿Ｗである。これに対して、レンズＬＺの左側がカメラ座標系ＣＲ＿Ｃである。
【００３６】
上記（式１）での射影行列Ｐは、図５（Ｂ）の行列Ａと、図５（Ｃ）に示すアスペクト比等のカメラの内部パラメータから定まる行列とを乗算して求める。
【００３７】
また、上記（式１）では、求める位置ＰＡ（図４）及び位置ＰＢ（図４）は、［Ｒ｜ｔ］によってそれぞれ示される。また、［Ｒ｜ｔ］は、例えば下記（式２）のように示せる。
【００３８】
【数２】
2017208038.tif 000004
上記（式１）では、実際に観測される座標ｘ'は、オプティカルフローに基づいて求められる。なお、実際に観測される座標ｘ'は、観測の対象となる特徴点が動いたり、異なる３次元座標と対応してしまう場合もあるため、フレームごとに計算されるのが好ましい。即ち、画像処理装置は、フレームごとにオプティカルフローを求めると、フレームごとにカメラのポーズを計算することができる。したがって、画像処理装置は、フレームごとにカメラのポーズが計算できるため、カメラのポーズを示す精度を向上できる。
【００３９】
さらに、ステップＳ４（図３）でオプティカルフローが計算されているため、画像処理装置は、画像Ｉｍｇ１（図４）に撮像される各特徴点が、画像Ｉｍｇ２（図４）の撮像される各特徴点であるか対応させることができる。つまり、オプティカルフローによって、画像処理装置は、各特徴点をそれぞれ追跡することができる。したがって、オプティカルフローによって、画像処理装置は、精度よく特徴点を対応させることができるため、画像処理装置は、カメラのポーズを精度よく計算することができる。
【００４０】
（３次元座標の計算例（ステップＳ６））
図３に戻り、ステップＳ６では、画像処理装置は、オプティカルフローに基づいて３次元座標を計算する。
【００４１】
図６は、本発明の一実施形態に係る３次元座標の計算の一例を示す図である。具体的には、図６は、３次元座標Ｘ０を、画像Ｉｍｇ１及び画像Ｉｍｇ２に基づいて計算する例を示す図である。なお、画像Ｉｍｇ１で、３次元座標Ｘ０に係る被写体が２次元座標ｘ１に撮像されるとし、さらに、画像Ｉｍｇ２で、３次元座標Ｘ０に係る被写体が２次元座標ｘ２に撮像されるとする。
【００４２】
ここで、画像Ｉｍｇ１によるカメラの射影行列を射影行列Ｐ１とすると、３次元座標Ｘ０及び２次元座標ｘ１の関係は、下記（式３）のように示せる。なお、射影行列Ｐ１は、上記（式１）では、射影行列Ｐに相当する。
【００４３】
ｘ１×Ｐ１Ｘ０＝０・・（式３）
なお、上記（式３）において、射影行列Ｐ１は、ステップＳ５（図３）で計算されるカメラのポーズによって定まる。また、上記（式３）において、２次元座標ｘ１は、画像Ｉｍｇ１における座標値によって定まる。
【００４４】
したがって、画像処理装置は、上記（式３）より、２次元座標ｘ１から３次元座標Ｘ０を計算することができる。
【００４５】
さらに、オプティカルフローによって、画像処理装置は、画像Ｉｍｇ２では、画像Ｉｍｇ１で計算対象となる３次元座標Ｘ０の被写体を追跡することができる。つまり、オプティカルフローによって、画像処理装置は、それぞれ異なる画像である画像Ｉｍｇ１及び画像Ｉｍｇ２において、同一の３次元座標Ｘ０についてそれぞれ計算することができる。
【００４６】
なお、異なる画像に基づいて３次元座標がそれぞれ計算されるため、３次元座標は、異なる値がそれぞれ計算される場合がある。この場合に、画像処理装置は、最小二乗法等によって、複数の計算結果から３次元座標を求めるため、画像処理装置は、３次元座標を精度よく計算することができる。
【００４７】
（マッチング処理例（ステップＳ７））
図３に戻り、ステップＳ７では、画像処理装置は、マッチングを行う。具体的には、ステップＳ７では、画像処理装置は、ステップＳ６で一方の画像（例えば画像Ｉｍｇ１（図６））から計算される３次元座標について、同一の被写体を示す３次元座標が他方の画像（例えば画像Ｉｍｇ２（図６））にあるかを探索する。
【００４８】
（対応する３次元座標があるか否かの判断例（ステップＳ８））
ステップＳ８では、画像処理装置は、対応する３次元座標があるか否かを判断する。例えば、被写体が移動体であると、画像Ｉｍｇ１（図４）には、被写体が撮像されても、画像Ｉｍｇ２（図４）には、被写体が撮像されない場合がある。したがって、被写体が移動体である場合等では、ステップＳ７の処理によって、対応する３次元座標が探索されない場合がある。ゆえに、ステップＳ８では、画像処理装置は、ステップＳ７の結果に基づいて、対応する３次元座標があるか否かを判断する。
【００４９】
なお、ステップＳ８では、画像処理装置は、同一の被写体を示す複数の３次元座標を１つのグループ（以下、単に「グループ」という。）にして処理してもよい。
【００５０】
次に、ステップＳ８で、対応する３次元座標があると画像処理装置が判断する場合（ステップＳ８でＹＥＳ）、画像処理装置は、ステップＳ９に進む。一方、ステップＳ８で、対応する３次元座標がないと画像処理装置が判断する場合（ステップＳ８でＮＯ）、画像処理装置は、ステップＳ１０に進む。
【００５１】
（３次元データの生成例（ステップＳ９））
ステップＳ９では、画像処理装置は、３次元データを生成する。具体的には、画像処理装置は、例えば、ステップＳ１で入力される初期値等に、ステップＳ６で計算される３次元座標を上書きして３次元データを生成する。
【００５２】
（３次元座標の削除例（ステップＳ１０））
ステップＳ１０では、画像処理装置は、３次元座標を削除する。即ち、対応する３次元座標がないと判断される場合（ステップＳ８でＮＯ）は、対象となる座標の被写体が移動体等であるため、前フレームの画像で撮像されていた被写体が、次フレームの画像に撮像されていない場合等である。したがって、ステップＳ１０では、画像処理装置は、３次元データのうち、対応する３次元座標がない３次元座標を削除する。
【００５３】
（全体処理の処理結果例）
図７は、本発明の一実施形態に係る３次元データの一例を示す図である。具体的には、３次元データＤ１は、例えば、３次元座標Ｄ２及びカメラのポーズを示す軌跡Ｄ３を有する。まず、３次元座標Ｄ２は、ステップＳ１（図３）で初期値として入力される。次に、３次元データＤ１は、ステップＳ９（図３）の処理及びステップＳ１０（図３）の処理によって、３次元座標Ｄ２が変更されて生成される。さらに、３次元データＤ１は、ステップＳ５の処理で計算されるカメラのポーズを軌跡Ｄ３として示す。
【００５４】
図８は、本発明の一実施形態に係る画像処理装置による全体処理の処理結果の一例を示す図である。具体的には、図８では、車両２に設置される第１カメラ１０によって撮像される画像を画像Ｉｍｇ１とし、第２カメラ１１によって撮像される画像を画像Ｉｍｇ２とする。また、図８（Ａ）に示す状態で撮像される画像Ｉｍｇ１を図８（Ｂ）に示す画像とし、図８（Ｃ）に示す状態で撮像される画像Ｉｍｇ２を図８（Ｄ）に示す画像とする。なお、図８では、車両２は、画像Ｉｍｇ１を撮像する図８（Ａ）に示す位置から画像Ｉｍｇ２を撮像する図８（Ｃ）に示す位置に移動する例である。
【００５５】
さらに、図８（Ａ）及び図８（Ｃ）では、車両２の進行方向及び第１カメラ１０の光軸１０ＺをＺ軸とし、図の上下方向とする。さらにまた、図８（Ａ）及び図８（Ｃ）では、車両２の進行方向に直交方向をＸ軸とし、図の左右方向とする。
【００５６】
また、図８では、複数の被写体があり、複数の被写体のうち、移動体２Ａは、被写体が移動する車両等の移動体とする。一方、複数の被写体のうち、建物３１、建物３２、建物３３、及び建物３４は、それぞれ建築物等であり、建物３１、建物３２、建物３３、及び建物３４は、被写体が移動しない静止体とする。
【００５７】
以下、ステップＳ２（図３）の処理で、画像処理装置が、画像Ｉｍｇ１及び画像Ｉｍｇ２の画像データをそれぞれ取得する例で説明する。
【００５８】
例えば、画像Ｉｍｇ１では、建物３２及び建物３３のように、被写体の全体が撮像されるのに対して、建物３１のように、移動体２Ａが遮蔽物となり、被写体が撮像されない場合がある。なお、遮蔽物は、移動体２Ａ以外の物体でもよい。
【００５９】
図９は、本発明の一実施形態に係る遮蔽物の一例を示す図である。具体的には、例えば、図９に示すように、第１カメラ１０（図１）の画角内に車両２（図１）が有するワイパー４等が写り込むと、画像Ｉｍｇ１には、ワイパー４が撮像される。また、図９では、ワイパー４が遮蔽物となるため、ワイパー４等によって、建物３２及び建物３３のように、被写体の一部又は全部が撮像されない場合がある。さらに、ノイズの入力又は画像の分解能不足等によって、同様に、被写体の一部又は全部が撮像されない場合がある。
【００６０】
画像処理システム１（図１）は、図９に示す建物３２及び建物３３のように、第１カメラ１０では、遮蔽物等によって被写体の一部又は全部が撮像されない場合でも、第２カメラ１１（図１）によって撮像される画像Ｉｍｇ２（図８）では、被写体が撮像される場合がある。したがって、画像処理システム１は、複数のカメラを有するため、一方のカメラで追跡ができない被写体を他方のカメラで追跡できる。
【００６１】
画像処理システム１が有する複数のカメラのうち、いずれか１つのカメラで撮像することができると、画像処理装置は、ステップＳ３（図３）の処理によって、画像から特徴点を算出することができる。例えば、一方のカメラで追跡できなかった被写体であるため、３次元座標が削除されてしまう場合でも、画像処理装置は、他方のカメラで撮像した被写体に基づいて３次元座標を計算することができる。ゆえに、画像処理装置は、特徴点を算出することができる確率を高くすることができるため、遮蔽物等があっても、被写体の３次元座標を精度よく計算することができる。
【００６２】
図１０は、本発明の一実施形態に係る画像処理装置によるマッチングの一例を示す図である。なお、ステップＳ７（図３）の処理は、例えば図１０に示す処理である。例えば、マッチングは、ステップＳ６（図３）で計算される３次元座標のうち、同一の被写体を示す複数の３次元座標をグループ化してグループごとに行われる。具体的には、図１０（Ａ）は、図８（Ｂ）に示す画像Ｉｍｇ１に基づいて計算される３次元座標の例を示す図である。一方、図１０（Ｂ）は、図８（Ｄ）に示す画像Ｉｍｇ２に基づいて計算される３次元座標を示す図である。なお、図１０では、車両２（図８）の軌跡は、軌跡Ｄ３のデータで示すとする。
【００６３】
画像処理装置は、複数の３次元座標のうち、同一の被写体を示す３次元座標を図示するように、グループ化する。例えば、図１０では、画像処理装置は、建物３１を示す３次元座標を１つのグループとする。同様に、図１０では、画像処理装置は、移動体２Ａ、建物３３、及び建物３４を示す３次元座標をそれぞれグループとする。
【００６４】
次に、画像処理装置は、ＩＣＰ（Ｉｎｔｅｒａｔｉｖｅ  Ｃｌｏｓｅｓｔ  Ｐｏｉｎｔ）アルゴリズム等によってステップＳ７（図３）の処理を行う。具体的には、図１０（Ａ）に示す各グループについて、他方の図１０（Ｂ）に近傍点があるかを検索する。
【００６５】
例えば、図１０では、図１０（Ａ）に示す建物３１を示すグループは、図１０（Ｂ）にも示されるため、マッチングの処理によって、対応する３次元座標があると判断される。一方、図１０では、図１０（Ａ）に示す移動体２Ａを示すグループは、図１０（Ｂ）には示されないため、マッチングの処理によって、対応する３次元座標がないと判断される。
【００６６】
したがって、移動体２Ａを示す３次元座標は、３次元データからステップＳ１０（図３の処理によって削除される。ＳＬＡＭの処理において、移動体を示す３次元座標が削除されると、地図の生成の際に、移動体によるミスマッチを減らすことができるため、被写体の位置を精度よく計算できる。
【００６７】
また、画像処理装置は、被写体を精度よく抽出できるため、画像処理装置は、画像データのうち、背景を精度よく区別することができる。なお、画像処理装置は、背景と被写体とを区別して各種処理を行ってもよい。例えば、画像処理装置は、被写体と認識する部分についてマッチングを行う。これによって、画像処理装置は、背景と被写体とがミスマッチするのを少なくすることができる。また、画像処理装置は、背景部分について処理を行わないため、計算コストを少なくできる。
【００６８】
さらに、画像処理装置は、被写体を建物等の静止体と車両等の移動体とを区別して各種処理を行ってもよい。例えば、画像処理装置は、静止体と認識する部分についてマッチングを行う。これによって、画像処理装置は、静止体と移動体とがミスマッチするのを少なくすることができる。また、画像処理装置は、移動体部分について処理を行わないため、計算コストを少なくできる。
【００６９】
（第２実施形態）
画像処理システムは、３つ以上のカメラを有してもよい。以下、図１に示す画像処理システム１にさらにカメラを２つ加えた４つのカメラを有する画像処理システム１Ａを例に説明する。なお、画像処理装置は、第１実施形態と同様のハードウェア構成の装置であるとする。したがって、ハードウェア構成の説明は、省略する。
【００７０】
図１１は、本発明の一実施形態に係る第２実施形態の画像処理システムの全体構成の一例を示す全体構成図である。
【００７１】
画像処理システム１Ａは、画像処理システム１と同様に、第１カメラ１０及び第２カメラ１１を有する。なお、第１カメラ１０及び第２カメラ１１のそれぞれの設置位置及びそれぞれの設置向きは、画像処理システム１と同様とする。さらに、画像処理システム１Ａは、第３カメラ１２及び第４カメラ１３を有する。
【００７２】
第３カメラ１２及び第４カメラ１３は、例えば、各光軸がＺ軸に対して直交になるようにそれぞれ設置される。即ち、図示するように、第３カメラ１２は、第３カメラ１２の光軸１２Ｘが車両２の進行方向に対して右手方向になるように設置される。また、図示するように、第４カメラ１３は、第４カメラ１３の光軸１３Ｘが車両２の進行方向に対して左手方向になるように設置される。
【００７３】
図１２は、本発明の一実施形態に係る第２実施形態の画像処理装置による全体処理の処理結果の一例を示す図である。具体的には、図１２では、車両２に設置される第３カメラ１２によって撮像される画像を画像Ｉｍｇ３とし、第４カメラ１３によって撮像される画像を画像Ｉｍｇ４とする。また、図１２（Ａ）に示す状態で撮像される画像Ｉｍｇ３を図１２（Ｂ）に示す画像とし、図１２（Ｃ）に示す状態で撮像される画像Ｉｍｇ４を図１２（Ｄ）に示す画像とする。なお、図１２に示す車両２の周辺環境は、図８と同様とする例である。
【００７４】
さらに、図１２（Ａ）及び図１２（Ｃ）では、図８と同様に、車両２の進行方向及び第１カメラ１０の光軸１０ＺをＺ軸とし、図の上下方向とする。これに対して、図１２（Ａ）及び図１２（Ｃ）では、車両２の進行方向に直交方向及び第３カメラ１２の光軸１２ＸをＸ軸とし、図の左右方向とする。
【００７５】
以下、ステップＳ２（図３）の処理で、画像処理装置が、図８に示す画像Ｉｍｇ１及び画像Ｉｍｇ２を示すそれぞれの画像データに加えて、画像Ｉｍｇ３及び画像Ｉｍｇ４を示すそれぞれの画像データをさらに取得する例で説明する。
【００７６】
ステップＳ２の処理で画像Ｉｍｇ３及び画像Ｉｍｇ４を示すそれぞれの画像データがさらに取得されると、画像Ｉｍｇ１及び画像Ｉｍｇ２と同様に、画像処理装置は、ステップＳ６（図３）の処理で、画像Ｉｍｇ３及び画像Ｉｍｇ４に基づいて３次元座標をそれぞれ計算する。
【００７７】
図１３は、本発明の一実施形態に係る第２実施形態の画像処理装置によって計算される３次元座標の一例を示す図である。具体的には、図１３（Ａ）は、図１２（Ｂ）に示す画像Ｉｍｇ３に基づいて計算される３次元座標を示す図である。一方、図１３（Ｂ）は、図１２（Ｄ）に示す画像Ｉｍｇ４に基づいて計算される３次元座標を示す図である。
【００７８】
第２実施形態では、画像処理装置は、ステップＳ７（図３）の処理で、画像Ｉｍｇ１及び画像Ｉｍｇ２に基づく３次元座標に加えて、図１３（Ａ）及び図１３（Ｂ）に示す３次元座標をそれぞれ使用する。
【００７９】
例えば、ステップＳ７の処理では、画像処理装置は、図１０（Ａ）に示す３次元座標及び図１３（Ｂ）にそれぞれ示す３次元座標について、同一の被写体を示す３次元座標があるかを探索する。具体的には、図１０（Ａ）に示す３次元座標及び図１３（Ｂ）に示す３次元座標が、建物３３を示す３次元座標のデータをそれぞれ有する。そのため、画像処理装置は、建物３３を示す３次元座標について、対応する３次元座標があると判断する。したがって、画像処理装置は、ステップＳ９（図３）の処理で、建物３３を示す３次元座標について、計算される建物３３の３次元座標を使用して３次元データを生成する。
【００８０】
なお、マッチングに使用する画像は、他の組み合わせでもよい。
【００８１】
画像処理システム１Ａ（図１１）は、４つのカメラを有するため、２つのカメラを有する画像処理システム１（図１）より多く周辺を撮像することができる。そのため、画像処理装置は、被写体の３次元座標をより多く計算することができる。ゆえに、ＳＬＡＭの処理等において、多くの３次元座標を使用できるため、位置を精度よく計算できる。
【００８２】
（機能構成例）
図１４は、本発明の一実施形態に係る画像処理装置の機能構成の一例を示す機能ブロック図である。具体的には、画像処理装置１００は、取得部１００Ｆ１と、オプティカルフロー計算部１００Ｆ２と、３次元座標計算部１００Ｆ３と、マッチング部１００Ｆ４と、削除部１００Ｆ５と、ポーズ計算部１００Ｆ６と、生成部１００Ｆ７とを含む。
【００８３】
取得部１００Ｆ１は、接続される複数のカメラから画像データをそれぞれ取得する。具体的には、取得部１００Ｆ１は、第１カメラ１０から画像Ｉｍｇ１の画像データを取得する。同様に、取得部１００Ｆ１は、第２カメラ１１から画像Ｉｍｇ２の画像データを取得する。なお、取得部１００Ｆ１は、入出力Ｉ／Ｆ１００Ｈ４（図２）等によって実現される。
【００８４】
オプティカルフロー計算部１００Ｆ２は、取得部１００Ｆ１が取得する画像データからオプティカルフローを計算する。なお、オプティカルフロー計算部１００Ｆ２は、ＣＰＵ１００Ｈ１（図２）及びＡＳＩＣ１００Ｈ２（図２）等によって実現される。
【００８５】
３次元座標計算部１００Ｆ３は、ポーズ計算部１００Ｆ６によって計算される各カメラのポーズ及びオプティカルフロー計算部１００Ｆ２によって計算されるオプティカルフローに基づいて、図６等に示すように、被写体の３次元座標を計算する。なお、３次元座標計算部１００Ｆ３は、ＣＰＵ１００Ｈ１及びＡＳＩＣ１００Ｈ２等によって実現される。
【００８６】
マッチング部１００Ｆ４は、３次元座標計算部１００Ｆ３によって計算される３次元座標について、同一の被写体を示す３次元座標をマッチングする。なお、マッチング部１００Ｆ４は、ＣＰＵ１００Ｈ１及びＡＳＩＣ１００Ｈ２等によって実現される。
【００８７】
削除部１００Ｆ５は、マッチングの結果に基づいて３次元座標のデータを削除する。具体的には、削除部１００Ｆ５は、マッチングの処理によって、対応する３次元座標がないと判断された３次元座標のデータを３次元データから削除する。なお、削除部１００Ｆ５は、ＣＰＵ１００Ｈ１及びＡＳＩＣ１００Ｈ２等によって実現される。
【００８８】
ポーズ計算部１００Ｆ６は、各カメラについての各座標系における座標軸に対する角度及び各座標系における座標によって示される位置を示すポーズを図４等に示すように、計算する。なお、ポーズ計算部１００Ｆ６は、ＣＰＵ１００Ｈ１及びＡＳＩＣ１００Ｈ２等によって実現される。
【００８９】
生成部１００Ｆ７は、３次元座標計算部１００Ｆ３によって計算される３次元座標で初期値等を上書きして３次元データを生成する。また、削除部１００Ｆ５が３次元座標を削除する場合、生成部１００Ｆ７は、削除部１００Ｆ５が削除した以外の３次元座標等を示すデータを生成する。なお、生成部１００Ｆ７は、ＣＰＵ１００Ｈ１及びＡＳＩＣ１００Ｈ２等によって実現される。
【００９０】
画像処理装置１００は、複数のカメラから画像データを取得する。次に、画像処理装置１００は、取得した画像データからオプティカルフローを計算する。さらに、画像処理装置１００は、取得した画像データからカメラのポーズを計算する。さらにまた、画像処理装置１００は、計算したオプティカルフロー及びカメラのポーズから３次元座標を計算できる。
【００９１】
画像処理装置１００は、計算される被写体の３次元座標に基づいて３次元データを生成することができる。３次元データの生成において、画像処理装置１００は、オプティカルフローを使うため、遮蔽物等があっても一方のカメラで追跡ができない被写体を他方のカメラで追跡できる。即ち、いずれか１つのカメラで被写体を撮像することができると、画像処理装置は、特徴点を算出できるため、被写体の３次元座標を計算することができる。ゆえに、画像処理装置は、被写体の特徴点を算出することができる確率を高くすることができるため、遮蔽物等があっても、被写体の３次元座標を精度よく計算することができる。
【００９２】
また、被写体の３次元座標が精度よく計算されるため、ＳＬＡＭにおいて、移動体の周辺を示す地図が精度よく生成できる。よって、ＳＬＡＭ等で、移動体が自己の位置等を精度よく計算できる。
【００９３】
（第３実施形態）
第３実施形態は、移動体が有するカメラを並行移動させる、回転移動させる又はこれらの組み合わせを行う場合等である。例えば、移動体が飛行可能な装置である場合には、移動体が有する各カメラは、移動体等によってカメラの光軸が変更できる。以下、移動体がいわゆるドローン（ｄｒｏｎｅ）であり、かつ、２つのカメラを有する例で説明する。具体的には、例となる移動体は、以下のようなドローンである。
【００９４】
図１５は、本発明の一実施形態に係る第３実施形態の画像処理システムの全体構成の一例を示す全体構成図である。以下の例では、図示するように、ドローン２Ｂは、Ｚ軸方向に進行する。そして、この例では、ドローン２Ｂが有する第１カメラ１０及び第２カメラ１１のそれぞれの光軸は、初期状態ではＺ軸と一致する。ただし、図示するように、光軸１０Ｚと、光軸１１Ｚとは、逆向きであるとする。
【００９５】
また、図１５（Ｂ）に示すように、Ｚ軸に対して、直交する垂直方向（図１５（Ｂ）では、上下方向である。）、すなわち、いわゆる重力方向を以下の説明では、Ｙ軸とする。なお、図１５（Ａ）に示すように、Ｚ軸に対して、直交する水平方向（図１５（Ａ）では、上下方向である。）、すなわち、いわゆる右手方向を以下の説明では、Ｘ軸とする。
【００９６】
図示するドローン２Ｂは、各カメラによって、飛行中又はホバリング中等に、画像を撮像する。例えば、ドローン２Ｂは、以下のような処理を行う。
【００９７】
図１６は、本発明の一実施形態に係る第３実施形態の画像処理装置による全体処理の一例を示すフローチャートである。図３と比較すると、図１６に示す全体処理は、ステップＳ２１が加わる点が異なる。以下、図３と同様の処理には同一の符号を付し、説明を省略する。以下、図３に示す全体処理と異なる点を中心に説明する。なお、ステップＳ２１は、ポーズが計算されるステップＳ５より前であれば、他のタイミングで行われてもよい。
【００９８】
まず、図１５に示す状態、すなわち、カメラを駆動させる前の状態において、撮像が行われ、以下のような画像データが取得されるとする。
【００９９】
図１７は、本発明の一実施形態に係る第３実施形態においてカメラが駆動する前に撮像される画像データの一例を示す図である。例えば、画像データが示す図示するような画像（以下「駆動前画像ＩＭＧＢ」という。）には、被写体として、建物３５が撮像されるとする。一方で、駆動前画像ＩＭＧＢには、建物３５以外に、更に空ＳＫ等が撮像されるとする。特徴点を算出する場合には、空ＳＫ等にはエッジとなる部分が少ない等のため、特徴点が算出しにくい場合がある。一方で、建物３５は、空ＳＫ等と比較すると、特徴点が算出しやすい被写体である場合が多い。しかし、駆動前画像ＩＭＧＢでは、建物３５が撮像される部分が少ないと、特徴点が算出しにくい場合がある。そこで、ドローンは、例えば、カメラを以下のように駆動させて撮像する。
【０１００】
図１８は、本発明の一実施形態に係る第３実施形態においてカメラの駆動例及びカメラが駆動した後に撮像される画像データの一例を示す図である。例えば、図１７に示す駆動前画像ＩＭＧＢに基づいて、図１８（Ａ）に示すような特徴点（以下「駆動前特徴点ＦＰＢ」という。）が算出されるとする。また、駆動前画像ＩＭＧＢは、例えば、第１カメラ１０で撮像される画像データとする。このような駆動前画像ＩＭＧＢが図１５に示す状態で撮像されるとする。そして、図１８（Ｃ）に示す状態は、図１５に示す状態であるとする。
【０１０１】
さらに、図１８（Ａ）に示す状態は、特徴点が算出しにくい状態であるとする。そこで、ドローン２Ｂは、例えば、第１カメラ１０を図１８（Ｄ）に示すように、Ｙ軸方向において並行に駆動させる。なお、カメラは、別の理由で駆動してもよい。このようにすると、例えば、図１８（Ｄ）に示すように、第１カメラ１０は、駆動によって、図１８（Ｃ）に示す状態と比較して、下の位置に移動する。
【０１０２】
例えば、図１８（Ｄ）に示す状態、すなわち、カメラが駆動した後において撮像される画像（以下「駆動後画像」という。）に基づいて、特徴点が算出されると、図１８（Ｂ）に示すような特徴点（以下「駆動後特徴点ＦＰＡ」という。）が算出される。具体的には、駆動後特徴点ＦＰＡは、第１カメラ１０が下の位置に駆動したことによって、駆動前特徴点ＦＰＢより上の位置で算出される場合が多い。
【０１０３】
なお、カメラの駆動は、以下のような回転でもよい。
【０１０４】
図１９は、本発明の一実施形態に係る第３実施形態においてカメラの回転の駆動例を示す図である。例えば、ドローンは、図１９（Ｂ）に示す状態となるようにカメラを駆動させてもよい。なお、図１９（Ｂ）は、図１８（Ｄ）の場合と同様に、図１８（Ｃ）に示す状態を駆動前の状態とし、第１カメラ１０をＸ軸回りに回転するように駆動させる例である。
【０１０５】
図１８（Ｃ）と比較すると、図１９（Ｂ）に示す状態では、第１カメラ１０の光軸が斜め下向きになる点が異なる。図１９（Ｂ）に示すような状態であると、ドローンは、例えば、図１９（Ａ）に示すような画像データを撮像することができる。図１７に示す駆動前画像ＩＭＧＢと比較すると、図１９（Ａ）では、建物３５の下の方が撮像される点が異なる。このように、ドローンは、カメラを回転させる駆動によって、特徴点が算出しやすい画像データを取得することができる。なお、回転は、図示するようにカメラ座標系の原点と、回転中心とにオフセットがある回転に限られない。すなわち、回転は、カメラ座標系の原点と、回転中心とが一致する回転でもよい。
【０１０６】
また、駆動前特徴点ＦＰＢ基づいて、ポーズがステップＳ５（図１６）で計算されると、ポーズは、駆動前画像ＩＭＧＢより上の位置を示す場合が多い。すなわち、ドローンがホバリング中又は停止中で、あまりＹ軸方向に移動していなくとも、カメラの駆動によって、ドローンが移動したように計算される場合が多い。そこで、カメラを駆動させた場合には、ドローンは、ポーズの計算において、カメラ駆動量を補正する。
【０１０７】
図１６に示すステップＳ２１では、ドローンは、カメラ駆動量を補正する。例えば、図１８に示す例では、駆動後特徴点ＦＰＡがされた場合には、ドローンは、図１８（Ｃ）から図１８（Ｄ）となる駆動量によって基づいて、特徴点が算出された値を補正する。補正が行われると、例えば、以下のような効果を奏する。
【０１０８】
図２０は、本発明の一実施形態に係る第３実施形態の画像処理装置による全体処理の処理結果例及び効果例を示す図である。以下、駆動前の状態が図１８（Ｃ）に示す状態であり、かつ、駆動後の状態が図１８（Ｄ）に示す状態である例で説明する。図２０では、図２０（Ａ）が図１８（Ｃ）と同一であり、かつ、図２０（Ｂ）が図１８（Ｄ）と同一である。そして、第１カメラ１０は、駆動前の状態では、Ｙ軸において、図示する位置（以下「初期位置Ｙ０」という。）にあるとする。次に、第１カメラ１０は、駆動後に、Ｙ軸において、図示する位置（以下「駆動後位置Ｙ１」という。）に駆動するとする。この場合には、駆動量の例であるカメラ駆動量Ｙｍは、図示するように、初期位置Ｙ０及び駆動後位置Ｙ１の差である。具体的には、カメラ駆動量Ｙｍに係る計算及び補正は、以下のように行われる。
【０１０９】
図２１は、本発明の一実施形態に係る第３実施形態におけるカメラ駆動量に基づく補正を示す図である。例えば、図１８に示すように、カメラを並行移動させる駆動である場合には、図２１（Ａ）に示すように、カメラ駆動量Ｙｍが計算され、計算されるカメラ駆動量に基づいて補正が行われる。一方で、図１９に示すように、カメラを回転移動させる駆動である場合には、図２１（Ｂ）に示すように、カメラ駆動量Ｙｍが計算され、計算されるカメラ駆動量に基づいて補正が行われる。
【０１１０】
具体的には、図２１（Ａ）に示すように、並行移動の駆動が行われると、カメラは、光軸がＺ軸である状態からＺ'軸になるとする。なお、図２１（Ａ）及び図２１（Ｂ）では、カメラの画角を「θ」、Ｙ軸方向の画素数を「ｗ」、特徴点までの距離を「ｄ」とする。
【０１１１】
この場合には、補正量Ｙｐは、例えば、「Ｙｍ／ｂ」によって計算される。また、「ｂ」は、１ｐｉｘｅｌ当たりに写る範囲であり、「｛ｄ×ｔａｎ（θ）｝／ｗ」によって計算される値である。図示するように、ドローンは、駆動後特徴点ＦＰＡを補正量Ｙｐ分補正する。このようにすると、ドローンは、特徴点の算出結果をカメラ駆動量Ｙｍ分キャンセルすることができる。
【０１１２】
次に、図２１（Ｂ）に示すように、Ｘ軸回りの回転移動の駆動が行われると、カメラは、光軸がＺ軸である状態からＺ'軸になるとする。なお、図２１（Ｂ）に示す例では、カメラ駆動量は、カメラの光軸が駆動によって回転した角度であり、図では、「γ」である。この場合には、補正量は、Ｙγとなり、「Ｙγ」は、例えば、「｛ｄ×ｔａｎ（γ）｝／ｂ」によって計算される。図示するように、ドローンは、駆動後特徴点ＦＰＡを補正量Ｙγ分補正する。このようにすると、ドローンは、特徴点の算出結果をカメラ駆動量γ分キャンセルすることができる。
【０１１３】
したがって、カメラの駆動は、図２１（Ａ）に示すような並行移動、図２１（Ｂ）に示すような回転移動又はこれらの組み合わせである。なお、並行移動は、Ｙ軸以外、すなわち、Ｘ軸又はＺ軸における移動でもよい。同様に、回転移動は、Ｘ軸回りの回転、いわゆるＰｉｔｃｈ回転以外、すなわち、Ｒｏｌｌ回転（Ｚ軸回り）、Ｙａｗ回転（Ｙ軸回り）又はこれらの組み合わせでもよい。
【０１１４】
具体的には、図２０（Ｃ）に示すように、カメラ駆動量に基づいて補正を行うと、駆動後特徴点ＦＰＡが駆動前特徴点ＦＰＢとほぼ同じ位置となるように補正される。すなわち、ドローンが移動していない状態であれば、カメラが駆動しても、特徴点の算出結果は、ほぼ同一となるように算出される。
【０１１５】
なお、補正は、カメラの駆動後に、ポーズの更新を停止させる処理等でもよい。例えば、ドローンが同じ位置に停止している状態等では、カメラの位置、すなわち、ポーズは、変更されない場合がある。そこで、ドローンは、ポーズの計算等を停止させる。このようにすると、ポーズは、駆動前の値で維持される。このように、補正は、駆動後であっても、駆動前の値とするようにする処理でもよい。このような補正でも、ドローンは、駆動量をキャンセルすることができる。
【０１１６】
（機能構成例）
図２２は、本発明の一実施形態に係る第３実施形態における画像処理装置の機能構成の一例を示す機能ブロック図である。図１４と比較すると、図２２に示す機能構成には、補正部１００Ｆ８及び駆動部１００Ｆ９が加わる点が異なる。以下、異なる点を中心に説明する。
【０１１７】
駆動部１００Ｆ９は、第１カメラ１０及び第２カメラ１１等の撮像装置を駆動させる。例えば、駆動部１００Ｆ９は、ＣＰＵ１００Ｈ１（図２）等によって実現される。
【０１１８】
補正部１００Ｆ８は、画像データから特徴点を算出し、駆動部１００Ｆ９による駆動量に基づいて特徴点の算出結果を補正する。例えば、補正部１００Ｆ８は、ＣＰＵ１００Ｈ１（図２）等によって実現される。
【０１１９】
図示する構成であると、画像処理装置１００は、駆動部１００Ｆ９によって撮像装置を駆動させることができる。画像処理装置１００は、カメラを駆動させることができると、特徴点を算出しやすい画像を撮像すること等ができる効果を奏する。
【０１２０】
そして、カメラを駆動した場合であっても、補正部１００Ｆ８によって補正が行われると、画像処理装置１００は、特徴点の算出結果を補正することができる。画像処理装置１００は、補正によって、カメラの駆動による特徴点の変動等をキャンセルすることができる効果を奏する。
【０１２１】
例えば、補正が行われない場合を比較例とすると、比較例では、補正が行われないため、カメラが駆動すると、被写体又は移動体が動かない場合であっても、画像内において被写体が撮像される位置が変化する。後段では、被写体が撮像される位置から特徴点が算出されるため、更に後段の処理であるオプティカルフロー及びポーズは、被写体又は移動体が動かない場合であっても、被写体又は移動体が動いたかのように計算してしまう場合がある。
【０１２２】
一方で、補正が行われると、画像処理装置１００は、カメラが駆動したことによる特徴点の変化をなくし、自己の位置等は変わらないようにできる。そのため、補正が行われると、カメラが駆動しても、ポーズ等が精度よく計算される。ゆえに、画像処理装置１００は、３次元データの生成において、被写体の位置を精度よく計算できる。
【０１２３】
なお、各処理の全部又は一部は、アセンブラ、Ｃ、Ｃ＋＋、Ｃ＃、及びＪａｖａ（登録商標）等のレガシープログラミング言語又はオブジェクト指向プログラミング言語等で記述されたコンピュータに実行させるためのプログラムによって実現されてもよい。即ち、プログラムは、画像処理装置又は情報処理装置等のコンピュータに各処理を実行させるためのコンピュータプログラムである。
【０１２４】
また、プログラムは、ＲＯＭ又はＥＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ  Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）等のコンピュータが読み取り可能な記録媒体に格納して頒布することができる。さらに、記録媒体は、ＥＰＲＯＭ（Ｅｒａｓａｂｌｅ  Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）、フラッシュメモリ、フレキシブルディスク、ＣＤ−ＲＯＭ、ＣＤ−ＲＷ、ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＡＭ、ＤＶＤ−ＲＷ、ブルーレイディスク、ＳＤ（登録商標）カード、又はＭＯ等でもよい。さらにまた、プログラムは、電気通信回線を通じて頒布することができる。
【０１２５】
実施形態は、例えば、被写体を含む周辺を撮像する第１カメラ１０（図１）及び第２カメラ１１（図１）に接続される画像処理装置であって、第１カメラ１０（図１）及び第２カメラ１１（図１）から画像データをそれぞれ取得する入出力Ｉ／Ｆ１００Ｈ４（図２）と、第１カメラ１０（図１）及び第２カメラ１１（図１）を駆動させるＣＰＵ１００Ｈ１（図２）と、前記画像データから特徴点を算出し、前記駆動による駆動量に基づいて前記特徴点の算出結果を補正するＣＰＵ１００Ｈ１（図２）と、前記補正によって補正された特徴点に基づいてそれぞれオプティカルフローを計算するＣＰＵ１００Ｈ１（図２）と、前記補正によって補正された特徴点に基づいてそれぞれの第１カメラ１０（図１）及び第２カメラ１１（図１）の角度及び位置を示すポーズをそれぞれ計算するＣＰＵ１００Ｈ１（図２）と、前記オプティカルフロー及び前記ポーズに基づいて前記被写体の３次元座標を計算するＣＰＵ１００Ｈ１（図２）と、前記３次元座標に基づいて前記周辺を示す３次元データを生成するＣＰＵ１００Ｈ１（図２）とを含む画像処理装置である。
【０１２６】
以上、本発明の好ましい実施例について詳述したが、本発明は係る特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形又は変更が可能である。
【符号の説明】
【０１２７】
１、１Ａ  画像処理システム
２  車両
２Ａ  移動体
２Ｂ  ドローン
１０  第１カメラ
１１  第２カメラ
１２  第３カメラ
１３  第４カメラ
１００  画像処理装置
１００Ｈ１  ＣＰＵ
１００Ｈ２  ＡＳＩＣ
１００Ｈ３  記憶装置
Ｉｍｇ１、Ｉｍｇ２、Ｉｍｇ３、Ｉｍｇ４  画像
３１、３２、３３、３４  建物
【先行技術文献】
【特許文献】
【０１２８】
【特許文献１】特開２０１３−１０４６６０号公報
【特許文献２】特許４６５４１６３号公報
【特許文献３】特開２０１１−１５０６８９号公報
【特許文献４】特許５１３６３１４号公報
【特許文献５】特開２００９−６８２４号公報
【特許文献６】特開２０１１−２４８８３０号公報
【特許文献７】特開２００９−１９３２５７号公報
【図１】
2017208038.tif 000005
【図２】
2017208038.tif 000006
【図３】
2017208038.tif 000007
【図４】
2017208038.tif 000008
【図５】
2017208038.tif 000009
【図６】
2017208038.tif 000010
【図７】
2017208038.tif 000011
【図８】
2017208038.tif 000012
【図９】
2017208038.tif 000013
【図１０】
2017208038.tif 000014
【図１１】
2017208038.tif 000015
【図１２】
2017208038.tif 000016
【図１３】
2017208038.tif 000017
【図１４】
2017208038.tif 000018
【図１５】
2017208038.tif 000019
【図１６】
2017208038.tif 000020
【図１７】
2017208038.tif 000021
【図１８】
2017208038.tif 000022
【図１９】
2017208038.tif 000023
【図２０】
2017208038.tif 000024
【図２１】
2017208038.tif 000025
【図２２】
2017208038.tif 000026