説明

2値画像を領域分割するための凹点検出方法

【課題】2値画像に含まれる領域を複数の部分領域に分割するために、当該領域の輪郭線上の凹点を検出する方法を提供する。
【解決手段】領域から生成される凸包の内部に領域外の画素が存在しない、という条件で凸領域を定義する。この下に領域の輪郭線を、当該領域が局所的に凸領域となる複数の区間に分けて、区間同士が接続する部分を凹点とする。これにより、経験的なパラメタ決定を必要としない凹点検出を可能とする。

【発明の詳細な説明】
【技術分野】
【0001】
本発明はディジタル画像処理技術に係り、特に2値化された領域を複数の素図形に分割する際に必要となる、輪郭線上の凹点を検出する技術に関する。
【背景技術】
【0002】
映像情報機器の進歩により、テレビやビデオの映像を計算機によって処理する技術が広く普及しつつある。例えば映画をビデオ化した映像では、旧来は映像が単に受像機に表示されるのみで、ここから特定の出演者が映されているシーンを抜き出そうとすると、視聴者が目視でシーンを選択する必要があった。これがディジタル映像処理の普及につれて、映像中の1コマ(以下「画像」と表記する)にどんな物体や人物が写っているかを、自動的に抽出できるようになりつつある。
【0003】
この様な機能は通常、画像中の物体の形状を既知の物体と比較する事、すなわち何らかのマッチング作業を行なう事で実現される。しかしながらマッチング作業では、物体が1つずつ個別に撮影されている事が前提条件となる。従ってマッチング作業の前段階として、複数の物体を個々のものに分割する作業が、しばしば必要となる。典型的な例として、画像に2人の歩行者が映されている場合、両者がすれ違う時に物体が重なりあう。この場合、一人ずつに分割しないと、それが歩行者(人間)である事を検出できなくなる。
【0004】
上記の様な分割を自動的に行なうための類似技術として、特許文献1では以下の発明(以下「従来法」と記す)が開示されている。すなわち、人間の手の映像を入力として、まず手の輪郭線(エッジ)を抽出した後、輪郭線の方向が急激に変化する点(特許文献1における「屈曲点」)を検出する、というものである。この結果2本の指の境界が、屈曲点として検出される。これにより、特許文献1には明記されていないが、手の映像から複数の指を分割する、という発明が開示されている。
【特許文献1】特開2001−34764「動画像処理方法、及び装置並びに媒体」
【発明の開示】
【発明が解決しようとする課題】
【0005】
しかしながら上記の従来法では、輪郭線の方向がどの程度急激に変化すれば「屈曲点」とするべきか、という点が明確に述べられていない。この結果、図2に示すような図形を上手く分離できない。図2は2つの円が重なった図形であり、重なりが(a)は小さく(b)は大きい。両者共に図中の点201〜202を結ぶ線分で切断すれば、図形は2つの円(の一部)に分割される。これに従来法を適用する場合、変化の判定基準をたとえば角度90度に設定したとすると、(a)は分割されるが(b)は分割の対象とならず、円が2つあるという事実を見失う事になる。図2における点201の角度は、円の重なりが大きくなるに従いいくらでも大きくなるので、一般的に適切な判定基準を決定する事は原理的に不可能である。このため、屈曲点の判定基準を応用場面に応じて実験的に設定する必要が生じ、汎用性の低い方法となっていた。
【0006】
本発明の目的は上記の課題を解決して、広範囲の画像に対して一般的に適用できる分割方法を提供する事にある。このための核心技術として、経験的な判定基準を用いずに輪郭線上の凹点を検出する方法を提供する。ここで凹点とは文字通り輪郭線上の窪んだ点であり、従来技術における「屈曲点」のうち輪郭線が外側方向に屈曲しているものを意味する。凹点が検出できれば、それに基づいて図形を分割する事は、比較的簡単な作業となるので、本明細書においては凹点を検出する方法に絞って発明を開示する。
【課題を解決するための手段】
【0007】
上記の課題を解決するためには、角度などの概念を用いずに凹点を定義できれば良い。このために本発明では、下記の幾何学的性質に基づいて、新たな凹点の定義を開示する。
【0008】
まず、凹点を定義するという事は、それと相補的な概念である凸領域を定義する事と等価である。ここで凸領域は、通常の意味での幾何学(ユークリッド幾何学)においては以下の様に定義されている。
「単連結の領域において、領域中の任意の2点を結ぶ線分が、常に当該領域の内部にある場合、当該領域を凸であると言う。」
しかしながらこの定義は、ユークリッド幾何学すなわち点が連続的に存在する事を前提としている。本発明はディジタル画像を対象としたものであり、そこでは点(画素)が離散的にしか存在しない。この場合、領域の内部/外部という概念が曖昧になる。典型例として図3(a)に示す5点からなる領域を考えると、図中の線分301が図形の内部か外部かは明確でない。また図3(b)は2値画像302の中に直角三角形303を描いた例である。画素が2値でかつ離散的に存在する限り、直角三角形をこれ以上正確に描くのは不可能である。しかしながら同図の斜辺は微視的にみるとギザギザの折線であり、直線とは言い難い。しかしながらこの折線は直線を可能な限り忠実に描いたものであるから、これが実は直線であり、従って直角三角形は凸図形である事を示す様な定義が必要である。
【0009】
そこで本発明では、計算幾何学の概念を用いて上記の定義を変換する。計算幾何学では、「凸包」という概念が知られている。凸包とは図4(a)に示す通り、401−1等の与えられた点の集合を包含する最小の凸図形410の事を言う。これは点が有限個の場合は必然的に凸多角形となる。これを用いれば、上記の凸領域の定義は以下の様に言い換えられる。
「ある領域が、その領域から定められる凸包と一致する場合、その領域は凸である。」
ここで凸包は、領域が有限離散個の点の集合からなる場合、以下の手続きにより作成できる事が知られている。すなわち、図4(b)に示す通り、まず領域の最も右側にある点(図4(b)における点P0)を求める。この結果、領域に属する点は全て図中の線分420の左側に存在する(この性質を以下で「左側ルール」と呼ぶ)。次に、有向線分421を定める。ここで421は、P0を始点として左側ルールが成立ち、かつ420となす角度(左折の大きさ、図中の角度a0)が最小になる様な線分である。この様に421を定めた結果、凸包の次の頂点となる点P1が求まる。以後同様に繰り返して、有向線分422および頂点P2、……、を定めて行く。領域は有限の大きさなので、この繰り返しは有限回で終了し、最後の有向線分の終点は最初の頂点P0となる。以上で得られる多角形P0P1P2……Pn−1が、当該領域の凸包である。
【0010】
凸包は多角形の一種であるから、その内部/外部という概念は、点(画素)が離散的にしか存在しない場合でも明確に定義できる。また、凸包の外部には当該領域に属する点は存在しない事は、上記の手続きから明らかである。これらの結果、凸領域の定義を更に言換える事ができる。すなわち、
「ある領域から作成される凸包の内部に、当該領域に属さない点(画素)が含まれない場合、当該領域を凸領域と呼ぶ。」
以上の定義に基づき、凹点が存在する事の判定が可能となる。すなわち、ある領域の全部または一部を取出した場合、その部分が上記の凸領域の定義に合致すれば、凹点は存在しない。たとえば図1に示す通り、(a)の領域101は凸領域であり凹点は存在せず、(b)の領域102は凸領域ではなく図中の点110が凹点となる。この方法によれば、従来法における角度の設定という課題を経る事なく、凹点が検出できる。
【0011】
以上に拠った本発明の特徴は、以下の通りである。すなわち本発明の第1の特徴は、2値画像に含まれる連結領域を複数の小領域に分割する方法であって、当該領域の外形線上での凹点を検出する事により分割位置を決定する方法において、上記凹点を検出する際に、外形線のうちの一部の区間および当該区間の内側の近傍領域が、局所的に凸図形となる区間(以下「凸区間」と呼ぶ)を検出するステップと、上記ステップにより複数の凸区間が検出された場合、それらが接続する箇所が凹点であるか否か判定するステップと、を含む事にある。
【0012】
また本発明の第2の特徴は、第1の特徴を有する方法において、凸図形とは、領域を構成する画素群を含む凸包を想定して、当該凸包の中に領域外の画素を含まない場合を凸図形とするという条件により定められる事にある。
【0013】
また、上記2つの特徴を実現するためには、対象となる領域の外形線を、後述する方向差分符号を用いた表現に、予め変換しておくのが便利である。この下では、領域が凸図形である場合、外形線が屈曲する方向は巨視的には領域の内側方向(以下「凸方向」と呼ぶ)となる。但し図3の例でも述べた通り、ディジタル画像では画素が離散的に存在するので、微視的には外形線が外側方向に屈曲する場合もありうる。これを踏まえて本発明においては、方向差分符号において方向が隣接する2つの符号値を組にした系列(以下「2方向系列」と呼ぶ)を考えれば、凹点の検出ができる事を開示する。すなわち本発明の第3の特徴は、第1の特徴を有する方法において、当該領域の外形線が方向差分符号の系列により表現されている場合に、方向が隣接する2つの符号値のみを有する部分系列に上記系列を分割するステップと、2つの部分系列が接続する箇所において符号値の変化が凸方向であるか否かを判定するするステップと、を含む事にある。この詳細は実施例にて説明する。
【0014】
これを更に精密にして、方向差分符号を利用して外形線の局所的な傾きを調べ、その変化が凸方向であるか否かにより凸か否かを判定する事が可能になる。すなわち本発明の第4の特徴は、第1または第2の特徴を有する方法において、当該領域の外形線が方向差分符号の系列により表現されている場合に、方向が隣接する2つの符号値のみを有する部分系列に上記系列を分割するステップと、上記2つの符号値の連続形(ラン)を各々1つずつ組にした形式(以下「ラン対」と呼ぶ)に上記部分系列を変換するステップと、上記ラン対の傾きの変化が凸方向であるか否かを判定するするステップと、を含む事にある。この詳細は実施例にて説明する。
【0015】
以上の各特徴によれば、与えられた領域が凸図形であるか否かを正確に判定できる。しかしながら、凸包を厳密に作成しながら凹点を検出する作業は、しばしば時間がかかる。そこで本発明では更なる特徴として、凸包の候補が与えられた場合にそこが凹図形であるか否かを、近似的であるが簡便に判定する方法を開示する。すなわち本発明の第5の特徴は、第1または第2の特徴を有する方法において、外形線上の一部の区間を指定した後、当該区間の両端点を結ぶ直線を斜辺とする直角三角形を想定して、その内部にある画素数を求めるステップと、当該区間および上記直角三角形の底辺ならびに垂辺で囲まれる領域の内部にある画素数を求めるステップと、上記2つの画素数を比較して、後者の方が少ない場合には当該区間は凸図形では無いと判定するステップと、を含む事にある。
【0016】
ここで画素数を求めるためには、外形線を逐次的に辿る必要はなく、両端点の相対位置がわかっていれば良い。すなわち本発明の第6の特徴は、第5の特徴を有する方法において、直角三角形の内部にある画素数を数式1により算出する事にある。以上の第5および第6の特徴についても、詳細は実施例にて説明する。
【発明の効果】
【0017】
本発明によれば、従来法よりも汎用性の高い領域分割方法を実現する事が可能になり、画像認識技術やその応用装置の更なる高度化・高機能化に資する事ができる。
【発明を実施するための最良の形態】
【0018】
本発明は、コンピュータ上で動作するソフトウェアとして実施するのが妥当である。ここで使用するコンピュータは、いわゆる画像処理機能を実行できるものならば何でも良い。以下に実施例として、本発明の特徴を有するコンピュータプログラムの算法を、図面を用いて説明する。
【実施例】
【0019】
図5は本発明による凹点検出方法のアルゴリズムの全体像を示すフローチャートである。以下、同図面に沿って算法の概要を説明する。
【0020】
本発明による凹点検出方法は、ステップ500(以下「S500」等と略記する)以下の処理によって実現される。まず処理対象の2値画像を入力し(S501)、その中の処理対象となる領域に対して、その輪郭線を抽出する(S502)。ここで「領域」とは、2値画像において画素値が「1」の画素の連結集合の事であり、たとえば図6(a)では2つの領域601および602が2値画像600に含まれている。ここで領域を構成する画素の中で、領域外の画素との境界部分にある画素を順次辿ったものを、当該領域の「輪郭線」と呼ぶ事にする。たとえば領域601に対しては、同図(b)の矢印「→」等に沿って境界を辿る事により、輪郭線が得られる。なお本発明では境界を辿る際には、縦横に加えて斜め方向へ進む事も許す(いわゆる「8近傍ルール」)ものとした。
【0021】
次に輪郭線の形状を、以下に述べる「方向差分符号」の系列とした表現に変換する(S503)。方向差分符号とは、2値画像で2つの画素が隣接する場合に、片方がもう一方からみてどの方向にあるかを符号化して表現するものである。輪郭線は隣接する画素の系列であるから、その形状を表現するには画素の位置を示すよりも、画素がどの方向に並ぶかを示した方が便利な場合が多い。そこで図6(b)で用いた8方向の矢印に対して、図7(a)で示す様な8種類の符号〈0〉……〈7〉を定めて、この符号を輪郭線に沿った系列として並べる事により、輪郭線の形状が表現できる。例えば図6(b)に示した矢印の系列は、図7(b)(説明の便宜上拡大して表示した)の701で示すとおり〈0111212232333345556566767777〉と表現できる。ここで用いられる8種類の符号〈0〉……〈7〉を「方向差分符号」と本書では記す。なお本明細書では他の符号や数値との混同を避けるため、方向差分符号を記述する際には山形括弧「〈 〉」で括る事とした。また図6の様に輪郭線が閉じた曲線をなす場合は、符号の開始位置を何処にとるかに任意性が生じるが、これは処理プログラムの都合に従って適宜定めれば良い。なお本発明においては、符号〈0〉が最初に現れる位置(図7(b)における位置710)を開始位置とした。
【0022】
次に本発明においては、輪郭線上の90度を越える屈曲を除去する(S504)。このステップは、90度を越える屈曲が輪郭線上に存在すると後続する諸ステップにおいて煩雑な例外処理が生じるため、予め輪郭線をある程度滑らかにしておく事を目的とする。具体的には図8に示す通り、輪郭線上に±90度(同図(a))、±135度(同図(b))、および180度(同図(c))の屈曲が存在する場合、屈曲の原因となる画素を輪郭線から除去する作業を行なう。この結果、方向差分符号系列で引き続く2つの符号は、同じか差が±1かのいずれかに限られる事になり、その後の処理が簡略化できる。なお本ステップを実現する方法としては、方向差分符号系列を先頭からスキャンして行き、図8に当てはまる箇所を図示の規則により書き換えて行く、という操作を繰返すプログラムを作成すれば良い。
【0023】
ここまでに述べた諸ステップはまとめて、本発明による凹点検出方法における前処理段階550となる。これらの諸ステップは、入力画像の諸特性に応じて適宜省略又は簡略化して良く、たとえば入力画像600が既に何らかの平滑化処理を経ている事が確実な場合は、S504を省略または簡略化できる。またこれらの諸ステップはいずれも、画像処理分野で周知の技法であるので、実装に関する詳細な説明(流れ図等)は省略する。
【0024】
以上の前処理段階550の基に本発明においては、引続くステップとして輪郭線を2方向系列に分割する作業を行なう(S505)。ここで2方向系列とは、本発明の第3の特徴で述べた通り、方向差分符号において方向が隣接する2つの符号値を組にした系列の事を言う。具体的には、図9(a)に示される領域900に対して図9(b)910の通り方向差分符号の系列が得られるが、これを更に図9(c)の要領で、〈01〉からなる2方向系列、〈12〉からなる2方向系列、……、〈70〉からなる2方向系列、に分割する。
【0025】
この様に分割する事で、輪郭線の大局的な方向を表現する事ができる。たとえば円の輪郭線を方向差分符号で表現した場合、図10に模式的に示される様に、円の最上点の近傍では、符号〈1〉がまとまって出現する。同様に最右点、最下点、最左点の近傍で符号〈3〉、〈5〉、〈7〉が各々まとまって出現する。更にこれらから45°傾いた付近で、符号〈0〉、〈2〉、〈4〉、〈6〉が各々まとまって出現する。これらの中間となる区間では2種類の符号が混在して出現する事になり、たとえば符号〈0〉と〈1〉との間は〈01〉からなる2方向系列が形成される。なお2方向系列〈01〉には定義により、前後の〈0〉および〈1〉のみからなる区間も含まれ、従って2方向系列〈01〉と〈12〉とは、〈1〉のみからなる区間を共有する(他の組合せも同様)。ここで各2方向系列の内部においては、微視的には方向が逆順で現れる事がありうる。たとえば図9(a)の例では、図中の点901の所で符号〈1〉の後に符号〈0〉が現れており、微視的に見れば輪郭線が凹型をしている様に見える。しかしながらこれは図3にも示した通り、画素が離散的に存在するため生じる現象であり、これのみからこの点が凹点であるとは断定できない。2方向系列を用いれば、この様な微視的な問題に囚われずに、大局的に凹凸を判定できる。
【0026】
以上で述べた分割作業を実行するためには、方向差分符号系列を前方からスキャンして行き、3種類目の符号が出現した時点で分割箇所を決定する、という操作を行なうプログラムを作成すれば良い。これらの操作は文字列処理技術において周知の技法であるので、詳細なフローチャートは省略する。
【0027】
以上の通り2方向系列への分割が完了したので、これを用いて本発明の特徴である凹点検出を、引き続くS506以降で行なう。この最初の段階としてS506からS508により、2方向系列の境界部分に凹点が存在するか否かを判定する。すなわち、たとえば2方向系列〈01〉に引き続いて〈12〉が出現すれば、当該領域は大局的には凸であると判定し、逆に〈70〉が引き続いて出現すれば、両者の接続部分が非凸図形となっていると判定する。後者の例を図11に示す。この例では同図(a)に示す方向差分符号系列1100が2つの2方向系列1101および1102に分けられ、すなわち2方向系列〈01〉に〈70〉が引き続いて出現している。この輪郭線の形状は同図(b)の通りとなり、局所的な凸包1110の上に領域外の画素1111−1および1111−2が存在するので、凸領域の定義に反している。この様に、次の系列が図10で示した方向(これを「凸方向」と記した)であるか否かの判定を行なって(S507)、否の場合には両者の接続部分を凹点として登録する(S508)、という処理を全ての2方向系列に対して繰り返す(S506)事により、与えられた領域が大局的に凸領域かどうかについて判定が完了する。なおここで登録とは、画像処理装置のメモリに記憶する方法、外部記憶装置に出力する方法、等が考えられるが、凹点の存在情報を以降の処理で利用できればどの様な方法でも良く、本発明ではその詳細は規定しない。また接続部分が多数の画素からなる場合は、たとえば中間点のみで代表させても良い。
【0028】
引き続くステップS509〜では、1つの2方向系列の内部に凹点が存在するか否かを判定する。これらのステップを以下に説明するが、そのための準備としてまず、本発明の特徴である「ラン対」および「擬直線」とは何かを説明する。
【0029】
既に説明の通り、本発明は「2方向系列」すなわち方向差分符号において方向が隣接する2つの符号値を組にした系列を、処理の単位としている。この下では、系列に含まれる符号は2種類のみであるから、1つの符号が連続して現れる回数を用いて、系列を表現する事ができる。すなわち図12の例に示す通り、2方向系列1200において符号〈0〉と〈1〉とが各々何回ずつ連続するかを数えると1201の通りとなり、従って1210で示される表現でこの2方向系列を表す事ができる。この様な表現方法は「ラン表現」として知られており、画像処理装置(たとえばFAX装置)で実用されている。なお本明細書では他の符号や数値との混同を避けるため、ラン表現を記述する際には「」で括る事とした。
【0030】
「ラン対」とは上記の「ラン表現」において、隣接する2つのランを1組にして考えるものである。すなわち図13に示す通り、符号〈0〉のランと〈1〉のランとを端から2つずつ組にして考える。この様にすると次に述べる様な利点が得られる。まず、処理の対象となる輪郭線は十分に滑らかであって、直線又は直線に近い形状を持っているものとする。図13はこの様な例であり、(a)は図中の点1311と点1312とを結ぶ直線1310を、(b)は図中の点1311と点1322とを結ぶ直線1320を、(c)は十分に滑らかな曲線(楕円の一部)1330を、それぞれ2値画像上で近似的に表現したものである。(a)の場合、直線1310の傾きは13/21であり、この値は2/3よりも小さく1/2よりも大きい。従って直線1310は2値画像上では、傾き2/3の素辺1301と傾き1/2の素辺1302との組み合わせで近似される。この例で代表される様に、一般に傾き1/2以上の直線は、傾きが丁度n/(n+1)となる場合を除いて、傾きn/(n+1)の素辺と傾き(n−1)/nとの組み合わせで近似される。なお以上においてnは適当な正整数を表すものとする。直線の傾きが1/2以下の場合も図13(b)に示す通り、傾き1/nの素辺と傾き1/(n+1)の素辺との組み合わせで近似される。輪郭線が滑らかに曲がる場合は、同図(c)に例示した様に同図の(a)と(b)とが滑らかに接続される場合と考えられる。
【0031】
以上の図13における素辺1301、1302等は「ラン対」の一種であるが、同図の様に輪郭線が十分に滑らかな場合は、各素辺は次の性質を持つ事が、同図の例から確認できる。
性質:2つのランのうち少なくとも一方はラン長が1となる。
従って、輪郭線が滑らかである事を前提とすれば、「ラン対」を記憶する際に2つのラン長を両方記憶する必要は無くなり、その代りに両者の差を記憶しておけば良い。すなわち、あるラン対を構成する2つのラン長をm、n(これを「ラン対(m、n)」と記す)とすると、値(m−n)のみを記憶しておけば良い。ここで値(m−n)の事を、当該ラン対の「指標」と以後呼ぶ事にする。図13では(a)(b)(c)各々の例において、1315、1325、1335で示した2方向系列に対して1316、1326、1336で示したラン表現が得られ、これらから更に1317、1327、1337で示した指標の系列が得られる。なお本明細書では他の符号や数値との混同を避けるため、指標を記述する際には[ ]で括る事とした。
【表1】

【0032】
指標を利用すると、図13における素辺の傾きは上記の表1の様に整理できる。また表に示される通り、指標が増減する事は素辺の傾きが増減する事と等価である。これらの性質を用いると、以下の様に凹点を検出する事が可能となる。まず表1に示した通り、指標が増減する事は素辺の傾きが増減する事と等価であり、特に指標が増減しないあるいは減少する場合は、素辺の傾きが一定または領域の内側方向(凸方向)へ変化する事であるから、その部分には凹点は存在しない。また指標が+1だけ増加する場合は、後述する「擬直線」の可能性があり、凹点が存在するとは断定できない。しかしながら指標が+2以上増加する場合は、2つのラン対が接続する部分に凹点が存在する。この様な例を図14に示す。図14の例は黒丸で示した輪郭線について、2方向系列1415を得た後にラン表現1416を経て指標の系列1417を得ている。なお図示は省略したが、図の下方が領域の内側であるとする。ここでは2番目のラン対から3番目へ進む際に、指標が1から3へ+2だけ増加している。この場合、図の線分1400が局所的な凸包となり、その内側(線分上を含む)に矢印で示した画素1410が存在するため、この領域は凸では無いと判定できる。ここで指標が他の値(たとえば2から4へ増加)であっても、線分1400の両端が対称的に移動するのみで、画素1410が線分1400の中点となる、という性質に変化は無い。また、指標の増加量がもっと大きい(たとえば+3)場合は、線分1400の傾きが本図よりも大きくなるので、画素1410は凸包の内部に入る。以上より、指標がどの様な値でも+2以上の増加があれば、その領域は凸では無いと判定できる。本実施例ではこの性質を、図5におけるS514で凹点を検出するために利用する。なおこの判定方法は、ラン対の一方が2方向系列の始端または終端にある場合には図の線分1400が引けなくなるため、これらの場合は除外して適用する。また実際の輪郭線では、ラン対(m、n)におけるmとnとが共に1より大きい場合もありうる。しかしながらこの様なラン対では、2つのランの接続箇所が明白な凸点となるので、この点を境に輪郭線を前後に分割して処理しても凹点を検出するためには支障は生じない。この場合にはラン対(m、n)を、分割の前半においてはラン対(m、1)、後半においてはラン対(1、n)と見なして処理すれば良い。
【0033】
次に「擬直線」について説明する。図13で示した通り、2値画像上では直線は2種類のラン対で表現され、それらの指標は1だけ異なる。そこで逆に、2方向系列をラン対指標で表現した後に、「指標が±1だけ異なる2種類のラン対」が継続する区間を、本発明では「擬直線」と呼ぶことにする。擬直線は、その区間が直線である可能性を示す必要条件となっている。また擬直線でない区間ではラン対指標が2以上変化する事になり、先述の方法により凹点を検出する事が可能である。
【0034】
以上の様に「ラン対」および「擬直線」という概念が定義できる。これらを用いる事により、S509以降の処理は以下に述べる通りに構成できる。すなわち、S510からS519までの処理を全ての2方向系列に対して適用し(S509)、その結果登録された凹点に基づき分割処理を実施(S520)して、実行を終了(S521)すれば良い。ここでS510からS519までは、以下の通りに構成される。
【0035】
まず、当該2方向系列を上述のラン対表現に変換し(S510)、解析開始点をラン対表現の始点とする(S511)。以上の2つのステップは、ラン対表現を利用して凹点を検出するための準備段階となる。なおラン対と同時にその指標も得ておく事にする。この下に、解析開始点から後ろの外形線がどの様な形状を持っているかを、以降のステップで分析する。すなわちまずS512として、解析開始点から始まるラン対が十分に凸となる区間を求める。具体的には引き続くラン対の指標を逐次比較して行き、指標が最初に増加する箇所を区間の終点とする。得られた区間が当該2方向系列の終点まで達したかを判定し(S513)、結果がyesすなわち終点まで達していれば、当該2方向系列にはこれ以上の凹点は存在しない事になるから、S509にループして次の2方向系列の分析を開始する。結果がnoの場合は、凸区間の最後となるラン対と更にその次のラン対とに関して、各々の指標を比較する(S514)。指標が2以上増加している場合は、図14で説明した通り凹点が存在するので、次のラン対との接続部分を凹点として登録する(S515)。以上により次のラン対までの検出処理が完了した事になるので、更なる検出を続けるためには、解析開始点を次のラン対の始点として(S516)、S512以降を再度繰り返せば良い。なお以上の説明において、S515における登録はS508と同様に行えば良い。
【0036】
一方、S514において指標が+1しか増加していない場合は、この部分が前述の「擬直線」となっている可能性があり、凹点が存在するか否かは簡単に決定できない。そこでこのような場合は、まずS512により求めた区間の最後となるラン対を含む擬直線区間を求め(S517)、その擬直線区間の凹凸を判定する(S518)ものとする。しかる後に、当該擬直線区間が当該2方向系列の終点まで達したかを判定し(S519)、結果がyesすなわち終点まで達していれば、S513と同様にS509にループして次の2方向系列の分析を開始する。結果がnoの場合は更なる検出を続けるために、S515の場合と同様にS516を経てS512以降を再度繰り返す。
【0037】
ここで疑直線に対する処理、すなわちS517およびS518について説明する。まずS517において2方向系列から疑直線を構成する区間を求めるが、既にS510においてラン対表現が作成されてその指標も得られているので、S517では指標の値が現在の値に対して+0または+1となる区間を求めれば良い。たとえば指標の系列が
[−2−1−2−2−1−1−2−2−1−2−3−2−4−4](先頭の−2が解析開始点)
と得られていれば、先頭から−2または−1が引き続く区間を求める事になる。上記例の場合には、−2でも−1でもない指標が最初に現われるのは−3の箇所であるから、その直前までの
[−2−1−2−2−1−1−2−2−1−2]
が、疑直線を構成する区間となる。この処理は数値列の中から特定条件を満たす部分列を抜き出す処理であり、周知の技術で実現できるので詳細は省略する。
【0038】
次にS518において、上記で求められた区間の凹凸を判定する。この判定は、本発明の第2の特徴に忠実に従って行なう事も勿論可能であるが、疑直線には画素レベルでの微細な屈曲が多数存在するため、局所的な凸包を正確に求めるには手間がかかる。また実用面では、疑直線は実際に直線であるか、又は直線に十分に近い形状である事が大半である。そこで本実施例では、疑直線に対して近似的ではあるが高速に凹凸を判定する方法を、図15以降を用いて開示する。
【0039】
図15は擬直線の一例を示したもので、対応する2方向系列、ラン表現、指標の系列は各々1515、1516、1517に示した通りである。すなわちこの擬直線は指標が−2および−1となる2種類のラン対から構成されており、その具体的な形状は図示の通りである。ここで同擬直線の最初および最後のラン対に注目すると、両者における画素1501および1502が微視的に輪郭線の頂点となっている。これは両点を結ぶ線分1500が、この輪郭線の局所的な凸包となっている可能性を示唆するものである。そこで線分1500を仮の凸包とみなした場合、この内部(下方を内部とする)に領域外の点が含まれていれば、同擬直線を輪郭線とする部分は凸ではないと結論する。このための十分条件として、線分1500の下方にある画素の数と領域内でかつ図の長方形1505に含まれる画素の数を比較して、後者の方が少なければ凸ではないと結論できる。ここで上記の2種類の画素数は、各々以下の通りの方法により計算できる。
【0040】
まず領域内でかつ図の長方形1505に含まれる画素の数については、図16に示す方法により算出できる。すなわち、まず当該擬直線に対する「参照擬直線」を想定する。参照擬直線とは当該擬直線と同一の指標の値を有する擬直線であって、その指標のうち値の大きい方が系列の前半に集中しているものを言う。たとえば図15の擬直線の指標には−1が4回、−2が6回現れるから、これらをこの順に並べた
[−1−1−1−1−2−2−2−2−2−2]
という指標の系列1617を持つ擬直線が参照擬直線となる。これに対応する2方向系列、ラン表現は各々1615、1616の通りである。なお図では、参照擬直線を構成する画素を正方形で示した。ここで参照擬直線の下方の面積は図16(a)に示す通り初等的に計算できる。すなわち、図15における長方形rを、図16(a)の3つの長方形1601、1602、1603に分けて考えると、
1601における下方の面積=(i1+2)×(k1×(k1+1)÷2)
1602における下方の面積=(i2+2)×(k2×(k2−1)÷2)+k2
1603における下方の面積=k1×((i2+2)×(k2−1)+1)
但し i1=指標のうち値の大きい方の絶対値、
k1=指標のうち値の大きい方の出現回数、
i2=指標のうち値の小さい方の絶対値、
k2=指標のうち値の小さい方の出現回数
となるので、これら3つの値を合計すれば良い。しかる後に、この合計値を基に当該擬直線の下方の面積を算出する。このためには図16(b)の原理を利用する。図16(b)は、擬直線において指標の現われる順序が変化した場合に、下方の面積がどのように変化するかを説明したものである。図の例では擬直線の指標が1620に示す[−1−2−2]から1630に示す[−2−1−2]へと変化している。この結果、元の擬直線が通過していた画素1611が直線の上方へ除外され、擬直線は画素1612を通る様になる。それ以外の部分では擬直線の形状は不変なので、結局画素1611による1画素分だけ面積が減少する。この原理を用いれば、当該擬直線における指標のうち値の大きい方が参照擬直線と比べてどれだけ後ろに出現するか、を合算する事により、参照擬直線と比べてどれだけ面積が減少したかを算出する事ができる。たとえば図15および図16に示した例では、
参照擬直線の指標1617:[−1−1−1−1−2−2−2−2−2−2]
当該擬直線の指標1517:[−2−1−2−2−1−1−2−2−1−2]
であるから、
4つ目の[−1]の出現位置:4番目→9番目、面積減少=5画素
3つ目の[−1]の出現位置:3番目→6番目、面積減少=3画素
2つ目の[−1]の出現位置:2番目→5番目、面積減少=3画素
1つ目の[−1]の出現位置:1番目→2番目、面積減少=1画素
となり、これらを合計した12画素だけ面積が減少している事が計算できるので、前述の参照擬直線の下方の面積から12画素を減じれば良い。なお以上の説明においては、指標の値が負またはゼロの場合を例に示したが、値が正またはゼロの場合は図15および図16を90度回転して同様の計算を行えば良い。
【0041】
次に線分1500の下方にある画素の数については、図17に示す方法により算出できる。すなわち、凸包の頂点の候補として2つの画素1701、1702が与えられた時、両者を結ぶ線分1705の下方(線分上を含む)にある画素数を求める。ここで1702は1701から水平方向にm画素、垂直方向にn画素離れているものとする。まずmとnとが互いに素な場合を同図(a)に示す。図には全部で(m+1)×(n+1)個の画素がある。このうち1701、1702の2つを除くと、線分1705の上には画素は存在せず、それらは線分1705により対称的に2分割される。従って、全部の画素数から2画素を除いたものを半分にして、これに2画素を再度加えれば、求める画素数が得られる。以上を式で表せば、
((m+1)×(n+1)−2)÷2+2=(m+1)×(n+1)÷2+1
が求める画素数である。一般にはmとnとが互いに素とは限らないが、この場合でも上記の考え方を拡張して画素数を算出する事ができる。すなわち同図(b)に示す通り、この場合には線分1715上に画素1720−1、1720−2、……、が存在しうるが、これらを除いて考えれば、同図(a)と同様の計算が成り立つ。従って問題は線分1715上に画素が全部で何個存在するかという点に帰着するが、初等整数論による考察により、この個数は
mとnとの最大公約数+1(但し両端の画素1711、1712も含める)
である事が確認できる。従って求める式は、下記の数式1の通りとなる。なお当然の事であるが、同図(a)は同図(b)においてgcd(m,n)=1とした場合に他ならない。
【数1】

但しgcd(m,n)はmとnとの最大公約数を表す
【0042】
以上により、S518における近似的ではあるが高速な判定方法として、図18のフローチャートで示す処理が実現できる。すなわち擬直線が指標の系列によって与えられたものとして(S1801)、まず図16で示した方法により当該擬直線の下方の面積を求め(S1802)、引続き図17で示した方法により凸包の候補の内部にある面積を求める(S1803)。両者を比較して(S1804)、前者の方が小さい場合には当該擬直線を凹点として登録し(S1805)、処理を終了する(S1806)。以上においてS1805における登録はS508と同等に行えば良い。なお当該擬直線の区間が長い場合には、その中点をもって凹点を代表させても良い。
【0043】
以上により図5におけるS519までが実施できるので、それらにより求められた凹点を用いて、領域の分割を行う事が可能となる(S520)。この応用方法は様々に考えられるが、たとえば人間の横顔を入力して鼻の隆起点を検出する、などの応用が考えられる。これは、従来は困難とされた映像中から人間の横顔を自動検出する機能が、本発明を利用することにより可能となる事を示している。
【0044】
なおここまでの説明においては、輪郭線が方向差分符号〈0〉および〈1〉で示される場合を主に取り上げて説明したが、座標を適宜回転あるいは鏡像反転させて考える事により、他の方向の場合にも本発明が適用できる事は言うまでもない。
【0045】
以上、領域の輪郭線から凹点を検出する方法を開示した。これらの説明においては、輪郭線が基本的に凸区間からなり、凹点は凸区間の接続部分にのみ存在する、という領域を処理の対象とした。しかしながら一般には、輪郭線が本質的に凹図形を形成する領域も存在する。たとえば「三日月形」は、外側の輪郭線は凸図形であるが、内側の輪郭線は全体が凹図形であり、その中の特定の点のみを凹点とする事は合理性を欠く。この様な図形をどう扱うべきかは本発明の課題から外れるものであり、より上位の画像処理機能に扱いを委ねるものとする。なお輪郭線が凹図形である事は、領域の外側と内側を入換て考える事により、本発明と同様の算法で確認できる。これを利用すれば、たとえば輪郭線上の凹図形の部分をあらかじめ分離しておく、などの処理方法が上位の画像処理機能として考えられる。従って本発明は、凹図形も含めた一般の領域に対しても、応用の可能性を残すものである。
【産業上の利用可能性】
【0046】
本発明は画像認識技術を応用した各種の映像処理装置で利用可能であり、より具体的には映像監視装置、ビデオ編集装置、ディジタルカメラなどへの応用が期待できる。
【図面の簡単な説明】
【0047】
【図1】 本発明で用いる凸領域の定義を説明する図(2値画像)
【図2】 従来法による凹点検出の課題を説明する模式図
【図3】 画素が離散的に存在する場合の課題を説明する図
【図4】 計算幾何学による凸包の定義およびその作成方法を説明する図
【図5】 本発明による凹点検出方法の全体の構成を示すフローチャート
【図6】 2値画像における領域およびその輪郭線を説明する図
【図7】 方向差分符号の定義および使用例を説明する図
【図8】 S504における屈曲の除去方法を説明する図
【図9】 方向差分符号を2方向系列に分割する方法を説明する図
【図10】 滑らかな凸図形における2方向系列の挙動を説明する模式図
【図11】 S507における凹凸の判定の根拠を説明する図
【図12】 2方向系列をラン表現に変換する方法を説明する図
【図13】 ラン表現からラン対およびその指標を求める方法を説明する図
【図14】 S514における凹凸の判定の根拠を説明する図
【図15】 擬直線の例を説明する図
【図16】 参照擬直線の例およびそれを用いた面積算出方法を説明する図
【図17】 直線下の面積を算出するための数式1の根拠を説明する図
【図18】 S518における擬直線の近似的な凹凸判定方法を示すフローチャート
【符号の説明】
【0048】
550…前処理段階 1201…ラン長 1705,1715…凸包の候補となる線分

【特許請求の範囲】
【請求項1】
2値画像に含まれる連結領域を複数の小領域に分割する方法であって、当該領域の外形線上での凹点を検出する事により分割位置を決定する方法において、上記凹点を検出する際に、外形線のうちの一部の区間および当該区間の内側の近傍領域が、局所的に凸図形となる区間(以下「凸区間」と呼ぶ)を検出するステップと、上記ステップにより複数の凸区間が検出された場合、それらが接続する箇所が凹点であるか否か判定するステップと、を含む事を特徴とする方法。
【請求項2】
請求項1記載の方法において凸図形とは、領域を構成する画素群を含む凸包を想定して、当該凸包の中に領域外の画素を含まない場合を凸図形とするという条件により定められる事を特徴とする方法。
【請求項3】
請求項1記載の方法において、当該領域の外形線が方向差分符号の系列により表現されている場合に、方向が隣接する2つの符号値のみを有する部分系列に上記系列を分割するステップと、2つの部分系列が接続する箇所において符号値の変化が凸方向であるか否かを判定するするステップと、を含む事を特徴とする方法。
【請求項4】
請求項1または請求項2記載の方法において、当該領域の外形線が方向差分符号の系列により表現されている場合に、方向が隣接する2つの符号値のみを有する部分系列に上記系列を分割するステップと、上記2つの符号値の連続形(ラン)を各々1つずつ組にした形式(以下「ラン対」と呼ぶ)に上記部分系列を変換するステップと、上記ラン対の傾きの変化が凸方向であるか否かを判定するするステップと、を含む事を特徴とする方法。
【請求項5】
請求項1または請求項2記載の方法において、外形線上の一部の区間を指定した後、当該区間の両端点を結ぶ直線を斜辺とする直角三角形を想定して、その内部にある画素数を求めるステップと、当該区間および上記直角三角形の底辺ならびに垂辺で囲まれる領域の内部にある画素数を求めるステップと、上記2つの画素数を比較して、後者の方が少ない場合には当該区間は凸図形では無いと判定するステップと、を含む事を特徴とする方法。
【請求項6】
請求項5記載の方法において、直角三角形の内部にある画素数を数式1により算出する事を特徴とする方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図6】
image rotate

【図7】
image rotate

【図5】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate


【公開番号】特開2010−27016(P2010−27016A)
【公開日】平成22年2月4日(2010.2.4)
【国際特許分類】
【出願番号】特願2008−209367(P2008−209367)
【出願日】平成20年7月18日(2008.7.18)
【出願人】(508173118)
【Fターム(参考)】