画像処理装置およびその制御方法
【課題】 微小凹凸のある表面形状における高低差を考慮した適切なぼかし処理を行うことで、より実写に忠実な表面形状を再現する。
【解決手段】 オブジェクトを表すコンピュータグラフィクスを生成する画像処理装置であって、前記オブジェクトの表面における相対的な高低差を表す高さ情報を取得する第一の取得手段と、前記オブジェクトの光の内部散乱の特性を表す少なくとも一つの散乱関数を取得する第二の取得手段と、前記高さ情報と前記散乱関数とに基づいて、前記オブジェクトの輝度値を算出する算出手段とを備えることを特徴とする。
【解決手段】 オブジェクトを表すコンピュータグラフィクスを生成する画像処理装置であって、前記オブジェクトの表面における相対的な高低差を表す高さ情報を取得する第一の取得手段と、前記オブジェクトの光の内部散乱の特性を表す少なくとも一つの散乱関数を取得する第二の取得手段と、前記高さ情報と前記散乱関数とに基づいて、前記オブジェクトの輝度値を算出する算出手段とを備えることを特徴とする。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は光の内部散乱が伴う物質をCGで表現する技術に関する。
【背景技術】
【0002】
近年、コンピューターグラフィックス(以降、CG)では、金属、ガラスなどは実写と比較しても遜色のないレベルで表現できるようになった。一方で、肌や大理石、牛乳など、光の内部散乱を伴う物質については実写同等の表現は難しい。特に、肌には表面に微小な凹凸があり、CGにおいて実写相当で表現するのは困難である。肌を実写相当で表現するためには、肌から入射した光の内部散乱を再現することと、しわ・毛穴などの微小凹凸を再現することが重要である。内部散乱の再現手法として、特許文献1に開示された方法が知られている。特許文献1では、複数点におけるサンプリングを行い、画素値をBSSRDF関数を用いて積分することによりぼかし処理を行う。また、微小凹凸の再現手法は一般に、表面形状を表すバンプマップを用いた処理がある。通常、肌のCG再現を行う場合は、微小凹凸を再現した後にぼかし処理を実行する。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特表2006−506742号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、微小凹凸を再現した後にぼかし処理を実行すると、ぼかし処理によって微小凹凸が消失するという場合がある。これは、ぼかし処理を実行する際に、微小凹凸のある表面形状において、高低差があることを考慮していないためである。そこで本発明の目的は、微小凹凸のある表面形状における高低差を考慮した適切なぼかし処理により光の内部散乱を再現することにより、より実写に忠実な表面形状の再現することにある。
【課題を解決するための手段】
【0005】
上記課題を解決するために本発明の画像処理装置は、オブジェクトを表すコンピュータグラフィクスを生成する画像処理装置であって、前記オブジェクトの表面における相対的な高低差を表す高さ情報を取得する第一の取得手段と、前記オブジェクトの光の内部散乱の特性を表す少なくとも一つの散乱関数を取得する第二の取得手段と、前記高さ情報と前記散乱関数とに基づいて、前記オブジェクトの輝度値を算出する算出手段とを備えることを特徴とする。
【発明の効果】
【0006】
本発明によれば、微小凹凸のある表面形状における高低差を考慮した適切なぼかし処理を行うことで、より実写に忠実な表面形状の再現することができる。
【図面の簡単な説明】
【0007】
【図1】システム構成図
【図2】レイトレーシングの概要を説明した図
【図3】レイの追跡方法を説明した図
【図4】光の内部散乱について説明した図
【図5】光の内部散乱について説明した図
【図6】バンプマップ法について説明した図
【図7】バンプマップ法について説明した図
【図8】レンダリング処理を示すフローチャート図
【図9】法線マップデータ読み出し処理のフローチャート図
【図10】ぼかし処理を用いた内部散乱の再現方法を示すフローチャート図
【図11】内部散乱における各点の距離算出方法を説明した図
【図12】高さ情報による散乱関数の変化を説明した図
【図13】内部散乱再現処理を示すフローチャート図
【図14】周辺画素のみで内部散乱を再現する手法を示すフローチャート図
【図15】高さ情報を考慮したサンプリング点の設定方法を説明する図
【発明を実施するための形態】
【0008】
以下、添付図面を参照して、本発明を好適な実施形態に従って詳細に説明する。なお、以下の実施形態において示す構成は一例にすぎず、本発明は図示された構成に限定されるものではない。
【0009】
<実施形態1>
図1は、実施形態に適用可能なシステムの構成を示すブロック図である。CG生成装置は、CPU101、メインメモリ102、記憶装置103、入力装置104、表示装置105、バス106を有する。CPU101は、演算処理や各種プログラムの実行を行う。メインメモリ102は、処理に必要なプログラム、データ、作業領域などをCPU101に提供する。記憶装置103は、画像生成プログラムや光源やオブジェクトの特性データを蓄積する装置で、例えばハードディスクが用いられる。尚、光源やオブジェクトの特性データの詳細は後述する。
【0010】
入力装置104は、キーボードやマウスでなどのユーザ操作を入力するための装置である。表示装置105は、CPU101が生成した画像を表示するためのものであり、CRTや液晶画面などにより構成する。バス106は上述の各部をつなぐ通信線である。なお、システム構成については、上記以外にも、様々な構成要素が存在するが、本発明の主眼ではないので、その説明は省略する。
【0011】
図2は、レイトレーシングの概要を示している。図2−aに示すように、レンダリング時は、視点201と視野角204、前方クリップ面202、後方クリップ面203を決定する。視野角204、前方クリップ面202、後方クリップ面203で囲まれた台形領域205をレンダリング領域とする。このレンダリング領域に、レンダリング対象となる各種オブジェクトが設置される。レンダリング領域が決定すると、図2−bのように、視点201から、前方クリップ面202に対し、レイ(光線)を画素ごとに放出する。レンダリング結果を800×600画素で表示したい場合は、前方クリップ面を800×600画素に分割する。
【0012】
放出されたレイの挙動を図3を用いて説明する。視点201から放出されたレイは、前方クリップ面202を通過した後、物体305に衝突する。その後、レイは壁304に衝突し、最終的に光源302に衝突する。このとき、物体305と壁304それぞれの波長λの光に対する反射率をkλ305、kλ304とし、光源302の波長λの分光放射輝度をLλとする。このとき、視点に入る波長λの分光放射輝度、つまり表面反射光の輝度Dは、
D=kλ305×kλ304×Lλ
である。ここで、各物体の波長λの光に対する反射率をkλMとすると、
【0013】
【数1】
【0014】
と表すことができる。式1を用いることにより各画素の波長(成分値)における輝度が算出できる。全て波長に対して式1により分光放射輝度(表面反射光の輝度)を算出し、合計する。対象の物体が内部散乱を伴わないとした場合、得られた全波長における表面反射光の輝度の合計値を、等色関数等を用いてRGB値に変換すると、各画素を表す画素値が算出される。その結果を図3−bに示す。なお、波長λをRGBの各波長に合わせることで、直接RGBの画素値を求めることも可能である。
【0015】
レイトレーシングでは、前方クリップ面における全画素の画素値を算出し、CGを生成する。前述の通り、できるだけ実写に忠実なCGを生成するためには、視点から放出したレイ(光線)が衝突した物体表面の微小凹凸および内部散乱を再現する必要がある。そこで本実施形態では、式1を用いて画素値を算出するのみではなく、微小凹凸の再現と内部散乱の再現を両立した処理を行う。
【0016】
まず、光の内部散乱を再現するための処理について説明する。図4は物体の反射特性について説明した図である。内部散乱する物体404に入射光401が入射した場合を考える。このとき、物体404の表面で反射する反射光402と、物体内に入射し、内部で散乱を起こした後に外部で出ていく内部散乱光403に分離される。物体表面のある点から射出される放射輝度は、ある点において反射した光と、ある点以外の点から入射して光が内部散乱した後にある点を通過して放出される内部散乱光から得られる。つまり、物体表面のある点から射出される全分光放射輝度I(放射輝度)は、表面反射光の輝度Dと、内部散乱光の輝度
【0017】
【数2】
【0018】
を用いて、
【0019】
【数3】
【0020】
と表すことができる。式2は一般に、BSSRDF関数として知られている。
【0021】
図5を用いて式2について詳細に説明する。図5−aにおいて、点P0における放射輝度I0を求める場合を考える。このとき、点P0から射出される光は、点P0における表面反射光の輝度と、他の各点Piから入射した光が内部散乱した後に点P0を通って射出される内部散乱光の輝度を足し合わせたものとなる。点Piからの内部散乱光の輝度SCiは、図5−cが示すように、散乱関数S(ri)と点Piにおける表面反射光の輝度Diとの積を用いて表せる。ここで、riは点P0と点Piとの距離を示す。つまり、点Piにおいて透過した光が内部散乱を経てP0から射出される内部散乱光は、点Piと点P0との距離によって決まる。本来riは3次元上の距離であり、図5−bの式によって表される。
【0022】
また、ri=0の場合、散乱関数S(0)の値は1.0となり、内部散乱光の輝度SCiは、点Piにおける表面反射光の輝度であるDiと等しくなる。このように、式2を用いて各画素の画素値を算出することにより、内部散乱を伴う物体のレンダリングを行うことができる。なお、式2の内部散乱光に関する項は分光の波長ごとに異なる散乱関数を持つ。従って、波長ごとに表面反射光の輝度Dおよび内部散乱光の輝度Sを算出し、全波長における表面反射光の輝度Dと内部散乱光の輝度Sを足し合わせることで、点P0における放射輝度が求められる。
【0023】
次に、微小凹凸を再現するための処理について説明する。図6は微小凹凸を再現するためのバンプマップ法を説明した図である。しわや毛穴などの微小凹凸をポリゴンを用いて再現しようとすると、数億ポリゴンものデータ量が必要になる。そのため、より少ないポリゴン数で微小凹凸を再現する手法が必要となる。そこでバンプマップ法は、ポリゴンの代わりに法線方向を格納したデータ(以降、法線マップ)を用いることで疑似的に微小凹凸を再現する手法である。
【0024】
図6−aに示す通り、平面上では、各点における法線方向はいずれも上方向を向いている。一方図6−bのような斜面を含む場合、斜面上における法線方向は傾いている。図6−cのように、平面上に、斜面が存在する場合の法線を割り当てると、斜面同様に陰影が発生する。このようにして平面ではあるが、法線マップを用いて斜面のように見せかけることができる。
【0025】
さらに図7を用いて詳細に説明する。平面702に対し、光源701が平面702の上方に設置されている。ある点における光源から受ける光の強さ、方向を表すベクトルを光源ベクトルとする。平面702では光源701によって均一に照らされているため、平面702では全ての位置において一様な光源ベクトルを持つ。そこに、法線マップ703を組み入れると、法線方向の傾きによって、レンダリング結果704に陰影が発生する。
【0026】
具体的には、法線マップ703の各法線と光源ベクトルとの内積に基づいて、各点における陰影を求める。このとき、法線マップ703の各画素には、法線ベクトルと高さ情報が記録されている。これにより平面702に凹凸があるように見せかけたレンダリング結果704を得ることができる。以上の平面上にバンプマップ法を用いた陰影を算出するための処理を、陰影処理を呼ぶ。なお、レンダリング領域に複数の光源がある場合、ある地点に与えるそれぞれの光源ベクトルを足し合わせればよい。
【0027】
図8は、本実施形態に適用可能なCG生成処理を説明したフローチャート図である。
【0028】
ステップS801において、レンダリングサイズ(画素数)と前方クリップ面、後方クリップ面を設定する。ここで、レンダリングサイズをN画素とする。
【0029】
ステップS802において、視点データ、光源データ、オブジェクトデータなどのシーンデータを読み込む。具体的には視点データは、視点の位置、視線方向、画角を表すデータである。光源データは、光源の分光的な明るさ情報である分光放射輝度、そして仮想空間上の光源の位置などを表すデータである。
【0030】
光源の分光放射輝度は波長毎の輝度分布であり、光源によって特性が異なる。光源の種類が異なると、分光放射輝度分布も変化する。その結果、物体の色の見えが変化するので、シーンを忠実に再現するために重要である。オブジェクトデータは仮想空間上に配置する物体の数、各物体の位置、形状のほか、波長ごとの反射率、内部散乱関数、法線マップを表すデータである。法線マップの読み込み処理については、別フローチャートを用いて詳細に説明する。
【0031】
ステップS803において、変数iを0に初期化し、画素ごとのレイトレーシング処理を開始する。なお、特に言及しない限り、以降の処理は全ての波長について実行することとする。
【0032】
ステップS804において、式1を用いてi番目の画素Piの表面反射光の輝度Diを算出する。その際、物体表面にステップS802において読み出した光源ベクトルと法線マップに基づいて陰影処理を加えた上で算出する。
【0033】
ステップS805において、Piの周辺にM個のサンプリング点Pi(j)を設定し、各サンプリング点における表面反射光の輝度Di(j)を算出する。その際、物体表面にステップS802において読み出した光源ベクトルと法線マップに基づいて陰影処理を加えた上で算出する。
【0034】
ステップS806において、Piにおける内部散乱光の輝度SCiを算出する。Piにおける内部散乱光の計算については、別フローチャートを用いて詳細に説明する。
【0035】
ステップS807において、画素Piにおける表面反射光の輝度とM個のサンプリング点から入射して画素Piから射出される内部散乱光の輝度を足し合わせて、i番目の画素Piにおける輝度値を算出する。各波長の輝度値から、等色関数等を用いてRGB値に変換すると、画素Piにおける画素値が算出される。
【0036】
ステップS808において、iを1だけ増加させる。ステップS809において、画素数Nとiを比較し、全画素数分のレイトレーシング処理が終了したかを判断する。Yesの場合、全ての処理を終了し、Noの場合、ステップS804に戻り処理を続行する。
【0037】
図9は、ステップS802における法線マップの読み出し処理を説明したフローチャート図である。法線マップは通常、基準となる平面からの高さ方向の距離を格納した高さマップから生成される。本実施形態においても、高さマップから法線マップを生成することで法線マップを読み出す。
【0038】
ステップS901において、高さ情報を格納した高さマップを読みだす。高さ情報とは、ある基準とする平面からの相対的な高さを表した情報である。
【0039】
ステップS902において、高さマップから高さの変化量を算出し、そこから法線マップを生成する。この手法については、書籍などで紹介されており既知であるため、説明を省略する。
【0040】
ステップS903において、生成した法線マップに対し、高さ情報を格納する。これにより、後工程において高さ情報も利用することができる。なお、入力データが高さマップではなく、法線マップであった場合、法線の傾きから高さ情報を算出することができるため、その情報を格納しておく。またここでは、法線マップと高さマップを例として挙げたが、高さ情報が取得可能な情報であれば、何であっても構わない。
【0041】
図10は、ステップS806における内部散乱を再現するための処理を説明したフローチャート図である。
【0042】
ステップS1001において、変数jを0に初期化する。また、画素Piにおける内部散乱光の輝度SCiも0に初期化する。
【0043】
ステップS1002において、Piとj番目のサンプリング点Pi(j)との距離ri(j)を算出する。図15は、高さ情報を考慮したサンプリング点の設定方法を説明する図である。まず、サンプリング点Pi(j)の座標値の設定方法について図15−aを用いて説明する。座標値(xj, zj)は乱数を用いて決定するが、座標値に対し拘束条件を用いる。それは、散乱関数S(r)は、r≧rMAXの範囲でS(rMAX)=0となるため、その領域で点Pi(j)を生成しても無駄になるからである。
【0044】
そのため、図15−bのように点Piを中心とする極座標系を採り、0<ri(j)<rMAX、0≦θ<2πを満たすように乱数ri(j)、θを発生させる。その後、極座標系から(xj, zj)に座標変換することで、点Pi(j)の座標値が設定できる。次に高さ情報を考慮した距離の算出方法について、図11を用いて説明する。図7のレンダリング結果704のように、バンプマップ法を用い陰影処理された平面を考える。このとき、ポリゴンのみを考慮すると、点Piと点Pi(j)は共に同一平面上に存在することになる。そのため、距離ri(j)はx−z軸方向のみで計算され、図11−bが示す式
【0045】
【数4】
【0046】
により距離が算出できる。つまり、点Piと点Pi(j)との高低差は考慮せずに、点Piと点Pi(j)間の距離を求めることになり、乱数ri(j)がそのまま距離となる。しかしながら、ポリゴンのみではなくさらに高さ情報も考慮して距離を算出すると、図11−cに示すように、点Piと点Pi(j)との高低差が生じる。このため、高さ情報を考慮した距離rhi(j)は図11−bの距離ri(j)よりも大きくなる。このとき、距離rhi(j)の計算に必要な高さ情報yjは、図9で生成した法線マップから取得する。法線マップには高さ情報が格納されているため、その値をyjとして利用することができる。
【0047】
図5−cの散乱関数S(r)では、距離ri(j)が小さいほど、散乱光の輝度SCi(j)は大きな値を示す。つまり、距離が小さいほど内部散乱光の影響が大きくなり、レンダリング結果がぼやけてしまう。従って、点Piと点Pi(j)との高低差を考慮せずにポリゴンのみで距離を算出すると、本来の距離よりも小さく算出されることになり、必要以上にぼかし処理をすることになる。これにより、微小凹凸の再現性が低下してしまう。そのため本実施形態では、点Piと点Pi(j)間の距離の算出には、図11−cで示した法線マップも考慮した距離rhi(j)を用いる。なお、各点のy方向の高さ情報が法線マップに含まれない場合、法線ベクトルから高さ情報を算出する。その手法については、一般的な手法として文献等に記載されているため本発明では言及しない。
【0048】
また、高さ情報を考慮した場合、点Pi(j)の座標値(xj, zj)に対する拘束条件も変化する。その概要を図15−cを用いて説明する。高さ情報を考慮する場合、距離は
【0049】
【数5】
【0050】
である。このとき、rhi(j)とri(j)の関係は、
【0051】
【数6】
【0052】
で表せ、rhi(j)の最大値はrMAXであるため、riの範囲は、
【0053】
【数7】
【0054】
となる。yiは、極座標での方向θによって異なるため、ri(j)の範囲は、0<ri(j)<rMAX(θ)と置き換えられ、図15−cのようなグレー領域で表すことができる。このような場合、方向θごとにri(j)の最大値を算出・保持しておくことで、サンプリングを効率的に実施することも可能である。具体的には、処理開始時にはrMAX(θ)=rMAXとしサンプリングを開始する。サンプリング処理で、乱数ri(j)(ri(j)< rMAX(θ))がrMAX(θ)近辺に発生した場合はrhi(j)を算出する。そして、散乱関数S(rhi(j))=0であるならばrMAX(θ)=ri(j)と置き換えて、除々にサンプリング範囲を絞り込んでいく。
【0055】
ステップS1003において、高さ情報を考慮した距離rhi(j)と、サンプリング点Pi(j)における表面反射光の輝度Di(j)とから、内部散乱光の輝度SCi(j)を算出する。
【0056】
ステップS1004において、算出した内部散乱光の輝度SCi(j)を、SCiに足し合わせる。ステップS1005では、jを1だけ増加させる。ステップS1006では、サンプリング数Mとjを比較し、全サンプリング点での処理が終了したかを判断する。Yesの場合、全ての処理を終了し、Noの場合、ステップS1002に戻り処理を続行する。これにより、各サンプリング点から入射し、点Piから射出される内部散乱光の輝度を算出することができる。
【0057】
以上の処理により、バンプマップ法を用いて内部散乱を再現するための処理を実行し、肌の高精度な再現が可能となる。なお、本実施形態では分光を用いた計算手法について記述しているが、RGBやXYZ、Labなどの色空間で実行しても同様の結果を得ることができる。
【0058】
<実施形態2>
前述の実施形態では、法線マップにおける高さ情報に基づいて、内部散乱光の輝度を算出する方法について説明した。実施形態2では、法線マップの高さ情報に応じて複数の散乱関数を切り替えて使用する手法について説明する。
【0059】
図12は法線マップの高さ情報をもとに、散乱関数が変化する様子を示した概要図である。図12(a)が示す散乱関数は、高さ情報であるyが0の場合に用いられる。図12(b)が示す散乱関数は、高さ情報yが10の場合に用いられる。このように高さ情報yが大きくなるにつれ、散乱関数はより小さな値を示すようになる。
【0060】
本実施形態では、高さ情報ごとに散乱関数Sy(r)が複数用意され、点Piにおける高さ情報yに応じて、適時必要な散乱関数を用いることにより、各点から射出される内部散乱光の輝度を算出する。例えば、0≦y≦10の整数のy値に相当する散乱関数を用意する場合、11個の散乱関数が存在することになる。さらに、y=1.5などの実数値を処理する場合は、各整数の散乱関数を補間して利用する。
【0061】
散乱関数を切り替える処理について説明する。図13は実施形態2に適用可能なフローチャートを示す。
【0062】
ステップS1301において、変数jを0に初期化する。また、画素Piにおける内部散乱光の輝度SCiも0に初期化する。
【0063】
ステップS1302では、Piとj番目のサンプリング点Pi(j)の距離ri(j)を算出する。図11−bのように、
【0064】
【数8】
【0065】
の式により距離を算出する。
【0066】
ステップS1303において、法線マップの高さ情報から、参照すべき散乱関数Sy(r)を決定し、距離ri(j)と、各サンプリング点における表面反射光の輝度Di(j)から、SCi(j)を算出する。ステップ1304において、算出した内部散乱光の輝度SCi(j)を、SCiに足し合わせる。
【0067】
ステップS1305において、jを1だけ増加させる。ステップS1306では、サンプリング数Mとjを比較し、全サンプリング点での処理が終了したかを判断する。Yesの場合、全ての処理を終了し、Noの場合、ステップS1302に戻り処理を続行する。これにより、各サンプリング点から入射し、点Piから射出される内部散乱光の輝度を算出することができる。なお、本手法の他にも、距離ri(j)と法線マップの高さ情報に応じて、内部散乱光の輝度を取得可能なデータベース(参照テーブル)を用いる手法であっても、同じ効果を得ることができる。
【0068】
以上の処理により、バンプマップ法によるし微小凹凸の再現をつぶすことなく、内部散乱を再現する処理を実行し、より実写に近いCG生成が可能となる。
【0069】
<実施形態3>
本実施形態では、サンプリング点を用いずに高速に処理する方法について説明する。
【0070】
図14はサンプリング点を用いずに肌再現を行う手法を説明したフローチャート図である。ステップS1401において、注目画素の表面反射光の輝度Dを算出する。ステップS1402において、注目画素の(全分光)放射輝度Iを、式2を用いて算出する。その際、サンプリングは行わず、注目画素の周囲画素を用いて計算を実行する。具体的には、注目画素の各周囲画素の表面反射光の輝度D、微小表面形状を考慮した周囲画素との距離から、内部散乱光の輝度を算出する。周囲画素からの各内部散乱光の輝度を合計して、注目画素の内部散乱光の輝度とする。これを全画素に対し実行する。
【0071】
以上の処理により、計算量が大幅に削減でき、高速に実写に忠実なCGを生成できる。
【0072】
なお、上述した各実施形態は、以下の処理を実行することによっても実現される。即ち、上記実施形態の各工程や機能を実現するソフトウェア(コンピュータプログラム)を、ネットワークや記憶媒体を介してシステムに供給し、そのシステムのコンピュータ(またはCPU等)が上記プログラムを読み込んで実行する処理である。上記コンピュータプログラムや、それを記憶したコンピュータ可読記憶媒体も本発明の範疇に含まれる。
【技術分野】
【0001】
本発明は光の内部散乱が伴う物質をCGで表現する技術に関する。
【背景技術】
【0002】
近年、コンピューターグラフィックス(以降、CG)では、金属、ガラスなどは実写と比較しても遜色のないレベルで表現できるようになった。一方で、肌や大理石、牛乳など、光の内部散乱を伴う物質については実写同等の表現は難しい。特に、肌には表面に微小な凹凸があり、CGにおいて実写相当で表現するのは困難である。肌を実写相当で表現するためには、肌から入射した光の内部散乱を再現することと、しわ・毛穴などの微小凹凸を再現することが重要である。内部散乱の再現手法として、特許文献1に開示された方法が知られている。特許文献1では、複数点におけるサンプリングを行い、画素値をBSSRDF関数を用いて積分することによりぼかし処理を行う。また、微小凹凸の再現手法は一般に、表面形状を表すバンプマップを用いた処理がある。通常、肌のCG再現を行う場合は、微小凹凸を再現した後にぼかし処理を実行する。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特表2006−506742号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、微小凹凸を再現した後にぼかし処理を実行すると、ぼかし処理によって微小凹凸が消失するという場合がある。これは、ぼかし処理を実行する際に、微小凹凸のある表面形状において、高低差があることを考慮していないためである。そこで本発明の目的は、微小凹凸のある表面形状における高低差を考慮した適切なぼかし処理により光の内部散乱を再現することにより、より実写に忠実な表面形状の再現することにある。
【課題を解決するための手段】
【0005】
上記課題を解決するために本発明の画像処理装置は、オブジェクトを表すコンピュータグラフィクスを生成する画像処理装置であって、前記オブジェクトの表面における相対的な高低差を表す高さ情報を取得する第一の取得手段と、前記オブジェクトの光の内部散乱の特性を表す少なくとも一つの散乱関数を取得する第二の取得手段と、前記高さ情報と前記散乱関数とに基づいて、前記オブジェクトの輝度値を算出する算出手段とを備えることを特徴とする。
【発明の効果】
【0006】
本発明によれば、微小凹凸のある表面形状における高低差を考慮した適切なぼかし処理を行うことで、より実写に忠実な表面形状の再現することができる。
【図面の簡単な説明】
【0007】
【図1】システム構成図
【図2】レイトレーシングの概要を説明した図
【図3】レイの追跡方法を説明した図
【図4】光の内部散乱について説明した図
【図5】光の内部散乱について説明した図
【図6】バンプマップ法について説明した図
【図7】バンプマップ法について説明した図
【図8】レンダリング処理を示すフローチャート図
【図9】法線マップデータ読み出し処理のフローチャート図
【図10】ぼかし処理を用いた内部散乱の再現方法を示すフローチャート図
【図11】内部散乱における各点の距離算出方法を説明した図
【図12】高さ情報による散乱関数の変化を説明した図
【図13】内部散乱再現処理を示すフローチャート図
【図14】周辺画素のみで内部散乱を再現する手法を示すフローチャート図
【図15】高さ情報を考慮したサンプリング点の設定方法を説明する図
【発明を実施するための形態】
【0008】
以下、添付図面を参照して、本発明を好適な実施形態に従って詳細に説明する。なお、以下の実施形態において示す構成は一例にすぎず、本発明は図示された構成に限定されるものではない。
【0009】
<実施形態1>
図1は、実施形態に適用可能なシステムの構成を示すブロック図である。CG生成装置は、CPU101、メインメモリ102、記憶装置103、入力装置104、表示装置105、バス106を有する。CPU101は、演算処理や各種プログラムの実行を行う。メインメモリ102は、処理に必要なプログラム、データ、作業領域などをCPU101に提供する。記憶装置103は、画像生成プログラムや光源やオブジェクトの特性データを蓄積する装置で、例えばハードディスクが用いられる。尚、光源やオブジェクトの特性データの詳細は後述する。
【0010】
入力装置104は、キーボードやマウスでなどのユーザ操作を入力するための装置である。表示装置105は、CPU101が生成した画像を表示するためのものであり、CRTや液晶画面などにより構成する。バス106は上述の各部をつなぐ通信線である。なお、システム構成については、上記以外にも、様々な構成要素が存在するが、本発明の主眼ではないので、その説明は省略する。
【0011】
図2は、レイトレーシングの概要を示している。図2−aに示すように、レンダリング時は、視点201と視野角204、前方クリップ面202、後方クリップ面203を決定する。視野角204、前方クリップ面202、後方クリップ面203で囲まれた台形領域205をレンダリング領域とする。このレンダリング領域に、レンダリング対象となる各種オブジェクトが設置される。レンダリング領域が決定すると、図2−bのように、視点201から、前方クリップ面202に対し、レイ(光線)を画素ごとに放出する。レンダリング結果を800×600画素で表示したい場合は、前方クリップ面を800×600画素に分割する。
【0012】
放出されたレイの挙動を図3を用いて説明する。視点201から放出されたレイは、前方クリップ面202を通過した後、物体305に衝突する。その後、レイは壁304に衝突し、最終的に光源302に衝突する。このとき、物体305と壁304それぞれの波長λの光に対する反射率をkλ305、kλ304とし、光源302の波長λの分光放射輝度をLλとする。このとき、視点に入る波長λの分光放射輝度、つまり表面反射光の輝度Dは、
D=kλ305×kλ304×Lλ
である。ここで、各物体の波長λの光に対する反射率をkλMとすると、
【0013】
【数1】
【0014】
と表すことができる。式1を用いることにより各画素の波長(成分値)における輝度が算出できる。全て波長に対して式1により分光放射輝度(表面反射光の輝度)を算出し、合計する。対象の物体が内部散乱を伴わないとした場合、得られた全波長における表面反射光の輝度の合計値を、等色関数等を用いてRGB値に変換すると、各画素を表す画素値が算出される。その結果を図3−bに示す。なお、波長λをRGBの各波長に合わせることで、直接RGBの画素値を求めることも可能である。
【0015】
レイトレーシングでは、前方クリップ面における全画素の画素値を算出し、CGを生成する。前述の通り、できるだけ実写に忠実なCGを生成するためには、視点から放出したレイ(光線)が衝突した物体表面の微小凹凸および内部散乱を再現する必要がある。そこで本実施形態では、式1を用いて画素値を算出するのみではなく、微小凹凸の再現と内部散乱の再現を両立した処理を行う。
【0016】
まず、光の内部散乱を再現するための処理について説明する。図4は物体の反射特性について説明した図である。内部散乱する物体404に入射光401が入射した場合を考える。このとき、物体404の表面で反射する反射光402と、物体内に入射し、内部で散乱を起こした後に外部で出ていく内部散乱光403に分離される。物体表面のある点から射出される放射輝度は、ある点において反射した光と、ある点以外の点から入射して光が内部散乱した後にある点を通過して放出される内部散乱光から得られる。つまり、物体表面のある点から射出される全分光放射輝度I(放射輝度)は、表面反射光の輝度Dと、内部散乱光の輝度
【0017】
【数2】
【0018】
を用いて、
【0019】
【数3】
【0020】
と表すことができる。式2は一般に、BSSRDF関数として知られている。
【0021】
図5を用いて式2について詳細に説明する。図5−aにおいて、点P0における放射輝度I0を求める場合を考える。このとき、点P0から射出される光は、点P0における表面反射光の輝度と、他の各点Piから入射した光が内部散乱した後に点P0を通って射出される内部散乱光の輝度を足し合わせたものとなる。点Piからの内部散乱光の輝度SCiは、図5−cが示すように、散乱関数S(ri)と点Piにおける表面反射光の輝度Diとの積を用いて表せる。ここで、riは点P0と点Piとの距離を示す。つまり、点Piにおいて透過した光が内部散乱を経てP0から射出される内部散乱光は、点Piと点P0との距離によって決まる。本来riは3次元上の距離であり、図5−bの式によって表される。
【0022】
また、ri=0の場合、散乱関数S(0)の値は1.0となり、内部散乱光の輝度SCiは、点Piにおける表面反射光の輝度であるDiと等しくなる。このように、式2を用いて各画素の画素値を算出することにより、内部散乱を伴う物体のレンダリングを行うことができる。なお、式2の内部散乱光に関する項は分光の波長ごとに異なる散乱関数を持つ。従って、波長ごとに表面反射光の輝度Dおよび内部散乱光の輝度Sを算出し、全波長における表面反射光の輝度Dと内部散乱光の輝度Sを足し合わせることで、点P0における放射輝度が求められる。
【0023】
次に、微小凹凸を再現するための処理について説明する。図6は微小凹凸を再現するためのバンプマップ法を説明した図である。しわや毛穴などの微小凹凸をポリゴンを用いて再現しようとすると、数億ポリゴンものデータ量が必要になる。そのため、より少ないポリゴン数で微小凹凸を再現する手法が必要となる。そこでバンプマップ法は、ポリゴンの代わりに法線方向を格納したデータ(以降、法線マップ)を用いることで疑似的に微小凹凸を再現する手法である。
【0024】
図6−aに示す通り、平面上では、各点における法線方向はいずれも上方向を向いている。一方図6−bのような斜面を含む場合、斜面上における法線方向は傾いている。図6−cのように、平面上に、斜面が存在する場合の法線を割り当てると、斜面同様に陰影が発生する。このようにして平面ではあるが、法線マップを用いて斜面のように見せかけることができる。
【0025】
さらに図7を用いて詳細に説明する。平面702に対し、光源701が平面702の上方に設置されている。ある点における光源から受ける光の強さ、方向を表すベクトルを光源ベクトルとする。平面702では光源701によって均一に照らされているため、平面702では全ての位置において一様な光源ベクトルを持つ。そこに、法線マップ703を組み入れると、法線方向の傾きによって、レンダリング結果704に陰影が発生する。
【0026】
具体的には、法線マップ703の各法線と光源ベクトルとの内積に基づいて、各点における陰影を求める。このとき、法線マップ703の各画素には、法線ベクトルと高さ情報が記録されている。これにより平面702に凹凸があるように見せかけたレンダリング結果704を得ることができる。以上の平面上にバンプマップ法を用いた陰影を算出するための処理を、陰影処理を呼ぶ。なお、レンダリング領域に複数の光源がある場合、ある地点に与えるそれぞれの光源ベクトルを足し合わせればよい。
【0027】
図8は、本実施形態に適用可能なCG生成処理を説明したフローチャート図である。
【0028】
ステップS801において、レンダリングサイズ(画素数)と前方クリップ面、後方クリップ面を設定する。ここで、レンダリングサイズをN画素とする。
【0029】
ステップS802において、視点データ、光源データ、オブジェクトデータなどのシーンデータを読み込む。具体的には視点データは、視点の位置、視線方向、画角を表すデータである。光源データは、光源の分光的な明るさ情報である分光放射輝度、そして仮想空間上の光源の位置などを表すデータである。
【0030】
光源の分光放射輝度は波長毎の輝度分布であり、光源によって特性が異なる。光源の種類が異なると、分光放射輝度分布も変化する。その結果、物体の色の見えが変化するので、シーンを忠実に再現するために重要である。オブジェクトデータは仮想空間上に配置する物体の数、各物体の位置、形状のほか、波長ごとの反射率、内部散乱関数、法線マップを表すデータである。法線マップの読み込み処理については、別フローチャートを用いて詳細に説明する。
【0031】
ステップS803において、変数iを0に初期化し、画素ごとのレイトレーシング処理を開始する。なお、特に言及しない限り、以降の処理は全ての波長について実行することとする。
【0032】
ステップS804において、式1を用いてi番目の画素Piの表面反射光の輝度Diを算出する。その際、物体表面にステップS802において読み出した光源ベクトルと法線マップに基づいて陰影処理を加えた上で算出する。
【0033】
ステップS805において、Piの周辺にM個のサンプリング点Pi(j)を設定し、各サンプリング点における表面反射光の輝度Di(j)を算出する。その際、物体表面にステップS802において読み出した光源ベクトルと法線マップに基づいて陰影処理を加えた上で算出する。
【0034】
ステップS806において、Piにおける内部散乱光の輝度SCiを算出する。Piにおける内部散乱光の計算については、別フローチャートを用いて詳細に説明する。
【0035】
ステップS807において、画素Piにおける表面反射光の輝度とM個のサンプリング点から入射して画素Piから射出される内部散乱光の輝度を足し合わせて、i番目の画素Piにおける輝度値を算出する。各波長の輝度値から、等色関数等を用いてRGB値に変換すると、画素Piにおける画素値が算出される。
【0036】
ステップS808において、iを1だけ増加させる。ステップS809において、画素数Nとiを比較し、全画素数分のレイトレーシング処理が終了したかを判断する。Yesの場合、全ての処理を終了し、Noの場合、ステップS804に戻り処理を続行する。
【0037】
図9は、ステップS802における法線マップの読み出し処理を説明したフローチャート図である。法線マップは通常、基準となる平面からの高さ方向の距離を格納した高さマップから生成される。本実施形態においても、高さマップから法線マップを生成することで法線マップを読み出す。
【0038】
ステップS901において、高さ情報を格納した高さマップを読みだす。高さ情報とは、ある基準とする平面からの相対的な高さを表した情報である。
【0039】
ステップS902において、高さマップから高さの変化量を算出し、そこから法線マップを生成する。この手法については、書籍などで紹介されており既知であるため、説明を省略する。
【0040】
ステップS903において、生成した法線マップに対し、高さ情報を格納する。これにより、後工程において高さ情報も利用することができる。なお、入力データが高さマップではなく、法線マップであった場合、法線の傾きから高さ情報を算出することができるため、その情報を格納しておく。またここでは、法線マップと高さマップを例として挙げたが、高さ情報が取得可能な情報であれば、何であっても構わない。
【0041】
図10は、ステップS806における内部散乱を再現するための処理を説明したフローチャート図である。
【0042】
ステップS1001において、変数jを0に初期化する。また、画素Piにおける内部散乱光の輝度SCiも0に初期化する。
【0043】
ステップS1002において、Piとj番目のサンプリング点Pi(j)との距離ri(j)を算出する。図15は、高さ情報を考慮したサンプリング点の設定方法を説明する図である。まず、サンプリング点Pi(j)の座標値の設定方法について図15−aを用いて説明する。座標値(xj, zj)は乱数を用いて決定するが、座標値に対し拘束条件を用いる。それは、散乱関数S(r)は、r≧rMAXの範囲でS(rMAX)=0となるため、その領域で点Pi(j)を生成しても無駄になるからである。
【0044】
そのため、図15−bのように点Piを中心とする極座標系を採り、0<ri(j)<rMAX、0≦θ<2πを満たすように乱数ri(j)、θを発生させる。その後、極座標系から(xj, zj)に座標変換することで、点Pi(j)の座標値が設定できる。次に高さ情報を考慮した距離の算出方法について、図11を用いて説明する。図7のレンダリング結果704のように、バンプマップ法を用い陰影処理された平面を考える。このとき、ポリゴンのみを考慮すると、点Piと点Pi(j)は共に同一平面上に存在することになる。そのため、距離ri(j)はx−z軸方向のみで計算され、図11−bが示す式
【0045】
【数4】
【0046】
により距離が算出できる。つまり、点Piと点Pi(j)との高低差は考慮せずに、点Piと点Pi(j)間の距離を求めることになり、乱数ri(j)がそのまま距離となる。しかしながら、ポリゴンのみではなくさらに高さ情報も考慮して距離を算出すると、図11−cに示すように、点Piと点Pi(j)との高低差が生じる。このため、高さ情報を考慮した距離rhi(j)は図11−bの距離ri(j)よりも大きくなる。このとき、距離rhi(j)の計算に必要な高さ情報yjは、図9で生成した法線マップから取得する。法線マップには高さ情報が格納されているため、その値をyjとして利用することができる。
【0047】
図5−cの散乱関数S(r)では、距離ri(j)が小さいほど、散乱光の輝度SCi(j)は大きな値を示す。つまり、距離が小さいほど内部散乱光の影響が大きくなり、レンダリング結果がぼやけてしまう。従って、点Piと点Pi(j)との高低差を考慮せずにポリゴンのみで距離を算出すると、本来の距離よりも小さく算出されることになり、必要以上にぼかし処理をすることになる。これにより、微小凹凸の再現性が低下してしまう。そのため本実施形態では、点Piと点Pi(j)間の距離の算出には、図11−cで示した法線マップも考慮した距離rhi(j)を用いる。なお、各点のy方向の高さ情報が法線マップに含まれない場合、法線ベクトルから高さ情報を算出する。その手法については、一般的な手法として文献等に記載されているため本発明では言及しない。
【0048】
また、高さ情報を考慮した場合、点Pi(j)の座標値(xj, zj)に対する拘束条件も変化する。その概要を図15−cを用いて説明する。高さ情報を考慮する場合、距離は
【0049】
【数5】
【0050】
である。このとき、rhi(j)とri(j)の関係は、
【0051】
【数6】
【0052】
で表せ、rhi(j)の最大値はrMAXであるため、riの範囲は、
【0053】
【数7】
【0054】
となる。yiは、極座標での方向θによって異なるため、ri(j)の範囲は、0<ri(j)<rMAX(θ)と置き換えられ、図15−cのようなグレー領域で表すことができる。このような場合、方向θごとにri(j)の最大値を算出・保持しておくことで、サンプリングを効率的に実施することも可能である。具体的には、処理開始時にはrMAX(θ)=rMAXとしサンプリングを開始する。サンプリング処理で、乱数ri(j)(ri(j)< rMAX(θ))がrMAX(θ)近辺に発生した場合はrhi(j)を算出する。そして、散乱関数S(rhi(j))=0であるならばrMAX(θ)=ri(j)と置き換えて、除々にサンプリング範囲を絞り込んでいく。
【0055】
ステップS1003において、高さ情報を考慮した距離rhi(j)と、サンプリング点Pi(j)における表面反射光の輝度Di(j)とから、内部散乱光の輝度SCi(j)を算出する。
【0056】
ステップS1004において、算出した内部散乱光の輝度SCi(j)を、SCiに足し合わせる。ステップS1005では、jを1だけ増加させる。ステップS1006では、サンプリング数Mとjを比較し、全サンプリング点での処理が終了したかを判断する。Yesの場合、全ての処理を終了し、Noの場合、ステップS1002に戻り処理を続行する。これにより、各サンプリング点から入射し、点Piから射出される内部散乱光の輝度を算出することができる。
【0057】
以上の処理により、バンプマップ法を用いて内部散乱を再現するための処理を実行し、肌の高精度な再現が可能となる。なお、本実施形態では分光を用いた計算手法について記述しているが、RGBやXYZ、Labなどの色空間で実行しても同様の結果を得ることができる。
【0058】
<実施形態2>
前述の実施形態では、法線マップにおける高さ情報に基づいて、内部散乱光の輝度を算出する方法について説明した。実施形態2では、法線マップの高さ情報に応じて複数の散乱関数を切り替えて使用する手法について説明する。
【0059】
図12は法線マップの高さ情報をもとに、散乱関数が変化する様子を示した概要図である。図12(a)が示す散乱関数は、高さ情報であるyが0の場合に用いられる。図12(b)が示す散乱関数は、高さ情報yが10の場合に用いられる。このように高さ情報yが大きくなるにつれ、散乱関数はより小さな値を示すようになる。
【0060】
本実施形態では、高さ情報ごとに散乱関数Sy(r)が複数用意され、点Piにおける高さ情報yに応じて、適時必要な散乱関数を用いることにより、各点から射出される内部散乱光の輝度を算出する。例えば、0≦y≦10の整数のy値に相当する散乱関数を用意する場合、11個の散乱関数が存在することになる。さらに、y=1.5などの実数値を処理する場合は、各整数の散乱関数を補間して利用する。
【0061】
散乱関数を切り替える処理について説明する。図13は実施形態2に適用可能なフローチャートを示す。
【0062】
ステップS1301において、変数jを0に初期化する。また、画素Piにおける内部散乱光の輝度SCiも0に初期化する。
【0063】
ステップS1302では、Piとj番目のサンプリング点Pi(j)の距離ri(j)を算出する。図11−bのように、
【0064】
【数8】
【0065】
の式により距離を算出する。
【0066】
ステップS1303において、法線マップの高さ情報から、参照すべき散乱関数Sy(r)を決定し、距離ri(j)と、各サンプリング点における表面反射光の輝度Di(j)から、SCi(j)を算出する。ステップ1304において、算出した内部散乱光の輝度SCi(j)を、SCiに足し合わせる。
【0067】
ステップS1305において、jを1だけ増加させる。ステップS1306では、サンプリング数Mとjを比較し、全サンプリング点での処理が終了したかを判断する。Yesの場合、全ての処理を終了し、Noの場合、ステップS1302に戻り処理を続行する。これにより、各サンプリング点から入射し、点Piから射出される内部散乱光の輝度を算出することができる。なお、本手法の他にも、距離ri(j)と法線マップの高さ情報に応じて、内部散乱光の輝度を取得可能なデータベース(参照テーブル)を用いる手法であっても、同じ効果を得ることができる。
【0068】
以上の処理により、バンプマップ法によるし微小凹凸の再現をつぶすことなく、内部散乱を再現する処理を実行し、より実写に近いCG生成が可能となる。
【0069】
<実施形態3>
本実施形態では、サンプリング点を用いずに高速に処理する方法について説明する。
【0070】
図14はサンプリング点を用いずに肌再現を行う手法を説明したフローチャート図である。ステップS1401において、注目画素の表面反射光の輝度Dを算出する。ステップS1402において、注目画素の(全分光)放射輝度Iを、式2を用いて算出する。その際、サンプリングは行わず、注目画素の周囲画素を用いて計算を実行する。具体的には、注目画素の各周囲画素の表面反射光の輝度D、微小表面形状を考慮した周囲画素との距離から、内部散乱光の輝度を算出する。周囲画素からの各内部散乱光の輝度を合計して、注目画素の内部散乱光の輝度とする。これを全画素に対し実行する。
【0071】
以上の処理により、計算量が大幅に削減でき、高速に実写に忠実なCGを生成できる。
【0072】
なお、上述した各実施形態は、以下の処理を実行することによっても実現される。即ち、上記実施形態の各工程や機能を実現するソフトウェア(コンピュータプログラム)を、ネットワークや記憶媒体を介してシステムに供給し、そのシステムのコンピュータ(またはCPU等)が上記プログラムを読み込んで実行する処理である。上記コンピュータプログラムや、それを記憶したコンピュータ可読記憶媒体も本発明の範疇に含まれる。
【特許請求の範囲】
【請求項1】
オブジェクトを表すコンピュータグラフィクスを生成する画像処理装置であって、
前記オブジェクトの表面における相対的な高低差を表す高さ情報を取得する第一の取得手段と、
前記オブジェクトの光の内部散乱の特性を表す少なくとも一つの散乱関数を取得する第二の取得手段と、
前記高さ情報と前記散乱関数とに基づいて、前記オブジェクトの各画素値を算出する算出手段とを備えることを特徴とする画像処理装置。
【請求項2】
前記散乱関数は、注目画素からの距離に応じた内部散乱の特性を表す関数であることを特徴とする請求項1に記載の画像処理装置。
【請求項3】
前記算出手段は、前記注目画素と前記注目画素とは異なるサンプリング点との距離を前記高さ情報に基づいて算出することを特徴とする請求項2に記載された画像処理装置。
【請求項4】
前記算出手段は、前記距離に応じて、前記サンプリング点から入射して前記注目画素から射出する内部散乱光の輝度に基づいて算出することを特徴とする請求項2または3に記載の画像処理装置。
【請求項5】
前記算出手段は、前記距離に応じて前記散乱関数を用いたぼかし処理をすることを特徴とする請求項3または4に記載の画像処理装置。
【請求項6】
前記算出手段は、複数の散乱関数のなかから、前記高さ情報に応じて1つ散乱関数を選択することを特徴とする請求項1から3のいずれか1項に記載の画像処理装置。
【請求項7】
前記サンプリング点は、前記注目画素の近傍であり、複数点抽出することを特徴とする請求項3から6のいずれか1項に記載の画像処理装置。
【請求項8】
前記サンプリング点は、前記注目画素の周囲にあることを特徴とする請求項3から6のいずれか1項に記載の画像処理装置。
【請求項9】
前記サンプリング点は、高さ情報に基づいて算出した所定の領域内で抽出することを特徴とする請求項3から6のいずれか1項に記載の画像処理装置。
【請求項10】
前記所定の領域とは、前記注目画素からの角度毎に算出された前記注目画素からの距離に基づいて決定された領域であることを特徴とするクレーム9に記載の画像処理装置。
【請求項11】
前記高さ情報は、法線が格納されたマップであることを特徴とする請求項1から10のいずれか1項に記載の画像処理装置。
【請求項12】
前記法線マップは、相対的な高低差を表す情報から生成されることを特徴とする請求項1から11のいずれか1項に記載の画像処理装置。
【請求項13】
コンピュータ装置を制御して、請求項1に記載された画像処理装置の各手段として機能させることを特徴とするコンピュータプログラムを記録した記録媒体。
【請求項14】
オブジェクトを表すコンピュータグラフィクスを生成する画像処理方法であって、
第一の取得手段と、第二の取得手段と、算出手段とを有し、
前記第一取得手段は、前記オブジェクトの表面における相対的な高低差を表す高さ情報を取得し、
前記第二の取得手段は、前記オブジェクトの光の内部散乱の特性を表す少なくとも一つの散乱関数を取得し、
前記算出手段は、前記高さ情報と前記散乱関数とに基づいて、前記オブジェクトの各画素値を算出することを特徴とする画像処理方法。
【請求項1】
オブジェクトを表すコンピュータグラフィクスを生成する画像処理装置であって、
前記オブジェクトの表面における相対的な高低差を表す高さ情報を取得する第一の取得手段と、
前記オブジェクトの光の内部散乱の特性を表す少なくとも一つの散乱関数を取得する第二の取得手段と、
前記高さ情報と前記散乱関数とに基づいて、前記オブジェクトの各画素値を算出する算出手段とを備えることを特徴とする画像処理装置。
【請求項2】
前記散乱関数は、注目画素からの距離に応じた内部散乱の特性を表す関数であることを特徴とする請求項1に記載の画像処理装置。
【請求項3】
前記算出手段は、前記注目画素と前記注目画素とは異なるサンプリング点との距離を前記高さ情報に基づいて算出することを特徴とする請求項2に記載された画像処理装置。
【請求項4】
前記算出手段は、前記距離に応じて、前記サンプリング点から入射して前記注目画素から射出する内部散乱光の輝度に基づいて算出することを特徴とする請求項2または3に記載の画像処理装置。
【請求項5】
前記算出手段は、前記距離に応じて前記散乱関数を用いたぼかし処理をすることを特徴とする請求項3または4に記載の画像処理装置。
【請求項6】
前記算出手段は、複数の散乱関数のなかから、前記高さ情報に応じて1つ散乱関数を選択することを特徴とする請求項1から3のいずれか1項に記載の画像処理装置。
【請求項7】
前記サンプリング点は、前記注目画素の近傍であり、複数点抽出することを特徴とする請求項3から6のいずれか1項に記載の画像処理装置。
【請求項8】
前記サンプリング点は、前記注目画素の周囲にあることを特徴とする請求項3から6のいずれか1項に記載の画像処理装置。
【請求項9】
前記サンプリング点は、高さ情報に基づいて算出した所定の領域内で抽出することを特徴とする請求項3から6のいずれか1項に記載の画像処理装置。
【請求項10】
前記所定の領域とは、前記注目画素からの角度毎に算出された前記注目画素からの距離に基づいて決定された領域であることを特徴とするクレーム9に記載の画像処理装置。
【請求項11】
前記高さ情報は、法線が格納されたマップであることを特徴とする請求項1から10のいずれか1項に記載の画像処理装置。
【請求項12】
前記法線マップは、相対的な高低差を表す情報から生成されることを特徴とする請求項1から11のいずれか1項に記載の画像処理装置。
【請求項13】
コンピュータ装置を制御して、請求項1に記載された画像処理装置の各手段として機能させることを特徴とするコンピュータプログラムを記録した記録媒体。
【請求項14】
オブジェクトを表すコンピュータグラフィクスを生成する画像処理方法であって、
第一の取得手段と、第二の取得手段と、算出手段とを有し、
前記第一取得手段は、前記オブジェクトの表面における相対的な高低差を表す高さ情報を取得し、
前記第二の取得手段は、前記オブジェクトの光の内部散乱の特性を表す少なくとも一つの散乱関数を取得し、
前記算出手段は、前記高さ情報と前記散乱関数とに基づいて、前記オブジェクトの各画素値を算出することを特徴とする画像処理方法。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【公開番号】特開2013−54728(P2013−54728A)
【公開日】平成25年3月21日(2013.3.21)
【国際特許分類】
【出願番号】特願2012−144315(P2012−144315)
【出願日】平成24年6月27日(2012.6.27)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
【公開日】平成25年3月21日(2013.3.21)
【国際特許分類】
【出願日】平成24年6月27日(2012.6.27)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
[ Back to top ]