(57)【要約】【課題】  コンピュータグラフィックスにおいて動画を扱うために、レンダリングエンジンに画像符号化機能をもたせる必要がある。【解決手段】  テクスチャユニット５０のフレーム差分演算部４１０は、第１フレーム画像４０２の対象マクロブロックと第２フレーム画像４０４の予測マクロブロックの候補の間で絶対差分和を評価することにより、対象マクロブロックに対して誤差の最も小さい予測マクロブロックを特定し、動きベクトルを求める。フレーム差分演算部４１０は、動き補償の基準となるフレーム画像とともに、各マクロブロックの動きベクトルの情報と画像の差分データをシェーダユニット３０のフレーム符号化処理部４２０に与える。フレーム符号化処理部４２０は、テクスチャユニット５０から得られたデータを用いて、フレーム間圧縮符号化を行い、符号化画像データを生成する。【選択図】  図４
2005309900.tif 000002
【特許請求の範囲】
【請求項１】
第１および第２のテクスチャのデータを保持する記憶部と、
前記第１のテクスチャと前記第２のテクスチャの間で対応領域を定め、前記対応領域内にある前記第１のテクスチャのテクセルと前記第２のテクスチャのテクセルの間で所定の演算処理を行う演算部とを含むことを特徴とする画像処理装置。
【請求項２】
前記第１のテクスチャの設定情報と前記第２のテクスチャの設定情報を同時に保持するレジスタをさらに含み、
前記演算部は、前記レジスタに保持された前記第１および第２のテクスチャの設定情報にもとづいて、前記第１および第２のテクスチャのデータを読み出し、前記所定の演算処理を行うことを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記所定の演算処理は、前記対応領域内で対応づけられる前記第１のテクスチャのテクセルと前記第２のテクスチャのテクセルの値の差分に関する演算であることを特徴とする請求項１または２に記載の画像処理装置。
【請求項４】
前記演算部は、前記テクスチャのテクセル値の線形補間を行う内挿演算器を含み、
前記内挿演算器が、前記差分に関する演算を行うことを特徴とする請求項３に記載の画像処理装置。
【請求項５】
前記演算部は、
前記テクスチャのテクセル値の線形補間を行う前段の２つの内挿演算器と、
前記前段の２つの内挿演算器からの出力値の線形補間を行う後段の内挿演算器とを含み、
前記前段の２つの内挿演算器のそれぞれが、前記対応領域内で対応づけられる前記第１のテクスチャのテクセルと前記第２のテクスチャのテクセルの絶対差分を求める演算を行い、前記後段の内挿演算器が、前記前段の２つの内挿演算器による前記絶対差分の和を求める演算を行うことを特徴とする請求項１または２に記載の画像処理装置。
【請求項６】
第１および第２のテクスチャのデータを保持する記憶部と、
前記記憶部に保持された前記第１のテクスチャと前記第２のテクスチャを切り替えて参照して、前記第１のテクスチャのテクセルと前記第２のテクスチャのテクセルに対して交互に所定の演算処理を行う演算部とを含むことを特徴とする画像処理装置。
【請求項７】
前記第１のテクスチャの設定情報と前記第２のテクスチャの設定情報を同時に保持するレジスタをさらに含み、
前記演算部は、前記レジスタに保持された前記第１および第２のテクスチャの設定情報にもとづいて、前記第１および第２のテクスチャのデータを読み出し、前記所定の演算処理を行うことを特徴とする請求項６に記載の画像処理装置。
【請求項８】
前記所定の演算処理は、前記第１のテクスチャと前記第２のテクスチャのそれぞれの所定の領域内にあるテクセルの値の大小比較に関する演算であることを特徴とする請求項６または７に記載の画像処理装置。
【請求項９】
前記演算部は、前記テクスチャのテクセル値の線形補間を行う内挿演算器を含み、
前記内挿演算器が、前記大小比較に関する演算を行うことを特徴とする請求項８に記載の画像処理装置。
【請求項１０】
前記演算部は、
前記テクスチャのテクセル値の線形補間を行う前段の２つの内挿演算器と、
前記前段の２つの内挿演算器からの出力値の線形補間を行う後段の内挿演算器とを含み、
前記前段の２つの内挿演算器のそれぞれが、前記第１のテクスチャまたは前記第２のテクスチャの所定の領域内にあるテクセルの最小値または最大値を求める演算を行い、前記後段の内挿演算器が、前記前段の２つの内挿演算器による出力値の最小値または最大値を求める演算を行うことを特徴とする請求項６または７に記載の画像処理装置。
【請求項１１】
テクスチャデータに対して演算処理を行うテクスチャユニットと、
前記テクスチャユニットとバス結合し、前記テクスチャユニットにより演算処理されたテクスチャデータをもとに描画データを生成するシェーディングユニットとを含み、
前記テクスチャユニットは、動画のフレーム画像を前記テクスチャデータとして読み取り、前記フレーム画像に関する差分演算を行い、差分演算結果を前記シェーディングユニットに出力し、
前記シェーディングユニットは、前記テクスチャユニットから受け取る前記フレーム画像に関する前記差分演算結果を利用して前記動画を圧縮符号化することを特徴とする画像処理装置。
【請求項１２】
前記テクスチャユニットは、２枚のフレーム画像をテクスチャデータとして読み取り、前記２枚のフレーム画像間の差分演算を行い、差分演算結果を前記シェーディングユニットに出力し、
前記シェーディングユニットは、前記テクスチャユニットから受け取る前記２枚のフレーム画像間の前記差分演算結果を利用して前記動画を圧縮符号化することを特徴とする請求項１１に記載の画像処理装置。
【請求項１３】
第１および第２のテクスチャのデータをメモリから読み出し、前記第１のテクスチャと前記第２のテクスチャの間で対応領域を定め、前記対応領域内にある前記第１のテクスチャのテクセルと前記第２のテクスチャのテクセルの間で所定の演算処理を行うことを特徴とする画像処理方法。
【請求項１４】
メモリに保持された第１のテクスチャと第２のテクスチャを切り替えて参照して、前記第１のテクスチャのテクセルと前記第２のテクスチャのテクセルに対して交互に所定の演算処理を行うことを特徴とする画像処理方法。
【請求項１５】
前記テクスチャのテクセル値の線形補間を行う内挿演算器を流用して前記所定の演算処理を行うことを特徴とする請求項１３または１４に記載の画像処理方法。
【請求項１６】
第１および第２のテクスチャのデータをメモリから読み出すステップと、
前記第１のテクスチャと前記第２のテクスチャの対応領域間で差分に関する演算を行うステップとをコンピュータに実行させることを特徴とするプログラム。
【請求項１７】
メモリに保持された第１のテクスチャと第２のテクスチャを切り替えて参照するステップと、
前記第１のテクスチャと前記第２のテクスチャに対して交互に大小比較に関する演算を行うステップとをコンピュータに実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は画像データを演算処理する画像処理装置および画像処理方法に関する。
【背景技術】
【０００２】
３次元コンピュータグラフィックスでは、一般的に３次元空間のオブジェクトを多数のポリゴンにより表現するポリゴンモデルが利用される。ポリゴンモデルの描画処理において、光源、視点位置、物体表面の反射率などを考慮してポリゴン表面に陰影をつけるシェーディングが行われる。また、写実性の高い画像を生成するために、ポリゴンモデルの表面にテクスチャ画像を貼り付けるテクスチャマッピングが行われる。
【０００３】
さらに、映像処理技術をコンピュータグラフィックスに取り入れることにより、現実感や臨場感を高めることができ、カメラなどで撮影した自然画像をテクスチャデータとして利用したり、ビデオカメラで撮影した動画を３次元コンピュータグラフィックスに融合させることも行われている。動画圧縮の標準技術としてＭＰＥＧ（Moving Picture Experts Group）があり、ＭＰＥＧ−４では、コンピュータグラフィックスへの応用として、柔軟な空間解像度スケーラビリティを有するウェーブレット変換を用いたテクスチャ符号化が採用されている。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
コンピュータグラフィックスにおいて、動画を扱うためには、レンダリングエンジンに動画の符号化や復号の機能をもたせる必要がある。レンダリングエンジンは、複雑なレンダリングアルゴリズムに対応するため、プログラマビリティをもつようになってきており、プログラミングによって多様な機能を実現することができる。そのため、レンダリングエンジンに動画の符号化や復号などの高度な画像処理機能をもたせることが現実的な可能性を帯びてきている。
【０００５】
本発明はこうした課題に鑑みてなされたものであり、その目的は、画像データの演算処理を効率良く実行することのできる画像処理装置および画像処理方法を提供することにある。
【課題を解決するための手段】
【０００６】
上記課題を解決するために、本発明のある態様の画像処理装置は、第１および第２のテクスチャのデータを保持する記憶部と、前記第１のテクスチャと前記第２のテクスチャの間で対応領域を定め、前記対応領域内にある前記第１のテクスチャのテクセルと前記第２のテクスチャのテクセルの間で所定の演算処理を行う演算部とを含む。
【０００７】
前記所定の演算処理は、前記対応領域内で対応づけられる前記第１のテクスチャのテクセルと前記第２のテクスチャのテクセルの値の差分に関する演算、たとえば、絶対差分を求める演算であってもよい。また、この絶対差分などの演算は、テクスチャのテクセル値の線形補間を行う内挿演算器を流用して行われてもよい。
【０００８】
本発明の別の態様もまた、画像処理装置である。この装置は、第１および第２のテクスチャのデータを保持する記憶部と、前記記憶部に保持された前記第１のテクスチャと前記第２のテクスチャを切り替えて参照して、前記第１のテクスチャのテクセルと前記第２のテクスチャのテクセルに対して交互に所定の演算処理を行う演算部とを含む。
【０００９】
前記第１のテクスチャの設定情報と前記第２のテクスチャの設定情報を同時に保持するレジスタをさらに含んでもよい。前記演算部を前記レジスタに保持された前記第１および第２のテクスチャの設定情報にもとづいて、前記第１および第２のテクスチャのデータを読み出し、前記所定の演算処理を行ってもよい。これにより２つのテクスチャを参照するためにコンテクストを切り替える必要がなくなる。
【００１０】
前記所定の演算処理は、前記第１のテクスチャと前記第２のテクスチャのそれぞれの所定の領域内にあるテクセルの値の大小比較に関する演算、たとえば、最小値や最大値を求める演算であってもよい。
【００１１】
本発明のさらに別の態様もまた、画像処理装置である。この装置は、テクスチャデータに対して演算処理を行うテクスチャユニットと、前記テクスチャユニットとバス結合し、前記テクスチャユニットにより演算処理されたテクスチャデータをもとに描画データを生成するシェーディングユニットとを含む。前記テクスチャユニットは、動画のフレーム画像を前記テクスチャデータとして読み取り、前記フレーム画像に関する差分演算を行い、差分演算結果を前記シェーディングユニットに出力し、前記シェーディングユニットは、前記テクスチャユニットから受け取る前記フレーム画像に関する前記差分演算結果を利用して前記動画を圧縮符号化する。
【００１２】
前記フレーム画像に関する差分演算は、１つのフレーム内の異なる画素間の差分演算であってもよく、２つのフレーム間の対応する画素間の差分演算であってもよい。
【００１３】
前記テクスチャユニットは、２枚のフレーム画像をテクスチャデータとして読み取り、前記２枚のフレーム画像間の差分演算を行い、差分演算結果を前記シェーディングユニットに出力し、前記シェーディングユニットは、前記テクスチャユニットから受け取る前記２枚のフレーム画像間の前記差分演算結果を利用して前記動画を圧縮符号化してもよい。
【００１４】
本発明のさらに別の態様は、画像処理方法である。この方法は、第１および第２のテクスチャのデータをメモリから読み出し、前記第１のテクスチャと前記第２のテクスチャの間で対応領域を定め、前記対応領域内にある前記第１のテクスチャのテクセルと前記第２のテクスチャのテクセルの間で所定の演算処理を行う。
【００１５】
本発明のさらに別の態様もまた、画像処理方法である。この方法は、メモリに保持された第１のテクスチャと第２のテクスチャを切り替えて参照して、前記第１のテクスチャのテクセルと前記第２のテクスチャのテクセルに対して交互に所定の演算処理を行う。
【００１６】
なお、以上の構成要素の任意の組合せ、本発明の表現を方法、装置、システム、記録媒体、コンピュータプログラムなどの間で変換したものもまた、本発明の態様として有効である。
【発明の効果】
【００１７】
本発明によれば、画像データの演算処理を効率良く実行することができる。
【発明を実施するための最良の形態】
【００１８】
図１は、実施の形態に係る画像生成装置２００の構成図である。画像生成装置２００は、描画ブロック１００と制御ブロック１１０と入出力ブロック１２０とがバス１５０で接続されて構成され、入出力ブロック１２０には記憶装置１３０と表示装置１４０が接続される。入出力ブロック１２０は、ネットワーク経由で他の装置と通信して、描画に必要なデータを外部から取得する構成であってもよい。
【００１９】
制御ブロック１１０は、この画像生成装置２００全体を制御するブロックであり、画像生成装置２００内部と、記憶装置１３０、表示装置１４０などの外部周辺装置との間のデータ転送の同期管理、画像生成装置２００内部の各ユニットからの割り込みの処理、タイマーの管理などを行う。
【００２０】
入出力ブロック１２０は、記憶装置１３０に格納された３次元モデル情報や各種パラメータを読み込み、描画ブロック１００に提供する。入出力ブロック１２０は、ネットワーク経由で外部装置から描画に必要なデータを受信して、描画ブロック１００に提供してもよい。入出力ブロック１２０は、描画ブロック１００が出力する描画データを表示装置１４０に表示する。
【００２１】
描画ブロック１００は、入出力ブロック１２０から与えられる３次元モデル情報をもとに描画データを生成し、フレームバッファに書き込むレンダリング処理を行う。
【００２２】
図２は、描画ブロック１００の構成図である。ラスタライザ１０は、入出力ブロック１２０から描画プリミティブの頂点データを受け取る。描画プリミティブは一般的には三角形であり、ラスタライザ１０は、３次元空間上の三角形を投影変換により描画平面上の三角形に変換するビュー変換を行い、さらに、描画平面上の三角形を描画平面の水平方向に沿ってスキャンしながら、１列毎に量子化されたピクセルに変換するラスター処理を行う。ラスタライザ１０により、描画プリミティブがピクセル展開され、各ピクセルについて、ＲＧＢカラー値、α値、Ｚ値を含むピクセル情報が算出される。
【００２３】
ラスタライザ１０は、スキャンラインに沿って所定の大きさのピクセル領域（以下、描画対象領域という）を生成し、後段の描画演算ユニット２０に与える。描画演算ユニット２０には、シェーダユニット３０と、メモリ４０と、テクスチャユニット５０とが含まれる。メモリ４０内には、フレームバッファとテクスチャバッファが設けられる。なお、フレームバッファとテクスチャバッファは、単一のメモリ内に設けられてもよく、物理的に別個のメモリに設けられてもよい。
【００２４】
ラスタライザ１０から描画演算ユニット２０に供給された描画対象領域は、キューにスタックされ、シェーダユニット３０は、キューにスタックされた描画対象領域を順に処理する。
【００２５】
シェーダユニット３０は、ラスタライザ１０により算出されたピクセル情報をもとに、シェーディング処理を行い、テクスチャユニット５０により得られたテクセル情報をもとに、テクスチャマッピング後のピクセル色を定め、メモリ４０内のフレームバッファに描画データを書き込む。シェーダユニット３０は、さらに、フレームバッファに保持された描画データに対して、フォギング、アルファブレンディング等の処理を行い、最終的な描画色を求め、フレームバッファの描画データを更新する。フレームバッファに記憶された描画データは、入出力ブロック１２０により読み出され、表示装置１４０に出力される。
【００２６】
テクスチャユニット５０は、シェーダユニット３０からテクスチャデータを指定するパラメータの入力を受け取り、テクスチャデータのアドレスを算出して、メモリ４０内のテクスチャバッファに対して必要なテクスチャデータを要求する。テクスチャユニット５０は、テクスチャバッファから読み出されたテクスチャデータをキャッシュし、バイリニア補間、トライリニア補間などのフィルタ処理を施して、シェーダユニット３０に出力する。
【００２７】
図３は、描画演算ユニット２０の詳細な構成を説明する図である。描画演算ユニット２０内のシェーダユニット３０は、非同期動作する複数のシェーダクラスタ３２をもち、それぞれが担当するピクセルデータを処理することでピクセルの描画処理を並列に実行する。
【００２８】
分配部１２は、キューにスタックされた描画対象領域の処理を担当するシェーダクラスタ３２を決定し、各種パラメータを生成して、描画対象領域とパラメータをそのシェーダクラスタ３２に与える。
【００２９】
描画演算ユニット２０内には、１つのテクスチャユニット５０が設けられており、各シェーダクラスタ３２は、テクスチャデータを指定するためのテクスチャパラメータを含むテクスチャロード命令をテクスチャユニット５０に入力し、テクスチャユニット５０からテクスチャマッピング処理後のテクスチャデータの出力を受け取る。
【００３０】
シェーダクラスタ３２は、フラットシェーディング、グーローシェーディングなどのシェーディングを行い、各描画ピクセルのカラー値を決定し、メモリ４０内のフレームバッファに書き込む。さらに、シェーダクラスタ３２は、テクスチャユニット５０から出力されたテクスチャデータをもとに、ピクセルにマッピングされたテクセルのカラー値をフレームバッファから読み出されたピクセルのカラー値にブレンドする。シェーダクラスタ３２は、ピクセルのピクセル色、テクセル色、アルファ値、フォグ値が決まると、最終的な描画ピクセルデータをフレームバッファに書き込む。メモリアクセス部３４は、シェーダクラスタ３２によるフレームバッファに対するピクセルデータの読み書きを制御する。
【００３１】
なお、テクスチャユニット５０は、シェーダクラスタ３２からテクスチャロード命令を受けると、テクスチャのアドレス計算、メモリアクセスおよびフィルタリングの処理を行うため、シェーダクラスタ３２における演算に比べて出力が得られるまでに時間がかかる。そのため、シェーダクラスタ３２はテクスチャロード命令の実行後、処理中の描画対象領域以外の描画対象領域の処理を行い、実行効率を上げる。
【００３２】
図４は、テクスチャユニット５０の構成図である。テクスチャユニット５０は、テクスチャ座標値をテクセル座標値に変換してテクスチャバッファ内のアドレスを算出し、算出されたアドレスをもとにテクセル情報を読み出し、ピクセルにマッピングされるテクセルのカラー情報をバイリニアフィルタなどのフィルタリング処理により求める。以下、テクスチャユニット５０の構成を説明する。
【００３３】
演算部５８は、複数のシェーダクラスタ３２からテクスチャロード命令、パラメータ取得命令などの入力を受け付け、命令を順に処理して、処理結果をシェーダクラスタ３２に渡す。
【００３４】
テクスチャロード命令にはテクスチャデータを指定するテクスチャパラメータが含まれる。テクスチャパラメータは、テクスチャ座標値、テクセル座標値、ＬＯＤ（level of detail）値などを含む。
【００３５】
コンフィグレーションレジスタ群５２は、テクスチャユニット５０の動作を規定する各種設定情報をコンフィグレーション情報として保持するコンフィグレーションレジスタの集まりである。コンフィグレーションレジスタ群５２は設定された値を保持するため、同じモードや条件を直前の設定のままで続けて使用する場合は、改めて設定し直す必要はない。
【００３６】
コンフィグレーションレジスタ群５２には、テクスチャを使用するためのベースアドレス、動作モード、パラメータなどをそれぞれ保持するレジスタが含まれ、後述のように２つのテクスチャＡ、Ｂを同時に参照するときは、テクスチャＡのベースアドレス、動作モード、パラメータなどの設定情報を保持したレジスタセットＡと、テクスチャＢのベースアドレス、動作モード、パラメータなどの設定情報を保持したレジスタセットＢが用いられる。したがって、２つのテクスチャＡ、Ｂを同時に参照したり、２つのテクスチャＡ、Ｂを切り替えて参照するときでも、設定情報すなわちコンテクストの切り替えをする必要がなく、コンテクスト切り替えに伴うオーバーヘッドがない。
【００３７】
演算部５８は、コンフィグレーションレジスタ群５２に記憶された設定情報にもとづいてテクスチャデータに対してバイリニア補間などのフィルタリング処理を行う。
【００３８】
記憶部６０は、第１テクスチャデータ６２と第２テクスチャデータ６３を記憶する。記憶部６０は、メモリ４０から読み出された第１テクスチャデータ６２と第２テクスチャデータ６３を保持するバッファとして利用される。記憶部６０は、演算部５８からの要求に応じて、第１テクスチャデータ６２および第２テクスチャデータ６３を演算部５８に供給するが、記憶部６０を介せずに、演算部５８がメモリ４０内のテクスチャバッファから直接第１テクスチャデータ６２および第２テクスチャデータ６３を読み込む構成であってもよい。
【００３９】
図５は、演算部５８の構成図である。演算部５８は、第１テクスチャデータ６２と第２テクスチャデータ６３を取得し、バイリニア補間、トライリニア補間などのフィルタリング処理を行う。演算部５８は、フィルタリング処理を行うために、３段構成の内挿演算器（以下、ＬＩＰと略す）７１〜７７を有する。
【００４０】
演算部５８は、第１段の内挿演算器として４つのＬＩＰ７１〜７４を有し、第２段の内挿演算器として２つのＬＩＰ７５、７６を有し、第３段の内挿演算器として１つのＬＩＰ７７を有する。説明の便宜のため、第１段および第２段の内挿演算器を、上段のＬＩＰ７１、ＬＩＰ７２、およびＬＩＰ７５（以下、これらをまとめて上段演算ブロック３１０という）と、下段のＬＩＰ７３、ＬＩＰ７４、およびＬＩＰ７６（以下、下段演算ブロック３２０という）に分ける。上段演算ブロック３１０および下段演算ブロック３２０による演算結果は、第３段のＬＩＰ７７に入力される。
【００４１】
上段演算ブロック３１０および下段演算ブロック３２０のいずれにおいても、第１段の内挿演算器は、テクセル座標（ｕ，ｖ）のｕ方向についての線形補間を行うものであり、第２段の内挿演算器は、テクセル座標（ｕ，ｖ）のｖ方向についての線形補間を行うものである。したがって、上段演算ブロック３１０および下段演算ブロック３２０では、２段階のフィルタリングを経て、ｕ、ｖの２方向に線形補間を行うバイリニア補間が実現される。
【００４２】
第３段のＬＩＰ７７は、上段演算ブロック３１０によるバイリニア補間の結果と、下段演算ブロック３２０によるバイリニア補間の結果に対して、さらに線形補間を施す。これにより、トライリニア補間が実現される。たとえば、ミップマップテクスチャを例に挙げると、上段演算ブロック３１０と下段演算ブロック３２０は、それぞれ異なる解像度レベルのミップマップテクスチャのバイリニア補間を行い、第３段のＬＩＰ７７は、上段演算ブロック３１０および下段演算ブロック３２０のバイリニア補間の結果を受けて、ミップマップテクスチャの異なる解像度レベル間で内挿演算を行う。
【００４３】
図６（ａ）、（ｂ）は、演算部５８が参照する第１テクスチャデータ６２と第２テクスチャデータ６３を説明する図である。以下、第１テクスチャデータ６２をテクスチャＡ、第２テクスチャデータ６３をテクスチャＢと呼ぶ。演算部５８は、図６（ａ）に示すテクスチャＡ内の４テクセルＡ１〜Ａ４と、図６（ｂ）に示すテクスチャＢ内の４テクセルＢ１〜Ｂ４を取得する。
【００４４】
上段演算ブロック３１０は、テクスチャＡの４テクセルＡ１〜Ａ４に対してバイリニア補間を施す。第１段のＬＩＰ７１は、テクスチャＡの４テクセルの内、上列の２テクセルＡ１およびＡ２の入力を受け、線形補間式Ｘ１＝（１−α）Ａ１＋αＡ２により、テクセルＡ１とＡ２の値を内分比α：（１−α）で内分した補間値Ｘ１を計算して出力する。ここで、補間係数αは０から１の実数である。
【００４５】
同様に、第１段のＬＩＰ７２は、テクスチャＡの４テクセルの内、下列の２テクセルＡ３およびＡ４の入力を受け、線形補間式Ｘ２＝（１−α）Ａ３＋αＡ４による補間値Ｘ２を計算して出力する。第１段の２つのＬＩＰ７１およびＬＩＰ７２によって、４テクセルの上列および下列についてテクセル座標（ｕ，ｖ）のｕ方向についての線形補間が行われたことになる。
【００４６】
第２段のＬＩＰ７５は、第１段の２つのＬＩＰ７１およびＬＩＰ７２の演算結果Ｘ１およびＸ２を入力として受け、これらの演算結果Ｘ１およびＸ２に対して、線形補間式Ｙ１＝（１−α）Ｘ１＋αＸ２により、補間値Ｙ１を計算して出力する。これは、テクセル座標（ｕ，ｖ）のｖ方向についての線形補間を行うものである。
【００４７】
このようにして、上段演算ブロック３１０において、テクスチャＡの４テクセルＡ１〜Ａ４に対して、第１段のＬＩＰ７１およびＬＩＰ７２によってｕ方向の線形補間が施され、第２段のＬＩＰ７５によってｖ方向の線形補間が施され、最終的にｕ、ｖの２方向のバイリニア補間の結果が出力される。
【００４８】
同様に、下段演算ブロック３２０は、テクスチャＢの４テクセルＢ１〜Ｂ４に対してバイリニア補間を施す。第１段のＬＩＰ７３は、テクスチャＢの４テクセルの内、上列の２テクセルＢ１およびＢ２の入力を受け、線形補間式Ｘ３＝（１−α）Ｂ１＋αＢ２による補間値Ｘ３を計算して出力する。また、第１段のＬＩＰ７４は、テクスチャＢの４テクセルの内、下列の２テクセルＢ３およびＢ４の入力を受け、線形補間式Ｘ４＝（１−α）Ｂ３＋αＢ４による補間値Ｘ４を計算して出力する。さらに、第２段のＬＩＰ７６は、第１段の２つのＬＩＰ７３およびＬＩＰ７４の演算結果Ｘ３およびＸ４を入力として受け、これらの演算結果Ｘ３およびＸ４に対して、線形補間式Ｙ２＝（１−α）Ｘ３＋αＸ４により、補間値Ｙ２を計算して出力する。
【００４９】
このようにして、下段演算ブロック３２０において、テクスチャＢの４テクセルＢ１〜Ｂ４に対して、第１段のＬＩＰ７３およびＬＩＰ７４によってｕ方向の線形補間が施され、第２段のＬＩＰ７６によってｖ方向の線形補間が施され、最終的にｕ、ｖの２方向のバイリニア補間の結果が出力される。
【００５０】
第３段のＬＩＰ７７は、第２段の２つのＬＩＰ７５およびＬＩＰ７６の演算結果Ｙ１およびＹ２を入力として受け、これらの演算結果Ｙ１およびＹ２に対して、さらに線形補間式Ｚ＝（１−α）Ｙ１＋αＹ２により、補間値Ｚを計算して出力する。
【００５１】
図５の７つのＬＩＰ７１〜ＬＩＰ７７（これらを総称してＬＩＰ７０と呼ぶ）は、いずれも同じ機能構成をもつ。図７は、ＬＩＰ７０の構成図である。ＬＩＰ７０は、差分器（ＳＵＢ）８１と、乗算器（ＭＵＬ）８２と、加算器（ＡＤＤ）８３と、補間係数αを保持する係数保持部８４とを含む。
【００５２】
ＬＩＰ７０には、第１の入力値Ｐと、第２の入力値Ｑが入力される。差分器８１は、２つの入力値ＰおよびＱの差分Ｑ−Ｐを計算して出力し、乗算器８２に与える。乗算器８２は、差分器８１からは差分Ｑ−Ｐの入力を、係数保持部８４からは補間係数αの入力を受け、差分Ｑ−Ｐに補間係数αを乗じた値α（Ｑ−Ｐ）を出力し、加算器８３に与える。加算器８３は、乗算器８２から乗算結果α（Ｑ−Ｐ）の入力を受け、これに入力値Ｐを加算した値α（Ｑ−Ｐ）＋Ｐを出力する。
【００５３】
ＬＩＰ７０の出力値は、α（Ｑ−Ｐ）＋Ｐ＝（１−α）Ｐ＋αＱと変形できるため、２つの入力値ＰおよびＱを内分比α：（１−α）で線形補間したものであることがわかる。
【００５４】
以下では、差分器８１、乗算器８２、および加算器８３を含むＬＩＰ７０の機能構成を流用して、演算処理に多少の変形を加えることで、ＬＩＰ７０に線形補間以外の演算を行わせる。これにより、演算部５８がバイリニア補間やトライリニア補間以外の有用な演算を行うことができるようになる。
【００５５】
図８は、絶対差分和を計算するための演算部５８の構成を説明する図である。第１段の絶対差分器（以下、ＳＵＢＡＢＳと略す）９１〜９４（以下、これらを総称するときはＳＵＢＡＢＳ９０と呼ぶ）は、図７のＬＩＰ７０の演算処理に変形を加えて２つの入力値の絶対差分を計算できるようにしたものである。
【００５６】
演算部５８には、テクスチャＡの４テクセルＡ１〜Ａ４とテクスチャＢの４テクセルＢ１〜Ｂ４が入力されるが、第１段のＳＵＢＡＢＳ９１〜９４へのテクスチャＡの４テクセルＡ１〜Ａ４およびテクスチャＢの４テクセルＢ１〜Ｂ４の入力の与え方は、図５に示した演算部５８の基本構成とは異なる点に留意する。
【００５７】
上段演算ブロック３１０において、第１段のＳＵＢＡＢＳ９１は、２つのテクスチャＡおよびＢの対応するテクセルの組（Ａ１，Ｂ１）の入力を受け、２テクセルＡ１およびＢ１の絶対差分｜Ａ１−Ｂ１｜を計算して出力する。また、第１段のＳＵＢＡＢＳ９３は、２つのテクスチャＡおよびＢの対応するテクセルの組（Ａ３、Ｂ３）の入力を受け、２テクセルＡ３およびＢ３の絶対差分｜Ａ３−Ｂ３｜を計算して出力する。
【００５８】
第２段のＬＩＰ７５は、第１段のＳＵＢＡＢＳ９１の演算結果｜Ａ１−Ｂ１｜とＳＵＢＡＢＳ９３の演算結果｜Ａ３−Ｂ３｜の入力を受けて、補間係数α＝０．５のもとで、これらの演算結果に対して線形補間を行う。補間係数α＝０．５であるから、第２段のＬＩＰ７５は、２つの演算結果の平均値を計算することになり、Ｙ１＝（｜Ａ１−Ｂ１｜＋｜Ａ３−Ｂ３｜）／２を出力する。
【００５９】
同様に、下段演算ブロック３２０において、第１段のＳＵＢＡＢＳ９２は、２つのテクスチャＡおよびＢの対応するテクセルの組（Ａ２、Ｂ２）の入力を受け、２テクセルＡ２およびＢ２の絶対差分｜Ａ２−Ｂ２｜を計算して出力する。また、第１段のＳＵＢＡＢＳ９４は、２つのテクスチャＡおよびＢの対応するテクセルの組（Ａ４、Ｂ４）の入力を受け、２テクセルＡ４およびＢ４の絶対差分｜Ａ４−Ｂ４｜を計算して出力する。
【００６０】
第２段のＬＩＰ７６は、第１段のＳＵＢＡＢＳ９２の演算結果｜Ａ２−Ｂ２｜とＳＵＢＡＢＳ９４の演算結果｜Ａ４−Ｂ４｜の入力を受けて、同様に、補間係数α＝０．５のもとで、これらの演算結果に対して線形補間を行い、平均値Ｙ２＝（｜Ａ２−Ｂ２｜＋｜Ａ４−Ｂ４｜）／２を出力する。
【００６１】
第３段のＬＩＰ７７は、第２段の２つのＬＩＰ７５およびＬＩＰ７６の演算結果Ｙ１およびＹ２を入力として受け、補間係数α＝０．５のもとで、これらの演算結果に対して線形補間を行う。第３段のＬＩＰ７７は、Ｚ＝（Ｙ１＋Ｙ２）／２＝Σｉ＝１４｜Ａｉ−Ｂｉ｜／４を計算することになる。したがって、演算部５８の最終的な出力値Ｚは、２つのテクスチャＡおよびＢの対応するテクセルの組（Ａ１，Ｂ１）〜（Ａ４、Ｂ４）の絶対差分の和（Sum of Absolute Difference；ＳＡＤ）を与える。演算部５８による絶対差分和を求める演算を２×２ＳＡＤと呼ぶ。
【００６２】
図９は、ＳＵＢＡＢＳ９０の構成図である。ＳＵＢＡＢＳ９０は、図７のＬＩＰ７０の構成を流用したものであり、絶対差分を出力するように演算に変形を加えている。ＳＵＢＡＢＳ９０は、ＬＩＰ７０と同一の差分器８１と、乗算器８２と、加算器８３を含むが、加算器８３は使用しない。また、補間係数αを保持する係数保持部８４の代わりに差分器８１の演算結果である差分Ｑ−Ｐの正負符号を示す値ＳＩＧＮを保持する正負符号保持部８５が設けられる。正負符号保持部８５は、差分Ｑ−Ｐが正であれば、ＳＩＧＮ＝１を、差分Ｑ−Ｐが負であればＳＩＧＮ＝−１を乗算器８２に与える。
【００６３】
差分器８１は２つの入力値ＰおよびＱの差分Ｑ−Ｐを計算して出力し、乗算器８２に与える。乗算器８２は、差分器８１からは差分Ｑ−Ｐの入力を、正負符号保持部８５からは差分Ｑ−Ｐの正負符号値ＳＩＧＮの入力を受け、差分Ｑ−Ｐに正負符号値ＳＩＧＮを乗算する。差分Ｑ−Ｐが正であれば、差分Ｑ−Ｐに＋１が掛けられ、差分Ｑ−Ｐが負であれば、差分Ｑ−Ｐに−１が掛けられるため、乗算器８２による演算結果はＰとＱの差分の絶対値｜Ｐ−Ｑ｜となる。乗算器８２による演算結果｜Ｐ−Ｑ｜はそのままＳＵＢＡＢＳ９０の出力となる。
【００６４】
図１０は、テクスチャユニット５０による２×２ＳＡＤ演算の結果がシェーダユニット３０に与えられる様子を説明する図である。テクスチャユニット５０は、テクスチャＡの４テクセルＡ１〜Ａ４と、テクスチャＢの４テクセルＢ１〜Ｂ４の入力を受け、絶対差分和Ｚ＝Σｉ＝１４｜Ａｉ−Ｂｉ｜／４を計算してシェーダユニット３０に与える。
【００６５】
仮にシェーダユニット３０が、絶対差分和の演算を行うとすれば、テクスチャユニット５０からテクスチャＡの４テクセルＡ１〜Ａ４とテクスチャＢの４テクセルＢ１〜Ｂ４のデータをすべて受け取る必要があり、データ転送によるシェーダユニット３０とテクスチャユニット５０間のバスの占有率が高くなる。しかしながら、本実施の形態では、テクスチャユニット５０において絶対差分和Ｚの計算が行われ、シェーダユニット３０には、絶対差分和Ｚだけが入力されるため、テクスチャユニット５０からシェーダユニット３０へのデータ転送量を抑えることができる。
【００６６】
また、テクスチャユニット５０において絶対差分和の演算を行うことにより、シェーダユニット３０における演算量を減らすことができ、シェーダユニット３０はより複雑な演算処理に時間をかけることができるようになる。テクスチャユニット５０では、比較的単純な演算を行い、シェーダユニット３０では、より複雑で高度な演算を行うという分散処理が可能となり、全体の処理効率が向上する。
【００６７】
なお、上記の説明では、２つのテクスチャＡ、Ｂの対応するテクセル間で差分演算を行ったが、１つのテクスチャの異なるテクセル間で差分演算を行ってもよい。たとえば、テクスチャＡ内の４テクセルＡ１〜Ａ４と別の４テクセルＡ１’〜Ａ４’の間で絶対差分和の演算を行ってもよい。
【００６８】
図１１は、絶対差分を計算するための演算部５８の構成を説明する図である。図１１の演算部５８は、図８の演算部５８と同じ構成をもつが、第３段のＬＩＰ７７が利用されずに、第２段のＬＩＰ７５、ＬＩＰ７６から直接演算結果が出力される点が異なる。
【００６９】
上段演算ブロック３１０において、第１段のＳＵＢＡＢＳ９１は、２つのテクスチャＡおよびＢの対応するテクセルＡ１およびＢ１の絶対差分｜Ａ１−Ｂ１｜を計算して出力し、ＳＵＢＡＢＳ９３は、２つのテクスチャＡおよびＢの対応するテクセルＡ３およびＢ３の絶対差分｜Ａ３−Ｂ３｜を計算して出力する。
【００７０】
第２段のＬＩＰ７５は、第１段のＳＵＢＡＢＳ９１の演算結果｜Ａ１−Ｂ１｜を第１の入力値Ｘ１として受け、第１段のＳＵＢＡＢＳ９３の演算結果｜Ａ３−Ｂ３｜を第２の入力値Ｘ３として受け、補間係数α＝０または１のもとで、これらの入力値に対して線形補間を行う。線形補間式（１−α）Ｘ１＋αＸ３において、補間係数α＝０のときは、第１の入力値Ｘ１がそのまま出力され、補間係数α＝１のときは、第２の入力値Ｘ３がそのまま出力されるため、第２段のＬＩＰ７５は、第１段の２つのＳＵＢＡＢＳ９１およびＳＵＢＡＢＳ９３のいずれかの演算結果を切り替えて出力するスイッチとして作用する。このようにして、第２段のＬＩＰ７５は、補間係数α＝０のとき、実線で示したように、Ｙ１＝Ｘ１＝｜Ａ１−Ｂ１｜を出力し、補間係数α＝１のとき、点線で示したように、Ｙ３＝Ｘ３＝｜Ａ３−Ｂ３｜を出力する。
【００７１】
同様に、下段演算ブロック３２０において、第１段のＳＵＢＡＢＳ９２は、２つのテクスチャＡおよびＢの対応するテクセルＡ２およびＢ２の絶対差分｜Ａ２−Ｂ２｜を計算して出力し、第１段のＳＵＢＡＢＳ９４は、２つのテクスチャＡおよびＢの対応するテクセルＡ４およびＢ４の絶対差分｜Ａ４−Ｂ４｜を計算して出力する。
【００７２】
第２段のＬＩＰ７６は、第１段のＳＵＢＡＢＳ９２の演算結果｜Ａ２−Ｂ２｜を第１の入力値Ｘ２として受け、ＳＵＢＡＢＳ９４の演算結果｜Ａ４−Ｂ４｜を第２の入力値Ｘ４として受け、補間係数α＝０または１のもとで、これらの入力値について線形補間を行い、補間係数α＝０のとき、実線で示したように、Ｙ２＝Ｘ２＝｜Ａ２−Ｂ２｜を出力し、補間係数α＝１のとき、点線で示したように、Ｙ４＝Ｘ４＝｜Ａ４−Ｂ４｜を出力する。
【００７３】
上段演算ブロック３１０と下段演算ブロック３２０は並列に実行され、演算結果Ｙ１〜Ｙ４が出力される。演算部５８の最終的な出力値Ｙ１〜Ｙ４は、それぞれ、２つのテクスチャＡ、Ｂの対応するテクセルの組（Ａ１，Ｂ１）〜（Ａ４、Ｂ４）の絶対差分（Absolute Difference；ＡＤ）である。演算部５８による絶対差分を求める演算を１×１ＡＤと呼ぶ。
【００７４】
なお、第２段のＬＩＰ７５およびＬＩＰ７６において、それぞれ、補間係数αを０と１の間で切り替えることにより、絶対差分値Ｙ１とＹ３、Ｙ２とＹ４が交互に出力されるように構成したが、ＳＵＢＡＢＳ９１〜９４からそれぞれの演算結果Ｘ１〜Ｘ４が直接出力されるように構成することにより、４つの絶対差分値Ｙ１〜Ｙ４が同時に出力されるように構成してもよい。
【００７５】
１×１ＡＤ演算では、図８の２×２ＳＡＤ演算とは違って、２つのテクスチャＡ、Ｂの対応するテクセル毎に差分を求めて出力すればよいため、並列に動作する上段演算ブロック３１０と下段演算ブロック３２０の演算結果がそのまま並列に出力され、２×２ＳＡＤ演算よりも並列度が高くなっている。
【００７６】
図１２は、テクスチャユニット５０による１×１ＡＤ演算の結果がシェーダユニット３０に与えられる様子を説明する図である。テクスチャユニット５０は、実線で示したテクスチャＡの２テクセルＡ１およびＡ２と、テクスチャＢの２テクセルＢ１およびＢ２の入力を受け、絶対差分値Ｙ１＝｜Ａ１−Ｂ１｜およびＹ２＝｜Ａ２−Ｂ２｜を計算し、シェーダユニット３０に与える。また、テクスチャユニット５０は、点線で示したテクスチャＡの２テクセルＡ３およびＡ４と、テクスチャＢの２テクセルＢ３およびＢ４の入力を受け、絶対差分値Ｙ３＝｜Ａ３−Ｂ３｜およびＹ４＝｜Ａ４−Ｂ４｜を計算し、シェーダユニット３０に与える。
【００７７】
仮にシェーダユニット３０でテクスチャＡおよびＢの対応する各テクセルの組について１×１ＡＤ演算を行うとすると、テクスチャＡの４テクセルＡ１〜Ａ４とテクスチャＢの４テクセルＢ１〜Ｂ４のすべてのデータをテクスチャユニット５０から受け取る必要がある。これに対して、テクスチャユニット５０で１×１ＡＤ演算を行うことにより、シェーダユニット３０は演算結果Ｙ１〜Ｙ４だけを受け取ればよいので、テクスチャユニット５０からシェーダユニット３０へのデータ転送量を半分に減らすことができる。
【００７８】
図１３は、テクスチャの４テクセルの最小値を求めるための演算部５８の構成を説明する図である。第１段の最小値算出器（以下、ＭＩＮと略す）３０１〜３０４（以下、これらを総称するときはＭＩＮ３００と呼ぶ）は、図７のＬＩＰ７０の演算処理に変形を加えて２つの入力値の最小値を計算できるようにしたものである。
【００７９】
演算部５８には、テクスチャＡの４テクセルＡ１〜Ａ４とテクスチャＢの４テクセルＢ１〜Ｂ４が入力されるが、第１段のＭＩＮ３０１〜３０４へのテクスチャＡの４テクセルＡ１〜Ａ４およびテクスチャＢの４テクセルＢ１〜Ｂ４の入力の与え方は、図５に示した演算部５８の基本構成とは異なる。
【００８０】
上段演算ブロック３１０において、第１段のＭＩＮ３０１は、テクスチャＡの４テクセルの内、上列の２テクセルＡ１およびＡ２の入力を受け、２テクセルＡ１およびＡ２の内、いずれか小さい方を求め、演算結果ｍｉｎ（Ａ１，Ａ２）を出力する。また、ＭＩＮ３０３は、テクスチャＢの４テクセルの内、上列の２テクセルＢ１およびＢ２の入力を受け、２テクセルＢ１およびＢ２の内、いずれか小さい方を求め、演算結果ｍｉｎ（Ｂ１，Ｂ２）を出力する。
【００８１】
第２段のＬＩＰ７５は、第１段のＭＩＮ３０１の演算結果ｍｉｎ（Ａ１，Ａ２）を第１の入力値ＸＡ１として受け、第１段のＭＩＮ３０３の演算結果ｍｉｎ（Ｂ１，Ｂ２）を第２の入力値ＸＢ１として受け、補間係数α＝０または１のもとで、これらの入力値に対して線形補間を行う。第２段のＬＩＰ７５は、第１段の２つのＭＩＮ３０１およびＭＩＮ３０３のいずれかの演算結果を切り替えて出力するスイッチとして作用し、補間係数α＝０のとき、実線で示したように、ＹＡ１＝ＸＡ１＝ｍｉｎ（Ａ１，Ａ２）を出力し、補間係数α＝１のとき、点線で示したように、ＹＢ１＝ＸＢ１＝ｍｉｎ（Ｂ１，Ｂ２）を出力する。
【００８２】
同様に、下段演算ブロック３２０において、第１段のＭＩＮ３０２は、テクスチャＡの下列の２テクセルＡ３およびＡ４の内、いずれか小さい方を求め、演算結果ｍｉｎ（Ａ３，Ａ４）を出力する。また、第１段のＭＩＮ３０３は、テクスチャＢの下列の２テクセルＢ３およびＢ４の内、いずれか小さい方を求め、演算結果ｍｉｎ（Ｂ３，Ｂ４）を出力する。
【００８３】
第２段のＬＩＰ７６は、第１段のＭＩＮ３０２の演算結果ｍｉｎ（Ａ３，Ａ４）を第１の入力値ＸＡ２として受け、第１段のＭＩＮ３０４の演算結果ｍｉｎ（Ｂ３，Ｂ４）を第２の入力値ＸＢ２として受け、補間係数α＝０または１のもとで、これらの入力値に対して線形補間を行い、補間係数α＝０のとき、実線で示したように、ＹＡ２＝ＸＡ２＝ｍｉｎ（Ａ３，Ａ４）を出力し、補間係数α＝１のとき、点線で示したように、ＹＢ２＝ＸＢ２＝ｍｉｎ（Ｂ３，Ｂ４）を出力する。
【００８４】
第２段のＬＩＰ７５およびＬＩＰ７６において補間係数α＝０のとき、第３段のＭＩＮ３０７は、第２段のＬＩＰ７５およびＬＩＰ７６の演算結果ＹＡ１およびＹＡ２の入力を受け、いずれか小さい方を求め、演算結果ＺＡ＝ｍｉｎ（ＹＡ１，ＹＡ２）を出力する。ＹＡ１＝ｍｉｎ（Ａ１，Ａ２）、ＹＡ２＝ｍｉｎ（Ａ３，Ａ４）であることより、演算結果ＺＡ＝ｍｉｎ（Ａ１，Ａ２，Ａ３，Ａ４）であり、テクスチャＡの４テクセルＡ１〜Ａ４の最小値を求める演算となっている。
【００８５】
第２段のＬＩＰ７５およびＬＩＰ７６において補間係数α＝１のとき、第３段のＭＩＮ３０７は、第２段のＬＩＰ７５およびＬＩＰ７６の演算結果ＹＢ１およびＹＢ２の入力を受け、いずれか小さい方を求めて、演算結果ＺＢ＝ｍｉｎ（ＹＢ１，ＹＢ２）を出力する。ＹＢ１＝ｍｉｎ（Ｂ１，Ｂ２）、ＹＢ２＝ｍｉｎ（Ｂ３，Ｂ４）であることより、演算結果ＺＢ＝ｍｉｎ（Ｂ１，Ｂ２，Ｂ３，Ｂ４）であり、テクスチャＢの４テクセルＢ１〜Ｂ４の最小値を求める演算となっている。
【００８６】
このようにして、演算部５８は、２つのテクスチャＡおよびＢを切り替えて参照することにより、テクスチャＡの４テクセルＡ１〜Ａ４およびテクスチャＢの４テクセルＢ１〜Ｂ４のそれぞれの最小値ＺＡ、ＺＢを計算して出力する。なお、テクセルが、ＲＧＢカラーや透明度などの複数のコンポーネントからなる場合は、それぞれのコンポーネントについて最小値が出力される。演算部５８によるテクスチャの４テクセルの最小値を求める演算を２×２ＭＩＮと呼ぶ。
【００８７】
図１４は、ＭＩＮ３００の構成図である。ＭＩＮ３００は、図７のＬＩＰ７０の構成を流用したものであり、最小値を出力するように演算に変形を加えている。ＭＩＮ３００は、ＬＩＰ７０と同一の差分器８１と、乗算器８２と、加算器８３を含む。正負符号保持部８５は、差分器８１の演算結果である差分Ｑ−Ｐの正負符号を示す値ＳＩＧＮを保持し、差分Ｑ−Ｐが正であればＳＩＧＮ＝１を、差分Ｑ−Ｐが負であればＳＩＧＮ＝−１を係数保持部８４に与える。係数保持部８４は、正負符号保持部８５からＳＩＧＮ＝１が与えられると、補間係数αを０に設定し、正負符号保持部８５からＳＩＧＮ＝−１が与えられると、補間係数αを１に設定し、補間係数αを乗算器８２に与える。
【００８８】
差分器８１は２つの入力値Ｐ、Ｑの差分Ｑ−Ｐを計算して出力し、乗算器８２に与える。乗算器８２は、差分器８１からは差分Ｑ−Ｐの入力を、係数保持部８４からは補間係数αの入力を受け、差分Ｑ−Ｐに補間係数αを乗算する。差分Ｑ−Ｐが正であれば、乗算器８２は差分Ｑ−Ｐに０を掛けるため、演算結果は０になり、差分Ｑ−Ｐが負であれば、乗算器８２は差分Ｑ−Ｐに１を掛けるため、演算結果はＱ−Ｐになる。乗算器８２は、演算結果を加算器８３に与える。
【００８９】
加算器８３は、乗算器８２による演算結果に入力値Ｐを加算する。差分Ｑ−Ｐが正であれば、加算器８３は、乗算器８２からの出力値０に入力値Ｐを加算することになり、演算結果はＰになる。差分Ｑ−Ｐが負であれば、加算器８３は、乗算器８２からの出力値Ｑ−Ｐに入力値Ｐを加算することになり、演算結果はＱになる。したがって、加算器８３による演算結果は、入力値Ｐ、Ｑの小さい方を出力することになり、ＭＩＮ３００の最終的な出力はｍｉｎ（Ｐ，Ｑ）である。なお、２つの入力値ＰとＱが等しいときは、正負符号保持部８５は、ＳＩＧＮ＝１、−１のいずれかを出力するように構成すればよい。
【００９０】
図１５は、テクスチャユニット５０による２×２ＭＩＮ演算の結果がシェーダユニット３０に与えられる様子を説明する図である。テクスチャユニット５０は、テクスチャＡの４テクセルＡ１〜Ａ４の入力を受け、４テクセルの最小値ＺＡをシェーダユニット３０に与える。また、テクスチャユニット５０は、テクスチャＢの４テクセルＢ１〜Ｂ４の入力を受け、４テクセルの最小値ＺＢをシェーダユニット３０に与える。
【００９１】
シェーダユニット３０には、テクスチャユニット５０で求めた最小値ＺＡ、ＺＢだけが入力されるため、テクスチャユニット５０からシェーダユニット３０へのデータ転送量を１／４に抑えることができる。
【００９２】
図１６は、テクスチャの２テクセルの最小値を求めるための演算部５８の構成を説明する図である。演算部５８の第１段のＭＩＮ３０１〜３０４には、図１３と同様に、テクスチャＡのテクセルＡ１〜Ａ４とテクスチャＢのテクセルＢ１〜Ｂ４が入力されるが、第２段のＬＩＰ７５、７６から直接演算結果が出力される点が異なる。
【００９３】
上段演算ブロック３１０において、第２段のＬＩＰ７５は、第１段の２つのＭＩＮ３０１およびＭＩＮ３０３のいずれかの演算結果を切り替えて出力するスイッチとして作用し、補間係数α＝０のとき、テクスチャＡの４テクセルの内、上列の２テクセルＡ１およびＡ２の最小値ＹＡ１＝ｍｉｎ（Ａ１，Ａ２）を出力し、補間係数α＝１のとき、テクスチャＢの４テクセルの内、上列の２テクセルＢ１およびＢ２の最小値ＹＢ１＝ｍｉｎ（Ｂ１，Ｂ２）を出力する。第２段のＬＩＰ７５の出力はそのまま演算部５８の出力となる。
【００９４】
同様に、下段演算ブロック３２０において、第２段のＬＩＰ７６は、第１段の２つのＭＩＮ３０２およびＭＩＮ３０４のいずれかの演算結果を切り替えて出力するスイッチとして作用し、補間係数α＝０のとき、テクスチャＡの４テクセルの内、下列の２テクセルＡ３およびＡ４の最小値ＹＡ２＝ｍｉｎ（Ａ３，Ａ４）を出力し、補間係数α＝１のとき、テクスチャＢの４テクセルの内、下列の２テクセルＢ３およびＢ４の最小値ＹＢ２＝ｍｉｎ（Ｂ３，Ｂ４）を出力する。第２段のＬＩＰ７６の出力はそのまま演算部５８の出力となる。
【００９５】
このようにして、上段演算ブロック３１０からは、テクスチャＡの２テクセルＡ１およびＡ２の最小値ＹＡ１と、テクスチャＢの２テクセルＢ１およびＢ２の最小値ＹＢ１が出力され、下段演算ブロック３２０からは、テクスチャＡの別の２テクセルＡ３およびＡ４の最小値ＹＡ２と、テクスチャＢの別の２テクセルＢ３およびＢ４の最小値ＺＢ２が出力される。演算部５８によるテクスチャの２テクセルの最小値を求める演算を２×１ＭＩＮと呼ぶ。
【００９６】
図１７は、テクスチャユニット５０による２×１ＭＩＮ演算の結果がシェーダユニット３０に与えられる様子を説明する図である。テクスチャユニット５０は、テクスチャＡの４テクセルＡ１〜Ａ４の入力を受け、上列２テクセルＡ１およびＡ２の最小値ＹＡ１と、下列２テクセルＡ３およびＡ４の最小値ＹＡ２をシェーダユニット３０に与える。また、テクスチャユニット５０は、テクスチャＢの４テクセルＢ１〜Ｂ４の入力を受け、上列２テクセルＢ１およびＢ２の最小値ＹＢ１と、下列２テクセルＢ３およびＢ４の最小値ＹＢ２をシェーダユニット３０に与える。
【００９７】
シェーダユニット３０には、４テクセルの上列の最小値と下列の最小値だけが入力されるため、テクスチャユニット５０からシェーダユニット３０へのデータ転送量を半分に抑えることができる。
【００９８】
図１３および図１６において、２つの入力値ＰおよびＱのいずれか小さい方を求める最小値算出器（ＭＩＮ）に代えて、２つの入力値ＰおよびＱのいずれか大きい方を求める最大値算出器（ＭＡＸ）を用いれば、２×２ＭＡＸおよび２×１ＭＡＸの演算が可能になる。最大値算出器は、図１４のＭＩＮ３００において、差分値Ｑ−Ｐが正であるときに、補間係数αを１に、差分値Ｑ−Ｐが負であるときに、補間係数αを０にするように変形することで実現することができる。
【００９９】
上記の演算部５８によるＳＡＤ、ＡＤ、ＭＩＮ、ＭＡＸの各演算では、２つのテクスチャＡ、Ｂから合計８個のテクセル値を取得し、演算部５８の第１段に入力したが、１つのテクスチャから８個のテクセル値を取得して、演算部５８の第１段に入力してもよい。たとえば、図１３において、第２段の２つのＬＩＰ７５、ＬＩＰ７６をそれぞれ最小値算出器であるＭＩＮ３０５、ＭＩＮ３０６に置き換えることにより、２×４ＭＩＮを計算することもできる。この場合、上段演算ブロック３１０では、テクスチャＡの８テクセルＡ１〜Ａ８の内、Ａ１、Ａ２がＭＩＮ３０１に入力され、Ａ３、Ａ４がＭＩＮ３０３に入力され、４テクセルＡ１〜Ａ４の最小値が求められる。さらに、下段演算ブロック３２０では、テクスチャＡの８テクセルＡ１〜Ａ８の内、Ａ５、Ａ６がＭＩＮ３０２に入力され、Ａ７、Ａ８がＭＩＮ３０４に入力され、４テクセルＡ５〜Ａ８の最小値が求められる。最後に、第３段のＭＩＮ３０７において、上段演算ブロック３１０と下段演算ブロック３２０の演算結果にもとづき、テクスチャＡの８テクセルＡ１〜Ａ８の最小値が求められる。同様にして１つのテクスチャに対して２×４ＭＡＸなども計算することができる。
【０１００】
以上述べた演算部５８によるＳＡＤ、ＡＤ、ＭＩＮ、ＭＡＸなどの演算は、さまざまな画像処理に利用することができる。たとえば、動画のフレーム画像をテクスチャデータとして用いれば、演算部５８は、２枚のフレーム画像間の差分演算を行うことができ、フレーム間符号化に役立てることができる。以下、演算部５８による各種演算の画像処理への適用例の一つとして、ＭＰＥＧ符号化処理を説明する。
【０１０１】
図１８は、実施の形態に係る画像符号化装置４００の構成図である。テクスチャユニット５０は、動画のフレーム間の差分を演算し、演算結果をシェーダユニット３０に与える。シェーダユニット３０は、差分演算結果にもとづいて、動画フレームの圧縮符号化を行う。
【０１０２】
カメラなどで撮影された画像フレームがメモリ４０にバッファされ、テクスチャユニット５０は、メモリ４０から画像フレームを連続的に読み出す。テクスチャユニット５０の記憶部６０には、第１フレーム画像４０２と第２フレーム画像４０３が一時的に保持される。これらは連続する２つのフレーム画像であり、図４の第１テクスチャデータ６２、第２テクスチャデータ６３に相当する。
【０１０３】
フレーム差分演算部４１０は、図４の演算部５８に相当し、第１フレーム画像４０２と第２フレーム画像４０３の差分を求める。ＭＰＥＧ−４では、動き補償と呼ばれる技術が用いられる。動き補償では、連続する画像フレーム間でマクロブロック単位でデータがどの方向へどれだけ動いたかを示す動きベクトルを求め、動きベクトルの情報を用いて、フレーム間圧縮符号化を行う。マクロブロックは８×８ピクセルのブロック４個から構成され、全体サイズは１６×１６ピクセルである。
【０１０４】
動き補償のために、フレーム差分演算部４１０は、２×２ＳＡＤ演算を利用する。フレーム差分演算部４１０は、第１フレーム画像４０２内のあるマクロブロック（以下、対象マクロブロックという）に対して、対象マクロブロックの位置の近傍で第２フレーム画像４０４内の対応するマクロブロック（以下、予測マクロブロックという）の候補をいくつか選択する。
【０１０５】
フレーム差分演算部４１０は、対象マクロブロックと予測マクロブロックの候補との間で、２×２ＳＡＤ演算を適用して、２つのマクロブロック間の絶対差分和を求める。フレーム差分演算部４１０は、すべての予測マクロブロックの候補について、対象マクロブロックとの絶対差分和を求め、絶対差分和の値が最も小さい予測マクロブロックの候補を最終的な予測マクロブロックとして特定する。これにより、第１フレーム画像４０２対象マクロブロックに対して誤差の最も小さい予測マクロブロックが得られ、対象マクロブロックから予測マクロブロックへの動きを示す動きベクトルが定まる。
【０１０６】
このように、フレーム差分演算部４１０は、第１フレーム画像４０２の各対象マクロブロックに対して、第２フレーム画像４０４の予測マクロブロックを特定し、マクロブロック単位で動きベクトルを求める。
【０１０７】
フレーム差分演算部４１０は、動き補償の基準となるフレーム画像とともに、各マクロブロックの動きベクトルの情報と画像の差分データをシェーダユニット３０のフレーム符号化処理部４２０に与える。
【０１０８】
シェーダユニット３０のフレーム符号化処理部４２０は、動き補償の基準となるフレーム画像、動きベクトルの情報、および差分データを用いて、フレーム間圧縮符号化を行い、符号化画像データを生成し、メモリ４０に記憶する。
【０１０９】
テクスチャユニット５０は、第１フレーム画像４０２と第２フレーム画像４０３の間の差分演算が終わると、次のフレーム画像のペアについて、同様にフレーム間差分を計算し、動きベクトルを求め、シェーダユニット３０に与える。シェーダユニット３０は、引き続きフレーム間圧縮符号化により符号化画像データを生成する。
【０１１０】
本実施の形態の画像符号化装置４００によれば、テクスチャユニット５０は、内挿演算器を利用して、比較的単純なフレーム間差分演算を行い、動き補償におけるマクロブロックの動きベクトルを算出し、その結果をシェーダユニット３０に与える。シェーダユニット３０は、動きベクトルの情報にもとづいて、離散コサイン変換、離散ウェーブレット変換などの空間周波数領域への変換、量子化、および可変長符号化などを含む一連の動画フレームの符号化処理を行う。テクスチャユニット５０には単純な差分演算、シェーダユニット３０にはより複雑な符号化演算をさせ、符号化処理を分散させることにより、シェーダユニット３０が単独で符号化処理に係るすべての演算を行う場合に比べて、処理の効率が向上する。
【０１１１】
また、テクスチャユニット５０は、テクスチャ演算能力が高いため、フレーム画像を縮小して解像度を落とすことなく、高い解像度レベルのまま差分演算を行うことができる。テクスチャユニット５０は、画像のフレーム間差分を非常に高い精度で行い、シェーダユニット３０には演算結果だけを与え、シェーダユニット３０は、テクスチャユニット５０の演算結果を受けて、より複雑な画像処理を行うといった役割分担をもたせ、画像処理の精度と処理効率の両面を向上させることができる。
【０１１２】
上記の説明では、画像符号化装置４００は、フレーム間符号化を行ったが、同様の方法でフレーム内符号化を行ってもよい。この場合、テクスチャユニット５０のフレーム差分演算部４１０は、フレーム画像内の異なるブロック間の差分を求め、その結果をシェーダユニット３０に与える。シェーダユニット３０のフレーム符号化処理部４２０は、フレーム画像内の異なるブロック間の差分結果にもとづいて、フレーム内圧縮符号化を行う。
【０１１３】
上記の説明では、画像符号化装置４００は、カメラなどで撮影した動画を圧縮符号化したが、シェーダユニット３０が生成した３次元コンピュータグラフィックスの動画を圧縮符号化してもよい。シェーダユニット３０が生成した３次元コンピュータグラフィックスの動画は、メモリ４０に記憶され、テクスチャユニット５０がメモリ４０に格納された動画のフレーム間差分演算を行い、シェーダユニット３０がフレーム間符号化処理を行うことにより、３次元コンピュータグラフィックスの動画のＭＰＥＧ符号化が行われる。
【０１１４】
以上、本発明を実施の形態をもとに説明した。実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
【０１１５】
上記の説明では、テクスチャユニット５０は、２つのテクスチャデータ間の演算処理を行ったが、３つ以上のテクスチャデータ間で演算処理を行ってもよい。また、たとえば４つのテクスチャデータに関するパラメータなどの設定情報をすべてコンフィグレーションレジスタ群５２に設定しておき、４つのテクスチャデータの内、まず２つのテクスチャデータについて、コンフィグレーションレジスタ群５２の設定情報を参照して、差分演算処理などを行い、その後、コンフィグレーションレジスタ群５２に設定された他の２つのテクスチャデータに関する設定情報を参照して、他の２つのテクスチャデータの差分演算処理を引き続き行ってもよい。これにより、コンフィグレーションレジスタ群５２の設定情報の切り替えを行わずに、連続して４つのテクスチャデータの演算処理を行うことができる。
【０１１６】
上記の説明では、テクスチャユニット５０の内挿演算器の構成を流用した各種演算機能の画像処理への適用例として、動画の圧縮符号化を説明したが、これ以外にもさまざまな適用例がありうる。たとえば、テクスチャユニット５０は、２枚の静止画をテクスチャデータとして読み込み、各種演算機能を利用して、２枚の静止画のパターンマッチングを行うこともできる。また、テクスチャユニット５０は、各種演算機能を利用して、１枚の画像からエッジを抽出する処理を行うこともできる。
【０１１７】
さらに、テクスチャユニット５０が扱うテクスチャデータは、必ずしも画像データである必要はなく、たとえば画像の奥行き情報を示すＺ値など画像に関する任意の情報であってもよく、画像に関する情報に対して内挿演算器を流用して各種演算を施すことができる。
【図面の簡単な説明】
【０１１８】
【図１】実施の形態に係る画像生成装置の構成図である。
【図２】図１の描画ブロックの構成図である。
【図３】図２の描画演算ユニットの詳細な構成を説明する図である。
【図４】図３のテクスチャユニットの構成図である。
【図５】図４の演算部の構成図である。
【図６】図５の演算部が参照する第１テクスチャデータと第２テクスチャデータを説明する図である。
【図７】図５の内挿演算器の構成図である。
【図８】絶対差分和を計算するための図４の演算部の構成を説明する図である。
【図９】図８の全体差分器の構成図である。
【図１０】テクスチャユニットによる絶対差分和演算の結果がシェーダユニットに与えられる様子を説明する図である。
【図１１】絶対差分を計算するための図４の演算部の構成を説明する図である。
【図１２】テクスチャユニットによる絶対差分演算の結果がシェーダユニットに与えられる様子を説明する図である。
【図１３】テクスチャの４テクセルの最小値を求めるための図４の演算部の構成を説明する図である。
【図１４】図１３の最小値算出器の構成図である。
【図１５】テクスチャユニットによる最小値算出演算の結果がシェーダユニットに与えられる様子を説明する図である。
【図１６】テクスチャの２テクセルの最小値を求めるための図４の演算部の構成を説明する図である。
【図１７】テクスチャユニットによる最小値算出演算の結果がシェーダユニットに与えられる様子を説明する図である。
【図１８】実施の形態に係る画像符号化装置の構成図である。
【符号の説明】
【０１１９】
１０  ラスタライザ、  １２  分配部、  ２０  描画演算ユニット、  ３０  シェーダユニット、  ３２  シェーダクラスタ、  ３６  メモリアクセス部、  ４０  メモリ、  ５０  テクスチャユニット、  ５２  コンフィグレーションレジスタ群、  ５８  演算部、  ６０  記憶部、  ６２  第１テクスチャデータ、  ６３  第２テクスチャデータ、  ７０  内挿演算器、  ８１  差分器、  ８２  乗算器、  ８３  加算器、  ８４  係数保持部、  ８５  正負符号保持部、  ９０  絶対差分器、  １００  描画ブロック、  １１０  制御ブロック、  １２０  入出力ブロック、  １３０  記憶装置、  １４０  表示装置、  １５０  バス、  ２００  画像生成装置、  ３００  最小値算出器、  ４００  画像符号化装置、  ４０２  第１フレーム画像、  ４０３  第２フレーム画像、  ４１０  フレーム差分演算部、  ４２０  フレーム符号化処理部。
【図１】
2005309900.tif 000003
【図２】
2005309900.tif 000004
【図３】
2005309900.tif 000005
【図４】
2005309900.tif 000006
【図５】
2005309900.tif 000007
【図６】
2005309900.tif 000008
【図７】
2005309900.tif 000009
【図８】
2005309900.tif 000010
【図９】
2005309900.tif 000011
【図１０】
2005309900.tif 000012
【図１１】
2005309900.tif 000013
【図１２】
2005309900.tif 000014
【図１３】
2005309900.tif 000015
【図１４】
2005309900.tif 000016
【図１５】
2005309900.tif 000017
【図１６】
2005309900.tif 000018
【図１７】
2005309900.tif 000019
【図１８】
2005309900.tif 000020