JP2014515856A - グラフィック処理のためのピクセル値圧縮 - Google Patents

グラフィック処理のためのピクセル値圧縮 Download PDF

Info

Publication number
JP2014515856A
JP2014515856A JP2014505373A JP2014505373A JP2014515856A JP 2014515856 A JP2014515856 A JP 2014515856A JP 2014505373 A JP2014505373 A JP 2014505373A JP 2014505373 A JP2014505373 A JP 2014505373A JP 2014515856 A JP2014515856 A JP 2014515856A
Authority
JP
Japan
Prior art keywords
pixel
pixel value
gpu
buffer
processing unit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2014505373A
Other languages
English (en)
Other versions
JP5714771B2 (ja
Inventor
ツァイ、ミン−チャン
ジャオ、グオファン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Publication of JP2014515856A publication Critical patent/JP2014515856A/ja
Application granted granted Critical
Publication of JP5714771B2 publication Critical patent/JP5714771B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T3/00Geometric image transformations in the plane of the image
    • G06T3/40Scaling of whole images or parts thereof, e.g. expanding or contracting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0038System on Chip

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Graphics (AREA)
  • General Engineering & Computer Science (AREA)
  • Image Processing (AREA)
  • Image Generation (AREA)
  • Image Input (AREA)

Abstract

一般的に、本開示の態様は、可変データレート処理に対する、グラフィック処理ユニット(GPU)の固定データレート処理の効率的な使用についての例示的な技法を説明している。例えば、GPUは、GPUによって処理された画像内のピクセルについてのピクセル値を受信するピクセル値処理ユニットに結合されうる。ピクセル値処理ユニットは、ピクセル値がさらなる処理を要求するピクセルについてのものであるかを決定し、さらなる処理に要求されるピクセルについてのピクセル値をバッファに記憶しうる。

Description

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

Claims (42)

  1. 方法であって、
    グラフィック処理ユニット(GPU)に結合されており、前記GPUに外付けのピクセル値処理ユニットを用いて、前記GPUによって処理された画像内の1つ以上のピクセルについてのピクセル値を含む出力ストリームを前記GPUから受信することと、
    前記ピクセル値処理ユニットを用いて、前記出力ストリーム内の前記ピクセル値が、前記GPUによるさらなる処理を要求するピクセルについてのものであるか否かを決定することと、
    前記ピクセル値処理ユニットに外付けであり、前記ピクセル値処理ユニットに結合されたバッファに、前記GPUによるさらなる処理を要求する前記ピクセルについての前記ピクセル値を記憶することと
    を備えた方法。
  2. 前記ピクセル値がさらなる処理を要求するピクセルについてのものであるか否かを決定することは、前記ピクセル値が、さらなる処理を要求するピクセルについてのものであるか否かを、前記ピクセル値処理ユニットと前記GPUとの間での同期化なく、前記ピクセル値処理ユニットの単一の計算パスで決定することを備え、さらなる処理を要求する前記ピクセルについての前記ピクセル値を記憶することは、さらなる処理を要求する前記ピクセルについての前記ピクセル値を、前記ピクセル値処理ユニットと前記GPUとの間での同期化なく、前記ピクセル値処理ユニットの前記単一の計算パスで記憶することを備える、請求項1に記載の方法。
  3. さらなる処理を要求すると決定された前記ピクセルについての前記ピクセル値のために、前記バッファ内にアドレスを生成することをさらに備え、
    さらなる処理を要求する前記ピクセルについての前記ピクセル値を記憶することは、前記バッファの前記生成されたアドレスに、さらなる処理を要求する前記ピクセルについての前記ピクセル値を記憶することを備える、請求項1に記載の方法。
  4. 動作モードを受信することをさらに備え、
    前記バッファ内にアドレスを生成することは、前記受信された動作モードに基づいて、前記バッファ内にアドレスを生成することを備える、請求項3に記載の方法。
  5. 前記動作モードは、線形モードおよびブロックモードのうちの少なくとも1つを備え、前記バッファ内にアドレスを生成することは、前記動作モードが前記線形モードを備える場合に前記バッファの連続した行または列内にアドレスを生成することを備え、前記バッファ内にアドレスを生成することは、前記動作モードが前記ブロックモードを備える場合に、前記バッファの連続したブロック内にアドレスを生成することを備える、請求項4に記載の方法。
  6. ピクセル値が前記バッファに記憶されたピクセル数をカウントすることと、
    前記カウントされたピクセル数に基づいて、さらなる処理を要求する前記ピクセルについての前記ピクセル値を検索することと、
    さらなる処理を要求する前記ピクセルについての前記検索されたピクセル値を処理することと
    をさらに備える、請求項1に記載の方法。
  7. 前記画像のスケーリングされたバージョンを生成することと、
    前記画像の前記スケーリングされたバージョンに基づいて、キーポイントピクセルを識別することと
    をさらに備え、
    前記出力ストリーム内の前記ピクセル値がさらなる処理を要求するピクセルについてのものであると決定することは、前記出力ストリーム内の前記ピクセル値が、前記識別されたキーポイントピクセルについてのものであると決定することを備え、
    さらなる処理を要求する前記ピクセルについての前記ピクセル値を記憶することは、前記識別されたキーポイントピクセルの前記ピクセル値を前記バッファに記憶することを備える、
    請求項1に記載の方法。
  8. 前記ピクセル値は、座標値および色値のうちの少なくとも1つを備える、請求項1に記載の方法。
  9. さらなる処理を要求しないピクセルについてのピクセル値を、さらなる処理から除去することをさらに備える、請求項1に記載の方法。
  10. 前記GPUによるさらなる処理を要求しないピクセルについてのピクセル値を前記バッファに記憶しないことをさらに備える、請求項1に記載の方法。
  11. 画像を処理して、前記処理された画像内の1つ以上のピクセルについてのピクセル値を含む出力ストリームを生成するように構成されたグラフィック処理ユニット(GPU)と、
    バッファと
    前記GPUに外付けであり、前記GPUおよび前記バッファに結合されたピクセル値処理ユニットであって、前記出力ストリーム内の前記ピクセル値が前記GPUによるさらなる処理を要求するピクセルについてのものであるか否かを決定し、前記GPUによるさらなる処理を要求する前記ピクセルについての前記ピクセル値を前記バッファに記憶するように構成されたピクセル値処理ユニットと
    を備える装置。
  12. 前記ピクセル値処理ユニットは、前記ピクセル値が前記GPUによるさらなる処理を要求するピクセルについてのものであるか否かを決定し、前記GPUによるさらなる処理を要求する前記ピクセルについての前記ピクセル値を、前記ピクセル値処理ユニットと前記GPUとの間で同期化することなく、前記ピクセル値処理ユニットの単一の計算パスで記憶する、請求項11に記載の装置。
  13. 前記ピクセル値処理ユニットは、さらに、さらなる処理を要求すると決定された前記ピクセルについての前記ピクセル値のために前記バッファ内にアドレスを生成するように構成され、前記ピクセル値処理ユニットは、処理を要求する前記ピクセルについての前記ピクセル値を前記バッファの前記生成されたアドレスに記憶する、請求項11に記載の装置。
  14. 前記ピクセル値処理ユニットは、さらに、動作モードを受信するように構成され、前記ピクセル値処理ユニットは、前記受信された動作モードに基づいて、前記バッファ内に前記アドレスを生成する、請求項13に記載の装置。
  15. 前記動作モードは、線形モードおよびブロックモードのうちの少なくとも1つを備え、前記ピクセル値処理ユニットは、前記動作モードが前記線形モードを備える場合に、前記バッファの連続した行または列内に前記アドレスを生成し、前記動作モードが前記ブロックモードを備える場合に、前記バッファの連続したブロック内に前記アドレスを生成する、請求項14に記載の装置。
  16. 前記ピクセル値処理ユニットは、さらに、ピクセル値が前記バッファに記憶されたピクセル数をカウントするように構成され、前記GPUは、前記カウントされたピクセル数に基づいて、さらなる処理を要求する前記ピクセルについての前記ピクセル値を前記バッファから検索し、前記GPUは、さらなる処理を要求する前記ピクセルについての前記検索されたピクセル値を処理する、請求項11に記載の装置。
  17. 前記GPUはさらに、前記画像のスケーリングされたバージョンを生成し、前記画像の前記スケーリングされたバージョンに基づいてキーポイントピクセルを識別するように構成され、ピクセル値処理ユニットは、前記出力ストリーム内の前記ピクセル値が前記識別されたキーポイントピクセルについてのものであるか否かを決定し、前記識別されたキーポイントピクセルについての前記ピクセル値を前記バッファに記憶する、請求項11に記載の装置。
  18. 前記ピクセル値は、座標値および色値のうちの少なくとも1つを備える、請求項11に記載の装置。
  19. 前記ピクセル値処理ユニットは、さらなる処理を要求しないピクセルについてのピクセル値を、さらなる処理から除去するようにさらに構成される、請求項11に記載の装置。
  20. 前記ピクセル値処理ユニットは、前記出力ストリーム内の前記ピクセル値がさらなる処理を要求するピクセルについてのものであるかを決定し、さらなる処理を要求する前記ピクセルについての前記ピクセル値を前記バッファに記憶し、さらなる処理を要求すると決定された前記ピクセルについての前記ピクセル値のために、前記バッファ内にアドレスを生成し、ピクセル値が前記バッファに記憶されたピクセル数をカウントするようにのみ構成された固定機能ハードウェアユニットを備える、請求項11に記載の装置。
  21. 前記ピクセル値処理ユニットは、前記GPUによるさらなる処理を要求しないピクセルについてのピクセル値を前記バッファに記憶しないようにさらに構成される、請求項11に記載の装置。
  22. 前記装置は、無線通信デバイスを備える、請求項11に記載の装置。
  23. 装置であって、
    グラフィック処理ユニット(GPU)と、
    バッファと、
    前記GPUに外付けであり、前記GPUおよび前記バッファに結合されたピクセル値処理ユニットと、
    を備え、前記ピクセル値処理ユニットは、
    前記GPUによって処理された画像内の1つ以上のピクセルについてのピクセル値を含む出力ストリームを前記GPUから受信する手段と、
    前記出力ストリーム内の前記ピクセル値が、前記GPUによるさらなる処理を要求するピクセルについてのものであるか否かを決定する手段と、
    前記GPUによるさらなる処理を要求する前記ピクセルについての前記ピクセル値を前記バッファに記憶する手段と
    備える装置。
  24. 前記ピクセル値がさらなる処理を要求するピクセルについてのものであるか否かを決定する手段は、前記ピクセル値が、さらなる処理を要求するピクセルについてのものであるか否かを、前記ピクセル値処理ユニットと前記GPUとの間での同期化なく、前記ピクセル値処理ユニットの単一の計算パスで決定する手段を備え、さらなる処理を要求する前記ピクセルについての前記ピクセル値を記憶する前記手段は、さらなる処理を要求する前記ピクセルについての前記ピクセル値を、前記ピクセル値処理ユニットと前記GPUとの間での同期化なく、前記ピクセル値処理ユニットの単一の計算パスで記憶する手段を備える、請求項23に記載の装置。
  25. さらなる処理を要求すると決定された前記ピクセルについての前記ピクセル値のために、前記バッファ内にアドレスを生成する手段をさらに備え、
    さらなる処理を要求する前記ピクセルについての前記ピクセル値を記憶する手段は、前記バッファの前記生成されたアドレスに、さらなる処理を要求する前記ピクセルについての前記ピクセル値を記憶する手段を備える、
    請求項23に記載の装置。
  26. 動作モードを受信する手段をさらに備え、
    前記バッファ内にアドレスを生成する手段は、前記受信された動作モードに基づいて、前記バッファ内にアドレスを生成する手段を備える、請求項25に記載の装置。
  27. 前記動作モードは、線形モードおよびブロックモードのうちの少なくとも1つを備え、前記バッファ内にアドレスを生成する手段は、前記動作モードが前記線形モードを備える場合に、前記バッファの連続した行または列内にアドレスを生成する手段を備え、前記バッファ内にアドレスを生成する手段は、前記動作モードが前記ブロックモードを備える場合に、前記バッファの連続したブロック内にアドレスを生成する手段を備える、請求項26に記載の装置。
  28. ピクセル値が前記バッファに記憶されたピクセル数をカウントする手段と、
    前記カウントされたピクセル数に基づいて、さらなる処理を要求する前記ピクセルについての前記ピクセル値を検索する手段と、
    さらなる処理を要求する前記ピクセルについての前記検索されたピクセル値を処理する手段と
    をさらに備える、請求項23に記載の装置。
  29. 前記画像のスケーリングされたバージョンを生成する手段と、
    前記画像の前記スケーリングされたバージョンに基づいて、キーポイントピクセルを識別する手段と
    をさらに備え、
    前記出力ストリーム内の前記ピクセル値がさらなる処理を要求するピクセルについてのものであると決定する前記手段は、前記出力ストリーム内の前記ピクセル値が、前記識別されたキーポイントピクセルについてのものであると決定する手段を備え、
    さらなる処理を要求する前記ピクセルについての前記ピクセル値を記憶する手段は、前記識別されたキーポイントピクセルの前記ピクセル値を前記バッファに記憶する手段を備える、
    請求項23に記載の装置。
  30. 前記ピクセル値は、座標値および色値のうちの少なくとも1つを備える、請求項23に記載の装置。
  31. さらなる処理を要求しないピクセルについてのピクセル値を、さらなる処理から除去する手段をさらに備える、請求項23に記載の装置。
  32. 前記GPUによるさらなる処理を要求しないピクセル値を前記バッファに記憶しない手段をさらに備える、請求項23に記載の装置。
  33. 前記装置は、無線通信デバイスを備える、請求項23に記載の装置。
  34. 命令を備える非一時的なコンピュータ読取可能な記憶媒体であって、前記命令は、前記ピクセル値処理ユニットに対して、
    グラフィック処理ユニット(GPU)に結合され、前記GPUに外付けの前記ピクセル値処理ユニットを用いて、前記GPUによって処理された画像内の1つ以上のピクセルについてのピクセル値を含む出力ストリームを前記GPUから受信させ、
    前記出力ストリーム内の前記ピクセル値が、さらなる処理を要求するピクセルについてのものであるか否かを決定させ、
    前記ピクセル値処理ユニットおよび前記GPUに外付けであり、かつ前記ピクセル値処理ユニットに結合されたバッファに、さらなる処理を要求する前記ピクセルについての前記ピクセル値を記憶させる、非一時的なコンピュータ読取可能な記憶媒体。
  35. 前記ピクセル値がさらなる処理を要求するピクセルについてのものであるか否かを決定する前記命令は、前記ピクセル値がさらなる処理を要求するピクセルについてのものであるか否かを、前記ピクセル値処理ユニットと前記GPUとの間での同期化なく、前記ピクセル値処理ユニットの単一の計算パスで決定する命令を備え、さらなる処理を要求する前記ピクセルについての前記ピクセル値を記憶する前記命令は、さらなる処理を要求する前記ピクセルについての前記ピクセル値を、前記ピクセル値処理ユニットと前記GPUとの間での同期化なく、前記ピクセル値処理ユニットの単一の計算パスで記憶する命令を備える、請求項34に記載の非一時的なコンピュータ読取可能な記憶媒体。
  36. 前記ピクセル値処理ユニットに対して、さらなる処理を要求すると決定された前記ピクセルについての前記ピクセル値のために、前記バッファ内にアドレスを生成させる命令をさらに備え、
    さらなる処理を要求する前記ピクセルについての前記ピクセル値を記憶させる前記命令は、さらなる処理を要求する前記ピクセルについての前記ピクセル値を、前記バッファの前記生成されたアドレスに記憶させる命令を備える、
    請求項34に記載の非一時的なコンピュータ読取可能な記憶媒体。
  37. 前記ピクセル値処理ユニットに対して、動作モードを受信させる命令をさらに備え、
    前記バッファ内にアドレスを生成させる前記命令は、前記受信された動作モードに基づいて、前記バッファ内にアドレスを生成させる命令を備える、請求項36に記載の非一時的なコンピュータ読取可能な記憶媒体。
  38. 前記動作モードは、線形モードおよびブロックモードのうちの少なくとも1つを備え、前記バッファ内にアドレスを生成させる命令は、前記動作モードが前記線形モードを備える場合に、前記バッファの連続した行または列内にアドレスを生成させる命令を備え、前記バッファ内にアドレスを生成させる命令は、前記動作モードが前記ブロックモードを備える場合に、前記バッファの連続したブロック内にアドレスを生成させる命令を備える、請求項37に記載の非一時的なコンピュータ読取可能な記憶媒体。
  39. 前記ピクセル値処理ユニットに対して、ピクセル値が前記バッファに記憶されたピクセル数をカウントさせる命令をさらに備える、請求項34に記載の非一時的なコンピュータ読取可能な記憶媒体。
  40. 前記ピクセル値は、座標値および色値のうちの少なくとも1つを備える、請求項34に記載の非一時的なコンピュータ読取可能な記憶媒体。
  41. 前記ピクセル値処理ユニットに対して、さらなる処理を要求しないピクセルについてのピクセル値を、さらなる処理から除去させる命令をさらに備える、請求項34に記載の非一時的なコンピュータ読取可能な記憶媒体。
  42. 前記ピクセル値処理ユニットに対して、前記GPUによるさらなる処理を要求しないピクセルについてのピクセル値を、前記バッファに記憶させない命令をさらに備える、請求項34に記載の非一時的なコンピュータ読取可能な記憶媒体。
JP2014505373A 2011-04-13 2012-04-13 グラフィック処理のためのピクセル値圧縮 Expired - Fee Related JP5714771B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/085,855 US8854383B2 (en) 2011-04-13 2011-04-13 Pixel value compaction for graphics processing
US13/085,855 2011-04-13
PCT/US2012/033650 WO2012142505A2 (en) 2011-04-13 2012-04-13 Pixel value compaction for graphics processing

Publications (2)

Publication Number Publication Date
JP2014515856A true JP2014515856A (ja) 2014-07-03
JP5714771B2 JP5714771B2 (ja) 2015-05-07

Family

ID=46022696

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014505373A Expired - Fee Related JP5714771B2 (ja) 2011-04-13 2012-04-13 グラフィック処理のためのピクセル値圧縮

Country Status (6)

Country Link
US (1) US8854383B2 (ja)
EP (1) EP2697778B1 (ja)
JP (1) JP5714771B2 (ja)
KR (1) KR101639852B1 (ja)
CN (1) CN103460253B (ja)
WO (1) WO2012142505A2 (ja)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140267327A1 (en) 2013-03-14 2014-09-18 Microsoft Corporation Graphics Processing using Multiple Primitives
US9292898B2 (en) * 2013-03-15 2016-03-22 Intel Corporation Conditional end of thread mechanism
US9612949B2 (en) * 2013-06-13 2017-04-04 Arm Limited Memory allocation in a multi-core processing system based on a threshold amount of memory
CN103400338A (zh) * 2013-07-25 2013-11-20 天津大学 嵌入式gpu中面积有效、功能复用的裁剪方法及模块
KR101569093B1 (ko) * 2013-08-13 2015-11-13 삼성에스디에스 주식회사 분산 시스템에서 데이터를 처리하는 방법
KR102276914B1 (ko) 2013-10-24 2021-07-13 삼성전자주식회사 비디오 인코딩 장치 그리고 이의 구동 방법
US9659341B2 (en) * 2014-06-25 2017-05-23 Qualcomm Incorporated Texture pipe as an image processing engine
EP3274986A4 (en) 2015-03-21 2019-04-17 Mine One GmbH METHODS, SYSTEMS, AND SOFTWARE FOR VIRTUAL 3D
US10853625B2 (en) 2015-03-21 2020-12-01 Mine One Gmbh Facial signature methods, systems and software
US9778865B1 (en) * 2015-09-08 2017-10-03 EMC IP Holding Company LLC Hyper-converged infrastructure based on server pairs
US9830082B1 (en) 2015-09-08 2017-11-28 EMC IP Holding Company LLC Hybrid hyper-converged infrastructure and storage appliance
US9959661B2 (en) 2015-12-02 2018-05-01 Samsung Electronics Co., Ltd. Method and device for processing graphics data in graphics processing unit
KR102636101B1 (ko) * 2015-12-02 2024-02-13 삼성전자주식회사 Gpu에서 그래픽 데이터 처리 방법 및 장치
US10110846B2 (en) * 2016-02-03 2018-10-23 Sharp Laboratories Of America, Inc. Computationally efficient frame rate conversion system
US11069021B2 (en) * 2016-07-02 2021-07-20 Intel Corporation Mechanism for providing multiple screen regions on a high resolution display
US10540318B2 (en) * 2017-04-09 2020-01-21 Intel Corporation Graphics processing integrated circuit package
US11055807B2 (en) 2017-06-12 2021-07-06 Apple Inc. Method and system for a transactional based display pipeline to interface with graphics processing units
CN108540534A (zh) * 2018-03-16 2018-09-14 青岛海信移动通信技术股份有限公司 一种终端全屏区域的确定方法及装置
US11074724B2 (en) * 2018-12-07 2021-07-27 Microsoft Technology Licensing Llc GPU calculation of signed distance fields
KR102642797B1 (ko) 2019-01-14 2024-03-05 삼성전자주식회사 전자 장치 및 그 제어 방법
US11212425B2 (en) 2019-09-16 2021-12-28 Gopro, Inc. Method and apparatus for partial correction of images

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63201790A (ja) * 1987-02-12 1988-08-19 インターナシヨナル・ビジネス・マシーンズ・コーポレーシヨン グラフィック表示プロセッサ
JP2000149053A (ja) * 1998-09-10 2000-05-30 Sega Enterp Ltd ブレンディング処理を含む画像処理装置及びその方法
JP2004240910A (ja) * 2003-02-10 2004-08-26 Toshiba Corp 画像処理装置および画像処理方法
JP2006318404A (ja) * 2005-05-16 2006-11-24 Mitsubishi Electric Corp 図形描画装置
JP2006338658A (ja) * 2005-06-02 2006-12-14 Samsung Electronics Co Ltd グラフィックス処理装置と処理方法、及びその記録媒体
JP2007328581A (ja) * 2006-06-08 2007-12-20 Toshiba Corp 画像処理装置及びシェーダ装置
JP2010519618A (ja) * 2007-02-16 2010-06-03 クゥアルコム・インコーポレイテッド 効率的な2d及び3dグラフィックス処理
JP2010140101A (ja) * 2008-12-09 2010-06-24 Fujitsu Ltd 描画装置
WO2010138870A2 (en) * 2009-05-29 2010-12-02 Qualcomm Incorporated Graphics processing unit with deferred vertex shading

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6310289A (ja) 1986-07-01 1988-01-16 Matsushita Electric Ind Co Ltd 画像生成装置
JP3227086B2 (ja) * 1996-02-01 2001-11-12 基弘 栗須 テレビオンスクリーン表示装置
WO2004109595A2 (en) 2003-05-22 2004-12-16 Lee, Jin, H. Method for doubling resolution lcd display using line doubling and non-linear interpolation curve
US20040257374A1 (en) * 2003-06-18 2004-12-23 Mcgowan James William Method and apparatus for the efficient representation of block-based images
JP5170961B2 (ja) 2006-02-01 2013-03-27 ソニー株式会社 画像処理システム、画像処理装置および方法、プログラム、並びに記録媒体
US20080030510A1 (en) * 2006-08-02 2008-02-07 Xgi Technology Inc. Multi-GPU rendering system
US7724260B2 (en) * 2006-08-25 2010-05-25 Honeywell International Inc. Method and system for image monitoring
GB0625455D0 (en) 2006-12-20 2007-01-31 Mitsubishi Electric Inf Tech Graph-based multiple panorama extraction from unordered image sets
US8667473B2 (en) * 2007-10-31 2014-03-04 Microsoft Corporation Analyzing video game performance using non-intrusive capture and storage of run-time game data
TW200950527A (en) * 2008-05-16 2009-12-01 Asustek Comp Inc Method for processing video data stream
JP5132419B2 (ja) * 2008-05-20 2013-01-30 富士フイルム株式会社 内視鏡システム及びオプション基板
US8233716B2 (en) * 2008-06-27 2012-07-31 Palo Alto Research Center Incorporated System and method for finding stable keypoints in a picture image using localized scale space properties

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63201790A (ja) * 1987-02-12 1988-08-19 インターナシヨナル・ビジネス・マシーンズ・コーポレーシヨン グラフィック表示プロセッサ
JP2000149053A (ja) * 1998-09-10 2000-05-30 Sega Enterp Ltd ブレンディング処理を含む画像処理装置及びその方法
JP2004240910A (ja) * 2003-02-10 2004-08-26 Toshiba Corp 画像処理装置および画像処理方法
JP2006318404A (ja) * 2005-05-16 2006-11-24 Mitsubishi Electric Corp 図形描画装置
JP2006338658A (ja) * 2005-06-02 2006-12-14 Samsung Electronics Co Ltd グラフィックス処理装置と処理方法、及びその記録媒体
JP2007328581A (ja) * 2006-06-08 2007-12-20 Toshiba Corp 画像処理装置及びシェーダ装置
JP2010519618A (ja) * 2007-02-16 2010-06-03 クゥアルコム・インコーポレイテッド 効率的な2d及び3dグラフィックス処理
JP2010140101A (ja) * 2008-12-09 2010-06-24 Fujitsu Ltd 描画装置
WO2010138870A2 (en) * 2009-05-29 2010-12-02 Qualcomm Incorporated Graphics processing unit with deferred vertex shading

Also Published As

Publication number Publication date
EP2697778A2 (en) 2014-02-19
KR101639852B1 (ko) 2016-07-14
KR20140006061A (ko) 2014-01-15
US8854383B2 (en) 2014-10-07
CN103460253B (zh) 2016-08-24
WO2012142505A2 (en) 2012-10-18
EP2697778B1 (en) 2018-09-26
WO2012142505A3 (en) 2013-01-03
US20120262493A1 (en) 2012-10-18
CN103460253A (zh) 2013-12-18
JP5714771B2 (ja) 2015-05-07

Similar Documents

Publication Publication Date Title
JP5714771B2 (ja) グラフィック処理のためのピクセル値圧縮
US9928642B2 (en) Using a geometry shader for variable input and output algorithms
US10417787B2 (en) Index buffer block compression
US10242481B2 (en) Visibility-based state updates in graphical processing units
JP5960368B2 (ja) ビジビリティ情報を用いたグラフィックスデータのレンダリング
JP6042584B2 (ja) 加えられたインライン動作とともに、ビン毎の可視情報に基づくレンダリングコマンドの条件付き実行
CN109885407B (zh) 数据处理方法和装置、电子设备、存储介质
US10796483B2 (en) Identifying primitives in input index stream
TWI544780B (zh) 3d格式轉換系統和方法
US20210358174A1 (en) Method and apparatus of data compression
JP2023530306A (ja) デルタトリプレットインデックス圧縮
US20150242988A1 (en) Methods of eliminating redundant rendering of frames
KR101499124B1 (ko) 공유 메모리를 이용한 영상 처리 방법 및 장치
CN117237502A (zh) 一种三维渲染方法、装置、设备及介质
Lee et al. A bimodal empty space skipping of ray casting for terrain data
JP2016527631A (ja) グラフィックス処理ユニットを用いたヒストグラム計算のシステム及び方法
US20230298261A1 (en) Distributed visibility stream generation for coarse grain binning
US20230377086A1 (en) Pipeline delay elimination with parallel two level primitive batch binning
US20240169641A1 (en) Vertex index routing through culling shader for two level primitive batch binning
US20240087078A1 (en) Two-level primitive batch binning with hardware state compression
JP2023518865A (ja) 機械学習される画像コンバートのためのシステムおよび方法
JP2022554410A (ja) 視覚的忠実度を保持しながらのボリュームデータの低減

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140929

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20141014

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150109

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20150210

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150311

R150 Certificate of patent or registration of utility model

Ref document number: 5714771

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees