JP4720805B2 - 画像処理装置及びプログラム - Google Patents

画像処理装置及びプログラム Download PDF

Info

Publication number
JP4720805B2
JP4720805B2 JP2007239596A JP2007239596A JP4720805B2 JP 4720805 B2 JP4720805 B2 JP 4720805B2 JP 2007239596 A JP2007239596 A JP 2007239596A JP 2007239596 A JP2007239596 A JP 2007239596A JP 4720805 B2 JP4720805 B2 JP 4720805B2
Authority
JP
Japan
Prior art keywords
record
label
address
pixel
child
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.)
Active
Application number
JP2007239596A
Other languages
English (en)
Other versions
JP2009070250A (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.)
Fujifilm Business Innovation Corp
Original Assignee
Fuji Xerox Co Ltd
Fujifilm Business Innovation Corp
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 Fuji Xerox Co Ltd, Fujifilm Business Innovation Corp filed Critical Fuji Xerox Co Ltd
Priority to JP2007239596A priority Critical patent/JP4720805B2/ja
Publication of JP2009070250A publication Critical patent/JP2009070250A/ja
Application granted granted Critical
Publication of JP4720805B2 publication Critical patent/JP4720805B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Image Analysis (AREA)

Description

本発明は、画像処理装置に関し、特に画素のラベリング処理に関する。
2値画像に対するラベリング処理は、基本的な画像処理の1つであり、処理の効率化等のために従来様々な方式が提案されている。
特許文献1には、ランレングス符号に対してラベリングを行う装置が開示される。この装置に入力されたランレングス符号は、ラン復号化部で復号され、MH符号であればラン情報を用いて、連結チェック部で参照行との連結がチェックされる。ランテーブル管理部は、連結するランがあればそれに該当するラベルを割り当て、なければラベル管理部で新しいラベルを登録し、そのラベルを該ランに割り当てる。連結するランが複数ある場合、ラベル管理部は、ラベルテーブル上でそれら連結するランのラベル間にリンクを張り、それらラベルを統合する。連結成分整理部は、ラベルテーブルのリンク情報を基に、登録されたランのラベルを再割り付けする。
特許文献2に開示される装置は、入力映像を表す2値化映像信号を処理してラベルを生成し、画面領域のラベル付けを行う場合、端点抽出手段で抽出した入力映像の図柄の端点の位置とラベルとをラベル記憶部にリスト構造で記憶する。ラベル記憶部に記憶した端点の位置に基づき、連結判定手段が図柄の連結を判定し判定結果を生成する。判定結果は連結情報記憶部にツリー構造で記憶される。さらにラベル統合手段がツリー構造において所定の関係をもつラベルを統合し、ラベル記憶部に前記ラベルとして記憶させる。
特許文献3に示されるラベリング方法は、2次元画像データにおける同種の連続画素群に仮ラベルを付すステップと、異なる仮ラベルが付された連続画素群同士が隣接している場合に同一ラベルとして連結する連結処理ステップとを有する。この方法では、仮ラベルごとに、その仮ラベルを持つ画素塊の画素数、その画素塊の重心座標、その仮ラベルを持つ画素塊に隣接する画素塊の仮ラベル(隣接ラベルと呼ぶ)、を記録するラベリングテーブルを用いる。注目画素に仮ラベルを付した場合、ラベリングテーブルにおけるその仮ラベルの画素数をインクリメントし、重心座標を更新する。また、注目画素の1行上の隣接画素群の中にその仮ラベルと異なる仮ラベルを持つ画素があれば、ラベリングテーブルに対し、当該画素の仮ラベルに対応する隣接ラベルとして注目画素の仮ラベルを登録する。そして、連結処理ステップでは、仮ラベルの画素数、重心を、隣接ラベルの画素数、重心で更新し、更にその隣接ラベルの隣接ラベルの画素数、重心で更新するというように連鎖的に更新していくことで、同一のラベルを持つ画素塊の画素数、重心を求める。
特開平8−111782号公報 特開平11−345333号公報 特開2004−38669号公報
特許文献1の方式では、1ライン内で連続する黒画素群(すなわち「ラン」)ごとにその位置、長さ、及びラベルを記録したテーブルを用い、ライン間でのラン同士の隣接をそのテーブルに基づき判定している。このため、ラベリング処理の際にそのテーブルに頻繁なアクセスが生じ、アクセス時間が膨大となる。特許文献2の方式も、特許文献1の方式に類似しており、同様の問題がある。
また、特許文献3の方式は、各画素塊の画素数や重心などといった集計値を求めることができるが、連結しているにもかかわらず異なる仮ラベルが与えられた画素に対して統合されたラベル値を与える方法については特許文献3には示されていない。
請求項1に係る発明は、対象画像内で注目画素を移動させながら注目画素を順にラベルを付与する画像処理装置であって、注目画素に対応する参照ウインドウ内にラベルが付された画素がなければ、その注目画素の座標を含んだ子レコードを記憶装置に記憶すると共に、新たなラベルと前記子レコードの前記記憶装置内でのアドレスとを含む親レコードを前記記憶装置に記憶する第1の手段と、前記参照ウインドウ内に第1のラベルが付された画素があれば、その注目画素の座標を含んだ第1の子レコードを記憶装置に記憶すると共に、前記第1のラベルを含んだ第1の親レコードを前記記憶装置から検索し、検索された前記第1の親レコードに含まれる子レコードのアドレスに基づき前記第1のラベルが付された画素の系列における末尾の画素に対応する子レコードを特定し、特定した子レコードに対し、前記第1の子レコードの前記記憶装置内でのアドレスを次の子レコードのアドレスとして登録する第2の手段と、前記参照ウインドウ内に前記第1のラベルとは異なる第2のラベルを持つ画素があれば、前記第2のラベルを含んだ第2の親レコードを前記記憶装置から検索し、検索された前記第2の親レコードの前記記憶装置内でのアドレスを前記第1の親レコードに対して次の親レコードのアドレスとして登録する第3の手段と、前記親レコードに含まれる前記次の親レコードのアドレスを連鎖的に辿ることで同一ラベルに対応する親レコード群を特定し、特定された親レコード群に含まれる子レコードのアドレスを用いて当該子レコードにアクセスし、当該子レコードを起点として各子レコードに含まれる前記次の子レコードのアドレスを連鎖的に辿ることで、前記同一ラベルに対応する各画素の座標を収集する第4の手段と、を備える画像処理装置である。
請求項2に係る発明は、請求項1に記載の発明において、前記第1の手段は、前記記憶装置内での前記親レコードのアドレスを前記新たなラベルとする、ことを特徴とする。
請求項3に係る発明は、請求項1に記載の発明において、前記親レコードは、当該親コードに対応するラベルが付された画素の系列における末尾の画素に対応する子レコードの前記記憶装置内でのアドレスを記憶する第1の欄を有し、前記第2の手段は、前記第1のラベルが付された画素の系列における末尾の画素に対応する子レコードを、前記第1の親レコードが有する前記第1の欄内のアドレスに基づき特定すると共に、その後、前記第1の親レコードが有する前記第1の欄内のアドレスを前記第1の子レコードの前記記憶装置内でのアドレスに書き換える、ことを特徴とする。
請求項4に係る発明は、コンピュータを、注目画素に対応する参照ウインドウ内にラベルが付された画素がなければ、その注目画素の座標を含んだ子レコードを記憶装置に記憶すると共に、新たなラベルと前記子レコードの前記記憶装置内でのアドレスとを含む親レコードを前記記憶装置に記憶する第1の手段と、前記参照ウインドウ内に第1のラベルが付された画素があれば、その注目画素の座標を含んだ第1の子レコードを記憶装置に記憶すると共に、前記第1のラベルを含んだ第1の親レコードを前記記憶装置から検索し、検索された前記第1の親レコードに含まれる子レコードのアドレスに基づき前記第1のラベルが付された画素の系列における末尾の画素に対応する子レコードを特定し、特定した子レコードに対し、前記第1の子レコードの前記記憶装置内でのアドレスを次の子レコードのアドレスとして登録する第2の手段と、前記参照ウインドウ内に前記第1のラベルとは異なる第2のラベルを持つ画素があれば、前記第2のラベルを含んだ第2の親レコードを前記記憶装置から検索し、検索された前記第2の親レコードの前記記憶装置内でのアドレスを前記第1の親レコードに対して次の親レコードのアドレスとして登録する第3の手段と、前記親レコードに含まれる前記次の親レコードのアドレスを連鎖的に辿ることで同一ラベルに対応する親レコード群を特定し、特定された親レコード群に含まれる子レコードのアドレスを用いて当該子レコードにアクセスし、当該子レコードを起点として各子レコードに含まれる前記次の子レコードのアドレスを連鎖的に辿ることで、前記同一ラベルに対応する各画素の座標を収集する第4の手段と、して機能させるためのプログラムである。
請求項1又は4に係る発明によれば、対象画像を順方向に1回走査するだけで、正しいラベリング結果を得ることができる。
請求項2に係る発明によれば、第2の手段が前記第1のラベルを含んだ第1の親レコードを前記記憶装置から検索する処理を高速化できる。
請求項3に係る発明によれば、第2の手段が前記第1のラベルが付された画素の系列における末尾の画素に対応する子レコードを特定する処理を高速化できる。
本実施形態のよりよい理解のために、まず2値画像のラベリング(ラベル付与)処理の一般的な手順を説明する。ここでは、図1に例示する2値画像100を例にとって説明する。2値画像100は、「0(白)」又は「1(黒)」のいずれかの値をとる画素102が2次元行列状に配列されたものである。この例では、ラベリングの対象となる注目画素を、左上隅の画素を起点としてラスタ走査順序で移動させていく。ラスタ走査の主走査方向と副走査方向の例を図1に示した。図2に示すように、注目画素110についてのラベリングは、その注目画素110に隣接する参照ウインドウ120内の画素群のラベルを調べることにより行う。図2の例では、参照ウインドウ120は、注目画素110の左隣の画素、及び1行上の3つの隣接画素(すなわち左上、真上、及び右上)からなる4つの隣接画素を含む。この参照ウインドウ120は、画像の左上隅からラスタ走査し、8近傍型の連結を採用した場合の例である。ラベリングの手順の例を図3に示す。
図3の手順では、まずラベリングを行う処理部は、2値画像100の左上隅の画素を注目画素として読み込み(S2)、その値が「1」であるか否かを判定する(S3)。「1」でなければラベルは付与しないので、ステップS1にてラスタ走査順序で次の画素があるか否かを調べ、あればステップS2に進んでその画素を注目画素とする。ステップS3の判定で注目画素の値が「1」であれば、その注目画素に対する参照ウインドウ内にラベル付きの画素があるかどうかを調べ(S4)、なければ注目画素に新たなラベルを付与し(S5)、あればそのラベル付き画素のラベルを注目画素に付与する(S6)。注目画素に対するラベルの付与(S5又はS6)が終わると、ステップS1に戻る。そして、ラスタ走査順で最後の画素まで処理が終わると、ステップS1の判定結果が否定(No)となり、処理が終了する。
図1の2値画像100に対し、図3のアルゴリズムに従い、左上隅の画素を起点にラスタ走査順にラベリングを行った場合(順方向走査)のラベリング結果150を図4に示す。黒画素の中に描かれている数字が、当該画素に付与されたラベルである。2値画像100に示される黒画素群はすべて連結して1つのV字形の塊を形成しているので、これらすべての黒画素のラベルは同じ値になるべきである。しかし、図4から分かるように、図3の手順によれば、2値画像100中の黒画素群は、ラベルが「1」のものと「2」のものとに分かれている。そこで、上述の順方向走査を行った後のラベリング結果に対し、逆方向の走査で再度ラベリングを行うことで、2つに分かれたラベルが統合されるようにしている。この逆方向走査では、例えば、注目画素の左隣画素と1行下の3つの隣接画素とを含む参照ウインドウを用い、左下隅の画素を起点として左から右への主走査、下から上への副走査を行う。
以上のように、一般的なラベリング手順では、対象となる画像に対して順方向及び逆方向の2回の走査を行う必要がある。
これに対して本実施形態では、順方向の1回の走査で正しいラベリング結果が得られる装置又は方法を提供する。図5に、本実施形態のラベリング処理を行う画像処理装置の一例の機能ブロック図を示す。図5に例示する装置は、演算部10と記憶部20とを備える。
演算部10は、ラベリング処理のための演算を行うユニットであり、例えば、CPU(中央演算処理ユニット)で、ラベリング処理のためのプログラム群を実行することにより実現される。演算部10は、機能モジュールとして、ラベリング部12と、ラベル統合部14とを備える。ラベリング部12は、対象の画像データ22を走査しながら各画素に対してラベルを付与すると共に、それらラベルの統合のためのラベル管理データ26を生成する。ラベリング部12が実行する走査は順方向1回のみでよい。ラベル統合部14は、ラベリング部12によるラベリングの結果であるラベル値データ24と、同時に生成されたラベル管理データ26とを用いて、隣接する画素塊同士を統合する。ラベリング部12及びラベル統合部14の処理内容については後で詳しく説明する。記憶部20は、例えば、画像処理装置のオペレーティングシステムにより管理される主記憶であり、ハードウエアとしては例えばRAM(ランダムアクセスメモリ)である。記憶部20には、ラベリング対象の2値画像の画像データ22と、ラベリング部12による画像データ22のラベリング結果であるラベル値データ24と、ラベル管理データ26とが記憶される。ラベル値データ24は、例えば、画像データ22の画素の2次元座標をインデックスとする2次元の配列であり、各配列要素には当該要素に対応する画素のラベルの値が保持される。
次に、図6を参照して、記憶部20のメモリ空間200内にあるラベル管理データ26のデータ構造の一例を説明する。対象となる画像データ22のラベリングのために、メモリ空間200内に親レコード領域210,子レコード領域230が確保され、前者には1以上の親レコード220が、後者には1以上の子レコード240が記憶される。
親レコード220は、1つのラベルに対して1つ生成される。1つの親レコード220は、ラベル222,次の親アドレス224,及び子アドレス226を含んでいる。ラベル222は、当該親レコード220に対応するラベルの値である。次の親アドレス224は、当該ラベル222を持つ画素塊に隣接する、異なるラベルを持つ画素塊の親レコードの、メモリ空間200内でのアドレスである。子アドレス226は、当該ラベル222を持つ画素のうちの1つに対応する子レコード240の、メモリ空間200内でのアドレスである。
子レコード240は、画像データ22の1画素について1つ生成される。1つの子レコード240は、対応する画素の座標242と、次の子アドレス244とを含む。次の子アドレス244は、その画素と同じラベルを持つ別の画素に対応する子レコードの、メモリ空間200内でのアドレスである。
この他、メモリ空間200内には、ラベリング処理のための変数として、最大ラベル250(Lmax),親アドレスの最大値260(Pmax),及び子アドレスの最大値270(Cmax)が記憶される。
次に、ラベリング部12が実行する処理手順の一例を説明する。ラベリング部12の全体的な処理の骨格は、図3に例示したものと同様でよい。ただし、順方向の走査のみでラベリングを完了させるために、ステップS5及びステップS6に相当する部分の処理を工夫している。まず、図7を参照して、ステップS5に相当する部分の処理について説明する。
図7に示す手順は、図3の手順のステップS4において、参照ウインドウ120内にラベルを持つ画素がないと判定された場合に実行される。参照ウインドウ120内の各画素のラベル値は、例えばラベル値データ24を参照して求めればよい。この手順では、まずラベリング部12は、親アドレスの最大値260(Pmax)を親レコード1つ分だけインクリメントしたアドレス(Pmax+1)を計算し、そのアドレス(Pmax+1)に新たな親レコード220を生成する(S11)。なお、ラベリング処理の開始時点では、Pmaxは親レコード領域210の先頭アドレスから親レコード1つ分のデータ長を引いた値、子アドレスの最大値270(Cmax)は子レコード領域230の先頭アドレスから子レコード1つ分を引いた値、最大ラベル250(Lmax)は0、にそれぞれ初期化されているものとする。
次にラベリング部12は、その親レコード220のラベル222に、最大ラベル250(Lmax)に1を足した値(Lmax+1)を書き込む(S12)。この値(Lmax+1)が、現在の注目画素に付与されたラベルである。またラベリング部12は、子アドレスの最大値270(Cmax)を子レコード1つ分だけインクリメントしたアドレス(Cmax+1)を計算し、そのアドレス(Cmax+1)に新たな子レコード240を生成する(S13)。そして、その子レコード240の画素の座標242の欄に、注目画素の座標を書き込む(S14)。図7の例では、ステップS11及びS12の後に、ステップS13及びS14を実行したが、逆の順序でもよい。
また、ラベリング部12は、ステップS11で生成した親レコード220内の子アドレス226の欄に、アドレス値(Cmax+1)を書き込む(S15)。そして、各変数Pmax,Lmax,及びCmaxをインクリメントし(S16)、図3のステップS1に戻って次の注目画素を処理する。
次に、図8及び図9を参照して、図3のステップS6に相当する部分の処理について説明する。
図8及び図9に示す手順は、図3の手順のステップS4において、参照ウインドウ120内にラベルを持つ画素があると判定された場合に実行される。この場合、ラベリング12は、まず図8に示すように、参照ウインドウ120内で見つかったラベルを含んだ親レコード220を、親レコード領域210から検索する(S21)。参照ウインドウ120内の各画素には、例えば注目がその左隣を最高位とし反時計回りに順位が低くなるなどの優先順位付けがなされており、優先順位の高い画素から順にラベルの有無が判定され、ラベルを持つ画素が見つかった時点でステップS21が実行される。次にラベリング部12は、ステップS21で検索された親レコード220内の子アドレス226の値を取得する(S22)。そして、取得した値が示すアドレスにある子レコードにアクセスし、アクセスした子レコード内の「次の子アドレス」244の欄にアクセスする(S23)。更に、ラベリング部12は、アクセスした「次の子アドレス」244の欄が空(即ちNULL値を有する)か否かを判定し(S24)、空でなければ、その欄内のアドレスを取得し(S25)、ステップS23に戻ってそのアドレスにある子レコードにアクセスする。これらステップS23〜S25のループは、同じラベルを持つ画素の子レコードの系列(リスト構造)を末尾まで辿っていくための処理である。
ステップS24の判定結果がNoとなると、系列の末尾の子レコードに達したことになる。この場合、ラベリング部12は、当該末尾の子レコードの「次の子アドレス」244の欄にアドレス値(Cmax+1)を書き込む(S26)。また、ラベリング部12は、メモリ空間200のアドレス(Cmax+1)に新たな子レコード240を生成し(S27)、その子レコード240の画素の座標242の欄に、注目画素の座標を書き込む(S28)。ステップS26〜S28により、注目画素に対応する子レコードが、隣接する画素のラベルに対応する子レコードの系列の末尾に追加される。その後、ラベリング部12は、図9の処理に進む。
図9の処理は、本来連結しているにもかかわらず順方向走査では別々のラベルが与えられた画素塊同士を連結(リンク)するための処理である。この処理では、ラベリング部12は、ステップS21で見つかったラベル(即ち注目画素に付与されたラベル。識別のためにラベルAと呼ぶ)とは異なるラベル(識別のためにラベルBと呼ぶ)が参照ウインドウ120内にあるか否かを判定する(S29)。そのようなラベルBが参照ウインドウ120内に無ければ、図9の処理は終了し、ラベリング部12は図3のステップS1の処理に戻る。
ステップS29の判定結果がYesとなった場合、ラベリング部12は、ステップS29で見つかったラベルBを有する親レコード220をメモリ空間200から検索する(S30)。またラベリング部12は、ステップS22で検索された親レコード220(これは注目画素に付与されたラベルに対応する)の次の親アドレス224の欄にアクセスし(S31)、その欄が空であるか否かを判定する(S32)。空であれば、その欄に対し、ステップS30で検索した親レコード220のアドレスを書き込む(S33)。これにより、ステップS30で見つかった別のラベルが、注目画素に付与したラベルとリンクされる。そして、ラベリング部12は、変数Cmax及びPmaxをインクリメントし(S34)、ステップS1に戻る。
なお、ステップS32で、ステップS22で検索された親レコード220の次の親アドレス224の欄が空でないと判定された場合、ラベリング部12は、その欄内のアドレスを取得し、そのアドレスにある親レコード220の中の次の親アドレス224の欄にアクセスする(S35)。そして、ステップS32に戻る。ステップS32及びS35のループは、次の親アドレス224の欄が空の親レコードに達するまで繰り返される。このループは、リンクされたラベル(親レコード)の系列を末尾まで辿っていくための処理である。黒画素塊が複雑な形状をしており、同じ1つの黒画素塊の中の画素群が3以上のラベルに分かれた場合は、このループにより、それらラベルが(順方向走査の中で)発見された順に1つずつリスト構造に追加されていることになる。
以上、ラベリング部12の処理手順の一例を説明した。次に、図10〜図12を参照して、異なるラベル同士がリンクされる上記手順によりリンクされる様子を説明する。個々では、ラベリング部12によるラベリング処理が図10に示す状況まで進んだ時点を具体例として用い、説明する。
図10は、左上隅の画素を起点とする順方向の走査で、座標(4,5)の画素までラベリングが完了した時点の状態を示す。なお、ここでは、画像の2次元行列の行番号をi、列番号をjとし、画素の座標を(i,j)と表している。図10の状態では、本来連結している黒画素群が、別々のラベル「1」と「2」を持つ塊に分かれている。
この時点のメモリ空間200内のラベル管理データ26の状態を、図11に示す。この時点では、親レコード領域210内には、2つの親レコード220−1,220−2が存在する。各親レコード220の左側にある数字「101」及び「102」は、メモリ空間200内での当該親レコード220の先頭アドレスである。親レコード220−1及び220−2のラベル222の値はそれぞれ「1」及び「2」であり、次の親アドレス224の値はNULL値(即ち空)である。親レコード220−1の子アドレス226欄には、ラベル「1」を最初に付与された画素(1,1)に対応する子レコード240のメモリ空間200内でのアドレス「1001」が保持されている。同様に親レコード220−2の子アドレス226欄には、ラベル「2」を最初に付与された画素(1,9)に対応する子レコード240のアドレス「1003」が保持されている。
また、子レコード領域230内には、ラベルが付与された各画素に対応する子レコード240が記憶されている。各子レコード240の左隣に示される「1001」、「1002」等の値は、当該子レコード240の先頭アドレスである。子レコード240同士は、次の子アドレス244によりリンクされている。例えば、アドレス「1001」の子レコードは、次の子アドレス244の値により、アドレス「1002」の子レコードとリンクしている。このことは、画素(1,1)と画素(1,2)とが同じラベルを持つ連結した画素であることを示す。ここでアドレス「1001」の子レコードは、ラベル「1」の親レコード220−1からリンクされているので、アドレス「1002」の子レコードが示す画素(1,2)はラベル「1」を持つことが分かる。画素(4,5)まで走査が完了した時点では、アドレス「1014」にある当該画素(4,5)の子レコードはラベル「1」の系列の末尾にあり、次の子アドレスの値はNULLとなっている。
なお、図11では、分かりやすくするために、ラベル「1」が付与された画素の子レコード群と、ラベル「2」が付与された画素の子レコード群とを分けて示したが、当然ながら実際のメモリ空間200では、子レコード240群は、対応するラベルによらず、アドレスの順番に並ぶ。
さて、図10の状態から処理が進み、画素(4,6)を注目画素110としてラベリングが行われると、画素(4,6)には、参照ウインドウ120内でラベルを持つ画素のうち最高の優先順位を持つ左隣の画素のラベル「1」が付与される。すなわち、図12に示されるように、子レコード領域230のアドレス「1015」に、画素(4,6)のための新たな子レコードが追加され、アドレス「1014」の次の子アドレス244にそのアドレス「1015」が書き込まれる。
さて、このとき、参照ウインドウ120内には、ラベル「1」の他にラベル「2」も存在する。そこで、ラベリング部12は、ラベル「1」に「2」をリンクする。すなわち、図12に例示するように、ラベル「1」の親レコード220−1の次の親アドレス224に対し、ラベル「2」の親レコード220−2のアドレス「102」を書き込む。
以上、ラベリング部12の処理について説明した。ラベリング部12が対象の画像データ22に対して順方向の走査を終えると、記憶部20内には、画像データ22内にある実際は連結しているのに異なるラベルが付与された画素塊同士を統合するための情報を含んだラベル管理データ26(具体例は図11,図12を参照)が完成している。ラベル統合部14は、このラベル管理データ26を用いて上述の統合を行う。図13及び図14を参照して、ラベル統合部14の処理の例を説明する。
図13及び図14に示す処理手順は、対象となるラベルが1つ指定された場合に、その対象ラベルを持つすべての画素を求めるための処理である。この処理は、例えば、ラベリング結果を表示したり、ラベリング結果を用いて画像処理や重心計算などの各種の処理を行ったりするプログラムにより利用される。例えば、そのプログラムが、対象の画像にある各画素塊ごとに処理を行う場合には、ラベル管理データ26にある親レコードの先頭のものから順に、図13及び図14の処理を行えばよい。
この処理では、ラベル統合部14は、まず図13に示されるように、指定された対象ラベルに対応する親レコードを親レコード領域210から検索し、取得する(S41)。ラベルではなく親レコード220が指定されている場合は、ステップS41の処理は不要である。次にラベル統合部14は、画素探索(S42)を行う。画素探索は、子レコード領域230の情報を用いて、その親レコード220のラベルを持つ画素群を探索する処理である。図14は、画素探索処理の手順の一例である。
図14の処理手順では、ラベル統合部14は、ステップS41で取得された親レコード220の子アドレス226の値を取得し、その値が示すアドレスにある子レコード240にアクセスする(S51)。そして、その子レコード240の画素の座標242をリストに登録する(S52)。このリストは、指定されたラベルを持つ画素群を入れるためのリストである。次にラベル統合部14は、その子レコード240内の次の子アドレス244の欄にアクセスし(S53)、その欄が空であるか否かを判定する(S54)。次の子アドレス244の欄が空でなければ、ラベル統合部14は、その欄内の値を取得し、その値が示すアドレスにある子レコード240にアクセスし(S55)、ステップS52に戻ってその子レコード240内の画素座標242をリストに記憶する。対象ラベルを持つ画素の系列の末尾に達するまで、ステップS52〜S55のループが繰り返される。そして、ステップS54で、次の子アドレス244が空となった場合は、そのラベルを持つ画素の系列の末尾まで達したということなので、処理を終了する。
図13の説明に戻ると、ラベル統合部14は、ステップS41で取得された親レコード220の次の親アドレス224の欄にアクセスし(S43)、その欄が空であるか否かを判定する(S44)。空でなければ、ラベル統合部14は、その欄内の値が示すアドレスにある親レコード220を取得する(S45)。これにより、指定された対象ラベルにリンクされた別のラベルが取得される。そして、ラベル統合部14は、ステップS42に戻ってその親レコード220のラベルを持つ画素群を探索し、見つかった画素の座標を前述のリストに入れる。対象ラベルにリンクされたラベルとの系列の末尾に達するまで、ステップS42〜S45のループが繰り返される。そして、ステップS44で、次の親アドレス224が空となった場合は、対象ラベルにリンクしたラベルの系列の末尾まで達したということなので、ラベル統合部14は、リストに蓄積された画素群の情報を、当該ラベリング結果を利用するプログラムに対して出力し(S46)、処理を終了する。
以上に例示した方式によれば、対象画像を順方向に1回走査するだけで、正しいラベリング結果を得ることができる。
以上に例示した方式において、ラベルとして親レコード220のアドレスを用いてもよい。これによれば、ステップS21やS30等の検索を高速化できる。
以上では、2値画像のラベリングの例を示したが、3値以上の多値画像のラベリングも従来知られており、上述の例の方式は多値画像のラベリングにも適用できる。上述の方式を多値画像のラベリングに適用する場合、次のような変形例が考えられる。すなわち、この変形例では、親レコード220に対し、図15に示すように色情報228を追加する。色情報228は、多値画像中の当該親レコード220に対応する画素塊の色を示す値である。ラベリング部12は、参照ウインドウ内に注目画素と同じ色(すなわち多値画像における画素値)を持つ画素があれば、その画素のラベルを注目画素に付与する(すなわち、その画素の子レコードに対し、注目画素の子レコードをリンクする)。一方、注目画素に対し新たなラベルを付与する際には、ラベリング部12は、新たな親レコード220を生成し、注目画素の色を色情報228の欄に書き込む。また、参照ウインドウ内に、注目画素に付与したラベルXと異なるラベルYが存在する場合、ラベルXとYに対応する親レコードの色情報228が同じであれば、ラベルXの親レコードの次の親アドレス224に、ラベルYの親レコードのアドレスを書き込む。以上のようにして、多値画像についても、順方向走査のみでラベリングができる。そして、このように親レコード220に色情報228を追加しておけば、色情報228を用いて異なるラベルを持つ画素塊同士を統合することもできる。例えば、色情報「1」と「2」を同じ色と見なす旨の指示があれば、色情報「1」に対応するラベルを持つ画素塊と、色情報「2」に対応するラベルを持つ画素塊とを1つにまとめることができる。
なお、グレースケール画像やフルカラー画像も、画素値を複数の範囲に分類し、各画素の値がそれら各範囲のいずれに属するかを判定することで、多値画像に変換できるので、グレースケール画像やフルカラー画像についてもラベリングは可能であり、これにも上述の方式を適用できる。また、ここでは色情報を例にとったが、画素が色情報以外の属性情報を持つ場合に、その属性情報を親レコード220に登録しておき、その属性情報同士の近さに応じてあるラベルの画素塊と別のラベルの画素塊とを統合することもできる。
また、別の変形例として、図16に示すように親レコード220に、当該親レコード220にリンクした子レコードの系列の最後の子レコードのアドレス229を記録してもよい。この変形例では、ラベリング部12は、注目画素に既存のラベルを与える場合、そのラベルに対応する親レコード220の最後の子レコードのアドレス229を参照することで、その親レコード220からリンクされた子レコードの系列を辿らなくても、その系列の末尾の子レコードを直接見つけることができ、その末尾の子レコードの次の子アドレス244に、注目画素に対応する子レコードのアドレスを書き込むことができる。なお、この書き込みと共に、最後の子レコードのアドレス229を、その注目画素に対応する子レコードのアドレスに書き換えればよい。
以上に例示した画像処理装置は、例えば、汎用のコンピュータに上述の各機能モジュールの処理を表すプログラムを実行させることにより実現される。ここで、コンピュータは、例えば、ハードウエアとして、図17に示すように、CPU1000等のマイクロプロセッサ、ランダムアクセスメモリ(RAM)1002およびリードオンリメモリ(ROM)1004等のメモリ(一次記憶)、HDD(ハードディスクドライブ)1006を制御するHDDコントローラ1008、各種I/O(入出力)インタフェース1010、ローカルエリアネットワークなどのネットワークとの接続のための制御を行うネットワークインタフェース1012等が、たとえばバス1014を介して接続された回路構成を有する。また、そのバス1014に対し、例えばI/Oインタフェース1010経由で、CDやDVDなどの可搬型ディスク記録媒体に対する読み取り及び/又は書き込みのためのディスクドライブ1016、フラッシュメモリなどの各種規格の可搬型の不揮発性記録媒体に対する読み取り及び/又は書き込みのためのメモリリーダライタ1018、などが接続されてもよい。上に例示した各機能モジュールの処理内容が記述されたプログラムがCDやDVD等の記録媒体を経由して、又はネットワーク等の通信手段経由で、ハードディスクドライブ等の固定記憶装置に保存され、VPNルータにインストールされる。固定記憶装置に記憶されたプログラムがRAM1002に読み出されCPU1000等のマイクロプロセッサにより実行されることにより、上に例示した機能モジュール群が実現される。なお、それら機能モジュール群のうちの一部又は全部を、専用LSI(Large Scale Integration)、ASIC(Application Specific Integrated Circuit、特定用途向け集積回路)又はFPGA(Field Programmable Gate Array)等のハードウエア回路として構成してもよい。
2値画像の一例を示す図である。 参照ウインドウの一例を説明するための図である。 参照ウインドウを用いたラベリングの手順の一例を示すフローチャートである。 図1に例示した2値画像に対して順方向走査によるラベリング結果を例示する図である。 実施形態のラベリング処理を行う画像処理装置の一例の機能ブロック図を示す図である。 記憶部のメモリ空間内にあるラベル管理データのデータ構造の一例を示す図である。 注目画素に新たなラベルを付与する場合の処理手順の一例を示すフローチャートである。 注目画素に隣接画素のラベルを付与する場合の処理手順の一例の一部を示すフローチャートである。 注目画素に隣接画素のラベルを付与する場合の処理手順の一例の残りの部分を示すフローチャートである。 異なるラベル同士がリンクされる状況の具体例を示す図である。 図10の状況でのラベル管理情報の内容を示す図である。 図10の状況の後、注目画素にラベルが付与され、異なるラベル同士がリンクされた後のラベル管理情報の内容を示す図である。 ラベル統合部の処理手順の一例を示すフローチャートである。 ラベル統合部の処理の一部分である画素探索処理の手順の例を示すフローチャートである。 変形例における親レコードのデータ構造を示す図である。 別の変形例における親レコードのデータ構造を示す図である。 コンピュータのハードウエア構成の一例を示す図である。
符号の説明
10 演算部、12 ラベリング部、14 ラベル統合部、20 記憶部、22 対象の画像データ、24 ラベル値データ、26 ラベル管理データ。

Claims (4)

  1. 対象画像内で注目画素を移動させながら注目画素を順にラベルを付与する画像処理装置であって、
    注目画素に対応する参照ウインドウ内にラベルが付された画素がなければ、その注目画素の座標を含んだ子レコードを記憶装置に記憶すると共に、新たなラベルと前記子レコードの前記記憶装置内でのアドレスとを含む親レコードを前記記憶装置に記憶する第1の手段と、
    前記参照ウインドウ内に第1のラベルが付された画素があれば、その注目画素の座標を含んだ第1の子レコードを記憶装置に記憶すると共に、前記第1のラベルを含んだ第1の親レコードを前記記憶装置から検索し、検索された前記第1の親レコードに含まれる子レコードのアドレスに基づき前記第1のラベルが付された画素の系列における末尾の画素に対応する子レコードを特定し、特定した子レコードに対し、前記第1の子レコードの前記記憶装置内でのアドレスを次の子レコードのアドレスとして登録する第2の手段と、
    前記参照ウインドウ内に前記第1のラベルとは異なる第2のラベルを持つ画素があれば、前記第2のラベルを含んだ第2の親レコードを前記記憶装置から検索し、検索された前記第2の親レコードの前記記憶装置内でのアドレスを前記第1の親レコードに対して次の親レコードのアドレスとして登録する第3の手段と、
    前記親レコードに含まれる前記次の親レコードのアドレスを連鎖的に辿ることで同一ラベルに対応する親レコード群を特定し、特定された親レコード群に含まれる子レコードのアドレスを用いて当該子レコードにアクセスし、当該子レコードを起点として各子レコードに含まれる前記次の子レコードのアドレスを連鎖的に辿ることで、前記同一ラベルに対応する各画素の座標を収集する第4の手段と、
    を備える画像処理装置。
  2. 前記第1の手段は、前記記憶装置内での前記親レコードのアドレスを前記新たなラベルとする、ことを特徴とする請求項1記載の画像処理装置。
  3. 前記親レコードは、当該親コードに対応するラベルが付された画素の系列における末尾の画素に対応する子レコードの前記記憶装置内でのアドレスを記憶する第1の欄を有し、
    前記第2の手段は、前記第1のラベルが付された画素の系列における末尾の画素に対応する子レコードを、前記第1の親レコードが有する前記第1の欄内のアドレスに基づき特定すると共に、その後、前記第1の親レコードが有する前記第1の欄内のアドレスを前記第1の子レコードの前記記憶装置内でのアドレスに書き換える、
    ことを特徴とする請求項1記載の画像処理装置。
  4. コンピュータを、
    注目画素に対応する参照ウインドウ内にラベルが付された画素がなければ、その注目画素の座標を含んだ子レコードを記憶装置に記憶すると共に、新たなラベルと前記子レコードの前記記憶装置内でのアドレスとを含む親レコードを前記記憶装置に記憶する第1の手段と、
    前記参照ウインドウ内に第1のラベルが付された画素があれば、その注目画素の座標を含んだ第1の子レコードを記憶装置に記憶すると共に、前記第1のラベルを含んだ第1の親レコードを前記記憶装置から検索し、検索された前記第1の親レコードに含まれる子レコードのアドレスに基づき前記第1のラベルが付された画素の系列における末尾の画素に対応する子レコードを特定し、特定した子レコードに対し、前記第1の子レコードの前記記憶装置内でのアドレスを次の子レコードのアドレスとして登録する第2の手段と、
    前記参照ウインドウ内に前記第1のラベルとは異なる第2のラベルを持つ画素があれば、前記第2のラベルを含んだ第2の親レコードを前記記憶装置から検索し、検索された前記第2の親レコードの前記記憶装置内でのアドレスを前記第1の親レコードに対して次の親レコードのアドレスとして登録する第3の手段と、
    前記親レコードに含まれる前記次の親レコードのアドレスを連鎖的に辿ることで同一ラベルに対応する親レコード群を特定し、特定された親レコード群に含まれる子レコードのアドレスを用いて当該子レコードにアクセスし、当該子レコードを起点として各子レコードに含まれる前記次の子レコードのアドレスを連鎖的に辿ることで、前記同一ラベルに対応する各画素の座標を収集する第4の手段と、
    して機能させるためのプログラム。
JP2007239596A 2007-09-14 2007-09-14 画像処理装置及びプログラム Active JP4720805B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007239596A JP4720805B2 (ja) 2007-09-14 2007-09-14 画像処理装置及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007239596A JP4720805B2 (ja) 2007-09-14 2007-09-14 画像処理装置及びプログラム

Publications (2)

Publication Number Publication Date
JP2009070250A JP2009070250A (ja) 2009-04-02
JP4720805B2 true JP4720805B2 (ja) 2011-07-13

Family

ID=40606410

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007239596A Active JP4720805B2 (ja) 2007-09-14 2007-09-14 画像処理装置及びプログラム

Country Status (1)

Country Link
JP (1) JP4720805B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7242273B2 (ja) * 2018-11-30 2023-03-20 コイト電工株式会社 画像処理装置及び画像処理方法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6273382A (ja) * 1985-09-26 1987-04-04 Sumitomo Electric Ind Ltd ラベル付け方法
JPH05197805A (ja) * 1992-01-22 1993-08-06 Sumitomo Metal Ind Ltd ラベリング方法
JPH05342350A (ja) * 1992-06-09 1993-12-24 Nippon Telegr & Teleph Corp <Ntt> 画像処理装置
JPH11345333A (ja) * 1998-06-02 1999-12-14 Nec Corp ラベリング処理システム及び方法

Also Published As

Publication number Publication date
JP2009070250A (ja) 2009-04-02

Similar Documents

Publication Publication Date Title
US8265350B2 (en) Method and apparatus for detecting and processing specific pattern from image
JP4803493B2 (ja) ラベルイメージの生成方法および画像処理システム
JP4859390B2 (ja) 画像処理方法及び画像処理装置
CN101676930A (zh) 一种识别扫描图像中表格单元的方法及装置
CN102243704A (zh) 用于二维码的定位系统、二维码的识别方法及设备
US9633256B2 (en) Methods and systems for efficient automated symbol recognition using multiple clusters of symbol patterns
US20160042246A1 (en) A haar calculation system, an image classification system, associated methods and associated computer program products
CN103390275B (zh) 动态图像拼接的方法
JP6856956B2 (ja) 長距離高密度視覚マーカの検出および認識方法
JP2891616B2 (ja) 仮ラベル割付処理方式と実ラベル割付処理方式
CN108876701B (zh) 一种基于游程的单次扫描连通域标记方法及其硬件结构
JP2010102584A (ja) 画像処理装置及び画像処理方法
US9710703B1 (en) Method and apparatus for detecting texts included in a specific image
US9858293B2 (en) Image processing apparatus and image processing method
JP4720805B2 (ja) 画像処理装置及びプログラム
US20230169784A1 (en) Text processing method and apparatus, and electronic device and storage medium
JP2004288158A (ja) 最短サイクルによる画像分割
US8937624B2 (en) Method and apparatus for translating memory access address
US20090153560A1 (en) Multiple source waveform drawing system and method
US20190258888A1 (en) Hardware and system of bounding box generation for image processing pipeline
JP2013178670A (ja) 情報処理装置、情報処理方法
US20190065914A1 (en) Image processing device, setting support method, and non-transitory computer-readable media
JP2012164108A (ja) ラベリング処理装置及びラベリング処理方法
US10043081B2 (en) Image processing device and image processing program
JP5300666B2 (ja) ラベリング処理方法、並びにそのシステム、装置及びプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090210

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110224

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110308

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110321

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140415

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150