(57)【要約】【課題】メモリの消費量を抑制しつつ、２値化画像をラベリング処理可能な画像処理装置及び画像処理方法を提供すること。【解決手段】本発明の一形態に係る画像処理装置は、２値化画像をラベリング処理する上記画像処理装置は、制御部を有する。上記制御部は、上記２値化画像を一定方向に走査することによって上記２値化画像を構成する各画素に仮ラベルを付与する第１のラベリング処理と、上記２値化画像を上記一定方向とは異なる方向に走査することによって上記仮ラベルを更新する第２のラベリング処理と、を同時に実行する。【選択図】図３
2020087356.tif 000002
【特許請求の範囲】
【請求項１】
２値化画像をラベリング処理する画像処理装置であって、
前記２値化画像を一定方向に走査することによって前記２値化画像を構成する各画素に仮ラベルを付与する第１のラベリング処理と、前記仮ラベルを前記一定方向とは異なる方向に走査することによって前記仮ラベルを更新する第２のラベリング処理と、を同時に実行する制御部
を具備する画像処理装置。
【請求項２】
請求項１に記載の画像処理装置であって、
前記制御部は、前記第１及び第２のラベリング処理を実行可能に構成された複数のラベリングブロックを有し、前記複数のラベリングブロック各々にタイミングをずらして前記第１及び第２のラベリング処理を実行させる
画像処理装置。
【請求項３】
請求項１又は２に記載の画像処理装置であって、
前記制御部は、前記第１のラベリング処理を実行する第１の仮ラベル処理部と、前記第２のラベリング処理を実行する第２の仮ラベル処理部と、前記第１及び第２のラベリング処理により得られた仮ラベルデータを記憶する複数のラインメモリと、を有し、
前記第１の仮ラベル処理部は、前記第１のラベリング処理により得られた１ライン分の仮ラベルデータを前記ラインメモリに書き込む書き込み処理を実行し、
前記第２の仮ラベル処理部は、前記仮ラベルデータを当該ラインメモリとは異なるラインメモリから読み込む処理を前記書き込み処理と同時に実行する
画像処理装置。
【請求項４】
請求項１〜３のいずれか１つに記載の画像処理装置であって、
前記制御部は、前記第２のラベリング処理において、連結している仮ラベル間の結合情報を更新し、前記第１のラベリング処理において、前記結合情報を作成しない
画像処理装置。
【請求項５】
画像処理装置が、
２値化画像を一定方向に走査することによって前記２値化画像を構成する各画素に仮ラベルを付与する第１のラベリング処理と、前記仮ラベルを前記一定方向とは異なる方向に走査することによって前記仮ラベルを更新する第２のラベリング処理と、を同時に実行する
画像処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、二値化画像に対してラベリング処理を実行する画像処理装置及びこの画像処理装置の画像処理方法に関する。
【背景技術】
【０００２】
従来、２値化画像に対する画像処理として、データが存在する連結した特徴画素に同一のラベルを付与するラベリング処理が知られている。ラベリング処理としては、仮ラベルとその結合情報（どの仮ラベルが、別のどの仮ラベルに置き換わるのかという情報）をメモリに記憶させ、２値化画像の全画素に仮ラベルを付与した後に、結合情報を基に仮ラベルを統合する処理が一般的である（例えば、特許文献１）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１４−２０３１３４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
上記したようなラベリング処理において、２値化画像に付与された仮ラベルの数と、仮ラベルが付与された画素のバラツキ具合によっては、仮ラベルとその結合情報を記憶するためにメモリの消費量が過大になる場合がある。このため、メモリの容量を大きくするためにデバイスコストがかさみ、さらにはラベリングできる画像サイズが制限されてしまうなどの課題がある。
【０００５】
以上のような事情に鑑み、本発明の目的は、メモリの消費量を抑制しつつ、２値化画像をラベリング処理可能な画像処理装置及び画像処理方法を提供することにある。
【課題を解決するための手段】
【０００６】
上記目的を達成するため、本発明の一形態に係る画像処理装置は、２値化画像をラベリング処理する。
上記画像処理装置は、制御部を有する。
上記制御部は、上記２値化画像を一定方向に走査することによって上記２値化画像を構成する各画素に仮ラベルを付与する第１のラベリング処理と、上記仮ラベルを上記一定方向とは異なる方向に走査することによって上記仮ラベルを更新する第２のラベリング処理と、を同時に実行する。
【０００７】
上記制御部は、上記第１及び第２のラベリング処理を実行可能に構成された複数のラベリングブロックを有し、上記複数のラベリングブロック各々にタイミングをずらして上記第１及び第２のラベリング処理を実行させてもよい。
【０００８】
上記制御部は、上記第１のラベリング処理を実行する第１の仮ラベル処理部と、上記第２のラベリング処理を実行する第２の仮ラベル処理部と、上記第１及び第２のラベリング処理により得られた仮ラベルデータを記憶する複数のラインメモリと、を有し、
上記第１の仮ラベル処理部は、上記第１のラベリング処理により得られた１ライン分の仮ラベルデータを上記ラインメモリに書き込む書き込み処理を実行し、
上記第２の仮ラベル処理部は、上記仮ラベルデータを当該ラインメモリとは異なるラインメモリから読み込む処理を上記書き込み処理と同時に実行してもよい。
【０００９】
上記制御部は、上記第２のラベリング処理において、連結している仮ラベル間の結合情報を更新し、上記第１のラベリング処理において、上記結合情報を作成しない
画像処理装置。
【００１０】
上記目的を達成するため、本発明の一形態に係る画像処理装置の画像処理方法は、
２値化画像を一定方向に走査することによって上記２値化画像を構成する各画素に仮ラベルを付与する第１のラベリング処理と、上記仮ラベルを上記一定方向とは異なる方向に走査することによって上記仮ラベルを更新する第２のラベリング処理と、が同時に実行される。
【発明の効果】
【００１１】
以上のように、本発明によれば、メモリの消費量を抑制しつつ、２値化画像をラベリング処理可能な画像処理装置及び画像処理方法を提供することができる。
【図面の簡単な説明】
【００１２】
【図１】本実施形態に係る画像処理装置の構成例を示すブロック図である。
【図２】ラベリングブロックの構成例を示すブロック図である。
【図３】仮ラベル及び結合メモリ作成部の構成例を示すブロック図である。
【図４】ラベリングブロックの処理の流れを示すタイミングチャートである。
【図５】ラベリングブロックの画像処理方法を示すフローチャートである。
【図６】ラベリングブロックの各ラインメモリの動作を示すブロック図である。
【図７】ラベリングブロックの各ラインメモリの動作を示すブロック図である。
【図８】ラベリングブロックの各ラインメモリの動作を示すブロック図である。
【図９】ラベリングブロックの各ラインメモリの動作を示すブロック図である。
【図１０】ラベリングブロックの各ラインメモリの動作を示すブロック図である。
【図１１】ラベリングブロックの各ラインメモリの動作を示すブロック図である。
【図１２】ラベリングブロックの各ラインメモリの動作を示すブロック図である。
【図１３】ラベリングブロックの各ラインメモリの動作を示すブロック図である。
【図１４】ラベリングブロックの各ラインメモリの動作を示すブロック図である。
【図１５】ラベリングブロックの各ラインメモリの動作を示すブロック図である。
【図１６】第１仮ラベル処理部の仮ラベル処理の参照範囲を示す図である。
【図１７】第２仮ラベル処理部の仮ラベル処理の参照範囲を示す図である。
【発明を実施するための形態】
【００１３】
以下、図面を参照しながら本実施形態を説明する。説明は以下の順序で行うものとする。
【００１４】
１．画像処理装置の全体構成
１−１．ラベリングブロックの構成
１−１−１．仮ラベル及び結合メモリ作成部の構成
２．画像処理方法
２−１．画像処理方法の概要
２−２．ラベリングブロックのラベリング処理
３．作用・効果
４．変形例
５．補足
【００１５】
１．）画像処理装置の全体構成
【００１６】
図１は、本実施形態に係る画像処理装置１００の構成例を示すブロック図である。画像処理装置１００は、図１に示すように、ラベリング処理ブロック及びメモリ制御部１０と、外部メモリ２０とを有する。画像処理装置１００は、ラベリング処理ブロック及びメモリ制御部１０及び外部メモリ２０以外に、ＲＯＭ（Read Only Memory）、ＨＤＤ（Hard Disk Drive）等のコンピュータに必要なハードウェアを有する。
【００１７】
［ラベリング処理ブロック及びメモリ制御部］
ラベリング処理ブロック及びメモリ制御部１０は、ＲＯＭやＨＤＤに格納されたプログラムを外部メモリ２０にロードして実行することによって、後述するラベリング処理を実行する。当該ラベリング処理としては、例えば、二値化された画像の縦及び横方向に連続している画素に同じラベルを付与する４連結処理（４近傍処理）や、縦、横及び斜め方向に連続している画素に同じラベルを付与する８連結処理（８近傍処理）が挙げられる。
【００１８】
プログラムは、例えば種々の記憶媒体（内部メモリ）を介してラベリング処理ブロック及びメモリ制御部１０にインストールされる。あるいは、インターネット等を介してプログラムのインストールが実行されてもよい。
【００１９】
本実施形態では、ラベリング処理ブロック及びメモリ制御部１０は、典型的にはマイクロプロセッサとして構成される。当該マイクロプロセッサとしては、例えば、ＳＩＳＤ（Single Instruction stream Single Data stream）型、ＳＩＭＤ（Single Instruction stream Multiple Data stream）型、ＭＩＳＤ（Multiple Instruction stream Single Data stream）型、ＭＩＭＤ（Multiple Instruction stream Multiple Data stream）型、ＳＭＰ（Symmetric Multi Processor）型、ＡＭＰ（Asymmetric Multi Processor）型又はＭＰＰ(Massively Parallel Processor)型などが採用可能であり、その種類は問わない。
【００２０】
ラベリング処理ブロック及びメモリ制御部１０は、典型的にはマイクロプロセッサであるがこれに限られず、マイクロプロセッサに代えて、またはこれと共に、ＤＳＰ（Digital Signal Processor）、ＡＳＩＣ（Application Specific Integrated Circuit）、またはＦＰＧＡ（Field-Programmable Gate Array）などの処理回路を有してもよい。例えば、ラベリング処理ブロック及びメモリ制御部１０がＦＰＧＡで構成される場合は、ＲＯＭからプログラムをＦＰＧＡにロードして実行することによって、後述するラベリング処理が実行される。
【００２１】
ラベリング処理ブロック及びメモリ制御部１０は、２値化画像の連結している特徴画素に対し同一のラベルを割り振るラベリング処理を実行する。そして、ラベリング処理ブロック及びメモリ制御部１０はラベリング処理により得られたラベルデータをＣＰＵメモリなどへ転送する。
【００２２】
また、ラベリング処理ブロック及びメモリ制御部１０は、図１に示すように、入出力データセレクタ１０１と、メモリコントローラ及びアービター１０５と、ラベリングブロック１０２，１０３，１０４とを有する。ラベリング処理ブロック及びメモリ制御部１０は、特許請求の範囲の「制御部」の一例である。
【００２３】
（入出力データセレクタ）
入出力データセレクタ１０１は、任意の撮像装置等により撮像された画像が２値化された２値化画像のデータ（以下、２値画像データ）と画像データ有効信号を取得し、これらをラベリングブロック１０２，１０３，１０４のうちどのラベリングブロックに出力するかを選択する。そして、入出力データセレクタ１０１は、選択したラベリングブロックに２値画像データ及び画像データ有効信号を出力する。また、入出力データセレクタ１０１は、ラベリングブロック１０２，１０３，１０４各々から２値化画像に付与された本ラベルに関する本ラベルデータと、ラベルデータ有効信号及びラベリング完了通知を取得し、これらをＣＰＵメモリなどへ転送する。
【００２４】
（メモリコントローラ及びアービター）
メモリコントローラ及びアービター１０５は、ラベリング処理ブロック及びメモリ制御部１０上で外部メモリ２０のデータの読み出し、書き出し、外部メモリ２０のリフレッシュ等、ラベリング処理ブロック及びメモリ制御部１０のインターフェースを統括する調停回路である。
【００２５】
メモリコントローラ及びアービター１０５は、外部メモリ２０を制御し、外部メモリ２０との間でデータを送受信可能に構成される。メモリコントローラ及びアービター１０５は、２値化画像の各画素に付与された仮ラベルに関する仮ラベルデータを外部メモリ２０に出力する。
【００２６】
（ラベリングブロック）
ラベリングブロック１０２，１０３，１０４は、入出力データセレクタ１０１から２値画像データ及び画像データ有効信号を取得し、この２値画像データに基づいて、２値化画像の各画素に付与する仮ラベルに関する仮ラベルデータを生成する。ラベリングブロック１０２，１０３，１０４は、生成した仮ラベルデータとラベルデータ有効信号をメモリコントローラ及びアービター１０５を介して外部メモリ２０に出力する。
【００２７】
また、ラベリングブロック１０２，１０３，１０４は、メモリコントローラ及びアービター１０５を介して外部メモリ２０から取得した仮ラベルデータ及びラベルデータ有効信号を取得し、この仮ラベルデータに基づいて、２値画像データの各画素に付与する本ラベルに関する本ラベルデータを生成する。そして、ラベリングブロック１０２，１０３，１０４は、生成した本ラベルデータと、ラベルデータ有効信号と、ラベリング完了通知とを入出力データセレクタ１０１に出力する。以下、ラベリングブロック１０２，１０３，１０４の構成を詳細に説明する。
【００２８】
１−１．）ラベリングブロックの構成
【００２９】
図２は、ラベリングブロック１０２の構成例を示すブロック図である。図２では、ラベリングブロック１０２，１０３，１０４のうちラベリングブロック１０２を代表して図示するが、ラベリングブロック１０３，１０４は、ラベリングブロック１０２と同様の構成である。
【００３０】
ラベリングブロック１０２は、図２に示すように、第１結合メモリ１０２２と、結合メモリ統合化部１０２３と、欠番穴埋め変換メモリ１０２４と、本ラベル作成部１０２５と、仮ラベル及び結合メモリ作成部１０２１とを有する。
【００３１】
第１結合メモリ１０２２は、２値化画像の各画素に付与された仮ラベル間の結合情報（どの仮ラベルが、別のどの仮ラベルに置き換わるのか示す情報）を記憶する。第１結合メモリ１０２２は、２値化画像のアドレスと、結合元及び結合先の仮ラベルデータとが対応づけられたテーブル（表１〜１０参照）を記憶する。
【００３２】
結合メモリ統合化部１０２３は、第１結合メモリ１０２２に記憶されたデータに基づき、第２結合メモリ１０２３ａに記憶されたテーブル（表１〜１０参照）の仮ラベルの並び替えを実行する。結合メモリ統合化部１０２３は、第２結合メモリ１０２３ａに記憶されたデータに基づき欠番穴埋め変換メモリ１０２４を生成する。
【００３３】
結合メモリ統合化部１０２３は、結合メモリリード／ライト制御部１０２３ｂと、第２結合メモリ１０２３ａとを有する。結合メモリリード／ライト制御部１０２３ｂは、第１及び第２結合メモリ１０２２，１０２３ｂとの間で仮ラベルデータの読み出し及び書き出しを実行する。
【００３４】
第２結合メモリ１０２３ａは、２値化画像の各画素に付与された仮ラベルにおいて、結合している仮ラベルの数を記憶する。第２結合メモリ１０２３ａは、２値化画像の結合元（アドレス）の仮ラベルデータと、結合先の仮ラベルデータとが対応づけられたテーブル（表１〜１０参照）を記憶する。
【００３５】
欠番穴埋め変換メモリ１０２４は、第２結合メモリ１０２３ａに記憶された、仮ラベル統合後のテーブル（表１６の左のテーブル）の欠番となった仮ラベルを補填するためのテーブル（表１６の右のテーブル）を記憶する。当該テーブルでは、２値画像データの結合元（アドレス）の仮ラベルデータと、結合先の本ラベルデータとが対応づけられる。
【００３６】
本ラベル作成部１０２５は、外部メモリ２０に記憶された仮ラベルデータを読み出し、この仮ラベルデータを、第２結合メモリ１０２３ａ及び欠番穴埋め変換メモリ１０２４に記憶されたテーブルを参照することによって、本ラベルデータに変換する。
【００３７】
本ラベル作成部１０２５は、仮ラベルデータから変換された本ラベルデータと、ラベルデータ有効信号及びラベリング完了通知を入出力データセレクタ１０１に出力する。また、本ラベル作成部１０２５は、第２結合メモリ／欠番穴埋め変換メモリリード／ライト制御部１０２５ａを有する。第２結合メモリ／欠番穴埋め変換メモリリード／ライト制御部１０２５ａは、第２結合メモリ１０２３ａ及び欠番穴埋め変換メモリ１０２４との間で仮ラベルデータの読み出し及び書き出しを実行する。
【００３８】
仮ラベル及び結合メモリ作成部１０２１は、２値画像データ及び画像データ有効信号を取得し、２値画像データに基づき仮ラベルデータを生成する。仮ラベル及び結合メモリ作成部１０２１は、生成した仮ラベルデータとラベルデータ有効信号をメモリコントローラ及びアービター１０５を介して外部メモリ２０に書き込む処理を実行する。第１及び第２結合メモリ１０２２，１０２３ａ及び欠番穴埋め変換メモリ１０２４としては、データを高速に読み書き可能な内部メモリが利用される。
【００３９】
仮ラベル及び結合メモリ作成部１０２１は、仮ラベルデータを生成した後で、仮ラベルの作成が完了したことを結合メモリ統合化部１０２３に通知する。また、仮ラベル及び結合メモリ作成部１０２１は、生成した仮ラベルデータに基づき仮ラベル結合情報を生成し、この情報を第１及び第２結合メモリ１０２２，１０２３ａに書き込む処理を実行する。以下、仮ラベル及び結合メモリ作成部１０２１の構成を詳細に説明する。
【００４０】
１−１−１．）仮ラベル及び結合メモリ作成部の構成
【００４１】
図３は、仮ラベル及び結合メモリ作成部１０２１の構成例を示すブロック図である。仮ラベルおよび結合メモリ作成部１０２１は、図３に示すように、ラインメモリ制御部１０２１ａと、第１仮ラベル処理部１０２１ｂと、ラインメモリ選択部１０２１ｃと、第１〜第４ラインメモリ１０２１ｄ，１０２１ｅ，１０２１ｆ，１０２１ｇと、第２仮ラベル処理部１０２１ｈとを有する。
【００４２】
ラインメモリ制御部１０２１ａは、ラインメモリ選択部１０２１ｃ、第１及び第２仮ラベル処理部１０２１ｂ，１０２１ｈの動作を制御する。
【００４３】
第１仮ラベル処理部１０２１ｂは、２値画像データ及び画像データ有効信号を取得する。第１仮ラベル処理部１０２１ｂは、２値化画像の一番左上の画素から一番右下の画素まで、右方向にラスタスキャンを実行し、データのある画素に仮ラベルを付与する（第１のラベリング処理）。
【００４４】
第１仮ラベル処理部１０２１ｂは、ラスタスキャンの結果得られた仮ラベルと、２値化画像のどの画素に仮ラベルが付与されたのかその場所に関するアドレス情報をラインメモリ選択部１０２１ｃに出力する。また、第１仮ラベル処理部１０２１ｂは、２値化画像の画像データ有効信号をラインメモリ制御部１０２１ａに出力する。
【００４５】
ラインメモリ選択部１０２１ｃは、第１及び第２仮ラベル処理部１０２１ｂ，１０２１ｈから２値化画像の走査ライン毎の仮ラベルデータ及びアドレス情報を取得し、これらを第１〜第４ラインメモリ１０２１ｄ，１０２１ｅ，１０２１ｆ，１０２１ｇのうちどのラインメモリに書き出すかを選択する。
【００４６】
また、ラインメモリ選択部１０２１ｃは、第１〜第４ラインメモリ１０２１ｄ，１０２１ｅ，１０２１ｆ，１０２１ｇのうちどのラインメモリから仮ラベルデータ及びアドレス情報を読み出すかを選択する。ラインメモリ選択部１０２１ｃは第１〜第４ラインメモリ１０２１ｄ，１０２１ｅ，１０２１ｆ，１０２１ｇのいずれかから読み出した仮ラベルデータ及びアドレス情報を第１及び第２仮ラベル処理部１０２１ｂ，１０２１ｈに出力する。
【００４７】
第２仮ラベル処理部１０２１ｈは、第１仮ラベル処理部１０２１ｂによりラベリング処理された仮ラベルの一番右上の画素から一番左下の画素まで、左方向にラスタスキャンを実行し、データのある画素に付与された仮ラベルを更新する（第２のラベリング処理）。
【００４８】
第２仮ラベル処理部１０２１ｈは、ラスタスキャンの結果更新された仮ラベルと、２値画像化画像のどの画素の仮ラベルを更新したのかその場所に関するアドレス情報をラインメモリ選択部１０２１ｃ及び外部メモリ２０に出力する。
【００４９】
第２仮ラベル処理部１０２１ｈは、ラインメモリ選択部１０２１ｃから取得した仮ラベルデータ及びアドレス情報に基づいて仮ラベル結合情報を生成し、この情報を第１及び第２結合メモリ１０２２，１０２３ａに書き込む。第２仮ラベル処理部１０２１ｈは、第１及び第２結合メモリ１０２２，１０２３ａに記憶されたテーブル（表１〜１０の結合メモリ１，２）の値をラスタスキャンしながら逐次更新する。
【００５０】
［外部メモリ］
外部メモリ２０は、半導体素子を使った記憶装置であり、データの書き込みと読み出しができるメモリである。外部メモリ２０は、ラベリングブロック１０２，１０３，１０４各々から出力された仮ラベルデータをメモリコントローラ及びアービター１０５を介して取得し、これらを一時記憶する。本実施形態では、データの一時意記憶領域として単価の安い外部メモリ２０利用することにより大容量メモリを構築しやすいという利点がある。
【００５１】
外部メモリ２０は、典型的にはＤＲＡＭ（Dynamic Random Access Memory）であるがこれに限られず、例えば、ＳＲＡＭ（Static Random Access Memory）、ＦｅＲＡＭ（Ferroelectric Random Access Memory）、ＭＲＡＭ（Magnetoresistive Random Access Memory）、ＲｅＲＡＭ（Resistive Random Access Memory）又はＰＲＡＭ（Phase change Random Access Memory）などであってもよい。
【００５２】
２．）画像処理方法
【００５３】
２−１．）画像処理方法の概要
【００５４】
図４はラベリングブロック１０２，１０３，１０４の処理の流れを示すタイミングチャートであり、各ラベリングブロック１０２，１０３，１０４が２値画像データから本ラベルデータを生成するまでの処理の流れを示す図である。
【００５５】
本実施形態の画像処理装置１００の画像処理方法では、（１）仮ラベル及び結合メモリ作成、（２）結合メモリ統合化、（３）本ラベル作成が実行され、これらの処理が３つのラベリングブロックによりフレーム単位で間隔をずらして同時に実行されることで、連続したラベリング結果が得られる。
【００５６】
具体的には、フレーム１ではラベリングブロック１０２の仮ラベル処理（ステップＳ１０２）が実行され、フレーム２ではラベリングブロック１０２の統合化処理（ステップＳ１０３）とラベリングブロック１０３の仮ラベル処理が実行され、フレーム３ではラベリングブロック１０２の本ラベル処理（ステップＳ１０５）と、ラベリングブロック１０３の統合化処理と、ラベリングブロック１０４の仮ラベル処理とが実行され、以降同様の処理が繰り返される。これにより、所定のフレームレートで撮像されたフレーム画像毎の本ラベルデータをリアルタイムに得ることができ、２値化された静止画だけではなく、動画もラベリングすることができる。
【００５７】
２−２．）ラベリングブロックのラベリング処理
【００５８】
図５はラベリングブロック１０２の画像処理方法を示すフローチャートであり、図６〜図１５はラベリングブロック１０２の各ラインメモリ１０２１ｄ，１０２１ｅ，１０２１ｆ，１０２１ｇの動作を示すブロック図である。以下、ラベリングブロック１０２のラベリング処理について図５〜図１５を適宜参照しながら説明する。
【００５９】
なお、図５〜図１５では、ラベリングブロック１０２，１０３，１０４のうちラベリングブロック１０２のラベリング処理を代表して図示するが、ラベリングブロック１０３，１０４は、ラベリングブロック１０２と同様の処理を実行する。また、図６〜図１５中で使用されている語句を以下のように定義する。
【００６０】
・仮ラベル処理（右方向）・・・２値化画像を右方向に走査する処理。
・仮ラベル処理（左方向）・・・２値化画像を左方向に走査する処理。
・仮ｎライン（右方向）：Ｗ・・・２値化画像を右方向に走査した場合のｎライン目の仮ラベルデータをラインメモリに書き込む。
・仮ｎライン（右方向）：Ｒ・・・２値化画像を右方向に走査した場合のｎライン目の仮ラベルデータをラインメモリから読み込む。
・仮ｎライン（左方向）：Ｗ・・・仮ラベルを左方向に走査した場合のｎライン目の仮ラベルデータをラインメモリに書き込む。
・仮ｎライン（左方向）：Ｒ・・・仮ラベルを左方向に走査した場合のｎライン目の仮ラベルデータをラインメモリから読み込む。
・Ｗ・・・ラインメモリへの書き込み
・Ｒ・・・ラインメモリからの読み出し
【００６１】
［ステップＳ１０１：２値画像データの転送］
先ず、任意の撮像装置等により撮像された画像が２値化された２値画像データがラベリングブロック１０２に出力される。この際、２値化画像を構成する画素毎の情報が第１仮ラベル処理部１０２１ｂに出力される。これにより、後述する仮ラベル処理が実行される。
【００６２】
［ステップＳ１０２：仮ラベル処理］
次に、ラベリングブロック１０２は、取得した２値化画像に対して下記の規則１〜１０に従って走査ライン毎に仮ラベル処理を実行する。ステップＳ１０２では、走査方向が右方向のラスタスキャン（４連結処理）と、走査方向は左方向のラスタスキャン（４連結処理）と、結合メモリの更新が同時進行で実行される。ここで、仮ラベルカウンタの値と結合メモリ１，２のカウンタ値は、ステップＳ１０２を実行される前に０に初期化される。なお、図１６は第１仮ラベル処理部１０２１ｂの仮ラベル処理の参照範囲を示す図であり、図１７は第２仮ラベル処理部１０２１ｈの仮ラベル処理の参照範囲を示す図である。
【００６３】
（走査方向が右方向のラスタスキャン）
規則１：仮ラベリングの処理対象として注目される画素（以下、注目画素）にデータがない場合
・仮ラベルカウンタ値：インクリメントなし
・注目画素の仮ラベル：なにもしない
【００６４】
規則２：注目画素の左隣と上部の画素にデータが無く、注目画素にデータがある場合
・仮ラベルカウンタ値：１インクリメント
・注目画素の仮ラベル：インクリメント後の仮ラベルのカウンタ値とする
【００６５】
規則：３：注目画素の左隣の画素の仮ラベルがＡであり、上部の画素にデータが無く、注目画素にデータがある場合
・仮ラベルカウンタ値：なにもしない
・注目画素の仮ラベル：Ａとする
【００６６】
規則４：注目画素の左隣の画素にデータが無く、上部の画素の仮ラベルがＢであり、注目画素にデータある場合
・仮ラベルカウンタ値：なにもしない
・注目画素の仮ラベル：Ｂとする
【００６７】
規則５：注目画素の左隣の画素の仮ラベルがＡであり、上部の画素の仮ラベルがＢであり、注目画素にデータがある場合
・仮ラベルカウンタ値：なにもしない
・注目画素の仮ラベル：ＡとＢを比較した上での最小値とする
【００６８】
（走査方向が左方向のラスタスキャン）
規則６：注目画素にデータがない場合
・注目画素の仮ラベル：なにもしない
・結合メモリ１：更新しない
・結合メモリ２：更新しない
【００６９】
規則７：注目画素の右隣と上部の画素にデータがなく、注目画素の仮ラベルがＸの場合
・注目画素の仮ラベル：仮ラベルＸを維持
・結合メモリ１：更新しない
・結合メモリ２：アドレス（結合元）及びデータ（結合先）の値をＸに更新
【００７０】
規則８：注目画素の右隣の画素の仮ラベルがＡであり、上部の画素にデータがなく、注目画素の仮ラベルがＸの場合
・注目画素の仮ラベル：ＡとＸを比較した上での最小値に更新
【００７１】
規則８−１：上記規則８に加えて、ＡとＸを比較した上での最小値がＡではない場合
・結合メモリ１：アドレスカウンタの値を１インクリメント
アドレスをインクリメント後のアドレスカウンタに更新
データ（結合元）の値をＡとＸを比較した上で最大値に更新
データ（結合先）の値をＡとＸを比較した上で最小値に更新
・結合メモリ２：アドレス（結合元）の値をＡとＸを比較した上で最大値に更新
データ（結合先）の値をＡとＸを比較した上で最小値に更新
【００７２】
規則８−２：上記規則８に加えて、上記規則８−１以外の場合
・結合メモリ１：更新しない
・結合メモリ２：更新しない
【００７３】
規則９：注目画素の右隣の画素にデータがなく、上部の画素の仮ラベルがＢであり、注目画素の仮ラベルがＸの場合
・注目画素の仮ラベル：ＢとＸを比較した上での最小値に更新
【００７４】
規則９−１：上記規則９に加えて、ＢとＸを比較した上での最小値がＢではない場合
・結合メモリ１：アドレスカウンタの値を１インクリメント
アドレスをインクリメント後のアドレスカウンタに更新
データ（結合元）の値をＢとＸを比較した上での最大値に更新
データ（結合先）の値をＢとＸを比較した上での最小値に更新
・結合メモリ２：アドレス（結合元）の値をＢとＸを比較した上での最大値に更新
データ（結合先）の値をＢとＸを比較した上での最小値に更新
【００７５】
規則９−２：上記規則９に加えて、上記規則９−１以外の場合
結合メモリ１：更新しない
結合メモリ２：更新しない
【００７６】
規則１０：注目画素の右隣の画素の仮ラベルがＡであり、上部の画素の仮ラベルがＢであり、注目画素の仮ラベルがＸの場合
注目画素の仮ラベル：ＡとＢとＸを比較した上での最小値に更新
【００７７】
規則１０−１：上記規則１０に加えて、ＡとＢとＸを比較した上での最小値がＡ，Ｂの場合
結合メモリ１：更新しない
結合メモリ２：更新しない
【００７８】
規則１０−２：上記規則１０に加えて、上記規則１０−１以外の場合
結合メモリ１：アドレスカウンタの値を１インクリメント
アドレスをインクリメント後のアドレスカウンタに更新
データ（結合元）の値をＡとＢとＸを比較した上での最大値に更新
データ（結合先）の値をＡとＢとＸを比較した上での最小値に更新
結合メモリ２：アドレス（結合元）の値をＡとＢとＸを比較した上での最大値に更新
データ（結合先）の値をＡとＢとＸを比較して上での最小値に更新
【００７９】
第１仮ラベル処理部１０２１ｂは、２値化画像の１ライン目を右方向にスキャンする。この際、第１仮ラベル処理部１０２１ｂは、規則１〜３に従ってデータの有る画素に仮ラベルを付与する。これにより、表１に示すようにＰ（Ｘ１，Ｙ１），Ｐ（Ｘ２，Ｙ１），Ｐ（Ｘ３，Ｙ１），Ｐ（Ｘ４，Ｙ１）の画素にそれぞれ仮ラベル「１」が付与される。
【００８０】
第１仮ラベル処理部１０２１ｂは、２値化画像の１ライン目を右方向にスキャンすることにより得られた仮ラベルデータを図６に示すように第１ラインメモリ１０２１ｄに書き出す。
【００８１】
【表１】
2020087356.tif 000003
【００８２】
本実施形態では、８×８画素の２値化画像をスキャンすることを一例とし、当該画像の１ライン目の画素に仮ラベルが付与される様子を表１として示す。なお、表１の「●」はデータが存在する画素を意味し、以下の説明においても同義である。
【００８３】
次に、第１仮ラベル処理部１０２１ｂは、第１ラインメモリ１０２１ｄに記憶されている仮ラベルデータを読み出し、この仮ラベルデータを参照しつつ２値化画像の２ライン目を右方向にスキャンする。この際、第１仮ラベル処理部１０２１ｂは、規則１，２に従ってデータのある画素に仮ラベルを付与する。これにより、表２に示すように画素Ｐ（Ｘ５，Ｙ２）に仮ラベル「２」が付与される。
【００８４】
第１仮ラベル処理部１０２１ｂは、２値化画像の２ライン目を右方向にスキャンすることにより得られた仮ラベルデータを図７に示すように第２ラインメモリ１０２１ｅに書き出す。２値化画像の２ライン目の画素に仮ラベルが付与される様子を表２として示す。
【００８５】
【表２】
2020087356.tif 000004
【００８６】
次いで、第１仮ラベル処理部１０２１ｂは、第２ラインメモリ１０２１ｅに記憶されている仮ラベルデータを読み出し、この仮ラベルデータを参照しつつ２値化画像の３ライン目を右方向にスキャンする。この際、第１仮ラベル処理部１０２１ｂは規則１，２，４に従ってデータの有る画素に仮ラベルを付与する。これにより、表３に示すように画素Ｐ（Ｘ１，Ｙ３），Ｐ（Ｘ３，Ｙ３），Ｐ（Ｘ５，Ｙ３），Ｐ（Ｘ８，Ｙ３）にそれぞれ仮ラベル「３」，「４」，「２」，「５」が付与される。第１仮ラベル処理部１０２１ｂは２値化画像の３ライン目を右方向にスキャンすることにより得られた仮ラベルデータを図８に示すように第３ラインメモリ１０２１ｆに書き出す。
【００８７】
また、第２仮ラベル処理部１０２１ｈは、第１仮ラベル処理部１０２１ｂの３ライン目の仮ラベル処理と並行して第１ラインメモリ１０２１ｄに記憶されている仮ラベルデータを読み出し、この仮ラベルデータを参照しつつ仮ラベルの１ライン目を左方向にスキャンする。この際、第２仮ラベル処理部１０２１ｈは規則６，７，８，８−２に従って第１仮ラベル処理部１０２１ｂにより付与された仮ラベルを更新し、第２結合メモリ１０２３ａに記憶された結合メモリ２を更新する。これにより、表３に示すように画素Ｐ（Ｘ１，Ｙ１），Ｐ（Ｘ２，Ｙ１），Ｐ（Ｘ３，Ｙ１），Ｐ（Ｘ４，Ｙ１）にそれぞれ付与された仮ラベル「１」が維持され、アドレス（結合元）及びデータ（結合先）の値がそれぞれ「１」に更新される。
【００８８】
第２仮ラベル処理部１０２１ｈは仮ラベルの１ライン目を左方向にスキャンすることにより得られた仮ラベルデータを第１ラインメモリ１０２１ｄに上書きし、外部メモリ２０に出力する。２値化画像の３ライン目が右方向にスキャンされ１ライン目が左方向にスキャンされる様子と、これに伴って結合メモリ２が更新される様子を表３として併記して示す。
【００８９】
【表３】
2020087356.tif 000005
【００９０】
続いて、第１仮ラベル処理部１０２１ｂは、第３ラインメモリ１０２１ｆに記憶されている仮ラベルデータを読み出し、この仮ラベルデータを参照しつつ２値化画像の４ライン目を右方向にスキャンする。この際、第１仮ラベル処理部１０２１ｂは規則１〜５に従ってデータの有る画素に仮ラベルを付与する。これにより、表４に示すように画素Ｐ（Ｘ１，Ｙ４），Ｐ（Ｘ２，Ｙ４），Ｐ（Ｘ３，Ｙ４），Ｐ（Ｘ４，Ｙ４），Ｐ（Ｘ５，Ｙ４），Ｐ（Ｘ７，Ｙ４），Ｐ（Ｘ８，Ｙ４）にそれぞれ仮ラベル「３」，「３」，「３」，「３」，「２」，「６」，「５」が付与される。第１仮ラベル処理部１０２１ｂは２値化画像の４ライン目を右方向にスキャンすることにより得られた仮ラベルデータを図９に示すように第４ラインメモリ１０２１ｇに書き出す。
【００９１】
また、第２仮ラベル処理部１０２１ｈは、第１仮ラベル処理部１０２１ｂの４ライン目の仮ラベル処理と並行して第１ラインメモリ１０２１ｄに記憶されている仮ラベルデータと第２ラインメモリ１０２１ｅに記憶されている仮ラベルデータとを読み出し、これらの仮ラベルデータを参照しつつ仮ラベルの２ライン目を左方向にスキャンする。この際、第２仮ラベル処理部１０２１ｈは規則６，７に従って第１仮ラベル処理部１０２１ｂにより付与された仮ラベルを更新し、第２結合メモリ１０２３ａに記憶された結合メモリ２を更新する。これにより、表４に示すように画素Ｐ（Ｘ５，Ｙ２）に付与された仮ラベル「２」が維持され、アドレス（結合元）及びデータ（結合先）の値がそれぞれ「２」に更新される。
【００９２】
第２仮ラベル処理部１０２１ｈは仮ラベルの２ライン目を左方向にスキャンすることにより得られた仮ラベルデータを第２ラインメモリ１０２１ｅに上書きし、外部メモリ２０に出力する。２値化画像の４ライン目が右方向にスキャンされ２ライン目が左方向にスキャンされる様子とこれに伴って結合メモリ２が更新される様子を表４として併記して示す。
【００９３】
【表４】
2020087356.tif 000006
【００９４】
次に、第１仮ラベル処理部１０２１ｂは、第４ラインメモリ１０２１ｇに記憶されている仮ラベルデータを読み出し、この仮ラベルデータを参照しつつ２値化画像の５ライン目を右方向にスキャンする。この際、第１仮ラベル処理部１０２１ｂは規則１，２，４，５に従ってデータの有る画素に仮ラベルを付与する。これにより、表５に示すように画素Ｐ（Ｘ２，Ｙ５），Ｐ（Ｘ６，Ｙ５），Ｐ（Ｘ７，Ｙ５），Ｐ（Ｘ８，Ｙ５）にそれぞれ仮ラベル「３」，「７」，「６」，「５」が付与される。第１仮ラベル処理部１０２１ｂは２値化画像の５ライン目を右方向にスキャンすることにより得られた仮ラベルデータを図１０に示すように第１ラインメモリ１０２１ｄに上書きする。
【００９５】
また、第２仮ラベル処理部１０２１ｈは、第１仮ラベル処理部１０２１ｂの５ライン目の仮ラベル処理と並行して第２ラインメモリ１０２１ｅに記憶されている仮ラベルデータと第３ラインメモリ１０２１ｆに記憶されている仮ラベルデータとを読み出し、これらの仮ラベルデータを参照しつつ仮ラベルの３ライン目を左方向にスキャンする。この際、第２仮ラベル処理部１０２１ｈは規則６，７，９，９−２に従って第１仮ラベル処理部１０２１ｂにより付与された仮ラベルを更新し、第２結合メモリ１０２３ａに記憶された結合メモリ２を更新する。これにより、表５に示すように画素Ｐ（Ｘ１，Ｙ３），Ｐ（Ｘ３，Ｙ３），Ｐ（Ｘ５，Ｙ３），Ｐ（Ｘ８，Ｙ３）にそれぞれ付与された仮ラベル「３」，「４」，「２」，「５」が維持され、アドレス（結合元）及びデータ（結合先）の値がそれぞれ「３」，「４」，「５」に更新される。
【００９６】
第２仮ラベル処理部１０２１ｈは２値化画像の３ライン目を左方向にスキャンすることにより得られた仮ラベルデータを第３ラインメモリ１０２１ｆに上書きし、外部メモリ２０に出力する。２値化画像の５ライン目が右方向にスキャンされ３ライン目が左方向にスキャンされる様子とこれに伴って結合メモリ２が更新される様子を表５として併記して示す。
【００９７】
【表５】
2020087356.tif 000007
【００９８】
次いで、第１仮ラベル処理部１０２１ｂは、第１ラインメモリ１０２１ｄに記憶されている仮ラベルデータを読み出し、この仮ラベルデータを参照しつつ２値化画像の６ライン目を右方向にスキャンする。この際、第１仮ラベル処理部１０２１ｂは規則１，２，４，５に従ってデータの有る画素に仮ラベルを付与する。これにより、表６に示すように画素Ｐ（Ｘ２，Ｙ６），Ｐ（Ｘ５，Ｙ６），Ｐ（Ｘ６，Ｙ６），Ｐ（Ｘ７，Ｙ６），Ｐ（Ｘ８，Ｙ６）にそれぞれ仮ラベル「３」，「８」，「７」，「６」，「５」が付与される。第１仮ラベル処理部１０２１ｂは２値化画像の６ライン目を右方向にスキャンすることにより得られた仮ラベルデータを図１１に示すように第２ラインメモリ１０２１ｅに上書きする。
【００９９】
また、第２仮ラベル処理部１０２１ｈは、第１仮ラベル処理部１０２１ｂの６ライン目の仮ラベル処理と並行して第３ラインメモリ１０２１ｆに記憶されている仮ラベルデータと第４ラインメモリ１０２１ｇに記憶されている仮ラベルデータとを読み出し、これらの仮ラベルデータを参照しつつ２値化画像の４ライン目を左方向にスキャンする。この際、第２仮ラベル処理部１０２１ｈは規則６，８，８−２，９，９−２，１０，１０−２に従って第１仮ラベル処理部１０２１ｂにより付与された仮ラベルを更新し、第１，２結合メモリ１０２２，１０２３ａに記憶された結合メモリ１，２を更新する。これにより、表６に示すように画素Ｐ（Ｘ１，Ｙ４），Ｐ（Ｘ２，Ｙ４），Ｐ（Ｘ３，Ｙ４），Ｐ（Ｘ４，Ｙ４），Ｐ（Ｘ７，Ｙ４）に付与された仮ラベルがそれぞれ「２」，「２」，「２」，「２」，「５」に更新され、画素Ｐ（Ｘ５，Ｙ４），Ｐ（Ｘ８，Ｙ４）にそれぞれ付与された仮ラベル「２」，「５」が維持される。
【０１００】
また、結合メモリ１のアドレス値が「１」，「２」にインクリメントし、これらのアドレス値にそれぞれ対応した結合元及び結合先のカウンタ値が「４」，「２」及び「３」，「２」に更新される。また、結合メモリ２のアドレス（結合元）の値「３」に対応したデータ（結合先）の値が２に更新され、アドレス（結合元）の値「４」に対応したデータ（結合先）の値が「２」に更新される。
【０１０１】
第２仮ラベル処理部１０２１ｈは仮ラベルの４ライン目を左方向にスキャンすることにより得られた仮ラベルデータを第４ラインメモリ１０２１ｇに上書きし、外部メモリ２０に出力する。２値化画像の６ライン目が右方向にスキャンされ４ライン目が左方向にスキャンされる様子とこれに伴って結合メモリ１，２が更新される様子を表６として併記して示す。
【０１０２】
【表６】
2020087356.tif 000008
【０１０３】
続いて、第１仮ラベル処理部１０２１ｂは、第２ラインメモリ１０２１ｅに記憶されている仮ラベルデータを読み出し、この仮ラベルデータを参照しつつ２値化画像の７ライン目を右方向にスキャンする。この際、第１仮ラベル処理部１０２１ｂは規則１，３，４に従ってデータの有る画素に仮ラベルを付与する。これにより、表７に示すように画素Ｐ（Ｘ２，Ｙ７），Ｐ（Ｘ３，Ｙ７），Ｐ（Ｘ４，Ｙ７），Ｐ（Ｘ５，Ｙ７）にそれぞれ仮ラベル「３」，「３」，「３」，「３」が付与される。第１仮ラベル処理部１０２１ｂは２値化画像の７ライン目を左方向にスキャンすることにより得られた仮ラベルデータを図１２に示すように第３ラインメモリ１０２１ｆに上書きする。
【０１０４】
また、第２仮ラベル処理部１０２１ｈは、第１仮ラベル処理部１０２１ｂの７ライン目の仮ラベル処理と並行して第１ラインメモリ１０２１ｄに記憶されている仮ラベルデータと第４ラインメモリ１０２１ｇに記憶されている仮ラベルデータとを読み出し、これらの仮ラベルデータを参照しつつ仮ラベルの５ライン目を左方向にスキャンする。この際、第２仮ラベル処理部１０２１ｈは規則６，８，８−２，９，９−２，１０，１０−１に従って第１仮ラベル処理部１０２１ｂにより付与された仮ラベルを更新する。これにより、表７に示すように画素Ｐ（Ｘ２，Ｙ５），Ｐ（Ｘ６，Ｙ５），Ｐ（Ｘ７，Ｙ５）に付与された仮ラベルがそれぞれ「２」，「５」，「５」に更新され、画素Ｐ（Ｘ８，Ｙ５）に付与された仮ラベル「５」が維持される。
【０１０５】
第２仮ラベル処理部１０２１ｈは２値化画像の５ライン目を左方向にスキャンすることにより得られた仮ラベルデータを第１ラインメモリ１０２１ｄに上書きし、外部メモリ２０に出力する。２値化画像の７ライン目が右方向にスキャンされ５ライン目が左方向にスキャンされる様子を表７として示す。
【０１０６】
【表７】
2020087356.tif 000009
【０１０７】
次に、第１仮ラベル処理部１０２１ｂは、第３ラインメモリ１０２１ｆに記憶されている仮ラベルデータを読み出し、この仮ラベルデータを参照しつつ２値化画像の８ライン目を右方向にスキャンする。この際、第１仮ラベル処理部１０２１ｂは規則１，２，３に従ってデータの有る画素に仮ラベルを付与する。これにより、表８に示すように画素Ｐ（Ｘ７，Ｙ８），Ｐ（Ｘ８，Ｙ８）にそれぞれ仮ラベル「９」，「９」が付与される。第１仮ラベル処理部１０２１ｂは２値化画像の８ライン目を右方向にスキャンすることにより得られた仮ラベルデータを図１３に示すように第４ラインメモリ１０２１ｇに上書きする。
【０１０８】
また、第２仮ラベル処理部１０２１ｈは、第１仮ラベル処理部１０２１ｂの８ライン目の仮ラベル処理と並行して第１ラインメモリ１０２１ｄに記憶されている仮ラベルデータと第２ラインメモリ１０２１ｅに記憶されている仮ラベルデータとを読み出し、これらの仮ラベルデータを参照しつつ仮ラベルの６ライン目を左方向にスキャンする。この際、第２仮ラベル処理部１０２１ｈは規則６，８，８−２，９，９−２，１０，１０−２に従って第１仮ラベル処理部１０２１ｂにより付与された仮ラベルを更新する。これにより、表８に示すように画素Ｐ（Ｘ２，Ｙ６），Ｐ（Ｘ５，Ｙ６），Ｐ（Ｘ６，Ｙ６），Ｐ（Ｘ７，Ｙ６）に付与された仮ラベルがそれぞれ「２」，「５」，「５」，「５」に更新され、画素Ｐ（Ｘ８，Ｙ６）に付与された仮ラベル「５」が維持される。
【０１０９】
第２仮ラベル処理部１０２１ｈは２値化画像の６ライン目を左方向にスキャンすることにより得られた仮ラベルデータを第２ラインメモリ１０２１ｅに上書きし、外部メモリ２０に出力する。２値化画像の８ライン目が右方向にスキャンされ６ライン目が左方向にスキャンされる様子を表８として示す。
【０１１０】
【表８】
2020087356.tif 000010
【０１１１】
次いで、第２仮ラベル処理部１０２１ｈは、第２ラインメモリ１０２１ｅに記憶されている仮ラベルデータと第３ラインメモリ１０２１ｆに記憶されている仮ラベルデータとを読み出し、これらの仮ラベルデータを参照しつつ仮ラベルの７ライン目を左方向にスキャンする。この際、第２仮ラベル処理部１０２１ｈは規則６，８，８−２，９，９−１，１０，１０−２に従って第１仮ラベル処理部１０２１ｂにより付与された仮ラベルを更新し、第１，２結合メモリ１０２２，１０２３ａに記憶された結合メモリ１，２を更新する。これにより、表９に示すように画素Ｐ（Ｘ２，Ｙ７）に付与された仮ラベルが「２」に更新され、画素Ｐ（Ｘ３，Ｙ７），Ｐ（Ｘ４，Ｙ７），Ｐ（Ｘ５，Ｙ７）にそれぞれ付与された仮ラベル「３」，「３」，「３」が維持される。
【０１１２】
また、結合メモリ１のアドレス値が「３」，「４」にインクリメントし、これらのアドレス値にそれぞれ対応した結合元及び結合先のカウンタ値が「５」，「３」及び「３」，「２」に更新される。また、結合メモリ２のアドレス（結合元）の値「５」に対応したデータ（結合先）の値が「３」に更新される。
【０１１３】
第２仮ラベル処理部１０２１ｈは２値化画像の７ライン目を左方向にスキャンすることにより得られた仮ラベルデータを図１４に示すように第３ラインメモリ１０２１ｆに上書きし、外部メモリ２０に出力する。２値化画像の７ライン目が左方向にスキャンされる様子とこれに伴って結合メモリ１，２が更新される様子を表９として併記して示す。
【０１１４】
【表９】
2020087356.tif 000011
【０１１５】
続いて、第２仮ラベル処理部１０２１ｈは、第３ラインメモリ１０２１ｆに記憶されている仮ラベルデータと第４ラインメモリ１０２１ｇに記憶されている仮ラベルデータとを読み出し、これらの仮ラベルデータを参照しつつ仮ラベルの８ライン目を左方向にスキャンする。この際、第２仮ラベル処理部１０２１ｈは規則６，７，８，８−２に従って第１仮ラベル処理部１０２１ｂにより付与された仮ラベルを更新し、第２結合メモリ１０２３ａに記憶された結合メモリ２を更新する。これにより、表１０に示すように画素Ｐ（Ｘ７，Ｙ８），Ｐ（Ｘ８，Ｙ８）付与された仮ラベル「９」，「９」が維持され、結合メモリ２のアドレス（結合元）及びデータ（結合先）の値がそれぞれ「９」，「９」に更新される。
【０１１６】
第２仮ラベル処理部１０２１ｈは仮ラベルの８ライン目を左方向にスキャンすることにより得られた仮ラベルデータを図１５に示すように第４ラインメモリ１０２１ｇに上書きし、外部メモリ２０に出力する。これにより、データの有る画素の全てに仮ラベルが付与された２値化画像のデータが外部メモリに記憶される。仮ラベルの８ライン目が左方向にスキャンされる様子とこれに伴って結合メモリ２が更新される様子を表１０として併記して示す。
【０１１７】
【表１０】
2020087356.tif 000012
【０１１８】
［ステップＳ１０３：結合メモリ統合化］
結合メモリ統合化部１０２３は、第１及び第２結合メモリ１０２２，１０２３ａに記憶されている結合メモリ１，２を読み出し、これらを統合する処理を実行する。具体的には、結合メモリ統合化部１０２３は、結合メモリ１の情報を基に結合メモリ２の情報をグループ毎に最小値になるような処理を実行する。以下、その手順の一例について述べる。
【０１１９】
（手順１）
結合メモリ１の結合情報の結合元仮ラベルをｍとし、結合先仮ラベルをｎとする。表１１の場合、結合メモリ１のアドレス３に対応する結合元及び結合先の仮ラベルを（ｍ，ｎ）とする。表１１は、手順１の一例を示す表であり、結合メモリ１，２のテーブルを併記して示す。なお、表１１では、アドレス１，２の処理は終了済みとする。
【０１２０】
【表１１】
2020087356.tif 000013
【０１２１】
（手順２）
次に、ｍを結合メモリ２の結合元仮ラベルとし、結合元仮ラベルと結合先仮ラベルとが一致するまで結合情報の連鎖をたどり、連鎖の末の結合先仮ラベルをｄｍとする。表１２の場合、ｍを結合メモリ２のアドレスとし、アドレス＝データになるまで結合メモリ２において連鎖をたどり、連鎖の末、最終的にたどり着いたデータ（結合先）の値をｄｍとする。表１２は手順２の一例を示す表であり、結合メモリ１，２のテーブルを併記して示す。
【０１２２】
【表１２】
2020087356.tif 000014
【０１２３】
（手順３）
次いで、ｎを結合メモリ２の結合元仮ラベルとし、結合元の仮ラベルと結合先の仮ラベルとが一致するまで結合情報の連鎖をたどり、連鎖の末の結合先仮ラベルをｄｎとする。表１３の場合、ｎを結合メモリ２のアドレスとし、アドレス＝データになるまで結合メモリ２において連鎖をたどり、連鎖の末、最終的にたどり着いたデータ（結合先）の値をｄｎとする。表１３は、手順３の一例を示す表であり、結合メモリ１，２のテーブルを併記して示す。
【０１２４】
【表１３】
2020087356.tif 000015
【０１２５】
（手順４）
続いて、ｄｍとｄｎの小さいほうの値を（ｍ，ｎ）を初期値として、結合メモリ２の連鎖をたどったすべてのデータに対してその経過をたどる。ここで、（ｍ，ｎ）＝（５，３）の場合、ｄｍ＝２，ｄｎ＝２となり、結合メモリ２の連鎖をたどった結合先仮ラベルが２に書き換えられる。表１４は、手順４の一例を示す表であり、結合メモリ１，２のテーブルを併記して示す。
【０１２６】
【表１４】
2020087356.tif 000016
【０１２７】
（手順５）
次に、結合メモリ１の結合情報の数だけ、手順（１）〜（４）の処理を繰り返す。表１１の場合、アドレス４についても手順（１）〜（４）を実行する。これにより、先のステップＳ１０２において２値化画像の各画素に付与された仮ラベルが最終的にどのグループに属するのかを示す結合メモリ２（表１４の右のテーブル）が得られる。
【０１２８】
［ステップＳ１０４：欠番変換穴埋めメモリ作成］
結合メモリ統合化部１０２３は、先のステップＳ１０３において得られた結合メモリ２（表１４の右のテーブル）の欠番を穴埋めするための結合情報を生成する。この情報を生成する手順としては、結合メモリ２の結合元の仮ラベルが０になるまで結合元の仮ラベルを１から昇順にインクリメントしながら下記の（１）又は（２）の処理を実行する。これにより、表１５に示すような欠番穴埋め変換テーブルが作成される。
【０１２９】
処理（１）：結合メモリ２のアドレスの値＝結合メモリ２のデータの値の場合
・本ラベルのカウンタ値を１インクリメントする
・その時の結合メモリ２のアドレスを欠番穴埋め変換テーブルのアドレスに書き込み、インクリメント後の本ラベルのカウンタ値を欠番穴埋め変換テーブルのデータに書き込む
処理（２）：結合メモリ２のアドレスの値≠結合メモリ２のデータの値の場合
・結合メモリ２の次のアドレスを参照
【０１３０】
表１５は、結合メモリ２の情報に基づき、欠番穴埋め変換テーブルを作成する一例を示す表であり、結合メモリ２のテーブルと欠番穴埋め変換テーブルとを併記して示す。なお、ステップＳ１０４では、処理（１），（２）の実行前にこの処理に必要となる本ラベルのカウンタ値を０に初期化し、欠番穴埋め変換テーブルを０に初期化しておく。
【０１３１】
【表１５】
2020087356.tif 000017
【０１３２】
［ステップＳ１０５：本ラベル処理］
本ラベル作成部１０２５は、結合メモリ２と欠番穴埋め変換テーブルとに基づき、２値化画像の各画素に付与された仮ラベルを本ラベルに書き換える。表１６は、仮ラベルを本ラベルに変換する一例として、仮ラベル９を本ラベル３に変換する様子を示す表である。
【０１３３】
【表１６】
2020087356.tif 000018
【０１３４】
ここで、表１６に示すように、先のステップＳ１０３，Ｓ１０４において得られた結合メモリ２と欠番穴埋め変換テーブルとに基づいて仮ラベルを本ラベルに変換したとすると、仮ラベル「３」，「４」，「５」は本ラベル「２」に変換され、仮ラベル「９」は本ラベル「３」に変換される。これにより、表１７に示すような、各画素に本ラベルが付与された２値化画像が得られる。表１７を参照すると、本実施形態のラベリングブロック１０２は４連結処理を実行していることから、二値化画像の縦、横方向に連続している部分が同じ領域としてラベリングされていることがわかる。
【０１３５】
【表１７】
2020087356.tif 000019
【０１３６】
３．）作用・効果
【０１３７】
本実施形態の画像処理装置１００は、２値化画像の一つの走査ラインを右方向にラスタスキャンすることによってこの走査ラインを構成する各画素に仮ラベルを付与する仮ラベル処理と、当該走査ラインを左方向にラスタスキャンすることによってこの走査ラインを構成する各画素に付与された仮ラベルを更新する仮ラベル処理とを同時進行で実行する。これにより、仮ラベルの付与及び更新を走査ライン毎に１つずつ実行するよりも処理スピードが向上し、２値化画像をリアルタイムにラベリングすることが可能となる。
【０１３８】
また、本実施形態のラベリング処理においては、２値化画像の各ラインにおいて、右方向と左方向とで仮ラベル処理が２度実行される。これにより、走査ラインのなかで連結している画素全てに同一の仮ラベルを付与することになるので、結合情報を削減することができ、この結合情報を記憶するメモリの消費量を削減することができる。特に、本実施形態では、右方向の仮ラベル処理の際には結合情報が記憶されないため、重複を許して全ての結合情報が記憶されることがなくなる。よって、メモリの消費量をさらに抑えることができる。
【０１３９】
さらに、メモリの消費量を抑えることができることから、安価なデバイスでリアルタイムにラベリング処理が可能になり、さらに、サイズが大きい２値化画像もラベリング処理することができる。
【０１４０】
４．）変形例
【０１４１】
以上、本発明の実施形態について説明したが、本発明は上述の実施形態にのみ限定されるものではなく種々変更を加え得ることは勿論である。
【０１４２】
例えば、上記実施形態の画像処理装置１００は、２値化画像を走査する際の走査方向が典型的には横方向であるがこれに限られない。画像処理装置１００は、例えば、２値化画像を縦又は横方向に走査してもよく、その走査方向は特に限定されない。
【０１４３】
また、上記実施形態の画像処理装置１００は、典型的には２値化画像をラベリング処理するがこれに限られない。画像処理装置１００は、例えば２値化画像以外の画像のラベリング処理に適用されてもよくその用途は問わない。
【０１４４】
５．）補足
【０１４５】
本明細書に記載された効果は、あくまで説明的または例示的なものであって限定的ではない。つまり、本発明は、上記の効果とともに、または上記の効果に代えて、本明細書の記載から当業者には明らかな他の効果を奏しうる。
【０１４６】
以上、添付図面を参照しながら本発明の好適な実施形態について詳細に説明したが、本発明はかかる例に限定されない。本発明の技術分野における通常の知識を有する者であれば、特許請求の範囲に記載された技術的思想の範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、これらについても、当然に本発明の技術的範囲に属するものと了解される。
【符号の説明】
【０１４７】
１０・・ラベリング処理ブロック及びメモリ制御部
１００・・画像処理装置
１０２，１０３，１０４・・・ラベリングブロック
１０２１・・・第１仮ラベル処理部
１０２１ｄ・・第１ラインメモリ
１０２１ｅ・・第２ラインメモリ
１０２１ｆ・・第３ラインメモリ
１０２１ｇ・・第４ラインメモリ
１０２２・・・第２仮ラベル処理部
【図１】
2020087356.tif 000020
【図２】
2020087356.tif 000021
【図３】
2020087356.tif 000022
【図４】
2020087356.tif 000023
【図５】
2020087356.tif 000024
【図６】
2020087356.tif 000025
【図７】
2020087356.tif 000026
【図８】
2020087356.tif 000027
【図９】
2020087356.tif 000028
【図１０】
2020087356.tif 000029
【図１１】
2020087356.tif 000030
【図１２】
2020087356.tif 000031
【図１３】
2020087356.tif 000032
【図１４】
2020087356.tif 000033
【図１５】
2020087356.tif 000034
【図１６】
2020087356.tif 000035
【図１７】
2020087356.tif 000036