(57)【特許請求の範囲】
【請求項１】
三次元モデルを生成する対象の物体を撮影した複数の画像から複数の特徴点を検出する特徴点検出手段と、
前記複数の特徴点を用いて前記複数の画像間の対応点を検出する対応点検出手段と、
前記複数の画像を用いて、三次元モデルデータを生成する三次元モデル生成手段と、
前記複数の画像の内の最後に撮影された画像の撮影位置を推定する撮影位置推定手段と、
前記生成された三次元モデルデータと、前記推定された撮影位置と、前記複数の画像間の対応点の内、前記最後に撮影された画像によって新たに検出された対応点の数とに基づいて、ユーザに、前記物体を次に撮影する位置を通知する通知制御手段とを具備し、
前記三次元モデル生成手段は、前記物体を新たに撮影した画像をさらに用いて、前記三次元モデルデータを更新する電子機器。
【請求項２】
前記通知制御手段は、前記電子機器を振動させることによって、前記次に撮影する位置を通知する請求項１記載の電子機器。
【請求項３】
前記通知制御手段は、前記複数の画像間の対応点の内、前記最後に撮影された画像によって新たに検出された対応点の数に基づいて、前記電子機器を振動させる振動の大きさを決定する請求項２記載の電子機器。
【請求項４】
前記通知制御手段は、前記三次元モデルデータに基づく三次元モデルの欠損領域を検出し、前記欠損領域の大きさに基づいて、前記電子機器を振動させる振動の大きさを決定する請求項２記載の電子機器。
【請求項５】
前記通知制御手段は、前記三次元モデルデータに基づく三次元モデルの欠損領域を検出し、前記撮影位置から前記欠損領域への方向に基づいて、前記電子機器を振動させる振動の方向を決定する請求項２記載の電子機器。
【請求項６】
前記通知制御手段は、前記電子機器に設けられた２以上の振動モジュールの各々を振動させる振動の大きさを制御することによって、前記決定された振動の方向に前記電子機器を振動させる請求項５記載の電子機器。
【請求項７】
前記通知制御手段は、前記次に撮影する位置を示す情報を画面に表示する請求項１記載の電子機器。
【請求項８】
前記通知制御手段は、前記次に撮影する位置を示す音声を出力する請求項１記載の電子機器。
【請求項９】
三次元モデルを生成する対象の物体を撮影した複数の画像から複数の特徴点を検出し、
前記複数の特徴点を用いて前記複数の画像間の対応点を検出し、
前記複数の画像を用いて、三次元モデルデータを生成し、
前記複数の画像の内の最後に撮影された画像の撮影位置を推定し、
前記生成された三次元モデルデータと、前記推定された撮影位置と、前記複数の画像間の対応点の内、前記最後に撮影された画像によって新たに検出された対応点の数とに基づいて、ユーザに、前記物体を次に撮影する位置を通知し、
前記三次元モデルデータを生成することは、前記物体を新たに撮影した画像をさらに用いて、前記三次元モデルデータを更新する三次元モデル生成支援方法。
【請求項１０】
コンピュータにより実行されるプログラムであって、前記プログラムは、
三次元モデルを生成する対象の物体を撮影した複数の画像から複数の特徴点を検出し、
前記複数の特徴点を用いて前記複数の画像間の対応点を検出し、
前記複数の画像を用いて、三次元モデルデータを生成し、
前記複数の画像の内の最後に撮影された画像の撮影位置を推定し、
前記生成された三次元モデルデータと、前記推定された撮影位置と、前記複数の画像間の対応点の内、前記最後に撮影された画像によって新たに検出された対応点の数とに基づいて、ユーザに、前記物体を次に撮影する位置を通知し、
前記三次元モデルデータを生成することは、前記物体を新たに撮影した画像をさらに用いて、前記三次元モデルデータを更新するものであるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、三次元モデルを生成する電子機器及び該機器に適用される三次元モデル生成支援方法に関する。
【背景技術】
【０００２】
物体を撮影した画像を用いて、その物体の三次元モデルを作成する様々な方法が提案されている。そのような方法の１つに、視体積交差法（shape from silhouette法）がある。視体積交差法は、シルエット画像を用いて物体の三次元形状を推定する方法である。視体積交差法では、シルエットを実空間に投影した視体積の中に物体が含まれるというシルエット制約に基づいて、物体の三次元形状が推定される。視体積交差法では、複数のシルエット画像に対応する視体積の共通部分（visual hull）を、物体の三次元形状として算出するので、様々な撮影位置や角度から物体を撮影することにより、算出される三次元形状を物体に近付けることができる。
【０００３】
上述のような方法では、適切な三次元モデルを得るために、様々な撮影位置や角度から物体を撮影する必要がある。しかし、適切な三次元モデルを得るのに十分な画像が撮影されたか否かを、物体を撮影しているユーザが判断することは困難である。そのため、撮影をしながら三次元モデルの生成を行い、適切な三次元モデルが生成されたときに撮影の終了をユーザに通知する方法が提案されている。これにより、適切な三次元モデルの作成に十分な画像が得られていないことや、適切な三次元モデルの作成に十分な画像が得られているにも関わらず、ユーザが撮影を継続してしまうこと等を防止することができる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００４−３４２００４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかし、撮影の終了を通知する方法では、物体の撮影を効率的に行うことは困難である。例えば、ユーザが、物体の表面の内、既に撮影された領域と未だ撮影されていない領域とを正確に把握することは困難である。また、撮影される位置や角度によっては、物体の一部にオクルージョンが発生することがある。ユーザが、オクルージョンによる影響を考慮して撮影を行うことは困難である可能性がある。
【０００６】
本発明は、三次元モデル生成のための画像を容易に取得できる電子機器及び三次元モデル作成支援方法を提供することを目的とする。
【課題を解決するための手段】
【０００７】
実施形態によれば、電子機器は、特徴点検出手段、対応点検出手段、三次元モデル生成手段、撮影位置推定手段及び通知制御手段を具備する。特徴点検出手段は、三次元モデルを生成する対象の物体を撮影した複数の画像から複数の特徴点を検出する。対応点検出手段は、前記複数の特徴点を用いて前記複数の画像間の対応点を検出する。三次元モデル生成手段は、前記複数の画像を用いて、三次元モデルデータを生成する。撮影位置推定手段は、前記複数の画像の内の最後に撮影された画像の撮影位置を推定する。通知制御手段は、前記生成された三次元モデルデータと、前記推定された撮影位置と、前記複数の画像間の対応点の内、前記最後に撮影された画像によって新たに検出された対応点の数とに基づいて、ユーザに、前記物体を次に撮影する位置を通知する。前記三次元モデル生成手段は、前記物体を新たに撮影した画像をさらに用いて、前記三次元モデルデータを更新する。
【図面の簡単な説明】
【０００８】
【図１】実施形態に係る電子機器の外観を示す斜視図。
【図２】同実施形態の電子機器の構成の例を示すブロック図。
【図３】同実施形態の電子機器を用いた三次元モデル生成のための操作の例を説明するための図。
【図４】同実施形態の電子機器によって実行される三次元モデル生成プログラムの構成の例を示すブロック図。
【図５】同実施形態の電子機器によって指示される欠損方向の例を説明するための概念図。
【図６】同実施形態の電子機器によって撮影場所を指示するための振動モジュールの構成の例を示す図。
【図７】同実施形態の電子機器に設けられる振動モジュールの配置の例を示す図。
【図８】同実施形態の電子機器によって実行される三次元モデル生成処理の手順の例を示すフローチャート。
【図９】同実施形態の電子機器によって実行される三次元モデル生成処理の手順の別の例を示すフローチャート。
【図１０】同実施形態の電子機器によって実行される欠損方向決定処理の手順の例を示すフローチャート。
【発明を実施するための形態】
【０００９】
以下、実施の形態について図面を参照して説明する。  
図１は、一実施形態に係る電子機器の外観を示す斜視図である。この電子機器は、例えばタブレットタイプのパーソナルコンピュータ（ＰＣ）１０として実現される。また、この電子機器は、スマートフォン、ＰＤＡ、ノートブックタイプのＰＣ等としても実現され得る。図１に示すように、本コンピュータ１０は、コンピュータ本体１１とタッチスクリーンディスプレイ１７とから構成される。
【００１０】
コンピュータ本体１１は、薄い箱形の筐体を有している。タッチスクリーンディスプレイ１７には、ＬＣＤ（liquid crystal display）１７Ａ及びタッチパネル１７Ｂが組み込まれている。タッチパネル１７Ｂは、ＬＣＤ１７Ａの画面を覆うように設けられる。タッチスクリーンディスプレイ１７は、コンピュータ本体１１の上面に重ね合わせるように取り付けられている。また、ＬＣＤ１７Ａの画面を囲む端部には、カメラモジュール１２と操作ボタン群１５とが配置されている。なお、カメラモジュール１２は、コンピュータ本体１１の背面に配置されてもよい。
【００１１】
コンピュータ本体１１の上側面には、本コンピュータ１０を電源オン／電源オフするためのパワーボタン、音量調節ボタン、メモリカードスロット等が配置されている。コンピュータ本体１１の下側面には、スピーカ等が配置されている。コンピュータ本体の右側面には、例えばＵＳＢ（universal serial bus）２．０規格のＵＳＢケーブルやＵＳＢデバイスを接続するためのＵＳＢコネクタ１３、ＨＤＭＩ（high-definition multimedia interface）規格に対応した外部ディスプレイ接続端子１等が設けられている。この外部ディスプレイ接続端子１は、デジタル映像信号を外部ディスプレイに出力するために用いられる。なお、カメラモジュール１２は、ＵＳＢコネクタ１３等を介して接続された外付けのカメラであってもよい。
【００１２】
図２は、本コンピュータ１０のシステム構成を示す図である。  
本コンピュータ１０は、図２に示されるように、ＣＰＵ１０１、ノースブリッジ１０２、主メモリ１０３、サウスブリッジ１０４、グラフィクスコントローラ１０５、サウンドコントローラ１０６、ＢＩＯＳ−ＲＯＭ１０７、ＬＡＮコントローラ１０８、ハードディスクドライブ（ＨＤＤ）１０９、Ｂｌｕｅｔｏｏｔｈ（登録商標）モジュール１１０、カメラモジュール１２、振動モジュール１４、無線ＬＡＮコントローラ１１２、エンベデッドコントローラ（ＥＣ）１１３、ＥＥＰＲＯＭ１１４、ＨＤＭＩ制御回路２等を備える。
【００１３】
ＣＰＵ１０１は、本コンピュータ１０内の各部の動作を制御するプロセッサである。ＣＰＵ１０１は、ＨＤＤ１０９から主メモリ１０３にロードされる、オペレーティングシステム（ＯＳ）２０１、三次元モデル生成プログラム（３Ｄモデル生成プログラム）２０２、各種アプリケーションプログラム等を実行する。三次元モデル生成プログラム２０２は、カメラモジュール１２によって撮影された画像を用いて三次元モデルデータを生成する三次元モデル生成機能を有する。例えば、カメラモジュール１２は、ユーザ（撮影者）が、カメラモジュール１２を用いて三次元モデルを作成する対象の物体（オブジェクトとも称する）を周囲から撮影することによって、その対象物体が様々な位置及び角度から撮影された画像を生成する。カメラモジュール１２は、生成した画像を三次元モデル生成プログラム２０２に出力する。三次元モデル生成プログラム２０２は、カメラモジュール１２によって生成された画像を用いて、対象物体の三次元モデルデータを生成する。なお、三次元モデル生成プログラム２０２は、カメラモジュール１２によって生成された動画像に含まれる画像フレームを用いて、対象物体の三次元モデルデータを生成してもよい。
【００１４】
また、ＣＰＵ１０１は、ＢＩＯＳ−ＲＯＭ１０７に格納されたＢＩＯＳも実行する。ＢＩＯＳは、ハードウェア制御のためのプログラムである。
【００１５】
ノースブリッジ１０２は、ＣＰＵ１０１のローカルバスとサウスブリッジ１０４との間を接続するブリッジデバイスである。ノースブリッジ１０２には、主メモリ１０３をアクセス制御するメモリコントローラも内蔵されている。また、ノースブリッジ１０２は、ＰＣＩ  ＥＸＰＲＥＳＳ規格のシリアルバスなどを介してグラフィクスコントローラ１０５との通信を実行する機能も有している。
【００１６】
グラフィクスコントローラ１０５は、本コンピュータ１０のディスプレイモニタとして使用されるＬＣＤ１７Ａを制御する表示コントローラである。このグラフィクスコントローラ１０５によって生成される表示信号はＬＣＤ１７Ａに送られる。ＬＣＤ１７Ａは、表示信号に基づいて映像を表示する。
【００１７】
ＨＤＭＩ端子１は、前述の外部ディスプレイ接続端子である。ＨＤＭＩ端子１は、非圧縮のデジタル映像信号とデジタルオーディオ信号とを１本のケーブルでテレビのような外部ディスプレイ装置に送出することができる。ＨＤＭＩ制御回路２は、ＨＤＭＩモニタと称される外部ディスプレイ装置にデジタル映像信号をＨＤＭＩ端子１を介して送出するためのインタフェースである。
【００１８】
サウスブリッジ１０４は、ＰＣＩ（Peripheral Component Interconnect）バス上の各デバイス及びＬＰＣ（Low Pin Count）バス上の各デバイスを制御する。また、サウスブリッジ１０４は、ＨＤＤ１０９を制御するためのＩＤＥ（Integrated Drive Electronics）コントローラを内蔵している。
【００１９】
サウスブリッジ１０４は、タッチパネル１７Ｂを制御するためのＵＳＢコントローラを内蔵している。タッチパネル１７Ｂは、ＬＣＤ１７Ａの画面上で入力を行うためのポインティングデバイスである。ユーザは、タッチパネル１７Ｂを用いて、ＬＣＤ１７Ａの画面に表示されたグラフィカルユーザインタフェース（ＧＵＩ）等を操作することができる。例えば、ユーザは、画面に表示されたボタンをタッチすることによって、当該ボタンに対応する機能の実行を指示することができる。また、このＵＳＢコントローラは、例えば、ＵＳＢコネクタ１３に接続されたＵＳＢ２．０規格のケーブルを介して外部機器との通信を実行する。
【００２０】
さらに、サウスブリッジ１０４は、サウンドコントローラ１０６との通信を実行する機能も有している。サウンドコントローラ１０６は音源デバイスであり、再生対象のオーディオデータをスピーカ１８Ａ，１８Ｂに出力する。ＬＡＮコントローラ１０８は、例えばＩＥＥＥ  ８０２．３規格の有線通信を実行する有線通信デバイスである。無線ＬＡＮコントローラ１１２は、例えばＩＥＥＥ  ８０２．１１ｇ規格の無線通信を実行する無線通信デバイスである。Ｂｌｕｅｔｏｏｔｈモジュール１１０は、外部機器とのＢｌｕｅｔｏｏｔｈ通信を実行する通信モジュールである。
【００２１】
振動モジュール１４は、振動を発生させるモジュールである。振動モジュール１４は、指定された大きさの振動を発生させることができる。また、振動モジュール１４は、指定された方向への振動を発生させることができる。振動モジュール１４の構成については、図６及び図７を参照して後述する。
【００２２】
ＥＣ１１３は、電力管理のためのエンベデッドコントローラを含む１チップマイクロコンピュータである。ＥＣ１１３は、ユーザによるパワーボタンの操作に応じて本コンピュータ１０を電源オン／電源オフする機能を有している。
【００２３】
次いで、図３は、三次元モデルを作成する対象の物体２が周囲から撮影される様子を示している。ユーザは、物体２の周囲でカメラモジュール１２（電子機器１０）を移動させることにより、物体２を様々な位置及び角度から撮影する。三次元モデル生成プログラム２０２は、撮影によって得られた画像群を用いて、物体２に対応する三次元モデルデータを生成する。三次元モデル生成プログラム２０２は、物体２の表面が漏れなく撮影されることによって、欠落した部分がない良好な三次元モデルを作成できる。電子機器１０では、振動モジュール１４による振動、スピーカ１８Ａ，１８Ｂによって出力される音声、ＬＣＤ１７Ａの画面に表示される情報等によって、物体２を次に撮影すべき位置（角度）をユーザに通知する。
【００２４】
図４は、電子機器１０によって実行される三次元モデル生成プログラム２０２の構成の例を示す。三次元モデル生成プログラム２０２は、物体２を撮影した複数の画像を用いて、物体２の三次元形状を示す三次元モデルデータを生成する。また、三次元モデル生成プログラム２０２は、三次元モデルデータの生成に用いられる画像を効率的に取得できるように、画像を撮影するカメラ１２の位置に関する情報をユーザに通知する。
【００２５】
以下では、説明を簡単にするために、カメラモジュール１２によって２枚目以降の画像が生成された際の処理を想定する。なお、１枚目の画像が生成（入力）された際には、適当な初期値を与えることによって、下記と同様の処理が実行される。また、カメラ１２の内部パラメータ（焦点距離、レンズ歪み、アスペクト、投影中心等）は既知であることを想定する。
【００２６】
三次元モデル生成プログラム２０２は、特徴点検出部３１、対応点検出部３２、カメラ位置・姿勢推定部３３、３Ｄモデルデータ生成部３４、及び通知制御部３５を備える。
【００２７】
特徴点検出部３１は、カメラモジュール１２によって生成されたＮ番目の画像を解析することによって、Ｎ番目の画像内の特徴点ＰＮを検出する。この特徴点Ｐは、ＳＩＦＴ（scale-invariant feature transform）やＳＵＲＦ（speeded up robust features）等による局所特徴量を用いて検出された画像内のエッジや角等を示し、一枚の画像から複数検出され得る。特徴点検出部３１は、検出された特徴点ＰＮを示す情報を、データ格納部（ＨＤＤ）１０９に格納された特徴点データ１０９Ａに追加する。したがって、特徴点データ１０９Ａは、Ｎ枚の画像それぞれから検出された特徴点Ｐ１〜ＰＮを示す情報を含む。各特徴点を示す情報は、例えば、その特徴点の画像上での座標、特徴量等を含む。特徴点検出部３１は、Ｎ番目の画像（すなわち、新たに生成された画像）に対応する特徴点データ１０９Ａが追加されたことを対応点検出部３２に通知する。
【００２８】
対応点検出部３２は、特徴点抽出部３１による通知に応じて、Ｎ番目の画像内の特徴点ＰＮに対応する、既に撮影された画像（すなわち、１番目からＮ−１番目までの画像）内の特徴点Ｐ１〜ＰＮ−１（以下、対応点とも称する）を検出する。対応点検出部３２は、例えば、テンプレートマッチングにより、１番目からＮ−１番目までの画像から検出された特徴点Ｐ１〜ＰＮ−１の内、Ｎ番目の画像内の特徴点ＰＮに対応する特徴点（対応点）を検出する。対応点検出部３２は、検出された対応点を示す情報を、データ格納部１０９に格納された対応点データ１０９Ｂに追加する。したがって、対応点データ１０９Ｂは、１番目からＮ番目までの画像から検出された特徴点Ｐ１〜ＰＮの画像間の対応関係を示す。したがって、各対応点を示す情報は、例えば、１枚目の画像内の特徴点Ｘと、２枚目の画像内の特徴点Ｙとが対応することを示す情報を含む。対応点検出部３２は、Ｎ番目の画像に対応する対応点データ１０９Ｂが追加されたことをカメラ位置・姿勢推定部３３に通知する。
【００２９】
カメラ位置・姿勢推定部３３は、対応点検出部３２による通知に応じて、Ｎ番目の画像（すなわち、最後に撮影された画像）が撮影された位置を推定する。具体的には、カメラ位置・姿勢推定部３３は、特徴点ＰＮの画像上での座標と、特徴点ＰＮに対応する三次元座標とを用いて、カメラ１２の位置及び姿勢（すなわち、カメラ１２の外部パラメータ）を推定する。なお、特徴点ＰＮに対応する三次元座標には、仮の３Ｄモデルデータ１０９Ｃに含まれるＰ１〜ＰＮ−１の三次元座標が用いられる。つまり、カメラ位置・姿勢推定部３３は、特徴点ＰＮの画像上での座標と、Ｎ−１番目までの画像を用いて推定された、特徴点ＰＮに対応する対応点の三次元座標とを用いて、カメラ１２の位置及び姿勢を推定する。カメラ位置・姿勢推定部３３は、カメラ１２の位置及び姿勢が推定されたことを３Ｄモデルデータ生成部３４に通知する。
【００３０】
なお、カメラ位置・姿勢推定部３３は、仮の３Ｄモデルデータ１０９Ｃに基づく仮の３Ｄモデルを様々な方向から投影したシルエット画像を生成し、生成されたシルエット画像と、Ｎ番目の画像から抽出されたシルエット画像とを照合することによって、カメラ１２の位置及び姿勢を推定してもよい。カメラ位置・姿勢推定部３３は、さらに、仮の３ＤモデルのテクスチャとＮ番目の画像とを照合することによって、カメラ１２の位置及び姿勢を推定してもよい。
【００３１】
３Ｄモデルデータ生成部３４は、カメラ位置・姿勢推定部３３による通知に応じて、Ｎ番目の画像内の特徴点ＰＮとその対応点とを用いて、特徴点ＰＮの三次元座標を算出する。３Ｄモデルデータ生成部３４は、算出された特徴点ＰＮの三次元座標を用いて、データ格納部１０９に格納された仮の３Ｄモデルデータ１０９Ｃを更新する。３Ｄモデルデータ生成部３４は、仮の３Ｄモデルデータ１０９Ｃが更新されたことを通知制御部３５に通知する。
【００３２】
通知制御部３５は、３Ｄモデルデータ生成部３４による通知に応じて、３Ｄモデルデータ生成部３４によって更新された仮の３Ｄモデルデータ１０９Ｃと、カメラ位置・姿勢推定部３３によって推定されたカメラ１２の位置とに基づいて、物体２を次に撮影する位置をユーザに通知する。通知制御部３５は、例えば、振動モジュール１４による振動、スピーカ１８Ａ，１８Ｂによって出力される音声、ＬＣＤ１７Ａの画面に表示される情報等によって、物体２を次に撮影すべき位置を通知する。
【００３３】
通知制御部３５は、例えば、新たに検出された対応点の数に基づいて、振動の大きさを決定する。この新たに検出された対応点の数は、例えば、ある画像内の特徴点に対応する別の画像内の特徴点が、Ｎ番目の画像によって初めて検出された数を示す。つまり、新たに検出された対応点は、１番目からＮ−１番目までの画像では、対応点が見つからなかった特徴点である。通知制御部３５は、新たに検出された対応点の数が多いほど、現在の位置で三次元モデルデータを生成するための情報がより多く得られている（三次元モデルデータ生成のための情報量が大きい）ものと見なし、振動モジュール１４によって発生する振動が大きく（強く）なるように設定する。また、通知制御部３５は、新たに検出された対応点の数が少ないほど、振動モジュール１４によって発生する振動が小さく（弱く）なるように設定する。
【００３４】
振動モジュール１４は、通知制御部３５による決定に応じた大きさで、振動を発生させる。振動モジュール１４は、大きな振動を発生させることにより、ユーザに現在の位置での撮影を継続することを通知する。振動モジュール１４は、小さな振動を発生させる（又は、振動を発生させない）ことにより、ユーザに現在の位置での撮影が不要であることを通知する。
【００３５】
ユーザは、振動の大きさに応じて、カメラ１２の位置を移動させる。具体的には、ユーザは、振動が大きい場合、現在の位置付近での撮影を継続する（例えば、現在の位置で物体２に対する角度を変えた撮影を行う）。これにより例えば、現在の撮影ではオクルージョンがある際にも、振動による通知に応じて、そのオクルージョンがない角度から物体２が撮影され、物体２の三次元形状を良好に復元できる。一方、振動が小さい場合、ユーザは、現在位置とは異なる位置から物体２が撮影されるようにカメラ１２を移動させる。これにより、撮影が不要な位置（画像が十分に取得された位置）で撮影が継続されてしまうことを回避できる。なお、新たに検出された対応点の数に応じて、画像や音声を出力してもよい。通知制御部３５は、例えば、現在の位置での撮影を継続することを指示する情報、又はカメラ１２を別の撮影位置に移動させることを指示する情報を、ＬＣＤ１７Ａの画面に表示する。また、通知制御部３５は、例えば、上記情報を示す音声（例えば、「現在の位置での撮影を継続してください」等）をスピーカ１８Ａ，１８Ｂから出力する。通知制御部３５は、さらに、新たに検出された対応点の数に応じた音量で、通知のための効果音をスピーカ１８Ａ，１８Ｂから出力してもよい。
【００３６】
また、通知制御部３５は、生成された仮の三次元モデルデータ１０９Ｃに基づく仮の三次元モデルの欠損度に応じて、物体２を次に撮影すべき位置を通知してもよい。  
具体的には、通知制御部３５は、生成された仮の三次元モデルデータ１０９Ｃを用いて、三次元モデルの欠損領域を検出する。そして、通知制御部３５は、検出された領域毎の欠損度を算出する（すなわち、欠損の大きさを数値化する）。欠損度は、例えば、欠損領域の大きさや欠損しているパッチの数を示す。
【００３７】
また、通知制御部３５は、カメラ１２の現在位置に対応する、仮の三次元モデルの欠損度を算出する。例えば、カメラ１２の現在位置を中心とした距離Ｄの範囲内で、仮の三次元モデルのパッチがＬだけ欠損しているとき、通知制御部３５は、現在位置に対応する欠損度として、Ｌ／Ｄ２を算出する。仮の三次元モデルのパッチが欠損しているがどうかは、例えば、物体２が所定の三次元形状（例えば、球体）であると仮定し、仮の三次元モデルに穴（パッチがない箇所）があるかどうかによって判定する。また、通知制御部３５は、カメラ１２の現在位置を中心とした距離Ｄの範囲内にある対応点数Ｍを用いて、現在位置に対応する欠損度として、Ｄ２／Ｍを算出してもよい。
【００３８】
通知制御部３５は、算出された現在位置に対応する欠損度に基づいて、振動の大きさを決定する。通知制御部３５は、例えば、現在位置に対応する欠損度が大きいほど、振動モジュール１４によって発生する振動が大きく（強く）なるように設定する。また、通知制御部３５は、例えば、現在位置に対応する欠損度が小さいほど、振動モジュール１４によって発生する振動が小さく（弱く）なるように設定する。
【００３９】
また、通知制御部３５は、現在位置と欠損領域毎の欠損度とに基づいて、振動によって指示する方向（欠損方向）を決定する。この欠損方向は、例えば、平行移動による方向や、現在位置での回転を示す方向である。そして、通知制御部３５は、決定された方向に基づいて、振動モジュール１４の振動パターンを決定する。通知制御部３５は、決定された方向に基づいて、例えば、電子機器１０内の複数箇所に設けられた複数の振動モジュール１４のいずれを振動させるかを決定する。
【００４０】
図５を参照して、欠損方向について説明する。ここでは、仮の三次元モデル２Ａに複数の欠損領域４４Ａ，４４Ｂ，４４Ｃがあり、それら複数の欠損領域４４Ａ，４４Ｂ，４４Ｃそれぞれの欠損度が算出されていることを想定する。
【００４１】
複数の欠損領域４４Ａ，４４Ｂ，４４Ｃがある場合、カメラ１２は、複数の欠損領域４４Ａ，４４Ｂ，４４Ｃの内の１つの欠損領域に誘導される。その１つの欠損領域を決定するために、仮の三次元モデル２Ａに対して、欠損領域の探索範囲４３が設定される。探索範囲４３は、例えば、仮の三次元モデル２Ａの物体中心（重心）４１を頂点とする円錐で表される。この円錐の大きさは、例えば、物体中心４１とカメラ１２とを結ぶ線分に対する角度θで決定される。
【００４２】
通知制御部３５は、仮の三次元モデル２Ａの欠損領域４４Ａ，４４Ｂ，４４Ｃの内、探索範囲４３内にある欠損領域４４Ｂ，４４Ｃを選択する。なお、探索範囲４３内に欠損領域が見つからなかった場合には、探索範囲４３を広げて（すなわち、角度θを大きくして）、欠損領域を探索する。通知制御部３５は、選択された欠損領域４４Ｂ，４４Ｃの内、欠損度が最大である欠損領域４４Ｂを選択する。そして、通知制御部３５は、選択された欠損領域４４Ｂ（欠損領域４４Ｂの内、カメラ１２の現在位置に近い領域）を撮影できる位置１２Ａを決定し、カメラ１２の現在位置と位置１２Ａとを結ぶ経路４５に沿って、カメラ１２を誘導する方向（欠損方向）４６を決定する。
【００４３】
振動モジュール１４は、通知制御部３５による決定に応じた大きさ及び振動パターン（方向）で、振動を発生させる。振動モジュール１４は、振動パターンによって示される方向で撮影を行うことをユーザに通知する。また、振動モジュール１４は、振動の大きさによって、撮影が必要な領域の大きさ（三次元モデルから欠落していると推定される領域の大きさ）をユーザに通知（フィードバック）する。なお、振動モジュール１４は、１回目の振動で欠損位置（次の撮影位置）を通知し、２回目の振動で欠損がなくなったことを通知してもよい。
【００４４】
ユーザは、振動パターンによって示される方向に応じて、カメラ１２の位置を移動させる。また、ユーザは、振動が大きい場合、移動させた位置付近において、様々な位置や角度から物体２を撮影する。これにより、欠損の大小がフィードバックされるので、ユーザは、直感的な撮影を行うことができる。また、物体２の表面全体を一度に撮影するのではなく、振動モジュール１４による指示に応じて、欠損領域毎に分割して（追加して）撮影することができるので、ユーザによる撮影が容易になる。つまり、撮影を中断し、次に撮影すべき位置１２Ａが算出された後に、振動モジュール１４による指示に応じて、欠損領域を撮影することができる。この方法では、三次元モデルデータ１０９Ｃの生成やカメラ位置・姿勢推定等の処理をリアルタイムで行う必要はないので、計算負荷を抑制することもできる。
【００４５】
なお、欠損度や欠損方向に応じて、画像や音声を出力してもよい。通知制御部３５は、例えば、現在撮影中の画像上に、カメラ１２を移動させる位置１２Ａを示す矢印を重ね合わせて、ＬＣＤ１７Ａの画面に表示する。また、通知制御部３５は、例えば、カメラ１２を移動させる位置１２Ａへの方向を示す音声（例えば、「カメラを右に移動してください」等）をスピーカ１８Ａ，１８Ｂから出力する。通知制御部３５は、さらに、欠損の大きさに応じた音量で、通知のための効果音をスピーカ１８Ａ，１８Ｂから出力してもよい。
【００４６】
また、図６は、振動モジュール１４の構成の例を示す。振動モジュール１４は、筒状（例えば、円筒状）の容器５１、磁性体５２、磁石５３Ａ，５３Ｂ、及びコイル５４を備える。磁性体５２は、例えば、球体である。磁性体５２は筒状の容器５１内に収められ、磁界の変化に応じて筒状の容器５１内を左右に移動する。磁石５３Ａ，５３Ｂは、例えば、容器５１を挟むように、容器５１中央の上部と下部とに配置される。また、コイル５４は、容器５１に対して、例えば右側に配置される。
【００４７】
容器５１内の磁界は、磁石５３Ａ，５３Ｂによる磁界と、コイル５４に電流が流れること（コイル５４の電源がＯＮになること）によって発生する磁界とに応じて変化する。そのため、例えば、コイル５４に電流が流れていない場合（すなわち、コイル５４の電源がＯＦＦになった場合）、容器５１内の磁性体５２は、磁石５３Ａ，５３Ｂによって生じる磁界によって、容器５１の中央付近に位置する。そして、コイル５４に電流が流れている場合（すなわち、コイル５４の電源がＯＮになった場合）、磁性体５２は容器５１内の右側（コイル５４側）に移動する。振動モジュール１４は、この移動によって、振動を発生する。すなわち、振動モジュール１４は、カメラ１２を欠損方向へ誘導するために、加速度を有する振動を発生させる。また、振動モジュール１４は、コイル５４によって生じる磁界の強さや振動の回数（磁性体５２が移動する回数）等によって、振動の大きさやパターンを制御する。
【００４８】
図７は、コンピュータ１０に設けられた振動モジュール１４の配置の例を示す。通知制御部３５は、コンピュータ１０に設けられた２以上の振動モジュール１４の各々を振動させる大きさを制御することによって、カメラ１２を誘導する方向（欠損方向）に向かってコンピュータ１０を振動させる。図７に示す例では、振動モジュール１４Ａ，１４Ｂ，１４Ｃ，１４Ｄはそれぞれ、コンピュータ１０の筐体内の右側、上部、左側、下部に配置されている。振動モジュール１４Ａ，１４Ｂ，１４Ｃ，１４Ｄは、カメラ１２を誘導する方向に応じて振動する。例えば、矢印５６で示す方向へカメラ１２を誘導したいとき、通知制御部３５は、振動モジュール１４Ａを強く振動させる。なお、振動モジュール１４は、カメラモジュール１２内に設けられてもよい。
【００４９】
以上の構成により、三次元モデル生成のための画像を容易に取得できる。三次元モデルデータ生成部３４は、物体２を撮影した複数の画像を用いて、物体２の三次元形状を示す三次元モデルデータ１０９Ｃ（再構成された三次元モデル）を生成する。通知制御部３５は、三次元モデルデータ１０９Ｃの生成に用いられる画像を効率的に取得できるように、次に画像を取得（撮影）するカメラ１２の位置を示す情報を、振動モジュール１４による振動、スピーカ１８Ａ，１８Ｂによって出力される音声、ＬＣＤ１７Ａの画面やＨＤＭＩ端子１等を介して接続された外部ディスプレイ（ＴＶなど）の画面に表示される情報等を用いて、ユーザに通知する。通知制御部３５は、現在の位置で取得された画像の情報量（新たな画像によって得られた対応点数）、又は現在の位置に対応する欠損度を、ユーザにフィードバックする。これによりユーザは、直感的な指示に応じて撮影を行うことができる。なお、通知制御部３５は、物体２の三次元形状だけでなく、物体表面のテクスチャや反射特性（鏡面反射）等も考慮して、カメラ１２を移動させる位置１２Ａを通知することができる。
【００５０】
次いで、図８のフローチャートを参照して、三次元モデル生成プログラム２０２によって実行される三次元モデル生成処理の手順の例について説明する。以下では、説明を簡単にするために、カメラモジュール１２によって２枚目以降の画像が生成された際の処理を想定する。なお、１枚目の画像が生成（入力）された際には、適当な初期値を与えることによって、下記と同様の処理が実行される。
【００５１】
まず、カメラモジュール１２は、対象の物体２を撮影することによって、物体２のＮ番目の画像を生成する（ブロックＢ１１）。なお、Ｎは、撮影された画像の枚数を示す。特徴点検出部３１は、生成されたＮ番目の画像を解析することによって、Ｎ番目の画像内の特徴点ＰＮを検出する（ブロックＢ１２）。この特徴点Ｐは、ＳＩＦＴやＳＵＲＦ等の局所特徴量を用いて検出された画像内のエッジや角等を示す。
【００５２】
次いで、対応点検出部３２は、新たに撮影された画像（すなわち、Ｎ番目の画像）から検出された特徴点ＰＮに対応する、既に撮影された画像（すなわち、１番目からＮ−１番目までの画像）から検出された特徴点Ｐ１〜ＰＮ−１（以下、対応点とも称する）を検出する（ブロックＢ１３）。つまり、対応点検出部３２は、Ｎ番目の画像内の特徴点ＰＮに対応する、１番目からＮ−１番目までの画像から検出された特徴点Ｐ１〜ＰＮ−１を検出する。
【００５３】
そして、カメラ位置・姿勢推定部３３は、特徴点ＰＮの画像上での座標と、対応する三次元座標とを用いて、カメラ１２の位置及び姿勢（すなわち、カメラ１２の外部パラメータ）を推定する（ブロックＢ１４）。なお、特徴点ＰＮに対応する三次元座標には、Ｎ−１番目までの画像を用いて３Ｄモデルデータ生成部３４によって既に推定された値が用いられる。
【００５４】
次いで、３Ｄモデルデータ生成部３４は、Ｎ番目の画像の特徴点ＰＮとその対応点とを用いて、特徴点ＰＮの三次元座標を算出することにより、仮の三次元モデルデータ１０９Ｃを生成する（ブロックＢ１５）。これにより、ブロックＢ１４におけるカメラ１２の位置及び姿勢推定に用いられる特徴点の三次元座標が更新される。そして、通知制御部３５は、撮影を終了するか否かを判定する（ブロックＢ１６）。具体的には、通知制御部３５は、例えば、仮の三次元モデルデータ１０９Ｃに基づく三次元モデル対して、テクスチャを良好にマッピングできるか否かを判定する。また、通知制御部３５は、例えば、仮の三次元モデルデータ１０９Ｃに基づく三次元モデルに欠損がないかどうかを判定する。
【００５５】
撮影を終了する場合（ブロックＢ１６のＹＥＳ）、３Ｄモデル生成処理を終了する。通知制御部３５は、例えば、終了を示す所定の振動パターンを振動モジュール１４で発生させることにより、処理の終了を通知する。
【００５６】
一方、撮影を終了しない場合（ブロックＢ１６のＮＯ）、通知制御部３５は、ブロックＢ１３において検出された対応点の内、新たに検出された対応点の数に基づいて、振動の大きさを決定する（ブロックＢ１７）。この新たに検出された対応点の数は、例えば、ある画像内の特徴点に対応する別の画像内の特徴点が、Ｎ番目の画像によって初めて検出された数を示す。つまり、新たに検出された対応点は、１番目からＮ−１番目までの画像では、対応点が見つからなかった特徴点である。通知制御部３５は、新たに検出された対応点の数が多いほど、現在の位置で三次元モデルデータを生成するための情報がより多く得られている（三次元モデルデータ生成のための情報量が大きい）ものと見なし、振動モジュール１４によって発生する振動が大きく（強く）なるように設定する。また、通知制御部３５は、新たに検出された対応点の数が少ないほど、振動モジュール１４によって発生する振動が小さく（弱く）なるように設定する。振動モジュール１４は、通知制御部３５による決定に応じた大きさで、振動を発生させる（ブロックＢ１８）。振動モジュール１４は、大きな振動を発生させることにより、ユーザに現在の位置での撮影を継続することを通知する。振動モジュール１４は、小さな振動を発生させる（又は、振動を発生させない）ことにより、ユーザに現在の位置での撮影が不要であることを通知する。
【００５７】
ユーザは、振動の大きさに応じて、カメラ１２の位置を移動させる。具体的には、ユーザは、振動が大きい場合、現在の位置付近での撮影を継続する（例えば、現在の位置で物体２に対する角度を変えた撮影を行う）。一方、振動が小さい場合、ユーザは、カメラ１２を移動させて、現在位置とは異なる位置から物体２を撮影する。
【００５８】
次いで、図９のフローチャートを参照して三次元モデル生成プログラム２０２によって実行される三次元モデル生成処理の手順の別の例について説明する。図８の説明と同様に、以下では、説明を簡単にするために、カメラモジュール１２によって２枚目以降の画像が生成された際の処理を想定する。なお、１枚目の画像が生成された際には、適当な初期値を与えることによって、下記と同様の処理が実行される。
【００５９】
まず、カメラモジュール１２は、対象物体２を撮影することによって、物体２のＮ番目の画像を生成する（ブロックＢ２０１）。なお、Ｎは、撮影された画像の枚数を示す。特徴点検出部３１は、生成されたＮ番目の画像を解析することによって、Ｎ番目の画像内の特徴点ＰＮを検出する（ブロックＢ２０２）。この特徴点Ｐは、ＳＩＦＴやＳＵＲＦ等の局所特徴量を用いて検出された画像内のエッジや角等を示す。
【００６０】
次いで、対応点検出部３２は、新たに撮影された画像（すなわち、Ｎ番目の画像）から検出された特徴点ＰＮに対応する、既に撮影された画像（すなわち、１番目からＮ−１番目までの画像）から検出された特徴点Ｐ１〜ＰＮ−１（以下、対応点とも称する）を検出する（ブロックＢ２０３）。つまり、対応点検出部３２は、Ｎ番目の画像内の特徴点ＰＮに対応する、１番目からＮ−１番目までの画像から検出された特徴点Ｐ１〜ＰＮ−１を検出する。
【００６１】
そして、カメラ位置・姿勢推定部３３は、特徴点ＰＮの画像上での座標と、対応する三次元座標とを用いて、カメラ１２の位置及び姿勢（すなわち、カメラ１２の外部パラメータ）を推定する（ブロックＢ２０４）。なお、特徴点ＰＮに対応する三次元座標には、Ｎ−１番目までの画像を用いて３Ｄモデルデータ生成部３４によって既に推定された値が用いられる。
【００６２】
次いで、３Ｄモデルデータ生成部３４は、Ｎ番目の画像の特徴点ＰＮとその対応点とを用いて、特徴点ＰＮの三次元座標を算出することにより、仮の三次元モデルデータ１０９Ｃを生成する（ブロックＢ２０５）。これにより、ブロックＢ２０４におけるカメラ１２の位置及び姿勢推定に用いられる特徴点の三次元座標が更新される。
【００６３】
通知制御部３５は、生成された仮の三次元モデルデータ１０９Ｃを用いて、仮の三次元モデル２Ａの欠損領域を検出する（ブロックＢ２０６）。通知制御部３５は、検出された領域毎の欠損度を算出する（ブロックＢ２０７）。そして、通知制御部３５は、算出された欠損度に基づいて、撮影を終了するか否かを判定する（ブロックＢ２０８）。通知制御部３５は、例えば、欠損領域が検出されない場合や、欠損領域毎の欠損度の内の最大値がしきい値未満である場合に撮影を終了すると判定する。
【００６４】
撮影を終了する場合（ブロックＢ２０８のＹＥＳ）、３Ｄモデル生成処理を終了する。通知制御部３５は、例えば、終了を示す所定の振動パターンを振動モジュール１４で発生させることにより、処理の終了を通知する。
【００６５】
一方、撮影を終了しない場合（ブロックＢ２０８のＮＯ）、通知制御部３５は、カメラ１２の現在位置に対応する、仮の三次元モデル２Ａの欠損度を算出する（ブロックＢ２０９）。そして、通知制御部３５は、算出された現在位置に対応する欠損度に基づいて、振動の大きさを決定する（ブロックＢ２１０）。通知制御部３５は、例えば、現在位置に対応する欠損度が大きいほど、振動モジュール１４によって発生する振動が大きく（強く）なるように設定する。また、通知制御部３５は、例えば、現在位置に対応する欠損度が小さいほど、振動モジュール１４によって発生する振動が小さく（弱く）なるように設定する。
【００６６】
また、通知制御部３５は、現在位置と欠損領域毎の欠損度とに基づいて、振動によって指示する方向（欠損方向）を決定する（ブロックＢ２１１）。この欠損方向を決定するための処理については、図１０を参照して後述する。通知制御部３５は、決定された方向に基づいて、振動モジュール１４の振動パターンを決定する（ブロックＢ２１２）。通知制御部３５は、決定された方向に基づいて、例えば、電子機器１０内の複数箇所に設けられた振動モジュール１４Ａ，１４Ｂ，１４Ｃ，１４Ｄのいずれを振動させるかを決定する。
【００６７】
振動モジュール１４は、通知制御部３５による決定に応じた大きさ及び振動パターンで、振動を発生させる（ブロックＢ２１３）。振動モジュール１４は、振動パターンによって示される方向で撮影を行うことをユーザに通知する。また、振動モジュール１４は、振動の大きさによって、撮影が必要な領域の大きさ（三次元モデルから欠落していると推定される領域の大きさ）をユーザに通知する。
【００６８】
ユーザは、振動パターンによって示される方向に応じて、カメラ１２の位置を移動させる。また、ユーザは、振動が大きい場合、移動させた位置付近において、様々な位置や角度から物体２を撮影する。
【００６９】
また、図１０のフローチャートは、欠損方向決定処理の手順の例を示す。  
通知制御部３５は、仮の三次元モデルデータ１０９Ｃに基づく仮の三次元モデル２Ａの欠損領域４４Ａ，４４Ｂ，４４Ｃの内、仮の三次元モデル２Ａの物体中心４１とカメラ１２の現在位置とに基づく探索範囲４３内にあり、且つ欠損度がしきい値ＥＴＨ以上である欠損領域４４Ｂ，４４Ｃを選択する（ブロックＢ３１）。探索範囲４３は、例えば、物体中心４１を頂点とする円錐で示される領域である。そして、通知制御部３５は、選択された欠損領域があるか否かを判定する（ブロックＢ３２）。
【００７０】
選択された欠損領域がない場合（ブロックＢ３２のＮＯ）、欠損領域の探索範囲４３を広げる（ブロックＢ３５）。そして、ブロックＢ３１に戻り、広げられた探索範囲４３内にあり、且つ欠損度がしきい値ＥＴＨ以上である欠損領域が選択される。
【００７１】
選択された欠損領域がある場合（ブロックＢ３２のＹＥＳ）、通知制御部３５は、選択された欠損領域４４Ｂ，４４Ｃの内、欠損度が最大である最大欠損領域４４Ｂを選択する（ブロックＢ３３）。そして、通知制御部３５は、カメラ１２の現在位置と最大欠損領域４４Ｂを撮影できる位置１２Ａとを結ぶ経路４５に沿って、カメラ１２を誘導する方向４６を決定する（ブロックＢ３４）。
【００７２】
以上説明したように、本実施形態によれば、三次元モデル生成のための画像を容易に取得できる。三次元モデルデータ生成部３４は、物体２を撮影した複数の画像を用いて、物体２の三次元形状を示す三次元モデルデータ１０９Ｃ（再構成された三次元モデル）を生成する。通知制御部３５は、三次元モデルデータ１０９Ｃの生成に用いられる画像を効率的に取得できるように、次に画像を取得（撮影）するカメラの位置１２Ａを示す情報を、振動モジュール１４による振動、スピーカ１８Ａ，１８Ｂによって出力される音声、ＬＣＤ１７Ａの画面やＨＤＭＩ端子１等を介して接続された外部ディスプレイ（ＴＶなど）の画面に表示される情報等を用いて、ユーザに通知する。ユーザが、その通知に従ってカメラ１２の位置や角度を変化させることにより、物体２の三次元形状を示す三次元モデルデータを生成するための画像を効率的に取得することができる。なお、通知制御部３５は、カメラ１２の現在位置と、次に画像を撮影するカメラの位置１２Ａとに基づいて、カメラ１２のシャッターボタンを押すタイミングをユーザに通知してもよい。
【００７３】
なお、本実施形態の３Ｄモデル生成処理の手順は全てソフトウェアによって実行することができる。このため、３Ｄモデル生成処理の手順を実行するプログラムを格納したコンピュータ読み取り可能な記憶媒体を通じてこのプログラムを通常のコンピュータにインストールして実行するだけで、本実施形態と同様の効果を容易に実現することができる。
【００７４】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００７５】
１２…カメラモジュール、１４…振動モジュール、１７Ａ…ＬＣＤ、１８Ａ，１８Ｂ…スピーカ、１０９…データ格納部、１０９Ａ…特徴点データ、１０９Ｂ…対応点データ、１０９Ｃ…仮の３Ｄモデルデータ、２０２…３Ｄモデル生成プログラム、３１…特徴点検出部、３２…対応点検出部、３３…カメラ位置・姿勢推定部、３４…３Ｄモデルデータ生成部、３５…通知制御部。
【図１】
0005269972.tif 000002
【図２】
0005269972.tif 000003
【図３】
0005269972.tif 000004
【図４】
0005269972.tif 000005
【図５】
0005269972.tif 000006
【図６】
0005269972.tif 000007
【図７】
0005269972.tif 000008
【図８】
0005269972.tif 000009
【図９】
0005269972.tif 000010
【図１０】
0005269972.tif 000011