(57)【特許請求の範囲】
【請求項１】
仮想物体が配されている仮想空間の画像を、光線追跡法を用いて生成する生成手段を有する画像処理装置であって、
現実物体の形状を近似すべく複数の仮想要素を組み合わせ、該組み合わせた複数の仮想要素で構成される近似仮想物体を前記仮想空間内に配置する手段と、
前記光線追跡法に基づいて発生させた光線と、前記仮想空間内の仮想物体と、の交差判定を行う判定手段と、
前記交差判定の結果、前記光線と前記近似仮想物体とが連続して交差した後、前記光線が他の仮想物体と交差していない場合には、１回目の交差までの光線に基づいて、前記光線に対応する画素を生成すべく、前記生成手段を制御し、前記光線と前記近似仮想物体とが連続して交差した後、前記光線が他の仮想物体と交差している場合には、当該他の仮想物体と交差するまでの前記光線に基づいて、前記光線に対応する画素を生成すべく、前記生成手段を制御する制御手段と
を備えることを特徴とする画像処理装置。
【請求項２】
前記制御手段は、前記光線と前記近似仮想物体とが連続して交差した後、前記光線が他の仮想物体と交差していない場合には、光線の発生を停止させ、１回目の交差までの光線に基づいて、前記光線に対応する画素を生成すべく、前記生成手段を制御することを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記制御手段は、前記光線と前記近似仮想物体とが連続して交差した後、前記光線が他の仮想物体と交差していない場合には、前記交差結果を修正し、修正した交差結果に基づいて、前記光線に対応する画素を生成すべく、前記生成手段を制御することを特徴とする請求項１に記載の画像処理装置。
【請求項４】
前記制御手段は、前記光線と前記近似仮想物体とが連続して交差した後、該交差した交点間の距離を求め、求めた距離が前記仮想要素よりも小さければ、１回目の交差までの光線に基づいて、前記光線に対応する画素を生成すべく、前記生成手段を制御することを特徴とする請求項１に記載の画像処理装置。
【請求項５】
仮想物体が配されている仮想空間の画像を、光線追跡法を用いて生成する生成手段を有する画像処理装置が行う画像処理方法であって、
前記画像処理装置の配置手段が、現実物体の形状を近似すべく複数の仮想要素を組み合わせ、該組み合わせた複数の仮想要素で構成される近似仮想物体を前記仮想空間内に配置する工程と、
前記画像処理装置の判定手段が、前記光線追跡法に基づいて発生させた光線と、前記仮想空間内の仮想物体と、の交差判定を行う判定工程と、
前記画像処理装置の制御手段が、前記交差判定の結果、前記光線と前記近似仮想物体とが連続して交差した後、前記光線が他の仮想物体と交差していない場合には、１回目の交差までの光線に基づいて、前記光線に対応する画素を生成すべく、前記生成手段を制御し、前記光線と前記近似仮想物体とが連続して交差した後、前記光線が他の仮想物体と交差している場合には、当該他の仮想物体と交差するまでの前記光線に基づいて、前記光線に対応する画素を生成すべく、前記生成手段を制御する制御工程と
を備えることを特徴とする画像処理方法。
【請求項６】
コンピュータに請求項５に記載の画像処理方法の各工程を実行させる為のコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、光線追跡法に従って仮想空間の画像を生成するための技術に関するものである。
【背景技術】
【０００２】
実写風景を背景とし、その上にコンピュータグラフィックス（ＣＧ）を重畳して体験者に提示することで、体験者に対してあたかもその場に仮想の物体が存在するかのような体験を行わせる複合現実感（MR：MixedReality）の技術がある。
【０００３】
そして従来より、複合現実感の技術と光線追跡（レイトレーシング）の技術とを組み合わせたシステムが提案されている（非特許文献１）。非特許文献１に開示されている描画システムは、ビデオ映像として取得される実写画像を背景にし、その上に仮想物体をレイトレーシング法で描画して重畳することにより、複合現実画像を生成している。このシステムを利用した描画の一例では、現実物体である床の上に、仮想物体であるＣＧの球が影を落とす様子を表現している。このような表現を実現するために、現実物体である床を表現する仮想物体を定義している。そして、この床に対応する仮想物体に落ちる影の像を生成し、現実の床の画像と合成する。
【０００４】
また、現実物体の位置姿勢をセンシングした結果に基づき、その現実物体を表現する仮想物体を複合現実空間に配置し、複合現実空間における仮想物体と現実物体との正しい奥行き関係を表現する手法が提案されている（特許文献１）。
【非特許文献１】Interactive Mixed Reality Rendering in a Distributed Ray Tracing Framework Andreas Pomi, and Philipp Slusallek IEEE and ACM International Symposium on Mixed and Augmented Reality (ISMAR) 2004, Student Colloquium, Arlington, USA, November 2-5, 2004
【特許文献１】特開2005-293142号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
一般的に、人間が視覚情報から物体間の位置関係を把握する際には、影や映り込みの像を手がかりにしている。したがって、複合現実感の場合も、体験者が物体間の位置関係を正しく把握するためには、影や映り込みを正しく表現することが必要不可欠である。その際、仮想物体から仮想物体への影や写り込みだけではなく、現実物体から仮想物体への影や映り込みを正しく表現しなければならない。
【０００６】
非特許文献１では、仮想物体から、現実物体としての床を表現する仮想物体（透明な物体として表現されている）に落ちる影を描画している。ここで、現実物体を表現する仮想物体が２つあり、一方が他方に影を落とす関係にあるとする。この場合の影の像は、現実空間を撮影した画像の中に現れている。したがって、仮想物体を描画することによって改めて影の像を生成する必要はない。しかしながら、非特許文献１ではこのような場合を考慮していないため、実写画像中の影に加えて、不必要な影の像を生成してしまう。この問題は、１つの現実物体を表現する仮想物体の内部で影（セルフシャドウ）が生じる場合も起こりうる。さらに、非特許文献１では、影と同様に写り込みについても正しく表現できない問題がある。
【０００７】
本発明は以上の問題に鑑みて成されたものであり、凹凸形状を有する現実物体の形状を近似すべく組み合わせた複数の仮想要素で構成される近似仮想物体に関連する影や映り込みを正しく表現する為の技術を提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明の目的を達成するために、例えば、本発明の画像処理装置は以下の構成を備える。
【０００９】
即ち、仮想物体が配されている仮想空間の画像を、光線追跡法を用いて生成する生成手段を有する画像処理装置であって、
現実物体の形状を近似すべく複数の仮想要素を組み合わせ、該組み合わせた複数の仮想要素で構成される近似仮想物体を前記仮想空間内に配置する手段と、
前記光線追跡法に基づいて発生させた光線と、前記仮想空間内の仮想物体と、の交差判定を行う判定手段と、
前記交差判定の結果、前記光線と前記近似仮想物体とが連続して交差した後、前記光線が他の仮想物体と交差していない場合には、１回目の交差までの光線に基づいて、前記光線に対応する画素を生成すべく、前記生成手段を制御し、前記光線と前記近似仮想物体とが連続して交差した後、前記光線が他の仮想物体と交差している場合には、当該他の仮想物体と交差するまでの前記光線に基づいて、前記光線に対応する画素を生成すべく、前記生成手段を制御する制御手段と
を備えることを特徴とする。
【発明の効果】
【００１６】
本発明の構成によれば、現実物体の形状を近似すべく組み合わせた複数の仮想要素で構成される近似仮想物体に関連する影や映り込みを正しく表現することができる。
【発明を実施するための最良の形態】
【００１７】
以下、添付図面を参照し、本発明の好適な実施形態について説明する。ただし、この実施形態に記載されている構成要素はあくまでも例示であり、本発明の範囲をそれらのみに限定する趣旨のものではない。
【００１８】
［第１の実施形態］
本実施形態では、現実物体や仮想物体の影や写り込みを表現すべく、周知の光線追跡法を用いて仮想空間の画像（仮想空間画像）を生成する。そして、生成した仮想空間画像を現実空間画像の上に重畳させた合成画像を生成し、生成した合成画像を観察者に提示する。
【００１９】
しかし、現実空間と仮想空間とを融合したＭＲ空間を観察する人間が、視覚情報から物体間の位置関係を正しく把握するためには、仮想物体だけでなく、現実物体の影や映り込みを正しく表現しなければならない。
【００２０】
そこで本実施形態では、仮想空間画像において現実物体の影や映り込みを正しく表現すべく、現実物体の形状を近似すべく組み合わせた複数の仮想要素で構成される近似仮想物体に光線が連続して交差した場合に、それ以降の光線の発生を制御する。
【００２１】
図１は、光線追跡法に基づいて光線をとばす場合に生じうる問題について説明する図である。図１では、現実物体としての手１０１が、あたかも仮想物体１０２に影を落としているかのように見せるために、手１０１の形状を近似すべく組み合わせた複数の仮想要素１０３を利用し、仮想物体１０２に影を落している情景を示している。
【００２２】
ここで、仮想要素１０３とは、手１０１の形状を複数の仮想物体で表現するために用いるもので、図１では、手１０１を仮想の球の集合として表している。即ち、図１では、１つの球が１つの仮想要素１０３に対応する。なお、図１では、全ての仮想要素１０３を示しているわけではなく、手１０１の一部を構成する仮想要素１０３のみを示しているが、実際にはサイズの異なる複数の仮想要素１０３でもって手１０１を構成している。
【００２３】
ここで、本実施形態に従って仮想空間画像を生成する際、仮想物体同士、現実物体同士、仮想物体と現実物体との間、のそれぞれで発生しうる影や写り込みの表現については以下のように対処する。
【００２４】
・仮想物体から仮想物体に対する影や写り込みは、一般的なレイトレーシングによる描画方法で表現する
・仮想物体から現実物体に対する影や写り込みは、仮想物体が近似仮想物体に影や映り込みの影響を及ぼすことで表現する。
【００２５】
・現実物体から仮想物体に対する影や写り込みは、近似仮想物体が仮想物体に影や映り込みの影響を及ぼすことで表現する
・現実物体から現実物体に対する影や写り込みは、近似仮想物体を利用せず、現実空間の画像をそのまま利用する
図１において１０４は、観察者の視点の位置姿勢で仮想空間中に配置された視点（仮想視点）である。そして光線追跡法によれば、生成する仮想空間画像の各画素に対応する光線を、係る仮想視点１０４から発生させる。発生させたうちの１本は、交点１０６で、仮想要素１０３と交差している。そして、交点１０６で反射した光線の経路を順次追跡することで、交点１０６に影響を及ぼす仮想光源１０５を探索する。そして係る光源探索の結果、反射光線は仮想光源１０５に到達する。ここで、交点１０６と仮想光源１０５との間には遮蔽物が存在しない。つまり、交点１０６に影響を及ぼす影や映り込みは存在しない。従って、仮想空間画像上における交点１０６に対応する画素については、仮想空間画像と同じ視点から撮影された現実空間の画像において位置的に対応する画素をそのまま使うことができる。
【００２６】
また、仮想視点１０４から発生させた光線のうちの１本は、交点１０７で、仮想要素１０３と交差している。そして、交点１０８は、交点１０７で反射した光線が仮想光源１０５に到達する前に、仮想要素１０３と交差した点である。この場合、仮想光源１０５から照射される光線は、仮想要素１０３により遮られるため、交点１０７に対応する仮想空間画像上の画素の画素値を決定するためには、仮想要素１０３の影の影響を考慮しなければならない。その結果、交点１０７に対応する仮想空間画像上の画素の画素値は、現実物体１０１によって仮想光源１０５からの光を遮られた分だけ暗くなる。つまり、交点１０７に対応する仮想空間画像上の画素の画素値を求める為に先ず、仮想要素１０３の影響を受けない状態における画素値を計算する（仮想要素１０３が存在しない場合の、仮想物体１０２上における交点１０７の位置の画素値を求める）。そしてその後、仮想要素１０３の影の影響を計算し、交点１０７の位置における最終的な画素値を決定する。
【００２７】
また、仮想視点１０４から発生させた光線のうちの１本は、交点１０９で、仮想要素１０３と交差している。そして、交点１９９は、交点１０９で反射した光線が仮想光源１０５に到達する前に、仮想要素１０３と交差した点である。この場合、仮想光源１０５から照射される光線は、仮想要素１０３により遮られるため、交点１０９に対応する仮想空間画像上の画素の画素値を決定するためには、仮想要素１０３の影の影響を考慮しなければならない。さらに、交点１０９は、現実空間における小指と薬指の”指の重なり”という現実物体同士の影の影響も受けているため、現実に見える暗さよりも更に暗い画素値になってしまう。そのため、実際には仮想の影計算を行わなくてもよい仮想物体上の交点で影計算を行ってしまうため、その部分が隣接画素と比べて一段と暗くなって違和感が生じ、臨場感を損なってしまう結果になる。
【００２８】
交点１０９のように、現実物体１０１内部に生じる現実の影の影響と、仮想要素１０３の影の影響と、が及ぼし合う部分は必要以上に暗くなるため、光学的に正しくない影の描画になってしまう。
【００２９】
図２は、光線追跡法に基づいて光線をとばす場合に生じうる問題について説明する図である。図２では、仮想物体１０２があたかも、現実物体としての手１０１に影を落としているかのように見せるために、手１０１の形状を近似すべく組み合わせた複数の仮想要素１０３を利用し、手１０１に影を落している情景を示している。つまり、図２では、手１０１と仮想物体１０２との関係は、図１に示した手１０１と仮想物体１０２との関係と逆になっている。
【００３０】
仮想視点１０４から発生させた光線のうちの１本は、交点２０１で、仮想要素１０３と交差している。そして、交点２０１で反射した後の光線の経路を順次追跡することで、交点２０１に影響を及ぼす仮想光源１０５を探索する。そして係る光源探索の結果、反射光線は仮想光源１０５に到達する。ここで、交点２０１と仮想光源１０５との間には遮蔽物が存在しない。つまり、交点２０１に影響を及ぼす影や映り込みは存在しない。従って、仮想空間画像上における交点２０１に対応する画素については、仮想空間画像と同じ視点から撮影された現実空間画像において位置的に対応する画素をそのまま使うことができる。
【００３１】
また、仮想視点１０４から発生させた光線のうちの１本は、交点２０２で、仮想要素１０３と交差する。そして、交点２０２で反射した後の光線は仮想光源１０５に到達する前に、仮想物体１０２と交差している。この場合、交点２０２に対する仮想光源１０５からの光線は、仮想物体１０２により遮られているため、交点２０２に対応する仮想空間画像上の画素の画素値を決定するためには、仮想物体１０２の影の影響を考慮しなければならない。つまり、交点２０２の画素の画素値を決定するためには、仮想空間画像と同じ視点から撮影された現実空間画像において位置的に対応する画素の画素値に、仮想物体１０２による影の影響の計算結果を加えた画素値を用いる。
【００３２】
また、仮想視点１０４から発生させた光線のうちの１本は、交点２０３で、仮想要素１０３と交差する。そして、交点２０３で反射した光線は、仮想光源１０５に到達する前に、仮想要素１０３と交差する。交点２０３は、手１０１の上でもセルフシャドウが発生している部分であり、現実空間画像上でも現実の影の影響を受けている部分である。ここで、交点２０３で反射した光線は再度仮想要素１０３と交差しているので、上述の説明に従えば、交点２０３における画素値は、次のようにして決まるはずである。即ち、仮想空間画像と同じ視点から撮影された現実空間画像において位置的に対応する画素の画素値に、仮想要素１０３の影の影響を加えた画素値が、交点２０３における画素値となる。しかし、このようにして交点２０３における画素値を決定すると、係る最終的な画素値は現実の影の影響を受けた現実空間画像の画素値に対して更に仮想空間画像における影の影響も加算されることになる。これにより、交点１０９と同様、交点２０３における画素値は、光学的に正しくない画素値になってしまう。
【００３３】
図３は、光線追跡法に基づいて光線をとばす場合に生じうる問題について説明する図である。図３では、仮想要素１０３内で生じたセルフシャドウによって光学的不整合が生じた例を示している。
【００３４】
現在の３次元計測技術や光源推定技術では、現実の環境を忠実に再現することは不可能に近い。そのため、仮想要素１０３を用いて構成する近似仮想物体の形状が、現実物体１０１の形状と厳密に等しくなるとは限らない。つまり、仮想光源の配置方法や、近似仮想物体の近似精度によっては、現実には存在しない仮想の影が、背景となる現実空間画像上に重畳されて描画されることがある。交点３０１は、仮想視点１０４から発生させた光線が、仮想要素１０３上で複数回内部反射したため、結果としてセルフシャドウが生じ、光学的不整合を引き起こした点である。
【００３５】
以上、図１〜３を用いて、光線追跡法に基づいて光線をとばす場合に生じうる問題、即ち、仮想要素１０３を仮想空間中に配してから、光線追跡法に基づいて光線を仮想視点から発生させる場合に生じうる問題について説明した。上述のように、交点１０９、交点２０３では共に、仮想視点１０４から発生した光線が連続して仮想要素１０３と交差したことに起因して不具合が生じている。
【００３６】
本実施形態では、仮想視点１０４から発生させた光線が仮想要素１０３に対して連続して交差した場合に生ずる光学的不整合性を解決する。
【００３７】
図４は、本実施形態に係る画像処理装置の機能構成を示すブロック図である。
【００３８】
仮想空間データベース（ＤＢ）４０１は、仮想物体の形状情報、位置姿勢情報、材質情報等の仮想物体情報、仮想光源情報、仮想視点情報、を含む様々な情報を記憶保持する為のデータベースである。仮想空間ＤＢ４０１が記憶保持する情報はユーザからの操作入力や、処理の流れに応じて適宜変更することができる。例えば、ユーザからの操作により仮想物体の位置姿勢情報や材質情報を変更することができる。即ち、仮想空間ＤＢ４０１には常に、仮想物体、視点、光源について最新の情報が記憶保持されている。
【００３９】
現実物体計測・推定部４０２は、現実物体の形状情報、位置姿勢情報、材質情報等の現実物体情報、仮想光源情報、を計測または推定する。そして推定した現実物体情報、仮想光源情報を仮想空間ＤＢ４０１に出力する。本実施形態では、現実物体測定・推定部４０２は、実写画像入力部４０３が取得した現実空間画像を用いてステレオマッチングを行うことで、奥行き推定を行う。そして現実物体測定・推定部４０２は、奥行き推定で得られた結果を元に、３次元の形状推定を行う。現実物体測定・推定部４０２が行う現実物体の計測・推定方法には、公知の技術を用いるため、現実物体測定・推定部４０２の動作についてのより詳細な説明は省略する。現実物体測定・推定部４０２の動作例としては、複数台のカメラを利用したステレオマッチングによる３次元復元や、３次元レンジファインダなどの計測機器を利用した計測・推定方法などが挙げられる。
【００４０】
実写画像入力部４０３は、現実空間画像と仮想空間画像との合成画像を観察するユーザの頭部に装着されたＨＭＤ（ヘッドマウントディスプレイ）、に備え付けられたビデオカメラが撮像した現実空間の画像を、データとして取得する。係るビデオカメラは、現実空間の動画像を撮像するもので、撮像した各フレームの画像（現実空間画像）は順次、実写画像入力部４０３に入力される。実写画像入力部４０３は、係るビデオカメラから受けた現実空間画像を、現実物体計測・推定部４０２と、画素値演算部４０７とに供給する。
【００４１】
視点位置姿勢制御部４０４は、上記ビデオカメラの位置姿勢情報（視点の位置姿勢情報）を取得し、取得した位置姿勢情報を、仮想空間中に設定する視点（仮想視点）の位置姿勢情報として設定する。視点位置姿勢制御部４０４がビデオカメラの位置姿勢情報を取得する方法には様々な方法がある。例えば、上記ビデオカメラに６自由度センサを取り付け、係る６自由度センサによる計測値に基づいてセンサコントローラが求めた仮想視点の位置姿勢情報を取得しても良い。また、現実空間中に２次元マーカを配置し、係る現実物体の画像を上記ビデオカメラから取得し、取得した現実空間画像を用いて仮想視点の位置姿勢情報を求めても良い。なお、仮想視点の位置姿勢情報を取得する為の方法として例示したこれら何れの方法についても周知の技術であるので、これ以上の詳細な説明は省略する。
【００４２】
レイ制御部４０５は、周知の光線追跡法（レイトレーシング）に従って、仮想光源から仮想視点に集光する光線情報を計算するために、仮想視点から光線を発生させ、その後の光線の経路を制御する。光線追跡法とは、仮想視点から仮想スクリーン上の画素を通過する光線と、仮想物体との交点、係る交点から仮想光源までの経路探索、を計算することによって、係る画素の画素値を算出するアルゴリズムである。光線追跡法の詳細については後述する。
【００４３】
さらにレイ制御部４０５は、光線が仮想物体と交差した際、交差した交点を起点とし、仮想物体の材質情報により影・反射・屈折を計算するための光線を新たに発生させる。ここで、仮想視点から発生する光線は１次レイと呼び、反射、屈折の回数により光線の次元数は大きくなる。つまり、１回反射した光線を２次レイと呼び、２回反射した光線を３次レイ、と呼ぶ。レイ制御部４０５は、光線が無限遠に飛んだ場合、仮想光源に辿り着いた場合、交差判定部４０６から停止命令を受理した場合、に、新たな光線の発生を停止する。
【００４４】
交差判定部４０６は、レイ制御部４０５で発生させた光線が、仮想空間中に配した仮想物体（仮想空間ＤＢ４０１に記憶保持されている仮想物体情報に基づいて配置される仮想物体）のうち、どの仮想物体と交差し、反射したのか、を判定する。そして交差判定部４０６は、光線が近似仮想物体に対して連続して交差したと判定した場合には、レイ制御部４０５に対して上記停止命令を通知する。
【００４５】
画素値演算部４０７は、交差判定部４０６による判定結果に基づいて、光線追跡法のアルゴリズムに則り、仮想視点から発生させた光線が交差する仮想スクリーン上の画素位置における画素値を計算する（詳細は後述）。画素値演算部４０７は、光線が何れの仮想物体とも交差しない場合、若しくは光線が近似仮想物体と交差するものの影や映り込みの影響が無い場合には、係る光線が仮想スクリーン上で交差する画素位置における画素値を次のように決定する。即ち、係る光線が仮想スクリーン上で交差する画素位置における画素値として、実写画像入力部４０３が取得した現実空間画像上で、係る画素位置に対応する画素位置における画素値を用いる。また、光線が近似仮想物体と交差した結果、影や映り込みの影響がある場合は、先ず、実写画像入力部４０３が取得した現実空間画像上で、係る光線が仮想スクリーン上で交差する画素位置に対応する画素位置の画素値を取得する。そして、取得した画素値に対して、影や映り込みの影響を加味した画素値を加えることで、最終的な画素値を決定する。
【００４６】
また、光線が仮想物体と交差したと判定し、かつ仮想光源からの光を遮蔽する遮蔽物が存在しなかった場合、その仮想物体の材質情報に基づいて反射屈折の計算を行う。そして、その計算結果に影計算の結果を加えた画素値を、係る光線が仮想スクリーン上で交差する画素位置における画素値として求める。この場合の計算は、周知の光線追跡法のアルゴリズムに従ったものとなる。
【００４７】
また、光線が仮想物体と交差したと判定し、かつ仮想光源からの光を近似仮想物体が遮蔽している場合、仮想物体に対する光線の反射・屈折を計算した後、近似仮想物体の影の影響を計算する。これにより、係る光線が仮想スクリーン上で交差する画素位置における画素値を求める。
【００４８】
また、光線が無限遠に飛んだと判定された場合は、実写画像入力部４０３が取得した現実空間画像上で、係る光線が仮想スクリーン上で交差する画素位置に対応する画素位置の画素値を取得する。そして、取得した画素値を、係る光線が仮想スクリーン上で交差する画素位置における画素値とする。
【００４９】
また、光線が近似仮想物体と交差し、かつ光源探索の過程で他の仮想物体により仮想光源が遮蔽されている場合は、実写画像入力部４０３が取得した現実空間画像上で、係る光線が仮想スクリーン上で交差する画素位置に対応する画素位置の画素値を取得する。そして、取得した画素値に対して、影や映り込みの影響を加味した画素値を加えることで、最終的な画素値を決定する。
【００５０】
なお、画素値演算部４０７は、このような画素値の決定（演算）処理を、仮想空間画像を構成する各画素（仮想スクリーン上の各画素）について行う。これにより、画素値演算部４０７は、１フレーム分の仮想空間画像を生成することができる。生成した仮想空間画像は、後段の画面出力部４０８に対して出力する。
【００５１】
画面出力部４０８は、画素値演算部４０７から受けた仮想空間画像を、先の現実空間画像と合成してから、上記ＨＭＤが有する表示装置に対して送出する。
【００５２】
図５は、本実施形態に係る画像処理装置が、光線追跡法に基づいて仮想空間画像を生成するための処理のフローチャートである。なお、本実施形態の画像処理装置は、図５に示したフローチャートに従った処理と並行して、現実空間画像を取得している。従って、本実施形態に係る画像処理装置が行う処理は、図５に示したフローチャートに従った処理だけではない。また、以下では、図５のフローチャートに従って行う処理のうち、光線が近似仮想物体と交差した場合に行う処理を中心に説明する。従って、それ以外の状況についての説明は簡略化する、若しくは省略する。
【００５３】
先ず、ステップＳ５００では、仮想空間ＤＢ４０１以外の各部は、初期化処理を行う。係る初期化処理は、各部毎に異なる。例えば、係る初期化処理では、以降の処理を実行するために必要な記憶領域の確保等を行う。
【００５４】
次にステップＳ５０１では、視点位置姿勢制御部４０４が、視点の位置姿勢情報を取得する。そして視点位置姿勢制御部４０４は、取得した視点の位置姿勢情報を、仮想空間ＤＢ４０１に送出する。
【００５５】
次にステップＳ５０２では、現実物体計測・推定部４０２が、実写画像入力部４０３が取得した現実空間画像を用いて、係る現実空間画像中に映っている現実物体の現実物体情報（形状情報、位置姿勢情報、材質情報等）や、仮想光源情報、を推定する。係る推定の技術については周知の技術であるので、これについての説明は省略する。
【００５６】
ここで、推定した仮想光源情報に基づく光源の影響により発生した影の向きや濃さが、現実の光源の影響により発生した影の向きや濃さとかけ離れていると、臨場感を損なう大きな要因となる。したがって、現実の光源の位置・向き・強さの情報を忠実に仮想空間内に反映することが望まれる。ここで、現実の光源環境を仮想空間内に再現する方法についても、様々な手法が提案されている。その一例としては、実写画像入力部４０３が取得した現実空間画像からハイライト成分を抽出し、主成分分析を行うことにより、現実の光源情報（位置・向き・強さ）を算出し、推定する、という技術がある。このように、３次元形状の取得方法、並びに、現実環境の光源推定方法については多岐に渡って提案されているため、構築したいシステムに応じて好適なものを選択すればよい。
【００５７】
そして、現実物体計測・推定部４０２は、推定したそれぞれの情報を仮想空間ＤＢ４０１に送出する。
【００５８】
ステップＳ５０３では、仮想空間ＤＢ４０１は、ステップＳ５０１，Ｓ５０２で送出された情報を、それまでに保持していた情報に上書き保存することで、仮想空間ＤＢ４０１が記憶保持している情報を更新する。
【００５９】
そして仮想空間ＤＢ４０１は、ステップＳ５０１で視点位置姿勢制御部４０４から取得した視点の位置姿勢情報を、仮想視点の位置姿勢情報として設定する。そして設定した位置姿勢情報を記憶保持する。
【００６０】
また仮想空間ＤＢ４０１は、ステップＳ５０２で現実物体計測・推定部４０２から取得した現実物体情報に基づいて近似仮想物体を構成し（仮想要素を組み合わせることで近似仮想物体を生成し）、現実物体情報中の位置姿勢情報が示す位置姿勢で配置する。ここで、仮想要素は、３次元位置情報のみを有する点であっても良いし、係る点の集合から生成される三角形パッチであっても良い。即ち、近似仮想物体は、点群で構成しても良いし、ポリゴン群で構成しても良い。しかし、光線追跡法に基づく画像生成方法では、必ずしも仮想物体をポリゴンで構成する必要はない。
【００６１】
ここで、一般に、光線と球との交差判定処理は非常に高速で、かつ計算コストがあまりかからないので、本実施形態では、仮想要素は、任意の半径パラメータを有する球であるとする。従って、本実施形態では、近似仮想物体は、任意の半径パラメータを有する複数の球で現実物体の形状を近似した仮想物体、とする。しかし、近似仮想物体をポリゴンで構成したり、メタボール表現に基づいて構成しても良い。
【００６２】
また、ステップＳ５０３では、ステップＳ５０２で取得した仮想光源情報に基づいて、仮想空間中に仮想光源を設定する。即ち、現実空間中における光源を仮想空間中に模倣する。ここで、画像処理装置の計算能力やメモリ能力に起因して、ステップＳ５０２で取得した全ての仮想光源情報に対応する光源を仮想空間中に設定できない場合もある。このような場合には、現実空間における寄与率（輝度値）が最も高い光源を優先的に仮想空間中に配置すれば良い。もちろん、係る方法に限定するものではない。
【００６３】
また、ステップＳ５０３では、仮想空間ＤＢ４０１は、近似仮想物体以外の仮想物体（例えば図１の仮想物体１０２）についても仮想空間中に配置する。
【００６４】
次に、ステップＳ５０４では、レイ制御部４０５は、光線追跡法に従い、現在起点として設定されている位置から光線を発生させる。ステップＳ５０４の処理を最初に行う場合、ステップＳ５０３で設定した仮想視点から、仮想スクリーン上で画素値を決める画素位置を通る光線を発生させる。
【００６５】
ここで、光線追跡法とは、仮想視点に向かってくる光線を計算するために、仮想視点を起点として仮想スクリーンを通過する光線を計算することによって、仮想スクリーン上の各画素における画素値を計算する為のアルゴリズムである。
【００６６】
ここで、光線追跡法についてより詳細に説明する。
【００６７】
図６は、光線追跡法に基づいて画像を生成する仕組みを説明する図である。
【００６８】
図６において６０１は仮想スクリーンである。仮想視点１０４から仮想スクリーン６０１上の各画素位置を通過する光線について以降の処理を行うことで、各画素位置における画素値を求めることができ、その結果、仮想スクリーン６０１上に、１枚の画像を生成することができる。以降の説明では、仮想視点１０４から仮想スクリーン６０１上の１点（画素位置６９９）を通過する光線について説明する。従って、以降の説明を、仮想スクリーン６０１上の各画素位置について適用すれば、仮想スクリーン６０１上に１枚の画像を生成することができる。
【００６９】
光線追跡法では先ず、仮想視点１０４から仮想スクリーン６０１上の１点（画素位置６９９）に向けて光線６０２を飛ばし、飛ばした先を探索し、仮想物体が存在するか否かを判断する。図６では、光線６０２を飛ばした先には、仮想物体６０３が存在する。従って、この場合、仮想物体６０３の材質情報、表面状態などから、仮想スクリーン６０１上の画素位置６９９における画素値（輝度）を計算する。なお、光線６０２が仮想物体６０３と交差すると、透過光線６０５や反射光線６０４が計算されるので、今度はこれらの光線（透過光線６０５や反射光線６０４）についても同様に、その先に仮想物体が存在するか否かを判断する。
【００７０】
光線追跡法の原理については上記の通りであるが、その手順を簡単にまとめると次のようになる。
【００７１】
（１）  仮想視点、仮想スクリーンを設定する
（２）  仮想スクリーン上で画素値（輝度）を決定する画素位置を決める
（３）  仮想視点から、（２）で決定した画素位置を通る光線を飛ばす
（４）  飛ばした光線と交差する仮想物体を探索する（交差判定）
（５）  探索の結果、光線と交差する仮想物体が見つかった場合、交差した交点における照明効果や仮想物体の材質等を考慮して、上記画素位置における画素の画素値（輝度）を決定する
（６）  仮想物体の反射率、透過率に応じて、最初に見つけた交点から更に光線を飛ばし、（４）以降の処理を行う
これら（１）〜（６）の処理の中で大半を占めるのは、（４）の交差判定の処理である。以降では、従来から行なわれている交差判定処理について、具体例を用いて詳述する。
【００７２】
まず、仮想視点の座標位置Ｖを（Ｖｘ，Ｖｙ，Ｖｚ）とし、仮想スクリーン上で輝度を決定する画素位置Ｓを（ｘ１，ｙ１，ｚ１）とする。
【００７３】
この場合、仮想視点の座標位置Ｖから画素位置Ｓを通る光線を示す式は、媒介変数ｔを用いて次のように表すことができる。
【００７４】
Ｘ＝Ａｘ・ｔ＋Ｖｘ
Ｙ＝Ａｙ・ｔ＋Ｖｙ        （式１）
Ｚ＝Ａｚ・ｔ＋Ｖｚ
ここで、Ａ＝（Ａｘ，Ａｙ，Ａｚ）は、光線の方向ベクトルであり、次の式に基づいて求まるものである。
【００７５】
（Ａｘ，Ａｙ，Ａｚ）＝（ｘ１−Ｖｘ，ｙ１−Ｖｙ，ｚ１−Ｖｚ）    （式２）
次に、球体としての仮想要素が、半径ｒ、中心座標位置（ｘ０，ｙ０，ｚ０）の球であるとすると、係る球は次の式で表すことができる。
【００７６】
（ｘ−ｘ０）２＋（ｙ−ｙ０）２＋（ｚ−ｚ０）２＝ｒ２    （式３）
そして、仮想要素を表す（式３）に、光線を表す（式１）を代入すると、次のような式となる。
【００７７】
（Ａｘ・ｔ＋Ｖｘ−ｘ０）２＋（Ａｙ・ｔ＋Ｖｙ−ｙ０）２＋（Ａｚ・ｔ＋Ｖｚ−ｚ０）２＝ｒ２    （式４）
この（式４）を整理すると、次のような、ｔについての２次方程式となる。
【００７８】
ａｔ２＋ｂｔ＋ｃ＝０    （式５）
ただし、ａ、ｂ、ｃは、以下の通りである。
【００７９】
ａ＝Ａｘ２＋Ａｙ２＋Ａｚ２
ｂ＝２｛Ａｘ（Ｖｘ−ｘ０）＋Ａｙ（Ｖｙ−ｙ０）＋Ａｚ（Ｖｚ−ｚ０）｝
ｃ＝（Ｖｘ−ｘ０）２＋（Ｖｙ−ｙ０）２＋（Ｖｚ−ｚ０）２
従って、係る２次方程式（式５）に対して判別式を計算すれば、係る２次方程式（式５）が実数解を有するのか否かを判定することができる。そして、実数解の個数が１以上（判別式の結果が０以上）であれば、光線と球体とが交差したと判別でき、実数解の個数が０（判別式の結果が０未満）であれば、光線と球体とは交差していないと判別することができる。そして交差していると判別した場合には、交点の座標値を求める必要があるが、交点の座標値は、（式５）をｔについて解くことでｔの値を求め、求めたｔの値を（式１）に代入すれば、左辺のＸ、Ｙ、Ｚはそれぞれ、交点のｘ座標値、ｙ座標値、ｚ座標値となる。
【００８０】
なお、交点が２つの場合には、より視点に近い方の交点を、以降の処理で採用する。換言すれば、（式５）をｔについて解くことでｔの値が２つ求まった場合には、より値の小さいｔを用いて交点の座標値を求める。
【００８１】
ここで、求めたｔは、仮想視点から球までの距離を表わしている。この球が仮想視点に最も近い位置にある仮想物体である場合、この球が、求めたｔに基づいて決まる交点について表示する仮想物体となる。しかし、他の仮想物体であって、仮想視点により近く位置する仮想物体が存在する可能性があるので、他の仮想物体についても同様に交差判定を行う。そして、交差すると判定した場合には、仮想視点からの距離を求め、遠近を比較する。
【００８２】
このように、仮想スクリーン上における画素位置毎に、何れの仮想物体を表示するのかを決定することができる。これにより、仮想スクリーン上における各画素位置について画素値を求めることができる。
【００８３】
なお、以上説明した光線追跡法は上述の通り、周知の技術である。
【００８４】
図５に戻って、次に、ステップＳ５０５では、交差判定部４０６は、ステップＳ５０４で発生させた光線と仮想物体との交差判定を、上述した各式を用いて行う。なお、交差判定部４０６は、係る交差判定で求めた様々な情報（光線と交差した仮想物体が近似仮想物体であるか否かを示す情報、交点の座標値等）をメモリに記録する。そして、光線が交差した対象が近似仮想物体である場合には、交差判定フラグをオンにする（例えば交差判定フラグの値を１に設定する）。一方、光線が交差した対象が近似仮想物体ではない（例えば図１の仮想物体１０２）場合には、交差判定フラグをオフにする（例えば交差判定フラグの値を０にする）。
【００８５】
次にステップＳ５０６では、交差判定部４０６は、再度光線を発生させるか否かを判定する。再度光線を発生させるかどうかの判定条件は、光線が連続して近似仮想物体に交差したかどうかである。従って、ステップＳ５０６の処理開始時における交差判定フラグがオンであり、その後ステップＳ５０６における処理を行った結果、光線が交差した対象が近似仮想物体である場合、光線が連続して近似仮想物体に交差したと判定することができる。もちろん、光線が連続して近似仮想物体に交差したかどうかを判定するための方法は、係る方法に限定するものではない。
【００８６】
そして、光線が近似仮想物体に連続して交差した場合は、２回目に交差した近似仮想物体の影の影響を生じさせないために、レイ制御部４０５に光線の発生処理を打ち切るように通知する。即ち、１回目の交差（予め定められた交差状態）までの光線に基づいて係る光線に対応する画素値を画素値演算部４０７に求めさせるべく、レイ制御部４０５を制御する。そして係る通知後、画素値の計算を行うためにステップＳ５０７へ移行する。
【００８７】
このとき、交差判定部４０６では、２度目の交差について求めた情報は破棄し、画素値演算部４０７には１回目の近似仮想物体との交差について求めた情報（係る交差による交点に対応する画素値を求めるための情報）を通知する。係る情報については上述の通りであり、且つ周知のものである。このようにすることで、２回目に交差した近似仮想物体からの影を抑制することができるため、セルフシャドウによる光学的不整合が生じなくなる。
【００８８】
一方、光線が連続して近似仮想物体と交差しなかった場合、２次光線による影計算と反射屈折計算を行うために、交差判定部４０６は、レイ制御部４０５に光線を発生させる旨の通知を行う。通知後はステップＳ５０４に処理が戻され、レイ制御部４０５は再度、光線を発生させる。
【００８９】
尚、上述のように、光線を発生させる処理は、光線が以下の条件を満たすまで再帰的に繰り返される。即ち、交差判定部４０６が、以下に示す３つの条件の何れかが満たされたと判定した場合には、レイ制御部４０５に対して、光線の発生を停止するよう通知する。  （１）  光線が仮想光源に到達した
（２）  光線が連続して近似仮想物体と交差した
（３）  光線が無限遠に到達した
そして、一連の光線の追跡処理が終了すると、画素値を計算するために、処理をステップＳ５０７に移行し、画素値演算部４０７において計算が行われる。
【００９０】
ステップＳ５０７では、画素値演算部４０７は、交差判定部４０６による光線の追跡結果に基づいて画素値の計算を行う。光線の追跡結果には、ステップＳ５０５で交差判定部４０６が求めた「光線と交差した仮想物体の材質情報」、「光線と仮想物体とが交差した交点の情報」、が含まれている。これらの情報から、画素値演算部４０７は、光線と仮想物体とが交差した点における画素値を計算する。画素値の算出方法を簡単に述べると、仮想物体の材質情報には拡散反射成分、鏡面反射成分、環境光、自己発光成分などの情報が含まれている。従って、それらの材質情報と、仮想視点と交点における仮想物体の法線の向き、仮想光源の情報（種類・位置姿勢・輝度情報）を計算することによって、画素値を算出することができる。このような交点における画素値の算出方法は、コンピュータグラフィックスにおける一般的な手法であるため、その詳細な画素値の算出方法についての説明は省略する。
【００９１】
次に、仮想スクリーン上の全ての画素について画素値を求めた場合には処理をステップＳ５０８を介してステップＳ５０９に進める。一方、まだ画素値を求めていない画素が存在する場合には処理をステップＳ５０８を介してステップＳ５０４に戻し、仮想視点からまだ画素値を求めていない画素位置を通る光線に基づいて以降の処理を行う。
【００９２】
ステップＳ５０９では、画素値演算部４０７は、全画素について画素値を求めることで生成した１枚の仮想空間画像を画面出力部４０８に送出する。画面出力部４０８は、係る仮想空間画像を、現実空間画像と合成し、係る合成で得られる合成画像（ＭＲ画像）を、ＨＭＤが有する表示装置に対して送出する。
【００９３】
次に、ユーザから、本処理を終了させるための操作入力が成されたり、本処理を終了する条件が満たされた場合にはステップＳ５１０を介して本処理は終了する。一方、ユーザから、本処理を終了させるための操作入力は成されていないし、本処理を終了する条件も満たされていない場合にはステップＳ５１０を介してステップＳ５０１に処理を戻し、以降の処理を繰り返す。
【００９４】
以上の説明により、本実施形態によれば、光線が近似仮想物体と連続して交差した際に生じる光学的不整合を解決することができる。より詳しくは、係る解決のために、光線が近似仮想物体と連続して交差した後、光線の発生を制御することにより、近似仮想物体に不要な影の影響を及ぼさないようにしている。
【００９５】
なお、本実施形態では、近似仮想物体を球の集合として表したが、ポリゴンの集合で近似仮想物体を表しても良い。
【００９６】
また、本実施形態では、手の形状を近似すべく組み合わせた複数の仮想要素を近似仮想物体として用いたが、近似する対象は手以外でも良い。
【００９７】
［第２の実施形態］
第１の実施形態では、光線が近似仮想物体に連続して交差した際に生じる光学的不整合を解決するために、連続して交差した後の光線の発生を抑制していた。しかし、光線が連続して近似仮想物体に交差したからといって、必ずしも光学的不整合が生じるとは限らない場合がある。
【００９８】
図７は、光線が近似仮想物体に連続して交差した場合に係る光線の発生を抑制することで光学的不整合が生じるケースを説明する図である。
【００９９】
図７では、仮想視点１０４から発生させた光線は、交点７０１で仮想要素１０３と交差しており、且つ係る光線は更に連続して仮想要素１０３と交差している。ここで、第１の実施形態では、交点７０１からの光線の発生を抑制するのであるが、係る抑制を行ってしまうと、実際には影で暗くなるはずの領域について影計算を行わなくなるため、周辺画素と比べて明るくなってしまう。本来であれば一様な影が生じるべきところに、部分的に明るい画素値が出現してしまう。これにより体験者の臨場感は非常に損ねられてしまう。
【０１００】
第２の実施形態では、光線が仮想要素１０３に連続して交差したとしても、光線の発生は抑制せずに、再帰的に光線の発生と交差判定を繰り返す。そして、一般的なレイトレーシング法におけるアルゴリズムの終了条件を満たしたときに、交差判定履歴を遡って最終的な画素値の計算を行う。
【０１０１】
なお、本実施形態でも、図４に示した、第１の実施形態と同様の画像処理装置を用いるものとする。
【０１０２】
図８は、本実施形態に係る画像処理装置が、光線追跡法に基づいて仮想空間画像を生成するための処理のフローチャートである。なお、図８において図５と同じ部分については同じ参照番号を付けており、その説明は省略する。
【０１０３】
また、本実施形態の画像処理装置も、図８に示したフローチャートに従った処理と並行して、現実空間画像を取得している。従って、本実施形態に係る画像処理装置が行う処理は、図８に示したフローチャートに従った処理だけではない。また、以下では、図８のフローチャートに従って行う処理のうち、光線が近似仮想物体と交差した場合に行う処理を中心に説明する。従って、それ以外の状況についての説明は簡略化する、若しくは省略する。
【０１０４】
本実施形態では、光線が連続して近似仮想物体に交差した場合に生じる光学的不整合を解決するために、光線が連続して近似仮想物体に交差しても、光線の発生を抑制しない。即ち、「光線が仮想光源に到達した」、「光線が無限遠に到達した」の何れかの条件を満たした場合にのみ、交差判定部４０６はレイ制御部４０５に対して、光線の発生停止通知を行う。
【０１０５】
図８においてステップＳ８０１では、交差判定部４０６は、ステップＳ５０５において行った数回の影・反射・屈折計算による、光線の交差判定結果の解析を行う。
【０１０６】
具体的には、「光線がどの仮想物体と交差したか」、「光線が連続して近似仮想物体に交差したか」、「光線が連続して近似仮想物体に交差した後に、他の仮想物体に交差したか」等の解析を行う。
【０１０７】
ステップＳ８０２では、交差判定部４０６は、ステップＳ８０１における解析結果を受け、数回に渡って計算された光線の交差結果の修正を行うか否かを判定する。交差結果を修正する為の条件は、光線が連続して近似仮想物体に交差し、且つその後に他の仮想物体と交差していない場合である。この場合は、現実物体による影があり、かつ他の仮想物体によって光源からの光が遮蔽されていないため、影計算をしなくてもよい。従って、上記の条件を満たす場合は、交差結果を修正するためにステップＳ８０３へ移行する。一方、上記の条件を満たさない場合は、ステップＳ５０７以降の処理を行う。
【０１０８】
ステップＳ８０３では、交差判定部４０６は、ステップＳ５０５において求めた光線の交差判定の結果を修正する。具体的には、光線が連続して近似仮想物体と交差した後の交差結果を修正（無効または削除）する。そして、ステップＳ５０７以降の処理を行う。
【０１０９】
以上の説明により、本実施形態によれば、光線の発生を抑制することで生じる光学的不整合を解決することができる。
【０１１０】
［第３の実施形態］
第２の実施形態では、光線の発生を抑制せずレイトレーシング法における終了条件を満たすまで光線の発生を再帰的に繰り返していた。そして、終了条件を満たしたとき、交差判定部４０６によって交差判定履歴を見直し、不必要な交差結果を破棄し、最終的な画素値を決定していた。
【０１１１】
本実施形態では、上記終了条件を満たした場合に、交差判定部４０６による判定結果に基づいて、画素値演算部４０７が必要な画素値計算を行うことで、最終的な画素値を計算する。即ち、光線が連続して近似仮想物体と交差していたとしても、それ以降の光線が仮想物体と交差していた場合は、仮想物体による影計算を行って最終的な画素値を計算する。そして、光線が連続して近似仮想物体に交差した後、他の仮想物体と交差しなかった場合は、影計算を行わずに最終的な画素値計算を行う。
【０１１２】
なお、本実施形態でも、図４に示した、第１の実施形態と同様の画像処理装置を用いるものとする。
【０１１３】
図９は、本実施形態に係る画像処理装置が、光線追跡法に基づいて仮想空間画像を生成するための処理のフローチャートである。なお、図９において図５、８と同じ部分については同じ参照番号を付けており、その説明は省略する。
【０１１４】
ステップＳ９０１では、画素値演算部４０７は、ステップＳ８０１における解析の結果に基づいて、画素値を決定する。第２の実施形態では、交差判定結果を修正したものを用いて画素値を計算していた。本実施形態では、光線が連続して近似仮想物体と交差していたとしても、それ以降の光線が仮想物体と交差していた場合は、仮想物体による影計算を行って最終的な画素値を計算する。そして、光線が連続して近似仮想物体に交差した後、他の仮想物体と交差しなかった場合は、影計算を行わずに最終的な画素値計算を行う。
【０１１５】
以上の説明により、本実施形態によれば、第２の実施形態における処理結果と同様に、光線の発生を抑制することで生じる光学的不整合を解決することが実現できる。
【０１１６】
［第４の実施形態］
第２，３の実施形態では、交差判定部４０６による交差判定の履歴情報を用いて画素値を決定していた。本実施形態では、光線が連続して仮想要素と交差した場合に、交点間距離と仮想要素の大きさとの関係から、影を描画するべきか否かを判定する。
【０１１７】
図１０は、交点間距離の情報を利用して、影を描画すべきか否かを判定するための処理を説明する図である。
【０１１８】
光線１００１は、仮想視点１０４から発生した光線が交点１００３で仮想要素１０３に反射し、再度、交点１００４で仮想要素１０３に交差した後、仮想光源１０５に到達した光線である。このとき、交点１００３では、交点１００４で光線が交差する仮想要素１０３の影響を受け、キャストシャドウが生じる。
【０１１９】
そして、交点１００３で反射した光線は交点１００５において仮想要素１０３に反射した後、仮想光源１０５に到達する。このとき、交点１００３では、交点１００５で交差した仮想要素１０３の影響を受け、セルフシャドウが生じる。
【０１２０】
ここで、現実と仮想とで光源が一致しているという前提で、現実物体１０１が人間の人差し指と中指であるとすると、現実空間では、人差し指から中指へのキャストシャドウが生じる。つまり、図１０に示すように交点１００４の影響によるキャストシャドウによる影は、現実の世界でも存在する。従って、その影が描画されても違和感が生じない。
【０１２１】
しかし、交点１００５のように隣接した仮想要素１０３の影響によるセルフシャドウは、現実空間には存在することのない影である。従って、その影が描画されると体験者は非常に違和感を受けてしまう。
【０１２２】
本実施形態は上記問題を鑑みて成されたものであり、光線が連続して仮想要素と交差した場合に、交点間の距離情報から必要な影か不必要な影かを判断し、光学的不整合を解決する。
【０１２３】
本実施形態においても、第１の実施形態と同様、図４に示した画像処理装置を用いる。
【０１２４】
また、本実施形態に係る画像処理装置が、光線追跡法に基づいて仮想空間画像を生成するための処理については、図８のフローチャートにおいて、ステップＳ５０５における処理と、ステップＳ８０１における処理とを以下のように変更した処理となる。
【０１２５】
ステップＳ５０５では、第１の実施形態で説明した処理に加え、交差判定部４０６は、交点間の距離を求める。
【０１２６】
ステップＳ８０１では、交差判定部４０６は、ステップＳ５０５において行った数回の影・反射・屈折計算による光線の交差判定結果に加え、ステップＳ５０５で求めた交点間の距離についても解析を行う。
【０１２７】
ここで、交点間距離の情報は、光線と交差した仮想要素の大きさ（球であれば半径、ポリゴンであれば面と面の距離情報）の比較に利用される。つまり、交点間距離が、光線と交差した仮想要素よりも大きければ、キャストシャドウを生じさせる物体と交差したと判定する。逆に交点間距離の方が小さければ、セルフシャドウを生じさせる物体と交差したと判定し、その物体による影の影響は無効にする。
【０１２８】
このように交点間距離の情報を加味することにより、光学的不整合を解決することが実現できる。
【０１２９】
［第５の実施形態］
上記各実施形態では、図４に示した各部は何れもハードウェアで構成されているものとして説明した。しかし、仮想空間ＤＢ４０１を除く他の各部についてはコンピュータプログラムで実装しても良い。この場合、各部に対応するコンピュータプログラムを、仮想空間ＤＢ４０１を有する一般のＰＣ（パーソナルコンピュータ）により実行させることで、上記各実施形態と同様の処理を実現することができる。
【０１３０】
図１１は、仮想空間ＤＢ４０１を除く他の各部に対応するコンピュータプログラムを実行可能なコンピュータのハードウェア構成例を示すブロック図である。
【０１３１】
ＣＰＵ１１０１は、ＲＡＭ１１０２やＲＯＭ１１０３に格納されているプログラムやデータを用いて本コンピュータ全体の制御を行うと共に、図４に示した構成を有する画像処理装置が行うものとして上述した各処理を実行する。係る処理には、図５，８，９に示したフローチャートに従った処理も含まれている。
【０１３２】
ＲＡＭ１１０２は、外部記憶装置１１０６からロードされたプログラムやデータ、Ｉ／Ｆ（インターフェース）１１０７を介して外部から受信したデータ等を一時的に記憶するためのエリアを有する。更に、ＲＡＭ１１０２は、ＣＰＵ１１０１が各種の処理を実行する際に用いるワークエリアも有する。即ち、ＲＡＭ１１０２は、各種のエリアを適宜提供することができる。
【０１３３】
ＲＯＭ１１０３には、ブートプログラムや設定データなどが保存されている。
【０１３４】
操作部１１０４は、キーボードやマウスなどにより構成されており、本コンピュータの操作者が操作することで、各種の指示をＣＰＵ１１０１に対して入力することができる。操作部１１０４を用いた入力には、例えば、処理を終了させるための操作入力などがある。
【０１３５】
表示部１１０５は、ＣＲＴや液晶画面などにより構成されており、ＣＰＵ１１０１による処理結果を画像や文字等でもって表示することができる。
【０１３６】
外部記憶装置１１０６は、ハードディスクドライブ装置に代表される大容量情報記憶装置である。外部記憶装置１１０６には、ＯＳ（オペレーティングシステム）や、画像処理装置が行うものとして上述した各処理をＣＰＵ１１０１に実行させるためのプログラムやデータが保存されている。係るプログラムには、図４に示した各部のうち、仮想空間ＤＢ４０１を除く（厳密には仮想空間ＤＢ４０１による情報保持機能を除く）各部の動作をＣＰＵ１１０１に実行させるためのプログラムが含まれている。また、外部記憶装置１１０６に保存されているデータには、仮想空間ＤＢ４０１が記憶保持しているものとして上述したものが含まれている。
【０１３７】
外部記憶装置１１０６に保存されているプログラムやデータは、ＣＰＵ１１０１による制御に従って適宜ＲＡＭ１１０２にロードされる。そして、ＣＰＵ１１０１がこのロードされたプログラムやデータを用いて処理を実行することで、本コンピュータは、画像処理装置が行うものとして上述した各処理を実行することになる。
【０１３８】
Ｉ／Ｆ１１０７には、ＨＭＤや位置姿勢センサなどを接続することができる。
【０１３９】
１１０８は上述の各部を繋ぐバスである。
【０１４０】
［第６の実施形態］
第１から第５の実施形態では、近似仮想物体を構成する仮想要素が複数であるとしている。しかし、複数である必然性はなく、近似仮想物体が１つの仮想要素から構成されても良い。以下の実施形態においても近似仮想物体は少なくとも１つの仮想要素から構成されるとする。
【０１４１】
［第７の実施形態］
本実施形態では、現実空間画像中に写っている現実物体から現実物体へと落ちる影の像に対して、光学的に矛盾がないように仮想物体の影を描画する方法を述べる。より具体的には、現実物体から現実物体へと影が落ちている領域を除外して、仮想物体の影を描画する。
【０１４２】
図１２は、本実施形態に係るメインの処理を説明する図である。図１２では、現実物体および仮想物体を含む複合現実空間を表している。図１２において、１２０１は、観察者の視点である現実のカメラ、に対応する仮想視点である。１２０２は球形状の現実物体であり、係る現実物体１２０２が占める領域には、球形状の現実物体１２０２の形状を模擬する（同等の形状，同等のサイズ）近似仮想物体１２０２’（不図示）が配置されている。１２０３は立方体形状の仮想物体、１２０４は平面形状の現実物体であり、係る現実物体１２０４が占める領域には平面形状の現実物体１２０４の形状を模擬する近似仮想物体１２０４’（不図示）が配置されている。１２０５は現実の光源であり、係る光源１２０５の位置姿勢には現実の光源１２０５を模擬する仮想光源１２０５’（不図示）が配置されている。１２０６は光源１２０５が現実物体１２０２によって遮られることで現実物体１２０４の上に生じる現実の影の像である。なお、以下の説明で仮想物体または近似仮想物体と区別せずに単に「物体」と言い表したときは、仮想物体および近似仮想物体の全体を指しているものとする。
【０１４３】
ここで、仮想物体１２０３が現実物体１２０４にあたかも影を落とすかのような状態における画像を描画することを考える。光源１２０５’に関して、（現実の）影１２０６の領域はすでに現実物体１２０２によって遮蔽されている。影１２０６の領域が遮蔽されているか否かは、光源１２０５’を遮蔽する仮想物体が追加されても変化しない。したがって、光源１２０５’に関して仮想物体１２０３が形成する仮想の影の領域１２１１の内部であっても、現実の影１２０６の領域と重なる部分に関しては現実空間画像上の対応する画素の画素値をそのまま（仮想の影の影響を反映させないで）使う。
【０１４４】
このような影の描画制御を行うために、本実施形態では、１次レイと物体との交点から各光源に向かってシャドウレイと呼ばれるレイを発生させ、シャドウレイと物体との交差をチェックする。すると、光源が仮想物体に遮蔽されていても仮想の影を描画しない条件は、「近似仮想物体から発するシャドウレイが近似仮想物体と交差する」ことになる。
【０１４５】
例えば、１次レイ１２０７が最初に交差する近似仮想物体１２０４’上の点（交点）１２０８から発生するシャドウレイ１２０９は、近似仮想物体１２０２’と点１２１０で交差しているので、上記の条件を満たす。したがって、交点１２０８については仮想の影を描画しない。
【０１４６】
なお、上記の条件は、シャドウレイが連続して近似仮想物体に交差しなくても妥当である。なぜなら、シャドウレイが物体と交差する順番は光源が遮蔽されるか否かに無関係だからである。
【０１４７】
以下、本実施形態に係るメインの処理について、より詳細に説明する。
【０１４８】
なお、ここでは、１次レイと１次レイの交点から光源に向かって発生させるシャドウレイのみを考慮する。すなわち、物体の表面で反射または屈折するレイは考えない。また、光源の数を１つとし、近似仮想物体は現実物体の形状だけではなくマテリアル属性も模擬しているとする。また、以下説明する本実施形態に係るメインの処理は、図１１に示すハードウェア構成例を有するコンピュータ（画像処理装置）を用いて実行するものとする。
【０１４９】
ここで、以下の説明では、１次レイが通過する生成画像上の画素を「描画対象の画素」、１次レイが最初に交差する物体（仮想物体もしくは近似仮想物体）上の点を「描画対象の点」と呼ぶことにする。
【０１５０】
図１３は、本実施形態に係る画像処理装置が、光線追跡法に基づいて複合現実感画像を生成するための処理のフローチャートである。
【０１５１】
ステップＳ１３００〜ステップＳ１３０３の各ステップにおける処理はそれぞれ、図９に示したステップＳ５００〜ステップＳ５０３と同じであるので、説明は省略する。
【０１５２】
続いて、ステップＳ１３０４では、仮想視点から描画対象の画素を通る１次レイを発生させる。
【０１５３】
次いで、ステップＳ１３０５では、１次レイと仮想物体もしくは近似仮想物体とが最初に交差する点、すなわち描画対象の点を探索し、探索結果をＲＡＭ１１０２に格納する。
【０１５４】
そして、ステップＳ１３０６では、ステップＳ１３０５における探索結果を参照して交差の有無を判定する。係る判定の結果、交差がない場合、描画対象の画素は背景に相当するので、処理をステップＳ１３１２に進め、ステップＳ１３１２では、実写画像の画素値を取得する。そして処理をステップＳ１３１５に進める。ここで、「実写画像の画素値を取得する」とは、実写画像上の画素値のうち描画対象の画素に対応する画素の画素値を取得して、生成する画像上の描画対象の画素の画素値に設定することを意味する（以下の説明でも同様）。なお、生成する画像のデータはＲＡＭ１１０２に格納する。
【０１５５】
一方、ステップＳ１３０６において交差があると判定した場合は、ステップＳ１３０７に処理を進める。
【０１５６】
ステップＳ１３０７では、ステップＳ１３０５の探索結果を参照して、１次レイが最初に交差する物体が近似仮想物体か否か判定する。ステップＳ１３０７において近似仮想物体であると判定された場合は、描画対象の点が現実物体上にあるので、処理をステップＳ１３０８に進める。ステップＳ１３０８では、実写画像の画素値を取得する。
【０１５７】
一方、ステップＳ１３０７で１次レイが仮想物体と交差すると判定した場合は、処理をステップＳ１３０９に進める。
【０１５８】
ステップＳ１３０９では、１次レイと物体との交点から光源にむけてシャドウレイを発生する。
【０１５９】
つづいてステップＳ１３１０では、シャドウレイと物体との交差を判定する。なお、この判定処理では、シャドウレイが最初に交差する物体を探索するのではなく、光源に至るまでに交差するすべての物体を探索する。探索結果は、ＲＡＭ１１０２に格納する。
【０１６０】
ステップＳ１３１１では、ステップＳ１３１０での探索結果を参照して描画対象の画素の画素値を算出し、ステップＳ１３１３へ進む。なお、ステップＳ１３１１における処理の詳細については後述する。
【０１６１】
ステップＳ１３１３では、生成する画像（複合現実感画像）のすべての画素について処理が完了したか否か判定する。係る判定の結果、処理が完了していれば処理をステップＳ１３１４に進め、完了していなければ処理をステップＳ１３０４に戻す。
【０１６２】
ステップＳ１３１４では、生成した画像のデータをＲＡＭ１１０２から読み出し、表示部１１０５に表示する。
【０１６３】
次に、ユーザから、本処理を終了させるための操作入力（例えば操作部１１０４に対する操作）が成されたり、本処理を終了する条件が満たされた場合にはステップＳ１３１５を介して本処理は終了する。一方、ユーザから、本処理を終了させるための操作入力は成されていないし、本処理を終了する条件も満たされていない場合にはステップＳ１３１５を介してステップＳ１３０１に処理を戻し、以降の処理を繰り返す。
【０１６４】
次に、ステップＳ１３１１における画素値算出処理について、より詳細に説明する。図１４は、ステップＳ１３１１における処理、即ち、画素値算出処理の詳細を示すフローチャートである。
【０１６５】
ステップＳ１４０１では、ステップＳ１３０５における処理結果を参照し、１次レイが交差した物体が近似仮想物体か否かを判定する。係る判定の結果、近似仮想物体であると判定した場合は、処理をステップＳ１４０２に進める。
【０１６６】
ステップＳ１４０２では、ステップＳ１３１０における探索結果を参照し、シャドウレイと物体との交差が存在するか否か判定する。交差が存在しない場合は、描画対象の画素に対して影の影響を反映させる必要がないので、そのまま処理を終了する。
【０１６７】
一方、ステップＳ１４０２において交差が存在すると判定する場合は、処理をステップＳ１４０３に進める。
【０１６８】
ステップＳ１４０３では、ステップＳ１３１０の処理結果を参照し、シャドウレイが交差する物体のうちいずれかが近似仮想物体であるか、あるいは全ての交差する物体が仮想物体であるかを判定する。前者の場合、描画対象の点はすでに現実物体から落ちる影の中にあるので、画素値を変更せずに処理を終了する。
【０１６９】
一方、後者の場合は描画対象の点が現実の影の領域外にあり、かつ仮想物体によって光源が遮蔽されているので、処理をステップＳ１４０４に進める。ステップＳ１４０４では、描画対象画素の画素値に影の効果を加える。具体的には、描画対象の点における近似仮想物体のマテリアル属性および光源の属性から、その点が光源に照らされていると仮定した場合に描画対象の画素に追加されたであろう画素値を計算し、描画対象の画素の画素値から差し引く。
【０１７０】
ところで、ステップＳ１４０１において１次レイが近似仮想物体に交差していないと判定した場合は、処理をステップＳ１４０５に進める。
【０１７１】
ステップＳ１４０５ではステップＳ１３１０における処理結果を参照し、シャドウレイが仮想物体あるいは近似仮想物体のいずれかに交差したか否か判定する。交差がある場合、描画対象の点（仮想物体上の点）はこの光源によって照らされていないので、この光源による陰影付け処理を行わない。すなわち、描画対象の画素の画素値を変更せずに処理を終了する。
【０１７２】
一方、ステップＳ１４０５でシャドウレイがいずれの物体とも交差していないと判定した場合は、描画対象の点がこの光源によって照らされているので、処理をステップＳ１４０６に進める。
【０１７３】
ステップＳ１４０６では、描画対象の点を含む仮想物体のマテリアル属性と光源の属性から、その点が光源に照らされて生ずる画素値の変化を計算値、描画対象画素の画素値に加える。
【０１７４】
以上説明した処理を行うことにより、現実物体から現実物体に影が落ちている領域については、仮想物体による影の影響を反映させないようにすることができる。この結果、現実物体と仮想物体の両方から影が投射される領域が不必要に暗く描画されてしまう問題を防止し、現実世界と仮想世界で光学的に整合性のとれた影を描画することが可能となる。
【０１７５】
なお、以上の説明では光源の数を１つとしたが、これに限るものではなく、光源の数が２つ以上であっても良い。光源の数が２以上である場合は、ステップＳ１３０９からステップＳ１３１１までの処理を各光源に対して繰り返せばよい。
【０１７６】
また、以上の説明は１次レイに関するものであるが、これに限るものではなく、２次以上のレイに関しても以上説明した方法は適用可能である。Ｎ次（Ｎは２以上の整数）レイについては前述の説明における「１次レイ」を「Ｎ次レイ」と読み替えればよい。
【０１７７】
［第８の実施形態］
第７の実施形態におけるシャドウレイの交差判定処理（ステップＳ１３１０における処理）では、仮想物体と近似仮想物体とを区別せずに処理対象としている。しかしながら、現実物体に対して現実物体から影が投射されていることを検知する為には、シャドウレイと近似仮想物体との交差を検査すれば十分である。したがって、シャドウレイの交差判定処理において、仮想物体よりも先に近似仮想物体との交差をチェックすると、より早く処理を打ち切ることができる。すなわち、処理の高速化が可能である。レイトレーシング法ではレイと物体との交差判定処理の負荷が高いので、この処理回数の低減は効果的である。
【０１７８】
そこで本実施形態では、仮想物体よりも先に近似仮想物体をシャドウレイとの交差判定対象とする。なお、本実施形態に適用する画像処理装置には、図１１に示したハードウェア構成を有するコンピュータを用いる。そして、本実施形態に係る画像処理装置が、光線追跡法に基づいて複合現実感画像を生成するための処理については、図１３に示したフローチャートと同様であるので、係る処理の説明は省略する。
【０１７９】
図１５は、本実施形態においてステップＳ１３１０で行う処理の詳細を示すフローチャートである。なお、「交差の探索」とは必ずしもレイと処理対象の物体すべてとの交差の有無を調べることではなく、レイと交差する対象が１つでも見つかれば処理を完了する。
【０１８０】
ステップＳ１５０１では、ステップＳ１３０５における処理結果を参照し、１次レイが近似仮想物体と交差したか否かを判定する。係る判定の結果、１次レイが近似仮想物体と交差したと判定した場合は、処理をステップＳ１５０２に進める。ステップＳ１５０２では、シャドウレイと近似仮想物体との交差を探索する。なお、ステップＳ１５０２における判定結果はＲＡＭ１１０２に格納する。
【０１８１】
次に、ステップＳ１５０３では、ステップＳ１５０２における処理結果を参照してシャドウレイと近似仮想物体との交差の有無を判定する。係る判定の結果、交差が存在すると判定した場合は、処理をステップＳ１５０４に進める。ステップＳ１５０４では、仮想物体との交差は検査せず、判定結果をＲＡＭ１１０２に記憶し、処理を終了する。なお、ステップＳ１５０４でＲＡＭ１１０２に格納する情報は、少なくともシャドウレイと物体との交差の有無と、交差が存在する場合は交差する物体の種類（仮想物体もしくは近似仮想物体）を含む。
【０１８２】
一方、ステップＳ１５０３でシャドウレイと近似仮想物体との交差が無いと判定した場合は、処理をステップＳ１５０５に進める。ステップＳ１５０５では、シャドウレイと仮想物体との交差を探索し、その後、処理をステップＳ１５０４に進める。
【０１８３】
なお、ステップＳ１５０１において１次レイが仮想近似物体と交差しない（仮想物体と交差する）と判定した場合は、処理をステップＳ１５０６に進める。ステップＳ１５０６では、シャドウレイと仮想物体もしくは近似仮想物体との交差を探索し、その後、処理をステップＳ１５０４に進める。
【０１８４】
ステップＳ１５０４における処理が終われば、シャドウレイの交差判定処理全体を終了する。
【０１８５】
以上の説明により、本実施形態によれば、現実物体が現実物体に対して影を投射する領域を描画する場合、シャドウレイと仮想物体との交差判定を省略することができるので、処理を高速化することができる。
【０１８６】
なお、第７の実施形態と同様に、光源の数は複数個あってもよいし、１次レイだけではなく２次以上のレイの場合も、本実施形態で述べた技術は同様に適用することができる。
【０１８７】
［第９の実施形態］
本実施形態では、実写画像中に写っている現実物体から現実物体への写り込みの像に対して、光学的に矛盾がないように仮想物体の写り込みを描画する方法を述べる。より具体的には、現実物体が現実物体に写り込んでいる領域を除外して、仮想物体の写り込みを描画する。
【０１８８】
図１６は、本実施形態に係るメインの処理を説明する図である。図１６では、現実物体と仮想物体とを含む複合現実空間を表している。
【０１８９】
図１６において、１６０１は、観察者の視点である現実のカメラ、に対応する仮想視点、１６０２は複合現実感画像を生成すべく複合現実空間を投影させるための投影面（画像面）である。１６０３は球形状の現実物体であり、係る現実物体１６０３が占める領域には、球形状の現実物体１６０３の形状を模擬する（同等の形状，同等のサイズ）近似仮想物体１６０３’（不図示）が配置されている。１６０４は球形状の現実物体であり、係る現実物体１６０４が占める領域には、球形状の現実物体１６０４の形状を模擬する（同等の形状，同等のサイズ）近似仮想物体１６０４’（不図示）が配置されている。１６０５は立方体形状の仮想物体である。
【０１９０】
ここで、仮想視点１６０１から画素１６０６を通して１次レイ１６０７を発生したときを考える。そして更に、１次レイ１６０７が点１６０８で近似仮想物体１６０３’と最初に交差し、点１６０８において１次レイ１６０７が反射する方向へ発生させた反射レイ１６０９が近似仮想物体１６０４’に最初に交差するとする。
【０１９１】
このとき、点１６０８における現実物体１６０４から現実物体１６０３への写り込みは、画素１６０６に対応する実写画像中の画素に現れている。したがって、画素１６０６に近似仮想物体１６０４’から近似仮想物体１６０３’への写り込みの影響を加えると、写り込みが二重になってしまうことになる。したがって、近似仮想物体から発する反射レイが最初に近似仮想物体に交差する場合は、写り込みの描画をしない。
【０１９２】
一方、同じく近似仮想物体から発する反射レイが最初に仮想物体に交差する場合は次のようになる。即ち、例えば、仮想視点１６０１から画素１６１０を通って近似仮想物体１６０３’に点１６１２で交差する１次レイ１６１１が反射した反射レイ１６１３が仮想物体１６０５と交差する場合、実写画像には仮想物体１６０５の写り込みは現れていない。そこで、その影響を計算して画素１６１０に加算する。
【０１９３】
以下、本実施形態に係るメインの処理について説明する。なお、ここでは反射レイを２次レイで打ち切るとする。なお、本実施形態に適用する画像処理装置には、図１１に示したハードウェア構成を有するコンピュータを用いる。
【０１９４】
図１７は、本実施形態に係る画像処理装置が、光線追跡法に基づいて仮想空間画像を生成するための処理のフローチャートである。
【０１９５】
ステップＳ１７００〜ステップＳ１７０３の各ステップにおける処理はそれぞれ、図９に示したステップＳ５００〜ステップＳ５０３と同じであるので、説明は省略する。
【０１９６】
続いて、ステップＳ１７０４では、仮想視点から描画対象の画素を通る１次レイを発生させる。
【０１９７】
次いで、ステップＳ１７０５では、１次レイと仮想物体もしくは近似仮想物体とが最初に交差する点、すなわち描画対象の点を探索し、探索結果をＲＡＭ１１０２に格納する。ここで、ステップＳ１７０５で格納する情報は、少なくとも１次レイと物体との交差の有無と、交差が存在する場合は交差する物体の種類（仮想物体もしくは近似仮想物体）を含む。
【０１９８】
次に、ステップＳ１７０６では、ステップＳ１７０５における探索結果を参照して、１次レイと物体との交差の有無を判定する。係る判定の結果、交差がないと判定した場合、描画対象の画素は背景に相当するので、処理をステップＳ１７１１に進める。ステップＳ１７１１では、実写画像の画素値を取得し、ステップＳ１７１２に進む。
【０１９９】
一方、ステップＳ１７０６において交差があると判定した場合は、処理をステップＳ１７０７に進める。
【０２００】
ステップＳ１７０７では、光源によって描画対象の点に生ずる陰影と、光源がいずれかの物体に遮蔽されて生ずる影の影響を算出し、描画対象の画素の画素値を設定する。ステップＳ１７０７における処理の内容は、第７の実施形態において説明済みであるのでここではその説明は省略する。
【０２０１】
次に、ステップＳ１７０８では、１次レイと物体との交点から反射レイを発生させる。
【０２０２】
そして、ステップＳ１７０９では、反射レイと最初に交差する物体を探索する。ステップＳ１７０９における探索結果はＲＡＭ１１０２に格納する。
【０２０３】
次に、ステップＳ１７１０では、ステップＳ１７０５における処理結果と、ステップＳ１７０９における処理結果に基づいて、反射光による陰影付けを行う。ステップＳ１７１０における処理の詳細については後述する。
【０２０４】
次に、ステップＳ１７１２では、生成する画像のすべての画素について処理が完了したか否かを判定する。係る判定の結果、処理が完了していればステップＳ１７１３に進み、完了していなければステップＳ１７０４に戻る。
【０２０５】
ステップＳ１７１３では、生成した画像のデータをＲＡＭ１１０２から読み出し、表示部１１０５に表示する。
【０２０６】
次に、ユーザから、本処理を終了させるための操作入力（例えば操作部１１０４に対する操作）が成されたり、本処理を終了する条件が満たされた場合にはステップＳ１７１４を介して本処理は終了する。一方、ユーザから、本処理を終了させるための操作入力は成されていないし、本処理を終了する条件も満たされていない場合にはステップＳ１７１４を介してステップＳ１７０１に処理を戻し、以降の処理を繰り返す。
【０２０７】
次に、上記ステップＳ１７１０における処理の詳細について説明する。
【０２０８】
図１８は、ステップＳ１７１０における処理、即ち、反射光による陰影付け処理、の詳細を示すフローチャートである。
【０２０９】
先ず、ステップＳ１８００では、ステップＳ１７０９における処理結果を参照して、反射レイといずれかの物体との交差の有無を判定する。係る判定の結果、交差が存在すると判定した場合は、処理をステップＳ１８０１に進める。一方、交差が無いと判定した場合は、描画対象の点への写り込みはないので処理を終了する。
【０２１０】
ステップＳ１８０１では、ステップＳ１７０５における処理結果を参照して、１次レイが最初に交差した物体が近似仮想物体であるか否かを判定する。係る判定の結果、近似仮想物体であると判定した場合には、処理をステップＳ１８０２に進める。
【０２１１】
ステップＳ１８０２では、ステップＳ１７０９における処理結果を参照して、反射レイと最初に交差する物体が近似仮想物体であるか否かを判定する。係る判定の結果、ステップＳ１８０２で近似仮想物体であると判定した場合には、実画像中に現実物体から現実物体への写り込みがすでに含まれているので、写り込みの影響を画素に追加する処理を行わず処理を終了する。
【０２１２】
一方、ステップＳ１８０２において、反射レイが最初に交差する物体が仮想物体であると判定した場合には、処理をステップＳ１８０３に進める。
【０２１３】
ステップＳ１８０３では、反射レイと物体とが交差する点における陰影を算出する。係る処理は、ステップＳ１７０７における処理と同様である。
【０２１４】
次に、ステップＳ１８０４では、ステップＳ１８０３で算出した交差点の陰影が反射して画素値に与える影響を算出し、描画対象の画素の画素値に加算する。ここで言う「画素値に与える影響」とは、ステップＳ１８０３で算出した陰影に、描画対象の点における反射レイ方向から１次レイ方向への反射率を掛け合わせることによって求める。
【０２１５】
一方、ステップＳ１８０５では、ステップＳ１７０９における処理結果を参照して、反射レイがいずれかの物体と交差するか否かを判定する。係る判定の結果、交差が存在する場合は、処理をステップＳ１８０３に進める。そしてステップＳ１８０３における処理が完了すると、ステップＳ１８０４に処理を進め、反射レイが交差する物体からの写り込みの影響を描画対象の画素の画素値に加算する。
【０２１６】
一方、ステップＳ１８０５において交差が存在しないと判定した場合は、写り込みが存在しないので描画対象の画素の画素値を変更せず処理を終了する。
【０２１７】
以上の説明により、本実施形態によれば、現実物体から現実物体へと写り込みが生じている領域については仮想物体による写り込みの影響を反映させないようにすることができる。この結果、写り込みの影響が二重に画素値に反映されてしまう問題を防止し、現実世界と仮想世界とで光学的に整合性のとれた写り込みを描画することが可能となる。
【０２１８】
なお、上記の説明では反射光に関する処理について説明したが、反射光を屈折光に置き換えても処理の内容は同じである。すなわち、本実施形態は屈折光にも適用可能である。  ［第１０の実施形態］
第９の実施形態では、反射レイを２次までに限定していた。本実施形態では任意の次数の反射レイまでを考慮に入れて、現実物体から現実物体への写り込みと矛盾が生じないように仮想物体の写り込みを描画する方法を示す。
【０２１９】
高次のレイが交差する物体からの写り込みの影響は、レイを逆にたどる形で伝播し、画素値に反映される。したがって、いずれかの反射レイについて、下記の条件のいずれかが成り立つとき、仮想物体の影響を画素値に加えなければならなくなる。すなわち、実写画像中に現れている写り込みの像の画素値を変更せずに、生成する画像に用いることはできない。
【０２２０】
・  反射レイが仮想物体に交差する
・  反射レイが交差する点に仮想物体からの反射光あるいは屈折光が入射する
・  反射レイが交差する点に仮想物体から影が落ちる
逆に言えば、ある描画対象の画素を通して光線を追跡していく過程でレイが交差するすべての点について仮想物体からの影響を受けていなければ、その画素の画素値は実写画像の対応する画素の画素値と同じになる。
【０２２１】
そこで、本実施形態での描画方法では、追跡したすべてのレイが近似仮想物体と交差するという条件を満たす場合は、実写画像の画素の画素値を描画対象の画素の画素値とする。その条件が満たされない場合は、仮想物体の影響を算出する。
【０２２２】
以下に、本実施形態における描画処理の流れを説明する。
【０２２３】
ここで、以下の説明では、反射レイを第ｎ次まで発生させるとする。また、光源が物体に遮蔽されることによる影の影響は考えないこととする。
【０２２４】
なお、本実施形態に適用する画像処理装置には、図１１に示したハードウェア構成を有するコンピュータを用いる。図１９は、本実施形態に係る画像処理装置が生成する画像の各画素に関して係る画像処理装置が行う処理のフローチャートである。１枚の画像を生成する場合は、各画素に対して図１９の処理を施せばよい。
【０２２５】
ステップＳ１９０１でレイの次数を示す変数ｉを１に初期化する。
【０２２６】
次にステップＳ１９０２では、第ｉ次のレイを発生させる。
【０２２７】
そしてステップＳ１９０３では、発生させたレイと物体との交差を探索し、探索結果をＲＡＭ１１０２に格納する。ここで処理結果のデータには少なくとも、レイの次数・第ｉ次のレイと物体との交差の有無・第ｉ次のレイと最初に交差する物体の種類（仮想物体もしくは近似仮想物体）を含む。
【０２２８】
次にステップＳ１９０４では、陰影の計算に必要な第ｉ次のレイをすべて処理したか否かを判定する。ここで、陰影の計算に必要なレイの種類はレイトレーシングの計算手法によって異なり、例えば鏡面反射光に対応するレイだけを用いる場合もあれば、さらに拡散反射光に対応するレイを用いる場合もある。いずれにしろ、ステップＳ１９０４では各計算手法で用いるすべてのレイについて判定する。そして、係る判定の結果、すべてのレイを処理したと判断した場合は、処理をステップＳ１９０５に進める。一方、未処理のレイがあると判断した場合は、処理をステップＳ１９０２に戻し、未処理のレイを選択して処理を進める。
【０２２９】
ステップＳ１９０５では、レイ発生の終了条件を判定する。すなわち、各次数について発生したすべてのレイがいずれの物体とも交差しないか否かを判定し、交差しない場合には、処理をステップＳ１９１０に進める。一方、いずれかのレイがいずれかの物体と交差した場合、処理をステップＳ１９０６に進める。
【０２３０】
ステップＳ１９０６では変数ｉの値が１であるか否かを判定する。係る判定の結果、変数ｉの値が１である場合（第１次レイの場合）には処理をステップＳ１９０７に進め、１ではない場合には処理を１９０９に進める。
【０２３１】
ステップＳ１９０９では、次数を上げるべく、変数ｉの値を１つインクリメントし、その後、処理をステップＳ１９０２に進める。
【０２３２】
一方、ステップＳ１９０７では、レイが交差した物体が近似仮想物体であるか否かを判定する。係る判定の結果、レイが交差した物体が近似仮想物体である場合には処理をステップＳ１９０８に進める。ステップＳ１９０８では、描画対象画素について画素値を実写画像から取得する。一方、レイが交差した物体が近似仮想物体ではない場合には、処理をステップＳ１９０９に進める。
【０２３３】
一方、ステップＳ１９１０では、変数ｉの値が１であるか否か、即ち、レイの次数が１であるか否かを判定する。係る判定の結果、レイの次数が１であると判定した場合には、描画対象の画素は背景の領域に属するので、処理をステップＳ１９１１に進める。
【０２３４】
そしてステップＳ１９１１では、実写画像から画素値を取得する。
【０２３５】
一方、レイの次数が１ではないと判定した場合には、処理をステップＳ１９１２に進める。
【０２３６】
ステップＳ１９１２では、ステップＳ１９０３における処理結果を参照し、ここまでの処理で発生したすべてのレイが近似仮想物体と交差し、かつ第１次レイが交差する物体が近似仮想物体であるか否かを判定する。この条件が満たされない場合は、現実物体に仮想物体の陰影が影響しているので、処理をステップＳ１９１３に進める。
【０２３７】
ステップＳ１９１３では、発生したすべてのレイに関して陰影付けの計算を行い、描画対象の画素値に追加する。
【０２３８】
一方、ステップＳ１９１２において上記条件が満たされたと判定した場合は、描画対象の点に仮想物体の陰影の影響が及んでいないので、そのまま処理を終了する。
【０２３９】
即ち本実施形態によれば、現実物体が現実物体にしか写り込まない場合のみ、実写画像に含まれる現実の写り込みの像を用い、それ以外の場合は仮想物体からの写り込みの影響を画素値に加える。これにより、光学的に整合性を保った写り込みの像を描画することができる。
【０２４０】
なお、上記の説明では、写り込みに関する方法を示したが、反射レイの替わりに透過レイを処理対象にすることによって、屈折の像に対しても本実施形態の方法を適用することが出来る。さらには、反射レイおよび透過レイの両方を処理すれば、写り込み・屈折の両方を含む画像に関しても本実施形態の方法を適用することが出来る。
【０２４１】
さらに、上記の説明では、影については無視している。しかし例えば、何れかのシャドウレイが仮想物体のみに交差する場合には仮想物体による影響を画素値に加味し、それ以外の場合には実写画像の画素値を変更せずに用いる、という場合分けを行うことで、影が存在する場合についても本実施形態を適用できる。
【０２４２】
［第１１の実施形態］
第７の実施形態から第１０の実施形態は、図１１に示したハードウェア構成を有するコンピュータでもって実現されるものとして説明した。しかし、第７の実施形態から第１０の実施形態は、係る構成有する装置で実現されることに限定されるものではなく、その他の構成を有する装置でもって実現させても良い。例えば、図４に示したハードウェア構成を有する装置でもって実現させても良い。
【０２４３】
［その他の実施形態］
また、本発明の目的は、以下のようにすることによって達成されることはいうまでもない。即ち、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記録媒体（または記憶媒体）を、システムあるいは装置に供給する。係る記憶媒体は言うまでもなく、コンピュータ読み取り可能な記憶媒体である。そして、そのシステムあるいは装置のコンピュータ（またはＣＰＵやＭＰＵ）が記録媒体に格納されたプログラムコードを読み出し実行する。この場合、記録媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記録した記録媒体は本発明を構成することになる。
【０２４４】
また、コンピュータが読み出したプログラムコードを実行することにより、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム（ＯＳ）などが実際の処理の一部または全部を行う。その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【０２４５】
さらに、記録媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれたとする。その後、そのプログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【０２４６】
本発明を上記記録媒体に適用する場合、その記録媒体には、先に説明したフローチャートに対応するプログラムコードが格納されることになる。
【図面の簡単な説明】
【０２４７】
【図１】光線追跡法に基づいて光線をとばす場合に生じうる問題について説明する図である。
【図２】光線追跡法に基づいて光線をとばす場合に生じうる問題について説明する図である。
【図３】光線追跡法に基づいて光線をとばす場合に生じうる問題について説明する図である。
【図４】本発明の第１の実施形態に係る画像処理装置の機能構成を示すブロック図である。
【図５】本発明の第１の実施形態に係る画像処理装置が、光線追跡法に基づいて仮想空間画像を生成するための処理のフローチャートである。
【図６】光線追跡法に基づいて画像を生成する仕組みを説明する図である。
【図７】光線が近似仮想物体に連続して交差した場合に係る光線の発生を抑制することで光学的不整合が生じるケースを説明する図である。
【図８】本発明の第２の実施形態に係る画像処理装置が、光線追跡法に基づいて仮想空間画像を生成するための処理のフローチャートである。
【図９】本発明の第３の実施形態に係る画像処理装置が、光線追跡法に基づいて仮想空間画像を生成するための処理のフローチャートである。
【図１０】交点間距離の情報を利用して、影を描画すべきか否かを判定するための処理を説明する図である。
【図１１】仮想空間ＤＢ４０１を除く他の各部に対応するコンピュータプログラムを実行可能なコンピュータのハードウェア構成例を示すブロック図である。
【図１２】本発明の第７の実施形態に係るメインの処理を説明する図である。
【図１３】本発明の第７の実施形態に係る画像処理装置が、光線追跡法に基づいて複合現実感画像を生成するための処理のフローチャートである。
【図１４】ステップＳ１３１１における処理、即ち、画素値算出処理の詳細を示すフローチャートである。
【図１５】本発明の第８の実施形態においてステップＳ１３１０で行う処理の詳細を示すフローチャートである。
【図１６】本発明の第９の実施形態に係るメインの処理を説明する図である。
【図１７】本発明の第９の実施形態に係る画像処理装置が、光線追跡法に基づいて複合現実感画像を生成するための処理のフローチャートである。
【図１８】ステップＳ１７１０における処理、即ち、反射光による陰影付け処理、の詳細を示すフローチャートである。
【図１９】本発明の第１０の実施形態に係る画像処理装置が生成する画像の各画素に関して係る画像処理装置が行う処理のフローチャートである。
【図１】
0004999711.tif 000002
【図２】
0004999711.tif 000003
【図３】
0004999711.tif 000004
【図４】
0004999711.tif 000005
【図５】
0004999711.tif 000006
【図６】
0004999711.tif 000007
【図７】
0004999711.tif 000008
【図８】
0004999711.tif 000009
【図９】
0004999711.tif 000010
【図１０】
0004999711.tif 000011
【図１１】
0004999711.tif 000012
【図１２】
0004999711.tif 000013
【図１３】
0004999711.tif 000014
【図１４】
0004999711.tif 000015
【図１５】
0004999711.tif 000016
【図１６】
0004999711.tif 000017
【図１７】
0004999711.tif 000018
【図１８】
0004999711.tif 000019
【図１９】
0004999711.tif 000020