JP2005196702A - 画像を分割可能なプログラム及び画像分割方法 - Google Patents

画像を分割可能なプログラム及び画像分割方法 Download PDF

Info

Publication number
JP2005196702A
JP2005196702A JP2004004862A JP2004004862A JP2005196702A JP 2005196702 A JP2005196702 A JP 2005196702A JP 2004004862 A JP2004004862 A JP 2004004862A JP 2004004862 A JP2004004862 A JP 2004004862A JP 2005196702 A JP2005196702 A JP 2005196702A
Authority
JP
Japan
Prior art keywords
block
cluster
image
texture
region
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2004004862A
Other languages
English (en)
Inventor
Kanji Yokogawa
完治 横川
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Software Engineering Co Ltd
Original Assignee
Hitachi Software Engineering Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Software Engineering Co Ltd filed Critical Hitachi Software Engineering Co Ltd
Priority to JP2004004862A priority Critical patent/JP2005196702A/ja
Publication of JP2005196702A publication Critical patent/JP2005196702A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Image Analysis (AREA)

Abstract

【課題】 テクスチャ特徴量の統計的な信頼度と、画像を分割して得られる領域の境界位置の分解能をいずれも所望の値にできるように画像を複数の領域に分割する。
【解決手段】 テクスチャ特徴量検出部200は、解析対象画像を構成する複数のブロックの各々に対応して、当該ブロックより大きな、当該ブロックを中心付近に含む特徴抽出領域の画像に関する所定の種別の統計的なテクスチャ特徴量を検出して、当該ブロックのテクスチャ特徴量とする。テクスチャ分類部300は、検出された複数のテクスチャ特徴量を複数のクラスタに分類する。領域分割部400は、対応するテクスチャ特徴量が同一のクラスタに属し、かつ互いに隣接する複数のブロックを連結して一つの領域を生成することにより、解析対象画像を複数の領域に分割する。
【選択図】図1

Description

本発明は、テクスチャを含む複雑な画像を統計的なテクスチャ特徴量に基づいて複数の領域に分割するのに適した画像を分割可能なプログラム及び画像分割方法に関する。
テクスチャとは、例えば航空写真、衛星画像、医用画像のような複雑な画像内にある、微視的には細かな繰り返し模様が存在し、巨視的には均一に感じられるパターンのことである。テクスチャには、それを構成する要素が比較的抽出しやすく、要素間の関係として配置規則をとらえやすい構造的テクスチャと、要素と配置規則による記述が困難であり、要素分布の統計量でしかその特徴を記述できない統計的テクスチャがある。本発明は、後者の統計的テクスチャを対象とする。
最も簡単なテクスチャ特徴量は、濃度ヒストグラム及びそれから導出可能な統計量である。例えば、濃度ヒストグラムの平均、分散、3次モーメント、4次モーメントなどの統計量で、ある程度のテクスチャを区別できる。他のテクスチャ特徴量には、同時生起行列、差分統計量、フーリエ特徴、自己回帰モデルなどがあることは周知である。画像の異なる領域からテクスチャ特徴量を抽出してそれらのテクスチャ特徴量を分類し、分類結果を利用してテクスチャが異なる領域の境界の検出又はテクスチャが一様な領域の切り出し等に使用される。このように、テクスチャの特徴抽出及び分類、テクスチャが一様な領域の切り出し、テクスチャ領域の境界の検出などを総称してテクスチャ解析と呼ばれることがある。
テクスチャが異なる領域の境界の検出あるいはテクスチャの一様な領域の切り出しを使用して画像を複数の領域に分割することが行われている。すなわち、テクスチャ特徴量に基づく画像の分割とは、解析対象の画像をその中ではテクスチャ特徴量が実質的に同じである複数の領域に分割する手続きである。この手続きは、典型的には、特許文献1、2にも記載されているように、次のように行われる。まず、画像を格子などを用いて複数のブロックに分割した後、各ブロックのテクスチャ特徴量を検出する。複数のブロックから抽出された複数のテクスチャ特徴量を一定の基準に基づいて複数のクラスタに分類する。この分類はクラスタリングとも呼ばれる。その分類を用いて、対応するテクスチャ特徴量が同じクラスタに属し、かつ隣接する複数のブロックが一つの領域に連結されるように、画像が複数の領域に分割される。
テクスチャ特徴量の分類はいろいろな方法により行うことができる。例えば、特許文献1では隣接するブロックのテクスチャ特徴量の差を得るためにグラジェント演算等を行い、テクスチャ特徴量の差の大きい部分を境界としている。特許文献2では各ブロックのテクスチャ特徴量として、濃度ヒストグラムを検出し、複数のブロックに対して検出された複数のテクスチャ特徴量の間の距離が所定の閾値以下のテクスチャ特徴量を同じクラスタに属するように、それらの複数のテクスチャ特徴量を分類することを提案している。
このようにしてテクスチャ特徴量により画像を複数の領域に分割するには、その画像の統計的な性質、形状、大きさに応じた適切なブロックのサイズを設定する必要がある。すなわち、特許文献1でも指摘されているように、ブロックサイズを小さくすると、テクスチャ特徴量を検出するための情報を減らすことになり、検出されるテクスチャ特徴量の統計的な信頼度は低いものになる。すなわち、ブロックを小さくすると、同一のテクスチャと判断される大きな領域のごく一部を、テクスチャ特徴量を検出する対象にすることになり、局所的なテクスチャのゆらぎが直接検出結果に影響してしまい、その結果、領域の不必要な併合又は分割が生じる恐れが生じる。
より具体的に説明すると、より大きな互いに隣接するブロックについてテクスチャ特徴量を検出すると異なるテクスチャ特徴量が検出されるにも拘わらず、そのブロックより小さな隣接する複数のブロックのそれぞれについてテクスチャ特徴量を検出すると、それらの小さなブロックに対して検出されるテクスチャ特徴量が、テクスチャ特徴量の局所的な変動の結果、同一と判断されることが偶然に起こり、その場合には、それらのブロックが一つの領域に併合されてしまうことが生じる。
逆に、より大きな互いに隣接するブロックについてテクスチャ特徴量を検出すると同一のテクスチャ特徴量が検出されるにも拘わらず、そのブロックより小さな隣接する複数のブロックのそれぞれについてテクスチャ特徴量を検出すると、テクスチャ特徴量の局所的な変動の結果、それらの小さなブロックに対して検出されるテクスチャ特徴量が異なると判断されることが起こり得る。この場合にはそれらのブロックが異なる領域に属するように、領域が決定される。
以上から分かるように、複数のブロックのそれぞれから抽出された統計的なテクスチャ特徴量に基づいてそれらのブロックを併合するか否かを判断するために用いる、テクスチャ特徴量の統計的な信頼度を得るためには、そのブロックサイズを大きくすることが必要であるということである。しかし、画像を分割して得られる領域の境界は、同じクラスタに属するブロックの辺を連結して決定されるので、不用意にブロックサイズを大きくすると、分割して得られる領域の境界位置の分解能は低くなる。すなわち、分割で得られる領域の境界位置はブロックのサイズを単位として決定されるので、ブロックサイズが大きくなると、境界はがたがたのものになってしまう。したがって、分割により得られる複数の領域の境界位置の分解能を高くする(小さい単位で境界位置の変化を示せるようにする)には、ブロックサイズを小さく設定することが必要である。
特開平6−60182号公報 特開2002−170122号公報
以上から明らかなように、従来技術では、テクスチャ特徴量の統計的な信頼度の向上に対するブロックサイズの影響と、テクスチャ特徴量に基づく領域の境界位置の分解能の向上に対するブロックサイズの影響が相反するため、テクスチャ特徴量の統計的な信頼度を所望の値にするとともに、画像を分割して得られる領域の境界位置の分解能を所望の値にすることが難しい。
したがって、本発明の目的は、テクスチャ特徴量の統計的な信頼度を所望の値にし、かつ画像を分割して得られる領域の境界の位置の分解能も所望の値にすることを可能にする、画像を分割可能なプログラム及び画像分割方法を提供することである。
既に述べたように、画像内のある領域から検出されるテクスチャ特徴量の統計的な信頼度を所望の高い値にするには、その所望の信頼度の値に対応してその領域のサイズを大きくすることが必要である。すなわち、その領域から抽出されるテクスチャ特徴量が、その領域内でのテクスチャの局所的な影響を受けないように、その領域のサイズを適正な大きさにする必要がある。このことに関連して、本発明者は以下のことに気付いた。まず、統計的な信頼度が高いテクスチャ特徴量が、ある領域から検出された場合、そのテクスチャ特徴量は、その領域内の局所的なテクスチャの変動の影響を余り受けていないので、その領域内の中心付近にある部分領域に関するテクスチャ特徴量として使用できる可能性があることに気づいた。
更に、本発明者は、この発見を更に発展させて、ブロックより大きな、そのブロックを中心付近に含む特徴抽出領域からテクスチャ特徴量を検出して、検出されたテクスチャ特徴量をそのブロックのテクスチャ特徴量として使用することを複数のブロックについて行えば、テクスチャ特徴量の一様な領域及びテクスチャ特徴量が異なる領域の境界を、特徴抽出領域のサイズより小さなブロックサイズで決定できること、そのように決定できれば、テクスチャ特徴量の統計的な信頼度を維持し、かつ画像をテクスチャが一様な領域に分割するときの境界の位置の分解能を、テクスチャ特徴量を抽出する特徴抽出領域より小さなブロックのサイズにできる可能性があることに気付いた。
このような考えに基づき、実際の画像について実験してみたところ、上記の考えが実際の画像に適用できることが判明した。実験ではテクスチャ特徴量として濃度ヒストグラムを使用した。複数の濃度ヒストグラムの分類には、ヒストグラム間の距離と利用者が指定した閾値を使用した。実験は他のテクスチャ特徴量についても行った。
本発明は、このように、発明者による着眼と実験の結果とに基づいてなされたものである。すなわち、本発明では、テクスチャ特徴量を検出する領域として、各ブロックに対応して、当該ブロックより大きな、当該ブロックを中心付近に含む特徴抽出領域を使用し、その特徴抽出領域からテクスチャ特徴量を抽出するようにし、抽出されたテクスチャ特徴量を当該特徴抽出領域に含まれた当該ブロックのテクスチャ特徴量として使用し、そのテクスチャ特徴量に基づいて画像をブロックを単位として複数の領域に分割するものである。言い換えると、従来のテクスチャ特徴量に基づく画像の領域分割においてブロックに持たせていた、領域の境界が位置し得る空間的な位置を当該ブロックの辺上に来るように規制するという境界位置規制役割と、テクスチャ特徴量を検出する対象とする画像の領域を規制するテクスチャ特徴抽出領域規制役割という二重の役割のうち、後者の役割をブロックとは別の、ブロックより大きな特徴抽出領域に持たせるようにしたものである。
すなわち、本発明に係る画像を分割可能なプログラムの一つの望ましい態様は、解析対象の画像を分割して得られる所定の大きさを有する複数のブロックの各々に対して、当該ブロックより大きく、当該ブロックを中心付近に含む特徴抽出領域の画像から所定の種別の統計的なテクスチャ特徴量を、当該ブロックの画像に関するテクスチャ特徴量として検出するテクスチャ特徴量検出ステップと、前記複数のブロックのそれぞれに対応して検出された複数のテクスチャ特徴量を複数のクラスタに分類するテクスチャ分類ステップと、それぞれに対応して検出されたテクスチャ特徴量が同一のクラスタに属し、かつ互いに隣接する複数のブロックを連結して一つの領域を生成することにより、前記画像を複数の領域に分割する画像分割ステップと、をコンピュータに実行させるものである。
これにより、ブロックのサイズと特徴抽出領域のサイズを独立な値に決定することが可能になる。すなわち、ブロックのサイズは、分割で得られる領域の境界の位置を所望の細かい分解度で規制するのに必要な小さい値にし、一方、特徴抽出領域のサイズをブロックより大きな、テクスチャ特徴量の統計的な信頼度が所望の値にするのに必要な十分大きいサイズにすることが可能になる。したがって、テクスチャ特徴量の信頼度と、分解で得られる領域の境界位置の分解能の両方を所望の値にすることが可能になる。
この結果、テクスチャ特徴量の統計的な信頼度を従来技術で大きなブロックを用いたときに得られる値から落さないで、分割で得られる領域の境界位置の分解能を、従来技術によりそのようなサイズのブロックを用いたときに得られる値より高くすることが可能になる。
各特徴抽出領域から抽出されたテクスチャ特徴量を、当該特徴抽出領域内のブロックのテクスチャ特徴量として使用するうえでは、当該ブロックは、対応する特徴抽出領域内のほぼ中心位置に位置することが望ましいが、最も望ましいのは、各ブロックの中心が対応する特徴抽出領域内の中心と一致することである。
ブロックと対応する特徴抽出領域としてともに正方形の領域を使用することが考えた場合、ブロックが、対応する特徴抽出領域の完全な中心に位置するためには、ブロックの一辺に含まれる画素数と、対応する特徴抽出領域の一辺に含まれる画素数の偶奇が同じであることが必要である。例えば、ブロックの一辺の画素数が奇数の場合、特徴抽出領域の一辺の画素数も奇数であれば、ブロックの幾何学的な中心に位置する画素と特徴抽出領域領域の幾何学的な中心に位置する画素とが存在し、それらの画素の位置を一致させることにより、ブロックを特徴抽出領域領域の中心に位置させることができる。あるいは、ブロックと、対応する特徴抽出領域がともに正方形の領域であり、ブロックの一辺に含まれる画素数が偶数の場合、当該ブロックの幾何学的な中心には画素は存在しないで、ブロックの幾何学的な中心を取り囲む4つの画素が存在することになる。したがって、特徴抽出領域の幾何学的な中心にブロックが位置するには、特徴抽出領域の一辺の画素数も偶数であれば、その幾何学的な中心を取り囲む4つの画素がブロックの中心を取り囲む4つの画素と一致するようにブロックを特徴抽出領域内に配置すれば、ブロックはその特徴抽出領域の中心に位置することになる。
したがって、ブロックと特徴抽出領域がいずれも正方形の場合にはそれぞれの一辺を構成する画素数の偶奇が一致すれば、ブロックを特徴抽出領域の中心に位置させることができる。しかし、以上から分かるように、ブロックと特徴抽出領域の一辺の画素数の偶奇が同じでなくても、ブロックの中心を特徴抽出領域の中心に最も近づけた場合、両者の中心の位置ずれは、半画素分に抑えることができるので、この程度のずれは結果には大きくは影響しないと期待されるので、ブロックと特徴抽出領域のそれぞれの辺を構成する画素数の偶奇が異なっていても本発明は適用することができる。
本発明の他の望ましい態様では、前記複数のブロックの各々は1画素の領域であり、各画素に対応する前記特徴抽出領域は、当該特徴抽出領域領域の中心付近に当該画素を含むものである。これにより、統計的な信頼度が所望の値に維持されたテクスチャ特徴量を用いて画像を複数の領域に分割でき、得られる領域の境界の位置を1画素単位で決定することができ、境界位置の分解能を一番高くすることができる。より望ましくは、各ブロックである各画素に対応する前記特徴抽出領域は、その領域の幾何学的な中心に当該画素を含む領域であることであり、当該特徴抽出領域は、その中心に位置する画素に対応する領域とすることができる。このためには、特徴抽出領域が正方形の場合は、その特徴抽出領域の一辺の画素数が奇数であればよい。これにより、当該1画素からなるブロックが、特徴抽出領域の中心付近にある場合の中でも、テクスチャ特徴量が当該ブロック(画素)に最もよく対応したものとなり、当該テクスチャ特徴量により領域を分割すれば、より望ましい分割結果を得ることができる。
このような、特徴抽出領域としては、正方形以外の他の形状、例えば円形の領域を使用することもできる。特徴抽出領域が円形の場合には、当該円の直径を構成する画素の数が奇数であれば、当該一画素からなるブロックを特徴抽出領域である円の中心に位置させることができる。しかし、既に述べたように、特徴抽出領域である円の直径を構成する画素の数が偶数であっても、ブロックである画素として特徴抽出領域の中心付近に位置する4つの画素の一つを使用した場合、両者の位置ずれは、半画素分に抑えることができるので、この程度のずれは結果には大きくは影響しないと期待されるので、ブロックが1画素で特徴抽出領域である円の直径を構成する画素数が偶数であっても本発明は適用することができる。
なお、正方形のブロックの一辺のを構成する画素数が複数であるときには、従来技術に比べて境界の位置の分解能を高められる点ではブロックの画素数が1の場合と同じであるが、分割で得られる領域の境界の位置の分解能は、ブロックが1画素の場合よりも悪くなるが、テクスチャ解析の対象となるブロックの数をNとすると、それらのブロックから抽出されるテクスチャ特徴量の抽出のためのデータの量及びそれらのデータに対する分類処理のためのデータ処理量は、ブロックの画素数が1の場合に比べると、ブロックの個数の2乗分の1でよいことになり、実用的な利点が大きい。したがって、領域分割の境界の位置の分解能を1画素とする必要がない場合には、ブロック内の画素数を複数にして、使用するブロックの総数を減らすことが望ましいと言える。
本発明の具体的な望ましい態様では、各ブロックに対応する前記特徴抽出領域内の画像に関する前記所定の種別の統計的テクスチャ特徴量は濃度のヒストグラムであり、前記分類ステップは、前記検出された複数のテクスチャ特徴量を、それらの間の距離とあらかじめ指定された距離の閾値とに基づいて、互いの間の距離が前記閾値を超える一組のテクスチャ特徴量は異なるクラスタに属するように、かつ距離の近いものは同じクラスタに属するように、複数のクラスタに分類するものである。
このように、濃度のヒストグラムというテクスチャ特徴量を使用して、実際の解析対象画像を上記望ましい態様にしたがって複数の領域に分割したところ、分割の結果得られた複数の領域の各々は、その中ではヒストグラムがほぼ一様であることが分かり、画像の領域への分割は望ましい結果となることが判明した。同時に、テクスチャ特徴量として濃度ヒストグラムを使用して距離でテクスチャ特徴量を分類することは計算量も少なくて済むという利点もある。
本発明に係る画像分割方法の一つの望ましい態様は、解析対象の画像を分割して得られる所定の大きさを有する複数のブロックの各々に対して、当該ブロックより大きく、当該ブロックを中心付近に含む特徴抽出領域の画像から所定の種別の統計的なテクスチャ特徴量を、当該ブロックの画像に関するテクスチャ特徴量として検出するテクスチャ特徴量検出ステップと、前記複数のブロックのそれぞれに対応して検出された複数のテクスチャ特徴量を複数のクラスタに分類するテクスチャ分類ステップと、それぞれに対応して検出されたテクスチャ特徴量が同一のクラスタに属し、かつ互いに隣接する複数のブロックを連結して一つの領域を生成することにより、前記画像を複数の領域に分割する画像分割ステップと、を含むものである。
以上のように、本発明の望ましい態様によれば、所望の値の統計的な信頼度を有するテクスチャ特徴量を用いて画像を複数の領域に分割でき、かつ画像分割で得られる複数の領域の境界位置の分解能を所望の値にすることが可能になる。
以下、本発明に係る画像を分割可能なプログラム及び画像分割方法のいくつかの実施形態を図面を参照して説明する。第2以降の実施の形態については、第1の実施の形態との相違点を主に説明するに止める。
<発明の実施の形態1>
本実施の形態では、画像の分割処理は概略以下の4ステップで行われる。
(1)処理条件の設定
以下の処理に必要なデータを利用者に入力させる。利用者は処理に必要なデータをあらかじめ、例えば以下の処理を実行させて試行錯誤的に決定しておく。
(2)テクスチャ特徴量の検出
画像を適当な大きさの複数のブロックに分割して、更に、ブロックを中心付近に含み、当該ブロックより大きな特徴抽出領域からテクスチャ特徴量を検出して、そのテクスチャ特徴量を当該ブロックのテクスチャ特徴量として使用する。ブロックサイズより大きな特徴抽出領域からテクスチャ特徴量を抽出してブロック単位で領域を分割するのに使用可能なテクスチャ特徴量を検討したところ、画素の濃度のヒストグラムが使用可能なテクスチャチャ特徴量の一つであることが本発明者による実験で確認できた。したがって、本実施の形態では、テクスチャ特徴量の一例として特徴抽出領域内の画素の濃度のヒストグラムを使用する。
(3)テクスチャ分類
複数のブロックに対応する複数の特徴抽出領域から検出された複数のテクスチャ特徴量を所定の基準にしたがって複数のクラスタに分類する。このように複数のテクスチャ特徴量を複数のクラスタに分類することを、以下では複数のブロックを複数のクラスタに分類するということがある。なお、このテクスチャの分類処理は一般にはクラスタリングとも呼ばれる。ブロックサイズより大きな特徴抽出領域からテクスチャ特徴量を抽出してブロック単位で領域を分割するのに使用可能なテクスチャ特徴量の分類方法を検討したところ、一例として、クラスタ間の距離により分類する方法が使用可能であることが本発明者による実験で確認できた。したがって、本実施の形態では、クラスタ間の距離によりテクスチャを分類する方法を使用する。この方法では、最初に異なるブロックのテクスチャ特徴量をそれぞれ異なるクラスタに割り当て、その後クラスタ間の距離を計算し、異なるクラスタ組のうち最短の距離にある一組のクラスタを併合することを繰り返す。
クラスタ間の距離による分類に当たっては、クラスタ間の距離の最大値を使用する最長距離法に基づく分類を使用する。ここで最長距離法による分類は、二つのクラスタに属する複数のテクスチャ特徴量の異なる組合せに対応してそれぞれの組合せの間の距離である複数の距離を計算し、それらの距離のうちの最長の距離を当該二つのクラスタ間の距離とするものである。最短距離法は稠密なクラスタを生成するという好ましい特徴がある。また、テクスチャ特徴量の分類にあっては、上記のように、クラスタの異なる組合せの間の距離のうち最短の距離にある一組のクラスタを併合するが、最短の距離であっても、その距離が利用者が指定した閾値以上である場合には、その一組のクラスタは併合しないようにする。これにより、利用者が希望する距離の閾値以内にある一組のクラスタが併合され、そうでないクラスタの組は併合されないように、併合されるクラスタ間の距離を制限できる。
特許文献2では、従来技術にしたがってブロックを特徴抽出領域として使用する場合において、クラスタリングに使用する距離として、テクスチャ特徴量として濃度ヒストグラムを使用する場合には、二つのブロックに対する二つの濃度ヒストグラムの各濃度における頻度差の絶対値の総和で定義した距離を使用できることが同じ発明者により提案されている。本実施の形態においても実験したところ、同じようにクラスタ間の距離を定義して良好な領域分割結果を得られることが本発明者による実験で判明したので、この距離によるテクスチャ分類方法を本実施の形態でも使用する。このような距離を用いて複数のブロックに対する複数のテクスチャ特徴量を複数のクラスタに分類できる。分類の完了後に、各ブロックに対するテクスチャ特徴量が所属すると決定されたクラスタの番号を当該ブロックに割り当てる。この結果、テクスチャ特徴量により複数のブロックをクラスタに分類したことになる。
(4)領域分割
同じクラスタに属し、互いに隣接している複数のブロックを一つの領域として抽出することにより、解析対象画像を複数の領域に分割する。
以下では、以上の処理を実行して解析対象画像をテクスチャに基づいて複数の領域に分割可能な装置、プログラム、方法の詳細を説明する。
図1は、本発明に係る画像を領域分割可能な装置の一つの実施形態の概略ブロック図である。符号1は、上記装置の一つの実施の形態の全体を指す。本装置1は、例えばパソコン又はワークステーションにより実現される処理装置10と、メインメモリとして使用されるRAM(ランダムアクセスメモリ)(図示せず)及び磁気ディスク記憶装置のような補助記憶装置(図示せず)とを含む記憶装置20と、入出力装置30とを備えている。入出力装置30は、キーボード及びマウス等のポインティングデバイスを含む入力装置31と、CRTディスプレイ装置等の表示装置32又はプリンタ33などの出力装置を備えている。入力装置31はパラメータの入力やコマンドの起動などに使われる。表示装置32又はプリンタ33は、テクスチャ解析の対象とする画像、当該画像から抽出された複数のテクスチャを複数のクラスタに分類して得られる分類結果データや領域分割結果データなどの表示又は印字に使われる。記憶装置20内にデータが記憶されるときに、当該データが図示しないRAMと図示しない補助記憶装置のいずれに記憶されるかは、あらかじめ当該データ毎に決められている。
処理装置10には、画像を分割可能なプログラム40が組み込まれている。プログラム40は、処理条件設定部100と、テクスチャ特徴量検出部200と、テクスチャ分類部300と、領域分割部400という複数のモジュールとを含む。これらのモジュールは、ここに列挙した順に実行される。テクスチャ分類部300は、初期値設定部500と、最短距離クラスタ組検出部600と、クラスタ併合部700と、クラスタ番号付与部800とを含んでいる。領域分割部400は、領域境界垂直方向部分検出部900と領域境界水平方向部分検出部950とを含んでいて、これらのモジュールを順次実行する。
処理装置10は、プログラム40内のそれぞれのモジュールが実行されたときに、処理条件を設定する機能ブロック、テクスチャ特徴量を検出する機能ブロック、テクスチャを分類する機能ブロック、画像を複数の領域に分割する機能ブロックという複数の機能ブロックとして動作する。したがって、処理装置10とプログラム40のこれらのモジュールにより、それぞれのモジュールに対応する複数の機能ブロックが実現されることになる。したがって、処理装置10と、記憶装置20と、入出力装置30と、処理条件設定部100、テクスチャ特徴量検出部200、テクスチャ分類部300、領域分割部400は、本発明に係る、画像を領域に分割可能な装置の一つの実施の形態を実現することになる。
プログラム40は、本発明に係る、画像を分割可能なプログラムの一つの実施の形態を実現するものであり、記録媒体に記録してあるいはネットワークを介して記憶装置20に記憶され処理装置10で実行される。画像を分割可能なプログラム40は、記録媒体に記録されて又はネットワークを介して販売可能である。処理装置10が画像を分割可能なプログラム40を実行して画像を分割する手順は、本発明に係る画像分割方法の一つの実施の形態を実現する。
記憶装置20には、解析対象画像の画像データ21があらかじめ記憶される。以下では断らない限り、画像データ21は、白黒の多値画像(グレイスケール画像)のデータと仮定する。処理条件データ22の大部分は、プログラム40の開始時に利用者により入力されるデータである。テクスチャ特徴量データ23、テクスチャ分類結果データ24、領域分割結果データ25は、プログラム40の実行時に生成され、記憶装置20に記憶される。テクスチャ分類結果データ24は、クラスタ別メンバーブロックデータ24A、クラスタ別メンバー数データ24B、クラスタ間距離データ24Cとを含んでいる。領域分割結果データ25は、ブロック別クラスタ番号データ25A、領域分割済み画像データ25Bとを含んでいる。
図2(a)は、画像を複数の領域に分割するときに使用される複数のブロックと複数の特徴抽出領域の概略を説明するための図である。図において、21Aは、画像データ21で表される解析対象画像を表し、21Bは、この画像を分割して得られる同じ大きさのブロックを表す。典型的には、各ブロックは正方形であるが、他の形状、例えば矩形でもよいが、正方形のほうが矩形よりは望ましい。21Nは、各ブロック、例えば21Bに対して定義される特徴抽出領域の一つである。ブロック群の左側に垂直方向に並べて記載された数値0、1、2、…は、その右側にある複数のブロックの行番号の例を示す。ブロック群の上側に水平方向に並べて記載された数値0、1、2、…は、その下にある複数のブロックの列番号の例を示す。ブロック内に記載された数値0、1、2…は、全ブロックに付与された一連のブロック番号のうちの当該ブロックに割り当てられたブロックの通し番号(以下、ブロック番号と呼ぶことがある)の例を示す。後に説明する処理において、各ブロックを識別する情報として、これらの行番号と列番号の組を用いる場合とブロック番号を用いる場合とがある。
本発明では、特徴抽出領域21Nは、対応するブロックのサイズとは独立に決定可能である。すなわち、特徴抽出領域21Nのサイズは、対応するブロック21Bより大きく、当該ブロック21Bを中心付近に含むように決定される。特徴抽出領域21Nの大きさは、抽出されるテクスチャ特徴量の統計的な信頼度が所望の値となるように、利用者により試行錯誤的に決定される。例えば、本実施の形態において、見本として使用する画像あるいは実際にテクスチャにしたがって複数の領域に分割しようとする画像に対して同じブロックサイズのもとで、特徴抽出領域21Nのサイズをいろいろ変えてテクスチャ分類と領域分割を実行し、得られたテクスチャ分類結果と領域分割の結果を判断し、テクスチャ分類結果と領域分割結果が適切であると判断されるサイズを特徴抽出領域21Nのサイズに使用するようにすることができる。
ブロックのサイズも、領域分割の結果得られる複数の領域の境界位置の分解能が適切となるように、利用者により試行錯誤的に決定される。例えば、本実施の形態において、上記のようにして特徴抽出領域21Nのサイズを決定した状態で、ブロックのサイズをいろいろ変えて、得られる分割領域の境界位置の分解能が十分であるように、すなわち、境界のがたがたが問題に思われない程度となるように、ブロックのサイズを決める。画像の領域分割の結果得られる複数の領域の境界位置の分解能は、ブロックサイズが小さいほどよい、すなわち、ブロックサイズが小さいほど領域の境界のがたがたは小さい。したがって、領域の境界位置の分解能の点ではブロックサイズが小さいほどよい。しかし、ブロックサイズが小さければ、同じ画像を分割して得られるブロックの総数が増え、それらのブロックに関するデータ処理量及び処理すべきデータ量が増大するという問題がある。
したがって、処理装置10におけるデータ処理量、データ処理に要する時間あるいは処理すべきデータの量からみて、ブロックサイズを余りに小さくすることが望ましくない場合があり得る。そのような場合には、領域分割の結果得られる領域の境界位置の分解能(境界位置のがたがたの少なさ)が十分であると考えられるときは、それ以上にブロックサイズを小さくしないほうがよい。しかし、処理装置10における処理量、処理に要する時間あるいは処理すべきデータの量からみてもブロックサイズを小さくしても特に問題が生じない場合には、ブロックサイズを小さくすることが望ましく、後に説明するように、極端にはブロックを1画素を含む領域にしてもよい。
同図(b)は、解析対象画像21Aとブロック21Bと特徴抽出領域21Nとの関係をより詳細に示すための図である。図において、一番外側にある正方形領域HXYZは、解析対象画像21Aの画素が存在する領域の例を示し、正方形領域ABCDは、解析対象画像21A内で最も左上に位置するブロック21Bの例である。正方形HIJKは、当該ブロック21Bに対応する特徴抽出領域21Nの例である。解析対象画像21Aの全体を表す正方形領域HXYZは、ここでは55×55画素からなり、正方形領域ABCDで表されるブロック21Bは、4画素×4画素からなり、正方形領域HIJKで表される特徴抽出領域21Nは、16画素×16画素からなると仮定している。以下では、正方形のブロック、正方形の特徴抽出領域等の正方形の領域のサイズとして、簡単化のためにその正方形の一辺を構成する画素の数を使用することがある。今の例では、解析対象画像21A、ブロック21B、特徴抽出領域21Nのそれぞれのサイズは、55画素、4画素、16画素である。これらのサイズは一例であり、変更してもよいことは言うまでもない。
今の例では、ブロック21Bと特徴抽出領域21Nのサイズはいずれも偶数であり、サイズの偶奇が同じであるので、ブロック21Bは、特徴抽出領域21Nの中心に位置することができる。図においては、左上隅の正方形領域ABCDで表されているブロック21Bは、対応する左上隅の正方形領域HIJKで表されている特徴抽出領域21Nの中心に位置している。今の例では、各ブロックのサイズは4画素と仮定しているので、複数のブロックは、正方形領域ABCDを4画素ずつ図の水平方向又は垂直方向に移動した位置に設けられる。
各ブロック21Bに対応して、正方形領域HIJKと同じ大きさの図示しない特徴抽出領域21Nが使用される。各ブロック21Bのサイズは4画素であるので、各ブロックに対する特徴抽出領域21Nは、4画素ずつ図の水平方向又は垂直方向に移動した位置に設けられる。すなわち、隣接する特徴抽出領域21Nは4画素分の行又は列の部分だけ互いに重複している。領域HMRWが特徴抽出領域21Nが存在しうる領域である。
特徴抽出領域21Nは、解析対象画像21A内に位置しなければならない。特徴抽出領域21Nの存在領域HMRWは、特徴抽出領域HIJKを解析対象画像21Aの範囲内でブロックのサイズである4画素ずつ図の水平方向又は垂直方向に移動した位置に設けられる。したがって、解析対象画像21Aの一部には特徴抽出領域が設けられない。図の例では、正方形領域HMRW以外の周辺の領域MXYZWRは、解析対象画像21Aに含まれているが、本実施の形態でのテクスチャ解析には使用されない領域である。
各特徴抽出領域21Nの中心位置に対応するブロックが設けられる。領域AEFGが、ブロック21Bが存在しうる領域を示している。領域AEFGは、今の場合正方形領域である。領域AEFG内の小さい正方形領域は、それぞれブロックを表す。解析対象画像21Aの画素数が55×55画素の場合、図に示すように、ブロック番号#0から#99までの100個のブロックが生成される。このように、ブロックが存在する領域AEFGは、特徴抽出領域21Nが存在しうる正方形領域HMRWの内側に位置する。
領域HMRW内の左下角の正方形領域LMN0は、解析対象画像21A内で最も左下に位置し得る特徴抽出領域を示し、領域AEFG内の左下角のブロック#90が、この特徴抽出領域21Nに対応するブロックである。同様に、領域HMRW内の右下角の正方形領域PQRSは、解析対象画像21A内で最も右下に位置し得る特徴抽出領域を示し、領域AEFG内の右下角のブロック#99が、この特徴抽出領域21Nが対応するブロックである。領域HMRW内の右上角の正方形領域TUVWは、解析対象画像21A内で最も右上に位置し得る特徴抽出領域を示し、領域AEFG内の右上角のブロック21Bがこの特徴抽出領域21Nに対応するブロックである。
図に示すように、左上の特徴抽出領域21Nの左上角の頂点にある画素Hの位置を原点とし、図の垂直下方向と水平右方向にx軸とy軸を設定する。解析対象画像21Aである領域HXYZの頂点の座標(x,y)は、それぞれH(0,0)、X(54,0)、Y(54,54)、Z(0,54)であるとする。特徴抽出領域が存在する正方形領域HMRWの頂点の座標は、H(0,0)、M(51,0)、0(51,51)、W(0,51)である。ブロック#0に対する特徴抽出領域HIJKの頂点の座標は、H(0,0)、I(15,0)、J(15,15)、K(0,15)である。この特徴抽出領域HIJKに含まれたブロック#0の頂点の座標は、A(6,6)、B(9,6)、C(9,9)、D(6,9)である。複数のブロックが形成される正方形領域AEFGの頂点の座標は、A(6,6)、E(46,6)、F(46,46)、G(6,46)である。すなわち、ブロック#0は、左上角の特徴抽出領域HIJKから、x、y座標がそれぞれ6画素分x軸方向とy軸方向に移動した位置にある。この位置の移動量は、特徴抽出領域21Nのサイズ16とブロック21Bのサイズ4との差の半分に等しい。
図に示すように、ブロックの行数Row、列数Colはともに10である。ブロックの行番号iBlkと列番号jBlkは、ともに0からそれぞれ(ブロックの行数Row)−1と(ブロックの列数Col)−1までの値を取りうる。ブロックの総数Nbはブロックの列数Col×行数Rowにより与えられる。ブロック番号Ibは、値0〜Nb−1までの値を持つことになる。
一般に、画像は矩形である場合もあるので、画像の縦方向の画素数と横方向の画素数をそれぞれNx、Nyとし、ブロックと特徴抽出領域はいずれも正方形とし、それぞれのサイズをbSize、nSizeとしたときに、当該画像に形成されるブロックの行数Rowと列数Colは、以下のとおりである。
Row=[(Nx−Δ)/bSize] (1)
Col=[(Ny−Δ)/bSize] (2)
ここで、Δ=nSize−bSize (3)
記号[ ]は、その中の値を超えない整数を意味する。式3から分かるように、記号Δは特徴抽出領域のサイズとブロックサイズとのサイズ差である。
図2(b)の例では、Nx=Ny=55、nSize=16、bSize=4であるので、サイズ差Δ=12であり、ブロックの行数Row、列数Colはいずれも10になる。ブロック番号Ibとブロックの行番号iBlkと列番号jBlkとの間に次式4の関係がある。
Ib=iBlk×Col+jBlk (4)
画像分割可能なプログラム40は、解析対象画像21Aを複数のブロック21Bに分割し、各ブロック21Bに対応する、当該ブロックより大きな特徴抽出領域21Nの画像からテクスチャ特徴量を抽出し、複数のブロック21Bに対して抽出された複数のテクスチャ特徴量を分類して複数のクラスタを決定し、前記複数のブロック21Bを、同じクラスタに属し、かつ隣接するブロックを連結して一つの領域を生成することにより、前記画像を複数の領域に分割するものである。
図1に戻り、プログラム40は、起動されると処理条件設定部100を起動する。
図3(a)は、処理条件設定部100の処理の一例を示す概略フローチャートである。処理条件設定部100は、起動されると、まず、画像データ21(図1)で示される解析対象画像の縦と横のサイズNx、Nyを判別する(ステップS101)。ブロックサイズbSizeを利用者に入力させる(ステップS102)。更に、特徴抽出領域のサイズnSizeを利用者に入力させる(ステップS103)。更に、テクスチャの分類に使用する距離の閾値Tを利用者に入力させる(ステップS104)。閾値Tは後に説明する。更に、式3に従いサイズ差Δを計算する(ステップS105)。更に、式1、2に従いブロックの行数Rowと列数Colを計算する(ステップS106)。
以上の処理により得られたデータを処理条件データ22として記憶装置20に記憶し(ステップS107)、処理条件設定部100の処理が終了する。なお、以下では、解析対象画像21A上の原点の位置として、図2(b)に例示したように、解析対象画像21Aの左上角の画素の位置を使用する。他の位置を原点位置にしてもよく、また、処理条件設定部100により、処理条件の一つとして原点位置を利用者に入力させてもよい。
同図(b)は、処理条件データ22の例を示す図である。処理条件データ22には、一例として、解析対象画像の縦サイズNx(22A)、横サイズNy(22B)、ブロックサイズbSize(22C)、特徴抽出領域サイズnSize(22D)、距離の閾値T(22E)、サイズ差Δ(22F)、ブロック行数Row(22G)、ブロック列数Col(22H)が含まれる。
図1に戻り、プログラム40は、処理条件設定部100の処理が終了すると、テクスチャ特徴量検出部200を起動する。
図4(a)は、テクスチャ特徴量検出部200の処理の一例を示す概略フローチャートである。テクスチャ特徴量検出部200は、各ブロックに対応する特徴抽出領域からテクスチャ特徴量を検出するものである。以下では、テクスチャ特徴量検出部200は、各特徴抽出領域のテクスチャ特徴量の例として濃度ヒストグラムを検出するものとする。同図(b)は、テクスチャ特徴量検出部200により生成され、記憶装置20に記憶されるテクスチャ特徴量データ23としての濃度ヒストグラムデータの例を示す図である。以下では、この濃度ヒストグラムデータも濃度ヒストグラムデータ23と呼ぶことがある。このデータは、複数のブロックにそれぞれ対応する複数の特徴抽出領域に関する複数の濃度ヒストグラムデータを含むものである。具体的には、このデータ23として、例えば、ブロックの行番号iBlk、列番号jBlk、濃度gをインデックスとする3次元配列データであるhistgram[iBlk][jBlk][g]を使用する。その配列の要素[iBlk][jBlk][g]には、行番号iBlk、列番号jBlkのブロックに対応する特徴抽出領域での濃度gの画素の発生頻度が格納される。濃度ヒストグラムデータhistgramの全要素の初期値は0である。
図4(a)において、テクスチャ特徴量検出部200は、4つのループから構成されている。すなわち、ステップS201〜S205を含む変数iBlkに関する第1のループと、ステップS205〜S208を含む変数jBlkに関する第2のループと、ステップS208〜S211を含む変数iに関する第3のループと、ステップS211〜S214を含む変数jに関する第4のループである。第1のループは複数のブロックの行を順次選択する処理を行う。第2のループは、第1のループで一つの行が選択されるごとに複数のブロック列を順次選択する処理を行う。こうして、第1、第2のループにより選択されたブロック行と列の組合せにしたがって解析対象画像21A内の全ブロックが順次選択される。
第3のループは、第1、第2のループでいずれかのブロックが選択されるごとに当該選択されたブロックに対応する特徴抽出領域内の複数の画素行を順次選択する処理を行う。第4のループは、第3のループで行が選択されるごとに、複数の画素列を順次選択する。こうして、第3、第4ループにより、選択された画素行と列の組合せにしたがって、特徴抽出領域内の全画素を順次選択される。更に、第4のループでは、選択された画素の画像データを読み出し、その濃度に基づき濃度ヒストグラムデータ23を更新する処理を実行する。以下、これらの処理の詳細を説明する。
第1のループでは、ステップS201で変数であるブロックの行番号iBlkを最小値0に設定する。つぎにステップS202で、ブロックの行番号iBlkがブロック行数Rowより小さいか否かが判定される。今の仮定のように、ブロックの行番号iBlkがブロック行数Rowより小さいときには、処理はステップS204に進む。ステップS204では、変数である列番号jBlkを最小値0に設定する。こうして、最初にブロックとして座標(iBlk,jBlk)が(0,0)であるブロックが選択される。つぎにステップS205では、ブロックの列番号jBlkがブロック列数Colより小さいか否かが判定され、今の仮定のようにブロックの列番号jBlkがブロック列数Colより小さいときには、処理は第2のループに移る。
第2のループでは、まずステップS207により、変数iを初期値0に設定する。ここで変数iは、図2(b)に例示したように、それぞれ注目しているブロックに対応する特徴抽出領域内の画素の垂直方向(x軸方向)の座標を表す変数であり、値0から始まり(特徴抽出領域のサイズnSize)−1まで変化する。ステップS208では、i座標が特徴抽出領域サイズnSizeより小さいか否かが判定され、今の仮定のようにi座標が特徴抽出領域サイズnSizeより小さいときには、処理は第3ループに進む。
第3ループでは、まずステップS210において、変数jが最小値0に設定される。ここで、変数jは、図2(b)に例示したように、処理中のブロックに対応する特徴抽出領域内の画素の水平方向(y軸方向)の座標を表す変数であり、値0から始まり(特徴抽出領域のサイズnSize)−1まで変化する。こうして、ステップS207とS210において、処理中のブロックに対する特徴抽出領域内の画素のうち座標(i,j)、今の例では座標(0,0)の画素が選択されることになる。その後、ステップS211でj座標が特徴抽出領域サイズnSizeより小さいか否かが判定され、今の仮定のようにj座標が特徴抽出領域サイズnSizeより小さいときには、処理は第4ループに移る。
第4ループでは、まずステップS213において選択された画素の濃度データが読み出される。読み出される画素の特徴抽出領域内の座標(i,j)に対応する解析対象画像21A上の画素の座標(xi,yi)は、次式5、6により与えられる。
xi=iBlk*bSize+i (5)
yj=jBlk*bSize+j (6)
第4のループ内のステップS213では、選択された画素の画像データimage[iBlk*bSize+i][jBlk*bSize+j]を画像データ21から読み出し、その濃度データの値を濃度値gに設定する。ステップS214では、読み出された濃度データの値gに対する濃度ヒストグラムデータhistgram(23)内の要素histgram[iBlk][jBlk][g]の値を1だけ増大する。こうして、第1、第2のループで選択されたブロック内の画素のうち第3、第4のループで選ばれた座標(i,j)の画素の濃度により、濃度ヒストグラムデータhistgram(23)が更新される。
第4のループでは、その後ステップS212でj座標が1だけ増大され、ステップS211で増大後のj座標が特徴抽出領域サイズnSizeより小さいか否かが再度判定され、判定の結果、増大後のj座標が特徴抽出領域サイズnSizeより小さいときには、ステップS213、S214、S212が繰り返される。こうして、特徴抽出領域内の同じ行に属する複数の画素がy座標順に順次選択され、それぞれの画像データに基づいて、ヒストグラムデータhistgramが更新される。ステップS212でのj座標の増大後に、ステップS211により、増大後のj座標が特徴抽出領域サイズnSizeより小さくない、すなわち、そのサイズに達したと判定されたとき、第4のループの処理は終了し、処理は第3のループに戻る。
第3のループでは、ステップS209でi座標を1だけ増やし、増大後のi座標が特徴抽出領域サイズnSizeより小さいか否かがステップS208で判定され、増大後のi座標が特徴抽出領域サイズnSizeより小さいと判定されたときには、ステップS210で再度j座標を値0に設定する。ステップS211で、増大後のj座標が特徴抽出領域サイズnSizeより小さいか否かが判定され、小さいときには、処理は再度第4のループに移る。
第4のループでは、既に述べたようにしてj座標を初期値0から1ずつ増やしてy軸方向(j方向)の画素の選択処理及び濃度ヒストグラムデータhistgram(23)の更新を繰り返す。こうして第3のループで選択された次のi座標の行に属する複数の画素が処理される。
以上のように、第3、第4のループが繰り返され、その後、第3のループに戻ってステップS209でi座標が1だけ増大された後のステップS208で、増大後のi座標が特徴抽出領域サイズnSizeより小さくない、すなわち、特徴抽出領域サイズnSizeに達したと判定されたときには、第3のループが終了し、処理は第2のループに戻る。
第2のループでは、ステップS206において、ブロックの列番号jBlkを1だけ増大し、先に述べたようにして列方向に隣接する次のブロックが選択され、当該選択された次のブロックに対応する特徴抽出領域に対して第3、第4のループによる画素の選択とヒストグラムデータhistgramの更新が、既に説明したのと同じように行われる。
第3、第4のループによる処理が終了し、処理が第2ループに戻り、第2のループにおいて、ステップS206でブロックの列番号jBlkを1だけ増大した後、ステップS205において、増大後のブロックの列番号jBlkがブロック列数Colより小さくない、すなわち、ブロック列数Colに達したと判定されたときには、第2のループが終了し、処理は第1のループに戻る。第1のループでは、ステップS203において、ブロックの行番号iBlkを1だけ増大した後、ステップS202において、増大後のブロックの行番号iBlkがブロック行数Rowより小さいと判定されたときには、処理は第2のループに移り、上記増大後のブロック行番号に対応する、次の行に属する複数のブロックが第2のループで順次選択され、それぞれの選択されたブロックについて既に説明したように第3、第4のループの処理が実行される。
上記次の行に属する複数のブロックに対する第2、第3、第4のループの処理が終了し、処理が第1のループに戻り、以上と同様に第1から第4のループの処理が繰り返される。以上の繰り返し時に第1のループのステップS203によりブロックの行番号iBlkを1だけ増大し、ステップS202で、その増大後の行番号iBlkの値がブロック行数Rowより小さくない、すなわち、ブロック行数Rowに達したと判別されたときに、第1のループの処理が終了し、テクスチャ特徴量検出部200の処理も終了する。
このように、第1、第2のループにより異なる行番号iBlkと列番号jBlkを有する複数のブロックが順次選択され、選択されたブロックに対応する特徴抽出領域内の複数の画素が第3、第4のループにより順次選択され、当該選択された画素の濃度データの値gに応じて濃度ヒストグラムデータ histgram(23)が更新される。こうして、テクスチャ特徴量検出部200により、全ブロックに対して、それぞれに対応する特徴抽出領域内の画素の濃度ヒストグラムデータを有する濃度ヒストグラムデータ23が生成され、テクスチャ特徴量検出部200の処理が終了する。
図1に戻り、プログラム40は、テクスチャ特徴量検出部200の処理が終了すると、テクスチャ分類部300を起動する。
図5は、テクスチャ分類部300の処理の一例を示す概略フローチャートである。テクスチャ分類部300は、後に詳細を説明するように、初期値設定部500によりクラスタ別メンバーブロックデータ24A、クラスタ別メンバー数データ24B、クラスタ間距離データ24Cに初期値を設定する。つぎにステップS301で、最短距離クラスタ組更新フラグflagを初期値0にリセットする。初期値0は、最短距離にあるクラスタの組合せに変更が生じていないことを表す。その後、最短距離クラスタ組検出部600を後に説明するようにして実行して、最も近いクラスタの組を探索する。最短距離クラスタ組検出部600は、最短距離にある新たなクラスタの組が見つかると、最短距離クラスタ組更新フラグflagを値1にセットするようになっている。
その後、ステップS302において、最短距離クラスタ組更新フラグflagが値1であるか否かが判定され、値1である場合には、クラスタ併合部700が実行される。後に説明するように、クラスタ併合部700は、その新たな組のクラスタのそれぞれに属するブロックを一つのクラスタに属するように、それらのクラスタの組を同じクラスタに属するように併合する。その後、処理はステップS301に戻り、そのステップS301以降の処理が繰り返され、クラスタの併合が繰り返される。
クラスタの併合が繰り返された結果、最短距離クラスタ組検出部600により最短距離の新たなクラスタの組が見つからなくなると、最短距離クラスタ組検出部600は、最短距離クラスタ組更新フラグflagを値1に変更しないので、ステップS302において、最短距離クラスタ組更新フラグflagが値1でないと判定されることになる。その場合には、クラスタ番号付与部800が実行される。クラスタ番号付与部800は、各ブロックが属すると判断されたクラスタを識別するためのクラスタ識別情報を当該ブロック割り当てる。こうして、テクスチャ分類部300の処理が終了する。
図6はテクスチャ分類部300で生成されるいくつかのデータの例を示す図である。同図(a)は、クラスタ別メンバーブロックデータ24Aの例を示す図である。クラスタ別メンバーブロックデータ24Aは、各クラスタ別にそのクラスタに属する一つ又は複数のブロックの番号を含むデータである。本実施の形態では、そのクラスタ別メンバーブロックデータ24Aのより具体的な例として、インデックスIc、Ijを有する2次元配列データSet[Ic][Ij]を使用する。以下では、この配列をクラスタ別メンバーブロックデータと呼ぶことがある。インデックスIcとIjはいずれも0から(ブロックの総数Nb)−1に等しい値を取ることができるとする。インデックスIcはクラスタ番号を表し、インデックスIjは、各クラスタに属する複数のブロックの番号の一つを格納する配列要素の列番号であり、配列Setの要素Set[Ic][Ij]は、クラスタ番号Icのクラスタに属する複数のブロックのうちIj番目のブロックの番号を格納するのに使用される。後に説明するように、本実施の形態では、同じクラスタに属する複数のブロックの番号が、データSet内の、クラスタ番号に対応する行に属する複数の配列要素に順次格納される。したがって、あるクラスタに属する全てのブロックの番号が配列Set内の、そのクラスタの番号に対応する一つの行に属する複数の要素に格納された場合、それらの要素の後続の要素にはブロック番号は含まれていない。
同図(b)は、クラスタ別メンバー数データ24Bの例を示す図である。クラスタ別メンバー数データ24Bは、クラスタ別に各クラスタに属するブロックの数を含むデータである。本実施の形態では、クラスタ別メンバー数データ24Bのより具体的な例として、インデックスIcを有する1次元配列n[Ic]を使用する。以下では、この配列をクラスタ別メンバー数データと呼ぶことがある。インデックスIcはクラスタ番号を表す。配列nの各要素n[Ic]は、クラスタ番号Icのクラスタに属するブロックの数を格納するのに使用される。
同図(c)は、クラスタ間距離データ24Cの例を示す図である。クラスタ間距離データ24Cは、異なる組合せの一対のクラスタ間の距離データを含むものである。本実施の形態では、そのデータ24Cのより具体的な例として、インデックスIci、Icjを有する2次元配列d[Ici][Icj]を使用する。以下では、この配列をクラスタ間距離データと呼ぶことがある。インデックスIci、Icjはクラスタ番号を表す。配列dの要素d[Ici][Icj]は、クラスタ番号Iciのクラスタとクラスタ番号Icjのクラスタとの間の距離を含んでいる。
図7は、初期値設定部500の処理の一例を示す概略フローチャートである。まず、ステップS501では、変数であるブロック番号Ibを初期値0に設定する。ステップS502では、ブロック番号Ibがブロック総数Nbより小さいか否かを判定し、小さいときには、クラスタ別メンバーブロックデータSet[Ic][Ij](24A)(図6(a))内の、ブロック番号Ibに対応する行の先頭の要素Set[Ib][0](24A)にそのブロック番号Ibを格納する。すなわち、その行の先頭の要素にその行の番号と同じ番号のブロック番号が格納されることになる。つまり、ブロック番号Ibのブロックは、最初は、そのブロック番号と同じ番号のクラスタに割り当てられる。したがって、クラスタの総数は、最初はブロックの総数Nbと同じである。なお、各クラスタの番号は、ここではそれぞれに属する複数のテクスチャ特徴量の内容とは関係なく決められている。
ステップS504では、ステップS503でのクラスタの割り当てに対応して、クラスタ別メンバー数データn[Ic](24B)(図6(b))内の、ブロック番号Ibに等しいクラスタ番号Icに対する要素n[Ib]の値を1にする。ステップS505では、ブロック番号Ibを1だけ増大し、その後ステップS502〜S505の処理を繰り返す。繰り返しはブロック番号Ibが(ブロック総数Nb)−1になるまで実行される。その後、ブロック番号Ibが、ステップS505で1だけ増大され、ステップS502でブロック総数Nbより小さくないと判定されると、処理はステップS506に移る。これまでの処理により、クラスタ別メンバーブロックデータSet、クラスタ別メンバー数データnに初期値が設定されたことになる。
ステップS506では、変数であるクラスタ番号Iciが値0に設定され、ステップS507ではクラスタ番号Iciがブロック総数Nbより小さいか否かを判定し、小さいときには、ステップS508で、変数である他のクラスタ番号Icjが値0に設定される。ステップS510では、クラスタ番号Icjがブロック総数Nbより小さいか否かを判定し、小さいときには、ステップS511で、クラスタ間の距離を計算するクラスタ間距離計算関数DistによりクラスタIciとクラスタIcjとの間の距離Dist(Ici,Icj)を計算し、得られた距離を、クラスタ間距離データd(図6(c))内の行番号がIciで列番号がIcjである要素d[Ici][Icj]に格納する。
今の段階では、番号Icのクラスタには、同じ値のブロック番号を有するブロックが属している。したがって、ステップS511では、クラスタ番号Iciと同じ値のブロック番号のブロックに対するテクスチャ特徴量とクラスタ番号Icjと同じ値のブロック番号のブロックに対するテクスチャ特徴量との間の距離を計算することになる。二つのテクスチャ特徴量間の距離は、既に説明したように、本実施の形態では、二つのテクスチャ特徴量としての二つの濃度ヒストグラムの各濃度における頻度差の絶対値の総和を使用する。したがって、クラスタ間距離計算関数Dist(Ici,Icj)は、二つのテクスチャ特徴量に対してそのように定義された距離を計算するものであればよい。なお、一般には各クラスタに複数のブロックに対応するテクスチャ特徴量が含まれる。その場合におけるクラスタ間の距離は、既に説明したように最長距離法が使用される。すなわち、二つのクラスタに属する複数のテクスチャ特徴量の異なる組合せに対応してそれぞれの組合せの間の距離である複数の距離を計算し、それらの距離のうちの最長の距離を当該二つのクラスタ間の距離とする。したがって、クラスタ間距離計算関数Dist(Ici,Icj)は、そのように複数のテクスチャ特徴量の組に対して距離を計算し、計算された複数の距離のうちの最大値を選択するものであればよい。
その後、ステップS512においてクラスタ番号Icjを1だけ増大し、ステップS510にて、増大後のクラスタ番号Icjがブロック総数Nbより小さいか否かを判定し、小さいときには、ステップS511、512が繰り返される。こうして、一つのクラスタIciと他の複数のクラスタIcjとの間の距離が順次計算され、クラスタ間距離データdの対応する要素に格納される。距離の計算はブロック総数Nbの数だけ繰り返される。
ステップS512によるクラスタ番号Icjの増大後の値がブロック総数Nbより小さくない、すなわち、Nbに達したとステップS510で判定されたときには、処理はステップS509に移る。そこでは、クラスタ番号Iciが1だけ増大され、ステップS507において、増大後のクラスタ番号Iciがブロック総数Nbより小さいかが判定され、小さいときには、ステップS508でクラスタ番号Icjが値0に再度設定され、先に述べた距離計算が、新たなクラスタ番号Iciのクラスタと他のクラスタ番号Icjのクラスタとの組に対して繰り返される。以上の繰り返しによりクラスタ間距離データd[Ici][Icj]に初期値が設定される。その後、ステップS509により値が1だけ増大された後に、ステップS507において、増大後のクラスタ番号Iciの値がブロック総数Nbより小さくない、すなわちNbに達したと判定されたときに、初期値設定部500の処理が終了し、処理はテクスチャ分類部300(図5)に戻る。なお、以上の処理から分かるように、初期値設定部500は、クラスタ番号Iciとクラスタ番号Icjとが同じ場合、すなわち同じクラスタ間の距離も計算するようになっている。この距離は、後に説明するように値0と計算されるが、この値は、後に述べるように今後の処理では使用されない。
図5において、テクスチャ分類部300は、初期値設定部500の処理が終了すると、ステップS301において最短距離クラスタ組更新フラグflagを初期値0に設定した後、最短距離クラスタ組検出部600を起動する。
図8(a)は最短距離クラスタ組検出部600の処理の一例を示す概略フローチャートである。同図(b)は、最短距離クラスタ組検出部600で変数として使用されるデータである最短距離クラスタ組データ24Dの例を示す図である。最短距離クラスタ組データ24Dには、全クラスタ間最短距離dMin(24D1)と、第1最短距離クラスタ番号IciMin(21D2)と第2最短距離クラスタ番号IcjMin(21D3)と、最短距離クラスタ組更新フラグflag(24D4)とを含んでいる。全クラスタ間最短距離dMin(24D1)は、最終的には全クラスタ間最短距離を表す変数であり、第1最短距離クラスタ番号IciMin(21D2)と第2最短距離クラスタ番号IcjMin(21D3)は、その全クラスタ間最短距離を有する一組のクラスタの番号である最短距離クラスタ番号を表す変数であり、最短距離クラスタ組更新フラグflag(24D4)は、既に説明したように、テクスチャ分類部300(図5)のステップS301において値0にリセットされる最短距離クラスタ組更新フラグである。
図8(a)において、ステップS601では、全クラスタ間最短距離dMinに十分大きい正の数bigNumを設定する。その後の処理は、ともに変数であるクラスタ番号Iciに関する第1のループとクラスタ番号Icjに関する第2のループからなる二重ループを含んでいる。以下ではクラスタ番号Iciのクラスタを簡単化のためにクラスタIciと呼ぶことがある。クラスタ番号Icjのクラスタについても同じである。更に他のクラスタ番号のクラスタについても同じである。
まず第1のループでは、ステップS602でクラスタ番号Iciを最小値0に設定する。ステップS603では、クラスタ番号Iciが(ブロック総数Nb)−1より小さいか否かを判定し、小さいときには、ステップS605で、変数である他のクラスタ番号Icjの値をIci+1にする。したがって、クラスタ番号Icjは値1からNb−1までの値を取る変数であり、かつ、常にIci<Icjの関係が保たれている。したがって、クラスタ番号Iciの取りうる値は0からNb−2になる。ステップS603で、クラスタ番号Iciが(ブロック総数Nb)−1より小さいか否かを判定しているのは、クラスタ番号Iciの取りうる最大値がNb−2であるからである。また、ステップS605より、クラスタ番号IciとIcjは同じ値となることはなく、したがって、同じクラスタ間の距離は使用されることはない。
ステップS606では、クラスタ番号Icjがブロック総数Nbより小さいか否かを判定する。クラスタ番号Icjは、初期値がIci+1であり、後に説明するように、処理の繰り返しごとに順次1ずつ増大されるので、Nb−1になるまでは、Nbより小さいと判定される。クラスタ番号Icjがブロック総数Nbより小さいと判定されたときには、処理は第2のループに移り、第2のループでは、ステップS608において、クラスタIciとクラスタIcjとの間の距離d[Ici][Icj]が距離の閾値Tより小さいか否かが判定される。閾値Tは、処理条件設定部100の実行時に利用者に入力させたものである。
閾値Tが小さいほど、クラスタ分類により得られるクラスタの総数は増え、逆に、閾値Tが大きいほど、クラスタ分類により得られるクラスタの総数は減る。利用者は、閾値Tを、例えば試行錯誤的に決定することができる、すなわち、ブロックサイズと対応する特徴抽出領域のサイズを試行錯誤的に決定したのと同じようにして決定することができる。例えば、既に述べたように、一定の閾値の元で、見本として使用する画像あるいは実際にテクスチャにしたがって複数の領域に分割しようとする画像に対して、ブロックサイズと特徴抽出領域のサイズを決定した後、決定されたブロックサイズと特徴抽出領域サイズとその画像とを用いて、閾値Tの値をいろいろ変えてテクスチャの分類と領域分割とを実行し、得られたテクスチャの分類結果と領域分割の結果を判断し、テクスチャの分類結果と領域分割結果が適切であると判断される閾値を距離の閾値Tに選ぶことができる。
ステップS609でクラスタIciとIcjとの間のクラスタ間距離d[Ici][Icj]が、距離の閾値Tより小さいと判定されたときには、クラスタ間距離d[Ici][Icj]が、全クラスタ間最短距離dMinより小さいか否かが判定される。全クラスタ間最短距離dMinには、ステップS601において、初期値として十分大きい正の数bigNumが設定されていて、ステップS601が最初に実行されたときには、Ici=0、Icj=1であるので、クラスタ間距離d[0][1]が変数dMinより小さいと判定される。
このようにクラスタ間距離d[Ici][Icj]が変数dMinより小さいと判定されたときには、番号IciとIcjのクラスタの組が、それまで見つかっていたクラスタ間最短距離より小さなクラスタ間の距離を与えるクラスタの組、すなわち、最短距離クラスタ組となる。こうして、ステップS610で、そのクラスタ間距離d[Ici][Icj]を全クラスタ間最短距離dMinに設定して全クラスタ間最短距離を更新する。更に、ステップS611において、最短距離クラスタ組のうち番号が小さいほうのクラスタの番号である第1の最短距離クラスタ番号IciMinという変数にクラスタ番号Iciを設定する。同様に、ステップS612において、最短距離クラスタ組のうち番号が大きいほうのクラスタの番号である第2の最短距離クラスタ番号IcjMinとう変数にクラスタ番号Icjを設定する。
その後、ステップS613において、最短距離クラスタ組が更新されたことを示すために、最短距離クラスタ組更新フラグflagを値1にセットする。以上の説明から分かるように、最短距離クラスタ組更新フラグflagが値1にセットされるのは、全クラスタ間最短距離dMinが更新されたときである。したがって、最短距離クラスタ組更新フラグflagは、全クラスタ間最短距離更新フラグであるとも考えることができる。
以上の処理のうち、ステップS608において、クラスタ間距離d[Ici][Icj]が閾値Tより小さくないと判定されたときには、クラスタIciとIcjは別のクラスタに属することになり、その後のステップS609以降の処理が実行されないで、処理はステップS607に移る。クラスタ間距離d[Ici][Icj]が閾値Tを超えた場合には、後に説明するクラスタの併合を行わないようにするためである。これにより、利用者が希望する距離の閾値以内にある一組のクラスタが併合され、そうでないクラスタの組は併合されないように、併合されるクラスタ間の距離を制限できるようになる。
また、ステップS609において、クラスタ間距離d[Ici][Icj]が全クラスタ間最短距離dMinより小さくないときにも、処理はステップS607に移る。このような場合には、言うまでもなく、処理中のクラスタIciとクラスタIcjの間の距離は、全クラスタ間で最短とはなり得ないからである。
ステップS607では、クラスタ番号Icjを1だけ増大して、ステップS606にて増大後のクラスタ番号Icjがブロック総数Nbより小さいかが判定され、小さいときにはS608以降の第2のループの処理が繰り返される。すなわち、同じクラスタ番号Iciとそれより大きなクラスタ番号を有する他のクラスタIcjとの間のクラスタ間の距離と閾値TとをステップS609で比較し、前者が後者より小さいときには、当該二つのクラスタ間の距離が全クラスタ間最短距離dMinとステップS609で比較され、前者が後者より小さいときに、全クラスタ間最短距離dMin、最短距離クラスタ番号IciMin、IcjMinが更新され、最短距離クラスタ組更新フラグflagが値1にセットされる。
以上の処理の結果、ステップS606により、クラスタ番号Icjがブロック総数Nbより小さくないと判定されたときには、第2のループの処理が終了し、処理は第1のループに戻り、第1のループでは、ステップS604において、クラスタ番号Iciを1だけ増大し、その後ステップS603にて、増大後のクラスタ番号Iciが(ブロック総数Nb)−1より小さいか否かが判定され、小さいときには、ステップS605、S606が繰り返される。こうして、次のクラスタ番号Iciとそれより大きな複数のクラスタIcjに関して、ステップS606、S608以降の第2のループが繰り返される。
このようにして、最終的には、値0からNb−2の各々を取るクラスタ番号Iciとそれより大きな複数の値を取るクラスタIcjとの全ての異なる組合せのうちで、クラスタ間の距離が、利用者が指定した閾値Tより小さく、かつ、それまで記憶されていた全クラスタ間最短距離dMinより小さな一組のクラスタIciとIcjが新たに検出される毎に、それらのクラスタ間の距離d[Ici][Icj]が新たな全クラスタ間最短距離dMinとして記憶され、更に、その組の二つのクラスタの番号が新たな最短距離クラスタ番号IciMin、IcjMinとして記憶され、最短距離クラスタ組更新フラグflagが値1にセットされる。しかし、このような新たなクラスタの組が一組も見つからなかった場合には、全クラスタ間最短距離dMin、最短距離クラスタ番号IciMin、IcjMinは更新されず、かつ最短距離クラスタ組更新フラグflagも0のままである。
以上のようにして最短距離クラスタ組検出部600の処理が終了すると、処理はテクスチャ分類部300(図5)に戻り、図5において、テクスチャ分類部300は、ステップS301において最短距離クラスタ組更新フラグflagの値が1か否かを判定し、1の場合には、クラスタ併合部700を起動する。
図9は、クラスタ併合部700の処理の一例を示す概略フローチャートである。クラスタ併合部700は、最短距離クラスタ組検出部600で検出された新たな最短距離クラスタ番号IciMin、IcjMinを有する、最短距離クラスタIciMinとIcjMinをそれらの一方に併合し、他方を消去する併合処理を行い、併合後のクラスタと他のクラスタとの間の距離を新たに計算し直すものである。
ステップS701からステップS710がクラスタ番号Icについての第1のループを形成している。まず、ステップS701で、変数であるクラスタ番号Icに初期値0を設定する。クラスタ番号Icの値は0から(ブロック総数Nb)−1まで取りうる。ステップS702で、クラスタ番号Icがブロック総数Nbより小さいか否かが判定され、ブロック総数Nbより小さいときには、ステップS704に進む。
ステップS704は、クラスタIcに所属するブロック数が0(空集合)であるか否かを判定するステップである。次のステップS705は、クラスタ番号Icが第1の最短距離クラスタ番号IciMinと一致するか否かを判定するステップである。次のステップS706は、クラスタ番号Icが第2の最短距離クラスタ番号IcjMinと一致するか否かを判定するステップである。これらのステップS704からステップS706のいずれかにおいて判定結果が肯定的であるときには、処理はステップS703に進み、クラスタ番号Icを1だけ増大し、ステップS702以降の処理を繰り返す。
第1のループが最初に実行されるときには、ステップS701により、クラスタ番号Icは0になっており、初期値設定部500により各クラスタに一つのブロックが割り当てられている状態であるので、ステップS704では、クラスタ0のブロック数n[0]は0ではないと判定される。なお、クラスタIcのブロック数n[Ic]が0になるのは、そのクラスタが後に他のクラスタに併合された場合である。したがって、今の仮定では、処理はステップS705に進む。クラスタ番号Icが第1の最短距離クラスタ番号IciMinと一致しないことが頻繁に生じるので、ステップS706では一致とは判定されないと仮定する。その場合、処理はステップS706に進む。そこでもクラスタ番号Icが第2の最短距離クラスタ番号IcjMinとも一致しないことも頻繁に生じるので、ステップS706では一致とは判定されないと仮定する。
そのような場合には、ステップS707からステップS710において二つの最短距離クラスタIciMinとIcjMinを一つのクラスタに併合する処理が実行される。本実施の形態ではそれらを併合した新たなクラスタを作るのではなく、二つの最短距離クラスタのうちクラスタ番号の大きい第2の最短距離クラスタIcjMinを番号が小さいほうの第1の最短距離クラスタIciMinに併合する。併合に先だって、ステップS707において、第1の最短距離クラスタIciMinとクラスタIcとの間の距離d[IciMin][Ic]と、第2の最短距離クラスタIcjMinとクラスタIcとの間の距離d[IcjMin][Ic]のうちの大きいほうを選んで、第1の最短距離クラスタIciMinとクラスタIcとの間の新たな距離d[IciMin][Ic]に設定する。この大きいほうの距離が、第1、第2の最短距離クラスタIciMinとIcjMinとを併合した後の、最短距離クラスタIciMinとクラスタIcとの間の距離d[IciMin][Ic]を表す。この際、ステップS707において上記二つの距離のうちの大きいほうの距離を使用するのは、本実施の形態におけるテクスチャの分類が最長距離法にしたがっているためである。
ステップS708においては、ステップS707で設定された第1の最短距離クラスタIciMinとクラスタIcとの間の新たな距離d[IciMin][Ic]を、そのままクラスタIcと新たな第1の最短距離クラスタIciMinとの間の新たな距離d[Ic][IciMin]とする。その後、ステップS709において、第2の最短距離クラスタIcjMinとクラスタIcとの距離d[IcjMin][Ic]は、もはや使用する必要はないので、距離データdから除去する目的で、その距離の値を十分大きい数bigNumに設定する。同様に、ステップS710において、クラスタIcと最短距離クラスタIcjMinとの距離d[Ic][IcjMin]の値も十分大きい数bigNumに設定する。
その後、ステップS703において、クラスタ番号Icを1だけ増大し、ステップS702以降を繰り返す。その結果、ステップS704、S705、S706のいずれかの判定において、判定結果が肯定的(Yes)となった場合には、そのステップ以降のステップは実行しないで、ステップS703に進み、ステップS702以降の処理が繰り返される。こうして、最短距離クラスタIciMin又はIcjMinと他の全てのクラスタとの間の距離及び他の全てのクラスタと最短距離クラスタIciMin又はとIcjMinとの間の距離が、併合後のクラスタIciMinとそのクラスタとの間の距離になるように更新される。
以上の処理の結果、ステップS702で、クラスタ番号Icがブロック総数Nbより小さくないと判定されるに至り、そのときには、第1のループの処理が終了し、処理はステップS711に移る。ステップS711では、第1、第2の最短距離クラスタIciMinとIcjMinとの間の距離d[IciMin][IcjMin]はもはや必要でないので、削除する目的で、十分大きい数bigNumに設定する。同様に、ステップS712において第2、第1の最短距離クラスタIcjMinとIciMinとの間の距離d[IcjMin][IciMin]を十分大きい数bigNumに設定する。
その後、変数である要素番号Ijに関する第2のループが実行される。ステップS713からステップS716が要素番号Ijについての第2のループを形成している。まず、ステップS713において、要素番号Ijを初期値0に設定する。要素番号Ijの値は、0から、併合される第2の最短距離クラスタIcjMinに属する(ブロック数n[IcjMin]−1)の値まで取れる。ステップS714において、要素番号Ijが、併合される第2の最短距離クラスタIcjMinに属するクラスタ別メンバーブロック数n[IcjMin]より小さいか否かが判定される。
要素番号Ijがそのメンバーブロック数より小さいと判定されたときには、ステップS715において、第2の最短距離クラスタIcjMinに属する複数のブロックのうち要素番号Ij番目のブロック番号を第1の最短距離クラスタIciMinに併合する。すなわち、クラスタ別メンバーブロックデータSet[Ic][Ij]のうち、第2の最短距離クラスタIcjMinに属する要素Set[IcjMin][Ij]に記憶されたブロック番号を、第1の最短距離クラスタIciMinに属するブロック番号を記憶している一つ又は複数の要素のうちの最後の要素Set[IciMin][n[IciMin]−1]の(Ij+1)個後の要素Set[IciMin][n[IciMin]+Ij]に格納する。その後、ステップS716で、要素番号Ijを1だけ増大し、ステップS714以降を繰り返す。こうして、第1の最短距離クラスタIciMinに属するブロック番号を記憶している一つ又は複数の要素のうちの最後の要素に続く要素に、併合される第2の最短距離クラスタIcjMinに属する一つ又は複数のブロックが格納される。こうして、第2の最短距離クラスタIcjMinに属していたブロックが第1の最短距離クラスタIcjMinに併合されたことになる。
二つのクラスタの併合に伴いクラスタ別メンバー数データnが更新される。すなわち、ステップS717において、元の第1の最短距離クラスタIciMinのメンバー数n[IciMin]と元の第2の最短距離クラスタIcjMinのメンバー数n[IcjMin]との和を新たな併合後のクラスタIciMinのメンバー数n[IciMin]に設定する。その後、ステップS718で元の第2の最短距離クラスタIcjMinのメンバー数n[IcjMin]の値を0にする。こうして、第1、第2の最短距離クラスタIciMinとIcjMinとの併合処理が終了してクラスタ併合部700の処理が終了し、処理はテクスチャ分類部300(図5)に戻る。
図5において、テクスチャ分類部300は、クラスタ併合部700の処理が終了すると、ステップS301で最短距離クラスタ組更新フラグflagの値を0にリセットする。その後、以上に述べたようにクラスタ併合後の複数のクラスタに対して最短距離クラスタ組検出部600が再度実行され、既に述べたように、利用者が指定した距離の閾値Tより小さく、かつ前に最短距離クラスタ組検出部600により検出された全クラスタ間最短距離dMinより小さい距離を有する新たなクラスタの組の検出を試みる。
検出が成功した場合には、最短距離クラスタ組検出部600により既に述べたように最短距離クラスタ組更新フラグflagが値1にセットされるので、ステップS302でそのフラグflagが値1にセットされていると判定され、クラスタ併合部700が再度実行される。以上の処理が繰り返された結果、最短距離クラスタ組検出部600が再度実行されても、利用者が指定した距離の閾値Tより小さく、かつ前に最短距離クラスタ組検出部600により検出された全クラスタ間最短距離dMinより小さい距離を有する新たなクラスタの組がもはや検出されなくなる。その場合には、最短距離クラスタ組検出部600が実行された後で、ステップS302において、最短距離クラスタ組更新フラグflagが値0のままであると判定される。その場合にはクラスタ番号付与部800が実行される。
図10(a)は、クラスタ番号付与部800の処理の一例を示す概略フローチャートである。同図(b)は、クラスタ番号付与部800で生成されるブロック別クラスタ番号データcluster(25A)の例を示す図である。図において、ブロック別クラスタ番号データcluster(25A)は、2次元配列データであり、行と列はそれぞれブロックの行番号iBlkと列番号jBlkに対応し、要素cluster[iBlk][jBlk]には、行番号iBlkと列番号jBlkを有するブロックが属するクラスタに対してクラスタ番号付与部800により決定される新クラスタ番号が格納される。すなわち、図2(b)の解析対象画像21A内の、ブロックが存在する領域AEFG内の複数のブロックに対応して、それぞれのブロックに対するクラスタ番号が格納される。
クラスタ番号付与部800は、クラスタ併合部700により全クラスタのそれぞれに属すると決定されたブロックに対して、各ブロックが属するクラスタの番号をそのブロックに付与するものである。図6(a)のクラスタ別メンバーブロックデータSetに関して説明したように、これまでの処理ではクラスタ番号はブロックの数だけ存在した。しかし、クラスタ併合部700(図9)によるクラスタの併合の結果、属するブロックがないクラスタ(空のクラスタ)が発生している。そこでクラスタ番号付与部800は、空でない複数のクラスタのみに対して新たな番号を決定し、それぞれのクラスタに属するブロックにこれらの新たなクラスタ番号を付与するようになっている。以下では、これまでの処理で使用されていたクラスタ番号を旧クラスタ番号と呼び、クラスタ番号付与部800が新たに決定する新クラスタ番号と区別することにする。なお、以下では、分かりやすさのために、新クラスタ番号は値1から始まると仮定する。
同図(a)において、クラスタ番号付与部800は、まずステップS801で、変数である新クラスタ番号Ickに初期値1を設定する。ここでは、新クラスタ番号Ickの最小値は1であるが、最大値はクラスタリングの結果により変わる。クラスタの最大数は、ブロックの総数Nbとなる可能性もあり、そのときにはクラスタ番号の最大値はNbになる。ステップS801の後は、新クラスタ番号Ickと旧クラスタ番号Iciについての二重のループが形成されている。ステップS802では、変数である旧クラスタ番号Iciを最小値0に設定する。旧クラスタ番号Iciは、ブロックの数と同じ数が使用されていたので、値0から(ブロック総数Nb)−1までの値を取り得る。
ステップS803で、旧クラスタ番号Iciが最大値Nbより小さいか否かが判定され、小さいときには、ステップS805で旧クラスタIciに属するブロック数n[Ici]が0より大きい(空集合でない)か否かを判定し、0より大きいときには、ステップS807において、クラスタ別メンバーブロックデータSet[Ici][Ij](24A)(図6(a))に対する列番号を表す変数Ijに初期値0を格納する。列番号Ijが取り得る最大値は(ブロック総数Nb)−1である。このクラスタ別メンバーブロックデータSet[Ici][Ij]24Aには、旧クラスタIcに属する複数のブロックの番号(通し番号)が旧クラスタ番号Iciに対応する行内の複数の要素に記憶されている。
ステップS808において、列番号Ijがクラスタ別メンバー数データnの要素n[Ici]の値より小さいか否かが判定され、小さいときには、ステップS810とS811において、クラスタ別メンバーブロックデータSet内の、クラスタ番号Iciの行に属し、列番号Ijの要素Set[Ici][Ij]に記憶されているブロック番号Ibを、対応するブロックに関する行番号iBlkと列番号jBlkに変換する。ここで、ステップS810における“/”は除算の商の演算子を表し、式4から分かるように、ブロックの行番号iBlkは、クラスタ別メンバーブロックデータSetの要素[Ici][Ij]に含まれているブロック番号Ibをブロック列数Col(図3(b))で割ったときの商により得られる。ステップS811における“%”は除算の余りの演算子を表し、ブロックの列番号jBlkは、同様に式4から分かるように、クラスタ別メンバーブロックデータSet内の同じ要素[Ici][Ij]に含まれているブロック番号Ibをブロック列数Col(図3(b))で割ったときの余りにより得られる。
つぎにステップS809において、ブロックが属するクラスタの番号として、新クラスタ番号Ickをブロック別クラスタ番号データclusterの要素[iBlk][jBlk]に格納する。その後、ステップS809において、列番号Ijを1だけ増やし、ステップS808、S810からステップS812以降の処理を繰り返し、クラスタ別メンバーブロックデータSet(24A)に、同じクラスタ番号Iciに対応する行に属し、増大後の列番号Ijの要素に記憶されているブロック番号に対する行番号と列番号とを決定し、ブロック別クラスタ番号データcluster(25A)内の、得られた行番号と列番号の要素に同じ新クラスタ番号Ickを格納する。
以上の処理が、ステップS808において、列番号Ijがクラスタ別メンバー数データnの要素[Ici]の値より小さくないと判定されるまで繰り返される。繰り返しの結果、ステップS808において、列番号Ijがクラスタ別メンバー数データnの要素n[Ici]の値より小さくないと判定されたとき、処理はステップS806に進み、新クラスタ番号Ickを1だけ増やし、更に、ステップS804で旧クラスタ番号Iciを1だけ増大する。このようにして新クラスタ番号と旧クラスタ番号が1ずつ増大された状態で、ステップS803以降の処理を繰り返す。
以上の説明においては、ステップS805での判定の結果では、旧クラスタ番号Icjに属するブロックの数n[Icj]は0でないと仮定した。もし0の場合には、処理はステップS804に進み、そこで旧クラスタ番号Iciが1だけ増大されてステップS803以降の処理が繰り返される。したがって、この場合には、ステップS806が実行されず、新クラスタ番号Ickは1のままである。同様に、ステップS803以降の処理が繰り返されたときに、ステップS805での判定の結果、旧クラスタ番号Icjに属するブロックの数n[Icj]が0であると判定されたときにも、新クラスタ番号Ickは更新されない。したがって、空でないクラスタが処理されたときのみ新クラスタ番号Ickが更新されることになり、クラスタ番号付与部800は、空でないクラスタに新クラスタ番号Ickを1から順次決定し、そのクラスタに属するブロックにその新クラスタ番号Ickを付与して、ブロック別クラスタ番号データcluster内の対応する要素にその新クラスタ番号Ickを記憶することになる。
以上の処理を繰り返した結果、ステップS804で更新された後の旧クラスタ番号Iciが、ステップS803において、ブロック総数Nbより小さくない、すなわち、Nbに達したと判定されたとき、クラスタ番号付与部800の処理が終了し、処理はテクスチャ分類部300(図5)に戻る。
図5において、テクスチャ分類部300は、クラスタ番号付与部800の処理が終了したときに、その処理を終了する。以上の説明からも明らかなように、テクスチャ特徴量は複数のクラスタに分類されたが、クラスタの番号の値自体は何も特別の意味を持っていない。そこで、場合によっては、以上のようにしてクラスタ番号を新たに決定した後に、全クラスタの番号を何らかの物理量に即して新たに付けなおしてもよい。そうすれば、物理量が小さい領域には、例えば小さいクラスタ番号を付与できるので、分割により得られた複数の領域を識別するときに、物理量に対応して決められたクラスタ番号を使用できて好都合である。物理量として、例えば、各クラスタに含まれる複数のブロックに対応する複数のテクスチャ特徴量値の平均値、今の場合には複数のヒストグラムの値の平均値をそのクラスタの平均値とし、全クラスタをその平均値の小さいものから順に新たに番号付けしてもよい。ここでヒストグラムの値として、例えば対象とする特徴抽出領域内での画素の平均濃度を使用することができる。そうすれば、濃度が相対的に小さい特徴抽出領域に対応するブロックには小さいクラスタ番号が付与される。
図1に戻り、領域を分割可能なプログラム40は、テクスチャ分類部300の処理が終了したとき、領域分割部400を起動する。領域分割部400は、テクスチャ分類部300による分類により同じクラスタに属すると判別され、かつ互いに隣接する位置にある複数のブロックを連結して一つの領域を生成することにより、画像を複数の領域に分割するものである。
本実施の形態では、領域分割部400は、隣接する二つのブロックが異なるクラスタに属するか否かを判定し、異なるクラスタに属する場合にはそれらのブロックに対応して、それらのブロックのクラスタが異なることを示す情報を生成する。これにより、互いに隣接する二つのブロックがテクスチャ分類部300により同じクラスタに属すると判定されたときには、それらのクラスタに対応して、上記情報が生成されないので上記二つのクラスタが同じクラスタに属すると判断可能になる。一方、互いに隣接する二つのブロックがテクスチャ分類部300により異なるクラスタに属すると判断されたときには、それらのブロックに対応して上記情報が生成されるので、それらのブロックは異なるクラスタに属すると判断可能になる。
より具体的には、上記情報として、所属するクラスタが異なり互いに隣接する二つのブロックの境界辺付近に異なるクラスタの境界であることを示す境界線を解析対象画像に重畳して表示又は印刷により出力させる情報を生成する。更に具体的には、上記情報として、上記解析対象画像内の上記二つのブロックの境界付近に位置するように、上記境界線を表す画像データを解析対象画像の画像データに書き込む。これにより、互いに隣接する二つのブロックが同じクラスタに属するときには、その間に境界線が出力されないので、それらの領域は一つの領域に連結されることになる。一方、互いに隣接する二つのブロックが異なるクラスタに属するときには、その間に境界線が出力されるので、それらのブロックは異なるクラスタに属することが識別可能になる。なお、上記クラスタの境界線を表す画像データを解析対象画像に重畳しないで、解析対象画像内の複数のブロックのそれぞれに対応する領域を有する他の画像を表す画像データを生成し、当該他の画像上に境界線画像を書き込み、上記他の画像と解析対象画像のそれぞれのブロック位置が一致するように両方の画像を重畳して表示あるいは印刷するようにしてもよい。
領域分割部400は、一例として領域境界垂直方向部分検出部900と領域境界水平方向部分検出部950とからなり、起動されると、これらの処理部を順次実行する。
図11は、領域境界垂直方向部分検出部900の処理の一例を示す概略フローチャートである。領域境界垂直方向部分検出部900は、列方向(図2(b)においてはy方向)に隣接する二つのブロックが異なるクラスタに属するときには、その境界辺付近に領域境界の垂直方向部分を表す、図の垂直方向(図2(b)の場合にはx方向)に延びた画像を描画するものである。
領域境界垂直方向部分検出部900は、ブロックの行番号iBlkと列番号jBlkについての二重のループを形成している。ステップS901からS905がブロックの行番号iBlkについての第1のループを構成し、ステップS905からS910がブロックの列番号jBlkについての第2のループを構成する。第1のループでは、ステップS901により行番号iBlkに初期値0を設定した後、ステップS904において、列番号jBlkを初期値0に設定し、ステップS905において、列番号jBlkが(ブロック列数Col)−1より小さいか否かを判定され、小さい限り第2のループの処理が開始される。ステップS905において、列番号jBlkが(ブロック列数Col)−1より小さいか否かが判定されるのは、第2のループにおいて、行番号iBlk、列番号jBlkのブロックのクラスタ番号と、列方向(右方向)の隣りにある行番号iBlk、列番号jBlk+1のブロックのクラスタ番号が同じか否かが判定されるので、第2のループでは列番号jBlkは0から(ブロックの列数Col)−1までしか取れないからである。
第2のループでは、ステップS907において、ブロック別クラスタ番号データclusterの、上記一組のブロックに対する第1の要素cluster[iBlk][jBlk]内のクラスタ番号と第2の要素cluster[iBlk][jBlk+1]内のクラスタ番号とが等しいか否かが判定される。等しいときには、ステップS906にて列番号jBlkが1だけ増大され、ステップS905で列番号jBlkが(ブロック列数Col)−1より小さいか否かが判定され、小さい限り再度ステップS907の判定が繰り返される。ステップS907において、いずれかの行番号iBlkと列番号jBlkのブロックのクラスタ番号と右隣りのブロックのクラスタ番号が異なると判定されたときには、ステップS908とステップS909において、処理中のブロック(行番号iBlk、列番号jBlkのブロック)を代表する画素のx座標xbとy座標ybをそれぞれ算出する。具体的には、ステップS908と909では、ブロックを代表する画素の座標としてブロックの左上角の画素の座標を計算しているが、他の画素の座標を検出してもよい。つぎにステップS910において、処理中のブロックと右隣のブロックの間に領域境界の垂直方向部分を表す画像を描画する。関数drawBoundaryY(xb,yb,bSize)は、引数xb、yb、bSizeに基づいて、その画像を描画するための領域境界線画像の垂直方向部分を描画するための関数である。この関数により描画される領域境界垂直方向部分を表す画像の例は後に説明する。
ステップS910の実行後、ステップS906により列番号jBlkが1だけ増大され、ステップS905以降の処理が繰り返される。もしステップS905において、列番号jBlkが(ブロック列数Col)−1より小さくない、すなわち、(ブロック列数Col)−1に達したと判定されたときには、第2のループが終了し、処理は第1のループに移る。第2のループでは、ステップS903において、行番号iBlkを1だけ増大し、その後、増大後の行番号iBlkがブロック行数Rowより小さいことがステップS902で判定されると、既に述べたようにステップS904以降の処理が繰り返される。こうして、次のブロック行について以上に述べたような、列方向に隣接するブロックのクラスタが異なるか否かを判定し、異なる一組のブロックの間に領域境界の垂直方向部分を表す画像を描画する。その後以上の処理が繰り返され、ステップS902において、増大後の行番号iBlkがブロック行数Rowより小さくない、すなわち、ブロック行数Rowに達したとステップS902で判定されると、領域境界垂直方向部分検出部900の処理が終了する。
図1に戻り、領域分割部400は、領域境界垂直方向部分検出部900の処理の終了後の領域境界水平方向部分検出部950を実行する。
図12は、領域境界水平方向部分検出部950の処理の一例を示す概略フローチャートである。領域境界垂直方向部分検出部900は、行方向(図2(b)においてはx方向)に隣接する二つのブロックが異なるクラスタに属するときには、その境界辺付近に領域境界の水平方向部分を表す、図の水平方向(図2(b)の場合にはy方向)に延びた画像を描画するものである。
図12の処理は、ステップS957において、いずれかの処理中のブロックと行方向に隣接する(図2(b)の下隣り)ブロックとに対する、ブロック別クラスタ番号データcluster内の第1の要素cluster[iBlk][jBlk]内のクラスタ番号と第2の要素cLUSTER[iBlk+1][jBlk]内のクラスタ番号とが等しいか否かを判定する処理を順次行を変え、更に列を変えながら行う点で、図11の処理と異なり、更に、いずれかの行方向に隣接する二つのブロックのクラスタ番号が異なるときには、ステップS960において、処理中のブロックと下隣りのブロックの間に領域境界の水平方向部分を表す画像を描画する点でも図11の処理と異なる。関数drawBoundaryX(xb,yb,bSize)は、そのための領域境界線画像の水平方向部分を描画するための関数である。この関数により描画される領域境界線の水平方向部分を表す画像の例は後に説明する。領域境界水平方向部分検出部950のその他の処理のうち、ステップS951、S952、S953、S954、S955、S956、S958、S959は、図11のステップS901、S902、S903、S904、S905、S906、S908、S909にそれぞれ対応し、それらとの比較から、領域境界水平方向部分検出部950のその他の処理は当業者に明確であるのでその説明は省略する。
図13は、領域境界垂直方向部分検出部900と領域境界水平方向部分検出部950により描画される領域境界を表す画像の例を説明するための図である。同図(a)は、解析対象画像21A内の極くわずかな数のブロックを含む部分を示す図である。図のブロック内の括弧がついていない数値は、ブロックの通し番号を例示し、ブロック内にある小括弧内の数値は、そのブロックが属するクラスタの番号である。図には9個のブロック#0から#8までが示され、それらのブロックのうちブロック#6のみがクラスタ1に所属し、ブロック#0、#3、#7、#8がクラスタ2に所属し、ブロック#1、#4、#5がクラスタ3に所属し、ブロック#2のみがクラスタ4に所属している。以下では、ブロックのサイズは、一例として4画素×4画素であると仮定する。
領域境界垂直方向部分検出部900は、これらのブロックに対しては、ブロック#0と#1の間、ブロック#1と#2の間、ブロック#3と#4の間、ブロック#6と#7の間に領域境界の垂直方向部分を表す画像を描画することになる。同様に、領域境界水平方向部分検出部950は、ブロック#2と#5の間、ブロック#3と#6の間、ブロック#4と#7の間、ブロック#5と#8の間に領域境界の水平方向部分を表す画像を描画することになる。
領域境界の垂直方向部分を表す画像と領域境界の水平方向部分を表す画像の描画位置及び描画する画像の種類はいろいろあり得る。同図(b)は、同図(a)のブロック群に対して領域分割部400が描画する領域境界を示す画像のうち、領域境界垂直方向部分検出部900内の関数drawBoundaryY(xb,yb,bSize)が描画する領域境界の垂直方向部分を表す画像の例を示す図である。図では各ブロックに左上角の画素のx,y座標がそのブロックを代表する画素の座標xb,ybであり、上記関数は、その座標xb,ybとブロックサイズbSizeに基づいて、以下に説明するような位置にテクスチャ境界の垂直方向部分を表す画像を描画する。図では、テクスチャ境界の垂直方向部分を表す画像の例として、1画素分の幅を持ち、濃度が最大の黒色で、垂直方向に延びている直線Lvを使用し、かつ、その直線を描画する位置を、列方向に隣接する二つのブロックのうち、左側(列番号が小さい側)のブロック内の、右側のブロックとの境にある垂直方向に延びた辺上にしている。
同図(c)は、同図(a)のブロック群に対して領域分割部400が描画する領域境界を示す画像のうち、領域境界水平方向部分検出部950内の関数drawBoundaryX(xb,yb,bSize)が描画する領域境界の水平方向部分を表す画像の例を示す図である。図では、テクスチャ境界の水平方向部分を表す画像の例として、1画素分の幅を持ち、濃度が最大の黒色で、水平方向に延びる直線Lhを使用し、かつ、その直線を描画する位置を、行方向に隣接する二つのブロックのうち、上側(行番号が小さい側)のブロック内の、下側のブロックとの境に位置する水平方向に延びた辺上にしている。同図(d)は、同図(b)と(c)にある領域境界を表す画像Lv、Lhを合わせて表示したものである。
これらの境界線の描画位置は適宜変更することは可能である。例えば、領域境界の垂直方向部分を表す直線Lvを、列方向に隣接する二つのブロックのうち、右側(列番号が大きい側)のブロック内の、左側のブロックとの境界に位置する垂直方向に延びた辺上にしてもよい。領域境界の水平方向部分を表す直線Lhについても同様である。
実際上は、各ブロック内に画像が表示され、それに重畳して領域境界を示す画像が表示される。したがって、境界線に黒色の線を使用すると、解析対象画像の背景に位置する部分が黒色又はそれに近い場合、境界線を識別できないことが考えられる。したがって、背景画像が黒色であっても境界線を識別可能にすることが望ましい。そのためには、境界線として、黒色の境界線と白色の境界線の組合せを使用するようにしてもよい。例えば、中央に白色の直線を含み、両側に黒色の直線を含む3本の直線を境界線に用いてもよい。図13(e)は、垂直方向の境界線に一対の黒色の垂直の直線Lvb1、Lvb2の間に一本の白色の垂直の直線Lvwを使用し、水平方向の境界線に一対の黒色の水平の直線Lhb1、Lhb2の間に一本の白色の水平の直線Lhwを使用した例である。図では、白色の垂直の直線Lvwと白色の水平の境界線Lhwには、明確になるように、斜線を付けている。ここでは、垂直方向の黒色の垂直の直線Lvb1は、隣接するブロックとの境界辺より1画素分だけブロックの内部に位置し、他の黒色の直線Lvb2は、他の隣接するブロックの境界辺上に位置する。一本の白色の水平の直線Lhwは、当該他の隣接するブロックの境界に位置する辺上に位置する。このような境界線を用いると、境界線の一部が背景画像の濃度とほぼ等しくなっても、境界線の他の部分が必ず背景画像とは濃度が異なるので、境界線の位置は認識可能である。図13(e)では、黒色の水平又は垂直の境界線画像が白色の水平又は垂直の境界線画像より上側に位置するように描画している。ただし、図では、白色の画像部分には、その部分が明確になるように、斜線を付けている。
しかし、このような境界線画像を使用した場合には、図の左下部分に示すように、水平の白色の境界線と垂直の黒色の境界線画像が重なる部分と、水平の黒色の境界線と垂直の白色の境界線画像が重なる部分とが発生し、その部分では、境界の位置がどこにあるかが判別しにくくなる。更に、描画の順序によって、上側に来る画像が決まる場合には、白色の直線の画素が黒色の直線で上書きされることが生じる。逆に、水平の黒色の境界線画像と垂直の白色の境界線画像が重なる部分では、描画の順序によっては黒色の直線上の画素が白色の直線で上書きされることが生じることがある。これらの事象が生じると、上記重畳する部分では境界線の位置が識別しにくくなることが懸念される。
この問題を避けるには、同図(f)に示されたように、同図(e)で使用した垂直方向の一対の黒色の垂直の直線Lvb1、Lvb2の一つのブロック内の両端の画素を除いた一対の直線を使用し、一本の白色の垂直の直線Lvwについても同様にブロック内の両端の画素を除いた直線を使用し、水平方向の境界線として使用する一対の黒色の水平の直線Lhb1、Lhb2と、白色の直線Lhwについても同様とすることが望ましい。なお、同図でも白色の画像部分には、その部分が明確になるように、斜線を付けている。図13(f)の方法では、境界画像が3本の直線画像からなるので、境界画像が、同図(d)のように1本の直線画像からなる場合に比べると、背景画像をより多く隠す点では余り望ましくはない。しかし、背景画像から境界線画像を識別できない場合は実質上なくなる。更に、同図(e)の場合に生じる、水平又は垂直の境界線画像の重畳がなくなり、境界線位置が識別しにくいという問題も減る。
領域境界垂直方向部分検出部900のステップS910で使用される関数drawBoundaryY(xb,yb,bSize)と領域境界水平方向部分検出部950内のステップS960で使用される関数drawBoundaryX(xb,yb,bSize)とにより、図13(f)のような領域境界画像を描画するには以下のようにすればよい。境界画像の垂直方向部分を例えばブロック#0と#1の間に描画するときは、関数drawBoundaryY(xb,yb,bSize)の座標(xb、yb)の値はブロック#0の代表画素である左上角の画素の座標(0,0)である。関数drawBoundaryY(xb,yb,bSize)は、ブロック#0内に直線Lvb1として、座標(xb+1,yb+bSize−2)の点と座標(xb+bSize−2,yb+bSize−2)の点とを結ぶ黒色の直線を描画し、直線Lvwとして、座標(xb+1,yb+bSize−1)の点と座標(xb+bSize−2,yb+bSize−1)の点とを結ぶ白色の直線を描画する。ブロック#1内に直線Lvb2として、座標(xb+1,yb+bSize)の点と座標(xb+bSize−2,yb+bSize)の点とを結ぶ黒色の直線を描画すればよい。
一方、境界画像の水平方向部分を例えばブロック#2と#5の間に描画するときは、関数drawBoundaryX(xb,yb,bSize)の座標(xb、yb)の値はブロック#2の代表画素であるブロック#2の左上角の画素の座標(0,8)である。関数drawBoundaryX(xb,yb,bSize)は、ブロック#2内に直線Lhb1として、座標(xb+bSize−2,yb+bSize−1)の点と座標(xb+bSize−2,yb+bSize−2)の点とを結ぶ黒色の直線を描画し、直線Lhwとして、座標(xb+bSize−1,yb+bSize−3)の点と座標(xb+bSize−1,yb+bSize−2)の点とを結ぶ白色の直線を描画し、ブロック#5内に直線Lhb2として、座標(xb+bSize,yb+bSize−3)の点と座標(xb+bSize,yb+bSize−2)の点とを結ぶ黒色の直線を描画すればよい。
以上のようにして、領域境界垂直方向部分検出部900と領域境界水平方向部分検出部950により領域境界画像を表す情報が生成されると、図1に戻り、領域分割可能なプログラム40は処理を終了する。
つぎに、以上で説明した領域分割方法を実行して得られた境界画像の例を説明する。
図14は、テクスチャ解析の対象の例として植生指数の画像の例を示す図である。植生指数は、植物の生育状況を示す指数であり、植物が茂ったところでは値が大きく、地肌や水面では値が小さくなる。この植生指数画像はマルチスペクトル衛星画像から生成できる。すなわち、マルチスペクトル画像の各画素について、赤の濃度をR、赤外線の濃度をIRで表したとき、当該画素の植生指数は(IR−R)/(IR+R)により与えられる。植生指数画像は、画像内の各画素の植生指数の値を白黒の濃淡で表した画像である。
図15は、図14の解析対象画像を従来技術により領域分割した結果得られた領域分割済み画像の一例を示す図である。この例では、ブロックは16×16画素の正方形であり、各ブロックからテクスチャ特徴量として濃度のヒストグラムを抽出し、得られた複数のテクスチャ特徴量を、本実施の形態と同じく、特許文献2に記載された距離に基づいて複数のクラスタに分類し、分類結果に基づいて、複数のブロックを異なるクラスタに所属させ、同じクラスタに属し、かつ隣接する複数のブロックを同じ領域となるように、解析対象画像を複数の領域に分割して、図15の画像が得られた。この場合、領域の境界位置は、ブロックサイズである16画素を単位として決定される。図において、境界線画像は、図13(f)に示したように、一本の白色の境界線画像と、それを挟む一対の黒色の境界線画像とからなる境界線画像を用いている。領域境界の位置はブロックのサイズである16画素単位で決定されている。そのため、画像の濃淡の変化している部分でも領域の境界が変化しておらず領域の境界位置の分解能は粗いことが分かる。
図16は、図14の解析対象画像を本実施の形態で説明した領域分割方法により領域分割した結果得られた領域分割済み画像25Bの一例を示す図である。ブロックは、4×4画素のサイズの正方形であり、ブロックに対応する特徴抽出領域のサイズは、ブロックを中心に含む16×16画素のサイズの正方形である。各ブロックに対応する特徴抽出領域からテクスチャ特徴量として濃度のヒストグラムを抽出し、得られた複数の濃度のヒストグラムを複数のクラスタに分類し、分類結果に基づいて、ブロックを異なるクラスタに所属させ、同じクラスタに属し、かつ隣接するブロックを同じ領域となるように、解析対象画像を複数の領域に分割したものである。この例では、領域の境界位置はブロックサイズである4画素を単位として決定されている。領域分割の境界は画像の濃淡の分布によく適合していて、画像の濃淡が異なる部分は小さい領域でも異なる領域に分割されているので、テクスチャ特徴量の信頼度が高く、それでいて、領域の境界位置は図15の従来技術より高い分解能でもって決定されていることが分かる。
<発明の実施の形態2>
また、以上の実施の形態1では特徴抽出領域には16×16画素の領域が使用され、ブロックサイズは4×4画素のサイズを有していた。しかし、ブロックサイズあるいは特徴抽出領域サイズ又はそれらの両方を変更することも可能である。ブロックサイズを減少した場合には、領域分割するときの分割単位がより小さくなり、領域の分割後の境界位置の分解能を上げることができる。本実施の形態では、特にブロックを1画素の領域とするものである。この場合には、各画素(ブロック)に対応する特徴抽出領域には、複数の画素を含み、当該画素を中心付近に含む特徴抽出領域を使用すればよい。
すなわち、各画素に対応する特徴抽出領域として、その領域内の幾何学的な中心付近の画素に対応する領域を使用すればよい。しかし、特徴抽出領域が、その幾何学的な中心に画素を含む領域であるときには、その領域を、その中心付近の画素に対応する領域とすればよい。このことは、正方形の特徴抽出領域から検出したテクスチャ特徴量をその中心付近の画素のテクスチャ特徴量とするうえで望ましいと考えられる。
特徴抽出領域が、例えば正方形であることが望ましい。この場合、特徴抽出領域から抽出したテクスチャ特徴量は、中心付近の画素のテクスチャ特徴量として使用するのに適切と考えられる。特徴抽出領域が正方形の場合には、その正方形領域は、その中心付近に位置する4つの画素のいずれかに対応する領域であるとして、当該正方形の領域から抽出したテクスチャ特徴量を当該4つの画素の一つに対応するテクスチャ特徴量としても、正方形の図形的な中心とその画素との位置ずれは半画素分だけであるので、その程度のずれは結果には余り影響しないと予想される。しかし、正方形の一辺の画素数が奇数であるときには、正方形の幾何学的な中心に画素を位置するので、その正方形の領域を、中心の画素に対応する特徴抽出領域として使用することができる。
特徴抽出領域は、例えば円形でもよいと考えられる。この場合も、この特徴抽出領域から抽出したテクスチャ特徴量は、円の中心付近の画素のテクスチャ特徴量として使用するのに適切と考えられる。その円の直径を構成する画素数が偶数でもよいが、奇数の場合、円の幾何学的な中心に画素が位置するので、その円形の特徴抽出領域をその円の中心の画素に対応する特徴抽出領域とすることができる。
この実施の形態2でも、前記の実施の形態1と同じく大きな特徴抽出領域を各画素に対応して使用して、複数の画素のそれぞれに対応する特徴抽出領域から抽出された複数のテクスチャ特徴量を複数のクラスタに分類し、分類結果に基づいて、隣接する二つの画素が同じラスタに属する場合に一つの領域に属するように、解析対象画像を複数の領域に分割することができる。これによれば、ブロックと画素とが同じになり、これまでに述べたブロック行番号と列番号の代わりに画素のx座標とy座標を使用し、ブロックの通し番号の代わりに画素の通し番号を使用すればよい。
更に、領域分割部400により画像を複数の領域に分割するには、領域境界垂直方向部分検出部900により領域の境界の垂直方向部分を表す画像を描画するときには、各画素毎に、y方向(右方向)の隣りの画素が同じクラスタに属するか否かを判断し、同じクラスタに属さないときには、図13(b)の境界線画像を使用するときには当該画素に、あるいは図13(f)の境界線画像を使用するときには、当該画素と当該画素の右隣りの画素と左隣りの画素とに重畳して、当該画素が右隣りの画素が属するクラスタとは異なるクラスタに属する領域の境界線上にあることを示す画像データを書き込めばよい。同様に、領域境界水平方向部分検出部950によりテクスチャの境界を示す境界の水平方向部分を検出するときには、図13(b)の境界線画像を使用するときには当該画素に、あるいは図13(f)の境界線画像を使用するときには、当該画素と当該画素の上隣りの画素と下隣りの画素とに重畳して、当該画素が下隣りの画素が属するクラスタとは異なるクラスタに属する領域の境界線上にあることを示す画像データを書き込めばよい。このようにして、領域の境界を画素単位に設定することができ、領域の境界位置を非常に分解能よく設定できる。
<発明の実施の形態3>
実施の形態1では、白黒画像を、テクスチャ特徴量を用いて領域分割する例を説明したが、本発明はカラー画像にも適用することができる。カラー画像の場合には、各画素のR、G、B成分を要素とする濃度ベクトルを各画素の濃度として扱い、濃度のヒストグラムとして、各色成分が取りうる値の異なる組合せを一つの濃度として扱って濃度ヒストグラムを生成すれば、その後は上記実施の形態1と同じように処理すればよい。すなわち、画素の濃度が取りうる色成分の組Ri、Gj、Bkに対する頻度P(Ri,Gj,Bk)を示すデータをカラー画像での濃度のヒストグラムとして考え、異なる特徴抽出領域から検出された異なる濃度ヒストグラムP1、P2の間の距離dを、実施の形態1と同様に、下記の式7のように、対応する濃度における頻度の差の総和により定義することができる。ここでΣΣΣは、それぞれ添え字i、j、kについてそれぞれが取りうる範囲での総和である。
d=ΣΣΣ|P1(Ri,Gj,Bk)−P2(Ri,Gj,Bk)| (7)
本発明は、上記の複数の実施の形態に限定されるものではなく、本発明の要旨を変更しない範囲で変更又は修正して他の形態で実施してもよいことは言うまでもない。例えば、実施の形態1では、図16に例示したように、ブロックを分類するためのテクスチャ特徴量を抽出する領域としてブロックより大きな領域を使用するという目的のために、テクスチャ特徴量として、特徴抽出領域の画素の濃度のヒストグラムを使用したが、同じ目的のために、テクスチャ特徴量として、濃度ヒストグラムの平均、分散、3次モーメント、4次モーメント、同時生起確率、差分統計量なども使用できることを発明者による実験により確認できた。
また、実施の形態1では、テクスチャ特徴量として濃度ヒストグラムを使用し、テクスチャ特徴量の分類にあっては、テクスチャ特徴量間の距離を使用し、二つの濃度ヒストグラムの距離として、特許文献2に記載のように各濃度における頻度の差の絶対値の総和を使用したが他の方法で距離を計算してもよい。例えば、濃度の差の自乗の総和の平方根を使用してもよい。一般に、n次元空間における点A、B間の距離d(A,B)は、非負値であり、任意の点A、B、Cについて、三角不等式d(A,B)+d(B,C)≧d(A,C)が成立すればよい。
なお、第1の実施の形態で使用した、図13(f)に示す境界線を使用した場合には、テクスチャの境界線の位置は、中央の白色の線Lvwの位置ではなく、その線と右側の黒色の線Lvb2との境界に位置することになり、白色の直線は必ずしもテクスチャの境界を正確には表していないという問題がある。このことは水平の境界線についても同じである。この問題を解決するには、同図(f)に代えて、境界線として、一対の隣接した白色の直線と、それぞれの外側に位置する一対の黒色の直線を使用し、隣接する二つのブロックのそれぞれに一つの白色の直線を隣のブロックとの境界辺に配置しその内側に黒色の直線を配置すればよい。この方法では、境界線が4本の直線により表されるので、背景画像のうち表示されなくなる画素が増えるという問題が大きくなる。特にブロックサイズが小さいときには、問題が大きくなるが、テクスチャの境界位置が、中央の2本の白い直線の中間に位置するので、テクスチャの境界位置と境界線画像の中心位置が一致するという利点がある。
本発明に係る画像分割成装置の一つの実施形態の概略ブロック図である。 (a)は画像を領域に分割するときに使用される複数のブロックと複数の特徴抽出領域の概略を説明するための図であり、(b)は解析対象画像とブロックと特徴抽出領域との関係の例をより詳細に示す図である。 (a)は処理条件設定部の処理の一例を示す概略フローチャートである。(b)は処理条件データの例を示す図である。 (a)はテクスチャ特徴量検出部の処理の一例を示す概略フローチャートである。(b)はテクスチャ特徴量検出部により生成されるテクスチャ特徴量データとしての濃度ヒストグラムデータの例を示す図である。 テクスチャ分類部の処理の一例を示す概略フローチャートである。 テクスチャ分類部で生成されるいくつかのデータの例を示す図である。 初期値設定部の処理の一例を示す概略フローチャートである。 (a)は最短距離クラスタ組検出部の処理の一例を示す概略フローチャートである。(b)は最短距離クラスタ組データの例を示す図である。 クラスタ併合部の処理の一例を示す概略フローチャートである。 (a)はクラスタ番号付与部の処理の一例を示す概略フローチャートである。(b)はクラスタ番号付与部で生成されるブロック別クラスタ番号データの例を示す図である。 領域境界垂直方向部分検出部の処理例を示す概略フローチャートである。 領域境界水平方向部分検出部の処理例を示す概略フローチャートである。 領域境界垂直方向部分検出部と領域境界水平方向部分検出部により描画される領域境界を表すいくつかの境界線画像を説明するための図である。 解析対象画像の例としての植生指数の画像の例を示す図である。 図14の解析対象画像を従来技術により領域分割した結果得られた領域分割済み画像の一例を示す図である。 図14の解析対象画像を本発明の実施の形態で説明した領域分割方法により領域分割した結果得られた領域分割済み画像の一例を示す図である。
符号の説明
bSize・・・ブロックサイズ、cluster[iBlk][jBlk]・・・ブロック別クラスタ番号データ、Col・・・ブロック列数、d[Ici][Icj]・・・クラスタ間距離データ、Dist(Ici,Icj)・・・クラスタ間距離計算関数、dMin・・・全クラスタ間最短距離、drawBoundaryX・・・領域境界線画像の水平方向部分を描画するための関数、drawBoundaryY・・・領域境界線画像の垂直方向部分を描画するための関数、flag・・・最短距離クラスタ組更新フラグ、g・・・濃度値、histgram[iBlk][jBlk][g]・・・濃度ヒストグラムデータ、Ib・・・ブロック番号、iBlk・・・ブロック行番号、Ic、Ici・・・クラスタ番号、IciMin・・・第1最短距離クラスタ番号、IcjMin・・・第2最短距離クラスタ番号、Ick・・・新クラスタ番号、Ij・・・要素番号、image[xi][yj]・・・画像データ、jBlk・・・ブロック列番号、Lh・・・テクスチャ領域境界線の水平部分用の直線、Lhb1、Lhb2・・・テクスチャ領域用の境界線の水平部分用の黒色直線、Lhw・・・テクスチャ領域境界線の水平部分用の白色直線、Lv・・・テクスチャ領域境界線の垂直部分用の直線、Lvb1、Lvb2・・・テクスチャ領域境界線の垂直部分用の黒色直線、Lvw・・・テクスチャ領域境界線の垂直部分用の白色直線、n[Ici]・・・クラスタ別メンバー数データ、Nb・・・ブロック総数、nSize・・・特徴抽出領域サイズ、Nx・・・解析対象画像の縦サイズ、Ny・・・解析対象画像の横サイズ、Row・・・ブロック行数、Set[Ici][Ij]・・・クラスタ別メンバーブロックデータ、T・・・距離の閾値、xb,yb・・・ブロック代表画素の座標、Δ・・・サイズ差(nSize−bSize)。

Claims (6)

  1. 解析対象の画像を分割して得られる所定の大きさを有する複数のブロックの各々に対して、当該ブロックより大きく、当該ブロックを中心付近に含む特徴抽出領域の画像から所定の種別の統計的なテクスチャ特徴量を、当該ブロックの画像に関するテクスチャ特徴量として検出するテクスチャ特徴量検出ステップと、
    前記複数のブロックのそれぞれに対応して検出された複数のテクスチャ特徴量を複数のクラスタに分類するテクスチャ分類ステップと、
    それぞれに対応して検出されたテクスチャ特徴量が同一のクラスタに属し、かつ互いに隣接する複数のブロックを連結して一つの領域を生成することにより、前記画像を複数の領域に分割する画像分割ステップと、
    をコンピュータに実行させることを特徴とする画像を分割可能なプログラム。
  2. 各ブロック及び当該ブロックに対する前記特徴抽出領域は正方形の領域であり、
    各ブロックの前記正方形の領域の一辺に含まれる画素数の偶奇と、各ブロックに対応する前記特徴抽出領域の前記正方形の領域の一辺に含まれる画素数の偶奇は等しく、各ブロックに対応する前記特徴抽出領域は、その中心位置に当該ブロックを含むことを特徴とする請求項1に記載の画像を分割可能なプログラム。
  3. 前記複数のブロックの各々は1画素の領域であり、
    各画素に対応する前記特徴抽出領域は、当該特徴抽出領域領域の中心付近に当該画素を含むことを特徴とする請求項1に記載の画像を分割可能なプログラム。
  4. 各ブロックに対応する前記特徴抽出領域内の画像に関する前記所定の種別の統計的テクスチャ特徴量は濃度のヒストグラムであり、
    前記分類ステップは、前記検出された複数のテクスチャ特徴量を、それらの間の距離とあらかじめ指定された距離の閾値とに基づいて、互いの間の距離が前記閾値を超える一組のテクスチャ特徴量は異なるクラスタに属するように、かつ距離の近いものは同じクラスタに属するように、複数のクラスタに分類する、ことを特徴とする請求項1から3の一つに記載の画像を分割可能なプログラム。
  5. 解析対象の画像を分割して得られる所定の大きさを有する複数のブロックの各々に対して、当該ブロックより大きく、当該ブロックを中心付近に含む特徴抽出領域の画像から所定の種別の統計的なテクスチャ特徴量を、当該ブロックの画像に関するテクスチャ特徴量として検出するテクスチャ特徴量検出ステップと、
    前記複数のブロックのそれぞれに対応して検出された複数のテクスチャ特徴量を複数のクラスタに分類するテクスチャ分類ステップと、
    それぞれに対応して検出されたテクスチャ特徴量が同一のクラスタに属し、かつ互いに隣接する複数のブロックを連結して一つの領域を生成することにより、前記画像を複数の領域に分割する画像分割ステップと、
    を含むことを特徴とする画像分割方法。
  6. 前記複数のブロックの各々は1画素の領域であり、
    各画素に対応する前記特徴抽出領域は、当該特徴抽出領域領域の中心付近に当該画素を含むことを特徴とする請求項5に記載の画像分割方法。
JP2004004862A 2004-01-09 2004-01-09 画像を分割可能なプログラム及び画像分割方法 Pending JP2005196702A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2004004862A JP2005196702A (ja) 2004-01-09 2004-01-09 画像を分割可能なプログラム及び画像分割方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004004862A JP2005196702A (ja) 2004-01-09 2004-01-09 画像を分割可能なプログラム及び画像分割方法

Publications (1)

Publication Number Publication Date
JP2005196702A true JP2005196702A (ja) 2005-07-21

Family

ID=34819348

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004004862A Pending JP2005196702A (ja) 2004-01-09 2004-01-09 画像を分割可能なプログラム及び画像分割方法

Country Status (1)

Country Link
JP (1) JP2005196702A (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015125609A (ja) * 2013-12-26 2015-07-06 株式会社ケンシュー 画像処理方法、画像処理プログラム、画像処理装置及び工業製品
CN112560926A (zh) * 2020-12-07 2021-03-26 杭州聚玻科技有限公司 一种自动确定玻璃类型的方法
CN112802177A (zh) * 2020-12-31 2021-05-14 广州极飞科技股份有限公司 航测数据的处理方法、装置、电子设备及存储介质
CN116503394A (zh) * 2023-06-26 2023-07-28 济南奥盛包装科技有限公司 基于图像的印刷制品表面粗糙度检测方法

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015125609A (ja) * 2013-12-26 2015-07-06 株式会社ケンシュー 画像処理方法、画像処理プログラム、画像処理装置及び工業製品
CN112560926A (zh) * 2020-12-07 2021-03-26 杭州聚玻科技有限公司 一种自动确定玻璃类型的方法
CN112560926B (zh) * 2020-12-07 2023-04-18 杭州聚玻科技有限公司 一种自动确定玻璃类型的方法
CN112802177A (zh) * 2020-12-31 2021-05-14 广州极飞科技股份有限公司 航测数据的处理方法、装置、电子设备及存储介质
CN116503394A (zh) * 2023-06-26 2023-07-28 济南奥盛包装科技有限公司 基于图像的印刷制品表面粗糙度检测方法
CN116503394B (zh) * 2023-06-26 2023-09-08 济南奥盛包装科技有限公司 基于图像的印刷制品表面粗糙度检测方法

Similar Documents

Publication Publication Date Title
Lähner et al. SHREC'16: Matching of deformable shapes with topological noise
TWI613510B (zh) 電子束描繪裝置、電子束描繪方法及記錄媒體
Zhou et al. Easy generation of personal Chinese handwritten fonts
KR102305230B1 (ko) 객체 경계정보의 정확도 개선방법 및 장치
WO2020240809A1 (ja) 学習装置、分類装置、学習方法、分類方法、学習プログラム、及び分類プログラム
JP6327963B2 (ja) 文字認識装置及び文字認識方法
KR20150014646A (ko) 영역 기반의 항공 영상 분할 방법 및 이를 실행하는 프로그램 코드를 저장하는 컴퓨터로 읽을 수 있는 저장 매체
JP4704601B2 (ja) 文字認識方法,プログラム及び記録媒体
JP5600524B2 (ja) 画像処理装置、画像処理方法、プログラム、および記憶媒体
EP3367296A1 (en) A computer-implemented method of identifying a perforated face in a geometrical three-dimensional model
JP3634574B2 (ja) 情報処理方法及び装置
CN117058554A (zh) 电力设备目标检测方法、模型训练方法和装置
JP2005196702A (ja) 画像を分割可能なプログラム及び画像分割方法
JP2018124990A (ja) モデル生成装置、評価装置、モデル生成方法、評価方法及びプログラム
US11715197B2 (en) Image segmentation method and device
JP6546385B2 (ja) 画像処理装置及びその制御方法、プログラム
CN116740324A (zh) 一种双路结构的点云补全系统及方法
JP2005208740A (ja) 部分画像検索装置及び部分画像検索プログラム
JP2008299618A (ja) 画像高品質化装置、方法およびプログラム
JPH08194716A (ja) 画像処理方法及びその装置
Shen et al. Intelligent image segmentation model for remote sensing applications
KR102102394B1 (ko) 문자 인식을 위한 영상 전처리 장치 및 방법
JP2010211346A (ja) 手書き文字認識システム
JP2007213255A (ja) 表認識装置、及びコンピュータプログラム
US10796197B2 (en) Automatic method and system for similar images and image fragments detection basing on image content

Legal Events

Date Code Title Description
RD05 Notification of revocation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7425

Effective date: 20050329

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060628

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090512

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20090929