以下、添付図面を参照し、本発明の好適な実施形態について説明する。なお、以下説明する実施形態は、本発明を具体的に実施した場合の一例を示すもので、特許請求の範囲に記載した構成の具体的な実施例の1つである。
[第1の実施形態]
本実施形態では、入力画像から検出された検出線が、3頂点から成り且つ該3頂点間を結ぶ辺が直線または曲線であるメッシュの一辺となるように、入力画像を該メッシュを単位に分割し、該メッシュを複数のサブメッシュに分割するために該サブメッシュの各頂点を決定する画像処理装置の一例について説明する。すなわち、メッシュを分割するサブメッシュの頂点の候補として設定されている候補頂点群の一部である部分頂点群の色情報と、該候補頂点群において該部分頂点群を除く他頂点群の色情報から求めた該部分頂点群の色情報と、の差分を求め、該差分が規定値よりも小さい場合には、候補頂点群として他頂点群を設定してから差分を再度計算し、該差分が規定値以上の場合には、候補頂点群を、メッシュを分割するそれぞれのサブメッシュの頂点として決定する構成の一例について説明する。
先ず、本実施形態で用いる3頂点曲線メッシュについて説明する。上記の通り、3頂点曲線メッシュの各辺は曲線若しくは線分であるが、この曲線は、ベジェ曲線で構成されても良いし、B−スプラインで構成されても良い。即ち、曲線の種類は特定の種類に限るものではない。以下では説明上、3頂点曲線メッシュにパラメトリック曲面の一つである3頂点のベジェパッチを用いるものとする。ベジェパッチの中でも特に3次のベジェパッチでは、メッシュの各辺が3次のベジェ曲線となるため、3頂点曲線メッシュを生成したのちにユーザによる編集が容易であるという利点がある。P1、P2、P3を頂点とする3次のベジェパッチ内の点は以下の式で表される。
ここでs、t、uはパッチのパラメータ(パッチ内の重心座標)である。また、p1、p2、p3はそれぞれ、頂点P1、P2、P3の座標値である。c1、c2、c3、c4、c5、c6およびc7は曲線パッチの形状を定めるパラメータであり、特に、c1〜c6は、頂点P1,P2,P3のそれぞれに対する制御点(ベジェパッチの輪郭を決める3つのベジェ曲線の制御点)の座標値を表す。c7はベジェパッチの輪郭には関与しないパラメータであり、本実施形態ではベジェパッチの頂点の座標と、輪郭を成すベジェ曲線の制御点に対応するパラメータから以下の式によって定める。
次に、本実施形態に係る画像処理装置の機能構成例について、図1のブロック図を用いて説明する。なお、図1に示した構成は、以下に説明する処理を実現可能な構成の一例に過ぎず、同等以上の処理を実現可能な構成であれば、図1に示した構成に限らず、如何なる構成を採用しても構わない。
画像入力部101には、ラスタ表現の画像(入力画像)が入力される。入力画像はカラー画像、グレー画像、白黒画像のいずれでも構わない。また、入力画像は矩形画像でも構わないし、画像の一部をベクトル化したい場合には背景部を透過色に設定した画像等、切り出された領域が与えられても良い。そして画像入力部101は、この入力画像を後段のメッシュ生成部102に転送する。
メッシュ生成部102は、入力画像中の特徴を表す曲線形状の特徴線を再現する3頂点曲線メッシュ群を生成することで、該入力画像を該3頂点曲線メッシュ群に分割する処理を行うものであり、特徴線検出部1021、特徴点抽出部1022、曲線メッシュ生成部1023を有する。
特徴線検出部1021は、入力画像中に、特徴を表す曲線形状の特徴線を構成する。本実施形態では、特徴線としてエッジ線を用いる。特徴線を構成するための処理は大きく分けて、エッジ検出処理と、エッジ線構成処理と、に分けられる。
先ず、エッジ線検出処理について説明する。エッジ線検出処理では先ず、入力画像からエッジを構成する画素(エッジ画素)を検出する。本実施形態では、キャニー法という既知の方法を用いてエッジ画素を検出するが、他の手法を用いてエッジ画素を検出するようにしても良い。また、キャニー法が効果的に機能するように、入力画像に対して明るさ調整、エッジ強調などの前処理を施しても構わない。
そして次に、エッジ線構成処理を行う。エッジ線構成処理では先ず、隣接するエッジ画素間を結ぶ線分を構成することで、エッジ線を再現する線分群を構成する。隣接するエッジ画素間を結んで線分群を構成する際に、注目エッジ画素の上、下、左、右にある4つのエッジ画素が隣接しているとみなす4連結接続がある。また、この4方向に加えて右上、右下、左上、左下にある4つのエッジ画素も隣接していると見なす8連結接続もある。本実施形態では8連結接続を用いるが、これは一例に過ぎない。
ここで、キャニー法を用いて検出したエッジ画素に対して8連結接続で隣接しているとみなせるエッジ画素間を結ぶと、エッジ線として望ましくない結果が得られる場合がある。このケースについて図2を用いて説明する。
図2(a)〜(d)には画像中のある領域を構成する画素群を示しており、1つの四角形が1つの画素を表している。また、斜線で示している四角形がエッジ画素を表しており、斜線がない四角形がエッジ画素以外の画素(非エッジ画素)を表している。
図2(a)に示したエッジ画素群について、8連結接続で隣接したエッジ画素を結ぶと、図2(b)に示すように、エッジ画素201、202、203を結ぶようなループが発生してしまう。図2(a)に示すようなエッジ画素が検出された場合、このようなループの発生を抑制する必要がある。そこで本実施形態では、8連結接続を行う前に、Hilditch細線化法という既知の手法を用いることで、この問題を解決する。図2(a)に示したエッジ画素群に対してHilditch細線化を行うと、図2(b)に示したエッジ画素201は非エッジ画素となる。その結果、図2(c)に示すように、エッジ画素(204〜207)がループのない1つのエッジ線によって結ばれることになる。
このとき、図2(d)のエッジ画素208に示すように、複数のエッジ線が一か所に会合するようなパターンが発生することがある。このような場合は、会合するエッジ線を分断し、それぞれ独立したエッジ線として扱うこととする。図2(d)の例でいえばエッジ線は3本となる。
なお、特徴線にはエッジ線以外にも、例えば入力画像中のオブジェクトの領域の輪郭などが考えられる。ここでオブジェクトとは、文字や物体像等を指している。既に述べたように、入力画像の一部をベクトル化するという目的で、入力画像の一部が透過色に設定されている場合は、透過色と非透過色の境界に有る画素がオブジェクトの輪郭画素となる。オブジェクトの輪郭画素を1つの線分群にまとめる処理は、エッジ線構成処理と同様の処理に従って隣接する画素同士をつなぎ合わせることで実現できる。これは、入力画像内の異なる属性の領域の間の境界線にある画素についても同様である。
また、特徴線検出部1021は、入力画像を領域分割し、その境界線を特徴線としても良い。領域分割は最近傍法を用いたもの、EMアルゴリズムを利用したものなど、多くの手法が知られている。本実施形態では、濃度変化の基準として閾値を定めたうえでキャニー法を適用してエッジ画素を検出し、このエッジ画素を用いて特徴線を構成する。
図1に戻って、次に、特徴点抽出部1022は、特徴線上のサンプル点のうち、最終的に用いるサンプル点を特徴点として決定する。特徴点抽出部1022の動作について、図3,4を用いて説明する。
図3(a)には、入力画像中のある領域で構成された特徴線を示している。特徴点抽出部1022は、この特徴線上に複数のサンプル点を設定する。このサンプル点は上記のエッジ画素であっても良い。
ある区間における特徴線上のサンプル点群を図4(a)に示す。図4(a)において401〜405はサンプル点を示している。特徴線の端点を起点として隣接するサンプル点を順番に削除して近似関数を生成していく。
先ず、図4(b)に示す如く、特徴線の端点であるサンプル点401を起点として、まずサンプル点402が削除され、サンプル点401とサンプル点403とを近似曲線の端点として、サンプル点402を近似するように近似曲線406を生成する。ここで近似関数は、3次のベジェ関数を最小自乗近似により生成しているが、B−スプライン関数など他の関数を用いても構わない。生成した近似曲線406と削除したサンプル点402との距離から誤差を計算し、誤差が閾値以内であれば次のサンプル点を削除する。本実施形態では、誤差の閾値は1画素としている。図4(b)では誤差が閾値以内であるとして、次の処理を説明する。
図4(c)に示す如く、次に隣接したサンプル点403を削除して、サンプル点401とサンプル点404を近似曲線の端点として、サンプル点402とサンプル点403を近似するように近似曲線407を生成する。近似曲線407とサンプル点402、403との誤差を計算する。図4(c)では誤差が閾値以内であるとして、次の処理を説明する。
図4(d)に示す如く、次に隣接したサンプル点404を削除して、サンプル点401とサンプル点405を近似曲線の端点としてサンプル点402、403、404を近似するように近似曲線408を生成する。近似曲線408とサンプル点402、403、404との誤差を計算する。ここで近似曲線408とサンプル点402、404との誤差が閾値を超えたとする。このとき近似曲線408は採用せず、前に生成された近似曲線407が有効な近似関数として採用される。
そしてこの場合は、図4(e)に示す如く、特徴線の端点であるサンプル点401を起点とし、サンプル点402、403は削除され、近似曲線407の端点であるサンプル点404を特徴点としてサンプリングする。すなわち、特徴線の端点であるサンプル点401とサンプル点405、特徴点としてサンプリングされたサンプル点404が第1の特徴点として採用される。ここで、サンプル点がより多いとき、サンプル点404を起点として同様の処理を繰り返して、特徴点を決定していく。以上の処理により、図2(c)のエッジ画素204、207のような特徴線の端点と図2(d)のエッジ画素208のような特徴線の交点に加え、特徴点が抽出される。図3(a)の特徴線に対し、最終的にサンプリングされた特徴点は、図3(b)の白丸301と星印302で示される通りである。もちろん画像の特徴を再現できるのであれば、特徴線の端点間を均等にサンプリングして特徴点とするなど他の方法を用いても構わない。
図1に戻って、曲線メッシュ生成部1023は、特徴線を再現可能に、入力画像を3頂点曲線メッシュ群に分割する。曲線メッシュ生成部1023が行う処理について、同処理のフローチャートを示す図5を用いて説明する。もちろん、図5のフローチャートに示した各ステップにおける処理の主体は何れも曲線メッシュ生成部1023である。
先ず、ステップS501では、曲線化対象とする辺を設定する。ここでは、特徴点抽出部1022によって決定された特徴点において、特徴線上で隣接している特徴点間を結ぶ線分を曲線化対象とする辺として設定する。
次に、ステップS502では、ステップS501で設定した辺を制約条件として制約付きドロネー三角形分割を利用することで、設定した辺がメッシュの辺となる3頂点直線メッシュ群を生成する。制約付きドロネー三角形分割は、点群と制約条件を与えると、与えられた点群を頂点とし、かつ制約条件を満たす直線メッシュを生成するアルゴリズムである。ここで制約条件とは点群の一部を結ぶ線分である。もちろん、設定した辺を再現する3頂点直線メッシュを生成することができるのであれば、他の方法を用いても良い。
ステップS503では、曲線化対象となる全ての辺を曲線化したか否かを判断する。この判断の結果、曲線化対象となる全ての辺を曲線化したのであれば、図5のフローチャートに従った処理は完了し、曲線化対象となる辺のうちまだ曲線化していない辺が残っているのであれば、処理はステップS504に進む。
ステップS504では、曲線化対象となる辺のうちまだ曲線化してない辺を1つ選択する。そしてステップS505では、ステップS504で選択した辺を曲線化する。この曲線化では、特徴線を近似するようにメッシュの辺を曲線化する。本実施形態では特徴点抽出部1022で生成した3次のベジェ関数をそのままメッシュの辺として利用しているため、曲線を再計算する必要はない。図3(a)の特徴線に対してこのような3頂点曲線メッシュ群生成処理を行った結果を図6に示す。
ここまでの動作(処理)により、入力画像を、特徴線を表す3頂点曲線メッシュ群に分割することができる。なお、同様の目的を達成することができるのであれば、他の方法でもって「入力画像を、特徴線を表す3頂点曲線メッシュ群に分割」しても構わない。
図1に戻って、次に、最大色点数決定部103の動作について説明する。ここで、最大色点数決定部103の動作の説明を行うために、先に、3頂点曲線メッシュにおける形状情報と色情報とについて説明する。本実施形態では、それぞれの3頂点曲線メッシュを更に微小な3頂点からなるメッシュ(サブメッシュ)に分割し、分割したサブメッシュの頂点の画素の色を決定して、該頂点に割り当てる。レンダリングの際はそれらサブメッシュ内の色を双線形補間で補うことで、各メッシュの色を塗ることができる。
ここで、各メッシュを構成するために必要な形状情報と色情報について説明する。図7(a)は、3頂点から成り且つ3頂点間が曲線で結ばれている(何れの辺も曲線で表現されている)メッシュ(3頂点曲線メッシュ)に係る形状情報を示す。701、702、703は3頂点曲線メッシュの頂点、704〜709は3頂点曲線メッシュの制御点である。この形状情報は、曲線メッシュ生成部1023が3頂点曲線メッシュを生成する際に生成する。
図7(b)は、図7(a)に示した3頂点曲線メッシュに係る色情報を示す。710〜724は3頂点曲線メッシュ内におけるサブメッシュの頂点(色点)であり、それぞれの色点は色情報を有する。ここでは色点はRGB値を色情報として有しているものとして説明するが、CMYKなど他の色空間における色情報を有するものとしても良い。また、入力画像がグレー画像である場合、色点は、対応する画素の輝度情報を色情報として保持することになる。色点は、ベジェパッチを規則的に分割することで導出される。ここでは色点として15点を用いているが、ベジェパッチの分割数を変更し、色点数を変更しても構わない。例えば、図8(a)では分割数が1であり、色点の数は3となる。また図8(b)、(c)、(d)ではそれぞれ、分割数が2、4、8であり、色点の数は6、15、45点となる。
なお、分割数は2の冪乗となっており、この冪数を分割指数と呼称したとすると、分割数が1、2、4、8、16、32、64と増えるのにつれて、分割指数はそれぞれ0、1、2、3、4、5、6と対応している。この分割指数と分割数、さらには、色点数の対応を図11に示す。図11において、分割指数を非負整数kとすると、分割数nはn=2k、色点数NはN=(n+1)(n+2)/2となっている。
ここで、1つの3頂点曲線メッシュにおける色点の数は、入力画像において該3頂点曲線メッシュ内に含まれている部分画像における色変化の複雑さに応じて変化させるのが望ましい。すなわち、色変化がより複雑な3頂点曲線メッシュに対しては、より多くの色点を設定し、色変化が比較的複雑でない(単純な)部分画像に対応する3頂点曲線メッシュに対しては、最低限の数の色点を設定することが望ましい。このような3頂点曲線メッシュ毎の適応的な色点数の制御は、画質上、そしてデータ容量上望ましい。以下では、このような、3頂点曲線メッシュごとの色点数を適応的に決定しながら色点を設定する構成及び方法について説明する。
最大色点数決定部103は、それぞれの3頂点曲線メッシュに対して、該3頂点曲線メッシュ内の色を表現する色点の最大数である最大色点数N(初期値)を設定する。最大色点数Nの設定方法には様々な方法が考え得る。本実施形態では、それぞれの3頂点曲線メッシュに共通の最大色点数Nとして予め定められた数を設定する。以下では具体的な説明を行うためにN=45とするが、Nが他の数であっても、以下の説明は同様に適用可能である。なお、最大色点数N=45とした場合、図8(d)に示す如く、分割数n=8、分割指数k=3となる(図11参照)。図7(c)は、色点数が45の場合の3頂点曲線メッシュの色情報を示す。図7(b)と同様に、図中の色点730〜774について、それぞれ色情報を持つ。ただし、図7(c)中の45点全てに番号を付与すると図が煩雑になるため、図7(b)に比し大きな図として表現し、かつ、そのうちの27点のみに参照番号を付与してある。
次に、色点候補位置設定部104は、それぞれの3頂点曲線メッシュについて、該3頂点曲線メッシュ内のそれぞれの色点(45個)の位置(座標)を求める。この処理のために、先に述べた、P1、P2、P3を頂点とする3頂点曲線メッシュ(3次のベジェパッチ)内の点の位置を規定するための式である上記の式1、式2を用いる。図7(a)を例にとると、3頂点曲線メッシュの頂点701、702、703がそれぞれP1、P2、P3であり、それらの座標が、それぞれp1、p2、p3である。また、3頂点曲線メッシュの制御点704〜709の座標が、それぞれ順にc1、c2、c3、c4、c5、c6である。式1におけるパッチのパラメータs、t、uを、これらのパラメータの値が取り得る範囲を制限している条件内で、それぞれ変化させた組み合わせに応じて求まるB(s,t,u)を各色点の位置の座標とする。
例えば、図7(b)の場合、即ち、分割数が4の場合であれば、s、t、uの値をそれぞれ、それらのとりうる範囲である0〜1を4等分した値である1/4ずつ変化させて、かつ、s+t+u=1の制限をみたす組み合わせに応じてB(s,t,u)を求める。
B(1,0,0)が色点710の位置(座標)となり、B(3/4,1/4,0)とB(3/4,0,1/4)がそれぞれ色点711と712の位置(座標)となる。また、B(1/2,1/2,0)、B(1/2、1/4、1/4)、B(1/2,0,1/2)がそれぞれ色点713、714、715の位置(座標)となる。以下、同様に、色点716、717、718、719の位置(座標)は、B(1/4,3/4,0)、B(1/4,1/2,1/4)、B(1/4,1/4,1/2)、B(1/4,0,3/4)となる。また、色点720、721、722、723、724の位置(座標)は、B(0,1,0)、B(0,3/4,1/4)、B(0,1/2,1/2)、B(0,1/4,3/4)、B(0,0,1)となる。
ところで、最大色点数N=45の場合は、図7(c)に対応しており、分割数n=8であるから、s、t、uの値は1/8ずつ変化させることになる。色点730、731、733、736、740、745、751、758、766のそれぞれの位置(座標)は、u=0、s=1−(i/8)、t=i/8、但し、i=0,1,2,・・・,8でのB(s,t,0)として求まる。色点730、732、735、739、744、750、757、765、774のそれぞれの位置(座標)なら、t=0、s=1−(i/8)、u=i/8、但し、i=0,1,2,・・・,8でのB(s、0、u)となる。色点766、767、768、769、770、771、772、773、774の位置(座標)なら、s=0、t=1−(i/8)、u=i/8、但し、i=0,1,2,・・・,8でのB(0,t,u)である。また、色点733、734,735の3点であれば、いずれの位置(座標)も、s=3/4であって、それぞれ、B(3/4,1/4,0)、B(3/4,1/8,1/8)、B(3/4,0,1/4)である。色点753の位置(座標)であれば、色点751の位置(座標)がB(1/4,3/4,0)、色点757の位置(座標)がB(1/4,0,3/4)であるのに対し、B(1/4,1/2,1/4)となる。色点763の位置(座標)であれば、色点758の位置(座標)がB(1/8,7/8,0)、色点765の位置(座標)がB(1/8,0,7/8)であるのに対し、B(1/8,1/4,5/8)となる。
かくの如く、一般に分割数がnである場合、s、t、uの値をそれぞれ0から1まで1/nずつ変化させ、s+t+u=1の制限をみたす、N=(n+1)(n+2)/2通りの組み合わせに応じてB(s,t,u)を求めることで、(n+1)(n+2)/2個のそれぞれの色点の位置(座標)を求めることができる。s=1−(j/n)、但し、j=0,1,2,・・・,n、のそれぞれのjに対し、t+u=j/nをみたすtとuの組み合わせは、1+(n−j)通りある。即ち、B(1−(j/n),t,u)は1+(n−j)個ある。結局、分割数nのときは、s+t+u=1を満たすs,t,uの組み合わせは、(n+1)+n+(n−1)+(n−2)+・・・+2+1=(n+1)(n+2)/2=N通り存在する。これら(n+1)(n+2)/2=N個のB(s,t,u)が、最大色点数N=(n+1)(n+2)/2個の各色点の座標を与える。
なお、3頂点曲線メッシュは必ずしも、全ての頂点間が曲線であるわけではなく、一般的には、直線となる頂点間が存在する。例えば、頂点P1と頂点P2との間が直線の場合には、上記の図7(a)において、頂点701(P1)と頂点702(P2)とを結ぶ辺が直線となる。この場合には制御点704と制御点705がこの直線上にあり、それらの座標c1、c2がそれぞれ
c1=(2p1+p2)/3 (式3)
c2=(p1+2p2)/3 (式4)
であるとして、上述の(式1)、(式2)により求めれば良い。
加えて、頂点P3と頂点P1との間も直線の場合、即ち、頂点P2と頂点P3との間のみが曲線である場合には、さらに制御点708と制御点709がこの頂点P3と頂点P1との間の直線上にあり、それらの座標c5、c6がそれぞれ
c5=(2p3+p1)/3 (式5)
c6=(p3+2p1)/3 (式6)
であるとして、上述の(式1)、(式2)により求めれば良い。
さらに、頂点P2と頂点P3との間もまた直線の場合、即ち、全ての頂点間が直線である場合には、制御点706と制御点707が、頂点P2と頂点P3との間の直線上にあり、それらの座標c3、c4がそれぞれ
c3=(2p2+p3)/3 (式7)
c4=(p2+2p3)/3 (式8)
であるとして、上述の(式1)、(式2)により求めれば良い。しかし、上述の(式1)、(式2)に、(式3)〜(式8)の条件を加え、かつ、s+t+u=1であること等を基に(式1)、(式2)を簡素化すると、
B(s,t,u)=s・p1+t・p2+u・p3 (式9)
が得られるので、3頂点曲線メッシュの全ての頂点間が直線である場合には、上記(式9)に基づいて各色点の位置(座標)を求めても良い。この場合には、上記(式1)、(式2)を用いるよりも、はるかに少ない演算量で各色点の位置(座標)を求めることができる。
図1に戻って、次に色情報抽出部105は、それぞれの3頂点曲線メッシュについて、該3頂点曲線メッシュ内のそれぞれの色点の色情報を取得する。3頂点曲線メッシュにおける45個の色点のそれぞれの座標は色点候補位置設定部104が求めたのであるから、色情報抽出部105は、入力画像において該色点の座標における画素値を該色点の色情報として取得する。なお、色点候補位置設定部104が求めた座標は必ずしも整数値とはならずに、一般には入力画像中の画素の中心位置からずれる。この画素の中心位置からのずれに対しては、いわゆる最近傍(nearest neighbor)法と称される補間法、即ち、座標の小数部を四捨五入して整数化し、該当する位置の入力画像の画素の画素値をもって、該色点の色情報とすることで対処する。なお、補間法は、最近傍法に限らない。座標の小数部の示す入力画像上の位置を取り囲む周囲4画素の画素値を用いて、公知の双線形(bi-linear)補間法により求めた補間値をもって該色点の色情報としてもよい。また近傍16画素を用いた公知のbi-cubic補間法による補間値を用いてももちろん良い。最近傍法よりは、双線形補間法、双線形補間法よりはbi-cubic補間法の方が、より高画質であるとされているが、一方で、計算量はこの順で増加し、画質と演算量の間にはトレードオフがある。
次に、許容値設定部106の動作を説明する。上述のように、3頂点曲線メッシュにおける色点は、その数が少なければデータ容量は少なくて済むが、一方で3頂点曲線メッシュ内に含まれている画像の色変化の複雑さをなるべく忠実に再現できるようにするには多数の色点をもって表現する必要がある。このため、色点数を必要以上に削減すると、再現画像は元の画像に比して画質劣化が大きくなる。許容値設定部106は、色点数の削減を図る上で、必要以上の削減を抑えるための基準とする値としての誤差許容値を定める。本実施形態では、許容値設定部106は、最大色点数における色点一点当たりの誤差値の許容閾値を固定値Thとして設定する。例えば、Th=1.0とする。この値は、以降の許容色点情報生成部107内の判定部1074で用いられることになる。
許容色点情報生成部107は、3頂点曲線メッシュごとに、該3頂点曲線メッシュに設定すべき色点を確定するものであり、色点候補削減部1071、色情報補間部1072、誤差生成部1073、判定部1074、色点情報確定部1075、を有する。以下では、1つの3頂点曲線メッシュに対する許容色点情報生成部107の動作について説明する。然るに、実際には、許容色点情報生成部107は、以下に説明する処理をそれぞれの3頂点曲線メッシュについて行うことになる。
色点候補削減部1071は、最大色点数決定部103が設定した最大色点数Nに対応する分割指数をkとすると、分割指数(k−1)に対応する数の色点の3頂点曲線メッシュ内の位置を、色点候補位置設定部104と同様にして求める。例えばN=45の場合、上記の通りk=3であるから、k=2に対応する15個の色点(図7(b)に示した色点710〜724)のそれぞれの位置を求める。そして、色点候補削減部1071は、分割指数kに対応する数(最大色点数)の色点のうち、分割指数(k−1)に対応する数の色点と、その位置が異なる色点を、削減候補色点として決定する。なお、「色点間で位置が同じ」とは、「全く同じ」、ということに限るものではなく、位置の差が許容範囲内であれば「同じ」として構わない。色点候補削減部1071の動作を、図10を例にとり説明する。図10では説明を簡単にするために頂点間の辺を直線としているが、頂点間の辺が曲線であっても、以下の説明は同様に適用することができる。
図10(a)は、分割数=1である場合、すなわち分割指数が0である場合における色点を示しており、この場合、色点の数は3となる。図10(b)は、分割数=2である場合、すなわち分割指数が1である場合における色点を示しており、この場合、色点の数は6となる。図10(c)は、分割数=4である場合、すなわち分割指数が2である場合における色点を示しており、この場合、色点の数は15となる。図10(d)は、分割数=8である場合、すなわち分割指数が3である場合における色点を示しており、この場合、色点の数は45となる。なお、図10(d)は、図10(a)〜(c)に比して大きく表現してある。これは、図7(c)の場合と同様に、45点もの色点を図中に表記すると、図10(a)〜(c)の色点の表現に比し、図が込み入ったものとなり、見づらくなってしまわないようにするためである。
ここで、図10(a)に示す如く、分割数=1の場合における3個の色点は白丸で示している。図10(b)では、分割数=2の場合における6個の色点を示しているが、図10(a)に示した色点と同じ色点は白丸で示しており、図10(a)に示した色点と異なる色点は二重丸で示している。図10(c)では、分割数=4の場合における15個の色点を示しているが、図10(a)に示した色点と同じ色点は白丸、図10(b)に示した色点と同じ色点は二重丸で示しており、図10(a)、(b)に示した色点と異なる色点は黒丸で示している。図10(d)では、分割数=8である場合における45個の色点を示しているが、図10(a)に示した色点と同じ色点は白丸、図10(b)に示した色点と同じ色点は二重丸、図10(c)に示した色点と同じ色点は黒丸で示しており、図10(a)、(b)、(c)に示した色点と異なる色点は星形で示している。
上記の通り、色点候補削減部1071は、最大色点数決定部103が設定した最大色点数Nに対応する分割指数をkとすると、分割指数kに対応する数(最大色点数)の色点のうち、分割指数(k−1)に対応する数の色点と、その位置が異なる色点を、削減候補色点として決定する。最大色点数N=45の場合、3頂点曲線メッシュにおける45個の色点の配置は図10(d)のようになり、分割指数=2に対応する15個の色点の3頂点曲線メッシュ内における配置は図10(c)のようになり、図10(d)に示した色点のうち図10(c)に示した色点と位置が異なる色点は、色点1005や色点1006など、星形で示した色点であるから、この場合、色点候補削減部1071は、星形の色点を削減候補色点として決定することになる。
なお、詳しくは後述するが、本実施形態では、削減候補色点として決定した色点を削除しても3頂点曲線メッシュの画質が基準以上であると判定部1074が判断した場合には、色点候補削減部1071は、削減候補色点として決定しなかった色点から更に削減候補色点を決定する。例えば、図10(d)に示す如く、3頂点曲線メッシュに45個の色点を設定した状態で色点候補削減部1071が処理を開始し、その結果、星形の色点を削除しても3頂点曲線メッシュの画質が基準以上であると判定部1074が判断した場合には、この星形の色点を削除し、その結果、3頂点曲線メッシュ上の色点は図10(c)に示す如く、15個となる。そして色点候補削減部1071は、同様の処理を行うことで、この15個の色点のうち、図10(b)の6個の色点と位置が異なる色点(黒丸の色点)を削減候補色点として決定する。そして、黒丸の色点を削除しても3頂点曲線メッシュの画質が基準以上であると判定部1074が判断した場合には、この黒丸の色点を削除し、その結果、3頂点曲線メッシュ上の色点は図10(b)に示す如く、6個となる。
図1に戻って、色情報補間部1072は、3頂点曲線メッシュにおいて色点候補削減部1071が削減候補色点として決定した色点の色情報を、該3頂点曲線メッシュにおいて削減候補色点として決定されなかった色点の色情報から補間により求める。例えば、図10(d)において星形の色点を削減候補色点として決定した場合、星形の色点の色情報を、白丸の色点、二重丸の色点、黒丸の色点等の色情報を用いて補間により求める(例えば、それぞれの星型の色点に対し、白丸の色点、二重丸の色点、黒丸の色点の中の最も近い2つの色点の色情報の平均値を、該星形の色点の色情報とする)。より具体的には、図10(d)の場合、色点1005の色情報は、色点1001の色情報と色点1004の色情報との平均値とし、色点1006の色情報は、色点1004の色情報と色点1003の色情報との平均値とする。これは、色点1005は、色点1001と色点1004との間の辺上の中間にあり、色点1006は、色点1004と色点1003との間の辺の中間にあることから、容易に理解できる。
また、星型の色点に加えて、黒丸の色点も削減候補色点と決定した場合には、黒丸の色点の色情報を、削減候補色点とはなっていない白丸の色点の色情報、二重丸の色点の色情報から補間して求める(例えば、それぞれの黒丸の色点に対し、白丸の色点、二重丸の色点の中の最も近い2つの色点の色情報の平均値を、該黒丸の色点の色情報とする)。図10(c)に着目すると、例えば、色点1004の色情報は、色点1001の色情報と色点1003の色情報との平均値とする。これは、色点1004は、色点1001と色点1003との間の辺上の中間にあることから、容易に理解できる。黒丸の色点の色情報を求めた後は、白丸の色点、二重丸の色点に加え、補間により色情報を求めた黒丸の色点をも用いて、上述の方法と同様に星形の色点の色情報を補間により求める。
以下同様に、星型の色点、黒丸の色点に加えて、二重丸の色点も削減候補色点である場合には、まず、二重丸の色点の色情報を、削減候補色点とはなっていない白丸の色点の色情報から補間して求める。図10(b)に着目すると、例えば、色点1003の色情報は、色点1001の色情報と色点1002の色情報の平均値とする。これは、色点1003は、色点1001と色点1002との間の辺上の中間にあることから、容易に理解できる。
ここで、ある分割指数kw(0<kw<k、但し、kは最大色点数に対応する分割指数で、以下、最大分割指数とも称する)における数の色点のうち削減候補色点として決定した色点に着目する。削減候補色点の位置B(l1,m1,q1)における色情報を、その最近傍にある削減候補色点ではない色点のうちの2つの色情報(B(l0,m0,q0)における位置の色情報、B(l2,m2,q2)における位置の色情報)の平均値とする。ただし、l1、m1、q1において、l0=l1=l2、m0=m1=m2、q0=q1=q2、のいずれか一つ、かつ、そのひとつのみが成立している。また、成立しなかった2つも含めて、l1=(l0+l2)/2、m1=(m0+m2)/2、q1=(q0+q2)/2が成立している。
次に、誤差生成部1073は、色点候補削減部1071が削減候補色点として決定したそれぞれの色点について、色情報補間部1072が該色点について補間により求めた色情報と、色情報抽出部105が該色点について入力画像から取得した色情報と、の差分(誤差)を求める。差分を求める方法には様々な方法が考え得るが、ここでは一例として、削減候補色点として決定した色点ごとに、色情報補間部1072が該色点について補間により求めた色情報と、色情報抽出部105が該色点について入力画像から取得した色情報と、の差の二乗を上記の「差分」として求める。そして、誤差生成部1073は、削減候補色点として決定したそれぞれの色点について求めた差分の総和を最大色点数で割り、最大色点数に基づく、色点一点当たりの誤差値θk−1(差分二乗値)を求める。なお、削減候補点ではない色点に関しては、差分は0となるため、前述の最大色点数に基づく、色点一点当たりの誤差値θk−1に影響を与えない。
次に、判定部1074は、誤差生成部1073が求めた「色点一点当たりの誤差値θk−1」と、許容値設定部106が設定した誤差許容値(固定値Th)と、の大小比較を行い、誤差値θk−1が誤差許容値よりも小さいか否かを判断する。この判断の結果、誤差値θk−1が誤差許容値よりも小さい場合には、削減候補色点数をさらに増やすことができると判断し、最大色点数Nの色点から更に削減候補色点を決定させるべく、色点候補削減部1071以降に動作を行わせる。
これにより、色点候補削減部1071は、最大色点数決定部103が設定した最大色点数Nに対応する分割指数をkとすると、分割指数(k−2)に対応する数の色点の3頂点曲線メッシュ内の位置を、色点候補位置設定部104と同様にして求める。そして、色点候補削減部1071は、分割指数kに対応する数(最大色点数)の色点のうち非削減候補色点(すなわち、分割指数(k−1)に対応する数の色点)を対象とし、該対象とする非削減候補色点のうち、分割指数(k−2)に対応する数の色点と、その位置が異なる色点を、削減候補色点として決定する。そして、色情報補間部1072は、3頂点曲線メッシュにおいて色点候補削減部1071が削減候補色点として決定した色点の色情報を、該3頂点曲線メッシュにおいて削減候補色点として決定されなかった色点の色情報から補間により求める。そして誤差生成部1073は、色点候補削減部1071が削減候補色点として決定した色点一点当たりの誤差値θk−2(差分二乗値)を求める。判定部1074は、誤差値θk−2と誤差許容値(固定値Th)との大小比較を行い、誤差値θk−2が誤差許容値よりも小さい場合には、削減候補色点数をさらに増やすことができると判断し、色点候補削減部1071に対して、最大色点数Nの色点から更に削減候補色点を決定させるべく、色点候補削減部1071以降に動作を行わせる。
このように、色点候補削減部1071、色情報補間部1072、誤差生成部1073による「誤差値θk−m(mは1以上の整数)を求める」処理を、m=1,2,…について行い、誤差値θk−l(1≦l≦k)が誤差許容値以上となった時点で、判定部1074は、削減候補色点数をさらに増やすことは適切ではないと判断し、その旨を色点情報確定部1075に通知する。
色点情報確定部1075は、直前に吟味した分割指数(上記の例の場合、(k−m))では、適切な条件が維持できなくなることが判明したために動作がここに移されてきたことを考慮する。即ち、直前に吟味した分割指数より1だけ大きな分割指数を、3頂点曲線メッシュにおける適切な分割数(以下、最終分割数と称する)として扱う。この最終分割数に対応する色点数での色点の位置とそれら位置での色情報をもって、該3頂点曲線メッシュにおける色点情報とする。そして、メッシュ生成部102で生成した全ての3頂点曲線メッシュについて色点情報の生成を完了していれば、色点情報確定部1075は、その旨をメッシュ情報出力部108に通知する。一方、未だ色点情報を生成していない3頂点曲線メッシュが残っている場合には、色点情報確定部1075は、色点情報が未確定の3頂点曲線メッシュを対象として、最大色点数決定部103以降の動作を行わせる。
メッシュ情報出力部108では、以上説明した動作で求められた3頂点曲線メッシュの数と各3頂点曲線メッシュの頂点に関する情報や、各3頂点曲線メッシュにおける色点数や色点の位置、それらの位置における色情報等を含むメッシュ情報を出力する。即ち、これまでの処理で得られた3頂点曲線メッシュの情報をベクトル情報として出力する。
図1の最大色点数決定部103以降の各機能部による処理について、図9のフローチャートを用いて説明する。なお、図9のフローチャートに従った処理は、1つの3頂点曲線メッシュに対する処理であるから、実際には、図9のフローチャートに従った処理は、メッシュ生成部102が生成したそれぞれの3頂点曲線メッシュに対して行われることになる。また、図9のフローチャートに従った処理は、以上説明した処理と異なる部分があるが、何れも実質的には同じ処理である。
<ステップS9010>
最大色点数決定部103は、3頂点曲線メッシュの最大分割指数を設定する。ここでは最大分割指数=3とする。
<ステップS9020>
最大色点数決定部103は、ステップS9010で設定した最大分割指数に対応する最大色点数Nを設定する。最大分割指数=3の場合、図11からN=45となる。次に、色点候補位置設定部104は、3頂点曲線メッシュ内における45個の色点のそれぞれの位置(座標)を求め、色情報抽出部105は、45個の色点のそれぞれの位置における色情報を、入力画像から取得する。
<ステップS9030>
許容値設定部106は、色点数の削減を図る上で、必要以上の削減を抑えるための基準とする値としての誤差許容値Thを定める。ここではTh=1.0とする。
<ステップS9040>
色点候補削減部1071は、現在分割数を示す変数Aに、ステップS9010で設定した最大分割指数=3を設定する。
<ステップS9050>
色点候補削減部1071は、直前分割数を示す変数Bに、変数Aの値を設定する。
<ステップS9060>
色点候補削減部1071は、変数Aの値を1つデクリメントする。
<ステップS9070>
色点候補削減部1071は、変数Aの値が0以上であるか否かを判断する。この判断の結果、変数Aの値が0以上である場合には、処理はステップS9080に進み、変数Aの値が0未満である場合には、処理はステップS9120に進む。
<ステップS9080>
色点候補削減部1071は、分割指数Aに対応する数の色点の3頂点曲線メッシュ内の位置を、色点候補位置設定部104と同様にして求める。そして、色点候補削減部1071は、分割指数Bに対応する数の色点のうち、分割指数Aに対応する数の色点と、その位置が異なる色点を、削減候補色点として決定する。
<ステップS9090>
色情報補間部1072は、3頂点曲線メッシュにおいて色点候補削減部1071が削減候補色点として決定した色点の色情報を、該3頂点曲線メッシュにおいて削減候補色点として決定されなかった色点の色情報から補間により求める。
<ステップS9100>
誤差生成部1073は、色点候補削減部1071が削減候補色点として決定したそれぞれの色点について、色情報補間部1072が該色点について補間により求めた色情報と、色情報抽出部105が該色点について入力画像から取得した色情報と、の差分を求める。そして、誤差生成部1073は、削減候補色点として決定したそれぞれの色点について求めた差分の総和を最大色点数で割り、最大色点数に基づく、色点一点当たりの誤差値θk−1(差分二乗値)を求める。
<ステップS9110>
判定部1074は、誤差値θk−1が誤差許容値よりも小さいか否かを判断する。この判断の結果、誤差値θk−1が誤差許容値よりも小さい場合には、処理はステップS9050に進み、誤差値θk−1が誤差許容値以上である場合には、処理はステップS9120に進む。
<ステップS9120>
色点情報確定部1075は、最終分割数Bに対応する色点数での色点の位置とそれら位置での色情報をもって、該3頂点曲線メッシュにおける色点情報とする。もちろん、色点情報には、色点に係る他の情報を含めても良い。
<第1の実施形態の変形例>
図1に示した各部はハードウェアで構成しても良いが、ソフトウェア(コンピュータプログラム)として実装しても良い。この場合、このソフトウェアは、PC(パーソナルコンピュータ)等、一般のコンピュータのメモリにインストールされることになる。そしてこのコンピュータのCPUがこのインストールされたソフトウェアを実行することで、このコンピュータは、上述の画像処理装置の機能(図1に示した各部の機能)を実現することになる。即ち、このコンピュータは、上述の画像処理装置に適用することができる。図12を用いて、第1の実施形態に係る画像処理装置として適用可能なコンピュータのハードウェア構成例について説明する。
CPU1501は、RAM1502やROM1503に格納されているコンピュータプログラムやデータを用いて処理を実行することで、コンピュータ全体の動作制御を行うと共に、画像処理装置が行うものとして説明した上述の各処理を実行若しくは制御する。即ち、図1に示した各部が行うものとして上述した各処理を実行若しくは制御する。
RAM1502は、外部記憶装置1507や記憶媒体ドライブ1508からロードされたコンピュータプログラムやデータ、I/F(インターフェース)1509を介して外部装置から受信したデータなどを一時的に記憶するためのエリアを有する。更に、RAM1502は、CPU1501が各種の処理を実行する際に用いるワークエリアを有する。即ち、RAM1502は、各種のエリアを適宜提供することができる。ROM1503には、コンピュータの設定データや、ブートプログラムなどが格納されている。
キーボード1504、マウス1505は、コンピュータの操作者が操作することで、各種の指示をCPU1501に対して入力することができるユーザインターフェースの一例である。例えば、上記の最大分割指数等、設定するものとして説明した各種の情報は、ユーザがキーボード1504やマウス1505を操作することで入力しても構わない。
表示装置1506は、CRTや液晶画面などにより構成されており、CPU1501による処理結果を画像や文字などをもって表示することができる。例えば、上記入力画像を表示したり、3頂点曲線メッシュ群などを表示したりすることができる。
外部記憶装置1507は、ハードディスクドライブ装置に代表される大容量情報記憶装置である。外部記憶装置1507には、OS(オペレーティングシステム)や、図1に示した各部の機能をCPU1501に実現させるためのコンピュータプログラムやデータ、上記入力画像のデータ、既知の情報として説明した情報等が保存されている。外部記憶装置1507に保存されているコンピュータプログラムやデータは、CPU1501による制御に従って適宜RAM1502にロードされ、CPU1501による処理対象となる。
記憶媒体ドライブ1508は、CD−ROMやDVD−ROMなどの記憶媒体に記録されているコンピュータプログラムやデータを読み出し、該読み出したコンピュータプログラムやデータを外部記憶装置1507やRAM1502に出力する。なお、外部記憶装置1507に保存されているものとして説明した情報の一部若しくは全部をこの記憶媒体に記録させておき、この記憶媒体ドライブ1508に読み取らせても良い。
I/F1509は、外部装置をコンピュータに接続する為のものである。例えば、ディジタルカメラなど、上記入力画像を取得するための装置を、このI/F1509に接続し、この装置から入力画像をI/F1509を介してRAM1502や外部記憶装置1507に取得するようにしても良い。1510は、上述の各部を繋ぐバスである。
上述構成において、本コンピュータの電源がONになると、CPU1501はROM1503に格納されている上記ブートプログラムに従って、外部記憶装置1507からOSをRAM1502にロードする。この結果、キーボード1504、マウス1505を介した情報入力操作が可能となり、表示装置1506にGUIを表示することが可能となる。ユーザが、キーボード1504やマウス1505を操作し、外部記憶装置1507に格納された画像処理用アプリケーションプログラムの起動指示を入力すると、CPU1501はこのプログラムをRAM1502にロードし、実行する。これにより、本コンピュータが上記の画像処理装置として機能することになる。
CPU1501が実行する画像処理用のアプリケーションプログラムは、基本的に図1の各処理部、及び、図9の各ステップに示す各構成要素に相当する関数を備えることになる。
[第2の実施形態]
第1の実施形態でも述べたが、第1の実施形態では、最大色点数N=45としたが、これは説明を具体的に行うためであって、第1の実施形態はN=45に特化した実施形態ではなく、Nは他の値であっても構わない。
また、第1の実施形態では、最大色点数Nは全ての3頂点曲線メッシュで同じとしたが、3頂点曲線メッシュごとに、3頂点曲線メッシュの面積などに応じた適当な最大色点数Nを設定しても構わない。例えば、3頂点曲線メッシュの面積(若しくは面積の大小に応じて大小となる値)より少ない値や、3頂点曲線メッシュを構成する三頂点間を繋ぐ3本の線の中で最も長い線の線長より小さな値を分割数としたときに、対応する色点数としても良い。3頂点曲線メッシュの面積とは、3頂点曲線メッシュ内に含まれる画素数のことであるが、該3頂点曲線メッシュを構成する三頂点のそれぞれの座標値から求まる、該三頂点で構成される三角形の面積をもって、該3頂点曲線メッシュの面積としてみなしてもよい。
例えば、ある3頂点曲線メッシュの面積(若しくは面積の大小に応じて大小となる値)が42である場合には、最大色点数はそれより小さな15とする等の決め方でもよい。また、3頂点曲線メッシュの三頂点間を繋ぐ3本の線の中で最長の線長が7のときには分割数4に対応する色点数15とする等の決め方であってもよい。面積に着目すると、広い3頂点曲線メッシュには多めの、狭い3頂点曲線メッシュには少なめの最大色点数を取ることとなり、最大色点数を固定値とするときに比して、3頂点曲線メッシュで表現しなければならない画素数に見合った適応的な値とすることができる。3頂点曲線メッシュの三頂点間を繋ぐ3本の線の中で最長の線長に着目すると、固定的な分割数に対応した色点数とする場合に比し、各線上を冗長に分割することなく、適応的な分割数で分割して得られる色点数を最大色点数とすることができる。
[第3の実施形態]
第1の実施形態では、誤差許容値Thの値を1.0として説明したが、これは説明を具体的に行うためであって、第1の実施形態はTh=1.0に特化した実施形態ではなく、Thは他の値であっても構わない。
また、このThの値は、全ての3頂点曲線メッシュで共通であることに限るものではなく、3頂点曲線メッシュごとに、3頂点曲線メッシュの面積などに応じて適応的に定めてもよい。例えば、3頂点曲線メッシュに依らないある固定値を3頂点曲線メッシュの面積で除算した値の様に、3頂点曲線メッシュの面積にほぼ反比例した値として定めても良い。この場合には、最大色点数における色点一点当たりでどの程度の広さを持つ領域を表現するために用いるかといった観点も考慮した値として許容値を適応的に定めていると考えることができる。あるいは、誤差許容値自体は第1の実施形態と同様であっても、判定部1074(ステップS9110)で、色点一点当たりの誤差と誤差許容値(固定値Th)との単順な比較とはせず、3頂点曲線メッシュの面積を考慮した判定をする様に構成してもよい。即ち、誤差値に面積を乗算する等により、誤差値を3頂点曲線メッシュの面積にほぼ比例した値に換算した上で、換算済みの誤差値とThとの大小比較を行うようにしても構わない。さらに、誤差生成部1073(ステップS9100)で誤差値自体を3頂点曲線メッシュの面積にほぼ比例した値に換算した値とするように構成しても良い。
(その他の実施例)
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。