(57)【要約】【課題】  光線追跡法を用いて画像を描画する際に、処理時間を抑えて、より写実的な描画結果を得る。【解決手段】  オブジェクトの屈折特性および/または反射特性に基づき、光線追跡法の追跡対象として光、分光、および、チャネルの何れを用いるかを決定する(S701-S703)。そして、仮想三次元空間における視点から光源まで、決定した追跡対象の少なくとも一つの要素を追跡して、オブジェクトを示す画像データの画素値を決定する(S704)。【選択図】  図15
2012181825.tif 000002
【特許請求の範囲】
【請求項１】
仮想三次元空間におけるオブジェクトを示す画像データを光線追跡法を用いて生成する画像処理装置であって、
前記オブジェクトの屈折特性および/または反射特性に基づき、前記光線追跡法の追跡対象として光、分光、および、チャネルの何れを用いるかを決定する追跡対象の決定手段と、
前記仮想三次元空間における視点から光源まで、前記追跡対象の決定手段が決定した追跡対象の少なくとも一つの要素を追跡して、前記オブジェクトを示す画像データの画素値を決定する画素値の決定手段とを有することを特徴とする画像処理装置。
【請求項２】
前記光は要素として光そのものを有し、前記分光は要素として複数の波長バンドを有し、前記チャネルは要素として複数のチャネルを有することを特徴とする請求項1に記載された画像処理装置。
【請求項３】
前記追跡対象の決定手段は、さらに前記仮想三次元空間の領域を考慮して前記追跡対象の要素の数を決定することを特徴とする請求項1または請求項2に記載された画像処理装置。
【請求項４】
さらに、前記画素値の決定手段が決定した画素値を有する画像データが表す画像をモニタに表示する表示手段を有することを特徴とする請求項1から請求項3の何れか一項に記載された画像処理装置。
【請求項５】
前記光線追跡法の開始において前記追跡対象は前記光であり、前記追跡対象である光が前記オブジェクトに当ると、前記追跡対象の決定手段による前記追跡対象の決定が行われることを特徴とする請求項1から請求項4の何れか一項に記載された画像処理装置。
【請求項６】
前記追跡対象の決定手段は、前記屈折特性および/または反射特性に基づき前記オブジェクトが分光特異性を有するか否かを判定し、前記オブジェクトが前記分光特異性を有する場合、前記追跡対象の決定を行うことを特徴とする請求項5に記載された画像処理装置。
【請求項７】
前記追跡対象の決定手段は、前記オブジェクトが光を透過する場合および構造色を発する場合に前記分光特異性を有すると判定することを特徴とする請求項6に記載された画像処理装置。
【請求項８】
前記追跡対象の決定手段は、さらに前記仮想三次元空間の領域を考慮して前記追跡対象を決定することを特徴とする請求項6または請求項7に記載された画像処理装置。
【請求項９】
前記追跡対象の決定手段は、前記オブジェクトと前記視点の間の距離が第一の距離未満で、前記オブジェクトが前記分光特異性を有する場合は前記オブジェクト以降の前記追跡対象を前記分光に決定することを特徴とする請求項8に記載された画像処理装置。
【請求項１０】
前記追跡対象の決定手段は、前記オブジェクトと前記視点の間の距離が前記第一の距離以上かつ第二の距離未満で、前記オブジェクトが前記分光特異性を有する場合は前記オブジェクト以降の前記追跡対象を前記チャネルに決定することを特徴とする請求項9に記載された画像処理装置。
【請求項１１】
前記追跡対象の決定手段は、前記オブジェクトと前記視点の間の距離が前記第二の距離以上の場合は前記オブジェクト以降の前記追跡対象を前記光に決定することを特徴とする請求項10に記載された画像処理装置。
【請求項１２】
前記画素値の決定手段は、光の減衰率を考慮しながら前記追跡を行い、前記オブジェクトを示す画像データの画素値を決定することを特徴とする請求項1から請求項11の何れか一項に記載された画像処理装置。
【請求項１３】
前記画素値の決定手段は、前記追跡対象が光の場合は前記追跡の経路における光の減衰率を算出し、前記追跡対象が分光の場合は前記追跡の経路における分光減衰率を算出し、前記追跡対象がチャネルの場合は前記追跡の経路におけるチャネル減衰率を算出し、それら減衰率を用いて前記オブジェクトを示す画像データの画素値を決定することを特徴とする請求項12に記載された画像処理装置。
【請求項１４】
さらに、前記追跡において、前記反射特性に基づき、前記追跡対象が当った物体が光を拡散する物体か否かを判定する判定手段と、
前記追跡対象が前記光を拡散する物体に連続して当った回数を計数する計数手段と、
前記オブジェクトと、前記オブジェクトの前に前記追跡対象が当った物体の間の距離を算出する算出手段とを有し、
前記追跡対象の決定手段は、前記計数の値が2未満または前記距離が所定の距離未満、かつ、前記オブジェクトが分光特異性を有する場合は前記追跡対象の決定を行うことを特徴とする請求項1または請求項2に記載された画像処理装置。
【請求項１５】
前記チャネルは、視覚特性に基づく三つのチャネルで構成されることを特徴とする請求項1から請求項14の何れか一項に記載された画像処理装置。
【請求項１６】
追跡対象の決定手段、画素値の決定手段を有し、仮想三次元空間におけるオブジェクトを示す画像データを光線追跡法を用いて生成する画像処理装置の画像処理方法であって、
前記追跡対象の決定手段が、前記オブジェクトの屈折特性および/または反射特性に基づき、前記光線追跡法の追跡対象として光、分光、および、チャネルの何れを用いるかを決定し、
前記画素値の決定手段が、前記仮想三次元空間における視点から光源まで、前記追跡対象の決定手段が決定した追跡対象の少なくとも一つの要素を追跡して、前記オブジェクトを示す画像データの画素値を決定することを特徴とする画像処理方法。
【請求項１７】
コンピュータを請求項1から請求項15の何れか一項に記載された画像処理装置の各手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、光線追跡法を用いて画像を描画する画像処理に関する。
【背景技術】
【０００２】
コンピュータグラフィクス(CG)は、写実的な描画結果を得るための手段として、光線追跡法（レイトレーシング）を用いることが多い。光線追跡法は、視点から光線（レイ）の経路を逆方向に辿って光源に至る軌跡を追跡する。描画する画素すべてについて光線を逆追跡すれば、その実行に膨大な処理時間を要する。そのため、特許文献1が開示するように、描画領域に対して部分的に光線追跡法を実施する手法も存在する。
【０００３】
また、特許文献2や非特許文献1が開示するように、描画結果をより現実のシーンに近付けるため、光の物理的挙動を再現する分光光線追跡法も提案されている。分光は、光をスペクトルで表現し、様々な波長の光によって構成される。分光光線追跡法は、光の波長ごとに光線を逆追跡して、プリズムによる分散、光ディスクなどの構造色、真珠の虹色光沢などの再現が可能になる。さらに、特許文献3が開示するように、分光光線追跡法の計算結果を等色関数などを用いてRGB表示する手法が存在する。
【０００４】
分光光線追跡法においては、可視域の波長範囲380nmから740nmを10nmごとにサンプリングして光線を逆追跡するとしても、一画素当り36回の光線の逆追跡が必要になる。つまり、分光光線追跡法による処理時間は、光線追跡法による処理時間の少なくとも36倍になり、現実的な時間で処理を終えることは難しい。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開2003-187264号公報
【特許文献２】特開2000-172873号公報
【特許文献３】特願平4-123961号公報
【非特許文献】
【０００６】
【非特許文献１】M. L. Dias「Ray Tracing Interference Color」IEEE CG & A、Vol. 11、No.2、1991年3月、54-60頁
【発明の概要】
【発明が解決しようとする課題】
【０００７】
本発明は、光線追跡法を用いて画像を描画する際に、処理時間を抑えて、より写実的な描画結果を得ることを目的とする。
【課題を解決するための手段】
【０００８】
本発明は、前記の目的を達成する一手段として、以下の構成を備える。
【０００９】
本発明にかかる画像処理は、オブジェクトの屈折特性および/または反射特性に基づき、光線追跡法の追跡対象として光、分光、および、チャネルの何れを用いるかを決定し、仮想三次元空間における視点から光源まで、決定した追跡対象の少なくとも一つの要素を追跡して、オブジェクトを示す画像データの画素値を決定する。
【発明の効果】
【００１０】
本発明によれば、光線追跡法を用いて画像を描画する際に、処理時間を抑えて、より写実的な描画結果を得ることができる。
【図面の簡単な説明】
【００１１】
【図１】実施例の画像処理装置の構成例を説明するブロック図。
【図２】光線追跡法による処理の概要を説明する図。
【図３】波長λにおける光線追跡法による処理の概要を説明する図。
【図４】入射光に対して反射光と透過光がどのように振る舞うかを説明する図。
【図５】実施例1の画像生成処理（レンダリング処理）を説明するフローチャート。
【図６】光線追跡法による処理を説明するフローチャート。
【図７】分光光線追跡法による処理を説明するフローチャート。
【図８】実施例2の光線追跡法による処理の概要を説明する図。
【図９】実施例2の光線追跡法による処理を説明するフローチャート。
【図１０】実施例2の光線追跡法による処理を説明するフローチャート。
【図１１】実施例3の光線追跡法による処理の概要を説明する図。
【図１２】実施例3の光線追跡法による処理を説明するフローチャート。
【図１３】実施例3の光線追跡法による処理を説明するフローチャート。
【図１４】実施例5の分光光線追跡を説明するフローチャート。
【図１５】実施例6の光線追跡法を説明するフローチャート。
【発明を実施するための形態】
【００１２】
以下、本発明にかかる実施例の画像処理を図面を参照して詳細に説明する。
【実施例１】
【００１３】
以下では、光線が当った物体の属性に合わせて光線追跡法による処理を制御して、画像を描画する画像生成処理を高速化する方法を説明する。
【００１４】
［装置の構成］
図1のブロック図により実施例の画像処理装置の構成例を説明する。
【００１５】
マイクロプロセッサ(CPU)101は、ランダムアクセスメモリ(RAM)102をワークメモリとして、オペレーティングシステム(OS)を含む各種プログラムを実行する。各種プログラムは、リードオンリメモリ(ROM)103やハードディスクドライブ(HDD)108などの不揮発性メモリに格納されている。そして、CPU101は、システムバス107を介して、後述する構成を制御する。HDD108は、後述する画像生成処理を実現するプログラム、光源やオブジェクトの分光特性データなどを格納する。
【００１６】
汎用インタフェイス(I/F)104は、例えばUSB (Universal Serial Bus)のようなシリアルバスインタフェイスで、マウスやキーボードなどの入力デバイス111が接続される。ビデオカード(VC)105は、ビデオインタフェイスで、液晶ディスプレイ(LCD)などのモニタ113が接続される。
【００１７】
CPU101は、モニタ113にユーザインタフェイス(UI)を表示する。ユーザは、入力デバイス111を操作して、UIに対して指示やデータや入力する。CPU101は、入力デバイス111からユーザ指示やデータを入力し、それら入力に従いプログラムを実行して各種処理を行う。
【００１８】
［光線追跡法による処理の概要］
図2により光線追跡法による処理の概要を説明する。
【００１９】
図2(a)に示すように、描画（レンダリング）時に、画像を観察する視点位置（視点201）、視野角204、前方クリップ面202、後方クリップ面203を決定する。そして、視野角204を示す半直線、前方クリップ面202、後方クリップ面203が囲む台形領域205をレンダリング領域とする。
【００２０】
レンダリング領域205が決定すると、図2(b)に示すように、視点201から前方クリップ面202に、画素ごと、光線を逆追跡する。レンダリング結果を例えば800×600画素で表示する場合、前方クリップ面を800×600のセルに分割し、視点201から各セルの中心を結ぶ線分を光線とする。
【００２１】
図3により波長λにおける光線追跡法による処理の概要を説明する。
【００２２】
図3(a)はレンダリング領域205に透明な物体が存在しない場合を示す。この場合、視点201から光線を逆追跡すると、不透明な物体305に当り、壁304に当り、最終的に光源302に到達する。この場合、視点201に入る波長λの放射輝度IEλは近似的に次式で計算される。
IEλ = kλ305×kλ304×Lλ      …(1)
ここで、kλ305は物体305の波長λの光に対する反射率、
kλ304は壁304の波長λの光に対する反射率、
Lλは光源302の波長λの放射輝度。
【００２３】
波長λにおける各物体の反射率をkλMで表せば、式(1)は次のように表現される。
IEλ = ΠMkλM×Lλ      …(2)
【００２４】
一方、図3(b)はレンダリング領域205に透明な物体が存在する場合を示す。この場合、視点201から光線を逆追跡すると、透明な物体306に当り、物体306を透過し、壁304に当り、最終的に光源302に到達する。この場合、視点201に入る波長λの放射輝度IEλは近似的に次式で計算される。
IEλ = Tλ306×kλ304×Lλ      …(3)
ここで、Tλ306は物体306の波長λの光に対する透過率。
【００２５】
波長λにおける各物体の、反射率をkλM、透過率をTλNで表せば、式(3)は次のように表現される。
IEλ = ΠNTλN×ΠMkλM×Lλ      …(4)
【００２６】
次式に示すように、透過率Tと反射率kをまとめて減衰率Rとして表現することができる。
Rλ = ΠNTλN×ΠMkλM      …(5)
【００２７】
従って、式(2)(4)は次式のように表現することができる。
IEλ = Rλ×Lλ      …(6)
【００２８】
上記のような光線追跡法による処理を可視域の波長範囲の波長バンド（例えば波長10nmステップのバンド）ごとに実施すれば、視点201に入る分光放射輝度が算出することができる。しかし、可視域の波長範囲の各波長バンドすべてにおいて光線を逆追跡することになり、非常に長い処理時間が必要になる。
【００２９】
［入射光に対する反射光と透過光］
図4により入射光に対して反射光と透過光がどのように振る舞うかを説明する。
【００３０】
図4(a)は不透明なプラスチックやゴムのような物質の反射光を表す。この場合、入射光に対する反射光の方向は、すべての波長において同一である。つまり、すべての波長の光は同じ方向に反射され、各波長の光線の経路差は発生しないから、一本の光線を逆追跡すればよい。
【００３１】
図4(b)は透明なプラスチックやガラスのような透過物質の透過光を表す。この場合、入射光に対する透過光の方向は、スネルの法則に従い、波長により変化する。つまり、透過物質の屈折率は波長により異なるため波長により透過光の方向が変化して、分散による虹色が発生する。その結果、各波長の光線の経路差が発生し、全波長の光線を逆追跡する必要が生じる。
【００３２】
図4(c)は真珠、オパール、光ディスクのように構造色を発する物質の透過と反射を表す。構造色は、物質が可視域の光の波長以下の細かな構造を有することで生じる光の干渉による発色現象である。代表例としては、光ディスクに代表される回折格子が挙げられる。
【００３３】
構造色は、光の波動性によって発生する現象で、光の波長よりも細かな溝によって散乱された光が、互いに干渉して虹のような構造色を再現する。溝の間隔（格子定数）をd、透過、反射面と投影面の間の距離をLとすると、波長λの光が投影面に当る条件は周期D=λL/dで与えられる。言い換えれば、距離L離れた物体上に、回折格子を通過、反射した上記の条件を満たす波長λの光が投影される。このように、回折格子を通過、反射した場合、各波長の光線の経路差が生じるため、全波長の光線を逆追跡する必要が生じる。
【００３４】
［画像生成処理］
図5のフローチャートにより実施例1の画像生成処理（レンダリング処理）を説明する。なお、画像生成処理は、ユーザ指示に従い、CPU101が実行する処理である。
【００３５】
CPU101は、ユーザの指示に従い、レンダリング条件としてレンダリングサイズ（画素数）、前方クリップ面202、後方クリップ面203を設定する(S101)。ここでは、レンダリングサイズをP画素とする。
【００３６】
次に、CPU101は、視点データ、光源データ、オブジェクトデータなどのシーンデータを取得する(S102)。なお、CPU101は、ユーザの指示に従いシーンデータを設定するか、ユーザの指示に従いHDD108などからシーンデータを読み込む。視点データは、視点位置201、視線方向、画角（視野角204）から構成される。
【００３７】
光源データは、光源302の分光放射輝度、光源302の仮想空間上の位置から構成される。光源の分光放射輝度は、光源の種類が異なれば変化し、物体の色の見え方も変化する。従って、光源の分光放射輝度はシーンの忠実再現に重要である。
【００３８】
オブジェクトデータは、仮想空間に位置する物体の数、各物体の位置、形状のほか、分光屈折率（屈折特性）、分光透過率（透過特性）、分光反射率（反射特性）、格子定数から構成される。なお、格子定数は回折格子の溝の間隔で、構造色を生じさせる回折格子がない場合、その値は0である。
【００３９】
次に、CPU101は、カウンタiにレンダリングサイズPを設定し(S103)、光線追跡法による処理を実行する(S104)。光線追跡法による処理の詳細は後述する。光線追跡法による処理が終了すると、カウンタiをデクリメントし(S105)、カウンタiの計数値を判定する(S106)。そして、計数値がi＞0であれば処理をステップS104に戻し、i=0であればレンダリングサイズ分の光線追跡法による処理が終了したとして、処理を終了する。
【００４０】
●光線追跡法による処理
図6のフローチャートにより光線追跡法による処理(S104)を説明する。
【００４１】
CPU101は、視点位置201からカウンタiの計数値に対応する画素（以下、対象画素）に向かう光線に関連付けてRAM102の所定領域に格納する分光減衰率Rλを1.0に初期化する(S501)。そして、当該光線の逆追跡を開始する(S502)。
【００４２】
次に、CPU101は、レンダリング領域205において、光線が物体に当るか否かを判定し(S503)、当らない場合は処理をステップS510へ進める。
【００４３】
光線が物体に当る場合、CPU101は、光線が当った物体が光源302か否か（光源302に到達したか否か）を判定し(S504)、光源302に到達した場合は処理をステップS509へ進める。
【００４４】
光線が当った物体が光源302以外の場合、CPU101は、分光減衰率Rλを計算する(S505)。つまり、光線が当った物体の分光反射率kλ、分光透過率Tλを可視域（例えばλ=380nm-780nm）で取得し、それらを当該光線に関連付けた分光減衰率Rλにそれぞれ乗算する。つまり、一本の光線の処理において、可視域の波長範囲の分光減衰率Rλを計算し、波長ごとに光線を逆追跡する場合に比べて、処理時間の短縮を図る。
【００４５】
次に、CPU101は、光線が当った物体に分光特異性があるか否かを判定し(S506)、分光特異性がある場合は処理をステップS508へ進める。分光特異性がある物体は、図4(b)に示す透過性を示したり、図4(c)に示す構造色を発し、各波長の光線に経路差が生じる。つまり、光線が当った物体のオブジェクトデータを参照して、屈折特性、透過特性、格子定数により分光特異性の有無を判定すればよい。
【００４６】
光線が当った物体に分光特異性がない場合、CPU101は、物体が反射する光線（逆追跡中の光線）の入射方向を決定し、その方向に光線を逆追跡し(S507)、処理をステップS503に戻して光線の逆追跡を続行する。
【００４７】
また、分光特異性がある物体以降（オブジェクト以降）は、詳細は後述するが、CPU101は、波長λごとに経路を分けた光線の逆追跡、つまり分光光線追跡法による処理を実行する(S508)。
【００４８】
また、光線が光源302に到達した場合、または、分光光線追跡法による処理が終了した場合、CPU101は、対象画素の最終色を決定する(S509)。なお、画素の最終色にはRGB値を用いる。CPU101は、対象画素に入射する可視域の分光放射輝度を下式によって計算する。
Iλ = Rλ×Lλ      …(7)
【００４９】
そして、上式によって、得られた分光放射輝度をXYZ値に変換し、XYZ値からRGB値を計算して、対象画素の画素値にする。
X = k∫I(λ)x(λ)dλ
Y = k∫I(λ)y(λ)dλ      …(8)
Z = k∫I(λ)z(λ)dλ
ここで、k = 100/∫I(λ)y(λ)dλ、
x(λ)y(λ)z(λ)は等色関数。
┌ ┐ ┌           ┐┌ ┐
│R│ │a11 a12 a13││X│
│G│=│a21 a22 a23││Y│      …(9)
│B│ │a31 a32 a33││Z│
└ ┘ └           ┘└ ┘
【００５０】
また、光線が物体に当らない、あるいは、光線が物体に当っても光源302には到達しなかった場合、CPU101は、対象画素の画素値に背景色のRGB値（例えばRGB=(0, 0, 0)）を設定する(S510)。
【００５１】
●分光光線追跡法による処理
図7のフローチャートにより分光光線追跡法による処理(S508)を説明する。なお、この光線の逆追跡は、光線が当たり、分光特異性を有すると判定された物体（以下、分光追跡開始物体）から始まる。なお、下記の表現「波長λsに波長λoを設定する」は、波長λsとして指標（λoに相当）が例えば380nmの、帯域が例えば10nmの波長バンドを設定することを意味する。同様に、表現「波長λsに例えば10nmを加える」は、波長の指標に帯域の例えば10nmを加えて、例えば指標380nmの波長バンドに代えて指標390nmの波長バンドを設定することを意味する。
【００５２】
CPU101は、波長λsとして例えば可視域の最短波長（例えば380nm）を設定し(S601)、分光追跡開始物体において、逆追跡中の光線の波長λs成分の入射方向を決定して逆追跡を開始する(S602)。そして、レンダリング領域205において、波長λsの光線が物体に当るか否かを判定し(S603)、当らない場合は処理をステップS610へ進める。
【００５３】
波長λsの光線が物体に当る場合、CPU101は、波長λsの光線が当った物体（以下、注目物体）が光源302か否か（光源302に到達したか否か）を判定し(S604)、光源302に到達した場合は処理をステップS610へ進める。
【００５４】
注目物体が光源302以外の場合、CPU101は、波長λsの光線が一つ前に当った物体（以下、直前物体）が構造色を発する物体か否かを判定する(S605)。直前物体が構造色を発する物体の場合、注目物体の波長λsの光線の当接位置と直前物体の波長λsの光線の当接位置の間の距離Lが周期D=λs・L/dの条件を満たすか否かを判定する(S606)。そして、条件を満たさない場合は分光減衰率Rλsを0にする(S607)。
【００５５】
また、直前物体が構造色を発する物体ではない場合、または、周期Dの上記条件を満たす場合、CPU101は、分光減衰率Rλsを計算する(S608)。つまり、波長λsにおける注目物体の分光反射率kλs、分光透過率Tλsを取得し、それらを波長λsの光線に関連付けた分光減衰率Rλsに乗算する。
【００５６】
次に、CPU101は、注目物体が反射、透過する波長λsの光線（逆追跡中の波長λsの光線）の入射方向を決定し、その方向に波長λsの光線を逆追跡し(S609)、処理をステップS603に戻して波長λsの光線の逆追跡を続行する。
【００５７】
また、波長λsの光線が物体に当らない場合、または、波長λsの光線が光源302に到達した場合、CPU101は、波長λsとしてに所定値（例えば10nm）を加える(S610)。そして、波長λsと例えば可視域の最長波長λm（例えば740nm）を比較して(S611)、λs≦λmの場合は処理をステップS602に戻して波長λsの光線の逆追跡を続行する。また、λs＞λmの場合は分光光線追跡法による処理を終了する。
【００５８】
このように、まず光線追跡法による処理（第一の追跡）を開始し、光線が分光特異性をもつ物体に当ると分光光線追跡法による処理（第二の追跡）を行う。従って、レンダリング領域に分光特異性をもつ物体がある場合はより現実に近い描画結果が得られるとともに、光線が分光特異性をもつ物体に当らない限り一本の光線の逆追跡を行うため、レンダリング処理に要する時間を極力抑えることができる。
【実施例２】
【００５９】
以下、本発明にかかる実施例2の画像処理を説明する。なお、実施例2において、実施例1と略同様の構成については、同一符号を付して、その詳細説明を省略する。
【００６０】
実施例2では、視点201と物体の距離に応じて、光線を逆追跡する処理を制御する方法を説明する。図8により実施例2の光線追跡法による処理の概要を説明する。
【００６１】
図8(a)は、視点201から観たレンダリング領域205に物体704と物体705が存在する状態を示す。物体704は、前方クリップ面202に近い位置、つまり視点201に近い位置に存在し、物体705は後方クリップ面203に近い位置、つまり視点201から遠い位置に存在する。
【００６２】
図8(b)は、図8(a)に示す物体704、705のレンダリング結果を示す。物体704は、レンダリング結果の非常に広い面積を占め、レンダリング結果に重要な影響を及ぼす。一方、物体705は、レンダリング結果の極く狭い面積しか占めず、物体704の陰に隠れる部分もある。言い換えれば、物体705はレンダリング結果に大きな影響を及ばさず、物体705のレンダリング品質が低下しても目立たない。
【００６３】
図8に示す状況を考慮すると、視点201に近い物体には詳細な処理（例えば実施例1の処理）が有効であるが、視点201から遠い物体の処理は簡略化が可能と言える。そこで、実施例2においては、視点201と物体の距離に応じてレンダリング方法を切り替える。
【００６４】
図9、図10のフローチャートにより実施例2の光線追跡法による処理(S104)を説明する。なお、図6に示す処理と同様の処理には、同一符号を付して、その詳細説明を省略する。
【００６５】
CPU101は、ステップS503において光線が物体に当ると判定した場合、光線の逆追跡の開始後、最初に当った物体（以下、第一物体）か否かを判定し(S521)、第一物体ではない場合は処理をステップS504に進める。一方、第一物体の場合は視点201と第一物体の間の距離Doを算出し、距離Doと所定距離Dthを比較する(S522)。そして、距離が所定距離未満(Do＜Dth)の場合はフラグBFに‘1’を設定し(S523)、距離が所定距離以上(Do≧Dth)の場合はフラグBFに‘0’を設定する(S524)。
【００６６】
次に、CPU101は、実施例1と同様に、ステップS504、S505の処理を行い、フラグBFを判定する(S531)。そして、BF=‘0’ならば処理をステップS507へ進め、BF=‘1’ならば実施例1と同様に光線が当った物体に分光特異性があるか否かを判定する(S506)。つまり、視点201と分光特異性を有する第一物体の間の距離が所定距離未満（Do＜Dth）であれば分光光線追跡法による処理（第二の処理）を実行し、そうでなければ光線追跡法による処理（第一の処理）を継続する。
【００６７】
このような処理によれば、第一物体が分光特異性を有し、かつ、視点201から距離Dth未満にあれば第一物体以降は第二の処理を実行する。また、第一物体が分光特異性をもたない、あるいは、第一物体が視点201から距離Dth以上にある場合はレンダリング結果に大きな影響を与えない物体として、処理を簡略化（第一の処理を継続）して、レンダリング処理の高速化を図る。
【００６８】
上記では、視点201と物体の間の距離Doに応じて分光光線追跡法による処理（第二の処理）を行うか否かの二者択一の制御例を説明した。例えば、距離の閾値を複数設けて、例えば次のように、距離Doに応じて動的に波長のステップ幅を制御して分光光線追跡法による処理（第二の処理）を行うこともできる。
if (Do ＜ Dth1) {
波長ステップ幅 = S1；
第二の処理(S508)を実行する；
}
if (Dth1 ≦ Do ＜Dth2) {
波長ステップ幅 = S2；
第二の処理(S508)を実行する；
}
if (Dth2 ≦ Do)
第一の処理を継続する；          …(10)
ここで、Dth1 ＜ Dth2、
S1 ＜ S2（例えばS1=10nm、S2=50nm）。
【実施例３】
【００６９】
以下、本発明にかかる実施例3の画像処理を説明する。なお、実施例3において、実施例1、2と略同様の構成については、同一符号を付して、その詳細説明を省略する。
【００７０】
実施例3では、拡散反射の回数に応じて、光線を逆追跡する処理を制御する方法を説明する。図11により実施例3の光線追跡法による処理の概要を説明する。
【００７１】
図11(a)は、表面に細かな凹凸が多数存在する物体908の反射の挙動を示す。入射光906が物体908に当ると、その表面の細かな凹凸によって入射光906は散乱され、あらゆる方向に反射光907が生じる。拡散反射は、光沢がない物体で発生する現象で、紙、布、皮、ゴムなどの素材が当てはまる。
【００７２】
図11(b)は、拡散反射が複数回発生する場合の光の挙動を示す。光源902から光線はある分光スペクトルを保持し、透過性を有する物体903に当る。物体903はプリズムのような働きを示し、入射光を波長ごとに分散させる。物体903を透過した各波長の光線は、光を拡散する物体である壁904に当る。すると、各波長の光線は壁904からあらゆる方向に拡散反射される。
【００７３】
ここで、壁905のある点909における入射光を考える。点909には、壁904から反射された様々な波長の光線が集まり、入射する。つまり、透過性の物体903を透過し、一旦分散された光線が、再び点909で合流すると考えることができる。
【００７４】
以上を考慮すると、二回以上連続して拡散反射される場合、虹色の再現のような効果は打ち消され、一本の光線を逆追跡すればよいことになる。ただし、壁904と壁905が密接する場合は、各波長の光の強度の違いによって虹色が発生する。そのため、光を拡散する物体の間の距離も重要である。勿論、光の強度は、光が進む距離の二乗に比例して減衰するため、ある距離以上になれば強度の違いは無視できるようになる。
【００７５】
図12、図13のフローチャートにより実施例3の光線追跡法による処理(S104)を説明する。なお、図6、図9、図10に示す処理と同様の処理には、同一符号を付して、その詳細説明を省略する。
【００７６】
CPU101は、まず、拡散反射回数を計数するカウンタDNを0に、フラグBNFを‘0’に初期化し(S541)、その後、ステップS501以降の処理を開始する。
【００７７】
CPU101は、光線が物体に当り、光線が当った物体（以下、注目物体）が光源902以外の場合、分光透過率Rλを計算(S505)した後、フラグBNFを判定する(S551)。BNF=‘0’の場合、CPU101は、注目物体が光を拡散する物体か否かを判定し(S552)、光を拡散しない物体の場合はカウンタDNを0に初期化し(S553)、処理をステップS506に進める。また、フラグBNF=‘1’の場合、CPU101は、処理をステップS507に進める。
【００７８】
注目物体が光を拡散する物体の場合、CPU101は、カウンタDNをインクリメントして(S554)、カウンタDNの計数値が2以上（DN≧2）か否かを判定する(S555)。つまり、フラグBNF=‘0’の状態で、光線が光を拡散する物体に二回以上連続して当ったか否かを判定する。DN≧2の場合は注目物体と光線が一つ前に当った物体の間の距離Dbを算出し、距離Dbと所定距離Dbthを比較し(S556)、Db≧Dbthの場合はフラグBNFを‘1’に設定し(S557)、処理をステップS507に進める。また、計数値が2未満（DN＜2）またはDb＜Dbthの場合は処理をステップS506に進める。
【００７９】
つまり、フラグBNF=‘1’に設定した場合は第二の処理を行うことはない。また、フラグBNF=‘0’、かつ、注目物体が分光特異性を有する場合は注目物体以降、第二の処理を実行する。
【００８０】
このように、光線が拡散反射される回数および光を拡散する物体の間の距離に応じて、第一の処理と第二の処理を制御することで、レンダリング処理の高速化を図る。
【実施例４】
【００８１】
以下、本発明にかかる実施例4の画像処理を説明する。なお、実施例4において、実施例1-3と略同様の構成については、同一符号を付して、その詳細説明を省略する。
【００８２】
実施例4では、処理速度向上のため、分光の波長を人間の視覚特性に合わせた波長に絞り込んでレンダリングを行う処理を説明する。
【００８３】
人間の視覚特性は三つの波長でピークをもつ。これは視神経の構造によるもので、赤(R)、緑(G)、青(B)で強く反応する。そのため、色処理においては、分光の代わりにRGB3チャネルを用いることが多い。また、同様に、チャネルとしてCIEXYZを用いることもある。これらチャネルを用いれば、分光を用いる場合と比べて色の精度は低下するが、人間の視覚特性に合っているため、その差は認識され難い。そのため、RGB3チャネルやCIEXYZを利用して光線追跡を行えば、レンダリング結果の色精度の低下を抑えながら、光線の分岐数が三本で済むため、より高速度にレンダリングを行うことができる。
【００８４】
処理フローは実施例1-3と同等であるが、分光光線追跡(S508)において、波長λs（例えば380nm≦λs≦740nm）の代わりに、実施例4においては、λs=R、λs=G、λs=Bを設定する。なお、RGB3チャネルを用いる場合、ステップS606における判定条件D=λs・L/dのλsには等色関数のピーク波長（例えばR=605nm、G=540nm、B=445nm）を利用すればよい。また、各画素値は次式で表される。
Iλ = Rλ×Lλ      …(11)
ここで、λ=R, G, B。
【００８５】
なお、式(11)において、RR、RG、RBはチャネルごとの光の減衰率であり、分光減衰率に対応させて、ここでは「チャネル減衰率」と呼ぶことにする。
【実施例５】
【００８６】
以下、本発明にかかる実施例5の画像処理を説明する。なお、実施例5において、実施例1-4と略同様の構成については、同一符号を付して、その詳細説明を省略する。
【００８７】
分光光線追跡(S508)において、分光とRGB（またはCIEXYZ）を併用することも可能である。例えば、レンダリングシーンとして図8に示すシーンを考える。このシーンにおいて、物体704と物体705は、レンダリング結果に及ぼす影響の度合いが異なる。そこで、視点201に近い物体704については分光を用いる分光光線追跡を行い、視点201から遠い物体705については例えばRGBを用いる簡略的な分光光線追跡を行う。
【００８８】
図14のフローチャトにより実施例5の分光光線追跡を説明する。なお、図7の処理と同等の処理には、同一符号を付して、その詳細説明を省略する。
【００８９】
CPU101は、分光特異性を有する物体と視点201の間の距離Doを算出し、距離Doと所定距離Dth3を比較する(S621)。そして、距離が所定距離未満(Do＜Dth3)の場合は、実施例1と同様に、波長λsに例えば可視域の最短波長（例えば380nm）を設定する(S601)。また、距離が所定距離以上(Do≧Dth3)の場合はλsとしてチャネル（例えばR）を設定して(S622)、ステップS602からS609を実行する。
【００９０】
そして、CPU101は、λsの光線が物体に当らないと判定する(S603)か、λsの光線が当った物体が光源と判定する(S604)と、再び距離Doと所定距離Dth3を比較する(S623)。そして、Do＜Dth3の場合は、実施例1と同様に、波長λsに所定値（例えば10nm）を加え(S610)、波長λsと例えば可視域の最長波長λm（例えば740nm）を比較する(S611)。そして、λs≦λmの場合は処理をステップS602に戻して波長λsの光線の逆追跡を続行し、λs＞λmの場合は処理を終了する。
【００９１】
Do≧Dth3の場合、CPU101は、Gチャネルの光線追跡を行ったか否かを判定し(S624)、未了ならばλsとしてGチャネルを設定して(S625)、処理をステップS602に戻す。また、Gチャネルの光線追跡を行った場合は、Bチャネルの光線追跡を行ったか否かを判定し(S626)、未了ならばλsとしてBチャネルを設定して(S626)、処理をステップS602に戻す。
【００９２】
このように、距離Doが示すレンダリング結果への影響度によって、分光による分光光線追跡とRGB3チャネルやCIEXYZによる分光光線追跡を切り替える。その結果、レンダリング結果への影響度が大きい視点に近い物体は分光による分光光線追跡により色精度の高いレンダリング結果が得られる。一方、レンダリング結果への影響度が小さい視点から遠い物体はRGB3チャネルなどによる分光光線追跡により光線の分岐数を三本で済ませ、高速にレンダリングを行う。
【００９３】
なお、上記では、分光とRGB（またはCIEXYZ）チャネルの何れかを選択する方法を説明した。しかし、視点と物体の距離Doに応じて、動的に、逆追跡する光線の数（言い替えれば、波長λsの数、または、ステップS610における波長λsのステップ幅）を変化させてもよい。つまり、距離Doが大きくなるほど、波長λsのステップ幅を増加させて、逆追跡する光線の数（波長バンドの数、後述する要素の数）を減少させる。
【実施例６】
【００９４】
以下、本発明にかかる実施例6の画像処理を説明する。なお、実施例6において、実施例1-5と略同様の構成については、同一符号を付して、その詳細説明を省略する。
【００９５】
上記の実施例を組み合わせると、次に説明する実施例6の構成が得られる。図15のフローチャートにより実施例6の光線追跡法を説明するが、各ステップの処理は、上記の実施例における説明から用意に理解することができ、その詳細説明を省略する。
【００９６】
CPU101は、仮想三次元空間における物体が分光異方性を有すか否かを当該物体の少なくとも屈折特性および/または反射特性に基づき判定する(S701)。そして、当該物体が分光異方性をもたない場合は、波長やチャネルを考慮しない光を光線追跡の対象に決定する(S706)。また、当該物体が分光異方性を有する場合は、下記のアルゴリズムに従い光、分光、チャネル、または、波長やチャネルを考慮しない光を光線追跡の対象に決定する(S702-S706)。
if (Do ＜ Dth3)
異方性分岐して分光を用いる；
if (Dth3 ≦ Do ＜ Dth4)
異方性分岐してチャネル（例えばRGB）を用いる；
if (Dth4 ≦ Do)
異方性分岐せずに光を用いる；      …(12)
【００９７】
次に、CPU101は、仮想三次元空間における視点から光源まで、追跡対象の少なくとも一つの要素を追跡して、当該物体を示す画像データを決定する(S707)。なお、光は要素として光そのものを有し、分光は要素として複数の波長バンドを有し、チャネルは要素として複数のチャネルを有す。つまり、追跡対象が光の場合は通常の光線追跡を行い、追跡対象が分光またはチャネルの場合は波長バンドごとまたはチャネルごとの分光光線追跡を行う。
【００９８】
また、閾値である第一の距離Dth3および第二の距離Dth4は、例えば経験的に設定すればよい。そして、分光特異性を有する物体と視点の間の距離が第一の距離未満(Do＜Dth3)の場合は異方性分岐して分光を、距離が第一の距離以上(Do≧Dth3)かつ第二の距離未満(Do＜Dth4)の場合は異方性分岐してチャネルを追跡対象にする。また、距離Doが第二の距離以上(Do≧Dth4)の場合は異方性分岐せずに光を追跡対象にする。
【００９９】
なお、用語「光」は複数の波長（チャネル）の情報をもつ光線を意味し、用語「分光」はそれぞれ単一の波長の情報をもつ光線の束を意味し、用語「チャネル(channels)」は単一のチャネルの情報をもつ光線の束を意味する。
【０１００】
［その他の実施例］
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステムあるいは装置のコンピュータ（又はCPUやMPU等）がプログラムを読み出して実行する処理である。
【図１】
2012181825.tif 000003
【図２】
2012181825.tif 000004
【図３】
2012181825.tif 000005
【図４】
2012181825.tif 000006
【図５】
2012181825.tif 000007
【図６】
2012181825.tif 000008
【図７】
2012181825.tif 000009
【図８】
2012181825.tif 000010
【図９】
2012181825.tif 000011
【図１０】
2012181825.tif 000012
【図１１】
2012181825.tif 000013
【図１２】
2012181825.tif 000014
【図１３】
2012181825.tif 000015
【図１４】
2012181825.tif 000016
【図１５】
2012181825.tif 000017