画像処理装置、画像処理方法、及びプログラム
【課題】重なりの無い曲線メッシュ群へと、画像をより高速に分割する。
【解決手段】入力画像中の各エッジ線を曲線近似する。近似された曲線の両端を頂点として利用し且つ該曲線を内包する多角形領域を設定する。入力画像において多角形領域外に複数の頂点を設定する。多角形領域の各頂点及び設定した各頂点を分割用頂点とし、入力画像において多角形領域外の領域を、分割用頂点間を辺とするメッシュに分割する。曲線の両端間については曲線、曲線の両端間以外の分割用頂点間について定めたメッシュ辺、を境界線とし、それぞれの境界線で入力画像を分割することで得られるそれぞれの領域をメッシュとして符号化する。
【解決手段】入力画像中の各エッジ線を曲線近似する。近似された曲線の両端を頂点として利用し且つ該曲線を内包する多角形領域を設定する。入力画像において多角形領域外に複数の頂点を設定する。多角形領域の各頂点及び設定した各頂点を分割用頂点とし、入力画像において多角形領域外の領域を、分割用頂点間を辺とするメッシュに分割する。曲線の両端間については曲線、曲線の両端間以外の分割用頂点間について定めたメッシュ辺、を境界線とし、それぞれの境界線で入力画像を分割することで得られるそれぞれの領域をメッシュとして符号化する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、画像をベクトル化する画像処理技術に関し、特に、ラスタ画像をメッシュ単位に符号化するベクトル化技術に関するものである。
【背景技術】
【0002】
従来から、画像をベクトルデータで表現(ベクトル表現)する技術が知られている。ベクトルデータで表現される画像は、大小さまざまなサイズで表示した場合にもシャギーが目立たないという利点がある。ベクトル表現に対し、それぞれの画素の色データによって画像を表現する方法はラスタ表現と呼ばれる。また、ラスタ表現された画像をベクトル表現に変換することをベクトル化と呼ぶ。
【0003】
画像をベクトル化する方法の1つとして、画像内のエッジを線分群として抽出し(以下、エッジ線と呼ぶ)、エッジ線に従って画像を3頂点直線メッシュ群に分割する技術(非特許文献1)が知られている。3頂点直線メッシュ群とは各メッシュの頂点が3つであり、頂点間を結ぶメッシュの辺が全て線分であるものを指す。そして、それぞれのメッシュについての位置情報と色情報とが、ベクトル表現として記録される。直線メッシュ群は、制約付きドロネー三角形分割を利用することで高速に生成することができる。
【0004】
また、エッジ線に従って画像を3頂点曲線メッシュ群に分割する技術(非特許文献2)も知られている。ここで、3頂点曲線メッシュ群とは、各メッシュの頂点が3つであり、メッシュ群を構成する辺の少なくとも1つ以上が曲線であるものを指す。
【先行技術文献】
【非特許文献】
【0005】
【非特許文献1】Lakshman Prasad, Alexei Skourikhine, 「Raster to Vector Conversion of Images for Efficient SVG Representation」, In Proceedings of SVGOpen‘05.
【非特許文献2】Tian Xia, Binbin Liao, and Yizhou Yu, 「Patch−Based Image Vectorization with Automatic Curvilinear Feature Alignment」, ACM SIGGRAPH Asia 2009, Vol.28, No.5.
【発明の概要】
【発明が解決しようとする課題】
【0006】
以降では、3頂点直線メッシュ群に限らず、頂点間を結ぶメッシュの辺が全て線分であるメッシュ群を直線メッシュ群とする。また、3頂点曲線メッシュ群に限らず、メッシュ群の辺のうち少なくとも1つ以上が曲線であるものを曲線メッシュ群とする。
【0007】
非特許文献1のように、画像の特徴を表す線分群(エッジ線を含み、以下特徴線と呼ぶ)を直線メッシュ群で精度良く再現するためには、特徴線を多くの線分を用いて表現する必要があり、すなわち画像を表現するために必要なメッシュが多くなる。一般にメッシュ数が増えると、編集の容易性が低下する。また、曲線である特徴線も線分で表現するため、特に拡大した際に画質の劣化が目立つ。
【0008】
この問題に対処する方法として、画像を曲線メッシュ群に分割する方法が提案されている。曲線メッシュ群を作成する方法としては、まず画像を直線メッシュ群に分割し、この直線メッシュ群を構成する辺のうち特徴線を近似する辺を曲線化する方法がある。しかしながらこの方法においては、曲線化を行った際に、メッシュの辺同士が交差することがあるという問題がある。
【0009】
この問題について、図5を参照して説明する。図5(A)は、矩形のラスタ画像と、画像から検出された特徴線501とを示す。このラスタ画像はまず、直線メッシュ群に分割される。具体的には図5(B)に示すように、特徴線501を近似する線分502が求められる。また、図5(B)に示すように、線分502の両端及びラスタ画像の4隅に、点が配置される(配置された点を黒丸で示す)。そして、これらの点を頂点とし、かつ線分502をメッシュの辺として含むという制約条件のもとで3頂点直線メッシュを生成することにより、例えば図5(C)のような3頂点直線メッシュ群が得られる。ここで実線及び点線は共にメッシュの辺を表す。最後に、特徴線501を近似する線分502を、特徴線501に沿う曲線504に変えることにより、図5(D)に示す3頂点曲線メッシュ群を得ることができる。図5(D)において、それぞれがメッシュの辺である線分503と曲線504とは交差している。すなわち、メッシュ同士が重なっている。
【0010】
このようなメッシュ同士の重なりは、メッシュを利用して画像をベクトル表現する際に画質劣化を引き起こす。これについて以下に詳しく説明する。特徴線を近似する曲線が、メッシュの辺と交差する場合、いずれかのメッシュは特徴線を近似する曲線を内部に含むこととなる。例えば図5(D)の場合、線分503の右上のメッシュは、曲線504を内部に含む。ところでメッシュを用いて画像をベクトル表現する際には、それぞれのメッシュについての色情報が記録される。この場合、各メッシュ内には色の急激な変化が無いことを前提として、メッシュ内での滑らかな色変化を表現できる形式で色情報を記録することが多い。すなわち、ベクトル表現した画像を表示する場合、メッシュ内の領域はなめらかに変化する色で表現される。一方で特徴線は、エッジ線や、前景と背景の境界などの、色が急激に変化する部分を表すことが多い。このように、特徴線を近似する曲線を内部に含むメッシュにおいては、特徴線を挟んだ画素同士の色の変化を正しく表現できないことがある。このことは、メッシュの重なり部分における色の滲みに、すなわち画質劣化につながる。
【0011】
非特許文献2は、メッシュ同士が重ならないように、曲線メッシュ群を生成する方法を提案している。非特許文献2の方法によれば、エッジ線を忠実に再現する十分に短い線分群をメッシュの辺とし、かつラスタ画像の全画素を頂点とする直線メッシュ群が生成される。そして、優先度の低いメッシュ同士を大きなメッシュに統合する処理と、エッジ線に沿うメッシュの辺を曲線化する処理と、を交互に繰り返す。非特許文献2の方法は、曲線化を行った際にメッシュ同士が重なるようなメッシュ同士の統合を行わないという制約を用いることにより、メッシュ同士が重なることを防いでいる。しかしながら非特許文献2の方法は、最初に生成するメッシュが非常に細かく、メッシュを統合するための多くの処理が必要とされることから、処理時間が比較的長いという課題がある。
【0012】
本発明は、重なりの無い曲線メッシュ群へと、画像をより高速に分割することを目的とする。
【課題を解決するための手段】
【0013】
本発明の目的を達成するために、例えば、本発明の画像処理装置は以下の構成を備える。すなわち、
入力画像を複数のメッシュに分割し、分割したメッシュ毎に符号化する画像処理装置であって、
前記入力画像中の各エッジ線を曲線近似する近似手段と、
前記近似手段により近似された曲線の両端を頂点として利用し且つ該曲線を内包する多角形領域を設定する第1の設定手段と、
前記入力画像において前記多角形領域外に複数の頂点を設定する第2の設定手段と、
前記多角形領域の各頂点及び前記第2の設定手段が設定した各頂点を分割用頂点とし、前記入力画像において前記多角形領域外の領域を、該分割用頂点間を辺とするメッシュに分割する分割手段と、
前記曲線の両端間については前記曲線、前記曲線の両端間以外の前記分割用頂点間については前記分割手段が定めたメッシュ辺、を境界線とし、それぞれの境界線で前記入力画像を分割することで得られるそれぞれの領域をメッシュとして符号化する符号化手段と
を備えることを特徴とする。
【発明の効果】
【0014】
本発明によれば、重なりの無い曲線メッシュ群へと、画像をより高速に分割することができる。
【図面の簡単な説明】
【0015】
【図1】実施例1に係る画像処理装置の機能構成例を示すブロック図。
【図2】望ましくないエッジ線を説明する図。
【図3】曲線メッシュ生成部103が行う各処理を詳しく説明する図。
【図4】曲線メッシュ生成部103が行う処理のフローチャート。
【図5】曲線メッシュ生成部103が行う処理の概要を説明する図。
【図6】拘束領域の設定方法を説明する図。
【図7】実施例3に係る処理のフローチャート。
【図8】3次のベジェ曲線の分割方法を説明する図。
【図9】実施例3に係る各処理を詳しく説明する図。
【図10】実施例4に係るコンピュータのハードウェア構成例を示す図。
【図11】エッジ線構成部の動作について説明する図。
【図12】領域の境界線を特徴線として検出する場合の処理を説明する図。
【発明を実施するための形態】
【0016】
以下、添付図面を参照し、本発明の好適な実施例について説明する。なお、以下で説明する実施例は、本発明を具体的に実施した場合の一例を示すもので、特許請求の範囲に記載の構成の具体的な実施例の1つである。以下で説明する各実施例によれば、メッシュ同士が重ならないように、特徴線が曲線で再現されている曲線メッシュ群を生成することができる。図に示される画像の例を参照して以下の説明はなされるが、いかなる画像であっても処理の対象とすることができることが理解されるだろう。
【実施例1】
【0017】
実施例1では、ラスタ画像をメッシュ分割に基づいてベクトル表現する(メッシュ符号化)際に、特徴線が曲線で再現される、メッシュ同士の重なりが無い3頂点曲線メッシュ群を生成する方法を説明する。本実施例で提案する処理手順に従えば、曲線メッシュを構成する辺がどのような種類であっても、重なりが無い曲線メッシュ群を生成することができる。例えば曲線メッシュを構成する辺は、ベジェ曲線、B−スプライン等の曲線でありうる。
【0018】
本実施例に係る説明に先立って、先ず、3頂点曲線メッシュについて説明する。本実施例では説明のために、各曲線メッシュとして、パラメトリック曲面の1つである3頂点のベジェパッチを用いる。特に本実施例では、曲線メッシュとして3次のベジェパッチを用いる。3次のベジェパッチを用いる場合、曲線メッシュの各辺は3次のベジェ曲線となる。このため、生成された曲線メッシュをユーザが編集することが容易である。
【0019】
P1、P2、P3を頂点とする3次のベジェパッチ内の点は以下の式で表される。
【数1】
【0020】
ここで、s、t、uはパッチ内の重心座標である。また、p1,p2,p3はそれぞれ、頂点P1,P2,P3の座標値である。また、c1,c2,c3,c4,c5,c6、c7は、ベジェパッチの形状を定めるパラメータである。ここで、c1〜c6はベジェパッチの輪郭を決める3つのベジェ曲線(辺)の制御点に対応するパラメータである。c7はベジェパッチの輪郭には関与しないパラメータであり、本実施例ではベジェパッチの頂点の座標と、輪郭を成すベジェ曲線の制御点に対応するパラメータから
【数2】
によって定める。
【0021】
次に、本実施例に係る画像処理装置100の機能構成例について、図1のブロック図を用いて説明する。本実施例に係る画像処理装置100は、入力画像を複数のメッシュに分割し、分割されたそれぞれのメッシュ毎に画像を符号化する。図1に示すように本実施例に係る画像処理装置100は、画像入力部101、特徴線構成部102、曲線メッシュ生成部103、色情報生成部104、及び符号化部105を有する。もちろん、画像処理装置の構成はこれには限定されない。図1に示した幾つかの構成要素は1つにまとめられていてもよい。また、図1に示した構成に対して、更なる機能を有する機能部を加えても良い。
【0022】
画像入力部101には、ラスタ表現の画像が入力画像として入力される。この入力画像はカラー画像、グレー画像、白黒画像のいずれでも構わない。入力画像は矩形画像でも構わないし、他の形状の画像であってもよい。入力画像の一部をベクトル化したい場合には、背景部に透過色が設定されている入力画像等が与えられてもよく、この場合本実施例に係る画像処理装置は透過色が設定されていない部分をベクトル化してもよい。
【0023】
特徴線構成部102は、この入力画像から、特徴線を線分群として検出する。本実施例においては、エッジ線が特徴線として取り扱われる。すなわち特徴線構成部102は、入力画像中のエッジ線を検出する。本実施例において特徴線構成部102は、エッジ検出部とエッジ線構成部とを有する。エッジ検出部は、入力画像からエッジを構成する画素(以下、エッジ画素と称する)を検出する。本実施例ではキャニー法という既知の方法を用いてエッジを構成する画素を検出するが、他の手法を用いても構わない。
【0024】
エッジ線構成部は、エッジ検出部で検出されたエッジ画素のうち、隣接する画素同士を結ぶ線分を、エッジを再現する線分群として求める。画素同士が隣接しているか否かを判定するための基準は、いくつか存在する。例えば、エッジ画素である注目画素の上、下、左、又は右にエッジ画素が存在する場合、これらの画素は隣接しているものと判定してもよい。この判定基準を、4連結接続と称する。また、エッジ画素である注目画素の上、下、左、右、右上、右下、左上、又は左下にエッジ画素が存在する場合、これらの画素は隣接しているものと判定してもよい。この判定基準を、8連結接続と称する。
【0025】
本実施例では8連結接続を用いる。しかしながら、キャニー法によって検出されたエッジ画素から、8連結接続に従って線分群を求めると、エッジ線としては望ましくない線分群が得られる場合がある。その様子を図2を用いて説明する。図2(A),(B)は、画像中のある領域を構成する画素群を示す。図2(A),(B)において、1つの四角形は1つの画素を表す。また、ハッチングされた四角形はエッジ画素を表し、ハッチングされていない四角形はエッジ画素以外の画素(非エッジ画素)を表す。
【0026】
図2(A)のエッジ画素群について、8連結接続に従って隣接するエッジ画素同士を結ぶと、エッジ画素201、202、及び203を通るループが生成される。このようなループの発生は抑制されることが好ましい。そこで本実施例では、8連結接続に従って線分群を求める前に、Hilditch細線化法という既知の手法を用いる。図2(A)に示したエッジ画素群に対してHilditch細線化を行うと、エッジ画素201は非エッジ画素となる。その結果、図2(B)に示すように、エッジ画素(204〜207)がループのない線分群によって結ばれることになる。
【0027】
エッジ線構成部の動作について更に、図11を参照して補足する。図11は、図2(A)(B)と同様に、画像中のある領域を構成する画素群を示す。ハッチングされた四角形は、Hilditch細線化法を行った後のエッジ画素を示す。また、ハッチングされていないが四角形はHilditch細線化法を実施した後の非エッジ画素を示す。エッジ画素1101の周囲8画素のうち3つがエッジ画素であり、これらのエッジ画素は全て8連結接続に従って隣接しているものと判定される。しかしながら、エッジ画素1101及び周囲の3画素の全てを、分岐の無い単一の線分群で表現することはできない。このような場合、エッジ画素1101を線分群を構成するそれぞれの線分の端点に設定すればよい。この場合、エッジ画素1101を端点とする3つの線分群1102,1103,1104によって、エッジ線を表現することができる。
【0028】
特徴線構成部102は、エッジ線ではなく、又はエッジ線に加えて、ベクトル化の対象である領域の輪郭を特徴線として抽出してもよい。既に述べたように、入力画像の一部をベクトル化するために入力画像の一部が透過色に設定されている場合は、特徴線構成部102は透過色と非透過色の境界上の画素を輪郭画素として判定してもよい。この輪郭画素は、ベクトル化対象である領域の輪郭を示す。輪郭画素を通る線分群は、上述のエッジ線構成部が行う方法と同様にして求めることができる。
【0029】
また特徴線構成部102は、入力画像を領域分割し、その境界線を特徴線としてもよい。領域分割法としては、最近傍法を用いたもの、EMアルゴリズムを利用したものなど、多くの手法が知られている。このような領域分割法を用いて、図12に示すように、入力画像が、白色の領域1211と、右下がりの斜線の領域1212と、右上がりの斜線の領域1213とに分割されたものとする。このような場合、特徴線はそれぞれの領域の境界線1201、1202、1203となる。
【0030】
これらの領域の輪郭及び領域の境界線を含む、画像の特徴線は、通常は画像中のエッジを表す。したがって、以下の説明においてエッジ線とは、上述のように検出された領域の輪郭及び領域の境界線を含むものとする。
【0031】
図1に戻って、曲線メッシュ生成部103は、メッシュ同士が重ならないように、入力画像をメッシュ群に分割する。上述のように、メッシュ群によって特徴線が再現される。曲線メッシュ生成部103が行う具体的な処理手順の説明を行うに先立ち、まず、本実施例の曲線メッシュ生成部103が行う処理の基本的なアイデアを、図5を参照して説明する。
【0032】
既に述べたように、図5(A)は、矩形のラスタ画像と、その画像から検出された特徴線501とを示す。まず図5(E)に示すように、特徴線501は曲線504へと近似される。さらに、曲線504を内包する三角形が生成される。図5(E)において、この三角形は線分502、線分506、及び線分507によって形成される。以下では、この三角形のように、曲線を内包する多角形内の領域を、拘束領域と呼ぶ。
【0033】
本実施例においては特に、曲線を内包する拘束領域として、以下のような領域が設定される。すなわち、曲線の両端は、拘束領域を構成する頂点のうち2つと一致する。また、曲線のうち両端以外の部分は、拘束領域の内部に含まれる。本実施例において、拘束領域の「内部」の領域には、拘束領域の輪郭上は含まれないこととする。図5(E)の場合は、拘束領域の頂点のうちの2つである頂点511,512は、曲線504の両端の点である。また、曲線504の両端以外の部分は、拘束領域の内部にあることが確認できる。点505は拘束領域を定義するために配置された点であり、この点のことを以下では拘束点と呼ぶ。
【0034】
次に、拘束領域を規定する頂点と画像の4隅とを頂点とし、かつ拘束領域を規定する辺のそれぞれが少なくとも1つのメッシュの辺であるという制約条件のもとで、直線メッシュ群が生成される。このようにして作られた直線メッシュ群を図5(F)に示す。最後に、図5(G)に示すように、拘束領域の辺のうち、曲線504と両端を共有する線分502が、曲線504に置き換えられる。
【0035】
以上のように本実施例においては、曲線を内包する多角形である拘束領域が求められ、この拘束領域の内部にメッシュの辺が存在しないように直線メッシュ群が生成される。したがって本実施例の方法によれば、曲線の両端を結ぶ線分(直線メッシュの一辺)を曲線で置き換えたとしても、曲線と他の辺とは交差しない。
【0036】
以上のアイデアを実現するために、曲線メッシュ生成部103が行う処理について、図4のフローチャートを参照して説明する。図4のフローチャートに示した各ステップにおける処理の主体は、別記ない限り何れも曲線メッシュ生成部103である。以下では説明を容易とするために、画像入力部101に矩形画像が入力され、特徴線構成部102によって図3(A)に示す特徴線301,302が検出された場合について説明する。図3(A)〜(N)において、格子状の枠で区切られたそれぞれの四角形は画素を示す。曲線メッシュ生成部103は、特徴線301,302を再現できるように、かつメッシュ同士が重ならないように、矩形画像をメッシュ群へと分割する。処理される画像は図3(A)の画像に限られるわけではなく、曲線メッシュ生成部103に対して図3(A)に示すものとは異なる画像が入力されたとしても、曲線メッシュ生成部103は以下の説明に従って画像をメッシュ群へと分割することができる。
【0037】
まずステップS401において、曲線メッシュ生成部103は、特徴線構成部102が検出した特徴線を順次選択する。そして曲線メッシュ生成部103は、選択した特徴線上に、特徴点を設定する。特徴点として設定された点は、本実施例の処理の結果得られる曲線メッシュ群の頂点となる。ここで特徴点として設定された2点間を結ぶ特徴線は、最終的には、2点間を結ぶ曲線によって近似される。従って特徴点は、隣接する2つの特徴点間にある特徴線を十分な精度で近似できる程度に狭い間隔で配置されることが好ましい。一方でメッシュの数を減らすことにより処理速度の向上及びデータ量を小さくする観点からは、特徴点はできるだけ広い間隔で配置されることが好ましい。
【0038】
通常、各特徴線の両端は特徴点として設定される。本実施例のように、特徴線がエッジ線である場合には、曲線メッシュ生成部103は各エッジ線の両端を特徴点として設定する。また曲線メッシュ生成部103は、エッジ線上の画素のうち、数画素(例えば10画素)に1つをさらなる特徴点として選択する。図3(B)の例では、さらなる特徴点として特徴点303が設定されている。
【0039】
次にステップS402において曲線メッシュ生成部103は、特徴点で区切られた特徴線の一部を曲線化する。この処理は例えば、曲線メッシュ生成部103が備える不図示の近似部(近似手段)が行うことができる。既に述べたように曲線メッシュ生成部103は、特徴線をどのような曲線へと曲線近似してもよく、例えばベジェ曲線又はB−スプライン曲線などで近似してもよい。本実施例では3次のベジェパッチを各メッシュとして用いる。したがって本実施例において曲線メッシュ生成部103は、3次のベジェ曲線によって特徴線を近似する。なお、特徴線に沿うように曲線のパラメータを設定するアルゴリズムとしては様々なものが考えられるが、本実施例では曲線メッシュ生成部103は最小二乗法を用いる。図3(B)に示される特徴点303,304の間にある特徴線の一部を曲線近似することにより、図3(B)の曲線305が得られたものとする。
【0040】
ステップS403で曲線メッシュ生成部103は、ステップS402で得られた曲線が基準を満たすかを判定する。この処理は例えば、曲線メッシュ生成部103が備える不図示の曲線判定部が行うことができる。この基準は、ステップS402で得られた曲線に対して拘束領域を設定することが容易であるか否かを判定するために用いられる。本施例では特に3次のベジェ曲線について、この基準の一例を説明する。説明を容易にするために、まず座標系及び変数の定義を定義する。図6(A)に3次のベジェ曲線の一例を示す。点P1及び点P2はベジェ曲線の両端の点である。また、点C1及び点C2はそれぞれ、点P1及び点P2におけるベジェ曲線の曲率を定める制御点である。以下の説明では、図6(A)に示すように点P1を座標軸の原点とする。また、点P1と点P2とを結ぶ直線をx軸とし、点P1から点P2に向かう方向を正方向とする。さらに、点P1を中心としてx軸を−90°回転させることにより得られる軸をy軸とする。
【0041】
点P1、P2、C1、C2の座標をそれぞれ(p1x,p1y)、(p2x,p2y)、(c1x,c1y)、(c2x、c2y)と定める。以上の定義によれば、p1x=0、p1y=0、p2x>0、及びp2y=0が成り立つのは明らかである。本実施例においては、ベジェ曲線に対して拘束領域を設定することが容易であるか否かを判定する基準として、以下の条件が定められる。
・条件1:p1x<c1x<p2x、かつp1x<c2x<p2x
・条件2:(c1y≧0かつc2y≧0)もしくは(c1y<0かつc2y<0)
・条件3:(c1y<0かつc2y≧0)もしくは(c1y≧0かつc2y<0)
・条件4:直線P1−C1と直線P2−C2の交点が線分P1−C1および線分P2−C2上に無い
以上の条件のうち、条件1、2、及び4を満たすベジェ曲線は、基準を満たすものと判定される。また、条件1及び3を満たすベジェ曲線もまた、基準を満たすものと判定される。さらに曲線メッシュ生成部103は、ステップS402において得られる曲線が実際には線分である場合にも、この曲線は基準を満たすものと判定してよい。
【0042】
ステップS402において得られた曲線が基準を満たさない場合、処理はステップS401に戻り、特徴点設定がやり直される。特徴点設定をやり直す場合、得られる曲線が基準を満たす可能性が高くなるように、特徴点の設定を行うことが望ましい。通常は曲線が直線形状に近いほど、曲線が基準を満たす可能性が高くなる。設定される特徴点の間隔を狭くすることにより、得られる曲線は直線に近づく。すなわち特徴点設定をやり直す場合には、特徴点を細かく設定し直せばよい。特徴点を設定し直すための方法の一例として、本実施例において曲線メッシュ生成部103は、ステップS403において基準を満たさないと判定された曲線が近似する特徴線の途中に、新たな特徴点を設定する。すなわち曲線メッシュ生成部103は、特徴線を2つ以上に分割すればよい。例えば曲線メッシュ生成部103は、特徴点303,304を両端とする特徴線の途中の点、例えば中間点を、新たな特徴点とすればよい。その後曲線メッシュ生成部103は、ステップS402において、分割されたそれぞれの特徴線を曲線近似する。
【0043】
本実施例のように、特徴線が隣接するエッジ画素を結ぶ線分群で構成される場合、全てのエッジ画素上に特徴点を配置すれば、ステップS403の基準を満たすことができる。なぜなら、この場合特徴点間の特徴線はすべて線分として表現されるからである。すなわち、特徴点の数をだんだん増やしていくことにより、以上の条件を満たすことができる。
【0044】
ステップS404で曲線メッシュ生成部103は、ステップS403の基準を満たした曲線に対して、拘束点と拘束領域の設定を行う。この処理は例えば、曲線メッシュ生成部103が備える不図示の第1の設定部(第1の設定手段)が行うことができる。曲線メッシュ生成部103は、ステップS402で得られた曲線の両端を頂点として有し、かつこの曲線を内包する多角形領域を、拘束領域として設定する。
【0045】
まず、ステップS403において条件1、2、及び4が満たされたベジェ曲線に対して、拘束点と拘束領域を設定する方法を説明する。図6(A)は、条件1、2、及び4が満たされるベジェ曲線である。この場合曲線メッシュ生成部103は、図6(A)の直線P1−C1と直線P2−C2との交点を拘束点として設定する。図6(B)には、この拘束点601が示されている。そして曲線メッシュ生成部103は、図6(B)の点線で囲まれた領域を拘束領域として設定する。この拘束領域は、拘束点と、ベジェ曲線の両端と、によって規定される三角形内の領域となる。図6(B)から、ベジェ曲線は拘束領域に内包されていることが確認できる。
【0046】
次に、ステップS403において条件1及び3が満たされたベジェ曲線に対して、拘束点と拘束領域を配置する方法を説明する。図6(C)は条件1及び3が満たされるベジェ曲線の一例である。この場合曲線メッシュ生成部103は、ベジェ曲線の2つの制御点を、拘束点として設定する。すなわち、図6(D)の点602および点603が拘束点として設定される。そして曲線メッシュ生成部103は、図6(D)の点線で囲まれた領域を拘束領域として設定する。この拘束領域は、拘束点の一方602とベジェ曲線の両端とによって規定される三角形内の領域、及び拘束点の他方603とベジェ曲線の両端とによって規定される三角形内の領域によって構成される。このように、1つの曲線についての拘束領域は1つの三角形から構成されるとは限られず、2つの三角形によって構成されていてもよい。つまり、曲線の両端を結ぶ線分を辺の一部とする2つの三角形を組み合わせることによって得られる四角形内の領域を、拘束領域としてもよい。この四角形の拘束領域が、曲線を内包すればよい。
【0047】
なお、特徴線を近似する曲線が実際には線分である場合、この曲線(線分)に対して拘束点および拘束領域を設定する必要はない。上述のように拘束領域は、メッシュを構成する線分を、特徴線を近似する曲線に置き換える際に、メッシュ同士が重なることを防ぐために設定される。特徴線を近似する曲線が実際には線分である場合、置き換えを行う必要はないから、拘束領域を設定する必要もない。
【0048】
以上で述べたように、本実施例のステップS403およびステップS404では、3次のベジェ曲線に対して、三角形、もしくは2つの三角形を組み合わせた四角形が、拘束領域として設定された。しかしながら、上述の方法は一例にすぎない。実際にはステップS403及びステップS404においては、曲線の両端を結ぶ線分を一辺として有する三角形で構成される拘束領域であって、曲線を内包する拘束領域を設定すればよい。
【0049】
例えば、ステップS403に示される基準を満たさない3次のベジェ曲線に対して、拘束領域を設定することも可能である。また、ステップS404で説明された以外の方法で拘束領域を設定することもできる。例えば図6(A)に示されるベジェ曲線に対して設定される拘束領域は、図6(B)の点線で示される三角形を内部に含む(辺を共有しても良い)、より大きな三角形であってもよい。このような三角形は、例えば拘束点601をy軸正方向に移動させることにより得ることができる。
【0050】
ステップS403及びS404の方法は、拘束領域を設定するためのより有利な方法の例として示したものである。以降で説明するステップS405で行う拘束領域の重なり判定を考慮すると、拘束領域はできるだけ小さい方が望ましい。ステップS403に示した基準を満たす曲線に対しては、より小さい拘束領域を設定することが可能である。このために本実施例においては、曲線がステップS403に示される基準を満たすように、特徴点が再設定される。また、ステップS404の方法もまた、曲線に対してより小さい拘束領域を設定する方法の一例である。
【0051】
また、図6(C)に示される曲線に対して設定される、図6(D)に示される拘束領域は、さらに小さくすることもできる。図6(D)の点602が、矢印の方向、つまり頂点P2の方向へと微小量だけ移動しても、依然として曲線は拘束領域内に内包されている。そこで、例えば以下のような方法で、拘束領域がより小さくなるように、拘束点602,603の位置を決定することができる。すなわち、曲線メッシュ生成部103は、点602と頂点P2とを結ぶ線分上に、任意の個数(例えば10個)の分割点を設定する。そして曲線メッシュ生成部103は、拘束点602から頂点P2に向かって順次分割点を選択し、選択された分割点を頂点とする拘束領域内に曲線が内包されるか否かを判定する。具体的には曲線メッシュ生成部103は、選択された分割点と頂点P1とを結ぶ線分が、曲線と交差しない場合に、曲線は内包されているものと判定すればよい。そして曲線メッシュ生成部103は、拘束点602を、曲線との交差が起こらずかつ頂点P2に最も近い分割点に移動させればよい。拘束点603についても同様に、図6(D)に示す矢印の方向、つまり頂点P1の方向へと移動させることができる。このようにして、より小さい拘束領域を設定することができる。
【0052】
本実施例では、3次のベジェパッチからなる3頂点曲線メッシュ群を生成するために、ステップS402では特徴線が3次のベジェ曲線で近似された。また、ステップS403及びS404では、このベジェ曲線を内包する三角形、又は三角形の組み合わせで構成される多角形が、拘束領域として設定された。しかし、曲線の両端を頂点として有する多角形状を有し、かつ曲線を内包している領域は、拘束領域として用いることができる。したがって曲線が3次のベジェ曲線である必要はない。また、拘束領域が三角形を組み合わせた形状である必要もない。
【0053】
ステップS405で曲線メッシュ生成部103は、ステップS404においてそれぞれの曲線に対して設定された拘束領域同士が重なっているか否かを判定する。この処理は例えば、曲線メッシュ生成部103が備える不図示の領域判定部(判定手段)が行うことができる。図3(E)には、拘束領域が重なっている場合の例を示す。図3(E)では、点304,307,308を結ぶ三角形の拘束領域と、点309,310,311を結ぶ三角形の拘束領域とが重なっている。既に述べたように、それぞれの曲線についての拘束領域に直線メッシュの辺が含まれない場合には、曲線化の後にもメッシュ同士の重なりが起こらない。しかしながら拘束領域同士が重なっている場合、ある曲線についての拘束領域に、他の曲線を内包する直線メッシュの辺が含まれてしまう。この場合、曲線化後にメッシュ同士が重なる可能性がある。このため本実施例においては、拘束領域同士が重なっている場合、曲線メッシュ生成部103は拘束領域の設定をやり直す。
【0054】
本実施例において、拘束領域同士が重なっていると判断するための基準の一例について説明する。異なる2つの拘束領域によって1つの点が共有されている場合には、2つの拘束領域は重なっているものとする。また、2つの拘束領域が頂点のみを共有している場合、又は辺のみを共有している場合には、2つの拘束領域は重なっていないものとする。また、一方の拘束領域の頂点が、他方の拘束領域の頂点以外の辺上にある場合には、2つの拘束領域は重なっているものとする。
【0055】
また、図3(F)に示すように、ステップS404で設定した拘束領域が、まだ拘束領域が設定されていない特徴線の一部もしくは全部を内部に含むことがある。図3(F)においては拘束領域同士の重なりは起こっていないが、後に特徴線302に対して拘束領域を設定すると、拘束領域同士の重なりが起こってしまうのは明らかである。したがって、ステップS404において設定された拘束領域が、ステップS401で選択されていない特徴線を内部に含む場合、曲線メッシュ生成部103は拘束領域の設定をやり直す。ステップS405で曲線メッシュ生成部103は、具体的には、ステップS404において設定された拘束領域内の各画素について、ステップS401で選択されていない特徴線について既に設定されている拘束領域に含まれているか否かを判定すればよい。含まれている場合、曲線メッシュ生成部103は、拘束領域同士が重なっているものと判定できる。また、ステップS404において設定された拘束領域の頂点が、ステップS401で選択されていない特徴線について既に設定されている拘束領域の辺上にあるか否かを判定してもよい。頂点が辺上にある場合、曲線メッシュ生成部103は、拘束領域同士が重なっているものと判定してもよい。
【0056】
ステップS405において拘束領域の重なりが検知された場合、本実施例においては、処理はステップS401に戻る。そして、ステップS401における特徴点設定からステップS404における拘束領域の設定までの、一連の処理がやり直される。ステップS401において特徴点設定をやり直す場合、曲線メッシュ生成部103は、拘束領域の重なりが起きにくくなるように特徴点を設定し直す。この処理は、ステップS403からステップS401に戻った場合と同様に行うことができる。すなわち曲線メッシュ生成部103は、特徴線を2つ以上に分割すればよい。その後曲線メッシュ生成部103は、ステップS402において、分割されたそれぞれの特徴線を曲線近似すればよい。また、ステップS401に戻る代わりに、処理はステップS403に戻ってもよい。ステップS403で拘束領域を設定し直す場合には、曲線メッシュ生成部103はより拘束領域が小さくなるように拘束領域を設定し直す。
【0057】
ステップS406で曲線メッシュ生成部103は、全ての特徴線に対して拘束領域を設定したか否かを判定する。ステップS401で選択された特徴線に、まだステップS402において曲線近似されていない部分が残っている場合、処理はステップS402に戻る。そして、ステップS401で選択された特徴線の残りの部分に対して近似曲線が求められ、さらに拘束領域が設定される。ステップS401で選択された特徴線の全体が曲線近似されており、かつまだ拘束領域が設定されていない特徴線がある場合には、処理はステップS401に戻る。ステップS401では、まだ拘束領域が設定されていない特徴線が選択され、その後この特徴線に対する拘束領域の設定が行われる。ステップS406で全ての特徴線に対して拘束領域を設定したと判定された場合、図3(G)に示すように、特徴線301,302のそれぞれに対して、重なりのない拘束領域が設定されている。ステップS401〜ステップS406までの処理により、特徴線301に対してはベジェ曲線305,312が設定されている。また、特徴線302に対してはベジェ曲線311が設定されている。
【0058】
ステップS407で曲線メッシュ生成部103は、入力画像に対して、メッシュの頂点(補助点)を追加する。この処理は例えば、曲線メッシュ生成部103が備える第2の設定部(第2の設定手段)が行うことができる。曲線メッシュ生成部103は、拘束領域外(多角形領域外)の任意の場所に複数の頂点を追加することができる。本実施例では図3(H)に示すように、縦横5画素間隔で頂点が配置される。また本実施例においては、入力画像の4隅にもメッシュの頂点が追加される。
【0059】
ステップS408で曲線メッシュ生成部103は、ステップS401で設定された特徴点と、ステップS404で設定された拘束点と、ステップS407で設定された補助点とを用いて、直線メッシュ群を生成する。この処理は例えば、曲線メッシュ生成部103が備える分割部(分割手段)が行うことができる。具体的には曲線メッシュ生成部103は、図7(I)に示されるように、分割用頂点、すなわち特徴点と拘束点と補助点、をメッシュの頂点とする直線メッシュ群を生成する。また、それぞれの拘束領域を規定する辺のそれぞれは、直線メッシュ群に含まれる少なくとも1つのメッシュの辺である。これらの条件を満たす直線メッシュ群を生成する方法ならば、曲線メッシュ生成部103はどのようなメッシュ生成アルゴリズムを用いてもよい。このように曲線メッシュ生成部103は、拘束領域外(多角形領域外)の画像領域を、分割用頂点間を辺とするメッシュに分割する。本実施例において、拘束領域内については、メッシュ分割を行わないものとする。本実施例で曲線メッシュ生成部103は、メッシュ生成アルゴリズムとして、制約付きドロネー三角形分割を用いる。本実施例においては、直線メッシュ群には拘束領域の辺(点線で示す)によって構成されるメッシュが含まれる。
【0060】
制約付きドロネー三角形分割は、コンピュータグラフィックスなどの分野で広く用いられている三角形分割方法である。制約付きドロネー三角形分割においては、点群と制約条件とが与えられると、与えられた点群を頂点とし、かつ制約条件を満たす直線メッシュ群が生成される。本実施例においては、拘束領域を構成する辺が制約条件として与えられる。制約条件で指定された以外の辺については、生成される三角形の最小角度が最大になるようにメッシュ群が生成される。ステップS408で生成される直線メッシュ群の例を図3(I)に示す。
【0061】
本実施例においては、ステップS408では制約付きドロネー三角形分割が用いられる。しかしながら、上記の条件を満たす直線メッシュ群が生成可能ならば、曲線メッシュ生成部103は別の方法を用いても構わない。例えば制約付きドロネー三角形分割では、生成される三角形の最小角度が最大になるようにメッシュ群が生成される。しかしながら、別の基準に従ってメッシュ群が生成されてもよい。
【0062】
ステップS409で曲線メッシュ生成部103は、直線メッシュ群を構成し、両端の頂点が特徴線上にある辺を、ステップS402において生成された曲線に置き換えることにより、曲線メッシュ群を生成する。具体的には曲線メッシュ生成部103は、拘束領域を構成する線分のうち、両端の頂点が特徴線上にある線分を、ステップS402において生成された曲線に置き換える。例えば、図3(I)の線分314,315,316のそれぞれは、曲線305,312,313に置き換えられる。一方で、本実施例においては拘束領域内について直線メッシュ分割を行わないため、例えば図6(D)に示される拘束領域が設定されている場合、点P1と点P2とを結ぶ線分は直線メッシュ群の辺には含まれない。このように、ステップS402において生成された曲線の両端を結ぶ線分が、直線メッシュ群の辺に含まれない場合、曲線メッシュ生成部103は、この曲線をメッシュ群を構成する辺として追加すればよい。
【0063】
以上のように、ステップS401からステップS409までの処理を行うことにより、図3(A)のような特徴線を含む画像を、図3(J)のような曲線メッシュ群に分割することができる。図3(J)の曲線メッシュ群には、図3(A)の特徴線を近似する曲線を辺として有する曲線メッシュが含まれる。すなわち図3(J)の曲線メッシュ群は、図3(A)に示される特徴線を再現している。
【0064】
図1に戻って、色情報生成部104は、曲線メッシュ生成部103によって入力画像上に設定された各メッシュについての色情報を生成する。色情報を生成する方法としては、任意の方法を採用することができる。例えば、それぞれのメッシュについて、1つの色を示す情報が記録されてもよい。この場合、符号化部105が出力した符号化データ(メッシュ符号)を復号すると、それぞれのメッシュは単色で表現される。この1つの色の定め方は任意であるが、例えば、メッシュに含まれる画素の画素値の平均値をそのメッシュの色情報とする方法が挙げられる。
【0065】
メッシュ内の色をより複雑に表現するためには、各メッシュについての色情報として、位置に対応する色を表現する関数のパラメータを記録してもよい。この場合、符号化部105が出力した符号化データ(メッシュ符号)を復号する際に、メッシュ内の各画素の画素値は所定の関数とパラメータとによって決定される。例えば非特許文献2では、RGBの3成分に対して、メッシュ内の色を決定するための薄板スプライン関数を、入力画像の色を元に生成している。
【0066】
さらには、各メッシュを更に微小な3頂点からなるメッシュに分割し、その微小なメッシュの頂点の画素の色を入力画像から取得して、取得された色をメッシュの色情報として記録してもよい。レンダリング(復号)の際には、それぞれの頂点の色に基づいて補間(例えば双線形補間)を行うことにより、メッシュ内の色を決定することができる。本実施例では、各メッシュについて1つの色を示す情報を記録する方法を用いるものとする。
【0067】
符号化部105は、曲線メッシュ生成部103が生成した各メッシュの形状情報(位置情報)と、色情報生成部104が生成した各メッシュの色情報とを含む、符号化データ(メッシュ符号)を生成する(符号化手段)。このようにして、入力画像に対する符号化データが生成される。上述のように、曲線メッシュ生成部103によって生成された曲線メッシュにおいては、ステップS402で生成された曲線の両端間については、この曲線が境界線とされる。また、曲線メッシュにおける、ステップS402で生成された曲線の両端間以外の分割用頂点間の境界線は、ステップS408で生成された直線メッシュ群に含まれる直線メッシュの辺(メッシュ辺)である。このような境界線で入力画像を分割することで得られるそれぞれの領域毎に、符号化部105は入力画像を符号化する。
【0068】
各メッシュとして3次の3頂点のベジェパッチを用い、各メッシュを単色で表現する場合、符号化部105が生成する符号化データには、以下の項目が記録される。
・メッシュ数を含むヘッダ
・各メッシュについての形状情報(各メッシュの3つの頂点の座標p1,p2,p3、及びパラメータc1,c2、c3、c4,c5,c6)
・各メッシュについての色情報(各メッシュをそれぞれ何色で塗るかを示すRGB値)
本実施例において符号化部105は、これらの項目が記されたテキストデータ(符号化データ)を、さらにzip符号化する。しかしながらデータの格納形式はテキストデータ形式には限られず、他の形式でもよい。また符号化部105はzip符号化を行わなくてもよいし、非可逆符号化を含めた他の符号化方式を用いてもよい。そしてこのようにして生成されたデータは、画像処理装置が有するメモリに格納してもよいし、外部の装置に対して出力しても良い。
【実施例2】
【0069】
以下に、実施例2に係る画像処理装置について説明する。本実施例に係る画像処理装置の構成及び動作は、実施例1に係る画像処理装置と同様である。しかしながら、曲線メッシュ生成部103、色情報生成部104、及び符号化部105の動作は、実施例1と異なる。以下では、本実施例が実施例1とは異なる点のみについて説明する。
【0070】
実施例1では、1つ以上の三角形の組み合わせを、拘束領域として設定した。本実施例では、1つ以上の四角形の組み合わせを、拘束領域として設定する。本実施例によって得られるメッシュ群には、3頂点曲線メッシュと4頂点曲線メッシュとが混在する。本実施例では、メッシュ群を表現するために、実施例1で用いた3頂点の3次のベジェパッチに加え、4頂点の3次のベジェパッチを用いる。4頂点の3次のベジェパッチの各辺もまた3次のベジェ曲線であるから、4頂点のベジェパッチと3頂点のベジェパッチとは辺を共有することができる。4頂点の3次のベジェパッチ内の点は以下の式で表される。
【数3】
【0071】
ここでu、vはパッチ内の座標である。またc11〜c44はそれぞれベジェパッチの形状を定めるパラメータである。c11,c14,c41,c44はベジェパッチの4つの頂点の座標値である。また、c12,c13,c21,c31,c24,c34,c42,c43はベジェパッチの輪郭を決める4つのベジェ曲線の制御点に対応する。c22,c23,c32,c33はベジェパッチの輪郭には関与しないパラメータであり、本実施例では実施例1と同様、ベジェパッチの頂点座標と、輪郭を成すベジェ曲線の制御点に対応するパラメータから定めることとする。
【0072】
以下に、本実施例に係る曲線メッシュ生成部103が行う処理について、図4を参照して説明する。ステップS401〜S403の処理は、実施例1と同様であるから説明を省略する。
【0073】
以下に、ステップS404において曲線メッシュ生成部103が行う処理について説明する。実施例1で説明した条件1、2、及び4を満たすベジェ曲線についての、拘束領域の設定方法を説明する。実施例1で述べたように、図6(A)に示すベジェ曲線は条件1、2、及び4を満たす。この場合は図6(E)のように、ベジェ曲線の2つの制御点を拘束点とすればよい。そして、ベジェ曲線の2つの端点及び2つの拘束点によって規定される四角形を拘束領域として設定すればよい。
【0074】
次に実施例1で説明した条件1及び4を満たすベジェ曲線についての、拘束領域の設定方法を説明する。実施例1で述べたように、図6(C)に示すベジェ曲線は条件1及び3を満たす。この場合は図6(F)のように、2つの四角形を拘束領域として設定すればよい。一方の四角形は、ベジェ曲線の端点P1,P2及び点604,605によって規定される四角形であり、他方の四角形は、ベジェ曲線の端点P1,P2及び点606,607によって規定される四角形である。すなわち、これら2つの四角形を組み合わせて得られる六角形を拘束領域として設定する。
【0075】
本実施例において、点604〜607は以下のように決定する。まず、x軸に平行で、y座標が点P1とP2を結ぶベジェ曲線上の点が取るy座標の最大値より大きく、図6(C)に示す制御点C2のy座標より小さい直線L1を考える。図6(F)において、直線L1は線分609を含む直線である。そして、図6(C)に示す端点P1と制御点C2とを結ぶ線分と、直線L1との交点を点604とする。また、図6(C)に示す端点P2と制御点C2とを結んだ線分と、直線L1との交点を点605とする。直線L1のy座標は任意であるが、直線L1のy座標が小さいほど拘束領域は小さくなるため、直線L1のy座標はできるだけ小さくなるように設定されてもよい。
【0076】
点606,607も、点604,605と同様に決定できる。すなわち、x軸に平行で、y座標が点P1とP2とを結ぶベジェ曲線上の点が取るy座標の最小値より小さく、図6(C)に示す制御点C1のy座標より大きい直線L2を考える。図6(F)において、直線L2は線分610を含む直線である。そして、図6(C)に示す端点P1と制御点C1とを結ぶ線分と、直線L2との交点を点606とする。また、図6(C)に示す端点P2と制御点C1とを結んだ線分と、直線L2との交点を点607とする。直線L2のy座標も任意であるが、直線L2のy座標が大きいほど拘束領域は小さくなるため、直線L1のy座標はできるだけ大きくなるように設定されてもよい。
【0077】
また、拘束領域を設定する対象である曲線が実際には線分である場合には、実施例1と同様に、拘束点および拘束領域を設定する必要はない。
【0078】
ステップS405及びS406は、実施例1と同様に行うことができる。図3(A)に示される入力画像に対して、実施例2に従って拘束領域を設定した場合の例を、図3(K)に示す。図3(K)のように、特徴線301,302を近似するベジェ曲線305,312,313のそれぞれに対して、重なりのない拘束領域が設定されている。
【0079】
ステップS407で曲線メッシュ生成部103は、実施例1と同様に、拘束領域外に補助点を設定する。ステップS407において補助点が配置された画像の例を、図3(L)に示す。
【0080】
ステップS408において曲線メッシュ生成部103は、実施例1と同様に、直線メッシュ群を生成する。実施例1と同様に曲線メッシュ生成部103は、制約付きドロネー三角形分割によって直線メッシュ群を生成することができる。本実施例において生成される直線メッシュ群は、特徴点と拘束点と補助点とをメッシュの頂点とする直線メッシュ群である。また、それぞれの拘束領域を規定する4辺のそれぞれは、直線メッシュ群に含まれる少なくとも1つのメッシュの辺である。ただし、制約付きドロネー三角形分割は三角形メッシュ群を生成する方法であるため、拘束領域を構成する四角形が2つの三角形に分割されてしまう。そこで本実施例において曲線メッシュ生成部103は、三角形の直線メッシュ群を生成した後に、拘束領域を分割する辺を除去する。以上で述べた処理によって、拘束領域外の画像がメッシュに分割されることにより、図3(M)に示される直線メッシュ群が得られる。図3(M)に示される直線メッシュ群は制約付きドロネー三角形分割によって生成されたため、拘束領域外のメッシュは三角形メッシュである。
【0081】
ステップS409において曲線メッシュ生成部103は、実施例1と同様に、拘束領域を構成する線分のうち、両端の頂点が特徴線上にある線分を、ステップS402において生成された曲線に置き換える。こうして、図3(N)にされる曲線メッシュ群が得られる。
【0082】
本実施例によって得られる曲線メッシュ群には、図3(N)に示されるように、3頂点のメッシュと4頂点のメッシュとが含まれる。別の実施例においては、3頂点のメッシュを分割又は統合することにより4頂点のメッシュに変形する既知の技術に従って、この曲線メッシュ群を4頂点のメッシュのみからなる曲線メッシュ群に変換してもよい。
【0083】
次に、本実施例に係る色情報生成部104が行う処理について説明する。3頂点のメッシュについては、実施例1と同様の方法で色情報を生成すれば良い。また4頂点のメッシュについても、類似の方法で色情報を生成することができる。例えば、各メッシュについて1つの色を示す情報を記録してもよい。また、各メッシュについての色情報として、位置に対応する色を表現する関数のパラメータを記録してもよい。また、各メッシュを更に微小な4頂点からなるメッシュに分割し、その微小なメッシュの頂点の画素の色を入力画像から取得して、取得された色をメッシュの色情報として記録してもよい。レンダリング(復号)の際には、それぞれの頂点の色に基づいて補間(例えば双線形補間)を行うことにより、メッシュ内の色を決定することができる。
【0084】
符号化部105は実施例1と同様に、曲線メッシュ生成部103が生成した各メッシュの形状情報(位置情報)と、色情報生成部104が生成した各メッシュの色情報とを含む、符号化データ(メッシュ符号)を生成する。このようにして、入力画像に対する符号化データが生成される。本実施例で生成される曲線メッシュ群には、3頂点のメッシュと4頂点のメッシュとが含まれるため、これらを符号化データ内において区別する必要がある。区別は任意の方法で行うことができるが、本実施例では符号化データにおいて、3頂点メッシュについてのデータを先に記録し、4頂点メッシュについてのデータを後に記録する。3頂点メッシュについてのデータは、実施例1と同様に形状情報と色情報とにより構成されうる。また4頂点メッシュについてのデータもまた、形状情報と色情報とにより構成されうる。
【0085】
例えば、メッシュとして3次の3頂点のベジェパッチ及び3次の4頂点のベジェパッチを用いる場合に、符号化部105が生成する符号化データには以下の項目が記録されうる。ここで、実施例1と同様に、各メッシュは単色で表現されるものとする。
・3頂点メッシュ及び4頂点メッシュのメッシュ数を含むヘッダ
・実施例1と同様の、3頂点メッシュのそれぞれの形状情報
・実施例1と同様の、3頂点メッシュのそれぞれの色情報
・4頂点メッシュのそれぞれの形状情報(各メッシュの4つの頂点の座標c11,c14,c41,c44、及びパラメータc12,c13,c21,c31,c24,c34,c42,c43)
・4頂点メッシュのそれぞれの色情報(各メッシュを何色で塗るかを示すRGB値)
【0086】
実施例1と同様に、符号化部105は、生成された符号化データを、画像処理装置が有するメモリに格納してもよいし、外部の装置に対して出力しても良い。また符号化部105は、実施例1と同様に、生成された符号化データをさらに符号化してもよい。
【実施例3】
【0087】
実施例1では、ステップS405で拘束領域の重なりが検知された場合、処理はステップS401に戻り、拘束領域の重なりが起きにくくなるよう特徴線上に再度特徴点を設定しなおした。しかしながら特徴点を増やすと、特徴線を近似する曲線が通らなければならない点が増えるため、符号化された画像を復号した際に画像にガタつきが生じる可能性がある。
【0088】
実施例3では、拘束領域の重なりが検知された場合には、近似曲線を分割する。本実施例の方法によれば、平滑性を維持しながら、近似曲線を分割しうる。以下に、本実施例に係る処理について、図7のフローチャートを参照して説明する。本実施例に係る処理は、実施例1と同様に、図1に示す画像処理装置100を用いて行うことができる。以下では、図9(A)に示す入力画像を処理する入力画像に対して処理を行うものとする。
【0089】
ステップS701において曲線メッシュ生成部103は、特徴線構成部102が検出した特徴線を順次選択し、選択した特徴線上に特徴点を設定する。この処理は、実施例1のステップS401と同様に行うことができる。
【0090】
ステップS702で曲線メッシュ生成部103は、特徴点で区切られた特徴線の一部を曲線化する。この処理は、実施例1のステップS402と同様に行うことができる。
【0091】
ステップS703で曲線メッシュ生成部103は、ステップS702で得られた曲線が基準を満たすかを判定する。この処理は、実施例1のステップS403と同様に行うことができる。
【0092】
ステップS704で曲線メッシュ生成部103は、全ての特徴線に対し、曲線を設定したかを判定する。曲線を設定していない特徴線がある場合には、図7に示すように、処理はステップS701に戻る。全ての特徴線に対して曲線を設定したと判定された場合は、処理はステップS705に進む。
【0093】
ステップS705で曲線メッシュ生成部103は、ステップS701〜ステップS704で設定された曲線群のうち、拘束領域が設定されていない曲線を1つ選択する。そして、処理はステップS706に進む。
【0094】
ステップS706で曲線メッシュ生成部103は、ステップS705で選択された曲線に対して、拘束点と拘束領域の設定を行う。この処理は、実施例1のステップS404と同様に行うことができる。
【0095】
ステップS707で曲線メッシュ生成部103は、拘束領域の重なりを判定する。この処理は、実施例1のステップS405と同様に行うことができる。図9(A)のように重なりがあると判定された場合、処理はステップS708に進む。重なりがないと判定された場合、処理はステップS709に進む。
【0096】
ステップS708で曲線メッシュ生成部103は、ステップS705で選択された曲線に対してステップS706で設定された拘束点及び拘束領域を取り消し、さらにステップS705で選択された曲線を分割する。具体的には曲線メッシュ生成部103は、ステップS705で選択された曲線上に分割点を設定し、曲線を複数の部分に分割する。そして曲線メッシュ生成部103は、分割により生じたそれぞれの部分曲線について、曲線を表すパラメータを算出する。例えば、曲線が3次のベジェ曲線である場合、それぞれの部分曲線について制御点の位置を算出すればよい。本実施例においてはステップS705で選択された曲線が分割されるが、互いに重なる拘束領域のそれぞれに内包される曲線のうち、ステップS705で選択されていない曲線が分割されてもよい。このようにして、互いに重なる拘束領域の少なくとも一方に内包される曲線が、2つ以上の曲線へと分割される。
【0097】
以下で、曲線が3次のベジェ曲線である場合の、制御点の位置の算出方法の一例について、図8を参照して詳しく説明する。図8の例では、両端の点A,Bと、制御点C,Dとで定められる3次のベジェ曲線が分割される。
【0098】
まず、線分ABをt:1−tの割合で内分する点Eの位置が算出される。同様に、線分BCをt:1−tの割合で内分する点Fの位置と、線分CDをt:1−tの割合で内分する点Gの位置とが算出される。次に、点E,Fを結ぶ線分EFをt:1−tの割合で内分する点Hの位置と、点F,Gを結ぶ線分FGをt:1−tの割合で内分する点Iの位置とが算出される。さらに、点H,Iを結ぶ線分HIをt:1−tの割合で内分する点Jの位置が算出される。
【0099】
ここで、点Jが曲線を分割する分割点として用いられる。また、点A,Jが分割により得られる第1のベジェ曲線の両端の点として、点E,Hがその制御点として用いられる。さらに、点J,Dが分割により得られる第2のベジェ曲線の両端の点として、点I,Gがその制御点として用いられる。
【0100】
このようにして、元の曲線形状を維持しながら曲線を分割する事ができる。分割の割合を示すパラメータtは任意の値(通常は0<t<1)でよく、例えばt=0.5でありうる。その後処理はステップS705に戻り、分割により得られた部分曲線のそれぞれがその後の処理においてステップS705で選択される。
【0101】
ステップS709で曲線メッシュ生成部103は、全ての曲線に対して拘束領域を設定したかを判定する。拘束領域を設定していない曲線がある場合には、図7に示すように処理はステップS705に戻り、処理が繰り返される。全ての曲線に対して拘束領域を設定したと判定された場合、処理はステップS710に進む。ここまでの処理により、図9(B)に示されるように拘束領域が設定される。
【0102】
ステップS710で曲線メッシュ生成部103は、入力画像に対して、メッシュの頂点(補助点)を追加する。この処理は、実施例1のステップS407と同様に行うことができる。
【0103】
ステップS711で曲線メッシュ生成部103は、ステップS701で設定された特徴点と、ステップS706で設定された拘束点と、ステップS708で設定された分割点と、ステップS710で設定された補助点とを用いて、直線メッシュ群を生成する。この処理は、実施例1のステップS408と同様に行うことができる。具体的には曲線メッシュ生成部103は、図9(C)に示されるように、特徴点、曲線分割点、拘束点、及び補助点をメッシュの頂点とする直線メッシュ群を生成する。
【0104】
ステップS712で曲線メッシュ生成部103は、拘束領域を構成する線分のうち両端の頂点が特徴点又は曲線分割点である線分を、図9(D)に示すように、ステップS708又はステップS702で設定された曲線に置き換える。この処理は、実施例1のステップS409と同様に行うことができる。こうして、図9(D)に示すように曲線メッシュ群が生成される。
【0105】
以上の処理により、曲線の平滑性を保持しながらも、重なりの無い曲線メッシュ群へと画像を分割することができる。さらなる実施形態として、ステップS704までに算出された曲線同士に重なりがある場合は、曲線同士が重ならないように、それぞれの曲線についてのパラメータ、例えば制御点の位置、を調整してもよい。
【実施例4】
【0106】
上述の各実施例において、画像処理装置100を構成する各部はハードウェアで構成されているものとした。本実施例においては、画像処理装置100を構成する各部のうち少なくとも1つを、ソフトウェア(コンピュータプログラム)として実装する。この場合、このソフトウェアは、PC(パーソナルコンピュータ)などの一般のコンピュータのメモリにインストールされる。そしてこのコンピュータのCPUがこのインストールされたソフトウェアを実行することにより、このコンピュータは、画像処理装置100の機能(図1に示した各部の機能)を実現することができる。すなわち、このコンピュータを、画像処理装置100として用いることができる。上述の各実施例に係る画像処理装置100として利用可能なコンピュータのハードウェア構成例について、図10のブロック図を参照して説明する。図10は、本実施例に係るコンピュータのハードウェア構成を示す。
【0107】
CPU1001は、RAM1002やROM1003に格納されているコンピュータプログラムやデータを用いて、コンピュータ全体の制御を行うと共に、画像処理装置100が行うものとして説明した上述の各処理を実行する。即ちCPU1001は、コンピュータプログラムに従って、図1に示した各部が行うものとして説明された各処理を実行する。
【0108】
RAM1002は、コンピュータが読み取り可能な記憶媒体の一例である。RAM1002は、外部記憶装置1007又は記憶媒体ドライブ1008のような記憶媒体からロードされたコンピュータプログラムやデータを一時的に記憶するためのエリアを有する。さらにRAM1002は、I/F(インタフェース)1009を介して外部装置から受信したデータなどを一時的に記憶するエリアも有しうる。さらにRAM1002は、CPU1001が各種の処理を実行する際に用いるワークエリアを有する。すなわちRAM1002は、各種のエリアを提供することができる。
【0109】
ROM1003は、コンピュータが読み取り可能な記憶媒体の一例であり、コンピュータの設定データや、ブートプログラムなどが格納されている。キーボード1004及びマウス1005は、入力デバイスの一例である。キーボード1004及びマウス1005をコンピュータの操作者が操作することにより、各種の指示をCPU1001に対して入力することができる。
【0110】
表示装置1006は、出力デバイスの一例である。表示装置1006は、例えばCRT又は液晶画面などでありうる。表示装置1006は、CPU1001による処理結果を、画像や文字などによって表示することができる。例えば表示装置1006は、入力画像を表示すること、処理途中で生成される直線メッシュ群又は曲線メッシュ群を表示すること、最終的に生成された曲線メッシュ群を表示すること、などができる。
【0111】
外部記憶装置1007は、コンピュータ読み取り可能な記憶媒体の一例である。外部記憶装置1007は例えば、ハードディスクドライブ装置に代表される大容量情報記憶装置でありうる。外部記憶装置1007には、OS(オペレーティングシステム)や、図1に示した各部の機能をCPU1001に実現させるためのコンピュータプログラム又はデータ、入力画像のデータ、並びに既知の情報として説明された情報、などを保存できる。外部記憶装置1007に保存されているコンピュータプログラム又はデータは、CPU1001による制御に従って適宜RAM1002にロードされる。そして、コンピュータプログラムに従って動作するCPU1001は、RAM1002にロードされたデータを処理することができる。
【0112】
記憶媒体ドライブ1008は、CD−ROMやDVD−ROMなどの記憶媒体に記録されているコンピュータプログラム又はデータを読み出すことができる。そして記憶媒体ドライブ1008は、読み出したコンピュータプログラム又はデータを外部記憶装置1007又はRAM1002などに出力することができる。外部記憶装置1007に保存されているものとして説明したコンピュータプログラム又はデータ情報の一部若しくは全部は、この記憶媒体に記録されていてもよい。
【0113】
I/F1009は、外部装置をコンピュータに接続する為のインタフェースである。例えば、ディジタルカメラなど、入力画像を取得するための装置をこのI/F1009に接続してもよい。この場合CPU1001は、この外部装置から入力画像をI/F1009を介して取得し、RAM1002又は外部記憶装置1007などに入力画像を格納してもよい。上述の各部は、バス1010によって互いに接続されている。
【0114】
本実施例において、コンピュータの電源がONになると、CPU1001はROM1003に格納されているブートプログラムに従って、外部記憶装置1007からOSをRAM1002へとロードする。この結果、キーボード1004又はマウス1005を介して、コンピュータに対して情報を入力することが可能となる。また、表示装置1006にGUIを表示することが可能となる。ユーザが、キーボード1004又はマウス1005を操作し、外部記憶装置1007に格納された画像処理用アプリケーションプログラムの起動指示を入力すると、CPU1001はこのプログラムをRAM1002にロードして実行する。こうして、本実施例に係るコンピュータは上述の各実施例に係る画像処理装置として機能する。
【0115】
通常、CPU1001が実行する画像処理用アプリケーションプログラムは、図1に示す各構成要素に相当する関数を備える。また、生成された符号化データは外部記憶装置1007又はコンピュータに接続されたその他の記憶媒体に格納される。
【0116】
(他の実施形態)
上述の実施例においては、例えばステップS405に示されるように、拘束領域に重なりがあるか否かが判定された。しかしながらこの処理を行わなくても、拘束領域を設定しない場合と比べて、メッシュの重なりを減らすことは可能である。
【0117】
実施例1において、1つの曲線について設定される拘束領域の形状は、1つの三角形又は2つの三角形の組み合わせであった。また、実施例2において、1つの曲線について設定される拘束領域の形状は、1つの四角形又は2つの四角形の組み合わせであった。しかしながら拘束領域の形状は、任意の多角形でありうる。
【0118】
本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)をネットワーク又は各種記憶媒体を介してシステム或いは装置に供給する。そして、そのシステム或いは装置のコンピュータ(又はCPUやMPU等)がプログラムコードを読み出して実行する。この場合、そのプログラム、及び該プログラムを記憶した記憶媒体は本発明を構成することになる。
【技術分野】
【0001】
本発明は、画像をベクトル化する画像処理技術に関し、特に、ラスタ画像をメッシュ単位に符号化するベクトル化技術に関するものである。
【背景技術】
【0002】
従来から、画像をベクトルデータで表現(ベクトル表現)する技術が知られている。ベクトルデータで表現される画像は、大小さまざまなサイズで表示した場合にもシャギーが目立たないという利点がある。ベクトル表現に対し、それぞれの画素の色データによって画像を表現する方法はラスタ表現と呼ばれる。また、ラスタ表現された画像をベクトル表現に変換することをベクトル化と呼ぶ。
【0003】
画像をベクトル化する方法の1つとして、画像内のエッジを線分群として抽出し(以下、エッジ線と呼ぶ)、エッジ線に従って画像を3頂点直線メッシュ群に分割する技術(非特許文献1)が知られている。3頂点直線メッシュ群とは各メッシュの頂点が3つであり、頂点間を結ぶメッシュの辺が全て線分であるものを指す。そして、それぞれのメッシュについての位置情報と色情報とが、ベクトル表現として記録される。直線メッシュ群は、制約付きドロネー三角形分割を利用することで高速に生成することができる。
【0004】
また、エッジ線に従って画像を3頂点曲線メッシュ群に分割する技術(非特許文献2)も知られている。ここで、3頂点曲線メッシュ群とは、各メッシュの頂点が3つであり、メッシュ群を構成する辺の少なくとも1つ以上が曲線であるものを指す。
【先行技術文献】
【非特許文献】
【0005】
【非特許文献1】Lakshman Prasad, Alexei Skourikhine, 「Raster to Vector Conversion of Images for Efficient SVG Representation」, In Proceedings of SVGOpen‘05.
【非特許文献2】Tian Xia, Binbin Liao, and Yizhou Yu, 「Patch−Based Image Vectorization with Automatic Curvilinear Feature Alignment」, ACM SIGGRAPH Asia 2009, Vol.28, No.5.
【発明の概要】
【発明が解決しようとする課題】
【0006】
以降では、3頂点直線メッシュ群に限らず、頂点間を結ぶメッシュの辺が全て線分であるメッシュ群を直線メッシュ群とする。また、3頂点曲線メッシュ群に限らず、メッシュ群の辺のうち少なくとも1つ以上が曲線であるものを曲線メッシュ群とする。
【0007】
非特許文献1のように、画像の特徴を表す線分群(エッジ線を含み、以下特徴線と呼ぶ)を直線メッシュ群で精度良く再現するためには、特徴線を多くの線分を用いて表現する必要があり、すなわち画像を表現するために必要なメッシュが多くなる。一般にメッシュ数が増えると、編集の容易性が低下する。また、曲線である特徴線も線分で表現するため、特に拡大した際に画質の劣化が目立つ。
【0008】
この問題に対処する方法として、画像を曲線メッシュ群に分割する方法が提案されている。曲線メッシュ群を作成する方法としては、まず画像を直線メッシュ群に分割し、この直線メッシュ群を構成する辺のうち特徴線を近似する辺を曲線化する方法がある。しかしながらこの方法においては、曲線化を行った際に、メッシュの辺同士が交差することがあるという問題がある。
【0009】
この問題について、図5を参照して説明する。図5(A)は、矩形のラスタ画像と、画像から検出された特徴線501とを示す。このラスタ画像はまず、直線メッシュ群に分割される。具体的には図5(B)に示すように、特徴線501を近似する線分502が求められる。また、図5(B)に示すように、線分502の両端及びラスタ画像の4隅に、点が配置される(配置された点を黒丸で示す)。そして、これらの点を頂点とし、かつ線分502をメッシュの辺として含むという制約条件のもとで3頂点直線メッシュを生成することにより、例えば図5(C)のような3頂点直線メッシュ群が得られる。ここで実線及び点線は共にメッシュの辺を表す。最後に、特徴線501を近似する線分502を、特徴線501に沿う曲線504に変えることにより、図5(D)に示す3頂点曲線メッシュ群を得ることができる。図5(D)において、それぞれがメッシュの辺である線分503と曲線504とは交差している。すなわち、メッシュ同士が重なっている。
【0010】
このようなメッシュ同士の重なりは、メッシュを利用して画像をベクトル表現する際に画質劣化を引き起こす。これについて以下に詳しく説明する。特徴線を近似する曲線が、メッシュの辺と交差する場合、いずれかのメッシュは特徴線を近似する曲線を内部に含むこととなる。例えば図5(D)の場合、線分503の右上のメッシュは、曲線504を内部に含む。ところでメッシュを用いて画像をベクトル表現する際には、それぞれのメッシュについての色情報が記録される。この場合、各メッシュ内には色の急激な変化が無いことを前提として、メッシュ内での滑らかな色変化を表現できる形式で色情報を記録することが多い。すなわち、ベクトル表現した画像を表示する場合、メッシュ内の領域はなめらかに変化する色で表現される。一方で特徴線は、エッジ線や、前景と背景の境界などの、色が急激に変化する部分を表すことが多い。このように、特徴線を近似する曲線を内部に含むメッシュにおいては、特徴線を挟んだ画素同士の色の変化を正しく表現できないことがある。このことは、メッシュの重なり部分における色の滲みに、すなわち画質劣化につながる。
【0011】
非特許文献2は、メッシュ同士が重ならないように、曲線メッシュ群を生成する方法を提案している。非特許文献2の方法によれば、エッジ線を忠実に再現する十分に短い線分群をメッシュの辺とし、かつラスタ画像の全画素を頂点とする直線メッシュ群が生成される。そして、優先度の低いメッシュ同士を大きなメッシュに統合する処理と、エッジ線に沿うメッシュの辺を曲線化する処理と、を交互に繰り返す。非特許文献2の方法は、曲線化を行った際にメッシュ同士が重なるようなメッシュ同士の統合を行わないという制約を用いることにより、メッシュ同士が重なることを防いでいる。しかしながら非特許文献2の方法は、最初に生成するメッシュが非常に細かく、メッシュを統合するための多くの処理が必要とされることから、処理時間が比較的長いという課題がある。
【0012】
本発明は、重なりの無い曲線メッシュ群へと、画像をより高速に分割することを目的とする。
【課題を解決するための手段】
【0013】
本発明の目的を達成するために、例えば、本発明の画像処理装置は以下の構成を備える。すなわち、
入力画像を複数のメッシュに分割し、分割したメッシュ毎に符号化する画像処理装置であって、
前記入力画像中の各エッジ線を曲線近似する近似手段と、
前記近似手段により近似された曲線の両端を頂点として利用し且つ該曲線を内包する多角形領域を設定する第1の設定手段と、
前記入力画像において前記多角形領域外に複数の頂点を設定する第2の設定手段と、
前記多角形領域の各頂点及び前記第2の設定手段が設定した各頂点を分割用頂点とし、前記入力画像において前記多角形領域外の領域を、該分割用頂点間を辺とするメッシュに分割する分割手段と、
前記曲線の両端間については前記曲線、前記曲線の両端間以外の前記分割用頂点間については前記分割手段が定めたメッシュ辺、を境界線とし、それぞれの境界線で前記入力画像を分割することで得られるそれぞれの領域をメッシュとして符号化する符号化手段と
を備えることを特徴とする。
【発明の効果】
【0014】
本発明によれば、重なりの無い曲線メッシュ群へと、画像をより高速に分割することができる。
【図面の簡単な説明】
【0015】
【図1】実施例1に係る画像処理装置の機能構成例を示すブロック図。
【図2】望ましくないエッジ線を説明する図。
【図3】曲線メッシュ生成部103が行う各処理を詳しく説明する図。
【図4】曲線メッシュ生成部103が行う処理のフローチャート。
【図5】曲線メッシュ生成部103が行う処理の概要を説明する図。
【図6】拘束領域の設定方法を説明する図。
【図7】実施例3に係る処理のフローチャート。
【図8】3次のベジェ曲線の分割方法を説明する図。
【図9】実施例3に係る各処理を詳しく説明する図。
【図10】実施例4に係るコンピュータのハードウェア構成例を示す図。
【図11】エッジ線構成部の動作について説明する図。
【図12】領域の境界線を特徴線として検出する場合の処理を説明する図。
【発明を実施するための形態】
【0016】
以下、添付図面を参照し、本発明の好適な実施例について説明する。なお、以下で説明する実施例は、本発明を具体的に実施した場合の一例を示すもので、特許請求の範囲に記載の構成の具体的な実施例の1つである。以下で説明する各実施例によれば、メッシュ同士が重ならないように、特徴線が曲線で再現されている曲線メッシュ群を生成することができる。図に示される画像の例を参照して以下の説明はなされるが、いかなる画像であっても処理の対象とすることができることが理解されるだろう。
【実施例1】
【0017】
実施例1では、ラスタ画像をメッシュ分割に基づいてベクトル表現する(メッシュ符号化)際に、特徴線が曲線で再現される、メッシュ同士の重なりが無い3頂点曲線メッシュ群を生成する方法を説明する。本実施例で提案する処理手順に従えば、曲線メッシュを構成する辺がどのような種類であっても、重なりが無い曲線メッシュ群を生成することができる。例えば曲線メッシュを構成する辺は、ベジェ曲線、B−スプライン等の曲線でありうる。
【0018】
本実施例に係る説明に先立って、先ず、3頂点曲線メッシュについて説明する。本実施例では説明のために、各曲線メッシュとして、パラメトリック曲面の1つである3頂点のベジェパッチを用いる。特に本実施例では、曲線メッシュとして3次のベジェパッチを用いる。3次のベジェパッチを用いる場合、曲線メッシュの各辺は3次のベジェ曲線となる。このため、生成された曲線メッシュをユーザが編集することが容易である。
【0019】
P1、P2、P3を頂点とする3次のベジェパッチ内の点は以下の式で表される。
【数1】
【0020】
ここで、s、t、uはパッチ内の重心座標である。また、p1,p2,p3はそれぞれ、頂点P1,P2,P3の座標値である。また、c1,c2,c3,c4,c5,c6、c7は、ベジェパッチの形状を定めるパラメータである。ここで、c1〜c6はベジェパッチの輪郭を決める3つのベジェ曲線(辺)の制御点に対応するパラメータである。c7はベジェパッチの輪郭には関与しないパラメータであり、本実施例ではベジェパッチの頂点の座標と、輪郭を成すベジェ曲線の制御点に対応するパラメータから
【数2】
によって定める。
【0021】
次に、本実施例に係る画像処理装置100の機能構成例について、図1のブロック図を用いて説明する。本実施例に係る画像処理装置100は、入力画像を複数のメッシュに分割し、分割されたそれぞれのメッシュ毎に画像を符号化する。図1に示すように本実施例に係る画像処理装置100は、画像入力部101、特徴線構成部102、曲線メッシュ生成部103、色情報生成部104、及び符号化部105を有する。もちろん、画像処理装置の構成はこれには限定されない。図1に示した幾つかの構成要素は1つにまとめられていてもよい。また、図1に示した構成に対して、更なる機能を有する機能部を加えても良い。
【0022】
画像入力部101には、ラスタ表現の画像が入力画像として入力される。この入力画像はカラー画像、グレー画像、白黒画像のいずれでも構わない。入力画像は矩形画像でも構わないし、他の形状の画像であってもよい。入力画像の一部をベクトル化したい場合には、背景部に透過色が設定されている入力画像等が与えられてもよく、この場合本実施例に係る画像処理装置は透過色が設定されていない部分をベクトル化してもよい。
【0023】
特徴線構成部102は、この入力画像から、特徴線を線分群として検出する。本実施例においては、エッジ線が特徴線として取り扱われる。すなわち特徴線構成部102は、入力画像中のエッジ線を検出する。本実施例において特徴線構成部102は、エッジ検出部とエッジ線構成部とを有する。エッジ検出部は、入力画像からエッジを構成する画素(以下、エッジ画素と称する)を検出する。本実施例ではキャニー法という既知の方法を用いてエッジを構成する画素を検出するが、他の手法を用いても構わない。
【0024】
エッジ線構成部は、エッジ検出部で検出されたエッジ画素のうち、隣接する画素同士を結ぶ線分を、エッジを再現する線分群として求める。画素同士が隣接しているか否かを判定するための基準は、いくつか存在する。例えば、エッジ画素である注目画素の上、下、左、又は右にエッジ画素が存在する場合、これらの画素は隣接しているものと判定してもよい。この判定基準を、4連結接続と称する。また、エッジ画素である注目画素の上、下、左、右、右上、右下、左上、又は左下にエッジ画素が存在する場合、これらの画素は隣接しているものと判定してもよい。この判定基準を、8連結接続と称する。
【0025】
本実施例では8連結接続を用いる。しかしながら、キャニー法によって検出されたエッジ画素から、8連結接続に従って線分群を求めると、エッジ線としては望ましくない線分群が得られる場合がある。その様子を図2を用いて説明する。図2(A),(B)は、画像中のある領域を構成する画素群を示す。図2(A),(B)において、1つの四角形は1つの画素を表す。また、ハッチングされた四角形はエッジ画素を表し、ハッチングされていない四角形はエッジ画素以外の画素(非エッジ画素)を表す。
【0026】
図2(A)のエッジ画素群について、8連結接続に従って隣接するエッジ画素同士を結ぶと、エッジ画素201、202、及び203を通るループが生成される。このようなループの発生は抑制されることが好ましい。そこで本実施例では、8連結接続に従って線分群を求める前に、Hilditch細線化法という既知の手法を用いる。図2(A)に示したエッジ画素群に対してHilditch細線化を行うと、エッジ画素201は非エッジ画素となる。その結果、図2(B)に示すように、エッジ画素(204〜207)がループのない線分群によって結ばれることになる。
【0027】
エッジ線構成部の動作について更に、図11を参照して補足する。図11は、図2(A)(B)と同様に、画像中のある領域を構成する画素群を示す。ハッチングされた四角形は、Hilditch細線化法を行った後のエッジ画素を示す。また、ハッチングされていないが四角形はHilditch細線化法を実施した後の非エッジ画素を示す。エッジ画素1101の周囲8画素のうち3つがエッジ画素であり、これらのエッジ画素は全て8連結接続に従って隣接しているものと判定される。しかしながら、エッジ画素1101及び周囲の3画素の全てを、分岐の無い単一の線分群で表現することはできない。このような場合、エッジ画素1101を線分群を構成するそれぞれの線分の端点に設定すればよい。この場合、エッジ画素1101を端点とする3つの線分群1102,1103,1104によって、エッジ線を表現することができる。
【0028】
特徴線構成部102は、エッジ線ではなく、又はエッジ線に加えて、ベクトル化の対象である領域の輪郭を特徴線として抽出してもよい。既に述べたように、入力画像の一部をベクトル化するために入力画像の一部が透過色に設定されている場合は、特徴線構成部102は透過色と非透過色の境界上の画素を輪郭画素として判定してもよい。この輪郭画素は、ベクトル化対象である領域の輪郭を示す。輪郭画素を通る線分群は、上述のエッジ線構成部が行う方法と同様にして求めることができる。
【0029】
また特徴線構成部102は、入力画像を領域分割し、その境界線を特徴線としてもよい。領域分割法としては、最近傍法を用いたもの、EMアルゴリズムを利用したものなど、多くの手法が知られている。このような領域分割法を用いて、図12に示すように、入力画像が、白色の領域1211と、右下がりの斜線の領域1212と、右上がりの斜線の領域1213とに分割されたものとする。このような場合、特徴線はそれぞれの領域の境界線1201、1202、1203となる。
【0030】
これらの領域の輪郭及び領域の境界線を含む、画像の特徴線は、通常は画像中のエッジを表す。したがって、以下の説明においてエッジ線とは、上述のように検出された領域の輪郭及び領域の境界線を含むものとする。
【0031】
図1に戻って、曲線メッシュ生成部103は、メッシュ同士が重ならないように、入力画像をメッシュ群に分割する。上述のように、メッシュ群によって特徴線が再現される。曲線メッシュ生成部103が行う具体的な処理手順の説明を行うに先立ち、まず、本実施例の曲線メッシュ生成部103が行う処理の基本的なアイデアを、図5を参照して説明する。
【0032】
既に述べたように、図5(A)は、矩形のラスタ画像と、その画像から検出された特徴線501とを示す。まず図5(E)に示すように、特徴線501は曲線504へと近似される。さらに、曲線504を内包する三角形が生成される。図5(E)において、この三角形は線分502、線分506、及び線分507によって形成される。以下では、この三角形のように、曲線を内包する多角形内の領域を、拘束領域と呼ぶ。
【0033】
本実施例においては特に、曲線を内包する拘束領域として、以下のような領域が設定される。すなわち、曲線の両端は、拘束領域を構成する頂点のうち2つと一致する。また、曲線のうち両端以外の部分は、拘束領域の内部に含まれる。本実施例において、拘束領域の「内部」の領域には、拘束領域の輪郭上は含まれないこととする。図5(E)の場合は、拘束領域の頂点のうちの2つである頂点511,512は、曲線504の両端の点である。また、曲線504の両端以外の部分は、拘束領域の内部にあることが確認できる。点505は拘束領域を定義するために配置された点であり、この点のことを以下では拘束点と呼ぶ。
【0034】
次に、拘束領域を規定する頂点と画像の4隅とを頂点とし、かつ拘束領域を規定する辺のそれぞれが少なくとも1つのメッシュの辺であるという制約条件のもとで、直線メッシュ群が生成される。このようにして作られた直線メッシュ群を図5(F)に示す。最後に、図5(G)に示すように、拘束領域の辺のうち、曲線504と両端を共有する線分502が、曲線504に置き換えられる。
【0035】
以上のように本実施例においては、曲線を内包する多角形である拘束領域が求められ、この拘束領域の内部にメッシュの辺が存在しないように直線メッシュ群が生成される。したがって本実施例の方法によれば、曲線の両端を結ぶ線分(直線メッシュの一辺)を曲線で置き換えたとしても、曲線と他の辺とは交差しない。
【0036】
以上のアイデアを実現するために、曲線メッシュ生成部103が行う処理について、図4のフローチャートを参照して説明する。図4のフローチャートに示した各ステップにおける処理の主体は、別記ない限り何れも曲線メッシュ生成部103である。以下では説明を容易とするために、画像入力部101に矩形画像が入力され、特徴線構成部102によって図3(A)に示す特徴線301,302が検出された場合について説明する。図3(A)〜(N)において、格子状の枠で区切られたそれぞれの四角形は画素を示す。曲線メッシュ生成部103は、特徴線301,302を再現できるように、かつメッシュ同士が重ならないように、矩形画像をメッシュ群へと分割する。処理される画像は図3(A)の画像に限られるわけではなく、曲線メッシュ生成部103に対して図3(A)に示すものとは異なる画像が入力されたとしても、曲線メッシュ生成部103は以下の説明に従って画像をメッシュ群へと分割することができる。
【0037】
まずステップS401において、曲線メッシュ生成部103は、特徴線構成部102が検出した特徴線を順次選択する。そして曲線メッシュ生成部103は、選択した特徴線上に、特徴点を設定する。特徴点として設定された点は、本実施例の処理の結果得られる曲線メッシュ群の頂点となる。ここで特徴点として設定された2点間を結ぶ特徴線は、最終的には、2点間を結ぶ曲線によって近似される。従って特徴点は、隣接する2つの特徴点間にある特徴線を十分な精度で近似できる程度に狭い間隔で配置されることが好ましい。一方でメッシュの数を減らすことにより処理速度の向上及びデータ量を小さくする観点からは、特徴点はできるだけ広い間隔で配置されることが好ましい。
【0038】
通常、各特徴線の両端は特徴点として設定される。本実施例のように、特徴線がエッジ線である場合には、曲線メッシュ生成部103は各エッジ線の両端を特徴点として設定する。また曲線メッシュ生成部103は、エッジ線上の画素のうち、数画素(例えば10画素)に1つをさらなる特徴点として選択する。図3(B)の例では、さらなる特徴点として特徴点303が設定されている。
【0039】
次にステップS402において曲線メッシュ生成部103は、特徴点で区切られた特徴線の一部を曲線化する。この処理は例えば、曲線メッシュ生成部103が備える不図示の近似部(近似手段)が行うことができる。既に述べたように曲線メッシュ生成部103は、特徴線をどのような曲線へと曲線近似してもよく、例えばベジェ曲線又はB−スプライン曲線などで近似してもよい。本実施例では3次のベジェパッチを各メッシュとして用いる。したがって本実施例において曲線メッシュ生成部103は、3次のベジェ曲線によって特徴線を近似する。なお、特徴線に沿うように曲線のパラメータを設定するアルゴリズムとしては様々なものが考えられるが、本実施例では曲線メッシュ生成部103は最小二乗法を用いる。図3(B)に示される特徴点303,304の間にある特徴線の一部を曲線近似することにより、図3(B)の曲線305が得られたものとする。
【0040】
ステップS403で曲線メッシュ生成部103は、ステップS402で得られた曲線が基準を満たすかを判定する。この処理は例えば、曲線メッシュ生成部103が備える不図示の曲線判定部が行うことができる。この基準は、ステップS402で得られた曲線に対して拘束領域を設定することが容易であるか否かを判定するために用いられる。本施例では特に3次のベジェ曲線について、この基準の一例を説明する。説明を容易にするために、まず座標系及び変数の定義を定義する。図6(A)に3次のベジェ曲線の一例を示す。点P1及び点P2はベジェ曲線の両端の点である。また、点C1及び点C2はそれぞれ、点P1及び点P2におけるベジェ曲線の曲率を定める制御点である。以下の説明では、図6(A)に示すように点P1を座標軸の原点とする。また、点P1と点P2とを結ぶ直線をx軸とし、点P1から点P2に向かう方向を正方向とする。さらに、点P1を中心としてx軸を−90°回転させることにより得られる軸をy軸とする。
【0041】
点P1、P2、C1、C2の座標をそれぞれ(p1x,p1y)、(p2x,p2y)、(c1x,c1y)、(c2x、c2y)と定める。以上の定義によれば、p1x=0、p1y=0、p2x>0、及びp2y=0が成り立つのは明らかである。本実施例においては、ベジェ曲線に対して拘束領域を設定することが容易であるか否かを判定する基準として、以下の条件が定められる。
・条件1:p1x<c1x<p2x、かつp1x<c2x<p2x
・条件2:(c1y≧0かつc2y≧0)もしくは(c1y<0かつc2y<0)
・条件3:(c1y<0かつc2y≧0)もしくは(c1y≧0かつc2y<0)
・条件4:直線P1−C1と直線P2−C2の交点が線分P1−C1および線分P2−C2上に無い
以上の条件のうち、条件1、2、及び4を満たすベジェ曲線は、基準を満たすものと判定される。また、条件1及び3を満たすベジェ曲線もまた、基準を満たすものと判定される。さらに曲線メッシュ生成部103は、ステップS402において得られる曲線が実際には線分である場合にも、この曲線は基準を満たすものと判定してよい。
【0042】
ステップS402において得られた曲線が基準を満たさない場合、処理はステップS401に戻り、特徴点設定がやり直される。特徴点設定をやり直す場合、得られる曲線が基準を満たす可能性が高くなるように、特徴点の設定を行うことが望ましい。通常は曲線が直線形状に近いほど、曲線が基準を満たす可能性が高くなる。設定される特徴点の間隔を狭くすることにより、得られる曲線は直線に近づく。すなわち特徴点設定をやり直す場合には、特徴点を細かく設定し直せばよい。特徴点を設定し直すための方法の一例として、本実施例において曲線メッシュ生成部103は、ステップS403において基準を満たさないと判定された曲線が近似する特徴線の途中に、新たな特徴点を設定する。すなわち曲線メッシュ生成部103は、特徴線を2つ以上に分割すればよい。例えば曲線メッシュ生成部103は、特徴点303,304を両端とする特徴線の途中の点、例えば中間点を、新たな特徴点とすればよい。その後曲線メッシュ生成部103は、ステップS402において、分割されたそれぞれの特徴線を曲線近似する。
【0043】
本実施例のように、特徴線が隣接するエッジ画素を結ぶ線分群で構成される場合、全てのエッジ画素上に特徴点を配置すれば、ステップS403の基準を満たすことができる。なぜなら、この場合特徴点間の特徴線はすべて線分として表現されるからである。すなわち、特徴点の数をだんだん増やしていくことにより、以上の条件を満たすことができる。
【0044】
ステップS404で曲線メッシュ生成部103は、ステップS403の基準を満たした曲線に対して、拘束点と拘束領域の設定を行う。この処理は例えば、曲線メッシュ生成部103が備える不図示の第1の設定部(第1の設定手段)が行うことができる。曲線メッシュ生成部103は、ステップS402で得られた曲線の両端を頂点として有し、かつこの曲線を内包する多角形領域を、拘束領域として設定する。
【0045】
まず、ステップS403において条件1、2、及び4が満たされたベジェ曲線に対して、拘束点と拘束領域を設定する方法を説明する。図6(A)は、条件1、2、及び4が満たされるベジェ曲線である。この場合曲線メッシュ生成部103は、図6(A)の直線P1−C1と直線P2−C2との交点を拘束点として設定する。図6(B)には、この拘束点601が示されている。そして曲線メッシュ生成部103は、図6(B)の点線で囲まれた領域を拘束領域として設定する。この拘束領域は、拘束点と、ベジェ曲線の両端と、によって規定される三角形内の領域となる。図6(B)から、ベジェ曲線は拘束領域に内包されていることが確認できる。
【0046】
次に、ステップS403において条件1及び3が満たされたベジェ曲線に対して、拘束点と拘束領域を配置する方法を説明する。図6(C)は条件1及び3が満たされるベジェ曲線の一例である。この場合曲線メッシュ生成部103は、ベジェ曲線の2つの制御点を、拘束点として設定する。すなわち、図6(D)の点602および点603が拘束点として設定される。そして曲線メッシュ生成部103は、図6(D)の点線で囲まれた領域を拘束領域として設定する。この拘束領域は、拘束点の一方602とベジェ曲線の両端とによって規定される三角形内の領域、及び拘束点の他方603とベジェ曲線の両端とによって規定される三角形内の領域によって構成される。このように、1つの曲線についての拘束領域は1つの三角形から構成されるとは限られず、2つの三角形によって構成されていてもよい。つまり、曲線の両端を結ぶ線分を辺の一部とする2つの三角形を組み合わせることによって得られる四角形内の領域を、拘束領域としてもよい。この四角形の拘束領域が、曲線を内包すればよい。
【0047】
なお、特徴線を近似する曲線が実際には線分である場合、この曲線(線分)に対して拘束点および拘束領域を設定する必要はない。上述のように拘束領域は、メッシュを構成する線分を、特徴線を近似する曲線に置き換える際に、メッシュ同士が重なることを防ぐために設定される。特徴線を近似する曲線が実際には線分である場合、置き換えを行う必要はないから、拘束領域を設定する必要もない。
【0048】
以上で述べたように、本実施例のステップS403およびステップS404では、3次のベジェ曲線に対して、三角形、もしくは2つの三角形を組み合わせた四角形が、拘束領域として設定された。しかしながら、上述の方法は一例にすぎない。実際にはステップS403及びステップS404においては、曲線の両端を結ぶ線分を一辺として有する三角形で構成される拘束領域であって、曲線を内包する拘束領域を設定すればよい。
【0049】
例えば、ステップS403に示される基準を満たさない3次のベジェ曲線に対して、拘束領域を設定することも可能である。また、ステップS404で説明された以外の方法で拘束領域を設定することもできる。例えば図6(A)に示されるベジェ曲線に対して設定される拘束領域は、図6(B)の点線で示される三角形を内部に含む(辺を共有しても良い)、より大きな三角形であってもよい。このような三角形は、例えば拘束点601をy軸正方向に移動させることにより得ることができる。
【0050】
ステップS403及びS404の方法は、拘束領域を設定するためのより有利な方法の例として示したものである。以降で説明するステップS405で行う拘束領域の重なり判定を考慮すると、拘束領域はできるだけ小さい方が望ましい。ステップS403に示した基準を満たす曲線に対しては、より小さい拘束領域を設定することが可能である。このために本実施例においては、曲線がステップS403に示される基準を満たすように、特徴点が再設定される。また、ステップS404の方法もまた、曲線に対してより小さい拘束領域を設定する方法の一例である。
【0051】
また、図6(C)に示される曲線に対して設定される、図6(D)に示される拘束領域は、さらに小さくすることもできる。図6(D)の点602が、矢印の方向、つまり頂点P2の方向へと微小量だけ移動しても、依然として曲線は拘束領域内に内包されている。そこで、例えば以下のような方法で、拘束領域がより小さくなるように、拘束点602,603の位置を決定することができる。すなわち、曲線メッシュ生成部103は、点602と頂点P2とを結ぶ線分上に、任意の個数(例えば10個)の分割点を設定する。そして曲線メッシュ生成部103は、拘束点602から頂点P2に向かって順次分割点を選択し、選択された分割点を頂点とする拘束領域内に曲線が内包されるか否かを判定する。具体的には曲線メッシュ生成部103は、選択された分割点と頂点P1とを結ぶ線分が、曲線と交差しない場合に、曲線は内包されているものと判定すればよい。そして曲線メッシュ生成部103は、拘束点602を、曲線との交差が起こらずかつ頂点P2に最も近い分割点に移動させればよい。拘束点603についても同様に、図6(D)に示す矢印の方向、つまり頂点P1の方向へと移動させることができる。このようにして、より小さい拘束領域を設定することができる。
【0052】
本実施例では、3次のベジェパッチからなる3頂点曲線メッシュ群を生成するために、ステップS402では特徴線が3次のベジェ曲線で近似された。また、ステップS403及びS404では、このベジェ曲線を内包する三角形、又は三角形の組み合わせで構成される多角形が、拘束領域として設定された。しかし、曲線の両端を頂点として有する多角形状を有し、かつ曲線を内包している領域は、拘束領域として用いることができる。したがって曲線が3次のベジェ曲線である必要はない。また、拘束領域が三角形を組み合わせた形状である必要もない。
【0053】
ステップS405で曲線メッシュ生成部103は、ステップS404においてそれぞれの曲線に対して設定された拘束領域同士が重なっているか否かを判定する。この処理は例えば、曲線メッシュ生成部103が備える不図示の領域判定部(判定手段)が行うことができる。図3(E)には、拘束領域が重なっている場合の例を示す。図3(E)では、点304,307,308を結ぶ三角形の拘束領域と、点309,310,311を結ぶ三角形の拘束領域とが重なっている。既に述べたように、それぞれの曲線についての拘束領域に直線メッシュの辺が含まれない場合には、曲線化の後にもメッシュ同士の重なりが起こらない。しかしながら拘束領域同士が重なっている場合、ある曲線についての拘束領域に、他の曲線を内包する直線メッシュの辺が含まれてしまう。この場合、曲線化後にメッシュ同士が重なる可能性がある。このため本実施例においては、拘束領域同士が重なっている場合、曲線メッシュ生成部103は拘束領域の設定をやり直す。
【0054】
本実施例において、拘束領域同士が重なっていると判断するための基準の一例について説明する。異なる2つの拘束領域によって1つの点が共有されている場合には、2つの拘束領域は重なっているものとする。また、2つの拘束領域が頂点のみを共有している場合、又は辺のみを共有している場合には、2つの拘束領域は重なっていないものとする。また、一方の拘束領域の頂点が、他方の拘束領域の頂点以外の辺上にある場合には、2つの拘束領域は重なっているものとする。
【0055】
また、図3(F)に示すように、ステップS404で設定した拘束領域が、まだ拘束領域が設定されていない特徴線の一部もしくは全部を内部に含むことがある。図3(F)においては拘束領域同士の重なりは起こっていないが、後に特徴線302に対して拘束領域を設定すると、拘束領域同士の重なりが起こってしまうのは明らかである。したがって、ステップS404において設定された拘束領域が、ステップS401で選択されていない特徴線を内部に含む場合、曲線メッシュ生成部103は拘束領域の設定をやり直す。ステップS405で曲線メッシュ生成部103は、具体的には、ステップS404において設定された拘束領域内の各画素について、ステップS401で選択されていない特徴線について既に設定されている拘束領域に含まれているか否かを判定すればよい。含まれている場合、曲線メッシュ生成部103は、拘束領域同士が重なっているものと判定できる。また、ステップS404において設定された拘束領域の頂点が、ステップS401で選択されていない特徴線について既に設定されている拘束領域の辺上にあるか否かを判定してもよい。頂点が辺上にある場合、曲線メッシュ生成部103は、拘束領域同士が重なっているものと判定してもよい。
【0056】
ステップS405において拘束領域の重なりが検知された場合、本実施例においては、処理はステップS401に戻る。そして、ステップS401における特徴点設定からステップS404における拘束領域の設定までの、一連の処理がやり直される。ステップS401において特徴点設定をやり直す場合、曲線メッシュ生成部103は、拘束領域の重なりが起きにくくなるように特徴点を設定し直す。この処理は、ステップS403からステップS401に戻った場合と同様に行うことができる。すなわち曲線メッシュ生成部103は、特徴線を2つ以上に分割すればよい。その後曲線メッシュ生成部103は、ステップS402において、分割されたそれぞれの特徴線を曲線近似すればよい。また、ステップS401に戻る代わりに、処理はステップS403に戻ってもよい。ステップS403で拘束領域を設定し直す場合には、曲線メッシュ生成部103はより拘束領域が小さくなるように拘束領域を設定し直す。
【0057】
ステップS406で曲線メッシュ生成部103は、全ての特徴線に対して拘束領域を設定したか否かを判定する。ステップS401で選択された特徴線に、まだステップS402において曲線近似されていない部分が残っている場合、処理はステップS402に戻る。そして、ステップS401で選択された特徴線の残りの部分に対して近似曲線が求められ、さらに拘束領域が設定される。ステップS401で選択された特徴線の全体が曲線近似されており、かつまだ拘束領域が設定されていない特徴線がある場合には、処理はステップS401に戻る。ステップS401では、まだ拘束領域が設定されていない特徴線が選択され、その後この特徴線に対する拘束領域の設定が行われる。ステップS406で全ての特徴線に対して拘束領域を設定したと判定された場合、図3(G)に示すように、特徴線301,302のそれぞれに対して、重なりのない拘束領域が設定されている。ステップS401〜ステップS406までの処理により、特徴線301に対してはベジェ曲線305,312が設定されている。また、特徴線302に対してはベジェ曲線311が設定されている。
【0058】
ステップS407で曲線メッシュ生成部103は、入力画像に対して、メッシュの頂点(補助点)を追加する。この処理は例えば、曲線メッシュ生成部103が備える第2の設定部(第2の設定手段)が行うことができる。曲線メッシュ生成部103は、拘束領域外(多角形領域外)の任意の場所に複数の頂点を追加することができる。本実施例では図3(H)に示すように、縦横5画素間隔で頂点が配置される。また本実施例においては、入力画像の4隅にもメッシュの頂点が追加される。
【0059】
ステップS408で曲線メッシュ生成部103は、ステップS401で設定された特徴点と、ステップS404で設定された拘束点と、ステップS407で設定された補助点とを用いて、直線メッシュ群を生成する。この処理は例えば、曲線メッシュ生成部103が備える分割部(分割手段)が行うことができる。具体的には曲線メッシュ生成部103は、図7(I)に示されるように、分割用頂点、すなわち特徴点と拘束点と補助点、をメッシュの頂点とする直線メッシュ群を生成する。また、それぞれの拘束領域を規定する辺のそれぞれは、直線メッシュ群に含まれる少なくとも1つのメッシュの辺である。これらの条件を満たす直線メッシュ群を生成する方法ならば、曲線メッシュ生成部103はどのようなメッシュ生成アルゴリズムを用いてもよい。このように曲線メッシュ生成部103は、拘束領域外(多角形領域外)の画像領域を、分割用頂点間を辺とするメッシュに分割する。本実施例において、拘束領域内については、メッシュ分割を行わないものとする。本実施例で曲線メッシュ生成部103は、メッシュ生成アルゴリズムとして、制約付きドロネー三角形分割を用いる。本実施例においては、直線メッシュ群には拘束領域の辺(点線で示す)によって構成されるメッシュが含まれる。
【0060】
制約付きドロネー三角形分割は、コンピュータグラフィックスなどの分野で広く用いられている三角形分割方法である。制約付きドロネー三角形分割においては、点群と制約条件とが与えられると、与えられた点群を頂点とし、かつ制約条件を満たす直線メッシュ群が生成される。本実施例においては、拘束領域を構成する辺が制約条件として与えられる。制約条件で指定された以外の辺については、生成される三角形の最小角度が最大になるようにメッシュ群が生成される。ステップS408で生成される直線メッシュ群の例を図3(I)に示す。
【0061】
本実施例においては、ステップS408では制約付きドロネー三角形分割が用いられる。しかしながら、上記の条件を満たす直線メッシュ群が生成可能ならば、曲線メッシュ生成部103は別の方法を用いても構わない。例えば制約付きドロネー三角形分割では、生成される三角形の最小角度が最大になるようにメッシュ群が生成される。しかしながら、別の基準に従ってメッシュ群が生成されてもよい。
【0062】
ステップS409で曲線メッシュ生成部103は、直線メッシュ群を構成し、両端の頂点が特徴線上にある辺を、ステップS402において生成された曲線に置き換えることにより、曲線メッシュ群を生成する。具体的には曲線メッシュ生成部103は、拘束領域を構成する線分のうち、両端の頂点が特徴線上にある線分を、ステップS402において生成された曲線に置き換える。例えば、図3(I)の線分314,315,316のそれぞれは、曲線305,312,313に置き換えられる。一方で、本実施例においては拘束領域内について直線メッシュ分割を行わないため、例えば図6(D)に示される拘束領域が設定されている場合、点P1と点P2とを結ぶ線分は直線メッシュ群の辺には含まれない。このように、ステップS402において生成された曲線の両端を結ぶ線分が、直線メッシュ群の辺に含まれない場合、曲線メッシュ生成部103は、この曲線をメッシュ群を構成する辺として追加すればよい。
【0063】
以上のように、ステップS401からステップS409までの処理を行うことにより、図3(A)のような特徴線を含む画像を、図3(J)のような曲線メッシュ群に分割することができる。図3(J)の曲線メッシュ群には、図3(A)の特徴線を近似する曲線を辺として有する曲線メッシュが含まれる。すなわち図3(J)の曲線メッシュ群は、図3(A)に示される特徴線を再現している。
【0064】
図1に戻って、色情報生成部104は、曲線メッシュ生成部103によって入力画像上に設定された各メッシュについての色情報を生成する。色情報を生成する方法としては、任意の方法を採用することができる。例えば、それぞれのメッシュについて、1つの色を示す情報が記録されてもよい。この場合、符号化部105が出力した符号化データ(メッシュ符号)を復号すると、それぞれのメッシュは単色で表現される。この1つの色の定め方は任意であるが、例えば、メッシュに含まれる画素の画素値の平均値をそのメッシュの色情報とする方法が挙げられる。
【0065】
メッシュ内の色をより複雑に表現するためには、各メッシュについての色情報として、位置に対応する色を表現する関数のパラメータを記録してもよい。この場合、符号化部105が出力した符号化データ(メッシュ符号)を復号する際に、メッシュ内の各画素の画素値は所定の関数とパラメータとによって決定される。例えば非特許文献2では、RGBの3成分に対して、メッシュ内の色を決定するための薄板スプライン関数を、入力画像の色を元に生成している。
【0066】
さらには、各メッシュを更に微小な3頂点からなるメッシュに分割し、その微小なメッシュの頂点の画素の色を入力画像から取得して、取得された色をメッシュの色情報として記録してもよい。レンダリング(復号)の際には、それぞれの頂点の色に基づいて補間(例えば双線形補間)を行うことにより、メッシュ内の色を決定することができる。本実施例では、各メッシュについて1つの色を示す情報を記録する方法を用いるものとする。
【0067】
符号化部105は、曲線メッシュ生成部103が生成した各メッシュの形状情報(位置情報)と、色情報生成部104が生成した各メッシュの色情報とを含む、符号化データ(メッシュ符号)を生成する(符号化手段)。このようにして、入力画像に対する符号化データが生成される。上述のように、曲線メッシュ生成部103によって生成された曲線メッシュにおいては、ステップS402で生成された曲線の両端間については、この曲線が境界線とされる。また、曲線メッシュにおける、ステップS402で生成された曲線の両端間以外の分割用頂点間の境界線は、ステップS408で生成された直線メッシュ群に含まれる直線メッシュの辺(メッシュ辺)である。このような境界線で入力画像を分割することで得られるそれぞれの領域毎に、符号化部105は入力画像を符号化する。
【0068】
各メッシュとして3次の3頂点のベジェパッチを用い、各メッシュを単色で表現する場合、符号化部105が生成する符号化データには、以下の項目が記録される。
・メッシュ数を含むヘッダ
・各メッシュについての形状情報(各メッシュの3つの頂点の座標p1,p2,p3、及びパラメータc1,c2、c3、c4,c5,c6)
・各メッシュについての色情報(各メッシュをそれぞれ何色で塗るかを示すRGB値)
本実施例において符号化部105は、これらの項目が記されたテキストデータ(符号化データ)を、さらにzip符号化する。しかしながらデータの格納形式はテキストデータ形式には限られず、他の形式でもよい。また符号化部105はzip符号化を行わなくてもよいし、非可逆符号化を含めた他の符号化方式を用いてもよい。そしてこのようにして生成されたデータは、画像処理装置が有するメモリに格納してもよいし、外部の装置に対して出力しても良い。
【実施例2】
【0069】
以下に、実施例2に係る画像処理装置について説明する。本実施例に係る画像処理装置の構成及び動作は、実施例1に係る画像処理装置と同様である。しかしながら、曲線メッシュ生成部103、色情報生成部104、及び符号化部105の動作は、実施例1と異なる。以下では、本実施例が実施例1とは異なる点のみについて説明する。
【0070】
実施例1では、1つ以上の三角形の組み合わせを、拘束領域として設定した。本実施例では、1つ以上の四角形の組み合わせを、拘束領域として設定する。本実施例によって得られるメッシュ群には、3頂点曲線メッシュと4頂点曲線メッシュとが混在する。本実施例では、メッシュ群を表現するために、実施例1で用いた3頂点の3次のベジェパッチに加え、4頂点の3次のベジェパッチを用いる。4頂点の3次のベジェパッチの各辺もまた3次のベジェ曲線であるから、4頂点のベジェパッチと3頂点のベジェパッチとは辺を共有することができる。4頂点の3次のベジェパッチ内の点は以下の式で表される。
【数3】
【0071】
ここでu、vはパッチ内の座標である。またc11〜c44はそれぞれベジェパッチの形状を定めるパラメータである。c11,c14,c41,c44はベジェパッチの4つの頂点の座標値である。また、c12,c13,c21,c31,c24,c34,c42,c43はベジェパッチの輪郭を決める4つのベジェ曲線の制御点に対応する。c22,c23,c32,c33はベジェパッチの輪郭には関与しないパラメータであり、本実施例では実施例1と同様、ベジェパッチの頂点座標と、輪郭を成すベジェ曲線の制御点に対応するパラメータから定めることとする。
【0072】
以下に、本実施例に係る曲線メッシュ生成部103が行う処理について、図4を参照して説明する。ステップS401〜S403の処理は、実施例1と同様であるから説明を省略する。
【0073】
以下に、ステップS404において曲線メッシュ生成部103が行う処理について説明する。実施例1で説明した条件1、2、及び4を満たすベジェ曲線についての、拘束領域の設定方法を説明する。実施例1で述べたように、図6(A)に示すベジェ曲線は条件1、2、及び4を満たす。この場合は図6(E)のように、ベジェ曲線の2つの制御点を拘束点とすればよい。そして、ベジェ曲線の2つの端点及び2つの拘束点によって規定される四角形を拘束領域として設定すればよい。
【0074】
次に実施例1で説明した条件1及び4を満たすベジェ曲線についての、拘束領域の設定方法を説明する。実施例1で述べたように、図6(C)に示すベジェ曲線は条件1及び3を満たす。この場合は図6(F)のように、2つの四角形を拘束領域として設定すればよい。一方の四角形は、ベジェ曲線の端点P1,P2及び点604,605によって規定される四角形であり、他方の四角形は、ベジェ曲線の端点P1,P2及び点606,607によって規定される四角形である。すなわち、これら2つの四角形を組み合わせて得られる六角形を拘束領域として設定する。
【0075】
本実施例において、点604〜607は以下のように決定する。まず、x軸に平行で、y座標が点P1とP2を結ぶベジェ曲線上の点が取るy座標の最大値より大きく、図6(C)に示す制御点C2のy座標より小さい直線L1を考える。図6(F)において、直線L1は線分609を含む直線である。そして、図6(C)に示す端点P1と制御点C2とを結ぶ線分と、直線L1との交点を点604とする。また、図6(C)に示す端点P2と制御点C2とを結んだ線分と、直線L1との交点を点605とする。直線L1のy座標は任意であるが、直線L1のy座標が小さいほど拘束領域は小さくなるため、直線L1のy座標はできるだけ小さくなるように設定されてもよい。
【0076】
点606,607も、点604,605と同様に決定できる。すなわち、x軸に平行で、y座標が点P1とP2とを結ぶベジェ曲線上の点が取るy座標の最小値より小さく、図6(C)に示す制御点C1のy座標より大きい直線L2を考える。図6(F)において、直線L2は線分610を含む直線である。そして、図6(C)に示す端点P1と制御点C1とを結ぶ線分と、直線L2との交点を点606とする。また、図6(C)に示す端点P2と制御点C1とを結んだ線分と、直線L2との交点を点607とする。直線L2のy座標も任意であるが、直線L2のy座標が大きいほど拘束領域は小さくなるため、直線L1のy座標はできるだけ大きくなるように設定されてもよい。
【0077】
また、拘束領域を設定する対象である曲線が実際には線分である場合には、実施例1と同様に、拘束点および拘束領域を設定する必要はない。
【0078】
ステップS405及びS406は、実施例1と同様に行うことができる。図3(A)に示される入力画像に対して、実施例2に従って拘束領域を設定した場合の例を、図3(K)に示す。図3(K)のように、特徴線301,302を近似するベジェ曲線305,312,313のそれぞれに対して、重なりのない拘束領域が設定されている。
【0079】
ステップS407で曲線メッシュ生成部103は、実施例1と同様に、拘束領域外に補助点を設定する。ステップS407において補助点が配置された画像の例を、図3(L)に示す。
【0080】
ステップS408において曲線メッシュ生成部103は、実施例1と同様に、直線メッシュ群を生成する。実施例1と同様に曲線メッシュ生成部103は、制約付きドロネー三角形分割によって直線メッシュ群を生成することができる。本実施例において生成される直線メッシュ群は、特徴点と拘束点と補助点とをメッシュの頂点とする直線メッシュ群である。また、それぞれの拘束領域を規定する4辺のそれぞれは、直線メッシュ群に含まれる少なくとも1つのメッシュの辺である。ただし、制約付きドロネー三角形分割は三角形メッシュ群を生成する方法であるため、拘束領域を構成する四角形が2つの三角形に分割されてしまう。そこで本実施例において曲線メッシュ生成部103は、三角形の直線メッシュ群を生成した後に、拘束領域を分割する辺を除去する。以上で述べた処理によって、拘束領域外の画像がメッシュに分割されることにより、図3(M)に示される直線メッシュ群が得られる。図3(M)に示される直線メッシュ群は制約付きドロネー三角形分割によって生成されたため、拘束領域外のメッシュは三角形メッシュである。
【0081】
ステップS409において曲線メッシュ生成部103は、実施例1と同様に、拘束領域を構成する線分のうち、両端の頂点が特徴線上にある線分を、ステップS402において生成された曲線に置き換える。こうして、図3(N)にされる曲線メッシュ群が得られる。
【0082】
本実施例によって得られる曲線メッシュ群には、図3(N)に示されるように、3頂点のメッシュと4頂点のメッシュとが含まれる。別の実施例においては、3頂点のメッシュを分割又は統合することにより4頂点のメッシュに変形する既知の技術に従って、この曲線メッシュ群を4頂点のメッシュのみからなる曲線メッシュ群に変換してもよい。
【0083】
次に、本実施例に係る色情報生成部104が行う処理について説明する。3頂点のメッシュについては、実施例1と同様の方法で色情報を生成すれば良い。また4頂点のメッシュについても、類似の方法で色情報を生成することができる。例えば、各メッシュについて1つの色を示す情報を記録してもよい。また、各メッシュについての色情報として、位置に対応する色を表現する関数のパラメータを記録してもよい。また、各メッシュを更に微小な4頂点からなるメッシュに分割し、その微小なメッシュの頂点の画素の色を入力画像から取得して、取得された色をメッシュの色情報として記録してもよい。レンダリング(復号)の際には、それぞれの頂点の色に基づいて補間(例えば双線形補間)を行うことにより、メッシュ内の色を決定することができる。
【0084】
符号化部105は実施例1と同様に、曲線メッシュ生成部103が生成した各メッシュの形状情報(位置情報)と、色情報生成部104が生成した各メッシュの色情報とを含む、符号化データ(メッシュ符号)を生成する。このようにして、入力画像に対する符号化データが生成される。本実施例で生成される曲線メッシュ群には、3頂点のメッシュと4頂点のメッシュとが含まれるため、これらを符号化データ内において区別する必要がある。区別は任意の方法で行うことができるが、本実施例では符号化データにおいて、3頂点メッシュについてのデータを先に記録し、4頂点メッシュについてのデータを後に記録する。3頂点メッシュについてのデータは、実施例1と同様に形状情報と色情報とにより構成されうる。また4頂点メッシュについてのデータもまた、形状情報と色情報とにより構成されうる。
【0085】
例えば、メッシュとして3次の3頂点のベジェパッチ及び3次の4頂点のベジェパッチを用いる場合に、符号化部105が生成する符号化データには以下の項目が記録されうる。ここで、実施例1と同様に、各メッシュは単色で表現されるものとする。
・3頂点メッシュ及び4頂点メッシュのメッシュ数を含むヘッダ
・実施例1と同様の、3頂点メッシュのそれぞれの形状情報
・実施例1と同様の、3頂点メッシュのそれぞれの色情報
・4頂点メッシュのそれぞれの形状情報(各メッシュの4つの頂点の座標c11,c14,c41,c44、及びパラメータc12,c13,c21,c31,c24,c34,c42,c43)
・4頂点メッシュのそれぞれの色情報(各メッシュを何色で塗るかを示すRGB値)
【0086】
実施例1と同様に、符号化部105は、生成された符号化データを、画像処理装置が有するメモリに格納してもよいし、外部の装置に対して出力しても良い。また符号化部105は、実施例1と同様に、生成された符号化データをさらに符号化してもよい。
【実施例3】
【0087】
実施例1では、ステップS405で拘束領域の重なりが検知された場合、処理はステップS401に戻り、拘束領域の重なりが起きにくくなるよう特徴線上に再度特徴点を設定しなおした。しかしながら特徴点を増やすと、特徴線を近似する曲線が通らなければならない点が増えるため、符号化された画像を復号した際に画像にガタつきが生じる可能性がある。
【0088】
実施例3では、拘束領域の重なりが検知された場合には、近似曲線を分割する。本実施例の方法によれば、平滑性を維持しながら、近似曲線を分割しうる。以下に、本実施例に係る処理について、図7のフローチャートを参照して説明する。本実施例に係る処理は、実施例1と同様に、図1に示す画像処理装置100を用いて行うことができる。以下では、図9(A)に示す入力画像を処理する入力画像に対して処理を行うものとする。
【0089】
ステップS701において曲線メッシュ生成部103は、特徴線構成部102が検出した特徴線を順次選択し、選択した特徴線上に特徴点を設定する。この処理は、実施例1のステップS401と同様に行うことができる。
【0090】
ステップS702で曲線メッシュ生成部103は、特徴点で区切られた特徴線の一部を曲線化する。この処理は、実施例1のステップS402と同様に行うことができる。
【0091】
ステップS703で曲線メッシュ生成部103は、ステップS702で得られた曲線が基準を満たすかを判定する。この処理は、実施例1のステップS403と同様に行うことができる。
【0092】
ステップS704で曲線メッシュ生成部103は、全ての特徴線に対し、曲線を設定したかを判定する。曲線を設定していない特徴線がある場合には、図7に示すように、処理はステップS701に戻る。全ての特徴線に対して曲線を設定したと判定された場合は、処理はステップS705に進む。
【0093】
ステップS705で曲線メッシュ生成部103は、ステップS701〜ステップS704で設定された曲線群のうち、拘束領域が設定されていない曲線を1つ選択する。そして、処理はステップS706に進む。
【0094】
ステップS706で曲線メッシュ生成部103は、ステップS705で選択された曲線に対して、拘束点と拘束領域の設定を行う。この処理は、実施例1のステップS404と同様に行うことができる。
【0095】
ステップS707で曲線メッシュ生成部103は、拘束領域の重なりを判定する。この処理は、実施例1のステップS405と同様に行うことができる。図9(A)のように重なりがあると判定された場合、処理はステップS708に進む。重なりがないと判定された場合、処理はステップS709に進む。
【0096】
ステップS708で曲線メッシュ生成部103は、ステップS705で選択された曲線に対してステップS706で設定された拘束点及び拘束領域を取り消し、さらにステップS705で選択された曲線を分割する。具体的には曲線メッシュ生成部103は、ステップS705で選択された曲線上に分割点を設定し、曲線を複数の部分に分割する。そして曲線メッシュ生成部103は、分割により生じたそれぞれの部分曲線について、曲線を表すパラメータを算出する。例えば、曲線が3次のベジェ曲線である場合、それぞれの部分曲線について制御点の位置を算出すればよい。本実施例においてはステップS705で選択された曲線が分割されるが、互いに重なる拘束領域のそれぞれに内包される曲線のうち、ステップS705で選択されていない曲線が分割されてもよい。このようにして、互いに重なる拘束領域の少なくとも一方に内包される曲線が、2つ以上の曲線へと分割される。
【0097】
以下で、曲線が3次のベジェ曲線である場合の、制御点の位置の算出方法の一例について、図8を参照して詳しく説明する。図8の例では、両端の点A,Bと、制御点C,Dとで定められる3次のベジェ曲線が分割される。
【0098】
まず、線分ABをt:1−tの割合で内分する点Eの位置が算出される。同様に、線分BCをt:1−tの割合で内分する点Fの位置と、線分CDをt:1−tの割合で内分する点Gの位置とが算出される。次に、点E,Fを結ぶ線分EFをt:1−tの割合で内分する点Hの位置と、点F,Gを結ぶ線分FGをt:1−tの割合で内分する点Iの位置とが算出される。さらに、点H,Iを結ぶ線分HIをt:1−tの割合で内分する点Jの位置が算出される。
【0099】
ここで、点Jが曲線を分割する分割点として用いられる。また、点A,Jが分割により得られる第1のベジェ曲線の両端の点として、点E,Hがその制御点として用いられる。さらに、点J,Dが分割により得られる第2のベジェ曲線の両端の点として、点I,Gがその制御点として用いられる。
【0100】
このようにして、元の曲線形状を維持しながら曲線を分割する事ができる。分割の割合を示すパラメータtは任意の値(通常は0<t<1)でよく、例えばt=0.5でありうる。その後処理はステップS705に戻り、分割により得られた部分曲線のそれぞれがその後の処理においてステップS705で選択される。
【0101】
ステップS709で曲線メッシュ生成部103は、全ての曲線に対して拘束領域を設定したかを判定する。拘束領域を設定していない曲線がある場合には、図7に示すように処理はステップS705に戻り、処理が繰り返される。全ての曲線に対して拘束領域を設定したと判定された場合、処理はステップS710に進む。ここまでの処理により、図9(B)に示されるように拘束領域が設定される。
【0102】
ステップS710で曲線メッシュ生成部103は、入力画像に対して、メッシュの頂点(補助点)を追加する。この処理は、実施例1のステップS407と同様に行うことができる。
【0103】
ステップS711で曲線メッシュ生成部103は、ステップS701で設定された特徴点と、ステップS706で設定された拘束点と、ステップS708で設定された分割点と、ステップS710で設定された補助点とを用いて、直線メッシュ群を生成する。この処理は、実施例1のステップS408と同様に行うことができる。具体的には曲線メッシュ生成部103は、図9(C)に示されるように、特徴点、曲線分割点、拘束点、及び補助点をメッシュの頂点とする直線メッシュ群を生成する。
【0104】
ステップS712で曲線メッシュ生成部103は、拘束領域を構成する線分のうち両端の頂点が特徴点又は曲線分割点である線分を、図9(D)に示すように、ステップS708又はステップS702で設定された曲線に置き換える。この処理は、実施例1のステップS409と同様に行うことができる。こうして、図9(D)に示すように曲線メッシュ群が生成される。
【0105】
以上の処理により、曲線の平滑性を保持しながらも、重なりの無い曲線メッシュ群へと画像を分割することができる。さらなる実施形態として、ステップS704までに算出された曲線同士に重なりがある場合は、曲線同士が重ならないように、それぞれの曲線についてのパラメータ、例えば制御点の位置、を調整してもよい。
【実施例4】
【0106】
上述の各実施例において、画像処理装置100を構成する各部はハードウェアで構成されているものとした。本実施例においては、画像処理装置100を構成する各部のうち少なくとも1つを、ソフトウェア(コンピュータプログラム)として実装する。この場合、このソフトウェアは、PC(パーソナルコンピュータ)などの一般のコンピュータのメモリにインストールされる。そしてこのコンピュータのCPUがこのインストールされたソフトウェアを実行することにより、このコンピュータは、画像処理装置100の機能(図1に示した各部の機能)を実現することができる。すなわち、このコンピュータを、画像処理装置100として用いることができる。上述の各実施例に係る画像処理装置100として利用可能なコンピュータのハードウェア構成例について、図10のブロック図を参照して説明する。図10は、本実施例に係るコンピュータのハードウェア構成を示す。
【0107】
CPU1001は、RAM1002やROM1003に格納されているコンピュータプログラムやデータを用いて、コンピュータ全体の制御を行うと共に、画像処理装置100が行うものとして説明した上述の各処理を実行する。即ちCPU1001は、コンピュータプログラムに従って、図1に示した各部が行うものとして説明された各処理を実行する。
【0108】
RAM1002は、コンピュータが読み取り可能な記憶媒体の一例である。RAM1002は、外部記憶装置1007又は記憶媒体ドライブ1008のような記憶媒体からロードされたコンピュータプログラムやデータを一時的に記憶するためのエリアを有する。さらにRAM1002は、I/F(インタフェース)1009を介して外部装置から受信したデータなどを一時的に記憶するエリアも有しうる。さらにRAM1002は、CPU1001が各種の処理を実行する際に用いるワークエリアを有する。すなわちRAM1002は、各種のエリアを提供することができる。
【0109】
ROM1003は、コンピュータが読み取り可能な記憶媒体の一例であり、コンピュータの設定データや、ブートプログラムなどが格納されている。キーボード1004及びマウス1005は、入力デバイスの一例である。キーボード1004及びマウス1005をコンピュータの操作者が操作することにより、各種の指示をCPU1001に対して入力することができる。
【0110】
表示装置1006は、出力デバイスの一例である。表示装置1006は、例えばCRT又は液晶画面などでありうる。表示装置1006は、CPU1001による処理結果を、画像や文字などによって表示することができる。例えば表示装置1006は、入力画像を表示すること、処理途中で生成される直線メッシュ群又は曲線メッシュ群を表示すること、最終的に生成された曲線メッシュ群を表示すること、などができる。
【0111】
外部記憶装置1007は、コンピュータ読み取り可能な記憶媒体の一例である。外部記憶装置1007は例えば、ハードディスクドライブ装置に代表される大容量情報記憶装置でありうる。外部記憶装置1007には、OS(オペレーティングシステム)や、図1に示した各部の機能をCPU1001に実現させるためのコンピュータプログラム又はデータ、入力画像のデータ、並びに既知の情報として説明された情報、などを保存できる。外部記憶装置1007に保存されているコンピュータプログラム又はデータは、CPU1001による制御に従って適宜RAM1002にロードされる。そして、コンピュータプログラムに従って動作するCPU1001は、RAM1002にロードされたデータを処理することができる。
【0112】
記憶媒体ドライブ1008は、CD−ROMやDVD−ROMなどの記憶媒体に記録されているコンピュータプログラム又はデータを読み出すことができる。そして記憶媒体ドライブ1008は、読み出したコンピュータプログラム又はデータを外部記憶装置1007又はRAM1002などに出力することができる。外部記憶装置1007に保存されているものとして説明したコンピュータプログラム又はデータ情報の一部若しくは全部は、この記憶媒体に記録されていてもよい。
【0113】
I/F1009は、外部装置をコンピュータに接続する為のインタフェースである。例えば、ディジタルカメラなど、入力画像を取得するための装置をこのI/F1009に接続してもよい。この場合CPU1001は、この外部装置から入力画像をI/F1009を介して取得し、RAM1002又は外部記憶装置1007などに入力画像を格納してもよい。上述の各部は、バス1010によって互いに接続されている。
【0114】
本実施例において、コンピュータの電源がONになると、CPU1001はROM1003に格納されているブートプログラムに従って、外部記憶装置1007からOSをRAM1002へとロードする。この結果、キーボード1004又はマウス1005を介して、コンピュータに対して情報を入力することが可能となる。また、表示装置1006にGUIを表示することが可能となる。ユーザが、キーボード1004又はマウス1005を操作し、外部記憶装置1007に格納された画像処理用アプリケーションプログラムの起動指示を入力すると、CPU1001はこのプログラムをRAM1002にロードして実行する。こうして、本実施例に係るコンピュータは上述の各実施例に係る画像処理装置として機能する。
【0115】
通常、CPU1001が実行する画像処理用アプリケーションプログラムは、図1に示す各構成要素に相当する関数を備える。また、生成された符号化データは外部記憶装置1007又はコンピュータに接続されたその他の記憶媒体に格納される。
【0116】
(他の実施形態)
上述の実施例においては、例えばステップS405に示されるように、拘束領域に重なりがあるか否かが判定された。しかしながらこの処理を行わなくても、拘束領域を設定しない場合と比べて、メッシュの重なりを減らすことは可能である。
【0117】
実施例1において、1つの曲線について設定される拘束領域の形状は、1つの三角形又は2つの三角形の組み合わせであった。また、実施例2において、1つの曲線について設定される拘束領域の形状は、1つの四角形又は2つの四角形の組み合わせであった。しかしながら拘束領域の形状は、任意の多角形でありうる。
【0118】
本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)をネットワーク又は各種記憶媒体を介してシステム或いは装置に供給する。そして、そのシステム或いは装置のコンピュータ(又はCPUやMPU等)がプログラムコードを読み出して実行する。この場合、そのプログラム、及び該プログラムを記憶した記憶媒体は本発明を構成することになる。
【特許請求の範囲】
【請求項1】
入力画像を複数のメッシュに分割し、分割したメッシュ毎に符号化する画像処理装置であって、
前記入力画像中の各エッジ線を曲線近似する近似手段と、
前記近似手段により近似された曲線の両端を頂点として利用し且つ該曲線を内包する多角形領域を設定する第1の設定手段と、
前記入力画像において前記多角形領域外に複数の頂点を設定する第2の設定手段と、
前記多角形領域の各頂点及び前記第2の設定手段が設定した各頂点を分割用頂点とし、前記入力画像において前記多角形領域外の領域を、該分割用頂点間を辺とするメッシュに分割する分割手段と、
前記曲線の両端間については前記曲線、前記曲線の両端間以外の前記分割用頂点間については前記分割手段が定めたメッシュ辺、を境界線とし、それぞれの境界線で前記入力画像を分割することで得られるそれぞれの領域をメッシュとして符号化する符号化手段と
を備えることを特徴とする、画像処理装置。
【請求項2】
前記画像処理装置は、
それぞれの前記曲線について設定された前記多角形領域が互いに重なるか否かを判定する判定手段をさらに備え、
前記多角形領域が互いに重なると判定された場合、前記近似手段は少なくとも1つの前記エッジ線を2つ以上のエッジ線に分割し、分割されたそれぞれのエッジ線を曲線近似することを特徴とする、請求項1に記載の画像処理装置。
【請求項3】
前記画像処理装置は、
それぞれの前記曲線について設定された前記多角形領域が互いに重なるか否かを判定する判定手段と、
前記多角形領域が互いに重なると判定された場合に、該互いに重なる多角形領域の少なくとも一方に内包される曲線を2つ以上の曲線へと分割する曲線分割手段と、
をさらに備えることを特徴とする、請求項1に記載の画像処理装置。
【請求項4】
入力画像を複数のメッシュに分割し、分割したメッシュ毎に符号化する画像処理装置が行う画像処理方法であって、
前記画像処理装置の近似手段が、前記入力画像中の各エッジ線を曲線近似する近似工程と、
前記画像処理装置の第1の設定手段が、前記近似工程で近似された曲線の両端を頂点として利用し且つ該曲線を内包する多角形領域を設定する第1の設定工程と、
前記画像処理装置の第2の設定手段が、前記入力画像において前記多角形領域外に複数の頂点を設定する第2の設定工程と、
前記画像処理装置の分割手段が、前記多角形領域の各頂点及び前記第2の設定工程で設定した各頂点を分割用頂点とし、前記入力画像において前記多角形領域外の領域を、該分割用頂点間を辺とするメッシュに分割する分割工程と、
前記画像処理装置の符号化手段が、前記曲線の両端間については前記曲線、前記曲線の両端間以外の前記分割用頂点間については前記分割工程で定めたメッシュ辺、を境界線とし、それぞれの境界線で前記入力画像を分割することで得られるそれぞれの領域をメッシュとして符号化する符号化工程と
を備えることを特徴とする、画像処理方法。
【請求項5】
コンピュータを、請求項1乃至3の何れか1項に記載の画像処理装置の各手段として機能させるための、コンピュータプログラム。
【請求項1】
入力画像を複数のメッシュに分割し、分割したメッシュ毎に符号化する画像処理装置であって、
前記入力画像中の各エッジ線を曲線近似する近似手段と、
前記近似手段により近似された曲線の両端を頂点として利用し且つ該曲線を内包する多角形領域を設定する第1の設定手段と、
前記入力画像において前記多角形領域外に複数の頂点を設定する第2の設定手段と、
前記多角形領域の各頂点及び前記第2の設定手段が設定した各頂点を分割用頂点とし、前記入力画像において前記多角形領域外の領域を、該分割用頂点間を辺とするメッシュに分割する分割手段と、
前記曲線の両端間については前記曲線、前記曲線の両端間以外の前記分割用頂点間については前記分割手段が定めたメッシュ辺、を境界線とし、それぞれの境界線で前記入力画像を分割することで得られるそれぞれの領域をメッシュとして符号化する符号化手段と
を備えることを特徴とする、画像処理装置。
【請求項2】
前記画像処理装置は、
それぞれの前記曲線について設定された前記多角形領域が互いに重なるか否かを判定する判定手段をさらに備え、
前記多角形領域が互いに重なると判定された場合、前記近似手段は少なくとも1つの前記エッジ線を2つ以上のエッジ線に分割し、分割されたそれぞれのエッジ線を曲線近似することを特徴とする、請求項1に記載の画像処理装置。
【請求項3】
前記画像処理装置は、
それぞれの前記曲線について設定された前記多角形領域が互いに重なるか否かを判定する判定手段と、
前記多角形領域が互いに重なると判定された場合に、該互いに重なる多角形領域の少なくとも一方に内包される曲線を2つ以上の曲線へと分割する曲線分割手段と、
をさらに備えることを特徴とする、請求項1に記載の画像処理装置。
【請求項4】
入力画像を複数のメッシュに分割し、分割したメッシュ毎に符号化する画像処理装置が行う画像処理方法であって、
前記画像処理装置の近似手段が、前記入力画像中の各エッジ線を曲線近似する近似工程と、
前記画像処理装置の第1の設定手段が、前記近似工程で近似された曲線の両端を頂点として利用し且つ該曲線を内包する多角形領域を設定する第1の設定工程と、
前記画像処理装置の第2の設定手段が、前記入力画像において前記多角形領域外に複数の頂点を設定する第2の設定工程と、
前記画像処理装置の分割手段が、前記多角形領域の各頂点及び前記第2の設定工程で設定した各頂点を分割用頂点とし、前記入力画像において前記多角形領域外の領域を、該分割用頂点間を辺とするメッシュに分割する分割工程と、
前記画像処理装置の符号化手段が、前記曲線の両端間については前記曲線、前記曲線の両端間以外の前記分割用頂点間については前記分割工程で定めたメッシュ辺、を境界線とし、それぞれの境界線で前記入力画像を分割することで得られるそれぞれの領域をメッシュとして符号化する符号化工程と
を備えることを特徴とする、画像処理方法。
【請求項5】
コンピュータを、請求項1乃至3の何れか1項に記載の画像処理装置の各手段として機能させるための、コンピュータプログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【公開番号】特開2012−230668(P2012−230668A)
【公開日】平成24年11月22日(2012.11.22)
【国際特許分類】
【出願番号】特願2012−72343(P2012−72343)
【出願日】平成24年3月27日(2012.3.27)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
【公開日】平成24年11月22日(2012.11.22)
【国際特許分類】
【出願日】平成24年3月27日(2012.3.27)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
[ Back to top ]