(57)【要約】【課題】効率よく、かつ、精度よく、リライティングを行うためのＬＴ行列を推定できる。【解決手段】ＬＴ行列推定部３０が、画素毎に被写体からの直接反射成分及びグローバル反射成分を表す反射成分画像に基づいて、カメラ応答の画素の各々について、グローバル反射成分を含むか否かを判定し、画素がグローバル反射成分を含まない場合、復号ビット列から得られる、画素のカメラ応答を引き起こした前記照明画像の画素の範囲に含まれる画素における、符号化照明パターンである照明画像の各々での点灯の有無と、応答成分検出部によって画素について検出されたカメラ応答とに基づいて、画素に関する各要素からなるＬＴベクトルを推定する。【選択図】図１
2018063356.tif 000002
【特許請求の範囲】
【請求項１】
フレーム番号毎に予め定められた、レイヤ毎に各ブロックを順に点灯させた符号化照明パターン、及びランダムに生成される照明パターンを含む、プロジェクタから照射するための照明画像を、フレーム番号毎に生成する照明画像生成部と、
前記フレーム番号毎に、前記プロジェクタから照明画像を出力させ、前記出力された照明画像をカメラにより撮影するように制御する同期制御部と、
前記照明パターンである照明画像を前記カメラにより撮影した観測画像の各々について、予め定められた閾値よりも大きい輝度値を有する画素をカメラ応答の画素として検出するカメラ応答観測部と、
前記符号化照明パターンである照明画像を前記カメラにより撮影した前記観測画像の各々について、予め定められた閾値よりも大きい輝度値を有する画素をカメラ応答の画素として検出し、画素の各々について、レイヤ毎に、前記画素において最大の輝度値となるカメラ応答を特定し、前記特定されたカメラ応答であるか否かを表す復号ビット列を生成する応答成分検出部と、
予め取得された、画素毎に被写体からの直接反射成分及びグローバル反射成分を表す反射成分画像に基づいて、前記カメラ応答の画素の各々について、前記グローバル反射成分を含むか否かを判定し、
前記カメラ応答の画素の各々について、前記画素が前記グローバル反射成分を含まない場合、前記画素について生成された復号ビット列から得られる、前記画素のカメラ応答を引き起こした前記照明画像の画素の範囲に含まれる画素における、前記符号化照明パターンである照明画像の各々での点灯の有無と、前記応答成分検出部によって前記画素について検出された前記カメラ応答とに基づいて、前記画素に関する各要素からなるライト・トランスポートベクトルを推定し、
前記画素が前記グローバル反射成分を含む場合、前記カメラ応答観測部によって前記画素について検出された前記カメラ応答と、前記照明パターンである照明画像の各々とに基づいて、前記画素に関する各要素からなるライト・トランスポートベクトルを推定することにより、プロジェクタ照明の各画素及びカメラ応答の各画素間の対応関係を表すライト・トランスポート行列を推定するＬＴ行列推定部と、
を含む空間映像再現装置。
【請求項２】
前記ＬＴ行列推定部は、前記画素が前記グローバル反射成分を含まない場合、前記画素について生成された復号ビット列から得られる、前記画素のカメラ応答を引き起こした前記照明画像の画素の範囲に含まれる画素の各々に対する、前記画素における、前記符号化照明パターンである照明画像の各々での点灯の有無を表す点灯ベクトルと、前記応答成分検出部によって前記画素について検出された前記カメラ応答を表すベクトルとの類似度を算出し、前記類似度が最大となる前記点灯ベクトルを特定し、前記特定された前記点灯ベクトルと、前記応答成分検出部によって前記画素について検出された前記カメラ応答を表すベクトルとに基づいて、前記画素に関する各要素からなるライト・トランスポートベクトルを推定する請求項１に記載の空間映像再現装置。
【請求項３】
照明画像生成部が、フレーム番号毎に予め定められた、レイヤ毎に各ブロックを順に点灯させた符号化照明パターン、及びランダムに生成される照明パターンを含む、プロジェクタから照射するための照明画像を、フレーム番号毎に生成するステップと、
同期制御部が、前記フレーム番号毎に、前記プロジェクタから照明画像を出力させ、前記出力された照明画像をカメラにより撮影するように制御するステップと、
カメラ応答観測部が、前記照明パターンである照明画像を前記カメラにより撮影した観測画像の各々について、予め定められた閾値よりも大きい輝度値を有する画素をカメラ応答の画素として検出するステップと、
応答成分検出部が、前記符号化照明パターンである照明画像を前記カメラにより撮影した前記観測画像の各々について、予め定められた閾値よりも大きい輝度値を有する画素をカメラ応答の画素として検出し、画素の各々について、レイヤ毎に、前記画素において最大の輝度値となるカメラ応答を特定し、前記特定されたカメラ応答であるか否かを表す復号ビット列を生成するステップと、
ＬＴ行列推定部が、予め取得された、画素毎に被写体からの直接反射成分及びグローバル反射成分を表す反射成分画像に基づいて、前記カメラ応答の画素の各々について、前記グローバル反射成分を含むか否かを判定するステップと、
前記ＬＴ行列推定部が、前記カメラ応答の画素の各々について、前記画素が前記グローバル反射成分を含まない場合、前記画素について生成された復号ビット列から得られる、前記画素のカメラ応答を引き起こした前記照明画像の画素の範囲に含まれる画素における、前記符号化照明パターンである照明画像の各々での点灯の有無と、前記応答成分検出部によって前記画素について検出された前記カメラ応答とに基づいて、前記画素に関する各要素からなるライト・トランスポートベクトルを推定するステップと、
前記ＬＴ行列推定部が、前記画素が前記グローバル反射成分を含む場合、前記カメラ応答観測部によって前記画素について検出された前記カメラ応答と、前記照明パターンである照明画像の各々とに基づいて、前記画素に関する各要素からなるライト・トランスポートベクトルを推定することにより、プロジェクタ照明の各画素及びカメラ応答の各画素間の対応関係を表すライト・トランスポート行列を推定するステップと、
を含む空間映像再現方法。
【請求項４】
前記ＬＴ行列推定部が推定するステップは、前記画素が前記グローバル反射成分を含まない場合、前記画素について生成された復号ビット列から得られる、前記画素のカメラ応答を引き起こした前記照明画像の画素の範囲に含まれる画素の各々に対する、前記画素における、前記符号化照明パターンである照明画像の各々での点灯の有無を表す点灯ベクトルと、前記応答成分検出部によって前記画素について検出された前記カメラ応答を表すベクトルとの類似度を算出し、前記類似度が最大となる前記点灯ベクトルを特定し、前記特定された前記点灯ベクトルと、前記応答成分検出部によって前記画素について検出された前記カメラ応答を表すベクトルとに基づいて、前記画素に関する各要素からなるライト・トランスポートベクトルを推定する請求項３に記載の空間映像再現方法。
【請求項５】
コンピュータを、請求項１又は請求項２に記載の空間映像再現装置の各部として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、空間映像再現装置、方法、及びプログラムに係り、特に、プロジェクション・マッピングに関する行列を生成する空間映像再現装置、方法、及びプログラムに関する。
【背景技術】
【０００２】
プロジェクタは極めてフレキシブルな画像出力デバイスであり、投影仕様の範囲内であれば個人スペース、会議ホール、巨大パブリックビューイング、及びビルの壁面などに合わせて自由サイズの映像表示を提供する。プロジェクタを使って平面スクリーンではない任意の構造物（以下、被写体と称する）へ投影するとき、被写体の形状を事前に計測して、その形状に合わせて所定画像が空間歪みの無いように投影する技術は、プロジェクション・マッピング（projection mapping）として知られている。任意スケールの映像投影のメリットを活かしたプロジェクション・マッピングは、エンターテインメント志向のイベントやイルミネーションによる広告表示などに利用されている。
【０００３】
プロジェクション・マッピングでは、所定画像を正確に投影するために、目視確認と手動操作によって１画素単位での位置合わせを行う場合がある。これに対して、プロジェクタ投影の状態をカメラによって把握し、所定画像を指定された位置に投影するために、プロジェクタ・カメラシステムが利用されている。プロジェクタ・カメラシステムは、プロジェクタとカメラが連動して、カメラからのフィードバック画像に応じて、プロジェクタから投影出力する画像を処理する。例えば、平面なスクリーンにプロジェクション・マッピングする場合には、キャリブレーション作業において平面射影変換（plane-homography）を求める。平面射影変換を使うとプロジェクタ画面上の点から幾何的対応点としてカメラ画面上の点を算出することができるため、その対応関係に基づいて所定画像をスクリーン面の決められた場所に投影することができる。一方、空間構造に凹凸があったり曲がった構造である場合には、その空間構造を事前に把握しなければならない。例えば、レーザ計測を利用して、被写体の空間構造または凹凸形状を得る。その形状に合わせて所定画像を幾何的に変形させて、あたかも平面スクリーンへの投影に見えるよう指定個所に所定画像を投影する。あるいは、構造光（structured light）と呼ばれる幾何パターンをプロジェクタから投影し、カメラで観測した歪み画像から空間構造の奥行きの凹凸形状を計測する方式も利用できる。このように、従来技術は、レーザ計測またはプロジェクタ・カメラシステムを利用して外界または被写体の空間構造を把握し、奥行きの凹凸形状に合わせて指定個所へ所定画像を投影する。
【０００４】
これに対して、外界の空間構造を計測せずに、ライト・トランスポート（light transport）を利用した映像生成方法が非特許文献１、非特許文献２で公開されている。ライト・トランスポートとは、全てのプロジェクタ画素と全てのカメラ画素間の幾何的・光学的対応関係を表現したデータである。最も簡易な手段として、図１３に示すようにプロジェクタ画素の１点１点を順番に点灯させ、被写体からの光学的反射・屈折光などをカメラ画素において検出することにより、ライト・トランスポートを得ることができる。プロジェクタ画面の画素数がｐ×ｑ画素でカメラ画面の画素数がｕ×ｖ画素であるとき、各点光源のカメラ応答の画像Ｃｊを列ベクトル化して並べた行列Ｔはｕｖ×ｐｑ画素の巨大、かつ、スパースな行列としてライト・トランスポート行列（light transport matrix）と呼ばれる。ライト・トランスポート行列はプロジェクタ画素と結び付くカメラ画素のＲＧＢ応答値を保有するため、リライティング（relighting）に応用することができる。
【０００５】
リライティングとは、実際のプロジェクタとカメラの装置を使わずに、任意の照明の下で被写体がどのようにカメラに映るかを模擬的に可視化する技術である。プロジェクション・マッピングのセットアップでは、臨場感の高い映像演出のために実空間における被写体の照明状態をリライティングによって事前に把握することに役立てられる。さらに、スタジオ撮影や番組制作などの実環境では、照明を変化させて被写体の映像をチェックする場合がある。照明は映画あるいは番組制作において重要な演出効果があるため、製作者の意図に応じて様々な照明変化が試される。このとき、逐次、被写体に照明を当てて映り具合をチェックすることは面倒な作業であるため、コンピュータグラフィックスではリライティング技術を使って模擬的に被写体に対する照明効果を確認する。
【０００６】
非特許文献１では、任意の照明画像を１次元の列ベクトルに再配置したデータを生成し、ライト・トランスポート行列と照明ベクトルの積により瞬時にリライティング画像を得る方法が公知となっている。ライト・トランスポートは全てのプロジェクタ画素と全てのカメラ画素間の対応付けることができるため、ライト・トランスポート行列を使えば実環境において照明を当てることなくリアルなリライティングを可能とする。また、実環境においては、できるだけ少ないプロジェクタ照明パターンとそのカメラ応答を使ってライト・トランスポート行列を獲得することが重要である、非特許文献２では、圧縮センシング（compressed sensing）を応用した獲得方法が公知であり、任意の被写体からライト・トランスポート行列を獲得する手段として最適な方式である。以降では、ライト・トランスポートをＬＴ、ライト・トランスポート行列をＬＴ行列と略する。
【先行技術文献】
【非特許文献】
【０００７】
【非特許文献１】P. Sen, B. Chen, G. Garg, S.R. Marschner, M. Horowitz, M. Levoy, and H.P.A. Lensch: "Dual Photography",ACM Transactions on Graphics, vol.23, no.3, pp.745-755, 2005.
【非特許文献２】P. Sen and S. Darabi: "Compressive Dual Photography", Computer Graphics Forum, Vol.28,No.2, pp. 609-618, 2009.
【非特許文献３】S.K.Nayar, G.Krishnan, M.D.Grossberg, and R.Rasker: "Fast Separation of Direct and Global Components of a Scene using High Frequency Illumination", ACM Transactions on Graphics,Vol.25, No.3, pp. 935-944, 2006.
【発明の概要】
【発明が解決しようとする課題】
【０００８】
ＬＴを利用したリライティングは、ＬＴ行列の要素、すなわち、事前に照明パターンを使って計測したＬＴデータの精度に大きく依存する。ＬＴ行列を効率的に獲得する手段として、圧縮センシングを応用した方法が非特許文献２で公開されている。以下に、圧縮センシングの原理と圧縮センシングを応用したＬＴ行列の獲得方法を説明する。
【０００９】
プロジェクタ・カメラシステムを使って未知な被写体へ映像を投影するとき、プロジェクタ照明の画像とそのカメラ観測画像の対象領域をそれぞれＮ×Ｎ画素、Ｍ×Ｍ画素の範囲とする。Ｎ×Ｎ画素のプロジェクタ投影画像をベクトル化したデータをＮ２次元のプロジェクタ照明ベクトルＰと与え、Ｍ×Ｍ画素のカメラ観測画像をベクトル化したデータをＭ２次元のカメラ観測ベクトルをＣとする。一般的に、未校正なプロジェクタ・カメラシステムを使って任意の被写体（その３次元形状と反射特性が不明であるとする）へ映像を投影するとき、プロジェクタ照明とカメラ観測の入出力対応は、Ｍ２×Ｎ２のＬＴ行列Ｔを使うと、以下（１）式で表される。
【００１０】
【数１】
2018063356.tif 000003
・・・（１）
【００１１】
ＬＴ行列Ｔは、カメラ間の幾何的・光学的対応関係として、プロジェクタの画素から放射された光が被写体に反射したときの直接反射及び間接反射を記述する。Ｆは環境照明に対応するカメラ応答であるが、暗室環境でプロジェクタ・カメラシステムを使う場合には、プロジェクタからのブラックオフセット光に反応したカメラ応答が主成分となる。
【００１２】
上記（１）式は任意のプロジェクタ照明とカメラ観測のペアについて成り立ち、Ｋ種類のプロジェクタ照明｛Ｐ１、Ｐ２、・・・、ＰＫ｝を用いて、そのカメラ応答｛Ｃ１、Ｃ２、・・・、ＣＫ｝を観測するとき、以下（２）式を満たす。
【００１３】
【数２】
2018063356.tif 000004
・・・（２）
【００１４】
ただし、Ｋ≪Ｎ２である。非特許文献２では、プロジェクタ照明として、Bernoulli（ベルヌーイ）バイナリパターンが使われている。ベルヌーイバイナリパターンとは、各画素について一様乱数で決定した値が１／２未満あるいはそれ以上のとき、その画素値をＯＦＦ／ＯＮとするバイナリパターンであり、Ｋ種類のランダムな画素値をもつ照明パターンである。
【００１５】
上記（２）式において、事前に黒画像を投影したカメラ応答画像（背景画像）を得て、その背景差分によりベクトルＦが取り除かれているとする。（２）式の転置をとると、以下（３）式を得る。
【００１６】
【数３】
2018063356.tif 000005
・・・（３）
【００１７】
ただし、便宜上、
【００１８】
【数４】
2018063356.tif 000006
・・・（４）
【００１９】
と置換した。上記（３）式の左辺のＫ×Ｍ２の行列の各列をＫ次元ベクトルの各々からなる
【００２０】
【数５】
2018063356.tif 000007
【００２１】
で表し、上記（３）式の右辺の行列ＴＴの各列をＮ２次元ベクトルの各々からなる
【００２２】
【数６】
2018063356.tif 000008
【００２３】
で表すことにより、上記（３）式は、
【００２４】
【数７】
2018063356.tif 000009
・・・（５）
【００２５】
と書き直すことができる。（５）式から、第ｊ列のＫ次元ベクトルｖｊは、
【００２６】
【数８】
2018063356.tif 000010
・・・（６）
【００２７】
となる。以下では、ｖｊを応答ベクトル、ｕｊをLT ベクトルと呼ぶことにする。（６）式は、Ｎ２次元のＬＴベクトルｕｊを入力とし、Ｋ×Ｎ２の行列Φの線形変換によってＫ次元の応答ベクトルｖｊを出力すると解釈することができる。応答ベクトルｖｊはｊ番目のカメラ画素におけるＫ種類のプロジェクタ照明に対する時系列のカメラ応答を表し、未知のＬＴベクトルｕｊをＫ種類のプロジェクタ照明から構成される行列Φに変換されることで得られる。一般的に、ＬＴ行列Ｔはスパースな性質をもつため、その行列を構成するＬＴベクトルｕｊもスパースである。その未知なＬＴベクトルｕｊを求めるために、（６）式に基づいて圧縮センシングを利用する。
【００２８】
圧縮センシングとは、ｌ１ノルム最小化の原理に基づいており、（６）式において、
【００２９】
【数９】
2018063356.tif 000011
・・・（７）
【００３０】
を満たす解ｕｊを求める信号処理手法である。（７）式において、
【００３１】
【数１０】
2018063356.tif 000012
【００３２】
はｌ１ノルムを表し、
【００３３】
【数１１】
2018063356.tif 000013
【００３４】
はｌ２ノルムを表す。圧縮センシングには様々なアルゴリズムが公知であるが、ここでは、実装が容易であり、理論的に収束性の良い、ＲＯＭＰ（Regularized Orthogonal Matching Pursuit）アルゴリズムを利用して解ｕｊを求める。圧縮センシングにより、個々のｕｊ、ｊ＝１、２、・・・、Ｍ２について、Ｍ２セットのＬＴベクトル
【００３５】
【数１２】
2018063356.tif 000014
【００３６】
が得られると、Ｍ２×Ｎ２のＬＴ行列Ｔは、
【００３７】
【数１３】
2018063356.tif 000015
・・・（８）
【００３８】
の配列により求めることができる。
【００３９】
圧縮センシングは、与えられたデータ、すなわち、応答ベクトルｖｊと行列Φを使って（７）式を満たす最適な信号を推定する。ここで、被写体の表面反射の情報は与えられない。しかしながら、３次元被写体の一部の形状と表面によっては、直接反射が支配的な場合が考えられる。推定されるＬＴベクトルｕｊは、ｊ番目のカメラ画素と複数のプロジェクタ画素が結びつくＬＴを表し、直接反射だけでＬＴが得られる場合は、ｕｊは１つの要素が非零で、その他は全て零となる。このような１つだけの要素を推定するためだけに、（７）式に従って最適化計算を実行するのは非効率的であるばかりではなく、推定されるＬＴベクトルｕｊに不要な要素が付加される場合がある。本来、存在しない間接反射を表すような不要なＬＴがＬＴ行列に含まれると、リライティング画像生成に影響を与える。任意照明を使ったリライティングでは、スパースかつ高次元ランクのＬＴ行列を使うことが有利であるが、精密かつリアルな映像表現を実現するためには、上記で述べたようにＬＴ行列の要素を的確に推定する必要がある。
【００４０】
以上から、プロジェクタ・カメラシステムの動作を活用したリライティングにおいて、圧縮センシングあるいはスパースかつ高次元ランクのＬＴ行列を獲得する手段に関して、精密かつリアルな映像表現を実現することを目的にＬＴ行列の要素を正確に推定することが課題となってくる。
【００４１】
本発明は、上記問題点を解決するために成されたものであり、効率よく、かつ、精度よく、リライティングを行うためのＬＴ行列を推定できる空間映像再現装置、方法、及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【００４２】
上記目的を達成するために、第１の発明に係る空間映像再現装置は、フレーム番号毎に予め定められた、レイヤ毎に各ブロックを順に点灯させた符号化照明パターン、及びランダムに生成される照明パターンを含む、プロジェクタから照射するための照明画像を、フレーム番号毎に生成する照明画像生成部と、前記フレーム番号毎に、前記プロジェクタから照明画像を出力させ、前記出力された照明画像をカメラにより撮影するように制御する同期制御部と、前記照明パターンである照明画像を前記カメラにより撮影した観測画像の各々について、予め定められた閾値よりも大きい輝度値を有する画素をカメラ応答の画素として検出するカメラ応答観測部と、前記符号化照明パターンである照明画像を前記カメラにより撮影した前記観測画像の各々について、予め定められた閾値よりも大きい輝度値を有する画素をカメラ応答の画素として検出し、画素の各々について、レイヤ毎に、前記画素において最大の輝度値となるカメラ応答を特定し、前記特定されたカメラ応答であるか否かを表す復号ビット列を生成する応答成分検出部と、予め取得された、画素毎に被写体からの直接反射成分及びグローバル反射成分を表す反射成分画像に基づいて、前記カメラ応答の画素の各々について、前記グローバル反射成分を含むか否かを判定し、前記カメラ応答の画素の各々について、前記画素が前記グローバル反射成分を含まない場合、前記画素について生成された復号ビット列から得られる、前記画素のカメラ応答を引き起こした前記照明画像の画素の範囲に含まれる画素における、前記符号化照明パターンである照明画像の各々での点灯の有無と、前記応答成分検出部によって前記画素について検出された前記カメラ応答とに基づいて、前記画素に関する各要素からなるライト・トランスポートベクトルを推定し、前記画素が前記グローバル反射成分を含む場合、前記カメラ応答観測部によって前記画素について検出された前記カメラ応答と、前記照明パターンである照明画像の各々とに基づいて、前記画素に関する各要素からなるライト・トランスポートベクトルを推定することにより、プロジェクタ照明の各画素及びカメラ応答の各画素間の対応関係を表すライト・トランスポート行列を推定するＬＴ行列推定部と、を含んで構成されている。
【００４３】
また、第１の発明に係る空間映像再現装置において、前記ＬＴ行列推定部は、前記画素が前記グローバル反射成分を含まない場合、前記画素について生成された復号ビット列から得られる、前記画素のカメラ応答を引き起こした前記照明画像の画素の範囲に含まれる画素の各々に対する、前記画素における、前記符号化照明パターンである照明画像の各々での点灯の有無を表す点灯ベクトルと、前記応答成分検出部によって前記画素について検出された前記カメラ応答を表すベクトルとの類似度を算出し、前記類似度が最大となる前記点灯ベクトルを特定し、前記特定された前記点灯ベクトルと、前記応答成分検出部によって前記画素について検出された前記カメラ応答を表すベクトルとに基づいて、前記画素に関する各要素からなるライト・トランスポートベクトルを推定するようにしてもよい。
【００４４】
第２の発明に係る空間映像再現方法は、照明画像生成部が、フレーム番号毎に予め定められた、レイヤ毎に各ブロックを順に点灯させた符号化照明パターン、及びランダムに生成される照明パターンを含む、プロジェクタから照射するための照明画像を、フレーム番号毎に生成するステップと、同期制御部が、前記フレーム番号毎に、前記プロジェクタから照明画像を出力させ、前記出力された照明画像をカメラにより撮影するように制御するステップと、カメラ応答観測部が、前記照明パターンである照明画像を前記カメラにより撮影した観測画像の各々について、予め定められた閾値よりも大きい輝度値を有する画素をカメラ応答の画素として検出するステップと、応答成分検出部が、前記符号化照明パターンである照明画像を前記カメラにより撮影した前記観測画像の各々について、予め定められた閾値よりも大きい輝度値を有する画素をカメラ応答の画素として検出し、画素の各々について、レイヤ毎に、前記画素において最大の輝度値となるカメラ応答を特定し、前記特定されたカメラ応答であるか否かを表す復号ビット列を生成するステップと、ＬＴ行列推定部が、予め取得された、画素毎に被写体からの直接反射成分及びグローバル反射成分を表す反射成分画像に基づいて、前記カメラ応答の画素の各々について、前記グローバル反射成分を含むか否かを判定するステップと、前記ＬＴ行列推定部が、前記カメラ応答の画素の各々について、前記画素が前記グローバル反射成分を含まない場合、前記画素について生成された復号ビット列から得られる、前記画素のカメラ応答を引き起こした前記照明画像の画素の範囲に含まれる画素における、前記符号化照明パターンである照明画像の各々での点灯の有無と、前記応答成分検出部によって前記画素について検出された前記カメラ応答とに基づいて、前記画素に関する各要素からなるライト・トランスポートベクトルを推定するステップと、前記ＬＴ行列推定部が、前記画素が前記グローバル反射成分を含む場合、前記カメラ応答観測部によって前記画素について検出された前記カメラ応答と、前記照明パターンである照明画像の各々とに基づいて、前記画素に関する各要素からなるライト・トランスポートベクトルを推定することにより、プロジェクタ照明の各画素及びカメラ応答の各画素間の対応関係を表すライト・トランスポート行列を推定するステップと、を含んで実行することを特徴とする。
【００４５】
また、第２の発明に係る空間映像再現方法において、前記ＬＴ行列推定部が推定するステップは、前記画素が前記グローバル反射成分を含まない場合、前記画素について生成された復号ビット列から得られる、前記画素のカメラ応答を引き起こした前記照明画像の画素の範囲に含まれる画素の各々に対する、前記画素における、前記符号化照明パターンである照明画像の各々での点灯の有無を表す点灯ベクトルと、前記応答成分検出部によって前記画素について検出された前記カメラ応答を表すベクトルとの類似度を算出し、前記類似度が最大となる前記点灯ベクトルを特定し、前記特定された前記点灯ベクトルと、前記応答成分検出部によって前記画素について検出された前記カメラ応答を表すベクトルとに基づいて、前記画素に関する各要素からなるライト・トランスポートベクトルを推定するようにしてもよい。
【００４６】
また、第３の発明に係るプログラムは、コンピュータを、第１の発明に係る空間映像再現装置の各部として機能させるためのプログラムである。
【発明の効果】
【００４７】
本発明の空間映像再現装置、方法、及びプログラムによれば、レイヤ毎に各ブロックを順に点灯させた符号化照明パターン、及びランダムに生成される照明パターンを含む、プロジェクタから照射するための照明画像を、フレーム番号毎に生成し、プロジェクタから照明パターンである照明画像を出力させ、予め定められた閾値よりも大きい輝度値を有する画素をカメラ応答の画素として検出し、符号化照明パターンである照明画像をカメラにより撮影した観測画像の各々について、予め定められた閾値よりも大きい輝度値を有する画素をカメラ応答の画素として検出し、画素の各々について、レイヤ毎に、画素において最大の輝度値となるカメラ応答を特定し、特定されたカメラ応答であるか否かを表す復号ビット列を生成し、予め取得された、画素毎に被写体からの直接反射成分及びグローバル反射成分を表す反射成分画像に基づいて、カメラ応答の画素の各々について、グローバル反射成分を含むか否かを判定し、画素がグローバル反射成分を含まない場合、復号ビット列から得られる、画素のカメラ応答を引き起こした照明画像の画素の範囲に含まれる画素における、符号化照明パターンである照明画像の各々での点灯の有無と、応答成分検出部によって画素について検出されたカメラ応答とに基づいて、画素に関する各要素からなるライト・トランスポートベクトルを推定し、画素がグローバル反射成分を含む場合、カメラ応答と、照明パターンである照明画像の各々とに基づいて、画素に関する各要素からなるライト・トランスポートベクトルを推定することにより、プロジェクタ照明の各画素及びカメラ応答の各画素間の対応関係を表すライト・トランスポート行列を推定することにより、効率よく、かつ、精度よく、リライティングを行うためのＬＴ行列を推定できる、という効果が得られる。
【図面の簡単な説明】
【００４８】
【図１】本発明の第１及び第２の実施の形態に係る空間映像再現装置の構成を示すブロック図である。
【図２】各レイヤの照明ブロックを示す図である。
【図３】ベルヌーイバイナリパターンのカメラ応答を保存するデータ形式を示す図である。
【図４】符号化照明パターンのカメラ応答を保存するデータ形式を示す図である。
【図５】本発明の実施の形態に係る空間映像再現装置における同期制御処理ルーチンを示すフローチャートである。
【図６】本発明の実施の形態に係る空間映像再現装置における照明画像生成処理ルーチンを示すフローチャートである。
【図７】本発明の実施の形態に係る空間映像再現装置におけるカメラ応答観測処理ルーチンを示すフローチャートである。
【図８】本発明の実施の形態に係る空間映像再現装置における応答成分検出処理ルーチンを示すフローチャートである。
【図９】本発明の実施の形態に係る空間映像再現装置における応答成分検出処理ルーチンを示すフローチャートである。
【図１０】本発明の実施の形態に係る空間映像再現装置におけるＬＴ行列推定処理ルーチンを示すフローチャートである。
【図１１】本発明の実施の形態に係る空間映像再現装置におけるリライティング生成処理ルーチンを示すフローチャートである。
【図１２】本発明の第３及び第４の実施の形態に係る空間映像再現装置の構成を示すブロック図である。
【図１３】未校正なプロジェクタ・カメラシステムを使ったＬＴ行列の測定を示す図である。
【発明を実施するための形態】
【００４９】
以下、図面を参照して本発明の実施の形態を詳細に説明する。
【００５０】
＜本発明の実施の形態に係る概要＞
【００５１】
本発明の実施の形態に係る手法によれば、被写体の３次元構造やその表面の反射特性を必要とせずに、プロジェクタ・カメラシステムを使って得たLT に基づき、任意照明を与えたときの被写体のリライティングを可能とする。リライティングはＬＴ行列と照明ベクトルの積から実現できるためリアルタイム処理に適しており、映画製作あるいは番組制作などのコンピュータグラフィックス、さらには実環境とのリアルな仮想現実感（virtual reality）や拡張現実感（augmented reality）を生み出すことができる。
【００５２】
＜本発明の第１の実施の形態に係る空間映像再現装置の構成＞
【００５３】
まず、本発明の第１の実施の形態に係る空間映像再現装置の構成について説明する。図１に示すように、空間映像再現装置１００は、カメラ１０と、プロジェクタ１２と、演算部２０と、を含んで構成されている。なお、第１の実施の形態においては、１台のプロジェクタと１台のカメラのプロジェクタ・カメラシステムを用いる。以下では、照明装置をプロジェクタ１２、画像観測装置をカメラ１０とした実施の形態を説明するが、その他の照明装置と画像観測装置にも適用することができる。
【００５４】
カメラ１０は、プロジェクタ１２により投影された照明画像を観測し、明るさを示す濃淡画像を取得し、カメラ応答観測部２６に出力する。なお、第１の実施の形態においては、プロジェクタ１２から出力する単色照明として、例えば、白色照明を用いる。
【００５５】
プロジェクタ１２は、単色照明を用いて、照明画像生成部２４による出力指示に従って被写体を投影する。
【００５６】
演算部２０は、同期制御部２２と、照明画像生成部２４と、カメラ応答観測部２６と、応答成分検出部２８と、ＬＴ行列推定部３０と、リライティング生成部３２と、映像ＤＢ４０とを含んで構成されている。
【００５７】
また、上記の空間映像再現装置１００の構成において、プロジェクタ１２、カメラ１０は必ずしも構成要素として接続している必要はなく、処理に必要なデータを取得すればよく、照明画像生成部２４、カメラ応答観測部２６、応答成分検出部２８、ＬＴ行列推定部３０、リライティング生成部３２、映像ＤＢ４０からそれぞれの矢印へのデータの流れは、ハードディスク、RAID装置、CD-ROMなどの記録媒体を利用するか、または、ネットワークを介してリモートなデータ資源を利用する形態でもどちらでも構わない。
【００５８】
同期制御部２２は、フレーム番号毎に、プロジェクタ１２から照明画像を出力させ、出力された照明画像をカメラ１０により撮影するように制御する。具体的には、まず、プロジェクタ１２から投影される特定の照明画像を表すフレーム番号ｆをｆ＝１に初期化する。次に、カメラ応答観測部２６からの応答信号を待機する。当該応答信号を受信すると、照明画像生成部２４と、カメラ応答観測部２６とへフレーム番号ｆを送出する。フレーム番号ｆを送出することにより、同じフレーム番号においてプロジェクタ１２からの照明と、カメラ１０の観測との同期をとる。次に、フレーム番号ｆをｆ＝ｆ＋１とカウントアップし、再び、カメラ応答観測部２６からの応答信号を待つ。以降、プロジェクタ１２からの照明とカメラ１０における観測とをフレーム番号ｆで同期をとりながら、上述の処理と同様にフレーム番号ｆを照明画像生成部２４と、カメラ応答観測部２６とへの送出を繰り返す。そして、フレーム番号ｆの値が、照明画像生成部２４において投影する全ての照明画像の数の値Ｋとなるフレーム番号ｆを照明画像生成部２４とカメラ応答観測部２６とに送出した時点で、同期制御部２２は、上述の繰り返し処理を停止する。
【００５９】
次に、フレーム番号ｆをｆ＝１に初期化し、応答成分検出部２８からの応答信号を待機し、当該応答信号を受信すると、照明画像生成部２４と、応答成分検出部２８とへフレーム番号ｆを送出する。次に、フレーム番号ｆをｆ＝ｆ＋１とカウントアップし、再び、応答成分検出部２８からの応答信号を待つ。以降、プロジェクタ１２からの照明とカメラ１０における観測とをフレーム番号ｆで同期をとりながら、上述の処理と同様にフレーム番号ｆを照明画像生成部２４と、応答成分検出部２８とへの送出を繰り返す。
このように、同期制御部２２は、上記の繰り返し処理を、照明画像生成部２４において符号化照明パターンを生成する場合と、ベルヌーイバイナリパターンを生成する場合とで２回行う。
【００６０】
照明画像生成部２４は、以下に説明するように、フレーム番号毎に予め定められた、レイヤ毎に各ブロックを順に点灯させた符号化照明パターン、及びベルヌーイバイナリパターンを含む、プロジェクタ１２から照射するための照明画像を、フレーム番号毎に生成する。なお、ベルヌーイバイナリパターンがランダムに生成される照明パターンの一例である。
【００６１】
照明画像生成部２４では、照明パターンの生成において、２種類の照明パターンを生成する。１つは、応答成分検出部で使う符号化照明パターンであり、もう１つは、圧縮センシングに使うベルヌーイバイナリパターンである。以下では、符号化照明パターンを生成した後にベルヌーイバイナリパターンを生成する例を説明するが、その順序が逆になっても以降の処理に変更はない。
【００６２】
まず、照明画像生成部２４で符号化照明パターンを生成する場合について説明する。
【００６３】
符号化照明パターンとは、あるルールに従ってプロジェクタ画面の各画素をＯＮ／ＯＦＦするバイナリパターンである。図２はプロジェクタ画面を８×８画素とした簡単な例である。この例において、レイヤ１ではブロックＡ、Ｂ、Ｃ、及びＤの画素領域はそれぞれ４×４画素である。レイヤ２では区分けされた領域は２×２画素単位でラベル付けされており、レイヤ３では１画素単位でラベル付けされている。
【００６４】
照明画像生成部２４は処理を開始すると、プロジェクタ投影の対象範囲としてＮ×Ｎ（＝２ｎ×２ｎ）画素とレイヤ数Ｋ＝４ｎを設定する。同期制御部２２からフレーム番号ｆを受信すると、フレーム番号の判定において、値４で割って商を算出する。値４はレイヤがＡ、Ｂ、Ｃ、及びＤの４つのブロックに分けされていることに起因する数字であり、ブロック種類に応じて変更可能である。図２では、最初にレイヤ１を使う。フレーム番号に応じてその剰余が０のとき、レイヤ１→レイヤ２、あるいはレイヤ２→レイヤ３にレイヤを変更する。レイヤ変更がない場合、すなわち、その剰余が０でなければ、レイヤを変更しない。
【００６５】
次に、画素割当の変更では、ブロックＡ、Ｂ、Ｃ、及びＤで割り当てた画素をフレーム番号に応じて点灯させる。図２では、フレーム番号ｆを４で割ったときの余りが０のときはブロックＡの画素領域を照明とし、フレーム番号ｆを４で割ったときの余りが１のときはブロックＢの画素領域を照明とし、フレーム番号ｆを４で割ったときの余りが２のときはブロックＣの画素領域を照明とし、フレーム番号ｆを４で割ったときの余りが３のときはブロックＤの画素領域を照明とする。点灯画素による照明では、点灯させる画素が決まった後、その照明パターンの画像をプロジェクタへ出力する。プロジェクタによって、その照明パターンが被写体に投影される。
【００６６】
以上述べたように、時系列順ではｆ＝１,２,３,４のとき、レイヤ１においてそれぞれブロックＡ、Ｂ、Ｃ、及びＤの画素領域を、ｆ＝５,６,７,８のとき、レイヤ２においてそれぞれブロックＡ、Ｂ、Ｃ、及びＤの画素領域、ｆ＝９,１０,１１,１２のとき、レイヤ３においてそれぞれブロックＡ、Ｂ、Ｃ、及びＤの画素領域をそれぞれ点灯させる。このように、フレーム番号に従って、レイヤのブロックＡ、Ｂ、Ｃ、及びＤの画素領域の順番に照明として点灯させて被写体を照らす。
【００６７】
一般的には、プロジェクタ画面が２ｎ×２ｎ画素のとき、本処理ではフレーム番号ｆ＝１,２,...,４ｎ,（Ｋ＝４ｎ）に従って、ブロックＡ、Ｂ、Ｃ、及びＤの照明パターンを使う。Ｎ×Ｎ(＝２ｎ×２ｎ)のプロジェクタ画面において、上左隅をプロジェクタ２次元座標系の原点（０,０）とした場合、任意のプロジェクタ画素ｐｉは、
【００６８】
【数１４】
2018063356.tif 000016
・・・（９）
【００６９】
で与えられるので、その２次元座標(ｘｉ,ｙｉ)は、２進数表現により
【００７０】
【数１５】
2018063356.tif 000017
・・・（１０）
2018063356.tif 000018
・・・（１１）
【００７１】
と表すことができる。（１０）式、（１１）式における２進係数ａｍ、ｂｍ（１≦ｍ≦ｎ）は符号化照明パターンの第ｍレイヤに相当し、その値は０と１のいずれかをとる。符号化照明パターンでは、レイヤｍにおいて、
【００７２】
【数１６】
2018063356.tif 000019
・・・（１２）
2018063356.tif 000020
・・・（１３）
2018063356.tif 000021
・・・（１４）
2018063356.tif 000022
・・・（１５）
【００７３】
の組み合わせに応じて、照明ブロックＡ、Ｂ、Ｃ、及びＤの割り当てを決定する。各ブロックは２ｎ−ｍ×２ｎ−ｍ画素のサイズとなり、割り当てられたブロックの順番に従ってその画素をＯＮ／ＯＦＦする。
【００７４】
なお、プロジェクタ画面が２ｎ×２ｎ画素（ｎ整数）で表現できない場合、例えば、800×600画素の場合では、それを包含するできるだけ大きい２ｎ×２ｎ画素において、上記の処理を行う。
【００７５】
この例では、1024×1024画素が包含する最大画素サイズなので、２１０×２１０画素として上記の照明パターンを生成する。800×600画素を超える画素領域では無効画素であるため値０を常時セットしておき、２１０×２１０画素において、各レイヤのブロックを照明とした符号化照明パターンを生成する。これにより、任意サイズのプロジェクタ画面に対応して、符号化照明パターンを生成する。
【００７６】
同期制御部２２からのフレーム番号を受信するたびに、符号化照明パターンを次々と生成し、被写体にその照明画像を照射する。照明画像を生成するたびに、フレーム番号付きで映像ＤＢ４０に保存する。全ての照明画像を被写体に投影し終わるまで繰り返す。以上の処理によって、Ｋ＝４ｎ種類の符号化照明パターンの照明画像をフレーム番号に従って順番にプロジェクタ１２から投影する。
【００７７】
次に、照明画像生成部２４でベルヌーイバイナリパターンを生成する場合について説明する。
【００７８】
符号化照明パターンを生成した後、同期制御部２２において、フレーム番号ｆが１に初期化される。そのフレーム番号を受信してベルヌーイバイナリパターンの生成処理を開始すると、プロジェクタ投影の対象範囲としてＮ×Ｎ（＝２ｎ×２ｎ）画素と照明画像の枚数Ｋを設定する（例えば、Ｋ＝1000と設定する）。ｎは整数であり、符号化照明パターンを生成したときの値を使う。説明の便宜上、プロジェクタ画素領域をＮ×Ｎ画素とするが、縦横の画素数は任意に設定できる。同期制御部２２からフレーム番号ｆを受信すると、正規化した乱数により全ての画素にランダムな値を算出し、値が１／２未満のときは黒画素に割り当て、それ以上のときは白画素に割り当てる。これによりランダムな白黒のバイナリパターンの照明画像を生成する。照明画像が生成されると、その画像をプロジェクタ１２から出力する。
【００７９】
同期制御部２２からのフレーム番号を受信するたびに、時系列に相関性の低いベルヌーイバイナリパターンにより生成した照明画像を次々と生成し、被写体にその照明画像を照射する。照明画像を生成するたびに、フレーム番号付きで映像ＤＢ４０に保存する。全ての照明画像を被写体に投影し終わるまで繰り返す。以上の処理によって、Ｋ種類のベルヌーイバイナリパターンの照明画像をフレーム番号に従って順番にプロジェクタ１２から投影する。
【００８０】
カメラ応答観測部２６は、以下に説明するように、照明画像生成部２４でベルヌーイバイナリパターンから生成された照明画像をカメラ１０により撮影した観測画像の各々について、予め定められた閾値よりも大きい輝度値を有する画素をカメラ応答の画素として検出する。
【００８１】
カメラ応答観測部２６は、具体的には、まず、観測範囲を設定する。第１の実施の形態においては、カメラ１０において観測された画像全体を処理対象とせず、当該設定により指定された範囲のカメラ応答を検出する。第１の実施の形態においては、例えば、画像内でのＭ×Ｍ画素の範囲を指定する（縦横のサイズは任意に設定しても処理内容に変更はない）。次に、カメラ応答を検出するための閾値を設定する。当該閾値は、カメラ応答を検出する範囲の画素の各々について、当該閾値以上の輝度値である画素をカメラ応答として検出する。次に、同期制御部２２からフレーム番号ｆを受信すると、カメラ１０が画像を取得することができる状態かのチェックを行い、撮影可能状態ならばカメラ１０から観測画像を取得する。次に、映像ＤＢ４０に記憶されているプロジェクタ１２により照明画像を投影していない状態の観測画像である背景画像（プロジェクタ照明を当てていない状態）を取得し、観測画像と背景画像との背景差分を処理する。背景画像とは、照明パターンが照明されていない状態、あるいは黒を投影したときの観測画像である。この背景差分において先の閾値として例えば１０階調に設定しておき、この値より大きい画素をカメラの応答画素として検出する。続いて、Ｍ×Ｍ画素の範囲において検出した画素の２次元座標とそのカメラ応答の輝度値を所定のデータ形式で保存する。通常、画像はｒｇｂの画素値が配列化されたデータであるが、モノクロ濃淡の照明画像に対するカメラ応答のｒｇｂ値はほぼ同じ応答であると考えて、本実施の形態ではｇの画素値だけを保存する。
【００８２】
図３はベルヌーイバイナリパターンに対するカメラ応答データを保存するデータ形式の例であり、各カメラ画素の座標が書き込まれ、その右側にＫ種類のベルヌーイバイナリパターンの照明に対して閾値以上のカメラ応答値が書き込まれる。閾値以下のときは値０が書き込まれる。すなわち、横方向は各カメラ画素の時系列のカメラ応答値が並ぶ。カメラ応答データを書き込んだ後、次のカメラ観測に備えて同期制御部２２へ応答信号を送信する。照明画像生成部２４からＫ種類のベルヌーイバイナリパターンの照明がプロジェクタ１２から出力されるため、カメラ応答観測部２６の処理はＫ種類のカメラ画像からカメラ応答データを保存する。全てのカメラ応答データを保存した時点で終了する。
【００８３】
応答成分検出部２８は、以下に説明するように、符号化照明パターンである照明画像をカメラ１０により撮影した観測画像の各々について、予め定められた閾値よりも大きい輝度値を有する画素をカメラ応答の画素として検出し、画素の各々について、レイヤ毎に、画素において最大の輝度値となるカメラ応答を特定し、特定されたカメラ応答であるか否かを表す復号ビット列を生成する。
【００８４】
応答成分検出部２８では、照明画像生成部２４からの符号化照明パターンを使って観測した画像から、各カメラ画素の直接反射成分を発生させるプロジェクタ画素を検出する。符号化照明パターンは、各レイヤにおいてＡ、Ｂ、Ｃ、及びＤの照明ブロックのうち一つの照明ブロックの画素値がＯＮとなっているので、各観測画像においてその照明に応答したカメラ画素を検出する。
【００８５】
以下に、応答成分検出部２８の処理の機能について説明しておく。照明画像生成部２４から生成された符号化照明パターンは、各レイヤにおいて４つのブロックの画素を順番に照明として使っているため、応答画素はその照明に対応して検出される。このとき、ブロックＡとブロックＢの境界付近に位置する画素では、ブロックＡとブロックＢからの双方の符号化照明パターンに対して応答画素が検出される場合や、４つのブロック境界付近に位置する画素では、複数の符号化照明パターンに対して応答画素が検出される場合がある。そこで、応答成分検出部２８では、照明画像生成部２４において同じレイヤにおいてブロックを切り替えながら照明パターンを投影したとき、各ブロックからの照明に対して最大の輝度値となる応答画素を特定する。同じカメラ画素が１つ以上の照明パターンに応答した場合は、最大応答を得たとき値１、そうでない場合を値０とすると、各レイヤから４ビットの復号ビット列が得られる。図２の例において、その復号ビット列を説明する。レイヤ３の画素ｐ１の照明に応答したカメラ画素は、ｐ１はレイヤ１ではブロックＡ、レイヤ２ではブロックＣに属するので、３つのレイヤに対する復号ビット列は1000 0010 0100になる。一方、レイヤ３の画素ｐ２の照明に応答したカメラ画素は、ｐ２はレイヤ１ではブロックＣ、レイヤ２ではブロックＤに属するので、３つのレイヤに対する復号ビット列は0010 0001 0010になる。
【００８６】
全てのレイヤにおいて、０／１の復号ビット列を取得できることが望ましいが、実際には、あるレイヤにおいて０／１のバイナリ系列の復号が困難となる。例えば、レイヤを上げるに従って照明ブロックのサイズが細分化されるため、次第に４種類の照明ブロックに対してほぼ同じ応答を検出するようになる。どのレイヤまで許容するかは、プロジェクタ・カメラシステムの空間解像度に依存する。例えば、プロジェクタから２ｘ×２ｘ画素の微小矩形光源を投影したとき、背景画像の雑音に埋もれずにカメラ応答が検出されるときは、第１レイヤから第ｓ（＝ｎ−ｘ＋１）レイヤまでを復号ビット列生成の対象とする。
【００８７】
応答成分検出部２８では、第１レイヤから順番にレイヤ数を上げながら、各カメラ画素の直接反射成分を発生させるプロジェクタ画素を、粗密探索（coarse-to-fine approach）によってある程度の範囲に絞り込む（直接反射を発生させたプロジェクタ画素を決定するのは、ＬＴ行列推定部３０で行う）。第１レイヤから第ｓレイヤに関して、０／１の復号ビット列を得たとする。この時点で、第１レイヤから第ｓレイヤの０／１復号ビット列から、２進係数ａｍ、ｂｍ(１≦ｍ≦ｓ)が分かる。その２進係数を使って、カメラ画素の直接応答を引き起こしたプロジェクタ画素の座標（ｘｉ,ｙｉ）は、以下（１６）式、（１７）式の範囲と決定することができる。
【００８８】
【数１７】
2018063356.tif 000023
・・・（１６）
2018063356.tif 000024
・・・（１７）
【００８９】
上記を踏まえて応答成分検出部２８の処理内容を説明する。応答成分検出部２８は、処理を開始すると、観測範囲を設定する。応答成分検出部２８では、画像全体を処理対象とせず、指定された範囲のカメラ応答を検出する。例えば、画像内でのＭ×Ｍ画素の範囲を指定する（縦横のサイズは任意に設定しても処理内容に変更はない）。次に、閾値を設定する。先に設定した範囲の画素において閾値以上の輝度値（画素値）が得られるとき、カメラ応答として検出する。
【００９０】
同期制御部２２からフレーム番号ｆを受信すると、応答成分検出部２８では、カメラが画像を取得できる状態かのチェックを行い、撮影可能状態ならばカメラから観測画像を取得する。次に、事前に保有しておいた背景画像（プロジェクタ照明を当てていない状態）との背景差分を処理する。背景画像とは、照明パターンが照明されていない状態、あるいは黒を投影したときの観測画像である。この背景差分において先の閾値として例えば１０階調に設定しておき、この値より大きい画素をカメラの応答画素として検出する。通常、画像はｒｇｂの画素値が配列化されたデータであるが、モノクロ濃淡の照明画像に対するカメラ応答のｒｇｂ値はほぼ同じ応答であると考えて、本実施の形態ではｇの画素値についてカメラ応答を検出する。
【００９１】
符号化照明パターンでは、各レイヤにおいて４つの照明ブロックの画素を順番に照明として使っているため、各カメラ応答の画素に対して、ｍレイヤで観測した４枚の観測画像から、各ブロックからの照明に対して最大の輝度値となる応答画素を特定し、Ａ、Ｂ、Ｃ、及びＤのうちどれか１つの照明ブロックと対応付ける。各レイヤについて、応答有り場合を１、そうでない場合を０として復号ビット列を図４のデータ形式に従って保存する。この０／１の復号ビット列は、対象とする全てのカメラ画素について、各レイヤにおいてＡ、Ｂ、Ｃ、及びＤのいずれかの照明ブロックに応答したかを示すデータである。第１レイヤから第ｓレイヤまでの０／１復号ビット列から、各画素の直接応答を引き起こしたプロジェクタ画素の座標（ｘｉ,ｙｉ）が、（１６）式、（１７）式の座標範囲に設定される。
【００９２】
以上の処理を、対象の全てのカメラ画素に対して、各レイヤから復号化した０／１のビット列を、図４のデータ形式で保存する。
【００９３】
ＬＴ行列推定部３０は、映像ＤＢ４０に格納されている、画素毎に被写体からの直接反射成分及びグローバル反射成分を表す反射成分画像に基づいて、カメラ応答の画素の各々について、グローバル反射成分を含むか否かを判定する。判定の結果、カメラ応答の画素の各々について、当該画素がグローバル反射成分を含まない場合、当該画素について生成された復号ビット列から得られる、当該画素のカメラ応答を引き起こした照明画像の画素の範囲に含まれる画素における、符号化照明パターンである照明画像の各々での点灯の有無を表す点灯ベクトルｑｋと、応答成分検出部２８によって当該画素について検出されたカメラ応答ｖｊとに基づいて、画素に関する各要素からなるライト・トランスポートベクトルを推定する。一方、当該画素がグローバル反射成分を含む場合、カメラ応答観測部２６によって当該画素について検出されたカメラ応答と、ベルヌーイバイナリパターンから生成された照明画像の各々とに基づいて、当該画素に関する各要素からなるライト・トランスポートベクトルを推定する。これにより、プロジェクタ照明の各画素及びカメラ応答の各画素間の対応関係を表すライト・トランスポート行列を推定する。
【００９４】
ここで、判定の結果、画素がグローバル反射成分を含まない場合、当該画素について生成された復号ビット列から得られる、当該画素のカメラ応答を引き起こした照明画像の画素の範囲に含まれる画素の各々に対する、当該画素における、符号化照明パターンである照明画像の各々での点灯の有無を表す点灯ベクトルｑｋと、応答成分検出部２８によって当該画素について検出されたカメラ応答を表すベクトルｖｊとの類似度Θｊｋを算出し、類似度が最大となる点灯ベクトルｑｋを特定し、特定された点灯ベクトルｑｋと、応答成分検出部２８によって当該画素について検出されたカメラ応答を表すベクトルｖｊとに基づいて、当該画素に関する各要素からなるライト・トランスポートベクトルを推定する。
【００９５】
ＬＴ行列推定部３０における具体的な処理内容を説明する前に、直接応答だけを含むカメラ応答の場合のＬＴの獲得原理について補足する。上記（８）式において、ＬＴ行列の第ｊ行のＮ２次元ベクトルｕｊは、全てのプロジェクタ画素とｊ番目のカメラ画素間の応答を表現している。その非零成分は、第ｊ番目のカメラ画素の応答に寄与するプロジェクタ画素間のＬＴを表している。例えば、ｋ番目のプロジェクタ画素からの直接反射光を、第ｊ番目のカメラ画素が応答値ｕｊｋとして検出する場合、ＬＴベクトルｕｊは、
【００９６】
【数１８】
2018063356.tif 000025
・・・（１８）
【００９７】
で与えられ、ｋ番目の要素ｕｊｋのみを持つ。説明の便宜上、上記（４）式で定義したセンシング行列を、照明画像の各画素に対するＫ次元ベクトルの各々からなる
【００９８】
【数１９】
2018063356.tif 000026
【００９９】
を使って、
【０１００】
【数２０】
2018063356.tif 000027
・・・（１９）
【０１０１】
と表す。上記（６）式に従うと、ＬＴベクトルｕｊは、そのセンシング行列によりＫ次元カメラ応答ベクトル
【０１０２】
【数２１】
2018063356.tif 000028
・・・（２０）
【０１０３】
に圧縮される。（２０）式による圧縮変換は、Ｋ種類の符号化照明パターンにおける、ｋ番目のプロジェクタ画素の点灯の有無、すなわち、Ｋ次元からなる点灯ベクトルｑｋのバイナリ信号に同期した時系列のカメラ応答を生じる。（２０）式において未知数は要素ｕｊｋだけである。カメラ応答ｖｊを発生させている、プロジェクタから照射される符号化照明パターンにおけるプロジェクタ画素の点灯ベクトルｑｋが分かれば、ＬＴベクトルｕｊの要素を
【０１０４】
【数２２】
2018063356.tif 000029
・・・（２１）
【０１０５】
により得られる。つまり、あるカメラ画素において直接反射が支配的である場合は、上記（７）式を使って圧縮センシングにより最適化を計算する必要はなく、（２１）式で与えられる容易な計算で求めることができる。
【０１０６】
（２１）式で応答値ｕｊｋを計算するためには、センシング行列Φの各列の中で時系列のカメラ応答ｖｊと同期した点灯ベクトルｑｋを瞬時に見つけなければならない。そのような信号検出はベクトル間の相関性を検出することで容易に分かる。ただし、全てのプロジェクタ画素の、各符号化照明パターンにおける点灯の有無（センシング行列Φの全ての列ベクトル）と各カメラ応答ベクトル間の組み合わせにおいて全ての相関を計算することは、ＬＴ行列の推定において効率的ではない。相関を計算するための探索範囲の絞込みができれば、時系列カメラ応答に同期する照明ベクトルを迅速に見つけられる。そこで、その探索範囲の絞込みに、応答成分検出部２８で得た図４の０／１復号ビット列を利用する。復号ビット列から得た探索範囲にあるプロジェクタ画素の点灯ベクトルをセンシング行列Φの列ベクトルから取り出し、それらとの相関を計算することで、効率的かつ高速に点灯ベクトルｑｋを検出することができる。
【０１０７】
以上を踏まえて、ＬＴ行列推定部３０の内容を説明する。ＬＴ行列推定部３０は、圧縮センシング（compressed sensing）を利用して、照明画像生成部２４で使ったベルヌーイバイナリパターンの照明画像とカメラ応答観測部２６で得たカメラ応答データからＬＴベクトルを推定し、ＬＴ行列を推定するのが主な処理内容であり、直接反射のみの画素に対しては、符号化照明パターンの照明画像を用いた処理によってＬＴベクトルを推定する処理を行う。
【０１０８】
ＬＴ行列推定部３０は、処理を開始すると、上記（４）式で定義したセンシング行列Φを設定する。センシング行列Φの行方向は時系列のベルヌーイバイナリパターンの照明画像をベクトルに再配置して並べたものである。照明画像生成部２４で生成したベルヌーイバイナリパターンの照明画像（Ｎ×Ｎ画素のＫ種類のランダムパターンの画像）を時系列に読み出し、それをＮ２次元の行ベクトルに配列し、上から順番にそのベクトルを並べることにより、Ｋ×Ｎ２のセンシング行列Φを得る。
【０１０９】
圧縮センシングを動作させる前に、上記（７）式におけるパラメータεを設定する。カメラ応答には雑音が付加されているため、例えば、ε＝0.01と与える。次に、カメラ応答観測部２６において保存された図３のデータ形式において、ｊ番目の行のテーブル値を読み取り、Ｋ次元の応答ベクトルｖｊを用意する（図３の横方向の値はＫ次元の応答ベクトルｖｊのベクトル成分に対応する）。
【０１１０】
続いて、映像ＤＢ４０から反射成分画像を読み出す。反射成分画像とは、被写体からの直接反射成分とグローバル反射成分に分離されたカメラ応答の画像である。グローバル反射成分とは、空間構造間の相互反射、屈折・透過等の物理的要因で発生する間接反射を表す。本実施の形態では、非特許文献３で公知となっている方法により、事前に観測した画像から反射成分画像を得ておけばよい。その反射成分画像において、各カメラ画素においてグローバル成分を抽出する（ｒｇｂ値があるが、ほぼ同程度と考えてｇ値だけを取り出す）。当該画素においてグローバル成分が所定の閾値（例えば１０階調）を越えた場合、直接反射と間接反射に関するＬＴを獲得するために圧縮センシングを使う。一方、その画素においてグローバル成分が閾値未満の場合、直接反射に関するＬＴを獲得するために上記で述べた計算方法を使う。
【０１１１】
ＬＴ行列の構築に備えて、事前にＭ２×Ｎ２の行列バッファＴを用意しておく。グローバル成分有無のチェックにおいて、グローバル成分が有ると判定した場合、ＲＯＭＰアルゴリズムを利用して、上記（７）式を満たすＬＴベクトルｕｊを復元する。ＲＯＭＰアルゴリズムによって求められたＮ２次元のＬＴベクトルｕｊを、上記（８）式に従い代入する。なお、通常のメモリサイズで用意するのではなく、スパース表現でメモリを確保し、ＬＴベクトルの非零要素のみを代入する。
【０１１２】
一方、グローバル成分有無のチェックにおいて、グローバル成分が無いと判定した場合、図４の復号ビット列から、該当するカメラ画素について上記（１６）式、（１７）式によりプロジェクタ画素の範囲を算出し、相関計算のための探索範囲とする。続いて、探索範囲にあるプロジェクタ画素の点灯ベクトルｑｋをセンシング行列Φの列から逐次取り出す。取り出した点灯ベクトルｑｋの各々において、得られた点灯ベクトルｑｋと応答ベクトルｖｊとの間で、以下（２２）式の正規化相関係数の計算を使って類似度Θｊｋを算出する。
【０１１３】
【数２３】
2018063356.tif 000030
・・・（２２）
【０１１４】
探索範囲の全ての点灯ベクトルｑｋについて、応答ベクトルｖｊとの正規化相関係数を算出し、符号化照明パターンの中で最大値になる点灯ベクトルｑｋを探索する。探索により得られた最大値になる点灯ベクトルｑｋを上記（２１）式に代入して、直接反射に関するＬＴの応答値ｕｊｋを得る。さらに、上記（１８）式に従ってＬＴベクトルｕｊを算出して、（８）式に従い代入する。
【０１１５】
以上の処理を、図３のデータ形式の上から順番にＫ次元の応答ベクトルｖｊを読み出し、反射成分画像から抽出した各カメラ画素の応答において、直接反射だけの成分の場合には（１８）式のＬＴベクトルを（２１）式を使って算出し、そうでない場合は圧縮センシングによってＬＴベクトルを復号化することで、効率的かつ高精度にＬＴ行列を求めることができる。これらのＬＴ行列を映像ＤＢ４０に格納して、処理を終了する。
【０１１６】
リライティング生成部３２は、以下に説明するように、ＬＴ行列推定部３０により得られたＬＴ行列に基づいて、所定の照明画像に対するリライティングを行ったリライティング画像を生成して、出力部５０に出力する。
【０１１７】
リライティング生成部３２では、まず処理を開始すると、所定の照明画像を設定する。動画の場合は１フレームずつ与えることとする。便宜上、照明画像の画素サイズをＮ×Ｎとする。照明画像の全ての画素のＲＧＢ値からＲの画像、Ｇの画像、Ｂの画像に分離する。各画像の２次元画素の配置を１列に並べ替えてベクトル化して、Ｒの照明画像のベクトルＰｒ、Ｇの照明画像のベクトルＰｇ、Ｂの照明画像のベクトルＰｂを生成する。次に、リライティングの計算において、行列演算：Ｃｒ＝ＴＰｒ、Ｃｇ＝ＴＰｇ、Ｃｂ＝ＴＰｂにより、Ｒ照明に該当するベクトルＣｒ、Ｇ照明に該当するベクトルＣｇ、Ｂ照明に該当するベクトルＣｂをそれぞれ得る。照明画像をベクトル化したときの逆の処理で各ベクトルから２次元行列へ再配置して、与えた照明に対するリライティング画像を生成する。これをディスプレイ等の画像出力装置に出力すれば与えた照明の下での観測画像を仮想的に得ることができる。動画の場合、次のフレームを所定の照明画像として設定し、上記の処理を繰り返す。本処理は行列とベクトルの線形演算に基づいているため、リアルタイム処理あるいは動画のフレームに適している。
【０１１８】
以上述べたように、本実施の形態の空間映像再現装置１００は、グローバル成分を有する画素に対して圧縮センシングを使って高品質なＬＴ行列を推定し、そのＬＴ行列を使ってリライティング画像を提供することができる。
【０１１９】
＜本発明の第１の実施の形態に係る空間映像再現装置の作用＞
【０１２０】
次に、本発明の第１の実施の形態に係る空間映像再現装置１００の作用について説明する。まず、同期制御部２２による同期制御処理ルーチンについて説明する。同期制御処理ルーチンの処理は、カメラ応答観測部２６及び応答成分検出部２８のそれぞれに対して行われる。
【０１２１】
図５に示す、ステップＳ１００では、フレーム番号ｆの値を１に初期化する。
【０１２２】
次に、ステップＳ１０２では、カメラ応答観測部２６又は応答成分検出部２８から応答信号を受信したか否かを判定する。応答信号を受信した場合には、ステップＳ１０４へ移行し、応答信号を受信しない場合には、ステップＳ１０２の処理を繰り返す。
【０１２３】
次に、ステップＳ１０４では、ステップＳ１００又はステップＳ１０８において取得したフレーム番号ｆを照明画像生成部２４、及びカメラ応答観測部２６又は応答成分検出部２８に送出する。
【０１２４】
次に、ステップＳ１０６では、フレーム番号ｆの値がＫの値か否かを判定する。フレーム番号ｆの値がＫである場合には、同期制御処理ルーチンを終了し、フレーム番号ｆの値がＫよりも小さい場合には、ステップＳ１０８へ移行する。
【０１２５】
ステップＳ１０８では、フレーム番号ｆの値に１を加えた値をフレーム番号ｆの値として設定し、ステップＳ１０２へ移行して、ステップＳ１０２〜ステップＳ１０６の処理を繰り返す。
【０１２６】
次に、図６に示す、照明画像生成部２４による照明画像生成処理ルーチンについて説明する。以下の照明画像生成処理ルーチンは、符号化照明パターン、及びベルヌーイバイナリパターンのそれぞれについて行う。
【０１２７】
まず、ステップＳ２００では、照明画像を投影する照明対象領域をＮ×Ｎ画素と設定する。
【０１２８】
次に、ステップＳ２０２では、ｆ＝１を設定する。
【０１２９】
次に、ステップＳ２０４では、同期制御部２２からフレーム番号ｆを受信したか否かを判定する。フレーム番号ｆを受信した場合には、ステップＳ２０６へ移行し、フレーム番号ｆを受信していない場合には、ステップＳ２０４の処理を繰り返す。
【０１３０】
ステップＳ２０６では、符号化照明パターンの場合には、符号化照明パターンにより、レイヤ毎に、生成した照明を照射するための照明画像を設定すると共に、映像ＤＢ４０に記憶する。ベルヌーイバイナリパターンの場合には、ベルヌーイバイナリパターンにより生成した照明を照射するための照明画像を設定すると共に、映像ＤＢ４０に記憶する。
【０１３１】
ステップＳ２０８では、ステップＳ２０６で設定した照明画像をプロジェクタ１２から出力する。
【０１３２】
次に、ステップＳ２１０では、ステップＳ２０４において取得したフレーム番号ｆの値がＫであるか否かを判定する。フレーム番号ｆの値がＫである場合には、照明画像生成処理ルーチンを終了し、フレーム番号ｆの値がＫより小さい場合には、ステップＳ２１２へ移行してｆ＝ｆ＋１とし、ステップＳ２０４〜ステップＳ２０８の処理を繰り返す。
【０１３３】
次に、図７に示す、カメラ応答観測部２６によるカメラ応答観測処理ルーチンについて説明する。
【０１３４】
まず、ステップＳ３００では、カメラ１０において観測する範囲をＭ×Ｍ画素の範囲に設定する。
【０１３５】
次に、ステップＳ３０２では、カメラ応答に対する所定の閾値を設定する。
【０１３６】
次に、ステップＳ３０４では、映像ＤＢ４０に記憶されている背景画像を読み込む。
【０１３７】
次に、ステップＳ３０６では、同期制御部２２へ応答信号を送信する。
【０１３８】
次に、ステップＳ３０８では、同期制御部２２からフレーム番号ｆを受信したか否かを判定する。フレーム番号ｆを受信した場合には、ステップＳ３１０へ移行し、フレーム番号ｆを受信していない場合には、ステップＳ３０８の処理を繰り返す。
【０１３９】
次に、ステップＳ３１０では、カメラ１０の状態をチェックする。
【０１４０】
次に、ステップＳ３１２では、ステップＳ３１０において取得したカメラ１０の状態が、撮影可能状態であるか否かを判定する。カメラ１０が撮影可能状態である場合には、ステップＳ３１４へ移行し、カメラ１０が撮影可能状態でない場合には、ステップＳ３１０へ移行する。
【０１４１】
次に、ステップＳ３１４では、カメラ１０から観測画像を取得する。
【０１４２】
次に、ステップＳ３１６では、ステップＳ３０４において取得した背景画像と、ステップＳ３１４において取得した観測画像との背景差分を取得する。
【０１４３】
次に、ステップＳ３１８では、ステップＳ３０２において取得した閾値と、ステップＳ３１６において取得した背景差分とから、カメラ応答の画素の各々を検出する。
【０１４４】
次に、ステップＳ３２０では、ステップＳ３１８において取得したカメラ応答の画素の各々の輝度値を応答データとして、ステップＳ３０８において取得したフレーム番号ｆと対応づけて映像ＤＢ４０に記憶する。
【０１４５】
次に、ステップＳ３２２では、ステップＳ３０８において取得したフレーム番号ｆの値がＫであるか否かを判定する。フレーム番号ｆの値がＫである場合には、カメラ応答観測処理ルーチンを終了し、フレーム番号ｆの値がＫよりも小さい場合には、ステップＳ３０６へ移行し、ステップＳ３０６〜ステップＳ３２２の処理を繰り返す。
【０１４６】
次に、図８及び図９に示す、応答成分検出部２８による応答成分検出処理ルーチンについて説明する。
【０１４７】
まず、ステップＳ４００では、カメラ１０において観測する範囲をＭ×Ｍ画素の範囲に設定する。
【０１４８】
次に、ステップＳ４０２では、カメラ応答に対する所定の閾値を設定する。
【０１４９】
次に、ステップＳ４０４では、映像ＤＢ４０に記憶されている背景画像を読み込む。
【０１５０】
次に、ステップＳ４０６では、同期制御部２２へ応答信号を送信する。
【０１５１】
次に、ステップＳ４０８では、同期制御部２２からフレーム番号ｆを受信したか否かを判定する。フレーム番号ｆを受信した場合には、ステップＳ４１０へ移行し、フレーム番号ｆを受信していない場合には、ステップＳ４０８の処理を繰り返す。
【０１５２】
次に、ステップＳ４１０では、カメラ１０の状態をチェックする。
【０１５３】
次に、ステップＳ４１２では、ステップＳ４１０において取得したカメラ１０の状態が、撮影可能状態であるか否かを判定する。カメラ１０が撮影可能状態である場合には、ステップＳ４１４へ移行し、カメラ１０が撮影可能状態でない場合には、ステップＳ４１０へ移行する。
【０１５４】
次に、ステップＳ４１４では、カメラ１０から観測画像を取得する。
【０１５５】
次に、ステップＳ４１６では、ステップＳ４０４において取得した背景画像と、ステップＳ４１４において取得した観測画像との背景差分を取得する。
【０１５６】
次に、ステップＳ４１８では、ステップＳ４０２において取得した閾値と、ステップＳ４１６において取得した背景差分とから、カメラ応答の画素の各々を検出する。
【０１５７】
次に、ステップＳ４２０では、ステップＳ４１８において取得したカメラ応答の画素の各々の輝度値を応答データとして、ステップＳ４０８において取得したフレーム番号ｆと対応づけて映像ＤＢ４０に記憶する。
【０１５８】
次に、ステップＳ４２２では、ステップＳ４０８において取得したフレーム番号ｆの値がＫであるか否かを判定する。フレーム番号ｆの値がＫである場合には、ステップＳ４２４へ移行し、フレーム番号ｆの値がＫよりも小さい場合には、ステップＳ４０６へ移行し、ステップＳ４０６〜ステップＳ４２２の処理を繰り返す。
【０１５９】
次に、ステップＳ４２４では、レイヤのカウンタｍをｍ＝１と設定する。
【０１６０】
次に、ステップＳ４２６では、ステップＳ４１８でレイヤｍについての４枚の観測画像から取得した応答データに基づいて、画素の各々について、レイヤｍに対して最大の輝度値となるカメラ応答を特定し、当該レイヤｍにおける復号ビット列を生成して、映像ＤＢ４０に記憶する。
【０１６１】
次に、ステップＳ４２８では、カウンタｍがｍ＝ｓであるかを判定し、ｓであれば応答成分検出処理ルーチンを終了し、ｓでなければステップＳ４３０へ移行する。
【０１６２】
次に、ステップＳ４３０では、カウンタｍをｍ＝ｍ＋１とカウントアップして、ステップＳ４２６へ移行する。
【０１６３】
次に、図１０に示す、ＬＴ行列推定部３０によるＬＴ行列推定処理ルーチンについて説明する。
【０１６４】
まず、ステップＳ５００では、フレーム番号毎に生成された照明画像に基づいて、上記（４）式に従ってセンシング行列Φを算出する。
【０１６５】
次に、ステップＳ５０２では、上記（７）式におけるパラメータεを、ε＝０．０１と設定する。
【０１６６】
次に、ステップＳ５０４では、カウンタｉをｉ＝１に初期化する。
【０１６７】
次に、ステップＳ５０６では、カウンタｉの値に基づいて、カメラ応答のｉ番目の画素を指定する。
【０１６８】
次に、ステップＳ５０８では、ステップＳ５０６で指定されたカメラ応答のｉ番目の画素について、映像ＤＢ４０に格納された各カメラ応答データを読み出して、応答ベクトルｖｊを生成する。
【０１６９】
次に、ステップＳ５１０では、映像ＤＢ４０から反射成分画像を読み出す。
【０１７０】
ステップＳ５１２では、カメラ応答のｉ番目の画素に対応する反射成分画像の画素について、グローバル成分を抽出し、当該画素においてグローバル成分が所定の閾値を超えているか否かを判定し、超えている場合には、直接反射と間接反射に関するＬＴを獲得するためにステップＳ５１４へ移行し、閾値未満の場合には、直接反射に関するＬＴを獲得するためにステップＳ５１６へ移行する。
【０１７１】
ステップＳ５１４では、カメラ応答のｉ番目の画素について、ステップＳ５００で算出したセンシング行列Φと、ステップＳ５０８で生成した応答ベクトルｖｊとに基づいて、上記（７）式を満たす、ＬＴベクトルｕｊを復元する。
【０１７２】
ステップＳ５１６では、カメラ応答のｉ番目の画素について、上記（１６）式、（１７）式によりプロジェクタ画素の範囲を算出して相関計算のための探索範囲とし、探索範囲にあるプロジェクタ画素の点灯ベクトルｑｋをセンシング行列Φの列から逐次取り出す。取り出した点灯ベクトルｑｋの各々において、得られた点灯ベクトルｑｋと応答ベクトルｖｊとの間で、上記（２２）式の正規化相関係数の計算を使って類似度Θｊｋを算出し、最大値になる点灯ベクトルｑｋを探索する。
【０１７３】
ステップＳ５１８では、ステップＳ５１６の探索により得られた最大値になる点灯ベクトルｑｋとステップＳ５０８で生成した応答ベクトルｖｊとを上記（２１）式に代入して、直接反射に関するＬＴの応答値ｕｊｋを得る。さらに、上記（１８）式に従ってＬＴベクトルｕｊを算出する。
【０１７４】
ステップＳ５２０では、カメラ応答のｉ番目の画素について、予め用意されたＭ２×Ｎ２の行列バッファＴに対し、上記（８）式に従って、ステップＳ５１４又はＳ５１８で得られたｊ番目の行にＬＴベクトルのｕｊを代入し、ＬＴ行列を構築し、映像ＤＢ４０に保存する。
【０１７５】
次に、ステップＳ５２２では、ｉがＭ２であるかを判定し、Ｍ２であれば処理を終了し、Ｍ２でなければステップＳ５２４へ移行する。
【０１７６】
次に、ステップＳ５２４では、カウンタｉをｉ＝ｉ＋１とカウントアップして、ステップＳ５０６へ移行する。
【０１７７】
次に、図１１に示す、リライティング生成処理ルーチンについて説明する。
【０１７８】
ステップＳ６００では、動画のフレームを選択し、選択したフレームに対応する所定の照明画像を設定する。
【０１７９】
ステップＳ６０２では、ステップＳ６００で設定した所定の照明画像の全ての画素のＲＧＢ値から所定の照明画像のベクトル（Ｒの照明画像のベクトルＰｒ、Ｇの照明画像のベクトルＰｇ、Ｂの照明画像のベクトルＰｂ）を生成する。
【０１８０】
ステップＳ６０４では、リライティングに必要な行列演算：Ｃｒ＝ＴＰｒ、Ｃｇ＝ＴＰｇ、Ｃｂ＝ＴＰｂにより、Ｒ照明に該当するベクトルＣｒ、Ｇ照明に該当するベクトルＣｇ、Ｂ照明に該当するベクトルＣｂをそれぞれ計算する。
【０１８１】
ステップＳ６０６では、ステップＳ６０４で計算したＣｒ、Ｃｇ、Ｃｂの各ベクトルから２次元行列へ再配置して、与えた照明に対するリライティング画像を生成する。
【０１８２】
ステップＳ６０８では、動画の全てのフレームについて処理を終了したかを判定し、全てのフレームについて処理を終了していなければ、ステップＳ６００に戻って動画の次のフレームを選択して処理を繰り返し、全てのフレームについて処理を終了していればリライティング生成処理ルーチンを終了する。
【０１８３】
以上説明したように、本発明の第１の実施の形態に係る空間映像再現装置によれば、レイヤ毎に各ブロックを順に点灯させた符号化照明パターン、及びランダムに生成されるベルヌーイバイナリパターンを含む、プロジェクタから照射するための照明画像を、フレーム番号毎に生成し、プロジェクタからベルヌーイバイナリパターンである照明画像を出力させ、予め定められた閾値よりも大きい輝度値を有する画素をカメラ応答の画素として検出し、符号化照明パターンである照明画像をカメラにより撮影した観測画像の各々について、予め定められた閾値よりも大きい輝度値を有する画素をカメラ応答の画素として検出し、画素の各々について、レイヤ毎に、画素において最大の輝度値となるカメラ応答を特定し、特定されたカメラ応答であるか否かを表す復号ビット列を生成し、予め取得された、画素毎に被写体からの直接反射成分及びグローバル反射成分を表す反射成分画像に基づいて、カメラ応答の画素の各々について、グローバル反射成分を含むか否かを判定し、画素がグローバル反射成分を含まない場合、復号ビット列から得られる、画素のカメラ応答を引き起こした照明画像の画素の範囲に含まれる画素における、符号化照明パターンである照明画像の各々での点灯の有無と、応答成分検出部によって画素について検出されたカメラ応答とに基づいて、画素に関する各要素からなるＬＴベクトルを推定し、画素がグローバル反射成分を含む場合、カメラ応答と、ベルヌーイバイナリパターンである照明画像の各々とに基づいて、画素に関する各要素からなるＬＴベクトルを推定することにより、プロジェクタ照明の各画素及びカメラ応答の各画素間の対応関係を表すＬＴ行列を推定することにより、効率よく、かつ、精度よく、リライティングを行うためのＬＴ行列を推定できる。
【０１８４】
＜本発明の第２の実施の形態に係る空間映像再現装置の構成＞
【０１８５】
次に、本発明の第２の実施の形態に係る空間映像再現装置の構成について説明する。なお、第１の実施の形態と同様となる箇所については同一符号を付して説明を省略する。
【０１８６】
第２の実施の形態の基本構成は第１の実施の形態と同様であり、カメラ応答観測部２６において、照明画像生成部２４から出力されたベルヌーイバイナリパターンについて、カメラ画像においてそのＲＧＢ値を計測し、ＲＧＢに対応したＬＴ行列を獲得して、リライティング画像を生成する点が異なる。以下、第１の実施の形態と異なる処理内容について、カメラ応答観測部２６、ＬＴ行列推定部３０、及びリライティング生成部３２の処理内容について説明する。
【０１８７】
上記図１に示すように、第２の実施の形態では、空間映像再現装置１００は、第１の実施の形態と同様に、カメラ１０と、プロジェクタ１２と、演算部２０とを含んで構成されている。
【０１８８】
カメラ応答観測部２６では、観測画像と背景画像との背景差分の処理において、閾値より大きい画素のＲＧＢ値をカメラの応答画素として検出する。次に、ベルヌーイバイナリパターンの照明画像に対して、カメラ応答のＲＧＢ値が多少異なるため、第２の実施の形態では、Ｒの画素値、Ｇの画素値、Ｂの画素値をそれぞれ図３のデータ形式に従って保存する。照明画像生成部２４からＫ種類のベルヌーイバイナリパターンの照明がプロジェクタから出力されるため、本処理はＫ種類のカメラ画像からカメラ応答データをＲＧＢ成分に分けて保存する。
【０１８９】
ＬＴ行列推定部３０では、圧縮センシングを利用して、照明画像生成部で使ったベルヌーイバイナリパターンの照明画像とカメラ応答観測部２６で得たｒｇｂのカメラ応答データからＬＴ行列を推定する。
【０１９０】
ＬＴ行列推定部３０の処理で使うセンシング行列Φは第１の実施の形態と同じであり、センシング行列Φの行方向は時系列のベルヌーイバイナリパターンの照明画像をベクトルに再配置して並べたものである。次に、カメラ応答観測部２６において保存された図３のデータ形式のうちのＲ画素値のデータ形式において、ｊ番目の行のテーブル値を読み取り、Ｋ次元の応答ベクトルｖｊを読み込む。反射成分画像において、各カメラ画素においてグローバルＲ成分を抽出する。以降、第１の実施の形態と同様に、反射成分画像のグローバルＲ成分の有無をチェックして、そのグローバルＲ成分が有ると判定した場合、ＲＯＭＰアルゴリズムを利用して、上記（７）式を満たすＬＴベクトルｕｊを復元する。続いて、ＬＴ行列Ｔｒｒの該当する箇所へ代入する。
【０１９１】
一方、グローバルＲ成分の有無をチェックにおいて、グローバルＲ成分が無いと判定した場合、探索範囲の全ての符号化照明パターンとの正規化相関係数を上記（２２）式により算出し、符号化照明パターンの中で最大値になる点灯ベクトルｑｋを得る。最大値になる点灯ベクトルｑｋを（２１）式に代入して、直接反射に関するＬＴの応答値ｕｊｋを得る。続いて、上記（１８）式に従ってＬＴベクトルｕｊを求め、ＬＴ行列Ｔｒｒの該当する箇所へ代入する。
【０１９２】
以上の同様の処理を、他のカラー成分（Ｇ成分とＢ成分）についても繰り返す。グローバルＧ成分の有無によりＬＴ行列Ｔｇｇを獲得し、グローバルＢ成分の有無によりＬＴ行列Ｔｂｂを獲得する。
【０１９３】
以上により、カメラ１０のカラー応答に応じて、３つのＬＴ行列：Ｔｒｒ、Ｔｇｇ、Ｔｂｂを獲得する。
【０１９４】
リライティング生成部３２では、照明画像の全ての画素のＲＧＢ値からＲの画像、Ｇの画像、Ｂの画像に分離する。各画像の２次元画素の配置を１列に並べ替えてベクトル化して、Ｒの照明画像のベクトルＰｒ、Ｇの照明画像のベクトルＰｇ、Ｂの照明画像のベクトルＰｂを生成する。次に、リライティングの計算において、行列演算：Ｃｒ＝ＴｒｒＰｒ、Ｃｇ＝ＴｇｇＰｇ、Ｃｂ＝ＴｂｂＰｂにより、Ｒ照明に該当するベクトルＣｒ、Ｇ照明に該当するベクトルＣｇ、Ｂ照明に該当するベクトルＣｂをそれぞれ得る。照明画像をベクトル化したときの逆の処理で各ベクトルから２次元行列へ再配置して、与えた照明に対するリライティング画像を生成する。これをディスプレイ等の画像出力装置に出力すれば与えた照明の下での観測画像を仮想的に得ることができる。
【０１９５】
なお、第２の実施の形態に係る空間映像再現装置の他の構成及び作用については、第１の実施の形態と同様であるため詳細な説明を省略する。
【０１９６】
本発明の第２の実施の形態に係る空間映像再現装置によれば、レイヤ毎に各ブロックを順に点灯させた符号化照明パターン、及びランダムに生成されるベルヌーイバイナリパターンを含む、プロジェクタから照射するための照明画像を、フレーム番号毎に生成し、プロジェクタからベルヌーイバイナリパターンである照明画像を出力させ、ＲＧＢに対応した、予め定められた閾値よりも大きい輝度値を有する画素をカメラ応答の画素として検出し、符号化照明パターンである照明画像をカメラにより撮影した観測画像の各々について、予め定められた閾値よりも大きい輝度値を有する画素をカメラ応答の画素として検出し、画素の各々について、レイヤ毎に、画素において最大の輝度値となるカメラ応答を特定し、特定されたカメラ応答であるか否かを表す復号ビット列を生成し、予め取得された、画素毎に被写体からの直接反射成分及びグローバル反射成分を表す反射成分画像に基づいて、カメラ応答の画素の各々について、グローバル反射成分を含むか否かを判定し、画素がグローバル反射成分を含まない場合、復号ビット列から得られる、画素のカメラ応答を引き起こした照明画像の画素の範囲に含まれる画素における、符号化照明パターンである照明画像の各々での点灯の有無と、応答成分検出部によって画素について検出されたカメラ応答とに基づいて、画素に関する各要素からなるＬＴベクトルを推定し、画素がグローバル反射成分を含む場合、カメラ応答と、ベルヌーイバイナリパターンである照明画像の各々とに基づいて、画素に関する各要素からなるＬＴベクトルを推定することにより、ＲＧＢに対応したＬＴ行列を推定することにより、効率よく、かつ、精度よく、リライティングを行うためのＬＴ行列を推定できる。
【０１９７】
＜本発明の第３の実施の形態に係る空間映像再現装置の構成＞
【０１９８】
次に、本発明の第３の実施の形態に係る空間映像再現装置の構成について説明する。第３の実施の形態においては、Ｎ台のプロジェクタと１台のカメラのマルチプロジェクタ・システムを用いている点が第１の実施の形態と異なる。なお、第１の実施の形態に係る空間映像再現装置１００と同様の構成及び作用については、同一の符号を付して説明を省略する。また、プロジェクタが切り替えられた場合、当該切り替え先のプロジェクタについて、第１の実施の形態と同様の処理を行う。
【０１９９】
図１２に示すように、本発明の第３の実施の形態に係る空間映像再現装置２００は、カメラ２１０と、Ｎ台のプロジェクタ２１２Ａ〜プロジェクタ２１２Ｎと、演算部２２０とを含んで構成されている。
【０２００】
カメラ２１０は、切替部２４２において切り替えられたプロジェクタ２１２Ａ〜プロジェクタ２１２Ｎのうちの何れか１つのプロジェクタにより投影された照明画像を観測し、カメラ応答観測部２６に出力する。
【０２０１】
演算部２２０は、切替部２４２と、同期制御部２２２と、照明画像生成部２４と、カメラ応答観測部２６と、応答成分検出部２８と、ＬＴ行列推定部３０と、リライティング生成部３２と、映像ＤＢ４０とを含んで構成されている。
【０２０２】
切替部２４２は、同期制御部２２２の切り替え指示により、処理対象となるプロジェクタをプロジェクタ２１２Ａ〜プロジェクタ２１２Ｎのうちの１つに切り替える。なお、第４の実施の形態においては、１番初めの処理対象のプロジェクタとしてプロジェクタ２１２Ａが選択されているものとする。また、第３の実施の形態においては、切替部２４２は、スイッチや分岐装置などを利用する。また、第３の実施の形態においては、終了条件である全てのプロジェクタについて処理が終了するまで、同期制御部２２２の切り替え指示により処理対象となるプロジェクタを切り替える。
【０２０３】
同期制御部２２２は、照明画像生成部２４においてベルヌーイバイナリパターンを生成する場合に、フレーム番号毎に、切替部２４２において切り替えられたプロジェクタ２１２Ａ〜プロジェクタ２１２Ｎのうちの１つのプロジェクタから照明を照射させ、照射された照明をカメラ２１０により撮影するように制御する。また、同期制御部２２２は、フレーム番号ｆの値が、照明画像生成部２４において投影する全ての照明画像の数の値Ｋであるフレーム番号ｆを照明画像生成部２４とカメラ応答観測部２６とに送出した時点で繰り返し処理を停止し、切替部２４２に処理対象となるプロジェクタを切り替える切り替え指示を出力し、切替部２４２において処理対象となるプロジェクタが切り替えられた後に、フレーム番号ｆの値を１に初期化し、上記処理を繰り返す。また、照明画像生成部２４において符号化照明パターンを生成する場合には、カメラ応答観測部２６を応答成分検出部２８に置き換えて同様の処理を行う。
【０２０４】
なお、他の各処理部の処理は第１の実施の形態と同様であり、照明画像生成部２４、カメラ応答観測部２６、応答成分検出部２８、ＬＴ行列推定部３０、及びリライティング生成部３２の各々の処理をプロジェクタ毎に行うようにすればよい。
【０２０５】
第３の実施の形態に係る空間映像再現装置の他の構成及び作用については、第１の実施の形態と同様であるため詳細な説明を省略する。
【０２０６】
以上説明したように、本発明の第３の実施の形態に係る空間映像再現装置によれば、プロジェクタ毎に、レイヤ毎に各ブロックを順に点灯させた符号化照明パターン、及びランダムに生成されるベルヌーイバイナリパターンを含む、プロジェクタから照射するための照明画像を、フレーム番号毎に生成し、プロジェクタからベルヌーイバイナリパターンである照明画像を出力させ、予め定められた閾値よりも大きい輝度値を有する画素をカメラ応答の画素として検出し、符号化照明パターンである照明画像をカメラにより撮影した観測画像の各々について、予め定められた閾値よりも大きい輝度値を有する画素をカメラ応答の画素として検出し、画素の各々について、レイヤ毎に、画素において最大の輝度値となるカメラ応答を特定し、特定されたカメラ応答であるか否かを表す復号ビット列を生成し、予め取得された、画素毎に被写体からの直接反射成分及びグローバル反射成分を表す反射成分画像に基づいて、カメラ応答の画素の各々について、グローバル反射成分を含むか否かを判定し、画素がグローバル反射成分を含まない場合、復号ビット列から得られる、画素のカメラ応答を引き起こした照明画像の画素の範囲に含まれる画素における、符号化照明パターンである照明画像の各々での点灯の有無と、応答成分検出部によって画素について検出されたカメラ応答とに基づいて、画素に関する各要素からなるＬＴベクトルを推定し、画素がグローバル反射成分を含む場合、カメラ応答と、ベルヌーイバイナリパターンである照明画像の各々とに基づいて、画素に関する各要素からなるＬＴベクトルを推定することにより、プロジェクタ照明の各画素及びカメラ応答の各画素間の対応関係を表すＬＴ行列を推定することにより、効率よく、かつ、精度よく、リライティングを行うためのＬＴ行列を推定できる。
【０２０７】
＜本発明の第４の実施の形態に係る空間映像再現装置の構成＞
【０２０８】
次に、本発明の第４の実施の形態に係る空間映像再現装置の構成について説明する。第４の実施の形態においては、カラー応答に応じて処理を行う点が第３の実施の形態と異なる。なお、第２及び第３の実施の形態に係る空間映像再現装置１００と同様の構成及び作用については、同一の符号を付して説明を省略する。また、プロジェクタが切り替えられた場合、当該切り替え先のプロジェクタについて、第２の実施の形態と同様の処理を行う。
【０２０９】
上記図１２に示すように、本発明の第４の実施の形態に係る空間映像再現装置２００は、カメラ２１０と、Ｎ台のプロジェクタ２１２Ａ〜プロジェクタ２１２Ｎと、演算部２２０とを含んで構成されている。
【０２１０】
演算部２２０は、切替部２４２と、同期制御部２２２と、照明画像生成部２４と、カメラ応答観測部２６と、応答成分検出部２８と、ＬＴ行列推定部３０と、リライティング生成部３２と、映像ＤＢ４０とを含んで構成されている。
【０２１１】
切替部２４２、及び同期制御部２２２の処理は第３の実施の形態と同様である。
【０２１２】
他の各処理部の処理は第２の実施の形態と同様であり、カメラ２１０のカラー応答に応じて、照明画像生成部２４、カメラ応答観測部２６、応答成分検出部２８、ＬＴ行列推定部３０、及びリライティング生成部３２の各々の処理をプロジェクタ毎に行うようにすればよい。
【０２１３】
第４の実施の形態に係る空間映像再現装置の他の構成及び作用については、第２の実施の形態と同様であるため詳細な説明を省略する。
【０２１４】
本発明の第４の実施の形態に係る空間映像再現装置によれば、プロジェクタ毎に、レイヤ毎に各ブロックを順に点灯させた符号化照明パターン、及びランダムに生成されるベルヌーイバイナリパターンを含む、プロジェクタから照射するための照明画像を、フレーム番号毎に生成し、プロジェクタからベルヌーイバイナリパターンである照明画像を出力させ、ＲＧＢに対応した、予め定められた閾値よりも大きい輝度値を有する画素をカメラ応答の画素として検出し、符号化照明パターンである照明画像をカメラにより撮影した観測画像の各々について、予め定められた閾値よりも大きい輝度値を有する画素をカメラ応答の画素として検出し、画素の各々について、レイヤ毎に、画素において最大の輝度値となるカメラ応答を特定し、特定されたカメラ応答であるか否かを表す復号ビット列を生成し、予め取得された、画素毎に被写体からの直接反射成分及びグローバル反射成分を表す反射成分画像に基づいて、カメラ応答の画素の各々について、グローバル反射成分を含むか否かを判定し、画素がグローバル反射成分を含まない場合、復号ビット列から得られる、画素のカメラ応答を引き起こした照明画像の画素の範囲に含まれる画素における、符号化照明パターンである照明画像の各々での点灯の有無と、応答成分検出部によって画素について検出されたカメラ応答とに基づいて、画素に関する各要素からなるＬＴベクトルを推定し、画素がグローバル反射成分を含む場合、カメラ応答と、ベルヌーイバイナリパターンである照明画像の各々とに基づいて、画素に関する各要素からなるＬＴベクトルを推定することにより、ＲＧＢに対応したＬＴ行列を推定することにより、効率よく、かつ、精度よく、リライティングを行うためのＬＴ行列を推定できる。
【０２１５】
また、本発明の第１〜第４の実施の形態によれば、被写体の３次元構造やその表面の反射特性を必要とせずに、プロジェクタ・カメラシステムを使って得たＬＴに基づき、任意照明を与えたときの被写体のリライティングを可能とする。リライティングはＬＴ行列と照明ベクトルの積から実現できるためリアルタイム処理に適しており、映画製作あるいは番組制作などのコンピュータグラフィックス、さらには実環境とのリアルな仮想現実感（virtual reality）や拡張現実感（augmented reality）を生み出すことができる。
【０２１６】
なお、本発明は、上述した実施の形態に限定されるものではなく、この発明の要旨を逸脱しない範囲内で様々な変形や応用が可能である。
【０２１７】
また、本願明細書中において、プログラムが予めインストールされている実施形態として説明したが、当該プログラムを、コンピュータ読み取り可能な記録媒体に格納して提供することも可能であるし、ネットワークを介して提供することも可能である。
【符号の説明】
【０２１８】
１０、２１０  カメラ
１２、２１２Ａ〜Ｎ   プロジェクタ
２０、２２０  演算部
２２、２２２  同期制御部
２４   照明画像生成部
２６   カメラ応答観測部
２８   応答成分検出部
３０   ＬＴ行列推定部
３２   リライティング生成部
４０   映像ＤＢ
５０   出力部
１００、２００       空間映像再現装置
２４２ 切替部
【図１】
2018063356.tif 000031
【図２】
2018063356.tif 000032
【図３】
2018063356.tif 000033
【図４】
2018063356.tif 000034
【図５】
2018063356.tif 000035
【図６】
2018063356.tif 000036
【図７】
2018063356.tif 000037
【図８】
2018063356.tif 000038
【図９】
2018063356.tif 000039
【図１０】
2018063356.tif 000040
【図１１】
2018063356.tif 000041
【図１２】
2018063356.tif 000042
【図１３】
2018063356.tif 000043