以下、本発明の実施形態について、図面を参照しながら説明する。
図1は、本発明に係る描画装置1aを構成する各ユニットを示した図である。図1において、描画装置1aは、動画デコーダ11、ウェーブレット変換部12、ミップマップレベル取得部13、ウェーブレット逆変換部14、ポリゴン描画部15、ビデオコントローラ16、CPU17、およびメモリI/F(メモリインターフェイス)18を備える。描画装置1aは、メインメモリ2および液晶パネル3とそれぞれ接続されている。描画装置1aは、1チップのシステムLSIで構成される。メインメモリ2は、半導体メモリやハードディスクドライブなどで構成された記憶装置である。なお、本発明に係る表示装置は、描画装置1a、メインメモリ2、および液晶パネル3により構成されるものである。また、図1では、液晶パネル3を示したが、ポリゴン画像を表示することが可能なものであればよく、例えばPDPパネルであってもよい。また、以下の説明では、テクスチャとして動画像を用いた場合について説明する。
描画装置1aを構成する各ユニットは、内部バスを介してそれぞれ接続されている。各ユニットは、メモリI/F18を経由してメインメモリ2にデータを書き込んだり、読み出したりすることによって処理を行っている。
動画デコーダ11は、MPEGなどで圧縮されたテクスチャの動画像データが記憶された記憶媒体(例えば、CD−ROMなど)から、動画像データをCD−ROMドライブ(図示なし)などを用いて読み出す。動画デコーダ11は、読み出した動画像データを伸張して、ウェーブレット変換部12に出力する。
動画像データは、静止画像であるテクスチャの原画像1つを1フレームとし、当該フレームを複数集合させて構成されるデータである。図2に、1フレームに相当するテクスチャの原画像を示す。図2では、一例として、縦1088画素、横1920画素を有するテクスチャの原画像が示されている。
ここで、MPEGに代表される圧縮された動画像データの伸張処理は、一般的に横および縦の画素数がそれぞれ2のN乗(Nは1以上の整数)となる画像ブロック20(MPEGではマクロブロックと称す)単位で行われることが多い。より一般的には、画像ブロック20が有する総画素数は、8画素から256画素程度である。したがってここでは、画像ブロック20に分割されて圧縮された原画像で構成される動画像データが、記憶媒体などに予め記憶されているとする。また図2では、一例として画像ブロック20の縦および横の画素数をそれぞれ16画素としている。動画デコーダ11は、画像ブロック20単位で原画像を記憶媒体から読み出し、読み出した原画像を伸張するとする。このように、画像ブロック20単位で処理を行うことで、動画デコード11の伸張処理単位と、後述するウェーブレット変換部12の変換処理単位とが一致することとなる。その結果、処理効率が向上し、ミップマップ画像を高速に生成することができる。
ウェーブレット変換部12は、Harrのウェーブレット変換式を用いて、画像ブロック20分の原画像をウェーブレット係数に変換する。変換されたウェーブレット係数は、メインメモリ2に書き込まれる。なお、変換されたウェーブレット係数や、ウェーブレット変換部12における変換処理については、後述にて詳細に説明する。
ミップマップレベル取得部13は、記憶媒体(例えば、CD−ROMなど)に記憶されたポリゴン画像のデータを、CD−ROMドライブ(図示なし)などを用いて読み出す。ミップマップレベル取得部13は、ポリゴン画像に定義されたワールド座標をスクリーン座標に変換する。またミップマップレベル取得部13は、ポリゴン画像上の点のスクリーン座標と、その点に対応する図2に示す原画像上の点のテクスチャ座標とを比較して、図2に示す1フレーム分の原画像の縮小率を算出する。ここで縮小率とは、テクスチャの原画像に対して、縦および横方向にどれだけ縮小されたかを示す比率である。例えば、縦および横方向にそれぞれ1/2だけ縮小する場合、縮小率は1/2となる。なお、縮小率の算出方法については、公知の方法を用いるとし、ここでは詳細な説明を省略する。ミップマップレベル取得部13は、算出した縮小率から、必要となるミップマップレベルを取得する。
以下、ミップマップレベルの取得方法について具体的に説明する。ミップマップレベル1のミップマップ画像は、上述したようにテクスチャの原画像に対して縦および横方向にそれぞれ1/2だけ縮小された画像である。ミップマップレベル2のミップマップ画像は、テクスチャの原画像に対して縦および横方向にそれぞれ1/4だけ縮小された画像である。したがって、ミップマップレベル取得部13において算出した縮小率が1/4に近い場合、ミップマップレベル取得部13は、ミップマップレベル2のミップマップレベルを取得する。
なお、より一般的には、算出される縮小率が1/P(Pは1以上の整数)の場合、ミップマップレベル取得部13で取得すべきミップマップレベルは、log2P(2を底とする対数)で求めることができる。log2Pの値が整数にならない場合、四捨五入した整数値をミップマップレベルとしてもよい。また、log2Pの値が整数にならない場合に、そのlog2Pの値を挟む2つのミップマップレベルをそれぞれ取得し、これらのレベルのミップマップ画像を混ぜ合わせるようにしてもよい。混ぜ合わせる比率としては、例えばlog2Pの値が2.3となる場合、ミップマップレベル2のミップマップ画像とミップマップレベル3のミップマップ画像とを7:3の比率で混ぜ合わせる。またミップマップレベル取得部13は、log2Pに特定の値を加減算するようにして、ミップマップレベルを取得するようにしてもよい。
なお、ミップマップレベル取得部13は、算出した縮小率からミップマップレベルを取得するとしたが、これに限定されない。ユーザが表示シーンの構成に応じて直接ミップマップレベルを指定し、ミップマップレベル取得部13は、ユーザによって指定されたミップマップレベルを取得するようにしてもよい。
ウェーブレット逆変換部14は、ウェーブレット変換部12において変換されたウェーブレット係数をメインメモリ2から読み出す。ウェーブレット逆変換部14は、Harrのウェーブレット逆変換式を用いて、ミップマップレベルと同じ値の次数となるまで、読み出したウェーブレット係数を逆変換する。ウェーブレット逆変換部14は、逆変換して求めたウェーブレット係数の低周波成分で表された画像をポリゴン描画部15に出力する。ウェーブレット逆変換部14におけるウェーブレット逆変換処理については、後述にて詳細に説明する。
ポリゴン描画部15は、ウェーブレット逆変換部14から出力された画像をミップマップ画像としてポリゴン画像に描画する。具体的には、ポリゴン描画部15は、ポリゴン画像内の画素の輝度をその画素に対応するミップマップ画像上の画素の輝度としてポリゴン画像内全てについて求める。内部すべての画素の輝度が求められたポリゴン画像は、メインメモリ2に書き込まれる。
液晶パネル3は、ビデオコントローラ16に制御されて、ミップマップ画像が描画されたポリゴン画像を表示する。CPU17は、上記各ユニットの処理を全体的に制御する。
次に、図3を参照して、ウェーブレット変換部12におけるウェーブレット変換処理について詳細に説明する。図3は、ウェーブレット変換処理の流れを示したフローチャートである。
ステップS101において、動画デコーダ11は、圧縮された原画像を画像ブロック20分だけ記憶媒体から読み出す。ステップS101の次に、動画デコーダ11は、読み出した原画像を伸張する(ステップS102)。図4に、伸張された1つの画像ブロック20分の原画像を示す。各枠は画素を表し、各枠内の数値は輝度を表している。なお、MPEGなどの動画像データに対応した動画デコーダ11は、一般的に、R、G、BまたはY、U、Vの3種類の輝度を画素ごとに出力する。しかしながら、ここでは説明を簡単にするために、図4では1種類の輝度のみを表している。
ステップS102の次に、ウェーブレット変換部12は、Harrのウェーブレット変換式を用いて、画像ブロック20分の原画像をウェーブレット係数に変換する(ステップS103)。本発明に用いるHarrのウェーブレット変換式を式(1)〜(4)に示す。
a=(A+B+C+D)/4 …(1)
b=(A−B+C−D)/4 …(2)
c=(A+B−C−D)/4 …(3)
d=(A−B−C+D)/4 …(4)
上式(1)〜(4)において、aをウェーブレット係数の低周波成分、b、c、dをウェーブレット係数の高周波成分と称す。また、A、B、C、Dは、近傍4画素の輝度を示す。
以下、一例として図4の左上端にある4画素をウェーブレット変換する場合について考える。左上端にある4画素のうち、(U0、V0)の輝度がA、(U1、V0)の輝度がB、(U0、V1)の輝度がC、(U1、V1)の輝度がDとなる。これらA〜Dが示す輝度は、A=32、B=32、C=40、D=40である。またこれらA〜Dの輝度を式(1)〜式(4)に代入すると、a=36、b=0、c=−4、d=0となる。
得られたa〜dの値は、図5に示す位置に配置される。図5は、1次のウェーブレット係数を示す図である。図5に示すように、aは(U0、V0)に、bは(U8、V0)に、cは(U0、V8)に、dは(U8、V8)にそれぞれ配置される。このような処理を画像ブロック20全ての画素について、図4の左上端から4画素ずつ処理していくことで、最終的に図5に示したウェーブレット係数が得られる。以上の処理が1次のウェーブレット変換処理となり、図5に示したウェーブレット係数が1次のウェーブレット係数となる。なお、1次のウェーブレット係数は、図5に示すように、低周波成分であるa、高周波成分であるb、c、dの領域に区分されることとなる。
次に、ウェーブレット変換部12は、1次のウェーブレット係数の低周波成分aに対して、式(1)〜式(4)を用いて1次と同様のウェーブレット変換処理を行う。この処理によって算出されたウェーブレット係数が2次のウェーブレット係数となる。このように2次以降は、低周波成分に対してウェーブレット変換処理を行っていく。図6は、4次まで変換されたときのウェーブレット係数を示した図である。図6の31は、1次のウェーブレット係数の高周波成分を示す。図6の32は、2次のウェーブレット係数の高周波成分を示す。図6の33は、3次のウェーブレット係数の高周波成分を示す。図6の34は、4次のウェーブレット係数の高周波成分を示す。図6の35は、4次のウェーブレット係数の低周波成分を示す。なお、4次のウェーブレット係数の低周波成分35は、1つの画素しか有しない。したがって、縦および横の画素数がそれぞれ16画素となる画像ブロック20にあっては、4次より高次のウェーブレット変換処理を行うことはできない。
ここで、ウェーブレット変換処理は、必ずしも変換処理ができなくなる次数まで行う必要はない。しかしながら、変換処理ができなくなる次数まで変換処理を行うことで、最終的に、画像ブロック20の画素数に応じたより多くの種類のミップマップ画像を生成することができる。ここで、横および縦の画素数がそれぞれ2のN乗となる画像ブロック20に対して、変換処理ができなくなる次数はNとなる。したがって、ウェーブレット変換部12においてN次のウェーブレット係数が得られるまで変換処理を行うようにすれば、異なる画素数の画像ブロック20単位で処理が行われても、当該画像ブロック20の画素数に応じたより多くの種類のミップマップ画像を生成することができる。
ステップS103の次に、ウェーブレット変換部12は、図6に示すウェーブレット係数をメインメモリ2に書き込む(ステップS104)。ウェーブレット変換部12は、図2で示したテクスチャの原画像のうち、最後の画像ブロック20まで処理したか否かを判断する(ステップS105)。最後の画像ブロック20まで処理していないと判断された場合、次の画像ブロック20についてステップS101の処理が行われる。最後の画像ブロック20まで処理したと判断された場合、処理はステップS106へ進む。ステップS106においてウェーブレット変換部12は、最後のフレームまで処理したか否かを判断する。最後のフレームまで処理していないと判断された場合、次のフレームについてステップS101の処理が行われる。最後のフレームまで処理したと判断された場合、ウェーブレット変換部12における処理は終了する。
なお、図3に示した処理では、1種類の輝度のみを対象として説明した。しかし、R、G、BまたはY、U、Vの3種類の輝度がある場合は、上述したステップS101〜S104の処理を3回繰り返す。つまり、輝度の種類数だけ、上述したステップS101〜S104の処理を繰り返せばよい。
また、図3に示した処理手順は一例であって、実際のシステムLSIでは、ステップS102とステップ103の処理が同時に動作するように実装することも可能である。つまり、ウェーブレット変換部12がウェーブレット変換している間に、動画デコーダ11がひとつ先の画像ブロック20を伸張することも可能である。また、動画デコーダ11とウェーブレット変換部12との間にFIFOメモリ(図示なし)をさらに設け、数個または数十個の画像ブロック20をバッファリングすることも可能である。この場合、動画デコーダ11は、数個から数十個先の画像ブロック20まで先行して伸張する。
次に、図7を参照して、ウェーブレット逆変換処理をしてポリゴン画像を描画するまでの処理について詳細に説明する。図7は、ウェーブレット逆変換処理をしてポリゴン画像を描画するまでの処理の流れを示したフローチャートである。
ステップS201において、ミップマップレベル取得部13は、ポリゴン画像上の点のスクリーン座標と、その点に対応する図2に示す原画像上の点のテクスチャ座標とを比較して、図2に示す1フレーム分の原画像の縮小率を算出する。そして、ミップマップレベル取得部13は、算出した縮小率から、必要となるミップマップレベルを取得する。
ステップS201の次に、ウェーブレット逆変換部14は、メインメモリ2に記憶された画像ブロック20分のウェーブレット係数のうち、ミップマップレベルと同じ値の次数となるウェーブレット係数の低周波成分全体に対応する係数のみを読み出す(ステップS202)。そしてウェーブレット逆変換部14は、Harrのウェーブレット逆変換式を用いて、ミップマップレベルと同じ値の次数となるまで、読み出したウェーブレット係数を逆変換する(ステップS203)。
以下、ステップS202およびS203の処理について詳細に説明する。上述したように、ミップマップ画像は、近傍4画素の平均をとって生成されるのが一般的である。これに対し、ウェーブレット係数の低周波成分も式(1)に示したように、近傍4画素の平均をとって求められる。つまり、ウェーブレット係数の低周波成分を求める式(1)と、ミップマップ画像を生成する式とが同じ式となる。これにより、図5に示す1次のウェーブレット係数の低周波成分aで表現される画像の輝度と、図18(b)に示すミップマップレベル1のミップマップ画像の輝度とは一致する。その結果、ウェーブレット係数の低周波成分で表現される画像は、従来と同じ低域通過フィルタが作用したミップマップ画像となる。
図8は、ウェーブレット係数の低周波成分の次数と、ミップマップレベルとの対応を示した図である。図8に示すように、4次のウェーブレット係数の低周波成分で表現される画像とミップマップレベル4のミップマップ画像とが同じ画像となる。3次のウェーブレット係数の低周波成分で表現される画像とミップマップレベル3のミップマップ画像とが同じ画像となる。また2次のウェーブレット係数の低周波成分で表現される画像とミップマップレベル2のミップマップ画像とが同じ画像となる。また1次のウェーブット係数の低周波成分で表現される画像とミップマップレベル1のミップマップ画像とが同じ画像となる。この対応を利用すれば、4次のウェーブレット係数から任意のミップマップレベルのミップマップ画像を簡単に生成することが可能となる。
ここで、ステップS201で取得されたミップマップレベルが2であるとする。このとき、ウェーブレット逆変換部14は、2次のウェーブレット係数の低周波成分で表現される画像が生成されるまで、逆変換処理を行う。ここで、ミップマップレベル2のミップマップ画像は、図9に示すように、縦4画素、横4画素とする計16画素を有する。図9は、4次のウェーブレット係数から、ミップマップレベル2のミップマップ画像を生成する過程を模式的に示した図である。したがって、2次のウェーブレット係数の低周波成分で表現される画像を生成するためには、ステップS202においてウェーブレット逆変換部14が、メインメモリ2に記憶されるウェーブレット係数のうち、4次のウェーブレット係数を含む左上端の16個の係数のみ読み出せばよい。つまり、ステップS202において、ウェーブレット逆変換部14は、ステップS201において取得されたミップマップレベルと同じ値の次数となるウェーブレット係数の低周波成分全体に対応する係数のみをメインメモリ2から読み出せばよいこととなる。換言すれば、ウェーブレット逆変換部14は、ステップS201において取得されたミップマップレベルのミップマップ画像に相当する領域内にあるウェーブレット係数のみを、メインメモリ2から読み出せばよいこととなる。これにより、ウェーブレット逆変換部14がメインメモリ2から受け取るデータ量をさらに小さくすることができる。その結果、メインメモリ2の帯域の圧迫をさらに抑えることができる。
ここで、本発明に用いるHarrのウェーブレット逆変換式を式(5)〜(8)に示す。式(5)〜式(8)は、式(1)〜式(4)の逆変換式となる。
A=a+b+c+d …(5)
B=a−b+c−d …(6)
C=a+b−c−d …(7)
D=a−b−c+d …(8)
図9に示す4次のウェーブレット係数は、a=(U0,V0)=97、b=(U1,V0)=−10、c=(U0,V1)=−10、d=(U1,V1)=2となる。これらa〜dの輝度を上式(5)〜式(8)に代入することによって、A〜Dの輝度が得られる。得られたA〜Dの輝度は、図9に示すように、3次のウェーブレット係数の低周波成分となる。同様に、上式(5)〜式(8)を用いることで、図9に示す3次のウェーブレット係数から、2次のウェーブレット係数の低周波成分が得られる。そして、図9に示すように、2次のウェーブレット係数の低周波成分で表現された画像は、ミップマップレベル2のミップマップ画像を一致することが分かる。
ステップS203の次に、ポリゴン描画部15は、ウェーブレット逆変換部14から出力された画像をミップマップ画像としてポリゴン画像に描画する(ステップS204)。ステップS204の次に、ポリゴン描画部15は、図2で示したテクスチャの原画像のうち、最後の画像ブロック20まで描画する処理を行ったか否かを判断する(ステップS205)。最後の画像ブロック20まで描画する処理を行っていないと判断された場合、次の画像ブロック20についてステップS202の処理が行われる。最後の画像ブロック20まで描画する処理を行ったと判断された場合、処理はステップS206へ進む。ステップS206においてポリゴン描画部15は、最後のフレームまで処理が行われたか否かを判断する。最後のフレームまで処理が行われていないと判断された場合、次のフレームについてステップS201の処理が行われる。最後のフレームまで処理が行われたと判断された場合、処理は終了する。
以上のように、本発明に係る描画装置1aによれば、Harrのウェーブレット変換式を用いて原画像をウェーブレット係数に変換し、当該ウェーブレット係数を逆変換することで必要となるミップマップレベルのミップマップ画像を生成することができる。これにより、メインメモリ2に記憶させるべきデータをウェーブレット係数のみにすることができ、多種類のミップマップ画像を大量に記憶させることなく、必要となるミップマップレベルのミップマップ画像を生成することができる。また、メインメモリ2に記憶させるべきデータをウェーブレット係数のみにすることができるため、描画装置1aに接続されたメインメモリ2が必要とする記憶容量を小さくさせることができる。
また本発明に係る描画装置1aによれば、テクスチャが動画像であっても、フレーム毎に生成される多種類のミップマップ画像をメインメモリ2に記憶させる必要がないため、メインメモリ2の帯域の圧迫を防ぐことができる。
また、従来において、離散コサイン変換(DCT)を用いて多数のミップマップ画像を用意する代わりにDCT係数だけをメインメモリ上に保持する技術が提案されている。しかしながら、この従来技術では、テクスチャを参照するごとにDCT係数を保持するための逆DCT処理が必要になる。これにより、回路規模が増大するという問題がある。さらに、従来のミップマップ画像を用いる手法とは異なる低域通過フィルタを用いているため、描画結果に関して従来のミップマップ画像を用いる手法と比べて画質が劣化するという問題もある。さらに、逆DCT処理は、処理負担が大きい。その結果、描画装置の処理性能を向上させるのが難しいという問題もある。
これに対し、本発明に係る描画装置1aによれば、DCTおよび逆DCT処理よりも処理負担が軽いウェーブレット変換および逆変換を採用している。これにより、回路規模を小さくすることができる。また、処理負担が軽いので、描画装置の処理性能も従来と比べて向上させることができる。また、Harrのウェーブレット変換式を用いて変換する場合、従来のミップマップ画像を用いる手法と同じ低域通過フィルタを作用させることができる。これにより、従来のミップマップ画像を用いる手法と同一の画質を確保することができる。
なお、上述では、ウェーブレット変換部12は、変換したウェーブレット係数をメインメモリ2に記憶するとした。ここで、ウェーブレット係数の高周波成分は、人の目に認識されにくいという特徴をもつ。したがって、ウェーブレット係数の高周波成分に対して、情報量を削減するような量子化処理、エントロピー符号化、および算術符号化などを施して、可逆または非可逆圧縮してからメインメモリ2に記憶することも可能である。これにより、メインメモリ2のさらなる少容量化を実現することができる。
また、テクスチャが一般的な自然画の場合、ウェーブレット係数の高周波成分の絶対値が小さい値に偏るという特徴をもつ。したがって自然画の場合には、特にエントロピー符号化による可逆圧縮する方がより効果的である。また、ウェーブレット係数の高周波成分は、可逆または非可逆圧縮のいずれの方法で圧縮されてもよいが、好ましくは、可逆圧縮した方がよい。可逆圧縮した場合、従来のミップマップ画像を用いる手法と完全に同一のミップマップ画像を得ることができるためである。なお、ウェーブレット変換部12でウェーブレット係数の高周波成分を非可逆または可逆圧縮した場合、ウェーブレット逆変換部14では、メインメモリ2から読み込む時に、圧縮された高周波成分を伸張するようにすればよい。
なお、上述では、動画像のテクスチャをポリゴン画像に描画する場合について説明したが、これに限定されない。単に、静止画像のテクスチャをポリゴン画像に描画する場合であっても動画像のテクスチャを用いた場合と同様の効果を得ることができる。静止画像のテクスチャを用いる描画装置1bを構成する各ユニットを図10に示す。図10において描画装置1bは、上述した描画装置1aに対して動画デコーダ11が静止画デコーダ19に代わった構成である。静止画デコーダ19は、圧縮された静止画像であるテクスチャの原画像に対して画像ブロック20単位で伸張処理を行って、ウェーブレット変換部12に出力する。これにより、動画デコーダ11を備えた描画装置1aと同様に、伸張処理単位とウェーブレット変換処理単位とが一致することとなる。その結果、処理効率が向上し、ミップマップ画像を高速に生成することができる。なお、描画装置1bの処理は、上述した描画装置1aにおいてテクスチャの原画像1フレーム分について行われる処理と同様の処理となるので、説明を省略する。なお、処理するテクスチャの原画像が圧縮されていない場合には、上述した描画装置1aの動画デコーダ11や描画装置1bの静止画デコーダ19が不要になることは言うまでもない。
なお、上述では、動画像データの圧縮フォーマットとしてMPEGとしたが、具体的には、MEPG−1、MEPG−2、およびMEPG−4が挙げられる。また、動画像データや静止画像の圧縮フォーマットは、MPEGに限らず、JPEGやDVフォーマットであっても本発明の描画装置1aおよび1bに適用可能である。またその他の圧縮フォーマットであっても、横および縦の画素数がそれぞれ2のN乗となる画像ブロック20単位で処理して伸張するものであれば、将来考案されるものも含めて本発明の描画装置1aおよび1bに適用可能である。
なお、図1では、描画装置1aのみがそれぞれ1チップのシステムLSIで構成されるとしたが、これに限定されない。近年のシステムLSIの集積度の向上により、描画装置1aおよびメインメモリ2が1チップのシステムLSIで構成されてもよい。また描画装置1aが、1チップではなく、複数のLSIを組み合わせて構成されてもよい。また、以上に説明したシステムLSIの構成については、図10に示す描画装置1bについても同様のことがいえる。
なお、図1および図10では、本発明に関連するユニットのみを抜粋して示している。したがって、実際のシステムLSIには、上述したユニット以外に、音声処理等の機能を有するユニットも含まれる場合がある。
なお、図1に示した動画デコーダ11は、動画像データを、記憶媒体から読み出して取得するとした。また、図10に示した静止画デコーダ19も同様に、静止画像であるテクスチャの原画像を、記憶媒体から読み出して取得している。しかしながら、動画デコーダ11や静止画デコーダ19は、データを、記録媒体ではなく、電波やインターネット等を利用した通信路から取得するようにしてもよい。この場合であっても、記憶媒体から取得した場合と同様の効果を得ることができる。
以下、図7に示したウェーブレット逆変換処理をしてポリゴン画像を描画するまでの処理に関する変形例1、2について説明する。
(変形例1)
上述したように、ミップマップレベル取得部13がlog2Pを用いてミップマップレベルを取得する際、取得されるミップマップレベルが整数ではない場合がある。この場合の具体的な処理例を変形例1として、図11を参照して説明する。図11は、変形例1におけるウェーブレット逆変換処理をしてポリゴン画像を描画するまでの処理の流れを示したフローチャートである。なお、以下の説明では一例として、ミップマップ取得部13において取得されるミップマップレベルが2.3であるとする。また、メインメモリ2には、ウェーブレット変換部12において4次のウェーブレット係数が得られるまで変換されたウェーブレット係数が記憶されているとする。
ステップS301において、ミップマップレベル取得部13は、ポリゴン画像上の点のスクリーン座標と、その点に対応する図2に示す原画像上の点のテクスチャ座標とを比較して、図2に示す1フレーム分の原画像の縮小率を算出する。そして、ミップマップレベル取得部13は、算出した縮小率から、ミップマップレベル(=2.3)を取得する。
ステップS301の次に、ウェーブレット逆変換部14は、メインメモリ2に記憶された画像ブロック20分のウェーブレット係数のうち、ミップマップレベルの整数値(=2)と同じ値の次数となるウェーブレット係数の低周波成分全体に対応する係数のみを読み出す(ステップS302)。そしてウェーブレット逆変換部14は、Harrのウェーブレット逆変換式を用いて、ミップマップレベルの整数値(=2)と同じ値の次数となるまで、読み出したウェーブレット係数を逆変換する(ステップS303)。ここで、ステップS303が実行される過程において、2次だけでなく、3次のウェーブレット係数の低周波成分も算出される。ウェーブレット逆変換部14は、逆変換して求めた2次のウェーブレット係数の低周波成分で表された画像と、3次のウェーブレット係数の低周波成分で表された画像とをポリゴン描画部15に出力する。
以下、図12を参照して、2次だけでなく、3次のウェーブレット係数の低周波成分も算出されるメカニズムについて説明する。図12は、ミップマップレベルが2.3となる場合のミップマップ画像を生成する過程を模式的に示した図である。
ミップマップレベル2のミップマップ画像は、図12に示すように、縦4画素、横4画素とする計16画素を有する。したがって、ステップS302においてウェーブレット逆変換部14は、メインメモリ2に記憶されるウェーブレット係数のうち、4次のウェーブレット係数を含む左上端の16個の係数のみを読み出す。ここで、図12に示すように、4次のウェーブレット係数は、a=(U0,V0)=97、b=(U1,V0)=−10、c=(U0,V1)=−10、d=(U1,V1)=2となる。よって、ステップS303においてウェーブレット逆変換部14は、まず、これらa〜dの輝度を上式(5)〜式(8)に代入することによって、A〜Dの輝度を算出する。得られたAの輝度は、3次のウェーブレット係数の低周波成分である(U0、V0)の係数となる。得られたBの輝度は、3次のウェーブレット係数の低周波成分である(U1、V0)の係数となる。得られたCの輝度は、3次のウェーブレット係数の低周波成分である(U0、V1)の係数となる。得られたDの輝度は、3次のウェーブレット係数の低周波成分である(U1、V1)の係数となる。このように、ステップS303において上式(5)〜式(8)が1回適用されることで、3次のウェーブレット係数の低周波成分が算出される。この3次のウェーブレット係数の低周波成分で表現された画像は、図12に示すように、ミップマップレベル3のミップマップ画像と一致する。次に、上式(5)〜式(8)を4回適用することにより、図12に示す3次のウェーブレット係数から、2次のウェーブレット係数の低周波成分が算出される。この2次のウェーブレット係数の低周波成分で表現された画像は、図12に示すように、ミップマップレベル2のミップマップ画像と一致する。このように、ステップS303が実行される過程において、2次だけでなく、3次のウェーブレット係数の低周波成分も算出される。
ステップS303の次に、ポリゴン描画部15は、2次のウェーブレット係数の低周波成分で表された画像(ミップマップレベル2のミップマップ画像)と、3次のウェーブレット係数の低周波成分で表された画像(ミップマップレベル3のミップマップ画像)とを、所定の割合で混合する(ステップS304)。混合方法については、Tri−Linearなどの公知の方法を用いるとし、ここでは詳細な説明を省略する。所定の割合は、例えば、ミップマップレベルの小数部の値に応じて決定される。取得したミップマップレベルが2.3である場合、例えば、ミップマップレベル2のミップマップ画像とミップマップレベル3のミップマップ画像とを7:3の比率で混合する。
ステップS304の次に、ポリゴン描画部15は、混合したミップマップ画像をポリゴン画像に描画する(ステップS305)。ステップS305の次に、ポリゴン描画部15は、図2で示したテクスチャの原画像のうち、最後の画像ブロック20まで描画する処理を行ったか否かを判断する(ステップS306)。最後の画像ブロック20まで描画する処理を行っていないと判断された場合、次の画像ブロック20についてステップS302の処理が行われる。最後の画像ブロック20まで描画する処理を行ったと判断された場合、処理はステップS307へ進む。ステップS307においてポリゴン描画部15は、最後のフレームまで処理が行われたか否かを判断する。最後のフレームまで処理が行われていないと判断された場合、次のフレームについてステップS301の処理が行われる。最後のフレームまで処理が行われたと判断された場合、処理は終了する。
以上のように、変形例1の処理によれば、ミップマップレベル2のミップマップ画像とミップマップレベル3のミップマップ画像とを混合する際、ミップマップレベル2のミップマップ画像を求める過程において、ミップマップレベル3のミップマップ画像を自動的に得ることができる。このため、ミップマップレベル3のミップマップ画像を別途生成する必要がない。一方、従来の逆DCT処理では、ミップマップレベル2のミップマップ画像とミップマップレベル3のミップマップ画像とを別々に生成しなければならない。したがって、変形例1の処理によれば、ミップマップレベルの異なる複数のミップマップ画像を生成するにあたり、従来の逆DCT処理よりも高速に生成することができる。
なお、上述では、算出した縮小率から整数ではないミップマップレベルが取得されるとしたが、これに限定されない。ユーザが、表示シーンの構成に応じて整数ではないミップマップレベルをミップマップレベル取得部13に直接指定するようにしてもよい。この場合、ミップマップレベル取得部13は、ユーザによって指定された整数ではないミップマップレベルを取得することになる。
(変形例2)
上述した図7の処理では、ウェーブレット逆変換部14は、逆変換して求めたウェーブレット係数の低周波成分全体で表された画像を、画像ブロック20単位のミップマップ画像としてポリゴン描画部15に出力していた。しかしながら、画像ブロック20単位のミップマップ画像のうち、特定の画素のみを生成するようにしてもよい。この場合、ウェーブレット逆変換部14は、ウェーブレット係数の低周波成分のうち、特定の画素を表す一部の係数のみを求めるように、逆変換処理を行えばよい。この場合の具体的な処理例を変形例2として、図13〜図16を参照して説明する。
図13は、画像ブロック20単位のミップマップ画像のうちの特定の画素Aを模式的に示した図である。図13の例では、取得されたミップマップレベルを0とし、ミップマップレベル0のミップマップ画像内に画素Aが存在しているとする。ここで、図13に示したミップマップ画像は、ミップマップレベルが0であり、画像ブロック20単位の画像である。したがって、図13に示したミップマップ画像は、0次のウェーブレット係数の低周波成分全体で表された画像に相当する。図13に示す(Ux、Vy)は画素Aの座標であり、x、y(x、yは0以上の整数)は座標値である。図14は、画素Aのみ生成するために必要なウェーブレット係数を模式的に示した図である。なお、図14では、メインメモリ2には、ウェーブレット変換部12において4次のウェーブレット係数が得られるまで変換されたウェーブレット係数が記憶されているとする。図14(a)は、1次のウェーブレット係数の高周波成分である各領域b〜dを示した図である。図14(a)の斜線部分は、1次のウェーブレット係数の低周波成分である。図14(b)は、2次のウェーブレット係数の高周波成分である各領域b〜dを示した図である。図14(b)の斜線部分は、2次のウェーブレット係数の低周波成分である。図14(c)は、3次のウェーブレット係数の高周波成分である各領域b〜dを示した図である。図14(c)の斜線部分は、3次のウェーブレット係数の低周波成分である。図14(d)は、4次のウェーブレット係数の高周波成分である各領域b〜dを示した図である。図14(d)の斜線部分は、4次のウェーブレット係数の低周波成分である。図14(e)は、4次のウェーブレット係数の低周波成分である各領域b〜dを示した図である。図15は、画素Aのみ生成するために必要なウェーブレット係数を読み出す処理の流れを示したフローチャートである。図16は、図14および図15に示した処理に関する数値例を示した図である。
画素Aのみ生成するためには、図14に示すP1〜P5の係数が必要となる。P1は、1次のウェーブレット係数の高周波成分である各領域b〜dに、1つずつ存在している。P1の座標値は、画素Aの座標値x、yをそれぞれ2で除算した値となり、P1の座標は、図14(a)に示すように(Ux/2、Vy/2)となる。なお、除算した値が整数ではない場合、小数点以下を切り捨てるものとする。また、座標(Ux/2、Vx/2)は、各領域b〜dにおいて、それぞれの左上端点を座標(U0、V0)としたときの座標を示している。この座標の取り方については、後述にて数値例を挙げて説明する。P2は、2次のウェーブレット係数の高周波成分である各領域b〜dに、1つずつ存在している。P2の座標値は、画素Aの座標値x、yをそれぞれ4で除算した値となり、P2の座標は、図14(b)に示すように(Ux/4、Vy/4)となる。なお、除算した値が整数ではない場合、小数点以下を切り捨てるものとする。また、座標(Ux/4、Vy/4)は、各領域b〜dにおいて、それぞれの左上端を座標(U0、V0)としたときの座標を示している。P3は、3次のウェーブレット係数の高周波成分である各領域b〜dに、1つずつ存在している。P3の座標値は、画素Aの座標値x、yをそれぞれ8で除算した値となり、P3の座標は、図14(c)に示すように(Ux/8、Vy/8)となる。なお、除算した値が整数ではない場合、小数点以下を切り捨てるものとする。また、座標(Ux/8、Vy/8)は、各領域b〜dにおいて、それぞれの左上端を座標(U0、V0)としたときの座標を示している。P4は、4次のウェーブレット係数の高周波成分である各領域b〜dに、1つずつ存在している。P4の座標値は、画素Aの座標値x、yをそれぞれ16で除算した値となり、P4の座標は、図14(d)に示すように(Ux/16、Vy/16)となる。なお、除算した値が整数ではない場合、小数点以下を切り捨てるものとする。また、座標(Ux/16、Vy/16)は、各領域b〜dにおいて、それぞれの左上端を座標(U0、V0)としたときの座標を示している。P5は、4次のウェーブレット係数の低周波成分である領域a内に存在している。P5の座標値は、画素Aの座標値x、yをそれぞれ16で除算した値となり、P5の座標は、図14(e)に示すように(Ux/16、Vy/16)となる。なお、除算した値が整数ではない場合、小数点以下を切り捨てるものとする。また、座標(Ux/16、Vy/16)は、領域aにおいて、左上端を座標(U0、V0)としたときの座標を示している。
次に、図15を参照して、画素Aのみ生成するために必要なウェーブレット係数を読み出す処理の流れを一般化して説明する。図14の説明では、画素Aがミップマップレベル0のミップマップ画像内に存在するとしたが、図15に示す処理は、より一般的に画素AがミップマップレベルLのミップマップ画像内に存在する場合に対して適用できる。図15に示す処理を図7のステップS202において行えば、ウェーブレット逆変換部14は、ウェーブレット係数の低周波成分のうち、画素Aを表す一部の係数のみを求めるように、逆変換処理を行うことができる。なお、図15の説明では、ミップマップレベル取得部13で取得されたミップマップレベルをLとする。Lは0以上の整数である。またウェーブレット変換部12は、(L+M)次のウェーブレット係数が得られるまで変換処理を行っているとする。Mは1以上の整数である。
図15において、ウェーブレット逆変換部14は、取得されたミップマップレベルLに1を加算する(ステップS2021)。ステップS2021の次に、ウェーブレット逆変換部14は、画素Aの座標値x、yをそれぞれ2で除算し、読み出すべき係数P1の座標(Ux/2、Vy/2)を算出する(ステップS2022)。但し、除算した値が整数ではない場合、小数点以下を切り捨てる。ステップS2022の次に、ウェーブレット逆変換部14は、ステップS2021で求めた値(L+1)と同じ次数のウェーブレット係数に対し、その高周波成分である各領域b〜dから、係数P1(Ux/2、Vx/2)をそれぞれ読み出す(ステップS2023)。ステップS2023の次に、ウェーブレット逆変換部14は、ステップS2023で読み出したウェーブレット係数の次数が、メインメモリ2に記憶されたウェーブレット係数が示す最高の次数(L+M)と一致するか否かを判断する(ステップS2024)。今、ステップS2023で読み出したウェーブレット係数の次数は(L+1)であるので、ステップS2024ではNoと判断され、処理はステップS2025に進む。ステップS2025において、ウェーブレット逆変換部14は、ステップS2023で読み出したウェーブレット係数の次数を1つ繰り上げる(ステップS2025)。ステップS2023で読み出したウェーブレット係数の次数は(L+1)であるので、ステップS2025の処理により、次数は(L+2)となる。ステップS2025の次に、処理はステップS2022に進む。ステップS2022において、ウェーブレット逆変換部14は、係数P1の座標値x/2、y/2をそれぞれ2で除算し、読み出すべき係数P2の座標(Ux/4、Vy/4)を算出する。
このように、ステップS2022〜S2025の処理が、次数が(L+1)から(L+M)となるまで繰り返される。ここで、1以上M以下の整数をmとおく。この場合、ステップS2022〜S2025を繰り返す処理は、(L+m)次のウェーブレット係数の高周波成分から、画素Aの座標値を2のm乗で除算した結果の整数値からなる座標値に対応するウェーブレット係数のみを、(L+1)次から(L+M)次の間で次数毎に受け取る処理であるといえる。
最終的に、ステップS2023で読み出したウェーブレット係数の次数が最高の次数(L+M)と一致する場合(ステップS2024でYes)、処理はステップS2026に進む。ステップS2026において、ウェーブレット逆変換部14は、(L+M)次のウェーブレット係数の低周波成分から、画素Aの座標値を2のM乗で除算した結果の整数値のみからなる座標値で特定されるウェーブレット係数のみを受け取る。
図16に示す数値例を参照して、図14および図15に示した処理をより具体的に説明する。なお、図16では、メインメモリ2には、ウェーブレット変換部12において4次のウェーブレット係数が得られるまで変換されたウェーブレット係数が記憶されているとする。図16において、例えば、ミップマップレベル2のミップマップ画像における(U3、V2)に存在する画素が画素Aであるとする。この場合の画素Aの座標値は、x=3、y=2となる。このとき、3次のウェーブレット係数では、画素Aのみ生成するために必要な係数Pの座標値は、x=3/2=1、y=2/2=1となる。つまり、係数Pの座標は、(U1、V1)となる。また、この係数Pの座標は、各領域b〜dにおいて、それぞれの左上端を座標(U0、V0)としたときの座標を示している。つまり、図16で言えば、領域bの(U2、V0)、領域cの(U0、V2)、領域dの(U2、V2)が係数Pの座標に対する(U0、V0)となる。したがって、係数Pの座標は、領域bでは(U3、V1)、領域cでは(U1、V3)、領域dでは(U3、V3)となる。次に、4次のウェーブレット係数では、画素Aのみ生成するために必要な係数Pの座標値は、x=3/4=0、y=2/4=0となる。つまり、係数Pの座標は、(U0、V0)となる。また、この係数Pの座標は、各領域b〜dにおいて、それぞれの左上端を座標(U0、V0)としたときの座標を示している。つまり、図16で言えば、領域bの(U1、V0)、領域cの(U0、V1)、領域dの(U1、V1)が係数Pの座標に対する(U0、V0)となる。したがって、係数Pの座標は、領域bでは(U1、V0)、領域cでは(U0、V1)、領域dでは(U1、V1)となる。また、図16では、4次が最高の次数である。また、係数Pの座標は、低周波成分である領域aの左上端を座標(U0、V0)としたときの座標を示している。つまり、図16で言えば、領域aの(U0、V0)が係数Pの座標に対する(U0、V0)となる。したがって、係数Pの座標は、(U0、V0)となる。このように、画素(U3、V2)を生成するためには、メインメモリ2に記憶されたウェーブレット係数のうち、(U3、V1)、(U1、V3)、(U3、V3)、(U1、V0)、(U0、V1)、(U1、V1)、(U0、V0)の計7個の係数のみ必要となる。なお、例えばミップマップレベルが2.3の場合、画素Aに対応するミップマップレベル3の画素を求める必要があるが、図16の画素Aに対応するミップマップレベル3の画素は(U1、V1)となる。これはミップマップレベル2の画素A(U3、V2)を求める過程で求めることができる。
なお、4次のウェーブレット係数を含む係数のうち、図16に示した7個の係数だけを用いて4次から2次までウェーブレット逆変換をすると、実際には、2次のウェーブレット係数の低周波成分16個のうち、4個の値が求まる。この4個中から、必要とする(U3、V2)の値を選択するようにすればよい。また、上式(5)〜式(8)を用いて行われる逆変換処理は、4次から3次で1回、3次から2次で1回の計2回だけでよいことになる。つまり、上述した図9では、上式(5)〜式(8)を計5回適用しなければならなかったが、図16では、計2回だけで済むようになる。
以上のように、ウェーブレット逆変換部14は、メインメモリ2から特定の画素に対応するウェーブレット係数のみを受け取り、受け取ったウェーブレット係数のみを逆変換処理する。これにより、特定の画素のみを生成することができる。その結果、受け取ったウェーブレット係数の数が減る分だけ、ウェーブレット係数の低周波成分に相当する領域内にある全ての係数を受け取って処理する場合よりも、逆変換処理の演算量を小さくすることができる。
なお、図15に示した処理では、次数を1つ繰り上げるたびにメインメモリ2から必要なウェーブレット係数を読み出すとしたが、これに限定されない。メインメモリ2に記憶されたウェーブレット係数を画像ブロック20毎に読み出し、ウェーブレット逆変換部14の内部メモリに保持しておくようにしてもよい。この場合、ウェーブレット逆変換部14は、内部メモリに記憶されたウェーブレット係数の中から、必要なウェーブレット係数を用いて逆変換処理を行うことになる。この場合であっても、ウェーブレット係数の低周波成分に相当する領域内にある全ての係数を受け取って処理する場合よりも、逆変換処理の演算量を小さくすることができる。
また、図15に示した処理では、図2に示したテクスチャの原画像を構成する複数の画像ブロック20について、画素Aを描画するようにしていたが、これに限定されない。図2に示したテクスチャの原画像を構成する複数の画像ブロック20のうち、いずれか1つの画像ブロック20内にだけ存在する画素Aを描画することも可能である。この場合、ウェーブレット逆変換処理をしてポリゴン画像を描画するまでの処理は、次のような処理となる。まず、図7に示したステップS201の処理が行われる。その後、ウェーブレット逆変換部14は、画素Aの存在する画像ブロック20を特定する。その後、ウェーブレット逆変換部14は、図15に示した処理を行って、特定した画像ブロック20内のウェーブレット係数の中から画素Aを生成するのに必要なウェーブレット係数のみを受け取る。その後、ウェーブレット逆変換部14は、受け取ったウェーブレット係数を逆変換し、逆変換したウェーブレット係数の低周波成分の一部で表された画像を画素Aとしてポリゴン描画部15に出力する。その後、ポリゴン描画部15は、画素Aをポリゴン画像に描画する。