(57)【要約】【課題】入力画像中における連結画素成分に対するラベリング処理を高速に実行可能な画像処理方法を提供する。【解決手段】ラベリング処理を１次元ＳＩＭＤ型プロセッサおよび汎用プロセッサを用いて行う画像処理方法であって、１次元ＳＩＭＤ型プロセッサの複数のプロセッサエレメント（ＰＥ）に対して、入力画像３０の画素配列３２における行方向または列方向の複数の画素ライン（ＰＬ）を並列に割当て、各ＰＬ上での画素成分同士の連結関係を判定し、各ＰＬ上の連結画素ブロック（ブロック）毎に、画素配列上での開始位置および終了位置を示す位置情報を取得する第１の仮ラベリング処理と、汎用プロセッサを用いて、位置情報に基づいて、隣接するＰＬ間でのブロック同士の連結関係を判定し、ブロック毎に、画素配列上での開始位置にある画素成分に連結関係に基づく仮ラベルを付する第２の仮ラベリング処理と、を含む。【選択図】図１８
2009211331.tif 000002
【特許請求の範囲】
【請求項１】
入力画像中における連結画素成分に対するラベリング処理を１次元ＳＩＭＤ型プロセッサおよび汎用プロセッサを用いて行う画像処理方法であって、
１次元ＳＩＭＤ型プロセッサの複数のプロセッサエレメントに対して、前記入力画像の画素配列における行方向または列方向の複数の画素ラインを並列に割当て、前記各画素ライン上での画素成分同士の連結関係を判定し、前記各画素ライン上の連結画素ブロック毎に、前記画素配列上での開始位置および終了位置を示す位置情報を取得する第１の仮ラベリング処理と、
汎用プロセッサを用いて、前記第１の仮ラベリング処理の結果に基づいて、隣接する前記画素ライン間での前記連結画素ブロック同士の連結関係を判定し、前記連結画素ブロック毎に、前記画素配列上での開始位置にある画素成分に前記連結関係に基づく仮ラベルを付する第２の仮ラベリング処理と、
を含むことを特徴とする、画像処理方法。
【請求項２】
１次元ＳＩＭＤ型プロセッサの複数のプロセッサエレメントに対して、前記入力画像の前記画素配列における行方向または列方向の複数の前記画素ラインを並列に割当て、前記第１および第２の仮ラベリング処理の結果に基づいて、前記各画素ライン上の連結画素ブロック毎に、前記画素配列上での開始位置以外にある画素成分にラベルを付する再ラベリング処理を含むことを特徴とする、請求項１に記載の画像処理方法。
【請求項３】
前記第２の仮ラベリング処理は、隣接する前記画素ライン間で連結関係にある前記連結画素ブロックの前記画素配列上での開始位置にある画素成分に付された前記仮ラベルのうち、互いに異なる仮ラベルを同一の仮ラベルに変更する処理を含むことを特徴とする、請求項１に記載の画像処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理方法に関する。
【背景技術】
【０００２】
２値画像の画像処理として、連結画素成分毎に異なるラベルを付するラベリング処理が知られている。図２５は、縦横斜め方向の連結を判定する８連結のラベリング処理の概念を示す説明図である。
【０００３】
図２５に示す入力画像の例では、まず、図２５（Ｂ）に点線で示す処理順序に従って画素に対して順次仮ラベルを付す。ここで、図２５（Ｃ）に示すように、異なる仮ラベル（画素Ｐのラベル）を付された画素が連結画素であると判定されると、その旨を示すために、異なる仮ラベル＜１、２＞を同一ラベル情報として保持する仮ラベリング処理を行う。そして、仮ラベルおよび同一ラベル情報に基づいて、図２５（Ｄ）に示すように、最終的なラベルを付する再ラベリング処理を行う。
【０００４】
このような仮ラベリング処理および再ラベリング処理からなるラベリング処理において、１次元ＳＩＭＤ（Single Instruction stream Multiple Data stream）型プロセッサにより仮ラベリング処理を行い、汎用プロセッサにより再ラベリング処理を行うことが知られている。ここで、１次元ＳＩＭＤ型プロセッサは、一般に、１次元状に配列された複数のプロセッサエレメント（以下、ＰＥと略称する。）を有し、各ＰＥが同時に同一の命令を処理するように構成されている。このため、ＳＩＭＤ型プロセッサは、並列処理に優れるが、複数のＰＥによる同時処理に際して、同時処理の結果を複数のＰＥ間で相互参照する場合には、通常の並列処理時に比して処理速度が低下してしまうという処理特性を有する。
【０００５】
例えば下記特許文献１には、ＳＩＭＤ型プロセッサによる仮ラベリング処理の従来技術が記載されている。この従来技術は、ＳＩＭＤ型プロセッサの複数のＰＥに対して、入力画像の画素配列における斜め方向の複数の画素ライン(以下、ＰＬとも称する。)を並列に割当て、各ＰＬ上の画素について隣接画素との連結関係を逐次判定して仮ラベリング処理を行うものである。
【０００６】
【特許文献１】特開２００２−２３０５４０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
前述した従来技術では、仮ラベリング処理において、画素配列の斜め方向にＰＬを設定するので、各ＰＥに割当てる画素を画像メモリ上でアドレス指定するための処理が煩雑となり、処理ミスの発生、処理時間の低下をもたらす場合がある。また、再ラベリング処理において、汎用プロセッサを用いて処理を行うので、処理時間の低下が生じる場合がある。
【０００８】
さらに、仮ラベリング処理において、画素配列に含まれる画素毎に、隣接画素との連結関係を逐次判定し、全ての画素に仮ラベルを付するので、仮ラベリング処理の高速化を図ることができない場合がある。
【０００９】
例えば、縦横方向の連結を判定する４連結の仮ラベリング処理では、画素毎に上側および左側にある２つの隣接画素との連結関係を逐次判定し、８連結の仮ラベリング処理では、画素毎に上側、左側、右上側および左上側にある４つの隣接画素との連結関係を逐次判定する。このため、入力画像の特性に応じては、連結関係の判定処理に処理時間を費やしてしまう場合がある。特に、８連結の仮ラベリング処理では、４連結の仮ラベリング処理に比して、連結関係の判定処理の回数が２倍となり、多くの処理時間を費やすことになる。
【００１０】
本発明は上記問題点に鑑みてなされたものであり、その目的は、入力画像中における連結画素成分に対するラベリング処理を高速に実行可能な、新規かつ改良された画像処理方法を提供することにある。
【課題を解決するための手段】
【００１１】
上記課題を解決するために、本発明のある観点によれば、入力画像中における連結画素成分に対するラベリング処理を１次元ＳＩＭＤ型プロセッサおよび汎用プロセッサを用いて行う画像処理方法が提供される。本画像処理方法は、１次元ＳＩＭＤ型プロセッサの複数のプロセッサエレメントに対して、入力画像の画素配列における行方向または列方向の複数の画素ラインを並列に割当て、各画素ライン上での画素成分同士の連結関係を判定し、各画素ライン上の連結画素ブロック毎に、画素配列上での開始位置および終了位置を示す位置情報を取得する第１の仮ラベリング処理と、汎用プロセッサを用いて、第１の仮ラベリング処理の結果に基づいて、隣接する画素ライン間での連結画素ブロック同士の連結関係を判定し、連結画素ブロック毎に、画素配列上での開始位置にある画素成分に連結関係に基づく仮ラベルを付する第２の仮ラベリング処理と、を含む。
【００１２】
かかる構成によれば、第１の仮ラベリング処理では、画素配列の行方向または列方向にＰＬを設定するので、各ＰＥに画素を割当てる際のアドレス指定が容易となる。また、各ＰＬ上での画素成分同士の連結関係を判定し、各ＰＬ上の連結画素ブロック（以下、ブロックとも称する。）毎に位置情報を取得するので、ＳＩＭＤ型プロセッサの処理特性に基づいて、各ＰＬ上でブロックの特定処理を高速に行うことができる。第２の仮ラベリング処理では、位置情報に基づいて、隣接するＰＬ間でのブロック同士の連結関係を判定し、ブロック毎に開始位置にある画素成分に連結関係に基づく仮ラベルを付する。これにより、隣接画素同士の連結関係を逐次判定する代わりに、隣接するＰＬ間でのブロック同士の連結関係を判定し、ブロックの開始位置にある画素成分に仮ラベルを付するので、仮ラベリング処理の高速化を図ることができる。特に、８連結のラベリング処理を行う場合、または、ＰＬ上のブロックが多数の画素成分からなる場合には、従来技術に比して、仮ラベリング処理の大幅な高速化を図ることができる。
【００１３】
また、上記画像処理方法は、１次元ＳＩＭＤ型プロセッサの複数のプロセッサエレメントに対して、入力画像の画素配列における行方向または列方向の複数の画素ラインを並列に割当て、第１および第２の仮ラベリング処理の結果に基づいて、各画素ライン上の連結画素ブロック毎に、画素配列上での開始位置以外にある画素成分にラベルを付する再ラベリング処理、を含むようにしてもよい。これにより、再ラベリング処理では、位置情報および仮ラベリング処理の結果に基づいて、ブロック毎に開始位置以外にある画素成分にラベルを付するので、ＳＩＭＤ型プロセッサの処理特性に基づいて、再ラベリング処理の高速化を図ることができる。
【００１４】
また、上記第２の仮ラベリング処理は、隣接する画素ライン間で連結関係にある連結画素ブロック同士の画素配列上での開始位置にある画素成分に付された仮ラベルのうち、互いに異なる仮ラベルを同一の仮ラベルに変更する処理を含むようにしてもよい。これにより、隣接するＰＬ間で連結関係にあるブロック同士において、ブロック毎に開始位置にある画素成分に同一の仮ラベルを付することができる。
【発明の効果】
【００１５】
本発明によれば、入力画像中における連結画素成分に対するラベリング処理を高速に実行可能な画像処理方法を提供することができる。
【発明を実施するための最良の形態】
【００１６】
以下に、添付した図面を参照しながら、本発明の好適な実施形態について詳細に説明する。なお、本明細書および図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重複説明を省略する。
【００１７】
図１は、本発明に係る画像処理方法が適用される画像処理装置の構成例を示すブロック図である。画像処理装置は、第１の仮ラベリング処理部１２、第２の仮ラベリング処理部１４、および再ラベリング処理部１６からなる。
【００１８】
第１の仮ラベリング処理部１２は、例えば２値画像からなる入力画像の画素配列に対して、各ＰＬ上での画素同士の連結関係を判定し、各ＰＬ上の連結画素ブロック（以下、ブロックとも称する。）毎に、画素配列上での開始位置および終了位置を示す位置情報を取得する。第２の仮ラベリング処理部１４は、まず、第１の仮ラベリング処理の結果に基づいて、隣接するＰＬ間でのブロック同士の連結関係を判定し、ブロック毎に、画素配列上での開始位置にある画素に連結関係に基づく仮ラベルを付する。第２の仮ラベリング処理部１４は、次に、隣接するＰＬ間で連結関係にあるブロック同士の画素配列上での開始位置にある画素に付された仮ラベルのうち、互いに異なる仮ラベルを同一の仮ラベルに変更する。再ラベリング処理部１６は、第１および第２の仮ラベリング処理の結果に基づいて、各画素ライン上のブロック毎に、画素配列上での開始位置以外にある画素にラベルを付する。
【００１９】
第１の仮ラベリング処理部１２および再ラベリング処理部１６は、１次元ＳＩＭＤ型プロセッサを用いて、複数のＰＥに対して画素配列における行方向または列方向の複数のＰＬを並列に割当てて処理を行う。第２の仮ラベリング処理部１４は、汎用プロセッサを用いて処理を行う。
【００２０】
画像処理装置は、終了列番号Ｅ、次列番号Ｎ、終了列番号テーブルＥＴ、次列番号テーブルＮＴ、仮ラベルテーブルＴＬＴ、重複ラベルテーブルＯＬＴ，再ラベルテーブルＦＬＴの記憶領域を含むメモリを有する。
【００２１】
終了列番号Ｅおよび次列番号Ｎは、ＰＬ上のブロック毎に、当該ブロックの終了位置および当該ブロックに後続する他のブロックの開始位置からなる位置情報を取得するために用いられる。終了列番号テーブルＥＴおよび次列番号テーブルＮＴには、終了列番号Ｅおよび次列番号Ｎに基づいて取得される位置情報が記憶される。
【００２２】
仮ラベルテーブルＴＬＴには、終了列番号テーブルＥＴおよび次列番号テーブルＮＴを用いて判定される、隣接するＰＬ間でのブロックの連結関係に基づいて、ブロック毎に開始位置にある画素に付される仮ラベルが記憶される。重複ラベルテーブルＯＬＴには、画素に付された仮ラベルの変更を処理するために、画素に付された仮ラベルが記憶される。再ラベルテーブルＦＬＴには、終了列番号テーブルＥＴおよび仮ラベルテーブルＴＬＴを参照することで、画素配列中の全ての画素に付されたラベルが記憶される。
【００２３】
図２は、１次元ＳＩＭＤ型プロセッサの構造例を示す説明図である。ＳＩＭＤ型プロセッサは、複数のＰＥからなるＰＥ群２２、ＰＥ数と同一数の転送段からなる、データ入力レジスタ群２４およびデータ出力レジスタ群２６からなる。
【００２４】
図３は、本実施形態の説明に用いる入力画像を示す説明図である。図４は、入力画像の画素ライン（ＰＬ）を示す説明図である。本実施形態における入力画像３０は、図３（Ａ）に示す４行４列の画素配列からなる２値画像であり、後述するラベリング処理によって、図３（Ｂ）に示すラベリング結果４０が得られる。図４に示すように、入力画像３０の画素配列３２には、画素が存在する配列に「１」が格納され、画素が存在しない配列に「０」が格納されている。画素配列の行方向にＰＬ１〜４が設定され、後述する第１の仮ラベリング処理および再ラベリング処理では、ＰＬ１〜４にＳＩＭＤ型プロセッサのＰＥ１〜４が割当てられる。また、入力画像３０の画素配列３２は、０列目および５列目の列３３、３４を付加されることで、処理用画素配列として構成される。
【００２５】
（第１の仮ラベリング処理）
まず、本発明の一実施形態に係る画像処理方法のうち第１の仮ラベリング処理について説明する。図５は、第１の仮ラベリング処理の流れを示すフロー図である。図６〜１０は、第１の仮ラベリング処理の過程を示す説明図である。
【００２６】
第１の仮ラベリング処理では、ＳＩＭＤ型プロセッサの各ＰＥに対して、ＰＬ１〜４が並列に割当てられる。第１の仮ラベリング処理では、終了列番号Ｅ、次列番号Ｎ、終了列番号テーブルＥＴ、次列番号テーブルＮＴの記憶領域が用いられる。ＥおよびＮの記憶領域は、ＰＬ１〜４毎に１つずつ設けられる。ＥＴおよびＮＴの記憶領域は、入力画像３０の画素配列３２の行数、列数＋１の配列テーブル（本例の場合、０列目〜４列目を有する４行５列）として設けられる。
【００２７】
図６は、４列目の処理を示す説明図である。図６には、処理用画素配列のうち４列目および５列目の部分（Ａ）、処理用列番号Ｃ１、Ｃ２（Ｂ）、ＥおよびＮ（Ｃ）、４列目の処理が終了した時点でのＥおよびＮ（Ｄ）、ＥＴ（Ｅ）、ＮＴ（Ｆ）が示されている。以下では、４列目の処理について図５および図６を参照しながら説明する。
【００２８】
ステップＳ１０２（以下では、ステップを「Ｓ」と略称する。）では、対象列番号Ｘ、Ｃ１、Ｃ２、Ｅ、Ｎが初期化される。対象列番号Ｘは、処理の対象となる列番号であり、本例では、入力画像３０の画素配列３２の水平画素数（ＮＨ）として初期値４が入力される。Ｃ１、Ｃ２は、各列の処理で用いられる列番号であり、Ｃ１にはＸ＝４が入力され、Ｃ２にはＸ＋１＝５が入力される。ＥおよびＮにはＸ＋１＝５が各々に入力される。
【００２９】
Ｓ１０４では、図５（Ａ）に示す画素配列から対象列Ｘの画素値Ｌ１、次列Ｘ＋１の画素値Ｌ２が取得される。ここで、例えばＰＬ１では、ＰＬ１を割当てられたＰＥによって、Ｌ１に４列目の値１が入力され、Ｌ２に５列目の値０が入力される。
【００３０】
Ｓ１０６、Ｓ１１０では、Ｌ１およびＬ２が判定され、Ｌ１≠０かつＬ２＝０の場合には、ＥがＣ１に変更され（Ｓ１０８）、Ｌ１＝０かつＬ２≠０の場合には、ＮがＣ２に変更される（Ｓ１１２）。ここで、例えばＰＬ１では、Ｌ１＝１、Ｌ２＝０であるので、ＥがＣ１＝４に変更される。
【００３１】
Ｓ１１４では、Ｌ１およびＥが判定され、Ｌ１≠０かつＥ≠０の場合には、ＥＴにＥが格納され（Ｓ１１６）、それ以外の場合には、ＥＴに値０が格納される（Ｓ１１８）。ここで、例えばＰＬ１では、Ｌ１＝１、Ｅ＝４であるので、ＥＴにＥ＝４が格納される。
【００３２】
Ｓ１２０では、Ｌ１およびＮが判定され、Ｌ１≠０かつＮ≠０の場合には、ＮＴにＮが格納され（Ｓ１２２）、それ以外の場合には、ＮＴに値０が格納される（Ｓ１２４）。ここで、例えばＰＬ１では、Ｌ１＝１、Ｎ＝５であるので、ＮＴにＮ＝５が格納される。
【００３３】
Ｓ１２６では、Ｃ１がＣ１−１に更新され、Ｃ２がＣ２−１に更新され、ＸがＸ−１に更新される。ここで、Ｃ１＝４、Ｃ２＝５、Ｘ＝４であるので、Ｃ１がＣ１−１＝３に更新され、Ｃ２がＣ２−１＝４に更新され、ＸがＸ−１＝３に更新される。
【００３４】
以上により４列目の処理が終了する。４列目の処理によって、図６（Ｅ）、（Ｆ）に示すように、画素が存在するＰＬ１、４では、ＥＴにブロックの終了列番号Ｅ＝４が格納され、ＮＴに次ブロックの開始列番号Ｎ＝５が格納される。ここで、入力画像３０の画素配列３２が４行４列で構成されるので、次ブロックの開始列番号Ｎとして便宜的に値５が格納される。一方、画素が存在しないＰＬ２、３では、ＥＴおよびＮＴに値が格納されない。
【００３５】
Ｓ１２８では、Ｘが判定され、Ｘ＜０である場合には、第１の仮ラベリング処理が終了し、それ以外の場合には、Ｓ１０４に復帰して次列の処理が行われる。ここで、Ｘ＝３であるので、Ｓ１０４に復帰して３列目の処理が行われる。なお、４列目の処理で変更／格納されたＥ、Ｎ、ＥＴ、ＮＴの値については、３列目以降の処理で参照される。
【００３６】
図７〜１０は、３列目〜０列目の処理を示す説明図である。以下では、４列目以外の処理について説明するが、４列目の処理と重複する説明は省略する。
【００３７】
３列目の処理によって、図７（Ｅ）、（Ｆ）に示すように、画素が存在するＰＬ２では、ＥＴにブロックの終了列番号Ｅ＝３が格納され、ＮＴに次ブロックの開始列番号Ｎ＝５が格納される。
【００３８】
２列目の処理によって、図８（Ｅ）、（Ｆ）に示すように、画素が存在するＰＬ３では、ＥＴにブロックの終了列番号Ｅ＝２が格納され、ＮＴに次ブロックの開始列番号Ｎ＝５が格納される。
【００３９】
以下では、１列目の処理について図５および図９を参照しながら説明する。例えばＰＬ１において、Ｓ１０４の処理では、Ｌ１に１が入力され、Ｌ２に０が入力される。Ｓ１０６の処理では、Ｌ１＝１、Ｌ２＝０であるので、ＥがＣ１＝１に変更される（Ｓ１０８）。Ｓ１１４の処理では、Ｌ１＝１、Ｅ＝１であるので、ＥＴにＥ＝１が格納される（Ｓ１１６）。Ｓ１２０の処理では、Ｌ１＝１、Ｎ＝４であるので、ＮＴにＮ＝４が格納される（Ｓ１２２）。
【００４０】
また、例えばＰＬ３において、Ｓ１０４の処理では、Ｌ１に１が入力され、Ｌ２に１が入力される。Ｓ１０６、Ｓ１１０の処理では、Ｌ１＝１、Ｌ２＝１であり判定条件を満たさないので、ＥおよびＮが変更されない。Ｓ１１４の処理では、Ｌ１＝１、Ｅ＝２であるので、ＥＴにＥ＝２が格納される（Ｓ１１６）。Ｓ１２０の処理では、Ｌ１＝１、Ｎ＝５であるので、ＮＴにＮ＝５が格納される（Ｓ１２２）。
【００４１】
以上説明したように、１列目の処理によって、ＰＬ１、２、４では、隣接する２列目に画素が存在せず、１列目の画素が新たなブロックを構成することになるので、ＥＴにブロックの終了列番号Ｅ＝１が格納される。また、ＰＬ１では４列目に、ＰＬ２では３列目に、ＰＬ４では４列目に、次ブロックが各々に存在するので、ＮＴには、これらの列番号が次ブロックの開始列番号Ｎとして格納される。一方、ＰＬ３では、隣接する２列目に画素が存在し、１列目の画素が既存ブロックの一部を構成することになるので、ＥＴにブロックの終了列番号Ｅ＝２が格納される。また、ＰＬ３では、１、２列目の画素からなるブロックの次ブロックが存在しないので、ＮＴに終了列番号Ｅ＝５が格納される。
【００４２】
０列目の処理によって、図１０（Ｅ）、（Ｆ）に示すように、０列目のＰＬ１〜４に画素が存在しないので、ＥＴにブロックの終了列番号Ｅが格納されず、１列目のＰＬ１〜４に画素が存在するので、ＮＴに次ブロック（最初のブロック）の開始列番号Ｎ＝１が格納される。
【００４３】
以上により第１の仮ラベリング処理が完了し、図１０（Ｅ）、（Ｆ）のＥＴ、ＮＴに示すように、ＰＬ１〜４上のブロック毎に、当該ブロックの終了位置および当該ブロックに後続する他のブロックの開始位置からなる位置情報が取得される。
【００４４】
第１の仮ラベリング処理では、ＰＥ１〜４に対してＰＬ１〜４を並列に割当て、例えば４列目の処理結果に基づいて３列目の処理を行うように、同一ＰＬ上で先に処理された画素の処理結果に基づいて後続の画素が処理される。これにより、ＳＩＭＤ型プロセッサの処理特性に基づいて、各ＰＬ上でブロックの特定処理を高速に行うことができる。
【００４５】
（第２の仮ラベリング処理）
次に、本発明の一実施形態に係る画像処理方法のうち第２の仮ラベリング処理について説明する。図１１〜図１３は、第２の仮ラベリング処理の流れを示すフロー図である。図１４〜１９は、第２の仮ラベリング処理の過程を示す説明図である。
【００４６】
第２の仮ラベリング処理では、汎用プロセッサが用いられる。また、第２の仮ラベリング処理では、終了列番号テーブルＥＴ、次列番号テーブルＮＴ、仮ラベルテーブルＴＬＴ、重複ラベルテーブルＯＬＴの記憶領域が用いられる。ＥＴおよびＮＴの記憶領域は、第１の仮ラベリング処理で取得された位置情報を記憶している。ＴＬＴの記憶領域は、入力画像３０の画素配列３２の行数、列数の配列テーブル（本例の場合、４行４列）として設けられる。ＯＬＴの記憶領域は、入力画像３０の画素配列３２に応じて可変の１次元テーブルとして設けられる。
【００４７】
＜ＰＬ１の処理＞
図１４は、ＰＬ１の処理を示す説明図である。図１４には、ＥＴ（Ａ）およびＮＴ（Ｂ）、ＰＬ１の処理が終了した時点でのＴＬＴ（Ｃ）およびＯＬＴ（Ｄ）が示されている。以下では、ＰＬ１の処理について図１１および図１４を参照しながら説明する。
【００４８】
Ｓ２０２では、対象行番号Ｙ、対象列番号Ｘ、仮ラベル番号Ｌが初期化される。対象行番号Ｙは、処理の対象となる行番号であり、ＰＬ１の処理では値１が入力される。対象列番号Ｘは、処理の対象となる列番号であり、初期値０が入力される。仮ラベル番号Ｌは、入力画像３０の画素配列３２に含まれる画素に付する仮ラベルの番号であり、初期値１が入力される。
【００４９】
Ｓ２０４では、ＮＸ＝ＮＴ（Ｘ、Ｙ）が入力画像３０の画素配列３２の水平画素数ＮＨと比較され、ＮＸ≦ＮＨの場合には、Ｓ２０８の処理が行われ、それ例外の場合には、Ｓ２０６の処理によりＹの値が更新される。ここで、Ｘ＝０、Ｙ＝１であり、ＮＸ＝ＮＴ（０、１）＝１、ＮＨ＝４であるので、Ｓ２０８の処理が行われる。
【００５０】
Ｓ２０８では、ＮＸにＮＴ（Ｘ、Ｙ）が入力される。ここで、ＮＸにＮＴ（０、１）＝１が入力される。
【００５１】
Ｓ２１０では、Ｙが判定され、Ｙ＝１の場合には、Ｓ２１２の処理が行われ、それ以外の場合には、Ｓ２２２から開始する２行目以降の処理が行われる。
【００５２】
Ｓ２１２では、ＴＬＴ（ＮＸ、Ｙ）にＬが格納され、ＯＬＴ（Ｌ）にＬが格納され、ＬがＬ＋１に更新される。ここで、ＮＸ＝１、Ｙ＝１、Ｌ＝１であるので、ＴＬＴ（１、１）にＬ＝１が仮ラベル「１」として格納され、ＯＬＴ（１）にＬ＝１が格納され、ＬがＬ＋１＝２に更新される。
【００５３】
Ｓ２１４では、ＸがＮＴ（Ｘ、Ｙ）に更新される。ここで、Ｘ＝０、Ｙ＝１であるので、ＸがＮＴ（０、１）＝１に更新される。
【００５４】
そして、処理がＳ２０４に復帰し、Ｓ２０８では、Ｘ＝１、Ｙ＝１であるので、ＮＸにＮＴ（１、１）＝４が入力される。Ｓ２１２では、ＮＸ＝４、Ｙ＝１、Ｌ＝２であるので、ＴＬＴ（４、１）にＬ＝２が仮ラベル「２」として格納され、ＯＬＴ（２）にＬ＝２が格納され、ＬがＬ＋１＝３に更新される。Ｓ２１４では、Ｘ＝１、Ｙ＝１であるので、ＸがＮＴ（１、１）＝４に更新される。
【００５５】
そして、処理がＳ２０４に復帰し、Ｘ＝４、Ｙ＝１であり、ＮＴ（４、１）＝５、ＮＨ＝４であるので、Ｓ２０６の処理によりＹがＹ＋１＝２に更新される。そして、Ｓ２１０では、Ｙ＝２であるので、ＰＬ１の処理が終了し、ＰＬ２の処理に移行する。
【００５６】
ＰＬ１の処理では、図１４（Ｃ）、（Ｄ）に示すように、ＰＬ１上の２つのブロックにおいて、各ブロックの開始位置にある画素に互いに異なる仮ラベルが付される。つまり、ＰＬ１に対応するＴＬＴの記憶領域において、第１のブロックの開始位置である１列目に仮ラベル「１」が格納され、第２のブロックの開始位置である４列目に仮ラベル「２」が格納される。また、ＰＬ１の処理では、仮ラベル「１」、「２」が使用されるので、仮ラベル「１」、「２」がＯＬＴの記憶領域の格納位置１，２に各々に格納される。
【００５７】
＜ＰＬ２の処理＞
以下では、ＰＬ２〜ＰＬ４の処理について図１２および図１３、および図１５〜図１８を参照しながら説明する。まず、ＰＬ２の処理について説明するが、ＰＬ１の処理と重複する説明は省略する。
【００５８】
Ｓ２２２では、対象行Ｙの対象列番号Ｘ１、前行Ｙ−１の対象列番号Ｘ２、前行Ｙ−１の前列番号Ｘ３が初期化される。対象列番号Ｘ１は、対象行Ｙで処理の対象となる列番号であり、ＰＬ毎の処理で初期値０が入力される。前行の対象列番号Ｘ２は、対象行Ｙの前行Ｙ−１で処理の対象となる列番号であり、初期値０が入力される。前行の前列番号Ｘ３は、前行Ｙ−１で処理の対象となる列Ｘ２の前列の列番号であり、初期値Ｘ２＝０が入力される。
【００５９】
Ｓ２２４では、ＮＸ１にＮＴ（Ｘ１、Ｙ）の値が入力される。ここで、Ｘ１＝０、Ｙ＝２であるので、ＮＸ１にＮＴ（０、２）＝１が入力される。
【００６０】
Ｓ２２６では、ＮＸ１が入力画像３０の水平画素数ＮＨと比較され、ＮＸ１≦ＮＨの場合には、Ｓ２２８の処理が行われ、それ例外の場合には、Ｓ２５４の処理が行われる。ここで、ＮＸ１＝１、ＮＨ＝４であるので、Ｓ２２８の処理により、更新フラグＦが初期化（Ｆ＝１）される。
【００６１】
Ｓ２３０では、対象行Ｙにおける注目ブロックの開始位置Ｘ１ｍｉｎおよび終了位置Ｘ１ｍａｘが取得される。つまり、Ｘ１ｍｉｎにＮＴ（Ｘ１、Ｙ）（＝ＮＸ１）が入力され、Ｘ１ｍａｘにＥＴ（ＮＸ１、Ｙ）が入力される。ここで、ＮＸ１＝１、Ｙ＝２であるので、ＰＬ２の第１ブロック（１列目の画素）の位置情報として、Ｘ１ｍｉｎにＮＸ１＝１が入力され、Ｘ１ｍａｘにＥＴ（１、２）＝１が入力される。
【００６２】
Ｓ２３２では、ＮＸ２にＮＴ（Ｘ２、Ｙ−１）の値が入力される。ここで、Ｘ２＝０、Ｙ＝２であるので、ＮＸ２にＮＴ（０、１）＝１が入力される。
【００６３】
Ｓ２３４では、ＮＸ２がＮＨと比較され、ＮＸ２≦ＮＨの場合には、Ｓ２３６の処理が行われ、それ例外の場合には、Ｓ２４８の処理が行われる。ここで、ＮＸ２＝１、ＮＨ＝４であるので、Ｓ２３６の処理が行われる。
【００６４】
Ｓ２３６では、前行Ｙ−１における注目ブロックの開始位置Ｘ２ｍｉｎおよび終了位置Ｘ２ｍａｘが取得される。つまり、Ｘ２ｍｉｎにＮＴ（Ｘ２、Ｙ−１）（＝ＮＸ２）が入力され、Ｘ２ｍａｘにＥＴ（ＮＸ２、Ｙ−１）が入力される。ここで、ＮＸ２＝１、Ｙ＝２であるので、ＰＬ１の第１ブロック（１列目の画素）の位置情報として、Ｘ２ｍｉｎにＮＸ２＝１が入力され、Ｘ２ｍａｘにＥＴ（１、１）＝１が入力される。
【００６５】
Ｓ２３８では、対象行Ｙの注目ブロックと前行Ｙ−１の注目ブロックとの連結関係が判定され、判定結果に応じて後続の処理が決定される。つまり、Ｘ１ｍｉｎ≦Ｘ２ｍａｘ＋１、かつ、Ｘ２ｍｉｎ−１≦Ｘ１ｍａｘの場合には、隣接行間で注目ブロック同士が連結関係にあるので、図１３に示すＳ２６２から開始される処理が行われる。ここで、Ｘ１ｍｉｎ＝１、Ｘ１ｍａｘ＝１、Ｘ２ｍｉｎ＝１、Ｘ２ｍａｘ＝１であり、隣接行間で注目ブロック同士（ＰＬ１の第１ブロックおよびＰＬ２の第１ブロック）が連結関係にあるので、処理がＳ２６２に移行する。
【００６６】
Ｓ２６２では、現在行Ｙおよび前行Ｙ−１における注目ブロックの開始位置の仮ラベル番号Ｌ１、Ｌ２が取得される。つまり、ＮＸ１にＴＬＴ（ＮＸ１、Ｙ）の値が入力され、ＮＸ２にＴＬＴ（ＮＸ２、Ｙ−１）の値が入力される。ここで、ＮＸ１＝１、ＮＸ２＝１、Ｙ＝２であるので、Ｌ１にＴＬＴ（１、２）＝０が入力され、Ｌ２にＴＬＴ（１、１）＝１が入力される。
【００６７】
Ｓ２６４では、Ｌ１が判定され、Ｌ１＝０であれば、Ｓ２６６の処理が行われ、それ以外の場合には、Ｓ２６８の処理が行われる。ここで、Ｌ１＝０であるので、Ｓ２６６の処理が行われる。
【００６８】
Ｓ２６６では、ＴＬＴ（ＮＸ１、Ｙ）にＬ２が格納される。ここで、ＮＸ１＝１、Ｙ＝２、Ｌ２＝１であるので、ＴＬＴ（１、２）にＬ２＝１が仮ラベル「１」として格納される。そして、処理がＳ２４２に移行する。Ｓ２４２では、Ｆが値０に更新される。
【００６９】
Ｓ２４４では、Ｘ３にＸ２が入力され、Ｘ２がＮＴ（Ｘ２、Ｙ−１）に更新される。ここで、Ｘ２＝０、Ｙ＝２であるので、Ｘ３にＸ２＝０が入力され、Ｘ２がＮＴ（０、１）＝１に更新される。そして、処理がＳ２３２に復帰する。
【００７０】
Ｓ２３２では、Ｘ２＝１、Ｙ＝２であるので、ＮＸ２にＮＴ（１、１）＝４が入力される。Ｓ２３６では、ＮＸ２＝４、Ｙ＝２であるので、ＰＬ１の第２ブロック（４列目の画素）の位置情報として、Ｘ２ｍｉｎにＮＸ２＝４が入力され、Ｘ２ｍａｘにＥＴ（４、１）＝４が入力される。Ｓ２３８では、Ｘ１ｍｉｎ＝１、Ｘ１ｍａｘ＝１、Ｘ２ｍｉｎ＝４、Ｘ２ｍａｘ＝４であり、隣接行間で注目ブロック同士（ＰＬ１の第２ブロックおよびＰＬ２の第１ブロック）が連結関係にないので、Ｓ２４６の処理が行われる。
【００７１】
Ｓ２４６では、Ｘ１ｍａｘおよびＸ２ｍｉｎ−１が比較され、Ｘ１ｍａｘ＜Ｘ２ｍｉｎ―１の場合には、Ｓ２４８の処理が行われ、それ以外の場合には、Ｓ２４４の処理が行われる。ここで、Ｘ１ｍａｘ＝１、Ｘ２ｍｉｎ＝４であるので、Ｓ２４８の処理が行われる。
【００７２】
Ｓ２４８では、Ｆが判定され、Ｆ＝１である場合には、Ｓ２５０の処理が行われ、それ以外の場合には、Ｓ２５２の処理が行われる。ここで、Ｆ＝０であるので、Ｓ２５２の処理が行われる。
【００７３】
Ｓ２５２では、Ｘ１がＮＴ（Ｘ１、Ｙ）に更新される。ここで、Ｘ１＝０、Ｙ＝２であるので、Ｘ１にＮＴ（０、２）＝１が入力される。そして、処理がＳ２２４に復帰する。
【００７４】
Ｓ２２４では、Ｘ１＝１、Ｙ＝２であるので、ＮＸ１にＮＴ（１、２）＝３が入力される。Ｓ２２８では、Ｆが初期化（Ｆ＝１）される。Ｓ２３０では、対象行Ｙの次の注目ブロックのＸ１ｍｉｎ、Ｘ１ｍａｘが取得される。ここで、ＮＸ１＝３、Ｙ＝２であるので、ＰＬ２の第２ブロック（３列目の画素）の位置情報として、Ｘ１ｍｉｎにＮＸ１＝３が入力され、Ｘ１ｍａｘにＥＴ（３、２）＝３が入力される。
【００７５】
Ｓ２３２では、Ｘ２＝１、Ｙ＝２であるので、ＮＸ２にＮＴ（１、１）＝４が入力される。Ｓ２３６では、前行の注目ブロックのＸ２ｍｉｎ、Ｘ２ｍａｘが取得される。ここで、ＮＸ２＝４、Ｙ＝２であるので、ＰＬ１の第２ブロック（４列目の画素）の位置情報として、Ｘ２ｍｉｎにＮＸ２＝４が入力され、Ｘ２ｍａｘにＥＴ（４、１）＝４が入力される。
【００７６】
Ｓ２３８では、Ｘ１ｍｉｎ＝３、Ｘ１ｍａｘ＝３、Ｘ２ｍｉｎ＝４、Ｘ２ｍａｘ＝４であり、隣接行間で注目ブロック同士（ＰＬ１の第２ブロックおよびＰＬ２の第２ブロック）が連結関係にあるので、処理がＳ２６２に移行する。
【００７７】
Ｓ２６２では、ＮＸ１＝３、ＮＸ２＝４、Ｙ＝２であるので、Ｌ１にＴＬＴ（３、２）＝０が入力され、Ｌ２にＴＬＴ（４、１）＝２が入力される。Ｓ２６６では、ＮＸ１＝３、Ｙ＝２、Ｌ２＝２であるので、ＴＬＴ（３、２）にＬ２＝２が仮ラベル「２」として格納される。そして、処理がＳ２４２に移行する。
【００７８】
Ｓ２４２では、Ｆが値０に更新される。Ｓ２４４では、Ｘ２＝１、Ｙ＝２であるので、Ｘ３にＸ２＝１が入力され、Ｘ２がＮＴ（１、１）＝４に更新される。そして、処理がＳ２３２に復帰する。
【００７９】
Ｓ２３２では、Ｘ２＝４、Ｙ＝２であるので、ＮＸ２にＮＴ（４、１）＝５が入力される。Ｓ２３４では、ＮＸ２＝５、ＮＨ＝４であるので、Ｓ２４８の処理が行われる。Ｓ２４８では、Ｆ＝０であるので、処理がＳ２５２に移行する。Ｓ２５２では、Ｘ１＝１、Ｙ＝２であるので、Ｘ１にＮＴ（１、２）＝３が入力される。そして、処理がＳ２２４に復帰する。
【００８０】
Ｓ２２４では、Ｘ１＝３、Ｙ＝２であるので、ＮＸ１にＮＴ（３、２）＝５が入力される。Ｓ２２６では、ＮＸ１＝５、ＮＨ＝４であるので、処理がＳ２５４に移行する。
【００８１】
Ｓ２５４では、ＹがＹ＋１に更新される。ここで、Ｙ＝２であるので、ＹがＹ＋１＝３に更新される。Ｓ２５６では、Ｙが画素配列の垂直画素数ＮＶと比較され、ＮＶ＜Ｙの場合には、処理がＳ２２２に復帰し、それ以外の場合には、Ｓ２６２から開始される仮ラベル変更処理が行われる。ここで、Ｙ＝３、ＮＶ＝４であるので、処理がＳ２２２に復帰する。
【００８２】
以上によりＰＬ２の処理が終了する。ＰＬ２の処理では、図１５（Ｃ）、（Ｄ）に示すように、ＰＬ２に対応するＴＬＴの記憶領域において、第１ブロックの開始位置である１列目には、連結関係にあるＰＬ１の第１ブロックと同一の仮ラベル「１」が格納され、第２ブロックの開始位置である３列目には、連結関係にあるＰＬ１の第２ブロックと同一の仮ラベル「２」が格納される。また、ＰＬ２の処理では、仮ラベル「１」、「２」が使用されているので、仮ラベル「１」、「２」がＯＬＴの記憶領域の格納位置１，２に各々に格納される。
【００８３】
＜ＰＬ３の処理＞
次に、ＰＬ３の処理について説明するが、ＰＬ２の処理と重複する説明は省略する。
【００８４】
Ｓ２２２では、Ｘ１、Ｘ２、Ｘ３の値がＸ１＝０、Ｘ２＝０、Ｘ３＝０に初期化される。Ｓ２２４では、Ｘ１＝０、Ｙ＝３であるので、ＮＸ１にＮＴ（０、３）＝１が入力される。Ｓ２２８では、Ｆが初期化（Ｆ＝１）される。Ｓ２３０では、ＰＬ３における注目ブロックの開始位置および終了位置が取得される。ここで、ＮＸ１＝１、Ｙ＝３であるので、ＰＬ３の第１ブロック（１列目の画素）の位置情報として、Ｘ１ｍｉｎにＮＸ１＝１が入力され、Ｘ１ｍａｘにＥＴ（１、３）＝２が入力される。
【００８５】
Ｓ２３２では、Ｘ２＝０、Ｙ＝３であるので、ＮＸ２にＮＴ（０、２）＝１が入力される。Ｓ２３６では、ＰＬ２における注目ブロックの開始位置および終了位置が取得される。ここで、ＮＸ２＝１、Ｙ＝３であるので、ＰＬ２の第１ブロック（１列目の画素）の位置情報として、Ｘ２ｍｉｎに値ＮＸ２＝１が入力され、Ｘ２ｍａｘにＥＴ（１、２）＝１が入力される。
【００８６】
Ｓ２３８では、ＰＬ３の注目ブロックとＰＬ２の注目ブロックとの連結関係が判定される。ここで、Ｘ１ｍｉｎ＝１、Ｘ１ｍａｘ＝２、Ｘ２ｍｉｎ＝１、Ｘ２ｍａｘ＝１であり、隣接行間で注目ブロック同士（ＰＬ２の第１ブロックおよびＰＬ３の第１ブロック）が連結関係にあるので、処理がＳ２６２に移行する。
【００８７】
Ｓ２６２では、ＰＬ３およびＰＬ２における注目ブロックの開始位置の仮ラベル番号Ｌ１、Ｌ２が取得される。ここで、ＮＸ１＝１、ＮＸ２＝１、Ｙ＝３であるので、Ｌ１にＴＬＴ（１、３）＝０が入力され、Ｌ２にＴＬＴ（１、２）＝１が入力される。Ｓ２６６では、ＮＸ１＝１、Ｙ＝３、Ｌ２＝１であるので、ＴＬＴ（１、３）にＬ２＝１が仮ラベル「１」として格納される（図１６（Ｃ）、（Ｄ））。そして、処理がＳ２４２に移行する。
【００８８】
Ｓ２４２では、Ｆが値０に更新される。Ｓ２４４では、Ｘ２＝０、Ｙ＝３であるので、Ｘ３にＸ２＝０が入力され、Ｘ２がＮＴ（０、２）＝１に更新される。そして、処理がＳ２３２に復帰する。
【００８９】
Ｓ２３２では、Ｘ２＝１、Ｙ＝３であるので、ＮＸ２にＮＴ（１、２）＝３が入力される。Ｓ２３６では、ＮＸ２＝３、Ｙ＝３であるので、ＰＬ２の第２ブロック（３列目の画素）の位置情報として、Ｘ２ｍｉｎにＮＸ２＝３が入力され、Ｘ２ｍａｘにＥＴ（３、２）＝３が入力される。Ｓ２３８では、Ｘ１ｍｉｎ＝１、Ｘ１ｍａｘ＝２、Ｘ２ｍｉｎ＝３、Ｘ２ｍａｘ＝３であり、隣接行間で注目ブロック同士（ＰＬ２の第２ブロックおよびＰＬ３の第１ブロック）が連結関係にあるので、処理がＳ２６２に移行する。
【００９０】
Ｓ２６２では、ＮＸ１＝１、ＮＸ２＝３、Ｙ＝３であるので、Ｌ１にＴＬＴ（１、３）＝１が入力され、Ｌ２にＴＬＴ（３、２）＝２が入力される。Ｓ２６４では、Ｌ１＝１であるので、Ｓ２６８の処理が行われる。
【００９１】
Ｓ２６８では、Ｌ１およびＬ２が判定され、Ｌ１＜Ｌ２の場合には、Ｓ２７０の処理が行われ、それ以外の場合には、Ｓ２７２の処理が行われる。ここで、Ｌ１＝１、Ｌ２＝２であるので、Ｓ２７０の処理が行われる。
【００９２】
Ｓ２７０では、ＴＬＴ（ＮＸ１、Ｙ）にＬ１が格納され、ＯＬＴの記憶領域に格納されているＬ２がＬ１に変更される。ここで、ＮＸ１＝１、Ｙ＝３、Ｌ１＝１、Ｌ２＝２であるので、ＴＬＴ（１、３）にＬ１＝１が仮ラベル「１」として格納される。また、ＯＬＴ（２）に値２が格納されているので、ＯＬＴ（２）が値１に変更される。そして、処理がＳ２４２に移行する。
【００９３】
ここで、第２の仮ラベリング処理では、ブロックの開始位置にある画素に仮ラベルが付されるので、ＰＬ３の第１ブロックでは、１列目の画素に仮ラベル「１」が付され、１列目の画素に連結する２列目の画素には仮ラベルが付されない。また、隣接するＰＬ間でブロック同士の連結関係が判定され、ブロック同士の連結関係がないと判定されると、仮ラベルを付するための処理が行われない。このため、特に、ＰＬ上のブロックが多数の画素からなる場合には、仮ラベルを付するための処理が大幅に削減される。
【００９４】
Ｓ２４２では、Ｆが値０に更新される。Ｓ２４４では、Ｘ２＝１、Ｙ＝３であるので、Ｘ３にＸ２＝１が入力され、Ｘ２がＮＴ（１、２）＝３に更新される。そして、処理がＳ２３２に復帰する。
【００９５】
Ｓ２３２では、Ｘ２＝３、Ｙ＝３であるので、ＮＸ２にＮＴ（３、２）＝５が入力される。Ｓ２３４では、ＮＸ２＝５、ＮＨ＝４であるので、Ｓ２４８の処理が行われる。Ｓ２４８では、Ｆ＝０であるので、処理がＳ２５２に移行する。Ｓ２５２では、Ｘ１＝０、Ｙ＝３であるので、Ｘ１にＮＴ（０、３）＝１が入力される。そして、処理がＳ２２４に復帰する。
【００９６】
Ｓ２２４では、Ｘ１＝１、Ｙ＝３であるので、ＮＸ１にＮＴ（１、３）＝５が入力される。Ｓ２２６では、ＮＸ１＝５、ＮＨ＝４であるので、処理がＳ２５４に移行する。Ｓ２５４では、Ｙ＝３であるので、ＹがＹ＋１＝４に更新される。Ｓ２５６では、Ｙ＝４、ＮＶ＝４であるので、処理がＳ２２２に復帰する。
【００９７】
以上によりＰＬ３の処理が終了する。ＰＬ３の処理では、図１７（Ｃ）、（Ｄ）に示すように、ＰＬ３に対応するＴＬＴの記憶領域において、第１ブロックの開始位置である１列目には、連結関係にあるＰＬ２の第１ブロックと同一の仮ラベル「１」が格納される。ここで、第１ブロックの開始位置以外である２列目には、仮ラベルが格納されない。また、ＰＬ３の処理では、２列目の画素がＰＬ２の第２ブロックと連結関係にあることが確認されることで、仮ラベル「２」が格納されていたＯＬＴ（２）の記憶領域に仮ラベル「１」が格納される。
【００９８】
＜ＰＬ４の処理＞
次に、ＰＬ４の処理について説明するが、ＰＬ２、３の処理と重複する説明は省略する。
【００９９】
Ｓ２２２では、Ｘ１、Ｘ２、Ｘ３の値がＸ１＝０、Ｘ２＝０、Ｘ３＝０に初期化される。Ｓ２２４では、Ｘ１＝０、Ｙ＝４であるので、ＮＸ１にＮＴ（０、４）＝１が入力される。Ｓ２２８では、Ｆが初期化（Ｆ＝１）される。Ｓ２３０では、ＰＬ４における注目ブロックの開始位置および終了位置が取得される。ここで、ＮＸ１＝１、Ｙ＝４であるので、ＰＬ４の第１ブロック（１列目の画素）の位置情報として、Ｘ１ｍｉｎにＮＸ１＝１が入力され、Ｘ１ｍａｘにＥＴ（１、４）＝１が入力される。
【０１００】
Ｓ２３２では、Ｘ２＝０、Ｙ＝４であるので、ＮＸ２にＮＴ（０、３）＝１が入力される。Ｓ２３６では、ＰＬ３における注目ブロックの開始位置および終了位置が取得される。ここで、ＮＸ２＝１、Ｙ＝４であるので、ＰＬ３の第１ブロック（１、２列目の画素）の位置情報として、Ｘ２ｍｉｎにＮＸ２＝１が入力され、Ｘ２ｍａｘにＥＴ（１、３）＝２が入力される。
【０１０１】
Ｓ２３８では、ＰＬ４の注目ブロックとＰＬ３の注目ブロックとの連結関係が判定される。ここで、Ｘ１ｍｉｎ＝１、Ｘ１ｍａｘ＝１、Ｘ２ｍｉｎ＝１、Ｘ２ｍａｘ＝２であり、隣接行間で注目ブロック同士（ＰＬ３の第１ブロックおよびＰＬ４の第１ブロック）が連結関係にあるので、処理がＳ２６２に移行する。
【０１０２】
Ｓ２６２では、ＰＬ４およびＰＬ３における注目ブロックの開始位置の仮ラベル番号Ｌ１、Ｌ２が取得される。ここで、ＮＸ１＝１、ＮＸ２＝１、Ｙ＝４であるので、Ｌ１にＴＬＴ（１、４）＝０が入力され、Ｌ２にＴＬＴ（１、３）＝１が入力される。
【０１０３】
Ｓ２６６では、ＮＸ１＝１、Ｙ＝４、Ｌ２＝１であるので、ＴＬＴ（１、４）にＬ２＝１が仮ラベル「１」として格納される。そして、処理がＳ２４２に移行する。
【０１０４】
Ｓ２４２では、Ｆが値０に更新される。Ｓ２４４では、Ｘ２＝０、Ｙ＝４であるので、Ｘ３にＸ２＝０が入力され、Ｘ２がＮＴ（０、３）＝１に更新される。そして、処理がＳ２３２に復帰する。
【０１０５】
Ｓ２３２では、Ｘ２＝１、Ｙ＝４であるので、ＮＸ２にＮＴ（１、３）＝５が入力される。Ｓ２３４では、ＮＸ２＝５、ＮＨ＝４であるので、処理がＳ２４８に移行する。Ｓ２４８では、Ｆ＝０であるので、処理がＳ２５２に移行する。Ｓ２５２では、Ｘ１＝０、Ｙ＝４であるので、Ｘ１にＮＴ（０、４）＝１が入力される。そして、処理がＳ２２４に復帰する。
【０１０６】
Ｓ２２４では、Ｘ１＝１、Ｙ＝４であるので、ＮＸ１にＮＴ（１、４）＝４が入力される。Ｓ２２８では、Ｆが初期化（Ｆ＝１）される。Ｓ２３０では、ＰＬ４における注目ブロックの開始位置および終了位置が取得される。ここで、ＮＸ１＝４、Ｙ＝４であるので、ＰＬ４の第２ブロック（４列目の画素）の位置情報として、Ｘ１ｍｉｎにＮＸ１＝４が入力され、Ｘ１ｍａｘにＥＴ（４、４）＝４が入力される。
【０１０７】
Ｓ２５０では、ＴＬＴ（ＮＸ１、Ｙ）にＬが格納され、ＯＬＴ（Ｌ）にＬが格納され、Ｌの値がＬ＋１に更新される。ＮＸ１＝４、Ｙ＝４、Ｌ＝３であるので、ＴＬＴ（４、４）にＬ＝３が仮ラベル「３」として格納され、ＯＬＴ（３）にＬ＝３が格納され、ＬがＬ＋１＝４に更新される。
【０１０８】
Ｓ２５２では、Ｘ１＝１、Ｙ＝４であるので、Ｘ１にＮＴ（１、４）＝４が入力される。そして、処理がＳ２２４に復帰する。
【０１０９】
Ｓ２２４では、Ｘ１＝４、Ｙ＝４であるので、ＮＸ１にＮＴ（４、４）＝５が入力される。Ｓ２２６では、ＮＸ１＝５、ＮＨ＝４であるので、処理がＳ２５４に移行する。Ｓ２５４では、Ｙ＝４であるので、Ｙが値Ｙ＋１＝５に更新される。Ｓ２５６では、Ｙ＝５、ＮＶ＝４であるので、処理がＳ２６２に移行する。
【０１１０】
以上によりＰＬ４の処理が終了する。ＰＬ４の処理では、図１８（Ｃ）、（Ｄ）に示すように、ＰＬ４に対応するＴＬＴの記憶領域において、第１のブロックの開始位置である１列目には、連結関係にあるＰＬ３の第１ブロックと同一の仮ラベル「１」が格納され、第２ブロックの開始位置である４列目には、ＰＬ３の第１ブロックと連結関係にないので、新たな仮ラベル「３」が格納される。また、ＰＬ３の処理では、仮ラベル「３」が使用されているので、仮ラベル「３」がＯＬＴの記憶領域の格納位置３に格納される。
【０１１１】
図１９は、仮ラベルを変更するための仮ラベル変更処理を示す説明図である。仮ラベル変更処理では、前述した仮ラベルテーブルＴＬＴおよび重複ラベルテーブルＯＬＴの記憶領域が用いられる。図１９には、前述の処理で取得されたＴＬＴ（Ａ）およびＯＬＴ（Ｂ）、仮ラベル変更処理が終了した時点でのＴＬＴ（Ｃ）が示されている。
【０１１２】
ＯＬＴの記憶領域上の格納位置は、ＴＬＴに格納されている仮ラベルのインデックスを示し、各々の格納位置に格納されている値は、仮ラベル変更処理により変更されるべき仮ラベルを示している。つまり、図１９に示す場合では、ＴＬＴには、仮ラベル「１」、「２」、「３」が格納されており、仮ラベル「２」が仮ラベル「１」に変更され、仮ラベル「３」が仮ラベル「２」に変更されるべきであることを示している。
【０１１３】
図３に示すように、ＰＬ１の第１および第２ブロック（１列目、４列目の画素）、ＰＬ２の第１および第２ブロック（１列目、３列目の画素）、ＰＬ３の第１ブロック（１、２列目の画素）、ＰＬ４の第１ブロック（１列目の画素）は、８連結の連結関係にある。一方、図１９（Ａ）に示すＴＬＴでは、連結関係にある画素に互いに異なる仮ラベル「１」、「２」が付されている。つまり、連結関係にあるブロック同士の画素に付された仮ラベルが異なっている。
【０１１４】
このため、仮ラベル変更処理では、まず、ＴＬＴの記憶領域上において、仮ラベル「２」が格納されている配列要素に仮ラベル「１」を格納し、仮ラベル「３」が格納されている配列要素に仮ラベル「２」を格納する。これにより、図１９（Ｃ）に示すように、連結関係にあるブロック同士の画素に付された仮ラベルが同一の仮ラベルに変更される。
【０１１５】
以上により第２の仮ラベリング処理が完了し、図１９（Ｃ）に示すように、連結関係にあるブロック同士で同一の仮ラベルがブロック毎に開始位置にある画素に付された仮ラベルテーブルＴＬＴが取得される。
【０１１６】
第２の仮ラベリング処理では、第１の仮ラベリング処理で取得された位置情報に基づいて、隣接するＰＬ間でのブロック同士の連結関係が判定され、ブロック毎に開始位置にある画素に連結関係に基づく仮ラベルが付される。このため、隣接画素同士の連結関係が逐次判定される代わりに、隣接するＰＬ間でのブロック同士の連結関係が判定され、ブロックの開始位置にある画素に仮ラベルが付されるので、仮ラベリング処理の高速化を図ることができる。
【０１１７】
（再ラベリング処理）
最後に、本発明の一実施形態に係る画像処理方法のうち再ラベリング処理について説明する。図２０は、再ラベリング処理の流れを示すフロー図である。図２１〜２４は、再ラベリング処理の過程を示す説明図である。
【０１１８】
再ラベリング処理では、ＳＩＭＤ型プロセッサの各ＰＥに対して、ＰＬ１〜４が並列に割当てられる。再ラベリング処理では、終了列番号テーブルＥＴ、仮ラベルテーブルＴＬＴ、再ラベルテーブルＦＬＴの記憶領域が用いられる。ＥＴの記憶領域は、第１の仮ラベリング処理で取得された位置情報を記憶している。ＴＬＴの記憶領域は、第２の仮ラベリング処理で取得された仮ラベルを記憶している。ＦＬＴの記憶領域は、入力画像３０の画素配列３２の行数、列数＋１の配列テーブル（本例の場合、０列目〜４列目を有する４行５列）として設けられる。
【０１１９】
図２１は、１列目の処理を示す説明図である。図２１には、ＥＴ（Ａ）およびＴＬＴ（Ｂ）、１列目の処理が終了した時点でのＦＬＴ（Ｃ）が示されている。以下では、１列目の処理について図２０および図２１を参照しながら説明する。
【０１２０】
Ｓ３０２では、対象列番号Ｘおよびラベル番号Ｌが初期化される。Ｘには、初期値１が入力され、Ｌには、初期値０が入力される。
【０１２１】
Ｓ３０４では、ＥＴから対象列Ｘの終了列番号Ｅが取得され、ＴＬＴから前列Ｘ−１および対象列Ｘの仮ラベル番号Ｌ１およびＬ２が取得される。ここで、例えばＰＬ１では、ＰＬ１を割当てられたＰＥによって、ＥＴから１列目のＥ＝１が取得され、ＴＬＴから０列目のＬ１＝０および１列目のＬ２＝１が取得される。また、ＰＬ３では、ＰＬ３を割当てられたＰＥによって、ＥＴからＥ＝２が取得され、ＴＬＴからＬ１＝０およびＬ２＝１が取得される。
【０１２２】
Ｓ３０６では、Ｌ１およびＬ２が判定され、Ｌ１＝０かつＬ２≠０の場合には、Ｓ３０８の処理が行われ、それ以外の場合には、Ｓ３１０の処理が行われる。ここで、例えばＰＬ１、ＰＬ３では、Ｌ１＝０かつＬ２＝１であるので、Ｓ３０８の処理が行われる。
【０１２３】
Ｓ３０８では、ＬにＬ２が入力される。ここで、例えばＰＬ１、ＰＬ３では、Ｌ２＝１であるので、Ｌには、Ｌ２＝１が入力される。
【０１２４】
Ｓ３１０では、ＥおよびＬが判定され、Ｅ≠１かつＬ≠０の場合にはＳ３１２の処理が行われ、それ以外の場合には、Ｓ３１４の処理が行われる。ここで、例えばＰＬ１、ＰＬ３では、Ｅ≠１かつＬ＝１であるので、Ｓ３１２の処理が行われる。
【０１２５】
Ｓ３１２では、ＦＬＴのＸ列目にＬが格納される。一方、Ｓ３１４では、ＦＬＴのＸ列目に値０が格納される。ここで、例えばＰＬ１、ＰＬ３では、Ｘ＝１、Ｌ＝１であるので、ＦＬＴの１列目にＬ＝１が格納される。
【０１２６】
Ｓ３１６では、ＸがＸ＋１に更新される。ここで、Ｘ＝１であるので、ＸがＸ＋１＝２に更新される。Ｓ３１８では、Ｘおよび入力画像３０の画素配列３２の水平画素数ＮＨが比較され、Ｘ＜ＮＨの場合には、処理がＳ３０４に復帰し、それ以外の場合には、再ラベリング処理が完了する。
【０１２７】
以上説明したように、１列目の処理によって、図２１（Ｃ）に示すように、ＰＬ１〜４に対応するＦＬＴの記憶領域において、第１ブロックの開始位置にラベル「１」が格納される。
【０１２８】
以下では、図２０および図２２〜２４を参照しながら、２列目〜４列目の処理について説明するが、１列目の処理と重複する説明は省略する。
【０１２９】
２列目の処理において、例えばＰＬ１では、Ｓ３０４の処理により、ＥＴから２列目のＥ＝０が取得され、ＴＬＴから１列目のＬ１＝１および２列目のＬ２＝０が取得される。そして、Ｅ＝０、Ｌ＝１であるので、Ｓ３１４の処理によりＦＬＴの２列目に値０が格納される。
【０１３０】
また、例えばＰＬ３では、Ｓ３０４の処理により、ＥＴから２列目のＥ＝２が取得され、ＴＬＴから１列目のＬ１＝１および２列目のＬ２＝０が取得される。そして、Ｅ≠０、Ｌ＝１であるので、Ｓ３１２の処理によりＦＬＴの２列目にＬ＝１が格納される。
【０１３１】
３列目の処理において、例えばＰＬ１では、Ｓ３０４の処理により、ＥＴから３列目のＥ＝０が取得され、ＴＬＴから２列目のＬ１＝０および３列目のＬ２＝０が取得される。そして、Ｅ＝０、Ｌ＝１であるので、Ｓ３１４の処理によりＦＬＴの３列目に値０が格納される。
【０１３２】
また、例えばＰＬ２では、Ｓ３０４の処理により、ＥＴから３列目のＥ＝３が取得され、ＴＬＴから２列目のＬ１＝０および３列目のＬ２＝１が取得される。そして、Ｌ１＝０、Ｌ２＝１であるので、Ｓ３０８の処理によりＬにＬ２＝１が入力される。また、Ｅ≠０、Ｌ＝１であるので、Ｓ３１２の処理によりＦＬＴの３列目にＬ＝１が格納される。これにより、図２２（Ｃ）に示すように、ＰＬ３上の第１ブロックに含まれる画素のうち、ブロックの開始位置以外にある２列目の画素にラベル「１」が付される。
【０１３３】
４列目の処理において、例えばＰＬ４では、Ｓ３０４の処理により、ＥＴから４列目のＥ＝４が取得され、ＴＬＴから３列目のＬ１＝０および４列目のＬ２＝２が取得される。そして、Ｌ１＝０、Ｌ２＝２であるので、Ｓ３０８の処理によりＬにＬ２＝２が入力される。また、Ｅ≠０、Ｌ＝２であるので、Ｓ３１２の処理によりＦＬＴの４列目にＬ＝２が格納される。
【０１３４】
以上により再ラベリング処理が完了し、図２４（Ｃ）のＦＬＴに示すように、画素配列の画素毎にラベルが付された再ラベルテーブルＦＬＴが取得され、ラベリング処理が完了する。
【０１３５】
再ラベリング処理でも、第１の仮ラベリング処理と同様に、ＰＥ１〜４に対してＰＬ１〜４を並列に割当て、同一ＰＬ上で先に処理された画素の処理結果に基づいて後続の画素が処理される。これにより、ＳＩＭＤ型プロセッサの処理特性に基づいて、再ラベリング処理の高速化を図ることができる。
【０１３６】
以上説明したように、本実施形態に係る画像処理方法によれば、仮ラベリング処理および再ラベリング処理からなるラベリング処理全体を高速に実行することができる。
【０１３７】
つまり、第１の仮ラベリング処理では、画素配列の行方向または列方向にＰＬを設定するので、各ＰＥに画素を割当てる際のアドレス指定が容易となる。また、各ＰＬ上での画素成分同士の連結関係を判定し、各ＰＬ上のブロック毎に位置情報を取得するので、ＳＩＭＤ型プロセッサの処理特性に基づいて、各ＰＬ上でブロックの特定処理を高速に行うことができる。
【０１３８】
また、第２の仮ラベリング処理では、位置情報に基づいて、隣接するＰＬ間でのブロック同士の連結関係を判定し、ブロック毎に開始位置にある画素成分に連結関係に基づく仮ラベルを付する。これにより、隣接画素同士の連結関係を逐次判定する代わりに、隣接するＰＬ間でのブロック同士の連結関係を判定し、ブロックの開始位置にある画素成分に仮ラベルを付するので、仮ラベリング処理の高速化を図ることができる。特に、８連結のラベリング処理を行う場合、または、ＰＬ上のブロックが多数の画素成分からなる場合には、従来技術に比して、仮ラベリング処理の大幅な高速化を図ることができる。また、仮ラベル変更処理では、隣接するＰＬ間で連結関係にあるブロック同士において、ブロック毎に開始位置にある画素成分に同一の仮ラベルを付することができる。
【０１３９】
また、再ラベリング処理では、位置情報および仮ラベリング処理の結果に基づいて、ブロック毎に開始位置以外にある画素成分にラベルを付するので、ＳＩＭＤ型プロセッサの処理特性に基づいて、再ラベリング処理の高速化を図ることができる。
【０１４０】
以上、添付図面を参照しながら本発明の好適な実施形態について説明したが、本発明は係る例に限定されない。当業者であれば、特許請求の範囲に記載された技術的思想の範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、それらについても当然に本発明の技術的範囲に属するものと了解される。
【０１４１】
例えば、前述した実施形態では、８連結のラベリング処理の場合について説明した。しかし、本実施形態は、第２の仮ラベリング処理のＳ２３８における連結関係の判定条件を変更することで、４連結のラベリング処理の場合についても同様に適用することができる。
【０１４２】
また、前述した実施形態では、画素配列の行方向にＰＬが設定される場合について説明した。しかし、本実施形態は、第１および第２の仮ラベリング処理、再ラベリング処理において、行方向および列方向の処理を相互に変更することで、画素配列の列方向にＰＬが設定される場合についても同様に適用することができる。
【図面の簡単な説明】
【０１４３】
【図１】本発明に係る画像処理方法が適用される画像処理装置の構成例を示すブロック図である。
【図２】１次元ＳＩＭＤ型プロセッサの構造例を示す説明図である。
【図３】本実施形態の説明に用いる入力画像を示す説明図である。
【図４】入力画像の画素ラインを示す説明図である。
【図５】第１の仮ラベリング処理の流れを示すフロー図である。
【図６】第１の仮ラベリング処理の過程（４列目の処理）を示す説明図である。
【図７】第１の仮ラベリング処理の過程（３列目の処理）を示す説明図である。
【図８】第１の仮ラベリング処理の過程（２列目の処理）を示す説明図である。
【図９】第１の仮ラベリング処理の過程（１列目の処理）を示す説明図である。
【図１０】第１の仮ラベリング処理の過程（０列目の処理）を示す説明図である。
【図１１】第２の仮ラベリング処理の流れを示すフロー図である。
【図１２】第２の仮ラベリング処理の流れを示すフロー図である。
【図１３】第２の仮ラベリング処理の流れを示すフロー図である。
【図１４】第２の仮ラベリング処理の過程（ＰＬ１の処理）を示す説明図である。
【図１５】第２の仮ラベリング処理の過程（ＰＬ２の処理）を示す説明図である。
【図１６】第２の仮ラベリング処理の過程（ＰＬ３の処理）を示す説明図である。
【図１７】第２の仮ラベリング処理の過程（ＰＬ３の処理）を示す説明図である。
【図１８】第２の仮ラベリング処理の過程（ＰＬ４の処理）を示す説明図である。
【図１９】第２の仮ラベリング処理の過程（仮ラベル変更処理）を示す説明図である。
【図２０】再ラベリング処理の流れを示すフロー図である。
【図２１】再ラベリング処理の過程（１列目）を示す説明図である。
【図２２】再ラベリング処理の過程（２列目）を示す説明図である。
【図２３】再ラベリング処理の過程（３列目）を示す説明図である。
【図２４】再ラベリング処理の過程（４列目）を示す説明図である。
【図２５】８連結のラベリング処理の概念を示す説明図である。
【符号の説明】
【０１４４】
１２    第１の仮ラベリング処理部
１４    第２の仮ラベリング処理部
１６    再ラベリング処理部
３０    入力画像
３２    入力画像の画素配列
【図１】
2009211331.tif 000003
【図２】
2009211331.tif 000004
【図３】
2009211331.tif 000005
【図５】
2009211331.tif 000006
【図１１】
2009211331.tif 000007
【図１２】
2009211331.tif 000008
【図１３】
2009211331.tif 000009
【図２０】
2009211331.tif 000010
【図２５】
2009211331.tif 000011
【図４】
2009211331.tif 000012
【図６】
2009211331.tif 000013
【図７】
2009211331.tif 000014
【図８】
2009211331.tif 000015
【図９】
2009211331.tif 000016
【図１０】
2009211331.tif 000017
【図１４】
2009211331.tif 000018
【図１５】
2009211331.tif 000019
【図１６】
2009211331.tif 000020
【図１７】
2009211331.tif 000021
【図１８】
2009211331.tif 000022
【図１９】
2009211331.tif 000023
【図２１】
2009211331.tif 000024
【図２２】
2009211331.tif 000025
【図２３】
2009211331.tif 000026
【図２４】
2009211331.tif 000027