(本開示に至った経緯)
三次元モデル生成(復元)技術において、連続して撮影されたフレーム(画像)で三次元形状を復元する場合、複数のフレーム上で被写体が重複する箇所が存在し、当該被写体に対して複数の三次元モデル生成処理が実施されるため、不要な処理時間が増加する。
そこで、本開示では、三次元モデルの生成処理の処理時間を短縮できる三次元生成方法等を提供する。
本開示の一態様に係る三次元モデル生成方法は、複数の第1フレームから所定の領域の第1三次元モデルを生成する第1三次元モデル生成ステップと、少なくとも1つの第2フレームに前記第1三次元モデルを投影し、前記少なくとも1つの第2フレームにおいて、前記第1三次元モデルが投影されなかった複数の未投影画素を特定する特定ステップと、前記複数の未投影画素に基づいて第2三次元モデルを生成する第2三次元モデル生成ステップと、を含む。
これによれば、生成した三次元モデルの差分の三次元モデルを順次生成していくため、各三次元モデルで重なる箇所のモデルを生成しない。そのため、三次元モデルの生成の処理時間を短縮できる。
また、例えば、三次元モデル生成方法は、さらに、複数の撮影フレームを撮影した際の各々でのカメラの位置及び姿勢に基づいて前記複数の撮影フレームに含まれる複数のフレームからなるフレームセットを生成するフレームセット生成ステップを含み、前記フレームセットは、前記複数の第1フレーム及び前記少なくとも1つの第2フレームを含む。
これによれば、カメラの位置及び姿勢に基づいて複数のフレームから選択されたフレームからなるフレームセットのフレームを用いて三次元モデルを生成するため、例えば、所定の領域が撮影されていないような不要なフレームを除いたフレームセットを生成できる。そのため、不要なフレームに対する三次元モデルの生成処理をしないため、処理時間を短縮できる。
また、例えば、前記フレームセット生成ステップでは、前記フレームセットにおいて前記複数のフレームをフレーム順に並べ、前記特定ステップでは、前記少なくとも1つの第2フレームに、前記第1三次元モデルを含む既に生成された三次元モデルである第3三次元モデルを投影し、前記第3三次元モデルを投影した前記少なくとも1つの第2フレームにおいて、前記第3三次元モデルが投影されなかった複数の未投影画素を特定し、前記フレーム順に、前記特定ステップ及び前記第2三次元モデル生成ステップを繰り返し実行する。
これによれば、フレームごとに繰り返し投影と第2三次元モデルの生成とを実行する。そのため、第1三次元モデルと生成した第2三次元モデルとを含む既三次元モデルをフレームに投影して、投影されなかった未投影画素を特定できる。これにより、さらに、処理時間を短縮できる。
また、例えば、前記フレームセット生成ステップでは、前記フレームセットにおける前記複数のフレームを撮影した際の各々での前記カメラの位置が前記所定の領域に近い順に前記複数のフレームを並べた前記フレームセットを生成する。
これによれば、所定の領域に近いカメラにより撮影されたフレームから順に用いて第2三次元モデルを生成できる。被写体に近いカメラにより撮影されたフレームである程、精度の高い、つまり、高画質な画像である。そのため、これによれば、三次元モデルの生成の処理時間を短縮でき、且つ、三次元モデルの精度を向上できる。
また、例えば、前記フレームセット生成ステップでは、前記カメラから前記所定の領域へ向かう方向を基準軸の正方向とした場合に、前記フレームセットにおける前記複数のフレームを撮影した際の各々での前記カメラの位置が前記基準軸の正方向において前記所定の領域に近い順に前記複数のフレームを並べた前記フレームセットを生成する。
これによれば、基準軸方向に基づいて、所定の領域に近いカメラにより撮影されたフレーム順に複数のフレームを並べることができる。
また、例えば、前記フレームセット生成ステップでは、前記複数のフレームを撮影した際の各々での前記カメラの光軸方向に基づいて前記基準軸の正方向を算出する。
これによれば、例えば、カメラの光軸方向に基づいて基準軸方向が算出されるために、所定の領域をほとんど含まないような不要なフレームを簡単な処理でフレームセットに含めないようにできる。そのため、これによれば、三次元モデルを生成する際に不要なフレームについての処理時間を短縮できる。
また、例えば、前記フレームセット生成ステップでは、前記複数のフレームから代表フレームを選択し、前記代表フレームを撮影した前記カメラの光軸方向を前記基準軸の正方向として算出する。
これによれば、複数のフレームを撮影したそれぞれのカメラの光軸方向から基準軸方向を算出する場合と比較して、代表フレームを撮影したカメラの光軸方向から基準軸方向を算出するため、代表フレームを適切な数だけ選択することで、基準軸方向を算出するための処理時間を短縮できる。
また、例えば、前記フレームセット生成ステップでは、前記複数のフレームのそれぞれが第1条件を満たすか否かを判定し、前記複数のフレームのうち前記第1条件を満たす複数のフレームで前記フレームセットを生成する。
これによれば、所定の第1条件が適切に設定されることで、第1三次元モデルが全て投影されるようなフレーム、又は、所定の領域をほとんど含まないようなフレーム等の不要なフレームをフレームセットに含めないようにできる。そのため、これによれば、三次元モデルを生成する際に不要なフレームについての処理時間を短縮できる。
また、例えば、前記フレームセット生成ステップでは、前記基準軸の正方向と、前記フレームセットに含まれる前記複数のフレームを撮影した際のカメラの光軸方向とのなす角度が第1角度以下であることを前記第1条件として判定する。
これによれば、所定の領域をほとんど含まないような不要なフレームを簡単な処理でフレームセットに含めないようにできる。そのため、これによれば、三次元モデルを生成する際に不要なフレームについての処理時間を短縮できる。
また、例えば、前記所定の領域は、静止している静止物体、及び、動いている動体のうち少なくとも一方を被写体として含む領域である。
これによれば、所定の領域に物体が含まれるために、例えば、所定の領域とカメラとの距離を測定する場合に、当該物体を基準として距離の測定ができるため、精度良く当該距離を算出できる。
また、例えば、前記少なくとも1つの第2フレームは、前記複数の第1フレームのうちの少なくとも1つのフレームと同一である。
これによれば、例えば、複数のフレームから第2フレームを決定する際に、第1フレームを除外する処理を行わなくてよいため、処理時間が短縮される。
また、例えば、前記第1フレームと前記第2フレームとは、互いに異なる。
これによれば、第2三次元モデルを生成する際に第1フレームには第2三次元モデルを投影しないため、第2三次元モデルの生成のための処理時間を短縮できる。
また、本開示の一態様に係る三次元モデル生成装置は、複数の第1フレームから所定の領域の第1三次元モデルを生成する第1三次元モデル生成部と、少なくとも1以上の第2フレームに前記第1三次元モデルを投影し、前記少なくとも1つの第2フレームにおいて、前記第1三次元モデルが投影されなかった複数の未投影画素を特定する特定部と、前記未投影画素に基づいて第2三次元モデルを生成する第2三次元モデル生成部と、を備える。
これによれば、三次元モデル生成装置は、生成した三次元モデルの差分の三次元モデルを順次生成していくため、各三次元モデルで重なる箇所のモデルを生成しない。そのため、三次元モデル生成装置によれば、三次元モデルの生成の処理時間を短縮できる。
また、本開示の別の一態様に係る三次元モデル生成方法は、複数の第1フレームから所定の領域の第1三次元モデルを生成する第1三次元モデル生成ステップと、少なくとも1つの第2フレームに前記第1三次元モデルを投影し、前記少なくとも1つの第2フレームにおいて、前記第1三次元モデルが投影された複数の投影画素を特定する特定ステップと、前記少なくとも1つの第2フレームが撮影された少なくとも1つの第2撮影位置が、前記複数の第1フレームが撮影された複数の第1撮影位置のいずれかよりも前記所定の領域に近いか否かを判定する判定ステップと、前記少なくとも1つの第2撮影位置が前記複数の第1撮影位置のいずれかよりも前記所定の領域に近いと判定された場合、前記第1三次元モデルが投影される前の前記複数の投影画素に基づいて、前記第1三次元モデルを更新する更新ステップと、を含む。
これによれば、カメラに撮影されたフレームを撮影された時系列に沿った順で用いて、三次元モデルを生成する。そのため、撮影順にフレームを処理することで、フレーム順を並べ替えたフレームセットを生成しないために短時間で三次元モデルを生成できる。また、一度生成した三次元モデルにおいてもフレームに投影された画素については当該フレームと比較して、精度の高い画素(つまり、所定の領域との距離がより近いカメラにより撮影されたフレームの画素)で更新した新三次元モデルを生成できる。これによれば、高精度な三次元モデルを生成できる。
また、例えば、前記特定ステップは、前記少なくとも1つの第2フレームにおいて、前記第1三次元モデルが投影されなかった複数の未投影画素を特定し、前記複数の未投影画素に基づいて第2三次元モデルを生成する第2三次元モデル生成ステップをさらに含む。
これによれば、第1三次元モデルに存在しない画素である未投影画素を用いた第2三次元モデルを生成できる。
以下では、本開示に係る三次元モデル生成方法等の各実施の形態について、図面を用いて詳細に説明する。なお、以下に説明する各実施の形態は、いずれも本開示の一具体例を示すものである。したがって、以下の各実施の形態で示される数値、形状、材料、構成要素、構成要素の配置及び接続形態、ステップ、ステップの順序等は、一例であり、本開示を限定する主旨ではない。
また、各図は、模式図であり、必ずしも厳密に図示されたものではない。また、各図において、実質的に同一の構成に対しては同一の符号を付しており、重複する説明は省略又は簡略化する場合がある。
(実施の形態1)
[概要]
まず、図1を参照しながら、実施の形態1に係る三次元モデル生成方法の概要について説明する。
図1は、実施の形態1に係る三次元モデル生成方法の概要を説明するための図である。図2は、実施の形態1に係る三次元モデル生成装置100の特徴的な構成を示すブロック図である。
三次元モデル生成システム400は、所定の領域を撮影する複数の撮像装置であるカメラ301から構成されるカメラ群300と、複数のカメラ301で撮影された複数のフレーム(言い換えると、画像又は映像データ)に基づいて複数のカメラ301の位置及び姿勢を推定する推定装置200と、複数のカメラ301で撮影された複数のフレームと推定装置200の推定結果とが入力される三次元モデル生成装置100と、を備える。
なお、カメラ301の姿勢とは、カメラ301の撮影方向、及び、カメラ301の傾きの少なくとも一方を示す。
所定の領域は、静止している静止物体或いは人物等の動いている動体、又は、その両方を含む領域である。言い換えると、所定の領域は、例えば、静止している静止物体、及び、動いている動体のうち少なくとも一方を被写体として含む領域である。静止物体と動物体とを含む所定の領域の例として、バスケットボール等のスポーツの試合、又は、人物或いは車が存在する街中等がある。なお、所定の領域は、被写体となる特定の対象物だけではなく、風景等を含むシーンでもよい。図1には、被写体500Aが建屋である場合を例示している。また、以下では、被写体となる特定の対象物だけではなく、風景等を含む所定の領域を、単に被写体ともいう。
複数のカメラ301は、それぞれ被写体を撮影し、撮影した複数のフレームをそれぞれ推定装置200に出力する。本実施の形態1では、カメラ群300には、2台以上のカメラ301が含まれる。また、複数のカメラ301は、互いに異なる視点から同一の被写体を撮影する。
なお、三次元モデル生成システム400は、複数のカメラ301を備えてもよいし、1つのカメラ301を備えてもよい。例えば、三次元モデル生成システム400は、1つのカメラ301を移動させながら1つのカメラ301に互いに視点の異なる複数のフレーム(言い換えると、多視点映像データ)を生成させるように撮影させてもよい。つまり、複数のフレームのそれぞれは、カメラ301の位置及び姿勢の少なくとも一方が互いに異なるカメラ301により撮影(生成)されたフレームである。
また、カメラ301は、二次元画像を生成するカメラでもよいし、三次元モデルを生成する三次元計測センサを備えるカメラでもよい。本実施の形態1では、複数のカメラ301は、それぞれ二次元画像を生成するカメラである。
1以上のカメラ301は、それぞれが撮影したフレームを推定装置200に入力できるように、有線又は無線によって、推定装置200自体に、又は、通信機器若しくはサーバ等の図示しないハブに接続される。
なお、1以上のカメラ301でそれぞれ撮影したフレームは、リアルタイムに出力されてもよいし、フレームが一度メモリ又はクラウドサーバ等の外部記憶装置に記録された後、それらの外部記憶装置からフレームが出力されてもよい。
また、1以上のカメラ301は、それぞれ監視カメラ等の固定カメラであってもよいし、ビデオカメラ、スマートフォン、又は、ウェアラブルカメラ等のモバイルカメラであってもよいし、撮影機能付きドローン等の移動カメラであってもよい。
推定装置200は、1以上のカメラ301から取得した複数のフレームに基づいて、複数のカメラ301の位置、姿勢、及び、カメラパラメータを推定する装置である。
ここで、カメラパラメータとは、カメラ301の特性を示すパラメータであり、カメラ301の焦点距離及び画像中心等からなる内部パラメータと、カメラ301の位置(より具体的には、三次元位置)及び姿勢を示す外部パラメータとを含む1以上のパラメータである。
なお、推定装置200がカメラ301の位置及び姿勢を推定する推定方法は、特に限定されない。推定装置200は、例えば、Visual-SLAM(Simultaneous Localization and Mapping)技術を用いて複数のカメラ301の位置及び姿勢を推定する。或いは、推定装置200は、例えば、Structure-From-Motion技術を用いて1以上のカメラ301のそれぞれの位置及び姿勢を推定する。
また、推定装置200は、例えば、上記技術を用いて推定したカメラ301の位置及び姿勢に基づいて、カメラ301と被写体との距離をカメラパラメータとして算出する。なお、三次元モデル生成システム400は、測距センサを備え、当該測距センサを用いてカメラ301と被写体との距離が測定されてもよい。
推定装置200は、カメラ301から受信した複数のフレーム及び推定結果を三次元モデル生成装置100に入力できるように、有線又は無線によって、三次元モデル生成装置100自体に、又は、通信機器或いはサーバ等の図示しないハブに接続される。
推定装置200は、カメラ301から受信した複数のフレーム及び推定したこれらカメラパラメータを三次元モデル生成装置100に入力する。
なお、推定装置200の推定結果は、リアルタイムに出力されてもよいし、推定結果が一度メモリ又はクラウドサーバ等の外部記憶装置に記録された後、それらの外部記憶装置から当該推定装置から出力されてもよい。
また、三次元モデル生成装置100は、予めカメラパラメータを記憶していてもよい。この場合、三次元モデル生成システム400は、推定装置200を備えなくてもよい。また、複数のカメラ301は、三次元モデル生成装置100と無線又は有線によって通信可能に接続されていてもよい。
また、カメラ301が撮影した複数のフレームは、三次元モデル生成装置100に直接入力されてもよい。この場合、カメラ301は、例えば、有線又は無線によって、三次元モデル生成装置100自体に、又は、通信機器若しくはサーバ等の図示しないハブに接続される。
推定装置200は、例えば、制御プログラムと、当該制御プログラムを実行するプロセッサ又は論理回路等の処理回路と、当該制御プログラムを記憶する内部メモリ又はアクセス可能な外部メモリ等の記録装置と、を備えるコンピュータシステムを少なくとも備える。
三次元モデル生成装置100は、複数のカメラ301それぞれの位置、姿勢、及び、カメラパラメータと、複数のフレームとに基づいて、被写体を(仮想)三次元空間にモデル生成する、つまり、三次元モデル生成処理を実行する装置である。
ここで、複数のフレームは、多視点映像となっている。多視点映像とは、実空間上に存在する被写体を、カメラ301を移動させながら、又は、複数のカメラ301で異なる視点で撮影した映像である。つまり、複数のフレームは、視点が互いに異なる画像である。言い換えると、推定装置200は、1以上のカメラ301から取得した視点が互いに異なる複数のフレームに基づいて、複数のカメラ301の位置、姿勢(撮影方向)、及び、カメラパラメータを推定する。
なお、被写体の実物が撮影されたフレームから、仮想的な三次元空間に形状復元、つまり、生成された当該被写体を、三次元モデルという。被写体の三次元モデルは、多視点の、つまり、被写体が撮影されたカメラ301の位置及び姿勢の少なくとも一方が異なる複数の二次元画像それぞれに写る被写体上の複数の点それぞれの三次元位置を示す点の集合である。
三次元位置は、例えば、互いに直交するX軸、Y軸、及び、Z軸からなる三次元空間のX成分、Y成分、及び、Z成分からなる三値情報で表される。なお、三次元位置を示す複数の点が含む情報には、三次元位置(つまり、座標を示す情報)だけでなく、各点の色を示す情報、各点及びその周辺の表面形状を表す情報等が含まれてもよい。
三次元モデル生成装置100は、例えば、制御プログラムと、当該制御プログラムを実行するプロセッサ又は論理回路等の処理回路と、当該制御プログラムを記憶する内部メモリ又はアクセス可能な外部メモリ等の記録装置と、を備えるコンピュータシステムを少なくとも備える。なお、三次元モデル生成装置100は、例えば、処理回路によるハード実装によって、又は、処理回路によるメモリに保持される、若しくは、外部サーバから配信されるソフトウェアプログラムの実行によって、又は、これらハード実装とソフト実装との組み合わせによって実現されてもよい。
[三次元モデル生成装置の構成]
続いて、図2及び図3を参照しながら、三次元モデル生成装置100の構成の詳細について説明する。
三次元モデル生成装置100は、複数のフレームから三次元モデルを生成する装置である。三次元モデル生成装置100は、受信部110と、記憶部120と、取得部130と、生成部140と、出力部150と、を備える。
受信部110は、推定装置200から、複数のカメラ301が撮影した複数の画像と、推定装置200が推定した複数のカメラ301それぞれの位置、姿勢、及び、カメラパラメータとを受信する。受信部110は、例えば、推定装置200と通信するための通信インターフェースである。三次元モデル生成装置100と推定装置200とが無線通信する場合、受信部110は、例えば、アンテナと無線通信回路とを備える。或いは、三次元モデル生成装置100と推定装置200とが有線通信する場合、受信部110は、例えば、通信線と接続されるコネクタを備える。
受信部110は、受信した複数のカメラ301が撮影した複数のフレームと、推定装置200が推定した1以上のカメラ301それぞれの位置、姿勢、及び、カメラパラメータとを記憶部120に出力する。
記憶部120は、受信部110が受信した、1以上のカメラ301が撮影した複数のフレームと、推定装置200が推定した1以上のカメラ301それぞれの位置、姿勢、及び、カメラパラメータとを記憶するメモリである。記憶部120は、例えば、三次元モデル生成装置100が備える各処理部が実行する制御プログラムを記憶する。
記憶部120は、例えば、HDD(Hard Disk Drive)、フラッシュメモリ等により実現される。
取得部130は、記憶部120に記憶されている、1以上のカメラ301が撮影した複数のフレームと、推定装置200が推定した1以上のカメラ301それぞれの位置、姿勢、及び、カメラパラメータとを記憶部120から取得し、生成部140に出力する処理部である。
なお、受信部110は、1以上のカメラ301から受信した複数のフレームと、推定装置200が推定した1以上のカメラ301それぞれの位置、姿勢、及び、カメラパラメータを、生成部140に直接出力してもよい。
生成部140は、取得部130から入力された複数のカメラ301が撮影した複数の画像と、推定装置200が推定した複数のカメラ301それぞれの位置、姿勢、及び、カメラパラメータとに基づいて、被写体の三次元モデルを生成する処理部である。
図3は、実施の形態1に係る三次元モデル生成装置100が備える生成部140の詳細な構成を示すブロック図である。
生成部140は、フレームセット生成部141と、特定部142と、三次元モデル生成部143と、を備える。
フレームセット生成部141は、複数のフレーム(撮影フレーム)を撮影した際の各々でのカメラ301の位置及び姿勢に基づいて複数のフレーム(撮影フレーム)から選択された、つまり、複数の撮影フレームに含まれる複数のフレームからなるフレームセットを生成する処理部である。1つのフレームに対してカメラの位置及び姿勢を示すデータ(位置姿勢データ)は、1つ存在する。つまり、フレームセット生成部141は、複数のフレームを撮影した際の各々でのカメラ301の位置及び姿勢を示す複数の位置姿勢データに基づいて、複数のフレームから選択されたフレームからなるフレームセットを生成する。フレームセットには、複数の第1フレーム及び1つの第2フレームが含まれる。第1フレームは、第1三次元モデル生成部144が第1三次元モデルを生成するためのフレームである。第2フレームは、第2三次元モデルを生成するためのフレームである。
なお、少なくとも1つの第2フレームは、複数の第1フレームのうちの少なくとも1つのフレームと同一でもよい。或いは、第1フレームと第2フレームとは、互いに異なってもよい。
例えば、フレームセット生成部141は、取得部130から入力された1以上のカメラ301が撮影した複数のフレームと、推定装置200が推定した1以上のカメラ301それぞれの位置、姿勢、及び、カメラパラメータとに基づいて、複数のフレームを所定の順序に並び替えた多視点フレームセット(以下、単にフレームセットともいう)を生成する。
特定部142は、少なくとも1以上の第2フレームに第1三次元モデルを投影し、少なくとも1つの第2フレームにおいて、第1三次元モデルが投影されなかった複数の未投影画素を特定する処理部である。具体的には、特定部142は、第1フレームを除く、複数のフレームに含まれるフレームであって少なくとも1つの第2フレームに、後述する第1三次元モデル生成部144が生成した第1三次元モデルを投影し、第1三次元モデルを投影した少なくとも1つの第2フレームのうち、第1三次元モデルが投影されなかった画素である未投影画素を特定する。より具体的には、特定部142は、フレームセット生成部141が生成したフレームセットの順番通りに、既に生成されている三次元モデル(以下、既三次元モデルともいう)をフレームに投影する。例えば、特定部142は、既三次元モデルをフレームに投影することで、三次元モデルを投影したフレームの画素のうち、三次元モデルが投影されなかった未投影画素を特定する。つまり、特定部142は、既三次元モデルとフレームとの差分の画素を特定する。
三次元モデル生成部143は、複数のフレームから三次元モデルを生成する処理部である。例えば、三次元モデル生成部143は、まず三次元モデル(第1三次元モデル)を生成し、生成した三次元モデルを特定部142が投影したフレームにおける、三次元モデルが投影されなかった画素について、新たに三次元モデル(以下、第2三次元モデル又は新三次元モデルともいう)を生成する。三次元モデル生成部143は、例えば、新三次元モデルを記憶部120に出力する。記憶部120は、三次元モデル生成部143から入力された、新三次元モデルを記憶する。
三次元モデル生成部143は、第1三次元モデル生成部144と、第2三次元モデル生成部145と、を有する。
第1三次元モデル生成部144は、複数の第1フレームから所定の領域の第1三次元モデルを生成する処理部である。具体的には、第1三次元モデル生成部144は、複数のフレームのうちのフレームであって複数のフレーム(第1フレーム)から被写体の第1三次元モデルを生成する。
第2三次元モデル生成部145は、特定部142が特定した未投影画素に基づいて第2三次元モデルを生成する処理部である。
例えば、特定部142は、さらに、既三次元モデルを、フレームセットのうちで未だ三次元モデルを投影していないフレームに投影し、当該フレームにおいて三次元モデルが投影されなかった未投影画素を特定する。ここで、既三次元モデルは、第2三次元モデル生成部145が第2三次元モデルを生成していない場合には、第1三次元モデルである。また、既三次元モデルは、第2三次元モデル生成部145が第2三次元モデルを生成している場合には、第1三次元モデルと、第2三次元モデル生成部145が生成した第2三次元モデルとを含む。第2三次元モデル生成部145は、特定部142が既三次元モデルを投影したフレームにおける、既三次元モデルが投影されなかった未投影画素について、新三次元モデルをさらに生成する。
特定部142及び三次元モデル生成部143は、フレームセットの順序の通りに、三次元モデルをフレームに繰り返し投影することで、当該フレームにおいて三次元モデルが投影されなかった未投影画素を特定し、特定した未投影画素について三次元モデルを生成する。
なお、初めにフレームに投影される三次元モデルは、例えば、三次元モデル生成部143がフレームセットから生成する。例えば、三次元モデル生成部143は、まず、フレームセットのうちの1番目のフレームと2番目のフレームとを用いて三次元モデルを生成し、生成した三次元モデルを3番目のフレームに投影することで、3番目のフレームの画素のうちで、三次元モデルが投影されなかった未投影画素を特定する。
例えば、フレームセット生成部141は、フレームセットにおいて複数のフレームをフレーム順に並べる。例えば、フレームセット生成部141は、所定の条件に基づいて複数のフレームを並べたフレーム順のフレームセットを生成する。この場合、特定部142は、例えば、少なくとも1つの第2フレームに、第1三次元モデルを含む既に生成された三次元モデルである既三次元モデル(第3三次元モデル)を投影し、既三次元モデルを投影した少なくとも1つの第2フレームにおいて、既三次元モデルが投影されなかった未投影画素を特定する。特定部142及び第2三次元モデル生成部145は、フレーム順に、上記処理を繰り返し実行する。既三次元モデルには、第1三次元モデルと、生成した第2三次元モデルとが含まれる。
なお、所定の条件は、予め任意に定められてよい。例えば、フレームセット生成部141は、複数のフレームを撮影した際のカメラ301の各々での光軸方向に基づいて基準軸の正方向を算出する。つまり、フレームセット生成部141は、算出した基準軸の正方向に基づいて、フレーム順を決定し、決定したフレーム順のフレームセットを生成する。
光軸方向とは、例えば、カメラ301が備えるセンサの光入射面に直交する方向である。或いは、光軸方向とは、例えば、カメラ301が備えるレンズの光軸方向である。光軸の正方向とは、例えば、カメラ301が備えるセンサの光入射面の法線方向である。光軸の負方向とは、例えば、カメラ301に光が入射される方向である。
1つのフレームに対してカメラの光軸方向を示すデータ(光軸データ)は、1つ存在する。つまり、フレームセット生成部141は、複数のフレームを撮影した際の各々でのカメラ301の光軸方向を示す複数の光軸データに基づいて、複数のフレームから選択されたフレームからなるフレームセットを生成する。
例えば、フレームセット生成部141は、複数のフレームから、複数のフレームのうちの1つのフレームである代表フレームを選択し、選択した代表フレームを撮影したカメラ301の光軸方向を基準軸の正方向として算出する。なお、代表フレームは、1つでもよいし、2以上でもよい。フレームセット生成部141は、代表フレームが2以上の場合には、選択した2以上の代表フレームを撮影したそれぞれのカメラ301の光軸方向の平均値を基準軸方向としてもよい。
また、例えば、フレームセット生成部141は、基準軸方向において、被写体に近い位置で撮影された順にフレームを並べたフレーム順のフレームセットを生成する。言い換えると、フレームセット生成部141は、フレームセットにおける複数のフレームを撮影した際の各々でのカメラ301の位置が所定の領域に近い順にフレームを並べたフレームセットを生成する。具体的には、フレームセット生成部141では、カメラ301から見た所定の領域の向き、つまり、カメラ301から所定の領域へ向かう方向を基準軸の正方向とした場合に、フレームセットにおける複数のフレームを撮影した際の各々でのカメラ301の位置が基準軸の正方向において所定の領域に近い順に複数のフレームを並べたフレームセットを生成する。
なお、フレームセット生成部141は、記憶部120に記憶されている複数のフレームに含まれる全てのフレームを用いてフレームセットを生成してもよいし、当該複数のフレームのうちの一部のフレームを用いてフレームセットを生成してもよい。
例えば、フレームセット生成部141は、複数のフレームのそれぞれが第1条件を満たすか否かを判定し、複数のフレームのうち第1条件を満たすフレームでフレームセットを生成する。
なお、所定の第1条件は、予め任意に定められてよい。例えば、フレームセット生成部141は、基準軸の正方向と、フレームセットに含まれる複数のフレームを撮影した際のカメラ301の光軸方向とのなす角度が所定の第1角度以下であることを所定の第1条件として判定する。つまり、フレームセット生成部141は、基準軸方向とカメラ301の光軸方向とのなす角度が第1角度以下の場合には、当該カメラ301で撮影されたフレームをフレームセットに含める。一方、フレームセット生成部141は、基準軸方向とカメラ301の光軸方向とのなす角度が第1角度より大きい場合には、当該カメラ301で撮影されたフレームをフレームセットに含めない。
再び図2を参照し、出力部150は、記憶部120に記憶されている三次元モデルを出力する処理部である。出力部150は、例えば、記憶部120に記憶されている、既三次元モデルと新三次元モデルとを統合して1つの三次元モデルを生成して出力する。出力部150は、例えば、図示しないディスプレイ等の表示装置と、有線又は無線によって、通信可能に接続するための、アンテナ、無線通信回路、コネクタ等を備える。出力部150は、当該表示装置に、統合した三次元モデルを出力することで、当該表示装置に三次元モデルを表示させる。
[三次元モデル生成装置の処理手順]
続いて、図4~図18を参照しながら、三次元モデル生成装置100が実行する三次元モデル生成の処理手順について、詳細に説明する。
<概要>
図4は、実施の形態1に係る三次元モデル生成装置100が実行する処理を示すフローチャートである。
まず、受信部110は、推定装置200で推定したカメラ301の位置及び姿勢を示す情報と、カメラパラメータと、複数のフレーム(撮影フレーム)とを受信する(ステップS101)。受信部110は、受信したこれらのデータを記憶部120に出力する。
次に、記憶部120は、ステップS101で受信部110が受信したカメラ301の位置及び姿勢を示す情報と、カメラパラメータと、複数のフレーム(撮影フレーム)とを記憶する(ステップS102)。
次に、取得部130は、記憶部120に記憶されているカメラ301の位置及び姿勢を示す情報と、カメラパラメータと、複数のフレーム(撮影フレーム)とを生成部140に入力する(ステップS103)。
次に、フレームセット生成部141は、複数のフレーム(撮影フレーム)を撮影した際の各々のカメラ301の位置及び姿勢を示す複数のデータと、カメラパラメータと、複数のフレーム(撮影フレーム)とからフレーム順を決定した複数のフレームを含むフレームセットを生成する(ステップS104)。
次に、第1三次元モデル生成部144は、フレームセットから三次元モデル(第1三次元モデル)を生成する(ステップS105)。例えば、第1三次元モデル生成部144は、フレームセットのうちの任意の2つのフレーム(第1フレーム)を用いて、第1三次元モデルを生成する。
次に、特定部142は、ステップS105で生成した第1三次元モデルをフレーム(第2フレーム)に投影する(ステップS106)。具体的には、特定部142は、第1三次元モデルを、第1フレームを除くフレームセットに含まれる少なくとも1つの第2フレームに投影する。
次に、第2三次元モデル生成部145は、第2フレームのうち、ステップS106で第1三次元モデルが投影されなかった未投影画素に基づいて、三次元モデル(第2三次元モデル)を生成する(ステップS107)。
次に、出力部150は、第1三次元モデル及び第2三次元モデルを統合して出力する(ステップS108)。
<フレーム順の決定処理>
続いて、図5A~図8Bを参照しながら、図4のステップS104でフレームセット生成部141が実行するフレームセットの生成処理(より具体的には、フレーム順の決定処理)について説明する。
フレームセット生成部141は、記憶部120に含まれる全フレームを用いてフレームセットを生成してもよいし、当該全フレームのうちの少なくとも3フレームを選択してフレームセットを生成してもよい。
また、フレームセットは、カメラ301の位置及び姿勢がカメラ301の光軸方向(言い換えると、撮影方向)の負方向で移動するフレーム順でもよい。
また、生成部140(より具体的には、フレームセット生成部141)は、記憶部120に記憶されている複数のフレームからフレームを間引いてフレームセットを生成してもよい。
例えば、取得部130が記憶部120から複数のフレームを、フレーム順をランダムに取得する場合、フレームセット生成部141は、フレームセットのフレーム順を、複数のフレームを撮影したカメラ301の位置及び姿勢がカメラ光軸方向の負方向に小さい順に、つまり、フレームが撮影された時のカメラ301の位置が被写体に近い順に並び替えたフレームセットを生成する。
なお、フレームセット生成部141は、フレームセットの各フレームに個別にフレーム順を示すインデックス番号等の特定情報を付加してもよいし、フレームセットに一括して当該特定情報を付加してもよい。
なお、以下で説明するtフレーム、t+1フレーム、t+2フレーム、t+3フレーム、t+4フレーム、及び、t+5フレームは、カメラ301によってこの順の時系列で撮影されたフレームであるとする。また、図5A~図8Bにおいては、各図のカメラ光軸方向に被写体となる対象物が存在するとして説明する。また、図5A~図8Bにおいては、各図のカメラ光軸方向が基準軸方向と一致する。
<第1例>
図5Aは、カメラ301の撮影順序の第1例を説明するための図である。
図5Bは、カメラ301の撮影順序に対する三次元モデル生成装置100が決定するフレーム順の第1例を説明するための図である。
第1例は、カメラ301が被写体から離れながら当該被写体を撮影する例である。この場合、生成部140(より具体的には、フレームセット生成部141)は、図5Bの処理順のように、カメラ移動方向に合わせて、つまり、被写体が撮影された順にフレーム順を設定したフレームセットを生成する。
このように、カメラ301の位置が被写体に対して離れるようにカメラ301によって複数のフレームが撮影された場合、フレームセット生成部141は、撮影順にフレームセットを生成することで、カメラ301が被写体から近い順に生成されたフレームの順にフレームを並べたフレームセットを生成できる。
<第2例>
図6Aは、カメラ301の撮影順序の第2例を説明するための図である。
図6Bは、カメラ301の撮影順序に対する三次元モデル生成装置100が決定するフレーム順の第2例を説明するための図である。
第2例は、カメラ301が被写体に近づきながら当該被写体を撮影する例である。この場合、フレームセット生成部141は、図6Bの処理順のように、カメラ移動方向とは反対方向となる順に合わせて、つまり、被写体が撮影された順とは逆の順にフレーム順を設定したフレームセットを生成する。
このように、カメラ301の位置が被写体に対して近づく複数のフレームがカメラ301により撮影された場合、フレームセット生成部141は、撮影と逆順にフレームを並び替えたフレームセットを生成することで、カメラ301が被写体から近い順に生成されたフレームの順にフレームを並べたフレームセットを生成できる。
以上、第1例及び第2例で説明したように、フレームセット生成部141は、カメラ301によりフレームが撮影された際の位置の変化が被写体に対して一定であり、且つ、フレームに当該フレームが撮影された時刻を示す時刻情報が付加されている場合、当該時刻情報に基づいてフレームを並べ替えたフレームセットを生成してもよい。
<第3例>
図7Aは、カメラ301の撮影順序の第3例を説明するための図である。
図7Bは、カメラ301の撮影順序に対する三次元モデル生成装置100が決定するフレーム順の第3例を説明するための図である。
第3例は、カメラ301が被写体との距離を変えずに移動しながら当該被写体を撮影する例である。この場合、フレームセット生成部141は、任意の順序でフレーム順を並び替えてフレームセットを生成してもよい。図7Bには、カメラ移動方向に合わせて、つまり、被写体が撮影された順にフレーム順を設定したフレームセットを生成する処理を示している。
このように、カメラ301の位置が被写体に対して平行になるように、つまり、被写体とカメラ301との距離が変わらないように多視点映像を撮影した場合、フレームセット生成部141は、複数のフレームから撮影順に関わらずフレームセットを生成する。
<第4例>
図8Aは、カメラ301の撮影順序の第4例を説明するための図である。
図8Bは、カメラ301の撮影順序に対する三次元モデル生成装置100が決定するフレーム順の第4例を説明するための図である。
第4例は、カメラ301が被写体との距離をランダムに変えながら移動して当該被写体を撮影する例である。この場合、図8Bに示す処理順のように、フレームセット生成部141は、被写体に近い位置で撮影されたフレームから順に、言い換えると、カメラ光軸方向の正方向側に位置するフレームから順にフレーム順を並び替えてフレームセットを生成する。図8Bに示す例では、フレームセット生成部141は、tフレーム、t+3フレーム、t+1フレーム、t+4フレーム、及び、t+2フレームの順となるようにフレームセットを生成する。
フレームセット生成部141は、このような処理をすることで、フレームが撮影された順序に拘わらず、フレーム順を、カメラ301の位置が被写体に近い順に並び替えたフレームセットを生成できる。
<フレームの特定処理>
続いて、図9を参照しながら、フレームセット生成部141が実行するフレームの特定処理の処理手順について説明する。
上記したように、フレームセット生成部141は、カメラ301が被写体に近い位置で撮影されたフレーム順、つまり、複数のフレームを撮影した際の各々でのカメラ301の位置が所定の領域に近い順となるフレーム順となるように複数のフレームを並べ替えたフレームセットを生成する。
ここで、例えば、三次元モデル生成部143は、三次元モデルを生成する際には、記憶部120に記憶されている複数の撮影フレーム(言い換えると、カメラ301に撮影された全ての撮影フレーム)のうちの全てのフレームを用いずに、三次元モデルを生成してもよい。つまり、生成部140(より具体的には、フレームセット生成部141)は、複数のフレーム(撮影フレーム)から一部のフレームを間引いたフレームセットを生成してもよい。言い換えると、フレームセット生成部141は、カメラ301に撮影された全てのフレームから一部のフレームを特定して(言い換えると、選択して)フレームセットを生成してもよい。
図9は、実施の形態1に係る三次元モデル生成装置100が実行するフレームセットの生成処理の一例を示すフローチャートである。
まず、フレームセット生成部141は、複数のフレームから、基準軸方向(より具体的には、基準軸の正方向)を算出する(ステップS201)。
ステップS201では、例えば、フレームセット生成部141は、カメラパラメータに基づいて、各フレームが撮影された時の各々でのカメラ301の光軸方向を算出し、算出した各光軸方向に基づいて基準軸方向を算出する。例えば、フレームセット生成部141は、各フレームが撮影された時のカメラ301の位置それぞれの平均位置を算出する。さらに、フレームセット生成部141は、例えば、算出した平均位置を通過する、予め任意に定められる所定の軸に対して各フレームが撮影された時のカメラ301の光軸方向のなす角度の平均値(平均角度)を算出する。例えば、フレームセット生成部141は、算出した平均位置を通過し、且つ所定の軸に対して算出した平均角度だけ傾けた軸の方向を、基準軸方向として算出する。
或いは、フレームセット生成部141は、各フレームが撮影された時の各々でのカメラ301の光軸方向を算出し、複数の光軸方向に対して最小二乗法を用いることで基準軸方向を算出する。この際、フレームセット生成部141は、誤差が所定の閾値より大きくなる光軸方向を除いてもよい。
或いは、ステップS201では、例えば、フレームセット生成部141は、複数のフレームから代表となる代表フレームを決定し、決定した代表フレームを撮影したカメラ301の光軸方向を基準軸方向とする。
代表フレームの決定方法は、任意でよい。例えば、フレームセット生成部141は、複数のフレームを撮影したカメラ301のうち、最も被写体に近い位置のカメラ301で撮影されたフレームを代表フレームとする。或いは、フレームセット生成部141は、複数のフレームを撮影したカメラ301のうち、被写体との距離が中間となる位置のカメラ301で撮影されたフレームを代表フレームとする。
次に、フレームセット生成部141は、フレームの選択の繰り返し処理を開始する(ステップS202)。具体的には、フレームセット生成部141は、記憶部120に記憶されている複数のフレームそれぞれについて、ステップS203~ステップS205の処理を繰り返し実行する。
フレームセット生成部141は、ステップS201で算出した基準軸(より具体的には、基準軸の正方向)と、フレームを撮影したカメラ301の光軸方向とのなす角度が第1角度以下であるか否かを判定する(ステップS203)。
フレームセット生成部141は、ステップS201で算出した基準軸と、当該フレームを撮影したカメラ301の光軸方向とのなす角度が第1角度以下であると判定した場合(ステップS203でNo)、当該フレームを非選択とする(ステップS205)。つまり、フレームセット生成部141は、ステップS203でNoの場合、当該フレームを選択せず、生成するフレームセットに当該フレームを加えない。なお、非選択とするとは、フレームセット生成部141がこの後にステップS207で実行する処理において当該フレームを用いないことを示し、例えば、記憶部120から当該フレームを削除する必要はない。
一方、フレームセット生成部141は、ステップS201で算出した基準軸と、フレームを撮影したカメラ301の光軸方向とのなす角度が第1角度以下でないと判定した場合(ステップS203でYes)、当該フレームを選択する(ステップS204)。ここで、選択するとは、フレームセット生成部141がこの後にステップS207で実行する処理当該フレームを用いることを示す。
フレームセット生成部141は、複数のフレームそれぞれについて、ステップS203~ステップS205の繰り返し処理、つまり、フレームの選択又は非選択の繰り返し処理を実行した後で、当該繰り返し処理を終了する(ステップS206)。
次に、フレームセット生成部141は、ステップS204で選択したフレームについて、ステップS201で算出した基準軸に沿って被写体に近い位置で撮影されたフレーム順となるように、つまり、複数のフレームを撮影した際の各々でのカメラ301の位置が所定の領域に近い順となるフレーム順となるように、選択したフレームを並べ替えて、フレームセットを生成する(ステップS207)。ステップS207では、例えば、フレームセット生成部141は、並べ替えた複数のフレームの順に通し番号を振り分けて関連付ける。
なお、第1角度となる閾値は、例えば、予め記憶部120に記憶されていればよい。また、第1角度は、任意に設定されてよく、その値は特に限定されない。また、フレームセット生成部141は、基準軸とのなす角度ではなく、例えば、カメラ301の位置に基づいて代表フレームを選択してもよい。
また、フレームセット生成部141は、生成したフレームセットを記憶部120に記憶させてもよいし、この後でフレームセットに基づいて新三次元モデルを生成する三次元モデル生成部143に出力してもよい。
また、ステップS203では、第1角度以下と説明したが、厳密な意味で記載するものではない。例えば、「第1角度以下」と記載する場合においては、第1角度よりも小さいことを意味してもよい。
<三次元モデルの生成処理>
続いて、図10~図13を参照しながら、三次元モデル生成装置100が実行する三次元モデルの生成処理について説明する。
図10は、実施の形態1に係る三次元モデル生成装置100が実行する三次元モデルの生成処理を示すフローチャートである。
まず、第1三次元モデル生成部144は、フレームセットのうちの複数のフレーム(第1フレーム)を用いて、三次元モデル(第1三次元モデル)を生成する(ステップS301)。
次に、生成部140は、フレームセットに含まれるフレーム数以下の繰り返し処理を開始する(ステップS302)。具体的には、生成部140は、フレームセットに含まれる、ステップS301で用いたフレームを除く複数のフレームそれぞれについて、ステップS302~ステップS306の処理を繰り返し実行する。
次に、特定部142は、既に生成した三次元モデル(既三次元モデル、つまり、第3三次元モデル)をフレームセットの中の少なくとも1つのフレーム(第2フレーム)に投影する(ステップS303)。ステップS303では、特定部142は、フレームセット生成部141により決定されたフレーム順に、既三次元モデルをフレームセットのフレームに投影する。既三次元モデルは、初めは、ステップS301で生成した第1三次元モデルのみであるが、ステップS303~ステップS305の処理が繰り返されることで、既に生成した三次元モデルには、後述するステップS305で生成された新三次元モデル(第2三次元モデル)が繰り返し追加されることになる。
次に、特定部142は、三次元モデルを投影した第2フレームにおいて、三次元モデル(具体的には、三次元モデルを構成する三次元点)が投影されなかった未投影画素を特定する(ステップS304)。
次に、第2三次元モデル生成部145は、ステップS304で特定した未投影画素に基づいて、新たに新三次元モデル(第2三次元モデル)を生成する(ステップS305)。つまり、第2三次元モデル生成部145は、既三次元モデルに存在しない点からなる第2三次元モデルを生成する。
次に、生成部140は、フレームセットのフレーム数以下の繰り返し処理を終了する(ステップS306)。つまり、ステップS303~S305のループ処理における、2巡目以降の処理については、ステップS303では、その前にステップS305で生成した第2三次元モデルが既三次元モデルに含まれる。
図11は、実施の形態1に係る三次元モデル生成装置100が備える生成部140が実行する生成処理の処理位置を説明するための図である。
図12は、カメラ301による撮影位置の変化を説明するための図である。
図13は、カメラ301による撮影範囲の変化を説明するための図である。
なお、図11の(a)~(c)に示すフレームは、図12及び図13のそれぞれに示すカメラ301で撮影されたフレームを示す。また、図12及び図13は、同一の場面を示す図である。図12は斜視図であり、図13は上面図である。また、図13には、時刻t及び時刻t+1での三次元モデル生成範囲(つまり、撮影範囲)を、ハッチングを付して示している。
図11の(a)に示すように、例えば、時刻tにおけるフレームについて、全ての箇所で既三次元モデルが投影されなかったとする。この場合、第2三次元モデル生成部145は、時刻tにおけるフレームの全ての画素について、第2三次元モデルを生成する。
また、図11の(b)に示すように、例えば、時刻t+1におけるフレームについて、ハッチングで示す一部の箇所で既三次元モデルが投影されたとする。具体的には、図11の(b)におけるハッチング部分が図11の(a)に示す時刻tのフレームにより生成された第2三次元モデルが投影された画素位置であるとする。この場合、第2三次元モデル生成部145は、図11の(b)に示すハッチングが付されていない箇所における画素について、第2三次元モデルを生成する。
また、図11の(c)に示すように、例えば、時刻t+2におけるフレームについて、ハッチングで示す一部の箇所で既三次元モデルが投影されたとする。具体的には、図11の(c)におけるハッチング部分が、図11の(a)に示す時刻tのフレームにより生成された第2三次元モデル、及び、図11の(b)に示す時刻t+1のフレームにより生成された第2三次元モデルが投影された画素位置であるとする。この場合、第2三次元モデル生成部145は、図11の(c)に示すハッチングが付されていない位置における画素(つまり、未投影画素)について、第2三次元モデルを生成する。
このように、第2三次元モデル生成部145は、フレームセット生成部141が生成したフレームセットにおけるフレーム順に、第2三次元モデルを生成する。
続いて、図14を参照しながら、三次元モデルの生成方法について説明する。
三次元モデル生成部143は、第1三次元モデルを生成する場合、例えば、2つのフレームを用いて既三次元点を生成する。
図14は、三次元モデル生成部143が三次元モデルを生成する処理手順を説明するための図である。
図14に示すように、例えば、第1三次元モデル生成部144は、参照フレーム501と可視フレーム502との2つのフレームを用いて、被写体500の第1三次元モデルを生成する。
参照フレーム501と可視フレーム502とは、それぞれに被写体500及び当該被写体500における共通箇所(例えば、図14に示す特徴点503)が含まれていればよく、特に限定されない。
第1三次元モデル生成部144は、例えば、フレームセットの1番目のフレームを参照フレーム501として用い、フレームセットの2番目のフレームを可視フレーム502として用いて、第1三次元モデルを生成する。例えば、第1三次元モデル生成部144は、以下の式(1)に示すように、参照フレーム501と可視フレーム502との組み合わせで小領域間のNormalized Cross Correlation(NCC)をN(I、J)として算出し、フレーム間のマッチングを行った結果を示すマッチング情報を生成する。また、第1三次元モデル生成部144は、参照フレーム501及び可視フレーム502のそれぞれを撮影した時のそれぞれでのカメラ301の位置及び姿勢を示す情報と、フレーム間のマッチング情報とから、三角測量を実施することで三次元モデルを生成する。
なお、I
xy及びJ
xyは、フレームI及びフレームJの小領域内の画素値である。また、
及び
は、それぞれフレームI及びフレームJの小領域内の画素値の平均値である。
また、第2三次元モデル生成部145が第2三次元モデルを生成する場合においても、上記した第1三次元モデル生成部144が第1三次元モデルを生成する場合と同様の手順である。具体的には、第2三次元モデル生成部145は、例えば、第1三次元モデル生成部144がフレームセットの1番目のフレームを参照フレーム501として用い、フレームセットの2番目のフレームを可視フレーム502として用いて第1三次元モデルを生成した場合、フレームセットの3番目を新たに可視フレームとして用いて、当該可視フレームに第1三次元モデルを投影する。
例えば、第2三次元モデル生成部145は、上記の式(1)に示すように、参照フレーム501(例えば、フレームセットの1番目のフレーム)と新たに用いた可視フレームにおける、第1三次元モデルが投影されなかった画素との組み合わせで小領域間のNCCをN(I、J)として算出し、フレーム間のマッチングを行ったマッチング結果を示すマッチング情報を生成する。また、三次元モデル生成部143は、参照フレーム501及び新たに用いた可視フレームのそれぞれを撮影した時のカメラ301の位置及び姿勢を示す情報と、フレーム間のマッチング情報とから、三角測量を実施することで第2三次元モデルを生成する。
[効果等]
以上、実施の形態1に係る三次元モデル生成方法は、複数の第1フレームから所定の領域の第1三次元モデルを生成する第1三次元モデル生成ステップ(ステップS105)と、少なくとも1つの第2フレームに第1三次元モデルを投影し、少なくとも1つの第2フレームにおいて、第1三次元モデルが投影されなかった複数の未投影画素を特定する特定ステップ(ステップS106)と、複数の未投影画素に基づいて第2三次元モデルを生成する第2三次元モデル生成ステップ(ステップS107)と、を含む。
これによれば、生成した三次元モデルの差分の三次元モデルを順次生成していくため、各三次元モデルで重なる箇所のモデルを生成しない。そのため、三次元モデルの生成の処理時間を短縮できる。また、実施の形態1に係る三次元モデル生成方法によれば、第1三次元モデルが少なくとも1つの第2フレームに投影される。したがって、少なくとも1つの第2フレームの撮影時に、一部の被写体が撮影領域外に設けられていても、当該一部の被写体を示す三次元モデルが失われることがない。例えば、静止させることが難しい被写体を一度だけ撮影して複数の第1フレームを生成すれば、当該被写体の三次元モデルを生成し、且つ、少なくとも1つの第2フレームに基づき当該被写体以外の被写体の三次元モデルを生成することができる。
また、例えば、実施の形態1に係る三次元モデル生成方法は、さらに、複数の撮影フレームを撮影した際の各々でのカメラ301の位置及び姿勢に基づいて複数の撮影フレームに含まれる複数のフレームからなるフレームセットを生成するフレームセット生成ステップ(ステップS104)を含み、フレームセットは、複数の第1フレーム及び1以上の第2フレームを含む。
これによれば、カメラ301の位置及び姿勢に基づいて複数のフレームから選択されたフレームからなるフレームセットのフレームを用いて三次元モデルを生成するため、例えば、所定の領域が撮影されていないような不要なフレームを除いたフレームセットを生成できる。そのため、不要なフレームに対する三次元モデルの生成処理をしないため、処理時間を短縮できる。
また、例えば、フレームセット生成ステップでは、所フレームセットにおいて複数のフレームをフレーム順に並べ、特定ステップでは、少なくとも1つの第2フレームに、第1三次元モデルを含む既に生成された三次元モデルである第3三次元モデルを投影し、第3三次元モデルを投影した少なくとも1つの第2フレームにおいて、第3三次元モデルが投影されなかった複数の未投影画素を特定し、フレーム順に、上記特定ステップ及び上記第2三次元モデル生成ステップを繰り返し実行する。
これによれば、フレームごとに繰り返し投影と第2三次元モデルの生成とを実行する。そのため、第1三次元モデルと生成した第2三次元モデルとを含む既三次元モデルをフレームに投影して、投影されなかった画素を抽出できる。これにより、さらに、処理時間を短縮できる。
また、例えば、フレームセット生成ステップでは、フレームセットにおける複数のフレームを撮影した際の各々でのカメラ301の位置が所定の領域に近い順に複数のフレームを並べたフレームセットを生成する。
これによれば、所定の領域に近いカメラ301により撮影されたフレームから順に用いて第2三次元モデルを生成できる。被写体に近いカメラ301により撮影されたフレームである程、精度の高い、つまり、高画質な画像である。そのため、これによれば、三次元モデルの生成の処理時間を短縮でき、且つ、三次元モデルの精度を向上できる。
また、例えば、フレームセット生成ステップでは、カメラ301から所定の領域へ向かう方向を基準軸の正方向とした場合に、フレームセットにおける複数のフレームを撮影した際の各々でのカメラ301の位置が基準軸の正方向において所定の領域に近い順にフレームを並べたフレームセットを生成する。
これによれば、基準軸方向に基づいて、所定の領域に近いカメラ301により撮影されたフレーム順に複数のフレームを並べることができる。
また、例えば、フレームセット生成ステップでは、複数のフレームを撮影した際の各々でのカメラ301の光軸方向に基づいて基準軸の正方向を算出する。
これによれば、例えば、カメラ301の光軸方向が基準軸方向となるために、所定の領域をほとんど含まないような不要なフレームを簡単な処理でフレームセットに含めないようにできる。そのため、これによれば、三次元モデルを生成する際に不要なフレームについての処理時間を短縮できる。
また、例えば、フレームセット生成ステップでは、複数のフレームから代表フレームを選択し、当該代表フレームを撮影したカメラ301の光軸方向を基準軸の正方向として算出する。
これによれば、複数のフレームを撮影したそれぞれのカメラ301の光軸方向から基準軸方向を算出する場合と比較して、代表フレームを撮影したカメラ301の光軸方向から基準軸方向を算出するため、代表フレームを適切な数だけ選択することで、基準軸方向を算出するための処理時間を短縮できる。
また、例えば、フレームセット生成ステップでは、複数のフレームのそれぞれが第1条件を満たすか否かを判定し、複数のフレームのうち第1条件を満たすフレームでフレームセットを生成する。
これによれば、第1条件が適切に設定されることで、第1三次元モデルが全て投影されるようなフレーム、又は、所定の領域をほとんど含まないようなフレーム等の不要なフレームをフレームセットに含めないようにできる。そのため、これによれば、三次元モデルを生成する際に不要なフレームについての処理時間を短縮できる。
また、例えば、フレームセット生成ステップでは、基準軸の正方向と、フレームセットに含まれる複数のフレームを撮影した際のカメラ301の光軸方向とのなす角度が第1角度以下であることを第1条件として判定する。
これによれば、所定の領域をほとんど含まないような不要なフレームを簡単な処理でフレームセットに含めないようにできる。そのため、これによれば、三次元モデルを生成する際に不要なフレームについての処理時間を短縮できる。
また、例えば、所定の領域は、静止している静止物体、及び、動いている動体のうち少なくとも一方を被写体として含む領域である。
これによれば、所定の領域に物体が含まれるために、例えば、所定の領域とカメラ301との距離を測定する場合に、当該物体を基準として距離の測定ができるため、精度良く当該距離を算出できる。
また、例えば、少なくとも1つの第2フレームは、複数の第1フレームのうちの少なくとも1つのフレームと同一である。
これによれば、例えば、複数のフレームから第2フレームを決定する際に、第1フレームを除外する処理を行わなくてよいため、処理時間が短縮される。
また、例えば、第1フレームと前記第2フレームとは、互いに異なる。
これによれば、第2三次元モデルを生成する際に第1フレームには第2三次元モデルを投影しないため、第2三次元モデルの生成のための処理時間を短縮できる。
また、実施の形態1に係る三次元モデル生成装置100は、複数の第1フレームから所定の領域の第1三次元モデルを生成する第1三次元モデル生成部144と、少なくとも1つの第2フレームに第1三次元モデルを投影し、第1三次元モデルが投影されなかった未投影画素を特定する特定部142と、未投影画素に基づいて第2三次元モデルを生成する第2三次元モデル生成部145と、を備える。
これによれば、三次元モデル生成装置100は、生成した三次元モデルの差分の三次元モデルを順次生成していくため、各三次元モデルで重なる箇所のモデルを生成しない。そのため、三次元モデル生成装置100によれば、三次元モデルの生成の処理時間を短縮できる。
(実施の形態2)
続いて、実施の形態2に係る三次元モデル生成装置について説明する。なお、実施の形態2の説明においては、実施の形態1と実質的に同一の構成については同一の符号を付し、説明を一部簡略化又は省略する場合がある。
[構成]
まず、図15を参照しながら、実施の形態2に係る三次元モデル生成装置の構成について説明する。
図15は、実施の形態2に係る三次元モデル生成装置100aの特徴的な構成を示すブロック図である。図16は、実施の形態2に係る三次元モデル生成装置100aが備える生成部140aの特徴的な構成を示すブロック図である。
実施の形態2に係る三次元モデル生成システム400aは、カメラ群300と、推定装置200と、三次元モデル生成装置100aと、を備える。
三次元モデル生成装置100aは、受信部110と、記憶部120と、取得部130と、生成部140aと、出力部150と、を備える。
生成部140aは、フレームセット生成部141aと、特定部142aと、三次元モデル生成部143aと、判定部146と、更新部147と、を備える。
フレームセット生成部141aは、複数のフレームのフレーム順を決定してフレームセットを生成する処理部である。ここで、フレームセット生成部141aは、記憶部120に記憶されたフレーム順を維持したまま、つまり、カメラ301による撮影順序のままのフレームセットを生成する。
特定部142aは、フレームセット生成部141aが生成したフレームセットの順番通りに、既三次元モデルに画像を投影する処理部である。特定部142aは、少なくとも1つの第2フレームに第1三次元モデルを投影し、少なくとも1つの第2フレームにおいて、第1三次元モデルが投影された複数の投影画素を特定する。具体的には、特定部142aは、第1三次元モデルを、第1フレームを除く複数のフレーム(より具体的には、フレームセット)に含まれるフレームである少なくとも1つの第2フレームに投影し、第1三次元モデルが投影された1以上の第2フレームの画素である投影画素、及び、1以上の第2フレームに投影された第1三次元モデルの画素を特定する。つまり、特定部142aは、第1三次元モデルを投影したフレームについて、当該第1三次元モデルが投影された投影画素を特定する。また、特定部142aは、フレームに投影された第1三次元モデルの画素(つまり、三次元点)を特定する。
また、特定部142aは、少なくとも1つの第2フレームにおいて、第1三次元モデルが投影されなかった複数の未投影画素を特定する。
三次元モデル生成部143aは、複数のフレームから三次元モデルを生成する処理部である。三次元モデル生成部143aは、第1三次元モデル生成部144aと、第2三次元モデル生成部145aとを有する。
第1三次元モデル生成部144aは、複数の第1フレームから所定の領域の第1三次元モデルを生成する処理部である。具体的には、第1三次元モデル生成部144aは、複数のフレームのうちのフレームである少なくとも2以上の第1フレームから被写体の第1三次元モデルを生成する。
第2三次元モデル生成部145aは、特定部142aが特定した複数の未投影画素に基づいて第2三次元モデルを生成する処理部である。
判定部146は、少なくとも1つの第2フレームが撮影された少なくとも1つの第2撮影位置が、複数の第1フレームが撮影された複数の第1撮影位置のいずれかよりも所定の領域に近いか否かを判定する処理部である。具体的には、判定部146は、特定部142aが特定した投影画素を含む少なくとも1つの第2フレームが撮影されたカメラ301の位置が、特定部142aが特定した画素であって第1三次元モデルの画素を生成するために用いられたフレームが撮影された際のカメラ301の位置よりも被写体に近いか否かを判定する。つまり、判定部146は、特定部142aが投影したフレームにおける、既三次元モデルに投影された画素について、投影された画素に対応する既三次元モデルの画素を含むフレームと既三次元モデルが投影されたフレームとのそれぞれのフレームを撮影したカメラ301と被写体との距離が、いずれが近いかを判定する。
更新部147は、少なくとも1つの第2撮影位置が複数の第1撮影位置のいずれかよりも所定の領域に近いと判定部146が判定した場合、特定部142aが特定した複数の投影画素に基づいて、第1三次元モデルを更新する。具体的には、更新部147は、複数のフレームのそれぞれの画素のうち、三次元モデルの三次元点の位置が重なる画素については、判定部146により判定された、最も被写体と近いカメラ301が撮影したフレームの画素(つまり、第1三次元モデルが投影される前の画素値)を採用するように、第1三次元モデルを更新する。
例えば、更新部147は、少なくとも1つの第2フレームが撮影されたカメラ301の位置が、第1三次元モデルの画素を生成するために用いられたフレームが撮影された際のカメラ301の位置よりも被写体に近いと判定部146が判定した場合、特定部142aが特定した第1三次元モデルの画素を、特定部142aが特定した少なくとも1つの第2フレームの投影画素に更新(言い換えると、変更)することで、新三次元モデルを生成する。つまり、更新部147は、既三次元モデルの画素を生成するために用いたフレームを撮影したカメラ301と、既三次元モデルが投影された画素を含むフレームを撮影したカメラ301とのうち、被写体に近い方のカメラ301が撮影したフレームの画素で新三次元モデルを生成する。
例えば、特定部142aは、既三次元モデルに、フレームセットのうちで未だ三次元モデルを投影していないフレームに投影し、当該フレームにおいて三次元モデルが投影された画素である投影画素を特定する。ここで、既三次元モデルは、第2三次元モデル生成部145aが第2三次元モデルを生成していない場合には、第1三次元モデルである。また、既三次元モデルは、第2三次元モデル生成部145が第2三次元モデルを生成している場合には、第2三次元モデル生成部145が生成した第2三次元モデルである。
特定部142a及び三次元モデル生成部143aは、フレームセットの順序の通りに、三次元モデルをフレームに繰り返し投影することで、当該フレームにおいて既三次元モデルが投影された投影画素及び対応する既三次元モデルの画素を抽出し、抽出した画素について、既三次元モデルの画素を生成するために用いたフレームを撮影したカメラ301と、既三次元モデルが投影された投影画素を含むフレームを撮影したカメラ301とのうち、被写体に近い方のカメラ301が撮影したフレームの画素で新三次元モデルを生成する。
[処理手順]
続いて、図17及び図18を参照しながら、実施の形態2に係る三次元モデル生成装置の処理手順について詳細に説明する。
図17は、実施の形態2に係る三次元モデル生成装置100aが実行する三次元モデルの生成処理を示すフローチャートである。
まず、取得部130は、記憶部120からカメラ301の位置及び姿勢を示す情報と、カメラパラメータと、複数のフレームとを取得して生成部140aに入力する(ステップS401)。具体的には、実施の形態1と同様に、まず、受信部110は、推定装置200で推定したカメラ301の位置及び姿勢を示す情報と、カメラパラメータと、複数のフレームとを受信し、これらのデータを記憶部120に出力する。また、記憶部120は、受信部110が受信したカメラ301の位置及び姿勢を示す情報と、カメラパラメータと、複数のフレームとを記憶する。それから、取得部130は、ステップS401を実行する。
次に、フレームセット生成部141aは、カメラ301がフレームを撮影した順序となるフレーム順のフレームセットを生成する(ステップS402)。例えば、カメラ301は、撮影したフレームと、当該フレームを撮影した時刻を示す時刻情報とを紐づけて推定装置200を介して三次元モデル生成装置100aへ送信する。フレームセット生成部141aは、フレームごとに紐づけられた時刻情報に基づいて、カメラ301がフレームを撮影した順序となるフレーム順のフレームセットを生成する。
次に、第1三次元モデル生成部144aは、フレームセットから三次元モデル(第1三次元モデル)を生成する(ステップS403)。例えば、第1三次元モデル生成部144aは、フレームセットのうちの任意の2つのフレーム(第1フレーム)を用いて、第1三次元モデルを生成する。
次に、生成部140aは、フレームセットに含まれるフレーム数以下の繰り返し処理を開始する(ステップS404)。具体的には、生成部140aは、フレームセットに含まれる複数のフレームそれぞれについて、ステップS405~ステップS408の処理を繰り返し実行する。
次に、特定部142aは、既三次元モデルをフレームセットの中の少なくとも1つのフレーム(第2フレーム)に投影する(ステップS405)。
次に、特定部142aは、既三次元モデルを投影したフレームにおいて、既三次元モデルの三次元点が投影された画素を抽出する(ステップS406)。より具体的には、ステップS406では、特定部142aは、既三次元モデルを、第1フレームを除くフレームセットに含まれるフレームである少なくとも1以上の第2フレームに投影し、既三次元モデルが投影された少なくとも1つの第2フレームの投影画素を特定する。
次に、判定部146は、ステップS406で特定部142aが特定した投影画素が、最近傍点であるか否かを判定する(ステップS407)。具体的には、判定部146は、少なくとも1つの第2フレームが撮影された少なくとも1つの第2撮影位置が、複数の第1フレームが撮影された複数の第1撮影位置のいずれかよりも所定の領域に近いか否かを判定する。より具体的には、判定部146は、ステップS406で特定部142aが特定した抽出画素を含む第2フレームが撮影されたカメラ301の位置が、ステップS406で特定部142aが特定した画素であって既三次元モデルの画素を生成するために用いられたフレームが撮影された際のカメラ301の位置よりも被写体に近いか否かを判定する。判定部146は、被写体に近い方のカメラ301により撮影されたフレームに含まれる画素を最近傍点と判定する。
更新部147は、ステップS407で特定した第2フレームの投影画素が最近傍点であると判定部146が判定した場合(ステップS407でYes)、つまり、少なくとも1つの第2撮影位置が複数の第1撮影位置のいずれかよりも所定の領域に近いと判定された場合、第1三次元モデルが投影される前の投影画素に基づいて既三次元モデルを更新する(ステップS408)。つまり、更新部147は、ステップS406で特定された既三次元モデルの画素を、ステップS406で特定された第2フレームの投影画素に既三次元モデルの画素を更新する。
一方、更新部147は、ステップS407で特定した第2フレームの投影画素が最近傍点でないと判定部146が判定した場合(ステップS407でNo)、既三次元モデルの画素を、当該第2フレームの投影画素に変更しない。つまり、更新部147は、既三次元モデルの画素を更新する処理をしない。
次に、特定部142aは、三次元モデルを投影した第2フレームにおいて、三次元モデル(具体的には、三次元モデルを構成する三次元点)が投影されなかった未投影画素を特定する(ステップS409)。
次に、第2三次元モデル生成部145aは、ステップS409で特定した未投影画素に基づいて、新たに新三次元モデル(第2三次元モデル)を生成する(ステップS410)。つまり、第2三次元モデル生成部145aは、既三次元モデルに存在しない点からなる第2三次元モデルを生成する。
次に、生成部140aは、フレームセットの繰り返し処理を終了する(ステップS411)。
次に、出力部150は、第1三次元モデル及び第2三次元モデルを統合して出力する(ステップS412)。
なお、判定部146が、ステップS407の判定をするために、既三次元モデルを生成するために用いられたフレームにカメラ301と三次元点との距離を示す情報が保持されていてもよいし、既三次元モデルの各三次元点(画素)に、各画素が含まれていたフレームが撮影されたカメラ301のID、つまり、当該フレームが撮影された際のカメラ301と被写体との距離を示す情報が保持されていてもよい。
図18は、実施の形態2に係る三次元モデル生成装置100aが備える更新部147が実行する処理におけるフレームの処理位置を説明するための図である。なお、図18には、時刻t+1及び時刻t+2での画素の置き換え範囲、つまり、フレームにおいて既三次元モデルが投影された画素位置を、ハッチングを付して示している。
また、図18に示す例では、時刻t+2のフレーム、時刻t+1のフレーム、及び、時刻tのフレームは、この順に被写体からの距離が近いとする。
まず、図18の(a)に示すように、例えば、時刻tにおけるフレームについて、全ての箇所で既三次元モデルが投影されなかったとする。この場合、第2三次元モデル生成部145aは、時刻tにおけるフレームの全ての画素について、第2三次元モデルを生成する。
また、図18の(b)に示すように、例えば、時刻t+1におけるフレームについて、ハッチングで示す箇所(本例では、時刻t+1のフレームの全て)で既三次元モデルが投影されたとする。具体的には、図18の(b)におけるハッチング部分が図18の(a)に示す時刻tのフレームにより生成された第2三次元モデルを含む既三次元モデルが投影された画素位置であるとする。この場合、更新部147は、既三次元モデルが投影された時刻tのフレームを用いて生成(更新)された既三次元モデルの三次元点(画素)を、時刻t+1のフレームの画素で置き換える、つまり、更新する。
また、図18の(c)に示すように、例えば、時刻t+2におけるフレームについて、ハッチングで示す箇所(本例では、時刻t+2のフレームの全て)で既三次元モデルが投影されたとする。具体的には、図18の(c)におけるハッチング部分が、図18の(b)に示す時刻t+1のフレームにより更新された既三次元モデルが投影された画素位置(本例では、時刻t+2のフレームの全て)であるとする。この場合、更新部147は、既三次元モデルの三次元点(画素)を、時刻t+2のフレームの画素で置き換える。
このように、例えば、更新部147は、フレームを撮影したカメラ301の位置に基づいて、既三次元モデルの画素を適宜更新。例えば、更新部147は、カメラ光軸方向(言い換えると、基準軸の正方向)にカメラ301が進んでシーン(被写体)を撮影する場合、投影された点全てを現処理フレームで生成した新三次元モデルで既三次元モデルの画素を置き換える。
[効果等]
以上、実施の形態2に係る三次元モデル生成方法は、複数の第1フレームから所定の領域の第1三次元モデルを生成する第1三次元モデル生成ステップ(ステップS403)と、少なくとも1つの第2フレームに第1三次元モデルを投影(ステップS404)し、少なくとも1つの第2フレームにおいて、第1三次元モデルが投影された複数の投影画素を特定する特定ステップ(ステップS406)と、少なくとも1つの第2フレームが撮影された少なくとも1つの第2撮影位置が、複数の第1フレームが撮影された複数の第1撮影位置のいずれかよりも所定の領域に近いか否かを判定する判定ステップ(ステップS407)と、少なくとも1つの第2撮影位置が複数の第1撮影位置のいずれかよりも所定の領域に近いと判定された場合(ステップS407でYes)、第1三次元モデルが投影される前の複数の投影画素に基づいて、第1三次元モデルを更新する更新ステップ(ステップS408)と、を含む。
これによれば、カメラ301に撮影されたフレームを撮影された時系列に沿った順で用いて、三次元モデルを生成する。そのため、撮影順にフレームを処理することで、フレーム順を並べ替えたフレームセットを生成しないために短時間で三次元モデルを生成できる。また、一度生成した新三次元モデルにおいてもフレームに投影された画素については当該フレームと比較して、精度の高い画素(つまり、所定の領域との距離がより近いカメラ301により撮影されたフレームの画素)を採用した新三次元モデルを生成できる。これによれば、高精度な三次元モデルを生成できる。
また、例えば、特定ステップは、少なくとも1つの第2フレームにおいて、第1三次元モデルが投影されなかった複数の未投影画素を特定する(ステップS409)。また、例えば、実施の形態2に係る三次元モデル生成方法は、複数の未投影画素に基づいて第2三次元モデルを生成する第2三次元モデル生成ステップ(ステップS410)をさらに含む。
これによれば、第1三次元モデルに存在しない画素である未投影画素を用いた第2三次元モデルを生成できる。
(その他の実施の形態)
以上、本開示に係る三次元モデル生成方法等について、上記各実施の形態1及び実施の形態2に基づいて説明したが、本開示は、上記各実施の形態1及び実施の形態2に限定されるものではない。
例えば、上記実施の形態では、三次元モデル生成装置等が備える生成部140等の処理部は、CPUと制御プログラムとによって実現されると説明した。例えば、当該処理部の構成要素は、それぞれ1つ又は複数の電子回路で構成されてもよい。1つ又は複数の電子回路は、それぞれ、汎用的な回路でもよいし、専用の回路でもよい。1つ又は複数の電子回路には、例えば、半導体装置、IC(Integrated Circuit)、又は、LSI(Large Scale Integration)等が含まれてもよい。IC又はLSIは、1つのチップに集積されてもよく、複数のチップに集積されてもよい。ここでは、IC又はLSIと呼んでいるが、集積の度合いによって呼び方が変わり、システムLSI、VLSI(Very Large Scale Integration)、又は、ULSI(Ultra Large Scale Integration)と呼ばれるかもしれない。また、LSIの製造後にプログラムされるFPGA(Field Programmable Gate Array)も同じ目的で使うことができる。
また、本開示の全般的又は具体的な態様は、システム、装置、方法、集積回路、又は、コンピュータプログラムで実現されてもよい。或いは、当該コンピュータプログラムが記憶された光学ディスク、HDD(Hard Disk Drive)若しくは半導体メモリ等のコンピュータ読み取り可能な非一時的記録媒体で実現されてもよい。また、システム、装置、方法、集積回路、コンピュータプログラム及び記録媒体の任意な組み合わせで実現されてもよい。
その他、各実施の形態に対して当業者が思いつく各種変形を施して得られる形態や、本開示の趣旨を逸脱しない範囲で実施の形態における構成要素及び機能を任意に組み合わせることで実現される形態も本開示に含まれる。