説明

線画の彩色方法及びプログラム

【課題】
濃淡を含む線画の彩色に際して基線を認識し、その基線からはみ出すことなく彩色する。
【解決手段】
本発明の方法は、線画を含むある領域に対するストロークを受け付けるステップ(S302)と、ストロークされた領域を二値化表現に変換し、線画を構成する線を細線化するステップ(S303)と、グループを定めるステップ(S304)と、始点及び終点を定めるステップ(S304−2)と、枝を削除するステップ(S306)と、コストを求めるステップ(S307)と、前記コストに基づいて、最小コストの線を探索するステップ(S308〜S312−2)と、選択範囲化するステップ(S313)と、彩色するステップ(S314)とを含む。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、線画における基線を認識し、それに基づいて彩色する線画の彩色方法及びプログラムに関する。
【背景技術】
【0002】
漫画やアニメーション、イラストなど、一色の線だけで描かれた画である線画に対して彩色を施すことが一般に行われている。図1(a)に線画の一例として線画1を示している。我が国で製作された漫画などの白黒の線画に対して、海外向けに彩色することが頻繁に行われている。
【0003】
ここで、線の色が均一ではなく濃淡を含んでいる場合には、フィルツールなどで直接塗りつぶすことができないという問題がある。例えば図1(a)の部分11を拡大した様子を示す図1(b)、及び図1(a)の部分12を拡大した様子を示す図1(c)からわかるように、線が繋がっておらず隙間が存在している場合には、領域が線により隔てられていないとフィルツールが認識し、ユーザが意図しない部分まで彩色されてしまうことがある。
【0004】
このような問題を避けるべく、線画に彩色すべき範囲を作成して、その範囲内を塗りつぶすという方法が知られている。しかし、基線とトーンが混在する画像では、線画のみを抽出して彩色すべき範囲を作成することが困難であるという問題がある。また、仮に線画のみを抽出して彩色すべき範囲を作成できたとしても、彩色の作業は通常マウスなどのポインティングデバイスを用いて手作業で行われるため、彩色すべき範囲をはみ出して彩色してしまうという問題がある。色のはみ出た箇所を見つけて修正するには、細い箇所まで目で確認しながら修正する必要があり、効率的ではない。
【発明の開示】
【発明が解決しようとする課題】
【0005】
本発明の目的は、線画を彩色する際に基線を認識して、その基線からはみ出すことなく彩色できる方法及びコンピュータプログラムを提供することである。
【課題を解決するための手段】
【0006】
上記課題を解決するため、本発明の方法は、線画を含むある領域に対するストロークを受け付けるストローク受付ステップと、ストロークされた前記領域にある線画を二値化表現に変換し、線画を構成する線を細線化する細線生成ステップと、生成された細線であって互いに接続しているものの集まりを1つのグループと定めるグループ化ステップと、グループに属するピクセルであって、前記ストロークが開始された個所に近いピクセルを始点と定める始点決定ステップと、グループに属するピクセルであって、前記ストロークが終了された個所に近いピクセルを終点と定める終点決定ステップと、グループに属する細線であって終端を含むものを他の細線と交差するところまで削除する削除ステップと、グループに属する細線のコストを求めるコスト計算ステップであって、ここで、前記コストは、二値化表現変換後の細線に含まれるピクセル数を含むいくつかの変数に基づいて計算されるものである、ステップと、前記コストに基づいて、前記始点と前記終点とを結ぶ経路を探索する経路探索ステップと、探索された経路を前記細線生成ステップにより細線化する前の状態に戻して選択範囲とする選択範囲化ステップと、選択範囲化された選択範囲により隔てられた複数の領域のうちの一の領域をある色で彩色する彩色ステップとを含む。
【0007】
別の実施形態で、前記方法は、前記グループ化ステップにより複数のグループが定められた場合には、該グループ化ステップの後であって、かつ前記削除ステップの前に、前記複数のグループの各々に外接する外接矩形の周囲長と該外接矩形間の距離とを含むいくつかの変数に基づいて、グループ間を接続する線を生成する接続線生成ステップをさらに含み、前記削除ステップは、接続線により接続されていないグループを削除し、生成された接続線を削除しないものとすることができる。
【0008】
別の実施形態で、前記経路探索ステップは、最小のコストを有する経路を選択するサブステップを含む。
【0009】
上記問題を解決するため、本発明のコンピュータプログラムは、線画をメモリに読み込む画像読込手段と、前記線画を含むある領域に対するストロークを受け付けるための入力手段と、ストロークされた前記領域にある線画を二値化表現に変換し、線画を構成する線を細線化する細線生成手段と、生成された細線であって互いに接続しているものの集まりを1つのグループと定め、グループに属するピクセルであって、前記ストロークが開始された個所に近いピクセルを始点と定めるとともに、グループに属するピクセルであって、前記ストロークが終了された個所に近いピクセルを終点と定めるグループ化手段と、グループに属する細線であって終端を含むものを他の細線と交差するところまで削除する枝削除手段と、グループに属する細線のコストを求めるコスト計算手段であって、二値化表現変換後の細線に含まれるピクセル数を含むいくつかの変数に基づいてコストを計算するコスト計算手段と、前記コストに基づいて、前記始点と前記終点とを結ぶ経路を探索する経路探索手段と、探索された経路を前記細線生成手段が細線化する前の状態に戻して選択範囲化する手段と、選択範囲化された選択範囲により隔てられた複数の領域のうちの一の領域をある色で彩色する手段とをコンピュータに実現させる。
【0010】
別の実施形態で、前記コンピュータプログラムは、前記グループ化手段が複数のグループを定めた場合には、前記複数のグループの各々に外接する外接矩形の周囲長と該外接矩形間の距離とを含むいくつかの変数に基づいて、グループ間を接続する線を生成する接続線生成手段をコンピュータにさらに実現させ、接続線により接続されていないグループを削除し、生成された接続線を削除しないように前記枝削除手段をコンピュータに実現させることができる。
【0011】
別の実施形態で、前記経路探索手段は、最小のコストを有する経路を選択することができる。
【発明の効果】
【0012】
本発明によれば、濃淡を含む線画に適した彩色方法及びコンピュータプログラムを提供することができる。この方法又はコンピュータプログラムにより、効率的に線画に彩色できるとともに、細かい箇所まで目で確認しながら修正するという今までの作業の手間が省け、なおかつ作業品質の向上を実現することができる。
【発明を実施するための最良の形態】
【0013】
次に、線画における基線を認識し、それに基づいて彩色する本発明の方法を実施する一つの形態について図面を参照しながら説明する。
【0014】
まず、図2(a)は、線画2を示している。図2(a)によれば、線が部分的に途切れていて隙間のあることがわかる。説明の都合上、線画2が図1(a)の部分11あるいは部分12に対応するものとする。
【0015】
図3は、線画における基線を認識し、それに基づいて彩色する本発明の方法のフローチャートを示している。まず、ステップS301から開始し、ステップS302において線画2をなぞるオペレータの操作を受け付ける。この「なぞる」ことを「ストロークする」とも呼ぶ。ストロークは、マウスなどのポインティングデバイスを用いて行うことができる。図2(a)の矢印Sは、ストロークの方向と軌跡を表している。このステップS302によりストロークされた領域を領域3で示している。このストロークされた領域3において基線を認識する流れを以下に説明する。
【0016】
ステップS303では、ストロークされた領域3に含まれる濃淡を含んだ線画2を二値化表現に変換、つまり、白と黒の二値での表現に変換して、線画を構成する線を基本的に個々のピクセルが一列につながった細線へと変換、つまり細線化する。細線化後の線画2aを図2(c)に示している。二値化表現への変換及び細線化は、通常の方法により行うことができる。
【0017】
次にステップS304にて、グループ化を行う。ここでグループ化とは、生成された一本以上の細線であって、互いに接続しているものがあれば1つのグループとし、接続しているものがなければ細線1本を1つのグループと定めることである。このステップS304により定められたグループを図2(d)に示している。図2(d)によれば、GR1、GR2、GR3、201、205、206、207、208、209、210の各グループが存在している。
【0018】
ステップS304−2では、あるグループに属するピクセルであって、ステップS302でストロークが開始された個所に近いピクセルを始点と定め、該グループ又は他のグループに属するピクセルであって前記ストロークを終了した個所に近いピクセルを終点と定める。図2(e)に始点P及び終点Qを示している。ここで、始点PはグループGR1に属しており、終点QはグループGR3に属している。
【0019】
ステップS304−3では、グループが複数存在するか否かが判断される。グループが複数存在すると判断された場合には、ステップS305に進み、グループ間を接続する接続線を生成する。
【0020】
接続線を生成するステップS305について図4に示すフローチャートを参照しながら説明する。ステップS305は、図4のステップS401〜S426の各ステップを含む。まず、ステップS401から開始し、ステップS402においてグループ間の距離の最大許容値Kを設定する。最大許容値Kはユーザの入力により任意に設定することができる。
【0021】
次にステップS403において各グループに外接する外接矩形を求める。本実施例では図2(d)に示したグループGR1、GR2、GR3、201、205、206、207、208、209、210の各グループについて外接矩形を求める。
【0022】
ステップS404では、ステップS304−2で定められた始点を含むグループを接続元グループXと定める。本実施例では、始点Pを含むグループGR1を接続元グループXと定める。
【0023】
ステップS405では、接続元グループX以外のグループを未接続グループ群と定める。本実施例では、グループGR2、GR3、201、205、206、207、208、209、210を未接続グループ群と定める。
【0024】
ステップS406では、未接続グループ群に属するグループの外接矩形の周囲長をそのグループの優先度とする。周囲長が大きいほど優先度が高いものとする。ただし、ステップS304−2で定められた終点を含むグループは、そのグループの外接矩形の周囲長に関わらず、優先度最高とする。本実施例では、終点Qを含むグループGR3が最高の優先度を有する。
【0025】
ステップS407では、未接続グループ群のうち、接続元グループXとの最短距離をまだ計算していないグループであって、優先度の最も高いグループを接続先グループYと定める。
【0026】
ステップS408では、接続先グループYが存在するか否かが判断される。存在すると判断された場合にはステップS410に進む。その一方でYが存在しないと判断された場合にはステップS409に進み、エラー処理を行って接続線生成処理を終了する。
【0027】
ステップS410では、接続元グループXの外接矩形と接続先グループYの外接矩形の最短距離を求めて、その値が最大許容値K以下か否かが判断される。K以下であればステップS411に進む一方、その他の場合にはステップS407に戻る。
【0028】
ステップS411では、接続元グループXの細線を構成する各ピクセルからの距離が最大許容値K以内にある、接続元グループYに含まれる細線を構成するピクセルを探し、両ピクセル間の距離を求める。距離が最小となるピクセルの組み合わせを探し、距離の最小値をV1とする。
【0029】
ステップS412ではV1がK以下であるか否かが判断される。K以下であればステップS413に進み、その他の場合はステップS407に戻る。
【0030】
ステップS413では、接続先グループYを未接続グループ群から除外する。
【0031】
ステップS414では、接続先グループYが終点を含むか否かが判断される。Yが終点を含むグループであればステップS426に進み、接続線生成処理を終了する。その他の場合には、ステップS415に進む。
【0032】
ステップS415では、未接続グループ群のうち、Xとの最短距離をまだ計算していないグループであって、優先度が最も高いグループを中間グループZとする。
【0033】
ステップS416では、中間グループZが存在するか否かが判断される。存在しない場合にはステップS424に進み、接続元グループXと接続先グループYとの距離が最小となる部分に、XとYとを接続する接続線を生成する。その後、後述するステップS425に進む。
【0034】
ステップS416において中間グループZが存在すると判断された場合にはステップS417に進む。ステップS417では、Xの外接矩形とZの外接矩形との間の第1の最短距離、及びYの外接矩形とZの外接矩形との間の最短距離がともにV1以下であるか否かが判断される。第1及び第2の最短距離がいずれもV1以下の場合には、ステップS418に進む。これに対し、第1及び第2の最短距離のうち少なくとも一方がV1より大きい場合には、ステップS415に戻る。
【0035】
ステップS418では、Xに含まれる細線を構成するピクセルとZに含まれる細線を構成するピクセルと間の距離の最小値をV2とする。
【0036】
ステップS419では、Yに含まれる細線を構成するピクセルとZに含まれる細線を構成するピクセルとの間の距離の最小値をV3とする。
【0037】
ステップS420では、V2とV3との和がV1以下であるか否かが判断される。V1以下の場合にはステップS421に進み、その他の場合にはステップS415に戻る。
【0038】
ステップS421では、Zを未接続グループ群から除外する。そして、ステップS422ではXからZまでの距離が最小となる部分にXとZとを接続する接続線を生成する。
【0039】
ステップS423では、ZからYまでの距離が最小となる部分にZとYとを接続する接続線を生成する。
【0040】
ステップS425ではYを接続元グループXとして、ステップS407に戻る。最終的にステップS426で接続線生成処理を終了する。
【0041】
以上のように、ステップS401〜S426を含むステップS305において接続線が生成される。本実施例では、図2(e)に示すように、始点Pを含むグループGR1とグループGR2とを接続する接続線202が生成される。さらに、グループGR2とグループ201を接続する接続線203を生成し、終点Qを含むグループGR3とグループ201を接続する接続線204を生成する。
【0042】
一方で、ステップS304−3においてグループが1つしかないと判断された場合には、接続線を生成する必要がないため、ステップS305をスキップして後述のステップS306に進む。
【0043】
ステップS306では、接続線により接続されていないグループを削除する。図2(e)で言えば、グループ205〜210を削除する。さらに、いずれかのグループに属する細線であって終端を含むものを他の細線と交差するところまで削除する。図2(e)について言えば、部分211〜216を削除する。なお、始点P及び終点Qについては終端とは判断せず、したがって削除も行われない。部分205〜216をまとめて「枝」とも呼ぶ。
以上のようにして、図2(e)から枝が削除された後の細線2bを図2(f)に示している。
【0044】
ステップS307では、細線2bのコストを求める。以下、図5(a)〜(d)を参照してコストの求め方の一例を説明する。
【0045】
コストを求めるにあたり、いくつかのパラメータを導入する。まず、ステップS303において線の二値化を行い、線を片側から1ビット(点)づつ幅を狭くしてゆき、その回数のカウントを行いながら細線化を行う。両側とも細線になるまでの幅を狭くするカウントを行い、両側の数値の平均カウントの切り上げを行う。その細線化されるまでの各点のカウントを、回数線の各ビット(点)に属性として持たせる。細線の各ビットが持つカウント数の総数をWとする。また、細線の長さをNとする。
【0046】
ステップS305において定まった始点Pから終点Qまでの距離をRとする。始点P及び終点Qを図5(b)に示している。
【0047】
細線2aを始点Pから順にたどるときに、ピクセルに沿って縦又は横にたどるときの長さL1を1.0とし、斜めにたどるときの長さL2を1.5とする。この様子を図5(c)に示している。このようにして得られる細線2aの長さをLとする。
【0048】
細線2aの始点Pから4ピクセル毎に1ピクセルを抽出し、抽出点とする。図5(d)に抽出点T1及びT2を示している。そして、ある抽出点(例えばT2)について、その直前の抽出点(T1)からの方向を抽出点T2における細線の方向ET2と定める。
【0049】
抽出点に最も近いストローク軌跡S上の点を最近点とし、その抽出点と最近点との距離(ピクセル数)を求める。全ての抽出点における距離の総和をDとする。図5(d)には、抽出点T2の最近点CT2と、抽出点T2と最近点CT2との距離FT2を示している。
【0050】
さらに、最近点におけるストロークの方向(画像上の入力手段の動きの接線方向)と、抽出点における細線の方向(抽出点における細線の接線の方向)の角度差の絶対値を求める。図5(d)には、最近点CT2におけるストロークの方向GT2を示している。これにより、ストロークの方向GT2と細線の方向ET2との角度差の絶対値が得られる。この角度差の絶対値を抽出点毎に求め、それらの総和をAとする。さらに、抽出点の総ピクセル数をMとする。
【0051】
以上のパラメータを用いて、細線を始点PからたどるときのコストCが以下の式から得られる。
【数1】

式(1)の第1項「100N/W」は、Nを分子に持ち、Wを分母に持つ。つまり、細線化前の状態において太い線ほど小さい値となる。したがって、太い線ほどコストCの値は小さくなる。これにより、後述するステップS309〜S312を反復してコストの小さい線を探すことが、すなわち太い線を探すこととなり、太い線が基線と認識されやすくなる。
【0052】
また、細線を終点QからたどるときのコストCは以下の式から得られる。
【数2】

式(2)と式(1)との相違点は、式(2)が第4項「+180」を有しているという点である。すなわち、終点からたどるときのコストCは常に値180が加算され、始点からたどるときのコストCよりも大きい値となる。これにより、後述するステップS309〜S311を反復してコストの小さい線を探すことが、始点方向からたどる経路を探すこととなる。つまり、逆方向からたどる経路、すなわち終点からたどる経路は基線と認識されにくくなる。
【0053】
以上のように、パラメータW,N,R,L,D,A,Mを用いてコストを求めることができる。なお、上記式(1)、式(2)ともに経験則から得られる式であって、一例に過ぎない。コストは他の式でも求めることができる。ステップS307で求められた、始点PからたどるときのコストCを図2(g)に示している。
【0054】
ステップS308では、始点から終点までの任意の一の経路を基準経路と定めて、経路全体のコストを求める。基準経路の例を図2(h)の符号R1で示している。この基準経路R1全体のコストは215(=8+10+20+18+32+17+110)である。
【0055】
ステップS309では、ステップS308で定めた基準経路以外の経路を一つ選んで選択経路とし、その選択経路全体のコストを求める。選択経路の例を図2(i)の符号R2で示している。この選択経路R2全体のコストは213(=8+10+20+20+5+7+6+2+3+5+17+110)である。
【0056】
ステップS310では、ステップS308で求めた基準経路R1の総コストと選択経路R2の総コストとを比較し、選択経路のコストの方が小さいか否かを判断する。本実施形態では、選択経路の総コスト(「213」)が基準経路の総コスト(「215」)よりも小さいため、後述するステップS311に進む。一方で、選択経路の総コストが基準経路の総コストよりも小さくない場合は、ステップS311をスキップして後述するステップS312に進む。
【0057】
ステップS311では、ステップS310において基準経路のコストよりも小さいコストを有すると判断された選択経路を基準経路に置き換える。本実施形態では、R2のコストがR1のコストよりも小さいため、基準経路をR1に代えてR2とする。
【0058】
ステップS312では、始点Pと終点Qとを結ぶ経路が他にあるか否かを判断する。他に経路が存在する場合には、ステップS312−2に進み、複数の経路のコストを算出し、コストの低いものを選択し、コストを最小化する。そしてステップS313に進む。他に経路が存在しない場合には、ステップS312−2をスキップしてステップS313に進む。
【0059】
ステップS313では、最小コストの線をステップS303の細線化を行う前の状態に戻して、選択範囲とする。図2(j)に選択範囲2cを示している。
さらに、図1(a)の線画1における部分11及び12にそれぞれ対応する選択範囲を図6に部分11a及び12aとして示している。
【0060】
ステップS314では、選択範囲により隔てられた領域の一方をある色で彩色する。本実施形態で定められた選択範囲2cにより隔てられた領域の一方をある色で彩色する様子を図2(k)に示している。ここで、符号301はカーソルを表しており、符号302はマウスなどのポインティングデバイスのドラッグ操作により作られる小円である。この小円302の領域内であって、選択範囲2cにより隔てられた領域3021をある色で彩色することができる。さらに、小円302の領域内であって、選択範囲2cにより隔てられた別の領域3022は、ユーザが彩色を意図しない部分であるとして、彩色をしないことができる。
【0061】
このようにして、大まかにマウスを操作しても、選択範囲により隔てられた領域の一方のみをある色で彩色することができる。
なお、彩色した結果を描画するレイヤー(描画先レイヤー)は、選択範囲が存在するレイヤー(参照レイヤー)とは別のレイヤーとすることができる。
【0062】
最後に、ステップS315で手順を終了する。このようにして塗りつぶされた様子を図2(l)に示している。図2(l)からわかるように、ドラッグした範囲500のうち、符号5001で示した領域のみが彩色されており、符号5002で示した領域は彩色されていない。
【0063】
次に、本発明のコンピュータプログラムの一つの形態について図面を参照しながら説明する。
【0064】
図7は、本発明のコンピュータプログラムを実行するコンピュータシステム6を示している。図6に示しているように、コンピュータシステム6は、マウスやキーボードなどの入力手段611と、ディスプレイなどの表示手段612と、メモリ613などの記憶手段とを備えている。このコンピュータシステム6は、画像読込手段621と、細線生成手段622と、グループ化手段623と、接続線生成手段624と、枝削除手段625と、コスト計算手段626と、経路探索手段627と、選択範囲化する手段628と、彩色する手段629とをさらに備えている。
【0065】
図8は、本発明のコンピュータプログラムの処理のフローチャートを示している。以下、本発明のコンピュータプログラムを図2(a)に示した線画2に対して適用する流れを説明する。
【0066】
まず、ステップS701から開始し、ステップS702において画像読込手段621が線画2をメモリ613に読み込む。次にステップS703において、入力手段611が線画2をストロークするオペレータの操作を受け付ける。図2(a)の矢印Sは、ストロークの方向と軌跡を表している。このステップS703によりストロークされた領域を領域3で示している。このストロークされた領域3において基線を認識する流れを以下に説明する。
【0067】
ステップS704では、細線生成手段622が、ストロークされた領域3に含まれる濃淡を含んだ線画2を二値化表現に変換、つまり、白と黒の二値での表現に変換して、線画を構成する線を基本的に個々のピクセルが一列につながった細線へと変換、つまり細線化する。細線化後の細線2aを図2(c)に示している。二値化表現への変換及び細線化は、通常の方法により行うことができる。
【0068】
次にステップS705にて、グループ化手段623がグループ化を行う。ここでグループ化とは、生成された一本以上の細線であって、互いに接続しているものがあれば1つのグループとし、接続しているものがなければ細線1本を1つのグループと定めることである。このステップS705により定められたグループを図2(d)に示している。図2(d)によれば、GR1、GR2、GR3、201、205、206、207、208、209、210の各グループが存在している。
【0069】
ステップS705−2では、グループ化手段623が、ステップS703でストロークを開始した個所に最も近い線上の点を始点と定め、ストロークを終了した個所に最も近い線上の点を終点と定めて、メモリ613に保存する。図2(e)に始点P及び終点Qを示している。ここで、始点PはグループGR1に属しており、終点QはグループGR3に属している。
【0070】
ステップS705−3でグループ化手段623は、グループが複数存在するか否かを判断する。グループが複数存在すると判断された場合には、ステップS706に進み、各グループ間を接続する接続線を接続線生成手段624が生成する。ステップS706は、図4に示したステップS401〜S426の各ステップを含んでいる。本実施例では図2(e)に示すように、ステップS706において始点Pを含むグループGR1と始点P及び終点Qのいずれも含まないグループGR2とを接続する接続線202を接続線生成手段624が生成する。さらに、グループGR2とグループ201を接続する接続線203と、終点Qを含むグループGR3とグループ201を接続する接続線204とを接続線生成手段624が生成する。
【0071】
一方で、ステップS705−3においてグループが1つしかないと判断された場合には、接続線を生成する必要がないため、ステップS706をスキップして後述のステップS707に進む。
【0072】
ステップS707では、枝削除手段625が、接続線により接続されていないグループを削除する。図2(e)で言えば、手段625はグループ205〜210を削除する。さらに、手段625はいずれかのグループに属する細線であって終端を含むものを他の細線と交差するところまで削除する。図2(e)について言えば、手段625が部分211〜216を削除する。なお、手段625は、始点P及び終点Qについては終端と判断せず、したがって削除も行わない。部分205〜216をまとめて「枝」とも呼ぶ。
以上のようにして、図2(e)から枝が削除された後の細線2bを図2(f)に示している。
【0073】
ステップS708では、コスト計算手段626が細線2bのコストを求める。以下、図5(a)〜(d)を参照してコストの求め方の一例を説明する。
【0074】
コストを求めるにあたり、いくつかのパラメータを導入する。まず、ステップS303において線の二値化を行い、線を片側から1ビット(点)づつ幅を狭くしてゆき、その回数のカウントを行いながら細線化を行う。両側とも細線になるまでの幅を狭くするカウントを行い、両側の数値の平均カウントの切り上げを行う。その細線化されるまでの各点のカウントを、回数線の各ビット(点)に属性として持たせる。細線の各ビットが持つカウント数の総数をWとする。また、細線の長さをNとする。
【0075】
コスト計算手段626が、ステップS706において定まった始点Pから終点Qまでの距離をRとしてメモリ613に保存する。始点P及び終点Qを図5(b)に示している。
【0076】
細線2aを始点Pから順にたどるときに、ピクセルに沿って縦又は横にたどるときの長さL1を1.0とし、斜めにたどるときの長さL2を1.5とする。この様子を図5(c)に示している。コスト計算手段626は、このようにして得られる細線2aの長さをLとしてメモリ613に保存する。
【0077】
次に、コスト計算手段626は、細線2aの始点Pから4ピクセル毎に1ピクセルを抽出し、抽出点としてメモリ613に保存する。図5(d)に抽出点T1及びT2を示している。そして、コスト計算手段626は、ある抽出点(例えばT2)について、その直前の抽出点(T1)からの方向を抽出点T2における細線の方向ET2と定めてメモリ613に保存する。
【0078】
コスト計算手段626は、抽出点に最も近いストローク軌跡S上の点を最近点として、その抽出点と最近点との距離(ピクセル数)を求める。コスト計算手段626は、全ての抽出点における距離の総和をDとしてメモリ613に保存する。図5(d)には、抽出点T2の最近点CT2と、抽出点T2と最近点CT2との距離FT2を示している。
【0079】
さらに、コスト計算手段626は、最近点におけるストロークの方向(画像上の入力手段の動きの接線方向)と、抽出点における細線の方向(抽出点における細線の接線の方向)の角度差の絶対値を求める。図5(d)には、最近点CT2におけるストロークの方向GT2を示している。これにより、ストロークの方向GT2と細線の方向ET2との角度差の絶対値が得られる。コスト計算手段626は、この角度差の絶対値を抽出点毎に求め、それらの総和をAとしてメモリ613に保存する。さらに、コスト計算手段626は抽出点の総ピクセル数をMとしてメモリ613に保存する。
【0080】
以上のパラメータを用いて、コスト計算手段626は、細線を始点PからたどるときのコストCを式(1)から求める。式(1)の第1項「100N/W」は、Nを分子に持ち、Wを分母に持つ。つまり、細線化前の状態において太い線ほど小さい値となる。したがって、太い線ほどコストCの値は小さくなる。これにより、後述するステップS710〜S713を反復してコストの小さい線を探すことが、すなわち太い線を探すこととなり、太い線が基線と認識されやすくなる。
【0081】
また、コスト計算手段626は、細線を終点QからたどるときのコストCを式(2)から求める。式(2)と式(1)との相違点は、式(2)が第4項「+180」を有しているという点である。すなわち、終点からたどるときのコストCは常に値180が加算され、始点からたどるときのコストCよりも大きい値となる。これにより、後述するステップS710〜S712を反復してコストの小さい線を探すことが、始点方向からたどる経路を探すこととなる。つまり、逆方向からたどる経路、すなわち終点からたどる経路は基線と認識されにくくなる。
【0082】
以上のように、パラメータW,N,R,L,D,A,Mを用いて、コスト計算手段626はコストを求めることができる。なお、上記式(1)、式(2)ともに経験則から得られる式であって、一例に過ぎない。コストは他の式でも求めることができる。ステップS708で求められた、始点PからたどるときのコストCを図2(g)に示している。
【0083】
ステップS709では、経路探索手段627が、始点から終点までの任意の一の経路を基準経路と定めて、経路全体のコストを求めメモリ613に保存する。基準経路の例を図2(h)の符号R1で示している。この基準経路R1全体のコストは215(=8+10+20+18+32+17+110)である。
【0084】
ステップS710では、経路探索手段627が、ステップS709で定めた基準経路以外の経路を一つ選んで選択経路とし、その選択経路全体のコストを求めメモリ613に保存する。選択経路の例を図2(i)の符号R2で示している。この選択経路R2全体のコストは213(=8+10+20+20+5+7+6+2+3+5+17+110)である。
【0085】
ステップS711では、経路探索手段627が、ステップS709で求めた基準経路R1の総コストと選択経路R2の総コストとを比較し、選択経路のコストの方が小さいか否かを判断する。本実施形態では、選択経路の総コスト(「213」)が基準経路の総コスト(「215」)よりも小さいため、後述するステップS712に進む。一方で、選択経路の総コストが基準経路の総コストよりも小さくない場合は、ステップS712をスキップして後述するステップS713に進む。
【0086】
ステップS712では、経路探索手段627が、ステップS711において基準経路のコストよりも小さいコストを有すると判断された選択経路を基準経路に置き換えてメモリ613に保存する。本実施形態では、経路探索手段627は、R2のコストがR1のコストよりも小さいため、基準経路をR1に代えてR2としてメモリ613に保存する。
【0087】
ステップS713では、始点Pと終点Qとを結ぶ経路が他にあるか否かを経路探索手段627が判断する。他に経路が存在する場合、ステップS713−2に進み、経路探索手段627が複数の経路のコストを算出し、コストの低いものを選択し、コストを最小化する。そしてステップS714に進む。他に経路が存在しない場合には、ステップS312−2をスキップしてステップS313に進む。
【0088】
ステップS714では、選択範囲化する手段628が、最小コストの線をステップS704の細線化を行う前の状態に戻して、選択範囲とし、メモリ613に保存する。図2(j)に選択範囲2cを示している。
さらに、図1(a)の線画1における部分11及び12にそれぞれ対応する選択範囲を図6に部分11a及び12aとして示している。
【0089】
ステップS715では、彩色する手段629が、選択範囲により隔てられた領域の一方をある色で彩色してメモリ613に保存する。本実施形態で定められた選択範囲2cにより隔てられた領域の一方をある色で彩色する様子を図2(k)に示している。ここで、符号301はカーソルを表しており、符号302は入力手段611のドラッグ操作により作られる小円である。この小円302の領域内であって、選択範囲2cにより隔てられた領域3021をある色で彩色することができる。さらに、小円302の領域内であって、選択範囲2cにより隔てられた別の領域3022は、ユーザが彩色を意図しない部分であるとして、彩色をしないことができる。
【0090】
このようにして、大まかにマウスを操作しても、選択範囲により隔てられた領域の一方のみをある色で彩色することができる。
なお、彩色する手段629は、選択範囲が存在するレイヤー(参照レイヤー)とは別のレイヤーである彩色した結果を描画するレイヤー(描画先レイヤー)に描画してメモリ613に保存することができる。
【0091】
最後に、ステップS716で手順を終了する。このようにして塗りつぶされた様子を図2(l)に示している。図2(l)からわかるように、ドラッグした範囲500のうち、符号5001で示した領域のみが彩色されており、符号5002で示した領域は彩色されていない。
【0092】
本発明の方法及びコンピュータプログラムによれば、塗りあふれ及び塗り残しのいずれもなく線画を彩色することができ、彩色された線画を効率的に製作することができる。
【図面の簡単な説明】
【0093】
【図1】本発明方法の処理対象となる線画の一例を示す平面図である。
【図2A】本発明の彩色方法により、図1の線画の塗り残し領域が塗りつぶされる過程を示す説明図である。
【図2B】本発明の彩色方法により、図1の線画の塗り残し領域が塗りつぶされる過程を示す説明図である。
【図3】本発明の彩色方法の手順の一例を示すフローチャートである。
【図4】接続線を生成する手順の一例を示すフローチャートである。
【図5】コストを求める過程についての説明図である。
【図6】本発明の彩色方法により彩色された線画の平面図である。
【図7】本発明のコンピュータプログラムを実行するコンピュータシステム6のブロック図である。
【図8】本発明のコンピュータプログラムの処理手順の一例を示すフローチャートである。
【符号の説明】
【0094】
1 線画
11,12 線画1の一部分
11a,12a 選択範囲
2 線画
2a 細線
2b 枝が削除された細線
2c 選択範囲
201 線
202〜204 接続線
211〜216 枝
3 ストロークされた領域
301 カーソル
302 小円
3021,3022 領域
500 ドラッグ領域
5001、5002 領域
6 コンピュータシステム
611 入力手段
612 表示手段
613 メモリ
621 画像読込手段
622 細線生成手段
623 グループ化手段
624 接続線生成手段
625 枝削除手段
626 コスト計算手段
627 経路探索手段
628 選択範囲化する手段
629 彩色する手段
GR1〜GR3、205〜210 グループ
P 始点
Q 終点
R1,R2 経路
S ストロークの軌跡

【特許請求の範囲】
【請求項1】
線画を含むある領域に対するストロークを受け付けるストローク受付ステップと、
ストロークされた前記領域にある線画を二値化表現に変換し、線画を構成する線を細線化する細線生成ステップと、
生成された細線であって互いに接続しているものの集まりを1つのグループと定めるグループ化ステップと、
グループに属するピクセルであって、前記ストロークが開始された個所に近いピクセルを始点と定める始点決定ステップと、
グループに属するピクセルであって、前記ストロークが終了された個所に近いピクセルを終点と定める終点決定ステップと、
グループに属する細線であって終端を含むものを他の細線と交差するところまで削除する削除ステップと、
グループに属する細線のコストを求めるコスト計算ステップであって、ここで、前記コストは、二値化表現変換後の細線に含まれるピクセル数を含むいくつかの変数に基づいて計算されるものである、ステップと、
前記コストに基づいて、前記始点と前記終点とを結ぶ経路を探索する経路探索ステップと、
探索された経路を前記細線生成ステップにより細線化する前の状態に戻して選択範囲とする選択範囲化ステップと、
選択範囲化された選択範囲により隔てられた複数の領域のうちの一の領域をある色で彩色する彩色ステップと
を含む、線画における基線を認識し、それに基づいて彩色する方法。
【請求項2】
前記グループ化ステップにより複数のグループが定められた場合には、該グループ化ステップの後であって、かつ前記削除ステップの前に、前記複数のグループの各々に外接する外接矩形の周囲長と該外接矩形間の距離とを含むいくつかの変数に基づいて、グループ間を接続する線を生成する接続線生成ステップをさらに含み、
前記削除ステップは、接続線により接続されていないグループを削除し、生成された接続線を削除しないものである、請求項1に記載の方法。
【請求項3】
前記経路探索ステップは、最小のコストを有する経路を選択するサブステップを含むものである、請求項1に記載の方法。
【請求項4】
線画をメモリに読み込む画像読込手段と、
前記線画を含むある領域に対するストロークを受け付けるための入力手段と、
ストロークされた前記領域にある線画を二値化表現に変換し、線画を構成する線を細線化する細線生成手段と、
生成された細線であって互いに接続しているものの集まりを1つのグループと定め、グループに属するピクセルであって、前記ストロークが開始された個所に近いピクセルを始点と定めるとともに、グループに属するピクセルであって、前記ストロークが終了された個所に近いピクセルを終点と定めるグループ化手段と、
グループに属する細線であって終端を含むものを他の細線と交差するところまで削除する枝削除手段と、
グループに属する細線のコストを求めるコスト計算手段であって、二値化表現変換後の細線に含まれるピクセル数を含むいくつかの変数に基づいてコストを計算するコスト計算手段と、
前記コストに基づいて、前記始点と前記終点とを結ぶ経路を探索する経路探索手段と、
探索された経路を前記細線生成手段が細線化する前の状態に戻して選択範囲化する手段と、
選択範囲化された選択範囲により隔てられた複数の領域のうちの一の領域をある色で彩色する手段と
をコンピュータに実現させる、線画における基線を認識し、それに基づいて彩色するためのコンピュータプログラム。
【請求項5】
前記グループ化手段が複数のグループを定めた場合には、前記複数のグループの各々に外接する外接矩形の周囲長と該外接矩形間の距離とを含むいくつかの変数に基づいて、グループ間を接続する線を生成する接続線生成手段をコンピュータにさらに実現させ、
接続線により接続されていないグループを削除し、生成された接続線を削除しないように前記枝削除手段をコンピュータに実現させる請求項4に記載のコンピュータプログラム。
【請求項6】
前記経路探索手段が、最小のコストを有する経路を選択するものである、請求項4に記載のコンピュータプログラム。

【図3】
image rotate

【図4】
image rotate

【図7】
image rotate

【図8】
image rotate

【図1】
image rotate

【図2A】
image rotate

【図2B】
image rotate

【図5】
image rotate

【図6】
image rotate


【公開番号】特開2010−20458(P2010−20458A)
【公開日】平成22年1月28日(2010.1.28)
【国際特許分類】
【出願番号】特願2008−178995(P2008−178995)
【出願日】平成20年7月9日(2008.7.9)
【出願人】(596021562)株式会社セルシス (22)
【Fターム(参考)】