(57)【要約】【課題】  ＳＩＭＤ型マイクロプロセッサを利用する８連結のラベリング処理にて、対象画素を２画素以上の複数とし、且つ処理速度を低下させず実効的なものとする。【解決手段】  背景画素を一つないし二つ挟む２ラインにわたるＶ字型の図形パターンが現れた場合には、Ｖ字の間の画素を仮に埋める処理を、主走査方向の画素の連結処理の前処理として行う。更に、本ラベリング処理時には、仮に埋めた上記の画素を、元の背景画素に戻す。【選択図】図１
2006048222.tif 000002
【特許請求の範囲】
【請求項１】
複数のデータを処理するための複数のプロセッサエレメントを有するＳＩＭＤ型マイクロプロセッサを用いた画像処理方法において、
背景画素と特徴画素とに２値化された２値画像データに対して仮ラベリング処理を行う際に、
対象画素をＰ［Ｍ，Ｎ］（Ｍ＝０，１，２，…／Ｎ＝０，１，２，…）で表し、
更に、対象画素の１つ左隣の画素をＰ［Ｍ−１，Ｎ］、対象画素の２つ左隣の画素をＰ［Ｍ−２，Ｎ］、対象画素の１つ右隣の画素をＰ［Ｍ＋１，Ｎ］、対象画素の２つ右隣の画素をＰ［Ｍ＋２，Ｎ］、対象画素の１つ下の画素をＰ［Ｍ，Ｎ＋１］のように表すこととすると、
（１）Ｐ［Ｍ，Ｎ］が背景画素、かつＰ［Ｍ，Ｎ＋１］が特徴画素、かつＰ［Ｍ−１，Ｎ］が特徴画素、かつＰ［Ｍ＋１，Ｎ］が特徴画素である条件（１）、
（２）Ｐ［Ｍ，Ｎ］とＰ［Ｍ−１，Ｎ］が背景画素、かつＰ［Ｍ，Ｎ＋１］とＰ［Ｍ−１，Ｎ＋１］が特徴画素、かつＰ［Ｍ＋１，Ｎ］が特徴画素、かつＰ［Ｍ−２，Ｎ］が特徴画素である条件（２）、
（３）Ｐ［Ｍ，Ｎ］とＰ［Ｍ＋１，Ｎ］が背景画素、かつＰ［Ｍ，Ｎ＋１］とＰ［Ｍ＋１，Ｎ＋１］が特徴画素、かつＰ［Ｍ＋２，Ｎ］が特徴画素、かつＰ［Ｍ−１，Ｎ］が特徴画素である条件（３）
の、いずれかを満たすならば、対象画素Ｐ［Ｍ，Ｎ］を背景画素から特徴画素へと書き換える処理を、仮ラベリング処理の過程でおこなう画像処理方法。
【請求項２】
対象画素Ｐ［Ｍ，Ｎ］から、同一ラインの画素であるＰ［Ｍ−２，Ｎ］、Ｐ［Ｍ−１，Ｎ］、Ｐ［Ｍ＋１，Ｎ］、Ｐ［Ｍ＋２，Ｎ］と、１つ下のラインの画素であるＰ［Ｍ−１，Ｎ＋１］、Ｐ［Ｍ，Ｎ＋１］、Ｐ［Ｍ＋１，Ｎ＋１］の画素が参照可能であり、それら参照可能な画素との関係から、自身の画素の状態を書き換える手段を備えた、請求項１に記載の画像処理方法を行う画像処理装置。
【請求項３】
２値画像データに対してラベリング処理を行う場合に、
特徴画素へと書き換えた背景画素の画素データに、元々は背景画素であったことを示す第１のデータを付加し、
仮ラベリング処理、もしくは本ラベリング処理終了後に、
各背景画素において、画素データ内の第１のデータの存在を判断し、第１のデータが付加されていれば、背景画素へと書き戻すことを特徴とする請求項２に記載の画像処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、２値画像データのラベリング処理を行う画像処理方法、及び画像処理装置に関する。
【背景技術】
【０００２】
白、もしくは黒に２値化された画像データに対して行う一般的な画像処理として、ラベリング処理がある。以下において、白画素を背景画素、黒画素を特徴画素と呼ぶこととすると、ラベリング処理とは、連結している特徴画素に対して、同一のラベル（例えば、昇順の番号）を割り付ける処理である。このラベリング処理を行うことで、画像データ内に存在する複数の対象物を区別し、対象物ごとに面積や重心を求めることが可能となる。
【０００３】
連結の判定の仕方には、概ね、
（１）対象画素と、その上下左右の４画素との連結を判定する４連結（４近傍）の考え方と、
（２）（１）の４連結に斜め方向を加えた周囲８画素との連結を判定する８連結（８近傍）の考え方と
がある。
【０００４】
メモリなどの記憶装置に２次元状に配置された２値画像データに対して４連結でラベリング処理を行う場合には、例えば、対象画素から見て左に隣接する画素、及び上に隣接している画素の、少なくとも２画素に対する処理結果を参照しながら、２値画像データを左上端から右下端に向けて走査していく逐次処理を行わなければならない。さらに、８連結でラベリング処理を行う場合には、例えば、対象画素から見て左に隣接する画素、左斜め上に隣接する画素、上に隣接する画素、右斜め上に隣接する画素の、少なくとも４画素に対する処理結果を参照する逐次処理を行わなければならない。
【０００５】
また、対象画素の地点で、異なる仮ラベル同士が連結した場合には、その接続情報を記憶するためメモリにアクセスする必要があり、特に、８連結のラベリング処理の場合には、後で詳細に説明するが、参照する隣接４画素の中に異なる仮ラベルが３つ以上存在する可能性があり、これら３つの異なる仮ラベル同士の接続情報を記憶するために、１つの対象画素への処理の際に少なくとも２度メモリにライトアクセスしなければならない。このメモリへのアクセスと、逐次処理とのために、ラベリング処理は処理時間がかかる画像処理の一つに挙げられている。
【０００６】
ラベリング処理の処理速度を上げるために、対象画素を２画素以上の複数として、同時に処理していく手法が考えられる。しかし、上記のように、衝突する仮ラベルの個数が増えてしまうと、メモリにアクセスする回数が増えてしまうために、十分な効果は得られない。
【０００７】
特許文献１では、仮ラベルを割り付ける対象画素と、それに隣接する周囲３画素の計４画素をラスタスキャン方式により読み込み、それら４画素の画素パターンに基づいて、対象画素に割り付ける仮ラベルの決定と、仮ラベル同士の連結情報を記憶する処理を行うラベリング処理装置、及び方法について開示しているが、１回の処理における処理速度を低下させずに、対象画素を２画素以上の複数とする手法については開示されていない。
【０００８】
ところで、ＳＩＭＤ（Ｓｉｎｇｌｅ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｓｔｒｅａｍ，  Ｍｕｌｔｉｐｌｅ  Ｄａｔａ  Ｓｔｒｅａｍ）型マイクロプロセッサでは、複数のデータに対して１つの命令で同時に同一の演算処理（ＳＩＭＤ処理）が実行可能である。この構造により、演算は同一であるがデータ量が非常に多い処理（例えば、並列に演算が可能な画像処理）に係る用途において頻用される。ＳＩＭＤ型マイクロプロセッサにおける通常の画像処理では、複数の演算ユニット（Ｐｒｏｃｅｓｓｏｒ  Ｅｌｅｍｅｎｔ  ［ＰＥ］；  プロセッサエレメント）を主走査方向に並べ、同一の演算を同時に複数のデータに対して実行することによって高速な演算処理が可能となっている。
【０００９】
ラベリング処理などの逐次処理を行う場合、処理速度に関しては、ＳＩＭＤ型プロセッサの構成を十分に生かすことはできない。このＳＩＭＤ型マイクロプロセッサでも、上述のラベリング処理をいかに行うかが課題として挙げられる。
【特許文献１】特開平５−２３３８０７号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
本発明は、簡単なハードウェアを追加したＳＩＭＤ型マイクロプロセッサを利用して、上記の８連結のラベリング処理を４連結のラベリング処理と同等の処理速度で行い、また対象画素を２画素以上の複数としたとき、１回の処理における処理速度を低下させずに、十分な効果が得られる画像処理方法、及び画像処理装置を作成することを目的とする。
【課題を解決するための手段】
【００１１】
本発明は、上記の目的を達成するために為されたものである。本発明に係る請求項１に記載の画像処理方法は、
複数のデータを処理するための複数のプロセッサエレメントを有するＳＩＭＤ型マイクロプロセッサを用いた画像処理方法である。その画像処理方法において、
背景画素と特徴画素とに２値化された２値画像データに対して仮ラベリング処理を行う際に、
対象画素をＰ［Ｍ，Ｎ］（Ｍ＝０，１，２，…／Ｎ＝０，１，２，…）で表し、
更に、対象画素の１つ左隣の画素をＰ［Ｍ−１，Ｎ］、対象画素の２つ左隣の画素をＰ［Ｍ−２，Ｎ］、対象画素の１つ右隣の画素をＰ［Ｍ＋１，Ｎ］、対象画素の２つ右隣の画素をＰ［Ｍ＋２，Ｎ］、対象画素の１つ下の画素をＰ［Ｍ，Ｎ＋１］のように表すこととすると、
（１）Ｐ［Ｍ，Ｎ］が背景画素、かつＰ［Ｍ，Ｎ＋１］が特徴画素、かつＰ［Ｍ−１，Ｎ］が特徴画素、かつＰ［Ｍ＋１，Ｎ］が特徴画素である条件（１）、
（２）Ｐ［Ｍ，Ｎ］とＰ［Ｍ−１，Ｎ］が背景画素、かつＰ［Ｍ，Ｎ＋１］とＰ［Ｍ−１，Ｎ＋１］が特徴画素、かつＰ［Ｍ＋１，Ｎ］が特徴画素、かつＰ［Ｍ−２，Ｎ］が特徴画素である条件（２）、
（３）Ｐ［Ｍ，Ｎ］とＰ［Ｍ＋１，Ｎ］が背景画素、かつＰ［Ｍ，Ｎ＋１］とＰ［Ｍ＋１，Ｎ＋１］が特徴画素、かつＰ［Ｍ＋２，Ｎ］が特徴画素、かつＰ［Ｍ−１，Ｎ］が特徴画素である条件（３）
の、いずれかを満たすならば、対象画素Ｐ［Ｍ，Ｎ］を背景画素から特徴画素へと書き換える処理を、仮ラベリング処理の過程で行う。
【００１２】
本発明に係る請求項２に記載の画像処理装置は、
対象画素Ｐ［Ｍ，Ｎ］から、同一ラインの画素であるＰ［Ｍ−２，Ｎ］、Ｐ［Ｍ−１，Ｎ］、Ｐ［Ｍ＋１，Ｎ］、Ｐ［Ｍ＋２，Ｎ］と、１つ下のラインの画素であるＰ［Ｍ−１，Ｎ＋１］、Ｐ［Ｍ，Ｎ＋１］、Ｐ［Ｍ＋１，Ｎ＋１］の画素が参照可能であり、それら参照可能な画素との関係から、自身の画素の状態を書き換える手段を備えた、請求項１に記載の画像処理方法を行う画像処理装置である。
【００１３】
本発明に係る請求項３に記載の画像処理装置は、
２値画像データに対してラベリング処理を行う場合に、
特徴画素へと書き換えた背景画素の画素データに、元々は背景画素であったことを示す第１のデータを付加し、
仮ラベリング処理、もしくは本ラベリング処理終了後に、
各背景画素において、画素データ内の第１のデータの存在を判断し、第１のデータが付加されていれば、背景画素へと書き戻すことを特徴とする請求項２に記載の画像処理装置である。
【発明の効果】
【００１４】
本発明を利用することにより、次のような効果を得ることができる。
【００１５】
２値画像データに対して８連結のラベリング処理を行う際に、仮ラベル付けを行う対象画素の地点で衝突する異なる値の仮ラベルの数を低減させ、仮ラベル同士の接続情報を記憶するためのメモリにアクセスする回数を低減させることによって、８連結の仮ラベリング処理を高速で行うことができる。
【００１６】
更に、２値画像データに対して仮ラベリング処理を行う際に、入力された２値画像データに対して正しいラベリング処理を行うことができる。
【発明を実施するための最良の形態】
【００１７】
以下、図面を参照して本発明に係る好適な実施の形態を説明する。
【００１８】
図１６は、本発明に係る画像処理装置の構成を示すブロック図である。該画像処理装置は、ＳＩＭＤ型マイクロプロセッサ２、及びデータ制御装置１１を含む。更に該ＳＩＭＤ型マイクロプロセッサ２は、概略、グローバルプロセッサ４、レジスタファイル６、演算アレイ８、及び外部インタフェース７から構成される。
【００１９】
（１）グローバルプロセッサ４
このグローバルプロセッサ４そのものは、いわゆるＳＩＳＤ（Ｓｉｎｇｌｅ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｓｔｒｅａｍ，  Ｓｉｎｇｌｅ  Ｄａｔａ  Ｓｔｒｅａｍ）型のプロセッサである。プログラムＲＡＭ１０とデータＲＡＭ１２を内蔵し（図１７参照）、プログラムを解読し各種制御信号を生成する。この制御信号は内蔵する各種ブロックの制御以外に、レジスタファイル６、演算アレイ８、及びデータ制御装置１１にも供給される。また、ＧＰ（グローバルプロセッサ）命令実行時は内蔵する汎用レジスタ、ＡＬＵ（算術論理演算器）等を使用して各種演算処理、プログラム制御処理を行う。
【００２０】
（２）レジスタファイル６
ＰＥ（プロセッサエレメント）命令で処理されるデータを保持している。ＰＥ（プロセッサエレメント）３は、公知のように、ＳＩＭＤ（Ｓｉｎｇｌｅ  Ｉｎｓｔｒｕｃｔｉｏｎ−Ｓｔｒｅａｍ，Ｍｕｌｔｉｐｌｅ  Ｄａｔａ−Ｓｔｒｅａｍ）型マイクロプロセッサにおいて個別の演算を実行する構成単位である。図１６のレジスタファイル６及び演算アレイ８が示すように、図１６のＳＩＭＤ型マイクロプロセッサ２では２５６個のＰＥ３を含んでいる。ＰＥ命令はＳＩＭＤ型の命令であり、レジスタファイル６に保持されている複数のデータに対して同時に同じ処理を行う。このレジスタファイル６からのデータの読み出し／書き込みの制御はグローバルプロセッサ４からの制御によって行われる。読み出されたデータは演算アレイ８に送られ、演算アレイ８での演算処理後にレジスタファイル６に書き込まれる。
【００２１】
また、レジスタファイル６は、外部インタフェース７を介してプロセッサ外部のデータ制御装置１１からのアクセスが可能であり、グローバルプロセッサ４の制御とは別に、外部から特定のレジスタに対して読み出し／書き込みが行われる。
【００２２】
（３）演算アレイ８
ＰＥ命令の演算処理が行われる。処理の制御はすべてグローバルプロセッサ４から行われる。後で説明するように、仮ラベリング処理における副走査方向の画素連結判定処理を行う。
【００２３】
（４）データ制御装置（ラベリング処理装置）１１
外部インタフェース７のポートに、クロックとアドレス、リード／ライト制御を出力し、任意のＰＥ３のレジスタから、データを読み出し、処理することができる。処理の制御はすべてグローバルプロセッサ４から行われる。後で説明するように、仮ラベリング処理における主走査方向の画素連結判定処理を行う。
【００２４】
図１７は、本発明に係るＳＩＭＤ型マイクロプロセッサ２の、更に詳細な構成を示すブロック図である。
【００２５】
グローバルプロセッサ４には、本プロセッサ２のプログラム格納用のプログラムＲＡＭ１０と、演算データ格納用のデータＲＡＭ１２が内蔵されている。さらに、プログラムのアドレスを保持するプログラムカウンタ（ＰＣ）１４、演算処理のデータ格納のための汎用レジスタであるＧ０、Ｇ１、Ｇ２及びＧ３レジスタ（１６、１８、２０、２２）、レジスタ退避・復帰時に退避先データＲＡＭのアドレスを保持しているスタックポインタ（ＳＰ）２４、サブルーチンコール時にコール元のアドレスを保持するリンクレジスタ（ＬＳ）２６、同じくＩＲＱ（Ｉｎｔｅｒｒｕｐｔ  ＲｅＱｕｅｓｔ；割込み要求）時とＮＭＩ（Ｎｏｎ−Ｍａｓｋａｂｌｅ  Ｉｎｔｅｒｒｕｐｔ  ｒｅｑｕｅｓｔ；禁止不能割込み要求）時の分岐元アドレスを保持するＬＩレジスタ２８及びＬＮレジスタ３０、プロセッサの状態を保持しているプロセッサステータスレジスタ（Ｐ）３２が内蔵されている。
【００２６】
これらのレジスタと、（図示していない）命令デコーダ、ＡＬＵ、メモリ制御回路、割り込み制御回路、外部Ｉ／Ｏ制御回路、及びＧＰ演算制御回路を使用して、ＧＰ命令の実行が行われる。
【００２７】
また、ＰＥ命令実行時には、命令デコーダ（図示せず）、レジスタファイル制御回路（図示せず）、ＰＥ演算制御回路（図示せず）を使用して、レジスタファイル６の制御と演算アレイ８の制御を行う。
【００２８】
レジスタファイル６には、１つのＰＥ単位に８ビットのレジスタが３２本内蔵されており、２５６ＰＥ分の（３２本の）組がアレイ構成になっている。レジスタ３４はＰＥ毎にＲ０、Ｒ１、Ｒ２、・・・Ｒ３１と呼ばれる。それぞれのレジスタ３４は演算アレイに対して１つの読み出しポートと１つの書き込みポートを備えており、８ビットのリード／ライト兼用のバスで演算アレイからアクセスされる。３２本のレジスタの内、２４本（Ｒ０〜Ｒ２３）は外部インタフェース７を介してプロセッサ外部からアクセス可能であり、外部からクロック（ＣＬＫ）とアドレス（Ａｄｄｒｅｓｓ）、リード／ライト制御（ＲＷＢ）を入力することで、任意のレジスタ３４に対して読み書きできる。
【００２９】
レジスタ３４の外部からのアクセスにおいて、１つの外部ポートで各ＰＥの１つのレジスタ３４がアクセス可能である。外部から入力されたアドレスでＰＥの番号（０〜２５５）が指定される。したがって、レジスタアクセスの外部ポートは全部で２４組搭載されている。また、外部からのアクセスは１６ビットデータで行い、１回のアクセスで２つのレジスタ（偶数のＰＥのレジスタと奇数のＰＥレジスタの１組）に同時にアクセスしている。
【００３０】
演算アレイ８は、１６ビットＡＬＵ３６と１６ビットＡレジスタ３８、Ｆレジスタ４０を内蔵している。ＰＥ命令による演算は、レジスタファイル６から読み出されたデータ若しくはグローバルプロセッサ４から与えられたデータをＡＬＵ３６の片側の入力とし、Ａレジスタ３８の内容をもう片側の入力として行われる。演算結果はＡレジスタ３８に格納される。したがって、Ｒ０〜Ｒ３１レジスタ３４若しくはグローバルプロセッサ４から与えられたデータと、Ａレジスタ３８に格納されるデータとの、演算が通常行われることになる。
【００３１】
レジスタファイル６と演算アレイ８との接続に、７ｔｏ１（７対１）のマルチプレクサ４２が置かれている。図１７に示すように、あるマルチプレクサ４２から見て、左方向の３つのＰＥ３に含まれるＲ０〜Ｒ３１レジスタ３４のデータと、右方向の３つのＰＥ３に含まれるＲ０〜Ｒ３１レジスタ３４のデータと、自らが属するＰＥ３に含まれるＲ０〜Ｒ３１レジスタ３４のデータを、演算対象として選択し得るように設定されている。また、レジスタファイル６の８ビットのデータは、シフト・拡張回路４４により任意ビットだけ、左シフトしてＡＬＵ３６に入力する。
【００３２】
さらに、８ビットの条件レジスタ（図示せず）により、ＰＥ３別に演算実行の無効／有効の制御をしており、特定のＰＥ３だけを演算対象として選択できるようになっている。
【００３３】
《前提となる４連結のラベリング処理について》
本発明は、上述のように８連結のラベリング処理を行う画像処理に関するものであるが、４連結のラベリング処理が前提技術となる。そこで、先ず４連結のラベリング処理について概説する。
【００３４】
２値画像データは、ＰＥ３のレジスタファイル６上に２次元状に配置されているとする。通常、画像データの１ライン中の画素数はＰＥ数より多い。その場合、（図示していないが）外部インタフェース７にデータ転送装置、及びフレームバッファとしてのメモリを配置し、このメモリ（フレームバッファ）に画像データを格納し、処理に応じてＰＥ３のレジスタファイルに画像データを順次転送すればよい。
【００３５】
まず、第１の実施の形態で取り扱う１６ビットの２値画像データ、及び（仮）ラベルを以下のように定義する。
・２値画像データ
背景画素・・・００００ｈ
特徴画素・・・８０００ｈ
・（仮）ラベル・・・０００１ｈ〜７ＦＦＦｈ
【００３６】
上記のような定義にした理由は、２値画像データにおいて背景画素と特徴画素との判別を１６ビットデータの最上位１ビットのみに委ねればよく、また、（仮）ラベルを含めて００００ｈより大きな数は特徴画素であると判断すればよい、という処理の簡易さを考慮したためである。
【００３７】
また、仮ラベリング処理では、異なる仮ラベル同士が後方での処理で連結した場合に、その接続情報を記憶するためのメモリが必要であり、その場合アドレスに仮ラベルを対応させ、データにその仮ラベルと連結している他の仮ラベルの値を記述して、仮ラベル同士の接続情報をメモリに記憶させている。
【００３８】
ここで、アドレス値ａｄｄｒのメモリのデータをＲＡＭ［ａｄｄｒ］と表記することとする。具体的には以下のように接続情報がメモリに記憶される。
・ＲＡＭ［ａｄｄｒ］  ＝  ００００ｈ（初期値、ラベリング処理開始前に初期化）の時、仮ラベルａｄｄｒは存在しない。
・ＲＡＭ［ａｄｄｒ］  ＝  ａｄｄｒの時、仮ラベルａｄｄｒと連結している他の仮ラベルがない、もしくは連結している複数の仮ラベルの中で自身の値が一番小さい。
・ＲＡＭ［ａｄｄｒ］  ＝  Ａ（Ａ！＝００００ｈ  かつ  Ａ！＝ａｄｄｒ）の時、仮ラベルａｄｄｒと仮ラベルＡが連結している。
【００３９】
以上の定義を用いて、副走査方向の画素の連結判定処理（処理Ａ１）と、主走査方向の画素の連結判定処理（処理Ｂ１）との内容を以下に記載する。なお、本明細書における主走査方向の画素の連結判定処理では、２画素同時に仮ラベル付けを行っていく。
【００４０】
〈処理Ａ１〉
処理Ａ１は、１ライン中の全ての画素（実際には、フレームバッファからＰＥ３のレジスタファイル６に１回の転送で格納される画素データ群）に対して、一度に並列に行われる。
・対象ラインから見て１つ上のラインの画像データを参照し、同じ列の画素に仮ラベルが割り付けられており（即ち、００００ｈ（背景画素）ではなく）、かつ対象ラインの同一列の２値画像データが８０００ｈ（特徴画素）であれば、その仮ラベルを対象ラインにコピーする。
【００４１】
〈処理Ｂ１〉
処理Ｂ１は、対象となる２画素データを、ＰＥ３のレジスタファイル６からデータ制御装置１１に転送して行われる。対象画素（２画素）の処理後の値は、その対象画素（２画素）の処理前の値と、その２画素に隣接する画素（対象ラインを左から走査する場合は左に隣接する画素、対象ラインを右から走査する場合は右に隣接する画素）の値との、３画素での値の組み合わせにより決定される。つまり、処理Ｂ１は、対象画素（２画素）に隣接する画素の処理結果を参照する逐次処理となる。この処理のパターンが図３に示される。
【００４２】
図３で用いている記号について、以下の表１で説明する。
【表１】
2006048222.tif 000003
【００４３】
ここで、図３の見方について説明する。例えばＮｏ．１３の処理パターンの場合、隣接画素に値Ａの仮ラベルが割り付けられており、処理前の（２つの）対象画素の状態が、１つ目の対象画素が値Ｂの仮ラベルであり、２つめの対象画素が背景画素であった場合には、１つ目の対象画素には値ＡとＲＡＭ［Ｂ］のうち値の小さい方の仮ラベルが割り付けられ、２つ目の対象画素にはそのまま背景画素であることを示す値（００００ｈ）が割り付けられることを表している。更にこのとき、仮ラベルＡと仮ラベルＢの接続情報を記憶する処理として、値ＡとＲＡＭ［Ｂ］のうち値の大きい方をアドレス、値の小さい方をデータとして、メモリへの書き込みアクセスを行うことも示している。
【００４４】
なお、Ｎｏ．１５の処理パターンでは、２つの対象画素ともに仮ラベルが割り付けられているが、４連結のラベリング処理を行う場合においては、処理Ａ１が終了した時点で、連続する特徴画素に異なる値の仮ラベルが割り付けられることが無いので、２つの対象画素ともに同一の仮ラベルが割り付けられている場合のみを想定すればよい。
【００４５】
また処理Ｂ１では、異なる値の仮ラベル同士が衝突した場合には若い番号の仮ラベルを残すという処理（図３のＮｏ．１２からＮｏ．１５の処理パターン）内容の特性から、対象ライン中に存在する同一領域に異なる仮ラベルが割り付けられることが生じ得る。そのため、対象ラインを左からと右からの２度走査して、一つの対象ラインにおいては同一領域にすべて同じ仮ラベルが割り付けられるようにする。この処理により、異なる仮ラベル同士の接続情報を作成する処理の負担を軽減させることができる。
【００４６】
図２に、以上の処理Ａ１と処理Ｂ１による仮ラベリング処理のフローチャートを示す。図２では、便宜上、１ライン中の画素数がＰＥ数よりも小さいものとしている。１ライン中の画素数がＰＥ数より多い場合は、既に述べたように、画像データを格納しているフレームバッファから、データ転送装置を介して、処理に応じてＰＥのレジスタファイルに画像データを順次転送すればよい。
【００４７】
図１は、処理Ｂ１を行うためのデータ制御装置１１のブロック図である。図１に示されるデータ制御装置１１は、
・外部インタフェース７に対してクロック、アドレス、及びリード／ライト制御を供給することで外部インタフェース７を制御する外部インタフェース制御部５２、
・データ制御装置１１に接続されている仮ラベル間の接続情報を記憶するためのメモリ１５に対して、クロック、アドレス、リード／ライト制御、及びデータを供給することでメモリ１５を制御するメモリ制御部６４、
・外部インタフェース７を介してＰＥ３のレジスタファイル６から読み出される画素データと、メモリ１５から読み出されるデータ（仮ラベル間の接続情報）と、１つ前の処理で対象画素に隣接する画素に割り付けた仮ラベルの値を読み込み、対象画素に割り付けるべき仮ラベルの値を決定するラベル判定回路５８、
・ラベル判定回路５８での判定結果に基づいて仮ラベルを新規に発生させるラベルカウンタ５６、
・上記カウンタ５６によって発生される仮ラベルと、仮ラベル割り付け済みの対象画素のデータと、１つ前の処理で対象画素に隣接する画素に割り付けた仮ラベルと、メモリ１５から読み出されるデータが入力されており、上記ラベル判定回路５８において仮ラベルとして判定されたデータを出力するマルチプレクサ６０、
・マルチプレクサ６０からデータを受け取り、そのデータを仮ラベルとして外部インタフェース７に書き戻すためのラベルレジスタ６２から構成されている。
【００４８】
上記の構成において、ラベル判定回路５８に読み込むデータのうち、上記の「１つ前の処理で対象画素に隣接する画素に割り付けた仮ラベル」は、対象画素についての処理開始前のラベルレジスタ６２の値と等価である。外部インタフェース制御部５２は、外部インタフェース７に供給するアドレスを発生させるためのアドレスカウンタを内蔵している。アドレスカウンタは、画素データの転送が主走査方向の左からも右からも行えるように、アップ・ダウンカウンタを用いている。
【００４９】
メモリ制御部６４は、仮ラベリング処理開始前のメモリ初期化時には内蔵しているアップカウンタからアドレスを生成し、内蔵しているレジスタの値をメモリ１５への入力データとして発行する。仮ラベリング処理実行時においては、処理Ｂ１のアルゴリズムに従いラベルカウンタ５６の値、対象画素のデータ、ラベルレジスタ６２の値、メモリ１５から読み出したデータのいずれかをアドレスとして発行し、仮ラベルカウンタの値、ラベルレジスタ６２の値、メモリ１５から読み出したデータのいずれかをメモリ１５への入力データとして発行する。なお、この構成において、対象画素を１画素、もしくは２画素以上の複数入力できるように変更することは容易である。
【００５０】
《第１の実施の形態》
続いて、本発明の第１の実施の形態に係る画像処理方法を説明する。
【００５１】
前記の「前提となる４連結のラベリング処理」を行う構成を利用して、８連結の仮ラベリング処理を行おうとすると、以下のような２つの問題点が生じる。
【００５２】
８連結の仮ラベリング処理では、副走査方向の画素の連結処理Ａ１を拡張し、図４に示すように、対象ラインから見て１つ上のラインの、同一列上の画素とともに、その両隣の画素も参照する必要がある。この処理Ａ１を拡張した処理を処理Ａ２と呼ぶこととする。ここで、図５に示すような図形を含む２値画像データを処理する場合、処理Ａ２の処理過程において、値Ａの仮ラベルと値Ｂの仮ラベルとが衝突するため、その接続情報をメモリに書き込まなければならない。図５に示すような図形は同一ライン上に複数存在する可能性があり、処理Ａ２をＰＥ３の演算アレイ８で並列に処理できなくなってしまう。
【００５３】
また、図６のような図形を含む２値画像データを処理する場合では、処理Ａ２は問題なく行うことができるが、その結果により、処理Ｂ１の処理パターンＮｏ．１５（図３参照）において、３つ（以上）の異なる仮ラベルが衝突することがある。それら３つの仮ラベル間の接続情報をメモリに書き込まなければならないとすると、他の処理パターンに比べ処理速度が遅くなってしまう。具体的には、３つの仮ラベルの内で最も小さい仮ラベルを仮ラベルＣとすると、仮ラベルＣと仮ラベルＡ、仮ラベルＣと仮ラベルＢの接続情報を記述せねばならず、従ってメモリに２度ライト（書き込み）アクセスしなければならない。他の処理パターンでは、２つの異なる仮ラベルの衝突までしかないため、メモリへのライトアクセスは１度だけでよい。
【００５４】
そこで、図５、及び図６のようなＶ字型の図形が現れた場合には、それぞれ、図７、図８のように、Ｖ字の間の画素を仮に埋める方法が有効である。この方法を実践する処理を、主走査方向の画素の連結処理（処理Ｂ１）の前処理として行うことで、上記２つの問題点、即ち、処理Ａ１を８連結ラベリング処理のために処理Ａ２に拡張した際に発生する問題点を解消することができる。
【００５５】
また、８連結ラベリング処理の際も処理Ｂ１を拡張する必要が無く、４連結ラベリング処理の際と同一の処理を用いることができる。従って、処理Ｂ１を行う図１に示したデータ制御装置１１をそのまま用いることができる。このＶ字の間の画素を埋める処理（以下、処理Ｃ１と言う。）を、本発明の第１の実施の形態に係るＳＩＭＤ型マイクロプロセッサにおけるソフトウェア処理（処理Ｃ１）で実現した場合のものを以下に記す。
【００５６】
《処理Ｃ１》
処理Ｃ１では、８ビットの条件レジスタ（Ｔレジスタ）を使用する。ＰＥ番号がＭ（Ｍ列目）のＴレジスタのビット０をＴ０［Ｍ］、ビット１をＴ１［Ｍ］というように表記することとする。Ｔレジスタは各ＰＥに１つずつ備えられているため、画素ごとの状態を保持するのに使用することができる。処理Ｃ１開始前に全てのＴレジスタは０に初期化する。Ｎライン目の画像データに対して処理Ｃ１を行う場合、既に述べたようにＮ＋１ライン目の画像データを参照する。Ｎライン目のＭ列の画素データを“ＰＥｎ［Ｍ］”と表記することとし、処理Ｃ１の内容を以下に記載する。
【００５７】
（Ｓｔｅｐ１．）Ｎライン目の画素データが００００ｈ（背景画素）であった場合、その画素に対応するＴ１に１をセットする。
ＰＥｎ［Ｍ］＝００００ｈ  →  Ｔ１［Ｍ］＝１
【００５８】
（Ｓｔｅｐ２．）Ｎ＋１ライン目の画素データが８０００ｈ（特徴画素）であり、且つその画素に対応するＴ１に１がセットされている場合、引き続きそのＴ１に１をセットする。それ以外の場合、Ｔ１に０をセットする。
ＰＥｎ＋１［Ｍ］＝８０００ｈ  ＆＆  Ｔ１［Ｍ］＝１  →  Ｔ１［Ｍ］＝１
【００５９】
（Ｓｔｅｐ３．）Ｔ１に１がセットされており、Ｎライン目の画素の左右両隣の画素が共に８０００ｈ（特徴画素）であった場合、その画素に対応するＴ２に１をセットする。
Ｔ１［Ｍ］＝１  ＆＆  ＰＥｎ［Ｍ−１］＝８０００ｈ  ＆＆  ＰＥｎ［Ｍ＋１］＝８０００ｈ  →  Ｔ２［Ｍ］＝１
【００６０】
（Ｓｔｅｐ４．）Ｔ１に１がセットされており、Ｎライン目の画素の左隣の画素が８０００ｈ（特徴画素）であり、その右隣の画素が００００ｈ（背景画素）であるが、対応するＴ１の値が１であり、もう１つ右隣の画素が８０００ｈ（特徴画素）であるとき、その画素に対応するＴ３に１をセットする。
Ｔ１［Ｍ］＝１  ＆＆  ＰＥｎ［Ｍ−１］＝８０００ｈ  ＆＆  （ＰＥｎ［Ｍ＋１］＝００００ｈ  ＆＆  Ｔ１［Ｍ＋１］＝１）  ＆＆  ＰＥ［Ｍ＋２］＝８０００ｈ  →  Ｔ３［Ｍ］＝１
【００６１】
（Ｓｔｅｐ５．）Ｔ１に１がセットされており、Ｎライン目の画素の右隣の画素が８０００ｈ（特徴画素）であり、その左隣の画素が００００ｈ（背景画素）であるが、対応するＴ１の値が１であり、もう１つ左隣の画素が８０００ｈ（特徴画素）であるとき、その画素に対応するＴ４に１をセットする。
Ｔ１［Ｍ］＝１  ＆＆  ＰＥｎ［Ｍ＋１］＝８０００ｈ  ＆＆  （ＰＥｎ［Ｍ−１］＝００００ｈ  ＆＆  Ｔ１［Ｍ−１］＝１）  ＆＆  ＰＥ［Ｍ−２］＝８０００ｈ  →  Ｔ４［Ｍ］＝１
【００６２】
（Ｓｔｅｐ６．）Ｔ２、Ｔ３、Ｔ４に１がセットされているＮライン目の画素を特徴画素（例えば、８０００ｈ）に書き換える。
Ｔ２［Ｍ］＝１  ＆＆  Ｔ３［Ｍ］＝１  ＆＆  Ｔ４［Ｍ］＝１  →  ＰＥｎ［Ｍ］＝８０００ｈ
【００６３】
次に、処理Ａ２、処理Ｂ１、及び処理Ｃ１を用いた８連結の仮ラベリング処理の概略の流れを示す。
【００６４】
《８連結の仮ラベリング処理》
以下では、説明の便宜上、１ライン中の画素数がＰＥ数よりも小さい場合の例について記載している。１ライン中の画素数がＰＥ数より多い場合は、既に述べたように、外部インタフェース７にデータ転送装置、及びフレームバッファとしてのメモリを配置し、このメモリ（フレームバッファ）に画像データを格納し、処理に応じてＰＥ３のレジスタファイルに画像データを順次転送すればよい。
【００６５】
（Ｓｔｅｐ１．）Ｎライン目の画像データに対し処理Ａ２を行う。処理Ａ２は副走査方向の画素の連結処理であり、Ｎ−１ライン目の画像データを参照する。
【００６６】
（Ｓｔｅｐ２．）Ｎライン目の画像データに対し処理Ｃ１を行う。処理Ｃ１はＶ字の間の画素を埋める処理であり、Ｎ＋１ライン目の画像データを参照する。
【００６７】
（Ｓｔｅｐ３．）Ｎライン目の画像データに対して、先ず、主走査方向の左から走査して処理Ｂ１を行う。処理Ｂ１は、主走査方向の画素の連結処理である。
【００６８】
（Ｓｔｅｐ４．）Ｎライン目の画像データに対して、次に、主走査方向の右から走査して処理Ｂ１を行う。
【００６９】
（Ｓｔｅｐ５．）Ｓｔｅｐ１からＳｔｅｐ４の処理ステップを画像データの全ラインについての処理が終了するまで繰り返す。
【００７０】
なお、ＳＩＭＤ型マイクロプロセッサは、上記処理Ｃ１を実現するために、Ｎ−１ライン目、Ｎライン目（対象ライン）、Ｎ＋１ライン目の３ライン分の画像データをＰＥ３のレジスタファイル６に読み込んでおり、上記処理Ａ２のためにＮライン目の画像データからＮ−１ライン目の画像データを参照可能であり、上記処理Ｃ１のためにＮライン目の画像データからＮ＋１ライン目の画像データを参照可能であることが、必要である。
【００７１】
《第２の実施の形態》
続いて、本発明の第２の実施の形態に係る画像処理方法を説明する。
【００７２】
本発明の第２の実施の形態に係る画像処理方法では、第１の実施の形態に係る画像処理方法で記述したＶ字の間の画素を埋める処理（処理Ｃ１）において、背景画素から特徴画素に書き換えられる画素（特徴画素Ｂとする。）と、元々特徴画素であった画素（特徴画素Ａとする。）を区別する。即ち、２値画像データ、及び（仮）ラベルを以下のように定義し、条件レジスタ（Ｔレジスタ）を用いてそのように設定する。
・２値画像データ
背景画素    …  ００００ｈ
特徴画素Ａ  …  ８０００ｈ（ビット１５のみが１）
特徴画素Ｂ  …  Ｃ０００ｈ（ビット１５、及びビット１４が１）
・（仮）ラベル  …  ０００１ｈから３ＦＦＦｈの数（ビット０からビット１３で表現）
【００７３】
第１の実施の形態に係る画像処理方法で述べたように、Ｖ字の間の画素を埋める処理（処理Ｃ１）の後に、主走査方向の画素の連結処理として処理Ｂ１が行われるが、ビット１５、ビット１４の情報を残しておくことで、仮ラベリング処理終了後に、特徴画素Ｂを再び背景画素に書き戻すことができる。
【００７４】
通常のラベリング処理では、仮ラベリング処理終了後に、仮ラベル間の接続情報を整理して仮ラベルが正しいラベルに変換されるように変換テーブルを作成し、作成された変換テーブルを参照しながら仮ラベルを本ラベルに変換する本ラベリング処理を行う。この本ラベリング処理の際に、特徴画素Ｂを背景画素に書き戻す処理を行えば、第２の実施の形態で処理ステップの増加はない。
【００７５】
仮ラベル間の接続情報を整理して本ラベリング処理のための変換テーブルを作成する処理を処理Ｄ１、本ラベリング処理を処理Ｅ１として以下に記す。この処理Ｅ１に、特徴画素Ｂを背景画素に書き直す処理が含まれている。
【００７６】
《処理Ｄ１》
処理Ｄ１では、メモリ（変換テーブル）のデータに対して、以下の処理Ｄ１−１からＤ１−２のいずれかを、“ＲＡＭ［ａｄｄｒ］  ＝  ００００ｈ”となるまで、“ａｄｄｒ”を１から昇順にインクリメントして実行していく。ここで、“００００ｈ”は変換テーブルのデータの初期値であり、“ＲＡＭ［ａｄｄｒ］  ＝  ００００ｈ”であるということは、そのａｄｄｒに対応する仮ラベルが存在しないことを示す（図１０〜図１３参照）。また、処理Ｄ１では、カウンタを１つ使用する（本ラベルカウンタと呼ぶ。）。本ラベルカウンタは、処理Ｄ１開始前に“００００ｈ”に初期化しておく。
【００７７】
・処理Ｄ１−１
ＲＡＭ［ａｄｄｒ］  ＝  ａｄｄｒのとき、本ラベルカウンタを１インクリメントし、インクリメント後の値をＲＡＭ［ａｄｄｒ］に書き戻す。
・処理Ｄ１−２
ＲＡＭ［ａｄｄｒ］  ！＝  ａｄｄｒのとき、ＲＡＭ［ＲＡＭ［ａｄｄｒ］］の値をＲＡＭ［ａｄｄｒ］に書き戻す。
【００７８】
《処理Ｅ１》
処理Ｅ１では、仮ラベリング処理終了後の画像データを順次走査し、画素データの値に応じて、以下の処理Ｅ１−１から処理Ｅ１−３のいずれかの処理を行う。処理Ｅ１−２が、特徴画素Ｂを再び背景画素に書き戻す処理に対応する。
【００７９】
・処理Ｅ１−１
対象画素データが００００ｈ（背景画素）であるとき、対象画素データにそのまま００００ｈを割り付ける。
・処理Ｅ１−２
対象画素データの最上位２ビット（ビット１５、及びビット１４）がともに１である（即ち、特徴画素Ｂである）とき、対象画素データに００００ｈを割り付ける。
・処理Ｅ１−３
対象画素データが処理Ｅ１−１、処理Ｅ１−２のいずれの条件も満たさない（特徴画素Ａから変換された仮ラベルである）とき、この値をＬａｂｅｌとすると、ＲＡＭ［Ｌａｂｅｌ］を本ラベルとして、対象画素データに割り付ける。
【００８０】
上記の処理Ｅ１を実現するハードウェア（データ制御装置）は、図１に示す第１の実施の形態に係るデータ制御装置１１と略同様の構成で実現することができる。即ち、データ制御装置１１に含まれるラベル判定回路５８において、処理Ｂ１の判定処理に加えて、処理Ｅ１の判定処理を行えるように追加変更して構成すればよい。
【００８１】
図９は、本発明の第２の実施の形態に係る画像処理方法を構成する処理Ａ２、処理Ｂ１、処理Ｃ１、処理Ｄ１、及び処理Ｅ１を用いたラベリング処理全体のフローチャートである。図９のフローチャートを概略説明する。
【００８２】
第２の実施の形態に係る画像処理方法を構成するラベリング処理では、まず、画像データがＰＥ３のレジスタファイル６へ転送（１ライン分）される（Ｓ３２）。次に、ＰＥ部におけるＳＩＭＤ処理により２値化処理が行われる（Ｓ３４）。続いて、処理Ａ２、即ち、副走査方向の画素の連結が行われる（Ｓ３６）。そして、処理Ｃ１、即ち、Ｖ字の間の画素を埋める処理が行われる（Ｓ３８）。更に、主走査方向の左から走査して主走査方向の画素の連結がなされ（処理Ｂ１、Ｓ４０）、直後に主走査方向の右から走査して主走査方向の画素の連結がなされる（処理Ｂ１、Ｓ４２）。
【００８３】
画像データの全ラインについての処理が終了するまで、上記Ｓ３２〜Ｓ４２の処理が繰り返される（Ｓ４４）。画像データの全ラインについての処理が終了すれば（Ｓ４４・ＹＥＳ）、本ラベリング処理用変換テーブルがデータ制御装置１１で作成され（処理Ｄ１、Ｓ４６）、その上で本ラベリング処理がデータ制御装置１１で行われる（処理Ｅ１、Ｓ４８）。以上でラベリング処理が終了する（Ｓ５０）。
【００８４】
図１０（１）のような２値画像データに対して、処理Ａ２、処理Ｂ１、処理Ｃ１を用いて仮ラベリング処理を行った場合の、画像データの状態と、仮ラベル間の接続情報を記憶するメモリ（変換テーブル）の状態との変化の様子を、図１０（２）から図１３（１４）までに示す。
【００８５】
図１０〜図１５において、“●”は特徴画素Ａを、空欄は背景画素を、数値は（仮）ラベルを表している。また、“★”は特徴画素Ｂを表し、この特徴画素Ｂに例えば値３の仮ラベルが割り付けられたならば、“★３”というように示している。
【００８６】
なお、仮ラベリング処理は、図９で示したフローチャートに従って行われるが、処理Ａ２、処理Ｂ１、処理Ｃ１により画像データの状態が変化しない場合は、図面から省略している。
【００８７】
図１４は、処理Ｄ１により、仮ラベル間の接続情報（図１３（１４））から作成された本ラベリング処理のための変換テーブルである。図１５は、処理Ｅ１により、図１４の画像データに対して本ラベリング処理が行われた後の画像データの状態である。
【図面の簡単な説明】
【００８８】
【図１】本発明に係るデータ制御装置のブロック図である。
【図２】仮ラベリング処理のフローチャートである。
【図３】処理Ｂ１のパターンを示す一覧表である。
【図４】８連結の仮ラベリング処理で拡張される副走査方向の画素の連結処理の概念図である。
【図５】８連結の仮ラベリング処理で生じ得る問題点を示す概念図である。
【図６】８連結の仮ラベリング処理で生じ得る問題点を示す概念図である。
【図７】８連結の仮ラベリング処理で生じ得る問題点の解決を示す概念図である。
【図８】８連結の仮ラベリング処理で生じ得る問題点の解決を示す概念図である。
【図９】本発明の第２の実施の形態に係る画像処理方法を構成する処理Ａ２、処理Ｂ１、処理Ｃ１、処理Ｄ１、及び処理Ｅ１を用いたラベリング処理全体のフローチャートである。
【図１０】２値画像データに対して、処理Ａ２、処理Ｂ１、処理Ｃ１を用いて仮ラベリング処理を行った場合の、画像データの状態と、仮ラベル間の接続情報を記憶するメモリ（変換テーブル）の状態との変化の様子を示す図である。
【図１１】２値画像データに対して、処理Ａ２、処理Ｂ１、処理Ｃ１を用いて仮ラベリング処理を行った場合の、画像データの状態と、仮ラベル間の接続情報を記憶するメモリ（変換テーブル）の状態との変化の様子を示す図である。
【図１２】２値画像データに対して、処理Ａ２、処理Ｂ１、処理Ｃ１を用いて仮ラベリング処理を行った場合の、画像データの状態と、仮ラベル間の接続情報を記憶するメモリ（変換テーブル）の状態との変化の様子を示す図である。
【図１３】２値画像データに対して、処理Ａ２、処理Ｂ１、処理Ｃ１を用いて仮ラベリング処理を行った場合の、画像データの状態と、仮ラベル間の接続情報を記憶するメモリ（変換テーブル）の状態との変化の様子を示す図である。
【図１４】処理Ｄ１により、図１３（１４）の仮ラベル間の接続情報から作成された本ラベリング処理のための変換テーブルである。
【図１５】処理Ｅ１により、図１４の画像データに対して本ラベリング処理が行われた後の画像データの状態である。
【図１６】本発明に係る画像処理装置の構成を示すブロック図である。
【図１７】本発明に係るＳＩＭＤ型マイクロプロセッサの、更に詳細な構成を示すブロック図である。
【符号の説明】
【００８９】
４・・・グローバルプロセッサ、６・・・レジスタファイル、７・・・外部インタフェース、１１・・・データ制御装置、１５・・・（仮ラベル間接続情報格納）メモリ、５２・・・外部インタフェース制御部、５８・・・ラベル判定回路、６２・・・ラベルレジスタ、６４・・・メモリ制御部。
【図１】
2006048222.tif 000004
【図２】
2006048222.tif 000005
【図３】
2006048222.tif 000006
【図４】
2006048222.tif 000007
【図５】
2006048222.tif 000008
【図６】
2006048222.tif 000009
【図７】
2006048222.tif 000010
【図８】
2006048222.tif 000011
【図９】
2006048222.tif 000012
【図１０】
2006048222.tif 000013
【図１１】
2006048222.tif 000014
【図１２】
2006048222.tif 000015
【図１３】
2006048222.tif 000016
【図１４】
2006048222.tif 000017
【図１５】
2006048222.tif 000018
【図１６】
2006048222.tif 000019
【図１７】
2006048222.tif 000020