以下、図面を参照して本発明の実施の形態を詳細に説明する。
<本発明の実施の形態に係る概要>
本発明の実施の形態に係る手法によれば、被写体の3次元構造やその表面の反射特性を必要とせずに、プロジェクタ・カメラシステムを使って得たLT に基づき、任意照明を与えたときの被写体のリライティングを可能とする。リライティングはLT行列と照明ベクトルの積から実現できるためリアルタイム処理に適しており、映画製作あるいは番組制作などのコンピュータグラフィックス、さらには実環境とのリアルな仮想現実感(virtual reality)や拡張現実感(augmented reality)を生み出すことができる。
<本発明の第1の実施の形態に係る空間映像再現装置の構成>
まず、本発明の第1の実施の形態に係る空間映像再現装置の構成について説明する。図1に示すように、空間映像再現装置100は、カメラ10と、プロジェクタ12と、演算部20と、を含んで構成されている。なお、第1の実施の形態においては、1台のプロジェクタと1台のカメラのプロジェクタ・カメラシステムを用いる。以下では、照明装置をプロジェクタ12、画像観測装置をカメラ10とした実施の形態を説明するが、その他の照明装置と画像観測装置にも適用することができる。
カメラ10は、プロジェクタ12により投影された照明画像を観測し、明るさを示す濃淡画像を取得し、カメラ応答観測部26に出力する。なお、第1の実施の形態においては、プロジェクタ12から出力する単色照明として、例えば、白色照明を用いる。
プロジェクタ12は、単色照明を用いて、照明画像生成部24による出力指示に従って被写体を投影する。
演算部20は、同期制御部22と、照明画像生成部24と、カメラ応答観測部26と、応答成分検出部28と、LT行列推定部30と、リライティング生成部32と、映像DB40とを含んで構成されている。
また、上記の空間映像再現装置100の構成において、プロジェクタ12、カメラ10は必ずしも構成要素として接続している必要はなく、処理に必要なデータを取得すればよく、照明画像生成部24、カメラ応答観測部26、応答成分検出部28、LT行列推定部30、リライティング生成部32、映像DB40からそれぞれの矢印へのデータの流れは、ハードディスク、RAID装置、CD-ROMなどの記録媒体を利用するか、または、ネットワークを介してリモートなデータ資源を利用する形態でもどちらでも構わない。
同期制御部22は、フレーム番号毎に、プロジェクタ12から照明画像を出力させ、出力された照明画像をカメラ10により撮影するように制御する。具体的には、まず、プロジェクタ12から投影される特定の照明画像を表すフレーム番号fをf=1に初期化する。次に、カメラ応答観測部26からの応答信号を待機する。当該応答信号を受信すると、照明画像生成部24と、カメラ応答観測部26とへフレーム番号fを送出する。フレーム番号fを送出することにより、同じフレーム番号においてプロジェクタ12からの照明と、カメラ10の観測との同期をとる。次に、フレーム番号fをf=f+1とカウントアップし、再び、カメラ応答観測部26からの応答信号を待つ。以降、プロジェクタ12からの照明とカメラ10における観測とをフレーム番号fで同期をとりながら、上述の処理と同様にフレーム番号fを照明画像生成部24と、カメラ応答観測部26とへの送出を繰り返す。そして、フレーム番号fの値が、照明画像生成部24において投影する全ての照明画像の数の値Kとなるフレーム番号fを照明画像生成部24とカメラ応答観測部26とに送出した時点で、同期制御部22は、上述の繰り返し処理を停止する。
次に、フレーム番号fをf=1に初期化し、応答成分検出部28からの応答信号を待機し、当該応答信号を受信すると、照明画像生成部24と、応答成分検出部28とへフレーム番号fを送出する。次に、フレーム番号fをf=f+1とカウントアップし、再び、応答成分検出部28からの応答信号を待つ。以降、プロジェクタ12からの照明とカメラ10における観測とをフレーム番号fで同期をとりながら、上述の処理と同様にフレーム番号fを照明画像生成部24と、応答成分検出部28とへの送出を繰り返す。
このように、同期制御部22は、上記の繰り返し処理を、照明画像生成部24において符号化照明パターンを生成する場合と、ベルヌーイバイナリパターンを生成する場合とで2回行う。
照明画像生成部24は、以下に説明するように、フレーム番号毎に予め定められた、レイヤ毎に各ブロックを順に点灯させた符号化照明パターン、及びベルヌーイバイナリパターンを含む、プロジェクタ12から照射するための照明画像を、フレーム番号毎に生成する。なお、ベルヌーイバイナリパターンがランダムに生成される照明パターンの一例である。
照明画像生成部24では、照明パターンの生成において、2種類の照明パターンを生成する。1つは、応答成分検出部で使う符号化照明パターンであり、もう1つは、圧縮センシングに使うベルヌーイバイナリパターンである。以下では、符号化照明パターンを生成した後にベルヌーイバイナリパターンを生成する例を説明するが、その順序が逆になっても以降の処理に変更はない。
まず、照明画像生成部24で符号化照明パターンを生成する場合について説明する。
符号化照明パターンとは、あるルールに従ってプロジェクタ画面の各画素をON/OFFするバイナリパターンである。図2はプロジェクタ画面を8×8画素とした簡単な例である。この例において、レイヤ1ではブロックA、B、C、及びDの画素領域はそれぞれ4×4画素である。レイヤ2では区分けされた領域は2×2画素単位でラベル付けされており、レイヤ3では1画素単位でラベル付けされている。
照明画像生成部24は処理を開始すると、プロジェクタ投影の対象範囲としてN×N(=2n×2n)画素とレイヤ数K=4nを設定する。同期制御部22からフレーム番号fを受信すると、フレーム番号の判定において、値4で割って商を算出する。値4はレイヤがA、B、C、及びDの4つのブロックに分けされていることに起因する数字であり、ブロック種類に応じて変更可能である。図2では、最初にレイヤ1を使う。フレーム番号に応じてその剰余が0のとき、レイヤ1→レイヤ2、あるいはレイヤ2→レイヤ3にレイヤを変更する。レイヤ変更がない場合、すなわち、その剰余が0でなければ、レイヤを変更しない。
次に、画素割当の変更では、ブロックA、B、C、及びDで割り当てた画素をフレーム番号に応じて点灯させる。図2では、フレーム番号fを4で割ったときの余りが0のときはブロックAの画素領域を照明とし、フレーム番号fを4で割ったときの余りが1のときはブロックBの画素領域を照明とし、フレーム番号fを4で割ったときの余りが2のときはブロックCの画素領域を照明とし、フレーム番号fを4で割ったときの余りが3のときはブロックDの画素領域を照明とする。点灯画素による照明では、点灯させる画素が決まった後、その照明パターンの画像をプロジェクタへ出力する。プロジェクタによって、その照明パターンが被写体に投影される。
以上述べたように、時系列順ではf=1,2,3,4のとき、レイヤ1においてそれぞれブロックA、B、C、及びDの画素領域を、f=5,6,7,8のとき、レイヤ2においてそれぞれブロックA、B、C、及びDの画素領域、f=9,10,11,12のとき、レイヤ3においてそれぞれブロックA、B、C、及びDの画素領域をそれぞれ点灯させる。このように、フレーム番号に従って、レイヤのブロックA、B、C、及びDの画素領域の順番に照明として点灯させて被写体を照らす。
一般的には、プロジェクタ画面が2n×2n画素のとき、本処理ではフレーム番号f=1,2,...,4n,(K=4n)に従って、ブロックA、B、C、及びDの照明パターンを使う。N×N(=2n×2n)のプロジェクタ画面において、上左隅をプロジェクタ2次元座標系の原点(0,0)とした場合、任意のプロジェクタ画素piは、
・・・(9)
で与えられるので、その2次元座標(xi,yi)は、2進数表現により
・・・(10)
・・・(11)
と表すことができる。(10)式、(11)式における2進係数am、bm(1≦m≦n)は符号化照明パターンの第mレイヤに相当し、その値は0と1のいずれかをとる。符号化照明パターンでは、レイヤmにおいて、
・・・(12)
・・・(13)
・・・(14)
・・・(15)
の組み合わせに応じて、照明ブロックA、B、C、及びDの割り当てを決定する。各ブロックは2n−m×2n−m画素のサイズとなり、割り当てられたブロックの順番に従ってその画素をON/OFFする。
なお、プロジェクタ画面が2n×2n画素(n整数)で表現できない場合、例えば、800×600画素の場合では、それを包含するできるだけ大きい2n×2n画素において、上記の処理を行う。
この例では、1024×1024画素が包含する最大画素サイズなので、210×210画素として上記の照明パターンを生成する。800×600画素を超える画素領域では無効画素であるため値0を常時セットしておき、210×210画素において、各レイヤのブロックを照明とした符号化照明パターンを生成する。これにより、任意サイズのプロジェクタ画面に対応して、符号化照明パターンを生成する。
同期制御部22からのフレーム番号を受信するたびに、符号化照明パターンを次々と生成し、被写体にその照明画像を照射する。照明画像を生成するたびに、フレーム番号付きで映像DB40に保存する。全ての照明画像を被写体に投影し終わるまで繰り返す。以上の処理によって、K=4n種類の符号化照明パターンの照明画像をフレーム番号に従って順番にプロジェクタ12から投影する。
次に、照明画像生成部24でベルヌーイバイナリパターンを生成する場合について説明する。
符号化照明パターンを生成した後、同期制御部22において、フレーム番号fが1に初期化される。そのフレーム番号を受信してベルヌーイバイナリパターンの生成処理を開始すると、プロジェクタ投影の対象範囲としてN×N(=2n×2n)画素と照明画像の枚数Kを設定する(例えば、K=1000と設定する)。nは整数であり、符号化照明パターンを生成したときの値を使う。説明の便宜上、プロジェクタ画素領域をN×N画素とするが、縦横の画素数は任意に設定できる。同期制御部22からフレーム番号fを受信すると、正規化した乱数により全ての画素にランダムな値を算出し、値が1/2未満のときは黒画素に割り当て、それ以上のときは白画素に割り当てる。これによりランダムな白黒のバイナリパターンの照明画像を生成する。照明画像が生成されると、その画像をプロジェクタ12から出力する。
同期制御部22からのフレーム番号を受信するたびに、時系列に相関性の低いベルヌーイバイナリパターンにより生成した照明画像を次々と生成し、被写体にその照明画像を照射する。照明画像を生成するたびに、フレーム番号付きで映像DB40に保存する。全ての照明画像を被写体に投影し終わるまで繰り返す。以上の処理によって、K種類のベルヌーイバイナリパターンの照明画像をフレーム番号に従って順番にプロジェクタ12から投影する。
カメラ応答観測部26は、以下に説明するように、照明画像生成部24でベルヌーイバイナリパターンから生成された照明画像をカメラ10により撮影した観測画像の各々について、予め定められた閾値よりも大きい輝度値を有する画素をカメラ応答の画素として検出する。
カメラ応答観測部26は、具体的には、まず、観測範囲を設定する。第1の実施の形態においては、カメラ10において観測された画像全体を処理対象とせず、当該設定により指定された範囲のカメラ応答を検出する。第1の実施の形態においては、例えば、画像内でのM×M画素の範囲を指定する(縦横のサイズは任意に設定しても処理内容に変更はない)。次に、カメラ応答を検出するための閾値を設定する。当該閾値は、カメラ応答を検出する範囲の画素の各々について、当該閾値以上の輝度値である画素をカメラ応答として検出する。次に、同期制御部22からフレーム番号fを受信すると、カメラ10が画像を取得することができる状態かのチェックを行い、撮影可能状態ならばカメラ10から観測画像を取得する。次に、映像DB40に記憶されているプロジェクタ12により照明画像を投影していない状態の観測画像である背景画像(プロジェクタ照明を当てていない状態)を取得し、観測画像と背景画像との背景差分を処理する。背景画像とは、照明パターンが照明されていない状態、あるいは黒を投影したときの観測画像である。この背景差分において先の閾値として例えば10階調に設定しておき、この値より大きい画素をカメラの応答画素として検出する。続いて、M×M画素の範囲において検出した画素の2次元座標とそのカメラ応答の輝度値を所定のデータ形式で保存する。通常、画像はrgbの画素値が配列化されたデータであるが、モノクロ濃淡の照明画像に対するカメラ応答のrgb値はほぼ同じ応答であると考えて、本実施の形態ではgの画素値だけを保存する。
図3はベルヌーイバイナリパターンに対するカメラ応答データを保存するデータ形式の例であり、各カメラ画素の座標が書き込まれ、その右側にK種類のベルヌーイバイナリパターンの照明に対して閾値以上のカメラ応答値が書き込まれる。閾値以下のときは値0が書き込まれる。すなわち、横方向は各カメラ画素の時系列のカメラ応答値が並ぶ。カメラ応答データを書き込んだ後、次のカメラ観測に備えて同期制御部22へ応答信号を送信する。照明画像生成部24からK種類のベルヌーイバイナリパターンの照明がプロジェクタ12から出力されるため、カメラ応答観測部26の処理はK種類のカメラ画像からカメラ応答データを保存する。全てのカメラ応答データを保存した時点で終了する。
応答成分検出部28は、以下に説明するように、符号化照明パターンである照明画像をカメラ10により撮影した観測画像の各々について、予め定められた閾値よりも大きい輝度値を有する画素をカメラ応答の画素として検出し、画素の各々について、レイヤ毎に、画素において最大の輝度値となるカメラ応答を特定し、特定されたカメラ応答であるか否かを表す復号ビット列を生成する。
応答成分検出部28では、照明画像生成部24からの符号化照明パターンを使って観測した画像から、各カメラ画素の直接反射成分を発生させるプロジェクタ画素を検出する。符号化照明パターンは、各レイヤにおいてA、B、C、及びDの照明ブロックのうち一つの照明ブロックの画素値がONとなっているので、各観測画像においてその照明に応答したカメラ画素を検出する。
以下に、応答成分検出部28の処理の機能について説明しておく。照明画像生成部24から生成された符号化照明パターンは、各レイヤにおいて4つのブロックの画素を順番に照明として使っているため、応答画素はその照明に対応して検出される。このとき、ブロックAとブロックBの境界付近に位置する画素では、ブロックAとブロックBからの双方の符号化照明パターンに対して応答画素が検出される場合や、4つのブロック境界付近に位置する画素では、複数の符号化照明パターンに対して応答画素が検出される場合がある。そこで、応答成分検出部28では、照明画像生成部24において同じレイヤにおいてブロックを切り替えながら照明パターンを投影したとき、各ブロックからの照明に対して最大の輝度値となる応答画素を特定する。同じカメラ画素が1つ以上の照明パターンに応答した場合は、最大応答を得たとき値1、そうでない場合を値0とすると、各レイヤから4ビットの復号ビット列が得られる。図2の例において、その復号ビット列を説明する。レイヤ3の画素p1の照明に応答したカメラ画素は、p1はレイヤ1ではブロックA、レイヤ2ではブロックCに属するので、3つのレイヤに対する復号ビット列は1000 0010 0100になる。一方、レイヤ3の画素p2の照明に応答したカメラ画素は、p2はレイヤ1ではブロックC、レイヤ2ではブロックDに属するので、3つのレイヤに対する復号ビット列は0010 0001 0010になる。
全てのレイヤにおいて、0/1の復号ビット列を取得できることが望ましいが、実際には、あるレイヤにおいて0/1のバイナリ系列の復号が困難となる。例えば、レイヤを上げるに従って照明ブロックのサイズが細分化されるため、次第に4種類の照明ブロックに対してほぼ同じ応答を検出するようになる。どのレイヤまで許容するかは、プロジェクタ・カメラシステムの空間解像度に依存する。例えば、プロジェクタから2x×2x画素の微小矩形光源を投影したとき、背景画像の雑音に埋もれずにカメラ応答が検出されるときは、第1レイヤから第s(=n−x+1)レイヤまでを復号ビット列生成の対象とする。
応答成分検出部28では、第1レイヤから順番にレイヤ数を上げながら、各カメラ画素の直接反射成分を発生させるプロジェクタ画素を、粗密探索(coarse-to-fine approach)によってある程度の範囲に絞り込む(直接反射を発生させたプロジェクタ画素を決定するのは、LT行列推定部30で行う)。第1レイヤから第sレイヤに関して、0/1の復号ビット列を得たとする。この時点で、第1レイヤから第sレイヤの0/1復号ビット列から、2進係数am、bm(1≦m≦s)が分かる。その2進係数を使って、カメラ画素の直接応答を引き起こしたプロジェクタ画素の座標(xi,yi)は、以下(16)式、(17)式の範囲と決定することができる。
・・・(16)
・・・(17)
上記を踏まえて応答成分検出部28の処理内容を説明する。応答成分検出部28は、処理を開始すると、観測範囲を設定する。応答成分検出部28では、画像全体を処理対象とせず、指定された範囲のカメラ応答を検出する。例えば、画像内でのM×M画素の範囲を指定する(縦横のサイズは任意に設定しても処理内容に変更はない)。次に、閾値を設定する。先に設定した範囲の画素において閾値以上の輝度値(画素値)が得られるとき、カメラ応答として検出する。
同期制御部22からフレーム番号fを受信すると、応答成分検出部28では、カメラが画像を取得できる状態かのチェックを行い、撮影可能状態ならばカメラから観測画像を取得する。次に、事前に保有しておいた背景画像(プロジェクタ照明を当てていない状態)との背景差分を処理する。背景画像とは、照明パターンが照明されていない状態、あるいは黒を投影したときの観測画像である。この背景差分において先の閾値として例えば10階調に設定しておき、この値より大きい画素をカメラの応答画素として検出する。通常、画像はrgbの画素値が配列化されたデータであるが、モノクロ濃淡の照明画像に対するカメラ応答のrgb値はほぼ同じ応答であると考えて、本実施の形態ではgの画素値についてカメラ応答を検出する。
符号化照明パターンでは、各レイヤにおいて4つの照明ブロックの画素を順番に照明として使っているため、各カメラ応答の画素に対して、mレイヤで観測した4枚の観測画像から、各ブロックからの照明に対して最大の輝度値となる応答画素を特定し、A、B、C、及びDのうちどれか1つの照明ブロックと対応付ける。各レイヤについて、応答有り場合を1、そうでない場合を0として復号ビット列を図4のデータ形式に従って保存する。この0/1の復号ビット列は、対象とする全てのカメラ画素について、各レイヤにおいてA、B、C、及びDのいずれかの照明ブロックに応答したかを示すデータである。第1レイヤから第sレイヤまでの0/1復号ビット列から、各画素の直接応答を引き起こしたプロジェクタ画素の座標(xi,yi)が、(16)式、(17)式の座標範囲に設定される。
以上の処理を、対象の全てのカメラ画素に対して、各レイヤから復号化した0/1のビット列を、図4のデータ形式で保存する。
LT行列推定部30は、映像DB40に格納されている、画素毎に被写体からの直接反射成分及びグローバル反射成分を表す反射成分画像に基づいて、カメラ応答の画素の各々について、グローバル反射成分を含むか否かを判定する。判定の結果、カメラ応答の画素の各々について、当該画素がグローバル反射成分を含まない場合、当該画素について生成された復号ビット列から得られる、当該画素のカメラ応答を引き起こした照明画像の画素の範囲に含まれる画素における、符号化照明パターンである照明画像の各々での点灯の有無を表す点灯ベクトルqkと、応答成分検出部28によって当該画素について検出されたカメラ応答vjとに基づいて、画素に関する各要素からなるライト・トランスポートベクトルを推定する。一方、当該画素がグローバル反射成分を含む場合、カメラ応答観測部26によって当該画素について検出されたカメラ応答と、ベルヌーイバイナリパターンから生成された照明画像の各々とに基づいて、当該画素に関する各要素からなるライト・トランスポートベクトルを推定する。これにより、プロジェクタ照明の各画素及びカメラ応答の各画素間の対応関係を表すライト・トランスポート行列を推定する。
ここで、判定の結果、画素がグローバル反射成分を含まない場合、当該画素について生成された復号ビット列から得られる、当該画素のカメラ応答を引き起こした照明画像の画素の範囲に含まれる画素の各々に対する、当該画素における、符号化照明パターンである照明画像の各々での点灯の有無を表す点灯ベクトルqkと、応答成分検出部28によって当該画素について検出されたカメラ応答を表すベクトルvjとの類似度Θjkを算出し、類似度が最大となる点灯ベクトルqkを特定し、特定された点灯ベクトルqkと、応答成分検出部28によって当該画素について検出されたカメラ応答を表すベクトルvjとに基づいて、当該画素に関する各要素からなるライト・トランスポートベクトルを推定する。
LT行列推定部30における具体的な処理内容を説明する前に、直接応答だけを含むカメラ応答の場合のLTの獲得原理について補足する。上記(8)式において、LT行列の第j行のN2次元ベクトルujは、全てのプロジェクタ画素とj番目のカメラ画素間の応答を表現している。その非零成分は、第j番目のカメラ画素の応答に寄与するプロジェクタ画素間のLTを表している。例えば、k番目のプロジェクタ画素からの直接反射光を、第j番目のカメラ画素が応答値ujkとして検出する場合、LTベクトルujは、
・・・(18)
で与えられ、k番目の要素ujkのみを持つ。説明の便宜上、上記(4)式で定義したセンシング行列を、照明画像の各画素に対するK次元ベクトルの各々からなる
を使って、
・・・(19)
と表す。上記(6)式に従うと、LTベクトルujは、そのセンシング行列によりK次元カメラ応答ベクトル
・・・(20)
に圧縮される。(20)式による圧縮変換は、K種類の符号化照明パターンにおける、k番目のプロジェクタ画素の点灯の有無、すなわち、K次元からなる点灯ベクトルqkのバイナリ信号に同期した時系列のカメラ応答を生じる。(20)式において未知数は要素ujkだけである。カメラ応答vjを発生させている、プロジェクタから照射される符号化照明パターンにおけるプロジェクタ画素の点灯ベクトルqkが分かれば、LTベクトルujの要素を
・・・(21)
により得られる。つまり、あるカメラ画素において直接反射が支配的である場合は、上記(7)式を使って圧縮センシングにより最適化を計算する必要はなく、(21)式で与えられる容易な計算で求めることができる。
(21)式で応答値ujkを計算するためには、センシング行列Φの各列の中で時系列のカメラ応答vjと同期した点灯ベクトルqkを瞬時に見つけなければならない。そのような信号検出はベクトル間の相関性を検出することで容易に分かる。ただし、全てのプロジェクタ画素の、各符号化照明パターンにおける点灯の有無(センシング行列Φの全ての列ベクトル)と各カメラ応答ベクトル間の組み合わせにおいて全ての相関を計算することは、LT行列の推定において効率的ではない。相関を計算するための探索範囲の絞込みができれば、時系列カメラ応答に同期する照明ベクトルを迅速に見つけられる。そこで、その探索範囲の絞込みに、応答成分検出部28で得た図4の0/1復号ビット列を利用する。復号ビット列から得た探索範囲にあるプロジェクタ画素の点灯ベクトルをセンシング行列Φの列ベクトルから取り出し、それらとの相関を計算することで、効率的かつ高速に点灯ベクトルqkを検出することができる。
以上を踏まえて、LT行列推定部30の内容を説明する。LT行列推定部30は、圧縮センシング(compressed sensing)を利用して、照明画像生成部24で使ったベルヌーイバイナリパターンの照明画像とカメラ応答観測部26で得たカメラ応答データからLTベクトルを推定し、LT行列を推定するのが主な処理内容であり、直接反射のみの画素に対しては、符号化照明パターンの照明画像を用いた処理によってLTベクトルを推定する処理を行う。
LT行列推定部30は、処理を開始すると、上記(4)式で定義したセンシング行列Φを設定する。センシング行列Φの行方向は時系列のベルヌーイバイナリパターンの照明画像をベクトルに再配置して並べたものである。照明画像生成部24で生成したベルヌーイバイナリパターンの照明画像(N×N画素のK種類のランダムパターンの画像)を時系列に読み出し、それをN2次元の行ベクトルに配列し、上から順番にそのベクトルを並べることにより、K×N2のセンシング行列Φを得る。
圧縮センシングを動作させる前に、上記(7)式におけるパラメータεを設定する。カメラ応答には雑音が付加されているため、例えば、ε=0.01と与える。次に、カメラ応答観測部26において保存された図3のデータ形式において、j番目の行のテーブル値を読み取り、K次元の応答ベクトルvjを用意する(図3の横方向の値はK次元の応答ベクトルvjのベクトル成分に対応する)。
続いて、映像DB40から反射成分画像を読み出す。反射成分画像とは、被写体からの直接反射成分とグローバル反射成分に分離されたカメラ応答の画像である。グローバル反射成分とは、空間構造間の相互反射、屈折・透過等の物理的要因で発生する間接反射を表す。本実施の形態では、非特許文献3で公知となっている方法により、事前に観測した画像から反射成分画像を得ておけばよい。その反射成分画像において、各カメラ画素においてグローバル成分を抽出する(rgb値があるが、ほぼ同程度と考えてg値だけを取り出す)。当該画素においてグローバル成分が所定の閾値(例えば10階調)を越えた場合、直接反射と間接反射に関するLTを獲得するために圧縮センシングを使う。一方、その画素においてグローバル成分が閾値未満の場合、直接反射に関するLTを獲得するために上記で述べた計算方法を使う。
LT行列の構築に備えて、事前にM2×N2の行列バッファTを用意しておく。グローバル成分有無のチェックにおいて、グローバル成分が有ると判定した場合、ROMPアルゴリズムを利用して、上記(7)式を満たすLTベクトルujを復元する。ROMPアルゴリズムによって求められたN2次元のLTベクトルujを、上記(8)式に従い代入する。なお、通常のメモリサイズで用意するのではなく、スパース表現でメモリを確保し、LTベクトルの非零要素のみを代入する。
一方、グローバル成分有無のチェックにおいて、グローバル成分が無いと判定した場合、図4の復号ビット列から、該当するカメラ画素について上記(16)式、(17)式によりプロジェクタ画素の範囲を算出し、相関計算のための探索範囲とする。続いて、探索範囲にあるプロジェクタ画素の点灯ベクトルqkをセンシング行列Φの列から逐次取り出す。取り出した点灯ベクトルqkの各々において、得られた点灯ベクトルqkと応答ベクトルvjとの間で、以下(22)式の正規化相関係数の計算を使って類似度Θjkを算出する。
・・・(22)
探索範囲の全ての点灯ベクトルqkについて、応答ベクトルvjとの正規化相関係数を算出し、符号化照明パターンの中で最大値になる点灯ベクトルqkを探索する。探索により得られた最大値になる点灯ベクトルqkを上記(21)式に代入して、直接反射に関するLTの応答値ujkを得る。さらに、上記(18)式に従ってLTベクトルujを算出して、(8)式に従い代入する。
以上の処理を、図3のデータ形式の上から順番にK次元の応答ベクトルvjを読み出し、反射成分画像から抽出した各カメラ画素の応答において、直接反射だけの成分の場合には(18)式のLTベクトルを(21)式を使って算出し、そうでない場合は圧縮センシングによってLTベクトルを復号化することで、効率的かつ高精度にLT行列を求めることができる。これらのLT行列を映像DB40に格納して、処理を終了する。
リライティング生成部32は、以下に説明するように、LT行列推定部30により得られたLT行列に基づいて、所定の照明画像に対するリライティングを行ったリライティング画像を生成して、出力部50に出力する。
リライティング生成部32では、まず処理を開始すると、所定の照明画像を設定する。動画の場合は1フレームずつ与えることとする。便宜上、照明画像の画素サイズをN×Nとする。照明画像の全ての画素のRGB値からRの画像、Gの画像、Bの画像に分離する。各画像の2次元画素の配置を1列に並べ替えてベクトル化して、Rの照明画像のベクトルPr、Gの照明画像のベクトルPg、Bの照明画像のベクトルPbを生成する。次に、リライティングの計算において、行列演算:Cr=TPr、Cg=TPg、Cb=TPbにより、R照明に該当するベクトルCr、G照明に該当するベクトルCg、B照明に該当するベクトルCbをそれぞれ得る。照明画像をベクトル化したときの逆の処理で各ベクトルから2次元行列へ再配置して、与えた照明に対するリライティング画像を生成する。これをディスプレイ等の画像出力装置に出力すれば与えた照明の下での観測画像を仮想的に得ることができる。動画の場合、次のフレームを所定の照明画像として設定し、上記の処理を繰り返す。本処理は行列とベクトルの線形演算に基づいているため、リアルタイム処理あるいは動画のフレームに適している。
以上述べたように、本実施の形態の空間映像再現装置100は、グローバル成分を有する画素に対して圧縮センシングを使って高品質なLT行列を推定し、そのLT行列を使ってリライティング画像を提供することができる。
<本発明の第1の実施の形態に係る空間映像再現装置の作用>
次に、本発明の第1の実施の形態に係る空間映像再現装置100の作用について説明する。まず、同期制御部22による同期制御処理ルーチンについて説明する。同期制御処理ルーチンの処理は、カメラ応答観測部26及び応答成分検出部28のそれぞれに対して行われる。
図5に示す、ステップS100では、フレーム番号fの値を1に初期化する。
次に、ステップS102では、カメラ応答観測部26又は応答成分検出部28から応答信号を受信したか否かを判定する。応答信号を受信した場合には、ステップS104へ移行し、応答信号を受信しない場合には、ステップS102の処理を繰り返す。
次に、ステップS104では、ステップS100又はステップS108において取得したフレーム番号fを照明画像生成部24、及びカメラ応答観測部26又は応答成分検出部28に送出する。
次に、ステップS106では、フレーム番号fの値がKの値か否かを判定する。フレーム番号fの値がKである場合には、同期制御処理ルーチンを終了し、フレーム番号fの値がKよりも小さい場合には、ステップS108へ移行する。
ステップS108では、フレーム番号fの値に1を加えた値をフレーム番号fの値として設定し、ステップS102へ移行して、ステップS102〜ステップS106の処理を繰り返す。
次に、図6に示す、照明画像生成部24による照明画像生成処理ルーチンについて説明する。以下の照明画像生成処理ルーチンは、符号化照明パターン、及びベルヌーイバイナリパターンのそれぞれについて行う。
まず、ステップS200では、照明画像を投影する照明対象領域をN×N画素と設定する。
次に、ステップS202では、f=1を設定する。
次に、ステップS204では、同期制御部22からフレーム番号fを受信したか否かを判定する。フレーム番号fを受信した場合には、ステップS206へ移行し、フレーム番号fを受信していない場合には、ステップS204の処理を繰り返す。
ステップS206では、符号化照明パターンの場合には、符号化照明パターンにより、レイヤ毎に、生成した照明を照射するための照明画像を設定すると共に、映像DB40に記憶する。ベルヌーイバイナリパターンの場合には、ベルヌーイバイナリパターンにより生成した照明を照射するための照明画像を設定すると共に、映像DB40に記憶する。
ステップS208では、ステップS206で設定した照明画像をプロジェクタ12から出力する。
次に、ステップS210では、ステップS204において取得したフレーム番号fの値がKであるか否かを判定する。フレーム番号fの値がKである場合には、照明画像生成処理ルーチンを終了し、フレーム番号fの値がKより小さい場合には、ステップS212へ移行してf=f+1とし、ステップS204〜ステップS208の処理を繰り返す。
次に、図7に示す、カメラ応答観測部26によるカメラ応答観測処理ルーチンについて説明する。
まず、ステップS300では、カメラ10において観測する範囲をM×M画素の範囲に設定する。
次に、ステップS302では、カメラ応答に対する所定の閾値を設定する。
次に、ステップS304では、映像DB40に記憶されている背景画像を読み込む。
次に、ステップS306では、同期制御部22へ応答信号を送信する。
次に、ステップS308では、同期制御部22からフレーム番号fを受信したか否かを判定する。フレーム番号fを受信した場合には、ステップS310へ移行し、フレーム番号fを受信していない場合には、ステップS308の処理を繰り返す。
次に、ステップS310では、カメラ10の状態をチェックする。
次に、ステップS312では、ステップS310において取得したカメラ10の状態が、撮影可能状態であるか否かを判定する。カメラ10が撮影可能状態である場合には、ステップS314へ移行し、カメラ10が撮影可能状態でない場合には、ステップS310へ移行する。
次に、ステップS314では、カメラ10から観測画像を取得する。
次に、ステップS316では、ステップS304において取得した背景画像と、ステップS314において取得した観測画像との背景差分を取得する。
次に、ステップS318では、ステップS302において取得した閾値と、ステップS316において取得した背景差分とから、カメラ応答の画素の各々を検出する。
次に、ステップS320では、ステップS318において取得したカメラ応答の画素の各々の輝度値を応答データとして、ステップS308において取得したフレーム番号fと対応づけて映像DB40に記憶する。
次に、ステップS322では、ステップS308において取得したフレーム番号fの値がKであるか否かを判定する。フレーム番号fの値がKである場合には、カメラ応答観測処理ルーチンを終了し、フレーム番号fの値がKよりも小さい場合には、ステップS306へ移行し、ステップS306〜ステップS322の処理を繰り返す。
次に、図8及び図9に示す、応答成分検出部28による応答成分検出処理ルーチンについて説明する。
まず、ステップS400では、カメラ10において観測する範囲をM×M画素の範囲に設定する。
次に、ステップS402では、カメラ応答に対する所定の閾値を設定する。
次に、ステップS404では、映像DB40に記憶されている背景画像を読み込む。
次に、ステップS406では、同期制御部22へ応答信号を送信する。
次に、ステップS408では、同期制御部22からフレーム番号fを受信したか否かを判定する。フレーム番号fを受信した場合には、ステップS410へ移行し、フレーム番号fを受信していない場合には、ステップS408の処理を繰り返す。
次に、ステップS410では、カメラ10の状態をチェックする。
次に、ステップS412では、ステップS410において取得したカメラ10の状態が、撮影可能状態であるか否かを判定する。カメラ10が撮影可能状態である場合には、ステップS414へ移行し、カメラ10が撮影可能状態でない場合には、ステップS410へ移行する。
次に、ステップS414では、カメラ10から観測画像を取得する。
次に、ステップS416では、ステップS404において取得した背景画像と、ステップS414において取得した観測画像との背景差分を取得する。
次に、ステップS418では、ステップS402において取得した閾値と、ステップS416において取得した背景差分とから、カメラ応答の画素の各々を検出する。
次に、ステップS420では、ステップS418において取得したカメラ応答の画素の各々の輝度値を応答データとして、ステップS408において取得したフレーム番号fと対応づけて映像DB40に記憶する。
次に、ステップS422では、ステップS408において取得したフレーム番号fの値がKであるか否かを判定する。フレーム番号fの値がKである場合には、ステップS424へ移行し、フレーム番号fの値がKよりも小さい場合には、ステップS406へ移行し、ステップS406〜ステップS422の処理を繰り返す。
次に、ステップS424では、レイヤのカウンタmをm=1と設定する。
次に、ステップS426では、ステップS418でレイヤmについての4枚の観測画像から取得した応答データに基づいて、画素の各々について、レイヤmに対して最大の輝度値となるカメラ応答を特定し、当該レイヤmにおける復号ビット列を生成して、映像DB40に記憶する。
次に、ステップS428では、カウンタmがm=sであるかを判定し、sであれば応答成分検出処理ルーチンを終了し、sでなければステップS430へ移行する。
次に、ステップS430では、カウンタmをm=m+1とカウントアップして、ステップS426へ移行する。
次に、図10に示す、LT行列推定部30によるLT行列推定処理ルーチンについて説明する。
まず、ステップS500では、フレーム番号毎に生成された照明画像に基づいて、上記(4)式に従ってセンシング行列Φを算出する。
次に、ステップS502では、上記(7)式におけるパラメータεを、ε=0.01と設定する。
次に、ステップS504では、カウンタiをi=1に初期化する。
次に、ステップS506では、カウンタiの値に基づいて、カメラ応答のi番目の画素を指定する。
次に、ステップS508では、ステップS506で指定されたカメラ応答のi番目の画素について、映像DB40に格納された各カメラ応答データを読み出して、応答ベクトルvjを生成する。
次に、ステップS510では、映像DB40から反射成分画像を読み出す。
ステップS512では、カメラ応答のi番目の画素に対応する反射成分画像の画素について、グローバル成分を抽出し、当該画素においてグローバル成分が所定の閾値を超えているか否かを判定し、超えている場合には、直接反射と間接反射に関するLTを獲得するためにステップS514へ移行し、閾値未満の場合には、直接反射に関するLTを獲得するためにステップS516へ移行する。
ステップS514では、カメラ応答のi番目の画素について、ステップS500で算出したセンシング行列Φと、ステップS508で生成した応答ベクトルvjとに基づいて、上記(7)式を満たす、LTベクトルujを復元する。
ステップS516では、カメラ応答のi番目の画素について、上記(16)式、(17)式によりプロジェクタ画素の範囲を算出して相関計算のための探索範囲とし、探索範囲にあるプロジェクタ画素の点灯ベクトルqkをセンシング行列Φの列から逐次取り出す。取り出した点灯ベクトルqkの各々において、得られた点灯ベクトルqkと応答ベクトルvjとの間で、上記(22)式の正規化相関係数の計算を使って類似度Θjkを算出し、最大値になる点灯ベクトルqkを探索する。
ステップS518では、ステップS516の探索により得られた最大値になる点灯ベクトルqkとステップS508で生成した応答ベクトルvjとを上記(21)式に代入して、直接反射に関するLTの応答値ujkを得る。さらに、上記(18)式に従ってLTベクトルujを算出する。
ステップS520では、カメラ応答のi番目の画素について、予め用意されたM2×N2の行列バッファTに対し、上記(8)式に従って、ステップS514又はS518で得られたj番目の行にLTベクトルのujを代入し、LT行列を構築し、映像DB40に保存する。
次に、ステップS522では、iがM2であるかを判定し、M2であれば処理を終了し、M2でなければステップS524へ移行する。
次に、ステップS524では、カウンタiをi=i+1とカウントアップして、ステップS506へ移行する。
次に、図11に示す、リライティング生成処理ルーチンについて説明する。
ステップS600では、動画のフレームを選択し、選択したフレームに対応する所定の照明画像を設定する。
ステップS602では、ステップS600で設定した所定の照明画像の全ての画素のRGB値から所定の照明画像のベクトル(Rの照明画像のベクトルPr、Gの照明画像のベクトルPg、Bの照明画像のベクトルPb)を生成する。
ステップS604では、リライティングに必要な行列演算:Cr=TPr、Cg=TPg、Cb=TPbにより、R照明に該当するベクトルCr、G照明に該当するベクトルCg、B照明に該当するベクトルCbをそれぞれ計算する。
ステップS606では、ステップS604で計算したCr、Cg、Cbの各ベクトルから2次元行列へ再配置して、与えた照明に対するリライティング画像を生成する。
ステップS608では、動画の全てのフレームについて処理を終了したかを判定し、全てのフレームについて処理を終了していなければ、ステップS600に戻って動画の次のフレームを選択して処理を繰り返し、全てのフレームについて処理を終了していればリライティング生成処理ルーチンを終了する。
以上説明したように、本発明の第1の実施の形態に係る空間映像再現装置によれば、レイヤ毎に各ブロックを順に点灯させた符号化照明パターン、及びランダムに生成されるベルヌーイバイナリパターンを含む、プロジェクタから照射するための照明画像を、フレーム番号毎に生成し、プロジェクタからベルヌーイバイナリパターンである照明画像を出力させ、予め定められた閾値よりも大きい輝度値を有する画素をカメラ応答の画素として検出し、符号化照明パターンである照明画像をカメラにより撮影した観測画像の各々について、予め定められた閾値よりも大きい輝度値を有する画素をカメラ応答の画素として検出し、画素の各々について、レイヤ毎に、画素において最大の輝度値となるカメラ応答を特定し、特定されたカメラ応答であるか否かを表す復号ビット列を生成し、予め取得された、画素毎に被写体からの直接反射成分及びグローバル反射成分を表す反射成分画像に基づいて、カメラ応答の画素の各々について、グローバル反射成分を含むか否かを判定し、画素がグローバル反射成分を含まない場合、復号ビット列から得られる、画素のカメラ応答を引き起こした照明画像の画素の範囲に含まれる画素における、符号化照明パターンである照明画像の各々での点灯の有無と、応答成分検出部によって画素について検出されたカメラ応答とに基づいて、画素に関する各要素からなるLTベクトルを推定し、画素がグローバル反射成分を含む場合、カメラ応答と、ベルヌーイバイナリパターンである照明画像の各々とに基づいて、画素に関する各要素からなるLTベクトルを推定することにより、プロジェクタ照明の各画素及びカメラ応答の各画素間の対応関係を表すLT行列を推定することにより、効率よく、かつ、精度よく、リライティングを行うためのLT行列を推定できる。
<本発明の第2の実施の形態に係る空間映像再現装置の構成>
次に、本発明の第2の実施の形態に係る空間映像再現装置の構成について説明する。なお、第1の実施の形態と同様となる箇所については同一符号を付して説明を省略する。
第2の実施の形態の基本構成は第1の実施の形態と同様であり、カメラ応答観測部26において、照明画像生成部24から出力されたベルヌーイバイナリパターンについて、カメラ画像においてそのRGB値を計測し、RGBに対応したLT行列を獲得して、リライティング画像を生成する点が異なる。以下、第1の実施の形態と異なる処理内容について、カメラ応答観測部26、LT行列推定部30、及びリライティング生成部32の処理内容について説明する。
上記図1に示すように、第2の実施の形態では、空間映像再現装置100は、第1の実施の形態と同様に、カメラ10と、プロジェクタ12と、演算部20とを含んで構成されている。
カメラ応答観測部26では、観測画像と背景画像との背景差分の処理において、閾値より大きい画素のRGB値をカメラの応答画素として検出する。次に、ベルヌーイバイナリパターンの照明画像に対して、カメラ応答のRGB値が多少異なるため、第2の実施の形態では、Rの画素値、Gの画素値、Bの画素値をそれぞれ図3のデータ形式に従って保存する。照明画像生成部24からK種類のベルヌーイバイナリパターンの照明がプロジェクタから出力されるため、本処理はK種類のカメラ画像からカメラ応答データをRGB成分に分けて保存する。
LT行列推定部30では、圧縮センシングを利用して、照明画像生成部で使ったベルヌーイバイナリパターンの照明画像とカメラ応答観測部26で得たrgbのカメラ応答データからLT行列を推定する。
LT行列推定部30の処理で使うセンシング行列Φは第1の実施の形態と同じであり、センシング行列Φの行方向は時系列のベルヌーイバイナリパターンの照明画像をベクトルに再配置して並べたものである。次に、カメラ応答観測部26において保存された図3のデータ形式のうちのR画素値のデータ形式において、j番目の行のテーブル値を読み取り、K次元の応答ベクトルvjを読み込む。反射成分画像において、各カメラ画素においてグローバルR成分を抽出する。以降、第1の実施の形態と同様に、反射成分画像のグローバルR成分の有無をチェックして、そのグローバルR成分が有ると判定した場合、ROMPアルゴリズムを利用して、上記(7)式を満たすLTベクトルujを復元する。続いて、LT行列Trrの該当する箇所へ代入する。
一方、グローバルR成分の有無をチェックにおいて、グローバルR成分が無いと判定した場合、探索範囲の全ての符号化照明パターンとの正規化相関係数を上記(22)式により算出し、符号化照明パターンの中で最大値になる点灯ベクトルqkを得る。最大値になる点灯ベクトルqkを(21)式に代入して、直接反射に関するLTの応答値ujkを得る。続いて、上記(18)式に従ってLTベクトルujを求め、LT行列Trrの該当する箇所へ代入する。
以上の同様の処理を、他のカラー成分(G成分とB成分)についても繰り返す。グローバルG成分の有無によりLT行列Tggを獲得し、グローバルB成分の有無によりLT行列Tbbを獲得する。
以上により、カメラ10のカラー応答に応じて、3つのLT行列:Trr、Tgg、Tbbを獲得する。
リライティング生成部32では、照明画像の全ての画素のRGB値からRの画像、Gの画像、Bの画像に分離する。各画像の2次元画素の配置を1列に並べ替えてベクトル化して、Rの照明画像のベクトルPr、Gの照明画像のベクトルPg、Bの照明画像のベクトルPbを生成する。次に、リライティングの計算において、行列演算:Cr=TrrPr、Cg=TggPg、Cb=TbbPbにより、R照明に該当するベクトルCr、G照明に該当するベクトルCg、B照明に該当するベクトルCbをそれぞれ得る。照明画像をベクトル化したときの逆の処理で各ベクトルから2次元行列へ再配置して、与えた照明に対するリライティング画像を生成する。これをディスプレイ等の画像出力装置に出力すれば与えた照明の下での観測画像を仮想的に得ることができる。
なお、第2の実施の形態に係る空間映像再現装置の他の構成及び作用については、第1の実施の形態と同様であるため詳細な説明を省略する。
本発明の第2の実施の形態に係る空間映像再現装置によれば、レイヤ毎に各ブロックを順に点灯させた符号化照明パターン、及びランダムに生成されるベルヌーイバイナリパターンを含む、プロジェクタから照射するための照明画像を、フレーム番号毎に生成し、プロジェクタからベルヌーイバイナリパターンである照明画像を出力させ、RGBに対応した、予め定められた閾値よりも大きい輝度値を有する画素をカメラ応答の画素として検出し、符号化照明パターンである照明画像をカメラにより撮影した観測画像の各々について、予め定められた閾値よりも大きい輝度値を有する画素をカメラ応答の画素として検出し、画素の各々について、レイヤ毎に、画素において最大の輝度値となるカメラ応答を特定し、特定されたカメラ応答であるか否かを表す復号ビット列を生成し、予め取得された、画素毎に被写体からの直接反射成分及びグローバル反射成分を表す反射成分画像に基づいて、カメラ応答の画素の各々について、グローバル反射成分を含むか否かを判定し、画素がグローバル反射成分を含まない場合、復号ビット列から得られる、画素のカメラ応答を引き起こした照明画像の画素の範囲に含まれる画素における、符号化照明パターンである照明画像の各々での点灯の有無と、応答成分検出部によって画素について検出されたカメラ応答とに基づいて、画素に関する各要素からなるLTベクトルを推定し、画素がグローバル反射成分を含む場合、カメラ応答と、ベルヌーイバイナリパターンである照明画像の各々とに基づいて、画素に関する各要素からなるLTベクトルを推定することにより、RGBに対応したLT行列を推定することにより、効率よく、かつ、精度よく、リライティングを行うためのLT行列を推定できる。
<本発明の第3の実施の形態に係る空間映像再現装置の構成>
次に、本発明の第3の実施の形態に係る空間映像再現装置の構成について説明する。第3の実施の形態においては、N台のプロジェクタと1台のカメラのマルチプロジェクタ・システムを用いている点が第1の実施の形態と異なる。なお、第1の実施の形態に係る空間映像再現装置100と同様の構成及び作用については、同一の符号を付して説明を省略する。また、プロジェクタが切り替えられた場合、当該切り替え先のプロジェクタについて、第1の実施の形態と同様の処理を行う。
図12に示すように、本発明の第3の実施の形態に係る空間映像再現装置200は、カメラ210と、N台のプロジェクタ212A〜プロジェクタ212Nと、演算部220とを含んで構成されている。
カメラ210は、切替部242において切り替えられたプロジェクタ212A〜プロジェクタ212Nのうちの何れか1つのプロジェクタにより投影された照明画像を観測し、カメラ応答観測部26に出力する。
演算部220は、切替部242と、同期制御部222と、照明画像生成部24と、カメラ応答観測部26と、応答成分検出部28と、LT行列推定部30と、リライティング生成部32と、映像DB40とを含んで構成されている。
切替部242は、同期制御部222の切り替え指示により、処理対象となるプロジェクタをプロジェクタ212A〜プロジェクタ212Nのうちの1つに切り替える。なお、第4の実施の形態においては、1番初めの処理対象のプロジェクタとしてプロジェクタ212Aが選択されているものとする。また、第3の実施の形態においては、切替部242は、スイッチや分岐装置などを利用する。また、第3の実施の形態においては、終了条件である全てのプロジェクタについて処理が終了するまで、同期制御部222の切り替え指示により処理対象となるプロジェクタを切り替える。
同期制御部222は、照明画像生成部24においてベルヌーイバイナリパターンを生成する場合に、フレーム番号毎に、切替部242において切り替えられたプロジェクタ212A〜プロジェクタ212Nのうちの1つのプロジェクタから照明を照射させ、照射された照明をカメラ210により撮影するように制御する。また、同期制御部222は、フレーム番号fの値が、照明画像生成部24において投影する全ての照明画像の数の値Kであるフレーム番号fを照明画像生成部24とカメラ応答観測部26とに送出した時点で繰り返し処理を停止し、切替部242に処理対象となるプロジェクタを切り替える切り替え指示を出力し、切替部242において処理対象となるプロジェクタが切り替えられた後に、フレーム番号fの値を1に初期化し、上記処理を繰り返す。また、照明画像生成部24において符号化照明パターンを生成する場合には、カメラ応答観測部26を応答成分検出部28に置き換えて同様の処理を行う。
なお、他の各処理部の処理は第1の実施の形態と同様であり、照明画像生成部24、カメラ応答観測部26、応答成分検出部28、LT行列推定部30、及びリライティング生成部32の各々の処理をプロジェクタ毎に行うようにすればよい。
第3の実施の形態に係る空間映像再現装置の他の構成及び作用については、第1の実施の形態と同様であるため詳細な説明を省略する。
以上説明したように、本発明の第3の実施の形態に係る空間映像再現装置によれば、プロジェクタ毎に、レイヤ毎に各ブロックを順に点灯させた符号化照明パターン、及びランダムに生成されるベルヌーイバイナリパターンを含む、プロジェクタから照射するための照明画像を、フレーム番号毎に生成し、プロジェクタからベルヌーイバイナリパターンである照明画像を出力させ、予め定められた閾値よりも大きい輝度値を有する画素をカメラ応答の画素として検出し、符号化照明パターンである照明画像をカメラにより撮影した観測画像の各々について、予め定められた閾値よりも大きい輝度値を有する画素をカメラ応答の画素として検出し、画素の各々について、レイヤ毎に、画素において最大の輝度値となるカメラ応答を特定し、特定されたカメラ応答であるか否かを表す復号ビット列を生成し、予め取得された、画素毎に被写体からの直接反射成分及びグローバル反射成分を表す反射成分画像に基づいて、カメラ応答の画素の各々について、グローバル反射成分を含むか否かを判定し、画素がグローバル反射成分を含まない場合、復号ビット列から得られる、画素のカメラ応答を引き起こした照明画像の画素の範囲に含まれる画素における、符号化照明パターンである照明画像の各々での点灯の有無と、応答成分検出部によって画素について検出されたカメラ応答とに基づいて、画素に関する各要素からなるLTベクトルを推定し、画素がグローバル反射成分を含む場合、カメラ応答と、ベルヌーイバイナリパターンである照明画像の各々とに基づいて、画素に関する各要素からなるLTベクトルを推定することにより、プロジェクタ照明の各画素及びカメラ応答の各画素間の対応関係を表すLT行列を推定することにより、効率よく、かつ、精度よく、リライティングを行うためのLT行列を推定できる。
<本発明の第4の実施の形態に係る空間映像再現装置の構成>
次に、本発明の第4の実施の形態に係る空間映像再現装置の構成について説明する。第4の実施の形態においては、カラー応答に応じて処理を行う点が第3の実施の形態と異なる。なお、第2及び第3の実施の形態に係る空間映像再現装置100と同様の構成及び作用については、同一の符号を付して説明を省略する。また、プロジェクタが切り替えられた場合、当該切り替え先のプロジェクタについて、第2の実施の形態と同様の処理を行う。
上記図12に示すように、本発明の第4の実施の形態に係る空間映像再現装置200は、カメラ210と、N台のプロジェクタ212A〜プロジェクタ212Nと、演算部220とを含んで構成されている。
演算部220は、切替部242と、同期制御部222と、照明画像生成部24と、カメラ応答観測部26と、応答成分検出部28と、LT行列推定部30と、リライティング生成部32と、映像DB40とを含んで構成されている。
切替部242、及び同期制御部222の処理は第3の実施の形態と同様である。
他の各処理部の処理は第2の実施の形態と同様であり、カメラ210のカラー応答に応じて、照明画像生成部24、カメラ応答観測部26、応答成分検出部28、LT行列推定部30、及びリライティング生成部32の各々の処理をプロジェクタ毎に行うようにすればよい。
第4の実施の形態に係る空間映像再現装置の他の構成及び作用については、第2の実施の形態と同様であるため詳細な説明を省略する。
本発明の第4の実施の形態に係る空間映像再現装置によれば、プロジェクタ毎に、レイヤ毎に各ブロックを順に点灯させた符号化照明パターン、及びランダムに生成されるベルヌーイバイナリパターンを含む、プロジェクタから照射するための照明画像を、フレーム番号毎に生成し、プロジェクタからベルヌーイバイナリパターンである照明画像を出力させ、RGBに対応した、予め定められた閾値よりも大きい輝度値を有する画素をカメラ応答の画素として検出し、符号化照明パターンである照明画像をカメラにより撮影した観測画像の各々について、予め定められた閾値よりも大きい輝度値を有する画素をカメラ応答の画素として検出し、画素の各々について、レイヤ毎に、画素において最大の輝度値となるカメラ応答を特定し、特定されたカメラ応答であるか否かを表す復号ビット列を生成し、予め取得された、画素毎に被写体からの直接反射成分及びグローバル反射成分を表す反射成分画像に基づいて、カメラ応答の画素の各々について、グローバル反射成分を含むか否かを判定し、画素がグローバル反射成分を含まない場合、復号ビット列から得られる、画素のカメラ応答を引き起こした照明画像の画素の範囲に含まれる画素における、符号化照明パターンである照明画像の各々での点灯の有無と、応答成分検出部によって画素について検出されたカメラ応答とに基づいて、画素に関する各要素からなるLTベクトルを推定し、画素がグローバル反射成分を含む場合、カメラ応答と、ベルヌーイバイナリパターンである照明画像の各々とに基づいて、画素に関する各要素からなるLTベクトルを推定することにより、RGBに対応したLT行列を推定することにより、効率よく、かつ、精度よく、リライティングを行うためのLT行列を推定できる。
また、本発明の第1〜第4の実施の形態によれば、被写体の3次元構造やその表面の反射特性を必要とせずに、プロジェクタ・カメラシステムを使って得たLTに基づき、任意照明を与えたときの被写体のリライティングを可能とする。リライティングはLT行列と照明ベクトルの積から実現できるためリアルタイム処理に適しており、映画製作あるいは番組制作などのコンピュータグラフィックス、さらには実環境とのリアルな仮想現実感(virtual reality)や拡張現実感(augmented reality)を生み出すことができる。
なお、本発明は、上述した実施の形態に限定されるものではなく、この発明の要旨を逸脱しない範囲内で様々な変形や応用が可能である。
また、本願明細書中において、プログラムが予めインストールされている実施形態として説明したが、当該プログラムを、コンピュータ読み取り可能な記録媒体に格納して提供することも可能であるし、ネットワークを介して提供することも可能である。