(57)【要約】  （データを非線形形式で処理するのに比べて）アーティファクトの量を低減するために画像情報を線形形式で処理するための方式が記載される。処理操作のタイプ例は、変倍、合成、アルファブレンディング、エッジ検出などを含み得る。より特定の実装形態では、画像情報（１１４）を処理する方式、すなわち、ａ）線形、ｂ）ＲＧＢ色空間、ｃ）高精度（例えば、浮動小数点表示によって提供される）、ｄ）プログレッシブ、およびｅ）フルチャネルについて記載する。他の改良は、以下の方式を提供する。ａ）処理速度を加速するために画像情報を擬似線形空間で処理する、ｂ）改良された誤差分散技術を実施する、ｃ）フィルタカーネルを動的に計算し、適用する、ｄ）最適な方法でパイプライン符号を生成する、ｅ）新しいピクセルシェーダ技術を使用して様々な処理タスクを実施する。【特許請求の範囲】
【請求項１】
画像情報を線形形式で処理する方法であって、
インターレース非線形形式の画像情報を受信するステップと、
伝達関数を前記画像情報に適用することによって、前記画像情報を線形形式に変換するステップと、
前記画像情報をデインターレースすることによって、前記画像情報をプログレッシブ形式に変換するステップと、
前記画像情報に対する処理を前記プログレッシブ線形形式で行うステップと
を備えることを特徴とする方法。
【請求項２】
前記受信された画像情報は、輝度関連色空間のものであることを特徴とする請求項１に記載の方法。
【請求項３】
前記画像情報の前記線形形式への前記変換前に、変換マトリックスを前記画像情報に適用することによって、前記画像情報を非線形Ｒ’Ｇ’Ｂ’色空間に変換するステップをさらに備えることを特徴とする請求項２に記載の方法。
【請求項４】
前記画像情報の線形形式への前記変換は、前記伝達関数を適用して、前記画像情報をＲ’Ｇ’Ｂ’色空間から線形ＲＧＢ色空間に変換するステップを含むことを特徴とする請求項３に記載の方法。
【請求項５】
前記処理は、前記画像情報をサイズ変更するステップを含むことを特徴とする請求項１に記載の方法。
【請求項６】
前記処理は、前記画像情報に対して合成操作を行うステップを含むことを特徴とする請求項１に記載の方法。
【請求項７】
前記処理は、前記画像情報に対してアルファブレンディングを行うステップを含むことを特徴とする請求項１に記載の方法。
【請求項８】
前記処理は、前記画像情報に対してエッジ検出を行うステップを含むことを特徴とする請求項１に記載の方法。
【請求項９】
前記受信された画像情報は、輝度関連色空間のものであり、前記受信された画像情報は、輝度サンプルに比べてより少ない色度サンプルを有することを特徴とする請求項１に記載の方法。
【請求項１０】
前記受信された画像情報をアップサンプリングして、輝度サンプル数に比べて色度サンプル数を増やすステップをさらに備えることを特徴とする請求項９に記載の方法。
【請求項１１】
前記アップサンプリングは、フルチャネル４：４：４画像情報を生成することを特徴とする請求項１０に記載の方法。
【請求項１２】
前記受信された画像情報は、４：２：０フォーマットのものであり、前記デインターレースおよび前記アップサンプリングによって行われる分析は、統合されることを特徴とする請求項１０に記載の方法。
【請求項１３】
前記受信された情報は、高精度フォーマットに変換されることを特徴とする請求項１に記載の方法。
【請求項１４】
前記高精度フォーマットは、浮動小数点フォーマットを含むことを特徴とする請求項１３に記載の方法。
【請求項１５】
前記浮動小数点フォーマットは、１６ビットの浮動小数点フォーマットを含むことを特徴とする請求項１４に記載の方法。
【請求項１６】
前記画像情報が処理された後で、それを量子化し、ディザリングして、その精度を低減し、それによって量子化された画像情報を提供するステップ
をさらに備えることを特徴とする請求項１に記載の方法。
【請求項１７】
前記量子化およびディザリングは、誤差分散アルゴリズムを適用して、前記量子化された画像情報におけるアーティファクトの量を低減し、前記誤差分散アルゴリズムは、誤差項を、処理を受けている画素を基準にして隣接する画素に分散することを特徴とする請求項１６に記載の方法。
【請求項１８】
前記誤差分散アルゴリズムは、Ｆｌｏｙｄ−Ｓｔｅｉｎｂｅｒｇアルゴリズムに基づくことを特徴とする請求項１７に記載の方法。
【請求項１９】
量子化される値が元の画像値、誤差項値、およびノイズ値に基づいて、量子化された値をもたらすように、ノイズは、前記誤差分散アルゴリズムによって行われる前記量子化に追加されることを特徴とする請求項１７に記載の方法。
【請求項２０】
その後の量子化操作の誤差項は、前記元の画像値と前記量子化された値との間の差を見つけることによって計算されることを特徴とする請求項１９に記載の方法。
【請求項２１】
前記量子化に追加される前記ノイズは、アーティファクトが前記量子化された画像情報に現れないように、十分長い反復期間を有するノイズ生成器によって生成されることを特徴とする請求項１９に記載の方法。
【請求項２２】
前記線形形式は、疑似線形形式を含むことを特徴とする請求項１に記載の方法。
【請求項２３】
前記疑似線形形式を生成する前記伝達関数は、乗算を適用することを特徴とする請求項２２に記載の方法。
【請求項２４】
前記疑似線形形式を生成する前記伝達関数は、ほぼゼロの入力値の領域に線形部分を有することを特徴とする請求項２２に記載の方法。
【請求項２５】
前記処理は、線形型アルゴリズムを、前記疑似線形形式の前記画像情報に適用するステップを伴うことを特徴とする請求項２２に記載の方法。
【請求項２６】
前記処理後、前記画像情報の前記疑似線形形式を取り除くための操作を行うステップをさらに備えることを特徴とする請求項２２に記載の方法。
【請求項２７】
前記疑似線形形式を取り除いた後、前記画像情報を、所定の出力要件に適した非線形形式に変換するステップをさらに備えることを特徴とする請求項２６に記載の方法。
【請求項２８】
前記疑似線形画像形式の前記取り除き、および出力要件に適した非線形形式への前記変換は、単一の操作に結合されることを特徴とする請求項２７に記載の方法。
【請求項２９】
少なくとも１つの変倍操作を伴うことを特徴とする請求項１に記載の方法。
【請求項３０】
前記変倍操作は、Ｃａｔｍｕｌｌ−Ｒｏｍフィルタを使用することを特徴とする請求項２９に記載の方法。
【請求項３１】
前記変倍操作は、フィルタカーネル数を事前に計算し、次いで、前記事前に計算されたフィルタカーネルを適用して、前記画像情報を処理するステップを伴うことを特徴とする請求項２９に記載の方法。
【請求項３２】
前記事前の計算は、必要とされるフィルタカーネル数を計算し、各カーネルがどれだけのタップを有するべきかを判定するステップも伴うことを特徴とする請求項３１に記載の方法。
【請求項３３】
前記フィルタカーネルの前記適用は、前記画像情報の行または列を処理するとき、前記事前に計算された一連のフィルタカーネルを周期的に繰り返すステップを伴うことを特徴とする請求項３１に記載の方法。
【請求項３４】
前記方法は、画像処理パイプラインを定義し、最適化コードプログラムが、前記画像処理パイプラインを実施するために使用されることを特徴とする請求項１に記載の方法。
【請求項３５】
前記最適化コードは、
前記画像処理パイプラインの要件を入力し、
前記要件を実施するために使用できるコードモジュールのライブラリからコードモジュールをアセンブリし、必要でないコードモジュールは前記最適化コードで使用されないようにする
ことによって生成されることを特徴とする請求項３４に記載の方法。
【請求項３６】
前記方法における少なくとも１つの操作は、グラフィックス・プロセッシング・ユニットを使用して行われることを特徴とする請求項１に記載の方法。
【請求項３７】
前記方法におけるすべての前記操作は、前記ググラフィックス・プロセッシング・ユニットを使用して行われることを特徴とする請求項３６に記載の方法。
【請求項３８】
前記グラフィックス・プロセッシング・ユニットは、ピクセルシェーダを含むことを特徴とする請求項３６に記載の方法。
【請求項３９】
加重情報を少なくとも１つのテクスチャユニットに割り当て、
入力画像情報のデルタシフトバージョンを他の複数のテクスチャユニットに割り当て、
前記テクスチャユニットから受信された情報に基づいて前記ピクセルシェーダを使用した操作を行って出力結果を提供する
ことによって、前記ピクセルシェーダを使用して変倍操作を行うステップをさらに備えることを特徴とする請求項３８に記載の方法。
【請求項４０】
複数の部分的な出力結果に基づいて最終的な出力結果を生成するために、前記ピクセルシェーダを使用して複数の操作を行うステップをさらに備えることを特徴とする請求項３９に記載の方法。
【請求項４１】
複数の操作を行う前記ステップは、前記変倍操作がいくつかの使用可能なテクスチャユニットを超えるいくつかのタップを有するフィルタを使用する場合に適用されることを特徴とする請求項４０に記載の方法。
【請求項４２】
請求項１に記載の前記方法を実施するように構成されていることを特徴とする画像処理パイプライン。
【請求項４３】
請求項１に記載の前記方法を実施するように構成されている機械可読命令を格納することを特徴とする１つまたは複数のコンピュータ読み取り可能な記録媒体。
【請求項４４】
画像情報を線形形式で処理する方法であって、
非線形形式の画像情報を受信するステップと、
前記画像情報を高精度線形ＲＧＢフォーマットに変換するステップと、
前記高精度線形ＲＧＢフォーマットの前記画像情報に対する処理を行うステップと
を備えることを特徴とする方法。
【請求項４５】
請求項４４に記載の前記方法を実施するように構成されていることを特徴とする画像処理パイプライン。
【請求項４６】
請求項４４に記載の前記方法を実施するように構成されている機械可読命令を格納することを特徴とする１つまたは複数のコンピュータ読み取り可能な記録媒体。
【請求項４７】
元の画像情報を量子化し、ディザリングして、量子化された画像情報を生成する方法であって、
前記画像情報から得られた元の値、ノイズ値、および誤差項を結合する合計を量子化して、量子化された値を生成するステップと、
前記量子化された値と前記元の値との間の差を計算することによって、その後の量子化操作の誤差項を計算するステップと
を備えることを特徴とする方法。
【請求項４８】
請求項４７に記載の前記方法を実施するように構成されていることを特徴とする画像処理パイプライン。
【請求項４９】
請求項４７に記載の前記方法を実施するように構成されている機械可読命令を格納することを特徴とする１つまたは複数のコンピュータ読み取り可能な記録媒体。
【請求項５０】
画像情報を疑似線形形式で処理する方法であって、
非線形形式の画像情報を受信するステップと、
伝達関数を使用して、前記画像情報を疑似線形形式に変換するステップと、
線形情報を生成するように調整された少なくとも１つのアルゴリズムを使用して、前記画像情報に対する処理を前記疑似線形形式で行うステップと
を備えることを特徴とする方法。
【請求項５１】
請求項５０に記載の前記方法を実施するように構成されていることを特徴とする画像処理パイプライン。
【請求項５２】
請求項５０に記載の前記方法を実施するように構成されている機械可読命令を格納することを特徴とする１つまたは複数のコンピュータ読み取り可能な記録媒体。
【請求項５３】
実行される変倍に基づいて、前記フィルタの実施に必要なフィルタカーネル数、およびフィルタカーネルごとに必要なタップ数を計算し、
前記フィルタカーネル数を事前に計算し、格納し、
事前に計算されたフィルタカーネルより多くのピクセル要素が行または列にある場合、前記フィルタカーネルを繰り返して順番に行うことによって、前記フィルタカーネルを前記画像情報の前記行または列に適用する
ことによって、フィルタを使用して、画像情報に対して変倍操作を行うことを特徴とする方法。
【請求項５４】
請求項５３に記載の前記方法を実施するように構成されていることを特徴とする画像処理パイプライン。
【請求項５５】
請求項５３に記載の前記方法を実施するように構成されている機械可読命令を格納することを特徴とする１つまたは複数のコンピュータ読み取り可能な記録媒体。
【請求項５６】
画像処理パイプラインの実施に使用されるコードを生成する方法であって、
前記画像処理パイプラインの要件を入力するステップと、
前記要件を実施するために使用できるコードモジュールのライブラリからコードモジュールをアセンブリするステップであって、必要でないコードモジュールは前記生成されたコードで使用されないようにするステップと
を備えることを特徴とする方法。
【請求項５７】
コードモジュールをアセンブルするステップは、前記画像処理パイプラインの適用の前に、静的分析を使用して、前記画像処理パイプラインの実施に使用される前記コードを生成することを特徴とする請求項５６に記載の方法。
【請求項５８】
請求項５６に記載の前記方法を実施するように構成されていることを特徴とする装置。
【請求項５９】
請求項５６に記載の前記方法を実施するように構成されている機械可読命令を格納することを特徴とする１つまたは複数のコンピュータ読み取り可能な記録媒体。
【請求項６０】
グラフィックス・プロセッシング・ユニットのピクセルシェーダを使用して画像処理パイプラインにおいて少なくとも１つの処理タスクを行う方法であって、
加重情報を、前記ピクセルシェーダの少なくとも１つのテクスチャユニットに割り当てるステップと、
入力画像情報のデルタシフトバージョンを、前記ピクセルシェーダの他の複数のテクスチャユニットに割り当てるステップと、
前記テクスチャユニットからの前記情報に基づいて前記ピクセルシェーダを使用した操作を行って出力結果を提供するステップと
を備えることを特徴とする方法。
【請求項６１】
請求項６０に記載の前記方法を実施するように構成されていることを特徴とする画像処理パイプライン。
【請求項６２】
請求項６０に記載の前記方法を実施するように構成されている機械可読命令を格納することを特徴とする１つまたは複数のコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、Glenn F. EvansおよびStephen J. Estropを発明者として挙げる「Strategies for Processing Image Information Using a Color Information Data Structure」という名称の２００４年７月２９日出願の同時係属米国特許非仮出願第１０／９０２，３２５号（’３２５出願）の一部継続出願である。’３２５出願もまた、２００３年８月１日出願の米国特許仮出願第６０／４９２，０２９号（’０２９出願）の利益を主張する。’３２５出願および’０２９出願は、参照によりその全体が本明細書に組み込まれる。
【０００２】
本主題は、画像情報を処理するための方式に関し、より詳細な実装形態では、ビデオ処理パイプラインを使用したビデオ画像情報の処理の方式に関する。
【背景技術】
【０００３】
ビデオ処理技術分野における問題例 
今日使用されているビデオ処理技術は、長年にわたるこうした技術の発展を追跡することによって最適に理解される。発展の様々な段階において、その時々で業界に直面する問題に取り組むために、機能が追加されてきた。互換性および整合性を維持するために、解決のために機能が設計された問題がその後消え失せても、後の技術は、こうした機能の一部を維持している場合がある。その結果、現在の技術は、様々なときに業界に直面する一連の以前の問題、標準グループ間の折衷、変化する技術ベースの制約および機会などを反映する、こうした歴史に基づく機能の凝集と見なすことができる。
【０００４】
ビデオ処理技術の上述した性質の結果、その分野で働く者が、ビデオ処理技術のいくつかの局面に関する固定した発想を開発してきた。あるビデオ処理情報を解釈する方法に関する固定概念、およびこうしたビデオ情報を「正しく」処理する方法に関する固定概念がある。本発明者が認識するように、こうした固定概念の多くは、あまり根拠がなく、再考の必要がある。
【０００５】
固定概念の中の主要部分は、一般に、ビデオ情報は、ブロードキャストソース、記憶媒体（ＤＶＤディスクなど）、または他のソースのいずれかから受信された形で処理されるべきであることである。しかし、多くのビデオ標準は、ビデオ情報が表示の前に処理されるという見込みで設計されてはいない。例えば、従来のテレビは、複雑な処理機能に対応しておらず、これらの装置は、単に、ビデオ情報を受信し、表示するだけである。したがって、ビデオ情報が受信される形は、こうした情報の効率的な処理に容易に対応しない可能性がある。
【０００６】
その結果、容認されている多くのビデオ情報の形に対して標準の処理アルゴリズムを直接適用することによって、様々なアーティファクト（artifact）が生成される。当業者は、時々これらのアーティファクトに気付いている。しかし、こうした専門家は、使用されている技術の根本的な前提を問題として取り上げるのではなく、問題を是正するために、しばしばローカルパッチに頼ってきた。こうした解決策は、用途に固有のいくつかの状況における問題は隠すかもしれないが、一般には問題を解決しない。
【０００７】
例えば、ビデオ情報は、ビデオ処理パイプラインによって、非線形の形で受信され、インターレースされ、色度サブサンプリング（ｃｈｒｏｍａ  ｓｕｂｓａｍｐｌｅｄ）され、輝度関連の色空間（ｌｕｍａ−ｒｅｌａｔｅｄ  ｃｏｌｏｒ  ｓｐａｃｅ）（Ｙ’Ｕ’Ｖ’情報など）の何らかの変形で表されることが多い。（「非線形」という用語は、受信信号と、その信号から生成された、結果として得られた出力明度との間に非線形の関係があることを意味し、前の文章での他の用語については、以下で十分説明する）。専門家は、様々な線形型処理アルゴリズムをこの情報に適用して、例えばビデオ情報をサイズ変更したり、ビデオ情報を他の情報と組合せ（例えば合成）たりすることによって、所定の方法でそれを変更しようと試みる可能性がある。本発明者が認識するように、これらのアルゴリズムの多くは、この性質の非線形ビデオ情報を処理するとき、最適な結果、または正しい結果すら提供しない。インターレース済みの色度サブサンプリングされた４：２：２または４：２：０の情報（以下で定義される）の処理は、こうした低品質の結果を悪化させる。例えば、４：２：２または４：２：０の情報の処理は、ビデオ処理パイプラインの様々な段階を通じて誤差の伝搬をもたらし得る。
【０００８】
処理済みの結果の不完全性は、肉眼で見える場合も見えない場合もあるが、様々なアーティファクトとなって現れる。この場合もまた、当業者は、結果の品質の低さに気付いてはいるが、その原因を識別していない場合がある。これは、専門家が多くのビデオ符号化標準の複雑な性質を完全には理解していないことによる場合がある。また、専門家は、非線形情報を処理するのに線形アルゴリズムを使用していることを知らない場合もある。実際に、一部の場合、専門家は、間違って、線形情報を扱っていると確信している場合がある。また、ビデオ処理技術分野における一般の焦点は、必ずしもこうした情報の中間処理および補正ではなく、画像情報の生成を目標としてきた。
【０００９】
線形型アルゴリズムを非線形情報に適用することは、ビデオ処理技術分野における、上述した固定した発想の一例にすぎない。以下で説明するように、ディザリングの場合など、最適な結果を生成しない他の多くの技術が修正されるようになった。例えば、専門家は、少量のランダムノイズを入力画像情報に追加し、次いで結果として得られたノイズ画像を量子化することによって、一部のディザリング量子化アルゴリズム（ｄｉｔｈｅｒｉｎｇ−ｑｕａｎｔｉｚａｔｉｏｎ  ａｌｇｏｒｉｔｈｍ）によってもたらされるアーティファクトを是正しようと試みる場合がある。これらの技術は、次いでノイズ画像と量子化された結果との間の差を計算することによって、量子化誤差を推定する。これは、ディザリングアーティファクトを直すという効果はあり得るが、元の画像情報に加えられたランダムノイズの量に比べて出力画像のノイズを増やしてしまうという代償がある。
【００１０】
慣習や慣れのために、重大ではあるが捕らえにくい欠点を認識することなく、ビデオ処理技術分野において引き続き適用される定着した考えの例は他にも数多く存在する。本明細書に記載された改良の一般的な主題は、代替の解決策の設計と結合された、こうした凝り固まった考え方の再考を伴う。
【００１１】
ビデオ処理の分野は、用語が豊富である。したがって、前付として、読者を助けるために、以下に、ビデオ処理分野におけるいくつかのトピックの概論について述べる。例えば、これまでに上記で使用されたいくつかの用語（線形、インターレース、輝度、色度サブサンプリングなど）について、以下で定義する。用語の一般的な事項として、「画像情報」という用語は、本文書を通じて、それだけには限定されないが、動画情報を含めて、任意の種類の可視出力としてレンダリングされ得る広範囲のクラスの情報を表すために使用される。
【００１２】
背景概念
・色空間およびその関連についての検討
色は、３つの成分を使用して指定することができる。個別の色成分を使用した色コンテンツの伝達に依存する画像ストリームは、コンポーネント映像（ｃｏｍｐｏｎｅｎｔ  ｖｉｄｅｏ）と呼ばれる。共通仕様の１つでは、赤、緑、および青（ＲＧＢ）の成分を使用して色を定義する。より正式には、ＲＧＢ成分は、所与のスペクトルに知覚的に同等の色を作り出す基準ランプの比例強度を示す。一般に、ＲＧＢ色空間は、その原色およびその白色点に関連付けられている色度値によって指定することができる。白色点とは、基準白色に関連付けられている色度を指す。
【００１３】
カラー画像を再生する電子装置は、３つのタイプの光源を提供することによって、人間の視覚の三原色の性質を補う。３つのタイプの光源は、人間の観察者にとって異なる色として感知される異なるスペクトル応答を生成する。例えば、ブラウン管（ＣＲＴ）は、異なる色を作り出すために赤色、緑色、および青色の燐光体を提供し、したがって、上述したＲＧＢ色空間の何らかの変形体を補う。他の技術は、燐光体を使用するのではなく、少なくとも３種類の光を発する光源を使用して色を再生する。
【００１４】
しかし、ＲＧＢ符号化モデルは、画像情報の伝達に効率的な選択肢ではなく、一部のより古い標準に十分準拠していない。したがって、画像情報は、一般に、ＲＧＢ以外の何らかの符号化モデルを使用して、目的の装置に送信される。画像情報は、受信されると、表示装置によって、ＲＧＢ関連の色空間に内部で変換されて表示され得る。「ガンマの検討」という見出し下で後述されるように、各Ｒ、Ｇ、Ｂの成分データは、Ｒ’値、Ｇ’値、Ｂ’値と呼ばれる、そのガンマ補正前の形（ｐｒｅ−ｇａｍｍａ  ｃｏｒｒｅｃｔｅｄ  ｆｏｒｍ）によって表すことができる。（一般に、慣習通り、プライム記号は、この開示では非線形情報を示している）。
【００１５】
この点に関する共通の方式は、輝度関連の成分（Ｙ）および色度関連の成分を参照することによって色を定義することである。輝度とは、一般に、感知される光の強度（明度）を指す。輝度は、「輝度」（Ｙ’）と呼ばれるその非線形の対応物を得るために、（「ガンマの検討」下で後述するようにして）ガンマ補正前の形で表すことができる。色度成分は、輝度に対する画像情報の色コンテンツを定義する。例えば、デジタル領域において、記号「Ｃｂ」は、差Ｂ’−Ｙ’の尺度がｎビットの整数（一般に８ビット値で−１２７・・・１２８の範囲からの）の表現に相当し、記号「Ｃｒ」は、差Ｒ’−Ｙ’の尺度がｎビットの整数の表現に相当する。記号「Ｐｂ」は、Ｃｂのアナログの対応物を指し、記号「Ｐｒ」は、Ｃｒのアナログの対応物を指す。また、記号ＰｂおよびＰｒは、公称範囲［−０．５・・・０．５］のＣｂまたはＣｒのデジタル正規化形を指し得る。ＣｂＣｒおよびＰｂＰｒによって定義される成分画像情報は、非線形の情報を表すため、形式的にプライム記号が付されてもよい（Ｃｂ’Ｃｒ’およびＰｂ’Ｐｒ’など）。しかし、Ｐｂ、Ｐｒ、Ｃｂ、またはＣｒは常に非線形データを指すため、プライム記号での表記は、便宜上および慣習上、省略されることが多い（例えば、Ｙ’Ｐｂ’Ｐｒ’の代わりに、表記Ｙ’ＰｂＰｒが使用される）。
【００１６】
色コンテンツは、（上述したコンポーネントビデオではなく）コンポジットビデオとして伝えることもできる。コンポジット信号は、輝度および色度情報を１つの信号に結合する。例えば、符号化システムＹ’ＵＶにおいて、Ｕは、Ｂ−Ｙの変倍バージョンを表し、Ｖは、Ｒ−Ｙの変倍バージョンを表す。次いで、これらの輝度および色度の成分は、単一の信号を提供するために処理される。符号化システムＹ’ＩＱは、所定の方法でＵ成分およびＹ成分を変換することによって形成された別のコンポジット符号化システムを定義する。業界が歴史的にＹ関連の色空間（Ｙ’ＣｂＣｒ、Ｙ’ＰｂＰｒ、ＹＵＶ、ＹＩＱなど）の使用を奨励してきた１つの理由は、こうした色空間での色画像情報の低減は、ＲＧＢ色空間で表される画像情報に比べてより容易に行うことができるからである。こうした色空間は、白黒画像情報用に開発された古い標準との下位互換性もある。「輝度関連の情報」という用語は、一般に、明度関連の成分および色度関連の成分を有する任意の色空間を指し、上述した色空間の少なくともすべてを含む。
【００１７】
一般に、１つまたは複数のマトリックスアフィン変換を使用して、色コンテンツをある色空間から別の色空間に変換することができる。より正式には、メタメリズムの特性によって、ある１組の色空間係数を別の１組のマッチング関数によって表すことができるようになる（ここでは、「メタメリズム」とは、同じ１組の色空間係数にマッピングし、したがって知覚的に同じであるように見える、すなわち同じ色に見える２つのスペクトルを指す）。
【００１８】
・ガンマの検討
ブラウン管（ＣＲＴ）は、線形応答伝達関数を有していない。言い換えれば、ＣＲＴに適用された電圧と、ＣＲＴによって生成された、結果として得られた輝度との関係は、一次関数を定義しない。より詳細には、ＣＲＴの予想される理論的な応答は、５／２べき法則に比例する応答を有し、つまり、所与の入力電圧「Ｖ」について、結果として得られるＣＲＴの輝度「Ｌ」は、Ｌ＝Ｖ２．５として計算することができる。伝達関数は、本明細書では「ガンマ応答関数」とも呼ばれ、電圧信号の指数は、「ガンマ」と呼ばれる。
【００１９】
一方、画像情報がカメラによって捕捉されるか、３Ｄレンダリングシステムによって生成されるとき、画像情報は、線形ＲＧＢ色空間で表され、これは、受信信号と出力明度との間に線形の関係があることを意味する。カメラの直線性と表示の非直線性との間の格差に対処するために、カメラは、従来、ガンマの逆数を適用することによってカメラが生成した信号を予め補正する。言い換えれば、カメラの伝達関数（時として符号化伝達関数と呼ばれる）は、ＣＲＴ輝度応答のほぼ逆関数である。符号化伝達関数（または逆ガンマ）の適用の結果は、非線形の形の「ガンマ補正済み」画像情報を生成することである。非線形信号がディスプレイ装置を通過するとき、線形に近い輝度が生成される。再度、上述された表記によれば、非線形（または補正前の）画像情報は、Ｒ’Ｇ’Ｂ’やＹ’ＣｂＣｒ（この場合、Ｃｂ成分およびＣｒ成分へのプライム記号は暗に含まれている）など、その成分をプライム記号で表記することによって示される。
【００２０】
したがって、画像情報をその輝度−色度非線形（補正済み）形式で格納し、送信することが一般的で標準的となっている。互換性を維持するために、ＣＲＴ上に表示される信号を生成する任意のソースは、まず、逆関数を信号に適用しなければならない。
【００２１】
特別な考慮として、伝達関数を使用した画像情報の符号化では、一般に、特別な近似関数を関数の低電圧部分に適用する。つまり、符号化技術は、一般に、画像センサでのノイズの影響を低減するために、この部分に線形セグメントを提供する。このセグメントは、定義済みの「つま先型スロープ（ｔｏｅ  ｓｌｏｐｅ）」を有する「線形テール（ｌｉｎｅａｒ  ｔａｉｌ）」と呼ばれる。これらの装置は、その物理的な構造のために０に近い線形の輝度−電圧応答を有するため、このセグメントは、実際のＣＲＴ上に表示される画像情報の品質を向上させる。
【００２２】
・輝度情報に対する色度情報のサンプリングおよびアラインメント
人の視覚は、光の色度成分より光の強度の変化に対してより反応する。符号化システムは、この事実を利用して、輝度情報（Ｙ’）の量に比べて、符号化される色度（ＣｂＣｒ）情報の量を低減する。この技術は、色度サブサンプリングと呼ばれる。このサンプリング方式を表すために、総称してＬ：Ｍ：Ｎと表される数字表記を使用することができる。この場合、「Ｌ」は、輝度成分（Ｙ’）のサンプリング基準係数を表し、「Ｍ」および「Ｎ」は、輝度サンプリング（Ｙ’）に対する色度サンプリング（それぞれＣｂおよびＣｒ）を指す。例えば、表記４：４：４は、輝度サンプルごとに色度サンプルが１つあるＹ’ＣｂＣｒデータを指すことができる。表記４：２：２は、（水平方向に）２つの輝度サンプルごとに色度サンプルが１つあるＹ’ＣｂＣｒデータを指すことができる。表記４：２：０は、２×２クラスタの輝度サンプルごとに色度サンプルが１つあるＹ’ＣｂＣｒデータを指すことができる。例えば、表記４：１：１は、（水平方向に）４つの輝度サンプルごとに色度サンプルが１つあるＹ’ＣｂＣｒデータを指すことができる。
【００２３】
符号化方式が色度情報より多くの輝度情報を提供する環境では、デコーダは、提供された色度情報に基づいて補間を行うことによって、「欠けている」色度情報を再構築することができる。より一般には、ダウンサンプリングは、最初の１組の画像サンプルと比較してより少ない画像サンプルを生成する任意の技術を指す。アップサンプリングは、最初の１組の画像サンプルと比較してより多い画像サンプルを生成する任意の技術を指す。したがって、上述した補間は、アップサンプリングの一種を定義している。
【００２４】
また、符号化方式は、色度サンプルを対応する輝度サンプルに空間的に「合わせる」方法を指定する。符号化方式は、この点で異なる。色度サンプルが輝度サンプルの「上に」直接配置されるように、色度サンプルを輝度サンプルに合わせる。これは、コサイティング（ｃｏｓｉｔｉｎｇ）と呼ばれる。他の方式は、輝度サンプルの２次元アレイ内の隙間空間に色度サンプルを配置する。
【００２５】
・量子化の検討
量子化は、個別の数値が色成分（または白黒情報）の信号振幅に割り当てられる方法を指す。デジタル領域において、数値は、所定のステップ数で所定の範囲（範囲全体）の色空間値にわたる。例えば、各成分が０から２５５までの値と想定できるように、２５５のステップを使用して各成分値を記述するのが一般的である。８ビットを使用して各色値を表すのが一般的である。
【００２６】
高精度数からより低い精度数に変換することによって、時として様々なアーティファクトが生成され得る。この問題に対処するために、Ｆｌｏｙｄ−Ｓｔｅｉｎｂｅｒｇアルゴリズムなど、様々な誤差分散アルゴリズムが考案されている。誤差分散アルゴリズムは、量子化の四捨五入の影響によって生成された誤差を隣接するピクセル位置に分散させることができる。Ｆｌｏｙｄ−Ｓｔｅｉｎｂｅｒｇアルゴリズムに関するこれ以上の背景情報は、下記の発明を実施するための最良の形態の本文内に記載されている。
【００２７】
・インターレース表現対プログレッシブ（Ｐｒｏｇｒｅｓｓｉｖｅ）表現の検討
もともと、テレビは、トップダウンプログレッシブスイープ式（ｔｏｐ−ｄｏｗｎ  ｐｒｏｇｒｅｓｓｉｖｅ  ｓｗｅｅｐ  ｆａｓｈｉｏｎ）で白黒画像のみを表示していた。現在、従来のテレビ信号は、インターレース式でスキャンされている。インターレースでは、ビデオフレームの第１のフィールドが捕捉され、次いでそのすぐ後に、ビデオフレームの第２のフィールドが捕捉される（例えばその後１／５０または１／６０秒）。第２のフィールドが第１のフィールドの走査線間の隙間空間に情報を捕捉するように、第２のフィールドは、第１のフィールドに対してわずかな量だけ垂直方向にオフセットされる。ビデオ情報は、人間の閲覧者によって概ね情報の連続した単一フローとして感知されるように、第１および第２のフィールドを次々に表示することによって表される。
【００２８】
しかし、コンピュータモニタおよび他の表示機器は、インターリーブ式ではなく、プログレッシブ式で画像情報を表示する。したがって、装置がインターレースされた情報をコンピュータモニタ上に表示するには、反対のフィールドのデータを補間すること（「デインターレース」と呼ばれるプロセス）によって、プログレッシブフレームをインターレースフィールドレートで表示する必要がある。例えば、インターレースされたフィールドを表示するには、両側のフィールドを検査することによって、線間の空間的位置の「欠けている」データを補間する必要がある。「プログレッシブフォーマット」という用語は、一般に、任意のノンインターレースの画像フォーマットを指す。
【００２９】
（例えばビデオカメラからの）画像情報は、一般的には、インターレース形式で格納され、例えば、第１のフィールドは、第２のフィールドとは（意味的に）別に格納される。画像情報が単にインターレース式ＴＶディスプレイに表示される場合、そのＹ’ＵＶインターレース情報をＣＲＴに直接渡すことができる。ＣＲＴは、内部で、Ｙ’ＵＶ情報をＲ’Ｇ’Ｂ’情報に変換し、この信号を使用して出力銃（ｏｕｔｐｕｔ  ｇｕｎ）を駆動させる。
【００３０】
インターレースは、画像情報の有効な垂直解像度を倍にするため、有利である。しかし、インターレースも、アーティファクトをもたらす可能性がある。これは、オブジェクトは６０ｈｚで動くが、インターレース式の表示では、３０ｈｚごとに情報の半分しか表示されないからである。この現象によってもたらされる、結果として得られたアーティファクトは、時として「フェザリング」と呼ばれる。アーティファクトは、特に、動作が激しいビデオの表示に現れ、そこでは、オブジェクトは、奇数線と偶数線に別れて現れてしまう。
【００３１】
上記の黒点のトピックのそれぞれに関する追加情報は、いくつかの入門書に記載されている（例えば、非特許文献１参照）。
【００３２】
【非特許文献１】Charles Poyton's well-regarded Digital Video and HDTV (Morgan Kaufmann Publishers, 2003)
【発明の開示】
【発明が解決しようとする課題】
【００３３】
従来のシステムには上述したような種々の問題があり、さらなる改善が望まれている。
【００３４】
本発明は、このような状況に鑑みてなされたもので、その目的とするところは、アーティファクトの量を低減することができる、線形光量値および他の画像処理の改良を使用した画像処理の方法を提供することにある。
【課題を解決するための手段】
【００３５】
（データを非線形形式で処理するのに比べて）アーティファクトの量を低減するために画像情報を線形形式で処理するための方式について記載する。処理操作のタイプ例は、変倍、合成、アルファブレンディング、エッジ検出などを含み得る。より特定の実装形態では、画像情報を処理する方式、すなわち、ａ）線形、ｂ）ＲＧＢ色空間、ｃ）高精度（例えば、浮動小数点表示によって提供される）、ｄ）プログレッシブ、およびｅ）フルチャネルについて記載する。他の改良は、以下の方式を提供する。ａ）処理速度を加速するために画像情報を擬似線形空間で処理をする、ｂ）改良された誤差分散技術を実施する、ｃ）フィルタカーネルを動的に計算し、適用する、ｄ）最適な方法でパイプライン符号を生成する、ｅ）新しいピクセルシェーダ技術を使用して様々な処理タスクを実施する。
【００３６】
同様の構成要素および機能を参照するために、開示および図面を通じて同じ番号が使用される。１００番台の数字はもともと図１にある機能を、２００番台の数字はもともと図２にある機能を、３００番台の数字はもともと図３にある機能を指すというように、以下同様に番号を付している。
【発明を実施するための最良の形態】
【００３７】
以下の説明では、画像処理パイプラインを向上させる様々な方式を記載する。これらの方式は、当技術分野での固定した概念の再考に基づいて画像情報を処理する新しい方法を提案する。（セクションＡに記載した）第１のクラスの改良は、抽象的に、任意の画像処理パイプラインに適用することができる。（セクションＢに記載した）第２のクラスの改良は、より具体的に、画像処理パイプラインの技術固有または実装固有の用途のいくつかに適用される。
【００３８】
一例の方式によれば、画像処理パイプラインによって受信された画像情報は、線形形式に変換され、次いで、その形式で処理される。一実装形態例では、例えば、受信された輝度関連の画像情報（Ｙ’ＣｂＣｒ）は、線形ＲＧＢ形式に変換され、その形式で処理される。処理タスク例には、デインターレース、サイズ変更（変倍）、合成、アルファブレンディング、エッジ検出、シャープニングなどがある。画像情報を（非線形空間に対して）線形空間で処理することは、一般に、アーティファクトが少ない出力結果を生成するため、相当な利点がある。
【００３９】
別の方式例によれば、画像情報は、フルチャネル（４：４：４）および高精度フォーマットに変換され、そのフォーマットで処理され、その後、情報がより低い精度に量子化される。より高い精度情報は、浮動小数点フォーマットで表すことができる。フルチャネルおよび高精度情報の処理は、アーティファクトが少ない出力結果を生成し、情報がパイプラインで処理されるにつれて、色度解像度の劣化を低減し得るため、有利である。
【００４０】
別の方式例によれば、４：２：０インターレース済み画像情報を処理するために、特別な対策が提供される。こうした特別な対策は、アップサンプリング操作をデインターレース操作と統合する方法を提供する。この方式は、いくつかの理由のために有益である。例えば、この方式は、例えば、いわゆる「クロマバグ」処理アーティファクトを生成することなく、４：２：０情報が正しく処理されることをより確実にする。
【００４１】
別の方式例によれば、画像情報を、理論的に正しい線形空間ではなく、擬似線形空間に変換するために、特別な伝達関数を適用することができる。次いで、（非線形信号に適用することを考慮に入れるためにこれらのアルゴリズムを変更する必要なく）線形型アルゴリズムを使用して、画像情報に対する処理をこの擬似線形空間で行う。この方式は、利用可能な処理ハードウェアを使用してより迅速に行うことができる数学的演算を伴うために、有益である。また、この方式は、誤り訂正機構をこれらのアルゴリズムに組み込むことによって、画像処理アルゴリズムを変更する必要性をなくす。誤り訂正機構の目的は、非線形データを処理するために線形アルゴリズムを使用する負の効果を最低限に抑えることであった。しかし、これらの誤り機構の設計およびアプリケーションは、多くの場合、元の処理アルゴリズムより複雑になっていった。
【００４２】
別の方式例によれば、一意の誤差分散アルゴリズムが適用される。元の画像情報のピクセルごとに、アルゴリズムは、元の画像、ノイズ情報、および誤差項によって定義された合計を量子化する。これによって、その特定のピクセルの量子化された値が得られる。次いでアルゴリズムは、量子化された値と元の値との間の差を計算することによって、処理されるべき次のピクセルの誤差項を計算する。この方式は、本質的にノイズを元の画像情報に追加し、ノイズ画像情報を量子化する当技術分野の既知の方式より優れており、これらの既知の技術は、次いで、元の画像情報ではなく、ノイズ画像情報を参照して誤差項を計算する。したがって、本明細書に開示された方式とは異なり、既知の技術は、それに追加されたノイズ情報に比例して、元の画像情報を劣化させる。別の改良として、本明細書に記載された方式は、ノイズ生成器自体が宛先画像情報においてアーティファクトを生成しないように、反復期間が十分長く、十分に「ノイズのような」疑似ランダムの特徴を有するノイズ生成器を使用する。
【００４３】
別の方式によれば、変倍操作を行うために、Ｃａｔｍｕｌｌ−Ｒｏｍフィルタの変形が使用される。この方式は、画像情報をサイズ変更するのに必要なフィルタカーネルの数、および各カーネルによって必要とされるタップ数を計算し、次いでフィルタカーネルを事前に計算することを伴う。次いで、これらのフィルタカーネルは、画像情報に適用される。より詳細には、カーネルを、画像情報の行や列に周期的に適用することができる。この方式は、いくつかの理由のために有利である。例えば、動的に計算されたフィルタカーネルの使用によって、既知のいくつかの用途に見られるアーティファクトの一部が低減する。フィルタカーネルの事前の計算は、フィルタの実際の適用を促進するため、有利である。周期的に適用されるカーネルの最低限の組を適切に使用することによって、追加の効率関連の利点がある。
【００４４】
別の方式によれば、画像処理パイプラインを実施するためのコードの生成の機能について記載されている。この機能は、どのような操作をパイプラインが実行すべきなのかを指定する要件を受信し、次いで、こうした機能を実施するためにこうしたモジュールのライブラリからコードモジュールを選択的にアセンブルする。この機能は、必要ではないモジュールをライブラリから組み込まない。この方式は、多くの理由のために有益である。例えば、より効率的で、したがってより速く稼働し得るコードの生成の一助になる。
【００４５】
最後に、別の方式は、グラフィックス・プロセッシング・ユニット（ＧＰＵ）を使用して、画像処理パイプラインのいくつかの態様、または画像処理パイプラインにおける機能のすべてを実施する。特定の実装形態は、画像フィルタリングを実行するために、ピクセルシェーダ（ＧＰＵ内のデジタル信号プロセッサ（ＤＳＰ））を適用する。ある場合には、ピクセルシェーダの１つまたは複数のテクスチャユニットを、フィルタカーネルの重みに割り当てることができ、１つまたは複数の他のテクスチャユニットを、（カーネルのタップに関連付けられている）同じ入力画像情報の異なるデルタシフトバージョン（ｄｅｌｔａ−ｓｈｉｆｔｅｄ  ｖｅｒｓｉｏｎ）に割り当てることができる。この方式は、ピクセルシェーダのベクトル処理機能のために、ＣＰＵ実装に比べて潜在的により大きい処理速度および処理容量を提供するため、有益である。
【００４６】
この説明では、方式の追加の特徴およびそれに付随する利益について記載する。
【００４７】
専門用語に関して、「画像処理」という用語は、任意の視覚形式でユーザによって消費され得る任意の種類の情報を含むものである。画像処理は、アナログフォーマット、デジタルフォーマット、またはデジタルフォーマットとアナログフォーマットの組合せなど、任意のフォーマットで表される情報を表すことができる。画像情報は、静止画像情報（デジタル写真など）および／または可動情報（動画情報など）を表すことができる。画像情報の用語の使用によって、さらにこれ以上の変形が企図される。
【００４８】
「画像処理パイプライン」という用語は、画像情報を処理する任意の機能を指す。パイプラインは、連続して、すなわち次々に１つの画像情報に対して作用する少なくとも２つの機能構成要素を含む。
【００４９】
「線形化」という用語は、画像情報を、その非線形の補正前の形式から線形形式に変換することを指す。「非線形化」という用語は、線形化の逆の操作を指す。
【００５０】
「輝度関連の画像情報」という用語は、明度関連の成分（Ｙ’など）および色度成分を有する画像情報を指す。「輝度関連の色空間」という用語は、輝度関連の画像情報（Ｙ’ＣｂＣｒなど）を形成する複数の標準のうちの任意の１つを指す。
【００５１】
一般に、記載した主題の構造的な側面に関して、本明細書に記載されている任意の機能は、ソフトウェア、ファームウェア（固定論理回路など）、手動処理、またはこれらの実装の組合せを使用して実施することができる。「モジュール」、「機能」、および「論理」という用語は、本明細書で使用する場合、一般に、ソフトウェア、ファーム、またはソフトウェアとファームウェアとの組合せを表す。ソフトウェアの実装の場合、モジュール、機能、または論理という用語は、１つ又は複数の処理装置（ＣＰＵなど）上で実行されるときに指定されたタスクを実行するプログラムコードを表す。プログラムコードは、１つまたは複数のノンリムーバブルおよび／またはリムーバブルコンピュータ可読メモリ装置に格納することができる。
【００５２】
この主題の手順の側面に関して、いくつかの操作は、ある順序で実行される別個のステップを構成するものとして記載されている。こうした実装は、例であり、非限定的なものである。本明細書に記載されたいくつかのステップは、まとめて、単一の操作で実行することができ、いくつかのステップは、この開示に記載されている例で使用される順序とは異なる順序で実行することができる。
【００５３】
この開示は、以下の内容を含む。
Ａ．ビデオ処理パイプラインの一般の改良例
Ａ．１．画像情報のＲＧＢ（線形）色空間での処理
Ａ．２．パイプライン内での浮動小数点フルチャネル画像情報の使用
Ａ．３．４：２：０画像情報の特別な対策
Ａ．４．画像情報の擬似線形空間での処理
Ａ．５．誤差分散アルゴリズムの改良
Ａ．６．フィルタカーネルの動的計算
Ｂ．ビデオ処理パイプラインの実装関連の改良例
Ｂ．１．パイプライン処理コードの最適な生成
Ｂ．２．画像処理を実行するためのＧＰＵの一般的な使用
Ｂ．３．ピクセルシェーダ関連の改良
Ｃ．コンピュータ環境例
Ａ．ビデオ処理パイプラインの一般の改良例
Ａ．１．画像情報のＲＧＢ（線形）色空間での処理
【００５４】
図１は、画像情報（ビデオ情報など）を処理する画像処理パイプライン例１００を示している。概要として、最上行のモジュールは、様々なソース（カメラ、スキャナ、ディスク、記憶媒体、デジタルネットワークなど）のうちの任意のものから画像情報を受信し、次いで画像情報を、処理するための形式に変換する。図の中央の大きいモジュールは、処理済みの画像情報を生成する、こうした処理を表す。最下行のモジュールは、処理済みの画像情報を、宛先サイト（テレビ、コンピュータモニタ、記憶媒体、デジタルネットワークなど）への出力に適したどんな形式にも変換する。
【００５５】
この開示の個別のサブセクションで識別されている、画像処理パイプライン１００に特有の有利な態様がいくつかある。このサブセクションは、画像情報を線形形式で処理することに焦点を置く。他の改良は、画像情報を、ＲＧＢ色空間内のプログレッシブ（デインターレース）形式でさらに処理するものに起因する。それに対して、当技術分野での一般的な手法は、４：４：４または４：２：２のインターレース済みＹ’ＵＶ情報の処理を行うことである。本発明者が理解するように、画像情報を非線形の色空間で処理することによって、様々なアーティファクトがもたらされる。図１のパイプライン１００で具体化された手法は、これらの問題を克服する。
【００５６】
次に、図１に示されている各モジュールについて説明する。
モジュールの最上行に関して、非ディザリングモジュール（ｕｎｄｉｔｈｅｒｉｎｇ  ｍｏｄｕｌｅ）１０２は、第１の精度を有する受信したＹ’ＣｂＣｒ画像情報を、第２の精度を有する画像情報に変換するものであり、この場合、第２の精度は、第１の精度より高い。モジュール１０２は、非ディザリング型の処理を行うことによってこのタスクを行う。つまり、ディザリング操作（図示せず）を使用して、パイプライン１００に供給される入力画像情報を第１の精度に量子化した可能性がある。モジュール１０２は、実質的に、これらの量子化操作の逆を適用して、第２のより高い精度をもたらす。
【００５７】
アップサンプルモジュール１０４は、第１のサンプル数を有する入力画像情報を、第２のサンプル数を有する出力画像情報に変換するものであり、この場合、第２のサンプル数は、第１のサンプル数より多い。一般的なアプリケーションでは、画像情報は、色度情報（ＣｂまたはＣｒ）に比べてより多くの輝度情報（Ｙ’）のサンプルがある形式でパイプラインによって受信されており、これは、目は輝度情報により反応を示すからであり、これによって、顕著な劣化を被ることなく、輝度情報に比べて色度情報の量を低減することができる。アップサンプルモジュール１０４は、一般的には、色度サンプルが輝度サンプルと同程度であるように、色度サンプルの数を増やすように働く。例えば、アップサンプルモジュール１０４は、４：２：０または４：２：２のＹ’ＣｂＣｒ画像情報を４：４：４Ｙ’ＰｂＰｒ情報に変換することができる。モジュール１０４によって行われるアップサンプリング操作は、既存のサンプルを補間する（したがって実質的に変倍操作を行う）ことによって、サンプルの数を増やす。こうした補間技術は、正確な結果を提供するために、異なる標準が、輝度情報に対して色度情報をどのように位置付けるかを特に考慮する必要があることが多い。
【００５８】
モジュール１０６は、４：４：４のＹ’ＣｂＣｒ画像情報にマトリックス変換を適用して、それを別の色空間、つまりＲ’Ｇ’Ｂ’色空間に変換する。
【００５９】
次いでモジュール１０８は、伝達関数をそれに適用することによって、非線形Ｒ’Ｇ’Ｂ’画像情報を線形形式に変換する。繰り返すが、Ｒ’Ｇ’Ｂ’画像情報に関連付けられているプライム記号（’）は、画像情報が非線形形式のものであることを示し、プライム記号がない（ＲＧＢなど）ことは、通常、画像情報が線形データを示すことを示している（ただし、上述したように、非線形情報を表すために信号が参照されたことが慣例的にわかっている場合、プライムを取り除くことが一般的でもあることを除く）。図１のモジュール１０８の下に図１に示されているモデル伝達関数は、使用されている伝達関数の一般の形を示しており、これは、ＣＲＴ（図示せず）の固有の伝達関数の一般的な形でもある。このモデル伝達関数は、その「つま先」領域に適用される特別な検討を考慮するために、線形テールをその曲線のＶ＝０部分付近で使用することができることも示している。
【００６０】
モジュール１１０は、任意選択で、画像情報をインターレース形式からプログレッシブフォーマットに変換するために、画像情報に対してデインターレース操作を行う。このタスクの実行の際に、ＲＧＢ画像情報、または元のＹ’ＣｂＣｒ画像情報（例えば４：２：０情報の特別な場合）を使用することによって、モジュール１１０を誘導することができる。しかし、デインターレース操作は、好ましくは、線形ＲＧＢ空間で行われるべきである。これは、デインターレースが実際に（例えば既存のサンプルの補間を伴う）画像処理の形だからであり、したがって、この処理を線形空間で行うことによって、より正確な結果が得られる。
【００６１】
モジュール１１２は、任意選択で、線形ＲＧＢ情報の三原色を変換して、その情報を別の色空間で表す。この変換は、ビデオ処理パイプラインの下流にある成分において実行される処理に望ましいいかなる原色にも対応するようにその三原色を変換するために、マトリックス変換をＲＧＢ情報に適用することを含んでもよい。一例では、モジュール１１２は、異なる様々なタイプの画像情報を共通の色空間に変換することができ、これによって、後の操作でこの情報をミキシングすることが容易になる。
【００６２】
モジュール１１４は、一般に、変換された色空間を有する画像情報の任意の種類の処理を表す。この時点では、処理は、この特定の例において、ａ）線形形式、ｂ）ＲＧＢ色空間、ｃ）４：４：４（フルチャネル）形式、およびｄ）プログレッシブ形式の画像情報に作用する。アーティファクトを低減するために、処理が線形色空間で行われることが好ましいが、画像処理パイプラインが利益を与えるにためにこのリストに列挙されているすべての態様が存在している必要はない。
【００６３】
任意のイベントにおいて、モジュール１１４は、画像情報の任意の種類の処理を行うことができる。基本的に、処理は、例えば、任意の種類の画像フィルタリング操作を含めて、出力画像＝ＳｏｍｅＦｕｎｃｔｉｏｎ（入力画像）などの画像情報の任意の変換を含む。こうした処理操作の代表的な非限定的リストには、ａ）合成、ｂ）アルファブレンディング（様々なフェードやディゾルブなど）、ｃ）エッジ検出、ｄ）シャープニング、ｅ）サイズ変更（より大きいまたはより小さい画像サイズへの変倍）、ｆ）デインターレース（まだ実行されていない場合）などがある。合成は、ある種類の画像情報を別の種類の画像情報とミキシングすることを伴う。例えば、モジュール１１４を使用して、ＤＶＤディスクから引き出されたビデオ画像情報の上にグラフィックス（例えばテキスト情報）を組み合わせることができる。アルファブレンディングは、アルファ係数（ある色が別の色にとけ込む度合いを判定する）に基づいて色を混ぜ合わせることを伴う。例えば、混合操作は、次の式、最終的な色＝ソースの色＊ソースの混合係数＋宛先の色＊宛先の混合係数によって管理される。この式で、宛先ピクセルカラーは、予め存在するシーンのピクセルの色を表し、ソースピクセルカラーは、混合エンジンが宛先ピクセルに追加しようとする新しいピクセルカラーを表す。混合係数は、０から１までの間で変動し、ソースピクセルカラーおよび宛先ピクセルカラーが最終的な色値でどれだけの貢献度を有するかを制御するために使用される。繰り返すが、これらは単に、多数の潜在的な処理アプリケーションの代表的な例にすぎない。一般に、上述したビデオ処理アプリケーションの多くは、アフィン加重をソースとターゲットとの画像情報の間の移行に付加する。この種のアプリケーションでは、非線形加重の使用によって、画像情報の全体的な輝度を非常に迅速に低減させることができる。これは単に、線形画像情報のその処理によって、現在の解決策が取り除いたり低減したりすることができるアーティファクトの一例にすぎない。
【００６４】
図１の下の行のモジュールは、一般に、上述した上の行の操作を逆にする。つまり、モジュール１１４での処理の後、モジュール１１６は、任意選択で、画像情報を、ＲＧＢ色空間に戻すなど、別の色空間に変換する。モジュール１１８は、インターレース形式で格納または表示する必要がある場合、画像情報のオプションの再インターレースを適用する。モジュール１２０は、（適切な場合）伝達関数を適用して、再度ＲＧＢ画像情報を非線形形式（Ｒ’Ｇ’Ｂ’）に変換する。モジュール１２２は、Ｒ’Ｇ’Ｂ’画像情報の色空間を、その輝度成分（Ｙ’）をその色度成分（ＰｂＰｒなど）から分離するフォーマットに変更し直す。モジュール１２４は、任意選択で、Ｙ’ＰｂＰｒ画像情報をサブサンプリングして、輝度サンプル（Ｙ’）の量に比べて色度サンプル（ＰｂＰｒ）の量を低減する。つまり、このモジュール１２４は、（輝度サンプルごとに色度サンプルが１つある）Ｙ’ＰｂＰｒ４：４：４画像情報を（輝度サンプルに比べて色度サンプルがより少ない）Ｙ’ＰｂＰｒ４：２：２または４：２：０画像情報に変換することができる。最後に、モジュール１２６は、量子化操作を画像情報に適用する。量子化操作には、画像情報をより低い精度に変換して、ネットワーク、記憶装置、ディスプレイなどを介して効率的な伝達を容易にする効果がある。量子化操作は、そうでなければ量子化によって生成された四捨五入の誤差によってもたらされ得るアーティファクトを低減するために、ディザリング操作と結合することができる。後のサブセクションでさらに詳述するように、ディザリング操作には、画像情報が処理されるにつれて、これらの誤差を隣接するピクセルに拡散させ、したがって、アーティファクトの効果を軽減する効果がある。
【００６５】
図２は、上述した操作をフローチャートの形で要約する手順２００を示す。ステップ２０２は、入力画像情報をＲＧＢなどの線形色空間に変換することを伴う。また、この情報は、好ましくは、デインターレースされてプログレッシブ形式に、またアップサンプリングされて４：４：４（フルチャネル）形式にされる。したがってステップ２０２は、図１の上の行のモジュールに対応する。
【００６６】
ステップ２０４は、画像情報に対する任意の種類（および組合せ）の処理タスクをその線形形式で行うことを伴う。
【００６７】
ステップ２０６は、処理された線形画像情報を特定のアプリケーションによって要求されるどんな出力フォーマットにも変換することを表す。これは、処理された線形画像情報を非線形色空間に変換し、それを再インターレースし、ダウンサンプリングし、量子化することなどを伴い得る。ステップ２０６は、図１の下の行のモジュールに対応する。
【００６８】
Ａ．２．パイプライン内での浮動小数点フルチャネル画像情報の使用
図１に戻ると、パイプライン１００は、（ｃ）任意選択で線形のセマンティクスでもよい（ｂ）比較的高い精度を有する（ａ）フルチャネル画像情報（すなわち４：４：４）を使用するため、既知の方式より優れた結果も提供する。より詳細には、上述したように、パイプライン１００は、それが受信する画像情報を、その元の形式より高い精度に変換する。また、パイプライン１００は、輝度サンプルに比べて情報の色度サンプルの量を増やすことによって、画像情報をフルチャネル形式（４：４：４）に変換する。次いで、高精度のフルチャネル画像情報に対する様々な処理タスクが実行される。処理が行われた後、パイプライン１００は、任意選択で、再度、処理済みの画像情報をより低い精度のサブサンプル済み形式に変換することができる。
【００６９】
一般に、画像情報の高精度のフルチャネル形式への変換は、実質的に、情報のノイズ成分に比べて情報の信号成分を増幅し、したがって、この情報に対して実行される処理がより正確な結果をもたらすことができるようになる。それに対して、パイプラインの様々な中間接合部で高精度の、および／またはフルチャネル画像情報を使用しない既知の方式は、パイプラインに沿って誤差を伝搬し、（本質的に色コンテンツを減らすことによって）画像情報の解像度を低減する可能性がある。図１は、一般に、処理モジュール１２８に流れる１２８とラベル付けされた情報ブロックによる高精度のフルチャネル画像情報の処理を示している（しかし、デインターレースモジュール１１０など、この図の他のモジュールも、高精度のフルチャネル形式の画像の処理からの恩恵を受けることができる）。
【００７０】
一例によって、より具体的に説明する。通常の精度４：２：０または４：２：２のＹ’ＵＶ画像情報と比べて高精度の線形ＲＧＢ画像情報で作業する利点を考える。４：２：０および４：２：２の画像情報が、輝度情報の量に比べて色度情報の量の（それぞれ）１／２および１／４を提供することを思い出されたい。一般的には、高精細（ＨＤ）画像情報（特に１９２０ｘｌ０８０ｉ，２．０７ｍｐｉｘｅｌ）が１２８０ｘ７２０ｐ（０．９２ｍｐｉｘｅｌ）または７２０ｘ４８０ｐ（０．３５ｍｐｉｘｅｌ）の解像度に縮小される。パイプラインは、この状況で、４：２：０のサブサンプリングフォーマットでの縮小操作を行う場合（１９２０ｘ１０８０から１２８０ｘ７２０など）、２．０７ｍｐｉｘｅｌの輝度情報および０．５２ｍｐｉｘｅｌの色度情報を、０．９２ｍｐｉｘｅｌの輝度情報、および０．２３ｍｐｉｘｅｌの色度情報に縮小する。しかし、パイプラインがまず、４：４：４にアップサンプリングし、次いで高精度ＲＧＢ（例えば浮動）に変換し、次いで縮小し、次いで４：４：４ＹＵＶに変換する場合、パイプラインは、実質的に、０．９２ｍｐｉｘｅｌの輝度情報および０．５２ｍｐｉｘｅｌの色度情報を維持する。言い換えれば、この状況での高精度処理の使用によって、パイプラインは、元の色度情報のほぼすべてを維持することができる。
【００７１】
高精度中間画像情報を達成する１つの方法は、浮動小数点フォーマットを使用して情報を表すことである。浮動小数点数は、仮数成分（仮数部）および指数成分（指数部）を有する。指数部は、仮数部がどのようにシフトされるかを定義する。このフォーマットを使用して、浮動小数点情報は、（例えば指数部を変更することによって）それに応じて情報の表現をシフトすることによって、非常に低い値から非常に高い値まで表すことができる。１６ビットの浮動小数点表示、３２ビットの浮動小数点表示などを含めて、任意のビット数を有する任意の種類の浮動小数点表示を使用することができる。画像処理パイプライン１００で使用するための特に適した形式の浮動小数点は、いわゆるＦＰ１６浮動小数点フォーマットであるが、他の種類の浮動小数点表示を使用することができる。
【００７２】
Ａ．３．４：２：０画像情報の特別な対策
再考するために、背景セクションで説明したように、４：４：４画像情報は、Ｙ’の４つのサンプルごとにＣｂおよびＣｒの４つのサンプルを含む。４：２：２画像情報は、Ｙ’の４つのサンプルごとにＣｂの２つのサンプル、およびＣｒの２つのサンプルを含む。４：２：０画像情報は、各走査線上のＣｂおよびＣｒのサンプル、ならびにＣｂおよびＣｒの走査線とを、Ｙ’のものの半分だけ含む。言い換えれば、色度情報の解像度は、水平方向および垂直方向の輝度情報のものの半分である。例えば、フル画像解像度が７２０×４８０である場合、色度情報は、わずかに３６０×２４０で格納される。４：２：０では、各走査線に欠けているサンプルを補間する必要があるだけではなく、色度情報の全走査線を上下の走査線から補間する必要がある。図３は、ＭＰＥＧ２インターレース済みの４：２：０画像情報の例を示している。４：２：０画像情報の処理に関するこれ以上の情報は、Don Munsil and Stacey Spears, "The Chroma Up-sampling Error and the 4:2:0 Interlaced Chroma Problem," DVD Benchmark, April, 2001 (December, 2002, updated January, 2003)で見つけることができる。
【００７３】
４：２：０画像情報の色度情報の不足および位置のアラインメントは、この情報を処理する際にいくつかの問題をもたらす。大ざっぱに言えば、４：２：０の画像情報を正しく解釈するために、処理パイプライン１００のある段階が処理パイプライン１００の別の段階の分析を必要とするので、問題が生じる可能性がある。図１のアップサンプリングモジュール１０４およびマトリックス変換モジュール１０６の例を考える。４：２：０画像情報を正しく解釈するために、アップサンプリングモジュール１０４は、任意選択で、デインターレースモジュール１１０によって提供される情報である画像情報において色情報がどのように表されるかに関する知識を必要とする。しかし、デインターレースモジュール１１０は、アップサンプリングモジュール１０４に対して下流に配置されるため、この知識は、アップサンプリングモジュール１０４には使用できない。モジュール１０４および１０６は、デインターレース分析の利益なしに４：２：０情報を処理する場合、補正が難しい、または不可能であり得る画像情報の誤差を生成し得る。この難問は、結局、（例えば４：２：２画像情報とは異なり）４：２：０における走査線を、デインターレース分析において互いに独立して扱うことができないという事実から起こる。
【００７４】
この問題に取り組むために、図１のパイプライン１００は、４：２：０画像情報を扱う特別な対策を組み込むことができる。全般的な対策として、前の段階によってそれに供給される情報のみを原子論的に分析することを各段階に求めるのではなく、様々な段階で行われる分析（および様々な段階で使用可能な情報）がパイプラインの他の段階により広範にわたって共有されるように、パイプライン１００を変更することができる。
【００７５】
特に、パイプライン１００におけるデインターレースモジュール１１０の位置によってもたらされる問題に関して、デインターレース分析（モジュール１１０によって実行される）が、例えばアップサンプリング分析（モジュール１０４によって実行される）との関連でより早く行われるように、パイプライン１００が変更されてもよい。図１は、破線１３０によってこの方策を示している。あるいは、デインターレースモジュール１１０は、同様にアップサンプルモジュール１０４に提供された元の入力画像情報を検査することによって、デインターレース分析を実行することができる。つまり、デインターレースモジュール１１０は、画像情報がどのようにデインターレースされるかをよりよく理解するために、元の画像情報との組合せでモジュール１０８の出力に対する分析を行うことができる。
【００７６】
パイプライン１００内の個々のモジュールによって別々に実行される分析を共有し、それによって４：２：０の画像情報の色度情報の不足により効果的に取り組むために、これ以上のモジュール統合の対策を考案することができる。
【００７７】
Ａ．４．画像情報の擬似線形空間での処理
上記のセクションは、アーティファクトをほとんど生成しない画像処理パイプラインを設計する目標に取り組んだ。しかし、画像処理パイプラインは、効率的な方法で出力結果を提供するべきである。画像処理パイプラインは、十分な速度、および許容できる数の処理リソースでそれを行うと、効果的な方法で結果を生成する。このために、このサブセクションは、パイプライン１００の複雑さを低減するために、図１に示したパイプライン１００に適用できる様々な近似を提案する。
【００７８】
つまり、このサブセクションは、ほぼ線形の、しかし完全には線形ではない画像情報を提供するように、図１に示したパイプライン１００を変更することを提案する。その結果、これらの変換は、画像情報を、理論上正しい線形空間ではなく、「疑似線形」空間に変換すると言われる。利点は、（モジュール１０８および１２０において）伝達関数によって必要とされる数学的演算のハードウェア実装をかなり簡略化することができ、その結果、画像情報のより迅速でより効率的な処理がもたらされることである。より詳細には、選択された操作は、一般的には、（数学的により正確である）元の対応物の関数より１桁速く実行する。疑似線形の画像情報はほぼ線形であるため、画像を擬似線形空間で処理する負の影響は最小である。したがって、ほとんどの用途を満たす出力結果を提供するための変更なしに、線形の性質の任意のアルゴリズムをこの情報に適用することができる。
【００７９】
図４は、上述した近似に関する情報をさらに提供する。より詳細には、図４は、図１の処理パイプライン１００のいくつかのモジュールの変更のみを表しており、したがって、図１に示した全処理パイプライン１００の概略図のみを含む。
【００８０】
図４に示されているパイプラインの抜粋４００は、図１の伝達関数モジュール１０８の代わりに伝達関数モジュール４０２を含む。（モジュール１０８が行うように）画像情報の数学的に正確な変換を適用して、それを線形空間に変換するためにする代わりに、モジュール４０２は、画像情報を上述した擬似線形空間に変換する近似伝達関数（ｇ＿ａｐｐｒｏｘ（ｘ））を適用する。このモジュール４０２は、図１のモジュール１０８によって必要とされるより正確な伝達関数より「安い」ため、ｇ＿ａｐｐｒｏｘ（ｘ）伝達関数を用いる。
【００８１】
モジュール４０４は、図１の処理モジュール１１４の対応物を表す。モジュール４０４は、疑似線形の画像情報に対する任意の数の処理タスクを疑似線形処理空間で行う。
【００８２】
次いでモジュール４０６、４０８、および４１０は、処理済みの画像情報を、（ディスプレイ、記憶装置、ネットワークターゲットサイトなど）出力に適したフォーマットに変換するタスクを行う。モジュール４０６は、特に、モジュール４０２の操作の逆、つまりｇ＿ａｐｐｒｏｘ’（ｘ）を適用することによって、モジュール４０２の効果を取り除く責任が課される。モジュール４０８は、伝達関数ｇ＿ｉｎ（ｘ）を適用することによって、モジュール４０６の出力を線形化する。この操作が行われるのは、次の段階４１０が線形入力を受け入れるように設計されているからである。次いで、モジュール４１０は、逆伝達関数（ｇ＿ｏｕｔ’（ｘ））を適用して、必要ないかなる出力形式にも適合するように、最終的なガンマ補正済み出力画像情報を生成する。実際の実装形態では、モジュール４０６、４０８、および４１０は、モジュール４１２によって実行される、Ｆ（ｘ）によって表される単一の変換に統合することができる。
【００８３】
重要なことに、モジュール４０４によって疑似線形色空間に適用されるアルゴリズムは、図１のモジュール１１４において「正しい」線形色空間に適用されるアルゴリズムと同じである。言い換えれば、図４によって表される処理方式は、画像処理アルゴリズム自体の特別な調整は必要ない。それに対して、既知の前の方式によって取られた手法は、画像情報が受信されたいかなる非線形空間でも処理を行い、次いでその場限りの、またアプリケーション固有の様々な補正率をアルゴリズムに適用して、任意のアーティファクトを修正しようとするものである。しかし、これらの補正率は、不正確であり、任意のイベントで、一般的に複雑であることが多かった。より一般には、前の技術は、情報を疑似線形形式に変換し、次いでこの疑似線形形式を上述した方法で取り除く、包括的で一般に適用可能な手法を適用していない。
【００８４】
このサブセクションの残りの解説では、図４の上述したモジュールを実施するために使用できる近似例について記述する。まず初めに、ガンマ処理を行うために使用される伝達関数は、一般的には、べき関数（ｘ０．４５、またはｘ１／０．４５≒ｘ２．２２２の逆数など）、またはいくつかの関数の組合せであることに留意されたい。べき関数は、一般的には、使用可能なハードウェアを使用してピクセルごとに計算するには非常に費用がかかる。
【００８５】
しかし、ｘ０．４５は、ｘの平方根にほぼ等しく、言い換えれば、ｘ０．４５≒ｘ０．５０であることに留意されたい。また、ｘ１／０．４５は、ｘ２にほぼ等しく、言い換えれば、ｘ１／０．４５≒ｘ＊ｘである。ｘ１／２を計算するために最適化されたハードウェアが存在し、この計算は、一般のべき関数によって必要とされる演算より速い（多くの場合１桁）。また、ハードウェアは、２乗ｘ２を非常に速く行うことができる。これは単なる乗算だからである。したがって、これらの近似は、伝達関数の実施に関連付けられている処理コストを著しく削減することができる。
【００８６】
より正式には、モジュール４０２によって実行される関数ｇ＿ａｐｐｒｏｘ（ｘ）は、ｘ２＊ｓｉｇｎ（ｘ）の形をとることができ、モジュール４０６によって実行される逆伝達関数は、（ａｂｓ（ｘ））１／２＊ｓｉｇｎ（ｘ）の形をとることができる。（特別な問題として、伝達関数および逆伝達関数は、ゼロに近い線形テールセグメントを適用し得ることに留意されたい）。
【００８７】
上記の手段は、以下の一連の操作例を使用して、関数ｇ＿ｉｎ（ｘ）およびｇ＿ｏｕｔ（ｘ）によって表される異なる入力および出力の範囲全体に汎用化することができる。
１）逆線形近似ｇ＿ａｐｐｒｏｘ（ｘ）＝ｘ２＝ｘ＊ｘを画像情報に適用する。モジュール４０２は、このステップを実行することができる。
２）データを擬似線形空間で処理する。モジュール４０４は、このステップを実行することができる。
３）線形近似ｇ＿ａｐｐｒｏｘ’（ｘ）を適用する。モジュール４０６は、この操作を実行することができる。
４）伝達関数ｇ＿ｉｎ（ｘ）を適用して、モジュール４０６の出力を線形化する。モジュール４０８は、この操作を実行することができる。
５）逆伝達関数ｇ＿ｏｕｔ’（ｘ）をモジュール４０８の出力に適用して、情報を所望のｇ＿ｏｕｔ空間で生成する。
【００８８】
ステップ（３）〜（５）は、単一関数、Ｆ（ｘ）にマージすることができる。つまり、
Ｆ（ｘ）＝ｇ＿ｏｕｔ’（ｇ＿ｉｎ（ｇ＿ａｐｐｒｏｘ’（ｘ）））となる。
【００８９】
パイプラインがガンマ２．２２２とガンマ２．４までの間で変換する場合、関数Ｆ（ｘ）は、次のように表すことができる。
【００９０】
【数１】
2008508802.tif 000002
【００９１】
上記のアルゴリズムのコストは、ｇ＿ａｐｐｒｏｘ（ｘ）関数によって必要とされる非常に「安い」１つの対話、続いて情報の擬似線形空間での処理、続いてＦ（ｘ）関数によって必要とされる１つの潜在的に高価な対話を伴う。しかし、式Ｆ（ｘ）は、単に、指数の乗算を求めるため、この関数のコストは、元の逆関数ほど悪くない。したがって、図４に示されている解決策は、全線形／非線形サイクルのコストをほぼ半減する可能性がある純効果を有する。また、上述したように、この解決策は、モジュール４０４によって実行されるアルゴリズムの特別なカスタマイズを必要としないという意味で有利である。
【００９２】
図５は、上述した操作を要約し、図２に示した線形手順２００の対応物である手順５００を示している。ステップ５０２は、入力画像情報を擬似線形空間に変換することを伴う。ステップ５０４は、モジュール４０４を使用して画像情報に対する処理を擬似線形空間で行うことを伴う。また、ステップ５０６は、処理された情報を、出力に適切な非線形色空間に変換することを伴う。
【００９３】
Ａ．５．誤差分散アルゴリズムの改良
量子化によって必要な近似は、適切に処理されない場合、アーティファクトを生成する可能性があるため、高精度画像情報の低精度フォーマットへの量子化によって、誤差がもたらされる可能性がある。様々な誤差分散アルゴリズムは、量子化によってもたらされた誤差を分散させ、したがってアーティファクトを最低限に抑えるように働く。こうした誤差分散は、ディザリングの形である。
【００９４】
図６は、量子化によってもたらされる誤差を分散させるためのＦｌｏｙｄ−Ｓｔｅｉｎｂｅｒｇアルゴリズムの既知の適用を示している。画像内のあるピクセル（またはより一般には画素）を表す画像の点Ｘについて考察する。この画素Ｘの量子化は、画素の高精度表現とそれが量子化される値との間の差として計算される、誤り差をもたらす。Ｆｌｙｏｄ−Ｓｔｅｉｎｂｅｒｇアルゴリズムは、この差を異なる成分に分割し、次いでこれらの成分を、画素Ｘに隣接する（アルゴリズムによってまだ処理されていない）画素に分散する。処理がこうした隣接する画素まで進むと、この画素に前に分散された誤差成分は、それに追加され、次いで、この画素は、それを量子化し、別の誤り差を計算し、この誤差を隣接する画素に分散することによって、上述したように処理される。全画像の処理は、左から右へ、下から上へなど、様々な方法で進むことができる。
【００９５】
Ｆｌｏｙｄ−Ｓｔｅｉｎｂｅｒｇアルゴリズムは、それが隣接する画素に分散する誤差成分に異なる重みを割り当てる。図６は、画素Ｘに隣接する画素に（時計回りに）割り当てられた７、１、５、３の重みを示している。より正確には、誤差成分に割り当てられる加重係数は、７／１６、１／１６、５／１５、３／１６であり、この場合、分母「１６」は、隣接する画素に割り当てられた重みの合計を反映している。
【００９６】
しかし、Ｆｌｏｙｄ−Ｓｔｅｉｎｂｅｒｇなどの誤差分散アルゴリズムは、時として、様々なアーティファクトを有する宛先画像を生成する。こうしたアーティファクトは、ある画像コンテンツにより特に目立つ、視覚によって認識できるパターンとして現れ得る。既知の方式は、ランダムノイズを元の画像に追加して、誤差分散アルゴリズムによってもたらされたパターンを不明瞭にすることによって、この問題に取り組んできた。しかし、この対応策は、それ自体様々な欠陥を有し得る。まず、既知の技術は、ノイズを元の画像に追加し、次いで、元のノイズ画像を（以下でより入念に説明する方法で）ベースラインとして量子化する。この技術は、誤差分散アルゴリズムによってもたらされるアーティファクトを不明瞭にする効果はないが、最終的な宛先画像を劣化させる。つまり、宛先画像のノイズは、元の画像に追加されたノイズに比例して増える。第２に、既知の方式は、比較的短い反復期間を有するノイズ生成器を使用してノイズを追加し得る。したがって、ノイズ生成器は、（場合によっては、ノイズ生成器が隠すように設計された誤差分散アーティファクトの幾らかの痕跡とともに）宛先画像で視覚的に認識できるそれ自体のパターンタイプのアーティファクトを生成し得る。
【００９７】
図７は、上記で識別された問題のうちの前者をより詳しく説明する手順７００を示している。手順７００の目的は、元の画像情報（「Ｏｒｉｇｉｎａｌ」）を量子化して、誤差分散アルゴリズムを使用して宛先画像情報（「Ｆｉｎａｌ」）を生成することである。ステップ７０２は、１つの画像要素ｉ（ピクセルなど）について、ノイズ情報を元の画像情報に追加することによって「Ｔｅｍｐ」画像情報を生成することを伴う。ステップ７０４は、Ｔｅｍｐ画像情報および「Ｅｒｒｏｒ＿Ｔｅｒｍ（ｉ）」画像情報によって定義された合計を量子化することによって、Ｆｉｎａｌ画像情報を生成することを含む。Ｅｒｒｏｒ＿Ｔｅｒｍは、前に生成された画素の前の量子化に基づいて、画素ｉに追加された誤差成分を表す。ステップ７０６は、（処理されるべき将来の画素に適用されるべき）次のＥｒｒｏｒ＿Ｔｅｒｍ成分を、こうして計算されたＦｉｎａｌ画像情報−Ｔｅｍｐ画像情報と定義することを伴う。このアルゴリズムの適用には、上述した結果として生じる欠点とともに、ノイズ画像を本質的に量子化する純効果がある。
【００９８】
図８は、当技術分野における上記の問題を克服するシステム８００を示している。ディザリングモジュール８０２は、誤差分散アルゴリズムを使用して元の画像情報８０４を宛先画像情報８０６に変換する。誤差分散アルゴリズムは、上述したＦｌｏｙｄ−Ｓｔｅｉｎｂｅｒｇアルゴリズムを含むが、このアルゴリズムに限定されない。ノイズ生成器８０８は、ランダムノイズを量子化プロセスに挿入して、誤差分散アルゴリズムによって生成されたアーティファクトの一部を不明瞭にするのを助ける。
【００９９】
システム８００は、少なくとも２つの点で、既知の方式とは異なる。まず、システム８００は、本質的に、元の画像情報８０４ではなく、ノイズ情報を量子化プロセスに追加する。言い換えれば、元の画像情報８０４は、前の技術における元の画像＋ノイズ情報ではなく、誤差項が測定されるベースラインのままである。したがって、システム８００のノイズ量の増加によって、必ずしも、宛先画像情報８０６が徐々に目にわずらわしくなるという影響があるわけではない。これは、隣接する画素に伝搬される誤差項が、元の画像情報８０４に対する宛先画像情報８０６の逸脱の測度を維持し、したがって、誤差分散アルゴリズムは、量子化プロセスに追加されるランダムノイズの効果を連続的に補正しようとするからである。
【０１００】
図９は、上記の処理を説明する手順９００を示している。ステップ９０２は、画素ｉの元の画像情報、ノイズ情報、および誤差項の合計を量子化することによって、画素ｉについて最終的な画像情報を生成することを伴う。ステップ９０４は、画素ｉについての最終的な画像情報と元の画像情報との間の差を計算することによって、１つ又は複数の隣接する画素に分散される誤差項を計算することを伴う。
【０１０１】
一例によって、より具体的に説明する。タスクは、値２３．３を有する画素を最も近い整数に量子化することであると仮定する。図７に示されている既知の方式では、ノイズ情報の＋０．４の量がこの値に追加され、それが２３．７になると仮定する。この画素の最終的な画像値は、２４となり、伝搬される誤差項は、−０．３となる（最終的な出力画像値とノイズ画像値２３．７との間の差）。それに対して、図９の改良された方式では、伝搬される誤差項は、−０．７となる（最終的な出力画像値と元の画像値との間の差）。
【０１０２】
以下で、上記の技術を、Ｆｌｏｙｄ−Ｓｔｅｉｎｂｅｒｇ誤差分散アルゴリズムの適用に基づいて、より正式に説明する。アルゴリズムのタスクは、画像のピクセルごとに、高精度値Ｖを量子化し、それをピクセルアレイＰのピクセル位置Ｐ（ｘ，ｙ）に格納することであり、この場合、Ｐ（ｘ，ｙ）は、Ｖより低い精度を有する。アルゴリズムによって生成された誤差項は、ピクセルアレイＰと同じサイズを有する高精度誤差アレイＥに格納される。ピクセルＰ（ｘ，ｙ）の誤差項は、対応する場所のＥ（ｘ，ｙ）に格納される。アルゴリズムにおける関数「ｒｏｕｎｄ（）」は、高精度数を最も近い低精度数に四捨五入する。アルゴリズムにおける関数「ｒａｎｄｏｍ（）」は、範囲｛−０．５・・・０．５｝でランダム高精度数を戻す。一時的な値「Ｄｅｓｉｒｅｄ」および「Ｅｒｒｏｒ」は、高精度値である。実際の誤差伝搬係数は、Ｆｌｏｙｄ−Ｓｔｅｉｎｂｅｒｇ誤差伝搬アルゴリズムから来る。
【０１０３】
【数２】
2008508802.tif 000003
【０１０４】
第２の改良として、ノイズ生成器８０８は、既知の手法とは異なり、相対的に長い反復パターンを使用する。「相対的に長い」という句は、画像情報の全フレームを処理するときに、ノイズ生成器８０８がその数字を繰り返さないこと、または少なくとも、宛先画像情報８０６において認識できるアーティファクトを生成するほどそれ自体を繰り返さないこととし、相対語で解釈することができる。この要件を満たす１つの特定の乱数生成器は、いわゆるＲ２５０ランダムノイズ生成器である。
【０１０５】
Ａ．６．フィルタカーネルの動的計算
変倍フィルタは、画像情報がソースサイズから宛先サイズにサイズ変更されるとき、図１に示したパイプライン１００における様々な接合部で使用することができる。例えば、モジュール１１４で行われる処理は、用途に応じて、および／またはユーザによって入力された制御信号に応じて、画像情報を拡大または縮小することを伴い得る。変倍は、サンプリングモジュール１０４および１２４など、パイプライン１００における他の接合部でも行うこともできる。
【０１０６】
いくつかのフィルタリングアルゴリズムを、変倍アルゴリズムとともに使用することができる。特定の既知のタイプのフィルタの１つは、いわゆるＣａｔｍｕｌｌ−Ｒｏｍフィルタである。この種類のフィルタを画像情報のサイズ変更のタスクに適用することによって、結果的に、ある程度、画像情報の縁のシャープニングがもたらされる。
【０１０７】
このサブセクションでは、ピクセルごとに計算され、画像情報に適用される、変倍に使用されるフィルタ（この種類のフィルタに限定されるものではないが、Ｃａｔｍｕｌｌ−Ｒｏｍタイプのフィルタなど）について説明する。これは、画像情報におけるピクセルごとの別々のフィルタの動的計算および適用として概念化することができる。各フィルタは、１つまたは複数のカーネルを含み、各カーネルは、１つまたは複数のタップを有し得る。カーネルは、画像情報におけるピクセルに適用される重みを定義する。タップは、カーネルが作用する画像情報サンプルを定義する。この方法でフィルタカーネルを計算したり、適用したりしないことによって、ビートパターン（ｂｅａｔ  ｐａｔｔｅｒｎ）など、様々なアーティファクトが宛先画像に生成され得る。
【０１０８】
しかし、ピクセルごとの個別のフィルタカーネルの計算は、カーネルを計算するために関わる時間量の点で、法外に費用がかかり得る。これは、何らかのハードウェアでの画像情報のリアルタイムの表示を妨げる可能性がある。この問題に対処するために、このサブセクションでは、入力画像情報のすべての行や列のフィルタ位相カーネル（ｆｉｌｔｅｒ  ｐｈａｓｅ  ｋｅｒｎｅｌ）を動的に計算し、次いでこうしたカーネルを適用するための効率的な方式を定義する。概要として、この方式は、元の画像情報の行（または列）に必要なカーネル数を計算し、カーネルによって必要とされるタップ数を計算し、カーネルを格納するための格納アレイを割り振り、必要なカーネル数を計算し、アレイに格納することを伴う。これらのステップは、引き続き、アレイに格納されているフィルタカーネルを画像情報に適用する。
【０１０９】
このアルゴリズムは、カーネルがその適用の前に計算されるため、効率的である。また、いくつかの場合、比較的少数の計算済みカーネルを、画像情報のより大きい行または列に周期的に適用することができるため、計算の節約が達成される。また、特定の行または列に割り当てられた同じカーネルを、その画像情報の他の行または列（それぞれ）に適用することができる。言い換えれば、特定のアプリケーションのサイズ変更要件に応じて、画像情報の単一のピクセルごとに個別のフィルタを計算する必要はない。
【０１１０】
図１０は、上述した設計のフィルタモジュール１００２を実装するシステム１０００の概要を示している。フィルタモジュール１００２は、動的カーネル事前計算モジュール（ｄｙｎａｍｉｃ  ｋｅｒｎｅｌ  ｐｒｅ−ｃａｌｃｕｌａｔｉｏｎ  ｍｏｄｕｌｅ）１００４を含む。このモジュール１００４の目的は、まず、特定の変倍操作に必要なカーネル数、およびカーネルに必要なタップ数を計算することである。カーネル数およびタップ数は、画像情報がサイズ変更される方法（後述する方法）に応じて決まる。次いで、事前計算モジュール１００４は、所望のカーネル数を事前に計算し、格納モジュール１００６にカーネルを格納する。次いで、カーネル適用モジュール１００は、カーネル格納モジュール１００６内のカーネルを画像情報に適用して、所望のフィルタリング挙動を達成する。上述したように、その適用の前のカーネルの計算は、フィルタリングプロセスをより速く稼働させるのを助ける。さらに、わずかなカーネルを事前に計算することのみを必要とする変倍操作についてのフィルタ計算の複雑さは、非常に大きく低減される。
【０１１１】
図１０の右側の部分は、カーネル１０１０を、画像情報１０１４の特定の行１０１２にどのように繰り返し適用できるかを示している。カーネル１０１０は、連続して、周期的に適用される（ある場合には、各カーネルは、１つの出力ピクセルに適用される）。例えば、比較的長い行の画像情報についてのカーネルが少数ある場合、これらのカーネルは、連続して適用され、画像情報の行が処理されるにつれて、何度も繰り返される。つまり、事前に格納されたカーネルは、リストを形成し、これらのカーネルは、次々に行に適用され、リスト内の最後のカーネルに遭遇すると、折り返して先頭に戻り、リストの一番上から再度引き出すことによって、処理が続行する。適用技術の反復挙動は、図１０に示しているループ１０１６によって表される。カーネル１０１０を、類似の方法で他の行に適用することができる。さらに、画像情報１０１４の列に適用されるカーネルに関して類似の処理を繰り返すことができる。
【０１１２】
カーネル数およびタップ数を計算するためにモジュール１００４によって使用できるアルゴリズム例について、以下に記載する。モジュール１００４は、アルゴリズムを、画像情報１０１４のｘ寸法およびｙ寸法における変倍に別々に適用する。したがって、アルゴリズムは、ｘ寸法における変倍に設定されるが、例えば、幅への参照を高さに変更することによって、アルゴリズムをｙ寸法にも適用することもできる。ｘ寸法において、アルゴリズムで使用される「ＳｃａｌｅＲａｔｉｏ」は、所望の最終的な（目的の）画像幅に対する元の画像幅の比率を定義する。アルゴリズムで使用される「天井」関数は、実数を次に高い整数に丸める。アルゴリズムの「ｇｃｄ」機能は、２つの整数の最も大きい共通分母を計算する。
【０１１３】
【数３】
2008508802.tif 000004
【０１１４】
一例として、高さ７２０ピクセルのソース画像情報を、高さ４８０ピクセルの宛先画像情報に垂直方向に変倍することを考える。上記のアルゴリズムをこのシナリオに適用することによって、以下が得られる。
ＳｃａｌｅＲａｔｉｏ＝７２０／４８０＝１．５
タップ＝ｃｅｉｌｉｎｇ（ＳｃａｌｅＲａｔｉｏ＊４）＝６
カーネル＝４８０／ｇｃｄ（７２０，４８０）＝４８０／２４０＝２
したがって、モジュール１００４は、それぞれ６タップの２つのカーネルを事前に計算し、事前に割り振る必要がある。サイズ変更操作は、ピクセルの行に沿って移動するにつれて、２つのカーネル間でピンポン方式で交互に行われる。
【０１１５】
一例として、高さ７２１ピクセルのソース画像情報を、高さ４８０ピクセルの宛先画像情報に垂直方向に変倍することを考える。上記のアルゴリズムをこのシナリオに適用することによって、以下が得られる。
ＳｃａｌｅＲａｔｉｏ＝７２１／４８０＝１．５０２１
タップ＝ｃｅｉｌｉｎｇ（ＳｃａｌｅＲａｔｉｏ＊４）＝７
タップが奇数であるため、１を追加し、８が得られる。
カーネル＝４８０／ｇｃｄ（７２１，４８０）＝４８０／１＝４８０
したがって、モジュール１００４は、それぞれ８タップの４８０のカーネルを事前に計算し、事前に割り振る必要がある。サイズ変更操作は、４８０個の出力ピクセルの１つずつに一意のカーネルを使用する。しかし、同じ組の４８０個のカーネルを、ピクセルの垂直方向のすべての列に使用することができるので、さらにかなりの節約が実現される。また、実社会での実用の場合、宛先とソ―スのサイズの間の比率は、かなり簡単な比率になる傾向にあり、結果として得られた必要なカーネル数が管理しやすい数字になる。（例えば所定の閾値を超えるなど）特定の大きい数のフィルタカーネルを要求するサイズ変更要求をユーザが入力するのを防ぐ特別な制限を課すこともできる。
【０１１６】
図１１は、上述した操作を要約する手順１１００を示す。ステップ１１０２は、水平寸法および／または垂直寸法において画像の所望のサイズ変更を達成するのに必要なカーネル数（およびカーネル当たりのタップ）を判定することを伴う。事前計算モジュール１００４は、上記で提供されたアルゴリズムを使用してこのタスクを実行することができる。ステップ１１０４は、ステップ１００４で計算されたカーネル数を格納するために、カーネル格納モジュール１００６内の空間を割り当てることを伴う。ステップ１１０６は、実際に、カーネルを事前に計算し、格納することを伴う。また、ステップ１１０８は、格納モジュール１００６に格納された事前に計算されたカーネルを画像情報に適用することを伴う。適用は、任意の所与の行または列を処理しながらカーネルを周期的に順番に行うことによって進む。
【０１１７】
Ｂ．ビデオ処理パイプラインの実装関連の改良例
Ｂ．１．パイプライン処理コードの最適な生成
以下のセクションでは、セクションＡに比べてより技術固有の性質の図１のビデオ処理パイプライン１００のいくつかの実装形態を提供する。まず初めに、図１２は、このセクションの改良を説明する基礎として働く画像処理パイプライン１２００の高レベルの概要を示している。
【０１１８】
図１２に示されているパイプライン１２００は、入力段階１２０２、処理段階１２０４、および出力段階１２０６によって定義されている処理段階を含む。入力段階１２０２に関しては、入力ソース１２０８は、画像情報の任意のソースを表す。ソース１２０８は、一般に、（例えばカメラやスキャナによって作成された）新しく捕捉された画像情報、または（ディスクから、またはＩＰネットワークを介して受信されたなど）何らかのチャネルを介して入力段階１２０２に表示される、以前に捕捉された画像情報を含み得る。前者の場合、捕捉処理機能１２１０は、ソース１２０８から受信された画像情報に対して、任意の種類の予備的処理を行うことができる。後者の場合、デコーダ機能１２１２は、任意の種類のストリームベースの情報抽出および復元を実行して、画像データを生成する。一般に、こうした処理は、受信された情報において、画像情報を音声情報から分離し、その情報を解凍することなどを含み得る。処理段階１２０４に関しては、処理機能１２１４は、画像情報の複数のストリームを合成信号にミキシングするなど、結果として得られた画像情報に対する任意の種類の処理を行う。出力段階に関しては、出力処理機能１２１６は、処理済みの画像情報に対して、出力装置１２１８へのその出力に備えて実行される任意の種類の処理を表す。出力装置１２１８は、テレビ、コンピュータモニタなどを表し得る。出力装置は、記憶装置も表し得る。さらに、出力「装置」（または出力機能１２１６）は、情報を装置に格納する、またはネットワークを介して配布するために用意する圧縮およびフォーマティング機能（マルチプレクサなど）を提供することができる。
【０１１９】
一般に、図１に記載されている処理操作は、任意の方法で、段階（１２０２、１２０４、１２０６）にわたって分散することができる。例えば、処理段階１２０４は、一般に、図１に示されている処理モジュール１１４を実施する。各段階（１２０２、１２０４、１２０６）は、物理的に、与えられたタスクを行う単一の装置として、または直列式または並列式に連結される複数の装置として実装することができる。機能は、ソフトウェアとハードウェアの任意の組合せによって実施することができる。
【０１２０】
図１３は、図１２に示されている画像処理パイプライン１２００を構成するシステム例１３００を示している。より詳細には、システム例１３００は、それが図１に示されている画像処理操作の任意の組合せを実行するように、パイプライン１２００を実施するコンピュータコードを自動的に生成する機能を含み得る。
【０１２１】
上述した方法で機能するには、システム１３００は、構成モジュール１３０２を含む。構成モジュール１３０２は、構成済みのパイプラインが満たすべき要件を定義するパイプライン要件情報１３０４を受信する。要件情報１３０４は、複数の構成要素を有することができる。入力要件構成要素１３０６は、パイプラインが受信すると予想される画像情報の特徴を定義する。入力要件構成要素１３０６は、処理することができる単一の種類の画像情報を定義してもよく、または処理することができる許容し得る複数の種類の画像情報の１組を定義することもできる。許容し得る入力情報の複数の特徴を便利に指定する１つの方法は、使用されるビデオ符号化標準を指定することであり、これは、許容し得る色空間、色度サブサンプリング方式、ガンマ伝達関数など、画像処理が有する多数の特徴を含み得る。例えば、ＩＴＵ−Ｒ  Ｒｅｃｏｍｍｅｎｄａｔｉｏｎ  ＢＴ．６０１は、画像情報のスタジオデジタル符号化（ｓｔｕｄｉｏ  ｄｉｇｉｔａｌ  ｃｏｄｉｎｇ）を定義する国際標準である。この標準は、画像情報のＹ’ＣｂＣｒ符号化を使用する。ＩＴＵ−Ｒ  Ｒｅｃｏｍｍｅｎｄａｔｉｏｎ  ＢＴ．７０９は、高精細ビデオ情報のスタジオ符号化を定義する国際標準である。高精細（ＨＤ）コンテンツは、一般的には、１９２０×１０８０、１２８０×７２０など、標準精細（ＳＤ）より高いビデオコンテンツを表す。これらは、画像処理パイプラインが処理できる多くのビデオ符号化標準のうちのほんの２つである。
【０１２２】
出力要件構成要素１３０８は、パイプラインが出力すると予想される画像情報の特徴を定義する。つまり、出力要件構成要素１３０８は、特定の出力装置に適合するように生成することができる単一の種類の画像情報を定義してもよく、または異なる種類の出力装置に適合するように生成することができる許容し得る複数の種類の画像情報の１組を定義することもできる。この場合も同様に、許容し得る出力情報の複数の特徴を便利に指定する１つの方法は、使用されるビデオ符号化標準を指定することである。
【０１２３】
中間処理要件構成要素１３１０は、パイプラインが入力画像情報に対して行うべき処理タスクの性質を定義する。それだけには限定されないが、サイズ変更（変倍）、合成、アルファブレンディング、エッジ検出など、任意の数の処理タスクを指定することができる。
【０１２４】
一般に、人間の観察者は、パイプライン要件１３０４を手動で選択することができる。あるいは、１つまたは複数の要件１３０４を、パイプラインが使用される環境から自動的に推論することができる。
【０１２５】
入力パイプライン要件１３０４が与えられた場合、構成モジュール１３０２は、静的な分析を使用してコードモジュールのライブラリ１３１２と対話するタスクを行って、パイプライン要件１３０４を満たすコードモジュールのカスタム集合（ｃｕｓｔｏｍ  ａｇｇｒｅｇａｔｉｏｎ）を集める。これを行う１つの方法は、任意の種類の入力情報を、任意の種類の中間処理を伴う任意の種類の出力情報にマッピングするマスター方程式を生成することである。このマスター方程式は、いくつかの構成要素を含む。こうした構成要素は、ライブラリ１３１２に格納されているそれぞれのコードモジュールに関連付けられている。この実装形態では、構成モジュール１３０２は、入力パイプライン要件１３０４から見て必要ないすべての構成要素を取り除くことによって、コードモジュールのカスタム集合をコンパイルするタスクを行う。これは、ライブラリ１３１２からいくつかのコードモジュールを選択し、他のモジュールを省く効果がある。
【０１２６】
構成モジュール１３０２によって実行される処理の結果は、最適化パイプラインコード１３１４であり、これは、次いで、画像情報を処理するために適用することができる。このコード１３１４は、求められる機能のみを実行するように合理化される。その結果、このコードに基づいて構築されたパイプラインは、特定の用途では決して使用されない、異なる多くのタスクを処理する様々な連関したサブルーチンを有する、すなわち大規模な包括的プログラム（ｌａｒｇｅ  ｃａｔｃｈ−ａｌｌ  ｐｒｏｇｒａｍ）より速くその操作を実行する可能性を有する。
【０１２７】
ほんの一例を挙げてみると、特定の用途におけるビデオパイプラインのタスクは、インターレース済み４：２：２  Ｙ’ＣｂＣｒ画像情報を中間線形プログレッシブ４：４：４  ＲＧＢ色空間に変換し、ＲＧＢ色空間での合成を行い、次いで結果として得られた処理済み情報をテレビに出力することであると仮定する。こうした一連の操作は、一部の操作（アップサンプリング、伝達マトリックス変換（ｔｒａｎｓｆｅｒ  ｍａｔｒｉｘ  ｃｏｎｖｅｒｓｉｏｎ）、伝達関数の適用、合成など）を呼び出すが、他の操作は呼び出さない。したがって、構成モジュール１３０２は、必要な計算を実行するのに必要なコードのみを生成することになる。
【０１２８】
構成操作について、モジュールの包含および省略の状況で上述してきた。しかし、より高度な構成機能は、選択されたコードモジュールを特に効率的な方法で結合する、選択されたコードモジュールに共通の、結果として得られたコードを取り除くなど、他の最適化操作を実行することができる。
【０１２９】
構成モジュール１３０２を実施する方法がいくつかある。この機能を実施する１つの方法は、ソースコードを分析したり、冗長コードを取り除いたりする何らかの能力をすでに有している既存の構成ツール（例えば従来のＣ＋＋コンパイラなど）を活用して、こうした機能を、適切なモジュールを選択することによって、パイプラインコードを最適化する当面のタスクに適用することである。
【０１３０】
図１４は、上記の説明をフローチャートの形で要約する手順１４００を示す。ステップ１４０２は、ビデオパイプライン要件を入力することを伴う。ステップ１４０４は、入力要件を満たす最適なコードを判定することを伴う。ステップ１４０６は、最適なコードを出力し、実行することを伴う。
【０１３１】
Ｂ．２．画像処理を実行するためのＧＰＵの一般的な使用
図１５は、図１２に示された画像パイプライン（およびより抽象的には、図１に示されたビデオ処理操作１００）の態様を実施するために使用できるシステム例１５００の概要を示す。システム１５００は、１つまたは複数のＣＰＵを含むコンピュータ（パーソナルコンピュータなど）を表し得る。システム１５００は、図１に示されているいくつかの画像処理タスク（またはすべての画像処理タスク）をグラフィックスモジュール機能に割り当てる。グラフィックス処理機能は、１つまたは複数のグラフィックス・プロセッシング・ユニット（当分野ではＧＰＵと呼ばれる）を含み得る。一般に、図１５は、システム１５００のＣＰＵによって実行できる機能を、システム１５００のグラフィックスモジュール機能によって実行できる機能と区別するための破線を含む（が、この区別は、単に例にすぎず、他のＣＰＵ／ＧＰＵの割り当てが可能である）。
【０１３２】
背景として、ＧＰＵは、一般に、ＣＰＵのような処理装置であるが、分岐タイプの判定を行う能力は一般にあまり備えていない。システムは、一般的には、ＧＰＵを使用して、（頂点シェーダ、ピクセルシェーダなどを伴う）３次元処理パイプラインを使用した情報のレンダリングなど、繰り返し実行される情報集約型レンダリングタスク（ｉｎｆｏｒｍａｔｉｏｎ−ｉｎｔｅｎｓｉｖｅ  ｒｅｎｄｅｒｉｎｇ  ｔａｓｋ）を実行する。したがって、ＧＰＵの使用の中核は、ＧＰＵを使用して、様々なシーン、キャラクタ、特殊効果などをレンダリングするゲームおよびシミュレーション技術である。反復型または情報集約型のタスクをＧＰＵに割り振ることによって、システムのＣＰＵを解放して他のハイエンドの管理タスクを行えるようにし、したがって、こうしたシステムの性能が向上する。この場合、システム１５００は、ゲーム情報を生成するのではなく、グラフィックスモジュール機能を使用して、任意の種類の出力装置への出力前に、受信された画像情報（ビデオ情報など）を変更する。例えば、システム１５００の１つの用途は、ＤＶＤからビデオ情報を受信し、（例えばビデオ情報上にテキスト文字を結合することによって）グラフィックス機能内のビデオ情報における合成を実行し、次いで結果として得られた信号をテレビに出力することである。
【０１３３】
上記の概要を踏まえて、次に、図１５の構成要素例のそれぞれについて、以下で説明する。後のサブセクション（Ｂ．３）では、図１に示したパイプライン１００の態様を実施するために、グラフィックスモジュール機能をどのように使用できるかに関する、より固有の情報を提供する。
【０１３４】
まず初めに、システム１５００は、画像情報をいくつかのソースのうちの任意の１つから受け付ける。例えば、システム１５００は、ネットワーク１５０２（インターネットに結合されているリモートソースなど）、任意の種類のデータベース１５０４、任意の種類のコンピュータ可読ディスク媒体１５０６（光ディスク、ＤＶＤなど）、または他の何らかのソース１５０８から画像情報を受け付けることができる。いかなる場合でも、受信された情報は、画像情報と音声情報との組合せを含んでいてもよい。逆多重化ユニット１５１０は、画像情報から音声情報を分離する。音声処理機能１５１２は、音声情報を処理する。
【０１３５】
画像デコーダ１５１４は、画像情報を処理する。画像デコーダ１５１４は、圧縮された画像情報を、例えば、その受信されたフォーマットから、他の何らかのフォーマットに変換することができる。画像デコーダ１５１４の出力は、いわゆる純粋な画像情報、および画像サブストリーム情報を含むことができる。純粋な画像情報は、ディスプレイ装置にレンダリングされる主な画像ストリームを構成する。画像サブストリーム情報は、クローズキャプション情報、任意のグラフィックオーバーレイ情報（様々なグラフィカル編集制御など）、ＤＶＤプレイヤに表示される様々な種類のサブ画像などの、純粋な画像情報に関連付けられている任意の補助情報を構成することができる。（別の実装形態では、ビデオデコーダの何らかの態様を、グラフィックスモジュール機能に割り当てることができる）。
【０１３６】
一実装形態例では、ビデオミキシングレンダラー（ＶＭＲ）モジュール１５１６は、こうして受信された画像情報の処理において中心的な役割を果たす。概要として、ＶＭＲモジュール１５１６は、グラフィックスインタフェース１５１８およびディスプレイドライバ１５２０と対話し、ディスプレイドライバ１５２０は次いで、グラフィックスモジュール１５２２を制御する。この対話は、グラフィックスモジュール１５２２の機能を探ることを伴い得る。また、この対話は、グラフィックスインタフェース１５１８、ディスプレイドライバ１５２０、およびグラフィックスモジュール１５２２による画像情報の処理の調整も伴う。一実装形態では、グラフィックスインタフェース１５１８は、Ｍｉｃｒｏｓｏｆｔ（登録商標）ＣｏｒｐｏｒａｔｉｏｎのＤｉｒｅｃｔＸによって提供されるＤｉｒｅｃｔＤｒａｗ機能を使用して実施することができる。ＤｉｒｅｃｔＤｒａｗは、この状況では、ＶＭＲモジュール１５１６をグラフィックスモジュール１５２２に通信上結合するためのメッセージ伝達用コンジット（ｍｅｓｓａｇｉｎｇ  ｃｏｎｄｕｉｔ）として働く。グラフィックスモジュール１５２２自体は、コンピュータまたは同様の装置内で固定モジュールを構成したり、グラフィックスカードなど、脱着式のユニットを構成したりすることができる（一般に、この開示の最初のセクションで言及した本発明の譲受人に譲渡された出願は、グラフィックスモジュール１５２２と対話するためにＶＭＲモジュール１５１６が使用できるデータ構造例に関する詳細を提供する。この対話は、本開示の焦点ではないため、こうした対話の詳細は、ここでは繰り返さない）。
【０１３７】
グラフィックスモジュール１５２２自体は、１つまたは複数のグラフィックス・プロセッシング・ユニット（ＧＰＵ）１５２４を含む。上述したように、システムは、図１に示されている処理操作の任意の組合せをＧＰＵ１５２４に割り当てることができる。ＧＰＵ１５２４は、ピクセルシェーダ１５２６を使用してこれらのタスクを行う。ピクセルシェーダは、ピクセルごとに画像情報に対する様々な種類の操作を行うことができる機能を指す。サブセクションＢ．３は、一般的なピクセルシェーダのアーキテクチャ、および図１に示した操作を実行するためにこうした技術がどのように使用されるかに関する追加の情報を提供する。
【０１３８】
ＧＰＵ１５２４は、グラフィックスモジュール１５２２に関連付けられているローカルメモリ１５２８と対話することができる。このローカルメモリ１５２８は、任意の数の格納関連の目的を果たすことができる。例えば、このメモリ１５２８は、次いで（ディスプレイモニタ、テレビ、記憶装置、ネットワークターゲットなど）出力装置１５３０に転送される最終的な画像面を格納することができる。
【０１３９】
Ｂ．３．ピクセルシェーダ関連の改良
背景として、図１６は、３Ｄ処理パイプラインで一般に使用されるピクセルシェーダ１６００の既知のアーキテクチャを示している。一般的なピクセルシェーダアプリケーションの各ピクセルは、ＲＧＢＡ（赤、緑、青、アルファ）など、各値が別々のチャネルに対応する、４つの浮動小数点値のベクトルによって表すことができる。ピクセルシェーダ１６００アーキテクチャは、一連の入力／出力レジスタ（１６０２、１６０４、１６０６、１６０８）、および入力データに対する演算を行う演算論理ユニット（ＡＬＵ）１６１０を含む。より詳細には、レジスタは、カラーレジスタ１６０２を含む。これらのレジスタ１６０２は、反復された頂点カラーデータを頂点シェーダ（図示せず）からピクセルシェーダ１６００に流す。定数レジスタ１６０４は、ユーザ定義の定数をピクセルシェーダ１６００に提供する。出力／一時レジスタ１６０６は、中間計算のために、一時的な記憶域を提供する。また、レジスタｒ０は、このレジスタセット内に、ピクセルシェーダ１６００の出力を受信する。テクスチャレジスタ１６０８は、テクスチャデータをピクセルシェーダＡＬＵ１６１０に提供する。ピクセルシェーダＡＬＵ１６１０は、プログラムに基づいて演算命令およびテクスチャアドレス指定命令（ｔｅｘｔｕｒｅ  ａｄｄｒｅｓｓｉｎｇ  ｉｎｓｔｒｕｃｔｉｏｎ）を実行する。プログラムは、１組の許容可能なピクセルシェーダコマンドから選択された命令の集まりを含む。
【０１４０】
次の説明は、ピクセルシェーダＡＬＵ１６１０に画像情報およびフィルタの重みを送り込むテクスチャレジスタ１６０８（以下、より総称的に「ユニット」と呼ぶ）の使用に特に焦点を置く。したがって、図１７との関連でテクスチャの概念に関する追加の入門情報を提供する。
【０１４１】
大ざっぱに言えば、ゲームの用途では、テクスチャは、キャラクタ、シーンなどを定義する多角形表面に「貼り付けられる」画像を定義する。図１７は、テクスチャ１７０２が多角形１７０４に適用されるテクスチャ適用操作１７００を示している。多角形１７０４は、四角形を形成するようにアセンブルされた２つの三角形の基本形状から成る。多角形１７０４は、４つの頂点Ｖ１、Ｖ２、Ｖ３、Ｖ４を含む。各頂点は、テクスチャ座標を含む。テクスチャ座標は、従来のＵおよびＶの基準システムを基準にして指定される。この基準システムでは、Ｕ座標は、一般にＸ軸に相当し、Ｖ座標は、一般にＹ軸に相当する。Ｕ軸の値は、０．０から１．０の範囲に固定され、同様に、Ｖ軸の値は、０．０から１．０の範囲に固定される。
【０１４２】
頂点に関連付けられているテクスチャ座標は、テクスチャ１７０２がどのように多角形１７０４に配置されるかを指定する。図１７の例の場合、頂点Ｖ１は、０．０，０．０のテクスチャ座標を有し、これは、テクスチャ１７０２の左上角に相当する。頂点Ｖ２は、テクスチャ座標１．０，０．０を有しており、これは、面１７０２の右上角に相当する。頂点Ｖ３は、テクスチャ座標０．０，０．５を有しており、これは、テクスチャ１７０２の左縁の中央に相当する。また、頂点Ｖ４は、テクスチャ座標１．０，０．５を有しており、これは、テクスチャ１７０２の右縁の中央に相当する。したがって、テクスチャ座標に従ってテクスチャ１７０２が多角形１７０４にマッピングされた場合、テクスチャ１７０２の上半分のみが多角形１７０４に適用される。テクスチャ１７０２の多角形１７０４への適用の結果がテクスチャ済み面１７０６に示されている。
【０１４３】
３Ｄ処理パイプラインは、一般的には、ゲーム情報の生成との関連で開発された、いくつかの特別なテクスチャ処理操作を可能にする。特別な操作の１つは、折り返しモードと呼ばれる。折り返しモードでは、３Ｄ処理パイプラインは、例えばある場合、同じコンテンツを有するテクスチャの行またはマトリックスを生成するために、テクスチャを任意の回数繰り返す。ミラーモードも隣接するテクスチャを複写するが、鏡がそうするのと同じように、テクスチャを反転する（映す）。
【０１４４】
一般の性質の任意のピクセルシェーダのトピックに関するこれ以上の情報は、Wolfgang F. Engel, Direct3D ShaderX: Vertex and Pixel Shader Tips and Tricks, Wordware Publishing, Inc., 2002など、市販のテキストのいくつかで見つけることができる。
【０１４５】
上記の導入を踏まえて、残りの説明では、ピクセルシェーダを使用して図１に示されている画像処理パイプラインの態様を実施する新しい技術例について述べる。
【０１４６】
まず初めに、図１８は、４つのタップを含むカーネルを有する画像処理フィルタを実施するための（図１５の）ピクセルシェーダ１５２６の適用例１８００を示している。図１８に示されている処理のタイプは、図１のパイプライン１００によって実行される他の多くの操作の基礎でもあるため、図１８に関して記載されている原理は、ピクセルシェーダ１５２６によって実行することができる他の種類の処理に適用される。４タップのフィルタカーネルの場合は、当然単なる例にすぎないが、以降の例では、このモデルをどのように異なるフィルタ設計に拡張できるかについて説明する。
【０１４７】
一般に、ＧＰＵ１５２４は、１つまたは複数の入力画像にわたってスキャンし、それぞれからピクセル値を抽出し、入力に基づいて計算を適用し、単一のピクセルを出力するように構成することができる。この操作は、ｏｕｔｐｕｔ（ｘ，ｙ）＝ｆｕｎｃｔｉｏｎ（ｉｎｐｕｔ１（ｘ，ｙ），ｉｎｐｕｔ２（ｘ，ｙ），・・・ｉｎｐｕｔｐ（ｘ，ｙ），ａｒｒａｙ  ｃｏｎｓｔａｎｔｓ［ｍ］）と表すことができる。言い換えれば、この一般的な式は、結果（ｏｕｔｐｕｔ（ｘ，ｙ））は、様々な入力信号（ｉｎｐｕｔ１（ｘ，ｙ），ｉｎｐｕｔ２（ｘ，ｙ），・・・ｉｎｐｕｔｐ（ｘ，ｙ））の何らかの関数、および任意選択で、様々な定義済みの定数（ａｒｒａｙ  ｃｏｎｓｔａｎｔｓ［ｍ］）に数学的に依存することを示している。
【０１４８】
フィルタを使用する画像処理の特定の状況では、ピクセルシェーダ１５２６は、画像に適用される関連のフィルタの重みとともに、１つまたは複数の入力画像の入力を必要とする。より正式には、出力ピクセルに関連付けられている出力（Ｏｕｔ［ｘ］）を生成するフィルタは、次のように定義することができる。
Ｏｕｔ［ｘ］＝ｓｕｍ（ｉｎ［ｘ−ｔａｐｓ／２＋ｉ］＊ｋｅｒｎｅｌ［ｉ］，ｉ＝０・・・ｔａｐｓ−１）
言い換えれば、あるピクセルの出力（Ｏｕｔ［ｘ］）は、異なる入力項の加重総和を表す。カーネルは、入力項に適用される加重情報を表す。次に、異なる入力項は、入力画像情報からの同じ引用のシフト済みバージョンを表すことができる。
【０１４９】
図１８は、ピクセルシェーダ１５２６が上記の式をどのように実施できるかを示している。示されている４タップ例１８００は、ピクセルシェーダＡＬＵ１８０４に入力を提供する一連のテクスチャユニット１８０２を示している。そこに示されているこの手法は、第１のテクスチャユニットにフィルタの重みを割り当てることであり、同じ画像情報の異なる４つのデルタシフトバージョンを次の４つのテクスチャユニット（カーネルの４つのタップを表す）に割り当てている。ピクセルシェーダＡＬＵ１８０４は、テクスチャユニットに格納されている情報を読み込み（単一の読み取り操作で）、特定のピクセルの単一の出力を提供する（単一の書き込み操作で）。この手順は、画像全体を処理するために、複数回繰り返される。この手法では、サポートウィンドウにより「Ｔａｐ」フィルタタップのＩ−Ｄ重畳フィルタを定義する。
【０１５０】
図１８に示されている操作例１８００は、より正式に次のように表すことができる。使用中の１−Ｄカーネル例は、幅「ｗ」ピクセル幅、およびｗ［−１］、ｗ［０］、ｗ［２］、およびｗ［３］のカーネルの重みを有する。重みテクスチャは、ピクセルごとにフィルタカーネルの４つの重みを計算することによって計算される。１−Ｄカーネルは、ｉｎ［−１］、ｉｎ［０］、ｉｎ［ｌ］、およびｉｎ［２］と定義された４つの入力も含む。記号Δは、１／ｗと定義される。これが与えられると、以下の情報は、テクスチャユニット１〜５に割り振られる。
テクスチャ１：座標０・・・１の「重みテクスチャ」
テクスチャ２：ｉｎ［−１］、（０・・・１）＋（−１）＊Δ（すなわち０−Δから１−Δまで）の座標の入力画像
テクスチャ３：ｉｎ［０］、（０・・・１）＋（０）＊Δの座標の入力画像
テクスチャ４：ｉｎ［１］、（０・・・１）＋（１）＊Δの座標の入力画像
テクスチャ５：ｉｎ［２］、（０・・・１）＋（２）＊Δ（すなわち０＋２＊Δから１＋２＊Δまで）の座標の入力画像
ｔｎがテクスチャユニット「ｎ」からフェッチされるピクセルを表す場合、ピクセルシェーダＡＬＵ１８０４によって実行される計算は、以下のプログラムによって表すことができる。
【０１５１】
【数４】
2008508802.tif 000005
【０１５２】
言い換えれば、アレイｗには、まず、最初のテクスチャユニット（ｔ１）に格納された加重情報の値が割り当てられる。次いで、出力結果（Ｏｕｔ．ｒｇｂａ）は、重みｗによってテクスチャユニットｔ２−ｔ５に含まれるシフト済み画像情報を変更することによって形成される。レジスタ情報に取り付けられたサフィックスは、チャネル情報を定義する。したがって、出力Ｏｕｔ．ｒｇｂａは、赤、緑、青、およびアルファのチャネルに格納された４つの浮動小数点のベクトルを表す。１つのユニットが加重情報の格納に割り振られるため、上記のアルゴリズムは、例えば「タップ」＋１入力テクスチャユニットを必要とすることがわかる。
【０１５３】
一般に、入力画像情報がＲＧＢ形式で表される場合、テクスチャユニットは、等しい量の赤色成分、緑色成分、青色成分を格納することができる。しかし、ピクセルシェーダが輝度関連の画像情報（ＹＵＶ）の処理に適用される場合、テクスチャユニットは、色度情報（Ｕ，Ｖ）に対してより多くの輝度情報を格納することができる。この対策は、人間の目が色度情報より輝度情報に敏感であるという事実を利用するので、許容できる出力結果を達成するために、輝度情報に比べて色度情報を同じだけ格納し、処理する必要はない。
【０１５４】
上述した手法のいくつかの変形および最適化が含まれる。
【０１５５】
１つの変形によれば、任意のテクスチャを、画像情報の無限のタイルとして扱うために、上述した折り返しモードを使用することができる。このモードを使用すると、ある手法は、０・・・１ではなく、０から１．０／ｇｃｄ（ＳｏｕｒｃｅＷｉｄｔｈ，ＤｅｓｔｉｎａｔｉｏｎＷｉｄｔｈ）までの入力加重テクスチャの座標を設定することである。このテクスチャの適用の際、テクスチャプレフェッチユニット（ｔｅｘｔｕｒｅ  ｐｒｅｆｅｔｃｈ  ｕｎｉｔ）は、テクスチャに格納されている加重情報の次のコピーに自動的に「折り返される」。この対策によって、設計者は、カーネルの格納要件を低減し、さらに、必要なときはいつでも、その情報を複製して適用することを確実にすることができる。
【０１５６】
別の変形によれば、カーネルは、４つを超えるタップを有していてもよい。この状況に対処するために、一実装では、カーネル加重情報の設定を４つの値のグループに分割し、それぞれを追加の入力「加重」テクスチャに割り当てることができる。６つのタップがある場合を考える。この場合、一実装形態は、２つの加重テクスチャ（第１のテクスチャは４つの値を有し、第２のテクスチャは残りの２つの値を有し、２つのスロットは未使用のままとする）を使用することができる。また、この実装形態は、６つの入力画像テクスチャを必要とする。したがって、この設計を実施するために、８テクスチャＧＰＵを使用して、単一のパスで６つのタップのフィルタリングを行うことができる。
【０１５７】
別の変形によれば、タップ数は、テクスチャユニットの数を超えてもよい。出力画像情報の計算が「タップ」項の合計を表すことに留意されたい。したがって、合計の計算を複数の処理パスに分割することによって、より多くのタップを計算することができる。例えば、フィルタカーネルが１２個のタップを有している場合、一実装形態は、
Ｏｕｔ［ｘ］＝ｓｕｍ（ｉｎ［ｘ＋ｉ］＊ｗ［ｉ］，ｉ＝０．．１１）を次のように計算することができる。
【０１５８】
【数５】
2008508802.tif 000006
【０１５９】
次いで、この実装形態は、最終的なパスを使用して結果を結合することができる。
【０１６０】
【数６】
2008508802.tif 000007
【０１６１】
別の考え得る実装形態は、以下の一連の演算を介して、総計のＯｕｔ［ｘ］結果を形成することができる。
【０１６２】
【数７】
2008508802.tif 000008
【０１６３】
後者の手法は、実質的に、前者の手法よりメモリが少なくてすむが、前者の手法に比べて２倍のメモリアクセスが必要にもなる（例えば読み込み×４および書き込み×３など）。ＧＰＵでの読み込み−変更−書き込みサイクルは、非常に費用がかかるか、場合によっては禁止されるため、後者の方式のこの特徴は、実行不可能になる可能性がある。
【０１６４】
別の変形によれば、一実装形態は、定義された画像情報外のすべてのピクセルを黒（または他の何らかのデフォルトの値）と扱う特別なモード（「キルピクセル（ｋｉｌｌ  ｐｉｘｅｌ）」）を提供することができる。この対策は、表示すべきではない情報におけるエッジを自動的に「隠す」条件に適用することができる。
【０１６５】
別の変形によれば、一実装形態は、画像情報の処理の際に上述したミラーモードを適用することができる。このモードは、画像情報の境界外の画像情報を参照するとき、画像情報を水平方向または垂直方向に映す。
【０１６６】
図１９は、上述した多くの特徴を要約する手順１９００を示す。ステップ１９０２は、様々な入力情報をピクセルシェーダの様々な入力ユニットに割り当てることを伴う。こうした情報は、様々なテクスチャユニットに適用された画像情報および加重情報、様々な定数ユニットに適用された定数などを含むことができる。ステップ１９０４は、ピクセルシェーダＡＬＵ１８０４に提供されたプログラミング命令に基づいて、ピクセルごとに出力画像情報を計算することを伴う。ステップ１９０６は、追加のパスが必要かどうかを判定する。必要である場合、手順１９００は、図１９に示されている操作のうちの１つまたは複数を１回または複数回繰り返す。ステップ１９０８は、最終的な出力結果をもたらす。
【０１６７】
最後のトピックとして、図２０は、図１との関連で紹介したいくつかの操作を実行するピクセルシェーダ１５２６の用途を示している。図２０は、特に、パイプラインが４：２：２ＹＵＶ画像情報を受信し、それをアップサンプリングし、線形ＲＧＢ形式に変換し、結果として得られた線形情報に対する変倍を行う１つの用途例を扱う。図２０に示された処理は、図１８および図１９に関して上記で開発された概念に基づく。
【０１６８】
ハイブリッド平面フォーマット（ｈｙｂｒｉｄ  ｐｌａｎａｒ  ｆｏｒｍａｔ）（ＮＶ１２など）で表される４：２：０画像情報は、輝度平面および色度平面を含むものと見なすことができることに留意されたい。したがって、この情報に対するいくつかの操作を並列で行うことが可能である。
【０１６９】
１つの手法は、テクスチャユニットを２つのグループに分割することであり、１つのグループは、色度成分の補間に使用するためのものである。このアップサンプリング操作は、４：４：４色度情報を生成するために使用することができる拡大操作を呼び出す。次いで、ピクセルシェーダ１５２６は、輝度成分および補間された色度成分を使用して、ピクセルごとに、伝達マトリックスを使用して対応するＲ’Ｇ’Ｂ’情報を計算することができる。次に、ピクセルシェーダ１５２６は、伝達関数を適用して、画像情報を線形化することができる。次いで、ピクセルシェーダ１５２６は、第２のグループのテクスチャユニットを使用して、ＲＧＢ空間でのそれ以上の変倍を行うために使用することができる。
【０１７０】
より正式には、以下は、上記で識別した方法で画像情報を変換するために使用することができるステップのシーケンス例を識別する。
１）第１の変倍操作を行うように、上述した方法（図１８に示されている）でテクスチャ１〜５を設定する。
２）上述した変倍操作を使用して、輝度情報の２倍のサンプリングレートでＣｂＣｒ情報を計算する。
３）Ｙ’ＣｂＣｒからＲ’Ｇ’Ｂ’色空間への変換マトリックスを、マトリックスＭとして１６の定数のアレイにロードする。
４）以下の方法でＲ’Ｇ’Ｂ’情報を計算する。
【０１７１】
【数８】
2008508802.tif 000009
【０１７２】
５）伝達関数を使用してＲ’Ｇ’Ｂ’からＲＧＢを計算する。
６）変倍された線形ＲＧＢデータを、（図１８を参照して）上述したアルゴリズムを使用して、しかし６〜１２のテクスチャで計算することによって、第２の変倍操作を行う。
７）水平方向の変倍が行われた後、垂直方向の変倍をＲＧＢ情報に適用する。
【０１７３】
図２０は、上述したアルゴリズムをフローチャートの形で説明する手順２０００を示す。ステップ２００２は、適切なテクスチャユニット（例えば第１の組のテクスチャユニット）に情報を割り当てることを伴う。ステップ２００４は、第１の組のテクスチャユニットを使用して、色度情報をアップサンプリングすることを伴う。ステップ２００６は、色空間の変換の実行に使用する定数をピクセルシェーダ１５２６にロードすることを伴う。ステップ２００８は、定数を使用して、画像情報を非線形Ｒ’Ｇ’Ｂ’形式に変換することを伴う。ステップ２０１０は、Ｒ’Ｇ’Ｂ’情報を線形ＲＧＢ形式に変換することを伴う。また、ステップ２０１２は、ＲＧＢ情報の変倍を伴う。
【０１７４】
Ｃ．コンピュータ環境例
一実装形態例では、コンピューティング機器によって、上記の図に示した処理の様々な態様を実行することができる。この場合、図２１は、上記の図に示された処理の態様を実施するために使用できるコンピュータ環境例２１００に関する情報を提供する。例えば、コンピュータを使用して、図１に示した画像処理パイプライン１００の一部またはすべてを実施することができる。
【０１７５】
コンピューティング環境２１００は、汎用型コンピュータ２１０２およびディスプレイ装置２１０４を含む。しかし、コンピューティング環境２１００は、他の種類のコンピューティング機器を含んでいてもよい。例えば、図示していないが、コンピュータ環境２１００は、ハンドヘルドまたはラップトップ装置、セットトップボックス、ゲームコンソール、ビデオ処理／表示装置（テレビ、ＤＶＲなど）に統合された処理機能、メインフレームコンピュータなどを含み得る。さらに、図２１は、説明を容易にするためにグループ化されたコンピュータ環境２１００の要素を示している。しかし、コンピューティング環境２１００は、分散処理構成を使用することができる。分散コンピューティング環境では、コンピューティングリソースは、その環境にわたって物理的に分散することができる。
【０１７６】
コンピュータ例２１０２は、１つまたは複数のプロセッサまたは処理ユニット２１０６、システムメモリ２１０８、およびバス２１１０を含む。バス２１１０は、様々なシステム構成要素を接続する。例えば、バス２１１０は、プロセッサ２１０６をシステムメモリ２１０８に接続する。バス２１１０は、様々なバスアーキテクチャのうちの任意のバスアーキテクチャを使用するメモリバスまたはメモリコントローラ、周辺バス、高速グラフィックスポート、およびプロセッサまたはローカルバスを含めて、任意の種類のバス構造またはバス構造の組合せを使用して実装することができる。また、コンピュータ２１０２は、上述した方法で、１つまたは複数のＧＰＵユニット（図示せず）に結合することもできる。
【０１７７】
また、コンピュータ２１０２は、リムーバブルまたはノンリムーバブルとすることができる様々なタイプの揮発性、不揮発性媒体を含めて、様々なコンピュータ可読媒体を含むこともできる。例えば、システムメモリ２１０８は、ランダムアクセスメモリ（ＲＡＭ）２１１２などの揮発性メモリ、読み取り専用メモリ（ＲＯＭ）２１１４などの不揮発性メモリの形のコンピュータ可読媒体を含む。ＲＯＭ２１１４は、例えば起動中など、コンピュータ２１０２内の要素間での情報の転送を助ける基本ルーチンを含む入力／出力システム（ＢＩＯＳ）２１１６を含む。ＲＡＭ２１１２は、一般的には、プロセッサ２１０６によって迅速にアクセスできる形のデータおよび／またはプログラムモジュールを含む。
【０１７８】
他の種類のコンピュータ記憶媒体は、ノンリムーバブル不揮発性磁気媒体から読み取り、そこに書き込むハードディスクドライブ２１１８、（「フロッピー（登録商標）ディスク」など）リムーバブル不揮発性磁気ディスク２１２２から読み取り、そこに書き込む磁気ディスクドライブ２１２０、およびＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、または他の光媒体など、リムーバブル不揮発性光ディスク２１２６から読み取り、かつ／またはそこに書き込む光ディスクドライブ２１２４を含む。ハードディスクドライブ２１１８、磁気ディスクドライブ２１２０、および光ディスクドライブ２１２４はそれぞれ、１つまたは複数のデータ媒体インタフェース２１２８によってシステムバス２１１０に接続されている。あるいは、ハードディスクドライブ２１１８、磁気ディスクドライブ２１２０、および光ディスクドライブ２１２４を、ＳＣＳＩインタフェース（図示せず）または他の結合機構によってシステムバス２１１０に接続することができる。図示していないが、コンピュータ２１０２は、磁気カセットまたは他の磁気記憶装置、フラッシュメモリカード、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）または他の光記憶装置、電気的消去可能プログラマブルＲＯＭ（ＥＥＰＲＯＭ）など、他のタイプのコンピュータ可読媒体を含むことができる。
【０１７９】
一般に、上記で識別されたコンピュータ可読媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、およびコンピュータ２１０２によって使用する他のデータの不揮発性記憶装置を提供する。例えば、可読媒体は、オペレーティングシステム２１３０、アプリケーションモジュール２１３２、他のプログラムモジュール２１３４、およびプログラムデータ２１３６を格納することができる。
【０１８０】
コンピュータ環境２１００は、様々な入力装置を含むことができる。例えば、コンピュータ環境２１００は、コマンドや情報をコンピュータ２１０２に入力するためのキーボード２１３８およびポインティング装置２１４０（「マウス」など）を含む。コンピュータ環境２１００は、マイクロフォン、ジョイスティック、ゲームパッド、衛星パラボラアンテナ、シリアルポート、スキャナ、カード読み取り装置、デジタルカメラまたはビデオカメラなど、他の入力装置（図示せず）を含み得る。入力／出力インタフェース２１４２は、入力装置をプロセッサ２１０６に結合する。より一般には、入力装置は、パラレルポート、シリアルポート、ゲームポート、ユニバーサルシリアルバス（ＵＳＢ）ポートなど、任意の種類のインタフェースおよびバス構造を介してコンピュータ２１０２に結合することができる。
【０１８１】
コンピュータ環境２１００は、ディスプレイ装置２１０４も含む。ビデオアダプタ２１４４は、ディスプレイ装置２１０４をバス２１１０に結合する。ディスプレイ装置２１０４に加えて、コンピュータ環境２１００は、スピーカ（図示せず）、プリンタ（図示せず）など、他の出力周辺装置を含み得る。
【０１８２】
コンピュータ２１０２は、リモートコンピューティング装置２１４６など１つまたは複数のリモートコンピュータへの論理接続を使用してネットワーク式環境で動作する。リモートコンピューティング装置２１４６は、汎用パーソナルコンピュータ、ポータブルコンピュータ、サーバ、ゲームコンソール、ネットワーク拡張装置など、任意の種類のコンピュータ機器を含み得る。リモートコンピューティング装置２１４６は、コンピュータ２１０２に関して上述した特徴のすべて、またはその一部を含み得る。
【０１８３】
ＷＡＮ、ＬＡＮなど、任意のタイプのネットワーク２１４８を使用して、コンピュータ２１０２をリモートコンピューティング装置２１４６に結合することができる。コンピュータ２１０２は、ネットワークインタフェース２１５０を介してネットワーク２１４８に結合し、これには、広帯域接続、モデム接続、ＤＳＬ接続、または他の接続方式を使用することができる。図示されていないが、コンピューティング環境２１００は、（例えば変調された無線信号、変調された赤外線信号などを介して）コンピュータ２１０２をリモートコンピューティング装置２１４６に結合する無線通信機能を提供することができる。
【０１８４】
最後に、この開示では、いくつかの例を代替により（ケースＡまたはケースＢなど）示してきた。さらに、この開示は、すべての場合において、同時に使用されているケースを明示的に言及してない場合でさえ、代替を単一の実装形態で同時に使用するケース（例えばケースＡおよびケースＢ）を含む。
【０１８５】
さらに、本明細書にはいくつかの特徴が記載されており、まず、これらの特徴が対処することができる問題例を識別した。この説明方法は、他人が本明細書に指定された方法で問題を理解し、かつ／または明確にしたことを認めているわけではない。ビデオ処理の技術分野における問題の理解および明確化は、本発明の一部として理解されるものとする。
【０１８６】
本発明は、構造的な特徴および／または方法動作に固有の言葉で記載されているが、添付の特許請求の範囲に定義された本発明は、記載されている固有の特徴および動作に必ずしも限定されるわけではないことを理解されたい。むしろ、固有の特徴および動作は、請求した本発明を実施する形式例として開示される。
【図面の簡単な説明】
【０１８７】
【図１】画像情報を線形形式で処理することを伴う画像処理パイプライン例を示す図である。
【図２】図１の画像処理パイプラインを使用して、画像情報を線形形式で処理する手順例を示す図である。
【図３】アーティファクトの生成なくこの情報を処理する際の問題の一部を説明するための手段としての４：２：０画像情報のサンプルを示す図である。
【図４】画像情報を疑似線形形式で処理することに対応する画像処理パイプラインの一部の例を示す図である。
【図５】図４に示した画像処理パイプラインの一部を使用して、画像情報を疑似線形形式で処理する手順例を示す図である。
【図６】ディザリングおよび誤差分散を実行する既知の手法を説明する図である。
【図７】ディザリングおよび誤差分散を実行する既知の手法を説明する図である。
【図８】図６および図７に関連して説明したモデルより優れた結果をもたらすディザリングおよび誤差分散を提供するシステム例を示す図である。
【図９】図８のシステムを使用してディザリングおよび誤差分散を実行する手順例を示す図である。
【図１０】フィルタカーネルの動的計算を伴う、変倍を行うときにフィルタリングを提供するシステム例を示す図である。
【図１１】図１０のシステムを使用してフィルタリングを実行する手順例を示す図である。
【図１２】本明細書に記載した任意の改良を組み込むことができる画像処理パイプライン例を示す図である。
【図１３】例えば、特定の画像処理アプリケーションに必要ではないコードモジュールを取り除くことによって、図１２の画像処理パイプラインを実施するために使用される効率的なコードを生成するシステム例を示す図である。
【図１４】図１３に示される符号最適化システムを適用する手順例を示す図である。
【図１５】ピクセルシェーダ機能を含むグラフィックス・プロセッシング・ユニット（ＧＰＵ）を使用することによって、図１２の画像処理パイプラインを実施するシステム例を示す図である。
【図１６】既知のピクセルシェーダ設計を示す図である。
【図１７】一般のグラフィックアプリケーションの状況で、多角形へのテクスチャ情報の適用に関連する一般の原理を示す図である。
【図１８】ピクセルシェーダを使用した４タップフィルタの実装例を示す図である。
【図１９】図１９のフィルタの操作を説明する手順例を示す図である。
【図２０】ピクセルシェーダを使用した図１の画像処理パイプラインの態様のより一般的な実装を示す図である。
【図２１】上記の図に示されている様々な機能の態様を実装するコンピュータ環境例を示す図である。
【図１】
2008508802.tif 000010
【図２】
2008508802.tif 000011
【図３】
2008508802.tif 000012
【図４】
2008508802.tif 000013
【図５】
2008508802.tif 000014
【図６】
2008508802.tif 000015
【図７】
2008508802.tif 000016
【図８】
2008508802.tif 000017
【図９】
2008508802.tif 000018
【図１０】
2008508802.tif 000019
【図１１】
2008508802.tif 000020
【図１２】
2008508802.tif 000021
【図１３】
2008508802.tif 000022
【図１４】
2008508802.tif 000023
【図１５】
2008508802.tif 000024
【図１６】
2008508802.tif 000025
【図１７】
2008508802.tif 000026
【図１８】
2008508802.tif 000027
【図１９】
2008508802.tif 000028
【図２０】
2008508802.tif 000029
【図２１】
2008508802.tif 000030
【国際調査報告】
2008508802.tif 000031
2008508802.tif 000032
2008508802.tif 000033