(57)【要約】【課題】高いビットレートでのリアルタイム処理かつパイプライン処理が可能なラベリング処理方法を提供する。【解決手段】論理マスクが、ラベル画像のラベル値を表すラベル変数Ｘ，Ｙ，Ｚ，Ｕ，及びＰを含み、画素毎に、注目画素が位置する前記ラベル変数Ｐの画素値と、前記ラベル変数Ｐに接続する前記ラベル変数Ｘ，Ｙ，Ｚ，及びＵのラベル値と、ラベル間連結情報とに基づいて、前記ラベル変数Ｐ及びＺにラベル値を付与し、第１の配列にラベル間連結情報を記録する工程Ｓ１１と、ラベル値を付与する度に、前記注目画素が位置する行中に今後も出現するラベル値を、第２の配列に記録する工程Ｓ１２と、前記ラベル間連結情報及び前記第２の配列に記録されている情報に基づいて、同じ行中に出現した前記ラベル値のみを小さい順に統合する工程Ｓ１４と、前記第１の配列に記録されている前記ラベル間連結情報に基づいて前記ラベル値の変更を行う工程Ｓ１５とを含む。【選択図】図７
2011053965.tif 000002
【特許請求の範囲】
【請求項１】
演算部と記録部とを備えるシステムにおいて、前記記録部に記録されている画像データで表される入力画像に対して論理マスクをラスタ走査することにより、前記演算部が前記画像データのラベリング処理を行う方法であって、
前記論理マスクが、ラベル画像のラベル値を表す第１のラベル変数および第２のラベル変数を含み、前記第１のラベル変数が、前記入力画像内の注目画素が位置する点でのラベル変数であり、前記第２のラベル変数が、前記第１のラベル変数に接続する前記論理マスク内のラベル変数であり、前記第１のラベル変数の初期値が前記画像データの画素値であり、第１の配列が、前記第１のラベル変数と前記第２のラベル変数との間のラベル間連結情報を含み、
前記演算部が、前記画像データ内の画素毎に、前記第１のラベル変数の値と、前記第２のラベル変数のラベル値と、前記ラベル間連結情報とに基づいて、前記第１のラベル変数にラベル値を付与し、前記第１の配列に前記ラベル間連結情報を記録し、前記第１のラベル変数にラベル値を付与する度に、前記注目画素が位置する同じ行中に出現した前記ラベル値のうち、今後も出現する可能性のあるラベル値を、第２の配列に記録することを、前記注目画素が前記入力画像内の行中の最後の画素に達するまで繰り返し実行する第１のステップと、
前記演算部が、前記注目画素が前記入力画像内の行中の最後の画素である場合に、前記ラベル間連結情報および前記第２の配列に記録されている情報に基づいて、同じ行中に出現した前記ラベル値のみを小さい順に統合する第２のステップと、
前記演算部が、前記注目画素が位置する行が、前記入力画像内の最後の行である場合に、前記第１の配列に記録されている前記ラベル間連結情報に基づいて前記ラベル値の変更を行う第３のステップとを含むことを特徴とするラベリング処理方法。
【請求項２】
前記第１のラベル変数がラベル変数Ｐであり、前記第２のラベル変数がラベル変数Ｘ，Ｙ，Ｚ，およびＵを含み、前記ラベル変数Ｐが、前記ラベル変数Ｘ，Ｙ，Ｚ，およびＵの各々と、それぞれ左上、上、右上、および左の位置で接続し、
前記第１のステップが、次の（Ｃａｓｅ１）〜（Ｃａｓｅ８）に示す場合分け条件の基で前記ラベル変数Ｐおよび前記ラベル変数Ｚにラベル値を付与し、
（Ｃａｓｅ１）Ｐ＝０の場合
Ｚ←Ｚ＊を実行
（Ｃａｓｅ２）Ｐ≠０かつＹ≠０の場合
Ｐ←Ｙ，
Ｚ←Ｚ＊を実行
（Ｃａｓｅ３）Ｐ≠０かつＹ＝０かつＺ＝０かつＶ＝０の場合
Ｐ←ＬＣ，
Ｚ←０，
ＬＲＡＭ（ＬＣ）←ＬＣを実行
後処理に  ＬＣ←ＬＣ＋１  を実行
（Ｃａｓｅ４）Ｐ≠０かつＹ＝０かつＺ＝０かつＶ≠０の場合
Ｐ←Ｖ，
Ｚ←０を実行
（Ｃａｓｅ５）Ｐ≠０かつＹ＝０かつＺ≠０かつＶ≠０かつＺ＊＞Ｖの場合
Ｐ←Ｖ，
ＬＲＡＭ（Ｚ＊）←Ｖ，
Ｚ←Ｖを実行
（Ｃａｓｅ６）Ｐ≠０かつＹ＝０かつＺ≠０かつＶ≠０かつＺ＊＜Ｖの場合
Ｐ←Ｚ＊，
ＬＲＡＭ（Ｖ）←Ｚ＊，
Ｚ←Ｚ＊を実行
（Ｃａｓｅ７）Ｐ≠０かつＹ＝０かつＺ≠０かつＶ≠０かつＺ＊＝Ｖの場合
Ｐ←Ｖ，
Ｚ←Ｚ＊を実行
（Ｃａｓｅ８）Ｐ≠０かつＹ＝０かつＺ≠０かつＶ＝０の場合
Ｐ←Ｚ＊，
Ｚ←Ｚ＊を実行
ここで、前記第１の配列がＬＲＡＭであり、ラベルの個数を表す変数がＬＣであり、変数Ｖが、Ｖ＝Ｍａｘ｛Ｘ，Ｕ｝であり、変数Ｚ＊が、Ｚ＊＝ＬＲＡＭ（ＬＲＡＭ（Ｚ））であり、
前記第１のラベル変数にラベル値を付与する度に、次のサブステップ（ｓｓ２１）〜（ｓｓ２２）に示す処理を行い、
（ｓｓ２１）  行の開始直前、または前の行の終了後に
Ｒｏｗ＿Ｍａｘ←ＬＣを実行
（ｓｓ２２）  上記（Ｃａｓｅ２）から（Ｃａｓｅ８）の何れかに該当する場合にのみ次の処理を実行する
ｌａｂｅｌ＞＝Ｒｏｗ＿Ｍａｘの場合は
ｓｕｂ＿ＬＣ←ｓｕｂ＿ＬＣ＋１，
ｓｕｂ＿ＬＲＡＭ（ｓｕｂ＿ＬＣ）←ｌａｂｅｌ，
ｆｌａｇ（ｌａｂｅｌ）←１を実行
それ以外の場合は  ｆｌａｇ（ｌａｂｅｌ）←１  を実行
ここで、前記第２の配列がｓｕｂ＿ＬＲＡＭであり、変数ｌａｂｅｌが、注目画素に付与したラベル値であり、変数ｓｕｂ＿ＬＣは、前記第２の配列の添え字であり、変数Ｒｏｗ＿Ｍａｘが、行の先頭での変数ＬＣの値であり、ｆｌａｇが、同じ行中に新たなラベル値が出現したか否かを判断するための第３の配列であり、
前記第２のステップが、次のサブステップ（ｓｓ３１）〜（ｓｓ３４）に示す処理を行い、
（ｓｓ３１）  ｌ←１，ｍ←０を実行
（ｓｓ３２）  ｋ←ｓｕｂ＿ＬＲＡＭ（ｌ），
ＬＲＡＭ（ｋ）←ＬＲＡＭ（ＬＲＡＭ（ｋ））を実行
ｋ＝ＬＲＡＭ（ｋ）かつｆｌａｇ（ｋ）＝１の場合はさらに
ｍ←ｍ＋１，
ｓｕｂ＿ＬＲＡＭ（ｍ）←ｋ，
ｆｌａｇ（ｋ）←０を実行
（ｓｓ３３）  ｌ←ｌ＋１を実行
（ｓｓ３４）  ｌ＜＝ｓｕｂ＿ＬＣの場合はサブステップ（ｓｓ３２）を実行
それ以外の場合はｓｕｂ＿ＬＣ←ｍを実行
ここで、変数ｌおよび変数ｍが一時変数であり、変数ｋが、前記第１の配列の添え字であり、
前記第３のステップが、次のサブステップ（ｓｓ４１）〜（ｓｓ４６）に示す処理を行い、
（ｓｓ４１）  ｋ←１，ｊ←１を実行
（ｓｓ４２）  ＬＲＡＭ（ｋ）＝ｋの場合はサブステップ（ｓｓ４３）を実行
それ以外の場合はサブステップ（ｓｓ４４）を実行
（ｓｓ４３）  ＬＲＡＭ（ｋ）←ｊを実行
後処理に  ｊ←ｊ＋１  を実行し、サブステップ（ｓｓ４５）を実行
（ｓｓ４４）  ＬＲＡＭ（ｋ）←ＬＲＡＭ（ＬＲＡＭ（ｋ））を実行
（ｓｓ４５）  ｋ←ｋ＋１を実行
（ｓｓ４６）  ｋ≦ＮＤの場合はサブステップ（ｓｓ４２）を実行
それ以外の場合は終了
ここで、定数ＮＤが、入力画像内に出現した最大ラベル数であり、変数ｊがラベル値であることを特徴とする請求項１に記載のラベリング処理方法。
【請求項３】
演算部と記録部とを備え、前記記録部に記録されている画像データで表される入力画像に対して論理マスクをラスタ走査することにより、前記演算部が前記画像データのラベリング処理を行うシステムであって、
前記論理マスクが、ラベル画像のラベル値を表す第１のラベル変数および第２のラベル変数を含み、前記第１のラベル変数が、前記入力画像内の注目画素が位置する点でのラベル変数であり、前記第２のラベル変数が、前記第１のラベル変数に接続する前記論理マスク内のラベル変数であり、前記第１のラベル変数の初期値が前記画像データの画素値であり、第１の配列が、前記第１のラベル変数と前記第２のラベル変数との間のラベル間連結情報を含み、
前記演算部が、
前記画像データ内の画素毎に、前記第１のラベル変数の値と、前記第２のラベル変数のラベル値と、前記ラベル間連結情報とに基づいて、前記第１のラベル変数にラベル値を付与し、前記第１の配列に前記ラベル間連結情報を記録し、前記第１のラベル変数にラベル値を付与する度に、前記注目画素が位置する同じ行中に出現した前記ラベル値のうち、今後も出現する可能性のあるラベル値を、第２の配列に記録することを、前記注目画素が前記入力画像内の行中の最後の画素に達するまで繰り返し実行し、
前記注目画素が前記入力画像内の行中の最後の画素である場合に、前記ラベル間連結情報および前記第２の配列に記録されている情報に基づいて、同じ行中に出現した前記ラベル値のみを小さい順に統合し、
前記注目画素が位置する行が、前記入力画像内の最後の行である場合に、前記第１の配列に記録されている前記ラベル間連結情報に基づいて前記ラベル値の変更を行うことを特徴とするラベリング処理システム。
【請求項４】
ラベル付け論理回路と、ラベル統合回路と、ラインバッファと、画像メモリとを備え、画像データで表される入力画像に対して論理マスクをラスタ走査することにより、前記画像データのラベリング処理を行う装置であって、
前記論理マスクが、ラベル画像のラベル値を表す第１のラベル変数および第２のラベル変数を含み、前記第１のラベル変数が、前記入力画像内の注目画素が位置する点でのラベル変数であり、前記第２のラベル変数が、前記第１のラベル変数に接続する前記論理マスク内のラベル変数であり、前記第１のラベル変数の初期値が前記画像データの画素値であり、第１の配列が、前記第１のラベル変数と前記第２のラベル変数との間のラベル間連結情報を含み、
前記ラベル付け論理回路が、前記画像データ内の画素毎に、前記第１のラベル変数の値と、前記第２のラベル変数のラベル値と、前記ラベル間連結情報とに基づいて、前記第１のラベル変数にラベル値を付与し、前記第１の配列に前記ラベル間連結情報を記録し、前記ラベル付け論理回路が、前記第１のラベル変数にラベル値を付与する度に、前記注目画素が位置する同じ行中に出現した前記ラベル値のうち、今後も出現する可能性のあるラベル値を、第２の配列に記録することを、前記注目画素が前記入力画像内の行中の最後の画素に達するまで繰り返し実行し、
前記ラベル統合回路が、前記注目画素が前記入力画像内の行中の最後の画素である場合に、前記ラベル間連結情報および前記第２の配列に記録されている情報に基づいて、同じ行中に出現した前記ラベル値のみを小さい順に統合し、
前記ラベル統合回路が、前記注目画素が位置する行が、前記入力画像内の最後の行である場合に、前記第１の配列に記録されている前記ラベル間連結情報に基づいて前記ラベル値の変更を行うことを特徴とするラベリング処理装置。
【請求項５】
コンピュータに画像データのラベリング処理を行わせるプログラムであって、
論理マスクが、ラベル画像のラベル値を表す第１のラベル変数および第２のラベル変数を含み、前記第１のラベル変数が、入力画像内の注目画素が位置する点でのラベル変数であり、前記第２のラベル変数が、前記第１のラベル変数に接続する前記論理マスク内のラベル変数であり、前記第１のラベル変数の初期値が前記画像データの画素値であり、第１の配列が、前記第１のラベル変数と前記第２のラベル変数との間のラベル間連結情報を含み、
コンピュータに、
前記画像データ内の画素毎に、前記第１のラベル変数の値と、前記第２のラベル変数のラベル値と、前記ラベル間連結情報とに基づいて、前記第１のラベル変数にラベル値を付与し、前記第１の配列に前記ラベル間連結情報を記録し、前記第１のラベル変数にラベル値を付与する度に、前記注目画素が位置する同じ行中に出現した前記ラベル値のうち、今後も出現する可能性のあるラベル値を、第２の配列に記録することを、前記注目画素が前記入力画像内の行中の最後の画素に達するまで繰り返し実行する第１の機能と、
前記注目画素が前記入力画像内の行中の最後の画素である場合に、前記ラベル間連結情報および前記第２の配列に記録されている情報に基づいて、同じ行中に出現した前記ラベル値のみを小さい順に統合する第２の機能と、
前記注目画素が位置する行が、前記入力画像内の最後の行である場合に、前記第１の配列に記録されている前記ラベル間連結情報に基づいて前記ラベル値の変更を行う第３の機能とを実現させることを特徴とするラベリング処理プログラム。
【請求項６】
演算部と記録部とを備えるシステムにおいて、前記記録部に記録されている画像データで表される入力画像に対して論理マスクをラスタ走査することにより、前記演算部が前記画像データのラベリング処理を行う方法であって、
前記論理マスクが第１の階層と第２の階層とを含む２階層の論理マスクであり、前記第１の階層が、ラベル画像の実ラベル値を表す第１のラベル変数および第２のラベル変数を含み、前記第２の階層が、左端点ラベル値を表す第３のラベル変数および第４のラベル変数を含み、前記第１のラベル変数が、前記入力画像内の注目画素が位置する点でのラベル変数であり、前記第２のラベル変数が、前記第１のラベル変数に接続する前記論理マスク内のラベル変数であり、前記第１のラベル変数の初期値が前記画像データの画素値であり、前記第３のラベル変数および前記第４のラベル変数の各々が、前記第１のラベル変数および前記第２のラベル変数の各々の位置に対応し、
第１の配列が、前記第１のラベル変数と前記第２のラベル変数との間の実ラベルの第１のラベル間連結情報を含み、第２の配列が、前記第３のラベル変数と前記第４のラベル変数との間の左端点ラベルの第２のラベル間連結情報を含み、第３の配列が、左端点ラベルと結合する実ラベルの最小値を含み、
前記演算部が、前記画像データ内の画素毎に、前記第１のラベル変数の値と、前記第４のラベル変数の左端点ラベル値と、前記第１のラベル間連結情報と、前記第２のラベル間連結情報と、前記実ラベルの最小値とに基づいて、前記第１のラベル変数に実ラベル値を付与し、且つ、前記第３のラベル変数に左端点ラベル値を付与し、前記第１の配列、前記第２の配列、および前記第３の配列の各々に、第１のラベル間連結情報、第２のラベル間連結情報、および実ラベルの最小値を各々記録することを、前記入力画像内の全ての画素に対して実行し、前記ラベル画像全体における前記実ラベル値と、前記注目画素が位置する行および前記注目画素が位置する１つ前の行の２行のみにおいて有効な前記左端点ラベル値との２重対を管理する第１のステップと、
前記演算部が、前記第１の配列に記録されている前記第１のラベル間連結情報に基づいて前記実ラベル値の変更を行う第２のステップとを含むことを特徴とするラベリング処理方法。
【請求項７】
前記第１のラベル変数がラベル変数Ｐであり、前記第２のラベル変数がラベル変数Ｘ，Ｙ，Ｚ，およびＵを含み、前記ラベル変数Ｐが、前記ラベル変数Ｘ，Ｙ，Ｚ，およびＵの各々と、それぞれ左上、上、右上、および左の位置で接続し、前記第３のラベル変数が左端点ラベル変数Ｐ＋であり、前記第４のラベル変数が左端点ラベル変数Ｘ＋，Ｙ＋，Ｚ＋，およびＵ＋を含み、前記左端点ラベル変数Ｐ＋が、前記左端点ラベル変数Ｘ＋，Ｙ＋，Ｚ＋，およびＵ＋の各々と、それぞれ左上、上、右上、および左の位置で接続し、
前記第１のステップが、次の（Ｃａｓｅ１）〜（Ｃａｓｅ１２）に示す場合分け条件の基で前記ラベル変数Ｐおよび前記ラベル変数Ｚにラベル値を付与し、且つ、前記左端点ラベル変数Ｐ＋および前記左端点ラベル変数Ｚ＋に左端点ラベル値を付与し、
（Ｃａｓｅ１）Ｐ＝０かつＺ＋≠０の場合
ＬＥＰＴ（Ｚ＋）←（Ｚ＋）＊，
ＬＥＰＴ＿ＭＩＮ（Ｚ＋）←Ｌｍｉｎ（Ｚ＋），
Ｚｖｅｃｔｏｒ←［（Ｚ＋）＊，Ｌｍｉｎ（Ｚ＋）］Ｔを実行
（Ｃａｓｅ２）Ｐ≠０かつＶ＋＝０かつＹ＋＝０かつＺ＋＝０の場合
Ｐｖｅｃｔｏｒ←［ＬＬＣ，ＬＣ］Ｔ，
ＬＥＰＴ（ＬＬＣ）←ＬＬＣ，
ＬＥＰＴ＿ＭＩＮ（ＬＬＣ）←ＬＣ，
ＬＲＡＭ（ＬＣ）←ＬＣを実行
後処理に  （ＬＬＣ＋＋，ＬＣ＋＋）  を実行
（Ｃａｓｅ３）Ｐ≠０かつＹ＋≠０かつｓｉｇｎ（Ｙ＋）＝ｓｉｇｎ（Ｒｏｗ）の場合
Ｐｖｅｃｔｏｒ←Ｙｖｅｃｔｏｒを実行
さらに（Ｚ＋≠０）の場合は  Ｚｖｅｃｔｏｒ←［（Ｚ＋）＊，Ｌｍｉｎ（Ｚ＋）］Ｔ  を実行
（Ｃａｓｅ４）Ｐ≠０かつＹ＋≠０かつｓｉｇｎ（Ｙ＋）≠ｓｉｇｎ（Ｒｏｗ）の場合
Ｐｖｅｃｔｏｒ←［ＬＬＣ，Ｙ］Ｔ，
ＬＥＰＴ（ＬＬＣ）←ＬＬＣ，
ＬＥＰＴ＿ＭＩＮ（ＬＬＣ）←Ｙ，
ＬＥＰＴ（Ｙ＋）←ＬＬＣを実行
後処理に  ＬＬＣ＋＋  を実行
さらに（Ｚ＋≠０）の場合は  Ｚｖｅｃｔｏｒ←［（Ｚ＋）＊，Ｌｍｉｎ（Ｚ＋）］Ｔ  を実行
（Ｃａｓｅ５）Ｐ≠０かつＹ＋＝０かつＶ＋≠０かつＺ＋＝０かつｓｉｇｎ（Ｖ＋）＝ｓｉｇｎ（Ｒｏｗ）の場合
Ｐｖｅｃｔｏｒ←Ｖｖｅｃｔｏｒを実行
（Ｃａｓｅ６）Ｐ≠０かつＹ＋＝０かつＶ＋≠０かつＺ＋＝０かつｓｉｇｎ（Ｖ＋）≠ｓｉｇｎ（Ｒｏｗ）の場合
Ｐｖｅｃｔｏｒ←［ＬＬＣ，Ｖ］Ｔ，
ＬＥＰＴ（ＬＬＣ）←ＬＬＣ，
ＬＥＰＴ＿ＭＩＮ（ＬＬＣ）←Ｖ，
ＬＥＰＴ（Ｖ＋）←ＬＬＣを実行
後処理に  ＬＬＣ＋＋  を実行
（Ｃａｓｅ７）Ｐ≠０かつＺ＋≠０かつＹ＋＝０かつＶ＋＝０かつｓｉｇｎ（（Ｚ＋）＊）＝ｓｉｇｎ（Ｒｏｗ）の場合
Ｐｖｅｃｔｏｒ←［（Ｚ＋）＊，Ｌｍｉｎ（Ｚ＋）］Ｔ，
Ｚｖｅｃｔｏｒ←［（Ｚ＋）＊，Ｌｍｉｎ（Ｚ＋）］Ｔを実行
（Ｃａｓｅ８）Ｐ≠０かつＺ＋≠０かつＹ＋＝０かつＶ＋＝０かつｓｉｇｎ（（Ｚ＋）＊）≠ｓｉｇｎ（Ｒｏｗ）の場合
Ｐｖｅｃｔｏｒ←［ＬＬＣ，Ｌｍｉｎ（Ｚ＋）］Ｔ，
Ｚｖｅｃｔｏｒ←［ＬＬＣ，Ｌｍｉｎ（Ｚ＋）］Ｔ，
ＬＥＰＴ（ＬＬＣ）←ＬＬＣ，
ＬＥＰＴ＿ＭＩＮ（ＬＬＣ）←Ｌｍｉｎ（Ｚ＋），
ＬＥＰＴ（（Ｚ＋）＊）←ＬＬＣを実行
後処理に  ＬＬＣ＋＋  を実行
（Ｃａｓｅ９）Ｐ≠０かつＶ＋≠０かつＺ＋≠０かつＹ＋＝０かつｓｉｇｎ（Ｖ＋）＝ｓｉｇｎ（Ｒｏｗ）かつｓｉｇｎ（（Ｚ＋）＊）＝ｓｉｇｎ（Ｒｏｗ）の場合
Ｐｖｅｃｔｏｒ←［（Ｚ＋）＊，Ｌｍｉｎ（Ｚ＋）］Ｔ，
Ｚｖｅｃｔｏｒ←［（Ｚ＋）＊，Ｌｍｉｎ（Ｚ＋）］Ｔ，
ＬＥＰＴ（Ｖ＋）←（Ｚ＋）＊，
ＬＥＰＴ＿ＭＩＮ（Ｖ＋）←Ｌｍｉｎ（Ｚ＋），
ＬＲＡＭ（Ｖ）←Ｌｍｉｎ（Ｚ＋）を実行
（Ｃａｓｅ１０）Ｐ≠０かつＶ＋≠０かつＺ＋≠０かつＹ＋＝０かつｓｉｇｎ（Ｖ＋）＝ｓｉｇｎ（Ｒｏｗ）かつｓｉｇｎ（（Ｚ＋）＊）≠ｓｉｇｎ（Ｒｏｗ）の場合
（ａ）Ｖ≧Ｌｍｉｎ（Ｚ＋）の場合
Ｐｖｅｃｔｏｒ←［Ｖ＋，Ｌｍｉｎ（Ｚ＋）］Ｔ，
Ｚｖｅｃｔｏｒ←［Ｖ＋，Ｌｍｉｎ（Ｚ＋）］Ｔ，
ＬＥＰＴ（（Ｚ＋）＊）←Ｖ＋，
ＬＥＰＴ＿ＭＩＮ（Ｖ＋）←Ｌｍｉｎ（Ｚ＋），
ＬＲＡＭ（Ｖ）←Ｌｍｉｎ（Ｚ＋）を実行
（ｂ）Ｖ＜Ｌｍｉｎ（Ｚ＋）の場合
Ｐｖｅｃｔｏｒ←［Ｖ＋，Ｖ］Ｔ，
Ｚｖｅｃｔｏｒ←［Ｖ＋，Ｖ］Ｔ，
ＬＥＰＴ（（Ｚ＋）＊）←Ｖ＋，
ＬＥＰＴ＿ＭＩＮ（（Ｚ＋）＊）←Ｖ，
ＬＲＡＭ（Ｌｍｉｎ（Ｚ＋））←Ｖを実行
（Ｃａｓｅ１１）Ｐ≠０かつＶ＋≠０かつＺ＋≠０かつＹ＋＝０かつｓｉｇｎ（Ｖ＋）≠ｓｉｇｎ（Ｒｏｗ）かつｓｉｇｎ（（Ｚ＋）＊）＝ｓｉｇｎ（Ｒｏｗ）の場合
Ｐｖｅｃｔｏｒ←［（Ｚ＋）＊，Ｌｍｉｎ（Ｚ＋）］Ｔ，
Ｚｖｅｃｔｏｒ←［（Ｚ＋）＊，Ｌｍｉｎ（Ｚ＋）］Ｔ，
ＬＥＰＴ（Ｖ＋）←（Ｚ＋）＊，
ＬＥＰＴ＿ＭＩＮ（Ｖ＋）←Ｌｍｉｎ（Ｚ＋），
ＬＲＡＭ（Ｖ）←Ｌｍｉｎ（Ｚ＋）を実行
（Ｃａｓｅ１２）Ｐ≠０かつＶ＋≠０かつＺ＋≠０かつＹ＋＝０かつｓｉｇｎ（Ｖ＋）≠ｓｉｇｎ（Ｒｏｗ）かつｓｉｇｎ（（Ｚ＋）＊）≠ｓｉｇｎ（Ｒｏｗ）の場合
（ａ）Ｖ≧Ｌｍｉｎ（Ｚ＋）の場合
Ｐｖｅｃｔｏｒ←［ＬＬＣ，Ｌｍｉｎ（Ｚ＋）］Ｔ，
Ｚｖｅｃｔｏｒ←［ＬＬＣ，Ｌｍｉｎ（Ｚ＋）］Ｔ，
ＬＥＰＴ（ＬＬＣ）←ＬＬＣ，
ＬＥＰＴ＿ＭＩＮ（ＬＬＣ）←Ｌｍｉｎ（Ｚ＋），
ＬＥＰＴ（Ｖ＋）←ＬＬＣ，
ＬＥＰＴ（（Ｚ＋）＊）←ＬＬＣ，
ＬＲＡＭ（Ｖ）←Ｌｍｉｎ（Ｚ＋）を実行
後処理に  ＬＬＣ＋＋  を実行
（ｂ）Ｖ＜Ｌｍｉｎ（Ｚ＋）の場合
Ｐｖｅｃｔｏｒ←［ＬＬＣ，Ｖ］Ｔ，
Ｚｖｅｃｔｏｒ←［ＬＬＣ，Ｖ］Ｔ，
ＬＥＰＴ（ＬＬＣ）←ＬＬＣ，
ＬＥＰＴ＿ＭＩＮ（ＬＬＣ）←Ｖ，
ＬＥＰＴ（Ｖ＋）←ＬＬＣ，
ＬＥＰＴ（（Ｚ＋）＊）←ＬＬＣ，
ＬＥＰＴ＿ＭＩＮ（（Ｚ＋）＊）←Ｖ，
ＬＲＡＭ（Ｌｍｉｎ（Ｚ＋））←Ｖ
後処理に  ＬＬＣ＋＋  を実行
ここで、前記第１の配列がＬＲＡＭであり、前記第２の配列がＬＥＰＴであり、前記第３の配列がＬＥＰＴ＿ＭＩＮであり、実ラベルの個数を表す変数がＬＣであり、左端点ラベルの個数を表す変数がＬＬＣであり、変数Ｖが、Ｖ＝Ｍａｘ｛Ｘ，Ｕ｝であり、変数（Ｚ＋）＊が（Ｚ＋）＊＝ＬＥＰＴ（ＬＥＰＴ（Ｚ＋））であり、変数Ｌｍｉｎ（Ｚ＋）がＬｍｉｎ（Ｚ＋）＝ＬＥＰＴ＿ＭＩＮ（ＬＥＰＴ（Ｚ＋））であり、変数Ｖ＋がＶ＋＝（（Ｕ≠０かつＸ≠０のとき）Ｕ＋，（Ｕ≠０かつＸ＝０のとき）Ｕ＋，（Ｕ＝０かつＸ≠０のとき）Ｘ＋，（Ｕ＝０かつＸ＝０のとき）０）であり、ｓｉｇｎ（Ｘ＋）は、左端点ラベル変数Ｘ＋の符号を表し、ｓｉｇｎ（Ｒｏｗ）は現在行の符号を表し、
前記第２のステップが、次のサブステップ（ｓｓ２１）〜（ｓｓ２６）に示す処理を行い、
（ｓｓ２１）  ｋ←１，ｊ←１
（ｓｓ２２）  ＬＲＡＭ（ｋ）＝ｋの場合はサブステップ（ｓｓ２３）を実行、それ以外の場合はサブステップ（ｓｓ２４）を実行
（ｓｓ２３）  ＬＲＡＭ（ｋ）←ｊ
後処理に  ｊ←ｊ＋１  を実行し、サブステップ（ｓｓ２５）を実行
（ｓｓ２４）  ＬＲＡＭ（ｋ）←ＬＲＡＭ（ＬＲＡＭ（ｋ））
（ｓｓ２５）  ｋ←ｋ＋１
（ｓｓ２６）  ｋ≦ＮＤの場合はサブステップ（ｓｓ２２）を実行、それ以外の場合は終了
ここで、定数ＮＤが、入力画像内に出現した最大ラベル数であり、変数ｊがラベル値であり、変数ｋが、前記第１の配列の添え字であることを特徴とする請求項６に記載のラベリング処理方法。
【請求項８】
演算部と記録部とを備え、前記記録部に記録されている画像データで表される入力画像に対して論理マスクをラスタ走査することにより、前記演算部が前記画像データのラベリング処理を行うシステムであって、
前記論理マスクが第１の階層と第２の階層とを含む２階層の論理マスクであり、前記第１の階層が、ラベル画像の実ラベル値を表す第１のラベル変数および第２のラベル変数を含み、前記第２の階層が、左端点ラベル値を表す第３のラベル変数および第４のラベル変数を含み、前記第１のラベル変数が、前記入力画像内の注目画素が位置する点でのラベル変数であり、前記第２のラベル変数が、前記第１のラベル変数に接続する前記論理マスク内のラベル変数であり、前記第１のラベル変数の初期値が前記画像データの画素値であり、前記第３のラベル変数および前記第４のラベル変数の各々が、前記第１のラベル変数および前記第２のラベル変数の各々の位置に対応し、
第１の配列が、前記第１のラベル変数と前記第２のラベル変数との間の実ラベルの第１のラベル間連結情報を含み、第２の配列が、前記第３のラベル変数と前記第４のラベル変数との間の左端点ラベルの第２のラベル間連結情報を含み、第３の配列が、左端点ラベルと結合する実ラベルの最小値を含み、
前記演算部が、
前記画像データ内の画素毎に、前記第１のラベル変数の値と、前記第４のラベル変数の左端点ラベル値と、前記第１のラベル間連結情報と、前記第２のラベル間連結情報と、前記実ラベルの最小値とに基づいて、前記第１のラベル変数に実ラベル値を付与し、且つ、前記第３のラベル変数に左端点ラベル値を付与し、前記第１の配列、前記第２の配列、および前記第３の配列の各々に、第１のラベル間連結情報、第２のラベル間連結情報、および実ラベルの最小値を各々記録することを、前記入力画像内の全ての画素に対して実行し、前記ラベル画像全体における前記実ラベル値と、前記注目画素が位置する行および前記注目画素が位置する１つ前の行の２行のみにおいて有効な前記左端点ラベル値との２重対を管理し、
前記第１の配列に記録されている前記第１のラベル間連結情報に基づいて前記実ラベル値の変更を行うことを特徴とするラベリング処理システム。
【請求項９】
ラベル付け論理回路と、ラベル統合回路と、ラインバッファと、画像メモリとを備え、画像データで表される入力画像に対して論理マスクをラスタ走査することにより、前記画像データのラベリング処理を行う装置であって、
前記論理マスクが第１の階層と第２の階層とを含む２階層の論理マスクであり、前記第１の階層が、ラベル画像の実ラベル値を表す第１のラベル変数および第２のラベル変数を含み、前記第２の階層が、左端点ラベル値を表す第３のラベル変数および第４のラベル変数を含み、前記第１のラベル変数が、前記入力画像内の注目画素が位置する点でのラベル変数であり、前記第２のラベル変数が、前記第１のラベル変数に接続する前記論理マスク内のラベル変数であり、前記第１のラベル変数の初期値が前記画像データの画素値であり、前記第３のラベル変数および前記第４のラベル変数の各々が、前記第１のラベル変数および前記第２のラベル変数の各々の位置に対応し、
第１の配列が、前記第１のラベル変数と前記第２のラベル変数との間の実ラベルの第１のラベル間連結情報を含み、第２の配列が、前記第３のラベル変数と前記第４のラベル変数との間の左端点ラベルの第２のラベル間連結情報を含み、第３の配列が、左端点ラベルと結合する実ラベルの最小値を含み、
前記ラベル付け論理回路が、前記画像データ内の画素毎に、前記第１のラベル変数の値と、前記第４のラベル変数の左端点ラベル値と、前記第１のラベル間連結情報と、前記第２のラベル間連結情報と、前記実ラベルの最小値とに基づいて、前記第１のラベル変数に実ラベル値を付与し、且つ、前記第３のラベル変数に左端点ラベル値を付与し、前記第１の配列、前記第２の配列、および前記第３の配列の各々に、第１のラベル間連結情報、第２のラベル間連結情報、および実ラベルの最小値を各々記録することを、前記入力画像内の全ての画素に対して実行し、前記ラベル画像全体における前記実ラベル値と、前記注目画素が位置する行および前記注目画素が位置する１つ前の行の２行のみにおいて有効な前記左端点ラベル値との２重対を管理し、
前記ラベル統合回路が、前記第１の配列に記録されている前記第１のラベル間連結情報に基づいて前記実ラベル値の変更を行うことを特徴とするラベリング処理装置。
【請求項１０】
コンピュータに画像データのラベリング処理を行わせるプログラムであって、
論理マスクが第１の階層と第２の階層とを含む２階層の論理マスクであり、前記第１の階層が、ラベル画像の実ラベル値を表す第１のラベル変数および第２のラベル変数を含み、前記第２の階層が、左端点ラベル値を表す第３のラベル変数および第４のラベル変数を含み、前記第１のラベル変数が、入力画像内の注目画素が位置する点でのラベル変数であり、前記第２のラベル変数が、前記第１のラベル変数に接続する前記論理マスク内のラベル変数であり、前記第１のラベル変数の初期値が前記画像データの画素値であり、前記第３のラベル変数および前記第４のラベル変数の各々が、前記第１のラベル変数および前記第２のラベル変数の各々の位置に対応し、
第１の配列が、前記第１のラベル変数と前記第２のラベル変数との間の実ラベルの第１のラベル間連結情報を含み、第２の配列が、前記第３のラベル変数と前記第４のラベル変数との間の左端点ラベルの第２のラベル間連結情報を含み、第３の配列が、左端点ラベルと結合する実ラベルの最小値を含み、
コンピュータに、
前記画像データ内の画素毎に、前記第１のラベル変数の値と、前記第４のラベル変数の左端点ラベル値と、前記第１のラベル間連結情報と、前記第２のラベル間連結情報と、前記実ラベルの最小値とに基づいて、前記第１のラベル変数に実ラベル値を付与し、且つ、前記第３のラベル変数に左端点ラベル値を付与し、前記第１の配列、前記第２の配列、および前記第３の配列の各々に、第１のラベル間連結情報、第２のラベル間連結情報、および実ラベルの最小値を各々記録することを、前記入力画像内の全ての画素に対して実行し、前記ラベル画像全体における前記実ラベル値と、前記注目画素が位置する行および前記注目画素が位置する１つ前の行の２行のみにおいて有効な前記左端点ラベル値との２重対を管理する第１の機能と、
前記第１の配列ＬＲＡＭに記録されている前記第１のラベル間連結情報に基づいて前記実ラベル値の変更を行う第２の機能とを実現させることを特徴とするラベリング処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はラベリング処理方法に関し、より詳細には、高いビットレートでのリアルタイム処理が可能であり、なおかつパイプライン処理が可能なラベリング処理方法、並びにそのシステム、装置及びプログラムに関する。
【背景技術】
【０００２】
工業製品の外観を検査する方法として、生産ライン上の製品の外観をテレビカメラで撮影し、撮影した画像をデジタル処理することにより、製品が不良品か否かを判別する方法が知られている。また、画像（白黒２値パターン）から連結領域を１つのまとまりとして認識し抽出する領域ラベリング処理は、デジタル画像処理分野における基本的な処理として知られており、画像処理を用いる外観検査装置においても、工業製品の撮影画像に対して領域ラベリング処理が行われている。
【０００３】
下記非特許文献１には、従来技術に係るラベリング処理方法が開示されている。非特許文献１に記載のラベリング処理方法によると、ラベル間の連結性の検出とラベルの付与とを行いながら、同時に１つ前の行のラベルを常に変更し、さらに、論理マスクが行の終わりに達する毎に、１次元配列形式のテーブルに記録しているラベル間の連結情報（以下、単にラベル間連結情報と記す）の統合処理を行毎に行うことにより、ハードウェアによるパイプライン処理が可能なラベリング処理を実現することができる。
【０００４】
図１は、従来技術に係るラベリング処理方法において行う画像のラスタ走査を説明する模式図である。図１に示すように、２値化（画素値が０または１）されている入力画像に対して、論理マスク１０８により画像１０９をラスタ走査しながら、連結性の検出とラベルの付与とを行い、ラベル画像（図示せず）を生成する。図１中に、ラスタ走査の走査方向を実線の矢印で記す。論理マスク１０８中のＸ，Ｙ，Ｚ，Ｕ，Ｐは、これらに位置が対応する画素でのラベル値を表す変数（以下、単にラベル変数と記す）である。ここで、ラベル変数Ｐの初期値は入力画像の画素値であり、ラベル変数Ｘ，Ｙ，Ｚ，Ｕの初期値は全て０である。画像１０９内においてラベル変数Ｐが位置する点が注目画素である。即ち、画像１０９をラスタ走査して注目画素がラスタ走査順の次の画素に移動する度に、注目画素には入力画像の画素値が入力され、注目画素に対応するラベル画像内の点に、ラベル値を出力する。画素毎に付与されたラベル値は、入力画像に対応するラベル画像を構成する。
【０００５】
また、ラベル間連結情報を記録するテーブルをＬＲＡＭ（Ｌｉｎｋａｇｅ  ＲＡＭ：１次元配列であり配列の初期値は全て０）とし、画像内のラベルの個数を表すラベルカウンタをＬＣ（初期値は１）とする。更に、変数Ｖおよび変数Ｚ＊を、それぞれ、Ｖ＝Ｍａｘ｛Ｘ，Ｕ｝、Ｚ＊＝ＬＲＡＭ（ＬＲＡＭ（Ｚ））と定義する。演算Ｖ＝Ｍａｘ｛Ｘ，Ｕ｝は、ラベル変数Ｘ，Ｕのうち、値が大きい方のラベル変数を変数Ｖに設定することを意味し、記号「←」は記号の右に記載した変数から記号の左に記載した変数への値の代入を意味するものとする。
【０００６】
以下の説明において、「連結」という用語は、上下左右と斜め方向に隣接する近傍も含めた「８連結」を意味し、ラベル値を「管理」するとは、複数のラベル値のデータを関連付けて記録または更新することを意味する。また、ラベル間連結情報とは、どのラベル値とどのラベル値とが連結しているのかを管理する情報を意味する。例えば、ラベル値「１」を有する領域とラベル値「２」を有する領域とが、或る点において連結する場合には、テーブルＬＲＡＭのアドレス「２」に値「１」を記録することで、ラベル値「２」を有する領域とラベル値「１」を有する領域とが連結していることを管理する。その後、ラベル間連結情報に基づいてラベル値の読み替えを行い、最終的には、これら２つの領域には１つのラベル値「１」を付与する。
【０００７】
図２は、従来技術に係るラベリング処理を示すフローチャートであり、図３は、従来技術に係るラベリング処理のデータフロー図である。以下、下記非特許文献１に記載の従来技術に係るラベリング処理について、図２に示すフローチャートおよび図３に示すデータフロー図に基づいて説明する。従来技術に係るラベリング処理の処理手順の概要を説明すると次の通りである。まず、１次ラベリングとして、画素毎の処理（Ｓ１）と、行毎の処理（Ｓ３）とを画像１０９内で連続して行い、その後、２次ラベリングとして画像毎の処理（Ｓ５）を行う。
【０００８】
１次ラベリング（Ｓ１〜Ｓ４）
ステップＳ１において、ラベル付けの処理を画素毎に行う。画素毎の処理では、ラベル変数Ｐの値（即ち、２値画像の画素値）と、ラベル変数Ｐに連結する論理マスク１０８中のラベル変数Ｘ，Ｙ，Ｚ，Ｕのラベル値とに基づいて、次の（Ｃａｓｅ１）〜（Ｃａｓｅ８）に示す場合分け条件の基でラベル変数ＰおよびＺにラベルを付与して１次ラベリング後のラベル画像を生成し、テーブルＬＲＡＭにラベル間連結情報を記録する。ここで、ラベル変数Ｐの１つ前の行に位置するラベル変数Ｚにラベル値を付与することで、現在行の１つ前の行のラベル値を書き直している。
（Ｃａｓｅ１）Ｐ＝０の場合
Ｚ←Ｚ＊を実行
（Ｃａｓｅ２）Ｐ≠０かつＹ≠０の場合
Ｐ←Ｙ，
Ｚ←Ｚ＊を実行
（Ｃａｓｅ３）Ｐ≠０かつＹ＝０かつＺ＝０かつＶ＝０の場合
Ｐ←ＬＣ，
Ｚ←０，
ＬＲＡＭ（ＬＣ）←ＬＣを実行
後処理に  ＬＣ←ＬＣ＋１  を実行
（Ｃａｓｅ４）Ｐ≠０かつＹ＝０かつＺ＝０かつＶ≠０の場合
Ｐ←Ｖ，
Ｚ←０を実行
（Ｃａｓｅ５）Ｐ≠０かつＹ＝０かつＺ≠０かつＶ≠０かつＺ＊＞Ｖの場合
Ｐ←Ｖ，
ＬＲＡＭ（Ｚ＊）←Ｖ，
Ｚ←Ｖを実行
（Ｃａｓｅ６）Ｐ≠０かつＹ＝０かつＺ≠０かつＶ≠０かつＺ＊＜Ｖの場合
Ｐ←Ｚ＊，
ＬＲＡＭ（Ｖ）←Ｚ＊，
Ｚ←Ｚ＊を実行
（Ｃａｓｅ７）Ｐ≠０かつＹ＝０かつＺ≠０かつＶ≠０かつＺ＊＝Ｖの場合
Ｐ←Ｖ，
Ｚ←Ｚ＊を実行
（Ｃａｓｅ８）Ｐ≠０かつＹ＝０かつＺ≠０かつＶ＝０の場合
Ｐ←Ｚ＊，
Ｚ←Ｚ＊を実行
ここで、Ｐ＝０であることから、（Ｃａｓｅ１）の場合分けは、注目画素に位置するラベル変数Ｐのラベル付けが不要であることを意味している。（Ｃａｓｅ２）の場合分けは、ラベル変数Ｐがラベル変数Ｙと連結し、ラベル変数Ｐにラベル変数Ｙと同じラベル値を付与することを意味している。（Ｃａｓｅ３）の場合分けは、注目画素の周囲に位置するラベル変数Ｚ，Ｙ，Ｚ，Ｕの値が全て０であることから、ラベル変数Ｐが周囲のどのラベル変数とも連結せずに、ラベル変数Ｐに新たなラベル値を付与することを意味している。（Ｃａｓｅ４）の場合分けは、ラベル変数Ｐがラベル変数ＸまたはＵと連結することを意味している。（Ｃａｓｅ５）〜（Ｃａｓｅ７）の場合分けは、ラベル変数Ｐが、ラベル変数Ｚとラベル変数ＸまたはＵとで連結することを意味しており、さらに変数Ｚ＊および変数Ｖを大小比較して、小さい方の値で更新を行うことを意味している。（Ｃａｓｅ８）の場合分けは、ラベル変数Ｐがラベル変数Ｚと連結することを意味している。
【０００９】
次に、ステップＳ２において、注目画素が行中の最後の画素であるか否かを判断する。最後の画素である場合はステップＳ３を実行し、そうでない場合は、図１に示すラスタ走査順の次の画素に対してステップＳ１を実行する。
【００１０】
ステップＳ３において、ラベル間連結情報の統合処理を行毎に行う。次のサブステップ（ｓｓ３１）〜（ｓｓ３４）に示す処理を行い、任意のラベルｋにおいてラベルｋと連結している一連のラベル中の最小ラベルを代表ラベル値として、ＬＲＡＭ（ｋ）の値とする。ここで、定数ＮＲは、対象となる行（現在行）内に出現した最大ラベル値（現在行内のラベルの最大値）であり、行単位で初期化（初期値は１）される。また、変数ｋはラベル値であり、１次元配列であるテーブルＬＲＡＭの添え字（アドレス）である。なお、ラベルｋが他のラベルと連結しない孤立したラベルである場合、まずＬＲＡＭ（ｋ）＝ｋであり、更にＬＲＡＭ（ＬＲＡＭ（ｋ））＝ｋであるので、ＬＲＡＭ（ｋ）の値は結果として変化せず不都合は生じない。
（ｓｓ３１）  ｋ←１を実行
（ｓｓ３２）  ＬＲＡＭ（ｋ）←ＬＲＡＭ（ＬＲＡＭ（ｋ））を実行
（ｓｓ３３）  ｋ←ｋ＋１を実行
（ｓｓ３４）  ｋ≦ＮＲの場合はサブステップ（ｓｓ３２）を実行
それ以外の場合は終了
次に、ステップＳ４において、注目画素が位置する行が、画像内の最後の行であるか否かを判断する。最後の行である場合はステップＳ５を実行し、そうでない場合は、図１に示すラスタ走査順の次の画素（即ち、次の行の最初の画素）に対してステップＳ１を実行する。
【００１１】
２次ラベリング（Ｓ５）
ステップＳ５において、連続したラベル値の付与処理を画像毎に行う。次のサブステップ（ｓｓ５１）〜（ｓｓ５６）に示す処理を行って、領域毎に付与したラベル値を連続した値に並び替えした後、もう１度画像１０９をラスタ走査しながら、テーブルＬＲＡＭに記録しておいたラベル間連結情報（ステップＳ３において行毎に統合処理済み）に基づいてラベル値の読み替えを行い、１つの連結領域には１つのラベルが付与されるようにする。即ち、サブステップ（ｓｓ５１）〜（ｓｓ５６）に示す処理により、テーブルＬＲＡＭに記録しておいたラベル値を連続した値に並び替えした後、１次ラベリング処理後のラベル画像のラベル値を画素単位で出力する際に、テーブルＬＲＡＭをルックアップテーブル方式で参照しながら、ラベル値を読み替えて２次ラベリング後のラベル画像として生成する。
【００１２】
ここで、定数ＮＤは画像内に出現した最大ラベル値（１次ラベリングにおいて仮に付与されたラベル（即ちダミーラベル）も含む）であり、画像毎に初期値１にリセットされる。定数ＮＤはラベルカウンタＬＣの値によって決まる。また、変数ｋは１次元配列であるテーブルＬＲＡＭの添え字（アドレス）であり、変数ｊはラベル値である。
（ｓｓ５１）  ｋ←１，ｊ←１を実行
（ｓｓ５２）  ＬＲＡＭ（ｋ）＝ｋの場合はサブステップ（ｓｓ５３）を実行
それ以外の場合はサブステップ（ｓｓ５４）を実行
（ｓｓ５３）  ＬＲＡＭ（ｋ）←ｊを実行
後処理に  ｊ←ｊ＋１  を実行し、サブステップ（ｓｓ５５）を実行
（ｓｓ５４）  ＬＲＡＭ（ｋ）←ＬＲＡＭ（ＬＲＡＭ（ｋ））を実行
（ｓｓ５５）  ｋ←ｋ＋１を実行
（ｓｓ５６）  ｋ≦ＮＤの場合はサブステップ（ｓｓ５２）を実行
それ以外の場合は終了
ステップＳ５の処理を終了すると、ラベリング処理を終了する。
【００１３】
ここで、従来技術に係るラベリング処理方法においては、２次ラベリングの処理をラベル間連結情報の統合処理後に行う必要はなく、ラベル間連結情報の統合処理と２次ラベリングとを同時並行して行うことができる。この理由は、もう一度画像１０９を上からラスタ走査するときに、ラベル値の小さい順にラベルが出現するからである。
【００１４】
図４は、従来技術に係るラベリング処理方法を行う電子回路基板（ラベリング処理装置）の概略構成の一例を示すブロック図であり、図５は、従来技術に係るラベリング処理方法を行う電子回路基板におけるパイプライン処理を説明するタイムチャートである。
【００１５】
図４に示すように、ラベリング処理装置１００は、１次ラベリング部Ａおよび２次ラベリング部Ｂの２つの基板から構成される。１次ラベリング部Ａは、ラベル付け論理回路１０１と、ラベル統合回路１０２と、１次ラベリング側のＬＲＡＭ１０３と、ラインバッファ１０４とを備え、２次ラベリング部Ｂは、画像メモリ１０５と、２次ラベリング側のＬＲＡＭ１０６とを備える。ＬＲＡＭ１０３およびＬＲＡＭ１０６は切替式のメモリである。１次ラベリング部Ａと２次ラベリング部Ｂとは２つのバスを介して結合される。即ち、１次ラベリングの結果であるラベル画像を画像メモリ１０５へ格納するためのバスＣと、統合したラベル間連結情報をＬＲＡＭ１０３からＬＲＡＭ１０６へ伝送するためのバスＤである。
【００１６】
１次ラベリング部Ａでは、ラベル付け論理回路１０１が、外部から入力される画像信号に対してラベル間の連結性の検出とラベルの付与とを行い、ラベル間連結情報を１次ラベリング側のＬＲＡＭ１０３に記録する。この際、１行分のラベル画像がラインバッファ１０４に蓄えられている。そして、ラベル統合回路１０２が、ＬＲＡＭ１０３内に記録されているラベル間連結情報に対して、行毎のラベル間連結情報の統合処理を行う。１次ラベリング部Ａにおいてラベル付けされた入力画像は、画像メモリ１０５に蓄えられて１画像分遅延される。入力画像の最終行が１次ラベリング部Ａを通過後、最終行でのＬＲＡＭ１０３内のラベル間連結情報の統合処理が行われ、同時に、統合されたラベル間連結情報が、２次ラベリング側のＬＲＡＭ１０６へ伝送される。その後、次の画像信号が入力されると、画像メモリ１０５内のラベル画像がＬＲＡＭ１０６を介して出力される。このとき、２次ラベリング部Ｂでは、１次ラベリングの処理で既にラベル付けされた画素値をアドレスとしてＬＲＡＭ１０６へアクセスして、ＬＲＡＭ１０６に記録されたラベル間連結情報に基づいてラベル値の読み替えを行い、読み替え後のラベル値を有するラベル画像を出力する。即ち、ＬＲＡＭ１０６が一種の濃度変換テーブルとして機能し、この変換により各連結領域が各々同一のラベル値となるようにする。一方、１次ラベリング部Ａでは、次の入力画像信号に対してラベル間の連結性の検出とラベルの付与とを行い、ＬＲＡＭ１０６へ伝送することにより空き領域となったＬＲＡＭ１０３に、ラベル間連結情報を記録する。
【００１７】
このように、連続して入力される画像信号に対して、１次ラベリング部Ａおよび２次ラベリング部Ｂにおいて行うラベリング処理は、同時並行して行われることが可能である。即ち、図５に示すように、従来技術に係る１次ラベリングの処理および２次ラベリングの処理は、連続して入力される画像に対してパイプライン処理が可能である。
【００１８】
また、付与するラベル値の大きさ（ビット数）は、入力画像の画素数により決定されるが、入力画像の画素数が例えば横５１２×縦５１２の画素数であれば、行毎に出現する最大のラベル値が２５６個であり、列についても同様であるので、ラベル値の大きさは、最大で横２５６×縦２５６＝６５５３６（即ち２バイト）の大きさであればよく、ラベル画像のメモリサイズ（バイト数）は、最大で横５１２×縦５１２×２バイト＝５１２キロバイト（ここで、１キロバイト＝１０２４バイトで計算）であればよい。
【先行技術文献】
【非特許文献】
【００１９】
【非特許文献１】服部哲郎，“パイプライン方式によるリアルタイムの領域ラベリング（Ｉ）−−基本アルゴリズムと正当性の証明−−”，電子情報通信学会・技術研究報告（ｖｏｌ．９３，Ｎｏ．２６８），ＰＲＵ９３−６２，ＨＣ９３−３６，ｐｐ．１−８，（１９９３−１０）
【発明の概要】
【発明が解決しようとする課題】
【００２０】
工業製品の外観検査を効率良く行うためには、生産ライン上を流れる製品の外観をリアルタイムで検査する必要がある。ここで、不良品の判別の精度および検査の処理能力の両方を向上させようとすると、単位時間あたりの画像の撮影枚数を増大させつつ、高い解像度の撮影画像に対してラベリング処理を行う必要がある。即ち、高いビットレートでのラベリング処理が必要となる。
【００２１】
しかしながら、従来技術に係るラベリング処理方法では、高精細画像（例えば、ハイビジョン（登録商標）画像）のような高解像度の画像に対しては、ラベル数の増大にラベリング処理が追いつかず、高いビットレートでのデジタル画像処理ができないという問題がある。しかも、従来では、ラベリング処理の対象は２値画像であったが、最近では、ラベリング処理の対象は高解像度の例えばグレースケール画像であるので、更に出現ラベルが増大し、それにより、従来技術に係るラベリング処理方法では、リアルタイムでのラベリング処理が実際上不可能であるという問題がある。さらに、従来提案されている他のラベリング処理方法であっても、ラスタ走査時に停留や逆戻りを行う処理方法であれば、ハードウェアによるパイプライン処理には適さないという問題がある。
【００２２】
本発明は、上記課題を解決するためになされたものであり、その目的は、テレビカメラから連続した映像信号として伝送されてくるデジタル画像に対して、高いビットレートでのリアルタイム処理が可能であり、なおかつパイプライン処理が可能なラベリング処理方法、並びにそのシステム、装置及びプログラムを提供することにある。
【課題を解決するための手段】
【００２３】
上記の課題を解決するために、本発明に係る第１のラベリング処理方法（１）は、演算部と記録部とを備えるシステムにおいて、前記記録部に記録されている画像データで表される入力画像に対して論理マスクをラスタ走査することにより、前記演算部が前記画像データのラベリング処理を行う方法であって、前記論理マスクが、ラベル画像のラベル値を表す第１のラベル変数および第２のラベル変数を含み、前記第１のラベル変数が、前記入力画像内の注目画素が位置する点でのラベル変数であり、前記第２のラベル変数が、前記第１のラベル変数に接続する前記論理マスク内のラベル変数であり、前記第１のラベル変数の初期値が前記画像データの画素値であり、第１の配列が、前記第１のラベル変数と前記第２のラベル変数との間のラベル間連結情報を含み、前記演算部が、前記画像データ内の画素毎に、前記第１のラベル変数の値と、前記第２のラベル変数のラベル値と、前記ラベル間連結情報とに基づいて、前記第１のラベル変数にラベル値を付与し、前記第１の配列に前記ラベル間連結情報を記録し、前記第１のラベル変数にラベル値を付与する度に、前記注目画素が位置する同じ行中に出現した前記ラベル値のうち、今後も出現する可能性のあるラベル値を、第２の配列に記録することを、前記注目画素が前記入力画像内の行中の最後の画素に達するまで繰り返し実行する第１のステップと、前記演算部が、前記注目画素が前記入力画像内の行中の最後の画素である場合に、前記ラベル間連結情報および前記第２の配列に記録されている情報に基づいて、同じ行中に出現した前記ラベル値のみを小さい順に統合する第２のステップと、前記演算部が、前記注目画素が位置する行が、前記入力画像内の最後の行である場合に、前記第１の配列に記録されている前記ラベル間連結情報に基づいて前記ラベル値の変更を行う第３のステップとを含むことを特徴とする。
【００２４】
また、本発明に係る第１のラベリング処理方法（２）は、第１のラベリング処理方法（１）において、前記第１のラベル変数がラベル変数Ｐであり、前記第２のラベル変数がラベル変数Ｘ，Ｙ，Ｚ，およびＵを含み、前記ラベル変数Ｐが、前記ラベル変数Ｘ，Ｙ，Ｚ，およびＵの各々と、それぞれ左上、上、右上、および左の位置で接続し、
前記第１のステップが、次の（Ｃａｓｅ１）〜（Ｃａｓｅ８）に示す場合分け条件の基で前記ラベル変数Ｐおよび前記ラベル変数Ｚにラベル値を付与し、
（Ｃａｓｅ１）Ｐ＝０の場合
Ｚ←Ｚ＊を実行
（Ｃａｓｅ２）Ｐ≠０かつＹ≠０の場合
Ｐ←Ｙ，
Ｚ←Ｚ＊を実行
（Ｃａｓｅ３）Ｐ≠０かつＹ＝０かつＺ＝０かつＶ＝０の場合
Ｐ←ＬＣ，
Ｚ←０，
ＬＲＡＭ（ＬＣ）←ＬＣを実行
後処理に  ＬＣ←ＬＣ＋１  を実行
（Ｃａｓｅ４）Ｐ≠０かつＹ＝０かつＺ＝０かつＶ≠０の場合
Ｐ←Ｖ，
Ｚ←０を実行
（Ｃａｓｅ５）Ｐ≠０かつＹ＝０かつＺ≠０かつＶ≠０かつＺ＊＞Ｖの場合
Ｐ←Ｖ，
ＬＲＡＭ（Ｚ＊）←Ｖ，
Ｚ←Ｖを実行
（Ｃａｓｅ６）Ｐ≠０かつＹ＝０かつＺ≠０かつＶ≠０かつＺ＊＜Ｖの場合
Ｐ←Ｚ＊，
ＬＲＡＭ（Ｖ）←Ｚ＊，
Ｚ←Ｚ＊を実行
（Ｃａｓｅ７）Ｐ≠０かつＹ＝０かつＺ≠０かつＶ≠０かつＺ＊＝Ｖの場合
Ｐ←Ｖ，
Ｚ←Ｚ＊を実行
（Ｃａｓｅ８）Ｐ≠０かつＹ＝０かつＺ≠０かつＶ＝０の場合
Ｐ←Ｚ＊，
Ｚ←Ｚ＊を実行
ここで、前記第１の配列がＬＲＡＭであり、ラベルの個数を表す変数がＬＣであり、変数Ｖが、Ｖ＝Ｍａｘ｛Ｘ，Ｕ｝であり、変数Ｚ＊が、Ｚ＊＝ＬＲＡＭ（ＬＲＡＭ（Ｚ））であり、
前記第１のラベル変数にラベル値を付与する度に、次のサブステップ（ｓｓ２１）〜（ｓｓ２２）に示す処理を行い、
（ｓｓ２１）  行の開始直前、または前の行の終了後に
Ｒｏｗ＿Ｍａｘ←ＬＣを実行
（ｓｓ２２）  上記（Ｃａｓｅ２）から（Ｃａｓｅ８）の何れかに該当する場合にのみ次の処理を実行する
ｌａｂｅｌ＞＝Ｒｏｗ＿Ｍａｘの場合は
ｓｕｂ＿ＬＣ←ｓｕｂ＿ＬＣ＋１，
ｓｕｂ＿ＬＲＡＭ（ｓｕｂ＿ＬＣ）←ｌａｂｅｌ，
ｆｌａｇ（ｌａｂｅｌ）←１を実行
それ以外の場合は  ｆｌａｇ（ｌａｂｅｌ）←１  を実行
ここで、前記第２の配列がｓｕｂ＿ＬＲＡＭであり、変数ｌａｂｅｌが、注目画素に付与したラベル値であり、変数ｓｕｂ＿ＬＣは、前記第２の配列の添え字であり、変数Ｒｏｗ＿Ｍａｘが、行の先頭での変数ＬＣの値であり、ｆｌａｇが、同じ行中に新たなラベル値が出現したか否かを判断するための第３の配列であり、
前記第２のステップが、次のサブステップ（ｓｓ３１）〜（ｓｓ３４）に示す処理を行い、
（ｓｓ３１）  ｌ←１，ｍ←０を実行
（ｓｓ３２）  ｋ←ｓｕｂ＿ＬＲＡＭ（ｌ），
ＬＲＡＭ（ｋ）←ＬＲＡＭ（ＬＲＡＭ（ｋ））を実行
ｋ＝ＬＲＡＭ（ｋ）かつｆｌａｇ（ｋ）＝１の場合はさらに
ｍ←ｍ＋１，
ｓｕｂ＿ＬＲＡＭ（ｍ）←ｋ，
ｆｌａｇ（ｋ）←０を実行
（ｓｓ３３）  ｌ←ｌ＋１を実行
（ｓｓ３４）  ｌ＜＝ｓｕｂ＿ＬＣの場合はサブステップ（ｓｓ３２）を実行
それ以外の場合はｓｕｂ＿ＬＣ←ｍを実行
ここで、変数ｌおよび変数ｍが一時変数であり、変数ｋが、前記第１の配列の添え字であり、
前記第３のステップが、次のサブステップ（ｓｓ４１）〜（ｓｓ４６）に示す処理を行い、
（ｓｓ４１）  ｋ←１，ｊ←１を実行
（ｓｓ４２）  ＬＲＡＭ（ｋ）＝ｋの場合はサブステップ（ｓｓ４３）を実行
それ以外の場合はサブステップ（ｓｓ４４）を実行
（ｓｓ４３）  ＬＲＡＭ（ｋ）←ｊを実行
後処理に  ｊ←ｊ＋１  を実行し、サブステップ（ｓｓ４５）を実行
（ｓｓ４４）  ＬＲＡＭ（ｋ）←ＬＲＡＭ（ＬＲＡＭ（ｋ））を実行
（ｓｓ４５）  ｋ←ｋ＋１を実行
（ｓｓ４６）  ｋ≦ＮＤの場合はサブステップ（ｓｓ４２）を実行
それ以外の場合は終了
ここで、定数ＮＤが、入力画像内に出現した最大ラベル数であり、変数ｊがラベル値であることを特徴とする。
【００２５】
また、本発明に係る第１のラベリング処理システム（３）は、演算部と記録部とを備え、前記記録部に記録されている画像データで表される入力画像に対して論理マスクをラスタ走査することにより、前記演算部が前記画像データのラベリング処理を行うシステムであって、前記論理マスクが、ラベル画像のラベル値を表す第１のラベル変数および第２のラベル変数を含み、前記第１のラベル変数が、前記入力画像内の注目画素が位置する点でのラベル変数であり、前記第２のラベル変数が、前記第１のラベル変数に接続する前記論理マスク内のラベル変数であり、前記第１のラベル変数の初期値が前記画像データの画素値であり、第１の配列が、前記第１のラベル変数と前記第２のラベル変数との間のラベル間連結情報を含み、前記演算部が、前記画像データ内の画素毎に、前記第１のラベル変数の値と、前記第２のラベル変数のラベル値と、前記ラベル間連結情報とに基づいて、前記第１のラベル変数にラベル値を付与し、前記第１の配列に前記ラベル間連結情報を記録し、前記第１のラベル変数にラベル値を付与する度に、前記注目画素が位置する同じ行中に出現した前記ラベル値のうち、今後も出現する可能性のあるラベル値を、第２の配列に記録することを、前記注目画素が前記入力画像内の行中の最後の画素に達するまで繰り返し実行し、前記注目画素が前記入力画像内の行中の最後の画素である場合に、前記ラベル間連結情報および前記第２の配列に記録されている情報に基づいて、同じ行中に出現した前記ラベル値のみを小さい順に統合し、前記注目画素が位置する行が、前記入力画像内の最後の行である場合に、前記第１の配列に記録されている前記ラベル間連結情報に基づいて前記ラベル値の変更を行うことを特徴とする。
【００２６】
また、本発明に係る第１のラベリング処理装置（４）は、ラベル付け論理回路と、ラベル統合回路と、ラインバッファと、画像メモリとを備え、画像データで表される入力画像に対して論理マスクをラスタ走査することにより、前記画像データのラベリング処理を行う装置であって、前記論理マスクが、ラベル画像のラベル値を表す第１のラベル変数および第２のラベル変数を含み、前記第１のラベル変数が、前記入力画像内の注目画素が位置する点でのラベル変数であり、前記第２のラベル変数が、前記第１のラベル変数に接続する前記論理マスク内のラベル変数であり、前記第１のラベル変数の初期値が前記画像データの画素値であり、第１の配列が、前記第１のラベル変数と前記第２のラベル変数との間のラベル間連結情報を含み、前記ラベル付け論理回路が、前記画像データ内の画素毎に、前記第１のラベル変数の値と、前記第２のラベル変数のラベル値と、前記ラベル間連結情報とに基づいて、前記第１のラベル変数にラベル値を付与し、前記第１の配列に前記ラベル間連結情報を記録し、前記ラベル付け論理回路が、前記第１のラベル変数にラベル値を付与する度に、前記注目画素が位置する同じ行中に出現した前記ラベル値のうち、今後も出現する可能性のあるラベル値を、第２の配列に記録することを、前記注目画素が前記入力画像内の行中の最後の画素に達するまで繰り返し実行し、前記ラベル統合回路が、前記注目画素が前記入力画像内の行中の最後の画素である場合に、前記ラベル間連結情報および前記第２の配列に記録されている情報に基づいて、同じ行中に出現した前記ラベル値のみを小さい順に統合し、前記ラベル統合回路が、前記注目画素が位置する行が、前記入力画像内の最後の行である場合に、前記第１の配列に記録されている前記ラベル間連結情報に基づいて前記ラベル値の変更を行うことを特徴とする。
【００２７】
また、本発明に係る第１のラベリング処理プログラム（５）は、コンピュータに画像データのラベリング処理を行わせるプログラムであって、論理マスクが、ラベル画像のラベル値を表す第１のラベル変数および第２のラベル変数を含み、前記第１のラベル変数が、入力画像内の注目画素が位置する点でのラベル変数であり、前記第２のラベル変数が、前記第１のラベル変数に接続する前記論理マスク内のラベル変数であり、前記第１のラベル変数の初期値が前記画像データの画素値であり、第１の配列が、前記第１のラベル変数と前記第２のラベル変数との間のラベル間連結情報を含み、コンピュータに、前記画像データ内の画素毎に、前記第１のラベル変数の値と、前記第２のラベル変数のラベル値と、前記ラベル間連結情報とに基づいて、前記第１のラベル変数にラベル値を付与し、前記第１の配列に前記ラベル間連結情報を記録し、前記第１のラベル変数にラベル値を付与する度に、前記注目画素が位置する同じ行中に出現した前記ラベル値のうち、今後も出現する可能性のあるラベル値を、第２の配列に記録することを、前記注目画素が前記入力画像内の行中の最後の画素に達するまで繰り返し実行する第１の機能と、前記注目画素が前記入力画像内の行中の最後の画素である場合に、前記ラベル間連結情報および前記第２の配列に記録されている情報に基づいて、同じ行中に出現した前記ラベル値のみを小さい順に統合する第２の機能と、前記注目画素が位置する行が、前記入力画像内の最後の行である場合に、前記第１の配列に記録されている前記ラベル間連結情報に基づいて前記ラベル値の変更を行う第３の機能とを実現させることを特徴とする。
【００２８】
また、本発明に係る第２のラベリング処理方法（６）は、演算部と記録部とを備えるシステムにおいて、前記記録部に記録されている画像データで表される入力画像に対して論理マスクをラスタ走査することにより、前記演算部が前記画像データのラベリング処理を行う方法であって、前記論理マスクが第１の階層と第２の階層とを含む２階層の論理マスクであり、前記第１の階層が、ラベル画像の実ラベル値を表す第１のラベル変数および第２のラベル変数を含み、前記第２の階層が、左端点ラベル値を表す第３のラベル変数および第４のラベル変数を含み、前記第１のラベル変数が、前記入力画像内の注目画素が位置する点でのラベル変数であり、前記第２のラベル変数が、前記第１のラベル変数に接続する前記論理マスク内のラベル変数であり、前記第１のラベル変数の初期値が前記画像データの画素値であり、前記第３のラベル変数および前記第４のラベル変数の各々が、前記第１のラベル変数および前記第２のラベル変数の各々の位置に対応し、第１の配列が、前記第１のラベル変数と前記第２のラベル変数との間の実ラベルの第１のラベル間連結情報を含み、第２の配列が、前記第３のラベル変数と前記第４のラベル変数との間の左端点ラベルの第２のラベル間連結情報を含み、第３の配列が、左端点ラベルと結合する実ラベルの最小値を含み、前記演算部が、前記画像データ内の画素毎に、前記第１のラベル変数の値と、前記第４のラベル変数の左端点ラベル値と、前記第１のラベル間連結情報と、前記第２のラベル間連結情報と、前記実ラベルの最小値とに基づいて、前記第１のラベル変数に実ラベル値を付与し、且つ、前記第３のラベル変数に左端点ラベル値を付与し、前記第１の配列、前記第２の配列、および前記第３の配列の各々に、第１のラベル間連結情報、第２のラベル間連結情報、および実ラベルの最小値を各々記録することを、前記入力画像内の全ての画素に対して実行し、前記ラベル画像全体における前記実ラベル値と、前記注目画素が位置する行および前記注目画素が位置する１つ前の行の２行のみにおいて有効な前記左端点ラベル値との２重対を管理する第１のステップと、前記演算部が、前記第１の配列に記録されている前記第１のラベル間連結情報に基づいて前記実ラベル値の変更を行う第２のステップとを含むことを特徴とする。
【００２９】
また、本発明に係る第２のラベリング処理方法（７）は、第２のラベリング処理方法（６）において、前記第１のラベル変数がラベル変数Ｐであり、前記第２のラベル変数がラベル変数Ｘ，Ｙ，Ｚ，およびＵを含み、前記ラベル変数Ｐが、前記ラベル変数Ｘ，Ｙ，Ｚ，およびＵの各々と、それぞれ左上、上、右上、および左の位置で接続し、前記第３のラベル変数が左端点ラベル変数Ｐ＋であり、前記第４のラベル変数が左端点ラベル変数Ｘ＋，Ｙ＋，Ｚ＋，およびＵ＋を含み、前記左端点ラベル変数Ｐ＋が、前記左端点ラベル変数Ｘ＋，Ｙ＋，Ｚ＋，およびＵ＋の各々と、それぞれ左上、上、右上、および左の位置で接続し、
前記第１のステップが、次の（Ｃａｓｅ１）〜（Ｃａｓｅ１２）に示す場合分け条件の基で前記ラベル変数Ｐおよび前記ラベル変数Ｚにラベル値を付与し、且つ、前記左端点ラベル変数Ｐ＋および前記左端点ラベル変数Ｚ＋に左端点ラベル値を付与し、
（Ｃａｓｅ１）Ｐ＝０かつＺ＋≠０の場合
ＬＥＰＴ（Ｚ＋）←（Ｚ＋）＊，
ＬＥＰＴ＿ＭＩＮ（Ｚ＋）←Ｌｍｉｎ（Ｚ＋），
Ｚｖｅｃｔｏｒ←［（Ｚ＋）＊，Ｌｍｉｎ（Ｚ＋）］Ｔを実行
（Ｃａｓｅ２）Ｐ≠０かつＶ＋＝０かつＹ＋＝０かつＺ＋＝０の場合
Ｐｖｅｃｔｏｒ←［ＬＬＣ，ＬＣ］Ｔ，
ＬＥＰＴ（ＬＬＣ）←ＬＬＣ，
ＬＥＰＴ＿ＭＩＮ（ＬＬＣ）←ＬＣ，
ＬＲＡＭ（ＬＣ）←ＬＣを実行
後処理に  （ＬＬＣ＋＋，ＬＣ＋＋）  を実行
（Ｃａｓｅ３）Ｐ≠０かつＹ＋≠０かつｓｉｇｎ（Ｙ＋）＝ｓｉｇｎ（Ｒｏｗ）の場合
Ｐｖｅｃｔｏｒ←Ｙｖｅｃｔｏｒを実行
さらに（Ｚ＋≠０）の場合は  Ｚｖｅｃｔｏｒ←［（Ｚ＋）＊，Ｌｍｉｎ（Ｚ＋）］Ｔ  を実行
（Ｃａｓｅ４）Ｐ≠０かつＹ＋≠０かつｓｉｇｎ（Ｙ＋）≠ｓｉｇｎ（Ｒｏｗ）の場合
Ｐｖｅｃｔｏｒ←［ＬＬＣ，Ｙ］Ｔ，
ＬＥＰＴ（ＬＬＣ）←ＬＬＣ，
ＬＥＰＴ＿ＭＩＮ（ＬＬＣ）←Ｙ，
ＬＥＰＴ（Ｙ＋）←ＬＬＣを実行
後処理に  ＬＬＣ＋＋  を実行
さらに（Ｚ＋≠０）の場合は  Ｚｖｅｃｔｏｒ←［（Ｚ＋）＊，Ｌｍｉｎ（Ｚ＋）］Ｔ  を実行
（Ｃａｓｅ５）Ｐ≠０かつＹ＋＝０かつＶ＋≠０かつＺ＋＝０かつｓｉｇｎ（Ｖ＋）＝ｓｉｇｎ（Ｒｏｗ）の場合
Ｐｖｅｃｔｏｒ←Ｖｖｅｃｔｏｒを実行
（Ｃａｓｅ６）Ｐ≠０かつＹ＋＝０かつＶ＋≠０かつＺ＋＝０かつｓｉｇｎ（Ｖ＋）≠ｓｉｇｎ（Ｒｏｗ）の場合
Ｐｖｅｃｔｏｒ←［ＬＬＣ，Ｖ］Ｔ，
ＬＥＰＴ（ＬＬＣ）←ＬＬＣ，
ＬＥＰＴ＿ＭＩＮ（ＬＬＣ）←Ｖ，
ＬＥＰＴ（Ｖ＋）←ＬＬＣを実行
後処理に  ＬＬＣ＋＋  を実行
（Ｃａｓｅ７）Ｐ≠０かつＺ＋≠０かつＹ＋＝０かつＶ＋＝０かつｓｉｇｎ（（Ｚ＋）＊）＝ｓｉｇｎ（Ｒｏｗ）の場合
Ｐｖｅｃｔｏｒ←［（Ｚ＋）＊，Ｌｍｉｎ（Ｚ＋）］Ｔ，
Ｚｖｅｃｔｏｒ←［（Ｚ＋）＊，Ｌｍｉｎ（Ｚ＋）］Ｔを実行
（Ｃａｓｅ８）Ｐ≠０かつＺ＋≠０かつＹ＋＝０かつＶ＋＝０かつｓｉｇｎ（（Ｚ＋）＊）≠ｓｉｇｎ（Ｒｏｗ）の場合
Ｐｖｅｃｔｏｒ←［ＬＬＣ，Ｌｍｉｎ（Ｚ＋）］Ｔ，
Ｚｖｅｃｔｏｒ←［ＬＬＣ，Ｌｍｉｎ（Ｚ＋）］Ｔ，
ＬＥＰＴ（ＬＬＣ）←ＬＬＣ，
ＬＥＰＴ＿ＭＩＮ（ＬＬＣ）←Ｌｍｉｎ（Ｚ＋），
ＬＥＰＴ（（Ｚ＋）＊）←ＬＬＣを実行
後処理に  ＬＬＣ＋＋  を実行
（Ｃａｓｅ９）Ｐ≠０かつＶ＋≠０かつＺ＋≠０かつＹ＋＝０かつｓｉｇｎ（Ｖ＋）＝ｓｉｇｎ（Ｒｏｗ）かつｓｉｇｎ（（Ｚ＋）＊）＝ｓｉｇｎ（Ｒｏｗ）の場合
Ｐｖｅｃｔｏｒ←［（Ｚ＋）＊，Ｌｍｉｎ（Ｚ＋）］Ｔ，
Ｚｖｅｃｔｏｒ←［（Ｚ＋）＊，Ｌｍｉｎ（Ｚ＋）］Ｔ，
ＬＥＰＴ（Ｖ＋）←（Ｚ＋）＊，
ＬＥＰＴ＿ＭＩＮ（Ｖ＋）←Ｌｍｉｎ（Ｚ＋），
ＬＲＡＭ（Ｖ）←Ｌｍｉｎ（Ｚ＋）を実行
（Ｃａｓｅ１０）Ｐ≠０かつＶ＋≠０かつＺ＋≠０かつＹ＋＝０かつｓｉｇｎ（Ｖ＋）＝ｓｉｇｎ（Ｒｏｗ）かつｓｉｇｎ（（Ｚ＋）＊）≠ｓｉｇｎ（Ｒｏｗ）の場合
（ａ）Ｖ≧Ｌｍｉｎ（Ｚ＋）の場合
Ｐｖｅｃｔｏｒ←［Ｖ＋，Ｌｍｉｎ（Ｚ＋）］Ｔ，
Ｚｖｅｃｔｏｒ←［Ｖ＋，Ｌｍｉｎ（Ｚ＋）］Ｔ，
ＬＥＰＴ（（Ｚ＋）＊）←Ｖ＋，
ＬＥＰＴ＿ＭＩＮ（Ｖ＋）←Ｌｍｉｎ（Ｚ＋），
ＬＲＡＭ（Ｖ）←Ｌｍｉｎ（Ｚ＋）を実行
（ｂ）Ｖ＜Ｌｍｉｎ（Ｚ＋）の場合
Ｐｖｅｃｔｏｒ←［Ｖ＋，Ｖ］Ｔ，
Ｚｖｅｃｔｏｒ←［Ｖ＋，Ｖ］Ｔ，
ＬＥＰＴ（（Ｚ＋）＊）←Ｖ＋，
ＬＥＰＴ＿ＭＩＮ（（Ｚ＋）＊）←Ｖ，
ＬＲＡＭ（Ｌｍｉｎ（Ｚ＋））←Ｖを実行
（Ｃａｓｅ１１）Ｐ≠０かつＶ＋≠０かつＺ＋≠０かつＹ＋＝０かつｓｉｇｎ（Ｖ＋）≠ｓｉｇｎ（Ｒｏｗ）かつｓｉｇｎ（（Ｚ＋）＊）＝ｓｉｇｎ（Ｒｏｗ）の場合
Ｐｖｅｃｔｏｒ←［（Ｚ＋）＊，Ｌｍｉｎ（Ｚ＋）］Ｔ，
Ｚｖｅｃｔｏｒ←［（Ｚ＋）＊，Ｌｍｉｎ（Ｚ＋）］Ｔ，
ＬＥＰＴ（Ｖ＋）←（Ｚ＋）＊，
ＬＥＰＴ＿ＭＩＮ（Ｖ＋）←Ｌｍｉｎ（Ｚ＋），
ＬＲＡＭ（Ｖ）←Ｌｍｉｎ（Ｚ＋）を実行
（Ｃａｓｅ１２）Ｐ≠０かつＶ＋≠０かつＺ＋≠０かつＹ＋＝０かつｓｉｇｎ（Ｖ＋）≠ｓｉｇｎ（Ｒｏｗ）かつｓｉｇｎ（（Ｚ＋）＊）≠ｓｉｇｎ（Ｒｏｗ）の場合
（ａ）Ｖ≧Ｌｍｉｎ（Ｚ＋）の場合
Ｐｖｅｃｔｏｒ←［ＬＬＣ，Ｌｍｉｎ（Ｚ＋）］Ｔ，
Ｚｖｅｃｔｏｒ←［ＬＬＣ，Ｌｍｉｎ（Ｚ＋）］Ｔ，
ＬＥＰＴ（ＬＬＣ）←ＬＬＣ，
ＬＥＰＴ＿ＭＩＮ（ＬＬＣ）←Ｌｍｉｎ（Ｚ＋），
ＬＥＰＴ（Ｖ＋）←ＬＬＣ，
ＬＥＰＴ（（Ｚ＋）＊）←ＬＬＣ，
ＬＲＡＭ（Ｖ）←Ｌｍｉｎ（Ｚ＋）を実行
後処理に  ＬＬＣ＋＋  を実行
（ｂ）Ｖ＜Ｌｍｉｎ（Ｚ＋）の場合
Ｐｖｅｃｔｏｒ←［ＬＬＣ，Ｖ］Ｔ，
Ｚｖｅｃｔｏｒ←［ＬＬＣ，Ｖ］Ｔ，
ＬＥＰＴ（ＬＬＣ）←ＬＬＣ，
ＬＥＰＴ＿ＭＩＮ（ＬＬＣ）←Ｖ，
ＬＥＰＴ（Ｖ＋）←ＬＬＣ，
ＬＥＰＴ（（Ｚ＋）＊）←ＬＬＣ，
ＬＥＰＴ＿ＭＩＮ（（Ｚ＋）＊）←Ｖ，
ＬＲＡＭ（Ｌｍｉｎ（Ｚ＋））←Ｖ
後処理に  ＬＬＣ＋＋  を実行
ここで、前記第１の配列がＬＲＡＭであり、前記第２の配列がＬＥＰＴであり、前記第３の配列がＬＥＰＴ＿ＭＩＮであり、実ラベルの個数を表す変数がＬＣであり、左端点ラベルの個数を表す変数がＬＬＣであり、変数Ｖが、Ｖ＝Ｍａｘ｛Ｘ，Ｕ｝であり、変数（Ｚ＋）＊が（Ｚ＋）＊＝ＬＥＰＴ（ＬＥＰＴ（Ｚ＋））であり、変数Ｌｍｉｎ（Ｚ＋）がＬｍｉｎ（Ｚ＋）＝ＬＥＰＴ＿ＭＩＮ（ＬＥＰＴ（Ｚ＋））であり、変数Ｖ＋がＶ＋＝（（Ｕ≠０かつＸ≠０のとき）Ｕ＋，（Ｕ≠０かつＸ＝０のとき）Ｕ＋，（Ｕ＝０かつＸ≠０のとき）Ｘ＋，（Ｕ＝０かつＸ＝０のとき）０）であり、ｓｉｇｎ（Ｘ＋）は、左端点ラベル変数Ｘ＋の符号を表し、ｓｉｇｎ（Ｒｏｗ）は現在行の符号を表し、
前記第２のステップが、次のサブステップ（ｓｓ２１）〜（ｓｓ２６）に示す処理を行い、
（ｓｓ２１）  ｋ←１，ｊ←１
（ｓｓ２２）  ＬＲＡＭ（ｋ）＝ｋの場合はサブステップ（ｓｓ２３）を実行、それ以外の場合はサブステップ（ｓｓ２４）を実行
（ｓｓ２３）  ＬＲＡＭ（ｋ）←ｊ
後処理に  ｊ←ｊ＋１  を実行し、サブステップ（ｓｓ２５）を実行
（ｓｓ２４）  ＬＲＡＭ（ｋ）←ＬＲＡＭ（ＬＲＡＭ（ｋ））
（ｓｓ２５）  ｋ←ｋ＋１
（ｓｓ２６）  ｋ≦ＮＤの場合はサブステップ（ｓｓ２２）を実行、それ以外の場合は終了
ここで、定数ＮＤが、入力画像内に出現した最大ラベル数であり、変数ｊがラベル値であり、変数ｋが、前記第１の配列の添え字であることを特徴とする。
【００３０】
また、本発明に係る第２のラベリング処理システム（８）は、演算部と記録部とを備え、前記記録部に記録されている画像データで表される入力画像に対して論理マスクをラスタ走査することにより、前記演算部が前記画像データのラベリング処理を行うシステムであって、前記論理マスクが第１の階層と第２の階層とを含む２階層の論理マスクであり、前記第１の階層が、ラベル画像の実ラベル値を表す第１のラベル変数および第２のラベル変数を含み、前記第２の階層が、左端点ラベル値を表す第３のラベル変数および第４のラベル変数を含み、前記第１のラベル変数が、前記入力画像内の注目画素が位置する点でのラベル変数であり、前記第２のラベル変数が、前記第１のラベル変数に接続する前記論理マスク内のラベル変数であり、前記第１のラベル変数の初期値が前記画像データの画素値であり、前記第３のラベル変数および前記第４のラベル変数の各々が、前記第１のラベル変数および前記第２のラベル変数の各々の位置に対応し、第１の配列が、前記第１のラベル変数と前記第２のラベル変数との間の実ラベルの第１のラベル間連結情報を含み、第２の配列が、前記第３のラベル変数と前記第４のラベル変数との間の左端点ラベルの第２のラベル間連結情報を含み、第３の配列が、左端点ラベルと結合する実ラベルの最小値を含み、前記演算部が、前記画像データ内の画素毎に、前記第１のラベル変数の値と、前記第４のラベル変数の左端点ラベル値と、前記第１のラベル間連結情報と、前記第２のラベル間連結情報と、前記実ラベルの最小値とに基づいて、前記第１のラベル変数に実ラベル値を付与し、且つ、前記第３のラベル変数に左端点ラベル値を付与し、前記第１の配列、前記第２の配列、および前記第３の配列の各々に、第１のラベル間連結情報、第２のラベル間連結情報、および実ラベルの最小値を各々記録することを、前記入力画像内の全ての画素に対して実行し、前記ラベル画像全体における前記実ラベル値と、前記注目画素が位置する行および前記注目画素が位置する１つ前の行の２行のみにおいて有効な前記左端点ラベル値との２重対を管理し、前記第１の配列に記録されている前記第１のラベル間連結情報に基づいて前記実ラベル値の変更を行うことを特徴とする。
【００３１】
また、本発明に係る第２のラベリング処理装置（９）は、ラベル付け論理回路と、ラベル統合回路と、ラインバッファと、画像メモリとを備え、画像データで表される入力画像に対して論理マスクをラスタ走査することにより、前記画像データのラベリング処理を行う装置であって、前記論理マスクが第１の階層と第２の階層とを含む２階層の論理マスクであり、前記第１の階層が、ラベル画像の実ラベル値を表す第１のラベル変数および第２のラベル変数を含み、前記第２の階層が、左端点ラベル値を表す第３のラベル変数および第４のラベル変数を含み、前記第１のラベル変数が、前記入力画像内の注目画素が位置する点でのラベル変数であり、前記第２のラベル変数が、前記第１のラベル変数に接続する前記論理マスク内のラベル変数であり、前記第１のラベル変数の初期値が前記画像データの画素値であり、前記第３のラベル変数および前記第４のラベル変数の各々が、前記第１のラベル変数および前記第２のラベル変数の各々の位置に対応し、第１の配列が、前記第１のラベル変数と前記第２のラベル変数との間の実ラベルの第１のラベル間連結情報を含み、第２の配列が、前記第３のラベル変数と前記第４のラベル変数との間の左端点ラベルの第２のラベル間連結情報を含み、第３の配列が、左端点ラベルと結合する実ラベルの最小値を含み、前記ラベル付け論理回路が、前記画像データ内の画素毎に、前記第１のラベル変数の値と、前記第４のラベル変数の左端点ラベル値と、前記第１のラベル間連結情報と、前記第２のラベル間連結情報と、前記実ラベルの最小値とに基づいて、前記第１のラベル変数に実ラベル値を付与し、且つ、前記第３のラベル変数に左端点ラベル値を付与し、前記第１の配列、前記第２の配列、および前記第３の配列の各々に、第１のラベル間連結情報、第２のラベル間連結情報、および実ラベルの最小値を各々記録することを、前記入力画像内の全ての画素に対して実行し、前記ラベル画像全体における前記実ラベル値と、前記注目画素が位置する行および前記注目画素が位置する１つ前の行の２行のみにおいて有効な前記左端点ラベル値との２重対を管理し、前記ラベル統合回路が、前記第１の配列に記録されている前記第１のラベル間連結情報に基づいて前記実ラベル値の変更を行うことを特徴とする。
【００３２】
また、本発明に係る第２のラベリング処理プログラム（１０）は、コンピュータに画像データのラベリング処理を行わせるプログラムであって、論理マスクが第１の階層と第２の階層とを含む２階層の論理マスクであり、前記第１の階層が、ラベル画像の実ラベル値を表す第１のラベル変数および第２のラベル変数を含み、前記第２の階層が、左端点ラベル値を表す第３のラベル変数および第４のラベル変数を含み、前記第１のラベル変数が、入力画像内の注目画素が位置する点でのラベル変数であり、前記第２のラベル変数が、前記第１のラベル変数に接続する前記論理マスク内のラベル変数であり、前記第１のラベル変数の初期値が前記画像データの画素値であり、前記第３のラベル変数および前記第４のラベル変数の各々が、前記第１のラベル変数および前記第２のラベル変数の各々の位置に対応し、第１の配列が、前記第１のラベル変数と前記第２のラベル変数との間の実ラベルの第１のラベル間連結情報を含み、第２の配列が、前記第３のラベル変数と前記第４のラベル変数との間の左端点ラベルの第２のラベル間連結情報を含み、第３の配列が、左端点ラベルと結合する実ラベルの最小値を含み、コンピュータに、前記画像データ内の画素毎に、前記第１のラベル変数の値と、前記第４のラベル変数の左端点ラベル値と、前記第１のラベル間連結情報と、前記第２のラベル間連結情報と、前記実ラベルの最小値とに基づいて、前記第１のラベル変数に実ラベル値を付与し、且つ、前記第３のラベル変数に左端点ラベル値を付与し、前記第１の配列、前記第２の配列、および前記第３の配列の各々に、第１のラベル間連結情報、第２のラベル間連結情報、および実ラベルの最小値を各々記録することを、前記入力画像内の全ての画素に対して実行し、前記ラベル画像全体における前記実ラベル値と、前記注目画素が位置する行および前記注目画素が位置する１つ前の行の２行のみにおいて有効な前記左端点ラベル値との２重対を管理する第１の機能と、前記第１の配列ＬＲＡＭに記録されている前記第１のラベル間連結情報に基づいて前記実ラベル値の変更を行う第２の機能とを実現させることを特徴とする。
【発明の効果】
【００３３】
本発明によると、テレビカメラから連続した映像信号として伝送されてくるデジタル画像に対して、高いビットレートでのリアルタイムのラベリング処理が可能となる。
【００３４】
また、本発明によると、高精細画像のような高い解像度を有する入力画像に対しても有効にラベリング処理を高速化することができる。
【００３５】
また、本発明によると、１画素当たりの処理時間内に４回のメモリアクセスが可能であれば、連続して入力される画像に対して、完全なパイプライン方式に基づいた領域ラベリング処理が可能となる。
【図面の簡単な説明】
【００３６】
【図１】従来技術に係るラベリング処理方法において行う画像のラスタ走査を説明する模式図である。
【図２】従来技術に係るラベリング処理を示すフローチャートである。
【図３】従来技術に係るラベリング処理のデータフロー図である。
【図４】従来技術に係るラベリング処理方法を行う電子回路基板の概略構成の一例を示すブロック図である。
【図５】従来技術に係るラベリング処理方法を行う電子回路基板におけるパイプライン処理を説明するタイムチャートである。
【図６】本発明の第１の実施形態に係るラベリング処理方法を行うシステムの概略構成を示すブロック図である。
【図７】本発明の第１の実施形態に係るラベリング処理を示すフローチャートである。
【図８】本発明の第１の実施形態に係るラベリング処理のデータフロー図である。
【図９】本発明の第２の実施形態に係るラベリング処理方法において導入する左端点の定義を説明する模式図である。
【図１０】本発明の第２の実施形態に係るラベリング処理方法において用いる論理マスクを説明する模式図である。
【図１１】本発明の第２の実施形態に係るラベリング処理方法において用いる左端点ラベル管理テーブルを説明する模式図である。
【図１２】本発明の第２の実施形態に係るラベリング処理を示すフローチャートである。
【図１３】本発明の第２の実施形態に係るラベリング処理のデータフロー図である。
【図１４】第２の実施形態に係るラベリング処理方法におけるデータ読み出しのアクセス方法を説明する模式図である。
【図１５】第２の実施形態に係るラベリング処理方法における各画素での処理を説明するタイムチャートである。
【図１６】第２の実施形態に係るラベリング処理方法における１次ラベリング処理の場合分けを説明する模式図である。
【図１７】第２の実施形態に係るラベリング処理方法における１次ラベリング処理の場合分けを説明する模式図である。
【図１８】第２の実施形態に係るラベリング処理方法における１次ラベリング処理の場合分けを説明する模式図である。
【図１９】第２の実施形態に係るラベリング処理方法における１次ラベリング処理の場合分けを説明する模式図である。
【図２０】第２の実施形態に係るラベリング処理方法における１次ラベリング処理の場合分けを説明する模式図である。
【図２１】第２の実施形態に係るラベリング処理方法における１次ラベリング処理の場合分けを説明する模式図である。
【図２２】第２の実施形態に係るラベリング処理方法における１次ラベリング処理の場合分けを説明する模式図である。
【図２３】第２の実施形態に係るラベリング処理方法における１次ラベリング処理の場合分けを説明する模式図である。
【図２４】第２の実施形態に係るラベリング処理方法における１次ラベリング処理の場合分けを説明する模式図である。
【図２５】第２の実施形態に係るラベリング処理方法における１次ラベリング処理の場合分けを説明する模式図である。
【図２６】第２の実施形態に係るラベリング処理方法における１次ラベリング処理の場合分けを説明する模式図である。
【図２７】第２の実施形態に係るラベリング処理方法における１次ラベリング処理の場合分けを説明する模式図である。
【図２８】第２の実施形態に係るラベリング処理方法における１次ラベリング処理の場合分けを説明する模式図である。
【図２９】第２の実施形態に係るラベリング処理方法における１次ラベリング処理の場合分けを説明する模式図である。
【図３０】第２の実施形態に係るラベリング処理方法における１次ラベリング処理の場合分けを説明する模式図である。
【図３１】第１の実施形態に係るラベリング処理方法における１次ラベリング処理の一実施例を示す図である。
【図３２】第１の実施形態に係るラベリング処理方法における１次ラベリング処理の他の実施例を示す図である。
【図３３】第２の実施形態に係るラベリング処理方法における１次ラベリング処理の一実施例を示す図である。
【発明を実施するための形態】
【００３７】
以下、本発明の実施の形態を、添付の図面を参照して詳細に説明する。尚、以下の説明及び図面において、同じ符号は同じ又は類似の構成要素を示すこととし、よって、同じ又は類似の構成要素に関する説明を省略する。
【００３８】
（第１の実施形態）
本発明の第１の実施形態に係るラベリング処理方法は、画素毎のラベル付け処理においてラベル値を付与する度に、１つの同じ行中に出現したラベル値のうち、今後も出現する可能性のあるラベル値を予め記録しておくことで、行毎のラベル間連結情報の統合処理を行う際に、現在行で出現したラベル値のみを小さい順に統合する処理を行う。
【００３９】
また、第１の実施形態に係るラベリング処理方法は、図１に示すラスタ走査における水平帰線時間（図１中に破線で示す）のような空き時間を前提とする処理方法であり、この空き時間の間に、各行に出現したラベルのみに対してラベル間連結情報の統合処理を行う処理方法である。
【００４０】
図６は、本発明の第１の実施形態に係るラベリング処理方法を行うコンピュータ・システムの概略構成を示すブロック図である。第１の実施形態に係るラベリング処理方法を行うコンピュータ・システム１（以下、単に、システム１とも記す）は、後述するデータの演算を行うＣＰＵ１０と、演算の作業領域に使用するメモリ１１と、演算データを記録する記録部１２と、各部の間でデータを伝送するバス１３と、外部機器とのデータの入出力を行うインタフェース部１４（以下、Ｉ／Ｆ部と記す）とを備えている。なお、図６では記載を省略しているが、コンピュータが通常備えている操作手段（キーボード等）や表示手段（ディスプレイ等）も備えている。
【００４１】
図７は、本発明の第１の実施形態に係るラベリング処理を示すフローチャートであり、図８は、本発明の第１の実施形態に係るラベリング処理のデータフロー図である。以下、第１の実施形態に係るラベリング処理について、図７に示すフローチャートおよび図８に示すデータフロー図に基づいて説明する。
【００４２】
第１の実施形態に係るラベリング処理の処理手順の概要を説明すると次の通りである。まず、１次ラベリングとして、画素毎の処理（Ｓ１１〜Ｓ１２）と、行毎の処理（Ｓ１４）とを画像１０９内で連続して行い、その後、２次ラベリングとして画像毎の処理（Ｓ１６）を行う。第１の実施形態に係るラベリング処理は、図１に示す従来技術に係る画像１０９のラスタ走査と同じ走査順で、同じ論理マスク１０８を使用する。なお、第１の実施形態に係るラベリング処理は、画素毎のラベル付け処理（Ｓ１１）において同じ行中に出現したラベル値のうち、今後も出現する可能性のあるラベル値を記録する処理（Ｓ１２）を行う点と、行毎のラベル間連結情報の統合処理において、現在行で出現したラベル値のみを小さい順に統合する処理（Ｓ１４）を行う点とで、従来技術に係るラベリング処理と異なる。
【００４３】
以下の説明においては、特に断らない限りシステム１が行うラベリング処理方法として説明する。また、システム１が行う処理は、実際にはシステム１のＣＰＵ１０が行う処理を意味する。ＣＰＵ１０はメモリ１１を作業領域として必要なデータ（処理途中の中間データ等）を一時記憶し、記録部１２に演算結果等の長期保存するデータを適宜記録する。また、システム１は、以下で説明するステップＳ１１〜Ｓ１６の処理を行うために使用するプログラムを、例えば実行形式（例えば、Ｃ言語等のプログラミング言語からコンパイラにより変換されて生成される）で記録部１２に予め記録しており、システム１は、記録部１２に記録したプログラムを使用して処理を行う。
【００４４】
１次ラベリング（Ｓ１１〜Ｓ１５）
ステップＳ１１において、ラベル付けの処理を画素毎に行う。まず、従来技術に係るステップＳ１において説明した（Ｃａｓｅ１）〜（Ｃａｓｅ８）に示す場合分け条件の基でラベル変数ＰおよびＺにラベルを付与して１次ラベリング後のラベル画像を生成し、テーブルＬＲＡＭにラベル間連結情報を記録する。（Ｃａｓｅ１）〜（Ｃａｓｅ８）に示すラベル付け処理は、上記した従来技術に係るステップＳ１において行うラベル付け処理と同じであるため、その説明を省略する。
【００４５】
そして、ステップＳ１２において、同じ行中に出現したラベル値のうち、今後も出現する可能性のあるラベル値を出現順にテーブルｓｕｂ＿ＬＲＡＭに記録する。即ち、（Ｃａｓｅ１）〜（Ｃａｓｅ８）に示す処理においてラベルを付与する度に、次のサブステップ（ｓｓ１２１）〜（ｓｓ１２２）に示す処理を行う。ここで、変数Ｒｏｗ＿Ｍａｘは、行の先頭でのラベルカウンタＬＣの値である。変数Ｒｏｗ＿Ｍａｘを使用する理由は、ラベルカウンタＬＣが画素毎の処理で変化する可能性があるためである。また、ｓｕｂ＿ＬＲＡＭは、同じ行中に出現したラベルのうち今後も出現する可能性のあるラベルを出現順に管理するテーブル（１次元配列であり配列の初期値は全て０）である。変数ｌａｂｅｌは、注目画素に付与したラベル値であり、変数ｓｕｂ＿ＬＣは、１次元配列であるテーブルｓｕｂ＿ＬＲＡＭの添え字（アドレス）であり、ｆｌａｇは、現在行に新たなラベル値が出現したか否かを判断するためのテーブル（１次元配列であり配列の初期値は全て０）である。変数Ｒｏｗ＿Ｍａｘおよびテーブルｆｌａｇは行単位で初期化され、変数ｓｕｂ＿ＬＣは、画像単位で初期化（初期値は０）される。
（ｓｓ１２１）  行の開始直前、または前の行の終了後に
Ｒｏｗ＿Ｍａｘ←ＬＣを実行
（ｓｓ１２２）  （Ｃａｓｅ２）から（Ｃａｓｅ８）の何れかに該当する場合にのみ次の処理を実行する。
【００４６】
ｌａｂｅｌ＞＝Ｒｏｗ＿Ｍａｘの場合は
ｓｕｂ＿ＬＣ←ｓｕｂ＿ＬＣ＋１，
ｓｕｂ＿ＬＲＡＭ（ｓｕｂ＿ＬＣ）←ｌａｂｅｌ，
ｆｌａｇ（ｌａｂｅｌ）←１を実行
それ以外の場合は  ｆｌａｇ（ｌａｂｅｌ）←１  を実行
次に、ステップＳ１３において、注目画素が行中の最後の画素であるか否かを判断する。最後の画素である場合はステップＳ１４を実行し、そうでない場合は、ラスタ走査順の次の画素に対してステップＳ１１を実行する。
【００４７】
ステップＳ１４において、ラベル間連結情報の統合処理を行毎に行い、同じ行中に出現したラベルのみを小さい順に統合する。次のサブステップ（ｓｓ１４１）〜（ｓｓ１４４）に示す処理を行う。ここで、変数ｌ、ｍは、一時的に使用する変数であり、１次元配列であるテーブルｓｕｂ＿ＬＲＡＭの添え字（アドレス）を意味する。
（ｓｓ１４１）  ｌ←１，ｍ←０を実行
（ｓｓ１４２）  ｋ←ｓｕｂ＿ＬＲＡＭ（ｌ），
ＬＲＡＭ（ｋ）←ＬＲＡＭ（ＬＲＡＭ（ｋ））を実行
ｋ＝ＬＲＡＭ（ｋ）かつｆｌａｇ（ｋ）＝１の場合はさらに
ｍ←ｍ＋１，
ｓｕｂ＿ＬＲＡＭ（ｍ）←ｋ，
ｆｌａｇ（ｋ）←０を実行
（ｓｓ１４３）  ｌ←ｌ＋１を実行
（ｓｓ１４４）  ｌ＜＝ｓｕｂ＿ＬＣの場合はサブステップ（ｓｓ１４２）を実行
それ以外の場合はｓｕｂ＿ＬＣ←ｍを実行
次に、ステップＳ１５において、注目画素が位置する行が、画像内の最後の行であるか否かを判断する。最後の行である場合はステップＳ１６を実行し、そうでない場合は、ラスタ走査順の次の画素（即ち、次の行の最初の画素）に対してステップＳ１１を実行する。
【００４８】
２次ラベリング（Ｓ１６）
ステップＳ１６において、連続したラベル値の付与処理を画像毎に行う。ステップＳ１６において行う２次ラベリング処理は、上記した従来技術に係るステップＳ５において行う２次ラベリングの処理と同じであるため、その説明を省略する。ステップＳ１６の処理を終了すると、第１の実施形態に係るラベリング処理を終了する。
【００４９】
上記したように、本発明の第１の実施形態に係るラベリング処理方法は、画素毎のラベル付け処理においてラベル値を付与する度に、１つの同じ行中に出現したラベル値のうち、今後も出現する可能性のあるラベル値を予め記録しておくことで、行毎のラベル間連結情報の統合処理を行う際に、現在行で出現したラベル値のみを小さい順に統合する処理を行う。例えば、第１の実施形態に係るラベリング処理方法では、現在行においてより小さなラベルと連結したラベルや、現在行の１行前の行まで伝搬していたが現在行では出現しなかったラベルを、テーブルｓｕｂ＿ＬＲＡＭにおいてラベル値の小さな順に消去することにより、行毎の出現ラベル値のソーティング処理を必要とせずに、ラベル値を付与する際に常に、小さなラベル値順に出現ラベルを管理している。
【００５０】
また、上記したように、従来技術に係るラベリング処理方法では、サブステップ（ｓｓ３１）〜（ｓｓ３４）に示す処理を行うことで、ラベル間連結情報の統合処理を行毎に行っている。ここで、統合処理の対象となるラベル値は、行毎の統合処理において出現した全てのラベル値である。これに対して、本発明の第１の実施形態に係るラベリング処理方法では、まずサブステップ（ｓｓ１２１）〜（ｓｓ１２２）に示す処理を行い、同じ行中に出現したラベル値のうち今後も出現する可能性のあるラベル値を、出現順にテーブルｓｕｂ＿ＬＲＡＭで管理したうえで、次にサブステップ（ｓｓ１４１）〜（ｓｓ１４４）に示す処理を行い、同じ行中に出現したラベル値のみを小さい順に統合する。即ち、本発明の第１の実施形態に係るラベリング処理方法において、統合処理の対象となるラベル値は、現在行中に出現したラベル値のみであり、従来技術に係るラベリング処理方法と比較して、統合処理の対象となるラベル数が低減される。よって、第１の実施形態に係るラベリング処理方法によれば、高精細画像のような高い解像度を有する画像に対しても有効にラベリング処理を高速化することができる。
【００５１】
なお、第１の実施形態に係るラベリング処理方法においては、従来技術に係るラベリング処理方法での１次ラベリングのみを改良している。よって、第１の実施形態に係るラベリング処理方法において、１次ラベリングの処理および２次ラベリングの処理は、連続して入力される画像に対してパイプライン処理が可能である。
【００５２】
（第２の実施形態）
本発明の第２の実施形態に係るラベリング処理方法は、画像上部からのラベル値（以下、階層Ａのラベル値とも記す）と、各行単位で管理する仮想ラベル値（以下、階層Ｂのラベル値とも記す）との２階層のラベル対を用いる。そして、この２階層ラベル対を管理しながら、階層Ｂの仮想ラベルを介して、行毎に、連結領域の最小ラベル値（階層Ａ）と、現在行における左端点のラベル値（階層Ａ）とを連結する。１次ラベリングの処理において実際に画像メモリに記録するのは、階層Ａのラベル値である。
【００５３】
また、第２の実施形態に係るラベリング処理方法は、上記した第１の実施形態に係るラベリング処理方法とは異なり、図１に示すラスタ走査における水平帰線時間のような空き時間を前提としない処理方法である。第２の実施形態に係るラベリング処理方法では、行毎に現在行におけるマスクパターンの左端点に着目し、左端点に付与されるラベル値と、左端点と連結する領域での最小のラベル値とを対応させることにより、行毎のラベル間連結情報の統合処理が不要となる。なお、以下では、ラベルに対して、区別した呼び名である「実ラベル」および「左端点ラベル」の２つの用語を用いる。また、現在行において、ラベルを付与した他の領域と連結していない点を「左端点」とし、左端点に付与したラベル値を「左端点ラベル値」とする。
【００５４】
図９は、本発明の第２の実施形態に係るラベリング処理方法において導入する左端点の定義を説明する模式図である。図９を参照して「左端点」の定義をより詳細に説明すると、「左端点」とは、「画像１０９内の点Ｐ（画素値≠０）に至るまでの走査済領域１０９Ａにおいて、点Ｐと同一行Ｅに存在する点（点Ｐとは異なる点であり画素値≠０）に対する連結経路Ｆが存在しない点Ｐ」のことである。
【００５５】
第２の実施形態に係るラベリング処理方法では、画像を左から右へラスタ走査した後、マスクパターンの左端（即ち、後述する変数ＶおよびＶ＋）に最小のラベル値が保存され、ラベル間連結情報の統合処理を行わなくても、次の行のラスタ走査時に最小のラベル値が伝播される。具体的には、連結領域の現在行における左端点に着目して、１次元配列形式の３つのテーブル（ＬＥＰＴ（Ｌｅｆｔ  Ｅｎｄ  Ｐｏｉｎｔ  Ｔａｂｌｅ），ＬＥＰＴ＿ＭＩＮ，およびＬＲＡＭ）を用いて、現在行における左端点ラベル値とこの左端点ラベル値に連結する実ラベルの最小値とを同行内において伝播させながら、次の行でラベルの書き換えを行う際に、これら３つのテーブルＬＥＰＴ、ＬＥＰＴ＿ＭＩＮ、およびＬＲＡＭに記録しておいた実ラベル値および左端点ラベル値を利用してラベル付けを行う。
【００５６】
図１０は、本発明の第２の実施形態に係るラベリング処理方法において用いる論理マスクを説明する模式図である。第２の実施形態に係るラベリング処理方法においても、図１に示す論理マスク１０８により画像１０９をラスタ走査しながら、連結性の検出とラベルの付与とを行い、ラベル画像を生成する。ただし、第２の実施形態に係るラベリング処理方法では、図１に示す論理マスク１０８を、図１０に示す２階層論理マスク２０に拡張して用いる。２階層論理マスク２０中のラベル変数Ｘ，Ｙ，Ｚ，Ｕ，Ｐは、論理マスク１０８中のラベル変数と同じである。また、Ｘ＋，Ｙ＋，Ｚ＋，Ｕ＋，Ｐ＋は、これらに位置が対応する画素での符号付き左端点ラベル値を表す変数（以下、単に左端点ラベル変数と記す）である。ここで、左端点ラベル変数Ｘ＋，Ｙ＋，Ｚ＋，Ｕ＋，Ｐ＋の初期値は、全て０である。
【００５７】
また、画像内の左端点ラベルの個数を表す左端点ラベルカウンタをＬＬＣ（初期値は−１）とする。左端点ラベルカウンタＬＬＣは、符号を付けることによって、偶数行および奇数行を区別する。符号は、現在行が偶数行の場合に正（＋）、奇数行の場合に負（−）を付加する。左端点ラベルのインクリメント（ＬＬＣ＋＋）は、現在行が偶数行の場合、例えばＬＬＣ＝＋１のとき、ＬＬＣ＋＋は＋２を意味し、奇数行の場合、例えばＬＬＣ＝−１のとき、ＬＬＣ＋＋は−２を意味することとする。
【００５８】
また、２階層論理マスク２０の２階部分の左端点ラベル変数Ｘ＋，Ｙ＋，Ｚ＋，Ｕ＋のすべてに、現在行と同符号の左端点ラベルが付与されていない場合には、注目画素（ラベル変数Ｐ）が位置する点を左端点とする。逆に、左端点ラベル変数Ｘ＋，Ｙ＋，Ｚ＋，Ｕ＋の何れかに、現在行と同符号の左端点ラベルが付与されている場合には、現在行の注目画素より左側の左端点とつながっているので、注目画素（ラベル変数Ｐ）が位置する点を左端点とはしない。
【００５９】
なお、第２の実施形態に係るラベリング処理方法では２階層の論理マスク２０を用いるので、以下の説明では、ラベル変数および左端点ラベル変数を一括に取り扱うために２次元ベクトルの記法を用いる。例えばラベル変数Ｘおよび左端点ラベル変数Ｘ＋については、一括してＸｖｅｃｔｏｒ＝［Ｘ＋，Ｘ］Ｔと表す。肩文字「Ｔ」は行列の転置を意味する。
【００６０】
図１１は、本発明の第２の実施形態に係るラベリング処理方法において用いる左端点ラベル管理テーブルを説明する模式図である。第２の実施形態に係るラベリング処理方法では、左端点ラベル間の連結情報を管理するテーブルＬＥＰＴ（１次元配列であり配列の初期値は全て０）と、左端点ラベルと連結する実ラベルの最小値を管理するテーブルＬＥＰＴ＿ＭＩＮ（１次元配列であり配列の初期値は全て０）とを、それぞれ２つ使用し、現在行が奇数行か偶数行かによって２つのテーブルを切り替えながら管理する。
【００６１】
例えば、現在行が奇数行の場合には、図１１中に示すｏｄｄ側のＬＥＰＴおよびＬＥＰＴ＿ＭＩＮのテーブルの組により左端点ラベルの管理を行い、現在行の１行前の行（即ち、現在行が偶数行）の場合には、図１１中に示すｅｖｅｎ側のＬＥＰＴおよびＬＥＰＴ＿ＭＩＮのテーブルの組により左端点ラベルの管理を行う。現在行で使用していない側のＬＥＰＴおよびＬＥＰＴ＿ＭＩＮの組は、現在行の１行前の左端点ラベルを保持することになるので、現在行および現在行の１行前の左端点ラベルの合計２行分を保持しながら、実ラベルの最小値および左端点ラベルを左から右へと伝播させている。
【００６２】
図１２は、本発明の第２の実施形態に係るラベリング処理を示すフローチャートであり、図１３は、本発明の第２の実施形態に係るラベリング処理のデータフロー図である。以下、第２の実施形態に係るラベリング処理について、図１２に示すフローチャートおよび図１３に示すデータフロー図に基づいて説明する。
【００６３】
第２の実施形態に係るラベリング処理の処理手順の概要を説明すると次の通りである。まず、１次ラベリングとして画素毎の処理（Ｓ２１）を画像１０９内で行い、その後、２次ラベリングとして画像毎の処理（Ｓ２４）を行う。画素毎の処理では、図１０に示す２階層論理マスク２０により画像１０９をラスタ走査しながら、連結性判定、実ラベル付け、および左端点ラベルの管理を行う。なお、第２の実施形態に係るラベリング処理は、行毎の処理を行わない点で、図７のフローチャートに示す第１の実施形態に係るラベリング処理と異なる。
【００６４】
第１の実施形態に係るラベリング処理方法において説明したのと同様に、第２の実施形態においても、図６に示すシステム１が第２の実施形態に係るラベリング処理方法を行う。システム１は、以下で説明するステップＳ２１〜Ｓ２４の処理を行うために使用するプログラムを、例えば実行形式で記録部１２に予め記録している。
【００６５】
また、実ラベルのラベル間連結情報を記録するテーブルをＬＲＡＭ（１次元配列であり配列の初期値は全て０）とし、左端点ラベルのラベル間連結情報を記録するテーブルをＬＥＰＴ（１次元配列であり配列の初期値は全て０）とし、左端点ラベルが連結している実ラベル上での最小値を記録するテーブルをＬＥＰＴ＿ＭＩＮ（１次元配列であり配列の初期値は全て０）と表記する。また、画像内の実ラベルの個数を表すラベルカウンタをＬＣ（初期値は１）とし、左端点ラベルカウンタをＬＬＣ（初期値は−１）と表記する。更に、変数ＶをＶ＝Ｍａｘ｛Ｘ，Ｕ｝と定義し、変数（Ｚ＋）＊、変数Ｌｍｉｎ（Ｚ＋）、および変数Ｖ＋を、それぞれ、（Ｚ＋）＊＝ＬＥＰＴ（ＬＥＰＴ（Ｚ＋））、Ｌｍｉｎ（Ｚ＋）＝ＬＥＰＴ＿ＭＩＮ（ＬＥＰＴ（Ｚ＋））、Ｖ＋＝（（Ｕ≠０かつＸ≠０のとき）Ｕ＋，（Ｕ≠０かつＸ＝０のとき）Ｕ＋，（Ｕ＝０かつＸ≠０のとき）Ｘ＋，（Ｕ＝０かつＸ＝０のとき）０）と定義し、記号「←」は記号の右に記載した変数から記号の左に記載した変数への値の代入を意味するものとする。また、ｓｉｇｎ（Ｘ＋）は、左端点ラベル変数Ｘ＋の符号を表し、ｓｉｇｎ（Ｒｏｗ）は現在行の符号を表すものとする。
【００６６】
１次ラベリング（Ｓ２１〜Ｓ２３）
ステップＳ２１において、ラベル付けの処理を画素毎に行う。次の（Ｃａｓｅ１）〜（Ｃａｓｅ１２）に示す場合分け条件の基でラベル変数ＰおよびＺに実ラベルを付与して１次ラベリング後のラベル画像を生成し、テーブルＬＲＡＭにラベル間連結情報を記録する。
（Ｃａｓｅ１）Ｐ＝０かつＺ＋≠０の場合
ＬＥＰＴ（Ｚ＋）←（Ｚ＋）＊，
ＬＥＰＴ＿ＭＩＮ（Ｚ＋）←Ｌｍｉｎ（Ｚ＋），
Ｚｖｅｃｔｏｒ←［（Ｚ＋）＊，Ｌｍｉｎ（Ｚ＋）］Ｔを実行
（Ｃａｓｅ２）Ｐ≠０かつＶ＋＝０かつＹ＋＝０かつＺ＋＝０の場合
Ｐｖｅｃｔｏｒ←［ＬＬＣ，ＬＣ］Ｔ，
ＬＥＰＴ（ＬＬＣ）←ＬＬＣ，
ＬＥＰＴ＿ＭＩＮ（ＬＬＣ）←ＬＣ，
ＬＲＡＭ（ＬＣ）←ＬＣを実行
後処理に  （ＬＬＣ＋＋，ＬＣ＋＋）  を実行
（Ｃａｓｅ３）Ｐ≠０かつＹ＋≠０かつｓｉｇｎ（Ｙ＋）＝ｓｉｇｎ（Ｒｏｗ）の場合
Ｐｖｅｃｔｏｒ←Ｙｖｅｃｔｏｒを実行
さらに（Ｚ＋≠０）の場合は  Ｚｖｅｃｔｏｒ←［（Ｚ＋）＊，Ｌｍｉｎ（Ｚ＋）］Ｔ  を実行
（Ｃａｓｅ４）Ｐ≠０かつＹ＋≠０かつｓｉｇｎ（Ｙ＋）≠ｓｉｇｎ（Ｒｏｗ）の場合
Ｐｖｅｃｔｏｒ←［ＬＬＣ，Ｙ］Ｔ，
ＬＥＰＴ（ＬＬＣ）←ＬＬＣ，
ＬＥＰＴ＿ＭＩＮ（ＬＬＣ）←Ｙ，
ＬＥＰＴ（Ｙ＋）←ＬＬＣを実行
後処理に  ＬＬＣ＋＋  を実行
さらに（Ｚ＋≠０）の場合は  Ｚｖｅｃｔｏｒ←［（Ｚ＋）＊，Ｌｍｉｎ（Ｚ＋）］Ｔ  を実行
（Ｃａｓｅ５）Ｐ≠０かつＹ＋＝０かつＶ＋≠０かつＺ＋＝０かつｓｉｇｎ（Ｖ＋）＝ｓｉｇｎ（Ｒｏｗ）の場合
Ｐｖｅｃｔｏｒ←Ｖｖｅｃｔｏｒを実行
（Ｃａｓｅ６）Ｐ≠０かつＹ＋＝０かつＶ＋≠０かつＺ＋＝０かつｓｉｇｎ（Ｖ＋）≠ｓｉｇｎ（Ｒｏｗ）の場合
Ｐｖｅｃｔｏｒ←［ＬＬＣ，Ｖ］Ｔ，
ＬＥＰＴ（ＬＬＣ）←ＬＬＣ，
ＬＥＰＴ＿ＭＩＮ（ＬＬＣ）←Ｖ，
ＬＥＰＴ（Ｖ＋）←ＬＬＣを実行
後処理に  ＬＬＣ＋＋  を実行
（Ｃａｓｅ７）Ｐ≠０かつＺ＋≠０かつＹ＋＝０かつＶ＋＝０かつｓｉｇｎ（（Ｚ＋）＊）＝ｓｉｇｎ（Ｒｏｗ）の場合
Ｐｖｅｃｔｏｒ←［（Ｚ＋）＊，Ｌｍｉｎ（Ｚ＋）］Ｔ，
Ｚｖｅｃｔｏｒ←［（Ｚ＋）＊，Ｌｍｉｎ（Ｚ＋）］Ｔを実行
（Ｃａｓｅ８）Ｐ≠０かつＺ＋≠０かつＹ＋＝０かつＶ＋＝０かつｓｉｇｎ（（Ｚ＋）＊）≠ｓｉｇｎ（Ｒｏｗ）の場合
Ｐｖｅｃｔｏｒ←［ＬＬＣ，Ｌｍｉｎ（Ｚ＋）］Ｔ，
Ｚｖｅｃｔｏｒ←［ＬＬＣ，Ｌｍｉｎ（Ｚ＋）］Ｔ，
ＬＥＰＴ（ＬＬＣ）←ＬＬＣ，
ＬＥＰＴ＿ＭＩＮ（ＬＬＣ）←Ｌｍｉｎ（Ｚ＋），
ＬＥＰＴ（（Ｚ＋）＊）←ＬＬＣを実行
後処理に  ＬＬＣ＋＋  を実行
（Ｃａｓｅ９）Ｐ≠０かつＶ＋≠０かつＺ＋≠０かつＹ＋＝０かつｓｉｇｎ（Ｖ＋）＝ｓｉｇｎ（Ｒｏｗ）かつｓｉｇｎ（（Ｚ＋）＊）＝ｓｉｇｎ（Ｒｏｗ）の場合
Ｐｖｅｃｔｏｒ←［（Ｚ＋）＊，Ｌｍｉｎ（Ｚ＋）］Ｔ，
Ｚｖｅｃｔｏｒ←［（Ｚ＋）＊，Ｌｍｉｎ（Ｚ＋）］Ｔ，
ＬＥＰＴ（Ｖ＋）←（Ｚ＋）＊，
ＬＥＰＴ＿ＭＩＮ（Ｖ＋）←Ｌｍｉｎ（Ｚ＋），
ＬＲＡＭ（Ｖ）←Ｌｍｉｎ（Ｚ＋）を実行
（Ｃａｓｅ１０）Ｐ≠０かつＶ＋≠０かつＺ＋≠０かつＹ＋＝０かつｓｉｇｎ（Ｖ＋）＝ｓｉｇｎ（Ｒｏｗ）かつｓｉｇｎ（（Ｚ＋）＊）≠ｓｉｇｎ（Ｒｏｗ）の場合
（ａ）Ｖ≧Ｌｍｉｎ（Ｚ＋）の場合
Ｐｖｅｃｔｏｒ←［Ｖ＋，Ｌｍｉｎ（Ｚ＋）］Ｔ，
Ｚｖｅｃｔｏｒ←［Ｖ＋，Ｌｍｉｎ（Ｚ＋）］Ｔ，
ＬＥＰＴ（（Ｚ＋）＊）←Ｖ＋，
ＬＥＰＴ＿ＭＩＮ（Ｖ＋）←Ｌｍｉｎ（Ｚ＋），
ＬＲＡＭ（Ｖ）←Ｌｍｉｎ（Ｚ＋）を実行
（ｂ）Ｖ＜Ｌｍｉｎ（Ｚ＋）の場合
Ｐｖｅｃｔｏｒ←［Ｖ＋，Ｖ］Ｔ，
Ｚｖｅｃｔｏｒ←［Ｖ＋，Ｖ］Ｔ，
ＬＥＰＴ（（Ｚ＋）＊）←Ｖ＋，
ＬＥＰＴ＿ＭＩＮ（（Ｚ＋）＊）←Ｖ，
ＬＲＡＭ（Ｌｍｉｎ（Ｚ＋））←Ｖを実行
（Ｃａｓｅ１１）Ｐ≠０かつＶ＋≠０かつＺ＋≠０かつＹ＋＝０かつｓｉｇｎ（Ｖ＋）≠ｓｉｇｎ（Ｒｏｗ）かつｓｉｇｎ（（Ｚ＋）＊）＝ｓｉｇｎ（Ｒｏｗ）の場合
Ｐｖｅｃｔｏｒ←［（Ｚ＋）＊，Ｌｍｉｎ（Ｚ＋）］Ｔ，
Ｚｖｅｃｔｏｒ←［（Ｚ＋）＊，Ｌｍｉｎ（Ｚ＋）］Ｔ，
ＬＥＰＴ（Ｖ＋）←（Ｚ＋）＊，
ＬＥＰＴ＿ＭＩＮ（Ｖ＋）←Ｌｍｉｎ（Ｚ＋），
ＬＲＡＭ（Ｖ）←Ｌｍｉｎ（Ｚ＋）を実行
（Ｃａｓｅ１２）Ｐ≠０かつＶ＋≠０かつＺ＋≠０かつＹ＋＝０かつｓｉｇｎ（Ｖ＋）≠ｓｉｇｎ（Ｒｏｗ）かつｓｉｇｎ（（Ｚ＋）＊）≠ｓｉｇｎ（Ｒｏｗ）の場合
（ａ）Ｖ≧Ｌｍｉｎ（Ｚ＋）の場合
Ｐｖｅｃｔｏｒ←［ＬＬＣ，Ｌｍｉｎ（Ｚ＋）］Ｔ，
Ｚｖｅｃｔｏｒ←［ＬＬＣ，Ｌｍｉｎ（Ｚ＋）］Ｔ，
ＬＥＰＴ（ＬＬＣ）←ＬＬＣ，
ＬＥＰＴ＿ＭＩＮ（ＬＬＣ）←Ｌｍｉｎ（Ｚ＋），
ＬＥＰＴ（Ｖ＋）←ＬＬＣ，
ＬＥＰＴ（（Ｚ＋）＊）←ＬＬＣ，
ＬＲＡＭ（Ｖ）←Ｌｍｉｎ（Ｚ＋）を実行
後処理に  ＬＬＣ＋＋  を実行
（ｂ）Ｖ＜Ｌｍｉｎ（Ｚ＋）の場合
Ｐｖｅｃｔｏｒ←［ＬＬＣ，Ｖ］Ｔ，
Ｚｖｅｃｔｏｒ←［ＬＬＣ，Ｖ］Ｔ，
ＬＥＰＴ（ＬＬＣ）←ＬＬＣ，
ＬＥＰＴ＿ＭＩＮ（ＬＬＣ）←Ｖ，
ＬＥＰＴ（Ｖ＋）←ＬＬＣ，
ＬＥＰＴ（（Ｚ＋）＊）←ＬＬＣ，
ＬＥＰＴ＿ＭＩＮ（（Ｚ＋）＊）←Ｖ，
ＬＲＡＭ（Ｌｍｉｎ（Ｚ＋））←Ｖ
後処理に  ＬＬＣ＋＋  を実行
次に、ステップＳ２２において、注目画素が行中の最後の画素であるか否かを判断する。最後の画素である場合はステップＳ２３を実行し、そうでない場合は、ラスタ走査順の次の画素に対してステップＳ２１を実行する。
【００６７】
次に、ステップＳ２３において、注目画素が位置する行が、画像内の最後の行であるか否かを判断する。最後の行である場合はステップＳ２４を実行し、そうでない場合は、ラスタ走査順の次の画素（即ち、次の行の最初の画素）に対してステップＳ２１を実行する。
【００６８】
２次ラベリング（Ｓ２４）
ステップＳ２４において、連続したラベル値の付与処理を画像毎に行う。ステップＳ２４において行う２次ラベリング処理は、上記した従来技術に係るステップＳ５において行う２次ラベリングの処理と同じであるため、その説明を省略する。ステップＳ２４の処理を終了すると、第２の実施形態に係るラベリング処理を終了する。
【００６９】
上記したように、本発明の第２の実施形態に係るラベリング処理方法では、行毎に現在行におけるマスクパターンの左端点に着目し、左端点に付与するラベル値（実ラベル値）と、左端点と連結する領域での最小のラベル値とを対応させながら、左端点ラベルおよび実ラベルを伝播させてゆくことにより、行毎のラベル間連結情報の統合処理が不要となる。その際に、左端点ラベルと、左端点ラベルが連結する実ラベルの最小値とを、１次元配列形式の２つのテーブルＬＥＰＴ、およびテーブルＬＥＰＴ＿ＭＩＮにより管理する。図１３のデータフロー図において、１次ラベリング処理のブロックからテーブルＬＲＡＭに接続される矢印（Ｓ２１）が入力方向のみであることからもわかるように、テーブルＬＲＡＭは、単純に実ラベル間の連結情報を保持するのみである。そして、次の行のラベルの変更を行う際に、左端点ラベルの情報を活かした処理を行うことによって、行毎のラベル間連結情報の統合処理を行わずに連結領域の統合が行われる。よって、第２の実施形態に係るラベリング処理方法によれば、ラスタ走査における水平帰線時間のような空き時間を前提としなくても、高精細画像のような高い解像度を有する入力画像に対しても有効にラベリング処理を高速化することができる。
【００７０】
また、第２の実施形態に係るラベリング処理方法においては、従来技術に係るラベリング処理方法での１次ラベリングのみを改良している。よって、第２の実施形態に係るラベリング処理方法において、１次ラベリングの処理および２次ラベリングの処理は、連続して入力される画像に対してパイプライン処理が可能である。
【００７１】
そして、第２の実施形態に係るラベリング処理方法によれば、ラベル間連結情報を管理するメモリへのアクセス回数は、各画素において最大４回で済むので、完全なパイプライン処理が実現可能である。
【００７２】
図１４は、第２の実施形態に係るラベリング処理方法におけるデータ読み出しのアクセス方法を説明する模式図であり、図１５は、第２の実施形態に係るラベリング処理方法における各画素での処理を説明するタイムチャートである。メモリへのアクセス回数に関しては、データの読み出しは２回のアクセスで済む。また、テーブルＬＥＰＴの偶数行、テーブルＬＥＰＴの奇数行、テーブルＬＥＰＴ＿ＭＩＮの偶数行、テーブルＬＥＰＴ＿ＭＩＮの奇数行、およびテーブルＬＲＡＭをそれぞれ別のメモリとして用意する場合には、最大アクセス回数は、（Ｃａｓｅ１２）の（ｂ）の場合に示すように、テーブルＬｍｉｎ（Ｚ＋）の読み出しに２回、ラベル付けに２回書き込みの、計４回のみとなる。更に、テーブルＬＥＰＴ、およびテーブルＬＥＰＴ＿ＭＩＮのメモリサイズは、入力する画像サイズの横サイズ分だけ確保すればよい。
【００７３】
以下では、第２の実施形態に係るラベリング処理方法における１次ラベリング処理の場合分けを説明する。図１６〜図３０は、第２の実施形態に係るラベリング処理方法における１次ラベリング処理の場合分けを説明する模式図である。図１６〜図２４の模式図は、注目画素が連結しない（実ラベル値を付与する）、或いは１つの領域に連結する場合であり、図２５〜図３０の模式図は、注目画素が２つの領域に連結する場合であり、走査済みの画素パターンはこれら１２のパターンに大別できるので、これらの場合分けにおいてラベリングがうまく動作していることが確認できれば、第２の実施形態に係るラベリング処理方法の動作が保証される。
【００７４】
図１６〜図３０中に、四角記号で示す部分が、２階層論理マスク２０中のラベル変数Ｐおよび左端点ラベル変数Ｐ＋であり、塗り潰しの四角記号■（以下黒点と記す）がＰ≠０の場合に対応し、塗り潰し無しの四角記号□（以下白点と記す）がＰ＝０の場合に対応する。また、太枠で示す部分が、２階層論理マスク２０中の他のラベル変数および他の左端点ラベル変数の部分である。また、矢印（←）で示す部分が点Ｐでの処理である。また、以下の説明において、Ｌ−１行を奇数行、Ｌ行を偶数行とする。また、テーブルＬＥＰＴ、およびテーブルＬＥＰＴ＿ＭＩＮを１次元配列で表現し、０より上が奇数行（ｏｄｄ）管理を表し、０より下が偶数行（ｅｖｅｎ）管理を表す。左端点ラベル値が負数のときは奇数行の左端点であり、正数のときは偶数行の左端点である。
【００７５】
図１６で示すパターンは、（Ｃａｓｅ１）の場合分けに対応する。点Ｐは白点なので点Ｚの更新処理を行うのみである。
【００７６】
図１７で示すパターンは、（Ｃａｓｅ２）の場合分けに対応する。点Ｐが黒点であり、周囲の点には黒点がないので新たに左端点ラベルと実ラベルが書き込まれる。まず、点Ｐは現在行において左端点となるので、ＬＥＰＴ［＋ｃ］←＋ｃとする。ＬＥＰＴ＿ＭＩＮ［＋ｃ］←αにより、左端点ラベル＋ｃが実ラベル上でαと連結していることを管理する。そして実ラベルの連結情報をＬＲＡＭ［α］←αにより管理する。
【００７７】
図１８で示すパターンは、（Ｃａｓｅ３）の場合分けに対応する。点Ｐが黒点であり、点Ｙと点Ｙ＋は｛＋ｃ，α｝であり、Ｙ＋が現在行と同符号であり既に現在行で左端点として現れているので、点Ｐおよび点Ｐ＋に点Ｙおよび点Ｙ＋の内容をそれぞれ書き込む。ＬＥＰＴ、ＬＥＰＴ＿ＭＩＮおよびＬＲＡＭに変更は起こらない。
【００７８】
図１９で示すパターンは、（Ｃａｓｅ４）の場合分けに対応する。点Ｐが黒点であり、点Ｙと点Ｙ＋は｛−ａ，α｝であり、Ｙ＋が現在行と異符号であり現在行では現れていないので、点Ｐにおいて左端点ラベルが書き込まれる。まず、ＬＥＰＴ［＋ｃ］←＋ｃとして新たな左端点ラベルを書き込み、ＬＥＰＴ［−ａ］←＋ｃと書き込むことで、左端点−ａが＋ｃと連結していることを管理する。また、ＬＥＰＴ＿ＭＩＮ［＋ｃ］←αにより、左端点ラベル＋ｃが実ラベル上でαと連結していることを管理する。そしてＬＲＡＭには変更は無い。
【００７９】
図２０および図２１で示すパターンは、いずれも（Ｃａｓｅ５）の場合分けに対応する。図２０は（Ｃａｓｅ５）に対応し、且つＶ＝Ｘ、Ｖ＋＝Ｘ＋である場合を示す。図２１は（Ｃａｓｅ５）に対応し、且つＶ＝Ｕ、Ｖ＋＝Ｕ＋である場合を示す。点Ｐが黒点であり、点Ｖと点Ｖ＋は｛＋ｃ，α｝であり、Ｖ＋が現在行と同符号であり既に現在行で左端点として現れているので、点Ｐおよび点Ｐ＋に点Ｖおよび点Ｖ＋の内容をそれぞれ書き込む。ＬＥＰＴ、ＬＥＰＴ＿ＭＩＮ、ＬＲＡＭに変更は起こらない。
【００８０】
図２２で示すパターンは、（Ｃａｓｅ６）の場合分けに対応する。点Ｐが黒点であり、点Ｖと点Ｖ＋は｛−ａ，α｝であり、Ｖ＋が現在行と異符号であり現在行では現れていないので、点Ｐにおいて左端点ラベルが書き込まれる。まず、ＬＥＰＴ［＋ｃ］←＋ｃとして新たな左端点ラベルを書き込み、ＬＥＰＴ［−ａ］←＋ｃと書き込むことで、左端点−ａが＋ｃと連結していることを管理する。また、ＬＥＰＴ＿ＭＩＮ［＋ｃ］←αにより、左端点ラベル＋ｃが実ラベル上でαと連結していることを管理する。そしてＬＲＡＭには変更は無い。
【００８１】
図２３で示すパターンは、（Ｃａｓｅ７）の場合分けに対応する。点Ｐが黒点であり、点ＺでのＬｍｉｎ（Ｚ＋）と点Ｚ＋での（Ｚ＋）＊は｛＋ｃ，α｝であり、（Ｚ＋）＊が現在行と同符号であり既に現在行で左端点として現れているので、点Ｐおよび点Ｐ＋にＬｍｉｎ（Ｚ＋）および（Ｚ＋）＊の内容をそれぞれ書き込む。ＬＥＰＴ、ＬＥＰＴ＿ＭＩＮ、ＬＲＡＭに変更は起こらない。
【００８２】
図２４で示すパターンは、（Ｃａｓｅ８）の場合分けに対応する。点Ｐが黒点であり、点ＺでのＬｍｉｎ（Ｚ＋）と点Ｚ＋での（Ｚ＋）＊は｛−ａ，α｝であり、（Ｚ＋）＊が現在行と異符号であり現在行では現れていないので、点Ｐにおいて左端点ラベルが書き込まれる。まず、ＬＥＰＴ［＋ｃ］←＋ｃとして新たな左端点ラベルを書き込み、ＬＥＰＴ［−ａ］←＋ｃと書き込むことで、左端点−ａが＋ｃと連結していることを管理する。また、ＬＥＰＴ＿ＭＩＮ［＋ｃ］←αにより、左端点ラベル＋ｃが実ラベル上でαと連結していることを管理する。そしてＬＲＡＭには変更は無い。
【００８３】
図２５に示すパターンは、（Ｃａｓｅ９）の場合分けに対応する。点Ｐが黒点であり、点Ｐで実ラベル（α，β）（α≦β）及び左端点ラベル（＋ｃ，＋ｄ）が連結する。まず、左端点ラベル（＋ｃ，＋ｄ）が共に現在行と同符号であるので、左端点は現在行における小さいラベル値の左端点を優先的に伝播させ、出現順の早い＋ｃを左端点ラベルとして伝播させる。更に、ＬＥＰＴ［＋ｄ］←＋ｃにより左端点ラベル（＋ｃ，＋ｄ）の連結情報を管理する。また、ＬＥＰＴ＿ＭＩＮ［＋ｄ］←αにより、左端点ラベル＋ｄが実ラベル上でαと連結していることを管理する。
【００８４】
そして、実ラベルの連結情報をＬＲＡＭ［β］←αにより管理する。これにより、点Ｚの更新処理、（Ｚ＋）＊、Ｌｍｉｎ（Ｚ＋）は、どのようにアクセスされても、左端点ラベルの最小値＋ｃ、実ラベルの最小値αが伝播される。
【００８５】
図２６に示すパターンは、（Ｃａｓｅ１０）の（ａ）の場合分けに対応する。点Ｐが黒点であり、点Ｐで実ラベル（α，β）（α＜β）及び左端点ラベル（−ａ，＋ｃ）が連結する。まず、左端点ラベル（−ａ，＋ｃ）の＋ｃのみが現在行と同符号であり、左端点は現在行と同符号の左端点を優先的に伝播させるので、＋ｃを左端点ラベルとして伝播させる。更に、ＬＥＰＴ［−ａ］←＋ｃにより左端点ラベル（−ａ，＋ｃ）の連結情報を管理する。また、ＬＥＰＴ＿ＭＩＮ［＋ｃ］←αにより、左端点ラベル＋ｃが実ラベル上でαと連結していることを管理する。
【００８６】
そして、実ラベルの連結情報をＬＲＡＭ［β］←αにより管理する。これにより、点Ｚの更新処理、（Ｚ＋）＊、Ｌｍｉｎ（Ｚ＋）は、どのようにアクセスされても、左端点ラベルの最小値＋ｃ、実ラベルの最小値αが伝播される。
【００８７】
図２７に示すパターンは、（Ｃａｓｅ１０）の（ｂ）の場合分けに対応する。点Ｐが黒点であり、点Ｐで実ラベル（α，β）（α＜β）及び左端点ラベル（−ｂ，＋ｃ）が連結する。まず、左端点ラベル（−ｂ，＋ｃ）の＋ｃのみが現在行と同符号であり、左端点は現在行と同符号の左端点を優先的に伝播させるので、＋ｃを左端点ラベルとして伝播させる。更に、ＬＥＰＴ［−ｂ］←＋ｃにより左端点ラベル（−ｂ，＋ｃ）の連結情報を管理する。また、ＬＥＰＴ＿ＭＩＮ［−ｂ］←αにより、左端点ラベル−ｂが実ラベル上でαと連結していることを管理する。
【００８８】
そして、実ラベルの連結情報をＬＲＡＭ［β］←αにより管理する。これにより、点Ｚの更新処理、（Ｚ＋）＊、Ｌｍｉｎ（Ｚ＋）は、どのようにアクセスされても、左端点ラベルの最小値＋ｃ、実ラベルの最小値αが伝播される。
【００８９】
図２８に示すパターンは、（Ｃａｓｅ１１）の場合分けに対応する。点Ｐが黒点であり、点Ｐで実ラベル（α，β）（α＜β）及び左端点ラベル（−ｂ，＋ｃ）が連結する。まず、左端点ラベル（−ｂ，＋ｃ）の＋ｃのみが現在行と同符号であり、左端点は現在行と同符号の左端点を優先的に伝播させるので、＋ｃを左端点ラベルとして伝播させる。更に、ＬＥＰＴ［−ｂ］←＋ｃにより左端点ラベル（−ｂ，＋ｃ）の連結情報を管理する。また、ＬＥＰＴ＿ＭＩＮ［−ｂ］←αにより、左端点ラベル−ｂが実ラベル上でαと連結していることを管理する。
【００９０】
そして、実ラベルの連結情報をＬＲＡＭ［β］←αにより管理する。これにより、点Ｚの更新処理、（Ｚ＋）＊、Ｌｍｉｎ（Ｚ＋）は、どのようにアクセスされても、左端点ラベルの最小値＋ｃ、実ラベルの最小値αが伝播される。
【００９１】
図２９に示すパターンは、（Ｃａｓｅ１２）の（ａ）の場合分けに対応する。点Ｐが黒点であり、点Ｐで実ラベル（α，β）（α≦β）及び左端点ラベル（−ａ，−ｂ）が連結する。まず、左端点ラベル（−ａ，−ｂ）が共に現在行と異符号であるので、新たに左端点ラベルを書き込む。まず、ＬＥＰＴ［＋ｃ］←＋ｃとして新たな左端点ラベルを書き込み、ＬＥＰＴ［−ａ］←＋ｃにより左端点ラベル（−ａ，＋ｃ）の連結情報を管理し、更に、ＬＥＰＴ［−ｂ］←＋ｃにより左端点ラベル（−ｂ，＋ｃ）の連結情報を管理する。また、ＬＥＰＴ＿ＭＩＮ［＋ｃ］←αにより、左端点ラベル＋ｃが実ラベル上でαと連結していることを管理する。
【００９２】
そして、実ラベルの連結情報をＬＲＡＭ［β］←αにより管理する。これにより、点Ｚの更新処理、（Ｚ＋）＊、Ｌｍｉｎ（Ｚ＋）は、どのようにアクセスされても、左端点ラベルの最小値＋ｃ、実ラベルの最小値αが伝播される。
【００９３】
図３０に示すパターンは、（Ｃａｓｅ１２）の（ｂ）の場合分けに対応する。点Ｐが黒点であり、点Ｐで実ラベル（α，β）（α＜β）及び左端点ラベル（−ａ，−ｂ）が連結する。まず、左端点ラベル（−ａ，−ｂ）が共に現在行と異符号であるので、新たに左端点ラベルを書き込む。まず、ＬＥＰＴ［＋ｃ］←＋ｃとして新たな左端点ラベルを書き込み、ＬＥＰＴ［−ａ］←＋ｃにより左端点ラベル（−ａ，＋ｃ）の連結情報を管理し、更に、ＬＥＰＴ［−ｂ］←＋ｃにより左端点ラベル（−ｂ，＋ｃ）の連結情報を管理する。また、ＬＥＰＴ＿ＭＩＮ［＋ｃ］←αにより、左端点ラベル＋ｃが実ラベル上でαと連結していることを管理する。更に、ＬＥＰＴ＿ＭＩＮ［−ｂ］←αにより、左端点ラベル−ｂが実ラベル上でαと連結していることを管理する。
【００９４】
そして、実ラベルの連結情報をＬＲＡＭ［β］←αにより管理する。これにより、点Ｚの更新処理、（Ｚ＋）＊、Ｌｍｉｎ（Ｚ＋）は、どのようにアクセスされても、左端点ラベルの最小値＋ｃ，実ラベルの最小値αが伝播される。
【００９５】
以上、本発明を特定の実施の形態によって説明したが、本発明は上記した実施の形態に限定されるものではない。
【００９６】
上記実施形態では、ＣＰＵ１０とメモリ１１と記録部１２とバス１３とＩ／Ｆ部１４とを備えるシステム１がラベリング処理方法を行っているが、図６に示すシステム１に代えて、電子回路基板（即ち、ラベリング処理装置）がラベリング処理方法を行ってもよい。図４に示す電子回路基板の一例では、ラベリング処理装置１００は、従来技術に係るラベリング処理方法を行うように構成されているが、ラベリング処理装置１００を、第１または第２の実施形態に係るラベリング処理方法を行うように構成すればよい。当業者であれば、従来技術に係るラベリング処理方法と、第１または第２の実施形態に係るラベリング処理方法との差異に応じて、ラベリング処理装置１００を適宜修正または変更することができるであろう。
【００９７】
また、上記実施形態では、変数および配列に対して具体的な初期値を設定しているが、初期値の値は一例であり上記実施形態に記載の値に限定されない。上記実施形態に係るラベリング処理方法では、注目画素が画像１０９の右端または左端或いは上端に位置する場合においてラベル変数Ｐにラベル値を付与しようとすると、ラベル変数Ｐに連結するラベル変数Ｘ，Ｙ，Ｚ，Ｕの何れかがラベル画像の領域外に位置するが、このようないわゆる「端処理」は、例えば、ラベル画像の領域外に位置する部分のラベル値の初期値を適切に与えることにより、或いは、ラスタ走査の折り返し点および開始点を適切に設定することにより処理することができる。
【００９８】
また、上記実施形態では、入力画像の画素値が２値化されているが、入力画像はグレースケール画像であってもよく、画素値は例えば８ビットの数値であってもよい。第１および第２の実施形態の何れにおいても、ラベル変数Ｐの値がＰ＝０の場合とＰ≠０の場合とに応じて場合分けを行っているので、グレースケール画像をそのまま入力することができる。この場合は、濃淡レベルの違いに拘わらず、異なる濃淡レベルが全て同じ濃淡レベルと判断されて、異なる濃淡レベルを有する連結領域に同じラベル値が付与される。
【００９９】
グレースケール画像を入力する場合において、濃淡レベルの違いに応じて、異なる濃淡レベルを有する連結領域を異なる領域として判断して、異なるラベル値を付与する場合（即ち、同じ濃淡レベルを有する連結領域に同じラベル値を付与する場合）には、例えば、注目画素の読み出し時の濃淡画素値（例えば４ビット）と注目画素の近傍の画素値とが同じであるか否かを判断すればよい。即ち、注目画素と同じ濃淡レベルの画素値を有する近傍の点を仮想的に画素値「１」とし、注目画素の画素値も仮想的に画素値「１」として、論理マスクの領域内において局所的な２値パターンを擬似的に導入すればよい。そのうえで、注目画素と同じ濃淡レベルに対する連結領域にラベル値を付与しながら、濃淡領域の領域ラベリング処理を行えばよい。この際、１行分のラベル画像を蓄えるラインバッファ１０４は、入力濃淡画像の１行分のラベル画像を蓄える。
【０１００】
また、上記実施形態では、ラスタ走査の走査方向が画像の左から右方向であるが、走査方向は画像の右から左方向であってもよい。本発明に係るラベリング処理方法のアルゴリズムは、走査方向が縦方向または横方法の一定の方向であれば適用可能である。
【０１０１】
また、上記実施形態では、入力画像の画素値のデータとラベル画像のラベル値のデータとを記録部１２中の別の領域に記録しているが、画素値のデータは１次ラベリング処理後には使用されることはなく、１次ラベリングの処理においてラベル値を付与する際に、画素値のデータをラベル値で上書きしてもよい。
【０１０２】
また、上記実施形態では、論理マスク１０８および２階層論理マスク２０中のラベル変数Ｐが、ラベル変数Ｘ，Ｙ，Ｚ，およびＵの各々と、それぞれ左上、上、右上、および左の位置で連結しているが、論理マスクはこれに限定されず、例えばラベル変数Ｚを省略したものであってもよい。この場合は、ラベル変数Ｐの値と、ラベル変数Ｐに連結するラベル変数Ｘ，Ｙ，Ｕのラベル値とに基づいて、ラベル変数Ｐと、ラベル変数Ｐが位置する行の１つ前の行に位置するラベル変数ＸまたはＹのいずれかとにラベル値を付与すればよい。
【実施例】
【０１０３】
以下に、本発明の実施例を示し、本発明の特徴をより明確にする。
【０１０４】
（実施例１）
実施例１では、第１の実施形態に係るラベリング処理方法によるラベリング処理の一実施例を示す。
【０１０５】
図３１は、第１の実施形態に係るラベリング処理方法における１次ラベリング処理の一例を示す図である。ここで、図３１中に示す（ｉ）は、入力画像の２値パターン（６行１１列：左端の１列目および右端の１１列目は画素値が全て０の列なので表示されていない）であり、（ｉｉ）は、１次ラベリング処理を４行目まで実行した状態のラベル画像であり、（ｉｉｉ）は、１次ラベリング処理の結果を示すラベル画像である。図３１に示すラベル画像の例では、入力画像の画素値のデータに、１次ラベリング処理で付与したラベル値を上書きしている。また、表１は、図３１中に示す１次ラベリング処理の一例でのテーブルＬＲＡＭ、ｓｕｂ＿ＬＲＡＭの状態を示す模式図である。なお、テーブルｆｌａｇは行単位で初期化（初期値は全て０）されるので図示を省略する。
【０１０６】
【表１】
2011053965.tif 000003
【０１０７】
表１に示すように、ラベル値「２」は、注目画素が４行９列に位置するとき（以下、単に（４，９）と記す。行および列の方向の定義については図１を参照）に、ラベル値「１」に合流し、以後出現は無いため、４行目の行毎の統合処理において、テーブルｓｕｂ＿ＬＲＡＭではアドレス「１，２，３」においてラベル値「１，３，４」をそれぞれ管理する。その後、次の行の１つ目の画素の処理である注目画素が（５，２）に位置するときに、アドレス「４」において、注目画素（５，２）に新たに付与したラベル値「５」を管理する。
【０１０８】
以下、図３１および表１を参照しながら、ラスタ走査順に移動する注目画素の位置に着目して、第１の実施形態に係るラベリング処理方法における１次ラベリング処理の一例を具体的に説明する。なお、テーブルＬＲＡＭ、ｓｕｂ＿ＬＲＡＭの初期値は全て０であり、変数ＬＣ＝１、変数ｓｕｂ＿ＬＣ＝０にそれぞれ初期化されている。
【０１０９】
（１）１行目の処理
先ず、行の始めでＲｏｗ＿Ｍａｘ←１とする。注目画素（１，１）は（Ｃａｓｅ１）の場合分けに該当するので、Ｚ←０とする。注目画素（１，２）〜（１、９）の画素毎の処理については、注目画素（１，１）の画素毎の処理と同じであるので、これらの説明を省略する。
【０１１０】
注目画素（１，１０）は（Ｃａｓｅ３）の場合分けに該当するので、Ｐ←１、Ｚ←０、ＬＲＡＭ（１）←１とする。付与したラベル値ｌａｂｅｌは「１」である。その後ＬＣ←２に更新する（インクリメント）。次に、ｌａｂｅｌ≧Ｒｏｗ＿Ｍａｘであるので、ｓｕｂ＿ＬＣ←１に更新し（インクリメント）、ｓｕｂ＿ＬＲＡＭ（１）←１、ｆｌａｇ（１）←１とする。
【０１１１】
行中の最後の画素であるので、行毎の統合処理を実行する。この時点でのＬＣおよびｓｕｂ＿ＬＣの値は、ＬＣ＝２、ｓｕｂ＿ＬＣ＝１である。
【０１１２】
ｌ←１、ｍ←０とする。ｋ←ｓｕｂ＿ＬＲＡＭ（１）、ＬＲＡＭ（１）←ＬＲＡＭ（ＬＲＡＭ（１））とする。ｋ＝ＬＲＡＭ（ｋ）かつｆｌａｇ（ｋ）＝１であるので、ｍ←１とし（インクリメント）、ｓｕｂ＿ＬＲＡＭ（１）←１、ｆｌａｇ（１）←０とする。ｌ←２とする（インクリメント）。
【０１１３】
ｌ≦ｓｕｂ＿ＬＣではないので、ｓｕｂ＿ＬＣ←１（値１に値１を上書き）とする。
【０１１４】
（２）２行目の処理
まず、行の始めでＲｏｗ＿Ｍａｘ←２とする。注目画素（２，１）は（Ｃａｓｅ１）の場合分けに該当するので、Ｚ←０とする。注目画素（２，２）〜（２、７）の画素毎の処理については、注目画素（２，１）の画素毎の処理と同じであるので、これらの説明を省略する。
【０１１５】
注目画素（２，８）は（Ｃａｓｅ３）の場合分けに該当するので、Ｐ←２、Ｚ←０、ＬＲＡＭ（２）←２とする。付与したラベル値ｌａｂｅｌは「２」である。その後ＬＣ←３に更新する（インクリメント）。次に、ｌａｂｅｌ≧Ｒｏｗ＿Ｍａｘであるので、ｓｕｂ＿ＬＣ←２に更新し（インクリメント）、ｓｕｂ＿ＬＲＡＭ（２）←２、ｆｌａｇ（２）←１とする。
【０１１６】
注目画素（２，９）は（Ｃａｓｅ１）の場合分けに該当するので、Ｚ←１（値１に値１を上書き）とする。
【０１１７】
注目画素（２，１０）は（Ｃａｓｅ２）の場合分けに該当するので、Ｐ←１、Ｚ←０とする。次に、ｌａｂｅｌ≧Ｒｏｗ＿Ｍａｘではないので、ｆｌａｇ（１）←１とする。
【０１１８】
行中の最後の画素であるので、行毎の統合処理を実行する。この時点でのＬＣおよびｓｕｂ＿ＬＣの値は、ＬＣ＝３、ｓｕｂ＿ＬＣ＝２である。
【０１１９】
ｌ←１、ｍ←０とする。ｋ←ｓｕｂ＿ＬＲＡＭ（１）、ＬＲＡＭ（１）←ＬＲＡＭ（ＬＲＡＭ（１））とする。ｋ＝ＬＲＡＭ（ｋ）かつｆｌａｇ（ｋ）＝１であるので、ｍ←１とし（インクリメント）、ｓｕｂ＿ＬＲＡＭ（１）←１、ｆｌａｇ（１）←０とする。ｌ←２とする（インクリメント）。
【０１２０】
ｌ≦ｓｕｂ＿ＬＣであるので、さらに、ｋ←ｓｕｂ＿ＬＲＡＭ（２）、ＬＲＡＭ（２）←ＬＲＡＭ（ＬＲＡＭ（２））とする。ｋ＝ＬＲＡＭ（ｋ）かつｆｌａｇ（ｋ）＝１であるので、ｍ←２とし（インクリメント）、ｓｕｂ＿ＬＲＡＭ（２）←２、ｆｌａｇ（２）←０とする。ｌ←３とする（インクリメント）。
【０１２１】
ｌ≦ｓｕｂ＿ＬＣではないので、ｓｕｂ＿ＬＣ←２（値２に値２を上書き）とする。
【０１２２】
（３）３行目の処理
まず、行の始めでＲｏｗ＿Ｍａｘ←３とする。注目画素（３，１）は（Ｃａｓｅ１）の場合分けに該当するので、Ｚ←０とする。注目画素（３，２）〜（３、５）の画素毎の処理については、注目画素（３，１）の画素毎の処理と同じであるので、これらの説明を省略する。
【０１２３】
注目画素（３，６）は（Ｃａｓｅ３）の場合分けに該当するので、Ｐ←３、Ｚ←０、ＬＲＡＭ（３）←３とする。付与したラベル値ｌａｂｅｌは「３」である。その後ＬＣ←４に更新する（インクリメント）。次に、ｌａｂｅｌ≧Ｒｏｗ＿Ｍａｘであるので、ｓｕｂ＿ＬＣ←３に更新し（インクリメント）、ｓｕｂ＿ＬＲＡＭ（３）←３、ｆｌａｇ（３）←１とする。
【０１２４】
以後、３行目の他の注目画素（３，８）および（３，１０）の画素毎の処理については、注目画素（２，１０）の画素毎の処理と同様であり、注目画素（３，７）および（３，９）の画素毎の処理については、注目画素（２，９）の画素毎の処理と同様であり、３行目の行毎の統合処理については２行目の行毎の統合処理と同様であるので、これらの説明を中略する。３行目の処理が終了した時点でのＬＣおよびｓｕｂ＿ＬＣの値は、ＬＣ＝４、ｓｕｂ＿ＬＣ＝３である。
【０１２５】
（４）４行目の処理
まず、行の始めでＲｏｗ＿Ｍａｘ←４とする。注目画素（４，１）は（Ｃａｓｅ１）の場合分けに該当するので、Ｚ←０とする。注目画素（４，２）〜（４、３）の画素毎の処理については、注目画素（４，１）の画素毎の処理と同じであるので、これらの説明を省略する。
【０１２６】
注目画素（４，４）は（Ｃａｓｅ３）の場合分けに該当するので、Ｐ←４、Ｚ←０、ＬＲＡＭ（４）←４とする。付与したラベル値ｌａｂｅｌは「４」である。その後ＬＣ←５に更新する（インクリメント）。次に、ｌａｂｅｌ≧Ｒｏｗ＿Ｍａｘであるので、ｓｕｂ＿ＬＣ←４に更新し（インクリメント）、ｓｕｂ＿ＬＲＡＭ（４）←４、ｆｌａｇ（４）←１とする。
【０１２７】
注目画素（４，５）は（Ｃａｓｅ１）の場合分けに該当するので、Ｚ←３（値３に値３を上書き）とする。
【０１２８】
注目画素（４，６）は（Ｃａｓｅ２）の場合分けに該当するので、Ｐ←３、Ｚ←０とする。次に、ｌａｂｅｌ≧Ｒｏｗ＿Ｍａｘではないので、ｆｌａｇ（３）←１とする。
【０１２９】
注目画素（４，７）は（Ｃａｓｅ１）の場合分けに該当するので、Ｚ←２（値２に値２を上書き）とする。
【０１３０】
注目画素（４，８）は（Ｃａｓｅ２）の場合分けに該当するので、Ｐ←２、Ｚ←０とする。次に、ｌａｂｅｌ≧Ｒｏｗ＿Ｍａｘではないので、ｆｌａｇ（２）←１とする。
【０１３１】
注目画素（４，９）は（Ｃａｓｅ６）の場合分けに該当するので、Ｐ←１、ＬＲＡＭ（２）←１（値２から値１に更新）、Ｚ←１とする。次に、ｌａｂｅｌ≧Ｒｏｗ＿Ｍａｘではないので、ｆｌａｇ（１）←１とする。
【０１３２】
注目画素（４，１０）は（Ｃａｓｅ２）の場合分けに該当するので、Ｐ←１、Ｚ←０とする。次に、ｌａｂｅｌ≧Ｒｏｗ＿Ｍａｘではないので、ｆｌａｇ（１）←１とする。
【０１３３】
行中の最後の画素であるので、行毎の統合処理を実行する。この時点でのＬＣおよびｓｕｂ＿ＬＣの値は、ＬＣ＝５、ｓｕｂ＿ＬＣ＝４である。
【０１３４】
ｌ←１、ｍ←０とする。ｋ←ｓｕｂ＿ＬＲＡＭ（１）、ＬＲＡＭ（１）←ＬＲＡＭ（ＬＲＡＭ（１））とする。ｋ＝ＬＲＡＭ（ｋ）かつｆｌａｇ（ｋ）＝１であるので、ｍ←１とし（インクリメント）、ｓｕｂ＿ＬＲＡＭ（１）←１、ｆｌａｇ（１）←０とする。ｌ←２とする（インクリメント）。
【０１３５】
ｌ≦ｓｕｂ＿ＬＣであるので、さらに、ｋ←ｓｕｂ＿ＬＲＡＭ（２）、ＬＲＡＭ（２）←ＬＲＡＭ（ＬＲＡＭ（２））とする。ここで、ｋ＝ＬＲＡＭ（ｋ）かつｆｌａｇ（ｋ）＝１ではないので、何もせずそのままｌ←３とする（インクリメント）。
【０１３６】
ｌ≦ｓｕｂ＿ＬＣであるので、さらに、ｋ←ｓｕｂ＿ＬＲＡＭ（３）、ＬＲＡＭ（３）←ＬＲＡＭ（ＬＲＡＭ（３））とする。ｋ＝ＬＲＡＭ（ｋ）かつｆｌａｇ（ｋ）＝１であるので、ｍ←２とし（インクリメント）、ｓｕｂ＿ＬＲＡＭ（２）←３（ここで値２から値３に更新）、ｆｌａｇ（３）←０とする。ｌ←４とする（インクリメント）。
【０１３７】
ｌ≦ｓｕｂ＿ＬＣであるので、さらに、ｋ←ｓｕｂ＿ＬＲＡＭ（４）、ＬＲＡＭ（４）←ＬＲＡＭ（ＬＲＡＭ（４））とする。ｋ＝ＬＲＡＭ（ｋ）かつｆｌａｇ（ｋ）＝１であるので、ｍ←３とし（インクリメント）、ｓｕｂ＿ＬＲＡＭ（３）←４（ここで値３から値４に更新）、ｆｌａｇ（４）←０とする。ｌ←５とする（インクリメント）。
【０１３８】
ｌ≦ｓｕｂ＿ＬＣではないので、ｓｕｂ＿ＬＣ←３（値４から値３に更新）とする。
【０１３９】
（５）５行目の処理
まず、行の始めでＲｏｗ＿Ｍａｘ←５とする。注目画素（５，１）は（Ｃａｓｅ１）の場合分けに該当するので、Ｚ←０とする。
【０１４０】
注目画素（５，２）は（Ｃａｓｅ３）の場合分けに該当するので、Ｐ←５、Ｚ←０、ＬＲＡＭ（５）←５とする。付与したラベル値ｌａｂｅｌは「５」である。その後ＬＣ←６に更新する（インクリメント）。次に、ｌａｂｅｌ≧Ｒｏｗ＿Ｍａｘであるので、ｓｕｂ＿ＬＣ←４に更新し（インクリメント）、ｓｕｂ＿ＬＲＡＭ（４）←５（ここで値４から値５に更新）、ｆｌａｇ（５）←１とする。
【０１４１】
以後、５行目の他の注目画素（５，３）〜（５，１０）の画素毎の処理および５行目の行毎の統合処理、並びに６行目の処理については説明を省略する。
【０１４２】
このように、実施例１の４行目の行毎の統合処理において、ｓｕｂ＿ＬＲＡＭ（３）←４とし、且つ、ｓｕｂ＿ＬＲＡＭ（２）←３としているのは、ラベル２は既に他のラベルと合流し、今後出現することはないため、管理しておく必要はないためである。
【０１４３】
なお、注目画素（４，８）については、４行目の終了時点（図３１中の（ｉｉ）に示す）ではラベル値「２」が付与されているが、１次ラベリング処理の終了時点（図３１中の（ｉｉｉ）に示す）では、ラベル値「１」が付与されている。この理由は、注目画素（４，８）の処理時点では（Ｃａｓｅ２）の場合分けに該当して、注目画素（４，８）にラベル値「２」が付与されていたが、その後、注目画素（４，９）の処理時にＬＲＡＭ（２）←１とされて、ＬＲＡＭ（２）の値が値「２」から値「１」に更新され、さらにその後、注目画素（５，７）の処理時に（Ｃａｓｅ１）の場合分けに該当して、論理マスク中のラベル変数Ｚに位置する注目画素（４，８）のラベル値「２」を、ＬＲＡＭ（ＬＲＡＭ（２））＝１に基づいて、ラベル値「１」に更新しているためである。
【０１４４】
（実施例２）
実施例２では、第１の実施形態に係るラベリング処理方法によるラベリング処理の他の実施例を示す。
【０１４５】
図３２は、第１の実施形態に係るラベリング処理方法における１次ラベリング処理の他の実施例を示す図である。図３２中に示す（ｉ）は、入力画像の２値パターン（１２行１９列：左端の１列目および右端の１９列目は画素値が全て０の列なので表示されていない）であり、（ｉｉ）は、１次ラベリング処理を５行目まで実行した状態のラベル画像である。図３２に示すラベル画像の例では、入力画像の画素値のデータに、１次ラベリング処理で付与したラベル値を上書きしている。また、表２は、図３２中に示す１次ラベリング処理の他の実施例でのテーブルＬＲＡＭ，ｓｕｂ＿ＬＲＡＭの状態を示す模式図であり、表３は、図３２中の（ｉｉ）のラベル画像に対応するテーブルｆｌａｇの状態を示す模式図である。なお、図３２の（ｉ）の２値画像パターン中に示す符号（Ａ）〜（Ｊ）は、表２中の符号（Ａ）〜（Ｊ）に対応する。
【０１４６】
【表２】
2011053965.tif 000004
【０１４７】
【表３】
2011053965.tif 000005
【０１４８】
以下、図３２と表２及び表３とを参照しながら、第１の実施形態に係るラベリング処理方法における１次ラベリング処理の他の実施例を具体的に説明する。
【０１４９】
まず、図３２の（ｉ）および表２を参照して、テーブルＬＲＡＭ、ｓｕｂ＿ＬＲＡＭの更新例を説明する。図３２の（ｉ）では最左上の点は（１，２）から始まっている。テーブルＬＲＡＭはラベル間の連結情報を管理し、テーブルｓｕｂ＿ＬＲＡＭは、現在行の１つ前の行までに自分より小さなラベルと連結していないラベルと、現在行に出現したラベルとを管理する。
【０１５０】
まず、図３２の（ｉ）に示すように、注目画素（１，２）、（３，１８）、（４，１６）、（５，８）（５，１４）、（６，１２）および（７，１０）において、ラベル値「１」〜「７」がそれぞれ付与されている。これらの注目画素に連結するそれぞれの領域には、連結する領域と同じラベル値が付与されている。
【０１５１】
符号（Ａ）で示す注目画素（８，１１）では、ラベル値「７」を有する領域とラベル値「６」を有する領域とが合流するので、テーブルＬＲＡＭのアドレス「７」に値「６」を記録することで、ラベル値「７」とラベル値「６」とが連結することを管理する。
【０１５２】
符号（Ｂ）で示す注目画素（９，６）では、新たにラベル値「８」を付与するので、テーブルＬＲＡＭのアドレス「８」に値「８」を記録する。ここで、ラベル７は既に他のラベルと合流しており、管理する必要がないので、テーブルｓｕｂ＿ＬＲＡＭのアドレス「７」に値「８」を記録する。
【０１５３】
符号（Ｃ）で示す注目画素（９，１７）では、ラベル値「３」を有する領域とラベル値「２」を有する領域とが合流するので、テーブルＬＲＡＭのアドレス「３」に値「２」を記録することで、ラベル値「３」とラベル値「２」とが連結することを管理する。
【０１５４】
符号（Ｄ）で示す９行目の統合処理時では、符号（Ｃ）で示す注目画素（９，１７）において他のラベル値に連結したラベル値「３」は管理しなくなるので、テーブルｓｕｂ＿ＬＲＡＭのアドレス「３」〜「６」にアドレス「４」〜「7」に入っているラベル値を繰り上げて管理する。（注：８行目でラベル７がラベル６と合流し、６行目の終わりにはラベル値１〜６までの６個のラベルが残る。９行目にて、ラベル８が出現するが、ラベル値７は既に合流済みなので、このラベル値８をアドレス７に上書き（代入）する。その９行目でラベル３がラベル２と合流するので、９行目の終了時点では、ラベル値３を除き、ラベル値１から８まで（ラベル値７は含まれない）の６個のラベルが合流無しラベルとして残る。そこで９行目終了時点での部分統合処理では、ラベル値３を除去し、ラベル値４，５，６，８が繰り上げられて管理される。このとき、アドレス１から６までの６個までのラベルが残っていることが管理されるので、アドレス７に残っているラベル値については問題が生じ無い。
【０１５５】
以後、表２に示すように、符号（Ｅ）〜（Ｊ）で示す注目画素においてラベル値の合流または行毎の統合処理を繰り返す度に、テーブルＬＲＡＭ、ｓｕｂ＿ＬＲＡＭを更新する。
【０１５６】
次に、図３２の（ｉｉ）および表３を参照して、テーブルｆｌａｇの更新例を説明する。テーブルｆｌａｇは、アドレス値に示すラベル値が現在行において出現したラベル値か否かを管理している。出現した場合は値「１」を記録する。
【０１５７】
６行目（図中に枠で囲む）に注目すると、まず注目画素（６，２）においてラベル値「１」が出現するので、アドレス「１」の値が「１」になる。次に、注目画素（６，８）においてラベル値「４」が出現するので、アドレス「４」の値が「１」になる。以後、表３に示すように、注目画素（６，１２）、（６，１４）、（６，１６）および（６，１８）においてラベル値「６」、「５」、「３」および「２」がそれぞれ出現する度に、アドレス「６」、「５」、「３」および「２」の値が「１」になる。これらテーブルｆｌａｇは行毎の統合処理後には全て初期値０にクリアされる。
【０１５８】
（実施例３）
実施例３では、第２の実施形態に係るラベリング処理方法によるラベリング処理の一実施例を示す。
【０１５９】
図３３は、第２の実施形態に係るラベリング処理方法における１次ラベリング処理の一実施例を示す図であり。入力画像の２値パターン（１２行１９列：左端の１列目および右端の１９列目は画素値が全て０の列なので表示されていない）を示す。図３３に示すラベル画像の例でも、入力画像の画素値のデータに、１次ラベリング処理で付与したラベル値を上書きする。また、表４〜表６は、図３３中に示す１次ラベリング処理の一実施例でのテーブルＬＥＰＴ，ＬＥＰＴ＿ＭＩＮ，ＬＲＡＭの状態をそれぞれ示す模式図である。なお、図３３の２値画像パターン中に示す符号（Ａ）〜（Ｇ）は、表４〜表６中の符号（Ａ）〜（Ｇ）に対応する。表４〜表６に示すテーブルＬＥＰＴ，ＬＥＰＴ＿ＭＩＮ，ＬＲＡＭの状態は、符号（Ａ）〜符号（Ｇ）で示す注目画素での処理後のメモリの状態を表しており、表中に丸印で囲むセルが、当該処理において値を更新する部分を表している。表６中のＬＲＡＭの列の値は、符号（Ａ）で示す注目画素での処理開始前の状態であり、その後、符号（Ｂ）〜符号（Ｇ）で示す注目画素でのそれぞれの処理時に状態が変化する所を表している。
【０１６０】
【表４】
2011053965.tif 000006
【０１６１】
【表５】
2011053965.tif 000007
【０１６２】
【表６】
2011053965.tif 000008
【０１６３】
以下、図３３と表４〜表６とを参照しながら、第２の実施形態に係るラベリング処理方法における１次ラベリング処理の一実施例を具体的に説明する。
【０１６４】
なお、図３３に示す注目画素（１，２）、（３，１８）、（４，１６）、（５，１４）、（６，１２）、（７，１０）、（８，８）および（９，６）において、ラベル値「１」〜「８」がそれぞれ付与される。これらの注目画素に連結するそれぞれの領域には、連結する領域と同じラベル値が付与される。
【０１６５】
符号（Ａ）で示す注目画素（９，１７）では、現在行が−符号であり、Ｃａｓｅ１０（ａ）に該当する処理を行う。ＬＥＰＴ（７）←−７を行い左端点７と−７とが連結していることを管理する。また、ＬＥＰＴ＿ＭＩＮ（−７）←２を行い左端点−７と実ラベル２とが連結していることを管理する。ＬＲＡＭ（３）←２を行い実ラベル２と３とが連結していることを管理する。
【０１６６】
符号（Ｂ）で示す注目画素（１１，７）では、現在行が−符号であり、Ｃａｓｅ１０（ａ）に該当する処理を行う。ＬＥＰＴ（３）←−２を行い左端点３と−２とが連結していることを管理する。また、ＬＥＰＴ＿ＭＩＮ（−２）←７を行い左端点−２と実ラベル７とが連結していることを管理する。ＬＲＡＭ（８）←７を行い実ラベル８と７とが連結していることを管理する。
【０１６７】
符号（Ｃ）で示す注目画素（１１，９）では、現在行が−符号であり、Ｃａｓｅ１０（ａ）に該当する処理を行う。ＬＥＰＴ（４）←−２を行い左端点４と−２とが連結していることを管理する。また、ＬＥＰＴ＿ＭＩＮ（−２）←６を行い左端点−２と実ラベル６とが連結していることを管理する。ＬＲＡＭ（７）←６を行い実ラベル７と６とが連結していることを管理する。
【０１６８】
符号（Ｄ）で示す注目画素（１１，１１）では、現在行が−符号であり、Ｃａｓｅ１０（ａ）に該当する処理を行う。ＬＥＰＴ（５）←−２を行い左端点５と−２とが連結していることを管理する。また、ＬＥＰＴ＿ＭＩＮ（−２）←５を行い左端点−２と実ラベル５とが連結していることを管理する。ＬＲＡＭ（６）←５を行い実ラベル６と５とが連結していることを管理する。
【０１６９】
符号（Ｅ）で示す注目画素（１１，１３）では、現在行が−符号であり、Ｃａｓｅ１０（ａ）に該当する処理を行う。ＬＥＰＴ（６）←−２を行い左端点６と−２とが連結していることを管理する。また、ＬＥＰＴ＿ＭＩＮ（−２）←４を行い左端点−２と実ラベル４とが連結していることを管理する。ＬＲＡＭ（５）←４を行い実ラベル５と４とが連結していることを管理する。
【０１７０】
符号（Ｆ）で示す注目画素（１１，１５）では、現在行が−符号であり、Ｃａｓｅ１０（ａ）に該当する処理を行う。ＬＥＰＴ（７）←−２を行い左端点７と−２とが連結していることを管理する。また、ＬＥＰＴ＿ＭＩＮ（−２）←２を行い左端点−２と実ラベル２とが連結していることを管理する。ＬＲＡＭ（４）←２を行い実ラベル８と７とが連結していることを管理する。ここで１１行目の処理において左端点−２と連結している実ラベルが７，６，５，４，２と書き変わり、最終的にＬＥＰＴ＿ＭＩＮ（−２）←２となり、左端点−２と実ラベル２とが連結していることが分かる。
【０１７１】
符号（Ｇ）で示す注目画素（１２，４）では、現在行が＋符号であり、Ｃａｓｅ１０（ｂ）に該当する処理を行う。ＬＥＰＴ（−２）←１を行い左端点−２と１とが連結していることを管理する。また、ＬＥＰＴ＿ＭＩＮ（−２）←１を行い左端点−２と実ラベル１とが連結していることを管理する。ＬＲＡＭ（２）←１を行い実ラベル２と１とが連結していることを管理する。ここで、符号（Ｇ）で示す注目画素を処理する時点では、左端点の１に連結している実ラベル１と、左端点−２と連結している実ラベル２とを比較して、小さい方を伝搬する。
【符号の説明】
【０１７２】
１    ラベリング処理システム
１０    ＣＰＵ
１１    メモリ
１２    記録部
１３    バス
１４    Ｉ／Ｆ部
２０    ２階層論理マスク
１００    ラベリング処理装置
１０１    ラベル付け論理回路１０１
１０２    ラベル統合回路１０２
１０３    １次ラベリング側のＬＲＡＭ
１０４    ラインバッファ
１０５    画像メモリ
１０６    ２次ラベリング側のＬＲＡＭ
１０８    論理マスク
１０９    画像
１０９Ａ  走査済領域
Ａ    １次ラベリング部
Ｂ    ２次ラベリング部
Ｃ    バス
Ｄ    バス
Ｅ    現在行（点Ｐが存在する行）
Ｆ    連結経路
【図１】
2011053965.tif 000009
【図２】
2011053965.tif 000010
【図３】
2011053965.tif 000011
【図４】
2011053965.tif 000012
【図５】
2011053965.tif 000013
【図６】
2011053965.tif 000014
【図７】
2011053965.tif 000015
【図８】
2011053965.tif 000016
【図９】
2011053965.tif 000017
【図１０】
2011053965.tif 000018
【図１１】
2011053965.tif 000019
【図１２】
2011053965.tif 000020
【図１３】
2011053965.tif 000021
【図１４】
2011053965.tif 000022
【図１５】
2011053965.tif 000023
【図１６】
2011053965.tif 000024
【図１７】
2011053965.tif 000025
【図１８】
2011053965.tif 000026
【図１９】
2011053965.tif 000027
【図２０】
2011053965.tif 000028
【図２１】
2011053965.tif 000029
【図２２】
2011053965.tif 000030
【図２３】
2011053965.tif 000031
【図２４】
2011053965.tif 000032
【図２５】
2011053965.tif 000033
【図２６】
2011053965.tif 000034
【図２７】
2011053965.tif 000035
【図２８】
2011053965.tif 000036
【図２９】
2011053965.tif 000037
【図３０】
2011053965.tif 000038
【図３１】
2011053965.tif 000039
【図３２】
2011053965.tif 000040
【図３３】
2011053965.tif 000041