画像処理装置およびその方法
【課題】 仮想3D空間のオブジェクトの画像が表示された表示面を斜め方向から観察する場合の画像のテクスチャの歪みを防ぐ。
【解決手段】 画像を表示する表示面を観察する三次元空間における、表示面の位置情報を取得し(S301)、表示面を観察する観察者の視線情報を取得し(S302)、仮想三次元空間のオブジェクト情報を取得する(S303)。そして、位置情報および視線情報に基づき、画像のレンダリングに必要な座標変換パラメータを算出し(S304)、位置情報および視線情報に基づき、オブジェクト情報が含むテクスチャを変形する(S305)。そして、オブジェクト情報、座標変換パラメータ、および、変形したテクスチャを用いてレンダリング画像を生成し(S306)、レンダリング画像を表示面への表示用に出力する(S307)。
【解決手段】 画像を表示する表示面を観察する三次元空間における、表示面の位置情報を取得し(S301)、表示面を観察する観察者の視線情報を取得し(S302)、仮想三次元空間のオブジェクト情報を取得する(S303)。そして、位置情報および視線情報に基づき、画像のレンダリングに必要な座標変換パラメータを算出し(S304)、位置情報および視線情報に基づき、オブジェクト情報が含むテクスチャを変形する(S305)。そして、オブジェクト情報、座標変換パラメータ、および、変形したテクスチャを用いてレンダリング画像を生成し(S306)、レンダリング画像を表示面への表示用に出力する(S307)。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、コンピュータグラフィクス(CG)により画像を生成する画像処理に関する。
【背景技術】
【0002】
CGにおいて、仮想三次元(3D)空間に配置した仮想カメラの視野範囲に存在するオブジェクトを、仮想カメラの視線方向に垂直なスクリーンに射影して画像を生成し、この画像をディスプレイに表示する。ディスプレイの表示面を正面から観察する観察者は、仮想カメラの位置から仮想3D空間を眺めたシーンを見ることができる。しかし、仮想3D空間のオブジェクトを別の角度から見るために表示面を斜め方向から観察する観察者は、たとえ仮想カメラを観察者の視点位置に合わせて画像を生成し表示したとしても、歪んだ状態のシーン(画像)を見ることになる。
【0003】
表示面を斜め方向から観察した場合も歪みがない画像を生成する技術として、観察者の視点位置に応じて設定したレンダリング領域に基づきレンダリングを行う技術が知られている(例えば特許文献1)。特許文献1の発明は、仮想3D空間において観察者の視点位置から表示面の四頂点へ向かうベクトルを求め、これらベクトルが囲む範囲をレンダリング領域に設定して、観察者の視点位置に応じた画像を生成する。
【0004】
一般にレンダリングは、レンダリング領域に含まれるポリゴンの頂点データをスクリーンへ座標変換する処理(頂点処理)と、座標変換後の頂点データに基づきテクスチャマッピングなどを行い、出力する画素値を決定する処理(ピクセル処理)からなる。テクスチャマッピングは、予め設定された頂点データと、テクスチャ画像上の座標(以後、UV座標と呼ぶ)の対応関係に基づき行われる。スクリーンにおいて頂点の間に位置する画素の色は、観察者と表示面の位置関係に依らず、頂点に対応するUV座標を基準としたテクスチャ画像の線形補間により決定される。そのため、特許文献1の発明が設定するレンダリング領域にテクスチャをもつオブジェクトが存在する場合、生成された画像を斜め方向から観察すると、テクスチャに歪みが生じる。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2001-216532公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
本発明は、仮想3D空間のオブジェクトの画像が表示された表示面を斜め方向から観察する場合の画像のテクスチャの歪みを防ぐことを目的とする。
【課題を解決するための手段】
【0007】
本発明は、前記の目的を達成する一手段として、以下の構成を備える。
【0008】
本発明にかかる画像処理は、画像を表示する表示面を観察する三次元空間における、前記表示面の位置情報を取得し、前記表示面を観察する観察者の視線情報を取得し、仮想三次元空間のオブジェクト情報を取得し、前記位置情報および前記視線情報に基づき、画像のレンダリングに必要な座標変換パラメータを算出し、前記位置情報および前記視線情報に基づき、前記オブジェクト情報が含むテクスチャを変形し、前記オブジェクト情報、前記座標変換パラメータ、および、前記変形したテクスチャを用いてレンダリング画像を生成し、前記レンダリング画像を前記表示面への表示用に出力することを特徴とする。
【発明の効果】
【0009】
本発明によれば、仮想3D空間のオブジェクトの画像が表示された表示面を斜め方向から観察する場合の画像のテクスチャの歪みを防いだ、高品質なレンダリング画像を生成することができる。
【図面の簡単な説明】
【0010】
【図1】実施例の画像処理装置の構成例を説明するブロック図。
【図2】実施例の機能構成の概要を説明するブロック図。
【図3】実施例の画像処理装置における一連の処理の手順を説明するフローチャート。
【図4】表示面の四隅の3D座標、並びに、視点位置ベクトルおよび視線方向ベクトルを説明する図。
【図5】仮想カメラの位置および視線方向ベクトルの例を説明する図。
【図6】仮想カメラの視野サイズの例を説明する図。
【図7】テクスチャの変形を説明する概念図。
【図8】テクスチャの変形処理を説明するフローチャート。
【図9】テクスチャ変形処理の効果を説明する図。
【図10】実施例2におけるテクスチャの変形処理を説明するフローチャート。
【図11】解像度が異なる三つのテクスチャを用いる場合の変形を説明する図。
【発明を実施するための形態】
【0011】
以下、本発明にかかる実施例の画像処理を図面を参照して詳細に説明する。
【実施例1】
【0012】
以下では、オブジェクトの表面、および、表示面と観察者の視点位置の関係に基づき変形したテクスチャを用いて、スクリーンに射影したオブジェクトの各画素の色を決定する画像処理を説明する。この画像処理によれば、観察者の視点位置から表示面を観察した場合にテクスチャに歪みがない画像を生成することができる。
【0013】
[装置の構成]
図1のブロック図により実施例の画像処理装置の構成例を説明する。
【0014】
CPU101は、RAM103をワークメモリとして、ROM102およびハードディスクドライブ(HDD)108に格納されたプログラムを実行し、システムバス104を介して後述する各構成を制御する。これにより、後述する様々な処理が実行される。
【0015】
入力インタフェイス(I/F)105は、キーボードやマウス、ディジタルカメラ、スキャナ、赤外線センサなどの入力デバイス106を接続する、例えばUSBやIEEE1394などのシリアルバスインタフェイスである。CPU101は、入力I/F105を介して、入力デバイス106から各種データを読み込むことが可能である。
【0016】
HDDインタフェイス(I/F)107は、HDD108や光ディスクドライブなどの二次記憶装置を接続する、例えばシリアルATA(SATA)などのインタフェイスである。CPU101は、HDD I/F107を介して、HDD108からデータを読み出し、HDD108にデータを書き込むことが可能である。さらに、CPU101は、HDD108に格納されたデータをRAM103に展開し、同様に、RAM103に展開されたデータをHDD108に保存することが可能である。そしてCPU101は、RAM103に展開したデータをプログラムと見做して実行することができる。
【0017】
出力インタフェイス(I/F)109は、モニタ、プロジェクタやプリンタなどの出力デバイス110を接続する、例えばUSBやIEEE1394などのシリアルバスインタフェイスである。CPU101は、出力I/F109を介して出力デバイス110にデータを送り、表示や記録を実行させることができる。なお、USBやIEEE1394などの双方向通信インタフェイスを利用すれば、入力I/F105と出力I/F109を一つにまとめることができる。
【0018】
[機能構成]
図2のブロック図により実施例の機能構成の概要を説明する。なお、図2に示す機能構成は、CPU101がプログラムを実行して、各構成を制御することにより実現される。
【0019】
表示面情報入力部201は、画像を表示する表示面の位置情報207を入力デバイス106、ROM102またはHDD108などから取得する第一の入力部である。なお、以下では、表示面の位置情報を「表示面情報」と呼ぶ。視線情報入力部202は、観察者の視線情報208を入力デバイス106から取得する第二の入力部である。オブジェクト情報入力部203は、仮想三次元空間のオブジェクトの頂点データやテクスチャからなるオブジェクト情報209をROM102やHDD108などから取得する第三の入力部である。
【0020】
変換パラメータ算出部204は、表示面情報207と視線情報208を用いて、レンダリングに必要な各種の座標変換パラメータ210を算出する。テクスチャ変形部205は、表示面情報207および視線情報208を用いて、オブジェクト情報209に含まれるテクスチャに変形を施し、変形テクスチャ211を生成する。レンダリング部206は、オブジェクト情報209、座標変換パラメータ210および変形テクスチャ211を用いてレンダリングを実行し、表示用のレンダリング画像212を生成する。
【0021】
レンダリング画像212は、出力デバイス110に出力されて、例えばモニタのスクリーン(表示面)に、オブジェクト情報209が表すオブジェクトを視線情報208が表す観察者の視点位置から観察した3D画像が表示される。
【0022】
[画像処理]
図3のフローチャートにより実施例の画像処理装置における一連の処理の手順を説明する。なお、図3に示す処理は、図2に示す機能構成により実現される。
【0023】
表示面情報入力部201は、予め測定されてROM102やHDD108などに格納された、表示面の四隅の三次元座標(以下、3D座標)を含む表示面情報207を取得し、RAM103に格納する(S301)。表示面は、レンダリング画像212が出力デバイス110により実際に表示される面であり、例えばモニタが画像表示するスクリーンや、プロジェクタが画像を投影するスクリーンに相当する。表示面情報207が含む表示面の四隅の3D座標は、表示面を観察する環境(実三次元空間)の適当な位置を原点Oとして測定することにより求めた座標値である。
【0024】
次に、視線情報入力部202は、入力デバイス106から入力される情報に基づき観察者の視線情報208を取得し、取得した視線情報208をRAM103に格納する(S302)。視線情報208は、原点Oから観察者の視点位置に向かう視点位置ベクトルcと、観察者の視線方向を表す視線方向ベクトルeからなる。
【0025】
図4により表示面の四隅の3D座標、並びに、視点位置ベクトルcおよび視線方向ベクトルeを説明する。
【0026】
表示面の四隅の3D座標は、適当な位置に配置された原点Oに対する、出力デバイス110(この例ではモニタ)の表示面の四隅の点S1-S4を表す。表示面情報入力部201は、入力デバイス106を介して入力された表示面の四隅の3D座標を表示面情報207として、例えば出力デバイス110の型番などに関連付けてHDD108に格納することができる。
【0027】
視点位置ベクトルcと視線方向ベクトルeの取得は、例えば、既存のヘッドマウントディスプレイなどで利用される赤外線や電磁波を用いた位置測定装置(入力デバイス106)を利用すればよい。
【0028】
あるいは、画像処理により観察者の瞳の位置を左右それぞれ検出し、原点Oから両瞳の中点の座標に向かうベクトルを視点位置ベクトルc、両瞳を結ぶ線分に垂直かつ表示面に向かうベクトルを視線方向ベクトルeとしてもよい。瞳の位置は、例えば既存の顔検出技術と3D位置推定技術を組み合わせることにより取得可能である。具体的には、位置や光学特性などの撮影パラメータが既知のカメラ(入力デバイス106)を用いて観察者を複数の方向から撮影する。そして、撮影した複数の画像それぞれに顔検出技術を適用して、画像上の瞳の位置を求める。そして、各画像上の瞳の位置の差について、カメラの撮影パラメータを用いて三角測量の原理を適用すれば、瞳の3D座標を取得することができる。
【0029】
次に、オブジェクト情報入力部203は、仮想3D空間のオブジェクトに関する頂点データやテクスチャ情報などのオブジェクト情報209をROM102やHDD108などから取得する(S303)。勿論、入力I/F105を介して外部の記憶装置から取得してもよい。オブジェクト情報209は、オブジェクトの反射特性などを記述したマテリアル情報や仮想3D空間における光源情報も含む。
【0030】
次に、変換パラメータ算出部204は、表示面情報207と視線情報208に基づき、レンダリング時の頂点処理に用いる各種の座標変換パラメータ210を算出し、RAM103に格納する(S304)。頂点処理で行われる座標変換にはビュー変換と射影変換がある。オブジェクトの頂点座標は、ビュー変換により仮想3D空間(原点O)上の値から、仮想カメラの位置を原点とするビュー座標系に変換される。そして、ビュー座標系で表される頂点座標は、射影変換によりスクリーン面Scr上の座標である射影座標系に変換される。従って、座標変換パラメータ210には、ビュー変換に関する後述するビュー変換行列Mv、および、射影変換に関する後述する射影変換係数α、βが含まれる。
【0031】
次に、テクスチャ変形部205は、詳細は後述するが、表示面情報207と視線情報208を用いて、オブジェクト情報209が含むテクスチャを変形する(S305)。
【0032】
次に、レンダリング部206は、オブジェクト情報209、座標変換パラメータ210および変形テクスチャ211を用いてレンダリングを実行する(S306)。具体的には、ビュー変換行列Mvと射影変換係数α、βを用いて頂点処理を行い、オブジェクトをスクリーン面Scrに射影する。そして、変形テクスチャ211を用いて、スクリーン面Scrにおいてテクスチャマッピングなどのピクセル処理を行う。その際、スクリーン面Scrに射影されたオブジェクトの頂点P'n(n=1, 2, 3, 4)には、変形テクスチャ211上の点T'n(詳細は後述)を対応付ける。
【0033】
次に、レンダリング部206は、スクリーン面Scrに射影した画像から表示面の四隅Sn(n=1, 2, 3, 4)で囲まれる領域を切り出し、切り出した領域を表示用のレンダリング画像212として出力デバイス110に出力する(S307)。
【0034】
●ビュー変換行列
ビュー変換は、式(1)に示す行列計算により、仮想3D空間上の座標(xw, yw, zww)をビュー座標(xv, yv, zv)に変換する。
┌ ┐ ┌ ┐
│xv│ │xw│
│yv│= Mv│yw│ …(1)
│zv│ │zw│
│1 │ │1 │
└ ┘ └ ┘
ここで、Mvはビュー変換行列(式(2))。
┌ ┐
│chx chy chz -C・ch│
Mv =│cvx cvy cvz -C・cv│ …(2)
│e'x e'y e'z -C・e'│
│ 0 0 0 1 │
└ ┘
ここで、e'=(ex ey ez)Tは仮想カメラの視線方向を表す単位ベクトル、
ch=(chx chy chz)Tは仮想カメラの横方向を表す単位ベクトル、
cv=(cvx cvy cvz)Tは仮想カメラの上方向を表す単位ベクトル。
Cは仮想カメラの位置ベクトル、
上方向Upは仮想3D空間における地面の鉛直方向。
【0035】
仮想カメラを観察者の視点位置に合わせてレンダリングを行う場合、仮想カメラの位置Cを観察者の視点位置に一致させる。また、観察者の視線方向ベクトルeがスクリーン面Scrに対して垂直であることを前提に、仮想カメラの視線方向ベクトルe'を観察者の視線方向ベクトルeに一致させる。しかし、本実施例において、観察者の視線方向ベクトルeは、スクリーン面Scrに対して斜めである。
【0036】
そこで、図5により仮想カメラの位置Cおよび視線方向ベクトルe'の例を説明するように、仮想カメラの位置Cは観察者の視点位置に一致させるが、仮想カメラの視線方向ベクトルe'は、観察者の視点位置を通るスクリーン面Scrに垂直なベクトルとする。
【0037】
以上の条件の下、式(2)により算出されるビュー変換行列Mvが、本実施例のビュー変換における座標変換パラメータの一つである。
【0038】
●射影変換係数
射影変換は、式(3)により、ビュー座標(xv, yv, zv)を射影座標(xp, yp)に変換する。
xp = α・xv/zv
yp = β・yv/zv …(3)
ここで、α、βは射影変換係数(式(4))。
α = 2d/H
β = 2d/W …(4)
ここで、dは仮想カメラの位置Cからスクリーン平面Scrまでの距離、
W、Hは仮想カメラの視野サイズ。
【0039】
一般に、仮想カメラが表示面の正面にある、つまり仮想カメラの視線方向ベクトルe'を延長すると表示面の中心に垂直に交わる場合、仮想カメラの視野サイズW、Hは表示面の幅と高さに合わせて設定される。しかし、本実施例における仮想カメラは、表示面の正面にあるとは限らない。そこで、仮想カメラの視野サイズW、Hをスクリーン面Scr上において表示面を内包するような値に設定する。
【0040】
具体的には、図6により仮想カメラの視野サイズW、Hの例を説明するように、表示面の四隅のうち、仮想カメラからxv軸方向およびyv軸方向の距離が最大の点(図6においてはS1)を抽出する。そして、例えば点S1と、仮想カメラの視線方向ベクトルe'の延長線がスクリーン面Scrに垂直に交わる点の距離を取得する。そして、取得した水平距離W/2、垂直距離H/2の二倍を視野サイズW、Hにする。
【0041】
以上の条件の下、式(4)により算出される射影変換係数α、βが、本実施例の射影変換における座標変換パラメータの一つである。
【0042】
●テクスチャの変形(S305)
図7の概念図によりテクスチャの変形を説明する。また、図8のフローチャートによりテクスチャの変形処理を説明する。
【0043】
図7に示すように、観察者の視線方向ベクトルeと、仮想カメラの視線方向ベクトルe'がなす角がy軸を中心にθであり、視線方向ベクトルeに垂直な平面とオブジェクト表面Objがなす角がy軸を中心にφであるとする。
【0044】
観察者の視点位置から表示面を観察する際に歪みがないテクスチャを表示するには、図7におけるスクリーン面Scr上の点Q'に、図7におけるオブジェクト表面Obj上の点Qの色を出力すればよい。そこで、テクスチャ変形部205は、オブジェクトの頂点Pn(n=1, 2, 3, 4)に対応するテクスチャ上の点TnのUV座標(u, v)から、変形後のテクスチャの点T'nのUV座標(u', v')を式(5)によって算出する(S601)。
u' = L2u・cosφ/{L1・cosθ + u・sin(θ+φ)}
v' = L2v・cosφ/{L1・cosθ + u・sin(θ+φ)} …(5)
ここで、L1は仮想カメラの位置Cからオブジェクト表面Objまでの観察者の視線方向の距離、
L2は仮想カメラの位置Cからスクリーン平面Scrまでの観察者の視線方向の距離。
【0045】
次に、テクスチャ変形部205は、UV座標を算出した点T'1、T'2、T'3、T'4が囲む領域の画素について、式(6)を用いて変形後の座標(u', v')に対応する変形前の座標(u, v)を算出する(S602)。そして、変形前のテクスチャの点Q(u, v)の画素値を、変形後のテクスチャの点Q'(u', v')の画素値としてRAM103に格納する(S603)。
u = L1u'・cosθ/{L2・cosφ - u'・sin(θ+φ)}
v = L1v'・cosθ/{L2・cosφ - u'・sin(θ+φ)} …(6)
ここで、式(6)は式(5)の逆変換。
【0046】
なお、ステップS602で算出した座標(u, v)が整数値にならない場合、ステップS603において座標(u, v)周辺の画素から補間演算により点Q(u, v)の画素値を求めて、それを点Q'(u', v')の画素値にすればよい。
【0047】
次に、テクスチャ変形部205は、点T'1、T'2、T'3、T'4が囲む領域の画素について画素値を求めたか否かを判定し(S604)、未了であれば処理をステップS602に戻し、完了であればテクスチャの変形処理を終了する。なお、変形後のテクスチャの点Q'(u', v')の画素値は、変形テクスチャ211としてRAM103に格納される。なお、変形テクスチャ211のデータ量が大きい場合は、RAM103の代わりにHDD108に変形テクスチャ211を格納してもよい。
【0048】
図9によりテクスチャ変形処理の効果を説明する。図9(a)に示すテクスチャを、図5に示す点Pn(n=1, 2, 3, 4)を頂点とする、観察者の視線ベクトルeが示す方向に垂直なオブジェクト表面にマッピングする場合を考える。このとき観察者の視点位置から表示面を観察した場合、図9(f)に示すように、オブジェクト表面のテクスチャに歪みがないことが期待される。
【0049】
図9(b)は、テクスチャに変形処理を施さずにマッピングを行った場合のスクリーン面Scrにおけるマッピング後のオブジェクト表面を示す。また、図9(c)は、図9(b)を観察者の視点位置から観察した場合の見えを示す。
【0050】
図9(d)は変形処理を施したテクスチャを示す。図9(e)は、変形テクスチャをマッピングした場合のスクリーン面Scrにおけるマッピング後のオブジェクト表面を示す。また、図9(f)は、図9(e)を観察者の視点位置から観察した場合の見えを示す。
【0051】
上述したように、テクスチャマッピング後の画素の色は、頂点に対応するUV座標を基準としたテクスチャの線形補間により決定される。そのため、図9(b)からもわかるように、テクスチャはスクリーン面Scr上においてオブジェクトの形状に合わせて各部が均等に拡大縮小される。その結果、図9(a)に示すテクスチャをそのままマッピングしたオブジェクト表面を観察者の視点位置から観察すると、図9(c)に示すようにテクスチャが歪んで見える。一方、図9(d)に示す変形テクスチャをマッピングしたオブジェクト表面を観察者の視点位置から観察すると、図9(f)に示すようにテクスチャに歪みがない所望の結果が得られる。
【0052】
このように、オブジェクトの表面、および、表示面と観察者の視点位置の関係に基づきテクスチャを変形し、スクリーンに射影したオブジェクトの各画素の色を決定する。これにより、観察者の視点位置から表示面を観察した場合にテクスチャに歪みがない画像を生成することができる。
【実施例2】
【0053】
以下、本発明にかかる実施例2の画像処理を説明する。なお、実施例2において、実施例1と略同様の構成については、同一符号を付して、その詳細説明を省略する。
【0054】
実施例1では、テクスチャの変形前後におけるUV座標の対応に基づき、テクスチャから変形テクスチャの画素値を一画素ずつ決定する方法を説明した。実施例2においては、テクスチャをメッシュで分割し、メッシュ形状を一般的なリサンプリング処理により変形して変形テクスチャを生成する方法を説明する。また、変形テクスチャを生成する際に、解像度が異なる複数のテクスチャの中から適切な解像度のテクスチャを選択してリサンプリング処理を適用する。
【0055】
図3のフローチャートにより実施例2の画像処理装置における一連の処理の手順を説明する。ステップS301からS304、S306の処理は、実施例1と同一であり、詳細説明を省略する。ただし、ステップS303おいて取得するオブジェクト情報209には、複数のテクスチャITi(i=1, 2, …, N)を含み、それらテクスチャはそれぞれ解像度が異なるが、どのテクスチャもUV座標は0から1の間に正規化されている。
【0056】
次に、テクスチャ変形部205は、表示面情報207、視線情報208、および、オブジェクト情報209が含む複数のテクスチャ画像ITiを用いて変形テクスチャを生成する(S305)。
【0057】
図10のフローチャートにより実施例2におけるテクスチャの変形処理を説明する。
【0058】
テクスチャ変形部205は、オブジェクトの頂点Pn(n=1, 2, 3, 4)に対応するテクスチャ上の点TnのUV座標(u, v)から、変形後のテクスチャの点T'nのUV座標(u', v')を式(5)によって算出する(S1601)。なお、この処理はステップS601の処理と同様である。
【0059】
次に、テクスチャ変形部205は、各テクスチャITiをメッシュで分割して、複数の領域Rに対応する部分画像にする(S1602)。分割数は、テクスチャをマッピングするオブジェクト表面の、スクリーン面Scr上における面積や、CPU101の処理能力などを考慮して予め定めておく。あるいは、観察者の視線ベクトルeが示す視線方向と表示面がなす角度(以下、視線角)が狭い(斜めである)ほど、テクスチャをそのままマッピングすれば生じる歪みが大きくなる。この点を考慮して、視線角の大きさに応じて分割数を決定してもよい。なお、メッシュの頂点MのUV座標、および、メッシュで区切られた領域Rの形状は、各テクスチャITiにおいて同一になる。
【0060】
次に、テクスチャ変形部205は、メッシュの頂点MのUV座標(u, v)から、式(5)により、変形後のテクスチャにおけるメッシュの頂点M'のUV座標(u', v')を算出する(S1603)。
【0061】
次に、テクスチャ変形部205は、変形前の領域Rごとに、複数のテクスチャITiの中から、実際に変形するテクスチャを一つ選択する(S1604)。具体的には、領域Rの幅方向(y方向)の平均画素数kiと、変形後の領域R'に関するスクリーン面Scr上における幅方向の平均画素数k'の差が最も小さいテクスチャITiを選択する。なお、テクスチャの選択は、領域の大きさを表す値であれば、領域R、R'の幅方向の平均画素数以外の他の指標を用いてもよい。例えば、領域R、R'の縦方向の最大(または最小)画素数や、領域の総画素数などを指標として利用可能である。
【0062】
次に、テクスチャ変形部205は、選択したテクスチャから領域Rの部分画像IRを切り出す。そして、部分画像IRの形状が変形後の領域R'の形状に一致するように、部分画像IRを拡大縮小する(S1605)。つまり、拡大縮小後の部分画像IRが変形後の領域R'の部分画像I'Rである。部分画像の拡大縮小には、ニアレストネイバー法、バイリニア法、バイキュービック法など、一般的な画像リサンプリング法を利用すればよい。
【0063】
図11により解像度が異なる三つのテクスチャを用いる場合の変形を説明する。図11は、各テクスチャを縦方向と横方向にそれぞれ二分割する例であり、白色および灰色の丸印が変形前後のメッシュの頂点MおよびM'を表す。
【0064】
図11において、変形後のテクスチャI'における領域R'の幅k'と、変形前のテクスチャITi(i=1, 2, 3)における領域Rの幅k1、k2、k3を比較する。図11の例では、k2とk'の差が最も小さい。従って、図11の例では、テクスチャ画像IT2の領域Rを部分画像IRとして切り出し、領域R'の形状と一致するように部分画像IRの形状を変形する。
【0065】
次に、テクスチャ変形部205は、変形後の領域R'すべての部分画像I'Rをつなぎ合わせて、変形後のテクスチャI'とする(S1606)。なお、オブジェクトの頂点に対応する、変形テクスチャの点T'nのUV座標、および、変形後のテクスチャは、変形テクスチャ211としてRAM103に格納される。なお、変形テクスチャ211のデータ量が大きい場合は、RAM103の代わりにHDD108に変形テクスチャ211を格納してもよい。
【0066】
このように、実施例2のテクスチャの変形処理によれば、メッシュの頂点Mについてのみテクスチャの変形前後のUV座標の対応を算出する。従って、一画素ごとに変形前後のUV座標の対応を算出する場合に比べ、処理負荷を軽減することができる。さらに、解像度が異なる複数のテクスチャITiを用いることで、変形テクスチャについて暈けやモアレといった画質劣化を抑制することができる。
【0067】
[変形例]
上記では、表示面の形状を矩形としてレンダリング画像を生成する例を説明したが、表示面が他の形状を呈する場合にも、本発明は適用可能である。その場合、例えば表示面を内包する矩形を仮定し、その四隅の座標と表示面の形状を表示面情報207としてステップS301からS305の処理を行う。そして、ステップS305で生成されるレンダリング画像212から表示面の形状に合った領域を切り出し、切り出した領域を出力する。
【0068】
また、上記ではCPU101が演算処理を行う例を説明したが、CPU101がグラフィック演算ユニット(GPU)などを制御して、上記の演算処理を実行させるようにすれば、演算処理を高速化し、同様の効果を得ることができる。
【0069】
[その他の実施例]
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステムあるいは装置のコンピュータ(又はCPUやMPU等)がプログラムを読み出して実行する処理である。
【技術分野】
【0001】
本発明は、コンピュータグラフィクス(CG)により画像を生成する画像処理に関する。
【背景技術】
【0002】
CGにおいて、仮想三次元(3D)空間に配置した仮想カメラの視野範囲に存在するオブジェクトを、仮想カメラの視線方向に垂直なスクリーンに射影して画像を生成し、この画像をディスプレイに表示する。ディスプレイの表示面を正面から観察する観察者は、仮想カメラの位置から仮想3D空間を眺めたシーンを見ることができる。しかし、仮想3D空間のオブジェクトを別の角度から見るために表示面を斜め方向から観察する観察者は、たとえ仮想カメラを観察者の視点位置に合わせて画像を生成し表示したとしても、歪んだ状態のシーン(画像)を見ることになる。
【0003】
表示面を斜め方向から観察した場合も歪みがない画像を生成する技術として、観察者の視点位置に応じて設定したレンダリング領域に基づきレンダリングを行う技術が知られている(例えば特許文献1)。特許文献1の発明は、仮想3D空間において観察者の視点位置から表示面の四頂点へ向かうベクトルを求め、これらベクトルが囲む範囲をレンダリング領域に設定して、観察者の視点位置に応じた画像を生成する。
【0004】
一般にレンダリングは、レンダリング領域に含まれるポリゴンの頂点データをスクリーンへ座標変換する処理(頂点処理)と、座標変換後の頂点データに基づきテクスチャマッピングなどを行い、出力する画素値を決定する処理(ピクセル処理)からなる。テクスチャマッピングは、予め設定された頂点データと、テクスチャ画像上の座標(以後、UV座標と呼ぶ)の対応関係に基づき行われる。スクリーンにおいて頂点の間に位置する画素の色は、観察者と表示面の位置関係に依らず、頂点に対応するUV座標を基準としたテクスチャ画像の線形補間により決定される。そのため、特許文献1の発明が設定するレンダリング領域にテクスチャをもつオブジェクトが存在する場合、生成された画像を斜め方向から観察すると、テクスチャに歪みが生じる。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2001-216532公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
本発明は、仮想3D空間のオブジェクトの画像が表示された表示面を斜め方向から観察する場合の画像のテクスチャの歪みを防ぐことを目的とする。
【課題を解決するための手段】
【0007】
本発明は、前記の目的を達成する一手段として、以下の構成を備える。
【0008】
本発明にかかる画像処理は、画像を表示する表示面を観察する三次元空間における、前記表示面の位置情報を取得し、前記表示面を観察する観察者の視線情報を取得し、仮想三次元空間のオブジェクト情報を取得し、前記位置情報および前記視線情報に基づき、画像のレンダリングに必要な座標変換パラメータを算出し、前記位置情報および前記視線情報に基づき、前記オブジェクト情報が含むテクスチャを変形し、前記オブジェクト情報、前記座標変換パラメータ、および、前記変形したテクスチャを用いてレンダリング画像を生成し、前記レンダリング画像を前記表示面への表示用に出力することを特徴とする。
【発明の効果】
【0009】
本発明によれば、仮想3D空間のオブジェクトの画像が表示された表示面を斜め方向から観察する場合の画像のテクスチャの歪みを防いだ、高品質なレンダリング画像を生成することができる。
【図面の簡単な説明】
【0010】
【図1】実施例の画像処理装置の構成例を説明するブロック図。
【図2】実施例の機能構成の概要を説明するブロック図。
【図3】実施例の画像処理装置における一連の処理の手順を説明するフローチャート。
【図4】表示面の四隅の3D座標、並びに、視点位置ベクトルおよび視線方向ベクトルを説明する図。
【図5】仮想カメラの位置および視線方向ベクトルの例を説明する図。
【図6】仮想カメラの視野サイズの例を説明する図。
【図7】テクスチャの変形を説明する概念図。
【図8】テクスチャの変形処理を説明するフローチャート。
【図9】テクスチャ変形処理の効果を説明する図。
【図10】実施例2におけるテクスチャの変形処理を説明するフローチャート。
【図11】解像度が異なる三つのテクスチャを用いる場合の変形を説明する図。
【発明を実施するための形態】
【0011】
以下、本発明にかかる実施例の画像処理を図面を参照して詳細に説明する。
【実施例1】
【0012】
以下では、オブジェクトの表面、および、表示面と観察者の視点位置の関係に基づき変形したテクスチャを用いて、スクリーンに射影したオブジェクトの各画素の色を決定する画像処理を説明する。この画像処理によれば、観察者の視点位置から表示面を観察した場合にテクスチャに歪みがない画像を生成することができる。
【0013】
[装置の構成]
図1のブロック図により実施例の画像処理装置の構成例を説明する。
【0014】
CPU101は、RAM103をワークメモリとして、ROM102およびハードディスクドライブ(HDD)108に格納されたプログラムを実行し、システムバス104を介して後述する各構成を制御する。これにより、後述する様々な処理が実行される。
【0015】
入力インタフェイス(I/F)105は、キーボードやマウス、ディジタルカメラ、スキャナ、赤外線センサなどの入力デバイス106を接続する、例えばUSBやIEEE1394などのシリアルバスインタフェイスである。CPU101は、入力I/F105を介して、入力デバイス106から各種データを読み込むことが可能である。
【0016】
HDDインタフェイス(I/F)107は、HDD108や光ディスクドライブなどの二次記憶装置を接続する、例えばシリアルATA(SATA)などのインタフェイスである。CPU101は、HDD I/F107を介して、HDD108からデータを読み出し、HDD108にデータを書き込むことが可能である。さらに、CPU101は、HDD108に格納されたデータをRAM103に展開し、同様に、RAM103に展開されたデータをHDD108に保存することが可能である。そしてCPU101は、RAM103に展開したデータをプログラムと見做して実行することができる。
【0017】
出力インタフェイス(I/F)109は、モニタ、プロジェクタやプリンタなどの出力デバイス110を接続する、例えばUSBやIEEE1394などのシリアルバスインタフェイスである。CPU101は、出力I/F109を介して出力デバイス110にデータを送り、表示や記録を実行させることができる。なお、USBやIEEE1394などの双方向通信インタフェイスを利用すれば、入力I/F105と出力I/F109を一つにまとめることができる。
【0018】
[機能構成]
図2のブロック図により実施例の機能構成の概要を説明する。なお、図2に示す機能構成は、CPU101がプログラムを実行して、各構成を制御することにより実現される。
【0019】
表示面情報入力部201は、画像を表示する表示面の位置情報207を入力デバイス106、ROM102またはHDD108などから取得する第一の入力部である。なお、以下では、表示面の位置情報を「表示面情報」と呼ぶ。視線情報入力部202は、観察者の視線情報208を入力デバイス106から取得する第二の入力部である。オブジェクト情報入力部203は、仮想三次元空間のオブジェクトの頂点データやテクスチャからなるオブジェクト情報209をROM102やHDD108などから取得する第三の入力部である。
【0020】
変換パラメータ算出部204は、表示面情報207と視線情報208を用いて、レンダリングに必要な各種の座標変換パラメータ210を算出する。テクスチャ変形部205は、表示面情報207および視線情報208を用いて、オブジェクト情報209に含まれるテクスチャに変形を施し、変形テクスチャ211を生成する。レンダリング部206は、オブジェクト情報209、座標変換パラメータ210および変形テクスチャ211を用いてレンダリングを実行し、表示用のレンダリング画像212を生成する。
【0021】
レンダリング画像212は、出力デバイス110に出力されて、例えばモニタのスクリーン(表示面)に、オブジェクト情報209が表すオブジェクトを視線情報208が表す観察者の視点位置から観察した3D画像が表示される。
【0022】
[画像処理]
図3のフローチャートにより実施例の画像処理装置における一連の処理の手順を説明する。なお、図3に示す処理は、図2に示す機能構成により実現される。
【0023】
表示面情報入力部201は、予め測定されてROM102やHDD108などに格納された、表示面の四隅の三次元座標(以下、3D座標)を含む表示面情報207を取得し、RAM103に格納する(S301)。表示面は、レンダリング画像212が出力デバイス110により実際に表示される面であり、例えばモニタが画像表示するスクリーンや、プロジェクタが画像を投影するスクリーンに相当する。表示面情報207が含む表示面の四隅の3D座標は、表示面を観察する環境(実三次元空間)の適当な位置を原点Oとして測定することにより求めた座標値である。
【0024】
次に、視線情報入力部202は、入力デバイス106から入力される情報に基づき観察者の視線情報208を取得し、取得した視線情報208をRAM103に格納する(S302)。視線情報208は、原点Oから観察者の視点位置に向かう視点位置ベクトルcと、観察者の視線方向を表す視線方向ベクトルeからなる。
【0025】
図4により表示面の四隅の3D座標、並びに、視点位置ベクトルcおよび視線方向ベクトルeを説明する。
【0026】
表示面の四隅の3D座標は、適当な位置に配置された原点Oに対する、出力デバイス110(この例ではモニタ)の表示面の四隅の点S1-S4を表す。表示面情報入力部201は、入力デバイス106を介して入力された表示面の四隅の3D座標を表示面情報207として、例えば出力デバイス110の型番などに関連付けてHDD108に格納することができる。
【0027】
視点位置ベクトルcと視線方向ベクトルeの取得は、例えば、既存のヘッドマウントディスプレイなどで利用される赤外線や電磁波を用いた位置測定装置(入力デバイス106)を利用すればよい。
【0028】
あるいは、画像処理により観察者の瞳の位置を左右それぞれ検出し、原点Oから両瞳の中点の座標に向かうベクトルを視点位置ベクトルc、両瞳を結ぶ線分に垂直かつ表示面に向かうベクトルを視線方向ベクトルeとしてもよい。瞳の位置は、例えば既存の顔検出技術と3D位置推定技術を組み合わせることにより取得可能である。具体的には、位置や光学特性などの撮影パラメータが既知のカメラ(入力デバイス106)を用いて観察者を複数の方向から撮影する。そして、撮影した複数の画像それぞれに顔検出技術を適用して、画像上の瞳の位置を求める。そして、各画像上の瞳の位置の差について、カメラの撮影パラメータを用いて三角測量の原理を適用すれば、瞳の3D座標を取得することができる。
【0029】
次に、オブジェクト情報入力部203は、仮想3D空間のオブジェクトに関する頂点データやテクスチャ情報などのオブジェクト情報209をROM102やHDD108などから取得する(S303)。勿論、入力I/F105を介して外部の記憶装置から取得してもよい。オブジェクト情報209は、オブジェクトの反射特性などを記述したマテリアル情報や仮想3D空間における光源情報も含む。
【0030】
次に、変換パラメータ算出部204は、表示面情報207と視線情報208に基づき、レンダリング時の頂点処理に用いる各種の座標変換パラメータ210を算出し、RAM103に格納する(S304)。頂点処理で行われる座標変換にはビュー変換と射影変換がある。オブジェクトの頂点座標は、ビュー変換により仮想3D空間(原点O)上の値から、仮想カメラの位置を原点とするビュー座標系に変換される。そして、ビュー座標系で表される頂点座標は、射影変換によりスクリーン面Scr上の座標である射影座標系に変換される。従って、座標変換パラメータ210には、ビュー変換に関する後述するビュー変換行列Mv、および、射影変換に関する後述する射影変換係数α、βが含まれる。
【0031】
次に、テクスチャ変形部205は、詳細は後述するが、表示面情報207と視線情報208を用いて、オブジェクト情報209が含むテクスチャを変形する(S305)。
【0032】
次に、レンダリング部206は、オブジェクト情報209、座標変換パラメータ210および変形テクスチャ211を用いてレンダリングを実行する(S306)。具体的には、ビュー変換行列Mvと射影変換係数α、βを用いて頂点処理を行い、オブジェクトをスクリーン面Scrに射影する。そして、変形テクスチャ211を用いて、スクリーン面Scrにおいてテクスチャマッピングなどのピクセル処理を行う。その際、スクリーン面Scrに射影されたオブジェクトの頂点P'n(n=1, 2, 3, 4)には、変形テクスチャ211上の点T'n(詳細は後述)を対応付ける。
【0033】
次に、レンダリング部206は、スクリーン面Scrに射影した画像から表示面の四隅Sn(n=1, 2, 3, 4)で囲まれる領域を切り出し、切り出した領域を表示用のレンダリング画像212として出力デバイス110に出力する(S307)。
【0034】
●ビュー変換行列
ビュー変換は、式(1)に示す行列計算により、仮想3D空間上の座標(xw, yw, zww)をビュー座標(xv, yv, zv)に変換する。
┌ ┐ ┌ ┐
│xv│ │xw│
│yv│= Mv│yw│ …(1)
│zv│ │zw│
│1 │ │1 │
└ ┘ └ ┘
ここで、Mvはビュー変換行列(式(2))。
┌ ┐
│chx chy chz -C・ch│
Mv =│cvx cvy cvz -C・cv│ …(2)
│e'x e'y e'z -C・e'│
│ 0 0 0 1 │
└ ┘
ここで、e'=(ex ey ez)Tは仮想カメラの視線方向を表す単位ベクトル、
ch=(chx chy chz)Tは仮想カメラの横方向を表す単位ベクトル、
cv=(cvx cvy cvz)Tは仮想カメラの上方向を表す単位ベクトル。
Cは仮想カメラの位置ベクトル、
上方向Upは仮想3D空間における地面の鉛直方向。
【0035】
仮想カメラを観察者の視点位置に合わせてレンダリングを行う場合、仮想カメラの位置Cを観察者の視点位置に一致させる。また、観察者の視線方向ベクトルeがスクリーン面Scrに対して垂直であることを前提に、仮想カメラの視線方向ベクトルe'を観察者の視線方向ベクトルeに一致させる。しかし、本実施例において、観察者の視線方向ベクトルeは、スクリーン面Scrに対して斜めである。
【0036】
そこで、図5により仮想カメラの位置Cおよび視線方向ベクトルe'の例を説明するように、仮想カメラの位置Cは観察者の視点位置に一致させるが、仮想カメラの視線方向ベクトルe'は、観察者の視点位置を通るスクリーン面Scrに垂直なベクトルとする。
【0037】
以上の条件の下、式(2)により算出されるビュー変換行列Mvが、本実施例のビュー変換における座標変換パラメータの一つである。
【0038】
●射影変換係数
射影変換は、式(3)により、ビュー座標(xv, yv, zv)を射影座標(xp, yp)に変換する。
xp = α・xv/zv
yp = β・yv/zv …(3)
ここで、α、βは射影変換係数(式(4))。
α = 2d/H
β = 2d/W …(4)
ここで、dは仮想カメラの位置Cからスクリーン平面Scrまでの距離、
W、Hは仮想カメラの視野サイズ。
【0039】
一般に、仮想カメラが表示面の正面にある、つまり仮想カメラの視線方向ベクトルe'を延長すると表示面の中心に垂直に交わる場合、仮想カメラの視野サイズW、Hは表示面の幅と高さに合わせて設定される。しかし、本実施例における仮想カメラは、表示面の正面にあるとは限らない。そこで、仮想カメラの視野サイズW、Hをスクリーン面Scr上において表示面を内包するような値に設定する。
【0040】
具体的には、図6により仮想カメラの視野サイズW、Hの例を説明するように、表示面の四隅のうち、仮想カメラからxv軸方向およびyv軸方向の距離が最大の点(図6においてはS1)を抽出する。そして、例えば点S1と、仮想カメラの視線方向ベクトルe'の延長線がスクリーン面Scrに垂直に交わる点の距離を取得する。そして、取得した水平距離W/2、垂直距離H/2の二倍を視野サイズW、Hにする。
【0041】
以上の条件の下、式(4)により算出される射影変換係数α、βが、本実施例の射影変換における座標変換パラメータの一つである。
【0042】
●テクスチャの変形(S305)
図7の概念図によりテクスチャの変形を説明する。また、図8のフローチャートによりテクスチャの変形処理を説明する。
【0043】
図7に示すように、観察者の視線方向ベクトルeと、仮想カメラの視線方向ベクトルe'がなす角がy軸を中心にθであり、視線方向ベクトルeに垂直な平面とオブジェクト表面Objがなす角がy軸を中心にφであるとする。
【0044】
観察者の視点位置から表示面を観察する際に歪みがないテクスチャを表示するには、図7におけるスクリーン面Scr上の点Q'に、図7におけるオブジェクト表面Obj上の点Qの色を出力すればよい。そこで、テクスチャ変形部205は、オブジェクトの頂点Pn(n=1, 2, 3, 4)に対応するテクスチャ上の点TnのUV座標(u, v)から、変形後のテクスチャの点T'nのUV座標(u', v')を式(5)によって算出する(S601)。
u' = L2u・cosφ/{L1・cosθ + u・sin(θ+φ)}
v' = L2v・cosφ/{L1・cosθ + u・sin(θ+φ)} …(5)
ここで、L1は仮想カメラの位置Cからオブジェクト表面Objまでの観察者の視線方向の距離、
L2は仮想カメラの位置Cからスクリーン平面Scrまでの観察者の視線方向の距離。
【0045】
次に、テクスチャ変形部205は、UV座標を算出した点T'1、T'2、T'3、T'4が囲む領域の画素について、式(6)を用いて変形後の座標(u', v')に対応する変形前の座標(u, v)を算出する(S602)。そして、変形前のテクスチャの点Q(u, v)の画素値を、変形後のテクスチャの点Q'(u', v')の画素値としてRAM103に格納する(S603)。
u = L1u'・cosθ/{L2・cosφ - u'・sin(θ+φ)}
v = L1v'・cosθ/{L2・cosφ - u'・sin(θ+φ)} …(6)
ここで、式(6)は式(5)の逆変換。
【0046】
なお、ステップS602で算出した座標(u, v)が整数値にならない場合、ステップS603において座標(u, v)周辺の画素から補間演算により点Q(u, v)の画素値を求めて、それを点Q'(u', v')の画素値にすればよい。
【0047】
次に、テクスチャ変形部205は、点T'1、T'2、T'3、T'4が囲む領域の画素について画素値を求めたか否かを判定し(S604)、未了であれば処理をステップS602に戻し、完了であればテクスチャの変形処理を終了する。なお、変形後のテクスチャの点Q'(u', v')の画素値は、変形テクスチャ211としてRAM103に格納される。なお、変形テクスチャ211のデータ量が大きい場合は、RAM103の代わりにHDD108に変形テクスチャ211を格納してもよい。
【0048】
図9によりテクスチャ変形処理の効果を説明する。図9(a)に示すテクスチャを、図5に示す点Pn(n=1, 2, 3, 4)を頂点とする、観察者の視線ベクトルeが示す方向に垂直なオブジェクト表面にマッピングする場合を考える。このとき観察者の視点位置から表示面を観察した場合、図9(f)に示すように、オブジェクト表面のテクスチャに歪みがないことが期待される。
【0049】
図9(b)は、テクスチャに変形処理を施さずにマッピングを行った場合のスクリーン面Scrにおけるマッピング後のオブジェクト表面を示す。また、図9(c)は、図9(b)を観察者の視点位置から観察した場合の見えを示す。
【0050】
図9(d)は変形処理を施したテクスチャを示す。図9(e)は、変形テクスチャをマッピングした場合のスクリーン面Scrにおけるマッピング後のオブジェクト表面を示す。また、図9(f)は、図9(e)を観察者の視点位置から観察した場合の見えを示す。
【0051】
上述したように、テクスチャマッピング後の画素の色は、頂点に対応するUV座標を基準としたテクスチャの線形補間により決定される。そのため、図9(b)からもわかるように、テクスチャはスクリーン面Scr上においてオブジェクトの形状に合わせて各部が均等に拡大縮小される。その結果、図9(a)に示すテクスチャをそのままマッピングしたオブジェクト表面を観察者の視点位置から観察すると、図9(c)に示すようにテクスチャが歪んで見える。一方、図9(d)に示す変形テクスチャをマッピングしたオブジェクト表面を観察者の視点位置から観察すると、図9(f)に示すようにテクスチャに歪みがない所望の結果が得られる。
【0052】
このように、オブジェクトの表面、および、表示面と観察者の視点位置の関係に基づきテクスチャを変形し、スクリーンに射影したオブジェクトの各画素の色を決定する。これにより、観察者の視点位置から表示面を観察した場合にテクスチャに歪みがない画像を生成することができる。
【実施例2】
【0053】
以下、本発明にかかる実施例2の画像処理を説明する。なお、実施例2において、実施例1と略同様の構成については、同一符号を付して、その詳細説明を省略する。
【0054】
実施例1では、テクスチャの変形前後におけるUV座標の対応に基づき、テクスチャから変形テクスチャの画素値を一画素ずつ決定する方法を説明した。実施例2においては、テクスチャをメッシュで分割し、メッシュ形状を一般的なリサンプリング処理により変形して変形テクスチャを生成する方法を説明する。また、変形テクスチャを生成する際に、解像度が異なる複数のテクスチャの中から適切な解像度のテクスチャを選択してリサンプリング処理を適用する。
【0055】
図3のフローチャートにより実施例2の画像処理装置における一連の処理の手順を説明する。ステップS301からS304、S306の処理は、実施例1と同一であり、詳細説明を省略する。ただし、ステップS303おいて取得するオブジェクト情報209には、複数のテクスチャITi(i=1, 2, …, N)を含み、それらテクスチャはそれぞれ解像度が異なるが、どのテクスチャもUV座標は0から1の間に正規化されている。
【0056】
次に、テクスチャ変形部205は、表示面情報207、視線情報208、および、オブジェクト情報209が含む複数のテクスチャ画像ITiを用いて変形テクスチャを生成する(S305)。
【0057】
図10のフローチャートにより実施例2におけるテクスチャの変形処理を説明する。
【0058】
テクスチャ変形部205は、オブジェクトの頂点Pn(n=1, 2, 3, 4)に対応するテクスチャ上の点TnのUV座標(u, v)から、変形後のテクスチャの点T'nのUV座標(u', v')を式(5)によって算出する(S1601)。なお、この処理はステップS601の処理と同様である。
【0059】
次に、テクスチャ変形部205は、各テクスチャITiをメッシュで分割して、複数の領域Rに対応する部分画像にする(S1602)。分割数は、テクスチャをマッピングするオブジェクト表面の、スクリーン面Scr上における面積や、CPU101の処理能力などを考慮して予め定めておく。あるいは、観察者の視線ベクトルeが示す視線方向と表示面がなす角度(以下、視線角)が狭い(斜めである)ほど、テクスチャをそのままマッピングすれば生じる歪みが大きくなる。この点を考慮して、視線角の大きさに応じて分割数を決定してもよい。なお、メッシュの頂点MのUV座標、および、メッシュで区切られた領域Rの形状は、各テクスチャITiにおいて同一になる。
【0060】
次に、テクスチャ変形部205は、メッシュの頂点MのUV座標(u, v)から、式(5)により、変形後のテクスチャにおけるメッシュの頂点M'のUV座標(u', v')を算出する(S1603)。
【0061】
次に、テクスチャ変形部205は、変形前の領域Rごとに、複数のテクスチャITiの中から、実際に変形するテクスチャを一つ選択する(S1604)。具体的には、領域Rの幅方向(y方向)の平均画素数kiと、変形後の領域R'に関するスクリーン面Scr上における幅方向の平均画素数k'の差が最も小さいテクスチャITiを選択する。なお、テクスチャの選択は、領域の大きさを表す値であれば、領域R、R'の幅方向の平均画素数以外の他の指標を用いてもよい。例えば、領域R、R'の縦方向の最大(または最小)画素数や、領域の総画素数などを指標として利用可能である。
【0062】
次に、テクスチャ変形部205は、選択したテクスチャから領域Rの部分画像IRを切り出す。そして、部分画像IRの形状が変形後の領域R'の形状に一致するように、部分画像IRを拡大縮小する(S1605)。つまり、拡大縮小後の部分画像IRが変形後の領域R'の部分画像I'Rである。部分画像の拡大縮小には、ニアレストネイバー法、バイリニア法、バイキュービック法など、一般的な画像リサンプリング法を利用すればよい。
【0063】
図11により解像度が異なる三つのテクスチャを用いる場合の変形を説明する。図11は、各テクスチャを縦方向と横方向にそれぞれ二分割する例であり、白色および灰色の丸印が変形前後のメッシュの頂点MおよびM'を表す。
【0064】
図11において、変形後のテクスチャI'における領域R'の幅k'と、変形前のテクスチャITi(i=1, 2, 3)における領域Rの幅k1、k2、k3を比較する。図11の例では、k2とk'の差が最も小さい。従って、図11の例では、テクスチャ画像IT2の領域Rを部分画像IRとして切り出し、領域R'の形状と一致するように部分画像IRの形状を変形する。
【0065】
次に、テクスチャ変形部205は、変形後の領域R'すべての部分画像I'Rをつなぎ合わせて、変形後のテクスチャI'とする(S1606)。なお、オブジェクトの頂点に対応する、変形テクスチャの点T'nのUV座標、および、変形後のテクスチャは、変形テクスチャ211としてRAM103に格納される。なお、変形テクスチャ211のデータ量が大きい場合は、RAM103の代わりにHDD108に変形テクスチャ211を格納してもよい。
【0066】
このように、実施例2のテクスチャの変形処理によれば、メッシュの頂点Mについてのみテクスチャの変形前後のUV座標の対応を算出する。従って、一画素ごとに変形前後のUV座標の対応を算出する場合に比べ、処理負荷を軽減することができる。さらに、解像度が異なる複数のテクスチャITiを用いることで、変形テクスチャについて暈けやモアレといった画質劣化を抑制することができる。
【0067】
[変形例]
上記では、表示面の形状を矩形としてレンダリング画像を生成する例を説明したが、表示面が他の形状を呈する場合にも、本発明は適用可能である。その場合、例えば表示面を内包する矩形を仮定し、その四隅の座標と表示面の形状を表示面情報207としてステップS301からS305の処理を行う。そして、ステップS305で生成されるレンダリング画像212から表示面の形状に合った領域を切り出し、切り出した領域を出力する。
【0068】
また、上記ではCPU101が演算処理を行う例を説明したが、CPU101がグラフィック演算ユニット(GPU)などを制御して、上記の演算処理を実行させるようにすれば、演算処理を高速化し、同様の効果を得ることができる。
【0069】
[その他の実施例]
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステムあるいは装置のコンピュータ(又はCPUやMPU等)がプログラムを読み出して実行する処理である。
【特許請求の範囲】
【請求項1】
画像を表示する表示面を観察する三次元空間における、前記表示面の位置情報を取得する第一の入力手段と、
前記表示面を観察する観察者の視線情報を取得する第二の入力手段と、
仮想三次元空間のオブジェクト情報を取得する第三の入力手段と、
前記位置情報および前記視線情報に基づき、画像のレンダリングに必要な座標変換パラメータを算出する算出手段と、
前記位置情報および前記視線情報に基づき、前記オブジェクト情報が含むテクスチャを変形する変形手段と、
前記オブジェクト情報、前記座標変換パラメータ、および、前記変形したテクスチャを用いてレンダリング画像を生成するレンダリング手段と、
前記レンダリング画像を前記表示面への表示用に出力する出力手段とを有することを特徴とする画像処理装置。
【請求項2】
前記変形手段は、前記テクスチャを複数の領域に分割し、前記複数の領域の部分画像をそれぞれ変形することにより、前記テクスチャの変形を行うことを特徴とする請求項1に記載された画像処理装置。
【請求項3】
前記オブジェクト情報は解像度が異なる複数のテクスチャを含み、前記変形手段は、前記領域ごとに、当該領域の大きさに基づき前記複数のテクスチャから一つのテクスチャを選択し、前記選択したテクスチャにおける前記領域の部分画像を変形して、前記変形後の複数の部分画像をつなぎ合わせて変形後のテクスチャにすることを特徴とする請求項2に記載された画像処理装置。
【請求項4】
前記位置情報は前記三次元空間の原点に対する前記表示面の四隅の三次元座標を有し、前記視線情報は前記原点から前記観察者の視点位置に向かう視点位置ベクトルおよび前記観察者の視線方向を表す視線方向ベクトルを有することを特徴とする請求項1から請求項3の何れか一項に記載された画像処理装置。
【請求項5】
第一から第三の入力手段、算出手段、変形手段、レンダリング手段、出力手段を有する画像処理装置の画像処理方法であって、
前記第一の入力手段が、画像を表示する表示面を観察する三次元空間における、前記表示面の位置情報を取得し、
前記第二の入力手段が、前記表示面を観察する観察者の視線情報を取得し、
前記第三の入力手段が、仮想三次元空間のオブジェクト情報を取得し、
前記算出手段が、前記位置情報および前記視線情報に基づき、画像のレンダリングに必要な座標変換パラメータを算出し、
前記変形手段が、前記位置情報および前記視線情報に基づき、前記オブジェクト情報が含むテクスチャを変形し、
前記レンダリング手段が、前記オブジェクト情報、前記座標変換パラメータ、および、前記変形したテクスチャを用いてレンダリング画像を生成し、
前記出力手段が、前記レンダリング画像を前記表示面への表示用に出力することを特徴とする画像処理方法。
【請求項6】
コンピュータを請求項1から請求項4の何れか一項に記載された画像処理装置の各手段として機能させることを特徴とするプログラム。
【請求項1】
画像を表示する表示面を観察する三次元空間における、前記表示面の位置情報を取得する第一の入力手段と、
前記表示面を観察する観察者の視線情報を取得する第二の入力手段と、
仮想三次元空間のオブジェクト情報を取得する第三の入力手段と、
前記位置情報および前記視線情報に基づき、画像のレンダリングに必要な座標変換パラメータを算出する算出手段と、
前記位置情報および前記視線情報に基づき、前記オブジェクト情報が含むテクスチャを変形する変形手段と、
前記オブジェクト情報、前記座標変換パラメータ、および、前記変形したテクスチャを用いてレンダリング画像を生成するレンダリング手段と、
前記レンダリング画像を前記表示面への表示用に出力する出力手段とを有することを特徴とする画像処理装置。
【請求項2】
前記変形手段は、前記テクスチャを複数の領域に分割し、前記複数の領域の部分画像をそれぞれ変形することにより、前記テクスチャの変形を行うことを特徴とする請求項1に記載された画像処理装置。
【請求項3】
前記オブジェクト情報は解像度が異なる複数のテクスチャを含み、前記変形手段は、前記領域ごとに、当該領域の大きさに基づき前記複数のテクスチャから一つのテクスチャを選択し、前記選択したテクスチャにおける前記領域の部分画像を変形して、前記変形後の複数の部分画像をつなぎ合わせて変形後のテクスチャにすることを特徴とする請求項2に記載された画像処理装置。
【請求項4】
前記位置情報は前記三次元空間の原点に対する前記表示面の四隅の三次元座標を有し、前記視線情報は前記原点から前記観察者の視点位置に向かう視点位置ベクトルおよび前記観察者の視線方向を表す視線方向ベクトルを有することを特徴とする請求項1から請求項3の何れか一項に記載された画像処理装置。
【請求項5】
第一から第三の入力手段、算出手段、変形手段、レンダリング手段、出力手段を有する画像処理装置の画像処理方法であって、
前記第一の入力手段が、画像を表示する表示面を観察する三次元空間における、前記表示面の位置情報を取得し、
前記第二の入力手段が、前記表示面を観察する観察者の視線情報を取得し、
前記第三の入力手段が、仮想三次元空間のオブジェクト情報を取得し、
前記算出手段が、前記位置情報および前記視線情報に基づき、画像のレンダリングに必要な座標変換パラメータを算出し、
前記変形手段が、前記位置情報および前記視線情報に基づき、前記オブジェクト情報が含むテクスチャを変形し、
前記レンダリング手段が、前記オブジェクト情報、前記座標変換パラメータ、および、前記変形したテクスチャを用いてレンダリング画像を生成し、
前記出力手段が、前記レンダリング画像を前記表示面への表示用に出力することを特徴とする画像処理方法。
【請求項6】
コンピュータを請求項1から請求項4の何れか一項に記載された画像処理装置の各手段として機能させることを特徴とするプログラム。
【図3】
【図8】
【図10】
【図1】
【図2】
【図4】
【図5】
【図6】
【図7】
【図9】
【図11】
【図8】
【図10】
【図1】
【図2】
【図4】
【図5】
【図6】
【図7】
【図9】
【図11】
【公開番号】特開2012−43220(P2012−43220A)
【公開日】平成24年3月1日(2012.3.1)
【国際特許分類】
【出願番号】特願2010−184327(P2010−184327)
【出願日】平成22年8月19日(2010.8.19)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
【公開日】平成24年3月1日(2012.3.1)
【国際特許分類】
【出願日】平成22年8月19日(2010.8.19)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
[ Back to top ]