(57)【要約】  それぞれの可能な成分出力Ｒ、ＧおよびＢの値を、それぞれの可能な成分入力Ｙ、ＵおよびＶの全ての値について予め計算することができる。Ｙ、ＵおよびＶ入力の各寄与をレジスタにロードし、オーバーフローせずに並列に加算して、ＹＵＶ入力から計算コストの低いＲＧＢ出力を生成することができる。一実施形態では、Ｒ、ＧおよびＢの各々に対するＹ、ＵおよびＶの寄与を、予め計算された表から取り出す。Ｒ、ＧおよびＢの各値に対するＹＵＶの寄与は３つのデータ要素にパックされ、共に並列に加算され、その結果としてＲＧＢ出力の値が得られる。
2010517442.tif 000002
【特許請求の範囲】
【請求項１】
入力データ要素を修正する方法であって、
複数の入力値（３０５、３１０、３１５）を含む入力データ要素（２１５）を受信するステップと、
複数の成分データ要素（３２５、３３０、３３５、３４５、３５０、３６０、３６５）を複数のデータ表（３００）から取り出すステップであって、各データ表は、前記複数の入力値（３０５、３１０、３１５）の１つに対応し、各成分データ要素は、出力値寄与（３２０、３４０、３５５）のセットを含み、各出力値寄与は、複数の入力値の１つに対応する、取り出すステップと、
各成分データ要素をメモリ空間（４１５、４２０、４２５）に格納するステップであって、前記出力値寄与のセットの各要素は、同じ順序で各メモリ空間内に格納される、格納するステップと、
前記メモリ空間を加算するステップであって、前記メモリ空間の合計は、複数の出力値（５１５、５２０）を含む出力データ要素（５１０）を含み、前記複数の出力値の各々は、前記複数の出力値の１つに対応する全ての出力値寄与の合計を含む、加算するステップと
を含むことを特徴とする方法。
【請求項２】
前記メモリ空間を加算するステップは、前記メモリ空間を並列に加算することを含むことを特徴とする請求項１に記載の方法。
【請求項３】
前記入力データ要素は、ＹＵＶビデオ画素値を含み、前記出力データ要素は、ＲＧＢ画素値を含むことを特徴とする請求項１に記載の方法。
【請求項４】
前記複数の入力値は、順番に、輝度値Ｙ、黄に対する青のクロミナンス値Ｃｂ、シアンに対する赤のクロミナンス値Ｃｒを含むことを特徴とする請求項１に記載の方法。
【請求項５】
前記複数の出力値は、順番に、赤の値Ｒ、緑の値Ｇ、および青の値Ｂを含むことを特徴とする請求項１に記載の方法。
【請求項６】
出力値寄与の各セットは、輝度寄与のセットまたはクロミナンス寄与のセットを含むことを特徴とする請求項１に記載の方法。
【請求項７】
前記メモリ空間は、ダブルワードであり、前記複数の出力値寄与はそれぞれ、前記ダブルワードの１０ビットを超えない部分を占めることを特徴とする請求項１に記載の方法。
【請求項８】
前記複数のメモリ空間はそれぞれ、メモリ空間の加算中のオーバーフローエラーを防止するバッファを含むことを特徴とする請求項１に記載の方法。
【請求項９】
第１のバッファと第２のバッファを前記出力値寄与のセットの各要素間に配置するステップをさらに含むことを特徴とする請求項１に記載の方法。
【請求項１０】
前記複数のメモリ空間はそれぞれ３２ビットを備え、該メモリ空間の最初の１０ビットは、前記出力値寄与のセットの第１の要素を備え、該メモリ空間の１１番目のビットは、第１のバッファを備え、該メモリ空間の１２番目から２１番目のビットは、前記出力値寄与のセットの第２の要素を備え、該メモリ空間の２２番目のビットは、第２のバッファを備え、該メモリ空間の２３番目から３２番目のビットは、前記出力値寄与のセットの第３の要素を備えることを特徴とする請求項１に記載の方法。
【請求項１１】
複数の出力値寄与のそれぞれは、赤、緑、青の各々に対する輝度およびクロミナンスの寄与を含むことを特徴とする請求項１に記載の方法。
【請求項１２】
データ表の数は、前記複数の入力値のうちの入力値の数に対応することを特徴とする請求項１に記載の方法。
【請求項１３】
前記メモリ空間を加算するステップは、各出力データ要素を共に並列に加算するステップを含み、並列の加算操作の数は２を超えないことを特徴とする請求項１に記載の方法。
【請求項１４】
コンピュータ実行可能コードを実行するためのプロセッサと、データおよびコンピュータ実行可能コードを記憶するためのメモリと、入出力回路とを備えたコンピュータシステムであって、前記プロセッサは、
第１および第２の入力値（３０５、３１０、３１５）を含む入力画素（２１５）を、第１の形式で受信することと、
出力値寄与（３２５、３３０、３３５、３４５、３５０、３６０、３６５）の第１のセットを、第１のデータ表（３００）から取り出すことであって、前記出力値寄与の第１のセットの第１の要素は、前記第１の入力値および第１の出力値に対応し、前記出力値寄与の第１のセットの第２の要素は、前記第１の入力値および第２の出力値に対応する、取り出すことと、
出力値寄与（３２５、３３０、３３５、３４５、３５０、３６０、３６５）の第２のセットを、第２のデータ表（３００）から取り出すことであって、前記出力値寄与の第２のセットの第１の要素は、前記第２の入力値および第１の出力値に対応し、前記出力値寄与の第２のセットの第２の要素は、前記第２の入力値および第２の出力値に対応する、取り出すことと、
前記出力値寄与の前記第１のセットおよび前記第２のセットを、それぞれ第１および第２のレジスタ（４１５、４２０、４２５）に格納することであって、前記出力値寄与の前記第１のセットおよび前記第２のセットの各要素を、前記第１および第２のレジスタの両方に同じ順序で格納することと、
前記第１および第２のレジスタの合計を出力レジスタ（５１０）に格納することであって、前記第１および第２のレジスタの前記合計は、前記第１の出力値と前記第２の出力値とを含む第２の形式（５１０）の出力画素を備え、前記第１の出力値は、前記出力値寄与の前記第１のセットおよび前記第２のセットの両方の第１の要素の合計を含み、前記第２の出力値は、前記出力値寄与の前記第１のセットおよび前記第２のセットの両方の第２の要素の合計を含む、格納することと
のためのコンピュータ実行可能コードを実行するように物理的に構成されたことを特徴とするコンピュータシステム。
【請求項１５】
前記第１の形式はＹＵＶを備え、前記第２の形式はＲＧＢを備えたことを特徴とする請求項１４に記載のコンピュータシステム。
【請求項１６】
前記第１の形式の前記入力画素を前記第２の形式の前記出力画素に修正することをさらに備え、該修正は明度補正、光度の補正、コントラスト補正、彩度補正、画素毎の補正、またはシェーダ変換のうち少なくとも１つを含むことを特徴とする請求項１４に記載のコンピュータシステム。
【請求項１７】
ＹＵＶ画素値をＲＧＢ画素値に変換する方法であって、
輝度値Ｙ（３０５）と、黄に対する青のクロミナンス値Ｃｂ（３１０）と、シアンに対する赤のクロミナンス値Ｃｒ（３１５）とを含むＹＵＶ画素値（２１５）を受信するステップと、
複数の輝度寄与値（３２０）を含む輝度ルックアップテーブルの輝度寄与値に、Ｙをインデックス付けするステップであって、前記複数の輝度寄与値は、可能な範囲のＹに対応し、各値は、赤（３２５）と緑（３３０）と青（３３５）とのうちの少なくとも１つに対する輝度寄与を含む、インデックス付けするステップと、
複数の第１のクロミナンス寄与値（３４０）を含む第１のクロミナンスルックアップテーブルの第１のクロミナンス寄与値に、Ｃｂをインデックス付けするステップであって、前記複数の第１のクロミナンス寄与値は、可能な範囲のＣｂに対応し、各第１のクロミナンス寄与値は、緑（３４５）と青（３５０）とのうちの少なくとも１つに対する第１のクロミナンス寄与を含む、インデックス付けするステップと、
複数の第２のクロミナンス寄与値（３５５）を含む第２のクロミナンスルックアップテーブルの第２のクロミナンス寄与値に、Ｃｒをインデックス付けするステップであって、前記複数の第２のクロミナンス寄与値は、可能な範囲のＣｒに対応し、各第２のクロミナンス寄与値は、赤（３６０）と緑（３６５）とのうちの少なくとも１つに対する第２のクロミナンス寄与を含む、インデックス付けするステップと、
前記輝度寄与値（３２０）、前記第１のクロミナンス寄与値（３４０）、および前記第２のクロミナンス寄与値（３５５）を、それぞれ複数のビットを備える第１のレジスタ（４１５）、第２のレジスタ（４２０）、および第３のレジスタ（４２５）にそれぞれ格納するステップであって、
前記第１のレジスタは、赤（３２５）に対する輝度寄与を含む第１の輝度ビットセットと、緑（３３０）に対する輝度寄与を含む第２の輝度ビットセットと、青（３３５）に対する輝度寄与を含む第３の輝度ビットセットと、少なくとも１つの輝度バッファ（４１０）とを備え、
前記第２のレジスタは、緑（３４５）に対する第１のクロミナンス寄与を含む第１のクロミナンスビットセットと、青（３５０）に対する第１のクロミナンス寄与を含む第２のクロミナンスビットセットと、少なくとも１つの第１のクロミナンスバッファ（４１０）とを備え、
前記第３のレジスタは、赤（３６０）に対する第２のクロミナンス寄与を含む第３のクロミナンスビットセットと、緑（３６５）に対する第２のクロミナンス寄与を含む第４のクロミナンスビットセットと、少なくとも１つの第２のクロミナンスバッファ（４１０）とを備える
該格納するステップと、
前記第１のレジスタ、前記第２のレジスタ、および前記第３のレジスタを共に並列に加算するステップであって、前記第１のレジスタ、前記第２のレジスタ、および前記第３のレジスタの合計は前記ＲＧＢ画素値（５１０）を備える、加算するステップと
を備え、
前記第１および第２の輝度バッファ、前記少なくとも１つの第１のクロミナンスバッファ、ならびに前記少なくとも１つの第２のクロミナンスバッファは、前記第１のレジスタ、前記第２のレジスタ、および前記第３のレジスタを共に並列に加算する間のオーバーフローエラーを防止することを特徴とする方法。
【請求項１８】
前記第１および前記第２の輝度ビットセット、前記第１および第２のクロミナンスビットセット、ならびに前記第３および第４のクロミナンスビットセットは、赤、緑、青に対するそれぞれの輝度、第１のクロミナンス、および第２のクロミナンスの寄与の各レジスタにおいて、任意の同一配置を備える同一順序で、それぞれ前記第１のレジスタ、第２のレジスタ、および第３のレジスタに格納されることを特徴とする請求項１７に記載の方法。
【請求項１９】
前記可能な範囲のＹは、１６以上２３５以下のＹの値を含むことを特徴とする請求項１７に記載の方法。
【請求項２０】
前記可能な範囲のＣｂまたはＣｒは、１６以上２３９以下の値を含むことを特徴とする請求項１７に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、高速フィルタ型のＹＵＶからＲＧＢへの変換に関する。
【背景技術】
【０００２】
この背景技術は、本出願の基本的な背景を提供することが意図されており、解決すべき特定の問題を説明することは意図されていない。
【０００３】
コンピュータのモニタは、ＲＧＢ（赤、緑、青）の光を含む色空間（color space）内で色を放射する。赤、緑、および青の光を合わせることによって可視スペクトルの全ての色を生成することができるが、モニタは、視覚スペクトルの制限された領域（すなわち、範囲）のみ表示可能である。ＲＧＢ形式（format）で提示される各画素（pixel）は、画素を生成するＲ、Ｇ、およびＢの各々について０から２５５の範囲の別個の値を含む。しかしながら、コンピュータは、他の様々な色空間の色を放射することもできる。例えば、別の色空間では輝度（luminance）（Ｙ）、黄の色量に対する青のクロミナンス（chrominance）（ＵまたはＣb）、およびシアンの色量に対する赤のクロミナンス（ＶまたはＣr）で構成されるデータを含むことがある。ＲＧＢでは、ＹＵＶ形式の画素も、Ｙ、ＵおよびＶの各々について別個の値で構成される。しかしながら、Ｒ、ＧおよびＢの各値の範囲は、Ｙ、ＵおよびＶの範囲と直接は対応しない。例えば、或るＹＵＶ形式では、Ｙの値の範囲は１６から２３５であるが、ＵおよびＶの範囲は１６から２３９である。したがって、コンピュータがＹＵＶのビデオコンテンツをＲＧＢで正確に表示するためには、各画素のＹＵＶの値を、対応するＲＧＢの値に変換する必要がある。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
或るビデオ形式から別のビデオ形式へ変換するための現在の方法は、計算コストが高く、出力を生成するために行列変換（matrix transform）を通じて入力データを処理する必要があることがある。ＹＵＶからＲＧＢに変換するために、各画素からのデータを、７回の乗算操作と１１回の加減算操作の行列変換を通じて処理しなければならない。実際には、コンパイラは、複数の行列変換の共通する部分式を減少させることができる。例えば、ＹＵＶからＲＧＢへ変換するための行列変換を、５回の乗算操作と７回の加減算操作に容易に減らすことができる。しかしながら、コンパイラが減少させた行列変換であっても計算コストは高い。画素変換が複雑性のために、このプロセスは典型的に、実用的な時間内で実行するためのＳＩＭＤ（Single Instruction, Multiple Data）パラレル処理の拡張を含め、広範囲なサポートが必要とする。さらに、ＳＩＭＤ拡張を実装することができないコンピュータは、画素変換を容易に実行することができない。
【課題を解決するための手段】
【０００５】
この課題を解決するための手段は、以下の詳細な説明でさらに説明される概念の選択を簡略化した形で紹介するために提供される。この課題を解決するための手段は、特許請求する対象の主要な特徴または本質的な特徴を特定するようには意図されておらず、また特許請求する対象の範囲を限定するようにも意図されていない。
【０００６】
それぞれの可能な成分（component）の出力Ｒ、Ｇ、およびＢの値を、それぞれの可能な成分の入力Ｙ、Ｕ、およびＶの全ての値について予め計算することができる。次いで、Ｙ入力、Ｕ入力、およびＶ入力の各寄与（contribution）を、オーバーフローせず並列でレジスタにロードして加算し、結果として計算コストの高くないＲＧＢ出力をＹＵＶ入力から得ることができる。一実施形態では、Ｒ、ＧおよびＢの各々に対するＹ、ＵおよびＶの寄与を、予め計算された表（table）から取り出す。Ｒ、ＧおよびＢの各値に対するＹＵＶの寄与を、３つのデータ要素（data element）にパックし、一緒に並列で加算して、結果としてＲＧＢ出力の値を得る。
【図面の簡単な説明】
【０００７】
【図１】ＹＵＶ形式のデータをＲＧＢ形式のデータに変換する方法を実装するコンピュータを示す図である。
【図２】コンピュータディスプレイのためにＹＵＶビデオデータをＲＧＢデータに変換する方法を示す図である。
【図３ａ】コンピュータディスプレイのためにＹＵＶビデオデータをＲＧＢデータに変換する方法で使用するための予め計算された表を示す図である。
【図３ｂ】コンピュータディスプレイのためにＹＵＶビデオデータをＲＧＢデータに変換する方法で使用するための予め計算された表を示す図である。
【図３ｃ】コンピュータディスプレイのためにＹＵＶビデオデータをＲＧＢデータに変換する方法で使用するための予め計算された表を示す図である。
【図４】コンピュータディスプレイのためにＹＵＶビデオデータをＲＧＢデータに変換する方法で使用するためのメモリ要素を示す図である。
【図５ａ】ＹＵＶ入力からＲＧＢ出力の値を決定するためのメモリ要素の並列加算を示す図である。
【図５ｂ】ＹＵＶ入力からＲＧＢ出力の値を決定するためのメモリ要素の並列加算を示す図である。
【発明を実施するための形態】
【０００８】
以下の文章では、多くの様々な実施形態についての詳細な説明を記述するが、本説明の法的な範囲は特許請求の範囲の文言によって定義されることを理解されたい。全ての可能な実施形態を説明することは、不可能ではないにしても現実的ではないので、この詳細な説明は単なる例示として解釈されるべきであり、全ての可能な実施形態を説明するものではない。現在の技術または本特許出願の日以降に開発される技術を使用して、多くの代替的な実施形態を実装することができ、これらの技術も特許請求の範囲内にある。
【０００９】
或る用語について「本明細書で使用されるとき、用語「〜」は、を意味するように定義される」という文、または同様の文を使用して本明細書で明確に定義されない限り、その用語の意味をその明白な意味または通常の意味を超えて明示的または暗示的に限定する意図はなく、そのような用語は、本明細書のいずれかのセクションのいずれかの記述（特許請求の範囲の文言を除く）に基づく範囲に限定されると解釈されるべきではない。特許請求の範囲に記載される任意の用語は、単一の意味に一致するように本明細書内の用語で称されるが、これは読者を混乱させないように明確性を目的とするものに過ぎず、そのような請求項の用語が、暗示または他のものによってその単一の意味だけに限定されることは意図していない。最後に、請求項の構成要素は、どのような構造にも言及しない単語「手段」および機能を記載することによって定義されない限り、任意の請求項の要素の範囲が米国連邦法典第３５編第１１２条第６段落の適用に基づいて解釈されることは意図していない。
【００１０】
図１は、本明細書で説明される方法を提供するように動作することができる適切なコンピューティングシステム環境１００の例を図示している。コンピューティングシステム環境１００は、適切なコンピューティング環境の一例に過ぎず、特許請求の範囲における方法および装置の使用または機能の範囲に関して、いかなる限定を示唆することも意図されていないことに留意されたい。コンピューティングシステム環境１００はまた、この例示的な動作環境１００内に図示された複数のコンポーネントのいずれか１つのコンポーネントまたはその組み合わせに関して、どのような依存関係または要件を有するように解釈されるべきでもない。
【００１１】
図１を参照すると、特許請求される方法のブロックを実装するための例示的なシステムは、汎用のコンピューティング装置をコンピュータ１１０の形で含む。コンピュータ１１０のコンポーネントには、処理装置１２０、システムメモリ１３０、システムメモリ１３０およびビデオインタフェース１９０を含め様々なシステムコンポーネントを処理装置１２０と結合するシステムバス１２１が含まれるが、これらには限定されない。
【００１２】
コンピュータ１１０は、リモートコンピュータ１８０などの１つまたは複数のリモートコンピュータへの論理接続を使用して、ＬＡＮ１７１および／またはＷＡＮ１７３を介して、モデム１７２または他のネットワークインタフェース１７０を介して、ネットワーク化された環境で動作することができる。
【００１３】
コンピュータ１１０は、典型的に様々なコンピュータ読取可能媒体を含み、該コンピュータ読取可能媒体は、コンピュータ１１０によってアクセス可能な任意の使用可能媒体とすることができ、揮発性および不揮発性媒体、取外し可能および取外し不能媒体の両方を含む。システムメモリ１３０は、ＲＯＭ１３１およびＲＡＭ１３２などの揮発性および／または不揮発性メモリの形式のコンピュータ記憶媒体を含む。ＲＯＭは、基本入出力システム（ＢＩＯＳ）１３３を含むことができる。ＲＡＭ１３２は典型的に、オペレーティングシステム１３４、アプリケーションプログラム１３５、他のプログラムモジュール１３６、およびプログラムデータ１３７を含む、データおよび／またはプログラムモジュールを含む。コンピュータ１１０は、ハードディスクドライブ１４１、磁気ディスク１５２と読み書きする磁気ディスクドライブ１５１、および光ディスク１５６と読み書きする光ディスクドライブ１５５などの他の取外し可能または取外し不能、揮発性または不揮発性のコンピュータ記憶媒体を含むこともできる。ハードディスクドライブ１４１、１５１、および１５５は、インタフェース１４０、１５０を介してシステムバス１２１とインタフェースすることができる。
【００１４】
ユーザは、キーボード１６２、および通常はマウス、トラックボールもしくはタッチパッドと呼ばれるポインティングデバイス１６１などの入力装置を通じて、コンピュータ２０にコマンドおよび情報を入力することができる。他の入力装置（図示せず）には、マイクロホン、ジョイスティック、ゲームパッド、パラボラアンテナ、スキャナなどが含まれ得る。これらおよび他の入力装置は、システムバスに結合されたユーザ入力インタフェース１６０を通じて処理装置１２０に接続されることが多いが、パラレルポート、ゲームポート、もしくはＵＳＢなどの他のインタフェースとバス構造によって接続されてもよい。モニタ１９１または他のタイプのディスプレイ装置を、ビデオインタフェース１９０などのインタフェースを介してシステムバス１２１に接続することもできる。ビデオ変換モジュール（video conversion module）１９２をシステムバス１２１に接続することができる。ビデオ変換モジュール１９２は、以下で説明される方法にしたがって画素を変換または修正することができる。他の実施形態では、ビデオ変換モジュール１９２は、コンピュータ１１０の別の要素のコンポーネントである。例えば、ビデオ変換モジュール１９２は、処理装置１２０および／またはビデオインタフェース１９０のコンポーネントとすることができる。モニタ１９１に加えて、コンピュータは、出力周辺インタフェース１９０を通じて接続することが可能な、スピーカ１９７およびプリンタ１９６などの他の周辺出力装置を含むこともできる。
【００１５】
本明細書で説明される本発明の機能の大部分と本発明の原理の多くは、ソフトウェアプログラムもしくは命令、およびアプリケーション固有のＩＣ（ｉｎｔｅｇｒａｔｅｄ  ｃｉｒｃｕｉｔ）のなどのＩＣで最も良く実装することができる。当業者は、例えば利用可能な時間、現在の技術、および経済的な考慮を理由とする恐らく著しい努力と多くの設計上の選択に関わらず、本明細書で開示される概念と原理によって導かれることで、そのようなソフトウェア命令、プログラム、およびＩＣを最小限の実験で容易に作成することができよう。したがって、簡潔性のため、および本発明にかかる原理と概念を不明瞭にするというリスクを最小限にするために、そのようなソフトウェアおよびＩＣについてのさらなる議論は、あったとしても、好ましい実施形態の原理と概念に関する本質に限定される。
【００１６】
図２は、ＲＧＢ色空間内で表示するためにＹＵＶ（ＹＣbＣr）形式の画素を変換することができる方法２００を示す図である。本方法を、コンピュータ１１０の様々なコンポーネントにおいて実行することができる。一実施形態では、方法２００はビデオ変換モジュール１９２において実行される。別の実施形態では、方法２００はビデオインタフェース１９０において実行される。さらなる実施形態では、本方法は処理装置１２０で実行される。通常、ＲＧＢ、ＹＵＶ、およびＹＣbＣrによって、ＲＧＢおよびＹＵＶのファミリの全てのビデオ形式を記述することができ、該ＲＧＢおよびＹＵＶのファミリには、これらには限られないがＲＧＢ１６、ＲＧＢ２４、ＲＧＢ３２、ＹＵＶ、ＹＵＹ２、ＹＶ１２、ＹＶ２０、およびＩ４２０がそれぞれ含まれる。しかしながら、当業者には理解されるであろうが、本方法を、データ単位毎の計算コストを含み得る任意の変換または修正の一部として行うこともできる。一実施形態では、本方法を使用してビデオをＹＵＶからＲＢＧに変換し、この場合、変換には画素毎の計算コストが必要である。
【００１７】
図２を参照すると、ブロック２０５で、行列変換を簡約化することができる。例えば、該変換を使用して、ビデオイメージを或る画素形式から別の画素形式に変換すること、またはビデオイメージの画素を修正することができる。一実施形態では、ＹＵＶ形式のビデオイメージからＲＧＢイメージへ変換するための行列変換が簡約化される。例えば、表１の行列変換を簡約化して、結果のＲ、ＧおよびＢの値に対するＹ、ＵおよびＶの各々の寄与を計算することができる。
【００１８】
【表１】
2010517442.tif 000003
【００１９】
表１によると、ＹＵＶからＲＧＢへの変換において、ＲＧＢ色空間における赤の値は、或る程度の輝度（Ｙ）と、赤からシアンの範囲の或る程度のクロミナンス（ＶまたはＣr）とで構成することができる。同様に、緑を、或る程度の輝度（Ｙ）と、赤からシアンの範囲の或る程度のクロミナンス（ＶまたはＣr）と、青から黄の範囲の或る程度のクロミナンス（ＵまたはＣb）とで構成することができる。また、青を、或る程度の輝度（Ｙ）と、青から黄の範囲内の或る程度のクロミナンス（ＵまたはＣb）とで構成することができる。したがって、表２のように、ＹＵＶ画素からＲＧＢ画素への変換式を簡約化して、Ｙ、ＵおよびＶ成分の寄与を強調することができる。
【００２０】
【表２】
2010517442.tif 000004
【００２１】
表２に示されるように、入力Ｙ、ＵおよびＶの各々は、或る程度、結果の赤（Red）、緑（Green）、青（Blue）の出力（output）に寄与する。Ｙ、ＵおよびＶの各値の寄与の合計を平面的な形で（planar form）で一緒に加算して、それぞれ赤、緑、青の出力値を生成することができる。当然、成分の寄与を強調することができる他の行列変換についての他の簡約化も存在しうる。
【００２２】
ブロック２１０で、表を計算して、全てのあり得る入力値に対応する全てのあり得る出力値を決定することができる。この表を、ターゲットの形式の範囲に等しい数の値で構成することができる。例えば、ターゲットの形式がＲＧＢであり各成分の範囲が０から２５５のとき、或る入力からの可能な出力値のセット全体を各々が表す、２５６個の値からなる３つの表が存在しうる。これらの表を、図１に関して説明した任意の形式のコンピュータメモリに格納することができる。一実施形態では、任意の可能なＹ、ＵおよびＶ（Ｙ、ＣbおよびＣr）の入力値について、Ｒ、Ｇ、およびＢの出力値が計算される。例えば、図３ａ〜３ｃに図示されるように、Ｙ３０５、Ｃb３１０、およびＣr３１５の各々に対する可能な入力値は、それぞれ１６〜２３５、１６〜２３９、および１６〜２３９の値とすることができる。図３ａ〜ｃの寄与値は、有効数字３桁までであるが、当該寄与を任意の有用な精度で表すことができる。Ｒ、Ｇ、およびＢに対する各入力値の寄与を、表２の式を使用して計算し、表３００のセットにおける対応する位置に挿入することができる。一実施形態では、Ｙが１７の入力３０５が、式（Ｙ−１６）×１．１６４によって変換されて、表の値３２０の１.１６４が、Ｒ３２５、Ｇ３３０、およびＢ３３５の各々に対する輝度の寄与として生成される。図３ｂを参照すると、Ｕ（Ｃb）の入力３１０が、式（Ｃb−１２８）×−０．４００と式（Ｃb−１２８）×２．０１８によってそれぞれ変換されて、表の値３４０が、Ｇ３４５、Ｂ３５０に対する各々の寄与としてそれぞれ生成される。図３ｃを参照すると、Ｖ（Ｃr）の入力３１５が、式（Ｃr−１２８）×１．５９６と式（Ｃr−１２８）×−０．８３１によってそれぞれ変換されて、表の値３５５が、Ｒ３６０、Ｇ３６５に対する各々の寄与としてそれぞれ生成される。入力範囲に対応する出力範囲について多く異なるビデオ形式を網羅している、予め計算された表を生成するための多くの他の方法も存在し得る。
【００２３】
ブロック２１５で、方法２００は変換のための入力値を受信することができる。一実施形態では、画素毎の計算コストをもたらすイメージの任意の修正に応じて、画素値を平面モードで受信する。画素毎の計算コストを必要とするオペレーションの例の一部は、或るビデオ形式から別のビデオ形式（すなわち、ＹＵＶからＲＧＢ）への変換、シェーダ変換、明度（lightness）もしくは光度（brightness）の補正、彩度変更、または色補正である。例えば、ＹＵＶ画素値の組（tuple）を、ＹＵＶ形式から別の形式（すなわち、ＹＵＶからＲＧＢ／ＲＧＢからＹＵＶ）への要求された変換に応じて、Ｙデータの平面、Ｕデータの平面、およびＶデータの平面として方法２００によって受信することができる。さらに別の実施形態では、方法２００は非プレイナー、すなわち「チャンク（chunky）」データを受信する。例えば、ＹＵＶデータを、Ｙ、Ｕ、およびＶの３つの値すべてを含む単一のメモリユニットとして受信することができる。方法２００はチャンクデータの各ピースを１×１の画素平面と考えることができる。チャンクデータの各ピースを、画素ごとに別個のデータ平面に変換することができる。入力値を受信して解釈するための多くの他の実施形態も存在し得る。
【００２４】
ブロック２２０で、方法２００はブロック２１０のルックアップテーブルを使用して、出力値に対する入力の寄与を探すことができる。一実施形態では、ＹＵＶの組からの値を使用して所望の出力に対するその寄与を探す。例えば、図３ａ〜ｃを参照すると、１７のＹ入力３０５は、Ｒ、Ｇ、およびＢの所望の出力の各々の合計値に対して、１.１６４の寄与を有する。また、Ｕ（Ｃb）入力３１０の値１７は、それぞれＲ、Ｇ、およびＢの所望の出力の合計値に対して、０、４４．４００および−２２３．９９８の寄与を有し、Ｖ（Ｃr）入力３１５の値１７は、それぞれＲ、Ｂ、およびＢの所望の出力の合計値に対して、−１７７．１５６、９２．２４１、および０の寄与を有する。
【００２５】
ブロック２２５で、方法２００はブロック２２０の入力の寄与を格納することができる。一実施形態では、各成分の寄与を特定の順序で単一のメモリ位置に格納する。例えば、後続の加算処理中のオーバーフローエラーを防止するようにデータを格納することができる。図４を参照すると、方法２００は、各寄与を収容するための同じ大きさの部分に分割することができるメモリ空間に、寄与を格納することができる。例えば、メモリ空間はコンピュータ１１０の処理装置１２０内にあるレジスタとすることができる。本明細書で使用されるとき、レジスタは、ＲＡＭ１３２内の任意のメモリ位置、または処理装置１２０を用いて算術機能を実行できる他の任意の離散メモリユニットとすることができる。さらに、メモリ空間は、コンピュータ１１０によって共に処理される任意の固定サイズのビットのグループとすることができる。また、ｘ８６プラットフォームでは、メモリ空間は１６ビットワードとすることができ、ダブルワード（ｄｗｏｒｄ）は３２ビット長とすることができる。
【００２６】
一実施形態では、メモリ空間は、３２ビットのｄｗｏｒｄであり、各寄与には各値の間に「バッファ」または「ギャップ」４１０を有する１０ビットのｄｗｏｒｄ４０５が割り当てられる。バッファは、後続の加算操作中のオーバーフローエラーを防止するのに適切な任意のサイズとすることができる。例えば、バッファは、１ビットのサイズとすることができる。さらに別の実施形態では、メモリ空間は、上述した各々順序付けられた寄与を格納するのに十分なメモリを割り当てることが可能な、任意の構造とすることができ、メモリ空間の数はターゲットの形式の要素の数と同じにすることができる。例えば、ＲＧＢ形式は３つの要素から構成される。したがって、方法２００は３つのメモリ空間４１５、４２０、および４２５を使用することができる。また、寄与の組の各要素を、複数の空間にわたって同じ順序で格納することができる。例えば、３つのメモリ空間４１５、４２０、および４２５はそれぞれ、各値の間に１ビットのバッファを有する、最初の１０ビットに格納されたＹ値と、２番目の１０ビットに格納されたＵ値と、３番目の１０ビットに格納されたＶ値とを表すデータを有することができる。したがって、成分Ｒ、ＧおよびＢに対するＹ、Ｕ（Ｃb）およびＶ（Ｃr）の寄与を、異なるメモリ空間４１５、４２０および４２５に格納して、Ｒへの寄与、Ｇへの寄与、およびＢへの寄与の順に配置することができる。例えば、ＹＵＶデータをＲＧＢに変換する実施形態では、空間４１５はＲ、ＧおよびＢの各々に対するＹの寄与を順番に格納し、空間４２０はＲ、ＧおよびＢの各々に対するＵ（Ｃb）の寄与を順番に格納し、空間４２５はＲ、ＧおよびＢの各々に対するＶ（Ｃr）の寄与を順番に格納する。当然、これらの成分を特定の順序で格納するメモリ空間の実施形態は多数存在し、格納される成分のサイズも多数存在し得る。
【００２７】
ブロック２３０において、図５ａに関連して、方法２００は出力画素値を計算することができる。一実施形態では、方法２００は、３つのメモリ空間４１５、４２０および４２５を利用する２つの並列加算操作５０２、５０４を実行する。例えば、メモリ空間４１５、４２０および４２５は各入力値５０５について、それぞれ、Ｙ、Ｕ（Ｃb）およびＶ（Ｃr）のＲ、ＧおよびＢに対する寄与を順番に格納することができる。この３つの値を並列に加算して（５０２、５０４）、結果の値であるＲ、ＧおよびＢを計算することができる（５０６）。例えば、値を３つの３２ビットワードとして並列に加算すると、結果として２つの加算操作５０２、５０４となる。さらなる実施形態では、ギャップ４１０は、バイナリの加算操作に関連するオーバーフローおよび繰り上げ規則によってＲ、ＧおよびＢの成分値が互いに干渉することを防止する。各寄与の合計値５１０は、ＹＵＶ入力からＲＧＢの出力値を生成する並列加算処理から得ることができる。該並列加算の結果を、Ｒ、ＧおよびＢの順番で単一の３２ビットのメモリ空間に保存することができる。
【００２８】
別の実施形態では、結果の合計値を切り上げて、当該合計値が、ターゲットの形式の許容範囲内に留まることを保証する。例えば、図５ａおよび５ｂを参照すると、入力のＹＵＶ画素値が１７、１７、１７のとき、Ｒの合計値は負数の５１５となることがある。ＲＧＢ形式で可能な成分値は０から２５５の間であるので、負の結果は許容できない。したがって、方法２００は、ＲＧＢ形式に変換するとき、許容可能なＲＧＢ値の範囲に対応させるように負数をゼロの５１７に切り上げることを決定することができる。さらに、小数の５２０を、許容可能な出力範囲内の値に対応する整数の５２５に丸めることができる。同様に、許容範囲を超えている合計値５１０を、該形式の許容できる最大の値まで切り捨てることができる。出力値を計算する他の実施形態も多く存在する。
【００２９】
ブロック２３５で、方法２００は、変換する必要がある値がさらにあるかどうかを判断することができる。一実施形態では、方法２００は、全ての変換前（pre-conversion）の画素値の復元先であるバッファをチェックして、値がまだ残っているかどうかを判断する。例えば、バッファは、方法２００によって処理するためにＹＵＶ画素値がロードされる、ＦＩＦＯ待ち行列（queue）とすることができる。方法２００が変換の必要がある値がまだあると判断した場合、該方法はブロック２２０に戻る。値が残っていない場合は、該方法はブロック２４０に進む。
【００３０】
ブロック２４０で、方法２００は、変換または修正された画像を格納することができる。一実施形態では、方法２００はイメージを直接、画素ごとに、バックバッファなどのメモリに格納することができる。例えば、ビデオディスプレイでは、構成層（compositing layer）が圧縮ビデオをＹＵＶ平面にデコードし、該ＹＵＶ平面を中間ＲＧＢバッファに変換して、後の表示のために該ＲＧＢバッファをバックバッファにマージ／構成することができる。中間バッファを組み込んだ合成器（compositor）は、異なる速度でイメージを表示するビデオ形式間で変換するときに有用であることがある。例えば、ビデオ再生装置（playback）は、典型的なデジタルアニメーションのシーケンスよりも遅い毎秒１フレームの速度で動作することがある。ビデオ再生装置が遅いので、低速な形式の一部のフレームを高速な形式の再生中に繰り返し表示して、速度の違いを補うことができる。表示される度に同じフレームを再変換するのではなく、変換したＹＵＶまたはＲＧＢデータを中間バッファに保存して、前に表示されたフレームを高速に呼び出すことができる。さらに、変換ステップに相当量の計算処理がかかる場合（該ステップが各画素について表１の行列変換を使用して変換するとき）は、繰り返されるフレームを１度だけ変換して結果のデータをキャッシュすることがより効率的であろう。したがって、各画素変換においてこの変換を利用することによって、処理された画素それぞれについて追加の読取（Read）／修正（Modify）／書込（Write）のコマンドが生成されることがある。
【００３１】
しかしながら、ブロック２２０から２３５に関連して上述したように、変換の処理コストは非常に低い。例えば、ＹＵＶからＲＧＢへの変換では、各ターゲット形式の成分についての表の参照と、続く並列加算のみを要する。したがって、変換のコストが非常に低いため、各画素が画素ごとに復元されるときに該変換を実行することができ、結果のデータをバックバッファに直接保存することができる。バックバッファに直接保存することで、変換処理中の中間（ＲＧＢ）バッファならびに読取／修正／書込のコマンドを排除することができ、そしてキャッシュのコヒーレンス（coherency）を改善することもできる。さらに、ある特定のプロセッサの書込／結合機能により、変換および出力の性能を大幅に向上させることができる。当然、変換されたデータを格納および利用して、Ｒ／Ｍ／Ｗコマンド、中間バッファ、またはこれらの構造を利用するハードウェアコンポーネントを排除するための他の多くの実施形態が存在する。
【図１】
2010517442.tif 000005
【図２】
2010517442.tif 000006
【図３ａ】
2010517442.tif 000007
【図３ｂ】
2010517442.tif 000008
【図３ｃ】
2010517442.tif 000009
【図４】
2010517442.tif 000010
【図５ａ】
2010517442.tif 000011
【図５ｂ】
2010517442.tif 000012
【国際調査報告】
2010517442.tif 000013
2010517442.tif 000014