JP2008186123A - 画像データ処理方法、画像データ処理プログラム及び画像データ処理装置 - Google Patents
画像データ処理方法、画像データ処理プログラム及び画像データ処理装置 Download PDFInfo
- Publication number
- JP2008186123A JP2008186123A JP2007017431A JP2007017431A JP2008186123A JP 2008186123 A JP2008186123 A JP 2008186123A JP 2007017431 A JP2007017431 A JP 2007017431A JP 2007017431 A JP2007017431 A JP 2007017431A JP 2008186123 A JP2008186123 A JP 2008186123A
- Authority
- JP
- Japan
- Prior art keywords
- run
- label
- row
- image data
- label value
- 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.)
- Withdrawn
Links
Landscapes
- Image Analysis (AREA)
Abstract
【課題】ラベリング処理の高速化を図るとともに同ラベル値を有する連結領域へのアクセスの高速化を図る。
【解決手段】処理対象の行又は列(以下では行とする)にて作成された処理対象ランデータと当該処理対象の行の直前行のランデータとの連結の有無を判定し、連結無しの場合は処理対象ランデータには新たなラベル値を与え、連結有りの場合は処理対象ランデータには、前記直前行にて作成されたランデータと同ラベル値を付与するとともに、異なるラベル値の与えられたランデータ同士が同じ連結成分に属するか否かを記録するラベルテーブルを作成する第1次ラベル付与処理を行う機能と、前記ラベルテーブルに基づき、前記各ランデータに付与されたラベル値の付替えを行い、かつ、ラベル値の付替え後において、同ラベル値を有するランデータが連続するラベルインデクスを持つデータ配列とする第2次ラベル付与処理を行う機能とを有する演算処理装置13を有する。
【選択図】図12
【解決手段】処理対象の行又は列(以下では行とする)にて作成された処理対象ランデータと当該処理対象の行の直前行のランデータとの連結の有無を判定し、連結無しの場合は処理対象ランデータには新たなラベル値を与え、連結有りの場合は処理対象ランデータには、前記直前行にて作成されたランデータと同ラベル値を付与するとともに、異なるラベル値の与えられたランデータ同士が同じ連結成分に属するか否かを記録するラベルテーブルを作成する第1次ラベル付与処理を行う機能と、前記ラベルテーブルに基づき、前記各ランデータに付与されたラベル値の付替えを行い、かつ、ラベル値の付替え後において、同ラベル値を有するランデータが連続するラベルインデクスを持つデータ配列とする第2次ラベル付与処理を行う機能とを有する演算処理装置13を有する。
【選択図】図12
Description
本発明は、2値画像データをラベリング処理する画像データ処理方法、画像データ処理プログラム及び画像データ処理装置に関する。
近年、CCDやCMOSを用いた撮像素子の高画素数化及び高密度化が進展している。これらの撮像素子によって取得された画像データを処理することにより、より詳しい情報が得られるようになってきた。そして、その情報を用いて、いろいろな検査が行われるようになってきた。例えば、製品への異物の付着あるいは傷の存在などによる欠陥識別のための検査が一例として挙げられる。このような検査を行う際には、画像データの2値化後に注目すべき値(‘黒’または‘白’に相当する値)を持つ画素の連結性を調べるラベリング処理を施す。そして、その同じラベルを持つ領域の大きさ、形状等から異物、傷等の欠陥を判断することになる。
このようなラベリング処理は従来から一般的に行われている技術である(例えば、特許文献1及び特許文献2参照)。
特許文献1に開示された技術(以下、第1従来技術という)には、近傍処理によるラベリング処理のアルゴリズム(以下、近傍処理アルゴリズムという)についての記載がなされている。これは、処理対象の画像データに対して、2値化データの最端部からラスタスキャン走査を行い、連結成分を調べて、同じ連結成分に属する全ての画素に同じラベルを割り当てて行く処理を行うものである。このように、第1従来技術では、2値化された画像データの画素すべてにアクセスするため、例えば、数百万画素といった高画素数の画像データをラベリング処理する場合、ラベリング処理を行うための演算量と時間が膨大なものとなるという問題がある。
特許文献1に開示された技術(以下、第1従来技術という)には、近傍処理によるラベリング処理のアルゴリズム(以下、近傍処理アルゴリズムという)についての記載がなされている。これは、処理対象の画像データに対して、2値化データの最端部からラスタスキャン走査を行い、連結成分を調べて、同じ連結成分に属する全ての画素に同じラベルを割り当てて行く処理を行うものである。このように、第1従来技術では、2値化された画像データの画素すべてにアクセスするため、例えば、数百万画素といった高画素数の画像データをラベリング処理する場合、ラベリング処理を行うための演算量と時間が膨大なものとなるという問題がある。
一方、特許文献2に開示された技術(以下、第2従来技術という)は、2値化された画像データのラベリング処理を高速化するために、ランレングスで表現された画像データに対してラベリング処理を施すことが記載されている。そのラベリング処理方法は、ランレングス化された画像データに上述の近傍処理アルゴリズムを応用したものである。このように、第2従来技術は、画像データがランレングス化されることにより、ランレングス化された部分にアクセスすればよいことから、2値化された画像データの画素すべてにアクセスする必要がないため、画像データへのアクセス回数の低減が期待され、更には高速化も期待される。
上述した第1従来技術は、上述したように、2値化された画像データの画素すべてにアクセスするため、ラベリング処理を行うための演算量と時間が膨大なものとなるという問題がある。
また、第2従来技術は、2値画像データがランレングス化されることによる画像データへのアクセス回数の低減が期待され、更には高速化も期待されるが、第2従来技術は、2値画像データをすべてランレングス化したのちにラベリング処理するものであるため、無
駄な処理を行う可能性もあり、それが高速化への障害となる場合もある。また、第2従来技術は、ラベリング処理後に行われる特徴量の算出処理の高速化などについての配慮は特に考慮されているものではない。
駄な処理を行う可能性もあり、それが高速化への障害となる場合もある。また、第2従来技術は、ラベリング処理後に行われる特徴量の算出処理の高速化などについての配慮は特に考慮されているものではない。
本発明は、ラベリング処理の高速化を図るとともにラベリング処理後に行われる特徴量の算出処理などの高速化に寄与できる画像データ処理方法、画像データ処理プログラム及び画像データ処理装置を提供することを目的とする。
(1)本発明の画像データ処理方法は、2値画像データを各行又は各列ごとにランレングス化し、前記ランレングス化によって作成されたランに対してラベリング処理を行う画像データ処理方法であって、処理対象の行又は列において作成された処理対象のランが当該処理対象の行又は列の直前の行又は列のランと連結するか否かを判定し、連結しないと判定された前記処理対象のランに対しては新たなラベル値を付与し、連結すると判定された前記処理対象のランに対しては当該処理対象のランに連結する前記直前の行又は列において作成されたランと同じラベル値を付与するとともに、異なるラベル値の付与されたラン同士が同じ連結成分に属するか否かを記録するラベルテーブルを作成する第1次ラベル付与処理を行うステップと、前記ラベルテーブルに基づいて、前記第1次ラベル付与処理によって各ランに付与されたラベル値の付け替えを行い、かつ、ラベル値の付け替え後において、同じラベル値を有するランに対応するランデータが、連続するラベルインデクスを有するデータ配列となるようにする第2次ラベル付与処理を行うステップとを有することを特徴とする。
本発明の画像データ処理方法は、ランレングス化と第1次ラベル付与処理とを同時進行で行うことにより、記憶領域に対するランデータの書き込み及び読み込み演算量を少なくすることができ、ラベリング処理を高速化することができる。
また、第2次ラベル付与処理によって、作成されたランに対応するランデータは、同じラベル値を有するラン同士が連続するラベルインデクスを有するデータ配列となるようにするので、同じラベル値を有する連結領域へのアクセスを容易にすることができ、ラベリング処理後における特徴量の算出処理などを高速に行うことができる。例えば、CCDなどの撮像素子によって撮像された画像データを製品の外観検査などの目的で使用するような場合、特徴量の算出を少ない演算量で高速に行うことができる。
(2)前記(1)に記載の画像データ処理方法においては、前記第2次ラベル付与処理を行う際、前記第2次ラベル付与処理後のラベル値が連番となるようにラベル値の付け替えを行うことが好ましい。
これは、第1次ラベル付与処理によって、例えば、3つのランに付与されたラベル値がラベル値「1」、ラベル値「2」、ラベル値「3」であって、ラベル値「1」が付与されたランとラベル値「2」が付与されたランとが連結していると判定された場合は、ラベル値の統合を行う処理によって、ラベル値「1」と「2」を統合して、ラベル値「1」が付与されたランとラベル値「2」が付与されたランにラベル値「1」を付与するものである。
このようなラベル値の統合処理を行った場合、ラベル値「2」が欠番となるので、ラベル値「3」が付与されたランのラベル値を「3」から「2」に変更するという処理を行う。このように、ラベル値が連番となるようなラベル値統合処理によって作成されたラベルテーブルを用いて第2次ラベル付与処理を行うことにより、第2次ラベル付与処理によって得られる最終的なラベル値も連番とすることができ、その後に行われる特徴量算出処理
などを効率的にかつ高速に行うことができる。
などを効率的にかつ高速に行うことができる。
(3)前記(1)又は(2)のいずれかに記載の画像データ処理方法においては、前記第2次ラベル付与処理後のラベル値と当該第2次ラベル付与処理後のラベル値が付与されたランに対応するランデータの数との対応付けがなされたラン数テーブルを作成するステップをさらに有することが好ましい。
このようなラン数テーブルを有することにより、あるラベル値を有するランに対応するランデータが何個連続して存在するかを容易に取得することができる。したがって、このラン数テーブルを参照することにより、特定のランデータのアクセスを容易に行うことができる。
このようなラン数テーブルを有することにより、あるラベル値を有するランに対応するランデータが何個連続して存在するかを容易に取得することができる。したがって、このラン数テーブルを参照することにより、特定のランデータのアクセスを容易に行うことができる。
(4)本発明の画像データ処理プログラムは、2値画像データを各行又は各列ごとにランレングス化し、前記ランレングス化によって作成されたランに対してラベリング処理を行う画像データ処理装置に前記ラベリング処理を実行させるための画像データ処理プログラムであって、処理対象の行又は列において作成された処理対象のランが当該処理対象の行又は列の直前の行又は列のランと連結するか否かを判定し、連結しないと判定された前記処理対象のランに対しては新たなラベル値を付与し、連結すると判定された前記処理対象のランに対しては当該処理対象のランに連結する前記直前の行又は列において作成されたランと同じラベル値を付与するとともに、異なるラベル値の付与されたラン同士が同じ連結成分に属するか否かを記録するラベルテーブルを作成する第1次ラベル付与処理を行うステップと、前記ラベルテーブルに基づいて、前記第1次ラベル付与処理によって各ランに付与されたラベル値の付け替えを行い、かつ、ラベル値の付け替え後において、同じラベル値を有するランに対応するランデータが、連続するラベルインデクスを有するデータ配列となるようにする第2次ラベル付与処理を行うステップとを有することを特徴とする。
このような画像データ処理プログラムを画像データ処理装置で実行させることにより、前記(1)の画像データ処理方法と同様の効果が得られる。なお、(4)に記載の画像データ処理プログラムにおいても前記(2),(3)の画像データ処理方法と同様の特徴を有することが好ましい。
(5)本発明の画像データ処理装置は、2値画像データを各行又は各列ごとにランレングス化し、前記ランレングス化によって作成されたランに対してラベリング処理を行う画像データ処理装置であって、処理対象の行又は列において作成された処理対象のランが当該処理対象の行又は列の直前の行又は列のランと連結するか否かを判定し、連結しないと判定された前記処理対象のランに対しては新たなラベル値を付与し、連結すると判定された前記処理対象のランに対しては当該処理対象のランに連結する前記直前の行又は列において作成されたランと同じラベル値を付与するとともに、異なるラベル値の付与されたラン同士が同じ連結成分に属するか否かを記録するラベルテーブルを作成する第1次ラベル付与処理を行う機能と、前記ラベルテーブルに基づいて、前記第1次ラベル付与処理によって各ランに付与されたラベル値の付け替えを行い、かつ、ラベル値の付け替え後において、同じラベル値を有するランに対応するランデータが、連続するラベルインデクスを有するデータ配列となるようにする第2次ラベル付与処理を行う機能とを有することを特徴とする。
本発明の画像データ処理装置がこのような機能を有する演算処理装置を有することにより、前記(1)の画像データ処理方法と同様の処理を行うことができ、前記(1)の画像データ処理方法と同様の効果が得られる。なお、(5)に記載の画像データ処理装置においても前記(2),(3)の画像データ処理方法と同様の特徴を有することが好ましい。
以下、本発明の実施形態について説明する。
図1は本発明の実施形態に係る画像データ処理方法を説明するために用いる2値画像データの一例を示す図である。図1に示す2値画像データは、CCDカメラなどの撮像装置によって得られたグレー階調の画像データを閾値判定により2値化することによって得ることができる。
図1は本発明の実施形態に係る画像データ処理方法を説明するために用いる2値画像データの一例を示す図である。図1に示す2値画像データは、CCDカメラなどの撮像装置によって得られたグレー階調の画像データを閾値判定により2値化することによって得ることができる。
図1に示す2値画像データにおいて示されている縦方向及び横方向の「0,1,2,・・・」の数値は、マトリクス状に配列された画素の行方向の位置及び列方向の位置を示もので、各位置における2値化された画素のデータ(画素データという)をB(i,j)で表すものとする。ここで、iは行を示す値(行インデクスという)、jは列を示す値(列インデクスという)であり、図1に示す2値画像データにおいては、iは0,1,2,・・・,8の値をとり、jは0,1,2,・・・,19の値をとる。
また、図1に示す2値画像データにおいて、灰色で示す画素は、‘1’(Hと表記する)の画素データを有する画素であり、白色で示す画素は、‘0’(Lと表記する)の画素データを有する画素であるとし、ここでは、「H」の画素又はその連続を「ラン」として作成し、作成されたランについてラベリング処理を行うものとする。なお、図1に示す2値画像データは、2値化された各画素データがマトリクス状に配列された状態で示されているが、各画素データは、RAMなどの記憶領域内においては、B(0,0)〜B(0,19),B(1,0)〜B(1,19),・・・,B(8,0)〜B(8,19)の順で1次元的なデータ配列として記憶されている。
本発明の実施形態に係る画像データ処理方法では、製品の外観検査などを行う際に必要なラベリング処理を、図1に示す2値画像データを行または列(実施形態では行とする)ごとにランレングス化しながら行う。具体的には、図1に示す2値画像データをi=0,1,2,・・・の順で各行ごとにj=0からランレングス化し、ランレングス化によって作成されたランに仮のラベルを付与する処理(第1次ラベル付与処理という)を行う。なお、i=0の行を0行目、i=1の行を1行目、i=2の行を2行目というように呼ぶこととする。
図1に示す2値画像データを各行ごとにランレングス化すると、0行目においては、「H」の画素は存在しないので、ランは作成されず、1行目においては3個のランが作成され、2行目から4行目においてはそれぞれ4個のランが作成され、5行目及び6行目おいてはそれぞれ2個のランが作成され、7行目においては1個のランが作成され、全体で20個のランが作成される。
また、ランレングス化によって作成された各々のランのインデクス(ランインデクスという)を「m」で表し、「m」はランデータの作成順に0,1,2,・・・の値をとる。そして、ランインデクス「m」が与えられたランをRun[m]で表すものとする。したがって、図1に示す2値画像データにおいて、1行目から順に作成されたランは、Run[0],Run[1],Run[2],・・・,Run[19]というように表される。
また、ランレングス化によって作成された各々のランのインデクス(ランインデクスという)を「m」で表し、「m」はランデータの作成順に0,1,2,・・・の値をとる。そして、ランインデクス「m」が与えられたランをRun[m]で表すものとする。したがって、図1に示す2値画像データにおいて、1行目から順に作成されたランは、Run[0],Run[1],Run[2],・・・,Run[19]というように表される。
図2は第1次ラベル付与処理において作成される各ランRun[0]〜Run[19]に対応するランデータを示す図である。また、図3は図2に示す各ランRun[0]〜Run[19]に対応するランデータをその作成順序で記憶領域に格納した状態の一例を示す図である。なお、図3においては、第1次ラベル付与処理後の各ランデータの配列が2次元的な配列であるかのように示されているが、記憶領域ではこれら各ランデータは1次元のデータ配列として保存される。
図2(a)は図1に示す2値画像データの1行目(i=1)をランレングス化すること
によって作成されたRun[0]〜Run[2]に対応するランデータ、図2(b)は図1に示す2値画像データの2行目(i=2)をランレングス化することによって作成されたRun[3]〜Run[6]に対応するランデータ、以下同様に、図2(c)〜(g)は図1に示す2値画像データの3行目(i=3)〜7行目(i=7)をそれぞれランレングス化することによって作成されたRun[7]〜Run[19]に対応するランデータを示す図である。
によって作成されたRun[0]〜Run[2]に対応するランデータ、図2(b)は図1に示す2値画像データの2行目(i=2)をランレングス化することによって作成されたRun[3]〜Run[6]に対応するランデータ、以下同様に、図2(c)〜(g)は図1に示す2値画像データの3行目(i=3)〜7行目(i=7)をそれぞれランレングス化することによって作成されたRun[7]〜Run[19]に対応するランデータを示す図である。
図2(a)〜(g)に示すRun[0]〜Run[19]に対応するランデータをそれぞれ太線枠で表し、各ランデータは4つの数値で構成される。各ランデータは、図2における太線枠内の4つの数値のうちの左から1番目(左端)の数値は、2値画像データ(図1参照)における当該ランの始端画素位置(以下では単に始端位置という)を示す列の値(列インデクス「j」)、左から2番目の数値は、2値画像データにおける当該ランの終端画素位置(以下では単に終端位置という)を示す列の値(列インデクス「j」)、左から3番目の数値は当該ランに付与されたラベル値、左から4番目(右端)の数値は、2値画像データにおける当該ランの行の値(行インデクス「i」)を表している。
例えば、図2(a)に示すRun[0]に対応するランデータを構成する数値「2,3,1,1」の「2」は、Run[0]の始端位置がj=2(2列目)であり、その次の「3」はRun[0]の終端位置がj=3(3列目)であることを示している。また、その次の「1」はRun[0]に付与されたラベル値が「1」であることを示している。そして、最後の「1」はRun[0]の存在する行がi=1(1行目)であることを示している。
なお、図2(a)〜(g)に示す各行に対応するランデータにおけるラベル値は、図1に示す2値画像データにおいて相互に連結しているラン同士で同じラベル値が付与される。これは、処理対象の行(注目行という)をランレングス化することによって作成された処理対象のラン(注目ランという)が当該注目行の直前の行で作成されたランと連結するか否かを調べ、連結しない注目ランに対しては新たなラベル値を付与し、連結する注目ランに対しては当該注目ランに連結する直前の行で作成されたランと同じラベル値を付与するという処理を行うためである。
ただし、注目するランに連結する直前の行(i−1)において作成されたランが複数存在する場合には、直前の行において作成された複数のランに付与された各ラベル値のうちいずれかのラベル値(本発明の実施形態では、最も小さい値のラベル値)を注目するランに付与する。
図4は直前の行で作成されたランと同じラベル値を付与する処理を説明する図である。図4(a)は1行目(i=1)のランレングス化によって作成されたランを示すもので、処理されたランを太線枠で示す。1行目(i=1)のランレングス化では、Run[0]〜Run[2]の3つのランが作成され、これらのRun[0]〜Run[2]は、直前の行で作成されたラン(i=0ではランは作成されていない)との連結がないので、それぞれにラベル値「1」,「2」,「3」が付与される(図2(a)参照)。
図4(b)は2行目(i=2)のランレングス化によって作成されたランを示すもので、処理されたランを太線枠で示す。2行目(i=2)のランレングス化では、Run[3]〜Run[6]の4つのランが作成され、Run[3]は、Run[0]と連結しているので、Run[0]と同じラベル値「1」が付与され、Run[4]は、Run[1]と連結しているので、Run[1]と同じラベル値「2」が付与され、さらに、Run[5]は、Run[2]と連結しているので、Run[2]と同じラベル値「3」が付与される。また、Run[6]は、連結が無いので、新たなラベル値「4」が付与される(図2(b)参照)。
図4(c)は3行目(i=3)のランレングス化によって作成されたランを示すもので、処理されたランを太線枠で示す。3行目(i=3)のランレングス化では、Run[7]〜Run[10]の4つのランが作成され、Run[7]は、Run[3]と連結しているので、Run[3]と同じラベル値「1」が付与され、Run[8]は、Run[4]と連結しているので、Run[4]と同じラベル値「2」が付与され、Run[9]は、Run[5]と連結しているので、Run[5]と同じラベル値「3」が付与される。また、Run[10]は、Run[6]と連結しているので、Run[6]と同じラベル値「4」が付与される(図2(c)参照)。
図4(d)は4行目(i=4)のランレングス化によって作成されたランを示すもので、処理されたランを太線枠で示す。4行目(i=4)のランレングス化では、Run[11]〜Run[14]の4つのランが作成され、Run[11]は、Run[7]と連結しているので、Run[7]と同じラベル値「1」が付与され、Run[12]は、Run[8]と連結しているので、Run[8]と同じラベル値「2」が付与され、Run[13]は、Run[9]と連結しているので、Run[9]と同じラベル値「3」が付与される。また、Run[14]は、Run[10]と連結しているので、Run[10]と同じラベル値「4」が付与される(図2(d)参照)。
図4(e)は5行目(i=5)のランレングス化によって作成されたランを示すもので、処理されたランを太線枠で示す。5行目(i=5)のランレングス化では、Run[15]とRun[16]の2つのランが作成され、Run[15]は、Run[11]及びRun[12]にそれぞれ連結している。このように、直前の行で処理された複数のランと連結している場合には、直前の行におけるラベル値の順番の早い方のラン、すなわち、直前の行において最も小さい値を有するラベル値が付与される。したがって、この場合、Run[15]はRun[11]と同じラベル値「1」が付与される。また、Run[16]はRun[13]と連結しているので、Run[13]と同じラベル値「3」が付与される。
図4(f)は6行目(i=6)のランレングス化によって作成されたランを示すもので、処理されたランを太線枠で示す。6行目(i=6)のランレングス化では、Run[17]とRun[18]の2つのランが作成され、Run[17]は、Run[15]に連結しているので、Run[15]と同じラベル値「1」が付与され、また、Run[18]は、Run[16]と連結しているので、Run[16]と同じラベル値「3」が付与される。
図4(g)は7行目(i=7)のランレングス化によって作成されたランを示すもので、処理されたランを太線枠で示す。7行目(i=7)のランレングス化では、Run[19]の1つのランが作成され、Run[19]は、Run[17]及びRun[18]にそれぞれ連結しているので、この場合、小さいほうのラベル値を有するRun[17]と同じラベル値「1」が付与される。
以上説明した第1次ラベル付与処理を行う際に、ラベルテーブルの作成及び各ラベル値に属するランに対応するランデータの数を示すラン数テーブルの作成も行う。
図5はラベルテーブルの作成手順を説明する図である。図5に示すラベルテーブルは、異なるラベル値の付与されたラン同士が同じ連結成分に属するか否かを記録するテーブルであり、第1次ラベル付与処理により異なるラベル値の付与されたラン同士の連結を調べ、連結が有る場合には同じラベル値とする処理(ラベル値統合処理という)を行うことにより作成されるものである。
図5はラベルテーブルの作成手順を説明する図である。図5に示すラベルテーブルは、異なるラベル値の付与されたラン同士が同じ連結成分に属するか否かを記録するテーブルであり、第1次ラベル付与処理により異なるラベル値の付与されたラン同士の連結を調べ、連結が有る場合には同じラベル値とする処理(ラベル値統合処理という)を行うことにより作成されるものである。
図5(a)〜(d)は第1次ラベル付与処理における各行の処理段階で作成されるラベルテーブルであり、図5(e)は第1次ラベル付与処理後に作成されるラベルテーブルである。図5(a)〜(e)の上段に示される数値は、ラベルのインデクス(ラベルインデ
クスという)であり、これは、第1次ラベル付与処理によって付与されたラベル値を表している。なお、第1次ラベル付与処理によって付与されたラベル値は最終的なラベル値ではなく、仮のラベル値である。また、図5(a)〜(e)の下段に示す数値は、各行におけるラベル値統合処理後のラベル値を示している。以下にラベルテーブルの作成手順について説明する。
クスという)であり、これは、第1次ラベル付与処理によって付与されたラベル値を表している。なお、第1次ラベル付与処理によって付与されたラベル値は最終的なラベル値ではなく、仮のラベル値である。また、図5(a)〜(e)の下段に示す数値は、各行におけるラベル値統合処理後のラベル値を示している。以下にラベルテーブルの作成手順について説明する。
図5(a)は第1次ラベル付与処理において、1行目(i=1)についての処理(1行目処理という)の終了後に作成されるラベルテーブルである。また、図5(b)は第1次ラベル付与処理において、2行目(i=2)についての処理(2行目処理という)の終了後に作成されるラベルテーブルである。
1行目処理において作成されるラベルテーブルは、図5(a)に示すように、ラベルインデクス「1」,「2」,「3」に対しては、1行目処理によって付与されたラベル値「1」,「2」,「3」がそのまま対応付けられている。また、2行目処理において作成されるラベルテーブルは、図5(b)に示すように、ラベルインデクス「1」,「2」,「3」,「4」に対しては、2行目処理によって付与されたラベル値「1」,「2」,「3」,「4」がそのまま対応付けられている。
これは、1行目処理及び2行目処理を行った段階で、異なるラベル値の付与されたラン同士の連結性を調べた結果、異なるラベル値の付与されたラン同士の連結性が無いためであり、この場合には、ラベル値統合処理は行われない。なお、3行目及び4行目についての処理終了後に作成される各ラベルテーブルは、2行目処理によって作成されるラベルテーブルと同じであるので図示は省略する。
図5(c)は5行目についての処理(5行目処理という)の終了後に作成されるラベルテーブルである。5行目処理において作成されるラベルテーブルは、図5(c)に示すように、ラベルインデクス「2」がラベル値「1」に付け替えられている。これは、5行目処理を行った段階で、異なるラベル値の付与されたラン同士の連結性を調べた結果、ラベル値「2」が付されたランで構成される領域がラベル値「1」の付与されたランで構成される領域と連結しているためであり、この場合には、ラベル値「2」をラベル値「1」とするラベル値統合処理を行う。
なお、ラベルインデクス「3」,「4」に対するラベル値「3」,「4」はそのままのラベル値が保持される。また、6行目処理終了後に作成される6行目ラベルテーブルは、5行目ラベルテーブルと同じであるので図示は省略する。
なお、ラベルインデクス「3」,「4」に対するラベル値「3」,「4」はそのままのラベル値が保持される。また、6行目処理終了後に作成される6行目ラベルテーブルは、5行目ラベルテーブルと同じであるので図示は省略する。
図5(d)は7行目についての処理(7行目処理という)の終了後に作成されるラベルテーブルである。7行目処理において作成されるラベルテーブルは、図5(d)に示すように、ラベルインデクス「3」に対するラベル値「3」がラベル値「1」に付け替えられている。これは、7行目処理を行った段階で、異なるラベル値の付与されたラン同士の連結性を調べた結果、ラベル値「3」が付与されたランで構成される領域がラベル値「1」の付与されたランで構成される領域と連結しているためであり、この場合には、ラベル値「3」をラベル値「1」とするラベル値統合処理を行う。なお、ラベルインデクス「4」に対するラベル値「4」はそのままのラベル値が保持される。
このように、7行目処理後に作成されるラベルテーブルにおいては、ラベルインデクス「1」は元のラベル値「1」がそのまま保持されているが、ラベルインデクス「2」,「3」はラベル値「1」に付け替えられ、元のラベル値「4」は連結性が無いためラベル値「4」がそのまま保存された内容となっている。
なお、図5(d)のラベルテーブルでは、ラベルインデクス「4」に対応するラベル値
は「4」となっているが、このままでは、ラベルテーブルのラベル値が「1」と「4」となり、番号の欠番が生じて連番とならないため、ラベル値「4」を「2」とする処理を行う。
は「4」となっているが、このままでは、ラベルテーブルのラベル値が「1」と「4」となり、番号の欠番が生じて連番とならないため、ラベル値「4」を「2」とする処理を行う。
このようなラベル値を連番とする処理を行うことにより、ラベルインデクス「1」〜「3」に対応するランで構成される領域を1つのまとまりの連結領域として、その連結領域にラベル値「1」を与え、ラベルインデクス「4」に対応する領域を1つのまとまりの連結領域として、その連結領域にラベル値「2」が付与されることとなり、各々独立した連結領域に連番となるラベル値を付与することができる。
図5(a)〜(d)の処理を経ることによって、第1次ラベル付与処理終了後には、図5(e)のようなラベルテーブルが作成される。図5(e)に示すラベルテーブルによれば、ラベルインデクス「1」〜「3」に対するラベル値はすべて「1」に統合され、ラベルインデクス「4」に対してはラベル値「2」が付与されたものとなる。
図6はラン数テーブルの作成手順を説明する図である。図6の上段に示される数値は、図6(a)〜(d)においては図5と同様にラベルインデクスであり、これは、第1次ラベル付与処理によって付与されたラベル値(仮のラベル値)を表している。また、図6(e)におけるラベルインデクスは、図5におけるラベル値統合処理後のラベル値を表している。また、図6の下段の数値は各ラベルインデクスに対応するランデータの数(ランデータ数という)を表している。
図6(a)は1行目処理後における各ラベルインデクスに対応するランデータ数であり、1行目処理後においては、ラベルインデクス「1」,「2」,「3」に対応するランデータ数はそれぞれ「1」である。
図6(b)は2行目処理における各インデクスに対応するランデータ数であり、2行目処理後においては、ラベルインデクス「1」,「2」,「3」に対応するランデータ数はそれぞれ「2」であり、これにラベルインデクス「4」に対応するランデータ数「1」が加わったものとなる。なお、3行目処理後においては、ラベルインデクス「1」,「2」,「3」に対応するランデータ数はそれぞれ「3」、ラベルインデクス「4」に対応するランデータ数「2」となり、また、4行目処理後においては、ラベルインデクス「1」,「2」,「3」に対応するランデータ数はそれぞれ「4」、ラベルインデクス「4」に対応するランデータ数「3」となるが、これらの図示は省略する。
図6(c)は5行目処理後における各ラベルインデクスに対応するランデータ数であり、5行目処理後においては、ラベルインデクス「1」に対応するランデータ数は「5」となり、ラベルインデクス「2」に対応するランデータ数は「4」、ラベルインデクス「3」に対応するランデータ数は「5」、ラベルインデクス「4」に対応するランデータ数は「3」となる。
なお、6行目処理後においては、ラベルインデクス「1」に対応するランデータ数は「6」、ラベルインデクス「2」に対応するランデータ数は「4」、ラベルインデクス「3」に対応するランデータ数は「6」、ラベルインデクス「4」に対応するランデータ数は「3」となるが、これらの図示は省略する。
なお、6行目処理後においては、ラベルインデクス「1」に対応するランデータ数は「6」、ラベルインデクス「2」に対応するランデータ数は「4」、ラベルインデクス「3」に対応するランデータ数は「6」、ラベルインデクス「4」に対応するランデータ数は「3」となるが、これらの図示は省略する。
図6(d)は7行目処理後における各ラベルインデクスに対応するランデータ数であり、7行目処理後においては、ラベルインデクス「1」に対応するランデータ数は「7」となり、ラベルインデクス「2」に対応するランデータ数は「4」、ラベルインデクス「3」に対応するランデータ数は「6」、ラベルインデクス「4」に対応するランデータ数は「3」となる。
図6(a)〜(d)の処理を経ることによって、第1次ラベル付与処理終了後には、図6(e)のようなラベルインデクス(図5における統合処理後のラベル値)とランデータ数との対応を示すテーブルが作成される。図6(e)に示すように、ラベルインデクス「1」に対応するランデータ数は「17」、ラベルインデクス「2」に対応するランデータ数は「3」となる。
これは、ラベル値統合処理後のラベル値「1」(第1次ラベル付与処理において付与されたラベル値「1」〜「3」)に属するランデータ数が17個であることを示している。また、ラベル値統合処理後のラベル値「2」(第1次ラベル付与処理において付与されたラベル値「4」)に属するランデータ数が3個であることを示している。
以上説明した第1次ラベル付与処理を図7から図9に示すフローチャートを参照しながら説明する。
図7は第1次ラベル付与処理及びラベルテーブル、ラン数テーブル作成までの全体的な処理の流れを概略的に示すフローチャートである。図7において、まず、「i=0、Label=0、m=0」のセット及び「j=0」のセットを行う(ステップS1,S2)。
図7は第1次ラベル付与処理及びラベルテーブル、ラン数テーブル作成までの全体的な処理の流れを概略的に示すフローチャートである。図7において、まず、「i=0、Label=0、m=0」のセット及び「j=0」のセットを行う(ステップS1,S2)。
ここで、「i」は図1に示す2値画像データの行インデクスであり、0,1,2,・・・で表される。「Label」は、作成されたランデータに対して付与されるラベル値であり、初期値を0とし、1,2,・・・の値が1から順に付与され、ラベル値「1」、ラベル値「2」というように表される。「m」は前述したようにランインデクスであり、0、1,2,・・・の値が0から順に付与される。また、「j」は図1に示す2値画像データの列インデクスであり、0,1,2,・・・で表される。
ステップS1,S2において、「i=0、Label=0、m=0」のセット及び「j=0」のセットが行われると、次に、ランの作成処理を行う(ステップS3)。ここで、処理対象の行(注目行)においてランが作成されたか否かの判定を行い(ステップS4)、ランが作成されれば、「Yes」のパスに進み、第1次ラベル付与処理(ステップS5)を行う。この時点では、注目行は「i=0」であり、図1に示す2値画像データを例にとれば、0行目には、ランは存在しないので、ランが作成されたか否かの判定(ステップS4)においては「No」のパスに進む。
そして、行インデクス「i」をインクリメントする処理(ステップS7)を行い、インクリメント後の「i」が「i>画像高さ」であるか否かを判定する(ステップS8)。これは、インクリメント後の「i」が2値画像データにおける最下段の行の行インデクスよりも大きいか否かを判定する処理であり、インクリメント後の「i」が2値画像データにおける最下段の行の行インデクス以下(図1に示す2値画像データにおいては「i≦8」)であれば、「No」のパスに進んでステップS2に戻り、インクリメント後の「i」の行を注目行として当該注目行におけるラン作成を行う(ステップS3)。この場合、注目行は「i=1」となっているので、1行目におけるランデータ作成を行う。
図1に示す2値画像データにおいては、1行目においてはランが存在するので、ランが作成され、当該ランの作成のあと、作成されたラン(注目ランという)に対する第1次ラベル付与処理が行われる(ステップS5)。そして、「j」が「j>画像幅」であるか否かを判定する(ステップS6)。これは、現時点における列インデクス「j」が2値画像データにおける最右端の列の列インデクスよりも大きいか否かを判定する処理であり、現時点における列インデクス「j」が2値画像データにおける最右端の列の列インデクス以下であれば、ステップS2に戻る(ステップS3)。
このようなラン作成及び作成されたランに対する第1次ラベル付与処理を最下段の行まで行うことにより、図2(a)〜(g)に示すランデータが作成される。なお、以上説明した処理を行う際に、ラベルテーブルの作成(図5参照)及びラン数テーブルの作成(図6参照)も行う(ステップS9)。
図8はラン作成手順を説明するフローチャートである。この場合も図1に示す2値画像データを例にとって説明する。まず、初期状態として、(Hの連続)=N、すなわち、H(‘1’)が連続しない状態をセットする(ステップS11)。そして、図1に示す2値画像データにおける0行目(i=0)において、「B(i,j)=H」であるか否かの判定を行う(ステップS12)。
ステップS12の処理は、まず初めに、B(0,0)がHであるか否かを判定するものであり、この場合、図1からもわかるように、B(0,0)はHではないので、ステップS12の「No」のパスに進み、(Hの連続)=Yの判定を行う(ステップS13)。ステップS13の処理は、Hの連続が存在するか否かを判定するものであり、この段階では、Hの連続が存在していないので、ここでも「No」のパスに進み、「j」をインクリメントし(ステップS14)、インクリメント後の「j」の値が、「j>画像幅」であるか否かを判定する(ステップS15)。
ステップS15の処理は、インクリメント後の「j」が当該行における最右端の列の列インデクス(図1に示す2値画像データにおいては「j=19」)よりも大きいか否かを判定するもので、「j>画像幅」でなければ、ステップS12に戻る。図1に示す2値画像データの0行目の画素は全て「L」であるので、ステップS12〜S15を繰り返す。そして、ステップS15において、「j>画像幅」であれば、現在の注目行の処理が終了し、当該注目行については「ラン:非作成」とする(ステップS16)。
次に、注目行をi=1(1行目)とし、1行目において、「B(i,j)=H」の判定を行う(ステップS12)。まず初めに、B(1,0)の値が「H」であるか否かを判定すると、図1からもわかるように、B(0,1)の値は「H」ではないので、この場合も、ステップS12〜S15を行う。続いて、B(1,1)の値が「H」であるか否かを判定すると、図1からもわかるように、B(1,1)の値も「H」ではないので、この場合も、ステップS12〜S15を行う。
続いて、B(1,2)の値が「H」であるか否かを判定すると、図1からもわかるように、B(1,2)の値は「H」であるので、今度は、ステップS12から「Yes」のパスに進み、「(Hの連続)=Y」の判定を行う(ステップS17)。この段階では、まだ、Hの連続が存在していないので、「No」のパスに進み、「Begin=j」をセットするとともに、「(Hの連続)=Y」をセットする(ステップS18)。ステップS18における「Begin=j」はランの始端位置をセットするもので、その時点における「j」の値を始端位置とする。同じくステップS18における「(Hの連続)=Y」のセットは、この時点からHの連続が始まることを意味している。
そして、「j」をインクリメントし(ステップS19)、インクリメント後の「j」の値が、「j>画像幅」であるか否かを判定する(ステップS20)。そして、「j>画像幅」でなければ、ステップS12に戻る。
ステップS12において、今度は、B(1,3)の値が「H」であるか否かを判定すると、図1からもわかるように、B(1,3)の値は「H」であるので、ステップS12から「Yes」のパスに進み、「(Hの連続)=Y」であるか否かの判定を行う(ステップS17)。ここでは、ステップS18において「Hの連続=Y」がセットされているので
、ステップS17では「Yes」のパスに進み、「j」をインクリメントし(ステップS14)、インクリメント後の「j」の値が、「j>画像幅」であるか否かを判定する(ステップS15)。そして、「j>画像幅」でなければ、ステップS12に戻る。
、ステップS17では「Yes」のパスに進み、「j」をインクリメントし(ステップS14)、インクリメント後の「j」の値が、「j>画像幅」であるか否かを判定する(ステップS15)。そして、「j>画像幅」でなければ、ステップS12に戻る。
ステップS12において、今度は、「B(1,4)=H」であるか否かの判定を行うと、この場合、図1からもわかるように、B(1,4)の値は「H」ではないので、ステップS12の「No」のパスに進み、「(Hの連続)=Y」であるか否かの判定を行う(ステップS13)。この段階では、Hの連続が存在しているので、ステップS13の「Yes」のパスに進み、ランデータ作成処理を行う(ステップS21)。
ステップS21のランデータ作成処理は、「Run[m].begin=Begin」、「Run[m].end=(j−1)」、「Run[m].row=i」をセットするものである。ここで、「Run[m].begin=Begin」は、当該ランすなわち「m」のインデクスが与えられたRun[m]の始端位置をステップS18においてセットした「Begin=j」とするものであり、「Run[m].end=(j−1)」は当該ランの終端位置を現時点の「j」よりも1つ前の「j」の値にセットするものである。また、「Run[m].row=iは、当該ランの存在する行を表す「i」の値をセットするもので、このようなランデータ作成処理がなされることにより、「ラン:作成」とする(ステップS22)。
なお、ステップS21においては、「Run[m].begin=Begin」、「Run[m].end=(j−1)」、「Run[m].row=i」をセットするとともに、「j++」を行い、「j」をインクリメントする。そして、再び、ステップS12により、注目行における次の画素位置jでの「B(i,j)=H」を判定する処理を行い、上記同様の処理を繰り返す。
なお、ステップS12において「Yes」のパスに進み、さらにステップS17において「Yes」のパスに進んで、ステップS19において「j」をインクリメントし、インクリメント後の「j」の値がステップS20により「j>画像幅」であると判定(「j」の値が最右端の列の値を超えたと判定)された場合は、当該注目行におけるラン作成処理は終了しているとして、ステップS23のランデータ作成処理を行う。
ステップS23のランデータ作成処理は、「Run[m].begin=Begin」、「Run[m].end=(j−1)」、「Run[m].row=i」をセットするものである。
ステップS23のランデータ作成処理は、「Run[m].begin=Begin」、「Run[m].end=(j−1)」、「Run[m].row=i」をセットするものである。
図9は作成されたランに対してラベル値を付与する第1次ラベル付与処理の手順を示すフローチャートである。まず、処理対象のラン(注目ラン)が存在する行(注目行)が先頭行であるか否かを判定し(ステップS31)、先頭行でなければステップS34以降の処理を行ったのちにステップS32の処理に進む。一方、ステップS31において、先頭行であると判定された場合には直接、ステップS32の処理に進む。
ステップS32の処理は、注目行の直前の行、すなわち(i−1)行の異なるラベル値を有する連結ランの数が0個、1個、2個以上のいずれであるかを判定する処理である。なお、注目行の直前の行、すなわち(i−1)行に存在するランのうち、注目ランと連結するランを連結ランと呼ぶことにする。なお、ステップS32の処理において、注目行が先頭行である場合には、無条件で0個であるとする。したがって、注目行が先頭行である場合には、ステップS33の処理を行う。
ステップS33の処理は、「Label++」,「Run[m].label=Label」,「Ltable[Label]=Label」,「Lcount[Label]=1」
、「m++」の処理である。ここで、「Label++」はラベル値のインクリメントであり、注目ランが注目行の最初のランであれば、初期化ラベル値「Label=0」を「Label=1」とする。また、「Run[m].label=Label」は、注目ランのラベル値を「Label」にセットする処理であり、この場合は、「Label=1」であるので、注目ラン(Run[m])のラベル値は「1」となる。なお、第1次ラベル付与処理の段階で付与されるラベル値は前述したように仮のラベル値である。
、「m++」の処理である。ここで、「Label++」はラベル値のインクリメントであり、注目ランが注目行の最初のランであれば、初期化ラベル値「Label=0」を「Label=1」とする。また、「Run[m].label=Label」は、注目ランのラベル値を「Label」にセットする処理であり、この場合は、「Label=1」であるので、注目ラン(Run[m])のラベル値は「1」となる。なお、第1次ラベル付与処理の段階で付与されるラベル値は前述したように仮のラベル値である。
また、「Ltable[Label]=Label」は、ラベルテーブルにおいて、注目行の処理後におけるラベルインデクス「1」に対するラベル値を「1」とする処理である。また、「Lcount[Label]=1」は、ラベル数テーブルにおいて、注目行の処理後におけるラベルインデクス「1」に対するラベル数を「1」とする処理である。
次に、注目行が先頭行で無い場合には、ステップS31において「No」のパスに進み、直前の行、すなわち、(i−1)行の連結ランの数=0(初期化)を行う(ステップS34)。これは、注目ランに連結するランの数を当初は0個とする処理である。そして、「k=(i−1)行の最初のランインデクス」をセットする(ステップS33)。これは、直前の行のランインデクスを「k」としたとき、まずは、「k」を直前の行の最初のランのインデクスにセットするものである。
続いて、「Run[k].end≧Run[m].begin」を判定し(ステップS36)、また、「Run[k].begin≦Run[m].end」を判定する(ステップS37)。ステップS36,S37の判定処理は、これら判定処理がともに「Yes」であれば、注目ラン(mのインデクスを有するラン)は、直前(i−1)の行の最初のラン(kのインデクスを有するラン)に連結することを意味している。そして、注目ランが直前の行に存在するランと連結有りと判定されると、「(i−1)行の連結ラン数を+1」とするとともにその時点の注目ランのランインデクスを記憶する(ステップS38)。
そして、「k」をインクリメントし(ステップS39)、インクリメント後の「k」が、「k>(i−1)行の最後のランインデクス」であるか否かを判定し(ステップS40)、(i−1)行における最後のランインデクスでなければ、ステップS36に戻り、同様の処理を行う。
ところで、ステップS36の処理において、「Run[k].end≧=Run[m].begin」を判定した結果、「Run[k].end」が「Run[m].begin」」よりも小さい場合には、ステップS36の処理の「No」のパスに入ってステップS39を行い、インクリメント後の「k」が、「k>(i−1)行の最後のランインデクス」であるか否かを判定し(ステップS40)、(i−1)行における最後のランインデクスでなければ、ステップS36に戻り、同様の処理を行う。
また、ステップS37の処理において、「Run[k].begin≦Run[m].end」を判定した結果、「Run[k].begin」が「Run[m].end」よりも大きい場合には、注目ランは、それ以降の連結性を調べる必要が無いので、ステップS32の処理に入る。また、ステップS40において、「k>(i−1)行の最後のランインデクス」となった場合にもステップS32の処理に入る。
ステップS32では、前述したように、(i−1)行の異なるラベル値を有する連結ランの数が0個、1個、2個以上のいずれであるかを判定する処理を行う。ここで、0個の場合は、ステップS33に進む。このステップS33の処理は前述した通りの処理である。また、1個の場合は、ステップS41の処理を行う。
ステップS41の処理は、「Run[m].label=連結ランのラベル値」、「Lcount[連結ランのラベル値のランデータ数]++」、「m++」をセットする。「Run[m].label=連結ランのラベル値」は、注目ランのラベル値を連結ランのラベル値とする処理である。「Lcount[連結ランのラベル値のランデータ数]++」は、ラン数テーブルにおいて、連結ランのラベル値に対応するランデータ数を1つ増加させる処理である。
また、ステップS32において、異なるラベル値を有する連結ランの数が2個以上である場合は、ステップS42の処理を行う。ステップS42は、「Run[m].label=最も小さいラベル値」、「Lcount[最も小さいラベル値のランデータ数]++」、「ラベルテーブルの値が“最も小さいラベル値”以外のその他の連結ランのラベル値と等しいインデックスに対応するラベル値を“最も小さいラベル値”にする」、「m++」とする処理である。
ステップS42における「Run[m].label=最も小さいラベル値」は、直前の行で作成された異なるラベル値を有する複数のランに付与された各ラベル値のうち最も小さいラベル値を注目ランのラベル値とする処理である。
具体例として、例えば、図4(e)に示すように、注目ランとしてのRun[16]が直前の行におけるRun[12](ラベル値「1」)とRun[13](ラベル値「2」)の2つのランに連結している場合、最も小さいラベル値を注目ランのラベル値とするという処理を行う。図4(e)の例では、Run[16]は、Run[12]に付与されたラベル値「1」がラベル値として付与されることとなる。
具体例として、例えば、図4(e)に示すように、注目ランとしてのRun[16]が直前の行におけるRun[12](ラベル値「1」)とRun[13](ラベル値「2」)の2つのランに連結している場合、最も小さいラベル値を注目ランのラベル値とするという処理を行う。図4(e)の例では、Run[16]は、Run[12]に付与されたラベル値「1」がラベル値として付与されることとなる。
また、「Lcount[最も小さいラベル値のランデータ数]++」は、「Run[m].label=最も小さいラベル値」を行ったときの「最も小さいラベル値」のその時点におけるランデータ数を「+1」することである。例えば、図1に示す2値画像データのi=4(4行目)までの処理を行った段階で、ラベルインデクス「1」のランデータ数が「4」であったとすれば、ラベルインデクス「1」のランデータ数を「+1」して「5」とする処理である(図6(c)参照)。
また、「テーブルの値が“最も小さいラベル値”以外のその他の連結ランのラベル値と等しいインデクスに対応するラベル値を“最も小さいラベル値”にする」は、ラベルテーブルの書き換え作業である。例えば、図1に示す2値画像データのi=4(4行目)までの処理を行った段階で、ラベルインデクス「2」のラベル値が「2」であったとすれば、そのラベル値「2」を最も小さいラベル値である「1」とする処理である(図5(c)参照)。
次に第2次ラベル付与処理について説明する。第2次ラベル付与処理は、第1次ラベル付与処理後に作成されたラベルテーブル(図5参照(e))及びラン数テーブル(図6(e)参照)を用いて行われる。図5(e)に示すラベルテーブルによれば、第1次ラベル付与処理によって付与されたラベル値(仮のラベル値)としてのラベルインデクス「1」,「2」,「3」に対しては、ラベル値統合処理後のラベル値として「1」が付与されており、第1次ラベル付与処理によって付与されたラベル値(仮のラベル値)としてのラベルインデクス「4」)に対しては、ラベル値統合処理後のラベル値として「2」が付与されている。
第2次ラベル付与処理によって付与されるラベル値が求めるべき最終的なラベル値であり、第2次ラベル付与処理では、図5(e)に示すラベルテーブルの内容に基づいて、最終的なラベル値の付与を行う。なお、第2次ラベル付与処理を行う際には、図6(e)に示すラン数テーブルを参照することにより、より効率的に第2次ラベル付与処理を行うこ
とができる。
とができる。
図6(e)に示すラン数テーブルは、同じラベル値を有するランデータ数が何個存在するかを示すものである。図6(e)において、例えば、ラベルインデクス「1」のランデータ数が「17」ということは、第1次ラベル付与処理で付与されたラベル値「1」を有するランデータ数が17個存在することを示している。
これら2つのテーブルを用いることによって、第2次ラベル付与処理データの作成を容易に行うことができ、かつ、作成された第2次ラベル付与処理データから所望とするランデータに容易にアクセスすることができる。
なお、図6に示すラン数テーブルにおいて、図6(e)に示すラン数テーブルの内容は、結果的には、第2次ラベル付与処理後のラベル値と当該第2次ラベル付与処理後のラベル値が付与されたランに対応するランデータの数との対応付けがなされたものとなる。
これら2つのテーブルを用いることによって、第2次ラベル付与処理データの作成を容易に行うことができ、かつ、作成された第2次ラベル付与処理データから所望とするランデータに容易にアクセスすることができる。
なお、図6に示すラン数テーブルにおいて、図6(e)に示すラン数テーブルの内容は、結果的には、第2次ラベル付与処理後のラベル値と当該第2次ラベル付与処理後のラベル値が付与されたランに対応するランデータの数との対応付けがなされたものとなる。
図10は第2次ラベル付与処理によりラベル値の付け替えが行われたランデータを示す図である。第2次ラベル付与処理は、図2で示した第1次ラベル付与処理により作成されたRun[0]〜Run[19]に対応するランデータのラベル値を、図5(e)に示すラベルテーブルに基づいて付け替えを行い、かつ、同じラベル値を有するランデータが、連続するラベルインデクスを有するように並べ替える処理を行うものである。
例えば、第1次ラベル付与処理においてラベル値「1」が付与されたランに対応するランデータ(図2参照)は、図5(e)に示すラベルテーブルを参照すると、ラベル値「1」が取得されるので、第1次ラベル付与処理において付与されたラベル値「1」はそのラベル値「1」がそのまま付与される。また、第1次ラベル付与処理においてラベル値「2」,「3」が付与されたランに対応するランデータ(図2参照)は、図5(e)に示すラベルテーブルを参照すると、それぞれラベル値「1」が取得されるので、第1次ラベル付与処理において付与されたラベル値「2」,「3」はそれぞれ「1」に付け替える。
同様に、第1次ラベル付与処理においてラベル値「4」が付与されたランに対応するランデータ(図2参照)は、図5(e)に示すラベルテーブルを参照すると、ラベル値「2」が取得されるので、第1次ラベル付与処理において付与されたラベル値「4」はラベル値「2」に付け替えられる。また、ラベル値の付け替えられた各ランデータは、同じラベル値を有するランデータが、連続するラベルインデクスを有するように並べ替えられる。
このようなラベル値の付け替えと並べ替えとを行った状態が図10である。図10(a)は、ラベル値「1」を有するランに対応するランデータの配列を示すもので、図10(b)は、ラベル値「2」を有するランに対応するランデータの配列を示す図である。
図10(a)に示すように、ラベル値「1」を有するランデータは、Run[0]〜Run[5]、Run[7]〜Run[9]、Run[11]〜Run[13]、Run[15]〜Run[19]に対応するランデータである。また、図10(b)に示すように、ラベル値「2」を有するランデータは、Run[6]、Run[10]、Run[14]に対応するランデータである。なお、図10に示す各ランデータのラベル値(図10(a)においてはラベル値「1」、図10(b)においてはラベル値「2」)は、図6(e)に示すラン数テーブルの「ラベルインデクス」に対応する。
図10(a)に示すように、ラベル値「1」を有するランデータは、Run[0]〜Run[5]、Run[7]〜Run[9]、Run[11]〜Run[13]、Run[15]〜Run[19]に対応するランデータである。また、図10(b)に示すように、ラベル値「2」を有するランデータは、Run[6]、Run[10]、Run[14]に対応するランデータである。なお、図10に示す各ランデータのラベル値(図10(a)においてはラベル値「1」、図10(b)においてはラベル値「2」)は、図6(e)に示すラン数テーブルの「ラベルインデクス」に対応する。
図11は図10に示すように配列されたランデータを記憶領域に格納した状態の一例を示す図である。なお、図11においては、第2次ラベル付与処理後の各ランデータが2次元的な配列であるかのように示されているが、記憶領域ではこれら各ランデータは1次元のデータ配列として格納される。
図11に示すように、記憶領域においては、同じラベル値を有するランデータが、連続するラベルインデクスを有するように格納される。なお、このような配列でランデータを
記憶領域に保存する際、ラベル値「1」の保存処理がすべて終わらなくても、ラベル値「2」を有するランデータの保存領域を適切に知ることができる。これは、図6(e)に示すラン数テーブルを参照することによって、ラベル値「1」を有するランデータが「17」個存在することがわかるからであり、ラベル値「2」を有するランデータは18番目以降に保存すればよいことがわかる。
図11に示すように、記憶領域においては、同じラベル値を有するランデータが、連続するラベルインデクスを有するように格納される。なお、このような配列でランデータを
記憶領域に保存する際、ラベル値「1」の保存処理がすべて終わらなくても、ラベル値「2」を有するランデータの保存領域を適切に知ることができる。これは、図6(e)に示すラン数テーブルを参照することによって、ラベル値「1」を有するランデータが「17」個存在することがわかるからであり、ラベル値「2」を有するランデータは18番目以降に保存すればよいことがわかる。
図11に示すように、記憶領域においては、同じラベル値を有するランデータが、連続するラベルインデクスを有するデータ配列状に格納されるため、同じラベル値を有するランデータ、すなわち、2値画像データにおいて連結している領域を構成するランデータに対して高速にアクセスすることができる。これにより、画像データから何らかの特徴量を算出するような場合にきわめて有効なものとなる。特に、図6(e)に示すようなランカウント数テーブルを有することにより、あるラベル値を有するランデータが何個連続して存在するかを容易に取得することができるので、特定のランデータへのアクセスを容易に行うことができることも特徴の一つである。
なお、記憶領域に格納される各ランデータを構成するデータとして、図11では各ランの始端位置、終端位置、ラベル値、縦方向位置の4つのデータを有しているが、図6(e)に示すラン数テーブルを有することから、図11においては、個々のランデータのデータとしてラベル値は省略することもできる。これは、ラン数テーブルを参照することにより、記憶領域内の何番目までのランデータのどのようなラベル値を有しているのかということを取得することができるからである。このように、各ランデータ中のラベル値を省略することにより、記憶領域で保持すべきデータ量を削減することができる。また、ランデータとして始端位置と終端位置を保持するようにしているが、始端位置とランレングスの組み合わせでも等価な情報を保持することができるので、同様の処理を行うことが可能である。
図12は本発明の実施形態に係る画像データ処理装置の構成を示す図である。本発明の実施形態に係る画像データ処理装置10は、CCDカメラなどの撮像装置20からの撮像データを入力するI/O(入出力部)11、撮像装置20からの撮像データ、撮像データを2値化した2値画像データ、第1次ラベル付与処理後のデータ、第2次ラベル付与処理後のデータ、ラベルテーブル、ラン数テーブルを記憶する大容量の記憶領域としてのRAM12、撮像データを2値化して2値画像データを作成する機能、2値画像データを用いて第1次ラベル付与処理を行う機能、ラベルテーブル(図5参照)及びラン数テーブル(図6参照)を作成する機能、ラベルテーブル及びラン数テーブルを参照して第2次ラベル付与処理を行う機能などを行う演算処理装置13、演算処理装置13が各種の処理を行う際のプログラムを格納するROM14などを有している。なお、本発明の画像データ処理装置10は、パーソナルコンピュータ(PCという)を用いることで実現することができる。
本発明の画像データ処理装置10が行う2値画像データを用いて行われる第1次ラベル付与処理、ラベルテーブル及びラン数テーブルの作成処理、ラベルテーブル及びラン数テーブルを参照して行われる第2次ラベル付与処理などについては、図1〜図11により詳細に説明したので、その説明は省略する。
なお、本発明は上述の実施形態に限られるものではなく、本発明の要旨を逸脱しない範囲で種々変形実施可能となるものである。たとえば、処理対象となる注目行において作成されたランと直前の行において作成されたランとの連結の有無を調べる際、正方格子状で表現される画素配列において、注目する画素の真上方向において隣接するか否かを判断する例について説明したが、注目する画素の斜め方向の隣接を考慮するようにしてもよい。この場合、図8に示すステップS36及びステップS37において、例えば、「Run[
k].end」を+1、「Run[k].begin」を−1した値を用いて、ステップS36,S37を行えばよい。
k].end」を+1、「Run[k].begin」を−1した値を用いて、ステップS36,S37を行えばよい。
また、前述の実施形態では、図1に示す2値画像データをランレングス化する際、行方向に走査してランレングス化を行うようにしたが、列方向に走査を行うことによってランレングス化することもできる。この場合、ランレングス化によって作成されたラン同士の連結を判定する処理は、直前の列において作成されたランとの連結を判定することによって行う。
また、前述の実施形態において説明した画像データ処理装置における第1次ラベル付与処理、ラベルテーブル及びラン数テーブルの作成処理、第2次ラベル付与処理などの画像データ処理を当該画像データ処理装置に実行させるためのプログラムとしての画像データ処理プログラムを各種の記録媒体に記録させておくことも可能である。したがって、本発明は、画像データ処理プログラムを記録した記録媒体をも含むものである。また、画像データ処理プログラムはネットワークから取得するようにしてもよい。
10・・・画像データ処理装置、11・・・I/O(入出力部)、12・・・RAM、13・・・演算処理装置、14・・・ROM、20・・・撮像装置、m・・・ランインデクス、Run[m]・・・ランインデクスmが与えられたラン
Claims (5)
- 2値画像データを各行又は各列ごとにランレングス化し、前記ランレングス化によって作成されたランに対してラベリング処理を行う画像データ処理方法であって、
処理対象の行又は列において作成された処理対象のランが当該処理対象の行又は列の直前の行又は列のランと連結するか否かを判定し、連結しないと判定された前記処理対象のランに対しては新たなラベル値を付与し、連結すると判定された前記処理対象のランに対しては当該処理対象のランに連結する前記直前の行又は列において作成されたランと同じラベル値を付与するとともに、異なるラベル値の付与されたラン同士が同じ連結成分に属するか否かを記録するラベルテーブルを作成する第1次ラベル付与処理を行うステップと、
前記ラベルテーブルに基づいて、前記第1次ラベル付与処理によって各ランに付与されたラベル値の付け替えを行い、かつ、ラベル値の付け替え後において、同じラベル値を有するランに対応するランデータが、連続するラベルインデクスを有するデータ配列となるようにする第2次ラベル付与処理を行うステップと、
を有することを特徴とする画像データ処理方法。 - 請求項1に記載の画像データ処理方法において、
前記第2次ラベル付与処理を行う際、前記第2次ラベル付与処理後のラベル値が連番となるようにラベル値の付け替えを行うことを特徴とする画像データ処理方法。 - 請求項1又は2に記載の画像データ処理方法において、
前記第2次ラベル付与処理後のラベル値と当該第2次ラベル付与処理後のラベル値が付与されたランに対応するランデータの数との対応付けがなされたラン数テーブルを作成するステップをさらに有することを特徴とする画像データ処理方法。 - 2値画像データを各行又は各列ごとにランレングス化し、前記ランレングス化によって作成されたランに対してラベリング処理を行う画像データ処理装置に前記ラベリング処理を実行させるための画像データ処理プログラムであって、
処理対象の行又は列において作成された処理対象のランが当該処理対象の行又は列の直前の行又は列のランと連結するか否かを判定し、連結しないと判定された前記処理対象のランに対しては新たなラベル値を付与し、連結すると判定された前記処理対象のランに対しては当該処理対象のランに連結する前記直前の行又は列において作成されたランと同じラベル値を付与するとともに、異なるラベル値の付与されたラン同士が同じ連結成分に属するか否かを記録するラベルテーブルを作成する第1次ラベル付与処理を行うステップと、
前記ラベルテーブルに基づいて、前記第1次ラベル付与処理によって各ランに付与されたラベル値の付け替えを行い、かつ、ラベル値の付け替え後において、同じラベル値を有するランに対応するランデータが、連続するラベルインデクスを有するデータ配列となるようにする第2次ラベル付与処理を行うステップと、
を有することを特徴とする画像データ処理プログラム。 - 2値画像データを各行又は各列ごとにランレングス化し、前記ランレングス化によって作成されたランに対してラベリング処理を行う画像データ処理装置であって、
処理対象の行又は列において作成された処理対象のランが当該処理対象の行又は列の直前の行又は列のランと連結するか否かを判定し、連結しないと判定された前記処理対象のランに対しては新たなラベル値を付与し、連結すると判定された前記処理対象のランに対しては当該処理対象のランに連結する前記直前の行又は列において作成されたランと同じラベル値を付与するとともに、異なるラベル値の付与されたラン同士が同じ連結成分に属するか否かを記録するラベルテーブルを作成する第1次ラベル付与処理を行う機能と、
前記ラベルテーブルに基づいて、前記第1次ラベル付与処理によって各ランに付与されたラベル値の付け替えを行い、かつ、ラベル値の付け替え後において、同じラベル値を有するランに対応するランデータが、連続するラベルインデクスを有するデータ配列となるようにする第2次ラベル付与処理を行う機能とを有する演算処理装置を有することを特徴とする画像データ処理装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007017431A JP2008186123A (ja) | 2007-01-29 | 2007-01-29 | 画像データ処理方法、画像データ処理プログラム及び画像データ処理装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007017431A JP2008186123A (ja) | 2007-01-29 | 2007-01-29 | 画像データ処理方法、画像データ処理プログラム及び画像データ処理装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2008186123A true JP2008186123A (ja) | 2008-08-14 |
Family
ID=39729145
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007017431A Withdrawn JP2008186123A (ja) | 2007-01-29 | 2007-01-29 | 画像データ処理方法、画像データ処理プログラム及び画像データ処理装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2008186123A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104063270A (zh) * | 2013-03-22 | 2014-09-24 | 大日本网屏制造株式会社 | 加标签方法、加标签装置以及缺陷检查装置 |
KR101521725B1 (ko) * | 2013-03-22 | 2015-05-19 | 가부시키가이샤 스크린 홀딩스 | 라벨링 방법, 라벨링 장치 및 결함 검사 장치 |
-
2007
- 2007-01-29 JP JP2007017431A patent/JP2008186123A/ja not_active Withdrawn
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104063270A (zh) * | 2013-03-22 | 2014-09-24 | 大日本网屏制造株式会社 | 加标签方法、加标签装置以及缺陷检查装置 |
KR101521725B1 (ko) * | 2013-03-22 | 2015-05-19 | 가부시키가이샤 스크린 홀딩스 | 라벨링 방법, 라벨링 장치 및 결함 검사 장치 |
TWI512687B (zh) * | 2013-03-22 | 2015-12-11 | Screen Holdings Co Ltd | 加標籤方法、加標籤裝置以及缺陷檢查裝置 |
CN104063270B (zh) * | 2013-03-22 | 2017-06-23 | 斯克林集团公司 | 加标签方法、加标签装置以及缺陷检查装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101225146B1 (ko) | 라벨 이미지의 생성 방법 및 화상처리 시스템 | |
AU2009251018C1 (en) | Generating object representation from bitmap image | |
KR101760323B1 (ko) | 장면의 3차원 뷰들을 렌더링 하기 위한 시스템 및 방법 | |
CN100354892C (zh) | 图像边缘过滤处理 | |
JPH1166325A (ja) | 物体の境界決定方法および装置並びに物体の境界決定プログラムを記録した記録媒体 | |
Chang et al. | Block-based connected-component labeling algorithm using binary decision trees | |
JP5600524B2 (ja) | 画像処理装置、画像処理方法、プログラム、および記憶媒体 | |
JPH0256708B2 (ja) | ||
JP2003141548A (ja) | 3次元ラベリング装置及びその方法 | |
JP2008186123A (ja) | 画像データ処理方法、画像データ処理プログラム及び画像データ処理装置 | |
Jin et al. | CWAN: Self-supervised learning for deep grape disease image composition | |
JP2005276188A (ja) | 手書き文字除去画像処理装置、及び手書き文字除去画像処理方法 | |
US9042651B2 (en) | Multi-point image labeling method | |
JP2008186124A (ja) | 画像データ処理方法、画像データ処理プログラム及び画像データ処理装置 | |
US6760466B2 (en) | Automatic image replacement and rebuilding system and method thereof | |
US7835584B1 (en) | Method and apparatus for processing video data | |
JP2004038530A (ja) | 画像処理方法、同方法の実行に用いるプログラム及び画像処理装置 | |
JP2006085686A (ja) | 画像処理方法および装置 | |
US8941881B2 (en) | Method and apparatus for rasterizing transparent page | |
CN101620733B (zh) | 一种混合式连结组件标签方法 | |
TWI391877B (zh) | 相連元件標記方法及其電腦系統 | |
JP2011053965A (ja) | ラベリング処理方法、並びにそのシステム、装置及びプログラム | |
JP2008227659A (ja) | 画像データ処理方法、画像データ処理プログラム及び画像データ処理装置 | |
JP2007228139A (ja) | ラベリング方法、ラベリング装置、ラベリングプログラム、及びディジタル画像の埃除去方法 | |
JP2020013225A (ja) | 高画質化学習装置および高画質化装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20091002 |
|
A761 | Written withdrawal of application |
Free format text: JAPANESE INTERMEDIATE CODE: A761 Effective date: 20110125 |