(57)【特許請求の範囲】
【請求項１】
入力画像を１つ以上の画像ブロックに分割するステップと、
各画像ブロックにおいて、全ての画素の様々な色成分値を相互に比較して、各画像ブロックにおいて全ての画素の全ての色成分値がいずれも等しく、画像ブロックが複数の単一色の画素から構成されていれば、当該画像ブロックを単純なブロックと見なし、異なっていれば複雑なブロックと見なすステップと、
前記単純なブロックの１つの画素に対して、色補正の処理を行なって、次に、前記色補正の処理結果を、前記単純なブロックの他の全ての画素にコピーして、単純なブロックに対する色補正処理を完了とするステップと、
を含むことを特徴とする、色補正方法。
【請求項２】
前記複雑なブロックにおいて、前の画素の様々な色成分値と、次の画素の様々な色成分値とを比較するステップと、
前記色成分値が等しい場合は、前記前の画素に対する前記色補正の処理結果を、前記次の画素にコピーするステップと、
を更に含むことを特徴とする、請求項１に記載の色補正方法。
【請求項３】
前記入力画像の複雑なブロックの前記色成分値が、色面構成に記憶されている場合は、前記入力画像の複雑なブロックの前記色成分値を、画素構成に記憶するステップ、
を更に含むことを特徴とする、請求項１に記載の色補正方法。
【請求項４】
前記画像ブロックの幅と高さは、等しく、２の累乗の画素であることを特徴とする、請求項１に記載の色補正方法。
【請求項５】
同じ色成分値を有する隣接する単純なブロックを組み合わせて、新たな単純なブロックにして、
隣接する複雑なブロックを組み合わせて、新たな複雑なブロックにすることを特徴とする、請求項１又は４に記載の色補正方法。
【請求項６】
前記複雑なブロック中の前の画素に対する色補正の前記処理が完了した後で、前記色補正の前記処理結果と前記色成分値とを記憶するステップと、
次の画素の前記色成分値と、前記前の画素の前記記憶された前記色成分値とを比較するステップと、
前記色成分値が等しい場合は、前記色補正の前記記憶された処理結果を、前記次の画素にコピーするステップと、
を更に含むことを特徴とする、請求項１に記載の色補正方法。
【請求項７】
前記複雑なブロック中の前の行の画素に対する色補正の前記処理が完了した後で、全ての前記前の行の画素に対する前記色補正の処理結果と色成分値とを記憶するステップと、
前記前の行の中の全ての画素の様々な色成分値と、次の行の中の対応する位置における画素の様々な色成分値とを比較するステップと、
前記色成分値が等しい場合は、前記前の行の中の前記画素に対する前記色補正の前記記憶された処理結果を、前記次の行の中の前記対応する位置における前記画素にコピーするステップと、
を更に含むことを特徴とする、請求項１に記載の色補正方法。
【請求項８】
前記複雑なブロック中の前の列の画素に対する色補正の前記処理が完了した後で、全ての前記前の列の画素に対する前記色補正の処理結果と色成分値とを記憶するステップと、
前記前の列の中の全ての画素の様々な色成分値と、次の列の中の対応する位置における画素の様々な色成分値とを比較するステップと、
前記色成分値が等しい場合は、前記前の列の中の前記画素に対する前記色補正の前記記憶された処理結果を、前記次の列の中の前記対応する位置における前記画素にコピーするステップと、
を更に含むことを特徴とする、請求項１に記載の色補正方法。
【請求項９】
分割ユニットと、決定ユニットと、処理ユニットと、記憶ユニットと、を具備する、色補正デバイスであって、
前記分割ユニットは、画像を画像ブロックに分割して、前記画像ブロックのデータを前記決定ユニットと前記処理ユニットとに送信するために使用され、
前記決定ユニットは、
画像ブロック中の全ての画素の様々な色成分値が等しいかどうかを決定し、各画像ブロックにおいて全ての画素の全ての色成分値がいずれも等しければ単純なブロックと見なし、異なっていれば複雑なブロックと見なすためと、
更に、複雑なブロック中の次の画素の色成分値と、前記記憶ユニットに記憶された前の画素の色成分値とが、等しいかどうかを決定するために使用され、
前記処理ユニットは、画素に対して色補正の処理をして、前記色補正の処理結果を前記記憶ユニットに記憶するために使用され、
前記記憶ユニットは、画素に対する前記色補正の前記処理結果を記憶して、前記処理結果を前記決定ユニットに送信するために使用される、
ことを特徴とする、色補正デバイス。
【請求項１０】
前記分割ユニットは、隣接する画像ブロックを組み合わせて新たな画像ブロックを形成するために更に使用されることを特徴とする、請求項９に記載の色補正デバイス。
【発明の詳細な説明】
【発明の技術分野】
【０００１】
本発明は、コンピュータ画像の処理の技術分野、より具体的には、色補正のための方法及びデバイスに関する。
【発明の背景】
【０００２】
コンピュータ画像の色補正は、異なる出力デバイス(例えば、ディスプレイスクリーンとプリンタ)間における、同じ画像に対する出力特徴の差を無くすために用いられる画像処理である。コンピュータ画像の色補正の中心となる技術は、できるだけ原稿に近い、むらのない出力(色)結果を得ることである。異なる出力デバイス間において出力特徴に差があると、異なる出力デバイスによって出力された色が、異なる色空間に属することになる。実際に、色補正の処理は、主として、画像を１つの色空間(原稿の色空間、即ち、元の色空間)から別の色空間に変換する処理である。通常、異なる色空間の特徴は、インターナショナルカラーコンソーシアム(International Color Consortium, ICC)によって指定された業界標準で記述される。これは、ＩＣＣプロファイルと呼ばれている。
【０００３】
通常、出力デバイスに対する色補正の処理は、図１に示されており、以下のステップを含んでいる。
【０００４】
ステップ１  色調整
主として、元の色空間と、元の色空間を記述しているＩＣＣプロファイルとの差を償うために、このステップを提供する。更に、実際には、デバイスの色空間とデバイスの色空間を記述しているＩＣＣプロファイルとの差を償うために、又は、単に、画像に対してある特定の特別な処理を行なうために、例えば、画像全体のシアン(Cyan, C)と、マゼンタ(Magenta, M)と、イエロー(Yellow, Y)と、ブラック(Black, K)の成分のうちで、マゼンタの成分を増やすために、このステップを使用する場合も当然にある。
【０００５】
ステップ２  色空間の変換
このステップは、色補正の全処理のうちの中心となるステップである。このステップでは、元の色空間の特徴とデバイスの色空間とに従って、元の色空間における画像を、デバイスの色空間のもとで同じ又は同様の視覚効果を有する画像に、画素毎に変換することが必要である。擬似コードの以下の表現を参照されたい。
【０００６】
Res = ICC Convert([in]srcICC, [in]desICC, [in]src, [out]des, [in] num)
//ICC Convertは、色空間を変換するための関数である
//Resは、変換処理の結果、例えば、成功又は失敗を表す
//srcICCは、元の色空間を記述しているＩＣＣプロファイルを表す
//desICCは、デバイスの色空間を記述しているＩＣＣプロファイルを表す
//srcは、srcICCの色空間における画像のデータバッファを示すポインタである
//desは、出力に使用され、変換された画像のバッファを示すポインタである
//numは、変換を必要とする画素数を表す
srcは、当然に、色値でもあり得る；この場合は、変換された色値をdesによって得ることができる;
速度を上げるために、srsICCとdesICCとを、１つのファイルとして組み合わせて、２つの色空間の変換処理を進める場合がある。組み合わされたファイルを、DeviceLinkと呼ぶ。DeviceLinkを使用することによって、上記の擬似コードは、以下のようになる。
【０００７】
Res = ICC Convert([in]src des Link, [in]src, [out]des, [in]num);
なお、src des Linkは、元の色空間からデバイスの色空間へのDeviceLinkを表わす。
【０００８】
ステップ３  「ブラック」／「グレー」／「ソリッドカラー」のセットの保留
ＣＭＹＫの色空間のもとで、「ブラック」は、２種類の定義を有する。
【０００９】
ａ）ブラックの成分値が１００％であり、他の色の成分値が０である、即ち、ｋ＝１００％、ｃ＝０、ｍ＝０、ｙ＝０である、又は、
ｂ）ブラックの成分値が１００％である、即ち、ｋ＝１００％で、十分である。
【００１０】
「ブラック」の保留は、元の画像のある特定の画素の色値が、ブラックの上述の定義を満たす場合は、色空間の変換後に色値がどうなるかに関わらず、その値が標準のブラックの値に戻る（ｃ＝０、ｍ＝０、ｙ＝０、ｋ＝１）ことを意味する。
【００１１】
ＣＭＹＫの色空間のもとで、「グレー」の定義は、ｋの色成分を除いて、他の色成分が等しく、ゼロである、即ち、ｃ＝ｍ＝ｙ＝０ということである。
【００１２】
「グレー」の保留は、元の画像のある特定の画素の色値が、グレーの上述の定義を満たす場合は、色空間の変換後に色値がどうなるかに関わらず、その値が色空間の変換前の色値に戻ることを意味する。
【００１３】
ＣＭＹＫの色空間のもとで、「ソリッドカラー」の定義は、１つの色成分を除いて、他の色成分が全てゼロということである。
【００１４】
「ソリッドカラー」の保留は、元の画像のある特定の画素の色値が、ソリッドカラーの上述の定義を満たす場合は、色空間の変換後に色値がどうなるかに関わらず、その値が色空間の変換前の色値に戻ることを意味する。
【００１５】
色補正の処理において、このようなステップが存在するのは、２つの主な理由のためである。
【００１６】
ａ）「ブラック」であるか、「グレー」であるか、又は「ソリッドカラー」であるかに関わらず、色空間の変換後に、色成分値がゼロでなくなり、視覚的に「劣化」をもたらす状況があり得るからである。
【００１７】
ｂ）一般に、色空間の変換関数は、このような機能を有していないからである。従って、画像が変換された後に、変換すべきでない画素の色値を修正する必要がある。
【００１８】
ステップ４  インクの合計量の制御
異なる種類の紙は、異なる種類のインクの吸収力が非常に異なる。１つの位置(画素)において、様々な色成分値の和が大き過ぎる場合に、インク量が紙の吸収力を超えて、流れることになるか、又はインクを出力媒体に付けることができず、最終的に、全体的な画像の出力効果が損なわれる。
【００１９】
インクの合計量の制御は、ある特定の画素の様々な色成分値の和がある特定の閾値を超えた場合に、様々な色成分値を下げるために適用される方法である。以下のような、様々な色成分値を比例的に下げる方法において、インクの合計量を制御する関数を説明する。
【００２０】
//最初に、インクの合計量を計算する
sum = c + m + y + k ;
if (sum > Threshold)
{
//インクの合計量が閾値を超えると、様々な色成分値を比例的に下げる
c = c * Threshold / sum;
m = m * Threshold / sum;
y = y * Threshold / sum;
k = k * Threshold / sum;
}
様々な色成分値を比例的に下げる方法は、インクの合計量を制御する方法のうちの１つに過ぎないことに注意すべきである。
【００２１】
ステップ５  線形化
一般に、出力デバイスのほとんどは、入力された色値を正確に表わすことができない。例えば、５０％の純粋なシアン色の色ブロック（色値は、ｃ＝０．５、ｍ＝０、ｙ＝０、ｋ＝０である）をカラーインクジェットプリンタで印刷する場合に、シアンの実際の出力の測定値は、通常は７０％以上である。この場合に、シアンの５０％の出力値を達成するために、入力するシアンを調節する必要がある。
【００２２】
例えば、５０％の入力値の出力効果は、７０％である。５０％の出力効果を達成するために、入力値を３３％に変える。
【００２３】
ステップ６  ディザリング
１つの色を別の色に均一に推移させるエリアが、画像中にある場合がある。実際には、これは、隣接する画素間の色値をある特定の方向に小さく規則的に変えている。
【００２４】
しかしながら、上述の処理ステップが原因で、色の推移の均一性が損なわれる。この場合は、色を徐々に推移させる処理中に、隣接する画素間において、色値が比較的に大きく変化して、視覚的に「劣化」をもたらす。
【００２５】
悪い視覚効果を取り除くために、ディザリングを使用する。突然の変化が発生した場合に、この方法を使用して、境界を目立たなくする。
【００２６】
インクの合計量を制御するときに、多くのディザリング方法がある。方法の１つとその関数とを、次に示す。
【００２７】
//sizeofImageは、画像の画素数を表す
for ( int i = 0; i < sizeofImage; i++)
{
//imageは、CMYKの4つの成分を含む画像データを表す：
//各成分の範囲は、0-255である。
【００２８】
//DTは、ディザリングテーブルを表し、
//テーブルの各値も、4つの成分を含み、
//各々の成分の範囲も、0-255である。
【００２９】
//sizeofDTは、ディザリングテーブルのサイズを表し、
//できるだけ反復を避けるために、sizeofDTは、一般に素数である。
【００３０】
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;
}
上述の方法から、入力画像の各画素の様々な成分値をランダムに上げる又は下げることによって、突然の変化が発生した場合に境界を目立たなくする効果が得られることが分かるであろう。
【００３１】
上述では、コンピュータ画像の色補正の処理における６つのステップのみを記載したが、実際には、より多くのステップがあってもよく、処理におけるステップの順序は、定められていない。
【００３２】
色補正の処理における上述のステップから、色補正の通常の方法は、元の画像に対して、多数のステップと画素毎の処理とを行なう必要があり、計算量が非常に多いことが分かる。特に、入力画像が高解像度で、サイズが大きい場合に、処理速度の障害は大きくなり、高速出力デバイスに対する要求を満たすことができない。
【発明の概要】
【００３３】
コンピュータ画像の色補正の処理速度が遅いために、高速出力デバイスの要求を満たすことができないという先行技術における問題を解決するために、本発明は、色補正のため方法とデバイスとを提供する。
【００３４】
次の技術的解決策を提供することによって、本発明の実施形態を実施する。
【００３５】
本発明の実施形態は、色補正方法であって、
入力画像を１つ以上の画像ブロックに分割するステップと、
各画像ブロックにおいて、全ての画素の様々な色成分値を相互に比較して、全ての画素について同じ色成分値を有する画像ブロックを、単純なブロックと見なし、異なる色成分値を有する画像ブロックを、複雑なブロックと見なすステップと、
前記単純なブロックの１つの画素に対して、色補正の処理を行なって、次に、前記色補正の処理結果を、前記単純なブロックの他の画素にコピーするステップと、
を含む、色補正方法を提供する。
【００３６】
本発明の別の実施形態は、分割ユニットと、決定ユニットと、処理ユニットと、記憶ユニットと、を具備する、色補正デバイスであって、
前記分割ユニットは、画像を画像ブロックに分割して、前記画像ブロックのデータを前記決定ユニットと前記処理ユニットとに送信するために使用され、
前記決定ユニットは、
画像ブロック中の全ての画素の様々な色成分値が等しいかどうかを決定するためと、
更に、複雑なブロック中の次の画素の色成分値と、前記記憶ユニットに記憶された前の画素の色成分値とが、等しいかどうかを決定するために使用され、
前記処理ユニットは、画素に対して色補正の処理をして、前記色補正の処理結果を前記記憶ユニットに記憶するために使用され、
前記記憶ユニットは、画素に対する前記色補正の前記処理結果を記憶して、前記処理結果を前記決定ユニットに送信するために使用される、
色補正デバイスを提供する。
【００３７】
上述の技術的解決策を用いて、特別な特徴を有するある特定の画像部分に対して単純化された処理を行なうことによって、処理速度を高めるという目標を達成することができ、現在の色補正の効果に実質的に影響を及ぼすことなく、色補正の処理速度を高めることができる。
【図面の簡単な説明】
【００３８】
【図１】先行技術における画像の色補正のフローチャートである。
【図２】本発明の実施形態に従って、入力コンピュータ画像に対する色補正処理を示すフローチャートである。
【図３】本発明の別の実施形態に従って、色補正デバイスの構造を示す概略図である。
【好ましい実施形態の詳細な説明】
【００３９】
コンピュータ画像に対する色補正の処理速度を高めるために、本発明は、色補正方法を提供する。本発明の実施形態によって達成されるであろう主な原理と、個々の処理と、有利な効果とを、図面を参照して詳しく記載する。
【００４０】
本発明の実施形態では、コンピュータ画像を幾つかのより小さな画像ブロックに分割して、画像ブロック中の全ての画素の様々な色成分値が等しい場合は、１つの画素のみに色補正処理をする必要がある。色補正の処理結果は、画像ブロック中の他の画素に適している。他方で、色成分値が等しくない場合は、前の画素又は前の行／列の画素の色補正の処理結果と色補正値とをキャッシュして、次の画素又は次の行／列の画素の色成分値と、前の画素又は前の行／列の画素の色成分値とが、等しい場合は、前の画素又は前の行／列の画素に対する色補正の処理結果は、次の画素又は次の行／列の画素に適している。
【００４１】
１つの実施形態において、図２に示されている入力コンピュータ画像に適用される色補正の個々の処理は、次のステップを含んでいる。
【００４２】
ステップ101。入力画像を、ｍ画素の幅とｎ画素の高さとを有する画像ブロックに、仮想的に分割する。より良い効果を得るために、ｍの値とｎの値は等しくてもよく、両者は２の累乗である。このときに、複数の画素の同じ色面の値、又は１つの画素の異なる色面の値を組み合わせて、大きな比較単位にしてもよく、その結果、比較回数を効果的に減らすことができる。
【００４３】
ステップ102。画像ブロック中の全ての画素の全ての色成分値が等しい、即ち、画像ブロックが、１つの色を有する画素から構成されている場合は、このような画像ブロックは、単純なブロックである。さもなければ、画像ブロックは単純なブロックではなく、これを複雑なブロックと呼ぶ。最後に、検出結果を記録する。
【００４４】
色面に記憶されている画像データの例を以下に示す。単純なブロックの全体的な検出プロセスの効果を、擬似コードによって記述する。
【００４５】
//画像全体を高さ方向において詳しく検討する。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の意味は、テーブル１から分かる。テーブルにおいて、TRUEは、指定された画像ブロックが単純なブロックであることを表している。FALSEは、指定された画像ブロックが単純なブロックでないことを表している。
【表１】
0005710507.tif 000002
【００４６】
本発明をより効果的にするために、同じ色値を有する隣接する単純なブロックを組み合わせて、大きな単純なブロックにしてもよい。同様に、隣接する複雑なブロックを組み合わせて、大きな複雑なブロックにしてもよい。このように、画像全体のブロック数を減らして、処理速度を高めてもよい。例えば、テーブル１に示されている画像ブロックを組み合わせて、テーブル２の画像ブロックにしてもよい。
【表２】
0005710507.tif 000003
【００４７】
ステップ103。単純なブロックの場合は、先行技術の色補正の処理におけるステップ１−５を相当に単純化することができる。画素毎に複雑に計算する必要はない。ある特定の画素のみを計算することが必要である。全ての処理が完了した後で、計算結果を、単純なブロックの全ての画素にコピーすることができる。
【００４８】
ディザリングの処理により、単純なブロックは、最早、単純なブロックでなくなるので、本発明をより効果的にするために、単純なブロックが、ディザリングの処理の影響を受けないようにしてもよい。即ち、ディザリングの処理中に、単純なブロック中の全ての画素の全ての成分値を一定に維持する。
【００４９】
ステップ104。複雑なブロックの場合は、色補正の処理中に、前の画素の処理結果と色成分値とを記憶する。
【００５０】
ステップ105。次の画素の様々な色成分値と、前の画素の様々な色成分値とを比較する。
【００５１】
ステップ106。次の画素の様々な色成分値と、前の画素の様々な色成分値とが、等しい場合は、処理する必要はなく、前の画素に対する色補正の記憶されている処理結果を、直接にコピーする。
【００５２】
色成分を比例的に低減することによって、インクの合計量を制御する処理の例を以下に示す。上述のバッファリング技術の効果を擬似コードによって記述する。なお、prevDotは、前の画素の処理前の色値を表わし、procDocは、前の画素の処理後の色値を表わし、pは、現在の画素の色値を示すポインタである。色値は、画素に記憶されているものとする。
【００５３】
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];
}
上述の方法は、１つの画素に適用されるバッファであるので、これをポイントバッファと呼ぶ。画像中の隣接する画素間に強い関連性があるので、ポイントバッファの解決策は、複雑な計算を減らして、速度を上げる良い効果をもたらす。
【００５４】
ポイントバッファの特別な例として、更に、ラインバッファ方法を適用してもよい。ラインバッファ方法は、色補正の処理中に、前の行／列の画素の処理結果と色成分値とを記憶することを意味する。このやり方では、前の行／列の中の画素の色成分値と同じ色成分値を有する次の行／列の中の同じ位置における画素は、処理する必要がない。前の行／列の中の画素に対する色補正の記憶されている処理結果を、次の行／列の中の同じ位置における画素に、直接にコピーする。
【００５５】
色補正の処理における色空間の変換ステップの例を、以下に示す。ラインバッファ方法の効果を擬似コードによって記述する。なお、prevLineは、前の行／列の画素の処理前の色値を表わし、procLineは、前の行／列の画素の処理後の色値を表わし、pは、現在の行／列の中の第１の画素の色値を示すポインタであり、色値は、画素に記憶されているものとし、wは、現在の画像の幅である。
【００５６】
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;
更に、比較プロセス中に、２つの隣接する行／列間の関連性が低い場合は、比較を止めて、現在の行／列の画素を直接に処理する。しかしながら、次の行／列を処理するときに、良い環境(prevLineとprocLine)を使用できるように、これを取っておく必要がある。３行の画像データがある場合に、第１の行と第２の行との間における関連性は低いが、第２の行と第３の行との間における関連性は高い(データ画像において、このような状況は一般的である)。以下のようなやり方で、処理を行なう。第１の行と第２の行との関連性が低いことを検出した後は、データの第２の行に対して、色補正の最適化された処理をそれ以上行なわない。このときに、prevLine(第１の行における画像データを示す)は、変わらない可能性が非常に高い。しかしながら、prevLineは、画像の第３の行を処理する前の、第２の行における画像データを示すはずである。このやり方では、第３の行における画像データを処理するときに、第２の行と第３の行との間における関連性を使用してもよい。次の概略的なコードを参照すべきである。
【００５７】
CopyMemory (prevLine, p, sizeof(prevLine));
//ICC変換を行なう
ICC Convert (srcICC, desICC, p, p, w);
procLine = p;
ポイントバッファ方法と同様に、ラインバッファ方法は、画像中の隣接する画素間の強い関連性を効果的に使用して、計算量を減らす目的を達成することができる。
【００５８】
本発明をより効果的にするために、単純なブロックを検出するステップの後で、入力画像のデータが画素に記憶されていない場合は、画像を再構成して、画素に記憶する。単純なブロックの検出後に、画像を構成するのは、単純なブロックは画素に記憶する必要がないからである。言い換えると、複雑なブロックのみに対して、再構成を適用する。この方法の効果を、次の擬似コードで示す。
【００５９】
//最初に、現在の画像ブロック（第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は、処理後に画素に記憶される画像ブロックのデータを示すポインタである。
【００６０】
画像を再構成することによって、色補正の処理におけるある特定のステップ、特に、色空間の変換ステップに関して、画素で構成されている画像データを処理する速度は、色面に構成されている画像データを処理する速度よりも、相当に速い。
【００６１】
本発明の別の実施形態は、色補正デバイスを提供する。図３に示されているように、デバイスは、分割ユニット201と、決定ユニット202と、処理装置203と、記憶ユニット204とを具備している。分割ユニット201は、画像を画像ブロックに分割して、画像ブロックのデータを決定ユニット202と処理ユニット203とに送信して、更に、隣接する画像ブロックを組み合わせて、新たな画像ブロックを形成するために使用される。決定ユニット202は、画像ブロック中の全ての画素の様々な色成分値が等しいかどうかを決定するために、更に、複雑なブロック中の次の画素の色成分値と、記憶ユニットに記憶されている前の画素の色成分値とが、等しいかどうかを決定するために使用される。処理ユニット203は、画素に対して色補正の処理をして、色補正の処理結果を記憶ユニット204に記憶するために使用される。記憶ユニット204は、画素に対する色補正の処理結果を記憶して、その結果を決定ユニット202に送信するために使用される。
【００６２】
上述の色補正デバイスを用いて、特別な特徴を備えたある特定の画像部分に対して単純化された処理を行なうことによって、処理速度を高めるという目標を達成することができる。現在の色補正の効果に実質的に影響を及ぼすことなく、色補正の処理速度を高めることができる。
【００６３】
本発明の意図と範囲とから逸脱することなく、当業者によって、様々な修正と変更とを
行なうことができるのは、明らかである。これらの修正と変更との全てが、本発明の請求
項と、本発明の請求項と同等のものとによって、請求項に係る範囲に含まれる場合は、本
発明が、これらの修正と変更との全てをカバーしていることを意味する。
以下に、本願出願時の特許請求の範囲に記載された発明を付記する。
［１］入力画像を１つ以上の画像ブロックに分割するステップと、
各画像ブロックにおいて、全ての画素の様々な色成分値を相互に比較して、全ての画素について同じ色成分値を有する画像ブロックを、単純なブロックと見なし、異なる色成分値を有する画像ブロックを、複雑なブロックと見なすステップと、
前記単純なブロックの１つの画素に対して、色補正の処理を行なって、次に、前記色補正の処理結果を、前記単純なブロックの他の画素にコピーするステップと、
を含むことを特徴とする、色補正方法。
［２］前記複雑なブロックにおいて、前の画素の様々な色成分値と、次の画素の様々な色成分値とを比較するステップと、
前記色成分値が等しい場合は、前記前の画素に対する前記色補正の処理結果を、前記次の画素にコピーするステップと、
を更に含むことを特徴とする、前記［１］に記載の色補正方法。
［３］前記入力画像の複雑なブロックの前記色成分値が、色面構成に記憶されている場合は、前記入力画像の複雑なブロックの前記色成分値を、画素構成に記憶するステップ、
を更に含むことを特徴とする、前記［１］に記載の色補正方法。
［４］前記画像ブロックの幅と高さは、等しく、２の累乗の画素であることを特徴とする、前記［１］に記載の色補正方法。
［５］同じ色成分値を有する隣接する単純なブロックを組み合わせて、新たな単純なブロックにして、
隣接する複雑なブロックを組み合わせて、新たな複雑なブロックにすることを特徴とする、前記［１］又は［４］に記載の色補正方法。
［６］前記複雑なブロック中の前の画素に対する色補正の前記処理が完了した後で、前記色補正の前記処理結果と前記色成分値とを記憶するステップと、
次の画素の前記色成分値と、前記前の画素の前記記憶された前記色成分値とを比較するステップと、
前記色成分値が等しい場合は、前記色補正の前記記憶された処理結果を、前記次の画素にコピーするステップと、
を更に含むことを特徴とする、前記［１］に記載の色補正方法。
［７］前記複雑なブロック中の前の行の画素に対する色補正の前記処理が完了した後で、全ての前記前の行の画素に対する前記色補正の処理結果と色成分値とを記憶するステップと、
前記前の行の中の全ての画素の様々な色成分値と、次の行の中の対応する位置における画素の様々な色成分値とを比較するステップと、
前記色成分値が等しい場合は、前記前の行の中の前記画素に対する前記色補正の前記記憶された処理結果を、前記次の行の中の前記対応する位置における前記画素にコピーするステップと、
を更に含むことを特徴とする、前記［１］に記載の色補正方法。
［８］前記複雑なブロック中の前の列の画素に対する色補正の前記処理が完了した後で、全ての前記前の列の画素に対する前記色補正の処理結果と色成分値とを記憶するステップと、
前記前の列の中の全ての画素の様々な色成分値と、次の列の中の対応する位置における画素の様々な色成分値とを比較するステップと、
前記色成分値が等しい場合は、前記前の列の中の前記画素に対する前記色補正の前記記憶された処理結果を、前記次の列の中の前記対応する位置における前記画素にコピーするステップと、
を更に含むことを特徴とする、前記［１］に記載の色補正方法。
［９］分割ユニットと、決定ユニットと、処理ユニットと、記憶ユニットと、を具備する、色補正デバイスであって、
前記分割ユニットは、画像を画像ブロックに分割して、前記画像ブロックのデータを前記決定ユニットと前記処理ユニットとに送信するために使用され、
前記決定ユニットは、
画像ブロック中の全ての画素の様々な色成分値が等しいかどうかを決定するためと、
更に、複雑なブロック中の次の画素の色成分値と、前記記憶ユニットに記憶された前の画素の色成分値とが、等しいかどうかを決定するために使用され、
前記処理ユニットは、画素に対して色補正の処理をして、前記色補正の処理結果を前記記憶ユニットに記憶するために使用され、
前記記憶ユニットは、画素に対する前記色補正の前記処理結果を記憶して、前記処理結果を前記決定ユニットに送信するために使用される、
ことを特徴とする、色補正デバイス。
［１０］前記分割ユニットは、隣接する画像ブロックを組み合わせて新たな画像ブロックを形成するために更に使用されることを特徴とする、前記［９］に記載の色補正デバイス。
【図１】
0005710507.tif 000004
【図２】
0005710507.tif 000005
【図３】
0005710507.tif 000006