毛筆フォント作成方法および毛筆フォント作成プログラム
【課題】画像フィルタを用いずに毛筆フォントに掠れ滲みを付加した毛筆フォントを作成する。
【解決手段】参照事例となるReferenceと処理対象とするTargetの双方の文字骨格をノードとノード間を繋ぐエッジの集合として表現したグラフとして獲得し、各グラフを構成するエッジ同士の対応関係を決める。図中の16,17に示すように、Reference Shape「天」の左払いのエッジを,Target「大」の左払いのエッジに割り当てる。この割当によってエッジ周辺の文字領域も対応づける。Reference上の対応する文字領域(「天」の左払い部分)をテクスチャとして取り出し,Targetの「大」の左払いである文字領域に貼付する。このように,Targetの各エッジに対応するReference Shapeのエッジの割当,さらにReferenceの割当するエッジ周辺の文字領域の対応づけおよびテクスチャ貼付を,Targetを構成するすべてのエッジに対し実行し,出力フォントを得る。
【解決手段】参照事例となるReferenceと処理対象とするTargetの双方の文字骨格をノードとノード間を繋ぐエッジの集合として表現したグラフとして獲得し、各グラフを構成するエッジ同士の対応関係を決める。図中の16,17に示すように、Reference Shape「天」の左払いのエッジを,Target「大」の左払いのエッジに割り当てる。この割当によってエッジ周辺の文字領域も対応づける。Reference上の対応する文字領域(「天」の左払い部分)をテクスチャとして取り出し,Targetの「大」の左払いである文字領域に貼付する。このように,Targetの各エッジに対応するReference Shapeのエッジの割当,さらにReferenceの割当するエッジ周辺の文字領域の対応づけおよびテクスチャ貼付を,Targetを構成するすべてのエッジに対し実行し,出力フォントを得る。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、参照事例となる毛筆文字の持つ掠れ滲み特徴を処理対象の毛筆フォントに付加して毛筆フォントを作成する毛筆フォント作成方法および毛筆フォント作成プログラムに関するものである。
【背景技術】
【0002】
これまでに,毛筆フォントの作成や加工に関する研究がいくつか報告されている.筆触カーソルや数理形態学を用いた毛筆フォントの掠れ滲み表現技術(特許文献1、非特許文献1,2)はその代表的な研究例であるが,処理対象である既存の毛筆フォントにたいし掠れ・滲みのデザインを付加し,手書き風の芸術特徴をフォントに付加するものである.この方法は画像フィルタを利用したアプローチに相当する。
【0003】
他方,処理対象が毛筆フォントではないが,一般画像をテクスチャ合成によって絵画風に変換する等の手法が存在する。非特許文献3,4がその代表例であるが,これらは処理対象である一般画像のほかに,参照事例として著名画家の絵画画像等を用意し,それが持つ美術的特徴を利用して一般画像を処理し参照事例に類似した絵画風画像に変換するものである。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開平10−83177号公報
【非特許文献】
【0005】
【非特許文献1】中村剛士,真野淳治,世木博久,伊藤 英則,``毛筆フォントの掠れ・滲み処理システムについて'',情報処理学会論文誌, vol.38, no.5, pp.1008--1015, May.1997.
【非特許文献2】市川孝之,井戸川知之,堤正義,``数理形態学を用いた毛筆体フォントの掠れ・滲み処理'',日本応用数理学会論文誌, vol.10, no.3, pp.263--272, Sept.2000.
【非特許文献3】A. Hertzmann, C. Jacobs, N. Oliver, B. Curless, and D. Salesin,``Image Analogies'', Proc. SIGGRAPH '01, pp.327--340, Aug.2001.
【非特許文献4】G. Ramanarayanan, and K. Bala,``Constrained Texture Synthesis via Energy Minimization'', IEEE Transactions on Visualization and Computer Graphics, vol.13, no.1, pp.167--178, Jan.2007.
【発明の概要】
【発明が解決しようとする課題】
【0006】
特許文献1、非特許文献1、2に記載のものの問題点は,毛筆フォントに掠れ・滲みを付加する処理において,著名書家の作品画像などの参照事例となるものを使用せず,画像フィルタによって処理をすることにある。このため,画像フィルタの設計が,最終的に加工出力される毛筆フォントの質に大きく影響する。しかしながら,このフィルタの設計は容易ではなく,フィルタによってどのような出力が獲得されるかは予想することが難しく,そのため,デザインするユーザが期待する任意の掠れや滲み特徴をフォントに付加することはほぼ出来ないに等しい。
【0007】
非特許文献3、4に記載のものは,参照事例を用いることでその美術特徴を,ユーザ自身が視覚によって確認した上で絵画風画像変換を実行できるため,ユーザが期待する出力画像を得ることが出来る。ただし,この方法は,毛筆文字のように筆の進む方向が明白な構造を持った処理対象については,その構造に基づいた処理をすることが出来ない。そのため,フォントの加工処理に利用しても,掠れや滲みの特徴が不自然となり,参照事例に類似した特徴を出力に反映させることが出来ない。
【0008】
本発明は上記点に鑑みて、画像フィルタを用いずに毛筆フォントに掠れ滲みを付加した毛筆フォントを作成することを目的とする。
【課題を解決するための手段】
【0009】
上記目的を達成するため、請求項1に記載の発明では、参照事例となる毛筆文字の持つ掠れ滲み特徴を処理対象となる対象フォントに付加して毛筆フォントを作成する毛筆フォント作成方法であって,
前記参照事例と前記対象フォントの双方の文字骨格をノードとノード間を繋ぐエッジの集合として表現したグラフとして獲得するステップと,
前記参照事例と前記対象フォントの双方のグラフが持つエッジ同士を対応付けるステップと,
前記対象フォントのエッジにたいし,対応する前記参照事例のエッジ周辺の掠れ滲み特徴を貼りつけるステップと、を有することを特徴とする。
【0010】
請求項2に記載の発明では、上記した毛筆フォント作成方法をコンピュータに実行させるためのプログラムを特徴とする。
【図面の簡単な説明】
【0011】
【図1】本発明の一実施形態に係る毛筆フォント作成方法の概要を示す図である。
【図2】Reference Shape,Referenceの文字骨格を示すグラフ構成を示す図である。
【図3】Targetの文字骨格を示すグラフ構成を示す図である。
【図4】毛筆フォント作成方法の概念図である。
【図5】本発明の一実施形態に係る毛筆フォント作成方法を実施するハードウェア構成を示す図である。
【図6】毛筆フォント作成方法を実行するためのプログラムを示すフローチャートある。
【図7】図6中のエッジ割当処理の概念図を示す図である。
【図8】エッジ割当処理のStyle評価部分を示すフローチャートである。
【図9】エッジ割当処理のLength,Direction評価部分を示すフローチャートである。
【図10】テクスチャ貼付処理を示すフローチャートである。
【図11】テクスチャ貼付処理の概念図である。
【図12】本発明の入出力例および従来研究の出力例を示す図である。
【発明を実施するための形態】
【0012】
図1に本発明の一実施形態に係る毛筆フォント作成方法の概要を示す。この毛筆フォント作成方法では,図1の1に示すReferenceを参照事例とし,図1の3に示すTargetを処理の対象とする。Referenceの持つ掠れ滲み特徴をTargetに付加することで,4に示す出力フォントOutputを得る。ただし,掠れ滲み加工処理の入力としては,ReferenceとTargetのほかに,図1の3に示すReference Shapeを入力する。Reference ShapeはReferenceの文字領域(筆が通った墨のついた部分と掠れた部分)を背景領域と区別するために別途用意する。
【0013】
図1の3に示すReference Shapeと図1の2に示すTargetはそれぞれ細線化処理によってその文字骨格を獲得する。それぞれの文字骨格は図2,図3に示す無向グラフ構造で表すことができる。図2はReference Shape,図3はTargetの例である。図2の○で示す21はグラフの終端ノードを表し,□で示す22は非終端ノードを表す。また,図2の23に示すようにノード間を繋ぐ線をエッジとする。図3のTargetについても,24,25に示す○,□は図2で示すものと同じ終端ノード,非終端ノードであり,26はエッジを表す。これによって,Reference ShapeおよびTargetは元々,文字領域と背景領域で構成されるが,これに加えて文字領域の文字骨格を表すグラフが追加される。Reference Shapeの文字骨格とその無向グラフ構造は図1の1に示すReferenceの骨格にも相当する。
【0014】
図4に本発明の処理の流れを示す。図4の13に示すinputは,Target, Reference, Reference Shapeの3画像であり,図4の14は細線化処理後に獲得したグラフ構造を持つReference Shape及びReferenceの文字骨格GRであり,図4の15は同様にして得たTargetの文字骨格GTである。
【0015】
文字骨格を獲得した後,各グラフを構成するエッジ同士の対応関係を決める。すなわち,GTを構成するエッジにたいしGRを構成するエッジのいずれかを割り当てる。割当は重複しても構わない。図4の16,17は14に示すReference Shape「天」の左払いのエッジを,Target「大」の左払いのエッジに割り当てることを決定した例であり,割当によってエッジ周辺の文字領域も対応づける。16,17に対応するエッジとエッジ周辺の文字領域(灰色で示す領域)が対応付けられた様子を示す。図4の18はReferenceであり,図4の19は18のReference上の対応する文字領域(「天」の左払い部分)をテクスチャとして取り出し,Targetの「大」の左払いである文字領域に貼付した様子を示す。
【0016】
このように,Targetの各エッジに対応するReference Shapeのエッジの割当,さらにReferenceの割当するエッジ周辺の文字領域の対応づけおよびテクスチャ貼付を,Targetを構成するすべてのエッジに対し実行し,出力フォント(図4の20のoutput)を得る。
【0017】
つぎに、上記した概要の具体的な構成について説明する。図1に示した概要をハードウェアとして構成した場合,たとえば図5のように構成される。すなわち,Target,Reference,Reference Shapeの3つを画像としてそれぞれスキャナ5等によってコンピュータ6に取り込み,それをコンピュータ6内部でプログラムによって処理し,Outputを画像としてディスプレイ,プリンタ7等に出力する。
【0018】
コンピュータ6内部で実行されるプログラムのフローチャートを図6に示す。このフローチャートの処理の流れに沿って,各処理の概略を説明する。
【0019】
まず,ステップ8に示すように,プログラムは,Target, Reference, Reference Shapeの3画像を入力として受取り,ステップ9に示す細線化処理(たとえばHilditchの細線化)Reference Shapeの2画像にたいし実行する。これによりステップ10に示すようにTargetとReference Shapeの文字骨格をグラフ構造GT ,GRとしてそれぞれ獲得する。ここでいうグラフ構造とは文字骨格をノードとエッジの集合として表現したものをいう。また,Reference Shapeの文字骨格GRはReferenceの文字骨格としても扱うように設定する。
【0020】
つぎに,j=1として初期化し,ステップ11に示すように,Targetのj番目のエッジejTにたいしReferenceのエッジejRを割り当てる。エッジの割当が決まったら,ステップ12に示すようにTargetのj番目のエッジejT周辺の文字領域にたいしReferenceのエッジejR周辺のテクスチャを加工して添付する。この割当,テクスチャ貼付の処理をTargetの総エッジ数MT分だけ繰り返しプログラムを終了する。
【0021】
以下、上記した各ステップのうちステップ10〜12での処理の詳細について説明する。
(ステップ10の処理)
ステップ10において,Reference ShapeとTargetはそれぞれ細線化処理(たとえば,Hilditchの細線化法)によってその文字骨格を獲得する(グラフ構造GR ,GTの例については図2,図3参照)。グラフGR ,GTを構成するエッジ,ノードの各定義については次のとおりである。図2,図3に例示したように,GR ,GT は複数のノード及びノード間を結ぶエッジから構成される。
【0022】
ここで,式(1)と式(2)に示すように,GRが持つノードの集合をVR,GTが持つノードの集合をVTと表す。また式(1)と式(2)にあるように,VjR,VjTをそれぞれGR を構成するi番目のノード,GT を構成するj番目のノードとする。
【0023】
【数1】
【0024】
【数2】
【0025】
式(3)と式(4)に示すように,各ノードには,終端ノード(tn)と非終非終端ノード(ntn)の2種類を設定する。さらに,GRとGTのエッジの集合を式(5)と式(6)に示すように,それぞれER,ETと表し,式(5)と式(6)に示すように,GR を構成するi番目のエッジ,GT を構成するj番目のノードをそれぞれejR,ejTと表す。
【0026】
【数3】
【0027】
【数4】
【0028】
【数5】
【0029】
【数6】
【0030】
また,式(7)と式(8)に示すように,各エッジには3種類の属性(Style,Direction,Length)を設定する。ここで,Styleはエッジの種類(tnまたはntn),Directionはエッジの近似ベクトル,Lengthはエッジの長さを表す。
【0031】
【数7】
【0032】
【数8】
【0033】
エッジの種類Style については,式(9)に示すように,tnとtnを結ぶエッジ,tnとntnを結ぶエッジ,ntnとntnを結ぶエッジの3種類が存在する。なお,無向グラフを扱うため(tn,ntn)と(ntn,tn)は同じStyleとして扱いを区別しない。
【0034】
【数9】
【0035】
エッジの近似ベクトルDirectionについてはエッジの近似ベクトルであり,エッジの方向を評価するための属性を表す。ここで,ejRのDirectionをejRベクトル(その表記については式12参照),ejTのDirectionをejTベクトル(その表記については式12参照)と表す。エッジ長さ Length については,エッジの長さを表すが,ここではエッジを構成する画素数とし,ejRのLengthを|ejR|,ejTのLengthを|ejT|と表す。
(ステップ11の処理)
ステップ11に示すエッジ割当処理の概念図を図7に示す。処理対象であるTargetのj番目のエッジejTにたいし,割り当てるejRを決定する。まず,ejTのStyle と全ての参照エッジの Style との類似度をハミング距離により評価する。式(10)は,Style をハミング距離で評価するため,tn =0, ntn = 1 と設定したものである。ejTの Style にたいしハミング距離最小となるejRについてのみ(ハミング距離最小となるejRは複数存在することもある) その後の処理の対象とする。
【0036】
【数10】
【0037】
そのejRにたいし,Direction と Length を式(11)を使って評価し,評価値が最大となるejRをejTに割り当てる。式(11)中のrij,lijはそれぞれ式(12)と式(13)で定義され,wr,wlは式(14)の関係を満たす。
【0038】
【数11】
【0039】
【数12】
【0040】
【数13】
【0041】
【数14】
【0042】
図7の処理をフローチャートで示したものが図8,図9である。図8はStyleの類似度評価を実施する部分に相当する。
【0043】
まず初期化として,Reference Shapeの番号を示すiを0とし,類似度評価として実施するハミング距離の最小値をDhに記録するため,Dhが取る得る最大値以上の値の3で初期化する。
【0044】
つぎに,ejTとejRの間のStyle の類似度を評ハミング距離によって評価し,その距離をejRのejTにたいするハミング距離としてdiに記録する。diが現在の最小値Dhよりも小さいならばdiの値をDhに代入する以上の処理をReference Shapeの総エッジ数MR分だけ繰り返す。
【0045】
図9は図8で示したフローチャートの続きである。Styleの類似度評価を実施後,i = n = 1, max = -1として初期化する。iはReference Shapeの番号を示し,nは式(11)の評価値が最大となるiを記録する変数であり,maxは式(11)の最大評価値を記録する変数である。初期化後,ejRのejTにたいするハミング距離として記録したdiが最小値Dhと一致するか否かチェックし,最小値Dhと一致するものだけをその後の処理の対象とする。
【0046】
つぎに,ejTとejRの間の Length,Direction の評価を式(11)によって実施し,評価値をdmaxに記録する。dmaxが現在の最大値maxよりも大きい場合にはdmaxに記録し,そのときのReference Shapeの番号iをnとして記録する。
【0047】
以上の処理をReference Shapeの総エッジ数MR分だけ繰り返すことで,Targetのj番目のエッジejTにたいし,割り当てるReference Shapeのエッジ番号をnとして獲得する。すなわち,ejTにたいし割り当てるeiR(i=n)が決定する。
(ステップ12の処理)
ステップ12に示すテクスチャ処理のフローチャートを図10に示す。また,その概念図を図11に示す。
【0048】
ejTに割当ての決まったejR周辺のReferenceの文字領域からテクスチャパッチ群を切り出しejT周辺の文字領域に貼付処理する。
【0049】
まず,Targetのエッジ上にサンプリング点を配置するが,その総数を|ejT|+1に設定し等間隔にサンプリング点を配置する。Reference Shape,Referenceにも同様にサンプリング点を配置するが,その総数を|ejR|+1に設定し,等間隔にサンプリング点を配置する。図11の28,32は各エッジ(27,31)上に配置したサンプリング点の1つを示す。また,mをejTのm番目のサンプリング点を表すものとし,m=0として初期化する。
【0050】
ejTのm番目のサンプリング点に対応するejRのk番目のサンプリング点を式(15)により決定する。図11の例では,m番目のサンプリング点が32であり,k番目のサンプリング点が28である。
【0051】
【数15】
【0052】
ejRのk番目のサンプリング点を中心とした長方形領域をReferenceのテクスチャパッチPkRとして抽出する。図11の例では,Reference Shapeで示す29の長方形領域に対応する30のReferenceの長方形領域がPkRとして抽出される。
【0053】
PkRを式(16)によって拡大縮小回転処理しejTのm番目のサンプリング点を中心とした長方形領域の形状に合わせて貼付処理する。貼付処理にはテクスチャ合成を使用し,シームレスでテクスチャパッチ間の繋ぎ目が分かりにくくする処理をする。図11の33の長方形領域のサイズに合わせて30のPkRを拡大縮小回転処理することで変形し,貼付する。なお,式(16)中のαは式(17)によって定義される。式(17)のdmT,dkRはそれぞれm番目のサンプリング点,k番目のサンプリング点から文字領域と背景領域の巨魁までの最短距離を表し,文字の太さを示す指標である。
【0054】
【数16】
【0055】
【数17】
【0056】
以上の処理をだけ繰り返すことで,Targetのサンプリング点総数|ejT|+1分だけ繰り返しejTにたいするテクスチャ貼付処理を完了する。
【0057】
以上述べた実施形態に係る毛筆フォント作成方法によれば、以下の特徴を有する。
【0058】
まず,参照事例となる実際の毛筆文字(著名書道家の作品画像等)を利用し,それが持つ掠れ滲み特徴を出力に反映させる。これにより,ユーザは,処理対象の毛筆フォントに掠れ滲み処理加工する際,その参照事例の特徴を視覚的に確認できるため,出力フォントのデザインを予想でき,デザインが容易になる。
【0059】
参照事例の持つ掠れ滲み特徴を対象フォントに付加するために,参照事例と対象フォントの双方の骨格構造を獲得する。この骨格構造は筆の進む方向と文字の太さの情報を持つ。この骨格をグラフ構造で表し,参照事例と対象フォント双方のグラフが持つエッジ同士を対応付け,対象フォントのエッジにたいし,対応する参照事例のエッジ周辺の掠れ滲み特徴を付加する。
【0060】
この掠れ滲み特徴の付加は,テクスチャ合成(シームレスなテクスチャパッチの貼付)によって実現する。このテクスチャ合成で利用するテクスチャパッチ群は,参照事例の毛筆文字を骨格構造に沿って分解することで得られる。また,分解したテクスチャパッチの順序関係を,骨格に沿って連続する順序関係として保持し,テクスチャパッチ群を対応する対象フォントのエッジにたいし,その順序関係を保持しながら割当て貼りつける。これにより,参照事例の持つ掠れ滲み特徴を損なうことなく,掠れ滲みの加工処理が実現する。
【0061】
図12は本発明の入出力例である。34はTarget,35はReferenceである。Reference Shape は35から作成するため省略する。36は本発明によって作成した出力フォント例であり,37は従来手法によって作成した出力例である。
【技術分野】
【0001】
本発明は、参照事例となる毛筆文字の持つ掠れ滲み特徴を処理対象の毛筆フォントに付加して毛筆フォントを作成する毛筆フォント作成方法および毛筆フォント作成プログラムに関するものである。
【背景技術】
【0002】
これまでに,毛筆フォントの作成や加工に関する研究がいくつか報告されている.筆触カーソルや数理形態学を用いた毛筆フォントの掠れ滲み表現技術(特許文献1、非特許文献1,2)はその代表的な研究例であるが,処理対象である既存の毛筆フォントにたいし掠れ・滲みのデザインを付加し,手書き風の芸術特徴をフォントに付加するものである.この方法は画像フィルタを利用したアプローチに相当する。
【0003】
他方,処理対象が毛筆フォントではないが,一般画像をテクスチャ合成によって絵画風に変換する等の手法が存在する。非特許文献3,4がその代表例であるが,これらは処理対象である一般画像のほかに,参照事例として著名画家の絵画画像等を用意し,それが持つ美術的特徴を利用して一般画像を処理し参照事例に類似した絵画風画像に変換するものである。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開平10−83177号公報
【非特許文献】
【0005】
【非特許文献1】中村剛士,真野淳治,世木博久,伊藤 英則,``毛筆フォントの掠れ・滲み処理システムについて'',情報処理学会論文誌, vol.38, no.5, pp.1008--1015, May.1997.
【非特許文献2】市川孝之,井戸川知之,堤正義,``数理形態学を用いた毛筆体フォントの掠れ・滲み処理'',日本応用数理学会論文誌, vol.10, no.3, pp.263--272, Sept.2000.
【非特許文献3】A. Hertzmann, C. Jacobs, N. Oliver, B. Curless, and D. Salesin,``Image Analogies'', Proc. SIGGRAPH '01, pp.327--340, Aug.2001.
【非特許文献4】G. Ramanarayanan, and K. Bala,``Constrained Texture Synthesis via Energy Minimization'', IEEE Transactions on Visualization and Computer Graphics, vol.13, no.1, pp.167--178, Jan.2007.
【発明の概要】
【発明が解決しようとする課題】
【0006】
特許文献1、非特許文献1、2に記載のものの問題点は,毛筆フォントに掠れ・滲みを付加する処理において,著名書家の作品画像などの参照事例となるものを使用せず,画像フィルタによって処理をすることにある。このため,画像フィルタの設計が,最終的に加工出力される毛筆フォントの質に大きく影響する。しかしながら,このフィルタの設計は容易ではなく,フィルタによってどのような出力が獲得されるかは予想することが難しく,そのため,デザインするユーザが期待する任意の掠れや滲み特徴をフォントに付加することはほぼ出来ないに等しい。
【0007】
非特許文献3、4に記載のものは,参照事例を用いることでその美術特徴を,ユーザ自身が視覚によって確認した上で絵画風画像変換を実行できるため,ユーザが期待する出力画像を得ることが出来る。ただし,この方法は,毛筆文字のように筆の進む方向が明白な構造を持った処理対象については,その構造に基づいた処理をすることが出来ない。そのため,フォントの加工処理に利用しても,掠れや滲みの特徴が不自然となり,参照事例に類似した特徴を出力に反映させることが出来ない。
【0008】
本発明は上記点に鑑みて、画像フィルタを用いずに毛筆フォントに掠れ滲みを付加した毛筆フォントを作成することを目的とする。
【課題を解決するための手段】
【0009】
上記目的を達成するため、請求項1に記載の発明では、参照事例となる毛筆文字の持つ掠れ滲み特徴を処理対象となる対象フォントに付加して毛筆フォントを作成する毛筆フォント作成方法であって,
前記参照事例と前記対象フォントの双方の文字骨格をノードとノード間を繋ぐエッジの集合として表現したグラフとして獲得するステップと,
前記参照事例と前記対象フォントの双方のグラフが持つエッジ同士を対応付けるステップと,
前記対象フォントのエッジにたいし,対応する前記参照事例のエッジ周辺の掠れ滲み特徴を貼りつけるステップと、を有することを特徴とする。
【0010】
請求項2に記載の発明では、上記した毛筆フォント作成方法をコンピュータに実行させるためのプログラムを特徴とする。
【図面の簡単な説明】
【0011】
【図1】本発明の一実施形態に係る毛筆フォント作成方法の概要を示す図である。
【図2】Reference Shape,Referenceの文字骨格を示すグラフ構成を示す図である。
【図3】Targetの文字骨格を示すグラフ構成を示す図である。
【図4】毛筆フォント作成方法の概念図である。
【図5】本発明の一実施形態に係る毛筆フォント作成方法を実施するハードウェア構成を示す図である。
【図6】毛筆フォント作成方法を実行するためのプログラムを示すフローチャートある。
【図7】図6中のエッジ割当処理の概念図を示す図である。
【図8】エッジ割当処理のStyle評価部分を示すフローチャートである。
【図9】エッジ割当処理のLength,Direction評価部分を示すフローチャートである。
【図10】テクスチャ貼付処理を示すフローチャートである。
【図11】テクスチャ貼付処理の概念図である。
【図12】本発明の入出力例および従来研究の出力例を示す図である。
【発明を実施するための形態】
【0012】
図1に本発明の一実施形態に係る毛筆フォント作成方法の概要を示す。この毛筆フォント作成方法では,図1の1に示すReferenceを参照事例とし,図1の3に示すTargetを処理の対象とする。Referenceの持つ掠れ滲み特徴をTargetに付加することで,4に示す出力フォントOutputを得る。ただし,掠れ滲み加工処理の入力としては,ReferenceとTargetのほかに,図1の3に示すReference Shapeを入力する。Reference ShapeはReferenceの文字領域(筆が通った墨のついた部分と掠れた部分)を背景領域と区別するために別途用意する。
【0013】
図1の3に示すReference Shapeと図1の2に示すTargetはそれぞれ細線化処理によってその文字骨格を獲得する。それぞれの文字骨格は図2,図3に示す無向グラフ構造で表すことができる。図2はReference Shape,図3はTargetの例である。図2の○で示す21はグラフの終端ノードを表し,□で示す22は非終端ノードを表す。また,図2の23に示すようにノード間を繋ぐ線をエッジとする。図3のTargetについても,24,25に示す○,□は図2で示すものと同じ終端ノード,非終端ノードであり,26はエッジを表す。これによって,Reference ShapeおよびTargetは元々,文字領域と背景領域で構成されるが,これに加えて文字領域の文字骨格を表すグラフが追加される。Reference Shapeの文字骨格とその無向グラフ構造は図1の1に示すReferenceの骨格にも相当する。
【0014】
図4に本発明の処理の流れを示す。図4の13に示すinputは,Target, Reference, Reference Shapeの3画像であり,図4の14は細線化処理後に獲得したグラフ構造を持つReference Shape及びReferenceの文字骨格GRであり,図4の15は同様にして得たTargetの文字骨格GTである。
【0015】
文字骨格を獲得した後,各グラフを構成するエッジ同士の対応関係を決める。すなわち,GTを構成するエッジにたいしGRを構成するエッジのいずれかを割り当てる。割当は重複しても構わない。図4の16,17は14に示すReference Shape「天」の左払いのエッジを,Target「大」の左払いのエッジに割り当てることを決定した例であり,割当によってエッジ周辺の文字領域も対応づける。16,17に対応するエッジとエッジ周辺の文字領域(灰色で示す領域)が対応付けられた様子を示す。図4の18はReferenceであり,図4の19は18のReference上の対応する文字領域(「天」の左払い部分)をテクスチャとして取り出し,Targetの「大」の左払いである文字領域に貼付した様子を示す。
【0016】
このように,Targetの各エッジに対応するReference Shapeのエッジの割当,さらにReferenceの割当するエッジ周辺の文字領域の対応づけおよびテクスチャ貼付を,Targetを構成するすべてのエッジに対し実行し,出力フォント(図4の20のoutput)を得る。
【0017】
つぎに、上記した概要の具体的な構成について説明する。図1に示した概要をハードウェアとして構成した場合,たとえば図5のように構成される。すなわち,Target,Reference,Reference Shapeの3つを画像としてそれぞれスキャナ5等によってコンピュータ6に取り込み,それをコンピュータ6内部でプログラムによって処理し,Outputを画像としてディスプレイ,プリンタ7等に出力する。
【0018】
コンピュータ6内部で実行されるプログラムのフローチャートを図6に示す。このフローチャートの処理の流れに沿って,各処理の概略を説明する。
【0019】
まず,ステップ8に示すように,プログラムは,Target, Reference, Reference Shapeの3画像を入力として受取り,ステップ9に示す細線化処理(たとえばHilditchの細線化)Reference Shapeの2画像にたいし実行する。これによりステップ10に示すようにTargetとReference Shapeの文字骨格をグラフ構造GT ,GRとしてそれぞれ獲得する。ここでいうグラフ構造とは文字骨格をノードとエッジの集合として表現したものをいう。また,Reference Shapeの文字骨格GRはReferenceの文字骨格としても扱うように設定する。
【0020】
つぎに,j=1として初期化し,ステップ11に示すように,Targetのj番目のエッジejTにたいしReferenceのエッジejRを割り当てる。エッジの割当が決まったら,ステップ12に示すようにTargetのj番目のエッジejT周辺の文字領域にたいしReferenceのエッジejR周辺のテクスチャを加工して添付する。この割当,テクスチャ貼付の処理をTargetの総エッジ数MT分だけ繰り返しプログラムを終了する。
【0021】
以下、上記した各ステップのうちステップ10〜12での処理の詳細について説明する。
(ステップ10の処理)
ステップ10において,Reference ShapeとTargetはそれぞれ細線化処理(たとえば,Hilditchの細線化法)によってその文字骨格を獲得する(グラフ構造GR ,GTの例については図2,図3参照)。グラフGR ,GTを構成するエッジ,ノードの各定義については次のとおりである。図2,図3に例示したように,GR ,GT は複数のノード及びノード間を結ぶエッジから構成される。
【0022】
ここで,式(1)と式(2)に示すように,GRが持つノードの集合をVR,GTが持つノードの集合をVTと表す。また式(1)と式(2)にあるように,VjR,VjTをそれぞれGR を構成するi番目のノード,GT を構成するj番目のノードとする。
【0023】
【数1】
【0024】
【数2】
【0025】
式(3)と式(4)に示すように,各ノードには,終端ノード(tn)と非終非終端ノード(ntn)の2種類を設定する。さらに,GRとGTのエッジの集合を式(5)と式(6)に示すように,それぞれER,ETと表し,式(5)と式(6)に示すように,GR を構成するi番目のエッジ,GT を構成するj番目のノードをそれぞれejR,ejTと表す。
【0026】
【数3】
【0027】
【数4】
【0028】
【数5】
【0029】
【数6】
【0030】
また,式(7)と式(8)に示すように,各エッジには3種類の属性(Style,Direction,Length)を設定する。ここで,Styleはエッジの種類(tnまたはntn),Directionはエッジの近似ベクトル,Lengthはエッジの長さを表す。
【0031】
【数7】
【0032】
【数8】
【0033】
エッジの種類Style については,式(9)に示すように,tnとtnを結ぶエッジ,tnとntnを結ぶエッジ,ntnとntnを結ぶエッジの3種類が存在する。なお,無向グラフを扱うため(tn,ntn)と(ntn,tn)は同じStyleとして扱いを区別しない。
【0034】
【数9】
【0035】
エッジの近似ベクトルDirectionについてはエッジの近似ベクトルであり,エッジの方向を評価するための属性を表す。ここで,ejRのDirectionをejRベクトル(その表記については式12参照),ejTのDirectionをejTベクトル(その表記については式12参照)と表す。エッジ長さ Length については,エッジの長さを表すが,ここではエッジを構成する画素数とし,ejRのLengthを|ejR|,ejTのLengthを|ejT|と表す。
(ステップ11の処理)
ステップ11に示すエッジ割当処理の概念図を図7に示す。処理対象であるTargetのj番目のエッジejTにたいし,割り当てるejRを決定する。まず,ejTのStyle と全ての参照エッジの Style との類似度をハミング距離により評価する。式(10)は,Style をハミング距離で評価するため,tn =0, ntn = 1 と設定したものである。ejTの Style にたいしハミング距離最小となるejRについてのみ(ハミング距離最小となるejRは複数存在することもある) その後の処理の対象とする。
【0036】
【数10】
【0037】
そのejRにたいし,Direction と Length を式(11)を使って評価し,評価値が最大となるejRをejTに割り当てる。式(11)中のrij,lijはそれぞれ式(12)と式(13)で定義され,wr,wlは式(14)の関係を満たす。
【0038】
【数11】
【0039】
【数12】
【0040】
【数13】
【0041】
【数14】
【0042】
図7の処理をフローチャートで示したものが図8,図9である。図8はStyleの類似度評価を実施する部分に相当する。
【0043】
まず初期化として,Reference Shapeの番号を示すiを0とし,類似度評価として実施するハミング距離の最小値をDhに記録するため,Dhが取る得る最大値以上の値の3で初期化する。
【0044】
つぎに,ejTとejRの間のStyle の類似度を評ハミング距離によって評価し,その距離をejRのejTにたいするハミング距離としてdiに記録する。diが現在の最小値Dhよりも小さいならばdiの値をDhに代入する以上の処理をReference Shapeの総エッジ数MR分だけ繰り返す。
【0045】
図9は図8で示したフローチャートの続きである。Styleの類似度評価を実施後,i = n = 1, max = -1として初期化する。iはReference Shapeの番号を示し,nは式(11)の評価値が最大となるiを記録する変数であり,maxは式(11)の最大評価値を記録する変数である。初期化後,ejRのejTにたいするハミング距離として記録したdiが最小値Dhと一致するか否かチェックし,最小値Dhと一致するものだけをその後の処理の対象とする。
【0046】
つぎに,ejTとejRの間の Length,Direction の評価を式(11)によって実施し,評価値をdmaxに記録する。dmaxが現在の最大値maxよりも大きい場合にはdmaxに記録し,そのときのReference Shapeの番号iをnとして記録する。
【0047】
以上の処理をReference Shapeの総エッジ数MR分だけ繰り返すことで,Targetのj番目のエッジejTにたいし,割り当てるReference Shapeのエッジ番号をnとして獲得する。すなわち,ejTにたいし割り当てるeiR(i=n)が決定する。
(ステップ12の処理)
ステップ12に示すテクスチャ処理のフローチャートを図10に示す。また,その概念図を図11に示す。
【0048】
ejTに割当ての決まったejR周辺のReferenceの文字領域からテクスチャパッチ群を切り出しejT周辺の文字領域に貼付処理する。
【0049】
まず,Targetのエッジ上にサンプリング点を配置するが,その総数を|ejT|+1に設定し等間隔にサンプリング点を配置する。Reference Shape,Referenceにも同様にサンプリング点を配置するが,その総数を|ejR|+1に設定し,等間隔にサンプリング点を配置する。図11の28,32は各エッジ(27,31)上に配置したサンプリング点の1つを示す。また,mをejTのm番目のサンプリング点を表すものとし,m=0として初期化する。
【0050】
ejTのm番目のサンプリング点に対応するejRのk番目のサンプリング点を式(15)により決定する。図11の例では,m番目のサンプリング点が32であり,k番目のサンプリング点が28である。
【0051】
【数15】
【0052】
ejRのk番目のサンプリング点を中心とした長方形領域をReferenceのテクスチャパッチPkRとして抽出する。図11の例では,Reference Shapeで示す29の長方形領域に対応する30のReferenceの長方形領域がPkRとして抽出される。
【0053】
PkRを式(16)によって拡大縮小回転処理しejTのm番目のサンプリング点を中心とした長方形領域の形状に合わせて貼付処理する。貼付処理にはテクスチャ合成を使用し,シームレスでテクスチャパッチ間の繋ぎ目が分かりにくくする処理をする。図11の33の長方形領域のサイズに合わせて30のPkRを拡大縮小回転処理することで変形し,貼付する。なお,式(16)中のαは式(17)によって定義される。式(17)のdmT,dkRはそれぞれm番目のサンプリング点,k番目のサンプリング点から文字領域と背景領域の巨魁までの最短距離を表し,文字の太さを示す指標である。
【0054】
【数16】
【0055】
【数17】
【0056】
以上の処理をだけ繰り返すことで,Targetのサンプリング点総数|ejT|+1分だけ繰り返しejTにたいするテクスチャ貼付処理を完了する。
【0057】
以上述べた実施形態に係る毛筆フォント作成方法によれば、以下の特徴を有する。
【0058】
まず,参照事例となる実際の毛筆文字(著名書道家の作品画像等)を利用し,それが持つ掠れ滲み特徴を出力に反映させる。これにより,ユーザは,処理対象の毛筆フォントに掠れ滲み処理加工する際,その参照事例の特徴を視覚的に確認できるため,出力フォントのデザインを予想でき,デザインが容易になる。
【0059】
参照事例の持つ掠れ滲み特徴を対象フォントに付加するために,参照事例と対象フォントの双方の骨格構造を獲得する。この骨格構造は筆の進む方向と文字の太さの情報を持つ。この骨格をグラフ構造で表し,参照事例と対象フォント双方のグラフが持つエッジ同士を対応付け,対象フォントのエッジにたいし,対応する参照事例のエッジ周辺の掠れ滲み特徴を付加する。
【0060】
この掠れ滲み特徴の付加は,テクスチャ合成(シームレスなテクスチャパッチの貼付)によって実現する。このテクスチャ合成で利用するテクスチャパッチ群は,参照事例の毛筆文字を骨格構造に沿って分解することで得られる。また,分解したテクスチャパッチの順序関係を,骨格に沿って連続する順序関係として保持し,テクスチャパッチ群を対応する対象フォントのエッジにたいし,その順序関係を保持しながら割当て貼りつける。これにより,参照事例の持つ掠れ滲み特徴を損なうことなく,掠れ滲みの加工処理が実現する。
【0061】
図12は本発明の入出力例である。34はTarget,35はReferenceである。Reference Shape は35から作成するため省略する。36は本発明によって作成した出力フォント例であり,37は従来手法によって作成した出力例である。
【特許請求の範囲】
【請求項1】
参照事例となる毛筆文字の持つ掠れ滲み特徴を処理対象となる対象フォントに付加して毛筆フォントを作成する毛筆フォント作成方法であって,
前記参照事例と前記対象フォントの双方の文字骨格をノードとノード間を繋ぐエッジの集合として表現したグラフとして獲得するステップと,
前記参照事例と前記対象フォントの双方のグラフが持つエッジ同士を対応付けるステップと,
前記対象フォントのエッジにたいし,対応する前記参照事例のエッジ周辺の掠れ滲み特徴を貼りつけるステップと、を有することを特徴とする毛筆フォント作成方法。
【請求項2】
参照事例となる毛筆文字の持つ掠れ滲み特徴を処理対象となる対象フォントに付加して毛筆フォントを作成する毛筆フォント作成方法をコンピュータに実行させるためのプログラムあって,
前記参照事例と前記対象フォントの双方の文字骨格をノードとノード間を繋ぐエッジの集合として表現したグラフとして獲得するステップと,
前記参照事例と前記対象フォントの双方のグラフが持つエッジ同士を対応付けるステップと,
前記対象フォントのエッジにたいし,対応する前記参照事例のエッジ周辺の掠れ滲み特徴を貼りつけるステップと、をコンピュータに実行させるためのプログラム。
【請求項1】
参照事例となる毛筆文字の持つ掠れ滲み特徴を処理対象となる対象フォントに付加して毛筆フォントを作成する毛筆フォント作成方法であって,
前記参照事例と前記対象フォントの双方の文字骨格をノードとノード間を繋ぐエッジの集合として表現したグラフとして獲得するステップと,
前記参照事例と前記対象フォントの双方のグラフが持つエッジ同士を対応付けるステップと,
前記対象フォントのエッジにたいし,対応する前記参照事例のエッジ周辺の掠れ滲み特徴を貼りつけるステップと、を有することを特徴とする毛筆フォント作成方法。
【請求項2】
参照事例となる毛筆文字の持つ掠れ滲み特徴を処理対象となる対象フォントに付加して毛筆フォントを作成する毛筆フォント作成方法をコンピュータに実行させるためのプログラムあって,
前記参照事例と前記対象フォントの双方の文字骨格をノードとノード間を繋ぐエッジの集合として表現したグラフとして獲得するステップと,
前記参照事例と前記対象フォントの双方のグラフが持つエッジ同士を対応付けるステップと,
前記対象フォントのエッジにたいし,対応する前記参照事例のエッジ周辺の掠れ滲み特徴を貼りつけるステップと、をコンピュータに実行させるためのプログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【公開番号】特開2011−22429(P2011−22429A)
【公開日】平成23年2月3日(2011.2.3)
【国際特許分類】
【出願番号】特願2009−168357(P2009−168357)
【出願日】平成21年7月17日(2009.7.17)
【出願人】(304021277)国立大学法人 名古屋工業大学 (784)
【Fターム(参考)】
【公開日】平成23年2月3日(2011.2.3)
【国際特許分類】
【出願日】平成21年7月17日(2009.7.17)
【出願人】(304021277)国立大学法人 名古屋工業大学 (784)
【Fターム(参考)】
[ Back to top ]