(57)【要約】【課題】  画像処理の仮ラベリング処理の一部をＳＩＭＤ型マイクロプロセッサで並列に処理し時間を低減し複雑図形の２値画像データの場合も効率よくラベリング処理を行う。【解決手段】  本発明は、グローバルプロセッサと、複数のプロセッサエレメントとを有するＳＩＭＤ型マイクロプロセッサを備える画像処理装置に関する。その画像処理装置にて、各プロセッサエレメントが内蔵している汎用レジスタにプロセッサ外部からアクセスするためのデータ転送用ポートに接続されたデータ制御装置が備わり、２値画像データに対しラベリング処理を行う際、副走査方向に隣接している画素が連結しているかの判定と仮ラベリングを各プロセッサエレメントにおける一斉の同時処理で行い、主走査方向に隣接している画素が連結しているかの判定と仮ラベリングを該データ制御装置における逐次処理で行い、各行における処理では上記の一斉の同時処理が上記の逐次処理に先行する。【選択図】図１
2005189966.tif 000002
【特許請求の範囲】
【請求項１】
演算処理及びプログラム制御処理を行うグローバルプロセッサと、複数のデータを処理するための複数のプロセッサエレメントとを有するＳＩＭＤ型マイクロプロセッサを備える画像処理装置において、
各プロセッサエレメントが内蔵している汎用レジスタにプロセッサ外部からアクセスするためのデータ転送用ポートに接続されたデータ制御装置が備わり、
２次元状に配置された２値画像データに対してラベリング処理を行う際に、
副走査方向に隣接している画素が連結しているかどうかの判定と仮ラベリングを各プロセッサエレメントにおける一斉の同時処理で行い、
主走査方向に隣接している画素が連結しているかどうかの判定と仮ラベリングを該データ制御装置における逐次処理で行い、
各行における処理では、上記の一斉の同時処理が上記の逐次処理に先行することを特徴とする画像処理装置。
【請求項２】
データ制御装置が、ラベル制御部を含み、
ラベル制御部が、２値画素データに対してラベルを付与してデータ転送用ポートに書き戻すためのラベルレジスタと、
仮ラベル値をインクリメントするためのカウンタを有し、
ラベル制御部は、データ転送用ポートから読み出される２値画素データとラベルレジスタの値とを比較しそれらの比較結果にもとづいてカウンタの値、及びラベルレジスタの値を決定し画素データに仮ラベルを付与することを特徴とする、
請求項１に記載の画像処理装置。
【請求項３】
データ制御装置が、
連結しているラベル間の接続情報を格納するためのメモリと、
メモリを制御するためのアドレス及びデータを、ラベル制御部の処理に基づいて決定するメモリ制御部を更に有し、
ラベル制御部は、データ転送用ポートから読み出される画素データと、ラベルレジスタの値と、該メモリに格納されているラベル間の接続情報とを比較し、それらの比較結果にもとづいてカウンタの値、及びラベルレジスタの値を決定し画素データに仮ラベルを付与することを特徴とする、
請求項２に記載の画像処理装置。
【請求項４】
グローバルプロセッサが、
メモリに格納されているラベル間の接続情報をチェックし、本ラベリング処理の際に欠番となる仮ラベルを見つけ、その欠番となる仮ラベルより大きな値の仮ラベルを、欠番となる仮ラベルがなくなるように前方にシフトさせる情報を該メモリに書き込むことを特徴とする、
請求項１乃至請求項３のうちのいずれか一つに記載の画像処理装置。
【請求項５】
ラベル制御装置は、メモリに格納されたラベル間の接続情報と、データ転送用ポートから読み出された仮ラベルとを参照して、それらの参照結果にもとづいてラベルレジスタの値を決定し仮ラベルを本ラベルに更新することを特徴とする、
請求項１乃至請求項４のうちのいずれか一つに記載の画像処理装置。
【請求項６】
データ制御装置とメモリの間に接続を制御するメモリスイッチを介し、メモリをデータ制御装置以外の第２のデータ制御部に接続することできることを特徴とする、
請求項３に記載の画像処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＳＩＭＤ型のマイクロプロセッサを備える画像処理装置に関する。
【背景技術】
【０００２】
２値画像データに対する一般的な画像処理として、連結している特徴画素に対し同一のラベル（例えば昇順の番号）を割り付けていくラベリング処理がある。
【０００３】
連結の仕方には、対象画素の上下左右の４画素との連結を判定する４連結の考え方と、その４連結に斜め方向を加えた周囲８画素との連結を判定する８連結の考え方があるが、本明細書では、すべて４連結の考え方を例にとって説明を進める。記憶装置に２次元状に配置された２値画像データに対してラベリング処理を行う場合、例えば、対象画素からみて左に隣接している画素、又は上に隣接している画素に対する処理結果を参照しながら、２値画像データを左上端の画素から順に、右方向（主走査方向）及び下方向（副走査方向）に走査していく逐次処理を行わなければならない。この逐次処理では、処理時間が膨大になってしまう。
【０００４】
また、前方での処理により異なるラベル（仮ラベル）が割り付けられた２つ以上の領域が、後方での処理により連結した場合（連結した領域であることが判明した場合）には、仮ラベルの値を更新し、同一のラベル値を割り付け直さなければならない。この処理を実現するには、まず各仮ラベル間の接続情報を記憶しておき、すべての画素に対する仮ラベリング処理終了後に、その接続情報を参照しながら、連結しているすべての特徴画素に対して同一のラベルが割り付けられるまで、画像データに対する走査を繰り返していく処理（本ラベリング処理）をすることが考えられる。しかし、異なるラベルの割り付けられた複数の領域が間接的に連結している場合等には、接続情報の記憶方法を工夫しなければ、膨大な記憶領域が必要となる可能性や、ラベル間の接続情報が一部失われてしまう可能性が生じる。
【０００５】
ところで、ＳＩＭＤ型マイクロプロセッサでは、複数のデータに対して１つの命令で同時に同一の演算処理を実行できる。この構造により、ＳＩＭＤ型マイクロプロセッサは、データ量が非常に多いが同一演算を一斉に行うような処理（例えばデジタルコピアなどにおける画像処理）において頻用される。
【０００６】
ＳＩＭＤ型マイクロプロセッサにおける通常の画像処理では、複数の演算ユニット（Ｐｒｏｃｅｓｓｏｒ  Ｅｌｅｍｅｎｔ  ［ＰＥ］；  プロセッサエレメント）を主走査方向に並べ、同一の演算を同時に複数のデータに対して実行することで高速な演算処理が可能となっている。
【０００７】
このＳＩＭＤ型マイクロプロセッサでも、上述のラベリング処理をいかに行うかが課題として挙げられる。
【０００８】
そこで、特許文献１では、仮ラベリング処理の際に行う画像データに対する処理を一部ＳＩＭＤプロセッサで一度に並列に処理することにより、ラベリング処理の処理時間を低減している。前方での処理により異なるラベルが割り付けられた複数の領域が、後に間接的に連結する場合のような複雑な図形の２値画像データが与えられた場合の仮ラベリング処理については特に開示されていない。
【０００９】
また、特許文献２では、２次元状に配置された画像データを、斜め方向の画素ごとに並列に、左に隣接している画素と上に隣接している画素に既に割り付けられた仮ラベル値を参照しがら、仮ラベリング処理を行うことで、仮ラベリング処理の際に行う画像データに対する処理をすべてＳＩＭＤプロセッサによる並列処理で実現しているが、斜め方向の画素ごとに並列に行う処理のために、１ライン中に存在する画素数より多くのＰＥを必要とするためＳＩＭＤ演算の処理能力が落ちてしまう。また、上記第２７３４９５９号の特許と同様に、複雑な図形の２値画像データが与えられた場合の、仮ラベリング処理については特に開示されていない。
【特許文献１】特許第２７３４９５９号公報
【特許文献２】特開２００２−２３０５４０公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
本特許は、ＳＩＭＤ型マイクロプロセッサにデータ制御装置、記憶装置等の簡単なハードウェアを追加し、仮ラベリング処理の一部をＳＩＭＤ型マイクロプロセッサで一度に並列に処理することで処理時間を低減し、複雑な図形の２値画像データが与えられた場合も効率よくラベリング処理を行うことを目的とする。
【課題を解決するための手段】
【００１１】
本発明は、上記の目的を達成するために為されたものである。本発明に係る請求項１に記載の画像処理装置は、
演算処理及びプログラム制御処理を行うグローバルプロセッサと、複数のデータを処理するための複数のプロセッサエレメントとを有するＳＩＭＤ型マイクロプロセッサを備える画像処理装置である。その画像処理装置において、
各プロセッサエレメントが内蔵している汎用レジスタにプロセッサ外部からアクセスするためのデータ転送用ポートに接続されたデータ制御装置が備わり、
２次元状に配置された２値画像データに対してラベリング処理を行う際に、
副走査方向に隣接している画素が連結しているかどうかの判定と仮ラベリングを各プロセッサエレメントにおける一斉の同時処理で行い、
主走査方向に隣接している画素が連結しているかどうかの判定と仮ラベリングを該データ制御装置における逐次処理で行い、
各行における処理では、上記の一斉の同時処理が上記の逐次処理に先行することを特徴とする。
【００１２】
本発明に係る請求項２に記載の画像処理装置は、
データ制御装置が、ラベル制御部を含み、
ラベル制御部が、２値画素データに対してラベルを付与してデータ転送用ポートに書き戻すためのラベルレジスタと、
仮ラベル値をインクリメントするためのカウンタを有し、
ラベル制御部は、データ転送用ポートから読み出される２値画素データとラベルレジスタの値とを比較しそれらの比較結果にもとづいてカウンタの値、及びラベルレジスタの値を決定し画素データに仮ラベルを付与することを特徴とする、
請求項１に記載の画像処理装置である。
【００１３】
本発明に係る請求項３に記載の画像処理装置は、
データ制御装置が、
連結しているラベル間の接続情報を格納するためのメモリと、
メモリを制御するためのアドレス及びデータを、ラベル制御部の処理に基づいて決定するメモリ制御部を更に有し、
ラベル制御部は、データ転送用ポートから読み出される画素データと、ラベルレジスタの値と、該メモリに格納されているラベル間の接続情報とを比較し、それらの比較結果にもとづいてカウンタの値、及びラベルレジスタの値を決定し画素データに仮ラベルを付与することを特徴とする、
請求項２に記載の画像処理装置である。
【００１４】
本発明に係る請求項４に記載の画像処理装置は、
グローバルプロセッサが、
メモリに格納されているラベル間の接続情報をチェックし、本ラベリング処理の際に欠番となる仮ラベルを見つけ、その欠番となる仮ラベルより大きな値の仮ラベルを、欠番となる仮ラベルがなくなるように前方にシフトさせる情報を該メモリに書き込むことを特徴とする、
請求項１乃至請求項３のうちのいずれか一つに記載の画像処理装置である。
【００１５】
本発明に係る請求項５に記載の画像処理装置は、
ラベル制御装置は、メモリに格納されたラベル間の接続情報と、データ転送用ポートから読み出された仮ラベルとを参照して、それらの参照結果にもとづいてラベルレジスタの値を決定し仮ラベルを本ラベルに更新することを特徴とする、
請求項１乃至請求項４のうちのいずれか一つに記載の画像処理装置である。
【００１６】
本発明に係る請求項６に記載の画像処理装置は、
データ制御装置とメモリの間に接続を制御するメモリスイッチを介し、メモリをデータ制御装置以外の第２のデータ制御部に接続することできることを特徴とする、
請求項３に記載の画像処理装置である。
【発明の効果】
【００１７】
本発明を利用することにより、次のような効果を得ることができる。
【００１８】
ＳＩＭＤ型マイクロプロセッサに簡単なハードウェアを追加することで、異なる複数の仮ラベルが間接的に連結することがないような簡単な図形の２値画像データに対して、仮ラベリング処理を行うことができる。
【００１９】
画像処理にて、連結している仮ラベル間の接続情報を記憶する場合に、接続情報を格納しておく記憶装置の記憶容量を必要最小限に抑えながら、異なる複数の仮ラベルが間接的に連結している場合のような複雑な２値画像データに対しても、後の本ラベリング処理が容易になるように仮ラベリング処理を行うことができる。
【００２０】
画像処理にて、仮ラベリング処理終了後の画像データに対して、欠番がでないように本ラベリング処理を行い、仮ラベルを本ラベルに更新することができる。
【００２１】
画像処理装置において、ラベリング処理を行わないときには、仮ラベル間の接続情報を格納しておく記憶装置を他の用途に使用できるため、プロセッサ全体として記憶装置を効率的に使用することができる。
【発明を実施するための最良の形態】
【００２２】
以下、図面を参照して本発明に係る好適な実施の形態を説明する。
【００２３】
図１０は、本発明に係る画像処理装置の構成を示すブロック図である。該画像処理装置は、ＳＩＭＤ型マイクロプロセッサ２、及びデータ制御装置１１を含む。更に該ＳＩＭＤ型マイクロプロセッサ２は、概略、グローバルプロセッサ４、レジスタファイル６、演算アレイ８、及び外部インタフェース７から構成される。
【００２４】
（１）グローバルプロセッサ４
このグローバルプロセッサ４そのものは、いわゆるＳＩＳＤ（Ｓｉｎｇｌｅ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｓｔｒｅａｍ，  Ｓｉｎｇｌｅ  Ｄａｔａ  Ｓｔｒｅａｍ）型のプロセッサである。プログラムＲＡＭ１０とデータＲＡＭ１２を内蔵し（図１１参照）、プログラムを解読し各種制御信号を生成する。この制御信号は内蔵する各種ブロックの制御以外に、レジスタファイル６、演算アレイ８、及びデータ制御装置１１にも供給される。また、ＧＰ（グローバルプロセッサ）命令実行時は内蔵する汎用レジスタ、ＡＬＵ（算術論理演算器）等を使用して各種演算処理、プログラム制御処理を行う。
【００２５】
（２）レジスタファイル６
ＰＥ（プロセッサエレメント）命令で処理されるデータを保持している。ＰＥ（プロセッサエレメント）３は、公知のように、ＳＩＭＤ（Ｓｉｎｇｌｅ  Ｉｎｓｔｒｕｃｔｉｏｎ−Ｓｔｒｅａｍ，Ｍｕｌｔｉｐｌｅ  Ｄａｔａ−Ｓｔｒｅａｍ）型マイクロプロセッサにおいて個別の演算を実行する構成単位である。図１１のレジスタファイル６及び演算アレイ８が示すように、図１１のＳＩＭＤ型マイクロプロセッサ２では２５６個のＰＥ３を含んでいる。ＰＥ命令はＳＩＭＤ型の命令であり、レジスタファイル６に保持されている複数のデータに同時に同じ処理を行う。このレジスタファイル６からのデータの読み出し／書き込みの制御はグローバルプロセッサ４からの制御によって行われる。読み出されたデータは演算アレイ８に送られ、演算アレイ８での演算処理後にレジスタファイル６に書き込まれる。
【００２６】
また、レジスタファイル６は、外部インタフェース７を介してプロセッサ外部のデータ制御装置１１からのアクセスが可能であり、グローバルプロセッサ４の制御とは別に、外部から特定のレジスタに対して読み出し／書き込みが行われる。
【００２７】
（３）演算アレイ８
ＰＥ命令の演算処理が行われる。処理の制御はすべてグローバルプロセッサ４から行われる。
【００２８】
（４）データ制御装置１１
外部インタフェース７のポートに、クロックとアドレス、リード／ライト制御を出力し、任意のＰＥ３のレジスタから、データを読み出し、データ処理することができる。処理の制御はすべてグローバルプロセッサ４から行われる。
【００２９】
図１１は、本発明に係るＳＩＭＤ型マイクロプロセッサ２の、更に詳細な構成を示すブロック図である。
【００３０】
グローバルプロセッサ４には、本プロセッサ２のプログラム格納用のプログラムＲＡＭ１０と、演算データ格納用のデータＲＡＭ１２が内蔵されている。さらに、プログラムのアドレスを保持するプログラムカウンタ（ＰＣ）１４、演算処理のデータ格納のための汎用レジスタであるＧ０、Ｇ１、Ｇ２及びＧ３レジスタ（１６、１８、２０、２２）、レジスタ退避・復帰時に退避先データＲＡＭのアドレスを保持しているスタックポインタ（ＳＰ）２４、サブルーチンコール時にコール元のアドレスを保持するリンクレジスタ（ＬＳ）２６、同じくＩＲＱ（Ｉｎｔｅｒｒｕｐｔ  ＲｅＱｕｅｓｔ；割込み要求）時とＮＭＩ（Ｎｏｎ−Ｍａｓｋａｂｌｅ  Ｉｎｔｅｒｒｕｐｔ  ｒｅｑｕｅｓｔ；禁止不能割込み要求）時の分岐元アドレスを保持するＬＩレジスタ２８及びＬＮレジスタ３０、プロセッサの状態を保持しているプロセッサステータスレジスタ（Ｐ）３２が内蔵されている。
【００３１】
これらのレジスタと、（図示していない）命令デコーダ、ＡＬＵ、メモリ制御回路、割り込み制御回路、外部Ｉ／Ｏ制御回路、及びＧＰ演算制御回路を使用して、ＧＰ命令の実行が行われる。
【００３２】
また、ＰＥ命令実行時には、命令デコーダ（図示せず）、レジスタファイル制御回路（図示せず）、ＰＥ演算制御回路（図示せず）を使用して、レジスタファイル６の制御と演算アレイ８の制御を行う。
【００３３】
レジスタファイル６には、１つのＰＥ単位に８ビットのレジスタが３２本内蔵されており、２５６ＰＥ分の（３２本の）組がアレイ構成になっている。レジスタ３４はＰＥ毎にＲ０、Ｒ１、Ｒ２、・・・Ｒ３１と呼ばれる。それぞれのレジスタ３４は演算アレイに対して１つの読み出しポートと１つの書き込みポートを備えており、８ビットのリード／ライト兼用のバスで演算アレイからアクセスされる。３２本のレジスタの内、２４本（Ｒ０〜Ｒ２３）は外部インタフェース７を介してプロセッサ外部からアクセス可能であり、外部からクロック（ＣＬＫ）とアドレス（Ａｄｄｒｅｓｓ）、リード／ライト制御（ＲＷＢ）を入力することで、任意のレジスタ３４に対して読み書きできる。
【００３４】
レジスタ３４の外部からのアクセスにおいて、１つの外部ポートで各ＰＥの１つのレジスタ３４がアクセス可能である。外部から入力されたアドレスでＰＥの番号（０〜２５５）が指定される。したがって、レジスタアクセスの外部ポートは全部で２４組搭載されている。また、外部からのアクセスは１６ビットデータで行い、１回のアクセスで２つのレジスタ（偶数のＰＥのレジスタと奇数のＰＥレジスタの１組）に同時にアクセスしている。
【００３５】
演算アレイ８は、１６ビットＡＬＵ３６と１６ビットＡレジスタ３８、Ｆレジスタ４０を内蔵している。ＰＥ命令による演算は、レジスタファイル６から読み出されたデータ若しくはグローバルプロセッサ４から与えられたデータをＡＬＵ３６の片側の入力とし、Ａレジスタ３８の内容をもう片側の入力として行われる。演算結果はＡレジスタ３８に格納される。したがって、Ｒ０〜Ｒ３１レジスタ３４若しくはグローバルプロセッサ４から与えられたデータと、Ａレジスタ３８に格納されるデータとの、演算が通常行われることになる。
【００３６】
レジスタファイル６と演算アレイ８との接続に、７ｔｏ１（７対１）のマルチプレクサ４２が置かれている。図１１に示すように、あるマルチプレクサ４２から見て、左方向の３つのＰＥ３に含まれるＲ０〜Ｒ３１レジスタ３４のデータと、右方向の３つのＰＥ３に含まれるＲ０〜Ｒ３１レジスタ３４のデータと、自らが属するＰＥ３に含まれるＲ０〜Ｒ３１レジスタ３４のデータを、演算対象として選択し得るように設定されている。また、レジスタファイル６の８ビットのデータは、シフト・拡張回路４４により任意ビットだけ。左シフトしてＡＬＵ３６に入力する。
【００３７】
さらに、８ビットの条件レジスタ（図示せず）により、ＰＥ３別に演算実行の無効／有効の制御をしており、特定のＰＥ３だけを演算対象として選択できるようになっている。
【００３８】
第１の実施の形態
図１は、本発明の第１の実施の形態に係るデータ制御装置１１の概略のブロック図である。
【００３９】
第１の実施の形態に係るデータ制御装置１１は、
・外部インタフェース７に対してクロック、アドレス、及びリード／ライト制御を供給することで外部インタフェース７を制御する外部インタフェース制御部５２、
・外部インタフェース７を介してＰＥ３のレジスタファイル６から読み出される画素データと、１つ前の処理で左に隣接している画素に割り付けた仮ラベルの値を読み込み、対象画素に割り付けるべき仮ラベルの値を決定するラベル判定回路５８、
・ラベル判定回路５８での判定結果にもとづいて仮ラベルを新規に発生させるカウンタ５６、
・上記カウンタ５６によって発生される仮ラベルと、対象画素に既に割り付けられている仮ラベルの値とを読み込み、上記ラベル判定回路５８の結果において仮ラベルとして判定された方の値を出力するマルチプレクサ６０、及び、
・マルチプレクサ６０から値を受け取り、その値を仮ラベルとして外部インタフェース７に書き戻すラベルレジスタ６２
から構成されている。個別の具体的な「ラベル」は、ラベル判定回路５８、カウンタ５６、マルチプレクサ６０、及びラベルレジスタ６２の相互の作用により決定されることになる。これらラベル判定回路５８、カウンタ５６、マルチプレクサ６０、及びラベルレジスタ６２は、図に示すように、ラベル制御部５４を構成する。
【００４０】
なお、本明細書では、画素の処理は、主走査方向では（特に図面上の）左から右へと行われ、副走査方向では（図面上の）上から下へと行われるものとしている。
【００４１】
上記の構成において、ラベル判定回路５８に読み込むデータのうち、上記の「１つ前の処理で左に隣接している画素に割り付けた仮ラベルの値」は、処理直前のラベルレジスタ６２の値と等値である。外部インタフェース制御部５２は、アドレスを外部インタフェース７に供給するためのアドレスカウンタ（図示せず）を内蔵している。このアドレスカウンタは、画素データの転送がアドレスの昇順（あるいは降順）に行われるようにすればよいので、単純なアップ（あるいはダウン）カウンタであればよい。
【００４２】
かかる構成によれば、（２つ以上の）異なる仮ラベルが付与された領域が後に連結することがないような、図形の２値画像データが与えられた場合に、ラベリング処理を適切に行うことができる。ここで２値画像データは、ＳＩＭＤ型マイクロプロセッサにおいて、一定の閾値を基準に２値化し、またノイズを取り除くためのフィルタ処理を施したものとして与えられる。
【００４３】
続いて、図２のような５×５の画像データが与えられた場合の処理の流れについて説明する。
【００４４】
２値画像データは、ＰＥ３のレジスタファイル６上に２次元状に配置されているとする。通常、画像データの１ライン中の画素数はＰＥ数より多い。その場合、（図示していないが）外部インタフェース７にデータ転送装置、及びメモリを配置し、このメモリ（ラインバッファ）に画像データを格納し、処理に応じてＰＥのレジスタファイルに画像データを順次転送すればよい。
【００４５】
まず、２値画像データ、及び仮ラベルを以下のように定義する。
・背景画素（２値画像データ）：００００ｈ（図中では空欄で表す。）
・特徴画素（２値画像データ）：８０００ｈ（図中では黒丸で表す。）
・仮ラベル：０００１ｈから７ＦＦＦｈの数（図中でも０００１ｈから７ＦＦＦｈまでの数で表す。）
なお、上記のような数字末尾の“ｈ”は１６進法表記であることを示す。
【００４６】
上記のように定義するのは、２値画像データにおいて背景画素と特徴画素の判別が１６ビットのデータの最上位１ビットのみに基づいて為されればよく、また、仮ラベルを含めて００００ｈより大きな数が特徴画素であると判断されればよい、という処理の簡素さを考慮したためである。
【００４７】
第１の実施の形態における仮ラベリング処理は、
・処理Ａ１：ＳＩＭＤ型マイクロプロセッサで一度に並列に行う副走査方向のデータ処理
・処理Ｂ１：図１に図示するデータ制御装置により逐次的に行う主走査方向のデータ処理
の大きく２つに分類される。
処理Ａ１、及び処理Ｂ１の詳細を以下に記す。
【００４８】
≪処理Ａ１≫
処理Ａ１は１ライン中の全ての画素に対して、一度に並列に行われる。
＜処理Ａ１−１＞
対象ラインから見て１つ上のラインの画像データを参照し、同じ列の画素に仮ラベルが割り付けられおり（即ち、００００ｈ（背景画素）でなく）、かつ対象ラインの同一列の２値画素データが８０００ｈ（特徴画素）であれば、その仮ラベルを対象ラインにコピーする。
【００４９】
≪処理Ｂ１≫
処理Ｂ１では、対象画素について、以下の＜処理Ｂ１−１＞から＜処理Ｂ１−５＞の処理のいずれかを行う。ラベルレジスタ６２の値は、各ラインの先頭で００００ｈに初期化されるようにする。
＜処理Ｂ１−１＞
対象画素が００００ｈ（背景画素）の場合、そのまま００００ｈをラベルレジスタ６２に書き込む。ラベルレジスタ６２に書き込まれた値はレジスタファイル６に書き戻される。
・処理後のカウンタの値：インクリメントなし
・処理後のラベルレジスタの値：００００ｈ
【００５０】
＜処理Ｂ１−２＞
処理直前のラベルレジスタ６２の値が００００ｈ（１つ左隣りが背景画素）で、対象画素が８０００ｈ（特徴画素）である場合、カウンタ５６の値を１インクリメントし、インクリメントされた値をラベルレジスタ６２に書き込む。ラベルレジスタ６２に書き込まれた値はレジスタファイル６に書き戻される。
・処理後のカウンタの値：１インクリメント
・処理後のラベルレジスタの値：インクリメント後のカウンタの値
【００５１】
＜処理Ｂ１−３＞
処理直前のラベルレジスタ６２の値が００００ｈ（１つ左隣りが背景画素）で、対象画素が０００１ｈから７ＦＦＦｈまでの数（仮ラベル）場合、対象画素のデータをそのままラベルレジスタ６２に書き込む。ラベルレジスタ６２の値はレジスタファイル６に書き戻される。
・処理後のカウンタの値：インクリメントなし
・処理後のラベルレジスタの値：対象画素のデータ
【００５２】
＜処理Ｂ１−４＞
処理直前のラベルレジスタ６２の値が００００ｈ以外で、対象画素のデータがラベルレジスタ６２の値以上の場合（即ち、対象画素が８０００ｈ（特徴画素）である、若しくは１つ左隣りに割り付けた仮ラベル以上の値の仮ラベルである場合）、ラベルレジスタ６２の値を変更しない。ラベルレジスタ６２の値はそのままレジスタファイル６に書き戻される。
・処理後のカウンタの値：インクリメントなし
・処理後のラベルレジスタの値：変更なし
【００５３】
＜処理Ｂ１−５＞
処理直前のラベルレジスタ６２の値が００００ｈ以外で、対象画素のデータがラベルレジスタ６２の値より小さい場合（即ち、対象画素のデータが１つ左隣りに割り付けた仮ラベルより小さい値の仮ラベルである場合）、対象画素のデータ（仮ラベル）をラベルレジスタ６２に書き込む。ラベルレジスタ６２の値はレジスタファイル６に書き戻される。
・処理後のカウンタの値：インクリメントなし
・処理後のラベルレジスタの値：対象画素のデータ
【００５４】
以上で処理Ａ１及び処理Ｂ１の説明を終わる。
【００５５】
仮ラベリング処理実行前には、図１に示すカウンタ５６、及びラベルレジスタ６２の値を００００ｈに初期化しておく。処理Ａ１及び処理Ｂ１を、この順番に１ラインずつ最後のラインまで繰り返すことで、２値画像データに対して仮ラベリング処理を行うことができる。
【００５６】
図２（２）に、図２（１）の２値画像データに対して上記の仮ラベリング処理を行った結果を示す。図２（２）では、例えば、４、５行目のデータのように、連結している画素に異なる仮ラベルが割り付けられているが、処理Ｂ１の処理の特性から、必ず値の小さな仮ラベルが右側に来ている。従って、全てのラインについての仮ラベリング処理終了後に、処理Ｂ１を主走査方向の逆側から（右側から）全てのラインについて行うことで、簡単に本ラベリング処理を実現することができる。本ラベリング処理終了後の状態を図２（３）に示す。
【００５７】
第２の実施の形態
図３は、本発明の第２の実施の形態に係るデータ制御装置１１の概略のブロック図である。
【００５８】
第２の実施の形態に係るデータ制御装置１１では、図１で示すデータ制御装置に、仮ラベル間の接続情報を格納しておくためのラベル間接続情報格納メモリ１５と、このメモリに対して、クロック、データ（書き込み時）、アドレス、リード／ライトを供給し、仮ラベル間の接続情報を書き込んだり、読み出したりできるように制御するためのメモリ制御部６４とを備えた構成となっている。メモリ制御部６４はラベル制御部５４の処理に基づきメモリの制御を行う。
【００５９】
また、ラベル制御部５４においては、ラベル間接続情報格納メモリ１５に格納されている仮ラベル間の接続情報を参照したり、対象画素に割り付ける仮ラベルの値として利用したりできるように、上記接続情報が、ラベル判定回路５８と、ラベルレジスタ６２に書き込むデータを制御しているマルチプレクサ６０とに対して、ＬＴ（ラッチ）を介して入力することができる構成となっている。
【００６０】
また、第２の実施の形態に係るラベル間接続情報格納メモリ１５では、アドレスが仮ラベルの値を表し、各アドレスには上記で定義した画素データを扱うために１６ビットのデータが格納できることとしている。格納されているデータによって各仮ラベルの状態を以下のように表すとする。
【００６１】
・データがＦＦＦＦｈの場合：そのアドレスに対応する仮ラベルが存在しない
・データが００００ｈの場合：そのアドレスに対応する仮ラベルが存在するが連結している他の仮ラベルがない、もしくは連結している複数の仮ラベルの中で自身の値が一番小さい。
・データが０００１ｈから７ＦＦＦｈまでの場合：そのアドレスに対応する仮ラベルが存在し、連結している他の仮ラベルが１つ以上存在する。
【００６２】
なお、以降の説明でアドレス値Ａｄｄｒに格納されているデータを、
・ＲＡＭ［Ａｄｄｒ］
と表記することがある。
【００６３】
以下、図４（１）のような１０×１０の画像データが与えられた場合の処理の流れについて説明する。
【００６４】
本第２の実施の形態における仮ラベリング処理は、第１の実施の形態で説明した仮ラベリング処理（処理Ａ１、処理Ｂ１）と基本的な考え方は同じである。仮ラベル間の接続情報を作成・参照する処理が加わるため、処理Ｂ１が一部変更される。変更後の処理Ｂ１を処理Ｂ２として以下に記す。
【００６５】
≪処理Ｂ２≫
処理Ｂ２では、対象画素について、以下の＜処理Ｂ２−１＞から＜処理Ｂ２−５＞の処理のいずれかを行う。ラベルレジスタ６２の値は、各ラインの先頭で００００ｈに初期化されるようにする。
【００６６】
＜処理Ｂ２−１＞
対象画素が００００ｈ（背景画素）の場合、そのまま００００ｈをラベルレジスタ６２に書き込む。ラベルレジスタ６２に書き込まれた値はレジスタファイル６に書き戻される。接続情報を作成する処理は特に行われない。
・処理後のカウンタの値：インクリメントなし
・処理後のラベルレジスタの値：００００ｈ
【００６７】
＜処理Ｂ２−２＞
処理前のラベルレジスタ６２の値が００００ｈ（１つ左隣りが背景画素）で、対象画素が８０００ｈ（特徴画素）である場合、カウンタ５６の値を１インクリメントし、インクリメントされた値をラベルレジスタ６２に書き込む。ラベルレジスタ６２に書き込まれた値はレジスタファイル６に書き戻される。また、接続情報を作成する処理として、ＲＡＭ［処理後のラベルレジスタ］に００００ｈを書き込む。
・処理後のカウンタの値：１インクリメント
・処理後のラベルレジスタの値：インクリメント後のカウンタの値
・ＲＡＭ［処理後のラベルレジスタ］：００００ｈ
【００６８】
＜処理Ｂ２−３＞
処理前のラベルレジスタ６２の値が００００ｈ（１つ左隣りが背景画素）で、対象画素が０００１ｈから７ＦＦＦｈまでの数（仮ラベル）場合、さらに以下の（処理Ｂ２−３−１）と（処理Ｂ２−３−２）に処理が分岐する。
（処理Ｂ２−３−１）：ＲＡＭ［対象画素のデータ］が００００ｈの場合、対象画素のデータをそのままラベルレジスタ６２に書き込む。ラベルレジスタ６２の値はレジスタファイル６に書き戻される。接続情報を作成する処理は特に行われない。
・処理後のカウンタの値：インクリメントなし
・処理後のラベルレジスタの値：対象画素のデータ
（処理Ｂ２−３−２）：ＲＡＭ［対象画素のデータ］が００００ｈ以外の場合、ＲＡＭ［対象画素のデータ］の値をラベルレジスタ６２に書き込む。ラベルレジスタ６２の値はレジスタファイル６に書き戻される。接続情報を作成する処理は特に行われない。
・処理後のカウンタの値：インクリメントなし
・処理後のラベルレジスタの値：ＲＡＭ［対象画素のデータ］
【００６９】
＜処理Ｂ２−４＞
処理前のラベルレジスタ６２の値が００００ｈ以外で、対象画素のデータが８０００ｈ（特徴画素）の場合、ラベルレジスタ６２の値を変更しない。ラベルレジスタ６２の値はレジスタファイルに書き戻される。接続情報を作成する処理は特に行われない。
・処理後のカウンタの値：インクリメントなし
・処理後のラベルレジスタの値：変更なし
【００７０】
＜処理Ｂ２−５＞
処理前のラベルレジスタ６２の値が００００ｈ以外で、対象画素のデータが０００１ｈから７ＦＦＦｈまでの数（仮ラベル）の場合、さらに以下の（処理Ｂ２−５−１）、（処Ｂ２−５−２）、（処理Ｂ２−５−３）若しくは（処理Ｂ２−５−４）に処理が分岐する。
（処理Ｂ２−５−１）：ＲＡＭ［対象画素のデータ］が００００ｈの場合で、かつ対象画素のデータが処理前のラベルレジスタ６２の値以上の場合、ラベルレジスタ６２の値を変更しない。ラベルレジスタ６２の値はレジスタファイル６に書き戻される。
接続情報を作成するための処理として、ＲＡＭ［対象画素のデータ］をラベルレジスタ６２の値で更新する。また、
ＲＡＭ［ｉ］＝（対象画素のデータ）
を満たす全てのＲＡＭ［ｉ］の値もラベルレジスタ６２の値で更新する。ｉは１からＲＡＭ［ｉ］＝ＦＦＦＦｈとなるまで１ずつインクリメントする。
・処理後のカウンタの値：インクリメントなし
・処理後のラベルレジスタの値：変更なし
【００７１】
（処理Ｂ２−５−２）：ＲＡＭ［対象画素のデータ］が００００ｈの場合で、かつ対象画素のデータが処理前のラベルレジスタ６２の値より小さい場合、対象画素のデータをそのままラベルレジスタ６２に書き込む。ラベルレジスタ６２の値はレジスタファイル６に書き戻される。
接続情報を作成するための処理として、ＲＡＭ［処理前のラベルレジスタの値］を処理後のラベルレジスタ６２の値で更新する。また、
ＲＡＭ［ｉ］＝（処理前のラベルレジスタの値）
を満たす全てのＲＡＭ［ｉ］の値も処理後のラベルレジスタ６２の値で更新する。ｉは１からＲＡＭ［ｉ］＝ＦＦＦＦｈとなるまで１ずつインクリメントする。
・処理後のカウンタの値：インクリメントなし
・処理後のラベルレジスタの値：対象画素のデータ
【００７２】
（処理Ｂ２−５−３）：ＲＡＭ［対象画素のデータ］が００００ｈ以外の場合で、かつＲＡＭ［対象画素のデータ］が処理前のラベルレジスタ６２の値以上の場合、ラベルレジスタ６２の値を変更しない。ラベルレジスタ６２の値はレジスタファイル６に書き戻される。
接続情報を作成するための処理として、ＲＡＭ［ＲＡＭ［対象画素のデータ］］をラベルレジスタ６２の値で更新する。また、
ＲＡＭ［ｉ］＝ＲＡＭ［対象画素のデータ］
を満たす全てのＲＡＭ［ｉ］の値もラベルレジスタ６２の値で更新する。ｉは１からＲＡＭ［ｉ］＝ＦＦＦＦｈとなるまで１ずつインクリメントする。
・処理後のカウンタの値：インクリメントなし
・処理後のラベルレジスタの値：変更なし
【００７３】
（処理Ｂ２−５−４）：ＲＡＭ［対象画素のデータ］が００００ｈ以外の場合で、かつＲＡＭ［対象画素のデータ］が処理前のラベルレジスタ６２の値より小さい場合、ＲＡＭ［対象画素のデータ］をラベルレジスタ６２に書き込む。ラベルレジスタ６２の値はレジスタファイル６に書き戻される。
接続情報を作成するための処理として、ＲＡＭ［処理前のラベルレジスタの値］を処理後のラベルレジスタ６２の値で更新する。また、
ＲＡＭ［ｉ］＝（処理前のラベルレジスタの値）
を満たす全てのＲＡＭ［ｉ］の値も処理後のラベルレジスタ６２の値で更新する。ｉは１からＲＡＭ［ｉ］＝ＦＦＦＦｈとなるまで１ずつインクリメントする。
・処理後のカウンタの値：インクリメントなし
・処理後のラベルレジスタの値：ＲＡＭ［対象画素のデータ］
【００７４】
以上で処理Ｂ２の説明を終わる。
【００７５】
仮ラベリング処理実行前には、図３に示すカウンタ５６、及びラベルレジスタ６２の値を００００ｈに、またラベル間接続情報格納メモリ１５のすべてのデータをＦＦＦＦｈで初期化しておく。処理Ａ１及び処理Ｂ２を、この順番に１ラインずつ最後のラインまで繰り返すことで、２値画像データに対して仮ラベリング処理を行うことができる。
【００７６】
図４（１）（２）（３）（４）、図５（５）（６）（７）（８）、図６（９）（１０）（１１）（１２）、図７（１３）（１４）（１５）（１６）、図８（１７）（１８）において、図４（１）の２値画像データに対し上記の仮ラベリング処理を行う際の、画像データの変遷とラベル間接続情報格納メモリの更新の様子とを示す。
【００７７】
図８（１８）では、仮ラベリング処理が最終ラインまで終了した時点での、画像データを示している。同図にて、連結しているラベルであって異なる仮ラベルが割り付けられている画素領域がある。けれども、各仮ラベルは、（間接的な連結も含めて）連結している他の仮ラベルの中に自身より値の小さい仮ラベルがあれば、その中で最も値の小さい仮ラベルをラベル間接続情報格納メモリ１５に保持しているので、後で詳述する本ラベリングの処理により、同一ラベルの割り付けが可能である。
【００７８】
第３の実施の形態
第３の実施の形態に係るデータ制御装置の構成は、第２の実施の形態に係るデータ制御装置のブロック図に示されるものと同一である。よって、第２の実施の形態に係るデータ制御装置に付加された部分を中心に以下説明する。
【００７９】
第２の実施の形態にて、処理Ａ１及び処理Ｂ２の仮ラベリング処理により得られた各ラベル間の接続情報をそのまま使用し、本ラベリング処理を行うと、例えば図８（１８）の例では、値が０００３ｈ、０００４ｈ、０００５ｈ、０００６ｈの仮ラベルがそれぞれのアドレスに格納されている値に更新され、その結果、画像データ上では、値が０００３ｈ、０００４ｈ、０００５ｈ、０００６ｈの仮ラベルは欠番となる。
【００８０】
本第３の実施の形態では、仮ラベルの欠番を無くすため、本ラベリング処理を行う前にラベル間接続情報格納メモリ１５に対して以下の≪処理Ｃ１≫を行い、本ラベリング後に欠番を出さないようにする。処理Ｃ１を以下に記す。
【００８１】
≪処理Ｃ１≫
ラベル間接続情報格納メモリ１５のアドレス値をＬａｂｅｌとすると、Ｌａｂｅｌの値を１から
ＲＡＭ［Ｌａｂｅｌ］＝ＦＦＦＦｈ
となるまで１ずつインクリメントしていき、順次、以下に記す処理＜Ｃ１−１＞から＜処理Ｃ１−２＞までの処理のいずれかを実行する。また、≪処理Ｃ１≫では欠番となる仮ラベルの数を数えるカウンタ（Ｃｏｕｎｔ）（図示せず。）を使用する。このカウンタ（Ｃｏｕｎｔ）は、この処理開始前に００００ｈに初期化しておかなければならない。
【００８２】
＜処理Ｃ１−１＞
ＲＡＭ［Ｌａｂｅｌ］の値が０００１ｈから７ＦＦＦｈまでの数である場合、欠番となる仮ラベルの数を数えるカウンタ（Ｃｏｕｎｔ）を１インクリメントする。
【００８３】
＜処理Ｃ１−２＞
ＲＡＭ［Ｌａｂｅｌ］の値が００００ｈである場合、ＲＡＭ［Ｌａｂｅｌ］の値を
（Ｌａｂｅｌ−Ｃｏｕｎｔ）に更新する。また、
ＲＡＭ［ｉ］＝Ｌａｂｅｌ
を満たすすべてのＲＡＭ［ｉ］の値を（Ｌａｂｅｌ−Ｃｏｕｎｔ）に更新する。
ｉは（Ｌａｂｅｌ＋１）からＲＡＭ［ｉ］＝ＦＦＦＦｈとなるまで１ずつインクリメントする。
【００８４】
以上で処理Ｃ１の説明を終わる。
【００８５】
処理Ｃ１の処理により、ラベル間接続情報格納メモリ１５に格納されているデータを精査し、（接続情報に００００ｈ以外のデータが格納されているならば、その仮ラベルはそのままでは本ラベリング処理後に欠番となるはずであることから）欠番となる仮ラベルを見つけられる。よって、欠番となるはずの仮ラベルより大きな値の仮ラベルを、欠番となる仮ラベルを踏み潰すように前方にシフトさせるための情報（具体的には、仮ラベルのシフト後の値）を、ラベル間接続情報格納メモリ１５に書き込むことができる。
【００８６】
処理Ｃ１は、図示していないが、ラベル間接続情報格納メモリ１５をグローバルプロセッサ４からのデータのリード／ライトが可能なように構成し、グローバルプロセッサ４においてソフトウェア（プログラム）で処理することにより容易に実現することができる。
【００８７】
図８（１９）にて、図８（１８）の状態に対して処理Ｃ１を実行しラベル間接続情報格納メモリ１５が更新された状態を示す。
【００８８】
第４の実施の形態
第４の実施の形態に係るデータ制御装置の構成は、第２の実施の形態に係るデータ制御装置のブロック図に示されるものと同一である。よって、第２の実施の形態及び第３の実施の形態に係るデータ制御装置に付加された部分を中心に以下説明する。
【００８９】
第４の実施の形態に係るデータ制御装置では、まず上述の処理Ｃ１までの処理を行って、ラベル間接続情報格納メモリ１５に各仮ラベルを更新するためのデータを格納することができる。更に第４の実施の形態に係るデータ制御装置では、この仮ラベルを更新するためのデータを適宜参照しながら、仮ラベリング後の画像データを順次更新（本ラベリング）していく。この本ラベリング処理を行う≪処理Ｄ１≫を以下に記す。
【００９０】
≪処理Ｄ１≫
処理Ｄ１では、対象画素について、以下の＜処理Ｄ１−１＞から＜処理Ｄ１−２＞の処理のいずれかを行う。
＜処理Ｄ１−１＞
対象画素が００００ｈ（背景画素）の場合、そのまま００００ｈをラベルレジスタ６２に書き込む。ラベルレジスタ６２に書き込まれた値はレジスタファイル６に書き戻される。
【００９１】
＜処理Ｄ１−２＞
対象画素が０００１ｈから７ＦＦＦｈまでの数（仮ラベル）の場合、対応するラベル間接続情報格納メモリの更新情報（接続情報）を参照し、その値を本ラベルとしてラベルレジスタ６２に書き込む。ラベルレジスタ６２に書き込まれた値はレジスタファイル６に書き戻される。
【００９２】
以上で処理Ｄ１の説明を終わる。
【００９３】
図８（２０）に、図８（１９）の状態に対して≪処理Ｄ１≫を実行した結果の状態を示す。図８（１９）において、値が０００３ｈ、０００４ｈ、０００５ｈ、０００６ｈ、０００７ｈであった仮ラベルが、ラベル間接続情報格納メモリ１５の更新情報に従ってそれぞれ更新され、図８（２０）では連結している特徴画素すべてに同一のラベルが割り付けられていることが分かる。
【００９４】
第５の実施の形態
図９は、本発明の第５の実施の形態に係る画像処理装置の概略のブロック図である。
【００９５】
外部インタフェース７には複数のデータ制御装置（第１のデータ制御装置１１−（１）、第２のデータ制御装置１１−（２））が接続されており、それぞれメモリスイッチ７０を介して複数のメモリ（第１のメモリ１５−（１）、第２のメモリ１５−（２））にアクセスできるように構成されている。複数のデータ制御装置は、すべて本発明に係るデータ制御装置に限定されるのではなく、例えば通常のラインディレイのためのデータ制御装置であってもよい。
【００９６】
画像処理装置をこのように構成することにより、ラベリング処理を行わないときには、仮ラベル間の接続情報を格納しておくメモリを他の用途に使用することができる。
【図面の簡単な説明】
【００９７】
【図１】本発明の第１の実施の形態に係るデータ制御装置の概略のブロック図である。
【図２】（１）は２値画像データの例である。（２）以降は、（１）の２値画像データに対し仮ラベリング処理を行う際の、画像データの変遷を示す。
【図３】本発明の第２の実施の形態に係るデータ制御装置の概略のブロック図である。
【図４】（１）は２値画像データの例である。（２）以降は、（１）の２値画像データに対し仮ラベリング処理を行う際の、画像データの変遷とラベル間接続情報格納メモリの更新の様子＜１＞とを示す。
【図５】図４（１）の２値画像データに対し仮ラベリング処理を行う際の、画像データの変遷とラベル間接続情報格納メモリの更新の様子＜２＞とを示す。
【図６】図４（１）の２値画像データに対し仮ラベリング処理を行う際の、画像データの変遷とラベル間接続情報格納メモリの更新の様子＜３＞とを示す。
【図７】図４（１）の２値画像データに対し仮ラベリング処理を行う際の、画像データの変遷とラベル間接続情報格納メモリの更新の様子＜４＞とを示す。
【図８】（１７）（１８）は、図４（１）の２値画像データに対し仮ラベリング処理を行う際の、画像データの変遷とラベル間接続情報格納メモリの更新の様子＜５＞とを示す。（１９）（２０）は、本ラベリング処理の様子を示す。
【図９】第５の実施の形態に係る画像処理装置の概略のブロック図である。
【図１０】本発明に係る画像処理装置の構成を示すブロック図である。
【図１１】本発明に係るＳＩＭＤ型マイクロプロセッサの詳細な構成を示すブロック図である。
【符号の説明】
【００９８】
４・・・グローバルプロセッサ、６・・・レジスタファイル、７・・・外部インタフェース、１１・・・データ制御装置、１５・・・ラベル間接続情報格納メモリ、６２・・・ラベルレジスタ。
【図１】
2005189966.tif 000003
【図２】
2005189966.tif 000004
【図３】
2005189966.tif 000005
【図４】
2005189966.tif 000006
【図５】
2005189966.tif 000007
【図６】
2005189966.tif 000008
【図７】
2005189966.tif 000009
【図８】
2005189966.tif 000010
【図９】
2005189966.tif 000011
【図１０】
2005189966.tif 000012
【図１１】
2005189966.tif 000013