(57)【要約】  本発明による画像処理装置は、スケーリング部、係数テクスチャ演算部、及びピクセルデータ変換部を有する。スケーリング部には第１のアレイが渡される。第１のアレイでは複数のピクセルデータがマトリックス状に配置されている。スケーリング部は、第１のアレイに含まれているピクセルデータを所定回数ずつ第１のアレイの水平方向にコピーして第２のアレイを構成する。係数テクスチャ演算部は、第２のアレイに含まれている所定数のピクセルデータごとに、所定の係数テクスチャを用いた演算を繰り返し行う。ピクセルデータ変換部は、係数テクスチャを用いた演算で得られた所定数のピクセルデータの成分をピクセルデータごとに所定のパターンで変換する。ピクセルデータ変換部は特に、それら所定数のピクセルデータの成分のうち、特定の位置にある成分をピクセルデータごとに足し合わせて一つの成分に変換する。
2008146406.tif 000002
【特許請求の範囲】
【請求項１】
複数のピクセルデータをマトリックス状に配置した第１のアレイを単位として所定の操作により第２のアレイを構成するスケーリング部（11A）と、
前記第２のアレイに含まれる所定数のピクセルデータごとに、所定の係数テクスチャを用いた演算を繰り返し行う係数テクスチャ演算部（11B）と、
前記係数テクスチャを用いた演算で得られた前記所定数のピクセルデータの成分をピクセルデータごとに変換するピクセルデータ変換部（11C）と、
を有する画像処理装置。
【請求項２】
前記画像処理装置がグラフィックス処理用のプロセッサ（11）を有し、
前記ピクセルデータ変換部（11C）がピクセルデータの成分の変換に前記プロセッサ（11）の成分並べ替え機能を利用する、
請求項１に記載の画像処理装置。
【請求項３】
前記ピクセルデータ変換部（11C）によって得られるピクセルデータの各成分のサンプリング周波数が、前記第１のアレイに含まれるピクセルデータの各成分のサンプリング周波数とは異なる値に変換される、請求項１に記載の画像処理装置。
【請求項４】
複数のピクセルデータをマトリックス状に配置した第１のアレイ、に含まれるピクセルデータを単位として所定の操作により第２のアレイを構成するステップ（S3）と、
前記第２のアレイに含まれている所定数のピクセルデータごとに、所定の係数テクスチャを用いた演算を繰り返し行うステップ（S4）と、
前記係数テクスチャを用いた演算で得られた前記所定数のピクセルデータの成分をピクセルデータごとに変換するステップ（S4）と、
を有する画像処理方法。
【請求項５】
前記所定数のピクセルデータの成分を変換するステップ（S4）では、グラフィックス処理用のプロセッサ（11）の成分並べ替え機能を利用する、請求項４に記載の画像処理方法。
【請求項６】
前記所定数のピクセルデータの成分を変換するステップ（S4）によって得られるピクセルデータの各成分のサンプリング周波数が、前記第１のアレイに含まれるピクセルデータの各成分のサンプリング周波数とは異なる値に変換される、請求項４に記載の画像処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は画像処理装置に関し、特にそれを用いたピクセルデータの変換処理に関する。
【背景技術】
【０００２】
映画やテレビゲームで利用されるアニメーションに象徴されるように、近年のコンピュータグラフィックス（ＣＧ）の発達は著しい。その著しい発達は、グラフィックス処理専用のプロセッサ（ＧＰＵ：Graphic Processor Unit）の進化に依るところが大きい。ＧＰＵは、グラフィック表示に必要な演算処理に特化したチップである。ＧＰＵは一般に、ＣＰＵより画像処理の能力が優れている。ＣＰＵで行われていた演算処理をＧＰＵに肩代わりさせることにより、画像処理を速められるだけでなく、ＣＰＵの負荷を低減できる。更に、画像処理以外の処理に割り当てられるメインメモリのバンド幅を拡大できる。その上、ＣＰＵとビデオメモリ（ＶＲＡＭ）との間でのデータ転送の頻度を抑えられる。それらの結果、グラフィックス処理が高速化し、かつ高機能化している。【０００３】
ＧＰＵの行う演算処理は主に、２次元ＣＧ処理、３次元ＣＧ処理、及び動画処理の三つに分けられる。近年のＧＰＵは特に、３次元ＣＧ処理について急速に進化している。ＧＰＵの３次元ＣＧ処理にはジオメトリ処理とレンダリング処理とがある。ジオメトリ処理では、幾何学的演算、特に座標変換により、３次元仮想空間の中に想定された各モデルを２次元画面に投影したときの配置が決定される。レンダリング処理では、ジオメトリ処理で決定された２次元画面上での各モデルの配置に基づき、２次元画面に実際に表示されるべき画像を示すデータが生成される。レンダリング処理は特に、隠面消去、シェーディング、テクチャマッピング等の画像処理を含む。【０００４】
ジオメトリ処理では、頂点シェーダと呼ばれる専用のパイプラインが利用される。レンダリング処理では、ピクセルシェーダと呼ばれる専用のパイプラインが利用される。近年のＧＰＵでは、頂点シェーダとピクセルシェーダとがいずれもプログラム可能になっている。特にピクセルシェーダでは各画像処理がピクセル単位でプログラム可能である。更に進んだＧＰＵでは、各シェーダで利用可能な命令の数が大幅に拡張され、各シェーダが３次元ＣＧ処理の更なる高機能化だけでなく、２次元ＣＧ処理や動画処理も可能にしつつある。画像処理についてはＧＰＵの演算能力はＣＰＵの演算能力よりはるかに高いので、シェーダの利用範囲の拡大は画像処理全体の更なる高速化／高機能化に有利である。
【特許文献１】特開平9−185361号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ピクセルデータのフォーマットは多様である。例えば、パーソナルコンピュータ（ＰＣ）用モニタでは一般に、ピクセルデータの各成分が三原色信号Ｒ、Ｇ、Ｂで表現される。一方、テレビジョン（ＴＶ）受像器では一般に、ピクセルデータの各成分が、輝度信号Ｙ、青の色差信号Ｃｂ、及び赤の色差信号Ｃｒで表現される。更に、色空間が同じでも、各成分のサンプリング周波数が異なる場合もある。例えば、ＹＣｂＣｒ４：４：４では、各成分Ｙ、Ｃｂ、Ｃｒがいずれも１ピクセルごとにサンプリングされる。一方、ＹＣｂＣｒ４：２：２では、輝度信号Ｙは１ピクセルごとに一つずつサンプリングされ、色差信号Ｃｂ、Ｃｒはそれぞれ、２ピクセルごとに一つずつサンプリングされる。【０００６】
ピクセルデータがいずれのフォーマットで表現されていても、実際の画面表示ではピクセルデータの各成分が最終的にはピクセルごとに設定されねばならない。例えば、ＹＣｂＣｒ４：２：２のピクセルデータは、画面表示の段階では、アップサンプリングによってＹＣｂＣｒ４：４：４のピクセルデータに変換されねばならない。【０００７】
しかし、従来のピクセルデータのフォーマット変換方法では、特に各成分が同じメモリ領域にインターリーブ配列で格納され、かつ、フォーマット変換が各成分のサンプリング周波数の変換を伴う場合、一般的には、演算処理をピクセルデータごとに切り換えねばならない。例えばＹＣｂＣｒ４：２：２からＹＣｂＣｒ４：４：４へのアップサンプリングでは、ＹＣｂＣｒ４：２：２の一つのピクセルデータを、ＹＣｂＣｒ４：４：４の偶数番目のピクセルデータに変換する場合と奇数番目のピクセルデータに変換する場合とで処理が異なる。従って、従来の変換方法では、ピクセルデータの順番の偶奇を特定する操作、及び、「その偶奇に応じて処理を切り換える」という条件分岐が必要である。それらは、ピクセルシェーダでは実現できず、又は、実現可能ではあってもフォーマット変換の高速化を著しく阻む。それ故、従来の画像処理装置では、ピクセルデータのフォーマット変換にＣＰＵを使わざるを得ない。その結果、画像処理に対するＣＰＵの負荷の更なる軽減、画像処理以外の処理に対するメインメモリのバンド幅の更なる拡大、及びＣＰＵとＶＲＡＭとの間でのデータ転送の頻度の更なる低減がいずれも困難である。すなわち、従来の画像処理装置では画像処理の更なる高速化が困難である。【０００８】
本発明は、ピクセルデータのフォーマット変換を条件分岐なしで実行可能にすることによって画像処理を更に高速化できる画像処理装置、の提供を目的とする。
【課題を解決するための手段】
【０００９】
本発明による画像処理装置は、スケーリング部、係数テクスチャ演算部、及びピクセルデータ変換部を有する。スケーリング部は、第１のアレイを単位として所定の操作により第２のアレイを構成する。第１のアレイでは複数のピクセルデータがマトリックス状に配置されている。例えばスケーリング部は、第１のアレイに含まれているピクセルデータを所定回数ずつ第１のアレイの水平方向にコピーして第２のアレイを構成する。係数テクスチャ演算部は、第２のアレイに含まれる所定数のピクセルデータごとに、所定の係数テクスチャを用いた演算を繰り返し行う。ピクセルデータ変換部は、係数テクスチャを用いた演算で得られた所定数のピクセルデータの成分をピクセルデータごとに変換する。例えばピクセルデータ変換部は、それら所定数のピクセルデータの成分のうち、特定の位置にある成分をピクセルデータごとに演算して一つの成分に変換する。【００１０】
こうして、第１のアレイに含まれている各ピクセルデータが別のピクセルデータに変換される。好ましくは、ピクセルデータのフォーマットが変換される。特に、ピクセルデータ変換部によって得られるピクセルデータの各成分のサンプリング周波数が、第１のアレイに含まれているピクセルデータの各成分のサンプリング周波数とは異なる値に変換される。ここで、ピクセルデータ変換部の演算処理はピクセルデータごとに共通であり、特に条件分岐を含まない。【００１１】
この画像処理装置がグラフィックス処理用のプロセッサ（ＧＰＵ）を有しても良い。その場合、ピクセルデータ変換部が好ましくは、ピクセルデータの各成分の変換にＧＰＵの成分並べ替え機能を利用する。ここで、ピクセルデータ変換部の演算処理はピクセルデータごとに共通であり、特に条件分岐を含まない。従って好ましくは、ピクセルデータ変換部がＧＰＵのピクセルシェーダをピクセルデータの各成分の変換に利用する。
【発明の効果】
【００１２】
本発明による画像処理装置は上記のとおり、ピクセルデータのフォーマット変換を条件分岐なしで実行可能である。従って、本発明による画像処理装置は従来の装置より、画像処理全体の高速化が容易である。
【図面の簡単な説明】
【００１３】
【図１】本発明の実施形態による画像処理システムのブロック図。
【図２】本発明の実施形態によるアップサンプリングを用いたピクセルデータのフォーマット変換のフローチャート。
【図３】図２に示されている、４：２：２から４：４：４：４へのフォーマット変換の詳細を示すフローチャート。
【図４】図２に示されている第１ソースアレイと第２ソーステクスチャとの一例を示す模式図。(a)はソースアレイを示す。(b)はソーステクスチャを示す。
【図５】図３に示されているフォーマット変換の第４ステップで扱われるピクセルデータを示す模式図。(a)はソーステクスチャのピクセルデータを示す。(b)は係数テクスチャのピクセルデータを示す。(c)は、ソーステクスチャと係数テクスチャとの各先頭のピクセルデータを用いた演算の過程でレジスタに格納されるピクセルデータを示す。(d)は、ソーステクスチャと係数テクスチャとの各二番目のピクセルデータを用いた演算の過程でレジスタに格納されるピクセルデータを示す。(e)は出力先のテクスチャのピクセルデータを示す。
【図６】本発明の実施形態によるダウンサンプリングを用いたピクセルデータのフォーマット変換のフローチャート。
【図７】図６に示されている、２つのアレイからピクセルデータを抽出する操作の詳細を示すフローチャート。
【図８】図６に示されている、ソーステクスチャ、第１のアレイ、及び第２のアレイの一例を示す模式図。(a)はソーステクスチャを示す。(b)は第１のテクスチャを示す。(c)は第２のテクスチャを示す。
【図９】図７に示されているピクセルデータの抽出操作を示す模式図。
【図１０】様々な種類のＧＰＵで、本発明の実施形態によるフォーマット変換を行った場合と、従来のフォーマット変換を行った場合との間で、ピクセルシェーダのサイクル数を比較したグラフ。
【図１１】様々な種類のＧＰＵで、本発明の実施形態によるフォーマット変換を行った場合と、従来のフォーマット変換を行った場合との間で、使用されるレジスタの数を比較したグラフ。
【図１２】様々な種類のＧＰＵで、本発明の実施形態によるフォーマット変換を行った場合と、従来のフォーマット変換を行った場合との間で、１秒間に処理されたピクセルの数を比較したグラフ。
【発明を実施するための最良の形態】
【００１４】
以下、本発明に係る一つの実施形態について説明する。
図１に、本発明の実施形態による画像処理システムのブロック図を示す。その画像処理システム10は好ましくはグラフィックスボードであり、マザーボード20と共にコンピュータに搭載されている。ここで、画像処理システム10がマザーボード20に統合されていても良い。その他に、画像処理システム10が単一のチップに組み込まれていても良い。画像処理システム10はマザーボード20からのデータに基づき、アナログモニタ30、デジタルモニタ40、及びＴＶ受像器50に映像を表示する。
画像処理システム10は好ましくは、画像処理装置11、メモリ制御部12、ビデオメモリ（ＶＲＡＭ）13、入出力インタフェース（Ｉ／Ｏ）14、表示データ生成部18、アナログＲＧＢコネクタ15、ＤＶＩコネクタ16、及びＳ端子17を含む。【００１５】
画像処理装置11は好ましくはプロセッサチップであり、特にその命令セットのアーキテクチャがＳＩＭＤである。ここで、画像処理装置11は、単一のＳＩＭＤプロセッサであっても、複数のＳＩＳＤプロセッサの組み合わせであっても良い。更に好ましくは、画像処理装置11はグラフィックス処理専用のプロセッサ（ＧＰＵ）である。以下、画像処理装置11がＧＰＵである場合について説明する。ＧＰＵ11は、ＣＰＵ21に代わり、グラフィック表示に必要な演算を行う。ＧＰＵ11は従来のＧＰＵの構成を含む。ここで、従来のＧＰＵは例えば、ＮＶＩＤＩＡ社製のＧｅＦｏｒｃｅ、ＡＭＤ社製のＲＡＤＥＯＮ、又はＩｎｔｅｌ社製のＧ９６５を含む。【００１６】
ＧＰＵ11は好ましくは、２次元（２Ｄ）エンジン、３次元（３Ｄ）エンジン、及びビデオプロセッシングエンジン（ＶＰＥ）を含む。２Ｄエンジンは２次元ＣＧ処理を行う。３Ｄエンジンは３次元ＣＧ処理を行う。ＶＰＥは動画処理（特にＭＰＥＧ方式による圧縮データの復号処理）を行う。【００１７】
３Ｄエンジンは好ましくは、ジオメトリエンジンとレンダリングエンジンとを含む。ジオメトリエンジンは、頂点シェーダと呼ばれる専用のパイプラインを含む。ジオメトリエンジンは頂点シェーダを利用して幾何学的演算、特に座標変換を行い、３次元仮想空間の中に想定された各モデルを２次元画面に投影する。レンダリングエンジンは、ピクセルシェーダと呼ばれる専用のパイプラインを含む。レンダリングエンジンはピクセルシェーダを利用し、ジオメトリエンジンによって２次元画面に投影された各モデルについて２次元画面へのレンダリングを行う。【００１８】
頂点シェーダとピクセルシェーダとは好ましくは、プログラム可能なパイプラインである。その場合、各シェーダは３Ｄエンジンだけでなく、他のエンジンにも利用可能である。各シェーダのプログラミングには好ましくはＤｉｒｅｃｔ３ＤがグラフィックＡＰＩとして利用される。その他に、ＯｐｅｎＧＬが利用されても良い。
各シェーダは好ましくは浮動小数点（ＦＰ）演算機能を持つ。特にピクセルシェーダでは、入力データが16ビット又は32ビットのＦＰ表示で表現されても良い。その場合、ピクセルシェーダは、各ピクセルの色情報の処理では整数値演算より大きなダイナミックレンジを確保でき、ピクセル座標の処理では画面表示の実際の最小単位より細かい精度を確保できる。【００１９】
メモリ制御部12はＶＲＡＭ13の制御を行う。メモリ制御部12は特に、ＶＲＡＭ13に対するデータの読み出しと書き込み、及びＶＲＡＭ13のリフレッシュを行う。メモリ制御部12は内部バスを通して画像処理システムの他の構成要素に接続され、それらの構成要素とＶＲＡＭ13との間でのデータ交換を行う。【００２０】
ＶＲＡＭ13は好ましくはシンクロナスＤＲＡＭ（ＳＤＲＡＭ）である。更に好ましくは、ＤＤＲ  ＳＤＲＡＭ、又はＧＤＤＲ  ＳＤＲＡＭである。ＶＲＡＭ13にはフレームバッファや各種のテクスチャが格納される。ＶＲＡＭ13は更に、ＧＰＵ11の演算バッファとしても利用される。ここで、フレームバッファは、各モニタ30、40、50の画面に含まれるピクセルに対応づけられた２次元アレイである。フレームバッファの各項目が一つのピクセルの色情報を示す。テクスチャは、ＧＰＵ11で実際に処理されるピクセルデータの２次元アレイである。【００２１】
Ｉ／Ｏ14は外部バス60に対するインタフェースであり、外部バス60を通して画像処理システム10とマザーボード20との間でピクセルデータを交換する。Ｉ／Ｏ14と外部バス60とは好ましくはＰＣＩ  Ｅｘｐｒｅｓｓ規格に準拠している。その他に、ＰＣＩ規格、又はＡＧＰ規格に準拠していても良い。【００２２】
表示データ生成部18は、ＶＲＡＭ13に格納されているピクセルデータを表示画面に合わせて選択し、選択されたピクセルデータを各種の映像出力インタフェース15、16、17に表示データとして送る。具体的には、表示データ生成部18はまず、ＶＲＡＭ13内の特定のアドレス範囲を表示画面に対応させる。表示データ生成部18は次に、そのアドレス範囲に読み出しアドレスを生成するごとにその読み出しアドレスからピクセルデータを読み出し、一連の表示データとして出力する。【００２３】
アナログＲＧＢコネクタ15はアナログモニタ30に対する映像出力インタフェースである。ここで、アナログモニタ30は好ましくはＬＣＤである。アナログモニタ30はその他にＣＲＴであっても良い。アナログＲＧＢコネクタ15は好ましくは内部バスを通して表示データ生成部18に接続され、表示データ生成部18から出力される表示データをアナログＲＧＢ信号に変換してアナログモニタ30に出力する。ここで、表示データ生成部18は、ＶＲＡＭ13に格納されたフレームバッファのピクセルデータを表示データとして選択して出力する。それにより、フレームバッファのピクセルデータに対応する映像がアナログモニタ30の画面に再現される。【００２４】
ＤＶＩコネクタ16はデジタルモニタ40）に対する映像出力インタフェースである。ここで、デジタルモニタ40は好ましくはＬＣＤである。デジタルモニタ40はその他にデジタルプロジェクタであっても良い。ＤＶＩコネクタ15は好ましくは内部バスを通して表示データ生成部18に接続され、表示データ生成部18から出力される表示データをＤＶＩ信号に変換してデジタルモニタ40に出力する。ここで、表示データ生成部18は、ＶＲＡＭ13に格納されたフレームバッファのピクセルデータを表示データとして選択して出力する。それにより、フレームバッファのピクセルデータに対応する映像がデジタルモニタ40の画面に再現される。【００２５】
Ｓ端子17は好ましくはＴＶ受像器50に対する映像出力端子である。Ｓ端子17はその他に、ビデオテープレコーダ（ＶＴＲ）に対する映像出力端子であっても良い。Ｓ端子17は好ましくは内部バスを通して表示データ生成部18に接続され、表示データ生成部18から出力される表示データを、ＮＴＳＣ、ＰＡＬ、又はＨＤＴＶのＴＶ信号に変換してＴＶ受像器50に出力する。ここで、ＴＶ信号は、Ｓ信号、コンポジット信号、又はコンポーネント信号のいずれでも良い。表示データ生成部18は、ＶＲＡＭ13に格納されたフレームバッファのピクセルデータを表示データとして選択して出力する。それにより、フレームバッファのピクセルデータに対応する映像がＴＶ受像器5040の画面に再現される。
尚、画像処理システム10には、その他の種類のコネクタ、例えばＨＤＭＩコネクタやＤ端子等が設けられていても良い。【００２６】
マザーボード20では様々な映像データが、好ましくはメインメモリ23内のバッファに蓄えられる。ここで、それらの映像データは、同じコンピュータ内のＨＤＤやＤＶＤドライブによって記録媒体から再生された映像データ、外部のＬＡＮやインターネットを通して配信された映像データ、同じコンピュータ内のＴＶキャプチャーボードによって変換されたＴＶ番組の映像データ、並びに、同じコンピュータの内部で生成されたテロップや天気予報等の文字データ、及びグラフや３ＤＣＧ等の映像データを含む。それらの映像データを単独で、若しくは組み合わせて各モニタ30、40、50に表示する場合、又はＧＰＵ11で処理する場合、それらの映像データがフレーム単位でＶＲＡＭ13内のフレームバッファに書き込まれる。その他に、それらの映像データがＶＲＡＭ13内の所定の領域に書き込まれ、ＧＰＵ11によってテクスチャ化されても良い。ＧＰＵ11はＶＲＡＭ13内のテクスチャを用いてフレームバッファの各ピクセルデータに所定の画像処理を加え、その結果をフレームバッファに書き戻す。ＧＰＵ11は更に、フレームバッファのピクセルデータを各モニタ30、40、50に表示させる。【００２７】
マザーボード20のバッファに蓄えられている映像データは一般に、所定の符号化方式、好ましくはＭＰＥＧ２方式に従って圧縮されたデータを復号して得られたものである。好ましくは、ピクセルデータがＹＣｂＣｒ４：２：２で表現されている。一方、画像処理システム10では一般に、ピクセルデータがＲＧＢ４：４：４、又はＡＲＧＢ４：４：４：４で表現されている。ここで、Ａは透明度を表す。従って、ＣＰＵ21とＧＰＵ11との間でピクセルデータを交換するには適切なフォーマット変換が必要である。特に上記の実施形態ではピクセルデータの各成分のサンプリング周波数を４：２：２と４：４：４との間で変換しなければならない。【００２８】
画像処理システム10は以下に述べるように、ＧＰＵ11による演算処理のみを用いてピクセルデータのフォーマット変換を行う。
ＹＣｂＣｒ４：２：２からＹＣｂＣｒ４：４：４へのアップサンプリングでは好ましくは、ＧＰＵ11の内部構成が主に、スケーリング部11A、係数テクスチャ演算部11B、及びピクセルデータ変換部11Cの三つの機能部として利用される。【００２９】
スケーリング部11Aは、所定のテクスチャの各列を所定回数ずつ水平方向にコピーして別のテクスチャに変換する。スケーリング部11Aは好ましくはピクセルシェーダのテクスチャサンプリング部で構成される。ここで、コピーの回数はスケーリングパラメータの設定によってプログラム可能である。【００３０】
係数テクスチャ演算部11Bは、所定のテクスチャに含まれている所定数のピクセルデータごとに、所定の係数テクスチャを用いた演算を繰り返し行う。係数テクスチャ演算部11Bは好ましくはピクセルシェーダで構成される。ここで、係数テクスチャ及びそれを用いた演算の種類はプログラム可能である。【００３１】
ピクセルデータ変換部11Cは、係数テクスチャを用いた演算で得られた所定数のピクセルデータの成分をピクセルデータごとに、所定のパターンに従った演算で変換する。ピクセルデータ変換部11Cは特に、それら所定数のピクセルデータの成分のうち、特定の位置にある成分をピクセルデータごとに足し合わせて一つの成分に変換する。ピクセルデータ変換部11Cは好ましくはピクセルシェーダで構成される。ここで、変換のパターンはプログラム可能である。【００３２】
ＹＣｂＣｒ４：２：２からＹＣｂＣｒ４：４：４へのアップサンプリングは好ましくは、以下のステップで行われる。図２にそのアップサンプリングのフローチャートを示す。
第１ステップS1：処理対象であるＹＣｂＣｒ４：２：２のピクセルデータを４：４：４：４ピクセルバッファに格納してソースアレイを構成する。ここで、４：４：４：４ピクセルバッファは、メインメモリ23の中に用意された２次元アレイの格納領域である。本来はＡＲＧＢ４：４：４：４の各ピクセルデータの４つの成分が一つの単位として４：４：４：４ピクセルバッファに格納される。ソースアレイはインターリーブ配列であり、ピクセルデータの４つの異なる成分が一つの単位として４：４：４：４ピクセルバッファに格納されている。各ピクセルデータでの４つの成分の順序は任意に設定可能である。図４(a)に、各ピクセルデータの４つの成分をＹＵＹ２フォーマットで並べた例を示す。図４(a)では、ＹＣｂＣｒ４：２：２の各ピクセルデータの４つの成分Y(2i,j）、Cb(i,j）、Y(2i＋1,j）、Cr(i,j）（i,j＝0、1、2、3、…）が一つの単位として４：４：４：４ピクセルバッファに格納されている。その他に、４つの成分がＵＹＶＹフォーマットで並べられていても良い。更に、各成分のビット長はＹＵＹ２／ＵＹＶＹフォーマットでの8ビットであっても、16ビットやその他の値であっても良い。【００３３】
第２ステップS2：メインメモリ23から外部バス60を通してＶＲＡＭ13へソースアレイを転送する。その転送は好ましくは、マザーボード20のメモリ制御部22とＩ／Ｏ24、及び画像処理システム10のメモリ制御部12とＩ／Ｏ14の間でのダイレクトメモリアクセス（ＤＭＡ）によって行われる。ここで、ソースアレイはＹＣｂＣｒ４：２：２のピクセルデータから構成されている。従って、ピクセルデータのフォーマット変換をＣＰＵ21によって行ってからそのピクセルデータをＶＲＡＭ13へ転送する場合より、転送されるべきデータ量が少ない。それ故、特にマザーボード20内のＩ／Ｏ24と画像処理システム10内のＩ／Ｏ14との間では、外部バス60を通したピクセルデータの転送レートが低く抑えられる。【００３４】
第３ステップS3：ソースアレイを水平方向に200％拡大してソーステクスチャを構成する。具体的には、図４(b)の破線部に示されているように、ソースアレイの各列V1、V2、…、を１回ずつ水平方向にコピーする。それにより、ソーステクスチャでは列数がソースアレイより２倍に増えている。【００３５】
第４ステップS4：以下のサブステップS41〜S48の順でＧＰＵ11を利用し、ソーステクスチャの各ピクセルデータのフォーマットを４：２：２から４：４：４に変換する。図３に、第４ステップS4のフローチャートを示す。【００３６】
第１サブステップS41：ソーステクスチャからピクセルシェーダの第１のレジスタSに一組のピクセルデータをロードする。例えば図５(a)に示されているように、ソーステクスチャの先頭には二組のピクセルデータVS1、VS2が順に含まれている。ここで、第３ステップS3により、二組のピクセルデータVS1、VS2の内容は実際には共通である。まず、先頭のピクセルデータVS1が、図５(c)に示されているように、第１のレジスタSにロードされる。尚、図５(a)、(c)に示されている成分の順序は一例に過ぎない。ピクセルシェーダの成分入れ換え機能を利用すれば、ソーステクスチャから第１のレジスタSにピクセルデータVS1をロードするときに、そのピクセルデータVS1に含まれている４つの成分の順序を所望の順序に変更できる。【００３７】
第２サブステップS42：係数テクスチャからピクセルシェーダの第２のレジスタCに一組のピクセルデータをロードする。ここで、係数テクスチャは所定数のピクセルデータVC1、VC2から成り、ＶＲＡＭ13に予め格納されている。図５(b)に係数テクスチャの一例を示す。図５(b)の例では係数テクスチャが２組のピクセルデータVC1、VC2から成る。各ピクセルデータVC1、VC2の成分は好ましくは、0.0と1.0とのいずれかの値を示す。それらの値の配置は、ピクセルデータのフォーマット変換に伴う各成分のサンプリング周波数の変化で決まる。４：２：２から４：４：４への変換では、図５(b)に示されているように、ソーステクスチャ内の輝度信号Y00、Y10の位置に対応する位置では、0.0と1.0との二値がピクセルデータごとに交互に設定されている。すなわち、各位置では値1.0が、輝度信号Yのサンプリング周波数の1／2倍の周波数、すなわち、２組のピクセルデータ当たりに１個ずつの割合で現れる。一方、ソーステクスチャ内の色差信号Cb00、Cr00の位置に対応する位置には値1.0が設定されている。すなわち、各位置では値1.0が各色差信号Cb、Crのサンプリング周波数、すなわち、１ピクセルデータ当たりに１個ずつの割合で現れる。第２サブステップS42では、まず、係数テクスチャの先頭のピクセルデータVC1が第２のレジスタCにロードされる。【００３８】
第３サブステップS43：第１のレジスタSのi番目の成分Siと第２のレジスタCのi番目の成分Ciとの積を計算し、得られた結果をピクセルシェーダの第３のレジスタRに順番に格納する。ここで、パラメータiは0、1、2、3である。各レジスタS、Cからのi番目の成分Si、Ciの選択的な読み出しには、ピクセルシェーダの成分入れ換え機能が利用可能である。例えば図５(c)では、第２のレジスタCの第３段にのみ0.0が格納され、他の段には1.0が格納されている。従って、第１のレジスタSと第２のレジスタCとの間での各成分の積により、第３のレジスタRに格納されたピクセルデータは第１のレジスタSに格納されたものと、３番目の成分R2が0.0である点でのみ異なる。【００３９】
第４サブステップS44：第３のレジスタRの１番目の成分R0と３番目の成分R2との和を計算し、得られた結果を第４のレジスタDに格納する。ここで、第３のレジスタRからの１、３番目の成分R0、R2の選択的な読み出しにはピクセルシェーダの成分入れ換え機能が利用可能である。例えば図５(c)では、第３のレジスタRの第１段には輝度信号Y00が格納され、第３段には0.0が格納されている。従って、それらの和Y00＋0.0＝Y00、すなわち、輝度信号Y00が第４のレジスタDの第１段D0に格納される。【００４０】
尚、第１のレジスタSの１、３番目の成分S0、S2の対と、第２のレジスタCの１、３番目の成分C0、C2の対とをそれぞれベクトルデータとみなせば、第３サブステップS43での積と第４サブステップS44での和との組み合わせは、それら２つのベクトルデータ間の内積と等価である：S0×C0＋S2×C2＝Y00×1.0＋Y10×0.0＝Y00。従って、各レジスタS、Cの１、３番目の成分については、第３サブステップS43での積と第４サブステップS44での和とを一連の内積演算として最適化しても良い。【００４１】
第５サブステップS45：第３のレジスタRの２番目の成分R1を第４のレジスタDに格納する。ここで、第３のレジスタRからの２番目の成分R1の選択的な読み出しにはピクセルシェーダの成分入れ換え機能が利用可能である。例えば図５(c)に示されている第３のレジスタRでは２番目の成分R1として格納された青の色差信号Cb00が、第４のレジスタDでは２番目の成分D1として格納される。【００４２】
第６サブステップS46：第３のレジスタRの４番目の成分R3を第４のレジスタDに格納する。ここで、第３のレジスタRからの４番目の成分R3の選択的な読み出しにはピクセルシェーダの成分入れ換え機能が利用可能である。例えば図５(c)に示されている第３のレジスタRでは４番目の成分R3として格納された赤の色差信号Cr00が、第４のレジスタDでは３番目の成分D2として格納される。【００４３】
第７サブステップS47：第４のレジスタDの４番目の成分D3に所定値を格納する。ここで、その所定値の格納にはピクセルシェーダの成分入れ換え機能が利用可能である。例えば図５(c)では、0.0が第４のレジスタDの第４段D3に格納される。その他に、所定の透明度が第４のレジスタDの第４段D3に格納されても良い。【００４４】
第８サブステップS48：第４のレジスタDから出力先のテクスチャに一組のピクセルデータをストアする。それにより、図５(e)に示されているように、出力先のテクスチャでは先頭のピクセルデータVS1がＹＣｂＣｒ４：４：４のフォーマットに変換されている。尚、変換後のピクセルデータVS1の４番目の成分は、図５(c)に示されているように、0.0である。その他に、所定の透明度であっても良い。【００４５】
第１サブステップS41：次に、図５(a)に示されている２番目のピクセルデータVS2を、図５(d)に示されているように、第１のレジスタSにロードする。
第２サブステップS42：係数テクスチャの２番目のピクセルデータVC2を、図５(d)に示されているように、第２のレジスタCにロードする。
第３サブステップS43：第１のレジスタSのi番目の成分Siと第２のレジスタCのi番目の成分Ciとの積を計算する（i＝0、1、2、3）。更に、得られた結果を第３のレジスタRに格納する。例えば図５(d)では、第２のレジスタCの第１段にのみ0.0が格納され、他の段には1.0が格納されている。従って、第１のレジスタSと第２のレジスタCとの間での各成分の積により、第３のレジスタRに格納されたピクセルデータは第１のレジスタSに格納されたものと、１番目の成分R0が0.0である点でのみ異なる。【００４６】
第４サブステップS44：第３のレジスタRの１番目の成分R0と３番目の成分R2との和を計算し、得られた結果を第４のレジスタDに格納する。例えば図５(d)では、第３のレジスタRの第１段には0.0が格納され、第３段には輝度信号Y10が格納されている。従って、それらの和0.0＋Y10＝Y10、すなわち、輝度信号Y10が第４のレジスタDの第１段D0に格納される。【００４７】
尚、第１のレジスタSの１、３番目の成分S0、S2の対と、第２のレジスタCの１、３番目の成分C0、C2の対とをそれぞれベクトルデータとみなせば、第３サブステップS43での積と第４サブステップS44での和との組み合わせは、それら２つのベクトルデータ間の内積と等価である：S0×C0＋S2×C2＝Y00×0.0＋Y10×1.0＝Y10。従って、各レジスタS、Cの１、３番目の成分については、第３サブステップS43での積と第４サブステップS44での和とを一連の内積演算として最適化しても良い。【００４８】
第５サブステップS45：第３のレジスタRの2番目の成分R1を第４のレジスタDに格納する。例えば図５(d)に示されている第３のレジスタRでは２番目の成分R1として格納された青の色差信号Cb00が、第４のレジスタDの２番目の成分D1として格納される。
第６サブステップS46：第３のレジスタRの４番目の成分R3を第４のレジスタDに格納する。例えば図５(d)に示されている第３のレジスタRでは４番目の成分R3として格納された赤の色差信号Cr00が、第４のレジスタDでは３番目の成分D2として格納される。
第７サブステップS47：第４のレジスタDの４番目の成分D3に所定値を格納する。例えば図５(d)では、0.0が第４のレジスタDの第４段D3に格納される。その他に、所定の透明度が第４のレジスタDの第４段D3に格納されても良い。
第８サブステップS48：第４のレジスタDから出力先のテクスチャに一組のピクセルデータをストアする。それにより、図５(e)に示されているように、出力先のテクスチャでは、２番目のピクセルデータVS2がＹＣｂＣｒ４：４：４のフォーマットに変換されている。【００４９】
以上のサブステップS41〜S48が、ソーステクスチャに含まれている全てのピクセルデータについて繰り返される。ここで、第２サブステップS42での係数テクスチャの読み出しには好ましくは、ピクセルシェーダのテクスチャラッピング機能が利用され、特にそのラップテクスチャアドレシングモードが利用される。すなわち、係数テクスチャに含まれている最後のピクセルデータ、図５(b)の例では２番目のピクセルデータVC2が読み出された後の第２サブステップS42では、同じ係数テクチャの先頭のピクセルデータ、図５(b)の例では先頭のピクセルデータVC1が読み出される。【００５０】
こうして、画像処理システム10は、ソーステクスチャに含まれているピクセルデータのフォーマットを４：２：２から４：４：４に変換する。その変換処理では各サブステップS41〜S48の操作が、ソーステクスチャの内部での各ピクセルデータの位置には依らず、全てのピクセルデータで共通である。特に、条件分岐が一切含まれていない。従って、ピクセルデータのフォーマット変換が、ＣＰＵ21を用いることなく、ＧＰＵ11のピクセルシェーダの機能だけで実現可能である。【００５１】
逆に、ＹＣｂＣｒ４：４：４からＹＣｂＣｒ４：２：２へのダウンサンプリングは次のように行う。図６にそのダウンサンプリングのフローチャートを示す。
ここで、処理対象であるＹＣｂＣｒ４：４：４のピクセルデータのアレイはＶＲＡＭ13にテクスチャとして格納されている。以下、そのテクスチャをソーステクスチャという。図８(a)にそのソーステクスチャの一例を示す。図８に示されているように、ソーステクスチャでは各ピクセルデータが４つの成分Yij、Cbij、Crij、0.0（i,j＝0、1、2、3、…）を一つの単位としてマトリックス状に配置されている。尚、４番目の成分は以下の説明の都合上、0.0としている。しかし、以下の操作は４番目の成分の値には依らない。更に、各ピクセルデータ内での成分の順序は、図８に示されている順序に限らず、任意で良い。【００５２】
第５ステップS5：まず、ソーステクスチャの全体を処理対象の矩形領域に設定する。以下、その矩形領域をソース矩形という。次に、そのソース矩形を水平方向に50％縮小し、図８(b)に示されているような第１のテクスチャT1を構成する。具体的には、まず、図８(a)、(b)に示されているように、ソース矩形の先頭アドレスA0から１組のピクセルデータをＶＲＡＭ13に、第１のテクスチャT1の先頭のピクセルデータとしてコピーする。次に、先頭アドレスA0から２組のピクセルデータの量、すなわち２ピクセルだけ後方のアドレスA2を読み出し開始アドレスに設定する。更に、その読み出し開始アドレスから一組のピクセルデータを、第１のテクスチャT1の２番目のピクセルデータとしてコピーする。以下、読み出し開始アドレスを２ピクセルずつ水平方向にずらすごとに、一組のピクセルデータをその読み出し開始アドレスから読み出して第１のテクスチャT1に加える。こうして、第１のテクスチャT1は、ソーステクスチャに含まれているピクセルデータのうち、先頭から数えて奇数番目のピクセルデータによって構成される。特に、第１のテクスチャT1は列数がソーステクスチャの半分である。【００５３】
第６ステップS6：まず、ソーステクスチャの上でソース矩形を水平方向に１組のピクセルデータの量、すなわち１ピクセルだけずらす。次に、そのソース矩形を水平方向に50％縮小し、図８(c)に示されているような第２のテクスチャT2を構成する。具体的には、まず、図８(a)、(c)に示されているように、ソース矩形の先頭アドレスA1から１組のピクセルデータをＶＲＡＭ13に、第２のアレイT2の先頭のピクセルデータとしてコピーする。次に、先頭アドレスA1から２ピクセルだけ後方のアドレスA3を読み出し開始アドレスに設定し、そこから一組のピクセルデータを、第２のテクスチャT2の２番目のピクセルデータとしてコピーする。以下、読み出し開始アドレスを２ピクセルずつ水平方向にずらすごとに、一組のピクセルデータをその読み出し開始アドレスから読み出して第２のテクスチャT2に加える。こうして、第２のテクスチャT2は、ソーステクスチャに含まれているピクセルデータのうち、先頭から数えて偶数番目のピクセルデータによって構成される。特に、第２のテクスチャT2は列数がソーステクスチャの半分である。【００５４】
第７ステップS7：以下のサブステップS71〜S76の順でＧＰＵ11のピクセルシェーダを利用し、第１のテクスチャT1と第２のテクスチャT2とから目的のテクスチャを構成する。その目的のテクスチャではピクセルデータのフォーマットが４：２：２に変換されている。図７に、第７ステップS7のフローチャートを示す。【００５５】
第１サブステップS71：図９に示されているように、第１のテクスチャT1からピクセルシェーダの第１のレジスタS1に一組のピクセルデータの４つの成分Y0、Cb0、Cr0、0.0をロードする。一方、第２のテクスチャT2からピクセルシェーダの第２のレジスタS2に一組のピクセルデータY1、Cb1、Cr1、0.0をロードする。
第２サブステップS72：第１のレジスタS1の先頭の成分Y0をピクセルシェーダの第３のレジスタRに格納する。すなわち、第３のレジスタRの先頭段には輝度信号Y0が格納される。ここで、第１のレジスタS1からの成分Y0の選択的な読み出しにはピクセルシェーダの成分入れ換え機能が利用可能である。【００５６】
第３サブステップS73：第１のレジスタS1の２番目の成分Cb0と第２のレジスタS2の２番目の成分Cb1とのそれぞれに定数0.5を乗算し、それらの積を足し合わせて２つの成分Cb0、Cb1の平均を計算する。更に、得られた結果を第３のレジスタRに格納する。ここで、その演算にはピクセルシェーダの機能が利用可能である。更に、各レジスタS1、S2からの２番目の成分Cb0、Cb1の選択的な読み出しにはピクセルシェーダの成分入れ換え機能が利用可能である。従って、第３のレジスタRの第２段には青の色差信号の平均値Cb＝(Cb0＋Cb1)×0.5が格納される。【００５７】
第４サブステップS74：第２のレジスタS2の先頭の成分Y1を第３のレジスタRに格納する。すなわち、第３のレジスタRの第３段には輝度信号Y1が格納される。ここで、第２のレジスタS2からの成分Y1の選択的な読み出しにはピクセルシェーダの成分入れ換え機能が利用可能である。
第５サブステップS75：第１のレジスタS1の４番目の成分Cr0と第２のレジスタS2の４番目の成分Cr1とのそれぞれに定数0.5を乗算し、それらの積を足し合わせて２つの成分Cr0、Cr1の平均を計算する。更に、得られた結果を第３のレジスタRに格納する。ここで、その演算にはピクセルシェーダの機能が利用可能である。更に、各レジスタS1、S2からの４番目の成分Cr0、Cr1の選択的な読み出しにはピクセルシェーダの成分入れ換え機能が利用可能である。従って、第３のレジスタRの第４段には赤の色差信号の平均値Cr＝(Cr0＋Cr1)×0.5が格納される。【００５８】
第６サブステップS76：第３のレジスタRからＶＲＡＭ13に一組のピクセルデータをストアする。それにより、図９に示されているＹＣｂＣｒ４：４：４のフォーマットのピクセルデータから目的のテクスチャが構成される。
以上のサブステップS71〜S76が、第１のテクスチャT1と第２のテクスチャT2とに含まれている全てのピクセルデータについて繰り返される。【００５９】
こうして、画像処理システム10は、４：４：４：４のピクセルデータから成るソーステクスチャを、４：２：２のピクセルデータから成る目的のテクスチャに変換する。その変換処理では各サブステップS71〜S76の操作が、ソーステクスチャの内部での各ピクセルデータの位置には依らず、全てのピクセルデータで共通である。特に、条件分岐が一切含まれていない。従って、ピクセルデータのフォーマット変換が、ＣＰＵ21を用いることなく、ＧＰＵ11のピクセルシェーダの機能だけで実現可能である。【００６０】
画像処理システム10は上記のとおり、ピクセルデータのフォーマット変換、特にアップサンプリングとダウンサンプリングとの両方を、条件分岐なしで実行可能である。更に、ＧＰＵ11のピクセルシェーダをピクセルデータのフォーマット変換に利用可能である。従って、画像処理システム10は従来のシステムとは異なり、ＣＰＵ21を用いずに、かつＣＰＵ21より高速に、ピクセルデータのフォーマットを変換できる。それにより、画像処理に対するＣＰＵ21の負荷が更に軽減される。しかも、画像処理以外の処理に対するメインメモリ23のバンド幅が更に拡大される。その上、マザーボード20と画像処理システム10との間でのデータ転送の頻度、特に外部バス60の使用頻度が更に低減する。それらの結果、画像処理システム10は従来のシステムより、画像処理全体の高速化が容易である。【００６１】
図１０〜図１２に、様々な種類のＧＰＵについて、上記のピクセルデータのフォーマット変換処理を従来の変換処理と比較した結果を示す。尚、図１０〜図１２に示されている結果は、ShaderPerfユーティリティを用いて解析されたものである。そのユーティリティはＮＶＩＤＩＡ社のホームページ（http://developer.nvidia.com/object/nvshaderperf_home.html）に公開されている。従って、解析の対象とされたＧＰＵは全て、ＮＶＩＤＩＡ社製である。【００６２】
図１０〜図１２では、各ＧＰＵが画像処理システム10にＧＰＵ11として利用された場合の結果が棒グラフP0で示されている。一方、条件分岐を利用した従来のフォーマット変換処理を各ＧＰＵで行った場合の結果が棒グラフP1、P2で示されている。尚、棒グラフP1は、各ＧＰＵのピクセルシェーダがモデル2.0である場合の結果を示し、棒グラフP2は、各ＧＰＵのピクセルシェーダがモデル3.0である場合の結果を示す。更に、「FP16」はフォーマット変換処理を16ビットのＦＰ表示で行った場合を示し、「FP32」はフォーマット変換処理を32ビットのＦＰ表示で行った場合を示す。【００６３】
図１０には、フォーマット変換処理で設定されたピクセルシェーダのサイクル数が示されている。図１０に示されているとおり、いずれのＧＰＵにおいても、画像処理システム10によるフォーマット変換処理では従来のフォーマット変換処理より、ピクセルシェーダのサイクル数が顕著に少ない。【００６４】
図１１には、フォーマット変換処理で使用されるレジスタの数が示されている。ここで、そのレジスタは、ＮＶＩＤＩＡ社製ＧＰＵに内蔵のレジスタである。図１１に示されているとおり、画像処理システム10によるフォーマット変換処理で使用されるレジスタの数は、従来の変換処理で使用されるレジスタの数以下である。この差は直接的には、「画像処理システム10によるフォーマット変換処理が従来の変換処理に対して高性能であること」を示すものではない。しかし、一般的には、ある処理で使用されるレジスタが少ないほど、その処理がＧＰＵの担う他の処理に小さい影響しか与えない。従って、図１１に示されている結果からは、次のことが分かる。画像処理システム10によるフォーマット変換処理がＧＰＵの担う他の処理に与える影響は、従来のフォーマット変換処理の与える影響以下に抑えられている。【００６５】
図１２には、1秒間に処理されたピクセルの数が示されている。図１２に示されているとおり、いずれのＧＰＵにおいても、画像処理システム10によるフォーマット変換処理は従来の変換処理より顕著に多数のピクセルを処理できる。
このように、画像処理システム10によるピクセルデータのフォーマット変換処理の高速化は、実際に確認できる。
【図１】
2008146406.tif 000003
【図２】
2008146406.tif 000004
【図３】
2008146406.tif 000005
【図４】
2008146406.tif 000006
【図５】
2008146406.tif 000007
【図６】
2008146406.tif 000008
【図７】
2008146406.tif 000009
【図８】
2008146406.tif 000010
【図９】
2008146406.tif 000011
【図１０】
2008146406.tif 000012
【図１１】
2008146406.tif 000013
【図１２】
2008146406.tif 000014
【国際調査報告】
2008146406.tif 000015
2008146406.tif 000016