(57)【特許請求の範囲】
【請求項１】
受信手段が、画素の色を表す色値の少なくとも一つが隣接する画素の間で変化するグラジェント領域を含む画像を受信し、
パス生成手段が、前記画像に含まれるグラジェント領域それぞれにおいて、前記色値の差が閾値以下の類似色を有する画素で構成される領域を識別し、前記識別した領域に含まれる複数の画素の中から、画素間の距離が所定の最小距離以上、かつ、所定の最大距離未満の画素のサブ集合を見出し、前記サブ集合に含まれる画素をソートしてパスを生成し、
判定手段が、前記パスが線形である場合は当該パスに垂直な垂線を定義する制御点を判定し、前記グラジェント領域それぞれにおいて定義された垂線に沿う点における代表色値を判定し、
ベクトル化手段が、前記判定された代表色値の間を線形補間する関数を生成し、前記制御点および前記関数を用いて前記グラジェント領域それぞれにおける色グラジェントのベクトル記述を生成することを特徴とする画像処理方法。
【請求項２】
前記判定手段は、前記パスが線形である場合、前記垂線に平行な線と前記パスに平行な線を用いて前記グラジェント領域を囲む矩形枠を定義し、少なくとも当該矩形枠の端部における代表色値を、前記垂線に沿う点における代表色値として判定することを特徴とする請求項1に記載された画像処理方法。
【請求項３】
前記判定手段は、前記パスが円の弧である場合、前記円の中心を制御点として、前記制御点を中心とする円形輪郭上における代表色値を判定することを特徴とする請求項1に記載された画像処理方法。
【請求項４】
前記垂線に沿う点の前記代表色値は、前記パスに平行、かつ、前記点で前記垂線と交差する輪郭上に位置する前記グラジェント領域の画素に対応する色値の平均値であることを特徴とする請求項1または請求項2に記載された画像処理方法。
【請求項５】
前記判定手段は、前記パスが円の弧である場合、前記円形輪郭上に位置する前記グラジェント領域の画素に対応する色値の平均値を前記代表色値として判定することを特徴とする請求項3に記載された画像処理方法。
【請求項６】
前記関数は、一つ以上の色ストップによって定義され、
前記ベクトル化手段は、前記垂線に沿う点を順次検討し、現在の検討点に対して、先に検討した点における色値の線形モデルに基づき、前記現在の検討点における一つ以上の色値を予測し、前記予測した一つ以上の色値と対応する代表色値の間の差分が所定の閾値を超える場合は色ストップを前記関数に追加し、
前記色ストップは、前記現在の検討点の位置と色を有することを特徴とする請求項1に記載された画像処理方法。
【請求項７】
前記ベクトル化手段は、前記関数を生成する前に、前記代表色値を平滑化することを特徴とする請求項6に記載された画像処理方法。
【請求項８】
前記パスが円の弧である場合、前記判定手段は、前記パスを構成する画素のサブ集合において、二つの終端画素を結ぶ線の垂直二等分線を計算し、前記垂直二等分線の上に位置し、かつ、前記サブ集合の各画素から等距離であると判定した点を前記円の中心にすることを特徴とする請求項3に記載された画像処理方法。
【請求項９】
さらに、検出手段が、前記受信した画像から前記グラジェント領域を検出し、
前記パス生成手段は、前記検出されたグラジェント領域それぞれにおいて、前記類似色を有する画素で構成される領域を識別し、前記識別した領域に含まれる複数の画素の中から、画素間の距離が前記所定の最小距離以上、かつ、前記所定の最大距離未満の画素のサブ集合を見出し、前記サブ集合に含まれる画素をソートして前記パスを生成することを特徴とする請求項1に記載された画像処理方法。
【請求項１０】
前記検出手段は、前記画像の隣接画素の間の色差を計算し、前記色差に帯域通過フィルタを適用して前記グラジェント領域にある画素を識別し、前記識別した画素にフラッドフィルを適用して前記グラジェント領域を検出することを特徴とする請求項9に記載された画像処理方法。
【請求項１１】
画素の色を表す色値の少なくとも一つが隣接する画素の間で変化するグラジェント領域を含む画像を受信する受信手段と、
前記画像に含まれるグラジェント領域それぞれにおいて、前記色値の差が閾値以下の類似色を有する画素で構成される領域を識別し、前記識別した領域に含まれる複数の画素の中から、画素間の距離が所定の最小距離以上、かつ、所定の最大距離未満の画素のサブ集合を見出し、前記サブ集合に含まれる画素をソートしてパスを生成するパス生成手段と、
前記パスが線形である場合は当該パスに垂直な垂線を定義する制御点を判定し、前記グラジェント領域それぞれにおいて定義された垂線に沿う点における代表色値を判定する判定手段と、
前記判定された代表色値の間を線形補間する関数を生成し、前記制御点および前記関数を用いて前記グラジェント領域それぞれにおける色グラジェントのベクトル記述を生成するベクトル化手段とを有することを特徴とする画像処理装置。
【請求項１２】
コンピュータを請求項11に記載された画像処理装置の各手段として機能させることを特徴とするプログラム。
【請求項１３】
請求項12に記載されたプログラムが記録されたことを特徴とするコンピュータが読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータグラフィクスに関し、とくに、画像の色グラジェント（colour gradient、色勾配/グラデーション）のベクトル記述を生成することに関する。
【背景技術】
【０００２】
しばしば、画像データを高次形式(higher-level form)に変換することが要求される。このような変換は、画像データのより効率的な格納を可能にする。加えて、結果として得られる高次記述(higher-level description)は、画像データの以降の処理に必要である。
【０００３】
画像を単純なラスタビットマップからベクトルグラフィクス記述のような高次形式に変換する従来の方法は、ビットマップ形式の色データを残すか、類似色の小領域を一様に塗り潰したオブジェクト(flat filled object)に変換するかの何れかを伴う。
【０００４】
変換画像の色データにビットマップを使用する第一のケースは、大量のメモリをビットマップの格納に使用する。小領域を一様に塗り潰したオブジェクトに変換する第二のケースの主な問題は、一様な色の領域すべてのレンダリングに高い計算コストがかかることである。例えば図3に示すように、グラジェント塗り潰しまたはブレンド塗り潰しを有する形状352は、類似色の領域が、一様な色で塗り潰したオブジェクトに置き換えられた形式に変換される。符号350で示す色の輪は、出力に無関係の別のオブジェクトである。各輪350は一様な色を有する。
【０００５】
上記の両ケースにおいて、結果として得られる色データは、単純な制御（例えば、線形グラジェントの開始点および/または終了点の変更）を使用する編集が困難な場合がある。さらに、その色データは、ささやかではない(non-trivial)量のメモリを消費する。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
本発明の目的は、既存の構成の一つ以上の欠点を実質的に克服するか、少なくとも改善することである。
【課題を解決するための手段】
【０００７】
本発明の一つの面によれば、画像の色グラジェントのベクトル記述を生成する方法が提供される。この方法は、それぞれが一つ以上の関連する色値をもつ画素の配列を有し、色値の少なくとも一つが隣接画素間で変化する、少なくとも一つのグラジェント領域を有する画像を受信するステップと、ほぼ同一の色をもつ画素を有するパスを、各グラジェント領域で生成するステップと、前記パスにほぼ垂直な線を定義する一つ以上の制御点を判定するステップと、前記線に沿う点の代表色値を計算するステップと、前記代表色値から区分的線形色関数(piecewise-linear colour function)を生成するステップとを有し、前記一つ以上の制御点および前記区分的線形色関数は、前記グラジェント領域内の色グラジェントの前記ベクトル記述を形成する。
【０００８】
本発明の別の面によれば、画像の色グラジェントのベクトル記述を生成する装置が提供される。この装置は、それぞれが一つ以上の関連する色値をもつ画素の配列を有し、色値の少なくとも一つが隣接画素間で変化する、少なくとも一つのグラジェント領域を有する画像を受信する手段と、ほぼ同一の色をもつ画素を有するパスを、各グラジェント領域で生成する手段と、前記パスにほぼ垂直な線を定義する一つ以上の制御点を判定する手段と、前記線に沿う点の代表色値を計算する手段と、前記代表色値から区分的線形色関数を生成する手段とを有し、前記一つ以上の制御点および前記区分的線形色関数は、前記グラジェント領域内の色グラジェントの前記ベクトル記述を形成する。
【０００９】
本発明のさらに別の面によれば、画像の色グラジェントのベクトル記述を生成する方法を実行するプログラムコードが実行されるデータ処理装置の動作を制御する、装置が読み取り可能な記録媒体に記録された、装置が実行可能なプログラムコードを有するコンピュータプログラム製品が提供される。この方法は、それぞれが一つ以上の関連する色値をもつ画素の配列を有し、色値の少なくとも一つが隣接画素間で変化する、少なくとも一つのグラジェント領域を有する画像を受信するステップと、ほぼ同一の色をもつ画素を有するパスを、各グラジェント領域で生成するステップと、前記パスにほぼ垂直な線を定義する一つ以上の制御点を判定するステップと、前記線に沿う点の代表色値を計算するステップと、前記代表色値から区分的線形色関数を生成するステップとを有し、前記一つ以上の制御点および前記区分的線形色関数は、前記グラジェント領域内の色グラジェントの前記ベクトル記述を形成する。
【００１０】
本発明のさらに別の面によれば、画像の色グラジェントのベクトル記述を生成する方法を実行するプログラムコードが実行されるデータ処理装置の動作を制御する、装置が読み取り可能なプログラムコードを有するコンピュータプログラムが提供される。このコンピュータプログラムは、それぞれが一つ以上の関連する色値をもつ画素の配列を有し、色値の少なくとも一つが隣接画素間で変化する、少なくとも一つのグラジェント領域を有する画像を受信するコードと、ほぼ同一の色をもつ画素を有するパスを、各グラジェント領域で生成するコードと、前記パスにほぼ垂直な線を定義する一つ以上の制御点を判定するコードと、前記線に沿う点の代表色値を計算するコードと、前記代表色値から区分的線形色関数を生成するコードとを有し、前記一つ以上の制御点および前記区分的線形色関数は、前記グラジェント領域内の色グラジェントの前記ベクトル記述を形成する。
【発明を実施するための最良の形態】
【００１１】
ラスタビットマップを高次記述に変換することが要求される状況が沢山ある。そのような用途の一つに、図6を参照して後述するような、スキャン画像の処理における用途がある。しかし、説明する方法は、この特定の用途に限定されず、入力画像のグラジェント情報を識別して、グラジェント情報をベクトル記述に変換する必要がある場合に使用される。
【００１２】
そのような必要性は、例えば、レンダラの出力を処理する場合に生じる。その出力は、非常に多くの細目(detail)を含み、以降の処理に効率的な記述を提供できない場合がある。ベクトル記述の生成は、以降の任意の処理の加速、または、出力される記述のサイズの減少を助ける。
【００１３】
［動作環境］
図6は実施例において説明する方法が適用されるシステムを示す図である。スキャナ600は、文書または画像を、以降の処理用にコンピュータ700へ送る電子ビットマップに変換するために使用される。このビットマップは、例えば光学文字認識(OCR)によって、検索可能な形式(searchable form)に変換されてもよい。このビットマップのベクトルグラフィクス形式への変換は、記憶装置または以降の処理に対して、より効率的な記述を提供する。
【００１４】
スキャナ600は、入力文書または入力画像を支持し、位置決めするためのプレート602を含む。入力文書または入力画像は、例えば、キセノンランプまたは冷陰極蛍光ランプであるランプ604によって照明される。レンズアセンブリ606は、入力文書または入力画像の全部または一部の画像を光学フィルタ608のシステムに伝達する。スキャナ600は、赤色光、緑色光および青色光をそれぞれ伝達する三組のフィルタを有する。電荷結合素子(CCD)アレイを含む走査アセンブリ610は、光学フィルタ608の出力を走査する。CCDアレイは、光子を電子に変換するフォトダイオードを有し、レンズアセンブリ606および光学フィルタ608を経て到達する画像の電子記述を形成する。単一走査構成の場合、赤色成分、緑色成分および青色成分のそれぞれに対して個別のCCDアレイがある。あるいは、走査ごとに、画像の異なる色成分を登録するために、CDDアレイの前に異なるフィルタを配置して、入力文書または入力画像を繰り返し走査してもよい。画像記述は、保管または処理のために、コンピュータ700に転送される。コンピュータ700上で稼働するドライバソフトウェアは、コンピュータ700とスキャナ600の間の通信を制御する。デバイス600、700は、ネットワークを介してリンクされていてもよく、入力文書のコピーを印刷するために、一つ以上のプリンタと通信してもよい。
【００１５】
［汎用コンピュータの説明］
実施例において提示するアルゴリズムおよび表示は、任意の特定のコンピュータまたは他の装置と、本質的に無関係である。実施例の説明に従うプログラムとともに、様々な汎用装置を使用することができる。あるいは、要求される方法ステップの実行用に、より特化された装置を構築することも適切だろう。以下の説明は、汎用コンピュータの構成によって行う。
【００１６】
また、本発明はコンピュータプログラムを暗に開示し、実施例において説明する方法の各ステップがコンピュータコードによって実行されることは、当業者には明らかだろう。コンピュータプログラムが任意の特定のプログラミング言語と実装に限定されるべきであることは、意図しない。様々なプログラミング言語と、それによるコーディングを使用して、実施例の開示が実現されることが理解されるだろう。
【００１７】
そのようなコンピュータプログラムは、コンピュータが読み取り可能な任意の媒体に格納されていてもよい。コンピュータが読み取り可能な媒体は、磁気または光ディスク、メモリチップのような記憶デバイス、または、汎用コンピュータとのインタフェイスに適した他の記憶デバイスを含む。コンピュータが読み取り可能な媒体は、さらに、インターネットシステムに例示されるようなワイヤード接続された媒体、または、GSM移動電話システムに例示されるようなワイヤレス接続された媒体を含んでもよい。コンピュータプログラムは、そのような汎用コンピュータにロードされ実行される場合、事実上、好適な方法ステップを実現する装置になる。
【００１８】
色グラジェントをベクトル記述に変換する方法は、図7に示すような汎用コンピュータシステム700を使用して実行されることが好ましい。図1の処理は、コンピュータシステム700内で実行されるアプリケーションプログラム(AP)のようなソフトウェアとして実装される。とくに、方法ステップは、コンピュータが実行するAPの命令によって、実行される。命令は、それぞれ一つ以上の特定のタスクを実行する一つ以上のコードモジュールとして構成される。APは、後述する記憶デバイスを含むコンピュータが読み取り可能な媒体に格納される。APは、コンピュータが読み取り可能な媒体からコンピュータにロードされ、そして、コンピュータによって実行される。そのようなソフトウェアまたはコンピュータプログラムが記録されたコンピュータが読み取り可能な媒体は、コンピュータプログラム製品である。コンピュータにおけるコンピュータプログラム製品の使用は、色グラジェントのベクトル記述を生成することに有利な装置の実現に効果的である。
【００１９】
コンピュータシステム700は、コンピュータモジュール701、キーボード702およびマウス703などの入力デバイス、並びに、プリンタ715、ディスプレイデバイス714およびスピーカ717を含む出力デバイスから構成される。変復調(MODEM)トランシーバデバイス716は、例えば、電話線721または他の機能媒体を介して接続可能な通信ネットワーク720との間で通信するために、コンピュータモジュール701によって使用される。MODEM716は、インターネット、ローカルエリアネットワーク(LAN)やワイドエリアネットワーク(WAN)のような他のネットワークシステムへのアクセスに使用可能であり、幾つかの実装においてはコンピュータモジュール701に組み込まれる。
【００２０】
コンピュータモジュール701は、通常、少なくとも一つのプロセッサ705、および、例えば、半導体ランダムアクセスメモリ(RAM)およびリードオンリメモリ(ROM)から構成されるメモリ706を含む。コンピュータモジュール701は、さらに、次の入出力(I/O)インタフェイスを含むI/Oインタフェイスを有する。ビデオディスプレイ714とスピーカ717に結合するオーディオビデオ(AV)インタフェイス707。キーボード702、マウス703、オプションのジョイスティック（不図示）用のI/Oインタフェイス713。MODEM716とプリンタ715用のI/Oインタフェイス708。幾つかの実装例において、MODEM716は、コンピュータモジュール701に組み込まれ、例えばI/Oインタフェイス708に組み込まれる。記憶デバイス709は、通常、ハードディスクドライブ(HDD)710およびフレキシブルディスクドライブ(FDD)711として提供される。通常、CD-ROMドライブ712は、不揮発性のデータソースとして提供される。コンピュータモジュール701の構成要素705から713の通信は、通常、相互接続バス704を介して、当業者には周知のコンピュータシステム700の慣用の動作モードにおける方法で行われる。
【００２１】
通常、APはHDD710に存在し、その実行時に、プロセッサ705により読み取られ制御される。ネットワーク720から取得されるAPおよび任意のデータの中間格納は、HDD710と関係をもつことが可能な半導体メモリ706を使用して成し遂げてもよい。例えば、CD-ROMまたはフレキシブルディスク(FD)上にエンコードされたAPは、対応するCD-ROMドライブ712またはFDD711を介して読み取られてユーザに供給される。あるいは、APは、MODEM716を介してネットワーク720からユーザによって読み取られてもよい。さらに、APは、コンピュータが読み取り可能な他の媒体からコンピュータシステム700にロードされてもよい。実施例において使用するように、用語「コンピュータが読み取り可能な媒体」は、実行および/または処理のためにコンピュータシステム700に命令および/またはデータを提供することに関係する任意の記憶媒体または送信媒体を示す。記憶媒体の例は、FD、磁気テープ、CD-ROM、HDD、ROMまたは集積回路、光磁気ディスク、または、PCMCIAカードのようなコンピュータが読み取り可能なカードなどを含む。そのような記憶媒体が、コンピュータモジュール701の内部にあるか、外部にあるかは問わない。送信媒体の例は、無線または赤外線の送信チャネル、別のコンピュータまたはネットワークデバイスへのネットワーク接続、および、電子メール送信およびWebサイトなどに記録された情報を含むインターネットまたはイントラネットを含む。
【００２２】
あるいは、画像の色グラジェントを高次ベクトル記述に変換する方法は、一つ以上の集積回路などの専用ハードウェアによって実現されてもよい。そのような専用ハードウェアは、グラフィックプロセッサ、ディジタル信号プロセッサ、または、一つ以上のマイクロプロセッサおよび連携するメモリを含むだろう。
【００２３】
［色グラジェントからベクトル記述への変換］
図1はソース画像12の一つ以上の色グラジェントのベクトル記述を生成する方法10を示す図である。画像12は、複数の走査線上に配置された画素アレイとして記述される。まず、画像12を記述する画素アレイは、処理のためにプロセッサ705によって受信される。各画素は、画素の赤、青および緑の色値をそれぞれ記述するトリプレット(R, G, B)だろう、一組（すなわち一つ以上）の関連する色値によって記述される。画素は、不透明度を示す第四の関連する値も備えてよい。また、画像12を記述するために他の色空間を使用してもよい。画像12は、各画素が単一のスカラ輝度値により記述されるグレイスケール画像でもよい。
【００２４】
方法10は、画像12の平滑な色グラジェントを含む領域の検出を目的とするステップ100（検出フェーズ）から始まる。検出フェーズ100は、二つのサブステップを必要とする。まず、サブステップ101は、平滑化された画素の差分を使用して色の勾配を検出する。サブステップ101において、走査線ごとに画像12が読み取られ、各画素と、同一走査線上の近隣画素（隣接画素）の間の色差が入った整数のアレイが構成される。それぞれ赤、緑および青の色成分を含む二つの隣接画素の間の色差は、下式を用いて算出する。
Diff = |R1 - R2| + |G1 - G2| + |B1 - B2|      …(1)
ここで、(R1, G1, B1)は第一の画素の色成分値、
(R2, G2, B2)は第二の画素の色成分値。
【００２５】
算出された色差値は格納される。一つの走査線を完全に読み取った後、色差アレイに平滑化関数を適用する。これは、各側のn個（ある構成においてn=5）の隣接色差（隣接画素との色差値）を用いて、与えられた色差値を平均化して、その平均値を与えられた色差の格納場所に戻すことによって実行される。
【００２６】
テキストなどの差分が大きい領域は、平均化後、高い色差値を有し、一様な色の領域は色差を有さない。グラデーションのように徐々に色が変化する領域は、小さな色差値を有する。そこで、サブステップ101は、色差値に帯域通過フィルタを適用して、色グラジェント上にある画素の集合を抽出する。平滑化後の色差値が零のk個の近隣画素の列を検出することで、一様な色の領域を構成する画素を可能なグラジェント画素の集合から排除することが好ましい。なお、kは所定のパラメータ（ある構成においてk=5）である。平滑化後の色差値が所定の閾値を超える画素も、可能なグラジェント画素の集合から除去される。
【００２７】
走査線に亘る水平方向の走査においては走査線を横切って色は変化しないから、サブステップ101は、垂直な線形グラジェントを検出することはできない。これを回避するために、サブステップ101は、第一の水平パスにおいて発見した画素の集合にさらなる画素を追加して、各画素列に沿う垂直な走査も繰り返す。グラジェント画素の候補の走査前に、垂直の色差も算出され、平滑化される。従って、サブステップ101の出力は、色グラジェント上にあるようにみえる画像12の画素の集合である。
【００２８】
この方法によって、色グラジェントの全画素を発見することができるわけではない。そこで、サブステップ102は、サブステップ101において残った全ギャップを埋め、グラジェント画素の集合をグラジェント領域のエッジまで拡張するために使用される。サブステップ102は、サブステップ101が出力した各画素から開始する、標準的なフラッドフィル(flood fill)アルゴリズムまたは領域拡張アルゴリズムを適用する。フラッドフィルに対する境界は、設定可能な所定の閾値とともに、サブステップ101で使用した差分関数（式(1)）を使用して見出す。もし、二つの隣接色値（グラジェント集合の画素と隣接画素）の間の差分が設定可能な所定の閾値より小ければ、隣接画素をグラジェント画素の集合に追加する。つまり、フラッドフィルアルゴリズムは、サブステップ101が検出した画素を色差値に基づき判定されたシード（またはシード画素）として使用する。その後、類似度の判定基準を満たす周囲画素を判定するために、フラッドフィルアルゴリズムをシード画素に適用してもよい。グラジェント集合の画素とフラッドフィルのエッジの画素の間の差分が設定可能な所定の閾値を超える場合、フラッドフィルがグラジェント画素の集合を拡張し続けるのを停止する。従って、サブステップ102の出力は、入力画像12の色グラジェント領域を構成する全画素の集合である。つまり、色グラジェント領域は、フラッドフィルの結果である。
【００２９】
サブステップ102以降の全ステップは、サブステップ102が出力したグラジェント画素の集合に対してのみ動作し、集合に含まれない画素は考慮されない。入力画像12には、複数の別の色グラジェントの領域があってよく、そのため、サブステップ102は、ナンバリング手法を使用して、色グラジェントの連続領域の追跡を継続する。サブステップ102によって蓄積された画素のサブ集合を格納する一つの方法は、画像12と同一面積を有するバイトの二次元アレイから構成されるマスクを使用することである。マスクの各値は、対応する画像12の画素の分類を格納する。値「0」は、ソース画素が色グラジェント領域の一部ではないことを意味する。非零は、対応する画像12の画素が色グラジェント領域にあることを示すために使用される。マスクの実際の値には、色グラジェントの連続領域が同一のマスク値を有するような指標を格納する。例えば、もし、画像12に二つの色グラジェント領域が存在すれば、第一のグラジェント領域に対する全マスク値は値「1」を有し、第二のグラジェント領域の画素に対する全マスク値は値「2」を有する。
【００３０】
検出フェーズ100において、画像12が色グラジェントの連続領域に分類された後、方法10のステップ200（ベクトル化フェーズ）は、色グラジェントのパラメータを決定し、それらグラジェントのベクトル記述を構成する。幾つかの場合、アプリケーションによっては、検出フェーズ100とそのサブステップは全く不要である。当業者は、説明したステップ100の代わりに、画素を色グラジェントの連続領域に分類する他の方法を使用してもよいことを認識するだろう。
【００３１】
ステップ200（ベクトル化フェーズ）は、色グラジェントの連続領域それぞれにおいて実行される。ステップ200は、まず、当のグラジェントが線形グラジェントか放射状グラジェントかを決定する必要がある。これはサブステップ210（パス生成ステップ）の目的であり、サブステップ210の出力に基づき、グラジェントが線形の場合はサブステップ220が実行され、グラジェントが放射状の場合はサブステップ230が実行される。サブステップ220、230の何れの後も、変曲点(inflextion point)において「色停止」を生成するためにサブステップ240が実行される。
【００３２】
パス生成サブステップ210は、色グラジェント領域それぞれにおいて、ほぼ同じ色をもつ画素を備えるパスを生成して、その線形性を判定する四つのサブステップ211、212、213および214を含む。パス生成サブステップ210は、類似度の測定に従い、色グラジェント領域において非常に類似した値を有する画素のサブ集合を見出すサブステップ211の実行によって始まる。これは、次のようにして達成する。既にグラジェント領域にある画素の一つを選出(pick)し、グラジェント領域の類似色を有する全画素（それら画素ほぼ同一の色を有する）を識別する。正確な一致から開始し、その後、充分に大きな画素のサブ集合（識別画素のサブ集合）を発見するまで、開始画素とグラジェント領域の残りの画素の間の差分の所定の閾値を増加して、識別を繰り返す。この様子は、放射状グラジェントを含む領域312を示す図2に示されている。符号310は、類似色を有する画素の環状の領域を示す。従って、例えば、サブステップ211は、領域310内の画素を識別するだろう。
【００３３】
現在のサブ集合の適合性は、サブステップ212から得られる画素数によって定義する。サブステップ212は、サブステップ211に見出された現在のサブ集合を得て、現在のサブ集合を選び出す。それにより、小さいサブ集合の各画素が、そのサブ集合の他の任意の画素から少なくとも所定の最小距離だけ離れ、所定の最大距離よりも離れない（最大距離未満の）、小さいサブ集合を見付ける。この例を図2に示す。図2において、符号320が示す画素の集合は環状領域310の画素のサブ集合の一例である。サブステップ212は、グラジェントの色輪郭に沿う画素または点の集合を出力する。もし、サブステップ212の終了時、サブ集合に充分な画素がない場合は、サブステップ211の差分閾値が増加され、サブステップ211を再実行する。もし、サブステップ212の実行後、サブ集合に充分な画素がある場合、ステップ200は、サブステップ213へ進むことが許される。ある構成において、最小画素数は「5」であるが、最小画素数「8」を使用してもよい。
【００３４】
サブステップ213は、グラジェント点のサブ集合を、(x, y)座標をもつ点の「未ソート」アレイとし、グラジェント点がポリライン(polyline)パスを形成するように、グラジェント点のサブ集合をソートする。これは、まず、点のアレイを走査して、端点(end point)または一つの隣接点しかもたない画素を見付けることにより実行される。隣接点は、特定の距離内にある点で、次式によって定義される。
Dist = √{(X1 - X2)2 + (Y1 - Y2)2}
ここで、(X1, Y1)は第一の点、
(X2, Y2)は可能な隣接点。
【００３５】
端点の一つが、「未ソート」アレイから取り出され、新しい「ソート済み」アレイに送られる。そして、残りの点のうち、その端点に最も近い点がソート済みアレイに移動される。その後、残りの点は、ソート済みアレイに配置された最後の点との距離によって順次ソートされ、最も近い点が、未ソートアレイからソート済みアレイの最後に移動されていく。
【００３６】
もし、識別される端点がない場合、例えば、類似画素の完全な輪が存在する場合、ソーティングステップ213用の開始点として、任意の点を選択してもよい。
【００３７】
ソート済み点のリストが完成すると、サブステップ214は、ポリラインパスの区分(segment)に注目して、各区分（線分）のグラジェントを検査する。線分のグラジェントすべてが、設定可能な許容誤差内で類似する場合、ポリラインパスはほぼ線形であり、線形グラジェントを示す。そうではない場合、グラジェントは放射状と見做す。
【００３８】
サブステップ214がグラジェントが線形であることを示すと、線形サブステップ220（サブステップ221と222を含む）が実行される。サブステップ220は、下で詳細に説明するように、サブステップ213で生成されたポリラインパスにほぼ垂直な線を定義する一つ以上の制御点を判定する。とくに、サブステップ221は、幾何学パラメータ、つまり、グラジェント空間における線形グラジェントの境界を判定する。線形色ブレンドを含む領域405を示す図4に示されるように、境界は、グラジェント領域の色輪郭に垂直な線の範囲を定める二つの端点（または端部）から構成される。領域405の位置は、x軸407とy軸406をもつ画像座標系において定義される。
【００３９】
領域405の線形ブレンドの輪郭はサブステップ211において識別され、輪郭に沿う点403はサブステップ212において識別される。線402は、色輪郭に垂直である。色輪郭と線402は「グラジェント空間」の座標軸を定義する。矩形401は領域405の枠(bounding box)であり、枠の辺はグラジェント空間の軸に平行である。点408は線形グラジェントの開始点であり、点404は線形グラジェントの終了点である。
【００４０】
色グラジェントは、個別の点、または、「0」と「1」の間の単位パラメータ空間における「色ストップ」において、色を特定する。なお、「0」は開始点408のパラメータ、「1」は終了点404のパラメータである。任意数の色ストップが、判定され、終了点0.0と1.0を含む「0」から「1」の範囲に位置決めされてもよい。色ストップは、単位パラメータ空間または正規化パラメータ空間において与えられた点の色と位置を有する。色は、二つの色ストップの間で一定の割合で（線形に）変化する。線形グラジェントの開始点408と終了点404の位置を決めるために、サブステップ221は、グラジェント領域の全画素を走査し、各画素の位置をグラジェント空間に変換する必要がある。グラジェント空間は、色輪郭線に沿う一方の軸（x軸）と、図4に符号402で示す輪郭の法線に沿う他方の軸（y軸）を用いて定義される。法線の角度の算出は、符号403で示す点から作成されるポリラインパスの区分の平均グラジェントを得て、直角をなすtan-1(1/平均グラジェント)を計算することで行う。グラジェント法線402と画像のy軸406の間の角度αが算出され、角度αは、色輪郭が水平（法線402は垂直）になるように、各グラジェント画素の座標を回転するために使用される。回転される座標のx値とy値すべての最大値および最小値が計算され、それらは、グラジェント空間において定義されるグラジェント領域の矩形枠401を形成する。グラジェント領域の矩形枠401の左エッジ部の左下隅と左上隅それぞれにある二点408、404は、先に適用した回転の逆回転を行うことにより、グラジェント空間から画像の座標空間に逆変換される。これら点408、404は、線形グラジェントの開始点と終了点を形成するから、サブステップ221を終了する。
【００４１】
サブステップ222は、赤、緑および青の色成分それぞれの三つの累積和と、画素のカウントを含むバケットを設定可能な数（ある構成は1024のバケットを用いる）有する色ランプアレイ(colour ramp array)を構成する。このバケットのアレイを色ランプアレイと呼ぶ。色ランプアレイは、グラジェント単位パラメータ空間の概念的な(notional)垂直軸402上の対応点における平均色値（または代表色値）の収集を目的とする。各代表色値は、ポリラインパスに平行、かつ、対応点において垂線402に交差する輪郭上に横たわるグラジェント領域の画素の色値から得られる平均値である。
【００４２】
サブステップ222はグラジェント領域内の全画素を走査し、サブステップ221で算出したグラジェント空間の矩形枠401を使用して、各画素の座標（または位置）をグラジェント単位パラメータ空間に写像する。画像空間の垂直(y)軸406と、色輪郭に直角なグラジェント空間軸402の間の角度をα、グラジェント領域の画素の座標を(X1, Y1)とすると、グラジェント空間の点の座標は、下に示す画像から線形グラジェント空間への変換により得られる。
XG = cos(α).X1 - sin(α).Y1
YG = sin(α).X1 + cos(α).Y1
【００４３】
サブステップ221で算出したグラジェント空間の矩形枠401が(Xmin, Ymin, Xmax, Ymax)で区切られているとすると、グラジェント単位パラメータ空間における画素の位置Pは次式で表される。
P = (YG - Ymin)/(Ymax - Ymin)
ここで、0.0 ≦ P ≦ 1.0。
【００４４】
サブステップ222は、グラジェント領域の全画素のPを計算することで、色ランプアレイの画素の対応バケットを判定する。色ランプアレイに画素を追加するサブステップ222は、バケットの各累算器(accumulator)に赤、緑および青の色成分を単純に加算し、バケットの画素のカウントをインクリメントする。
【００４５】
その後、処理はサブステップ240へ進む。サブステップ210においてグラジェントが放射状グラジェントと決定した場合は、サブステップ220に代わってサブステップ230が実行される。
【００４６】
サブステップ230は、サブステップ213で生成したパスにほぼ垂直な線を定義して、放射状グラジェントの幾何学パラメータを決定することを目的とする。これらパラメータは、中心点と半径から構成される。放射状サブステップ230は、放射状パラメータを判定するサブステップ231、232および233を含む。放射状ブレンドを含む領域505を示す図5を参照して、放射状パラメータの判定を説明する。
【００４７】
サブステップ231は、グラジェント領域の色輪郭に沿う線を形成するサブステップ213において生成したポリラインパスから始めて、グラジェントの中心を計算する。この場合、パスは円弧である。円の半分未満を形成するポリラインパスを定義する点のサブ集合（例えば、図5に符号501で示す点）は、90度超180度未満で角度が変化するまでポリラインパスの各線分のグラジェントを比較することで識別される。点501のサブ集合の二つの端点（または二つの終端画素）の間に線502を形成し、線502の中間点を算出する。線502の中間点から線502の法線に沿って、ポリラインサブ集合内の既存点501から離れるように延びた、新しい線503を形成する。線503は、放射状ブレンドを定義する円の中心に、交差するように近付く筈であるが、中心の正確な座標は未知である。従って、線503は、二つの終端を結ぶ線502の垂直二等分線である。
【００４８】
線503に沿って繰り返し点を進め（この点の動きの幾つかの例を図5に符号504で示す）、点504からポリラインパスの各点までがほぼ等距離（つまり、ポリラインパスの点がほぼ等距離）になるまで距離を算出する。これにより、サブステップ231は放射状グラジェントの中心点のかなり正確な近似値を見出すことができる。中心点はグラジェントの制御点であり、線503はポリラインパス（図5に符号501で示す点）にほぼ垂直である。この方法は、単に、一つの可能な方法であり、当業者は、サブステップ231において他の方法が使用可能であることを理解するだろう。
【００４９】
中心が判明すると、サブステップ232はグラジェント領域内の全画素を走査して、中心からそれら画素までの距離を計算し、中心からグラジェント領域の最も遠い画素までの距離を表す最大距離を保持する。最大距離は、放射状グラジェントの半径になる。
【００５０】
中心と半径が得られると、色ランプアレイを生成するために、処理はサブステップ233へ進む。色ランプアレイがグラジェント単位パラメータ空間の対応点の代表色値の判定を目的とする点において、サブステップ233は、線形グラジェントのサブステップ222と同様である。各代表色値は、ブレンド中心を中心とし、かつ、対応点を通過する円形輪郭上に横たわるグラジェント領域の画素に対応する色値の平均値である。グラジェント領域の各画素を再走査して、画素の座標と中心の間の距離を計算し、半径を使用して、距離の値を0と1の間のグラジェント単位パラメータ空間値に変換する。グラジェント領域の画素座標を(X1, Y1)とすると、中心(Xc, Yc)までの距離は次式で表される。
距離 = √{(Xc - X1)2 + (Yc - Y1)2}
【００５１】
画像→放射状グラジェント空間変換を使用して、距離は、グラジェント単位パラメータ空間にマップされる。
P = 距離/半径
【００５２】
この位置を、サブステップ222と同様に、色バケットアレイに写像する。グラジェント画素の色成分をバケットの累算器に加算し、バケットのカウントをインクリメントする。
【００５３】
サブステップ220または230が完了すると、処理は、サブステップ240（ストップ生成サブステップ）に進む。サブステップ240は、サブステップ222または233から色バケットのランプアレイを得て、グラジェント単位パラメータ空間（0→1）の色ストップのリストを作成する。
【００５４】
サブステップ241は、色バケットアレイを取得し、画素のカウントが小さ過ぎるエントリ（対応バケットが良好な平均値を得るのに充分なソース画像の画素を含まないことを示す）が以降の全処理において無視されるようにマークする。画素のカウントの設定可能な下限は三画素に設定することが好ましい。従って、非使用のエントリは、後続する処理に無視される。この時点で、各色成分の累算器は、そのバケットに寄与する全画素に亘る成分の平均（または代表）色値を取得するために、成分に寄与する画素数で割り算される。
【００５５】
残る色バケットは、迷い画素(stray pixel)、走査アーティファクト(artefact)およびアンチエイリアシング(anti-aliasing)効果などにより、色成分の多少のノイズを有する傾向がある。サブステップ242は、色ランプアレイを取得し、データのとくに悪いスパイクを除去するために、代表色値を超える部分に平滑化関数を実行する。平滑化演算は、幾つもある適切なアルゴリズムによって実現可能である。そのようなアルゴリズムの一つは、色バケット成分それぞれに注目して、現バケットと、前バケットおよび次バケットを比較する。もし、現バケットの値が隣接するバケットの値と大きく異なる場合、現バケットの値として隣接バケットの平均値を代用する。
【００５６】
サブステップ243は、平滑化された色ランプアレイを取得する。そして、色ストップがレンダリングされた場合に、色ストップの間で線形補間を使用してフルカラーグラジェントの区分的線形関数近似を形成するように、グラジェント単位パラメータ空間の個別点で色ランプを記述する色ストップのリストを作成する。従って、サブステップ243は、色ランプアレイの平滑化された代表色値から区分的線形色関数を生成する。サブステップ243は、色ランプアレイを開始から終了まで走査して、任意の色成分のグラジェントが著しく変化する変曲点を識別する度に色ストップを放出(emit)する。つまり、先に検討された点の色値の線形モデルに基づき予測される色成分値と、対応する代表色値の間の差が所定の閾値を超えると、色ストップは区分的線形色関数に追加される。この計算は、「最終」ポインタの維持と同様に、「現在」ポインタを色ランプアレイを介して移動することで実行される。最終ポインタは、アレイの始まりにおいて出発(start)し、色ストップが放出されると現位置に更新される。色ランプは、x軸が（第一の色ランプエントリがx=0、最終の色ランプエントリがx=1にある）グラジェント単位パラメータ空間であり、y軸がその色ランプバケットの色成分値を有する二次元平面において視覚化可能である。各成分は、この平面を横切る大雑把な線を描く。サブステップ243は、個別のサンプルから構成される、各色成分の線をベクトルポリラインに変換する。（現在の検討点を示す）現在ポインタをx=0から進め、現在ポインタと最終ポインタの間の各バケットの全色成分値が、所定の閾値内で、直線上にあるか、または、そのような線の充分近くにあるかを確認する。これは、現在ポインタが進む度に、各色成分について個々に実行される。二つのポインタの間の任意の色成分が上記の線の外にあれば、色ストップを放出し、最終ポインタを新しい色ストップの位置に移動する。このサブステップ243は、色ランプの終端に達するまで継続される。
【００５７】
ベクトル化フェーズ200は、線形色グラジェントの二つの端点（つまり先端）、または、放射状色グラジェントの中心点と半径（つまり一つ以上の制御点）の何れかを含むベクトルグラジェント情報14（またはベクトル記述）を出力して終了する。さらに、ベクトルグラジェント情報14は、正規化位置座標と色値をそれぞれ有する色ストップのリストを含む。上述したように、色ストップは、フル色グラジェントの区分的線形関数近似を形成するために使用可能である。
【００５８】
説明した構成の利点は、低容量のメモリの使用、高速レンダリング時間、および、出力ベクトルデータのグラジェントパラメータの迅速な変化を可能にすることを含む。
【産業上の利用可能性】
【００５９】
上記の構成がコンピュータおよびデータ処理産業に適用可能であることは、上述から明らかである。
【００６０】
上記は、本発明の幾つかの実施例の説明に過ぎず、本発明の範囲および趣旨を逸脱せずに変形および/または変更が可能であり、これら実施例は、例証するものであり、限定するものではない。
【図面の簡単な説明】
【００６１】
【図１】画像の一つ以上の色グラジェントのベクトル記述を生成する方法を示すフローチャート、
【図２】図1の方法のパス生成ステップを示すために使用するオブジェクトを表す図、
【図３】ラスタビットマップの塗り潰しを近似する従来の方法を示すために使用するオブジェクトを表す図、
【図４】図1の方法に従い、線形グラジェントのパラメータを見出す方法を示すために使用するオブジェクトを表す図、
【図５】図1の方法に従い、放射状グラジェントのパラメータを見出す方法を示すために使用するオブジェクトを表す図、
【図６】図1の方法を適用するシステムの概略を示すブロック図、
【図７】説明する方法を実施する汎用コンピュータの概略を示すブロック図である。
【図１】
0004726257.tif 000002
【図２】
0004726257.tif 000003
【図３】
0004726257.tif 000004
【図４】
0004726257.tif 000005
【図５】
0004726257.tif 000006
【図６】
0004726257.tif 000007
【図７】
0004726257.tif 000008