(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024084285
(43)【公開日】2024-06-25
(54)【発明の名称】カメラ位置決定装置およびそのプログラム
(51)【国際特許分類】
G06T 19/00 20110101AFI20240618BHJP
H04N 5/222 20060101ALI20240618BHJP
H04N 23/90 20230101ALI20240618BHJP
G06T 15/20 20110101ALI20240618BHJP
【FI】
G06T19/00 A
H04N5/222
H04N23/90
G06T15/20 500
【審査請求】未請求
【請求項の数】5
【出願形態】OL
(21)【出願番号】P 2022198466
(22)【出願日】2022-12-13
(71)【出願人】
【識別番号】000004352
【氏名又は名称】日本放送協会
(74)【代理人】
【識別番号】110001807
【氏名又は名称】弁理士法人磯野国際特許商標事務所
(72)【発明者】
【氏名】盛岡 寛史
【テーマコード(参考)】
5B050
5B080
5C122
【Fターム(参考)】
5B050AA08
5B050AA09
5B050BA09
5B050BA12
5B050CA01
5B050DA07
5B050EA06
5B050EA07
5B050EA26
5B050FA02
5B080AA13
5B080AA17
5B080CA00
5B080FA02
5B080GA00
5C122DA02
5C122DA36
5C122EA42
5C122FA04
5C122FA18
5C122GE10
5C122HA88
5C122HB01
(57)【要約】
【課題】スタジオに配置するカメラの位置を決定するカメラ位置決定装置を提供する。
【解決手段】カメラ位置決定装置1は、被写体モデルの頂点に重要度を設定する頂点重要度設定部21と、頂点位置に接し頂点法線に直交する平面に近いカメラ位置に重要度を割り当てるカメラ位置重要度割当部22と、重要度によりカメラ位置をクラスタリングする重要度クラスタリング部23と、注視位置を算出する注視位置算出部30と、クラスタリングされた部分空間の重要度の割合に応じたカメラ数を算出するカメラ数算出部41と、部分空間におけるカメラの配置パターンを選択する配置パターン選択部42と、注視位置からカメラ位置への方向ベクトルを用いて、配置パターンごとに損失関数により損失を算出するパターン別損失算出部43と、損失が最小となる配置パターンを選択する損失最小パターン選択部44と、を備える。
【選択図】
図1
【特許請求の範囲】
【請求項1】
ボリュメトリックスタジオに配置するカメラの位置を決定するカメラ位置決定装置であって、
CGの被写体モデルのポリゴンを構成する各頂点に重要度を設定する頂点重要度設定部と、
前記被写体モデルを前記ボリュメトリックスタジオの仮想空間内に配置し、前記頂点に設定された重要度を、頂点位置に接し頂点法線に直交する平面とカメラ位置との距離が予め定めた閾値未満となるカメラ位置に割り当てるカメラ位置重要度割当部と、
前記カメラ位置重要度割当部で割り当てられた重要度により、前記カメラ位置をクラスタリングする重要度クラスタリング部と、
予め設定された総カメラ数から、クラスタリングされたカメラ位置のクラスである部分空間ごとの前記重要度の割合に応じたカメラ数を算出するカメラ数算出部と、
前記カメラ数に応じた前記部分空間におけるカメラの配置パターンを選択する配置パターン選択部と、
カメラ同士の方向ベクトルが、直交する関係に近いほど値が小さくなる損失関数を用いて、前記部分空間における前記配置パターンごとの損失を算出するパターン別損失算出部と、
前記損失が最小となる配置パターンを選択して、前記部分空間におけるカメラの位置とする損失最小パターン選択部と、
を備えることを特徴とするカメラ位置決定装置。
【請求項2】
前記ボリュメトリックスタジオにすでに配置されている既存カメラの方向ベクトルから注視位置を算出する注視位置算出部をさらに備え、
前記パターン別損失算出部は、前記注視位置からカメラ位置への方向ベクトルを用いて、前記配置パターンごとの損失を算出することを特徴とする請求項1に記載のカメラ位置決定装置。
【請求項3】
前記配置パターン選択部は、前記部分空間にすでに既存カメラが存在する場合、前記カメラ数から前記部分空間内の既存カメラの数を減算した数で前記配置パターンを選択し、
前記パターン別損失算出部は、前記配置パターン内の1つの新規カメラの位置と当該新規カメラを除く他の新規カメラおよび既存カメラの位置との間において前記損失を算出することを特徴とする請求項1に記載のカメラ位置決定装置。
【請求項4】
前記頂点重要度設定部は、前記重要度として、予め前記重要度の度合いを割り当てた輝度または色情報の値を設定することを特徴とする請求項1に記載のカメラ位置決定装置。
【請求項5】
コンピュータを、請求項1から請求項4のいずれか一項に記載のカメラ位置決定装置として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ボリュメトリックスタジオに配置するカメラの位置を決定するカメラ位置決定装置およびそのプログラムに関する。
【背景技術】
【0002】
近年、多視点画像を利用して、3次元再構成を行うためのボリュメトリックスタジオが様々な場面で実用化のフェーズに入っている。
ボリュメトリックスタジオでは、一般的に数十台もの多数のカメラを必要とする。そのため、限りあるカメラ台数を考えた場合、いかに決められた空間上にカメラを効率よく配置するかが重要になる。
【0003】
従来、このような3次元再構成を行うためのカメラの配置位置を最適化する手法として、視体積交差法を利用する手法が提案されている(非特許文献1)。
この手法は、同時刻にカメラで被写体を撮影した複数枚の2次元シルエットを用いて、カメラの位置を頂点、2次元シルエットを断面とする錐体(視体積)の共通部分を最小化するように、カメラの位置を探索する手法である。
【先行技術文献】
【非特許文献】
【0004】
【非特許文献1】海老澤,東海林,外山,森,“視体積交差におけるカメラ配置の最適化”,FIT2012(第11回情報科学技術フォーラム)講演論文,第3分冊,pp151-154,2012年
【発明の概要】
【発明が解決しようとする課題】
【0005】
従来の手法は、2次元シルエットから視体積の共通部分を最小化する手法であるため、被写体の形状のみからカメラの配置を決定している。すなわち、従来の手法は、被写体の形状を一様に3次元再構成するためのカメラの位置を決定している。
しかし、被写体の各部位への重要度(注目度)は一様ではない。例えば、被写体の顔と背中とでは、顔に対する重要度の方が高いことが一般的である。従来の手法は、被写体の部位に対して重要度が異なる場合であっても、被写体を一様に再構成するため、重要度の高い部位についてはより詳細に再構成を行いたいという要望がある。
【0006】
そこで、本発明は、指定された被写体の重要度に応じて、重要度の高い部位ほど、詳細に3次元再構成を行うことが可能なカメラの位置を決定するカメラ位置決定装置およびそのプログラムを提供することを課題とする。
【課題を解決するための手段】
【0007】
前記課題を解決するため、本発明に係るカメラ位置決定装置は、ボリュメトリックスタジオに配置するカメラの位置を決定するカメラ位置決定装置であって、頂点重要度設定部と、カメラ位置重要度割当部と、重要度クラスタリング部と、カメラ数算出部と、配置パターン選択部と、パターン別損失算出部と、損失最小パターン選択部と、を備える構成とした。
【0008】
かかる構成において、カメラ位置決定装置は、頂点重要度設定部によって、CGの被写体モデルのポリゴンを構成する各頂点に重要度を設定する。なお、この重要度は、より詳細に3次元再構成したい被写体の部位にユーザが設定する値である。
【0009】
そして、カメラ位置決定装置は、カメラ位置重要度割当部によって、被写体モデルをボリュメトリックスタジオの仮想空間内に配置し、頂点に設定された重要度を、頂点位置に接し頂点法線に直交する平面とカメラ位置との距離が予め定めた閾値未満となるカメラ位置に割り当てる。これによって、頂点法線に対して直交する方向に配置されたカメラ位置ほど、高い重要度が設定されることになる。
さらに、カメラ位置決定装置は、重要度クラスタリング部によって、カメラ位置重要度割当部で割り当てられた重要度により、カメラ位置をクラスタリングする。これによって、カメラ位置の全体空間を、重要度に応じた部分空間に分割することができる。
【0010】
そして、カメラ位置決定装置は、カメラ数算出部によって、予め設定されたカメラ総数から、クラスタリングされたカメラ位置の部分空間の重要度の割合に応じたカメラ数を算出する。
そして、カメラ位置決定装置は、配置パターン選択部によって、算出されたカメラ数に応じた部分空間におけるカメラの配置パターンを選択する。
【0011】
そして、カメラ位置決定装置は、パターン別損失算出部によって、カメラ同士の方向ベクトルが、直交する関係に近いほど値が小さくなる損失関数を用いて、部分空間における配置パターンごとの損失を算出する。
そして、カメラ位置決定装置は、損失最小パターン選択部によって、損失が最小となる配置パターンを選択して、部分空間におけるカメラの位置とする。
なお、カメラ位置決定装置は、コンピュータを、前記した各部として機能させるためのプログラムで動作させることができる。
【発明の効果】
【0012】
本発明によれば、指定された被写体の部位の重要度に応じて、重要度の高い部位ほど、詳細に3次元再構成を行うことが可能なカメラの位置を決定することができる。
【図面の簡単な説明】
【0013】
【
図1】本発明の実施形態に係るカメラ位置決定装置の構成を示すブロック図である。
【
図2】ボリュメトリックスタジオの構成例を示す斜視図である。
【
図3】頂点重要度設定部が被写体モデルに設定する重要度を模式的に示す図である。
【
図4】重要度を輝度で表したときの重要度の設定例を示す図である。
【
図5】カメラ位置重要度割当部におけるカメラ位置に重要度を割り当てる処理を説明するための説明図である。
【
図6】カメラ位置重要度割当部における異なる重要度をカメラ位置に割り当てる処理を説明するための説明図である。
【
図7】カメラ位置重要度割当部における同じカメラ位置に重要度を割り当てる処理を説明するための説明図である。
【
図8】半球体の面の表面に重要度が設定された状態を示す模式図である。
【
図9】重要度クラスタリング部の処理を説明するための説明図である。
【
図10】配置パターン選択部の処理を説明するための説明図である。
【
図11】パターン別損失算出部および損失最小パターン選択部における並列処理を説明するための説明図である。
【
図12】本発明の実施形態に係るカメラ位置決定装置の動作を示すフローチャート(1/2)である。
【
図13】本発明の実施形態に係るカメラ位置決定装置の動作を示すフローチャート(2/2)である。
【発明を実施するための形態】
【0014】
以下、本発明の実施形態について図面を参照して説明する。
<カメラ位置決定装置の構成>
まず、
図1を参照して、本発明の実施形態に係るカメラ位置決定装置1の構成について説明する。
【0015】
カメラ位置決定装置1は、ボリュメトリックスタジオに配置するカメラの位置を決定するものである。
カメラ位置決定装置1は、外部の記憶装置2に記憶されている予めCGで生成された被写体モデルである被写体データを入力し、被写体の部位の重要度に応じたボリュメトリックスタジオ内のカメラ位置を決定する。
【0016】
図2に示すように、ボリュメトリックスタジオ100は、被写体Mを中心にそれを包み込む表面Sf上にカメラCamを配置する構造となっている。
なお、表面Sfの形状は、半球形状や天井のある円筒形状が一般的であるが、これらの形状には限定されず、立方体等であっても構わない。ここでは、表面Sfの形状を半球形状の例で説明する。ボリュメトリックスタジオ100の表面Sfには、予め構造体の骨組み等に設定されたカメラCamを設置するための複数のカメラ位置Pが準備されている。
カメラ位置決定装置1は、ボリュメトリックスタジオ100の表面Sfにおいて、被写体Mの部位の重要度に応じて、複数のカメラ位置Pを決定する。
【0017】
図1に示すように、カメラ位置決定装置1は、記憶部MEと制御部CLとを備える。
記憶部MEは、カメラ位置決定装置1を制御するための情報を記憶するものであって、半導体メモリ等の一般的な記憶媒体で構成することができる。
ここでは、記憶部MEは、カメラ配置情報記憶部10を備える。
カメラ配置情報記憶部10は、ボリュメトリックスタジオ100(
図2)の3次元空間上のカメラ位置Pの位置情報を記憶するものである。また、カメラ位置Pには、すでにカメラCamが配置されているか否かを示す情報も付加され、すでにカメラCamが配置されている場合、すでに撮影を行ったキャリブレーションされた方向ベクトル(パン、チルト)が記憶されているものとする。
【0018】
制御部CLは、カメラ位置決定装置1の各種制御動作を行うものである。
制御部CLは、カメラ配置空間クラスタリング部20と、注視位置算出部30と、部分空間別カメラ位置決定部40と、を備える、
【0019】
カメラ配置空間クラスタリング部20は、ボリュメトリックスタジオ100のカメラ位置Pを、被写体Mの部位の重要度に応じてクラスタリングするものである。
ここでは、カメラ配置空間クラスタリング部20は、頂点重要度設定部21と、カメラ位置重要度割当部22と、重要度クラスタリング部23と、を備える。
【0020】
頂点重要度設定部21は、記憶装置2に記憶されている被写体データを読み込み、CGの被写体モデルのポリゴン(多角形の面)を構成する各頂点に対して重要度を設定するものである。被写体データは、一般的な人間をモデル化したデータを用いる。もちろん、被写体Mが、動物等であれば、被写体データもそれに対応した動物等をモデル化したデータを用いる。
頂点重要度設定部21は、被写体モデルを表示装置3に表示し、ユーザがGUI(Graphical User Interface)によって、被写体モデルのどこを重点的(より詳細)に3次元再構成したいかを設定する。
例えば、頂点重要度設定部21は、被写体モデルMDを表示装置3に表示し、ユーザがマウス操作等によって、被写体モデルMDを移動、回転させて、任意の視点から、重点的に3次元再構成したい部位を重要度が高い部位に設定する。
【0021】
図3は、被写体モデルMDにおいて、頭部の顔領域、上半身等に重要度を高く設定した例を示している。ここでは、重要度を輝度で表し、
図4に示すように輝度が明るいほど重要度が大きいことを示し、輝度が暗いほど重要度が小さいことを示す。ここでは、最大重要度の値を“1”、最小重要度の値を“0”とする。
これによって、ユーザが重点的に3次元再構成したい被写体モデルMDの部位の面を構成する頂点には、より値の大きい重要度が設定されることになる。
【0022】
なお、被写体モデルMDの頂点に値を設定するには、スキンウェイトのペインティング手法を用いればよい。もちろん、この手法は一例であって、この手法に限定されない。例えば、マウスをドラッグして領域を選択して描画を行う投げ縄ツール、マウスをクリックした点を繋いだ領域に対して描画を行う多角形選択ツール等、任意の手法を用いることができる。
頂点重要度設定部21は、頂点に重要度を設定した被写体モデルを、カメラ位置重要度割当部22に出力する。
【0023】
カメラ位置重要度割当部22は、被写体モデルの各頂点に設定された重要度を、ボリュメトリックスタジオ100の表面Sf上のカメラ位置に仮想的に割り当てるものである。ここでは、カメラ位置重要度割当部22は、ボリュメトリックスタジオ100の表面Sfをモデル化した仮想空間に被写体モデルを配置して、表面Sf上のカメラ位置に重要度を割り当てる。なお、初期値として、表面Sf上のカメラ位置には、予め最も小さい重要度(値“0”)を設定しておく。
【0024】
視体積交差法では輪郭から形状を削り出すため、被写体モデルの各頂点をより詳細に3次元再構成するには、頂点位置において、頂点法線と直交する平面上にカメラを配置することが好ましい。
ボリュメトリックスタジオ100の場合、
図5に示すように、被写体モデルMDの頂点vの位置ベクトルをp
v、法線ベクトルをn
vとすると頂点vに接する平面πの方程式は、π:n
v・(x-p
v)=0で表される。そして、平面πと半球の表面Sfとの交点集合p′
sの各交点の位置が、被写体モデルMDの頂点vをより詳細に3次元再構成するために適したカメラ位置となる。
【0025】
なお、半球面の表面Sfは連続面であるが、表面Sf上のカメラ位置は離散点である。
そこで、カメラ位置重要度割当部22は、被写体モデルの各頂点に設定された重要度を、頂点位置に接し頂点法線に直交する平面に予め定めた閾値未満で距離が近いカメラ位置に割り当てる。
具体的には、カメラ位置重要度割当部22は、ある頂点vにおいて、ベクトルの内積の絶対値|nv・(ps-pv)|を計算し、閾値をδ>0として、|nv・(ps-pv)|<δを満たすps∈Sの集合Ps、すなわち、ある頂点vの位置ベクトルpvに対応するカメラ位置の集合を求める。
そして、カメラ位置重要度割当部22は、頂点vの重要度を、集合Psの個々の要素ps∈Sであるカメラ位置に割り当てる。
【0026】
なお、頂点とカメラ位置とは、一対一対応ではないため、カメラ位置重要度割当部22は、カメラ位置において、対応する頂点の重要度を加算する。この場合、カメラ位置に割り当てた重要度は“1”を超える場合がある。
【0027】
例えば、
図6に示すように、位置ベクトルp
v1の頂点の方が、位置ベクトルp
v2の頂点よりも重要度が大きいとする。この場合、半球面の表面Sfを連続面としたとき、位置ベクトルp
v1に対応する平面π
1と表面Sfとの交点集合p′
s1であるカメラ位置には、位置ベクトルp
v2に対応する平面π
2と表面Sfとの交点集合p′
s2であるカメラ位置よりも大きい重要度が設定される。なお、
図6は、表面Sfを真横から見た場合(yz平面)を示している。
【0028】
また、
図7に示すように、
図6で示した平面π
1と平面π
2とが表面Sfで交わった場合、その交わった位置の重要度は、位置ベクトルp
v1の頂点の重要度と、位置ベクトルp
v2の頂点の重要度との和になる。
これによって、
図8に示すように、半球体の表面Sfには、被写体モデルMDの頂点に対応する交点集合p′
sの各交点の位置に重要度が割り当てられる。なお、実際には、表面Sf上のカメラ位置は離散点であるため、カメラ位置に重要度が割り当てられる。
カメラ位置重要度割当部22は、表面Sf上のカメラ位置に割り当てた重要度を重要度クラスタリング部23に出力する。
【0029】
重要度クラスタリング部23は、カメラ位置重要度割当部22で表面Sf上のカメラ位置に割り当てた重要度によって、カメラ位置をクラスタリングするものである。
重要度クラスタリング部23は、カメラ位置の全体空間Sを、重要度によってクラスタリングし、複数のクラス(部分空間Si(i=1,…,N))に分割する。Nはクラスタ数を示す。なお、クラスタリングは一般的な手法を用いればよく、例えば、k-meams法、MeanShift法等を用いることができる。
これによって、半球面の表面のカメラ配置空間全体を、重要度に応じた部分空間に領域分割することができる。
【0030】
例えば、
図9に示すように、ボリュメトリックスタジオ100において、重要度クラスタリング部23は、カメラ位置の全体空間Sを、重要度によって、部分空間S
1,S
2,…に分割する。なお、ここでは、後の説明を簡単にするため、部分空間S
1に含まれるカメラ位置は、既存カメラの位置P
1,P
2を含む黒丸印で示す5点とする。また、部分空間S
2に含まれるカメラ位置は、既存カメラの位置P
3を含む黒丸印で示す3点とする。
重要度クラスタリング部23は、クラスタリングしたクラスタ(部分空間)ごとのカメラ位置を部分空間別カメラ位置決定部40に出力する。
【0031】
注視位置算出部30は、カメラ位置の全体空間におけるカメラの注視位置を算出するものである。
注視位置算出部30は、全体空間のいずれかにすでにカメラ(既存カメラ)が存在する場合、既存カメラの光軸が最も近接する位置を注視位置として算出する。
【0032】
ここで、既存カメラの数をn、位置ベクトルをpj(j=1,…,n)、光軸の方向ベクトルをvj(j=1,…,n)、方向ベクトルを伸ばすための比例係数をaj、注視位置の位置ベクトルoとの誤差をεjとすると、注視位置の位置ベクトルoは、o=pj+ajvj+εjとなる。
そこで、注視位置算出部30は、カメラ配置情報記憶部10に記憶されている既存カメラの位置、方向を参照し、以下の式(1)を最小化する位置ベクトルoを注視位置として算出する。
【0033】
【0034】
これは最小二乗法の変形であり、正規方程式を解くことで求めることができる。
なお、既存カメラが存在しない場合、注視位置算出部30は、予め定めたボリュメトリックスタジオ100の中心位置(半球の大円中心、大円中心から上部方向に所定距離離れた位置等)を注視位置とする。
注視位置算出部30は、注視位置(位置ベクトルo)を、部分空間別カメラ位置決定部40に出力する。
【0035】
部分空間別カメラ位置決定部40は、カメラ配置空間クラスタリング部20でクラスタリングされたクラスタ(部分空間)ごとのカメラ位置から、新規にカメラを配置する位置を決定するものである。
ここでは、部分空間別カメラ位置決定部40は、カメラ数算出部41と、配置パターン選択部42と、パターン別損失算出部43と、損失最小パターン選択部44と、を備える。
【0036】
カメラ数算出部41は、予め設定された総カメラ数から、重要度クラスタリング部23でクラスタリングされたカメラ位置のクラス(部分空間)の重要度の割合に応じたカメラ数を算出するものである。
ここで、ボリュメトリックスタジオ100に新規に設置する総カメラ数をC、ボリュメトリックスタジオ100のすべて(全体空間S)のカメラ位置に割り当てられた重要度の総和をIs、部分空間Si(i=1,…,N:Nはクラスタ数)のカメラ位置に割り当てられた重要度の和をIsiとする。なお、総カメラ数Cは、予め外部から設定されるものとする。
このとき、カメラ数算出部41は、以下の式(2)により、重要度の割合に応じて個々の部分空間Siの新規カメラ数Ciを算出する。ここで、部分空間Siのカメラ位置の総数から、部分空間Siにすでに設置されているカメラ(既存カメラ)の数を減算した数をNiとする。
【0037】
【0038】
なお、カメラ数算出部41は、新規カメラ数Ciの総和が総カメラ数Cに満たない場合、残差Δ=C-ΣCiが“0”になるまでカメラ数の再割り当てを行う。
具体的には、新規カメラ数Ciはその値の大小によりソート可能であるため、例えば、降順にソートしたものをCj(j=1,…,N:C1≧C2≧…≧CN)とおく。そして、Cj<Niを満たす場合、カメラ数算出部41は、Cjを“1”加算(Cj→Cj+1)し、Δを“1”減算(Δ→Δ-1)して、CjおよびΔを更新する。カメラ数算出部41は、この更新をΔ=0になるまで繰り返す。なお、すべてのCjにおいて、Cj=NiとなってもΔ>0である場合、最初に設定した総カメラ数Cが多すぎるため、カメラ数算出部41は、例えば、表示装置3にエラーメッセージを表示する。
カメラ数算出部41は、部分空間Si内に設置する新規カメラ数Ciを、配置パターン選択部42に出力する。
【0039】
配置パターン選択部42は、部分空間Siごとのカメラ位置に対して、カメラ数算出部41で算出された新規カメラ数Ci分のカメラを配置するパターンを選択するものである。ここで、前述のNi個のカメラ位置が新たにカメラを設置する位置の候補となる。
なお、カメラの配置パターンは順列を区別する必要がないため、部分空間Si内での配置パターンの組み合わせ数Miは、以下の式(3)で表される。
【0040】
【0041】
配置パターン選択部42は、部分空間S
iごとに、式(3)で算出される組み合わせ数の配置パターンを部分空間S
i内のカメラ位置から選択する。
例えば、
図9に示した部分空間S
1において、新規カメラ数を2個(C
1=2)配置することとした場合、部分空間S
1に含まれる黒丸印で示すカメラ位置の個数(ここでは、5個)から、既存カメラの位置P
1,P
2の個数(ここでは、2個)を減算し、3個のカメラ位置から2個のカメラ位置を選択する3通り(M
1=3)が、配置パターンの組み合わせ数となる。
【0042】
配置パターン選択部42は、部分空間S
iごとに、選択したカメラ位置のM
i個の配置パターンを、その配置パターンを特定する番号m(m=1,…,M
i)とともに、パターン別損失算出部43に出力する。
例えば、
図9に示した部分空間S
1の場合、
図10に示すように、3個のカメラの位置x
1,x
2,x
3から、新規カメラ2個の配置パターン((x
1,x
2),(x
1,x
3),(x
2,x
3))を選択し、それぞれの配置パターンに番号m(1,2,3)を付す。
【0043】
パターン別損失算出部43は、配置パターン選択部42で選択された配置パターンごとに、対象とする新規カメラの位置とそれ以外のカメラ(既存カメラおよび他の新規カメラ)の位置との関係において、新規カメラの位置ごとに求めた予め定めた損失関数の損失を新規カメラの数だけ加算し、配置パターンの損失として算出するものである。
ここで、損失関数は、新規カメラを配置する位置ごとに、カメラ同士の方向ベクトル(注視位置から対象とする新規カメラへの方向ベクトルと、注視位置からそのカメラを除外したカメラ(既存カメラおよび他の新規カメラ)への方向ベクトル)とが直交する関係に近いほど小さくなる値を損失とする関数である。
【0044】
ここで、パターン別損失算出部43が使用する損失関数について説明する。
注視位置(位置ベクトルo)を原点とした座標系で、既存カメラの位置ベクトルp′j=pj-oを要素とする集合をP′、同じく注視位置を原点とした座標系で、新規カメラqk(k=1,…,Ci)の位置ベクトルq′k=qk-oを要素とする集合をQ′とおく。そして、あるkについての差集合を表現する演算子“\(バックスラッシュ)”を用いて、集合R′k=P′∪Q′\q′kを定義する。
集合R′kは、既存カメラと新規カメラの位置ベクトルの和集合から1つの新規カメラの位置ベクトルq′kを除外したものである。
集合R′kの要素をr′ku(u=1,…,Ci+n-1){nは既存カメラの数}とおくと、uは自分以外のすべての相手カメラの番号を表すことになる。
【0045】
そこで、損失関数は、新規カメラqkの位置ベクトルq′kと、集合R′kの要素である位置ベクトルr′kuと、が直交に近く値を小さくすることが望ましい。
2つのベクトルの直交性を求めるには、コサイン類似度を使用し、直交時に最も値が小さくなるようにコサイン類似度の絶対値を計算すればよい。
【0046】
ここで、位置ベクトルq′kのカメラと近い位置ベクトルr′kuのカメラほど、位置ベクトルq′kにおけるカメラと形状が類似するシルエット画像が撮影される。そこで、表面Sfは半球面であるため、半球半径をR、q′kとr′kuとのなす角をθuとしたとき、損失は、コサイン類似度の絶対値を大円距離Rθuで割った値とすればよい。
すなわち、cosθuは以下の式(4)で表されるため、損失関数fは、以下の式(5)を用いればよい。なお、||x||は、ベクトルxのノルムを示す。
【0047】
【0048】
パターン別損失算出部43は、式(5)の損失関数を用いて、新規カメラの位置とそれ以外の他のカメラの位置との間で最大となる損失を、新規カメラの位置ごとに算出し、その総和を求めることで、配置パターンの損失を算出する。
すなわち、パターン別損失算出部43は、配置パターンを特定する番号m(m=1,…,Mi)ごとに、以下の式(6)により、配置パターンmの損失Lmを算出する。
【0049】
【0050】
パターン別損失算出部43は、部分空間Siごとに、配置パターン選択部42で選択されたカメラ位置のMi個の配置パターンと、その配置パターンを特定する番号m(m=1,…,Mi)と、配置パターンmごとに算出した損失Lmとを、損失最小パターン選択部44に出力する。
【0051】
損失最小パターン選択部44は、パターン別損失算出部43で算出された配置パターンごとの損失が最小となる配置パターンを選択するものである。
すなわち、損失最小パターン選択部44は、以下の式(7)に示すように、損失Lmが最小となる配置パターンm(m=1,…,Mi)を選択する。
【0052】
【0053】
損失最小パターン選択部44は、カメラ位置のMi個の配置パターンから、損失Lmが最小となる配置パターンmに対応する配置パターンを選択し、表示装置3に出力する。
これによって、損失最小パターン選択部44は、部分空間Siごとにカメラの配置パターンを選択し、表示装置3に表示することができる。
【0054】
例えば、
図9,
図10に示した部分空間S
1に新規に2台のカメラを割り当てることを考える。すなわち、候補の位置x
1,x
2,x
3から2台のカメラ位置を選択する場合を考える。この場合、パターン別損失算出部43は、配置パターンm(m=1,2,3)ごとに、新規カメラの位置ベクトルq′
k(k=1,2)を要素とする位置ベクトルの集合Q′において、既存カメラと新規カメラの位置ベクトルの和集合から1つの新規カメラの位置ベクトルを除外したr′
ku(k=1,2,u=1,2,3)を要素とする集合R′
k(k=1,2)を生成する。
【0055】
そして、パターン別損失算出部43は、
図11(a)に示すように、kとuとの組み合わせで式(5)の損失関数fにより損失を算出する。なお、
図11(a)に示すように、損失関数fは、kとuとの組み合わせで、それぞれ並列して計算することが可能である。
そして、パターン別損失算出部43は、
図11(b)に示すように、kごとに、損失関数の最大値(max)算出し、配置パターンm=1における損失の総和L
1(sum)を求める。
同様に、パターン別損失算出部43は、
図11(c)に示すように、配置パターンm(m=2,3)においても、損失の総和L
2,L
3を求める。
そして、損失最小パターン選択部44は、
図11(d)に示すように、損失の総和L
1,L
2,L
3の中で損失が最小である配置パターンm(ここでは、m=2)を選択する。
【0056】
以上説明した構成によって、カメラ位置決定装置1は、指定された被写体の重要度に応じて、重要度の高い部位ほど、詳細に3次元再構成を行うことが可能なカメラの位置を決定することができる。
なお、カメラ位置決定装置1は、図示を省略したコンピュータを前記した制御部CLの各部として機能させるためのプログラム(カメラ位置決定プログラム)で動作させることができる。
【0057】
<カメラ位置決定装置の動作>
次に、
図12,
図13を参照(構成については適宜
図1参照)して、本発明の実施形態に係るカメラ位置決定装置1の動作について説明する。なお、ボリュメトリックスタジオ100におけるカメラ(新規カメラ、既存カメラを含む)の配置位置や、既存カメラの方向ベクトルについては、予めカメラ配置情報記憶部10に記憶されているものとする。
【0058】
ステップS1において、頂点重要度設定部21は、記憶装置2に記憶されている被写体データを読み込み、CGの被写体モデルのポリゴンの各頂点に対して重要度を設定する。
ステップS2において、カメラ位置重要度割当部22は、ステップS1で被写体モデルの各頂点に設定された重要度を、頂点位置に接し頂点法線に直交する平面に予め定めた閾値未満で近いカメラ位置に割り当てる。
【0059】
ステップS3において、重要度クラスタリング部23は、ステップS2でカメラ位置に割り当てた重要度によって、カメラ位置をクラスタリングする。これによって、カメラ位置の全体空間Sが、重要度に応じて、複数の部分空間Si(i=1,…,N)に分割されることになる。
ステップS4において、注視位置算出部30は、全体空間Sにすでに3次元再構成を行うために使用したカメラ(既存カメラ)が存在している場合、既存カメラの光軸が最も近接する位置を注視位置として算出する。なお、既存カメラが存在しない場合、注視位置算出部30は、注視位置を予め定めたボリュメトリックスタジオ100の中心位置とする。
【0060】
ステップS5において、部分空間別カメラ位置決定部40は、ステップS3で分割された部分空間Si(i=1,…,N)の変数iを初期化(i=1)し、順次インクリメントすることで、ループR1内の処理を繰り返す。なお、このループR1の処理は、個々の部分空間Si(i=1,…,N)ごとに並列処理を行ってもよい。
ステップS6において、カメラ数算出部41は、全体空間Sのカメラ位置に設定された重要度の総和に対する部分空間Siのカメラ位置に設定された重要度の比率に基づいて、新規に設置する総カメラ数から部分空間Siの新規カメラ数Ciを算出する。
ステップS7において、配置パターン選択部42は、部分空間Siのカメラ位置の総数から、部分空間Siにすでに設置されているカメラ(既存カメラ)の数を減算した数で、部分空間Si内での新規カメラの配置パターンの組み合わせ数Miを算出する。
【0061】
ステップS8において、部分空間別カメラ位置決定部40は、変数mを初期化(m=1)して、mがステップS7で算出された部分空間Si内での新規カメラの配置パターンの組み合わせ数Miを超えないように、順次mをインクリメントし、ループR2内の処理を繰り返す。なお、このループR2の処理は、m(m=1,…,Mi)ごとに並列処理を行ってもよい。
ステップS9において、配置パターン選択部42は、新規カメラの配置パターンの組み合わせ数Miのm番目の配置パターンを選択する。
【0062】
ステップS10において、部分空間別カメラ位置決定部40は、変数kを初期化(k=1)して、kがステップS6で算出された部分空間Siに設置する新規カメラ数Ciを超えないように、順次kをインクリメントし、ループR3内の処理を繰り返す。なお、このループR3の処理は、k(1,…,Ci)ごとに並列処理を行ってもよい。
ステップS11において、パターン別損失算出部43は、部分空間Siのk番目の新規カメラの位置(位置ベクトル)q′kを選択する。
ステップS12において、パターン別損失算出部43は、部分空間Siにおいて、k番目の新規カメラの位置を除いたカメラの位置ベクトルの集合を生成する。この集合の要素数は、Ci+n-1(Ciは部分空間Siの新規カメラ数、nは既存カメラ数)である。
【0063】
ステップS13において、部分空間別カメラ位置決定部40は、変数uを初期化(u=1)して、Ci+n-1を超えないように、順次uをインクリメントし、ループR4内の処理を繰り返す。なお、このループR4の処理は、u(1,…,Ci+n-1)ごとに並列処理を行ってもよい。
ステップS14において、パターン別損失算出部43は、ステップS12で生成された集合から、u番目の要素であるカメラの位置(位置ベクトル)r′kuを選択する。
ステップS15において、パターン別損失算出部43は、ステップS11で選択した位置ベクトルq′kと、ステップS14で選択した位置ベクトルr′kuとから、前記式(5)の損失関数f(q′k,r′ku)により損失を算出する。
ステップS16において、部分空間別カメラ位置決定部40は、変数uをインクリメントし、(Ci+n-1)を超えた段階でループR4を終了し、ステップS17に動作を進める。
【0064】
ステップS17において、パターン別損失算出部43は、ステップS13~S16で算出された損失のうちで最大の損失を選択する。
ステップS18において、部分空間別カメラ位置決定部40は、変数kをインクリメントし、Ciを超えた段階でループR3を終了し、ステップS19に動作を進める。
【0065】
ステップS19において、パターン別損失算出部43は、ステップS17で順次選択されたk個分の最大値の和を算出する。この最大値の和は、m番目の配置パターンにおける損失に相当する。
ステップS20において、部分空間別カメラ位置決定部40は、変数mをインクリメントし、Miを超えた段階でループR2を終了し、ステップS21に動作を進める。
この段階で、配置パターンごとの損失が求められることになる。
【0066】
ステップS21において、損失最小パターン選択部44は、ステップS19で順次算出された損失の最大値の和が最小となったmを選択する。
ステップS22において、損失最小パターン選択部44は、ステップS21で選択したmを番号とするm番目の配置パターンをMi個の配置パターンから選択する。
ステップS23において、部分空間別カメラ位置決定部40は、変数iをインクリメントし、部分空間の数Nを超えた段階でループR1を終了し、ステップS24に動作を進める。
ステップS24において、損失最小パターン選択部44は、ステップS22で順次選択された部分空間ごとのカメラ位置の配置パターンを、表示装置3に表示する。
【0067】
以上の動作によって、カメラ位置決定装置1は、指定された被写体の重要度に応じて、重要度の高い部位ほど、詳細に3次元再構成を行うことが可能なカメラの位置を決定することができる。
また、カメラ位置決定装置1は、ボリュメトリックスタジオ100に、カメラが設置されていない状態であっても、すでに既存のカメラが設置されている状態であっても、被写体の3次元再構成を効率よく行うためのカメラの配置位置を決定することができる。
【0068】
以上、本発明の実施形態に係るカメラ位置決定装置1の構成および動作について説明したが、本発明はこの実施形態に限定されるものではない。
例えば、ここでは、注視位置算出部30を備えたが、既存カメラが存在しない場合や、既存カメラが存在していても、注視位置を予め定めた位置とする場合は、注視位置算出部30を構成から省略しても構わない。
【0069】
また、ここでは、頂点重要度設定部21は、被写体モデルの頂点に重要度に応じた輝度値を設定した。しかし、重要度を識別可能な値であれば輝度値に限定するものではない。例えば、予め重要度の度合いを割り当てた色情報(例えば、彩度)の値を用いてもよい。あるいは、光の波長に応じて色情報に重要度を割り当て、例えば、波長が長い色(赤)に高い重要度を割り当て、波長が短い色(紫)に低い重要度を割り当ててもよい。
【符号の説明】
【0070】
1 カメラ位置決定装置
10 カメラ配置情報記憶部
20 カメラ配置空間クラスタリング部
21 頂点重要度設定部
22 カメラ位置重要度割当部
23 重要度クラスタリング部
30 注視位置算出部
40 部分空間別カメラ位置決定部
41 カメラ数算出部
42 配置パターン選択部
43 パターン別損失算出部
44 損失最小パターン選択部
100 ボリュメトリックスタジオ