(57)【要約】【課題】被写体の３次元位置を精度良く推定すること。【解決手段】３次元形状推定装置１００は、それぞれ異なる位置に配置された複数のカメラによって撮影された同一の被写体を含む複数の画像データについて、複数の画像データに含まれる特徴点同士の対応関係を基にして、被写体上に仮想的に設けた面である複数のパッチの法線ベクトルをそれぞれ特定する。３次元形状推定装置１００は、複数のパッチのうち、第１パッチの第１法線ベクトルを、第１パッチの周囲に位置する第２パッチの第２法線ベクトルを基にして補正する。３次元形状推定装置１００は、補正した前記第１法線ベクトルの方向を基にして、複数のカメラから基準カメラを判定する。３次元形状推定装置１００は、基準カメラに撮影された画像データに含まれる第１パッチに対応する領域の画素値と、他のカメラに撮影された画像データに含まれる第１パッチに対応する領域の画素値との相関値を基にして、第１パッチの位置を更新する。【選択図】図１
2018194891.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータが実行する３次元形状推定方法であって、
それぞれ異なる位置に配置された複数のカメラによって撮影された同一の被写体を含む複数の画像データについて、前記複数の画像データに含まれる特徴点同士の対応関係を基にして、前記被写体上に仮想的に設けた面である複数のパッチの法線ベクトルをそれぞれ特定し、
前記複数のパッチのうち、第１パッチの第１法線ベクトルを、前記第１パッチの周囲に位置する第２パッチの第２法線ベクトルを基にして補正し、
補正した前記第１法線ベクトルの方向を基にして、前記複数のカメラから基準カメラを判定し、
前記基準カメラに撮影された画像データに含まれる前記第１パッチに対応する領域の画素値と、他のカメラに撮影された画像データに含まれる前記第１パッチに対応する領域の画素値との相関値を基にして、前記第１パッチの位置を更新する
処理を実行することを特徴とする３次元形状推定方法。
【請求項２】
前記位置を補正する処理は、前記第１パッチの位置を移動させ、移動させた第１パッチの位置に対応する前記基準カメラに撮影された画像データの領域の画素値と、移動させた第１パッチの位置に対応する前記他のカメラに撮影された画像データの領域の画素値との相関値を算出する処理を繰り返し実行し、前記相関値が最大となる第１パッチの位置を、補正後の位置とすることを特徴とする請求項１に記載の３次元形状推定方法。
【請求項３】
前記第１法線ベクトルを補正する処理は、前記第１法線ベクトルと、前記第２法線ベクトルとの加重平均を行うことで、前記第１法線ベクトルを補正することを特徴とする請求項１または２に記載の３次元形状推定方法。
【請求項４】
コンピュータに、
それぞれ異なる位置に配置された複数のカメラによって撮影された同一の被写体を含む複数の画像データについて、前記複数の画像データに含まれる特徴点同士の対応関係を基にして、前記被写体上に仮想的に設けた面である複数のパッチの法線ベクトルをそれぞれ特定し、
前記複数のパッチのうち、第１パッチの第１法線ベクトルを、前記第１パッチの周囲に位置する第２パッチの第２法線ベクトルを基にして補正し、
補正した前記第１法線ベクトルの方向を基にして、前記複数のカメラから基準カメラを判定し、
前記基準カメラに撮影された画像データに含まれる前記第１パッチに対応する領域の画素値と、他のカメラに撮影された画像データに含まれる前記第１パッチに対応する領域の画素値との相関値を基にして、前記第１パッチの位置を更新する
処理を実行させることを特徴とする３次元形状推定プログラム。
【請求項５】
それぞれ異なる位置に配置された複数のカメラによって撮影された同一の被写体を含む複数の画像データについて、前記複数の画像データに含まれる特徴点同士の対応関係を基にして、前記被写体上に仮想的に設けた面である複数のパッチの法線ベクトルをそれぞれ特定する特定部と、
前記複数のパッチのうち、第１パッチの第１法線ベクトルを、前記第１パッチの周囲に位置する第２パッチの第２法線ベクトルを基にして補正する補正部と、
補正した前記第１法線ベクトルの方向を基にして、前記複数のカメラから基準カメラを判定する判定部と、
前記基準カメラに撮影された画像データに含まれる前記第１パッチに対応する領域の画素値と、他のカメラに撮影された画像データに含まれる前記第１パッチに対応する領域の画素値との相関値を基にして、前記第１パッチの位置を更新する更新部と
を有することを特徴とする３次元形状推定装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、３次元形状推定方法等に関する。
【背景技術】
【０００２】
複数のカメラを用いて被写体の画像を撮影し、撮影した画像を用いて被写体上の点（パッチ）の３次元位置を推定する処理を繰り返し実行することで、被写体の３次元形状を推定する従来技術がある。
【０００３】
図１５は、従来技術の処理の一例を説明するための図である。参照カメラ５Ｉが撮影した画像を参照画像Ｒ（ｐ）とし、他のカメラ５Ｊが撮影した画像を、画像Ｊとする。例えば、従来技術は、以下のステップＳ１０〜Ｓ１２の処理を実行する。
【０００４】
ステップＳ１０について説明する。従来技術は、参照画像Ｒ（ｐ）および画像Ｊから複数の特徴点を抽出する。従来技術は、複数の特徴点のうち、パッチｐに対応する特徴点を特定する。例えば、パッチｐに対応する参照画像Ｒ（ｐ）の特徴点を、特徴点ｆとする。パッチｐに対応する画像Ｊの特徴点を、特徴点ｆ’とする。従来技術は、特徴点ｆおよび特徴点ｆ’を基にして、パッチｐの３次元位置ｃ（ｐ）とパッチｐの法線ベクトルｎ（ｐ）を算出する。従来技術は、法線ベクトルｎ（ｐ）で３次元位置ｃ（ｐ）を中心とするパッチｐを生成する。
【０００５】
ステップＳ１１について説明する。従来技術は、参照画像Ｒ（ｐ）と他の画像（参照画像Ｒ（ｐ）以外の画像）とのパッチｐの相関値を算出する。従来技術は、相関値が閾値以上となる場合には、かかる他の画像を、パッチｐが見えている画像群Ｔ（ｐ）に含める。例えば、従来技術は、参照画像Ｒ（ｐ）と画像Ｊとのパッチｐの相関値が閾値以上、また、参照画像Ｔ（Ｒｐ）と画像Ｈ（図示略）とのパッチｐの相関値が閾値以上である場合には、画像Ｊ、Ｈを、画像群Ｔ（ｐ）に含める。
【０００６】
また、ステップＳ１１において、従来技術は、パッチｐの３次元位置ｃ（ｐ）、法線ベクトルｎ（ｐ）の微調整を行う。従来技術は、ｃ（ｐ）、ｎ（ｐ）の値を少しずつ変化させながら、Ｔ（ｐ）に含まれる画像群との平均相関値が最大となる位置を算出し、係る位置を、調整後のパッチｐの３次元位置ｃ（ｐ）とする。従来技術は、調整した３次元位置ｃ（ｐ）、法線ベクトルｎ（ｐ）からなるパッチｐに応じて、画像群Ｔ（ｐ）を更新する。従来技術は、パッチｐが参照カメラ５Ｉ以外の他のカメラからよく見えていれば、パッチｐを被写体の一部として登録する。
【０００７】
ステップＳ１２について説明する。従来技術は、パッチｐの近傍に位置するパッチｐ’に対しても、上記のステップＳ１０、１１の処理を行うことで、パッチｐ’の３次元位置ｃ（ｐ’）、法線ベクトルｎ（ｐ’）を算出し、被写体の３次元位置に追加する。従来技術は、パッチｐ’の近傍に位置するパッチｐ’’に対しても、上記のステップＳ１０、１１の処理を行うことで、パッチｐ’’の３次元位置ｃ（ｐ’’）、法線ベクトルｎ（ｐ’’）を算出し、被写体の３次元位置に追加する。従来技術は、パッチの数が密となるまで、上記の処理を繰り返し実行することで、被写体の３次元形状を推定する。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２０１３−１０９６６０号公報
【特許文献２】特開２０１４−２２８９４１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかしながら、上述した従来技術では、被写体の３次元位置を精度良く推定することができないという問題がある。
【００１０】
図１６は、従来技術の問題点を説明するための図である。例えば、被写体６は、境界部分６ａ周辺において、３次元位置が大きく変化する。このため、パッチｐの位置が同じであっても、各カメラの位置により、カメラに撮影される画像が異なる（パッチに投影される領域が異なる）ため、相関値が小さくなり、被写体６の３次元位置を精度良く推定することができない。
【００１１】
例えば、カメラ１０〜１４がそれぞれ撮影した境界部分６ａの画像（パッチに投影した画像）をそれぞれ画像１１ａ〜１４ａとする。ここで、従来技術は、図１５で説明したように、相関値の算出基準となる参照カメラとして、特徴点が算出されたカメラを使用する。例えば、参照カメラをカメラ１１ｂとすると、どの他の画像と相関値を求めても、相関値が低くなり、３次元位置の推定精度が低下する。
【００１２】
１つの側面では、本発明は、被写体の３次元位置を精度良く推定することができる３次元形状推定方法、３次元形状推定プログラムおよび３次元形状推定装置を提供することを目的とする。
【課題を解決するための手段】
【００１３】
第１の案では、コンピュータは下記の処理を実行する。コンピュータは、それぞれ異なる位置に配置された複数のカメラによって撮影された同一の被写体を含む複数の画像データについて、複数の画像データに含まれる特徴点同士の対応関係を基にして、被写体上に仮想的に設けた面である複数のパッチの法線ベクトルをそれぞれ特定する。コンピュータは、複数のパッチのうち、第１パッチの第１法線ベクトルを、第１パッチの周囲に位置する第２パッチの第２法線ベクトルを基にして補正する。コンピュータは、補正した前記第１法線ベクトルの方向を基にして、複数のカメラから基準カメラを判定する。コンピュータは、基準カメラに撮影された画像データに含まれる第１パッチに対応する領域の画素値と、他のカメラに撮影された画像データに含まれる第１パッチに対応する領域の画素値との相関値を基にして、第１パッチの位置を更新する。
【発明の効果】
【００１４】
被写体の３次元位置の推定精度を向上させることができる。
【図面の簡単な説明】
【００１５】
【図１】図１は、本実施例に係るシステムの構成を示す図である。
【図２】図２は、本実施例に係る３次元形状推定装置の構成を示す機能ブロック図である。
【図３】図３は、画像バッファのデータ構造の一例を示す図である。
【図４】図４は、カメラ管理テーブルのデータ構造の一例を示す図である。
【図５】図５は、キャリブレーションパターンの一例を示す図である。
【図６】図６は、ＳＦＭの処理の一例を説明するための図である。
【図７】図７は、パッチテーブルのデータ構造の一例を示す図である。
【図８】図８は、特定部の処理を説明するための図（１）である。
【図９】図９は、特定部の処理を説明するための図（２）である。
【図１０】図１０は、被写体から特定される各パッチの法線ベクトルの一例を示す図である。
【図１１】図１１は、補正部の処理を説明するための図である。
【図１２】図１２は、更新部の処理を説明するための図である。
【図１３】図１３は、本実施例に係る３次元形状推定装置の処理手順を示すフローチャートである。
【図１４】図１４は、３次元形状推定装置と同様の機能を実現するコンピュータのハードウェア構成の一例を示す図である。
【図１５】図１５は、従来技術の処理の一例を説明するための図である。
【図１６】図１６は、従来技術の問題点を説明するための図である。
【発明を実施するための形態】
【００１６】
以下に、本願の開示する３次元形状推定方法、３次元形状推定プログラムおよび３次元形状推定装置の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
【実施例】
【００１７】
図１は、本実施例に係るシステムの構成を示す図である。図１に示すように、このシステムは、カメラ３０ａ、３０ｂ、３０ｃ、３０ｄ、３０ｅと、３次元形状推定装置１００とを有する。カメラ３０ａ〜３０ｅと、３次元形状推定装置１００とは、相互に接続される。ここではカメラ３０ａ〜３０ｅを示すが、その他のカメラが接続されていても良い。
【００１８】
カメラ３０ａ〜３０ｅは、それぞれ異なる位置に配置され、被写体６を撮影するカメラである。カメラ３０ａ〜３０ｅは、撮影した画像のデータを３次元形状推定装置１００に出力する。以下の説明では適宜、カメラ３０ａ〜３０ｅをまとめて、カメラ３０と表記する。また、カメラ３０が撮影した画像のデータを、画像データと表記する。
【００１９】
３次元形状推定装置１００は、カメラ３０から取得する画像データを基にして、被写体６の３次元形状を推定する装置である。
【００２０】
図２は、本実施例に係る３次元形状推定装置の構成を示す機能ブロック図である。図２に示すように、この３次元形状推定装置１００は、カメラ３０に接続される。３次元形状推定装置１００は、入力部１１０と、表示部１２０と、記憶部１３０と、制御部１４０とを有する。
【００２１】
入力部１１０は、各種の情報を３次元形状推定装置１００に入力するための入力装置である。例えば、入力部１１０は、キーボードやマウス、タッチパネルなどに対応する。
【００２２】
表示部１２０は、制御部１４０から出力される各種の情報を表示する表示装置である。例えば、表示部１２０は、液晶ディスプレイやタッチパネルなどに対応する。
【００２３】
記憶部１３０は、画像バッファ１３１と、カメラ管理テーブル１３２と、パッチテーブル１３３とを有する。記憶部１３０は、ＲＡＭ（Random  Access  Memory）、ＲＯＭ（Read  Only  Memory）、フラッシュメモリ（Flash  Memory）などの半導体メモリ素子や、ＨＤＤ（Hard  Disk  Drive）などの記憶装置に対応する。
【００２４】
画像バッファ１３１は、カメラ３０ａ〜３０ｅにより撮影された画像データを保持するバッファである。図３は、画像バッファのデータ構造の一例を示す図である。図３に示すように、この画像バッファ１３１は、カメラ識別情報と、画像データとを対応づける。カメラ識別情報は、カメラ３０を一意に識別する情報である。画像データは、カメラ識別情報に対応するカメラ３０により撮影された画像データである。
【００２５】
カメラ管理テーブル１３２は、カメラ３０のパラメータを保持するテーブルである。図４は、カメラ管理テーブルのデータ構造の一例を示す図である。図４に示すように、このカメラ管理テーブル１３２は、カメラ識別情報と、パラメータとを対応づける。カメラ識別情報は、カメラ３０を一意に識別する情報である。
【００２６】
パラメータは、カメラ３０の位置・姿勢等を示す情報である。パラメータは、内部パラメータと、外部パラメータとを含む。内部パラメータは、カメラ３０のレンズの主点、焦点位置等を示す情報である。外部パラメータは、カメラ３０の位置・姿勢を示す情報である。
【００２７】
パラメータの取得方法には、例えば、キャリブレーションパターンを用いる方法と、ＳＦＭ（Structure  From  Motion）とがある。
【００２８】
キャリブレーションパターンを用いてパラメータを求める処理の一例について説明する。図５は、キャリブレーションパターンの一例を示す図である。各カメラ３０は、キャリブレーションパターン１５を同時に撮影する。キャリブレーションパターン１５に含まれるパターンやコーナーの位置関係は既知である。
【００２９】
キャリブレーション装置（図示略）は、カメラ３０により撮影された画像データから特徴点を抽出し、画像座標系での特徴点の座標を算出する。キャリブレーション装置は、特徴点の座標と、キャリブレーションパターン１５の既知の位置関係等を基にして、カメラ３０の内部パラメータの初期値を特定する。キャリブレーション装置は、バンドル調整等を実行することで、内部パラメータおよび外部パラメータを求める。
【００３０】
ＳＦＭに基づいてパラメータを求める処理の一例について説明する。図６は、ＳＦＭの処理の一例を説明するための図である。ＳＦＭは、被写体の３次元形状とカメラ３０の位置姿勢を同士に求める方法である。カメラ３０ａが撮影した画像を画像３１ａとし、カメラ３０ｂが撮影した画像を画像３１ｂとする。ある特徴点の３次元位置１６に対応する画像３１ａ上の点を特徴点１６ａとし、３次元位置１６に対応する画像３１ｂ上の点を特徴点１６ｂとする。
【００３１】
キャリブレーション装置（図示略）は、特徴点１６ａと特徴点１６ｂとの対応付けを行い、ステレオカメラの原理により、特徴点１６の３次元位置を算出する。キャリブレーション装置は、エピポーラ拘束の関係を用いて、特徴点１６ａと特徴点１６ｂとの間の変換行列（基礎行列）を算出する。キャリブレーション装置は、基礎行列を用いて、特徴点１６ａから特徴点１６ｂに対する再投影誤差が最小になるように、カメラ３０ａ、３０ｂのパラメータを調整する。再投影誤差が最小になるカメラ３０ａ、３０ｂのパラメータが、最終的なカメラ３０ａ、３０ｂのパラメータとなる。
【００３２】
例えば、上記に示したキャリブレーション装置により算出されたカメラ３０ａ〜３０ｅのパラメータを、３次元形状推定装置１００は予め取得して、カメラ管理テーブル１３２に格納しておく。
【００３３】
図２の説明に戻る。パッチテーブル１３３は、後述する制御部１４０に特定されるパッチに関する情報を保持するテーブルである。図７は、パッチテーブルのデータ構造の一例を示す図である。例えば、パッチは、異なるカメラ３０に撮影された画像データの組の各特徴点に対応づけられる３次元空間上の点である。図７に示すように、パッチテーブル１３３は、パッチ識別情報と、３次元位置と、法線ベクトルとを対応づける。パッチ識別情報は、パッチを一意に識別する情報である。３次元位置は、パッチの３次元位置である。法線ベクトルはパッチの法線ベクトルである。
【００３４】
制御部１４０は、取得部１４１と、特徴点抽出部１４２と、特定部１４３と、補正部１４４と、判定部１４５と、更新部１４６とを有する。制御部１４０は、ＣＰＵ（Central  Processing  Unit）やＭＰＵ（Micro  Processing  Unit）などによって実現できる。また、制御部１４０は、ＡＳＩＣ（Application  Specific  Integrated  Circuit）やＦＰＧＡ（Field  Programmable  Gate  Array）などのハードワイヤードロジックによっても実現できる。
【００３５】
取得部１４１は、カメラ３０から画像データを取得する処理部である。取得部１４１は、カメラ識別情報と対応づけて画像データを画像バッファ１３１に格納する。
【００３６】
特徴点抽出部１４２は、画像バッファ１３１に格納された各画像データから特徴点を抽出する処理部である。例えば、特徴点抽出部１４２は、コーナー検出法（Harris）やSIFT等を基にして、画像データから特徴点を抽出する。特徴点抽出部１４２は、各画像データから抽出した特徴点の情報を、特定部１４３に出力する。例えば、特徴点の情報は、画像データ上の特徴点の座標と、画像データを撮影したカメラのカメラ識別情報とを対応づけた情報である。
【００３７】
特定部１４３は、画像データの組に含まれる特徴点同士の対応関係を基にして、パッチの３次元座標、パッチの法線ベクトルを特定する処理部である。以下において、特定部１４３の処理の一例について説明する。
【００３８】
図８は、特定部の処理を説明するための図（１）である。図８では一例として、基準とする参照カメラをカメラ３０ａとし、他のカメラをカメラ３０ｂとする。カメラ３０ａが撮影した画像データを参照画像データ４１ａとし、カメラ３０ｂが撮影した画像データを画像データ４１ｂとする。特定部１４３は、参照画像データ４１ａの特徴点ｆと、画像データ４１ｂの特徴点ｆ’とを選択する。特徴点ｆは、参照画像データ４１ａに含まれる特徴点のうち、いずれかの特徴点に対応する。特徴点ｆ’は、画像データ４１ｂに含まれる全特徴点の内、特徴点ｆとエピポーラ幾何が成り立つ特徴点となる。
【００３９】
特定部１４３は、画像データ上の特徴点ｆ、ｆ’の座標、カメラ３０ａ、３０ｂのパラメータを基にして、ステレオカメラの原理に基づき、パッチｐの３次元位置ｃ（ｐ）を算出する。特定部１４３は、カメラ３０ａ、３０ｂのパラメータを、カメラ管理テーブル１３２から取得する。
【００４０】
図９の説明に移行する。特定部１４３は、パッチｐの３次元位置ｃ（ｐ）を特定した後に、次の処理を実行する。特定部１４３は、参照カメラ（カメラ３０ａ）の光学中心方向を、パッチｐの法線ベクトルｎ（ｐ）として特定する。
【００４１】
特定部１４３は、参照画像データ４１ａの特徴点ｆを中心とするμ×μの領域ａｉを設定する。特定部１４３は、領域ａｉを３次元空間の３次元位置ｃ（ｐ）に投影することで、領域ａｉ’を設定する。特定部１４３は、領域ａｉ’を画像データ４１ｂに射影することで、パッチｐに対応する領域ａｊを特定する。
【００４２】
特定部１４３は、領域ａｉと、領域ａｊとの相関値を算出する。特定部１４３は、領域ａｉの画素値と、領域ａｊの画素値とが類似しているほど、相関値が大きくなるようなロジックにより、相関値を算出する。例えば、特定部１４３は、式（１）に基づいて、相関値を算出する。式（１）において、ｇ１（ｘｎ，ｙｎ）は、領域ａｉの座標（ｘｎ，ｙｎ）の画素値である。ｇ２（ｘｎ，ｙｎ）は、領域ａｊの座標（ｘｎ，ｙｎ）の画素値である。αは予め設定される値である。
【００４３】
相関値＝α／（Σ｜ｇ１（ｘｎ，ｙｎ）−ｇ２（ｘｎ，ｙｎ）｜・・・（１）
【００４４】
特定部１４３は、相関値が所定の閾値以上である場合に、パッチ識別情報と、３次元位置と、法線ベクトルとを対応づけて、パッチテーブル１３３に格納する。特定部１４３は、参照画像４１ａに含まれる他の特徴点についても同様の処理を繰り返し実行することで、複数のパッチに関する３次元位置、法線ベクトルを算出し、パッチテーブル１３３に格納する。また、特定部１４３は、参照カメラを他のカメラ３０ｂ〜３０ｅに変更し、上記処理を繰り返し実行する。
【００４５】
図１０は、被写体から特定される各パッチの法線ベクトルの一例を示す図である。図１０に示す例では、被写体６から法線ベクトル８ａ、８ｂ、８ｃ、８ｄ、８ｅ、８ｆ、８ｇ、８ｈ、８ｉが特定されている。実際には、図１０に示した法線ベクトル８ａ〜８ｉよりも多くの法線ベクトルが特定されるが、図示を省略する。
【００４６】
図２の説明に戻る。補正部１４４は、各パッチの法線ベクトルを補正する処理部である。例えば、補正部１４４は、補正対象となる法線ベクトルを、この法線ベクトルのパッチの周囲に位置するパッチの法線ベクトルを用いてフィルタリングする。
【００４７】
図１１は、補正部の処理を説明するための図である。図１１に示す例では、補正部１４４は、法線ベクトル８ｄを補正対象として選択する。また、法線ベクトル８ｄのパッチの周囲の範囲を９とすると、補正部１４４は、法線ベクトル８ｂ、８ｃ、８ｄ、８ｅ、８ｆの加重平均を算出することで、補正後の法線ベクトル８ｄ’を算出する。補正部１４４は、他の法線ベクトル８ａ〜８ｃ、８ｅ〜８ｉについても同様にして、補正を行うことで、法線ベクトル８ａ’〜８ｃ’、８ｅ’〜８ｉ’を得る。
【００４８】
例えば、補正部１４４は、式（２）に基づいて補正後の法線ベクトルを算出する。式（２）において、ｐ２は、補正後のパッチを示す。ｎ（ｐ２）は補正後の法線ベクトルを示す。ｎ（ｐｎ）は、パッチｐｎの法線ベクトルを示す。ｃ（ｐｎ）は、パッチｐｎの３次元位置を示す。Ｓｎｅｉｂは、パッチｐから距離ｒ以内に含まれるパッチの集合を示す。なお、パッチｐは、補正対象の法線ベクトルに対応するパッチである。
【００４９】
【数１】
2018194891.tif 000003
【００５０】
ｗ（ｐｎ）は重みであり、式（３）に示される。式（３）において、ｃｘ（ｐｎ）、ｃｙ（ｐｎ）、ｃｚ（ｐｎ）は、３次元位置のｘ座標、ｙ座標、ｚ座標を示す。
【００５１】
【数２】
2018194891.tif 000004
【００５２】
補正部１４４は、パッチテーブル１３３にアクセスし、補正前の法線ベクトルの情報を、補正後の法線ベクトルの情報に更新する。補正部１４４により、法線ベクトルが補正されると、後述する判定部１４５および更新部１４６により、補正後の法線ベクトルに対応するパッチの３次元位置が調整される。
【００５３】
判定部１４５は、補正後の法線ベクトルに対応するパッチの３次元位置を調整する場合に利用する最適な参照カメラを判定する処理部である。判定部１４５は、補正後の法線ベクトルと、各カメラ３０の光学中心方向とを比較し、補正後の法線ベクトルと最も平行に近い光学中心方向となるカメラを、「第１参照カメラ」として判定する。また、判定部１４５は、第１参照カメラの次に、平行に近い光学中心方向となるカメラを、「第２参照カメラ」として判定する。
【００５４】
図１１を用いて、判定部１４５の処理を説明する。例えば、判定部１４５が、補正後の法線ベクトル８ｄ’に対応する参照カメラを判定すると、カメラ３０ｄを第１参照カメラとして判定する。また、判定部１４５は、カメラ３０ｅを第２参照カメラとして判定する。例えば、法線ベクトル８ｄ’とカメラ３０の光学中心方向とを比較して、より平行に近いカメラから順に並べると、１番平行に近いカメラがカメラ３０ｄであり、２番目に平行に近いカメラがカメラ３０ｅであるものとする。
【００５５】
判定部１４５は、補正後の法線ベクトル毎に、法線ベクトルに対応する第１参照カメラおよび第２参照カメラを判定し、判定結果を、更新部１４６に出力する。
【００５６】
更新部１４６は、補正後の法線ベクトルに対応するパッチの３次元位置を、第１参照カメラに撮影された画像データおよび第２参照カメラに撮影された画像データを基にして、微調整する処理部である。
【００５７】
図１２は、更新部の処理を説明するための図である。図１２では一例として、３次元位置を調整するパッチｐ２の３次元位置をｃ（ｐ２）とし、法線ベクトルをｎ（ｐ２）とし、第１参照カメラをカメラＲ（ｐ２）、第２参照カメラをＴ（ｐ２）とする。更新部１４６は、３次元位置ｃ（ｐ２）を中心とする近傍範囲５０内でパッチの３次元位置を変化させ、それぞれの位置で相関値を算出する。更新部１４６は、算出した各相関値のうち、最大の相関値となるパッチの３次元位置ｃ（ｐ３）を特定する。ｎ（ｐ３）は、３次元位置ｃ（ｐ３）の法線ベクトルである。更新部１４６は、パッチテーブル１３３にアクセスし、パッチｐ２の３次元位置を、ｃ（ｐ２）からｃ（ｐ３）に更新する。また、更新部１４６は、法線ベクトルをｎ（ｐ２）からｎ（ｐ３）に更新する。
【００５８】
更新部１４６が、相関値を算出する処理は、図９で説明した特定部１４３が相関値を算出する処理と同様である。更新部１４６は、カメラＲ（ｐ２）が撮影した画像データ、カメラＴ（ｐ２）が撮影した画像データを、画像バッファ１３１から取得する。また、カメラＲ（ｐ２）、Ｔ（ｐ２）のパラメータをカメラ管理テーブル１３２から取得する。
【００５９】
更新部１４６は、他の法線ベクトルについても、図１２に示した処理を繰り返し実行することで、各パッチの３次元位置および法線ベクトルを更新する。
【００６０】
次に、本実施例に係る３次元形状推定装置１００の処理手順について説明する。図１３は、本実施例に係る３次元形状推定装置の処理手順を示すフローチャートである。図１３に示すように、３次元形状推定装置１００の特徴点抽出部１４１は、画像バッファ１３１に格納された全画像データから特徴点を抽出する（ステップＳ１０１）。
【００６１】
３次元形状推定装置１００は、全画像データについてパッチ生成処理済みである場合には（ステップＳ１０２，Ｙｅｓ）、ステップＳ１０５に移行する。一方、３次元形状推定装置１００は、全画像データについてパッチ生成処理済みでない場合には（ステップＳ１０２，Ｎｏ）、ステップＳ１０３に移行する。
【００６２】
ステップＳ１０３の説明に移行する。３次元形状推定装置１００は、全特徴点について処理済みの場合には（ステップＳ１０３，Ｙｅｓ）、ステップＳ１０２に移行する。一方、３次元形状推定装置１００は、全特徴点について処理済みでない場合には（ステップＳ１０３，Ｎｏ）、ステップＳ１０４に移行する。
【００６３】
３次元形状推定装置１００の特定部１４３は、参照画像データＲ（ｐ）と他の画像データＪの特徴点Ｊ、Ｊ’から３次元位置ｃ（ｐ）と法線ベクトルｎ（ｐ）を算出し、パッチｐを生成し（ステップＳ１０４）、ステップＳ１０２に移行する。
【００６４】
ステップＳ１０５の説明に移行する。３次元形状推定装置１００は、全画像データについて更新処理済みである場合には（ステップＳ１０５，Ｙｅｓ）、処理を終了する。一方、３次元形状推定装置１００は、全画像データについて更新処理済みでない場合には（ステップＳ１０５，Ｎｏ）、ステップＳ１０６に移行する。
【００６５】
３次元形状推定装置１００の補正部１４４は、周囲の法線ベクトルを用いてフィルタリングを行い、法線ベクトルｎ（ｐ２）のパッチｐ２を生成する（ステップＳ１０６）。３次元形状推定装置１００の判定部１４５は、法線ベクトルｎ（ｐ２）に対して平行に近い第１参照カメラＲ（ｐ２）、第２参照カメラＴ（ｐ２）を判定する（ステップＳ１０７）。
【００６６】
３次元形状推定装置１００の更新部１４６は、３次元位置ｃ（ｐ２）を移動させつつ、第１参照カメラＲ（ｐ２）、第２参照カメラＴ（ｐ２）を用いて、最も相関値が高くなる３次元位置ｃ（ｐ３）、法線ベクトルｎ（ｐ３）を算出し、パッチテーブル１３３を更新し（ステップＳ１０８）、ステップＳ１０５に移行する。
【００６７】
次に、本実施例に係る３次元形状推定装置１００の効果について説明する。３次元形状推定装置１００は、補正されたパッチの法線ベクトルの方向を基にして、複数のカメラから第１参照カメラおよび第２参照カメラを判定し、パッチの３次元位置を更新する。第１参照カメラおよび第２参照カメラは、パッチ面に対して垂直方向に位置するカメラであり、被写体の境界部分周辺においても、画像データの被写体の領域が類似しやすいため、相関値が高くなる。これにより、被写体の３次元位置を精度良く推定することができる。
【００６８】
３次元形状推定装置１００は、パッチの３次元位置ｃ（ｐ２）を周辺位置で移動させつつ、第１参照カメラおよび第２参照カメラの画像データに基づく相関値が最大となる３次元位置ｃ（ｐ３）を探索し、パッチの新たな３次元位置として更新する。このため、被写体上のパッチの３次元位置をより正確に算出することができる。
【００６９】
３次元形状推定装置１００は、予め求めた法線ベクトルを補正（フィルタリング）するため、被写体の３次元位置の変化に応じた法線ベクトルの設定およびカメラ位置の選択が可能になる。補正の前後で法線ベクトルの変化が大きい部分は、被写体の形状が大きく変化している部分と見なせるため、相関位置算出用に使用するカメラを上記のように選択することで、パッチの３次元位置推定の改善が見込まれる。
【００７０】
ここで、各パッチの３次元位置（パッチの集合）を求めた後の利用方法の一例について説明する。例えば、パッチの集合を求めた後に、Poisson  Surface  Preconstruction等を用いて３次元形状の表面をMesh化する。Poisson  Surface  Preconstructionは、法線付き点群からMeshを生成する方法である。また、テクスチャを３次元形状の表面に貼ることにより被写体の３次元モデルを生成する。３次元形状表面のパッチの法線方向とカメラの位置関係から、パッチの３次元位置に近く、かつ、パッチに対して垂直なカメラを選択し、テクスチャの貼り付けを行う。上述したパッチの集合を求めた後の処理は、３次元形状推定装置１００が実行しても良いし、３次元形状推定装置１００からパッチの集合に関する情報を取得した外部装置が実行しても良い。
【００７１】
なお、本実施例では、一例として、法線ベクトルを補正した後に、パッチの３次元位置を微調整していたが、補正後の法線ベクトルと、補正前の法線ベクトルとの差が僅かである場合には、パッチの３次元位置を微調整する処理をスキップしても良い。例えば、３次元形状推定装置１００の判定部１４５および更新部１４６は、補正前の法線ベクトルと補正後の法線ベクトルとの差分が閾値未満である場合に、微調整する処理をスキップする。これにより、処理負荷を軽減することができる。
【００７２】
次に、上記実施例に示した３次元形状推定装置１００と同様の機能を実現するコンピュータのハードウェア構成の一例について説明する。図１４は、３次元形状推定装置と同様の機能を実現するコンピュータのハードウェア構成の一例を示す図である。
【００７３】
図１４に示すように、コンピュータ２００は、各種演算処理を実行するＣＰＵ２０１と、ユーザからのデータの入力を受け付ける入力装置２０２と、ディスプレイ２０３とを有する。また、コンピュータ２００は、記憶媒体からプログラム等を読み取る読み取り装置２０４と、有線または無線ネットワークを介して他のコンピュータとの間でデータの授受を行うインターフェース装置２０５とを有する。コンピュータ２００は、カメラ２０６に接続される。また、コンピュータ２００は、各種情報を一時記憶するＲＡＭ２０７と、ハードディスク装置２０８とを有する。そして、各装置２０１〜２０８は、バス２０９に接続される。
【００７４】
ハードディスク装置２０８は、特徴点抽出プログラム２０８ａ、特定プログラム２０８ｂ、補正プログラム２０８ｃ、判定プログラム２０８ｄ、更新プログラム２０８ｅを有する。ＣＰＵ２０１は、特徴点抽出プログラム２０８ａ、特定プログラム２０８ｂ、補正プログラム２０８ｃ、判定プログラム２０８ｄ、更新プログラム２０８ｅを読み出してＲＡＭ２０７に展開する。
【００７５】
特徴点抽出プログラム２０８ａは、特徴点抽出プロセス２０７ａとして機能する。特定プログラム２０８ｂは、特定プロセス２０７ｂとして機能する。補正プログラム２０８ｃは、補正プロセス２０７ｃとして機能する。判定プログラム２０８ｄは、判定プロセス２０７ｄとして機能する。更新プログラム２０８ｅは、更新プロセス２０７ｅとして機能する。
【００７６】
特徴点抽出プロセス２０７ａの処理は、特徴点抽出部１４２の処理に対応する。特定プロセス２０７ｂの処理は、特定部１４３の処理に対応する。補正プロセス２０７ｃの処理は、補正部１４４の処理に対応する。判定プロセス２０７ｄの処理は、判定部１４５の処理に対応する。更新プロセス２０７ｅの処理は、更新部１４６の処理に対応する。
【００７７】
以上の各実施例を含む実施形態に関し、さらに以下の付記を開示する。
【００７８】
（付記１）コンピュータが実行する３次元形状推定方法であって、
それぞれ異なる位置に配置された複数のカメラによって撮影された同一の被写体を含む複数の画像データについて、前記複数の画像データに含まれる特徴点同士の対応関係を基にして、前記被写体上に仮想的に設けた面である複数のパッチの法線ベクトルをそれぞれ特定し、
前記複数のパッチのうち、第１パッチの第１法線ベクトルを、前記第１パッチの周囲に位置する第２パッチの第２法線ベクトルを基にして補正し、
補正した前記第１法線ベクトルの方向を基にして、前記複数のカメラから基準カメラを判定し、
前記基準カメラに撮影された画像データに含まれる前記第１パッチに対応する領域の画素値と、他のカメラに撮影された画像データに含まれる前記第１パッチに対応する領域の画素値との相関値を基にして、前記第１パッチの位置を更新する
処理を実行することを特徴とする３次元形状推定方法。
【００７９】
（付記２）前記位置を補正する処理は、前記第１パッチの位置を移動させ、移動させた第１パッチの位置に対応する前記基準カメラに撮影された画像データの領域の画素値と、移動させた第１パッチの位置に対応する前記他のカメラに撮影された画像データの領域の画素値との相関値を算出する処理を繰り返し実行し、前記相関値が最大となる第１パッチの位置を、補正後の位置とすることを特徴とする付記１に記載の３次元形状推定方法。
【００８０】
（付記３）前記第１法線ベクトルを補正する処理は、前記第１法線ベクトルと、前記第２法線ベクトルとの加重平均を行うことで、前記第１法線ベクトルを補正することを特徴とする付記１または２に記載の３次元形状推定方法。
【００８１】
（付記４）コンピュータに、
それぞれ異なる位置に配置された複数のカメラによって撮影された同一の被写体を含む複数の画像データについて、前記複数の画像データに含まれる特徴点同士の対応関係を基にして、前記被写体上に仮想的に設けた面である複数のパッチの法線ベクトルをそれぞれ特定し、
前記複数のパッチのうち、第１パッチの第１法線ベクトルを、前記第１パッチの周囲に位置する第２パッチの第２法線ベクトルを基にして補正し、
補正した前記第１法線ベクトルの方向を基にして、前記複数のカメラから基準カメラを判定し、
前記基準カメラに撮影された画像データに含まれる前記第１パッチに対応する領域の画素値と、他のカメラに撮影された画像データに含まれる前記第１パッチに対応する領域の画素値との相関値を基にして、前記第１パッチの位置を更新する
処理を実行させることを特徴とする３次元形状推定プログラム。
【００８２】
（付記５）前記位置を補正する処理は、前記第１パッチの位置を移動させ、移動させた第１パッチの位置に対応する前記基準カメラに撮影された画像データの領域の画素値と、移動させた第１パッチの位置に対応する前記他のカメラに撮影された画像データの領域の画素値との相関値を算出する処理を繰り返し実行し、前記相関値が最大となる第１パッチの位置を、補正後の位置とすることを特徴とする付記４に記載の３次元形状推定プログラム。
【００８３】
（付記６）前記第１法線ベクトルを補正する処理は、前記第１法線ベクトルと、前記第２法線ベクトルとの加重平均を行うことで、前記第１法線ベクトルを補正することを特徴とする付記４または５に記載の３次元形状推定プログラム。
【００８４】
（付記７）それぞれ異なる位置に配置された複数のカメラによって撮影された同一の被写体を含む複数の画像データについて、前記複数の画像データに含まれる特徴点同士の対応関係を基にして、前記被写体上に仮想的に設けた面である複数のパッチの法線ベクトルをそれぞれ特定する特定部と、
前記複数のパッチのうち、第１パッチの第１法線ベクトルを、前記第１パッチの周囲に位置する第２パッチの第２法線ベクトルを基にして補正する補正部と、
補正した前記第１法線ベクトルの方向を基にして、前記複数のカメラから基準カメラを判定する判定部と、
前記基準カメラに撮影された画像データに含まれる前記第１パッチに対応する領域の画素値と、他のカメラに撮影された画像データに含まれる前記第１パッチに対応する領域の画素値との相関値を基にして、前記第１パッチの位置を更新する更新部と
を有することを特徴とする３次元形状推定装置。
【００８５】
（付記８）前記更新部は、前記第１パッチの位置を移動させ、移動させた第１パッチの位置に対応する前記基準カメラに撮影された画像データの領域の画素値と、移動させた第１パッチの位置に対応する前記他のカメラに撮影された画像データの領域の画素値との相関値を算出する処理を繰り返し実行し、前記相関値が最大となる第１パッチの位置を、補正後の位置とすることを特徴とする付記７に記載の３次元形状推定装置。
【００８６】
（付記９）前記補正部は、前記第１法線ベクトルと、前記第２法線ベクトルとの加重平均を行うことで、前記第１法線ベクトルを補正することを特徴とする付記７または８に記載の３次元形状推定装置。
【符号の説明】
【００８７】
３０ａ，３０ｂ，３０ｃ，３０ｄ，３０ｅ    カメラ
１００    ３次元形状推定装置
１１０    入力部
１２０    表示部
１３０    記憶部
１３１    画像バッファ
１３２    カメラ管理テーブル
１３３    パッチテーブル
１４０    制御部
１４１    取得部
１４２    特徴点抽出部
１４３    特定部
１４４    補正部
１４５    判定部
１４６    更新部
【図１】
2018194891.tif 000005
【図２】
2018194891.tif 000006
【図３】
2018194891.tif 000007
【図４】
2018194891.tif 000008
【図５】
2018194891.tif 000009
【図６】
2018194891.tif 000010
【図７】
2018194891.tif 000011
【図８】
2018194891.tif 000012
【図９】
2018194891.tif 000013
【図１０】
2018194891.tif 000014
【図１１】
2018194891.tif 000015
【図１２】
2018194891.tif 000016
【図１３】
2018194891.tif 000017
【図１４】
2018194891.tif 000018
【図１５】
2018194891.tif 000019
【図１６】
2018194891.tif 000020