(57)【要約】  一例では、画像処理のための方法は、画像の第1のピクセルに対応する第1のピクセル値をLUTに入力するステップを含み得る。LUTは、1つまたは複数のLUT入力値を1つまたは複数のLUT出力値にマッピングし得る。第1のピクセル値は、LUTにおける第1のLUT出力値にマッピングする第1のLUT入力値に対応し得る。第1のピクセルは、1つまたは複数のピクセル値を含み得る。本方法は、第1のLUT入力値に関してノイズ値を生成するステップを含み得る。本方法は、ノイズ値に基づいて、第1のLUT入力値に関して第1の補間されたLUT出力値を生成するステップを含み得る。本方法は、第1の補間されたLUT出力値を使用して、画像を変換された画像に変換するステップを含み得る。
2018530062.tif 000002
【特許請求の範囲】
【請求項１】
処理ユニットによって、画像の第1のピクセルに対応する第1のピクセル値をルックアップテーブル(LUT)に入力するステップであって、前記LUTは、1つまたは複数のLUT入力値を1つまたは複数のLUT出力値にマッピングし、前記第1のピクセル値は、前記LUTにおける第1のLUT出力値にマッピングする第1のLUT入力値に対応する、ステップと、
前記処理ユニットによって、前記第1のLUT入力値に関してノイズ値を生成するステップと、
前記処理ユニットによって、前記ノイズ値に基づいて、前記第1のLUT入力値に関して第1の補間されたLUT出力値を生成するステップと、
前記処理ユニットによって、前記第1の補間されたLUT出力値を使用して、前記画像を変換された画像に変換するステップと
を含む、方法。
【請求項２】
前記第1の補間されたLUT出力値は、マッピングされないLUT出力値である、請求項1に記載の方法。
【請求項３】
前記処理ユニットによって、第2のLUT入力値を選択するステップであって、前記第2のLUT入力値は第2のLUT出力値にマッピングする、ステップ
をさらに含む、請求項1に記載の方法。
【請求項４】
前記処理ユニットによって、前記第1のLUT入力値、前記第2のLUT入力値、および前記第2のLUT出力値のうちの少なくとも1つにさらに基づいて、前記第1の補間されたLUT出力値を生成するステップ
をさらに含む、請求項3に記載の方法。
【請求項５】
前記LUTは、単一のLUTから導出された2つのLUTのうちの第1のLUTであり、前記単一のLUTは、複数のLUT入力値を1つまたは複数のLUT出力値にマッピングし、前記第1のLUTは、前記複数の入力値のサブセットを前記単一のLUTの前記1つまたは複数のLUT出力値にマッピングし、前記単一のLUTから導出された第2のLUTは、前記複数の入力値の異なるサブセットを前記単一のLUTの前記1つまたは複数のLUT出力値にマッピングする、請求項3に記載の方法。
【請求項６】
前記処理ユニットによって、第3のLUT入力値を選択するステップであって、前記第3のLUT入力値は第3のLUT出力値にマッピングする、ステップ
をさらに含む、請求項3に記載の方法。
【請求項７】
前記処理ユニットによって、前記第1のLUT入力値、前記第2のLUT入力値、前記第2のLUT出力値、前記第3のLUT入力値、および前記第3のLUT出力値のうちの少なくとも1つにさらに基づいて、前記第1の補間されたLUT出力値を生成するステップ
をさらに含む、請求項6に記載の方法。
【請求項８】
前記処理ユニットによって、前記ノイズ値、前記第1のLUT入力値に対する前記第2または第3のLUT入力値の隣接性、および前記第1のLUT入力値に対する前記第2または第3のLUT入力値の非隣接性のうちの少なくとも1つに基づいて、前記第2のLUT入力値または前記第3のLUT入力値を選択するステップ
をさらに含む、請求項6に記載の方法。
【請求項９】
画像を記憶するためのメモリと、
1つまたは複数のプロセッサと
を含むデバイスであって、前記1つまたは複数のプロセッサは、
前記画像の第1のピクセルに対応する第1のピクセル値をルックアップテーブル(LUT)に入力することであって、前記LUTは、1つまたは複数のLUT入力値を1つまたは複数のLUT出力値にマッピングし、前記第1のピクセル値は、前記LUTにおける第1のLUT出力値にマッピングする第1のLUT入力値に対応する、入力することと、
前記第1のLUT入力値に関してノイズ値を生成することと、
前記ノイズ値に基づいて、前記第1のLUT入力値に関して第1の補間されたLUT出力値を生成することと、
前記第1の補間されたLUT出力値を使用して、前記画像を変換された画像に変換することと
を行うように構成される、デバイス。
【請求項１０】
前記第1の補間されたLUT出力値は、マッピングされないLUT出力値である、請求項9に記載のデバイス。
【請求項１１】
前記1つまたは複数のプロセッサは、
第2のLUT入力値を選択することであって、前記第2のLUT入力値は第2のLUT出力値にマッピングする、選択すること
を行うように構成される、請求項9に記載のデバイス。
【請求項１２】
前記1つまたは複数のプロセッサは、
前記第1のLUT入力値、前記第2のLUT入力値、および前記第2のLUT出力値のうちの少なくとも1つにさらに基づいて、前記第1の補間されたLUT出力値を生成する
ように構成される、請求項11に記載のデバイス。
【請求項１３】
前記LUTは、単一のLUTから導出された2つのLUTのうちの第1のLUTであり、前記単一のLUTは、複数のLUT入力値を1つまたは複数のLUT出力値にマッピングし、前記第1のLUTは、前記複数の入力値のサブセットを前記単一のLUTの前記1つまたは複数のLUT出力値にマッピングし、前記単一のLUTから導出された第2のLUTは、前記複数の入力値の異なるサブセットを前記単一のLUTの前記1つまたは複数のLUT出力値にマッピングする、請求項11に記載のデバイス。
【請求項１４】
前記1つまたは複数のプロセッサは、
第3のLUT入力値を選択することであって、前記第3のLUT入力値は第3のLUT出力値にマッピングする、選択すること
を行うように構成される、請求項11に記載のデバイス。
【請求項１５】
前記1つまたは複数のプロセッサは、
前記第1のLUT入力値、前記第2のLUT入力値、前記第2のLUT出力値、前記第3のLUT入力値、および前記第3のLUT出力値のうちの少なくとも1つにさらに基づいて、前記第1の補間されたLUT出力値を生成する
ように構成される、請求項14に記載のデバイス。
【請求項１６】
前記1つまたは複数のプロセッサは、
前記ノイズ値、前記第1のLUT入力値に対する前記第2または第3のLUT入力値の隣接性、および前記第1のLUT入力値に対する前記第2または第3のLUT入力値の非隣接性のうちの少なくとも1つに基づいて、前記第2のLUT入力値または前記第3のLUT入力値を選択する
ように構成される、請求項14に記載のデバイス。
【請求項１７】
画像の第1のピクセルに対応する第1のピクセル値をルックアップテーブル(LUT)に入力するための手段であって、前記LUTは、1つまたは複数のLUT入力値を1つまたは複数のLUT出力値にマッピングし、前記第1のピクセル値は、前記LUTにおける第1のLUT出力値にマッピングする第1のLUT入力値に対応する、手段と、
前記第1のLUT入力値に関してノイズ値を生成するための手段と、
前記ノイズ値に基づいて、前記第1のLUT入力値に関して第1の補間されたLUT出力値を生成するための手段と、
前記第1の補間されたLUT出力値を使用して、前記画像を変換された画像に変換するための手段と
を含む、装置。
【請求項１８】
前記第1の補間されたLUT出力値は、マッピングされないLUT出力値である、請求項17に記載の装置。
【請求項１９】
第2のLUT入力値を選択するための手段であって、前記第2のLUT入力値は第2のLUT出力値にマッピングする、手段
をさらに含む、請求項17に記載の装置。
【請求項２０】
前記第1のLUT入力値、前記第2のLUT入力値、および前記第2のLUT出力値のうちの少なくとも1つにさらに基づいて、前記第1の補間されたLUT出力値を生成するための手段
をさらに含む、請求項19に記載の装置。
【請求項２１】
前記LUTは、単一のLUTから導出された2つのLUTのうちの第1のLUTであり、前記単一のLUTは、複数のLUT入力値を1つまたは複数のLUT出力値にマッピングし、前記第1のLUTは、前記複数の入力値のサブセットを前記単一のLUTの前記1つまたは複数のLUT出力値にマッピングし、前記単一のLUTから導出された第2のLUTは、前記複数の入力値の異なるサブセットを前記単一のLUTの前記1つまたは複数のLUT出力値にマッピングする、請求項19に記載の装置。
【請求項２２】
第3のLUT入力値を選択するための手段であって、前記第3のLUT入力値は第3のLUT出力値にマッピングする、手段
をさらに含む、請求項19に記載の装置。
【請求項２３】
前記第1のLUT入力値、前記第2のLUT入力値、前記第2のLUT出力値、前記第3のLUT入力値、および前記第3のLUT出力値のうちの少なくとも1つにさらに基づいて、前記第1の補間されたLUT出力値を生成するための手段と、
前記ノイズ値、前記第1のLUT入力値に対する前記第2または第3のLUT入力値の隣接性、および前記第1のLUT入力値に対する前記第2または第3のLUT入力値の非隣接性のうちの少なくとも1つに基づいて、前記第2のLUT入力値または前記第3のLUT入力値を選択するための手段と
をさらに含む、請求項22に記載の装置。
【請求項２４】
実行されると、コンピューティングデバイスの1つまたは複数のプロセッサに、
画像の第1のピクセルに対応する第1のピクセル値をルックアップテーブル(LUT)に入力することであって、前記LUTは、1つまたは複数のLUT入力値を1つまたは複数のLUT出力値にマッピングし、前記第1のピクセル値は、前記LUTにおける第1のLUT出力値にマッピングする第1のLUT入力値に対応する、入力することと、
前記第1のLUT入力値に関してノイズ値を生成することと、
前記ノイズ値に基づいて、前記第1のLUT入力値に関して第1の補間されたLUT出力値を生成することと、
前記第1の補間されたLUT出力値を使用して、前記画像を変換された画像に変換することと
を行わせる命令を記憶した、非一時的コンピュータ可読媒体。
【請求項２５】
前記第1の補間されたLUT出力値は、マッピングされないLUT出力値である、請求項24に記載の非一時的コンピュータ可読媒体。
【請求項２６】
実行されると、前記1つまたは複数のプロセッサに、
第2のLUT入力値を選択することであって、前記第2のLUT入力値は第2のLUT出力値にマッピングする、選択すること
を行わせる命令をさらに記憶した、請求項24に記載の非一時的コンピュータ可読媒体。
【請求項２７】
実行されると、前記1つまたは複数のプロセッサに、
前記第1のLUT入力値、前記第2のLUT入力値、および前記第2のLUT出力値のうちの少なくとも1つにさらに基づいて、前記第1の補間されたLUT出力値を生成すること
を行わせる命令をさらに記憶した、請求項26に記載の非一時的コンピュータ可読媒体。
【請求項２８】
前記LUTは、単一のLUTから導出された2つのLUTのうちの第1のLUTであり、前記単一のLUTは、複数のLUT入力値を1つまたは複数のLUT出力値にマッピングし、前記第1のLUTは、前記複数の入力値のサブセットを前記単一のLUTの前記1つまたは複数のLUT出力値にマッピングし、前記単一のLUTから導出された第2のLUTは、前記複数の入力値の異なるサブセットを前記単一のLUTの前記1つまたは複数のLUT出力値にマッピングする、請求項26に記載の非一時的コンピュータ可読媒体。
【請求項２９】
実行されると、前記1つまたは複数のプロセッサに、
第3のLUT入力値を選択することであって、前記第3のLUT入力値は第3のLUT出力値にマッピングする、選択すること
を行わせる命令をさらに記憶した、請求項26に記載の非一時的コンピュータ可読媒体。
【請求項３０】
実行されると、前記1つまたは複数のプロセッサに、
前記第1のLUT入力値、前記第2のLUT入力値、前記第2のLUT出力値、前記第3のLUT入力値、および前記第3のLUT出力値のうちの少なくとも1つにさらに基づいて、前記第1の補間されたLUT出力値を生成することと、
前記ノイズ値、前記第1のLUT入力値に対する前記第2または第3のLUT入力値の隣接性、および前記第1のLUT入力値に対する前記第2または第3のLUT入力値の非隣接性のうちの少なくとも1つに基づいて、前記第2のLUT入力値または前記第3のLUT入力値を選択することと
を行わせる命令をさらに記憶した、請求項29に記載の非一時的コンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、その全体が参照により本明細書に組み込まれている、2015年9月14日に出願された米国仮特許出願第62/218,333号の利益を主張するものである。
【０００２】
本開示は、画像および/またはビデオ処理に関する。
【背景技術】
【０００３】
画像および/またはビデオ処理は、出力画像および/またはビデオにおいて処理アーティファクトを導入し得る。だが、処理アーティファクトは、処理された画像および/またはビデオに不自然な外観またはゆがんだ外観をもたらすので、望ましくないことがある。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
一般に、本開示は、画像および/またはビデオ処理のための技法、より詳細には、1つまたは複数の輪郭アーティファクト(偽輪郭、バンディング、またはポスタリゼーションアーティファクトと呼ばれることがある)を低減、除去、および/または防止するための技法について説明する。
【課題を解決するための手段】
【０００５】
一例では、本開示は、処理ユニットによって、画像の第1のピクセルに対応する第1のピクセル値をルックアップテーブル(LUT)に入力するステップであって、LUTは、1つまたは複数のLUT入力値を1つまたは複数のLUT出力値にマッピングし、第1のピクセル値は、LUTにおける第1のLUT出力値にマッピングする第1のLUT入力値に対応する、ステップと、処理ユニットによって、第1のLUT入力値に関してノイズ値を生成するステップと、処理ユニットによって、ノイズ値に基づいて、第1のLUT入力値に関して第1の補間されたLUT出力値を生成するステップと、処理ユニットによって、第1の補間されたLUT出力値を使用して、画像を変換された画像に変換するステップとを含む方法について説明する。
【０００６】
別の例では、本開示は、画像を記憶するためのメモリと、画像の第1のピクセルに対応する第1のピクセル値をルックアップテーブル(LUT)に入力することであって、LUTは、1つまたは複数のLUT入力値を1つまたは複数のLUT出力値にマッピングし、第1のピクセル値は、LUTにおける第1のLUT出力値にマッピングする第1のLUT入力値に対応する、入力することと、第1のLUT入力値に関してノイズ値を生成することと、ノイズ値に基づいて、第1のLUT入力値に関して第1の補間されたLUT出力値を生成することと、第1の補間されたLUT出力値を使用して、画像を変換された画像に変換することとを行うように構成された1つまたは複数のプロセッサとを含むデバイスについて説明する。
【０００７】
別の例では、本開示は、画像の第1のピクセルに対応する第1のピクセル値をルックアップテーブル(LUT)に入力するための手段であって、LUTは、1つまたは複数のLUT入力値を1つまたは複数のLUT出力値にマッピングし、第1のピクセル値は、LUTにおける第1のLUT出力値にマッピングする第1のLUT入力値に対応する、手段と、第1のLUT入力値に関してノイズ値を生成するための手段と、ノイズ値に基づいて、第1のLUT入力値に関して第1の補間されたLUT出力値を生成するための手段と、第1の補間されたLUT出力値を使用して、画像を変換された画像に変換するための手段とを含む装置について説明する。
【０００８】
別の例では、本開示は、実行されると、コンピューティングデバイスの1つまたは複数のプロセッサに、画像の第1のピクセルに対応する第1のピクセル値をルックアップテーブル(LUT)に入力することであって、LUTは、1つまたは複数のLUT入力値を1つまたは複数のLUT出力値にマッピングし、第1のピクセル値は、LUTにおける第1のLUT出力値にマッピングする第1のLUT入力値に対応する、入力することと、第1のLUT入力値に関してノイズ値を生成することと、ノイズ値に基づいて、第1のLUT入力値に関して第1の補間されたLUT出力値を生成することと、第1の補間されたLUT出力値を使用して、画像を変換された画像に変換することとを行わせる命令を記憶した非一時的コンピュータ可読記憶媒体について説明する。
【０００９】
本開示の1つまたは複数の例の詳細が、添付の図面および以下の説明に記載されている。本開示の他の特徴、目的および利点は、説明および図面から、ならびに特許請求の範囲から明らかになるであろう。
【図面の簡単な説明】
【００１０】
【図１】本開示の技法を使用するように構成された例示的な処理ユニットを示すブロック図である。
【図２】出力ギャップを伴うLUTマッピングの一例を示す図である。
【図３】図2に示すLUTの一例をテーブル形式で示す図である。
【図４】本開示の技法を使用するように構成された例示的な処理ユニットを示すブロック図である。
【図５】本開示の技法を使用するように構成された例示的なコンピューティングデバイスを示すブロック図である。
【図６】本明細書で説明する1つまたは複数の技法による、輪郭アーティファクトを低減または除去する一例を示す図である。
【図７】低側補間の一例によるLUT出力値補間の一例を示す図である。
【図８】高側補間の一例によるLUT出力値補間の一例を示す図である。
【図９】本明細書で説明するNOISE_TABLEの例示的な計算を示す図である。
【図１０】本開示の例示的な方法を示すフローチャートである。
【図１１】本開示の例示的な方法を示すフローチャートである。
【図１２】本開示の例示的な方法を示すフローチャートである。
【図１３】本開示の例示的な方法を示すフローチャートである。
【図１４】本開示の例示的な方法を示すフローチャートである。
【発明を実施するための形態】
【００１１】
一般に、本開示の技法は、画像および/またはビデオ処理のための技法を対象とし、より詳細には、画像における1つまたは複数の輪郭アーティファクト(偽輪郭、バンディング、またはポスタリゼーションアーティファクトと呼ばれることがある)を低減、除去、および/または防止するための技法を対象とする。
【００１２】
本明細書で使用する「画像処理」という用語は、「画像および/またはビデオ処理」を意味する。画像処理は、1つまたは複数の画像処理技法を使用して、画像を変換された画像に変換するものとして理解され得る。画像処理のいくつかの例としては、フォワードガンマ補正(GC)、逆ガンマ補正、ガンマ補正、コントラスト強調、コントラスト補正、色補正、色変換、トーンマッピング、逆トーンマッピング、任意の画像処理技法、またはそれらの任意の組合せがある。
【００１３】
本明細書で説明する技法は、ビデオフレームまたは静止画像に適用されると、1つまたは複数の画像および/またはビデオフレームを処理するときに1つまたは複数の輪郭アーティファクトを低減、除去、および/または防止し得る。本明細書で説明する技法は、画像および/またはビデオフレームに適用されると、画像を処理するときに1つまたは複数の輪郭アーティファクトを低減、除去、および/または防止し得る。ビデオの単一の画像または1つもしくは複数の画像は、画像の1つまたは複数のタイルなどの1つまたは複数の下位部分(sub-part)において処理され得る。本明細書で説明する画像処理は、任意のカラーフォーマットを使用して実行され得る。したがって、RGBまたは任意の他のカラーフォーマットが具体的に特定され得るが、本開示は、具体的に言及されたカラーフォーマットのみに限定されない。
【００１４】
本明細書で使用する「画像」という用語は、単一の画像、1つまたは複数の画像、ビデオに対応する複数の画像のうちの1つまたは複数の画像、ビデオに対応しない複数の画像のうちの1つまたは複数の画像、ビデオに対応する複数の画像(たとえば、ビデオに対応する画像のすべてまたはビデオに対応する画像のすべて未満)、単一の画像の下位部分、単一の画像の複数の下位部分、複数の画像に対応する複数の下位部分、1つまたは複数のグラフィックスプリミティブ、画像データ、グラフィカルデータなどを指し得る。この点について、本明細書で説明するように、本明細書で説明する技法を画像に適用することは、本明細書で説明する技法を単一の画像、1つまたは複数の画像、ビデオに対応する複数の画像のうちの1つまたは複数の画像、ビデオに対応しない複数の画像のうちの1つまたは複数の画像、ビデオに対応する複数の画像(たとえば、ビデオに対応する画像のすべてまたはビデオに対応する画像のすべて未満)、単一の画像の下位部分、単一の画像の複数の下位部分、複数の画像に対応する複数の下位部分、1つまたは複数のグラフィックスプリミティブ、画像データ、グラフィカルデータなどに適用することを指し得る。画像の下位部分は、1つもしくは複数のタイルまたは他のより小さい部分または画像全体よりも小さい部分の組合せを指し得る。本明細書で使用するように、ビデオは、順次提示され得る複数の画像であり得る。
【００１５】
本明細書で使用する「画像処理」という用語はより広く「ピクセル処理」を指すことができ、これは、画像処理に関して本明細書で説明する技法がピクセル処理に等しく適用され得ることを意味する。たとえば、「画像処理」および「ピクセル処理」は、コンテキストに応じて互換的に使用され得るが、本明細書で説明する技法は、そのような用語が互換的に使用されることのない場合の例では、ピクセルを処理するために使用され得る。たとえば、本明細書で説明する技法は、1つまたは複数のピクセルが画像から切り離されているときでも、1つまたは複数のピクセルの処理に適用され得る。
【００１６】
図1は、本開示の1つまたは複数の態様を実装するように構成され得る例示的な処理ユニットを示すブロック図である。図1に示すように、処理ユニット1は内部メモリ5を含み得る。図示のシステムメモリ10など、処理ユニット1の外部にあるメモリは、処理ユニット1にとってアクセス可能であり得る。たとえば、処理ユニット1は、バスを介してシステムメモリ10に通信可能に結合され得る。いくつかの例では、処理ユニット1は、バス9などの通信媒体を介してシステムメモリ10に直接的に通信可能に結合され得る。他の例では、処理ユニット1は、バスなどの通信媒体を介してシステムメモリ10に間接的に通信可能に結合され得る。たとえば、処理ユニット1は、バスなどの通信媒体を介してシステムメモリ10に直接的に通信可能に結合される別の構成要素(たとえば、異なる処理ユニット)に通信可能に直接結合され得る。
【００１７】
内部メモリ5は、たとえば、ランダムアクセスメモリ(RAM)、スタティックRAM(SRAM)、ダイナミックRAM(DRAM)、消去可能プログラマブルROM(EPROM)、電気的消去可能プログラマブルROM(EEPROM)、フラッシュメモリ、磁気データ媒体または光学記憶媒体など、1つまたは複数の揮発性または不揮発性メモリまたはストレージデバイスを含み得る。
【００１８】
システムメモリ10は、いくつかの例によれば非一時的記憶媒体であり得る。「非一時的」という用語は、記憶媒体が搬送波または伝搬信号において具現化されないことを示し得る。しかしながら、「非一時的」という用語は、システムメモリ10が非可動であること、またはその内容が静的であることを意味すると解釈されるべきではない。一例として、システムメモリ10は、コンピューティングデバイス2から取り外され、別のデバイスに移され得る。別の例として、システムメモリ10と実質的に同様のメモリがコンピューティングデバイス2に挿入され得る。いくつかの例では、非一時的記憶媒体は、経時的に変化し得るデータを(たとえば、RAM内に)記憶することができる。
【００１９】
処理ユニット1は、中央処理装置(CPU)、グラフィックス処理ユニット(GPU)、ディスプレイ処理ユニット、デジタル信号処理ユニット(DSP)、または任意の他の処理ユニットであり得る。処理ユニット1は、コンピューティングデバイスのマザーボードに組み込まれ得る。いくつかの例では、処理ユニット1は、コンピューティングデバイスのマザーボード内のポートにインストールされたグラフィックスカード上に存在し得、またはさもなければコンピューティングデバイスと相互動作するように構成された周辺デバイス内に組み込まれ得る。いくつかの例では、処理ユニット1は、システムオンチップ(SOC)中など、CPUを有するオンチップであり得る。処理ユニット1は、1つもしくは複数のマイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、算術論理ユニット(ALU)、デジタル信号プロセッサ(DSP)、ディスクリート論理、ソフトウェア、ハードウェア、ファームウェア、他の等価な集積論理回路もしくはディスクリート論理回路、またはそれらの任意の組合せなどの1つまたは複数のプロセッサを含み得る。処理ユニット1は、1つまたは複数のプロセッサコアを含む場合もあり、その結果、処理ユニット1は、マルチコアプロセッサと呼ばれる場合がある。いくつかの例では、処理ユニット1は、グラフィックス処理に適した超並列処理能力を処理ユニット1に提供する集積論理回路および/またはディスクリート論理回路を含む特殊ハードウェアであり得る。
【００２０】
たとえば、図5について以下でより詳細に述べるが、処理ユニット1は、CPU6、GPU12、デジタル信号プロセッサ(DSP)11、ディスプレイプロセッサ14、ビデオコーデック7、または図5に示すコンピューティングデバイス2の別の構成要素(図示されているかどうかを問わない)であり得る。別の例として、処理ユニット1は、画像処理または任意のピクセル処理を実行するように構成された任意の処理ユニットであり得る。別の例として、処理ユニット1は、画像処理または任意のピクセル処理を実行するためにルックアップテーブル(LUT)を使用するように構成された任意の処理ユニットであり得る。
【００２１】
いくつかの例では、処理ユニット1は、本明細書で説明する1つまたは複数の画像処理技法が実行され得るデータ(たとえば、本明細書で定義する画像)を受信、送信、および/または生成するように構成され得る。たとえば、処理ユニット1は、本明細書で説明する1つまたは複数の画像処理技法が実行され得るデータを別の処理ユニット(たとえば、別の処理ユニット1)または任意の他のソース(たとえば、システムメモリ10、内部メモリ5、もしくは任意の他のメモリ空間など、任意の他の処理ユニットもしくは記憶媒体)から受信するように構成され得る。別の例として、処理ユニット1は、本明細書で説明する1つまたは複数の画像処理技法が実行され得るデータを受信、送信、および/または生成するように構成されたGPU(たとえば、GPU12)であり得る。そのようなデータは、たとえば、CPU(たとえば、CPU6)もしくは任意の他のソースから受信されるグラフィカルデータ、および/または、たとえば、ディスプレイプロセッサ(たとえば、ディスプレイプロセッサ14)に送信されるグラフィカルデータを含み得る。他の例では、処理ユニット1は、本明細書で説明する1つまたは複数の画像処理技法が実行され得るデータを受信、送信、および/または生成するように構成されたディスプレイ処理ユニット(たとえば、ディスプレイプロセッサ14)であり得る。そのようなデータは、たとえば、CPU(たとえば、CPU6)、GPU(たとえば、GPU12)、または任意の他のソースから受信されるグラフィカルデータを含み得る。他の例では、処理ユニット1は、本明細書で説明する1つまたは複数の画像処理技法が実行され得るデータを受信、送信、および/または生成するように構成されたCPU(たとえば、CPU6)であり得る。そのようなデータは、たとえば、別のCPU、GPU(たとえば、GPU12)、または任意の他のソースから受信されるグラフィカルデータを含み得る。他の例では、処理ユニット1は、本明細書で説明する1つまたは複数の画像処理技法が実行され得るデータを受信、送信、および/または生成するように構成されたデジタル信号プロセッサ(たとえば、DSP11)であり得る。
【００２２】
本明細書で説明する1つまたは複数の技法は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。たとえば、本明細書で説明する1つまたは複数の技法がハードウェアで実装される場合、処理ユニット1は、そのようなハードウェア、あるいは本明細書で説明する1つまたは複数の技法を実行するように一緒に動作するように構成された複数のハードウェア構成要素の1つであり得る。そのような例では、ハードウェアは、実行されると、本明細書で説明する1つまたは複数の技法を実行し得るソフトウェアまたはファームウェアを実行するように構成されることも、構成されないこともある。任意のソフトウェアおよび/またはファームウェアは、ハードウェアのオンチップメモリ(たとえば、処理ユニット1の内部メモリ5)または任意のハードウェアの外部メモリ(たとえば、システムメモリ10)など、非一時的記憶媒体上に記憶され得る。
【００２３】
処理ユニット1は、画像処理を実行するために1つまたは複数のルックアップテーブル(LUT)を使用するように構成され得る。たとえば、1つまたは複数のLUTは、LUTの入力-出力マッピングを介して、画像を変換された画像に変換し得る。LUTの入力-出力マッピングは、LUTマッピングまたはLUTマッピング構成と呼ばれ得る。LUTマッピングは、nビットの入力値(たとえば、入力ピクセル値)をnビットまたはmビットの出力値(たとえば、出力ピクセル値)にマッピングし得、ここでnおよびmは任意の整数であり得、nはmとは異なる。たとえば、LUTは8ビットの入力ピクセル値を16ビットの出力ピクセル値にマッピングし得る。そのような例では、LUTは、可能な各入力ピクセル値に対応する256個のLUT入力値(たとえば、0〜255)を含むことができ、LUTは、各LUT入力値を1つまたは複数の16ビットのLUT出力値(たとえば、0から65,535に及ぶ1つまたは複数のピクセル値)にマッピングし得る。
【００２４】
LUTマッピングは、フォワードガンマ補正(GC)、逆ガンマ補正、ガンマ補正、コントラスト強調、コントラスト補正、色補正、色変換、トーンマッピング、逆トーンマッピング、任意の画像処理技法、またはそれらの任意の組合せに対応するか、あるいはそれらを実現し得る。処理ユニット1は、フォワードガンマ補正(GC)、逆ガンマ補正、ガンマ補正、コントラスト強調、コントラスト補正、色補正、色変換、トーンマッピング、逆トーンマッピング、任意の画像処理技法、またはそれらの任意の組合せなどの画像処理を実行するように構成され得る。したがって、「画像処理」という用語は、画像を変換された画像に変換するものとして理解され得る。
【００２５】
本明細書で説明する技法は、画像処理の間に輪郭アーティファクトの導入を低減もしくは防止する一方で、または画像処理の間に輪郭アーティファクトを除去する一方で、十分な柔軟性および従来のLUTの使いやすさを保持するLUTベースのマッピングアーキテクチャを含み得る。たとえば、処理ユニット1は、隣接するLUT入力値(またはいくつかの例では隣接しないLUT入力値)の間で線形補間または非線形補間するように構成され得る。一例として、隣接するテーブルエントリの間で線形補間することによって、処理ユニット1は、出力において隣接するエントリの間で1つまたは複数の値(たとえば、すべての値)を生成するように構成され得る。このようにして、たとえば、処理ユニット1は、マッピングされないLUT出力値を、LUTにおける特定のLUT入力値にマッピングされないにもかかわらず、出力するように構成され得る。そうすることによって、処理ユニット1は、LUT出力値のマッピングのギャップを除去するように構成され得る。処理ユニット1は、本明細書で説明する1つまたは複数の技法が適用され得る任意のLUTのサイズを大きくすることなく、本明細書で説明する1つまたは複数の技法を実装するように構成され得、これは、LUTのサイズの拡大を伴う技法と比較して、LUTを記憶するためのより少ないメモリ空間を利用するように処理ユニット1が構成され得ることを意味する。また、ユーザの観点から、処理ユニット1のためのプログラミングモデルが基本的LUTの場合と同じままであるので、処理ユニット1は、プログラムするのが簡単であり得る。
【００２６】
LUTに基づいて処理するとき、LUTへの入力は入力ピクセル値であり、LUTからの出力は出力ピクセル値である。いくつかの例では、「入力ピクセル値」という用語およびそれの同等物は、「LUT入力値」という用語およびそれの同等物と同義であるか、または互換性があり得る。LUTは、1つまたは複数の入力ピクセル値を1つまたは複数の出力ピクセル値にマッピングし得る。ピクセルは、1つまたは複数のピクセル値によって定義され得る。たとえば、ピクセルは、1つまたは複数の色成分を含むことができ、各色成分が、対応するピクセル値を有し得る。一例として、RGBカラーフォーマットされたピクセルは、3つのピクセル値、すなわち、赤ピクセル値、緑ピクセル値、および青ピクセル値を含む。ピクセル値は、1つまたは複数のビットによって定義され得る。たとえば、入力ピクセル値は1つまたは複数のビットであり得、出力ピクセル値は1つまたは複数のビットであり得る。LUTベースの画像処理は、輪郭アーティファクトなど、画像処理アーティファクトを導入し得る。輪郭アーティファクトは、たとえば、値のギャップを有するLUTにおける隣接テーブルエントリから生じることがあり、値のギャップは、非線形マッピングにおいて発生し得る。一例として、1つのLUTマッピング構成は次のようにマッピングし得る。0から0、1から1、2から3、3から4、および4から5。この例によれば、入力シーケンス[0,1,2,3,4]は[0,1,3,4,5]にマッピングされ得る。出力における1から3へのジャンプは、ギャップの例である。このギャップは、出力が1から3にジャンプし、ギャップが2であるので、ステップ不連続と呼ばれ得る。この例では、値2は、出力において決して現れない。そのようなギャップは、特に、たとえば、グラディエントランプ画像上に、目に見えるバンディングをもたらし得る。輪郭アーティファクトをもたらすギャップは、非線形マッピングを用いる任意のLUTから、またいくつかの例では、線形マッピングを用いるLUTからも生じ得る。
【００２７】
本明細書で説明する画像処理技法は、入力画像への輪郭アーティファクト(たとえば、バンディングまたはポスタリゼーション)の導入を低減または防止し得るディザリング(またはランダム化)技法を含む。本明細書で説明する画像処理技法は、既存の輪郭アーティファクト(たとえば、バンディングまたはポスタリゼーション)を低減するか、または入力画像から除去し得るディザリング技法を含む。たとえば、処理ユニット1は、入力画像への輪郭アーティファクト(たとえば、バンディングまたはポスタリゼーション)の導入を低減または防止し得るディザリング技法を使用するように構成され得る。別の例として、処理ユニット1は、既存の輪郭アーティファクト(たとえば、バンディングまたはポスタリゼーション)を低減するか、または入力画像から除去し得るディザリング技法を使用するように構成され得る。
【００２８】
図2は、出力ギャップを伴うLUTマッピングの一例を示す。図2に示すLUTマッピングは、非線形マッピングの一例である。図2におけるLUTマッピングは図式的に表されているが、LUTマッピングは、単純なテーブル、配列の組合せ、または1つもしくは複数の出力値への1つもしくは複数の入力値のマッピングを伝える任意の他の表現を使用して示されてよいことを理解されたい。処理ユニット1は、任意のLUTに関して、LUTが図形式によるものではない場合に、(図2に示す図式表現などの)図式表現を導出するように構成され得る。たとえば、図3は、図2に示すLUTの一例をテーブル形式で示す。いくつかの例では、本開示全体にわたるLUTの図式表現は、性質上概念的であり、処理ユニット1は、テーブル、配列の組合せ、または1つもしくは複数の出力値への1つもしくは複数の入力値のマッピングを伝える任意の他の表現から、本明細書で説明する1つまたは複数の技法を実行するように構成され得る。
【００２９】
図2の例では、[0,4,16,24,28]のLUT出力値は、各LUT入力値にそれぞれマッピングする、マッピングされたLUT出力値の例である。たとえば、0のLUT入力値は0のLUT出力値にマッピングし、1のLUT入力は0のLUT出力値にマッピングし、2のLUT入力は4のLUT出力値にマッピングし、3のLUT入力は16のLUT出力値にマッピングし、4のLUT入力は24のLUT出力値にマッピングし、5のLUT入力は28のLUT出力値にマッピングし、6のLUT入力は28のLUT出力値にマッピングし、7のLUT入力値は28のLUT出力値にマッピングする。[1,2,3,5,6,7,8,9,10,11,12,13,14,15,17,18,19,20,21,22,23,25,26,27,29,30,31]のLUT出力値は、各LUT入力値にそれぞれマッピングしない、マッピングされないLUT出力値の例である。
【００３０】
入力が、0から7に進む円滑なグラディエントである場合、出力において急激なジャンプが、入力が2から3に、またより小さい程度では3から4に推移する場合に見られ得る。たとえば、[0,1,2,3,4,5,6,7]の入力シーケンスが[0,0,4,16,24,28,28,28]にマッピングされ得る。出力における4から16へのジャンプは、ギャップの例であり、出力における16から24へのジャンプは、ギャップの別の例である。処理ユニット1は、輪郭アーティファクト(たとえば、バンディング)の導入を低減または防止することになり得る、そのようなギャップの導入を低減または防止し得るディザリング技法を使用するように構成され得る。たとえば、処理ユニット1は、LUTの入力においてランダム変動または非ランダム変動を導入し得る。
【００３１】
LUTの入力において変動を導入すること(たとえば、本明細書で説明する1つまたは複数の技法)は、LUTの入力に変動を導入すること(たとえば、入力ピクセル値入力をディザリングし、ディザリングされたピクセル値入力をLUTへの入力値として使用すること)とは異なることを理解されたい。たとえば、処理ユニット1は、ピクセル位置(x,y)に対応するピクセル値をLUTに入力するように構成されてよく、(x,y)が画像における任意のピクセル位置に対応する。一例として、画像における位置(3,4)のピクセルは、3つのピクセル値を含み得る。3つのピクセル値のうちの1つは、8ビット値として表され得る。処理ユニット1は、8ビット値をLUTへの入力として使用し、LUTの入力において変動(たとえば、ディザリング)を適用することを、たとえば、入力ピクセル値自体をディザリングし(たとえば、8ビット値をnビット値にディザリングし、ここで、nが8よりも大きいか、8よりも小さいか、または8に等しい)、ディザリングされた入力ピクセル値をLUTへの入力として使用することの代わりに行うように構成され得る。
【００３２】
たとえば、処理ユニット1は、対応するテーブルエントリ(すなわち、LUTに入るピクセル値に対応するLUT入力値)とLUTにおけるそれの隣接するネイバーおよび/または隣接しないネイバーとの間で変動する出力を生成するためにディザリングを使用するように構成され得る。ピクセル値を、LUTに値を入力する前にディザリングすることは、いくつかの例では望ましくないと見なされ得る。一方、他の例では、処理ユニット1は、最初にピクセル値をディザリングし、ディザリングされたピクセル値をLUTへの入力として使用し、次いで本明細書で説明するようにLUT入力値をディザリングするように構成され得る。したがって、LUT入力値は、入力ピクセル値と同義であるものとして本明細書で説明され得るが、これは、LUTに入力されるピクセル値をLUT入力値として使用するように処理ユニット1が構成され得るからである。しかしながら、LUT入力値をディザリングすることは、LUTに入力されるピクセル値をディザリングすることとは異なる。たとえば、ピクセル値は、ディザリングする前の第1のLUT入力値に対応し得る。ピクセル値をディザリングした後、ディザリングされたピクセル値は、第1のLUT入力値の代わりに第2のLUT入力値に対応し得る。ピクセル値をLUTに入る前にディザリングすることによって、破損に遭遇する。処理ユニット1は、LUTに入力されるデータを破損させるのを回避するために、実際のピクセル値の代わりにLUT入力値をディザリングするように構成され得る。したがって、ピクセル値およびLUT入力値という用語は、本明細書では、入力ピクセル値をLUT入力値として使用するように処理ユニット1が構成され得る場合の例において互換的に使用され得ることを理解されたい。また、ピクセル値をディザリングすることは、ピクセル値に対応するLUT入力値をディザリングすることとは異なることを理解されたい。たとえば、ピクセル値がディザリングされる場合、ピクセル値およびLUT入力値という用語は、本明細書では互換的に使用されないことがある。代わりに、この例では、ディザリングされたピクセル値およびLUT入力値という用語が互換的に使用され得る。
【００３３】
LUTの入力において導入するように処理ユニット1が構成され得るランダムノイズまたは非ランダムノイズは、本明細書で説明する1つまたは複数の技法によってLUTの出力において変動に変換され得、その結果、通常はギャップまたは欠落した出力値(たとえば、マッピングされない出力値)が存在する所で中間値が生成される。一例として、図2に示す例を参照すると、1つまたは複数のマッピングされないLUT出力値(たとえば、入力ピクセル値にマッピングされない1つまたは複数の出力ピクセル値)が、LUTが入力ピクセル値をそのような1つまたは複数のマッピングされないLUT出力値(たとえば、図2に示す例では出力ピクセル値5〜15など)に明示的にマッピングしないにもかかわらず、本明細書で説明する1つまたは複数の技法を使用して出力に現れ得る。
【００３４】
いくつかの例では、処理ユニット1は、本明細書で説明する1つまたは複数の技法を実行するとともに、LUTへの入力をディザリングし、かつ/またはLUTの出力値をディザリングするように構成され得る。LUTの出力をディザリングすることは、LUT出力値を補間することとは区別されるべきである。たとえば、画像における位置(4,7)のピクセルは、3つのピクセル値を含み得る。3つのピクセル値のうちの1つは、8ビット値として表され得る。処理ユニット1は、8ビット値をLUTへの入力として使用するように構成され得る。LUT入力値は、LUT出力値にマッピングし得る。(いくつかの例では)マッピングされたLUT出力値を出力する代わりに、処理ユニット1は、本明細書で説明する1つまたは複数の技法に従って、LUT入力値に関してLUT出力値を補間するように構成され得る。LUT入力値に関する補間されたLUT出力値は、処理されているLUT入力値にマップするLUT出力値とは異なり得る。次に、処理ユニット1は、補間されたLUT出力値をディザリングする(たとえば、補間されたLUT出力値に変動を適用する)ように構成され得る。
【００３５】
図4は、処理ユニット1の一例を示す。図4に示す例では、処理ユニット1は、画像処理を実行するように構成される。たとえば、図4は処理ユニット1を、任意の画像処理のために本明細書で説明する1つまたは複数の技法を実行するように構成されたものとして示している。たとえば、処理ユニット1は、フォワードガンマ補正(GC)、逆ガンマ補正、ガンマ補正、コントラスト強調、コントラスト補正、色補正、色変換、トーンマッピング、逆トーンマッピング、任意の画像処理技法、またはそれらの任意の組合せなどの画像処理を実行するように構成され得る。図示の例のようないくつかの例では、処理ユニット1は、本明細書で説明する1つまたは複数の技法に従って、R'G'B'チャネルに対するディザリングを伴う逆ガンマ補正(IGCD:inverse gamma correction with dithering)を実行するように構成され得る。ここで言及されるディザリングは、本開示の1つまたは複数の技法を指す。たとえば、図示のように、処理ユニット1は、本明細書で説明する1つまたは複数の技法に従ってルックアップテーブル(LUT)を使用して、10ビットのR'G'B'ガンマ補正済み入力が12ビットのRGB(線形光)出力に変換されるように、IGCDを実行するように構成され得る。いくつかの例では、IGCDは、処理ユニット1によって実行されると、ソースコンテンツを符号化するために使用される光電子伝達関数を適合させるように処理ユニット1が構成されるように、ソフトウェアによってプログラムされ得る。たとえば、IGCDは、ガンマ補正済みR'G'B'入力を線形光RGB出力に変換するために実行され得る。
【００３６】
いくつかの例では、ルックアップテーブル(LUT)はソフトウェアおよび/またはハードウェアによって、単調に増加するように制限され得る。しかしながら、隣接するLUTエントリ間の値の差は変動し得る。たとえば、1つのLUTエントリから次のLUTエントリへの値の増加は変動し得る。したがって、他よりも大きいギャップがいくつかあり得る。これらのより大きいギャップは、1つまたは複数のLUTを使用する画像処理技法の表示された画像において可視的に識別可能である出力のギャップを導入し得る。画像処理による出力のそのような可視的に識別可能なギャップは、輪郭アーティファクト(たとえば、バンディング)などの画像処理アーティファクトをもたらすこと(またはさもなければ画像処理アーティファクトと呼ばれること)がある。たとえば、ソースコンテンツ(たとえば、入力画像などの入力コンテンツ)が円滑なグラディエントを含んでいるとき、LUTギャップは、輪郭アーティファクト(たとえば、バンディングアーティファクト)などの視覚的アーティファクトをもたらし得る。本明細書で説明する画像処理技法は、入力画像への輪郭アーティファクトの導入を低減または防止し得るディザリング技法を含む。本明細書で説明する画像処理技法は、既存の輪郭アーティファクトを低減するか、または入力画像から除去し得るディザリング技法を含む。
【００３７】
図4に示す例は、画像処理(この例では逆ガンマ補正)の間に輪郭アーティファクトの導入を低減または防止するために本明細書で説明する1つまたは複数のディザリング技法により実装された画像処理技法(たとえば、逆ガンマ補正)の一例にすぎない。
【００３８】
本開示の1つまたは複数の技法は、実行されている画像処理に応じて、入力画像のピクセルサイズ(たとえば、ビット/ピクセルまたはbpp)が拡大するか、縮小するか、または同じままである場合の例に適用され得る。たとえば、図4の例に示すように、画像に対応する10ビットのピクセル値または表現(たとえば、10ビット/ピクセルまたはbpp)は、1つまたは複数のLUTを使用して12ビットのピクセル値または表現に拡大され得る。1つまたは複数の異なるLUTは、1つまたは複数のピクセル値に対応し得る。たとえば、RGBの例を参照すると、1つまたは複数のLUTはRチャネルに対応することができ、1つまたは複数のLUTはGチャネルに対応することができ、1つまたは複数のLUTはBチャネルに対応することができる。いくつかの例では、それぞれR、G、およびBチャネルに対応する1つまたは複数のLUTは、同じであることまたは異なることがある。たとえば、チャネルごとに同じ1つまたは複数のLUTが使用され得る簡略化された手法が実装され得る。
【００３９】
図5は、本開示の1つまたは複数の態様を実装するように構成され得る例示的なコンピューティングデバイスを示すブロック図である。図5に示すように、コンピューティングデバイス2は、たとえば、パーソナルコンピュータ、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、コンピュータワークステーション、ビデオゲームプラットフォームもしくはコンソール、モバイル電話(たとえば、セルラー電話もしくは衛星電話)、固定電話、インターネット電話、ハンドヘルドデバイス(たとえば、ポータブルビデオゲームデバイスもしくは携帯情報端末(PDA))、ウェアラブルコンピューティングデバイス、パーソナル音楽プレーヤ、ビデオプレーヤ、ディスプレイ(たとえば、ディスプレイデバイス)、テレビジョン、テレビジョンセットトップボックス、サーバ、中間ネットワークデバイス、メインフレームコンピュータ、任意のモバイルデバイス、またはグラフィカルデータを処理および/もしくは表示する任意の他のタイプのデバイスであり得る。図5の例では、コンピューティングデバイス2は、中央処理装置(CPU)6、システムメモリ10、およびグラフィックス処理ユニット(GPU)12を含み得る。CPU6は、本明細書で説明する1つまたは複数の技法に従って画像処理を実行するように構成され得る。GPU12は、本明細書で説明する1つまたは複数の技法に従って画像処理を実行するように構成され得る。
【００４０】
コンピューティングデバイス2は、ディスプレイプロセッサ14、トランシーバ3、ユーザインターフェース4、ビデオコーデック7、およびディスプレイ8も含み得る。いくつかの例では、ビデオコーデック7は、CPU6またはコンピューティングデバイス2の他の構成要素によって処理されるように構成された1つまたは複数のソフトウェアアプリケーション18のうちのソフトウェアアプリケーションなどのソフトウェアアプリケーションであり得る。他の例では、ビデオコーデック7は、CPU6とは異なるハードウェア構成要素、CPU6とは異なる構成要素上で実行されるソフトウェアアプリケーション、またはハードウェアとソフトウェアとの組合せであり得る。1つまたは複数のソフトウェアアプリケーション18は、CPU6の内部にあるものとして概念的に示されているが、1つまたは複数のソフトウェアアプリケーション18は、システムメモリ10、コンピューティングデバイス2の外部にあるがコンピューティングデバイス2にとってアクセス可能なメモリ、またはそれらの組合せに記憶されてよいことを理解されたい。外部メモリは、たとえば、コンピューティングデバイス2にとって連続的に間欠的にアクセス可能であり得る。
【００４１】
ディスプレイプロセッサ14は、本明細書で説明する1つまたは複数の技法に従って画像処理を実行するように構成され得る。ディスプレイプロセッサ14は、本明細書で説明する1つまたは複数の技法を実装し得るピクセル処理ユニットを含み得る。ディスプレイプロセッサ14は、たとえば、タイルベースのアーキテクチャまたはラインベースのアーキテクチャを利用し得る。いくつかの例では、タイルは、高さおよび幅を含むピクセルのエリア表現であり、高さが1つまたは複数のピクセルであり、幅が1つまたは複数のピクセルである。そのような例では、タイルは性質上、長方形または正方形であり得る。他の例では、タイルは、長方形または正方形とは異なる形状であり得る。
【００４２】
ディスプレイプロセッサ14は、少なくとも1つのメモリから複数の画像層(たとえば、前景および背景)をフェッチし得る。たとえば、ディスプレイプロセッサ14は、GPUがピクセル表現の形式でグラフィカルデータを出力するフレームバッファおよび/または他のメモリから画像層をフェッチし得る。別の例として、ディスプレイプロセッサ14は、ビデオコーデック7のオンチップメモリ、GPU12のオンチップメモリ、出力バッファ16、出力バッファ17、システムメモリ10、または任意の他のソースもしくはメモリ空間から画像層をフェッチし得る。複数の画像層は、前景層および/または背景層を含み得る。
【００４３】
ディスプレイプロセッサ14は、複数の層からのピクセルを処理し得る。ディスプレイプロセッサ14によって実行され得る例示的なピクセル処理は、アップサンプリング、ダウンサンプリング、スケーリング、回転、および他のピクセル処理を含み得る。たとえば、ディスプレイプロセッサ14は、前景画像層および/または背景画像層に関連するピクセルを処理し得る。ディスプレイプロセッサ14は、複数の層からのピクセルを混合し、混合されたピクセルをタイルフォーマットでメモリに書き戻し得る。次いで、混合されたピクセルは、ラスタフォーマットでメモリから読み取られ、提示のためにディスプレイ8に送られ得る。
【００４４】
ビデオコーデック7は、符号化されたビデオデータを受信し得る。コンピューティングデバイス2は、符号化されたビデオデータを、たとえば、記憶媒体、ネットワークサーバ、またはソースデバイス(たとえば、サーバなど、データを符号化したか、またはさもなければ符号化されたビデオデータをコンピューティングデバイス2に送信したデバイス)から受信し得る。他の例では、コンピューティングデバイス2は、それ自体で、符号化されたビデオデータを生成し得る。たとえば、コンピューティングデバイス2は、静止画像またはビデオをキャプチャするためのカメラを含み得る。キャプチャされたデータ(たとえば、ビデオデータ)はビデオコーデック7によって符号化され得る。符号化されたビデオデータは、ビデオデータを復号する際にビデオコーデック7などのビデオデコーダによって使用するための、ビデオエンコーダによって生成された様々なシンタックス要素を含み得る。
【００４５】
ビデオコーデック7は、ビデオエンコーダとビデオデコーダの両方であるものとして本明細書で説明されるが、他の例では、ビデオコーデック7は符号化機能を有しないビデオデコーダであり得ることを理解されたい。ビデオコーデック7は、本明細書で説明する1つまたは複数の技法に従って画像処理を実行するように構成され得る。ビデオコーデック7によって復号および/または処理されたビデオデータは、任意の宛先に送られ得る。たとえば、復号されたビデオデータは、ディスプレイプロセッサ14に直接送られてよく、ディスプレイ8に直接送られてよく、またはシステムメモリ10、出力バッファ16、もしくは出力バッファ17などのディスプレイプロセッサ14もしくはGPU12にとってアクセス可能なメモリに送られてよい。図示の例では、ビデオコーデック7はディスプレイプロセッサ14に接続されており、これは、復号されたビデオデータがディスプレイプロセッサ14に直接送られ、かつ/またはディスプレイプロセッサ14にとってアクセス可能なメモリに記憶されることを意味する。そのような例では、ディスプレイプロセッサ14は、GPU12に関連するメモリ(たとえば、出力バッファ16)からグラフィカル(静止画像またはビデオ)データを取得するために1つまたは複数のメモリ要求を発行するときと同様の方法で、復号されたビデオデータをメモリから取得するために1つまたは複数のメモリ要求を発行し得る。
【００４６】
ビデオコーデック7は、ITU-T H.264、アドバンストビデオコーディング(AVC)、またはITU-T H.265、高効率ビデオコーディング(HEVC)規格などのビデオ圧縮規格に従って動作し得る。しかしながら、本開示の技法は、いかなる特定のコーディング規格にも限定されない。
【００４７】
トランシーバ3、ビデオコーデック7、およびディスプレイプロセッサ14は、CPU6および/もしくはGPU12と同じ集積回路(IC)の一部である場合があるか、CPU6および/もしくはGPU12を含む1つもしくは複数のICの外部にある場合があるか、またはCPU6および/もしくはGPU12を含むICの外部にあるIC内に形成される場合がある。たとえば、ビデオコーデック7は、1つもしくは複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、算術論理ユニット(ALU)、ディスクリート論理、ソフトウェア、ハードウェア、ファームウェア、またはそれらの任意の組合せなど、様々な適切なエンコーダ回路のいずれかとして実装され得る。
【００４８】
コンピューティングデバイス2は、明確にするために図5に示されていない、追加のモジュールまたは処理ユニットを含み得る。たとえば、コンピューティングデバイス2は、コンピューティングデバイス2がモバイルワイヤレス電話である場合の例で電話通信を遂行するために、スピーカーおよびマイクロフォン(いずれも図5には示されていない)を含むことができ、または、コンピューティングデバイス2がメディアプレーヤである場合に、スピーカーを含むことができる。コンピューティングデバイス2はまた、カメラを含み得る。さらに、コンピューティングデバイス2中に示される様々なモジュールおよびユニットは、必ずしもコンピューティングデバイス2のあらゆる例において必要であるとは限らない。たとえば、コンピューティングデバイス2が、外部ユーザインターフェースまたはディスプレイとインターフェースするように装備されたデスクトップコンピュータまたは他のデバイスである場合の例では、ユーザインターフェース4およびディスプレイ8は、コンピューティングデバイス2の外部にあってもよい。
【００４９】
ユーザインターフェース4の例としては、限定はしないが、トラックボール、マウス、キーボード、および他のタイプの入力デバイスがある。ユーザインターフェース4は、タッチスクリーンである場合もあり、ディスプレイ8の一部として組み込まれる場合がある。トランシーバ3は、コンピューティングデバイス2と別のデバイスまたはネットワークとの間のワイヤレス通信またはワイヤード通信を可能にするための回路を含み得る。トランシーバ3は、変調器、復調器、増幅器、およびワイヤード通信またはワイヤレス通信のための他のそのような回路を含み得る。いくつかの例では、トランシーバ3は、CPU6と統合され得る。
【００５０】
CPU6は、実行用のコンピュータプログラムの命令を処理するように構成された中央処理装置(CPU)などのマイクロプロセッサである場合がある。CPU6は、コンピューティングデバイス2の動作を制御する汎用または専用プロセッサを含むことができる。ユーザは、CPU6に1つまたは複数のソフトウェアアプリケーション18などの1つまたは複数のソフトウェアアプリケーションを実行させるために、入力をコンピューティングデバイス2に与え得る。CPU6上で(またはコンピューティングデバイス2の1つもしくは複数の他の構成要素上で)実行される1つまたは複数のソフトウェアアプリケーション18は、たとえば、オペレーティングシステム、ワードプロセッサアプリケーション、電子メールアプリケーション、スプレッドシートアプリケーション、メディアプレーヤアプリケーション、ビデオゲームアプリケーション、グラフィカルユーザインターフェースアプリケーション、または2Dもしくは3Dグラフィックスのためにグラフィカルデータを使用する別のタイプのソフトウェアアプリケーションを含み得る。本明細書で説明するように、処理ユニット1は、たとえば、図5に関して説明する1つまたは複数の構成要素であり得る。したがって、たとえば、処理ユニット1は、1つまたは複数のソフトウェアアプリケーション(たとえば、1つまたは複数のソフトウェアアプリケーション18)を実行するように構成され得ることを理解されたい。図5の任意の構成要素に関係するいずれの記述も、処理ユニット1の1つまたは複数の例について等しく説明し得る。
【００５１】
CPU6は、GPU12の動作を制御するためのGPUドライバ22を実行するように構成され得る。ユーザは、ユーザインターフェース4を介してコンピューティングデバイス2に結合された、キーボード、マウス、マイクロフォン、タッチパッド、または別の入力デバイスなど、1つまたは複数の入力デバイス(図示せず)を介して、コンピューティングデバイス2に入力を提供することができる。
【００５２】
たとえば、CPU6上で実行される1つまたは複数のソフトウェアアプリケーション18は、ディスプレイ8へのグラフィックスデータのレンダリングを引き起こすようCPU6に命令する1つまたは複数のグラフィックスレンダリング命令を含み得る。命令は、3Dグラフィックスを処理するための命令ならびに2Dグラフィックスを処理するための命令を含み得る。いくつかの例では、ソフトウェア命令は、グラフィックスアプリケーションプログラミングインターフェース(API)に適合し得る。グラフィックスAPIは、オープングラフィックスライブラリ(OpenGL(登録商標))API、オープングラフィックスライブラリ組込み型システム(OpenGL ES:Open Graphics Library Embedded Systems)API、Direct3D API、X3D API、RenderMan API、WebGL API、Open Computing Language(OpenCL(商標))、CUDA(すなわち、Compute Unified Device Architecture)などのNVIDIA Corporationによって開発された並列計算プラットフォームおよびAPIモデル、または任意の他の公開規格もしくは専有規格のGPU計算APIであり得る。CPU6上で実行される1つまたは複数のソフトウェアアプリケーション18のグラフィックスレンダリング命令を処理するために、CPU6は1つまたは複数のソフトウェアアプリケーション18の実行中に、GPU12にグラフィックスデータのレンダリングの一部または全部を実行させるために、1つまたは複数のグラフィックスレンダリングコマンドをGPU12に(たとえば、GPUドライバ22を通じて)発行してもよい。いくつかの例では、レンダリングされるべきグラフィックスデータは、グラフィックスプリミティブ、たとえば、点、線、三角形、四角形、三角形ストリップなどのリストを含み得る。
【００５３】
1つまたは複数のソフトウェアアプリケーション18は、GPU12の任意の機能を利用するか、またはGPU12の任意の機能を利用しない、任意のアプリケーションであり得る。たとえば、1つまたは複数のソフトウェアアプリケーション18は、CPU6による実行により、1つまたは複数のコマンドが処理のためにGPU12にオフロードされるようになる(またはならない)任意のアプリケーションであり得る。1つまたは複数のソフトウェアアプリケーション18の例としては、CPU6に3DレンダリングコマンドをGPU12にオフロードさせるアプリケーション(たとえば、ビデオゲームアプリケーション)、CPU6に2DレンダリングコマンドをGPU12にオフロードさせるアプリケーション(たとえば、ユーザインターフェースアプリケーション)、またはCPU6に一般的な計算タスクをGPU12にオフロードさせるアプリケーション(たとえば、GPGPUアプリケーション)があり得る。別の例として、1つまたは複数のソフトウェアアプリケーション18は、CPU6、GPU12、ディスプレイプロセッサ14、または任意の他の構成要素など、コンピューティングデバイス2の任意の構成要素上に存在するファームウェアを含み得る。ファームウェアは、GPU12の機能の利用または呼出しを行うことも行わないこともある。
【００５４】
1つまたは複数のソフトウェアアプリケーション18は、グラフィカルユーザインターフェース(GUI)、グラフィックスシーン、グラフィカルデータ、または他のグラフィックス関連データをレンダリングするようGPU12に命令する1つまたは複数の描画命令を含み得る。たとえば、描画命令は、GPU12によってレンダリングされるべき1つまたは複数のグラフィックスプリミティブのセットを定義する命令を含み得る。いくつかの例では、描画命令は、GUIにおいて使用される複数のウィンドウ処理サーフェスの全部または一部をまとめて定義してもよい。追加の例では、描画命令は、アプリケーションによって定義されたモデル空間またはワールド空間内に1つまたは複数のグラフィックスオブジェクトを含むグラフィックスシーンの全部または一部をまとめて定義してもよい。
【００５５】
1つまたは複数のソフトウェアアプリケーション18は、1つまたは複数のグラフィックスプリミティブを表示可能なグラフィックス画像にレンダリングするための1つまたは複数のコマンドをGPU12に発行するために、グラフィックスAPIを介してGPUドライバ22を呼び出し得る。たとえば、1つまたは複数のソフトウェアアプリケーション18は、プリミティブ定義をGPU12に提供するために、グラフィックスAPIを介してGPUドライバ22を呼び出し得る。いくつかの事例では、プリミティブ定義は、描画プリミティブ、たとえば、三角形、長方形、三角形ファン、三角形ストリップなどのリストの形でGPU12に提供され得る。プリミティブ定義は、レンダリングされるべきプリミティブに関連する1つまたは複数の頂点を指定する頂点仕様を含み得る。
【００５６】
GPU12は、1つまたは複数のグラフィックスプリミティブをディスプレイ8にレンダリングするためのグラフィックス演算を実行するように構成され得る。したがって、CPU6上で実行される1つまたは複数のソフトウェアアプリケーション18がグラフィックス処理を必要とするとき、CPU6はディスプレイ8にレンダリングするためにグラフィックスデータとともにグラフィックスレンダリングコマンドをGPU12に提供することができる。グラフィックスデータは、たとえば、描画コマンド、状態情報、プリミティブ情報、テクスチャ情報などを含み得る。GPU12は、いくつかの事例では、CPU6よりも効率的な、複雑なグラフィック関連動作の処理を実現する高度並列構造で構築され得る。たとえば、GPU12は、複数の頂点またはピクセル上で並列に動作するように構成されたシェーダユニットなどの複数の処理要素を含み得る。GPU12の高度並列な性質は、いくつかの事例では、GPU12がグラフィックス画像(たとえば、GUIならびに2次元(2D)グラフィックスシーンおよび/または3次元(3D)グラフィックスシーン)を、CPU6を使用してディスプレイ8にシーンを直接描画するよりも迅速にディスプレイ8上に描画することを可能にし得る。
【００５７】
1つまたは複数のソフトウェアアプリケーション18は、1つまたは複数のグラフィックスプリミティブを表示可能グラフィックス画像(たとえば、表示可能グラフィカルデータ)にレンダリングするために、GPUドライバ22を呼び出して1つまたは複数のコマンドをGPU12に発行することができる。たとえば、1つまたは複数のソフトウェアアプリケーション18は、実行されると、GPUドライバ22を呼び出して、プリミティブ定義をGPU12に提供することができる。いくつかの事例では、プリミティブ定義は、描画プリミティブ、たとえば、三角形、長方形、三角形ファン、三角形ストリップなどのリストの形でGPU12に提供され得る。プリミティブ定義は、レンダリングされるべきプリミティブに関連する1つまたは複数の頂点を指定する頂点仕様を含み得る。頂点仕様は、各頂点の位置座標を含み、いくつかの事例では、たとえば、色座標、法線ベクトル、およびテクスチャ座標などの、頂点に関連する他の属性を含み得る。プリミティブ定義はまた、プリミティブタイプ情報(たとえば、三角形、長方形、三角形ファン、三角形ストリップなど)、スケーリング情報、回転情報などを含み得る。
【００５８】
1つまたは複数のソフトウェアアプリケーション18によってGPUドライバ22に発行された命令に基づいて、GPUドライバ22は、プリミティブをレンダリングするためにGPU12が実行するための1つまたは複数の演算を指定する1つまたは複数のコマンドを策定し得る。GPU12がCPU6からコマンドを受け取ると、グラフィックス処理パイプラインは、コマンドを復号するために、またコマンドに指定された演算を実行するようにグラフィックス処理パイプラインを構成するために、GPU12のシェーダプロセッサ上で実行され得る。たとえば、グラフィックス処理パイプライン内の入力アセンブラは、プリミティブデータを読み取り、データをアセンブルし、グラフィックス処理パイプラインの他のグラフィックスパイプラインステージが使用するためのプリミティブにする場合がある。指定された演算を実行した後、グラフィックス処理パイプラインは、レンダリングされたデータを、ディスプレイプロセッサ14にとってアクセス可能な出力バッファ16に出力する。いくつかの例では、グラフィックス処理パイプラインは、固定関数論理を含むこと、および/またはプログラム可能シェーダコア上で実行されることがある。
【００５９】
出力バッファ16は、GPU12のための宛先ピクセルを記憶する。各宛先ピクセルは、一意のスクリーンピクセルロケーションに関連付けられ得る。同様に、出力バッファ17は、例に応じて、ビデオコーデック7のための宛先ピクセルを記憶し得る。出力バッファ17は、ビデオコーデック7に関連するフレームバッファと見なされ得る。いくつかの例では、出力バッファ16および/または出力バッファ17は、宛先ピクセルごとの色成分および宛先アルファ値を記憶し得る。たとえば、出力バッファ16および/または出力バッファ17は、任意のフォーマットに従ってピクセルデータを記憶し得る。たとえば、出力バッファ16および/または出力バッファ17は、ピクセルごとの赤、緑、青、アルファ(RGBA)成分を記憶し得るが、ここにおいて、「RGB」成分は色値に対応し、「A」成分は宛先アルファ値に対応する。別の例として、出力バッファ16および/または出力バッファ17は、YCbCrカラーフォーマット、YUVカラーフォーマット、RGBカラーフォーマットに従って、または任意の他のカラーフォーマットに従ってピクセルデータを記憶し得る。出力バッファ16およびシステムメモリ10は別個のメモリユニットであるものとして示されているが、他の例では、出力バッファ16はシステムメモリ10の一部であり得る。たとえば、出力バッファ16は、システムメモリ10における割り振られたメモリ空間であり得る。出力バッファ16は、フレームバッファを構成し得る。さらに、上記で説明したように、出力バッファ16はまた、ピクセル以外の任意の適切なデータを記憶することが可能であってもよい。
【００６０】
同様に、出力バッファ17およびシステムメモリ10は別個のメモリユニットであるものとして示されているが、他の例では、出力バッファ17はシステムメモリ10の一部であり得る。たとえば、出力バッファ17は、システムメモリ10における割り振られたメモリ空間であり得る。出力バッファ17は、ビデオコーデックバッファまたはフレームバッファを構成し得る。さらに、上記で説明したように、出力バッファ17はまた、ピクセル以外の任意の適切なデータを記憶することが可能であってもよい。いくつかの例では、出力バッファ16および出力バッファ17は別個のメモリユニットであるものとして示されているが、出力バッファ16および出力バッファ17は同じバッファまたは同じバッファの異なる部分であってもよい。
【００６１】
GPU12は、いくつかの事例では、コンピューティングデバイス2のマザーボードに統合され得る。他の事例では、GPU12は、コンピューティングデバイス2のマザーボード内のポートにインストールされたグラフィックスカード上に存在し得、またはさもなければコンピューティングデバイス2と相互動作するように構成された周辺デバイス内に組み込まれ得る。いくつかの例では、GPU12は、システムオンチップ(SOC)中など、CPU6を有するオンチップであり得る。GPU12は、1つもしくは複数のマイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、算術論理ユニット(ALU)、デジタル信号プロセッサ(DSP)、ディスクリート論理、ソフトウェア、ハードウェア、ファームウェア、他の等価な集積論理回路もしくはディスクリート論理回路、またはそれらの任意の組合せなどの1つまたは複数のプロセッサを含み得る。GPU12は、1つまたは複数のプロセッサコアを含む場合もあり、その結果、GPU12は、マルチコアプロセッサと呼ばれる場合がある。いくつかの例では、GPU12は、グラフィックス処理に適した超並列処理能力をGPU12に提供する集積論理回路および/またはディスクリート論理回路を含む特殊ハードウェアであり得る。場合によっては、GPU12は、汎用処理能力をやはり含むことが可能であり、汎用処理タスク(たとえば、いわゆる「計算」タスク)を実装するとき汎用GPU(GPGPU)と呼ばれる場合がある。
【００６２】
いくつかの例では、グラフィックスメモリ20がGPU12の一部であってよい。たとえば、グラフィックスメモリ20は、GPU12の集積回路チップに物理的に統合されたオンチップメモリまたはメモリであり得る。グラフィックスメモリ20がオンチップである場合、GPU12は、システムバスを介してシステムメモリ10から値を読み取るか、またはシステムメモリ10に値を書き込むよりも迅速に、グラフィックスメモリ20から値を読み取るか、またはグラフィックスメモリ20に値を書き込むことが可能であり得る。したがって、GPU12は、バスを使用せずにグラフィックスメモリ20からデータを読み取り、グラフィックスメモリ20にデータを書き込むことができる。言い換えれば、GPU12は、オフチップメモリの代わりに、ローカルストレージを使用してローカルにデータを処理し得る。そのようなグラフィックスメモリ20は、オンチップメモリと呼ばれる場合がある。これにより、GPU12は、GPU12がバスを介してデータを読み書きする必要をなくすことによって、より効率的な方式で動作することができ、バスを介したデータの読み書きは、重いバストラフィックおよび関連する帯域幅競合を被ることがある。しかし、いくつかの事例では、GPU12は、別個のメモリを含まなくてもよく、その代わり、バスを介してシステムメモリ10を利用することができる。グラフィックスメモリ20は、たとえば、ランダムアクセスメモリ(RAM)、スタティックRAM(SRAM)、ダイナミックRAM(DRAM)、消去可能プログラマブルROM(EPROM)、電気的消去可能プログラマブルROM(EEPROM)、フラッシュメモリ、磁気データ媒体または光学記憶媒体など、1つまたは複数の揮発性または不揮発性メモリまたはストレージデバイスを含み得る。
【００６３】
いくつかの例では、GPU12は、十分に形成された画像をシステムメモリ10に記憶し得る。ディスプレイプロセッサ14は、画像をシステムメモリ10および/または出力バッファ16から取り出して、値を出力することができ、これらの値は、ディスプレイ8のピクセルが照明して画像を表示するようにする。いくつかの例では、ディスプレイプロセッサ14は、スケーリング、回転、混合、および合成を含む、表示されるべきデータに対する2D演算を実行するように構成され得る。ディスプレイ8は、GPU12によって生成された画像コンテンツを表示する、コンピューティングデバイス2のディスプレイであってよい。ディスプレイ8は、液晶ディスプレイ(LCD)、有機発光ダイオードディスプレイ(OLED)、陰極線管(CRT)ディスプレイ、プラズマディスプレイ、または別のタイプのディスプレイデバイスであってよい。いくつかの例では、ディスプレイ8は、コンピューティングデバイス2内に統合されてもよい。たとえば、ディスプレイ8は、モバイル電話のスクリーンであり得る。他の例では、ディスプレイ8は、ワイヤードまたはワイヤレス通信リンクを介してコンピューティングデバイス2に結合されたスタンドアロンデバイスであり得る。たとえば、ディスプレイ8は、ケーブルまたはワイヤレスリンクを介してコンピューティングデバイス(たとえば、パーソナルコンピュータ、モバイルコンピュータ、タブレット、モバイルフォンなど)に接続されたコンピュータモニタまたはフラットパネルディスプレイであってもよい。
【００６４】
CPU6は、コンピューティングデバイス2内の実行用の命令を処理する。CPU6は、GPU12による実行のためにドライバ(たとえば、CPU6によって実行されるソフトウェアにおいて実装され得るGPUドライバ22)を使用してコマンドストリームを生成し得る。すなわち、CPU6は、GPU12によって実行されるべき演算のセットを定義するコマンドストリームを生成し得る。
【００６５】
CPU6は、ディスプレイ8上に可視コンテンツが表示されるようにする、GPU12によって実行されるべきコマンドストリームを生成し得る。たとえば、CPU6は、ディスプレイ8において表示するために出力バッファ16に記憶され得るグラフィックスデータをレンダリングするための命令をGPU12に提供するコマンドストリームを生成し得る。この例では、CPU6は、グラフィックスレンダリングパイプラインによって実行されるコマンドストリームを生成し得る。
【００６６】
追加または代替として、CPU6は、GPU12に他の演算を実行させる、GPU12によって実行されるべきコマンドストリームを生成し得る。たとえば、いくつかの事例では、CPU6は、汎用グラフィックス処理ユニット(GPGPU)としてGPU12を使用するためのコマンドストリームを生成するホストプロセッサであり得る。このようにして、GPU12は、CPU6のための2次プロセッサとして働き得る。たとえば、GPU12は、CPU6によって従来実行された様々な汎用計算機能を実行し得る。例としては、ビデオ復号および後処理(たとえば、デブロッキング、ノイズ低減、色補正など)ならびに他の特定用途向け画像処理機能(たとえば、顔検出/認識、パターン認識、ウェーブレット変換など)を含む様々な画像処理機能がある。
【００６７】
いくつかの例では、GPU12は、そのようなGPGPUアプリケーションを実行するためにCPU6と共同して働き得る。たとえば、CPU6は、GPU12による実行のためのコマンドストリームをGPU12に提供することによって、GPU12にいくつかの機能をオフロードし得る。この例では、CPU6はホストプロセッサであってよく、GPU12は2次プロセッサであり得る。CPU6は、GPUドライバ22を介してGPGPUアプリケーションを実行するようGPU12に指示するために、GPU12と通信し得る。
【００６８】
GPUドライバ22はGPU12に、GPU12のシェーダユニットによって実行され得る1つまたは複数のコマンドストリームを通信し得る。GPU12は、GPUドライバ22から1つまたは複数のコマンドストリームを受信し得るコマンドプロセッサ24を含み得る。コマンドプロセッサ24は、1つまたは複数のコマンドストリームを受信し処理するように構成されたハードウェアとソフトウェアとの任意の組合せであり得る。したがって、コマンドプロセッサ24はストリームプロセッサである。いくつかの例では、コマンドプロセッサ24の代わりに、任意の他の適切なストリームプロセッサが、1つまたは複数のコマンドストリームを受信し処理するために、また本明細書で開示する技法を実行するために、コマンドプロセッサ24の代わりに使用可能であり得る。一例では、コマンドプロセッサ24はハードウェアプロセッサであり得る。図5に示す例では、コマンドプロセッサ24はGPU12に含まれ得る。他の例では、コマンドプロセッサ24は、CPU6およびGPU12とは別個であるユニットであり得る。コマンドプロセッサ24はまた、それがコマンドおよび/または演算のストリームを受信するように構成された任意のプロセッサであり得ることを示すストリームプロセッサ、コマンド/ストリームプロセッサなどとして知られていることがある。
【００６９】
コマンドプロセッサ24は、GPU12による実行のために1つまたは複数のコマンドストリームに含まれる演算をスケジュールすることを含め、1つまたは複数のコマンドストリームを処理し得る。具体的には、コマンドプロセッサ24は、1つまたは複数のコマンドストリームを処理し、シェーダユニット46による実行のために1つまたは複数のコマンドストリームにおける演算をスケジュールし得る。動作中、GPUドライバ22はコマンドプロセッサ24に、GPU12によって実行されるべき一連の演算を含むコマンドストリームを送り得る。コマンドプロセッサ24は、コマンドストリームを含む演算のストリームを受信することができ、コマンドストリームにおける演算の順序に基づいてコマンドストリームの演算を順次処理することができ、GPU12のシェーダユニットのシェーダプロセッサによる実行のためにコマンドストリームにおける演算をスケジュールすることができる。
【００７０】
図6は、本明細書で説明する1つまたは複数の技法による、輪郭アーティファクトを低減または除去する一例を示す図である。具体的には、図6は、(LUT入力上にまたはLUT入力に対してではなく)LUT入力において変動(たとえば、ディザノイズ)を追加する概念、およびどのようにしてこれがLUT出力に変換され得るかを示す。図示の例では、LUT入力は、3(または2進記数法では011)の値を有する3ビットの入力である。処理ユニット1は、プラスおよび/またはマイナスA(たとえば、+/-Aであって、Aが0以上の任意の値であり得る)の振幅を有するディザノイズを1つまたは複数のLUT入力値に適用するように構成され得る。例に応じて、変数Aは、振幅、ディザ強度振幅、ディザ振幅、ディザ強度、ノイズ値、ディザノイズ、ディザノイズ振幅などと呼ばれ得る。
【００７１】
いくつかの例では、Aは、以下の式の最大値および最小値に等しくなり得る。C*NOISE_TABLE[m]、ここでCは、任意の式の任意の値または結果である。
【００７２】
他の例では、Aは、以下の式の最大値および最小値に等しくなり得る。(B^(N-Z))*(NOISE_TABLE[m])、ここでNOISE_TABLEは、複数の異なるエントリを含む配列であってよく、mは整数であり、NOISE_TABLEにおける配列ロケーションを指す。NOISE_TABLEエントリは、任意の整数値または非整数値であり得る。いくつかの例では、NOISE_TABLEは、RxR配列またはSxR配列であってよく、ここでRおよびSは正の整数値であり、RはSに等しくない。いくつかの例では、NOISE_TABLEのすべてのエントリ(すなわち、要素)の算術平均は-0.5であり得る。-0.5は0に近いので、ディザノイズは、出力画像における顕著なDCシフトをもたらさないことがある。他の例では、NOISE_TABLEのすべてのエントリ(すなわち、要素)の算術平均は、(たとえば、出力画像における顕著なDCシフトをもたらさないことがある0に近い-0.5よりも大きいか、または小さい)-0.5とは異なる値であり得る。
【００７３】
たとえば、NOISE_TABLE=[-2,-1,1,0]の場合、NOISE_TABLE[0]=-2、NOISE_TABLE[1]=-1、NOISE_TABLE[2]=1、およびNOISE_TABLE[3]=0となる。そのような例では、Bは、累乗の底の変数であり得る。いくつかの例では、Bの値は、任意の正の整数値であり得る。Nは、プログラム可能ディザ強度変数と見なされ得、Zは、任意の正または負の整数値または非整数値であり得る。変数Nも同様に、任意の正または負の整数値または非整数値であり得る。これらの変数の各々の値は式B^(N-Z)の結果を変え得るので、各々はプログラム可能ディザ強度変数と呼ばれ得る。NOISE_TABLE=[-2,-1,1,0]の場合の例では、振幅は(B^(N-Z))*(-2)から(B^(N-Z))*(1)の範囲に及び得る。たとえば、B=2、N=0、およびZ=4と仮定する。この特定の例では、Aは、-0.125から0.0625の範囲に及び得、-0.0625および0という2つの中間値を有する。
【００７４】
いくつかの例では、処理ユニット1は、BおよびZのデフォルト値により構成され得る。たとえば、Bのデフォルト値は2の値であり得、Zのデフォルト値は値4であり得る。この例では、Aは2^(N-4)に等しく、Nがプログラム可能ディザ強度変数である。ただし、処理ユニット1は、任意のデフォルト値を調整するように構成され得る。たとえば、処理ユニット1は、Zをデフォルト値から3または5の値などの別の値に調整するように構成され得る。この例では、Aはそれぞれ2^(N-3)または2^(N-5)に等しくなり得る。別の例として、処理ユニット1は、Bをデフォルト値から3の値などの別の値に調整するように構成され得る。この例では、Aは3^(N-4)に等しくなり得る。1つまたは複数の変数B、N、およびZは、いくつかの例では、処理されているコンテンツ(たとえば、画像)のビット深度特性および/または処理パイプラインのビット深度に基づき得る。
【００７５】
いくつかの例では、負のディザリングされたノイズのみが適用されてよく、したがって、ディザノイズはプラスおよび/またはマイナスAの振幅を有する。他の例では、正のディザノイズのみが適用されてよく、したがって、ディザノイズはプラスおよび/またはマイナスAの振幅を有する。たとえば、Aが0.1である場合、処理ユニット1は、-0.1から0.1の振幅を有するディザノイズを適用するように構成され得る。別の例として、Aが2である場合、処理ユニット1は、-2から2の振幅を有するディザノイズを適用するように構成され得る。別の例として、Aが4である場合、処理ユニット1が正または負の方向のディザノイズのみを適用するように構成される場合の例では、処理ユニット1は、0から4または-4から0の振幅を有するディザノイズを適用するように構成され得る。Aは最小と最大の両方で同じ値である(たとえば、A=5の場合、振幅は-0.5から0.5であり得る)ものとして説明されているが、+/-Aという用語は、最小および最大が異なる値である場合の例も指し得る。たとえば、振幅は、-0.5〜0.4375、-0.4375〜0.5などの範囲に及び得る。
【００７６】
図6に示す例では、Aは0.5の値を有し、これは、3のLUT入力に基づいて2.5から3.5に及ぶ(すなわち、3マイナスA(この図示の例では0.5)は2.5に等しく、3プラスA(この図示の例では0.5)は3.5に等しい)縦の影付き領域によって示されている。2.5から3.5の範囲は、入力変動範囲、ディザリングされた入力変動範囲、ディザリングされたLUT入力範囲、LUT入力範囲などと呼ばれ得る。ディザリングされた入力変動範囲は、[LUT入力値-A,LUT入力値+A]と記述され得る。正の振幅のみが使用される場合の例では、ディザリングされた入力変動範囲は、[LUT入力値,LUT入力値+A]と記述され得る。負の振幅のみが使用される場合の例では、ディザリングされた入力変動範囲は、[LUT入力値-A,LUT入力値]と記述され得る。LUT入力値のディザリング後、LUT入力値はディザリングされた入力LUT値と呼ばれ得る。
【００７７】
いくつかの例では、Aの値(またはノイズ値の生成)は、量子化器の量子化誤差に基づき得る。そのような例では、量子化誤差は、量子化器の一例であるアナログデジタル変換器(A/D変換器)の量子化誤差を指し得る。たとえば、A/D変換器が+/-0.5ボルトの量子化誤差を有する場合、処理ユニット1は、LUTの入力において適用されるディザノイズが+/-0.5となるように、0.5の値を使用し得る。たとえば、図6は、いくつかの例では、処理ユニット1が+/-0.5ボルトの量子化誤差に基づいて3のLUT入力値に対してLUTの入力においてディザリングすることを示している。このようにして、本明細書で説明する技法は、A/D変換器などの量子化器が信号を量子化することによって入力信号の真値(ひいては自然なランダム化)を不明瞭にするので、意図的なランダム化により現実を模倣するのを助けることができる。したがって、本明細書で説明するディザノイズを適用することは、LUT入力値にマップするLUT出力値に等しい補間されたLUT出力値をもたらさないことがある(またもたらさない可能性が高い)が、複数のLUT値入力に対して本明細書で説明するディザノイズを適用することは、より現実的な出力画像をもたらし得る。本明細書で説明する技法は、1つまたは複数のピクセル入力値に対応する1つまたは複数のLUT入力値に適用され得るが、本明細書で説明する技法を、複数のピクセル入力値に対応する複数のLUT入力値に適用することは、ピクセル出力値(すなわち、LUT出力値)が全体として見られるときに、輪郭アーティファクトを低減または防止することなど、より顕著な効果をもたらし得る。
【００７８】
いくつかの例では、本明細書で説明する技法は、輪郭アーティファクトを除去または防止するのではなく故意に導入するために適用され得る。処理ユニット1は、画像処理の間に輪郭アーティファクトを導入するのに十分に高くディザ強度を調整するように構成され得る。いくつかの例では、輪郭アーティファクトの導入は、そのようなアーティファクトが芸術的などと見なされ得るので、容認できるか、さらには好ましいと見なされ得る。処理ユニット1は、(1)処理の間に画像への輪郭アーティファクトの導入を低減もしくは防止し、かつ/もしくは画像処理の間に画像における輪郭アーティファクトを除去し、かつ/または(2)画像処理の間に輪郭アーティファクトを増やすか、もしくは導入するように構成され得る。たとえば、処理ユニット1は、輪郭アーティファクトを除去するように複数のピクセルを含む画像の第1のエリアを処理し、輪郭アーティファクトを追加するように複数のピクセルを含む画像の第2のエリアを処理するように構成され得る。別の例として、処理ユニット1は、画像処理の間に画像の第1のエリアに関して輪郭アーティファクトの導入を低減または防止するように構成されてよく、画像処理の間に画像の第2のエリアに関して輪郭アーティファクトを除去するように構成されてよい。この点について、処理ユニット1は、1つまたは複数の方法で画像の1つまたは複数のエリアを処理するように構成され得る。たとえば、処理ユニット1は、画像が1つまたは複数の輪郭アーティファクトを含むかどうかを判断するように構成され得る。処理ユニット1は、1つまたは複数の輪郭アーティファクトを含むと判断された画像の1つまたは複数のエリアを識別するように構成され得る。処理ユニット1は、画像処理の間にそのようなアーティファクトを含むと判断された画像の1つまたは複数のエリアにおけるいずれの輪郭アーティファクトも除去するように構成されてよく、画像処理の間に画像の残存部分における輪郭アーティファクトの導入を低減または防止するように構成され得る。
【００７９】
いくつかの例では、処理ユニット1は、値の範囲内でLUT出力値を補間するように構成され得る。値の範囲は、図6に示すディザリングされたマッピングまたは図7および図8に示すサブセットなど、ディザリングされたマッピングまたはそれのサブセットを指し得る。値の範囲は、本明細書で説明するAの値に基づき得る。たとえば、処理ユニット1は、値の範囲内でLUT出力値を補間するように構成されてよく、値の範囲が、(1)ディザリングされるべきLUT入力値に隣接するLUT入力値である第1の値、(2)ディザリングされるべきLUT入力値である第2の値、および(3)この例における第1の値と第2の値との間の1つまたは複数の値を含む。いくつかの例では、この例および後続の例のいずれかにおける第1の値と第2の値との間の1つまたは複数の値は、1つまたは複数のマッピングされたLUT出力値、1つまたは複数のマッピングされないLUT出力値、1つまたは複数の非整数LUT出力値、あるいはそれらの任意の組合せを含み得る。
【００８０】
別の例では、処理ユニット1は、値の範囲内でLUT出力値を補間するように構成されてよく、値の範囲が、(1)ディザリングされるべきLUT入力値に隣接しないLUT入力値である第1の値、(2)ディザリングされるべきLUT入力値である第2の値、および(3)この例における第1の値と第2の値との間の1つまたは複数の値を含む。別の例では、処理ユニット1は、値の範囲内でLUT出力値を補間するように構成されてよく、値の範囲が、(1)ディザリングされるべきLUT入力値に隣接する第1のLUT入力値である第1の値、(2)ディザリングされるべきLUT入力値に隣接する第2のLUT入力値である第2の値、および(3)この例における第1の値と第2の値との間の1つまたは複数の値を含む。別の例では、処理ユニット1は、値の範囲内でLUT出力値を補間するように構成されてよく、値の範囲が、(1)ディザリングされるべきLUT入力値に隣接せず、当該LUT入力値よりも小さい第1のLUT入力値である第1の値、(2)ディザリングされるべきLUT入力値に隣接せず、当該LUT入力値よりも大きい第2のLUT入力値である第2の値、および(3)この例における第1の値と第2の値との間の1つまたは複数の値を含む。
【００８１】
別の例では、処理ユニット1は、値の範囲内でLUT出力値を補間するように構成されてよく、値の範囲が、(1)ディザリングされるべきLUT入力値に隣接し、当該LUT入力値よりも小さいLUT入力値である第1の値、(2)ディザリングされるべきLUT入力値に隣接せず、当該LUT入力値よりも大きいLUT入力値である第2の値、および(3)この例における第1の値と第2の値との間の1つまたは複数の値を含む。別の例では、処理ユニット1は、値の範囲内でLUT出力値を補間するように構成されてよく、値の範囲が、(1)ディザリングされるべきLUT入力値に隣接し、当該LUT入力値よりも大きいLUT入力値である第1の値、(2)ディザリングされるべきLUT入力値に隣接せず、当該LUT入力値よりも小さいLUT入力値である第2の値、および(3)この例における第1の値と第2の値との間の1つまたは複数の値を含む。
【００８２】
図6に示す具体例を参照すると、図6に示すLUTは、8個の可能な入力LUT値(たとえば、LUTに入力され得る3ビットのカラーフォーマットによる8個の可能なピクセル値)を、可能な32個の値(すなわち、0〜31)のうちの8個の出力LUT値にマッピングする。図6は、3ビットのピクセル入力値を5ビットのピクセル入力値にマッピングするLUTの一例である。図示の例では、出力LUT値のうちのいくつかは、2つ以上のLUT入力値にマッピングされる。たとえば、図6に示すLUTマッピングによれば、[0,1,2,3,4,5,6,7]のLUT入力値はそれぞれ、[0,0,4,16,24,28,28,28]のLUT出力値にマッピングする。
【００８３】
[2.5,3.5]のディザリングされた範囲(すなわち、2.5〜3.5)は、x軸から延びる縦の影付き領域によって示される。LUTは、LUT出力値を選択するためにLUT入力値をマッピングするにすぎないが、処理ユニット1は、マッピングされない出力LUT値(たとえば、マッピングされた出力LUT値と隣接LUT入力値の一方または両方に対応する出力LUT値との間の中間値)を生成するために補間(たとえば、線形補間)を使用するように構成され得る。たとえば、LUT入力値をディザリングせずに、処理ユニット1は、16のLUT出力値を生成する(たとえば、出力する)ようにLUT入力値を処理するように構成され得る。一方、LUT入力値をディザリングすることによって、処理ユニットは、3のLUT入力値の場合に2.5〜3.5のLUT入力範囲を処理するように構成されてよく、その結果、16という単一の値だけの代わりに、(たとえば、[10,20]としても表される)10から20の出力変動範囲が生じる。処理ユニット1が入力を単一の入力から入力の範囲(たとえば、2.5から3.5)に増幅したので、可能な出力LUT値の数は、3のLUT入力値の場合に増加しており、その結果、16の静的出力LUT値を生成する代わりに、10から20の範囲のうちの1つの値が、3のLUT入力値の場合に出力され得る。
【００８４】
いくつかの例では、出力値の補間は、区分的線形マッピング曲線の傾きに基づき得る。たとえば、ノイズレベルは、区分的線形マッピング曲線の傾きに従って適用されるか、またはさもなければ調節され得る。図6は、補間のこの例を示す。2および3のLUT入力値の間の点線は1つの区分的線形マッピング曲線であり、3および4のLUT入力値の間の点線は別の区分的線形マッピング曲線である。区分的線形マッピング曲線の傾きは、2.5〜3のLUT入力範囲の方が、3〜3.5の場合よりも急である。結果として、いくつかの例では、より急な傾きは、さほど傾いていない区分的曲線の場合よりも多くの、処理ユニット1によって生成されている補間された値に相関付けられ得る。図6の例では、これが当てはまり、(より大きい区分的傾きを有する)2.5〜3のLUT入力範囲の場合には、可能なLUT出力値が10から16の範囲に及び、(より小さい区分的傾きを有する)3〜3.5のLUT入力範囲の場合には、可能なLUT出力値が16から20の範囲に及ぶ。
【００８５】
いくつかの例では、LUT入力値と隣接LUT入力値との間のギャップが小さい場合、ノイズは抑制され得、ギャップがより大きい場合、ノイズは増幅されることになる。図6はこれを示しており、16から20の範囲に及ぶ出力LUT値によって示されているように、3〜3.5のLUT入力範囲の場合にはノイズが抑制されており、10から16の範囲に及ぶ出力LUT値によって示されているように、2.5〜3のLUT入力範囲の場合にはノイズが増幅されている。このようにして、処理ユニット1は、任意のLUT出力値ギャップに比例してディザノイズレベルを自動的に調整するように構成され得る。たとえば、表示されたときに出力画像においてギャップがさほど知覚できないか、または知覚できないように、ギャップを「埋める」か、除去するか、または低減するために、より大きいギャップはより小さいギャップと比較して、より多くの補間された値を自動的に受け取り得る。別の例として、表示されたときに出力画像においてギャップがさほど知覚できないか、または知覚できないように、ギャップを「埋める」か、除去するか、または低減するために、より小さいギャップはより大きいギャップと比較して、より少ない補間された値を自動的に受け取り得る。
【００８６】
いくつかの例では、処理ユニット1は、ディザリングされたLUT入力範囲に対応する1つまたは複数の出力値を補間するように構成され得る。一例では、処理ユニット1は、niのノイズ値(たとえば、Aの最小値、Aの最大値、または最小値と最大値との間のAの中間値など、上記で説明した変数Aの特定の値)を生成するように構成され得る。ノイズ値niは、ランダムノイズ値または非ランダムノイズ値であり得る。ノイズ値niは、+/-k(たとえば、+/-0.5、+/-1、-0.5〜0.75、-0.5〜0.4375など、上記で説明した変数Aの最小値および最大値)など、何らかのプログラム可能範囲内で生成されたランダムノイズ値または非ランダムノイズ値であり得る。ノイズ値niは、1つまたは複数の小数位を含み得る。処理ユニット1によって生成されたniの値が負である場合、処理ユニットは、低側補間を実行するように構成され得る。処理ユニット1によって生成されたniの値が正である場合、処理ユニットは、高側補間を実行するように構成され得る。
【００８７】
いくつかの例では、処理ユニット1は、組織的ディザ(ordered dither)を使用してノイズ値niを生成するように構成され得る。組織的ディザ(たとえば、空間ディザ)は、静的入力(たとえば、ビデオ入力における停止画像または反復画像上の固定ノイズパターン)の場合に静的であり得る。ディザ値は、ピクセル位置に依存することがあり、時間的に変動する成分を有しないことがあり、これは、たとえば、静的ビデオ上のちらつきを防止し得る。他の例では、処理ユニット1は、所与のピクセル位置の場合にノイズ値が時間とともに変動するように(たとえば、時間ディザ)、ノイズ値niを生成するように構成され得る。
【００８８】
組織的ディザを参照すると、処理ユニット1は、1つまたは複数のLUT入力値が関連付けられるピクセルの位置に基づいてノイズ値niを決定するように構成され得る。たとえば、RGBカラーフォーマットされたピクセルは、単一のピクセル位置に関連する3つのLUT入力値(カラーチャネルごとに1つ)を有することになる。
【００８９】
いくつかの例では、処理ユニット1は、ピクセル位置に基づいてノイズ値を計算するように構成され得る。たとえば、処理ユニット1は、次のように位置(x,y)におけるピクセルに基づいてniのノイズ値を計算するように構成され得る。ni=(x,y)=2N-4(NOISE_TABLE[m])、ここで、m=4・(y mod 4)+(x mod 4)、0≦m≦15であり、NOISE_TABLE=[7,-1,5,-3,-5,3,-7,1,4,-4,6,-2,-8,0,-6,2]である。
【００９０】
この式は、A=2^(N-4)という点で例示的である。たとえば、この式は、ni(x,y)=A*NOISE_TABLE[m]と単純化されてよく、ここでAは、本明細書で説明するディザ強度振幅の変数であり得る。本明細書で説明するように、いくつかの例では、AはB^(N-Z)に等しくなり得、その結果、ni(x,y)=(B^(N-Z))*(NOISE_TABLE[m])となる。また、他の例では、NOISE_TABLE値は、(上記ではラスタ走査順序で示されている)配列に示されるものとは異なり得る。他の例では、処理ユニット1は、ピクセル位置とは無関係にノイズ値を計算するように構成され得る。
【００９１】
ni(x,y)式は、4×4ノイズパターン行列(または配列)に変換され、当該行列は、モジュロオペランドによって引き起こされたNOISE_TABLEインデックス付けの周期的反復に起因して、処理されている画像にわたってタイリングされる。他の例では、上記の式におけるNOISE_TABLEインデックス付けの周期的反復は、モジュロオペランドを使用することとは異なる技法を使用して実施され得る。上記の式では、変数Nはプログラム可能ディザ強度であり、処理ユニット1がディザを増幅する(または弱める)ように構成されることを可能にする。いくつかの例では、Nは、処理されているコンテンツ(たとえば、画像)のビット深度特性および/または処理パイプラインのビット深度に基づき得る。いくつかの例では、Nは、2の累乗ずつA(たとえば、本明細書では振幅に関して言及される変数A)を制御する。たとえば、N=0、B=2、およびZ=4のとき、(NOISE_TABLEとも呼ばれる)ノイズテーブルにおける1つまたは複数のエントリ(たとえば、すべてのエントリ)は、2^(0-4)と乗算され、2^(0-4)は、2^-4またはさもなければ1/(2^4)となり、1/16に等しい。そのため、この例では、NOISE_TABLEにおける1つまたは複数の値(たとえば、すべての値)は(1/16)と乗算され得、事実上、-0.5(たとえば、-8を1/16と乗算した積である最低ノイズテーブルエントリ)から0.4375(たとえば、7を1/16と乗算した積である最高ノイズテーブルエントリ)の範囲に及ぶディザノイズ振幅を提供する。別の例として、N=1、B=2、およびZ=4のとき、ノイズテーブル(すなわち、ノイズテーブルにおける1つまたは複数のエントリ)は2^(1-4)と乗算され、2^(1-4)は1/8に等しい。そのため、この例では、NOISE_TABLEにおける1つまたは複数の値(たとえば、すべての値)は(1/8)と乗算され得、事実上、-1.0(たとえば、-8を1/8と乗算した積である最低ノイズテーブルエントリ)から0.875(たとえば、7を1/16と乗算した積である最高ノイズテーブルエントリ)の範囲に及ぶディザノイズ振幅を提供する。
【００９２】
空間的に、処理ユニット1によって生成され得るノイズは、4×4行列パターンの真四角グリッドタイリングであり得る。上記で説明した例示的なNOISE_TABLEは、4×4行列のラスタ走査される線形編成である。他の例では、行列は、4×4行列よりも大きいこと、または小さいこと(たとえば、2×2、8×8など)がある。
【００９３】
上記の式は、モジュロオペランドを含む。以下は、モジュロオペランドの例を含む。0 mod 4=0、1 mod 4=1、2 mod 4=2、3 mod 4=3、4 mod 4=0、5 mod 4=1、6 mod 4=2、7 mod 4=3、8 mod 4=0、9 mod 4=1、10 mod 4=2、11 mod 4=3、12 mod 4=0、13 mod 4=1、14 mod 4=2など。たとえば、(x mod 4)演算を(0,0)、(1,0)、(2,0)、(3,0)、(4,0)、(5,0)、(6,0)、(7,0)、(8,0)、および(9,0)の例示的なピクセル位置に適用すると、それぞれ、例示的なピクセル位置のx座標に関して0、1、2、3、1、2、3、0、および1のシーケンスが生じることになる。同様に、(y mod 4)演算を同じ例示的なピクセル位置に適用すると、それぞれ、これらの例示的なピクセル位置のy座標に関して0、0、0、0、0、0、0、0、0、および0のシーケンスが生じることになる。
【００９４】
別の例として、(y mod 4)演算を(0,1)、(0,2)、(0,3)、(0,4)、(0,5)、(0,6)、(0,7)、(0,8)、(0,9)の例示的なピクセル位置に適用すると、それぞれ、例示的なピクセル位置のy座標に関して0、1、2、3、1、2、3、0、および1のシーケンスが生じることになる。同様に、(x mod 4)演算をこの例示的なピクセル位置セットに適用すると、それぞれ、これらの例示的なピクセル位置のx座標に関して0、0、0、0、0、0、0、0、0、および0のシーケンスが生じることになる。
【００９５】
処理ユニット1が2×2、4×4、8×8またはM×M(Mは2の任意の整数乗である)のNOISE_TABLE行列を生成するために使用し得るシード行列(および上記で説明したNOISE_TABLEエントリ)の導出について、以下で説明する。他の例では、処理ユニット1は、シード行列およびNOISE_TABLEエントリを、以下で説明する技法とは異なる形で導出し得る。本開示はノイズテーブル(たとえば、NOISE_TABLE)の使用について説明しているが、処理ユニット1は、ノイズテーブルを使用して本開示の1つまたは複数の技法を実行するように構成され得ることを理解されたい。たとえば、処理ユニット1は、本明細書で説明する1つまたは複数の技法を実行するために異なるデータ構造または異なるアルゴリズムを使用するように構成され得る。
【００９６】
NOISE_TABLEの値は処理ユニット1によって、Bayerの組織的ディザ行列から導出され得る。処理ユニット1は、以下の基礎的2×2行列によりNOISE_TABLEの計算を開始し得る。
【００９７】
【数１】
2018530062.tif 000003
【００９８】
2×2行列は、たとえば、以下の再帰方程式を使用して、4×4行列(たとえば、D4)、8×8行列(たとえば、D8)など(たとえば、Dnとして示されるn×n行列)に拡大され得る。
【００９９】
【数２】
2018530062.tif 000004
【０１００】
上記の式を使用して、処理ユニット1は、4×4行列D4を生成し得る。上記の式では、Unは、すべて1からなるサイズn×nの単位行列である。たとえば、[5,5,5,5](ラスタ走査順序で示される値)の2×2行列は、5*U2として表されてもよい。上記の式では、D2(a,b)Un/2は、(行a,列b)におけるD2の値が単位行列Un/2と乗算されることを意味し、ここで、単位行列のサイズならびに出力行列(すなわち、Dn)のサイズは、nの値に依存する。したがって、D4を計算するために、上記の式は以下のようになる。
【０１０１】
【数３】
2018530062.tif 000005
【０１０２】
上記のD4のための式は、以下に単純化される。
【０１０３】
【数４】
2018530062.tif 000006
【０１０４】
次いで、上記の式はさらに、以下に単純化される。
【０１０５】
【数５】
2018530062.tif 000007
【０１０６】
この式では、D4は以下の4×4行列に等しい。
【０１０７】
【数６】
2018530062.tif 000008
【０１０８】
処理ユニット1は、以下のような、サイズが4×4である最終行列の一例を生成するために、D4の平均(この例では(120/16)であり、端数処理で8の値にされ得る)を減算することによってD4を修正することができる。
【０１０９】
【数７】
2018530062.tif 000009
【０１１０】
たとえば、平均が0になるか、または0に近くなるように、平均がD4行列値から減算され得、それにより、[0,x]の代わりに[-x/2,x/2]の範囲を有するノイズが生じ得る。図示のD4の例では、D4の要素すべての算術平均は、120を16で除算した商であり、7.5に等しい。説明したように、調整済みD4行列は、4×4ノイズテーブルの一例である。たとえば、図示の例では、平均は端数切り上げで8にされている。一方、他の例では、任意のDn行列の平均は、端数が切り上げられる代わりに切り捨てられ得る(たとえば、上記の例では、D4の平均は端数切り捨てで7にされ得る)。他の例では、任意のDn行列の平均は、平均自体の値と比較して、隣接するかまたは隣接しない下位の整数と隣接するかまたは隣接しない上位の整数と間の任意の値にランダムまたは非ランダムに割り当てられ得る(たとえば、D4の平均は、上記の例では、平均が7.5であるので、7と8との間の任意の値を割り当てられ得る)。理解のために、図9は、一般的に使用されるOctaveまたはMATLAB数値解析ソフトウェアパッケージにおいて上記の式を使用したNOISE_TABLEの計算を示す。処理ユニット1は、本開示全体にわたって説明する任意の機能を実行またはさもなければ実装するように構成され得ることを理解されたい。
【０１１１】
いくつかの例では、処理ユニット1は、NOISE_TABLEを生成するか、または任意の式を実行もしくはさもなければ計算するように構成されるものとして本明細書で説明されているが、処理ユニット1は、本明細書で説明するNOISE_TABLEまたは任意の他のNOISE_TABLEを事前ロードされるように構成されてよい。同様に、処理ユニット1は、本明細書で説明する任意の情報を事前ロードされるように構成されてよい。たとえば、任意の事前ロードされた情報は、処理ユニット1の内部メモリ5に記憶され得る。他の例では、任意の事前ロードされた情報は、処理ユニット1にとってアクセス可能なシステムメモリ10に記憶され得る。
【０１１２】
調整済みDn(すなわち、ノイズテーブルとも呼ばれ得る、行列の平均を下げるために、平均または何らかの他の値が各要素から減算された後のDn行列)を参照すると、すべての要素の算術平均は0または0に近い任意の値(たとえば、-1から1の間の任意の値)であり得る。たとえば、上記の例示的な調整済みD4(また、上記で説明した例示的なNOISE_TABLE)を参照すると、すべての要素の算術平均は-0.5である。-0.5は0に近いので、ディザノイズは、本来であれば輝度オフセットまたは他の画像処理アーティファクトを生じさせることになる出力画像における顕著なDCシフトをもたらさないことがある。いくつかの例では、調整済みDn(たとえば、NOISE_TABLE)の列のすべても、0または0に近い任意の値(たとえば、-1から1の間の任意の値)の平均を有し得る。たとえば、上記の例示的な調整済みD4(また、上記で説明した例示的なNOISE_TABLE)を参照すると、各列の算術平均は、0に近い-0.5であり、これは、本来であれば輝度オフセットを生じさせることになる出力画像における顕著なDCシフトをディザノイズがもたらさないことがあることを意味する。
【０１１３】
図7は、低側補間の一例によるLUT出力値補間の一例を示す図である。低側補間の一例では、処理ユニット1は、入力ピクセル値に関連するLUTエントリを以前のLUTエントリとともに使用するように構成され得る。処理ユニット1は、ディザリングされた入力範囲内で1つまたは複数の補間されたLUT出力値を計算するために、2つのポイント(すなわち、現在のLUT入力値およびLUTにおける以前のLUT入力値)を使用するように構成され得る。図7に示す例では、低側LUT出力値補間は、3のLUT入力値に関して示されている。図示の例では、2のLUT入力値は、3のLUT入力値に対する以前のLUTエントリである。特に明記すると、LUT入力値3は、ポイント0(P0)であり、ポイント1(P1)は、線形補間において使用されるLUTにおける以前のLUT入力値である。P0とP1とをつなぐ線は、中間値(たとえば、補間されたLUT出力値)のマッピングを示す。
【０１１４】
いくつかの例では、処理ユニット1は、次のように低側補間を実行するように構成され得る。
【０１１５】
【数８】
2018530062.tif 000010
【０１１６】
上記の式に記載した値は、次のように導出され得る。P0=(x0,y0)およびP1=(x1,y1)、ここで、y0=LUT(x0)およびy1=LUT(x1)である。x=入力+ni、ここで、x1≦x≦x0であり、ni≦0はディザノイズである。本明細書で説明するように、変数niは、いくつかの例では変数Aと同じであることがあり、他の例ではAに対応しないことがある。
【０１１７】
たとえば、処理ユニット1が3のLUT入力値を受信すると仮定する。通常、3のLUT入力値は16にマッピングすることになる。しかしながら、代わりに処理ユニット1は、LUT出力値補間を実行するように構成され得る。この例では、処理ユニット1は、+/-0.5のランダムノイズ値を生成するように構成され得る。この例では、生成されたノイズ値が-0.5であると仮定する。niは値が負であるので、処理ユニット1は、低側補間を実行するように構成され得る。LUT入力値が3に等しい場合、P0=(3,16)、P1=(2,4)、およびx=2.5となる。これらの値を使用して、処理ユニット1は、10の補間されたLUT出力値を計算するように構成され得る。図7に示すように、2.5のディザリングされたLUT入力値は、10の補間されたLUT出力値に対応する。
【０１１８】
別の例では、処理ユニット1がまたしても3のLUT入力値を受信すると仮定する。処理ユニット1はまたしても、+/-0.5のランダムノイズ値を生成するように構成され得る。しかしながら、この特定の例では、生成されたノイズ値が、低側LUT出力値補間をトリガする-0.3であると仮定する。LUT入力値が3に等しい場合、P0=(3,16)、P1=(2,4)、およびx=2.7となる。これらの値を使用して、処理ユニット1は、12.4の補間されたLUT出力値を計算するように構成され得る。しかしながら、12.4のLUT出力値は利用不可能である。したがって、処理ユニット1は、補間されたLUT出力値を端数処理で最も近い整数値にするように構成されてよく、中央の任意の値(12.5)は例に応じて、端数が切り上げられる(たとえば、13)か、または切り捨てられる(たとえば、12)。そのような例では、12.4の補間されたLUT出力値は、端数切り捨てで12にされ得る。他の例では、処理ユニット1は、補間されたLUT出力値の任意の小数位を切り捨てるように構成され得る。たとえば、12.4の補間されたLUT出力値は12に切り捨てることができ、12.8の補間されたLUT出力値も12に切り捨てることができる。
【０１１９】
他の例では、処理ユニット1は、LUT出力値の小数成分を表す1つまたは複数の最下位ビットを追加するように構成され得る。たとえば、補間されたLUT出力値を端数処理するか、または切り捨てて整数値にする代わりに、処理ユニット1は、補間されたLUT出力値を端数処理で最も近い利用可能な小数精度または特定の小数精度にするように構成され得る。一例として、処理ユニット1は、0.5の増分で小数精度を高めるために1つの最下位ビットを追加するように構成され得る。そのような例では、処理ユニット1は、12.4を端数処理で12.5にして011001の2進表現をもたらすように構成されてよく、1の最下位ビットが12.5の.5を表す。別の例として、処理ユニット1は、0.25の増分で小数精度を高めるために2つの最下位ビット(たとえば、00=0、01=0.25、10=0.5、および11=0.75)を追加するように構成され得る。そのような例では、処理ユニット1は、12.4を端数処理で12.5にして0110010の2進表現をもたらすように構成されてよく、10の2つの最下位ビットが12.5の.5を表す。別の例では、12.7の補間されたLUT出力値は、端数処理で12.75にされて0110011の2進表現をもたらしてよく、11の2つの最下位ビットが12.75の.75を表す。
【０１２０】
他の例では、処理ユニット1は、1つまたは複数の最下位ビットを2進表現に追加するか、追加しないか、2進表現から除去するか、除去しないか、または2進表現において修正するように構成され得る。たとえば、処理ユニット1は、処理の間にいくつかのポイントにおいて切り戻す(prune back)ことによって、ワード長を制御し続けるために、そうするように構成され得る。
【０１２１】
図8は、高側補間の一例によるLUT出力値補間の一例を示す。高側補間の一例では、処理ユニット1は、入力ピクセル値に関連するLUTエントリを次のLUTエントリとともに使用するように構成され得る。処理ユニット1は、ディザリングされた入力範囲内で1つまたは複数の補間されたLUT出力値を計算するために、2つのポイント(すなわち、現在のLUT入力値およびLUTにおける次のLUT入力値)を使用するように構成され得る。図8に示す例では、高側LUT出力値補間は、3のLUT入力値に関して示されている。図示の例では、4のLUT入力値は、3のLUT入力値に対する次のLUTエントリである。特に明記すると、LUT入力値3は、ポイント0(P0)であり、ポイント2(P2)は、線形補間において使用されるLUTにおける次のLUT入力値である。P0とP2とをつなぐ線は、中間値(たとえば、補間されたLUT出力値)のマッピングを示す。
【０１２２】
いくつかの例では、処理ユニット1は、次のように高側補間を実行するように構成され得る。
【０１２３】
【数９】
2018530062.tif 000011
【０１２４】
上記の式に記載した値は、次のように導出され得る。P0=(x0,y0)およびP2=(x2,y2)、ここで、y0=LUT(x0)およびy2=LUT(x2)である。x=入力+ni、ここで、x0≦x≦x2であり、ni≧0はディザノイズである。
【０１２５】
たとえば、処理ユニット1が3のLUT入力値を受信すると仮定する。通常、3のLUT入力値は16にマッピングすることになる。しかしながら、代わりに処理ユニット1は、LUT出力値補間を実行するように構成され得る。この例では、処理ユニット1は、+/-0.5のランダムノイズ値を生成するように構成され得る。この例では、生成されたノイズ値が0.5であると仮定する。niは値が正であるので、処理ユニット1は、高側補間を実行するように構成され得る。LUT入力値が3に等しい場合、P0=(3,16)、P2=(4,24)、およびx=3.5となる。これらの値を使用して、処理ユニット1は、20の補間されたLUT出力値を計算するように構成され得る。図8に示すように、3.5のディザリングされたLUT入力値は、20の補間されたLUT出力値に対応する。
【０１２６】
別の例では、処理ユニット1がまたしても3のLUT入力値を受信すると仮定する。処理ユニット1はまたしても、+/-0.5のランダムノイズ値を生成するように構成され得る。しかしながら、この特定の例では、生成されたノイズ値が、高側LUT出力値補間をトリガする0.1であると仮定する。LUT入力値が3に等しい場合、P0=(3,16)、P2=(4,24)、およびx=3.1となる。これらの値を使用して、処理ユニット1は、16.8の補間されたLUT出力値を計算するように構成され得る。しかしながら、16.8のLUT出力値は利用不可能である。したがって、処理ユニット1は、補間されたLUT出力値を端数処理で最も近い整数値にするように構成されてよく、中央の任意の値(16.5)は例に応じて、端数が切り上げられる(たとえば、17)か、または切り捨てられる(たとえば、16)。そのような例では、16.8の補間されたLUT出力値は、端数切り上げで17にされ得る。他の例では、処理ユニット1は、補間されたLUT出力値の任意の小数位を切り捨てるように構成され得る。たとえば、16.8の補間されたLUT出力値は16に切り捨てることができる。
【０１２７】
他の例では、処理ユニット1は、LUT出力値の小数成分を表す1つまたは複数の最下位ビットを追加するように構成され得る。たとえば、補間されたLUT出力値を端数処理するか、または切り捨てて整数値にする代わりに、処理ユニット1は、補間されたLUT出力値を端数処理で最も近い利用可能な小数精度にするように構成され得る。一例として、処理ユニット1は、0.5の増分で小数精度を高めるために1つの最下位ビットを追加するように構成され得る。そのような例では、処理ユニット1は、16.8を端数処理で17にして10010の2進表現をもたらすように構成されてよく、0の最下位ビットが17.0の.0を表す。別の例として、処理ユニット1は、0.25の増分で小数精度を高めるために2つの最下位ビット(たとえば、00=0、01=0.25、10=0.5、および11=0.75)を追加するように構成され得る。そのような例では、処理ユニット1は、16.8を端数処理で16.75にして1000111の2進表現をもたらすように構成されてよく、11の2つの最下位ビットが16.75の.75を表す。
【０１２８】
別の例では、処理ユニット1が4のLUT入力値を受信すると仮定する。処理ユニット1は、+/-0.5のランダムノイズ値を生成するように構成され得る。しかしながら、この特定の例では、生成されたノイズ値が0.0であると仮定する。そのような例では、処理ユニット1は、補間を実行しないように構成され得る。代わりに、処理ユニット1は、任意の補間(たとえば、低側もしくは高側LUT出力値補間、または任意の他の補間技法)をトリガするのではなく24のマッピングされたLUT出力値を使用するように構成され得る。
【０１２９】
上記で説明した低側および高側補間を参照すると、2つのテーブルルックアップ、すなわち、入力ピクセル値に対応するLUT入力値のための1つのルックアップ、および入力ピクセル値に対応するLUT入力値に隣接し得るLUT入力値のための第2のルックアップが発生し得る。本明細書で説明するように、第2のルックアップは、生成されたノイズ値が負であるか正であるかに依存し得る。いくつかの例では、処理ユニット1は、処理ユニット1のデータスループットを低下させることになっても(たとえば、クロックサイクル当たり1ピクセル未満)、上記で説明した2つのテーブルルックアップを並行して実行しないように構成され得る。たとえば、処理ユニット1は、LUTを使用して第1のルックアップを実行するように構成されてよく、次いで、第1のルックアップの後、処理ユニット1は、LUTを使用して第2のルックアップを実行するように構成され得る。他の例では、処理ユニット1は、たとえば、処理ユニット1のデータスループットを維持するために(たとえば、クロックサイクル当たり1ピクセル)、上記で説明した2つのテーブルルックアップを並行して実行するように構成され得る。たとえば、処理ユニット1は、2つの異なるルックアップのために同じLUTが並行してアクセスされ得るように、メモリにLUTを複製するように構成され得る。別の例として、処理ユニット1は、LUTの複製なしに、上記で説明した2つのテーブルルックアップを並行して実行するように構成され得る。たとえば、処理ユニット1は、LUTを1/2ずつに分割するように構成されてよく、ここで、LUTの一方の1/2は、偶数番号のエントリのすべてを含み得る一方、LUTの他方の1/2は、奇数番号のエントリのすべてを含み得る。このように1/2サイズのLUTを2つ使用することによって、処理ユニット1は、同じLUTの2つのインスタンスを記憶するか、またはさもなければテーブルサイズを2倍にするためにメモリ消費量を2倍にするのを防ぐように構成され得る。
【０１３０】
他の例では、処理ユニット1は、図7および/または図8に関して上記で説明した方法とは異なる方法に従って、1つまたは複数の補間されたLUT出力値を計算するように構成され得る。
【０１３１】
図10は、本開示の例示的な方法を示すフローチャートである。図10の方法は、1つまたは複数の処理ユニット1(たとえば、1つまたは複数のCPU、1つまたは複数のGPU、1つまたは複数のディスプレイ処理ユニット、1つまたは複数の他の処理ユニット、あるいはそれらの任意の組合せ)によって実行され得る。図10は、本開示の1つまたは複数の技法に一致する方法を示す。
【０１３２】
処理ユニット1は、画像の第1のピクセルに対応する第1のピクセル値をルックアップテーブル(LUT)に入力する(100)ように構成され得る。LUTは、1つまたは複数のLUT入力値を1つまたは複数のLUT出力値にマッピングし得る。第1のピクセル値は、LUTにおける第1のLUT出力値にマッピングする第1のLUT入力値に対応し得る。第1のピクセルは、1つまたは複数のピクセル値を含み得る。処理ユニット1は、第1のLUT入力値に関してノイズ値を生成する(102)ように構成され得る。処理ユニット1は、第2のLUT入力値を選択する(104)ように構成され得る。第2のLUT入力値は、第2のLUT出力値にマッピングし得る。いくつかの例では、処理ユニット1は、第3のLUT出力値にマッピングし得る第3のLUT入力値を選択するように構成され得る。
【０１３３】
処理ユニット1は、第1のLUT入力値に関して値の範囲内で第1の補間されたLUT出力値を生成する(106)ように構成され得る。いくつかの例では、処理ユニット1は、以下のうちの1つまたは複数に基づいて、第1のLUT入力値に関して値の範囲内で第1の補間されたLUT出力値を生成するように構成され得る。ノイズ値、第1のLUT入力値、第1のLUT出力値、第2のLUT入力値、および第2のLUT出力値。第1の補間されたLUT出力値は、マッピングされないLUT出力値であり得る。他の例では、処理ユニット1は、以下のうちの1つまたは複数に基づいて、第1のLUT入力値に関して値の範囲内で第1の補間されたLUT出力値を生成するように構成され得る。ノイズ値、第3のLUT入力値、第3のLUT出力値、第2のLUT入力値、および第2のLUT出力値。そのような例では、第2のLUT入力値および/または第3のLUT入力値は、第1のLUT入力値に隣接すること、または隣接しないことがある。処理ユニット1は、第1の補間されたLUT出力値を使用して、画像を変換された画像に変換する(108)ように構成され得る。
【０１３４】
図11は、本開示の例示的な方法を示すフローチャートである。図11の方法は、1つまたは複数の処理ユニット1(たとえば、1つまたは複数のCPU、1つまたは複数のGPU、1つまたは複数のディスプレイ処理ユニット、1つまたは複数の他の処理ユニット、あるいはそれらの任意の組合せ)によって実行され得る。図11は、本開示の1つまたは複数の技法に一致する方法を示す。
【０１３５】
処理ユニット1は、画像の1つまたは複数のピクセルに対応する複数のピクセル値をルックアップテーブル(LUT)に入力する(120)ように構成され得る。LUTは、1つまたは複数のLUT入力値をLUTにおける1つまたは複数のLUT出力値にマッピングし得る。複数のピクセル値の各々は、1つまたは複数のLUT出力値のうちの1つにマッピングする1つまたは複数のLUT入力値のうちの1つにそれぞれ対応し得る。1つまたは複数のピクセルは、1つまたは複数のピクセル値を含み得る。処理ユニット1は、各ピクセル値に対応する各LUT入力値に関してノイズ値を生成する(122)ように構成され得る。処理ユニット1は、各LUT入力値に関して第2のLUT入力値を選択する(124)ように構成され得る。第2のLUT入力値は、第2のLUT出力値にマッピングし得る。いくつかの例では、処理ユニット1は、各LUT入力値に関して第3のLUT入力値を選択するように構成され得る。第3のLUT入力値は、第3のLUT出力値にマッピングする。
【０１３６】
処理ユニット1は、値の範囲内で、LUTに入力されたピクセル値に対応する各LUT入力値に関して補間されたLUT出力値を生成する(126)ように構成され得る。いくつかの例では、処理ユニット1は、以下のうちの1つまたは複数に基づいて値の範囲内で、LUTに入力されたピクセル値に対応する各LUT入力値に関して補間されたLUT出力値を生成するように構成され得る。LUTに入力された各ピクセル値にそれぞれ対応するノイズ値、第1のLUT入力値、第1のLUT出力値、第2のLUT入力値、および第2のLUT出力値。少なくとも1つの補間されたLUT出力値は、マッピングされないLUT出力値であり得る。他の例では、処理ユニット1は、以下のうちの1つまたは複数に基づいて値の範囲内で、LUTに入力されたピクセル値に対応する各LUT入力値に関して補間されたLUT出力値を生成するように構成され得る。LUTに入力された各ピクセル値にそれぞれ対応するノイズ値、第3のLUT入力値、第3のLUT出力値、第2のLUT入力値、および第2のLUT出力値。そのような例では、第2のLUT入力値および/または第3のLUT入力値は、第1のLUT入力値に隣接すること、または隣接しないことがある。処理ユニット1は、補間された各LUT出力値を使用して、画像を変換された画像に変換する(128)ように構成され得る。
【０１３７】
図12は、本開示の例示的な方法を示すフローチャートである。図12の方法は、1つまたは複数の処理ユニット1(たとえば、1つまたは複数のCPU、1つまたは複数のGPU、1つまたは複数のディスプレイ処理ユニット、1つまたは複数の他の処理ユニット、あるいはそれらの任意の組合せ)によって実行され得る。図12は、本開示の1つまたは複数の技法に一致する方法を示す。
【０１３８】
処理ユニット1は、画像の第1のピクセルに対応する第1のピクセル値をルックアップテーブル(LUT)に入力する(130)ように構成され得る。LUTは、1つまたは複数のLUT入力値を1つまたは複数のLUT出力値にマッピングし得る。第1のピクセル値は、LUTにおける第1のLUT出力値にマッピングする第1のLUT入力値に対応し得る。第1のピクセルは、1つまたは複数のピクセル値を含み得る。処理ユニット1は、第1のLUT入力値に関してノイズ値を生成する(132)ように構成され得る。処理ユニット1は、第2のLUT入力値を選択する(134)ように構成され得る。第2のLUT入力値は、第2のLUT出力値にマッピングし得る。処理ユニット1は、第3のLUT入力値を選択する(136)ように構成され得る。第3のLUT入力値は、第2のLUT出力値にマッピングし得る。第2のLUT入力値および/または第3のLUT入力値は、第1のLUT入力値に隣接すること、または隣接しないことがある。いくつかの例では、処理ユニット1は、以下のうちの1つまたは複数に基づいて、第2のLUT入力値および/または第3のLUT入力値を選択するように構成され得る。ノイズ値、第1のLUT入力値に対する第2または第3のLUT入力値の隣接性、および第1のLUT入力値に対する第2または第3のLUT入力値の非隣接性。
【０１３９】
処理ユニット1は、第1のLUT入力値に関して値の範囲内で第1の補間されたLUT出力値を生成する(138)ように構成され得る。いくつかの例では、処理ユニット1は、以下のうちの1つまたは複数に基づいて、第1のLUT入力値に関して値の範囲内で第1の補間されたLUT出力値を生成するように構成され得る。ノイズ値、第3のLUT入力値、第3のLUT出力値、第2のLUT入力値、および第2のLUT出力値。第1の補間されたLUT出力値は、マッピングされないLUT出力値であり得る。他の例では、処理ユニット1は、以下のうちの1つまたは複数に基づいて、第1のLUT入力値に関して値の範囲内で第1の補間されたLUT出力値を生成するように構成され得る。ノイズ値、第1のLUT入力値、第1のLUT出力値、第3のLUT入力値、第3のLUT出力値、第2のLUT入力値、および第2のLUT出力値。処理ユニット1は、第1の補間されたLUT出力値を使用して、画像を変換された画像に変換する(140)ように構成され得る。
【０１４０】
図13は、本開示の例示的な方法を示すフローチャートである。図13の方法は、1つまたは複数の処理ユニット1(たとえば、1つまたは複数のCPU、1つまたは複数のGPU、1つまたは複数のディスプレイ処理ユニット、1つまたは複数の他の処理ユニット、あるいはそれらの任意の組合せ)によって実行され得る。図13は、本開示の1つまたは複数の技法に一致する方法を示す。
【０１４１】
処理ユニット1は、画像の第1のピクセルに対応する第1のピクセル値をルックアップテーブル(LUT)に入力する(150)ように構成され得る。LUTは、1つまたは複数のLUT入力値を1つまたは複数のLUT出力値にマッピングし得る。第1のピクセル値は、LUTにおける第1のLUT出力値にマッピングする第1のLUT入力値に対応し得る。第1のピクセルは、1つまたは複数のピクセル値を含み得る。処理ユニット1は、第1のLUT入力値に関してノイズ値を生成する(152)ように構成され得る。
【０１４２】
いくつかの例では、LUTは、単一のLUTから導出された2つのLUTのうちの第1のLUTであり得る。単一のLUTは、複数のLUT入力値を1つまたは複数のLUT出力値にマッピングし得る。第1のLUTは、複数の入力値のサブセットを単一のLUTの1つまたは複数のLUT出力値にマッピングすることができ、単一のLUTから導出された第2のLUTは、複数の入力値の異なるサブセットを単一のLUTの1つまたは複数のLUT出力値にマッピングすることができる。
【０１４３】
処理ユニット1は、ノイズ値に基づいて、第1のLUT入力値に関して第1の補間されたLUT出力値を生成する(154)ように構成され得る。いくつかの例では、第1の補間されたLUT出力値は、マッピングされないLUT出力値であり得る。いくつかの例では、処理ユニット1は、第2のLUT入力値を選択するように構成され得る。第2のLUT入力値は、第2のLUT出力値にマッピングし得る。いくつかの例では、処理ユニット1は、第1のLUT入力値、第2のLUT入力値、および第2のLUT出力値のうちの少なくとも1つにさらに基づいて、第1の補間されたLUT出力値を生成するように構成され得る。
【０１４４】
いくつかの例では、処理ユニット1は、第2および第3のLUT入力値を選択するように構成され得る。第2および第3のLUT入力値はそれぞれ、第2および第3のLUT出力値にマッピングし得る。いくつかの例では、処理ユニット1は、第1のLUT入力値、第2のLUT入力値、第2のLUT出力値、第3のLUT出力値、および第3のLUT出力値のうちの少なくとも1つにさらに基づいて、第1の補間されたLUT出力値を生成するように構成され得る。いくつかの例では、処理ユニット1は、ノイズ値、第1のLUT入力値に対する第2または第3のLUT入力値の隣接性、および第1のLUT入力値に対する第2または第3のLUT入力値の非隣接性のうちの少なくとも1つに基づいて、第2のLUT入力値または第3のLUT入力値を選択するように構成され得る。
【０１４５】
処理ユニット1は、第1の補間されたLUT出力値を使用して、画像を変換された画像に変換する(156)ように構成され得る。
【０１４６】
処理ユニット1は、画像の第2のピクセルに対応する第1のピクセル値をLUTに入力するように構成され得る。いくつかの例では、処理ユニット1は、上記で説明した第1のピクセルの第1のピクセル値と同じ方法で第2のピクセルの第1のピクセル値を処理するように構成され得る。他の例では、第2のピクセルの第1のピクセル値が入力されるLUTは、第1のピクセルの第1のピクセル値が入力されるLUTとは異なり得る。たとえば、LUTは、単一のLUTから導出された2つのLUTのうちの第1のLUTであり得る。単一のLUTは、複数のLUT入力値を1つまたは複数のLUT出力値にマッピングし得る。第1のLUTは、複数の入力値のサブセットを単一のLUTの1つまたは複数のLUT出力値にマッピングすることができ、単一のLUTから導出された第2のLUTは、複数の入力値の異なるサブセットを単一のLUTの1つまたは複数のLUT出力値にマッピングすることができる。
【０１４７】
処理ユニット1は、第1のピクセルの第1のピクセル値を、単一のLUTから導出された第1のLUTに入力し、第2のピクセルの第1のピクセル値を、単一のLUTから導出された第2のLUTに入力するように構成され得る。そのような例では、処理ユニット1は、上記で説明した第1のピクセルの第1のピクセル値と同じ方法で第2のピクセルの第1のピクセル値を処理するように構成され得るが、1つの違いは、第1および第2のピクセルに関する第1のピクセル値が入力されるLUTである。
【０１４８】
図14は、本開示の例示的な方法を示すフローチャートである。図14の方法は、1つまたは複数の処理ユニット1(たとえば、1つまたは複数のCPU、1つまたは複数のGPU、1つまたは複数のディスプレイ処理ユニット、1つまたは複数の他の処理ユニット、あるいはそれらの任意の組合せ)によって実行され得る。図14は、本開示の1つまたは複数の技法に一致する方法を示す。
【０１４９】
処理ユニット1は、画像の1つまたは複数のピクセルに対応する複数のピクセル値をルックアップテーブル(LUT)に入力する(160)ように構成され得る。LUTは、1つまたは複数のLUT入力値をLUTにおける1つまたは複数のLUT出力値にマッピングし得る。複数のピクセル値の各々は、1つまたは複数のLUT出力値のうちの1つにマッピングする1つまたは複数のLUT入力値のうちの1つにそれぞれ対応し得る。1つまたは複数のピクセルは、1つまたは複数のピクセル値を含み得る。処理ユニット1は、各ピクセル値に対応する各LUT入力値に関してノイズ値を生成する(162)ように構成され得る。
【０１５０】
いくつかの例では、LUTは、単一のLUTから導出された2つのLUTのうちの第1のLUTであってよく、単一のLUTが複数のLUT入力値を1つまたは複数のLUT出力値にマッピングする。第1のLUTは、複数の入力値のサブセットを単一のLUTの1つまたは複数のLUT出力値にマッピングすることができ、単一のLUTから導出された第2のLUTは、複数の入力値の異なるサブセットを単一のLUTの1つまたは複数のLUT出力値にマッピングすることができる。そのような例では、画像の1つまたは複数のピクセルに対応する1つまたは複数のピクセル値は、単一のLUTから導出された第1のLUTに入力されてよく、画像の1つまたは複数のピクセルに対応する1つまたは複数のピクセル値は、単一のLUTから導出された第2のLUTに入力されてよい。
【０１５１】
処理ユニット1は、LUTに入力された各ピクセル値にそれぞれ対応するノイズ値に基づいて、LUTに入力された各ピクセル値に対応する各LUT入力値に関して補間されたLUT出力値を生成する(164)ように構成され得る。いくつかの例では、少なくとも1つの補間されたLUT出力値は、マッピングされないLUT出力値であり得る。いくつかの例では、処理ユニット1は、各LUT入力値に関して第2のLUT入力値を選択するように構成され得る。第2のLUT入力値は、第2のLUT出力値にマッピングし得る。いくつかの例では、処理ユニット1は、LUTに入力された各ピクセル値にそれぞれ対応する第1のLUT入力値、第2のLUT入力値、および第2のLUT出力値のうちの少なくとも1つにさらに基づいて、LUTに入力された各ピクセル値に対応する各LUT入力値に関して第1の補間されたLUT出力値を生成するように構成され得る。
【０１５２】
いくつかの例では、処理ユニット1は、各LUT入力値に関して第2および第3のLUT入力値を選択するように構成され得る。第2および第3のLUT入力値はそれぞれ、第2および第3のLUT出力値にマッピングし得る。いくつかの例では、処理ユニット1は、LUTに入力された各ピクセル値にそれぞれ対応する第1のLUT入力値、第2のLUT入力値、第2のLUT出力値、第3のLUT入力値、および第3のLUT出力値のうちの少なくとも1つにさらに基づいて、LUTに入力された各ピクセル値に対応する各LUT入力値に関して第1の補間されたLUT出力値を生成するように構成され得る。いくつかの例では、処理ユニット1は、LUTに入力された各ピクセル値にそれぞれ対応するノイズ値、第1のLUT入力値に対する第2または第3のLUT入力値の隣接性、および第1のLUT入力値に対する第2または第3のLUT入力値の非隣接性のうちの少なくとも1つに基づいて、各LUT入力値に関して第2のLUT入力値または第3のLUT入力値を選択するように構成され得る。
【０１５３】
処理ユニット1は、補間された各LUT出力値を使用して、画像を変換された画像に変換する(166)ように構成され得る。
【０１５４】
本開示によれば、「または」という用語は、文脈が別段規定しない限り、「および/または」として解釈され得る。加えて、「1つまたは複数の」または「少なくとも1つの」などの語句が、本明細書において開示されるいくつかの特徴に対して使用されていて、他の特徴に対しては使用されていないことがあるが、そのような言葉が使用されなかった特徴は、文脈が別段規定しない限り、そのような示唆される意味を有するものと解釈され得る。
【０１５５】
1つまたは複数の例では、本明細書で説明する機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。たとえば、「処理ユニット」という用語が本開示全体にわたって使用されているが、そのような処理ユニットはハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得ることを理解されたい。本明細書で説明する任意の機能、処理ユニット、技法、または他のモジュールがソフトウェアで実装される場合、本明細書で説明する機能、処理ユニット、技法、または他のモジュールは、1つまたは複数の命令またはコードとしてコンピュータ可読媒体上に記憶されるか、またはコンピュータ可読媒体を介して送信され得る。コンピュータ可読媒体は、コンピュータデータ記憶媒体、またはコンピュータプログラムを1つの場所から別の場所に転送することを容易にする任意の媒体を含む通信媒体を含むことができる。このようにして、コンピュータ可読媒体は一般に、(1)非一時的である有形コンピュータ可読記憶媒体、または(2)信号もしくは搬送波などの通信媒体に対応し得る。データ記憶媒体は、本開示で説明する技法の実装のための命令、コードおよび/またはデータ構造を取り出すために1つもしくは複数のコンピュータまたは1つもしくは複数のプロセッサによってアクセスされ得る任意の利用可能な媒体であり得る。限定ではなく例として、そのようなコンピュータ可読媒体は、RAM、ROM、EEPROM、CD-ROM、または他の光学ディスクストレージ、磁気ディスクストレージ、または他の磁気ストレージデバイスを含むことができる。本明細書で使用されるディスク(disk)およびディスク(disc)は、コンパクトディスク(disc)(CD)、レーザーディスク(登録商標)(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(DVD)、フロッピーディスク(disk)、およびブルーレイディスク(disc)を含み、ディスク(disk)は、通常、データを磁気的に再生し、ディスク(disc)は、レーザーを用いてデータを光学的に再生する。上記の組合せもコンピュータ可読媒体の範囲に含まれるべきである。コンピュータプログラム製品がコンピュータ可読媒体を含み得る。
【０１５６】
コードは、1つもしくは複数のデジタル信号プロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブルロジックアレイ(FPGA)、または他の等価な集積論理回路もしくはディスクリート論理回路などの1つまたは複数のプロセッサによって実行され得る。したがって、「プロセッサ」という用語は、本明細書で使用される場合、前述の構造のいずれかのもの、または本明細書で説明する技法を実装するのに適した任意の他の構造を指すことができる。さらに、いくつかの態様では、本明細書で説明する機能は、画像および/またはビデオ処理のために構成された専用のハードウェアモジュールおよび/またはソフトウェアモジュールの中で与えられることがある。また、技法は、1つまたは複数の回路または論理要素で完全に実装されてもよい。
【０１５７】
本開示の技法は、ワイヤレスハンドセット、集積回路(IC)、またはICのセット(たとえば、チップセット)を含む、様々なデバイスまたは装置において実装されてもよい。開示される技法を実行するように構成されたデバイスの機能的態様を強調するために、様々な構成要素、モジュール、またはユニットについて本開示内で説明したが、これらの構成要素、モジュール、またはユニットは、必ずしも異なるハードウェアユニットによる実現を必要とするとは限らない。むしろ、上記で説明したように、様々なユニットが、適切なソフトウェアおよび/またはファームウェアとともに、上記で説明した1つまたは複数のプロセッサを含めて、任意のハードウェアユニットにおいて組み合わせられ得るか、または相互動作可能なハードウェアユニットの集合によって与えられ得る。
【０１５８】
様々な例が記載されている。これらおよび他の例は、以下の特許請求の範囲内に入る。
【符号の説明】
【０１５９】
1  処理ユニット
2  コンピューティングデバイス
3  トランシーバ
4  ユーザインターフェース
5  内部メモリ
6  中央処理装置(CPU)
7  ビデオコーデック
8  ディスプレイ
9  バス
10  システムメモリ
11  デジタル信号プロセッサ(DSP)
12  グラフィックス処理ユニット(GPU)
14  ディスプレイプロセッサ
16  出力バッファ
17  出力バッファ
18  ソフトウェアアプリケーション
20  グラフィックスメモリ
22  GPUドライバ
24  コマンドプロセッサ
【図１】
2018530062.tif 000012
【図２】
2018530062.tif 000013
【図３】
2018530062.tif 000014
【図４】
2018530062.tif 000015
【図５】
2018530062.tif 000016
【図６】
2018530062.tif 000017
【図７】
2018530062.tif 000018
【図８】
2018530062.tif 000019
【図９】
2018530062.tif 000020
【図１０】
2018530062.tif 000021
【図１１】
2018530062.tif 000022
【図１２】
2018530062.tif 000023
【図１３】
2018530062.tif 000024
【図１４】
2018530062.tif 000025
【手続補正書】
【提出日】平成30年3月15日(2018.3.15)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
処理ユニットによって、画像の第1のピクセルに対応する第1のピクセル値をルックアップテーブル(LUT)に入力するステップであって、前記LUTは、1つまたは複数のLUT入力値を1つまたは複数のLUT出力値にマッピングし、前記第1のピクセル値は、前記LUTにおける第1のLUT出力値にマッピングする第1のLUT入力値に対応する、ステップと、
ノイズ修正済みの第1のLUT入力値を生成するために、前記第1のLUT入力値にノイズを適用するステップであって、前記ノイズはノイズ値によって表される、ステップと、
前記処理ユニットによって、前記ノイズ修正済みの第1のLUT入力値に基づいて、前記第1のLUT入力値に関して第1の補間されたLUT出力値を生成するステップと、
前記処理ユニットによって、前記第1の補間されたLUT出力値を使用して、前記画像を変換された画像に変換するステップと
を含む、方法。
【請求項２】
前記第1の補間されたLUT出力値は、マッピングされないLUT出力値である、請求項1に記載の方法。
【請求項３】
前記処理ユニットによって、第2のLUT入力値を選択するステップであって、前記第2のLUT入力値は第2のLUT出力値にマッピングする、ステップ
をさらに含む、請求項1に記載の方法。
【請求項４】
前記処理ユニットによって、前記第1のLUT入力値、前記第2のLUT入力値、および前記第2のLUT出力値のうちの少なくとも1つにさらに基づいて、前記第1の補間されたLUT出力値を生成するステップ
をさらに含む、請求項3に記載の方法。
【請求項５】
前記LUTは、単一のLUTから導出された2つのLUTのうちの第1のLUTであり、前記単一のLUTは、複数のLUT入力値を1つまたは複数のLUT出力値にマッピングし、前記第1のLUTは、前記複数の入力値のサブセットを前記単一のLUTの前記1つまたは複数のLUT出力値にマッピングし、前記単一のLUTから導出された第2のLUTは、前記複数の入力値の異なるサブセットを前記単一のLUTの前記1つまたは複数のLUT出力値にマッピングする、請求項3に記載の方法。
【請求項６】
前記処理ユニットによって、第3のLUT入力値を選択するステップであって、前記第3のLUT入力値は第3のLUT出力値にマッピングする、ステップ
をさらに含む、請求項3に記載の方法。
【請求項７】
前記処理ユニットによって、前記第1のLUT入力値、前記第2のLUT入力値、前記第2のLUT出力値、前記第3のLUT入力値、および前記第3のLUT出力値のうちの少なくとも1つにさらに基づいて、前記第1の補間されたLUT出力値を生成するステップ
をさらに含む、請求項6に記載の方法。
【請求項８】
前記処理ユニットによって、前記ノイズ値、前記第1のLUT入力値に対する前記第2または第3のLUT入力値の隣接性、および前記第1のLUT入力値に対する前記第2または第3のLUT入力値の非隣接性のうちの少なくとも1つに基づいて、前記第2のLUT入力値または前記第3のLUT入力値を選択するステップ
をさらに含む、請求項6に記載の方法。
【請求項９】
画像を記憶するためのメモリと、
1つまたは複数のプロセッサと
を含むデバイスであって、前記1つまたは複数のプロセッサは、
前記画像の第1のピクセルに対応する第1のピクセル値をルックアップテーブル(LUT)に入力することであって、前記LUTは、1つまたは複数のLUT入力値を1つまたは複数のLUT出力値にマッピングし、前記第1のピクセル値は、前記LUTにおける第1のLUT出力値にマッピングする第1のLUT入力値に対応する、入力することと、
ノイズ修正済みの第1のLUT入力値を生成するために、前記第1のLUT入力値にノイズを適用することであって、前記ノイズはノイズ値によって表される、適用することと、
前記ノイズ修正済みの第1のLUT入力値に基づいて、前記第1のLUT入力値に関して第1の補間されたLUT出力値を生成することと、
前記第1の補間されたLUT出力値を使用して、前記画像を変換された画像に変換することと
を行うように構成される、デバイス。
【請求項１０】
前記第1の補間されたLUT出力値は、マッピングされないLUT出力値である、請求項9に記載のデバイス。
【請求項１１】
前記1つまたは複数のプロセッサは、
第2のLUT入力値を選択することであって、前記第2のLUT入力値は第2のLUT出力値にマッピングする、選択すること
を行うように構成される、請求項9に記載のデバイス。
【請求項１２】
前記1つまたは複数のプロセッサは、
前記第1のLUT入力値、前記第2のLUT入力値、および前記第2のLUT出力値のうちの少なくとも1つにさらに基づいて、前記第1の補間されたLUT出力値を生成する
ように構成される、請求項11に記載のデバイス。
【請求項１３】
前記LUTは、単一のLUTから導出された2つのLUTのうちの第1のLUTであり、前記単一のLUTは、複数のLUT入力値を1つまたは複数のLUT出力値にマッピングし、前記第1のLUTは、前記複数の入力値のサブセットを前記単一のLUTの前記1つまたは複数のLUT出力値にマッピングし、前記単一のLUTから導出された第2のLUTは、前記複数の入力値の異なるサブセットを前記単一のLUTの前記1つまたは複数のLUT出力値にマッピングする、請求項11に記載のデバイス。
【請求項１４】
前記1つまたは複数のプロセッサは、
第3のLUT入力値を選択することであって、前記第3のLUT入力値は第3のLUT出力値にマッピングする、選択すること
を行うように構成される、請求項11に記載のデバイス。
【請求項１５】
前記1つまたは複数のプロセッサは、
前記第1のLUT入力値、前記第2のLUT入力値、前記第2のLUT出力値、前記第3のLUT入力値、および前記第3のLUT出力値のうちの少なくとも1つにさらに基づいて、前記第1の補間されたLUT出力値を生成する
ように構成される、請求項14に記載のデバイス。
【請求項１６】
前記1つまたは複数のプロセッサは、
前記ノイズ値、前記第1のLUT入力値に対する前記第2または第3のLUT入力値の隣接性、および前記第1のLUT入力値に対する前記第2または第3のLUT入力値の非隣接性のうちの少なくとも1つに基づいて、前記第2のLUT入力値または前記第3のLUT入力値を選択する
ように構成される、請求項14に記載のデバイス。
【請求項１７】
画像の第1のピクセルに対応する第1のピクセル値をルックアップテーブル(LUT)に入力するための手段であって、前記LUTは、1つまたは複数のLUT入力値を1つまたは複数のLUT出力値にマッピングし、前記第1のピクセル値は、前記LUTにおける第1のLUT出力値にマッピングする第1のLUT入力値に対応する、手段と、
ノイズ修正済みの第1のLUT入力値を生成するために、前記第1のLUT入力値にノイズを適用するための手段であって、前記ノイズはノイズ値によって表される、手段と、
前記ノイズ修正済みの第1のLUT入力値に基づいて、前記第1のLUT入力値に関して第1の補間されたLUT出力値を生成するための手段と、
前記第1の補間されたLUT出力値を使用して、前記画像を変換された画像に変換するための手段と
を含む、装置。
【請求項１８】
前記第1の補間されたLUT出力値は、マッピングされないLUT出力値である、請求項17に記載の装置。
【請求項１９】
第2のLUT入力値を選択するための手段であって、前記第2のLUT入力値は第2のLUT出力値にマッピングする、手段
をさらに含む、請求項17に記載の装置。
【請求項２０】
前記第1のLUT入力値、前記第2のLUT入力値、および前記第2のLUT出力値のうちの少なくとも1つにさらに基づいて、前記第1の補間されたLUT出力値を生成するための手段
をさらに含む、請求項19に記載の装置。
【請求項２１】
前記LUTは、単一のLUTから導出された2つのLUTのうちの第1のLUTであり、前記単一のLUTは、複数のLUT入力値を1つまたは複数のLUT出力値にマッピングし、前記第1のLUTは、前記複数の入力値のサブセットを前記単一のLUTの前記1つまたは複数のLUT出力値にマッピングし、前記単一のLUTから導出された第2のLUTは、前記複数の入力値の異なるサブセットを前記単一のLUTの前記1つまたは複数のLUT出力値にマッピングする、請求項19に記載の装置。
【請求項２２】
第3のLUT入力値を選択するための手段であって、前記第3のLUT入力値は第3のLUT出力値にマッピングする、手段
をさらに含む、請求項19に記載の装置。
【請求項２３】
前記第1のLUT入力値、前記第2のLUT入力値、前記第2のLUT出力値、前記第3のLUT入力値、および前記第3のLUT出力値のうちの少なくとも1つにさらに基づいて、前記第1の補間されたLUT出力値を生成するための手段と、
前記ノイズ値、前記第1のLUT入力値に対する前記第2または第3のLUT入力値の隣接性、および前記第1のLUT入力値に対する前記第2または第3のLUT入力値の非隣接性のうちの少なくとも1つに基づいて、前記第2のLUT入力値または前記第3のLUT入力値を選択するための手段と
をさらに含む、請求項22に記載の装置。
【請求項２４】
実行されると、コンピューティングデバイスの1つまたは複数のプロセッサに、
画像の第1のピクセルに対応する第1のピクセル値をルックアップテーブル(LUT)に入力することであって、前記LUTは、1つまたは複数のLUT入力値を1つまたは複数のLUT出力値にマッピングし、前記第1のピクセル値は、前記LUTにおける第1のLUT出力値にマッピングする第1のLUT入力値に対応する、入力することと、
ノイズ修正済みの第1のLUT入力値を生成するために、前記第1のLUT入力値にノイズを適用することであって、前記ノイズはノイズ値によって表される、適用することと、
前記ノイズ修正済みの第1のLUT入力値に基づいて、前記第1のLUT入力値に関して第1の補間されたLUT出力値を生成することと、
前記第1の補間されたLUT出力値を使用して、前記画像を変換された画像に変換することと
を行わせる命令を記憶した、非一時的コンピュータ可読媒体。
【請求項２５】
前記第1の補間されたLUT出力値は、マッピングされないLUT出力値である、請求項24に記載の非一時的コンピュータ可読媒体。
【請求項２６】
実行されると、前記1つまたは複数のプロセッサに、
第2のLUT入力値を選択することであって、前記第2のLUT入力値は第2のLUT出力値にマッピングする、選択すること
を行わせる命令をさらに記憶した、請求項24に記載の非一時的コンピュータ可読媒体。
【請求項２７】
実行されると、前記1つまたは複数のプロセッサに、
前記第1のLUT入力値、前記第2のLUT入力値、および前記第2のLUT出力値のうちの少なくとも1つにさらに基づいて、前記第1の補間されたLUT出力値を生成すること
を行わせる命令をさらに記憶した、請求項26に記載の非一時的コンピュータ可読媒体。
【請求項２８】
前記LUTは、単一のLUTから導出された2つのLUTのうちの第1のLUTであり、前記単一のLUTは、複数のLUT入力値を1つまたは複数のLUT出力値にマッピングし、前記第1のLUTは、前記複数の入力値のサブセットを前記単一のLUTの前記1つまたは複数のLUT出力値にマッピングし、前記単一のLUTから導出された第2のLUTは、前記複数の入力値の異なるサブセットを前記単一のLUTの前記1つまたは複数のLUT出力値にマッピングする、請求項26に記載の非一時的コンピュータ可読媒体。
【請求項２９】
実行されると、前記1つまたは複数のプロセッサに、
第3のLUT入力値を選択することであって、前記第3のLUT入力値は第3のLUT出力値にマッピングする、選択すること
を行わせる命令をさらに記憶した、請求項26に記載の非一時的コンピュータ可読媒体。
【請求項３０】
実行されると、前記1つまたは複数のプロセッサに、
前記第1のLUT入力値、前記第2のLUT入力値、前記第2のLUT出力値、前記第3のLUT入力値、および前記第3のLUT出力値のうちの少なくとも1つにさらに基づいて、前記第1の補間されたLUT出力値を生成することと、
前記ノイズ値、前記第1のLUT入力値に対する前記第2または第3のLUT入力値の隣接性、および前記第1のLUT入力値に対する前記第2または第3のLUT入力値の非隣接性のうちの少なくとも1つに基づいて、前記第2のLUT入力値または前記第3のLUT入力値を選択することと
を行わせる命令をさらに記憶した、請求項29に記載の非一時的コンピュータ可読媒体。
【国際調査報告】
2018530062.tif 000026
2018530062.tif 000027
2018530062.tif 000028