(57)【特許請求の範囲】
【請求項１】
各々が異なる複数の直交行列Ｐ＾ｋに基づいて、前記直交行列Ｐ＾ｋ毎に、前記直交行列Ｐ＾ｋを用いて、プロジェクタから出力するための正照明画像及び負照明画像を生成する直交照明生成部と、
前記プロジェクタから、前記直交行列Ｐ＾ｋ毎に生成された正照明画像及び負照明画像の各々を出力させ、前記出力された正照明画像又は負照明画像をカメラにより撮影するように制御する同期制御部と、
前記複数の直交行列Ｐ＾ｋに対する正照明画像及び負照明画像の各々に対して、前記カメラにより撮影した観測画像から、予め定められた閾値よりも大きい輝度値を有する画素をカメラ応答の画素として検出して応答画像を生成するカメラ応答観測部と、
前記複数の直交行列Ｐ＾ｋの各々について、前記直交行列Ｐ＾ｋを表す列ベクトルと、与えられた照明画像を表す列ベクトルとの内積を計算する照明成分解析部と、
前記複数の直交行列Ｐ＾ｋの各々についての、前記カメラ応答観測部によって生成された、前記直交行列Ｐ＾ｋに対応する正照明画像及び負照明画像の各々に対する応答画像の差分と、前記照明成分解析部によって前記直交行列Ｐ＾ｋについて計算された前記内積とに基づいて、リライティング画像を生成するリライティング画像生成部と、
を含む、リライティング画像生成装置。
【請求項２】
前記照明成分解析部は、前記与えられた照明画像を、複数の色成分に分離し、前記複数の色成分毎に、前記複数の直交行列Ｐ＾ｋの各々について、前記直交行列Ｐ＾ｋを表す列ベクトルと、前記色成分の照明画像を表す列ベクトルとの内積を計算し、
前記リライティング画像生成部は、前記複数の色成分毎に、前記複数の直交行列Ｐ＾ｋの各々についての、前記カメラ応答観測部によって生成された、前記直交行列Ｐ＾ｋに対応する正照明画像及び負照明画像の各々に対する前記色成分の応答画像の差分と、前記照明成分解析部によって前記直交行列Ｐ＾ｋについて計算された前記色成分の前記内積とに基づいて、前記色成分のリライティング画像を生成する請求項１記載のリライティング画像生成装置。
【請求項３】
前記直交照明生成部は、複数の色成分αの各々に対し、前記複数の直交行列Ｐ＾ｋに基づいて、前記直交行列Ｐ＾ｋ毎に、前記色成分αの正照明画像及び負照明画像を生成し、
前記カメラ応答観測部は、前記複数の色成分α及び前記複数の直交行列Ｐ＾ｋの組み合わせに対する正照明画像及び負照明画像の各々に対して、前記カメラにより撮影した観測画像から、複数の色成分β毎に、前記カメラ応答の画素を検出して前記色成分βの応答画像を生成し、
前記照明成分解析部は、前記与えられた照明画像を、前記複数の色成分βに分離し、前記複数の色成分β毎に、前記複数の直交行列Ｐ＾ｋの各々について、前記直交行列Ｐ＾ｋを表す列ベクトルと、前記色成分βの照明画像を表す列ベクトルとの内積を計算し、
前記リライティング画像生成部は、前記複数の色成分α毎に、前記複数の直交行列Ｐ＾ｋの各々に対して、前記カメラ応答観測部によって生成された、前記色成分α及び前記直交行列Ｐ＾ｋの組み合わせに対応する正照明画像及び負照明画像の各々に対する前記色成分βの各々の応答画像の差分と、前記照明成分解析部によって前記直交行列Ｐ＾ｋについて計算された前記色成分βの各々の前記内積とに基づいて、前記色成分βのリライティング画像を生成する請求項１記載のリライティング画像生成装置。
【請求項４】
出力するプロジェクタを、複数のプロジェクタのうちの何れかに切り替える切替部を更に含み、
前記直交照明生成部は、前記切替部によって切り換えられたプロジェクタから出力するための前記正照明画像及び負照明画像を生成し、
前記同期制御部は、前記切替部によって切り替えられたプロジェクタから正照明画像又は負照明画像を出力させ、前記出力された正照明画像又は負照明画像をカメラにより撮影するように制御し、
前記リライティング画像生成部は、前記切替部によって切り換えられたプロジェクタについて、前記リライティング画像を生成する請求項１〜請求項３の何れか１項記載のリライティング画像生成装置。
【請求項５】
直交照明生成部と、同期制御部と、カメラ応答観測部と、照明成分解析部と、リライティング画像生成部とを含むリライティング画像生成装置においけるリライティング画像生成方法であって、
前記直交照明生成部が、各々が異なる複数の直交行列Ｐ＾ｋに基づいて、前記直交行列Ｐ＾ｋ毎に、前記直交行列Ｐ＾ｋを用いて、プロジェクタから出力するための正照明画像及び負照明画像を生成するステップと、
前記同期制御部が、前記プロジェクタから、前記直交行列Ｐ＾ｋ毎に生成された正照明画像及び負照明画像の各々を出力させ、前記出力された正照明画像又は負照明画像をカメラにより撮影するように制御するステップと、
前記カメラ応答観測部が、前記複数の直交行列Ｐ＾ｋに対する正照明画像及び負照明画像の各々に対して、前記カメラにより撮影した観測画像から、予め定められた閾値よりも大きい輝度値を有する画素をカメラ応答の画素として検出して応答画像を生成するステップと、
前記照明成分解析部が前記複数の直交行列Ｐ＾ｋの各々について、前記直交行列Ｐ＾ｋを表す列ベクトルと、与えられた照明画像を表す列ベクトルとの内積を計算するステップと、
前記リライティング画像生成部が、前記複数の直交行列Ｐ＾ｋの各々についての、前記カメラ応答観測部によって生成された、前記直交行列Ｐ＾ｋに対応する正照明画像及び負照明画像の各々に対する応答画像の差分と、前記照明成分解析部によって前記直交行列Ｐ＾ｋについて計算された前記内積とに基づいて、リライティング画像を生成するステップと、
を含む、リライティング画像生成方法。
【請求項６】
前記照明成分解析部が計算するステップは、前記与えられた照明画像を、複数の色成分に分離し、前記複数の色成分毎に、前記複数の直交行列Ｐ＾ｋの各々について、前記直交行列Ｐ＾ｋを表す列ベクトルと、前記色成分の照明画像を表す列ベクトルとの内積を計算し、
前記リライティング画像生成部が生成するステップは、前記複数の色成分毎に、前記複数の直交行列Ｐ＾ｋの各々についての、前記カメラ応答観測部によって生成された、前記直交行列Ｐ＾ｋに対応する正照明画像及び負照明画像の各々に対する前記色成分の応答画像の差分と、前記照明成分解析部によって前記直交行列Ｐ＾ｋについて計算された前記色成分の前記内積とに基づいて、前記色成分のリライティング画像を生成する請求項５記載のリライティング画像生成方法。
【請求項７】
前記直交照明生成部が生成するステップは、複数の色成分αの各々に対し、前記複数の直交行列Ｐ＾ｋに基づいて、前記直交行列Ｐ＾ｋ毎に、前記色成分αの正照明画像及び負照明画像を生成し、
前記カメラ応答観測部が生成するステップは、前記複数の色成分α及び前記複数の直交行列Ｐ＾ｋの組み合わせに対する正照明画像及び負照明画像の各々に対して、前記カメラにより撮影した観測画像から、複数の色成分β毎に、前記カメラ応答の画素を検出して前記色成分βの応答画像を生成し、
前記照明成分解析部が計算するステップは、前記与えられた照明画像を、前記複数の色成分βに分離し、前記複数の色成分β毎に、前記複数の直交行列Ｐ＾ｋの各々について、前記直交行列Ｐ＾ｋを表す列ベクトルと、前記色成分βの照明画像を表す列ベクトルとの内積を計算し、
前記リライティング画像生成部が生成するステップは、前記複数の色成分α毎に、前記複数の直交行列Ｐ＾ｋの各々に対して、前記カメラ応答観測部によって生成された、前記色成分α及び前記直交行列Ｐ＾ｋの組み合わせに対応する正照明画像及び負照明画像の各々に対する前記色成分βの各々の応答画像の差分と、前記照明成分解析部によって前記直交行列Ｐ＾ｋについて計算された前記色成分βの各々の前記内積とに基づいて、前記色成分βのリライティング画像を生成する請求項５記載のリライティング画像生成方法。
【請求項８】
コンピュータを、請求項１〜請求項４の何れか１項記載のリライティング画像生成装置を構成する各部として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、リライティング画像生成装置、方法、及びプログラムに係り、特に、照明画像をプロジェクタから出力したときに得られるリライティング画像を生成するリライティング画像生成装置、方法、及びプログラムに関する。
【背景技術】
【０００２】
プロジェクタは極めてフレキシブルな画像出力デバイスであり、投影仕様の範囲内であればパーソナルスペース、会議ホール、巨大パブリックビューイング、及びビルの壁面などに合わせて自由サイズの映像表示を提供する。プロジェクタを使って平面スクリーンではない任意の構造物（以下、被写体と称する）へ投影するとき、被写体の形状を事前に計測して、その形状に合わせて所定画像が空間歪みの無いように投影する技術は、プロジェクション・マッピング（projection mapping）として知られている。任意スケールの映像投影のメリットを活かしたプロジェクション・マッピングは、エンターテインメント志向のイベントやイルミネーションによる広告表示などに利用されている。
【０００３】
プロジェクション・マッピングでは、所定画像を正確に投影するために、目視確認と手動操作によって、画素単位での位置合わせが行われている。これに対して、プロジェクタ投影の状態をカメラによって把握し、所定画像を指定された位置に投影するために、プロジェクタ・カメラシステムが利用されている。プロジェクタ・カメラシステムは、プロジェクタとカメラが連動して、カメラからのフィードバック画像に応じて、プロジェクタから投影出力する画像を処理する。通常、平面なスクリーンにプロジェクション・マッピングする場合には、プロジェクタ画面上の点とカメラ画面上の点を、キャリブレーション作業で得た平面射影変換（plane-homography）を使い、スクリーン面を介して対応付ける。この対応関係を利用して、所定画像をスクリーン面の決められた場所に投影する。もし、空間構造に凹凸があったり曲がった構造である場合には、その空間構造を事前に把握しなければならない。
【０００４】
例えば、レーザ計測を利用して、被写体の空間構造、あるいは凹凸形状を得る方法が知られている（非特許文献１）。その形状に合わせて所定画像を幾何的に変形させて、平面スクリーンと同様の状態で指定個所に所定画像を投影する。あるいは、構造光（structured light）と呼ばれる幾何パターンをプロジェクタから投影し、カメラで観測した歪み画像から空間構造の凹凸形状あるいは奥行きを計測する方式も利用できる。このように、外界または被写体の空間構造をレーザ計測またはプロジェクタ・カメラシステムを利用して空間構造を把握し、その凹凸形状または奥行きに合わせて指定個所へ所定画像を投影する。
【０００５】
これに対して、外界の空間構造を計測せずに、ライト・トランスポートを利用したプロジェクション・マッピングが知られている（非特許文献２）。ライト・トランスポート（light transport）とは、プロジェクタ・カメラシステムを使ったとき、プロジェクタ照明の各画素とカメラ応答の各画素間の幾何的、光学的対応関係を表現したデータである。説明の都合上、プロジェクタから投影する画像のサイズをＮ×Ｎ画素、カメラで観測する画像のサイズをＭ×Ｍ画素とするが、縦横のサイズが同じサイズである必要はない。ライト・トランスポートを獲得するには、プロジェクタから何らかの照明パターンを投影して、カメラによりその応答を観測する。通常、図１８に示すように、複数の照明パターン：Ｐ（１），Ｐ（２），．．．，Ｐ（Ｌ）が使われ、それに応じてカメラ応答：Ｃ（１），Ｃ（２），．．．，Ｃ（Ｌ）を得る。この例では、Ｌ種類の照明パターンが使われているが、ライト・トランスポートを獲得するときの条件として、それぞれ異なった照明パターンでなければならない。例えば、プロジェクタ画素の１点１点を単色光で順番に点灯させる。この方式は、brute-force scanning（以下、ＢＦＳと記載する。）と呼ばれており、全てのプロジェクタ画素と全てのカメラ画素間の直接反射光と間接反射光を計測することができる。各点光源の画像系列：Ｐ（１），Ｐ（２），．．．，Ｐ（Ｌ）と、そのカメラ応答の画像系列：Ｃ（１），Ｃ（２），．．．，Ｃ（Ｌ）を列ベクトル化して並べると、ライト・トランスポート行列（light transport matrix）と呼ばれるＭ２×Ｎ２の行列Ｔ＾が得られる。なお、文字の後ろに＾がついている文字は行列又はベクトル表記を表すものとする。
【０００６】
また、臨場感の高い映像演出のためには、プロジェクション・マッピングのセットアップにおいて、実空間における被写体の照明状態を事前に把握する必要がある。このとき、映像演出の現場において、適宜、被写体に照明を投影してその状態をセンシングするのではなく、計算機シミュレーションによって、被写体の形状に応じてその照明状態をシミュレーションする。このシミュレーションはリライティング（relighting）として知られている。一般的に、ライト・トランスポートは、プロジェクタから放射する光が物体表面で反射した直接反射光、物体表面からそれ以外の表面で反射した間接反射光、並びに、これらの複数の反射光を含む多重反射光を扱うことができる。このため、ライト・トランスポート行列Ｔ＾を利用すれば、全てのプロジェクタ画素と全てのカメラ画素間の対応付けに基づいた高精度なリライティングを可能とする（非特許文献２）。なお、以降では、ライト・トランスポートをＬＴ、ライト・トランスポート行列をＬＴ行列と略する。
【先行技術文献】
【非特許文献】
【０００７】
【非特許文献１】J. Shimamuraand K. Arakawa:“Location-Aware Projection with Robust 3-D Viewing Point Detection and Fast Image Deformation”, Proc. ACM International Conference on Multimedia,pp.296-299, 2004.
【非特許文献２】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.
【発明の概要】
【発明が解決しようとする課題】
【０００８】
実環境を反映した臨場感の高いリライティングのためには、直接反射光と間接反射光だけではなく、グローバル反射光を使う必要がある。グローバル反射光とは、いわゆる、照明をオフにしたときの環境光ではなく、被写体を照明したとき、その環境全体から照明される反射光である。プロジェクタ・カメラシステムを使った例を、図１９に示す。図１９左はプロジェクタからの照明をオフにして、蛍光灯の下で取得したカメラ画像である。図１９右は蛍光灯をオフにして、図１９左の枠で囲んだ部分にプロジェクタから白色照明を投影したときのカメラ画像である。ＢＦＳは原理的に点光源を使ってライト・トランスポートを獲得するため、カメラはその画面において局所的なインパルス性の強い応答を得る。図１９右に示したように、グローバル反射光は被写体あるいは空間全体を大局的に照明して得られる反射光であるため、プロジェクタ・カメラシステムにおける光学的なパラメータ、カメラ設定（例：シャッタースピード、カメラの絞り）を調整したとしても、ＢＦＳはグローバル反射光に相当するライト・トランスポートを検出することは困難である。
【０００９】
本発明は、上記問題点を解決するために成されたものであり、照明画像をプロジェクタから出力したときに得られるリライティング画像を精度よく生成することができるリライティング画像生成装置、方法、及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１０】
上記目的を達成するために、第１の発明に係るリライティング画像生成装置は、各々が異なる複数の直交行列Ｐ＾ｋに基づいて、前記直交行列Ｐ＾ｋ毎に、前記直交行列Ｐ＾ｋを用いて、プロジェクタから出力するための正照明画像及び負照明画像を生成する直交照明生成部と、前記プロジェクタから、前記直交行列Ｐ＾ｋ毎に生成された正照明画像及び負照明画像の各々を出力させ、前記出力された正照明画像又は負照明画像をカメラにより撮影するように制御する同期制御部と、前記複数の直交行列Ｐ＾ｋに対する正照明画像及び負照明画像の各々に対して、前記カメラにより撮影した観測画像から、予め定められた閾値よりも大きい輝度値を有する画素をカメラ応答の画素として検出して応答画像を生成するカメラ応答観測部と、前記複数の直交行列Ｐ＾ｋの各々について、前記直交行列Ｐ＾ｋを表す列ベクトルと、与えられた照明画像を表す列ベクトルとの内積を計算する照明成分解析部と、前記複数の直交行列Ｐ＾ｋの各々についての、前記カメラ応答観測部によって生成された、前記直交行列Ｐ＾ｋに対応する正照明画像及び負照明画像の各々に対する応答画像の差分と、前記照明成分解析部によって前記直交行列Ｐ＾ｋについて計算された前記内積とに基づいて、リライティング画像を生成するリライティング画像生成部と、を含んで構成されている。
【００１１】
また、第１の発明に係るリライティング画像生成装置において、前記照明成分解析部は、前記与えられた照明画像を、複数の色成分に分離し、前記複数の色成分毎に、前記複数の直交行列Ｐ＾ｋの各々について、前記直交行列Ｐ＾ｋを表す列ベクトルと、前記色成分の照明画像を表す列ベクトルとの内積を計算し、前記リライティング画像生成部は、前記複数の色成分毎に、前記複数の直交行列Ｐ＾ｋの各々についての、前記カメラ応答観測部によって生成された、前記直交行列Ｐ＾ｋに対応する正照明画像及び負照明画像の各々に対する前記色成分の応答画像の差分と、前記照明成分解析部によって前記直交行列Ｐ＾ｋについて計算された前記色成分の前記内積とに基づいて、前記色成分のリライティング画像を生成するようにしてもよい。
【００１２】
また、第１の発明に係るリライティング画像生成装置において、前記直交照明生成部は、複数の色成分αの各々に対し、前記複数の直交行列Ｐ＾ｋに基づいて、前記直交行列Ｐ＾ｋ毎に、前記色成分αの正照明画像及び負照明画像を生成し、前記カメラ応答観測部は、前記複数の色成分α及び前記複数の直交行列Ｐ＾ｋの組み合わせに対する正照明画像及び負照明画像の各々に対して、前記カメラにより撮影した観測画像から、前記複数の色成分β毎に、前記カメラ応答の画素を検出して前記色成分βの応答画像を生成し、前記照明成分解析部は、前記与えられた照明画像を、複数の色成分βに分離し、前記複数の色成分β毎に、前記複数の直交行列Ｐ＾ｋの各々について、前記直交行列Ｐ＾ｋを表す列ベクトルと、前記色成分βの照明画像を表す列ベクトルとの内積を計算し、前記リライティング画像生成部は、前記複数の色成分α毎に、前記複数の直交行列Ｐ＾ｋの各々に対して、前記カメラ応答観測部によって生成された、前記色成分α及び前記直交行列Ｐ＾ｋの組み合わせに対応する正照明画像及び負照明画像の各々に対する前記色成分βの各々の応答画像の差分と、前記照明成分解析部によって前記直交行列Ｐ＾ｋについて計算された前記色成分βの各々の前記内積とに基づいて、前記色成分βのリライティング画像を生成するようにしてもよい。
【００１３】
また、第１の発明に係るリライティング画像生成装置において、出力するプロジェクタを、複数のプロジェクタのうちの何れかに切り替える切替部を更に含み、前記直交照明生成部は、前記切替部によって切り換えられたプロジェクタから出力するための前記正照明画像及び負照明画像を生成し、前記同期制御部は、前記切替部によって切り替えられたプロジェクタから正照明画像又は負照明画像を出力させ、前記出力された正照明画像又は負照明画像をカメラにより撮影するように制御し、前記リライティング画像生成部は、前記切替部によって切り換えられたプロジェクタについて、前記リライティング画像を生成するようにしてもよい。
【００１４】
第２の発明に係るリライティング画像生成方法は、直交照明生成部と、同期制御部と、カメラ応答観測部と、照明成分解析部と、リライティング画像生成部とを含むリライティング画像生成装置においけるリライティング画像生成方法であって、前記直交照明生成部が、各々が異なる複数の直交行列Ｐ＾ｋに基づいて、前記直交行列Ｐ＾ｋ毎に、前記直交行列Ｐ＾ｋを用いて、プロジェクタから出力するための正照明画像及び負照明画像を生成するステップと、前記同期制御部が、前記プロジェクタから、前記直交行列Ｐ＾ｋ毎に生成された正照明画像及び負照明画像の各々を出力させ、前記出力された正照明画像又は負照明画像をカメラにより撮影するように制御するステップと、前記カメラ応答観測部が、前記複数の直交行列Ｐ＾ｋに対する正照明画像及び負照明画像の各々に対して、前記カメラにより撮影した観測画像から、予め定められた閾値よりも大きい輝度値を有する画素をカメラ応答の画素として検出して応答画像を生成するステップと、前記照明成分解析部が、前記複数の直交行列Ｐ＾ｋの各々について、前記直交行列Ｐ＾ｋを表す列ベクトルと、与えられた照明画像を表す列ベクトルとの内積を計算するステップと、前記リライティング画像生成部が、前記複数の直交行列Ｐ＾ｋの各々についての、前記カメラ応答観測部によって生成された、前記直交行列Ｐ＾ｋに対応する正照明画像及び負照明画像の各々に対する応答画像の差分と、前記照明成分解析部によって前記直交行列Ｐ＾ｋについて計算された前記内積とに基づいて、リライティング画像を生成するステップと、を含んで実行することを特徴とする。
【００１５】
また、第２の発明に係るリライティング画像生成方法において、前記照明成分解析部が計算するステップは、前記与えられた照明画像を、複数の色成分に分離し、前記複数の色成分毎に、前記複数の直交行列Ｐ＾ｋの各々について、前記直交行列Ｐ＾ｋを表す列ベクトルと、前記色成分の照明画像を表す列ベクトルとの内積を計算し、前記リライティング画像生成部が生成するステップは、前記複数の色成分毎に、前記複数の直交行列Ｐ＾ｋの各々についての、前記カメラ応答観測部によって生成された、前記直交行列Ｐ＾ｋに対応する正照明画像及び負照明画像の各々に対する前記色成分の応答画像の差分と、前記照明成分解析部によって前記直交行列Ｐ＾ｋについて計算された前記色成分の前記内積とに基づいて、前記色成分のリライティング画像を生成するようにしてもよい。
【００１６】
また、第２の発明に係るリライティング画像生成方法において、前記直交照明生成部が生成するステップは、複数の色成分αの各々に対し、前記複数の直交行列Ｐ＾ｋに基づいて、前記直交行列Ｐ＾ｋ毎に、前記色成分αの正照明画像及び負照明画像を生成し、前記カメラ応答観測部が生成するステップは、前記複数の色成分α及び前記複数の直交行列Ｐ＾ｋの組み合わせに対する正照明画像及び負照明画像の各々に対して、前記カメラにより撮影した観測画像から、前記複数の色成分β毎に、前記カメラ応答の画素を検出して前記色成分βの応答画像を生成し、前記照明成分解析部が計算するステップは、前記与えられた照明画像を、複数の色成分βに分離し、前記複数の色成分β毎に、前記複数の直交行列Ｐ＾ｋの各々について、前記直交行列Ｐ＾ｋを表す列ベクトルと、前記色成分βの照明画像を表す列ベクトルとの内積を計算し、前記リライティング画像生成部が生成するステップは、前記複数の色成分α毎に、前記複数の直交行列Ｐ＾ｋの各々に対して、前記カメラ応答観測部によって生成された、前記色成分α及び前記直交行列Ｐ＾ｋの組み合わせに対応する正照明画像及び負照明画像の各々に対する前記色成分βの各々の応答画像の差分と、前記照明成分解析部によって前記直交行列Ｐ＾ｋについて計算された前記色成分βの各々の前記内積とに基づいて、前記色成分βのリライティング画像を生成するようにしてもよい。
【００１７】
また、第３の発明に係るプログラムは、コンピュータを、上記第１の発明に係るリライティング画像生成装置を構成する各部として機能させるためのプログラムである。
【発明の効果】
【００１８】
本発明のリライティング画像生成装置、方法、及びプログラムによれば、各々が異なる複数の直交行列Ｐ＾ｋに基づいて、直交行列Ｐ＾ｋ毎に、正照明画像及び負照明画像を生成し、プロジェクタから、正照明画像及び負照明画像の各々を出力させ、出力された正照明画像又は負照明画像をカメラにより撮影するように制御し、直交行列Ｐ＾ｋに対する正照明画像及び負照明画像の各々に対して、カメラにより撮影した観測画像から、予め定められた閾値よりも大きい輝度値を有する画素をカメラ応答の画素として検出して応答画像を生成し、直交行列Ｐ＾ｋの各々について、直交行列Ｐ＾ｋを表す列ベクトルと、与えられた照明画像を表す列ベクトルとの内積を計算し、直交行列Ｐ＾ｋの各々についての、正照明画像及び負照明画像の各々に対する応答画像の差分と、計算された内積とに基づいて、リライティング画像を生成することにより、照明画像をプロジェクタから出力したときに得られるリライティング画像を精度よく生成することができる、という効果が得られる。
【図面の簡単な説明】
【００１９】
【図１】本発明の第１の実施の形態に係るリライティング画像生成装置の構成を示すブロック図である。
【図２】行列Ｐ＾ｋの例を示す概念図である。
【図３】直交行列Ｐ＾ｋ＋の１要素から照明画像の画素への割り当ての例を示す概念図である。
【図４】行列要素を、走査により縦方向に並べ替えて列ベクトルを得る例を示す概念図である。
【図５】本発明の第１の実施の形態に係るリライティング画像生成装置における同期制御処理ルーチンを示すフローチャートである。
【図６】本発明の第１の実施の形態に係るリライティング画像生成装置における直交照明生成処理ルーチンを示すフローチャートである。
【図７】本発明の第１の実施の形態に係るリライティング画像生成装置における直交行列算出処理ルーチンを示すフローチャートである。
【図８】本発明の第１の実施の形態に係るリライティング画像生成装置におけるカメラ応答観測処理ルーチンを示すフローチャートである。
【図９】本発明の第１の実施の形態に係るリライティング画像生成装置における照明成分解析処理ルーチンを示すフローチャートである。
【図１０】本発明の第１の実施の形態に係るリライティング画像生成装置におけるリライティング画像生成処理ルーチンを示すフローチャートである。
【図１１】本発明の第２の実施の形態に係るリライティング画像生成装置の構成を示すブロック図である。
【図１２】Ｍ×Ｍ画素領域を、走査により画素の並びを縦方向に並べ替えて、列ベクトルを得る例を示す概念図である。
【図１３】本発明の第２の実施の形態に係るリライティング画像生成装置における同期制御処理ルーチンを示すフローチャートである。
【図１４】本発明の第２の実施の形態に係るリライティング画像生成装置における直交照明生成処理ルーチンを示すフローチャートである。
【図１５】本発明の第２の実施の形態に係るリライティング画像生成装置におけるカメラ応答観測処理ルーチンを示すフローチャートである。
【図１６】本発明の第３の実施の形態に係るリライティング画像生成装置の構成を示すブロック図である。
【図１７】本発明の第４の実施の形態に係るリライティング画像生成装置の構成を示すブロック図である。
【図１８】未公正なプロジェクタ・カメラシステム（単色照明）を使ったＬＴ行列の測定例を示す概念図である。
【図１９】グローバル反射光を捉えた例を示す概念図である。
【図２０】未公正なプロジェクタ・カメラシステム（カラー照明）を使ったＬＴ行列の測定例を示す概念図である。
【発明を実施するための形態】
【００２０】
以下、図面を参照して本発明の実施の形態を詳細に説明する。
【００２１】
＜本発明の第１の実施の形態に係るリライティング画像生成装置の構成＞
【００２２】
まず、本発明の第１の実施の形態に係るリライティング画像生成装置の構成について説明する。図１に示すように、リライティング画像生成装置１００は、カメラ１０と、プロジェクタ１２と、演算部２０と、出力部９０と、を含んで構成されている。なお、第１の実施の形態においては、１台のプロジェクタと１台のカメラのプロジェクタ・カメラシステムを用いる。
【００２３】
カメラ１０は、プロジェクタ１２により投影された正照明画像及び負照明画像を観測し、明るさを示す濃淡画像を取得し、カメラ応答観測部２６に出力する。なお、第１の実施の形態においては、プロジェクタ１２から出力する単色照明として、例えば、白色照明を用いる。
【００２４】
プロジェクタ１２は、単色照明を用いて、直交照明生成部２４による出力指示に従って被写体を投影する。
【００２５】
演算部２０は、同期制御部２２と、直交照明生成部２４と、カメラ応答観測部２６と、照明成分解析部２８と、リライティング画像生成部３０と、画像データベース４０とを含んで構成されている。
【００２６】
同期制御部２２は、フレーム番号毎に、プロジェクタ１２から、後述する直交照明生成部２４により直交行列Ｐ＾ｋ毎に生成された正照明画像又は負照明画像を出力させ、出力された正照明画像又は負照明画像をカメラ１０により撮影するように制御する。具体的には、まず、プロジェクタ１２から投影される特定の照明パターンを表すフレーム番号ｆをｆ＝１に初期化する。次に、カメラ応答観測部２６からの応答信号を待ち、当該応答信号を受信すると、直交照明生成部２４と、カメラ応答観測部２６とへフレーム番号ｆを送出する。フレーム番号ｆを送出することにより、同じフレーム番号においてプロジェクタ１２からの照明と、カメラ１０の観測との同期をとる。次に、フレーム番号ｆをｆ＝ｆ＋１とカウントアップし、再び、カメラ応答観測部２６からの応答信号を待つ。以降、プロジェクタ１２からの照明とカメラ１０における観測とをフレーム番号ｆで同期をとりながら、上述の処理と同様にフレーム番号ｆを直交照明生成部２４と、カメラ応答観測部２６とへの送出を繰り返す。そして、フレーム番号ｆの値が、直交照明生成部２４において投影する全ての照明パターンの数の値２Ｌ２となるフレーム番号ｆを直交照明生成部２４とカメラ応答観測部２６とに送出した時点で、同期制御部２２は、上述の繰り返し処理を停止する。
【００２７】
直交照明生成部２４は、各々が異なる複数の直交行列Ｐ＾ｋを生成し、生成した複数の直交行列Ｐ＾ｋに基づいて、直交行列Ｐ＾ｋ毎に、直交行列Ｐ＾ｋを用いて、プロジェクタ１２から出力するための正照明画像及び負照明画像を生成する。
【００２８】
直交照明生成部２４は、具体的には、以下に説明するように、直交行列Ｐ＾ｋを生成する第１の処理、及び正照明画像及び負照明画像を生成する第２の処理を行う。
【００２９】
まず、プロジェクタ照明で投影する範囲を、Ｎ×Ｎ画素と設定する。説明の便宜上、プロジェクタ画素領域をＮ×Ｎ画素とするが、縦横の画素数は任意に設定できる。次に、パラメータｎが設定される。パラメータｎはプロジェクタサイズのＮに応じて設定すればよいが、任意の数を設定すればよい。そして、パラメータｎが設定された後、直交照明生成部２４は、第１の処理において、アダマール行列Ｈ＾ｎを、
【００３０】
【数１】
0006383678.tif 000002
【００３１】
の計算により求める。行列Ｈ＾ｎ,（ｎ≧１）は縦横２ｎサイズの対称行列である。続いて、行列Ｈ＾ｎの各列ベクトルについて、１から−１、あるいは−１から１へ符号が反転したときの回数をカウントする。符号反転の回数に応じて、左から右へ列ベクトルを並べなおし、以下（２）式の行列Ｗ＾ｎを得る。
【００３２】
【数２】
0006383678.tif 000003
【００３３】
（２）式では、左から右へ符号反転の回数が１ずつ増加するように列ベクトルが並べられる。列ベクトルｈ＾１の符号反転数は０回（全ての要素が１であるため）、列ベクトルｈ＾Ｌの符号反転数がＬ−１回（最も反転回数が多い）となる。続いて、カウンタｉをｉ＝１に初期化して、行列Ｗ＾ｎの第ｉ番目の列ベクトルｈ＾ｉを取り出す。次に、もう一つのカウンタｊを用意して、ｊ＝１に初期化する。カウンタｊが設定されると、行列Ｗ＾ｎの第ｊ番目の列ベクトルｈ＾ｊを取り出す。次に、列ベクトルｈ＾ｉと列ベクトルｈ＾ｊから、以下（３）式の行列積によってＬ×Ｌサイズの行列Ｐ＾ｋ
【００３４】
【数３】
0006383678.tif 000004
【００３５】
を得る。ただし、列ベクトルの肩の添え字Ｔは転置を表す。図２にｎ＝２の場合の行列Ｐ＾ｋの例を示す。白は行列要素１に、黒は行列要素−１に対応する。行列Ｐ＾ｋの任意の列ベクトルは直交系を構成し、本実施の形態では直交行列と呼ぶ。行列Ｐ＾ｋはプロジェクタ１２から実際に投影するときの照明画像とリライティング画像生成部３０の処理に利用されるため、行列Ｐ＾ｋを算出するたびに画像データベース４０に保存する。なお、直交照明生成部２４において算出せずに、予め算出しておいた行列Ｐ＾ｋを画像データベース４０に格納しておいてもよい。
【００３６】
さらに、カウンタｊをｊ＝ｊ＋１とカウントアップする。次に、行列Ｗ＾ｎの第ｊ番目の列ベクトルｈ＾ｊを取り出し、上記（３）式の行列積によって直交行列Ｐ＾ｋを算出する。この処理をｊ＞Ｌになるまで続ける。そして、カウンタｊがｊ＝Ｌとなったとき直交行列Ｐ＾ｋを保存した後、カウンタｉをｉ＝ｉ＋１とカウントアップし、かつ、カウンタｊをｊ＝１に初期化して、同様の処理を繰り返す。最終的に、ｉ＞Ｌになるまで直交行列Ｐ＾ｋを生成し、そのデータを画像データベース４０に保存する。以上の第１の処理によって、直交行列はＰ＾１から
【００３７】
【数４】
0006383678.tif 000005
【００３８】
までのＬ２種類の行列が生成される。ここで、直交行列Ｐ＾ｋ，ｋ＝１，２，・・・，Ｌ２は１または−１の要素から成り立っている。
【００３９】
次に、直交照明生成部２４の第２の処理について説明する。第２の処理では、直交行列Ｐ＾ｋに基づいて、直交行列Ｐ＾ｋの正の値をもつ要素から正照明画像を、直交行列Ｐ＾ｋの負の値をもつ要素から負照明画像を生成する。上記Ｌ２種類の直交行列Ｐ＾ｋが得られているため、合計２Ｌ２種類の照明画像（正照明画像又は負照明画像）を生成する。また、第２の処理が、同期制御部２２からのフレーム番号で制御される。具体的には、同期制御部２２からフレーム番号ｆを受信すると、その値が偶数または奇数を判定する。フレーム番号ｆが奇数のとき直交行列Ｐ＾ｋの正の要素から正照明画像を生成し、フレーム番号ｆが偶数のとき直交行列Ｐ＾ｋの負の要素から負照明画像を生成する。
【００４０】
以下、フレーム番号ｆが奇数の場合とフレーム番号ｆが偶数の場合について説明する。
【００４１】
直交照明生成部２４の第２の処理において、判定されたフレーム番号ｆが奇数の場合は、ｋ＝（ｆ＋１）／２によりカウンタｋを設定し、フレーム番号ｆが偶数の場合はｋ＝ｆ／２によりカウンタｋを設定する。カウンタｋが設定されると、直交行列Ｐ＾ｋを取り出す。フレーム番号ｆが奇数と判定されているならば、直交行列Ｐ＾ｋから、以下（４）式に従って、要素−１を０に置き換えて、要素が１又は０からなる行列Ｐ＾ｋ＋を算出する。
【００４２】
【数５】
0006383678.tif 000006
【００４３】
ここで、｜Ｐ＾ｋ｜はＰ＾ｋの各要素の絶対値をとることを表す。（４）式で得た行列Ｐ＾ｋ＋から正照明画像を生成する。説明の都合上、照明画像に使う画素数をＮ×Ｎ＝２ｍ×２ｍ（ｍは正の整数）とする。直交行列Ｐ＾ｋ＋の１要素を照明画像の画素に割り当てる。図３に、直交行列Ｐ＾ｋ＋の１要素から照明画像の画素への割り当ての例を示す。直交行列Ｐ＾ｋ＋の要素を左から右へ下から上へ走査して、各要素の値を２ｐ×２ｐ（ｐは正の整数であり、ｍ＝ｎ＋ｐとする）画素へコピーする。要素１の場合は照明画像の画素値にはＲ＝Ｇ＝Ｂ＝２５５を代入し、要素０の場合は照明画像の画素値にはＲ＝Ｇ＝Ｂ＝０を代入する。理想的には、ｐ＝０と設定してもよいが、照明が微弱なために十分なカメラ応答が得られない場合がある。そのような状況を考慮して、例えば、ｐ＝２に設定する。一般的には、ｐは使用するプロジェクタ、カメラ、あるいは環境に依存するため、システムパラメータとして事前テストにより十分なカメラ応答が得られる範囲で設定値ｐを決定してもよい。正照明画像を生成するとプロジェクタ１２から出力し、カメラ１０で画像を取得する。
【００４４】
一方、直交照明生成部２４の第２の処理において、判定されたフレーム番号ｆが偶数の場合は、負照明画像を生成する。負照明画像は、直交行列Ｐ＾ｋから、以下（５）式に従って、要素１を０に置き換えて、要素−１を要素１に反転した行列Ｐ＾ｋ−を算出する。
【００４５】
【数６】
0006383678.tif 000007
【００４６】
以降、正照明画像を生成したときと同様に、直交行列Ｐ＾ｋの１要素の値を２ｐ×２ｐ画素へコピーする。要素１に対応する画素値にはＲ＝Ｇ＝Ｂ＝２５５を代入し、要素０に対応する画素値にはＲ＝Ｇ＝Ｂ＝０を代入する。あるいは、正照明行列Ｐ＾ｋ＋の０と１の要素を１と０に反転すると負照明行列Ｐ＾ｋ−になるため、正照明画像を反転して負照明画像を生成してもよい。負照明画像を生成するとプロジェクタ１２から出力する。このように、同期制御部２２からのフレーム番号を受信するたびに、直交行列をから正照明画像又は負照明画像を生成する。全ての直交行列から生成した照明画像をプロジェクタ１２から投影し終わるまで繰り返す。このように、以上の第２の処理によって生成された、正照明画像及び負照明画像のペアが順番にプロジェクタ１２から投影される。
【００４７】
カメラ応答観測部２６は、プロジェクタ１２から投影された複数の直交行列Ｐ＾ｋに対する正照明画像及び負照明画像の各々に対して、カメラ１０により撮影した観測画像から、予め定められた閾値よりも大きい輝度値を有する画素をカメラ応答の画素として検出して応答画像を生成する。
【００４８】
具体的には、まず、観測範囲が設定される。第１の実施の形態においては、カメラ１０において観測された画像全体を処理対象とせず、当該設定により指定された範囲のカメラ応答を検出するように設定される。例えば、画像内でのＭ×Ｍ（本実施の形態では、１，０００×１，０００とするが、縦横サイズは任意に設定しても構わない）画素の範囲が設定される。また、カメラ応答を検出するための閾値が設定される。当該閾値は、カメラ応答を検出する範囲の画素の各々について用いられ、当該閾値以上の輝度値である画素がカメラ応答として検出される。
【００４９】
そして、カメラ応答観測部２６は、同期制御部２２からフレーム番号ｆを受信すると、カメラ１０が正照明画像又は負照明画像の照明に対する画像を取得することができる状態かのチェックを行い、撮影可能状態ならばカメラ１０から観測画像を取得する。次に、画像データベース４０に記憶されているプロジェクタ１２によるプロジェクタ照明を投影していない状態の観測画像である背景画像を取得し、観測画像と背景画像との背景差分を処理する。当該背景差分において、蛍光灯などの環境光の下では画像雑音が多く混入するため、設定した閾値として例えば１０階調に設定しておき、当該値よりも大きい画素の各々をカメラ応答の画素として検出する。続いて、検出されたカメラ応答を含むＭ×Ｍ画素を応答画像として画像データベース４０に保存する。そして、カメラ１０による次のカメラ観測に備えて、同期制御部２２へ応答信号を送信し、フレーム番号を受信するまで待機する。以上の処理を繰り返し、全ての正照明画像及び負照明画像の各々についての応答画像を画像データベース４０に記憶した時点で終了する。なお、初回に、カメラ観測を行う場合には、カメラ応答観測部２６から応答信号を同期制御部２２へ送信する。また、観測画像と同じサイズの応答画像を、画像データベース４０に保存するようにしてもよい。
【００５０】
照明成分解析部２８は、与えられた照明画像を、複数の色成分に分離し、複数の色成分毎に、複数の直交行列Ｐ＾ｋの各々について、直交行列と、色成分の照明画像を表す列ベクトルとの内積を計算する。
【００５１】
照明成分解析部２８は、具体的には、以下に説明する第１の処理によって、直交行列Ｐ＾ｋを表す列ベクトルの各々からなる行列Ｐ＾を用意し、第２の処理によって、行列Ｐ＾の列ベクトルと、与えられた任意の照明画像の色成分毎の列ベクトルの内積とを計算することにより、照明成分の解析を行う。以下、第１の処理について説明する。第１の処理では、まず、カウンタｋを初期化してｋ＝１と与える。カウンタｋに従って、画像データベース４０に記憶されている直交行列Ｐ＾ｋ，ｋ＝１，２，・・・，Ｌ２を取り出す。この直交行列Ｐ＾ｋについて、図４に示すように、左から右へ下から上へ走査し、右端まで走査した後は１つ行を上げてまた左端に戻り、同様に左から右へ走査する。この走査により行列要素を縦方向に並べ替えた列ベクトルを得る。その列ベクトルを正規化（ベクトルの大きさを１とする）し、行列Ｐ＾の第ｋ番目の列に格納する。図４では、ｘ＝Ｌ２と置換している。以上の処理をｋ＝Ｌ２になるまで続け、正規直交ベクトルＰ＾１，Ｐ＾２，・・・，Ｐ＾ｘを列ベクトルにもつ行列Ｐ＾を用意する。
【００５２】
また、リライティングに使う照明画像が設定される。照明成分解析部２８は、次に、第２の処理を行う。第２の処理では、まず、設定された照明画像を成分分離して、赤色成分の画像、緑色成分の画像、及び青色成分の画像に分ける。各色の画像を列ベクトル化し、赤照明ベクトルをＰ＾ｒ、緑照明ベクトルをＰ＾ｇ、青照明ベクトルをＰ＾ｂとする。それぞれのベクトルを正規化して単位ベクトルにする。次に、行列Ｐ＾の列と行を入れ替えた転置行列Ｐ＾Ｔを使って、以下（６）〜（８）式の計算により、
【００５３】
【数７】
0006383678.tif 000008
【００５４】
赤照明ベクトルＰ＾ｒとの内積［ｒ１，ｒ２，・・・，ｒｘ］Ｔ、緑照明ベクトルＰ＾ｇとの内積［ｇ１，ｇ２，・・・，ｇｘ］Ｔ、及び青照明ベクトルＰ＾ｂとの内積［ｂ１，ｂ２，・・・，ｂｘ］Ｔを得る。得られた色成分毎の内積の値（ｒｋ，ｇｋ，ｂｋ），ｋ＝１，２，・・・，Ｌ２は、リライティング画像生成部３０で使うため一時的に画像データベース４０に保存される。以上の第２の処理により、行列Ｐ＾の各列ベクトルと各照明ベクトルとの内積を計算することで、リライティング画像の生成に必要な成分を得る。
【００５５】
画像データベース４０は、直交照明生成部２４で生成されたフレーム番号ｆの各々に対応した直交行列Ｐ＾ｋと、カメラ応答観測部２６で生成されたフレーム番号ｆの各々に対応した応答画像と、照明成分解析部２８で計算された色成分毎の内積の値とが記憶されている。
【００５６】
リライティング画像生成部３０は、照明成分解析部２８で分けられた複数の色成分毎に、複数の直交行列Ｐ＾ｋの各々についての、カメラ応答観測部２６によって生成された、直交行列Ｐ＾ｋに対応する正照明画像及び負照明画像の各々に対する当該色成分の応答画像の差分と、照明成分解析部２８によって直交行列Ｐ＾ｋについて計算された当該色成分の内積とに基づいて、当該色成分のリライティング画像を生成する。
【００５７】
ここで、リライティング画像生成部３０におけるリライティング画像の生成の原理について説明する。白色照明の直交照明を使ってカメラ１０により撮影された応答画像が保存されている場合、照明画像をプロジェクタから出力したときに得られるシミュレーション結果を表す各色成分のリライティング画像Ｃ＾ｒ、Ｃ＾ｇ、Ｃ＾ｂは以下（９）〜（１１）式に従って計算される。
【００５８】
【数８】
0006383678.tif 000009
【００５９】
ここで、ｋ番目の正照明画像に対する応答画像Ｃ＾ｋ＋の赤、緑、及び青成分の画像をそれぞれｒ＾ｋ＋、ｇ＾ｋ＋、及びｂ＾ｋ＋とし、負照明画像に対する応答画像Ｃ＾ｋ−の赤、緑、及び青成分の画像をそれぞれｒ＾ｋ−、ｇ＾ｋ−、ｂ＾ｋ−とする。すると、（９）〜（１１）式におけるＣ＾ｒｋ、Ｃ＾ｇｋ、Ｃ＾ｂｋは、それぞれ以下（１２）〜（１４）式により得られる。
【００６０】
【数９】
0006383678.tif 000010
【００６１】
なお、プロジェクタ１２から出力した正照明画像及び負照明画像以外の環境光の成分画像をそれぞれＦ＾ｒ、Ｆ＾ｇ、Ｆ＾ｂとして、カメラ応答観測部２６で得られた背景画像が環境光成分に該当する。例えば、上記（９）〜（１１）式において、内積値ｑｋ（ｑはｒ、ｇ、又はｂのいずれかを表す）がほぼ０の場合、式（９）から式（１１）の計算には全く寄与しないことになるので、内積値ｑｋと応答画像Ｃ＾ｑｋをこのリライティング計算から除外してもよい。
【００６２】
以上の原理に従って、本実施の形態では、リライティング画像生成部３０は、以下の処理を行う。
【００６３】
まず、閾値が設定される（赤、緑、及び青成分ごとに閾値を変更することもできる）。閾値は照明成分解析部２８で算出した各内積値において有効な成分のみを抽出するために設定するパラメータであり、通常はγ＝０．００１以下に設定される。次に、リライティング画像生成部３０は、色成分β毎に、ｋの順番に色成分βの内積値ｑｋ（画像データベース４０に記憶されている色成分βの内積値（β＝ｒであればｒｋ，β＝ｇであればｇｋ，β＝ｂであればｂｋ））を読み込む。ｑｋ＜γの場合はその係数を０と判断して、応答画像Ｃ＾におけるｑ＾ｋ＋及びｑ＾ｋ−を読み込まずに、内積値ｑｋを破棄する。ｑｋ≧γの場合は応答画像Ｃ＾におけるｑｋ＋及びｑｋ−を画像データベース４０から読み込み、上記（１２）〜（１４）式に従って、応答差分Ｃ＾ｑｋを計算する。以上の処理を全てのｋについて行い、上記（９）〜（１１）式に従ってリライティング画像を計算する。そして、計算されたリライティング画像の各成分である赤画像Ｃ＾ｒ、緑画像Ｃ＾ｇ、及び青画像Ｃ＾ｂを、それぞれの画像フォーマットで出力部９０により出力あるいは表示をする。以上の処理によって、図１８に示した状況において、未校正なプロジェクタ・カメラシステムを使って未知の被写体にプロジェクタからの直交照明を投影したとき、それぞれのカメラ応答画像を使って、任意の照明に対するリライティング画像を効率的に生成することができる。
【００６４】
＜本発明の実施の第１の形態に係るリライティング画像生成装置の作用＞
【００６５】
次に、本発明の第１の実施の形態に係るリライティング画像生成装置１００の作用について説明する。まず、同期制御処理ルーチンについて説明する。
【００６６】
図５に示す、ステップＳ１００では、フレーム番号ｆの値を１に初期化する。
【００６７】
次に、ステップＳ１０２では、カメラ応答観測部２６から応答信号を受信したか否かを判定する。応答信号を受信した場合には、ステップＳ１０４へ移行し、応答信号を受信しない場合には、ステップＳ１０２の処理を繰り返す。
【００６８】
ステップＳ１０４では、ステップＳ１００又はステップＳ１０８において取得したフレーム番号ｆを直交照明生成部２４及びカメラ応答観測部２６に送出する。
【００６９】
ステップＳ１０６では、フレーム番号ｆの値が２Ｌ２の値か否かを判定する。フレーム番号ｆの値が２Ｌ２である場合には、同期制御処理ルーチンを終了し、フレーム番号ｆの値が２Ｌ２よりも小さい場合には、ステップＳ１０８へ移行する。
【００７０】
ステップＳ１０８では、フレーム番号ｆの値に１を加えた値をフレーム番号ｆの値として設定し、ステップＳ１０２へ移行して、ステップＳ１０２〜ステップＳ１０６の処理を繰り返す。
【００７１】
次に、図６に示す、直交照明生成処理ルーチンについて説明する。
【００７２】
まず、ステップＳ２００では、プロジェクタ照明で投影する照明対象領域をＮ×Ｎ画素と設定する。
【００７３】
次に、ステップＳ２０２では、上記（３）式の行列積によって直交行列Ｈ＾ｎを算出する。
【００７４】
次に、ステップＳ２０４では、同期制御部２２からフレーム番号ｆを受信したか否かを判定する。フレーム番号ｆを受信した場合には、フレーム番号ｆを取得してステップＳ２０６へ移行し、フレーム番号ｆを受信していない場合には、ステップＳ２０４の処理を繰り返す。
【００７５】
次に、ステップＳ２０６では、ステップＳ２０４において取得したフレーム番号ｆの値が偶数であるか奇数であるかを判定する。フレーム番号ｆが奇数である場合には、ステップＳ２０８へ移行し、フレーム番号ｆが偶数である場合には、ステップＳ２１４へ移行する。
【００７６】
次に、ステップＳ２０８では、ステップＳ２０４において取得したフレーム番号ｆに対応するｋ＝（ｆ＋１）／２を算出して、カウンタｋを設定する。
【００７７】
ステップＳ２１０では、ステップＳ２０８において設定したカウンタｋの値に基づいて、直交行列Ｐ＾ｋを取り出し、取り出した直交行列Ｐ＾ｋから、上記（４）式に従って、行列Ｐ＾ｋ＋を算出する。
【００７８】
ステップＳ２１２では、ステップＳ２１０で算出された行列Ｐ＾ｋ＋に基づいて、正照明画像を生成し、生成した正照明画像をプロジェクタ１２から出力して、カメラ１０で画像を取得する。
【００７９】
次に、ステップＳ２１４では、ステップＳ２０４において取得したフレーム番号ｆに対応するｋ＝ｆ／２を算出して、カウンタｋを設定する。
【００８０】
ステップＳ２１６では、ステップＳ２１４において設定したカウンタｋの値に基づいて、直交行列Ｐ＾ｋを取り出し、取り出した直交行列Ｐ＾ｋから、上記（５）式に従って、行列Ｐ＾ｋ−を算出する。
【００８１】
ステップＳ２１８では、ステップＳ２１０で算出された行列Ｐ＾ｋ−に基づいて、負照明画像を生成し、生成した負照明画像をプロジェクタ１２から出力して、カメラ１０で画像を取得する。
【００８２】
次に、ステップＳ２２０では、ステップＳ２０４において取得したフレーム番号ｆの値が２Ｌ２であるか否かを判定する。フレーム番号ｆの値が２Ｌ２である場合には、直交照明生成処理ルーチンを終了し、フレーム番号ｆの値が２Ｌ２より小さい場合には、ステップＳ２０４へ移行し、ステップＳ２０４〜ステップＳ２２０の処理を繰り返す。
【００８３】
上記ステップＳ２０２の直交行列の算出処理ルーチンについて、図７において詳細に説明する。
【００８４】
図７のステップＳ２２００では、プロジェクタサイズのＮに応じてパラメータｎが設定される。
【００８５】
次に、ステップＳ２２０２では、アダマール行列Ｈ＾ｎを上記（１）式の計算により求める。
【００８６】
ステップＳ２２０４では、ステップＳ２２０２で求めた行列Ｈ＾ｎの符号反転の回数に応じて、左から右へ符号反転の回数が１ずつ増加するように左から右へ列ベクトルを並び替える。
【００８７】
ステップＳ２２０６では、ステップＳ２２０６で並び替えられた列ベクトルに基づいて、上記（２）式の行列Ｗ＾ｎを算出する。
【００８８】
次に、ステップＳ２２０８では、カウンタｉをｉ＝１に初期化する。
【００８９】
ステップＳ２２１０では、カウンタｉの値に基づいて、行列Ｗ＾ｎの第ｉ番目の列ベクトルｈ＾ｉを取り出す。
【００９０】
次に、ステップＳ２２１２では、カウンタｊをｊ＝１に初期化する。
【００９１】
ステップＳ２２１４では、カウンタｊの値に基づいて、行列Ｗ＾ｎの第ｊ番目の列ベクトルｈ＾ｊを取り出す。
【００９２】
ステップＳ２２１６では、ステップＳ２２１０で取り出した列ベクトルｈ＾ｉと、ステップＳ２２１４で取り出した列ベクトルｈ＾ｊに基づいて、上記（３）式の行列積によってＬ×Ｌサイズの直交行列Ｐ＾ｋを算出する。
【００９３】
ステップＳ２２２０では、カウンタｊをｊ＝ｊ＋１とカウントアップする。
【００９４】
ステップＳ２２２２では、ｊがＬより大きいか否かを判定する。ｊがＬより大きければ、ステップＳ２２２４へ移行し、ｊがＬ以下であればステップＳ２２１４へ移行し、ステップＳ２２１４〜ステップＳ２２２２の処理を繰り返す。
【００９５】
ステップＳ２２２４では、カウンタｉをｉ＝ｉ＋１とカウントアップする。
【００９６】
ステップＳ２２２６では、ｉがＬより大きいか否かを判定する。ｉがＬより大きければ、直交行列算出処理ルーチンを終了し、ｉがＬ以下であればステップＳ２２１４へ移行し、ステップＳ２２１４〜ステップＳ２２２６の処理を繰り返す。
【００９７】
次に、図８に示す、カメラ応答観測処理ルーチンについて説明する。
【００９８】
まず、ステップＳ３００では、カメラ１０において観測する範囲をＭ×Ｍ画素の範囲に設定する。
【００９９】
次に、ステップＳ３０２では、カメラ応答に対する所定の閾値を設定する。
【０１００】
次に、ステップＳ３０４では、画像データベース４０に記憶されている背景画像を読み込む。
【０１０１】
次に、ステップＳ３０６では、同期制御部２２へ応答信号を送信する。
【０１０２】
次に、ステップＳ３０８では、同期制御部２２からフレーム番号ｆを受信したか否かを判定する。フレーム番号ｆを受信した場合には、ステップＳ３１０へ移行し、フレーム番号ｆを受信していない場合には、ステップＳ３０８の処理を繰り返す。
【０１０３】
次に、ステップＳ３１０では、カメラ１０の状態をチェックする。
【０１０４】
次に、ステップＳ３１２では、ステップＳ３１０において取得したカメラ１０の状態が、撮影可能状態であるか否かを判定する。カメラ１０が撮影可能状態である場合には、ステップＳ３１４へ移行し、カメラ１０が撮影可能状態でない場合には、ステップＳ３１０へ移行する。
【０１０５】
次に、ステップＳ３１４では、カメラ１０から観測画像を取得する。
【０１０６】
次に、ステップＳ３１６では、ステップＳ３０４において取得した背景画像と、ステップＳ３１４において取得した観測画像との背景差分を取得する。
【０１０７】
次に、ステップＳ３１８では、ステップＳ３０２において取得した閾値と、ステップＳ３１６において取得した背景差分とから、カメラ応答の画素の各々を検出する。
【０１０８】
次に、ステップＳ３２０では、ステップＳ３１８において取得したカメラ応答の画素の各々の輝度値を応答画像として、ステップＳ３０８において取得したフレーム番号ｆと対応づけて画像データベース４０に記憶する。
【０１０９】
次に、ステップＳ３２２では、ステップＳ３０８において取得したフレーム番号ｆの値が２Ｌ２であるか否かを判定する。フレーム番号ｆの値が２Ｌ２である場合には、カメラ応答観測処理ルーチンを終了し、フレーム番号ｆの値が２Ｌ２よりも小さい場合には、ステップＳ３０６へ移行し、ステップＳ３０６〜ステップＳ３２２の処理を繰り返す。
【０１１０】
次に、図９に示す、照明成分解析処理ルーチンについて説明する。
【０１１１】
まず、ステップＳ４００では、カウンタｋをｋ＝１と初期化する。
【０１１２】
次に、ステップＳ４０２では、カウンタｋの値に基づいて、画像データベース４０に記憶されている直交行列Ｐ＾ｋを取り出す。
【０１１３】
ステップＳ４０４では、ステップＳ４０２で取り出した直交行列Ｐ＾ｋから、走査により行列要素を縦方向に並べ替えた列ベクトルを得る。
【０１１４】
ステップＳ４０６では、ステップＳ４０４で得た列ベクトルを正規化する。
【０１１５】
ステップＳ４０８では、ステップＳ４０６で正規化した列ベクトルを行列Ｐ＾の第ｋ番目の列に格納する。
【０１１６】
ステップＳ４１０では、カウンタｋをｋ＝ｋ＋１とカウントアップする。
【０１１７】
ステップＳ４１２では、ｋがＬ２かを判定する。ｋがＬ２であればステップＳ４０２へ移行してステップＳ４０２〜ステップＳ４１２の処理を繰り返し、ｋがＬ２でなければステップＳ４１４へ移行する。
【０１１８】
次に、ステップＳ４１４では、リライティングに使う照明画像が設定される。
【０１１９】
ステップＳ４１６では、ステップＳ４１４で設定された照明画像を成分分離して、赤色成分の画像、緑色成分の画像、及び青色成分の画像に分ける。
【０１２０】
ステップＳ４１８では、ステップＳ４１６で成分分離された各色の画像を列ベクトル化し、赤照明ベクトルをＰ＾ｒ、緑照明ベクトルをＰ＾ｇ、青照明ベクトルをＰ＾ｂとする。
【０１２１】
ステップＳ４２０では、ステップＳ４１８で列ベクトル化したそれぞれのベクトルを正規化して単位ベクトルにする。
【０１２２】
ステップＳ４２２では、ステップＳ４０２〜ステップＳ４１２の処理で得られた行列Ｐ＾の転置行列Ｐ＾Ｔを使って、上記（６）〜（８）式の計算により、ステップＳ４２０で単位ベクトルとした、赤照明ベクトルＰ＾ｒと正規化した列ベクトルとの内積、緑照明ベクトルＰ＾ｇと正規化した列ベクトルとの内積、及び青照明ベクトルＰ＾ｂと正規化した列ベクトルとの内積を得る。
【０１２３】
ステップＳ４２４では、ステップＳ４２２で得られた色成分毎の内積の値を画像データベース４０に保存し、処理を終了する。
【０１２４】
次に、図１０に示す、リライティング画像生成処理ルーチンについて説明する。リライティング画像処理ルーチンは、色成分β毎に実行される。
【０１２５】
まず、ステップＳ５００では、閾値γ及びカウンタｋの初期値（ｋ＝１）が設定される。
【０１２６】
次に、ステップＳ５０２では、ｋに基づいて、色成分βの内積値ｑｋを読み込む。
【０１２７】
ステップＳ５０４では、ｑｋがγより大きいかを判定する。ｑｋがγより大きければ、ステップＳ５０６へ移行し、ｑｋがγ以下であれば、ステップＳ５０８へ移行する。
【０１２８】
ステップＳ５０６では、ステップＳ５０２で読み込んだ内積値ｑｋを破棄してステップＳ５１４へ移行する。
【０１２９】
ステップＳ５０８では、応答画像Ｃ＾におけるｑｋ＋及びｑｋ−を画像データベース４０から読み込む。
【０１３０】
ステップＳ５１０では、ステップＳ５０８で読み込んだ応答画像Ｃ＾におけるｑｋ＋及びｑｋ−を用いて、上記（１２）〜（１４）式に従って、応答差分Ｃ＾ｑｋを計算する。
【０１３１】
ステップＳ５１２では、ステップＳ５１０で計算された応答差分Ｃ＾ｑｋを用いて、上記（９）〜（１１）式の何れかに従って、色成分βのリライティング画像を計算する。
【０１３２】
ステップＳ５１４では、ｋがＬ２であるか否かを判定する。ｋがＬ２であればステップＳ５１８へ移行し、ｋがＬ２でなければステップＳ５１６へ移行する。
【０１３３】
ステップＳ５１６では、カウンタｋをｋ＝ｋ＋１とカウントアップして、ステップＳ５０２へ移行し、ステップＳ５０２〜ステップＳ５１４の処理を繰り返す。
【０１３４】
ステップＳ５１８では、ステップＳ５１２で計算された色成分βのリライティング画像（赤画像Ｃ＾ｒ、緑画像Ｃ＾ｇ、又は青画像Ｃ＾ｂ）を、画像フォーマットで出力部９０により出力あるいは表示をして処理を終了する。
【０１３５】
以上説明したように、第１の実施の形態に係るリライティング画像生成装置によれば、各々が異なる複数の直交行列Ｐ＾ｋに基づいて、直交行列Ｐ＾ｋ毎に、正照明画像及び負照明画像を生成し、プロジェクタから、正照明画像及び負照明画像の各々を出力させ、出力された正照明画像又は負照明画像をカメラにより撮影するように制御し、直交行列Ｐ＾ｋに対する正照明画像及び負照明画像の各々に対して、カメラにより撮影した観測画像から、予め定められた閾値よりも大きい輝度値を有する画素をカメラ応答の画素として検出して応答画像を生成し、直交行列Ｐ＾ｋの各々について、上記（６）〜（８）式により、直交行列Ｐ＾ｋを表す列ベクトルと、与えられた照明画像を表す列ベクトルとの内積を計算し、直交行列Ｐ＾ｋの各々についての、正照明画像及び負照明画像の各々に対する応答画像の差分と、計算された内積とに基づいて、上記（９）〜（１１）式に従って各色成分のリライティング画像Ｃ＾ｒ、Ｃ＾ｇ、Ｃ＾ｂを計算して、リライティング画像を生成することにより、照明画像をプロジェクタから出力したときに得られるシミュレーション結果を表すリライティング画像を精度よく生成することができる。
【０１３６】
＜第２の実施の形態に係るリライティング画像生成装置の概要＞
【０１３７】
まず、第２の実施の形態に係るリライティング画像生成装置２００の概要について説明する。第２の実施の形態では、図２０に示すように、色成分αの照明をプロジェクタから投影し、色成分βのカメラ応答を観測して、ＬＴ行列Ｔ＾を獲得する。ただし、αはプロジェクタのＲＧＢのいずれかの色を指し、βはカメラのＲＧＢのいずれかの色を指し、その組み合わせによりＬＴ行列Ｔ＾αβは９種類ある。本来、赤、緑、及び青のスペクトルは、可視光の波長帯において分布しているため、プロジェクタ・カメラシステムでは、プロジェクタとカメラ間のカラー混合（ｃｏｌｏｒ  ｍｉｘｉｎｇ  あるいはｃｒｏｓｓｔａｌｋ）が発生する。そのため、第２の実施形態は、カラー照明を使って被写体を投影し、カラー混合を考慮したリライティング画像を生成する。
【０１３８】
＜本発明の第２の実施の形態に係るリライティング画像生成装置の構成＞
【０１３９】
次に、本発明の第２の実施の形態に係るリライティング画像生成装置の構成について説明する。図１１に示すように、リライティング画像生成装置２００は、カメラ２１０と、プロジェクタ２１２と、演算部２２０と、出力部９０と、を含んで構成されている。
【０１４０】
カメラ２１０は、プロジェクタ２１２により投影された、正照明画像及び負照明画像に対する赤照明画像、緑照明画像、及び青照明画像の各々を観測し、色値を表すＲＧＢ値を取得し、カメラ応答観測部２２６に出力する。
【０１４１】
プロジェクタ２１２は、正照明画像及び負照明画像に対する赤照明画像、緑照明画像、及び青照明画像の各々を用いて、直交照明生成部２２４による出力指示に従って被写体を投影する。
【０１４２】
演算部２２０は、同期制御部２２２と、直交照明生成部２２４と、カメラ応答観測部２２６と、画像データベース２４０と、リライティング画像生成部２３０とを含んで構成されている。
【０１４３】
同期制御部２２２は、フレーム番号毎に、プロジェクタ１２から、後述する直交照明生成部２４により複数の色成分αの各々に対し、直交行列Ｐ＾ｋ毎に生成された色成分αの正照明画像及び負照明画像を出力させ、出力された正照明画像又は負照明画像をカメラ１０により撮影するように制御する。具体的には、まず、プロジェクタ２１２から投影される特定の照明パターンを表すフレーム番号ｆをｆ＝１に初期化する。次に、カメラ応答観測部２２６からの応答信号を待ち、当該応答信号を受信すると、直交照明生成部２２４と、カメラ応答観測部２２６とへフレーム番号ｆを送出する。フレーム番号ｆを送出することにより、同じフレーム番号においてプロジェクタ２１２からの照明と、カメラの観測との同期をとる。次に、フレーム番号ｆをｆ＝ｆ＋１とカウントアップし、再び、カメラ応答観測部２２６からの応答信号を待つ。以降、プロジェクタ２１２からの照明とカメラ２１０における観測の同期をフレーム番号ｆで同期をとりながら、同様にフレーム番号ｆを直交照明生成部２２４と、カメラ応答観測部２２６とに送出することを繰り返す。そして、直交照明生成部２２４において投影する正照明画像及び負照明画像の全ての照明パターンの数の値２Ｌ２であるフレーム番号ｆを、直交照明生成部２２４とカメラ応答観測部２２６とに送出した時点で、フレーム番号ｆをｆ＝１に初期化する。以降同様に繰り返し処理を行い、さらに、正照明画像及び負照明画像の全ての照明パターンの数の値２Ｌ２であるフレーム番号ｆを直交照明生成部２２４とカメラ応答観測部２２６とに送出した時点で、フレーム番号ｆをｆ＝１に初期化する。また、以降同様に繰り返し処理を行い、次の、フレーム番号ｆの値が２Ｌ２となるフレーム番号ｆを送出した時点で、同期制御部２２２は、繰り返し処理を停止する。
【０１４４】
直交照明生成部２２４は、複数の色成分αの各々に対し、複数の直交行列Ｐ＾ｋに基づいて、直交行列Ｐ＾ｋ毎に、当該色成分αの正照明画像及び負照明画像を生成する。ここで、α＝ｒのとき赤照明、α＝ｇのとき緑照明、α＝ｂのとき青照明を意味する。
【０１４５】
直交照明生成部２２４は、具体的には、同期制御部から受け取ったフレーム番号がｆ＝ｋのとき、上記第１の実施の形態の直交照明生成部２４と同様の処理をして算出した直交行列Ｐ＾ｋ＋及びＰ＾ｋ−を用いて、直交行列の要素１に対応する画素値をＲ＝２５５，Ｇ＝Ｂ＝０に、要素０に対応する画素値をＲ＝Ｇ＝Ｂ＝０に設定した赤照明の正照明画像及び負照明画像を生成する。同期制御部２２からのフレーム番号を受信するたびに、赤色の照明を設定し、全ての照明を投影し終わるまで繰り返す。以上の処理によって。２Ｌ２種類の赤色の正照明画像及び負照明画像をフレーム番号に従って順番にプロジェクタ２１２から投影する。直交照明生成部２２４は、続いて、同期信号のフレーム番号を１にリセットし、緑照明及び青照明について同様の処理を繰り返す。以上のように、直交照明生成部２２４は、赤照明、緑照明、及び青照明の正照明画像及び負照明画像の各々をプロジェクタ２１２から投影する。
【０１４６】
カメラ応答観測部２２６は、複数の色成分α及び複数の直交行列Ｐ＾ｋの組み合わせに対する正照明画像及び負照明画像の各々に対して、カメラ２１０により撮影した観測画像から、複数の色成分β毎に、カメラ応答の画素を検出して色成分βの応答画像を生成する。ここで、β＝ｒのとき赤成分、β＝ｇのとき緑成分、β＝ｂのとき青成分を意味する。
【０１４７】
具体的には、同期制御部２２２からフレーム番号ｆを受信すると、カメラ２１０から赤成分の正照明画像及び負照明画像に対する観測画像を取得する。次に、画像データベース２４０に記憶されているプロジェクタ２１２によるプロジェクタ照明を投影していない状態の観測画像である背景画像を取得し、赤成分に対する観測画像と背景画像との背景差分を処理し、観測画像の各画素のＲＧＢ値の各々に基づいて、Ｒ値の輝度値が予め定められた閾値よりも大きい場合に、当該画素のＲ値を赤成分に対するカメラ応答の赤の画素のＲ値として検出し、Ｇ値の輝度値が予め定められた閾値よりも大きい場合に、当該画素のＧ値を赤成分に対するカメラ応答の緑の画素のＧ値として検出し、Ｂ値の輝度値が予め定められた閾値よりも大きい場合に、当該画素のＢ値を赤成分に対するカメラ応答の青の画素のＢ値として検出する。次に、各色成分βについて、検出された赤成分に対するカメラ応答の当該色成分βの画素の値の各々の輝度値を、赤成分に対する当該色成分βの応答画像として画像データベース２４０に記憶する。なお、カメラ応答観測部２２６の処理は、プロジェクタ２１２から投影される赤成分の正照明画像及び負照明画像を観測したカメラ２１０における赤成分に対するカメラ画像から赤照明に対する各色成分βの応答画像を画像データベース２４０に記憶し、全ての赤成分に対する正照明画像及び負照明画像の各々についての赤成分に対する各色成分βの応答画像を画像データベース２４０に記憶した時点で赤成分に対する処理は、終了する。
【０１４８】
カメラ応答観測部２２６は、２回目のフレーム番号ｆの値が１であるフレーム番号ｆを受信すると、緑成分に対して、上記赤成分に対する処理と同様に、緑成分に対する各色成分βの応答データを画像データベース２４０に記憶し、全ての緑成分に対する正照明画像及び負照明画像の各々についての緑成分に対する各色成分βの応答画像を画像データベース２４０に記憶した時点で緑成分に対する処理は終了する。また、カメラ応答観測部２２６は、３回目のフレーム番号ｆの値が１であるフレーム番号ｆを受信すると、青成分に対して、上記赤成分に対する処理と同様に、青成分に対する各色成分βの応答画像を画像データベース２４０に記憶し、全ての青成分に対する正照明画像及び負照明画像の各々についての青成分に対する各色成分βの応答画像を画像データベース２４０に記憶した時点で青成分に対する処理は終了する。
【０１４９】
照明成分解析部２２８は、与えられた照明画像を、複数の色成分βに分離し、複数の色成分β毎に、複数の直交行列Ｐ＾ｋの各々について、直交行列Ｐ＾ｋを表す列ベクトルと、色成分βの照明画像を表す列ベクトルとの内積を計算する。具体的な処理は、第１の実施の形態の照明成分解析部２８と同様である。
【０１５０】
画像データベース２４０には、直交照明生成部２２４で生成された直交行列Ｐ＾ｋと、カメラ応答観測部２６で生成された赤成分、緑成分、及び青成分の各々に対応する各色成分βの応答画像の各々と、照明成分解析部２８で計算された色成分β毎の内積の値とが記憶されている。
【０１５１】
リライティング画像生成部２３０は、複数の色成分β毎に、複数の直交行列Ｐ＾ｋの各々に対して、カメラ応答観測部２２６によって生成された、色成分α及び直交行列Ｐ＾ｋの組み合わせに対応する正照明画像及び負照明画像の各々に対する色成分βの各々の応答画像の差分と、照明成分解析部２８によって直交行列Ｐ＾ｋについて計算された色成分βの各々の内積とに基づいて、当該色成分βのリライティング画像を生成する。
【０１５２】
ここで、リライティング画像生成部２３０におけるリライティング画像の生成の原理について説明する。カラー照明の直交照明を使ってカメラ応答データを保存する場合、
【０１５３】
【数１０】
0006383678.tif 000011
【０１５４】
を使って、リライティング画像（Ｃ＾ｒ，Ｃ＾ｇ，Ｃ＾ｂ）を算出する。リライティングは暗室で観測したＬＴ行列を使うため、通常は（Ｆ＾ｒ，Ｆ＾ｇ，Ｆ＾ｂ）＝（０，０，０）としても画像生成に支障はない。さらに、任意の照明画像が与えられたとき、上記（６）〜（８）式で得られる赤照明ベクトルＰ＾ｒとの内積［ｒ１，ｒ２，・・・，ｒｘ］Ｔ、緑照明ベクトルＰ＾ｇとの内積［ｇ１，ｇ２，・・・，ｇｘ］Ｔ、及び青照明ベクトルＰ＾ｂとの内積［ｂ１，ｂ２，・・・，ｂｘ］Ｔを、それぞれ
【０１５５】
【数１１】
0006383678.tif 000012
【０１５６】
と置換した。
【０１５７】
また、（１５）式において、ｋ番目の直交行列Ｐ＾ｋに基づく色成分αの正照明画像及び負照明画像の各々に対応するカメラ応答画像の色成分βの成分画像をそれぞれＣ＾αβ＋（ｋ）とＣ＾αβ−（ｋ）とするとき、差分画像Ｃ＾αβ（ｋ）は、
【０１５８】
【数１２】
0006383678.tif 000013
【０１５９】
で与えられる。これをベクトル化するため、Ｍ×Ｍ画素領域について、図１２に示すように、左から右に走査し、右端まで走査した後は１画素上に上がり、また左端に戻り、同様に左から右へ走査する。この走査により画素の並びを縦方向に並べ替える。上記（１５）式のＣ＾αβ（αとβはｒ，ｇ，ｂのいずれかを指す）は、列ベクトルＣ＾αβ（ｋ）が第ｋ番目の列に代入され、
【０１６０】
【数１３】
0006383678.tif 000014
【０１６１】
に従って、全てのｋについて列ベクトルを並べることにより得られる行列である。以上は、カメラ応答観測部２６で生成された、各成分αの照明画像に対応する各色成分βの応答画像の各々に基づいて算出する。なお、上記（１５）式に従ってリライティング画像を生成してもよいが、本処理ではリライティング計算に寄与しない成分を事前に削除することにより、計算用のメモリの使用コストを低減させることができる。例えば、照明成分ｑｋ（ｑ＝ｒ，ｇ，ｂ）がほぼ０の場合は、（１５）式のリライティング計算には全く寄与しないことになる。よって、第１の実施の形態と同様に、照明成分がほぼ０に該当するカメラ応答画像をリライティング計算から除外する。
【０１６２】
以上の原理に従って、本実施の形態では、リライティング画像生成部２３０は、以下の処理を行う。
【０１６３】
まず、閾値が設定される。閾値は照明成分解析部２８で算出した各内積値において有効な成分のみを抽出するために設定するパラメータであり、通常はγ＝０．００１以下に設定される。次に、リライティング画像生成部２３０は、色成分βについて、ｋの順番に、色成分βの内積値ｑｋを読み込む。ｑｋ＜γの場合はその係数を０と判断して、応答画像Ｃ＾αβ＋（ｋ）及びＣ＾αβ−（ｋ）を読み込まずに、内積値ｑｋを破棄する。ｑｋ≧γの場合は応答画像Ｃ＾αβ＋（ｋ）及びＣ＾αβ−（ｋ）を画像データベース２４０から読み込み、上記（１９）式に従って、差分を計算して得た応答画像Ｃ＾αβ（ｋ）を左詰めにして行列Ｃ＾αβに代入する。これを全てのｋについて処理を行い、リライティング計算に寄与しない成分を除去したカメラ応答行列Ｃ＾を得る。これをβ＝ｒ，ｇ，ｂの色成分の順番に処理をして、（１５）式に従って、リライティング画像を計算する。そして、計算されたリライティング画像の各色成分である赤画像Ｃ＾ｒ、緑画像Ｃ＾ｇ、及び青画像Ｃ＾ｂを、それぞれの画像フォーマットで出力部９０により出力あるいは表示をする。以上の処理によって、図２０に示した状況において、未校正なプロジェクタ・カメラシステムを使って未知の被写体にプロジェクタからの直交照明を投影したとき、それぞれのカメラ応答画像を使って、任意の照明に対するリライティング画像を効率的に生成することができる。
【０１６４】
＜本発明の実施の第２の形態に係るリライティング画像生成装置の作用＞
【０１６５】
次に、本発明の第２の実施の形態に係るリライティング画像生成装置２００の作用について説明する。なお、第１の実施の形態のリライティング画像生成装置１００と同一の作用となる箇所については同一符号を付して説明を省略する。
【０１６６】
まず、同期制御処理ルーチンについて説明する。
【０１６７】
図１３に示す、ステップＳ７００では、ステップＳ１００〜ステップＳ１０６までの処理を３回行ったか否かを判定する。ステップＳ１００〜ステップＳ１０６までの処理回数が３回よりも少ない場合、ステップＳ１００へ移行し、ステップＳ１００〜ステップＳ７００までの処理を繰り返す。ステップＳ１００〜ステップＳ１０６までの処理回数が３回である場合には、同期制御処理ルーチンを終了する。
【０１６８】
次に、図１４に示す、直交照明生成処理ルーチンについて説明する。第２の実施の形態においては、赤色成分についての処理から開始されるものとする。
【０１６９】
ステップＳ８０４では、ステップＳ２１０で算出された行列Ｐ＾ｋ＋に基づいて、対象となる色成分αの正照明画像を生成し、生成した正照明画像をプロジェクタ２１２から出力して、カメラ２１０で画像を取得する。
【０１７０】
ステップＳ８１０では、ステップＳ２１６で算出された行列Ｐ＾ｋ−に基づいて、対象となる色成分αの負照明画像を生成し、生成した負照明画像をプロジェクタ２１２から出力して、カメラ２１０で画像を取得する。
【０１７１】
ステップＳ８１２では、全ての色成分αについてステップＳ２０４〜ステップＳ２２０までの処理を終了したか否かを判定する。全ての色成分αについてステップＳ２０４〜ステップＳ２２０までの処理を終了している場合には、直交照明生成処理ルーチンを終了し、全ての色成分αについてステップＳ２０４〜ステップＳ２２０までの処理を終了していない場合には、対象となる色成分αを変更し、ステップＳ２０４へ移行する。なお、対象となる色成分αは、赤色、緑色、青色の順に変更される。
【０１７２】
次に、図１５に示す、カメラ応答観測処理ルーチンについて説明する。第２の実施の形態においては、赤色成分についての処理から開始されるものとする。
【０１７３】
図１５に示す、ステップＳ９００では、カメラ応答に対するＲＧＢ値の各々の所定の閾値を設定する。
【０１７４】
次に、ステップＳ９０２では、ステップＳ３０４において取得した画像と、ステップＳ３１４において取得した観測画像との背景差分を取得する。
【０１７５】
次に、ステップＳ９０４では、ステップＳ３０４において取得した背景画像と、ステップＳ３１４において取得した観測画像との背景差分から、ステップＳ９００において取得した閾値を用いて、ＲＧＢの各色成分βについて、カメラ応答の画素の各々を検出し、当該色成分βの輝度値の各々を取得する。
【０１７６】
次に、ステップＳ９０６では、ＲＧＢの各色成分βについて、ステップＳ９０２において取得したカメラ応答の画素の各々の当該色成分βの輝度値の各々を、当該色成分βの応答データとして、ステップＳ３０８において取得したフレーム番号ｆと対応づけて画像データベース２４０に記憶する。
【０１７７】
ステップＳ９０４では、全ての色成分αについてステップＳ３０６〜ステップＳ３２２までの処理を終了したか否かを判定する。全ての色成分αについてステップＳ３０６〜ステップＳ３２２までの処理を終了している場合には、カメラ応答観測処理ルーチンを終了し、全ての色成分αについてステップＳ３０６〜ステップＳ３２２までの処理を終了していない場合には、対象となる色成分αを変更し、ステップＳ３０６へ移行する。なお、対象となる色成分αは、赤色、緑色、青色の順に変更される。
【０１７８】
第２の実施の形態に係る照明成分解析処理ルーチンについては、第１の実施の形態の照明成分解析処理ルーチンと同様の流れとなるため詳細な説明を省略する。
【０１７９】
次に、上記図１０に示す、第２の実施の形態に係るリライティング画像生成処理ルーチンについて説明する。リライティング画像処理ルーチンは、色成分β毎に実行される。
【０１８０】
第２の実施の形態に係るステップＳ５０８では、各色成分αに対する応答画像Ｃ＾αβ＋（ｋ）及びＣ＾αβ−（ｋ）を画像データベース２４０から読み込む。
【０１８１】
ステップＳ５１０では、ステップＳ５０８で読み込んだ各色成分αに対する応答画像Ｃ＾αβ＋（ｋ）及びＣ＾αβ−（ｋ）を用いて、各色成分αに対して、上記（１９）式に従って、応答差分Ｃ＾αβ（ｋ）を計算する。
【０１８２】
ステップＳ５１２では、ステップＳ５１０で計算された各色成分αに対する応答差分Ｃ＾αβ（ｋ）を用いて、上記（１５）式に従って色成分βのリライティング画像を計算する。
【０１８３】
以上説明したように、第２の実施の形態に係るリライティング画像生成装置によれば、プロジェクタから各色成分の正照明画像及び負照明画像を被写体に投影する場合において、各々が異なる複数の直交行列Ｐ＾ｋに基づいて、直交行列Ｐ＾ｋ毎に、正照明画像及び負照明画像を生成し、プロジェクタから、正照明画像及び負照明画像の各々を出力させ、出力された正照明画像又は負照明画像をカメラにより撮影するように制御し、直交行列Ｐ＾ｋに対する正照明画像及び負照明画像の各々に対して、カメラにより撮影した観測画像から、予め定められた閾値よりも大きい輝度値を有する画素をカメラ応答の画素として検出して応答画像を生成し、直交行列Ｐ＾ｋの各々について、上記（６）〜（８）式により、直交行列Ｐ＾ｋを表す列ベクトルと、与えられた照明画像を表す列ベクトルとの内積を計算し、直交行列Ｐ＾ｋの各々についての、正照明画像及び負照明画像の各々に対する応答画像の差分と、計算された内積とに基づいて、上記（１９）式に従って各色成分のリライティング画像Ｃ＾ｒ、Ｃ＾ｇ、Ｃ＾ｂを計算して、リライティング画像を生成することにより、各色成分の照明画像をプロジェクタから出力したときに得られるシミュレーション結果を表すリライティング画像を精度よく生成することができる。
【０１８４】
＜第３の実施の形態に係るリライティング画像生成装置の概要＞
【０１８５】
まず、第３の実施の形態に係るリライティング画像生成装置の概要について説明する。
【０１８６】
第３の実施の形態においては、Ｎ台のプロジェクタと１台のカメラのマルチプロジェクタ・システムを用いている点が第１の実施の形態と異なる。なお、第１の実施の形態に係るリライティング画像生成装置１００と同様の構成及び作用については、同一の符号を付して説明を省略する。また、プロジェクタが切り替えられた場合、当該切り替え先のプロジェクタについて、第１の実施の形態と同様の処理を行う。
【０１８７】
＜本発明の第３の実施の形態に係るリライティング画像生成装置の構成＞
【０１８８】
次に、本発明の第３の実施の形態に係るリライティング画像生成装置の構成について説明する。図１６に示すように、本発明の第３の実施の形態に係るリライティング画像生成装置３００は、カメラ１０と、Ｎ台のプロジェクタ１２Ａ〜プロジェクタ１２Ｎと、演算部３２０と、出力部９０と、を含んで構成されている。
【０１８９】
カメラ１０は、切替部３３２において切り替えられたプロジェクタ１２Ａ〜プロジェクタ１２Ｎのうちの何れか１つのプロジェクタにより投影された正照明画像及び負照明画像を観測し、明るさを示す濃淡画像を取得し、カメラ応答観測部３２６に出力する。
【０１９０】
演算部３２０は、切替部３３２と、同期制御部３２２と、直交照明生成部３２４と、カメラ応答観測部３２６と、照明成分解析部２８と、画像データベース３４０と、リライティング画像生成部３３０とを含んで構成されている。
【０１９１】
切替部３３２は、同期制御部３２２の切り替え指示により、処理対象となるプロジェクタをプロジェクタ１２Ａ〜プロジェクタ１２Ｎのうちの１つに切り替える。なお、第３の実施の形態においては、１番初めの処理対象のプロジェクタとしてプロジェクタ１２Ａが選択されているものとする。また、第３の実施の形態においては、切替部３３２は、スイッチや分岐装置などを利用する。また、第３の実施の形態においては、終了条件である全てのプロジェクタについて処理が終了するまで、同期制御部３２２の切り替え指示により処理対象となるプロジェクタを切り替える。
【０１９２】
同期制御部３２２は、フレーム番号毎に、切替部３３２において切り替えられたプロジェクタ１２Ａ〜プロジェクタ１２Ｎのうちの１つのプロジェクタから正照明画像又は負照明画像を出力させ、出力された正照明画像又は負照明画像をカメラ１０により撮影するように制御する。また、同期制御部３２２は、フレーム番号ｆの値が、直交照明生成部３２４において投影する全ての照明パターンの数の値２Ｌ２であるフレーム番号ｆを直交照明生成部３２４とカメラ応答観測部３２６とに送出した時点で繰り返し処理を停止し、切替部３３２に処理対象となるプロジェクタを切り替える切り替え指示を出力し、切替部３３２において処理対象となるプロジェクタが切り替えられた後に、フレーム番号ｆの値を１に初期化し、上記処理を繰り返す。
【０１９３】
直交照明生成部３２４は、切替部３３２において切り替えられているプロジェクタ１２Ａ〜プロジェクタ１２Ｎのうちの１つのプロジェクタから投影する正照明画像及び負照明画像を生成する。
【０１９４】
カメラ応答観測部３２６は、カメラ１０において観測した、切替部３３２において切り替えられているプロジェクタ１２Ａ〜プロジェクタ１２Ｎのうちの１つのプロジェクタから投影された正照明画像及び負照明画像に対するカメラ応答を検出し、フレーム番号ｆと対応づけて正照明画像及び負照明画像に対する応答画像を作成し、画像データベース３４０に記憶する。
【０１９５】
画像データベース３４０には、直交照明生成部２４で生成されたフレーム番号ｆの各々に対応した直交行列Ｐ＾ｋと、照明成分解析部２８で計算された色成分β毎の内積の値と、プロジェクタ毎の、カメラ応答観測部２６で生成されたフレーム番号ｆの各々に対応した応答画像と、が記憶されている。
【０１９６】
リライティング画像生成部３３０は、プロジェクタ毎に、第１の実施の形態と同様の処理を行って、リライティング画像を生成する。
【０１９７】
なお、第３の実施の形態に係るリライティング画像生成装置の他の構成及び作用については、第１の実施の形態と同様であるため、説明を省略する。
【０１９８】
以上説明したように、第３の実施の形態に係るリライティング画像生成装置によれば、複数のプロジェクタを用いる場合において、各々が異なる複数の直交行列Ｐ＾ｋに基づいて、直交行列Ｐ＾ｋ毎に、正照明画像及び負照明画像を生成し、何れかのプロジェクタから、正照明画像及び負照明画像の各々を出力させ、出力された正照明画像又は負照明画像をカメラにより撮影するように制御し、直交行列Ｐ＾ｋに対する正照明画像及び負照明画像の各々に対して、カメラにより撮影した観測画像から、予め定められた閾値よりも大きい輝度値を有する画素をカメラ応答の画素として検出して応答画像を生成し、直交行列Ｐ＾ｋの各々について、上記（６）〜（８）式により、直交行列Ｐ＾ｋを表す列ベクトルと、与えられた照明画像を表す列ベクトルとの内積を計算し、直交行列Ｐ＾ｋの各々についての、正照明画像及び負照明画像の各々に対する応答画像の差分と、計算された内積とに基づいて、上記（９）〜（１１）式に従って照明画像を何れかのプロジェクタから出力したときに得られる各色成分のリライティング画像Ｃ＾ｒ、Ｃ＾ｇ、Ｃ＾ｂを計算して、リライティング画像を生成することにより、照明画像をプロジェクタから出力したときに得られるリライティング画像を精度よく生成することができる。
【０１９９】
＜第４の実施の形態に係るリライティング画像生成装置の概要＞
【０２００】
まず、第４の実施の形態に係るリライティング画像生成装置について説明する。
【０２０１】
第４の実施の形態においては、Ｎ台のプロジェクタと１台のカメラのマルチプロジェクタ・システムを用いている点が第２の実施の形態と異なる。なお、第１及び第２の実施の形態に係るリライティング画像生成装置１００及びリライティング画像生成装置２００と同様の構成及び作用については、同一の符号を付して説明を省略する。また、プロジェクタが選択された場合、当該プロジェクタについて、第２の実施の形態と同様の処理を行って、リライティング画像を生成する。
【０２０２】
＜本発明の第４の実施の形態に係るリライティング画像生成装置の構成＞
【０２０３】
次に、本発明の第４の実施の形態に係るリライティング画像生成装置の構成について説明する。図１７に示すように、本発明の第４の実施の形態に係るリライティング画像生成装置４００は、カメラ２１０と、Ｎ台のプロジェクタ２１２Ａ〜プロジェクタ２１２Ｎと、演算部４２０と、出力部９０と、を含んで構成されている。
【０２０４】
カメラ２１０は、切替部４３２において切り替えられたプロジェクタ２１２Ａ〜プロジェクタ２１２Ｎのうちの何れか１つのプロジェクタにより投影された各色成分αの正照明画像及び負照明画像を観測し、色値を表すＲＧＢ値を取得し、カメラ応答観測部４２６に出力する。
【０２０５】
演算部４２０は、切替部４３２と、同期制御部４２２と、直交照明生成部４２４と、カメラ応答観測部４２６と、照明成分解析部２２８と、画像データベース４４０と、リライティング画像生成部４３０とを含んで構成されている。
【０２０６】
切替部４３２は、同期制御部４２２の切り替え指示により、処理対象となるプロジェクタをプロジェクタ２１２Ａ〜プロジェクタ２１２Ｎのうちの１つに切り替える。なお、第４の実施の形態においては、１番初めの処理対象のプロジェクタとしてプロジェクタ２１２Ａが選択されているものとする。また、第４の実施の形態においては、切替部４３２は、スイッチや分岐装置などを利用する。また、第４の実施の形態においては、終了条件である全てのプロジェクタを選択するまで、同期制御部４２２の選択指示により処理対象となるプロジェクタを選択する。
【０２０７】
同期制御部４２２は、フレーム番号毎に、切替部４３２において切り替えられたプロジェクタ２１２Ａ〜プロジェクタ２１２Ｎのうちの１つのプロジェクタから色成分βの正照明画像又は負照明画像を出力させ、出力された色成分βの正照明画像又は負照明画像をカメラ２１０により撮影するように制御する。
【０２０８】
直交照明生成部４２４は、切替部４３２において切り替えられたプロジェクタ２１２Ａ〜プロジェクタ２１２Ｎのうちの１つのプロジェクタから投影する正照明画像及び負照明画像を生成する。
【０２０９】
カメラ応答観測部４２６は、カメラ２１０において観測した、切替部４３２において切り替えられているプロジェクタ２１２Ａ〜プロジェクタ２１２Ｎのうちの１つのプロジェクタから投影された正照明画像及び負照明画像に対するカメラ応答を検出し、フレーム番号ｆの各々と対応づけて正照明画像及び負照明画像に対する応答画像を生成し、画像データベース４４０に記憶する。
【０２１０】
画像データベース４４０には、直交照明生成部４２４で生成された直交行列Ｐ＾ｋと、照明成分解析部２２８で計算された色成分β毎の内積の値と、プロジェクタ毎の、カメラ応答観測部４２６で生成された、赤成分、緑成分、及び青成分の各々に対応する各色成分βの応答画像の各々と、が記憶されている。
【０２１１】
リライティング画像生成部４３０は、プロジェクタ毎に、第２の実施の形態と同様の処理を行って、リライティング画像を生成する。
【０２１２】
なお、第４の実施の形態に係るリライティング画像生成装置の他の構成及び作用については、第２の実施の形態と同様であるため、説明を省略する。
【０２１３】
以上説明したように、第４の実施の形態に係るリライティング画像生成装置によれば、複数のプロジェクタを用いて、各色成分の正照明画像及び負照明画像を被写体に投影する場合において、各々が異なる複数の直交行列Ｐ＾ｋに基づいて、直交行列Ｐ＾ｋ毎に、正照明画像及び負照明画像を生成し、何れかのプロジェクタから、正照明画像及び負照明画像の各々を出力させ、出力された正照明画像又は負照明画像をカメラにより撮影するように制御し、直交行列Ｐ＾ｋに対する正照明画像及び負照明画像の各々に対して、カメラにより撮影した観測画像から、予め定められた閾値よりも大きい輝度値を有する画素をカメラ応答の画素として検出して応答画像を生成し、直交行列Ｐ＾ｋの各々について、上記（６）〜（８）式により、直交行列Ｐ＾ｋを表す列ベクトルと、与えられた照明画像を表す列ベクトルとの内積を計算し、直交行列Ｐ＾ｋの各々についての、正照明画像及び負照明画像の各々に対する応答画像の差分と、計算された内積とに基づいて、上記（１９）式に従って各色成分のリライティング画像Ｃ＾ｒ、Ｃ＾ｇ、Ｃ＾ｂを計算して、リライティング画像を生成することにより、照明画像をプロジェクタから出力したときに得られるリライティング画像を精度よく生成することができる。
【０２１４】
なお、本発明は、上述した実施の形態に限定されるものではなく、この発明の要旨を逸脱しない範囲内で様々な変形や応用が可能である。
【０２１５】
また、本願明細書中において、プログラムが予めインストールされている実施形態として説明したが、当該プログラムを、コンピュータ読み取り可能な記録媒体に格納して提供することも可能であるし、ネットワークを介して提供することも可能である。
【符号の説明】
【０２１６】
１０、２１０  カメラ
１２、２１２  プロジェクタ
２０、２２０、３２０、４４０       演算部
２２、２２２、３２２、４２２       同期制御部
２４、２２４、３２４、４２４       直交照明生成部
２６、２２６、３２６、４２６       カメラ応答観測部
２８、２２８、３２８、４２８       照明成分解析部
３０、２３０、３３０、４３０       リライティング画像生成部
４０、２４０、３４０、４４０       画像データベース
９０   出力部
１００、２００、３００、４００     リライティング画像生成装置
３３２、４３２       切替部
【図１】
0006383678.tif 000015
【図２】
0006383678.tif 000016
【図３】
0006383678.tif 000017
【図４】
0006383678.tif 000018
【図５】
0006383678.tif 000019
【図６】
0006383678.tif 000020
【図７】
0006383678.tif 000021
【図８】
0006383678.tif 000022
【図９】
0006383678.tif 000023
【図１０】
0006383678.tif 000024
【図１１】
0006383678.tif 000025
【図１２】
0006383678.tif 000026
【図１３】
0006383678.tif 000027
【図１４】
0006383678.tif 000028
【図１５】
0006383678.tif 000029
【図１６】
0006383678.tif 000030
【図１７】
0006383678.tif 000031
【図１８】
0006383678.tif 000032
【図１９】
0006383678.tif 000033
【図２０】
0006383678.tif 000034