(57)【要約】  画像を処理する方法は、画像の少なくとも一部における複数の画素値の各々に対して、複数のオフセット値の中の１つを選択することを含む。複数の画素値の各々に対して、インデックス値は、（Ａ）選択されたオフセット値と、（Ｂ）画素値の一部とに基づいて得られる。複数の画素値の各々に対して、エントリは、対応するインデックス値にしたがってルックアップ テーブルから検索される。【選択図】      図１
2009505584.tif 000002
【特許請求の範囲】
【請求項１】
画像の少なくとも一部における複数の画素値の各々に対して、複数のオフセット値の中の１つを選択することと、
複数の画素値の各々に対して、（Ａ）選択されたオフセット値と（Ｂ）画素値の一部とに基づいて、インデックス値を得ることと、
複数の画素値の各々に対して、対応するインデックス値にしたがって、ルックアップ テーブルからエントリを検索することとを含む画像を処理する方法。
【請求項２】
複数の画素値の各々は、ｓビットの幅をもち、
ルックアップ テーブルは、２ｓ個未満のエントリをもつ請求項１記載の画像を処理する方法。
【請求項３】
画素値の幅は、ルックアップ テーブルから検索される対応するエントリの幅よりも大きい請求項１記載の画像を処理する方法。
【請求項４】
複数の画素値の２つの差は、ルックアップ テーブル内のエントリ数よりも大きい請求項１記載の画像を処理する方法。
【請求項５】
前記複数のオフセット値の１つを選択することは、
値の範囲の複数のセクションの中から、画素値を含んでいるセクションを識別することと、
セクションに関連付けられたオフセット値を検索することとを含む請求項１記載の画像を処理する方法。
【請求項６】
前記インデックス値を得ることは、複数のセクション内の対応するセクションの位置にしたがって画素値をシフトすることを含む請求項５記載の画像を処理する方法。
【請求項７】
前記画素値をシフトすることは、画素値をビット右シフトすることを含む請求項６記載の画像を処理する方法。
【請求項８】
前記インデックス値を得ることは、画素値のシフトされた部分とオフセット値との和を得ることを含む請求項１記載の画像を処理する方法。
【請求項９】
複数の画素値の各々に対して、前記ルックアップ テーブルからエントリを検索することは、対応するインデックス値にしたがってルックアップ テーブルから第２の画像の画素値を検索することを含む請求項１記載の画像を処理する方法。
【請求項１０】
複数の画素値の少なくとも１つの幅は、ルックアップ テーブルから検索される対応する画素値の幅よりも大きい請求項９記載の画像を処理する方法。
【請求項１１】
前記方法は、センサから画像を受信することを含む請求項１記載の画像を処理する方法。
【請求項１２】
前記方法は、画像に基づいて処理された画像を出力することと、検索されるエントリを含むこととを含み、
複数の画素値の各々は、画像内に位置し、
処理された画像における検索されるエントリの各々の位置は、対応する画素値の画像における位置に基づく請求項１記載の画像を処理する方法。
【請求項１３】
前記方法は、ルックアップ テーブルから検索されるエントリを含む画像信号を表示することを含む請求項１記載の画像を処理する方法。
【請求項１４】
前記方法は、ルックアップ テーブルから検索されるエントリを含む画像信号を、データ記憶媒体に記憶することを含む請求項１記載の画像を処理する方法。
【請求項１５】
前記方法は、複数の画素値の複数のカラー成分の各々に対して、（Ａ）前記複数のオフセット値の中から１つを選択することと、（Ｂ）前記インデックス値を得ることと、（Ｃ）前記ルックアップ テーブルからエントリを検索することとを行うことを含む請求項１記載の画像を処理する方法。
【請求項１６】
前記ルックアップ テーブルと異なる第２のルックアップ テーブルをロードすることと、
複数の画素値の各々に対して、第２の複数のオフセット値の中の１つを選択することと、
複数の画素値の各々に対して、（Ａ）第２の複数のオフセット値から選択されたオフセット値と、（Ｂ）画素値の一部とに基づいて、第２のインデックス値を得ることと、
複数の画素値の各々に対して、対応する第２のインデックス値にしたがって、第２のルックアップ テーブルからエントリを検索することとを含む請求項１記載の画像を処理する方法。
【請求項１７】
請求項１記載の画像を処理する方法にしたがう方法を記述している命令を記憶するように構成されたデータ記憶媒体。
【請求項１８】
画像を処理するように構成された装置であって、前記装置は、
（Ａ）画像の少なくとも一部における複数の画素値の各々に対して、値の範囲の複数のセクションの中から、画素値を含むセクションを識別し、（Ｂ）セクションに関連付けられたオフセット値を検索するように構成された論理素子の配列と、
複数のセクション内の対応するセクションの位置にしたがって、複数の画素値の各々をシフトするように構成されたシフタと、
複数の画素値の各々に対して、オフセット値とシフトされた画素値とに基づいて、インデックス値を得るように構成された加算器とを含み、
論理素子の配列は、複数の画素値の各々に対して、対応するインデックス値にしたがってルックアップ テーブルからエントリを検索するように構成されている装置。
【請求項１９】
前記装置は、画像を与えるように構成されたセンサを含む請求項１８記載の画像を処理するように構成された装置。
【請求項２０】
前記装置は、ルックアップ テーブルから検索されるエントリに基づいて、処理された画像を表示するように構成されたディスプレイを含む請求項１８記載の画像を処理するように構成された装置。
【請求項２１】
前記装置は、
画像が基づく信号を与えるように構成されたセンサと、
ルックアップ テーブルから検索されるエントリに基づいて、処理された画像を表示するように構成されたディスプレイと、
装置を制御して、処理された画像に基づく信号をセルラ通信のためのネットワークへ無線で送信するように構成されたユーザインターフェースとを含む請求項１８記載の画像を処理するように構成された装置。
【請求項２２】
前記方法は、
Ｐ個の値の範囲のＮ個のセクションへの分割を示す境界値のセットを選択することと、
境界値の選択されたセットと非線形マッピング関数とに基づいて、Ｎ個のセクションをもつルックアップ テーブルを構築することであって、ルックアップ テーブルの各エントリはＰ個の値の少なくとも１つに対応することと、
少なくとも（Ｎ−１）個のセクションの各々に対して、境界値の選択されたセットに基づいて、対応するインデックスのオフセット値を計算することとを含む画像を処理する方法。
【請求項２３】
前記境界点のセットを選択することは、希望最大数Ｌのテーブルエントリにしたがって境界点のセットを選択することを含み、ＬはＰよりも小さく、
前記ルックアップ テーブルを構築することは、希望最大数Ｌ以下のテーブルエントリをもつルックアップ テーブルを構築することを含む請求項２２記載の画像を処理する方法。
【請求項２４】
前記対応するインデックスのオフセット値を計算することは、（Ａ）（Ａ１）Ｐ個の値の最小値および（Ａ２）Ｐ個の値の最大値の１つから、（Ｂ）セクションの境界値までの、ルックアップ テーブルにおけるエントリ数を計算することを含む請求項２２記載の画像を処理する方法。
【請求項２５】
前記方法は、
境界点の複数のセットを識別することであって、複数のセットの各々は、希望最大数Ｌのテーブルエントリにしたがって、Ｐ個の値の範囲のＮ個のセクションへの異なる分割を示すことと、
境界値の複数のセットの各々に対して、非線形マッピング関数に基づいて、希望最大数Ｌ以下のテーブルエントリをもつ対応するルックアップ テーブルを構築することとを含み、
前記境界値のセットを選択することは、境界点の複数のセットの中から境界点のセットを選択することを含む請求項２２記載の画像を処理する方法。
【請求項２６】
前記方法は、境界値の複数のセットの各々に対して、非線形マッピング関数に関して対応するルックアップ テーブルの誤差を計算することを含み、
前記境界値のセットを選択することは、境界値のセットの計算された誤差にしたがって、境界点の複数のセットの中から境界点のセットを選択することを含む請求項２５記載の画像を処理する方法。
【請求項２７】
前記対応するルックアップ テーブルの誤差を計算することは、Ｐ個の値をもつルックアップ テーブルに関してルックアップ テーブルの誤差を計算することを含む請求項２６記載の画像を処理する方法。
【請求項２８】
前記方法は、境界点の複数のセットの各々に対して、インデックスのオフセット値のセットを計算することを含む請求項２２記載の画像を処理する方法。
【請求項２９】
少なくとも（Ｎ−１）個のセクションの各々に対して、ルックアップ テーブルの各エントリは、Ｐ個の値の中の２つ以上における非線形マッピング関数の評価に基づく請求項２２記載の画像を処理する方法。
【請求項３０】
セクションの少なくとも１つに対して、ルックアップ テーブルの各エントリは、Ｐ個の値の中の複数ｉにおける非線形マッピング関数の評価に基づき、
別のセクションに対して、ルックアップ テーブルの各エントリは、Ｐ個の値の中の複数ｊにおける非線形マッピング関数の評価に基づき、ｊはｉよりも大きい請求項２９記載の画像を処理する方法。
【発明の詳細な説明】
【発明の分野】
【０００１】
本発明は、画像処理に関する。
【発明の背景】
【０００２】
多くの画像表示システムは、非線形に応答する。例えば、陰極線管(cathode-ray tube, CRT)は、通常、入力信号レベルと出力画素(ピクセル)の輝度(luminance)との関係性が非線形である画像を生成する。同様に、プリンタは、通常、入力信号レベルと出力ピクセルのトーン密度との関係性が非線形である画像を生成する。ディスプレイの非線形性の影響は、弱い光またはシャドウエリアにおける鮮明度（definition）の損失のようなアーティファクトを含み得る。
【０００３】
画像のトーンスケール（tone scale）の知覚的に適切な再生を達成するために、このような非線形性を補償することが望ましい。例えば、ハイライトにおける鮮明度を過度に損なうことなく、画像のシャドウ領域のディテール（detail）を向上することが望ましいことがあり得る。
【０００４】
画像収集システムは、電荷結合素子(charge-coupled device, CCD)または相補性金属酸化膜半導体(complementary metal-oxide-semiconductor, CMOS)センサのようなセンサを含み得る。このようなセンサの出力信号に非線形マッピングを適用することが望ましいことがあり得る。例えば、ディスプレイの非線形性を予め補償すること、センサ応答(例えば、対数応答)における非線形性を補償すること、および／または標準の、知覚的に一様の、および／またはデバイス独立の空間（device-independent space）(例えば、ｓＲＧＢ、ＹＣｒＣｂ、ＣＩＥ ＬａｂまたはＬｕｂまたはＸＹＺ、等)へ信号を符号化することが望ましいことがあり得る。
【０００５】
パラメータのガンマ(γ)は、トーンスケールの非線形の再生を特徴付けるのに一般に使用されている。図１は、正規化された入力値から正規化された出力値への非線形マッピングが、べき関数γ＝１（２／２）によりモデル化されている例を示している。画像信号にこのようなマッピングを適用する操作は、ガンマ補正と呼ばれている。
【０００６】
ガンマ曲線の形状は、画像の全体的なカラーアピアランス（color appearance）だけでなく、画像の明るさ（brightness）およびコントラストにも影響を与え得る。ガンマ補正操作は、一般に、輝度−クロミナンス信号の輝度成分、例えば、ＹＣｂＣｒ信号のＹ成分に対して行われる。その代わりに、ガンマ補正操作は、マルチスペクトル信号の成分(例えば、ＲＧＢ信号のＲ、Ｇ、およびＢ成分)の各々に対して同じマッピングを適用することもある。
【０００７】
べき関数のような非線形関数の計算は、計算に関してコスト高（computationally expensive）であり得るが、一般に、ガンマ補正は、入力値を予め計算された出力値にマップするルックアップ テーブル(look-up table, LUT)を使用することによって、かなり効率的に実施される。ピクセル値は、テーブルに対するインデックスとして適用され、マップされた出力値は、インデックスを付けられた位置から検索される。このようにして、マップされた値は、複雑さを大幅に緩和してランタイムにおいて得ることができる。
【０００８】
ガンマ補正のＬＵＴの実施に関する１つの問題は、テーブルのサイズが、ビットの入力値の幅のために指数関数的に大きくなることである。画像センサは、８、１０、１２、または、さらに１４ビットの幅のピクセル値を出力し得る。８ビットの入力ピクセルをマップするＬＵＴは、２５６（２８）個のエントリのみをもつ一方で、１４ビットのピクセルをマップするＬＵＴは、１６，３８４（２１４）個のエントリをもつ。多くのハードウェアの実施において、このようなテーブルは、シリコンのひどく大きいエリアを占めるであろう。さらに、ランタイムにガンマ曲線のテーブルをロードすることを含む応用において、このような大きいテーブルをロードする動作は、時間がかかり過ぎることがある。
【発明の概要】
【０００９】
実施形態にしたがって画像を処理する方法は、画像の少なくとも一部における複数の画素値の各々に対して、複数のオフセット値の中の１つを選択することを含む。複数の画素値の各々に対して、方法は、（Ａ）選択されたオフセット値と、（Ｂ）画素値の一部とに基づいて、インデックス値を得ることと、対応するインデックス値にしたがって、ルックアップ テーブルからエントリを検索することとを含む。
【００１０】
実施形態にしたがって画像を処理するように構成された装置は、（Ａ）画像の少なくとも一部における複数の画素値の各々に対して、値の範囲の複数のセクションの中から、画素値を含むセクションを識別し、（Ｂ）セクションに関連付けられたオフセット値を検索するように構成された論理素子の配列を含む。装置は、複数のセクションの中の対応するセクションの位置にしたがって複数の画素値の各々をシフトするように構成されたシフタと、複数の画素値の各々に対して、オフセット値とシフトされた画素値とに基づいて、インデックス値を得るように構成された加算器とを含む。論理素子の配列は、複数の画素値の各々に対して、対応するインデックス値にしたがってルックアップ テーブルからエントリを検索するように構成されている。
【００１１】
別の実施形態にしたがう画像を処理する方法は、Ｐ個の値の範囲のＮ個のセクションへの分割（partitioning）を示す境界値のセットを選択することを含む。方法は、境界値の選択されたセットと非線形マッピング関数とに基づいて、Ｎ個のセクションをもつルックアップ テーブルを構築することを含む。ルックアップ テーブルの各エントリは、Ｐ個の値の少なくとも１つに対応する。方法は、少なくとも（Ｎ−１）個のセクションの各々に対して、境界値の選択されたセットに基づいて、対応するインデックスのオフセット値を計算することをさらに含む。
【好ましい実施形態の詳細な説明】
【００１２】
実施形態は、ガンマ補正および／または変更の方法を含む非線形関数を適用する方法と、ルックアップ テーブルを構築する方法とを含む。実施形態は、ＣＣＤおよびＣＭＯＳセンサのようなセンサからの信号を処理するのに使用され得るシステム、方法、および装置をさらに含む。別の実施形態は、プリンタ、ＣＲＴ、液晶ディスプレイ(liquid crystal display, LCD)、有機発光ダイオード(organic light-emitting diode, OLED)ディスプレイ、プラズマ ディスプレイ パネル(plasma display panel, PDP)、および／または超小型電気機械システム(micro-electromechanical system, MEMS)ディスプレイデバイス(例えば、空間光変調器)、例えば、ディジタル ミラー デバイス(digital mirror device, DMD)あるいは干渉変調器（interferometric modulator）のようなデバイスを介して表示する信号を処理するのに使用され得るシステム、方法、および装置を含む。幾つかの応用において、ディスプレイデバイスは、セルラ電話、ポータブル ディジタル アシスタント(portable digital assistant, PDA)、カムコーダ、あるいは他のポータブルまたはハンドヘルドユニットとして実施され得る。
【００１３】
ルックアップ テーブルのマッピング関数は、特定のセンサおよび／または応用に適合（tailor）させることができる。場合によっては、マッピング関数を、異なるセンサまたは応用に適したものに変更することが望ましいことがあり得る。例えば、異なるガンマ曲線にしたがってマッピングを適用する装置、例えば、信号処理ユニットを構成することが望ましいことがあり得る。画像のコントラストおよび／またはダイナミックレンジの変更のような特殊効果（special effect）を実施する１つのやり方では、異なるガンマ曲線を使用する。したがって、ルックアップ テーブルの使用を含む操作、例えば、ガンマ補正または変更の操作を行って、異なるマッピング関数を適用するデバイスを構成することが望ましいことがあり得る。
【００１４】
異なるマッピング関数を適用するデバイスを構成することは、デバイスに異なるルックアップ テーブルを参照させることを含み得る。このような構成は、異なるマッピング関数にしたがってルックアップ テーブルを生成すること、および／またはメモリ階層のより低いレベルから別のルックアップ テーブルをロードすることを含み得る。一例において、ルックアップ テーブルは、読み出し専用メモリ(read-only memory, ROM)からランダム アクセス メモリ(random-access memory, RAM)へロードされる。メモリ階層のより低いレベルは、より高密度の記憶特性をもち、一方でメモリ階層のより高いレベルは、より高速のアクセス特性をもち得る。しかしながら、既に記載したように、ルックアップ テーブルのサイズは、インデックス値の幅のために指数関数的に大きくなる。したがって、ピクセル値の幅が８ビットよりも大きいとき、新しいテーブルのローディングは問題を発生し得る。例えば、新しいテーブルをロードするのに必要な時間は、一般消費者向けの応用（consumer application）の許容遅延を超えることがある。
【００１５】
実際に、画像収集の応用に使用され得る典型的なガンマ曲線は、入力範囲の下端（low end）において急な傾斜をもち、入力範囲の上端（high end）において浅い傾斜をもつ。図１は、このような曲線の一例を示している。入力範囲の上端において、曲線の傾斜は１よりも小さい。この領域では、隣接するインデックス値に対応する出力値間の差は、比較的に小さいであろう。したがって、この領域内の２つ以上の入力値を同じ出力値にマップすることによって、マッピングの解像度を下げ、テーブルのサイズを小さくすることは、許容でき得る。しかしながら、曲線の傾斜は入力範囲の下端において１よりも相当に大きいので、この領域では高解像度でマップすることが好都合であり得る。例えば、この領域内の各インデックス値を一意（unique）の出力値にマップすることが望ましいであろう。
【００１６】
通常、ルックアップ テーブルは、ｓビットの所与の最大幅をもち、Ｐ≦２ｓの異なる値の何れかをもち得るインデックスを使用して、アドレス指定される。ルックアップ テーブルのドメインまたは入力範囲は、インデックスの２ｓの可能な値の全てを含み得るか、またはその範囲の幾らかの部分のみを含み得る。後述において、テーブルのドメインは０ないしＭ＝２ｓ−１の値の全範囲を含み、したがってＰ＝２ｓであると仮定するが、ルックアップ テーブルのドメインがその範囲の全てに満たない一部のみを含む実施形態をとくに検討する。
【００１７】
小さくされたサイズのルックアップ テーブルを得ることが望ましい。例えば、Ｌ個のエントリ（なお、Ｌ＜Ｐ）をもつルックアップ テーブルを使用して、マッピング関数を適用することが望ましい。パラメータＬは、システムの制約、例えば、使用可能な転送時間および／またはチップ面積（chip area）にしたがって決定され得る。実施形態は、Ｐ個の入力値をＬ個以下の出力値にマップするルックアップ テーブルを構築および／または適用するシステム、方法、および装置を含む。
【００１８】
図２Ａは、実施形態にしたがう方法Ｍ100のフローチャートを示している。タスクＡ100は、１つ以上の基準を満たす入力範囲の分割(partitioning)を選択する。選択された分割に基づいて、タスクＡ200は、インデックスのオフセット値ｖを計算する。選択された分割およびマッピング関数に基づいて、タスクＡ300は、Ｋ≦Ｌ個のエントリをもつテーブルを計算する。このような方法はオフラインで行われ、ガンマ曲線のような希望のマッピング関数のテーブルを得ることができる。
【００１９】
図２Ｂは、方法Ｍ100の実施Ｍ110のフローチャートを示している。実施Ｍ110は、タスクＡ100の実施Ａ110を含んでいる。タスクＡ110は、希望最大数のテーブルエントリＬにしたがって、境界値ｂのセットを選択する。境界値のセットは、インデックス値の範囲のＮ個のセクションへの分割を示す。なお、Ｎの値は指定され得るか、またはタスクＡ110によって選択され得る。
【００２０】
境界値のセットは、初期値ｂ０、最終値ｂＮ、および（Ｎ−１）個の中間値｛ｂ１，ｂ２，．．．，ｂＮ−１｝を含む。境界値ｂ０およびｂＮは、インデックス値の範囲の中のそれぞれ最小値および最大値を与えられる。一例において、インデックス値の範囲は区間〔０，Ｍ〕であり、したがってｂ０＝０およびｂＮ＝Ｍであるが、入力範囲がその区間の全てに満たない一部のみを含む実施形態をとくに検討する。
【００２１】
本明細書に記載されている例において、境界値のセットは、セクションｉが区間〔ｂｉ，ｂｉ＋１〕（なお、０≦ｉ≦Ｎ−２）であり、セクション（Ｎ−１）が区間〔ｂＮ−１，ｂＮ〕であるように、入力範囲の分割を定義する。構成タスクを適切に変更すると、方法Ｍ110は、セクション０が区間〔ｂ０，ｂ１〕であり、セクションｉが〔ｂｉ，ｂｉ＋１〕（なお、１≦ｉ≦Ｎ−１）であるようにも実施され得ることが分かるであろう。
【００２２】
一例において、タスクＡ110は、次の３つの条件を満たす境界値のセットを選択するように構成される。
【００２３】
ａ）境界値ｂのセットは、空でないセクションを定義する、順序付けされたセットである。この条件は、ｂｉ＜ｂｉ＋１∀ｉ，０≦ｉ＜Ｎとして表現され得る。
【００２４】
ｂ）０＜ｉ＜Ｎにおいて、ｂｉは２ｉの整数倍である。
【００２５】
ｃ）セットｂにしたがって構築された小さくされたＬＵＴのサイズは、希望最大数のテーブルエントリＬを超えない。この条件は、
【数１】
2009505584.tif 000003
【００２６】
として表現され得る。
【００２７】
図３は、このような分割にしたがって、Ｐ個のエントリをもつ元のテーブルＬＵＴ１からの、Ｋ個のエントリをもつ小さくされたテーブルＬＵＴ２の導出を示している。この例では、Ｎ＝３である。第１のセクション(セクション０)では、最大解像度（full resolution）を適用し、テーブルＬＵＴ１の対応するエントリからテーブルＬＵＴ２のエントリを生成する。通常、テーブルＬＵＴ２のセクション０におけるエントリは、ＬＵＴ２〔ｑ〕＝ＬＵＴ１[ｐ]（なお、ｐ＝ｑ）にしたがって得られる。第２のセクション(セクション１)では、テーブルＬＵＴ１からの対（pair）の値を結合し、テーブルＬＵＴ２の各値を生成する。第３のセクション(セクション２)では、テーブルＬＵＴ１からの４つの値を結合し、テーブルＬＵＴ２の各値を生成する。概して、ｉ番目のセクションでは、テーブルＬＵＴ１からの２ｉ個の出力値を結合し、テーブルＬＵＴ２において１つの出力値で表わす。
【００２８】
境界値の多くの異なるセットが、タスクＡ110がその選択を行うときにしたがう条件を満たし得る。可能な候補セットｂの領域（universe）は、ルート（root）の下に（Ｎ−１）レベルをもつツリー（tree）を通るパス(path)として表わされ得る。ｂ０およびｂＮの値は、候補セットの各々において同じである。図４は、（ｂ０，ｂＮ）＝（０，Ｍ）であるこのようなツリーの一例を示している。ルートの下の各レベルのノードは、次の式にしたがって数えられ得る。
【数２】
2009505584.tif 000004
【００２９】
図４の例において、ツリーまたは他のデータ構造は、それが条件ａ）およびｂ）を満たすセットｂｉを示すように構成され得る。これらのセットの一部または全ての各々が条件ｃ）も満たすかどうかを検討することが望ましいであろう。タスクＡ110は、対応するセットが条件ｃ）を満たすかどうかを判断するように構成され、方法Ｍ110を実施して、データ構造をトラバース（traverse）し、タスクＡ110のこのようなインスタンスを各セットに対して実行し得る。
【００３０】
図４に示されているツリーのようなデータ構造をトラバースする１つのやり方では、（Ｎ−１）の入れ子ループ構造を用い得る。種々のセットの処理は、直列および／または並列に行われ得る。帰納的技術を使用し、ツリーのパスをトラバースし、各パスに対応するセットが条件ｃ）を満たすかどうかを判断し得る。
【００３１】
図５は、このような帰納的関数の一例における擬似コードのリストを示している。帰納的な場合には、関数は自分自身を呼び出して、ツリーの次に低いレベルを、最低レベルに達するまで処理する。基本的な場合には、共通のノードに直接に従属するリーフ（leaf）を訪れ（visit）、関数は、各リーフにおいて終端するパスによって表わされるセットが条件ｃ）を満たしているかどうかを判断する。
【００３２】
当業者は、このような実施形態が多くの他の手続きおよび／または関数式によって実施され得ることが分かるであろう。帰納的関数の潜在的な長所は、同じ関数がＮ個の異なる値に使用され得ることである。しかしながら、多くの実際の場合において、Ｎ個の中の限られた数の値のみを検討すれば十分であり得る。通常は、１つまたは２つの分割（partition）の使用では、許容可能な誤差を達成するのに十分ではなく、一方で６個以上の分割の使用はほとんど必要とされない。したがって、Ｎ＝{３，４，５}の場合を検討すれば、通常は十分であり、方法Ｍ110は、入れ子のループのルーチン、あるいは同様の手続きまたは関数を使用して、適切に実施され得る。
【００３３】
テーブルＬＵＴ２はＰ個未満のエントリをもつので、テーブルＬＵＴ２は、テーブルＬＵＴ１とは異なるようにインデックスを付けられる。インデックスを付ける方式は分割（partitioning）に応じる。タスクＡ110によって選択されたセットｂｉに対して、タスクＡ200は、Ｎ個のインデックスのオフセット値の対応するセット{ｖ０，．．．，ｖＮ−１}を計算する。一例において、タスクＡ200は、式ｖｉ＝ｃｉ−（ｂｉ＞＞ｉ）にしたがってインデックスのオフセット値を計算する。なお、ｃ、
【数３】
2009505584.tif 000005
【００３４】
は、ｂｉがマップされるテーブルＬＵＴ２のインデックス値である。インデックスのオフセット値の使用は、さらに詳しく別途記載される。
【００３５】
マッピング関数ｆおよびタスクＡ110によって選択された境界点ｂのセットに基づいて、タスクＡ300は、Ｎ個のセクションおよびＫ≦Ｌ個のエントリをもつルックアップ テーブルＬＵＴ２を構築する。テーブルＬＵＴ２のセクションｉにおける各エントリは、関数ｆの２ｉの値に基づく。これは、入力値と出力値との間の非線形の関係、例えば、ガンマ曲線を示す。マッピング関数ｆは、センサまたはディスプレイデバイス、あるいはこの２つの組合せに特有（specific）であるか、もしくはこのようなセンサ、デバイス、あるいは組合せのクラスに共通（generic）であり得る。関数ｆは、ベンダ（vendor）によって供給される、センサおよび／またはディスプレイデバイスの測定値から求められる、および／または希望の関係または効果にしたがって選択され得る。
【００３６】
タスクＡ300の実施Ａ310は、次ように表現され得る手続きにしたがって、ＬＵＴ２のエントリを得る。
【００３７】
ＬＵＴ２〔ｑ〕＝ｆ（ｑ），ｉ＝０
ＬＵＴ２〔ｑ〕＝ｇ{ｆ（ｒ），ｆ（ｒ＋１），．．．，ｆ（ｒ＋２ｉ−１）}，０＜ｉ＜Ｎ
なお、０≦ｑ＜Ｋは、テーブルＬＵＴ２に対するインデックスであり、ｉは、ｑのセクションのインデックスであり、ｒ＝（ｑ−ｖｉ）＜＜ｉ＝ｂｉ＋〔（ｑ−ｃｉ）＜＜ｉ〕であり、ｇは、集約関数（aggregation function）である。関数ｇ{・}は平均化関数、例えば、算術平均または他の平均、例えば、相乗平均（geometric mean）、メジアン、モード、または平均の他の統計的基準（statistical measure）であり得る。
【００３８】
タスクＡ300の実施において、マッピング関数ｆは、Ｐ個のエントリをもつルックアップ テーブルＬＵＴ１によって表わされる。テーブルＬＵＴ１は、記憶装置から検索され得るか、またはマッピング関数ｆの式にしたがって生成され得る。テーブルＬＵＴ１は、ベンダによって供給される、センサの測定値から求められる、および／または希望の関係あるいは効果にしたがって選択され得る。一例において、テーブルＬＵＴ２のセクションｉにおける各エントリは、テーブルＬＵＴ１の２ｉ個のエントリから導き出される。
【００３９】
ＬＵＴ２〔ｑ〕＝ＬＵＴ１〔ｑ〕，ｉ＝０
ＬＵＴ２〔ｑ〕＝ｇ{ＬＵＴ１〔ｒ〕，ＬＵＴ１〔ｒ＋１〕，．．．，ＬＵＴ１〔ｒ＋２ｉ−１〕}，０＜ｉ＜Ｎ
なお、上述のように、０≦ｑ＜Ｋは、テーブルＬＵＴ２に対するインデックスであり、ｉは、ｑのセクションのインデックスであり、ｒ＝（ｑ−ｖｉ）＜＜ｉ＝ｂｉ＋〔（ｑ−ｃｉ）＜＜ｉ〕であり、ｇは、集約関数である。
【００４０】
テーブルＬＵＴ２のエントリは、インデックス値と同じ幅をもつ必要はない。多くの最新（modern）のＣＣＤおよびＣＭＯＳセンサは、ピクセル当たりに８、１０、１２、またはさらに１４ビットをもつ信号を生成することができる。しかしながら、信号パスにおける他の素子は、それらが通すまたは処理することができる信号の幅に関して制限され得る。したがって、システム要件にしたがうには、ピクセル値の幅を低減することが必要であり得る。１つの業界標準は、ＹＣｒＣｂ信号の各成分がピクセル当たりに８ビットのフォーマットであることを要求している。タスクＡ300は、そのエントリが最大のテーブルインデックス値よりも少ないビットをもつテーブルＬＵＴ２を構築するように構成され得る。
【００４１】
図６は、境界点のセット{０、６４、１９２、３８４、７０４、１０２３}、ガンマ曲線γ＝１／（２．２）に基づく正規化関数ｆ、および算術平均関数
【数４】
2009505584.tif 000006
【００４２】
にしたがって、１０ビットの入力範囲（０ないし１０２３）を８ビットの出力範囲(０ないし２５５)にマップするテーブルＬＵＴ２の例を示している。この特定の例において、
【数５】
2009505584.tif 000007
【００４３】
であり、テーブルＬＵＴ２におけるエントリ数Ｋは２３６である。このような応用に適し得る境界点のセットの別の例は、｛０、４，１４４、７２８、１００８、１０２３}である。
【００４４】
図７は、タスクＡ400を含む方法Ｍ100の実施Ｍ120のフローチャートを示している。タスクＡ400は、マッピング関数ｆに関するテーブルＬＵＴ２の誤差を計算する。一例において、量子化の誤差Ｅは、入力範囲の各インデックス値に対応する絶対差（absolute difference）の和として計算され、したがって、
【数６】
2009505584.tif 000008
【００４５】
であり、ｉ（なお、０≦ｉ≦Ｎ）は、ｐが存在する(境界点ｂｉのセットによって定義される)セクションのインデックスを示す。
【００４６】
別の例において、誤差Ｅは、絶対差の加重和として計算され、
【数７】
2009505584.tif 000009
【００４７】
である。なお、ｗは、重み関数である。重み関数ｗは、誤差に対する視覚的知覚可能度（visual perceptibility）のような基準にしたがって選択され得る。例えば、入力範囲の端部のインデックス値に対応する誤差よりも、入力範囲のほぼ中心のインデックス値に対応する誤差により重く重み付けし、範囲の中央の誤差が視覚的により知覚可能であり得るようにすることが望ましいかもしれない。別の例において、重み関数ｗの値は、セクションのインデックスｉによってインデックスを付けられる。
【数８】
2009505584.tif 000010
【００４８】
タスクＡ400の実施において、マッピング関数ｆは、Ｐ個のエントリをもつルックアップ テーブルＬＵＴ１によって表わされる。このような実施では、上述の式を次に示すように変更したものにしたがって、誤差Ｅを計算することができる。
【数９】
2009505584.tif 000011
【００４９】
図８は、方法Ｍ100の実施Ｍ130のフローチャートを示している。方法Ｍ130は、方法Ｍ120の２つ以上のインスタンス（各インスタンスは入力範囲の異なる分割に対応する）と、１つ以上の基準にしたがって候補セットの中から境界点のセットを選択するタスクＡ500とを含む。方法Ｍ130の中で、方法Ｍ120の種々のインスタンスは、ループ内で並列および／または直列に行われ得る。一例において、タスクＡ500は、誤差Ｅの最小値Ｅｍｉｎをもつ境界点の候補セットを選択するように構成される。
【００５０】
方法Ｍ130の実施がＮの所与の値に対して行われ得る一方で、さらに、Ｎの２以上の値についてテーブルを検討することが望ましい。図９は、方法Ｍ130の２つ以上のインスタンスを含む方法Ｍ100の実施Ｍ140のフローチャートを示している。各インスタンスは、Ｎの異なる値に対応し、それぞれの最小誤差値Ｅｍｉｎを生成する。既に記載したように、Ｎ＝{３，４，５}の値が、ガンマ曲線の適用に実際に役立つ可能性が最も高いが、任意の値が使用され得る。
【００５１】
方法Ｍ140の中で、方法Ｍ130の種々のインスタンスは、ループ内で並列および／または直列に行われ得る。直列の実行において、方法Ｍ140は、Ｎの現在の値に対してＥｍｉｎ（Ｎ）≦Ｅｍｉｎ（Ｎ−１）であるかどうかを判断する反復制御タスクＡ600を含み得る。この関係が真であるときは、タスクＡ600は、Ｎの次の値に対して方法Ｍ130のインスタンスを開始する。そうでないときは、タスクＡ600は、誤差Ｅｍｉｎ（Ｎ−１）に関連付けられた境界点のセットを選択し、Ｎの値は、別のタスクで使用する前に必要に応じてディクリメントされる。境界点の選択されたセット、インデックスのオフセット値の対応するセット、およびテーブルＬＵＴ２は、データ記憶デバイスに記憶される、および／または別の応用あるいはデバイスに使用可能にされ得る。
【００５２】
幾つかの実施において、境界点の選択されたセットに対応する小さくされたテーブルＬＵＴ２は、誤差をさらに低減するように修正され得る。例えば、非常に多くの計算が行われる誤差低減方法が適用され得るが、これは、特定の応用において、タスクＡ400で全ての候補に使用されるのに適していない。このような方法は、マッピング関数ｆまたはテーブルＬＵＴ１に関する誤差の知覚可能度の基準（measure）に基づき得る。
【００５３】
方法Ｍ100は、境界点の選択されたセット、インデックスのオフセット値の対応するセット、およびテーブルＬＵＴ２を出力するように構成され得る。例えば、方法Ｍ100は、ディジタルカメラ、または画像センサを含む他のデバイス、例えば、セルラ電話、ＰＤＡ、あるいはポータブル マルチメディア プレーヤ／レコーダに記憶されるセットおよびテーブルを出力し得る。その代わりに、方法Ｍ100は、特定のセンサまたは応用に対する適切性（suitability）のような何かの基準(criteria)にしたがって他のものと比較される候補として、セットおよびテーブルを記憶するように構成されることもある。
【００５４】
方法Ｍ100の実施を使用し、センサのモデルまたは一組（batch）のような、デバイスまたはセンサのグループの各々に、同じ非線形マッピング関数ｆを適用するテーブルＬＵＴ２を得ることができる。その代わりに、このような方法の実施は、生産環境において、多くの異なる形式の関数ｆに使用されるように構成されることもある。例えば、このような方法は、センサの測定された特徴にしたがって、および／または望ましい効果にしたがって、各デバイスまたはセンサに固有の（unique）テーブルＬＵＴ２を得るように構成され得る。方法Ｍ100の実施は、ハードウェア、ソフトウェア、および／またはファームウェアにおいて具現され得る。
【００５５】
実施形態は、Ｐ個未満のエントリをもつルックアップ テーブルを使用して、Ｐ個の値の１つをもつインデックスのマッピングを行うシステム、方法、および装置をさらに含む。このような実施形態の特徴は、小さくされた記憶装置を必要とすること（reduced storage requirement）を含み得る。実施は、シフトおよび加算の演算を使用し、比較的に少ない計算コストで入力インデックス値に対応するテーブルエントリを識別し得る。インデックスがピクセル値である場合、実施形態は、元の画像のピクセルごとのマッピングによって、ガンマ補正された画像のような、処理された画像を生成するように構成され得る。
【００５６】
図１０は、実施形態にしたがう方法Ｍ200のフローチャートを示している。ルックアップ テーブルと、境界点ｂおよびインデックスのオフセット値ｖの関連するセットとに基づいて、方法Ｍ200は、非線形マッピング関数にしたがってピクセル値のマッピングを行う。
【００５７】
境界点ｂのセットは、Ｐ個の値の入力範囲のＮ個のセクションへの分割を示す。Ｐ個の値の範囲は、０ないしＭにわたり得る。なお、Ｍ＝２ｓ−１であり、ｓはこの範囲における最大値のビットの幅であり、したがって、ｂ０＝０およびｂＮ＝Ｍである。その代わりに、Ｐ個の値の範囲は、範囲（０ないしＭ）の全てに満たない部分に制限されることもある。
【００５８】
各入力ピクセル値に対して、タスクＢ110は、Ｐ個の値の範囲の対応するセクションを識別する。タスクＢ110は、ピクセル値ｐと境界点ｂのセットとに基づいて、対応するセクションのインデックスｉ（０≦ｉ≦（Ｎ−１））を判断するように構成され得る。境界点ｂｉが、ピクセル値ｐを含んでいるセクションの下端を示す例において、タスクＢ110は、次の式の何れかにしたがって実施され得る。
【数１０】
2009505584.tif 000012
【００５９】
少なくとも幾つかの場合において、境界値のセットは最終値の一方または両方を明らかに含む必要がないことが注目される。
【００６０】
タスクＢ120は、タスクＢ110で識別されたセクションに対応するオフセット値を検索する。オフセット値ｖｉは、セクションｉへの入力範囲の最終値からの、ルックアップ テーブルにおけるエントリ数で測定される変位（displacement）に関係する。例えば、オフセット値ｖｉは、次の式に示されているように、最終値ｂ０から境界値ｂｉまでのルックアップ テーブル内のエントリ数に関係し得る。
【数１１】
2009505584.tif 000013
【００６１】
タスクＢ120は、オフセット値ｖのセットから、セクションｉに対応する値ｖｉを検索するために実施され得る。
【００６２】
タスクＢ110において識別された対応するセクションに基づいて、タスクＢ130はピクセル値ｐを右シフトする。例えば、タスクＢ130は、式に示されているように、セクションのインデックスｉにしたがってピクセル値ｐのビット右シフト（bit-wise right-shift）を行うために実施され得る（なお、ｐ＞＞ｉ）。一般に、このような操作は、非常に少ない計算コストで行われ得る。
【００６３】
タスクＢ140は、インデックスのオフセット値ｖｉと右シフトされたピクセル値（なお、ｐ＞＞ｉ)との和として、テーブルのインデックスｋを得る。一例において、タスクＢ140は、次の式ｋ＝ｖｉ＋（ｐ＞＞ｉ）にしたがって実施される。
【００６４】
タスクＢ150は、テーブルのインデックスｋに対応するテーブルエントリを検索する。方法Ｍ200の幾つかの応用において、ルックアップ テーブルはＮ個のセクションをもち、各セクションは、インデックスｉの対応する値と順番に関連付けられる。例えば、ルックアップ テーブルは、既に記載したようにテーブルＬＵＴ２であり得る。このような応用において、テーブルは、通常、セクションｉにおける各エントリが２ｉ個の異なる入力値に関連付けられるように構成されているが、幾つかの実施において、この量は境界点のほぼ１つ以上で異なり得る。
【００６５】
方法Ｍ200は、タスクＢ150が、入力ピクセル値に対するマップされた値として、テーブルエントリＬＵＴ２〔ｋ〕を検索するように構成され得る。タスクＢ150は、(図６の例のように)エントリが最大入力ピクセル値よりも少ないビットをもつルックアップ テーブルを使用するようにさらに構成され得る。１つ以上の基準にしたがって２つ以上の選択肢（alternative）から選択されるテーブルを使用するようにタスクＢ150を構成することが望ましいかもしれない。例えば、テーブルは、ユーザインターフェースおよび／または自動的な機構（automatic mechanism）から受信した入力信号によって選択され得る。このような選択は、希望の効果の基準、強度および／または色温度のような画像センサに対する光入射の品質、および／または光電池（photocell）あるいはフォトレジスタ（photoresistor）のような別のセンサに対する光入射の品質に基づく。
【００６６】
方法Ｍ200は、画像の幾つかまたは全てにおける各ピクセルに対して行われ得る。各々が画像の異なるピクセルに対応する方法Ｍ200のインスタンスは、直列および／または並列に行われ得る。ピクセル値のセットを含むセンサ信号に方法Ｍ200を適用する前および／または後に、信号にデモザイク（demosaic-ing）、ホワイトバランス（white-balancing）、および／または黒レベル補償のような１つ以上の操作を行い、ＤＣ成分が信号から取り去られ得る。センサ信号を異なる色空間にマップすることも望ましいかもしれない。
【００６７】
図１１は、実施形態にしたがう装置100のブロック図を示している。このような装置は、方法Ｍ200の実施を行うように構成され得る。論理素子の配列110は、入力ピクセル値ｐを受信し、境界値セット記憶装置120に記憶された境界値のセットにしたがって対応するセクションのインデックスｉを判断する。インデックスｉに基づいて、配列110は、オフセット値セット記憶装置130からオフセット値を検索し、値ｐのビット右シフトを行うようにシフタ140を構成する。加算器150は、オフセット値と右シフトされたピクセル値とを加算して、和を生成する。加算器150によって生成された和に基づいて、配列110は、ルックアップ テーブル記憶装置160からピクセル値ｐに対応するマップされた値を検索し出力する。装置100は、処理されるのが望ましい画像または画像の部分における各ピクセルを直列に処理するか、または装置100の２つ以上の実施を与え(場合によっては、記憶装置120、130、および160の２つ以上を共有し)、画像のピクセルを並列に処理し得る。
【００６８】
論理素子の配列110は、マイクロプロセッサまたは他のディジタル信号処理ユニットとして実施され、スタンドアロンまたは埋め込みデバイスであり得る。さらに、トランジスタおよび／またはゲートのような論理素子のこのような配列は、特定用途向け集積回路（application-specific integrated circuit, ASIC）または特定用途向け標準品（application-specific standard product, ASSP)へ組み立てられ得るか、あるいはフィールド プログラムマブル ゲート アレイ(field programmable gate array, FPGA）または同様のデバイスへプログラムされ得る。装置100を含むデバイスまたはシステムに関連して、このような配列は、命令の他のセット、例えば、装置100の操作に直接的に関係しない動作（activity）に対する命令を実行するのにも使用され得る。本明細書で説明された配列110は、論理素子の１つ以上の配列において実行される命令の１つ以上のセットとしても実施され得る。
【００６９】
シフタ140および加算器150は、トランジスタおよび／またはゲートのような論理素子を含む回路として、および／または論理素子の配列において実行される命令として実施され得る。例えば、シフタ140および加算器150の一方または両方は、配列110内で、および／または配列110によって実行される命令として、実施され得る。
【００７０】
境界値セット記憶装置120、オフセット値セット記憶装置130、およびルックアップ テーブル記憶装置160の各々は、スタティック、ダイナミック、またはフラッシュＲＡＭのような半導体メモリか、あるいは強誘電ＲＡＭのような磁気メモリ内の記憶素子の配列として実施され得る。記憶装置120、130、および160の１つ以上は、記憶要素の同じ配列において実施され、このような記憶装置の１つ以上は、配列110と同じチップ上で実施され得る。
【００７１】
装置100の素子の１つ以上は、チップセットの異なるチップまたは同じチップ上で実施され得る。これは、装置100を含むシステムとして構成され得る。一例において、装置100の１つ以上の素子は、セルラ電話の種々のデバイスの動作を制御するように構成される移動局のモデムチップまたはチップセット内で実施される。
【００７２】
べき関数の例が本明細書に説明されているが、実施形態にしたがう方法は、さらに、他の形状をもつマッピング関数と共に使用され得る。このような方法は、べき関数以外の非線形関数、および／または、ガンマ補正あるいは変更以外の応用と共に使用されるように構成され得る。例えば、このような方法を使用して、非線形マッピング関数を適用し、コントラストを強化することができる。実施形態にしたがう方法は、処理された画像が表示以外に使用されるのを意図した応用、例えば、マシンビジョンの応用にも構成され得る。
【００７３】
入射光がなくても、ＣＣＤセンサのようなセンサは、温度依存のノイズ処理(“ダークノイズ”とも呼ばれる)のために、通常は非ゼロ信号を出力する。ＣＭＯＳセンサからの信号は、通常、ＣＣＤセンサからの信号よりも一層高いレベルのダークノイズをもつ。図１の例に見られ得るように、通常のガンマ曲線は、入力範囲の下端において急な上昇をもつ。この急な上昇は、画像の暗い領域においてノイズを高める作用をもち得る。
【００７４】
非線形マッピング関数ｆは、低い入力レベルにおけるセンサおよび／またはディスプレイのノイズを抑えるガンマ曲線を生成するように設計され得る。このような曲線は、Ｓ字の形状をもち、入力範囲の下端で緩やかな傾斜をもち得る。図１２はこのような曲線の一例を示している。その代わりに、非線形マッピング関数ｆは、入力範囲の下端において短い線形セグメントをもつガンマ曲線を生成するように設計されることもある。例えば、関数ｆは、Ｒｅｃ．７０９の伝達関数を実施するか、またはそれに近付くように設計され得る。これは、（０ないし０．０１８）の入力範囲全体で４．５の傾斜をもち(なお、入力範囲は０ないし１．０に正規化されている)、他の場所ではべき関数γ＝０．４５にしたがう。
【００７５】
非線形マッピング関数の幾つかの応用では、異なる非線形の分割にしたがってテーブルを構築するか、またはそのように構築されたテーブルを使用することが望ましいかもしれない。例えば、単調に低減しない傾斜をもつ非線形マッピング関数ｆを適用することが望ましいかもしれない。このような場合に、２ｉ個の異なる入力値がｉ番目のセクションにおける各エントリにマップされるルックアップ テーブルは、マッピング関数ｆに関して大きい誤差をもち得る。
【００７６】
実施形態にしたがう方法Ｍ10は、セクションＮの数にしたがう境界値ｂのセット、リダクションファクタ（reduction factor）ｘのセット、および希望最大数のテーブルエントリＬを選択する。方法Ｍ110は、ｘｉ＝２ｉの方法Ｍ10の特定の実施形態を表わす。
【００７７】
方法Ｍ10は、次の条件にしたがって境界値のセットを選択するタスクＡ10を含んでいる。
【００７８】
ａ）ｂｉ＜ｂｉ＋１∀ｉ，０≦ｉ≦Ｎ
ｂ）０＜ｉ＜Ｎにおいて、ｂｉは、ｘｉの倍数である。
【数１２】
2009505584.tif 000014
【００７９】
タスクＡ110は、タスクＡ10の特定の実施形態を表わす。
【００８０】
図１３は、（ｂ０，ｂＮ）＝（０，Ｍ）に対する可能な候補セットｂの領域（universe）を表わすツリーの一例を示している。このツリーのルートより下の各レベルにおけるノードは、次の式にしたがって数えることができる。
【数１３】
2009505584.tif 000015
【００８１】
方法Ｍ10は、境界値ｂの選択されたセットとリダクションファクタｘとに基づいて、インデックスのオフセット値ｖのセットを計算するタスクＡ20をさらに含む。一例において、タスクＡ20は、次の式にしたがってインデックスのオフセット値を計算する。
【数１４】
2009505584.tif 000016
【００８２】
リダクションファクタｘのセットの中の要素ｘｉが２の非負整数の累乗である実施において、タスクＡ20は、次の式にしたがってインデックスのオフセット値を計算するように構成され得る。
【数１５】
2009505584.tif 000017
【００８３】
タスクＡ200は、ｘｉ＝２ｉであるタスクＡ20の特定の実施形態を表わす。
【００８４】
マッピング関数ｆ、境界点ｂのセット、およびリダクションファクタｘのセットに基づいて、タスクＡ30は、Ｎ個のセクションおよびＫ≦Ｌ個のエントリをもつルックアップ テーブルＬＵＴ２を構築する。タスクＡ30は、既に記載したタスクＡ310またはＡ320の実施の一般化にしたがって構成され得る。この中で、関数ｒは、ｒ＝（ｑ−ｖｉ）×ｘｉとして一般化され、テーブルエントリは、次の式の１つにしたがって計算される。
【００８５】
ＬＵＴ２〔ｑ〕＝ｇ{ｆ（ｒ），ｆ（ｒ＋１），．．．，ｆ（ｒ＋ｘｉ−１}；
ＬＵＴ２〔ｑ〕＝ｇ{ＬＵＴ１〔ｒ〕，ＬＵＴ１〔ｒ＋１〕，．．．，ＬＵＴ１〔ｒ＋ｘｉ−１〕}
ここで、（ｒ＋ｘｉ−１）＞ｂｉ＋１として、関数ｇのｘｉの入力値の幾つかがセクション（ｉ＋１）内にある場合、セクションｉにおけるそれらの値のみに基づいて、適切な結果を生成するように、関数ｇを修正することが望ましい。
【００８６】
本明細書に説明されているタスクＡ400の実施の同様の一般化にしたがって、方法Ｍ10は、テーブルＬＵＴ２の誤差を計算するように構成されたタスクを含み得る。方法Ｍ10は、タスクＡ500およびＡ600の実施も含み得る。
【００８７】
実施形態にしたがう方法Ｍ20は、非線形マッピング関数にしたがってピクセル値のマッピングを行う。方法Ｍ20は、方法Ｍ200の一般化として実施され、この中で、テーブルのインデックスｋは、次のような式、
【数１６】
2009505584.tif 000018
【００８８】
またはｋ＝ｖｉ＋（ｐ＞＞ｘｉ）にしたがって適宜計算される。
【００８９】
１つの応用において、方法Ｍ20の実施は、図１４に示されているディスプレイデバイスのためのガンマ曲線にしたがって、画像信号のガンマ補正を行うのに使用される。この例では、ｘｉ＝２Ｎ−１およびγ＝２．４である。
【００９０】
実施形態は、ハードウェア、ソフトウェア、および／またはファームウェアにおける実施に適した非線形に分割されたルックアップ テーブルを得る方法を含む。このような方法は、画像品質を知覚可能なほど劣化することなく、ルックアップ テーブルのサイズを相当に小さくするのに使用され得る。１つの応用において、１０２４個の値のルックアップ テーブルは、２５６個の値のルックアップ テーブルに小さくされ、小さくされたテーブルは、屋内および屋外の両者の状況で非常によく働くことが分かった。ダイナミックレンジの全体にわたって、知覚可能な差は、元のテーブルを使用して生成された画像と、小さくされたテーブルを使用して生成された画像との間で検出されなかった。テーブルサイズを小さくすることにおける潜在的な利点は、小さくされた記憶装置を必要とすることと、より高速のローディングとを含む。実施形態は、値の入力範囲を非線形に分割し、隣接するマップされた値間の変化率にしたがって、局部的なマッピングの解像度を割り当てることをさらに含む。
【００９１】
別の実施形態は、ハードウェア、ソフトウェア、および／またはファームウェアにおいて実施され得る非線形のマッピング関数を適用する方法を含む。このような実施は、メモリ効率および／または計算効率がよい。一般に、テーブル ルックアップ動作が迅速に行われ、実施形態にしたがう方法を使用して、ランタイムにおいてピクセルごとのマッピングを行うことができる。
【００９２】
方法Ｍ200の別の実施形態では、セクションのインデックスｉを使用することによって、マップされた値を得て、テーブルＬＵＴ２から検索されたテーブルエントリを修正する。一例において、補正値はテーブルエントリに加えられる。なお、補正値は、ｐ〔ｉ：０〕(ピクセル値ｐの右端のｉビット)と、セクションのインデックスｉに対応する傾斜値ｍｉとの積である。別の例において、マップされた値は、次の式にしたがって、テーブルエントリｋと次のテーブルエントリ（ｋ＋1）との間の線形補間によって得られる。
【数１７】
2009505584.tif 000019
【００９３】
この中で、乗算および除算は、ビットに関するシフトを使用して、少ない計算コストで行われ得る。マップされた値のこのような修正を使用して、誤差をさらに低減することができ、このような例の一般化は、方法Ｍ20の実施にも適用され得る。
【００９４】
上述の実施形態のこれまでの提示は、当業者が本発明を作成または使用するのを可能にするために与えられている。これらの実施形態に対する種々の変更が可能であり、本明細書に提示された一般的な原理は、他の実施形態にも適用され得る。例えば、実施形態は、ビデオ信号のような一連の画像における画像の一部または全てに非線形のマッピングを適用することを含み得る。
【００９５】
実施形態は、ハードワイヤード回路として、特定用途向け集積回路に組み立てられる回路構成として、不揮発性記憶装置にロードされるファームウェアプログラムとして、あるいは機械読み出しコードのようなデータ記憶媒体からまたはそこへロードされるソフトウェアプログラムとして構成され得る。このようなコードは、マイクロプロセッサまたは他のディジタル信号処理ユニットのような論理素子の配列によって実行可能な命令である。実施形態は、本明細書に開示されている方法を記述している機械実行可能命令の１つ以上のセット（例えば、系列（sequence））を含むコンピュータプログラム、およびその中に記憶されている命令のこのようなセットをもつデータ記憶媒体（例えば、ＲＯＭまたはＲＡＭのような半導体または磁気メモリ、磁気媒体、または光媒体）をさらに含む。したがって、本発明は、上述で示された実施形態に限定されることを意図されておらず、むしろ本明細書に任意のやり方で開示されている原理および斬新な特徴に矛盾しない最も広い範囲にしたがう。
【図面の簡単な説明】
【００９６】
【図１】ガンマ曲線のグラフ。
【図２Ａ】実施形態にしたがう方法Ｍ100のフローチャート。
【図２Ｂ】方法Ｍ100の実施Ｍ110のフローチャート。
【図３】ルックアップ テーブルＬＵＴ１からのルックアップ テーブルＬＵＴ２の導出の図。
【図４】ツリーのパスとして編成された境界点のセットの例を示す図。
【図５】図４のようなツリーをトラバースするように構成された帰納的関数の擬似コードの例を示す図。
【図６】実施形態にしたがってルックアップ テーブルに記憶される非線形マッピングの例を示す図。
【図７】方法Ｍ100の実施Ｍ120のフローチャート。
【図８】方法Ｍ100の実施Ｍ130のフローチャート。
【図９】方法Ｍ100の実施Ｍ140のフローチャート。
【図１０】本発明の実施形態にしたがう方法Ｍ200のフローチャート。
【図１１】実施形態にしたがう装置100のブロック図。
【図１２】Ｓ字形ガンマ曲線の例を示す図。
【図１３】ツリーのパスとして編成された境界点のセットの例を示す図。
【図１４】ガンマ曲線のグラフ。
【図１】
2009505584.tif 000020
【図２Ａ】
2009505584.tif 000021
【図２Ｂ】
2009505584.tif 000022
【図３】
2009505584.tif 000023
【図４】
2009505584.tif 000024
【図５】
2009505584.tif 000025
【図６】
2009505584.tif 000026
【図７】
2009505584.tif 000027
【図８】
2009505584.tif 000028
【図９】
2009505584.tif 000029
【図１０】
2009505584.tif 000030
【図１１】
2009505584.tif 000031
【図１２】
2009505584.tif 000032
【図１３】
2009505584.tif 000033
【図１４】
2009505584.tif 000034
【国際調査報告】
2009505584.tif 000035
2009505584.tif 000036
2009505584.tif 000037