(57)【要約】【課題】  テクスチャ特徴量の統計的な信頼度と、画像を分割して得られる領域の境界位置の分解能をいずれも所望の値にできるように画像を複数の領域に分割する。【解決手段】  テクスチャ特徴量検出部２００は、解析対象画像を構成する複数のブロックの各々に対応して、当該ブロックより大きな、当該ブロックを中心付近に含む特徴抽出領域の画像に関する所定の種別の統計的なテクスチャ特徴量を検出して、当該ブロックのテクスチャ特徴量とする。テクスチャ分類部３００は、検出された複数のテクスチャ特徴量を複数のクラスタに分類する。領域分割部４００は、対応するテクスチャ特徴量が同一のクラスタに属し、かつ互いに隣接する複数のブロックを連結して一つの領域を生成することにより、解析対象画像を複数の領域に分割する。【選択図】図１
2005196702.tif 000002
【特許請求の範囲】
【請求項１】
解析対象の画像を分割して得られる所定の大きさを有する複数のブロックの各々に対して、当該ブロックより大きく、当該ブロックを中心付近に含む特徴抽出領域の画像から所定の種別の統計的なテクスチャ特徴量を、当該ブロックの画像に関するテクスチャ特徴量として検出するテクスチャ特徴量検出ステップと、
前記複数のブロックのそれぞれに対応して検出された複数のテクスチャ特徴量を複数のクラスタに分類するテクスチャ分類ステップと、
それぞれに対応して検出されたテクスチャ特徴量が同一のクラスタに属し、かつ互いに隣接する複数のブロックを連結して一つの領域を生成することにより、前記画像を複数の領域に分割する画像分割ステップと、
をコンピュータに実行させることを特徴とする画像を分割可能なプログラム。
【請求項２】
各ブロック及び当該ブロックに対する前記特徴抽出領域は正方形の領域であり、
各ブロックの前記正方形の領域の一辺に含まれる画素数の偶奇と、各ブロックに対応する前記特徴抽出領域の前記正方形の領域の一辺に含まれる画素数の偶奇は等しく、各ブロックに対応する前記特徴抽出領域は、その中心位置に当該ブロックを含むことを特徴とする請求項１に記載の画像を分割可能なプログラム。
【請求項３】
前記複数のブロックの各々は１画素の領域であり、
各画素に対応する前記特徴抽出領域は、当該特徴抽出領域領域の中心付近に当該画素を含むことを特徴とする請求項１に記載の画像を分割可能なプログラム。
【請求項４】
各ブロックに対応する前記特徴抽出領域内の画像に関する前記所定の種別の統計的テクスチャ特徴量は濃度のヒストグラムであり、
前記分類ステップは、前記検出された複数のテクスチャ特徴量を、それらの間の距離とあらかじめ指定された距離の閾値とに基づいて、互いの間の距離が前記閾値を超える一組のテクスチャ特徴量は異なるクラスタに属するように、かつ距離の近いものは同じクラスタに属するように、複数のクラスタに分類する、ことを特徴とする請求項１から３の一つに記載の画像を分割可能なプログラム。
【請求項５】
解析対象の画像を分割して得られる所定の大きさを有する複数のブロックの各々に対して、当該ブロックより大きく、当該ブロックを中心付近に含む特徴抽出領域の画像から所定の種別の統計的なテクスチャ特徴量を、当該ブロックの画像に関するテクスチャ特徴量として検出するテクスチャ特徴量検出ステップと、
前記複数のブロックのそれぞれに対応して検出された複数のテクスチャ特徴量を複数のクラスタに分類するテクスチャ分類ステップと、
それぞれに対応して検出されたテクスチャ特徴量が同一のクラスタに属し、かつ互いに隣接する複数のブロックを連結して一つの領域を生成することにより、前記画像を複数の領域に分割する画像分割ステップと、
を含むことを特徴とする画像分割方法。
【請求項６】
前記複数のブロックの各々は１画素の領域であり、
各画素に対応する前記特徴抽出領域は、当該特徴抽出領域領域の中心付近に当該画素を含むことを特徴とする請求項５に記載の画像分割方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、テクスチャを含む複雑な画像を統計的なテクスチャ特徴量に基づいて複数の領域に分割するのに適した画像を分割可能なプログラム及び画像分割方法に関する。
【背景技術】
【０００２】
テクスチャとは、例えば航空写真、衛星画像、医用画像のような複雑な画像内にある、微視的には細かな繰り返し模様が存在し、巨視的には均一に感じられるパターンのことである。テクスチャには、それを構成する要素が比較的抽出しやすく、要素間の関係として配置規則をとらえやすい構造的テクスチャと、要素と配置規則による記述が困難であり、要素分布の統計量でしかその特徴を記述できない統計的テクスチャがある。本発明は、後者の統計的テクスチャを対象とする。
【０００３】
最も簡単なテクスチャ特徴量は、濃度ヒストグラム及びそれから導出可能な統計量である。例えば、濃度ヒストグラムの平均、分散、３次モーメント、４次モーメントなどの統計量で、ある程度のテクスチャを区別できる。他のテクスチャ特徴量には、同時生起行列、差分統計量、フーリエ特徴、自己回帰モデルなどがあることは周知である。画像の異なる領域からテクスチャ特徴量を抽出してそれらのテクスチャ特徴量を分類し、分類結果を利用してテクスチャが異なる領域の境界の検出又はテクスチャが一様な領域の切り出し等に使用される。このように、テクスチャの特徴抽出及び分類、テクスチャが一様な領域の切り出し、テクスチャ領域の境界の検出などを総称してテクスチャ解析と呼ばれることがある。
【０００４】
テクスチャが異なる領域の境界の検出あるいはテクスチャの一様な領域の切り出しを使用して画像を複数の領域に分割することが行われている。すなわち、テクスチャ特徴量に基づく画像の分割とは、解析対象の画像をその中ではテクスチャ特徴量が実質的に同じである複数の領域に分割する手続きである。この手続きは、典型的には、特許文献１、２にも記載されているように、次のように行われる。まず、画像を格子などを用いて複数のブロックに分割した後、各ブロックのテクスチャ特徴量を検出する。複数のブロックから抽出された複数のテクスチャ特徴量を一定の基準に基づいて複数のクラスタに分類する。この分類はクラスタリングとも呼ばれる。その分類を用いて、対応するテクスチャ特徴量が同じクラスタに属し、かつ隣接する複数のブロックが一つの領域に連結されるように、画像が複数の領域に分割される。
【０００５】
テクスチャ特徴量の分類はいろいろな方法により行うことができる。例えば、特許文献１では隣接するブロックのテクスチャ特徴量の差を得るためにグラジェント演算等を行い、テクスチャ特徴量の差の大きい部分を境界としている。特許文献２では各ブロックのテクスチャ特徴量として、濃度ヒストグラムを検出し、複数のブロックに対して検出された複数のテクスチャ特徴量の間の距離が所定の閾値以下のテクスチャ特徴量を同じクラスタに属するように、それらの複数のテクスチャ特徴量を分類することを提案している。
【０００６】
このようにしてテクスチャ特徴量により画像を複数の領域に分割するには、その画像の統計的な性質、形状、大きさに応じた適切なブロックのサイズを設定する必要がある。すなわち、特許文献１でも指摘されているように、ブロックサイズを小さくすると、テクスチャ特徴量を検出するための情報を減らすことになり、検出されるテクスチャ特徴量の統計的な信頼度は低いものになる。すなわち、ブロックを小さくすると、同一のテクスチャと判断される大きな領域のごく一部を、テクスチャ特徴量を検出する対象にすることになり、局所的なテクスチャのゆらぎが直接検出結果に影響してしまい、その結果、領域の不必要な併合又は分割が生じる恐れが生じる。
【０００７】
より具体的に説明すると、より大きな互いに隣接するブロックについてテクスチャ特徴量を検出すると異なるテクスチャ特徴量が検出されるにも拘わらず、そのブロックより小さな隣接する複数のブロックのそれぞれについてテクスチャ特徴量を検出すると、それらの小さなブロックに対して検出されるテクスチャ特徴量が、テクスチャ特徴量の局所的な変動の結果、同一と判断されることが偶然に起こり、その場合には、それらのブロックが一つの領域に併合されてしまうことが生じる。
【０００８】
逆に、より大きな互いに隣接するブロックについてテクスチャ特徴量を検出すると同一のテクスチャ特徴量が検出されるにも拘わらず、そのブロックより小さな隣接する複数のブロックのそれぞれについてテクスチャ特徴量を検出すると、テクスチャ特徴量の局所的な変動の結果、それらの小さなブロックに対して検出されるテクスチャ特徴量が異なると判断されることが起こり得る。この場合にはそれらのブロックが異なる領域に属するように、領域が決定される。
【０００９】
以上から分かるように、複数のブロックのそれぞれから抽出された統計的なテクスチャ特徴量に基づいてそれらのブロックを併合するか否かを判断するために用いる、テクスチャ特徴量の統計的な信頼度を得るためには、そのブロックサイズを大きくすることが必要であるということである。しかし、画像を分割して得られる領域の境界は、同じクラスタに属するブロックの辺を連結して決定されるので、不用意にブロックサイズを大きくすると、分割して得られる領域の境界位置の分解能は低くなる。すなわち、分割で得られる領域の境界位置はブロックのサイズを単位として決定されるので、ブロックサイズが大きくなると、境界はがたがたのものになってしまう。したがって、分割により得られる複数の領域の境界位置の分解能を高くする（小さい単位で境界位置の変化を示せるようにする）には、ブロックサイズを小さく設定することが必要である。
【特許文献１】特開平６−６０１８２号公報
【特許文献２】特開２００２−１７０１２２号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
以上から明らかなように、従来技術では、テクスチャ特徴量の統計的な信頼度の向上に対するブロックサイズの影響と、テクスチャ特徴量に基づく領域の境界位置の分解能の向上に対するブロックサイズの影響が相反するため、テクスチャ特徴量の統計的な信頼度を所望の値にするとともに、画像を分割して得られる領域の境界位置の分解能を所望の値にすることが難しい。
【００１１】
したがって、本発明の目的は、テクスチャ特徴量の統計的な信頼度を所望の値にし、かつ画像を分割して得られる領域の境界の位置の分解能も所望の値にすることを可能にする、画像を分割可能なプログラム及び画像分割方法を提供することである。
【課題を解決するための手段】
【００１２】
既に述べたように、画像内のある領域から検出されるテクスチャ特徴量の統計的な信頼度を所望の高い値にするには、その所望の信頼度の値に対応してその領域のサイズを大きくすることが必要である。すなわち、その領域から抽出されるテクスチャ特徴量が、その領域内でのテクスチャの局所的な影響を受けないように、その領域のサイズを適正な大きさにする必要がある。このことに関連して、本発明者は以下のことに気付いた。まず、統計的な信頼度が高いテクスチャ特徴量が、ある領域から検出された場合、そのテクスチャ特徴量は、その領域内の局所的なテクスチャの変動の影響を余り受けていないので、その領域内の中心付近にある部分領域に関するテクスチャ特徴量として使用できる可能性があることに気づいた。
【００１３】
更に、本発明者は、この発見を更に発展させて、ブロックより大きな、そのブロックを中心付近に含む特徴抽出領域からテクスチャ特徴量を検出して、検出されたテクスチャ特徴量をそのブロックのテクスチャ特徴量として使用することを複数のブロックについて行えば、テクスチャ特徴量の一様な領域及びテクスチャ特徴量が異なる領域の境界を、特徴抽出領域のサイズより小さなブロックサイズで決定できること、そのように決定できれば、テクスチャ特徴量の統計的な信頼度を維持し、かつ画像をテクスチャが一様な領域に分割するときの境界の位置の分解能を、テクスチャ特徴量を抽出する特徴抽出領域より小さなブロックのサイズにできる可能性があることに気付いた。
【００１４】
このような考えに基づき、実際の画像について実験してみたところ、上記の考えが実際の画像に適用できることが判明した。実験ではテクスチャ特徴量として濃度ヒストグラムを使用した。複数の濃度ヒストグラムの分類には、ヒストグラム間の距離と利用者が指定した閾値を使用した。実験は他のテクスチャ特徴量についても行った。
【００１５】
本発明は、このように、発明者による着眼と実験の結果とに基づいてなされたものである。すなわち、本発明では、テクスチャ特徴量を検出する領域として、各ブロックに対応して、当該ブロックより大きな、当該ブロックを中心付近に含む特徴抽出領域を使用し、その特徴抽出領域からテクスチャ特徴量を抽出するようにし、抽出されたテクスチャ特徴量を当該特徴抽出領域に含まれた当該ブロックのテクスチャ特徴量として使用し、そのテクスチャ特徴量に基づいて画像をブロックを単位として複数の領域に分割するものである。言い換えると、従来のテクスチャ特徴量に基づく画像の領域分割においてブロックに持たせていた、領域の境界が位置し得る空間的な位置を当該ブロックの辺上に来るように規制するという境界位置規制役割と、テクスチャ特徴量を検出する対象とする画像の領域を規制するテクスチャ特徴抽出領域規制役割という二重の役割のうち、後者の役割をブロックとは別の、ブロックより大きな特徴抽出領域に持たせるようにしたものである。
【００１６】
すなわち、本発明に係る画像を分割可能なプログラムの一つの望ましい態様は、解析対象の画像を分割して得られる所定の大きさを有する複数のブロックの各々に対して、当該ブロックより大きく、当該ブロックを中心付近に含む特徴抽出領域の画像から所定の種別の統計的なテクスチャ特徴量を、当該ブロックの画像に関するテクスチャ特徴量として検出するテクスチャ特徴量検出ステップと、前記複数のブロックのそれぞれに対応して検出された複数のテクスチャ特徴量を複数のクラスタに分類するテクスチャ分類ステップと、それぞれに対応して検出されたテクスチャ特徴量が同一のクラスタに属し、かつ互いに隣接する複数のブロックを連結して一つの領域を生成することにより、前記画像を複数の領域に分割する画像分割ステップと、をコンピュータに実行させるものである。
【００１７】
これにより、ブロックのサイズと特徴抽出領域のサイズを独立な値に決定することが可能になる。すなわち、ブロックのサイズは、分割で得られる領域の境界の位置を所望の細かい分解度で規制するのに必要な小さい値にし、一方、特徴抽出領域のサイズをブロックより大きな、テクスチャ特徴量の統計的な信頼度が所望の値にするのに必要な十分大きいサイズにすることが可能になる。したがって、テクスチャ特徴量の信頼度と、分解で得られる領域の境界位置の分解能の両方を所望の値にすることが可能になる。
この結果、テクスチャ特徴量の統計的な信頼度を従来技術で大きなブロックを用いたときに得られる値から落さないで、分割で得られる領域の境界位置の分解能を、従来技術によりそのようなサイズのブロックを用いたときに得られる値より高くすることが可能になる。
【００１８】
各特徴抽出領域から抽出されたテクスチャ特徴量を、当該特徴抽出領域内のブロックのテクスチャ特徴量として使用するうえでは、当該ブロックは、対応する特徴抽出領域内のほぼ中心位置に位置することが望ましいが、最も望ましいのは、各ブロックの中心が対応する特徴抽出領域内の中心と一致することである。
【００１９】
ブロックと対応する特徴抽出領域としてともに正方形の領域を使用することが考えた場合、ブロックが、対応する特徴抽出領域の完全な中心に位置するためには、ブロックの一辺に含まれる画素数と、対応する特徴抽出領域の一辺に含まれる画素数の偶奇が同じであることが必要である。例えば、ブロックの一辺の画素数が奇数の場合、特徴抽出領域の一辺の画素数も奇数であれば、ブロックの幾何学的な中心に位置する画素と特徴抽出領域領域の幾何学的な中心に位置する画素とが存在し、それらの画素の位置を一致させることにより、ブロックを特徴抽出領域領域の中心に位置させることができる。あるいは、ブロックと、対応する特徴抽出領域がともに正方形の領域であり、ブロックの一辺に含まれる画素数が偶数の場合、当該ブロックの幾何学的な中心には画素は存在しないで、ブロックの幾何学的な中心を取り囲む４つの画素が存在することになる。したがって、特徴抽出領域の幾何学的な中心にブロックが位置するには、特徴抽出領域の一辺の画素数も偶数であれば、その幾何学的な中心を取り囲む４つの画素がブロックの中心を取り囲む４つの画素と一致するようにブロックを特徴抽出領域内に配置すれば、ブロックはその特徴抽出領域の中心に位置することになる。
【００２０】
したがって、ブロックと特徴抽出領域がいずれも正方形の場合にはそれぞれの一辺を構成する画素数の偶奇が一致すれば、ブロックを特徴抽出領域の中心に位置させることができる。しかし、以上から分かるように、ブロックと特徴抽出領域の一辺の画素数の偶奇が同じでなくても、ブロックの中心を特徴抽出領域の中心に最も近づけた場合、両者の中心の位置ずれは、半画素分に抑えることができるので、この程度のずれは結果には大きくは影響しないと期待されるので、ブロックと特徴抽出領域のそれぞれの辺を構成する画素数の偶奇が異なっていても本発明は適用することができる。
【００２１】
本発明の他の望ましい態様では、前記複数のブロックの各々は１画素の領域であり、各画素に対応する前記特徴抽出領域は、当該特徴抽出領域領域の中心付近に当該画素を含むものである。これにより、統計的な信頼度が所望の値に維持されたテクスチャ特徴量を用いて画像を複数の領域に分割でき、得られる領域の境界の位置を１画素単位で決定することができ、境界位置の分解能を一番高くすることができる。より望ましくは、各ブロックである各画素に対応する前記特徴抽出領域は、その領域の幾何学的な中心に当該画素を含む領域であることであり、当該特徴抽出領域は、その中心に位置する画素に対応する領域とすることができる。このためには、特徴抽出領域が正方形の場合は、その特徴抽出領域の一辺の画素数が奇数であればよい。これにより、当該１画素からなるブロックが、特徴抽出領域の中心付近にある場合の中でも、テクスチャ特徴量が当該ブロック（画素）に最もよく対応したものとなり、当該テクスチャ特徴量により領域を分割すれば、より望ましい分割結果を得ることができる。
【００２２】
このような、特徴抽出領域としては、正方形以外の他の形状、例えば円形の領域を使用することもできる。特徴抽出領域が円形の場合には、当該円の直径を構成する画素の数が奇数であれば、当該一画素からなるブロックを特徴抽出領域である円の中心に位置させることができる。しかし、既に述べたように、特徴抽出領域である円の直径を構成する画素の数が偶数であっても、ブロックである画素として特徴抽出領域の中心付近に位置する４つの画素の一つを使用した場合、両者の位置ずれは、半画素分に抑えることができるので、この程度のずれは結果には大きくは影響しないと期待されるので、ブロックが１画素で特徴抽出領域である円の直径を構成する画素数が偶数であっても本発明は適用することができる。
【００２３】
なお、正方形のブロックの一辺のを構成する画素数が複数であるときには、従来技術に比べて境界の位置の分解能を高められる点ではブロックの画素数が１の場合と同じであるが、分割で得られる領域の境界の位置の分解能は、ブロックが１画素の場合よりも悪くなるが、テクスチャ解析の対象となるブロックの数をＮとすると、それらのブロックから抽出されるテクスチャ特徴量の抽出のためのデータの量及びそれらのデータに対する分類処理のためのデータ処理量は、ブロックの画素数が１の場合に比べると、ブロックの個数の２乗分の１でよいことになり、実用的な利点が大きい。したがって、領域分割の境界の位置の分解能を１画素とする必要がない場合には、ブロック内の画素数を複数にして、使用するブロックの総数を減らすことが望ましいと言える。
【００２４】
本発明の具体的な望ましい態様では、各ブロックに対応する前記特徴抽出領域内の画像に関する前記所定の種別の統計的テクスチャ特徴量は濃度のヒストグラムであり、前記分類ステップは、前記検出された複数のテクスチャ特徴量を、それらの間の距離とあらかじめ指定された距離の閾値とに基づいて、互いの間の距離が前記閾値を超える一組のテクスチャ特徴量は異なるクラスタに属するように、かつ距離の近いものは同じクラスタに属するように、複数のクラスタに分類するものである。
【００２５】
このように、濃度のヒストグラムというテクスチャ特徴量を使用して、実際の解析対象画像を上記望ましい態様にしたがって複数の領域に分割したところ、分割の結果得られた複数の領域の各々は、その中ではヒストグラムがほぼ一様であることが分かり、画像の領域への分割は望ましい結果となることが判明した。同時に、テクスチャ特徴量として濃度ヒストグラムを使用して距離でテクスチャ特徴量を分類することは計算量も少なくて済むという利点もある。
【００２６】
本発明に係る画像分割方法の一つの望ましい態様は、解析対象の画像を分割して得られる所定の大きさを有する複数のブロックの各々に対して、当該ブロックより大きく、当該ブロックを中心付近に含む特徴抽出領域の画像から所定の種別の統計的なテクスチャ特徴量を、当該ブロックの画像に関するテクスチャ特徴量として検出するテクスチャ特徴量検出ステップと、前記複数のブロックのそれぞれに対応して検出された複数のテクスチャ特徴量を複数のクラスタに分類するテクスチャ分類ステップと、それぞれに対応して検出されたテクスチャ特徴量が同一のクラスタに属し、かつ互いに隣接する複数のブロックを連結して一つの領域を生成することにより、前記画像を複数の領域に分割する画像分割ステップと、を含むものである。
【発明の効果】
【００２７】
以上のように、本発明の望ましい態様によれば、所望の値の統計的な信頼度を有するテクスチャ特徴量を用いて画像を複数の領域に分割でき、かつ画像分割で得られる複数の領域の境界位置の分解能を所望の値にすることが可能になる。
【発明を実施するための最良の形態】
【００２８】
以下、本発明に係る画像を分割可能なプログラム及び画像分割方法のいくつかの実施形態を図面を参照して説明する。第２以降の実施の形態については、第１の実施の形態との相違点を主に説明するに止める。
【００２９】
＜発明の実施の形態１＞
本実施の形態では、画像の分割処理は概略以下の４ステップで行われる。
（１）処理条件の設定
以下の処理に必要なデータを利用者に入力させる。利用者は処理に必要なデータをあらかじめ、例えば以下の処理を実行させて試行錯誤的に決定しておく。
【００３０】
（２）テクスチャ特徴量の検出
画像を適当な大きさの複数のブロックに分割して、更に、ブロックを中心付近に含み、当該ブロックより大きな特徴抽出領域からテクスチャ特徴量を検出して、そのテクスチャ特徴量を当該ブロックのテクスチャ特徴量として使用する。ブロックサイズより大きな特徴抽出領域からテクスチャ特徴量を抽出してブロック単位で領域を分割するのに使用可能なテクスチャ特徴量を検討したところ、画素の濃度のヒストグラムが使用可能なテクスチャチャ特徴量の一つであることが本発明者による実験で確認できた。したがって、本実施の形態では、テクスチャ特徴量の一例として特徴抽出領域内の画素の濃度のヒストグラムを使用する。
【００３１】
（３）テクスチャ分類
複数のブロックに対応する複数の特徴抽出領域から検出された複数のテクスチャ特徴量を所定の基準にしたがって複数のクラスタに分類する。このように複数のテクスチャ特徴量を複数のクラスタに分類することを、以下では複数のブロックを複数のクラスタに分類するということがある。なお、このテクスチャの分類処理は一般にはクラスタリングとも呼ばれる。ブロックサイズより大きな特徴抽出領域からテクスチャ特徴量を抽出してブロック単位で領域を分割するのに使用可能なテクスチャ特徴量の分類方法を検討したところ、一例として、クラスタ間の距離により分類する方法が使用可能であることが本発明者による実験で確認できた。したがって、本実施の形態では、クラスタ間の距離によりテクスチャを分類する方法を使用する。この方法では、最初に異なるブロックのテクスチャ特徴量をそれぞれ異なるクラスタに割り当て、その後クラスタ間の距離を計算し、異なるクラスタ組のうち最短の距離にある一組のクラスタを併合することを繰り返す。
【００３２】
クラスタ間の距離による分類に当たっては、クラスタ間の距離の最大値を使用する最長距離法に基づく分類を使用する。ここで最長距離法による分類は、二つのクラスタに属する複数のテクスチャ特徴量の異なる組合せに対応してそれぞれの組合せの間の距離である複数の距離を計算し、それらの距離のうちの最長の距離を当該二つのクラスタ間の距離とするものである。最短距離法は稠密なクラスタを生成するという好ましい特徴がある。また、テクスチャ特徴量の分類にあっては、上記のように、クラスタの異なる組合せの間の距離のうち最短の距離にある一組のクラスタを併合するが、最短の距離であっても、その距離が利用者が指定した閾値以上である場合には、その一組のクラスタは併合しないようにする。これにより、利用者が希望する距離の閾値以内にある一組のクラスタが併合され、そうでないクラスタの組は併合されないように、併合されるクラスタ間の距離を制限できる。
【００３３】
特許文献２では、従来技術にしたがってブロックを特徴抽出領域として使用する場合において、クラスタリングに使用する距離として、テクスチャ特徴量として濃度ヒストグラムを使用する場合には、二つのブロックに対する二つの濃度ヒストグラムの各濃度における頻度差の絶対値の総和で定義した距離を使用できることが同じ発明者により提案されている。本実施の形態においても実験したところ、同じようにクラスタ間の距離を定義して良好な領域分割結果を得られることが本発明者による実験で判明したので、この距離によるテクスチャ分類方法を本実施の形態でも使用する。このような距離を用いて複数のブロックに対する複数のテクスチャ特徴量を複数のクラスタに分類できる。分類の完了後に、各ブロックに対するテクスチャ特徴量が所属すると決定されたクラスタの番号を当該ブロックに割り当てる。この結果、テクスチャ特徴量により複数のブロックをクラスタに分類したことになる。
【００３４】
（４）領域分割
同じクラスタに属し、互いに隣接している複数のブロックを一つの領域として抽出することにより、解析対象画像を複数の領域に分割する。
【００３５】
以下では、以上の処理を実行して解析対象画像をテクスチャに基づいて複数の領域に分割可能な装置、プログラム、方法の詳細を説明する。
図１は、本発明に係る画像を領域分割可能な装置の一つの実施形態の概略ブロック図である。符号１は、上記装置の一つの実施の形態の全体を指す。本装置１は、例えばパソコン又はワークステーションにより実現される処理装置１０と、メインメモリとして使用されるＲＡＭ（ランダムアクセスメモリ）（図示せず）及び磁気ディスク記憶装置のような補助記憶装置（図示せず）とを含む記憶装置２０と、入出力装置３０とを備えている。入出力装置３０は、キーボード及びマウス等のポインティングデバイスを含む入力装置３１と、ＣＲＴディスプレイ装置等の表示装置３２又はプリンタ３３などの出力装置を備えている。入力装置３１はパラメータの入力やコマンドの起動などに使われる。表示装置３２又はプリンタ３３は、テクスチャ解析の対象とする画像、当該画像から抽出された複数のテクスチャを複数のクラスタに分類して得られる分類結果データや領域分割結果データなどの表示又は印字に使われる。記憶装置２０内にデータが記憶されるときに、当該データが図示しないＲＡＭと図示しない補助記憶装置のいずれに記憶されるかは、あらかじめ当該データ毎に決められている。
【００３６】
処理装置１０には、画像を分割可能なプログラム４０が組み込まれている。プログラム４０は、処理条件設定部１００と、テクスチャ特徴量検出部２００と、テクスチャ分類部３００と、領域分割部４００という複数のモジュールとを含む。これらのモジュールは、ここに列挙した順に実行される。テクスチャ分類部３００は、初期値設定部５００と、最短距離クラスタ組検出部６００と、クラスタ併合部７００と、クラスタ番号付与部８００とを含んでいる。領域分割部４００は、領域境界垂直方向部分検出部９００と領域境界水平方向部分検出部９５０とを含んでいて、これらのモジュールを順次実行する。
【００３７】
処理装置１０は、プログラム４０内のそれぞれのモジュールが実行されたときに、処理条件を設定する機能ブロック、テクスチャ特徴量を検出する機能ブロック、テクスチャを分類する機能ブロック、画像を複数の領域に分割する機能ブロックという複数の機能ブロックとして動作する。したがって、処理装置１０とプログラム４０のこれらのモジュールにより、それぞれのモジュールに対応する複数の機能ブロックが実現されることになる。したがって、処理装置１０と、記憶装置２０と、入出力装置３０と、処理条件設定部１００、テクスチャ特徴量検出部２００、テクスチャ分類部３００、領域分割部４００は、本発明に係る、画像を領域に分割可能な装置の一つの実施の形態を実現することになる。
【００３８】
プログラム４０は、本発明に係る、画像を分割可能なプログラムの一つの実施の形態を実現するものであり、記録媒体に記録してあるいはネットワークを介して記憶装置２０に記憶され処理装置１０で実行される。画像を分割可能なプログラム４０は、記録媒体に記録されて又はネットワークを介して販売可能である。処理装置１０が画像を分割可能なプログラム４０を実行して画像を分割する手順は、本発明に係る画像分割方法の一つの実施の形態を実現する。
【００３９】
記憶装置２０には、解析対象画像の画像データ２１があらかじめ記憶される。以下では断らない限り、画像データ２１は、白黒の多値画像（グレイスケール画像）のデータと仮定する。処理条件データ２２の大部分は、プログラム４０の開始時に利用者により入力されるデータである。テクスチャ特徴量データ２３、テクスチャ分類結果データ２４、領域分割結果データ２５は、プログラム４０の実行時に生成され、記憶装置２０に記憶される。テクスチャ分類結果データ２４は、クラスタ別メンバーブロックデータ２４Ａ、クラスタ別メンバー数データ２４Ｂ、クラスタ間距離データ２４Ｃとを含んでいる。領域分割結果データ２５は、ブロック別クラスタ番号データ２５Ａ、領域分割済み画像データ２５Ｂとを含んでいる。
【００４０】
図２（ａ）は、画像を複数の領域に分割するときに使用される複数のブロックと複数の特徴抽出領域の概略を説明するための図である。図において、２１Ａは、画像データ２１で表される解析対象画像を表し、２１Ｂは、この画像を分割して得られる同じ大きさのブロックを表す。典型的には、各ブロックは正方形であるが、他の形状、例えば矩形でもよいが、正方形のほうが矩形よりは望ましい。２１Ｎは、各ブロック、例えば２１Ｂに対して定義される特徴抽出領域の一つである。ブロック群の左側に垂直方向に並べて記載された数値０、１、２、…は、その右側にある複数のブロックの行番号の例を示す。ブロック群の上側に水平方向に並べて記載された数値０、１、２、…は、その下にある複数のブロックの列番号の例を示す。ブロック内に記載された数値０、１、２…は、全ブロックに付与された一連のブロック番号のうちの当該ブロックに割り当てられたブロックの通し番号（以下、ブロック番号と呼ぶことがある）の例を示す。後に説明する処理において、各ブロックを識別する情報として、これらの行番号と列番号の組を用いる場合とブロック番号を用いる場合とがある。
【００４１】
本発明では、特徴抽出領域２１Ｎは、対応するブロックのサイズとは独立に決定可能である。すなわち、特徴抽出領域２１Ｎのサイズは、対応するブロック２１Ｂより大きく、当該ブロック２１Ｂを中心付近に含むように決定される。特徴抽出領域２１Ｎの大きさは、抽出されるテクスチャ特徴量の統計的な信頼度が所望の値となるように、利用者により試行錯誤的に決定される。例えば、本実施の形態において、見本として使用する画像あるいは実際にテクスチャにしたがって複数の領域に分割しようとする画像に対して同じブロックサイズのもとで、特徴抽出領域２１Ｎのサイズをいろいろ変えてテクスチャ分類と領域分割を実行し、得られたテクスチャ分類結果と領域分割の結果を判断し、テクスチャ分類結果と領域分割結果が適切であると判断されるサイズを特徴抽出領域２１Ｎのサイズに使用するようにすることができる。
【００４２】
ブロックのサイズも、領域分割の結果得られる複数の領域の境界位置の分解能が適切となるように、利用者により試行錯誤的に決定される。例えば、本実施の形態において、上記のようにして特徴抽出領域２１Ｎのサイズを決定した状態で、ブロックのサイズをいろいろ変えて、得られる分割領域の境界位置の分解能が十分であるように、すなわち、境界のがたがたが問題に思われない程度となるように、ブロックのサイズを決める。画像の領域分割の結果得られる複数の領域の境界位置の分解能は、ブロックサイズが小さいほどよい、すなわち、ブロックサイズが小さいほど領域の境界のがたがたは小さい。したがって、領域の境界位置の分解能の点ではブロックサイズが小さいほどよい。しかし、ブロックサイズが小さければ、同じ画像を分割して得られるブロックの総数が増え、それらのブロックに関するデータ処理量及び処理すべきデータ量が増大するという問題がある。
【００４３】
したがって、処理装置１０におけるデータ処理量、データ処理に要する時間あるいは処理すべきデータの量からみて、ブロックサイズを余りに小さくすることが望ましくない場合があり得る。そのような場合には、領域分割の結果得られる領域の境界位置の分解能（境界位置のがたがたの少なさ）が十分であると考えられるときは、それ以上にブロックサイズを小さくしないほうがよい。しかし、処理装置１０における処理量、処理に要する時間あるいは処理すべきデータの量からみてもブロックサイズを小さくしても特に問題が生じない場合には、ブロックサイズを小さくすることが望ましく、後に説明するように、極端にはブロックを１画素を含む領域にしてもよい。
【００４４】
同図（ｂ）は、解析対象画像２１Ａとブロック２１Ｂと特徴抽出領域２１Ｎとの関係をより詳細に示すための図である。図において、一番外側にある正方形領域ＨＸＹＺは、解析対象画像２１Ａの画素が存在する領域の例を示し、正方形領域ＡＢＣＤは、解析対象画像２１Ａ内で最も左上に位置するブロック２１Ｂの例である。正方形ＨＩＪＫは、当該ブロック２１Ｂに対応する特徴抽出領域２１Ｎの例である。解析対象画像２１Ａの全体を表す正方形領域ＨＸＹＺは、ここでは５５×５５画素からなり、正方形領域ＡＢＣＤで表されるブロック２１Ｂは、４画素×４画素からなり、正方形領域ＨＩＪＫで表される特徴抽出領域２１Ｎは、１６画素×１６画素からなると仮定している。以下では、正方形のブロック、正方形の特徴抽出領域等の正方形の領域のサイズとして、簡単化のためにその正方形の一辺を構成する画素の数を使用することがある。今の例では、解析対象画像２１Ａ、ブロック２１Ｂ、特徴抽出領域２１Ｎのそれぞれのサイズは、５５画素、４画素、１６画素である。これらのサイズは一例であり、変更してもよいことは言うまでもない。
【００４５】
今の例では、ブロック２１Ｂと特徴抽出領域２１Ｎのサイズはいずれも偶数であり、サイズの偶奇が同じであるので、ブロック２１Ｂは、特徴抽出領域２１Ｎの中心に位置することができる。図においては、左上隅の正方形領域ＡＢＣＤで表されているブロック２１Ｂは、対応する左上隅の正方形領域ＨＩＪＫで表されている特徴抽出領域２１Ｎの中心に位置している。今の例では、各ブロックのサイズは４画素と仮定しているので、複数のブロックは、正方形領域ＡＢＣＤを４画素ずつ図の水平方向又は垂直方向に移動した位置に設けられる。
【００４６】
各ブロック２１Ｂに対応して、正方形領域ＨＩＪＫと同じ大きさの図示しない特徴抽出領域２１Ｎが使用される。各ブロック２１Ｂのサイズは４画素であるので、各ブロックに対する特徴抽出領域２１Ｎは、４画素ずつ図の水平方向又は垂直方向に移動した位置に設けられる。すなわち、隣接する特徴抽出領域２１Ｎは４画素分の行又は列の部分だけ互いに重複している。領域ＨＭＲＷが特徴抽出領域２１Ｎが存在しうる領域である。
【００４７】
特徴抽出領域２１Ｎは、解析対象画像２１Ａ内に位置しなければならない。特徴抽出領域２１Ｎの存在領域ＨＭＲＷは、特徴抽出領域ＨＩＪＫを解析対象画像２１Ａの範囲内でブロックのサイズである４画素ずつ図の水平方向又は垂直方向に移動した位置に設けられる。したがって、解析対象画像２１Ａの一部には特徴抽出領域が設けられない。図の例では、正方形領域ＨＭＲＷ以外の周辺の領域ＭＸＹＺＷＲは、解析対象画像２１Ａに含まれているが、本実施の形態でのテクスチャ解析には使用されない領域である。
【００４８】
各特徴抽出領域２１Ｎの中心位置に対応するブロックが設けられる。領域ＡＥＦＧが、ブロック２１Ｂが存在しうる領域を示している。領域ＡＥＦＧは、今の場合正方形領域である。領域ＡＥＦＧ内の小さい正方形領域は、それぞれブロックを表す。解析対象画像２１Ａの画素数が５５×５５画素の場合、図に示すように、ブロック番号＃０から＃９９までの１００個のブロックが生成される。このように、ブロックが存在する領域ＡＥＦＧは、特徴抽出領域２１Ｎが存在しうる正方形領域ＨＭＲＷの内側に位置する。
【００４９】
領域ＨＭＲＷ内の左下角の正方形領域ＬＭＮ０は、解析対象画像２１Ａ内で最も左下に位置し得る特徴抽出領域を示し、領域ＡＥＦＧ内の左下角のブロック＃９０が、この特徴抽出領域２１Ｎに対応するブロックである。同様に、領域ＨＭＲＷ内の右下角の正方形領域ＰＱＲＳは、解析対象画像２１Ａ内で最も右下に位置し得る特徴抽出領域を示し、領域ＡＥＦＧ内の右下角のブロック＃９９が、この特徴抽出領域２１Ｎが対応するブロックである。領域ＨＭＲＷ内の右上角の正方形領域ＴＵＶＷは、解析対象画像２１Ａ内で最も右上に位置し得る特徴抽出領域を示し、領域ＡＥＦＧ内の右上角のブロック２１Ｂがこの特徴抽出領域２１Ｎに対応するブロックである。
【００５０】
図に示すように、左上の特徴抽出領域２１Ｎの左上角の頂点にある画素Ｈの位置を原点とし、図の垂直下方向と水平右方向にｘ軸とｙ軸を設定する。解析対象画像２１Ａである領域ＨＸＹＺの頂点の座標（ｘ，ｙ）は、それぞれＨ（０，０）、Ｘ（５４，０）、Ｙ（５４，５４）、Ｚ（０，５４）であるとする。特徴抽出領域が存在する正方形領域ＨＭＲＷの頂点の座標は、Ｈ（０，０）、Ｍ（５１，０）、０（５１，５１）、Ｗ（０，５１）である。ブロック＃０に対する特徴抽出領域ＨＩＪＫの頂点の座標は、Ｈ（０，０）、Ｉ（１５，０）、Ｊ（１５，１５）、Ｋ（０，１５）である。この特徴抽出領域ＨＩＪＫに含まれたブロック＃０の頂点の座標は、Ａ（６，６）、Ｂ（９，６）、Ｃ（９，９）、Ｄ（６，９）である。複数のブロックが形成される正方形領域ＡＥＦＧの頂点の座標は、Ａ（６，６）、Ｅ（４６，６）、Ｆ（４６，４６）、Ｇ（６，４６）である。すなわち、ブロック＃０は、左上角の特徴抽出領域ＨＩＪＫから、ｘ、ｙ座標がそれぞれ６画素分ｘ軸方向とｙ軸方向に移動した位置にある。この位置の移動量は、特徴抽出領域２１Ｎのサイズ１６とブロック２１Ｂのサイズ４との差の半分に等しい。
【００５１】
図に示すように、ブロックの行数Ｒow、列数Ｃolはともに１０である。ブロックの行番号ｉＢlkと列番号ｊＢlkは、ともに０からそれぞれ（ブロックの行数Ｒow）−１と（ブロックの列数Ｃol）−１までの値を取りうる。ブロックの総数Ｎｂはブロックの列数Ｃol×行数Ｒowにより与えられる。ブロック番号Ｉｂは、値０〜Ｎｂ−１までの値を持つことになる。  
【００５２】
一般に、画像は矩形である場合もあるので、画像の縦方向の画素数と横方向の画素数をそれぞれＮｘ、Ｎｙとし、ブロックと特徴抽出領域はいずれも正方形とし、それぞれのサイズをbＳize、nＳizeとしたときに、当該画像に形成されるブロックの行数Ｒowと列数Ｃolは、以下のとおりである。
Ｒow＝[(Ｎｘ−Δ)/bＳize]        （１）
Ｃol＝[(Ｎｙ−Δ)/bＳize]        （２）
ここで、Δ＝nＳize−bＳize           （３）
記号[  ]は、その中の値を超えない整数を意味する。式３から分かるように、記号Δは特徴抽出領域のサイズとブロックサイズとのサイズ差である。
【００５３】
図２（ｂ）の例では、Ｎｘ＝Ｎｙ＝５５、nＳize＝１６、bＳize＝４であるので、サイズ差Δ＝１２であり、ブロックの行数Ｒow、列数Ｃolはいずれも１０になる。ブロック番号Ｉｂとブロックの行番号ｉＢlkと列番号ｊＢlkとの間に次式４の関係がある。
Ｉｂ＝ｉＢlk×Ｃol＋ｊＢlk         （４）
【００５４】
画像分割可能なプログラム４０は、解析対象画像２１Ａを複数のブロック２１Ｂに分割し、各ブロック２１Ｂに対応する、当該ブロックより大きな特徴抽出領域２１Ｎの画像からテクスチャ特徴量を抽出し、複数のブロック２１Ｂに対して抽出された複数のテクスチャ特徴量を分類して複数のクラスタを決定し、前記複数のブロック２１Ｂを、同じクラスタに属し、かつ隣接するブロックを連結して一つの領域を生成することにより、前記画像を複数の領域に分割するものである。
【００５５】
図１に戻り、プログラム４０は、起動されると処理条件設定部１００を起動する。
図３（ａ）は、処理条件設定部１００の処理の一例を示す概略フローチャートである。処理条件設定部１００は、起動されると、まず、画像データ２１（図１）で示される解析対象画像の縦と横のサイズＮｘ、Ｎｙを判別する（ステップＳ１０１）。ブロックサイズbＳizeを利用者に入力させる（ステップＳ１０２）。更に、特徴抽出領域のサイズnＳizeを利用者に入力させる（ステップＳ１０３）。更に、テクスチャの分類に使用する距離の閾値Ｔを利用者に入力させる（ステップＳ１０４）。閾値Ｔは後に説明する。更に、式３に従いサイズ差Δを計算する（ステップＳ１０５）。更に、式１、２に従いブロックの行数Ｒowと列数Ｃolを計算する（ステップＳ１０６）。
【００５６】
以上の処理により得られたデータを処理条件データ２２として記憶装置２０に記憶し（ステップＳ１０７）、処理条件設定部１００の処理が終了する。なお、以下では、解析対象画像２１Ａ上の原点の位置として、図２（ｂ）に例示したように、解析対象画像２１Ａの左上角の画素の位置を使用する。他の位置を原点位置にしてもよく、また、処理条件設定部１００により、処理条件の一つとして原点位置を利用者に入力させてもよい。
【００５７】
同図（ｂ）は、処理条件データ２２の例を示す図である。処理条件データ２２には、一例として、解析対象画像の縦サイズＮｘ（２２Ａ）、横サイズＮｙ（２２Ｂ）、ブロックサイズbＳize（２２Ｃ）、特徴抽出領域サイズnＳize（２２Ｄ）、距離の閾値Ｔ（２２Ｅ）、サイズ差Δ（２２Ｆ）、ブロック行数Ｒow（２２Ｇ）、ブロック列数Ｃol（２２Ｈ）が含まれる。
【００５８】
図１に戻り、プログラム４０は、処理条件設定部１００の処理が終了すると、テクスチャ特徴量検出部２００を起動する。
図４（ａ）は、テクスチャ特徴量検出部２００の処理の一例を示す概略フローチャートである。テクスチャ特徴量検出部２００は、各ブロックに対応する特徴抽出領域からテクスチャ特徴量を検出するものである。以下では、テクスチャ特徴量検出部２００は、各特徴抽出領域のテクスチャ特徴量の例として濃度ヒストグラムを検出するものとする。同図（ｂ）は、テクスチャ特徴量検出部２００により生成され、記憶装置２０に記憶されるテクスチャ特徴量データ２３としての濃度ヒストグラムデータの例を示す図である。以下では、この濃度ヒストグラムデータも濃度ヒストグラムデータ２３と呼ぶことがある。このデータは、複数のブロックにそれぞれ対応する複数の特徴抽出領域に関する複数の濃度ヒストグラムデータを含むものである。具体的には、このデータ２３として、例えば、ブロックの行番号ｉＢlk、列番号ｊＢlk、濃度ｇをインデックスとする３次元配列データであるhistgram[ｉＢlk][ｊＢlk][ｇ]を使用する。その配列の要素[ｉＢlk][ｊＢlk][ｇ]には、行番号ｉＢlk、列番号ｊＢlkのブロックに対応する特徴抽出領域での濃度ｇの画素の発生頻度が格納される。濃度ヒストグラムデータhistgramの全要素の初期値は０である。
【００５９】
図４（ａ）において、テクスチャ特徴量検出部２００は、４つのループから構成されている。すなわち、ステップＳ２０１〜Ｓ２０５を含む変数ｉＢlkに関する第１のループと、ステップＳ２０５〜Ｓ２０８を含む変数ｊＢlkに関する第２のループと、ステップＳ２０８〜Ｓ２１１を含む変数ｉに関する第３のループと、ステップＳ２１１〜Ｓ２１４を含む変数ｊに関する第４のループである。第１のループは複数のブロックの行を順次選択する処理を行う。第２のループは、第１のループで一つの行が選択されるごとに複数のブロック列を順次選択する処理を行う。こうして、第１、第２のループにより選択されたブロック行と列の組合せにしたがって解析対象画像２１Ａ内の全ブロックが順次選択される。
【００６０】
第３のループは、第１、第２のループでいずれかのブロックが選択されるごとに当該選択されたブロックに対応する特徴抽出領域内の複数の画素行を順次選択する処理を行う。第４のループは、第３のループで行が選択されるごとに、複数の画素列を順次選択する。こうして、第３、第４ループにより、選択された画素行と列の組合せにしたがって、特徴抽出領域内の全画素を順次選択される。更に、第４のループでは、選択された画素の画像データを読み出し、その濃度に基づき濃度ヒストグラムデータ２３を更新する処理を実行する。以下、これらの処理の詳細を説明する。
【００６１】
第１のループでは、ステップＳ２０１で変数であるブロックの行番号ｉＢlkを最小値０に設定する。つぎにステップＳ２０２で、ブロックの行番号ｉＢlkがブロック行数Ｒowより小さいか否かが判定される。今の仮定のように、ブロックの行番号ｉＢlkがブロック行数Ｒowより小さいときには、処理はステップＳ２０４に進む。ステップＳ２０４では、変数である列番号ｊＢlkを最小値０に設定する。こうして、最初にブロックとして座標（ｉＢlk，ｊＢlk）が（０，０）であるブロックが選択される。つぎにステップＳ２０５では、ブロックの列番号ｊＢlkがブロック列数Ｃolより小さいか否かが判定され、今の仮定のようにブロックの列番号ｊＢlkがブロック列数Ｃolより小さいときには、処理は第２のループに移る。
【００６２】
第２のループでは、まずステップＳ２０７により、変数ｉを初期値０に設定する。ここで変数ｉは、図２（ｂ）に例示したように、それぞれ注目しているブロックに対応する特徴抽出領域内の画素の垂直方向（ｘ軸方向）の座標を表す変数であり、値０から始まり（特徴抽出領域のサイズnＳize）−１まで変化する。ステップＳ２０８では、ｉ座標が特徴抽出領域サイズnＳizeより小さいか否かが判定され、今の仮定のようにｉ座標が特徴抽出領域サイズnＳizeより小さいときには、処理は第３ループに進む。
【００６３】
第３ループでは、まずステップＳ２１０において、変数ｊが最小値０に設定される。ここで、変数ｊは、図２（ｂ）に例示したように、処理中のブロックに対応する特徴抽出領域内の画素の水平方向（ｙ軸方向）の座標を表す変数であり、値０から始まり（特徴抽出領域のサイズnＳize）−１まで変化する。こうして、ステップＳ２０７とＳ２１０において、処理中のブロックに対する特徴抽出領域内の画素のうち座標（ｉ，ｊ）、今の例では座標（０，０）の画素が選択されることになる。その後、ステップＳ２１１でｊ座標が特徴抽出領域サイズnＳizeより小さいか否かが判定され、今の仮定のようにｊ座標が特徴抽出領域サイズnＳizeより小さいときには、処理は第４ループに移る。
【００６４】
第４ループでは、まずステップＳ２１３において選択された画素の濃度データが読み出される。読み出される画素の特徴抽出領域内の座標（ｉ，ｊ）に対応する解析対象画像２１Ａ上の画素の座標（ｘｉ，ｙｉ）は、次式５、６により与えられる。
ｘｉ＝ｉＢlk＊bＳize＋ｉ    （５）
ｙｊ＝ｊＢlk＊bＳize＋ｊ    （６）
【００６５】
第４のループ内のステップＳ２１３では、選択された画素の画像データｉmage[ｉＢlk＊bＳize＋ｉ][ｊＢlk＊bＳize＋ｊ]を画像データ２１から読み出し、その濃度データの値を濃度値ｇに設定する。ステップＳ２１４では、読み出された濃度データの値ｇに対する濃度ヒストグラムデータhistgram（２３）内の要素histgram[ｉＢlk][ｊＢlk][ｇ]の値を１だけ増大する。こうして、第１、第２のループで選択されたブロック内の画素のうち第３、第４のループで選ばれた座標（ｉ，ｊ）の画素の濃度により、濃度ヒストグラムデータhistgram（２３）が更新される。
【００６６】
第４のループでは、その後ステップＳ２１２でｊ座標が１だけ増大され、ステップＳ２１１で増大後のｊ座標が特徴抽出領域サイズnＳizeより小さいか否かが再度判定され、判定の結果、増大後のｊ座標が特徴抽出領域サイズnＳizeより小さいときには、ステップＳ２１３、Ｓ２１４、Ｓ２１２が繰り返される。こうして、特徴抽出領域内の同じ行に属する複数の画素がｙ座標順に順次選択され、それぞれの画像データに基づいて、ヒストグラムデータhistgramが更新される。ステップＳ２１２でのｊ座標の増大後に、ステップＳ２１１により、増大後のｊ座標が特徴抽出領域サイズnＳizeより小さくない、すなわち、そのサイズに達したと判定されたとき、第４のループの処理は終了し、処理は第３のループに戻る。
【００６７】
第３のループでは、ステップＳ２０９でｉ座標を１だけ増やし、増大後のｉ座標が特徴抽出領域サイズnＳizeより小さいか否かがステップＳ２０８で判定され、増大後のｉ座標が特徴抽出領域サイズnＳizeより小さいと判定されたときには、ステップＳ２１０で再度ｊ座標を値０に設定する。ステップＳ２１１で、増大後のｊ座標が特徴抽出領域サイズnＳizeより小さいか否かが判定され、小さいときには、処理は再度第４のループに移る。
【００６８】
第４のループでは、既に述べたようにしてｊ座標を初期値０から１ずつ増やしてｙ軸方向（ｊ方向）の画素の選択処理及び濃度ヒストグラムデータhistgram（２３）の更新を繰り返す。こうして第３のループで選択された次のｉ座標の行に属する複数の画素が処理される。
【００６９】
以上のように、第３、第４のループが繰り返され、その後、第３のループに戻ってステップＳ２０９でｉ座標が１だけ増大された後のステップＳ２０８で、増大後のｉ座標が特徴抽出領域サイズnＳizeより小さくない、すなわち、特徴抽出領域サイズnＳizeに達したと判定されたときには、第３のループが終了し、処理は第２のループに戻る。
【００７０】
第２のループでは、ステップＳ２０６において、ブロックの列番号ｊＢlkを１だけ増大し、先に述べたようにして列方向に隣接する次のブロックが選択され、当該選択された次のブロックに対応する特徴抽出領域に対して第３、第４のループによる画素の選択とヒストグラムデータhistgramの更新が、既に説明したのと同じように行われる。
【００７１】
第３、第４のループによる処理が終了し、処理が第２ループに戻り、第２のループにおいて、ステップＳ２０６でブロックの列番号ｊＢlkを１だけ増大した後、ステップＳ２０５において、増大後のブロックの列番号ｊＢlkがブロック列数Ｃolより小さくない、すなわち、ブロック列数Ｃolに達したと判定されたときには、第２のループが終了し、処理は第１のループに戻る。第１のループでは、ステップＳ２０３において、ブロックの行番号ｉＢlkを１だけ増大した後、ステップＳ２０２において、増大後のブロックの行番号ｉＢlkがブロック行数Ｒowより小さいと判定されたときには、処理は第２のループに移り、上記増大後のブロック行番号に対応する、次の行に属する複数のブロックが第２のループで順次選択され、それぞれの選択されたブロックについて既に説明したように第３、第４のループの処理が実行される。
【００７２】
上記次の行に属する複数のブロックに対する第２、第３、第４のループの処理が終了し、処理が第１のループに戻り、以上と同様に第１から第４のループの処理が繰り返される。以上の繰り返し時に第１のループのステップＳ２０３によりブロックの行番号ｉＢlkを１だけ増大し、ステップＳ２０２で、その増大後の行番号ｉＢlkの値がブロック行数Ｒowより小さくない、すなわち、ブロック行数Ｒowに達したと判別されたときに、第１のループの処理が終了し、テクスチャ特徴量検出部２００の処理も終了する。
【００７３】
このように、第１、第２のループにより異なる行番号ｉＢlkと列番号ｊＢlkを有する複数のブロックが順次選択され、選択されたブロックに対応する特徴抽出領域内の複数の画素が第３、第４のループにより順次選択され、当該選択された画素の濃度データの値ｇに応じて濃度ヒストグラムデータ histgram（２３）が更新される。こうして、テクスチャ特徴量検出部２００により、全ブロックに対して、それぞれに対応する特徴抽出領域内の画素の濃度ヒストグラムデータを有する濃度ヒストグラムデータ２３が生成され、テクスチャ特徴量検出部２００の処理が終了する。
【００７４】
図１に戻り、プログラム４０は、テクスチャ特徴量検出部２００の処理が終了すると、テクスチャ分類部３００を起動する。
図５は、テクスチャ分類部３００の処理の一例を示す概略フローチャートである。テクスチャ分類部３００は、後に詳細を説明するように、初期値設定部５００によりクラスタ別メンバーブロックデータ２４Ａ、クラスタ別メンバー数データ２４Ｂ、クラスタ間距離データ２４Ｃに初期値を設定する。つぎにステップＳ３０１で、最短距離クラスタ組更新フラグflagを初期値０にリセットする。初期値０は、最短距離にあるクラスタの組合せに変更が生じていないことを表す。その後、最短距離クラスタ組検出部６００を後に説明するようにして実行して、最も近いクラスタの組を探索する。最短距離クラスタ組検出部６００は、最短距離にある新たなクラスタの組が見つかると、最短距離クラスタ組更新フラグflagを値１にセットするようになっている。
【００７５】
その後、ステップＳ３０２において、最短距離クラスタ組更新フラグflagが値１であるか否かが判定され、値１である場合には、クラスタ併合部７００が実行される。後に説明するように、クラスタ併合部７００は、その新たな組のクラスタのそれぞれに属するブロックを一つのクラスタに属するように、それらのクラスタの組を同じクラスタに属するように併合する。その後、処理はステップＳ３０１に戻り、そのステップＳ３０１以降の処理が繰り返され、クラスタの併合が繰り返される。
【００７６】
クラスタの併合が繰り返された結果、最短距離クラスタ組検出部６００により最短距離の新たなクラスタの組が見つからなくなると、最短距離クラスタ組検出部６００は、最短距離クラスタ組更新フラグflagを値１に変更しないので、ステップＳ３０２において、最短距離クラスタ組更新フラグflagが値１でないと判定されることになる。その場合には、クラスタ番号付与部８００が実行される。クラスタ番号付与部８００は、各ブロックが属すると判断されたクラスタを識別するためのクラスタ識別情報を当該ブロック割り当てる。こうして、テクスチャ分類部３００の処理が終了する。
【００７７】
図６はテクスチャ分類部３００で生成されるいくつかのデータの例を示す図である。同図（ａ）は、クラスタ別メンバーブロックデータ２４Ａの例を示す図である。クラスタ別メンバーブロックデータ２４Ａは、各クラスタ別にそのクラスタに属する一つ又は複数のブロックの番号を含むデータである。本実施の形態では、そのクラスタ別メンバーブロックデータ２４Ａのより具体的な例として、インデックスＩｃ、Ｉｊを有する２次元配列データＳet[Ｉｃ][Ｉｊ]を使用する。以下では、この配列をクラスタ別メンバーブロックデータと呼ぶことがある。インデックスＩｃとＩｊはいずれも０から（ブロックの総数Ｎｂ）−１に等しい値を取ることができるとする。インデックスＩｃはクラスタ番号を表し、インデックスＩｊは、各クラスタに属する複数のブロックの番号の一つを格納する配列要素の列番号であり、配列Ｓetの要素Ｓet[Ｉｃ][Ｉｊ]は、クラスタ番号Ｉｃのクラスタに属する複数のブロックのうちＩｊ番目のブロックの番号を格納するのに使用される。後に説明するように、本実施の形態では、同じクラスタに属する複数のブロックの番号が、データＳet内の、クラスタ番号に対応する行に属する複数の配列要素に順次格納される。したがって、あるクラスタに属する全てのブロックの番号が配列Ｓet内の、そのクラスタの番号に対応する一つの行に属する複数の要素に格納された場合、それらの要素の後続の要素にはブロック番号は含まれていない。
【００７８】
同図（ｂ）は、クラスタ別メンバー数データ２４Ｂの例を示す図である。クラスタ別メンバー数データ２４Ｂは、クラスタ別に各クラスタに属するブロックの数を含むデータである。本実施の形態では、クラスタ別メンバー数データ２４Ｂのより具体的な例として、インデックスＩｃを有する１次元配列ｎ[Ｉｃ]を使用する。以下では、この配列をクラスタ別メンバー数データと呼ぶことがある。インデックスＩｃはクラスタ番号を表す。配列ｎの各要素ｎ[Ｉｃ]は、クラスタ番号Ｉｃのクラスタに属するブロックの数を格納するのに使用される。
【００７９】
同図（ｃ）は、クラスタ間距離データ２４Ｃの例を示す図である。クラスタ間距離データ２４Ｃは、異なる組合せの一対のクラスタ間の距離データを含むものである。本実施の形態では、そのデータ２４Ｃのより具体的な例として、インデックスＩci、Ｉcjを有する２次元配列ｄ[Ｉci][Ｉcj]を使用する。以下では、この配列をクラスタ間距離データと呼ぶことがある。インデックスＩci、Ｉcjはクラスタ番号を表す。配列ｄの要素ｄ[Ｉci][Ｉcj]は、クラスタ番号Ｉciのクラスタとクラスタ番号Ｉcjのクラスタとの間の距離を含んでいる。
【００８０】
図７は、初期値設定部５００の処理の一例を示す概略フローチャートである。まず、ステップＳ５０１では、変数であるブロック番号Ｉｂを初期値０に設定する。ステップＳ５０２では、ブロック番号Ｉｂがブロック総数Ｎｂより小さいか否かを判定し、小さいときには、クラスタ別メンバーブロックデータＳet[Ｉｃ][Ｉｊ]（２４Ａ）（図６（ａ））内の、ブロック番号Ｉｂに対応する行の先頭の要素Ｓet[Ｉｂ][０]（２４Ａ）にそのブロック番号Ｉｂを格納する。すなわち、その行の先頭の要素にその行の番号と同じ番号のブロック番号が格納されることになる。つまり、ブロック番号Ｉｂのブロックは、最初は、そのブロック番号と同じ番号のクラスタに割り当てられる。したがって、クラスタの総数は、最初はブロックの総数Ｎｂと同じである。なお、各クラスタの番号は、ここではそれぞれに属する複数のテクスチャ特徴量の内容とは関係なく決められている。
【００８１】
ステップＳ５０４では、ステップＳ５０３でのクラスタの割り当てに対応して、クラスタ別メンバー数データｎ[Ｉｃ]（２４Ｂ）（図６（ｂ））内の、ブロック番号Ｉｂに等しいクラスタ番号Ｉｃに対する要素ｎ[Ｉｂ]の値を１にする。ステップＳ５０５では、ブロック番号Ｉｂを１だけ増大し、その後ステップＳ５０２〜Ｓ５０５の処理を繰り返す。繰り返しはブロック番号Ｉｂが（ブロック総数Ｎｂ）−１になるまで実行される。その後、ブロック番号Ｉｂが、ステップＳ５０５で１だけ増大され、ステップＳ５０２でブロック総数Ｎｂより小さくないと判定されると、処理はステップＳ５０６に移る。これまでの処理により、クラスタ別メンバーブロックデータＳet、クラスタ別メンバー数データｎに初期値が設定されたことになる。
【００８２】
ステップＳ５０６では、変数であるクラスタ番号Ｉciが値０に設定され、ステップＳ５０７ではクラスタ番号Ｉciがブロック総数Ｎｂより小さいか否かを判定し、小さいときには、ステップＳ５０８で、変数である他のクラスタ番号Ｉcjが値０に設定される。ステップＳ５１０では、クラスタ番号Ｉcjがブロック総数Ｎｂより小さいか否かを判定し、小さいときには、ステップＳ５１１で、クラスタ間の距離を計算するクラスタ間距離計算関数DistによりクラスタＩciとクラスタＩcjとの間の距離Dist(Ｉci，Ｉcj)を計算し、得られた距離を、クラスタ間距離データｄ（図６（ｃ））内の行番号がＩciで列番号がＩcjである要素ｄ[Ｉci][Ｉcj]に格納する。
今の段階では、番号Ｉｃのクラスタには、同じ値のブロック番号を有するブロックが属している。したがって、ステップＳ５１１では、クラスタ番号Ｉciと同じ値のブロック番号のブロックに対するテクスチャ特徴量とクラスタ番号Ｉcjと同じ値のブロック番号のブロックに対するテクスチャ特徴量との間の距離を計算することになる。二つのテクスチャ特徴量間の距離は、既に説明したように、本実施の形態では、二つのテクスチャ特徴量としての二つの濃度ヒストグラムの各濃度における頻度差の絶対値の総和を使用する。したがって、クラスタ間距離計算関数Dist(Ｉci，Ｉcj)は、二つのテクスチャ特徴量に対してそのように定義された距離を計算するものであればよい。なお、一般には各クラスタに複数のブロックに対応するテクスチャ特徴量が含まれる。その場合におけるクラスタ間の距離は、既に説明したように最長距離法が使用される。すなわち、二つのクラスタに属する複数のテクスチャ特徴量の異なる組合せに対応してそれぞれの組合せの間の距離である複数の距離を計算し、それらの距離のうちの最長の距離を当該二つのクラスタ間の距離とする。したがって、クラスタ間距離計算関数Dist（Ｉci，Ｉcj)は、そのように複数のテクスチャ特徴量の組に対して距離を計算し、計算された複数の距離のうちの最大値を選択するものであればよい。
【００８３】
その後、ステップＳ５１２においてクラスタ番号Ｉcjを１だけ増大し、ステップＳ５１０にて、増大後のクラスタ番号Ｉcjがブロック総数Ｎｂより小さいか否かを判定し、小さいときには、ステップＳ５１１、５１２が繰り返される。こうして、一つのクラスタＩciと他の複数のクラスタＩcjとの間の距離が順次計算され、クラスタ間距離データｄの対応する要素に格納される。距離の計算はブロック総数Ｎｂの数だけ繰り返される。
【００８４】
ステップＳ５１２によるクラスタ番号Ｉcjの増大後の値がブロック総数Ｎｂより小さくない、すなわち、Ｎｂに達したとステップＳ５１０で判定されたときには、処理はステップＳ５０９に移る。そこでは、クラスタ番号Ｉciが１だけ増大され、ステップＳ５０７において、増大後のクラスタ番号Ｉciがブロック総数Ｎｂより小さいかが判定され、小さいときには、ステップＳ５０８でクラスタ番号Ｉcjが値０に再度設定され、先に述べた距離計算が、新たなクラスタ番号Ｉciのクラスタと他のクラスタ番号Ｉcjのクラスタとの組に対して繰り返される。以上の繰り返しによりクラスタ間距離データｄ[Ｉci][Ｉcj]に初期値が設定される。その後、ステップＳ５０９により値が１だけ増大された後に、ステップＳ５０７において、増大後のクラスタ番号Ｉciの値がブロック総数Ｎｂより小さくない、すなわちＮｂに達したと判定されたときに、初期値設定部５００の処理が終了し、処理はテクスチャ分類部３００（図５）に戻る。なお、以上の処理から分かるように、初期値設定部５００は、クラスタ番号Ｉciとクラスタ番号Ｉcjとが同じ場合、すなわち同じクラスタ間の距離も計算するようになっている。この距離は、後に説明するように値０と計算されるが、この値は、後に述べるように今後の処理では使用されない。
【００８５】
図５において、テクスチャ分類部３００は、初期値設定部５００の処理が終了すると、ステップＳ３０１において最短距離クラスタ組更新フラグflagを初期値０に設定した後、最短距離クラスタ組検出部６００を起動する。
図８（ａ）は最短距離クラスタ組検出部６００の処理の一例を示す概略フローチャートである。同図（ｂ）は、最短距離クラスタ組検出部６００で変数として使用されるデータである最短距離クラスタ組データ２４Ｄの例を示す図である。最短距離クラスタ組データ２４Ｄには、全クラスタ間最短距離ｄＭin（２４Ｄ１）と、第１最短距離クラスタ番号ＩciＭin（２１Ｄ２）と第２最短距離クラスタ番号ＩcjＭin（２１Ｄ３）と、最短距離クラスタ組更新フラグflag（２４Ｄ４）とを含んでいる。全クラスタ間最短距離ｄＭin（２４Ｄ１）は、最終的には全クラスタ間最短距離を表す変数であり、第１最短距離クラスタ番号ＩciＭin（２１Ｄ２）と第２最短距離クラスタ番号ＩcjＭin（２１Ｄ３）は、その全クラスタ間最短距離を有する一組のクラスタの番号である最短距離クラスタ番号を表す変数であり、最短距離クラスタ組更新フラグflag（２４Ｄ４）は、既に説明したように、テクスチャ分類部３００（図５）のステップＳ３０１において値０にリセットされる最短距離クラスタ組更新フラグである。
【００８６】
図８（ａ）において、ステップＳ６０１では、全クラスタ間最短距離ｄＭinに十分大きい正の数ｂigＮumを設定する。その後の処理は、ともに変数であるクラスタ番号Ｉciに関する第１のループとクラスタ番号Ｉcjに関する第２のループからなる二重ループを含んでいる。以下ではクラスタ番号Ｉciのクラスタを簡単化のためにクラスタＩciと呼ぶことがある。クラスタ番号Ｉcjのクラスタについても同じである。更に他のクラスタ番号のクラスタについても同じである。
【００８７】
まず第１のループでは、ステップＳ６０２でクラスタ番号Ｉciを最小値０に設定する。ステップＳ６０３では、クラスタ番号Ｉciが（ブロック総数Ｎｂ）−１より小さいか否かを判定し、小さいときには、ステップＳ６０５で、変数である他のクラスタ番号Ｉcjの値をＩci＋１にする。したがって、クラスタ番号Ｉcjは値１からＮｂ−１までの値を取る変数であり、かつ、常にＩci＜Ｉcjの関係が保たれている。したがって、クラスタ番号Ｉciの取りうる値は０からＮｂ−２になる。ステップＳ６０３で、クラスタ番号Ｉciが（ブロック総数Ｎｂ）−１より小さいか否かを判定しているのは、クラスタ番号Ｉciの取りうる最大値がＮｂ−２であるからである。また、ステップＳ６０５より、クラスタ番号ＩciとＩcjは同じ値となることはなく、したがって、同じクラスタ間の距離は使用されることはない。
【００８８】
ステップＳ６０６では、クラスタ番号Ｉcjがブロック総数Ｎｂより小さいか否かを判定する。クラスタ番号Ｉcjは、初期値がＩci＋１であり、後に説明するように、処理の繰り返しごとに順次１ずつ増大されるので、Ｎｂ−１になるまでは、Ｎｂより小さいと判定される。クラスタ番号Ｉcjがブロック総数Ｎｂより小さいと判定されたときには、処理は第２のループに移り、第２のループでは、ステップＳ６０８において、クラスタＩciとクラスタＩcjとの間の距離ｄ[Ｉci][Ｉcj]が距離の閾値Ｔより小さいか否かが判定される。閾値Ｔは、処理条件設定部１００の実行時に利用者に入力させたものである。
【００８９】
閾値Ｔが小さいほど、クラスタ分類により得られるクラスタの総数は増え、逆に、閾値Ｔが大きいほど、クラスタ分類により得られるクラスタの総数は減る。利用者は、閾値Ｔを、例えば試行錯誤的に決定することができる、すなわち、ブロックサイズと対応する特徴抽出領域のサイズを試行錯誤的に決定したのと同じようにして決定することができる。例えば、既に述べたように、一定の閾値の元で、見本として使用する画像あるいは実際にテクスチャにしたがって複数の領域に分割しようとする画像に対して、ブロックサイズと特徴抽出領域のサイズを決定した後、決定されたブロックサイズと特徴抽出領域サイズとその画像とを用いて、閾値Ｔの値をいろいろ変えてテクスチャの分類と領域分割とを実行し、得られたテクスチャの分類結果と領域分割の結果を判断し、テクスチャの分類結果と領域分割結果が適切であると判断される閾値を距離の閾値Ｔに選ぶことができる。
【００９０】
ステップＳ６０９でクラスタＩciとＩcjとの間のクラスタ間距離ｄ[Ｉci][Ｉcj]が、距離の閾値Ｔより小さいと判定されたときには、クラスタ間距離ｄ[Ｉci][Ｉcj]が、全クラスタ間最短距離ｄＭinより小さいか否かが判定される。全クラスタ間最短距離ｄＭinには、ステップＳ６０１において、初期値として十分大きい正の数ｂigＮumが設定されていて、ステップＳ６０１が最初に実行されたときには、Ｉci＝０、Ｉcj＝１であるので、クラスタ間距離ｄ[０][１]が変数ｄＭinより小さいと判定される。
【００９１】
このようにクラスタ間距離ｄ[Ｉci][Ｉcj]が変数ｄＭinより小さいと判定されたときには、番号ＩciとＩcjのクラスタの組が、それまで見つかっていたクラスタ間最短距離より小さなクラスタ間の距離を与えるクラスタの組、すなわち、最短距離クラスタ組となる。こうして、ステップＳ６１０で、そのクラスタ間距離ｄ[Ｉci][Ｉcj]を全クラスタ間最短距離ｄＭinに設定して全クラスタ間最短距離を更新する。更に、ステップＳ６１１において、最短距離クラスタ組のうち番号が小さいほうのクラスタの番号である第１の最短距離クラスタ番号ＩciＭinという変数にクラスタ番号Ｉciを設定する。同様に、ステップＳ６１２において、最短距離クラスタ組のうち番号が大きいほうのクラスタの番号である第２の最短距離クラスタ番号ＩcjＭinとう変数にクラスタ番号Ｉcjを設定する。
【００９２】
その後、ステップＳ６１３において、最短距離クラスタ組が更新されたことを示すために、最短距離クラスタ組更新フラグflagを値１にセットする。以上の説明から分かるように、最短距離クラスタ組更新フラグflagが値１にセットされるのは、全クラスタ間最短距離ｄＭinが更新されたときである。したがって、最短距離クラスタ組更新フラグflagは、全クラスタ間最短距離更新フラグであるとも考えることができる。
【００９３】
以上の処理のうち、ステップＳ６０８において、クラスタ間距離ｄ[Ｉci][Ｉcj]が閾値Ｔより小さくないと判定されたときには、クラスタＩciとＩcjは別のクラスタに属することになり、その後のステップＳ６０９以降の処理が実行されないで、処理はステップＳ６０７に移る。クラスタ間距離ｄ[Ｉci][Ｉcj]が閾値Ｔを超えた場合には、後に説明するクラスタの併合を行わないようにするためである。これにより、利用者が希望する距離の閾値以内にある一組のクラスタが併合され、そうでないクラスタの組は併合されないように、併合されるクラスタ間の距離を制限できるようになる。
【００９４】
また、ステップＳ６０９において、クラスタ間距離ｄ[Ｉci][Ｉcj]が全クラスタ間最短距離ｄＭinより小さくないときにも、処理はステップＳ６０７に移る。このような場合には、言うまでもなく、処理中のクラスタＩciとクラスタＩcjの間の距離は、全クラスタ間で最短とはなり得ないからである。
【００９５】
ステップＳ６０７では、クラスタ番号Ｉcjを１だけ増大して、ステップＳ６０６にて増大後のクラスタ番号Ｉcjがブロック総数Ｎｂより小さいかが判定され、小さいときにはＳ６０８以降の第２のループの処理が繰り返される。すなわち、同じクラスタ番号Ｉciとそれより大きなクラスタ番号を有する他のクラスタＩcjとの間のクラスタ間の距離と閾値ＴとをステップＳ６０９で比較し、前者が後者より小さいときには、当該二つのクラスタ間の距離が全クラスタ間最短距離ｄＭinとステップＳ６０９で比較され、前者が後者より小さいときに、全クラスタ間最短距離ｄＭin、最短距離クラスタ番号ＩciＭin、ＩcjＭinが更新され、最短距離クラスタ組更新フラグflagが値１にセットされる。
【００９６】
以上の処理の結果、ステップＳ６０６により、クラスタ番号Ｉcjがブロック総数Ｎｂより小さくないと判定されたときには、第２のループの処理が終了し、処理は第１のループに戻り、第１のループでは、ステップＳ６０４において、クラスタ番号Ｉciを１だけ増大し、その後ステップＳ６０３にて、増大後のクラスタ番号Ｉciが（ブロック総数Ｎｂ）−１より小さいか否かが判定され、小さいときには、ステップＳ６０５、Ｓ６０６が繰り返される。こうして、次のクラスタ番号Ｉciとそれより大きな複数のクラスタＩcjに関して、ステップＳ６０６、Ｓ６０８以降の第２のループが繰り返される。
【００９７】
このようにして、最終的には、値０からＮｂ−２の各々を取るクラスタ番号Ｉciとそれより大きな複数の値を取るクラスタＩcjとの全ての異なる組合せのうちで、クラスタ間の距離が、利用者が指定した閾値Ｔより小さく、かつ、それまで記憶されていた全クラスタ間最短距離ｄＭinより小さな一組のクラスタＩciとＩcjが新たに検出される毎に、それらのクラスタ間の距離ｄ[Ｉci][Ｉcj]が新たな全クラスタ間最短距離ｄＭinとして記憶され、更に、その組の二つのクラスタの番号が新たな最短距離クラスタ番号ＩciＭin、ＩcjＭinとして記憶され、最短距離クラスタ組更新フラグflagが値１にセットされる。しかし、このような新たなクラスタの組が一組も見つからなかった場合には、全クラスタ間最短距離ｄＭin、最短距離クラスタ番号ＩciＭin、ＩcjＭinは更新されず、かつ最短距離クラスタ組更新フラグflagも０のままである。
【００９８】
以上のようにして最短距離クラスタ組検出部６００の処理が終了すると、処理はテクスチャ分類部３００（図５）に戻り、図５において、テクスチャ分類部３００は、ステップＳ３０１において最短距離クラスタ組更新フラグflagの値が１か否かを判定し、１の場合には、クラスタ併合部７００を起動する。
図９は、クラスタ併合部７００の処理の一例を示す概略フローチャートである。クラスタ併合部７００は、最短距離クラスタ組検出部６００で検出された新たな最短距離クラスタ番号ＩciＭin、ＩcjＭinを有する、最短距離クラスタＩciＭinとＩcjＭinをそれらの一方に併合し、他方を消去する併合処理を行い、併合後のクラスタと他のクラスタとの間の距離を新たに計算し直すものである。
【００９９】
ステップＳ７０１からステップＳ７１０がクラスタ番号Ｉｃについての第１のループを形成している。まず、ステップＳ７０１で、変数であるクラスタ番号Ｉｃに初期値０を設定する。クラスタ番号Ｉｃの値は０から（ブロック総数Ｎｂ）−１まで取りうる。ステップＳ７０２で、クラスタ番号Ｉｃがブロック総数Ｎｂより小さいか否かが判定され、ブロック総数Ｎｂより小さいときには、ステップＳ７０４に進む。
【０１００】
ステップＳ７０４は、クラスタＩｃに所属するブロック数が０（空集合）であるか否かを判定するステップである。次のステップＳ７０５は、クラスタ番号Ｉｃが第１の最短距離クラスタ番号ＩciＭinと一致するか否かを判定するステップである。次のステップＳ７０６は、クラスタ番号Ｉｃが第２の最短距離クラスタ番号ＩcjＭinと一致するか否かを判定するステップである。これらのステップＳ７０４からステップＳ７０６のいずれかにおいて判定結果が肯定的であるときには、処理はステップＳ７０３に進み、クラスタ番号Ｉｃを１だけ増大し、ステップＳ７０２以降の処理を繰り返す。
【０１０１】
第１のループが最初に実行されるときには、ステップＳ７０１により、クラスタ番号Ｉｃは０になっており、初期値設定部５００により各クラスタに一つのブロックが割り当てられている状態であるので、ステップＳ７０４では、クラスタ０のブロック数ｎ[０]は０ではないと判定される。なお、クラスタＩｃのブロック数ｎ[Ｉｃ]が０になるのは、そのクラスタが後に他のクラスタに併合された場合である。したがって、今の仮定では、処理はステップＳ７０５に進む。クラスタ番号Ｉｃが第１の最短距離クラスタ番号ＩciＭinと一致しないことが頻繁に生じるので、ステップＳ７０６では一致とは判定されないと仮定する。その場合、処理はステップＳ７０６に進む。そこでもクラスタ番号Ｉｃが第２の最短距離クラスタ番号ＩcjＭinとも一致しないことも頻繁に生じるので、ステップＳ７０６では一致とは判定されないと仮定する。
【０１０２】
そのような場合には、ステップＳ７０７からステップＳ７１０において二つの最短距離クラスタＩciＭinとＩcjＭinを一つのクラスタに併合する処理が実行される。本実施の形態ではそれらを併合した新たなクラスタを作るのではなく、二つの最短距離クラスタのうちクラスタ番号の大きい第２の最短距離クラスタＩcjＭinを番号が小さいほうの第１の最短距離クラスタＩciＭinに併合する。併合に先だって、ステップＳ７０７において、第１の最短距離クラスタＩciＭinとクラスタＩｃとの間の距離ｄ[ＩciＭin][Ｉｃ]と、第２の最短距離クラスタＩcjＭinとクラスタＩｃとの間の距離ｄ[ＩcjＭin][Ｉｃ]のうちの大きいほうを選んで、第１の最短距離クラスタＩciＭinとクラスタＩｃとの間の新たな距離ｄ[ＩciＭin][Ｉｃ]に設定する。この大きいほうの距離が、第１、第２の最短距離クラスタＩciＭinとＩcjＭinとを併合した後の、最短距離クラスタＩciＭinとクラスタＩｃとの間の距離ｄ[ＩciＭin][Ｉｃ]を表す。この際、ステップＳ７０７において上記二つの距離のうちの大きいほうの距離を使用するのは、本実施の形態におけるテクスチャの分類が最長距離法にしたがっているためである。
【０１０３】
ステップＳ７０８においては、ステップＳ７０７で設定された第１の最短距離クラスタＩciＭinとクラスタＩｃとの間の新たな距離ｄ[ＩciＭin][Ｉｃ]を、そのままクラスタＩｃと新たな第１の最短距離クラスタＩciＭinとの間の新たな距離ｄ[Ｉｃ][ＩciＭin]とする。その後、ステップＳ７０９において、第２の最短距離クラスタＩcjＭinとクラスタＩｃとの距離ｄ[ＩcjＭin][Ｉｃ]は、もはや使用する必要はないので、距離データｄから除去する目的で、その距離の値を十分大きい数ｂigＮumに設定する。同様に、ステップＳ７１０において、クラスタＩｃと最短距離クラスタＩcjＭinとの距離ｄ[Ｉｃ][ＩcjＭin]の値も十分大きい数ｂigＮumに設定する。
【０１０４】
その後、ステップＳ７０３において、クラスタ番号Ｉｃを１だけ増大し、ステップＳ７０２以降を繰り返す。その結果、ステップＳ７０４、Ｓ７０５、Ｓ７０６のいずれかの判定において、判定結果が肯定的（Ｙｅｓ）となった場合には、そのステップ以降のステップは実行しないで、ステップＳ７０３に進み、ステップＳ７０２以降の処理が繰り返される。こうして、最短距離クラスタＩciＭin又はＩcjＭinと他の全てのクラスタとの間の距離及び他の全てのクラスタと最短距離クラスタＩciＭin又はとＩcjＭinとの間の距離が、併合後のクラスタＩciＭinとそのクラスタとの間の距離になるように更新される。
【０１０５】
以上の処理の結果、ステップＳ７０２で、クラスタ番号Ｉｃがブロック総数Ｎｂより小さくないと判定されるに至り、そのときには、第１のループの処理が終了し、処理はステップＳ７１１に移る。ステップＳ７１１では、第１、第２の最短距離クラスタＩciＭinとＩcjＭinとの間の距離ｄ[ＩciＭin][ＩcjＭin]はもはや必要でないので、削除する目的で、十分大きい数ｂigＮumに設定する。同様に、ステップＳ７１２において第２、第１の最短距離クラスタＩcjＭinとＩciＭinとの間の距離ｄ[ＩcjＭin][ＩciＭin]を十分大きい数ｂigＮumに設定する。
【０１０６】
その後、変数である要素番号Ｉｊに関する第２のループが実行される。ステップＳ７１３からステップＳ７１６が要素番号Ｉｊについての第２のループを形成している。まず、ステップＳ７１３において、要素番号Ｉｊを初期値０に設定する。要素番号Ｉｊの値は、０から、併合される第２の最短距離クラスタＩcjＭinに属する（ブロック数ｎ[ＩcjＭin]−１）の値まで取れる。ステップＳ７１４において、要素番号Ｉｊが、併合される第２の最短距離クラスタＩcjＭinに属するクラスタ別メンバーブロック数ｎ[ＩcjＭin]より小さいか否かが判定される。
【０１０７】
要素番号Ｉｊがそのメンバーブロック数より小さいと判定されたときには、ステップＳ７１５において、第２の最短距離クラスタＩcjＭinに属する複数のブロックのうち要素番号Ｉｊ番目のブロック番号を第１の最短距離クラスタＩciＭinに併合する。すなわち、クラスタ別メンバーブロックデータＳet[Ｉｃ][Ｉｊ]のうち、第２の最短距離クラスタＩcjＭinに属する要素Ｓet[ＩcjＭin][Ｉｊ]に記憶されたブロック番号を、第１の最短距離クラスタＩciＭinに属するブロック番号を記憶している一つ又は複数の要素のうちの最後の要素Ｓet[ＩciＭin][ｎ[ＩciＭin]−１]の（Ｉｊ＋１）個後の要素Ｓet[ＩciＭin][ｎ[ＩciＭin]＋Ｉｊ]に格納する。その後、ステップＳ７１６で、要素番号Ｉｊを１だけ増大し、ステップＳ７１４以降を繰り返す。こうして、第１の最短距離クラスタＩciＭinに属するブロック番号を記憶している一つ又は複数の要素のうちの最後の要素に続く要素に、併合される第２の最短距離クラスタＩcjＭinに属する一つ又は複数のブロックが格納される。こうして、第２の最短距離クラスタＩcjＭinに属していたブロックが第１の最短距離クラスタＩcjＭinに併合されたことになる。
【０１０８】
二つのクラスタの併合に伴いクラスタ別メンバー数データｎが更新される。すなわち、ステップＳ７１７において、元の第１の最短距離クラスタＩciＭinのメンバー数ｎ[ＩciＭin]と元の第２の最短距離クラスタＩcjＭinのメンバー数ｎ[ＩcjＭin]との和を新たな併合後のクラスタＩciＭinのメンバー数ｎ[ＩciＭin]に設定する。その後、ステップＳ７１８で元の第２の最短距離クラスタＩcjＭinのメンバー数ｎ[ＩcjＭin]の値を０にする。こうして、第１、第２の最短距離クラスタＩciＭinとＩcjＭinとの併合処理が終了してクラスタ併合部７００の処理が終了し、処理はテクスチャ分類部３００（図５）に戻る。
【０１０９】
図５において、テクスチャ分類部３００は、クラスタ併合部７００の処理が終了すると、ステップＳ３０１で最短距離クラスタ組更新フラグflagの値を０にリセットする。その後、以上に述べたようにクラスタ併合後の複数のクラスタに対して最短距離クラスタ組検出部６００が再度実行され、既に述べたように、利用者が指定した距離の閾値Ｔより小さく、かつ前に最短距離クラスタ組検出部６００により検出された全クラスタ間最短距離ｄＭinより小さい距離を有する新たなクラスタの組の検出を試みる。
【０１１０】
検出が成功した場合には、最短距離クラスタ組検出部６００により既に述べたように最短距離クラスタ組更新フラグflagが値１にセットされるので、ステップＳ３０２でそのフラグflagが値１にセットされていると判定され、クラスタ併合部７００が再度実行される。以上の処理が繰り返された結果、最短距離クラスタ組検出部６００が再度実行されても、利用者が指定した距離の閾値Ｔより小さく、かつ前に最短距離クラスタ組検出部６００により検出された全クラスタ間最短距離ｄＭinより小さい距離を有する新たなクラスタの組がもはや検出されなくなる。その場合には、最短距離クラスタ組検出部６００が実行された後で、ステップＳ３０２において、最短距離クラスタ組更新フラグflagが値０のままであると判定される。その場合にはクラスタ番号付与部８００が実行される。
【０１１１】
図１０（ａ）は、クラスタ番号付与部８００の処理の一例を示す概略フローチャートである。同図（ｂ）は、クラスタ番号付与部８００で生成されるブロック別クラスタ番号データｃluster（２５Ａ）の例を示す図である。図において、ブロック別クラスタ番号データｃluster（２５Ａ）は、２次元配列データであり、行と列はそれぞれブロックの行番号ｉＢlkと列番号ｊＢlkに対応し、要素ｃluster[ｉＢlk][ｊＢlk]には、行番号ｉＢlkと列番号ｊＢlkを有するブロックが属するクラスタに対してクラスタ番号付与部８００により決定される新クラスタ番号が格納される。すなわち、図２（ｂ）の解析対象画像２１Ａ内の、ブロックが存在する領域ＡＥＦＧ内の複数のブロックに対応して、それぞれのブロックに対するクラスタ番号が格納される。
【０１１２】
クラスタ番号付与部８００は、クラスタ併合部７００により全クラスタのそれぞれに属すると決定されたブロックに対して、各ブロックが属するクラスタの番号をそのブロックに付与するものである。図６（ａ）のクラスタ別メンバーブロックデータＳetに関して説明したように、これまでの処理ではクラスタ番号はブロックの数だけ存在した。しかし、クラスタ併合部７００（図９）によるクラスタの併合の結果、属するブロックがないクラスタ（空のクラスタ）が発生している。そこでクラスタ番号付与部８００は、空でない複数のクラスタのみに対して新たな番号を決定し、それぞれのクラスタに属するブロックにこれらの新たなクラスタ番号を付与するようになっている。以下では、これまでの処理で使用されていたクラスタ番号を旧クラスタ番号と呼び、クラスタ番号付与部８００が新たに決定する新クラスタ番号と区別することにする。なお、以下では、分かりやすさのために、新クラスタ番号は値１から始まると仮定する。
【０１１３】
同図（ａ）において、クラスタ番号付与部８００は、まずステップＳ８０１で、変数である新クラスタ番号Ｉckに初期値１を設定する。ここでは、新クラスタ番号Ｉckの最小値は１であるが、最大値はクラスタリングの結果により変わる。クラスタの最大数は、ブロックの総数Ｎｂとなる可能性もあり、そのときにはクラスタ番号の最大値はＮｂになる。ステップＳ８０１の後は、新クラスタ番号Ｉckと旧クラスタ番号Ｉciについての二重のループが形成されている。ステップＳ８０２では、変数である旧クラスタ番号Ｉciを最小値０に設定する。旧クラスタ番号Ｉciは、ブロックの数と同じ数が使用されていたので、値０から（ブロック総数Ｎｂ）−１までの値を取り得る。
【０１１４】
ステップＳ８０３で、旧クラスタ番号Ｉciが最大値Ｎｂより小さいか否かが判定され、小さいときには、ステップＳ８０５で旧クラスタＩciに属するブロック数ｎ[Ｉci]が０より大きい（空集合でない）か否かを判定し、０より大きいときには、ステップＳ８０７において、クラスタ別メンバーブロックデータＳet[Ｉci][Ｉｊ]（２４Ａ）（図６（ａ））に対する列番号を表す変数Ｉｊに初期値０を格納する。列番号Ｉｊが取り得る最大値は（ブロック総数Ｎｂ）−１である。このクラスタ別メンバーブロックデータＳet[Ｉci][Ｉｊ]２４Ａには、旧クラスタＩｃに属する複数のブロックの番号（通し番号）が旧クラスタ番号Ｉciに対応する行内の複数の要素に記憶されている。
【０１１５】
ステップＳ８０８において、列番号Ｉｊがクラスタ別メンバー数データｎの要素ｎ[Ｉci]の値より小さいか否かが判定され、小さいときには、ステップＳ８１０とＳ８１１において、クラスタ別メンバーブロックデータＳet内の、クラスタ番号Ｉciの行に属し、列番号Ｉｊの要素Ｓet[Ｉci][Ｉｊ]に記憶されているブロック番号Ｉｂを、対応するブロックに関する行番号ｉＢlkと列番号ｊＢlkに変換する。ここで、ステップＳ８１０における“／”は除算の商の演算子を表し、式４から分かるように、ブロックの行番号ｉＢlkは、クラスタ別メンバーブロックデータＳetの要素[Ｉci][Ｉｊ]に含まれているブロック番号Ｉｂをブロック列数Ｃol（図３（ｂ））で割ったときの商により得られる。ステップＳ８１１における“％”は除算の余りの演算子を表し、ブロックの列番号ｊＢlkは、同様に式４から分かるように、クラスタ別メンバーブロックデータＳet内の同じ要素[Ｉci][Ｉｊ]に含まれているブロック番号Ｉｂをブロック列数Ｃol（図３（ｂ））で割ったときの余りにより得られる。
【０１１６】
つぎにステップＳ８０９において、ブロックが属するクラスタの番号として、新クラスタ番号Ｉckをブロック別クラスタ番号データｃlusterの要素[ｉＢlk][ｊＢlk]に格納する。その後、ステップＳ８０９において、列番号Ｉｊを１だけ増やし、ステップＳ８０８、Ｓ８１０からステップＳ８１２以降の処理を繰り返し、クラスタ別メンバーブロックデータＳet（２４Ａ）に、同じクラスタ番号Ｉciに対応する行に属し、増大後の列番号Ｉｊの要素に記憶されているブロック番号に対する行番号と列番号とを決定し、ブロック別クラスタ番号データｃluster（２５Ａ）内の、得られた行番号と列番号の要素に同じ新クラスタ番号Ｉckを格納する。
【０１１７】
以上の処理が、ステップＳ８０８において、列番号Ｉｊがクラスタ別メンバー数データｎの要素[Ｉci]の値より小さくないと判定されるまで繰り返される。繰り返しの結果、ステップＳ８０８において、列番号Ｉｊがクラスタ別メンバー数データｎの要素ｎ[Ｉci]の値より小さくないと判定されたとき、処理はステップＳ８０６に進み、新クラスタ番号Ｉckを１だけ増やし、更に、ステップＳ８０４で旧クラスタ番号Ｉciを１だけ増大する。このようにして新クラスタ番号と旧クラスタ番号が１ずつ増大された状態で、ステップＳ８０３以降の処理を繰り返す。
【０１１８】
以上の説明においては、ステップＳ８０５での判定の結果では、旧クラスタ番号Ｉcjに属するブロックの数ｎ[Ｉcj]は０でないと仮定した。もし０の場合には、処理はステップＳ８０４に進み、そこで旧クラスタ番号Ｉciが１だけ増大されてステップＳ８０３以降の処理が繰り返される。したがって、この場合には、ステップＳ８０６が実行されず、新クラスタ番号Ｉckは１のままである。同様に、ステップＳ８０３以降の処理が繰り返されたときに、ステップＳ８０５での判定の結果、旧クラスタ番号Ｉcjに属するブロックの数ｎ[Ｉcj]が０であると判定されたときにも、新クラスタ番号Ｉckは更新されない。したがって、空でないクラスタが処理されたときのみ新クラスタ番号Ｉckが更新されることになり、クラスタ番号付与部８００は、空でないクラスタに新クラスタ番号Ｉckを１から順次決定し、そのクラスタに属するブロックにその新クラスタ番号Ｉckを付与して、ブロック別クラスタ番号データｃluster内の対応する要素にその新クラスタ番号Ｉckを記憶することになる。
【０１１９】
以上の処理を繰り返した結果、ステップＳ８０４で更新された後の旧クラスタ番号Ｉciが、ステップＳ８０３において、ブロック総数Ｎｂより小さくない、すなわち、Ｎｂに達したと判定されたとき、クラスタ番号付与部８００の処理が終了し、処理はテクスチャ分類部３００（図５）に戻る。
【０１２０】
図５において、テクスチャ分類部３００は、クラスタ番号付与部８００の処理が終了したときに、その処理を終了する。以上の説明からも明らかなように、テクスチャ特徴量は複数のクラスタに分類されたが、クラスタの番号の値自体は何も特別の意味を持っていない。そこで、場合によっては、以上のようにしてクラスタ番号を新たに決定した後に、全クラスタの番号を何らかの物理量に即して新たに付けなおしてもよい。そうすれば、物理量が小さい領域には、例えば小さいクラスタ番号を付与できるので、分割により得られた複数の領域を識別するときに、物理量に対応して決められたクラスタ番号を使用できて好都合である。物理量として、例えば、各クラスタに含まれる複数のブロックに対応する複数のテクスチャ特徴量値の平均値、今の場合には複数のヒストグラムの値の平均値をそのクラスタの平均値とし、全クラスタをその平均値の小さいものから順に新たに番号付けしてもよい。ここでヒストグラムの値として、例えば対象とする特徴抽出領域内での画素の平均濃度を使用することができる。そうすれば、濃度が相対的に小さい特徴抽出領域に対応するブロックには小さいクラスタ番号が付与される。
【０１２１】
図１に戻り、領域を分割可能なプログラム４０は、テクスチャ分類部３００の処理が終了したとき、領域分割部４００を起動する。領域分割部４００は、テクスチャ分類部３００による分類により同じクラスタに属すると判別され、かつ互いに隣接する位置にある複数のブロックを連結して一つの領域を生成することにより、画像を複数の領域に分割するものである。
【０１２２】
本実施の形態では、領域分割部４００は、隣接する二つのブロックが異なるクラスタに属するか否かを判定し、異なるクラスタに属する場合にはそれらのブロックに対応して、それらのブロックのクラスタが異なることを示す情報を生成する。これにより、互いに隣接する二つのブロックがテクスチャ分類部３００により同じクラスタに属すると判定されたときには、それらのクラスタに対応して、上記情報が生成されないので上記二つのクラスタが同じクラスタに属すると判断可能になる。一方、互いに隣接する二つのブロックがテクスチャ分類部３００により異なるクラスタに属すると判断されたときには、それらのブロックに対応して上記情報が生成されるので、それらのブロックは異なるクラスタに属すると判断可能になる。
【０１２３】
より具体的には、上記情報として、所属するクラスタが異なり互いに隣接する二つのブロックの境界辺付近に異なるクラスタの境界であることを示す境界線を解析対象画像に重畳して表示又は印刷により出力させる情報を生成する。更に具体的には、上記情報として、上記解析対象画像内の上記二つのブロックの境界付近に位置するように、上記境界線を表す画像データを解析対象画像の画像データに書き込む。これにより、互いに隣接する二つのブロックが同じクラスタに属するときには、その間に境界線が出力されないので、それらの領域は一つの領域に連結されることになる。一方、互いに隣接する二つのブロックが異なるクラスタに属するときには、その間に境界線が出力されるので、それらのブロックは異なるクラスタに属することが識別可能になる。なお、上記クラスタの境界線を表す画像データを解析対象画像に重畳しないで、解析対象画像内の複数のブロックのそれぞれに対応する領域を有する他の画像を表す画像データを生成し、当該他の画像上に境界線画像を書き込み、上記他の画像と解析対象画像のそれぞれのブロック位置が一致するように両方の画像を重畳して表示あるいは印刷するようにしてもよい。
【０１２４】
領域分割部４００は、一例として領域境界垂直方向部分検出部９００と領域境界水平方向部分検出部９５０とからなり、起動されると、これらの処理部を順次実行する。
図１１は、領域境界垂直方向部分検出部９００の処理の一例を示す概略フローチャートである。領域境界垂直方向部分検出部９００は、列方向（図２（ｂ）においてはｙ方向）に隣接する二つのブロックが異なるクラスタに属するときには、その境界辺付近に領域境界の垂直方向部分を表す、図の垂直方向（図２（ｂ）の場合にはｘ方向）に延びた画像を描画するものである。
【０１２５】
領域境界垂直方向部分検出部９００は、ブロックの行番号ｉＢlkと列番号ｊＢlkについての二重のループを形成している。ステップＳ９０１からＳ９０５がブロックの行番号ｉＢlkについての第１のループを構成し、ステップＳ９０５からＳ９１０がブロックの列番号ｊＢlkについての第２のループを構成する。第１のループでは、ステップＳ９０１により行番号ｉＢlkに初期値０を設定した後、ステップＳ９０４において、列番号ｊＢlkを初期値０に設定し、ステップＳ９０５において、列番号ｊＢlkが（ブロック列数Ｃol）−１より小さいか否かを判定され、小さい限り第２のループの処理が開始される。ステップＳ９０５において、列番号ｊＢlkが（ブロック列数Ｃol）−１より小さいか否かが判定されるのは、第２のループにおいて、行番号ｉＢlk、列番号ｊＢlkのブロックのクラスタ番号と、列方向（右方向）の隣りにある行番号ｉＢlk、列番号ｊＢlk＋１のブロックのクラスタ番号が同じか否かが判定されるので、第２のループでは列番号ｊＢlkは０から（ブロックの列数Ｃol）−１までしか取れないからである。
【０１２６】
第２のループでは、ステップＳ９０７において、ブロック別クラスタ番号データｃlusterの、上記一組のブロックに対する第１の要素ｃluster[ｉＢlk][ｊＢlk]内のクラスタ番号と第２の要素ｃluster[ｉＢlk][ｊＢlk＋１]内のクラスタ番号とが等しいか否かが判定される。等しいときには、ステップＳ９０６にて列番号ｊＢlkが１だけ増大され、ステップＳ９０５で列番号ｊＢlkが（ブロック列数Ｃol）−１より小さいか否かが判定され、小さい限り再度ステップＳ９０７の判定が繰り返される。ステップＳ９０７において、いずれかの行番号ｉＢlkと列番号ｊＢlkのブロックのクラスタ番号と右隣りのブロックのクラスタ番号が異なると判定されたときには、ステップＳ９０８とステップＳ９０９において、処理中のブロック（行番号ｉＢlk、列番号ｊＢlkのブロック）を代表する画素のｘ座標ｘｂとｙ座標ｙｂをそれぞれ算出する。具体的には、ステップＳ９０８と９０９では、ブロックを代表する画素の座標としてブロックの左上角の画素の座標を計算しているが、他の画素の座標を検出してもよい。つぎにステップＳ９１０において、処理中のブロックと右隣のブロックの間に領域境界の垂直方向部分を表す画像を描画する。関数drawBoundaryＹ（ｘｂ，ｙｂ，bＳize）は、引数ｘｂ、ｙｂ、bＳizeに基づいて、その画像を描画するための領域境界線画像の垂直方向部分を描画するための関数である。この関数により描画される領域境界垂直方向部分を表す画像の例は後に説明する。
【０１２７】
ステップＳ９１０の実行後、ステップＳ９０６により列番号ｊＢlkが１だけ増大され、ステップＳ９０５以降の処理が繰り返される。もしステップＳ９０５において、列番号ｊＢlkが（ブロック列数Ｃol）−１より小さくない、すなわち、（ブロック列数Ｃol）−１に達したと判定されたときには、第２のループが終了し、処理は第１のループに移る。第２のループでは、ステップＳ９０３において、行番号ｉＢlkを１だけ増大し、その後、増大後の行番号ｉＢlkがブロック行数Ｒowより小さいことがステップＳ９０２で判定されると、既に述べたようにステップＳ９０４以降の処理が繰り返される。こうして、次のブロック行について以上に述べたような、列方向に隣接するブロックのクラスタが異なるか否かを判定し、異なる一組のブロックの間に領域境界の垂直方向部分を表す画像を描画する。その後以上の処理が繰り返され、ステップＳ９０２において、増大後の行番号ｉＢlkがブロック行数Ｒowより小さくない、すなわち、ブロック行数Ｒowに達したとステップＳ９０２で判定されると、領域境界垂直方向部分検出部９００の処理が終了する。
【０１２８】
図１に戻り、領域分割部４００は、領域境界垂直方向部分検出部９００の処理の終了後の領域境界水平方向部分検出部９５０を実行する。
図１２は、領域境界水平方向部分検出部９５０の処理の一例を示す概略フローチャートである。領域境界垂直方向部分検出部９００は、行方向（図２（ｂ）においてはｘ方向）に隣接する二つのブロックが異なるクラスタに属するときには、その境界辺付近に領域境界の水平方向部分を表す、図の水平方向（図２（ｂ）の場合にはｙ方向）に延びた画像を描画するものである。
【０１２９】
図１２の処理は、ステップＳ９５７において、いずれかの処理中のブロックと行方向に隣接する（図２（ｂ）の下隣り）ブロックとに対する、ブロック別クラスタ番号データｃluster内の第１の要素ｃluster[ｉＢlk][ｊＢlk]内のクラスタ番号と第２の要素ｃLUSTER[ｉＢlk＋１][ｊＢlk]内のクラスタ番号とが等しいか否かを判定する処理を順次行を変え、更に列を変えながら行う点で、図１１の処理と異なり、更に、いずれかの行方向に隣接する二つのブロックのクラスタ番号が異なるときには、ステップＳ９６０において、処理中のブロックと下隣りのブロックの間に領域境界の水平方向部分を表す画像を描画する点でも図１１の処理と異なる。関数drawBoundaryＸ（ｘｂ，ｙｂ，bＳize）は、そのための領域境界線画像の水平方向部分を描画するための関数である。この関数により描画される領域境界線の水平方向部分を表す画像の例は後に説明する。領域境界水平方向部分検出部９５０のその他の処理のうち、ステップＳ９５１、Ｓ９５２、Ｓ９５３、Ｓ９５４、Ｓ９５５、Ｓ９５６、Ｓ９５８、Ｓ９５９は、図１１のステップＳ９０１、Ｓ９０２、Ｓ９０３、Ｓ９０４、Ｓ９０５、Ｓ９０６、Ｓ９０８、Ｓ９０９にそれぞれ対応し、それらとの比較から、領域境界水平方向部分検出部９５０のその他の処理は当業者に明確であるのでその説明は省略する。
【０１３０】
図１３は、領域境界垂直方向部分検出部９００と領域境界水平方向部分検出部９５０により描画される領域境界を表す画像の例を説明するための図である。同図（ａ）は、解析対象画像２１Ａ内の極くわずかな数のブロックを含む部分を示す図である。図のブロック内の括弧がついていない数値は、ブロックの通し番号を例示し、ブロック内にある小括弧内の数値は、そのブロックが属するクラスタの番号である。図には９個のブロック＃０から＃８までが示され、それらのブロックのうちブロック＃６のみがクラスタ１に所属し、ブロック＃０、＃３、＃７、＃８がクラスタ２に所属し、ブロック＃１、＃４、＃５がクラスタ３に所属し、ブロック＃２のみがクラスタ４に所属している。以下では、ブロックのサイズは、一例として４画素×４画素であると仮定する。
【０１３１】
領域境界垂直方向部分検出部９００は、これらのブロックに対しては、ブロック＃０と＃１の間、ブロック＃１と＃２の間、ブロック＃３と＃４の間、ブロック＃６と＃７の間に領域境界の垂直方向部分を表す画像を描画することになる。同様に、領域境界水平方向部分検出部９５０は、ブロック＃２と＃５の間、ブロック＃３と＃６の間、ブロック＃４と＃７の間、ブロック＃５と＃８の間に領域境界の水平方向部分を表す画像を描画することになる。
【０１３２】
領域境界の垂直方向部分を表す画像と領域境界の水平方向部分を表す画像の描画位置及び描画する画像の種類はいろいろあり得る。同図（ｂ）は、同図（ａ）のブロック群に対して領域分割部４００が描画する領域境界を示す画像のうち、領域境界垂直方向部分検出部９００内の関数drawBoundaryＹ（ｘｂ，ｙｂ，bＳize）が描画する領域境界の垂直方向部分を表す画像の例を示す図である。図では各ブロックに左上角の画素のｘ，ｙ座標がそのブロックを代表する画素の座標ｘｂ，ｙｂであり、上記関数は、その座標ｘｂ，ｙｂとブロックサイズbＳizeに基づいて、以下に説明するような位置にテクスチャ境界の垂直方向部分を表す画像を描画する。図では、テクスチャ境界の垂直方向部分を表す画像の例として、１画素分の幅を持ち、濃度が最大の黒色で、垂直方向に延びている直線Ｌｖを使用し、かつ、その直線を描画する位置を、列方向に隣接する二つのブロックのうち、左側（列番号が小さい側）のブロック内の、右側のブロックとの境にある垂直方向に延びた辺上にしている。
【０１３３】
同図（ｃ）は、同図（ａ）のブロック群に対して領域分割部４００が描画する領域境界を示す画像のうち、領域境界水平方向部分検出部９５０内の関数drawBoundaryＸ（ｘｂ，ｙｂ，bＳize）が描画する領域境界の水平方向部分を表す画像の例を示す図である。図では、テクスチャ境界の水平方向部分を表す画像の例として、１画素分の幅を持ち、濃度が最大の黒色で、水平方向に延びる直線Ｌｈを使用し、かつ、その直線を描画する位置を、行方向に隣接する二つのブロックのうち、上側（行番号が小さい側）のブロック内の、下側のブロックとの境に位置する水平方向に延びた辺上にしている。同図（ｄ）は、同図（ｂ）と（ｃ）にある領域境界を表す画像Ｌｖ、Ｌｈを合わせて表示したものである。
【０１３４】
これらの境界線の描画位置は適宜変更することは可能である。例えば、領域境界の垂直方向部分を表す直線Ｌｖを、列方向に隣接する二つのブロックのうち、右側（列番号が大きい側）のブロック内の、左側のブロックとの境界に位置する垂直方向に延びた辺上にしてもよい。領域境界の水平方向部分を表す直線Ｌｈについても同様である。
【０１３５】
実際上は、各ブロック内に画像が表示され、それに重畳して領域境界を示す画像が表示される。したがって、境界線に黒色の線を使用すると、解析対象画像の背景に位置する部分が黒色又はそれに近い場合、境界線を識別できないことが考えられる。したがって、背景画像が黒色であっても境界線を識別可能にすることが望ましい。そのためには、境界線として、黒色の境界線と白色の境界線の組合せを使用するようにしてもよい。例えば、中央に白色の直線を含み、両側に黒色の直線を含む３本の直線を境界線に用いてもよい。図１３（ｅ）は、垂直方向の境界線に一対の黒色の垂直の直線Ｌｖb1、Ｌｖb2の間に一本の白色の垂直の直線Ｌvwを使用し、水平方向の境界線に一対の黒色の水平の直線Ｌｈb1、Ｌｈb2の間に一本の白色の水平の直線Ｌhwを使用した例である。図では、白色の垂直の直線Ｌvwと白色の水平の境界線Ｌhwには、明確になるように、斜線を付けている。ここでは、垂直方向の黒色の垂直の直線Ｌｖb1は、隣接するブロックとの境界辺より１画素分だけブロックの内部に位置し、他の黒色の直線Ｌｖb2は、他の隣接するブロックの境界辺上に位置する。一本の白色の水平の直線Ｌhwは、当該他の隣接するブロックの境界に位置する辺上に位置する。このような境界線を用いると、境界線の一部が背景画像の濃度とほぼ等しくなっても、境界線の他の部分が必ず背景画像とは濃度が異なるので、境界線の位置は認識可能である。図１３（ｅ）では、黒色の水平又は垂直の境界線画像が白色の水平又は垂直の境界線画像より上側に位置するように描画している。ただし、図では、白色の画像部分には、その部分が明確になるように、斜線を付けている。
【０１３６】
しかし、このような境界線画像を使用した場合には、図の左下部分に示すように、水平の白色の境界線と垂直の黒色の境界線画像が重なる部分と、水平の黒色の境界線と垂直の白色の境界線画像が重なる部分とが発生し、その部分では、境界の位置がどこにあるかが判別しにくくなる。更に、描画の順序によって、上側に来る画像が決まる場合には、白色の直線の画素が黒色の直線で上書きされることが生じる。逆に、水平の黒色の境界線画像と垂直の白色の境界線画像が重なる部分では、描画の順序によっては黒色の直線上の画素が白色の直線で上書きされることが生じることがある。これらの事象が生じると、上記重畳する部分では境界線の位置が識別しにくくなることが懸念される。
【０１３７】
この問題を避けるには、同図（ｆ）に示されたように、同図（ｅ）で使用した垂直方向の一対の黒色の垂直の直線Ｌｖb1、Ｌｖb2の一つのブロック内の両端の画素を除いた一対の直線を使用し、一本の白色の垂直の直線Ｌvwについても同様にブロック内の両端の画素を除いた直線を使用し、水平方向の境界線として使用する一対の黒色の水平の直線Ｌｈb1、Ｌｈb2と、白色の直線Ｌhwについても同様とすることが望ましい。なお、同図でも白色の画像部分には、その部分が明確になるように、斜線を付けている。図１３（ｆ）の方法では、境界画像が３本の直線画像からなるので、境界画像が、同図（ｄ）のように１本の直線画像からなる場合に比べると、背景画像をより多く隠す点では余り望ましくはない。しかし、背景画像から境界線画像を識別できない場合は実質上なくなる。更に、同図（ｅ）の場合に生じる、水平又は垂直の境界線画像の重畳がなくなり、境界線位置が識別しにくいという問題も減る。
【０１３８】
領域境界垂直方向部分検出部９００のステップＳ９１０で使用される関数drawBoundaryＹ（ｘｂ，ｙｂ，bＳize）と領域境界水平方向部分検出部９５０内のステップＳ９６０で使用される関数drawBoundaryＸ（ｘｂ，ｙｂ，bＳize）とにより、図１３（ｆ）のような領域境界画像を描画するには以下のようにすればよい。境界画像の垂直方向部分を例えばブロック＃０と＃１の間に描画するときは、関数drawBoundaryＹ（ｘｂ，ｙｂ，bＳize）の座標（ｘｂ、ｙｂ）の値はブロック＃０の代表画素である左上角の画素の座標（０，０）である。関数drawBoundaryＹ（ｘｂ，ｙｂ，bＳize）は、ブロック＃０内に直線Ｌｖb1として、座標（ｘｂ＋１，ｙｂ＋bＳize−２）の点と座標（ｘｂ＋bＳize−２，ｙｂ＋bＳize−２）の点とを結ぶ黒色の直線を描画し、直線Ｌvwとして、座標（ｘｂ＋１，ｙｂ＋bＳize−１）の点と座標（ｘｂ＋bＳize−２，ｙｂ＋bＳize−１）の点とを結ぶ白色の直線を描画する。ブロック＃１内に直線Ｌｖb2として、座標（ｘｂ＋１，ｙｂ＋bＳize）の点と座標（ｘｂ＋bＳize−２，ｙｂ＋bＳize）の点とを結ぶ黒色の直線を描画すればよい。
【０１３９】
一方、境界画像の水平方向部分を例えばブロック＃２と＃５の間に描画するときは、関数drawBoundaryＸ（ｘｂ，ｙｂ，bＳize）の座標（ｘｂ、ｙｂ）の値はブロック＃２の代表画素であるブロック＃２の左上角の画素の座標（０，８）である。関数drawBoundaryＸ（ｘｂ，ｙｂ，bＳize）は、ブロック＃２内に直線Ｌｈb1として、座標（ｘｂ＋bＳize−２，ｙｂ＋bＳize−１）の点と座標（ｘｂ＋bＳize−２，ｙｂ＋bＳize−２）の点とを結ぶ黒色の直線を描画し、直線Ｌhwとして、座標（ｘｂ＋bＳize−１，ｙｂ＋bＳize−３）の点と座標（ｘｂ＋bＳize−１，ｙｂ＋bＳize−２）の点とを結ぶ白色の直線を描画し、ブロック＃５内に直線Ｌｈb2として、座標（ｘｂ＋bＳize，ｙｂ＋bＳize−３）の点と座標（ｘｂ＋bＳize，ｙｂ＋bＳize−２）の点とを結ぶ黒色の直線を描画すればよい。
【０１４０】
以上のようにして、領域境界垂直方向部分検出部９００と領域境界水平方向部分検出部９５０により領域境界画像を表す情報が生成されると、図１に戻り、領域分割可能なプログラム４０は処理を終了する。
【０１４１】
つぎに、以上で説明した領域分割方法を実行して得られた境界画像の例を説明する。
図１４は、テクスチャ解析の対象の例として植生指数の画像の例を示す図である。植生指数は、植物の生育状況を示す指数であり、植物が茂ったところでは値が大きく、地肌や水面では値が小さくなる。この植生指数画像はマルチスペクトル衛星画像から生成できる。すなわち、マルチスペクトル画像の各画素について、赤の濃度をＲ、赤外線の濃度をIRで表したとき、当該画素の植生指数は（IR−Ｒ）／（IR＋Ｒ）により与えられる。植生指数画像は、画像内の各画素の植生指数の値を白黒の濃淡で表した画像である。
【０１４２】
図１５は、図１４の解析対象画像を従来技術により領域分割した結果得られた領域分割済み画像の一例を示す図である。この例では、ブロックは１６×１６画素の正方形であり、各ブロックからテクスチャ特徴量として濃度のヒストグラムを抽出し、得られた複数のテクスチャ特徴量を、本実施の形態と同じく、特許文献２に記載された距離に基づいて複数のクラスタに分類し、分類結果に基づいて、複数のブロックを異なるクラスタに所属させ、同じクラスタに属し、かつ隣接する複数のブロックを同じ領域となるように、解析対象画像を複数の領域に分割して、図１５の画像が得られた。この場合、領域の境界位置は、ブロックサイズである１６画素を単位として決定される。図において、境界線画像は、図１３（ｆ）に示したように、一本の白色の境界線画像と、それを挟む一対の黒色の境界線画像とからなる境界線画像を用いている。領域境界の位置はブロックのサイズである１６画素単位で決定されている。そのため、画像の濃淡の変化している部分でも領域の境界が変化しておらず領域の境界位置の分解能は粗いことが分かる。
【０１４３】
図１６は、図１４の解析対象画像を本実施の形態で説明した領域分割方法により領域分割した結果得られた領域分割済み画像２５Ｂの一例を示す図である。ブロックは、４×４画素のサイズの正方形であり、ブロックに対応する特徴抽出領域のサイズは、ブロックを中心に含む１６×１６画素のサイズの正方形である。各ブロックに対応する特徴抽出領域からテクスチャ特徴量として濃度のヒストグラムを抽出し、得られた複数の濃度のヒストグラムを複数のクラスタに分類し、分類結果に基づいて、ブロックを異なるクラスタに所属させ、同じクラスタに属し、かつ隣接するブロックを同じ領域となるように、解析対象画像を複数の領域に分割したものである。この例では、領域の境界位置はブロックサイズである４画素を単位として決定されている。領域分割の境界は画像の濃淡の分布によく適合していて、画像の濃淡が異なる部分は小さい領域でも異なる領域に分割されているので、テクスチャ特徴量の信頼度が高く、それでいて、領域の境界位置は図１５の従来技術より高い分解能でもって決定されていることが分かる。
【０１４４】
＜発明の実施の形態２＞
また、以上の実施の形態１では特徴抽出領域には１６×１６画素の領域が使用され、ブロックサイズは４×４画素のサイズを有していた。しかし、ブロックサイズあるいは特徴抽出領域サイズ又はそれらの両方を変更することも可能である。ブロックサイズを減少した場合には、領域分割するときの分割単位がより小さくなり、領域の分割後の境界位置の分解能を上げることができる。本実施の形態では、特にブロックを１画素の領域とするものである。この場合には、各画素（ブロック）に対応する特徴抽出領域には、複数の画素を含み、当該画素を中心付近に含む特徴抽出領域を使用すればよい。
【０１４５】
すなわち、各画素に対応する特徴抽出領域として、その領域内の幾何学的な中心付近の画素に対応する領域を使用すればよい。しかし、特徴抽出領域が、その幾何学的な中心に画素を含む領域であるときには、その領域を、その中心付近の画素に対応する領域とすればよい。このことは、正方形の特徴抽出領域から検出したテクスチャ特徴量をその中心付近の画素のテクスチャ特徴量とするうえで望ましいと考えられる。
【０１４６】
特徴抽出領域が、例えば正方形であることが望ましい。この場合、特徴抽出領域から抽出したテクスチャ特徴量は、中心付近の画素のテクスチャ特徴量として使用するのに適切と考えられる。特徴抽出領域が正方形の場合には、その正方形領域は、その中心付近に位置する４つの画素のいずれかに対応する領域であるとして、当該正方形の領域から抽出したテクスチャ特徴量を当該４つの画素の一つに対応するテクスチャ特徴量としても、正方形の図形的な中心とその画素との位置ずれは半画素分だけであるので、その程度のずれは結果には余り影響しないと予想される。しかし、正方形の一辺の画素数が奇数であるときには、正方形の幾何学的な中心に画素を位置するので、その正方形の領域を、中心の画素に対応する特徴抽出領域として使用することができる。
【０１４７】
特徴抽出領域は、例えば円形でもよいと考えられる。この場合も、この特徴抽出領域から抽出したテクスチャ特徴量は、円の中心付近の画素のテクスチャ特徴量として使用するのに適切と考えられる。その円の直径を構成する画素数が偶数でもよいが、奇数の場合、円の幾何学的な中心に画素が位置するので、その円形の特徴抽出領域をその円の中心の画素に対応する特徴抽出領域とすることができる。
【０１４８】
この実施の形態２でも、前記の実施の形態１と同じく大きな特徴抽出領域を各画素に対応して使用して、複数の画素のそれぞれに対応する特徴抽出領域から抽出された複数のテクスチャ特徴量を複数のクラスタに分類し、分類結果に基づいて、隣接する二つの画素が同じラスタに属する場合に一つの領域に属するように、解析対象画像を複数の領域に分割することができる。これによれば、ブロックと画素とが同じになり、これまでに述べたブロック行番号と列番号の代わりに画素のｘ座標とｙ座標を使用し、ブロックの通し番号の代わりに画素の通し番号を使用すればよい。
【０１４９】
更に、領域分割部４００により画像を複数の領域に分割するには、領域境界垂直方向部分検出部９００により領域の境界の垂直方向部分を表す画像を描画するときには、各画素毎に、ｙ方向（右方向）の隣りの画素が同じクラスタに属するか否かを判断し、同じクラスタに属さないときには、図１３（ｂ）の境界線画像を使用するときには当該画素に、あるいは図１３（ｆ）の境界線画像を使用するときには、当該画素と当該画素の右隣りの画素と左隣りの画素とに重畳して、当該画素が右隣りの画素が属するクラスタとは異なるクラスタに属する領域の境界線上にあることを示す画像データを書き込めばよい。同様に、領域境界水平方向部分検出部９５０によりテクスチャの境界を示す境界の水平方向部分を検出するときには、図１３（ｂ）の境界線画像を使用するときには当該画素に、あるいは図１３（ｆ）の境界線画像を使用するときには、当該画素と当該画素の上隣りの画素と下隣りの画素とに重畳して、当該画素が下隣りの画素が属するクラスタとは異なるクラスタに属する領域の境界線上にあることを示す画像データを書き込めばよい。このようにして、領域の境界を画素単位に設定することができ、領域の境界位置を非常に分解能よく設定できる。
【０１５０】
＜発明の実施の形態３＞
実施の形態１では、白黒画像を、テクスチャ特徴量を用いて領域分割する例を説明したが、本発明はカラー画像にも適用することができる。カラー画像の場合には、各画素のＲ、Ｇ、Ｂ成分を要素とする濃度ベクトルを各画素の濃度として扱い、濃度のヒストグラムとして、各色成分が取りうる値の異なる組合せを一つの濃度として扱って濃度ヒストグラムを生成すれば、その後は上記実施の形態１と同じように処理すればよい。すなわち、画素の濃度が取りうる色成分の組Ｒｉ、Ｇｊ、Ｂｋに対する頻度Ｐ（Ｒｉ，Ｇｊ，Ｂｋ）を示すデータをカラー画像での濃度のヒストグラムとして考え、異なる特徴抽出領域から検出された異なる濃度ヒストグラムＰ１、Ｐ２の間の距離ｄを、実施の形態１と同様に、下記の式７のように、対応する濃度における頻度の差の総和により定義することができる。ここでΣΣΣは、それぞれ添え字ｉ、ｊ、ｋについてそれぞれが取りうる範囲での総和である。
ｄ＝ΣΣΣ｜P1(Ri,Gj,Bk)−P2(Ri,Gj,Bk)｜    （７）
【０１５１】
本発明は、上記の複数の実施の形態に限定されるものではなく、本発明の要旨を変更しない範囲で変更又は修正して他の形態で実施してもよいことは言うまでもない。例えば、実施の形態１では、図１６に例示したように、ブロックを分類するためのテクスチャ特徴量を抽出する領域としてブロックより大きな領域を使用するという目的のために、テクスチャ特徴量として、特徴抽出領域の画素の濃度のヒストグラムを使用したが、同じ目的のために、テクスチャ特徴量として、濃度ヒストグラムの平均、分散、３次モーメント、４次モーメント、同時生起確率、差分統計量なども使用できることを発明者による実験により確認できた。
【０１５２】
また、実施の形態１では、テクスチャ特徴量として濃度ヒストグラムを使用し、テクスチャ特徴量の分類にあっては、テクスチャ特徴量間の距離を使用し、二つの濃度ヒストグラムの距離として、特許文献２に記載のように各濃度における頻度の差の絶対値の総和を使用したが他の方法で距離を計算してもよい。例えば、濃度の差の自乗の総和の平方根を使用してもよい。一般に、ｎ次元空間における点Ａ、Ｂ間の距離ｄ（Ａ，Ｂ）は、非負値であり、任意の点Ａ、Ｂ、Ｃについて、三角不等式ｄ（Ａ，Ｂ）＋ｄ（Ｂ，Ｃ）≧ｄ（Ａ，Ｃ）が成立すればよい。
【０１５３】
なお、第１の実施の形態で使用した、図１３（ｆ）に示す境界線を使用した場合には、テクスチャの境界線の位置は、中央の白色の線Ｌvwの位置ではなく、その線と右側の黒色の線Ｌｖb2との境界に位置することになり、白色の直線は必ずしもテクスチャの境界を正確には表していないという問題がある。このことは水平の境界線についても同じである。この問題を解決するには、同図（ｆ）に代えて、境界線として、一対の隣接した白色の直線と、それぞれの外側に位置する一対の黒色の直線を使用し、隣接する二つのブロックのそれぞれに一つの白色の直線を隣のブロックとの境界辺に配置しその内側に黒色の直線を配置すればよい。この方法では、境界線が４本の直線により表されるので、背景画像のうち表示されなくなる画素が増えるという問題が大きくなる。特にブロックサイズが小さいときには、問題が大きくなるが、テクスチャの境界位置が、中央の２本の白い直線の中間に位置するので、テクスチャの境界位置と境界線画像の中心位置が一致するという利点がある。
【図面の簡単な説明】
【０１５４】
【図１】本発明に係る画像分割成装置の一つの実施形態の概略ブロック図である。
【図２】（ａ）は画像を領域に分割するときに使用される複数のブロックと複数の特徴抽出領域の概略を説明するための図であり、（ｂ）は解析対象画像とブロックと特徴抽出領域との関係の例をより詳細に示す図である。
【図３】（ａ）は処理条件設定部の処理の一例を示す概略フローチャートである。（ｂ）は処理条件データの例を示す図である。
【図４】（ａ）はテクスチャ特徴量検出部の処理の一例を示す概略フローチャートである。（ｂ）はテクスチャ特徴量検出部により生成されるテクスチャ特徴量データとしての濃度ヒストグラムデータの例を示す図である。
【図５】テクスチャ分類部の処理の一例を示す概略フローチャートである。
【図６】テクスチャ分類部で生成されるいくつかのデータの例を示す図である。
【図７】初期値設定部の処理の一例を示す概略フローチャートである。
【図８】（ａ）は最短距離クラスタ組検出部の処理の一例を示す概略フローチャートである。（ｂ）は最短距離クラスタ組データの例を示す図である。
【図９】クラスタ併合部の処理の一例を示す概略フローチャートである。
【図１０】（ａ）はクラスタ番号付与部の処理の一例を示す概略フローチャートである。（ｂ）はクラスタ番号付与部で生成されるブロック別クラスタ番号データの例を示す図である。
【図１１】領域境界垂直方向部分検出部の処理例を示す概略フローチャートである。
【図１２】領域境界水平方向部分検出部の処理例を示す概略フローチャートである。
【図１３】領域境界垂直方向部分検出部と領域境界水平方向部分検出部により描画される領域境界を表すいくつかの境界線画像を説明するための図である。
【図１４】解析対象画像の例としての植生指数の画像の例を示す図である。
【図１５】図１４の解析対象画像を従来技術により領域分割した結果得られた領域分割済み画像の一例を示す図である。
【図１６】図１４の解析対象画像を本発明の実施の形態で説明した領域分割方法により領域分割した結果得られた領域分割済み画像の一例を示す図である。
【符号の説明】
【０１５５】
bＳize・・・ブロックサイズ、ｃluster[ｉＢlk][ｊＢlk]・・・ブロック別クラスタ番号データ、Ｃol・・・ブロック列数、ｄ[Ｉci][Ｉcj]・・・クラスタ間距離データ、Dist（Ｉci，Ｉcj）・・・クラスタ間距離計算関数、ｄＭin・・・全クラスタ間最短距離、drawBoundaryＸ・・・領域境界線画像の水平方向部分を描画するための関数、drawBoundaryＹ・・・領域境界線画像の垂直方向部分を描画するための関数、flag・・・最短距離クラスタ組更新フラグ、ｇ・・・濃度値、histgram[ｉＢlk][ｊＢlk][ｇ]・・・濃度ヒストグラムデータ、Ｉｂ・・・ブロック番号、ｉＢlk・・・ブロック行番号、Ｉｃ、Ｉci・・・クラスタ番号、ＩciＭin・・・第１最短距離クラスタ番号、ＩcjＭin・・・第２最短距離クラスタ番号、Ｉck・・・新クラスタ番号、Ｉｊ・・・要素番号、ｉmage[ｘｉ][ｙｊ]・・・画像データ、ｊＢlk・・・ブロック列番号、Ｌｈ・・・テクスチャ領域境界線の水平部分用の直線、Ｌｈb1、Ｌｈb2・・・テクスチャ領域用の境界線の水平部分用の黒色直線、Ｌhw・・・テクスチャ領域境界線の水平部分用の白色直線、Ｌｖ・・・テクスチャ領域境界線の垂直部分用の直線、Ｌｖb1、Ｌｖb2・・・テクスチャ領域境界線の垂直部分用の黒色直線、Ｌvw・・・テクスチャ領域境界線の垂直部分用の白色直線、ｎ[Ｉci]・・・クラスタ別メンバー数データ、Ｎｂ・・・ブロック総数、nＳize・・・特徴抽出領域サイズ、Ｎｘ・・・解析対象画像の縦サイズ、Ｎｙ・・・解析対象画像の横サイズ、Ｒow・・・ブロック行数、Ｓet[Ｉci][Ｉｊ]・・・クラスタ別メンバーブロックデータ、Ｔ・・・距離の閾値、ｘｂ，ｙｂ・・・ブロック代表画素の座標、Δ・・・サイズ差（nＳize−bＳize）。
【図１】
2005196702.tif 000003
【図２】
2005196702.tif 000004
【図３】
2005196702.tif 000005
【図４】
2005196702.tif 000006
【図５】
2005196702.tif 000007
【図６】
2005196702.tif 000008
【図７】
2005196702.tif 000009
【図８】
2005196702.tif 000010
【図９】
2005196702.tif 000011
【図１０】
2005196702.tif 000012
【図１１】
2005196702.tif 000013
【図１２】
2005196702.tif 000014
【図１３】
2005196702.tif 000015
【図１４】
2005196702.tif 000016
【図１５】
2005196702.tif 000017
【図１６】
2005196702.tif 000018