(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】5710507
(24)【登録日】2015年3月13日
(45)【発行日】2015年4月30日
(54)【発明の名称】色補正のための方法及びデバイス
(51)【国際特許分類】
H04N 1/46 20060101AFI20150409BHJP
H04N 1/60 20060101ALI20150409BHJP
G06T 1/00 20060101ALI20150409BHJP
【FI】
H04N1/46 Z
H04N1/40 D
G06T1/00 510
【請求項の数】10
【全頁数】15
(21)【出願番号】特願2011-553261(P2011-553261)
(86)(22)【出願日】2010年3月12日
(65)【公表番号】特表2012-520038(P2012-520038A)
(43)【公表日】2012年8月30日
(86)【国際出願番号】CN2010000303
(87)【国際公開番号】WO2010102519
(87)【国際公開日】20100916
【審査請求日】2011年10月12日
(31)【優先権主張番号】200910079836.4
(32)【優先日】2009年3月12日
(33)【優先権主張国】CN
【前置審査】
(73)【特許権者】
【識別番号】507231932
【氏名又は名称】北大方正集▲団▼有限公司
【氏名又は名称原語表記】PEKING UNIVERSITY FOUNDER GROUP CO., LTD
(73)【特許権者】
【識別番号】507232456
【氏名又は名称】北京北大方正▲電▼子有限公司
【氏名又は名称原語表記】BEIJING FOUNDER ELECTRONICS CO., LTD.
(74)【代理人】
【識別番号】100108855
【弁理士】
【氏名又は名称】蔵田 昌俊
(74)【代理人】
【識別番号】100103034
【弁理士】
【氏名又は名称】野河 信久
(74)【代理人】
【識別番号】100075672
【弁理士】
【氏名又は名称】峰 隆司
(74)【代理人】
【識別番号】100153051
【弁理士】
【氏名又は名称】河野 直樹
(74)【代理人】
【識別番号】100140176
【弁理士】
【氏名又は名称】砂川 克
(74)【代理人】
【識別番号】100124394
【弁理士】
【氏名又は名称】佐藤 立志
(74)【代理人】
【識別番号】100112807
【弁理士】
【氏名又は名称】岡田 貴志
(74)【代理人】
【識別番号】100111073
【弁理士】
【氏名又は名称】堀内 美保子
(72)【発明者】
【氏名】ワン、ジアン
(72)【発明者】
【氏名】ヤオ、レイ
【審査官】
豊田 好一
(56)【参考文献】
【文献】
特開2002−077653(JP,A)
【文献】
特開2005−173926(JP,A)
【文献】
特開2008−148264(JP,A)
【文献】
特開2001−145107(JP,A)
【文献】
特許第3176132(JP,B2)
(58)【調査した分野】(Int.Cl.,DB名)
H04N 1/46−62
G06T 1/00
H04N 1/40
(57)【特許請求の範囲】
【請求項1】
入力画像を1つ以上の画像ブロックに分割するステップと、
各画像ブロックにおいて、全ての画素の様々な色成分値を相互に比較して、各画像ブロックにおいて全ての画素の全ての色成分値がいずれも等しく、画像ブロックが複数の単一色の画素から構成されていれば、当該画像ブロックを単純なブロックと見なし、異なっていれば複雑なブロックと見なすステップと、
前記単純なブロックの1つの画素に対して、色補正の処理を行なって、次に、前記色補正の処理結果を、前記単純なブロックの他の全ての画素にコピーして、単純なブロックに対する色補正処理を完了とするステップと、
を含むことを特徴とする、色補正方法。
【請求項2】
前記複雑なブロックにおいて、前の画素の様々な色成分値と、次の画素の様々な色成分値とを比較するステップと、
前記色成分値が等しい場合は、前記前の画素に対する前記色補正の処理結果を、前記次の画素にコピーするステップと、
を更に含むことを特徴とする、請求項1に記載の色補正方法。
【請求項3】
前記入力画像の複雑なブロックの前記色成分値が、色面構成に記憶されている場合は、前記入力画像の複雑なブロックの前記色成分値を、画素構成に記憶するステップ、
を更に含むことを特徴とする、請求項1に記載の色補正方法。
【請求項4】
前記画像ブロックの幅と高さは、等しく、2の累乗の画素であることを特徴とする、請求項1に記載の色補正方法。
【請求項5】
同じ色成分値を有する隣接する単純なブロックを組み合わせて、新たな単純なブロックにして、
隣接する複雑なブロックを組み合わせて、新たな複雑なブロックにすることを特徴とする、請求項1又は4に記載の色補正方法。
【請求項6】
前記複雑なブロック中の前の画素に対する色補正の前記処理が完了した後で、前記色補正の前記処理結果と前記色成分値とを記憶するステップと、
次の画素の前記色成分値と、前記前の画素の前記記憶された前記色成分値とを比較するステップと、
前記色成分値が等しい場合は、前記色補正の前記記憶された処理結果を、前記次の画素にコピーするステップと、
を更に含むことを特徴とする、請求項1に記載の色補正方法。
【請求項7】
前記複雑なブロック中の前の行の画素に対する色補正の前記処理が完了した後で、全ての前記前の行の画素に対する前記色補正の処理結果と色成分値とを記憶するステップと、
前記前の行の中の全ての画素の様々な色成分値と、次の行の中の対応する位置における画素の様々な色成分値とを比較するステップと、
前記色成分値が等しい場合は、前記前の行の中の前記画素に対する前記色補正の前記記憶された処理結果を、前記次の行の中の前記対応する位置における前記画素にコピーするステップと、
を更に含むことを特徴とする、請求項1に記載の色補正方法。
【請求項8】
前記複雑なブロック中の前の列の画素に対する色補正の前記処理が完了した後で、全ての前記前の列の画素に対する前記色補正の処理結果と色成分値とを記憶するステップと、
前記前の列の中の全ての画素の様々な色成分値と、次の列の中の対応する位置における画素の様々な色成分値とを比較するステップと、
前記色成分値が等しい場合は、前記前の列の中の前記画素に対する前記色補正の前記記憶された処理結果を、前記次の列の中の前記対応する位置における前記画素にコピーするステップと、
を更に含むことを特徴とする、請求項1に記載の色補正方法。
【請求項9】
分割ユニットと、決定ユニットと、処理ユニットと、記憶ユニットと、を具備する、色補正デバイスであって、
前記分割ユニットは、画像を画像ブロックに分割して、前記画像ブロックのデータを前記決定ユニットと前記処理ユニットとに送信するために使用され、
前記決定ユニットは、
画像ブロック中の全ての画素の様々な色成分値が等しいかどうかを決定し、各画像ブロックにおいて全ての画素の全ての色成分値がいずれも等しければ単純なブロックと見なし、異なっていれば複雑なブロックと見なすためと、
更に、複雑なブロック中の次の画素の色成分値と、前記記憶ユニットに記憶された前の画素の色成分値とが、等しいかどうかを決定するために使用され、
前記処理ユニットは、画素に対して色補正の処理をして、前記色補正の処理結果を前記記憶ユニットに記憶するために使用され、
前記記憶ユニットは、画素に対する前記色補正の前記処理結果を記憶して、前記処理結果を前記決定ユニットに送信するために使用される、
ことを特徴とする、色補正デバイス。
【請求項10】
前記分割ユニットは、隣接する画像ブロックを組み合わせて新たな画像ブロックを形成するために更に使用されることを特徴とする、請求項9に記載の色補正デバイス。
【発明の詳細な説明】
【0001】
本発明は、コンピュータ画像の処理の技術分野、より具体的には、色補正のための方法及びデバイスに関する。
【0002】
コンピュータ画像の色補正は、異なる出力デバイス(例えば、ディスプレイスクリーンとプリンタ)間における、同じ画像に対する出力特徴の差を無くすために用いられる画像処理である。コンピュータ画像の色補正の中心となる技術は、できるだけ原稿に近い、むらのない出力(色)結果を得ることである。異なる出力デバイス間において出力特徴に差があると、異なる出力デバイスによって出力された色が、異なる色空間に属することになる。実際に、色補正の処理は、主として、画像を1つの色空間(原稿の色空間、即ち、元の色空間)から別の色空間に変換する処理である。通常、異なる色空間の特徴は、インターナショナルカラーコンソーシアム(International Color Consortium, ICC)によって指定された業界標準で記述される。これは、ICCプロファイルと呼ばれている。
【0003】
通常、出力デバイスに対する色補正の処理は、
図1に示されており、以下のステップを含んでいる。
【0004】
ステップ1 色調整
主として、元の色空間と、元の色空間を記述しているICCプロファイルとの差を償うために、このステップを提供する。更に、実際には、デバイスの色空間とデバイスの色空間を記述しているICCプロファイルとの差を償うために、又は、単に、画像に対してある特定の特別な処理を行なうために、例えば、画像全体のシアン(Cyan, C)と、マゼンタ(Magenta, M)と、イエロー(Yellow, Y)と、ブラック(Black, K)の成分のうちで、マゼンタの成分を増やすために、このステップを使用する場合も当然にある。
【0005】
ステップ2 色空間の変換
このステップは、色補正の全処理のうちの中心となるステップである。このステップでは、元の色空間の特徴とデバイスの色空間とに従って、元の色空間における画像を、デバイスの色空間のもとで同じ又は同様の視覚効果を有する画像に、画素毎に変換することが必要である。擬似コードの以下の表現を参照されたい。
【0006】
Res = ICC
Convert([in]srcICC, [in]desICC, [in]src, [out]des, [in] num)
//ICC
Convertは、色空間を変換するための関数である
//Resは、変換処理の結果、例えば、成功又は失敗を表す
//srcICCは、元の色空間を記述しているICCプロファイルを表す
//desICCは、デバイスの色空間を記述しているICCプロファイルを表す
//srcは、srcICCの色空間における画像のデータバッファを示すポインタである
//desは、出力に使用され、変換された画像のバッファを示すポインタである
//numは、変換を必要とする画素数を表す
srcは、当然に、色値でもあり得る;この場合は、変換された色値をdesによって得ることができる;
速度を上げるために、srsICCとdesICCとを、1つのファイルとして組み合わせて、2つの色空間の変換処理を進める場合がある。組み合わされたファイルを、DeviceLinkと呼ぶ。DeviceLinkを使用することによって、上記の擬似コードは、以下のようになる。
【0007】
Res = ICC
Convert([in]src
des
Link, [in]src, [out]des, [in]num);
なお、src
des
Linkは、元の色空間からデバイスの色空間へのDeviceLinkを表わす。
【0008】
ステップ3 「ブラック」/「グレー」/「ソリッドカラー」のセットの保留
CMYKの色空間のもとで、「ブラック」は、2種類の定義を有する。
【0009】
a)ブラックの成分値が100%であり、他の色の成分値が0である、即ち、k=100%、c=0、m=0、y=0である、又は、
b)ブラックの成分値が100%である、即ち、k=100%で、十分である。
【0010】
「ブラック」の保留は、元の画像のある特定の画素の色値が、ブラックの上述の定義を満たす場合は、色空間の変換後に色値がどうなるかに関わらず、その値が標準のブラックの値に戻る(c=0、m=0、y=0、k=1)ことを意味する。
【0011】
CMYKの色空間のもとで、「グレー」の定義は、kの色成分を除いて、他の色成分が等しく、ゼロである、即ち、c=m=y=0ということである。
【0012】
「グレー」の保留は、元の画像のある特定の画素の色値が、グレーの上述の定義を満たす場合は、色空間の変換後に色値がどうなるかに関わらず、その値が色空間の変換前の色値に戻ることを意味する。
【0013】
CMYKの色空間のもとで、「ソリッドカラー」の定義は、1つの色成分を除いて、他の色成分が全てゼロということである。
【0014】
「ソリッドカラー」の保留は、元の画像のある特定の画素の色値が、ソリッドカラーの上述の定義を満たす場合は、色空間の変換後に色値がどうなるかに関わらず、その値が色空間の変換前の色値に戻ることを意味する。
【0015】
色補正の処理において、このようなステップが存在するのは、2つの主な理由のためである。
【0016】
a)「ブラック」であるか、「グレー」であるか、又は「ソリッドカラー」であるかに関わらず、色空間の変換後に、色成分値がゼロでなくなり、視覚的に「劣化」をもたらす状況があり得るからである。
【0017】
b)一般に、色空間の変換関数は、このような機能を有していないからである。従って、画像が変換された後に、変換すべきでない画素の色値を修正する必要がある。
【0018】
ステップ4 インクの合計量の制御
異なる種類の紙は、異なる種類のインクの吸収力が非常に異なる。1つの位置(画素)において、様々な色成分値の和が大き過ぎる場合に、インク量が紙の吸収力を超えて、流れることになるか、又はインクを出力媒体に付けることができず、最終的に、全体的な画像の出力効果が損なわれる。
【0019】
インクの合計量の制御は、ある特定の画素の様々な色成分値の和がある特定の閾値を超えた場合に、様々な色成分値を下げるために適用される方法である。以下のような、様々な色成分値を比例的に下げる方法において、インクの合計量を制御する関数を説明する。
【0020】
//最初に、インクの合計量を計算する
sum = c + m + y + k ;
if (sum > Threshold)
{
//インクの合計量が閾値を超えると、様々な色成分値を比例的に下げる
c = c * Threshold / sum;
m = m * Threshold / sum;
y = y * Threshold / sum;
k = k * Threshold / sum;
}
様々な色成分値を比例的に下げる方法は、インクの合計量を制御する方法のうちの1つに過ぎないことに注意すべきである。
【0021】
ステップ5 線形化
一般に、出力デバイスのほとんどは、入力された色値を正確に表わすことができない。例えば、50%の純粋なシアン色の色ブロック(色値は、c=0.5、m=0、y=0、k=0である)をカラーインクジェットプリンタで印刷する場合に、シアンの実際の出力の測定値は、通常は70%以上である。この場合に、シアンの50%の出力値を達成するために、入力するシアンを調節する必要がある。
【0022】
例えば、50%の入力値の出力効果は、70%である。50%の出力効果を達成するために、入力値を33%に変える。
【0023】
ステップ6 ディザリング
1つの色を別の色に均一に推移させるエリアが、画像中にある場合がある。実際には、これは、隣接する画素間の色値をある特定の方向に小さく規則的に変えている。
【0024】
しかしながら、上述の処理ステップが原因で、色の推移の均一性が損なわれる。この場合は、色を徐々に推移させる処理中に、隣接する画素間において、色値が比較的に大きく変化して、視覚的に「劣化」をもたらす。
【0025】
悪い視覚効果を取り除くために、ディザリングを使用する。突然の変化が発生した場合に、この方法を使用して、境界を目立たなくする。
【0026】
インクの合計量を制御するときに、多くのディザリング方法がある。方法の1つとその関数とを、次に示す。
【0027】
//sizeofImageは、画像の画素数を表す
for ( int i = 0; i < sizeofImage; i++)
{
//imageは、CMYKの4つの成分を含む画像データを表す:
//各成分の範囲は、0-255である。
【0028】
//DTは、ディザリングテーブルを表し、
//テーブルの各値も、4つの成分を含み、
//各々の成分の範囲も、0-255である。
【0029】
//sizeofDTは、ディザリングテーブルのサイズを表し、
//できるだけ反復を避けるために、sizeofDTは、一般に素数である。
【0030】
if (image[i].c > 0 && image[i].c < 255)
//%は、合同の操作を表す
image[i].c += image[i].c > DT[i%sizeofDT].c;
if (image[i].m > 0 && image[i].m < 255)
image[i].m += image[i].m > DT[i%sizeofDT].m;
if (image[i].y > 0 && image[i].y <255)
image[i].y += image[i].y > DT[i%sizeofDT].y;
if (image[i].k > 0 && image[i].k < 255)
image[i].k += image[i].k > DT[i%sizeofDT].k;
}
上述の方法から、入力画像の各画素の様々な成分値をランダムに上げる又は下げることによって、突然の変化が発生した場合に境界を目立たなくする効果が得られることが分かるであろう。
【0031】
上述では、コンピュータ画像の色補正の処理における6つのステップのみを記載したが、実際には、より多くのステップがあってもよく、処理におけるステップの順序は、定められていない。
【0032】
色補正の処理における上述のステップから、色補正の通常の方法は、元の画像に対して、多数のステップと画素毎の処理とを行なう必要があり、計算量が非常に多いことが分かる。特に、入力画像が高解像度で、サイズが大きい場合に、処理速度の障害は大きくなり、高速出力デバイスに対する要求を満たすことができない。
【発明の概要】
【0033】
コンピュータ画像の色補正の処理速度が遅いために、高速出力デバイスの要求を満たすことができないという先行技術における問題を解決するために、本発明は、色補正のため方法とデバイスとを提供する。
【0034】
次の技術的解決策を提供することによって、本発明の実施形態を実施する。
【0035】
本発明の実施形態は、色補正方法であって、
入力画像を1つ以上の画像ブロックに分割するステップと、
各画像ブロックにおいて、全ての画素の様々な色成分値を相互に比較して、全ての画素について同じ色成分値を有する画像ブロックを、単純なブロックと見なし、異なる色成分値を有する画像ブロックを、複雑なブロックと見なすステップと、
前記単純なブロックの1つの画素に対して、色補正の処理を行なって、次に、前記色補正の処理結果を、前記単純なブロックの他の画素にコピーするステップと、
を含む、色補正方法を提供する。
【0036】
本発明の別の実施形態は、分割ユニットと、決定ユニットと、処理ユニットと、記憶ユニットと、を具備する、色補正デバイスであって、
前記分割ユニットは、画像を画像ブロックに分割して、前記画像ブロックのデータを前記決定ユニットと前記処理ユニットとに送信するために使用され、
前記決定ユニットは、
画像ブロック中の全ての画素の様々な色成分値が等しいかどうかを決定するためと、
更に、複雑なブロック中の次の画素の色成分値と、前記記憶ユニットに記憶された前の画素の色成分値とが、等しいかどうかを決定するために使用され、
前記処理ユニットは、画素に対して色補正の処理をして、前記色補正の処理結果を前記記憶ユニットに記憶するために使用され、
前記記憶ユニットは、画素に対する前記色補正の前記処理結果を記憶して、前記処理結果を前記決定ユニットに送信するために使用される、
色補正デバイスを提供する。
【0037】
上述の技術的解決策を用いて、特別な特徴を有するある特定の画像部分に対して単純化された処理を行なうことによって、処理速度を高めるという目標を達成することができ、現在の色補正の効果に実質的に影響を及ぼすことなく、色補正の処理速度を高めることができる。
【図面の簡単な説明】
【0038】
【
図1】先行技術における画像の色補正のフローチャートである。
【
図2】本発明の実施形態に従って、入力コンピュータ画像に対する色補正処理を示すフローチャートである。
【
図3】本発明の別の実施形態に従って、色補正デバイスの構造を示す概略図である。
【0039】
コンピュータ画像に対する色補正の処理速度を高めるために、本発明は、色補正方法を提供する。本発明の実施形態によって達成されるであろう主な原理と、個々の処理と、有利な効果とを、図面を参照して詳しく記載する。
【0040】
本発明の実施形態では、コンピュータ画像を幾つかのより小さな画像ブロックに分割して、画像ブロック中の全ての画素の様々な色成分値が等しい場合は、1つの画素のみに色補正処理をする必要がある。色補正の処理結果は、画像ブロック中の他の画素に適している。他方で、色成分値が等しくない場合は、前の画素又は前の行/列の画素の色補正の処理結果と色補正値とをキャッシュして、次の画素又は次の行/列の画素の色成分値と、前の画素又は前の行/列の画素の色成分値とが、等しい場合は、前の画素又は前の行/列の画素に対する色補正の処理結果は、次の画素又は次の行/列の画素に適している。
【0041】
1つの実施形態において、
図2に示されている入力コンピュータ画像に適用される色補正の個々の処理は、次のステップを含んでいる。
【0042】
ステップ101。入力画像を、m画素の幅とn画素の高さとを有する画像ブロックに、仮想的に分割する。より良い効果を得るために、mの値とnの値は等しくてもよく、両者は2の累乗である。このときに、複数の画素の同じ色面の値、又は1つの画素の異なる色面の値を組み合わせて、大きな比較単位にしてもよく、その結果、比較回数を効果的に減らすことができる。
【0043】
ステップ102。画像ブロック中の全ての画素の全ての色成分値が等しい、即ち、画像ブロックが、1つの色を有する画素から構成されている場合は、このような画像ブロックは、単純なブロックである。さもなければ、画像ブロックは単純なブロックではなく、これを複雑なブロックと呼ぶ。最後に、検出結果を記録する。
【0044】
色面に記憶されている画像データの例を以下に示す。単純なブロックの全体的な検出プロセスの効果を、擬似コードによって記述する。
【0045】
//画像全体を高さ方向において詳しく検討する。heightは、画像全体の高さ
意味する
//単位は画素である
for (int i = 0; i < (height+n-1)/n; i ++)
//画像全体を幅方向において詳しく検討する。widthは、画像全体の幅を
意味する
//単位は画素である
for (int j = 0; j < (width+m-1)/m; j ++)
{
//SignBlockは、現在のブロックが単純なブロックであるかどうかを表し、
デフォルトを単純なブロックに設定する
SignBlock[i][j] = TRUE;
//wは、画像ブロックの実際の幅を画素単位で表している
int w = m;
//hは、画像ブロックの実際の高さを画素単位で表している
int h = n;
//最右列における画像ブロックの幅は、m未満であってもよく、
この状況で対処する
if (width-j * m < m) w = width-j * m;
//最下行における画像ブロックの高さは、n未満であってもよく、
この状況で対処する
if (height-i * n < n) h = height-i * n;
BOOL bIsSimpleBlock = TRUE;
//pCは、入力画像の左上角の画素のシアンバージョンのデータを示し、
//pは、第i行及び第j列の画像ブロックの左上角の画素のシアン
//バージョンのデータを示す
p = pC + i * width * n + j * m;
//画像ブロック全体を詳しく検討する
for (int y = 0; y < h; y++)
for (int x = 0; x < w; x++)
//画像ブロックのシアンバージョンのデータと、画像ブロックの左上角の
画素のシアンバージョンのデータとが、等しいかどうかを決定する
if (p[0] != p[y*height+x])
{
//この画像ブロックが単純なブロックではないと決定すると、
ループから抜ける
bIsSimpleBlock = FALSE;
break;
}
//現在の画像ブロックが単純なブロックでないと決定された場合は、
次のブロックについて決定を開始する
if (bIsSimpleBlock == FALSE)
{
SignBlock[i][j] = FALSE;
continue;
}
//マゼンタバージョンについて検討を開始する
…
//イエローバージョンについて検討を開始する
…
//ブラックバージョンについて検討を開始する
…
}
画像のデータが画素に記憶されている場合は、それに応じて、上述の処理を変更する必要があり得る。SignBlockの意味は、テーブル1から分かる。テーブルにおいて、TRUEは、指定された画像ブロックが単純なブロックであることを表している。FALSEは、指定された画像ブロックが単純なブロックでないことを表している。
【表1】
【0046】
本発明をより効果的にするために、同じ色値を有する隣接する単純なブロックを組み合わせて、大きな単純なブロックにしてもよい。同様に、隣接する複雑なブロックを組み合わせて、大きな複雑なブロックにしてもよい。このように、画像全体のブロック数を減らして、処理速度を高めてもよい。例えば、テーブル1に示されている画像ブロックを組み合わせて、テーブル2の画像ブロックにしてもよい。
【表2】
【0047】
ステップ103。単純なブロックの場合は、先行技術の色補正の処理におけるステップ1−5を相当に単純化することができる。画素毎に複雑に計算する必要はない。ある特定の画素のみを計算することが必要である。全ての処理が完了した後で、計算結果を、単純なブロックの全ての画素にコピーすることができる。
【0048】
ディザリングの処理により、単純なブロックは、最早、単純なブロックでなくなるので、本発明をより効果的にするために、単純なブロックが、ディザリングの処理の影響を受けないようにしてもよい。即ち、ディザリングの処理中に、単純なブロック中の全ての画素の全ての成分値を一定に維持する。
【0049】
ステップ104。複雑なブロックの場合は、色補正の処理中に、前の画素の処理結果と色成分値とを記憶する。
【0050】
ステップ105。次の画素の様々な色成分値と、前の画素の様々な色成分値とを比較する。
【0051】
ステップ106。次の画素の様々な色成分値と、前の画素の様々な色成分値とが、等しい場合は、処理する必要はなく、前の画素に対する色補正の記憶されている処理結果を、直接にコピーする。
【0052】
色成分を比例的に低減することによって、インクの合計量を制御する処理の例を以下に示す。上述のバッファリング技術の効果を擬似コードによって記述する。なお、prevDotは、前の画素の処理前の色値を表わし、procDocは、前の画素の処理後の色値を表わし、pは、現在の画素の色値を示すポインタである。色値は、画素に記憶されているものとする。
【0053】
if (p[0] == prevDot)
//現在の画素の色値が、前の画素の処理前の色値と一致する場合は、
//処理後のバッファに入れられた結果を直接に割り当てる;
p[0] = procDot;
else
{
//現在の画素の色値を記録する
prevDot = p[0];
int sum = p[0].c + p[0].m + p[0].y + p[0].k;
if (sum > Threshold)
{
p[0].c = p[0].c * Threshold / sum;
p[0].m = p[0].m * Threshold / sum;
p[0].y = p[0].y * Threshold / sum;
p[0].k = p[0].k * Threshold / sum;
}
//現在の画素の処理後の色値を記録する
procDot = p[0];
}
上述の方法は、1つの画素に適用されるバッファであるので、これをポイントバッファと呼ぶ。画像中の隣接する画素間に強い関連性があるので、ポイントバッファの解決策は、複雑な計算を減らして、速度を上げる良い効果をもたらす。
【0054】
ポイントバッファの特別な例として、更に、ラインバッファ方法を適用してもよい。ラインバッファ方法は、色補正の処理中に、前の行/列の画素の処理結果と色成分値とを記憶することを意味する。このやり方では、前の行/列の中の画素の色成分値と同じ色成分値を有する次の行/列の中の同じ位置における画素は、処理する必要がない。前の行/列の中の画素に対する色補正の記憶されている処理結果を、次の行/列の中の同じ位置における画素に、直接にコピーする。
【0055】
色補正の処理における色空間の変換ステップの例を、以下に示す。ラインバッファ方法の効果を擬似コードによって記述する。なお、prevLineは、前の行/列の画素の処理前の色値を表わし、procLineは、前の行/列の画素の処理後の色値を表わし、pは、現在の行/列の中の第1の画素の色値を示すポインタであり、色値は、画素に記憶されているものとし、wは、現在の画像の幅である。
【0056】
int index = 0;
for (int i = 0; i < w; i ++)
{
//画素の値と、前の行/列の中の同じ位置における画素の値とが、
等しい場合は、処理後の色値を直接にコピーする
if (p[i] == prevLine[i])
p[i] = procLine[i];
else
{
//(処理前の)現在の画素の値を記録する
prevLine[i] = p[i];
//画素の値と、前の行/列の中の同じ位置における画素の値とが、
等しくない場合は、その位置をposに記録する
//現在の画素の色値を一時バッファsrcにコピーする
pos[index] = i;
src[index] = p[i];
index ++;
}
}
//ICC変換を行なう。インデックスはw以下であることに注意すべきである
ICC
Convert (srcICC,desICC,src,src,index);
//変換結果を、入力画像の列/行における同じ位置に、procLineの変換結果
として送る
for (i = 0; i < index; i ++)
{
p[pos[i]] = src[i];
}
//処理後の現在の行/列の位置を記録して、次の行/列を処理するときに、
それを使用する
procLine = p;
更に、比較プロセス中に、2つの隣接する行/列間の関連性が低い場合は、比較を止めて、現在の行/列の画素を直接に処理する。しかしながら、次の行/列を処理するときに、良い環境(prevLineとprocLine)を使用できるように、これを取っておく必要がある。3行の画像データがある場合に、第1の行と第2の行との間における関連性は低いが、第2の行と第3の行との間における関連性は高い(データ画像において、このような状況は一般的である)。以下のようなやり方で、処理を行なう。第1の行と第2の行との関連性が低いことを検出した後は、データの第2の行に対して、色補正の最適化された処理をそれ以上行なわない。このときに、prevLine(第1の行における画像データを示す)は、変わらない可能性が非常に高い。しかしながら、prevLineは、画像の第3の行を処理する前の、第2の行における画像データを示すはずである。このやり方では、第3の行における画像データを処理するときに、第2の行と第3の行との間における関連性を使用してもよい。次の概略的なコードを参照すべきである。
【0057】
CopyMemory (prevLine, p, sizeof(prevLine));
//ICC変換を行なう
ICC
Convert (srcICC, desICC, p, p, w);
procLine = p;
ポイントバッファ方法と同様に、ラインバッファ方法は、画像中の隣接する画素間の強い関連性を効果的に使用して、計算量を減らす目的を達成することができる。
【0058】
本発明をより効果的にするために、単純なブロックを検出するステップの後で、入力画像のデータが画素に記憶されていない場合は、画像を再構成して、画素に記憶する。単純なブロックの検出後に、画像を構成するのは、単純なブロックは画素に記憶する必要がないからである。言い換えると、複雑なブロックのみに対して、再構成を適用する。この方法の効果を、次の擬似コードで示す。
【0059】
//最初に、現在の画像ブロック(第i行及び第j列)が複雑なブロックである
かどうかを決定する
if (SignBlock[i][j] != TRUE)
{
//wとhは、それぞれ、現在の画像ブロックの幅と高さである
for (int x = 0; x < h; x++)
for (int y = 0; y < w; y++)
{
//pC, pM, pY, pKは、それぞれ、現在の画像ブロックの中の
様々なカラーバージョン(CMYK)の左上角の画素を示す
//widthは、画像全体の幅を表す
pNew[x][y].c = pC[x * width + y];
pNew[x][y].m = pM[x * width + y];
pNew[x][y].y = pY[x * width + y];
pNew[x][y].k = pK[x * width + y];
}
}
pNewは、処理後に画素に記憶される画像ブロックのデータを示すポインタである。
【0060】
画像を再構成することによって、色補正の処理におけるある特定のステップ、特に、色空間の変換ステップに関して、画素で構成されている画像データを処理する速度は、色面に構成されている画像データを処理する速度よりも、相当に速い。
【0061】
本発明の別の実施形態は、色補正デバイスを提供する。
図3に示されているように、デバイスは、分割ユニット201と、決定ユニット202と、処理装置203と、記憶ユニット204とを具備している。分割ユニット201は、画像を画像ブロックに分割して、画像ブロックのデータを決定ユニット202と処理ユニット203とに送信して、更に、隣接する画像ブロックを組み合わせて、新たな画像ブロックを形成するために使用される。決定ユニット202は、画像ブロック中の全ての画素の様々な色成分値が等しいかどうかを決定するために、更に、複雑なブロック中の次の画素の色成分値と、記憶ユニットに記憶されている前の画素の色成分値とが、等しいかどうかを決定するために使用される。処理ユニット203は、画素に対して色補正の処理をして、色補正の処理結果を記憶ユニット204に記憶するために使用される。記憶ユニット204は、画素に対する色補正の処理結果を記憶して、その結果を決定ユニット202に送信するために使用される。
【0062】
上述の色補正デバイスを用いて、特別な特徴を備えたある特定の画像部分に対して単純化された処理を行なうことによって、処理速度を高めるという目標を達成することができる。現在の色補正の効果に実質的に影響を及ぼすことなく、色補正の処理速度を高めることができる。
【0063】
本発明の意図と範囲とから逸脱することなく、当業者によって、様々な修正と変更とを
行なうことができるのは、明らかである。これらの修正と変更との全てが、本発明の請求
項と、本発明の請求項と同等のものとによって、請求項に係る範囲に含まれる場合は、本
発明が、これらの修正と変更との全てをカバーしていることを意味する。
以下に、本願出願時の特許請求の範囲に記載された発明を付記する。
[1]入力画像を1つ以上の画像ブロックに分割するステップと、
各画像ブロックにおいて、全ての画素の様々な色成分値を相互に比較して、全ての画素について同じ色成分値を有する画像ブロックを、単純なブロックと見なし、異なる色成分値を有する画像ブロックを、複雑なブロックと見なすステップと、
前記単純なブロックの1つの画素に対して、色補正の処理を行なって、次に、前記色補正の処理結果を、前記単純なブロックの他の画素にコピーするステップと、
を含むことを特徴とする、色補正方法。
[2]前記複雑なブロックにおいて、前の画素の様々な色成分値と、次の画素の様々な色成分値とを比較するステップと、
前記色成分値が等しい場合は、前記前の画素に対する前記色補正の処理結果を、前記次の画素にコピーするステップと、
を更に含むことを特徴とする、前記[1]に記載の色補正方法。
[3]前記入力画像の複雑なブロックの前記色成分値が、色面構成に記憶されている場合は、前記入力画像の複雑なブロックの前記色成分値を、画素構成に記憶するステップ、
を更に含むことを特徴とする、前記[1]に記載の色補正方法。
[4]前記画像ブロックの幅と高さは、等しく、2の累乗の画素であることを特徴とする、前記[1]に記載の色補正方法。
[5]同じ色成分値を有する隣接する単純なブロックを組み合わせて、新たな単純なブロックにして、
隣接する複雑なブロックを組み合わせて、新たな複雑なブロックにすることを特徴とする、前記[1]又は[4]に記載の色補正方法。
[6]前記複雑なブロック中の前の画素に対する色補正の前記処理が完了した後で、前記色補正の前記処理結果と前記色成分値とを記憶するステップと、
次の画素の前記色成分値と、前記前の画素の前記記憶された前記色成分値とを比較するステップと、
前記色成分値が等しい場合は、前記色補正の前記記憶された処理結果を、前記次の画素にコピーするステップと、
を更に含むことを特徴とする、前記[1]に記載の色補正方法。
[7]前記複雑なブロック中の前の行の画素に対する色補正の前記処理が完了した後で、全ての前記前の行の画素に対する前記色補正の処理結果と色成分値とを記憶するステップと、
前記前の行の中の全ての画素の様々な色成分値と、次の行の中の対応する位置における画素の様々な色成分値とを比較するステップと、
前記色成分値が等しい場合は、前記前の行の中の前記画素に対する前記色補正の前記記憶された処理結果を、前記次の行の中の前記対応する位置における前記画素にコピーするステップと、
を更に含むことを特徴とする、前記[1]に記載の色補正方法。
[8]前記複雑なブロック中の前の列の画素に対する色補正の前記処理が完了した後で、全ての前記前の列の画素に対する前記色補正の処理結果と色成分値とを記憶するステップと、
前記前の列の中の全ての画素の様々な色成分値と、次の列の中の対応する位置における画素の様々な色成分値とを比較するステップと、
前記色成分値が等しい場合は、前記前の列の中の前記画素に対する前記色補正の前記記憶された処理結果を、前記次の列の中の前記対応する位置における前記画素にコピーするステップと、
を更に含むことを特徴とする、前記[1]に記載の色補正方法。
[9]分割ユニットと、決定ユニットと、処理ユニットと、記憶ユニットと、を具備する、色補正デバイスであって、
前記分割ユニットは、画像を画像ブロックに分割して、前記画像ブロックのデータを前記決定ユニットと前記処理ユニットとに送信するために使用され、
前記決定ユニットは、
画像ブロック中の全ての画素の様々な色成分値が等しいかどうかを決定するためと、
更に、複雑なブロック中の次の画素の色成分値と、前記記憶ユニットに記憶された前の画素の色成分値とが、等しいかどうかを決定するために使用され、
前記処理ユニットは、画素に対して色補正の処理をして、前記色補正の処理結果を前記記憶ユニットに記憶するために使用され、
前記記憶ユニットは、画素に対する前記色補正の前記処理結果を記憶して、前記処理結果を前記決定ユニットに送信するために使用される、
ことを特徴とする、色補正デバイス。
[10]前記分割ユニットは、隣接する画像ブロックを組み合わせて新たな画像ブロックを形成するために更に使用されることを特徴とする、前記[9]に記載の色補正デバイス。