JP2017183903A - 空間映像再現装置、方法、及びプログラム - Google Patents

空間映像再現装置、方法、及びプログラム Download PDF

Info

Publication number
JP2017183903A
JP2017183903A JP2016065834A JP2016065834A JP2017183903A JP 2017183903 A JP2017183903 A JP 2017183903A JP 2016065834 A JP2016065834 A JP 2016065834A JP 2016065834 A JP2016065834 A JP 2016065834A JP 2017183903 A JP2017183903 A JP 2017183903A
Authority
JP
Japan
Prior art keywords
image
illumination
camera
pixel
matrix
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2016065834A
Other languages
English (en)
Inventor
勲 宮川
Isao Miyagawa
勲 宮川
啓之 新井
Hiroyuki Arai
啓之 新井
哲也 杵渕
Tetsuya Kinebuchi
哲也 杵渕
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nippon Telegraph and Telephone Corp
Original Assignee
Nippon Telegraph and Telephone Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Priority to JP2016065834A priority Critical patent/JP2017183903A/ja
Publication of JP2017183903A publication Critical patent/JP2017183903A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Image Processing (AREA)
  • Transforming Electric Information Into Light Information (AREA)
  • Controls And Circuits For Display Device (AREA)

Abstract

【課題】リライティングを行うためのLT行列を洗練化できる。【解決手段】カメラ応答検出部22が、照明画像を生成し、照明画像をカメラ10により撮影するように制御し、観測画像の各々のカメラ応答の画素を検出する。LTデータ獲得部28が、複数の照明画像と、観測画像毎に検出された照明画像毎のカメラ応答の画素の各々とに基づいて、LT行列を獲得する。LTデータ洗練化部30が、獲得したLT行列と、プロジェクタから洗練化用の照明画像を出力させたときにカメラにより撮影した観測画像とに基づいて、LT行列と、洗練化用の照明画像から得られる照明ベクトルとの積を算出することにより生成したテスト画像を用いて、各画素について、画素値差分を算出し、算出した画素値差分に基づいて、LT行列の画素に対応する行の各要素のうち、非零の要素を更新する。【選択図】図1

Description

本発明は、空間映像再現装置、方法、及びプログラムに係り、特に、プロジェクション・マッピングに関する行列を生成する空間映像再現装置、方法、及びプログラムに関する。
プロジェクタは極めてフレキシブルな画像出力デバイスであり、投影仕様の範囲内であれば個人スペース、会議ホール、巨大パブリックビューイング、及びビルの壁面などに合わせて自由サイズの映像表示を提供する。プロジェクタを使って平面スクリーンではない任意の構造物(以下、被写体と称する)へ投影するとき、被写体の形状を事前に計測して、その形状に合わせて所定画像が空間歪みの無いように投影する技術は、プロジェクション・マッピング(projection mapping)として知られている。任意スケールの映像投影のメリットを活かしたプロジェクション・マッピングは、エンターテインメント志向のイベントやイルミネーションによる広告表示などに利用されている。
プロジェクション・マッピングでは、所定画像を正確に投影するために、目視確認と手動操作によって1画素単位での位置合わせを行う場合がある。これに対して、プロジェクタ投影の状態をカメラによって把握し、所定画像を指定された位置に投影するために、プロジェクタ・カメラシステム(projector-camera system)が利用されている。プロジェクタ・カメラシステムは、プロジェクタとカメラが連動して、カメラからのフィードバック画像に応じて、プロジェクタから投影出力する画像を処理する。通常、平面なスクリーンにプロジェクション・マッピングする場合には、キャリブレーション作業において平面射影変換(plane-homography)を求める。平面射影変換を使うとプロジェクタ画面上の点から幾何的対応点としてカメラ画面上の点を算出することができるため、その対応関係に基づいて所定画像をスクリーン面の決められた場所に投影することができる。もし、空間構造に凹凸があったり曲がった構造である場合には、その空間構造を事前に把握しなければならない。例えば、非特許文献1では、レーザ計測を利用して、被写体の空間構造または凹凸形状を得る。その形状に合わせて所定画像を幾何的に変形させて、あたかも平面スクリーンへの投影に見えるよう指定個所に所定画像を投影する。あるいは、構造光(structured light)と呼ばれる幾何パターンをプロジェクタから投影し、カメラで観測した歪み画像から空間構造の奥行きの凹凸形状を計測する方式も利用できる。このように、従来技術は、レーザ計測またはプロジェクタ・カメラシステムを利用して外界または被写体の空間構造を把握し、奥行きの凹凸形状に合わせて指定個所へ所定画像を投影する。
これに対して、外界の空間構造を計測せずに,ライト・トランスポート(light transport)を利用した映像生成方法が非特許文献1、非特許文献2で公開されている。ライト・トランスポートとは、全てのプロジェクタ画素と全てのカメラ画素間の幾何的・光学的対応関係を表現したデータであり、図12に示すようにプロジェクタ画素の1点1点を順番に点灯させ、その画素からの照明光が光学的反射や屈折によって結び付くカメラ画素を検出することによって得られる。プロジェクタ画面の画素数がp×q画素でカメラ画面の画素数がu×v画素であるとき、各点光源のカメラ応答の画像Cを列ベクトル化して並べた行列Tはuv×pq画素の巨大、かつ、スパースな行列として、ライト・トランスポート行列(light transport matrix)と呼ばれる。ライト・トランスポート行列はプロジェクタ画素と結び付くカメラ画素のRGB 応答値を保有するため,リライティング(relighting)に応用することができる。リライティングとは、実際のプロジェクタとカメラの装置を使わずに、任意の照明の下で被写体がどのようにカメラに映るかを模擬的に可視化する技術である。プロジェクション・マッピングのセットアップでは、臨場感の高い映像演出のために実空間における被写体の照明状態を事前に把握するときにリライティングを役立てることができる。さらに、スタジオ撮影や番組制作などの実環境では、照明を変化させて被写体の映像をチェックする場合がある。照明は映画あるいは番組制作において重要な演出効果があるため、製作者の意図に応じて様々な照明変化が試される。このとき、逐次、被写体に照明を当てて映り具合をチェックすることは面倒な作業であるため、コンピュータグラフィックスではリライティング技術を使って模擬的に被写体に対する照明効果を目視することができる。非特許文献1、非特許文献2では、任意の照明画像を1次元の列ベクトルに再配置したデータを生成し、ライト・トランスポート行列と照明ベクトルの積により瞬時にリライティング画像を得ることが公知となっている。ライト・トランスポートは全てのプロジェクタ画素と全てのカメラ画素間の対応付けることができるため、ライト・トランスポート行列を使えば実環境において照明を当てることなくリアルなリライティングを可能とする。なお、以降では、ライト・トランスポートをLT、ライト・トランスポート行列をLT行列と略する。
関連する技術として、プロジェクタからの照明パターンを利用してLTを計測する技術は非許文献1、非特許文献2に公開されている。非特許文献1の手法はスパース(疎)かつ高次元ランクのLT行列を獲得し、非特許文献2の手法はデンス(蜜)かつ低次元ランクのLT行列を獲得する。
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. J.Wang, Y. Dong, X. Tong, Z. Lin, and B. Guo: "Kernel Nystrom Method for Light Transport",ACM Transactions on Graphics, vol. 28, no. 3, 2009.
LTを利用したリライティングは、LT行列の要素、すなわち、事前に照明パターンを使って計測したLTデータの精度に大きく依存する。LT行列を得る代表的な手段にはbrute-force scanning(BFS)方式があり、図12においてプロジェクタ画素の1点1点を順番に点灯させ、各点光源の照明に応答したカメラ画素を検出する。BFS方式は、原理的に孤立した光源を使うため、3次元形状とその表面の反射特性によっては微弱なカメラ応答を検出する場合がある。さらに、BFS方式でLT行列を獲得する場合、画像雑音の影響を低減するため、ある閾値を設定してその閾値を超えるカメラ応答のみを検出する工夫が施される。このとき、カメラの性能によっては微弱なカメラ応答が画像雑音に埋もれてしまい、的確に検出できない場合もある。LT行列の要素はそのカメラ応答から構成されるため、LT行列と照明ベクトルの積においてリライティング画像生成に影響を与える。近年、圧縮センシング(compressed sensing)を使って効率的にLT行列を獲得する方法も公知であるが、このアプローチもランダム確率で生成した照明パターンを使ってスパースなLT行列を得るため、BFS方式と同様に復元した微弱なカメラ応答によってはリライティング画像生成に影響を与える。
一方、非特許文献2は、プロジェクタの光軸とカメラの光軸を一致させたシステムを使い、プロジェクタからの照明を被写体に光学的に拡散させて得られるカメラ応答からデンスかつ低次元ランクのLT行列を獲得する。このアプローチは低次元ランク近似という原理に従ってLT行列を獲得するため、LT行列を瞬時に獲得するという利点がある。単純パターンの照明や低周波数成分からなる照明パターンを使ったリライティングではリアルな映像再現が期待できるが、自然風景や複雑な模様の照明パターンあるいは高周波数成分からなる照明パターンを使ったリライティングでは、低次元ランクなLT行列との演算において精密かつリアルな映像表現に限界がある。
任意照明を使ったリライティングでは、スパースかつ高次元ランクのLT行列を使うことが有利であるが、精密かつリアルな映像表現を実現するためには、上記で述べたようにLT行列の要素、すなわち、カメラ応答を的確に計測あるいは推定する必要がある。
本発明は、上記問題点を解決するために成されたものであり、リライティングを行うためのLT行列を洗練化できる空間映像再現装置、方法、及びプログラムを提供することを目的とする。
上記目的を達成するために、第1の発明に係る空間映像再現装置は、プロジェクタから照射するための、複数の照明画像を生成し、前記複数の照明画像毎に、前記プロジェクタから照明画像を出力させ、前記出力された照明画像をカメラにより撮影するように制御し、前記照明画像毎に前記カメラにより撮影した観測画像の各々について、予め定められた閾値よりも大きい輝度値を有する画素をカメラ応答の画素として検出するカメラ応答検出部と、前記カメラ応答検出部により生成された前記複数の照明画像と、前記カメラ応答検出部により前記観測画像毎に検出された照明画像毎の前記カメラ応答の画素の各々とに基づいて、プロジェクタ照明の各画素及びカメラ応答の各画素間の対応関係を表すライト・トランスポート行列を獲得するLTデータ獲得部と、前記LTデータ獲得部により獲得した前記ライト・トランスポート行列と、前記プロジェクタから洗練化用の照明画像を出力させたときに前記カメラにより撮影した観測画像とに基づいて、前記ライト・トランスポート行列と、前記洗練化用の照明画像から得られる照明ベクトルとの積を算出することにより生成したテスト画像を用いて、各画素について、前記洗練化用の照明画像を出力させたときの前記観測画像と前記テスト画像との画素値差分を算出し、算出した前記画素値差分に基づいて、前記ライト・トランスポート行列の前記画素に対応する行の各要素のうち、非零の要素を更新するLTデータ洗練化部と、を含んで構成されている。
また、第1の発明に係る空間映像再現装置において、前記LTデータ洗練化部は、前記テスト画像を用いて、各画素について、前記洗練化用の照明画像を出力させたときの前記観測画像と前記テスト画像との画素値差分を算出し、算出した前記画素値差分に基づいて、前記ライト・トランスポート行列の前記画素に対応する行の各要素のうち、非零の要素を更新し、前記更新した前記ライト・トランスポート行列と、前記照明ベクトルとの積を算出してテスト画像を生成することを、前記洗練化用の照明画像を出力させたときの前記観測画像と前記テスト画像との誤差値が予め定めた許容値以下になるまで繰り返すようにしてもよい。
また、第1の発明に係る空間映像再現装置において、前記LTデータ獲得部は、各画素に対し、前記観測画像毎に検出された前記照明画像毎の前記画素のカメラ応答と、前記複数の照明画像とに基づいて、前記ライト・トランスポート行列のうちの前記画素に関する各要素からなるライト・トランスポートベクトルを推定することにより、前記ライト・トランスポート行列を推定するようにしてもよい。
また、第1の発明に係る空間映像再現装置において、前記カメラ応答検出部は、プロジェクタから照射するための、複数の照明画像をランダムに生成し、前記複数の照明画像毎に、前記プロジェクタから照明画像を出力させ、前記出力された照明画像をカメラにより撮影するように制御するようにしてもよい。
また、第1の発明に係る空間映像再現装置において、前記カメラ応答検出部は、プロジェクタから照射するための、予め定められた各々位置が異なる所定幅の縦ライン、又は各々位置が異なる前記所定幅の横ラインの照明画像を生成し、前記照明画像毎に、前記プロジェクタから照明画像を出力させ、前記出力された照明画像をカメラにより撮影するように制御し、前記照明画像毎に前記カメラにより撮影した観測画像の各々について、予め定められた閾値よりも大きい輝度値を有する画素をカメラ応答の画素として検出し、
前記LTデータ獲得部は、前記カメラ応答検出部により生成された前記縦ラインの照明画像の各々と、前記横ラインの照明画像の各々との組み合わせの各々について、前記組み合わせの一方の前記観測画像について検出された前記カメラ応答の画素と、前記組み合わせの他方の前記観測画像について検出されたカメラ応答の画素とにおいて重複する画素の各々の輝度値を表す応答値を行列要素として書き込み、前記書き込んだ行列要素に基づいて、前記ライト・トランスポート行列を獲得するようにしてもよい。
第2の発明に係る空間映像再現方法は、カメラ応答検出部が、プロジェクタから照射するための、複数の照明画像を生成し、前記複数の照明画像毎に、前記プロジェクタから照明画像を出力させ、前記出力された照明画像をカメラにより撮影するように制御し、前記照明画像毎に前記カメラにより撮影した観測画像の各々について、予め定められた閾値よりも大きい輝度値を有する画素をカメラ応答の画素として検出するステップと、LTデータ獲得部が、前記カメラ応答検出部により生成された前記複数の照明画像と、前記カメラ応答検出部により前記観測画像毎に検出された照明画像毎の前記カメラ応答の画素の各々とに基づいて、プロジェクタ照明の各画素及びカメラ応答の各画素間の対応関係を表すライト・トランスポート行列を獲得するステップと、LTデータ洗練化部が、前記LTデータ獲得部により獲得した前記ライト・トランスポート行列と、前記プロジェクタから洗練化用の照明画像を出力させたときに前記カメラにより撮影した観測画像とに基づいて、前記ライト・トランスポート行列と、前記洗練化用の照明画像から得られる照明ベクトルとの積を算出することにより生成したテスト画像を用いて、各画素について、前記洗練化用の照明画像を出力させたときの前記観測画像と前記テスト画像との画素値差分を算出し、算出した前記画素値差分に基づいて、前記ライト・トランスポート行列の前記画素に対応する行の各要素のうち、非零の要素を更新するステップと、を含んで実行することを特徴とする。
また、第2の発明に係る空間映像再現方法において、前記LTデータ洗練化部が更新するステップは、前記テスト画像を用いて、各画素について、前記洗練化用の照明画像を出力させたときの前記観測画像と前記テスト画像との画素値差分を算出し、算出した前記画素値差分に基づいて、前記ライト・トランスポート行列の前記画素に対応する行の各要素のうち、非零の要素を更新し、前記更新した前記ライト・トランスポート行列と、前記照明ベクトルとの積を算出してテスト画像を生成することを、前記洗練化用の照明画像を出力させたときの前記観測画像と前記テスト画像との誤差値が予め定めた許容値以下になるまで繰り返すようにしてもよい。
第3の発明に係るプログラムは、コンピュータを、上記第1の発明に係る空間映像再現装置の各部として機能させるためのプログラムである。
本発明の空間映像再現装置、方法、及びプログラムによれば、獲得したLT行列と、プロジェクタから洗練化用の照明画像を出力させたときにカメラにより撮影した観測画像とに基づいて、LT行列と、洗練化用の照明画像から得られる照明ベクトルとの積を算出することにより生成したテスト画像を用いて、各画素について、画素値差分を算出し、算出した画素値差分に基づいて、LT行列の画素に対応する行の各要素のうち、非零の要素を更新することにより、リライティングを行うためのLT行列を洗練化できる、という効果が得られる。
本発明の第1の実施の形態に係る空間映像再現装置の構成を示すブロック図である。 縦ラインの照明画像と横ラインの照明画像の一例を示す図である。 第1の実施の形態におけるLT行列の書き込みの一例を示す図である。 本発明の第1の実施の形態に係る空間映像再現装置におけるカメラ応答検出処理ルーチンを示すフローチャートである。 本発明の第1の実施の形態に係る空間映像再現装置におけるLTデータ獲得処理ルーチンを示すフローチャートである。 本発明の第1の実施の形態に係る空間映像再現装置におけるLTデータ洗練化処理ルーチンを示すフローチャートである。 本発明の第1の実施の形態に係る空間映像再現装置におけるリライティング生成処理ルーチンを示すフローチャートである。 本発明の第2の実施の形態に係る空間映像再現装置におけるLTデータ獲得処理ルーチンを示すフローチャートである。 本発明の第3の実施の形態に係る空間映像再現装置におけるカメラ応答検出処理ルーチンを示すフローチャートである。 第4の実施の形態におけるLT行列への書き込みの一例を示す図である。 本発明の第7の実施の形態に係る空間映像再現装置の構成を示すブロック図である。 プロジェクタ・カメラシステムと被写体間のライト・トランスポートを得る一例を示す概念図である。
以下、図面を参照して本発明の実施の形態を詳細に説明する。
<本発明の実施の形態に係る概要>
プロジェクタ・カメラシステムの動作を活用したリライティングにおいて、圧縮センシングあるいはスパースかつ高次元ランクのLT行列を獲得する手段に関して、精密かつリアルな映像表現を実現することを目的にLT行列の要素を洗練化することが、本発明の実施の形態において解決しようとする課題である。
<本発明の第1の実施の形態に係る空間映像再現装置の構成>
本発明の第1の実施の形態に係る空間映像再現装置の構成について説明する。図1に示すように、空間映像再現装置100は、カメラ10と、プロジェクタ12と、演算部20と、出力部90と、を含んで構成されている。なお、第1の実施の形態においては、1台のプロジェクタと1台のカメラのプロジェクタ・カメラシステムを用いる。
カメラ10は、プロジェクタ12により投影された照明画像を観測し、明るさを示す濃淡画像を取得し、カメラ応答検出部22に出力する。なお、第1の実施の形態においては、プロジェクタ12から出力する単色照明として、例えば、白色照明を用いる。
プロジェクタ12は、単色照明を用いて、カメラ応答検出部22による出力指示に従って被写体を投影する。
演算部20は、プロジェクタ12からの特定照明パターンを使って被写体からの反射した光をカメラ10で検出するカメラ応答検出部22と、応答データからLTを得るLTデータ獲得部28と、カメラ10から得た観測画像を用いてLTデータを更新するLTデータ洗練化部30と、LTデータを使って任意照明の下でのリライティング画像を生成するリライティング生成部32と、画像DB40とを含んで構成されている。
この構成において、プロジェクタ12、カメラ10は必ずしも構成要素として接続している必要はなく、処理に必要なデータを取得すればよい。また、カメラ応答検出部22、LTデータ獲得部28、LTデータ洗練化部30、リライティング生成部32、及び画像DB40からそれぞれの矢印へのデータの流れは、ハードディスク、RAID装置、CD−ROMなどの記録媒体を利用する、または、ネットワークを介してリモートなデータ資源を利用する形態でもどちらでも構わない。
カメラ応答検出部22は、以下に説明するように、プロジェクタ12から照射するための、予め定められた各々位置が異なる所定幅の縦ライン、又は各々位置が異なる所定幅の横ラインの照明画像を生成し、照明画像毎に、プロジェクタ12から照明画像を出力させ、出力された照明画像をカメラにより撮影するように制御し、照明画像毎にカメラ10により撮影した観測画像の各々について、予め定められた閾値よりも大きい輝度値を有する画素をカメラ応答の画素として検出する。
カメラ応答検出部22では、特定の照明パターンを使って、そのカメラ画素の応答データを検出する。BFSは1点ずつプロジェクタ画素を点灯させてカメラ応答を計測する方式であるため、全てのプロジェクタ画素を処理する時間がかかり、実環境では現実的な手段ではない。そこで、カメラ応答検出部22は、効率的にできるだけ少ないカメラ観測により応答データを獲得する。
カメラ応答検出部22は、具体的には、まず、照明番号に応じて各ライン照明により投影する縦横ラインの照明画像を生成する。説明の便宜上、照明パターンのプロジェクタ画素領域をN×N画素とするが、縦横の画素数は任意である。照明番号はカメラ応答検出部22で自動的に付与する管理番号であり、照明番号に応じて、プロジェクタ12が照明パターンを投影して、カメラ10が画像を観測する動作とする。各ライン照明の動作は照明番号と同期しており、照明番号は1から始まり、照明パターンを生成するたびに1ずつ増加させる。照明番号がf<=Lのとき縦ライン照明を設定し、f>Lのとき横ライン照明を設定する。図2はプロジェクタ画素領域をN×N画素としたときの縦ライン照明画像と横ライン照明画像の例である。縦ライン照明は、n×N画素の大きさをもち、照明番号fにしたがって、左端から右端へ幅nの等間隔で移動する。理想的にはn=1画素が相応しいが、その場合は照明強度が微弱なために十分なカメラ応答が得られないことが想定される。そのような状況を考慮して、例えば、n=4画素に設定する。ただし、nL=N(Lは整数)とし、対象画素領域の縦横サイズNがnの倍数とする。一般的には、nは使用するプロジェクタ、カメラ、あるいは環境に依存するため、システムパラメータとして事前テストにより十分なカメラ応答が得られる範囲でライン幅nを決定してもよい。一方、横ライン照明は、N×n画素の大きさをもち、照明番号fにしたがって、下端から上端へ幅nの等間隔で移動する。縦ライン照明は、f=1ではプロジェクタ画素領域の左端に位置し、f=Lのときプロジェクタ画素領域の右端に位置する。一方、横ライン照明は、f=L+1のときプロジェクタ画素領域の下端に位置し、f=2Lのときプロジェクタ画素領域の上端に位置する。
各ライン照明パターンが生成されるたびに、プロジェクタ12は各ライン照明画像を出力する。続いて、その照明を出力した後に、ある一定時間を空けてカメラ10で観測画像を取得する。システムによってはこの処理が間に合わない場合があることを想定して、プロジェクタ投影とカメラ観測の間の時間にある一定時間を設ける。また、画像内でのM×M画素の範囲とするが、縦横のサイズは任意に設定しても処理内容に変更はない。画像取得後、事前に保有しておいた背景画像との背景差分を処理する。背景画像とは、照明パターンが照明されていない状態、あるいは黒を投影したときの観測画像である。この背景差分において、蛍光灯などの環境光の下では画像雑音が多く混入するため、閾値として例えば10階調に設定しておき、この値より大きい画素をカメラ10の応答画素として検出する。各画素について、閾値以上の画素値であるとき、カメラ応答として検出する。検出した画素について、その画素の2次元座標と共に、カメラ応答の画素値を一次的に保存する(保存形式はテキストデータ形式で十分である)。
L種類の縦ライン照明とL種類の横ライン照明が照明パターンとしてプロジェクタ12から出力されるため、本処理は2L種類のカメラ画像からカメラ応答データを画像DB40に記憶し、全てのカメラ応答データを画像DB40に記憶した時点で本処理を終了する。
画像DB40には、照明画像に対応した応答データの各々と、縦ライン照明画像の各々又は横ライン照明画像の各々とが記憶されている。
LTデータ獲得部28は、以下に説明するように、カメラ応答検出部22により生成された複数の照明画像と、カメラ応答検出部22により観測画像毎に検出された照明画像毎のカメラ応答の画素の各々とに基づいて、プロジェクタ照明の各画素及びカメラ応答の各画素間の対応関係を表すLT行列を獲得する。
LTデータ獲得部28は、カメラ応答検出部22で保存されたカメラ応答データを取り出して、LTデータを抽出してLT行列を構築する。以下では、プロジェクタ画面での対象画素数がN×N画素、カメラ画面での対象画素がM×M画素であるものとするが、縦横のサイズは任意に設定しても処理内容に変更はない。図3に示すように、LTの赤成分(Rの応答値)を記録するためのM×NサイズのLT行列Trr、LTの緑成分(Gの応答値)を記録するためのM×NサイズのLT行列Tgg、LTの青成分(Bの応答値)を記録するためのM×NサイズのLT行列Tbbを確保する。一般的にLT行列は疎行列となり、疎行列の場合は大半の要素が0となることが知られている。扱うプロジェクタ画素またはカメラ画素の大きさによって、LT行列Tが巨大な行列になる場合がある。計算機メモリの過剰な割り当てを回避するため、市販ソフトで使われているスパース行列の形式を利用する。スパース行列の形式とは、0を含む要素を全て削除した行列形式であり、行列要素が非零のときだけ、データをもつコンパクトな行列データ形式である。本発明の実施の形態でのLT行列は、この行列形式に従うものとする。
本実施の形態では、白色照明のパターンからLT行列を獲得するため、いわゆるプロジェクタ・カメラシステム間のカラー混合(color mixture)を考慮しないものとする。この場合、LT行列の行列要素はプロジェクタ画素と結び付くカメラ画素のRGB応答値になる。LTデータ獲得部28における処理フローでは、処理を開始すると、カウンタiをi=1に初期化する。縦ラインの照明に対する応答データは応答データが検出された順番に保存されており、カウンタiはその応答データを処理する指標として使う。カウンタiが設定されると、画像DB40から、縦ライン照明に関する応答データVを取り出す。同様に、カウンタjをj=1に初期化する。横ラインの照明に対する応答データは応答データが検出された順番に保存されており、カウンタjはその応答データを処理する指標として使う。カウンタjが設定されると、画像DB40から、横ライン照明に関する応答データHを取り出す。2つの応答データから、カメラ座標が重複する座標を探す。すなわち、縦ライン照明と横ライン照明の両方に応答したカメラ画素を見つける。両方の照明に応答したカメラ画素が見つかった場合、カメラ応答データ(輝度値)の平均値を計算する。例として、カメラ応答の座標(X,Y)の画素からRGBの応答値(C,C,C)を抽出したとする。図3に示すように、LT行列Trrにおいてカメラ座標(X,Y)とプロジェクタ座標(X,Y)が示す行列要素にRの応答値Cを書き込み、LT行列Tggにおいてカメラ座標(X,Y)とプロジェクタ座標(X,Y)が示す行列要素にGの応答値Cを書き込み、LT行列Tbbにおいてカメラ座標(X,Y)とプロジェクタ座標(X,Y)が示す行列要素にBの応答値Cを書き込む。
上記のLT行列への書き込み処理を、検出した全てのカメラ画素に対して行う。続いて、カウンタjの値が横ライン照明の本数Lと一致しないとき、カウンタjをj←j+1に増加させ、再び、縦ライン照明と横ライン照明に関するカメラ応答データVとHを取り出す。カウンタjの値が横ライン照明の本数Lときは、jをj=1に初期化し、カウンタiをi←i+1に増加させ、再び、縦ライン照明と横ライン照明に関するカメラ応答データVとHを取り出す。これを全ての縦ライン照明に関する応答データと全ての横ライン照明に関する応答データについて、同様の処理を繰り返す。縦ライン照明に関する応答データはL個、横ライン照明に関する応答データはL個あるので、LT行列Cの行方向に各列ベクトルC1、C2、C3、・・・、Cx(x=L)を配置してLT行列Tが構築される。
上記の手法により、プロジェクタ12とカメラ10を使って、プロジェクタ画面の各座標から照明した光線とカメラ画面の各座標の応答を結び付けるLTを効率的に獲得でき、リライティングに使うためのLT行列Trr、Tgg、Tbbをそれぞれ構築することができる。
LTデータ洗練化部30は、以下に説明するように、LTデータ獲得部28により獲得したLT行列と、プロジェクタ12から洗練化用の照明画像を出力させたときにカメラ10により撮影した観測画像とに基づいて、LT行列と、洗練化用の照明画像から得られる照明ベクトルとの積を算出することにより生成したテスト画像を用いて、各画素について、洗練化用の照明画像を出力させたときの観測画像とテスト画像との画素値差分を算出し、算出した画素値差分に基づいて、LT行列の画素に対応する行の各要素のうち、非零の要素を更新する。また、算出した画素値差分に基づいて、LT行列の画素に対応する行の各要素のうち、非零の要素を更新し、更新したLT行列と、照明ベクトルとの積を算出してテスト画像を生成することを、洗練化用の照明画像を出力させたときの観測画像とテスト画像との誤差値が予め定めた許容値以下になるまで繰り返す。
LTデータ洗練化部30では、LTデータ獲得部28で得たLT行列の要素を、カメラ画像を使って更新する処理を行う。データ洗練化部30は、処理を開始すると、N×N画素サイズの洗練化用の照明画像を生成し、プロジェクタ12から洗練化用の照明画像を投影する。本実施の形態では、洗練化用の照明画像の一例として白色画像を用い、各RGB値は(255,255,255)とする。次に、照明画像が投影された被写体を写した観測画像をカメラ10で取得する。
一方、洗練化用の照明画像に相当する照明ベクトルPを設定する。照明ベクトルPはN次元のベクトルとし、全ての要素を1と与える。
続いて、LTデータ獲得部28で得たLT行列Trr、Tgg、Tbbと照明ベクトルPとの積を算出する。行列演算:C=Trr、C=Tgg、C=Tbbにより、Rの応答値に該当するベクトルC、Gの応答値に該当するベクトルC、Bの応答値に該当するベクトルCをそれぞれ得る。各ベクトルから2次元行列へ再配置して、洗練化用の照明(白色照明)に対する被写体のテスト画像を得る。
応答データとして取得した観測画像であるカメラ画像と、生成したテスト画像との誤差値を算出する。例えば、誤差値としてはRGB値それぞれの二乗誤差平均あるいは絶対誤差平均とする。誤差値が所定の値未満であれば、LTデータ洗練化部30の処理の全てを終了する。誤差値が所定の値以上であれば、次に、カメラ画像とテスト画像のそれぞれの対象画素(i,j),(1≦i,j≦M)の画素値を抽出し、その画素値差分を算出する。カメラ画像から抽出した1画素のRGB値が(C(i,j),C(i,j),C(i,j))とし、テスト画像から抽出した1画素のRGB値が(C′′(i,j),C′′(i,j),C′′(i,j))とするとき、画素値差分(ΔR(i,j),ΔG(i,j),ΔB(i,j))は、以下(1)〜(3)式により算出する。
ここで、カメラ画像の座標(i,j)に相当するLT行列の行の要素をチェックする。図3には、LT行列Trr、Tgg、Tbbが示されており、行列の各行はカメラ画像の座標(i,j)に相当するカメラ応答となっている。LT行列Trrの座標(i,j)に相当する行において非零要素の個数がK、LT行列Tggの座標(i,j)に相当する行において非零要素の個数がK、LT行列Tbbの座標(i,j)に相当する行において非零要素の個数がKとする。すなわち、Rの応答値のカメラ座標(i,j)とLTの関係にあるプロジェクタ座標の個数はK、Gの応答値のカメラ座標(i,j)とLTの関係にあるプロジェクタ座標の個数はK、Bの応答値のカメラ座標(i,j)とLTの関係にあるプロジェクタ座標の個数はKである。そこで、各LT行列のカメラ座標(i,j)に相当する行の非零要素だけをそれぞれ以下(4)〜(6)式により更新する。
ただし、γ、γ、γはフィードバックにおけるゲインパラメータであり、誤差値が収束するように、例えば、γ=γ=γ=0.1と与える。
上記の処理を全てのカメラ画素について行い、再び、Trr、Tgg、Tbbと照明ベクトルPとの行列演算によりテスト画像を生成し、カメラ画像とテスト画像間の誤差値が許容値以下になるまで上記の処理を繰り返す。なお、白色照明の投影とカメラ画像の観測は1回行うだけでよい。本処理によってLT行列の要素が洗練化されることにより、白色照明の実画像とテスト画像が一致し、LT行列において十分な明るさを有するLTデータを保有することができる。
リライティング生成部32は、以下に説明するように、LTデータ洗練化部30により更新されたLT行列に基づいて、所定の照明画像に対するリライティングを行ったリライティング画像を生成する。
リライティング生成部32においては、LTデータ洗練化部30で更新したLT行列を使って、リライティング画像を生成する。リライティング生成部32では、処理を開始すると、まず所定の照明画像を設定する。動画の場合は1フレームずつ与えることとする。便宜上、所定の照明画像の画素サイズをN×Nとする。所定の照明画像の全ての画素のRGB値からRの画像、Gの画像、Bの画像に分離する。各画像の2次元画素の配置を1列に並べ替えてベクトル化して、Rの照明画像のベクトルP、Gの照明画像のベクトルP、Bの照明画像のベクトルPを生成する。次に、リライティングの計算において、行列演算:C=Trr、C=Tgg、C=Tbbにより、R照明に該当するベクトルC、G照明に該当するベクトルC、B照明に該当するベクトルCをそれぞれ得る。照明画像をベクトルにしたときの逆の処理を行い、各ベクトルから2次元行列へ再配置して、与えた照明に対するリライティング画像を生成する。これをディスプレイ等の画像出力装置に出力すれば与えた照明の下での観測画像を仮想的に得ることができる。動画の場合、次のフレームを照明画像として設定し、上記の処理を繰り返す。本処理は行列とベクトルの線形演算に基づいているため、リアルタイム処理あるいは動画のフレームに適している。
<本発明の第1の実施の形態に係る空間映像再現装置の作用>
次に、本発明の第1の実施の形態に係る空間映像再現装置100の作用について説明する。まず、図4を参照して、カメラ応答検出処理ルーチンについて説明する。なお、カメラ10において観測する範囲はM×M画素の範囲に設定されている。
まず、ステップS100では、縦横ラインの照明画像を投影する照明対象領域をN×N画素と設定する。
次に、ステップS102では、縦ライン及び横ラインの照明の幅nを設定する。
ステップS104では、照明パターンの番号fの初期値をf=1と設定する。
ステップS106では、照明パターンの番号fの値がLより大きいか否かを判定する。照明パターンfがL以下である場合には、ステップS108へ移行し、fがLより大きい場合には、ステップS110へ移行する。
ステップS108では、縦ライン照明を照射するための照明画像を設定すると共に、画像DB40に記憶する。
ステップS110では、横ライン照明を照射するための照明画像を設定すると共に、画像DB40に記憶する。
ステップS112では、ステップS108又はS110において設定した縦ライン照明画像又は横ライン照明画像をプロジェクタ12から出力する。
ステップS114では、プロジェクタ12により出力された照明画像について、カメラ10から観測画像を取得する。
ステップS116では、画像DB40から取得した背景画像と、ステップS114において取得した観測画像との背景差分を取得する。
ステップS118では、予め設定した閾値と、ステップS116において取得した背景差分とから、カメラ応答の画素の各々を検出する。
ステップS120では、ステップS118において取得したカメラ応答の画素の各々の画素、輝度値、及び当該画素の2次元座標を応答データとして、照明パターンfと対応づけて画像DB40に記憶する。
ステップS122では、照明パターンの番号の値fが2Lであるか否かを判定する。fの値が2Lである場合には、パターン応答検出処理ルーチンを終了し、fの値が2Lより小さい場合には、ステップS124へ移行してf=f+1とし、ステップS106〜ステップS122の処理を繰り返す。
次に、図5に示す、LTデータ獲得処理ルーチンについて説明する。
まず、ステップS200では、カウンタiの値を1に初期化する。
次に、ステップS202では、画像データベース40に記憶されている、i番目の縦ライン照明に対応する応答データVを読み込む。
次に、ステップS204では、カウンタjの値を1に初期化する。
次に、ステップS206では、画像データベース28に記憶されている、j番目の横ライン照明に対応する応答データHを読み込む。
次に、ステップS208では、ステップS202において取得した応答データVと、ステップS206において取得した応答データHとに基づいて、カメラ応答の画素の各々が重複する座標の各々を検出する。
次に、ステップS210では、ステップS208において取得したカメラ応答の画素の各々が重複する座標の各々における、画素の各々について、ステップS202において取得した応答データVと、ステップS206において取得した応答データHとに基づいて、当該画素の輝度値の平均値を計算する。
次に、ステップS214では、ステップS208において取得したカメラ応答の画素の各々が重複する座標の各々と、ステップS210において取得した重複する座標の各々における画素の各々の輝度値の平均値とに基づいて、LT行列への書き込みを行う。具体的には、カメラ応答の座標(X,Y)の画素からRGBの応答値(C,C,C)を抽出したとし、LT行列Trrにおいてカメラ座標(X,Y)とプロジェクタ座標(X,Y)が示す行列要素にRの応答値Cを書き込み、LT行列Tggにおいてカメラ座標(X,Y)とプロジェクタ座標(X,Y)が示す行列要素にGの応答値Cを書き込み、LT行列Tbbにおいてカメラ座標(X,Y)とプロジェクタ座標(X,Y)が示す行列要素にBの応答値Cを書き込む。
次に、ステップS218では、カウンタjの値がLか否かを判定する。カウンタjの値がLである場合には、ステップS222へ移行し、カウンタjの値がLよりも小さい場合には、ステップS220へ移行する。
ステップS220では、カウンタjの値に1を加えた値をカウンタjの値に設定する。
ステップS222では、カウンタiの値がLか否かを判定する。カウンタiの値がLよりも小さい場合には、ステップS224へ移行し、カウンタiの値がLである場合には、LTデータ獲得処理ルーチンを終了する。
ステップS224では、カウンタiの値に1を加えた値をカウンタiの値に設定する。
次に、図6に示す、LTデータ洗練化処理ルーチンについて説明する。
ステップS300では、N×N画素サイズの洗練化用の照明画像を生成し、プロジェクタ12から照明画像を投影する。
ステップS302では、洗練化用の照明画像が投影された被写体を写した観測画像をカメラ10で取得する
ステップS304では、洗練化用の照明画像に相当する照明ベクトルPを設定する。
ステップS306では、LT行列Trr、Tgg、Tbbと照明ベクトルPとの積を算出し、洗練化用の照明(白色照明)に対する被写体のテスト画像を生成する。
ステップS308では、ステップS302で応答データとして取得した観測画像であるカメラ画像と、ステップS306で生成したテスト画像とを用いて、画像間の誤差値を算出する。
ステップS310では、ステップS308で算出した誤差値が、δ未満であるかを判定し、δ未満であればLTデータ洗練化処理ルーチンを終了し、δ未満でなければステップS312へ移行する。
ステップS312では、カメラ画像のカメラ画素から、対象画素(i,j)の画素値を抽出する。
ステップS314では、テスト画像のテスト画素から、対象画素(i,j)の画素値を抽出する。
ステップS316では、ステップS312で抽出したカメラ画像の対象画素(i,j)の画素値と、ステップS314で抽出したテスト画像の対象画素(i,j)の画素値とに基づいて、上記(1)〜(3)式に従って、RGBのそれぞれの画素値差分(ΔR(i,j),ΔG(i,j),ΔB(i,j))を算出する。
ステップS318では、LT行列Trr、Tgg、Tbbそれぞれについて、座標(i,j)に相当する行における非零要素の個数をカウントする。
ステップS320では、LT行列Trr、Tgg、Tbbそれぞれについて、ステップS316で算出した画素値差分と、ステップS318でカウントした非零要素の個数とに基づいて、上記(4)〜(6)式に従って、カメラ座標(i,j)に相当する行の各要素のうち、非零要素を更新する。
ステップS322では、全てのカメラ画素についてステップS312〜S320の処理を終了したかを判定し、全てのカメラ画素について処理を終了していれば、ステップS306へ移行して、ステップS320で更新したLT行列を用いて、再びテスト画像を生成して処理を繰り返す。全てのカメラ画素について処理を終了していなければステップS312へ移行して、次の対象画素を選択して処理を繰り返す。
次に、図7に示す、リライティング生成処理ルーチンについて説明する。
ステップS400では、動画のフレームを選択し、選択したフレームに対応する所定の照明画像を設定する。
ステップS402では、ステップS400で設定した所定の照明画像の全ての画素のRGB値から所定の照明画像のベクトル(Rの照明画像のベクトルP、Gの照明画像のベクトルP、Bの照明画像のベクトルP)を生成する。
ステップS404では、リライティングに必要な行列演算:C=Trr、C=Tgg、C=Tbbにより、R照明に該当するベクトルC、G照明に該当するベクトルC、B照明に該当するベクトルCをそれぞれ計算する。
ステップS406では、ステップS404で計算したC、C、Cの各ベクトルから2次元行列へ再配置して、与えた照明に対するリライティング画像を生成する。
ステップS408では、動画の全てのフレームについて処理を終了したかを判定し、全てのフレームについて処理を終了していなければ、ステップS400に戻って動画の次のフレームを選択して処理を繰り返し、全てのフレームについて処理を終了していればリライティング生成処理ルーチンを終了する。
以上説明したように、第1の実施の形態に係る空間映像再現装置によれば、縦ライン、又は横ラインの照明画像を生成し、出力された照明画像をカメラ10により撮影するように制御し、照明画像毎にカメラ10により撮影した観測画像の各々について、予め定められた閾値よりも大きい輝度値を有する画素をカメラ応答の画素として検出し、生成された複数の照明画像と、観測画像毎に検出された照明画像毎のカメラ応答の画素の各々とに基づいて、LT行列を獲得し、獲得したLT行列と、プロジェクタ12から洗練化用の照明画像を出力させたときにカメラ10により撮影した観測画像とに基づいて、LT行列と、洗練化用の照明画像から得られる照明ベクトルとの積を算出することにより生成したテスト画像を用いて、各画素について、画素値差分を算出し、算出した画素値差分に基づいて、LT行列の画素に対応する行の各要素のうち、非零の要素を更新することにより、リライティングを行うためのLT行列を洗練化できる。
<本発明の第2の実施の形態に係る空間映像再現装置の構成>
次に、本発明の第2の実施の形態に係る空間映像再現装置の構成について説明する。なお、第1の実施の形態と同様となる箇所については同一符号を付して説明を省略する。
第2の実施の形態では、圧縮センシング(compressed sensing)の技術を利用して、カメラ応答検出部で得たカメラ応答データからLT行列の全ての要素を推定するのが主な処理内容である。
上記図1に示すように、第2の実施の形態では、空間映像再現装置100は、第1の実施の形態と同様に、カメラ10と、プロジェクタ12と、演算部20と、出力部90と、を含んで構成されているが、演算部20におけるLTデータ獲得部28の処理が第1の実施の形態と異なっている。
第2の実施の形態におけるLTデータ獲得部28は、以下に説明するように、各画素の各々に対し、観測画像毎に検出された照明画像毎の当該画素のカメラ応答と、複数の照明画像とに基づいて、LT行列のうちの当該画素に関する各要素からなるLTベクトルを推定することにより、LT行列を推定する。
まず、LTデータ獲得部28における圧縮センシングの原理を説明する。未知な被写体への映像投影において、N次元のプロジェクタ照明ベクトルP(N×N画素のプロジェクタ12から投影する照明画像をベクトル化したデータ)が与えられるとプロジェクタ・カメラシステムはM次元のカメラ観測ベクトルをCとする(M×M画素のカメラ観測画像をベクトル化したデータ)と仮定する。一般的に、未校正なプロジェクタ・カメラシステムを使って任意の被写体(被写体は、その3次元形状と反射特性が不明であるとする)へ映像を投影するとき、照明画像とカメラ応答の入出力対応は、M×NのLT行列Tを用いると、以下(7)式で表される。
PはN次元のプロジェクタ照明ベクトル、すなわちN×N画素の照明画像をベクトル化したデータを表し、CはM次元のカメラ観測ベクトル、すなわちM×M画素の観測画像をベクトル化したデータを表す。LT行列Tは、カメラ間の幾何的・光学的対応関係として、プロジェクタの画素から放射された光が被写体に反射したときの直接反射、間接反射を記述する。Fは環境照明に対応するカメラ応答であり、カメラ応答検出部22で用いた背景画像に相当する。なお、暗室環境でプロジェクタ・カメラシステムを用いる場合には、プロジェクタからのブラックオフセット光に反応したカメラ応答が主成分である。
上記(1)式は任意のプロジェクタ照明とカメラ観測のペアについて成り立ち、K種類のプロジェクタ照明{P,P,・・・,P}を用いて、そのカメラ応答{C,C,・・・,C}を観測するとき、以下(8)式を満たす。
プロジェクタ・カメラシステムを用いてLTを獲得することは、ユーザによって設計されたプロジェクタ照明を用いて、そのカメラ応答に基づいて行列Tを推定することを意味する。ここで、事前に黒画像を投影したカメラ応答画像から背景画像を得て、各カメラ応答はその背景差分によりベクトルFが取り除かれているとする。
本実施の形態では、プロジェクタ照明に縦横ラインの照明を照射するための照明画像を用いるため、(8)式ではK=2Lであり、各プロジェクタ照明{P,P,・・・,P}は該当する縦横ラインの照明画像の2次元画素の並びを列に再配置したベクトルとする。一方のカメラ応答データは、カメラ応答検出部22において上記図3のデータ形式で保存されている。上記(8)式のカメラ応答{C,C,・・・,C}は、カメラ応答データの画素座標に基づいて2次元画素の並びを列に再配置したベクトルとする。
(8)式の転置をとると、以下(9)式を得る。
ただし、便宜上、
と置換した(以降では、行列Φをセンシング行列と呼ぶ)。上記(9)式の左辺のK×Mの行列の各列をK次元ベクトルの各々からなる
で表し、上記(9)式の右辺の行列Tの各列をN次元ベクトルの各々からなる
で表すことにより、上記(9)式は、
と書き直すことができる。(11)式から、第j列のK次元ベクトルvは、
となる。LTデータ獲得部28では、vを応答ベクトル、uをLTベクトルと呼ぶことにする。上記(12)式は、N次元のLTベクトルuを入力とし、K×Nの行列の線形変換によってK次元の応答ベクトルvを出力すると解釈することができる。
上記(12)式では、応答ベクトルvは、j番目のカメラ応答の画素におけるK種類の照明画像に対する時系列の応答を表し、未知のLTベクトルuをK種類の照明画像から構成される行列Φに変換することで得られる。一般的に、LT行列Tはスパースな性質をもつため、その行列を構成するLTベクトルuもスパースである。LTデータ獲得部28は、(12)式に基づいてLTベクトルuを求めるために圧縮センシングを利用する。
圧縮センシングとは、lノルム最小化の原理に基づいており、(12)式において、
を満たす解uを求める信号処理手法である。(13)式において、
はlノルムを表し、
はlノルムを表す。圧縮センシングには様々なアルゴリズムが公知であるが、ここでは、実装が容易であり、理論的に収束性の良い、ROMP(Regularized Orthogonal Matching Pursuit)アルゴリズムを利用して解uを求める。圧縮センシングにより、個々のu,j=1,2,・・・,Mについて、MセットのLTベクトル
が得られると、M×NのLT行列Tは、
の配列により求めることができる。
以上の原理に基づいて、LTデータ獲得部28の処理内容を説明する。LTデータ獲得部28が処理を開始すると、まず、上記(10)式に従ってセンシング行列Φを算出する。圧縮センシングを作動させるため、上記(13)式におけるパラメータεを設定する。カメラ応答には雑音が付加されているため、例えば、ε=0.01と与える。次に、画像DB40に格納されたカメラ応答データを逐次読み出して、j番目の応答ベクトルvを生成する。なお、応答ベクトルvはj番目のカメラ応答Cとは異なる。
(9)式、及び(11)式から明らかなように、応答ベクトルvは、K種類の照明画像に対するカメラ応答{C,C,・・・,C}のj番目の要素を取り出してベクトル化したデータである。
画像DB40に格納されたカメラ応答データはrgbの輝度値をもつため、各色の応答データをαチャネルの応答データと呼ぶことにする(α∈{r,g,b})。応答ベクトルvの生成では、画像DB40からカメラ応答データを適宜読み出し、K種類の照明画像に対するカメラ応答データのうちのαチャネルのカメラ応答{C,C,・・・,C}から、j番目の要素のみを取り出して、N次元ベクトルvを生成する。
次に、LTデータ獲得部28は、ROMPアルゴリズムを利用して、上記(13)式を満たすLTベクトルuを復元する。LT行列の構築では、事前にM×Nの行列バッファTαβ,(α=β)を用意しておき、上記(14)式に従って、j番目の行にLTベクトルの転置、すなわち、u を代入する。なお、通常のメモリサイズで用意するのではなく、スパース表現でメモリを確保し、LTベクトルの非零要素のみを代入する。
LTデータ獲得部28は、以上の処理を、rgbチャネルの応答データの全ての画素j=1,2,・・・,Mについて処理すると、rチャネルの応答データから推定したLT行列Trr、gチャネルの応答データから推定したLT行列Tgg、bチャネルの応答データから推定したLT行列Tbbが得られる。そして、LTデータ獲得部28は、これらのLT行列を画像DB40に格納する。
なお、第2の実施の形態に係る空間映像再現装置の他の構成については、第1の実施の形態と同様であるため詳細な説明を省略する。
<本発明の第2の実施の形態に係る空間映像再現装置の作用>
次に、本発明の第2の実施の形態に係る空間映像再現装置100の作用について説明する。
ここでは、第1の実施の形態と異なるLTデータ獲得処理ルーチンについてのみ説明する。
図8に示すように、まず、ステップS500では、照明パターン毎に生成された照明画像に基づいて、上記(10)式に従ってセンシング行列Φを算出する。
次に、ステップS502では、上記(13)式におけるパラメータεを、ε=0.01と設定する。
次に、ステップS504では、カウンタjをj=1に初期化する。
次に、ステップS506では、カウンタjの値に基づいて、カメラ画素のj番目の画素を指定する。
次に、ステップS508では、ステップS506で指定されたj番目の画素について、画像DB40に格納されたカメラ応答データを読み出して、応答ベクトルvを生成する。
次に、ステップS510では、j番目の画素について、ステップS500で算出したセンシング行列Φと、ステップS508で生成した応答ベクトルvとに基づいて、上記(7)式を満たす、LTベクトルuを復元する。
次に、ステップS512では、j番目の画素について、予め用意されたM×Nの行列バッファTαβ,(α=β)に対し、上記(14)式に従って、j番目の行にLTベクトルの転置u を代入し、LT行列を構築し、画像DB40に保存する。
次に、ステップS514では、jがMであるかを判定し、Mであれば、LTデータ獲得処理ルーチンを終了し、MでなければステップS516へ移行する。
次に、ステップS516では、カウンタjをj=j+1とカウントアップして、ステップS506へ移行する。
なお、第2の実施の形態に係る空間映像再現装置の他の作用については、第1の実施の形態と同様であるため詳細な説明を省略する。
<本発明の第3の実施の形態に係る空間映像再現装置の構成>
次に、本発明の第3の実施の形態に係る空間映像再現装置の構成について説明する。なお、第1の実施の形態と同様となる箇所については同一符号を付して説明を省略する。
第3の実施の形態では、ランダムな点光源を用いてLT行列を生成することを主な処理内容とする。
上記図1に示すように、第3の実施の形態では、空間映像再現装置100は、第1の実施の形態と同様に、カメラ10と、プロジェクタ12と、演算部20と、出力部90と、を含んで構成されている。ここで、演算部20におけるカメラ応答検出部22の処理が第1の実施の形態と異なっている。また、LTデータ獲得部28の処理は第2の実施の形態と同様にすればよい。
第3の実施の形態におけるカメラ応答検出部22は、プロジェクタ12から照射するための、複数の照明画像をランダムに生成し、複数の照明画像毎に、プロジェクタ12から照明画像を出力させ、出力された照明画像をカメラ10により撮影するように制御する。以降の画素検出の処理は第1の実施の形態と同様である。説明の便宜上、照明パターンのプロジェクタ画素領域をN×N画素とするが、縦横の画素数は任意である。カメラ応答検出部22の処理では、各点光源の縦横サイズn×nとして、その配置をランダムに変化させた照明パターンを生成する。理想的にはn=1画素が相応しいが、1×1サイズの点光源照明ではその照明強度が微弱なために十分なカメラ応答が得られないことが想定される。そのような状況を考慮して、例えば、各点光源のサイズを4×4画素(n=4)とする。ただし、nL=N(Lは整数)とし、対象画素領域の縦横サイズNがnの倍数とする。
一般的には、点光源のサイズは使用するプロジェクタ、カメラ、あるいは環境に依存するため、システムパラメータとして事前テストにより十分なカメラ応答が得られる範囲で点光源の縦横サイズn×nを決定してもよい。
カメラ応答検出部22では、まず処理を開始すると、照明番号に応じてn×n画素の点光源をランダムに配置した照明パターンを生成する。照明番号は1から始まり、照明パターンを生成するたびに1ずつ増加させる。照明番号に応じて、N×N画素において、各n×nサイズのサブ画素を点灯するか、点灯しないかを一様乱数などを利用して決定する。例えば、一様乱数によって得られる値は0から1の値に分布するので、各n×nに対して一様乱数により値を割り振る。その値が1/2以下の場合は点灯させず、1/2を超える場合は点灯させる(Bernoulli Binary Patternと呼ばれている)。すなわち、点灯させない画素のRGB値は(0,0,0)と与え、点灯させる画素のRGB値は(255,255,255)と与える。これによりほぼ1/2の確率でn×nサイズを点光源としたランダム、かつ、それぞれ異なる照明パターンを生成する。
続いて、発生させた順番に照明パターン(ランダム点照明画像)をプロジェクタ12から出力し、カメラ10で観測画像を取得する。画像内でのM×M画素の範囲とするが、縦横のサイズは任意に設定しても処理内容に変更はない。画像取得後、事前に保有しておいた背景画像との背景差分を処理する。各画素について、特定の閾値以上の画素値であるとき、カメラ応答として検出する。検出した画素について、その画素の2次元座標と共に、カメラ応答の画素値を一次的に保存する(保存形式はテキストデータ形式で十分である)。
カメラ応答検出部22における処理は、ランダム点光源照明を投影して得たカメラ画像からカメラ応答データを保存し、全てのカメラ応答データを保存した時点で、処理を終了する。このカメラ応答データを使って、第2の実施形態で説明したLTデータ獲得部28の処理により、LT行列を構築することができる。
なお、第3の実施の形態に係る空間映像再現装置の他の構成については、第1の実施の形態と同様であるため詳細な説明を省略する。
<本発明の第3の実施の形態に係る空間映像再現装置の作用>
次に、本発明の第3の実施の形態に係る空間映像再現装置100の作用について説明する。
ここでは、第1及び第2の実施の形態と異なるカメラ応答検出処理ルーチンについてのみ説明する。なお、第1の実施の形態と同様となる箇所については同一符号を付して説明を省略する。
図9に示すように、ステップS600では、照明の幅nを設定する。
ステップS602では、一様乱数により値を割り振ることで、ランダム点による照明を照射するための照明画像を設定すると共に、画像DB40に記憶する。
ステップS604では、ステップS602で設定したランダム点による照明画像をプロジェクタ12から出力する。
なお、第3の実施の形態に係る空間映像再現装置の他の作用については、第1の実施の形態と同様であるため詳細な説明を省略する。
以上説明したように、本発明の第3の実施の形態に係る空間映像再現装置によれば、複数の照明画像をランダムに生成し、出力された照明画像をカメラ10により撮影するように制御し、照明画像毎にカメラ10により撮影した観測画像の各々について、予め定められた閾値よりも大きい輝度値を有する画素をカメラ応答の画素として検出し、生成された複数の照明画像と、観測画像毎に検出された照明画像毎のカメラ応答の画素の各々とに基づいて、LT行列を獲得し、獲得したLT行列と、プロジェクタ12から洗練化用の照明画像を出力させたときにカメラ10により撮影した観測画像とに基づいて、LT行列と、洗練化用の照明画像から得られる照明ベクトルとの積を算出することにより生成したテスト画像を用いて、各画素について、画素値差分を算出し、算出した画素値差分に基づいて、LT行列の画素に対応する行の各要素のうち、非零の要素を更新することにより、リライティングを行うためのLT行列を洗練化できる。
<本発明の第4の実施の形態に係る空間映像再現装置の構成>
次に、本発明の第4の実施の形態に係る空間映像再現装置の構成について説明する。なお、第1の実施の形態と同様となる箇所については同一符号を付して説明を省略する。
第4の実施の形態では、カラー照明を使って被写体を投影し、カラー混合を考慮したLT行列を獲得することを主な処理内容とする。本来、赤、緑、及び青のスペクトルは、可視光の波長帯において分布しているため、プロジェクタ・カメラシステムでは、プロジェクタとカメラ間のカラー混合(color mixture あるいはcrosstalk)が発生する。そこで、本実施の形態では、βチャネルからの照明をプロジェクタから投影し、αチャネルのカメラ応答を観測して、LT行列Tαβを獲得する例を挙げる。ここで、βはプロジェクタのRGBのいずれかの色を指し、αはカメラのRGBのいずれかの色を指す。その組み合わせにより、本実施の形態では9種類のLT行列:Tαβ、α,β∈{r、g、b}を獲得する。
上記図1に示すように、第4の実施の形態では、空間映像再現装置100は、第1の実施の形態と同様に、カメラ10と、プロジェクタ12と、演算部20と、出力部90と、を含んで構成されている。
第4の実施の形態に係るカメラ応答検出部22は、以下に説明するように、赤照明、緑照明、青照明のライン照明を設定し、設定した赤照明、緑照明、青照明の順番に、第1の実施の形態と同様に、縦ライン、又は横ラインの照明画像を生成し、照明画像毎に、プロジェクタ12から照明画像を出力させ、出力された照明画像をカメラ10により撮影するように制御し、照明画像毎にカメラ10により撮影した観測画像の各々について、予め定められた閾値よりも大きい輝度値を有する画素をカメラ応答の画素として検出する。
カメラ応答検出部22の処理では、照明番号は1から始まり、照明パターンを生成するたびに1ずつ増加させる。照明番号がf<=Lのとき、縦ラインの赤照明を設定する。あるいは、その番号がf>Lのとき、横ラインの赤照明を設定する。照明番号に応じて縦ラインの赤照明あるいは横ラインの赤照明を設定し、全てのライン照明を投影し終わるまで繰り返す。以上の処理によって、縦横ラインの赤照明を合わせて2L本の赤照明を照明番号に従って順番にプロジェクタ12から投影する。
引き続いて、照明番号を1にリセットし、赤照明と同様に照明パターンを生成するたびに1ずつ増加させる。照明番号がf<=Lのとき縦ラインの緑照明を設定、f>Lのとき横ラインの緑照明を設定する。照明番号に応じて縦ラインの緑照明あるいは横ラインの緑照明を設定し、全てのライン照明を投影し終わるまで繰り返す。以上の処理によって、縦横ラインの緑照明を合わせて2L本の緑照明を照明番号に従って順番にプロジェクタ12から投影する。
続いて、照明番号を1にリセットし、上記と同様に照明パターンを生成するたびに1ずつ増加させる。照明番号がf<=Lのとき縦ラインの青照明を設定、f>Lのとき横ラインの青照明を設定する。照明番号に応じて縦ラインの青照明あるいは横ラインの青照明を設定し、全てのライン照明を投影し終わるまで繰り返す。以上の処理によって、縦横ラインの青照明を合わせて2L本の青照明を照明番号に従って順番にプロジェクタ12から投影する。以上のように、赤照明、緑照明、青照明に応じて2L本ずつを使うため、合計6L本のライン照明を使う。
次に、赤照明、緑照明、青照明の順番に応じて、カメラ10で観測画像を取得する。画像内でのM×M画素の範囲とするが、縦横のサイズは任意に設定しても処理内容に変更はない。画像取得後、事前に保有しておいた背景画像との背景差分を処理する。背景画像とは、照明パターンが照明されていない状態、あるいは黒を投影したときの観測画像である。この背景差分において、蛍光灯などの環境光の下では画像雑音が多く混入するため、閾値として例えば10階調に設定しておき、この値より大きい画素をカメラ10の応答画素として検出する。各画素について、閾値以上の画素値であるとき、カメラ応答として検出する。検出した画素について、その画素の2次元座標と共に、カメラ応答の画素値を一次的に保存する(保存形式はテキストデータ形式で十分である)。
カメラ応答検出部22の処理は、縦横ラインの赤照明、緑照明、青照明を使って、観測されたカメラ画像からそれぞれのカメラ応答データを保存し、全てのカメラ応答データを保存した時点で終了する。
LTデータ獲得部28では、カメラ応答検出部22で保存された赤照明、緑照明、青照明に関するカメラ応答データを取り出して、第1の実施の形態と同様に、LTデータを抽出してLT行列を構築する。本実施の形態では、プロジェクタ画面での対象画素数がN×N画素、カメラ画面での対象画素がM×M画素であるとするが、縦横のサイズは任意に設定しても処理内容に変更はない。以下は、赤照明、緑照明、青照明に関する応答データの順番に処理する。
まず、赤照明に関するカメラ応答データからLT行列を構築する。上記図3に示すように、Rの応答値を記録するためのM×NサイズのLT行列Trr、Gの応答値を記録するためのM×NサイズのLT行列Tgr、Bの応答値を記録するためのM×NサイズのLT行列Tbrを確保する。一般的にLT行列は疎行列となり、疎行列の場合は大半の要素が0となることが知られている。そこで、市販ソフトを使って疎行列のためのメモリ領域を確保して初期化してもよい。本実施の形態の処理は、第1の実施の形態の処理フローと同様に、赤照明、緑照明、青照明の順番に繰り返すため、同じフローに従う。処理を開始すると、カウンタiをi=1に初期化する。赤の縦ラインの照明に対する応答データは応答データが検出された順番に保存されており、カウンタiはその応答データを処理する指標として使う。カウンタiが設定されると、画像DB40から、赤の縦ライン照明に関する応答データVを取り出す。同様に、カウンタjをj=1に初期化する。赤の横ラインの照明に対する応答データは応答データが検出された順番に保存されており、カウンタjはその応答データを処理する指標として使う。カウンタjが設定されると、画像DB40から、赤の横ライン照明に関する応答データHを取り出す。2つの応答データから、カメラ座標が重複する座標を探す。すなわち、赤の縦ライン照明と赤の横ライン照明の両方に応答したカメラ画素を見つける。両方の照明に応答したカメラ画素が見つかった場合、カメラ応答データの平均値を計算する。例として、カメラ応答の座標(X,Y)の画素からRGBの応答値(C,C,C)を抽出したとする。図10に示すように、LT行列Trrにおいてカメラ座標(X,Y)とプロジェクタ座標(X,Y)が示す行列要素にRの応答値Cを書き込み、LT行列Tgrにおいてカメラ座標(X,Y)とプロジェクタ座標(X,Y)が示す行列要素にGの応答値Cを書き込み、LT行列Tbrにおいてカメラ座標(X,Y)とプロジェクタ座標(X,Y)が示す行列要素にBの応答値Cを書き込む。
上記のLT行列への書き込み処理を、検出した全てのカメラ画素に対して行う。続いて、カウンタjの値が横ライン照明の本数Lと一致しないとき、カウンタjをj←j+1に増加させ、再び、赤の縦ライン照明と赤の横ライン照明に関するカメラ応答データVとHを取り出す。カウンタjの値が横ライン照明の本数Lときは、jをj=1に初期化し、カウンタiをi←i+1に増加させ、再び、赤の縦ライン照明と赤の横ライン照明に関するカメラ応答データVとHを取り出す。以上の処理を全ての赤の縦ライン照明に関する応答データと全ての赤の横ライン照明に関する応答データについて、同様の処理を繰り返す。縦ライン照明に関する応答データはL個、横ライン照明に関する応答データはL個あるので、LT行列Cの行方向に各列ベクトルC1、C2、C3、・・・、Cx(x=L)を配置して赤照明に関するLT行列Trr、Tgr、Tbrが構築される。
緑、青についても同様に、緑照明に関するカメラ応答データから、上記の処理に従ってLT行列Trg、Tgg、Tbgが構築され、青照明に関するカメラ応答データから、上記の処理に従ってLT行列Trb、Tgb、Tbbが構築される。
LTデータ洗練化部30は、以下に説明するように、洗練化用の赤色照明画像、緑色照明画像、青色照明画像を順番に使って、第1の実施の形態と同様に、LTデータを洗練化する。
LTデータ洗練化部30では、処理を開始すると、N×N画素サイズの洗練化用の赤色照明画像を生成し、プロジェクタ12から洗練化用の赤色照明画像を投影する。洗練化用の赤色照明画像の各RGB値は(255,0,0)とする。次に、被写体からの観測画像をカメラ10で取得する。一方、洗練化用の赤色照明画像に相当する照明ベクトルPを設定する。照明ベクトルPはN次元のベクトルとし、全ての要素を1と与える。
続いて、LTデータ獲得部28で得たLT行列Trr、Tgr、Tbrと照明ベクトルPとの積を算出する。行列演算:C=TrrP、C=TgrP、C=TbrPにより、赤色照明のRの応答値に該当するベクトルC、赤色照明のGの応答値に該当するベクトルC、赤色照明のBの応答値に該当するベクトルCをそれぞれ得る。各ベクトルから2次元行列へ再配置して、洗練化用の赤色照明に対する被写体のテスト画像を得る。
カメラ画像とテスト画像間において、誤差値を算出する。例えば、誤差値としてはRGB値それぞれの二乗誤差平均あるいは絶対誤差平均とする。誤差値が所定の値未満であれば、赤色照明に関する本処理の全てを終了する。誤差値が所定の値以上であれば、次に、カメラ画像とテスト画像の対象画素(i,j),(1≦i,j≦M)の画素値を抽出し、その画素値差分を算出する。カメラ画像から抽出した1画素のRGB値が(C(i,j),C(i,j),C(i,j))とし、テスト画像から抽出した1画素のRGB値が(C′′(i,j),C′′(i,j),C′′(i,j))とするとき、画素値差分(ΔR(i,j),ΔG(i,j),ΔB(i,j))は、上記(1)〜(3)式により算出する。
ここで、カメラ画像の座標(i,j)に相当するLT行列の行の要素をチェックする。上記図3の行列と同様に、LT行列Trr、Tgr、Tbrの各行はカメラ画像の座標(i,j)に相当するカメラ応答となっている。LT行列Trrの座標(i,j)に相当する行において非零の個数がK、LT行列Tgrの座標(i,j)に相当する行において非零の個数がK、LT行列Tbrの座標(i,j)に相当する行において非零の個数がKとする。各LT行列のカメラ座標(i,j)に相当する行の非零要素のみを、それぞれ上記(4)〜(6)式により更新する。
ただし、γ、γ、γはフィードバックにおけるゲインパラメータであり、誤差値が収束するように、例えば、γ=γ=γ=0.1と与える。
上記の処理を全てのカメラ画素について行い、再び、Trr、Tgr、Tbrと照明ベクトルPとの行列演算によりテスト画像を生成し、カメラ画像とテスト画像間の誤差値が許容値以下になるまで上記の処理を繰り返す。なお、洗練化用の赤色照明の投影とカメラ画像の観測は1回行うだけでよい。
上記の処理によってLT行列の要素が洗練化されることにより、赤色照明の実画像とテストが一致し、LT行列Trr、Tgr、Tbrにおいて十分な明るさを有するLTデータを保有することができる。
同様に、N×N画素サイズの洗練化用の緑色照明画像を生成し、プロジェクタ12から洗練化用の緑色照明画像を投影する。洗練化用の緑色照明画像の各RGB値は(0,255,0)とする。次に、被写体からの観測画像をカメラ10で取得する。一方、洗練化用の緑色照明画像に相当する照明ベクトルPを設定する。照明ベクトルPはN次元のベクトルとし、全ての要素を1と与える。続いて、LTデータ獲得部28で得たLT行列Trg、Tgg、Tbgと照明ベクトルPとの積を算出する。行列演算:C=TrgP、C=TggP、C=TbgPにより、緑色照明のRの応答値に該当するベクトルC、緑色照明のGの応答値に該当するベクトルC、緑色照明のBの応答値に該当するベクトルCをそれぞれ得る。各ベクトルから2次元行列へ再配置して、洗練化用の緑色照明に対する被写体のテスト画像を得る。この処理以降は、上記赤照明と同様の処理により、カメラ画像とテスト画像から算出した誤差値が許容値未満になるまでLT行列の非零更新を繰り返し、LT行列Trg、Tgg、Tbgを洗練化する。
さらに、N×N画素サイズの洗練化用の青色照明画像を生成し、プロジェクタ12から洗練化用の青色照明画像を投影する。洗練化用の青色照明画像の各RGB値は(0,0,255)とする。次に、被写体からの観測画像をカメラ10で取得する。一方、洗練化用の青色照明画像に相当する照明ベクトルPを設定する。照明ベクトルPはN次元のベクトルとし、全ての要素を1と与える。続いて、LTデータ獲得部28で得たLT行列Trb、Tgb、Tbbと照明ベクトルPとの積を算出する。行列演算:C=TrbP、C=TgbP、C=TbbPにより、青色照明のRの応答値に該当するベクトルC、青色照明のGの応答値に該当するベクトルC、青色照明のBの応答値に該当するベクトルCをそれぞれ得る。各ベクトルから2次元行列へ再配置して、洗練化用の青色照明に対する被写体のテスト画像を得る。この処理以降は、上記赤照明と同様の処理により、カメラ画像とテスト画像から算出した誤差値が許容値未満になるまでLT行列の非零要素の更新を繰り返し、LT行列Trb、Tgb、Tbbを洗練化する。
リライティング生成部32は、LTデータ洗練化部30で更新されたLT行列に基づいて、第1の実施の形態と同様に、リライティング画像を生成する。リライティング生成部32では、処理を開始すると、まず所定の照明画像を設定する。動画の場合は1フレームずつ与えることとする。便宜上、所定の照明画像の画素サイズをN×Nとする。所定の照明画像の全ての画素のRGB値からRだけの画像、Gの画像、Bの画像に分離する。各画像の2次元画素の配置を1列に並べ替えてベクトル化して、Rの照明画像のベクトルP、Gの照明画像のベクトルP、Bの照明画像のベクトルPを生成する。次に、赤色照明に関するLT行列Trr、Tgr、Tbrと、緑色照明に関するLT行列Trg、Tgg、Tbg、並びに、青色照明に関するLT行列Trb、Tgb、Tbbを用意する。リライティングの計算において、以下(15)式の行列演算により、各列ベクトル(C,C,C)を算出する。
所定の照明画像をベクトルしたときの逆の処理で各ベクトルから2次元行列へ再配置して、与えた照明に対するリライティング画像を生成する。これをディスプレイ等の画像出力装置に出力すれば与えた照明の下での観測画像を仮想的に得ることができる。動画の場合、次のフレームを照明画像として設定し、上記の処理を繰り返す。本処理は行列とベクトルの線形演算に基づいているため、リアルタイム処理あるいは動画のフレームに適している。以上述べたように、本実施の形態ではプロジェクタ・カメラシステムのカラー混合を考慮したLT行列を使って、よりリアルなリライティング画像を提供することができる。
上記説明した第4の実施の形態に係る空間映像再現装置の作用については、第1の実施の形態における各作用を赤色照明、青色照明、緑色照明の順番でそれぞれ実行すればよい。
なお、第4の実施の形態に係る空間映像再現装置の他の構成及び作用については、第1の実施の形態と同様であるため詳細な説明を省略する。
以上説明したように、本発明の第4の実施の形態に係る空間映像再現装置によれば、赤色照明、青色照明、緑色照明の各々について、縦ライン、又は横ラインの照明画像を生成し、出力された照明画像をカメラ10により撮影するように制御し、照明画像毎にカメラ10により撮影した観測画像の各々について、予め定められた閾値よりも大きい輝度値を有する画素をカメラ応答の画素として検出し、生成された複数の照明画像と、観測画像毎に検出された照明画像毎のカメラ応答の画素の各々とに基づいて、LT行列を獲得し、獲得したLT行列と、プロジェクタ12から洗練化用の照明画像を出力させたときにカメラ10により撮影した観測画像とに基づいて、LT行列と、洗練化用の照明画像から得られる照明ベクトルとの積を算出することにより生成したテスト画像を用いて、各画素について、画素値差分を算出し、算出した画素値差分に基づいて、LT行列の画素に対応する行の各要素のうち、非零の要素を更新することにより、リライティングを行うためのLT行列を洗練化できる。
<本発明の第5の実施の形態に係る空間映像再現装置の構成>
次に、本発明の第5の実施の形態に係る空間映像再現装置について説明する。なお、第4の実施の形態と同様となる箇所については同一符号を付して説明を省略する。
第5の実施の形態は、第4の実施の形態のLT行列Tαβ、α,β∈{r、g、b}を獲得するための各部の処理において、LTデータ獲得部28は、第2の実施の形態で説明したLTデータ獲得部28の処理に従う構成としたものである。なお、第5の実施の形態の他の構成は第4の実施の形態と同様であるため説明を省略する。
<本発明の第6の実施の形態に係る空間映像再現装置の構成>
次に、本発明の第6の実施の形態に係る空間映像再現装置について説明する。なお、第4の実施の形態と同様となる箇所については同一符号を付して説明を省略する。
第6の実施の形態は、第4の実施の形態のLT行列Tαβ、α,β∈{r、g、b}を獲得するための各部の処理において、カメラ応答検出部22は、第3の実施の形態で説明したカメラ応答検出部22の処理に従う構成としたものである。なお、第6の実施の形態の他の構成は第4の実施の形態と同様であるため説明を省略する。
<本発明の第7の実施の形態に係る空間映像再現装置の構成>
次に、本発明の第7の実施の形態に係る空間映像再現装置の構成について説明する。第7の実施の形態においては、N台のプロジェクタと1台のカメラのマルチプロジェクタ・システムを用いている点が第1の実施の形態と異なる。なお、第1の実施の形態に係る空間映像再現装置100と同様の構成及び作用については、同一の符号を付して説明を省略する。また、プロジェクタが切り替えられた場合、当該切り替え先のプロジェクタについて、第1の実施の形態と同様の処理を行う。
図11に示すように、本発明の第7の実施の形態に係る空間映像再現装置300は、カメラ10と、N台のプロジェクタ12A〜プロジェクタ12Nと、演算部320と、出力部90と、を含んで構成されている。
カメラ10は、切替部342において切り替えられたプロジェクタ12A〜プロジェクタ12Nのうちの何れか1つのプロジェクタにより投影された照明画像を観測し、明るさを示す濃淡画像を取得し、カメラ応答検出部322に出力する。
演算部320は、切替部342と、カメラ応答検出部322と、LTデータ獲得部328と、LTデータ洗練化部330と、リライティング生成部332と、画像DB340とを含んで構成されている。
切替部342は、カメラ応答検出部322の切り替え指示により、処理対象となるプロジェクタをプロジェクタ12A〜プロジェクタ12Nのうちの1つに切り替える。なお、第7の実施の形態においては、1番初めの処理対象のプロジェクタとしてプロジェクタ12Aが選択されているものとする。また、第7の実施の形態においては、切替部342は、スイッチや分岐装置などを利用する。また、第7の実施の形態においては、終了条件である全てのプロジェクタについて処理が終了するまで、カメラ応答検出部322の切り替え指示により処理対象となるプロジェクタを切り替える。
カメラ応答検出部322は、照明画像毎に、切替部342において切り替えられたプロジェクタ12A〜プロジェクタ12Nのうちの1つのプロジェクタから照明を照射させ、照射された照明をカメラ10により撮影するように制御し、照明画像毎にカメラ10により撮影した観測画像の各々について、予め定められた閾値よりも大きい輝度値を有する画素をカメラ応答の画素として検出する。また、照明画像の数が、投影する全ての照明画像の数の値2Lである照明画像を送出した時点で繰り返し処理を停止し、切替部342に処理対象となるプロジェクタを切り替える切り替え指示を出力し、切替部342において処理対象となるプロジェクタが切り替えられた後に、照明画像の数を1に初期化し、上記処理を繰り返す。
また、カメラ応答検出部322は、切替部342において切り替えられているプロジェクタ12A〜プロジェクタ12Nのうちの1つのプロジェクタから投影する照明画面を生成し、カメラ10において観測した、切替部342において切り替えられているプロジェクタ12A〜プロジェクタ12Nのうちの1つのプロジェクタから投影された照明光に対するカメラ応答を検出し、照明画像と対応づけて当該照明光についての応答データを作成し、画像DB340に記憶する。
画像DB340には、プロジェクタ毎の、照明画像に対応した応答データの各々と、縦ライン照明画像の各々又は横ライン照明画像の各々とが記憶されている。
LTデータ獲得部328は、プロジェクタ毎に、第1の実施の形態と同様の処理を行って、LTベクトルを推定することにより、LT行列を獲得する。
LTデータ洗練化部330は、プロジェクタ毎に、第1の実施の形態と同様の処理を行って、テスト画像を用いて、各画素について、洗練化用の照明画像を出力させたときの観測画像とテスト画像との画素値差分を算出し、算出した画素値差分に基づいて、LT行列の画素に対応する行の各要素のうち、非零の要素を更新する。
リライティング生成部332は、プロジェクタ毎に、第1の実施の形態と同様の処理を行って、リライティング画像を生成する。
また、第7の実施の形態では、カメラ応答検出部322、LTデータ獲得部328、LTデータ洗練化部330、リライティング生成部332の各部において、第1の実施の形態と同様の処理を行う場合を例に説明したが、これに限定されるものではなく、白色照明を使ってLT行列を獲得する場合には、第2、第3の実施の形態と同様に、カメラ応答検出部322、LTデータ獲得部328、LTデータ洗練化部330、リライティング生成部332の各部を処理すればよく、赤色照明、緑色照明、青色照明を使ってLT行列を獲得する場合には、第4〜第6の実施の形態と同様に、カメラ応答検出部322、LTデータ獲得部328、LTデータ洗練化部330、リライティング生成部332の各部を処理するようにすればよい。
なお、第7の実施の形態に係る空間映像再現装置の他の構成及び作用については、第1の実施の形態と同様であるため、説明を省略する。
以上説明したように、本発明の第7の実施の形態に係る空間映像再現装置によれば、プロジェクタ毎に、縦ライン、又は横ラインの照明画像を生成し、出力された照明画像をカメラ10により撮影するように制御し、照明画像毎にカメラ10により撮影した観測画像の各々について、予め定められた閾値よりも大きい輝度値を有する画素をカメラ応答の画素として検出し、生成された複数の照明画像と、観測画像毎に検出された照明画像毎のカメラ応答の画素の各々とに基づいて、LT行列を獲得し、獲得したLT行列と、プロジェクタ12A〜12Nのいずれか一つのプロジェクタから洗練化用の照明画像を出力させたときにカメラ10により撮影した観測画像とに基づいて、LT行列と、洗練化用の照明画像から得られる照明ベクトルとの積を算出することにより生成したテスト画像を用いて、各画素について、画素値差分を算出し、算出した画素値差分に基づいて、LT行列の画素に対応する行の各要素のうち、非零の要素を更新することにより、リライティングを行うためのLT行列を洗練化できる。
なお、本発明は、上述した実施の形態に限定されるものではなく、この発明の要旨を逸脱しない範囲内で様々な変形や応用が可能である。
また、本願明細書中において、プログラムが予めインストールされている実施形態として説明したが、当該プログラムを、コンピュータ読み取り可能な記録媒体に格納して提供することも可能であるし、ネットワークを介して提供することも可能である。
また、本発明の実施の形態に係る手法によれば、被写体の3次元構造やその表面の反射特性を必要とせずに、プロジェクタ・カメラシステムを使って得たLTに基づき、任意照明を与えたときの被写体のリライティングを可能とする。リライティングはLT行列と照明ベクトルの積から実現できるためリアルタイム処理に適しており、映画製作あるいは番組制作などのコンピュータグラフィックス、さらには実環境とのリアルな仮想現実感(virtual reality)や拡張現実感(augmented reality)を生み出すことができる。
10 カメラ
12、12A〜N プロジェクタ
20、320 演算部
22 カメラ応答検出部
28 画像データベース
28、328 LTデータ獲得部
30、330 データ洗練化部
32、332 リライティング生成部
40、340 画像データベース
90 出力部
100、300 空間映像再現装置
342 切替部

Claims (8)

  1. プロジェクタから照射するための、複数の照明画像を生成し、前記複数の照明画像毎に、前記プロジェクタから照明画像を出力させ、前記出力された照明画像をカメラにより撮影するように制御し、前記照明画像毎に前記カメラにより撮影した観測画像の各々について、予め定められた閾値よりも大きい輝度値を有する画素をカメラ応答の画素として検出するカメラ応答検出部と、
    前記カメラ応答検出部により生成された前記複数の照明画像と、前記カメラ応答検出部により前記観測画像毎に検出された照明画像毎の前記カメラ応答の画素の各々とに基づいて、プロジェクタ照明の各画素及びカメラ応答の各画素間の対応関係を表すライト・トランスポート行列を獲得するLTデータ獲得部と、
    前記LTデータ獲得部により獲得した前記ライト・トランスポート行列と、前記プロジェクタから洗練化用の照明画像を出力させたときに前記カメラにより撮影した観測画像とに基づいて、前記ライト・トランスポート行列と、前記洗練化用の照明画像から得られる照明ベクトルとの積を算出することにより生成したテスト画像を用いて、各画素について、前記洗練化用の照明画像を出力させたときの前記観測画像と前記テスト画像との画素値差分を算出し、算出した前記画素値差分に基づいて、前記ライト・トランスポート行列の前記画素に対応する行の各要素のうち、非零の要素を更新するLTデータ洗練化部と、
    を含む空間映像再現装置。
  2. 前記LTデータ洗練化部は、前記テスト画像を用いて、各画素について、前記洗練化用の照明画像を出力させたときの前記観測画像と前記テスト画像との画素値差分を算出し、算出した前記画素値差分に基づいて、前記ライト・トランスポート行列の前記画素に対応する行の各要素のうち、非零の要素を更新し、前記更新した前記ライト・トランスポート行列と、前記照明ベクトルとの積を算出してテスト画像を生成することを、前記洗練化用の照明画像を出力させたときの前記観測画像と前記テスト画像との誤差値が予め定めた許容値以下になるまで繰り返す請求項1に記載の空間映像再現装置。
  3. 前記LTデータ獲得部は、各画素に対し、前記観測画像毎に検出された前記照明画像毎の前記画素のカメラ応答と、前記複数の照明画像とに基づいて、前記ライト・トランスポート行列のうちの前記画素に関する各要素からなるライト・トランスポートベクトルを推定することにより、前記ライト・トランスポート行列を推定する請求項1又は請求項2に記載の空間映像再現装置。
  4. 前記カメラ応答検出部は、プロジェクタから照射するための、複数の照明画像をランダムに生成し、前記複数の照明画像毎に、前記プロジェクタから照明画像を出力させ、前記出力された照明画像をカメラにより撮影するように制御する請求項1〜請求項3の何れか1項に記載の空間映像再現装置。
  5. 前記カメラ応答検出部は、プロジェクタから照射するための、予め定められた各々位置が異なる所定幅の縦ライン、又は各々位置が異なる前記所定幅の横ラインの照明画像を生成し、前記照明画像毎に、前記プロジェクタから照明画像を出力させ、前記出力された照明画像をカメラにより撮影するように制御し、前記照明画像毎に前記カメラにより撮影した観測画像の各々について、予め定められた閾値よりも大きい輝度値を有する画素をカメラ応答の画素として検出し、
    前記LTデータ獲得部は、前記カメラ応答検出部により生成された前記縦ラインの照明画像の各々と、前記横ラインの照明画像の各々との組み合わせの各々について、前記組み合わせの一方の前記観測画像について検出された前記カメラ応答の画素と、前記組み合わせの他方の前記観測画像について検出されたカメラ応答の画素とにおいて重複する画素の各々の輝度値を表す応答値を行列要素として書き込み、前記書き込んだ行列要素に基づいて、前記ライト・トランスポート行列を獲得する請求項1又は請求項2に記載の空間映像再現装置。
  6. カメラ応答検出部が、プロジェクタから照射するための、複数の照明画像を生成し、前記複数の照明画像毎に、前記プロジェクタから照明画像を出力させ、前記出力された照明画像をカメラにより撮影するように制御し、前記照明画像毎に前記カメラにより撮影した観測画像の各々について、予め定められた閾値よりも大きい輝度値を有する画素をカメラ応答の画素として検出するステップと、
    LTデータ獲得部が、前記カメラ応答検出部により生成された前記複数の照明画像と、前記カメラ応答検出部により前記観測画像毎に検出された照明画像毎の前記カメラ応答の画素の各々とに基づいて、プロジェクタ照明の各画素及びカメラ応答の各画素間の対応関係を表すライト・トランスポート行列を獲得するステップと、
    LTデータ洗練化部が、前記LTデータ獲得部により獲得した前記ライト・トランスポート行列と、前記プロジェクタから洗練化用の照明画像を出力させたときに前記カメラにより撮影した観測画像とに基づいて、前記ライト・トランスポート行列と、前記洗練化用の照明画像から得られる照明ベクトルとの積を算出することにより生成したテスト画像を用いて、各画素について、前記洗練化用の照明画像を出力させたときの前記観測画像と前記テスト画像との画素値差分を算出し、算出した前記画素値差分に基づいて、前記ライト・トランスポート行列の前記画素に対応する行の各要素のうち、非零の要素を更新するステップと、
    を含む空間映像再現方法。
  7. 前記LTデータ洗練化部が更新するステップは、前記テスト画像を用いて、各画素について、前記洗練化用の照明画像を出力させたときの前記観測画像と前記テスト画像との画素値差分を算出し、算出した前記画素値差分に基づいて、前記ライト・トランスポート行列の前記画素に対応する行の各要素のうち、非零の要素を更新し、前記更新した前記ライト・トランスポート行列と、前記照明ベクトルとの積を算出してテスト画像を生成することを、前記洗練化用の照明画像を出力させたときの前記観測画像と前記テスト画像との誤差値が予め定めた許容値以下になるまで繰り返す請求項6に記載の空間映像再現方法。
  8. コンピュータを、請求項1〜請求項5のいずれか1項に記載の空間映像再現装置の各部として機能させるためのプログラム。
JP2016065834A 2016-03-29 2016-03-29 空間映像再現装置、方法、及びプログラム Pending JP2017183903A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2016065834A JP2017183903A (ja) 2016-03-29 2016-03-29 空間映像再現装置、方法、及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016065834A JP2017183903A (ja) 2016-03-29 2016-03-29 空間映像再現装置、方法、及びプログラム

Publications (1)

Publication Number Publication Date
JP2017183903A true JP2017183903A (ja) 2017-10-05

Family

ID=60007700

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016065834A Pending JP2017183903A (ja) 2016-03-29 2016-03-29 空間映像再現装置、方法、及びプログラム

Country Status (1)

Country Link
JP (1) JP2017183903A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111159451A (zh) * 2019-12-18 2020-05-15 广州地理研究所 一种基于空间数据库的电力线路点云动态单体化方法
WO2022208613A1 (ja) 2021-03-29 2022-10-06 日本電気株式会社 情報処理装置、情報処理システム、情報処理方法、プログラム

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111159451A (zh) * 2019-12-18 2020-05-15 广州地理研究所 一种基于空间数据库的电力线路点云动态单体化方法
WO2022208613A1 (ja) 2021-03-29 2022-10-06 日本電気株式会社 情報処理装置、情報処理システム、情報処理方法、プログラム

Similar Documents

Publication Publication Date Title
US20180376116A1 (en) Method and system for projector calibration
US8106949B2 (en) Small memory footprint light transport matrix capture
US8042954B2 (en) Mosaicing of view projections
US8189957B2 (en) View projection for dynamic configurations
US8310525B2 (en) One-touch projector alignment for 3D stereo display
US8508615B2 (en) View projection matrix based high performance low latency display pipeline
US10750141B2 (en) Automatic calibration projection system and method
US20100245684A1 (en) Resolution Scalable View Projection
US9047514B2 (en) Apparatus, system and method for projecting images onto predefined portions of objects
JP6126519B2 (ja) 空間投影装置、空間投影方法、空間投影プログラム及び記録媒体
JP2017183903A (ja) 空間映像再現装置、方法、及びプログラム
JP5973368B2 (ja) 空間投影装置、空間投影方法及び空間投影プログラム
JP2008171431A (ja) 基準行列の推定逆行列を生成する方法、第2のプロジェクタからの第2の投影画像を用いて第1のプロジェクタからの第1の投影画像をシミュレートする方法、投影画像を生成する方法および投影システム
JP6600609B2 (ja) 空間映像再現装置、方法、及びプログラム
JP6383678B2 (ja) リライティング画像生成装置、方法、及びプログラム
JP6291382B2 (ja) Lt行列生成装置、方法、プログラム、及び記録媒体
JP6464058B2 (ja) 画像投影装置、方法、及びプログラム
JP6069241B2 (ja) 空間投影装置及び空間投影プログラム
Zhao et al. The auto‐geometric correction of multi‐projector for cylindrical surface using Bézier patches
JP2018050252A (ja) 空間投影装置、方法、及びプログラム
JP6373221B2 (ja) 画像投影装置、方法、及びプログラム
Kolomenski Realization Of A Spatial Augmented Reality System-A Digital Whiteboard Using a Kinect Sensor and a PC Projector
JP2017083778A (ja) 画像投影装置、方法、及びプログラム
KR101044871B1 (ko) 영상 투사 시스템 및 그 방법
Vieira et al. Real-time 3D video