説明

画像処理装置および画像処理方法

【課題】分光レイトレーシングを行う際に、追跡対象となる全波長に対する処理が終了していなくても、シーンを簡易に再現したCG画像を描画する。
【解決手段】S201で、光源特性、シーン内のオブジェクト特性、視点特性からなるシーンデータを入力する。そしてS205で、分光レイトレーシングの全対象波長を波長域毎のグループに分割し、S206で該グループ毎に代表波長を選択し、対応するレイトレーシング用パラメータをシーンデータから設定する。そしてS208で、各グループの代表波長ごとに、設定されたパラメータを用いたレイトレーシングを行うことで、シーンにおける各画素に対応する分光放射輝度を算出する。以上の処理を、グループの分割数を増やしながら繰り返すことで、シーンを再現したCG画像が徐々に詳細となるよう、段階的に描画できる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、レイトレーシング法を用いて画像を生成する画像処理装置および画像処理方法に関する。
【背景技術】
【0002】
近年、3次元の仮想空間上に生成されるコンピュータグラフィックス(以下、CG)が様々な分野で利用されている。CGは設計やデザインの分野でも広く利用されており、このような分野では、実物により忠実な画像を生成する技術が要求されている。
【0003】
CGを用いて実物を忠実に再現する手法としては、例えばマルチスペクトルカメラで撮影した分光データを用いる手法(例えば、特許文献1参照)等が知られている。その他にも、スキャンライン法、Zバッファ法、光線追跡法(以下、レイトレーシング)等がある。
【0004】
中でもレイトレーシングは、三次元空間における光の伝搬経路を追跡することで、反射や屈折を表現可能であるため、実物に忠実な画像生成に適した手法である。しかしながらレイトレーシングでは、非常に大量の光線の経路を繰り返し追跡していく必要があるため、複雑なシーンにおいて高品質な画像を得るためには、計算コストが膨大となる。レイトレーシングではさらに、視点の移動や、仮想空間内のオブジェクトの移動や変形等の描画条件が変更されるたびに、画像生成処理を行う必要がある。したがって、ユーザが視点や視線の方向、光源の位置や種類、またはオブジェクトの数や位置、形状等の描画条件を変更して新たな画像を得るには、全ての演算が終了するまで待つ必要がある。
【0005】
そのため、レイトレーシングの効率化アルゴリズムとして、空間分割法やバウンディングボリューム法等が提案されている。例えば空間分割法を用いた技術として、予め仮想空間を複数のボクセルに分割しておき、光線が通過するボクセル内のオブジェクトのみと交差判定を行って画像を生成する手法が提案されている(例えば、特許文献2参照)。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開2006-277515号公報
【特許文献2】特開2001-184522号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
しかしながら、一般的なレイトレーシングでは光を波長に依存しない一様な光線として扱う。したがって、オブジェクトを透過する光の屈折のように、波長によって異なるふるまいをする物理現象を正しく再現することができない、という問題があった。
【0008】
また、上記特許文献1に記載の分光データを用いる方法では、光源の配光特性が考慮されていないため、例えば蛍光灯とLED照明のように、配光特性の異なる光源によってシーンに生じる陰影の変化を再現できないという問題があった。
【0009】
そこで、光源特性やオブジェクトの分光特性に基づいた分光レイトレーシングを行うことが考えられる。しかしながら、分光レイトレーシングを行う場合、波長数に応じて演算時間が増加してしまうため、ユーザが描画条件を変更した際に新たな画像を得るまでの待機時間は、さらに増加してしまう。上記特許文献2に記載された効率化手法は、分光レイトレーシングを行う際にも利用可能であるが、この手法によって効率化できるのは波長ごとの追跡であり、やはり全ての波長に対して計算が完了しないと画像を描画できないという問題があった。
【0010】
本発明は上記問題を解決するためになされ、分光レイトレーシングを行う際に、追跡対象となる全波長に対する処理が終了していなくても、シーンを簡易に再現したコンピュータグラフィックス画像を描画することを目的とする。

【課題を解決するための手段】
【0011】
上記問題を解決するための一手段として、本発明の画像処理装置は以下の構成を備える。
【0012】
すなわち、任意のシーンについてのコンピュータグラフィックス画像を、分光レイトレーシング法によって生成する画像処理装置であって、前記シーンを照明する光源の特性、該シーン内におけるオブジェクトの特性、および該シーンを観察する視点の特性からなるシーンデータを入力するシーンデータ入力手段と、レイトレーシングの対象波長の全てを含む波長域を、波長域ごとのグループに分割するグルーピング手段と、前記グループのそれぞれにおいて、該グループに含まれる対象波長から代表波長を選択し、該代表波長に対するレイトレーシングのパラメータを前記シーンデータから設定するパラメータ設定手段と、前記グループのそれぞれにおける前記代表波長ごとに、前記パラメータ設定手段で設定された前記パラメータを用いたレイトレーシングを行って、前記シーンにおける各画素に対応する分光放射輝度を算出するレイトレーシング手段と、前記各画素に対応する分光放射輝度から色信号値を算出して前記コンピュータグラフィックス画像を生成する色信号値算出手段と、を有することを特徴とする。
【発明の効果】
【0013】
本発明によれば、分光レイトレーシングを行う際に、追跡対象となる全波長に対する処理が終了していなくても、シーンを簡易に再現したコンピュータグラフィックス画像を描画することが可能となる。
【図面の簡単な説明】
【0014】
【図1】第1実施形態における画像処理装置の構成例を示すブロック図、
【図2】第1実施形態における画像生成処理を示すフローチャート、
【図3】光源の配光特性を説明する模式図、
【図4】光の屈折を説明する摸式図、
【図5】オブジェクトの反射/透過特性を説明する模式図、
【図6】第1実施形態における対象波長のグループ分割を説明する模式図、
【図7】レイトレーシング法を説明する模式図、
【図8】画素の放射輝度を算出するレイトレーシングを示すフローチャート、
【図9】第1実施形態おける色信号算出処理を示すフローチャート、
【図10】視覚特性の例を示す模式図、
【図11】第1実施形態における光の経路探索を説明する概念図、
【図12】第1実施形態における操作画面例を示す図、
【図13】第1実施形態における画像処理装置の論理構成を示すブロック図、
【図14】変形例における画像処理装置の論理構成を示すブロック図、である。
【発明を実施するための形態】
【0015】
以下、本発明に係る実施形態について、図面を参照して説明する。なお、以下の実施の形態は特許請求の範囲に関る本発明を限定するものではなく、また、本実施の形態で説明されている特徴の組み合わせの全てが本発明の解決手段に必須のものとは限らない。
【0016】
<第1実施形態>
本実施形態では、分光レイトレーシング法において、一部の波長の光に対する経路追跡結果を、未だ経路追跡を行っていない波長の光の経路として利用することで、コンピュータグラフィックス画像(以下、CG画像)を簡易に生成する。これにより、ユーザによるシーン条件の指定からCG画像表示までの時間が短縮される。その後、ユーザによるシーン条件の変更がなければ、経路追跡を行う光の波長数を徐々に増やしていくことで、より詳細なCG画像を生成し、最終的には全波長についてのCG画像の生成、表示を可能とする。
【0017】
●装置構成
本実施形態における画像処理装置の構成例について、図1を用いて説明する。図1に示すように本実施形態の画像処理装置は、CPU101、メインメモリ102、記憶装置103、入力装置104、表示装置105を備え、これら各構成がバス106によって接続されている。CPU101は、画像処理アプリケーションを含む各種プログラムの実行および演算処理を行う。メインメモリ102は、処理に必要なプログラム、データ、作業領域等をCPU101に提供する。記憶装置103は、画像処理アプリケーションや、光源およびオブジェクト等の分光特性データを蓄積するものであり、例えばハードディスク(HDD)等が用いられる。尚、光源やオブジェクトの分光特性データの詳細については後述する。入力装置104はキーボードやマウス等のユーザインタフェースを構成し、光源やオブジェクトについての形状や位置データを入力する。表示装置105は、CPU101が生成した画像を表示するものであり、CRTや液晶画面等によって構成される。また、入力装置104に連動してユーザ入力を受ける操作画面を構成する。
【0018】
以下、上記構成において、CPU101からの指令に基づき画像処理アプリケーションが画像を生成して表示装置105に表示するまでの画像処理について、詳細に説明する。
【0019】
図13は、本実施形態における画像処理装置1301の論理構成を示すブロック図であるが、同図に示す各構成は、上述したように画像処理アプリケーションとして実現される。
【0020】
図13において、シーンデータ入力部1302は、シーンにおける各種特性を示すシーンデータ1307を入力する。シーンデータ1307としては、シーンを照明する光源の特性、およびシーンを構成する各オブジェクトの特性、およびシーンを観察する際の視点特性を示す情報を含んでいる。シーンデータ1307の詳細については後述する。シーンデータ修正量入力部1303は、シーンデータ入力部1302で読み込んだシーンデータから、照明の位置、各オブジェクトの位置/形状/サイズ、視点位置の修正量、の各情報を入力する。分光放射輝度算出部1304は、シーンデータ入力部1302及びシーンデータ修正量入力部1303から入力された情報に基づき、CPU101からの指示に従ってシーンのCG画像における各画素の分光放射輝度1309を算出する。視覚特性入力部1305は、分光放射輝度1309を表示装置105の色空間へ変換するために利用される、シーンを観察する際の視覚特性1308を入力する。色信号値算出部1306は、分光放射輝度算出部1304で算出した各画素の分光放射輝度1309と、視覚特性入力部1305から入力された視覚特性1308の各情報に基づき、CPU101からの指示に従って、各画素の色信号値を算出する。該色信号値は例えばRGB値として算出され、出力画像データ1310として出力される。出力した画像データ1310は、記憶装置103等の記憶領域に格納するとともに表示装置105に表示される。尚、シーンデータ1307、視覚特性1308としては、予め記憶装置103に記憶されているデータを入力するが、不図示の外部装置からのデータを入力するようにしても良い。また、シーンデータ修正量入力部1303は、ユーザがマウスやキーボード等の入力装置104を操作することによって入力される。
【0021】
●UI画面
以下、本実施形態において仮想空間におけるCG画像を分光レイトレーシング法によって作成・表示するためのユーザインタフェース(UI)について説明する。図12は、本実施形態における操作画面例を示す図である。本実施形態ではユーザによって指定された、視線や、光源、オブジェクト等の情報を含むシーンデータに応じて、CG画像が生成される。図12において、1201はシーンファイル名指定部であり、読み込むべきシーンデータが記述されたシーンデータファイル名が、ユーザによって指定される。そして、読込ボタン1202が押下されることで、該指定されたシーンファイルを読み込む。するとシーンデータ表示部1203に、読み込んだシーンデータが表示される。なお、マウスやキーボード等のユーザインタフェースを利用して、シーンデータにおけるオブジェクトや光源、視点の位置を変更することができる。1204は画像表示部であり、シーンデータに基づく分光レイトレーシングによるレンダリング結果、すなわち分光レイトレーシングにより生成されたCG画像を表示する。尚、本実施形態における操作画面は図12に示す例に限られず、シーンデータの設定および修正、生成画像の表示を可能とするものであれば、どのような画面であっても良い。
【0022】
●シーンデータ
ここで、シーンデータ入力部1302で入力されるシーンデータ1307について、詳細に説明する。シーンデータ1307は、シーンを照明する光源特性、シーン内における各オブジェクトの位置や反射特性、透過特性を示すオブジェクト特性、そして、シーンを観察する際の視点特性から成る。
【0023】
まず光源特性は、光源の分光的な明るさ情報である配光特性、分光放射輝度、そして仮想空間上の光源位置、の各情報を示す。またオブジェクト特性は、オブジェクトの数、各オブジェクトの仮想空間上の位置、形状のほか、分光屈折率、分光反射特性、分光透過特性、の各情報を示す。また視点特性は、視点位置、視線方向、画角、の各情報を示す。
【0024】
ここで、光源の配光特性および分光放射輝度について、詳細に説明する。まず配光特性は、光源から放射される光の各方向への強度分布を示すものであり、光源の指向性の違いによって一つの光源がシーンを照らす範囲が異なる。図3(a)は、指向性の低い蛍光灯などの光源における配光特性の例であり、シーンを広く照らしていることが分かる。一方図3(b)は、指向性の高いLEDなどの光源における配光特性の例であり、シーンの一部だけが照らされていることが分かる。このように、光源の配光特性が異なるとシーンに生じる陰影が大きく変化するので、光源の配光特性はシーンを忠実に再現するために重要なファクタとなる。尚、配光特性のデータ形式としては、光源からの光の出力角と光の強度との対応が得られれば、どのような形式であっても構わない。例えば、出力角に対する光の強度の関数形式であって良いし、出力角と光の強度の対応を示すルックアップテーブル(以下、LUT)の形式であっても良い。
【0025】
次に、光源の分光放射輝度は、波長毎の輝度分布を示すものであり、光源によって特性が異なる。光源の種類が異なると分光放射輝度分布も変化し、その結果、オブジェクトの色の見えが変化するので、光源の分光特性はシーンを忠実に再現するために重要なファクタとなる。尚、分光特性も配光特性と同様に、可視光域の波長と放射輝度との対応が得られれば、どのような形式であっても構わない。例えば、光の波長に対する放射輝度の関数であっても良いし、波長と放射輝度の対応を示すLUTの形式でも良い。
【0026】
次に、オブジェクトの分光屈折率、分光反射特性および分光透過特性について説明する。まず、光の屈折について、図4を用いて説明する。光はオブジェクトにあたると、その表面で反射する光と透過する光に分離する。オブジェクトを透過する光は、その波長に応じた屈折率によって屈折角が変化する。図4に示すように、屈折率n1の空間401と、屈折率n2の空間402が接しており、入射光403が空間401から空間402へ透過する場合、入射角をθ1とすると、屈折角θ2は以下の(1)式で示される。
【0027】
θ2(λ)=sin-1{(n1(λ)/n2(λ))sinθ1} ・・・(1)
ここで、屈折率n1,n2は波長ごとに異なる値をとることがあるため、透過オブジェクトにおいて光の経路追跡を行う場合、波長ごとに屈折角θ2が変化することがある。すなわち、波長ごとに光の経路が変化する。
【0028】
次に、オブジェクトの反射特性と透過特性ついて、図5を用いて説明する。一般に、オブジェクトの反射特性は双方向反射率分布関数(BRDF:Bidirectional Reflectance Distribution Function)frで表される。オブジェクト上の位置xにおいて、ある方向ωiから入射する光の波長をλi、強度をLiとし、ある方向ωrに反射する光の波長をλr、強度をdLrとすると、反射特性frは以下の(2)式で示される。なお、nはオブジェクトの位置xにおける法線ベクトルである。
【0029】
fr(x,ωi,λr,ωr)={dLr(x,λr,ωr)}/{Li(x,λi,ωi)(ωr・n)dω} …(2)
一般に、反射光の強度分布はオブジェクトの表面形状に依存し、オブジェクト表面が平滑なほど、鏡面反射方向すなわちωi=ωr方向の反射強度が高くなり、それ以外の拡散反射方向への反射強度は小さくなる。
【0030】
尚、オブジェクトの反射特性frのデータ形式としては、オブジェクトへの光の入射角と反射角に対応した反射率が得られれば、どのような形式であっても構わない。例えば、上記(2)式のように一意の関数として入力しても良いし、一般に拡散反射は等方的に分布するため、ωi=45°,ωr=0°の反射特性を拡散反射に適用し、鏡面反射は別途LUTにする等、分割して入力しても構わない。
【0031】
また、オブジェクトを透過する光は双方向透過率分布関数(BTDF:Bidirectional Transmittance Distribution Function)ftで表される。オブジェクト上の位置xにおいて、ある方向ωiから入射する光の波長をλi、強度をLiとし、ある方向ωtに透過する光の波長をλt、強度をdLtとすると、透過特性ftは以下の(3)式で示される。なお、nはオブジェクトの位置xにおける法線ベクトルである。
【0032】
ft(x,ωi,λt,ωt)={dLt(x,λt,ωt)}/{Li(x,λi,ωi)(ωt・n)dω} …(3)
一般に、透過光の強度分布は屈折率に依存するため、ωtが上記(1)式を満たす場合に、透過強度が最大になる。尚、オブジェクトの透過特性ftのデータ形式も、オブジェクトへの光の入射角と屈折角に対応した透過率が得られれば、どのような形式であっても構わない。例えば、上記(3)式のように一意の関数として入力しても良いし、ωi=ωr=0°の透過特性をωtが(1)式の屈折角θに等しい場合に適用し、それ以外の透過は別途LUTにする等、分割して入力しても良い。
【0033】
尚、本実施形態では、予めモデリングソフトを利用して作成し、記憶装置103に保存しておいたシーンデータを読み出して利用する。
【0034】
●画像生成の原理
以下、本実施形態におけるCG画像(以下、単に画像と称する)の生成原理について、詳細に説明する。本実施形態においては分光レイトレーシングを行うが、その際の分光の波長を複数のグループに分類し、同じグループ内の波長の光は同じ経路を通るものとして、画像を生成することを特徴とする。そのため、全波長の光について経路を追跡するのではなく、グループの数だけ、光の経路を追跡することで、簡易な画像を生成することが可能となる。
【0035】
ここで図11に、本実施形態における光の経路探索の概念図を示す。以下では、400nmから10nm刻みで700nmまでの31波長により、画像生成を行う例を示すが、波長の範囲や刻み、そして波長数はこの例に限られない。
【0036】
図11(a)に示すように、まずは400nm〜700nmの全31波長を一つのグループとして扱い、これら各波長の光が同一の経路を通るものとして画像を生成する。その際に、全31波長のいずれか一つの波長の屈折率を用いて、光の経路追跡を行うが、ここでは、グループ内で最も小さい波長の屈折率を用いるものとする。すなわち、400nmの光についての屈折率を用いる。
【0037】
続いて図11(b)に示すようにグループ数を2に増やし、各グループについて、当該グループ内で最も小さい波長の屈折率を用いて経路追跡を行う。具体的には、400nm〜550nmのグループ1では400nmの波長についての屈折率を用い、560nm〜700nmのグループ2では560nmの波長についての屈折率を用いる。ここで、400nmの光の屈折率を用いた経路追跡は、グループ数を1とした際に既に実施されている。そこで、グループ数を2にした際に、そのうちのグループ1についての経路追跡は改めて行う必要はなく、グループ2についての経路追跡のみを行えば良いことになる。
【0038】
続いて、同様に図11(c)に示すようにグループ数を3とし、これら各グループの光の経路追跡結果を用いて画像を生成する。例えば、図11(b)のグループ1をさらに分割して、400nm〜470nmをグループ1、560nm〜700nmをグループ2、480nm〜550nmをグループ3とする。ここでも、各グループ内で最も小さい波長の屈折率を用いて経路追跡を行うため、グループ1では400nm、グループ2では560nm、グループ3は480nmの波長についての屈折率をそれぞれ用いる。ここでも、グループ1とグループ2に対する経路追跡は既に実施済みであるため、グループ3の光に対する経路追跡のみを行えば良い。
【0039】
本実施形態では図11に示したように、波長分類のグループ数を順次増やしていき、最終的にグループ数が全波長数と等しくなるまで、上記グループごとの経路追跡処理を繰り返していく。これにより、最終的に全波長について経路追跡を行った画像を生成することができる。尚、全波長の経路追跡による画像を生成し終える前に、ユーザによってシーンの描画条件すなわちシーンデータが変更された場合には、変更前の描画条件での画像生成を中止し、グループ数を1に初期化して新たな描画条件による画像生成を開始する。すなわち、初期化されたグループ数への分割からやり直す。
【0040】
●画像生成処理詳細
以下、本実施形態の画像処理装置における画像生成処理の詳細について、図2のフローチャートを用いて説明する。
【0041】
まずS201で、ユーザが指定した視点特性、光源特性、オブジェクト特性等を示すシーンデータを読み込む。シーンデータは上述したように、図12に示す操作画面からユーザによって設定される。
【0042】
次にS202で、S201で読み込んだシーンデータから、光源の位置、オブジェクトの位置や形状、視点の位置の修正量を取得する。ユーザは、上記図12に示す操作画面上のシーンデータ表示部1203により、シーンデータのうち、オブジェクトや光源、および視点の各位置を変更することが可能である。S202では、ユーザによって変更されたこれらシーンデータの修正量を取得する。
【0043】
次にS203で、S202で取得したシーンデータの補正量に基づき、シーンデータの修正があるか否かを判定する。すなわち、補正量が取得されていればシーンデータの修正があるものとしてS204へ移行し、補正量がない場合にはシーンデータに修正がないものとしてS205へ移行する。
【0044】
S204では、分光の波長数を分割するグループ数に初期値を設定する。グループ数の初期値としては任意の値を設定可能であるが、初期値が小さいほど最初に画像が表示されるまでにかかる時間が短くなる一方、全波長についての詳細なレイトレーシング結果とは異なる簡易な画像が形成される。以下では、グループ数の初期値を1として説明を行う。
【0045】
S205では、本実施形態における分光レイトレーシングの対象となる、400nmから10nm刻みで700nmまでの全31波長(以下、対象波長)を、設定されたグループ数に応じた数のグループに分割(グルーピング)する。この分割は、対象波長の全てを含む波長域を、少なくとも1つの連続した波長域ごとのグループに分割するように行われる。
【0046】
S205の初回実行時には、各グループに含まれる対象波長数ができるだけ均等となるように分割し、グループ数が1である場合には全対象波長を1つのグループとして扱う。一方、S205の実行が2回目以降である場合には、前回の実行時に作成したグループの中から1つのグループを選択し、これを再分割することでグループ数を増やしていく。再分割されるグループとしては、グループ内に含まれる対象波長数が最も多いグループを選択する。なお、対象波長数が最も多いグループが複数ある場合には、それらのグループからランダムに1グループを選択する。
【0047】
ここで図6に、本実施形態におけるグルーピング例を示す。同図によれば、グループ数を1から2に増やす場合は、400nm〜700nmの全波長域(31対象波長)を、400nm〜550nmの16対象波長から成るグループ1と、560nm〜700nmの15対象波長から成るグループ2の2グループに分割する。さらに、グループ数を2から3に増やす場合は、グループ内の対象波長数が多いグループ1を再分割する。具体的には、400nm〜550nmのグループ1を、400nm〜470nmまでの8対象波長から成る新たなグループ1と、480nm〜550nmの8対象波長から成るグループ3の2グループへ分割する。これにより、560nm〜700nmまでの16対象波長から成るグループ2と合わせ、3グループが作成される。
【0048】
次にS206では、上記のようにグルーピングされた各グループに対し、レイトレーシング法による光の経路追跡を行う際のパラメータ設定を行う。本実施形態では、同一グループ内にある対象波長については、その光が全て同じ経路を通ると仮定して、光線追跡を行う。そのためS206では、シーンデータから取得される、光線追跡に利用する各種パラメータのうち、特に波長に依存する屈折率を、グループ内の対象波長から選択された1つの代表波長の屈折率とする。上述したように本実施形態では、グループ内で最も短波長である対象波長を代表波長として選択し、その屈折率を適用する。ただし、グループ内における代表波長は、当該グループ内のどの対象波長であっても良い。例えば、グループ内の中央値相当の対象波長を代表波長としてその屈折率を利用しても良いし、グループ内から代表波長をランダムに選択しても良い。ただし、グループ内に、再分割前のグループで選択された代表波長が存在する場合には、再度その波長を新たなグループの代表波長として選択するものとする。すなわち、再分割時のレイトレーシング処理量を低減させるため、代表波長はできるだけ再分割前と重なるようにすることが望ましい。
【0049】
次にS207で、S206で選択された代表波長の屈折率を利用したレイトレーシングが既に実行済みであるか否かを判定する。この判定は例えば、レイトレーシング結果を保持する不図示のメモリ内に、当該代表波長に対応する結果が保持されているか否かに応じて行う。該メモリ内におけるレイトレーシング結果としては、例えば対象波長ごとに保持されるだけでなく、屈折率に対応して保持されていても良い。代表波長についてのレイトレーシングが既に行われている場合には、そのグループに対するレイトレーシングを行わない。一方、未だレイトレーシングが行われていないグループの場合はS208へ移行する。
【0050】
S208では、S206で選択された代表波長の屈折率を利用したレイトレーシングにより、光の経路を追跡し、視点に到達する各対象波長の光の放射輝度、すなわち分光放射輝度を計算する。上述したように、代表波長に対するレイトレーシング結果は、不図示のメモリに保持される。レイトレーシング法の詳細については後述する。
【0051】
そしてS209で、全てのグループについて上記S206〜S208の処理が終了したと判定されるとS210に進み、未終了のグループがあればS206に戻る。
【0052】
S210では、各グループについてレイトレーシングによって得られた分光放射輝度から、表示装置105で表示可能な色信号値を算出し、表示装置105の表示を更新する。この色信号値の算出処理の詳細については後述する。
【0053】
次にS211では、グループ数の値を更新する。具体的にはグループ数を1つ増やす。そしてS212で、S211で更新したグループ数を全対象波長数(この場合、31)と比較し、グループ数が全対象波長数未満であればS202へ移行して、更新したグループ数によるレイトレーシングを行う。一方、更新したグループ数が全対象波長数以上であれば、本画像生成処理を終了する。
【0054】
このように、分光レイトレーシングの対象波長をグループに分け、同一グループ内の対象波長の光は同一の経路を通ると仮定することで、光の経路追跡にかかる時間を短縮し、画像を生成・表示することができる。そして、グループ数を順次増加させ、増加したグループによる経路探索を繰り返すことで、生成される画像の正確性を徐々に高めていき、最終的には全対象波長の光に対して経路追跡を行った画像が生成される。
【0055】
●レイトレーシング法
以下、図2のS208で行うレイトレーシング法について説明する。本実施形態においては、分光した対象波長ごとに異なるパラメータを用いてレイトレーシングを行う。なお、各対象波長において行うレイトレーシングは、適用するパラメータが異なるだけで、その処理方法は同様である。したがって以下では、ある対象波長λにおける単波長のレイトレーシング法について説明を行う。また、以下では空間分割法やバウンディングボリューム法などの高速化手法については言及しないが、各対象波長の光線追跡時に各種高速化手法を適用することも可能である。
【0056】
図7は、視点701から2つのオブジェクト703,704を見た場合の見えを、仮想スクリーン702上に再現する様子を表している。レイトレーシング法では、視点701から仮想スクリーン702上の各画素に対して光線を飛ばし、画素を通過した光線がオブジェクト703,704の表面で反射や透過を繰り返し、光源705に到達するまでを追跡する。そして、各光線について、経路中に衝突したオブジェクトの反射率や透過率を光源の放射輝度とかけ合わせることで、仮想スクリーン702上の各画素の値を決定することができる。
【0057】
以下、光線の経路追跡による1画素の放射輝度を決定する処理について、図8(a),(b)に示す2つのフローチャートを用いて説明する。
【0058】
まず図8(a)のS801において、光線の衝突回数を0で初期化する。続いてS802において、光線強度を1で初期化する。次にS803において、光線の始点および方向を設定する。ここでは始点として視点701を設定し、方向としては仮想空間における視点701から仮想スクリーン702上の処理対象画素に向かう方向を設定する。そしてS804において、レイトレーシングを行うが、その詳細は図8(b)に示す。
【0059】
図8(b)では、まずS805において、上記S803で設定した光線の始点および方向に基づき、光線がオブジェクトと衝突するか否かの判定を行う。衝突する場合はS806へ移行し、衝突しない場合はS812へ移行する。
【0060】
光線がオブジェクトに衝突する場合、S806において、光線がそれまでにオブジェクトに衝突した回数を、所定の最大衝突回数と比較する。その結果、光線のオブジェクト衝突回数が最大衝突回数以下であればS807に移行するが、最大衝突回数より大きい場合はS813へ移行して処理を打ち切る。本来、光線が光源に到達するまで追跡を行うことが望ましいが、それには膨大な計算時間が必要となってしまう。そこで、所定の衝突回数までに光源に到達しない場合は、光線が光源に到達する前に処理を打ち切る。本実施形態では処理の打ち切りを衝突回数に基づいて判定する例を示すが、この判定には他の方法を用いても良く、例えば追跡中の光線の放射輝度が既定の値を下回った場合に処理を打ち切るとしても良い。
【0061】
次にS807では、光線がオブジェクトと衝突した回数を更新する。具体的には、それまでの衝突回数に1を加えた値を、新たな衝突回数として保持すれば良い。
【0062】
次にS808では、光線を複数の光線に分裂させ、分裂後の各光線の始点と方向を設定する。光線の分裂数は任意に設定して構わないが、分裂数が多いほどノイズの少ない画像が得られる半面、計算量が増大する。一方、分裂数が少ないほどノイズが多くなる半面、計算量が少なくて済む。したがって、必要となるノイズや計算時間等を考慮して、分裂数を決定すべきである。また、各光線の始点は、分裂前の光線とオブジェクトとの衝突点とする。そして各光線の方向としては、あらゆる方向において均等な数の光線が飛ぶように設定することが望ましいが、少ない光線数であれば均一な乱数を用いて各光線の方向を設定する。
【0063】
次にS809で、オブジェクトとの衝突による光線の強度変化を反映させる。反射光の場合、反射後の強度Pr(λr)は、反射前の強度をP0(λi)、反射特性として上記(2)式のfrを用いると、以下の(4)式によって表わされる。
【0064】
Pr(λr)=P0(λi)*fr(x,ωi,λr,ωr) …(4)
同様に、透過光の場合、透過後の強度Pt(λt)は、透過前の強度をP0(λi)、透過特性として上記(3)式のftを用いると、以下の(5)式によって表わされる。
【0065】
Pt(λt)=P0(λi)*ft(x,ωi,λt,ωt) …(5)
次にS810で、図8(b)のフローチャートに示す処理を、分裂後の各光線について再帰的に実行する。このS810の処理はすなわち、再帰処理によって最終的に交差するオブジェクトがなくなる、または処理の打ち切りにより、当該光線についての放射輝度E0(λ)が算出された時点で、終了する。
【0066】
そしてS811で、S808で分裂した全光線について、上記S809,S810によるレイトレーシングを行ったか否かを判定する。未処理の光線があればS809に戻って処理を繰り返し、全光線についての処理が終了していればS812に進む。
【0067】
S812では、分裂後の全光線についての放射輝度E0(λ)の平均を算出する。すなわち、光線の分裂数をN、各光線の放射輝度をEn(λ)(nは0からN-1までの整数)とすると、平均放射輝度Ex(λ)は以下の(6)式で算出される。なお、(6)式においてΣはn=0からN-1までの整数に関する総和を示す。
【0068】
Ex(λ)=(1/N)・ΣEn(λ) …(6)
次に、S806において光線の衝突回数が最大衝突回数より大きい場合に実行されるS813の処理について説明する。S813では、光線の放射輝度E0(λ)を算出して、該構成の経路追跡処理を終了する(打ち切る)。S813で放射輝度E0(λ)が算出される光線は、何度もオブジェクトと衝突しても光源には到達していない光線であるため、十分に減衰しているものと考えられる。そのため、該光線の放射輝度を、以下の(7)式に示すように、予め任意の値が設定された環境光の分光放射輝度値Env(λ)とする。
【0069】
E0(λ)=Env(λ) …(7)
次に、S805において追跡中の光線がオブジェクトとは衝突しなかった場合に実行される処理について説明する。まずS814において、光線が光源に到達するか否かを判定し、光源に到達する場合はS815へ移行し、到達しない場合はS816へ移行する。S815では、光線が光源に到達した場合について、光線の放射輝度E0(λ)を以下の(8)式より算出する。なお(8)式においては、光線の強度をP0(λ)、光線と光源のなす角をθ、光源からθ方向の配光特性をQ(θ)、光源の分光放射輝度をS(λ)とする。
【0070】
E0(λ)=P0(λ)*Q(θ)*S(λ) …(8)
一方、S816では、オブジェクトにも光源にも衝突しない光線の放射輝度E0(λ)を決定する。ここではS813と同様に式(7)に従って、所定の環境光の分光放射輝度値Env(λ)を、光線の放射輝度E0(λ)として以下の(9)式のように決定する。
【0071】
E0(λ)=Env(λ) …(9)
以上の処理により、仮想スクリーン702上の1点における、波長λの放射輝度を算出することができる。同様の処理を全対象波長数分繰り返すことで、1点の分光放射輝度を算出することができ、さらに、仮想スクリーン上の全画素について処理を行うことで、全画素の分光放射輝度を算出することができる。
【0072】
●色信号値算出処理
以下、上記S210における画素ごとの色信号値の算出処理について、図9を用いて詳細に説明する。尚、本実施形態では表示装置105に表示可能なsRGB形式の色信号値を出力する例を示すが、AdobeRGB等の他形式による色信号値を出力しても良い。
【0073】
まずS901で、視覚特性データとして、例えば図10に示すCIEXYZ表色系の等色関数x(λ),y(λ),z(λ)を取得する。次にS902で、表示する画像の画素ごとの分光放射輝度Ex(λ)を取得する。そしてS903で、取得した視覚特性x(λ),y(λ),z(λ)と分光放射輝度Ex(λ)から、以下の(10)〜(12)式によりCIEXYZ値(Xout,Yout,Zout)を算出する。
【0074】

【0075】

【0076】

【0077】
そしてS904において、出力画像の色信号値を算出する。ここでは出力画像をsRGB形式とするため、出力信号Rout,Gout,Boutを以下の(13)〜(15)式によって算出する。
【0078】

【0079】

【0080】

【0081】
このように算出された色信号値を表示装置105に表示することで、S210の表示更新処理を終了する。
【0082】
以上説明したように本実施形態によれば、分光レイトレーシング法による仮想空間画像(CG画像)の生成において、一部の対象波長の光の経路追跡結果を、他の対象波長の光の経路として利用する。これにより、まずは簡易なCG画像を生成、表示し、画像表示までの時間を短縮することが可能となる。さらにその後、経路追跡を行う対象波長数を徐々に増やしていくことで、より詳細な画像を順次生成していき、最終的には全対象波長においてレイトレーシング法によって生成されたCG画像を得ることができる。したがって、全波長に対するレイトレーシングが終了する前に、簡易なCG画像を表示することができる。
【0083】
<変形例>
上述した第1実施形態では、予め作成されているシーンデータを読み込み、それを基にCG画像を生成する構成からなる画像処理装置について説明を行った。本発明は、このシーンデータを装置内において生成するような構成であっても適用可能である。
【0084】
例えば図14に示す論理構成からなる画像処理装置1401においてシーンデータを作成(モデリング)し、これを用いてCG画像を生成することもできる。同図において、光源配光特性設定部1402および光源位置設定部1403が、光源特性データ1411に基づいて光源特性に関するシーンデータ(配光特性、分光放射輝度、光源位置等)を設定する。また視点位置設定部1404、視線方向設定部1405、および画角設定部1406が、視点特性に関するシーンデータ(視点位置、視線方向、画角等)を設定する。またオブジェクト形状設定部1407、オブジェクト位置設定部1408、オブジェクト反射・透過特性設定部1409が、オブジェクト特性に関するシーンデータ(オブジェクトの数や位置、形状、分光屈折率、反射・透過特性等)を設定する。この設定には、形状データ1412および反射・透過特性データ1413が参照される。そして、該生成されたシーンデータを用いて上述した第1実施形態と同様の分光レイトレーシングを行うことによって、シーンに忠実なCG画像を段階的に作成することができる。
【0085】
なお、作成されたシーンデータ1307を、第1実施形態と同様にUI画面を介したユーザ指示に基づいて、適宜変更(補正)することも可能である。
【0086】
<その他の実施形態>
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。

【特許請求の範囲】
【請求項1】
任意のシーンについてのコンピュータグラフィックス画像を、分光レイトレーシング法によって生成する画像処理装置であって、
前記シーンを照明する光源の特性、該シーン内におけるオブジェクトの特性、および該シーンを観察する視点の特性からなるシーンデータを入力するシーンデータ入力手段と、
レイトレーシングの対象波長の全てを含む波長域を、波長域ごとのグループに分割するグルーピング手段と、
前記グループのそれぞれにおいて、該グループに含まれる対象波長から代表波長を選択し、該代表波長に対するレイトレーシングのパラメータを前記シーンデータから設定するパラメータ設定手段と、
前記グループのそれぞれにおける前記代表波長ごとに、前記パラメータ設定手段で設定された前記パラメータを用いたレイトレーシングを行って、前記シーンにおける各画素に対応する分光放射輝度を算出するレイトレーシング手段と、
前記各画素に対応する分光放射輝度から色信号値を算出して前記コンピュータグラフィックス画像を生成する色信号値算出手段と、
を有することを特徴とする画像処理装置。
【請求項2】
前記グルーピング手段は、前記グループの数が前記レイトレーシングの対象波長の数に等しくなるまで、前記グループのいずれかを再分割することで前記グループの数を順次増加させ、
前記パラメータ設定手段、前記レイトレーシング手段、および前記色信号値算出手段は、前記グルーピング手段による再分割が行われるたびに、新たなグループに基づいてパラメータの設定、レイトレーシング、およびコンピュータグラフィックス画像の生成を行うことを特徴とする請求項1に記載の画像処理装置。
【請求項3】
前記グルーピング手段は、前記グループのうち、含まれる対象波長数が最も多いグループを再分割することを特徴とする請求項2に記載の画像処理装置。
【請求項4】
前記パラメータ設定手段は、前記グルーピング手段で再分割された前記グループのそれぞれにおいて、該再分割前に前記代表波長として選択されていた対象波長があれば、該対象波長を新たな代表波長として選択し、
前記レイトレーシング手段は、前記代表波長についてのレイトレーシングが実行済みであれば、該代表波長についてのレイトレーシングを行わないことを特徴とする請求項2または3に記載の画像処理装置。
【請求項5】
さらに、前記シーンデータを変更するシーンデータの変更手段を有し、
前記グルーピング手段は、前記シーンデータが変更された場合に、予め定められたグループ数への分割からやり直すことを特徴とする請求項2乃至4のいずれか1項に記載の画像処理装置。
【請求項6】
前記シーンデータの変更手段は、ユーザ指示に応じて前記シーンデータを変更することを特徴とする請求項5に記載の画像処理装置。
【請求項7】
前記パラメータ設定手段は、前記グループにおいて最も短波長である対象波長を前記代表波長として選択することを特徴とする請求項1乃至6のいずれか1項に記載の画像処理装置。
【請求項8】
前記視点の特性は、前記シーンを観察する視点の位置、該視点からの視線の向きおよび画角を示す情報を含むことを特徴とする請求項1乃至7のいずれか1項に記載の画像処理装置。
【請求項9】
前記光源の特性は、前記シーンを照明する光源の位置、および該光源の分光放射輝度を示す情報を含むことを特徴とする請求項1乃至8のいずれか1項に記載の画像処理装置。
【請求項10】
前記オブジェクトの特性は、
前記シーン内におけるオブジェクトの分光屈折率と、
前記オブジェクトに入射する光の強度と反射する光の強度との比であって、該光の入射角と反射角とに応じた特性であるオブジェクトの反射特性と、
前記オブジェクトに入射する光の強度と透過する光の強度との比であって、該光の入射角と屈折角とに応じた特性であるオブジェクトの透過特性と、
を含むことを特徴とする請求項1乃至9のいずれか1項に記載の画像処理装置。
【請求項11】
さらに、前記色信号値算出手段で生成された前記コンピュータグラフィックス画像を表示する表示手段を有することを特徴とする請求項1乃至10のいずれか1項に記載の画像処理装置。
【請求項12】
シーンデータ入力手段、グルーピング手段、パラメータ設定手段、レイトレーシング手段、および色信号値算出手段を有し、任意のシーンについてのコンピュータグラフィックス画像を、分光レイトレーシング法によって生成する画像処理装置における画像処理方法であって、
前記シーンデータ入力手段が、前記シーンを照明する光源の特性、該シーン内におけるオブジェクトの特性、および該シーンを観察する視点の特性からなるシーンデータを入力し、
前記グルーピング手段が、レイトレーシングの対象波長の全てを含む波長域を波長域ごとのグループに分割し、
前記パラメータ設定手段が、前記グループのそれぞれにおいて、該グループに含まれる対象波長から代表波長を選択して、該代表波長に対するレイトレーシングのパラメータを前記シーンデータから設定し、
前記レイトレーシング手段が、前記グループのそれぞれにおける前記代表波長ごとに、前記パラメータ設定手段で設定された前記パラメータを用いたレイトレーシングを行って、前記シーンにおける各画素に対応する分光放射輝度を算出し、
前記色信号値算出手段が、前記各画素に対応する分光放射輝度から色信号値を算出して前記コンピュータグラフィックス画像を生成する
ことを特徴とする画像処理方法。
【請求項13】
コンピュータ装置で実行されることにより、該コンピュータ装置を請求項1乃至11のいずれか1項に記載の画像処理装置の各手段として機能させるためのプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図13】
image rotate

【図14】
image rotate

【図12】
image rotate


【公開番号】特開2013−89189(P2013−89189A)
【公開日】平成25年5月13日(2013.5.13)
【国際特許分類】
【出願番号】特願2011−232116(P2011−232116)
【出願日】平成23年10月21日(2011.10.21)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】