画像処理装置、画像処理方法、及び、プログラム
【課題】グラデーションを含む画像が入力された際に、ベクトル化対象の画像か否かを判別する。
【解決手段】色差に基づいて入力画像を複数の色領域に分割する分割手段と、前記分割された色領域間の境界における色勾配情報を、前記入力画像の色情報から算出する色勾配情報算出手段と、前記色勾配情報を用いて、前記境界における色勾配の特性を示すグラデーション属性を判定する属性判定手段と、前記属性判定手段にて判定された境界のグラデーション属性に基づき、当該入力画像をベクトル化対象とするか否かを判定するベクトル化対象判定手段とを備える。
【解決手段】色差に基づいて入力画像を複数の色領域に分割する分割手段と、前記分割された色領域間の境界における色勾配情報を、前記入力画像の色情報から算出する色勾配情報算出手段と、前記色勾配情報を用いて、前記境界における色勾配の特性を示すグラデーション属性を判定する属性判定手段と、前記属性判定手段にて判定された境界のグラデーション属性に基づき、当該入力画像をベクトル化対象とするか否かを判定するベクトル化対象判定手段とを備える。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は画像処理技術に関し、特に入力されたグラデーションを含む画像がベクトル化対象か否かの判定を行う画像処理技術に関する。
【背景技術】
【0002】
近年、一つの画像情報を異なる機器で用いる機会が増えてきている。このため機器間の送信コストを低減するための高圧縮性や、機器間の解像度の違いに対応するための高画質性も要求されている。またユーザの利便性に関しても、部分的に画像を再編集できる編集性といった面も要求されている。これによりラスタ形式で表現された画像を、解像度に依存せず再編集も容易なベクタ形式へ変換する、ベクトル化技術が必要となってきている。
【0003】
イラストやクリップアートのように色の違いがはっきりしている画像のベクトル化技術が特許文献1で開示されている。この手法では画像を入力し、色の類似度を使って入力画像の色数を減色する。そして次に得られた各色領域に対し輪郭線を抽出した後に関数近似を行い、色情報を加えてベクトルデータを出力する。
【0004】
また線形グラデーションや放射グラデーションを含むような画像に対するベクトル化技術が特許文献2で開示されている。この手法では画像中の各画素間の色勾配を算出し、その結果を用いてグラデーション領域を判別し、得られたグラデーション領域に対しほぼ同じ色の画素を有するパスを生成する。このパスにほぼ垂直な垂線を定義し、この垂線上に代表色値を計算し、ベクトル化を行うものである。
【0005】
しかし上記のような技術をもっても、写真等の複雑な色変化を伴う画像を入力しベクトル化した場合、画質の劣化や圧縮率の低下、処理時間の低下等を招いてしまう。そこで入力された画像をベクトル化対象とするか否かを判定する技術が特許文献3で開示されている。この手法では入力画像において色量子化によるクラスタリングを行い、得られたクラスタの数や、そのクラスタ内領域の色の分散の大きさを用いてベクトル化対象判定を行う。しかし、この手法では色の分散の大きさを用いてベクトル化対象か否かを判定するため、特許文献2で開示されているような技術でベクトル化可能なグラデーション領域のみで構成された画像であっても写真領域と判定されてしまう。
【0006】
ベクトル化対象か否かを判定する別の手法として、特許文献4が挙げられる。この手法では、入力画像において色量子化によるクラスタリングを行い、得られたクラスタマップにおいて連結領域を得るラベリングを行い、得られたラベルの数や、ラベル内の画素数を用いてベクトル化対象判定を行う。しかし、この手法では微小領域が多数発生するような画像を判別する事は出来るが、グラデーションを含む画像が入力された場合にベクトル化対象か否かを判定することはできない。
【0007】
したがって、画像中のグラデーション領域がベクトル化対象か否かを判定する技術はこれまでなかった。
【先行技術文献】
【特許文献】
【0008】
【特許文献1】特開2006−344069号公報
【特許文献2】特開2007−272456号公報
【特許文献3】特開2007−158725号公報
【特許文献4】特開2010−146218号公報
【発明の概要】
【発明が解決しようとする課題】
【0009】
本発明は、上記課題を鑑みてなされたものであり、グラデーションを含む入力画像がベクトル化対象か否かの判定を行う。
【課題を解決するための手段】
【0010】
上記課題を解決するために、本発明に係る画像処理装置は以下の構成を備える。すなわち、色差に基づいて入力画像を複数の色領域に分割する分割手段と、前記分割された色領域間の境界における色勾配情報を、前記入力画像の色情報から算出する色勾配情報算出手段と、前記色勾配情報を用いて、前記境界における色勾配の特性を示すグラデーション属性を判定する属性判定手段と、前記属性判定手段にて判定された境界のグラデーション属性に基づき、当該入力画像をベクトル化対象とするか否かを判定するベクトル化対象判定手段とを備える。
【発明の効果】
【0011】
本発明によれば、グラデーションを含む入力画像がベクトル化対象か否かの判定(すなわち、ベクトル化に適した画像か否かの判定)を行えるようになる。
【図面の簡単な説明】
【0012】
【図1】画像処理装置のメイン処理を示すフローチャート。
【図2】画像処理装置のブロック構成図。
【図3】第一実施形態に係る境界色勾配情報の例を示す図。
【図4】第一実施形態に係る境界色勾配情報算出フローを示す図。
【図5】第一実施形態に係るラスタスキャンを行う際の着目画素と比較画素を示す図。
【図6】第一実施形態に係る色勾配を算出する窓関数を示す図。
【図7】第一実施形態に係る属性判定処理フローを示す図。
【図8】第一実施形態に係る放射グラデーションの入力例とその色領域識別結果を示す図。
【図9】第一実施形態に係る線形グラデーションの入力例とその色領域識別結果を示す図。
【図10】第一実施形態に係る複雑グラデーションの入力例とその色領域識別結果を示す図。
【図11】第一実施形態に係るグラデーションクラスタ情報生成処理フローを示す図。
【図12】第一実施形態に係るグラデーションクラスタ情報生成処理の具体例を示す図。
【図13】第一実施形態に係る図12の境界色勾配情報及び境界属性を示す図。
【図14】第一実施形態に係る図12のグラデーションクラスタ情報を示す図。
【図15】第一実施形態に係る線形グラデーションパラメータ生成の概念図。
【図16】第一実施形態に係る線形グラデーションパラメータの具体例を示す図。
【図17】第一実施形態に係る放射グラデーションパラメータ生成の概念図。
【図18】第一実施形態に係る放射グラデーションパラメータの具体例を示す図。
【図19】第一実施形態に係る色領域統合処理後の新しい色領域識別結果の具体例を示す図。
【図20】第一実施形態に係るベクトル化対象判定処理フローを示す図。
【図21】第一実施形態に係る残疑似輪郭が発生する具体例を示す図。
【図22】第一実施形態に係る図21の境界色勾配情報及び境界属性を示す図。
【図23】第一実施形態に係る図21のグラデーションクラスタ情報を示す図。
【図24】第二実施形態に係るメイン処理を示すフローチャート。
【図25】第三実施形態に係るベクトル化対象判定処理フローを示す図。
【発明を実施するための形態】
【0013】
<第一実施形態>
以下、添付の図面を参照して本発明に係る実施形態を説明する。ただし、この実施形態に記載されている構成要素はあくまで例示であり、本発明の技術的範囲は、特許請求の範囲によって確定されるのであって、以下の個別の実施形態によって限定されるわけではない。
【0014】
[機器構成]
本実施形態の画像処理装置の構成例について、図2のブロック図を参照して説明する。図2において、CPU(Central Processing Unit)7は、装置全体を制御する。ROM(Read Only Memory)6は、変更を必要としないプログラムやパラメータを格納する。RAM(Random Access Memory)5は、外部装置等から供給されるプログラムやデータを一時記憶する。スキャナ1は、文書等を光電走査して電子的な画像データを得て入力データとし、画像入出力I/O3はこのスキャナ1と画像処理装置を接続する。画像メモリ2は、スキャナ1で読み取られた画像データ等を保持する。外部記憶装置12は、固定して設置されたハードディスクやメモリカード、あるいは着脱可能なフレキシブルディスク(FD)やCD(Compact Disk)等の光ディスク、磁気や光カード、ICカード、メモリカード等を含む。また、I/O13は、これら外部記憶装置12とコンピュータ装置との入出力インタフェース。I/O15は、ユーザの操作を受け、データを入力するマウス等のポインティングデバイス10やキーボード9等の入力デバイスとの入出力インタフェースである。映像I/O14は、画像処理装置の保持するデータや供給されたデータを表示するためのディスプレイモニタ8との入出力インタフェースである。通信I/F4は、インターネット等のネットワーク回線に接続するためのインタフェースである。システムバス11は、画像処理装置内の各ユニットを通信可能に接続する。
【0015】
[処理フロー]
以下、CPU7上で実行されるプログラムにより本願発明を実現する処理手順を、図1のフローチャートを用いて説明する。
【0016】
図1のフローチャートにおいて、S100で処理を開始すると、処理対象となる画像領域を含む画像データを入力する。画像入力に関しては、図2のスキャナ1にて読み取られた画像データを画像入出力I/O3を介して画像メモリ2に入力する。また、通信I/F4を介して、装置外部より処理対象となる画像領域を含む画像を入力してもよく、あるいは、外部記憶装置12に予め記憶される画像データをI/O13を介して読み込んでもよい。得られた入力画像は、画像メモリ2上に保持される。
【0017】
[色領域識別処理]
次に読み取った画像データに対してS200で色領域識別処理を行う。スキャナなどの入力手段を用いた場合、入力画像にノイズが重畳され、代表色の特定が難しいことが起こりうる。この場合、減色処理を行い、色差が小さい画素をまとめて同じ色情報を有するようにすることで、同色領域として、複数の色領域に分割することができる。まず、S201では入力画像に対して減色処理を施すことで、上記問題を解消することができる。例えば特許文献1で開示されている手法では、入力画像中の画素から色情報を元にクラスタを構成し、類似するクラスタやノイズと思われるクラスタを統合することでスキャンノイズを除去するものがある。これを適用することで、スキャン画像入力等で生じるノイズ除去することができる。なお、ノイズ除去の方法については、他の手法を用いても構わない。
【0018】
次にS202でラベリング処理を行うことにより色領域を抽出する。ラベリング処理は連結する同じ値を有する画素集合に同一の番号(識別情報)を付与する処理であり、各色領域の情報(面積、形状)を取得するための前処理としてよく用いられる。ここでは色領域を後処理で識別できるようにするための識別番号、即ちラベルを付与する。以上、S201とS202とにより、図1における色領域識別処理(S200)を実現している。
【0019】
[境界色勾配情報算出処理]
次にS300ではS200における色領域識別結果を基に、境界色勾配情報算出処理を行う。ここでは図3に示すように境界の情報と色勾配の情報を、各色領域の境界ごとに得る。今後、図3に示した情報を「境界色勾配情報」と呼称し説明する。また境界色勾配情報は図3に示したように、境界番号、境界を挟むラベルAとラベルB(すなわち当該境界を挟む2つの色領域の情報)、境界長、上下左右の各方向色勾配強度、平均色勾配の情報を含む。
【0020】
S300の詳細なフローを、図4を用いて説明する。尚、ラスタスキャンを説明する際の言葉の定義として、図5に示すように着目画素をPt、横方向の比較画素をPr1、縦方向の比較画素をPr2と呼称することとする。
【0021】
まずS301ではCPU7は、Ptをラスタスキャンの始点Pstartに設定する。ここではPstartを入力画像に含まれる画素のうち、最も左上に位置する画素とする。次にS302ではCPU7は、PtのラベルとPr1のラベルとが同一か否かを判定する。同一ではない場合は(S302にてYES)S303に移り、同一の場合は(S302にてNO)S305に移る。
【0022】
次にS303ではCPU7は、窓関数を用いて横方向の色勾配を算出する。この時、色勾配を算出するための色値は保持された入力画像から取得される。ここでは、図6(a)の窓関数を用いてRGB値におけるR値、G値、B値それぞれに対する値dr、dg、dbの算出を行い、求めた値の中で絶対値が最大となる値を色勾配dcとする。例えば図6(a)の各画素位置の(R,G,B)をそれぞれ以下の値とする。
Pc1:(30,20,10)
Pt:(40,15,8)
Pc2:(80,10,6)
Pc3:(90,5,4)
【0023】
この時の図6(a)の窓関数により、値dr、dg、dbは下記に示すようになる。
dr=(−2×30)+(−1×40)+(1×80)+(2×90)=160
dg=(−2×20)+(−1×15)+(1×10)+(2×5)=−35
db=(−2×10)+(−1×8)+(1×6)+(2×4)=−14
【0024】
よってこの場合は、drの絶対値が最大となるため、色勾配dcは“160”となる。またこの時、色勾配dcが正である場合は左方向の色勾配、負である場合は右方向の色勾配であると定義する。もちろん、逆に定義しても構わない。尚、色勾配算出に用いる色値は、RGBやYCC等どの色空間のものでも良い。また色勾配を演算する色のコンポーネント数は例示したように一つに限定しても良いし、全てのコンポーネントを用いて算出しても良い。また、他の窓関数や、別の算出式を用いても構わない。以上の処理を終えた後、S304に移る。
【0025】
S304ではCPU7は、境界色勾配情報を更新する。まずCPU7は、参照中の境界をなす2つのラベルの組み合わせを、既存の境界色勾配情報(図3)に登録されている各境界に対するラベルの組み合わせと比較し、既に登録済みか否かを判定する。登録済みであった場合、CPU7は、該当する境界色勾配情報の境界長を1加算する。このとき、前ステップで得た色勾配dcをその方向に応じた項目に足し合わせる。前述の例の場合、色勾配dcは160であり、符号は正であるため左方向色勾配の項目に足し合わせる。未登録であった場合は、CPU7は、新しい境界色勾配情報を生成する。具体的にはCPU7は、参照中の境界をなす2つのラベルを境界色勾配情報のラベルA、ラベルBの項目に書き込む。そして、CPU7は、境界長に1を、色勾配dcをその方向に応じた項目にセットし、その他の値を全て0で初期化する。以上の処理を終えた後、S305に移る。
【0026】
次にS305では、CPU7は、PtのラベルとPr2のラベルとが同一か否かを判定する。同一ではない場合は(S305にてYES)S306に、同一の場合は(S305にてNO)S308に移る。
【0027】
S306では、CPU7は、窓関数を用いて縦方向の色勾配を算出する。例えば図6(b)に示すような窓関数を用いて算出する。この時、色勾配を算出するための色値はS303と同様に保持された入力画像から得る。色勾配の算出は、縦方向の窓関数を用いてS303と同様の手順で行う。この時、色勾配dcが正である場合は上方向の色勾配、負である場合は下方向の色勾配であると定義する。もちろん、逆に定義しても構わない。以上の処理を終えた後、S307に移る。
【0028】
S307では、CPU7は、境界色勾配情報を更新する。更新する手順はS304と同様である。以上の処理を終えた後、S308に移る。
【0029】
S308では、CPU7は、Ptがラスタスキャンの終点Pendに至ったか否かを判定する。ここではPendを入力画像に含まれる画素のうち、最も右下に位置する画素とする。PtがPendと同位置となった場合は(S308にてYES)S308に移り、同位置ではない場合は(S308にてNO)S309へ移る。
【0030】
S309では、CPU7は、着目画素を変更するため、Ptを一つずらし、S302に戻る。
【0031】
S310では、CPU7は、得られた境界色勾配情報を用いて、それぞれの平均色勾配を算出する。具体的には、CPU7は、境界色勾配情報における平均色勾配の項目に、上方向色勾配、下方向色勾配、右方向色勾配、左方向色勾配の値を全て足し合わせ、境界長で割った値を代入する。図3に示す境界nの場合、平均色勾配は、(1200+0+0+0)/6=200となる。これにより、図3に示した各値が境界の数だけ抽出できることになる。以上、S301からS310は図1における境界色勾配情報算出処理(S300)を実現している。
【0032】
尚、ここでは簡略化のため割愛したが、Ptが画像右端に至ったためPr1が得られない場合や、Ptが画像下端に至ったためPr2が得られない場合は比較を行わず次の処理へ遷移する。また同様にPtが画像端に至ったため窓関数分の画素値が得られない場合は窓関数の形状を変更してもよいし、算出を行わなくてもよい。
【0033】
[境界属性判定処理]
次にS400では境界色勾配情報を用いて境界属性の判定を行い、その属性の付記を行う。すなわち、当該判定した各境界の属性を、境界色勾配情報の各境界と関連付けて保存する。S400の詳細なフローを、図7を用いて説明する。
【0034】
まずS401では、CPU7は、境界色勾配情報を用いて、参照中の境界がエッジ境界か擬似輪郭境界かを判別する。ここでは前ステップまでで得た境界色勾配情報における平均色勾配が予め定められた閾値T1よりも大きい場合、エッジ境界であると判定する。閾値T1の一例としてはT1=20、等がある。この閾値T1は、経験的に求めてもよいし、任意の算出式により求めても構わない。平均色勾配が閾値T1以下であった場合、擬似輪郭境界と判定する。エッジ境界であると判定した場合(S401にてYES)、S402へ進み、擬似輪郭境界であると判定した場合(S401にてNO)、S407へ進む。なお、ここでの「擬似輪郭境界」とは、画像中のグラデーション内に形成される輪郭であり、処理上、グラデーションの領域を分割するために用いられる。
【0035】
CPU7は、S402とS403でグラデーションの属性判定を行う。ここでは参照中の擬似輪郭境界が、下記に示すいずれのグラデーション領域に属するものかを境界色勾配情報の特性を用いて、放射グラデーション、線形グラデーション、複雑グラデーションのいずれであるかを判定する。ここで、「放射グラデーション」とは、図8の(a)のようにある点を中心として色が同心円状に移り変わっていくグラデーションを指す。また「線形グラデーション」とは、図9の(a)や(c)のように色が一定の方向に移り変わっていくグラデーションを指す。また「複雑グラデーション」とは、図10(a)のように放射グラデーションや線形グラデーションに属さないグラデーションを指す。
【0036】
まずS402では、CPU7は、参照中の擬似輪郭境界が放射グラデーションに属するか否かを判別する。図8(a)に示すような放射グラデーションに対し色領域識別処理(S200)をした場合、図8(b)に示すような色領域識別結果が得られる。このような色領域識別結果に基づいて境界色勾配情報算出処理(S300)を実行することにより各境界の色勾配を算出すると、図8(b)に示したように、境界ごとに算出される上下左右全ての勾配方向に対し色勾配がほぼ均一の値をとる。これは放射グラデーションの色勾配が同心円状に、つまり全ての勾配方向に一定の値を取るためである。この特性を利用し、S402において、CPU7は、参照中の擬似輪郭境界の境界色勾配情報が下記の条件全てを満たした場合、放射グラデーション属性と判定する。
条件1:上方向色勾配×閾値T2>下方向色勾配
条件2:下方向色勾配×閾値T2>上方向色勾配
条件3:右方向色勾配×閾値T2>左方向色勾配
条件4:左方向色勾配×閾値T2>右方向色勾配
条件5:上方向色勾配×閾値T2>右方向色勾配
条件6:右方向色勾配×閾値T2>上方向色勾配
【0037】
上記6つの条件を満たした場合、擬似輪郭境界の上下左右全ての勾配方向に対し色勾配がほぼ均一であるとみなし、放射グラデーション属性とする。閾値T2の一例としてはT2=2、等がある。この閾値T2は、経験的に求めてもよいし、任意の算出式により求めても構わない。放射グラデーションと判定された場合(S402にてYES)、S404に移る。放射グラデーションではないと判定された場合(S402にてNO)、S403に移る。
【0038】
S403では、CPU7は、参照中の擬似輪郭境界が線形グラデーション属性によるものか否かを判別する。図9(a)または図9(c)に示すように線形グラデーションを入力した場合、図9(b)または図9(d)に示すような色領域識別結果が得られる。このような色領域識別結果に基づいて境界色勾配情報算出処理を実行することにより各境界の色勾配を算出すると、図9(b)に示したように上下左右の色勾配の内一つの勾配方向、もしくは、図9(d)のように相対しない二つの勾配方向が、大きな値を取る。これは線形グラデーションの色勾配が一定の勾配方向を取るためである。この特性を利用し、S403において、CPU7は参照中の擬似輪郭境界の境界色勾配情報が下記の条件7(7.1〜7.3)か、条件8(8.1〜8.5)のいずれかを満たした場合、線形グラデーション属性と判定する。尚、上下左右の色勾配において、値が大きい順番にG1、G2、G3、G4とする。
【0039】
(条件7)
条件7.1:G1>閾値T3×G2
条件7.2:G1>閾値T3×G3
条件7.3:G1>閾値T3×G4
【0040】
(条件8)
条件8.1:G1>閾値T4×G3
条件8.2:G1>閾値T4×G4
条件8.3:G2>閾値T4×G3
条件8.4:G2>閾値T4×G4
条件8.5:G1の方向とG2の方向が相対でない。
【0041】
閾値T3、T4の例としてはT3=3、T4=2、等がある。この閾値T3およびT4は、経験的に求めてもよいし、任意の算出式により求めても構わない。上記条件7もしくは条件8のいずれかを満たし線形グラデーションと判定された場合(S403にてYES)、S405に移る。線形グラデーションではないと判定された場合(S403にてNO)、S406に移る。
【0042】
次にS404、S405、S406、S407ではそれぞれ判定した属性が境界毎に境界属性情報へ付記される。つまり、S404では、CPU7は、当該判定対象の境界に対して放射グラデーション属性を付記する。S405では、CPU7は、当該判定対象の境界に対して線形グラデーション属性を付記する。S406では、CPU7は、当該判定対象の境界に対して複雑グラデーション属性を付記する。S407では、CPU7は、当該判定対象の境界に対してエッジ属性を付記する。S404、S405、S406、S407いずれかの処理が終了した後、本処理フローを終了する。以上、S401からS407の処理は、図1における境界属性判定処理(S400)を実現している。
【0043】
[グラデーションクラスタ情報生成処理]
次にS500では、同種(同属性)のグラデーションで表現されているグラデーション領域を同定し、グラデーション領域に対応するクラスタ情報を生成するためのグラデーションクラスタ情報生成処理を行う。本実施形態において、グラデーションクラスタ情報は、グラデーション領域内の色領域を指すラベルのリスト、グラデーション領域内の境界のリスト、対応するグラデーション領域の種別を含む。S500の詳細を、図11の処理フローと、図12(a)が入力画像として入力された場合の具体例とを用いて説明する。
【0044】
図12(a)が入力された場合、色領域識別処理(S200)により、図12(b)に示す色領域識別結果が得られる。この結果に対し、境界色勾配情報算出処理(S300)、境界属性判定処理(S400)を行うと図13に示すような情報が得られる。以下、入力された情報において、着目する境界をBtとして記載する。
【0045】
S501では、CPU7は、参照中の境界Btが未処理かどうかを判定する。この処理は後の処理であるグラデーションクラスタ情報生成の際に優先して処理される境界があるため、処理された境界を再度処理しないようにするために必要となる。未処理であると判定された場合は(S501にてYES)、S502に移り、処理済みであると判定された場合は(S501にてNO)、S506に移る。
【0046】
S502では、CPU7は、参照中の境界Btを成している二つのラベル領域が未処理かどうかを判定する。この処理もS501と同様に、後の処理であるグラデーションクラスタ情報生成の際に優先して処理される境界があり、処理された境界をなす二つのラベルを再度処理しないようにするために必要となる。境界Btをなすラベル(すなわち境界Btを挟む2つのラベル領域)が未処理であると判定された場合は(S502にてYES)S503に移り、処理済みであると判定された場合は(S502にてNO)S506に移る。
【0047】
S503では、CPU7は、境界属性の判定を行う。参照中の境界Btに関連付けられている属性が「線形グラデーション」であった場合はS504へ、「放射グラデーション」であった場合はS505へ、それ以外の場合はS506へそれぞれ移る。
【0048】
S504では、CPU7は、線形グラデーションクラスタ情報の生成を行う。ここではまず、CPU7は、参照中の境界Btの境界番号を線形グラデーションクラスタ情報に登録する。次にCPU7は、参照中の境界Btをなす2つのラベルを線形グラデーションクラスタ情報に登録する。次にCPU7は、生成した線形グラデーションクラスタ情報固有の勾配角度を算出する。このときの勾配角度は、境界色勾配情報における上下左右の色勾配を用いて下記の式(1)を用いて求められる。
勾配角度=arctan((上方向色勾配−下方向色勾配)/(右方向色勾配−左方向色勾配)) ・・・(1)
【0049】
そして、CPU7は、生成した線形グラデーションクラスタ情報における種別に「線形グラデーション」をセットする。ここで、便宜上、線形グラデーションをセットされた境界のクラスタを線形グラデーションクラスタ情報Glと記載する。
【0050】
当該線形グラデーションクラスタ情報に登録した二つのラベルに対応する色領域の少なくともいずれかが更に他の色領域と接している場合、当該他の色領域との間の境界を順次評価し、当該他の色領域を線形グラデーションクラスタ情報に登録するか否かを判定していく。この処理を図13の例を用いて説明する。
【0051】
まず参照中の境界Btが図13の境界8であると仮定して説明する。この時、線形グラデーションクラスタ情報Glには境界8と、境界8を成すラベル5とラベル6が登録される。またこの場合の勾配角度は前述の式(1)により、以下のように求められる。
勾配角度=arctan((0−0)/(800−0))=0
【0052】
更に、図13の境界色勾配情報を参照すると、ラベル5は参照中の境界8以外に、境界4にも接していると判定される。そこで境界4が当該生成した線形グラデーションクラスタ情報Glに属するか否かを判別する。この時、境界4はその境界属性がエッジ属性であるため、線形グラデーションクラスタ情報Glには属さないと判別される。
【0053】
また、ラベル6は、参照中の境界8以外に、境界5と境界9とに接していると、図13の境界色勾配情報に基づいて判定される。境界5はエッジ属性であるために線形グラデーションクラスタ情報Glには属さないが、境界9は線形グラデーション属性である。よって、境界9が線形グラデーションクラスタ情報Glに属するかが判定される。具体的にはまず、境界9を成すラベル6、ラベル7が他のグラデーションクラスタ情報に含まれているか否かが判定される。他のグラデーションクラスタ情報に含まれている場合、境界9は生成中のグラデーションクラスタ情報に属さないと判別される。含まれていない場合、次の判定に移る。境界9の勾配角度は式(1)を用いて算出することができる。即ち境界9の勾配角度は以下のように算出される。
勾配角度=arctan((0−0)/(1200−0))=0
【0054】
ここで得られた勾配角度と、線形グラデーションクラスタ情報固有の勾配角度との差が閾値T5以内であった場合、当該境界およびそれを構成するラベルが線形グラデーションクラスタ情報に登録される。閾値T5は例えばT5=22.5、等がある。この閾値T5は、経験的に求めてもよいし、任意の算出式により求めても構わない。上述した図13の境界9の勾配角度と線形グラデーションクラスタ情報の勾配角度差は0であるため、境界9は線形グラデーションクラスタ情報Glに属する境界であると判定される。よって境界9と、境界9を成すラベル6とラベル7を線形グラデーションクラスタ情報Glに登録する。ただしラベル6は、実際には既に生成中の線形グラデーションクラスタ情報に登録済みであるため、ここではラベル7のみが登録される。なお、所定の閾値より大きいもしくは閾値以上などの判定については、閾値の設定に合わせて変更して構わない。
【0055】
次にラベル7が属している境界を同様に評価し、線形グラデーションとして登録していくと、図14に示すグラデーションクラスタ情報におけるグラデーションクラスタ2のような結果が得られる。図14の例では、グラデーションクラスタ2は、ラベル5,6,7,8の色領域で構成される線形グラデーションで、且つ勾配角度は0度である。なお、図14に示す「種別」とは、各境界が有するグラデーション属性に対応し、グラデーションクラスタが有する属性となる。以上の処理により、線形グラデーションクラスタ情報の生成を終えたら、S506に移る。
【0056】
S505ではCPU7は、放射グラデーションクラスタ情報の生成を行う。ここではまず、CPU7は、参照中の境界Btの境界番号を放射グラデーションクラスタ情報に登録する。次にCPU7は、参照中の境界Btをなす2つのラベルをグラデーションクラスタ情報に登録する。次にCPU7は、生成した放射グラデーションクラスタ情報には勾配角度を要しないためダミーの値を初期値として代入する。そしてCPU7は、生成した放射グラデーションクラスタ情報における種別に「放射グラデーション」をセットする。ここで、便宜上、放射グラデーションをセットされた境界のクラスタを線形グラデーションクラスタ情報Grと記載する。
【0057】
当該放射グラデーションクラスタ情報に登録した二つのラベルに対応する色領域の少なくともいずれかが更に他の色領域と接している場合、CPU7は、当該他の色領域との間の境界を順次評価し、当該他の色領域を放射グラデーションクラスタ情報に登録するか否かを判定していく。この処理を図13の例を用いて説明する。
【0058】
まず参照中の境界Btが図13の境界2であると仮定して説明する。この時、放射グラデーションクラスタ情報Grには境界2と、境界2を成すラベル2、ラベル3が登録される。更に、図13の境界色勾配情報を参照して、ラベル2は参照中の境界2以外に、境界1にも接していると判定される。そこで境界1が当該生成した放射グラデーションクラスタ情報Grに属するか否かを判別される。この時、境界1はその境界属性がエッジ属性であるため、放射グラデーションクラスタ情報Grには属さないと判別される。
【0059】
また、ラベル3は参照中の境界2以外に、境界3に属していると、図13の境界色勾配情報に基づいて判定される。境界3は放射グラデーション属性である。よって境界3が放射グラデーションクラスタ情報Grに属するかを判定する。具体的には、境界3を成すラベル3、ラベル4が他のグラデーションクラスタ情報に含まれているか否かを判定する。他のグラデーション情報に含まれている場合、境界3は生成中のグラデーションクラスタ情報に属さないと判別する。含まれていない場合、境界3と、境界3を成すラベルを放射グラデーションクラスタ情報Grに登録する。ただしラベル3は実際には生成中の放射グラデーションクラスタ情報に既に登録済みであるため、ここではラベル4のみが登録される。
【0060】
次にラベル4が属している境界を同様に評価し、放射グラデーションとして登録していくと、図14に示すグラデーションクラスタ情報におけるグラデーションクラスタ1のような結果が得られる。図14のグラデーションクラスタ1は、ラベル2,3,4の色領域で構成される放射グラデーションクラスタとして登録されている。以上の処理により、放射グラデーションクラスタ情報の生成を終えたら、S506に移る。
【0061】
S506では、CPU7は、参照中の境界が最後の境界かを判定する。最後の境界である場合は(S506にてYES)そのまま処理を終え、最後の境界でない場合は(S506にてNO)S507に移る。S507ではCPU7は、参照中の境界を次の境界へ更新し、S501に移る。以上のS501からS507により、図1におけるグラデーションクラスタ情報生成処理(S500)を実現している。
【0062】
[グラデーションパラメータ生成処理]
次にS600では、グラデーションクラスタ情報毎にグラデーションのパラメータ生成を行う、グラデーションパラメータ生成処理を行う。ここでは色領域識別結果と、グラデーションクラスタ情報、及び境界色勾配情報を用いて、線形グラデーションと放射グラデーションのパラメータ生成を行う。
【0063】
まずグラデーションクラスタ情報における種別が、「線形グラデーション」の場合のパラメータの生成方法の詳細を説明する。例として図12の線形グラデーション領域におけるパラメータ生成の概念図である図15を示す。ここで生成する線形グラデーションのパラメータは、グラデーション端点を定義する始点ps、終点pe、及び色の移り変わりを定義するオフセットである。尚、オフセットは、位置情報としてグラデーション領域中の相対位置を示すオフセット値と、相対位置における色を定義する色値を含む。
【0064】
まず、線形グラデーション領域(線形グラデーションクラスタ情報に登録されたラベルで構成される領域)の外接矩形Rを求め、その外接矩形Rの重心Cを求める。なお、重心の求め方については、ここでは説明を省略する。次に求めた重心Cを通り、かつ角度θがグラデーションクラスタ情報に付記されている勾配角度となるベクトルvを求める。次に外接矩形Rとの交点をそれぞれ始点ps(a,b),終点pe(c,d)とする。次に求めたpsからpeまでの距離を求め、この距離を100に正規化するための定数Kを求める。即ち、以下の式(2)を用いて定数Kを求めることができる。
・・・(2)
【0065】
図15に示す例の場合、正規化するための定数Kは下記のようになる。
【0066】
次にグラデーションクラスタ情報に登録されているN個のラベルに対し、各ラベルに対応する色領域の重心Cln(n=1,2,…,N)をそれぞれ求める。図15に示す例の場合、Cl1〜Cl4が含まれる。次に求めた各色領域の重心Clnから、ベクトルvに対し法線を下ろし、その交点をオフセット点Ofn(n=1,2,…,N)としてそれぞれ導出する。図15に示す例の場合、Of1〜Of4が含まれる。そして、次に始点psから、オフセット点Ofnまでの距離dn(n=1,2,…,N)を算出し、前述の定数Kを掛け合わせた値をオフセット点Ofnにおけるオフセット値とする。
【0067】
図15の例で言うと、Of1(140,100)とps(100,100)との距離d1は40である。定数Kは前述で求めた通り0.5なので、Of1におけるオフセット値は0.5×40=20となる。最後にオフセット点Ofnに対応する色領域の平均色をオフセットの色値として用いる。図15の例の場合、以上の処理を全てのオフセット点Ofnに行うことで、図16に例示したような線形グラデーションパラメータを得ることができる。図16に示すように、本実施形態では、線形グラデーションパラメータには、グラデーションの端点情報(始点、終点の座標)、各オフセットの情報(オフセット値、色値)が含まれる。
【0068】
次にグラデーションクラスタ情報における種別が、「放射グラデーション」の場合のパラメータの生成方法の詳細を説明する。例として図12の放射グラデーション領域におけるパラメータ生成の概念図である図17を示す。ここで生成する放射グラデーションのパラメータは、グラデーション端点を定義する中心pcと半径r、及び色の移り変わりを定義するオフセットである。尚、オフセットはグラデーション領域中の相対位置を示すオフセット値と、相対位置における色を定義する色値を含む。
【0069】
まず、放射グラデーションクラスタ情報に登録されているN個のラベルに対し、それぞれ対応する色領域の外接矩形を求めその大きさ順でソートしたものをそれぞれRn(n=1,2,…,N)とする。つまり外接矩形は、図17の例の場合、R1,R2,R3のようになる。
【0070】
次に求めた外接矩形R1は最内郭に位置する色領域による外接矩形となるため、対応する色領域の重心を求め、その重心を放射グラデーションの中心pcとする。次に求めた外接矩形RNは最外郭に位置する色領域による外接矩形となるため、その外接矩形の右端を定義する直線LRNから、中心pcまでの距離を半径rとする。図17の例の場合、中心pc(200,100)から最外郭に位置する色領域の外接矩形R3の右端を定義する直線LR3(x=280)までの距離が80となり、この値を半径rとする。
【0071】
次に半径rを100に正規化するための定数Kを求める。即ち、式(3)を参照して求めると、以下のように求められる。
・・・(3)
【0072】
図17の例で言えば、正規化するための定数Kは下記のようになる。
【0073】
次に放射グラデーションのオフセットOfn(n=1,2,…,N)を求める。放射グラデーションにおけるオフセットは、まず一つ目のオフセット点Of1を中心pcと同一の点とし、オフセット値を0とする。そして二つ目からのオフセット点の生成方法を説明する。
【0074】
まず中心pcを通り、x軸に水平な直線Lcを定義する。そして次に生成中のオフセット点がi番目(i=2,3,…,N)であるとすると、外接矩形Ri−1の右端を定義する直線LRi−1と外接矩形Riの右端を定義する直線LRiとの中間を通る直線Lmiを算出する。次に求めた直線Lmiと直線Lcとの交点を求め、この交点をオフセット点Ofiとする。図17の例の場合、中心pc(200,100)を通り、x軸に水平な直線Lcはy=100となる。そしてi=2の時、直線LR1(x=220)と直線LR2(x=260)の中間を通る直線Lm2はx=240となる。よってオフセット点Of2は直線Lcと直線Lm2の交点である(240,100)となる。以上の処理により、ラベルの数N個分だけオフセット点Ofnが生成される。図17bに示す例の場合、Of1〜Of3が含まれる。
【0075】
次に中心pcから、オフセット点Ofnまでの距離dn(n=1,2,…,N)を算出し、前述の定数Kを掛け合わせた値をオフセット点Ofnにおけるオフセット値とする。図17の例の場合、Of1は中心pcと同一点なので距離d1=0となり、定数Kに関わらずオフセット値は0となる。Of2(240,100)と中心pc(200,100)との距離d2は40である。定数Kは前述で求めた通り、1.25なので、Of2におけるオフセット値は1.25×60=50となる。最後にオフセット点Ofnに対応する色領域の平均色をオフセットの色値として用いる。
【0076】
以上の処理を全てのオフセット点Ofnに行うことで、図18に例示したような放射グラデーションパラメータを得ることができる。図18に示すように、本実施形態では、放射グラデーションパラメータには、放射グラデーションの中心座標、半径、各オフセットの情報(オフセット値、色値)が含まれる。以上の処理は図1におけるグラデーションパラメータ生成処理(S600)を実現している。
【0077】
[色領域統合処理]
次にS700ではグラデーションクラスタ情報毎にラベルの指す色領域を一つに統合する、色領域統合処理を行う。この処理では各グラデーションクラスタ情報に登録されているラベルを一つに統合し、新しい色領域識別結果を得る。図12と図14を用いて述べると、グラデーションクラスタ1にラベル2,3,4が登録されている。よってこのラベルが指す色領域を統合し、新しいラベルとしてラベル9を振り、一つの色領域とする。グラデーションクラスタ2に登録されているラベル5,6,7,8に関しても同様に統合し、新しいラベルとしてラベル10を振る。以上の処理を行うと、図19に示すようなラベルが付与された各色領域が新たに得られ、原画にないような擬似輪郭境界は消える。また、グラデーションクラスタ情報に基づき、ラベル9は放射グラデーションの領域であり、ラベル10は線形グラデーションの領域であることが分かる。この処理により、図1における色領域統合処理(S700)を実現する
[ベクトル化対象判定]
次にS800では境界色勾配情報、境界属性情報、およびグラデーションクラスタ情報を用いて、処理中の画像がベクトル化の対象範囲内か否かを判定する、ベクトル化対象判定を行う。ここで、エッジ属性ではないにも関わらず、いずれのグラデーションクラスタ情報にも属していない境界を「残疑似輪郭」と呼称する。このステップでは残疑似輪郭を判定し、その全ての境界長を加算した値Lをもってベクトル化対象判定を行う。以下から図20を使ってS800の詳細を説明する。
【0078】
まずS801では、CPU7は、残疑似輪郭の境界長の値Lを“0”で初期化する。この処理を終えた後、S802へ移る。次にS802で、CPU7は、参照中の境界Btの境界属性がエッジ属性か否を判定する。境界Btの境界属性がエッジ属性の場合は(S802にてNO)S805へ、エッジ属性でない(S802にてYES)場合はS803へ移る。
【0079】
次にS803では、CPU7は、参照中の境界Btの境界番号がグラデーションクラスタ情報に登録されているかを判定する。境界番号がグラデーションクラスタ情報に登録されている場合は(S803にてNO)S805へ、登録されていない場合は(S803にてYES)804へ移る。次にS804では、CPU7は、参照中の境界Btの境界長を、残疑似輪郭の境界長の値Lに加算する。その後、S805へ移る。
【0080】
次にS805では、CPU7は、参照中の境界Btが最後の境界かを判定する。最後の境界である場合は(S805にてYES)S807へ、最後の境界でない場合は(S805にてNO)S806に移る。S806では、CPU7は、参照中の境界Btを次の境界へ更新し、S802へ戻る。
【0081】
次にS807では、CPU7は、全ての残疑似輪郭の境界長が加算された値Lが、予め定められた閾値T6よりも小さいか否かを判定する。つまり、残擬似輪郭の境界長の総和であるLが所定の閾値よりも小さいか否かで判定する。Lが閾値T6よりも小さい場合(S807にてYES)、S808に移り、CPU7は処理中の画像がベクトル化対象であると判定し、処理を終える。Lが閾値T6以上である場合(S807にてNO)、S809に移り、CPU7は処理中の画像がベクトル化対象外であると判定し、処理を終える。ここで用いられる閾値T6は例えば、T6=入力画像の高さ×入力画像の幅/2、等がある。なお、この閾値T6は、経験的に求めてもよいし、他の算出式により求めても構わない。以上の処理により、処理中の画像がベクトル化対象か否かを判定することができる。
【0082】
[判定処理における具体例]
ここで、図12、図13、図14の具体例を用いて、この処理を説明する。図12(a)は入力画像、図12(b)は入力画像の色領域識別結果であり、図13は図12の境界色勾配情報と境界属性、そして図14は図13を基に生成したグラデーションクラスタ情報である。また閾値T6を“100”とする。この条件を便宜的に「具体例1」と呼称する。
【0083】
具体例1において、まず図13に示すエッジ属性でない境界は、図14に示すように全てグラデーションクラスタ情報に登録されている。このためS801からS806までを処理すると、残疑似輪郭の境界長の値Lは初期値のままの“0”となる。そしてS807において、閾値T6とLとの比較を行う。L=0、T6=100なので、L<T6となり、具体例1における入力画像はベクトル化対象であると判定される。
【0084】
また、別の具体例である図21、図22、図23を用いて、この処理を説明する。図21(a)は入力画像、図21(b)は入力画像の色領域識別結果、図21(c)は色領域統合結果である。図22は図21の境界色勾配情報と境界属性、そして図23は図22を基に生成したグラデーションクラスタ情報である。また閾値T6を“100”とする。この条件を便宜的に「具体例2」と呼称する。
【0085】
まず、図22と図23を参照すると、境界番号の8,9,10がエッジ属性でないにも関わらずグラデーションクラスタ情報に登録されていない。このうち、境界番号8、境界番号9の境界に関しては、図21(b)を参照するとわかる通り、複雑なグラデーションによる境界となっているため、線形や放射のグラデーションベクトル化ができない。このためグラデーションクラスタ情報にも登録されておらず、「残疑似輪郭」となっている。
【0086】
これに対し、境界10は放射グラデーション属性と判定されているにも関わらず、グラデーションクラスタに登録されていない。これは、S500のグラデーションクラスタ生成処理に起因する。S500では、グラデーションクラスタ情報を生成する際、登録した色領域に隣接する色領域を順次評価し、同じグラデーションクラスタに登録するか否かを判定していく。この処理により、図21(b)におけるラベル4の色領域は、先に生成が開始される線形グラデーションクラスタに登録される。よってS505において放射グラデーションクラスタ情報を生成する際、放射グラデーション属性である境界10は、境界10を成すラベル4が他のグラデーションクラスタ情報に統合済みとなるため、放射グラデーションクラスタに登録しない。これにより、図21(c)の境界10のように境界属性が線形グラデーションや放射グラデーションであっても、異なるグラデーション領域が混在しているような場合には残疑似輪郭となり得る。よって、この具体例2において、S801からS806までを処理すると、境界番号の8,9,10の境界長を加算した総和として、“700”が残疑似輪郭の境界長の値Lとして得られる。
【0087】
そしてS807において、閾値T6とLとの比較を行う。L=700、T6=100なので、L>T6となるため、具体例2における入力画像はベクトル化対象外であると判定される。
【0088】
以上の処理により図1におけるベクトル化対象判定処理(S800)を実現している。この処理において入力画像がベクトル化対象と判定された場合はS900に移り、ベクトル化対象外と判定された場合はそのまま処理を終える。
【0089】
[輪郭ベクトル記述生成処理]
最後に図1のS900では、色領域輪郭のベクトル記述を生成する、輪郭ベクトル記述生成処理を行う。ここで輪郭ベクトルを求める対象となる色領域は、S700で得た色領域統合後に得られる色領域である。まず、S700で統合した後の色領域間の境界線を求め、当該境界線を関数近似することにより、各色領域の輪郭を表すベクトル記述(輪郭ベクトルデータ)を生成する。なお、隣接する色領域が接している区間ごとに境界線を関数近似してベクトル記述を求めることにより、隣接する色領域間で隙間や重なりが生じない輪郭のベクトル記述を得ることができる。図19の例の場合、ラベル1とラベル9の色領域間の境界線と、ラベル1とラベル10の色領域間の境界線とを求め、関数近似を行うことで、各色領域の輪郭のベクトル記述を得ることができる。
【0090】
そして、グラデーションクラスタに属するグラデーション領域に関しては、当該求めた色領域輪郭のベクトル記述と、S600で得たグラデーションをベクトル表現するためのグラデーションパラメータとを合わせて出力する。すなわち、色領域輪郭のベクトル記述で定義される輪郭内を当該グラデーションパラメータでグラデーション表現するように記述することによって、グラデーションを含む画像のベクトルデータ(グラデーション付き輪郭ベクトルデータ)を生成する。なお、グラデーション領域以外の色領域(エッジ属性の境界線で囲まれる単一色の色領域)に関しては、その色領域の輪郭のベクトル記述と、当該色領域内の代表色(例えば、当該色領域に含まれる画素の平均色)とを合わせて出力することによって、グラデーション領域以外の色領域のベクトルデータを生成する。
【0091】
以上説明したように、本発明では、ベクトル化対象の画像を判定することが可能となり、ベクトル化に適した画像を選別してベクトル化を行うことができる。
【0092】
<第二実施形態>
第一実施形態では、グラデーションクラスタ情報に登録されていない非エッジ属性の境界を残疑似輪郭として判定し、その残疑似輪郭の境界長を全て加算した値Lをベクトル化対象に判定で用いた。しかし第一実施形態の属性判定処理において複雑グラデーションと判定された境界は、その後の処理で統合されることはない。よって複雑グラデーションと判定された境界はその時点で残疑似輪郭となることが確定する。これを利用し、境界属性判定処理の直後にベクトル化対象判定処理を行う事が可能である。そこで本実施形態では、属性判定処理において複雑グラデーションと判定された境界を用いてベクトル化対象判定を行う。
【0093】
[処理フロー]
本実施形態におけるメイン処理フローを図24に示す。本処理フローは記憶部に格納されたプログラムをCPU7が実行することにより、実現される。まず、図24に示すS2100からS2400までは第一実施形態にて述べた図1のS100からS400の処理と同様の処理を行う。したがって、ここでは説明を省略する。
【0094】
次に、S2500において、CPU7は、ベクトル化対象判定を行う。まずここではCPU7は、S2400で複雑グラデーション属性と判定された境界を残疑似輪郭長と判定し、残疑似輪郭長の境界長を全て加算した総和である値L’を得る。そして第一実施形態にて述べたS800と同様に、CPU7は、L’と予め定められた閾値T7との比較を行う。そして、L’がT7よりも小さいと判定された場合、処理中の画像はベクトル化対象とし、S2600へ移る。L’がT7以上であると判定された場合、CPU7は処理中の画像をベクトル化対象外とし、そのまま処理を終える。閾値T7を求める式の例としては、T7=入力画像の高さ×入力画像の幅/3、等がある。なお、閾値T7は、経験的に求めてもよいし、他の算出式により求めても構わない。
【0095】
最後にS2600は、第一実施形態におけるS500、S600、S700、S900と同様の処理を行うことでベクトル化を行う。
【0096】
以上の処理により、属性判定処理を終えた段階でベクトル化対象判定を行うことができるため、ベクトル化対象外と判定された場合はその後の処理を省略でき、高速化につながる。
【0097】
<第三実施形態>
第一、および第二実施形態では、残疑似輪郭の境界長を用いてベクトル化対象判定を行った。しかしベクトル化対象判定には残疑似輪郭の長さではなく、残疑似輪郭の境界数を用いて行うこともできる。本実施形態における具体的なベクトル化対象判定の処理フローを、図25を用いて説明する。本処理は、第一実施形態の図20を用いて述べた処理に対応する。尚、ここでは説明のためベクトル化対象判定以外の処理は、第一実施形態と同様であるとする。本処理フローは、記憶部に記憶されたプログラムをCPU7が実行することにより実現される。
【0098】
まずS3801では、CPU7は、残疑似輪郭の境界数Nを“0”で初期化し、S3802へ移る。次にS3802で、CPU7は、参照中の境界Btの境界属性がエッジ属性か否を判定する。境界Btの境界属性がエッジ属性の場合は(S3802にてNO)S3805へ移り、エッジ属性以外の属性場合は(S3802にてYES)S3803へ移る。
【0099】
次にS3803では、CPU7は、参照中の境界Btの境界番号がグラデーションクラスタ情報に登録されているかを判定する。境界番号がグラデーションクラスタ情報に登録されている場合は(S3803にてNO)S3805へ移り、登録されていない場合は(S3803にてYES)S3804へ移る。S3804では、CPU7は、残疑似輪郭の境界数Nに1を加算し、S3805へ移る。
【0100】
S3805ではCPU7は、参照中の境界Btが最後の境界かを判定する。Btが最後の境界である場合は(S3805にてYES)S3807へ移り、最後の境界でない場合は(S3805にてNO)S3806に移る。S3806では、CPU7は、参照中の境界Btを次の境界に更新し、S3802に移る。
【0101】
S3807では、CPU7は、全ての残疑似輪郭の境界数Nが、予め定められた閾値T8以下か否かを判定する。Nが閾値T8以下であった場合(S3807にてYES)S3808に移り、CPU7は処理中の画像がベクトル化対象であると判定し、処理を終える。Nが閾値T8よりも大きかった場合(S3807にてNO)、S3809に移り、CPU7は処理中の画像がベクトル化対象外であると判定し、処理を終える。閾値T8は例えば、T8=0、1、および入力画像の高さ×入力画像/10000(小数点以下は切り捨て)、等で定義することができる。
【0102】
以上の処理により、残疑似輪郭の境界数を用いて処理中の画像がベクトル化対象か否かを判定することができる。
【0103】
<その他の実施形態>
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。
【0104】
また、本発明の画像処理装置は、上述した実施形態の各機能を実現する専用のハードウェア(ASICなど)を用いて構成するようにしてもよい。
【技術分野】
【0001】
本発明は画像処理技術に関し、特に入力されたグラデーションを含む画像がベクトル化対象か否かの判定を行う画像処理技術に関する。
【背景技術】
【0002】
近年、一つの画像情報を異なる機器で用いる機会が増えてきている。このため機器間の送信コストを低減するための高圧縮性や、機器間の解像度の違いに対応するための高画質性も要求されている。またユーザの利便性に関しても、部分的に画像を再編集できる編集性といった面も要求されている。これによりラスタ形式で表現された画像を、解像度に依存せず再編集も容易なベクタ形式へ変換する、ベクトル化技術が必要となってきている。
【0003】
イラストやクリップアートのように色の違いがはっきりしている画像のベクトル化技術が特許文献1で開示されている。この手法では画像を入力し、色の類似度を使って入力画像の色数を減色する。そして次に得られた各色領域に対し輪郭線を抽出した後に関数近似を行い、色情報を加えてベクトルデータを出力する。
【0004】
また線形グラデーションや放射グラデーションを含むような画像に対するベクトル化技術が特許文献2で開示されている。この手法では画像中の各画素間の色勾配を算出し、その結果を用いてグラデーション領域を判別し、得られたグラデーション領域に対しほぼ同じ色の画素を有するパスを生成する。このパスにほぼ垂直な垂線を定義し、この垂線上に代表色値を計算し、ベクトル化を行うものである。
【0005】
しかし上記のような技術をもっても、写真等の複雑な色変化を伴う画像を入力しベクトル化した場合、画質の劣化や圧縮率の低下、処理時間の低下等を招いてしまう。そこで入力された画像をベクトル化対象とするか否かを判定する技術が特許文献3で開示されている。この手法では入力画像において色量子化によるクラスタリングを行い、得られたクラスタの数や、そのクラスタ内領域の色の分散の大きさを用いてベクトル化対象判定を行う。しかし、この手法では色の分散の大きさを用いてベクトル化対象か否かを判定するため、特許文献2で開示されているような技術でベクトル化可能なグラデーション領域のみで構成された画像であっても写真領域と判定されてしまう。
【0006】
ベクトル化対象か否かを判定する別の手法として、特許文献4が挙げられる。この手法では、入力画像において色量子化によるクラスタリングを行い、得られたクラスタマップにおいて連結領域を得るラベリングを行い、得られたラベルの数や、ラベル内の画素数を用いてベクトル化対象判定を行う。しかし、この手法では微小領域が多数発生するような画像を判別する事は出来るが、グラデーションを含む画像が入力された場合にベクトル化対象か否かを判定することはできない。
【0007】
したがって、画像中のグラデーション領域がベクトル化対象か否かを判定する技術はこれまでなかった。
【先行技術文献】
【特許文献】
【0008】
【特許文献1】特開2006−344069号公報
【特許文献2】特開2007−272456号公報
【特許文献3】特開2007−158725号公報
【特許文献4】特開2010−146218号公報
【発明の概要】
【発明が解決しようとする課題】
【0009】
本発明は、上記課題を鑑みてなされたものであり、グラデーションを含む入力画像がベクトル化対象か否かの判定を行う。
【課題を解決するための手段】
【0010】
上記課題を解決するために、本発明に係る画像処理装置は以下の構成を備える。すなわち、色差に基づいて入力画像を複数の色領域に分割する分割手段と、前記分割された色領域間の境界における色勾配情報を、前記入力画像の色情報から算出する色勾配情報算出手段と、前記色勾配情報を用いて、前記境界における色勾配の特性を示すグラデーション属性を判定する属性判定手段と、前記属性判定手段にて判定された境界のグラデーション属性に基づき、当該入力画像をベクトル化対象とするか否かを判定するベクトル化対象判定手段とを備える。
【発明の効果】
【0011】
本発明によれば、グラデーションを含む入力画像がベクトル化対象か否かの判定(すなわち、ベクトル化に適した画像か否かの判定)を行えるようになる。
【図面の簡単な説明】
【0012】
【図1】画像処理装置のメイン処理を示すフローチャート。
【図2】画像処理装置のブロック構成図。
【図3】第一実施形態に係る境界色勾配情報の例を示す図。
【図4】第一実施形態に係る境界色勾配情報算出フローを示す図。
【図5】第一実施形態に係るラスタスキャンを行う際の着目画素と比較画素を示す図。
【図6】第一実施形態に係る色勾配を算出する窓関数を示す図。
【図7】第一実施形態に係る属性判定処理フローを示す図。
【図8】第一実施形態に係る放射グラデーションの入力例とその色領域識別結果を示す図。
【図9】第一実施形態に係る線形グラデーションの入力例とその色領域識別結果を示す図。
【図10】第一実施形態に係る複雑グラデーションの入力例とその色領域識別結果を示す図。
【図11】第一実施形態に係るグラデーションクラスタ情報生成処理フローを示す図。
【図12】第一実施形態に係るグラデーションクラスタ情報生成処理の具体例を示す図。
【図13】第一実施形態に係る図12の境界色勾配情報及び境界属性を示す図。
【図14】第一実施形態に係る図12のグラデーションクラスタ情報を示す図。
【図15】第一実施形態に係る線形グラデーションパラメータ生成の概念図。
【図16】第一実施形態に係る線形グラデーションパラメータの具体例を示す図。
【図17】第一実施形態に係る放射グラデーションパラメータ生成の概念図。
【図18】第一実施形態に係る放射グラデーションパラメータの具体例を示す図。
【図19】第一実施形態に係る色領域統合処理後の新しい色領域識別結果の具体例を示す図。
【図20】第一実施形態に係るベクトル化対象判定処理フローを示す図。
【図21】第一実施形態に係る残疑似輪郭が発生する具体例を示す図。
【図22】第一実施形態に係る図21の境界色勾配情報及び境界属性を示す図。
【図23】第一実施形態に係る図21のグラデーションクラスタ情報を示す図。
【図24】第二実施形態に係るメイン処理を示すフローチャート。
【図25】第三実施形態に係るベクトル化対象判定処理フローを示す図。
【発明を実施するための形態】
【0013】
<第一実施形態>
以下、添付の図面を参照して本発明に係る実施形態を説明する。ただし、この実施形態に記載されている構成要素はあくまで例示であり、本発明の技術的範囲は、特許請求の範囲によって確定されるのであって、以下の個別の実施形態によって限定されるわけではない。
【0014】
[機器構成]
本実施形態の画像処理装置の構成例について、図2のブロック図を参照して説明する。図2において、CPU(Central Processing Unit)7は、装置全体を制御する。ROM(Read Only Memory)6は、変更を必要としないプログラムやパラメータを格納する。RAM(Random Access Memory)5は、外部装置等から供給されるプログラムやデータを一時記憶する。スキャナ1は、文書等を光電走査して電子的な画像データを得て入力データとし、画像入出力I/O3はこのスキャナ1と画像処理装置を接続する。画像メモリ2は、スキャナ1で読み取られた画像データ等を保持する。外部記憶装置12は、固定して設置されたハードディスクやメモリカード、あるいは着脱可能なフレキシブルディスク(FD)やCD(Compact Disk)等の光ディスク、磁気や光カード、ICカード、メモリカード等を含む。また、I/O13は、これら外部記憶装置12とコンピュータ装置との入出力インタフェース。I/O15は、ユーザの操作を受け、データを入力するマウス等のポインティングデバイス10やキーボード9等の入力デバイスとの入出力インタフェースである。映像I/O14は、画像処理装置の保持するデータや供給されたデータを表示するためのディスプレイモニタ8との入出力インタフェースである。通信I/F4は、インターネット等のネットワーク回線に接続するためのインタフェースである。システムバス11は、画像処理装置内の各ユニットを通信可能に接続する。
【0015】
[処理フロー]
以下、CPU7上で実行されるプログラムにより本願発明を実現する処理手順を、図1のフローチャートを用いて説明する。
【0016】
図1のフローチャートにおいて、S100で処理を開始すると、処理対象となる画像領域を含む画像データを入力する。画像入力に関しては、図2のスキャナ1にて読み取られた画像データを画像入出力I/O3を介して画像メモリ2に入力する。また、通信I/F4を介して、装置外部より処理対象となる画像領域を含む画像を入力してもよく、あるいは、外部記憶装置12に予め記憶される画像データをI/O13を介して読み込んでもよい。得られた入力画像は、画像メモリ2上に保持される。
【0017】
[色領域識別処理]
次に読み取った画像データに対してS200で色領域識別処理を行う。スキャナなどの入力手段を用いた場合、入力画像にノイズが重畳され、代表色の特定が難しいことが起こりうる。この場合、減色処理を行い、色差が小さい画素をまとめて同じ色情報を有するようにすることで、同色領域として、複数の色領域に分割することができる。まず、S201では入力画像に対して減色処理を施すことで、上記問題を解消することができる。例えば特許文献1で開示されている手法では、入力画像中の画素から色情報を元にクラスタを構成し、類似するクラスタやノイズと思われるクラスタを統合することでスキャンノイズを除去するものがある。これを適用することで、スキャン画像入力等で生じるノイズ除去することができる。なお、ノイズ除去の方法については、他の手法を用いても構わない。
【0018】
次にS202でラベリング処理を行うことにより色領域を抽出する。ラベリング処理は連結する同じ値を有する画素集合に同一の番号(識別情報)を付与する処理であり、各色領域の情報(面積、形状)を取得するための前処理としてよく用いられる。ここでは色領域を後処理で識別できるようにするための識別番号、即ちラベルを付与する。以上、S201とS202とにより、図1における色領域識別処理(S200)を実現している。
【0019】
[境界色勾配情報算出処理]
次にS300ではS200における色領域識別結果を基に、境界色勾配情報算出処理を行う。ここでは図3に示すように境界の情報と色勾配の情報を、各色領域の境界ごとに得る。今後、図3に示した情報を「境界色勾配情報」と呼称し説明する。また境界色勾配情報は図3に示したように、境界番号、境界を挟むラベルAとラベルB(すなわち当該境界を挟む2つの色領域の情報)、境界長、上下左右の各方向色勾配強度、平均色勾配の情報を含む。
【0020】
S300の詳細なフローを、図4を用いて説明する。尚、ラスタスキャンを説明する際の言葉の定義として、図5に示すように着目画素をPt、横方向の比較画素をPr1、縦方向の比較画素をPr2と呼称することとする。
【0021】
まずS301ではCPU7は、Ptをラスタスキャンの始点Pstartに設定する。ここではPstartを入力画像に含まれる画素のうち、最も左上に位置する画素とする。次にS302ではCPU7は、PtのラベルとPr1のラベルとが同一か否かを判定する。同一ではない場合は(S302にてYES)S303に移り、同一の場合は(S302にてNO)S305に移る。
【0022】
次にS303ではCPU7は、窓関数を用いて横方向の色勾配を算出する。この時、色勾配を算出するための色値は保持された入力画像から取得される。ここでは、図6(a)の窓関数を用いてRGB値におけるR値、G値、B値それぞれに対する値dr、dg、dbの算出を行い、求めた値の中で絶対値が最大となる値を色勾配dcとする。例えば図6(a)の各画素位置の(R,G,B)をそれぞれ以下の値とする。
Pc1:(30,20,10)
Pt:(40,15,8)
Pc2:(80,10,6)
Pc3:(90,5,4)
【0023】
この時の図6(a)の窓関数により、値dr、dg、dbは下記に示すようになる。
dr=(−2×30)+(−1×40)+(1×80)+(2×90)=160
dg=(−2×20)+(−1×15)+(1×10)+(2×5)=−35
db=(−2×10)+(−1×8)+(1×6)+(2×4)=−14
【0024】
よってこの場合は、drの絶対値が最大となるため、色勾配dcは“160”となる。またこの時、色勾配dcが正である場合は左方向の色勾配、負である場合は右方向の色勾配であると定義する。もちろん、逆に定義しても構わない。尚、色勾配算出に用いる色値は、RGBやYCC等どの色空間のものでも良い。また色勾配を演算する色のコンポーネント数は例示したように一つに限定しても良いし、全てのコンポーネントを用いて算出しても良い。また、他の窓関数や、別の算出式を用いても構わない。以上の処理を終えた後、S304に移る。
【0025】
S304ではCPU7は、境界色勾配情報を更新する。まずCPU7は、参照中の境界をなす2つのラベルの組み合わせを、既存の境界色勾配情報(図3)に登録されている各境界に対するラベルの組み合わせと比較し、既に登録済みか否かを判定する。登録済みであった場合、CPU7は、該当する境界色勾配情報の境界長を1加算する。このとき、前ステップで得た色勾配dcをその方向に応じた項目に足し合わせる。前述の例の場合、色勾配dcは160であり、符号は正であるため左方向色勾配の項目に足し合わせる。未登録であった場合は、CPU7は、新しい境界色勾配情報を生成する。具体的にはCPU7は、参照中の境界をなす2つのラベルを境界色勾配情報のラベルA、ラベルBの項目に書き込む。そして、CPU7は、境界長に1を、色勾配dcをその方向に応じた項目にセットし、その他の値を全て0で初期化する。以上の処理を終えた後、S305に移る。
【0026】
次にS305では、CPU7は、PtのラベルとPr2のラベルとが同一か否かを判定する。同一ではない場合は(S305にてYES)S306に、同一の場合は(S305にてNO)S308に移る。
【0027】
S306では、CPU7は、窓関数を用いて縦方向の色勾配を算出する。例えば図6(b)に示すような窓関数を用いて算出する。この時、色勾配を算出するための色値はS303と同様に保持された入力画像から得る。色勾配の算出は、縦方向の窓関数を用いてS303と同様の手順で行う。この時、色勾配dcが正である場合は上方向の色勾配、負である場合は下方向の色勾配であると定義する。もちろん、逆に定義しても構わない。以上の処理を終えた後、S307に移る。
【0028】
S307では、CPU7は、境界色勾配情報を更新する。更新する手順はS304と同様である。以上の処理を終えた後、S308に移る。
【0029】
S308では、CPU7は、Ptがラスタスキャンの終点Pendに至ったか否かを判定する。ここではPendを入力画像に含まれる画素のうち、最も右下に位置する画素とする。PtがPendと同位置となった場合は(S308にてYES)S308に移り、同位置ではない場合は(S308にてNO)S309へ移る。
【0030】
S309では、CPU7は、着目画素を変更するため、Ptを一つずらし、S302に戻る。
【0031】
S310では、CPU7は、得られた境界色勾配情報を用いて、それぞれの平均色勾配を算出する。具体的には、CPU7は、境界色勾配情報における平均色勾配の項目に、上方向色勾配、下方向色勾配、右方向色勾配、左方向色勾配の値を全て足し合わせ、境界長で割った値を代入する。図3に示す境界nの場合、平均色勾配は、(1200+0+0+0)/6=200となる。これにより、図3に示した各値が境界の数だけ抽出できることになる。以上、S301からS310は図1における境界色勾配情報算出処理(S300)を実現している。
【0032】
尚、ここでは簡略化のため割愛したが、Ptが画像右端に至ったためPr1が得られない場合や、Ptが画像下端に至ったためPr2が得られない場合は比較を行わず次の処理へ遷移する。また同様にPtが画像端に至ったため窓関数分の画素値が得られない場合は窓関数の形状を変更してもよいし、算出を行わなくてもよい。
【0033】
[境界属性判定処理]
次にS400では境界色勾配情報を用いて境界属性の判定を行い、その属性の付記を行う。すなわち、当該判定した各境界の属性を、境界色勾配情報の各境界と関連付けて保存する。S400の詳細なフローを、図7を用いて説明する。
【0034】
まずS401では、CPU7は、境界色勾配情報を用いて、参照中の境界がエッジ境界か擬似輪郭境界かを判別する。ここでは前ステップまでで得た境界色勾配情報における平均色勾配が予め定められた閾値T1よりも大きい場合、エッジ境界であると判定する。閾値T1の一例としてはT1=20、等がある。この閾値T1は、経験的に求めてもよいし、任意の算出式により求めても構わない。平均色勾配が閾値T1以下であった場合、擬似輪郭境界と判定する。エッジ境界であると判定した場合(S401にてYES)、S402へ進み、擬似輪郭境界であると判定した場合(S401にてNO)、S407へ進む。なお、ここでの「擬似輪郭境界」とは、画像中のグラデーション内に形成される輪郭であり、処理上、グラデーションの領域を分割するために用いられる。
【0035】
CPU7は、S402とS403でグラデーションの属性判定を行う。ここでは参照中の擬似輪郭境界が、下記に示すいずれのグラデーション領域に属するものかを境界色勾配情報の特性を用いて、放射グラデーション、線形グラデーション、複雑グラデーションのいずれであるかを判定する。ここで、「放射グラデーション」とは、図8の(a)のようにある点を中心として色が同心円状に移り変わっていくグラデーションを指す。また「線形グラデーション」とは、図9の(a)や(c)のように色が一定の方向に移り変わっていくグラデーションを指す。また「複雑グラデーション」とは、図10(a)のように放射グラデーションや線形グラデーションに属さないグラデーションを指す。
【0036】
まずS402では、CPU7は、参照中の擬似輪郭境界が放射グラデーションに属するか否かを判別する。図8(a)に示すような放射グラデーションに対し色領域識別処理(S200)をした場合、図8(b)に示すような色領域識別結果が得られる。このような色領域識別結果に基づいて境界色勾配情報算出処理(S300)を実行することにより各境界の色勾配を算出すると、図8(b)に示したように、境界ごとに算出される上下左右全ての勾配方向に対し色勾配がほぼ均一の値をとる。これは放射グラデーションの色勾配が同心円状に、つまり全ての勾配方向に一定の値を取るためである。この特性を利用し、S402において、CPU7は、参照中の擬似輪郭境界の境界色勾配情報が下記の条件全てを満たした場合、放射グラデーション属性と判定する。
条件1:上方向色勾配×閾値T2>下方向色勾配
条件2:下方向色勾配×閾値T2>上方向色勾配
条件3:右方向色勾配×閾値T2>左方向色勾配
条件4:左方向色勾配×閾値T2>右方向色勾配
条件5:上方向色勾配×閾値T2>右方向色勾配
条件6:右方向色勾配×閾値T2>上方向色勾配
【0037】
上記6つの条件を満たした場合、擬似輪郭境界の上下左右全ての勾配方向に対し色勾配がほぼ均一であるとみなし、放射グラデーション属性とする。閾値T2の一例としてはT2=2、等がある。この閾値T2は、経験的に求めてもよいし、任意の算出式により求めても構わない。放射グラデーションと判定された場合(S402にてYES)、S404に移る。放射グラデーションではないと判定された場合(S402にてNO)、S403に移る。
【0038】
S403では、CPU7は、参照中の擬似輪郭境界が線形グラデーション属性によるものか否かを判別する。図9(a)または図9(c)に示すように線形グラデーションを入力した場合、図9(b)または図9(d)に示すような色領域識別結果が得られる。このような色領域識別結果に基づいて境界色勾配情報算出処理を実行することにより各境界の色勾配を算出すると、図9(b)に示したように上下左右の色勾配の内一つの勾配方向、もしくは、図9(d)のように相対しない二つの勾配方向が、大きな値を取る。これは線形グラデーションの色勾配が一定の勾配方向を取るためである。この特性を利用し、S403において、CPU7は参照中の擬似輪郭境界の境界色勾配情報が下記の条件7(7.1〜7.3)か、条件8(8.1〜8.5)のいずれかを満たした場合、線形グラデーション属性と判定する。尚、上下左右の色勾配において、値が大きい順番にG1、G2、G3、G4とする。
【0039】
(条件7)
条件7.1:G1>閾値T3×G2
条件7.2:G1>閾値T3×G3
条件7.3:G1>閾値T3×G4
【0040】
(条件8)
条件8.1:G1>閾値T4×G3
条件8.2:G1>閾値T4×G4
条件8.3:G2>閾値T4×G3
条件8.4:G2>閾値T4×G4
条件8.5:G1の方向とG2の方向が相対でない。
【0041】
閾値T3、T4の例としてはT3=3、T4=2、等がある。この閾値T3およびT4は、経験的に求めてもよいし、任意の算出式により求めても構わない。上記条件7もしくは条件8のいずれかを満たし線形グラデーションと判定された場合(S403にてYES)、S405に移る。線形グラデーションではないと判定された場合(S403にてNO)、S406に移る。
【0042】
次にS404、S405、S406、S407ではそれぞれ判定した属性が境界毎に境界属性情報へ付記される。つまり、S404では、CPU7は、当該判定対象の境界に対して放射グラデーション属性を付記する。S405では、CPU7は、当該判定対象の境界に対して線形グラデーション属性を付記する。S406では、CPU7は、当該判定対象の境界に対して複雑グラデーション属性を付記する。S407では、CPU7は、当該判定対象の境界に対してエッジ属性を付記する。S404、S405、S406、S407いずれかの処理が終了した後、本処理フローを終了する。以上、S401からS407の処理は、図1における境界属性判定処理(S400)を実現している。
【0043】
[グラデーションクラスタ情報生成処理]
次にS500では、同種(同属性)のグラデーションで表現されているグラデーション領域を同定し、グラデーション領域に対応するクラスタ情報を生成するためのグラデーションクラスタ情報生成処理を行う。本実施形態において、グラデーションクラスタ情報は、グラデーション領域内の色領域を指すラベルのリスト、グラデーション領域内の境界のリスト、対応するグラデーション領域の種別を含む。S500の詳細を、図11の処理フローと、図12(a)が入力画像として入力された場合の具体例とを用いて説明する。
【0044】
図12(a)が入力された場合、色領域識別処理(S200)により、図12(b)に示す色領域識別結果が得られる。この結果に対し、境界色勾配情報算出処理(S300)、境界属性判定処理(S400)を行うと図13に示すような情報が得られる。以下、入力された情報において、着目する境界をBtとして記載する。
【0045】
S501では、CPU7は、参照中の境界Btが未処理かどうかを判定する。この処理は後の処理であるグラデーションクラスタ情報生成の際に優先して処理される境界があるため、処理された境界を再度処理しないようにするために必要となる。未処理であると判定された場合は(S501にてYES)、S502に移り、処理済みであると判定された場合は(S501にてNO)、S506に移る。
【0046】
S502では、CPU7は、参照中の境界Btを成している二つのラベル領域が未処理かどうかを判定する。この処理もS501と同様に、後の処理であるグラデーションクラスタ情報生成の際に優先して処理される境界があり、処理された境界をなす二つのラベルを再度処理しないようにするために必要となる。境界Btをなすラベル(すなわち境界Btを挟む2つのラベル領域)が未処理であると判定された場合は(S502にてYES)S503に移り、処理済みであると判定された場合は(S502にてNO)S506に移る。
【0047】
S503では、CPU7は、境界属性の判定を行う。参照中の境界Btに関連付けられている属性が「線形グラデーション」であった場合はS504へ、「放射グラデーション」であった場合はS505へ、それ以外の場合はS506へそれぞれ移る。
【0048】
S504では、CPU7は、線形グラデーションクラスタ情報の生成を行う。ここではまず、CPU7は、参照中の境界Btの境界番号を線形グラデーションクラスタ情報に登録する。次にCPU7は、参照中の境界Btをなす2つのラベルを線形グラデーションクラスタ情報に登録する。次にCPU7は、生成した線形グラデーションクラスタ情報固有の勾配角度を算出する。このときの勾配角度は、境界色勾配情報における上下左右の色勾配を用いて下記の式(1)を用いて求められる。
勾配角度=arctan((上方向色勾配−下方向色勾配)/(右方向色勾配−左方向色勾配)) ・・・(1)
【0049】
そして、CPU7は、生成した線形グラデーションクラスタ情報における種別に「線形グラデーション」をセットする。ここで、便宜上、線形グラデーションをセットされた境界のクラスタを線形グラデーションクラスタ情報Glと記載する。
【0050】
当該線形グラデーションクラスタ情報に登録した二つのラベルに対応する色領域の少なくともいずれかが更に他の色領域と接している場合、当該他の色領域との間の境界を順次評価し、当該他の色領域を線形グラデーションクラスタ情報に登録するか否かを判定していく。この処理を図13の例を用いて説明する。
【0051】
まず参照中の境界Btが図13の境界8であると仮定して説明する。この時、線形グラデーションクラスタ情報Glには境界8と、境界8を成すラベル5とラベル6が登録される。またこの場合の勾配角度は前述の式(1)により、以下のように求められる。
勾配角度=arctan((0−0)/(800−0))=0
【0052】
更に、図13の境界色勾配情報を参照すると、ラベル5は参照中の境界8以外に、境界4にも接していると判定される。そこで境界4が当該生成した線形グラデーションクラスタ情報Glに属するか否かを判別する。この時、境界4はその境界属性がエッジ属性であるため、線形グラデーションクラスタ情報Glには属さないと判別される。
【0053】
また、ラベル6は、参照中の境界8以外に、境界5と境界9とに接していると、図13の境界色勾配情報に基づいて判定される。境界5はエッジ属性であるために線形グラデーションクラスタ情報Glには属さないが、境界9は線形グラデーション属性である。よって、境界9が線形グラデーションクラスタ情報Glに属するかが判定される。具体的にはまず、境界9を成すラベル6、ラベル7が他のグラデーションクラスタ情報に含まれているか否かが判定される。他のグラデーションクラスタ情報に含まれている場合、境界9は生成中のグラデーションクラスタ情報に属さないと判別される。含まれていない場合、次の判定に移る。境界9の勾配角度は式(1)を用いて算出することができる。即ち境界9の勾配角度は以下のように算出される。
勾配角度=arctan((0−0)/(1200−0))=0
【0054】
ここで得られた勾配角度と、線形グラデーションクラスタ情報固有の勾配角度との差が閾値T5以内であった場合、当該境界およびそれを構成するラベルが線形グラデーションクラスタ情報に登録される。閾値T5は例えばT5=22.5、等がある。この閾値T5は、経験的に求めてもよいし、任意の算出式により求めても構わない。上述した図13の境界9の勾配角度と線形グラデーションクラスタ情報の勾配角度差は0であるため、境界9は線形グラデーションクラスタ情報Glに属する境界であると判定される。よって境界9と、境界9を成すラベル6とラベル7を線形グラデーションクラスタ情報Glに登録する。ただしラベル6は、実際には既に生成中の線形グラデーションクラスタ情報に登録済みであるため、ここではラベル7のみが登録される。なお、所定の閾値より大きいもしくは閾値以上などの判定については、閾値の設定に合わせて変更して構わない。
【0055】
次にラベル7が属している境界を同様に評価し、線形グラデーションとして登録していくと、図14に示すグラデーションクラスタ情報におけるグラデーションクラスタ2のような結果が得られる。図14の例では、グラデーションクラスタ2は、ラベル5,6,7,8の色領域で構成される線形グラデーションで、且つ勾配角度は0度である。なお、図14に示す「種別」とは、各境界が有するグラデーション属性に対応し、グラデーションクラスタが有する属性となる。以上の処理により、線形グラデーションクラスタ情報の生成を終えたら、S506に移る。
【0056】
S505ではCPU7は、放射グラデーションクラスタ情報の生成を行う。ここではまず、CPU7は、参照中の境界Btの境界番号を放射グラデーションクラスタ情報に登録する。次にCPU7は、参照中の境界Btをなす2つのラベルをグラデーションクラスタ情報に登録する。次にCPU7は、生成した放射グラデーションクラスタ情報には勾配角度を要しないためダミーの値を初期値として代入する。そしてCPU7は、生成した放射グラデーションクラスタ情報における種別に「放射グラデーション」をセットする。ここで、便宜上、放射グラデーションをセットされた境界のクラスタを線形グラデーションクラスタ情報Grと記載する。
【0057】
当該放射グラデーションクラスタ情報に登録した二つのラベルに対応する色領域の少なくともいずれかが更に他の色領域と接している場合、CPU7は、当該他の色領域との間の境界を順次評価し、当該他の色領域を放射グラデーションクラスタ情報に登録するか否かを判定していく。この処理を図13の例を用いて説明する。
【0058】
まず参照中の境界Btが図13の境界2であると仮定して説明する。この時、放射グラデーションクラスタ情報Grには境界2と、境界2を成すラベル2、ラベル3が登録される。更に、図13の境界色勾配情報を参照して、ラベル2は参照中の境界2以外に、境界1にも接していると判定される。そこで境界1が当該生成した放射グラデーションクラスタ情報Grに属するか否かを判別される。この時、境界1はその境界属性がエッジ属性であるため、放射グラデーションクラスタ情報Grには属さないと判別される。
【0059】
また、ラベル3は参照中の境界2以外に、境界3に属していると、図13の境界色勾配情報に基づいて判定される。境界3は放射グラデーション属性である。よって境界3が放射グラデーションクラスタ情報Grに属するかを判定する。具体的には、境界3を成すラベル3、ラベル4が他のグラデーションクラスタ情報に含まれているか否かを判定する。他のグラデーション情報に含まれている場合、境界3は生成中のグラデーションクラスタ情報に属さないと判別する。含まれていない場合、境界3と、境界3を成すラベルを放射グラデーションクラスタ情報Grに登録する。ただしラベル3は実際には生成中の放射グラデーションクラスタ情報に既に登録済みであるため、ここではラベル4のみが登録される。
【0060】
次にラベル4が属している境界を同様に評価し、放射グラデーションとして登録していくと、図14に示すグラデーションクラスタ情報におけるグラデーションクラスタ1のような結果が得られる。図14のグラデーションクラスタ1は、ラベル2,3,4の色領域で構成される放射グラデーションクラスタとして登録されている。以上の処理により、放射グラデーションクラスタ情報の生成を終えたら、S506に移る。
【0061】
S506では、CPU7は、参照中の境界が最後の境界かを判定する。最後の境界である場合は(S506にてYES)そのまま処理を終え、最後の境界でない場合は(S506にてNO)S507に移る。S507ではCPU7は、参照中の境界を次の境界へ更新し、S501に移る。以上のS501からS507により、図1におけるグラデーションクラスタ情報生成処理(S500)を実現している。
【0062】
[グラデーションパラメータ生成処理]
次にS600では、グラデーションクラスタ情報毎にグラデーションのパラメータ生成を行う、グラデーションパラメータ生成処理を行う。ここでは色領域識別結果と、グラデーションクラスタ情報、及び境界色勾配情報を用いて、線形グラデーションと放射グラデーションのパラメータ生成を行う。
【0063】
まずグラデーションクラスタ情報における種別が、「線形グラデーション」の場合のパラメータの生成方法の詳細を説明する。例として図12の線形グラデーション領域におけるパラメータ生成の概念図である図15を示す。ここで生成する線形グラデーションのパラメータは、グラデーション端点を定義する始点ps、終点pe、及び色の移り変わりを定義するオフセットである。尚、オフセットは、位置情報としてグラデーション領域中の相対位置を示すオフセット値と、相対位置における色を定義する色値を含む。
【0064】
まず、線形グラデーション領域(線形グラデーションクラスタ情報に登録されたラベルで構成される領域)の外接矩形Rを求め、その外接矩形Rの重心Cを求める。なお、重心の求め方については、ここでは説明を省略する。次に求めた重心Cを通り、かつ角度θがグラデーションクラスタ情報に付記されている勾配角度となるベクトルvを求める。次に外接矩形Rとの交点をそれぞれ始点ps(a,b),終点pe(c,d)とする。次に求めたpsからpeまでの距離を求め、この距離を100に正規化するための定数Kを求める。即ち、以下の式(2)を用いて定数Kを求めることができる。
・・・(2)
【0065】
図15に示す例の場合、正規化するための定数Kは下記のようになる。
【0066】
次にグラデーションクラスタ情報に登録されているN個のラベルに対し、各ラベルに対応する色領域の重心Cln(n=1,2,…,N)をそれぞれ求める。図15に示す例の場合、Cl1〜Cl4が含まれる。次に求めた各色領域の重心Clnから、ベクトルvに対し法線を下ろし、その交点をオフセット点Ofn(n=1,2,…,N)としてそれぞれ導出する。図15に示す例の場合、Of1〜Of4が含まれる。そして、次に始点psから、オフセット点Ofnまでの距離dn(n=1,2,…,N)を算出し、前述の定数Kを掛け合わせた値をオフセット点Ofnにおけるオフセット値とする。
【0067】
図15の例で言うと、Of1(140,100)とps(100,100)との距離d1は40である。定数Kは前述で求めた通り0.5なので、Of1におけるオフセット値は0.5×40=20となる。最後にオフセット点Ofnに対応する色領域の平均色をオフセットの色値として用いる。図15の例の場合、以上の処理を全てのオフセット点Ofnに行うことで、図16に例示したような線形グラデーションパラメータを得ることができる。図16に示すように、本実施形態では、線形グラデーションパラメータには、グラデーションの端点情報(始点、終点の座標)、各オフセットの情報(オフセット値、色値)が含まれる。
【0068】
次にグラデーションクラスタ情報における種別が、「放射グラデーション」の場合のパラメータの生成方法の詳細を説明する。例として図12の放射グラデーション領域におけるパラメータ生成の概念図である図17を示す。ここで生成する放射グラデーションのパラメータは、グラデーション端点を定義する中心pcと半径r、及び色の移り変わりを定義するオフセットである。尚、オフセットはグラデーション領域中の相対位置を示すオフセット値と、相対位置における色を定義する色値を含む。
【0069】
まず、放射グラデーションクラスタ情報に登録されているN個のラベルに対し、それぞれ対応する色領域の外接矩形を求めその大きさ順でソートしたものをそれぞれRn(n=1,2,…,N)とする。つまり外接矩形は、図17の例の場合、R1,R2,R3のようになる。
【0070】
次に求めた外接矩形R1は最内郭に位置する色領域による外接矩形となるため、対応する色領域の重心を求め、その重心を放射グラデーションの中心pcとする。次に求めた外接矩形RNは最外郭に位置する色領域による外接矩形となるため、その外接矩形の右端を定義する直線LRNから、中心pcまでの距離を半径rとする。図17の例の場合、中心pc(200,100)から最外郭に位置する色領域の外接矩形R3の右端を定義する直線LR3(x=280)までの距離が80となり、この値を半径rとする。
【0071】
次に半径rを100に正規化するための定数Kを求める。即ち、式(3)を参照して求めると、以下のように求められる。
・・・(3)
【0072】
図17の例で言えば、正規化するための定数Kは下記のようになる。
【0073】
次に放射グラデーションのオフセットOfn(n=1,2,…,N)を求める。放射グラデーションにおけるオフセットは、まず一つ目のオフセット点Of1を中心pcと同一の点とし、オフセット値を0とする。そして二つ目からのオフセット点の生成方法を説明する。
【0074】
まず中心pcを通り、x軸に水平な直線Lcを定義する。そして次に生成中のオフセット点がi番目(i=2,3,…,N)であるとすると、外接矩形Ri−1の右端を定義する直線LRi−1と外接矩形Riの右端を定義する直線LRiとの中間を通る直線Lmiを算出する。次に求めた直線Lmiと直線Lcとの交点を求め、この交点をオフセット点Ofiとする。図17の例の場合、中心pc(200,100)を通り、x軸に水平な直線Lcはy=100となる。そしてi=2の時、直線LR1(x=220)と直線LR2(x=260)の中間を通る直線Lm2はx=240となる。よってオフセット点Of2は直線Lcと直線Lm2の交点である(240,100)となる。以上の処理により、ラベルの数N個分だけオフセット点Ofnが生成される。図17bに示す例の場合、Of1〜Of3が含まれる。
【0075】
次に中心pcから、オフセット点Ofnまでの距離dn(n=1,2,…,N)を算出し、前述の定数Kを掛け合わせた値をオフセット点Ofnにおけるオフセット値とする。図17の例の場合、Of1は中心pcと同一点なので距離d1=0となり、定数Kに関わらずオフセット値は0となる。Of2(240,100)と中心pc(200,100)との距離d2は40である。定数Kは前述で求めた通り、1.25なので、Of2におけるオフセット値は1.25×60=50となる。最後にオフセット点Ofnに対応する色領域の平均色をオフセットの色値として用いる。
【0076】
以上の処理を全てのオフセット点Ofnに行うことで、図18に例示したような放射グラデーションパラメータを得ることができる。図18に示すように、本実施形態では、放射グラデーションパラメータには、放射グラデーションの中心座標、半径、各オフセットの情報(オフセット値、色値)が含まれる。以上の処理は図1におけるグラデーションパラメータ生成処理(S600)を実現している。
【0077】
[色領域統合処理]
次にS700ではグラデーションクラスタ情報毎にラベルの指す色領域を一つに統合する、色領域統合処理を行う。この処理では各グラデーションクラスタ情報に登録されているラベルを一つに統合し、新しい色領域識別結果を得る。図12と図14を用いて述べると、グラデーションクラスタ1にラベル2,3,4が登録されている。よってこのラベルが指す色領域を統合し、新しいラベルとしてラベル9を振り、一つの色領域とする。グラデーションクラスタ2に登録されているラベル5,6,7,8に関しても同様に統合し、新しいラベルとしてラベル10を振る。以上の処理を行うと、図19に示すようなラベルが付与された各色領域が新たに得られ、原画にないような擬似輪郭境界は消える。また、グラデーションクラスタ情報に基づき、ラベル9は放射グラデーションの領域であり、ラベル10は線形グラデーションの領域であることが分かる。この処理により、図1における色領域統合処理(S700)を実現する
[ベクトル化対象判定]
次にS800では境界色勾配情報、境界属性情報、およびグラデーションクラスタ情報を用いて、処理中の画像がベクトル化の対象範囲内か否かを判定する、ベクトル化対象判定を行う。ここで、エッジ属性ではないにも関わらず、いずれのグラデーションクラスタ情報にも属していない境界を「残疑似輪郭」と呼称する。このステップでは残疑似輪郭を判定し、その全ての境界長を加算した値Lをもってベクトル化対象判定を行う。以下から図20を使ってS800の詳細を説明する。
【0078】
まずS801では、CPU7は、残疑似輪郭の境界長の値Lを“0”で初期化する。この処理を終えた後、S802へ移る。次にS802で、CPU7は、参照中の境界Btの境界属性がエッジ属性か否を判定する。境界Btの境界属性がエッジ属性の場合は(S802にてNO)S805へ、エッジ属性でない(S802にてYES)場合はS803へ移る。
【0079】
次にS803では、CPU7は、参照中の境界Btの境界番号がグラデーションクラスタ情報に登録されているかを判定する。境界番号がグラデーションクラスタ情報に登録されている場合は(S803にてNO)S805へ、登録されていない場合は(S803にてYES)804へ移る。次にS804では、CPU7は、参照中の境界Btの境界長を、残疑似輪郭の境界長の値Lに加算する。その後、S805へ移る。
【0080】
次にS805では、CPU7は、参照中の境界Btが最後の境界かを判定する。最後の境界である場合は(S805にてYES)S807へ、最後の境界でない場合は(S805にてNO)S806に移る。S806では、CPU7は、参照中の境界Btを次の境界へ更新し、S802へ戻る。
【0081】
次にS807では、CPU7は、全ての残疑似輪郭の境界長が加算された値Lが、予め定められた閾値T6よりも小さいか否かを判定する。つまり、残擬似輪郭の境界長の総和であるLが所定の閾値よりも小さいか否かで判定する。Lが閾値T6よりも小さい場合(S807にてYES)、S808に移り、CPU7は処理中の画像がベクトル化対象であると判定し、処理を終える。Lが閾値T6以上である場合(S807にてNO)、S809に移り、CPU7は処理中の画像がベクトル化対象外であると判定し、処理を終える。ここで用いられる閾値T6は例えば、T6=入力画像の高さ×入力画像の幅/2、等がある。なお、この閾値T6は、経験的に求めてもよいし、他の算出式により求めても構わない。以上の処理により、処理中の画像がベクトル化対象か否かを判定することができる。
【0082】
[判定処理における具体例]
ここで、図12、図13、図14の具体例を用いて、この処理を説明する。図12(a)は入力画像、図12(b)は入力画像の色領域識別結果であり、図13は図12の境界色勾配情報と境界属性、そして図14は図13を基に生成したグラデーションクラスタ情報である。また閾値T6を“100”とする。この条件を便宜的に「具体例1」と呼称する。
【0083】
具体例1において、まず図13に示すエッジ属性でない境界は、図14に示すように全てグラデーションクラスタ情報に登録されている。このためS801からS806までを処理すると、残疑似輪郭の境界長の値Lは初期値のままの“0”となる。そしてS807において、閾値T6とLとの比較を行う。L=0、T6=100なので、L<T6となり、具体例1における入力画像はベクトル化対象であると判定される。
【0084】
また、別の具体例である図21、図22、図23を用いて、この処理を説明する。図21(a)は入力画像、図21(b)は入力画像の色領域識別結果、図21(c)は色領域統合結果である。図22は図21の境界色勾配情報と境界属性、そして図23は図22を基に生成したグラデーションクラスタ情報である。また閾値T6を“100”とする。この条件を便宜的に「具体例2」と呼称する。
【0085】
まず、図22と図23を参照すると、境界番号の8,9,10がエッジ属性でないにも関わらずグラデーションクラスタ情報に登録されていない。このうち、境界番号8、境界番号9の境界に関しては、図21(b)を参照するとわかる通り、複雑なグラデーションによる境界となっているため、線形や放射のグラデーションベクトル化ができない。このためグラデーションクラスタ情報にも登録されておらず、「残疑似輪郭」となっている。
【0086】
これに対し、境界10は放射グラデーション属性と判定されているにも関わらず、グラデーションクラスタに登録されていない。これは、S500のグラデーションクラスタ生成処理に起因する。S500では、グラデーションクラスタ情報を生成する際、登録した色領域に隣接する色領域を順次評価し、同じグラデーションクラスタに登録するか否かを判定していく。この処理により、図21(b)におけるラベル4の色領域は、先に生成が開始される線形グラデーションクラスタに登録される。よってS505において放射グラデーションクラスタ情報を生成する際、放射グラデーション属性である境界10は、境界10を成すラベル4が他のグラデーションクラスタ情報に統合済みとなるため、放射グラデーションクラスタに登録しない。これにより、図21(c)の境界10のように境界属性が線形グラデーションや放射グラデーションであっても、異なるグラデーション領域が混在しているような場合には残疑似輪郭となり得る。よって、この具体例2において、S801からS806までを処理すると、境界番号の8,9,10の境界長を加算した総和として、“700”が残疑似輪郭の境界長の値Lとして得られる。
【0087】
そしてS807において、閾値T6とLとの比較を行う。L=700、T6=100なので、L>T6となるため、具体例2における入力画像はベクトル化対象外であると判定される。
【0088】
以上の処理により図1におけるベクトル化対象判定処理(S800)を実現している。この処理において入力画像がベクトル化対象と判定された場合はS900に移り、ベクトル化対象外と判定された場合はそのまま処理を終える。
【0089】
[輪郭ベクトル記述生成処理]
最後に図1のS900では、色領域輪郭のベクトル記述を生成する、輪郭ベクトル記述生成処理を行う。ここで輪郭ベクトルを求める対象となる色領域は、S700で得た色領域統合後に得られる色領域である。まず、S700で統合した後の色領域間の境界線を求め、当該境界線を関数近似することにより、各色領域の輪郭を表すベクトル記述(輪郭ベクトルデータ)を生成する。なお、隣接する色領域が接している区間ごとに境界線を関数近似してベクトル記述を求めることにより、隣接する色領域間で隙間や重なりが生じない輪郭のベクトル記述を得ることができる。図19の例の場合、ラベル1とラベル9の色領域間の境界線と、ラベル1とラベル10の色領域間の境界線とを求め、関数近似を行うことで、各色領域の輪郭のベクトル記述を得ることができる。
【0090】
そして、グラデーションクラスタに属するグラデーション領域に関しては、当該求めた色領域輪郭のベクトル記述と、S600で得たグラデーションをベクトル表現するためのグラデーションパラメータとを合わせて出力する。すなわち、色領域輪郭のベクトル記述で定義される輪郭内を当該グラデーションパラメータでグラデーション表現するように記述することによって、グラデーションを含む画像のベクトルデータ(グラデーション付き輪郭ベクトルデータ)を生成する。なお、グラデーション領域以外の色領域(エッジ属性の境界線で囲まれる単一色の色領域)に関しては、その色領域の輪郭のベクトル記述と、当該色領域内の代表色(例えば、当該色領域に含まれる画素の平均色)とを合わせて出力することによって、グラデーション領域以外の色領域のベクトルデータを生成する。
【0091】
以上説明したように、本発明では、ベクトル化対象の画像を判定することが可能となり、ベクトル化に適した画像を選別してベクトル化を行うことができる。
【0092】
<第二実施形態>
第一実施形態では、グラデーションクラスタ情報に登録されていない非エッジ属性の境界を残疑似輪郭として判定し、その残疑似輪郭の境界長を全て加算した値Lをベクトル化対象に判定で用いた。しかし第一実施形態の属性判定処理において複雑グラデーションと判定された境界は、その後の処理で統合されることはない。よって複雑グラデーションと判定された境界はその時点で残疑似輪郭となることが確定する。これを利用し、境界属性判定処理の直後にベクトル化対象判定処理を行う事が可能である。そこで本実施形態では、属性判定処理において複雑グラデーションと判定された境界を用いてベクトル化対象判定を行う。
【0093】
[処理フロー]
本実施形態におけるメイン処理フローを図24に示す。本処理フローは記憶部に格納されたプログラムをCPU7が実行することにより、実現される。まず、図24に示すS2100からS2400までは第一実施形態にて述べた図1のS100からS400の処理と同様の処理を行う。したがって、ここでは説明を省略する。
【0094】
次に、S2500において、CPU7は、ベクトル化対象判定を行う。まずここではCPU7は、S2400で複雑グラデーション属性と判定された境界を残疑似輪郭長と判定し、残疑似輪郭長の境界長を全て加算した総和である値L’を得る。そして第一実施形態にて述べたS800と同様に、CPU7は、L’と予め定められた閾値T7との比較を行う。そして、L’がT7よりも小さいと判定された場合、処理中の画像はベクトル化対象とし、S2600へ移る。L’がT7以上であると判定された場合、CPU7は処理中の画像をベクトル化対象外とし、そのまま処理を終える。閾値T7を求める式の例としては、T7=入力画像の高さ×入力画像の幅/3、等がある。なお、閾値T7は、経験的に求めてもよいし、他の算出式により求めても構わない。
【0095】
最後にS2600は、第一実施形態におけるS500、S600、S700、S900と同様の処理を行うことでベクトル化を行う。
【0096】
以上の処理により、属性判定処理を終えた段階でベクトル化対象判定を行うことができるため、ベクトル化対象外と判定された場合はその後の処理を省略でき、高速化につながる。
【0097】
<第三実施形態>
第一、および第二実施形態では、残疑似輪郭の境界長を用いてベクトル化対象判定を行った。しかしベクトル化対象判定には残疑似輪郭の長さではなく、残疑似輪郭の境界数を用いて行うこともできる。本実施形態における具体的なベクトル化対象判定の処理フローを、図25を用いて説明する。本処理は、第一実施形態の図20を用いて述べた処理に対応する。尚、ここでは説明のためベクトル化対象判定以外の処理は、第一実施形態と同様であるとする。本処理フローは、記憶部に記憶されたプログラムをCPU7が実行することにより実現される。
【0098】
まずS3801では、CPU7は、残疑似輪郭の境界数Nを“0”で初期化し、S3802へ移る。次にS3802で、CPU7は、参照中の境界Btの境界属性がエッジ属性か否を判定する。境界Btの境界属性がエッジ属性の場合は(S3802にてNO)S3805へ移り、エッジ属性以外の属性場合は(S3802にてYES)S3803へ移る。
【0099】
次にS3803では、CPU7は、参照中の境界Btの境界番号がグラデーションクラスタ情報に登録されているかを判定する。境界番号がグラデーションクラスタ情報に登録されている場合は(S3803にてNO)S3805へ移り、登録されていない場合は(S3803にてYES)S3804へ移る。S3804では、CPU7は、残疑似輪郭の境界数Nに1を加算し、S3805へ移る。
【0100】
S3805ではCPU7は、参照中の境界Btが最後の境界かを判定する。Btが最後の境界である場合は(S3805にてYES)S3807へ移り、最後の境界でない場合は(S3805にてNO)S3806に移る。S3806では、CPU7は、参照中の境界Btを次の境界に更新し、S3802に移る。
【0101】
S3807では、CPU7は、全ての残疑似輪郭の境界数Nが、予め定められた閾値T8以下か否かを判定する。Nが閾値T8以下であった場合(S3807にてYES)S3808に移り、CPU7は処理中の画像がベクトル化対象であると判定し、処理を終える。Nが閾値T8よりも大きかった場合(S3807にてNO)、S3809に移り、CPU7は処理中の画像がベクトル化対象外であると判定し、処理を終える。閾値T8は例えば、T8=0、1、および入力画像の高さ×入力画像/10000(小数点以下は切り捨て)、等で定義することができる。
【0102】
以上の処理により、残疑似輪郭の境界数を用いて処理中の画像がベクトル化対象か否かを判定することができる。
【0103】
<その他の実施形態>
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。
【0104】
また、本発明の画像処理装置は、上述した実施形態の各機能を実現する専用のハードウェア(ASICなど)を用いて構成するようにしてもよい。
【特許請求の範囲】
【請求項1】
色差に基づいて入力画像を複数の色領域に分割する分割手段と、
前記分割された色領域間の境界における色勾配情報を、前記入力画像の色情報から算出する色勾配情報算出手段と、
前記色勾配情報を用いて、前記境界における色勾配の特性を示すグラデーション属性を判定する属性判定手段と、
前記属性判定手段にて判定された境界のグラデーション属性に基づき、当該入力画像をベクトル化対象とするか否かを判定するベクトル化対象判定手段と
を備える画像処理装置。
【請求項2】
前記境界のグラデーション属性は、
該境界における色勾配の強度が予め定められた閾値よりも大きいエッジ属性、
該境界における色勾配が一の方向もしくは相対しない二の方向に一定である線形グラデーション属性、
該境界における色勾配が全ての方向に一定である放射グラデーション属性、
該境界が前記エッジ属性と前記線形グラデーション属性と前記放射グラデーション属性とのいずれにも属さない複雑グラデーション属性
のいずれかであることを特徴とする請求項1に記載の画像処理装置。
【請求項3】
前記境界のグラデーション属性を用いて、前記複数の色領域の中から同じグラデーションに属する色領域を判定してグラデーションクラスタを生成し、当該グラデーションクラスタに属する色領域と当該グラデーションクラスタに属する色領域間の境界と当該グラデーションクラスタのグラデーションの種別とに関する情報を含むグラデーションクラスタ情報を生成するグラデーションクラスタ情報生成手段を更に備え、
前記ベクトル化対象判定手段は、前記グラデーションクラスタ情報と前記境界のグラデーション属性とに基づき、当該入力画像をベクトル化対象とするか否かを判定することを特徴とする請求項2に記載の画像処理装置。
【請求項4】
前記ベクトル化対象判定手段は、前記境界のグラデーション属性が前記エッジ属性以外の属性で且つ前記グラデーションクラスタ情報に含まれていない境界の長さの総和が、所定の閾値よりも小さい場合は前記入力画像をベクトル化対象と判定し、前記所定の閾値以上である場合は前記入力画像をベクトル化対象外と判定することを特徴とする請求項3に記載の画像処理装置。
【請求項5】
前記ベクトル化対象判定手段は、前記複雑グラデーション属性であると判定された境界の長さの総和が、所定の閾値よりも小さい場合は前記入力画像をベクトル化対象と判定し、前記所定の閾値以上である場合は前記入力画像をベクトル化対象外と判定することを特徴とする請求項2に記載の画像処理装置。
【請求項6】
前記ベクトル化対象判定手段は、前記複雑グラデーション属性であると判定された境界の数が、所定の閾値よりも小さい場合は前記入力画像をベクトル化対象と判定し、前記所定の閾値以上である場合は前記入力画像をベクトル化対象外と判定することを特徴とする請求項2に記載の画像処理装置。
【請求項7】
分割手段が、色差に基づいて入力画像を複数の色領域に分割する分割工程と、
色勾配情報算出手段が、前記分割された色領域間の境界における色勾配情報を、前記入力画像の色情報から算出する色勾配情報算出工程と、
属性判定手段が、前記色勾配情報を用いて、前記境界における色勾配の特性を示すグラデーション属性を判定する属性判定工程と、
ベクトル化対象判定手段が、前記属性判定工程にて判定された境界のグラデーション属性に基づき、当該入力画像をベクトル化対象とするか否かを判定するベクトル化対象判定工程と
を有することを特徴とする画像処理方法。
【請求項8】
コンピュータを、請求項1乃至6のいずれか一項に記載の画像処理装置の各手段として機能させるためのプログラム。
【請求項1】
色差に基づいて入力画像を複数の色領域に分割する分割手段と、
前記分割された色領域間の境界における色勾配情報を、前記入力画像の色情報から算出する色勾配情報算出手段と、
前記色勾配情報を用いて、前記境界における色勾配の特性を示すグラデーション属性を判定する属性判定手段と、
前記属性判定手段にて判定された境界のグラデーション属性に基づき、当該入力画像をベクトル化対象とするか否かを判定するベクトル化対象判定手段と
を備える画像処理装置。
【請求項2】
前記境界のグラデーション属性は、
該境界における色勾配の強度が予め定められた閾値よりも大きいエッジ属性、
該境界における色勾配が一の方向もしくは相対しない二の方向に一定である線形グラデーション属性、
該境界における色勾配が全ての方向に一定である放射グラデーション属性、
該境界が前記エッジ属性と前記線形グラデーション属性と前記放射グラデーション属性とのいずれにも属さない複雑グラデーション属性
のいずれかであることを特徴とする請求項1に記載の画像処理装置。
【請求項3】
前記境界のグラデーション属性を用いて、前記複数の色領域の中から同じグラデーションに属する色領域を判定してグラデーションクラスタを生成し、当該グラデーションクラスタに属する色領域と当該グラデーションクラスタに属する色領域間の境界と当該グラデーションクラスタのグラデーションの種別とに関する情報を含むグラデーションクラスタ情報を生成するグラデーションクラスタ情報生成手段を更に備え、
前記ベクトル化対象判定手段は、前記グラデーションクラスタ情報と前記境界のグラデーション属性とに基づき、当該入力画像をベクトル化対象とするか否かを判定することを特徴とする請求項2に記載の画像処理装置。
【請求項4】
前記ベクトル化対象判定手段は、前記境界のグラデーション属性が前記エッジ属性以外の属性で且つ前記グラデーションクラスタ情報に含まれていない境界の長さの総和が、所定の閾値よりも小さい場合は前記入力画像をベクトル化対象と判定し、前記所定の閾値以上である場合は前記入力画像をベクトル化対象外と判定することを特徴とする請求項3に記載の画像処理装置。
【請求項5】
前記ベクトル化対象判定手段は、前記複雑グラデーション属性であると判定された境界の長さの総和が、所定の閾値よりも小さい場合は前記入力画像をベクトル化対象と判定し、前記所定の閾値以上である場合は前記入力画像をベクトル化対象外と判定することを特徴とする請求項2に記載の画像処理装置。
【請求項6】
前記ベクトル化対象判定手段は、前記複雑グラデーション属性であると判定された境界の数が、所定の閾値よりも小さい場合は前記入力画像をベクトル化対象と判定し、前記所定の閾値以上である場合は前記入力画像をベクトル化対象外と判定することを特徴とする請求項2に記載の画像処理装置。
【請求項7】
分割手段が、色差に基づいて入力画像を複数の色領域に分割する分割工程と、
色勾配情報算出手段が、前記分割された色領域間の境界における色勾配情報を、前記入力画像の色情報から算出する色勾配情報算出工程と、
属性判定手段が、前記色勾配情報を用いて、前記境界における色勾配の特性を示すグラデーション属性を判定する属性判定工程と、
ベクトル化対象判定手段が、前記属性判定工程にて判定された境界のグラデーション属性に基づき、当該入力画像をベクトル化対象とするか否かを判定するベクトル化対象判定工程と
を有することを特徴とする画像処理方法。
【請求項8】
コンピュータを、請求項1乃至6のいずれか一項に記載の画像処理装置の各手段として機能させるためのプログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図11】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図22】
【図23】
【図24】
【図25】
【図8】
【図9】
【図10】
【図12】
【図21】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図11】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図22】
【図23】
【図24】
【図25】
【図8】
【図9】
【図10】
【図12】
【図21】
【公開番号】特開2012−238042(P2012−238042A)
【公開日】平成24年12月6日(2012.12.6)
【国際特許分類】
【出願番号】特願2011−104742(P2011−104742)
【出願日】平成23年5月9日(2011.5.9)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
【公開日】平成24年12月6日(2012.12.6)
【国際特許分類】
【出願日】平成23年5月9日(2011.5.9)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
[ Back to top ]