画像処理装置および画像処理方法
【課題】光源やオブジェクトの分光特性に基づいた光線追跡を行うことで、シーンを忠実に再現したコンピュータグラフィックス画像を生成する。
【解決手段】光源特性入力部302が光源の分光特性および配光特性を示す光源特性データ307を入力し、オブジェクト特性入力部303がシーン内におけるオブジェクトの分光特性を示すオブジェクト特性データ308を入力する。そして分光放射輝度算出部305が、光源特性データおよびオブジェクト特性データに基づいて、互いに異なる波長の光線ごとに光線追跡を行うことによって、シーンにおける各画素に対応する分光放射輝度310を算出する。そして最後に色信号値算出部306が、各画素に対応する分光放射輝度から色信号値を算出することで、コンピュータグラフィックス画像311を生成する。
【解決手段】光源特性入力部302が光源の分光特性および配光特性を示す光源特性データ307を入力し、オブジェクト特性入力部303がシーン内におけるオブジェクトの分光特性を示すオブジェクト特性データ308を入力する。そして分光放射輝度算出部305が、光源特性データおよびオブジェクト特性データに基づいて、互いに異なる波長の光線ごとに光線追跡を行うことによって、シーンにおける各画素に対応する分光放射輝度310を算出する。そして最後に色信号値算出部306が、各画素に対応する分光放射輝度から色信号値を算出することで、コンピュータグラフィックス画像311を生成する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、光線追跡法を用いて画像を生成する画像処理装置および画像処理方法に関する。
【背景技術】
【0002】
近年、コンピュータグラフィックス(以下、CG)は、様々な分野で利用されている。CGは設計やデザインの分野でも広く利用されており、このような分野では、実物により忠実な画像を生成する技術が要求されている。
【0003】
CGを用いて実物を忠実に再現する手法として、以下のようなさまざまな技術が知られている。例えば、光学的に複雑な特性を有する塗料等による反射のシミュレーションに変角分光反射特性を用いる手法や、モニタ上にリアリティの高い画像を再現するためにオブジェクトの変角分光反射特性を利用する手法がある。また、写りこみの色を再現するために分光屈折率特性を用いる手法や、マルチスペクトルカメラで撮影したマルチバンドデータを用いる手法もある。
【0004】
また、CGにおける画像生成手法には、スキャンライン法、Zバッファ法、光線追跡法、等がある。中でも光線追跡法は、三次元空間における光の伝搬経路を追跡することで反射や屈折を表現可能であるため、実物に忠実な画像生成に適した手法である。一方、光線追跡法は非常に大量の光線の経路を繰り返し追跡していく必要があるため、複雑なシーンにおいて高品質な画像を得るためには、計算コストが膨大となる。そのため、光線追跡法の効率化アルゴリズムとして、空間分割法やバウンディングボリューム法等が提案されている。例えば空間分割法を用いた技術として、予め仮想空間を複数のボクセルに分割しておき、光線が通過するボクセル内のオブジェクトのみと交差判定を行って画像を生成する手法が提案されている(例えば、特許文献1参照)。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2001-184522号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、上記CG画像を生成する従来の各手法においては、光源の配光特性が考慮されていないため、例えば蛍光灯とLED照明のように、配光特性の異なる光源によってシーンに生じる陰影の変化を再現できないという問題があった。
【0007】
また、一般的な光線追跡法では光を波長に依存しない一様な光線として扱うため、オブジェクトを透過する光の屈折のように、波長によって異なるふるまいをする物理現象を正しく再現することができない、という問題があった。
【0008】
本発明は上述した問題を解決するために、光源やオブジェクトの分光特性に基づいた光線追跡を行うことで、シーンを忠実に再現したコンピュータグラフィックス画像を生成することを目的とする。
【課題を解決するための手段】
【0009】
上記問題を解決するための一手段として、本発明の画像処理装置は以下の構成を備える。
【0010】
すなわち、任意のシーンについてのコンピュータグラフィックス画像を、光線追跡法によって生成する画像処理装置であって、光源の分光特性および配光特性を示す光源特性データを入力する光源特性入力手段と、前記シーン内におけるオブジェクトの分光特性を示すオブジェクト特性データを入力するオブジェクト特性入力手段と、前記光源特性データおよび前記オブジェクト特性データに基づいて、互いに異なる波長の光線ごとに光線追跡を行うことによって、前記シーンにおける各画素に対応する分光放射輝度を算出する光線追跡手段と、前記各画素に対応する分光放射輝度から色信号値を算出して前記コンピュータグラフィックス画像を生成する色信号値算出手段と、を有することを特徴とする。
【発明の効果】
【0011】
本発明によれば、光源やオブジェクトの分光特性に基づいた光線追跡を行うことで、シーンを忠実に再現したコンピュータグラフィックス画像を生成することが可能となる。
【図面の簡単な説明】
【0012】
【図1】オブジェクトの透過特性を説明する模式図、
【図2】第1実施形態における画像処理装置の構成例を示すブロック図、
【図3】第1実施形態における画像処理装置の論理構成例を示すブロック図、
【図4】第1実施形態における画像生成処理を示すフローチャート、
【図5】光源の配光特性を説明する模式図、
【図6】光源の分光放射輝度の例を示す図、
【図7】オブジェクトの反射/透過特性を説明する模式図、
【図8】視覚特性の例を示す図、
【図9】第1実施形態における画素毎の分光放射輝度の算出処理を示すフローチャート、
【図10】第1実施形態における色信号値算出処理を示すフローチャート、
【図11】第1実施形態の変形例における光源の配光特性(波長依存)例を示す図、
【図12】第2実施形態における画像生成処理を示すフローチャート、
【図13】第2実施形態における画素毎の分光放射輝度の算出処理を示すフローチャート、
【図14】第2実施形態における光線追跡時の最大交差回数設定の概念を示す図、
【図15】第3実施形態における画素毎の分光放射輝度の算出処理を示すフローチャート、
【図16】第3実施形態における光線追跡時の光線数設定の概念を示す図、である。
【発明を実施するための形態】
【0013】
以下、本発明に係る実施形態について、図面を参照して説明する。なお、以下の実施の形態は特許請求の範囲に関る本発明を限定するものではなく、また、本実施の形態で説明されている特徴の組み合わせの全てが本発明の解決手段に必須のものとは限らない。
【0014】
<第1実施形態>
本実施形態においては、光源の配光特性と分光特性、及びオブジェクトの分光特性を考慮して、光線追跡法によりシーンを忠実に再現したコンピュータグラフィックス画像(CG画像)を生成する処理について説明する。
【0015】
まず、波長によって異なる光の振る舞いについて、図1を用いて説明する。光はオブジェクトにあたると、その表面で反射する光と透過する光に分離する。オブジェクトを透過する光は、その波長λに応じた屈折率によって屈折角が変化する。例えば図1に示すように、視点を開始点として、屈折率n1(λ)の空間を通過した光線が屈折率n2(λ)のオブジェクト101を透過する場合を考える。このとき、オブジェクト101に対する光線の入射角をφとすると、屈折角θ(λ)は以下の(1)式で示される。
【0016】
θ(λ)=sin-1{(n1(λ)/n2(λ))sinφ} ・・・(1)
このように屈折角は光の波長λの関数になるため、光線追跡法によって追跡する光の経路が波長λによって変化することになる。従って、図1でオブジェクト101を透過した光がさらに屈折率n3(λ)のオブジェクト102を透過する等、あるシーンにおける光の透過を忠実に再現するためには、光を分光として扱う必要がある。
【0017】
●装置構成
本実施形態における画像処理装置の構成例について、図2を用いて説明する。図2に示すように本実施形態の画像処理装置は、CPU201、メインメモリ202、HDD203、汎用インターフェイス(以下、単にI/F)204、モニタ205、メインバス206を備える。I/F204は、分光測定器207、外部記憶装置208等をメインバス206に接続する。以下、CPU201がHDD203に格納された各種ソフトウェア(コンピュータプロラム)を動作させることで実現する各種処理について説明する。
【0018】
まずCPU201は、HDD203に格納されている画像処理アプリケーションを起動し、メインメモリ202に展開する。続いて、HDD203に格納されている各種データや、I/F204に接続された分光測定器207や外部記憶装置208から入力されるデータ等が、CPU201からの指令に基づき、メインバス206経由でメインメモリ202に転送される。さらに、画像処理アプリケーション内の処理にしたがって、メインメモリ202に格納されているデータにCPU201からの指令に基づく各種演算が施され、該演算結果をメインバス206経由でモニタ205に表示したり、HDD203に格納したりする。
【0019】
以下、上記構成において、CPU201からの指令に基づき画像処理アプリケーションが画像を生成してモニタ205に表示するまでの画像処理について、詳細に説明する。
【0020】
図3は、本実施形態における画像処理装置301の論理構成を示すブロック図であるが、同図に示す各構成は、上述したように画像処理アプリケーションとして実現される。
【0021】
図3において、光源特性入力部302は、シーンを照明する光源の配光特性および分光放射輝度を示す光源特性データ307を入力する。オブジェクト特性入力部303は、シーンを構成する各オブジェクトの反射特性、透過特性及び屈折率を示すオブジェクト特性データ308を入力する。視覚特性入力部304は、シーンを観察する際の視覚特性データ309を入力する。尚、光源特性データ307、オブジェクト特性データ308、視覚特性データ309は、HDD203からの入力、またはI/F204を介して分光測定器207、外部記憶装置208からI/F204を介した入力等、所望の手段によって入力される。
【0022】
分光放射輝度算出部305は、光源特性入力部302及びオブジェクト特性入力部303から入力された情報に基づき、CPU201からの指示に従って、シーンのCG画像における各画素の分光放射輝度310を算出する。色信号値算出部306は、分光放射輝度算出部305で算出した各画素の分光放射輝度310と、視覚特性入力部304から入力された視覚特性データ309に基づき、CPU201からの指示に従ってシーンのCG画像における各画素の色信号値を算出する。該色信号値は例えばRGB値として算出され、画像データ311として出力される。画像データ311は、HDD203等の記憶領域に格納されるとともに、モニタ205に表示される。
【0023】
●シーンCG画像の生成処理
以下、本実施形態の画像処理装置301において、シーンのCG画像を作成する画像生成処理について、図4のフローチャートを用いて説明する。
【0024】
まずS401で、光源特性入力部302が光源特性データ307を入力する。この光源特性データ307は上述したように、シーンを照明する光源の配光特性及び分光放射輝度を示す。
【0025】
ここで、光源の配光特性について図5を用いて説明する。配光特性は、光源から放射される光の各方向への強度分布を示すものであり、光源の指向性の違いによって一つの光源がシーンを照らす範囲が異なる。図5(a)は、指向性の低い蛍光灯などの光源における配光特性の例であり、シーンを広く照らしていることが分かる。一方図5(b)は、指向性の高いLEDなどの光源における配光特性の例であり、シーンの一部だけが照らされていることが分かる。このように、光源の配光特性が異なるとシーンに生じる陰影が大きく変化するので、光源の配光特性はシーンを忠実に再現するために重要なファクタとなる。尚、配光特性はHDD203等に記憶されているデータを入力しても良いし、I/F204に接続された分光測定器207で光源を測定したデータを入力しても良い。また、入力するデータ形式としては、光源からの光の出力角と光の強度との対応が得られれば、どのような形式であっても構わない。例えば、出力角に対する光の強度の関数形式であって良いし、出力角と光の強度の対応を示すルックアップテーブル(以下、LUT)の形式であっても良い。
【0026】
次に、分光放射輝度について図6を用いて説明する。光源の分光放射輝度は、波長毎の輝度分布を示すものであり、光源によって特性が異なる。図6(a)は蛍光灯の分光放射輝度分布の例であり、図6(b)はLED照明の分光放射輝度分布の例である。このように、光源の種類が異なると分光放射輝度分布も変化し、その結果、オブジェクトの色の見えが変化するので、光源の分光特性はシーンを忠実に再現するために重要なファクタとなる。尚、分光特性も配光特性と同様に、HDD203等に記憶されているデータを入力しても良いし、I/F204に接続された分光測定器207で光源を測定したデータを入力しても良い。また、入力するデータ形式としては、可視光域の波長と放射輝度との対応が得られれば、どのような形式であっても構わない。例えば、光の波長に対する放射輝度の関数であっても良いし、波長と放射輝度の対応を示すLUTの形式でも良い。
【0027】
次にS402で、オブジェクト特性入力部303がオブジェクト特性データ308を入力する。このオブジェクト特性データ308は上述したように、シーン内の各オブジェクトの反射特性、透過特性及び屈折率を示す。
【0028】
ここで、オブジェクトの反射特性および透過特性について、図7を用いて説明する。一般に、オブジェクトの反射特性は双方向反射率分布関数(BRDF:Bidirectional Reflectance Distribution Function)frで表される。オブジェクト上の位置xにおいて、ある方向ωiから入射する光の波長をλi、強度をLiとし、ある方向ωrに反射する光の波長をλr、強度をdLrとすると、反射特性frは以下の(2)式で示される。
【0029】
fr(x,ωi,λr,ωr)={dLr(x,λr,ωr)}/{Li(x,λi,ωi)(ωr・n)dω} …(2)
一般に、反射光の強度分布はオブジェクトの表面形状に依存し、オブジェクト表面が平滑なほど、鏡面反射方向すなわちωi=ωr方向の反射強度が高くなり、それ以外の拡散反射方向への反射強度は小さくなる。
【0030】
尚、オブジェクトの反射特性frの取得方法としては、HDD203等に記憶されているデータを入力しても良いし、I/F204に接続された分光測定器207で測定したデータを入力しても良い。また、反射特性frのデータ形式としては、オブジェクトへの光の入射角と反射角に対応した反射率が得られれば、どのような形式であっても構わない。例えば、上記(2)式のように一意の関数として入力しても良いし、一般に拡散反射は等方的に分布するため、ωi=45°,ωr=0°の反射特性を拡散反射に適用し、鏡面反射は別途LUTにする等、分割して入力しても構わない。
【0031】
また、オブジェクトを透過する光は双方向透過率分布関数(BTDF:Bidirectional Transmittance Distribution Function)ftで表される。オブジェクト上の位置xにおいて、ある方向ωiから入射する光の波長をλi、強度をLiとし、ある方向ωtに透過する光の波長をλt、強度をdLtとすると、透過特性ftは以下の(3)式で示される。
【0032】
ft(x,ωi,λt,ωt)={dLt(x,λt,ωt)}/{Li(x,λi,ωi)(ωt・n)dω} …(3)
一般に、透過光の強度分布は屈折率に依存するため、ωtが上記式(1)を満たす場合に、透過強度が最大になる。尚、オブジェクトの透過特性ftの取得方法としても、HDD203等に記憶されているデータを入力しても良いし、I/F204に接続された分光測定器207で測定したデータを入力しても良い。また、透過特性ftのデータ形式も、オブジェクトへの光の入射角と屈折角に対応した透過率が得られれば、どのような形式であっても構わない。例えば、上記(3)式のように一意の関数として入力しても良いし、ωi=ωr=0°の透過特性をωtが(1)式の屈折角θに等しい場合に適用し、それ以外の透過は別途LUTにする等、分割して入力しても良い。
【0033】
次にS403で、視覚特性入力部304が視覚特性データ309を入力する。この視覚特性データ309は、分光放射輝度を画像の色信号値に変換する際に用いられ、ここで視覚特性データ309の例として、図8にCIEXYZ表色系で用いる等色関数を示す。等色関数は、可視光域の光に対する目の感度を示している。尚、視覚特性データ309は、HDD203等に予め記憶しておいて入力すれば良い。
【0034】
次にS404で分光放射輝度算出部305が、当該シーンのCGとしての出力画像を順次走査して、分光放射輝度の算出対象となる画素を決定する。なお、この対象画素の選択順は任意である。
【0035】
次にS405で分光放射輝度算出部305において、上記S404で選択された対象画素における分光放射輝度を算出する。この分光放射輝度の算出には光線追跡法を用いるが、処理の詳細については後述する。
【0036】
次にS406で色信号値算出部306において、対象画素の色信号値を算出する。この色信号値の算出方法の詳細については後述する。
【0037】
そしてS407で、出力画像の全画素について分光放射輝度の算出が終了したか否かを判定する。終了していれば生成した画像データを出力して処理を終了するが、未終了であればS404に戻り、次の対象画素を決定して処理を継続する。
【0038】
●分光放射輝度算出処理
以下、上記S405における分光放射輝度の算出処理について、図9を用いて詳細に説明する。上述したように、本実施形態における分光放射輝度の算出には光線追跡法を用いる。この手法によれば、視点が画角内の各方向から受け取るはずの光線を、仮想的に光源まで追跡することでCG画像の描画を行う。詳細には、視点から描画する各画素の方向へ直線を伸ばし、オブジェクトとの交差の有無を数学的に判定する。そして、反射や透過により発生した光線について、再帰的に探索を繰り返し、光源と交差した場合に計算を終了する。すなわち本実施形態では、図9のフローチャートに示す処理を再帰的に実行することで複数の光線(発射光線)を追跡し、光線ごとに算出した分光放射輝度の平均により、対象画素における分光放射輝度を算出する。
【0039】
なお、図9では波長λの単色光についての分光放射輝度算出処理を説明するが、実際には同様の処理を所定の波長毎に行うことで、当該対象画素についての分光放射輝度が得られる。なお、処理対象となる波長は全波長域から等間隔で抽出されるものとする。例えば380〜730nmの可視域において、10nm間隔で36波長を処理対象波長として抽出する。
【0040】
まずS901で、追跡の開始点から飛ばした波長λの光線がシーンにおいて交差する点を探索する。ここで追跡の開始点は、当該フローチャートが初回の実行であれば対象画素であり、再帰実行であれば光線とオブジェクトとの交点である。なお、この交点の探索方法は任意であり、例えば、シーン内の全てのオブジェクトについて順次交差判定を行って、追跡の開始点に最も近い交点を求めれば良い。
【0041】
次にS902で、S901で探索された光線と交差する点が、光源との交差であるか、またはその他のオブジェクトとの交差であるかを判定する。光線が光源と交差している場合にはS903に移行し、光線の強度と交差した光源の光源特性データ307から、波長λについての分光放射輝度を算出して、当該波長についての処理を終了する。ここで光源特性データ307は光源の配光特性および分光放射輝度を示すものであるから、光線の分光放射輝度E0(λ)は以下の(4)式によって示される。なお下式においては、光線の強度をP0(λ)、光線と光源のなす角をθ、光源からθ方向の配光特性をQ(θ)、光源の分光放射輝度をS(λ)とする。
【0042】
E0(λ)=P0(λ)*Q(θ)*S(λ) …(4)
一方、光線が光源以外のオブジェクトと交差している場合にはS904に移行し、まず、光線が交差したオブジェクトのオブジェクト特性データ308(反射特性、透過特性及び屈折率)を取得する。
【0043】
次にS905で、光線とオブジェクトとの交点から飛ばす光線数(発射光線数)を決定する。この発射光線数は任意に決定して構わないが、数が多いほどノイズの少ない画像が得られる。以下、発射光線数に応じた回数分、S906及びS907の処理をループする。
【0044】
S906では、発射光線の方向および強度を算出する。光線の方向は発射光線数に応じて均等に分布すれば良く、該交点に対する反射光の強度Pr(λr)、透過光の強度Pt(λt)はそれぞれ、以下の(5),(6)式によって示される。なお、下式において、P0(λi)はオブジェクトと交差する前の光線の強度、frは上記(2)式に示したオブジェクトの反射特性、ftは上記(3)式に示したオブジェクトの透過特性である。
【0045】
Pr(λr)=P0(λi)*fr(x,ωi,λr,ωr) …(5)
Pt(λt)=P0(λi)*ft(x,ωi,λt,ωt) …(6)
次にS907で図9のフローチャートに示す処理を再帰的に呼び出すことによって、当該発射光線に対する光線追跡処理が行われる。このS907の処理はすなわち、再帰処理によって最終的に交差するオブジェクトがなくなり、当該発射光線についての分光放射輝度がS903で算出された時点で、終了する。このように、発射光線についてS907の再帰処理によって最終的に上記(4)式で算出された分光放射輝度E0(λ)が、当該発射光線についての分光放射輝度En(λ)となる。
【0046】
そしてS908で、全ての発射光線について上記S906及びS907による光源追跡が終了したと判定されると、次にS909において、各発射光線の分光放射輝度En(λ)の平均を算出する。この平均分光放射輝度値が、対象画素における追跡対象波長λについての分光放射輝度Ex(λ)である。すなわち、光線の総数をN、各発射光線の分光放射輝度をEn(λ)(nは0〜N-1までの整数)とすると、対象画素における追跡対象波長λの分光放射輝度Ex(λ)は、以下の(7)式で算出される。なお、(7)式においてΣはn=0からN-1までの整数に関する総和を示す。
【0047】
Ex(λ)=(1/N)・ΣEn(λ) …(7)
以上、S405では図9に示す光線追跡処理を再帰的に実行することによって、対象画素における分光放射輝度Ex(λ)を算出する。
【0048】
●色信号値算出処理
以下、上記S406における画素ごとの色信号値の算出処理について、図10を用いて詳細に説明する。尚、本実施形態では最終的にsRGB形式の色信号値を出力するとして説明するが、Adobe RGB等の他形式による色信号値であっても構わない。
【0049】
まずS1001で、S403で入力した視覚特性データ309として、例えばCIEXYZ表色系の等色関数x(λ),y(λ),z(λ)を取得する。次にS1002で、上記S405で算出した、画素ごとの分光放射輝度Ex(λ)を取得する。そしてS1003で、取得した視覚特性x(λ),y(λ),z(λ)と分光放射輝度Ex(λ)から、以下の(8)〜(10)式によりCIEXYZ値(Xout,Yout,Zout)を算出する。
【0050】
【0051】
【0052】
【0053】
そしてS1004において、出力画像の色信号値を算出する。ここでは出力画像をsRGB形式とするるため、出力信号Rout,Gout,Boutを以下の(11)〜(13)式によって算出する。
【0054】
【0055】
【0056】
【0057】
以上、図4に示す画像生成処理によって、シーンのCGである出力画像が形成される。
【0058】
以上説明したように本実施形態によれば、シーンにおける光線追跡を、光源の配光特性と分光特性、及びオブジェクトの分光特性を利用して行うことで、該シーンを忠実に再現したCG画像を生成することができる。
【0059】
<変形例>
以下、第1実施形態の変形例について説明する。上述した第1実施形態では、光源特性データ307によって示される配光特性を、光の強度分布として扱う例を示した。しかしながら、光の強度分布は波長によって異なる場合がある。例えばLED照明の場合、青色を発光するLEDと、黄色を発光する蛍光体を組み合わせて光源を作る場合がある。この時、図5(b)にも示したようにLEDは指向性の高い光を発光するため、蛍光体と組み合わせた際に色ムラが発生する。すなわち、図11に示すように、光源の配光特性が波長によって変化するため、分光放射輝度も光線と光源のなす角度θに依存することになる。
【0060】
そこで、光源情報として波長によって異なる配光特性を入力することが考えられる。この場合における分光放射輝度の算出処理は第1実施形態とほぼ同様であるが、図9におけるS903の最終的な分光放射輝度の算出処理のみが異なる。すなわち、光源が波長によって異なる配光特性を有する場合、その配光特性は、波長λと光線と光線のなす角θの関数Q(λ,θ)として表わされる。この場合、第1実施形態で用いた光源の分光放射輝度S(λ)は、配光特性Q(λ,θ)から得られるため不要になる。従って、S903における光線の分光放射輝度E0(λ)の算出は、以下の(14)式に従う。
【0061】
E0(λ)=P0(λ)*Q(λ,θ) …(14)
以上のように、光源の配光特性が波長によって異なる場合であっても、上記第1実施形態と同様にシーンを忠実に再現したCG画像を生成することができる。
【0062】
<第2実施形態>
以下、本発明に係る第2実施形態について説明する。上述した第1実施形態では、光源の配光特性や分光特性、およびオブジェクトの分光特性に基づいた光線追跡を行うことによって、該シーンを忠実に再現したCG画像を生成する例を示した。しかしながら、第1実施形態のように分光による光線追跡を行う場合、波長数に応じて演算量が増加し、処理速度が低下してしまう。一般に光線追跡法においては、1本の光線におけるオブジェクトとの交差回数や、追跡を行う光線数を削減することで演算量を抑制して処理速度を上げることが可能である反面、生成画像にノイズが発生して画質が低下してしまう。ここで、上記特許文献1に記載された空間分割法を用いた光線追跡の効率化手法を、分光による光線追跡に適用することを考える。この場合に、更なる高速化のために光の波長によらず交差回数や光線数を削減すると、やはりノイズが発生してしまう。そこで第2実施形態においては、上述した第1実施形態に加え、光源やオブジェクトの分光特性に応じて光線追跡時における演算量を制御することで、処理の高速化とノイズ低減化を実現する。
【0063】
なお、第2実施形態における画像処理装置の構成は、上述した第1実施形態で図2、図3に示した構成と同様であるため、同符号を参照するとして説明を省略する。
【0064】
●シーンCG画像の生成処理
以下、第2実施形態の画像処理装置301において、シーンのCG画像を作成する画像生成処理について、図12のフローチャートを用いて説明する。
【0065】
まずS1401で、光源特性入力部302が光源特性データ307を入力する。この光源特性データ307は、第1実施形態で図5,図6を用いて説明したような、シーンを照明する光源の配光特性及び分光放射輝度を示す。
【0066】
次にS1402で、オブジェクト特性入力部303がオブジェクト特性データ308を入力する。このオブジェクト特性データ308は、第1実施形態で図7を用いて説明したように、シーン内の各オブジェクトの反射特性、透過特性及び屈折率を示す。
【0067】
次にS1403で、視覚特性入力部304が視覚特性データ309を入力する。この視覚特性データ309は、分光放射輝度を画像の色信号値に変換する際に用いられ、例えば図8に示す等色関数である。
【0068】
次にS1404で分光放射輝度算出部305が、当該シーンのCGとしての出力画像を順次走査して、分光放射輝度の算出対象となる画素を決定する。なお、この対象画素の選択順は任意である。
【0069】
次にS1405で分光放射輝度算出部305が、対象画素から発せられた光線が経路追跡中のオブジェクトと交差した回数をカウントするための変数である、交差回数Nを0に初期化する。
【0070】
次にS1406で分光放射輝度算出部305が、波長λごとの交差回数の上限となる最大交差回数M(λ)を初期化する。最大交差回数M(λ)は、対象画素からの光線が光源に到達するまでに多数のオブジェクトと交差する場合に、光源への到達前に交差回数に応じて処理を打ち切るための閾値となる変数である。本来、光線が光源に到達するまで追跡を行うことが望ましいが、それには膨大な計算が必要となるため、この最大交差回数M(λ)までに光線が光源に到達しない場合には光線追跡を打ち切ることで計算量を削減し、計算時間の高速化を実現する。最大交差回数M(λ)の初期値としては、光の波長λごとに1以上の任意の値を設定する。なお、最大交差回数M(λ)が小さいと、計算を高速化できる半面、生成結果画像にノイズが発生してしまうため、求められる計算時間とノイズ量を考慮して、初期値を設定することが望ましい。また、最大交差回数M(λ)の初期値としては、光の波長λによらず等しい値を設定することが望ましい。
【0071】
次にS1407で分光放射輝度算出部305において、上記S1404で選択された対象画素における分光放射輝度を算出する。この分光放射輝度の算出には光線追跡法を用いるが、処理の詳細については後述する。
【0072】
次にS1408で色信号値算出部306において、対象画素の色信号値を算出する。この色信号値の算出方法は、上述した第1実施形態で図10を用いて説明した方法と同様であるため、説明を省略する。
【0073】
そしてS1409で、出力画像の全画素について分光放射輝度の算出が終了したか否かを判定する。終了していれば生成した画像データを出力して処理を終了するが、未終了であればS1404に戻り、次の対象画素を決定して処理を継続する。
【0074】
●分光放射輝度算出処理
以下、上記S1407における分光放射輝度の算出処理について、図13を用いて詳細に説明する。第2実施形態においても、図13のフローチャートに示す処理を再帰的に実行することで複数の光線(発射光線)を追跡し、光線ごとに算出した分光放射輝度の平均により、対象画素における分光放射輝度を算出する。なお、図13では波長λの単色光についての分光放射輝度算出処理を説明するが、実際には同様の処理を所定の波長毎に行うことで、当該対象画素についての分光放射輝度が得られる。
【0075】
まずS1901で、追跡の開始点から飛ばした波長λの光線がシーンにおいて交差する点を探索する。ここで追跡の開始点は、当該フローチャートが初回の実行であれば対象画素であり、再帰実行であれば光線とオブジェクトとの交点である。なお、この交点の探索方法は任意であり、例えば、シーン内の全てのオブジェクトについて順次交差判定を行って、追跡の開始点に最も近い交点を求めれば良い。
【0076】
次にS1902で、S1901で探索された光線と交差する点が、光源との交差であるか、またはその他のオブジェクトとの交差であるかを判定する。光線が光源と交差している場合にはS1914に移行し、光線の強度と交差した光源の光源特性データ307から、波長λについての分光放射輝度E0(λ)を上記(4)式より算出して、当該波長についての処理を終了する。一方、S1902で光線が光源以外のオブジェクトと交差している場合にはS1903に移行し、光線に対する交差回数Nに1を加えて値を更新する。
【0077】
そしてS1904で、光線が交差したオブジェクトのオブジェクト特性データ308(反射特性、透過特性及び屈折率)を取得する。
【0078】
次にS1905で、光線の交差回数Nと光線の波長における最大交差回数M(λ)の大小を判定する。交差回数Nが最大交差回数M(λ)を超える場合は、光線が光源に未到達であっても光線追跡処理を終えるためにS1913に移行する。一方、交差回数Nが最大交差回数M(λ)以下の場合は、光線とオブジェクトの交点から新たに複数の光線を飛ばし、各光線についての光線追跡処理を行うためにS1906に移行する。このように第2実施形態では、予め設定した最大交差回数M(λ)までに光線が光源に到達しない場合は、光源到達前に処理を打ち切ることで、処理の高速化を実現する。しかし、上述したように最大交差回数M(λ)を小さくすると、計算を高速化できる半面、生成画像中にノイズが多くなってしまう。そこで第2実施形態では詳細は後述するが、光線が最初に交差したオブジェクトの反射率や透過率と光源の放射輝度、およびS1406で設定された初期値に応じて、光の波長ごとに最適な最大交差回数M(λ)を設定する。
【0079】
S1906では、光線とオブジェクトとの交点から新たに飛ばす発射光線数を決定する。この発射光線数は任意に決定して構わないが、数が多いほどノイズの少ない画像が得られる反面、計算量が増大する。なお、新たに飛ばす各光線の交差回数N、および、最大交差回数M(λ)の値は、元の光線の値を引き継ぐものとする。以下、発射光線数に応じた回数分、S1907〜S1910の処理をループする。
【0080】
S1907では、発射光線の方向および強度を算出する。光線の方向は発射光線数に応じて均等に分布すれば良く、該交点に対する反射光の強度Pr(λr)、透過光の強度Pt(λt)はそれぞれ、第1実施形態と同様に(5),(6)式によって示される。
【0081】
次にS1908では、光線における現在の交差回数Nの値が1であるか否かの判定を行う。交差回数Nが1、すなわち初回の交差である場合はS1909に移行し、1以外、すなわち2回目以降の交差である場合はS1910へ移行する。
【0082】
S1909では、光源の分光特性とオブジェクトの分光特性に応じて、波長λにおける最大交差回数M(λ)を算出し、更新する。
【0083】
ここで、最大交差回数M(λ)の設定方法について詳細に説明する。最大交差回数M(λ)は、シーン内のオブジェクトに対する光線の反射成分および透過成分のそれぞれについて設定される。
【0084】
例えば、オブジェクトの反射率が小さい波長の光線では、該オブジェクトとの交差によって放射輝度が大きく減衰してしまうため、該交差後の他オブジェクトとの交差による放射輝度の変化量は相対的に小さくなる。そのため、少ない交差回数の後に得られる放射輝度と、十分大きな交差回数の後に得られる放射輝度とで、差がほとんど生じない。一方、オブジェクトの反射率が大きい波長の光線では、該オブジェクトとの交差後も放射輝度があまり減衰しないため、該交差後の他オブジェクトとの交差による放射輝度の変化量は相対的に大きくなる。そのため、少ない交差回数の後に得られる放射輝度と、十分大きな交差回数の後に得られる放射輝度とで、大きな差が生じ、すなわちノイズが発生してしまう。このような特性は、オブジェクトに対する透過成分についても同様である。
【0085】
そこで第2実施形態では、ある波長の光線が最初に交差するオブジェクトについて、その反射率または透過率が大きければ最大交差回数Mを大きく設定し、逆に小さければ最大交差回数Mを小さく設定する。また、光源からの放射輝度の大きさはそのまま、交差後の放射輝度の大きさに反映されるため、最大交差回数Mの設定時にも、光源の放射輝度が参照される。すなわち、初回交差オブジェクトとの交差後に残存する光線の強度が大きいほど、最大交差回数Mを大きく設定する。このように、光源の放射輝度とオブジェクトの分光特性(反射特性または透過特性)に応じて最大交差回数Mを設定することで、演算量の削減とノイズ発生の抑制を両立することが可能となる。
【0086】
ここで図14を用いて、特にオブジェクトからの反射成分についての最大交差回数Mの設定方法の概念について説明する。ある入射角度、出射角度における、光線と交差するオブジェクトの分光反射率が図14で示される場合、例えば480nmのように反射率が高い波長では最大交差回数Mを大きく設定する。一方、例えば680nmのように反射率が低い波長では最大交差回数Mを小さく設定する。
【0087】
具体的には、オブジェクトに対する反射光、透過光のそれぞれの最大交差回数Mr(λr),Mt(λt)は、以下の(15),(16)式で記述される。下式によれば最大交差回数Mr(λr),Mt(λt)は、S406で初期化した最大交差回数M(λ)と、上記(2),(3)式で表される分光特性fr,ft、および光源の分光放射輝度S(λ)の関数gとして表わされる。
【0088】
Mr(λr)=g(M(λr),fr(x,ωi,λr,ωr),S(λ)) …(15)
Mt(λt)=g(M(λt),ft(x,ωi,λt,ωr),S(λ)) …(16)
尚、関数gとしては、反射率や透過率が高い波長において最大交差回数Mが大きくなるような関数であれば良く、具体的には、以下の(17)式や(18)式に示すような関数を用いることができる。
【0089】
g(M(λt),ft(x,ωi,λt,ωr),S(λ))=
M(λt)×ft(x,ωi,λt,ωr)×S(λ) …(17)
g(M(λt),ft(x,ωi,λt,ωr),S(λ))=
M(λt)×√(ft(x,ωi,λt,ωr)×S(λ)) …(18)
次にS1910で図13のフローチャートに示す処理を再帰的に呼び出すことによって、当該発射光線に対する光線追跡処理が行われる。このS1910の処理はすなわち、再帰処理によって最終的に交差するオブジェクトがなくなるか、または発射光線とオブジェクトの交差回数Nが最大交差回数Mを超えた場合に、終了する。このように、発射光線についてS1910の再帰処理によって最終的に上記(4)式で算出された分光放射輝度E0(λ)が、当該発射光線についての分光放射輝度En(λ)となる。
【0090】
そしてS1911で、全ての発射光線について上記S1907〜S1910による光源追跡が終了したと判定されると、次にS1912において、各発射光線の分光放射輝度En(λ)の平均を、上記(7)式により算出する。この平均分光放射輝度値が、対象画素における追跡対象波長λについての分光放射輝度Ex(λ)である。
【0091】
一方、S1905で、光線とオブジェクトの交差回数Nが最大交差回数Mを超える場合にはS1913に移行し、光線追跡処理を打ち切る場合の光線の方向と強度を算出する。具体的には、光線の方向としては交点から光源の方向を設定する。また光線の強度P(λ)としては、交点から光源までの直線上に他のオブジェクトが存在する場合には0を設定し、他のオブジェクトが存在しない場合には以下の(19)式に従い、反射のみを考慮する。なお、下式において、P0(λi)はオブジェクトと交差する前の光線の強度、frは上記(2)式に示したオブジェクトの反射特性である。
【0092】
P(λ)=P0(λi)*fr(x,ωi,λr,ωr) …(19)
そして、S1913で光線追跡処理を打ち切る場合の光線の方向と強度が算出されると、次にS1914で、波長λについての分光放射輝度E0(λ)を上記(4)式より算出して、当該波長についての処理を終了する。この演算には、S1913で算出された光線の強度P(λ)と、光源の配光特性Q(θ)および分光放射輝度S(λ)が適用される。
【0093】
以上説明したように第2実施形態によれば、分光による光線追跡を行う際に、光源の放射輝度と、オブジェクトの分光特性を考慮して光線の波長ごとに交差回数を制限する。これにより、波長ごとに必要最低限の交差による演算が可能となるため、計算時間の高速化とノイズ発生の低減を実現することが可能になる。
【0094】
<第3実施形態>
以下、本発明に係る第3実施形態について説明する。上述した第2実施形態では、光源とオブジェクトの分光特性に応じて、光線の波長ごとに最大交差回数を設定する例を示した。第3実施形態では、これら分光特性に応じて、交点から飛ばす光線数を波長ごとに設定することで、計算時間の高速化とノイズの発生を低減する例を示す。
【0095】
なお、第3実施形態における画像処理装置の構成は、上述した第1実施形態で図2、図3に示した構成と同様であるため、同符号を参照するとして説明を省略する。
【0096】
●分光放射輝度算出処理
第2実施形態の画像処理装置301においてCG画像を作成する画像生成処理は、第2実施形態で図12のフローチャートに示した処理とほぼ同様であり、S1407における分光放射輝度の算出処理が異なるのみである。したがって、以下では第3実施形態における分光放射輝度の算出処理について、図15を用いて説明する。
【0097】
第3実施形態においても、図15のフローチャートに示す処理を再帰的に実行することで複数の光線(発射光線)を追跡し、光線ごとに算出した分光放射輝度の平均により、対象画素における分光放射輝度を算出する。また、図15でも波長λの単色光についての分光放射輝度算出処理を説明するが、実際には同様の処理を所定の波長毎に行うことで、当該対象画素についての分光放射輝度が得られる。
【0098】
図15において、発射光線数を決定するS1201以外の各処理は、第2実施形態で図13のフローチャートに示した各処理と同様の処理を行う。なお、第3実施形態においても、第2実施形態と同様にS1406で初期設定された最大交差回数Mを用いるが、この最大交差回数Mは最初に交差するオブジェクトに関わらす固定とし、更新されない。
【0099】
以下、第3実施形態のS1201における、分光特性に応じた光線数の決定処理について説明する。
【0100】
第2実施形態でも説明したように、オブジェクトの反射率や透過率が小さい波長の光線では、該オブジェクトとの交差によって放射輝度が大きく減衰するため、その後の他オブジェクトとの交差による放射輝度の変化量は小さい。そのため、交点から改めて飛ばす光線数が少ない場合に得られる放射輝度と、十分多い光線数によって得られる放射輝度とで、差がほとんど生じない。一方、オブジェクトの反射率や透過率が大きい波長の光線では、該オブジェクトとの交差後も放射輝度があまり減衰しないため、その後の他オブジェクトとの交差による放射輝度の変化量は相対的に大きくなる。そのため、少ない発射光線数によって得られる放射輝度と、十分多い光線数によって得られる放射輝度とで、大きな差が生じ、すなわちノイズが発生してしまう。
【0101】
そこで第3実施形態では、ある波長の光線が交差するオブジェクトごとに、その反射率または透過率が大きければ発射光線数を大きく設定し、逆に小さければ発射光線数を小さく設定する。なお、発射光線数の設定時に光源の放射輝度にも参照されるべきであることは、第2実施形態と同様である。すなわち、オブジェクトとの交差後に残存する光線の強度が大きいほど、発射光線数を大きく設定する。このように、光源の放射輝度と、オブジェクトの分光特性(反射特性または透過特性)に応じて光線追跡時の光線数を設定することで、演算量の削減とノイズ発生の抑制を両立することが可能となる。
【0102】
ここで図16を用いて、特に交点からの反射成分についての発射光線数の設定方法の概念について説明する。ある入射角度、出射角度における、光線と交差するオブジェクトの分光反射率が図16で示される場合、例えば480nmのように反射率が高い波長では光線数を多く設定する。一方、例えば680nmのように反射率が低い波長では光線数を少なく設定する。
【0103】
具体的には、オブジェクトに対する反射光、透過光のそれぞれの光線数Rr(λr),Rt(λt)は、上記(2),(3)式で表される分光特性fr,ft、および光源の分光放射輝度S(λ)の関数gとして、以下のように記述される。
【0104】
Rr(λr)=h(fr(x,ωi,λr,ωr),S(λ)) …(20)
Rt(λt)=h(ft(x,ωi,λt,ωr),S(λ)) …(21)
尚、関数hとしては、反射率が高い波長において光線数が大きくなるような関数であれば良く、具体的には、以下の(22)式や(23)式に示すような関数を用いることができる。
【0105】
h(ft(x,ωi,λt,ωr),S(λ))=
Rmax×ft(x,ωi,λt,ωr)×S(λ) …(22)
h(ft(x,ωi,λt,ωr),S(λ))=
Rmax×√(ft(x,ωi,λt,ωr)×S(λ)) …(23)
なお、(22),(23)式においてRmaxは任意の値を持つ定数であり、反射率や透過率が1である場合の光線数である。Rmaxが大きいほど、ノイズの少ない画像が得られる半面、計算量が増大する。
【0106】
第3実施形態では、以上のようにオブジェクトの分光特性に応じて設定した光線数で、光線とオブジェクトとの交点から新たな光線を飛ばし、光線経路の追跡を繰り返し行うことで、当該対象画素における放射輝度を算出する。
【0107】
以上説明したように第3実施形態によれば、分光による光線追跡を行う際に、光源の放射輝度と、オブジェクトの分光特性を考慮して発射光線数を設定する。これにより、波長ごとに必要最低限の光線数による演算が可能となるため、計算時間の高速化とノイズ発生の低減を実現することが可能になる。
【0108】
なお、第3実施形態を上述した第2実施形態と同時に適用することも可能である。すなわち、光源とオブジェクトの分光特性に応じて、光線の波長ごとに最大交差回数を設定し、さらに、各交点から飛ばす光線数をオブジェクトごとに設定すれば良い。
【0109】
<変形例>
以下、第2および第3実施形態の変形例について説明する。上述した第2および第3実施形態では、光源特性やオブジェクトの反射/透過特性には光の波長依存性がある、すなわち分光情報を持つものとして説明を行った。しかしながら本発明は、分光情報を利用した光線追跡処理への適用に限られるものではなく、例えば濃淡情報のみを持つ1色での光線追跡や、RGBの3色での光線追跡にも適用可能である。その場合、光線の放射輝度に対するオブジェクトの反射特性または透過特性が低い場合は、光線数または最大交差数を小さく設定することで、処理の高速化が実現できる。他方、光線の放射輝度に対するオブジェクトの反射特性または透過特性が高い場合は、光線数または最大交差数を大きく設定することで、処理の高速化よりもノイズ低減化を優先することができる。
【0110】
<その他の実施形態>
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。
【技術分野】
【0001】
本発明は、光線追跡法を用いて画像を生成する画像処理装置および画像処理方法に関する。
【背景技術】
【0002】
近年、コンピュータグラフィックス(以下、CG)は、様々な分野で利用されている。CGは設計やデザインの分野でも広く利用されており、このような分野では、実物により忠実な画像を生成する技術が要求されている。
【0003】
CGを用いて実物を忠実に再現する手法として、以下のようなさまざまな技術が知られている。例えば、光学的に複雑な特性を有する塗料等による反射のシミュレーションに変角分光反射特性を用いる手法や、モニタ上にリアリティの高い画像を再現するためにオブジェクトの変角分光反射特性を利用する手法がある。また、写りこみの色を再現するために分光屈折率特性を用いる手法や、マルチスペクトルカメラで撮影したマルチバンドデータを用いる手法もある。
【0004】
また、CGにおける画像生成手法には、スキャンライン法、Zバッファ法、光線追跡法、等がある。中でも光線追跡法は、三次元空間における光の伝搬経路を追跡することで反射や屈折を表現可能であるため、実物に忠実な画像生成に適した手法である。一方、光線追跡法は非常に大量の光線の経路を繰り返し追跡していく必要があるため、複雑なシーンにおいて高品質な画像を得るためには、計算コストが膨大となる。そのため、光線追跡法の効率化アルゴリズムとして、空間分割法やバウンディングボリューム法等が提案されている。例えば空間分割法を用いた技術として、予め仮想空間を複数のボクセルに分割しておき、光線が通過するボクセル内のオブジェクトのみと交差判定を行って画像を生成する手法が提案されている(例えば、特許文献1参照)。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2001-184522号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、上記CG画像を生成する従来の各手法においては、光源の配光特性が考慮されていないため、例えば蛍光灯とLED照明のように、配光特性の異なる光源によってシーンに生じる陰影の変化を再現できないという問題があった。
【0007】
また、一般的な光線追跡法では光を波長に依存しない一様な光線として扱うため、オブジェクトを透過する光の屈折のように、波長によって異なるふるまいをする物理現象を正しく再現することができない、という問題があった。
【0008】
本発明は上述した問題を解決するために、光源やオブジェクトの分光特性に基づいた光線追跡を行うことで、シーンを忠実に再現したコンピュータグラフィックス画像を生成することを目的とする。
【課題を解決するための手段】
【0009】
上記問題を解決するための一手段として、本発明の画像処理装置は以下の構成を備える。
【0010】
すなわち、任意のシーンについてのコンピュータグラフィックス画像を、光線追跡法によって生成する画像処理装置であって、光源の分光特性および配光特性を示す光源特性データを入力する光源特性入力手段と、前記シーン内におけるオブジェクトの分光特性を示すオブジェクト特性データを入力するオブジェクト特性入力手段と、前記光源特性データおよび前記オブジェクト特性データに基づいて、互いに異なる波長の光線ごとに光線追跡を行うことによって、前記シーンにおける各画素に対応する分光放射輝度を算出する光線追跡手段と、前記各画素に対応する分光放射輝度から色信号値を算出して前記コンピュータグラフィックス画像を生成する色信号値算出手段と、を有することを特徴とする。
【発明の効果】
【0011】
本発明によれば、光源やオブジェクトの分光特性に基づいた光線追跡を行うことで、シーンを忠実に再現したコンピュータグラフィックス画像を生成することが可能となる。
【図面の簡単な説明】
【0012】
【図1】オブジェクトの透過特性を説明する模式図、
【図2】第1実施形態における画像処理装置の構成例を示すブロック図、
【図3】第1実施形態における画像処理装置の論理構成例を示すブロック図、
【図4】第1実施形態における画像生成処理を示すフローチャート、
【図5】光源の配光特性を説明する模式図、
【図6】光源の分光放射輝度の例を示す図、
【図7】オブジェクトの反射/透過特性を説明する模式図、
【図8】視覚特性の例を示す図、
【図9】第1実施形態における画素毎の分光放射輝度の算出処理を示すフローチャート、
【図10】第1実施形態における色信号値算出処理を示すフローチャート、
【図11】第1実施形態の変形例における光源の配光特性(波長依存)例を示す図、
【図12】第2実施形態における画像生成処理を示すフローチャート、
【図13】第2実施形態における画素毎の分光放射輝度の算出処理を示すフローチャート、
【図14】第2実施形態における光線追跡時の最大交差回数設定の概念を示す図、
【図15】第3実施形態における画素毎の分光放射輝度の算出処理を示すフローチャート、
【図16】第3実施形態における光線追跡時の光線数設定の概念を示す図、である。
【発明を実施するための形態】
【0013】
以下、本発明に係る実施形態について、図面を参照して説明する。なお、以下の実施の形態は特許請求の範囲に関る本発明を限定するものではなく、また、本実施の形態で説明されている特徴の組み合わせの全てが本発明の解決手段に必須のものとは限らない。
【0014】
<第1実施形態>
本実施形態においては、光源の配光特性と分光特性、及びオブジェクトの分光特性を考慮して、光線追跡法によりシーンを忠実に再現したコンピュータグラフィックス画像(CG画像)を生成する処理について説明する。
【0015】
まず、波長によって異なる光の振る舞いについて、図1を用いて説明する。光はオブジェクトにあたると、その表面で反射する光と透過する光に分離する。オブジェクトを透過する光は、その波長λに応じた屈折率によって屈折角が変化する。例えば図1に示すように、視点を開始点として、屈折率n1(λ)の空間を通過した光線が屈折率n2(λ)のオブジェクト101を透過する場合を考える。このとき、オブジェクト101に対する光線の入射角をφとすると、屈折角θ(λ)は以下の(1)式で示される。
【0016】
θ(λ)=sin-1{(n1(λ)/n2(λ))sinφ} ・・・(1)
このように屈折角は光の波長λの関数になるため、光線追跡法によって追跡する光の経路が波長λによって変化することになる。従って、図1でオブジェクト101を透過した光がさらに屈折率n3(λ)のオブジェクト102を透過する等、あるシーンにおける光の透過を忠実に再現するためには、光を分光として扱う必要がある。
【0017】
●装置構成
本実施形態における画像処理装置の構成例について、図2を用いて説明する。図2に示すように本実施形態の画像処理装置は、CPU201、メインメモリ202、HDD203、汎用インターフェイス(以下、単にI/F)204、モニタ205、メインバス206を備える。I/F204は、分光測定器207、外部記憶装置208等をメインバス206に接続する。以下、CPU201がHDD203に格納された各種ソフトウェア(コンピュータプロラム)を動作させることで実現する各種処理について説明する。
【0018】
まずCPU201は、HDD203に格納されている画像処理アプリケーションを起動し、メインメモリ202に展開する。続いて、HDD203に格納されている各種データや、I/F204に接続された分光測定器207や外部記憶装置208から入力されるデータ等が、CPU201からの指令に基づき、メインバス206経由でメインメモリ202に転送される。さらに、画像処理アプリケーション内の処理にしたがって、メインメモリ202に格納されているデータにCPU201からの指令に基づく各種演算が施され、該演算結果をメインバス206経由でモニタ205に表示したり、HDD203に格納したりする。
【0019】
以下、上記構成において、CPU201からの指令に基づき画像処理アプリケーションが画像を生成してモニタ205に表示するまでの画像処理について、詳細に説明する。
【0020】
図3は、本実施形態における画像処理装置301の論理構成を示すブロック図であるが、同図に示す各構成は、上述したように画像処理アプリケーションとして実現される。
【0021】
図3において、光源特性入力部302は、シーンを照明する光源の配光特性および分光放射輝度を示す光源特性データ307を入力する。オブジェクト特性入力部303は、シーンを構成する各オブジェクトの反射特性、透過特性及び屈折率を示すオブジェクト特性データ308を入力する。視覚特性入力部304は、シーンを観察する際の視覚特性データ309を入力する。尚、光源特性データ307、オブジェクト特性データ308、視覚特性データ309は、HDD203からの入力、またはI/F204を介して分光測定器207、外部記憶装置208からI/F204を介した入力等、所望の手段によって入力される。
【0022】
分光放射輝度算出部305は、光源特性入力部302及びオブジェクト特性入力部303から入力された情報に基づき、CPU201からの指示に従って、シーンのCG画像における各画素の分光放射輝度310を算出する。色信号値算出部306は、分光放射輝度算出部305で算出した各画素の分光放射輝度310と、視覚特性入力部304から入力された視覚特性データ309に基づき、CPU201からの指示に従ってシーンのCG画像における各画素の色信号値を算出する。該色信号値は例えばRGB値として算出され、画像データ311として出力される。画像データ311は、HDD203等の記憶領域に格納されるとともに、モニタ205に表示される。
【0023】
●シーンCG画像の生成処理
以下、本実施形態の画像処理装置301において、シーンのCG画像を作成する画像生成処理について、図4のフローチャートを用いて説明する。
【0024】
まずS401で、光源特性入力部302が光源特性データ307を入力する。この光源特性データ307は上述したように、シーンを照明する光源の配光特性及び分光放射輝度を示す。
【0025】
ここで、光源の配光特性について図5を用いて説明する。配光特性は、光源から放射される光の各方向への強度分布を示すものであり、光源の指向性の違いによって一つの光源がシーンを照らす範囲が異なる。図5(a)は、指向性の低い蛍光灯などの光源における配光特性の例であり、シーンを広く照らしていることが分かる。一方図5(b)は、指向性の高いLEDなどの光源における配光特性の例であり、シーンの一部だけが照らされていることが分かる。このように、光源の配光特性が異なるとシーンに生じる陰影が大きく変化するので、光源の配光特性はシーンを忠実に再現するために重要なファクタとなる。尚、配光特性はHDD203等に記憶されているデータを入力しても良いし、I/F204に接続された分光測定器207で光源を測定したデータを入力しても良い。また、入力するデータ形式としては、光源からの光の出力角と光の強度との対応が得られれば、どのような形式であっても構わない。例えば、出力角に対する光の強度の関数形式であって良いし、出力角と光の強度の対応を示すルックアップテーブル(以下、LUT)の形式であっても良い。
【0026】
次に、分光放射輝度について図6を用いて説明する。光源の分光放射輝度は、波長毎の輝度分布を示すものであり、光源によって特性が異なる。図6(a)は蛍光灯の分光放射輝度分布の例であり、図6(b)はLED照明の分光放射輝度分布の例である。このように、光源の種類が異なると分光放射輝度分布も変化し、その結果、オブジェクトの色の見えが変化するので、光源の分光特性はシーンを忠実に再現するために重要なファクタとなる。尚、分光特性も配光特性と同様に、HDD203等に記憶されているデータを入力しても良いし、I/F204に接続された分光測定器207で光源を測定したデータを入力しても良い。また、入力するデータ形式としては、可視光域の波長と放射輝度との対応が得られれば、どのような形式であっても構わない。例えば、光の波長に対する放射輝度の関数であっても良いし、波長と放射輝度の対応を示すLUTの形式でも良い。
【0027】
次にS402で、オブジェクト特性入力部303がオブジェクト特性データ308を入力する。このオブジェクト特性データ308は上述したように、シーン内の各オブジェクトの反射特性、透過特性及び屈折率を示す。
【0028】
ここで、オブジェクトの反射特性および透過特性について、図7を用いて説明する。一般に、オブジェクトの反射特性は双方向反射率分布関数(BRDF:Bidirectional Reflectance Distribution Function)frで表される。オブジェクト上の位置xにおいて、ある方向ωiから入射する光の波長をλi、強度をLiとし、ある方向ωrに反射する光の波長をλr、強度をdLrとすると、反射特性frは以下の(2)式で示される。
【0029】
fr(x,ωi,λr,ωr)={dLr(x,λr,ωr)}/{Li(x,λi,ωi)(ωr・n)dω} …(2)
一般に、反射光の強度分布はオブジェクトの表面形状に依存し、オブジェクト表面が平滑なほど、鏡面反射方向すなわちωi=ωr方向の反射強度が高くなり、それ以外の拡散反射方向への反射強度は小さくなる。
【0030】
尚、オブジェクトの反射特性frの取得方法としては、HDD203等に記憶されているデータを入力しても良いし、I/F204に接続された分光測定器207で測定したデータを入力しても良い。また、反射特性frのデータ形式としては、オブジェクトへの光の入射角と反射角に対応した反射率が得られれば、どのような形式であっても構わない。例えば、上記(2)式のように一意の関数として入力しても良いし、一般に拡散反射は等方的に分布するため、ωi=45°,ωr=0°の反射特性を拡散反射に適用し、鏡面反射は別途LUTにする等、分割して入力しても構わない。
【0031】
また、オブジェクトを透過する光は双方向透過率分布関数(BTDF:Bidirectional Transmittance Distribution Function)ftで表される。オブジェクト上の位置xにおいて、ある方向ωiから入射する光の波長をλi、強度をLiとし、ある方向ωtに透過する光の波長をλt、強度をdLtとすると、透過特性ftは以下の(3)式で示される。
【0032】
ft(x,ωi,λt,ωt)={dLt(x,λt,ωt)}/{Li(x,λi,ωi)(ωt・n)dω} …(3)
一般に、透過光の強度分布は屈折率に依存するため、ωtが上記式(1)を満たす場合に、透過強度が最大になる。尚、オブジェクトの透過特性ftの取得方法としても、HDD203等に記憶されているデータを入力しても良いし、I/F204に接続された分光測定器207で測定したデータを入力しても良い。また、透過特性ftのデータ形式も、オブジェクトへの光の入射角と屈折角に対応した透過率が得られれば、どのような形式であっても構わない。例えば、上記(3)式のように一意の関数として入力しても良いし、ωi=ωr=0°の透過特性をωtが(1)式の屈折角θに等しい場合に適用し、それ以外の透過は別途LUTにする等、分割して入力しても良い。
【0033】
次にS403で、視覚特性入力部304が視覚特性データ309を入力する。この視覚特性データ309は、分光放射輝度を画像の色信号値に変換する際に用いられ、ここで視覚特性データ309の例として、図8にCIEXYZ表色系で用いる等色関数を示す。等色関数は、可視光域の光に対する目の感度を示している。尚、視覚特性データ309は、HDD203等に予め記憶しておいて入力すれば良い。
【0034】
次にS404で分光放射輝度算出部305が、当該シーンのCGとしての出力画像を順次走査して、分光放射輝度の算出対象となる画素を決定する。なお、この対象画素の選択順は任意である。
【0035】
次にS405で分光放射輝度算出部305において、上記S404で選択された対象画素における分光放射輝度を算出する。この分光放射輝度の算出には光線追跡法を用いるが、処理の詳細については後述する。
【0036】
次にS406で色信号値算出部306において、対象画素の色信号値を算出する。この色信号値の算出方法の詳細については後述する。
【0037】
そしてS407で、出力画像の全画素について分光放射輝度の算出が終了したか否かを判定する。終了していれば生成した画像データを出力して処理を終了するが、未終了であればS404に戻り、次の対象画素を決定して処理を継続する。
【0038】
●分光放射輝度算出処理
以下、上記S405における分光放射輝度の算出処理について、図9を用いて詳細に説明する。上述したように、本実施形態における分光放射輝度の算出には光線追跡法を用いる。この手法によれば、視点が画角内の各方向から受け取るはずの光線を、仮想的に光源まで追跡することでCG画像の描画を行う。詳細には、視点から描画する各画素の方向へ直線を伸ばし、オブジェクトとの交差の有無を数学的に判定する。そして、反射や透過により発生した光線について、再帰的に探索を繰り返し、光源と交差した場合に計算を終了する。すなわち本実施形態では、図9のフローチャートに示す処理を再帰的に実行することで複数の光線(発射光線)を追跡し、光線ごとに算出した分光放射輝度の平均により、対象画素における分光放射輝度を算出する。
【0039】
なお、図9では波長λの単色光についての分光放射輝度算出処理を説明するが、実際には同様の処理を所定の波長毎に行うことで、当該対象画素についての分光放射輝度が得られる。なお、処理対象となる波長は全波長域から等間隔で抽出されるものとする。例えば380〜730nmの可視域において、10nm間隔で36波長を処理対象波長として抽出する。
【0040】
まずS901で、追跡の開始点から飛ばした波長λの光線がシーンにおいて交差する点を探索する。ここで追跡の開始点は、当該フローチャートが初回の実行であれば対象画素であり、再帰実行であれば光線とオブジェクトとの交点である。なお、この交点の探索方法は任意であり、例えば、シーン内の全てのオブジェクトについて順次交差判定を行って、追跡の開始点に最も近い交点を求めれば良い。
【0041】
次にS902で、S901で探索された光線と交差する点が、光源との交差であるか、またはその他のオブジェクトとの交差であるかを判定する。光線が光源と交差している場合にはS903に移行し、光線の強度と交差した光源の光源特性データ307から、波長λについての分光放射輝度を算出して、当該波長についての処理を終了する。ここで光源特性データ307は光源の配光特性および分光放射輝度を示すものであるから、光線の分光放射輝度E0(λ)は以下の(4)式によって示される。なお下式においては、光線の強度をP0(λ)、光線と光源のなす角をθ、光源からθ方向の配光特性をQ(θ)、光源の分光放射輝度をS(λ)とする。
【0042】
E0(λ)=P0(λ)*Q(θ)*S(λ) …(4)
一方、光線が光源以外のオブジェクトと交差している場合にはS904に移行し、まず、光線が交差したオブジェクトのオブジェクト特性データ308(反射特性、透過特性及び屈折率)を取得する。
【0043】
次にS905で、光線とオブジェクトとの交点から飛ばす光線数(発射光線数)を決定する。この発射光線数は任意に決定して構わないが、数が多いほどノイズの少ない画像が得られる。以下、発射光線数に応じた回数分、S906及びS907の処理をループする。
【0044】
S906では、発射光線の方向および強度を算出する。光線の方向は発射光線数に応じて均等に分布すれば良く、該交点に対する反射光の強度Pr(λr)、透過光の強度Pt(λt)はそれぞれ、以下の(5),(6)式によって示される。なお、下式において、P0(λi)はオブジェクトと交差する前の光線の強度、frは上記(2)式に示したオブジェクトの反射特性、ftは上記(3)式に示したオブジェクトの透過特性である。
【0045】
Pr(λr)=P0(λi)*fr(x,ωi,λr,ωr) …(5)
Pt(λt)=P0(λi)*ft(x,ωi,λt,ωt) …(6)
次にS907で図9のフローチャートに示す処理を再帰的に呼び出すことによって、当該発射光線に対する光線追跡処理が行われる。このS907の処理はすなわち、再帰処理によって最終的に交差するオブジェクトがなくなり、当該発射光線についての分光放射輝度がS903で算出された時点で、終了する。このように、発射光線についてS907の再帰処理によって最終的に上記(4)式で算出された分光放射輝度E0(λ)が、当該発射光線についての分光放射輝度En(λ)となる。
【0046】
そしてS908で、全ての発射光線について上記S906及びS907による光源追跡が終了したと判定されると、次にS909において、各発射光線の分光放射輝度En(λ)の平均を算出する。この平均分光放射輝度値が、対象画素における追跡対象波長λについての分光放射輝度Ex(λ)である。すなわち、光線の総数をN、各発射光線の分光放射輝度をEn(λ)(nは0〜N-1までの整数)とすると、対象画素における追跡対象波長λの分光放射輝度Ex(λ)は、以下の(7)式で算出される。なお、(7)式においてΣはn=0からN-1までの整数に関する総和を示す。
【0047】
Ex(λ)=(1/N)・ΣEn(λ) …(7)
以上、S405では図9に示す光線追跡処理を再帰的に実行することによって、対象画素における分光放射輝度Ex(λ)を算出する。
【0048】
●色信号値算出処理
以下、上記S406における画素ごとの色信号値の算出処理について、図10を用いて詳細に説明する。尚、本実施形態では最終的にsRGB形式の色信号値を出力するとして説明するが、Adobe RGB等の他形式による色信号値であっても構わない。
【0049】
まずS1001で、S403で入力した視覚特性データ309として、例えばCIEXYZ表色系の等色関数x(λ),y(λ),z(λ)を取得する。次にS1002で、上記S405で算出した、画素ごとの分光放射輝度Ex(λ)を取得する。そしてS1003で、取得した視覚特性x(λ),y(λ),z(λ)と分光放射輝度Ex(λ)から、以下の(8)〜(10)式によりCIEXYZ値(Xout,Yout,Zout)を算出する。
【0050】
【0051】
【0052】
【0053】
そしてS1004において、出力画像の色信号値を算出する。ここでは出力画像をsRGB形式とするるため、出力信号Rout,Gout,Boutを以下の(11)〜(13)式によって算出する。
【0054】
【0055】
【0056】
【0057】
以上、図4に示す画像生成処理によって、シーンのCGである出力画像が形成される。
【0058】
以上説明したように本実施形態によれば、シーンにおける光線追跡を、光源の配光特性と分光特性、及びオブジェクトの分光特性を利用して行うことで、該シーンを忠実に再現したCG画像を生成することができる。
【0059】
<変形例>
以下、第1実施形態の変形例について説明する。上述した第1実施形態では、光源特性データ307によって示される配光特性を、光の強度分布として扱う例を示した。しかしながら、光の強度分布は波長によって異なる場合がある。例えばLED照明の場合、青色を発光するLEDと、黄色を発光する蛍光体を組み合わせて光源を作る場合がある。この時、図5(b)にも示したようにLEDは指向性の高い光を発光するため、蛍光体と組み合わせた際に色ムラが発生する。すなわち、図11に示すように、光源の配光特性が波長によって変化するため、分光放射輝度も光線と光源のなす角度θに依存することになる。
【0060】
そこで、光源情報として波長によって異なる配光特性を入力することが考えられる。この場合における分光放射輝度の算出処理は第1実施形態とほぼ同様であるが、図9におけるS903の最終的な分光放射輝度の算出処理のみが異なる。すなわち、光源が波長によって異なる配光特性を有する場合、その配光特性は、波長λと光線と光線のなす角θの関数Q(λ,θ)として表わされる。この場合、第1実施形態で用いた光源の分光放射輝度S(λ)は、配光特性Q(λ,θ)から得られるため不要になる。従って、S903における光線の分光放射輝度E0(λ)の算出は、以下の(14)式に従う。
【0061】
E0(λ)=P0(λ)*Q(λ,θ) …(14)
以上のように、光源の配光特性が波長によって異なる場合であっても、上記第1実施形態と同様にシーンを忠実に再現したCG画像を生成することができる。
【0062】
<第2実施形態>
以下、本発明に係る第2実施形態について説明する。上述した第1実施形態では、光源の配光特性や分光特性、およびオブジェクトの分光特性に基づいた光線追跡を行うことによって、該シーンを忠実に再現したCG画像を生成する例を示した。しかしながら、第1実施形態のように分光による光線追跡を行う場合、波長数に応じて演算量が増加し、処理速度が低下してしまう。一般に光線追跡法においては、1本の光線におけるオブジェクトとの交差回数や、追跡を行う光線数を削減することで演算量を抑制して処理速度を上げることが可能である反面、生成画像にノイズが発生して画質が低下してしまう。ここで、上記特許文献1に記載された空間分割法を用いた光線追跡の効率化手法を、分光による光線追跡に適用することを考える。この場合に、更なる高速化のために光の波長によらず交差回数や光線数を削減すると、やはりノイズが発生してしまう。そこで第2実施形態においては、上述した第1実施形態に加え、光源やオブジェクトの分光特性に応じて光線追跡時における演算量を制御することで、処理の高速化とノイズ低減化を実現する。
【0063】
なお、第2実施形態における画像処理装置の構成は、上述した第1実施形態で図2、図3に示した構成と同様であるため、同符号を参照するとして説明を省略する。
【0064】
●シーンCG画像の生成処理
以下、第2実施形態の画像処理装置301において、シーンのCG画像を作成する画像生成処理について、図12のフローチャートを用いて説明する。
【0065】
まずS1401で、光源特性入力部302が光源特性データ307を入力する。この光源特性データ307は、第1実施形態で図5,図6を用いて説明したような、シーンを照明する光源の配光特性及び分光放射輝度を示す。
【0066】
次にS1402で、オブジェクト特性入力部303がオブジェクト特性データ308を入力する。このオブジェクト特性データ308は、第1実施形態で図7を用いて説明したように、シーン内の各オブジェクトの反射特性、透過特性及び屈折率を示す。
【0067】
次にS1403で、視覚特性入力部304が視覚特性データ309を入力する。この視覚特性データ309は、分光放射輝度を画像の色信号値に変換する際に用いられ、例えば図8に示す等色関数である。
【0068】
次にS1404で分光放射輝度算出部305が、当該シーンのCGとしての出力画像を順次走査して、分光放射輝度の算出対象となる画素を決定する。なお、この対象画素の選択順は任意である。
【0069】
次にS1405で分光放射輝度算出部305が、対象画素から発せられた光線が経路追跡中のオブジェクトと交差した回数をカウントするための変数である、交差回数Nを0に初期化する。
【0070】
次にS1406で分光放射輝度算出部305が、波長λごとの交差回数の上限となる最大交差回数M(λ)を初期化する。最大交差回数M(λ)は、対象画素からの光線が光源に到達するまでに多数のオブジェクトと交差する場合に、光源への到達前に交差回数に応じて処理を打ち切るための閾値となる変数である。本来、光線が光源に到達するまで追跡を行うことが望ましいが、それには膨大な計算が必要となるため、この最大交差回数M(λ)までに光線が光源に到達しない場合には光線追跡を打ち切ることで計算量を削減し、計算時間の高速化を実現する。最大交差回数M(λ)の初期値としては、光の波長λごとに1以上の任意の値を設定する。なお、最大交差回数M(λ)が小さいと、計算を高速化できる半面、生成結果画像にノイズが発生してしまうため、求められる計算時間とノイズ量を考慮して、初期値を設定することが望ましい。また、最大交差回数M(λ)の初期値としては、光の波長λによらず等しい値を設定することが望ましい。
【0071】
次にS1407で分光放射輝度算出部305において、上記S1404で選択された対象画素における分光放射輝度を算出する。この分光放射輝度の算出には光線追跡法を用いるが、処理の詳細については後述する。
【0072】
次にS1408で色信号値算出部306において、対象画素の色信号値を算出する。この色信号値の算出方法は、上述した第1実施形態で図10を用いて説明した方法と同様であるため、説明を省略する。
【0073】
そしてS1409で、出力画像の全画素について分光放射輝度の算出が終了したか否かを判定する。終了していれば生成した画像データを出力して処理を終了するが、未終了であればS1404に戻り、次の対象画素を決定して処理を継続する。
【0074】
●分光放射輝度算出処理
以下、上記S1407における分光放射輝度の算出処理について、図13を用いて詳細に説明する。第2実施形態においても、図13のフローチャートに示す処理を再帰的に実行することで複数の光線(発射光線)を追跡し、光線ごとに算出した分光放射輝度の平均により、対象画素における分光放射輝度を算出する。なお、図13では波長λの単色光についての分光放射輝度算出処理を説明するが、実際には同様の処理を所定の波長毎に行うことで、当該対象画素についての分光放射輝度が得られる。
【0075】
まずS1901で、追跡の開始点から飛ばした波長λの光線がシーンにおいて交差する点を探索する。ここで追跡の開始点は、当該フローチャートが初回の実行であれば対象画素であり、再帰実行であれば光線とオブジェクトとの交点である。なお、この交点の探索方法は任意であり、例えば、シーン内の全てのオブジェクトについて順次交差判定を行って、追跡の開始点に最も近い交点を求めれば良い。
【0076】
次にS1902で、S1901で探索された光線と交差する点が、光源との交差であるか、またはその他のオブジェクトとの交差であるかを判定する。光線が光源と交差している場合にはS1914に移行し、光線の強度と交差した光源の光源特性データ307から、波長λについての分光放射輝度E0(λ)を上記(4)式より算出して、当該波長についての処理を終了する。一方、S1902で光線が光源以外のオブジェクトと交差している場合にはS1903に移行し、光線に対する交差回数Nに1を加えて値を更新する。
【0077】
そしてS1904で、光線が交差したオブジェクトのオブジェクト特性データ308(反射特性、透過特性及び屈折率)を取得する。
【0078】
次にS1905で、光線の交差回数Nと光線の波長における最大交差回数M(λ)の大小を判定する。交差回数Nが最大交差回数M(λ)を超える場合は、光線が光源に未到達であっても光線追跡処理を終えるためにS1913に移行する。一方、交差回数Nが最大交差回数M(λ)以下の場合は、光線とオブジェクトの交点から新たに複数の光線を飛ばし、各光線についての光線追跡処理を行うためにS1906に移行する。このように第2実施形態では、予め設定した最大交差回数M(λ)までに光線が光源に到達しない場合は、光源到達前に処理を打ち切ることで、処理の高速化を実現する。しかし、上述したように最大交差回数M(λ)を小さくすると、計算を高速化できる半面、生成画像中にノイズが多くなってしまう。そこで第2実施形態では詳細は後述するが、光線が最初に交差したオブジェクトの反射率や透過率と光源の放射輝度、およびS1406で設定された初期値に応じて、光の波長ごとに最適な最大交差回数M(λ)を設定する。
【0079】
S1906では、光線とオブジェクトとの交点から新たに飛ばす発射光線数を決定する。この発射光線数は任意に決定して構わないが、数が多いほどノイズの少ない画像が得られる反面、計算量が増大する。なお、新たに飛ばす各光線の交差回数N、および、最大交差回数M(λ)の値は、元の光線の値を引き継ぐものとする。以下、発射光線数に応じた回数分、S1907〜S1910の処理をループする。
【0080】
S1907では、発射光線の方向および強度を算出する。光線の方向は発射光線数に応じて均等に分布すれば良く、該交点に対する反射光の強度Pr(λr)、透過光の強度Pt(λt)はそれぞれ、第1実施形態と同様に(5),(6)式によって示される。
【0081】
次にS1908では、光線における現在の交差回数Nの値が1であるか否かの判定を行う。交差回数Nが1、すなわち初回の交差である場合はS1909に移行し、1以外、すなわち2回目以降の交差である場合はS1910へ移行する。
【0082】
S1909では、光源の分光特性とオブジェクトの分光特性に応じて、波長λにおける最大交差回数M(λ)を算出し、更新する。
【0083】
ここで、最大交差回数M(λ)の設定方法について詳細に説明する。最大交差回数M(λ)は、シーン内のオブジェクトに対する光線の反射成分および透過成分のそれぞれについて設定される。
【0084】
例えば、オブジェクトの反射率が小さい波長の光線では、該オブジェクトとの交差によって放射輝度が大きく減衰してしまうため、該交差後の他オブジェクトとの交差による放射輝度の変化量は相対的に小さくなる。そのため、少ない交差回数の後に得られる放射輝度と、十分大きな交差回数の後に得られる放射輝度とで、差がほとんど生じない。一方、オブジェクトの反射率が大きい波長の光線では、該オブジェクトとの交差後も放射輝度があまり減衰しないため、該交差後の他オブジェクトとの交差による放射輝度の変化量は相対的に大きくなる。そのため、少ない交差回数の後に得られる放射輝度と、十分大きな交差回数の後に得られる放射輝度とで、大きな差が生じ、すなわちノイズが発生してしまう。このような特性は、オブジェクトに対する透過成分についても同様である。
【0085】
そこで第2実施形態では、ある波長の光線が最初に交差するオブジェクトについて、その反射率または透過率が大きければ最大交差回数Mを大きく設定し、逆に小さければ最大交差回数Mを小さく設定する。また、光源からの放射輝度の大きさはそのまま、交差後の放射輝度の大きさに反映されるため、最大交差回数Mの設定時にも、光源の放射輝度が参照される。すなわち、初回交差オブジェクトとの交差後に残存する光線の強度が大きいほど、最大交差回数Mを大きく設定する。このように、光源の放射輝度とオブジェクトの分光特性(反射特性または透過特性)に応じて最大交差回数Mを設定することで、演算量の削減とノイズ発生の抑制を両立することが可能となる。
【0086】
ここで図14を用いて、特にオブジェクトからの反射成分についての最大交差回数Mの設定方法の概念について説明する。ある入射角度、出射角度における、光線と交差するオブジェクトの分光反射率が図14で示される場合、例えば480nmのように反射率が高い波長では最大交差回数Mを大きく設定する。一方、例えば680nmのように反射率が低い波長では最大交差回数Mを小さく設定する。
【0087】
具体的には、オブジェクトに対する反射光、透過光のそれぞれの最大交差回数Mr(λr),Mt(λt)は、以下の(15),(16)式で記述される。下式によれば最大交差回数Mr(λr),Mt(λt)は、S406で初期化した最大交差回数M(λ)と、上記(2),(3)式で表される分光特性fr,ft、および光源の分光放射輝度S(λ)の関数gとして表わされる。
【0088】
Mr(λr)=g(M(λr),fr(x,ωi,λr,ωr),S(λ)) …(15)
Mt(λt)=g(M(λt),ft(x,ωi,λt,ωr),S(λ)) …(16)
尚、関数gとしては、反射率や透過率が高い波長において最大交差回数Mが大きくなるような関数であれば良く、具体的には、以下の(17)式や(18)式に示すような関数を用いることができる。
【0089】
g(M(λt),ft(x,ωi,λt,ωr),S(λ))=
M(λt)×ft(x,ωi,λt,ωr)×S(λ) …(17)
g(M(λt),ft(x,ωi,λt,ωr),S(λ))=
M(λt)×√(ft(x,ωi,λt,ωr)×S(λ)) …(18)
次にS1910で図13のフローチャートに示す処理を再帰的に呼び出すことによって、当該発射光線に対する光線追跡処理が行われる。このS1910の処理はすなわち、再帰処理によって最終的に交差するオブジェクトがなくなるか、または発射光線とオブジェクトの交差回数Nが最大交差回数Mを超えた場合に、終了する。このように、発射光線についてS1910の再帰処理によって最終的に上記(4)式で算出された分光放射輝度E0(λ)が、当該発射光線についての分光放射輝度En(λ)となる。
【0090】
そしてS1911で、全ての発射光線について上記S1907〜S1910による光源追跡が終了したと判定されると、次にS1912において、各発射光線の分光放射輝度En(λ)の平均を、上記(7)式により算出する。この平均分光放射輝度値が、対象画素における追跡対象波長λについての分光放射輝度Ex(λ)である。
【0091】
一方、S1905で、光線とオブジェクトの交差回数Nが最大交差回数Mを超える場合にはS1913に移行し、光線追跡処理を打ち切る場合の光線の方向と強度を算出する。具体的には、光線の方向としては交点から光源の方向を設定する。また光線の強度P(λ)としては、交点から光源までの直線上に他のオブジェクトが存在する場合には0を設定し、他のオブジェクトが存在しない場合には以下の(19)式に従い、反射のみを考慮する。なお、下式において、P0(λi)はオブジェクトと交差する前の光線の強度、frは上記(2)式に示したオブジェクトの反射特性である。
【0092】
P(λ)=P0(λi)*fr(x,ωi,λr,ωr) …(19)
そして、S1913で光線追跡処理を打ち切る場合の光線の方向と強度が算出されると、次にS1914で、波長λについての分光放射輝度E0(λ)を上記(4)式より算出して、当該波長についての処理を終了する。この演算には、S1913で算出された光線の強度P(λ)と、光源の配光特性Q(θ)および分光放射輝度S(λ)が適用される。
【0093】
以上説明したように第2実施形態によれば、分光による光線追跡を行う際に、光源の放射輝度と、オブジェクトの分光特性を考慮して光線の波長ごとに交差回数を制限する。これにより、波長ごとに必要最低限の交差による演算が可能となるため、計算時間の高速化とノイズ発生の低減を実現することが可能になる。
【0094】
<第3実施形態>
以下、本発明に係る第3実施形態について説明する。上述した第2実施形態では、光源とオブジェクトの分光特性に応じて、光線の波長ごとに最大交差回数を設定する例を示した。第3実施形態では、これら分光特性に応じて、交点から飛ばす光線数を波長ごとに設定することで、計算時間の高速化とノイズの発生を低減する例を示す。
【0095】
なお、第3実施形態における画像処理装置の構成は、上述した第1実施形態で図2、図3に示した構成と同様であるため、同符号を参照するとして説明を省略する。
【0096】
●分光放射輝度算出処理
第2実施形態の画像処理装置301においてCG画像を作成する画像生成処理は、第2実施形態で図12のフローチャートに示した処理とほぼ同様であり、S1407における分光放射輝度の算出処理が異なるのみである。したがって、以下では第3実施形態における分光放射輝度の算出処理について、図15を用いて説明する。
【0097】
第3実施形態においても、図15のフローチャートに示す処理を再帰的に実行することで複数の光線(発射光線)を追跡し、光線ごとに算出した分光放射輝度の平均により、対象画素における分光放射輝度を算出する。また、図15でも波長λの単色光についての分光放射輝度算出処理を説明するが、実際には同様の処理を所定の波長毎に行うことで、当該対象画素についての分光放射輝度が得られる。
【0098】
図15において、発射光線数を決定するS1201以外の各処理は、第2実施形態で図13のフローチャートに示した各処理と同様の処理を行う。なお、第3実施形態においても、第2実施形態と同様にS1406で初期設定された最大交差回数Mを用いるが、この最大交差回数Mは最初に交差するオブジェクトに関わらす固定とし、更新されない。
【0099】
以下、第3実施形態のS1201における、分光特性に応じた光線数の決定処理について説明する。
【0100】
第2実施形態でも説明したように、オブジェクトの反射率や透過率が小さい波長の光線では、該オブジェクトとの交差によって放射輝度が大きく減衰するため、その後の他オブジェクトとの交差による放射輝度の変化量は小さい。そのため、交点から改めて飛ばす光線数が少ない場合に得られる放射輝度と、十分多い光線数によって得られる放射輝度とで、差がほとんど生じない。一方、オブジェクトの反射率や透過率が大きい波長の光線では、該オブジェクトとの交差後も放射輝度があまり減衰しないため、その後の他オブジェクトとの交差による放射輝度の変化量は相対的に大きくなる。そのため、少ない発射光線数によって得られる放射輝度と、十分多い光線数によって得られる放射輝度とで、大きな差が生じ、すなわちノイズが発生してしまう。
【0101】
そこで第3実施形態では、ある波長の光線が交差するオブジェクトごとに、その反射率または透過率が大きければ発射光線数を大きく設定し、逆に小さければ発射光線数を小さく設定する。なお、発射光線数の設定時に光源の放射輝度にも参照されるべきであることは、第2実施形態と同様である。すなわち、オブジェクトとの交差後に残存する光線の強度が大きいほど、発射光線数を大きく設定する。このように、光源の放射輝度と、オブジェクトの分光特性(反射特性または透過特性)に応じて光線追跡時の光線数を設定することで、演算量の削減とノイズ発生の抑制を両立することが可能となる。
【0102】
ここで図16を用いて、特に交点からの反射成分についての発射光線数の設定方法の概念について説明する。ある入射角度、出射角度における、光線と交差するオブジェクトの分光反射率が図16で示される場合、例えば480nmのように反射率が高い波長では光線数を多く設定する。一方、例えば680nmのように反射率が低い波長では光線数を少なく設定する。
【0103】
具体的には、オブジェクトに対する反射光、透過光のそれぞれの光線数Rr(λr),Rt(λt)は、上記(2),(3)式で表される分光特性fr,ft、および光源の分光放射輝度S(λ)の関数gとして、以下のように記述される。
【0104】
Rr(λr)=h(fr(x,ωi,λr,ωr),S(λ)) …(20)
Rt(λt)=h(ft(x,ωi,λt,ωr),S(λ)) …(21)
尚、関数hとしては、反射率が高い波長において光線数が大きくなるような関数であれば良く、具体的には、以下の(22)式や(23)式に示すような関数を用いることができる。
【0105】
h(ft(x,ωi,λt,ωr),S(λ))=
Rmax×ft(x,ωi,λt,ωr)×S(λ) …(22)
h(ft(x,ωi,λt,ωr),S(λ))=
Rmax×√(ft(x,ωi,λt,ωr)×S(λ)) …(23)
なお、(22),(23)式においてRmaxは任意の値を持つ定数であり、反射率や透過率が1である場合の光線数である。Rmaxが大きいほど、ノイズの少ない画像が得られる半面、計算量が増大する。
【0106】
第3実施形態では、以上のようにオブジェクトの分光特性に応じて設定した光線数で、光線とオブジェクトとの交点から新たな光線を飛ばし、光線経路の追跡を繰り返し行うことで、当該対象画素における放射輝度を算出する。
【0107】
以上説明したように第3実施形態によれば、分光による光線追跡を行う際に、光源の放射輝度と、オブジェクトの分光特性を考慮して発射光線数を設定する。これにより、波長ごとに必要最低限の光線数による演算が可能となるため、計算時間の高速化とノイズ発生の低減を実現することが可能になる。
【0108】
なお、第3実施形態を上述した第2実施形態と同時に適用することも可能である。すなわち、光源とオブジェクトの分光特性に応じて、光線の波長ごとに最大交差回数を設定し、さらに、各交点から飛ばす光線数をオブジェクトごとに設定すれば良い。
【0109】
<変形例>
以下、第2および第3実施形態の変形例について説明する。上述した第2および第3実施形態では、光源特性やオブジェクトの反射/透過特性には光の波長依存性がある、すなわち分光情報を持つものとして説明を行った。しかしながら本発明は、分光情報を利用した光線追跡処理への適用に限られるものではなく、例えば濃淡情報のみを持つ1色での光線追跡や、RGBの3色での光線追跡にも適用可能である。その場合、光線の放射輝度に対するオブジェクトの反射特性または透過特性が低い場合は、光線数または最大交差数を小さく設定することで、処理の高速化が実現できる。他方、光線の放射輝度に対するオブジェクトの反射特性または透過特性が高い場合は、光線数または最大交差数を大きく設定することで、処理の高速化よりもノイズ低減化を優先することができる。
【0110】
<その他の実施形態>
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。
【特許請求の範囲】
【請求項1】
任意のシーンについてのコンピュータグラフィックス画像を、光線追跡法によって生成する画像処理装置であって、
光源の分光特性および配光特性を示す光源特性データを入力する光源特性入力手段と、
前記シーン内におけるオブジェクトの分光特性を示すオブジェクト特性データを入力するオブジェクト特性入力手段と、
前記光源特性データおよび前記オブジェクト特性データに基づいて、互いに異なる波長の光線ごとに光線追跡を行うことによって、前記シーンにおける各画素に対応する分光放射輝度を算出する光線追跡手段と、
前記各画素に対応する分光放射輝度から色信号値を算出して前記コンピュータグラフィックス画像を生成する色信号値算出手段と、
を有することを特徴とする画像処理装置。
【請求項2】
前記光線追跡手段は光線ごとに、
前記光源特性データと、該光線が前記シーン内において最初に交差する初回交差オブジェクトの前記オブジェクト特性データに基づいて最大交差回数を設定し、該シーン内における該光線とオブジェクトとの交差回数が該最大交差回数を超えないように光線追跡を行う
ことを特徴とする請求項1に記載の画像処理装置。
【請求項3】
前記光線追跡手段は、
前記初回交差オブジェクトとの交差後に残存する前記光線の強度が大きいほど、前記最大交差回数を大きく設定することを特徴とする請求項2に記載の画像処理装置。
【請求項4】
前記光線追跡手段は、
前記初回交差オブジェクトに対する前記光線の反射成分および透過成分のそれぞれについて、前記最大交差回数を設定することを特徴とする請求項2または3に記載の画像処理装置。
【請求項5】
前記光線追跡手段は光線ごとに、
前記シーン内で該光線と交差するオブジェクトごとに、前記光源特性データと当該オブジェクトの前記オブジェクト特性データに基づいて発射光線数を設定し、該光線と該オブジェクトとの交点から該発射光線数の光線を飛ばして光線追跡を行うことを特徴とする請求項1乃至4のいずれか1項に記載の画像処理装置。
【請求項6】
前記光線追跡手段は、
前記オブジェクトとの交差後に残存する前記光線の強度が大きいほど、前記発射光線数を大きく設定することを特徴とする請求項5に記載の画像処理装置。
【請求項7】
前記光線追跡手段は、
前記オブジェクトに対する前記光線の反射成分および透過成分のそれぞれについて、前記発射光線数を設定することを特徴とする請求項5または6に記載の画像処理装置。
【請求項8】
さらに、視覚特性を入力する視覚特性入力手段を有し、
前記色信号値算出手段は、前記各画素に対応する分光放射輝度および前記視覚特性から、当該画素の色信号値を算出することを特徴とする請求項1乃至7のいずれか1項に記載の画像処理装置。
【請求項9】
前記光源特性データは、光源から任意の方向に放射される光の強度分布を示す情報を、前記光源の配光特性として含むことを特徴とする請求項1乃至8のいずれか1項に記載の画像処理装置。
【請求項10】
前記光源特性データは、光源の分光放射輝度を示す情報を前記光源の分光特性として含み、
前記オブジェクト特性データは、オブジェクトの反射特性と透過特性および屈折率を示す情報を前記オブジェクトの分光特性として含むことを特徴とする請求項9に記載の画像処理装置。
【請求項11】
前記オブジェクトの反射特性の情報は、該オブジェクトに対する光線の入射角と反射角に応じた特性を示すことを特徴とする請求項10に記載の画像処理装置。
【請求項12】
前記オブジェクトの透過特性の情報は、該オブジェクトに対する光線の入射角と屈折角に応じた特性を示すことを特徴とする請求項10に記載の画像処理装置。
【請求項13】
光源特性入力手段、オブジェクト特性入力手段、光線追跡手段、および色信号値算出手段、を有し、任意のシーンについてのコンピュータグラフィックス画像を、光線追跡法によって生成する画像処理装置における画像処理方法であって、
前記光源特性入力手段が、光源の分光特性および配光特性を示す光源特性データを入力し、
前記オブジェクト特性入力手段が、前記シーン内におけるオブジェクトの分光特性を示すオブジェクト特性データを入力し、
前記光線追跡手段が、前記光源特性データおよび前記オブジェクト特性データに基づいて、互いに異なる波長の光線ごとに光線追跡を行うことによって、前記シーンにおける各画素に対応する分光放射輝度を算出し、
前記色信号値算出手段が、前記各画素に対応する分光放射輝度から色信号値を算出して前記コンピュータグラフィックス画像を生成する
ことを特徴とする画像処理方法。
【請求項14】
コンピュータ装置で実行されることにより、該コンピュータ装置を請求項1乃至12のいずれか1項に記載の画像処理装置の各手段として機能させるためのプログラム。
【請求項1】
任意のシーンについてのコンピュータグラフィックス画像を、光線追跡法によって生成する画像処理装置であって、
光源の分光特性および配光特性を示す光源特性データを入力する光源特性入力手段と、
前記シーン内におけるオブジェクトの分光特性を示すオブジェクト特性データを入力するオブジェクト特性入力手段と、
前記光源特性データおよび前記オブジェクト特性データに基づいて、互いに異なる波長の光線ごとに光線追跡を行うことによって、前記シーンにおける各画素に対応する分光放射輝度を算出する光線追跡手段と、
前記各画素に対応する分光放射輝度から色信号値を算出して前記コンピュータグラフィックス画像を生成する色信号値算出手段と、
を有することを特徴とする画像処理装置。
【請求項2】
前記光線追跡手段は光線ごとに、
前記光源特性データと、該光線が前記シーン内において最初に交差する初回交差オブジェクトの前記オブジェクト特性データに基づいて最大交差回数を設定し、該シーン内における該光線とオブジェクトとの交差回数が該最大交差回数を超えないように光線追跡を行う
ことを特徴とする請求項1に記載の画像処理装置。
【請求項3】
前記光線追跡手段は、
前記初回交差オブジェクトとの交差後に残存する前記光線の強度が大きいほど、前記最大交差回数を大きく設定することを特徴とする請求項2に記載の画像処理装置。
【請求項4】
前記光線追跡手段は、
前記初回交差オブジェクトに対する前記光線の反射成分および透過成分のそれぞれについて、前記最大交差回数を設定することを特徴とする請求項2または3に記載の画像処理装置。
【請求項5】
前記光線追跡手段は光線ごとに、
前記シーン内で該光線と交差するオブジェクトごとに、前記光源特性データと当該オブジェクトの前記オブジェクト特性データに基づいて発射光線数を設定し、該光線と該オブジェクトとの交点から該発射光線数の光線を飛ばして光線追跡を行うことを特徴とする請求項1乃至4のいずれか1項に記載の画像処理装置。
【請求項6】
前記光線追跡手段は、
前記オブジェクトとの交差後に残存する前記光線の強度が大きいほど、前記発射光線数を大きく設定することを特徴とする請求項5に記載の画像処理装置。
【請求項7】
前記光線追跡手段は、
前記オブジェクトに対する前記光線の反射成分および透過成分のそれぞれについて、前記発射光線数を設定することを特徴とする請求項5または6に記載の画像処理装置。
【請求項8】
さらに、視覚特性を入力する視覚特性入力手段を有し、
前記色信号値算出手段は、前記各画素に対応する分光放射輝度および前記視覚特性から、当該画素の色信号値を算出することを特徴とする請求項1乃至7のいずれか1項に記載の画像処理装置。
【請求項9】
前記光源特性データは、光源から任意の方向に放射される光の強度分布を示す情報を、前記光源の配光特性として含むことを特徴とする請求項1乃至8のいずれか1項に記載の画像処理装置。
【請求項10】
前記光源特性データは、光源の分光放射輝度を示す情報を前記光源の分光特性として含み、
前記オブジェクト特性データは、オブジェクトの反射特性と透過特性および屈折率を示す情報を前記オブジェクトの分光特性として含むことを特徴とする請求項9に記載の画像処理装置。
【請求項11】
前記オブジェクトの反射特性の情報は、該オブジェクトに対する光線の入射角と反射角に応じた特性を示すことを特徴とする請求項10に記載の画像処理装置。
【請求項12】
前記オブジェクトの透過特性の情報は、該オブジェクトに対する光線の入射角と屈折角に応じた特性を示すことを特徴とする請求項10に記載の画像処理装置。
【請求項13】
光源特性入力手段、オブジェクト特性入力手段、光線追跡手段、および色信号値算出手段、を有し、任意のシーンについてのコンピュータグラフィックス画像を、光線追跡法によって生成する画像処理装置における画像処理方法であって、
前記光源特性入力手段が、光源の分光特性および配光特性を示す光源特性データを入力し、
前記オブジェクト特性入力手段が、前記シーン内におけるオブジェクトの分光特性を示すオブジェクト特性データを入力し、
前記光線追跡手段が、前記光源特性データおよび前記オブジェクト特性データに基づいて、互いに異なる波長の光線ごとに光線追跡を行うことによって、前記シーンにおける各画素に対応する分光放射輝度を算出し、
前記色信号値算出手段が、前記各画素に対応する分光放射輝度から色信号値を算出して前記コンピュータグラフィックス画像を生成する
ことを特徴とする画像処理方法。
【請求項14】
コンピュータ装置で実行されることにより、該コンピュータ装置を請求項1乃至12のいずれか1項に記載の画像処理装置の各手段として機能させるためのプログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【公開番号】特開2013−65100(P2013−65100A)
【公開日】平成25年4月11日(2013.4.11)
【国際特許分類】
【出願番号】特願2011−202333(P2011−202333)
【出願日】平成23年9月15日(2011.9.15)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
【公開日】平成25年4月11日(2013.4.11)
【国際特許分類】
【出願日】平成23年9月15日(2011.9.15)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
[ Back to top ]