説明

電子機器及び三次元モデル生成支援方法

【課題】 三次元モデル生成のための画像を容易に取得できる電子機器及び三次元モデル作成支援方法を提供すること。
【解決手段】 実施形態によれば、電子機器は、三次元モデル生成手段、撮影位置推定手段及び通知制御手段を具備する。三次元モデル生成手段は、三次元モデルを生成する対象の物体を撮影した複数の画像を用いて、三次元モデルデータを生成する。撮影位置推定手段は、前記複数の画像の内の最後に撮影された画像の撮影位置を推定する。通知制御手段は、前記生成された三次元モデルデータと前記推定された撮影位置とに基づいて、ユーザに、前記物体を次に撮影する位置を通知する。前記三次元モデル生成手段は、前記物体を新たに撮影した画像をさらに用いて、前記三次元モデルデータを更新する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、三次元モデルを生成する電子機器及び該機器に適用される三次元モデル生成支援方法に関する。
【背景技術】
【0002】
物体を撮影した画像を用いて、その物体の三次元モデルを作成する様々な方法が提案されている。そのような方法の1つに、視体積交差法(shape from silhouette法)がある。視体積交差法は、シルエット画像を用いて物体の三次元形状を推定する方法である。視体積交差法では、シルエットを実空間に投影した視体積の中に物体が含まれるというシルエット制約に基づいて、物体の三次元形状が推定される。視体積交差法では、複数のシルエット画像に対応する視体積の共通部分(visual hull)を、物体の三次元形状として算出するので、様々な撮影位置や角度から物体を撮影することにより、算出される三次元形状を物体に近付けることができる。
【0003】
上述のような方法では、適切な三次元モデルを得るために、様々な撮影位置や角度から物体を撮影する必要がある。しかし、適切な三次元モデルを得るのに十分な画像が撮影されたか否かを、物体を撮影しているユーザが判断することは困難である。そのため、撮影をしながら三次元モデルの生成を行い、適切な三次元モデルが生成されたときに撮影の終了をユーザに通知する方法が提案されている。これにより、適切な三次元モデルの作成に十分な画像が得られていないことや、適切な三次元モデルの作成に十分な画像が得られているにも関わらず、ユーザが撮影を継続してしまうこと等を防止することができる。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2004−342004号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかし、撮影の終了を通知する方法では、物体の撮影を効率的に行うことは困難である。例えば、ユーザが、物体の表面の内、既に撮影された領域と未だ撮影されていない領域とを正確に把握することは困難である。また、撮影される位置や角度によっては、物体の一部にオクルージョンが発生することがある。ユーザが、オクルージョンによる影響を考慮して撮影を行うことは困難である可能性がある。
【0006】
本発明は、三次元モデル生成のための画像を容易に取得できる電子機器及び三次元モデル作成支援方法を提供することを目的とする。
【課題を解決するための手段】
【0007】
実施形態によれば、電子機器は、三次元モデル生成手段、撮影位置推定手段及び通知制御手段を具備する。三次元モデル生成手段は、三次元モデルを生成する対象の物体を撮影した複数の画像を用いて、三次元モデルデータを生成する。撮影位置推定手段は、前記複数の画像の内の最後に撮影された画像の撮影位置を推定する。通知制御手段は、前記生成された三次元モデルデータと前記推定された撮影位置とに基づいて、ユーザに、前記物体を次に撮影する位置を通知する。前記三次元モデル生成手段は、前記物体を新たに撮影した画像をさらに用いて、前記三次元モデルデータを更新する。
【図面の簡単な説明】
【0008】
【図1】実施形態に係る電子機器の外観を示す斜視図。
【図2】同実施形態の電子機器の構成の例を示すブロック図。
【図3】同実施形態の電子機器を用いた三次元モデル生成のための操作の例を説明するための図。
【図4】同実施形態の電子機器によって実行される三次元モデル生成プログラムの構成の例を示すブロック図。
【図5】同実施形態の電子機器によって指示される欠損方向の例を説明するための概念図。
【図6】同実施形態の電子機器によって撮影場所を指示するための振動モジュールの構成の例を示す図。
【図7】同実施形態の電子機器に設けられる振動モジュールの配置の例を示す図。
【図8】同実施形態の電子機器によって実行される三次元モデル生成処理の手順の例を示すフローチャート。
【図9】同実施形態の電子機器によって実行される三次元モデル生成処理の手順の別の例を示すフローチャート。
【図10】同実施形態の電子機器によって実行される欠損方向決定処理の手順の例を示すフローチャート。
【発明を実施するための形態】
【0009】
以下、実施の形態について図面を参照して説明する。
図1は、一実施形態に係る電子機器の外観を示す斜視図である。この電子機器は、例えばタブレットタイプのパーソナルコンピュータ(PC)10として実現される。また、この電子機器は、スマートフォン、PDA、ノートブックタイプのPC等としても実現され得る。図1に示すように、本コンピュータ10は、コンピュータ本体11とタッチスクリーンディスプレイ17とから構成される。
【0010】
コンピュータ本体11は、薄い箱形の筐体を有している。タッチスクリーンディスプレイ17には、LCD(liquid crystal display)17A及びタッチパネル17Bが組み込まれている。タッチパネル17Bは、LCD17Aの画面を覆うように設けられる。タッチスクリーンディスプレイ17は、コンピュータ本体11の上面に重ね合わせるように取り付けられている。また、LCD17Aの画面を囲む端部には、カメラモジュール12と操作ボタン群15とが配置されている。なお、カメラモジュール12は、コンピュータ本体11の背面に配置されてもよい。
【0011】
コンピュータ本体11の上側面には、本コンピュータ10を電源オン/電源オフするためのパワーボタン、音量調節ボタン、メモリカードスロット等が配置されている。コンピュータ本体11の下側面には、スピーカ等が配置されている。コンピュータ本体の右側面には、例えばUSB(universal serial bus)2.0規格のUSBケーブルやUSBデバイスを接続するためのUSBコネクタ13、HDMI(high-definition multimedia interface)規格に対応した外部ディスプレイ接続端子1等が設けられている。この外部ディスプレイ接続端子1は、デジタル映像信号を外部ディスプレイに出力するために用いられる。なお、カメラモジュール12は、USBコネクタ13等を介して接続された外付けのカメラであってもよい。
【0012】
図2は、本コンピュータ10のシステム構成を示す図である。
本コンピュータ10は、図2に示されるように、CPU101、ノースブリッジ102、主メモリ103、サウスブリッジ104、グラフィクスコントローラ105、サウンドコントローラ106、BIOS−ROM107、LANコントローラ108、ハードディスクドライブ(HDD)109、Bluetooth(登録商標)モジュール110、カメラモジュール12、振動モジュール14、無線LANコントローラ112、エンベデッドコントローラ(EC)113、EEPROM114、HDMI制御回路2等を備える。
【0013】
CPU101は、本コンピュータ10内の各部の動作を制御するプロセッサである。CPU101は、HDD109から主メモリ103にロードされる、オペレーティングシステム(OS)201、三次元モデル生成プログラム(3Dモデル生成プログラム)202、各種アプリケーションプログラム等を実行する。三次元モデル生成プログラム202は、カメラモジュール12によって撮影された画像を用いて三次元モデルデータを生成する三次元モデル生成機能を有する。例えば、カメラモジュール12は、ユーザ(撮影者)が、カメラモジュール12を用いて三次元モデルを作成する対象の物体(オブジェクトとも称する)を周囲から撮影することによって、その対象物体が様々な位置及び角度から撮影された画像を生成する。カメラモジュール12は、生成した画像を三次元モデル生成プログラム202に出力する。三次元モデル生成プログラム202は、カメラモジュール12によって生成された画像を用いて、対象物体の三次元モデルデータを生成する。なお、三次元モデル生成プログラム202は、カメラモジュール12によって生成された動画像に含まれる画像フレームを用いて、対象物体の三次元モデルデータを生成してもよい。
【0014】
また、CPU101は、BIOS−ROM107に格納されたBIOSも実行する。BIOSは、ハードウェア制御のためのプログラムである。
【0015】
ノースブリッジ102は、CPU101のローカルバスとサウスブリッジ104との間を接続するブリッジデバイスである。ノースブリッジ102には、主メモリ103をアクセス制御するメモリコントローラも内蔵されている。また、ノースブリッジ102は、PCI EXPRESS規格のシリアルバスなどを介してグラフィクスコントローラ105との通信を実行する機能も有している。
【0016】
グラフィクスコントローラ105は、本コンピュータ10のディスプレイモニタとして使用されるLCD17Aを制御する表示コントローラである。このグラフィクスコントローラ105によって生成される表示信号はLCD17Aに送られる。LCD17Aは、表示信号に基づいて映像を表示する。
【0017】
HDMI端子1は、前述の外部ディスプレイ接続端子である。HDMI端子1は、非圧縮のデジタル映像信号とデジタルオーディオ信号とを1本のケーブルでテレビのような外部ディスプレイ装置に送出することができる。HDMI制御回路2は、HDMIモニタと称される外部ディスプレイ装置にデジタル映像信号をHDMI端子1を介して送出するためのインタフェースである。
【0018】
サウスブリッジ104は、PCI(Peripheral Component Interconnect)バス上の各デバイス及びLPC(Low Pin Count)バス上の各デバイスを制御する。また、サウスブリッジ104は、HDD109を制御するためのIDE(Integrated Drive Electronics)コントローラを内蔵している。
【0019】
サウスブリッジ104は、タッチパネル17Bを制御するためのUSBコントローラを内蔵している。タッチパネル17Bは、LCD17Aの画面上で入力を行うためのポインティングデバイスである。ユーザは、タッチパネル17Bを用いて、LCD17Aの画面に表示されたグラフィカルユーザインタフェース(GUI)等を操作することができる。例えば、ユーザは、画面に表示されたボタンをタッチすることによって、当該ボタンに対応する機能の実行を指示することができる。また、このUSBコントローラは、例えば、USBコネクタ13に接続されたUSB2.0規格のケーブルを介して外部機器との通信を実行する。
【0020】
さらに、サウスブリッジ104は、サウンドコントローラ106との通信を実行する機能も有している。サウンドコントローラ106は音源デバイスであり、再生対象のオーディオデータをスピーカ18A,18Bに出力する。LANコントローラ108は、例えばIEEE 802.3規格の有線通信を実行する有線通信デバイスである。無線LANコントローラ112は、例えばIEEE 802.11g規格の無線通信を実行する無線通信デバイスである。Bluetoothモジュール110は、外部機器とのBluetooth通信を実行する通信モジュールである。
【0021】
振動モジュール14は、振動を発生させるモジュールである。振動モジュール14は、指定された大きさの振動を発生させることができる。また、振動モジュール14は、指定された方向への振動を発生させることができる。振動モジュール14の構成については、図6及び図7を参照して後述する。
【0022】
EC113は、電力管理のためのエンベデッドコントローラを含む1チップマイクロコンピュータである。EC113は、ユーザによるパワーボタンの操作に応じて本コンピュータ10を電源オン/電源オフする機能を有している。
【0023】
次いで、図3は、三次元モデルを作成する対象の物体2が周囲から撮影される様子を示している。ユーザは、物体2の周囲でカメラモジュール12(電子機器10)を移動させることにより、物体2を様々な位置及び角度から撮影する。三次元モデル生成プログラム202は、撮影によって得られた画像群を用いて、物体2に対応する三次元モデルデータを生成する。三次元モデル生成プログラム202は、物体2の表面が漏れなく撮影されることによって、欠落した部分がない良好な三次元モデルを作成できる。電子機器10では、振動モジュール14による振動、スピーカ18A,18Bによって出力される音声、LCD17Aの画面に表示される情報等によって、物体2を次に撮影すべき位置(角度)をユーザに通知する。
【0024】
図4は、電子機器10によって実行される三次元モデル生成プログラム202の構成の例を示す。三次元モデル生成プログラム202は、物体2を撮影した複数の画像を用いて、物体2の三次元形状を示す三次元モデルデータを生成する。また、三次元モデル生成プログラム202は、三次元モデルデータの生成に用いられる画像を効率的に取得できるように、画像を撮影するカメラ12の位置に関する情報をユーザに通知する。
【0025】
以下では、説明を簡単にするために、カメラモジュール12によって2枚目以降の画像が生成された際の処理を想定する。なお、1枚目の画像が生成(入力)された際には、適当な初期値を与えることによって、下記と同様の処理が実行される。また、カメラ12の内部パラメータ(焦点距離、レンズ歪み、アスペクト、投影中心等)は既知であることを想定する。
【0026】
三次元モデル生成プログラム202は、特徴点検出部31、対応点検出部32、カメラ位置・姿勢推定部33、3Dモデルデータ生成部34、及び通知制御部35を備える。
【0027】
特徴点検出部31は、カメラモジュール12によって生成されたN番目の画像を解析することによって、N番目の画像内の特徴点Pを検出する。この特徴点Pは、SIFT(scale-invariant feature transform)やSURF(speeded up robust features)等による局所特徴量を用いて検出された画像内のエッジや角等を示し、一枚の画像から複数検出され得る。特徴点検出部31は、検出された特徴点Pを示す情報を、データ格納部(HDD)109に格納された特徴点データ109Aに追加する。したがって、特徴点データ109Aは、N枚の画像それぞれから検出された特徴点P〜Pを示す情報を含む。各特徴点を示す情報は、例えば、その特徴点の画像上での座標、特徴量等を含む。特徴点検出部31は、N番目の画像(すなわち、新たに生成された画像)に対応する特徴点データ109Aが追加されたことを対応点検出部32に通知する。
【0028】
対応点検出部32は、特徴点抽出部31による通知に応じて、N番目の画像内の特徴点Pに対応する、既に撮影された画像(すなわち、1番目からN−1番目までの画像)内の特徴点P〜PN−1(以下、対応点とも称する)を検出する。対応点検出部32は、例えば、テンプレートマッチングにより、1番目からN−1番目までの画像から検出された特徴点P〜PN−1の内、N番目の画像内の特徴点Pに対応する特徴点(対応点)を検出する。対応点検出部32は、検出された対応点を示す情報を、データ格納部109に格納された対応点データ109Bに追加する。したがって、対応点データ109Bは、1番目からN番目までの画像から検出された特徴点P〜Pの画像間の対応関係を示す。したがって、各対応点を示す情報は、例えば、1枚目の画像内の特徴点Xと、2枚目の画像内の特徴点Yとが対応することを示す情報を含む。対応点検出部32は、N番目の画像に対応する対応点データ109Bが追加されたことをカメラ位置・姿勢推定部33に通知する。
【0029】
カメラ位置・姿勢推定部33は、対応点検出部32による通知に応じて、N番目の画像(すなわち、最後に撮影された画像)が撮影された位置を推定する。具体的には、カメラ位置・姿勢推定部33は、特徴点Pの画像上での座標と、特徴点Pに対応する三次元座標とを用いて、カメラ12の位置及び姿勢(すなわち、カメラ12の外部パラメータ)を推定する。なお、特徴点Pに対応する三次元座標には、仮の3Dモデルデータ109Cに含まれるP〜PN−1の三次元座標が用いられる。つまり、カメラ位置・姿勢推定部33は、特徴点Pの画像上での座標と、N−1番目までの画像を用いて推定された、特徴点Pに対応する対応点の三次元座標とを用いて、カメラ12の位置及び姿勢を推定する。カメラ位置・姿勢推定部33は、カメラ12の位置及び姿勢が推定されたことを3Dモデルデータ生成部34に通知する。
【0030】
なお、カメラ位置・姿勢推定部33は、仮の3Dモデルデータ109Cに基づく仮の3Dモデルを様々な方向から投影したシルエット画像を生成し、生成されたシルエット画像と、N番目の画像から抽出されたシルエット画像とを照合することによって、カメラ12の位置及び姿勢を推定してもよい。カメラ位置・姿勢推定部33は、さらに、仮の3DモデルのテクスチャとN番目の画像とを照合することによって、カメラ12の位置及び姿勢を推定してもよい。
【0031】
3Dモデルデータ生成部34は、カメラ位置・姿勢推定部33による通知に応じて、N番目の画像内の特徴点Pとその対応点とを用いて、特徴点Pの三次元座標を算出する。3Dモデルデータ生成部34は、算出された特徴点Pの三次元座標を用いて、データ格納部109に格納された仮の3Dモデルデータ109Cを更新する。3Dモデルデータ生成部34は、仮の3Dモデルデータ109Cが更新されたことを通知制御部35に通知する。
【0032】
通知制御部35は、3Dモデルデータ生成部34による通知に応じて、3Dモデルデータ生成部34によって更新された仮の3Dモデルデータ109Cと、カメラ位置・姿勢推定部33によって推定されたカメラ12の位置とに基づいて、物体2を次に撮影する位置をユーザに通知する。通知制御部35は、例えば、振動モジュール14による振動、スピーカ18A,18Bによって出力される音声、LCD17Aの画面に表示される情報等によって、物体2を次に撮影すべき位置を通知する。
【0033】
通知制御部35は、例えば、新たに検出された対応点の数に基づいて、振動の大きさを決定する。この新たに検出された対応点の数は、例えば、ある画像内の特徴点に対応する別の画像内の特徴点が、N番目の画像によって初めて検出された数を示す。つまり、新たに検出された対応点は、1番目からN−1番目までの画像では、対応点が見つからなかった特徴点である。通知制御部35は、新たに検出された対応点の数が多いほど、現在の位置で三次元モデルデータを生成するための情報がより多く得られている(三次元モデルデータ生成のための情報量が大きい)ものと見なし、振動モジュール14によって発生する振動が大きく(強く)なるように設定する。また、通知制御部35は、新たに検出された対応点の数が少ないほど、振動モジュール14によって発生する振動が小さく(弱く)なるように設定する。
【0034】
振動モジュール14は、通知制御部35による決定に応じた大きさで、振動を発生させる。振動モジュール14は、大きな振動を発生させることにより、ユーザに現在の位置での撮影を継続することを通知する。振動モジュール14は、小さな振動を発生させる(又は、振動を発生させない)ことにより、ユーザに現在の位置での撮影が不要であることを通知する。
【0035】
ユーザは、振動の大きさに応じて、カメラ12の位置を移動させる。具体的には、ユーザは、振動が大きい場合、現在の位置付近での撮影を継続する(例えば、現在の位置で物体2に対する角度を変えた撮影を行う)。これにより例えば、現在の撮影ではオクルージョンがある際にも、振動による通知に応じて、そのオクルージョンがない角度から物体2が撮影され、物体2の三次元形状を良好に復元できる。一方、振動が小さい場合、ユーザは、現在位置とは異なる位置から物体2が撮影されるようにカメラ12を移動させる。これにより、撮影が不要な位置(画像が十分に取得された位置)で撮影が継続されてしまうことを回避できる。なお、新たに検出された対応点の数に応じて、画像や音声を出力してもよい。通知制御部35は、例えば、現在の位置での撮影を継続することを指示する情報、又はカメラ12を別の撮影位置に移動させることを指示する情報を、LCD17Aの画面に表示する。また、通知制御部35は、例えば、上記情報を示す音声(例えば、「現在の位置での撮影を継続してください」等)をスピーカ18A,18Bから出力する。通知制御部35は、さらに、新たに検出された対応点の数に応じた音量で、通知のための効果音をスピーカ18A,18Bから出力してもよい。
【0036】
また、通知制御部35は、生成された仮の三次元モデルデータ109Cに基づく仮の三次元モデルの欠損度に応じて、物体2を次に撮影すべき位置を通知してもよい。
具体的には、通知制御部35は、生成された仮の三次元モデルデータ109Cを用いて、三次元モデルの欠損領域を検出する。そして、通知制御部35は、検出された領域毎の欠損度を算出する(すなわち、欠損の大きさを数値化する)。欠損度は、例えば、欠損領域の大きさや欠損しているパッチの数を示す。
【0037】
また、通知制御部35は、カメラ12の現在位置に対応する、仮の三次元モデルの欠損度を算出する。例えば、カメラ12の現在位置を中心とした距離Dの範囲内で、仮の三次元モデルのパッチがLだけ欠損しているとき、通知制御部35は、現在位置に対応する欠損度として、L/Dを算出する。仮の三次元モデルのパッチが欠損しているがどうかは、例えば、物体2が所定の三次元形状(例えば、球体)であると仮定し、仮の三次元モデルに穴(パッチがない箇所)があるかどうかによって判定する。また、通知制御部35は、カメラ12の現在位置を中心とした距離Dの範囲内にある対応点数Mを用いて、現在位置に対応する欠損度として、D/Mを算出してもよい。
【0038】
通知制御部35は、算出された現在位置に対応する欠損度に基づいて、振動の大きさを決定する。通知制御部35は、例えば、現在位置に対応する欠損度が大きいほど、振動モジュール14によって発生する振動が大きく(強く)なるように設定する。また、通知制御部35は、例えば、現在位置に対応する欠損度が小さいほど、振動モジュール14によって発生する振動が小さく(弱く)なるように設定する。
【0039】
また、通知制御部35は、現在位置と欠損領域毎の欠損度とに基づいて、振動によって指示する方向(欠損方向)を決定する。この欠損方向は、例えば、平行移動による方向や、現在位置での回転を示す方向である。そして、通知制御部35は、決定された方向に基づいて、振動モジュール14の振動パターンを決定する。通知制御部35は、決定された方向に基づいて、例えば、電子機器10内の複数箇所に設けられた複数の振動モジュール14のいずれを振動させるかを決定する。
【0040】
図5を参照して、欠損方向について説明する。ここでは、仮の三次元モデル2Aに複数の欠損領域44A,44B,44Cがあり、それら複数の欠損領域44A,44B,44Cそれぞれの欠損度が算出されていることを想定する。
【0041】
複数の欠損領域44A,44B,44Cがある場合、カメラ12は、複数の欠損領域44A,44B,44Cの内の1つの欠損領域に誘導される。その1つの欠損領域を決定するために、仮の三次元モデル2Aに対して、欠損領域の探索範囲43が設定される。探索範囲43は、例えば、仮の三次元モデル2Aの物体中心(重心)41を頂点とする円錐で表される。この円錐の大きさは、例えば、物体中心41とカメラ12とを結ぶ線分に対する角度θで決定される。
【0042】
通知制御部35は、仮の三次元モデル2Aの欠損領域44A,44B,44Cの内、探索範囲43内にある欠損領域44B,44Cを選択する。なお、探索範囲43内に欠損領域が見つからなかった場合には、探索範囲43を広げて(すなわち、角度θを大きくして)、欠損領域を探索する。通知制御部35は、選択された欠損領域44B,44Cの内、欠損度が最大である欠損領域44Bを選択する。そして、通知制御部35は、選択された欠損領域44B(欠損領域44Bの内、カメラ12の現在位置に近い領域)を撮影できる位置12Aを決定し、カメラ12の現在位置と位置12Aとを結ぶ経路45に沿って、カメラ12を誘導する方向(欠損方向)46を決定する。
【0043】
振動モジュール14は、通知制御部35による決定に応じた大きさ及び振動パターン(方向)で、振動を発生させる。振動モジュール14は、振動パターンによって示される方向で撮影を行うことをユーザに通知する。また、振動モジュール14は、振動の大きさによって、撮影が必要な領域の大きさ(三次元モデルから欠落していると推定される領域の大きさ)をユーザに通知(フィードバック)する。なお、振動モジュール14は、1回目の振動で欠損位置(次の撮影位置)を通知し、2回目の振動で欠損がなくなったことを通知してもよい。
【0044】
ユーザは、振動パターンによって示される方向に応じて、カメラ12の位置を移動させる。また、ユーザは、振動が大きい場合、移動させた位置付近において、様々な位置や角度から物体2を撮影する。これにより、欠損の大小がフィードバックされるので、ユーザは、直感的な撮影を行うことができる。また、物体2の表面全体を一度に撮影するのではなく、振動モジュール14による指示に応じて、欠損領域毎に分割して(追加して)撮影することができるので、ユーザによる撮影が容易になる。つまり、撮影を中断し、次に撮影すべき位置12Aが算出された後に、振動モジュール14による指示に応じて、欠損領域を撮影することができる。この方法では、三次元モデルデータ109Cの生成やカメラ位置・姿勢推定等の処理をリアルタイムで行う必要はないので、計算負荷を抑制することもできる。
【0045】
なお、欠損度や欠損方向に応じて、画像や音声を出力してもよい。通知制御部35は、例えば、現在撮影中の画像上に、カメラ12を移動させる位置12Aを示す矢印を重ね合わせて、LCD17Aの画面に表示する。また、通知制御部35は、例えば、カメラ12を移動させる位置12Aへの方向を示す音声(例えば、「カメラを右に移動してください」等)をスピーカ18A,18Bから出力する。通知制御部35は、さらに、欠損の大きさに応じた音量で、通知のための効果音をスピーカ18A,18Bから出力してもよい。
【0046】
また、図6は、振動モジュール14の構成の例を示す。振動モジュール14は、筒状(例えば、円筒状)の容器51、磁性体52、磁石53A,53B、及びコイル54を備える。磁性体52は、例えば、球体である。磁性体52は筒状の容器51内に収められ、磁界の変化に応じて筒状の容器51内を左右に移動する。磁石53A,53Bは、例えば、容器51を挟むように、容器51中央の上部と下部とに配置される。また、コイル54は、容器51に対して、例えば右側に配置される。
【0047】
容器51内の磁界は、磁石53A,53Bによる磁界と、コイル54に電流が流れること(コイル54の電源がONになること)によって発生する磁界とに応じて変化する。そのため、例えば、コイル54に電流が流れていない場合(すなわち、コイル54の電源がOFFになった場合)、容器51内の磁性体52は、磁石53A,53Bによって生じる磁界によって、容器51の中央付近に位置する。そして、コイル54に電流が流れている場合(すなわち、コイル54の電源がONになった場合)、磁性体52は容器51内の右側(コイル54側)に移動する。振動モジュール14は、この移動によって、振動を発生する。すなわち、振動モジュール14は、カメラ12を欠損方向へ誘導するために、加速度を有する振動を発生させる。また、振動モジュール14は、コイル54によって生じる磁界の強さや振動の回数(磁性体52が移動する回数)等によって、振動の大きさやパターンを制御する。
【0048】
図7は、コンピュータ10に設けられた振動モジュール14の配置の例を示す。通知制御部35は、コンピュータ10に設けられた2以上の振動モジュール14の各々を振動させる大きさを制御することによって、カメラ12を誘導する方向(欠損方向)に向かってコンピュータ10を振動させる。図7に示す例では、振動モジュール14A,14B,14C,14Dはそれぞれ、コンピュータ10の筐体内の右側、上部、左側、下部に配置されている。振動モジュール14A,14B,14C,14Dは、カメラ12を誘導する方向に応じて振動する。例えば、矢印56で示す方向へカメラ12を誘導したいとき、通知制御部35は、振動モジュール14Aを強く振動させる。なお、振動モジュール14は、カメラモジュール12内に設けられてもよい。
【0049】
以上の構成により、三次元モデル生成のための画像を容易に取得できる。三次元モデルデータ生成部34は、物体2を撮影した複数の画像を用いて、物体2の三次元形状を示す三次元モデルデータ109C(再構成された三次元モデル)を生成する。通知制御部35は、三次元モデルデータ109Cの生成に用いられる画像を効率的に取得できるように、次に画像を取得(撮影)するカメラ12の位置を示す情報を、振動モジュール14による振動、スピーカ18A,18Bによって出力される音声、LCD17Aの画面やHDMI端子1等を介して接続された外部ディスプレイ(TVなど)の画面に表示される情報等を用いて、ユーザに通知する。通知制御部35は、現在の位置で取得された画像の情報量(新たな画像によって得られた対応点数)、又は現在の位置に対応する欠損度を、ユーザにフィードバックする。これによりユーザは、直感的な指示に応じて撮影を行うことができる。なお、通知制御部35は、物体2の三次元形状だけでなく、物体表面のテクスチャや反射特性(鏡面反射)等も考慮して、カメラ12を移動させる位置12Aを通知することができる。
【0050】
次いで、図8のフローチャートを参照して、三次元モデル生成プログラム202によって実行される三次元モデル生成処理の手順の例について説明する。以下では、説明を簡単にするために、カメラモジュール12によって2枚目以降の画像が生成された際の処理を想定する。なお、1枚目の画像が生成(入力)された際には、適当な初期値を与えることによって、下記と同様の処理が実行される。
【0051】
まず、カメラモジュール12は、対象の物体2を撮影することによって、物体2のN番目の画像を生成する(ブロックB11)。なお、Nは、撮影された画像の枚数を示す。特徴点検出部31は、生成されたN番目の画像を解析することによって、N番目の画像内の特徴点Pを検出する(ブロックB12)。この特徴点Pは、SIFTやSURF等の局所特徴量を用いて検出された画像内のエッジや角等を示す。
【0052】
次いで、対応点検出部32は、新たに撮影された画像(すなわち、N番目の画像)から検出された特徴点Pに対応する、既に撮影された画像(すなわち、1番目からN−1番目までの画像)から検出された特徴点P〜PN−1(以下、対応点とも称する)を検出する(ブロックB13)。つまり、対応点検出部32は、N番目の画像内の特徴点Pに対応する、1番目からN−1番目までの画像から検出された特徴点P〜PN−1を検出する。
【0053】
そして、カメラ位置・姿勢推定部33は、特徴点Pの画像上での座標と、対応する三次元座標とを用いて、カメラ12の位置及び姿勢(すなわち、カメラ12の外部パラメータ)を推定する(ブロックB14)。なお、特徴点Pに対応する三次元座標には、N−1番目までの画像を用いて3Dモデルデータ生成部34によって既に推定された値が用いられる。
【0054】
次いで、3Dモデルデータ生成部34は、N番目の画像の特徴点Pとその対応点とを用いて、特徴点Pの三次元座標を算出することにより、仮の三次元モデルデータ109Cを生成する(ブロックB15)。これにより、ブロックB14におけるカメラ12の位置及び姿勢推定に用いられる特徴点の三次元座標が更新される。そして、通知制御部35は、撮影を終了するか否かを判定する(ブロックB16)。具体的には、通知制御部35は、例えば、仮の三次元モデルデータ109Cに基づく三次元モデル対して、テクスチャを良好にマッピングできるか否かを判定する。また、通知制御部35は、例えば、仮の三次元モデルデータ109Cに基づく三次元モデルに欠損がないかどうかを判定する。
【0055】
撮影を終了する場合(ブロックB16のYES)、3Dモデル生成処理を終了する。通知制御部35は、例えば、終了を示す所定の振動パターンを振動モジュール14で発生させることにより、処理の終了を通知する。
【0056】
一方、撮影を終了しない場合(ブロックB16のNO)、通知制御部35は、ブロックB13において検出された対応点の内、新たに検出された対応点の数に基づいて、振動の大きさを決定する(ブロックB17)。この新たに検出された対応点の数は、例えば、ある画像内の特徴点に対応する別の画像内の特徴点が、N番目の画像によって初めて検出された数を示す。つまり、新たに検出された対応点は、1番目からN−1番目までの画像では、対応点が見つからなかった特徴点である。通知制御部35は、新たに検出された対応点の数が多いほど、現在の位置で三次元モデルデータを生成するための情報がより多く得られている(三次元モデルデータ生成のための情報量が大きい)ものと見なし、振動モジュール14によって発生する振動が大きく(強く)なるように設定する。また、通知制御部35は、新たに検出された対応点の数が少ないほど、振動モジュール14によって発生する振動が小さく(弱く)なるように設定する。振動モジュール14は、通知制御部35による決定に応じた大きさで、振動を発生させる(ブロックB18)。振動モジュール14は、大きな振動を発生させることにより、ユーザに現在の位置での撮影を継続することを通知する。振動モジュール14は、小さな振動を発生させる(又は、振動を発生させない)ことにより、ユーザに現在の位置での撮影が不要であることを通知する。
【0057】
ユーザは、振動の大きさに応じて、カメラ12の位置を移動させる。具体的には、ユーザは、振動が大きい場合、現在の位置付近での撮影を継続する(例えば、現在の位置で物体2に対する角度を変えた撮影を行う)。一方、振動が小さい場合、ユーザは、カメラ12を移動させて、現在位置とは異なる位置から物体2を撮影する。
【0058】
次いで、図9のフローチャートを参照して三次元モデル生成プログラム202によって実行される三次元モデル生成処理の手順の別の例について説明する。図8の説明と同様に、以下では、説明を簡単にするために、カメラモジュール12によって2枚目以降の画像が生成された際の処理を想定する。なお、1枚目の画像が生成された際には、適当な初期値を与えることによって、下記と同様の処理が実行される。
【0059】
まず、カメラモジュール12は、対象物体2を撮影することによって、物体2のN番目の画像を生成する(ブロックB201)。なお、Nは、撮影された画像の枚数を示す。特徴点検出部31は、生成されたN番目の画像を解析することによって、N番目の画像内の特徴点Pを検出する(ブロックB202)。この特徴点Pは、SIFTやSURF等の局所特徴量を用いて検出された画像内のエッジや角等を示す。
【0060】
次いで、対応点検出部32は、新たに撮影された画像(すなわち、N番目の画像)から検出された特徴点Pに対応する、既に撮影された画像(すなわち、1番目からN−1番目までの画像)から検出された特徴点P〜PN−1(以下、対応点とも称する)を検出する(ブロックB203)。つまり、対応点検出部32は、N番目の画像内の特徴点Pに対応する、1番目からN−1番目までの画像から検出された特徴点P〜PN−1を検出する。
【0061】
そして、カメラ位置・姿勢推定部33は、特徴点Pの画像上での座標と、対応する三次元座標とを用いて、カメラ12の位置及び姿勢(すなわち、カメラ12の外部パラメータ)を推定する(ブロックB204)。なお、特徴点Pに対応する三次元座標には、N−1番目までの画像を用いて3Dモデルデータ生成部34によって既に推定された値が用いられる。
【0062】
次いで、3Dモデルデータ生成部34は、N番目の画像の特徴点Pとその対応点とを用いて、特徴点Pの三次元座標を算出することにより、仮の三次元モデルデータ109Cを生成する(ブロックB205)。これにより、ブロックB204におけるカメラ12の位置及び姿勢推定に用いられる特徴点の三次元座標が更新される。
【0063】
通知制御部35は、生成された仮の三次元モデルデータ109Cを用いて、仮の三次元モデル2Aの欠損領域を検出する(ブロックB206)。通知制御部35は、検出された領域毎の欠損度を算出する(ブロックB207)。そして、通知制御部35は、算出された欠損度に基づいて、撮影を終了するか否かを判定する(ブロックB208)。通知制御部35は、例えば、欠損領域が検出されない場合や、欠損領域毎の欠損度の内の最大値がしきい値未満である場合に撮影を終了すると判定する。
【0064】
撮影を終了する場合(ブロックB208のYES)、3Dモデル生成処理を終了する。通知制御部35は、例えば、終了を示す所定の振動パターンを振動モジュール14で発生させることにより、処理の終了を通知する。
【0065】
一方、撮影を終了しない場合(ブロックB208のNO)、通知制御部35は、カメラ12の現在位置に対応する、仮の三次元モデル2Aの欠損度を算出する(ブロックB209)。そして、通知制御部35は、算出された現在位置に対応する欠損度に基づいて、振動の大きさを決定する(ブロックB210)。通知制御部35は、例えば、現在位置に対応する欠損度が大きいほど、振動モジュール14によって発生する振動が大きく(強く)なるように設定する。また、通知制御部35は、例えば、現在位置に対応する欠損度が小さいほど、振動モジュール14によって発生する振動が小さく(弱く)なるように設定する。
【0066】
また、通知制御部35は、現在位置と欠損領域毎の欠損度とに基づいて、振動によって指示する方向(欠損方向)を決定する(ブロックB211)。この欠損方向を決定するための処理については、図10を参照して後述する。通知制御部35は、決定された方向に基づいて、振動モジュール14の振動パターンを決定する(ブロックB212)。通知制御部35は、決定された方向に基づいて、例えば、電子機器10内の複数箇所に設けられた振動モジュール14A,14B,14C,14Dのいずれを振動させるかを決定する。
【0067】
振動モジュール14は、通知制御部35による決定に応じた大きさ及び振動パターンで、振動を発生させる(ブロックB213)。振動モジュール14は、振動パターンによって示される方向で撮影を行うことをユーザに通知する。また、振動モジュール14は、振動の大きさによって、撮影が必要な領域の大きさ(三次元モデルから欠落していると推定される領域の大きさ)をユーザに通知する。
【0068】
ユーザは、振動パターンによって示される方向に応じて、カメラ12の位置を移動させる。また、ユーザは、振動が大きい場合、移動させた位置付近において、様々な位置や角度から物体2を撮影する。
【0069】
また、図10のフローチャートは、欠損方向決定処理の手順の例を示す。
通知制御部35は、仮の三次元モデルデータ109Cに基づく仮の三次元モデル2Aの欠損領域44A,44B,44Cの内、仮の三次元モデル2Aの物体中心41とカメラ12の現在位置とに基づく探索範囲43内にあり、且つ欠損度がしきい値ETH以上である欠損領域44B,44Cを選択する(ブロックB31)。探索範囲43は、例えば、物体中心41を頂点とする円錐で示される領域である。そして、通知制御部35は、選択された欠損領域があるか否かを判定する(ブロックB32)。
【0070】
選択された欠損領域がない場合(ブロックB32のNO)、欠損領域の探索範囲43を広げる(ブロックB35)。そして、ブロックB31に戻り、広げられた探索範囲43内にあり、且つ欠損度がしきい値ETH以上である欠損領域が選択される。
【0071】
選択された欠損領域がある場合(ブロックB32のYES)、通知制御部35は、選択された欠損領域44B,44Cの内、欠損度が最大である最大欠損領域44Bを選択する(ブロックB33)。そして、通知制御部35は、カメラ12の現在位置と最大欠損領域44Bを撮影できる位置12Aとを結ぶ経路45に沿って、カメラ12を誘導する方向46を決定する(ブロックB34)。
【0072】
以上説明したように、本実施形態によれば、三次元モデル生成のための画像を容易に取得できる。三次元モデルデータ生成部34は、物体2を撮影した複数の画像を用いて、物体2の三次元形状を示す三次元モデルデータ109C(再構成された三次元モデル)を生成する。通知制御部35は、三次元モデルデータ109Cの生成に用いられる画像を効率的に取得できるように、次に画像を取得(撮影)するカメラの位置12Aを示す情報を、振動モジュール14による振動、スピーカ18A,18Bによって出力される音声、LCD17Aの画面やHDMI端子1等を介して接続された外部ディスプレイ(TVなど)の画面に表示される情報等を用いて、ユーザに通知する。ユーザが、その通知に従ってカメラ12の位置や角度を変化させることにより、物体2の三次元形状を示す三次元モデルデータを生成するための画像を効率的に取得することができる。なお、通知制御部35は、カメラ12の現在位置と、次に画像を撮影するカメラの位置12Aとに基づいて、カメラ12のシャッターボタンを押すタイミングをユーザに通知してもよい。
【0073】
なお、本実施形態の3Dモデル生成処理の手順は全てソフトウェアによって実行することができる。このため、3Dモデル生成処理の手順を実行するプログラムを格納したコンピュータ読み取り可能な記憶媒体を通じてこのプログラムを通常のコンピュータにインストールして実行するだけで、本実施形態と同様の効果を容易に実現することができる。
【0074】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0075】
12…カメラモジュール、14…振動モジュール、17A…LCD、18A,18B…スピーカ、109…データ格納部、109A…特徴点データ、109B…対応点データ、109C…仮の3Dモデルデータ、202…3Dモデル生成プログラム、31…特徴点検出部、32…対応点検出部、33…カメラ位置・姿勢推定部、34…3Dモデルデータ生成部、35…通知制御部。

【特許請求の範囲】
【請求項1】
三次元モデルを生成する対象の物体を撮影した複数の画像を用いて、三次元モデルデータを生成する三次元モデル生成手段と、
前記複数の画像の内の最後に撮影された画像の撮影位置を推定する撮影位置推定手段と、
前記生成された三次元モデルデータと前記推定された撮影位置とに基づいて、ユーザに、前記物体を次に撮影する位置を通知する通知制御手段とを具備し、
前記三次元モデル生成手段は、前記物体を新たに撮影した画像をさらに用いて、前記三次元モデルデータを更新する電子機器。
【請求項2】
前記通知制御手段は、前記電子機器を振動させることによって、前記次に撮影する位置を通知する請求項1記載の電子機器。
【請求項3】
前記複数の画像から複数の特徴点を検出する特徴点検出手段と、
前記複数の特徴点を用いて前記複数の画像間の対応点を検出する対応点検出手段とをさらに具備し、
前記通知制御手段は、前記複数の画像間の対応点の内、前記最後に撮影された画像によって新たに検出された対応点の数に基づいて、前記電子機器を振動させる振動の大きさを決定する請求項2記載の電子機器。
【請求項4】
前記通知制御手段は、前記三次元モデルデータに基づく三次元モデルの欠損領域を検出し、前記欠損領域の大きさに基づいて、前記電子機器を振動させる振動の大きさを決定する請求項2記載の電子機器。
【請求項5】
前記通知制御手段は、前記三次元モデルデータに基づく三次元モデルの欠損領域を検出し、前記撮影位置から前記欠損領域への方向に基づいて、前記電子機器を振動させる振動の方向を決定する請求項2記載の電子機器。
【請求項6】
前記通知制御手段は、前記電子機器に設けられた2以上の振動モジュールの各々を振動させる振動の大きさを制御することによって、前記決定された振動の方向に前記電子機器を振動させる請求項5記載の電子機器。
【請求項7】
前記通知制御手段は、前記次に撮影する位置を示す情報を画面に表示する請求項1記載の電子機器。
【請求項8】
前記通知制御手段は、前記次に撮影する位置を示す音声を出力する請求項1記載の電子機器。
【請求項9】
三次元モデルを生成する対象の物体を撮影した複数の画像を用いて、三次元モデルデータを生成し、
前記複数の画像の内の最後に撮影された画像の撮影位置を推定し、
前記生成された三次元モデルデータと前記推定された撮影位置とに基づいて、ユーザに、前記物体を次に撮影する位置を通知し、
前記三次元モデルデータを生成することは、前記物体を新たに撮影した画像をさらに用いて、前記三次元モデルデータを更新する三次元モデル生成支援方法。
【請求項10】
コンピュータにより実行されるプログラムであって、前記プログラムは、
三次元モデルを生成する対象の物体を撮影した複数の画像を用いて、三次元モデルデータを生成し、
前記複数の画像の内の最後に撮影された画像の撮影位置を推定し、
前記生成された三次元モデルデータと前記推定された撮影位置とに基づいて、ユーザに、前記物体を次に撮影する位置を通知し、
前記三次元モデルデータを生成することは、前記物体を新たに撮影した画像をさらに用いて、前記三次元モデルデータを更新するものであるプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate


【公開番号】特開2013−114498(P2013−114498A)
【公開日】平成25年6月10日(2013.6.10)
【国際特許分類】
【出願番号】特願2011−260795(P2011−260795)
【出願日】平成23年11月29日(2011.11.29)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】