(57)【特許請求の範囲】
【請求項１】
方法であって、
グラフィック処理ユニット（ＧＰＵ）に結合されており、前記ＧＰＵに外付けの固定機能ピクセル値処理ユニットを用いて、前記ＧＰＵによって処理された画像内の１つ以上のピクセルについてのピクセル値を含む出力ストリームを前記ＧＰＵから受信することであって、ここで前記固定機能ピクセル値処理ユニットは、前記ＧＰＵからの前記出力ストリームを永久的に受信する状態にあり、および前記出力ストリームをスケージューリングすることなく処理する受信することと、
前記固定機能ピクセル値処理ユニットを用いて、前記出力ストリームにおける前記ピクセル値を評価することと、
前記固定機能ピクセル値処理ユニットを用いて、どのピクセルが、前記出力ストリーム内の前記ピクセル値の前記評価に基づく前記ＧＰＵによる処理を要求しているかを、決定することであって、ここで、どのピクセルが、前記ＧＰＵによる処理を要求しているかを、決定することは、どのピクセルが、前記固定機能ピクセル値処理ユニットの単一の計算サイクルにおいて前記ＧＰＵにより、および前記固定機能ピクセル値処理ユニットと前記ＧＰＵとの間での同期化なく、処理を要求しているかを決定することを備える、
決定することと、
前記固定機能ピクセル値処理ユニットに外付けであり、前記固定機能ピクセル値処理ユニットに結合されたバッファに、前記ＧＰＵによる処理を要求する前記ピクセルについての前記ピクセル値を記憶することと
を備えた方法。
【請求項２】
処理を要求すると決定された前記ピクセルについての前記ピクセル値のために、前記バッファ内にアドレスを生成することをさらに備え、
処理を要求する前記ピクセルについての前記ピクセル値を記憶することは、前記バッファの前記生成されたアドレスに、処理を要求する前記ピクセルについての前記ピクセル値を記憶することを備える、請求項１に記載の方法。
【請求項３】
動作モードを受信することをさらに備え、
前記バッファ内にアドレスを生成することは、前記受信された動作モードに基づいて、前記バッファ内にアドレスを生成することを備える、請求項２に記載の方法。
【請求項４】
前記動作モードは、線形モードおよびブロックモードのうちの少なくとも１つを備え、前記バッファ内にアドレスを生成することは、前記動作モードが前記線形モードを備える場合に前記バッファの連続した行または列内にアドレスを生成することを備え、前記バッファ内にアドレスを生成することは、前記動作モードが前記ブロックモードを備える場合に、前記バッファの連続したブロック内にアドレスを生成することを備える、請求項３に記載の方法。
【請求項５】
ピクセル値が前記バッファに記憶されたピクセル数をカウントすることと、
前記カウントされたピクセル数に基づいて、処理を要求する前記ピクセルについての前記ピクセル値を検索することと、
処理を要求する前記ピクセルについての前記検索されたピクセル値を処理することと
をさらに備える、請求項１に記載の方法。
【請求項６】
前記画像のスケーリングされたバージョンを生成することと、
前記画像の前記スケーリングされたバージョンに基づいて、キーポイントピクセルを識別することと
をさらに備え、
どのピクセルが処理を要求するかを決定することは、前記識別されたキーポイントピクセルが処理を要求することを決定することを備え、
処理を要求する前記ピクセルについての前記ピクセル値を記憶することは、前記識別されたキーポイントピクセルの前記ピクセル値を前記バッファに記憶することを備える、
請求項１に記載の方法。
【請求項７】
前記ピクセル値は、座標値および色値のうちの少なくとも１つを備える、請求項１に記載の方法。
【請求項８】
処理を要求しないピクセルについてのピクセル値を、処理から除去することをさらに備える、請求項１に記載の方法。
【請求項９】
前記ＧＰＵによる処理を要求しないピクセルについてのピクセル値を前記バッファに記憶しないことをさらに備える、請求項１に記載の方法。
【請求項１０】
画像を処理して、前記処理された画像内の１つ以上のピクセルについてのピクセル値を含む出力ストリームを生成するように構成されたグラフィック処理ユニット（ＧＰＵ）と、
バッファと
前記ＧＰＵに外付けであり、前記ＧＰＵおよび前記バッファに結合された固定機能ピクセル値処理ユニットであって、
前記出力ストリームを受信することと、
前記出力ストリームにおける前記ピクセル値を評価することと、
どのピクセルが、前記出力ストリーム内の前記ピクセル値の前記評価に基づく前記ＧＰＵによる処理を要求しているかを、決定することであって、ここで、前記固定機能ピクセル値処理ユニットは、どのピクセルが、前記固定機能ピクセル値処理ユニットの単一の計算サイクルにおいて前記ＧＰＵにより、および前記固定機能ピクセル値処理ユニットと前記ＧＰＵとの間での同期化なく、処理を要求しているかを決定するように構成されている、
決定することと、
前記ＧＰＵによる処理を要求する前記ピクセルについての前記ピクセル値を前記バッファに記憶することであって、ここで、前記固定機能ピクセル値処理ユニットは、前記ＧＰＵからの前記出力ストリームを永久的に受信する状態にあり、および前記出力ストリームをスケージューリングすることなく処理する、記憶することと、
を行うように構成された固定機能ピクセル値処理ユニットと
を備える装置。
【請求項１１】
前記固定機能ピクセル値処理ユニットは、さらに、処理を要求すると決定された前記ピクセルについての前記ピクセル値のために前記バッファ内にアドレスを生成するように構成され、前記固定機能ピクセル値処理ユニットは、処理を要求する前記ピクセルについての前記ピクセル値を前記バッファの前記生成されたアドレスに記憶する、請求項１０に記載の装置。
【請求項１２】
前記固定機能ピクセル値処理ユニットは、さらに、動作モードを受信するように構成され、前記固定機能ピクセル値処理ユニットは、前記受信された動作モードに基づいて、前記バッファ内に前記アドレスを生成する、請求項１１に記載の装置。
【請求項１３】
前記動作モードは、線形モードおよびブロックモードのうちの少なくとも１つを備え、前記固定機能ピクセル値処理ユニットは、前記動作モードが前記線形モードを備える場合に、前記バッファの連続した行または列内に前記アドレスを生成し、前記動作モードが前記ブロックモードを備える場合に、前記バッファの連続したブロック内に前記アドレスを生成する、請求項１２に記載の装置。
【請求項１４】
前記固定機能ピクセル値処理ユニットは、さらに、ピクセル値が前記バッファに記憶されたピクセル数をカウントするように構成され、前記ＧＰＵは、前記カウントされたピクセル数に基づいて、処理を要求する前記ピクセルについての前記ピクセル値を前記バッファから検索し、前記ＧＰＵは、処理を要求する前記ピクセルについての前記検索されたピクセル値を処理する、請求項１０に記載の装置。
【請求項１５】
前記ＧＰＵはさらに、前記画像のスケーリングされたバージョンを生成し、前記画像の前記スケーリングされたバージョンに基づいてキーポイントピクセルを識別するように構成され、前記固定機能ピクセル値処理ユニットは、前記識別されたキーポイントピクセルが処理を要求していると決定し、前記識別されたキーポイントピクセルについての前記ピクセル値を前記バッファに記憶する、請求項１０に記載の装置。
【請求項１６】
前記ピクセル値は、座標値および色値のうちの少なくとも１つを備える、請求項１０に記載の装置。
【請求項１７】
前記固定機能ピクセル値処理ユニットは、処理を要求しないピクセルについてのピクセル値を、処理から除去するようにさらに構成される、請求項１０に記載の装置。
【請求項１８】
前記固定機能ピクセル値処理ユニットは、前記出力ストリーム内の前記ピクセル値を評価し、どのピクセルが処理を要求するかを決定し、処理を要求する前記ピクセルについての前記ピクセル値を前記バッファに記憶し、処理を要求すると決定された前記ピクセルについての前記ピクセル値のために、前記バッファ内にアドレスを生成し、ピクセル値が前記バッファに記憶されたピクセル数をカウントするようにのみ構成された、請求項１０に記載の装置。
【請求項１９】
前記固定機能ピクセル値処理ユニットは、前記ＧＰＵによる処理を要求しないピクセルについてのピクセル値を前記バッファに記憶しないようにさらに構成される、請求項１０に記載の装置。
【請求項２０】
前記装置は、無線通信デバイスを備える、請求項１０に記載の装置。
【請求項２１】
装置であって、
グラフィック処理ユニット（ＧＰＵ）と、
バッファと、
前記ＧＰＵに外付けであり、前記ＧＰＵおよび前記バッファに結合された固定機能ピクセル値処理ユニットと、
を備え、前記固定機能ピクセル値処理ユニットは、
前記ＧＰＵによって処理された画像内の１つ以上のピクセルについてのピクセル値を含む出力ストリームを前記ＧＰＵから受信する手段であって、ここで前記固定機能ピクセル値処理ユニットの前記受信する手段は、前記ＧＰＵからの前記出力ストリームを永久的に受信する状態にあり、および前記出力ストリームをスケージューリングすることなく処理する、受信する手段と、
前記出力ストリームにおける前記ピクセル値を評価する手段と、
どのピクセルが、前記出力ストリーム内の前記ピクセル値の前記評価に基づく前記ＧＰＵによる処理を要求しているかを、決定する手段であって、ここで、前記決定する手段は、どのピクセルが、前記固定機能ピクセル値処理ユニットの単一の計算サイクルにおいて前記ＧＰＵにより、および前記固定機能ピクセル値処理ユニットと前記ＧＰＵとの間での同期化なく、処理を要求しているかを決定する、決定する手段と、
前記ＧＰＵによる処理を要求する前記ピクセルについての前記ピクセル値を前記バッファに記憶する手段と
を備える装置。
【請求項２２】
処理を要求すると決定された前記ピクセルについての前記ピクセル値のために、前記バッファ内にアドレスを生成する手段をさらに備え、
処理を要求する前記ピクセルについての前記ピクセル値を記憶する手段は、前記バッファの前記生成されたアドレスに、処理を要求する前記ピクセルについての前記ピクセル値を記憶する手段を備える、
請求項２１に記載の装置。
【請求項２３】
動作モードを受信する手段をさらに備え、
前記バッファ内にアドレスを生成する手段は、前記受信された動作モードに基づいて、前記バッファ内にアドレスを生成する手段を備える、請求項２２に記載の装置。
【請求項２４】
前記動作モードは、線形モードおよびブロックモードのうちの少なくとも１つを備え、前記バッファ内にアドレスを生成する手段は、前記動作モードが前記線形モードを備える場合に、前記バッファの連続した行または列内にアドレスを生成する手段を備え、前記バッファ内にアドレスを生成する手段は、前記動作モードが前記ブロックモードを備える場合に、前記バッファの連続したブロック内にアドレスを生成する手段を備える、請求項２３に記載の装置。
【請求項２５】
ピクセル値が前記バッファに記憶されたピクセル数をカウントする手段と、
前記カウントされたピクセル数に基づいて、処理を要求する前記ピクセルについての前記ピクセル値を検索する手段と、
処理を要求する前記ピクセルについての前記検索されたピクセル値を処理する手段と
をさらに備える、請求項２１に記載の装置。
【請求項２６】
前記画像のスケーリングされたバージョンを生成する手段と、
前記画像の前記スケーリングされたバージョンに基づいて、キーポイントピクセルを識別する手段と
をさらに備え、
どのピクセルが処理を要求するかを決定する前記手段は、前記識別されたキーポイントピクセルが処理を要求することを決定する手段を備え、
処理を要求する前記ピクセルについての前記ピクセル値を記憶する手段は、前記識別されたキーポイントピクセルの前記ピクセル値を前記バッファに記憶する手段を備える、
請求項２１に記載の装置。
【請求項２７】
前記ピクセル値は、座標値および色値のうちの少なくとも１つを備える、請求項２１に記載の装置。
【請求項２８】
処理を要求しないピクセルについてのピクセル値を、処理から除去する手段をさらに備える、請求項２１に記載の装置。
【請求項２９】
前記ＧＰＵによる処理を要求しないピクセル値を前記バッファに記憶しない手段をさらに備える、請求項２１に記載の装置。
【請求項３０】
前記装置は、無線通信デバイスを備える、請求項２１に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
[0001]  本開示は、ピクセル値の効率的な記憶に関し、より詳細には、グラフィック処理ユニット（ＧＰＵ：graphics processing unit）における処理のためのピクセル値の効率的な記憶に関する。
【背景技術】
【０００２】
[0002]  グラフィック処理ユニット（ＧＰＵ）は、グラフィックアプリケーションに対してピクセル処理を提供する。いくつかの例において、ＧＰＵは、並列処理動作をサポートするように構成されうる。ＧＰＵは、スクリーン上に表示するためにピクセルの矩形状格子（rectangular grid）を生成しうる。ＧＰＵは、スクリーン上に表示されるべきピクセルについてのピクセル値を生成するために、シェーディング（shading）、カリング（culling）、ブレンディング（blending）、照明（illuminating）のような機能、および他の機能を実行しうる。ＧＰＵによる並列処理は、表示されるべきピクセルの迅速なレンダリングのために効率的な処理を促進しうる。
【発明の概要】
【０００３】
[0003]  本開示は、効率的な処理、および、ＧＰＵによって使用されるバッファへの効率的な記憶のためにデータを圧縮する技法について説明する。このバッファは、２つの例として、フレームバッファまたはディスプレイバッファでありうる。グラフィック処理ユニット（ＧＰＵ）は、スクリーンを駆動するため、つまり、１つ以上の画像ベースコンピューティングアプリケーションをサポートするために、バッファへの出力に向けてピクセル値の出力ストリームを生成しうる。出力ストリームは、ＧＰＵによる後続の処理に必要とされうるピクセルについてのピクセル値に加え、ＧＰＵによる後続の処理に必要とされない可能性のあるピクセルについてのピクセル値を含みうる。
【０００４】
[0004]  いくつかの例において、ピクセル値処理ユニットは、ＧＰＵからの出力ストリームを受信しうる。ピクセル値処理ユニットは、後続の処理に必要とされうるピクセルについてのピクセル値をバッファに効率的に記憶するように構成されうる。ピクセル値処理ユニットは、後続の処理に必要とされないピクセルについてのピクセル値をバッファに記憶しないように構成されうる。
【０００５】
[0005]  より詳細に説明されるように、ピクセル値処理ユニットは、固定データレート処理用に構成されたＧＰＵが、その固定データレート処理を可変データレート処理に対して効率的に利用することを可能にする。しかしながら、本開示の態様は、固定データレート処理のＧＰＵだけに限定されるとみなされるべきではない。
【０００６】
[0006]  一例において、本開示は、グラフィック処理ユニット（ＧＰＵ）に結合されており、かつ、ＧＰＵの外部にあるピクセル値処理ユニットを用いて、ＧＰＵによって処理された画像内の１つ以上のピクセルについてのピクセル値を含む出力ストリームをＧＰＵから受信することを備える方法について説明する。方法はまた、ピクセル値処理ユニットを用いて、出力ストリーム内のピクセル値が、ＧＰＵによるさらなる処理を要求するピクセルについてのものであるか否かを決定することを備える。方法はさらに、ＧＰＵによるさらなる処理を要求するピクセルについてのピクセル値を、ピクセル値処理ユニットの外部にあり、かつ、ピクセル値処理ユニットに結合されたバッファに記憶することを備える。
【０００７】
[0007]  別の例において、本開示は、処理された画像内の１つ以上のピクセルについてのピクセル値を含む出力ストリームを生成するために、画像を処理するように構成されたグラフィック処理ユニット（ＧＰＵ）と、バッファとを備える装置について説明する。装置はまた、ＧＰＵの外部にあり、ＧＰＵとバッファとに結合されており、かつ、出力ストリーム内のピクセル値がＧＰＵによるさらなる処理を要求するピクセルについてのものであるか否かを決定して、ＧＰＵによるさらなる処理を要求するピクセルについてのピクセル値をバッファに記憶するように構成されたピクセル値処理ユニットを含む。
【０００８】
[0008]  別の例において、本開示は、グラフィック処理ユニット（ＧＰＵ）と、バッファと、ＧＰＵの外部にあり、かつ、ＧＰＵとバッファとに結合されたピクセル値処理ユニットとを備える装置について説明する。ピクセル値処理ユニットは、ＧＰＵによって処理された画像内の１つ以上のピクセルについてのピクセル値を含む出力ストリームをＧＰＵから受信する手段と、出力ストリーム内のピクセル値が、ＧＰＵによるさらなる処理を要求するピクセルについてのものであるか否かを決定する手段と、ＧＰＵによるさらなる処理を要求するピクセルについてのピクセル値をバッファに記憶する手段とを備える。
【０００９】
[0009]  別の例において、本開示は、ピクセル値処理ユニットに対して、グラフィック処理ユニット（ＧＰＵ）に結合されており、かつ、ＧＰＵの外部にあるピクセル値処理ユニットを用いて、ＧＰＵによって処理された画像内の１つ以上のピクセルについてのピクセル値を含む出力ストリームをＧＰＵから受信させる命令を備える非一時的なコンピュータ読取可能な記憶媒体を説明する。命令はまた、ピクセル値処理ユニットに対して、出力ストリーム内のピクセル値がさらなる処理を要求するピクセルについてのものであるかを決定させ、ピクセル値処理ユニットおよびＧＰＵの外部にあり、かつ、ピクセル値処理ユニットに結合されているバッファに、さらなる処理を要求するピクセルについてのピクセル値を記憶させる。
【００１０】
[0010]  １つ以上の例の詳細が、添付の図面および以下の説明で示される。他の特徴、目的、および利点は、説明、図面、および特許請求の範囲から明らかになるであろう。
【図面の簡単な説明】
【００１１】
【図１】図１は、ピクセル値記憶システム内のグラフィック処理ユニット（ＧＰＵ）を示すブロック図である。
【図２Ａ】図２Ａは、図１のグラフィック処理ユニット（ＧＰＵ）の一例をより詳細に示すブロック図である。
【図２Ｂ】図２Ｂは、図１のグラフィック処理ユニット（ＧＰＵ）の別の例をより詳細に示すブロック図である。
【図３】図３は、図１のピクセル値処理ユニットの例をより詳細に示すブロック図である。
【図４Ａ】図４Ａは、バッファに記憶されるべき、画像内のピクセルを示すグラフィック図である。
【図４Ｂ】図４Ｂは、図１のバッファの一例の記憶ロケーションに記憶されたピクセル値を示すグラフィック図である。
【図４Ｃ】図４Ｃは、図１のバッファの一例の記憶ロケーションに記憶されたピクセル値を示すグラフィック図である。
【図４Ｄ】図４Ｄは、図１のバッファの一例の記憶ロケーションに記憶されたピクセル値を示すグラフィック図である。
【図５】図５は、本開示の態様を実現するように構成されうるデバイスを示すブロック図である。
【図６】図６は、ピクセル値処理ユニットの例示的な動作を示すフローチャートである。
【図７】図７は、ピクセル値処理ユニットの別の例示的な動作を示すフローチャートである。
【図８】図８は、ピクセル値処理ユニットの別の例示的な動作を示すフローチャートである。
【発明を実施するための形態】
【００１２】
[0021]  本開示の態様は、主に、固定データレート処理用に設計されうるグラフィック処理ユニット（ＧＰＵ）上で可変データレート処理をストリーミングするための技法に向けられている。グラフィックアプリケーションは、スクリーン上に表示するためのピクセルの矩形状格子である画像内に表される視覚コンテンツを生成する。スクリーン上に表示されるべきピクセル数は、比較的多く、一例において、例えば、６４０×４８０、すなわち３０７，２００ピクセルでありうる。
【００１３】
[0022]  ＧＰＵは、大半またはすべてのピクセルが処理されるべきであり、そのようなピクセルが、まったく同じではないにしても類似した動作を要求する、ということを前提として、マルチレベルの並列処理を用いて、そのような大きい数のピクセルを効率的に処理するように設計されうる。本開示で使用される場合、「固定データレート処理（fixed data rate processing）」という表現は一般的に、スクリーンに表示されるべき画像内のすべてまたは大半のピクセルのＧＰＵ処理を指しうる。例えば、画像がスクリーンを覆っており、このスクリーンが６４０×４８０ピクセル、すなわち３０７，２００ピクセルを含んでいる、と想定する。この例において、ＧＰＵは、６４０×４８０ピクセルを含むスクリーン上の３０７，２００ピクセルすべてについてのピクセル値を処理する必要があるだろう。
【００１４】
[0023]  より詳細に記載されるように、いくつかのグラフィックアプリケーションの場合、ＧＰＵは、画像内のすべてのピクセルを処理する必要はなく、選択されたごく一部のピクセルだけを処理する必要がありうる。本開示で使用される場合、「可変データレート処理（variable data rate processing）」という表現は一般的に、すべてのピクセルの代わりに、画像内の選択されたごく一部のピクセルを処理することを要求するＧＰＵ処理を指しうる。例えば、いくつかのグラフィックアプリケーションについて、ＧＰＵは、画像内のすべてまたは大半のピクセルを最初に処理する必要がない場合がある。次に、後続の処理パスについて、ＧＰＵは、画像内の選択されたごく一部のピクセルを処理する必要がありうる。
【００１５】
[0024]  ＧＰＵの並列処理機能は、多くの例ではＧＰＵが画像内のすべてのピクセルを処理しうるため、固定データレート処理によく適している。換言すると、固定データレート処理は、ＧＰＵが処理すべきピクセル数が各処理パスにおいて一般的に固定である例とみなされうる。これに応じて、ＧＰＵは、固定データレート処理用に設計されうる。しかしながら、そのような固定データレート処理は、画像内のすべてのピクセルというよりはむしろ、画像内のピクセルのうちの選択されたごく一部が処理されるべきである場合、効率的な処理を促進しない可能性がある。例えば、特定のグラフィックアプリケーションについて、３０７，２００ピクセルのうちの３０７２ピクセルだけが処理される必要がある、と想定する。この例において、固定データレート処理のため、ＧＰＵは、例えば、３，７０２ピクセルなどの、選択されたごく一部のピクセルというよりはむしろ、３０７，２００ピクセルをすべて処理しうる。
【００１６】
[0025]  本開示は、例えば、可変データレート処理を提供するために、選択されたごく一部のピクセル（すなわち、画像内のすべてのピクセルよりも少ないピクセルのサブセット）だけが処理される必要がある場合であっても、ＧＰＵがその固定データレート処理構造および機能性を効率的に利用することを可能にするピクセル値処理ユニットを説明する。ピクセル値処理ユニットは、ピクセル値圧縮ユニットと呼ばれうる。ピクセル値圧縮ユニット、例えば、ピクセル値処理ユニットは、ＧＰＵに結合されており、ＧＰＵから出力データストリームを受信しうる。ＧＰＵからの出力データストリームは、さらなる処理を要求しうるピクセルについてのピクセル値を含み、さらなる処理を要求しない可能性のあるピクセルについてのピクセル値を含みうる。一例として、ＧＰＵが、下に述べられるようにＳＩＦＴ（Spatial Invariant Feature Transform）を実現した場合、さらなる処理を要求しない可能性のあるピクセルについてのピクセル値は、ヌル値でありうる。
【００１７】
[0026]  ピクセル圧縮ユニットは、どのピクセル値が、さらなる処理を要求しうるピクセルについてのものであり、どのピクセル値が、さらなる処理を要求しない可能性のあるピクセルについてのものであるかを決定しうる。例えば、ピクセル値圧縮ユニットは、どのピクセル値が、さらなる処理を要求しうるピクセルについてのものであり、どのピクセル値が、さらなる処理を要求しない可能性のあるピクセルについてのものであるかを決定するために、色値（color value）または座標値（coordinate value）を評価しうる。この決定に基づいて、ピクセル値圧縮ユニットは、さらなる処理に要求されうるピクセルについてのピクセル値を、２つの例として、フレームバッファまたはディスプレイバッファのようなバッファに記憶することができ、さらなる処理に要求されない可能性のあるピクセルについてのピクセル値を、フレームバッファまたはディスプレイバッファに記憶しないことができる。例えば、ピクセル値圧縮ユニットは、ＧＰＵによるさらなる処理を要求するピクセルのピクセル値をバッファに記憶し、ＧＰＵによるさらなる処理を要求しないピクセルを破棄しうる。
【００１８】
[0027]  次に、ＧＰＵは、さらなる処理を要求しないピクセルについてのピクセル値を含むすべてのピクセル値というよりはむしろ、さらなる処理を要求するピクセルについてのピクセル値を検索し取得（retrieve）しうる。この方法において、ＧＰＵは、さらなる処理を要求しないピクセルの処理に計算リソースを浪費することなく、さらなる処理を要求するピクセルを処理しうる。換言すると、ピクセル値圧縮ユニットにより、ＧＰＵが処理する必要のあるピクセル数が動的に減らされるため、ＧＰＵは、その固定データレート処理を、すべてのピクセルについてのピクセル値というよりはむしろ、選択されたごく一部のピクセルについてのピクセル値に対して利用しうる。
【００１９】
[0028]  図１は、ピクセル値記憶システム１０におけるグラフィック処理ユニット（ＧＰＵ）１２を示すブロック図である。ピクセル値記憶システム１０は、図６により詳細に示されているように、デバイスの一部でありうる。ピクセル値記憶システム１０は、ＧＰＵ １２、ピクセル値処理ユニット１６、およびバッファ１８を含みうる。ピクセル値処理ユニット１６は、ピクセル値圧縮ユニットと呼ばれうる。バッファ１８の例には、フレームバッファおよびディスプレイバッファが含まれるがそれらに限定されるわけではない。
【００２０】
[0029]  ＧＰＵ １２は、スクリーン上に画像をレンダリングするように構成されうる。例えば、プロセッサ（示されていない）は、スクリーン上に表示されるべき画像を生成するグラフィックアプリケーションを実行しうる。画像は、複数のピクセルを備えうる。プロセッサは、画像を複数の多角形（polygon）へと分割し、この多角形の頂点について座標を決定しうる。プロセッサはまた、輝度値、色値のような、頂点についての様々な他の属性、または、多角形についての他のそのようなピクセル値を決定しうる。
【００２１】
[0030]  ＧＰＵ １２は、画像内のピクセルについてのピクセル値を受信し、スクリーン上に画像をレンダリングするために、ピクセル値を処理しうる。ＧＰＵ １２の例には、デジタル信号プロセッサ（ＤＳＰ）、汎用マイクロプロセッサ、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブル論理アレイ（ＦＰＧＡ）、または、集積化されたあるいはディスクリートな論理回路の他の等価物が含まれるがそれらに限定されるわけではない。いくつかの例において、ＧＰＵ １２は、ピクセル値を使用して画像をレンダリングするグラフィックスパイプラインを実現しうる。グラフィックスパイプラインは、ＧＰＵ １２上で実行するソフトウェア、ＧＰＵ １２上で実行するファームウェア、ＧＰＵ １２上で形成される１つ以上のハードウェアユニット、または、それらの組み合わせとして実現されうる。
【００２２】
[0031]  グラフィックスパイプラインは、複数のコンポーネントを含みうる。例えば、ＧＰＵ １２のグラフィックスパイプラインは、頂点データを検索して、頂点の座標を別の座標系に変換し、その頂点の光値（light value）を算出する頂点シェーダ（vertex shader）を含みうる。ＧＰＵ １２のグラフィックスパイプラインはまた、多角形内のピクセルの深度（ｚ）を決定するプリミティブアセンブラ（primitive assembler）を含みうる。ＧＰＵ １２のグラフィックスパイプラインは、また、多角形内のピクセルが他のピクセルによって後にオクルード（occlude）される場合、それらのピクセルを、さらなる処理から除去する早期深度テストエンジン（early depth test engine）を含みうる。ＧＰＵ １２のグラフィックスパイプラインはまた、多角形の頂点の色値に基づいて、多角形内のピクセルの色値を補間するピクセルシェーダを含みうる。
【００２３】
[0032]  グラフィックスパイプラインの様々なコンポーネントは、例示を目的として提供されており、制限するものとみなされるべきではない。代替的な例において、グラフィックスパイプラインは、上述されたものよりも多くのコンポーネントを含みうる。グラフィックスパイプラインはまた、上述されたものよりも少ないコンポーネントを含みうる。ＧＰＵ １２の例は、図２Ａおよび図２Ｂでより詳細に示されている。
【００２４】
[0033]  ＧＰＵ １２は、その並列処理を用いて、上の例示的な機能を実行することができる。いくつかの例では、画像内のすべてまたは大半のピクセルが処理される必要があり、それは、比較的大きな数のピクセルでありうる。さらに、並列処理は、ＧＰＵ １２が、ピクセルの処理を迅速かつ効率的に行うことを可能にしうる。ＧＰＵ １２が画像内のすべてまたは大半のピクセルを処理すべき例は、画像内の処理されるべきピクセル数が一般的に固定でありうることから、「固定データレート処理」と呼ばれうる。ＧＰＵ １２が画像内のすべてまたは大半のピクセルを処理することを、大半のグラフィックアプリケーションが要求するため、ＧＰＵ １２は、固定データレート処理を実現するように設計されうる。
【００２５】
[0034]  しかしながら、いくつかのグラフィックアプリケーションでは、ＧＰＵ １２は、画像内のすべてまたは大半のピクセルを処理する必要がない可能性がある。これらのグラフィックアプリケーションの場合、ＧＰＵ １２は、画像内の選択されたごく一部のピクセルを処理する必要がありうる。ＧＰＵ １２が画像内の選択されたごく一部のピクセルを処理すべき例は、処理されるべきピクセル数が固定ではなく変化しうることから、「可変データレート処理」と呼ばれうる。ＧＰＵ １２の固定データレート処理の性質により、ＧＰＵ １２は、可変データレート処理において、それほど効率的ではない可能性がある。例えば、ＧＰＵ １２は、画像内の選択されたごく一部のピクセルが処理されるべき場合であっても、それ自体が、画像内のすべてのピクセルを処理しうる。これに応じて、画像内のすべてまたは大半のピクセルに対して処理を要求せず、選択されたごく一部のピクセルに対して処理を要求するグラフィックアプリケーションの場合、ＧＰＵ １２は、それ自体が、そのようなグラフィックアプリケーションのためにピクセルを処理する際、それほど効率的ではない可能性がある。
【００２６】
[0035]  例えば、Ｄという数のピクセルが存在しており、各ピクセルがＡという数の処理周期を要求する場合、固定レート処理スキームにしたがってＧＰＵ １２により実行されるピクセル−周期の総数は、Ａ×Ｄと表されうる。Ｄという数のピクセルのうちの約１％がさらなる処理を要求しており、これらのピクセルの各々が、Ｂという数の処理周期を要求する場合、ＧＰＵ １２の効率損失は、（０．０１＋１．０１×（Ｂ／Ａ）と表せられうる。この効率損失は、ＧＰＵ １２がさらなる処理を要求するこれらのピクセルだけを処理した場合のＧＰＵ １２の効率性と、ＧＰＵ １２がすべてのピクセルを処理した場合のＧＰＵ １２の効率性との比較である。Ｄという数のピクセルのうちの約１％がランダムかつ控えめ（sparely）に画像内に位置付けされている場合、ＧＰＵ １２の効率損失は、さらに増幅されうる。
【００２７】
[0036]  上で示されたように、ピクセル値圧縮ユニットと呼ばれうるピクセル値処理ユニット１６は、ＧＰＵ １２が、選択されたごく一部のピクセルだけ処理される必要がある場合であっても、その固定データレート処理を効率的に利用することを可能にし、それによって、例えば、可変データレート処理をサポートしうる。ピクセル値処理ユニット１６は、固定機能ハードウェアユニット（fixed function hardware unit）でありうる。ピクセル値処理ユニット１６は、ＧＰＵ １２に結合されており、ＧＰＵ １２から出力ストリーム１４を受信しうる。出力ストリーム１４は、さらなる処理を要求するピクセルのピクセル値だけを含むか、さらなる処理を要求するピクセルおよびさらなる処理を要求しないピクセルの両方についてのピクセル値を含みうる。
【００２８】
[0037]  ピクセル値処理ユニット１６は、出力ストリーム１４内のどのピクセル値が、さらなる処理を要求するピクセルについてのピクセル値であり、出力ストリーム１４内のどのピクセル値が、さらなる処理を要求しないピクセルについてのピクセル値であるかを決定しうる。いくつかの例において、ピクセル値処理ユニット１６は、さらなる処理を要求するピクセルについてのピクセル値をバッファ１８に記憶することができ、さらなる処理を要求しないピクセルについてのピクセル値をバッファ１８に記憶しないことができる。
【００２９】
[0038]  バッファ１８は、記憶ロケーションの２次元のアレイを備えうる。いくつかの例において、バッファ１８内の記憶ロケーションの数は、実質的に、画像を表示するスクリーン上のピクセル数に類似しうる。例えば、スクリーンが６４０×４８０ピクセルを含む場合、バッファ１８は、６４０×４８０個の記憶ロケーションを含みうる。しかしながら、本開示の例は、それらに限定されるものではない。いくつかの例において、バッファ１８内の記憶ロケーションの数は、スクリーン上のピクセル数よりも大きいまたは小さくなりうる。
【００３０】
[0039]  いくつかの例において、ピクセル値処理ユニット１６は、さらなる処理を要求するピクセルについてのピクセル値を、バッファ１８の連続した記憶ロケーション内に記憶しうる。バッファ１８の連続した記憶ロケーションは、連続した行または列、あるいは連続したブロックでありうる。例えば、ピクセル値処理ユニット１６は、プロセッサ（図示されない）からの記憶モード選択を受信しうる。この記憶モード選択は、ピクセル値処理ユニット１６が、さらなる処理を要求するピクセルについてのピクセル値を、バッファ１８の連続した行または列に記憶すべきか、連続したブロックに記憶すべきかを示しうる。
【００３１】
[0040]  ＧＰＵ １２は、さらなる処理のためにバッファ１８に記憶されたピクセル値を検索しうる。例えば、ピクセル処理ユニット１６は、ＧＰＵ １２に、バッファ１８に記憶されたピクセル値の数を示しうる。ＧＰＵ １２は、このインジケーションに基づいて、さらなる処理のために、バッファ１８に記憶されたピクセル値の数を検索しうる。この方法において、ＧＰＵ １２は、さらなる処理を要求しないピクセルについてのピクセル値を不必要に処理せず、さらなる処理を要求するピクセルについての選択されたごく一部のピクセル値を処理しうる。
【００３２】
[0041]  例示を目的として、以下、ピクセル値記憶システム１０の例示的な実現であり、理解を簡単にするために提供される。しかしながら、本開示の態様は、以下の例に限定されるとみなされるべきではない。
【００３３】
[0042]  いくつかの例において、ＧＰＵ １２は、いわゆる視覚探索をサポートする画像ベース計算アプリケーションのような、画像認識アプリケーションで利用されうる。例えば、ＧＰＵ １２は、モバイルデバイスの一部でありうる。ＧＰＵ １２は、製品の画像のような画像を受信して、特徴記述子（feature descriptor）と呼ばれ、画像の特徴を抽出しうる。モバイルデバイスは、この特徴記述子を、ネットワークを通して１つ以上のサーバに送信しうる。１つ以上のサーバは、この特徴記述子を、データベース内の画像の特徴と比較しうる。この比較に基づいて、１つ以上のサーバは、マッチング画像の推定を送信するか、ウェブページのような、画像内に表示されたコンテンツについてのネットワークリンクを送信するか、または他の関連情報を送信しうる。代替的な例において、サーバというよりはむしろモバイルデバイスが、この特徴記述子を、ダウンロードされたデータベース内の画像の特徴と比較して、マッチング画像の推定を見つけうる。
【００３４】
[0043]  画像の特徴を抽出するために、ＧＰＵ １２は、ＳＩＦＴ（Scale Invariant Feature Transform）を実現しうる。ＳＩＦＴは、スケール段階、キーポイントピクセルロケーション段階、およびキーポイントピクセル記述子段階を備える３つの段階を含む。一般的に、ＳＩＦＴは、画像の特徴を識別すること、画像認識に使用される、識別された特徴についての特徴記述子を生成することを含む。識別された特徴は、画像内の関心のある点でありうる。識別された特徴は、より詳細に下に記述されるように、キーポイントピクセルに対応しうる。
【００３５】
[0044]  スケール段階およびキーポイントピクセルロケーション段階において、ＧＰＵ １２は、キーポイントピクセルを識別するために、画像内のありとあらゆる（each and every）ピクセルの処理から開始しうる。これらの段階の場合、ＧＰＵ １２の固定データレート処理は、効率的なピクセル処理を促進しうる。次に、キーポイントピクセル記述子段階の場合、ＧＰＵ １２は、画像内のすべてのピクセルを処理する必要はない場合がある。むしろ、ＧＰＵ １２は、ＳＩＦＴのためのキーポイント特徴記述子を定義するために、画像内の選択されたごく一部のピクセルを処理する必要がありうる。より詳細に示されるように、ピクセル値処理ユニット１６は、キーポイントピクセル記述子段階において、後続の処理に必要とされる、選択されたごく一部のピクセルについてのピクセル値をバッファ１８に記憶することができ、さらなる処理に必要とされない、例えば、特徴記述子のようなキーポイントピクセル記述子を定義するさらなる処理に必要とされないピクセルについてのピクセル値を記憶しないことができる。この方法において、ＧＰＵ １２は、さらなる処理が要求されない可能性のあるピクセルを含むすべてのピクセルを処理する代わりに、さらなる処理を要求し、かつ、画像のすべてのピクセルよりも少ない、これらの選択されたごく一部のピクセルを処理しうる。
【００３６】
[0045]  ＳＩＦＴアルゴリズムにしたがって、スケール段階では、ＧＰＵ １２が、受信された画像のためのスケール空間を生成するために、その画像内のピクセルについてのピクセル値を処理しうる。スケール空間は、画像の複数の処理されたバージョンを含み、画像の処理されたバージョンは、各々、スケーリングされた画像でありうる。一例として、画像の処理されたバージョンは、画像のフィルタリングされたバージョンを含みうる。例えば、ＧＰＵ １２は、６個のローパスフィルタを用いて画像をフィルタリングし、ここで、各フィルタは、異なるローパス帯域幅を有するフィルタである。６個のローパスフィルタを用いて画像をフィルタリングすることによって、ＧＰＵは、例えば、ローパスフィルタ画像１〜ローパスフィルタ画像６などの、６個のローパスフィルタリングされた画像を生成しうる。６個のローパスフィルタの利用は、例示を目的として提供される。代替的な例において、ＧＰＵ １２は、６個よりも多いまたは少ない数のフィルタを利用しうる。
【００３７】
[0046]  別の例として、画像の処理されたバージョンは、画像のフィルタリングかつ空間ダウンダウンプリンされたバージョンを含みうる。例えば、ＧＰＵ １２はまた、いくつかの例において、６個のローパスフィルタリングされた画像の各々を空間ダウンサンプリングしうる。画像の空間サンプリングは、画像内のピクセル数を減らすために、ピクセルをブレンディングすることを含む。例えば、２の因数（factor）だけ空間ダウンサンプリングするために、ＧＰＵ １２は、２つのピクセルを単一のピクセルへとブレンディングするか、低い解像度を有する複数のピクセルへとブレンディングする。この方法において、ＧＰＵ １２は、ピクセルの総数を２の因数だけ減らしうる。
【００３８】
[0047]  ＧＰＵ １２が画像をローパスフィルタリングし、ローパスフィルタリングされた画像をダウンサンプリングする例において、ローパスフィルタリングおよびダウンサンプリングされた画像は、スケーリングされた画像と呼ばれうる。ＧＰＵ １２が画像をローパスフィルタリングし、このローパスフィルタリングされた画像をダウンサンプリングしない例において、ローパスフィルタリングされた画像は、スケーリングされた画像と呼ばれうる。したがって、上の例において、ＧＰＵ １２は、６個のスケーリングされた画像、例えば、スケーリングされた画像１〜スケーリングされた画像６を生成しうる。スケーリングされた画像は、フィルタリングだけがされたバージョン、またはフィルタリングされダウンサンプリングされたバージョンの画像に限定される、とみなされるべきではない。一般的に、ＧＰＵ １２は、他の処理技法を利用して、スケーリングされた画像を生成しうる。
【００３９】
[0048]  ＳＩＦＴアルゴリズムにしたがって、キーポイントピクセルロケーション段階では、ＧＰＵ １２は、スケーリングされた画像のペア間の差分を決定しうる。ＧＰＵ １２は、スケーリングされた画像のペア間の差分に基づいて差分画像（difference image）を生成しうる。ＧＰＵ １２は、ガウス技法（Gaussians technique）の差分以外の技法を利用しうるが、ＧＰＵ １２は、ガウス技法の差分を利用して、スケーリングされた画像のペア間の差分をピクセル単位で決定しうる。例えば、ＧＰＵ １２は、差分画像１を生成するために、スケーリングされた画像１とスケーリングされた画像２との間でのガウスの差分をピクセル単位で決定しうる。ＧＰＵ １２は、差分画像２を生成するために、スケーリングされた画像２とスケーリングされた画像３との間でのガウスの差分をピクセル単位で決定しうる。例えば、ＧＰＵ １２は、差分画像５を生成するために、スケーリングされた画像５とスケーリングされた画像６との間でのガウスの差分をピクセル単位で決定しうる。
【００４０】
[0049]  例えば、差分画像１〜５などの差分画像に基づいて、ＧＰＵ １２は、キーポイントピクセルを識別しうる。一例として、ＧＰＵ １２は、差分画像１内の３×３ピクセルのブロックと、差分画像２および３内の同じ場所に位置づけられたブロックとを選択しうる。次に、ＧＰＵ １２は、差分画像のうちの１つ内のピクセルについての、例えば、輝度（ルーマ）値などのピクセル値を、他のすべてのピクセルのピクセル値と比較しうる。例えば、ＧＰＵ １２は、差分画像２のピクセルの３×３のブロック内の中心ピクセルのルーマ値を、差分画像２のピクセルの３×３のブロック内の他のピクセル、および、差分画像１および３内の同じ場所に位置づけられたブロック内のピクセルのルーマ値と、合計２６回にわたって比較する。中心ピクセルのルーマ値が、３×３のブロックのピクセルの間で最大値または最小値である場合、ＧＰＵ １２は、この中心ピクセルをキーポイントピクセルとして識別しうる。ＧＰＵ １２は、差分画像２内の複数のキーポイントピクセルを識別するために、差分画像２全体にわたる複数の３×３のブロックのピクセルについて、差分画像１、２、および３内のすべてのピクセルに対する比較を反復的に実行しうる。
【００４１】
[0050]  キーポイントピクセルは、ランダムに位置付けられ、差分画像２、３、および４のピクセル内にまばらに（sparsely）配置（populate）されうる。例えば、差分画像２、３、および４内のキーポイントピクセル数は、差分画像２、３、および４内のピクセルの総数の小さい割合でありうる。いくつかの例において、差分画像２、３、および４のキーポイントピクセルは、それぞれ、差分画像２、３、および４のピクセルの総数の１％未満を占めうる。
【００４２】
[0051]  ＧＰＵ １２は、例えば、差分画像２、３、および４など、キーポイントピクセルを含む差分画像に、ピクセル値の出力ストリーム１４をピクセル値処理ユニット１６に送信しうる。ＧＰＵ １２がピクセル値処理ユニット１６に送信する数タイプの出力ストリーム１４の例が複数存在する。一般的に、ＧＰＵ １２は、任意の技法を利用して、出力ストリーム１４内のピクセル値がキーポイントピクセルに属していることを示しうる。一例として、出力ストリーム１４は、キーポイントピクセルについての、差分画像２、３、および４内の座標値の出力ストリームでありうる。別の例として、出力ストリーム１４は、差分画像２、３、および４内のキーポイントピクセルについての、例えば、ルーマ値および／または、赤緑青（ＲＧＢ）値などの色値の出力ストリームでありうる。これらの例において、ＧＰＵ １２は、非キーポイントピクセルについての座標値または色値を出力しないか、非キーポイントピクセルについての座標値または色値に対してヌル値を出力しうる。さらに別の態様において、出力ストリーム１４は、キーポイントピクセルのピクセル値のヒストグラム値を含む出力ストリームでありうる。この例において、ＧＰＵ １２は、非キーポイントピクセルのピクセル値のヒストグラム値を出力しないか、非キーポイントピクセルのヒストグラム値に対してヌル値を出力しうる。
【００４３】
[0052]  この例において、ピクセル値処理ユニット１６は、出力ストリーム１４内の受信されたピクセル値が、キーポイントピクセルについてのものであるか、非キーポイントピクセルについてのものであるかを、例えば、出力ストリーム１４内のピクセル値を評価することによって決定しうる。例えば、ピクセル値がヌル値である場合、ピクセル値処理ユニット１６は、ピクセル値が非キーポイントピクセルについての座標値でないと決定しうる。ピクセル値が非ヌル値である場合、ピクセル値処理ユニット１６は、ピクセル値がキーポイントピクセルについての座標値であると決定しうる。
【００４４】
[0053]  次に、ピクセル値処理ユニット１６は、キーポイントピクセルについてのピクセル値をバッファ１８に記憶することができ、非キーポイントピクセルのピクセル値をバッファ１８に記憶しないこと可能である。この記憶アプローチは、非キーポイントピクセルを、さらなる処理から除外することができ、結果として、ピクセル値圧縮をもたらす。本開示で使用される場合、ピクセル値圧縮は、処理される必要のあるピクセル数の減少を示し、ここで、圧縮後にバッファ１８に残っているピクセル数は、実質的に、原画像のピクセル数よりも少ない。ある例において、ピクセル数は、ＧＰＵ １２による各処理周期の開始時のピクセル数に対して前進的に減らされうる。
【００４５】
[0054]  次に、ＧＰＵ １２は、キーポイント記述子段階などの後続の処理段階のために、バッファ１８に記憶されたキーポイントピクセルについてのピクセル値を検索しうる。キーポイント記述子段階は、キーポイント精緻化（keypoints refinement）および記述子生成を含みうる。キーポイント精緻化は、ＧＰＵ １２が、各キーポイントの近傍にありうる、差分画像内のピクセルの３次元空間勾配を算出しうるアルゴリズムを含みうる。この方法において、ＧＰＵ １２は、ピクセル解像度からサブピクセル解像度へと、各キーポイントの近傍にあるピクセルから座標を補間しうる。記述子生成は、ＧＰＵ １２がキーポイントロケーションにおける主要な空間的勾配を算出しうるアルゴリズム、および、各キーポイントロケーションの周りの３次元エリアについての空間的勾配のヒストグラムを含みうる。
【００４６】
[0055]  画像のピクセル値のヒストグラムとみなされうる空間的勾配のヒストグラムは、キーポイント特徴記述子の一例でありうる。いくつかの例において、ＧＰＵ １２はまた、ピクセル値のヒストグラムをバッファ１８に記憶しうる。例えば、ＧＰＵ １２は、出力ストリーム１４の一部としてピクセル値のヒストグラムをピクセル値処理ユニット１６に送信しうる。ピクセル値処理ユニット１６は、ピクセル値のヒストグラムを閾値と比較しうる。ピクセル値のヒストグラムが閾値を上回る場合、ピクセル値処理ユニット１６は、ピクセル値のそのようなヒストグラムをバッファ１８に記憶しうる。しかしながら、ピクセル値のヒストグラムが閾値を下回る場合、ピクセル値処理ユニット１６は、ピクセル値のそのようなヒストグラムをバッファ１８に記憶しないことができる。
【００４７】
[0056]  いくつかの例において、ピクセル値処理ユニット１６は、ピクセル値がバッファ１８に記憶されているキーポイントピクセルの数をカウントしうる。ピクセル値処理ユニット１６は、ピクセル値がバッファ１８に記憶されているキーポイントピクセルの数を示すカウンタ値をＧＰＵ １２に出力しうる。この方法において、ＧＰＵ １２は、いくつのピクセル値をバッファ１８から検索すべきかを知ることができ、それらのピクセル値のみ検索しうる。より詳細に説明されるように、ピクセル値処理ユニット１６は、バッファ１８の連続した記憶ロケーションに、ピクセル値を記憶しうる。
【００４８】
[0057]  本開示で説明された技法は、いくつかの例において、転送待ち時間、計算周期を増加させることなく、または、同期化を要求することなく、ピクセル値圧縮を可能にしうる。例えば、クロノスグループ（Khronos Group）によって開発されたオープングラフィックライブラリ（ＯｐｅｎＧＬ（登録商標））規格、例えばＯｐｅｎＧＬ ＥＳ ２．０、は、ＧＰＵが、まばらに配置されたキーポイントピクセルについてのロケーションを含むデータマップを中央処理装置（ＣＰＵ）に転送する技法を可能にする。次に、ＣＰＵは、キーポイントピクセルのピクセル値を、かなり小さいサイズの密データマップに圧縮し、後続の処理のために、このデータマップをＧＰＵに転送する。
【００４９】
[0058]  ＯｐｅｎＧＬ ＥＳ ２．０規格で許容されているそのようなアプローチは、ＣＰＵとＧＰＵとの間でのピクセル値の転送の行き来により、データ転送待ち時間を増加させうる。ピクセル値処理ユニット１６は、ピクセル値処理ユニット１６がキーポイントピクセルについてのピクセル値をＧＰＵに転送し戻す必要がない場合があるため、そのような転送待ち時間を減らしうる。また、ＯｐｅｎＧＬ ＥＳ ２．０アプローチにおいて、ＣＰＵは、キーポイントピクセルについてのピクセル値圧縮を実行するために、複数のＣＰＵ計算周期を要求し、それは、非効率的に処理されうる。ピクセル値処理ユニット１６は、任意の計算周期を追加することなく、ピクセル値を圧縮することができる。例えば、ピクセル値処理ユニット１６は、１つの非限定的な例として、単一計算周期内でピクセル値を圧縮することができる。さらに、ＯｐｅｎＧＬ ＥＳ ２．０アプローチにおいて、ＧＰＵおよびＣＰＵは、ＣＰＵがＧＰＵからデータマップを受信する状態になるために同期化を要求し、逆もまた同様である。ピクセル値処理ユニット１６は、ＧＰＵ １２との同期化を要求しないことができる。例えば、ＧＰＵ １２は、その処理を完了させると、ピクセル値処理ユニット１６が出力ストリーム１４を受信する状態にあることを最初に確認せずに、出力ストリーム１４を生成しうる。
【００５０】
[0059]  例えば、いくつかの例において、ピクセル値処理ユニット１６は、本開示に記載された機能のような、制限された機能を実行するように構成されうる。これらの例において、ピクセル値処理ユニット１６は、説明されたもの以外のタスクをスケジューリングするのに必要とされない可能性がある。ピクセル値処理ユニット１６は永久的に出力ストリーム１４を受信する状態にあり、それが出力ストリームを受信することができる特定の時間をスケジューリングするのに必要とされない可能性がある。例えば、ＧＰＵ １２の観点から、ＧＰＵ １２は、それが出力ストリーム１４をバッファ１８に出力していると信じうる。ピクセル値処理ユニット１６は、ピクセル値を圧縮する仲介ユニットとして機能しうる。しかしながら、ＧＰＵ １２は、ピクセル値処理ユニット１６のそのような機能についての知識を有しておらず、それが処理を完了させると、ストリーム１４を出力しうる。
【００５１】
[0060]  本開示で説明されている技法はまた、プログラミング複雑性を増加させることなくピクセル値圧縮を可能にしうる。例えば、クロノスグループによって開発されたオープン計算ランゲージ（ＯｐｅｎＣＬ（登録商標））規格は、ＯｐｅｎＣＬ規格にしたがって定義されたプログラムカーネルを変更するための技法が、キーポイントピクセルについてのピクセル値をシーケンスし、このシーケンスを、フレームバッファ内の連続した記憶ロケーションに出力することを可能にする。
【００５２】
[0061]  ＯｐｅｎＣＬ規格によって提案されたアプローチは、ＧＰＵ上で実行するプログラムカーネルの複雑性を増加させ、そのカーネル間での同期化のために実行オーバヘッドを要求しうる。ピクセル値処理ユニット１６がＧＰＵ １２に外付けの外部ハードウェアでありうるため、ピクセル値処理ユニット１６は、ＧＰＵ １２上で実行するプログラムカーネルの複雑性を増加させることなくピクセル値圧縮することができる。また、ピクセル値処理ユニット１６は、ＧＰＵ １２上で実行するプログラムカーネル間での追加の同期化を要求しないことができる。
【００５３】
[0062]  いくつかの例において、ピクセル値処理ユニット１６は、関連性のあるピクセル値を線形またはブロックの形でバッファ１８に記憶しうる。ピクセル値処理ユニット１６は、ＧＰＵ １２の特定のハードウェアまたはＧＰＵ １２上で実行するソフトウェアに基づいて、ピクセル値を線形またはブロックの形でバッファ１８に記憶しうる。例えば、ＧＰＵ １２が、ＯｐｅｎＧＬ ＥＳ ２．０についてグラフィックスパイプラインを実施するように構成される場合、各ピクセル値は、ピクセル値を表す最大で４つのチャネルを含みうる。この例において、ピクセル値処理ユニット１６は、アプリケーションの必要性に依存して、柔軟性のために４つのチャネルのうちの１つ以上に基づいて、ピクセルを圧縮する。例えば、どのピクセル値がバッファ１８に記憶されるべきかを決定しうる。
【００５４】
[0063]  さらに、前例では、ピクセル値をプログラマブル閾値などの閾値と比較することによって、どのピクセル値がバッファ１８に記憶されるべきかをピクセル処理ユニット１６が決定することについて説明されているが、本開示の態様はそれらに限定されるわけではない。いくつかの別の例において、ピクセル値処理ユニット１６は、そのピクセル値がバッファ１８に記憶されるべきか否かを決定するために、エネルギーに関してピクセル値の２乗、勾配（gradient）に関してプログラマブルな間隔（spacing）のピクセルペアにおける差（difference）、および、ヒストグラム等を含む他の統計値を、プログラマブルな閾値と比較しうる。
【００５５】
[0064]  図２Ａは、図１のＧＰＵ １２の一例をより詳細に示すブロック図である。ＧＰＵ １２は、図２に示されるように、２００８年４月２４日にリリースされ、公に入手可能であるＯｐｅｎＧＬ ＥＳ ２．０規格において説明されているものに類似したグラフィックスパイプラインを実現しうる。図２Ａに示されているように、ＧＰＵ １２は、シェーダコア２０を含む。シェーダコア２０は、１つ以上のハードウェアユニット、ハードウェアユニット上で実行するソフトウェアモジュール、またはそれらの組み合わせとして実現されうる。図２Ａに示されているように、シェーダコア２０は、頂点シェーダ２２、プリミティブアセンブリユニット２４、ラスタライザ２６、フラグメントシェーダ２８、深度ステンシルユニット（depth stencil unit）３０、色ブレンドユニット３２、およびディザユニット（dither unit）３４を含む。一般的に、シェーダコア２０のこれらのユニットは、通常、ＯｐｅｎＧＬ ＥＳ ２．０規格におけるそのようなコンポーネントに起因するものに類似した機能を実行しうる。シェーダコア３６のこれらのユニットは、例示を目的として提供されており、制限するものとみなされるべきではない。シェーダコア３６は、図２Ａに示されたものよりも多いまたは少ない数のユニットを含みうる。
【００５６】
[0065]  ＧＰＵ １２に外付けであるＣＰＵなどのプロセッサ（図示されない）は、スクリーン上に表示されるべき画像を生成しうる。プロセッサは、一例として、画像を、三角形のような多角形でありうる複数のプリミティブに分割するプリミティブ処理ユニットを含みうる。プリミティブ処理ユニットはまた、プリミティブの頂点についての頂点座標、頂点のピクセル値を決定しうる。プリミティブ処理ユニットは、プリミティブの頂点の座標およびピクセル値をＧＰＵ １２に送信しうる。
【００５７】
[0066]  頂点シェーダ２２は、これらの頂点につての光値を、受信されたピクセル値に基づいて算出しうる。プリミティブアセンブリユニット２４は、頂点の座標に基づいて、プリミティブについての一次方程式の係数を計算しうる。ラスタライザ２６は、頂点座標を、画像が表示されるべきスクリーンの座標へと変換する。ラスタライザ２６はまた、プリミティブ内のピクセルの座標を計算しうる。
【００５８】
[0067]  フラグメントシェーダ２８は、プリミティブ内のピクセルについての、色値および深度値（color values and depth values）のようなピクセル値を計算しうる。深度ステンシルユニット３０は、フラグメントシェーダ２８からの深度値を利用して、ピクセルが別のピクセルによってオクルード（occlude）されるか否かを決定し、そのピクセルが完全にオクルードされた場合、さらなる処理からそのピクセルを除去しうる。色ブレンドユニット３２は、異なるピクセルの色を互いに混合（blend）しうる。ディザユニット（dither unit）３４は、処理中の詳細の損失（loss of detail）に対処するためにピクセルの色深度（color depth）を増加させうる。
【００５９】
[0068]  図２Ａの例において、シェーダコア２０のディザユニット３４から結果として生じる出力は、出力ストリーム１４でありうる。この例において、出力ストリーム１４は、ピクセルがスクリーン上に表示されるべき場所の座標、ピクセルの色値、および他のそのようなピクセル値などのピクセル値を含みうる。出力ストリーム１４内のピクセル値は、画像内の連続したピクセルについてのものである。例えば、第１のピクセル値は、画像の左上のコーナに位置付けられたピクセルについてのものであり、第２のピクセル値は、画像の左上のコーナのすぐ右に位置付けられたピクセルについてのものであり、ラスタ方式（raster fashion）で同じように続く。
【００６０】
[0069]  ピクセル値処理ユニット１６は、出力ストリーム１４を受信し、特定のピクセルについてのピクセル値がバッファ１８に記憶されるべきかを決定しうる。例えば、特定のピクセルについての色値がゼロである場合、ピクセル値処理ユニット１４は、そのピクセルについてのピクセル値がバッファ１８に記憶されるべきではないと決定しうる。特定のピクセルについてのピクセル値がバッファ１８に記憶されるべきか否かをピクセル値処理ユニット１６が決定しうる際に用いる他の基準が存在しうる。
【００６１】
[0070]  この決定に基づいて、ピクセル値処理ユニット１６は、バッファ１８に記憶されるべきピクセルについてのピクセル値を記憶しうる。いくつかの例において、ピクセル値処理ユニット１６は、バッファ１８の連続した記憶ロケーションに、ピクセル値を記憶しうる。一例にとして、ピクセル値処理ユニット１６は、バッファ１８の連続した行または列に、ピクセル値を記憶しうる。別の例として、ピクセル値処理ユニット１６は、バッファ１８の連続したブロックに、ピクセル値を記憶しうる。
【００６２】
[0071]  図２Ｂは、図１のＧＰＵ １２の別の例をより詳細に示すブロック図である。図２Ｂに示されているように、ＧＰＵ １２は、タスク分散制御ユニット３６、タスク分散ユニット３８、１つ以上の並列シェーダコア４０Ａ〜４０Ｎ（総称してシェーダコア４０と呼ばれる）、およびタスク統合ユニット（task consolidation unit）４２を含みうる。タスク分散制御ユニット３６、タスク分散ユニット３８、シェーダコア４０、およびタスク統合ユニット４２は、１つ以上のハードウェアユニット、ハードウェアユニット上で実行するソフトウェアモジュール、またはそれらの組み合わせとして実現されうる。
【００６３】
[0072]  いくつかの例において、シェーダコア４０は、実質的に、シェーダコア２０（図２Ａ）に類似しうる。例えば、シェーダコア４０の１つ１つは、グラフィックスパイプラインにおけるシェーダコア２０のユニットのうちの１つ以上を実現しうる。別の例において、シェーダコア４０は、上述されたＳＩＦＴ（Scale Invariant Feature Transform）のような他の機能を実現しうる。いくつかの他の例において、シェーダコア４０は、図２Ａに示されたグラフィックスパイプラインを実現し、ＳＩＦＴのような他の機能を実行しうる。
【００６４】
[0073]  図２Ｂの例において、ＣＰＵのようなプロセッサ（示されない）は、画像をブロックに分割し、各ブロック上で実行されるべきタスクを割り当てうる。プロセッサは、タスク分散制御ユニット３６にタスク情報を送信しうる。タスク情報は、画像内のブロックの座標のような、プロセッサが画像をブロックへと分割したやり方を示す。プロセッサはまた、タスク分散ユニット３８にタスクデータを送信しうる。タスクデータは、画像の各ブロック上で、どのタスクが実行されるべきかを示しうる。
【００６５】
[0074]  タスク分散ユニット３８は、タスク分散制御ユニット３６からタスク情報を受信しうる。プロセッサからのタスクデータおよびタスク分散制御ユニット３６からのタスク情報に基づいて、タスク分散ユニット３８は、シェーダコア４０の１つ１つを、タスクを実行するために割り当てる。例えば、実行されるべきタスクのタイプと、そのタスクを実行するシェーダコア４０の１つ１つの利用性とに基づいて、タスク分散ユニット３８は、様々なシェーダコア４０がタスクを実行する時間をスケジューリングしうる。
【００６６】
[0075]  シェーダコア４０の１つ１つは、それらの割り当てられたタスクを実行し、それらのタスクの結果をタスク統合ユニット４２に出力しうる。シェーダコア４０の１つ１つからの結果は、画像内の様々なピクセルについてのピクセル値でありうる。タスク統合ユニット４２は、シェーダコア４０によって実行されるタスクの結果を単一の出力ストリームへと統合しうる。タスク統合ユニット４２によって生成された単一の出力ストリームは、出力ストリーム１４でありうる。例えば、上述されたように、出力ストリーム１４は、ピクセルの座標、ルーマ値、色値のようなピクセル値、および他のそのようなピクセル値を含みうる。
【００６７】
[0076]  図２Ａに示された例と同様に、ピクセル値処理ユニット１６は、出力ストリーム１４を受信し、特定のピクセルについてのピクセル値がバッファ１８に記憶されるべきか否かを決定しうる。この決定に基づいて、いくつかの例では、ピクセル値処理ユニット１６が、バッファ１８の連続した行または列か、バッファ１８の連続したブロックのいずれかに記憶されるべきピクセル値を記憶しうる。
【００６８】
[0077]  図３は、図１のピクセル値処理ユニット１６の例をより詳細に示すブロック図である。いくつかの例において、ピクセル値処理ユニット１６は、固定機能ハードウェアユニットであり、圧縮ユニットと呼ばれうる。「固定機能ハードウェアユニット（fixed-function hardware unit）」という表現は、ピクセル値処理ユニット１６が、他の機能ではなく、ピクセル値処理ユニット１６に起因した機能を実行するように設計されうることを意味する。ピクセル値処理ユニット１６は、ＧＰＵ １２およびバッファ１８の外側に存在する独立型の集積論理回路またはディスクリート論理回路として、１つ以上の回路または論理エレメントで実現されうる。例えば、ピクセル値処理ユニット１６は、デジタル信号プロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、または、ＧＰＵ １２およびバッファ１８に外付けであり、かつ両方に結合された他の等価的な集積論理回路またはディスクリート論理回路でありうる。ピクセル値処理ユニット１６が、ＤＳＰ、ＡＳＩＣ、またはＦＰＧＡであるいくつかの例において、ＤＳＰ、ＡＳＩＣ、またはＦＰＧＡは、ピクセル値処理ユニット１６に起因する機能を実行するように設計されており、その他の機能を実行するようには設計されていない。
【００６９】
[0078]  ピクセル値処理ユニット１６は、ピクセル値プロセッサ４４、カウンタ４６、およびアドレス生成器４８を含みうる。ピクセル値プロセッサ４４は、ＧＰＵ １２からの出力ストリーム１４を受信しうる。説明されるように、出力ストリーム１４は、ＧＰＵ １２によって処理された画像内のピクセルについてのピクセル値を含みうる。一例として、ピクセル値は、上述されたように、ＧＰＵ １２がＳＩＦＴを実現する例において、キーポイントピクセルについて、またはキーポイントピクセルと非キーポイントピクセルの両方についてのピクセル値でありうる。別の例として、ピクセル値は、グラフィックスパイプラインで処理されたピクセルについてのものでありうる。出力ストリーム１４内のピクセルについてのピクセル値は、ＧＰＵ １２によって処理された画像にまばらかつランダムに位置付けされたピクセルについてのものでありうる。
【００７０】
[0079]  出力ストリーム１４には様々なタイプのピクセル値が存在しうる。例えば、ピクセル値は、スクリーン上に表示されるべき画像内のピクセルの座標値を含みうる。ピクセル値はまた、ピクセルの色値を含みうる。いくつかの例において、ピクセル値は、アプリケーションの必要性に依存して、座標、エネルギ値、等でありうる。また、いくつかの例では、ピクセル値は、上述されたように、キーポイント特徴記述子の一部として算出されたピクセル値のヒストグラムでありうる。
【００７１】
[0080]  ピクセル値プロセッサ４４は、出力ストリーム１４を受信し、ピクセルについての受信されたピクセル値ごとに、各ピクセルについてのピクセル値を保持するか破棄するかを決定しうる。ピクセルについてのピクセル値が保持されるべきである場合、ピクセル値プロセッサ４４は、記憶するために、保持されたピクセルのピクセル値をバッファ１８に送信しうる。下で説明されるように、ピクセル値プロセッサ４４は、保持されたピクセルについてのピクセル値を、アドレス生成器４８によって決定されたバッファ１８内のロケーションに記憶しうる。いくつかの例において、ピクセルについてのピクセル値が破棄されるべきであるとピクセル値プロセッサ４４が決定すると、ピクセル値プロセッサ４４は、これらのピクセル値をさらなる処理から除去しうる。
【００７２】
[0081]  ピクセル値プロセッサ４４は、様々な基準を利用して、ピクセルについてのピクセル値を保持するか破棄するか決定しうる。例えば、ＳＩＦＴにおいて、ピクセル値プロセッサ４４は、キーポイントピクセルについてのピクセル値をバッファ１８に記憶することができ、かつ、非キーポイントピクセルについてのピクセル値をバッファ１８に記憶しないことができる。ＳＩＦＴにおいて、非キーポイントピクセルの場合、座標値または色値を含むピクセル値は、ＧＰＵ １２の処理に基づいて、ヌル値またはゼロ値であり、キーポイントピクセルの場合、ヌル値またはゼロ値以外の値でありうる。この例において、ピクセル値プロセッサ４４は、ピクセルについての受信されたピクセル値がヌル値またはゼロ値である場合、そのピクセルが非キーポイントピクセルであると決定し、ピクセルについての受信されたピクセル値がヌル値またはゼロ値でない場合、そのピクセルがキーポイントピクセルであると決定しうる。
【００７３】
[0082]  別の例において、ピクセル値プロセッサ４４は、ピクセルの色値の輝度を決定しうる。そのピクセルの輝度が閾値輝度よりも高い場合、ピクセル値プロセッサ４４は、そのピクセルについてのピクセル値が記憶されるべきであると決定しうる。そのピクセルの輝度が閾値輝度以下である場合、ピクセル値プロセッサ４４は、そのピクセルについてのピクセル値が記憶されるべきでないと決定しうる。
【００７４】
[0083]  ＳＩＦＴの例またはグラフィックスパイプラインの例のいずれにおいても、出力ストリーム１４は、ピクセルについてのピクセル値を既定の順序で含みうる。一例として、第１の受信されたピクセル値は、ＧＰＵ １２によって処理された画像の左上のピクセルについてのピクセル値であり、第２の受信されたピクセル値は、左上のピクセルの右にあるピクセルについてのピクセル値でありうる。この例において、ピクセル値プロセッサ４４は、どのピクセル値がどのピクセルに属するかを、ピクセル値処理ユニット１６が出力ストリーム１４内のピクセル値を受信した順序に基づいて決定しうる。この方法において、ピクセル値プロセッサ４４は、どのピクセルがさらなる処理のために保持されており、どのピクセルがさらなる処理から破棄されるか、についての知識を有しうる。
【００７５】
[0084]  ピクセルについてのピクセル値をバッファ１８に記憶するかピクセル値を記憶しないかを決定するためにピクセル値プロセッサ４４によって利用される上の例示的な技法は、例示を目的として提供されており、限定となされるべきではない。ピクセル値プロセッサ４４は、ピクセルについてのピクセル値をバッファに記憶するかピクセル値を記憶しないかを決定するために、上述された例に加えて、または、それらを除いて、基準を利用しうる。
【００７６】
[0085]  特定のピクセルについてのピクセル値がバッファ１８に記憶されるべきであると決定した後、ピクセル値プロセッサ４４は、記憶するために、そのピクセルについてのピクセル値をフレーム１８に送信しうる、すなわち、バッファ１８にピクセル値を書き込む。加えて、アドレス生成器４８は、そのピクセルについてのピクセル値が記憶されるべきバッファ１８内のロケーションを決定しうる。
【００７７】
[0086]  図４Ｂ〜４Ｄでさらに詳細に示されているように、バッファ１８は、記憶ロケーションの二次元アレイでありうる。いくつかの例において、バッファ１８内の記憶ロケーションの数は、実質的に、スクリーン上のピクセル数に類似しうる。例えば、スクリーンが６４０×４８０ピクセルを含む場合、バッファ１８は、６４０×４８０個の記憶ロケーションを含みうる。しかしながら、いくつかの例では、バッファ１８内の記憶ロケーションの数は、スクリーン上のピクセル数よりも大きいまたは小さくなりうる。
【００７８】
[0087]  アドレス生成器４８は、バッファ１８内の記憶アドレスが連続となるように、記憶アドレスを生成しうる。アドレス生成器４８は、記憶モード選択に基づいて、少なくとも２つの異なるモードで動作しうる。記憶モード選択は、アドレス生成器４８が線形モードで動作すべきかブロックモードで動作すべきかを示しうる。
【００７９】
[0088]  線形モードにおいて、アドレス生成器４８は、バッファ１８内の連続した行または列に記憶されるべきピクセルについてのピクセル値のために、バッファ１８内の記憶ロケーションについてのアドレスを生成しうる。ブロックモードにおいて、アドレス生成器４８は、バッファ１８内の連続したブロックに記憶されるべきピクセルについてのピクセル値のために、バッファ１８内の記憶ロケーションについてのアドレスを生成しうる。例えば、バッファ１８は、８×８個の記憶ロケーションを備えると想定する。この例において、バッファ１８は、４つの４×４個の連続した記憶ロケーションへと分割されうる。ブロックモードにおいて、アドレス生成器４８は、ピクセルのアドレスを生成し、そのピクセル値は、第１の１６個のピクセル値が記憶ロケーションの第１の４×４個のブロックに記憶され、第２の１６個のピクセル値が記憶ロケーションの第２の４×４個のブロックに記憶されるように、記憶されるべきである。
【００８０】
[0089]  ピクセル値プロセッサ４４は、アドレス生成器４８によって定義されたアドレスのバッファ１８内に、例えば、３つの例として、座標値、色値、ヒストグラム値など、ピクセルについてのピクセル値を記憶しうる。例えば、第１のピクセルについて、アドレス生成器４８は、バッファ１８内のアドレスを（１、１）となるように生成しうる。ピクセル値プロセッサ４４は、バッファ１８内のロケーション（１，１）に第１のピクセルについてのピクセル値を記憶しうる。第２のピクセルについて、アドレス生成器４８は、バッファ１８内のアドレスを（１，２）となるように生成しうる。ピクセル値プロセッサ４４は、バッファ１８のロケーション（１，２）に第２のピクセルについてのピクセル値を記憶しうる。
【００８１】
[0090]  図３に示されるように、ピクセル値処理ユニット１６はまた、カウンタ４６を含みうる。カウンタ４６は、ピクセル値がバッファ１８に記憶されているピクセル数をカウントしうる。例えば、ＧＰＵ １２が、ＳＩＦＴをサポートするために、上述されたように、例えば、差分画像２、３、および４などの差分画像ごとに特徴記述子処理を実現する場合、カウンタ４６は、バッファ１８に記憶されたピクセル数をカウントしうる。
【００８２】
[0091]  カウンタ４６は、ピクセル値がバッファ１８に記憶されているピクセル数をＧＰＵ １２に送信しうる。カウンタ４６のカウントに基づいて、ＧＰＵ １２は、いくつのピクセル値がバッファ１８から検索されるべきかについての知識を有しうる。いくつかの例において、第１の処理パスの場合、ＧＰＵ １２は、バッファ１８の左上の記憶ロケーションからピクセル値を検索しており、カウンタ４６によって示されたピクセル値の数を検索するためにラスタ方式で移動しうる。ＧＰＵ １２は、バッファ１８内のどの記憶ロケーションが、ＧＰＵ １２が第１のパスでデータを検索した最後の記憶ロケーションであったかについて知りうる。次に、後続のパスの場合、ＧＰＵ １２は、バッファ１８内の次の記憶ロケーションからピクセル値を検索し取得しうる。
【００８３】
[0092]  この方法で、ＧＰＵ １２は、可変データレート処理についてさえも、その固定データレート処理を効率的に利用することとなる。例えば、ピクセル値処理ユニット１６がない場合、すべてのピクセルがさらなる処理に要求されるわけではないにもかかわらず、ＧＰＵ １２は、バッファ１８内の１つ１つのピクセルについてのピクセル値を記憶するだろう。次に、さらなる処理について、ＧＰＵ １２は、記憶されたピクセル値をすべて検索し、各ピクセル値を評価し、さらなる処理が必要であるか否かを決定するだろう。すべてのピクセルのそのような評価は、計算的に非効率的でありうる。例えば、１％未満のピクセルがさらなる処理を要求する場合、ＧＰＵ １２は、さらなる処理を要求しないピクセルのうち９９％について計算リソースを浪費しうる。
【００８４】
[0093]  ピクセル値処理ユニット１６がＧＰＵ １２とバッファ１８との間に結合される場合、さらなる処理に要求されないピクセルは、バッファ１８に記憶されないことができる。その代わりとして、ピクセル値処理ユニット１６は、さらなる処理に要求されないそのようなピクセルを破棄しうる。カウンタ４６は、いくつのピクセル値を検索するかを、ＧＰＵ １２に示し、次に、ＧＰＵ １２は、カウンタ４６によって示されたピクセル値の数を検索するだろう。この方法で、ＧＰＵ １２は、さらなる処理を要求しないピクセルについてのピクセル値を評価することで計算リソースを浪費しないことができる。また、ＧＰＵ １２は、カウンタ４６によって示されたピクセル数を処理した後、処理を終了させることができる。
【００８５】
[0094]  ピクセル値処理ユニット１６は、どのピクセル値が保持されるべきであり、どのピクセル値が破棄されるべきであるかを単一の計算周期内で決定することができる。例えば、ピクセル値処理ユニット１６は、ピクセル値のフィードバックを何ら要求しないか、または、プロセッサスケジューリングを要求しうる。例えば、ピクセル値処理ユニット１６は、記憶されるべき、出力ストリーム１４内のピクセル値がピクセル値処理ユニット１６とＧＰＵ １２との同期化なくＧＰＵ １２からバッファ１８に単一のパスで送り込む（feed through）ことを可能にしうる、あるいは、ピクセル値の複数の処理を要求することを可能にしうる。
【００８６】
[0095]  さらに、ピクセル値処理ユニット１６は、ＧＰＵ １２が、ＧＰＵ １２上で実行するソフトウェアコードへの大幅な変更なく、その固定データレート処理を可変データレート処理に対して利用することを可能にしうる。例えば、ＧＰＵ １２上で実行するソフトウェアコードを変更してピクセル値圧縮を実行することは複雑であり、ＧＰＵ １２上で実行する異なる命令の間でスケジューリングを要求しうる。ピクセル値処理ユニット１６を用いた場合、ＧＰＵ １２上で実行する命令に対する複雑な変更、または、ＧＰＵ １２上で実行する命令のスケジューリングに対するあらゆる変更は、要求されない。換言すると、ピクセル値処理ユニット１６は、ＧＰＵ １２のプログラミングに透過的であり、ＧＰＵ １２上でゼロのランタイムオーバヘッドを要求し、ＧＰＵ １２と動作するように容易に構成されうる。
【００８７】
[0096]  さらに、ピクセル値処理ユニット１６は、異なるサイズの画像に対して、ピクセル値圧縮をサポートすることができる。ピクセル値処理ユニット１６は、他のアプリケーションにも有益であり、それにより、ＧＰＵ １２の性能がさらに高められうる。
【００８８】
[0097]  本開示で説明された例示的な実現のうちのいくつかにおいて、ＧＰＵ １２は、バッファ１８を反復的にクリアにする必要がない可能性がある。例えば、ＧＰＵ １２が、出力ストリーム１４を生成するためにＳＩＦＴを実現すると、ピクセル値プロセッサ４４は、第１の差分画像からのキーポイントピクセルについてのピクセル値をバッファ１８に記憶しうる。次に、バッファ１８をクリアすることなく、ピクセル値プロセッサ４４は、第２の差分画像からのキーポイントピクセルについてのピクセル値をバッファ１８に記憶しうる。この例において、ＧＰＵ １２は、カウンタ４６のカウントに基づいて、どのキーポイントピクセルが第１の差分画像に属しており、どのキーポイントピクセルが第２の差分画像に属しているかを識別することができる。効率的な電力使用および処理は、バッファ１８がクリアされる必要のある回数を減らすことで促進されうる。
【００８９】
[0098]  図４Ａは、バッファ１８に記憶されるべき画像内のピクセルを示すグラフィック図である。図４Ｂ、４Ｃ、４Ｄは、バッファ１８の一例の記憶ロケーションに記憶されたピクセル値を示すグラフィック図である。図４Ａに示された例において、画像５０は、ＧＰＵ １２によって処理された画像であり、（０，０）に位置付けられたピクセルから（７，７）に位置付けられたピクセルまでの６４ピクセルを含みうる。この例において、画像５０が表示されるべきスクリーンもまた６４ピクセルを含んでいると想定する。
【００９０】
[0099]  図４Ａにおいて、グレースケールのピクセルは、バッファ１８に記憶されるべきピクセルである。例えば、画像５０の（１，１）に位置付けられたピクセルについてのピクセル値は１であり、画像５０の（６，２）に位置付けられたピクセルについてのピクセル値は２であり、画像５０の（５，４）に位置付けられたピクセルについてのピクセル値は３であり、画像５０の（０，７）に位置付けられたピクセルについてのピクセル値は４でありうる。他のすべてのピクセルについてのピクセル値はヌル値でありうる。
【００９１】
[00100]  ピクセル値処理ユニット１６は、出力ストリーム１４の形態で画像５０のピクセル値を受信しうる。この例において、出力ストリーム１４内の第１のピクセル値は、画像５０の（０，０）に位置付けられたピクセルについてのピクセル値でありうる。出力ストリーム１４内の第２のピクセル値は、画像５０の（１，０）に位置付けられたピクセルについてのピクセル値でありうる。この例において、（７，０）に位置付けられたピクセルの後のピクセルについてのピクセル値は、（１，０）に位置付けられたピクセルについてのピクセル値でありうる。
【００９２】
[00101]  この例において、（１，１）、（６，２）、（５，４）、（０，７）に位置付けられたピクセルについてのピクセル値がヌル値でなく、その他すべてのピクセルについてのピクセル値がヌル値であることから、ピクセル値プロセッサ４４は、これらのピクセルについてのピクセル値のみがバッファ１８に記憶されるべきであることを決定しうる。また、この例において、ピクセルについてのピクセル値が記憶されるべきであるとピクセル値プロセッサ４４が決定した後、カウンタ４６はそのカウンタをインクリメントしうる。この例において、出力ストリーム１４の終わりに、カウンタ４６は、バッファ１８がこのパスで４ピクセル記憶したことをＧＰＵ １２に示しうる。この方法で、ＧＰＵ １２は、後続の処理のために、いくつのピクセル値をバッファ１８から検索すべきかについての知識を有しうる。
【００９３】
[00102]  バッファ１８に記憶されるべきピクセル値について、アドレス生成器４８は、バッファ１８内の、ピクセル値が記憶されるべきロケーションを決定しうる。上述されたように、アドレス生成器４８は、アドレス生成器４８が線形モード（linear mode）で動作しているかブロックモード（block mode）で動作しているかに基づいて、ピクセル値が記憶されるべきアドレスを決定しうる。いずれの動作モードにおいても、カウンタ４６は、ピクセル値がバッファ１８に記憶されているピクセル数をカウントしうる。
【００９４】
[00103]  図４Ｂおよび４Ｃは、アドレス生成器４８が線形モードで動作している場合のバッファ１８へのピクセル値の記憶を示す。例えば、線形モードにおいて、アドレス生成器４８は、バッファ１８の列または行内の連続した記憶ロケーションについて、バッファ１８内にアドレスを生成しうる。例えば、図４Ｂの例において、アドレス生成器４８は、行Ｒ１内の連続した記憶ロケーションに記憶されるべきピクセル値についてのアドレスを生成する。例えば、図４Ｃの例において、アドレス生成器４８は、列Ｃ１内の連続した記憶ロケーションに記憶されるべきピクセル値についてのアドレスを生成する。ピクセル値プロセッサ４４は、アドレス生成器４８によって生成されたアドレスに基づいて、連続した行または列にピクセル値を記憶しうる。
【００９５】
[00104]  図４Ｄは、アドレス生成器４８がブロックモードで動作している場合のバッファ１８へのピクセル値の記憶を示す。ブロックモードにおいて、バッファ１８は、少なくとも１つの行および少なくとも１つの行を各々が含む複数のブロックに分割されているとみなされうる。例えば、図４Ｄの例において、バッファ１８は、１６個のブロックに分割されることができ、各ブロックは２×２個の記憶ロケーションを含む。この例において、アドレス生成器４８は、最初の４つのピクセル値を記憶するために、行Ｒ１およびＲ２からなる最初の２つの記憶ロケーション、および、列Ｃ１およびＣ２からなる最初の２つの記憶ロケーションを含む記憶ロケーションについてのアドレスを生成しうる。図４Ｄで示されるように、ピクセル値プロセッサ４４は、行Ｒ１および行Ｒ２からなる最初の２つの記憶ロケーションと、列Ｃ１および列Ｃ２からなる最初の２つの記憶ロケーションとを含むバッファ１８の第１のブロック内のピクセル値を記憶しうる。
【００９６】
[00105]  図５は、本開示の態様を実現するように構成されうるデバイス５２を示すブロック図である。デバイス５２の例には、無線通信デバイス、モバイル無線電話、携帯情報端末（ＰＤＡ）、ビデオディスプレイに結合されたビデオゲーミングコンソール、モバイルビデオ会議ユニット、ラップトップコンピュータ、デスクトップコンピュータ、タブレットコンピュータ、テレビジョンセットトップボックス、統合メディア復号器を備えたテレビジョン、デジタルメディアプレーヤ、ポータブルゲーミングデバイス、等、が含まれるが、それらに限定されるわけではない。デバイス５２は、グラフィック処理ユニット（ＧＰＵ）１２、ピクセル値処理ユニット１６、バッファ１８、プロセッサ５４、スクリーン５６、記憶デバイス５８、トランシーバモジュール６０、ユーザインターフェース６２、およびカメラ６４を含みうる。
【００９７】
[00106]  デバイス５２は、明確にする目的で図５に示されていな追加のモジュールまたはユニットを含みうる。例えば、デバイス５２は、デバイス５２がモバイル無線電話である例では電話通信を、デバイス５２がメディアプレーヤである場合にはスピーカを実現する（effectuate）ために、スピーカおよびマイクロフォンを含み、それらは、いずれも図５には示されていない。さらに、デバイス５２に示される様々なモジュールおよびユニットは、必ずしも、デバイス５２のすべての例で必要なわけではない。例えば、スクリーン５６およびユーザインターフェース６２は、いくつかの例において、デバイス５２に外付けでありうる。さらに、いくつかの例において、カメラ６４は必要とされないか、デバイス５２に外付けでありうる。
【００９８】
[00107]  図５のＧＰＵ １２、ピクセル値処理ユニット１６、およびバッファ１８は、実質的に、図１〜４に示されたＧＰＵ １２、ピクセル値処理ユニット１６、およびバッファ１８に類似しうる。例えば、図５のＧＰＵ １２、ピクセル値処理ユニット１６、およびバッファ１８は、図１〜４について上述されたものに実質的に類似した機能を実行しうる。
【００９９】
[00108]  プロセッサ５４は、１つ以上のアプリケーションを実行しうる。プロセッサ５４によって実行されるアプリケーションのいくつかの例には、ウェブブラウザ、電子メールアプリケーション、スプレッドシート、ビデオゲーム、または、表示用の可視コンテンツを生成する他のアプリケーションが含まれるが、それらに限定されるわけではない。プロセッサ５４によって実行されるこれらアプリケーションの別の例には、画像認識アプリケーションが含まれる。
【０１００】
[00109]  例えば、デバイス５２のユーザは、カメラ６４を用いて、画像のピクチャを撮りうる。次に、ユーザは、プロセッサ５４で画像認識アプリケーションを実行しうる。プロセッサ５４は、カメラ６４によって撮られた画像をＧＰＵ １２に提供し、この画像から特徴を抽出するために、ＧＰＵ １２に対して、ＳＩＦＴを実行させる。次に、プロセッサ５４は、トランシーバモジュール６０に対して、抽出された特徴を１つ以上のサーバに送信させうる。１つ以上のサーバは、抽出された特徴を、データベース内の画像の特徴と比較しうる。
【０１０１】
[00110]  この比較に基づいて、１つ以上のサーバは、整合画像の推定を送信するか、画像内に表示されるコンテンツについてのウェブページのようなネットワークリンクをトランシーバモジュール６０に送信し、それは、次に、整合画像またはウェブページの推定値をプロセッサ５４に提供する。代替的な例において、サーバというよりはむしろプロセッサ５４は、抽出された特徴を、ダウンロードされたデータベース内の画像の特徴と比較し、整合画像の推定を見つけうる。次に、プロセッサ５４は、スクリーン５６を介して、整合画像またはウェブページの推定値をユーザに表示しうる。
【０１０２】
[00111]  プロセッサ５４によって実行されるアプリケーションのための命令は、記憶デバイス５８に記憶されうる。いくつかの例において、プロセッサ５４は、トランシーバモジュール６０を介して、１つ以上のアプリケーションをダウンロードしうる。プロセッサ５４は、ユーザインターフェース６２を介して、ユーザによる選択に基づき、１つ以上のアプリケーションを実行しうる。いくつかの例において、プロセッサ５４は、ユーザ対話なく、１つ以上のアプリケーションを実行しうる。
【０１０３】
[00112]  プロセッサ５４はまた、上述されたプロセッサに起因する機能を実行しうる。例えば、プロセッサ５４は、ピクセル値処理ユニット１６の動作モードを選択しうる。例えば、上述されたように、ピクセル値処理ユニット１６のアドレス生成器４８は、連続した行または列、例えば、線形モードであるか、または、連続したブロック、例えば、ブロックモードであるバッファ１８内のロケーションについてのアドレスを生成しうる。プロセッサ５４は、アドレス生成器４８に対して、線形モードまたはブロックモードで動作するように命令しうる。
【０１０４】
[00113]  別の例において、プロセッサ５４は、スクリーン５６に表示されるべき画像を生成しうる。例えば、プロセッサ５４は、それが実行しているアプリケーションに基づいて画像を生成しうる。プロセッサ５４はまた、図２Ａについて上述されように、画像を複数のプリミティブに分割し、プリミティブの頂点の頂点座標と、頂点のピクセル値とを決定するプリミティブ処理ユニットを含みうる。さらに別の例において、プロセッサ５４は、図２Ｂについて上述されたように、画像をブロックに分割し、各ブロック上で実行されるべきタスクを割り当て、タスク情報およびタスクデータをＧＰＵ １２に送信しうる。
【０１０５】
[00114]  プロセッサ５４の例には、ＤＳＰ、汎用マイクロプロセッサ、ＡＳＩＣ、ＦＰＧＡ、または、ディスクリート論理回路に組み込まれた他の等価物が含まれるがそれらに限定されるわけではない。記憶デバイス５８は、１つ以上のコンピュータ読取可能な記憶媒体を備えうる。記憶デバイス５８の例には、ランダムアクセスメモリ（ＲＡＭ）、読取専用メモリ（ＲＯＭ）、電気的に消去可能なプログラマブル読取専用メモリ（ＥＥＰＲＯＭ）、ＣＤ−ＲＯＭまたは他の光学ディスク記憶媒体、磁気ディスク記憶媒体または他の磁気記憶デバイス、フラッシュメモリ、あるいは命令またはデータ構造の形態で所望のプログラムコードを搬送または格納するために使用されることができ、コンピュータまたはプロセッサによってアクセスされうる任意の他の媒体が含まれるが、それらに限定されるわけではない。
【０１０６】
[00115]  いくつかの態様において、記憶デバイス５８は、本明細書において、プロセッサ５４および／またはピクセル値処理ユニット１６に対して、プロセッサ５４およびピクセル値処理ユニット１６に起因する機能を実行させる命令を含みうる。それに応じて、記憶デバイス５８は、ピクセル値処理ユニット１６に対して様々な機能を実行させる命令を備えたコンピュータ読取可能な記憶媒体でありうる。
【０１０７】
[00116]  記憶デバイス５８は、いくつかの例において、非一時的な記憶媒体とみなされうる。「非一時的（non-transitory）」という用語は、記憶媒体がキャリア波または伝播信号に組み込まれうることを示しうる。しかしながら、「非一時的な」という用語は、記憶デバイス５８が可動でないことを意味すると解釈されるべきではない。一例として、記憶デバイス５８は、デバイス５２から外され、別のデバイスに移動されうる。別の例として、実質的に、記憶デバイス５８に類似した記憶デバイスがデバイス５２に挿入されうる。特定の例において、非一時的な記憶媒体は、ある時間にわたって、変化しうる記憶データを（例えば、ＲＡＭに）記憶しうる。
【０１０８】
[00117]  ユーザインターフェース６２の例には、トラックボール、マウス、キーボード、および他のタイプの入力デバイスが含まれるがそれらに限定されるわけではない。ユーザインターフェース６２はまた、タッチスクリーンであり、スクリーン５６の一部として組み込まれうる。トランシーバモジュール６０は、デバイス５２と別のデバイスまたはネットワークとの間での無線または有線通信を可能にする回路を含みうる。トランシーバモジュール６０は、変調器、復調器、増幅器、および無線または有線通信のための他のそのような回路を含みうる。カメラ６４は、画像を撮ることのできる任意のタイプのカメラでありうる。カメラ６４は、デバイス５２内で形成されうるか、または、デバイス５２に外付けでありかつデバイス５２に結合されうる。
【０１０９】
[00118]  スクリーン５６は、液晶ディスプレイ（ＬＣＤ）、ブラウン管（ＣＲＴ）ディスプレイ、有機発光ダイオード（ＯＬＥＤ）ディスプレイ、プラズマディスプレイ、または、他のタイプのディスプレイデバイスを備えうる。スクリーン５６は、２次元（２Ｄ）ピクセルアレイで水平および垂直に配列された複数のピクセルを含む。例えば、スクリーン５６は、水平および垂直に配列された６４０×４８０ピクセルを含みうる。
【０１１０】
[00119]  図６は、ピクセル値処理ユニット１６の例示的な動作を示すフローチャートである。例示を目的としてのみ、図１〜４が参照される。
【０１１１】
[00120]  ピクセル値処理ユニット１６は、ＧＰＵ １２によって処理された画像内の１つ以上のピクセルについてのピクセル値を含む出力ストリームをＧＰＵ １２から受信しうる（６６）。例えば、ＧＰＵ １２は、画像をグラフィック処理して、処理された画像内の１つ以上のピクセルについてのピクセル値を含む出力ストリーム１４を生成しうる。例えば、ＧＰＵ １２は、出力ストリーム１４を生成するために、図２Ａに示されたようなグラフィックスパイプラインを実現しうる。別の例として、ＧＰＵ １２は、上述されたＳＩＦＴを実現しうる。
【０１１２】
[00121]  ＳＩＦＴにおいて、ＧＰＵ １２は、プロセッサ５４からの画像を受信しうる。次に、ＧＰＵ １２は、画像のスケーリングされたバージョンを生成するために、異なるローパス帯域幅を有するローパスフィルタを用いて、受信された画像をローパスフィルタフィルタリングしうる。いくつかの例において、ＧＰＵ １２は、画像をローパスフィルタフィルタリングし、結果として得られた画像をダウンサンプリングして、画像のスケーリングされたバージョンを生成しうる。
【０１１３】
[00122]  次に、ＧＰＵ １２は、画像のスケーリングされたバージョン内のキーポイントピクセルを識別しうる。例えば、ＧＰＵ １２は、画像のスケーリングされたバージョンのペア間の差分を決定しうる。次に、ＧＰＵ １２は、差分画像のうちの少なくとも３つの画像の、同じ場所に位置づけられたブロック内のルーマピクセル値が最大ルーマ値または最小ルーマ値のいずれかであるピクセルを位置付けうる。最大ルーマ値または最小ルーマ値を有するピクセルは、キーポイントピクセルでありうる。
【０１１４】
[00123]  ＧＰＵ １２に外付けでありかつＧＰＵ １２に結合されたピクセル値処理ユニット１６は、出力ストリーム１４のピクセル値が、さらなる処理を要求するピクセルについてのものであるか否かを決定しうる（６８）。ピクセル値処理ユニット１６は、出力ストリーム１４内のピクセル値が、さらなる処理を要求するピクセルについてのものであるか否かを決定するために様々な基準を利用しうる（６８）。例えば、ＳＩＦＴにおいて、非キーポイントピクセルについてのピクセル値は、ヌル値またはゼロ値であり、キーポイントピクセルの場合、ヌル値またはゼロ値以外の値でありうる。この例において、ピクセル値処理ユニット１６は、値がヌル値またはゼロ値でないピクセルがさらなる処理を要求するピクセル、例えば、キーポイントピクセルでありうることを決定しうる。いくつかの例では、さらなる処理を要求しないピクセルについて、ピクセル値処理ユニット１６は、これらのピクセルをさらなる処理から除去しうる。
【０１１５】
[00124]  ピクセル値処理ユニット１６はまた、バッファ１８に結合されており、さらなる処理を要求するピクセルについてのピクセル値をバッファ１８に記憶しうる（７０）。例えば、ピクセル値処理ユニット１６は、さらなる処理に要求されないピクセルについてのピクセル値の記憶先について、バッファ１８内にアドレスを生成しうる。次に、ピクセル値処理ユニット１６は、さらなる処理を要求するピクセルについてのピクセル値を、アドレスが、生成されたアドレスに対応する、バッファ１８の記憶ロケーションに記憶しうる。
【０１１６】
[00125]  さらに、いくつかの例において、ピクセル値処理ユニット１６は、ピクセル値が、さらなる処理を要求するピクセルについてのものであるか否かを決定し、ピクセル値処理ユニット１６の単一の計算パスで、そのようなピクセル値を記憶しうる。例えば、ピクセル値処理ユニット１６は、ピクセル値処理ユニット１６を通してフィードバックするために、いずれのピクセル値も要求せず、ＧＰＵ １２からバッファ１８へのダイレクトパスを提供しうる。また、ピクセル値処理ユニット１６は、ＧＰＵ １２との任意の同期化を要求しない可能性がある。例えば、ＧＰＵ １２は、ＧＰＵ １２が出力ストリーム１４の送信間近であることをピクセル値処理ユニット１６に示す必要なく、出力ストリーム１４をピクセル値処理ユニット１６に送信することができる。
【０１１７】
[00126]  図７は、ピクセル値処理ユニット１６の別の例示的な動作を示す別のフローチャートである。例示を目的としてのみ、図３および５が参照される。
【０１１８】
[00127]  ピクセル値処理ユニット１６のアドレス生成器４８は、プロセッサ５４のようなプロセッサから動作モードを受信しうる（７２）。次に、アドレス生成器４８は、受信された動作モードに基づいて、バッファ１８内の、さらなる処理を要求するピクセルについてのピクセル値が記憶されるアドレスを生成しうる。
【０１１９】
[00128]  例えば、受信された動作モードは、線形モードおよびブロックモードのうちの少なくとも１つでありうる。受信された動作モードが線形モードである例において、アドレス生成器４８は、バッファ１８の連続した行または列内でアドレスを生成しうる（７４）。受信された動作モードがブロックモードである例において、アドレス生成器４８は、バッファ１８の連続したブロック内でアドレスを生成しうる（７６）。
【０１２０】
[00129]  図８は、ピクセル値処理ユニット１６の別の例示的な動作を示すフローチャートである。例示を目的としてのみ、図３が参照される。
【０１２１】
[00130]  カウンタ４６は、バッファ１８に記憶されたピクセル数をカウントしうる（７８）。例えば、ピクセルについてのピクセル値が記憶されるべきであるとピクセル値プロセッサ４４が決定した後、カウンタ４６は、ピクセルについてのピクセル値がバッファ１８０に記憶されたことを示すためにカウンタをインクリメントしうる。カウンタ４６は、ピクセル値がバッファ１８に記憶されたすべてのピクセルについて、このステップを反復しうる。
【０１２２】
[00131]  ＧＰＵ １２は、このカウントに基づいて、バッファ１８に記憶されたピクセル値を検索しうる（８０）。例えば、カウンタ４６は、現在の処理パスにおいて、いくつのピクセルがバッファ１８に記憶されたかを示しうる。次に、ＧＰＵ １２は、バッファ１８に記憶されたピクセル数についての知識を有しており、さらなる処理を要求するこれらのピクセルについてのピクセル値のみを検索しうる。
【０１２３】
[00132]  次に、ＧＰＵ １２はさらに、検索されたピクセル値を処理しうる（８２）。この方法において、ＧＰＵ １２は、可変データレート処理に対して、その固定データレート処理を利用することができる。この例では、ＧＰＵ １２がさらなる処理を要求するピクセルについてのピクセル値のみを検索し、さらなる処理を要求しないピクセルについてのピクセル値を検索しないため、ＧＰＵ １２は、さらなる処理を要求しないピクセルについてのピクセル値を評価することで計算リソースを無駄にしないことができる。
【０１２４】
[00133]  １つ以上の例において、説明された機能は、ハードウェア、ソフトウェア、ファームウェア、またはこれらの任意の組み合わせで実現されうる。ソフトウェアにおいて実現される場合、機能は、非一時的なコンピュータ読取可能な媒体を備える製品（article of manufacture）上の１つ以上の命令またはコードとして記憶されうる。コンピュータ読取可能な媒体は、コンピュータデータ記憶媒体を含みうる。データ記憶デバイスは、本開示で説明された技法の実現のための命令、コード、および／またはデータ構造を検索するために１つ以上のコンピュータまたは１つ以上のプロセッサによってアクセスされることができる任意の利用可能な媒体でありうる。限定ではなく例として、そのようなコンピュータ読取可能媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、ＣＤ−ＲＯＭまたは他の光学ディスク記憶媒体、磁気ディスク記憶媒体または他の磁気記憶デバイス、フラッシュメモリ、あるいは、命令またはデータ構造の形態で所望のプログラムコードを搬送または記憶するために使用され、コンピュータによってアクセスされうる任意の他の媒体を備えうる。ディスク（ｄｉｓｋ）とディスク（ｄｉｓｃ）は、本明細書で使用される場合、コンパクトディスク（ＣＤ）、レーザディスク（登録商標）、光ディスク、デジタル多用途ディスク（ＤＶＤ）、フロッピー（登録商標）ディスク、ブルーレイ（登録商標）ディスクを含む。ディスク（ｄｉｓｋ）は通常磁気作用によってデータを再生し、ディスク（ｄｉｓｃ）はレーザーで光学的にデータを再生する。上記の組み合わせもまた、コンピュータ読取可能な媒体の範囲内に含まれるべきである。
【０１２５】
[00134]  コードは、１つ以上のＤＳＰ、汎用マイクロプロセッサ、ＡＳＩＣ、ＦＰＧＡのような１つ以上のプロセッサ、または、他の等価的な集積論理回路またはディスクリート論理回路によって実行されうる。加えて、いくつかの態様において、本明細書で説明された機能性は、専用ハードウェアおよび／またはソフトウェアモジュール内に提供されうる。また、この技法は、１つ以上の回路または論理エレメントにおいて十分に実現されることができる。
【０１２６】
[00135]  本開示の技法は、無線ハンドセット、集積回路（ＩＣ）、またはＩＣのセット（例えば、チップセット）を含む多種多様なデバイスまたは装置で実現されうる。様々なコンポーネント、モジュール、またはユニットは、開示された技法を実行するように構成されたデバイスの機能的な態様を強調するために本明細書で説明されているが、それらは必ずしも、異なるハードウェアユニットによる実現を要求するわけではない。むしろ、上述されたように、様々なユニットが、ハードウェアユニットに組み込まれうるか、適切なソフトウェアおよび／またはファームウェアに併せて、上述された１つ以上のプロセッサを含む相互作用型ハードウェアユニットの集合体に提供されうる。
【０１２７】
[00136]  様々な例が説明されている。これらおよび他の実施形態は、特許請求の範囲の範囲内にある。
以下に、本願出願の当初の特許請求の範囲に記載された発明を付記する。
［Ｃ１］  方法であって、
グラフィック処理ユニット（ＧＰＵ）に結合されており、前記ＧＰＵに外付けのピクセル値処理ユニットを用いて、前記ＧＰＵによって処理された画像内の１つ以上のピクセルについてのピクセル値を含む出力ストリームを前記ＧＰＵから受信することと、
前記ピクセル値処理ユニットを用いて、前記出力ストリーム内の前記ピクセル値が、前記ＧＰＵによるさらなる処理を要求するピクセルについてのものであるか否かを決定することと、
前記ピクセル値処理ユニットに外付けであり、前記ピクセル値処理ユニットに結合されたバッファに、前記ＧＰＵによるさらなる処理を要求する前記ピクセルについての前記ピクセル値を記憶することと
を備えた方法。
［Ｃ２］  前記ピクセル値がさらなる処理を要求するピクセルについてのものであるか否かを決定することは、前記ピクセル値が、さらなる処理を要求するピクセルについてのものであるか否かを、前記ピクセル値処理ユニットと前記ＧＰＵとの間での同期化なく、前記ピクセル値処理ユニットの単一の計算パスで決定することを備え、さらなる処理を要求する前記ピクセルについての前記ピクセル値を記憶することは、さらなる処理を要求する前記ピクセルについての前記ピクセル値を、前記ピクセル値処理ユニットと前記ＧＰＵとの間での同期化なく、前記ピクセル値処理ユニットの前記単一の計算パスで記憶することを備える、Ｃ１に記載の方法。
［Ｃ３］  さらなる処理を要求すると決定された前記ピクセルについての前記ピクセル値のために、前記バッファ内にアドレスを生成することをさらに備え、
さらなる処理を要求する前記ピクセルについての前記ピクセル値を記憶することは、前記バッファの前記生成されたアドレスに、さらなる処理を要求する前記ピクセルについての前記ピクセル値を記憶することを備える、Ｃ１に記載の方法。
［Ｃ４］  動作モードを受信することをさらに備え、
前記バッファ内にアドレスを生成することは、前記受信された動作モードに基づいて、前記バッファ内にアドレスを生成することを備える、Ｃ３に記載の方法。
［Ｃ５］  前記動作モードは、線形モードおよびブロックモードのうちの少なくとも１つを備え、前記バッファ内にアドレスを生成することは、前記動作モードが前記線形モードを備える場合に前記バッファの連続した行または列内にアドレスを生成することを備え、前記バッファ内にアドレスを生成することは、前記動作モードが前記ブロックモードを備える場合に、前記バッファの連続したブロック内にアドレスを生成することを備える、Ｃ４に記載の方法。
［Ｃ６］  ピクセル値が前記バッファに記憶されたピクセル数をカウントすることと、
前記カウントされたピクセル数に基づいて、さらなる処理を要求する前記ピクセルについての前記ピクセル値を検索することと、
さらなる処理を要求する前記ピクセルについての前記検索されたピクセル値を処理することと
をさらに備える、Ｃ１に記載の方法。
［Ｃ７］  前記画像のスケーリングされたバージョンを生成することと、
前記画像の前記スケーリングされたバージョンに基づいて、キーポイントピクセルを識別することと
をさらに備え、
前記出力ストリーム内の前記ピクセル値がさらなる処理を要求するピクセルについてのものであると決定することは、前記出力ストリーム内の前記ピクセル値が、前記識別されたキーポイントピクセルについてのものであると決定することを備え、
さらなる処理を要求する前記ピクセルについての前記ピクセル値を記憶することは、前記識別されたキーポイントピクセルの前記ピクセル値を前記バッファに記憶することを備える、
Ｃ１に記載の方法。
［Ｃ８］  前記ピクセル値は、座標値および色値のうちの少なくとも１つを備える、Ｃ１に記載の方法。
［Ｃ９］  さらなる処理を要求しないピクセルについてのピクセル値を、さらなる処理から除去することをさらに備える、Ｃ１に記載の方法。
［Ｃ１０］  前記ＧＰＵによるさらなる処理を要求しないピクセルについてのピクセル値を前記バッファに記憶しないことをさらに備える、Ｃ１に記載の方法。
［Ｃ１１］  画像を処理して、前記処理された画像内の１つ以上のピクセルについてのピクセル値を含む出力ストリームを生成するように構成されたグラフィック処理ユニット（ＧＰＵ）と、
バッファと
前記ＧＰＵに外付けであり、前記ＧＰＵおよび前記バッファに結合されたピクセル値処理ユニットであって、前記出力ストリーム内の前記ピクセル値が前記ＧＰＵによるさらなる処理を要求するピクセルについてのものであるか否かを決定し、前記ＧＰＵによるさらなる処理を要求する前記ピクセルについての前記ピクセル値を前記バッファに記憶するように構成されたピクセル値処理ユニットと
を備える装置。
［Ｃ１２］  前記ピクセル値処理ユニットは、前記ピクセル値が前記ＧＰＵによるさらなる処理を要求するピクセルについてのものであるか否かを決定し、前記ＧＰＵによるさらなる処理を要求する前記ピクセルについての前記ピクセル値を、前記ピクセル値処理ユニットと前記ＧＰＵとの間で同期化することなく、前記ピクセル値処理ユニットの単一の計算パスで記憶する、Ｃ１１に記載の装置。
［Ｃ１３］  前記ピクセル値処理ユニットは、さらに、さらなる処理を要求すると決定された前記ピクセルについての前記ピクセル値のために前記バッファ内にアドレスを生成するように構成され、前記ピクセル値処理ユニットは、処理を要求する前記ピクセルについての前記ピクセル値を前記バッファの前記生成されたアドレスに記憶する、Ｃ１１に記載の装置。
［Ｃ１４］  前記ピクセル値処理ユニットは、さらに、動作モードを受信するように構成され、前記ピクセル値処理ユニットは、前記受信された動作モードに基づいて、前記バッファ内に前記アドレスを生成する、Ｃ１３に記載の装置。
［Ｃ１５］前記動作モードは、線形モードおよびブロックモードのうちの少なくとも１つを備え、前記ピクセル値処理ユニットは、前記動作モードが前記線形モードを備える場合に、前記バッファの連続した行または列内に前記アドレスを生成し、前記動作モードが前記ブロックモードを備える場合に、前記バッファの連続したブロック内に前記アドレスを生成する、Ｃ１４に記載の装置。
［Ｃ１６］  前記ピクセル値処理ユニットは、さらに、ピクセル値が前記バッファに記憶されたピクセル数をカウントするように構成され、前記ＧＰＵは、前記カウントされたピクセル数に基づいて、さらなる処理を要求する前記ピクセルについての前記ピクセル値を前記バッファから検索し、前記ＧＰＵは、さらなる処理を要求する前記ピクセルについての前記検索されたピクセル値を処理する、Ｃ１１に記載の装置。
［Ｃ１７］  前記ＧＰＵはさらに、前記画像のスケーリングされたバージョンを生成し、前記画像の前記スケーリングされたバージョンに基づいてキーポイントピクセルを識別するように構成され、ピクセル値処理ユニットは、前記出力ストリーム内の前記ピクセル値が前記識別されたキーポイントピクセルについてのものであるか否かを決定し、前記識別されたキーポイントピクセルについての前記ピクセル値を前記バッファに記憶する、Ｃ１１に記載の装置。
［Ｃ１８］  前記ピクセル値は、座標値および色値のうちの少なくとも１つを備える、Ｃ１１に記載の装置。
［Ｃ１９］  前記ピクセル値処理ユニットは、さらなる処理を要求しないピクセルについてのピクセル値を、さらなる処理から除去するようにさらに構成される、Ｃ１１に記載の装置。
［Ｃ２０］  前記ピクセル値処理ユニットは、前記出力ストリーム内の前記ピクセル値がさらなる処理を要求するピクセルについてのものであるかを決定し、さらなる処理を要求する前記ピクセルについての前記ピクセル値を前記バッファに記憶し、さらなる処理を要求すると決定された前記ピクセルについての前記ピクセル値のために、前記バッファ内にアドレスを生成し、ピクセル値が前記バッファに記憶されたピクセル数をカウントするようにのみ構成された固定機能ハードウェアユニットを備える、Ｃ１１に記載の装置。
［Ｃ２１］  前記ピクセル値処理ユニットは、前記ＧＰＵによるさらなる処理を要求しないピクセルについてのピクセル値を前記バッファに記憶しないようにさらに構成される、Ｃ１１に記載の装置。
［Ｃ２２］  前記装置は、無線通信デバイスを備える、Ｃ１１に記載の装置。
［Ｃ２３］  装置であって、
グラフィック処理ユニット（ＧＰＵ）と、
バッファと、
前記ＧＰＵに外付けであり、前記ＧＰＵおよび前記バッファに結合されたピクセル値処理ユニットと、
を備え、前記ピクセル値処理ユニットは、
前記ＧＰＵによって処理された画像内の１つ以上のピクセルについてのピクセル値を含む出力ストリームを前記ＧＰＵから受信する手段と、
前記出力ストリーム内の前記ピクセル値が、前記ＧＰＵによるさらなる処理を要求するピクセルについてのものであるか否かを決定する手段と、
前記ＧＰＵによるさらなる処理を要求する前記ピクセルについての前記ピクセル値を前記バッファに記憶する手段と
備える装置。
［Ｃ２４］  前記ピクセル値がさらなる処理を要求するピクセルについてのものであるか否かを決定する手段は、前記ピクセル値が、さらなる処理を要求するピクセルについてのものであるか否かを、前記ピクセル値処理ユニットと前記ＧＰＵとの間での同期化なく、前記ピクセル値処理ユニットの単一の計算パスで決定する手段を備え、さらなる処理を要求する前記ピクセルについての前記ピクセル値を記憶する前記手段は、さらなる処理を要求する前記ピクセルについての前記ピクセル値を、前記ピクセル値処理ユニットと前記ＧＰＵとの間での同期化なく、前記ピクセル値処理ユニットの単一の計算パスで記憶する手段を備える、Ｃ２３に記載の装置。
［Ｃ２５］  さらなる処理を要求すると決定された前記ピクセルについての前記ピクセル値のために、前記バッファ内にアドレスを生成する手段をさらに備え、
さらなる処理を要求する前記ピクセルについての前記ピクセル値を記憶する手段は、前記バッファの前記生成されたアドレスに、さらなる処理を要求する前記ピクセルについての前記ピクセル値を記憶する手段を備える、
Ｃ２３に記載の装置。
［Ｃ２６］  動作モードを受信する手段をさらに備え、
前記バッファ内にアドレスを生成する手段は、前記受信された動作モードに基づいて、前記バッファ内にアドレスを生成する手段を備える、Ｃ２５に記載の装置。
［Ｃ２７］  前記動作モードは、線形モードおよびブロックモードのうちの少なくとも１つを備え、前記バッファ内にアドレスを生成する手段は、前記動作モードが前記線形モードを備える場合に、前記バッファの連続した行または列内にアドレスを生成する手段を備え、前記バッファ内にアドレスを生成する手段は、前記動作モードが前記ブロックモードを備える場合に、前記バッファの連続したブロック内にアドレスを生成する手段を備える、Ｃ２６に記載の装置。
［Ｃ２８］  ピクセル値が前記バッファに記憶されたピクセル数をカウントする手段と、
前記カウントされたピクセル数に基づいて、さらなる処理を要求する前記ピクセルについての前記ピクセル値を検索する手段と、
さらなる処理を要求する前記ピクセルについての前記検索されたピクセル値を処理する手段と
をさらに備える、Ｃ２３に記載の装置。
［Ｃ２９］  前記画像のスケーリングされたバージョンを生成する手段と、
前記画像の前記スケーリングされたバージョンに基づいて、キーポイントピクセルを識別する手段と
をさらに備え、
前記出力ストリーム内の前記ピクセル値がさらなる処理を要求するピクセルについてのものであると決定する前記手段は、前記出力ストリーム内の前記ピクセル値が、前記識別されたキーポイントピクセルについてのものであると決定する手段を備え、
さらなる処理を要求する前記ピクセルについての前記ピクセル値を記憶する手段は、前記識別されたキーポイントピクセルの前記ピクセル値を前記バッファに記憶する手段を備える、
Ｃ２３に記載の装置。
［Ｃ３０］  前記ピクセル値は、座標値および色値のうちの少なくとも１つを備える、Ｃ２３に記載の装置。
［Ｃ３１］  さらなる処理を要求しないピクセルについてのピクセル値を、さらなる処理から除去する手段をさらに備える、Ｃ２３に記載の装置。
［Ｃ３２］  前記ＧＰＵによるさらなる処理を要求しないピクセル値を前記バッファに記憶しない手
段をさらに備える、Ｃ２３に記載の装置。
［Ｃ３３］  前記装置は、無線通信デバイスを備える、Ｃ２３に記載の装置。
［Ｃ３４］  命令を備える非一時的なコンピュータ読取可能な記憶媒体であって、前記命令は、前記ピクセル値処理ユニットに対して、
グラフィック処理ユニット（ＧＰＵ）に結合され、前記ＧＰＵに外付けの前記ピクセル値処理ユニットを用いて、前記ＧＰＵによって処理された画像内の１つ以上のピクセルについてのピクセル値を含む出力ストリームを前記ＧＰＵから受信させ、
前記出力ストリーム内の前記ピクセル値が、さらなる処理を要求するピクセルについてのものであるか否かを決定させ、
前記ピクセル値処理ユニットおよび前記ＧＰＵに外付けであり、かつ前記ピクセル値処理ユニットに結合されたバッファに、さらなる処理を要求する前記ピクセルについての前記ピクセル値を記憶させる、非一時的なコンピュータ読取可能な記憶媒体。
［Ｃ３５］  前記ピクセル値がさらなる処理を要求するピクセルについてのものであるか否かを決定する前記命令は、前記ピクセル値がさらなる処理を要求するピクセルについてのものであるか否かを、前記ピクセル値処理ユニットと前記ＧＰＵとの間での同期化なく、前記ピクセル値処理ユニットの単一の計算パスで決定する命令を備え、さらなる処理を要求する前記ピクセルについての前記ピクセル値を記憶する前記命令は、さらなる処理を要求する前記ピクセルについての前記ピクセル値を、前記ピクセル値処理ユニットと前記ＧＰＵとの間での同期化なく、前記ピクセル値処理ユニットの単一の計算パスで記憶する命令を備える、Ｃ３４に記載の非一時的なコンピュータ読取可能な記憶媒体。
［Ｃ３６］  前記ピクセル値処理ユニットに対して、さらなる処理を要求すると決定された前記ピクセルについての前記ピクセル値のために、前記バッファ内にアドレスを生成させる命令をさらに備え、
さらなる処理を要求する前記ピクセルについての前記ピクセル値を記憶させる前記命令は、さらなる処理を要求する前記ピクセルについての前記ピクセル値を、前記バッファの前記生成されたアドレスに記憶させる命令を備える、
Ｃ３４に記載の非一時的なコンピュータ読取可能な記憶媒体。
［Ｃ３７］  前記ピクセル値処理ユニットに対して、動作モードを受信させる命令をさらに備え、
前記バッファ内にアドレスを生成させる前記命令は、前記受信された動作モードに基づいて、前記バッファ内にアドレスを生成させる命令を備える、Ｃ３６に記載の非一時的なコンピュータ読取可能な記憶媒体。
［Ｃ３８］  前記動作モードは、線形モードおよびブロックモードのうちの少なくとも１つを備え、前記バッファ内にアドレスを生成させる命令は、前記動作モードが前記線形モードを備える場合に、前記バッファの連続した行または列内にアドレスを生成させる命令を備え、前記バッファ内にアドレスを生成させる命令は、前記動作モードが前記ブロックモードを備える場合に、前記バッファの連続したブロック内にアドレスを生成させる命令を備える、Ｃ３７に記載の非一時的なコンピュータ読取可能な記憶媒体。
［Ｃ３９］  前記ピクセル値処理ユニットに対して、ピクセル値が前記バッファに記憶されたピクセル数をカウントさせる命令をさらに備える、Ｃ３４に記載の非一時的なコンピュータ読取可能な記憶媒体。
［Ｃ４０］  前記ピクセル値は、座標値および色値のうちの少なくとも１つを備える、Ｃ３４に記載の非一時的なコンピュータ読取可能な記憶媒体。
［Ｃ４１］  前記ピクセル値処理ユニットに対して、さらなる処理を要求しないピクセルについてのピクセル値を、さらなる処理から除去させる命令をさらに備える、Ｃ３４に記載の非一時的なコンピュータ読取可能な記憶媒体。
［Ｃ４２］  前記ピクセル値処理ユニットに対して、前記ＧＰＵによるさらなる処理を要求しないピクセルについてのピクセル値を、前記バッファに記憶させない命令をさらに備える、Ｃ３４に記載の非一時的なコンピュータ読取可能な記憶媒体。
【図１】
0005714771.tif 000002
【図２Ａ】
0005714771.tif 000003
【図２Ｂ】
0005714771.tif 000004
【図３】
0005714771.tif 000005
【図４Ａ】
0005714771.tif 000006
【図４Ｂ】
0005714771.tif 000007
【図４Ｃ】
0005714771.tif 000008
【図４Ｄ】
0005714771.tif 000009
【図５】
0005714771.tif 000010
【図６】
0005714771.tif 000011
【図７】
0005714771.tif 000012
【図８】
0005714771.tif 000013