JP5300666B2 - ラベリング処理方法、並びにそのシステム、装置及びプログラム - Google Patents

ラベリング処理方法、並びにそのシステム、装置及びプログラム Download PDF

Info

Publication number
JP5300666B2
JP5300666B2 JP2009202922A JP2009202922A JP5300666B2 JP 5300666 B2 JP5300666 B2 JP 5300666B2 JP 2009202922 A JP2009202922 A JP 2009202922A JP 2009202922 A JP2009202922 A JP 2009202922A JP 5300666 B2 JP5300666 B2 JP 5300666B2
Authority
JP
Japan
Prior art keywords
label
variable
value
row
pixel
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2009202922A
Other languages
English (en)
Other versions
JP2011053965A (ja
Inventor
哲郎 服部
宗彦 高田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
MICROTECHNICA CO., LTD.
Original Assignee
MICROTECHNICA CO., LTD.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by MICROTECHNICA CO., LTD. filed Critical MICROTECHNICA CO., LTD.
Priority to JP2009202922A priority Critical patent/JP5300666B2/ja
Publication of JP2011053965A publication Critical patent/JP2011053965A/ja
Application granted granted Critical
Publication of JP5300666B2 publication Critical patent/JP5300666B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Image Processing (AREA)
  • Image Analysis (AREA)

Description

本発明はラベリング処理方法に関し、より詳細には、高いビットレートでのリアルタイム処理が可能であり、なおかつパイプライン処理が可能なラベリング処理方法、並びにそのシステム、装置及びプログラムに関する。
工業製品の外観を検査する方法として、生産ライン上の製品の外観をテレビカメラで撮影し、撮影した画像をデジタル処理することにより、製品が不良品か否かを判別する方法が知られている。また、画像(白黒2値パターン)から連結領域を1つのまとまりとして認識し抽出する領域ラベリング処理は、デジタル画像処理分野における基本的な処理として知られており、画像処理を用いる外観検査装置においても、工業製品の撮影画像に対して領域ラベリング処理が行われている。
下記非特許文献1には、従来技術に係るラベリング処理方法が開示されている。非特許文献1に記載のラベリング処理方法によると、ラベル間の連結性の検出とラベルの付与とを行いながら、同時に1つ前の行のラベルを常に変更し、さらに、論理マスクが行の終わりに達する毎に、1次元配列形式のテーブルに記録しているラベル間の連結情報(以下、単にラベル間連結情報と記す)の統合処理を行毎に行うことにより、ハードウェアによるパイプライン処理が可能なラベリング処理を実現することができる。
図1は、従来技術に係るラベリング処理方法において行う画像のラスタ走査を説明する模式図である。図1に示すように、2値化(画素値が0または1)されている入力画像に対して、論理マスク108により画像109をラスタ走査しながら、連結性の検出とラベルの付与とを行い、ラベル画像(図示せず)を生成する。図1中に、ラスタ走査の走査方向を実線の矢印で記す。論理マスク108中のX,Y,Z,U,Pは、これらに位置が対応する画素でのラベル値を表す変数(以下、単にラベル変数と記す)である。ここで、ラベル変数Pの初期値は入力画像の画素値であり、ラベル変数X,Y,Z,Uの初期値は全て0である。画像109内においてラベル変数Pが位置する点が注目画素である。即ち、画像109をラスタ走査して注目画素がラスタ走査順の次の画素に移動する度に、注目画素には入力画像の画素値が入力され、注目画素に対応するラベル画像内の点に、ラベル値を出力する。画素毎に付与されたラベル値は、入力画像に対応するラベル画像を構成する。
また、ラベル間連結情報を記録するテーブルをLRAM(Linkage RAM:1次元配列であり配列の初期値は全て0)とし、画像内のラベルの個数を表すラベルカウンタをLC(初期値は1)とする。更に、変数Vおよび変数Zを、それぞれ、V=Max{X,U}、Z=LRAM(LRAM(Z))と定義する。演算V=Max{X,U}は、ラベル変数X,Uのうち、値が大きい方のラベル変数を変数Vに設定することを意味し、記号「←」は記号の右に記載した変数から記号の左に記載した変数への値の代入を意味するものとする。
以下の説明において、「連結」という用語は、上下左右と斜め方向に隣接する近傍も含めた「8連結」を意味し、ラベル値を「管理」するとは、複数のラベル値のデータを関連付けて記録または更新することを意味する。また、ラベル間連結情報とは、どのラベル値とどのラベル値とが連結しているのかを管理する情報を意味する。例えば、ラベル値「1」を有する領域とラベル値「2」を有する領域とが、或る点において連結する場合には、テーブルLRAMのアドレス「2」に値「1」を記録することで、ラベル値「2」を有する領域とラベル値「1」を有する領域とが連結していることを管理する。その後、ラベル間連結情報に基づいてラベル値の読み替えを行い、最終的には、これら2つの領域には1つのラベル値「1」を付与する。
図2は、従来技術に係るラベリング処理を示すフローチャートであり、図3は、従来技術に係るラベリング処理のデータフロー図である。以下、下記非特許文献1に記載の従来技術に係るラベリング処理について、図2に示すフローチャートおよび図3に示すデータフロー図に基づいて説明する。従来技術に係るラベリング処理の処理手順の概要を説明すると次の通りである。まず、1次ラベリングとして、画素毎の処理(S1)と、行毎の処理(S3)とを画像109内で連続して行い、その後、2次ラベリングとして画像毎の処理(S5)を行う。
1次ラベリング(S1〜S4)
ステップS1において、ラベル付けの処理を画素毎に行う。画素毎の処理では、ラベル変数Pの値(即ち、2値画像の画素値)と、ラベル変数Pに連結する論理マスク108中のラベル変数X,Y,Z,Uのラベル値とに基づいて、次の(Case1)〜(Case8)に示す場合分け条件の基でラベル変数PおよびZにラベルを付与して1次ラベリング後のラベル画像を生成し、テーブルLRAMにラベル間連結情報を記録する。ここで、ラベル変数Pの1つ前の行に位置するラベル変数Zにラベル値を付与することで、現在行の1つ前の行のラベル値を書き直している。
(Case1)P=0の場合
Z←Zを実行
(Case2)P≠0かつY≠0の場合
P←Y,
Z←Zを実行
(Case3)P≠0かつY=0かつZ=0かつV=0の場合
P←LC,
Z←0,
LRAM(LC)←LCを実行
後処理に LC←LC+1 を実行
(Case4)P≠0かつY=0かつZ=0かつV≠0の場合
P←V,
Z←0を実行
(Case5)P≠0かつY=0かつZ≠0かつV≠0かつZ>Vの場合
P←V,
LRAM(Z)←V,
Z←Vを実行
(Case6)P≠0かつY=0かつZ≠0かつV≠0かつZ<Vの場合
P←Z
LRAM(V)←Z
Z←Zを実行
(Case7)P≠0かつY=0かつZ≠0かつV≠0かつZ=Vの場合
P←V,
Z←Zを実行
(Case8)P≠0かつY=0かつZ≠0かつV=0の場合
P←Z
Z←Zを実行
ここで、P=0であることから、(Case1)の場合分けは、注目画素に位置するラベル変数Pのラベル付けが不要であることを意味している。(Case2)の場合分けは、ラベル変数Pがラベル変数Yと連結し、ラベル変数Pにラベル変数Yと同じラベル値を付与することを意味している。(Case3)の場合分けは、注目画素の周囲に位置するラベル変数Z,Y,Z,Uの値が全て0であることから、ラベル変数Pが周囲のどのラベル変数とも連結せずに、ラベル変数Pに新たなラベル値を付与することを意味している。(Case4)の場合分けは、ラベル変数Pがラベル変数XまたはUと連結することを意味している。(Case5)〜(Case7)の場合分けは、ラベル変数Pが、ラベル変数Zとラベル変数XまたはUとで連結することを意味しており、さらに変数Zおよび変数Vを大小比較して、小さい方の値で更新を行うことを意味している。(Case8)の場合分けは、ラベル変数Pがラベル変数Zと連結することを意味している。
次に、ステップS2において、注目画素が行中の最後の画素であるか否かを判断する。最後の画素である場合はステップS3を実行し、そうでない場合は、図1に示すラスタ走査順の次の画素に対してステップS1を実行する。
ステップS3において、ラベル間連結情報の統合処理を行毎に行う。次のサブステップ(ss31)〜(ss34)に示す処理を行い、任意のラベルkにおいてラベルkと連結している一連のラベル中の最小ラベルを代表ラベル値として、LRAM(k)の値とする。ここで、定数Nは、対象となる行(現在行)内に出現した最大ラベル値(現在行内のラベルの最大値)であり、行単位で初期化(初期値は1)される。また、変数kはラベル値であり、1次元配列であるテーブルLRAMの添え字(アドレス)である。なお、ラベルkが他のラベルと連結しない孤立したラベルである場合、まずLRAM(k)=kであり、更にLRAM(LRAM(k))=kであるので、LRAM(k)の値は結果として変化せず不都合は生じない。
(ss31) k←1を実行
(ss32) LRAM(k)←LRAM(LRAM(k))を実行
(ss33) k←k+1を実行
(ss34) k≦Nの場合はサブステップ(ss32)を実行
それ以外の場合は終了
次に、ステップS4において、注目画素が位置する行が、画像内の最後の行であるか否かを判断する。最後の行である場合はステップS5を実行し、そうでない場合は、図1に示すラスタ走査順の次の画素(即ち、次の行の最初の画素)に対してステップS1を実行する。
2次ラベリング(S5)
ステップS5において、連続したラベル値の付与処理を画像毎に行う。次のサブステップ(ss51)〜(ss56)に示す処理を行って、領域毎に付与したラベル値を連続した値に並び替えした後、もう1度画像109をラスタ走査しながら、テーブルLRAMに記録しておいたラベル間連結情報(ステップS3において行毎に統合処理済み)に基づいてラベル値の読み替えを行い、1つの連結領域には1つのラベルが付与されるようにする。即ち、サブステップ(ss51)〜(ss56)に示す処理により、テーブルLRAMに記録しておいたラベル値を連続した値に並び替えした後、1次ラベリング処理後のラベル画像のラベル値を画素単位で出力する際に、テーブルLRAMをルックアップテーブル方式で参照しながら、ラベル値を読み替えて2次ラベリング後のラベル画像として生成する。
ここで、定数Nは画像内に出現した最大ラベル値(1次ラベリングにおいて仮に付与されたラベル(即ちダミーラベル)も含む)であり、画像毎に初期値1にリセットされる。定数NはラベルカウンタLCの値によって決まる。また、変数kは1次元配列であるテーブルLRAMの添え字(アドレス)であり、変数jはラベル値である。
(ss51) k←1,j←1を実行
(ss52) LRAM(k)=kの場合はサブステップ(ss53)を実行
それ以外の場合はサブステップ(ss54)を実行
(ss53) LRAM(k)←jを実行
後処理に j←j+1 を実行し、サブステップ(ss55)を実行
(ss54) LRAM(k)←LRAM(LRAM(k))を実行
(ss55) k←k+1を実行
(ss56) k≦Nの場合はサブステップ(ss52)を実行
それ以外の場合は終了
ステップS5の処理を終了すると、ラベリング処理を終了する。
ここで、従来技術に係るラベリング処理方法においては、2次ラベリングの処理をラベル間連結情報の統合処理後に行う必要はなく、ラベル間連結情報の統合処理と2次ラベリングとを同時並行して行うことができる。この理由は、もう一度画像109を上からラスタ走査するときに、ラベル値の小さい順にラベルが出現するからである。
図4は、従来技術に係るラベリング処理方法を行う電子回路基板(ラベリング処理装置)の概略構成の一例を示すブロック図であり、図5は、従来技術に係るラベリング処理方法を行う電子回路基板におけるパイプライン処理を説明するタイムチャートである。
図4に示すように、ラベリング処理装置100は、1次ラベリング部Aおよび2次ラベリング部Bの2つの基板から構成される。1次ラベリング部Aは、ラベル付け論理回路101と、ラベル統合回路102と、1次ラベリング側のLRAM103と、ラインバッファ104とを備え、2次ラベリング部Bは、画像メモリ105と、2次ラベリング側のLRAM106とを備える。LRAM103およびLRAM106は切替式のメモリである。1次ラベリング部Aと2次ラベリング部Bとは2つのバスを介して結合される。即ち、1次ラベリングの結果であるラベル画像を画像メモリ105へ格納するためのバスCと、統合したラベル間連結情報をLRAM103からLRAM106へ伝送するためのバスDである。
1次ラベリング部Aでは、ラベル付け論理回路101が、外部から入力される画像信号に対してラベル間の連結性の検出とラベルの付与とを行い、ラベル間連結情報を1次ラベリング側のLRAM103に記録する。この際、1行分のラベル画像がラインバッファ104に蓄えられている。そして、ラベル統合回路102が、LRAM103内に記録されているラベル間連結情報に対して、行毎のラベル間連結情報の統合処理を行う。1次ラベリング部Aにおいてラベル付けされた入力画像は、画像メモリ105に蓄えられて1画像分遅延される。入力画像の最終行が1次ラベリング部Aを通過後、最終行でのLRAM103内のラベル間連結情報の統合処理が行われ、同時に、統合されたラベル間連結情報が、2次ラベリング側のLRAM106へ伝送される。その後、次の画像信号が入力されると、画像メモリ105内のラベル画像がLRAM106を介して出力される。このとき、2次ラベリング部Bでは、1次ラベリングの処理で既にラベル付けされた画素値をアドレスとしてLRAM106へアクセスして、LRAM106に記録されたラベル間連結情報に基づいてラベル値の読み替えを行い、読み替え後のラベル値を有するラベル画像を出力する。即ち、LRAM106が一種の濃度変換テーブルとして機能し、この変換により各連結領域が各々同一のラベル値となるようにする。一方、1次ラベリング部Aでは、次の入力画像信号に対してラベル間の連結性の検出とラベルの付与とを行い、LRAM106へ伝送することにより空き領域となったLRAM103に、ラベル間連結情報を記録する。
このように、連続して入力される画像信号に対して、1次ラベリング部Aおよび2次ラベリング部Bにおいて行うラベリング処理は、同時並行して行われることが可能である。即ち、図5に示すように、従来技術に係る1次ラベリングの処理および2次ラベリングの処理は、連続して入力される画像に対してパイプライン処理が可能である。
また、付与するラベル値の大きさ(ビット数)は、入力画像の画素数により決定されるが、入力画像の画素数が例えば横512×縦512の画素数であれば、行毎に出現する最大のラベル値が256個であり、列についても同様であるので、ラベル値の大きさは、最大で横256×縦256=65536(即ち2バイト)の大きさであればよく、ラベル画像のメモリサイズ(バイト数)は、最大で横512×縦512×2バイト=512キロバイト(ここで、1キロバイト=1024バイトで計算)であればよい。
服部哲郎,"パイプライン方式によるリアルタイムの領域ラベリング(I)−−基本アルゴリズムと正当性の証明−−",電子情報通信学会・技術研究報告(vol.93,No.268),PRU93−62,HC93−36,pp.1−8,(1993−10)
工業製品の外観検査を効率良く行うためには、生産ライン上を流れる製品の外観をリアルタイムで検査する必要がある。ここで、不良品の判別の精度および検査の処理能力の両方を向上させようとすると、単位時間あたりの画像の撮影枚数を増大させつつ、高い解像度の撮影画像に対してラベリング処理を行う必要がある。即ち、高いビットレートでのラベリング処理が必要となる。
しかしながら、従来技術に係るラベリング処理方法では、高精細画像(例えば、ハイビジョン(登録商標)画像)のような高解像度の画像に対しては、ラベル数の増大にラベリング処理が追いつかず、高いビットレートでのデジタル画像処理ができないという問題がある。しかも、従来では、ラベリング処理の対象は2値画像であったが、最近では、ラベリング処理の対象は高解像度の例えばグレースケール画像であるので、更に出現ラベルが増大し、それにより、従来技術に係るラベリング処理方法では、リアルタイムでのラベリング処理が実際上不可能であるという問題がある。さらに、従来提案されている他のラベリング処理方法であっても、ラスタ走査時に停留や逆戻りを行う処理方法であれば、ハードウェアによるパイプライン処理には適さないという問題がある。
本発明は、上記課題を解決するためになされたものであり、その目的は、テレビカメラから連続した映像信号として伝送されてくるデジタル画像に対して、高いビットレートでのリアルタイム処理が可能であり、なおかつパイプライン処理が可能なラベリング処理方法、並びにそのシステム、装置及びプログラムを提供することにある。
上記の課題を解決するために、本発明に係る第1のラベリング処理方法(1)は、演算部と記録部とを備えるシステムにおいて、前記記録部に記録されている画像データで表される入力画像に対して論理マスクをラスタ走査することにより、前記演算部が前記画像データのラベリング処理を行う方法であって、前記論理マスクが、ラベル画像のラベル値を表す第1のラベル変数および第2のラベル変数を含み、前記第1のラベル変数が、前記入力画像内の注目画素が位置する点でのラベル変数であり、前記第2のラベル変数が、前記第1のラベル変数に接続する前記論理マスク内のラベル変数であり、前記第1のラベル変数の初期値が前記画像データの画素値であり、第1の配列が、前記第1のラベル変数と前記第2のラベル変数との間のラベル間連結情報を含み、前記演算部が、前記画像データ内の画素毎に、前記第1のラベル変数の値と、前記第2のラベル変数のラベル値と、前記ラベル間連結情報とに基づいて、前記第1のラベル変数にラベル値を付与し、前記第1の配列に前記ラベル間連結情報を記録し、前記第1のラベル変数にラベル値を付与する度に、前記注目画素が位置する同じ行中に出現した前記ラベル値のうち、今後も出現する可能性のあるラベル値を、第2の配列に記録することを、前記注目画素が前記入力画像内の行中の最後の画素に達するまで繰り返し実行する第1のステップと、前記演算部が、前記注目画素が前記入力画像内の行中の最後の画素である場合に、前記ラベル間連結情報および前記第2の配列に記録されている情報に基づいて、同じ行中に出現した前記ラベル値のみを小さい順に統合する第2のステップと、前記演算部が、前記注目画素が位置する行が、前記入力画像内の最後の行である場合に、前記第1の配列に記録されている前記ラベル間連結情報に基づいて前記ラベル値の変更を行う第3のステップとを含むことを特徴とする。
また、本発明に係る第1のラベリング処理方法(2)は、第1のラベリング処理方法(1)において、前記第1のラベル変数がラベル変数Pであり、前記第2のラベル変数がラベル変数X,Y,Z,およびUを含み、前記ラベル変数Pが、前記ラベル変数X,Y,Z,およびUの各々と、それぞれ左上、上、右上、および左の位置で接続し、
前記第1のステップが、次の(Case1)〜(Case8)に示す場合分け条件の基で前記ラベル変数Pおよび前記ラベル変数Zにラベル値を付与し、
(Case1)P=0の場合
Z←Zを実行
(Case2)P≠0かつY≠0の場合
P←Y,
Z←Zを実行
(Case3)P≠0かつY=0かつZ=0かつV=0の場合
P←LC,
Z←0,
LRAM(LC)←LCを実行
後処理に LC←LC+1 を実行
(Case4)P≠0かつY=0かつZ=0かつV≠0の場合
P←V,
Z←0を実行
(Case5)P≠0かつY=0かつZ≠0かつV≠0かつZ>Vの場合
P←V,
LRAM(Z)←V,
Z←Vを実行
(Case6)P≠0かつY=0かつZ≠0かつV≠0かつZ<Vの場合
P←Z
LRAM(V)←Z
Z←Zを実行
(Case7)P≠0かつY=0かつZ≠0かつV≠0かつZ=Vの場合
P←V,
Z←Zを実行
(Case8)P≠0かつY=0かつZ≠0かつV=0の場合
P←Z
Z←Zを実行
ここで、前記第1の配列がLRAMであり、ラベルの個数を表す変数がLCであり、変数Vが、V=Max{X,U}であり、変数Zが、Z=LRAM(LRAM(Z))であり、
前記第1のラベル変数にラベル値を付与する度に、次のサブステップ(ss21)〜(ss22)に示す処理を行い、
(ss21) 行の開始直前、または前の行の終了後に
Row_Max←LCを実行
(ss22) 上記(Case2)から(Case8)の何れかに該当する場合にのみ次の処理を実行する
label>=Row_Maxの場合は
sub_LC←sub_LC+1,
sub_LRAM(sub_LC)←label,
flag(label)←1を実行
それ以外の場合は flag(label)←1 を実行
ここで、前記第2の配列がsub_LRAMであり、変数labelが、注目画素に付与したラベル値であり、変数sub_LCは、前記第2の配列の添え字であり、変数Row_Maxが、行の先頭での変数LCの値であり、flagが、同じ行中に新たなラベル値が出現したか否かを判断するための第3の配列であり、
前記第2のステップが、次のサブステップ(ss31)〜(ss34)に示す処理を行い、
(ss31) l←1,m←0を実行
(ss32) k←sub_LRAM(l),
LRAM(k)←LRAM(LRAM(k))を実行
k=LRAM(k)かつflag(k)=1の場合はさらに
m←m+1,
sub_LRAM(m)←k,
flag(k)←0を実行
(ss33) l←l+1を実行
(ss34) l<=sub_LCの場合はサブステップ(ss32)を実行
それ以外の場合はsub_LC←mを実行
ここで、変数lおよび変数mが一時変数であり、変数kが、前記第1の配列の添え字であり、
前記第3のステップが、次のサブステップ(ss41)〜(ss46)に示す処理を行い、
(ss41) k←1,j←1を実行
(ss42) LRAM(k)=kの場合はサブステップ(ss43)を実行
それ以外の場合はサブステップ(ss44)を実行
(ss43) LRAM(k)←jを実行
後処理に j←j+1 を実行し、サブステップ(ss45)を実行
(ss44) LRAM(k)←LRAM(LRAM(k))を実行
(ss45) k←k+1を実行
(ss46) k≦Nの場合はサブステップ(ss42)を実行
それ以外の場合は終了
ここで、定数Nが、入力画像内に出現した最大ラベル数であり、変数jがラベル値であることを特徴とする。
また、本発明に係る第1のラベリング処理システム(3)は、演算部と記録部とを備え、前記記録部に記録されている画像データで表される入力画像に対して論理マスクをラスタ走査することにより、前記演算部が前記画像データのラベリング処理を行うシステムであって、前記論理マスクが、ラベル画像のラベル値を表す第1のラベル変数および第2のラベル変数を含み、前記第1のラベル変数が、前記入力画像内の注目画素が位置する点でのラベル変数であり、前記第2のラベル変数が、前記第1のラベル変数に接続する前記論理マスク内のラベル変数であり、前記第1のラベル変数の初期値が前記画像データの画素値であり、第1の配列が、前記第1のラベル変数と前記第2のラベル変数との間のラベル間連結情報を含み、前記演算部が、前記画像データ内の画素毎に、前記第1のラベル変数の値と、前記第2のラベル変数のラベル値と、前記ラベル間連結情報とに基づいて、前記第1のラベル変数にラベル値を付与し、前記第1の配列に前記ラベル間連結情報を記録し、前記第1のラベル変数にラベル値を付与する度に、前記注目画素が位置する同じ行中に出現した前記ラベル値のうち、今後も出現する可能性のあるラベル値を、第2の配列に記録することを、前記注目画素が前記入力画像内の行中の最後の画素に達するまで繰り返し実行し、前記注目画素が前記入力画像内の行中の最後の画素である場合に、前記ラベル間連結情報および前記第2の配列に記録されている情報に基づいて、同じ行中に出現した前記ラベル値のみを小さい順に統合し、前記注目画素が位置する行が、前記入力画像内の最後の行である場合に、前記第1の配列に記録されている前記ラベル間連結情報に基づいて前記ラベル値の変更を行うことを特徴とする。
また、本発明に係る第1のラベリング処理装置(4)は、ラベル付け論理回路と、ラベル統合回路と、ラインバッファと、画像メモリとを備え、画像データで表される入力画像に対して論理マスクをラスタ走査することにより、前記画像データのラベリング処理を行う装置であって、前記論理マスクが、ラベル画像のラベル値を表す第1のラベル変数および第2のラベル変数を含み、前記第1のラベル変数が、前記入力画像内の注目画素が位置する点でのラベル変数であり、前記第2のラベル変数が、前記第1のラベル変数に接続する前記論理マスク内のラベル変数であり、前記第1のラベル変数の初期値が前記画像データの画素値であり、第1の配列が、前記第1のラベル変数と前記第2のラベル変数との間のラベル間連結情報を含み、前記ラベル付け論理回路が、前記画像データ内の画素毎に、前記第1のラベル変数の値と、前記第2のラベル変数のラベル値と、前記ラベル間連結情報とに基づいて、前記第1のラベル変数にラベル値を付与し、前記第1の配列に前記ラベル間連結情報を記録し、前記ラベル付け論理回路が、前記第1のラベル変数にラベル値を付与する度に、前記注目画素が位置する同じ行中に出現した前記ラベル値のうち、今後も出現する可能性のあるラベル値を、第2の配列に記録することを、前記注目画素が前記入力画像内の行中の最後の画素に達するまで繰り返し実行し、前記ラベル統合回路が、前記注目画素が前記入力画像内の行中の最後の画素である場合に、前記ラベル間連結情報および前記第2の配列に記録されている情報に基づいて、同じ行中に出現した前記ラベル値のみを小さい順に統合し、前記ラベル統合回路が、前記注目画素が位置する行が、前記入力画像内の最後の行である場合に、前記第1の配列に記録されている前記ラベル間連結情報に基づいて前記ラベル値の変更を行うことを特徴とする。
また、本発明に係る第1のラベリング処理プログラム(5)は、コンピュータに画像データのラベリング処理を行わせるプログラムであって、論理マスクが、ラベル画像のラベル値を表す第1のラベル変数および第2のラベル変数を含み、前記第1のラベル変数が、入力画像内の注目画素が位置する点でのラベル変数であり、前記第2のラベル変数が、前記第1のラベル変数に接続する前記論理マスク内のラベル変数であり、前記第1のラベル変数の初期値が前記画像データの画素値であり、第1の配列が、前記第1のラベル変数と前記第2のラベル変数との間のラベル間連結情報を含み、コンピュータに、前記画像データ内の画素毎に、前記第1のラベル変数の値と、前記第2のラベル変数のラベル値と、前記ラベル間連結情報とに基づいて、前記第1のラベル変数にラベル値を付与し、前記第1の配列に前記ラベル間連結情報を記録し、前記第1のラベル変数にラベル値を付与する度に、前記注目画素が位置する同じ行中に出現した前記ラベル値のうち、今後も出現する可能性のあるラベル値を、第2の配列に記録することを、前記注目画素が前記入力画像内の行中の最後の画素に達するまで繰り返し実行する第1の機能と、前記注目画素が前記入力画像内の行中の最後の画素である場合に、前記ラベル間連結情報および前記第2の配列に記録されている情報に基づいて、同じ行中に出現した前記ラベル値のみを小さい順に統合する第2の機能と、前記注目画素が位置する行が、前記入力画像内の最後の行である場合に、前記第1の配列に記録されている前記ラベル間連結情報に基づいて前記ラベル値の変更を行う第3の機能とを実現させることを特徴とする。
また、本発明に係る第2のラベリング処理方法(6)は、演算部と記録部とを備えるシステムにおいて、前記記録部に記録されている画像データで表される入力画像に対して論理マスクをラスタ走査することにより、前記演算部が前記画像データのラベリング処理を行う方法であって、前記論理マスクが第1の階層と第2の階層とを含む2階層の論理マスクであり、前記第1の階層が、ラベル画像の実ラベル値を表す第1のラベル変数および第2のラベル変数を含み、前記第2の階層が、左端点ラベル値を表す第3のラベル変数および第4のラベル変数を含み、前記第1のラベル変数が、前記入力画像内の注目画素が位置する点でのラベル変数であり、前記第2のラベル変数が、前記第1のラベル変数に接続する前記論理マスク内のラベル変数であり、前記第1のラベル変数の初期値が前記画像データの画素値であり、前記第3のラベル変数および前記第4のラベル変数の各々が、前記第1のラベル変数および前記第2のラベル変数の各々の位置に対応し、第1の配列が、前記第1のラベル変数と前記第2のラベル変数との間の実ラベルの第1のラベル間連結情報を含み、第2の配列が、前記第3のラベル変数と前記第4のラベル変数との間の左端点ラベルの第2のラベル間連結情報を含み、第3の配列が、左端点ラベルと結合する実ラベルの最小値を含み、前記演算部が、前記画像データ内の画素毎に、前記第1のラベル変数の値と、前記第4のラベル変数の左端点ラベル値と、前記第1のラベル間連結情報と、前記第2のラベル間連結情報と、前記実ラベルの最小値とに基づいて、前記第1のラベル変数に実ラベル値を付与し、且つ、前記第3のラベル変数に左端点ラベル値を付与し、前記第1の配列、前記第2の配列、および前記第3の配列の各々に、第1のラベル間連結情報、第2のラベル間連結情報、および実ラベルの最小値を各々記録することを、前記入力画像内の全ての画素に対して実行し、前記ラベル画像全体における前記実ラベル値と、前記注目画素が位置する行および前記注目画素が位置する1つ前の行の2行のみにおいて有効な前記左端点ラベル値との2重対を管理する第1のステップと、前記演算部が、前記第1の配列に記録されている前記第1のラベル間連結情報に基づいて前記実ラベル値の変更を行う第2のステップとを含むことを特徴とする。
また、本発明に係る第2のラベリング処理方法(7)は、第2のラベリング処理方法(6)において、前記第1のラベル変数がラベル変数Pであり、前記第2のラベル変数がラベル変数X,Y,Z,およびUを含み、前記ラベル変数Pが、前記ラベル変数X,Y,Z,およびUの各々と、それぞれ左上、上、右上、および左の位置で接続し、前記第3のラベル変数が左端点ラベル変数P+であり、前記第4のラベル変数が左端点ラベル変数X+,Y+,Z+,およびU+を含み、前記左端点ラベル変数P+が、前記左端点ラベル変数X+,Y+,Z+,およびU+の各々と、それぞれ左上、上、右上、および左の位置で接続し、
前記第1のステップが、次の(Case1)〜(Case12)に示す場合分け条件の基で前記ラベル変数Pおよび前記ラベル変数Zにラベル値を付与し、且つ、前記左端点ラベル変数P+および前記左端点ラベル変数Z+に左端点ラベル値を付与し、
(Case1)P=0かつZ+≠0の場合
LEPT(Z+)←(Z+)
LEPT_MIN(Z+)←Lmin(Z+),
Zvector←[(Z+),Lmin(Z+)]を実行
(Case2)P≠0かつV+=0かつY+=0かつZ+=0の場合
Pvector←[LLC,LC]
LEPT(LLC)←LLC,
LEPT_MIN(LLC)←LC,
LRAM(LC)←LCを実行
後処理に (LLC++,LC++) を実行
(Case3)P≠0かつY+≠0かつsign(Y+)=sign(Row)の場合
Pvector←Yvectorを実行
さらに(Z+≠0)の場合は Zvector←[(Z+),Lmin(Z+)] を実行
(Case4)P≠0かつY+≠0かつsign(Y+)≠sign(Row)の場合
Pvector←[LLC,Y]
LEPT(LLC)←LLC,
LEPT_MIN(LLC)←Y,
LEPT(Y+)←LLCを実行
後処理に LLC++ を実行
さらに(Z+≠0)の場合は Zvector←[(Z+),Lmin(Z+)] を実行
(Case5)P≠0かつY+=0かつV+≠0かつZ+=0かつsign(V+)=sign(Row)の場合
Pvector←Vvectorを実行
(Case6)P≠0かつY+=0かつV+≠0かつZ+=0かつsign(V+)≠sign(Row)の場合
Pvector←[LLC,V]
LEPT(LLC)←LLC,
LEPT_MIN(LLC)←V,
LEPT(V+)←LLCを実行
後処理に LLC++ を実行
(Case7)P≠0かつZ+≠0かつY+=0かつV+=0かつsign((Z+))=sign(Row)の場合
Pvector←[(Z+),Lmin(Z+)]
Zvector←[(Z+),Lmin(Z+)]を実行
(Case8)P≠0かつZ+≠0かつY+=0かつV+=0かつsign((Z+))≠sign(Row)の場合
Pvector←[LLC,Lmin(Z+)]
Zvector←[LLC,Lmin(Z+)]
LEPT(LLC)←LLC,
LEPT_MIN(LLC)←Lmin(Z+),
LEPT((Z+))←LLCを実行
後処理に LLC++ を実行
(Case9)P≠0かつV+≠0かつZ+≠0かつY+=0かつsign(V+)=sign(Row)かつsign((Z+))=sign(Row)の場合
Pvector←[(Z+),Lmin(Z+)]
Zvector←[(Z+),Lmin(Z+)]
LEPT(V+)←(Z+)
LEPT_MIN(V+)←Lmin(Z+),
LRAM(V)←Lmin(Z+)を実行
(Case10)P≠0かつV+≠0かつZ+≠0かつY+=0かつsign(V+)=sign(Row)かつsign((Z+))≠sign(Row)の場合
(a)V≧Lmin(Z+)の場合
Pvector←[V+,Lmin(Z+)]
Zvector←[V+,Lmin(Z+)]
LEPT((Z+))←V+,
LEPT_MIN(V+)←Lmin(Z+),
LRAM(V)←Lmin(Z+)を実行
(b)V<Lmin(Z+)の場合
Pvector←[V+,V]
Zvector←[V+,V]
LEPT((Z+))←V+,
LEPT_MIN((Z+))←V,
LRAM(Lmin(Z+))←Vを実行
(Case11)P≠0かつV+≠0かつZ+≠0かつY+=0かつsign(V+)≠sign(Row)かつsign((Z+))=sign(Row)の場合
Pvector←[(Z+),Lmin(Z+)]
Zvector←[(Z+),Lmin(Z+)]
LEPT(V+)←(Z+)
LEPT_MIN(V+)←Lmin(Z+),
LRAM(V)←Lmin(Z+)を実行
(Case12)P≠0かつV+≠0かつZ+≠0かつY+=0かつsign(V+)≠sign(Row)かつsign((Z+))≠sign(Row)の場合
(a)V≧Lmin(Z+)の場合
Pvector←[LLC,Lmin(Z+)]
Zvector←[LLC,Lmin(Z+)]
LEPT(LLC)←LLC,
LEPT_MIN(LLC)←Lmin(Z+),
LEPT(V+)←LLC,
LEPT((Z+))←LLC,
LRAM(V)←Lmin(Z+)を実行
後処理に LLC++ を実行
(b)V<Lmin(Z+)の場合
Pvector←[LLC,V]
Zvector←[LLC,V]
LEPT(LLC)←LLC,
LEPT_MIN(LLC)←V,
LEPT(V+)←LLC,
LEPT((Z+))←LLC,
LEPT_MIN((Z+))←V,
LRAM(Lmin(Z+))←V
後処理に LLC++ を実行
ここで、前記第1の配列がLRAMであり、前記第2の配列がLEPTであり、前記第3の配列がLEPT_MINであり、実ラベルの個数を表す変数がLCであり、左端点ラベルの個数を表す変数がLLCであり、変数Vが、V=Max{X,U}であり、変数(Z+)が(Z+)=LEPT(LEPT(Z+))であり、変数Lmin(Z+)がLmin(Z+)=LEPT_MIN(LEPT(Z+))であり、変数V+がV+=((U≠0かつX≠0のとき)U+,(U≠0かつX=0のとき)U+,(U=0かつX≠0のとき)X+,(U=0かつX=0のとき)0)であり、sign(X+)は、左端点ラベル変数X+の符号を表し、sign(Row)は現在行の符号を表し、
前記第2のステップが、次のサブステップ(ss21)〜(ss26)に示す処理を行い、
(ss21) k←1,j←1
(ss22) LRAM(k)=kの場合はサブステップ(ss23)を実行、それ以外の場合はサブステップ(ss24)を実行
(ss23) LRAM(k)←j
後処理に j←j+1 を実行し、サブステップ(ss25)を実行
(ss24) LRAM(k)←LRAM(LRAM(k))
(ss25) k←k+1
(ss26) k≦Nの場合はサブステップ(ss22)を実行、それ以外の場合は終了
ここで、定数Nが、入力画像内に出現した最大ラベル数であり、変数jがラベル値であり、変数kが、前記第1の配列の添え字であることを特徴とする。
また、本発明に係る第2のラベリング処理システム(8)は、演算部と記録部とを備え、前記記録部に記録されている画像データで表される入力画像に対して論理マスクをラスタ走査することにより、前記演算部が前記画像データのラベリング処理を行うシステムであって、前記論理マスクが第1の階層と第2の階層とを含む2階層の論理マスクであり、前記第1の階層が、ラベル画像の実ラベル値を表す第1のラベル変数および第2のラベル変数を含み、前記第2の階層が、左端点ラベル値を表す第3のラベル変数および第4のラベル変数を含み、前記第1のラベル変数が、前記入力画像内の注目画素が位置する点でのラベル変数であり、前記第2のラベル変数が、前記第1のラベル変数に接続する前記論理マスク内のラベル変数であり、前記第1のラベル変数の初期値が前記画像データの画素値であり、前記第3のラベル変数および前記第4のラベル変数の各々が、前記第1のラベル変数および前記第2のラベル変数の各々の位置に対応し、第1の配列が、前記第1のラベル変数と前記第2のラベル変数との間の実ラベルの第1のラベル間連結情報を含み、第2の配列が、前記第3のラベル変数と前記第4のラベル変数との間の左端点ラベルの第2のラベル間連結情報を含み、第3の配列が、左端点ラベルと結合する実ラベルの最小値を含み、前記演算部が、前記画像データ内の画素毎に、前記第1のラベル変数の値と、前記第4のラベル変数の左端点ラベル値と、前記第1のラベル間連結情報と、前記第2のラベル間連結情報と、前記実ラベルの最小値とに基づいて、前記第1のラベル変数に実ラベル値を付与し、且つ、前記第3のラベル変数に左端点ラベル値を付与し、前記第1の配列、前記第2の配列、および前記第3の配列の各々に、第1のラベル間連結情報、第2のラベル間連結情報、および実ラベルの最小値を各々記録することを、前記入力画像内の全ての画素に対して実行し、前記ラベル画像全体における前記実ラベル値と、前記注目画素が位置する行および前記注目画素が位置する1つ前の行の2行のみにおいて有効な前記左端点ラベル値との2重対を管理し、前記第1の配列に記録されている前記第1のラベル間連結情報に基づいて前記実ラベル値の変更を行うことを特徴とする。
また、本発明に係る第2のラベリング処理装置(9)は、ラベル付け論理回路と、ラベル統合回路と、ラインバッファと、画像メモリとを備え、画像データで表される入力画像に対して論理マスクをラスタ走査することにより、前記画像データのラベリング処理を行う装置であって、前記論理マスクが第1の階層と第2の階層とを含む2階層の論理マスクであり、前記第1の階層が、ラベル画像の実ラベル値を表す第1のラベル変数および第2のラベル変数を含み、前記第2の階層が、左端点ラベル値を表す第3のラベル変数および第4のラベル変数を含み、前記第1のラベル変数が、前記入力画像内の注目画素が位置する点でのラベル変数であり、前記第2のラベル変数が、前記第1のラベル変数に接続する前記論理マスク内のラベル変数であり、前記第1のラベル変数の初期値が前記画像データの画素値であり、前記第3のラベル変数および前記第4のラベル変数の各々が、前記第1のラベル変数および前記第2のラベル変数の各々の位置に対応し、第1の配列が、前記第1のラベル変数と前記第2のラベル変数との間の実ラベルの第1のラベル間連結情報を含み、第2の配列が、前記第3のラベル変数と前記第4のラベル変数との間の左端点ラベルの第2のラベル間連結情報を含み、第3の配列が、左端点ラベルと結合する実ラベルの最小値を含み、前記ラベル付け論理回路が、前記画像データ内の画素毎に、前記第1のラベル変数の値と、前記第4のラベル変数の左端点ラベル値と、前記第1のラベル間連結情報と、前記第2のラベル間連結情報と、前記実ラベルの最小値とに基づいて、前記第1のラベル変数に実ラベル値を付与し、且つ、前記第3のラベル変数に左端点ラベル値を付与し、前記第1の配列、前記第2の配列、および前記第3の配列の各々に、第1のラベル間連結情報、第2のラベル間連結情報、および実ラベルの最小値を各々記録することを、前記入力画像内の全ての画素に対して実行し、前記ラベル画像全体における前記実ラベル値と、前記注目画素が位置する行および前記注目画素が位置する1つ前の行の2行のみにおいて有効な前記左端点ラベル値との2重対を管理し、前記ラベル統合回路が、前記第1の配列に記録されている前記第1のラベル間連結情報に基づいて前記実ラベル値の変更を行うことを特徴とする。
また、本発明に係る第2のラベリング処理プログラム(10)は、コンピュータに画像データのラベリング処理を行わせるプログラムであって、論理マスクが第1の階層と第2の階層とを含む2階層の論理マスクであり、前記第1の階層が、ラベル画像の実ラベル値を表す第1のラベル変数および第2のラベル変数を含み、前記第2の階層が、左端点ラベル値を表す第3のラベル変数および第4のラベル変数を含み、前記第1のラベル変数が、入力画像内の注目画素が位置する点でのラベル変数であり、前記第2のラベル変数が、前記第1のラベル変数に接続する前記論理マスク内のラベル変数であり、前記第1のラベル変数の初期値が前記画像データの画素値であり、前記第3のラベル変数および前記第4のラベル変数の各々が、前記第1のラベル変数および前記第2のラベル変数の各々の位置に対応し、第1の配列が、前記第1のラベル変数と前記第2のラベル変数との間の実ラベルの第1のラベル間連結情報を含み、第2の配列が、前記第3のラベル変数と前記第4のラベル変数との間の左端点ラベルの第2のラベル間連結情報を含み、第3の配列が、左端点ラベルと結合する実ラベルの最小値を含み、コンピュータに、前記画像データ内の画素毎に、前記第1のラベル変数の値と、前記第4のラベル変数の左端点ラベル値と、前記第1のラベル間連結情報と、前記第2のラベル間連結情報と、前記実ラベルの最小値とに基づいて、前記第1のラベル変数に実ラベル値を付与し、且つ、前記第3のラベル変数に左端点ラベル値を付与し、前記第1の配列、前記第2の配列、および前記第3の配列の各々に、第1のラベル間連結情報、第2のラベル間連結情報、および実ラベルの最小値を各々記録することを、前記入力画像内の全ての画素に対して実行し、前記ラベル画像全体における前記実ラベル値と、前記注目画素が位置する行および前記注目画素が位置する1つ前の行の2行のみにおいて有効な前記左端点ラベル値との2重対を管理する第1の機能と、前記第1の配列LRAMに記録されている前記第1のラベル間連結情報に基づいて前記実ラベル値の変更を行う第2の機能とを実現させることを特徴とする。
本発明によると、テレビカメラから連続した映像信号として伝送されてくるデジタル画像に対して、高いビットレートでのリアルタイムのラベリング処理が可能となる。
また、本発明によると、高精細画像のような高い解像度を有する入力画像に対しても有効にラベリング処理を高速化することができる。
また、本発明によると、1画素当たりの処理時間内に4回のメモリアクセスが可能であれば、連続して入力される画像に対して、完全なパイプライン方式に基づいた領域ラベリング処理が可能となる。
従来技術に係るラベリング処理方法において行う画像のラスタ走査を説明する模式図である。 従来技術に係るラベリング処理を示すフローチャートである。 従来技術に係るラベリング処理のデータフロー図である。 従来技術に係るラベリング処理方法を行う電子回路基板の概略構成の一例を示すブロック図である。 従来技術に係るラベリング処理方法を行う電子回路基板におけるパイプライン処理を説明するタイムチャートである。 本発明の第1の実施形態に係るラベリング処理方法を行うシステムの概略構成を示すブロック図である。 本発明の第1の実施形態に係るラベリング処理を示すフローチャートである。 本発明の第1の実施形態に係るラベリング処理のデータフロー図である。 本発明の第2の実施形態に係るラベリング処理方法において導入する左端点の定義を説明する模式図である。 本発明の第2の実施形態に係るラベリング処理方法において用いる論理マスクを説明する模式図である。 本発明の第2の実施形態に係るラベリング処理方法において用いる左端点ラベル管理テーブルを説明する模式図である。 本発明の第2の実施形態に係るラベリング処理を示すフローチャートである。 本発明の第2の実施形態に係るラベリング処理のデータフロー図である。 第2の実施形態に係るラベリング処理方法におけるデータ読み出しのアクセス方法を説明する模式図である。 第2の実施形態に係るラベリング処理方法における各画素での処理を説明するタイムチャートである。 第2の実施形態に係るラベリング処理方法における1次ラベリング処理の場合分けを説明する模式図である。 第2の実施形態に係るラベリング処理方法における1次ラベリング処理の場合分けを説明する模式図である。 第2の実施形態に係るラベリング処理方法における1次ラベリング処理の場合分けを説明する模式図である。 第2の実施形態に係るラベリング処理方法における1次ラベリング処理の場合分けを説明する模式図である。 第2の実施形態に係るラベリング処理方法における1次ラベリング処理の場合分けを説明する模式図である。 第2の実施形態に係るラベリング処理方法における1次ラベリング処理の場合分けを説明する模式図である。 第2の実施形態に係るラベリング処理方法における1次ラベリング処理の場合分けを説明する模式図である。 第2の実施形態に係るラベリング処理方法における1次ラベリング処理の場合分けを説明する模式図である。 第2の実施形態に係るラベリング処理方法における1次ラベリング処理の場合分けを説明する模式図である。 第2の実施形態に係るラベリング処理方法における1次ラベリング処理の場合分けを説明する模式図である。 第2の実施形態に係るラベリング処理方法における1次ラベリング処理の場合分けを説明する模式図である。 第2の実施形態に係るラベリング処理方法における1次ラベリング処理の場合分けを説明する模式図である。 第2の実施形態に係るラベリング処理方法における1次ラベリング処理の場合分けを説明する模式図である。 第2の実施形態に係るラベリング処理方法における1次ラベリング処理の場合分けを説明する模式図である。 第2の実施形態に係るラベリング処理方法における1次ラベリング処理の場合分けを説明する模式図である。 第1の実施形態に係るラベリング処理方法における1次ラベリング処理の一実施例を示す図である。 第1の実施形態に係るラベリング処理方法における1次ラベリング処理の他の実施例を示す図である。 第2の実施形態に係るラベリング処理方法における1次ラベリング処理の一実施例を示す図である。
以下、本発明の実施の形態を、添付の図面を参照して詳細に説明する。尚、以下の説明及び図面において、同じ符号は同じ又は類似の構成要素を示すこととし、よって、同じ又は類似の構成要素に関する説明を省略する。
(第1の実施形態)
本発明の第1の実施形態に係るラベリング処理方法は、画素毎のラベル付け処理においてラベル値を付与する度に、1つの同じ行中に出現したラベル値のうち、今後も出現する可能性のあるラベル値を予め記録しておくことで、行毎のラベル間連結情報の統合処理を行う際に、現在行で出現したラベル値のみを小さい順に統合する処理を行う。
また、第1の実施形態に係るラベリング処理方法は、図1に示すラスタ走査における水平帰線時間(図1中に破線で示す)のような空き時間を前提とする処理方法であり、この空き時間の間に、各行に出現したラベルのみに対してラベル間連結情報の統合処理を行う処理方法である。
図6は、本発明の第1の実施形態に係るラベリング処理方法を行うコンピュータ・システムの概略構成を示すブロック図である。第1の実施形態に係るラベリング処理方法を行うコンピュータ・システム1(以下、単に、システム1とも記す)は、後述するデータの演算を行うCPU10と、演算の作業領域に使用するメモリ11と、演算データを記録する記録部12と、各部の間でデータを伝送するバス13と、外部機器とのデータの入出力を行うインタフェース部14(以下、I/F部と記す)とを備えている。なお、図6では記載を省略しているが、コンピュータが通常備えている操作手段(キーボード等)や表示手段(ディスプレイ等)も備えている。
図7は、本発明の第1の実施形態に係るラベリング処理を示すフローチャートであり、図8は、本発明の第1の実施形態に係るラベリング処理のデータフロー図である。以下、第1の実施形態に係るラベリング処理について、図7に示すフローチャートおよび図8に示すデータフロー図に基づいて説明する。
第1の実施形態に係るラベリング処理の処理手順の概要を説明すると次の通りである。まず、1次ラベリングとして、画素毎の処理(S11〜S12)と、行毎の処理(S14)とを画像109内で連続して行い、その後、2次ラベリングとして画像毎の処理(S16)を行う。第1の実施形態に係るラベリング処理は、図1に示す従来技術に係る画像109のラスタ走査と同じ走査順で、同じ論理マスク108を使用する。なお、第1の実施形態に係るラベリング処理は、画素毎のラベル付け処理(S11)において同じ行中に出現したラベル値のうち、今後も出現する可能性のあるラベル値を記録する処理(S12)を行う点と、行毎のラベル間連結情報の統合処理において、現在行で出現したラベル値のみを小さい順に統合する処理(S14)を行う点とで、従来技術に係るラベリング処理と異なる。
以下の説明においては、特に断らない限りシステム1が行うラベリング処理方法として説明する。また、システム1が行う処理は、実際にはシステム1のCPU10が行う処理を意味する。CPU10はメモリ11を作業領域として必要なデータ(処理途中の中間データ等)を一時記憶し、記録部12に演算結果等の長期保存するデータを適宜記録する。また、システム1は、以下で説明するステップS11〜S16の処理を行うために使用するプログラムを、例えば実行形式(例えば、C言語等のプログラミング言語からコンパイラにより変換されて生成される)で記録部12に予め記録しており、システム1は、記録部12に記録したプログラムを使用して処理を行う。
1次ラベリング(S11〜S15)
ステップS11において、ラベル付けの処理を画素毎に行う。まず、従来技術に係るステップS1において説明した(Case1)〜(Case8)に示す場合分け条件の基でラベル変数PおよびZにラベルを付与して1次ラベリング後のラベル画像を生成し、テーブルLRAMにラベル間連結情報を記録する。(Case1)〜(Case8)に示すラベル付け処理は、上記した従来技術に係るステップS1において行うラベル付け処理と同じであるため、その説明を省略する。
そして、ステップS12において、同じ行中に出現したラベル値のうち、今後も出現する可能性のあるラベル値を出現順にテーブルsub_LRAMに記録する。即ち、(Case1)〜(Case8)に示す処理においてラベルを付与する度に、次のサブステップ(ss121)〜(ss122)に示す処理を行う。ここで、変数Row_Maxは、行の先頭でのラベルカウンタLCの値である。変数Row_Maxを使用する理由は、ラベルカウンタLCが画素毎の処理で変化する可能性があるためである。また、sub_LRAMは、同じ行中に出現したラベルのうち今後も出現する可能性のあるラベルを出現順に管理するテーブル(1次元配列であり配列の初期値は全て0)である。変数labelは、注目画素に付与したラベル値であり、変数sub_LCは、1次元配列であるテーブルsub_LRAMの添え字(アドレス)であり、flagは、現在行に新たなラベル値が出現したか否かを判断するためのテーブル(1次元配列であり配列の初期値は全て0)である。変数Row_Maxおよびテーブルflagは行単位で初期化され、変数sub_LCは、画像単位で初期化(初期値は0)される。
(ss121) 行の開始直前、または前の行の終了後に
Row_Max←LCを実行
(ss122) (Case2)から(Case8)の何れかに該当する場合にのみ次の処理を実行する。
label>=Row_Maxの場合は
sub_LC←sub_LC+1,
sub_LRAM(sub_LC)←label,
flag(label)←1を実行
それ以外の場合は flag(label)←1 を実行
次に、ステップS13において、注目画素が行中の最後の画素であるか否かを判断する。最後の画素である場合はステップS14を実行し、そうでない場合は、ラスタ走査順の次の画素に対してステップS11を実行する。
ステップS14において、ラベル間連結情報の統合処理を行毎に行い、同じ行中に出現したラベルのみを小さい順に統合する。次のサブステップ(ss141)〜(ss144)に示す処理を行う。ここで、変数l、mは、一時的に使用する変数であり、1次元配列であるテーブルsub_LRAMの添え字(アドレス)を意味する。
(ss141) l←1,m←0を実行
(ss142) k←sub_LRAM(l),
LRAM(k)←LRAM(LRAM(k))を実行
k=LRAM(k)かつflag(k)=1の場合はさらに
m←m+1,
sub_LRAM(m)←k,
flag(k)←0を実行
(ss143) l←l+1を実行
(ss144) l<=sub_LCの場合はサブステップ(ss142)を実行
それ以外の場合はsub_LC←mを実行
次に、ステップS15において、注目画素が位置する行が、画像内の最後の行であるか否かを判断する。最後の行である場合はステップS16を実行し、そうでない場合は、ラスタ走査順の次の画素(即ち、次の行の最初の画素)に対してステップS11を実行する。
2次ラベリング(S16)
ステップS16において、連続したラベル値の付与処理を画像毎に行う。ステップS16において行う2次ラベリング処理は、上記した従来技術に係るステップS5において行う2次ラベリングの処理と同じであるため、その説明を省略する。ステップS16の処理を終了すると、第1の実施形態に係るラベリング処理を終了する。
上記したように、本発明の第1の実施形態に係るラベリング処理方法は、画素毎のラベル付け処理においてラベル値を付与する度に、1つの同じ行中に出現したラベル値のうち、今後も出現する可能性のあるラベル値を予め記録しておくことで、行毎のラベル間連結情報の統合処理を行う際に、現在行で出現したラベル値のみを小さい順に統合する処理を行う。例えば、第1の実施形態に係るラベリング処理方法では、現在行においてより小さなラベルと連結したラベルや、現在行の1行前の行まで伝搬していたが現在行では出現しなかったラベルを、テーブルsub_LRAMにおいてラベル値の小さな順に消去することにより、行毎の出現ラベル値のソーティング処理を必要とせずに、ラベル値を付与する際に常に、小さなラベル値順に出現ラベルを管理している。
また、上記したように、従来技術に係るラベリング処理方法では、サブステップ(ss31)〜(ss34)に示す処理を行うことで、ラベル間連結情報の統合処理を行毎に行っている。ここで、統合処理の対象となるラベル値は、行毎の統合処理において出現した全てのラベル値である。これに対して、本発明の第1の実施形態に係るラベリング処理方法では、まずサブステップ(ss121)〜(ss122)に示す処理を行い、同じ行中に出現したラベル値のうち今後も出現する可能性のあるラベル値を、出現順にテーブルsub_LRAMで管理したうえで、次にサブステップ(ss141)〜(ss144)に示す処理を行い、同じ行中に出現したラベル値のみを小さい順に統合する。即ち、本発明の第1の実施形態に係るラベリング処理方法において、統合処理の対象となるラベル値は、現在行中に出現したラベル値のみであり、従来技術に係るラベリング処理方法と比較して、統合処理の対象となるラベル数が低減される。よって、第1の実施形態に係るラベリング処理方法によれば、高精細画像のような高い解像度を有する画像に対しても有効にラベリング処理を高速化することができる。
なお、第1の実施形態に係るラベリング処理方法においては、従来技術に係るラベリング処理方法での1次ラベリングのみを改良している。よって、第1の実施形態に係るラベリング処理方法において、1次ラベリングの処理および2次ラベリングの処理は、連続して入力される画像に対してパイプライン処理が可能である。
(第2の実施形態)
本発明の第2の実施形態に係るラベリング処理方法は、画像上部からのラベル値(以下、階層Aのラベル値とも記す)と、各行単位で管理する仮想ラベル値(以下、階層Bのラベル値とも記す)との2階層のラベル対を用いる。そして、この2階層ラベル対を管理しながら、階層Bの仮想ラベルを介して、行毎に、連結領域の最小ラベル値(階層A)と、現在行における左端点のラベル値(階層A)とを連結する。1次ラベリングの処理において実際に画像メモリに記録するのは、階層Aのラベル値である。
また、第2の実施形態に係るラベリング処理方法は、上記した第1の実施形態に係るラベリング処理方法とは異なり、図1に示すラスタ走査における水平帰線時間のような空き時間を前提としない処理方法である。第2の実施形態に係るラベリング処理方法では、行毎に現在行におけるマスクパターンの左端点に着目し、左端点に付与されるラベル値と、左端点と連結する領域での最小のラベル値とを対応させることにより、行毎のラベル間連結情報の統合処理が不要となる。なお、以下では、ラベルに対して、区別した呼び名である「実ラベル」および「左端点ラベル」の2つの用語を用いる。また、現在行において、ラベルを付与した他の領域と連結していない点を「左端点」とし、左端点に付与したラベル値を「左端点ラベル値」とする。
図9は、本発明の第2の実施形態に係るラベリング処理方法において導入する左端点の定義を説明する模式図である。図9を参照して「左端点」の定義をより詳細に説明すると、「左端点」とは、「画像109内の点P(画素値≠0)に至るまでの走査済領域109Aにおいて、点Pと同一行Eに存在する点(点Pとは異なる点であり画素値≠0)に対する連結経路Fが存在しない点P」のことである。
第2の実施形態に係るラベリング処理方法では、画像を左から右へラスタ走査した後、マスクパターンの左端(即ち、後述する変数VおよびV+)に最小のラベル値が保存され、ラベル間連結情報の統合処理を行わなくても、次の行のラスタ走査時に最小のラベル値が伝播される。具体的には、連結領域の現在行における左端点に着目して、1次元配列形式の3つのテーブル(LEPT(Left End Point Table),LEPT_MIN,およびLRAM)を用いて、現在行における左端点ラベル値とこの左端点ラベル値に連結する実ラベルの最小値とを同行内において伝播させながら、次の行でラベルの書き換えを行う際に、これら3つのテーブルLEPT、LEPT_MIN、およびLRAMに記録しておいた実ラベル値および左端点ラベル値を利用してラベル付けを行う。
図10は、本発明の第2の実施形態に係るラベリング処理方法において用いる論理マスクを説明する模式図である。第2の実施形態に係るラベリング処理方法においても、図1に示す論理マスク108により画像109をラスタ走査しながら、連結性の検出とラベルの付与とを行い、ラベル画像を生成する。ただし、第2の実施形態に係るラベリング処理方法では、図1に示す論理マスク108を、図10に示す2階層論理マスク20に拡張して用いる。2階層論理マスク20中のラベル変数X,Y,Z,U,Pは、論理マスク108中のラベル変数と同じである。また、X+,Y+,Z+,U+,P+は、これらに位置が対応する画素での符号付き左端点ラベル値を表す変数(以下、単に左端点ラベル変数と記す)である。ここで、左端点ラベル変数X+,Y+,Z+,U+,P+の初期値は、全て0である。
また、画像内の左端点ラベルの個数を表す左端点ラベルカウンタをLLC(初期値は−1)とする。左端点ラベルカウンタLLCは、符号を付けることによって、偶数行および奇数行を区別する。符号は、現在行が偶数行の場合に正(+)、奇数行の場合に負(−)を付加する。左端点ラベルのインクリメント(LLC++)は、現在行が偶数行の場合、例えばLLC=+1のとき、LLC++は+2を意味し、奇数行の場合、例えばLLC=−1のとき、LLC++は−2を意味することとする。
また、2階層論理マスク20の2階部分の左端点ラベル変数X+,Y+,Z+,U+のすべてに、現在行と同符号の左端点ラベルが付与されていない場合には、注目画素(ラベル変数P)が位置する点を左端点とする。逆に、左端点ラベル変数X+,Y+,Z+,U+の何れかに、現在行と同符号の左端点ラベルが付与されている場合には、現在行の注目画素より左側の左端点とつながっているので、注目画素(ラベル変数P)が位置する点を左端点とはしない。
なお、第2の実施形態に係るラベリング処理方法では2階層の論理マスク20を用いるので、以下の説明では、ラベル変数および左端点ラベル変数を一括に取り扱うために2次元ベクトルの記法を用いる。例えばラベル変数Xおよび左端点ラベル変数X+については、一括してXvector=[X+,X]と表す。肩文字「T」は行列の転置を意味する。
図11は、本発明の第2の実施形態に係るラベリング処理方法において用いる左端点ラベル管理テーブルを説明する模式図である。第2の実施形態に係るラベリング処理方法では、左端点ラベル間の連結情報を管理するテーブルLEPT(1次元配列であり配列の初期値は全て0)と、左端点ラベルと連結する実ラベルの最小値を管理するテーブルLEPT_MIN(1次元配列であり配列の初期値は全て0)とを、それぞれ2つ使用し、現在行が奇数行か偶数行かによって2つのテーブルを切り替えながら管理する。
例えば、現在行が奇数行の場合には、図11中に示すodd側のLEPTおよびLEPT_MINのテーブルの組により左端点ラベルの管理を行い、現在行の1行前の行(即ち、現在行が偶数行)の場合には、図11中に示すeven側のLEPTおよびLEPT_MINのテーブルの組により左端点ラベルの管理を行う。現在行で使用していない側のLEPTおよびLEPT_MINの組は、現在行の1行前の左端点ラベルを保持することになるので、現在行および現在行の1行前の左端点ラベルの合計2行分を保持しながら、実ラベルの最小値および左端点ラベルを左から右へと伝播させている。
図12は、本発明の第2の実施形態に係るラベリング処理を示すフローチャートであり、図13は、本発明の第2の実施形態に係るラベリング処理のデータフロー図である。以下、第2の実施形態に係るラベリング処理について、図12に示すフローチャートおよび図13に示すデータフロー図に基づいて説明する。
第2の実施形態に係るラベリング処理の処理手順の概要を説明すると次の通りである。まず、1次ラベリングとして画素毎の処理(S21)を画像109内で行い、その後、2次ラベリングとして画像毎の処理(S24)を行う。画素毎の処理では、図10に示す2階層論理マスク20により画像109をラスタ走査しながら、連結性判定、実ラベル付け、および左端点ラベルの管理を行う。なお、第2の実施形態に係るラベリング処理は、行毎の処理を行わない点で、図7のフローチャートに示す第1の実施形態に係るラベリング処理と異なる。
第1の実施形態に係るラベリング処理方法において説明したのと同様に、第2の実施形態においても、図6に示すシステム1が第2の実施形態に係るラベリング処理方法を行う。システム1は、以下で説明するステップS21〜S24の処理を行うために使用するプログラムを、例えば実行形式で記録部12に予め記録している。
また、実ラベルのラベル間連結情報を記録するテーブルをLRAM(1次元配列であり配列の初期値は全て0)とし、左端点ラベルのラベル間連結情報を記録するテーブルをLEPT(1次元配列であり配列の初期値は全て0)とし、左端点ラベルが連結している実ラベル上での最小値を記録するテーブルをLEPT_MIN(1次元配列であり配列の初期値は全て0)と表記する。また、画像内の実ラベルの個数を表すラベルカウンタをLC(初期値は1)とし、左端点ラベルカウンタをLLC(初期値は−1)と表記する。更に、変数VをV=Max{X,U}と定義し、変数(Z+)、変数Lmin(Z+)、および変数V+を、それぞれ、(Z+)=LEPT(LEPT(Z+))、Lmin(Z+)=LEPT_MIN(LEPT(Z+))、V+=((U≠0かつX≠0のとき)U+,(U≠0かつX=0のとき)U+,(U=0かつX≠0のとき)X+,(U=0かつX=0のとき)0)と定義し、記号「←」は記号の右に記載した変数から記号の左に記載した変数への値の代入を意味するものとする。また、sign(X+)は、左端点ラベル変数X+の符号を表し、sign(Row)は現在行の符号を表すものとする。
1次ラベリング(S21〜S23)
ステップS21において、ラベル付けの処理を画素毎に行う。次の(Case1)〜(Case12)に示す場合分け条件の基でラベル変数PおよびZに実ラベルを付与して1次ラベリング後のラベル画像を生成し、テーブルLRAMにラベル間連結情報を記録する。
(Case1)P=0かつZ+≠0の場合
LEPT(Z+)←(Z+)
LEPT_MIN(Z+)←Lmin(Z+),
Zvector←[(Z+),Lmin(Z+)]を実行
(Case2)P≠0かつV+=0かつY+=0かつZ+=0の場合
Pvector←[LLC,LC]
LEPT(LLC)←LLC,
LEPT_MIN(LLC)←LC,
LRAM(LC)←LCを実行
後処理に (LLC++,LC++) を実行
(Case3)P≠0かつY+≠0かつsign(Y+)=sign(Row)の場合
Pvector←Yvectorを実行
さらに(Z+≠0)の場合は Zvector←[(Z+),Lmin(Z+)] を実行
(Case4)P≠0かつY+≠0かつsign(Y+)≠sign(Row)の場合
Pvector←[LLC,Y]
LEPT(LLC)←LLC,
LEPT_MIN(LLC)←Y,
LEPT(Y+)←LLCを実行
後処理に LLC++ を実行
さらに(Z+≠0)の場合は Zvector←[(Z+),Lmin(Z+)] を実行
(Case5)P≠0かつY+=0かつV+≠0かつZ+=0かつsign(V+)=sign(Row)の場合
Pvector←Vvectorを実行
(Case6)P≠0かつY+=0かつV+≠0かつZ+=0かつsign(V+)≠sign(Row)の場合
Pvector←[LLC,V]
LEPT(LLC)←LLC,
LEPT_MIN(LLC)←V,
LEPT(V+)←LLCを実行
後処理に LLC++ を実行
(Case7)P≠0かつZ+≠0かつY+=0かつV+=0かつsign((Z+))=sign(Row)の場合
Pvector←[(Z+),Lmin(Z+)]
Zvector←[(Z+),Lmin(Z+)]を実行
(Case8)P≠0かつZ+≠0かつY+=0かつV+=0かつsign((Z+))≠sign(Row)の場合
Pvector←[LLC,Lmin(Z+)]
Zvector←[LLC,Lmin(Z+)]
LEPT(LLC)←LLC,
LEPT_MIN(LLC)←Lmin(Z+),
LEPT((Z+))←LLCを実行
後処理に LLC++ を実行
(Case9)P≠0かつV+≠0かつZ+≠0かつY+=0かつsign(V+)=sign(Row)かつsign((Z+))=sign(Row)の場合
Pvector←[(Z+),Lmin(Z+)]
Zvector←[(Z+),Lmin(Z+)]
LEPT(V+)←(Z+)
LEPT_MIN(V+)←Lmin(Z+),
LRAM(V)←Lmin(Z+)を実行
(Case10)P≠0かつV+≠0かつZ+≠0かつY+=0かつsign(V+)=sign(Row)かつsign((Z+))≠sign(Row)の場合
(a)V≧Lmin(Z+)の場合
Pvector←[V+,Lmin(Z+)]
Zvector←[V+,Lmin(Z+)]
LEPT((Z+))←V+,
LEPT_MIN(V+)←Lmin(Z+),
LRAM(V)←Lmin(Z+)を実行
(b)V<Lmin(Z+)の場合
Pvector←[V+,V]
Zvector←[V+,V]
LEPT((Z+))←V+,
LEPT_MIN((Z+))←V,
LRAM(Lmin(Z+))←Vを実行
(Case11)P≠0かつV+≠0かつZ+≠0かつY+=0かつsign(V+)≠sign(Row)かつsign((Z+))=sign(Row)の場合
Pvector←[(Z+),Lmin(Z+)]
Zvector←[(Z+),Lmin(Z+)]
LEPT(V+)←(Z+)
LEPT_MIN(V+)←Lmin(Z+),
LRAM(V)←Lmin(Z+)を実行
(Case12)P≠0かつV+≠0かつZ+≠0かつY+=0かつsign(V+)≠sign(Row)かつsign((Z+))≠sign(Row)の場合
(a)V≧Lmin(Z+)の場合
Pvector←[LLC,Lmin(Z+)]
Zvector←[LLC,Lmin(Z+)]
LEPT(LLC)←LLC,
LEPT_MIN(LLC)←Lmin(Z+),
LEPT(V+)←LLC,
LEPT((Z+))←LLC,
LRAM(V)←Lmin(Z+)を実行
後処理に LLC++ を実行
(b)V<Lmin(Z+)の場合
Pvector←[LLC,V]
Zvector←[LLC,V]
LEPT(LLC)←LLC,
LEPT_MIN(LLC)←V,
LEPT(V+)←LLC,
LEPT((Z+))←LLC,
LEPT_MIN((Z+))←V,
LRAM(Lmin(Z+))←V
後処理に LLC++ を実行
次に、ステップS22において、注目画素が行中の最後の画素であるか否かを判断する。最後の画素である場合はステップS23を実行し、そうでない場合は、ラスタ走査順の次の画素に対してステップS21を実行する。
次に、ステップS23において、注目画素が位置する行が、画像内の最後の行であるか否かを判断する。最後の行である場合はステップS24を実行し、そうでない場合は、ラスタ走査順の次の画素(即ち、次の行の最初の画素)に対してステップS21を実行する。
2次ラベリング(S24)
ステップS24において、連続したラベル値の付与処理を画像毎に行う。ステップS24において行う2次ラベリング処理は、上記した従来技術に係るステップS5において行う2次ラベリングの処理と同じであるため、その説明を省略する。ステップS24の処理を終了すると、第2の実施形態に係るラベリング処理を終了する。
上記したように、本発明の第2の実施形態に係るラベリング処理方法では、行毎に現在行におけるマスクパターンの左端点に着目し、左端点に付与するラベル値(実ラベル値)と、左端点と連結する領域での最小のラベル値とを対応させながら、左端点ラベルおよび実ラベルを伝播させてゆくことにより、行毎のラベル間連結情報の統合処理が不要となる。その際に、左端点ラベルと、左端点ラベルが連結する実ラベルの最小値とを、1次元配列形式の2つのテーブルLEPT、およびテーブルLEPT_MINにより管理する。図13のデータフロー図において、1次ラベリング処理のブロックからテーブルLRAMに接続される矢印(S21)が入力方向のみであることからもわかるように、テーブルLRAMは、単純に実ラベル間の連結情報を保持するのみである。そして、次の行のラベルの変更を行う際に、左端点ラベルの情報を活かした処理を行うことによって、行毎のラベル間連結情報の統合処理を行わずに連結領域の統合が行われる。よって、第2の実施形態に係るラベリング処理方法によれば、ラスタ走査における水平帰線時間のような空き時間を前提としなくても、高精細画像のような高い解像度を有する入力画像に対しても有効にラベリング処理を高速化することができる。
また、第2の実施形態に係るラベリング処理方法においては、従来技術に係るラベリング処理方法での1次ラベリングのみを改良している。よって、第2の実施形態に係るラベリング処理方法において、1次ラベリングの処理および2次ラベリングの処理は、連続して入力される画像に対してパイプライン処理が可能である。
そして、第2の実施形態に係るラベリング処理方法によれば、ラベル間連結情報を管理するメモリへのアクセス回数は、各画素において最大4回で済むので、完全なパイプライン処理が実現可能である。
図14は、第2の実施形態に係るラベリング処理方法におけるデータ読み出しのアクセス方法を説明する模式図であり、図15は、第2の実施形態に係るラベリング処理方法における各画素での処理を説明するタイムチャートである。メモリへのアクセス回数に関しては、データの読み出しは2回のアクセスで済む。また、テーブルLEPTの偶数行、テーブルLEPTの奇数行、テーブルLEPT_MINの偶数行、テーブルLEPT_MINの奇数行、およびテーブルLRAMをそれぞれ別のメモリとして用意する場合には、最大アクセス回数は、(Case12)の(b)の場合に示すように、テーブルLmin(Z+)の読み出しに2回、ラベル付けに2回書き込みの、計4回のみとなる。更に、テーブルLEPT、およびテーブルLEPT_MINのメモリサイズは、入力する画像サイズの横サイズ分だけ確保すればよい。
以下では、第2の実施形態に係るラベリング処理方法における1次ラベリング処理の場合分けを説明する。図16〜図30は、第2の実施形態に係るラベリング処理方法における1次ラベリング処理の場合分けを説明する模式図である。図16〜図24の模式図は、注目画素が連結しない(実ラベル値を付与する)、或いは1つの領域に連結する場合であり、図25〜図30の模式図は、注目画素が2つの領域に連結する場合であり、走査済みの画素パターンはこれら12のパターンに大別できるので、これらの場合分けにおいてラベリングがうまく動作していることが確認できれば、第2の実施形態に係るラベリング処理方法の動作が保証される。
図16〜図30中に、四角記号で示す部分が、2階層論理マスク20中のラベル変数Pおよび左端点ラベル変数P+であり、塗り潰しの四角記号■(以下黒点と記す)がP≠0の場合に対応し、塗り潰し無しの四角記号□(以下白点と記す)がP=0の場合に対応する。また、太枠で示す部分が、2階層論理マスク20中の他のラベル変数および他の左端点ラベル変数の部分である。また、矢印(←)で示す部分が点Pでの処理である。また、以下の説明において、L−1行を奇数行、L行を偶数行とする。また、テーブルLEPT、およびテーブルLEPT_MINを1次元配列で表現し、0より上が奇数行(odd)管理を表し、0より下が偶数行(even)管理を表す。左端点ラベル値が負数のときは奇数行の左端点であり、正数のときは偶数行の左端点である。
図16で示すパターンは、(Case1)の場合分けに対応する。点Pは白点なので点Zの更新処理を行うのみである。
図17で示すパターンは、(Case2)の場合分けに対応する。点Pが黒点であり、周囲の点には黒点がないので新たに左端点ラベルと実ラベルが書き込まれる。まず、点Pは現在行において左端点となるので、LEPT[+c]←+cとする。LEPT_MIN[+c]←αにより、左端点ラベル+cが実ラベル上でαと連結していることを管理する。そして実ラベルの連結情報をLRAM[α]←αにより管理する。
図18で示すパターンは、(Case3)の場合分けに対応する。点Pが黒点であり、点Yと点Y+は{+c,α}であり、Y+が現在行と同符号であり既に現在行で左端点として現れているので、点Pおよび点P+に点Yおよび点Y+の内容をそれぞれ書き込む。LEPT、LEPT_MINおよびLRAMに変更は起こらない。
図19で示すパターンは、(Case4)の場合分けに対応する。点Pが黒点であり、点Yと点Y+は{−a,α}であり、Y+が現在行と異符号であり現在行では現れていないので、点Pにおいて左端点ラベルが書き込まれる。まず、LEPT[+c]←+cとして新たな左端点ラベルを書き込み、LEPT[−a]←+cと書き込むことで、左端点−aが+cと連結していることを管理する。また、LEPT_MIN[+c]←αにより、左端点ラベル+cが実ラベル上でαと連結していることを管理する。そしてLRAMには変更は無い。
図20および図21で示すパターンは、いずれも(Case5)の場合分けに対応する。図20は(Case5)に対応し、且つV=X、V+=X+である場合を示す。図21は(Case5)に対応し、且つV=U、V+=U+である場合を示す。点Pが黒点であり、点Vと点V+は{+c,α}であり、V+が現在行と同符号であり既に現在行で左端点として現れているので、点Pおよび点P+に点Vおよび点V+の内容をそれぞれ書き込む。LEPT、LEPT_MIN、LRAMに変更は起こらない。
図22で示すパターンは、(Case6)の場合分けに対応する。点Pが黒点であり、点Vと点V+は{−a,α}であり、V+が現在行と異符号であり現在行では現れていないので、点Pにおいて左端点ラベルが書き込まれる。まず、LEPT[+c]←+cとして新たな左端点ラベルを書き込み、LEPT[−a]←+cと書き込むことで、左端点−aが+cと連結していることを管理する。また、LEPT_MIN[+c]←αにより、左端点ラベル+cが実ラベル上でαと連結していることを管理する。そしてLRAMには変更は無い。
図23で示すパターンは、(Case7)の場合分けに対応する。点Pが黒点であり、点ZでのLmin(Z+)と点Z+での(Z+)は{+c,α}であり、(Z+)が現在行と同符号であり既に現在行で左端点として現れているので、点Pおよび点P+にLmin(Z+)および(Z+)の内容をそれぞれ書き込む。LEPT、LEPT_MIN、LRAMに変更は起こらない。
図24で示すパターンは、(Case8)の場合分けに対応する。点Pが黒点であり、点ZでのLmin(Z+)と点Z+での(Z+)は{−a,α}であり、(Z+)が現在行と異符号であり現在行では現れていないので、点Pにおいて左端点ラベルが書き込まれる。まず、LEPT[+c]←+cとして新たな左端点ラベルを書き込み、LEPT[−a]←+cと書き込むことで、左端点−aが+cと連結していることを管理する。また、LEPT_MIN[+c]←αにより、左端点ラベル+cが実ラベル上でαと連結していることを管理する。そしてLRAMには変更は無い。
図25に示すパターンは、(Case9)の場合分けに対応する。点Pが黒点であり、点Pで実ラベル(α,β)(α≦β)及び左端点ラベル(+c,+d)が連結する。まず、左端点ラベル(+c,+d)が共に現在行と同符号であるので、左端点は現在行における小さいラベル値の左端点を優先的に伝播させ、出現順の早い+cを左端点ラベルとして伝播させる。更に、LEPT[+d]←+cにより左端点ラベル(+c,+d)の連結情報を管理する。また、LEPT_MIN[+d]←αにより、左端点ラベル+dが実ラベル上でαと連結していることを管理する。
そして、実ラベルの連結情報をLRAM[β]←αにより管理する。これにより、点Zの更新処理、(Z+)、Lmin(Z+)は、どのようにアクセスされても、左端点ラベルの最小値+c、実ラベルの最小値αが伝播される。
図26に示すパターンは、(Case10)の(a)の場合分けに対応する。点Pが黒点であり、点Pで実ラベル(α,β)(α<β)及び左端点ラベル(−a,+c)が連結する。まず、左端点ラベル(−a,+c)の+cのみが現在行と同符号であり、左端点は現在行と同符号の左端点を優先的に伝播させるので、+cを左端点ラベルとして伝播させる。更に、LEPT[−a]←+cにより左端点ラベル(−a,+c)の連結情報を管理する。また、LEPT_MIN[+c]←αにより、左端点ラベル+cが実ラベル上でαと連結していることを管理する。
そして、実ラベルの連結情報をLRAM[β]←αにより管理する。これにより、点Zの更新処理、(Z+)、Lmin(Z+)は、どのようにアクセスされても、左端点ラベルの最小値+c、実ラベルの最小値αが伝播される。
図27に示すパターンは、(Case10)の(b)の場合分けに対応する。点Pが黒点であり、点Pで実ラベル(α,β)(α<β)及び左端点ラベル(−b,+c)が連結する。まず、左端点ラベル(−b,+c)の+cのみが現在行と同符号であり、左端点は現在行と同符号の左端点を優先的に伝播させるので、+cを左端点ラベルとして伝播させる。更に、LEPT[−b]←+cにより左端点ラベル(−b,+c)の連結情報を管理する。また、LEPT_MIN[−b]←αにより、左端点ラベル−bが実ラベル上でαと連結していることを管理する。
そして、実ラベルの連結情報をLRAM[β]←αにより管理する。これにより、点Zの更新処理、(Z+)、Lmin(Z+)は、どのようにアクセスされても、左端点ラベルの最小値+c、実ラベルの最小値αが伝播される。
図28に示すパターンは、(Case11)の場合分けに対応する。点Pが黒点であり、点Pで実ラベル(α,β)(α<β)及び左端点ラベル(−b,+c)が連結する。まず、左端点ラベル(−b,+c)の+cのみが現在行と同符号であり、左端点は現在行と同符号の左端点を優先的に伝播させるので、+cを左端点ラベルとして伝播させる。更に、LEPT[−b]←+cにより左端点ラベル(−b,+c)の連結情報を管理する。また、LEPT_MIN[−b]←αにより、左端点ラベル−bが実ラベル上でαと連結していることを管理する。
そして、実ラベルの連結情報をLRAM[β]←αにより管理する。これにより、点Zの更新処理、(Z+)、Lmin(Z+)は、どのようにアクセスされても、左端点ラベルの最小値+c、実ラベルの最小値αが伝播される。
図29に示すパターンは、(Case12)の(a)の場合分けに対応する。点Pが黒点であり、点Pで実ラベル(α,β)(α≦β)及び左端点ラベル(−a,−b)が連結する。まず、左端点ラベル(−a,−b)が共に現在行と異符号であるので、新たに左端点ラベルを書き込む。まず、LEPT[+c]←+cとして新たな左端点ラベルを書き込み、LEPT[−a]←+cにより左端点ラベル(−a,+c)の連結情報を管理し、更に、LEPT[−b]←+cにより左端点ラベル(−b,+c)の連結情報を管理する。また、LEPT_MIN[+c]←αにより、左端点ラベル+cが実ラベル上でαと連結していることを管理する。
そして、実ラベルの連結情報をLRAM[β]←αにより管理する。これにより、点Zの更新処理、(Z+)、Lmin(Z+)は、どのようにアクセスされても、左端点ラベルの最小値+c、実ラベルの最小値αが伝播される。
図30に示すパターンは、(Case12)の(b)の場合分けに対応する。点Pが黒点であり、点Pで実ラベル(α,β)(α<β)及び左端点ラベル(−a,−b)が連結する。まず、左端点ラベル(−a,−b)が共に現在行と異符号であるので、新たに左端点ラベルを書き込む。まず、LEPT[+c]←+cとして新たな左端点ラベルを書き込み、LEPT[−a]←+cにより左端点ラベル(−a,+c)の連結情報を管理し、更に、LEPT[−b]←+cにより左端点ラベル(−b,+c)の連結情報を管理する。また、LEPT_MIN[+c]←αにより、左端点ラベル+cが実ラベル上でαと連結していることを管理する。更に、LEPT_MIN[−b]←αにより、左端点ラベル−bが実ラベル上でαと連結していることを管理する。
そして、実ラベルの連結情報をLRAM[β]←αにより管理する。これにより、点Zの更新処理、(Z+)、Lmin(Z+)は、どのようにアクセスされても、左端点ラベルの最小値+c,実ラベルの最小値αが伝播される。
以上、本発明を特定の実施の形態によって説明したが、本発明は上記した実施の形態に限定されるものではない。
上記実施形態では、CPU10とメモリ11と記録部12とバス13とI/F部14とを備えるシステム1がラベリング処理方法を行っているが、図6に示すシステム1に代えて、電子回路基板(即ち、ラベリング処理装置)がラベリング処理方法を行ってもよい。図4に示す電子回路基板の一例では、ラベリング処理装置100は、従来技術に係るラベリング処理方法を行うように構成されているが、ラベリング処理装置100を、第1または第2の実施形態に係るラベリング処理方法を行うように構成すればよい。当業者であれば、従来技術に係るラベリング処理方法と、第1または第2の実施形態に係るラベリング処理方法との差異に応じて、ラベリング処理装置100を適宜修正または変更することができるであろう。
また、上記実施形態では、変数および配列に対して具体的な初期値を設定しているが、初期値の値は一例であり上記実施形態に記載の値に限定されない。上記実施形態に係るラベリング処理方法では、注目画素が画像109の右端または左端或いは上端に位置する場合においてラベル変数Pにラベル値を付与しようとすると、ラベル変数Pに連結するラベル変数X,Y,Z,Uの何れかがラベル画像の領域外に位置するが、このようないわゆる「端処理」は、例えば、ラベル画像の領域外に位置する部分のラベル値の初期値を適切に与えることにより、或いは、ラスタ走査の折り返し点および開始点を適切に設定することにより処理することができる。
また、上記実施形態では、入力画像の画素値が2値化されているが、入力画像はグレースケール画像であってもよく、画素値は例えば8ビットの数値であってもよい。第1および第2の実施形態の何れにおいても、ラベル変数Pの値がP=0の場合とP≠0の場合とに応じて場合分けを行っているので、グレースケール画像をそのまま入力することができる。この場合は、濃淡レベルの違いに拘わらず、異なる濃淡レベルが全て同じ濃淡レベルと判断されて、異なる濃淡レベルを有する連結領域に同じラベル値が付与される。
グレースケール画像を入力する場合において、濃淡レベルの違いに応じて、異なる濃淡レベルを有する連結領域を異なる領域として判断して、異なるラベル値を付与する場合(即ち、同じ濃淡レベルを有する連結領域に同じラベル値を付与する場合)には、例えば、注目画素の読み出し時の濃淡画素値(例えば4ビット)と注目画素の近傍の画素値とが同じであるか否かを判断すればよい。即ち、注目画素と同じ濃淡レベルの画素値を有する近傍の点を仮想的に画素値「1」とし、注目画素の画素値も仮想的に画素値「1」として、論理マスクの領域内において局所的な2値パターンを擬似的に導入すればよい。そのうえで、注目画素と同じ濃淡レベルに対する連結領域にラベル値を付与しながら、濃淡領域の領域ラベリング処理を行えばよい。この際、1行分のラベル画像を蓄えるラインバッファ104は、入力濃淡画像の1行分のラベル画像を蓄える。
また、上記実施形態では、ラスタ走査の走査方向が画像の左から右方向であるが、走査方向は画像の右から左方向であってもよい。本発明に係るラベリング処理方法のアルゴリズムは、走査方向が縦方向または横方法の一定の方向であれば適用可能である。
また、上記実施形態では、入力画像の画素値のデータとラベル画像のラベル値のデータとを記録部12中の別の領域に記録しているが、画素値のデータは1次ラベリング処理後には使用されることはなく、1次ラベリングの処理においてラベル値を付与する際に、画素値のデータをラベル値で上書きしてもよい。
また、上記実施形態では、論理マスク108および2階層論理マスク20中のラベル変数Pが、ラベル変数X,Y,Z,およびUの各々と、それぞれ左上、上、右上、および左の位置で連結しているが、論理マスクはこれに限定されず、例えばラベル変数Zを省略したものであってもよい。この場合は、ラベル変数Pの値と、ラベル変数Pに連結するラベル変数X,Y,Uのラベル値とに基づいて、ラベル変数Pと、ラベル変数Pが位置する行の1つ前の行に位置するラベル変数XまたはYのいずれかとにラベル値を付与すればよい。
以下に、本発明の実施例を示し、本発明の特徴をより明確にする。
(実施例1)
実施例1では、第1の実施形態に係るラベリング処理方法によるラベリング処理の一実施例を示す。
図31は、第1の実施形態に係るラベリング処理方法における1次ラベリング処理の一例を示す図である。ここで、図31中に示す(i)は、入力画像の2値パターン(6行11列:左端の1列目および右端の11列目は画素値が全て0の列なので表示されていない)であり、(ii)は、1次ラベリング処理を4行目まで実行した状態のラベル画像であり、(iii)は、1次ラベリング処理の結果を示すラベル画像である。図31に示すラベル画像の例では、入力画像の画素値のデータに、1次ラベリング処理で付与したラベル値を上書きしている。また、表1は、図31中に示す1次ラベリング処理の一例でのテーブルLRAM、sub_LRAMの状態を示す模式図である。なお、テーブルflagは行単位で初期化(初期値は全て0)されるので図示を省略する。
Figure 0005300666
表1に示すように、ラベル値「2」は、注目画素が4行9列に位置するとき(以下、単に(4,9)と記す。行および列の方向の定義については図1を参照)に、ラベル値「1」に合流し、以後出現は無いため、4行目の行毎の統合処理において、テーブルsub_LRAMではアドレス「1,2,3」においてラベル値「1,3,4」をそれぞれ管理する。その後、次の行の1つ目の画素の処理である注目画素が(5,2)に位置するときに、アドレス「4」において、注目画素(5,2)に新たに付与したラベル値「5」を管理する。
以下、図31および表1を参照しながら、ラスタ走査順に移動する注目画素の位置に着目して、第1の実施形態に係るラベリング処理方法における1次ラベリング処理の一例を具体的に説明する。なお、テーブルLRAM、sub_LRAMの初期値は全て0であり、変数LC=1、変数sub_LC=0にそれぞれ初期化されている。
(1)1行目の処理
先ず、行の始めでRow_Max←1とする。注目画素(1,1)は(Case1)の場合分けに該当するので、Z←0とする。注目画素(1,2)〜(1、9)の画素毎の処理については、注目画素(1,1)の画素毎の処理と同じであるので、これらの説明を省略する。
注目画素(1,10)は(Case3)の場合分けに該当するので、P←1、Z←0、LRAM(1)←1とする。付与したラベル値labelは「1」である。その後LC←2に更新する(インクリメント)。次に、label≧Row_Maxであるので、sub_LC←1に更新し(インクリメント)、sub_LRAM(1)←1、flag(1)←1とする。
行中の最後の画素であるので、行毎の統合処理を実行する。この時点でのLCおよびsub_LCの値は、LC=2、sub_LC=1である。
l←1、m←0とする。k←sub_LRAM(1)、LRAM(1)←LRAM(LRAM(1))とする。k=LRAM(k)かつflag(k)=1であるので、m←1とし(インクリメント)、sub_LRAM(1)←1、flag(1)←0とする。l←2とする(インクリメント)。
l≦sub_LCではないので、sub_LC←1(値1に値1を上書き)とする。
(2)2行目の処理
まず、行の始めでRow_Max←2とする。注目画素(2,1)は(Case1)の場合分けに該当するので、Z←0とする。注目画素(2,2)〜(2、7)の画素毎の処理については、注目画素(2,1)の画素毎の処理と同じであるので、これらの説明を省略する。
注目画素(2,8)は(Case3)の場合分けに該当するので、P←2、Z←0、LRAM(2)←2とする。付与したラベル値labelは「2」である。その後LC←3に更新する(インクリメント)。次に、label≧Row_Maxであるので、sub_LC←2に更新し(インクリメント)、sub_LRAM(2)←2、flag(2)←1とする。
注目画素(2,9)は(Case1)の場合分けに該当するので、Z←1(値1に値1を上書き)とする。
注目画素(2,10)は(Case2)の場合分けに該当するので、P←1、Z←0とする。次に、label≧Row_Maxではないので、flag(1)←1とする。
行中の最後の画素であるので、行毎の統合処理を実行する。この時点でのLCおよびsub_LCの値は、LC=3、sub_LC=2である。
l←1、m←0とする。k←sub_LRAM(1)、LRAM(1)←LRAM(LRAM(1))とする。k=LRAM(k)かつflag(k)=1であるので、m←1とし(インクリメント)、sub_LRAM(1)←1、flag(1)←0とする。l←2とする(インクリメント)。
l≦sub_LCであるので、さらに、k←sub_LRAM(2)、LRAM(2)←LRAM(LRAM(2))とする。k=LRAM(k)かつflag(k)=1であるので、m←2とし(インクリメント)、sub_LRAM(2)←2、flag(2)←0とする。l←3とする(インクリメント)。
l≦sub_LCではないので、sub_LC←2(値2に値2を上書き)とする。
(3)3行目の処理
まず、行の始めでRow_Max←3とする。注目画素(3,1)は(Case1)の場合分けに該当するので、Z←0とする。注目画素(3,2)〜(3、5)の画素毎の処理については、注目画素(3,1)の画素毎の処理と同じであるので、これらの説明を省略する。
注目画素(3,6)は(Case3)の場合分けに該当するので、P←3、Z←0、LRAM(3)←3とする。付与したラベル値labelは「3」である。その後LC←4に更新する(インクリメント)。次に、label≧Row_Maxであるので、sub_LC←3に更新し(インクリメント)、sub_LRAM(3)←3、flag(3)←1とする。
以後、3行目の他の注目画素(3,8)および(3,10)の画素毎の処理については、注目画素(2,10)の画素毎の処理と同様であり、注目画素(3,7)および(3,9)の画素毎の処理については、注目画素(2,9)の画素毎の処理と同様であり、3行目の行毎の統合処理については2行目の行毎の統合処理と同様であるので、これらの説明を中略する。3行目の処理が終了した時点でのLCおよびsub_LCの値は、LC=4、sub_LC=3である。
(4)4行目の処理
まず、行の始めでRow_Max←4とする。注目画素(4,1)は(Case1)の場合分けに該当するので、Z←0とする。注目画素(4,2)〜(4、3)の画素毎の処理については、注目画素(4,1)の画素毎の処理と同じであるので、これらの説明を省略する。
注目画素(4,4)は(Case3)の場合分けに該当するので、P←4、Z←0、LRAM(4)←4とする。付与したラベル値labelは「4」である。その後LC←5に更新する(インクリメント)。次に、label≧Row_Maxであるので、sub_LC←4に更新し(インクリメント)、sub_LRAM(4)←4、flag(4)←1とする。
注目画素(4,5)は(Case1)の場合分けに該当するので、Z←3(値3に値3を上書き)とする。
注目画素(4,6)は(Case2)の場合分けに該当するので、P←3、Z←0とする。次に、label≧Row_Maxではないので、flag(3)←1とする。
注目画素(4,7)は(Case1)の場合分けに該当するので、Z←2(値2に値2を上書き)とする。
注目画素(4,8)は(Case2)の場合分けに該当するので、P←2、Z←0とする。次に、label≧Row_Maxではないので、flag(2)←1とする。
注目画素(4,9)は(Case6)の場合分けに該当するので、P←1、LRAM(2)←1(値2から値1に更新)、Z←1とする。次に、label≧Row_Maxではないので、flag(1)←1とする。
注目画素(4,10)は(Case2)の場合分けに該当するので、P←1、Z←0とする。次に、label≧Row_Maxではないので、flag(1)←1とする。
行中の最後の画素であるので、行毎の統合処理を実行する。この時点でのLCおよびsub_LCの値は、LC=5、sub_LC=4である。
l←1、m←0とする。k←sub_LRAM(1)、LRAM(1)←LRAM(LRAM(1))とする。k=LRAM(k)かつflag(k)=1であるので、m←1とし(インクリメント)、sub_LRAM(1)←1、flag(1)←0とする。l←2とする(インクリメント)。
l≦sub_LCであるので、さらに、k←sub_LRAM(2)、LRAM(2)←LRAM(LRAM(2))とする。ここで、k=LRAM(k)かつflag(k)=1ではないので、何もせずそのままl←3とする(インクリメント)。
l≦sub_LCであるので、さらに、k←sub_LRAM(3)、LRAM(3)←LRAM(LRAM(3))とする。k=LRAM(k)かつflag(k)=1であるので、m←2とし(インクリメント)、sub_LRAM(2)←3(ここで値2から値3に更新)、flag(3)←0とする。l←4とする(インクリメント)。
l≦sub_LCであるので、さらに、k←sub_LRAM(4)、LRAM(4)←LRAM(LRAM(4))とする。k=LRAM(k)かつflag(k)=1であるので、m←3とし(インクリメント)、sub_LRAM(3)←4(ここで値3から値4に更新)、flag(4)←0とする。l←5とする(インクリメント)。
l≦sub_LCではないので、sub_LC←3(値4から値3に更新)とする。
(5)5行目の処理
まず、行の始めでRow_Max←5とする。注目画素(5,1)は(Case1)の場合分けに該当するので、Z←0とする。
注目画素(5,2)は(Case3)の場合分けに該当するので、P←5、Z←0、LRAM(5)←5とする。付与したラベル値labelは「5」である。その後LC←6に更新する(インクリメント)。次に、label≧Row_Maxであるので、sub_LC←4に更新し(インクリメント)、sub_LRAM(4)←5(ここで値4から値5に更新)、flag(5)←1とする。
以後、5行目の他の注目画素(5,3)〜(5,10)の画素毎の処理および5行目の行毎の統合処理、並びに6行目の処理については説明を省略する。
このように、実施例1の4行目の行毎の統合処理において、sub_LRAM(3)←4とし、且つ、sub_LRAM(2)←3としているのは、ラベル2は既に他のラベルと合流し、今後出現することはないため、管理しておく必要はないためである。
なお、注目画素(4,8)については、4行目の終了時点(図31中の(ii)に示す)ではラベル値「2」が付与されているが、1次ラベリング処理の終了時点(図31中の(iii)に示す)では、ラベル値「1」が付与されている。この理由は、注目画素(4,8)の処理時点では(Case2)の場合分けに該当して、注目画素(4,8)にラベル値「2」が付与されていたが、その後、注目画素(4,9)の処理時にLRAM(2)←1とされて、LRAM(2)の値が値「2」から値「1」に更新され、さらにその後、注目画素(5,7)の処理時に(Case1)の場合分けに該当して、論理マスク中のラベル変数Zに位置する注目画素(4,8)のラベル値「2」を、LRAM(LRAM(2))=1に基づいて、ラベル値「1」に更新しているためである。
(実施例2)
実施例2では、第1の実施形態に係るラベリング処理方法によるラベリング処理の他の実施例を示す。
図32は、第1の実施形態に係るラベリング処理方法における1次ラベリング処理の他の実施例を示す図である。図32中に示す(i)は、入力画像の2値パターン(12行19列:左端の1列目および右端の19列目は画素値が全て0の列なので表示されていない)であり、(ii)は、1次ラベリング処理を5行目まで実行した状態のラベル画像である。図32に示すラベル画像の例では、入力画像の画素値のデータに、1次ラベリング処理で付与したラベル値を上書きしている。また、表2は、図32中に示す1次ラベリング処理の他の実施例でのテーブルLRAM,sub_LRAMの状態を示す模式図であり、表3は、図32中の(ii)のラベル画像に対応するテーブルflagの状態を示す模式図である。なお、図32の(i)の2値画像パターン中に示す符号(A)〜(J)は、表2中の符号(A)〜(J)に対応する。
Figure 0005300666
Figure 0005300666
以下、図32と表2及び表3とを参照しながら、第1の実施形態に係るラベリング処理方法における1次ラベリング処理の他の実施例を具体的に説明する。
まず、図32の(i)および表2を参照して、テーブルLRAM、sub_LRAMの更新例を説明する。図32の(i)では最左上の点は(1,2)から始まっている。テーブルLRAMはラベル間の連結情報を管理し、テーブルsub_LRAMは、現在行の1つ前の行までに自分より小さなラベルと連結していないラベルと、現在行に出現したラベルとを管理する。
まず、図32の(i)に示すように、注目画素(1,2)、(3,18)、(4,16)、(5,8)(5,14)、(6,12)および(7,10)において、ラベル値「1」〜「7」がそれぞれ付与されている。これらの注目画素に連結するそれぞれの領域には、連結する領域と同じラベル値が付与されている。
符号(A)で示す注目画素(8,11)では、ラベル値「7」を有する領域とラベル値「6」を有する領域とが合流するので、テーブルLRAMのアドレス「7」に値「6」を記録することで、ラベル値「7」とラベル値「6」とが連結することを管理する。
符号(B)で示す注目画素(9,6)では、新たにラベル値「8」を付与するので、テーブルLRAMのアドレス「8」に値「8」を記録する。ここで、ラベル7は既に他のラベルと合流しており、管理する必要がないので、テーブルsub_LRAMのアドレス「7」に値「8」を記録する。
符号(C)で示す注目画素(9,17)では、ラベル値「3」を有する領域とラベル値「2」を有する領域とが合流するので、テーブルLRAMのアドレス「3」に値「2」を記録することで、ラベル値「3」とラベル値「2」とが連結することを管理する。
符号(D)で示す9行目の統合処理時では、符号(C)で示す注目画素(9,17)において他のラベル値に連結したラベル値「3」は管理しなくなるので、テーブルsub_LRAMのアドレス「3」〜「6」にアドレス「4」〜「7」に入っているラベル値を繰り上げて管理する。(注:8行目でラベル7がラベル6と合流し、6行目の終わりにはラベル値1〜6までの6個のラベルが残る。9行目にて、ラベル8が出現するが、ラベル値7は既に合流済みなので、このラベル値8をアドレス7に上書き(代入)する。その9行目でラベル3がラベル2と合流するので、9行目の終了時点では、ラベル値3を除き、ラベル値1から8まで(ラベル値7は含まれない)の6個のラベルが合流無しラベルとして残る。そこで9行目終了時点での部分統合処理では、ラベル値3を除去し、ラベル値4,5,6,8が繰り上げられて管理される。このとき、アドレス1から6までの6個までのラベルが残っていることが管理されるので、アドレス7に残っているラベル値については問題が生じ無い。
以後、表2に示すように、符号(E)〜(J)で示す注目画素においてラベル値の合流または行毎の統合処理を繰り返す度に、テーブルLRAM、sub_LRAMを更新する。
次に、図32の(ii)および表3を参照して、テーブルflagの更新例を説明する。テーブルflagは、アドレス値に示すラベル値が現在行において出現したラベル値か否かを管理している。出現した場合は値「1」を記録する。
6行目(図中に枠で囲む)に注目すると、まず注目画素(6,2)においてラベル値「1」が出現するので、アドレス「1」の値が「1」になる。次に、注目画素(6,8)においてラベル値「4」が出現するので、アドレス「4」の値が「1」になる。以後、表3に示すように、注目画素(6,12)、(6,14)、(6,16)および(6,18)においてラベル値「6」、「5」、「3」および「2」がそれぞれ出現する度に、アドレス「6」、「5」、「3」および「2」の値が「1」になる。これらテーブルflagは行毎の統合処理後には全て初期値0にクリアされる。
(実施例3)
実施例3では、第2の実施形態に係るラベリング処理方法によるラベリング処理の一実施例を示す。
図33は、第2の実施形態に係るラベリング処理方法における1次ラベリング処理の一実施例を示す図であり。入力画像の2値パターン(12行19列:左端の1列目および右端の19列目は画素値が全て0の列なので表示されていない)を示す。図33に示すラベル画像の例でも、入力画像の画素値のデータに、1次ラベリング処理で付与したラベル値を上書きする。また、表4〜表6は、図33中に示す1次ラベリング処理の一実施例でのテーブルLEPT,LEPT_MIN,LRAMの状態をそれぞれ示す模式図である。なお、図33の2値画像パターン中に示す符号(A)〜(G)は、表4〜表6中の符号(A)〜(G)に対応する。表4〜表6に示すテーブルLEPT,LEPT_MIN,LRAMの状態は、符号(A)〜符号(G)で示す注目画素での処理後のメモリの状態を表しており、表中に丸印で囲むセルが、当該処理において値を更新する部分を表している。表6中のLRAMの列の値は、符号(A)で示す注目画素での処理開始前の状態であり、その後、符号(B)〜符号(G)で示す注目画素でのそれぞれの処理時に状態が変化する所を表している。
Figure 0005300666
Figure 0005300666
Figure 0005300666
以下、図33と表4〜表6とを参照しながら、第2の実施形態に係るラベリング処理方法における1次ラベリング処理の一実施例を具体的に説明する。
なお、図33に示す注目画素(1,2)、(3,18)、(4,16)、(5,14)、(6,12)、(7,10)、(8,8)および(9,6)において、ラベル値「1」〜「8」がそれぞれ付与される。これらの注目画素に連結するそれぞれの領域には、連結する領域と同じラベル値が付与される。
符号(A)で示す注目画素(9,17)では、現在行が−符号であり、Case10(a)に該当する処理を行う。LEPT(7)←−7を行い左端点7と−7とが連結していることを管理する。また、LEPT_MIN(−7)←2を行い左端点−7と実ラベル2とが連結していることを管理する。LRAM(3)←2を行い実ラベル2と3とが連結していることを管理する。
符号(B)で示す注目画素(11,7)では、現在行が−符号であり、Case10(a)に該当する処理を行う。LEPT(3)←−2を行い左端点3と−2とが連結していることを管理する。また、LEPT_MIN(−2)←7を行い左端点−2と実ラベル7とが連結していることを管理する。LRAM(8)←7を行い実ラベル8と7とが連結していることを管理する。
符号(C)で示す注目画素(11,9)では、現在行が−符号であり、Case10(a)に該当する処理を行う。LEPT(4)←−2を行い左端点4と−2とが連結していることを管理する。また、LEPT_MIN(−2)←6を行い左端点−2と実ラベル6とが連結していることを管理する。LRAM(7)←6を行い実ラベル7と6とが連結していることを管理する。
符号(D)で示す注目画素(11,11)では、現在行が−符号であり、Case10(a)に該当する処理を行う。LEPT(5)←−2を行い左端点5と−2とが連結していることを管理する。また、LEPT_MIN(−2)←5を行い左端点−2と実ラベル5とが連結していることを管理する。LRAM(6)←5を行い実ラベル6と5とが連結していることを管理する。
符号(E)で示す注目画素(11,13)では、現在行が−符号であり、Case10(a)に該当する処理を行う。LEPT(6)←−2を行い左端点6と−2とが連結していることを管理する。また、LEPT_MIN(−2)←4を行い左端点−2と実ラベル4とが連結していることを管理する。LRAM(5)←4を行い実ラベル5と4とが連結していることを管理する。
符号(F)で示す注目画素(11,15)では、現在行が−符号であり、Case10(a)に該当する処理を行う。LEPT(7)←−2を行い左端点7と−2とが連結していることを管理する。また、LEPT_MIN(−2)←2を行い左端点−2と実ラベル2とが連結していることを管理する。LRAM(4)←2を行い実ラベル8と7とが連結していることを管理する。ここで11行目の処理において左端点−2と連結している実ラベルが7,6,5,4,2と書き変わり、最終的にLEPT_MIN(−2)←2となり、左端点−2と実ラベル2とが連結していることが分かる。
符号(G)で示す注目画素(12,4)では、現在行が+符号であり、Case10(b)に該当する処理を行う。LEPT(−2)←1を行い左端点−2と1とが連結していることを管理する。また、LEPT_MIN(−2)←1を行い左端点−2と実ラベル1とが連結していることを管理する。LRAM(2)←1を行い実ラベル2と1とが連結していることを管理する。ここで、符号(G)で示す注目画素を処理する時点では、左端点の1に連結している実ラベル1と、左端点−2と連結している実ラベル2とを比較して、小さい方を伝搬する。
1 ラベリング処理システム
10 CPU
11 メモリ
12 記録部
13 バス
14 I/F部
20 2階層論理マスク
100 ラベリング処理装置
101 ラベル付け論理回路101
102 ラベル統合回路102
103 1次ラベリング側のLRAM
104 ラインバッファ
105 画像メモリ
106 2次ラベリング側のLRAM
108 論理マスク
109 画像
109A 走査済領域
A 1次ラベリング部
B 2次ラベリング部
C バス
D バス
E 現在行(点Pが存在する行)
F 連結経路

Claims (10)

  1. 演算部と記録部とを備えるシステムにおいて、前記記録部に記録されている画像データで表される入力画像に対して論理マスクをラスタ走査することにより、前記演算部が前記画像データのラベリング処理を行う方法であって、
    前記論理マスクが、ラベル画像のラベル値を表す第1のラベル変数および第2のラベル変数を含み、前記第1のラベル変数が、前記入力画像内の注目画素が位置する点でのラベル変数であり、前記第2のラベル変数が、前記第1のラベル変数に接続する前記論理マスク内のラベル変数であり、前記第1のラベル変数の初期値が前記画像データの画素値であり、第1の配列が、前記第1のラベル変数と前記第2のラベル変数との間のラベル間連結情報を含み、
    前記演算部が、前記画像データ内の画素毎に、前記第1のラベル変数の値と、前記第2のラベル変数のラベル値と、前記ラベル間連結情報とに基づいて、前記第1のラベル変数にラベル値を付与し、前記第1の配列に前記ラベル間連結情報を記録し、前記第1のラベル変数にラベル値を付与する度に、前記注目画素が位置する同じ行中に出現した前記ラベル値のうち、今後も出現する可能性のあるラベル値を、第2の配列に記録することを、前記注目画素が前記入力画像内の行中の最後の画素に達するまで繰り返し実行する第1のステップと、
    前記演算部が、前記注目画素が前記入力画像内の行中の最後の画素である場合に、前記ラベル間連結情報および前記第2の配列に記録されている情報に基づいて、同じ行中に出現した前記ラベル値のみを小さい順に統合する第2のステップと、
    前記演算部が、前記注目画素が位置する行が、前記入力画像内の最後の行である場合に、前記第1の配列に記録されている前記ラベル間連結情報に基づいて前記ラベル値の変更を行う第3のステップとを含むことを特徴とするラベリング処理方法。
  2. 前記第1のラベル変数がラベル変数Pであり、前記第2のラベル変数がラベル変数X,Y,Z,およびUを含み、前記ラベル変数Pが、前記ラベル変数X,Y,Z,およびUの各々と、それぞれ左上、上、右上、および左の位置で接続し、
    前記第1のステップが、次の(Case1)〜(Case8)に示す場合分け条件の基で前記ラベル変数Pおよび前記ラベル変数Zにラベル値を付与し、
    (Case1)P=0の場合
    Z←Zを実行
    (Case2)P≠0かつY≠0の場合
    P←Y,
    Z←Zを実行
    (Case3)P≠0かつY=0かつZ=0かつV=0の場合
    P←LC,
    Z←0,
    LRAM(LC)←LCを実行
    後処理に LC←LC+1 を実行
    (Case4)P≠0かつY=0かつZ=0かつV≠0の場合
    P←V,
    Z←0を実行
    (Case5)P≠0かつY=0かつZ≠0かつV≠0かつZ>Vの場合
    P←V,
    LRAM(Z)←V,
    Z←Vを実行
    (Case6)P≠0かつY=0かつZ≠0かつV≠0かつZ<Vの場合
    P←Z
    LRAM(V)←Z
    Z←Zを実行
    (Case7)P≠0かつY=0かつZ≠0かつV≠0かつZ=Vの場合
    P←V,
    Z←Zを実行
    (Case8)P≠0かつY=0かつZ≠0かつV=0の場合
    P←Z
    Z←Zを実行
    ここで、前記第1の配列がLRAMであり、ラベルの個数を表す変数がLCであり、変数Vが、V=Max{X,U}であり、変数Zが、Z=LRAM(LRAM(Z))であり、
    前記第1のラベル変数にラベル値を付与する度に、次のサブステップ(ss21)〜(ss22)に示す処理を行い、
    (ss21) 行の開始直前、または前の行の終了後に
    Row_Max←LCを実行
    (ss22) 上記(Case2)から(Case8)の何れかに該当する場合にのみ次の処理を実行する
    label>=Row_Maxの場合は
    sub_LC←sub_LC+1,
    sub_LRAM(sub_LC)←label,
    flag(label)←1を実行
    それ以外の場合は flag(label)←1 を実行
    ここで、前記第2の配列がsub_LRAMであり、変数labelが、注目画素に付与したラベル値であり、変数sub_LCは、前記第2の配列の添え字であり、変数Row_Maxが、行の先頭での変数LCの値であり、flagが、同じ行中に新たなラベル値が出現したか否かを判断するための第3の配列であり、
    前記第2のステップが、次のサブステップ(ss31)〜(ss34)に示す処理を行い、
    (ss31) l←1,m←0を実行
    (ss32) k←sub_LRAM(l),
    LRAM(k)←LRAM(LRAM(k))を実行
    k=LRAM(k)かつflag(k)=1の場合はさらに
    m←m+1,
    sub_LRAM(m)←k,
    flag(k)←0を実行
    (ss33) l←l+1を実行
    (ss34) l<=sub_LCの場合はサブステップ(ss32)を実行
    それ以外の場合はsub_LC←mを実行
    ここで、変数lおよび変数mが一時変数であり、変数kが、前記第1の配列の添え字であり、
    前記第3のステップが、次のサブステップ(ss41)〜(ss46)に示す処理を行い、
    (ss41) k←1,j←1を実行
    (ss42) LRAM(k)=kの場合はサブステップ(ss43)を実行
    それ以外の場合はサブステップ(ss44)を実行
    (ss43) LRAM(k)←jを実行
    後処理に j←j+1 を実行し、サブステップ(ss45)を実行
    (ss44) LRAM(k)←LRAM(LRAM(k))を実行
    (ss45) k←k+1を実行
    (ss46) k≦Nの場合はサブステップ(ss42)を実行
    それ以外の場合は終了
    ここで、定数Nが、入力画像内に出現した最大ラベル数であり、変数jがラベル値であることを特徴とする請求項1に記載のラベリング処理方法。
  3. 演算部と記録部とを備え、前記記録部に記録されている画像データで表される入力画像に対して論理マスクをラスタ走査することにより、前記演算部が前記画像データのラベリング処理を行うシステムであって、
    前記論理マスクが、ラベル画像のラベル値を表す第1のラベル変数および第2のラベル変数を含み、前記第1のラベル変数が、前記入力画像内の注目画素が位置する点でのラベル変数であり、前記第2のラベル変数が、前記第1のラベル変数に接続する前記論理マスク内のラベル変数であり、前記第1のラベル変数の初期値が前記画像データの画素値であり、第1の配列が、前記第1のラベル変数と前記第2のラベル変数との間のラベル間連結情報を含み、
    前記演算部が、
    前記画像データ内の画素毎に、前記第1のラベル変数の値と、前記第2のラベル変数のラベル値と、前記ラベル間連結情報とに基づいて、前記第1のラベル変数にラベル値を付与し、前記第1の配列に前記ラベル間連結情報を記録し、前記第1のラベル変数にラベル値を付与する度に、前記注目画素が位置する同じ行中に出現した前記ラベル値のうち、今後も出現する可能性のあるラベル値を、第2の配列に記録することを、前記注目画素が前記入力画像内の行中の最後の画素に達するまで繰り返し実行し、
    前記注目画素が前記入力画像内の行中の最後の画素である場合に、前記ラベル間連結情報および前記第2の配列に記録されている情報に基づいて、同じ行中に出現した前記ラベル値のみを小さい順に統合し、
    前記注目画素が位置する行が、前記入力画像内の最後の行である場合に、前記第1の配列に記録されている前記ラベル間連結情報に基づいて前記ラベル値の変更を行うことを特徴とするラベリング処理システム。
  4. ラベル付け論理回路と、ラベル統合回路と、ラインバッファと、画像メモリとを備え、画像データで表される入力画像に対して論理マスクをラスタ走査することにより、前記画像データのラベリング処理を行う装置であって、
    前記論理マスクが、ラベル画像のラベル値を表す第1のラベル変数および第2のラベル変数を含み、前記第1のラベル変数が、前記入力画像内の注目画素が位置する点でのラベル変数であり、前記第2のラベル変数が、前記第1のラベル変数に接続する前記論理マスク内のラベル変数であり、前記第1のラベル変数の初期値が前記画像データの画素値であり、第1の配列が、前記第1のラベル変数と前記第2のラベル変数との間のラベル間連結情報を含み、
    前記ラベル付け論理回路が、前記画像データ内の画素毎に、前記第1のラベル変数の値と、前記第2のラベル変数のラベル値と、前記ラベル間連結情報とに基づいて、前記第1のラベル変数にラベル値を付与し、前記第1の配列に前記ラベル間連結情報を記録し、前記ラベル付け論理回路が、前記第1のラベル変数にラベル値を付与する度に、前記注目画素が位置する同じ行中に出現した前記ラベル値のうち、今後も出現する可能性のあるラベル値を、第2の配列に記録することを、前記注目画素が前記入力画像内の行中の最後の画素に達するまで繰り返し実行し、
    前記ラベル統合回路が、前記注目画素が前記入力画像内の行中の最後の画素である場合に、前記ラベル間連結情報および前記第2の配列に記録されている情報に基づいて、同じ行中に出現した前記ラベル値のみを小さい順に統合し、
    前記ラベル統合回路が、前記注目画素が位置する行が、前記入力画像内の最後の行である場合に、前記第1の配列に記録されている前記ラベル間連結情報に基づいて前記ラベル値の変更を行うことを特徴とするラベリング処理装置。
  5. コンピュータに画像データのラベリング処理を行わせるプログラムであって、
    論理マスクが、ラベル画像のラベル値を表す第1のラベル変数および第2のラベル変数を含み、前記第1のラベル変数が、入力画像内の注目画素が位置する点でのラベル変数であり、前記第2のラベル変数が、前記第1のラベル変数に接続する前記論理マスク内のラベル変数であり、前記第1のラベル変数の初期値が前記画像データの画素値であり、第1の配列が、前記第1のラベル変数と前記第2のラベル変数との間のラベル間連結情報を含み、
    コンピュータに、
    前記画像データ内の画素毎に、前記第1のラベル変数の値と、前記第2のラベル変数のラベル値と、前記ラベル間連結情報とに基づいて、前記第1のラベル変数にラベル値を付与し、前記第1の配列に前記ラベル間連結情報を記録し、前記第1のラベル変数にラベル値を付与する度に、前記注目画素が位置する同じ行中に出現した前記ラベル値のうち、今後も出現する可能性のあるラベル値を、第2の配列に記録することを、前記注目画素が前記入力画像内の行中の最後の画素に達するまで繰り返し実行する第1の機能と、
    前記注目画素が前記入力画像内の行中の最後の画素である場合に、前記ラベル間連結情報および前記第2の配列に記録されている情報に基づいて、同じ行中に出現した前記ラベル値のみを小さい順に統合する第2の機能と、
    前記注目画素が位置する行が、前記入力画像内の最後の行である場合に、前記第1の配列に記録されている前記ラベル間連結情報に基づいて前記ラベル値の変更を行う第3の機能とを実現させることを特徴とするラベリング処理プログラム。
  6. 演算部と記録部とを備えるシステムにおいて、前記記録部に記録されている画像データで表される入力画像に対して論理マスクをラスタ走査することにより、前記演算部が前記画像データのラベリング処理を行う方法であって、
    前記論理マスクが第1の階層と第2の階層とを含む2階層の論理マスクであり、前記第1の階層が、ラベル画像の実ラベル値を表す第1のラベル変数および第2のラベル変数を含み、前記第2の階層が、左端点ラベル値を表す第3のラベル変数および第4のラベル変数を含み、前記第1のラベル変数が、前記入力画像内の注目画素が位置する点でのラベル変数であり、前記第2のラベル変数が、前記第1のラベル変数に接続する前記論理マスク内のラベル変数であり、前記第1のラベル変数の初期値が前記画像データの画素値であり、前記第3のラベル変数および前記第4のラベル変数の各々が、前記第1のラベル変数および前記第2のラベル変数の各々の位置に対応し、
    第1の配列が、前記第1のラベル変数と前記第2のラベル変数との間の実ラベルの第1のラベル間連結情報を含み、第2の配列が、前記第3のラベル変数と前記第4のラベル変数との間の左端点ラベルの第2のラベル間連結情報を含み、第3の配列が、左端点ラベルと結合する実ラベルの最小値を含み、
    前記演算部が、前記画像データ内の画素毎に、前記第1のラベル変数の値と、前記第4のラベル変数の左端点ラベル値と、前記第1のラベル間連結情報と、前記第2のラベル間連結情報と、前記実ラベルの最小値とに基づいて、前記第1のラベル変数に実ラベル値を付与し、且つ、前記第3のラベル変数に左端点ラベル値を付与し、前記第1の配列、前記第2の配列、および前記第3の配列の各々に、第1のラベル間連結情報、第2のラベル間連結情報、および実ラベルの最小値を各々記録することを、前記入力画像内の全ての画素に対して実行し、前記ラベル画像全体における前記実ラベル値と、前記注目画素が位置する行および前記注目画素が位置する1つ前の行の2行のみにおいて有効な前記左端点ラベル値との2重対を管理する第1のステップと、
    前記演算部が、前記第1の配列に記録されている前記第1のラベル間連結情報に基づいて前記実ラベル値の変更を行う第2のステップとを含むことを特徴とするラベリング処理方法。
  7. 前記第1のラベル変数がラベル変数Pであり、前記第2のラベル変数がラベル変数X,Y,Z,およびUを含み、前記ラベル変数Pが、前記ラベル変数X,Y,Z,およびUの各々と、それぞれ左上、上、右上、および左の位置で接続し、前記第3のラベル変数が左端点ラベル変数P+であり、前記第4のラベル変数が左端点ラベル変数X+,Y+,Z+,およびU+を含み、前記左端点ラベル変数P+が、前記左端点ラベル変数X+,Y+,Z+,およびU+の各々と、それぞれ左上、上、右上、および左の位置で接続し、
    前記第1のステップが、次の(Case1)〜(Case12)に示す場合分け条件の基で前記ラベル変数Pおよび前記ラベル変数Zにラベル値を付与し、且つ、前記左端点ラベル変数P+および前記左端点ラベル変数Z+に左端点ラベル値を付与し、
    (Case1)P=0かつZ+≠0の場合
    LEPT(Z+)←(Z+)
    LEPT_MIN(Z+)←Lmin(Z+),
    Zvector←[(Z+),Lmin(Z+)]を実行
    (Case2)P≠0かつV+=0かつY+=0かつZ+=0の場合
    Pvector←[LLC,LC]
    LEPT(LLC)←LLC,
    LEPT_MIN(LLC)←LC,
    LRAM(LC)←LCを実行
    後処理に (LLC++,LC++) を実行
    (Case3)P≠0かつY+≠0かつsign(Y+)=sign(Row)の場合
    Pvector←Yvectorを実行
    さらに(Z+≠0)の場合は Zvector←[(Z+),Lmin(Z+)] を実行
    (Case4)P≠0かつY+≠0かつsign(Y+)≠sign(Row)の場合
    Pvector←[LLC,Y]
    LEPT(LLC)←LLC,
    LEPT_MIN(LLC)←Y,
    LEPT(Y+)←LLCを実行
    後処理に LLC++ を実行
    さらに(Z+≠0)の場合は Zvector←[(Z+),Lmin(Z+)] を実行
    (Case5)P≠0かつY+=0かつV+≠0かつZ+=0かつsign(V+)=sign(Row)の場合
    Pvector←Vvectorを実行
    (Case6)P≠0かつY+=0かつV+≠0かつZ+=0かつsign(V+)≠sign(Row)の場合
    Pvector←[LLC,V]
    LEPT(LLC)←LLC,
    LEPT_MIN(LLC)←V,
    LEPT(V+)←LLCを実行
    後処理に LLC++ を実行
    (Case7)P≠0かつZ+≠0かつY+=0かつV+=0かつsign((Z+))=sign(Row)の場合
    Pvector←[(Z+),Lmin(Z+)]
    Zvector←[(Z+),Lmin(Z+)]を実行
    (Case8)P≠0かつZ+≠0かつY+=0かつV+=0かつsign((Z+))≠sign(Row)の場合
    Pvector←[LLC,Lmin(Z+)]
    Zvector←[LLC,Lmin(Z+)]
    LEPT(LLC)←LLC,
    LEPT_MIN(LLC)←Lmin(Z+),
    LEPT((Z+))←LLCを実行
    後処理に LLC++ を実行
    (Case9)P≠0かつV+≠0かつZ+≠0かつY+=0かつsign(V+)=sign(Row)かつsign((Z+))=sign(Row)の場合
    Pvector←[(Z+),Lmin(Z+)]
    Zvector←[(Z+),Lmin(Z+)]
    LEPT(V+)←(Z+)
    LEPT_MIN(V+)←Lmin(Z+),
    LRAM(V)←Lmin(Z+)を実行
    (Case10)P≠0かつV+≠0かつZ+≠0かつY+=0かつsign(V+)=sign(Row)かつsign((Z+))≠sign(Row)の場合
    (a)V≧Lmin(Z+)の場合
    Pvector←[V+,Lmin(Z+)]
    Zvector←[V+,Lmin(Z+)]
    LEPT((Z+))←V+,
    LEPT_MIN(V+)←Lmin(Z+),
    LRAM(V)←Lmin(Z+)を実行
    (b)V<Lmin(Z+)の場合
    Pvector←[V+,V]
    Zvector←[V+,V]
    LEPT((Z+))←V+,
    LEPT_MIN((Z+))←V,
    LRAM(Lmin(Z+))←Vを実行
    (Case11)P≠0かつV+≠0かつZ+≠0かつY+=0かつsign(V+)≠sign(Row)かつsign((Z+))=sign(Row)の場合
    Pvector←[(Z+),Lmin(Z+)]
    Zvector←[(Z+),Lmin(Z+)]
    LEPT(V+)←(Z+)
    LEPT_MIN(V+)←Lmin(Z+),
    LRAM(V)←Lmin(Z+)を実行
    (Case12)P≠0かつV+≠0かつZ+≠0かつY+=0かつsign(V+)≠sign(Row)かつsign((Z+))≠sign(Row)の場合
    (a)V≧Lmin(Z+)の場合
    Pvector←[LLC,Lmin(Z+)]
    Zvector←[LLC,Lmin(Z+)]
    LEPT(LLC)←LLC,
    LEPT_MIN(LLC)←Lmin(Z+),
    LEPT(V+)←LLC,
    LEPT((Z+))←LLC,
    LRAM(V)←Lmin(Z+)を実行
    後処理に LLC++ を実行
    (b)V<Lmin(Z+)の場合
    Pvector←[LLC,V]
    Zvector←[LLC,V]
    LEPT(LLC)←LLC,
    LEPT_MIN(LLC)←V,
    LEPT(V+)←LLC,
    LEPT((Z+))←LLC,
    LEPT_MIN((Z+))←V,
    LRAM(Lmin(Z+))←V
    後処理に LLC++ を実行
    ここで、前記第1の配列がLRAMであり、前記第2の配列がLEPTであり、前記第3の配列がLEPT_MINであり、実ラベルの個数を表す変数がLCであり、左端点ラベルの個数を表す変数がLLCであり、変数Vが、V=Max{X,U}であり、変数(Z+)が(Z+)=LEPT(LEPT(Z+))であり、変数Lmin(Z+)がLmin(Z+)=LEPT_MIN(LEPT(Z+))であり、変数V+がV+=((U≠0かつX≠0のとき)U+,(U≠0かつX=0のとき)U+,(U=0かつX≠0のとき)X+,(U=0かつX=0のとき)0)であり、sign(X+)は、左端点ラベル変数X+の符号を表し、sign(Row)は現在行の符号を表し、
    前記第2のステップが、次のサブステップ(ss21)〜(ss26)に示す処理を行い、
    (ss21) k←1,j←1
    (ss22) LRAM(k)=kの場合はサブステップ(ss23)を実行、それ以外の場合はサブステップ(ss24)を実行
    (ss23) LRAM(k)←j
    後処理に j←j+1 を実行し、サブステップ(ss25)を実行
    (ss24) LRAM(k)←LRAM(LRAM(k))
    (ss25) k←k+1
    (ss26) k≦Nの場合はサブステップ(ss22)を実行、それ以外の場合は終了
    ここで、定数Nが、入力画像内に出現した最大ラベル数であり、変数jがラベル値であり、変数kが、前記第1の配列の添え字であることを特徴とする請求項6に記載のラベリング処理方法。
  8. 演算部と記録部とを備え、前記記録部に記録されている画像データで表される入力画像に対して論理マスクをラスタ走査することにより、前記演算部が前記画像データのラベリング処理を行うシステムであって、
    前記論理マスクが第1の階層と第2の階層とを含む2階層の論理マスクであり、前記第1の階層が、ラベル画像の実ラベル値を表す第1のラベル変数および第2のラベル変数を含み、前記第2の階層が、左端点ラベル値を表す第3のラベル変数および第4のラベル変数を含み、前記第1のラベル変数が、前記入力画像内の注目画素が位置する点でのラベル変数であり、前記第2のラベル変数が、前記第1のラベル変数に接続する前記論理マスク内のラベル変数であり、前記第1のラベル変数の初期値が前記画像データの画素値であり、前記第3のラベル変数および前記第4のラベル変数の各々が、前記第1のラベル変数および前記第2のラベル変数の各々の位置に対応し、
    第1の配列が、前記第1のラベル変数と前記第2のラベル変数との間の実ラベルの第1のラベル間連結情報を含み、第2の配列が、前記第3のラベル変数と前記第4のラベル変数との間の左端点ラベルの第2のラベル間連結情報を含み、第3の配列が、左端点ラベルと結合する実ラベルの最小値を含み、
    前記演算部が、
    前記画像データ内の画素毎に、前記第1のラベル変数の値と、前記第4のラベル変数の左端点ラベル値と、前記第1のラベル間連結情報と、前記第2のラベル間連結情報と、前記実ラベルの最小値とに基づいて、前記第1のラベル変数に実ラベル値を付与し、且つ、前記第3のラベル変数に左端点ラベル値を付与し、前記第1の配列、前記第2の配列、および前記第3の配列の各々に、第1のラベル間連結情報、第2のラベル間連結情報、および実ラベルの最小値を各々記録することを、前記入力画像内の全ての画素に対して実行し、前記ラベル画像全体における前記実ラベル値と、前記注目画素が位置する行および前記注目画素が位置する1つ前の行の2行のみにおいて有効な前記左端点ラベル値との2重対を管理し、
    前記第1の配列に記録されている前記第1のラベル間連結情報に基づいて前記実ラベル値の変更を行うことを特徴とするラベリング処理システム。
  9. ラベル付け論理回路と、ラベル統合回路と、ラインバッファと、画像メモリとを備え、画像データで表される入力画像に対して論理マスクをラスタ走査することにより、前記画像データのラベリング処理を行う装置であって、
    前記論理マスクが第1の階層と第2の階層とを含む2階層の論理マスクであり、前記第1の階層が、ラベル画像の実ラベル値を表す第1のラベル変数および第2のラベル変数を含み、前記第2の階層が、左端点ラベル値を表す第3のラベル変数および第4のラベル変数を含み、前記第1のラベル変数が、前記入力画像内の注目画素が位置する点でのラベル変数であり、前記第2のラベル変数が、前記第1のラベル変数に接続する前記論理マスク内のラベル変数であり、前記第1のラベル変数の初期値が前記画像データの画素値であり、前記第3のラベル変数および前記第4のラベル変数の各々が、前記第1のラベル変数および前記第2のラベル変数の各々の位置に対応し、
    第1の配列が、前記第1のラベル変数と前記第2のラベル変数との間の実ラベルの第1のラベル間連結情報を含み、第2の配列が、前記第3のラベル変数と前記第4のラベル変数との間の左端点ラベルの第2のラベル間連結情報を含み、第3の配列が、左端点ラベルと結合する実ラベルの最小値を含み、
    前記ラベル付け論理回路が、前記画像データ内の画素毎に、前記第1のラベル変数の値と、前記第4のラベル変数の左端点ラベル値と、前記第1のラベル間連結情報と、前記第2のラベル間連結情報と、前記実ラベルの最小値とに基づいて、前記第1のラベル変数に実ラベル値を付与し、且つ、前記第3のラベル変数に左端点ラベル値を付与し、前記第1の配列、前記第2の配列、および前記第3の配列の各々に、第1のラベル間連結情報、第2のラベル間連結情報、および実ラベルの最小値を各々記録することを、前記入力画像内の全ての画素に対して実行し、前記ラベル画像全体における前記実ラベル値と、前記注目画素が位置する行および前記注目画素が位置する1つ前の行の2行のみにおいて有効な前記左端点ラベル値との2重対を管理し、
    前記ラベル統合回路が、前記第1の配列に記録されている前記第1のラベル間連結情報に基づいて前記実ラベル値の変更を行うことを特徴とするラベリング処理装置。
  10. コンピュータに画像データのラベリング処理を行わせるプログラムであって、
    論理マスクが第1の階層と第2の階層とを含む2階層の論理マスクであり、前記第1の階層が、ラベル画像の実ラベル値を表す第1のラベル変数および第2のラベル変数を含み、前記第2の階層が、左端点ラベル値を表す第3のラベル変数および第4のラベル変数を含み、前記第1のラベル変数が、入力画像内の注目画素が位置する点でのラベル変数であり、前記第2のラベル変数が、前記第1のラベル変数に接続する前記論理マスク内のラベル変数であり、前記第1のラベル変数の初期値が前記画像データの画素値であり、前記第3のラベル変数および前記第4のラベル変数の各々が、前記第1のラベル変数および前記第2のラベル変数の各々の位置に対応し、
    第1の配列が、前記第1のラベル変数と前記第2のラベル変数との間の実ラベルの第1のラベル間連結情報を含み、第2の配列が、前記第3のラベル変数と前記第4のラベル変数との間の左端点ラベルの第2のラベル間連結情報を含み、第3の配列が、左端点ラベルと結合する実ラベルの最小値を含み、
    コンピュータに、
    前記画像データ内の画素毎に、前記第1のラベル変数の値と、前記第4のラベル変数の左端点ラベル値と、前記第1のラベル間連結情報と、前記第2のラベル間連結情報と、前記実ラベルの最小値とに基づいて、前記第1のラベル変数に実ラベル値を付与し、且つ、前記第3のラベル変数に左端点ラベル値を付与し、前記第1の配列、前記第2の配列、および前記第3の配列の各々に、第1のラベル間連結情報、第2のラベル間連結情報、および実ラベルの最小値を各々記録することを、前記入力画像内の全ての画素に対して実行し、前記ラベル画像全体における前記実ラベル値と、前記注目画素が位置する行および前記注目画素が位置する1つ前の行の2行のみにおいて有効な前記左端点ラベル値との2重対を管理する第1の機能と、
    前記第1の配列LRAMに記録されている前記第1のラベル間連結情報に基づいて前記実ラベル値の変更を行う第2の機能とを実現させることを特徴とするラベリング処理プログラム。
JP2009202922A 2009-09-02 2009-09-02 ラベリング処理方法、並びにそのシステム、装置及びプログラム Expired - Fee Related JP5300666B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2009202922A JP5300666B2 (ja) 2009-09-02 2009-09-02 ラベリング処理方法、並びにそのシステム、装置及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009202922A JP5300666B2 (ja) 2009-09-02 2009-09-02 ラベリング処理方法、並びにそのシステム、装置及びプログラム

Publications (2)

Publication Number Publication Date
JP2011053965A JP2011053965A (ja) 2011-03-17
JP5300666B2 true JP5300666B2 (ja) 2013-09-25

Family

ID=43942892

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009202922A Expired - Fee Related JP5300666B2 (ja) 2009-09-02 2009-09-02 ラベリング処理方法、並びにそのシステム、装置及びプログラム

Country Status (1)

Country Link
JP (1) JP5300666B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2503293B1 (en) * 2011-03-22 2015-05-20 Harman Becker Automotive Systems GmbH Labelling of map elements in digital maps

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01245366A (ja) * 1988-03-28 1989-09-29 Toshiba Eng Co Ltd ラベリングプロセッサ

Also Published As

Publication number Publication date
JP2011053965A (ja) 2011-03-17

Similar Documents

Publication Publication Date Title
KR102326165B1 (ko) 영상 처리 방법 및 이를 이용한 표시 장치
JP2013114655A (ja) 画像処理装置、画像処理方法、及びコンピュータプログラム
JP5300666B2 (ja) ラベリング処理方法、並びにそのシステム、装置及びプログラム
JP2023511868A (ja) 画像処理のためのシステム、方法、および装置
CN108876701B (zh) 一种基于游程的单次扫描连通域标记方法及其硬件结构
JP2007293829A (ja) 画像処理方法及び画像処理装置
EP0569657B1 (en) Apparatus for detection and correction of digitized image defects
Kim et al. Real-time component labeling and boundary tracing system based on FPGA
JP3652754B2 (ja) 減色画像処理装置
KR960003871B1 (ko) 레이블링 방법 및 이것에 사용하는 장치
JP2008186124A (ja) 画像データ処理方法、画像データ処理プログラム及び画像データ処理装置
JP2007122594A (ja) 画像処理装置
JP4720805B2 (ja) 画像処理装置及びプログラム
WO2006077504A2 (en) An algorithm for growing 4-connected cores in image segmentation
JP2002269574A (ja) 囲み領域抽出アルゴリズムの性能を向上させるランレングスに基づく連結成分と輪郭追跡
JP2008186123A (ja) 画像データ処理方法、画像データ処理プログラム及び画像データ処理装置
JPH0962845A (ja) 画像デ−タのラベリング方法
JPS5914782B2 (ja) 2値パタ−ンの数値化処理方式
JPH0332723B2 (ja)
CN117544734A (zh) 一种基于rgb三原色图像的有损压缩的方法
JP3297145B2 (ja) パターン欠陥検査装置
JP2006091790A (ja) パターン検査方法
JP2020013225A (ja) 高画質化学習装置および高画質化装置
CN118071981A (zh) 一种fpga芯片及基于该芯片的弱小目标检测与质心提取方法
TWI488142B (zh) 應用於向量圖形點陣化之階層式緩衝器之運算方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120730

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130517

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130528

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130618

R150 Certificate of patent or registration of utility model

Ref document number: 5300666

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees