情報処理装置、および情報処理方法、並びにプログラム
【課題】画像に対するラベリング処理を簡略化した構成で効率的に実現する構成を提供する。
【解決手段】データ処理部を複数のデータ処理要素によって構成し、各データ処理要素が1つ以上の画素に対応するラベルとラベル変換情報を保持し、これらの保持情報の要素間の転送、参照を行って、ラベル決定処理やラベル更新処理を実行する構成とした。本構成により、ラベル変換情報をまとめたテーブルを保持する必要を排除し、テーブル記憶のための共有メモリや、テーブルを整理するための処理が不要となり、メモリと回路規模の削減を実現することが可能となる。また、回路構成をシンプルにすることができるため、局所メモリしか持たないSIMD型プロセッサやシストリックアレーを用いてラベリング処理を実現することが可能となる。
【解決手段】データ処理部を複数のデータ処理要素によって構成し、各データ処理要素が1つ以上の画素に対応するラベルとラベル変換情報を保持し、これらの保持情報の要素間の転送、参照を行って、ラベル決定処理やラベル更新処理を実行する構成とした。本構成により、ラベル変換情報をまとめたテーブルを保持する必要を排除し、テーブル記憶のための共有メモリや、テーブルを整理するための処理が不要となり、メモリと回路規模の削減を実現することが可能となる。また、回路構成をシンプルにすることができるため、局所メモリしか持たないSIMD型プロセッサやシストリックアレーを用いてラベリング処理を実現することが可能となる。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、画像の解析により連続する画素領域であるか否かの判定を行い、連結画素領域を区別可能とするための画素対応のラベル設定処理であるラベリング処理を実行する画像処理装置、および画像処理方法、並びにプログラムに関する。
【背景技術】
【0002】
画像の解析により画像から1つの連続するオブジェクトなどを抽出するための手法としてラベリング処理が知られている。2値画像に対するラベリング処理について図1を参照して説明する。ラベリング処理は、連結画素集合ごとにラベルを割り振る処理として行われる。なお、ラベリング処理については、例えば特許文献1(特開2004−164017号公報)に記載されている。
【0003】
図1(a)は、最終的なラベリング処理結果を示している。図1(b)は、ラベリング処理の過程において行われるラベル変換情報を用いた再ラベリング処理について説明する図である。
【0004】
ラベリング処理の最終結果は、図1(a)に示すように、連結画素集合ごとに異なるラベルが設定された結果となる。図1(a)にはラベル[1]の設定された連結画素集合と、ラベル[2]の設定された連結画素集合とが識別されている。
【0005】
例えば、2値画像を構成する画素は白画素(画素値=0)と黒画素(画素値=1)によって構成される。ラベル設定対象画素を、画素値=1の黒画素とする。なお、図面ではラベル値を記載するために黒画素を灰色で示している。本処理例におけるラベリング処理は、図1(a)に示す点線矢印で示す処理順序11のように、画像の左上から右下に向かって画素を走査する、いわゆるラスタスキャンでラベルを割り振る設定とする。
【0006】
ラスタスキャンでラベルを割り振る場合の従来の一般的な手法について説明する。まず、ラベリング処理は、仮ラベリング処理と再ラベリング処理から構成される。まず、仮ラベリング処理において画像を1回スキャンして、仮ラベリング処理を実行する。その後、仮ラベリング処理のなされた画像に対してスキャンを実行して、再ラベリング処理を行う。
【0007】
仮ラベリング処理は、ラスタスキャンで新しい連結画素集合が現れるごとに新しいラベル(例えば番号:1,2,3・・・)を割り振る。ただし、1回目のスキャンにおける仮ラベリング処理のラベル設定過程では連結画素のすべてを正しく判定することはできない。すなわち、スキャンされていない未スキャン部の画像の後半部で連結している場合などの場合である。
【0008】
仮ラベリング処理のラベル設定処理において誤って設定されたラベルを修正するために再ラベリング処理が実行されることになる。仮ラベリング処理において、同一の連結画素集合であるにもかかわらず異なったラベルが割り振られた部分のラベル変換情報を生成し、再ラベリング処理においてラベル変換情報に従ってラベルを更新していく。
【0009】
ラベル変換情報を用いた再ラベリング処理について、図1(b)を参照して説明する。仮ラベリング処理で画素21まで走査したところで、それまでに設定していたラベル2を設定した連結画素集合と、ラベル3を設定した連結画素集合とが、同一の連結画素集合であることが判明する。このような場合、ラベル3はラベル2に変更すべきであると判定し、ラベル3からラベル2への変換情報[ラベル3→ラベル2]をメモリに保持する。
【0010】
次に、再ラベリング処理で、メモリに保持した変換情報[ラベル3→ラベル2]を参照して、再スキャンを実行し、ラベル3の設定された画素をラベル2に変更する処理を実行する。この処理によって、図1(a)のような最終的なラベリング処理結果が得られる。
【0011】
上記のような従来のラベリング処理では、以下のような問題点が挙げられる。
まず、ラベル変換情報をまとめてテーブルとして保持するメモリが必要になることである。上記の例では、変換情報として1つの変換情報[ラベル3→ラベル2]を利用した例を示したが、画像が複雑化し、大きな画像になると、この変換情報のデータ量は膨大になる。
【0012】
ラベル変換情報の数は仮ラベリング処理が終了するまで判明しないため、2値画像のサイズから想定される最大数のラベル変換情報数を保持するためのメモリを用意しておく必要がある。
【0013】
また、仮ラベリンング処理後に複数のラベル変換情報が存在した場合、1つの連結画素集合に1つのラベルが割り振られるように、ラベル変換情報をまとめたテーブルを作成して整理する必要がある場合がある。
例えば、仮ラベル設定処理に際して、
変換情報[ラベル3→ラベル2]
変換情報[ラベル4→ラベル3]
このような2つの変換情報が作成されることがあるが、これらの変換情報は、結果として、
変換情報[ラベル3,4→ラベル2]
として、ラベル3,4,をラベル2に変換する設定に整理しなければならない。このような処理のために、ラベル変換情報を処理するためのプロセッサなどが必要になる。
【0014】
さらに、SIMD (Single Instruction stream Multiple Data stream)型プロセッサでラベリング処理を行う場合は、各プロセッサエレメント(PE:Processer Element)がラベル変換情報を保持した共有メモリにアクセスするための機構が必要となり、回路規模が増えることになる。
【0015】
以上のことから、従来のラベリング処理のように、ラベル変換情報をまとめてテーブルとして保持する方法は、メモリ量と計算コスト、回路規模の点から適切な方法であるとは言い難い。
【特許文献1】特開2004−164017号公報
【発明の開示】
【発明が解決しようとする課題】
【0016】
本発明は、例えば上述した問題点に鑑みてなされたものであり、ラベル変換情報をまとめてテーブルとして保持せずに、個々のラベル変換情報を分散させて保持し、これらの情報を利用してラベリング処理を行うことで、テーブルのための共有メモリや、テーブルを整理するための処理を不要として効率的なラベリング処理を実現する情報処理装置、および情報処理方法、並びにプログラムを提供することを目的とする。
【課題を解決するための手段】
【0017】
本発明の第1の側面は、
入力画像を構成する画素の画素値を入力し、入力画素値に基づく連結画素判定処理を実行して、連結画素集合単位のラベルを設定するラベリング処理を実行するデータ処理部を有し、
前記データ処理部は複数のデータ処理要素によって構成され、各データ処理要素が、1つ以上の画素に対応するラベルとラベル変換情報を保持する記憶部と、ラベル決定またはラベル更新の少なくともいずれかの処理を行う演算部を有する構成である画像処理装置にある。
【0018】
さらに、本発明の画像処理装置の一実施態様において、前記画像処理装置は、さらに、入力画像を構成する画素の画素値データを格納する入力レジスタと、前記データ処理部における処理結果である前記入力画像の構成画素対応のラベルの値を格納する出力レジスタを有し、前記データ処理部は、前記入力レジスタの格納値を入力して、画素値に基づく連結画素判定処理を実行して、連結画素集合単位のラベルを設定するラベリング処理を実行して、処理結果としてのラベルの値を前記出力レジスタに出力する構成である。
【0019】
さらに、本発明の画像処理装置の一実施態様において、前記データ処理部は、前記入力画像の画素値を、規定スキャン方向に従って入力して、画素対応のラベルとラベル変換情報を算出する仮ラベリング処理と、前記仮ラベリング処理結果として得られる画素対応のラベルを、前記仮ラベリング処理と逆のスキャン方向に従って入力し、入力情報に従って設定済みラベルの値を更新する再ラベリング処理を実行する構成である。
【0020】
さらに、本発明の画像処理装置の一実施態様において、前記データ処理部を構成するデータ処理要素の各々は、前記ラベル変換情報を適用して、各データ処理要素の記憶部に格納したラベルの更新を行う構成である。
【0021】
さらに、本発明の画像処理装置の一実施態様において、前記データ処理部のデータ処理要素の各々は、前記メモリに保持したラベルおよびラベル変換情報を異なるデータ処理要素間で転送する処理を行う構成である。
【0022】
さらに、本発明の画像処理装置の一実施態様において、前記画像処理装置は、入力レジスタと、プロセッサエレメントと、出力レジスタからなるセットを複数有するSIMD(Single Instruction stream Multiple Data stream)型構成を有し、各プロセッサエレメント(PE:Processer Element)の局所メモリに1つ以上の画素に対応するラベルとラベル変換情報を保持し、各プロセッサエレメントにおいてラベル算出を行う構成である。
【0023】
さらに、本発明の画像処理装置の一実施態様において、前記プロセッサエレメントの各々は、ラベル算出処理およびラベル変換情報の適用処理を並列に実行する構成である。
【0024】
さらに、本発明の画像処理装置の一実施態様において、前記プロセッサエレメントの各々は、前記局所メモリに保持したラベルとラベル変換情報を異なるプロセッサエレメント間で転送する処理を行う構成である。
【0025】
さらに、本発明の画像処理装置の一実施態様において、前記データ処理部は、複数の素子からなるシストリックアレー構成を有し、前記素子の各々が1つ以上の画素に対応するラベルとラベル変換情報を保持して、ラベル変換情報を適用したラベル更新処理を実行する構成である。
【0026】
さらに、本発明の画像処理装置の一実施態様において、前記データ処理部は、さらに、複数の参照画素のラベルを入力して画素のラベルの決定および更新を実行するラベル決定部を有する構成である。
【0027】
さらに、本発明の画像処理装置の一実施態様において、前記複数の素子の各々は、各素子において保持したラベルとラベル変換情報を異なる素子間で転送する処理を行う構成である。
【0028】
さらに、本発明の第2の側面は、
画像処理装置においてラベリング処理を実行する画像処理方法であり、
複数のデータ処理要素を有するデータ処理部が、入力画像を構成する画素の画素値に基づく連結画素判定処理を実行して、連結画素集合単位のラベルを設定するラベリング処理を実行するデータ処理ステップを有し、
前記データ処理ステップは、
前記複数のデータ処理要素の各々が、1つ以上の画素に対応するラベルとラベル変換情報をデータ処理要素対応の記憶部に格納するステップと、
前記複数のデータ処理要素の各々が、前記記憶部の保持情報を利用したラベル決定処理またはラベル更新処理の少なくともいずれかの処理を行うステップと、
を含むステップであることを特徴とする画像処理方法にある。
【0029】
さらに、本発明の第3の側面は、
画像処理装置においてラベリング処理を実行させるプログラムであり、
複数のデータ処理要素を有するデータ処理部に、入力画像を構成する画素の画素値に基づく連結画素判定処理を実行させて、連結画素集合単位のラベルを設定するラベリング処理を実行させるデータ処理ステップを有し、
前記データ処理ステップは、
前記複数のデータ処理要素の各々に、1つ以上の画素に対応するラベルとラベル変換情報をデータ処理要素対応の記憶部に格納させるステップと、
前記複数のデータ処理要素の各々に、前記記憶部の保持情報を利用したラベル決定処理またはラベル更新処理の少なくともいずれかの処理を行わせるステップと、
を含むステップであることを特徴とするプログラムにある。
【0030】
なお、本発明のプログラムは、例えば、様々なプログラム・コードを実行可能な汎用コンピュータ・システムに対して、コンピュータ可読な形式で提供する記憶媒体、通信媒体によって提供可能なコンピュータ・プログラムである。このようなプログラムをコンピュータ可読な形式で提供することにより、コンピュータ・システム上でプログラムに応じた処理が実現される。
【0031】
本発明のさらに他の目的、特徴や利点は、後述する本発明の実施例や添付する図面に基づくより詳細な説明によって明らかになるであろう。なお、本明細書においてシステムとは、複数の装置の論理的集合構成であり、各構成の装置が同一筐体内にあるものには限らない。
【発明の効果】
【0032】
本発明の一実施例の構成によれば、画像に対するラベリング処理を行う構成において、データ処理部を複数のデータ処理要素によって構成し、各データ処理要素が1つ以上の画素に対応するラベルとラベル変換情報を保持し、これらの保持情報の要素間の転送、参照を行って、ラベル決定処理やラベル更新処理を実行する構成とした。本構成により、ラベル変換情報をまとめたテーブルを保持する必要を排除し、テーブル記憶のための共有メモリや、テーブルを整理するための処理が不要となり、メモリと回路規模の削減を実現することが可能となる。また、回路構成をシンプルにすることができるため、局所メモリしか持たないSIMD型プロセッサやシストリックアレーを用いてラベリング処理を実現することが可能となる。
【発明を実施するための最良の形態】
【0033】
以下、図面を参照しながら本発明の画像処理装置、および画像処理方法、並びにプログラムの詳細について説明する。
【0034】
図2を参照して本発明の一実施例に従った画像処理装置の構成および処理シーケンスの概要について説明する。画像121は2値の入力画像であり、仮ラベリング処理部101を経て仮ラベリングされた画像122が出力される。仮ラベリング処理部101における仮ラベリング処理は、画素に対するラベル(1,2,3等のラベル値)の設定およびラベル変換情報の設定処理である。具体的処理については後述する。
【0035】
さらに、画像122は再ラベリング処理部102を経て、再ラベリングがなされ最終的なラベル設定画像123が出力される。再ラベリング処理部102における再ラベリング処理は、ラベルの設定およびラベル変換情報の設定された画素のラベルの更新およびラベル変換情報の更新処理である。具体的処理については後述する。
【0036】
仮ラベリング処理部101は、画像111に対して、スキャン順131に示すように画像の左上の画素を起点としてラスタスキャンをして仮ラベリング処理を行う。再ラベリング処理部102は、画像112に対して、スキャン順132に示すように画像の右下の画素を起点として、仮ラベリング時のスキャンとは逆のスキャン順でラスタスキャンをして再ラベリング処理を行う。
【0037】
例えば処理対象とする画像121が、図3(a)に示すような、幅10画素、高さ3画素の入力画像であったとする。図3では、各画素に便宜的に設定した番号を示している。
仮ラベリング処理部101では、図3(b)に示すように左上の画素1を起点として、画素1〜30の順番で仮ラベリング処理を実行する。
また、再ラベリング処理部102では、図3(c)に示すように右下の画素30を起点として、画素30〜1の順番で処理を実行する。
【0038】
なお、各画素に対するラベル設定は、先行スキャン画素におけるラベル設定済みの画素との連続性を考慮して行なわれることになる。ラベル設定の態様としては、いくつかの処理手法がある。具体的には、近傍8画素を参照画素としてラベルを決定する態様、近傍4画素を参照画素としてラベルを決定する態様などがある。
【0039】
これらの処理例について図4を参照して説明する。
図4(1)は、仮ラベリング処理部101での仮ラベリング処理における以下の処理例、すなわち、
(1a)近傍8画素を参照画素としてラベル情報を設定する処理例、
(1b)近傍4画素を参照画素としてラベル情報を設定する処理例、
これらの処理例を示している。
なお、いずれの場合もそれぞれスキャン済みの画素のみが参照画素として設定されることになる。
(1a)の場合は、処理対象画素であるラベル情報設定画素211に対して、近傍8画素中、スキャン済みの画素を参照画素として、参照画素に設定されたラベル情報を参照してラベル情報を設定する。なおラベル情報には、
ラベル、
ラベル変換情報、
これらの情報が含まれる。具体的内容については後述する。
【0040】
(1b)の場合は、処理対象画素であるラベル情報設定画素212に対して、近傍4画素中、スキャン済みの画素を参照画素として参照画素として、参照画素に設定されたラベル情報を参照してラベル情報(ラベル、ラベル変換情報)を設定する。
【0041】
図4(2)は、再ラベリング処理部102での再ラベリング処理における以下の処理例、すなわち、
(2a)近傍8画素を参照画素としてラベル情報を更新する処理例、
(2b)近傍4画素を参照画素としてラベル情報を更新する処理例、
これらの処理例を示している。なおラベル情報には、
ラベル、
ラベル変換情報、
これらの情報が含まれる。
【0042】
(2a)の場合は、ラベル情報更新画素221に対して、近傍8画素中、スキャン済みの画素を参照画素としてラベルを決定する。
(2b)の場合は、ラベル情報更新画素222に対して、近傍4画素中、スキャン済みの画素を参照画素としてラベルを決定する。
【0043】
ただし、先に説明したように、再ラベリング処理部102の処理では、スキャン方向が仮ラベリング処理部101のスキャン方向とは逆になる。従って、再ラベリング処理においては、逆方向のスキャン順に従って、スキャン済み画素のラベルを参照が素とする。ただし、仮ラベリング処理において設定されたラベル情報もメモリに保存されており、これらを参照対象として設定することも可能である。
【0044】
図5以下を参照して、仮ラベリング処理部101において実行する仮ラベリング処理の具体的処理について説明する。
仮ラベリング処理部101において実行する仮ラベリング処理は、各画素について以下の3つのステップからなる処理を実行する。以下の3ステップを1サイクルとし、この1サイクルをすべての画素に対して実行する。
ステップA−1:入力された画素にラベルを付与するとともに、ラベル変換情報を作成する
ステップA−2:ラベル変換情報をラベルに適用する
ステップA−3:ラベル変換情報を隣接する画素に移動させてからラベルに適用する
【0045】
ステップA−1の処理は、入力画素に対するラベル設定と、ラベル変換情報の作成である。図5に示すように、1つの画素に対して、
ラベルLとラベル変換情報(S、D)
これらの情報を保持する。
ラベルLは、先に図1を参照して説明したと同様の連結画素集合単位で設定されるラベルである。
ラベル変換情報(S,D)は、「ラベルSをラベルDに変換する」という意味を持つ。
【0046】
メモリに保持する情報は、画素に対して設定されたラベル情報、すなわち、
ラベル[L]と、
ラベル変換情報(S,D)
である。
メモリには、ラベルLの値を全画素数分を保持する。しかし、ラベル変換情報(S、D)については、画像の幅の半分の画素数に当たる分だけ保持すればよい。この理由については後述する。
【0047】
ステップA−2、3でいう「ラベル変換情報(S,D)をラベルに適用する」とは、「ラベルLがラベル変換情報のSに等しい場合は、ラベル変換情報のDに変換する」という意味である。また、1画像に対して1つラベルカウンタを持つ。ラベルカウンタは、新たに設定するラベルの値を保持したカウンタであり、
初期値を[0]、その後、[1],[2],・・・とインクリメントする。すなわち最初のラベル設定画素に対してはラベルカウンタの[0]がラベルとして設定される。
【0048】
なお、初期値を[1]、その後、[2],[3],・・・とインクリメントする設定としてもよい。この設定では最初のラベル設定画素に対してはラベルカウンタの[1]がラベルとして設定される。
【0049】
ラベルカウンタのラベル値が使用されると、ラベルカウンタの値はインクリメントされる。例えばラベルL=0の設定された画素と連結するラベル付与画素(例えば黒)には同一のラベル=0が設定され、非連結のラベル付与画素(黒)が出現した場合、次のラベルカウンタの値[1]がその画素のラベルとして設定される。
【0050】
図6は、仮ラベリング処理において、近傍8画素を参照画素としてラベル情報設定を行う場合の具体的処理例について説明する図である。ラベル情報にはラベルとラベル変換情報が含まれる。なお、前述したように、実際に参照する画素は、近傍8画素中のスキャン済みの隣接画素となる。
【0051】
図6(a)は、新たにラベル情報を付与する画素231の周囲のスキャン済み隣接画素にラベル情報が付与された画素が存在しない場合である。この場合はラベルカウンタの設定値を画素231に付与する。ラベルカウンタの値が[0]であるとすると、設定するラベル値は[0]となる。図には[L0]として示す。この設定後、ラベルカウンタの値をインクリメントする。また、ラベル変換情報は(0、0)とする。このラベル変換情報は、ラベル[0]の値をラベル[0]に変換するという意味であり、実質的にはラベル設定値の変更処理はなされない。
【0052】
図6(b)は、ラベル情報を付与する画素232の周囲のスキャン済み隣接画素にすでにラベル情報を付与された画素が1つ、ないし複数あり、それらが同一のラベル[L1]を有する場合である。この場合は周囲の画素のラベルと同一のラベル[L1]を画素232に付与する。また、ラベル変換情報は(0、0)とする。
【0053】
図6(c)は、ラベル情報を付与する画素233の周囲のスキャン済み隣接画素にすでにラベルを付与された画素が複数あり、それらのラベルが異なっている場合である。この場合は周囲の隣接画素のラベルの中で最小のラベルを、画素233に付与する。さらに隣接画素のラベルの中で最大のラベルを最小のラベルに変換する情報をラベル変換情報として設定する。
【0054】
例えば、画素234はラベル[L1]、画素235はラベル[L2]が設定されている。ラベルの値の比較を行うと、L1<L2である。この場合、新たにラベルを設定する画素233には、周囲の画素のラベルの中で最小のラベルを設定する。従って、画素233のラベルは[L1]に設定する。
【0055】
また、隣接画素のラベルの中で最大のラベルを最小のラベルに変換する情報をラベル変換情報として保持する。従って、画素233に対応するラベル変換情報は、(L2、L1)として設定する。このラベル変換情報(L2、L1)は、ラベル[L2]をラベル[L1]に変換する処理が必要であることを示す変換情報である。
【0056】
この変換情報は、画素233がラベル[L1]に設定されたことにより、ラベル[L2]の設定画素とラベル[L1]の設定画素が連結されたことによって設定される変換情報である。すなわち、ラベル[L2]の設定画素とラベル[L1]の設定画素が1つの連結画素集合となったことに基づいて設定される。
【0057】
次に、再ラベリング処理部102での再ラベリング処理について説明する。再ラベリング処理部102での再ラベリング処理は、各画素について以下の3つのステップからなる処理を実行する。以下の3ステップを1サイクルとし、この1サイクルをすべての画素に対して実行する。
ステップB−1:ラベルを更新するとともに、ラベル変換情報を更新する
ステップB−2:ラベル変換情報をラベルに適用する
ステップB−3:ラベル変換情報を隣接する画素に移動させてからラベルに適用する
【0058】
図7は、再ラベリング処理において、近傍8画素を参照画素としてラベル設定を行う場合の具体的処理例について説明する図である。なお、前述したように、再ラベリング処理においては、仮ラベリング処理と逆方向のスキャンを実行する。
【0059】
図7(a)は、ラベル変換情報更新画素241の周囲のスキャン済み隣接画素にラベルが付与された画素が存在しない場合である。この場合はラベルとラベル変換情報の更新は行わない。
【0060】
図7(b)は、ラベル変換情報更新画素242の周囲のスキャン済み隣接画素にラベルが付与された画素が1つ、ないし複数あり、それらがすべて画242と同一のラベル[L1]である場合である。この場合はラベルとラベル変換情報の更新は行わない。
【0061】
図7(c)は、ラベル変換情報更新画素243の周囲のスキャン済み隣接画素にラベルが付与された画素が複数あり、それらのラベルが異なっている場合である。この場合は、
画素243のラベルを周囲の画素のラベルの中で最小のラベルに更新し、
さらに、画素243のラベル変換情報を、画素243のラベルの値を、ラベル変換情報更新画素243の周囲のスキャン済み隣接画素中の最小のラベル値に変換する情報に更新する。
【0062】
例えば、ラベル変換情報更新画素243の周囲の画素の1つである画素244はラベルL2、画素245はラベルL1の場合、L1<L2であるので、画素243の1605のラベルは[L1]に更新され、ラベル変換情報は(L2、L1)となる。このラベル変換情報(L2、L1)は、ラベル[L2]をラベル[L1]に変換する処理が必要であることを示す変換情報である。
【0063】
図8は、先に図3を参照して説明したと同様の幅10画素、高さ3画素の入力画像に対する例を表している。数字は便宜的に各画素に付けた番号を表す。
【0064】
次に、具体的な処理例について、図8に示すような2値画像に対する処理例を説明する。この画像は2値画像であり、図に灰色で示されている画素をラベル設定対象として、各連結画素集合単位のラベルを付与するものとする。
【0065】
図9、図10は、図8の2値画像に対する仮ラベリング処理のシーケンスについて説明する図である。図2に示す仮ラベリング処理部101は、図8の2値画像を入力して、左上端画素から右下端画素に向けてスキャンを実行して仮ラベリング処理を実行する。図9〜図10に示す(A)〜(H)の順番で処理が進行する。仮ラベリング処理は、先に説明したように、各画素について以下の3つのステップからなる処理を実行する。以下の3ステップを1サイクルとし、この1サイクルをすべての画素に対して実行する。
ステップA−1:入力された画素にラベルを付与するとともに、ラベル変換情報を作成する
ステップA−2:ラベル変換情報をラベルに適用する
ステップA−3:ラベル変換情報を隣接する画素に移動させてからラベルに適用する
【0066】
なお、仮ラベリング処理では、先に説明したようにスキャンは左上端画素から右下端画素に向けて実行される。図9〜図10に示す(A)〜(H)に示す太い実線で囲まれた画素はステップA−1でラベルが付与される画素を、太い点線で囲まれた画素は、ステップA−2ないしはステップA−3でラベルが変換されたことを表している。なお、以下に説明する処理例では、ラベルカウンタの初期値は[1]として、ラベルの値は、1,2,3・・の順で設定するものとする。
【0067】
図9(A)では、画素301に隣接するスキャン済み画素にラベルを付与された画素がないので、ラベルカウンタの初期値[1]を、画素301のラベルとして付与し、ラベルカウンタの値をインクリメントして[2]とする。ラベル変換情報は(0、0)となる。ラベル変換情報は(0、0)は実質的なラベル変換処理は不要であることを示している。
【0068】
図9(B)では、画素302に隣接するスキャン済み画素にラベルを付与された画素がないので、ラベルカウンタの値[2]をラベルとして付与し、ラベルカウンタの値をインクリメントして[3]とする。ラベル変換情報は(0、0)となる。
【0069】
図9(C)は、仮ラベリングが進行し、画素303に対する仮ラベル設定処理に至った状態を示している。画素303に隣接するスキャン済み画素にラベルを付与された画素として画素304〜306の画素がある。これらのラベル設定画素中、最小のラベルは[1]である。従って、画素303には、隣接する画素中のラベル最小値[1]を設定する。
【0070】
また、ラベル[1]の設定された画素303に隣接する画素中、ラベル[1]より大きい値を持つラベル[2]の画素は、ラベル[1]の設定された画素303に連結することになり、ラベル[1]に変換可能であることが判明する。この場合、画素303に対してラベル変換情報(2、1)を設定する。
【0071】
また、図9(C)では、ステップA−2で、ラベル[2]の設定されている画素305のラベルが、画素303に設定されたラベル変換情報(2、1)を適用して、[2]から[1]に変換される。
【0072】
図9(D)は、画素307に対する仮ラベル設定処理に至った状態を示している。また、この図9(D)において点線太枠で示す画素308は、ステップA−2によってラベルが2から1に変換されたことを表している。
【0073】
図9(D)では、画素307に隣接する周囲のスキャン済み画素中、ラベル設定画素308〜309があり、いずれもラベルは1である。従って画素307に対しては、ラベル[1]を付与する。また、ラベル[1]の設定された画素307に隣接する画素中、ラベル[1]より大きい値を持つ画素は存在しない。従って、ラベル変換情報は(0、0)となる。
【0074】
図10(E)は、画素310に対する仮ラベル設定処理に至った状態を示している。図10(E)の画素312は、図9(C)に示す画素303のラベル変換情報(2、1)によってラベルが2から1に変換されている。
【0075】
画素310の周囲のスキャン済み画素中、ラベル設定画素311、312があり、ラベルは1が最小なので、画素310のラベルは[1]に設定する。
また、また、ラベル[1]の設定された画素310に隣接する画素中、ラベル[1]より大きい値を持つラベル[3]の画素は、ラベル[1]の設定された画素310に連結することになり、ラベル[1]に変換可能であることが判明する。この場合、画素310に対してラベル変換情報(3、1)を設定する。
【0076】
図10(F)は、画素313に対する仮ラベル設定処理に至った状態を示している。図10(F)に示す画素314、315は、図10(E)で示す画素301に設定されたラベル変換情報(3、1)により、いずれもラベルが3から1に変換される。この変換処理の後、画素313に対してラベル設定を行う。画素313の周囲のスキャン済み画素中、ラベル設定画素314、315があり、これらは変換処理によって[1]が設定されており、この値が最小なので、画素313のラベルは[1]に設定する。
【0077】
また、ラベル[1]の設定された画素313に隣接する画素中、ラベル[1]より大きい値を持つ画素は存在しない。従って、ラベル変換情報は(0、0)となる。
【0078】
図10(G)は、画素316に対する仮ラベル設定処理に至った状態を示している。図10(G)では、画素316の周囲のスキャン済み画素中、ラベル設定画素として画素317、318がある。これらの画素中のラベルの値として、ラベル1が最小なので、画素316にはラベル[1]を設定する。
【0079】
また、ラベル[1]の設定された画素316に隣接する画素中、ラベル[1]より大きい値を持つラベル[4]の画素は、ラベル[1]の設定された画素316に連結することになり、ラベル[1]に変換可能であることが判明する。この場合、画素316に対してラベル変換情報(4、1)を設定する。
【0080】
図10(H)は、画素323に対する仮ラベル設定処理に至った状態を示している。図10(H)の画素319〜323は、図14(G)に示す画素318のラベル変換情報(4、1)を適用して、いずれもラベルが4から1に変換される。
【0081】
画素323の周囲のスキャン済み画素中、ラベル設定画素として画素322があり、ラベル1が最小なので、画素323にはラベル[1]を設定する。
【0082】
このような処理が、下右端の画素まで行われ、最終的に図10(H)に示す結果が、仮ラベリング処理の結果として出力される。
【0083】
次に、図11を参照して、図10(H)に示す仮ラベリング処理結果に対する再ラベリング処理について説明する。図11は、図10(H)に示す仮ラベリング処理結果に対する再ラベリング処理のシーケンスについて説明する図である。図2に示す再ラベリング処理部102は、図10(H)に示す仮ラベリング処理結果を入力して、右下端画素から左上端画素に向けてスキャンを実行して再ラベリング処理を実行する。図11に示す(A)〜(D)の順番で処理が進行する。
【0084】
再ラベリング処理は、先に説明したように、各画素について以下の3つのステップからなる処理を実行する。以下の3ステップを1サイクルとし、この1サイクルをすべての画素に対して実行する。
ステップB−1:ラベルを更新するとともに、ラベル変換情報を更新する
ステップB−2:ラベル変換情報をラベルに適用する
ステップB−3:ラベル変換情報を隣接する画素に移動させてからラベルに適用する
図11(A)〜(D)において、太い実線で囲まれた画素はステップB−1でラベルが更新された画素を表している。
【0085】
なお、前述したように、再ラベリング処理においては、仮ラベリング処理と逆方向のスキャンを実行する。参照する画素は、再ラベリング処理においてスキャン済みの隣接画素となる。
【0086】
図11(A)は、右下端画素から左上端画素に向けてスキャンを実行し、処理対象画素が画素351に至った状態を示している。再ラベリング処理におけるスキャン済み画素の中で、画素351の周囲にあるラベル設定画素は画素352、353である。これらの隣接画素に設定されたラベル中、最小ラベルは[1]なので画素351の画素のラベルを4から1に更新する。また、この結果として、ラベル[4]の画素は、ラベル[1]に変更可能なことが判明し、画素351のラベル変換情報を(4、1)に更新する。
【0087】
図11(B)は、処理対象画素が画素354に至った状態を示している。再ラベリング処理におけるスキャン済み画素の中で、画素354の周囲にあるラベル設定画素は画素355である。この画素が最小のラベル設定画素であり、ラベルは[1]なので画素354の画素のラベルを4から1に更新する。また、この結果として、ラベル[4]の画素は、ラベル[1]に変更可能なことが判明し、画素354のラベル変換情報を(4、1)に更新する。
【0088】
図11(C)は、処理対象画素が画素358に至った状態を示している。再ラベリング処理におけるスキャン済み画素の中で、画素358の周囲にあるラベル設定画素は画素359である。この画素が最小のラベル設定画素であり、ラベルは[1]なので画素358の画素のラベルを2から1に更新する。また、この結果として、ラベル[2]の画素は、ラベル[1]に変更可能なことが判明し、画素358のラベル変換情報を(2、1)に更新する。
【0089】
これらの処理を左上端の画素まで実行すると、最終的には、図11(D)に示す情報が再ラベリング処理の結果として出力される。
【0090】
次に、さらに、図12以下を参照して具体的な仮ラベリング処理の処理例について説明する。図12に示す画像400に含まれる画素領域401の構成画素に対する仮ラベリング処理の例について説明する。図12の画素領域401の画素の仮ラベリング処理例について図13以下を参照して説明する。
【0091】
図13(A)は現在の処理状態、すなわち画素番号[12]を仮ラベリング処理対象画素とした処理状態を示す。
仮ラベリング処理は、先に説明したように、
ステップA−1:入力された画素にラベルを付与するとともに、ラベル変換情報を作成する
ステップA−2:ラベル変換情報をラベルに適用する
ステップA−3:ラベル変換情報を隣接する画素に移動させてからラベルに適用する
これらの処理ステップによって構成される。
【0092】
図13(B)〜(D)は仮ラベリング処理部101が、画素(画素12)をラベル情報設定画素として入力した場合のステップA−1〜A−3の処理を行った場合の処理例を説明する図である。なお、図13(A)(B)に設定した番号1〜30は説明のための画素番号である。画素1〜30はラスタスキャン順(仮ラベリング処理部101に対する入力順)に並べて示している。
【0093】
図13(B)はステップA−1、(C)はステップA−2、(D)はステップA−3の処理の詳細を示す図である。図13(B)に示す太い実線で囲まれた画素(画素12)はステップA−1でラベルが付与される画素を表している。
【0094】
図13(B)は、ステップA−1の処理、すなわち、
「入力された画素にラベルを付与するとともに、ラベル変換情報を作成する」
この処理を説明する図である。ここでの処理対象は画素12である。画素12に対して、画素12に隣接する周囲画素中、すでにラベルの設定された画素を参照してラベル情報(ラベル、ラベル変換情報)を設定する。すなわち、画素1、2、3、11を参照画素として、これらの参照画素のラベルに基づいて画素12のラベルを決定する。
【0095】
画素12に隣接するスキャン済み画素にラベルを付与された画素として画素2がある。これらの画素中、最小のラベルは[1]である。従って、画素12には、隣接する画素中のラベル最小値[1]を設定する。また、ラベル[1]の設定された画素12に隣接する画素中、ラベル[1]より大きい値を持つラベルは存在しない。この場合、画素12に対してラベル変換情報(0、0)を設定する。
【0096】
図13(C)は、ステップA−2の処理、すなわち、
「ラベル変換情報をラベルに適用する」
この処理を説明する図である。
本処理例では、メモリに保持するラベル変換情報を画像の幅の半分の画素数に当たる分だけ保持する設定としている。本例では画像幅が10画素であるので、5画素分のラベル変換情報をメモリに保持し、これら5画素分のラベル変換情報を、1対1の画素のペア5組を設定してそれぞれの画素ペアにおいて適用する。図13(C)の設定では、
画素12→画素2
画素11→画素3
画素10→画素4
画素9→画素5
画素8→画素6
このように画素8〜12に設定されたラベル変換情報を他の画素6〜2に適用する。なお、ラベル変換情報の設定されていない画素、およびラベル変換情報(0,0)の設定画素については実質上、ラベルの変更は行われない。
【0097】
図13(D)は、ステップA−3の処理、すなわち、
「ラベル変換情報を隣接する画素に移動させてからラベルに適用する」
この処理を説明する図である。図13(C)の画素ペアの設定を変更して、異なる1対1の画素のペア5組を設定してそれぞれの画素ペアにおいてラベル変換情報を適用する。図13(D)の設定では、
画素12→画素3
画素11→画素4
画素10→画素5
画素9→画素6
画素8→画素7
このように画素8〜12に設定されたラベル変換情報を他の画素7〜3に適用する。
【0098】
図13(C)に示すステップA−2の処理、すなわち、「ラベル変換情報をラベルに適用する」と、図13(D)に示すステップA−3の処理、すなわち、「ラベル変換情報を隣接する画素に移動させてからラベルに適用する」
これらの2ステップの処理によって、1つの画素に設定されたラベル変換情報が2つの異なる画素に適用される。すなわち、
画素12→画素2,3
画素11→画素3,4,
画素10→画素4,5
画素9→画素5,6
画素8→画素6,7
このように画素8〜12に設定されたラベル変換情報が異なる2つの画素に適用されることになる。
【0099】
この図13(B)〜(D)に示す例は、仮ラベリング処理部101に対する新規入力画素が画素12である場合の仮ラベリング処理の1サイクルの処理例である。すなわち、
ステップA−1:入力された画素にラベルを付与するとともに、ラベル変換情報を作成する
ステップA−2:ラベル変換情報をラベルに適用する
ステップA−3:ラベル変換情報を隣接する画素に移動させてからラベルに適用する
これらの処理ステップについて説明している。
なお、本処理例では、メモリに格納するラベル変換情報を画像の幅の半分の画素数に当たる分(本例では5画素分)だけ保持する設定として、これらの複数のラベル変換情報を並列に各ペア画素について適用する処理を実行しており、効率的な処理が可能となり処理が高速化される。なお、メモリに格納するラベル変換情報は、画像の幅の半分の画素数に当たる分とする以外の設定も可能である。
【0100】
図14は、図13を参照して説明した画素番号[12]の次の画素[13]が仮ラベリング処理部101にラベル情報設定画素として入力された場合のステップA−1〜A−3の処理を行った場合の処理例を説明する図である。
【0101】
図14(B)はステップA−1、(C)はステップA−2、(D)はステップA−3の処理の詳細を示す図である。図14(A)(B)に示す太い実線で囲まれた画素(画素13)がステップA−1でラベルが付与される画素を表している。
【0102】
図14(B)は、ステップA−1の処理、すなわち、
「入力された画素にラベルを付与するとともに、ラベル変換情報を作成する」
この処理を説明する図である。ここでの処理対象は画素13である。画素13に対して、画素13に隣接する周囲画素中、すでにラベルの設定された画素を参照してラベル情報(ラベル、ラベル変換情報)を設定する。すなわち、画素2、3、4、12を参照画素として、これらの参照画素のラベルに基づいて画素13のラベルを決定する。
【0103】
画素13に隣接するスキャン済み画素にラベルを付与された画素として画素2,4,12がある。これらの画素中、最小のラベルは[1]である。従って、画素13には、隣接する画素中のラベル最小値[1]を設定する。また、ラベル[1]の設定された画素13に隣接する画素中、ラベル[1]より大きい値を持つラベル[2]が存在する。この場合、画素13に対してラベル変換情報(2、1)を設定する。
【0104】
図14(C)は、ステップA−2の処理、すなわち、
「ラベル変換情報をラベルに適用する」
この処理を説明する図である。
本処理例では、メモリに保持するラベル変換情報を画像の幅の半分の画素数に当たる分だけ保持する設定としている。本例では画像幅が10画素であるので、5画素分のラベル変換情報をメモリに保持し、これら5画素分のラベル変換情報を、1対1の画素のペア5組を設定してそれぞれの画素ペアにおいて適用する。図14(C)の設定では、
画素13→画素3
画素12→画素4
画素11→画素5
画素10→画素6
画素9→画素7
このように画素9〜13に設定されたラベル変換情報を他の画素7〜3に適用する。
【0105】
図14(D)は、ステップA−3の処理、すなわち、
「ラベル変換情報を隣接する画素に移動させてからラベルに適用する」
この処理を説明する図である。図14(C)の画素ペアの設定を変更して、異なる1対1の画素のペア5組を設定してそれぞれの画素ペアにおいてラベル変換情報を適用する。図14(D)の設定では、
画素13→画素4
画素12→画素5
画素11→画素6
画素10→画素7
画素9→画素8
このように画素9〜13に設定されたラベル変換情報を他の画素8〜4に適用する。
【0106】
この図14(B)〜(D)に示す例は、仮ラベリング処理部101に対する新規入力画素が画素13である場合の仮ラベリング処理の1サイクルの処理例である。
【0107】
以下、図15〜図19が、仮ラベリング処理部101に対する新規入力画素が画素14、画素16、画素17、画素18、画素19である場合の仮ラベリング処理のステップA−1〜A−3の処理例を示している。画素26まで仮ラベリング処理が終了した時点での画像領域401のラベル情報設定結果は図20に示す結果となる。
【0108】
以下、本発明の画像処理装置において、任意の大きさの2値画像に対してラベリング処理を行う場合の処理シーケンスについて説明する。
【0109】
図21に示すように幅M画素、高さN画素のM×N画素からなる2値画像421に対してラベリング処理を行うものとする。図21に示す1〜MNは画素番号[i]を表している。1〜MNは画像の左上の画素からラスタスキャンした場合の走査順を表している。今、画素[i](i=1〜MN)にラベルを付与するものとする。
【0110】
図22は、本発明の画像処理装置におけるラベリング処理の全体シーケンスを示すフローチャートである。ステップS101では、画像の左上の画素からラスタスキャンしながら仮ラベリング処理を行う。この処理は、図2に示す画像処理装置の仮ラベリング処理部101が実行する。
【0111】
仮ラベリング処理では、ラベル情報、すなわちラベルとラベル変換情報をラベル設定対象画素、例えば黒画素に対して実行する。ラベルはラベルカウンタの設定値(例えば1,2,3・・・)を順次設定する。この仮ラベリング処理においては、例えば参照画素としてラベル情報設定画素の周囲8画素中、スキャン済み画素のラベル情報を参照してラベル情報の設定処理を実行する。
【0112】
ステップS102では、画像の右下の画素からラスタスキャンしながら再ラベリング処理を行う。この処理は、図2に示す画像処理装置の再ラベリング処理部102が実行する。
【0113】
再ラベリング処理では、仮ラベリング処理とは逆順のスキャンを行い、設定済みのラベル情報(ラベル、ラベル変換情報)の更新を実行する。この再ラベリング処理においては、例えば参照画素としてラベル情報設定画素の周囲8画素中、再ラベリング処理におけるスキャン済みのラベル情報を参照してラベル情報の更新処理を実行する。
【0114】
ステップS101の仮ラベリング処理の詳細シーケンスについて図23に示すフローチャートを参照して説明する。
なお、フローに示す記号は以下の意味を持つ。
[L(x)]は、画素番号xの画素に設定されたラベル、
[T(x)]は、画素番号xの画素に設定されたラベル変換情報、
また、
Mは処理画像の幅方向の画素数、
Nは処理画像の高さ方向の画素数、
である。
【0115】
図23に示す処理は、図2に示す仮ラベリング処理部101における処理シーケンスである。前述したように仮ラベリング処理は、
ステップA−1:入力された画素にラベルを付与するとともに、ラベル変換情報を作成する
ステップA−2:ラベル変換情報をラベルに適用する
ステップA−3:ラベル変換情報を隣接する画素に移動させてからラベルに適用する
これらの処理を各画素について実行する。以下、フローに示す各ステップの処理について説明する。
【0116】
ステップS121では、処理画素を示す変数である画素番号[i](i=1〜MN)に初期値として、画像の左上の画素番号[1]を設定する。
【0117】
ステップS122では、画素番号[i]が、i≦MNを満足するか否かを判定する。すなわち、すべての画素についての処理が終了したか否かの判定処理である。i≦MNを満足しない場合、すなわち、iがMNより大(例えばi=MN+1)となった場合に、すべての画素についての仮ラベリング処理が終了したと判定して処理を終了する。
【0118】
ステップS123では、近傍の画素のラベルから、画素iのラベル情報(ラベル=L(i)、ラベル変換情報=T(i))を決定する。具体的には、
画素iの周囲8画素中のスキャン済み画素を参照画素として、これら参照画素のラベルの値、L(i−M−1),L(i−M),L(i−M+1),L(i−1)から、画素iのラベル情報(ラベル=L(i)、ラベル変換情報=T(i))を決定する。
このステップS123の処理は、上述のステップA−1の処理に対応する。
【0119】
ステップS124は、ラベル変換情報の適用処理である。上述のステップA−2の処理に対応する。具体的には、図13〜図19に示す(C)ステップA−2の処理である。すなわち、
(1)画素(i)のラベル変換情報T(i)を、画素(i−M)のラベルL(i−M)の変換処理に適用、
(2)画素(i−1)のラベル変換情報T(i−1)を、画素(i−M+1)のラベルL(i−M+1)の変換処理に適用、
・・・
(M/2)画素(i−M/2+1)のラベル変換情報T(i−M/2+1)を、画素(i−M+M/2−1)のラベルL(i−M+M/2−1)の変換処理に適用、
これらの処理を実行する。
なお、本フローでは一般化して説明するために、処理画像の幅方向の画素数Mの半分の画素(M/2)に対して設定されたラベル変換情報を設定された画素ペアのラベルの変換に適用する例として説明している。
【0120】
先に図13〜図19を参照して説明した処理例では、処理画像の幅方向の画素数Mは10であり、(M/2=5)であるので、この処理は、
(1)画素(i)のラベル変換情報T(i)を、画素(i−M)のラベルL(i−M)の変換処理に適用、
(2)画素(i−1)のラベル変換情報T(i−1)を、画素(i−M+1)のラベルL(i−M+1)の変換処理に適用、
(3)画素(i−2)のラベル変換情報T(i−2)を、画素(i−M+2)のラベルL(i−M+2)の変換処理に適用、
(4)画素(i−3)のラベル変換情報T(i−3)を、画素(i−M+3)のラベルL(i−M+3)の変換処理に適用、
(5)画素(i−4)のラベル変換情報T(i−4)を、画素(i−M+4)のラベルL(i−M+4)の変換処理に適用、
これらの5つの画素ペアの設定によるラベル変換情報の適用として実行されることになる。
【0121】
ステップS125は、2回目のラベル変換情報の適用処理である。上述のステップA−3の処理に対応する。具体的には、図13〜図19に示す(D)ステップA−3の処理である。すなわち、
(1)画素(i)のラベル変換情報T(i)を、画素(i−M+1)のラベルL(i−M+1)の変換処理に適用、
(2)画素(i−1)のラベル変換情報T(i−1)を、画素(i−M+2)のラベルL(i−M+2)の変換処理に適用、
・・・
(M/2)画素(i−M/2+1)のラベル変換情報T(i−M/2+1)を、画素(i−M+M/2)のラベルL(i−M+M/2)の変換処理に適用、
これらの処理を実行する。
【0122】
先に図13〜図19を参照して説明した処理例では、処理画像の幅方向の画素数Mは10であり、(M/2=5)であるので、この処理は、
(1)画素(i)のラベル変換情報T(i)を、画素(i−M+1)のラベルL(i−M+1)の変換処理に適用、
(2)画素(i−1)のラベル変換情報T(i−1)を、画素(i−M+2)のラベルL(i−M+2)の変換処理に適用、
(3)画素(i−2)のラベル変換情報T(i−2)を、画素(i−M+3)のラベルL(i−M+3)の変換処理に適用、
(4)画素(i−3)のラベル変換情報T(i−3)を、画素(i−M+4)のラベルL(i−M+4)の変換処理に適用、
(5)画素(i−4)のラベル変換情報T(i−4)を、画素(i−M+4)のラベルL(i−M+4)の変換処理に適用、
これらの5つの画素ペアの設定によるラベル変換情報の適用処理として実行されることになる。
【0123】
次に、ステップS126において、画素番号[i]を1つインクリメントして、ステップS122以下の処理を繰り返し実行する。
ステップS122において、i≦MNの判定がNoとなり、すべての画素の処理が完了したことが確認されると仮ラベリング処理が終了する。
【0124】
次に、図22に示すフローのステップS102の再ラベリング処理の詳細シーケンスについて図24に示すフローチャートを参照して説明する。
なお、フローに示す記号は、図23のフローと同様、以下の意味を持つ。
[L(x)]は、画素番号xの画素に設定されたラベル、
[T(x)]は、画素番号xの画素に設定されたラベル変換情報、
また、
Mは処理画像の幅方向の画素数、
Nは処理画像の高さ方向の画素数、
である。
【0125】
図24に示す処理は、図2に示す再ラベリング処理部102における処理シーケンスである。前述したように再ラベリング処理は、
ステップB−1:ラベルを更新するとともに、ラベル変換情報を更新する
ステップB−2:ラベル変換情報をラベルに適用する
ステップB−3:ラベル変換情報を隣接する画素に移動させてからラベルに適用する
これらの処理を各画素について実行する。以下、フローに示す各ステップの処理について説明する。
【0126】
ステップS151では、処理画素を示す変数である画素番号[i](i=1〜MN)に初期値として、画像の右下の画素番号[MN]を設定する。
【0127】
ステップS152では、画素番号[i]が、i≦1を満足するか否かを判定する。すなわち、すべての画素についての処理が終了したか否かの判定処理である。i≦1を満足しない場合、すなわち、iが1未満(例えばi=0)となった場合に、すべての画素についての再ラベリング処理が終了したと判定して処理を終了する。
【0128】
ステップS153では、近傍の画素のラベルから、画素iのラベル情報(ラベル=L(i)、ラベル変換情報=T(i))を決定する。具体的には、
画素iの周囲の参照画素のラベルの値、L(i+M+1),L(i+M),L(i+M−1),L(i+1)から、画素iのラベル情報(ラベル=L(i)、ラベル変換情報=T(i))を決定する。
このステップS153の処理は、上述のステップB−1の処理に対応する。
【0129】
ステップS154は、ラベル変換情報の適用処理である。上述のステップB−2の処理に対応する。具体的には、
(1)画素(i)のラベル変換情報T(i)を、画素(i+M)のラベルL(i+M)の変換処理に適用、
(2)画素(i+1)のラベル変換情報T(i+1)を、画素(i+M−1)のラベルL(i+M−1)の変換処理に適用、
・・・
(M/2)画素(i+M/2−1)のラベル変換情報T(i+M/2−1)を、画素(i+M−M/2+1)のラベルL(i+M−M/2+1)の変換処理に適用、
これらの処理を実行する。
なお、本フローでは一般化して説明するために、処理画像の幅方向の画素数Mの半分の画素(M/2)に対して設定されたラベル変換情報を設定された画素ペアのラベルの変換に適用する例として説明している。
【0130】
ステップS155は、2回目のラベル変換情報の適用処理である。上述のステップB−3の処理に対応する。具体的には、
(1)画素(i)のラベル変換情報T(i)を、画素(i+M−1)のラベルL(i+M−1)の変換処理に適用、
(2)画素(i+1)のラベル変換情報T(i+1)を、画素(i+M−2)のラベルL(i+M−2)の変換処理に適用、
・・・
(M/2)画素(i+M/2−1)のラベル変換情報T(i+M/2−1)を、画素(i+M−M/2)のラベルL(i+M−M/2)の変換処理に適用、
これらの処理を実行する。
【0131】
次に、ステップS156において、画素番号[i]を1つデクリメントして、ステップS152以下の処理を繰り返し実行する。
ステップS152において、i≧1の判定がNoとなり、すべての画素の処理が完了したことが確認されると再ラベリング処理が終了する。
【0132】
次に、本発明の画像処理装置の具体的なハードウェア構成例の複数の例について説明する。
(構成例1)
本発明の画像処理装置の第1のハードウェア構成例として、SIMD型プロセッサを用いた構成例について図25を参照して説明する。
【0133】
図25(A)はSIMD(Single Instruction stream Multiple Data stream)型プロセッサの構造を表している。入力レジスタ501、PE(プロセッサエレメント)502、出力レジスタ503が1次元状に配置された構成を複数有する構成を持つ。各プロセッサエレメントは並列処理が可能である。図25(A)示す例は6個のプロセッサエレメント(PE0〜PE5)を持つ構成例である。
【0134】
各PEは、以下のような要件を備えるプロセッサエレメントである。
・比較演算回路を有する
・局所メモリを有する
・隣と2つ隣のPEの局所メモリにアクセスが可能である
・局所メモリの値をインクリメントすることが可能である
・PEの番号を参照することが可能である
・条件により処理の実行の有無を選択することが可能である
【0135】
具体的には、各プロセッサエレメントは、入力画像を構成する画素の画素値に基づく連結画素判定処理を実行して、連結画素集合単位のラベルを設定するラベリング処理を実行する。各プロセッサエレメント各々は、1つ以上の画素に対応するラベルとラベル変換情報をプロセッサエレメント対応の局所メモリに格納し、局所メモリの保持情報を利用したラベル決定処理またはラベル更新処理の少なくともいずれかの処理を行う。
【0136】
また、入力レジスタ501は、プロセッサエレメント(PE)502にデータを入力するためのレジスタである。入力レジスタ501にセットされるデータは、
仮ラベリング処理に際しては、2値画像データ、
再ラベリング処理に際しては、仮ラベリング処理において設定されたラベル、
これらのデータとなる。
【0137】
出力レジスタ503は、プロセッサエレメント(PE)502から出力されたデータを読み出すためのレジスタである。プロセッサエレメント(PE)502における演算によって決定された1画素分のラベルは、出力レジスタ503から外部に読み出すことができる。
【0138】
なお、図に示す例では、6個のプロセッサエレメント(PE0〜PE5)を持つ構成例であるが、プロセッサエレメント(PE)の数は入力する2値画像の幅によって決定する。例えば、画像の幅をM画素とすると、配置するPEの数は(M/2)+1とする。入力画像の幅が10画素の場合は、(10/2)+1で6個のPEを配置する。
【0139】
図25(B)は、プロセッサエレメント(PE)が局所メモリに保持する情報を表している。Lはラベル1画素分、Tはラベル変換情報1画素分のデータである。このように、1つのPEは2画素分のラベルと1画素分のラベル変換情報を保持していることになる。
【0140】
図26は、幅10画素、高さが任意である入力画像の画素構成を表している。各画素に示す[Ln]、[Tn]は、ラベリング処理で求めようとしている画素nに対応するラベルとラベル変換情報を表している(n=1〜画素数)。
【0141】
この画素構成において、画素14のラベルを決定しようとする場合の処理について説明する。図27は、仮ラベリング処理において、各PEに保持されているラベルとラベル変換情報の1サイクルの変化を表したものであり、太い実線で囲まれた部分は書き換えられる可能性のある情報を表している。また、以下の処理の過程で、端に配置されているPEのみが実行すべき処理があるが、これらは各PEが自分のPE番号を参照することで実現することができる。
【0142】
図27(A)は、プロセッサエレメント0(PE0)系列の入力レジスタ521に外部から2値画像データの構成画素(画素14)の画素値情報が書き込まれた状態を示す。この画素14は、ラベル設定画素である。
【0143】
図27(B)は、プロセッサエレメント0(PE0)において、画素14のラベル(L14)を算出する処理を行う際の状態を示している。この処理において、プロセッサエレメント0(PE0)は、プロセッサエレメント0(PE0)の局所メモリに格納されている画素3のラベルの値(L3)と、隣のプロセッサエレメント1(PE1)の局所メモリの格納値である画素4のラベルの値(L4)および画素13のラベルの値(L13)、さらに、2つ隣のプロセッサエレメント2(PE2)の局所メモリの格納値である画素5のラベルの値(L5)を取得して、これらのラベルの値を参照して画素14のラベル(L14)を算出する。
【0144】
図27(C)は、プロセッサエレメント1(PE1)において、画素14のラベル変換情報(T14)を算出する処理を行う際の状態を示している。既にラベル変換情報を算出済みの画素10〜13のラベル変換情報T13〜T10を、それぞれ右のPEに移動((B)の状態から(C)の状態)させて、スキャン済みの周囲画素のラベルの値を、自己および周囲のPEの局所メモリから取得して画素14のラベル変換情報(T14)を算出する。具体的には、画素3,4,5,13のラベルL3、L4、L5、L13を自己および周囲のPEの局所メモリから取得して画素14のラベル変換情報(T14)を算出する。
【0145】
この図27(B),(C)の処理は、スキャン済みの隣接画素のラベル値を参照してラベル情報(ラベルおよびラベル変換情報)を決定する処理であり、例えば図13〜図19を参照して説明した仮ラベリング処理の(B)ステップA−1の処理に相当する。周囲8画素中スキャン済みの4画素のラベルの値を参照してラベルを決定する。
【0146】
図27(D)は、最初のラベル変換情報の適用処理であり、例えば図15を参照して説明した仮ラベリング処理の(C)ステップA−2の処理に相当する。
プロセッサエレメント1(PE1)は、画素14のラベル変換情報(T14)を画素4のラベル(L4)の変換処理に適用する。
プロセッサエレメント2(PE2)は、画素13のラベル変換情報(T13)を画素5のラベル(L5)の変換処理に適用する。
プロセッサエレメント3(PE3)は、画素12のラベル変換情報(T12)を画素6のラベル(L6)の変換処理に適用する。
プロセッサエレメント4(PE4)は、画素11のラベル変換情報(T11)を画素7のラベル(L7)の変換処理に適用する。
プロセッサエレメント5(PE5)は、画素10のラベル変換情報(T10)を画素8のラベル(L8)の変換処理に適用する。
【0147】
図27(E)は、第2のラベル変換情報の適用処理であり、例えば図15を参照して説明した仮ラベリング処理の(D)ステップA−3の処理に相当する。
プロセッサエレメント2(PE2)は、画素14のラベル変換情報(T14)を画素5のラベル(L5)の変換処理に適用する。
プロセッサエレメント3(PE3)は、画素13のラベル変換情報(T13)を画素6のラベル(L6)の変換処理に適用する。
プロセッサエレメント4(PE4)は、画素12のラベル変換情報(T12)を画素7のラベル(L7)の変換処理に適用する。
プロセッサエレメント5(PE5)は、画素11のラベル変換情報(T11)を画素8のラベル(L8)の変換処理に適用する。
さらに、プロセッサエレメント5(PE5)は、画素10のラベル変換情報(T10)を画素9のラベル(L9)の変換処理に適用する。
【0148】
図27(F)は、各プロセッサエレメントの局所メモリに格納されたラベル情報を移動させるとともに、プロセッサエレメント0(PE0)の系列の出力レジスタ522にラベルL3の値を書きみ、この値を仮ラベリング処理の結果として出力する。
【0149】
この仮ラベリング処理の後、同様に再ラベリング処理を行う。
ただし、再ラベリング処理においては、先に説明したように、仮ラベリング処理において設定されたラベルが、図27(A)に示す入力レジスタ521に書き込まれて、処理が実行されることになる。また、再ラベリング処理では、仮ラベリング処理とスキャン順が逆になる。その他の処理は、仮ラベリング処理における処理と同様の処理となる。
【0150】
さらに、幅10画素の入力画像に対するラベリング処理を実行するSIMD型プロセッサとして、例えば図28(A)のようにプロセッサエレメント数を削減した構成とすることも可能である。この構成は、図27を参照して説明した構成に比べて、各プロセッサエレメント(PE)が保持するラベルとラベル変換情報を2倍として、プロセッサエレメントの数を半分とした構成例である。
【0151】
図28(B)は、図28(A)と同様の構成において、新規入力画素14をプロセッサエレメント(PE0)に入力した状態を示している。この状態において、各プロセッサエレメントの局所メモリに格納されているデータは、図27(B)と同様のデータであり、図27を参照して説明した処理と同様の処理が実現される。
【0152】
(構成例2)
次に、本発明の画像処理装置の第2のハードウェア構成例として、シストリックアレーを用いた構成例について図29を参照して説明する。図29(a)はシストリックアレーを構成する素子の1つを示す図である。この素子は、1画素分のラベルLとラベル変換情報Tを保持し、これらの保持情報を異なる素子間で転送するとともに、次のような2種類の演算A,Bを行う。
演算A:保持しているラベルLとラベル変換情報Tを出力すると同時に、新たにラベルとラベル変換情報を入力してその値を保持する
演算B:入力されたラベル変換情報Tを保持しているラベルLに適用する
【0153】
図29(b)は、図29(a)の素子を1次元状に配置して構成したラベリング処理装置である。入力2値画像は、例えば図26に示すような幅10画素、高さが任意であるような入力画像を想定している。配置する素子の数は画像の幅によって決まり、画像の幅をM画素とすると、配置する素子の数は(M+2)となる。図29(b)に示す例は、入力画像の幅を10画素とした場合の例であり、10+2で12個の素子を配置した構成としている。
【0154】
ラベル決定部601は、外部から例えば図示しない入力レジスタを介してラスタスキャン順に入力されたデータを入力し、さらに、素子603〜606に格納されたラベルを入力して、入力データに対応する画素のラベルとラベル変換情報を決定する。なお、ラベル決定部601にラスタスキャン順に入力されるデータは、
仮ラベリング処理のときは2値画像データ、
再ラベリング処理のときはラベル情報(ラベル、ラベル変換情報)
これらのデータである。
【0155】
ラベル決定部601は、外部からラスタスキャン順に入力されたデータに対応する画素のラベル情報(ラベルおよびラベル変換情報)を、素子603〜606に格納されたラベルを参照して決定する。
【0156】
ラベル決定部601が決定したラベル情報(ラベルおよびラベル変換情報)中、ラベルは素子602に対応して設定された入力レジスタ607に書き込まれ、ラベル変換情報は素子605に対応して設定された入力レジスタ309に書き込まれる。また、素子の演算によって決定された1画素分のラベルは、素子606に対応して設定された出力レジスタ308から外部に読み出すことができる。
【0157】
図30は、シストリックアレーを用いた構成を利用して仮ラベリング処理を実行した場合の、各素子の保持情報、すなわちラベルとラベル変換情報の遷移を示している。すなわち、前述した仮ラベリング処理の1サイクルである、
ステップA−1:入力された画素にラベルを付与するとともに、ラベル変換情報を作成する
ステップA−2:ラベル変換情報をラベルに適用する
ステップA−3:ラベル変換情報を隣接する画素に移動させてからラベルに適用する
これらの処理ステップを実行した場合の保持情報の変化を表したものであり、太い実線で囲まれた部分は書き換えられる可能性のある情報を表している。
【0158】
図30(A)は、図29(b)に示すラベル決定部601において決定された画素14のラベル(L14)が、入力レジスタ701に書き込まれ、さらに、画素14のラベル変換情報(T14)が入力レジスタ702に書き込まれた状態である。
【0159】
図30(B)は、各素子のラベルをそれぞれ左の素子に移動させ、ラベル変換情報をそれぞれ右の素子に移動させた状態を示す。ただし、素子702は入力レジスタ701からラベル(L14)を取得し、素子703は入力レジスタ702からラベル変換情報(T14)を取得する。
【0160】
図30(C)は、各素子においてラベル変換情報を各ラベルに適用する処理である。各素子に保持されたラベル変換情報T14〜T4が、同一素子に保持されたラベルL4〜L14に適用される。
【0161】
図30(D)では、各素子のラベル変換情報をそれぞれ右の素子に移動させる。
図30(E)では、各素子においてラベル変換情報をラベルに適用する。各素子に保持されたラベル変換情報T14〜T5が、同一素子に保持されたラベルL5〜L14に適用される。
【0162】
この処理の後、次のサイクルの図30(B)に当たる状態において、出力レジスタ705に画素3に対応するラベルL3の値が書き込まれ、この値が仮ラベリング処理の結果となる。仮ラベリング処理の後、同様に再ラベリング処理を行う。
【0163】
なお、先の図25以下を参照して説明したSIMD型プロセッサを用いた構成例、図29以下を参照して説明したシストリックアレーを適用した構成、これらの構成のいずれにおいても、SIMD型プロセッサに設定するプロセッサエレメントの数、シストリックアレーを構成する素子数を変更することにより、処理効率を変更することができる。すなわち、例えばSIMD型プロセッサに設定するプロセッサエレメントの数、シストリックアレーを構成する素子数を増加させれば、ラベル変換情報の適用処理をより多くの画素間で並列処理可能となり、処理効率を増大させることが可能となる。
【0164】
以上、特定の実施例を参照しながら、本発明について詳解してきた。しかしながら、本発明の要旨を逸脱しない範囲で当業者が実施例の修正や代用を成し得ることは自明である。すなわち、例示という形態で本発明を開示してきたのであり、限定的に解釈されるべきではない。本発明の要旨を判断するためには、特許請求の範囲の欄を参酌すべきである。
【0165】
また、明細書中において説明した一連の処理はハードウェア、またはソフトウェア、あるいは両者の複合構成によって実行することが可能である。ソフトウェアによる処理を実行する場合は、処理シーケンスを記録したプログラムを、専用のハードウェアに組み込まれたコンピュータ内のメモリにインストールして実行させるか、あるいは、各種処理が実行可能な汎用コンピュータにプログラムをインストールして実行させることが可能である。例えば、プログラムは記録媒体に予め記録しておくことができる。記録媒体からコンピュータにインストールする他、LAN(Local Area Network)、インターネットといったネットワークを介してプログラムを受信し、内蔵するハードディスク等の記録媒体にインストールすることができる。
【0166】
なお、明細書に記載された各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。また、本明細書においてシステムとは、複数の装置の論理的集合構成であり、各構成の装置が同一筐体内にあるものには限らない。
【産業上の利用可能性】
【0167】
以上、説明したように、本発明の一実施例の構成によれば、画像に対するラベリング処理を行う構成において、データ処理部を複数のデータ処理要素によって構成し、各データ処理要素が1つ以上の画素に対応するラベルとラベル変換情報を保持し、これらの保持情報の要素間の転送、参照を行って、ラベル決定処理やラベル更新処理を実行する構成とした。本構成により、ラベル変換情報をまとめたテーブルを保持する必要を排除し、テーブル記憶のための共有メモリや、テーブルを整理するための処理が不要となり、メモリと回路規模の削減を実現することが可能となる。また、回路構成をシンプルにすることができるため、局所メモリしか持たないSIMD型プロセッサやシストリックアレーを用いてラベリング処理を実現することが可能となる。
【図面の簡単な説明】
【0168】
【図1】2値画像に対するラベリング処理について説明する図である。
【図2】本発明の一実施例に従った画像処理装置の構成および処理シーケンスの概要について説明する図である。
【図3】本発明の一実施例に係る画像処理装置の仮ラベリング処理と再ラベリング処理の処理態様について説明する図である。
【図4】近傍8画素を参照画素としてラベルを決定する態様、近傍4画素を参照画素としてラベルを決定する態様について説明する図である。
【図5】本発明の一実施例に係る画像処理装置の仮ラベリング処理部において実行する仮ラベリング処理の具体的処理について説明する図である。
【図6】仮ラベリング処理において、近傍8画素を参照画素としてラベル情報設定を行う場合の具体的処理例について説明する図である。
【図7】再ラベリング処理において、近傍8画素を参照画素としてラベル設定を行う場合の具体的処理例について説明する図である。
【図8】本発明の一実施例に係る画像処理装置におけるラベリング処理の実行対象としての2値画像の例を示す図である。
【図9】本発明の一実施例に係る画像処理装置における2値画像に対する仮ラベリング処理のシーケンスについて説明する図である。
【図10】本発明の一実施例に係る画像処理装置における2値画像に対する仮ラベリング処理のシーケンスについて説明する図である。
【図11】本発明の一実施例に係る画像処理装置における再ラベリング処理のシーケンスについて説明する図である。
【図12】本発明の一実施例に係る画像処理装置におけるラベリング処理の実行対象としての2値画像の例を示す図である。
【図13】本発明の一実施例に係る画像処理装置における仮ラベリング処理の具体的処理例について説明する図である。
【図14】本発明の一実施例に係る画像処理装置における仮ラベリング処理の具体的処理例について説明する図である。
【図15】本発明の一実施例に係る画像処理装置における仮ラベリング処理の具体的処理例について説明する図である。
【図16】本発明の一実施例に係る画像処理装置における仮ラベリング処理の具体的処理例について説明する図である。
【図17】本発明の一実施例に係る画像処理装置における仮ラベリング処理の具体的処理例について説明する図である。
【図18】本発明の一実施例に係る画像処理装置における仮ラベリング処理の具体的処理例について説明する図である。
【図19】本発明の一実施例に係る画像処理装置における仮ラベリング処理の具体的処理例について説明する図である。
【図20】本発明の一実施例に係る画像処理装置における仮ラベリング処理の処理結果の例を示す図である。
【図21】本発明の一実施例に係る画像処理装置におけるラベリング処理の実行対象としての2値画像の例を示す図である。
【図22】本発明の一実施例に係る画像処理装置におけるラベリング処理の全体シーケンスを説明するフローチャートを示す図である。
【図23】本発明の一実施例に係る画像処理装置における仮ラベリング処理のシーケンスを説明するフローチャートを示す図である。
【図24】本発明の一実施例に係る画像処理装置における再ラベリング処理のシーケンスを説明するフローチャートを示す図である。
【図25】本発明の一実施例に係る画像処理装置のハードウェア構成例としてのSIMD型プロセッサを用いた構成例につい説明する図である。
【図26】本発明の一実施例に係る画像処理装置におけるラベリング処理の実行対象としての2値画像の例を示す図である。
【図27】本発明の一実施例に係る画像処理装置であるSIMD型プロセッサを用いた構成におけるラベリング処理例について説明する図である。
【図28】本発明の一実施例に係る画像処理装置のハードウェア構成例としてのSIMD型プロセッサを用いた構成例につい説明する図である。
【図29】本発明の一実施例に係る画像処理装置のハードウェア構成例としてのシストリックアレーを用いた構成例につい説明する図である。
【図30】本発明の一実施例に係る画像処理装置であるシストリックアレーを用いた構成例におけるラベリング処理の例を説明する図である。
【符号の説明】
【0169】
101 仮ラベリング処理部
102 再ラベリング処理部
121〜123 画像
501 入力レジスタ
502 プロセッサエレメント(PE)
503 出力レジスタ
601 ラベル決定部
602〜606 素子
607〜609 レジスタ
【技術分野】
【0001】
本発明は、画像の解析により連続する画素領域であるか否かの判定を行い、連結画素領域を区別可能とするための画素対応のラベル設定処理であるラベリング処理を実行する画像処理装置、および画像処理方法、並びにプログラムに関する。
【背景技術】
【0002】
画像の解析により画像から1つの連続するオブジェクトなどを抽出するための手法としてラベリング処理が知られている。2値画像に対するラベリング処理について図1を参照して説明する。ラベリング処理は、連結画素集合ごとにラベルを割り振る処理として行われる。なお、ラベリング処理については、例えば特許文献1(特開2004−164017号公報)に記載されている。
【0003】
図1(a)は、最終的なラベリング処理結果を示している。図1(b)は、ラベリング処理の過程において行われるラベル変換情報を用いた再ラベリング処理について説明する図である。
【0004】
ラベリング処理の最終結果は、図1(a)に示すように、連結画素集合ごとに異なるラベルが設定された結果となる。図1(a)にはラベル[1]の設定された連結画素集合と、ラベル[2]の設定された連結画素集合とが識別されている。
【0005】
例えば、2値画像を構成する画素は白画素(画素値=0)と黒画素(画素値=1)によって構成される。ラベル設定対象画素を、画素値=1の黒画素とする。なお、図面ではラベル値を記載するために黒画素を灰色で示している。本処理例におけるラベリング処理は、図1(a)に示す点線矢印で示す処理順序11のように、画像の左上から右下に向かって画素を走査する、いわゆるラスタスキャンでラベルを割り振る設定とする。
【0006】
ラスタスキャンでラベルを割り振る場合の従来の一般的な手法について説明する。まず、ラベリング処理は、仮ラベリング処理と再ラベリング処理から構成される。まず、仮ラベリング処理において画像を1回スキャンして、仮ラベリング処理を実行する。その後、仮ラベリング処理のなされた画像に対してスキャンを実行して、再ラベリング処理を行う。
【0007】
仮ラベリング処理は、ラスタスキャンで新しい連結画素集合が現れるごとに新しいラベル(例えば番号:1,2,3・・・)を割り振る。ただし、1回目のスキャンにおける仮ラベリング処理のラベル設定過程では連結画素のすべてを正しく判定することはできない。すなわち、スキャンされていない未スキャン部の画像の後半部で連結している場合などの場合である。
【0008】
仮ラベリング処理のラベル設定処理において誤って設定されたラベルを修正するために再ラベリング処理が実行されることになる。仮ラベリング処理において、同一の連結画素集合であるにもかかわらず異なったラベルが割り振られた部分のラベル変換情報を生成し、再ラベリング処理においてラベル変換情報に従ってラベルを更新していく。
【0009】
ラベル変換情報を用いた再ラベリング処理について、図1(b)を参照して説明する。仮ラベリング処理で画素21まで走査したところで、それまでに設定していたラベル2を設定した連結画素集合と、ラベル3を設定した連結画素集合とが、同一の連結画素集合であることが判明する。このような場合、ラベル3はラベル2に変更すべきであると判定し、ラベル3からラベル2への変換情報[ラベル3→ラベル2]をメモリに保持する。
【0010】
次に、再ラベリング処理で、メモリに保持した変換情報[ラベル3→ラベル2]を参照して、再スキャンを実行し、ラベル3の設定された画素をラベル2に変更する処理を実行する。この処理によって、図1(a)のような最終的なラベリング処理結果が得られる。
【0011】
上記のような従来のラベリング処理では、以下のような問題点が挙げられる。
まず、ラベル変換情報をまとめてテーブルとして保持するメモリが必要になることである。上記の例では、変換情報として1つの変換情報[ラベル3→ラベル2]を利用した例を示したが、画像が複雑化し、大きな画像になると、この変換情報のデータ量は膨大になる。
【0012】
ラベル変換情報の数は仮ラベリング処理が終了するまで判明しないため、2値画像のサイズから想定される最大数のラベル変換情報数を保持するためのメモリを用意しておく必要がある。
【0013】
また、仮ラベリンング処理後に複数のラベル変換情報が存在した場合、1つの連結画素集合に1つのラベルが割り振られるように、ラベル変換情報をまとめたテーブルを作成して整理する必要がある場合がある。
例えば、仮ラベル設定処理に際して、
変換情報[ラベル3→ラベル2]
変換情報[ラベル4→ラベル3]
このような2つの変換情報が作成されることがあるが、これらの変換情報は、結果として、
変換情報[ラベル3,4→ラベル2]
として、ラベル3,4,をラベル2に変換する設定に整理しなければならない。このような処理のために、ラベル変換情報を処理するためのプロセッサなどが必要になる。
【0014】
さらに、SIMD (Single Instruction stream Multiple Data stream)型プロセッサでラベリング処理を行う場合は、各プロセッサエレメント(PE:Processer Element)がラベル変換情報を保持した共有メモリにアクセスするための機構が必要となり、回路規模が増えることになる。
【0015】
以上のことから、従来のラベリング処理のように、ラベル変換情報をまとめてテーブルとして保持する方法は、メモリ量と計算コスト、回路規模の点から適切な方法であるとは言い難い。
【特許文献1】特開2004−164017号公報
【発明の開示】
【発明が解決しようとする課題】
【0016】
本発明は、例えば上述した問題点に鑑みてなされたものであり、ラベル変換情報をまとめてテーブルとして保持せずに、個々のラベル変換情報を分散させて保持し、これらの情報を利用してラベリング処理を行うことで、テーブルのための共有メモリや、テーブルを整理するための処理を不要として効率的なラベリング処理を実現する情報処理装置、および情報処理方法、並びにプログラムを提供することを目的とする。
【課題を解決するための手段】
【0017】
本発明の第1の側面は、
入力画像を構成する画素の画素値を入力し、入力画素値に基づく連結画素判定処理を実行して、連結画素集合単位のラベルを設定するラベリング処理を実行するデータ処理部を有し、
前記データ処理部は複数のデータ処理要素によって構成され、各データ処理要素が、1つ以上の画素に対応するラベルとラベル変換情報を保持する記憶部と、ラベル決定またはラベル更新の少なくともいずれかの処理を行う演算部を有する構成である画像処理装置にある。
【0018】
さらに、本発明の画像処理装置の一実施態様において、前記画像処理装置は、さらに、入力画像を構成する画素の画素値データを格納する入力レジスタと、前記データ処理部における処理結果である前記入力画像の構成画素対応のラベルの値を格納する出力レジスタを有し、前記データ処理部は、前記入力レジスタの格納値を入力して、画素値に基づく連結画素判定処理を実行して、連結画素集合単位のラベルを設定するラベリング処理を実行して、処理結果としてのラベルの値を前記出力レジスタに出力する構成である。
【0019】
さらに、本発明の画像処理装置の一実施態様において、前記データ処理部は、前記入力画像の画素値を、規定スキャン方向に従って入力して、画素対応のラベルとラベル変換情報を算出する仮ラベリング処理と、前記仮ラベリング処理結果として得られる画素対応のラベルを、前記仮ラベリング処理と逆のスキャン方向に従って入力し、入力情報に従って設定済みラベルの値を更新する再ラベリング処理を実行する構成である。
【0020】
さらに、本発明の画像処理装置の一実施態様において、前記データ処理部を構成するデータ処理要素の各々は、前記ラベル変換情報を適用して、各データ処理要素の記憶部に格納したラベルの更新を行う構成である。
【0021】
さらに、本発明の画像処理装置の一実施態様において、前記データ処理部のデータ処理要素の各々は、前記メモリに保持したラベルおよびラベル変換情報を異なるデータ処理要素間で転送する処理を行う構成である。
【0022】
さらに、本発明の画像処理装置の一実施態様において、前記画像処理装置は、入力レジスタと、プロセッサエレメントと、出力レジスタからなるセットを複数有するSIMD(Single Instruction stream Multiple Data stream)型構成を有し、各プロセッサエレメント(PE:Processer Element)の局所メモリに1つ以上の画素に対応するラベルとラベル変換情報を保持し、各プロセッサエレメントにおいてラベル算出を行う構成である。
【0023】
さらに、本発明の画像処理装置の一実施態様において、前記プロセッサエレメントの各々は、ラベル算出処理およびラベル変換情報の適用処理を並列に実行する構成である。
【0024】
さらに、本発明の画像処理装置の一実施態様において、前記プロセッサエレメントの各々は、前記局所メモリに保持したラベルとラベル変換情報を異なるプロセッサエレメント間で転送する処理を行う構成である。
【0025】
さらに、本発明の画像処理装置の一実施態様において、前記データ処理部は、複数の素子からなるシストリックアレー構成を有し、前記素子の各々が1つ以上の画素に対応するラベルとラベル変換情報を保持して、ラベル変換情報を適用したラベル更新処理を実行する構成である。
【0026】
さらに、本発明の画像処理装置の一実施態様において、前記データ処理部は、さらに、複数の参照画素のラベルを入力して画素のラベルの決定および更新を実行するラベル決定部を有する構成である。
【0027】
さらに、本発明の画像処理装置の一実施態様において、前記複数の素子の各々は、各素子において保持したラベルとラベル変換情報を異なる素子間で転送する処理を行う構成である。
【0028】
さらに、本発明の第2の側面は、
画像処理装置においてラベリング処理を実行する画像処理方法であり、
複数のデータ処理要素を有するデータ処理部が、入力画像を構成する画素の画素値に基づく連結画素判定処理を実行して、連結画素集合単位のラベルを設定するラベリング処理を実行するデータ処理ステップを有し、
前記データ処理ステップは、
前記複数のデータ処理要素の各々が、1つ以上の画素に対応するラベルとラベル変換情報をデータ処理要素対応の記憶部に格納するステップと、
前記複数のデータ処理要素の各々が、前記記憶部の保持情報を利用したラベル決定処理またはラベル更新処理の少なくともいずれかの処理を行うステップと、
を含むステップであることを特徴とする画像処理方法にある。
【0029】
さらに、本発明の第3の側面は、
画像処理装置においてラベリング処理を実行させるプログラムであり、
複数のデータ処理要素を有するデータ処理部に、入力画像を構成する画素の画素値に基づく連結画素判定処理を実行させて、連結画素集合単位のラベルを設定するラベリング処理を実行させるデータ処理ステップを有し、
前記データ処理ステップは、
前記複数のデータ処理要素の各々に、1つ以上の画素に対応するラベルとラベル変換情報をデータ処理要素対応の記憶部に格納させるステップと、
前記複数のデータ処理要素の各々に、前記記憶部の保持情報を利用したラベル決定処理またはラベル更新処理の少なくともいずれかの処理を行わせるステップと、
を含むステップであることを特徴とするプログラムにある。
【0030】
なお、本発明のプログラムは、例えば、様々なプログラム・コードを実行可能な汎用コンピュータ・システムに対して、コンピュータ可読な形式で提供する記憶媒体、通信媒体によって提供可能なコンピュータ・プログラムである。このようなプログラムをコンピュータ可読な形式で提供することにより、コンピュータ・システム上でプログラムに応じた処理が実現される。
【0031】
本発明のさらに他の目的、特徴や利点は、後述する本発明の実施例や添付する図面に基づくより詳細な説明によって明らかになるであろう。なお、本明細書においてシステムとは、複数の装置の論理的集合構成であり、各構成の装置が同一筐体内にあるものには限らない。
【発明の効果】
【0032】
本発明の一実施例の構成によれば、画像に対するラベリング処理を行う構成において、データ処理部を複数のデータ処理要素によって構成し、各データ処理要素が1つ以上の画素に対応するラベルとラベル変換情報を保持し、これらの保持情報の要素間の転送、参照を行って、ラベル決定処理やラベル更新処理を実行する構成とした。本構成により、ラベル変換情報をまとめたテーブルを保持する必要を排除し、テーブル記憶のための共有メモリや、テーブルを整理するための処理が不要となり、メモリと回路規模の削減を実現することが可能となる。また、回路構成をシンプルにすることができるため、局所メモリしか持たないSIMD型プロセッサやシストリックアレーを用いてラベリング処理を実現することが可能となる。
【発明を実施するための最良の形態】
【0033】
以下、図面を参照しながら本発明の画像処理装置、および画像処理方法、並びにプログラムの詳細について説明する。
【0034】
図2を参照して本発明の一実施例に従った画像処理装置の構成および処理シーケンスの概要について説明する。画像121は2値の入力画像であり、仮ラベリング処理部101を経て仮ラベリングされた画像122が出力される。仮ラベリング処理部101における仮ラベリング処理は、画素に対するラベル(1,2,3等のラベル値)の設定およびラベル変換情報の設定処理である。具体的処理については後述する。
【0035】
さらに、画像122は再ラベリング処理部102を経て、再ラベリングがなされ最終的なラベル設定画像123が出力される。再ラベリング処理部102における再ラベリング処理は、ラベルの設定およびラベル変換情報の設定された画素のラベルの更新およびラベル変換情報の更新処理である。具体的処理については後述する。
【0036】
仮ラベリング処理部101は、画像111に対して、スキャン順131に示すように画像の左上の画素を起点としてラスタスキャンをして仮ラベリング処理を行う。再ラベリング処理部102は、画像112に対して、スキャン順132に示すように画像の右下の画素を起点として、仮ラベリング時のスキャンとは逆のスキャン順でラスタスキャンをして再ラベリング処理を行う。
【0037】
例えば処理対象とする画像121が、図3(a)に示すような、幅10画素、高さ3画素の入力画像であったとする。図3では、各画素に便宜的に設定した番号を示している。
仮ラベリング処理部101では、図3(b)に示すように左上の画素1を起点として、画素1〜30の順番で仮ラベリング処理を実行する。
また、再ラベリング処理部102では、図3(c)に示すように右下の画素30を起点として、画素30〜1の順番で処理を実行する。
【0038】
なお、各画素に対するラベル設定は、先行スキャン画素におけるラベル設定済みの画素との連続性を考慮して行なわれることになる。ラベル設定の態様としては、いくつかの処理手法がある。具体的には、近傍8画素を参照画素としてラベルを決定する態様、近傍4画素を参照画素としてラベルを決定する態様などがある。
【0039】
これらの処理例について図4を参照して説明する。
図4(1)は、仮ラベリング処理部101での仮ラベリング処理における以下の処理例、すなわち、
(1a)近傍8画素を参照画素としてラベル情報を設定する処理例、
(1b)近傍4画素を参照画素としてラベル情報を設定する処理例、
これらの処理例を示している。
なお、いずれの場合もそれぞれスキャン済みの画素のみが参照画素として設定されることになる。
(1a)の場合は、処理対象画素であるラベル情報設定画素211に対して、近傍8画素中、スキャン済みの画素を参照画素として、参照画素に設定されたラベル情報を参照してラベル情報を設定する。なおラベル情報には、
ラベル、
ラベル変換情報、
これらの情報が含まれる。具体的内容については後述する。
【0040】
(1b)の場合は、処理対象画素であるラベル情報設定画素212に対して、近傍4画素中、スキャン済みの画素を参照画素として参照画素として、参照画素に設定されたラベル情報を参照してラベル情報(ラベル、ラベル変換情報)を設定する。
【0041】
図4(2)は、再ラベリング処理部102での再ラベリング処理における以下の処理例、すなわち、
(2a)近傍8画素を参照画素としてラベル情報を更新する処理例、
(2b)近傍4画素を参照画素としてラベル情報を更新する処理例、
これらの処理例を示している。なおラベル情報には、
ラベル、
ラベル変換情報、
これらの情報が含まれる。
【0042】
(2a)の場合は、ラベル情報更新画素221に対して、近傍8画素中、スキャン済みの画素を参照画素としてラベルを決定する。
(2b)の場合は、ラベル情報更新画素222に対して、近傍4画素中、スキャン済みの画素を参照画素としてラベルを決定する。
【0043】
ただし、先に説明したように、再ラベリング処理部102の処理では、スキャン方向が仮ラベリング処理部101のスキャン方向とは逆になる。従って、再ラベリング処理においては、逆方向のスキャン順に従って、スキャン済み画素のラベルを参照が素とする。ただし、仮ラベリング処理において設定されたラベル情報もメモリに保存されており、これらを参照対象として設定することも可能である。
【0044】
図5以下を参照して、仮ラベリング処理部101において実行する仮ラベリング処理の具体的処理について説明する。
仮ラベリング処理部101において実行する仮ラベリング処理は、各画素について以下の3つのステップからなる処理を実行する。以下の3ステップを1サイクルとし、この1サイクルをすべての画素に対して実行する。
ステップA−1:入力された画素にラベルを付与するとともに、ラベル変換情報を作成する
ステップA−2:ラベル変換情報をラベルに適用する
ステップA−3:ラベル変換情報を隣接する画素に移動させてからラベルに適用する
【0045】
ステップA−1の処理は、入力画素に対するラベル設定と、ラベル変換情報の作成である。図5に示すように、1つの画素に対して、
ラベルLとラベル変換情報(S、D)
これらの情報を保持する。
ラベルLは、先に図1を参照して説明したと同様の連結画素集合単位で設定されるラベルである。
ラベル変換情報(S,D)は、「ラベルSをラベルDに変換する」という意味を持つ。
【0046】
メモリに保持する情報は、画素に対して設定されたラベル情報、すなわち、
ラベル[L]と、
ラベル変換情報(S,D)
である。
メモリには、ラベルLの値を全画素数分を保持する。しかし、ラベル変換情報(S、D)については、画像の幅の半分の画素数に当たる分だけ保持すればよい。この理由については後述する。
【0047】
ステップA−2、3でいう「ラベル変換情報(S,D)をラベルに適用する」とは、「ラベルLがラベル変換情報のSに等しい場合は、ラベル変換情報のDに変換する」という意味である。また、1画像に対して1つラベルカウンタを持つ。ラベルカウンタは、新たに設定するラベルの値を保持したカウンタであり、
初期値を[0]、その後、[1],[2],・・・とインクリメントする。すなわち最初のラベル設定画素に対してはラベルカウンタの[0]がラベルとして設定される。
【0048】
なお、初期値を[1]、その後、[2],[3],・・・とインクリメントする設定としてもよい。この設定では最初のラベル設定画素に対してはラベルカウンタの[1]がラベルとして設定される。
【0049】
ラベルカウンタのラベル値が使用されると、ラベルカウンタの値はインクリメントされる。例えばラベルL=0の設定された画素と連結するラベル付与画素(例えば黒)には同一のラベル=0が設定され、非連結のラベル付与画素(黒)が出現した場合、次のラベルカウンタの値[1]がその画素のラベルとして設定される。
【0050】
図6は、仮ラベリング処理において、近傍8画素を参照画素としてラベル情報設定を行う場合の具体的処理例について説明する図である。ラベル情報にはラベルとラベル変換情報が含まれる。なお、前述したように、実際に参照する画素は、近傍8画素中のスキャン済みの隣接画素となる。
【0051】
図6(a)は、新たにラベル情報を付与する画素231の周囲のスキャン済み隣接画素にラベル情報が付与された画素が存在しない場合である。この場合はラベルカウンタの設定値を画素231に付与する。ラベルカウンタの値が[0]であるとすると、設定するラベル値は[0]となる。図には[L0]として示す。この設定後、ラベルカウンタの値をインクリメントする。また、ラベル変換情報は(0、0)とする。このラベル変換情報は、ラベル[0]の値をラベル[0]に変換するという意味であり、実質的にはラベル設定値の変更処理はなされない。
【0052】
図6(b)は、ラベル情報を付与する画素232の周囲のスキャン済み隣接画素にすでにラベル情報を付与された画素が1つ、ないし複数あり、それらが同一のラベル[L1]を有する場合である。この場合は周囲の画素のラベルと同一のラベル[L1]を画素232に付与する。また、ラベル変換情報は(0、0)とする。
【0053】
図6(c)は、ラベル情報を付与する画素233の周囲のスキャン済み隣接画素にすでにラベルを付与された画素が複数あり、それらのラベルが異なっている場合である。この場合は周囲の隣接画素のラベルの中で最小のラベルを、画素233に付与する。さらに隣接画素のラベルの中で最大のラベルを最小のラベルに変換する情報をラベル変換情報として設定する。
【0054】
例えば、画素234はラベル[L1]、画素235はラベル[L2]が設定されている。ラベルの値の比較を行うと、L1<L2である。この場合、新たにラベルを設定する画素233には、周囲の画素のラベルの中で最小のラベルを設定する。従って、画素233のラベルは[L1]に設定する。
【0055】
また、隣接画素のラベルの中で最大のラベルを最小のラベルに変換する情報をラベル変換情報として保持する。従って、画素233に対応するラベル変換情報は、(L2、L1)として設定する。このラベル変換情報(L2、L1)は、ラベル[L2]をラベル[L1]に変換する処理が必要であることを示す変換情報である。
【0056】
この変換情報は、画素233がラベル[L1]に設定されたことにより、ラベル[L2]の設定画素とラベル[L1]の設定画素が連結されたことによって設定される変換情報である。すなわち、ラベル[L2]の設定画素とラベル[L1]の設定画素が1つの連結画素集合となったことに基づいて設定される。
【0057】
次に、再ラベリング処理部102での再ラベリング処理について説明する。再ラベリング処理部102での再ラベリング処理は、各画素について以下の3つのステップからなる処理を実行する。以下の3ステップを1サイクルとし、この1サイクルをすべての画素に対して実行する。
ステップB−1:ラベルを更新するとともに、ラベル変換情報を更新する
ステップB−2:ラベル変換情報をラベルに適用する
ステップB−3:ラベル変換情報を隣接する画素に移動させてからラベルに適用する
【0058】
図7は、再ラベリング処理において、近傍8画素を参照画素としてラベル設定を行う場合の具体的処理例について説明する図である。なお、前述したように、再ラベリング処理においては、仮ラベリング処理と逆方向のスキャンを実行する。
【0059】
図7(a)は、ラベル変換情報更新画素241の周囲のスキャン済み隣接画素にラベルが付与された画素が存在しない場合である。この場合はラベルとラベル変換情報の更新は行わない。
【0060】
図7(b)は、ラベル変換情報更新画素242の周囲のスキャン済み隣接画素にラベルが付与された画素が1つ、ないし複数あり、それらがすべて画242と同一のラベル[L1]である場合である。この場合はラベルとラベル変換情報の更新は行わない。
【0061】
図7(c)は、ラベル変換情報更新画素243の周囲のスキャン済み隣接画素にラベルが付与された画素が複数あり、それらのラベルが異なっている場合である。この場合は、
画素243のラベルを周囲の画素のラベルの中で最小のラベルに更新し、
さらに、画素243のラベル変換情報を、画素243のラベルの値を、ラベル変換情報更新画素243の周囲のスキャン済み隣接画素中の最小のラベル値に変換する情報に更新する。
【0062】
例えば、ラベル変換情報更新画素243の周囲の画素の1つである画素244はラベルL2、画素245はラベルL1の場合、L1<L2であるので、画素243の1605のラベルは[L1]に更新され、ラベル変換情報は(L2、L1)となる。このラベル変換情報(L2、L1)は、ラベル[L2]をラベル[L1]に変換する処理が必要であることを示す変換情報である。
【0063】
図8は、先に図3を参照して説明したと同様の幅10画素、高さ3画素の入力画像に対する例を表している。数字は便宜的に各画素に付けた番号を表す。
【0064】
次に、具体的な処理例について、図8に示すような2値画像に対する処理例を説明する。この画像は2値画像であり、図に灰色で示されている画素をラベル設定対象として、各連結画素集合単位のラベルを付与するものとする。
【0065】
図9、図10は、図8の2値画像に対する仮ラベリング処理のシーケンスについて説明する図である。図2に示す仮ラベリング処理部101は、図8の2値画像を入力して、左上端画素から右下端画素に向けてスキャンを実行して仮ラベリング処理を実行する。図9〜図10に示す(A)〜(H)の順番で処理が進行する。仮ラベリング処理は、先に説明したように、各画素について以下の3つのステップからなる処理を実行する。以下の3ステップを1サイクルとし、この1サイクルをすべての画素に対して実行する。
ステップA−1:入力された画素にラベルを付与するとともに、ラベル変換情報を作成する
ステップA−2:ラベル変換情報をラベルに適用する
ステップA−3:ラベル変換情報を隣接する画素に移動させてからラベルに適用する
【0066】
なお、仮ラベリング処理では、先に説明したようにスキャンは左上端画素から右下端画素に向けて実行される。図9〜図10に示す(A)〜(H)に示す太い実線で囲まれた画素はステップA−1でラベルが付与される画素を、太い点線で囲まれた画素は、ステップA−2ないしはステップA−3でラベルが変換されたことを表している。なお、以下に説明する処理例では、ラベルカウンタの初期値は[1]として、ラベルの値は、1,2,3・・の順で設定するものとする。
【0067】
図9(A)では、画素301に隣接するスキャン済み画素にラベルを付与された画素がないので、ラベルカウンタの初期値[1]を、画素301のラベルとして付与し、ラベルカウンタの値をインクリメントして[2]とする。ラベル変換情報は(0、0)となる。ラベル変換情報は(0、0)は実質的なラベル変換処理は不要であることを示している。
【0068】
図9(B)では、画素302に隣接するスキャン済み画素にラベルを付与された画素がないので、ラベルカウンタの値[2]をラベルとして付与し、ラベルカウンタの値をインクリメントして[3]とする。ラベル変換情報は(0、0)となる。
【0069】
図9(C)は、仮ラベリングが進行し、画素303に対する仮ラベル設定処理に至った状態を示している。画素303に隣接するスキャン済み画素にラベルを付与された画素として画素304〜306の画素がある。これらのラベル設定画素中、最小のラベルは[1]である。従って、画素303には、隣接する画素中のラベル最小値[1]を設定する。
【0070】
また、ラベル[1]の設定された画素303に隣接する画素中、ラベル[1]より大きい値を持つラベル[2]の画素は、ラベル[1]の設定された画素303に連結することになり、ラベル[1]に変換可能であることが判明する。この場合、画素303に対してラベル変換情報(2、1)を設定する。
【0071】
また、図9(C)では、ステップA−2で、ラベル[2]の設定されている画素305のラベルが、画素303に設定されたラベル変換情報(2、1)を適用して、[2]から[1]に変換される。
【0072】
図9(D)は、画素307に対する仮ラベル設定処理に至った状態を示している。また、この図9(D)において点線太枠で示す画素308は、ステップA−2によってラベルが2から1に変換されたことを表している。
【0073】
図9(D)では、画素307に隣接する周囲のスキャン済み画素中、ラベル設定画素308〜309があり、いずれもラベルは1である。従って画素307に対しては、ラベル[1]を付与する。また、ラベル[1]の設定された画素307に隣接する画素中、ラベル[1]より大きい値を持つ画素は存在しない。従って、ラベル変換情報は(0、0)となる。
【0074】
図10(E)は、画素310に対する仮ラベル設定処理に至った状態を示している。図10(E)の画素312は、図9(C)に示す画素303のラベル変換情報(2、1)によってラベルが2から1に変換されている。
【0075】
画素310の周囲のスキャン済み画素中、ラベル設定画素311、312があり、ラベルは1が最小なので、画素310のラベルは[1]に設定する。
また、また、ラベル[1]の設定された画素310に隣接する画素中、ラベル[1]より大きい値を持つラベル[3]の画素は、ラベル[1]の設定された画素310に連結することになり、ラベル[1]に変換可能であることが判明する。この場合、画素310に対してラベル変換情報(3、1)を設定する。
【0076】
図10(F)は、画素313に対する仮ラベル設定処理に至った状態を示している。図10(F)に示す画素314、315は、図10(E)で示す画素301に設定されたラベル変換情報(3、1)により、いずれもラベルが3から1に変換される。この変換処理の後、画素313に対してラベル設定を行う。画素313の周囲のスキャン済み画素中、ラベル設定画素314、315があり、これらは変換処理によって[1]が設定されており、この値が最小なので、画素313のラベルは[1]に設定する。
【0077】
また、ラベル[1]の設定された画素313に隣接する画素中、ラベル[1]より大きい値を持つ画素は存在しない。従って、ラベル変換情報は(0、0)となる。
【0078】
図10(G)は、画素316に対する仮ラベル設定処理に至った状態を示している。図10(G)では、画素316の周囲のスキャン済み画素中、ラベル設定画素として画素317、318がある。これらの画素中のラベルの値として、ラベル1が最小なので、画素316にはラベル[1]を設定する。
【0079】
また、ラベル[1]の設定された画素316に隣接する画素中、ラベル[1]より大きい値を持つラベル[4]の画素は、ラベル[1]の設定された画素316に連結することになり、ラベル[1]に変換可能であることが判明する。この場合、画素316に対してラベル変換情報(4、1)を設定する。
【0080】
図10(H)は、画素323に対する仮ラベル設定処理に至った状態を示している。図10(H)の画素319〜323は、図14(G)に示す画素318のラベル変換情報(4、1)を適用して、いずれもラベルが4から1に変換される。
【0081】
画素323の周囲のスキャン済み画素中、ラベル設定画素として画素322があり、ラベル1が最小なので、画素323にはラベル[1]を設定する。
【0082】
このような処理が、下右端の画素まで行われ、最終的に図10(H)に示す結果が、仮ラベリング処理の結果として出力される。
【0083】
次に、図11を参照して、図10(H)に示す仮ラベリング処理結果に対する再ラベリング処理について説明する。図11は、図10(H)に示す仮ラベリング処理結果に対する再ラベリング処理のシーケンスについて説明する図である。図2に示す再ラベリング処理部102は、図10(H)に示す仮ラベリング処理結果を入力して、右下端画素から左上端画素に向けてスキャンを実行して再ラベリング処理を実行する。図11に示す(A)〜(D)の順番で処理が進行する。
【0084】
再ラベリング処理は、先に説明したように、各画素について以下の3つのステップからなる処理を実行する。以下の3ステップを1サイクルとし、この1サイクルをすべての画素に対して実行する。
ステップB−1:ラベルを更新するとともに、ラベル変換情報を更新する
ステップB−2:ラベル変換情報をラベルに適用する
ステップB−3:ラベル変換情報を隣接する画素に移動させてからラベルに適用する
図11(A)〜(D)において、太い実線で囲まれた画素はステップB−1でラベルが更新された画素を表している。
【0085】
なお、前述したように、再ラベリング処理においては、仮ラベリング処理と逆方向のスキャンを実行する。参照する画素は、再ラベリング処理においてスキャン済みの隣接画素となる。
【0086】
図11(A)は、右下端画素から左上端画素に向けてスキャンを実行し、処理対象画素が画素351に至った状態を示している。再ラベリング処理におけるスキャン済み画素の中で、画素351の周囲にあるラベル設定画素は画素352、353である。これらの隣接画素に設定されたラベル中、最小ラベルは[1]なので画素351の画素のラベルを4から1に更新する。また、この結果として、ラベル[4]の画素は、ラベル[1]に変更可能なことが判明し、画素351のラベル変換情報を(4、1)に更新する。
【0087】
図11(B)は、処理対象画素が画素354に至った状態を示している。再ラベリング処理におけるスキャン済み画素の中で、画素354の周囲にあるラベル設定画素は画素355である。この画素が最小のラベル設定画素であり、ラベルは[1]なので画素354の画素のラベルを4から1に更新する。また、この結果として、ラベル[4]の画素は、ラベル[1]に変更可能なことが判明し、画素354のラベル変換情報を(4、1)に更新する。
【0088】
図11(C)は、処理対象画素が画素358に至った状態を示している。再ラベリング処理におけるスキャン済み画素の中で、画素358の周囲にあるラベル設定画素は画素359である。この画素が最小のラベル設定画素であり、ラベルは[1]なので画素358の画素のラベルを2から1に更新する。また、この結果として、ラベル[2]の画素は、ラベル[1]に変更可能なことが判明し、画素358のラベル変換情報を(2、1)に更新する。
【0089】
これらの処理を左上端の画素まで実行すると、最終的には、図11(D)に示す情報が再ラベリング処理の結果として出力される。
【0090】
次に、さらに、図12以下を参照して具体的な仮ラベリング処理の処理例について説明する。図12に示す画像400に含まれる画素領域401の構成画素に対する仮ラベリング処理の例について説明する。図12の画素領域401の画素の仮ラベリング処理例について図13以下を参照して説明する。
【0091】
図13(A)は現在の処理状態、すなわち画素番号[12]を仮ラベリング処理対象画素とした処理状態を示す。
仮ラベリング処理は、先に説明したように、
ステップA−1:入力された画素にラベルを付与するとともに、ラベル変換情報を作成する
ステップA−2:ラベル変換情報をラベルに適用する
ステップA−3:ラベル変換情報を隣接する画素に移動させてからラベルに適用する
これらの処理ステップによって構成される。
【0092】
図13(B)〜(D)は仮ラベリング処理部101が、画素(画素12)をラベル情報設定画素として入力した場合のステップA−1〜A−3の処理を行った場合の処理例を説明する図である。なお、図13(A)(B)に設定した番号1〜30は説明のための画素番号である。画素1〜30はラスタスキャン順(仮ラベリング処理部101に対する入力順)に並べて示している。
【0093】
図13(B)はステップA−1、(C)はステップA−2、(D)はステップA−3の処理の詳細を示す図である。図13(B)に示す太い実線で囲まれた画素(画素12)はステップA−1でラベルが付与される画素を表している。
【0094】
図13(B)は、ステップA−1の処理、すなわち、
「入力された画素にラベルを付与するとともに、ラベル変換情報を作成する」
この処理を説明する図である。ここでの処理対象は画素12である。画素12に対して、画素12に隣接する周囲画素中、すでにラベルの設定された画素を参照してラベル情報(ラベル、ラベル変換情報)を設定する。すなわち、画素1、2、3、11を参照画素として、これらの参照画素のラベルに基づいて画素12のラベルを決定する。
【0095】
画素12に隣接するスキャン済み画素にラベルを付与された画素として画素2がある。これらの画素中、最小のラベルは[1]である。従って、画素12には、隣接する画素中のラベル最小値[1]を設定する。また、ラベル[1]の設定された画素12に隣接する画素中、ラベル[1]より大きい値を持つラベルは存在しない。この場合、画素12に対してラベル変換情報(0、0)を設定する。
【0096】
図13(C)は、ステップA−2の処理、すなわち、
「ラベル変換情報をラベルに適用する」
この処理を説明する図である。
本処理例では、メモリに保持するラベル変換情報を画像の幅の半分の画素数に当たる分だけ保持する設定としている。本例では画像幅が10画素であるので、5画素分のラベル変換情報をメモリに保持し、これら5画素分のラベル変換情報を、1対1の画素のペア5組を設定してそれぞれの画素ペアにおいて適用する。図13(C)の設定では、
画素12→画素2
画素11→画素3
画素10→画素4
画素9→画素5
画素8→画素6
このように画素8〜12に設定されたラベル変換情報を他の画素6〜2に適用する。なお、ラベル変換情報の設定されていない画素、およびラベル変換情報(0,0)の設定画素については実質上、ラベルの変更は行われない。
【0097】
図13(D)は、ステップA−3の処理、すなわち、
「ラベル変換情報を隣接する画素に移動させてからラベルに適用する」
この処理を説明する図である。図13(C)の画素ペアの設定を変更して、異なる1対1の画素のペア5組を設定してそれぞれの画素ペアにおいてラベル変換情報を適用する。図13(D)の設定では、
画素12→画素3
画素11→画素4
画素10→画素5
画素9→画素6
画素8→画素7
このように画素8〜12に設定されたラベル変換情報を他の画素7〜3に適用する。
【0098】
図13(C)に示すステップA−2の処理、すなわち、「ラベル変換情報をラベルに適用する」と、図13(D)に示すステップA−3の処理、すなわち、「ラベル変換情報を隣接する画素に移動させてからラベルに適用する」
これらの2ステップの処理によって、1つの画素に設定されたラベル変換情報が2つの異なる画素に適用される。すなわち、
画素12→画素2,3
画素11→画素3,4,
画素10→画素4,5
画素9→画素5,6
画素8→画素6,7
このように画素8〜12に設定されたラベル変換情報が異なる2つの画素に適用されることになる。
【0099】
この図13(B)〜(D)に示す例は、仮ラベリング処理部101に対する新規入力画素が画素12である場合の仮ラベリング処理の1サイクルの処理例である。すなわち、
ステップA−1:入力された画素にラベルを付与するとともに、ラベル変換情報を作成する
ステップA−2:ラベル変換情報をラベルに適用する
ステップA−3:ラベル変換情報を隣接する画素に移動させてからラベルに適用する
これらの処理ステップについて説明している。
なお、本処理例では、メモリに格納するラベル変換情報を画像の幅の半分の画素数に当たる分(本例では5画素分)だけ保持する設定として、これらの複数のラベル変換情報を並列に各ペア画素について適用する処理を実行しており、効率的な処理が可能となり処理が高速化される。なお、メモリに格納するラベル変換情報は、画像の幅の半分の画素数に当たる分とする以外の設定も可能である。
【0100】
図14は、図13を参照して説明した画素番号[12]の次の画素[13]が仮ラベリング処理部101にラベル情報設定画素として入力された場合のステップA−1〜A−3の処理を行った場合の処理例を説明する図である。
【0101】
図14(B)はステップA−1、(C)はステップA−2、(D)はステップA−3の処理の詳細を示す図である。図14(A)(B)に示す太い実線で囲まれた画素(画素13)がステップA−1でラベルが付与される画素を表している。
【0102】
図14(B)は、ステップA−1の処理、すなわち、
「入力された画素にラベルを付与するとともに、ラベル変換情報を作成する」
この処理を説明する図である。ここでの処理対象は画素13である。画素13に対して、画素13に隣接する周囲画素中、すでにラベルの設定された画素を参照してラベル情報(ラベル、ラベル変換情報)を設定する。すなわち、画素2、3、4、12を参照画素として、これらの参照画素のラベルに基づいて画素13のラベルを決定する。
【0103】
画素13に隣接するスキャン済み画素にラベルを付与された画素として画素2,4,12がある。これらの画素中、最小のラベルは[1]である。従って、画素13には、隣接する画素中のラベル最小値[1]を設定する。また、ラベル[1]の設定された画素13に隣接する画素中、ラベル[1]より大きい値を持つラベル[2]が存在する。この場合、画素13に対してラベル変換情報(2、1)を設定する。
【0104】
図14(C)は、ステップA−2の処理、すなわち、
「ラベル変換情報をラベルに適用する」
この処理を説明する図である。
本処理例では、メモリに保持するラベル変換情報を画像の幅の半分の画素数に当たる分だけ保持する設定としている。本例では画像幅が10画素であるので、5画素分のラベル変換情報をメモリに保持し、これら5画素分のラベル変換情報を、1対1の画素のペア5組を設定してそれぞれの画素ペアにおいて適用する。図14(C)の設定では、
画素13→画素3
画素12→画素4
画素11→画素5
画素10→画素6
画素9→画素7
このように画素9〜13に設定されたラベル変換情報を他の画素7〜3に適用する。
【0105】
図14(D)は、ステップA−3の処理、すなわち、
「ラベル変換情報を隣接する画素に移動させてからラベルに適用する」
この処理を説明する図である。図14(C)の画素ペアの設定を変更して、異なる1対1の画素のペア5組を設定してそれぞれの画素ペアにおいてラベル変換情報を適用する。図14(D)の設定では、
画素13→画素4
画素12→画素5
画素11→画素6
画素10→画素7
画素9→画素8
このように画素9〜13に設定されたラベル変換情報を他の画素8〜4に適用する。
【0106】
この図14(B)〜(D)に示す例は、仮ラベリング処理部101に対する新規入力画素が画素13である場合の仮ラベリング処理の1サイクルの処理例である。
【0107】
以下、図15〜図19が、仮ラベリング処理部101に対する新規入力画素が画素14、画素16、画素17、画素18、画素19である場合の仮ラベリング処理のステップA−1〜A−3の処理例を示している。画素26まで仮ラベリング処理が終了した時点での画像領域401のラベル情報設定結果は図20に示す結果となる。
【0108】
以下、本発明の画像処理装置において、任意の大きさの2値画像に対してラベリング処理を行う場合の処理シーケンスについて説明する。
【0109】
図21に示すように幅M画素、高さN画素のM×N画素からなる2値画像421に対してラベリング処理を行うものとする。図21に示す1〜MNは画素番号[i]を表している。1〜MNは画像の左上の画素からラスタスキャンした場合の走査順を表している。今、画素[i](i=1〜MN)にラベルを付与するものとする。
【0110】
図22は、本発明の画像処理装置におけるラベリング処理の全体シーケンスを示すフローチャートである。ステップS101では、画像の左上の画素からラスタスキャンしながら仮ラベリング処理を行う。この処理は、図2に示す画像処理装置の仮ラベリング処理部101が実行する。
【0111】
仮ラベリング処理では、ラベル情報、すなわちラベルとラベル変換情報をラベル設定対象画素、例えば黒画素に対して実行する。ラベルはラベルカウンタの設定値(例えば1,2,3・・・)を順次設定する。この仮ラベリング処理においては、例えば参照画素としてラベル情報設定画素の周囲8画素中、スキャン済み画素のラベル情報を参照してラベル情報の設定処理を実行する。
【0112】
ステップS102では、画像の右下の画素からラスタスキャンしながら再ラベリング処理を行う。この処理は、図2に示す画像処理装置の再ラベリング処理部102が実行する。
【0113】
再ラベリング処理では、仮ラベリング処理とは逆順のスキャンを行い、設定済みのラベル情報(ラベル、ラベル変換情報)の更新を実行する。この再ラベリング処理においては、例えば参照画素としてラベル情報設定画素の周囲8画素中、再ラベリング処理におけるスキャン済みのラベル情報を参照してラベル情報の更新処理を実行する。
【0114】
ステップS101の仮ラベリング処理の詳細シーケンスについて図23に示すフローチャートを参照して説明する。
なお、フローに示す記号は以下の意味を持つ。
[L(x)]は、画素番号xの画素に設定されたラベル、
[T(x)]は、画素番号xの画素に設定されたラベル変換情報、
また、
Mは処理画像の幅方向の画素数、
Nは処理画像の高さ方向の画素数、
である。
【0115】
図23に示す処理は、図2に示す仮ラベリング処理部101における処理シーケンスである。前述したように仮ラベリング処理は、
ステップA−1:入力された画素にラベルを付与するとともに、ラベル変換情報を作成する
ステップA−2:ラベル変換情報をラベルに適用する
ステップA−3:ラベル変換情報を隣接する画素に移動させてからラベルに適用する
これらの処理を各画素について実行する。以下、フローに示す各ステップの処理について説明する。
【0116】
ステップS121では、処理画素を示す変数である画素番号[i](i=1〜MN)に初期値として、画像の左上の画素番号[1]を設定する。
【0117】
ステップS122では、画素番号[i]が、i≦MNを満足するか否かを判定する。すなわち、すべての画素についての処理が終了したか否かの判定処理である。i≦MNを満足しない場合、すなわち、iがMNより大(例えばi=MN+1)となった場合に、すべての画素についての仮ラベリング処理が終了したと判定して処理を終了する。
【0118】
ステップS123では、近傍の画素のラベルから、画素iのラベル情報(ラベル=L(i)、ラベル変換情報=T(i))を決定する。具体的には、
画素iの周囲8画素中のスキャン済み画素を参照画素として、これら参照画素のラベルの値、L(i−M−1),L(i−M),L(i−M+1),L(i−1)から、画素iのラベル情報(ラベル=L(i)、ラベル変換情報=T(i))を決定する。
このステップS123の処理は、上述のステップA−1の処理に対応する。
【0119】
ステップS124は、ラベル変換情報の適用処理である。上述のステップA−2の処理に対応する。具体的には、図13〜図19に示す(C)ステップA−2の処理である。すなわち、
(1)画素(i)のラベル変換情報T(i)を、画素(i−M)のラベルL(i−M)の変換処理に適用、
(2)画素(i−1)のラベル変換情報T(i−1)を、画素(i−M+1)のラベルL(i−M+1)の変換処理に適用、
・・・
(M/2)画素(i−M/2+1)のラベル変換情報T(i−M/2+1)を、画素(i−M+M/2−1)のラベルL(i−M+M/2−1)の変換処理に適用、
これらの処理を実行する。
なお、本フローでは一般化して説明するために、処理画像の幅方向の画素数Mの半分の画素(M/2)に対して設定されたラベル変換情報を設定された画素ペアのラベルの変換に適用する例として説明している。
【0120】
先に図13〜図19を参照して説明した処理例では、処理画像の幅方向の画素数Mは10であり、(M/2=5)であるので、この処理は、
(1)画素(i)のラベル変換情報T(i)を、画素(i−M)のラベルL(i−M)の変換処理に適用、
(2)画素(i−1)のラベル変換情報T(i−1)を、画素(i−M+1)のラベルL(i−M+1)の変換処理に適用、
(3)画素(i−2)のラベル変換情報T(i−2)を、画素(i−M+2)のラベルL(i−M+2)の変換処理に適用、
(4)画素(i−3)のラベル変換情報T(i−3)を、画素(i−M+3)のラベルL(i−M+3)の変換処理に適用、
(5)画素(i−4)のラベル変換情報T(i−4)を、画素(i−M+4)のラベルL(i−M+4)の変換処理に適用、
これらの5つの画素ペアの設定によるラベル変換情報の適用として実行されることになる。
【0121】
ステップS125は、2回目のラベル変換情報の適用処理である。上述のステップA−3の処理に対応する。具体的には、図13〜図19に示す(D)ステップA−3の処理である。すなわち、
(1)画素(i)のラベル変換情報T(i)を、画素(i−M+1)のラベルL(i−M+1)の変換処理に適用、
(2)画素(i−1)のラベル変換情報T(i−1)を、画素(i−M+2)のラベルL(i−M+2)の変換処理に適用、
・・・
(M/2)画素(i−M/2+1)のラベル変換情報T(i−M/2+1)を、画素(i−M+M/2)のラベルL(i−M+M/2)の変換処理に適用、
これらの処理を実行する。
【0122】
先に図13〜図19を参照して説明した処理例では、処理画像の幅方向の画素数Mは10であり、(M/2=5)であるので、この処理は、
(1)画素(i)のラベル変換情報T(i)を、画素(i−M+1)のラベルL(i−M+1)の変換処理に適用、
(2)画素(i−1)のラベル変換情報T(i−1)を、画素(i−M+2)のラベルL(i−M+2)の変換処理に適用、
(3)画素(i−2)のラベル変換情報T(i−2)を、画素(i−M+3)のラベルL(i−M+3)の変換処理に適用、
(4)画素(i−3)のラベル変換情報T(i−3)を、画素(i−M+4)のラベルL(i−M+4)の変換処理に適用、
(5)画素(i−4)のラベル変換情報T(i−4)を、画素(i−M+4)のラベルL(i−M+4)の変換処理に適用、
これらの5つの画素ペアの設定によるラベル変換情報の適用処理として実行されることになる。
【0123】
次に、ステップS126において、画素番号[i]を1つインクリメントして、ステップS122以下の処理を繰り返し実行する。
ステップS122において、i≦MNの判定がNoとなり、すべての画素の処理が完了したことが確認されると仮ラベリング処理が終了する。
【0124】
次に、図22に示すフローのステップS102の再ラベリング処理の詳細シーケンスについて図24に示すフローチャートを参照して説明する。
なお、フローに示す記号は、図23のフローと同様、以下の意味を持つ。
[L(x)]は、画素番号xの画素に設定されたラベル、
[T(x)]は、画素番号xの画素に設定されたラベル変換情報、
また、
Mは処理画像の幅方向の画素数、
Nは処理画像の高さ方向の画素数、
である。
【0125】
図24に示す処理は、図2に示す再ラベリング処理部102における処理シーケンスである。前述したように再ラベリング処理は、
ステップB−1:ラベルを更新するとともに、ラベル変換情報を更新する
ステップB−2:ラベル変換情報をラベルに適用する
ステップB−3:ラベル変換情報を隣接する画素に移動させてからラベルに適用する
これらの処理を各画素について実行する。以下、フローに示す各ステップの処理について説明する。
【0126】
ステップS151では、処理画素を示す変数である画素番号[i](i=1〜MN)に初期値として、画像の右下の画素番号[MN]を設定する。
【0127】
ステップS152では、画素番号[i]が、i≦1を満足するか否かを判定する。すなわち、すべての画素についての処理が終了したか否かの判定処理である。i≦1を満足しない場合、すなわち、iが1未満(例えばi=0)となった場合に、すべての画素についての再ラベリング処理が終了したと判定して処理を終了する。
【0128】
ステップS153では、近傍の画素のラベルから、画素iのラベル情報(ラベル=L(i)、ラベル変換情報=T(i))を決定する。具体的には、
画素iの周囲の参照画素のラベルの値、L(i+M+1),L(i+M),L(i+M−1),L(i+1)から、画素iのラベル情報(ラベル=L(i)、ラベル変換情報=T(i))を決定する。
このステップS153の処理は、上述のステップB−1の処理に対応する。
【0129】
ステップS154は、ラベル変換情報の適用処理である。上述のステップB−2の処理に対応する。具体的には、
(1)画素(i)のラベル変換情報T(i)を、画素(i+M)のラベルL(i+M)の変換処理に適用、
(2)画素(i+1)のラベル変換情報T(i+1)を、画素(i+M−1)のラベルL(i+M−1)の変換処理に適用、
・・・
(M/2)画素(i+M/2−1)のラベル変換情報T(i+M/2−1)を、画素(i+M−M/2+1)のラベルL(i+M−M/2+1)の変換処理に適用、
これらの処理を実行する。
なお、本フローでは一般化して説明するために、処理画像の幅方向の画素数Mの半分の画素(M/2)に対して設定されたラベル変換情報を設定された画素ペアのラベルの変換に適用する例として説明している。
【0130】
ステップS155は、2回目のラベル変換情報の適用処理である。上述のステップB−3の処理に対応する。具体的には、
(1)画素(i)のラベル変換情報T(i)を、画素(i+M−1)のラベルL(i+M−1)の変換処理に適用、
(2)画素(i+1)のラベル変換情報T(i+1)を、画素(i+M−2)のラベルL(i+M−2)の変換処理に適用、
・・・
(M/2)画素(i+M/2−1)のラベル変換情報T(i+M/2−1)を、画素(i+M−M/2)のラベルL(i+M−M/2)の変換処理に適用、
これらの処理を実行する。
【0131】
次に、ステップS156において、画素番号[i]を1つデクリメントして、ステップS152以下の処理を繰り返し実行する。
ステップS152において、i≧1の判定がNoとなり、すべての画素の処理が完了したことが確認されると再ラベリング処理が終了する。
【0132】
次に、本発明の画像処理装置の具体的なハードウェア構成例の複数の例について説明する。
(構成例1)
本発明の画像処理装置の第1のハードウェア構成例として、SIMD型プロセッサを用いた構成例について図25を参照して説明する。
【0133】
図25(A)はSIMD(Single Instruction stream Multiple Data stream)型プロセッサの構造を表している。入力レジスタ501、PE(プロセッサエレメント)502、出力レジスタ503が1次元状に配置された構成を複数有する構成を持つ。各プロセッサエレメントは並列処理が可能である。図25(A)示す例は6個のプロセッサエレメント(PE0〜PE5)を持つ構成例である。
【0134】
各PEは、以下のような要件を備えるプロセッサエレメントである。
・比較演算回路を有する
・局所メモリを有する
・隣と2つ隣のPEの局所メモリにアクセスが可能である
・局所メモリの値をインクリメントすることが可能である
・PEの番号を参照することが可能である
・条件により処理の実行の有無を選択することが可能である
【0135】
具体的には、各プロセッサエレメントは、入力画像を構成する画素の画素値に基づく連結画素判定処理を実行して、連結画素集合単位のラベルを設定するラベリング処理を実行する。各プロセッサエレメント各々は、1つ以上の画素に対応するラベルとラベル変換情報をプロセッサエレメント対応の局所メモリに格納し、局所メモリの保持情報を利用したラベル決定処理またはラベル更新処理の少なくともいずれかの処理を行う。
【0136】
また、入力レジスタ501は、プロセッサエレメント(PE)502にデータを入力するためのレジスタである。入力レジスタ501にセットされるデータは、
仮ラベリング処理に際しては、2値画像データ、
再ラベリング処理に際しては、仮ラベリング処理において設定されたラベル、
これらのデータとなる。
【0137】
出力レジスタ503は、プロセッサエレメント(PE)502から出力されたデータを読み出すためのレジスタである。プロセッサエレメント(PE)502における演算によって決定された1画素分のラベルは、出力レジスタ503から外部に読み出すことができる。
【0138】
なお、図に示す例では、6個のプロセッサエレメント(PE0〜PE5)を持つ構成例であるが、プロセッサエレメント(PE)の数は入力する2値画像の幅によって決定する。例えば、画像の幅をM画素とすると、配置するPEの数は(M/2)+1とする。入力画像の幅が10画素の場合は、(10/2)+1で6個のPEを配置する。
【0139】
図25(B)は、プロセッサエレメント(PE)が局所メモリに保持する情報を表している。Lはラベル1画素分、Tはラベル変換情報1画素分のデータである。このように、1つのPEは2画素分のラベルと1画素分のラベル変換情報を保持していることになる。
【0140】
図26は、幅10画素、高さが任意である入力画像の画素構成を表している。各画素に示す[Ln]、[Tn]は、ラベリング処理で求めようとしている画素nに対応するラベルとラベル変換情報を表している(n=1〜画素数)。
【0141】
この画素構成において、画素14のラベルを決定しようとする場合の処理について説明する。図27は、仮ラベリング処理において、各PEに保持されているラベルとラベル変換情報の1サイクルの変化を表したものであり、太い実線で囲まれた部分は書き換えられる可能性のある情報を表している。また、以下の処理の過程で、端に配置されているPEのみが実行すべき処理があるが、これらは各PEが自分のPE番号を参照することで実現することができる。
【0142】
図27(A)は、プロセッサエレメント0(PE0)系列の入力レジスタ521に外部から2値画像データの構成画素(画素14)の画素値情報が書き込まれた状態を示す。この画素14は、ラベル設定画素である。
【0143】
図27(B)は、プロセッサエレメント0(PE0)において、画素14のラベル(L14)を算出する処理を行う際の状態を示している。この処理において、プロセッサエレメント0(PE0)は、プロセッサエレメント0(PE0)の局所メモリに格納されている画素3のラベルの値(L3)と、隣のプロセッサエレメント1(PE1)の局所メモリの格納値である画素4のラベルの値(L4)および画素13のラベルの値(L13)、さらに、2つ隣のプロセッサエレメント2(PE2)の局所メモリの格納値である画素5のラベルの値(L5)を取得して、これらのラベルの値を参照して画素14のラベル(L14)を算出する。
【0144】
図27(C)は、プロセッサエレメント1(PE1)において、画素14のラベル変換情報(T14)を算出する処理を行う際の状態を示している。既にラベル変換情報を算出済みの画素10〜13のラベル変換情報T13〜T10を、それぞれ右のPEに移動((B)の状態から(C)の状態)させて、スキャン済みの周囲画素のラベルの値を、自己および周囲のPEの局所メモリから取得して画素14のラベル変換情報(T14)を算出する。具体的には、画素3,4,5,13のラベルL3、L4、L5、L13を自己および周囲のPEの局所メモリから取得して画素14のラベル変換情報(T14)を算出する。
【0145】
この図27(B),(C)の処理は、スキャン済みの隣接画素のラベル値を参照してラベル情報(ラベルおよびラベル変換情報)を決定する処理であり、例えば図13〜図19を参照して説明した仮ラベリング処理の(B)ステップA−1の処理に相当する。周囲8画素中スキャン済みの4画素のラベルの値を参照してラベルを決定する。
【0146】
図27(D)は、最初のラベル変換情報の適用処理であり、例えば図15を参照して説明した仮ラベリング処理の(C)ステップA−2の処理に相当する。
プロセッサエレメント1(PE1)は、画素14のラベル変換情報(T14)を画素4のラベル(L4)の変換処理に適用する。
プロセッサエレメント2(PE2)は、画素13のラベル変換情報(T13)を画素5のラベル(L5)の変換処理に適用する。
プロセッサエレメント3(PE3)は、画素12のラベル変換情報(T12)を画素6のラベル(L6)の変換処理に適用する。
プロセッサエレメント4(PE4)は、画素11のラベル変換情報(T11)を画素7のラベル(L7)の変換処理に適用する。
プロセッサエレメント5(PE5)は、画素10のラベル変換情報(T10)を画素8のラベル(L8)の変換処理に適用する。
【0147】
図27(E)は、第2のラベル変換情報の適用処理であり、例えば図15を参照して説明した仮ラベリング処理の(D)ステップA−3の処理に相当する。
プロセッサエレメント2(PE2)は、画素14のラベル変換情報(T14)を画素5のラベル(L5)の変換処理に適用する。
プロセッサエレメント3(PE3)は、画素13のラベル変換情報(T13)を画素6のラベル(L6)の変換処理に適用する。
プロセッサエレメント4(PE4)は、画素12のラベル変換情報(T12)を画素7のラベル(L7)の変換処理に適用する。
プロセッサエレメント5(PE5)は、画素11のラベル変換情報(T11)を画素8のラベル(L8)の変換処理に適用する。
さらに、プロセッサエレメント5(PE5)は、画素10のラベル変換情報(T10)を画素9のラベル(L9)の変換処理に適用する。
【0148】
図27(F)は、各プロセッサエレメントの局所メモリに格納されたラベル情報を移動させるとともに、プロセッサエレメント0(PE0)の系列の出力レジスタ522にラベルL3の値を書きみ、この値を仮ラベリング処理の結果として出力する。
【0149】
この仮ラベリング処理の後、同様に再ラベリング処理を行う。
ただし、再ラベリング処理においては、先に説明したように、仮ラベリング処理において設定されたラベルが、図27(A)に示す入力レジスタ521に書き込まれて、処理が実行されることになる。また、再ラベリング処理では、仮ラベリング処理とスキャン順が逆になる。その他の処理は、仮ラベリング処理における処理と同様の処理となる。
【0150】
さらに、幅10画素の入力画像に対するラベリング処理を実行するSIMD型プロセッサとして、例えば図28(A)のようにプロセッサエレメント数を削減した構成とすることも可能である。この構成は、図27を参照して説明した構成に比べて、各プロセッサエレメント(PE)が保持するラベルとラベル変換情報を2倍として、プロセッサエレメントの数を半分とした構成例である。
【0151】
図28(B)は、図28(A)と同様の構成において、新規入力画素14をプロセッサエレメント(PE0)に入力した状態を示している。この状態において、各プロセッサエレメントの局所メモリに格納されているデータは、図27(B)と同様のデータであり、図27を参照して説明した処理と同様の処理が実現される。
【0152】
(構成例2)
次に、本発明の画像処理装置の第2のハードウェア構成例として、シストリックアレーを用いた構成例について図29を参照して説明する。図29(a)はシストリックアレーを構成する素子の1つを示す図である。この素子は、1画素分のラベルLとラベル変換情報Tを保持し、これらの保持情報を異なる素子間で転送するとともに、次のような2種類の演算A,Bを行う。
演算A:保持しているラベルLとラベル変換情報Tを出力すると同時に、新たにラベルとラベル変換情報を入力してその値を保持する
演算B:入力されたラベル変換情報Tを保持しているラベルLに適用する
【0153】
図29(b)は、図29(a)の素子を1次元状に配置して構成したラベリング処理装置である。入力2値画像は、例えば図26に示すような幅10画素、高さが任意であるような入力画像を想定している。配置する素子の数は画像の幅によって決まり、画像の幅をM画素とすると、配置する素子の数は(M+2)となる。図29(b)に示す例は、入力画像の幅を10画素とした場合の例であり、10+2で12個の素子を配置した構成としている。
【0154】
ラベル決定部601は、外部から例えば図示しない入力レジスタを介してラスタスキャン順に入力されたデータを入力し、さらに、素子603〜606に格納されたラベルを入力して、入力データに対応する画素のラベルとラベル変換情報を決定する。なお、ラベル決定部601にラスタスキャン順に入力されるデータは、
仮ラベリング処理のときは2値画像データ、
再ラベリング処理のときはラベル情報(ラベル、ラベル変換情報)
これらのデータである。
【0155】
ラベル決定部601は、外部からラスタスキャン順に入力されたデータに対応する画素のラベル情報(ラベルおよびラベル変換情報)を、素子603〜606に格納されたラベルを参照して決定する。
【0156】
ラベル決定部601が決定したラベル情報(ラベルおよびラベル変換情報)中、ラベルは素子602に対応して設定された入力レジスタ607に書き込まれ、ラベル変換情報は素子605に対応して設定された入力レジスタ309に書き込まれる。また、素子の演算によって決定された1画素分のラベルは、素子606に対応して設定された出力レジスタ308から外部に読み出すことができる。
【0157】
図30は、シストリックアレーを用いた構成を利用して仮ラベリング処理を実行した場合の、各素子の保持情報、すなわちラベルとラベル変換情報の遷移を示している。すなわち、前述した仮ラベリング処理の1サイクルである、
ステップA−1:入力された画素にラベルを付与するとともに、ラベル変換情報を作成する
ステップA−2:ラベル変換情報をラベルに適用する
ステップA−3:ラベル変換情報を隣接する画素に移動させてからラベルに適用する
これらの処理ステップを実行した場合の保持情報の変化を表したものであり、太い実線で囲まれた部分は書き換えられる可能性のある情報を表している。
【0158】
図30(A)は、図29(b)に示すラベル決定部601において決定された画素14のラベル(L14)が、入力レジスタ701に書き込まれ、さらに、画素14のラベル変換情報(T14)が入力レジスタ702に書き込まれた状態である。
【0159】
図30(B)は、各素子のラベルをそれぞれ左の素子に移動させ、ラベル変換情報をそれぞれ右の素子に移動させた状態を示す。ただし、素子702は入力レジスタ701からラベル(L14)を取得し、素子703は入力レジスタ702からラベル変換情報(T14)を取得する。
【0160】
図30(C)は、各素子においてラベル変換情報を各ラベルに適用する処理である。各素子に保持されたラベル変換情報T14〜T4が、同一素子に保持されたラベルL4〜L14に適用される。
【0161】
図30(D)では、各素子のラベル変換情報をそれぞれ右の素子に移動させる。
図30(E)では、各素子においてラベル変換情報をラベルに適用する。各素子に保持されたラベル変換情報T14〜T5が、同一素子に保持されたラベルL5〜L14に適用される。
【0162】
この処理の後、次のサイクルの図30(B)に当たる状態において、出力レジスタ705に画素3に対応するラベルL3の値が書き込まれ、この値が仮ラベリング処理の結果となる。仮ラベリング処理の後、同様に再ラベリング処理を行う。
【0163】
なお、先の図25以下を参照して説明したSIMD型プロセッサを用いた構成例、図29以下を参照して説明したシストリックアレーを適用した構成、これらの構成のいずれにおいても、SIMD型プロセッサに設定するプロセッサエレメントの数、シストリックアレーを構成する素子数を変更することにより、処理効率を変更することができる。すなわち、例えばSIMD型プロセッサに設定するプロセッサエレメントの数、シストリックアレーを構成する素子数を増加させれば、ラベル変換情報の適用処理をより多くの画素間で並列処理可能となり、処理効率を増大させることが可能となる。
【0164】
以上、特定の実施例を参照しながら、本発明について詳解してきた。しかしながら、本発明の要旨を逸脱しない範囲で当業者が実施例の修正や代用を成し得ることは自明である。すなわち、例示という形態で本発明を開示してきたのであり、限定的に解釈されるべきではない。本発明の要旨を判断するためには、特許請求の範囲の欄を参酌すべきである。
【0165】
また、明細書中において説明した一連の処理はハードウェア、またはソフトウェア、あるいは両者の複合構成によって実行することが可能である。ソフトウェアによる処理を実行する場合は、処理シーケンスを記録したプログラムを、専用のハードウェアに組み込まれたコンピュータ内のメモリにインストールして実行させるか、あるいは、各種処理が実行可能な汎用コンピュータにプログラムをインストールして実行させることが可能である。例えば、プログラムは記録媒体に予め記録しておくことができる。記録媒体からコンピュータにインストールする他、LAN(Local Area Network)、インターネットといったネットワークを介してプログラムを受信し、内蔵するハードディスク等の記録媒体にインストールすることができる。
【0166】
なお、明細書に記載された各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。また、本明細書においてシステムとは、複数の装置の論理的集合構成であり、各構成の装置が同一筐体内にあるものには限らない。
【産業上の利用可能性】
【0167】
以上、説明したように、本発明の一実施例の構成によれば、画像に対するラベリング処理を行う構成において、データ処理部を複数のデータ処理要素によって構成し、各データ処理要素が1つ以上の画素に対応するラベルとラベル変換情報を保持し、これらの保持情報の要素間の転送、参照を行って、ラベル決定処理やラベル更新処理を実行する構成とした。本構成により、ラベル変換情報をまとめたテーブルを保持する必要を排除し、テーブル記憶のための共有メモリや、テーブルを整理するための処理が不要となり、メモリと回路規模の削減を実現することが可能となる。また、回路構成をシンプルにすることができるため、局所メモリしか持たないSIMD型プロセッサやシストリックアレーを用いてラベリング処理を実現することが可能となる。
【図面の簡単な説明】
【0168】
【図1】2値画像に対するラベリング処理について説明する図である。
【図2】本発明の一実施例に従った画像処理装置の構成および処理シーケンスの概要について説明する図である。
【図3】本発明の一実施例に係る画像処理装置の仮ラベリング処理と再ラベリング処理の処理態様について説明する図である。
【図4】近傍8画素を参照画素としてラベルを決定する態様、近傍4画素を参照画素としてラベルを決定する態様について説明する図である。
【図5】本発明の一実施例に係る画像処理装置の仮ラベリング処理部において実行する仮ラベリング処理の具体的処理について説明する図である。
【図6】仮ラベリング処理において、近傍8画素を参照画素としてラベル情報設定を行う場合の具体的処理例について説明する図である。
【図7】再ラベリング処理において、近傍8画素を参照画素としてラベル設定を行う場合の具体的処理例について説明する図である。
【図8】本発明の一実施例に係る画像処理装置におけるラベリング処理の実行対象としての2値画像の例を示す図である。
【図9】本発明の一実施例に係る画像処理装置における2値画像に対する仮ラベリング処理のシーケンスについて説明する図である。
【図10】本発明の一実施例に係る画像処理装置における2値画像に対する仮ラベリング処理のシーケンスについて説明する図である。
【図11】本発明の一実施例に係る画像処理装置における再ラベリング処理のシーケンスについて説明する図である。
【図12】本発明の一実施例に係る画像処理装置におけるラベリング処理の実行対象としての2値画像の例を示す図である。
【図13】本発明の一実施例に係る画像処理装置における仮ラベリング処理の具体的処理例について説明する図である。
【図14】本発明の一実施例に係る画像処理装置における仮ラベリング処理の具体的処理例について説明する図である。
【図15】本発明の一実施例に係る画像処理装置における仮ラベリング処理の具体的処理例について説明する図である。
【図16】本発明の一実施例に係る画像処理装置における仮ラベリング処理の具体的処理例について説明する図である。
【図17】本発明の一実施例に係る画像処理装置における仮ラベリング処理の具体的処理例について説明する図である。
【図18】本発明の一実施例に係る画像処理装置における仮ラベリング処理の具体的処理例について説明する図である。
【図19】本発明の一実施例に係る画像処理装置における仮ラベリング処理の具体的処理例について説明する図である。
【図20】本発明の一実施例に係る画像処理装置における仮ラベリング処理の処理結果の例を示す図である。
【図21】本発明の一実施例に係る画像処理装置におけるラベリング処理の実行対象としての2値画像の例を示す図である。
【図22】本発明の一実施例に係る画像処理装置におけるラベリング処理の全体シーケンスを説明するフローチャートを示す図である。
【図23】本発明の一実施例に係る画像処理装置における仮ラベリング処理のシーケンスを説明するフローチャートを示す図である。
【図24】本発明の一実施例に係る画像処理装置における再ラベリング処理のシーケンスを説明するフローチャートを示す図である。
【図25】本発明の一実施例に係る画像処理装置のハードウェア構成例としてのSIMD型プロセッサを用いた構成例につい説明する図である。
【図26】本発明の一実施例に係る画像処理装置におけるラベリング処理の実行対象としての2値画像の例を示す図である。
【図27】本発明の一実施例に係る画像処理装置であるSIMD型プロセッサを用いた構成におけるラベリング処理例について説明する図である。
【図28】本発明の一実施例に係る画像処理装置のハードウェア構成例としてのSIMD型プロセッサを用いた構成例につい説明する図である。
【図29】本発明の一実施例に係る画像処理装置のハードウェア構成例としてのシストリックアレーを用いた構成例につい説明する図である。
【図30】本発明の一実施例に係る画像処理装置であるシストリックアレーを用いた構成例におけるラベリング処理の例を説明する図である。
【符号の説明】
【0169】
101 仮ラベリング処理部
102 再ラベリング処理部
121〜123 画像
501 入力レジスタ
502 プロセッサエレメント(PE)
503 出力レジスタ
601 ラベル決定部
602〜606 素子
607〜609 レジスタ
【特許請求の範囲】
【請求項1】
入力画像を構成する画素の画素値を入力し、入力画素値に基づく連結画素判定処理を実行して、連結画素集合単位のラベルを設定するラベリング処理を実行するデータ処理部を有し、
前記データ処理部は複数のデータ処理要素によって構成され、各データ処理要素が、1つ以上の画素に対応するラベルとラベル変換情報を保持する記憶部と、ラベル決定またはラベル更新の少なくともいずれかの処理を行う演算部を有する構成である画像処理装置。
【請求項2】
前記画像処理装置は、さらに、
入力画像を構成する画素の画素値データを格納する入力レジスタと、
前記データ処理部における処理結果である前記入力画像の構成画素対応のラベルの値を格納する出力レジスタを有し、
前記データ処理部は、前記入力レジスタの格納値を入力して、画素値に基づく連結画素判定処理を実行して、連結画素集合単位のラベルを設定するラベリング処理を実行して、処理結果としてのラベルの値を前記出力レジスタに出力する構成である請求項1に記載の画像処理装置。
【請求項3】
前記データ処理部は、
前記入力画像の画素値を、規定スキャン方向に従って入力して、画素対応のラベルとラベル変換情報を算出する仮ラベリング処理と、
前記仮ラベリング処理結果として得られる画素対応のラベルを、前記仮ラベリング処理と逆のスキャン方向に従って入力し、入力情報に従って設定済みラベルの値を更新する再ラベリング処理を実行する構成である請求項1に記載の画像処理装置。
【請求項4】
前記データ処理部を構成するデータ処理要素の各々は、
前記ラベル変換情報を適用して、各データ処理要素の記憶部に格納したラベルの更新を行う構成である請求項1に記載の画像処理装置。
【請求項5】
前記データ処理部のデータ処理要素の各々は、
前記メモリに保持したラベルおよびラベル変換情報を異なるデータ処理要素間で転送する処理を行う構成である請求項1に記載の画像処理装置。
【請求項6】
前記画像処理装置は、
入力レジスタと、プロセッサエレメントと、出力レジスタからなるセットを複数有するSIMD(Single Instruction stream Multiple Data stream)型構成を有し、各プロセッサエレメント(PE:Processer Element)の局所メモリに1つ以上の画素に対応するラベルとラベル変換情報を保持し、各プロセッサエレメントにおいてラベル算出を行う構成である請求項1に記載の画像処理装置。
【請求項7】
前記プロセッサエレメントの各々は、ラベル算出処理およびラベル変換情報の適用処理を並列に実行する構成である請求項6に記載の画像処理装置。
【請求項8】
前記プロセッサエレメントの各々は、前記局所メモリに保持したラベルとラベル変換情報を異なるプロセッサエレメント間で転送する処理を行う構成である請求項6に記載の画像処理装置。
【請求項9】
前記データ処理部は、複数の素子からなるシストリックアレー構成を有し、前記素子の各々が1つ以上の画素に対応するラベルとラベル変換情報を保持して、ラベル変換情報を適用したラベル更新処理を実行する構成である請求項1に記載の画像処理装置。
【請求項10】
前記データ処理部は、さらに、
複数の参照画素のラベルを入力して画素のラベルの決定および更新を実行するラベル決定部を有する構成である請求項9に記載の画像処理装置。
【請求項11】
前記複数の素子の各々は、各素子において保持したラベルとラベル変換情報を異なる素子間で転送する処理を行う構成である請求項9に記載の画像処理装置。
【請求項12】
画像処理装置においてラベリング処理を実行する画像処理方法であり、
複数のデータ処理要素を有するデータ処理部が、入力画像を構成する画素の画素値に基づく連結画素判定処理を実行して、連結画素集合単位のラベルを設定するラベリング処理を実行するデータ処理ステップを有し、
前記データ処理ステップは、
前記複数のデータ処理要素の各々が、1つ以上の画素に対応するラベルとラベル変換情報をデータ処理要素対応の記憶部に格納するステップと、
前記複数のデータ処理要素の各々が、前記記憶部の保持情報を利用したラベル決定処理またはラベル更新処理の少なくともいずれかの処理を行うステップと、
を含むステップであることを特徴とする画像処理方法。
【請求項13】
画像処理装置においてラベリング処理を実行させるプログラムであり、
複数のデータ処理要素を有するデータ処理部に、入力画像を構成する画素の画素値に基づく連結画素判定処理を実行させて、連結画素集合単位のラベルを設定するラベリング処理を実行させるデータ処理ステップを有し、
前記データ処理ステップは、
前記複数のデータ処理要素の各々に、1つ以上の画素に対応するラベルとラベル変換情報をデータ処理要素対応の記憶部に格納させるステップと、
前記複数のデータ処理要素の各々に、前記記憶部の保持情報を利用したラベル決定処理またはラベル更新処理の少なくともいずれかの処理を行わせるステップと、
を含むステップであることを特徴とするプログラム。
【請求項1】
入力画像を構成する画素の画素値を入力し、入力画素値に基づく連結画素判定処理を実行して、連結画素集合単位のラベルを設定するラベリング処理を実行するデータ処理部を有し、
前記データ処理部は複数のデータ処理要素によって構成され、各データ処理要素が、1つ以上の画素に対応するラベルとラベル変換情報を保持する記憶部と、ラベル決定またはラベル更新の少なくともいずれかの処理を行う演算部を有する構成である画像処理装置。
【請求項2】
前記画像処理装置は、さらに、
入力画像を構成する画素の画素値データを格納する入力レジスタと、
前記データ処理部における処理結果である前記入力画像の構成画素対応のラベルの値を格納する出力レジスタを有し、
前記データ処理部は、前記入力レジスタの格納値を入力して、画素値に基づく連結画素判定処理を実行して、連結画素集合単位のラベルを設定するラベリング処理を実行して、処理結果としてのラベルの値を前記出力レジスタに出力する構成である請求項1に記載の画像処理装置。
【請求項3】
前記データ処理部は、
前記入力画像の画素値を、規定スキャン方向に従って入力して、画素対応のラベルとラベル変換情報を算出する仮ラベリング処理と、
前記仮ラベリング処理結果として得られる画素対応のラベルを、前記仮ラベリング処理と逆のスキャン方向に従って入力し、入力情報に従って設定済みラベルの値を更新する再ラベリング処理を実行する構成である請求項1に記載の画像処理装置。
【請求項4】
前記データ処理部を構成するデータ処理要素の各々は、
前記ラベル変換情報を適用して、各データ処理要素の記憶部に格納したラベルの更新を行う構成である請求項1に記載の画像処理装置。
【請求項5】
前記データ処理部のデータ処理要素の各々は、
前記メモリに保持したラベルおよびラベル変換情報を異なるデータ処理要素間で転送する処理を行う構成である請求項1に記載の画像処理装置。
【請求項6】
前記画像処理装置は、
入力レジスタと、プロセッサエレメントと、出力レジスタからなるセットを複数有するSIMD(Single Instruction stream Multiple Data stream)型構成を有し、各プロセッサエレメント(PE:Processer Element)の局所メモリに1つ以上の画素に対応するラベルとラベル変換情報を保持し、各プロセッサエレメントにおいてラベル算出を行う構成である請求項1に記載の画像処理装置。
【請求項7】
前記プロセッサエレメントの各々は、ラベル算出処理およびラベル変換情報の適用処理を並列に実行する構成である請求項6に記載の画像処理装置。
【請求項8】
前記プロセッサエレメントの各々は、前記局所メモリに保持したラベルとラベル変換情報を異なるプロセッサエレメント間で転送する処理を行う構成である請求項6に記載の画像処理装置。
【請求項9】
前記データ処理部は、複数の素子からなるシストリックアレー構成を有し、前記素子の各々が1つ以上の画素に対応するラベルとラベル変換情報を保持して、ラベル変換情報を適用したラベル更新処理を実行する構成である請求項1に記載の画像処理装置。
【請求項10】
前記データ処理部は、さらに、
複数の参照画素のラベルを入力して画素のラベルの決定および更新を実行するラベル決定部を有する構成である請求項9に記載の画像処理装置。
【請求項11】
前記複数の素子の各々は、各素子において保持したラベルとラベル変換情報を異なる素子間で転送する処理を行う構成である請求項9に記載の画像処理装置。
【請求項12】
画像処理装置においてラベリング処理を実行する画像処理方法であり、
複数のデータ処理要素を有するデータ処理部が、入力画像を構成する画素の画素値に基づく連結画素判定処理を実行して、連結画素集合単位のラベルを設定するラベリング処理を実行するデータ処理ステップを有し、
前記データ処理ステップは、
前記複数のデータ処理要素の各々が、1つ以上の画素に対応するラベルとラベル変換情報をデータ処理要素対応の記憶部に格納するステップと、
前記複数のデータ処理要素の各々が、前記記憶部の保持情報を利用したラベル決定処理またはラベル更新処理の少なくともいずれかの処理を行うステップと、
を含むステップであることを特徴とする画像処理方法。
【請求項13】
画像処理装置においてラベリング処理を実行させるプログラムであり、
複数のデータ処理要素を有するデータ処理部に、入力画像を構成する画素の画素値に基づく連結画素判定処理を実行させて、連結画素集合単位のラベルを設定するラベリング処理を実行させるデータ処理ステップを有し、
前記データ処理ステップは、
前記複数のデータ処理要素の各々に、1つ以上の画素に対応するラベルとラベル変換情報をデータ処理要素対応の記憶部に格納させるステップと、
前記複数のデータ処理要素の各々に、前記記憶部の保持情報を利用したラベル決定処理またはラベル更新処理の少なくともいずれかの処理を行わせるステップと、
を含むステップであることを特徴とするプログラム。
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図21】
【図22】
【図23】
【図24】
【図25】
【図26】
【図27】
【図28】
【図29】
【図30】
【図1】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図3】
【図4】
【図5】
【図6】
【図7】
【図21】
【図22】
【図23】
【図24】
【図25】
【図26】
【図27】
【図28】
【図29】
【図30】
【図1】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【公開番号】特開2009−252127(P2009−252127A)
【公開日】平成21年10月29日(2009.10.29)
【国際特許分類】
【出願番号】特願2008−102103(P2008−102103)
【出願日】平成20年4月10日(2008.4.10)
【出願人】(000002185)ソニー株式会社 (34,172)
【Fターム(参考)】
【公開日】平成21年10月29日(2009.10.29)
【国際特許分類】
【出願日】平成20年4月10日(2008.4.10)
【出願人】(000002185)ソニー株式会社 (34,172)
【Fターム(参考)】
[ Back to top ]