説明

ラベリング処理装置及びラベリング処理方法

【課題】ラベリング処理を高速化する。
【解決手段】第1のプロセッサは、2値化された画像データP1において注目画素Aを主走査方向であるX軸方向及び副走査方向であるY軸方向に走査させる。そして、第1のプロセッサは、注目画素Aが2値のうちの一方の値「1」の画素である場合に、注目画素Aに一時的に仮ラベル番号を付与する仮ラベル付処理を実行する。その際、第1のプロセッサは、注目画素の主走査方向の走査を1ライン終える度に、1ライン全ての画素が2値のうちの他方の値であるか否かを判断する。第2のプロセッサは、1ライン全ての画素が他方の値であると判断されたとき、仮ラベル付処理と並行して、一方の値の画素が連結してなる連結領域の各画素に付与された仮ラベル番号を、連結領域毎に異なる本ラベル番号に置き換える本ラベル付処理を実行する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、2値化された画像データにおいて2値のうちの一方の値の画素に仮ラベル番号を付与し、一方の値の画素が連結してなる連結領域の各画素に付与された仮ラベル番号を本ラベル番号に変換するラベリング処理装置及びラベリング処理方法に関する。
【背景技術】
【0002】
画像処理では、H値(1の値)、L値(0の値)の2値画像に対して、連続する同一画素値の画素で形成される連結領域(画素集合体)を検出し、各連結領域に各ラベル番号を付与していくラベリング処理が行われている(非特許文献1参照)。この2値画像に対してラベリング処理を行う方法は、まず連結領域の各画素に仮ラベル番号付けを行う。そして、仮ラベル番号から本ラベル番号に番号を割り当て直すことでラベリング処理が終了する。以下、このラベリング処理について詳細に説明する。
【0003】
図10は、従来のラベリング処理を説明するための図であり、L値の背景画素の中に、H値を持った連結領域が3つ存在する場合を示している。図10(a)に示すように、仮ラベル付けでは、注目画素Aに対し上の周辺画素Bと左の周辺画素Cの3画素を抽出する。そして、注目画素Aの画素値がL値であれば、そのまま仮ラベル番号は付与しない。注目画素AがH値であり、且つ周辺画素B、CがL値であれば、注目画素Aに新しい仮ラベル番号を付与する。注目画素AがH値であり、且つ周辺画素B、Cのどちらかに仮ラベル番号が振られていれば、注目画素Aにその割り振られている仮ラベル番号を付与する。注目画素AがH値であり、且つ周辺画素B、Cに異なる仮ラベル番号が付与されていれば、注目画素Aに小さな番号の仮ラベル番号を付与し、周辺画素B、Cが同じ領域であることを記憶しておく。画像全体に対して注目画素Aを走査し、上記処理を行うことにより、図10(b)に示す仮ラベル画像ができる。
【0004】
次に、同一の連結領域に付けられた異なる仮ラベル番号を同一のラベル番号に整理し、本ラベル付けを行う。本ラベル付けでは、仮ラベル画像から注目画素を抽出し、仮ラベル番号から本ラベル番号にラベル番号を割り当て直して行く。以上の処理により、図10(c)に示すような本ラベル画像ができる。本ラベル画像では、同一の連結領域の各画素に同じラベル番号が付与されており、ラベリング処理後の正常な状態を示している。
【先行技術文献】
【非特許文献】
【0005】
【非特許文献1】八木伸行監修、映像メディア学会編、「ディジタル画像処理」、オーム社出版(平成12年4月25日)
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、上記の従来のラベリング処理では、画像全体の仮ラベル付処理が終了した後に本ラベル付処理を行っていたため、処理に時間を要しており、ラベリング処理の高速化が望まれていた。
【0007】
そこで、本発明は、ラベリング処理を高速化することのできるラベリング処理装置及びラベリング処理方法を提供することを目的とするものである。
【課題を解決するための手段】
【0008】
本発明は、2値化された画像データにおいて注目画素を主走査方向及び前記主走査方向と直交する副走査方向に走査させて、前記注目画素が2値のうちの一方の値の画素である場合に、前記注目画素に一時的に仮ラベル番号を付与する仮ラベル付処理を実行する仮ラベル付手段と、前記仮ラベル付手段による前記注目画素の主走査方向の走査を1ライン終える度に、1ライン全ての画素が2値のうちの他方の値であるか否かを判断する判断手段と、前記判断手段により1ライン全ての画素が前記他方の値であると判断されたとき、前記仮ラベル付手段による前記仮ラベル付処理と並行して、前記一方の値の画素が連結してなる連結領域の各画素に付与された仮ラベル番号を、連結領域毎に異なる本ラベル番号に置き換える本ラベル付処理を実行する本ラベル付手段と、を備えたことを特徴とする。
【0009】
また、本発明は、2値化された画像データにおいて注目画素を主走査方向及び前記主走査方向と直交する副走査方向に走査させて、前記注目画素が2値のうちの一方の値の画素である場合に、前記注目画素に一時的に仮ラベル番号を付与する仮ラベル付処理を実行する仮ラベル付工程と、前記仮ラベル付工程にて前記注目画素の主走査方向の走査を1ライン終える度に、1ライン全ての画素が2値のうちの他方の値であるか否かを判断する判断工程と、前記判断工程にて1ライン全ての画素が前記他方の値であると判断されたとき、前記仮ラベル付工程における前記仮ラベル付処理と並行して、前記一方の値の画素が連結してなる連結領域の各画素に付与された仮ラベル番号を、連結領域毎に異なる本ラベル番号に置き換える本ラベル付処理を実行する本ラベル付工程と、を備えたことを特徴とする。
【発明の効果】
【0010】
本発明によれば、2値化された画像データにおいて1ライン全ての画素が2値のうちの他方の値であるか否かを判断することにより、一方の値の画素が連結してなる連結領域の外周端を見極めている。そして、1ライン全ての画素が他方の値であると判断したときには、既に仮ラベル番号が付与された連結領域に対して本ラベル番号を付与する本ラベル付処理を実行する。この本ラベル付処理は、画像データの未走査領域における残りの連結領域に仮ラベル番号を付与する仮ラベル付処理と並行して行われる。このように、画像全体の仮ラベル付処理が終了するのを待たずに、本ラベル付処理を行うことができるので、従来の方法に比べてラベリング処理が高速化する。
【図面の簡単な説明】
【0011】
【図1】本発明の第1実施形態に係るラベリング処理装置の概略構成を示す説明図であり、(a)はラベリング処理装置全体を示す図、(b)はラベリング処理装置の画像処理部を示す図である。
【図2】画像データを示す図であり、(a)はカメラから取り込んだ入力画像データを示す図、(b)は入力画像データに2値化処理を施して得られた2値化画像データを示す図である。
【図3】本発明の第1実施形態のラベリング処理を説明するための図であり、(a)は2値化画像データに対して注目画素を走査し、仮ラベル付処理を行っている図、(b)は作成された仮ラベル画像データを示す図である。(c)は作成された接続関連テーブル及び本ラベル変換テーブルを示す図、(d)は作成された本ラベル画像データを示す図である。
【図4】本発明の第1実施形態のCPUの処理を示すフローチャートであり、(a)は第1のプロセッサの処理を示すフローチャート、(b)は第1のプロセッサの仮ラベル付処理を示すフローチャート、(c)は第2のプロセッサの処理を示すフローチャートである。
【図5】本発明の第1実施形態のラベリング処理の別の例を説明するための図であり、(a)は座標y1=a1まで仮ラベル付処理を行った図、(b)は座標y1=a2まで仮ラベル付処理を行い、座標y1=a1まで本ラベル付処理を行った図である。(c)は、最後まで仮ラベル付処理を行い、座標y1=a2まで本ラベル付処理を行った図である。(d)は最後まで本ラベル付処理を行った図である。
【図6】本発明の第2実施形態のラベリング処理を説明するための図であり、(a)は2値化画像データに対して注目画素を走査し、仮ラベル付処理を行っている図、(b)は作成された仮ラベル画像データを示す図である。(c)は作成された接続関連テーブル及び本ラベル変換テーブルを示す図、(d)は作成された本ラベル画像データを示す図である。
【図7】本発明の第2実施形態のCPUの処理を示すフローチャートであり、(a)は第1のプロセッサの処理を示すフローチャート、(b)は第1のプロセッサの仮ラベル付処理を示すフローチャート、(c)は第2のプロセッサの処理を示すフローチャートである。
【図8】本発明の第3実施形態のラベリング処理を説明するための図であり、(a)は2値化画像データに対して注目画素を走査し、仮ラベル付処理を行っている図、(b)は作成された仮ラベル画像データを示す図である。(c)は作成された接続関連テーブル及び本ラベル変換テーブルを示す図、(d)は作成された本ラベル画像データを示す図である。(e)は注目画素の主走査方向がY軸方向である場合の周辺画素を示す図である。
【図9】本発明の第3実施形態の第1のプロセッサの仮ラベル付処理を示すフローチャートである。
【図10】従来のラベリング処理を説明するための図であり、(a)は2値化画像データに対して注目画素を走査し、仮ラベル付処理を行っている図、(b)は作成された仮ラベル画像データを示す図、(c)は作成された本ラベル画像データを示す図である。
【発明を実施するための形態】
【0012】
以下、本発明を実施するための形態を、図面を参照しながら詳細に説明する。
【0013】
[第1実施形態]
図1は、本発明の第1実施形態に係るラベリング処理装置の概略構成を示す説明図である。図1(a)に示すように、ラベリング処理装置100は、カメラ11と、カメラ11により撮像されて得られた画像データを入力して画像処理を行う画像処理部12とを備えている。カメラ11は、不図示のレンズ及びレンズにより形成された光像を撮像信号に変換して画像データとして出力する撮像素子を有しており、底盤14上に載置された撮像対象であるプリント基板13を撮像する。
【0014】
画像処理部12は、図1(b)に示すように、CPU3、メモリ4、バス5、不図示のHDDからなるコンピューターシステムにより構成される。CPU3は、2つの演算プロセッサである第1のプロセッサ6及び第2のプロセッサ7を有し、それぞれのプロセッサ6,7が独立してメモリアクセスや演算処理を行うことができる。つまり、CPU3は、2つのプロセッサ6,7を有しているので、並列処理が可能である。
【0015】
メモリ4は、各種画像データを記憶する画像記憶手段としての画像記憶部8と、特定の座標情報を記憶する座標記憶手段としての座標記憶部9と、接続関連テーブル及び本ラベル変換テーブルを記憶するテーブル記憶部10とを有する。画像記憶部8、座標記憶部9及びテーブル記憶部10は、メモリ4において割り振られた記憶領域を示している。CPU3はバス5を介してメモリ4のデータにアクセスすることができる。
【0016】
なお、メモリ4にはCPU3にラベリング処理を実行させるためのプログラムが格納され、CPU3がプログラムを実行することによりラベリング処理を実行するように構成されている。
【0017】
次に、ラベリング処理装置100の動作の概略について説明する。第1のプロセッサ6は、カメラ11に撮像動作させて、図2(a)に示すようなプリント基板13を含む入力画像データP0を取り込み、画像記憶部8に記憶させる撮像処理を実行する。そして第1のプロセッサ6は、入力画像データP0を画像記憶部8から取り出し、各画素値が所定の閾値より小さければ0の値、大きければ1の値として、入力画像データP0を、図2(b)に示すような2値化した画像データP1に書き換える2値化処理を実行する。これにより、画像データP1における、プリント基板13上の抽出対象物15に対応する画素が「0,1」の2値のうち「1」の値(一方の値)となり、それ以外の画素が、「0,1」の2値のうち「0」の値(他方の値)となる。なお、抽出対象物15に対応する画素が「0,1」の2値のうち「0」の値(一方の値)となり、それ以外の画素が、「0,1」の2値のうち「1」の値(他方の値)となるように、入力画像データを2値化してもよい。ここでは、一方の値が「1」、他方の値が「0」の場合について説明する。
【0018】
図3は、第1実施形態のラベリング処理を説明するための図である。なお、図3(a)において、2値化された画像データP1における一方の値「1」の画素以外の画素が、他方の値「0」の画素である。
【0019】
第1のプロセッサ6は、図3(a)に示すように、2値化された画像データP1において注目画素Aを主走査方向(X軸方向)及び主走査方向と直交する副走査方向(Y軸方向)に、座標(0,0)から座標(m,n)まで走査(所謂、ラスタ走査)させる。なお、本第1実施形態では、主走査方向を画像データの横軸であるX軸方向とし、副走査方向を画像データの縦軸であるY軸方向とした。
【0020】
第1のプロセッサ6は、画像データP1において注目画素Aを走査することにより、一方の値「1」である画素に対して仮ラベル番号を付与する仮ラベル付処理を1画素ずつ順次実行し、図3(b)に示す仮ラベル画像データP2を作成する。また、第1のプロセッサ6は、この仮ラベル画像データP2を作成する際に、異なる仮ラベル番号が付与された互いに隣接する画素が同一のラベル番号であることを示す図3(c)に示す接続関連テーブル1を作成する。なお、図3(b)では、仮ラベル画像データP2が作成完了した状態を図示している。また、図3(c)に示す接続関連テーブル1も、作成完了した状態を示している。この接続関連テーブル1において、一方の(左列)データは、割り当てた仮ラベル番号を示し、これに対応付けた他方の(右列)データは、左列データの仮ラベル番号と同じ連結領域(画素集合体)に属している仮ラベル番号を示している。
【0021】
ここで、第1のプロセッサ6は、仮ラベル画像データP2の作成中に1ライン(1行)全ての画素が他方の値「0」であるのを検出したら、その行の副走査方向(Y軸方向)の座標情報である座標y1を座標記憶部9に上書き記憶させる。なお、座標y1の初期値は0であり、その値が更新されることとなる。
【0022】
第2のプロセッサ7は、座標記憶部9に記憶された座標y1が更新されたら、第1のプロセッサ6の仮ラベル付処理と並行して、仮ラベル番号と本ラベル番号とを対応付けた図3(c)に示す本ラベル変換テーブル2を作成する。
【0023】
そして、第2のプロセッサ7は、仮ラベル画像データP2において仮ラベル付用の注目画素(不図示)を走査する。そして、第2のプロセッサ7は、本ラベル変換テーブル2を参照して、仮ラベル番号を本ラベル番号に変換し、図3(d)に示す本ラベル画像データP3を、座標y1の画素まで作成する。これらの動作は、座標記憶部9に記憶された座標情報である座標y1がnとなるまで行われる。
【0024】
なお、これら画像データP2、P3は、画像データP1とは別に作成してもよいし、画像データP1の各画素に、画像データP2,P3の各画素の情報(仮ラベル番号、本ラベル番号)を付加するようにしてもよい。
【0025】
以上、2つのプロセッサ6,7によるラベリング処理についての概略を説明したが、以下、各プロセッサ6,7によるラベリング処理の動作について具体的に説明する。図4は、CPU3の処理を示すフローチャートであり、図4(a)及び図4(b)は第1のプロセッサ6の処理を示すフローチャートである。図4(c)は第2のプロセッサ7の処理を示すフローチャートである。まず、第1のプロセッサ6の処理について説明する。
【0026】
図4(a)において、まず、第1のプロセッサ6は、上述した撮像処理を実行する(S1:撮像工程)。次に、第1のプロセッサ6は、上述した2値化処理を実行する(S2:2値化処理工程)。なお、これらステップS1,S2の処理は、第2のプロセッサ7が行ってもよいし、第1のプロセッサ6及び第2のプロセッサ7が処理を分担して行ってもよい。また、CPU3で2値化処理する場合に限らず、外部から2値化処理済みの画像データを入力する場合であってもよい。
【0027】
第1のプロセッサ6は、このようにして得られた画像データP1(図3(a))に対して、注目画素Aを走査させる。そして、第1のプロセッサ6は、注目画素Aが一方の値「1」である場合に、注目画素Aに一時的に仮ラベル番号を付与する仮ラベル付処理を実行する(S3:仮ラベル付手段、仮ラベル付工程)。
【0028】
以下、仮ラベル付処理動作について図4(b)を参照しながら、具体的に説明する。まず、第1のプロセッサ6は、注目画素Aを、座標(0,0)、(1,0)、…、(m,0)、(0,1)…と、順次走査させていく。その走査中に、第1のプロセッサ6は、注目画素Aが他方の値「0」であるか否かを判断する(S3−1)。
【0029】
第1のプロセッサ6は、注目画素Aが他方の値「0」である場合(S3−1:Yes)には、仮ラベル番号は付与せずにそのままとする(S3−2)。第1のプロセッサ6は、注目画素Aが他方の値ではない(つまり一方の値「1」である)場合(S3−1:No)には、注目画素Aに隣接し、かつ既に走査済みである周辺画素B,Cが他方の値「0」であるか否かを判断する(S3−3)。なお、本第1実施形態では、注目画素Aに隣接する4方向の4つの画素のうち、既に走査済みである2つの画素B,Cを用いて判断するようにしている。
【0030】
そして、第1のプロセッサ6は、周辺画素B,Cが他方の値「0」であると判断した場合(S3−3:Yes)、注目画素Aに新しい仮ラベル番号を付与する(S3−4)。例えば、図3(b)において、仮ラベル画像データP2の画素p1〜p3には、昇べきの順に新しい仮ラベル番号「1」、「2」、「3」がそれぞれ付与されている。第1のプロセッサ6は、周辺画素B,Cの少なくとも1つの画素が一方の値「1」であると判断した場合(S3−3:No)、周辺画素B,Cのうちの仮ラベル番号が付与された周辺画素に、1種類のみの仮ラベル番号が付与されているか否かを判断する(S3−5)。
【0031】
そして、第1のプロセッサ6は、1種類のみの仮ラベル番号が付与されていると判断した場合(S3−5:Yes)、注目画素Aにその周辺画素B又はCに割り振られている仮ラベル番号を付与する(S3−6)。例えば、図3(b)において、仮ラベル画像データP2の画素p4には仮ラベル番号「1」、画素p5〜p7には仮ラベル番号「2」、画素p8、p9には、仮ラベル番号「3」が付与される。また、画素p10、p11には、仮ラベル番号「2」が付与される。
【0032】
また、第1のプロセッサ6は、複数種類の(つまり、異なる)仮ラベル番号が付与されていると判断した場合(S3−5:No)、注目画素Aに小さい方の仮ラベル番号を付与する。そして、第1のプロセッサ6は、複数の仮ラベル番号が同一の連結領域(画素集合体)に含まれることを示す接続関連テーブル1を作成し、接続関連テーブル1をテーブル記憶部10に記憶させる(S3−7)。例えば、図3(b)において、画素p12には、周辺画素の仮ラベル番号が「1」、「2」であるので、仮ラベル番号「1」が付与される。次いで、図3(c)に示す接続関連テーブル1において、仮ラベル番号「2」が、仮ラベル番号「1」と同一の連結領域であることを示す対応関係を追加し、テーブル記憶部10に記憶させる。画素p13,p14についても同様である。
【0033】
次に、第1のプロセッサ6は、ステップS3にて画像データP1における注目画素Aの主走査方向(X軸方向)の走査を1ライン終える度に、1ライン全ての画素が2値のうちの他方の値「0」であるか否かを判断する(S4:判断手段、判断工程)。つまり第1のプロセッサ6は、注目画素Aが1行連続で他方の値「0」であるか否かを判断する。
【0034】
次に、第1のプロセッサ6は、注目画素Aが1行連続で「0」の値であると判断した場合(S4:Yes)、その行の座標情報である座標y1を座標記憶部9に上書き記憶させる(S5:座標記憶工程)。つまり、第1のプロセッサ6は、1ライン全ての画素が他方の値「0」であると判断された画像データP1における副走査方向の座標y1を、座標記憶部9に上書き記憶させる。なお、座標y1の初期値は0であり、この値が上書き変更されることで、座標情報が更新されたこととなる。
【0035】
第1のプロセッサ6は、注目画素Aが1行連続で「0」の値ではないと判断した場合(S4:No)、又は座標記憶部9の座標情報が更新された場合(S5)、画像データP1の全画素に注目画素Aを走査させたか否かを判断する(S6)。つまり、画像データにおける注目画素Aの走査が完了(仮ラベル付処理が完了)したか否かを判断する。第1のプロセッサ6は、注目画素Aの走査が完了していれば(S6:Yes)、処理を終了し、注目画素Aの走査が完了していなければ(S6:No)、ステップS3の処理に移行し、次の画素に注目画素Aを走査させ、仮ラベル付処理を続行する。
【0036】
次に、第2のプロセッサ7の動作について説明する。まず、第2のプロセッサ7は、座標記憶部9に記憶された座標情報である座標y1の更新があったか否かを判断する(S11)。第2のプロセッサ7は、座標記憶部9に記憶された座標情報の更新がないと判断した場合(S11:No)は、更新があるまで待ち受ける待機状態となる。
【0037】
第2のプロセッサ7は、更新があったと判断した場合(S11:Yes)、つまり、第1のプロセッサ6のステップS4の判断処理にて1ライン全ての画素が他方の値「0」であると判断された場合、以下の処理を実行する。この第2のプロセッサ7における以下の処理は、第1のプロセッサ6による仮ラベル付処理と並行して実行される。
【0038】
まず、第2のプロセッサ7は、接続関連テーブル1を参照して、一方の値「1」の画素が連結してなる連結領域の各画素に付与された仮ラベル番号を、連結領域毎に異なる本ラベル番号に置き換える本ラベル変換テーブル2(図4(c))を作成する(S12)。つまり、第2のプロセッサ7は、接続関連テーブル1を参照し、仮ラベル番号と本ラベル番号とを対応付けた本ラベル変換テーブル2を作成する。この本ラベル変換テーブル2は、テーブル記憶部10に記憶される。例えば、図3(c)の接続関連テーブル1の一方(左列)のデータである仮ラベル番号に対応する他方(右列)のデータを参照し、その番号が「0」であれば、当該仮ラベル番号に、新しい本ラベル番号を昇べきの順に割り当て、本ラベル変換テーブル2を作成する。接続関連テーブル1の仮ラベル番号に対応付けられた番号が「0」よりも大きい番号であれば、その番号の仮ラベル番号に対応付けた本ラベル番号と同一の番号を対応付け、本ラベル変換テーブル2に追加する。具体的には、接続関連テーブル1を参照すると、仮ラベル番号「1」、「2」、「3」が同一の連結領域であることが関連付けられている。したがって、仮ラベル番号「1」、「2」、「3」に本ラベル番号「1」が対応付けられ、本ラベル変換テーブル2が作成される。
【0039】
次に、第2のプロセッサ7は、仮ラベル画像データP2に注目画素(不図示)を走査させて仮ラベル番号が付与された画素を抽出し、本ラベル変換テーブル2を参照して、仮ラベル番号に対応付けされた本ラベル番号に変換する(S13)。具体的には、注目画素が0であればそのまま、仮ラベル番号が付与されていれば本ラベル変換テーブル2を基に、本ラベル番号に付与し直す。これにより、本ラベル画像データP3を作成する。つまり、第2のプロセッサ7は、一方の値「1」の画素が連結してなる連結領域の各画素に付与された仮ラベル番号を、連結領域毎に異なる本ラベル番号に置き換える本ラベル付処理を実行する(本ラベル付手段、本ラベル付工程)。
【0040】
第2のプロセッサ7は、仮ラベル画像データP2において注目画素を左上の座標(0,0)からX軸方向を主走査方向、Y軸方向を副走査方向として走査していくが、座標y1の行まで走査が完了したか否かを判断する(S14)。第2のプロセッサ7は、完了していなければ(S14:No)、ステップS13の本ラベル付処理を続行する。第2のプロセッサ7は、完了していれば(S14:Yes)、画像全体で本ラベル付処理が完了したか否かを判断する(S15)。第2のプロセッサ7は、完了していれば(S15:Yes)、第2のプロセッサ7の処理動作を終了し、完了していなければ(S15:No)ステップS11の判断処理に移行する。
【0041】
第1のプロセッサ6及び第2のプロセッサ7によるラベリング処理動作について、更に別の例を挙げて説明する。図5は、ラベリング処理の別の例を説明するための図である。この図5には、他方の値「0」の背景の中に、一方の値「1」を持った連結領域が3つ存在する画像データを示している。なお、接続関連テーブル及び本ラベル変換テーブルの作図は省略しているが、実際は、第1のプロセッサ6が接続関連テーブルを作成し、第2のプロセッサ7が本ラベル変換テーブルを作成している。
【0042】
まず、図5(a)に示すように、第1のプロセッサ6が、画像データの座標(0,0)から仮ラベル付処理を行う。なおこの場合も、画像データの走査終了する座標は、(m,n)とする。副走査方向であるY軸方向の座標y1=a0までは、連結領域は存在しないが、仮ラベル付処理及び本ラベル付処理は実行される。
【0043】
次に、Y軸方向の座標y1=a1で1つ目の連結領域の外周端がわかるため、図5(b)に示すように、座標y1=a0+1から座標y1=a1の位置まで第2のプロセッサ7が本ラベル付処理(本ラベル画像データを作成する処理)を行う。このとき、第1のプロセッサ6は並行して次の領域の仮ラベル付処理を行う。ここで、座標記憶部9に記憶された座標情報である座標y1=a1が更新されなければ、第2のプロセッサ7は、座標y1=a1の位置まで本ラベル付処理が終了した時点で、座標記憶部9に記憶された座標y1の更新を待つ待機状態となる。
【0044】
次に、図5(b)に示すように、Y軸方向の座標y1=a2で再び連結領域の外周端を確認すれば、図5(c)に示すように、第2のプロセッサ7は、座標y1=a1+1から座標y1=a2まで本ラベル付処理(本ラベル画像データを作成する処理)を行う。つまり、座標y1=a1の位置まで作成して中断していた本ラベル画像データの作成作業を再開する。このとき、第2のプロセッサ7は並行して次の領域で仮ラベル付処理を行う。
【0045】
最後に図5(d)に示すように、座標y1=n、つまり画像全体で第2のプロセッサ7による本ラベル付処理が終了すれば、ラベリング処理の完了となる。
【0046】
以上、本第1実施形態によれば、2値化された画像データP1において1行全ての画素が2値のうちの他方の値「0」であるか否かを判断することにより、一方の値「1」の画素が連結してなる連結領域の外周端を見極めている。そして、1行全ての画素が他方の値「0」であると判断したときには、既に仮ラベル番号が付与された連結領域に対して本ラベル番号を付与する本ラベル付処理を実行する。この本ラベル付処理は、画像データP1の未走査領域における残りの連結領域に仮ラベル番号を付与する仮ラベル付処理と並行して行われる。このように、画像全体の仮ラベル付処理が終了するのを待たずに、本ラベル付処理を行うことができるので、従来の方法に比べてラベリング処理が高速化する。
【0047】
[第2実施形態]
次に、本発明の第2実施形態に係るラベリング処理装置によるラベリング処理の動作について説明する。なお、ラベリング処理装置の構成は、上記第1実施形態における図1のラベリング処理装置の構成と同様であり、本第2実施形態では同一の符号を付して説明する。
【0048】
上記第1実施形態では、注目画素Aの主走査方向がX軸方向であり、副走査方向がY軸方向である場合について説明したが、画像データにおけるラベリング対象の状況に応じて、注目画素Aの主走査方向をY軸方向、副走査方向をX軸方向としてもよい。本第2実施形態では、注目画素Aの主走査方向をY軸方向、副走査方向をX軸方向とした場合について説明する。
【0049】
図6は、ラベリング処理により本ラベル番号を付与する動作を説明するための図である。なお、図6(a)において、2値化された画像データP1における他方の値「0」の画素は、一方の値「1」の画素以外の画素である。
【0050】
第1のプロセッサ6は、図6(a)に示すように、2値化された画像データP1において注目画素Aを主走査方向(Y軸方向)及び主走査方向と直交する副走査方向(X軸方向)に、座標(0,0)から座標(m,n)まで走査させる。
【0051】
第1のプロセッサ6は、画像データP1において注目画素Aを走査することにより、一方の値「1」である画素に対して仮ラベル番号を付与する仮ラベル付処理を1画素ずつ順次実行し、図6(b)に示す仮ラベル画像データP2を作成する。また、第1のプロセッサ6は、この仮ラベル画像データP2を作成する際に、異なる仮ラベル番号が付与された互いに隣接する画素が同一のラベル番号であることを示す図6(c)に示す接続関連テーブル17を作成する。なお、図6(b)では、仮ラベル画像データP2が作成完了した状態を図示している。また、図6(c)に示す接続関連テーブル17も、作成完了した状態を示している。
【0052】
ここで、第1のプロセッサ6は、仮ラベル画像データP2の作成中に1ライン(1列)全ての画素が他方の値「0」であるのを検出したら、その列の副走査方向(X軸方向)の座標情報である座標x1を座標記憶部9に上書き記憶させる。なお、座標x1の初期値は0であり、その値が更新されることとなる。
【0053】
第2のプロセッサ7は、座標記憶部9に記憶された座標x1が更新されたら、第1のプロセッサ6の仮ラベル付処理と並行して、仮ラベル番号と本ラベル番号とを対応付けた図6(c)に示す本ラベル変換テーブル18を作成する。
【0054】
そして、第2のプロセッサ7は、仮ラベル画像データP2において仮ラベル用の注目画素(不図示)を走査する。そして、第2のプロセッサ7は、本ラベル変換テーブル18を参照して、仮ラベル番号を本ラベル番号に変換し、図6(d)に示す本ラベル画像データP3を、座標x1の画素まで作成する。これらの動作は、座標記憶部9に記憶された座標情報である座標x1がmとなるまで行われる。
【0055】
以上、2つのプロセッサ6,7によるラベリング処理についての概略を説明したが、以下、各プロセッサ6,7によるラベリング処理の動作について具体的に説明する。図7は、CPU3の処理動作を示すフローチャートであり、図7(a)及び図7(b)は第1のプロセッサ6の処理動作を示すフローチャートである。図7(c)は第2のプロセッサ7の処理動作を示すフローチャートである。まず、第1のプロセッサ6の動作について説明する。
【0056】
図7(a)において、まず、第1のプロセッサ6は、撮像処理を実行する(S21:撮像工程)。次に、第1のプロセッサ6は、2値化処理を実行する(S22:2値化処理工程)。なお、これらステップS21,S22の処理は、第2のプロセッサ7が行ってもよいし、第1のプロセッサ6及び第2のプロセッサ7が処理を分担して行ってもよい。また、CPU3で2値化処理する場合に限らず、外部から2値化処理済みの画像データを入力する場合であってもよい。
【0057】
第1のプロセッサ6は、このようにして得られた画像データP1(図6(a))に対して、注目画素Aを走査させる。そして、第1のプロセッサ6は、注目画素Aが一方の値「1」である場合に、注目画素Aに一時的に仮ラベル番号を付与する仮ラベル付処理を実行する(S23:仮ラベル付手段、仮ラベル付工程)。
【0058】
以下、仮ラベル付処理動作について図7(b)を参照しながら、具体的に説明する。まず、第1のプロセッサ6は、注目画素Aを、座標(0,0)、(0,1)、…、(0,n)、(1,0)…と、順次走査させていく。その走査中に、第1のプロセッサ6は、注目画素Aが他方の値「0」であるか否かを判断する(S23−1)。
【0059】
第1のプロセッサ6は、注目画素Aが他方の値「0」である場合(S23−1:Yes)には、仮ラベル番号は付与せずにそのままとする(S23−2)。第1のプロセッサ6は、注目画素Aが一方の値「1」である場合(S23−1:No)には、注目画素Aに隣接し、かつ既に走査済みである周辺画素B,Cが他方の値「0」であるか否かを判断する(S23−3)。なお、本第2実施形態では、注目画素Aに隣接する4方向の4つの画素のうち、既に走査済みである2つの画素B,Cを用いて判断するようにしている。
【0060】
そして、第1のプロセッサ6は、周辺画素B,Cが他方の値「0」であると判断した場合(S23−3:Yes)、注目画素Aに新しい仮ラベル番号を付与する(S23−4)。第1のプロセッサ6は、画素B,Cの少なくとも1つの画素が一方の値「1」であると判断した場合(S23−3:No)、周辺画素B,Cのうちの仮ラベル番号が付与された周辺画素に、1種類のみの仮ラベル番号が付与されているか否かを判断する(S23−5)。
【0061】
そして、第1のプロセッサ6は、1種類のみの仮ラベル番号が付与されていると判断した場合(S23−5:Yes)、注目画素Aにその周辺画素B又はCに割り振られている仮ラベル番号を付与する(S23−6)。
【0062】
また、第1のプロセッサ6は、複数種類の(つまり、異なる)仮ラベル番号が付与されていると判断した場合(S23−5:No)、注目画素Aに小さい方の仮ラベル番号を付与する。そして、第1のプロセッサ6は、複数の仮ラベル番号が同一の連結領域に含まれることを示す接続関連テーブル17を作成し、接続関連テーブル17をテーブル記憶部10に記憶させる(S23−7)。
【0063】
次に、第1のプロセッサ6は、ステップS23にて画像データP1における注目画素Aの主走査方向(Y軸方向)の走査を1ライン終える度に、1ライン全ての画素が2値のうちの他方の値「0」であるか否かを判断する(S24:判断手段、判断工程)。つまり第1のプロセッサ6は、注目画素Aが1列連続で他方の値「0」であるか否かを判断する。
【0064】
次に、第1のプロセッサ6は、注目画素Aが1列連続で「0」の値であると判断した場合(S24:Yes)、その列の座標情報である座標x1を座標記憶部9に上書き記憶させる(S25:座標記憶工程)。つまり、第1のプロセッサ6は、1ライン全ての画素が他方の値「0」であると判断された画像データP1における副走査方向の座標x1を、座標記憶部9に上書き記憶させる。なお、座標x1の初期値は0であり、この値が上書き変更されることで、座標情報が更新されたこととなる。
【0065】
第1のプロセッサ6は、注目画素Aが1列連続で「0」の値ではないと判断した場合(S24:No)、又は座標記憶部9の座標情報が更新された場合(S25)、画像データP1の全画素に注目画素Aを走査させたか否かを判断する(S26)。つまり、画像データにおける注目画素Aの走査が完了(仮ラベル付処理が完了)したか否かを判断する。第1のプロセッサ6は、注目画素Aの走査が完了していれば(S26:Yes)、処理を終了し、注目画素Aの走査が完了していなければ(S26:No)、ステップS23の処理に移行し、次の画素に注目画素Aを走査させ、仮ラベル付処理を続行する。
【0066】
次に、第2のプロセッサ7の動作について説明する。まず、第2のプロセッサ7は、座標記憶部9に記憶された座標情報である座標x1の更新があったか否かを判断する(S31)。第2のプロセッサ7は、座標記憶部9に記憶された座標情報の更新がないと判断した場合(S31:No)は、更新があるまで待ち受ける待機状態となる。
【0067】
第2のプロセッサ7は、更新があったと判断した場合(S31:Yes)、つまり、第1のプロセッサ6のステップS24の判断処理にて1ライン全ての画素が他方の値「0」であると判断された場合、以下の処理を実行する。この第2のプロセッサ7における以下の処理は、第1のプロセッサ6による仮ラベル付処理と並行して実行される。
【0068】
まず、第2のプロセッサ7は、接続関連テーブル17を参照して、一方の値「1」の画素が連結してなる連結領域の各画素に付与された仮ラベル番号を、連結領域毎に異なる本ラベル番号に置き換える本ラベル変換テーブル18を作成する(S32)。つまり、第2のプロセッサ7は、接続関連テーブル1を参照し、仮ラベル番号と本ラベル番号とを対応付けた本ラベル変換テーブル18を作成する。この本ラベル変換テーブル18は、テーブル記憶部10に記憶される。
【0069】
次に、第2のプロセッサ7は、仮ラベル画像データP2に注目画素(不図示)を走査させて仮ラベル番号が付与された画素を抽出し、本ラベル変換テーブル18を参照して、仮ラベル番号に対応付けされた本ラベル番号に変換する(S33)。これにより、本ラベル画像データP3を作成する。つまり、第2のプロセッサ7は、一方の値「1」の画素が連結してなる連結領域の各画素に付与された仮ラベル番号を、連結領域毎に異なる本ラベル番号に置き換える本ラベル付処理を実行する(本ラベル付手段、本ラベル付工程)。
【0070】
第2のプロセッサ7は、仮ラベル画像データP2において注目画素を左上の座標(0,0)からY軸方向を主走査方向、X軸方向を副走査方向として走査していくが、座標x1の行まで走査が完了したか否かを判断する(S34)。第2のプロセッサ7は、完了していなければ(S34:No)、ステップS33の本ラベル付処理を続行する。第2のプロセッサ7は、完了していれば(S34:Yes)、画像全体で本ラベル付処理が完了したか否かを判断する(S35)。第2のプロセッサ7は、完了していれば(S35:Yes)、第2のプロセッサ7の処理動作を終了し、完了していなければ(S35:No)ステップS31の判断処理に移行する。
【0071】
以上、本第2施形態によれば、2値化された画像データP1において1列全ての画素が2値のうちの他方の値「0」であるか否かを判断することにより、一方の値「1」の画素が連結してなる連結領域の外周端を見極めている。そして、1列全ての画素が他方の値「0」であると判断したときには、既に仮ラベル番号が付与された連結領域に対して本ラベル番号を付与する本ラベル付処理を実行する。この本ラベル付処理は、画像データP1の未走査領域における残りの連結領域に仮ラベル番号を付与する仮ラベル付処理と並行して行われる。このように、画像全体の仮ラベル付処理が終了するのを待たずに、本ラベル付処理を行うことができるので、従来の方法に比べてラベリング処理が高速化する。特に、縦長の連結領域、行方向に離散した連結領域群がある画像に対してより高速なラベリング処理を施すことができる。
【0072】
[第3実施形態]
次に、本発明の第3実施形態に係るラベリング処理装置によるラベリング処理の動作について説明する。なお、ラベリング処理装置の構成は、上記第1実施形態における図1のラベリング処理装置の構成と同様であり、本第3実施形態では同一の符号を付して説明する。
【0073】
図8は、ラベリング処理により本ラベル番号を付与する動作を説明するための図である。なお、図8(a)において、2値化された画像データP1における他方の値「0」の画素は、一方の値「1」の画素以外の画素である。
【0074】
上記第1、第2実施形態では、注目画素Aに隣接する周辺画素として、4近傍のうちの2つの周辺画素B,Cを用いて連結する連結領域を規定し、注目画素に対して斜め方向に隣接する画素は、同一の連結領域に含めないようにしていた。本第3実施形態では、注目画素Aに隣接し、且つ既に走査済みである画素B,C,D,Eを周辺画素としている。つまり、注目画素Aの8近傍のうち4つの周辺画素B,C,D,Eを用いて連結する連結領域を規定している。
【0075】
第1のプロセッサ6は、図8(a)に示すように、2値化された画像データP1において注目画素Aを主走査方向(X軸方向)及び主走査方向と直交する副走査方向(Y軸方向)に、座標(0,0)から座標(m,n)まで走査させる。
【0076】
第1のプロセッサ6は、画像データP1において注目画素Aを走査することにより、一方の値「1」である画素に対して仮ラベル番号を付与する仮ラベル付処理を1画素ずつ順次実行し、図8(b)に示す仮ラベル画像データP2を作成する。また、第1のプロセッサ6は、この仮ラベル画像データP2を作成する際に、異なる仮ラベル番号が付与された互いに隣接する画素が同一のラベル番号であることを示す図8(c)に示す接続関連テーブル19を作成する。なお、図8(b)では、仮ラベル画像データP2が作成完了した状態を図示している。また、図8(c)に示す接続関連テーブル19も、作成完了した状態を示している。
【0077】
ここで、第1のプロセッサ6は、仮ラベル画像データP2の作成中に1ライン(1行)全ての画素が他方の値「0」であるのを検出したら、その行の副走査方向(Y軸方向)の座標情報を座標記憶部9に上書き記憶させる。なお、副走査方向の座標の初期値は0であり、その値が更新されることとなる。
【0078】
第2のプロセッサ7は、座標記憶部9に記憶された副走査方向の座標が更新されたら、第1のプロセッサ6の仮ラベル付処理と並行して、仮ラベル番号と本ラベル番号とを対応付けた図8(c)に示す本ラベル変換テーブル20を作成する。
【0079】
そして、第2のプロセッサ7は、仮ラベル画像データP2において仮ラベル付用の注目画素(不図示)を走査する。そして、第2のプロセッサ7は、本ラベル変換テーブル20を参照して、仮ラベル番号を本ラベル番号に変換し、図8(d)に示す本ラベル画像データP3を、座標y1の画素まで作成する。これらの動作は、座標記憶部9に記憶された座標情報である座標y1がnとなるまで行われる。
【0080】
なお、注目画素Aの主走査方向がY軸方向であり、副走査方向がX軸方向であっても同様であり、その場合の周辺画素B,C,D,Eは、図8(e)のようになる。
【0081】
以上、2つのプロセッサ6,7によるラベリング処理についての概略を説明したが、以下、各プロセッサ6,7によるラベリング処理の動作について具体的に説明する。本第3実施形態では、各プロセッサ6,7の動作は、図4のステップS3における仮ラベル付処理の動作、図7のステップS23における仮ラベル付処理の動作以外は同一であるので、第1のプロセッサ6による仮ラベル処理のみ説明する。
【0082】
以下、仮ラベル付処理動作について図9を参照しながら、具体的に説明する。まず、第1のプロセッサ6は、注目画素Aが他方の値「0」であるか否かを判断する(S43−1)。
【0083】
第1のプロセッサ6は、注目画素Aが他方の値「0」である場合(S43−1:Yes)には、仮ラベル番号は付与せずにそのままとする(S43−2)。第1のプロセッサ6は、注目画素Aが一方の値「1」である場合(S43−1:No)には、周辺画素B,C,D,Eが他方の値「0」であるか否かを判断する(S43−3)。
【0084】
そして、第1のプロセッサ6は、周辺画素B,C,D,Eが他方の値「0」であると判断した場合(S43−3:Yes)、注目画素Aに新しい仮ラベル番号を付与する(S43−4)。第1のプロセッサ6は、画素B〜Eの少なくとも1つの画素が一方の値「1」であると判断した場合(S43−3:No)、周辺画素B〜Eのうちの仮ラベル番号が付与された周辺画素に、1種類のみの仮ラベル番号が付与されているか否かを判断する(S43−5)。
【0085】
そして、第1のプロセッサ6は、1種類のみの仮ラベル番号が付与されていると判断した場合(S43−5:Yes)、注目画素Aにその周辺画素B〜Eに割り振られている仮ラベル番号を付与する(S43−6)。
【0086】
また、第1のプロセッサ6は、複数種類の(つまり、異なる)仮ラベル番号が付与されていると判断した場合(S43−5:No)、注目画素Aに小さい方の仮ラベル番号を付与する。そして、第1のプロセッサ6は、複数の仮ラベル番号が同一の連結領域に含まれることを示す接続関連テーブル19を作成し、接続関連テーブル19をテーブル記憶部10に記憶させる(S43−7)。
【0087】
以上、本第3実施形態では、上記第1及び第2実施形態と仮ラベル付処理が異なるものの、本ラベル付処理は上記第1及び第2実施形態と同様に、第2のプロセッサ7にて並列して行っているので、上記第1及び第2実施形態と同様の効果を奏する。
【0088】
なお、上記第1〜第3実施形態に基づいて本発明を説明したが、本発明はこれに限定されるものではない。上記第1〜第3実施形態では、第1のプロセッサ6におけるステップS5,S25の処理で座標記憶部9に座標情報を記憶させ、第2のプロセッサ7におけるステップS11、S31の処理で座標記憶部9の座標情報が更新されたか否かを判断するようにした。しかし、本発明はこれに限定するものではなく、第1のプロセッサ6におけるステップS5,S25の処理で、第2のプロセッサ7に、座標情報を示す信号を出力するようにしてもよい。この場合、第2のプロセッサ7は、ステップS11,S31で座標情報を示す信号を入力したか否かを判断すればよい。そして、第2のプロセッサ7は、座標情報を示す信号を入力したときに、座標情報の示す位置まで本ラベル付処理を行えばよい。
【0089】
また、上記第1〜第3実施形態では、仮ラベル付処理として1例を示したが、別のアルゴリズムに基づいて仮ラベル番号を付与する場合であってもよい。また、本ラベル付についても同様に、別のアルゴリズムに基づいて本ラベル番号を付与する場合であってもよい。
【符号の説明】
【0090】
3…CPU、4…メモリ、6…第1のプロセッサ(仮ラベル付手段、判断手段)、7…第2のプロセッサ(本ラベル付手段)、8…画像記憶部、9…座標記憶部(座標記憶手段)、10…テーブル記憶部、11…カメラ、12…画像処理部、100…ラベリング処理装置

【特許請求の範囲】
【請求項1】
2値化された画像データにおいて注目画素を主走査方向及び前記主走査方向と直交する副走査方向に走査させて、前記注目画素が2値のうちの一方の値の画素である場合に、前記注目画素に一時的に仮ラベル番号を付与する仮ラベル付処理を実行する仮ラベル付手段と、
前記仮ラベル付手段による前記注目画素の主走査方向の走査を1ライン終える度に、1ライン全ての画素が2値のうちの他方の値であるか否かを判断する判断手段と、
前記判断手段により1ライン全ての画素が前記他方の値であると判断されたとき、前記仮ラベル付手段による前記仮ラベル付処理と並行して、前記一方の値の画素が連結してなる連結領域の各画素に付与された仮ラベル番号を、連結領域毎に異なる本ラベル番号に置き換える本ラベル付処理を実行する本ラベル付手段と、を備えたことを特徴とするラベリング処理装置。
【請求項2】
前記判断手段により1ライン全ての画素が前記他方の値であると判断された前記画像データにおける前記副走査方向の座標情報を上書き記憶する座標記憶手段を備え、
前記本ラベル付手段は、前記座標記憶手段に記憶された前記座標情報の示す位置まで前記本ラベル付処理を実行することを特徴とする請求項1に記載のラベリング処理装置。
【請求項3】
2値化された画像データにおいて注目画素を主走査方向及び前記主走査方向と直交する副走査方向に走査させて、前記注目画素が2値のうちの一方の値の画素である場合に、前記注目画素に一時的に仮ラベル番号を付与する仮ラベル付処理を実行する仮ラベル付工程と、
前記仮ラベル付工程にて前記注目画素の主走査方向の走査を1ライン終える度に、1ライン全ての画素が2値のうちの他方の値であるか否かを判断する判断工程と、
前記判断工程にて1ライン全ての画素が前記他方の値であると判断されたとき、前記仮ラベル付工程における前記仮ラベル付処理と並行して、前記一方の値の画素が連結してなる連結領域の各画素に付与された仮ラベル番号を、連結領域毎に異なる本ラベル番号に置き換える本ラベル付処理を実行する本ラベル付工程と、を備えたことを特徴とするラベリング処理方法。
【請求項4】
前記判断工程にて1ライン全ての画素が前記他方の値であると判断された前記画像データにおける前記副走査方向の座標情報を座標記憶手段に上書き記憶させる座標記憶工程を備え、
前記本ラベル付工程では、前記座標記憶手段に記憶された前記座標情報の示す位置まで前記本ラベル付処理を実行することを特徴とする請求項3に記載のラベリング処理方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate


【公開番号】特開2012−164108(P2012−164108A)
【公開日】平成24年8月30日(2012.8.30)
【国際特許分類】
【出願番号】特願2011−23682(P2011−23682)
【出願日】平成23年2月7日(2011.2.7)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】