(57)【要約】【課題】  蛍光物質を含む物体が存在するシーンをより忠実に再現する。【解決手段】  シーンを描画する際、光線の波長ごとに、視点16から光線を追跡する。光線16が蛍光物質を含む物体14に当ると、物体14から蛍光が放出されるか否かを判定する。物体14から蛍光が放出される場合、視点16から物体14の間において蛍光を追跡する。【選択図】  図8
2015114131.tif 000002
【特許請求の範囲】
【請求項１】
シーンを描画する際、光線の波長ごとに、視点から光線を追跡する追跡手段と、
前記光線が蛍光物質を含む物体に当ると、前記物体から蛍光が放出されるか否かを判定する判定手段とを有し、
前記物体から蛍光が放出される場合、前記追跡手段は、前記視点から前記物体の間において前記蛍光を追跡する画像処理装置。
【請求項２】
前記判定手段は、前記光線の波長が前記蛍光物質の励起波長に該当する場合、前記物体から蛍光が放出されると判定する請求項1に記載された画像処理装置
【請求項３】
前記追跡手段は、前記物体から放出される蛍光の波長ごとに複数の追跡を行い、前記視点から前記物体の間における前記光線の追跡結果に、前記複数の追跡結果を加える請求項1または請求項2に記載された画像処理装置。
【請求項４】
前記追跡手段は、前記視点から光源までの前記光線の追跡において、前記光線が物体に当った記録を交差履歴として保持する請求項1から請求項3の何れか一項に記載された画像処理装置。
【請求項５】
前記追跡手段は、前記蛍光の追跡において、前記交差履歴に基づき前記蛍光が当る物体の反射特性または透過特性を取得する請求項4に記載された画像処理装置。
【請求項６】
さらに、前記蛍光物質の蛍光特性データを記憶する記憶手段を有し、前記蛍光特性データを参照して前記判定および前記蛍光の追跡が行われる請求項1から請求項4の何れか一項に記載された画像処理装置。
【請求項７】
前記蛍光特性データは、蛍光の波長、および、励起波長の入射光の強度と蛍光波長の蛍光の強度の比を示すテーブルである請求項6に記載された画像処理装置。
【請求項８】
シーンを描画する際、光線の波長ごとに、光源から放出される光線を追跡する追跡手段と、
前記光線が蛍光物質を含む物体に当ると、前記物体から蛍光が放出されるか否かを判定する判定手段と、
前記物体から蛍光が放出されない場合は前記光線の強度を変更し、前記物体から蛍光が放出される場合は前記光線の波長と強度を変更する変更手段とを有する画像処理装置。
【請求項９】
さらに、前記光線が当る物体について、前記波長ごとに、前記光源からのエネルギ寄与を算出し、前記エネルギ寄与から分光放射輝度を推定する推定手段を有する請求項8に記載された画像処理装置。
【請求項１０】
シーンを描画する際、光線の波長ごとに、視点から光線を追跡し、
前記光線が蛍光物質を含む物体に当ると、前記物体から蛍光が放出されるか否かを判定し、
前記物体から蛍光が放出される場合、前記視点から前記物体の間において前記蛍光を追跡する画像処理方法。
【請求項１１】
シーンを描画する際、光線の波長ごとに、光源から放出される光線を追跡し、
前記光線が蛍光物質を含む物体に当ると、前記物体から蛍光が放出されるか否かを判定し、
前記物体から蛍光が放出されない場合は前記光線の強度を変更し、
前記物体から蛍光が放出される場合は前記光線の波長と強度を変更する画像処理方法。
【請求項１２】
コンピュータを請求項1から請求項9の何れか一項に記載された画像処理装置の各手段として機能させるためのプログラム。
【請求項１３】
請求項12に記載されたプログラムが記録されたコンピュータが読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、光線を追跡してシーンを描画する画像処理に関する。
【背景技術】
【０００２】
コンピュータグラフィクス(CG)は、様々な分野で利用され、設計やデザインの分野にも普及している。設計やデザインの分野では、実物により忠実な画像を生成する技術が要求される。
【０００３】
実物に忠実な映像をCGを用いて生成する技術として、特許文献1に示されるような光線追跡法を利用したレンダリング手法が提案されている。また、CGと、ディジタルカメラやディジタルビデオカメラなどで撮像した実写画像を合成して、今までにない新しい映像表現が可能になりつつある。
【０００４】
実物に忠実なシーンをCGで再現し、実写映像と合成するには、シーンが実物に忠実だけでなく、蛍光現象も再現できることが重要である。しかし、特許文献1に記載された方法だけでは、蛍光を再現することができず、別途何等かの方法で蛍光を再現する必要がある。
【０００５】
非特許文献1は、光線追跡後の画像に対して、色変換テーブルを用いて蛍光を再現する方法を開示する。しかし、非特許文献1が開示する方法は、蛍光が反射した二次反射光を再現することができず、蛍光物質を有する物体そのものの表現することができても、当該物体の周辺の物体の再現が充分ではない問題がある。この問題は、光線追跡法が、光の波長が変化しない前提で光線追跡を行うことに起因する。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開2011-017541号公報
【非特許文献】
【０００７】
【非特許文献１】Matthias B. Hullin et. al.「Acquisition and Analysis of Bispectral Bidirectional Reflectance and Reradiation Distribution Functions」SIGGRAPH 2010
【発明の概要】
【発明が解決しようとする課題】
【０００８】
本発明は、蛍光物質を含む物体が存在するシーンをより忠実に再現することを目的とする。
【課題を解決するための手段】
【０００９】
本発明は、前記の目的を達成する一手段として、以下の構成を備える。
【００１０】
本発明にかかる画像処理は、シーンを描画する際、光線の波長ごとに、視点から光線を追跡し、前記光線が蛍光物質を含む物体に当ると、前記物体から蛍光が放出されるか否かを判定し、前記物体から蛍光が放出される場合、前記視点から前記物体の間において前記蛍光を追跡する。
【発明の効果】
【００１１】
本発明によれば、蛍光物質を含む物体が存在するシーンをより忠実に再現することができる。
【図面の簡単な説明】
【００１２】
【図１】蛍光物質における励起波長と蛍光波長を説明する図。
【図２】実施例の画像処理を実行する情報処理装置の構成例を示すブロック図。
【図３】蛍光物質の蛍光特性データの一例を示す図。
【図４】実施例の画像処理を説明するフローチャート。
【図５】結果バッファの構成例を示す図。
【図６】光線追跡処理を説明するフローチャート。
【図７】反射特性と透過特性の取得を説明するフローチャート。
【図８】反射特性と透過特性の取得手順を説明する図。
【図９】分光放射輝度の算出処理を説明するフローチャート。
【図１０】実施例2の画像処理を説明するフローチャート。
【図１１】光線の放出処理を説明するフローチャート。
【図１２】分光放射輝度の推定処理を説明するフローチャート。
【図１３】光線追跡法による処理の概要を説明する図。
【発明を実施するための形態】
【００１３】
以下、添付する図面を参照して、本発明の実施形態を説明する。なお、以下の実施例に示す構成は一例に過ぎず、本発明は図示された構成に限定されるものではない。
【００１４】
光が蛍光物質に当たると、波長に依存して、物体表面で反射したり、光の波長を変えたりする。波長が変わる光を励起光といい、励起光の波長は蛍光物質によって異なる。蛍光物質に当たった励起光の一部が波長を変え、蛍光物質から蛍光として放出される。
【００１５】
図1により蛍光物質における励起波長と蛍光波長を説明する。蛍光物質は、励起光を吸収し、蛍光を放出する。図1に示すように、単一波長の励起光は、単一波長の蛍光に変化するのではなく、所定の波長分布を有する蛍光に変化する。
【００１６】
蛍光を考慮する場合、光線追跡法によって追跡する光線の波長が物体によって変化することになる。従って、蛍光を忠実に再現するには、光線追跡の途中の波長変化を再現する必要がある。また、正確に色を再現するには、光源から発せられる光線の全波長に対して光線追跡を行う必要がある。
【００１７】
しかし、全波長について光線追跡を行うことは計算量の増大を招く。実施例では、光線の代表的な波長を抽出し、分光光線追跡の結果に基づき画像を生成する。以下、本発明にかかる実施例の画像処理を図面を参照して詳細に説明する。
【実施例１】
【００１８】
［装置の構成］
図2のブロック図により実施例の画像処理を実行する情報処理装置の構成例を示す。
【００１９】
CPU201は、RAMなどのメインメモリ202をワークメモリとして、ROM209や記憶部203に格納されたオペレーティングシステム(OS)やプログラムを実行し、システムバス206を介して後述する構成を制御する。なお、記憶部203は、ハードディスクドライブ(HDD)やソリッドステートドライブ(SSD)などであり、後述する色処理を実現するプログラムや各種データを格納する。
【００２０】
USBやIEEE1394などの汎用インタフェイス(I/F)204には、キーボードやマウスなどの操作部207、分光測定器などの測定器208、メモリカードやUSBメモリのような記録媒体210などが接続される。また、ビデオカード(VC)205には、モニタ211が接続される。CPU201は、ユーザインタフェイス(UI)、および、処理経過や処理結果などを示す情報をモニタ211に表示する。
【００２１】
例えば、CPU201は、操作部207を介して入力されるユーザ指示に従い、記憶部203または記録媒体210に格納されたアプリケーションプログラム(AP)をメインメモリ202の所定領域にロードする。そして、APを実行し、APに従いモニタ211にUIを表示する。
【００２２】
次に、CPU201は、ユーザによるUIの操作に従い、記憶部203や記録媒体210に格納された各種データや測定器208から測定データを入力し、メインメモリ202の所定領域にロードする。そして、APに従いメインメモリ202にロードした各種データに所定の演算処理を施す。そして、CPU201は、ユーザによるUIの操作に従い演算処理結果をモニタ205に表示したり、記憶部203や記録媒体210に格納する。
【００２３】
なお、CPU201は、システムバス206に接続された図示しないネットワークI/Fを介して、有線または無線ネットワーク上のサーバ装置との間でプログラム、データ、演算処理結果の送受信を行うこともできる。また、情報処理装置としてタブレット型コンピュータを利用することも可能であり、その場合、モニタ211のスクリーン上に重畳されたタッチパネルが操作部207である。
【００２４】
［蛍光の再現］
実施例1における、蛍光の再現について説明する。蛍光物質は、励起光を吸収し、蛍光を放出する。この現象をCGで再現するため、一般的な光を拡散する物質と異なり、蛍光物質については物体の双方向反射特性(BRDF)ではなく、蛍光特性データを用いて計算を行う。
【００２５】
図3により蛍光物質の蛍光特性データの一例を示す。蛍光は所定の波長分布を有するため（図1参照）、励起光に対する蛍光の波長と強度分布を示すテーブルを蛍光特性データとし、シーンに含まれる、蛍光物質を有する物体（以下、蛍光物体）ごとに蛍光特性データを用意する。
【００２６】
実施例の画像処理は、蛍光物質に励起波長に該当する光が当った場合、通常の光線追跡と異なり、波長を変化させて光線追跡を行う。光線追跡の途中で光線の波長を変化させることで、蛍光物質から発せられる蛍光現象を再現する。その結果、蛍光が反射した二次反射光の再現や、特定の光源環境以外における蛍光現象の再現が可能になる。
【００２７】
●交差履歴
光線追跡において光線波長の変化を実現するために、光線追跡の際に光線が物体に当った記録（以下、交差履歴）を利用する。ここで、交差履歴について説明する。
【００２８】
光線追跡法は、視点から光源に向かって光線を逆追跡し、レンダリング領域における分光放射輝度を計算する。通常の分光光線追跡であれば、光線が物体に当る度に、光線の波長における当該物体の分光反射率を乗算する。しかし、光線が蛍光物体に当り、かつ、光線の波長が励起波長の場合、蛍光現象により波長が変化する。そのため、蛍光物体から視点の間、つまり視点から蛍光物体までの経路において参照すべき分光反射率が、光線の波長における分光反射率と異なることになる。
【００２９】
さらに、蛍光物体から発せられた蛍光が、他の蛍光物体の励起光になることも考えられる。そのため、視点から光源までの光線の経路において、どのような物体に光線が当ったかを記録しておく必要がある。この物体と光線の交差の過程の記録が交差過程記録（交差履歴）である。
【００３０】
レンダリング中、交差履歴は、メインメモリ202などに保存され、光線が物体に当るごとに更新され、光線が蛍光物体に当った場合は光線強度を再計算するために参照される。
【００３１】
［光線追跡の概要］
図13により光線追跡法による処理の概要を説明する。図13(A)に示すように、描画（レンダリング）時に、シーンを観察する視点位置（視点1201）、視野角1204、前方クリップ面1202、後方クリップ面1203を決定する。そして、視野角1204を示す半直線、前方クリップ面1202、後方クリップ面1203が囲む台形領域1205を描画領域とする。
【００３２】
描画領域205が決定すると、図13(B)に示すように、視点1201から前方クリップ面1202に、画素ごと、光線を逆追跡する。描画結果を例えば800×600画素で表示する場合、前方クリップ面1202を800×600のセルに分割し、視点1201から各画素の中心を結ぶ線分を光線とする。なお、前方クリップ面1202のセルは、描画する画像の画素に対応する。
【００３３】
［画像処理］
図4のフローチャートにより実施例の画像処理を説明する。なお、図3に示す処理は、画像生成処理用APに従いCPU201により実行される。
【００３４】
CPU201は、光線追跡結果を保持する結果バッファをメインメモリ202の所定領域に割り当て、結果バッファを初期化する(S601)。結果バッファは、可視光域（380nmから780nm）の光線追跡結果を保持するバッファである。
【００３５】
図5により結果バッファ701の構成例を示す。結果バッファ701は、光線が非蛍光物質に当った場合や、励起光ではない光線が蛍光物体に当った場合の拡散光の計算結果のほか、蛍光物体から発せられた蛍光の計算結果を保持する。結果バッファ701により、各波長の光線強度の計算結果を扱うことができる。
【００３６】
図5に示す結果バッファ701は一画素分のバッファを示し、結果バッファ701の領域は、現在追跡中の光線（以下、注目光線）の強度などを保持する追跡結果保存部である。また、複数の領域703は蛍光の放射輝度などを保持する蛍光放射輝度保存部である。複数の領域703のそれぞれは、保持すべき蛍光の波長が異なる。
【００３７】
例えば、波長380nmの光線追跡において、注目光線が励起波長380nm、蛍光波長410-430nmの蛍光物質に当ると、領域702に注目光線の追跡結果が保存される。また、複数の領域703に例えば波長410nm、420nm、430nmの蛍光の分光放射輝度が保存される。なお、説明を容易にするために、図5には領域702と複数の領域703を分割した例を示すが、それら領域は明瞭に分割されたものではなく連続した領域として結果バッファ701に割り当てられる。
【００３８】
次に、CPU201は、注目光線の波長を初期化する(S602)。例えば、注目光線の波長は380nmに初期化され、その後、レンダリングの進捗に伴い、390nm、400nm、…、780nmと10nmピッチでインクリメントされる。
【００３９】
次に、CPU201は、CGシーンデータを読み込む(S603)。そして、光線追跡を行うべき画素位置を設定する(S604)。これは、光線追跡結果を、前方クリップ面1202に位置する画像（以下、描画画像）として扱い、前方クリップ面1202のセル（描画画像の画素）ごとに光線追跡を行うためである。画素位置は、描画画像の例えば左上からラスタ順に走査されるが、画素位置の設定順はこれに限らない。
【００４０】
次に、CPU201は、詳細は後述するが、注目光線について光線追跡を行う(S605)。そして、描画画像の全画素について注目光線の光線追跡が終了したか否かを判定し(S606)、未了であれば処理をステップS604に戻して、描画画像の全画素で注目光線の光線追跡が終了するまでステップS604とS605を繰り返す。
【００４１】
描画画像の全画素で注目光線の光線追跡が終了すると、CPU201は、光線追跡を行う全波長（例えば380-780nm）について光線追跡が終了したか否かを判定する(S607)。未了の場合は注目光線の波長を例えば10mmインクリメントし(S608)、処理をステップS604に戻して、全波長の光線追跡が終了するまでステップS604からS606を繰り返す。なお、波長のインクリメントピッチは10nmに限らず、より粗い20nmや50nm、あるいは、より細かい5nmなど、装置の処理速度、描画時間、描画精度などに応じてピッチを設定すればよい。
【００４２】
全波長の光線追跡が終了すると、CPU201は、結果バッファ701に格納された分光放射輝度を出力する(S609)。例えば、CPU201は、分光放射輝度をsRGBなどの画像データに変換し、当該画像データをVC205を介してモニタ211に出力してCGシーンデータに対応する画像を表示する。あるいは、当該画像データを汎用I/F204を介して記録媒体210に格納する。勿論、結果バッファ701に格納された分光放射輝度は、そのまま画像処理結果として他の装置に出力されたり、記録媒体210に格納されることもある。
【００４３】
●分光放射輝度の変換処理
以下では、画素の分光放射輝度を色信号に変換する処理(S609)を説明する。なお、以下の説明では、色信号をsRGBとして説明するが、AdobeRGBなどの他の色信号でも構わない。
【００４４】
CPU201は、分光放射輝度を色信号に変換するための視覚特性に対応する変換関数を例えば記憶部203からする。当該変換関数は、例えば、CIEXYZ表色系の等色関数x(λ)y(λ)z(λ)である。
【００４５】
次に、CPU201は、結果バッファ701からラスタ順に描画画像の注目画素の分光放射輝度Ex(λ)を取得し、下式により、等色関数を用いて注目画素の分光放射輝度をCIEXYZ値に変換する。
X = k∫Ex(λ)x(λ)d(λ)；
Y = k∫Ex(λ)y(λ)d(λ)；
Z = k∫Ex(λ)z(λ)d(λ)；      …(1)
ここで、kは定数、
積分範囲は例えば380nmから780nm。
【００４６】
次に、CPU201は、下式により、注目画素のCIEXYZ値をRGB信号値に変換する。
┌       ┐ ┌                       ┐┌ ┐
│RLinear│ │ 3.2406 -1.5372 -0.4986││X│
│GLinear│=│-0.9689  1.8758  0.0415││Y│      …(2)
│BLinear│ │ 0.0557 -0.2040  1.0570││Z│
└       ┘ └                       ┘└ ┘
【００４７】
次に、CPU201は、下式により、注目画素のRGB信号値をsRGB信号値に変換する。
if (RLinear≦0.0031308)
R = 12.92・RLinear；
else
R = 1.055・RLinear1.0/2.4 - 0.055；
if (GLinear≦0.0031308)
G = 12.92・GLinear；
else
G = 1.055・GLinear1.0/2.4 - 0.055；
if (BLinear≦0.0031308)
B = 12.92・BLinear；
else
B = 1.055・BLinear1.0/2.4 - 0.055；      …(3)
【００４８】
CPU201は、上記の処理を描画画面の全画素に対して行い、描画画面に対応する画像データを生成する。
【００４９】
●光線追跡
図6のフローチャートにより光線追跡処理(S605)を説明する。
【００５０】
図6には一つの注目光線分の光線追跡処理を示すが、図6の処理は、光線ごとに、シーンにおいて、光線が物体に当らない、または、光線が光源に当るが検出されるまで、再帰的に呼び出される。そして、光線ごとに算出された分光放射輝度の平均値によって画素の分光放射輝度が決定される。ここでは、波長λの単色光の処理を説明するが、以下の処理を、ステップS602またはS608で設定された波長ごとに行うことで、各波長の分光放射輝度が得られる。
【００５１】
CPU201は、追跡の開始点から飛ばした注目光線がシーンに含まれる物体に当る点（以下、衝突点）を探索する(S801)。開始点は画素または衝突点である。なお、衝突点の探索は所望の方法で行えばよく、例えば、シーン内のすべての物体について、注目光線が当る点を順次判定して、開始点に最も近い点を衝突点とすればよい。
【００５２】
次に、CPU201は、注目光線が物体または光源に当ったか否かの判定(S802)、注目光線が光源に当ったか否かの判定(S803)を行う。注目光線が物体または光源に当らなかった場合は、注目光線の分光放射輝度を0として(S804)、注目光線の追跡を終了する。
【００５３】
また、注目光線が光源に当った場合、CPU201は、下式により、注目光線の強度と光源特性データから、注目光線の分光放射輝度E0(λ)を算出し(S805)、注目光線の追跡を終了する。注目光線の分光放射輝度E0(λ)は、結果バッファ701の追跡結果保存部702に一時保存され、分光放射輝度の変換処理に使用される。
E0(λ) = P0(λ)Q(θ)S(λ)      …(4)
ここで、P0(λ)の注目光線の強度、
θは注目光線の入射角、
Q(θ)は光源のθ方向の配光特性、
S(λ)は光源の分光放射輝度。
【００５４】
光源特性データQ(θ)とS(λ)は、光源における光線の射出方向と光線の強度の関係を表す。従って、衝突点における光源の法線と光源に入射する注目光線がなす角度（入射角）に基づき、光源からの光線の強度が算出される。なお、詳細は後述するが、光源に当るまでに、注目光線が当った物体に蛍光物質が含まれているか否か、注目光線が当該蛍光物質の励起波長か否かによって、分光放射輝度の計算が変化する。
【００５５】
また、注目光線が物体に当った場合、CPU201は、当該物体の反射特性と透過特性を取得する(S806)。反射特性には、衝突点における物体の法線と物体に入射する注目光線がなす角度（入射角）、並びに、法線と物体から出射する光線がなす角度（出射角）および光線強度の関係が含まれる。詳細は後述するが、反射特性と透過特性の取得時に、注目光線が当った物体が蛍光物体か否かを判定し、取得する情報の変更や、光線強度の再計算を行う。
【００５６】
次に、CPU201は、衝突点から飛ばす光線の数を決定し(S807)、一本の光線の方向と強度を算出する(S808)。光線の数は任意であるが、数が多いほどノイズの少ない画像が最終的に得られる。また、拡散反射の場合の光線の方向は均等分布でよく、反射光の強度Pr(λr)と透過光の強度Pt(λt)はそれぞれ次式によって算出される。
Pr(λr) = P0(λi)×fr(x, ωi, λr, ωr)；
Pt(λt) = P0(λi)×ft(x, ωi, λt, ωt)；      …(5)
ここで、P0(λi)は物体に入射する波長λiの光線の強度、
frは物体の反射特性、
ftは物体の透過特性。
【００５７】
一般に、反射光の強度分布は物体の表面形状に依存し、物体表面が平滑なほど、鏡面反射方向すなわちωi=ωr方向の反射強度が強くなり、それ以外の拡散反射方向への反射強度は小さくなる。
【００５８】
反射特性は、記憶部203などから入力してもよいし、測定器206から測定結果を入力してもよい。反射特性のデータ形式は、光の入射角と反射角に対応する物体の反射率が得られれば所望の形式で構わず、例えば、一意の関数でもよい。また、拡散反射は等方的に分布するためωi=45度、ωr=0度の反射特性を拡散反射に適用し、鏡面反射の反射特性は別途用意するテーブルを適用してもよい。
【００５９】
一方、物体の反射特性frは、次式に示すように、双方向反射率分布関数 (bidirectional reflectance distribution function: BRDF)で表される。
fr(x, ωi, λr, ωr) = dLr(x, λr, ωr)/Li(x, λi, ωi)(ωr・n)dω      …(6)
ここで、xは物体上の位置、
ωiは入射角、
λiは入射光線の波長、
Liは入射光線の強度、
ωrは反射角、
λrは出射光線の波長、
Lrは出射光線の強度、
nは法線。
【００６０】
一般に、透過光の強度分布は分光屈折率に依存するため、式(6)を満たすωtの場合に透過強度が最大になる。なお、透過特性は、記憶部203などから入力すればよい。透過特性のデータ形式は、光の入射角と屈折角に対応する物体の透過率が得られれば所望の形式で構わず、例えば、一意の関数でもよい。また、ωi=ωr=0度の透過特性をωtが屈折角に等しい場合に適用し、それ以外の透過特性は別途用意するテーブルを適用してもよい。
【００６１】
なお、注目光線が蛍光物体に当った場合は、後述する反射特性と透過特性の取得処理において、蛍光物体に当った後の光線の波長を変更する。一般に、蛍光の強度分布は物体の表面形状に依存せず、全方位に均等になる。そのため、蛍光物体については完全拡散反射面に相当すると考えることができる。さらに、入射光のすべてが蛍光に変換されるとは限らない点も考慮し、先述したテーブルを用いて反射方向をBRDFと同様に扱うこともできる。
【００６２】
次に、CPU201は、光線追跡処理を実行する(S809)。つまり、ステップS809において、図6に示す光線追跡処理が光線ごとに再帰的に呼び出され、実行される。そして、CPU201は、ステップS807で設定した光線の数分の光線追跡が終了したか否かを判定し(S810)、未了の場合は処理をステップS808に戻して、光線追跡処理を繰り返す。
【００６３】
●反射特性と透過特性の取得
図7のフローチャートにより反射特性と透過特性の取得(S806)を説明する。
【００６４】
CPU201は、注目光線が当った物体が蛍光物体か否かの判定(S901)、蛍光物体の蛍光特性データに基づく、注目光線の波長が蛍光物体の励起波長か否かの判定(S902)を行う。
【００６５】
注目光線が蛍光物体に当り、注目光線の波長が蛍光物体の励起波長に該当する場合、CPU201は、結果バッファ701の追跡結果保存部702に蛍光フラグを設定し(S903)、蛍光物体の蛍光特性データを取得する(S904)。さらに、交差履歴を参照して、注目光線の光線追跡において当った物体の、蛍光の波長に対応する反射特性と透過特性を再取得する(S905)。
【００６６】
注目光線が蛍光物体に当る前は励起波長に対応する反射特性と透過特性を参照するが、注目光線が蛍光物体に当った後は、励起波長に加えて、蛍光の波長に対応する反射特性と透過特性の参照が必要になる。そのため、ステップS905で、反射特性と透過特性を再取得する。
【００６７】
一方、注目光線が蛍光物体以外に当った場合、あるいは、注目光線が蛍光物体に当ったが注目光線の波長が蛍光物体の励起波長以外の場合、CPU201は、当該物体の反射特性と透過特性を取得する(S906)。つまり先述したBRDFやBTDFが取得される。
【００６８】
次に、CPU201は、交差履歴を更新して、注目光線が当った物体と、当該物体が蛍光物体か否かを記録する(S907)。
【００６９】
図8により反射特性と透過特性の取得手順を説明する。図8は蛍光物体を含むシーンにおける実施例の画像処理における光線追跡を模式化したものである。
【００７０】
例えば、図8(A)に示すように、光源11の光線波長400nmを追跡する際に、光源11の光線が物体12、13、14、15の四物体に順に反射されて、視点16に達する場合を考える。なお、物体12と14は、蛍光物体であり、それぞれ400nmに励起波長をもち、500-550nmの蛍光を放出すると仮定する。
【００７１】
まず、図8(B)に示すように、波長400nmの注目光線が視点16から物体15まで追跡され、物体15のBRDFが取得される。つまり、物体15は蛍光物体ではないと判定され(S901)、400nmに対応する物体15のBRDFが取得され(S906)、注目光線が物体15に当ったことが記録される(S907)。
【００７２】
次に、図8(C)に示すように、物体15から反射された注目光線が物体14まで追跡され、物体14が蛍光物体と判定され(S901)、注目光線の波長が励起波長に該当すると判定される(S902)。従って、蛍光フラグが設定され(S903)、物体14の蛍光特性データが取得される(S904)。
【００７３】
そして、蛍光特性データに基づき蛍光の波長500-550nmに対応する例えば六本の光線（図8(B)に示す破線に相当）が視点16から物体14まで追跡される。つまり、蛍光の波長に対応する反射特性と透過特性を再取得され(S905)、注目光線が蛍光物体である物体14に当ったことが記録される(S907)。
【００７４】
その際、励起波長λの光に対する蛍光波長ωの強度PF(λ, ω)が次式で計算され、視点16から物体14までの蛍光の光線強度として設定される。
PF(λ, ω) = Fl(λ, ω)×Σfr(x, ωi, λr, ωr)      …(7)
ここで、Fl(λ, ω)は励起波長λの入射光と、蛍光波長ωの蛍光との強度比。
【００７５】
次に、注目光線は物体13に当るが、この時点では図8(C)に示すように、光源11からの光線が物体14に当って蛍光を放出する状態である。つまり、物体13に当る注目光線の波長は400nmのみであり、400nmに対応する物体13のBRDFが取得され(S906)、注目光線が物体15に当ったことが記録される(S907)。
【００７６】
次に、注目光線は物体12に当る。物体12は蛍光物体であり、物体14と同様の式で蛍光の光線強度が計算される。図8(D)に示すように、蛍光の波長500-550nmに対応する例えば六本の光線（図8(D)に示す一点鎖線に相当）が視点16から物体12まで追跡される。つまり、蛍光の波長に対応する反射特性と透過特性を再取得され(S905)、注目光線が蛍光物体である物体12に当ったことが記録される(S907)。なお、物体12で発生した蛍光の波長は、物体14の励起波長ではないため、物体14の蛍光特性データは参照せずに、500-550nmに対応する物体14のBRDFが取得される。
【００７７】
以上の手順により蛍光物体を含むシーンの光線強度を求めることができる。
【００７８】
●分光放射輝度の算出
図9のフローチャートにより分光放射輝度の算出処理(S805)を説明する。
【００７９】
CPU201は、注目光線が当った光源の分光放射輝度S(λ)の分布を取得し(S501)、注目光線により蛍光が発せられたか否かを蛍光フラグを参照して判定する(S502)。そして、蛍光フラグが設定されていない（例えば‘0’、蛍光が非発光）場合は処理をステップS505に進める。
【００８０】
蛍光フラグが設定されている（例えば‘1’、蛍光が発光）場合、CPU201は、蛍光の強度を算出する(S503)。蛍光の強度は、注目光線の強度に対する蛍光物体の蛍光強度比Fl(λ, ω)、注目光線の強度P0(λ)、光源の分光放射輝度S(λ)から算出される。そして、CPU201は、蛍光の強度と蛍光の交差履歴に基づき算出された蛍光の強度を乗算して、蛍光の分光放射輝度を算出する(S504)。
【００８１】
次に、CPU201は、注目光線の交差履歴に基づき注目光線の分光放射輝度を算出する(S505)。そして、蛍光の分光放射輝度を算出した場合はその結果を結果バッファ701の蛍光放射輝度保存部703に加算し、注目光線の分光放射輝度の算出結果を結果バッファ701の追跡結果保存部702に加算する(S506)。
【００８２】
このように、シーンに蛍光物体が含まれる場合は、励起光の光線追跡に加え、蛍光の波長ごとに蛍光の光線追跡を行うことで、蛍光物体を含むシーンをより忠実に再現することができる。
【実施例２】
【００８３】
以下、本発明にかかる実施例2の画像処理を説明する。なお、実施例2において、実施例1と略同様の構成については、同一符号を付して、その詳細説明を省略する。
【００８４】
実施例1では、視点から光源に向かう光線追跡により蛍光を再現する画像処理を説明した。実施例2では、光源から視点へ向かう分光光源光線追跡、所謂フォトンマッピング法を用いて蛍光を再現する画像処理を説明する。
【００８５】
フォトンには、シーン内の光のエネルギ寄与に関する情報が記録される。エネルギ寄与に関する情報には、位置座標、波長、エネルギ量、入射方向を示す情報などが含まれる。蛍光物体を含むシーンをレンダリングする場合、フォトンの波長や強度を随時変更する蛍光をエネルギ寄与の変化として捉えて、エネルギ寄与の算出を行う。
【００８６】
図10のフローチャートにより実施例2の画像処理を説明する。
【００８７】
CPU201は、CGシーンデータを読み込み(S201)、光線の放出を行ってフォトン分布マップを作成する(S202)。そして、フォトン分布マップを参照して分光放射輝度を推定する(S203)。
【００８８】
●光線の放出処理
図11のフローチャートにより光線の放出処理(S202)を説明する。
【００８９】
CPU201は、放出する光線の波長を初期化する(S301)。例えば、可視光域の380nmから780nmまでを10nmピッチで光線追跡する場合、波長を380nmに初期化する。そして、CPU201は、光線の放出方向を算出し(S302)、光源から注目光線の放出を行う(S303)。なお、光源からの光線の放出方向はランダムに決定される。
【００９０】
次に、CPU201は、注目光線とシーンの物体の交差を探索する交差判定(S304)、注目光線が当った物体が蛍光物体か否かの判定(S305)、蛍光物体の蛍光特性データに基づく注目光線の波長が蛍光物体の励起波長か否かの判定(S306)を行う。
【００９１】
注目光線が蛍光物体に当たり、注目光線の波長が励起波長の場合、CPU201は、注目光線の波長と強度を変更し(S307)、処理をステップS302に戻す。例えば、波長400nmの注目光線によって励起される蛍光物体が500-550nmの蛍光を放出する場合、注目光線の波長を蛍光波長500-550nmの範囲の一波長に変更し、光線の強度を蛍光特性テーブルを参照し変更する。
【００９２】
一方、注目光線が蛍光物体以外の物体に当った場合、または、励起波長ではない注目光線が蛍光物体に当った場合、CPU201は、当該物体の反射特性または透過特性に基づき注目光線の強度を変更し(S308)、処理をステップS302に戻す。また、注目光線が例えば描画領域の外に出るなど、注目光線と物体の交差が検出されなかった場合、CPU201は、交差判定を終了して、処理をステップS309に進める。なお、注目光線が所定回数物体と交差した場合、交差判定を終了して、処理をステップS309に進めてもよい。
【００９３】
注目光線の波長と強度または強度が変更された場合のステップS302において、CPU201は、物体が注目光線を反射する場合は当該物体のBRDFを参照して反射方向（放出方向）を算出する。また、物体が注目光線を透過する場合は当該物体の屈折率と注目光線の入射角に基づき透過方向（放出方向）を算出する。また、蛍光の場合はランダムに放出方向を決定する。そして、続くステップS303において、物体の反射光、透過光または蛍光が注目光線として放出される。
【００９４】
なお、蛍光物体からの蛍光の放出を行う場合、CPU201は、蛍光特性テーブルが示す蛍光波長と強度比に基づき、注目光線の波長と強度を変更して、ステップS302からS308の処理を繰り返す。
【００９５】
交差判定が終了すると、CPU201は、光線追跡を停止し、フォトンの生成または消滅を行う(S309)。例えば、注目光線が当った物体の反射率をR（0＜R＜1）とするとフォトンの生成確率はRである。なお、注目光線が複数の物体に当った場合は、それら物体の反射率Riの積ΠRiを用いる。また、実際には、乱数rand（0＜rand＜1）を発生し、rand≦Rの場合はフォトンを生成し、rand＞Rの場合はフォトンを消滅させる。フォトンを生成する場合、注目光線が物体に当った位置座標、注目光線が物体へ入射する方向、注目光線のエネルギ量、波長λなどをフォトン分布マップに記録する。
【００９６】
次に、CPU201は、光源からの光線放出が完了したか否かを判定する(S310)。光源からの光線放出の完了は、例えば、シーンに存在するフォトンの数が、所定のフォトンの数に達したか否かで判定する。そして、光源からの光線放出が未了の場合は処理をステップS302に戻す。
【００９７】
光源からの光線放出が完了すると、CPU201は、可視域の波長範囲において全波長の光線放出が完了したか否かを判定する(S311)。そして、全波長の光線放出が未了の場合は注目光線の波長をインクリメントし(S312)、処理をステップS302に戻す。
【００９８】
●分光放射輝度の推定
図12のフローチャートにより分光放射輝度の推定処理(S203)を説明する。
【００９９】
CPU201は、描画画像の画素位置を設定する(S401)。図13(B)に示す、視点1201から前方クリップ面1202上の画素を通過する光線を設定して、当該画素の画素位置におけるフォトンを収集することができる。
【０１００】
次に、CPU201は、画素位置に対応する光線の周辺のフォトンを収集する(S402)。つまり、CPU201は、当該光線がシーンの物体と衝突するか後方クリップ面1203に衝突するまで当該光線を追跡し、追跡した位置から所定距離にあるフォトンの情報を収集する。これにより、フォトンの密度の高いところは明るく、低いところは暗くなる。
【０１０１】
次に、CPU201は、全画素でフォトンの収集が終了したか否かを判定し(S403)、全画素でフォトンの収集が終了するまでステップS401とS402の処理を繰り返す。
【０１０２】
全画素でフォトンの収集が終了すると、CPU201は、収集したフォトンの情報に基づき、分光放射輝度や画像の色信号値を算出する(S404)。分光波長ごとのフォトンの数から、各波長におけるエネルギが算出され、これに基づき分光放射輝度や画像の色信号値を計算することができる。
【０１０３】
このように、フォトンマッピングを用いて、蛍光物体を含むシーンをより忠実に再現することができる。
【０１０４】
図11においては、可視光域の380nmから780nmまでを10nmピッチで光線追跡する例を説明したが、実際には蛍光を有する光は300nmから380nmの紫外域から近紫外域に多いため、300nmから380nmの紫外域から近紫外域も併せて光線追跡を行うことが望ましい。その際、300nmから380nmの光は、蛍光物質に当たって可視光域（380nmから780nmの範囲）に波長が変化した場合だけ出力結果の画像に影響を与えるようにして、波長が変化しなかった光は出力結果の画像に影響を与えないようにする。
【０１０５】
［その他の実施例］
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記録媒体を介してシステム或いは装置に供給し、そのシステムあるいは装置のコンピュータ（又はCPUやMPU等）がプログラムを読み出して実行する処理である。
【図１】
2015114131.tif 000003
【図２】
2015114131.tif 000004
【図３】
2015114131.tif 000005
【図４】
2015114131.tif 000006
【図５】
2015114131.tif 000007
【図６】
2015114131.tif 000008
【図７】
2015114131.tif 000009
【図８】
2015114131.tif 000010
【図９】
2015114131.tif 000011
【図１０】
2015114131.tif 000012
【図１１】
2015114131.tif 000013
【図１２】
2015114131.tif 000014
【図１３】
2015114131.tif 000015