(57)【要約】【課題】画素のＵおよびＶ値の代わりに、画素の色相、彩度、および輝度値に直接に働く方法、システム、および装置を提供する。【解決手段】色空間を均一な領域に分割する代わりに、複数のユーザ定義された領域に分割される。画素の検出は、その色相、彩度、および輝度値に基づいており、よって値群の単一のセットは、全体の色相についての補正を定義できる。【選択図】図４
2006325201.tif 000002
【特許請求の範囲】
【請求項１】
画素を処理する方法であって、
前記画素の色空間をデカルト座標から極座標へ変換すること、
前記画素が領域パラメータのセットによって記述される３次元領域内に存在するかを決定すること、
前記画素の前記３次元領域内での位置に基づいて補正ファクタを適用すること、および
前記画素の極座標をデカルト座標へ変換すること
を含む方法。
【請求項２】
請求項１に記載の方法であって、前記色空間は、色相、彩度、および輝度（ＹＵＶ）色空間である方法。
【請求項３】
請求項２に記載の方法であって、前記３次元領域は、
２次元Ｕ、Ｖ平面、および
第３次元におけるＹ軸であって、前記２次元Ｕ、Ｖ平面は、前記色補正領域のエッジからの特定された距離であるフェード領域を含む色補正領域を含み、前記特定された距離は、前記Ｕ、Ｖ、およびＹ方向において計算される方法。
【請求項４】
請求項３に記載の方法であって、
前記画素位置が、前記フェードエリア内にあるとき、前記色相、彩度および輝度方向において計算された距離に基づいてフェードファクタを決定すること
をさらに含む方法。
【請求項５】
請求項３に記載の方法であって、
前記画素位置が、前記色補正領域内にあるとき、色補正ファクタを前記画素の位置に基づいて計算すること
をさらに含む方法。
【請求項６】
請求項５に記載の方法であって、
前記色相、彩度および輝度方向におけるゲインおよびオフセットパラメータを適用することによって、前記画素に適用する補正量を決定すること
をさらに含む方法。
【請求項７】
請求項６に記載の方法であって、
前記画素の色相および彩度の極座標をＵＶのデカルト座標に変換する一方で、前記画素の変更された輝度を不変しておくこと
をさらに含む方法。
【請求項８】
請求項７に記載の方法であって、
前記フェードファクタによって前記補正量を低減すること、および
前記低減された補正量を前記画素に適用すること
をさらに含む方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、色の局所制御に関する。
【背景技術】
【０００２】
３次元空間においてさまざまな色を、原色のセットに基づいて表現しようとする多くの色モデルが開発されてきた。その空間におけるそれぞれの点は、特定の色相（hue）を表す。いくつかの色モデルはまた明度（brightness）および彩度（saturation）を含む。ひとつのそのようなモデルは、ＲＧＢ（赤、緑、青）色モデルと呼ばれる。従来技術のＲＧＢ色モデルのよくある表現が図１に示される。ＲＧＢ色モデルは、デカルト座標（Ｒ，Ｇ，Ｂ）を持つ立方体１００に基づいて３次元空間にマッピングされるので、立方体１００のそれぞれの次元は、一つの原色を表す。同様に、３座標によって表現される立方体１００内のそれぞれの点は、特定の色相を表現し、ここで座標（ｒ，ｇ，ｂ）は、与えられた色に対してのそれぞれの原色の寄与を示す。簡単のために、全ての色の値は、立方体１００が単位立方体であり、Ｒ，Ｇ，Ｂの全ての値が［０，１］の範囲にあるよう正規化されていると仮定される。
【０００３】
示されるように、第１座標（ｒ）は、色相に存在するレッドの量を表し、第２座標（ｇ）は、グリーンを表し、第３座標（ｂ）は、ブルーの量を指す。ある点が立方体上またはその内部にあるためには、それぞれの座標は、０および１のあいだの値を持たなければならないので、純粋のレッドは座標（１，０，０）を有し、純粋のグリーンは（０，１，０）に位置し、純粋のブルーは（０，０，１）にある。このようにして、イエローの色は位置（１，１，０）にあり、オレンジはレッドおよびイエローの間にあるので、この立方体上のその位置は（１，１／２，０）である。ブラック（０，０，０）およびホワイト（１，１，１）の色の間の破線で示された対角線Ｄは、さまざまなグレーの色合いを与える。
【０００４】
８ビットカラー（トータルで２４ビットのＲＧＢカラーについて）を表すことができるディジタルシステムにおいて、ＲＧＢモデルは、立方体１００内およびその上にある２５６3の点、つまり１６００万以上の点を表す能力を有する。しかし、ＲＧＢ色空間を用いてディジタルイメージを表現するとき、それぞれの画素は、レッド、グリーン、およびブルーの画像平面のうちの一つを表現する、それに関連付けられた３色の要素を有する。したがって、例えば、タングステンフィラメントに基づく照明による過剰な黄色を除去することによって、ＲＧＢ色空間において表現されたイメージにおける色を管理するためには、ＲＧＢ色空間における全ての３つの色要素が修正されなければならないが、これは３つの画像平面のそれぞれが相互に関連しているからである。したがって、例えば過剰な黄色を除去するときには、ディジタルイメージ中に表現される全ての原色間の関係に影響を及ぼすことを防ぐのは難しい。その結果、肌色のようなその画像中の重要な色の特性は、ＲＧＢモニタ上で見られるとき、典型的には自然に見えない。
【０００５】
ＲＧＢ色空間がディジタル画像を向上させるのには最良ではないかもしれず、色相ベースの色空間のような代替の色空間がこの技術的問題に対処するにはより適しているかもしれないことがそれから判る。したがって、例えば色補正によってディジタル画像を向上させるとき典型的には、そのディジタル画像は、ＲＧＢ色空間から、人間が色を知覚するやり方をよりよく表現する異なる色空間に変換される。そのような色空間は、色相に基づくものを含むが、これは、色相は純粋な色（純粋のイエロー、オレンジ、またはレッド）を記述する色属性であるからである。ＲＧＢ画像を、色相ベースの色空間の一つに変換することによって、ディジタル画像の色のアスペクト（color aspects）は、明るさ（lightness）および彩度（saturation）のようなファクタから分離される。
【０００６】
一つのそのような色モデルは、ＹＵＶ色空間と呼ばれる。ＹＵＶ色空間は、一つの輝度（luminance）（Ｙ）および２つの色差（chrominance）（ＵＶ）成分に基づいて色空間を定義し、ここでＹは輝度要素（明度）を表し、ＵおよびＶは色差（色）要素であり、これらはオリジナルのＲＧＢソースから作られる。Ｒ，ＧおよびＢの重み付けされた値群が互いに加えられて、その点の全体的な明度、つまり輝度を表す単一のＹ信号を作る。Ｕ信号は、オリジナルのＲＧＢのブルー信号からＹを引き、それからスケーリングすることによってそれから作られ、Ｖは、レッドからＹを引き、それから異なるファクタによってスケーリングすることによって作られる。これは、アナログ回路で容易に実現されえる。
【０００７】
図２は、３次元ＹＵＶ色空間をＵＶ平面２００へ投射した表現を示す。ＵＶ空間において、色知覚は、２つの値の関数である。色相は、知覚された色であり、正のＵ軸からの角度として測られる。彩度は、画素の鮮やかさであり、ＵＶ原点からの極ベクトルの大きさであり、これはＵ＝Ｖ＝０において彩度がゼロの点（グレイの点）として定義され、ここでＵおよびＶは＋／−１１２．５の範囲である。ＵＶ平面２００上で、色相は、＋Ｕのライン（０度における）からの角距離θ（シータ）によって表現される。彩度は、原点（００）からの距離の大きさＲ（ロー）によって表現され、一方、輝度はＵＶ平面に垂直な距離の大きさＹによって表現される。従来の色管理システムは、２つのレベルの粗さでＵＶ平面２００を複数の正方形に分割することによって、ＹＵＶ領域における色の局所的制御を提供する。これら正方形の頂点は、制御点としてそれから用いられ、それぞれの頂点でＵＶオフセットが特定される。これらのオフセット値は、制御点間で補間され、ＵＶ平面全体についてのＵＶオフセット群を導く。
【０００８】
しかし残念ながら、ＵＶ空間は正方形を用いて区切られているので、ほとんどの領域で色相または彩度に平行でない補間が起こる。制御グリッドが粗いので、これは目に見えるアーティファクトを生じる。このようなアーティファクトは、望ましくない色相をグリッド境界において含むが、それは定義可能なグリッドは、これらの影響を防ぐのに充分には細かくないからである。例えば、肌色の調整は、肌色の近傍の色相に望ましくない変化を生じる。もし意図された調整が細かいグリッドによって囲まれる点上で起こるなら、妥当な調整がなされえる。しかし調整されるべき色が粗いグリッドおよび細かいグリッドによって区切られるとき、粗いグリッドが調整されて、操作することを意図されていない色が変更されてしまうか、または、もし粗いグリッドが変更されないなら、フェーディング（fading）がなされないので、エッジ効果（edge effects）が起こりえる。さらに、入力の輝度（Ｙ）値にかかわらず、ＵＶ平面において色調整が起こり、輝度値そのものには影響を与えられない。これは場合によっては望ましくない。例えば、肌色は、中間輝度帯域において最もよく変えられえ、高／低輝度領域においては効果が少ないが、一方、レッド軸制御（red axis control）は、低輝度領域において最もよく変えられえる。
【発明の開示】
【発明が解決しようとする課題】
【０００９】
したがって望まれるのは、画素のＵおよびＶ値ではなく、色相、彩度、および輝度値に直接に働く方法である。
【課題を解決するための手段】
【００１０】
広く言えば、本発明は、画素のＵおよびＶ値の代わりに、画素の色相、彩度、および輝度値に直接に働く方法、システム、および装置を記述する。加えて、色空間を均一な領域に分割する代わりに、ある記載された実施形態は、複数のユーザ定義された領域を使用する。このようにして、検出および補正領域は、明示的に定義されるので、ユーザは、影響を与えるよう自分が選んだもの以外の色が変化されないことを確実にできる。ある記載された実施形態は、画素の調整を、その色に加えてその入力輝度値に基づいて定義する機能を付加し、画素の輝度を変更する機能を提供する。画素の検出は、その色相、彩度、および輝度値に基づいており、よって値群の単一のセットは、全体の色相についての補正を定義できる。これは、全ての彩度値にわたって単一の色相に影響を与えるために、複数の補正値が必要とされる他のシステムと比較して、プログラムを簡単化する。補正フェーディングは、他のシステムの場合のようなＵおよびＶ方向の代わりに、色相、彩度、および輝度方向において起こり、よって特定されたもの以外の色相に影響を与えることなく、滑らかなフェーディングが用いられえる。
【００１１】
方法として、本発明は、画素の色空間をデカルト座標から極座標へ変換すること、画素が領域パラメータのセットによって記述される３次元領域内に存在するかを決定すること、画素の３次元領域内での位置に基づいて補正ファクタを適用すること、および画素の極座標をデカルト座標へ変換することによって実現される。
【００１２】
本発明の他の局面および優位性は、以下の詳細な説明を添付の図面と併せれば明らかになろう。図面は、本発明の原理を例示的に示す。
【発明を実施するための最良の形態】
【００１３】
ここで本発明の具体的な実施形態が詳細に参照され、その例は添付の図面に示される。本発明は、特定の実施形態について説明されるが、本発明を記載された実施形態に限定するようには意図されない。むしろ、本発明の精神および範囲内に含まれえるものとして代替物、改変物、および等価物を含むよう意図される。
【００１４】
大きく言って、本発明は、画素のＵおよびＶ値だけの代わりに、画素の色相（hue）、彩度（saturation）、および輝度（luminance）値に直接に作用する方法、システム、および装置に関する。加えて、色空間を均一な領域に分割する代わりに、ある記載された実施形態は、複数の、ユーザによって定義された領域群を用いる。このようにして、検出および補正領域は明示的に定義され、影響を受けるべきものとして選択されたもの以外の色は変更されないことが確実になる。ある記載された実施形態は、画素の調整を、その色に加えてその入力輝度値に基づいて定義する機能を付加し、したがって画素の輝度を変更する機能を提供する。画素の検出は、その色相、彩度、および輝度値に基づくので、値群の単一のセットは、色相全体についての補正を定義しえる。このアプローチは、全ての彩度値にわたって単一の色相に影響を与えるために複数の補正値が必要だったシステムに対して大きな改良である。さらに、スムーズなフェーディング（smooth fading）は、特定されたもの以外の色相に影響を与えることなく用いられえるが、これは補正フェーディング（correction fading）は、他のシステムで提供されるＵおよびＶ方向の代わりに、色相、彩度、および輝度方向において起こるからである。
【００１５】
ここで本発明は、ビデオソースと、コンピュータのモニタ、テレビ（アナログまたはディジタルのいずれでも）などのようなディスプレイとに基づくシステムについて説明される。テレビディスプレイの場合、図３は、従来のＮＴＳＣ表示ＴＶ画像３０１を示す。ＴＶ画像３０１は、ＴＶ画像３０１の画像情報を伝える領域である有効画像３１０から形成される。有効画像領域３１０の外側には、ラインおよびフィールドブランキングに適するブランキング領域３１１がある。有効画像領域３１０は、フレーム３１２、画素３１４、および走査線３１６を用いて実際のＴＶ映像を形成する。フレーム３１２は、アナログビデオカメラ、アナログテレビのようなさまざまなソースや、コンピュータモニタ、ディジタルテレビ（ＤＴＶ）などのようなディジタルソースの任意のものから作られた静止画を表す。インターレーススキャンが用いられるシステムにおいては、それぞれのフレーム３１２は、情報のフィールドを表す。フレーム３１２はまた、用いられる走査の種類に依存して、静止画の他のカテゴリーのものを表しえる。
【００１６】
ディジタルフォーマットにおいて、それぞれの画素は、明度（brightness）、つまり輝度（luminance）要素（明るさ（luma）とも呼ばれる。「Ｙ」）および色（color）、つまり色差（chrominance）要素によって表される。人間の視覚システムは、色の空間変化については明るさの空間変化よりも敏感ではないので、明度要素、つまり明るさをあるチャネルで伝達し、明るさを除去した色情報を他の２つのチャネルで伝達するのが有利である。ディジタルシステムにおいては、２つの色チャネルのそれぞれは、明るさのチャネルよりもかなり低いデータレート（つまりデータ容量）を有しえる。グリーンは、輝度チャネルで優勢を占めるので（典型的には輝度信号の約５９％がグリーン情報を構成する）、２つの色チャネルをブルーおよびレッドに基づくようにするのが、信号対雑音比の理由で理にかなっており有利である。ディジタル領域においては、これら２つの色チャネルは、色差青Ｃｂ、および色差赤Ｃｒと呼ばれる。
【００１７】
コンポジットビデオにおいては、輝度および色差は、ＮＴＳＣ、ＰＡＬまたはＳＥＣＡＭのような符号化標準方式のうちの一つを用いて、タイミングレファレンスである「ｓｙｎｃ」情報と共に組み合わされる。人間の目は、色についての解像力よりも、輝度についてずっと高い解像力を有するので、符号化された信号の色のシャープネス（帯域幅）は、輝度のそれよりもずっと低く抑えられる。
【００１８】
ここで図４を参照して、本発明のある実施形態によるリアルタイム処理システム４００のブロック図が示される。リアルタイム処理システム４００は、処理のための任意の数のビデオ入力信号を提供するよう構成された画像ソース４０２を含む。これらビデオ信号群は、任意の数でありえ、ＢＮＣコンポジット、シリアルディジタル、パラレルディジタル、ＲＧＢ、または家電ディジタルビデオ（consumer digital video）のようなよく知られたフォーマット群の任意のタイプを有しえる。この信号は、例えば、アナログテレビ、静止画、アナログＶＣＲ、ＤＶＤプレーヤー、ビデオカメラ、レーザーディスクプレーヤー、ＴＶチューナ、セットトップボックス（衛星ＤＳＳまたはケーブル信号付き）などのアナログ画像ソース４０４を画像ソース４０２が含むなら、アナログでありえる。また画像ソース４０２は、例えば、ディジタルテレビ（ＤＴＶ）、ディジタル静止画カメラなどのようなディジタル画像ソース４０６を含みえる。このディジタルビデオ信号は、任意の個数でありえ、SMPTE 274M-1995（1920×1080の解像度、プログレッシブまたはインターレーススキャン）、SMPTE 296M-1997（1280×720の解像度、プログレッシブスキャン）と共に、標準の480プログレッシブスキャンビデオのようなよく知られたディジタルフォーマットの任意のタイプでありえる。
【００１９】
画像ソース４０２がアナログ画像信号を提供する場合、アナログ・ディジタルコンバータ（Ａ／Ｄ）４０８がアナログ画像ソース４０４に接続される。説明される実施形態においては、このＡ／Ｄコンバータ４０８は、アナログ電圧または電流信号を、ディジタル処理に適した適当なディジタル画像データワードをこのプロセスにおいて形成する、ディジタルでエンコードされた数値群（信号）の離散列に変換する。
【００２０】
したがって、図５は、ＲＧＢベースの２４ビット（つまりトゥルーカラー）システムに適する、本発明による代表的な画素データワード５００を示す。しかし、画素ワード５００を説明するためにＲＧＢベースのシステムが用いられるが、以下の説明は、ＹＵＶのような任意の色空間に適用可能であることに注意されたい。したがって、ＲＧＢ色空間においては、画素データワード５００は、３つのサブピクセルであるレッド（Ｒ）サブピクセル５０２、グリーン（Ｇ）サブピクセル５０４、およびブルー（Ｂ）サブピクセル５０６から形成され、それぞれのサブピクセルがｎビット長であるので、トータルでは３ｎビットになる。このようにして、それぞれのサブピクセルは、２n（例えば２５６）個の電圧レベル（ヒストグラムとして表現されるときはビン（bins）とも呼ばれることがある）を生成できる。例えば、２４ビットカラーシステムにおいては、ｎ＝８であるので、Ｂサブピクセル５０６は、関連するブルーマスクを透過する光の量を変調する液晶の透過性を変化させることによって、ディスプレイ２５６レベルのブルーの色を表現するのに用いられえ、一方、Ｇサブピクセル５０４は、色の２５６レベルを表現するのに用いられえる。残りの説明のために、用いられる色空間および色深度（すなわち画素当たりのビット数）の両方を表記する略記法が用いられる。例えば、画素データワード５００は、ＲＧＢ８８８と記され、これは色空間がＲＧＢであり、それぞれのサブピクセルが（この場合は）８ビット長であることを意味する。
【００２１】
したがって、Ａ／Ｄコンバータ４０８は、図６に示される走査線データワード６００（画素データワード５００で形成される）を生成するために４：ｘ：ｘサンプリングと呼ばれるものを用いる。４：ｘ：ｘサンプリングは、色差信号ＣｒおよびＣｂが輝度Ｙ周波数より低い（sub-multiple）周波数でサンプリングされる色差コンポーネントビデオ信号（ｙ，Ｃｒ，Ｃｂ）に適用されるサンプリング手法であることに注意されたい。もし４：２：２サンプリングが適用されるなら、２つの色差信号ＣｒおよびＣｂは、偶数の輝度Ｙサンプル群と同じ瞬間にサンプリングされる。４：２：２サンプリングの使用は、輝度および色ディジタル情報が同期していることを確実にし、それにより色／輝度遅延を最小化し、また非常によい画質を提供し、サンプルサイズを１／３に減らすので、プロフェッショナルビデオについては「標準」である。
【００２２】
図４に戻り、ディジタル画像ソース４０６およびＡ／Ｄコンバータ４０８に接続されたインボードビデオ信号セレクタ４１０は、２つの画像ソース（アナログ画像ソース４０４またはディジタル画像ソース４０６）のうちどちらがそれに接続されたディジタル画像処理エンジン４１２によって改善されるべきディジタル画像を提供するかを選択するよう構成される。ビデオ信号セレクタ４１０から受け取られたディジタル画像を適切に処理した後、ディジタル画像処理エンジン４１２は、受け取られたディジタル画像の改善されたバージョンをアウトボードビデオ信号セレクタ４１４に出力する。インボードビデオセレクタ４１０と同様に、アウトボードビデオセレクタ４１４は、改善されたディジタル信号を画像表示ユニット４１６に送るよう構成される。画像表示ユニット４１６は、標準アナログＴＶ、ディジタルＴＶ、コンピュータモニタなどを含みえる。画像表示ユニット４１６が標準アナログＴＶのようなアナログ表示装置４１８を含む場合、アウトボードビデオ信号セレクタ４１４に接続されたディジタル・アナログ（Ｄ／Ａ）コンバータ４２０は、画質改善されたディジタル信号を適切なアナログフォーマットに変換する。
【００２３】
図７は、本発明による必要な色相ベースの検出および処理を提供するためのプロセッサ７００として構成されるディジタル信号処理エンジン４１２の具体的な実施形態を示す。したがって、プロセッサ７００は、入力画素フォーマット検出および変換ユニット７０２、領域検出器およびセレクタブロック７０４、領域距離計算ブロック７０６、色相補正ブロック、彩度補正、およびフェード補正を提供する補正ブロック７０８、オーバーラップイネーブルブロック７１０、およびＵ／Ｖオフセット適用および最終出力ブロック７１２を含む。
【００２４】
メモリリソースおよび帯域幅を節約するために、入力画素フォーマット検出および変換器ユニット７０２は、入力画素フォーマットを検出し、もしＹＵＶ色空間ではないと決定されるなら、入力画素データワードフォーマットは、図８に示される変換に基づく任意のよく知られた変換プロトコルに基づいてＹＵＶ色空間に変換される。いったんＹＵＶ色空間に変換されると、それから入力画素データワードは、ＹＵＶ４４４フォーマットに設定され、それによってそれぞれのサブピクセルデータワード長は４ビットに設定される（または対象となる特定の応用例について任意の他のフォーマットが適切であるとみなされる）。
【００２５】
単一のフォーマットを提供することに加えて、説明される実施形態は、図９および表１を示す図１０に示されるように、複数領域の定義およびそれらに関連付けられた補正パラメータを利用する。領域９０２は、以下のパラメータによって定義される。すなわち、{θcenter,θaperture,R1,R2,Y1,およびY2}は、補正領域９０４を定義し、一方、{θfade,Rfade,およびYfade｝は、色相、彩度、輝度（ＹＵＶ）色空間においてフェード領域（fade region）９０６を定義し、ここでθは色の色相を指し、Ｒは色の彩度を指す。それぞれの領域内で、画素は、補正パラメータ、すなわちHue_offset,Hue_gain,Sat_offset,Sat_gain,Lum_offset,Lum_gain,U_offset,およびV_offsetに従って、加算的（オフセット）または乗算的（ゲイン）なやり方で補正される。補正領域内の全ての画素にはフルの補正が適用され、一方、フェード領域においては、補正領域およびフェード領域のエッジにおけるフルから、補正領域から最も遠いフェード領域のエッジにおけるゼロまで、補正の量が減少する。
【００２６】
説明される実施形態において、それぞれの領域は、全てのパラメータθcenter, θaperture,R1,R2,Y1,およびY2,Hue_offset,Hue_gain,Sat_offset,Sat_gain,Lum_offset,Lum_gain,U_offset,およびV_offset（値群の例示的なセットについては図１０の表１を参照）についてそれ自身のユニークなユーザ設定可能な値を有する。ある状況においては、特定の色は、複数の領域において存在しえるが、この理由で補間的プロセスが用いられて、それぞれの補正のどの程度が最終的な結果を与えるために適用されるかが決定される。ある実現例は、最も高い優先度の領域によって最初にその画素を補正し、それからより低い優先度領域のためにこの補正された値を第２補正ブロックへ渡す優先／順次補正（priority/series correction）のアプローチを使用する。説明される実施形態は、２つの領域が重複することを許すが、他の実現例では２領域より多いオーバラップを用いることも想定される。
【００２７】
領域検出
【００２８】
図７に戻り、説明される実施形態において、任意の与えられた画素がその中に存在するある特定の領域（またはオーバラップする場合には領域群）が検出ブロック７０４によって検出され（図１１に示されるフロー図で示されるプロセス１１００を用いて）、それにより適切な補正パラメータを適用する。説明される実施形態において、この領域検出プロセスは、任意の画素は、最大で２つの領域群の中に存在しえる、すなわち任意の点において２つまでの領域がオーバラップしえるという仮定に基づく。具体的な実現例においては、この検出プロセスのために、１つの領域について１つの領域検出器に加えて単一の領域セレクタ７０５が用いられる。このプロセス１１００は、用いられるべき領域群の個数を取り出すことによって１１０２において始まる。ここでの場合においては、用いられるべき領域の個数は２つであるが、適切であるとみなされる任意の個数でありえる。１１０４において、それぞれの領域についての色相、彩度、および輝度パラメータが取り出され、１１０６において、それぞれの領域検出器（それぞれの領域について１つ）は、画素の色相、彩度、および輝度値を、それぞれの領域について特定された領域検出パラメータと比較する。１１０８において、領域識別子が設定され、もし１１１０において検出器が、その画素がその領域内にあることを見いだすなら、その領域のアドレスが１１１２において特定される。しかしもし１１１０において、その画素がその領域内にないなら、検出器は、１１１４においてMAX_REGIONと指定される、領域群の合計数＋１に等しい値を出力する。例えば、領域２についての領域検出器が、領域２についてパラメータθcenter,θaperture,R1,R2,Y1,Y2,θfade,Rfade,およびYfadeを用いるなら、もしその画素がこれらの値によって区切られる範囲内にあるなら、検出器は「２」を出力し、そうでなければ「MAX_REGION」を出力する。
【００２９】
１１１６および１１１８においてそれぞれ、領域セレクタ７０５は、画素の主検出領域アドレス（および領域のオーバラップを許す実現例においては副検出領域アドレスも）を決定する。主領域は、最も低いアドレスナンバーを持つ検出された領域であり、副領域は、２番目に低いナンバーを持つものである。例えば、もし画素が領域３および６の重複する領域内にあるなら、主領域は３であり副領域は６である。もし画素が定義された領域内にないなら、主および副領域の両方は、それぞれ１１２０および１１２２においてMAX_REGIONに等しくされる。
【００３０】
領域距離計算
【００３１】
フル補正（「ハード」）領域からフェード領域を経て近傍の非補正画素まで直線的フェード（linear fade）を促進するために、ハード領域のエッジからのフェード領域の画素の距離が計算されなければならない。それから補正ブロック内のあとで、例えば、もし画素がハード領域からフェード領域の外側エッジまでの１／３だけ離れているなら、特定された補正の（１―１／３）＝２／３が適用される。ある領域のハード領域内の画素は、距離０が生成されるようにし、これはハード領域全体にわたってフル強度の補正を表す。それぞれの画素チャネル（色相角、彩度強度、および輝度）は、距離計算ブロック７０６から別個に出力される関連付けられた距離計算を有する。色相θ（Ｔｈ）パスは、図１２のフロー図によって示されるプロセス１２００に従って計算される。まず１２０２において、値θｔｈが作られる。もし彩度がゼロであるなら、色相角は不定である。もし画素補正が彩度オフセットを含むなら、その彩度は、その領域の中心線に沿って実際に起こらなければならない。したがって、もし彩度Ｒ＝０なら、θｔｈは、１２０４において適切なように主および副領域についてθcentreに設定される。次に１２０６において、画素色相角θに３６０度を加算または減算することによって値θ_plus360およびθ_min360が作られる。これは、色相角の(modulo 360)の性質を説明するために必要である。例えば、もしθ_centre=0、およびθ_ap=30であるなら、その領域のハードエリアは、０＋３０＝３０度から０−３０＝−３０度までで定義される。デカルトから極へのブロックは、０から３６０までの色相角を出力するので、色相角θ＝３５９を持つ画素は、その領域内では検出されないことになる。同様にもしある領域がθ_centre=359、およびθ_ap=30として定義されるなら、その領域のハードエリアは、３５９＋３０＝３８９度から３５９−３０＝３２９度までで定義される。色相角θ＝０を持つ画素は、この領域から誤って除外されることになってしまう。この理由のために、この領域の境界は、θ、θ_plus360、およびθ_min360と比較される。色相、彩度、および輝度方向におけるフェード距離に対応するSdist_1、Sdist_2、およびSdist_3が１２０８においてブロックから出力される（符号なし８ビット整数＋７小数部ビット値または適当な形で）。説明される実施形態において、領域が存在するだけ多くの領域距離計算ブロックが存在する。例えば、図７においては、２つの領域距離計算ブロックが存在し、主および副検出領域のそれぞれについて１つずつである。
【００３２】
補正
【００３３】
主および副検出領域のそれぞれについて１つずつの補正ブロック群は、入力された画素への適切な領域ベースの補正を適用するのに必要な全ての操作を含む。それぞれのブロックは、入力として色相角、彩度値、および輝度値を取り、補正された色相角、彩度値、および輝度値を出力する。加えて、主補正ブロックは計算されたFade_factorも出力する。補正ブロック／機能は、それらが「ハード」領域（フェード領域ではなく）内に存在するか、または「ハード」領域の周りのフェード領域内に存在するかどうかに依存して画素を異なるやり方で扱う。「ハード」領域内の画素については、その色相をその領域のシータ中心（theta-center）から離れるようにするか、または近づけるようにするために、色相ゲインが適用される。彩度および輝度ゲインは、その領域内の画素について彩度および輝度を減少または増加させる。いったんそれぞれのゲインが適用されると、領域特有の色相、彩度、および輝度オフセットが加算される。
【００３４】
フェードファクタ補正
【００３５】
フェードファクタの領域的補正への適用がここで説明される。その領域のハードエリア全体にわたって、フルの領域補正値が適用される。しかし、ハードエリアの外側エッジからフェードエリアの外側エッジまでについては、補正の強度は、１×補正（フル補正）から０×補正（領域の外の補正されない画素）まで直線的に減少する。概念的には、フェードファクタは単純に、[1-(Sdist_1/fade_dist_hue)] x [1-(Sdist_2/fade_dist_sat)] x [1-(Sdist_3/fade_dist_lum)]であり、ここでsdist_xは、それぞれのチャネルについての領域距離計算ブロックの出力であり、fade_dist_xは、関係する方向におけるフェード領域の長さである。外で計算される1/ fade_dist_xの値を保持するレジスタを割り当てることによって除算器は使わないで済む。５つのレジスタのうちの１つは、単に値1/Th_fadeを含む。他の領域は、値Rsoftlower、Rsoftupper、Ysoftlower、Ysoftupperの逆数を含む。これらの値は、０および２５５のクランプが与えられてフェード距離としてそれら自身が計算される。例えば、Rsoftlower=min(R1, Rfade)、およびRsoftupper = min(255-R2, Rfade)である。
【００３６】
色相補正
【００３７】
他の補正パス群（彩度および輝度）と同様に、色相補正パスは、色相ゲインおよびオフセットを入力色相値に適用する。しかし、色相ゲイン関数の異なる操作は、色相補正パスに差をもたらす。まず、領域中心角θ_centreおよび画素色相角θの間の符号付き差分としてθ_diffが計算される。すなわち、もし彩度がゼロであるなら、領域中心角が用いられて、それから領域境界角に基づいてこの値、または値＋／−３６０度のいずれかを用いるかの判断がなされる。それからθ_diffは+/- Theta_apにクランプされる。このクランプされた値は、θ_gainによって乗算され、３ビット右にシフトされる。これは、θ_gainの符号に依存して、その画素の色相を領域の中心へと向かって、または中心から離れるように移動させる効果を有する。この値にθ_addを加算することで、その領域のハードエリア内にあるその画素に適用されるべきトータルの補正θ_totoffsetが得られる。θ_totoffsetは、Fade_factorによって乗算され、もしその画素がフェードエリア内に存在するなら補正強度を低減し、フェードされた補正量がオリジナルの色相角θに加算される。最後に、補正された出力は、補正ブロックからθ_corr として出力される前にmodulo 360の値に低減される。
【００３８】
彩度補正
【００３９】
まず、入力彩度値ＲがRgainで乗算され、右に７ビットシフトされ、X = R * Rgain/128を与える。この値がＲから減算されて、ゲインによって導入された補正の量を分離する。彩度オフセットRaddがそれから加算されて、トータル彩度補正値R_totoffsetを与える。この補正は、それからFade_factorによる乗算によってフェードされ、画素彩度Ｒに加算され、Rcorr として出力される前に補正出力ビット幅にクランプされ丸められる。輝度補正パスも彩度補正パスと同じである。
【００４０】
Ｕ／Ｖオフセット
【００４１】
ある領域についてのＵおよびＶオフセットは、ＵまたはＶ方向内のオフセットの量を与える、それぞれの領域についてレジスタに置かれたパラメータ（registered parameters）である。このオフセットは、極座標からデカルト座標への変換の後に適用される。これは、単なる色相および彩度調整だけが扱うには充分ではない色差調整（chroma adjustments）を可能にする。例えば、ブルーのシフトについては、グレーの近傍の（すなわち原点に中心を持つ低彩度の円内の）全ての画素を高彩度のブルーに向けてシフトするのが望ましい。この領域中の画素の任意の色相角が与えられると、純粋の色相調整も、純粋の彩度調整もこれを実現できない。したがって、ＵおよびＶオフセットが必要とされる。
【００４２】
オーバーラップイネーブル
【００４３】
もし画素が２つの領域のオーバラップする領域内に存在するなら、色相、彩度、および輝度補正は、まず主補正ブロックにおいて適用され、それから副補正ブロックにおいて適用される。しかし、もし画素が１つの領域内にしか存在しないなら、主補正ブロックからの補正だけしか適用されない。副補正ブロックは、画素データのできるうる限りの正確さを維持するためにバイパスされなければならない。オーバーラップイネーブルブロックは、領域セレクタから生成されたOverlap_Detected信号を用いて、主または副補正ブロックのいずれかの出力を選ぶ。このブロックは、適用すべきトータルのＵおよびＶオフセットも計算する。すなわち、両方の補正ブロックからのＵ／Ｖオフセット群の和、または主補正ブロックのＵ／Ｖオフセット群だけのいずれかである。領域のフェードエリアにおけるＵ／Ｖ補正をフェードする能力を促進させるために、Ｕ／Ｖオフセットは、補正ブロック内に送られ、Fade_factorによって乗算される。結果であるUcorrおよびVcorrが補正ブロックから出力され、補正された画素に対して後で処理され適用される。
【００４４】
Ｕ／Ｖオフセット適用および最終出力
【００４５】
画素が出力される前の最終操作は、ＵおよびＶオフセットを加算することを含む。これらのオフセットは、補正ブロック内でフェードされ、オーバーラップイネーブルブロック（０）で互いに加算されたレジスタパラメータである。これらは、出力画素のそれぞれ出力ＵおよびＶチャネルにここで加算される。補正されたＹＵＶ値は最後に０から２５５の範囲にクランプされて、Yfinal、Ufinal、およびVfinalを得る。最後のステップは、補正された最終値および元の入力値をマルチプレクスすることである。もし画素が少なくとも１つの領域にあると検出されたなら、補正されたＹＵＶ値Yfinal、Ufinal、VfinalがYout、Uout、Voutとしてブロックから出力される。そうでなければ、元の入力画素値Yin、Uin、Vinが出力される。
【００４６】
図１３は、本発明を実現するために採用されるシステム１３００を示す。コンピュータシステム１３００は、本発明が実現されえるグラフィックシステムの一例に過ぎない。システム１３００は、中央処理ユニット（ＣＰＵ）１３１０、ランダムアクセスメモリ（ＲＡＭ）１３２０、読み出し専用メモリ（ＲＯＭ）１３２５、１つ以上の周辺機器１３３０、グラフィックコントローラ１３６０、主記憶装置１３４０および１３５０、およびディジタル表示ユニット１３７０を含む。ＣＰＵ１３１０は、１つ以上の入力／出力装置１３９０にも結合される。グラフィックコントローラ１３６０は、アナログ画像データおよび対応するレファレンス信号を発生し、これらの両方をディジタル表示ユニット１３７０に提供する。アナログ画像データは、例えば、ＣＰＵ１３１０から、または外部のエンコーダ（不図示）から受け取られた画素データに基づいて生成されえる。ある実施形態において、アナログ画像データは、ＲＧＢフォーマットにおいて提供され、レファレンス信号は、この技術でよく知られるようにＶＳＹＮＣおよびＨＳＹＮＣ信号を含む。しかし、本発明は、他のフォーマットのアナログ画像、ディジタルデータ、および／またはレファレンス信号で実現されえることが理解されよう。例えば、アナログ画像データは、ビデオ信号データと、対応する時間レファレンス信号とを含みえる。
【００４７】
本発明のいくつかの実施形態だけが説明されてきたが、本発明は、本発明の精神または範囲から逸脱することなく、多くの他の特定の形態で実現されえることが理解されよう。本実施例は、例示的であって、限定的ではないと考えられるべきであり、本発明は、ここに挙げられた詳細に限定されるべきではなく、添付の特許請求の範囲の範囲内で、等価物の完全な範囲で改変されえる。
【００４８】
本発明は、好ましい実施形態について記載されてきたが、本発明の範囲内に入る改変物、組み合わせ、および等価物が存在する。本発明のプロセスおよび装置の両方を実現する多くの代替のやり方が存在することにも注意されたい。したがって、本発明は、全てのそのような改変物、組み合わせ、および等価物が本発明の精神および範囲に入るものとして含むと解釈されるべきであると意図される。
【図面の簡単な説明】
【００４９】
【図１】ＲＧＢ色空間の表現を示す図である。
【図２】ＹＵＶ色空間の表現を示す図である。
【図３】従来のＮＴＳＣ標準ＴＶ画面を示す図である。
【図４】本発明の実施形態によるリアルタイム処理システムのブロック図である。
【図５】ＲＧＢベースの２４ビット（つまりトゥルーカラー）システムに適する本発明による代表的な画素データワードを示す図である。
【図６】本発明の実施形態による走査線データワードを示す図である。
【図７】本発明による必要な色相ベースの検出および処理を提供するためのプロセッサとして構成されるディジタル信号処理エンジンの具体的な実施形態を示す図である。
【図８】デカルト座標から極座標への変換を示す図である。
【図９】本発明の実施形態による代表的領域を示す図である。
【図１０】本発明の実施形態による代表的領域の値を持つ表１を示す図である。
【図１１】本発明の実施形態による特定の画素が存在する領域を検出するプロセスを記述するフロー図である。
【図１２】本発明の実施形態による領域距離を計算するプロセスを詳細に説明するフロー図である。
【図１３】本発明を実現するために採用されるシステムを示す図である。
【図１】
2006325201.tif 000003
【図２】
2006325201.tif 000004
【図３】
2006325201.tif 000005
【図４】
2006325201.tif 000006
【図５】
2006325201.tif 000007
【図６】
2006325201.tif 000008
【図７】
2006325201.tif 000009
【図８】
2006325201.tif 000010
【図９】
2006325201.tif 000011
【図１０】
2006325201.tif 000012
【図１１】
2006325201.tif 000013
【図１２】
2006325201.tif 000014
【図１３】
2006325201.tif 000015
【外国語明細書】
1. TITLE OF THE INVENTION
DETECTION, CORRECTION FADING AND PROCESSING IN HUE, SATURATION AND LUMINANCE DIRECTIONS
2. DETAILED DESCRIPTION OF THE INVENTION
BACKGROUND 
Field of the Invention
[0001]  The invention describes local control of color.
Description of Related Art
[0002]  A number of color models have been developed that attempt to represent a gamut of colors, based on a set of primary colors, in a three-dimensional space.  Each point in that space depicts a particular hue; some color models also incorporate brightness and saturation.  One such model is referred to as the RGB (Red, Green, Blue) color model.  A common representation of the prior art RGB color model is shown in the Fig. 1.  Since the RGB color model is mapped to a three dimensional space based upon on a cube 100 with Cartesian coordinates (R,G,B), each dimension of the cube 100 represents a primary color.  Similarly, each point within the cube 100 represented by a triplet (r,g,b) represents a particular hue where the coordinates (r,g,b) show the contributions of each primary color toward the given color.  For sake of simplicity only, it is assumed that all color values are normalized so that the cube 100 is a unit cube such that all values of R,G, and B are in the range of [0,1].
[0003]  As illustrated, the first coordinate (r) represents the amount of red present in the hue; the second coordinate (g) represents green; and the third (b) coordinate refers to the amount of blue.  Since each coordinate must have a value between 0 and 1 for a point to be on or within the cube, pure red has the coordinate (1, 0, 0); pure green is located at (0, 1, 0); and pure blue is at (0, 0, 1).  In this way, the color yellow is at location (1, 1, 0), and since orange is between red and yellow, its location on this cube is (1, 1/2, 0).  It should be noted that the diagonal D, marked as a dashed line between the colors black (0, 0, 0) and white (1, 1, 1), provides the various shades of gray.
[0004]  In digital systems capable of accommodating 8-bit color (for a total of 24-bit RGB color), the RGB model has the capability of representing 2563, or more, than sixteen million colors representing the number of points within and on the cube 100. However, when using the RGB color space to represent a digital image, each pixel has associated with it three color components representing one of Red, Green, and Blue image planes.  In order, therefore, to manage color in an image represented in the RGB color space by removing, for example, excess yellow due to tungsten filament based illumination, all three color components in RGB color space are modified since each of the three image planes are cross related.  Therefore, when removing excess yellow, for example, it is difficult to avoid affecting the relationship between all primary colors represented in the digital image.  The net result being that important color properties in the image, such as flesh tones, typically do not appear natural when viewed on an RGB monitor.
[0005]  It is realized then, that the RGB color space may not be best for enhancing digital images and an alternative color space, such as a hue-based color space, may be better suited for addressing this technical problem. Therefore, typically when enhancing a digital image by, for example, color correction, the digital image is converted from the RGB color space to a different color space more representative of the way humans perceive color.  Such color spaces include those based upon hue since hue is a color attribute that describes a pure color (pure yellow, orange, or red).  By converting the RGB image to one of a hue-based color space, the color aspects of the digital image are de-coupled from such factors as lightness and saturation.
[0006]  One such color model is referred to YUV color space.  The YUV color space defines a color space in terms of one luminance (Y) and two chrominance components (UV) where Y stands for the luminance component (the brightness) and U and V are the chrominance (color) components that are created from an original RGB source. The weighted values of R, G and B are added together to produce a single Y signal, representing the overall brightness, or luminance, of that spot. The U signal is then created by subtracting the Y from the blue signal of the original RGB, and then scaling; and V by subtracting the Y from the red, and then scaling by a different factor. This can be accomplished easily with analog circuitry.
[0007]  Fig. 2 shows a projective representation of the three dimensional YUV color space into the UV plane 200.  In the UV space, color perception is a function of two values. Hue is the perceived color and is measured as an angle from the positive U axis. Saturation is the colorfulness of a pixel and is the magnitude of the polar vector from the UV origin, which is defined as the point of zero saturation (the grey point) at U=V=0, where U and V range from +/-112.5.   . On the UV plane 200, Hue is represented by the angular distance θ (Theta) from the +U line (at 0 degrees). Saturation is represented by the magnitude R (Rho) of the distance from the origin (00), whereas Luminance is represented by the magnitude Y of the distance perpendicular to the UV plane.  Conventional color management systems provide local control of color in the YUV domain by dividing the UV plane 200 into multiple squares with two levels of coarseness. The vertices of these squares are then used as control points; with each vertex a UV offset is specified. These offset values are interpolated between control points to derive UV offsets for the entire UV plane.
[0008]  Unfortunately, however, since the UV space is partitioned using squares, interpolations occur that are not parallel to hue or saturation in most areas. This causes visible artifacts since the control grids are coarse.  Such artifacts include undesired hues at the grid boundaries since the definable grids are not fine enough to prevent these effects. For example, flesh tone adjustments cause undesirable changes to hues near the flesh tone. If the intended adjustment occurs on a point surrounded by fine grids then a reasonable adjustment can be made. However when the color to be adjusted is bordered by coarse and fine grids, then either a coarse grid is adjusted, modifying colors not intended for manipulation, or edge effects can occur if the coarse grid is not modified, since no fading is done.  Furthermore, the color adjustments occur in the UV plane irrespective of luminance (Y) value of the input, and cannot affect the luminance value itself. This is not desirable in some cases: for example, flesh tone may be best modified in the middle luminance band, with reduced effects in high/low luminance ranges, while the red axis control may be best modified in the low luminance range.
[0009]  Therefore, what is desired is a method that acts directly upon hue, saturation, and luminance value of a pixel instead of its U and V value. 
SUMMARY OF THE INVENTION
[0010]  Broadly speaking, the invention describes a method, system, and apparatus that directly acts upon the hue, saturation, and luminance value of a pixel instead of its U and V value. Additionally, instead of dividing the color space into uniform areas, one described embodiment uses multiple user-defined regions.  In this way, since detection and correction region is defined explicitly, the user is assured no colors other than those he chooses to affect will be changed. Because the detection and correction region is defined explicitly, the user is assured no colors other than those he chooses to affect will be changed. One described embodiment adds the ability to define a pixel's adjustment based on its input luminance value in addition to its color and provides the ability to modify the pixel's luminance. The detection of a pixel is based on its hue, saturation, and luminance value, so a single set of values can define the correction for an entire hue. This simplifies the program compared to other systems in which multiple correction values were needed to affect a single hue across all saturation values. Correction fading occurs in the hue, saturation, and luminance directions instead of the U and V directions as with other systems such that smooth fading can be used without affecting hues other than those specified.
[0011]  As a method, the invention is performed by converting the pixel's color space from Cartesian coordinates to polar coordinates, determining whether the pixel lies within a 3-dimensional region described by a set of region parameters, applying a correction factor based upon the pixel's location in the 3-dimensional region, and converting the pixel's polar coordinates to Cartesian coordinates.
[0012]  Other aspects and advantages of the invention will become apparent from the following detailed description taken in conjunction with the accompanying drawings which illustrate, by way of example, the principles of the invention.
Description of an Embodiment
[0013]  Reference will now be made in detail to a particular embodiment of the invention an example of which is illustrated in the accompanying drawings.  While the invention will be described in conjunction with the particular embodiment, it will be understood that it is not intended to limit the invention to the described embodiment.  To the contrary, it is intended to cover alternatives, modifications, and equivalents as may be included within the spirit and scope of the invention.
[0014]  Broadly speaking, the invention describes a method, system, and apparatus that directly acts upon the hue, saturation, and luminance value of a pixel instead of its U and V value only. Additionally, instead of dividing the color space into uniform areas, one described embodiment uses multiple user-defined regions.  In this way, since detection and correction regions are defined explicitly, it is assured no colors other than those chosen to be affected will be changed.  One described embodiment adds the ability to define a pixel's adjustment based on its input luminance value in addition to its color and therefore provides the ability to modify the pixel's luminance. Since the detection of a pixel is based on its hue, saturation, and luminance value, a single set of values can define the correction for an entire hue. This approach is great improvement over systems in which multiple correction values were needed to affect a single hue across all saturation values. Furthermore, smooth fading can be used without affecting hues other than those specified since correction fading occurs in the hue, saturation, and luminance directions instead of the U and V directions provided with other systems. 
[0015]  The invention will now be described in terms of a system based upon a video source and a display such as a computer monitor, television (either analog or digital), etc.  In the case of a television display, Fig. 3 illustrates a conventional NTSC standard TV picture 301.  The TV picture 301 is formed of an active picture 310 that is the area of the TV picture 301 that carries picture information.  Outside of the active picture area 310 is a blanking region 311 suitable for line and field blanking.  The active picture area 310 uses frames 312, pixels 314 and scan lines 316 to form the actual TV image.  The frame 312 represents a still image produced from any of a variety of sources such as an analog video camera, an analog television, as well as digital sources such as a computer monitor, digital television (DTV), etc.  In systems where interlaced scan is used, each frame 312 represents a field of information.  Frame 312 may also represent other breakdowns of a still image depending upon the type of scanning being used.
[0016]  In the digital format, each pixel is represented by a brightness, or luminance component (also referred to as luma, "Y") and color, or chrominance, components.  Since the human visual system has much less acuity for spatial variation of color than for brightness, it is advantageous to convey the brightness component, or luma, in one channel, and color information that has had luma removed in the two other channels. In a digital system each of the two color channels can have considerably lower data rate (or data capacity) than the luma channel.  Since green dominates the luma channel (typically, about 59% of the luma signal comprises green information), it is sensible, and advantageous for signal-to-noise reasons, to base the two color channels on blue and red.  In the digital domain, these two color channels are referred to as chroma blue, Cb and chroma red Cr.
[0017]  In composite video, luminance and chrominance are combined along with the timing reference 'sync' information using one of the coding standards such as NTSC, PAL or SECAM.  Since the human eye has far more luminance resolving power than color resolving power, the color sharpness (bandwidth) of a coded signal is reduced to far below that of the luminance.
[0018]  Referring now to Fig. 4, a block diagram of a real-time processor system 400 in accordance with an embodiment of the invention is shown.  Real-time processor system 400 includes an image source 402 arranged to provide any number of video input signals for processing.  These video signals can have any number  and type of well-known formats, such as BNC composite, serial digital, parallel digital, RGB, or consumer digital video.  The signal can be analog provided the image source 402 includes, analog image source 404 such as for example, an analog television, still camera, analog VCR, DVD player, camcorder, laser disk player, TV tuner, settop box (with satellite DSS or cable signal) and the like.  The image source 402 can also include a digital image source 406 such as for example a digital television (DTV), digital still camera, and the like.  The digital video signal can be any number and type of well known digital formats such as, SMPTE 274M-1995 (1920 x 1080 resolution, progressive or interlaced scan), SMPTE 296M-1997 (1280 x 720 resolution, progressive scan), as well as standard 480 progressive scan video.
[0019]  In the case where the image source 402 provides an analog image signal, an analog-to-digital converter (A/D) 408 is connected to the analog image source 404.  In the described embodiment, the A/D converter 408 converts an analog voltage or current signal into a discrete series of digitally encoded numbers (signal) forming in the process an appropriate digital image data word suitable for digital processing.
[0020]  Accordingly, Fig. 5 shows a representative pixel data word 500 in accordance with the invention is shown suitable for an RGB based 24 bit (or true color) system.  It should be noted, however, that although an RGB based system is used to describe the pixel word 500 the following discussion is applicable to any color space, such as YUV.  Accordingly, in the RGB color space, the pixel data word 500 is formed of 3 sub-pixels, a Red (R) sub-pixel 502, a Green (G) sub-pixel 504, and a Blue (B) sub-pixel 506 each sub-pixel being n bits long for a total of 3n bits.  In this way, each sub-pixel is capable of generating 2n (i.e., 256) voltage levels (sometimes referred to as bins when represented as a histogram).  For example, in a 24 bit color system, n = 8 and the B sub-pixel 506 can be used to represent 256 levels of the color blue by varying the transparency of the liquid crystal which modulates the amount of light passing through the associated blue mask whereas the G sub-pixel 504 can be used to represent 256 levels of color.  For the remaining discussion, a shorthand nomenclature will be used that denotes both the color space being used and the color depth (i.e., the number of bits per pixel).  For example, the pixel data word 500 is described as RGB888 meaning that the color space is RGB and each sub-pixel (in this case) is 8 bits long.
[0021]  Accordingly, the A/D converter 408 uses what is referred to as 4:x:x sampling to generate a scan line data word 600 (formed of pixel data words 500) as shown in Fig. 6.  It should be noted that 4:x:x sampling is a sampling technique applied to the color difference component video signals (Y, Cr, Cb) where the color difference signals, Cr and Cb, are sampled at a sub-multiple of the luminance Y frequency.  If 4:2:2 sampling is applied, the two color difference signals Cr and Cb are sampled at the same instant as the even luminance Y samples.  The use of 4:2:2 sampling is the 'norm' for professional video as it ensures the luminance and the chrominance digital information is coincident thereby minimizing chroma/luma delay and also provides very good picture quality and reduces sample size by 1/3.
[0022]  Referring back to Fig. 4, an inboard video signal selector 410 connected to the digital image source 406 and the A/D converter 408 is arranged to select which of the two image sources (analog image source 404 or digital image source 406) will provide the digital image to be enhanced by a digital image processing engine 412 connected thereto.  After appropriately processing the digital image received from the video signal selector 410, the digital image processing engine 412 outputs an enhanced version of the received digital image to an outboard video signal selector 414.  As with the inboard video selector 410, the outboard video selector 414 is arranged to send the enhanced digital signal to an image display unit 416.  The image display unit 416 can include a standard analog TV, a digital TV, computer monitor, etc.  In the case where the image display unit 416 includes an analog display device 418, such as a standard analog TV, a digital-to-analog (D/A) converter 420 connected to the outboard video signal selector 414 converts the enhanced digital signal to an appropriate analog format.
[0023]  Fig. 7 shows a particular embodiment of the digital signal processing engine 412 configured as a processor 700 to provide the requisite hue based detection and processing in accordance with the invention.  According, the processor 700 includes an input pixel format detection and converter unit 702, a region detector and selector block 704, a region distance calculation block 706, a correction block 708 that provides for hue correction block, saturation correction, and fade correction, an overlap enable block 710,  and a U/V offset application and final output block 712.
[0024]  In order to preserve memory resources and bandwidth, the input pixel format detection and converter unit 702 detects the input pixel format and if determined to not be YUV color space, the input pixel data word format is converted to the YUV color space based upon any well known conversion protocols based upon the conversion shown in Fig. 8.  Once converted to the YUV color space, the input pixel data word length is then set to YUV444 format whereby each the sub-pixel data word lengths are set to 4 bits (or whatever other format is deemed appropriate for the particular application at hand).
[0025]  In addition to providing a single format, the described embodiment utilizes multiple region definitions plus their associated correction parameters as illustrated in Figs. 9 and Fig. 10 showing a Table 1. A region 902 is defined by the following parameters: {θcenter,  θaperture, R1, R2, Y1, and Y2}  define a correction region 904, while {θfade,  Rfade, and Yfade) define a fade region 906 in the hue, saturation, luminance (YUV) color space where θ refers to the hue of the color and R refers to the saturation of the color.  Within each region pixels are modified in additive (offset) or multiplicative (gain) manners according to the correction parameters: Hue_offset, Hue_gain, Sat_offset, Sat_gain, Lum_offset, Lum_gain, U_offset, and V_offset. Full correction is applied to all pixels within a correction region, while the amount of correction decreases in the fade region from full at the edge of the correction and fade regions to zero at the edge of the fade area furthest from the correction region.
[0026]  In the described embodiment, each region has its own unique user-configurable values for all parameters θcenter,  θaperture, R1, R2, Y1, and Y2,  Hue_offset, Hue_gain, Sat_offset, Sat_gain, Lum_offset, Lum_gain, U_offset, and V_offset (see Table 1 in Fig. 10 for an exemplary set of values).  In some situations a particular color may reside in multiple regions, for this reason, an interpolative process is used to determine how much of each of the correction is applied to give the final result. One implementation uses a priority/series correction approach that corrects the pixel by the highest priority region first and then passes this corrected value into a second correction block for the lower priority region. Although the described implementation allows for 2 regions of overlap, other implementations are contemplated using more than 2 regions of overlap.
Region Detection
[0027]  Referring back to Fig. 7, in the described embodiment, a particular region (or regions in the case of overlap) in which any given pixel resides is detected by the detection block 704 (using a process 1100 shown in a flowchart illustrated in Fig. 11) so as to apply the appropriate correction parameters. In the described embodiment, this region detection process is based upon the presumption that any pixel may be within a maximum of two regions; that is, up to two regions may overlap at any point.  In a particular implementation, one region detector per region, plus a single region selector 705 is used for the detection process.  The process 1100 begins at 1102 by retrieving the number of regions to be used.  In the instant case, the number of regions to be used is two but can be any number deemed appropriate.  At 1104, the hue, saturation, and luminance parameters for each region is retrieved and at 1106, each region detector (one for each region) compares a pixel's hue, saturation, and luminance values to the region detection parameters specified for each region.  At 1108, a region identifier is set and if, at 1110, the detector finds that the pixel is within its region, the region's address is identified at 1112. If, however, it has been determined at 1110, the pixel is not within the region, the detector outputs a value equal to the total number of regions +1, designated MAX_REGION at 1114. For example, the region detector for region 2 would use the parameters θcenter, θaperture, R1, R2, Y1, Y2, θfade, Rfade, and Yfade, for region 2; if the pixel is within the ranges delimited by these values, the detector outputs '2,' otherwise 'MAX_REGION.'
[0028]  At 1116 and 1118, respectively, the region selector 705 determines the primary (and secondary in an implementation that allows overlapping regions) detected region address of the pixel. The primary region is the detected region with the lowest address number, and the secondary region is that with the second-lowest number. For example, if a pixel is within the overlapping area of regions 3 and 6, the primary region is 3, and the secondary is 6. If the pixel is not within any defined region, both the primary and the secondary regions are equal to MAX_REGION at 1120 and 1122, respectively.
Region Distance Calculation
[0029]  To facilitate the linear fade from the edge of the full correction ("hard") area through the fade region to the nearby non-corrected pixels, the distance from the edge of the hard area of a pixel in the fade area must be calculated. Then, later in the correction block, if a pixel is, for example, 1/3 of the way from the hard area to the outer edge of the fade area, then (1-1/3) = 2/3 of the specified correction will be applied. A pixel within the hard area of a region will cause a distance of 0 to be generated, indicating full strength correction throughout the hard region.  Each pixel channel (hue angle, saturation magnitude, and luminance) has an associated distance calculation that is output separately from the distance calculation block 706. The hue θ (Th) path is calculated according to the process 1200 shown by the flowchart of Fig. 12.  First, at 1202, the value θth is created. If the saturation is 0, the hue angle is indeterminate. If the pixel correction includes a saturation offset, the saturation should in fact occur along the centerline of the region. Therefore, if the saturation R==0 at θth is set to θcentre for the primary or secondary region as appropriate at 1204. Next at 1206, the values θ_plus360 and θ_min360 are created by adding or subtracting 360 degrees from the pixel hue angle θ. This is necessary to account for the (modulo 360) nature of the hue angle. For example, if θ_centre=0, and θ_ap=30, the region hard area is defined from 0+30 = 30 degrees to 0-30 = -30 degrees. Since the Cartesian to polar block outputs hue angles from 0 to 360, a pixel with hue angle θ = 359 would not be detected within the region. Similarly if a region was defined as θ_centre=359, and θ_ap=30, the region hard area is defined from 359+30 = 389 degrees to 359-30 = 329 degrees. A pixel with hue angle θ = 0 would be falsely excluded from this region. It is for this reason the region boundaries are compared with θ, θ_plus360, and θ_min360.  Sdist_1, Sdist_2, and Sdist_3, corresponding to fade distances in the hue, saturation, and luminance directions, respectively, are output from the block at 1208 (as unsigned 8 bit integer + 7 fractional bit values or as appropriate).  In the described embodiment, there are as many region distance calculation blocks are there are regions.  For example, in Fig. 7, there are two region distance calculation blocks, one for each of the primary and secondary detected regions.
Correction
[0030]  The correction blocks, one for each of the primary and secondary detected regions, encapsulate all the operations necessary to apply the appropriate region-based corrections to input pixels. Each block takes as input a hue angle, saturation value, and luminance value and outputs a corrected hue angle, saturation value, and luminance value. In addition, the primary correction block also outputs the calculated Fade_factor.  The correction block/function handles pixels differently depending on whether they lie in the "hard" region (non fade region) or lie in the fade region around the "hard" region.  For a pixel inside the "hard" region, hue gain is applied to bring the hue further apart or closer to the region's theta-center. Saturation and luminance gain decreases or increases saturation and luminance for pixels in the region. Once the respective gains are applied, region specific hue, saturation, and luminance offsets are added.
Fade Factor Correction
[0031]  The application of a fade factor to the regional corrections is now described. Throughout the region's hard area the full regional correction values are applied. However, from the outer edge of the hard area to the outer edge of the fade area, the strength of correction declines linearly from 1 x correction (full strength) to 0 x correction (uncorrected pixels outside the region).
Conceptually, the fade factor is simply
[1-(Sdist_1/fade_dist_hue)] x [1-(Sdist_2/fade_dist_sat)] x [1-(Sdist_3/fade_dist_lum)],
where sdist_x is the output of the region distance calculation block for each channel, and fade_dist_x is the length of the fade region in the relevant direction. Dividers are avoided by allocating registers to hold the values for 1/ fade_dist_x, which are calculated externally. One of the five registers simply contains the value 1/Th_fade. The other regions contain the inverse of the values Rsoftlower, Rsoftupper, Ysoftlower, Ysoftupper. These values are themselves calculated as the fade distance given clamping to 0 and 255. For example, Rsoftlower = min(R1, Rfade), and Rsoftupper = min(255-R2, Rfade).
Hue Correction
[0032]  As with the other correction paths (saturation and luminance), the hue correction path applies a hue gain and offset to the input hue value. However, the different operation of the hue gain function necessitates a difference in the hue correction path.  First, θ_diff is calculated as the signed difference between the region center angle θ_centre and the pixel hue angle θ. That is, if the saturation is zero, the region centre angle is used, and then a decision to use this value, or a value +/- 360 degrees is taken based on the region border angles.  θ_diff is then clamped to +/- Theta_ap. This clamped value is multiplied by θ_gain and rightshifted three bits. This has the effect of moving the pixel's hue either towards or away from the center of the region, depending on the sign of θ_gain. Adding θ_add to this value gives the total correction θ_totoffset to be applied to the pixel within the hard area of the region. θ_totoffset is multiplied by Fade_factor to reduce the correction strength if the pixel lies within the fade area, and the faded correction amount is added to the original hue angle θ. Finally, the corrected output is reduced to a modulo 360 value before being output from the correction block as θ_corr.
Saturation Correction
[0033]  First, the input saturation value R is multiplied with Rgain and rightshifted 7 bits to give X = R * Rgain/128. This value is subtracted from R to isolate the amount of correction introduced by the gain. The saturation offset Radd is then added in to give the total saturation correction value, R_totoffset. The correction is then faded by multiplication with Fade_factor, added to the pixel saturation R, and clamped and rounded to the correct output bit width before being output as Rcorr.  The luminance correction path is identical to the saturation correction path.
U/V Offset
[0034]  The U and V offset for a region are registered parameters for each region that give the amount of offset in the U or V direction. This offset is applied after the polar-to Cartesian conversion. This allows chroma adjustments that mere hue and saturation adjustments may not be sufficient to handle. For example, for blue shift it is desirable to have all pixels near grey (i.e. in a low-saturation circle centered on the origin) to shift towards high-saturation blue. Given the arbitrary hue angles of pixels in this region, neither pure hue nor pure saturation adjustments can achieve this. Therefore, a U and V offset is needed.
Overlap Enable
[0035]  If a pixel lies within the overlapping area of two regions, then hue, saturation, and luminance corrections will be applied first in the Primary Correction Block, then in the Secondary Correction Block. If the pixel lies only within one region though, only the correction from the Primary Correction Block should be applied. The Secondary Correction Block should be bypassed to maintain the best possible precision of the pixel data.  The Overlap Enable block uses the Overlap_Detected signal generated from the Region Selector to choose the output of either the Primary or Secondary Correction Block. It also calculates the total U and V offset to apply: either the sum of the U/V offsets from both Correction Blocks, or the Primary Correction Block U/V offsets only. To facilitate the ability to fade the U/V correction in the fade area of the region, the U/V offset is passed into the correction block to be multiplied by the Fade_factor. The results, Ucorr and Vcorr, are output from the correction block to be processed and applied to the corrected pixel later. 
U/V Offset Application and Final Output
[0036]  The final operation before pixels are output from the involves adding U and V offsets. These offsets are register parameters that were faded in the Correction Blocks and added together in the Overlap Enable block (0). They are now added into the output U and V channels respectively of the output pixel. The corrected YUV values are lastly clamped to a range of 0 to 255 to obtain Yfinal, Ufinal, and Vfinal.  The last step is to mux the corrected final values and the original input values. If the pixel was detected as being in at least one region  then the corrected YUV values Yfinal, Ufinal, Vfinal, are output from the block as Yout, Uout, Vout. If not, the original input pixel value Yin, Uin, Vin is output.
[0037]  FIG. 13 illustrates a system 1300 employed to implement the invention.  Computer system 1300 is only an example of a graphics system in which the present invention can be implemented.  System 1300 includes central processing unit (CPU) 1310, random access memory (RAM) 1320, read only memory (ROM) 1325, one or more peripherals 1330, graphics controller 1360, primary storage devices 1340 and 1350, and digital display unit 1370.  CPUs 1310 are also coupled to one or more input/output devices 1390.  Graphics controller 1360 generates analog image data and a corresponding reference signal, and provides both to digital display unit 1370.  The analog image data can be generated, for example, based on pixel data received from CPU 1310 or from an external encode (not shown).  In one embodiment, the analog image data is provided in RGB format and the reference signal includes the VSYNC and HSYNC signals well known in the art.  However, it should be understood that the present invention can be implemented with analog image, digital data and/or reference signals in other formats.  For example, analog image data can include video signal data also with a corresponding time reference signal.
[0038]  Although only a few embodiments of the present invention have been described, it should be understood that the present invention may be embodied in many other specific forms without departing from the spirit or the scope of the present invention.  The present examples are to be considered as illustrative and not restrictive, and the invention is not to be limited to the details given herein, but may be modified within the scope of the appended claims along with their full scope of equivalents.
[0039]  While this invention has been described in terms of a preferred embodiment, there are alterations, permutations, and equivalents that fall within the scope of this invention.  It should also be noted that there are many alternative ways of implementing both the process and apparatus of the present invention.  It is therefore intended that the invention be interpreted as including all such alterations, permutations, and equivalents as fall within the true spirit and scope of the present invention.
3. BRIEF DESCRIPTION OF THE DRAWINGS
[0040]
Fig. 1 shows a representation of the RGB color space.
Fig. 2 shows a representation of the YUV color space.
Fig. 3 illustrates a conventional NTSC standard TV picture
Fig. 4 shows a block diagram of a real-time processor system in accordance with an embodiment of the invention is shown.
Fig. 5 shows a representative pixel data word in accordance with the invention is shown suitable for an RGB based 24 bit (or true color) system.
FIG. 6 shows a scan line data word in accordance with an embodiment of the invention.
Fig. 7 shows a particular embodiment of the digital signal processing engine configured as a processor to provide the requisite hue based detection and processing in accordance with the invention.
FIG. 8 shows a conversion from Cartesian to polar co-ordinates.
Fig. 9 shows a representative region in accordance with an embodiment of the invention.
Fig. 10 shows a Table 1 with representative region values in accordance with an embodiment of the invention.
Fig. 11 shows a flowchart describing a process for detecting a region in which a particular pixel resides in accordance with an embodiment of the invention.
Fig. 12 shows a flowchart detailing a process for calculating region distance in accordance with an embodiment of the invention.
FIG. 13 illustrates a system employed to implement the invention.
1.  A method for processing a pixel, comprising:
converting the pixel's color space from Cartesian coordinates to polar coordinates;
determining whether the pixel lies within a 3-dimensional region described by a set of region parameters;
applying a correction factor based upon the pixel's location in the 3-dimensional region; and
converting the pixel's polar coordinates to Cartesian coordinates.
2.  A method as recited in claim 1, wherein the color space is hue, saturation, and luminance (YUV) color space.
3.  A method as recited in claim 2, wherein the 3-dimensional region comprises:
a two dimensional U,V plane; and
a Y axis in a third dimension, wherein the two dimensional U,V, plane includes a color correction region that further includes a fade area that is a specified distance from an edge of the color correction region wherein the specified distance is computed in the U, V, and Y directions.
4.  A method as recited in claim 3, further comprising:
when the pixel location is in the fade area, then determining a fade factor based on the distance computed in the hue, saturation and luminance directions.
5.  A method as recited in claim 3, further comprising:
when the pixel's location is in the color correction region, then calculating a color correction factor based upon the pixel's location.
6.  A method as recited in claim 5, further comprising:
applying gain and offset parameters in the hue, saturation and luminance directions to determine a correction amount for applying to the pixel.
7.  A method as recited in claim 6, further comprising:
converting the pixel's polar hue and saturation coordinates to Cartesian UV coordinates while leaving the pixel's modified luminance unchanged.
8.  A method as recited in claim 7, further comprising:
reducing the correction amount by the fade factor; and
applying the reduced correction amount to the pixel.
1. ABSTRACT
A method, system and apparatus for color management that directly acts upon the hue, saturation, and luminance value of a pixel instead of its U and V value. Additionally, instead of dividing the color space into uniform areas, the color space is divided into multiple user-defined regions.  The detection of a pixel is based on its hue, saturation, and luminance value, so a single set of values can define the correction for an entire hue.
2. REPRESENTATIVE DRAWING
Fig. 4
2006325201.tif 000016
2006325201.tif 000017
2006325201.tif 000018
2006325201.tif 000019
2006325201.tif 000020
2006325201.tif 000021
2006325201.tif 000022
2006325201.tif 000023
2006325201.tif 000024
2006325201.tif 000025
2006325201.tif 000026
2006325201.tif 000027
2006325201.tif 000028