(57)【要約】【課題】  クラスタリング処理により高速に画像の領域分割を行うことのできる画像処理方法及び画像処理装置及びプログラムを提供する。【解決手段】  所定の画素数に対するクラスタリング処理を終える毎に、帰属する画素数が画素数閾値以下である小クラスタを判別する。画素数閾値以下であると判別された小クラスタを、代表特徴ベクトルの距離が最も近いクラスタと統合する。このように構成することにより、特徴ベクトルの距離計算対象となるクラスタ数を削減する。【選択図】  図２
2011028586.tif 000002
【特許請求の範囲】
【請求項１】
画像データを複数のクラスタに分割する画像処理方法であって、
クラスタ生成手段が、前記画像データに含まれる画素を順に処理対象とし、処理対象の画素の特徴ベクトルと既に定義されているクラスタの代表特徴ベクトルとの距離のうちで最も近い距離が第１距離閾値以下である場合は、当該最も近い距離の代表特徴ベクトルのクラスタに当該処理対象の画素を帰属させ、前記最も近い距離が前記第１距離閾値以下でない場合は、新たにクラスタを定義して当該定義したクラスタに当該処理対象の画素を帰属させるクラスタ生成工程と、
クラスタ統合手段が、予め決められた数の画素に対して前記クラスタ生成工程の処理を終える毎に、定義されているクラスタのうちで帰属する画素数が画素数閾値以下であるクラスタを小クラスタとし、該小クラスタの代表特徴ベクトルと距離が近い代表特徴ベクトルを持つクラスタに該小クラスタを統合するクラスタ統合工程とを有することを特徴とする画像処理方法。
【請求項２】
前記クラスタ生成工程は、定義されたクラスタの数がクラスタ数閾値を越える場合は、代表特徴ベクトルの近いクラスタ同士を統合するクラスタ数制限工程を含むことを特徴とする請求項１に記載の画像処理方法。
【請求項３】
前記クラスタ生成工程は、前記処理対象の画素の特徴ベクトルと当該処理対象の画素の近傍に位置する画素が帰属するクラスタの代表特徴ベクトルとの距離が第２距離閾値以下である場合は、前記近傍のクラスタに処理対象の画素を帰属させることを特徴とする請求項１または２に記載の画像処理方法。
【請求項４】
前記予め決められた数の画素は、ライン方向の画素数の整数倍であることを特徴とする請求項１に記載の画像処理方法。
【請求項５】
前記クラスタ統合工程では、クラスタに帰属する画素数が前記画素数閾値以下であっても、該クラスタに帰属する画素が処理済のラインのうちの下端のライン内に位置する画素を含む場合は、小クラスタとして取り扱わないことを特徴とする請求項４に記載の画像処理方法。
【請求項６】
前記クラスタ統合工程では、小クラスタに帰属する画素の近傍に位置する画素が帰属するクラスタに前記小クラスタを統合することを特徴とする請求項１に記載の画像処理方法。
【請求項７】
小クラスタの数が小クラスタ数閾値を超えた場合に、当該画像処理方法における画像データを複数のクラスタに分割する処理を打ち切ることを特徴とする請求項１に記載の画像処理方法。
【請求項８】
コンピュータを、
画像データに含まれる画素を順に処理対象とし、処理対象の画素の特徴ベクトルと既に定義されているクラスタの代表特徴ベクトルとの距離のうちで最も近い距離が第１距離閾値以下である場合は、当該最も近い距離の代表特徴ベクトルのクラスタに当該処理対象の画素を帰属させ、前記最も近い距離が前記第１距離閾値以下でない場合は、新たにクラスタを定義して当該定義したクラスタに当該処理対象の画素を帰属させるクラスタ生成手段と、
予め決められた数の画素に対して前記クラスタ生成工程の処理を終える毎に、定義されているクラスタのうちで帰属する画素数が画素数閾値以下であるクラスタを小クラスタとし、該小クラスタの代表特徴ベクトルと距離が近い代表特徴ベクトルを持つクラスタに該小クラスタを統合するクラスタ統合手段と、
して機能させるためのプログラム。
【請求項９】
請求項８に記載のプログラムを記憶したコンピュータが読み取り可能な記憶媒体。
【請求項１０】
画像データを複数のクラスタに分割する画像処理装置であって、
前記画像データに含まれる画素を順に処理対象とし、処理対象の画素の特徴ベクトルと既に定義されているクラスタの代表特徴ベクトルとの距離のうちで最も近い距離が第１距離閾値以下である場合は、当該最も近い距離の代表特徴ベクトルのクラスタに当該処理対象の画素を帰属させ、前記最も近い距離が前記第１距離閾値以下でない場合は、新たにクラスタを定義して当該定義したクラスタに当該処理対象の画素を帰属させるクラスタ生成手段と、
予め決められた数の画素に対して前記クラスタ生成工程の処理を終える毎に、定義されているクラスタのうちで帰属する画素数が画素数閾値以下であるクラスタを小クラスタとし、該小クラスタの代表特徴ベクトルと距離が近い代表特徴ベクトルを持つクラスタに該小クラスタを統合するクラスタ統合手段とを有することを特徴とする画像処理装置。
【請求項１１】
前記クラスタ生成手段は、定義されたクラスタの数がクラスタ数閾値を越える場合は、代表特徴ベクトルの近いクラスタ同士を統合するクラスタ数制限手段を含むことを特徴とする請求項１０に記載の画像処理装置。
【請求項１２】
前記クラスタ生成手段は、前記処理対象の画素の特徴ベクトルと当該処理対象の画素の近傍に位置する画素が帰属するクラスタの代表特徴ベクトルとの距離が第２距離閾値以下である場合は、前記近傍のクラスタに処理対象の画素を帰属させることを特徴とする請求項１０または１１に記載の画像処理装置。
【請求項１３】
前記予め決められた数の画素は、ライン方向の画素数の整数倍であることを特徴とする請求項１０に記載の画像処理装置。
【請求項１４】
前記クラスタ統合手段は、クラスタに帰属する画素数が前記画素数閾値以下であっても、該クラスタに帰属する画素が処理済のラインのうちの下端のライン内に位置する画素を含む場合は、小クラスタとして取り扱わないことを特徴とする請求項１３に記載の画像処理装置。
【請求項１５】
前記クラスタ統合手段は、小クラスタに帰属する画素の近傍に位置する画素が帰属するクラスタに前記小クラスタを統合することを特徴とする請求項１０に記載の画像処理装置。
【請求項１６】
小クラスタの数が小クラスタ数閾値を超えた場合に、当該画像処理装置が画像データを複数のクラスタに分割する処理を打ち切ることを特徴とする請求項１０に記載の画像処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像データを領域分割して処理するための画像処理方法及び画像処理装置及びプログラムに関する。
【背景技術】
【０００２】
近年、文書を紙ではなく、電子化して保存あるいは送信する需要が高まっている。ここでいう文書の電子化とは、単に紙上の文書をスキャナ等によって読み取って画像データを得るにとどまらない。例えば、文書を構成する文字、図、写真、表等の性質の異なる領域に画像データを分離する。そして、文字領域は文字コード、図領域はベクトルデータ、背景領域や写真領域はビットマップデータ、表領域は構造データなど、各々最も適した形式にデータ化する処理が、文書の電子化処理で行われる。ベクトルデータへの変換手法として、特許文献１の画像処理装置が開示されている。該画像処理装置では、クラスタリング処理により領域分割を行い、各領域の輪郭を抽出し、抽出された輪郭をベクトルデータへ変換する。また、特許文献２では、画像を背景と前景とに分離し、前景をベクトルデータに変換し、背景を背景専用の方法でデータ圧縮する画像処理方法が開示されている。また、特許文献３では、スキャナで読み取られた原稿に対してクラスタリング処理を行った場合に含まれるノイズを除去する画像処理方法が開示されている。
【０００３】
ところで、画像をクラスタリング処理により領域分割する方法としては、Nearest Neighborクラスタリング法が知られている。Nearest Neighborクラスタリング法は、処理対象の画素の特徴ベクトルと各クラスタの代表特徴ベクトルとを比較して、最も距離が近い特徴ベクトルを持つクラスタを探索する。距離が所定の閾値以下であれば該クラスタに処理対象の画素を帰属させる。そうでなければ新たなクラスタを定義して、該クラスタに処理対象の画素を帰属させる。なお、ここで特徴ベクトルとしては、色情報（Ｒ、Ｇ、Ｂから成る画素値）が使われるのが一般的である。クラスタの代表特徴ベクトルには、一般的にクラスタの重心が用いられる。即ち、クラスタに帰属する各画素の特徴ベクトル（色情報）の平均値である。Nearest Neighborクラスタリング法では、処理対象の画素の特徴ベクトルと距離が最も近い代表特徴ベクトルを持つクラスタを、全てのクラスタの中から探索する処理を行う。即ち、画素毎に全てのクラスタの代表特徴ベクトルとの距離を計算しなければならない。その為、領域分割の精度を高めるためにクラスタ数を増やすと、計算時間が増大するという問題があった。
【０００４】
このような問題を解決するための従来技術として、特許文献４のカラー画像処理装置が開示されている。かかる特許文献４では、処理対象の画素と隣接画素の特徴ベクトル（色情報）に基づいてクラスタリングを行う。次に、クラスタ同士の色情報及び幾何学情報に基づいてクラスタのグルーピングを行う。ここで、幾何学情報とは、領域同士の近さを表す座標情報などである。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００７−１５８７２５号公報
【特許文献２】特開２００８−２０６０７３号公報
【特許文献３】特開２００６−３４４０６９号公報
【特許文献４】特開平１１−２８８４６５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、上記特許文献４の従来技術では、処理対象の画素と隣接画素の特徴ベクトルの距離が離れている場合、クラスタを新たに定義して注目画素を新たに定義された該クラスタに帰属させるので、大量のクラスタが定義される。その為、グルーピングに要する処理時間が増大するという問題があった。また、上記特許文献３の従来技術では、対象となる画像全体に対するクラスタリング処理を終えた後に、ノイズ除去を行っていた。従って、クラスタリング処理中は、除去されるべきノイズを含むクラスタの代表特徴ベクトルも、処理対象の画素との距離を計算する対象となっていたため、処理時間が増大するという問題があった。
【０００７】
そこで、本発明は、クラスタリング処理により高速に画像の領域分割を行うことのできる画像処理方法及び画像処理装置及びプログラムを提供する。
【課題を解決するための手段】
【０００８】
上記課題を解決するために、本発明の画像処理方法は、画像データを複数のクラスタに分割する画像処理方法であって、クラスタ生成手段が、前記画像データに含まれる画素を順に処理対象とし、処理対象の画素の特徴ベクトルと既に定義されているクラスタの代表特徴ベクトルとの距離のうちで最も近い距離が第１距離閾値以下である場合は、当該最も近い距離の代表特徴ベクトルのクラスタに当該処理対象の画素を帰属させ、前記最も近い距離が前記第１距離閾値以下でない場合は、新たにクラスタを定義して当該定義したクラスタに当該処理対象の画素を帰属させるクラスタ生成工程と、クラスタ統合手段が、予め決められた数の画素に対して前記クラスタ生成工程の処理を終える毎に、定義されているクラスタのうちで帰属する画素数が画素数閾値以下であるクラスタを小クラスタとし、該小クラスタの代表特徴ベクトルと距離が近い代表特徴ベクトルを持つクラスタに該小クラスタを統合するクラスタ統合工程とを有することを特徴とする。
【発明の効果】
【０００９】
本発明では、予め決められた数の画素に対してクラスタリング処理を行うごとに、帰属する画素数が画素数閾値以下である小クラスタを、代表特徴ベクトル間の距離が近いクラスタへ統合する処理を行う。従って、１画素毎の特徴ベクトルに対し比較対象となるクラスタの総数が減ることにより、従来よりも距離計算回数を削減できるので、高速な領域分割が可能となる。
【図面の簡単な説明】
【００１０】
【図１Ａ】本実施形態の画像処理方法を適用した画像処理装置の機能構成例を示すブロック図である。
【図１Ｂ】本実施形態の画像処理装置のハードウエア構成例を示すブロック図である。
【図２】実施形態１の画像処理方法の具体的な処理手順を例示するフローチャートである。
【図３】実施形態１の画像処理方法の小クラスタ統合の処理手順を例示するフローチャートである。
【図４】実施形態１の画像処理方法における距離計算回数を例示する図
【図５】実施形態１の別の画像処理方法における領域分割結果を例示する図
【図６】実施形態２の画像処理方法の具体的な処理手順を例示するフローチャートである。
【図７】実施形態２の画像処理方法における距離計算回数を例示する図
【図８】実施形態３の画像処理方法の具体的な処理手順を例示するフローチャートである。
【図９】実施形態３の画像処理方法における距離計算回数を例示する図
【発明を実施するための形態】
【００１１】
＜本実施形態の画像処理装置の構成例＞  （画像処理装置の機能構成例）  本実施形態の画像処理方法を用いたベクトルデータ変換装置でもある画像処理装置の機能構成例について、図１Ａのブロック図を参照して説明する。図１Ａにおいて、３００は、原稿を読み取る原稿読み取り部であり、具体的にはスキャナで原稿を光学的に読み取り、Ａ／Ｄ変換して画像データを出力する。３０１は、原稿読み取り部３００から出力された画像データの各画素が前景であるか背景であるかを判定し、画像データと背景フラグを画素毎に出力する背景判定部である。背景を判定する方法については、前述の特許文献２において既知である。また、例えばスキャナから光学的に読み取られた画像データの場合、紙の色を判別して、その色に基づいて背景画素を判定してもよい。３０２は、本実施形態の画像処理方法を適用して画像データの領域分割を行うクラスタリング処理部である。クラスタリング処理部３０２へは、背景判定部３０１から出力された画像データが１画素ずつラスタスキャン順に入力される。クラスタリング処理部３０２は、領域分割（クラスタリング処理）後の画像データ（各クラスタ領域のデータ）を出力する。なお、本実施形態では、クラスタリング処理部３０２は、Ｌライン分の画素を処理する毎に、帰属する画素数の少ないクラスタを他のクラスタへ統合する。ここで、ライン数Ｌの値については本発明では限定されないが、本実施形態では"４"とする。３０３は、クラスタリング処理部３０２によって分割された各領域（各クラスタ）の輪郭を抽出する輪郭抽出部である。３０４は、輪郭抽出部３０３によって抽出された輪郭を基にベクトルデータを生成するベクトルデータ生成部である。ベクトルデータ生成部３０４は前景画像データのみをベクトルデータへ変換する。３０５は、背景判定部３０１から出力された背景フラグに基づいて、画像データのうち背景以外の画素を背景色で塗りつぶして出力する背景生成部である。３０６は、背景生成部３０５から出力されたデータを圧縮する背景圧縮部である。背景圧縮部３０６が圧縮に用いる処理方式は例えばＪＰＥＧ符号化方式があるが、本発明はこれに限定されない。３０７は、ベクトルデータ生成部３０４から出力されたベクトルデータ及び背景圧縮部３０６から出力された圧縮データを結合し、ファイルを出力するデータ結合部である。
【００１２】
（画像処理装置のハードウエア構成例）  図１Ｂに示す、本実施形態の画像処理装置をコンピュータにより実現するハードウエア構成例を説明する。図１Ｂで１０１は、各プログラムに従って画像処理装置の各要素を実現する演算及び制御を行うＣＰＵである。１０２は、ブートプログラムなどの固定プログラム及びデータを格納するＲＯＭである。
【００１３】
１０３は、ＣＰＵ１０１がプログラムを実行する間に一次記憶として使用されるＲＡＭである。本例ではＲＡＭ１０３には、以下のデータを記憶する領域が確保される。１０３ａは、画像読み取り部３００で読み取られた入力画像データを記憶する領域である。１０３ｂは、本実施形態の処理対象の画素データを記憶する領域である。１０３ｃは、画素データ１０３ｂが背景であるか前景であるかを示す背景フラグを記憶する領域である。１０３ｄは、対象画素の特徴ベクトル（Ｐc）を記憶する領域である。１０３ｅは、対象画素の特徴ベクトル（Ｐc）と各クラスタＣ［ｉ］の代表特徴ベクトル（Ｐ［ｉ］）とから算出された特徴ベクトル間の類似度を表す距離Ｄ（Ｐc，Ｐ［ｉ］）を記憶する領域である。１０３ｆは、上記距離Ｄ（Ｐc，Ｐ［ｉ］）の中の最短距離（min_distance）を記憶する領域である。１０３ｇは、最短距離（min_distance）に基づき小クラスタを結合するか否かを判定するための距離閾値（Ｔd、Ｔd1／Ｔd2）を記憶する領域である。１０３ｈは、含まれる画素数が少ない小クラスタを判別するための画素数閾値（Ｔn）を記憶する領域である。１０３ｉは、クラスタ総数を制限するためのクラスタ数閾値（Ｔc）を記憶する領域である。１０３ｊは、本実施形態の処理により統合された小クラスタの数（num_marged_cluster）を記憶する領域である。１０３ｋ以降は、生成されたクラスタ情報を記憶する領域である。１０３ｍは、現在の全体のクラスタの数（num_cluster）を記憶する領域である。１０３ｎは、最初のクラスタＣ［１］の情報を記憶する領域である。１０３ｐは、クラスタＣ［１］の代表特徴ベクトル（Ｐ［１］）を記憶する。１０３ｑは、クラスタＣ［１］に含まれる画素総数（Ｎ［１］）を記憶する。１０３ｒは、クラスタＣ［１］に含まれる画素を特定するアドレスなどを記憶する。１０３ｓは、ｉ番目のクラスタＣ［ｉ］の情報を記憶する領域である。１０３ｔは、クラスタＣ［ｉ］の代表特徴ベクトル（Ｐ［ｉ］）を記憶する。１０３ｗは、クラスタＣ［ｉ］に含まれる画素総数（Ｎ［ｉ］）を記憶する。１０３ｘは、クラスタＣ［ｉ］に含まれる画素を特定するアドレスなどを記憶する。なお、以下のフローチャートで使用されるループインデクスiやjを代入する変数ｎなどは、煩雑さを避けるため図１Ｂの図示からは省いた。
【００１４】
１０４は、ＣＰＵ１０１が実行するプログラムや大容量のデータを不揮発に記憶するディスクなどの外部記憶部である。本例では外部記憶部１０４には、以下のデータ及びプログラムを記憶する領域が確保される。１０４ａは、画像読み取り部３００で読み取られた入力画像データを格納する領域である。１０４ｂは、背景判定部３０１から出力される各画素データと背景フラグとが組となった背景判定画像データを格納する領域である。１０４ｃは、輪郭抽出部３０３で抽出されベクトルデータ生成部３０４で生成されるクラスタの輪郭を表すベクトルデータを格納する領域である。１０４ｄは、背景生成部３０５で生成され背景圧縮部３０６で圧縮された圧縮背景データを格納する領域である。１０４ｅは、データ結合部３０７でベクトルデータと圧縮された背景データとから生成される結合画像データを格納する領域である。１０４ｆ以降は、ＣＰＵ１０１が実行する本実施形態の処理手順を示すプログラムを格納する領域である。以下の各プログラムがＣＰＵ１０１で実行されることで、図１Ａの各機能要素の処理が実現される。１０４ｆは、画像読み取り部３００での原稿読み取りを制御する原稿読取制御プログラムを格納する領域である。１０４ｇは、各画素が背景か前景かを判定する背景判定プログラムを格納する領域である。１０４ｈは、後述する図２、図６、図８に示すような本実施形態に特有のクラスタリングを制御するクラスタリング処理プログラムを格納する領域である。クラスタリング処理プログラムには、図３で後述する小クラスタ結合ルーチン１０４ｉや、対象画素の特徴ベクトルとクラスタの代表特徴ベクトルとの距離を算出する距離計算ルーチン１０４ｊが含まれる。１０４ｋは、クラスタの輪郭を抽出する輪郭抽出プログラムを格納する領域である。１０４ｍは、抽出されたクラスタの輪郭からベクトルデータを生成するベクトルデータ生成プログラムを格納する領域である。１０４ｎは、各画素の背景フラグに基づいて背景データを生成する背景生成プログラムを格納する領域である。１０４ｐは、生成された背景データを圧縮する背景圧縮プログラムを格納する領域である。１０４ｑは、ベクトルデータと圧縮された背景データとを結合して結合画像データを生成するデータ結合プログラムを格納する領域である。
【００１５】
１０５は、外部からのデータを受信するための入力インタフェースであり、本例では前述の画像読み取り部３００からの画像データが入力される。１０６は、画像処理装置で処理済みの画像ファイルを出力する出力インタフェースであり、例えば、外部装置に作成された画像ファイルを送信する画像ファイル送信部１０６ａや、作成された画像ファイルを格納する画像ファイル格納部１０６ｂが接続される。
【００１６】
［実施形態１］
＜実施形態１のクラスタリング処理部３０２の処理手順例＞  以下、上記本実施形態の画像処理装置のクラスタリング処理部３０２による複数のクラスタ生成の実施形態１の処理例を、図２に例示するフローチャートを用いて詳細に説明する。まず、ＣＰＵ１０１は、クラスタ数を表す変数"num_cluster"と、クラスタリング処理対象の画素（以下、処理対象画素と記す）の画素が位置するライン（垂直座標）を表す変数"line"とをゼロに初期化する（S101）。次に、ＣＰＵ１０１は処理対象画素の特徴ベクトルPcを取得する（S102）。本実施形態では、左上の画素から順に処理対象にしていくものとする。なお、本実施形態の画像処理方法では特徴ベクトル（特徴量）としてＲＧＢ色空間の画素値を用いるが、本発明はこれに限定されるものではない。例えば、ＹＣＣ色空間の画素値を用いてもよいし、画素値に加えて画素の座標情報を特徴ベクトルに用いてもよい。また、各クラスタを代表する特徴ベクトルを代表特徴ベクトルと呼ぶこととする。本実施形態では、各クラスタの代表特徴ベクトルは、当該各クラスタに帰属している画素の特徴ベクトルの平均値を用いることとする。次に、ＣＰＵ１０１はクラスタ数がゼロであるか否かを判定する（S103）。クラスタ数がゼロである場合は（S103でYES）、ＣＰＵ１０１はS113へ処理を移行する。クラスタ数がゼロでない場合は（S103でNO）、ＣＰＵ１０１はS104へ処理を移行する。
【００１７】
S104〜S110は、定義済みのクラスタC［1］〜C［num_cluster］の中から、処理対象の画素の特徴ベクトルと最も距離の近い代表特徴ベクトルを持つクラスタを探索する処理である。S104では、ＣＰＵ１０１はループインデクスiを初期化する。また、ＣＰＵ１０１は、処理対象画素の特徴ベクトルと各クラスタの代表特徴ベクトルとの距離のうち、最短の距離を表す変数"min_distance"を定数MAX_VALで初期化する。ここで、定数MAX_VALには、特徴空間（色情報）で取り得る最大の距離よりも大きな値を設定する。さらに、処理対象画素の特徴ベクトルとの距離が最も近いクラスタの番号を表す変数nを"1"に初期化する。次に、ＣＰＵ１０１は、クラスタC［i］の代表特徴ベクトルP［i］を取得する（S105）。ＣＰＵ１０１は、処理対象画素の特徴ベクトルPcとクラスタC［i］の代表特徴ベクトルP［i］との距離D(Pc,P［i］)を計算し（S106）、変数"min_distance"と比較する（S107）。距離D(Pc,P[i])が変数"min_distance"以下であれば（S107でYES）、ＣＰＵ１０１は"min_distance"にS106で計算した距離D(Pc,P［i］)を代入する（S108）。さらに、ＣＰＵ１０１は、変数nにループインデクスiを代入し（S108）、S109へ処理を移行する。距離D(Pc,P[i])が変数"min_distance"以下でなければ（S107でNO）、ＣＰＵ１０１はS109へ処理を移行する。ＣＰＵ１０１は、S109でループインデクスiに"１"を加算し、S110では処理対象画素の特徴ベクトルPcと全てのクラスタの代表特徴ベクトルとの比較を終えたか否かを判定する。全てのクラスタとの比較を終えた場合（S110でYES）、ＣＰＵ１０１はS111へ処理を移行する。全てのクラスタとの比較を終えてない場合は（S110でNO）、ＣＰＵ１０１はS105へ処理を移行して処理を繰り返す。
【００１８】
S111で、ＣＰＵ１０１は変数"min_distance"と第１距離閾値Ｔdとを比較する。変数"min_distance"が第１距離閾値以下である場合は（S111でYES）、ＣＰＵ１０１はS112へ処理を移行する。S112では、ＣＰＵ１０１は、処理対象の画素をクラスタC［n］に帰属させ、クラスタC［n］の代表特徴ベクトルP［n］を更新する。さらに、ＣＰＵ１０１は、クラスタC［n］に帰属する画素の総数を表すN［n］に1を加算した後、S114へ処理を移行する。S111で変数"min_distance"が第１距離閾値より大きい場合（S111でNO）は、いずれのクラスタも処理対象画素の特徴ベクトルから距離が離れている。よって、ＣＰＵ１０１は、新しいクラスタを定義し、該新規クラスタに処理対象の画素を帰属させる（S113）。具体的には、ＣＰＵ１０１は、S113では先ずクラスタ数"num_cluster"に"1"を加算する。該新規クラスタC［num_cluster］の代表特徴ベクトルP［num_cluster］を処理対象画素の特徴ベクトルPcとする。さらに、該新規クラスタC［num_cluster］に帰属する画素数N［num_cluster］を"1"とする。
【００１９】
次に、S114で、ＣＰＵ１０１は処理対象画素が画像の右端に位置するか否かを判定する。処理対象画素が画像の右端に位置する場合（S114でYES）は、ＣＰＵ１０１はS115へ処理を移行する。処理対象画素が画像の右端に位置しない場合（S114でNO）は、ＣＰＵ１０１はS118へ処理を移行する。S115で変数"line"に"1"を加算し、S116へ処理を移行する。S116でＣＰＵ１０１は変数"line"を"L"で割った余りがゼロであるか否かを判定する。余りがゼロである場合（S116でYES）、ＣＰＵ１０１はS117へ処理を移行する。余りがゼロでない場合（S116でNO）、ＣＰＵ１０１はS118へ処理を移行する。例えば、ライン数“Ｌ”が“４”であった場合、４ライン分の画素の処理が終わるたびに、S118へ移行することになる。S117では、ＣＰＵ１０１は帰属する画素数の少ないクラスタ（以降、小クラスタと記す）を他のクラスタと統合する処理を行う。かかる本実施形態の特徴部分であるS117の詳細については、図３を参照して詳細に後述する。画像データ内の全ての画素を処理した場合は（S118でYES）、ＣＰＵ１０１はクラスタリング処理部３０２の処理を終了する。全ての画素を処理してない場合は（S118でNO）、ＣＰＵ１０１はS102へ処理を移行し、後続する画素を新たな処理対象画素とする。なお、後続する画素とは、当該処理対象画素が右端でない場合は当該処理対象画素の右隣の画素のことであり、当該処理対象画素が右端に位置する場合は次のラインの左端の画素のことである。
【００２０】
（小クラスタ統合処理Ｓ１１７の手順例）  次に、S117の小クラスタ統合処理について、図３に例示するフローチャートを用いて説明する。
【００２１】
S201で、ＣＰＵ１０１はループインデクスiを"1"に初期化する。さらに、ＣＰＵ１０１は統合されたクラスタの総数を表す変数"num_marged_cluster"をゼロに初期化する。S202で、ＣＰＵ１０１はクラスタC［i］に帰属する画素数N［i］を取得する。S203で、ＣＰＵ１０１は画素数N［i］と画素数閾値Ｔnとを比較する。画素数N［i］が画素数閾値以下であれば（S203でYES）、ＣＰＵ１０１はクラスタC[i]が小クラスタであると判定し、S204へ処理を進める。画素数N［i］が画素数閾値以下でない場合（S203でNO）、ＣＰＵ１０１はS214へ処理を進める。ここで、画素数閾値Tnは、処理対象のクラスタが小クラスタであるか否かを判定する際の閾値であり、その値は本発明では限定されるものでないが、本実施形態では"1"とする。なお、処理対象の画像データの画素数に応じて画素数閾値Tnを決めてもよく、例えば水平方向（ライン方向）の画素数の1/100としてもよい。S204で、ＣＰＵ１０１は小クラスタC［i］の代表特徴ベクトルP［i］を取得する。
【００２２】
S205〜S212は、小クラスタC［i］の代表特徴ベクトルP［i］と最も距離の近い代表特徴ベクトルを持つクラスタを探索する処理である。S205で、ＣＰＵ１０１はループインデクスjを"1"に初期化する。また、ＣＰＵ１０１は最短の距離を表す変数"min_distance"を定数MAX_VALで初期化する。さらに、ＣＰＵ１０１は小クラスタC［i］の代表特徴ベクトルP［i］との距離が最も近いクラスタの番号を表す変数nを"1"に初期化する。S206で、ＣＰＵ１０１は処理対象の小クラスタC［i］と比較対象のクラスタC［j］が同一でないか否かを判定する。同一でなければ（S206でYES）、ＣＰＵ１０１はS207へ処理を進める。同一であれば（S206でNO）、ＣＰＵ１０１はS211へ処理を進める。S207で、ＣＰＵ１０１は比較対象となるクラスタC［j］の代表特徴ベクトルP［j］を取得する。S208で、ＣＰＵ１０１は、小クラスタC［i］の代表特徴ベクトルP［i］と、比較対象となるクラスタC［j］の代表特徴ベクトルP［j］との類似度を示す距離D(P［i］,P［j］)を計算する。距離D(P［i］,P［j］)が"min_distance"以下であれば（S209でYES）、ＣＰＵ１０１は"min_distance"に距離D(P［i］,P［j］)を代入する（S210）。さらに、ＣＰＵ１０１は、変数nにループインデクスjを代入し（S210）、S211へ処理を移行する。距離D(P［i］,P［j］)が"min_distance"以下でなければ（S209でNO）、ＣＰＵ１０１はS211へ処理を移行する。S211で、ＣＰＵ１０１は、ループインデクスjに１を加算し、S212では全てのクラスタP［1］〜P［num_cluster］について小クラスタP［i］の代表特徴ベクトルとの比較を終えた否かを判定する。全てのクラスタとの比較を終えた場合（S212でYES）、ＣＰＵ１０１はS213へ処理を進める。全てのクラスタとの比較を終えてない場合は（S212でNO）、ＣＰＵ１０１はS206へ処理を進める。
【００２３】
S213では、ＣＰＵ１０１は小クラスタC［i］をクラスタC［n］に統合する処理を行う。具体的には、クラスタC［n］の代表特徴ベクトルP［n］を更新する。ここで、更新後の代表特徴ベクトルP［n］は統合対象となる２つのクラスタC［n］とC［i］とが持つ代表特徴ベクトルの平均値であり、以下の式で表される。
【００２４】
P［n］ = (P［n］×N[n] + P［i］×N［i］) ／ (N［n］ + N［i］)
さらに、ＣＰＵ１０１はクラスタC［n］の画素数N［n］に小クラスタの画素数N［i］を加算する。また、統合されたクラスタ数を表す変数"num_marged_cluster"を更新する。次に、ＣＰＵ１０１はS214でループインデクスiに"1"を加算する。S215で、ＣＰＵ１０１は全てのクラスタについて小クラスタであるか否かの判定を終えたか否かを確認する。全てのクラスタについて判定を終えていれば（S215でYES）、ＣＰＵ１０１はS216へ処理を進める。全てのクラスタについて判定を終えてなければ（S215でNO）、ＣＰＵ１０１はS202へ処理を進める。
【００２５】
S216では、小クラスタが統合されることによってクラスタの情報を格納する配列に空きができるので、ＣＰＵ１０１は配列内の要素を並び替えることにより配列の空きを埋める。具体的には、代表特徴ベクトルP［1..i..num_cluster］と画素数N［1..i..num_cluster］を並び替える。そして、ＣＰＵ１０１は、クラスタ数を表す変数"num_cluster"から統合されたクラスタ数"num_marged_cluster"を減算して新たなクラスタ数"num_cluster"に更新し、小クラスタ統合処理を終了する。
【００２６】
以上に説明したように、本実施形態の画像処理方法では、Lライン処理する毎に、帰属する画素数の少ない小クラスタを統合する（S114〜S117）。原稿読み取り部３００から出力された画像データには、スキャナの工学的な歪あるいはガラス面に付着した埃に起因するノイズが存在する。また、読み取られる原稿そのものにも、例えば文字に関してはアンチエイリアシング処理に起因する色のばらつきがエッジ付近に存在する。本実施形態の画像処理方法では、所定の画素数を処理する毎に、ノイズと推定され得る少数の画素が帰属するクラスタを他のクラスタと随時統合することにより、クラスタリングの途中でクラスタの数を減らす。従って、従来のNearest Neighborクラスタリング法よりも処理対象画素の特徴ベクトルとクラスタの代表特徴ベクトルとの距離を計算する（以下、「距離計算」と記す）回数を減らすことができる。
【００２７】
＜実施形態１のクラスタリング処理部３０２の処理の具体例＞  以下、図４に例示する画像を用いて、クラスタリング処理部３０２の処理の具体例を説明する。図４の（ａ）に示す縦１２画素、横１１画素から成る画像をクラスタリングにより領域分割する。図４の（ｂ）は、従来のNearest Neighborクラスタリング法における距離計算回数を画素毎に例示したものである。図４の（ｃ）は、本実施形態において、４ライン毎に小クラスタを統合した場合の距離計算回数を画素毎に例示したものである。従来のNearest Neighborクラスタリング法では、画素６００までは画素毎の距離計算回数は１回だが、定義済みのクラスタの特徴ベクトルとの距離が遠い画素が出現する毎に距離計算回数が増える。図４の（ａ）において、画素６０２以降は画素毎に４回の距離計算が必要となる。よって、従来のNearest Neighborクラスタリング法においては、画像データ全体での距離計算回数の累計は"440"回となる。
【００２８】
一方、本実施形態の画像処理方法では、図４の（ｃ）に示すように、画素６０４までは従来のNearest Neighborクラスタリング法における距離計算回数と同一であるが、画素６０４より下に位置する画素では異なる。４ライン目の右端に位置する画素６０４を処理し終えた時点で、画素６０１に対応するクラスタ（領域＃３）と、画素６０２に対応するクラスタ（領域＃４）は夫々画素数が１である。よって、図２に例示するフローチャートのS203において、上記２つのクラスタは小クラスタであると判定される。S204〜S213の処理により、画素６０１が帰属するクラスタは領域＃１に対応するクラスタに統合され、画素６０２が帰属するクラスタは領域＃２に対応するクラスタに統合される。よって、画素６０４の下に位置するラインの画素では、１画素あたり距離計算回数は２となる。８ライン目の右端に位置する画素６０５を処理し終えた時点でも、同様に画素６０３に帰属するクラスタは領域＃２に対応するクラスタへ統合される。よって、本実施形態における画像データ全体での画素毎の距離計算回数の累計は"292"回となる。クラスタを統合する処理においてはクラスタの代表特徴ベクトル同士の距離計算が行われる（S208）が、図４に示すように４ライン処理する毎に1〜2個の小クラスタを統合する程度である。従って、クラスタを統合する処理における計算回数は距離計算回数の累計に対して大きな影響をしない。
【００２９】
以上に説明したように、本実施形態の画像処理方法は、クラスタの特徴ベクトルの距離計算回数を減らすことができるので、従来のNearest Neighborクラスタリング法よりも高速な領域分割が可能となる。さらに、本実施形態の画像処理方法は、所定の画素数を処理する毎に小クラスタを統合することにより、ノイズを削減することができる。例えば図４の（ｄ）に示すように、ノイズと推定される画素６０１、６０２、６０３が領域＃１、領域＃２に割り当てられ、視覚的に良好な領域分割結果を得られる。
【００３０】
＜実施形態１の変形例＞  なお、実施形態１では、図２のS203においてクラスタC［i］の画素数N［i］が画素数閾値Tn以下である場合は小クラスタであると判定していたが、本発明はこれに限定されない。本変形例では、図２のS203において、クラスタC［i］に帰属する画素のうち、小クラスタ統合時点で最も下のラインに位置する画素の垂直座標と、ラインカウンタlineとを比較する。もし同一ラインに位置する場合には、画素数N［i］が画素数閾値Tn以下であっても統合対象としない（S203でNO）。この処理を行うことにより、図５に例示するように、画素９００に対応するライン方向と直交する方向につながるクラスタに対し、誤って小クラスタと判定することを防ぐことができるので、領域分割の精度が向上する。すなわち、図５において、最初の４ラインを処理した時点では、画素９００が属するクラスタには、１つの画素しか帰属していないが、次の４ライン分を処理すると、当該クラスタに帰属する画素が増える可能性がある。すなわち、後続する画素がある場合に、次の４ライン分の画素を処理すると、小クラスタでないと判断される可能性があるので、処理済のラインのうちの下端のライン内に位置する画素を含むクラスタは統合対象としないようにする。
【００３１】
また、実施形態１では、１ラインの画素数の整数倍の画素を処理して画像の右端（S114）で小クラスタ統合処理を行うが、本発明はこれに限定されない。画像の右端で無くとも、所定の画素数を処理する毎に小クラスタ統合処理を行ってもよい。また、実施形態１では代表特徴ベクトルの距離が最も近いクラスタに小クラスタを統合するが、本発明はこれに限定されない。小クラスタに帰属する画素の近傍に位置する画素が帰属しているクラスタへ小クラスタを統合してもよい。この処理を行うことにより、スキャナに付いたゴミのように、周囲の画素が帰属するクラスタの代表特徴ベクトルと大きく異なる画素が存在する場合であっても、画質的に良好な領域分割結果を得ることができる。さらに、本変形例として、S117で小クラスタと判定されたクラスタの数が閾値を超えた場合、画像をビットマップ形式で圧縮してもよい。小クラスタが極度に多い場合、処理対象の画像データにノイズが非常に多いと考えられる。このような画像データをベクトルデータに変換した場合、ベクトルデータで表されるオブジェクトの数が増大するため、データ量が増える可能性がある。従って、このような場合は処理対象の画像がベクトルデータへの変換に向いていないと考えられるため、小クラスタの数に応じて適応的にデータ変換方法を選択するのが好ましい。この場合、S117で小クラスタと判定されたクラスタの数が、予め設定した小クラスタ数閾値を超えた時点で、クラスタリング処理を打ち切る。
【００３２】
［実施形態２］
＜実施形態２のクラスタリング処理部３０２の処理手順例＞  本発明の実施形態２の画像処理方法について、図６に示すフローチャートを用いて説明する。本実施形態２では、実施形態１の処理に加えて生成されるクラスタ数制限を行う。
【００３３】
まず、ＣＰＵ１０１は、クラスタ数を表す変数"num_cluster"と、処理対象画素が位置するライン（垂直座標）を表す変数"line"をゼロに初期化する（S401）。次に、ＣＰＵ１０１は処理対象画素の特徴ベクトルPcを取得する（S402）。次に、ＣＰＵ１０１はクラスタ数がゼロであるか否かを判定する（S403）。クラスタ数がゼロである場合は（S403でYES）、ＣＰＵ１０１はS409へ処理を移行する。クラスタ数がゼロでない場合は（S403でNO）、ＣＰＵ１０１はS404へ処理を移行する。S404は、定義済みのクラスタC［1］〜C［num_cluster］の中から、処理対象の画素の特徴ベクトルと最も距離の近い代表特徴ベクトルを持つクラスタC［n］を探索し、該最短距離"min_distance"を求める処理である。S404の手順は、図２に例示した実施形態１の処理を表すフローチャートのS104〜S110と同一の処理であるため、説明を省略する。
【００３４】
S405で、ＣＰＵ１０１は最短距離"min_distance"を第１距離閾値Ｔdと比較する。最短距離"min_distance"が第１距離閾値以下である場合は（S405でYES）、ＣＰＵ１０１はS406へ処理を移行する。最短距離"min_distance"が第１距離閾値以下でない場合は（S405でNO）、ＣＰＵ１０１はS407へ処理を移行する。S406では、ＣＰＵ１０１は、処理対象の画素をクラスタC［n］に帰属させ、クラスタC［n］の代表特徴ベクトルP[n]を更新する。さらに、ＣＰＵ１０１は、クラスタC［n］に帰属する画素の総数N［n］に"1"を加算した後、S410へ処理を移行する。S407では、ＣＰＵ１０１はクラスタの総数"num_cluster"と、クラスタの総数に対する閾値であるクラスタ数閾値Tcとを比較する。クラスタ数閾値Tcの値は本発明では限定されないが、本実施形態では"３"とする。クラスタの総数"num_cluster"がクラスタ数閾値より大きければ（S407でYES）、ＣＰＵ１０１はS408へ処理を移行する。クラスタ数閾値未満であれば（S407でNO）、ＣＰＵ１０１はS409へ処理を移行する。S408では、ＣＰＵ１０１は、クラスタの総数"num_cluster"をクラスタ数閾値Tc以下に抑えるために、最も代表特徴ベクトルの距離が近いクラスタ同士を統合する。次に、S409で、ＣＰＵ１０１は新しいクラスタを定義し、該新規クラスタに処理対象の画素を帰属させる。具体的には、先ずクラスタ数"num_cluster"に"1"を加算する。該新規クラスタC［num_cluster］の代表特徴ベクトルP［num_cluster］を処理対象画素の特徴ベクトルPcとする。さらに、該新規クラスタC［num_cluster］に帰属する画素数N［num_cluster］を"1"とする。S410〜S413は、Lライン毎に小クラスタを統合するための処理であり、実施形態１のS114〜S117（図２及び図３）と同一であるため、説明を省略する。画像データ内の全ての画素を処理した場合は（S414でYES）、ＣＰＵ１０１はクラスタリング処理部３０２の処理を終了する。画像データ内の全ての画素を処理してない場合は（S414でNO）、ＣＰＵ１０１はS402へ処理を移行し、後続する画素を処理対象とする。
【００３５】
以上に説明したように、本実施形態の画像処理方法では、Lライン処理する毎に、帰属する画素数の少ない小クラスタを統合する（S410〜S413）。また、定義済みのクラスタの数がクラスタ数閾値Tcを越えた場合、最も代表特徴ベクトルの近いクラスタ同士を統合する（S407〜S408）。これらの処理により、クラスタリング処理の途中でクラスタの数が減少するので、従来のNearest Neighborクラスタリング法よりも距離計算回数を減らすことができる。
【００３６】
＜実施形態２のクラスタリング処理部３０２の処理の具体例＞  以下、図７に例示する画像を用いて、実施形態２のクラスタリング処理部３０２による複数のクラスタ生成の処理の具体例を説明する。図７の（ａ）に示す縦１３画素、横６画素から成る画像をクラスタリングにより領域分割する。図７の（ｂ）は、従来のNearest Neighborクラスタリング法における距離計算回数を画素毎に例示したものである。図７の（ｃ）は、定義済みのクラスタ数がクラスタ数閾値Tcを越えたときに最も代表特徴ベクトルの近いクラスタ同士を統合する処理は行い、小クラスタを統合する処理は行わない場合の距離計算回数を例示したものである。なお、ここではクラスタ数閾値Tcに"３"を設定する。図７の（ｄ）は、実施形態２の画像処理方法における距離計算回数を例示したものである。具体的には、定義済みのクラスタの数がクラスタ数閾値Tcを越えた場合に最も代表特徴ベクトルの近いクラスタ同士を統合し、且つ４ライン毎に小クラスタを統合した場合の距離計算回数を示したものである。
【００３７】
従来のNearest Neighborクラスタリング法では、画素７００までは画素毎の距離計算回数は１回だが、定義済みのクラスタの特徴ベクトルとの距離が遠い画素が出現する毎に距離計算回数が増える。よって、従来のNearest Neighborクラスタリング法では、画像データ全体での距離計算回数の累計は"314"回となる。定義済みのクラスタの数がクラスタ数閾値Tcを越えたときに最も代表特徴ベクトルの近いクラスタ同士を統合する場合、図７の（ｃ）において、画素７０２を処理した時点でクラスタ数がクラスタ数閾値Tc＝３を超える。ここで、領域＃３に対応するクラスタを領域＃１に対応するクラスタに統合し、クラスタ数を３に抑える。画素７０４を処理した時点でも、同様にクラスタ数がクラスタ数閾値Tcを超えるので、領域＃４（画素７０１）に対応するクラスタを領域＃２に対応するクラスタに統合する。よって、図７の（ｃ）では、画像データ全体での距離計算回数の累計は"214"回となる。
【００３８】
本実施形態２では、さらに、所定のライン毎に小クラスタも統合するので、さらに距離計算回数を削減できる。図７の（ｄ）において、画素７０３を処理し終えた時点で、領域＃３と領域＃４に対応する各々のクラスタの画素数は"１"であるので、上記２つのクラスタは特徴ベクトルの距離が最も近いクラスタに統合される。従って、画素７０３の下のラインでは、距離計算の対象となるクラスタ数は２となるので、１画素あたりの距離計算回数は画素７０４までは２回となる。よって、画像データ全体での距離計算回数の累計は"194"回となる。
【００３９】
以上に説明したように、本実施形態の画像処理方法は、従来のNearest Neighborクラスタリング法よりも高速な領域分割が可能となる。
【００４０】
［実施形態３］
＜実施形態３のクラスタリング処理部３０２の処理手順例＞  本発明の実施形態３の画像処理方法について、図８に示すフローチャートを用いて説明する。本実施形態３では、実施形態１の処理に加えて処理対象画素の近傍に位置する画素が含まれるクラスタに対し優先してクラスタ統合を行う。まず、ＣＰＵ１０１は、クラスタ数を表す変数"num_cluster"と、処理対象画素が位置するライン（垂直座標）を表す変数"line"をゼロに初期化する（S501）。次に、ＣＰＵ１０１は処理対象画素の特徴ベクトルPcを取得する（S502）。次に、ＣＰＵ１０１はクラスタ数がゼロであるか否かを判定する（S503）。クラスタ数がゼロである場合は（S503でYES）、ＣＰＵ１０１はS511へ処理を移行する。クラスタ数がゼロでない場合は（S503でNO）、ＣＰＵ１０１はS504へ処理を移行する。
【００４１】
S504では、ＣＰＵ１０１は処理対象画素の近傍に位置する画素（近傍画素）が帰属するクラスタC［a］の代表特徴ベクトルP[a]を取得する。ここで、近傍画素とは、例えば処理対象画素の左に属する画素であるが、本発明はこれに限定されず、例えば処理対象画素の上に位置する画素であってもよい。ＣＰＵ１０１は、S505で上記代表特徴ベクトルP［a］とPcとの距離D(P［a］,Pc)を計算し、S506で距離D(P［a］,Pc)が第２距離閾値Ｔd1以下であるか否かを判定する。距離D(P［a］,Pc)が第２距離閾値以下である場合（S506でYES）、ＣＰＵ１０１はS507へ処理を進める。S507では、ＣＰＵ１０１は、処理対象画素を近傍クラスタC［a］に帰属させ、クラスタC［a］の代表特徴ベクトルP［a］を更新し、S512へ処理を移行する。一方、距離D(P［a］,Pc)が第２距離閾値以下でない場合（S506でNO）、ＣＰＵ１０１はS508へ処理を移行する。S508は、定義済みのクラスタC［1］〜C［num_cluster］の中から、処理対象の画素の特徴ベクトルPcと最も距離の近い代表特徴ベクトルを持つクラスタC［n］を探索し、該最短距離"min_distance"を求める処理である。S508は、図２に例示した実施形態１の処理を表すフローチャートのS104〜S110と同一の処理であるため、説明を省略する。S509では、ＣＰＵ１０１は上記最短距離"min_distance"が第１距離閾値Ｔd2以下であるか否かを判定する。上記最短距離"min_distance"が第１距離閾値Ｔd2以下である場合（S509でYES）、ＣＰＵ１０１はS510へ処理を移行する。最短距離"min_distance"が第１距離閾値Ｔd2以下でない場合（S509でNO）、ＣＰＵ１０１はS511へ処理を移行する。S510では、ＣＰＵ１０１は、処理対象の画素をクラスタC［n］に帰属させ、クラスタC［n］の代表特徴ベクトルP［n］を更新する。さらに、ＣＰＵ１０１は、クラスタC［n］に帰属する画素の総数を表すN［n］に"1"を加算した後、S512へ処理を移行する。S511では、ＣＰＵ１０１は、新しいクラスタを定義し、該新規クラスタに処理対象の画素を帰属させる。具体的には、先ずクラスタ数"num_cluster"に"1"を加算する。該新規クラスタC［num_cluster］の代表特徴ベクトルP［num_cluster］を処理対象画素の特徴ベクトルPcとする。さらに、該新規クラスタC［num_cluster］に帰属する画素数N［num_cluster］を"1"とする。S512〜S515は、Lライン毎に小クラスタを統合するための処理であり、実施形態１のS114〜S117（図２及び図３）と同一であるため、説明を省略する。画像データ内の全ての画素を処理した場合は（S516でYES）、ＣＰＵ１０１はクラスタリング処理部３０２の処理を終了する。画像データ内の全ての画素を処理してない場合は（S516でNO）、ＣＰＵ１０１はS502へ処理を移行し、後続する画素を処理対象とする。
【００４２】
以上に説明したように、本実施形態の画像処理方法では、Lライン処理する毎に、帰属する画素数の少ない小クラスタを統合する（S512〜S515）ことにより、クラスタの数を減らす。また、処理対象画素の近傍（例えば左隣）に位置する画素が帰属するクラスタの特徴ベクトルとの距離を先ず計算する(S504〜S505)。距離が近ければ該クラスタへ処理対象画素を帰属させ、他のクラスタの代表特徴ベクトルとの比較を行なわない（S506〜S507）。従って、従来のNearest Neighborクラスタリング法よりも距離計算回数を減らすことができる。
【００４３】
＜実施形態３のクラスタリング処理部３０２の処理の具体例＞  以下、図９に例示する画像を用いて、実施形態３のクラスタリング処理部３０２による複数のクラスタ生成の処理の具体例を説明する。図９の（ａ）に示す縦１２画素、横１１画素から成る画像をクラスタリングにより領域分割する。なお、図９の（ａ）の画像は実施形態１の説明において用いた図４の（ａ）の画像と同一である。図９の（ｂ）は、従来のNearest Neighborクラスタリング法における距離計算回数を画素毎に例示したものである。図９の（ｃ）は、左隣の画素が帰属するクラスタの代表特徴ベクトルとの比較（S504〜S507）を行い、小クラスタを統合する処理を行なわない場合の距離計算回数を例示したものである。図８の（ｄ）は、本実施形態３において、左隣の画素が帰属するクラスタの代表特徴ベクトルと比較し、且つ４ライン毎に小クラスタを統合した場合の距離計算回数を画素毎に例示したものである。
【００４４】
従来のNearest Neighborクラスタリング法では、画素６００までは画素毎の距離計算回数は１回だが、定義済みのクラスタの特徴ベクトルとの距離が遠い画素が出現する毎に距離計算回数が増える。よって、従来のNearest Neighborクラスタリング法では、画像データ全体での距離計算回数の累計は"440"回となる。左隣の画素が帰属するクラスタの代表特徴ベクトルとの比較（S504〜S507）を行う場合、左隣の画素が帰属するクラスタの代表特徴ベクトルとの距離が近い場合には距離計算回数は１回となる。例えば、図９の（ｃ）において、画素８０６は、左隣の画素が帰属するクラスタ（領域＃１に対応）と特徴ベクトルとの距離が近いため、距離計算回数は１回となる。画像データ全体での距離計算回数の累計は"255"回となる。さらに、小クラスタを統合した場合には、処理対象画素と左隣の画素が帰属するクラスタの代表特徴ベクトルとの距離が近くないときや、画像左端の画素であっても、距離計算回数を削減できる。図９の（ｄ）において、画素８０６は画像左端に位置するため、左隣の画素のクラスタとの比較ができない。しかしながら、画素８０４を処理し終えた時点で小クラスタに対応する領域＃３及び領域＃４が各々領域＃１及び領域＃２に統合されているため、距離計算の対象となるクラスタの数は２である。従って、画素８０４の距離計算は２回で済む。また、画素８０７は左隣の画素が帰属するクラスタの代表特徴ベクトルとの距離が近くないため、全てのクラスタとの距離計算を行う。しかし、上述の通り小クラスタを統合したことによりクラスタ数が２に減っているため、距離計算は２回で済む。画像データ全体での距離計算回数の累計は"200"回となる。
【００４５】
以上に説明したように、本実施形態の画像処理方法は、従来のNearest Neighborクラスタリング法よりも高速な領域分割が可能となる。
【００４６】
＜その他の実施形態＞  なお、上記実施形態１乃至３を組合せることによる実施形態も可能であり、これらも本発明に含まれる。また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【図１Ａ】
2011028586.tif 000003
【図１Ｂ】
2011028586.tif 000004
【図２】
2011028586.tif 000005
【図３】
2011028586.tif 000006
【図４】
2011028586.tif 000007
【図５】
2011028586.tif 000008
【図６】
2011028586.tif 000009
【図７】
2011028586.tif 000010
【図８】
2011028586.tif 000011
【図９】
2011028586.tif 000012