(57)【特許請求の範囲】
【請求項１】
複数種類の画素を含む対象画像を表す対象画像データを取得する取得部であって、前記対象画像は、第１の方向に連続する複数個の画素をそれぞれ含む第１のラインと第２のラインとを含み、前記第２のラインは、前記第１のラインに対して前記第１の方向と直交する第２の方向に隣接し、前記第１の方向に連続する複数個の画素は、前記第１の方向に連続する１個以上の同じ種類の画素を含むライン画素群を含む、前記取得部と、
前記対象画像データを用いて、複数個の同種画素群のそれぞれにラベルを設定するラベリング部であって、前記複数個の同種画素群のそれぞれは、連続する同じ種類の１個以上の画素を含む、前記ラベリング部と、
を備え、
前記ラベリング部は、
前記対象画像の前記第１のラインのライン情報を生成する生成処理であって、前記ライン情報は、前記第１のライン上のＮ個（Ｎは２以上の整数）の画素のそれぞれに対応するＮ個の値を含み、前記Ｎ個の値のそれぞれは、対応する画素の前記第１の方向の位置であって、対応する画素を含む前記ライン画素群内の前記第１の方向の位置を示す、前記生成処理と、
前記対象画像の前記第２のライン上の一つの注目ライン画素群を決定する決定処理と、
前記第１のラインの前記ライン情報に含まれる前記Ｎ個の値のうち、前記第１のライン上の第１の画素に対応する第１の参照値を取得する第１の取得処理であって、前記第１の画素は、前記第２のライン上の前記注目ライン画素群内の一つの画素の前記第１の方向の位置に対応する、前記第１のライン上の画素である、前記第１の取得処理と、
取得された前記第１の参照値を用いて、前記第１の画素を含む前記第１のライン上の第１のライン画素群と、前記注目ライン画素群と、が、一つの前記同種画素群を構成するか否かを判断する第１の判断処理と、
前記第１の参照値を用いて、前記第１のラインの前記ライン情報の前記Ｎ個の値のうち、前記第１の画素とは連続しない前記第１のライン上の第２の画素に対応する第２の参照値を取得する第２の取得処理であって、前記第１のラインの前記ライン情報の前記Ｎ個の値のうち、前記第１の画素と前記第２の画素との間の前記第１のライン上の画素に対応する値を取得しない、前記第２の取得処理と、
取得された前記第２の参照値を用いて、前記第２の画素を含む前記第１のライン上の第２のライン画素群と、前記注目ライン画素群と、が、一つの前記同種画素群を構成するか否かを判断する第２の判断処理と、
前記第１の判断処理と前記第２の判断処理とによる判断結果とを用いて、前記注目ライン画素群に特定のラベルを設定する設定処理と、
を実行する、画像処理装置。
【請求項２】
請求項１に記載の画像処理装置であって、
前記ライン情報の前記Ｎ個の値は、対応する画素を含む前記ライン画素群に含まれる画素の個数と、前記ライン画素群における対応する画素の位置と、に基づいて決定される、画像処理装置。
【請求項３】
請求項１または請求項２に記載の画像処理装置であって、
前記ライン情報の前記Ｎ個の値は、対応するライン上にて、対応する画素から前記第１の方向に向かって同じ種類の画素が連続する個数である連続数を示す、画像処理装置。
【請求項４】
請求項３に記載の画像処理装置であって、
前記ラベリング部は、前記第２の取得処理にて、前記第１の参照値によって示される前記連続数を用いて、前記第１のライン画素群に対して前記第１の方向に隣接する画素に対応する前記第２の参照値を取得する、画像処理装置。
【請求項５】
請求項１から請求項４のいずれかに記載の画像処理装置であって、
前記ライン情報の前記Ｎ個の値のそれぞれは、対応する画素の種類を示す種別情報を含み、
前記ラベリング部は、
前記第１の判断処理にて、前記第１の参照値に含まれる前記種別情報を用いて、前記第１のライン画素群と、前記注目ライン画素群と、が、一つの前記同種画素群を構成するか否かを判断し、
前記第２の判断処理にて、前記第２の参照値に含まれる前記種別情報を用いて、前記第２のライン画素群と、前記注目ライン画素群と、が、一つの前記同種画素群を構成するか否かを判断する、画像処理装置。
【請求項６】
請求項１から請求項５のいずれかに記載の画像処理装置であって、
前記ラベリング部は、
前記第１のライン画素群および前記第２のライン画素群のうちの少なくとも一方と、前記注目ライン画素群と、が、一つの前記同種画素群を構成すると判断される場合には、前記設定処理にて、前記注目ライン画素群に、前記第１のライン画素群および前記第２のライン画素群のうち、前記注目ライン画素群と一つの前記同種画素群を構成すると判断される一のライン画素群と同じラベルを設定し、
前記第１のライン画素群および前記第２のライン画素群のうちの両方が、前記注目ライン画素群と一つの前記同種画素群を構成しないと判断される場合には、前記設定処理にて、前記注目ライン画素群に、前記第１のライン画素群および前記第２のライン画素群とは異なるラベルを設定する、画像処理装置。
【請求項７】
請求項１から請求項６のいずれかに記載の画像処理装置であって、
前記ラベリング部は、
前記決定処理にて、前記第２のライン上の複数個の前記ライン画素群のそれぞれを前記注目ライン画素群として決定し、
複数個の前記注目ライン画素群のそれぞれについて、互いに異なる前記第１の参照値を用いて前記第１の判断処理を実行し、
複数個の前記注目ライン画素群のそれぞれについて、互いに異なる前記第２の参照値を用いて前記第２の判断処理を実行する、画像処理装置。
【請求項８】
請求項１から請求項７のいずれかに記載の画像処理装置であって、
前記第１のライン画素群の第１のラベルと、前記第２のライン画素群の第２のラベルと、は、異なり、
前記ラベリング部は、
前記第１のライン画素群と前記第２のライン画素群との両方と、前記注目ライン画素群と、が、一つの前記同種画素群を構成すると判断される場合には、前記設定処理にて、前記注目ライン画素群に、前記第１のライン画素群と同じ前記第１のラベルを設定するとともに、前記第２のライン画素群の前記第２のラベルを、前記第１のライン画素群と同じにするべきことを示すラベル情報を記録し、
前記第１のラインと前記第２のラインとを含む前記対象画像内の複数個のラインにラベルを設定した後に、前記ラベル情報を用いて、前記第２のライン画素群の前記第２のラベルを修正する、画像処理装置。
【請求項９】
複数種類の画素を含む対象画像を表す対象画像データを取得する取得機能であって、前記対象画像は、第１の方向に連続する複数個の画素をそれぞれ含む第１のラインと第２のラインとを含み、前記第２のラインは、前記第１のラインに対して前記第１の方向と直交する第２の方向に隣接し、前記第１の方向に連続する複数個の画素は、前記第１の方向に連続する１個以上の同じ種類の画素を含むライン画素群を含む、前記取得機能と、
前記対象画像データを用いて、複数個の同種画素群のそれぞれにラベルを設定するラベリング機能であって、前記複数個の同種画素群のそれぞれは、連続する同じ種類の１個以上の画素を含む、前記ラベリング機能と、
をコンピュータに実現させ、
前記ラベリング機能は、
前記対象画像の前記第１のラインのライン情報を生成する生成処理であって、前記ライン情報は、前記第１のライン上のＮ個（Ｎは２以上の整数）の画素のそれぞれに対応するＮ個の値を含み、前記Ｎ個の値のそれぞれは、対応する画素の前記第１の方向の位置であって、対応する画素を含む前記ライン画素群内の前記第１の方向の位置を示す、前記生成処理と、
前記対象画像の前記第２のライン上の一つの注目ライン画素群を決定する決定処理と、
前記第１のラインの前記ライン情報に含まれる前記Ｎ個の値のうち、前記第１のライン上の第１の画素に対応する第１の参照値を取得する第１の取得処理であって、前記第１の画素は、前記第２のライン上の前記注目ライン画素群内の一つの画素の前記第１の方向の位置に対応する、前記第１のライン上の画素である、前記第１の取得処理と、
取得された前記第１の参照値を用いて、前記第１の画素を含む前記第１のライン上の第１のライン画素群と、前記注目ライン画素群と、が、一つの前記同種画素群を構成するか否かを判断する第１の判断処理と、
前記第１の参照値を用いて、前記第１のラインの前記ライン情報の前記Ｎ個の値のうち、前記第１の画素とは連続しない前記第１のライン上の第２の画素に対応する第２の参照値を取得する第２の取得処理であって、前記第１のラインの前記ライン情報の前記Ｎ個の値のうち、前記第１の画素と前記第２の画素との間の前記第１のライン上の画素に対応する値を取得しない、前記第２の取得処理と、
取得された前記第２の参照値を用いて、前記第２の画素を含む前記第１のライン上の第２のライン画素群と、前記注目ライン画素群と、が、一つの前記同種画素群を構成するか否かを判断する第２の判断処理と、
前記第１の判断処理と前記第２の判断処理とによる判断結果とを用いて、前記注目ライン画素群に特定のラベルを設定する設定処理と、
を実行する、コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書は、同じ種類の画素を含む画素群に対してラベルを設定する画像処理に関する。
【背景技術】
【０００２】
特許文献１には、対象物にラベリングを行う画像処理装置が開示されている。この画像処理装置は、装置と背景とを分離する二値化処理後に、二値化処理の結果をラインごとにランレングスで表現したランレングステーブルを作成し、一のラインと次のラインとのランレングスの情報を用いて、対象物にラベリングを行っている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平１０−２３２９４１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、ラインごとのランレングスの情報から、参照すべき情報を取得するのは、比較的処理時間を要する場合があった。例えば、ラインごとのランレングスの情報から、ライン上の特定の位置に関する情報を取得するためには、ライン内の先頭のランレングスの情報から順に、取得すべき情報を探索する必要があった。このために、ラベリングを行うための処理時間が長くなる可能性があった。
【０００５】
本明細書は、画像内の同じ種類の画素を含む同種画素群に対してラベルを設定する画像処理の処理時間を短縮できる新たな技術を開示する。
【課題を解決するための手段】
【０００６】
本明細書に開示された技術は、以下の適用例として実現することが可能である。
【０００７】
［適用例１］複数種類の画素を含む対象画像を表す対象画像データを取得する取得部であって、前記対象画像は、第１の方向に連続する複数個の画素をそれぞれ含む第１のラインと第２のラインとを含み、前記第２のラインは、前記第１のラインに対して前記第１の方向と直交する第２の方向に隣接し、前記第１の方向に連続する複数個の画素は、前記第１の方向に連続する１個以上の同じ種類の画素を含むライン画素群を含む、前記取得部と、
前記対象画像データを用いて、複数個の同種画素群のそれぞれにラベルを設定するラベリング部であって、前記複数個の同種画素群のそれぞれは、連続する同じ種類の１個以上の画素を含む、前記ラベリング部と、
を備え、
前記ラベリング部は、
前記対象画像の前記第１のラインのライン情報を生成する生成処理であって、前記ライン情報は、前記第１のライン上のＮ個（Ｎは２以上の整数）の画素のそれぞれに対応するＮ個の値を含み、前記Ｎ個の値のそれぞれは、対応する画素の前記第１の方向の位置であって、対応する画素を含む前記ライン画素群内の前記第１の方向の位置を示す、前記生成処理と、
前記対象画像の前記第２のライン上の一つの注目ライン画素群を決定する決定処理と、
前記第１のラインの前記ライン情報に含まれる前記Ｎ個の値のうち、前記第１のライン上の第１の画素に対応する第１の参照値を取得する第１の取得処理であって、前記第１の画素は、前記第２のライン上の前記注目ライン画素群内の一つの画素の前記第１の方向の位置に対応する、前記第１のライン上の画素である、前記第１の取得処理と、
取得された前記第１の参照値を用いて、前記第１の画素を含む前記第１のライン上の第１のライン画素群と、前記注目ライン画素群と、が、一つの前記同種画素群を構成するか否かを判断する第１の判断処理と、
前記第１の参照値を用いて、前記第１のラインの前記ライン情報の前記Ｎ個の値のうち、前記第１の画素とは連続しない前記第１のライン上の第２の画素に対応する第２の参照値を取得する第２の取得処理であって、前記第１のラインの前記ライン情報の前記Ｎ個の値のうち、前記第１の画素と前記第２の画素との間の前記第１のライン上の画素に対応する値を取得しない、前記第２の取得処理と、
取得された前記第２の参照値を用いて、前記第２の画素を含む前記第１のライン上の第２のライン画素群と、前記注目ライン画素群と、が、一つの前記同種画素群を構成するか否かを判断する第２の判断処理と、
前記第１の判断処理と前記第２の判断処理とによる判断結果とを用いて、前記注目ライン画素群に特定のラベルを設定する設定処理と、
を実行する、画像処理装置。
【０００８】
上記構成によれば、ライン情報は、第１のライン上のＮ個の画素のそれぞれに対応するＮ個の値を含んでいる。すなわち、ライン情報のＮ個の値は、第１のライン内の画素と一対一で対応している。したがって、注目ライン画素群内の一つの画素の第１の方向の位置に応じて、第１のライン上の第１の画素に対応する第１の参照値を容易に取得できる。また、Ｎ個の値のそれぞれは、対応する画素の第１方向の位置であって、対応する画素を含むライン画素群内の第１方向の位置を示している。したがって、第１の参照値を用いて、次に参照すべき第１のライン上の第２の画素に対応する第２の参照値を容易に取得できる。即ち、第１の参照値を取得した後に、第１のライン上の第１の画素と第２の画素との間の画素に対応する参照値の取得を回避することができる。この結果、１個以上の同じ種類の画素を含む画素群に対してラベルを設定する画像処理の処理時間を短縮することができる。
【０００９】
なお、本明細書に開示された技術は、種々の形態で実現可能であり、例えば、印刷装置、印刷装置の制御装置、画像処理方法、これらの装置および方法の機能を実現するためのコンピュータプログラム、そのコンピュータプログラムを記録した記録媒体、等の形態で実現することができる。
【図面の簡単な説明】
【００１０】
【図１】画像処理装置の一例である複合機２００の構成を示すブロック図である。
【図２】画像処理のフローチャートである。
【図３】画像処理で用いられる画像の一例を示す図である。
【図４】ラベリング処理のフローチャートである。
【図５】ラベリング処理で用いられる画像の一例を示す図である。
【図６】ラベル修正テーブルＬＡＴの一例を示す図である。
【図７】ライン情報生成処理のフローチャートである。
【図８】ラベル設定処理のフローチャートである。
【図９】ラベル画像ＬＩの一例を示す図である。
【図１０】比較例のライン情報ＬＤＸの一例を示す図である。
【発明を実施するための形態】
【００１１】
Ａ．実施例：
Ａ−１：複合機２００の構成
次に、実施の形態を実施例に基づき説明する。図１は、画像処理装置の一例である複合機２００の構成を示すブロック図である。複合機２００は、画像処理装置を制御するプロセッサの一例であるＣＰＵ２１０と、フラッシュメモリやハードディスクドライブなどの不揮発性記憶装置２２０と、ＤＲＡＭなどの揮発性記憶装置２３０と、画像読取部２４０と、印刷実行部２５０と、タッチパネルや複数個のボタンを含む操作部２６０と、タッチパネルと重畳された液晶ディスプレイなどの表示部２７０と、ユーザの端末装置１００などの外部装置と通信を行うためのインタフェースを含む通信部２８０と、を備えている。
【００１２】
画像読取部２４０は、ＣＰＵ２１０の制御に従って、イメージセンサを用いて原稿を光学的に読み取ることによってスキャンデータを生成する。印刷実行部２５０は、ＣＰＵ２１０の制御に従って、所定の方式（例えば、インクジェット、レーザー）によって用紙などの印刷媒体に画像を印刷する。
【００１３】
揮発性記憶装置２３０は、ＣＰＵ２１０が処理を行う際に生成される種々の中間データを一時的に格納するバッファ領域２３１を提供する。不揮発性記憶装置２２０には、コンピュータプログラムＣＰが格納されている。コンピュータプログラムＣＰは、ＣＰＵ２１０に複合機２００の制御を実現させる制御プラグラムである。本実施例では、コンピュータプログラムＣＰは、複合機２００の製造時に、不揮発性記憶装置２２０に予め格納される形態で提供される。これに代えて、コンピュータプログラムＣＰは、サーバからダウンロードされる形態で提供されても良く、ＤＶＤ−ＲＯＭなどに格納される形態で提供されてもよい。ＣＰＵ２１０は、コンピュータプログラムＣＰを実行することにより、後述する画像処理を実行することができる。
【００１４】
Ａ−２：画像処理
図２は、画像処理のフローチャートである。この画像処理は、例えば、ユーザが、高圧縮ＰＤＦファイルの生成を指示した場合に実行される。高圧縮ＰＤＦファイルは、文字画像を表す圧縮済の文字画像データと、非文字画像を表す圧縮済の非文字画像データと、を含み、これらの複数個の画像データによって１個の画像を表すＰＤＦ形式の画像ファイルである。
【００１５】
Ｓ１０、Ｓ２０では、ＣＰＵ２１０は、対象画像データとしての二値画像データを取得する。
【００１６】
Ｓ１０では、ＣＰＵ２１０は、ユーザが原稿台に設置した原稿を、画像読取部２４０を用いて読み取ることによって、スキャンデータを生成する。生成されたスキャンデータは、バッファ領域２３１（図１）に格納される。スキャンデータは、画素ごとの色をＲＧＢ値で表すＲＧＢ画像データである。１個の画素のＲＧＢ値は、例えば、赤（Ｒ）と緑（Ｇ）と青（Ｂ）との３個の色成分の階調値（以下、成分値とも呼ぶ）を含んでいる。本実施例では、各成分値の階調数は、２５６階調である。
【００１７】
図３は、画像処理で用いられる画像の一例を示す図である。図３（Ａ）には、スキャンデータによって表されるスキャン画像ＳＩの一例が示されている。スキャン画像ＳＩは、図示しない複数の画素が、第１の方向Ｄ１と、第１の方向Ｄ１と直交する第２の方向Ｄ２と、に沿って、マトリクス状に配置されている。
【００１８】
図３（Ａ）のスキャン画像ＳＩは、背景Ｂｇと、３個の非文字オブジェクトＯｂ１〜Ｏｂ３と、４個の文字オブジェクトＯｂ４〜Ｏｂ７と、を含んでいる。非文字オブジェクトは、例えば、写真オブジェクトや描画オブジェクトである。
【００１９】
Ｓ２０では、ＣＰＵ２１０は、スキャン画像ＳＩ内の複数個の画素をオブジェクトを示すオブジェクト画素と背景を示す背景画素とに分類するために、スキャン画像に対して二値化処理を実行して、二値画像データを生成する。具体的には、例えば、ＣＰＵ２１０は、スキャン画像ＳＩの背景Ｂｇの色を示す背景色値を算出する。背景色値には、例えば、スキャンデータのＲＧＢの３個の色成分のそれぞれの最頻値Ｒｍ、Ｇｍ、Ｂｍによって表される色値（Ｒｍ、Ｇｍ、Ｂｍ）が用いられる。ＣＰＵ２１０は、スキャン画像ＳＩ内の複数個の画素のうち、背景色値に比較的近いＲＧＢ値を有する画素を背景画素に分類し、その他の画素をオブジェクト画素に分類することによって、スキャンデータを二値化する。背景色値に比較的近いＲＧＢ値を有する画素は、例えば、Ｒｍ−ｄＶ≦Ｒ≦Ｒｍ＋ｄＶ、かつ、Ｇｍ−ｄＶ≦Ｇ≦Ｇｍ＋ｄＶ、かつ、Ｂｍ−ｄＶ≦Ｂ≦Ｂｍ＋ｄＶを満たすＲＧＢ値）を有する画素である。生成された二値画像データにおいて、例えば、ＯＮの値は、オブジェクト画素を示し、ＯＦＦの値は、背景画素を示す。
【００２０】
図３（Ｂ）には、生成された二値画像データによって表される二値画像ＢＩが示されている。図３（Ｂ）の二値画像ＢＩは、複数個のオブジェクト画素によって構成されるオブジェクト領域として、スキャン画像ＳＩの７個のオブジェクトＯｂ１〜Ｏｂ７（図３（Ａ））にそれぞれ対応する７個のオブジェクト領域ＢＡ１〜ＢＡ７を含んでいる。二値画像ＢＩは、スキャン画像ＳＩの背景Ｂｇに対応する背景領域ＢＡ０を含んでいる。
【００２１】
Ｓ３０では、ＣＰＵ２１０は、二値画像データを用いて、オブジェクト領域と背景領域とを特定して、特定された領域にラベルを設定するラベリング処理を実行する。ラベリング処理の結果、ラベルの値を画素ごとに有するラベルデータが生成されて、バッファ領域２４１に格納される。
【００２２】
ラベリング処理では、連続する１個以上の同じ種類の画素を含む同種画素群が１個の領域として特定される。具体的には、連続する１個以上のオブジェクト画素を含む第１種の同種画素群が、１個のオブジェクト領域として特定され、連続する１個以上の背景画素を含む第２種の同種画素群が、１個の背景領域として特定される。本実施例では、「第１の画素と第２の画素とが連続している」とは、第１の画素の上下左右に接する４個の位置のいずれかに、第２の画素が位置していることを意味する。これに代えて、「第１の画素と第２の画素とが連続している」とは、第１の画素を中心とする縦３画素×横３画素の範囲に第２の画素が含まれることを意味しても良い。
【００２３】
図３（Ｂ）の例では、上述した７個のオブジェクト領域ＢＡ１〜ＢＡ７と、１個の背景領域ＢＡ０と、が特定される。これらの領域ＢＡ０〜ＢＡ７のそれぞれには、領域を識別する識別子として互いに異なるラベルが設定される。二値画像ＢＩを構成する各画素は、スキャン画像ＳＩを構成する各画素と一対一で対応しているので、二値画像ＢＩにおいて、領域ＢＡ０〜ＢＡ７が特定されることは、スキャン画像ＳＩにおいて、オブジェクトＯｂ１〜Ｏｂ７、背景Ｂｇが特定されること、と同義である。
【００２４】
Ｓ４０では、ＣＰＵ２１０は、特定された領域ごとに、領域内の画像の種類、すなわち、領域内のオブジェクトの種類が「文字」であるか否かを判断するオブジェクト属性判断処理を実行する。この処理は、公知の方法で行われるが、例えば、オブジェクト領域に含まれる色数が基準以下であり、かつ、オブジェクト領域に外接する最小矩形内の総画素数に対するオブジェクト画素の画素数が基準以下であるオブジェクト領域は、文字であると判断される。
【００２５】
Ｓ５０では、ＣＰＵ２１０は、高圧縮ＰＤＦファイルを生成する。具体的には、スキャンデータを用いて、文字であると判断されたオブジェクトＯｂ４〜Ｏｂ６を示す文字画像ＴＩ（図３（Ｃ））を表す文字画像データと、文字以外のオブジェクトＯｂ１〜Ｏｂ３と背景Ｂｇとを含む非文字画像ＧＩ（図３（Ｄ））を表す非文字画像データと、が生成される。文字画像データは、二値画像データであり、例えば、ＦＬＡＴＥ圧縮方式により圧縮される。非文字画像データは、ＲＧＢ画像データであり、例えば、ＪＰＥＧ圧縮方式で圧縮される。圧縮済の非文字画像データは、最下層のレイヤーとして表示させる画像データとして、ＰＤＦファイルに格納される。圧縮済の文字画像データは、非文字画像データより上位層のレイヤーとして表示する画像データとして、ＰＤＦファイルに格納される。圧縮済の文字画像データは、文字色値ＴＣ１および座標値ＣＤ１と関連付けて、ＰＤＦファイルに格納される。文字色値ＴＣ１は、文字の色を表すＲＲＢ値であり、座標値ＣＤ１は、非文字画像ＧＩに対して、文字画像ＴＩが配置されるべき位置を表す情報である。
【００２６】
高圧縮ＰＤＦファイルが生成されると、画像処理は終了される。生成された高圧縮ＰＤＦファイルは、例えば、不揮発性記憶装置２２０に保存され、ユーザの利用に供される。高圧縮ＰＤＦファイルは、例えば、ＰＤＦファイルの閲覧ソフトを用いて表示すると、スキャン画像ＳＩ（図３（Ａ））を、再現することができる。
【００２７】
Ａ−３．ラベリング処理
図２のＳ３０のラベリング処理について説明する。図４は、ラベリング処理のフローチャートである。図５は、ラベリング処理で用いられる画像の一例を示す図である。説明の容易のために、図５（Ａ）に示すように、縦５画素×横２４画素（１２０個）の二値画像ＢＩを示す二値画像データが処理対象であるとして、ラベリング処理を説明する。図５（Ａ）の二値画像ＢＩ内のハッチングされた画素は、オブジェクト画素であり、ハッチングされていない画素は、背景画素である。なお、後述するラベル画像ＬＩおよびライン情報ＬＤについても、理解の容易のために、対応する二値画像ＢＩ内の画素がオブジェクト画素である画素には、ハッチングを付している。
【００２８】
Ｓ１１０では、ＣＰＵ２１０は、初期状態のラベルデータをバッファ領域２３１内に準備する。ラベルデータは、スキャン画像ＳＩおよび二値画像ＢＩと同じ個数の画素を有するラベル画像を表すデータである。初期状態のラベルデータにおいて、各画素の値は、初期値（本実施例では、「０」）である。ラベルデータによって表されるラベル画像ＬＩ（図５（Ｂ））は、図５（Ａ）の二値画像ＢＩと同様に、縦５画素×横２４画素のサイズを有している。
【００２９】
Ｓ１２０では、ＣＰＵ２１０は、初期状態のラベル修正テーブルＬＡＴをバッファ領域２３１内に準備する。図６は、ラベル修正テーブルＬＡＴの一例を示す図である。本実施例では、詳細は後述するが、処理時間の短縮のために、ラベルデータにおいて、ラベルが設定された画素について、ラベルを修正する必要がある場合であっても、全ての画素にラベルを設定するまでは、ラベルの修正を行わない。その代わりに、ラベルを修正する必要がある場合には、ラベル修正テーブルＬＡＴに、修正ラベルを記録する。ラベル修正テーブルＬＡＴは、複数個のエントリを含んでいる。各エントリは、ラベルと、該ラベルに対応する修正ラベルと、を含んでいる。図６（Ａ）の初期状態のラベル修正テーブルＬＡＴでは、各エントリにおいて、ラベルと修正ラベルとが一致している。例えば、図６（Ａ）の上から２番目のエントリＥ２のラベルと修正ラベルとは、「２」である。ラベルと、修正ラベルと、が一致していることは、当該ラベルは、修正する必要がないことを意味している。
【００３０】
ラベル修正テーブルＬＡＴに含まれるエントリの個数ＥＮは、設定される可能性があるラベルの個数の最大値と等しい。本実施例では、二値画像ＢＩにおいて、オブジェクト画素と背景画素とが市松模様を形成するように配置された場合に、各画素がそれぞれ１個の領域としてラベルが設定される。このために、設定される可能性があるラベルの個数の最大値は、二値画像ＢＩの画素数に等しい。したがって、図５（Ａ）の二値画像ＢＩが処理対象である場合には、１２０個のエントリを含むラベル修正テーブルＬＡＴが準備される。
【００３１】
Ｓ１３０では、二値画像ＢＩ内に含まれる第１の方向Ｄ１に沿った複数本のラインＢＬ１〜ＢＬ５の中から、１本の注目ラインを選択する。本実施例のラベリング処理は、複数本のラインＢＬ１〜ＢＬ５に対して、第２の方向Ｄ２の上流から下流に向かって順次に、処理が行われる。このために、図５（Ａ）の例では、ラインＢＬ１〜ＢＬ５が、符号の末尾の数字の順番に、１本ずつ注目ラインとして選択される。
【００３２】
Ｓ１４０では、ＣＰＵ２１０は、注目ラインのライン情報ＬＤを生成するライン情報生成処理を実行する。ライン情報ＬＤは、１本のラインと対応する１ライン分の情報である。図５（Ｃ）には、図５（Ａ）の二値画像ＢＩの５本のラインＢＬ１〜ＢＬ５に対応する５個のライン情報ＬＤ１〜ＬＤ５が図示されている。１個のライン情報ＬＤは、対応するライン上のＮ個（Ｎは２以上の整数）の画素のそれぞれに対応するＮ個の値を含んでいる。例えば、図５（Ａ）の５本のラインＢＬ１〜ＢＬ５のそれぞれは、２４個の画素を含んでいるので、図５（Ｃ）のライン情報ＬＤ１〜ＬＤ５のそれぞれは、２４個の値を含んでいる。
【００３３】
図７は、ライン情報生成処理のフローチャートである。Ｓ２１０では、注目ライン上の複数個の画素の中から、１個の注目画素を選択する。本実施例では、注目ライン上のＮ個の画素の中のうち、第１の方向Ｄ１の最上流の画素が、最初の注目画素として選択される。以下では、特定の画素群（例えば、一ライン分の画素群や、一つのライン画素群）に含まれる第１の方向Ｄ１に沿って並ぶ複数個の画素のうち、第１の方向Ｄ１の最上流の画素を、先頭画素とも呼ぶ。例えば、図５（Ａ）のラインＢＬ１が、注目ラインである場合には、ラインＢＬ１上の先頭画素Ｐ１１が、最初の注目画素として選択される。
【００３４】
Ｓ２２０では、ＣＰＵ２１０は、二値画像ＢＩを参照して、注目ライン上において、注目画素から第１の方向Ｄ１に向かって同じ種類の画素が連続する個数である連続画素数ＲＮを算出する。例えば、図５（Ａ）のラインＢＬ１の画素Ｐ１１が注目画素である場合には、画素Ｐ１１は背景画素であるので、画素Ｐ１１から第１の方向Ｄ１に向かって背景画素が連続する個数である「７」が、連続画素数ＲＮとして算出される。図５（Ａ）のラインＢＬ１の画素Ｐ１２が注目画素である場合には、画素Ｐ１２はオブジェクト画素であるので、画素Ｐ１２から第１の方向Ｄ１に向かってオブジェクト画素が連続する個数である「３」が、連続画素数ＲＮとして算出される。
【００３５】
Ｓ２３０では、ＣＰＵ２１０は、注目画素がオブジェクト画素であるか否かを判断する。注目画素がオブジェクト画素である場合には（Ｓ２３０：ＹＥＳ）、Ｓ２４０にて、ＣＰＵ２１０は、注目画素を含むライン画素群に対応するライン情報の値として、正の値を設定する。ここで、ライン画素群は、第１の方向Ｄ１に連続する１個以上の同じ種類の画素を含む画素群である。例えば、図５（Ａ）のラインＢＬ１の画素Ｐ１２が注目画素である場合には、Ｓ２４０にて、ライン画素群Ｇ１２に含まれる３個のオブジェクト画素に対応する３個の値ＲＶ１２（図５（Ｃ））が、第１の方向Ｄ１の上流側から順に、３、２、１に設定される。
【００３６】
注目画素がオブジェクト画素でない場合には（Ｓ２３０：ＮＯ）、すなわち、注目画素が背景画素である場合には、Ｓ２５０にて、ＣＰＵ２１０は、注目画素を含むライン画素群に対応するライン情報の値として、負の値を設定する。例えば、図５（Ａ）のラインＢＬ１の画素Ｐ１１が注目画素である場合には、Ｓ２５０にて、ライン画素群Ｇ１１に含まれる７個の背景画素に対応する７個の値ＲＶ１１（図５（Ｃ））が、第１の方向Ｄ１の上流側から順に、−７、−６、−５、−４、−３、−２、−１に設定される。
【００３７】
以上の説明から解るように、ライン情報のＮ個の値の絶対値は、対応する画素のライン画素群における位置と、連続画素数ＲＮと、に基づいて決定される。この結果、ライン情報のＮ個の値を、容易に適切に決定することができる。すなわち、ライン画素群に含まれる複数個の画素に対応する複数個のライン情報の値の絶対値は、第１の方向Ｄ１の上流側から順に、ＲＮ、（ＲＮ−１）、（ＲＮ−２）、...、１、に設定される。そして、ライン画素群に含まれる画素の種類が背景画素である場合には、負の値、すなわち、−ＲＮ、−（ＲＮ−１）、−（ＲＮ−２）、...、−１、に設定され、ライン画素群に含まれる画素の種類がオブジェクト画素である場合には、正の値、すなわち、ＲＮ、（ＲＮ−１）、（ＲＮ−２）、...、１、に設定される。
【００３８】
ライン情報のＮ個の値の絶対値は、対応するライン上にて、対応する画素から第１の方向Ｄ１に向かって同じ種類の画素が連続する個数を示している。また、ライン情報のＮ個の値の絶対値は、対応する画素を含むライン画素群の第１の方向Ｄ１の下流端の画素を「１」として、第１の方向Ｄ１の上流に向かって１ずつ増加している。ライン情報のＮ個の値の絶対値は、当該ライン画素群における対応する画素の第１の方向Ｄ１の位置を示していると言うことができる。また、ライン情報のＮ個の値の絶対値は、対応するライン上にて、対応する画素から第１の方向Ｄ１に向かって同じ種類の画素が連続する個数を示していると言うこともできる。例えば、図５（Ａ）のラインＢＬ１上の特定の画素Ｐｔに対応するライン情報の値Ｖｔ（図５（Ｃ））は、−３である。この値Ｖｔ＝−３を参照すると、この値Ｖｔは負であるので、対応する画素Ｐｔは、背景画素であることが解る。また、この値Ｖｔ＝−３を参照すると、この値Ｖｔの絶対値は３であるので、対応する画素Ｐｔから第１の方向Ｄ１に３個の背景画素が連続することが解る。換言すれば、値Ｖｔ＝−３を参照すると、対応する画素Ｐｔから第１の方向Ｄ１に３個分だけ移動した位置に、画素Ｐｔを含むライン画素群Ｇ１１の第１の方向Ｄ１に隣接する別のライン画素群Ｇ１２の先頭画素が位置することが解る。
【００３９】
Ｓ２６０では、ＣＰＵ２１０は、注目ライン上の全ての画素に対応するライン情報の値を設定したか否かを判断する。全ての値が設定済でない場合には（Ｓ２６０：ＮＯ）、ＣＰＵ２１０は、Ｓ２１０に戻って、注目ライン上においてライン情報の値が未設定である画素のうちの先頭画素を、次の注目画素として選択する。例えば、現在の注目画素が、ラインＢＬ１の画素Ｐ１１である場合には、Ｓ２５０にて画素Ｐ１１を含むライン画素群Ｇ１１内の全ての画素に対応するライン情報の値が設定されるので、次の注目画素は、ライン画素群Ｇ１１に対して第１の方向Ｄ１に隣接する画素Ｐ１２である。同様に、現在の注目画素が、ラインＢＬ１の画素Ｐ１２である場合には、次の注目画素は、画素Ｐ１２を含むライン画素群Ｇ１２の第１の方向Ｄ１に隣接する画素Ｐ１３である。
【００４０】
全ての値が設定済である場合には（Ｓ２６０：ＹＥＳ）、すなわち、注目ライン上のＮ個の画素に対応するＮ個の値が設定済である場合には、ＣＰＵ２１０は、ライン情報生成処理を終了する。例えば、注目ラインが図５（Ａ）のラインＢＬ１である場合には、ラインＢＬ１の複数個の４個のライン画素群Ｇ１１〜Ｇ１４にそれぞれ対応するライン情報の値ＲＶ１１〜ＲＶ１４がそれぞれ設定される（図５（Ｃ））。注目ラインのライン情報を注目ライン情報とも呼ぶ。
【００４１】
図４のＳ１４０が終了すると、Ｓ１５０では、ＣＰＵ２１０は、注目ライン情報のＮ個の値の中から１個の注目値を取得する。取得される注目値は、注目ラインに含まれる１個以上のライン画素群のうちの一つの注目ライン画素群の先頭画素に対応する値である。具体的には、最初の注目値は、注目ラインにおける第１の方向Ｄ１の最上流のライン画素群の先頭画素に対応する値である。２番目の注目値は、注目ラインにおける第１の方向Ｄ１の上流側から２番目のライン画素群の先頭画素に対応する値である。２番目以降の注目値は、現在の注目値を用いて取得される。
【００４２】
例えば、図５（Ａ）の二値画像ＢＩのラインＢＬ１のライン情報ＬＤ１が、注目ライン情報である場合には、最初の注目値は、ライン画素群Ｇ１１の先頭画素Ｐ１１に対応する値Ｖ１１であり、２番目の注目値は、ライン画素群Ｇ１２の先頭画素Ｐ１２に対応する値Ｖ１２である。同様に、３、４番目の注目値はライン画素群Ｇ１３、１４の先頭画素Ｐ１３、Ｐ１４に対応する値Ｖ１３、Ｖ１４である。このように、注目ライン情報の１個の注目値は、一つのライン画素群と、一対一で対応しているので、１個の注目値を取得することは、一つの注目ライン画素群を決定することと同義である。
【００４３】
Ｓ１６０では、ＣＰＵ２１０は、注目値に対応する注目ライン画素群に含まれる１個以上の画素にラベルを設定するラベル設定処理を実行する。図８は、ラベル設定処理のフローチャートである。図９は、ラベル画像ＬＩの一例を示す図である。
【００４４】
Ｓ３１０では、ＣＰＵ２１０は、注目値に基づいて、上側ラインのライン情報の参照範囲を決定する。上側ラインは、注目ラインに対して上側に隣接するライン、すなわち、注目ラインに対して第２の方向Ｄ２の反対方向に隣接するラインである。注目ラインが、二値画像ＢＩの１行目のラインＢＬ１である場合には、上側ラインが存在しないので、参照範囲は、決定されない。注目ラインが、二値画像ＢＩの２行目以降のラインＢＬ２〜ＢＬ５である場合には、上側ラインが存在するので、参照範囲が、決定される。
【００４５】
具体的には、参照範囲は、注目ライン画素群が位置する第１の方向Ｄ１の範囲である。すなわち、注目値に対応する画素の第１の方向Ｄ１の座標をＸ１とし、注目値の絶対値をＸ２とすると、参照範囲は、第１の方向Ｄ１の座標Ｘが、Ｘ１≦Ｘ≦（Ｘ１＋Ｘ２−１）を満たす範囲である。例えば、図５（Ａ）の４行目のラインＢＬ４が注目ラインであり、ラインＢＬ４のライン情報ＬＤ４（図５（Ｃ））の値Ｖ４２が、注目値である場合、すなわち、値Ｖ４２に対応する画素を含むライン画素群Ｇ４２（図５（Ａ））が注目ライン画素群である場合には、上側ラインのライン情報ＬＤ３の参照範囲は、図５（Ｃ）に示す１０画素分の範囲ＲＡ３２である。
【００４６】
Ｓ３１５では、ＣＰＵ２１０は、注目値に対応する仮ラベルを新規の値に設定する。ここで、新規の値は、未使用のラベルのうちの最小値である。図９（Ａ）には、ライン情報ＬＤ４（図５（Ｃ））の値Ｖ４２が注目値である場合におけるＳ３１５の時点でのラベル画像ＬＩが示されている。図９（Ａ）のラベル画像ＬＩにおいて、空欄の画素は、ラベル設定処理の処理対象とされていない画素である。実際には、これらの画素は、ラベルの初期値「０」を有しているが、ラベル設定処理の処理対象とされていないことを示すために、図９（Ａ）では、空欄とされている。
【００４７】
図９（Ａ）から解るように、この時点では、ラベル画像ＬＩには、０〜６までのラベルが使用されているので、仮ラベルは、７に設定される。
【００４８】
Ｓ３２０では、上側ラインのライン情報から、上側ライン上の１個の画素に対応する１個の参照値を取得する。ライン情報ＬＤ４（図５（Ｃ））の値Ｖ４２が注目値である場合には、参照範囲ＲＡ３２の先頭の値Ｖ３１が、最初の参照値として取得される。２番目以降の参照値は、参照範囲ＲＡ３２内の複数個の値のうち、前回の参照値Ｖ４２に対応する画素を含むライン画素群に対して隣接する画素に対応する値である。例えば、ライン情報ＬＤ４（図５（Ｃ））の値Ｖ４２が注目値である場合には、２〜５番目の参照値は、それぞれ、図５（Ｃ）に示す値Ｖ３２〜Ｖ３５である。図５（Ｃ）から解るように、１個の参照値に対応する参照画素は、上側ライン上の一つのライン画素群の先頭画素である。このように、１個の参照値と上側ライン上の一つのライン画素群とは一対一で対応しているので、１個の参照値を取得することは、一つの参照ライン画素群を決定することと同義である。１番目の参照値Ｖ３１に対応する画素Ｐ３１と、２番目の参照値Ｖ３２に対応する画素Ｐ３２と、は連続していない。
【００４９】
Ｓ３２５では、ＣＰＵ２１０は、取得された１個の参照値に対応する画素は、注目値に対応する画素と、同じ種類であるか否かを判断する。上述したように、ライン情報の値の正負の符号は、対応する画素の種類を表す。したがって、参照値と注目値との両方が正の値である場合、および、参照値と注目値との両方が負の値である場合には、参照値に対応する画素は、注目値に対応する画素と同じ種類であると判断される。参照値と注目値とのうちの一方が正の値であり、かつ、他方が負の値である場合には、参照値に対応する画素は、注目値に対応する画素と同じ種類でないと判断される。
【００５０】
参照値に対応する画素が注目値に対応する画素と同じ種類でない場合には（Ｓ３２５：ＮＯ）、注目ライン画素群に含まれる画素と、参照ライン画素群に含まれる画素と、が同じ種類でないことを意味する。したがって、この場合には、ＣＰＵ２１０は、注目ライン画素群と、参照ライン画素群とは、一つの同種画素群を構成すると判断しない。すなわち、Ｓ３３０にて、ＣＰＵ２１０は、参照ライン画素群は、注目ライン画素群と連結されるべき画素群、すなわち、連結対象の画素群でないと判断する。
【００５１】
一方、参照値に対応する画素が注目値に対応する画素と同じ種類である場合には（Ｓ３２５：ＹＥＳ）、注目ライン画素群に含まれる画素と、参照ライン画素群に含まれる画素と、が同じ種類であることを意味する。したがって、この場合には、ＣＰＵ２１０は、注目ライン画素群と、参照ライン画素群とは、一つの同種画素群を構成すると判断する。すなわち、Ｓ３３５にて、ＣＰＵ２１０は、参照ライン画素群は、連結対象の画素群であると判断する。
【００５２】
Ｓ３４０では、ＣＰＵ２１０は、ラベルデータから参照値に対応するラベルを取得する。参照値に対応するラベルは、ラベルデータにおいて、参照値に対応する画素に設定されているラベルである。例えば、図５（Ｃ）のライン情報ＬＤ３の値Ｖ３１が参照値である場合には、ラベル画像ＬＩから対応するラベルとして、図９（Ａ）のラベルＬ３１の値である「４」が取得される。
【００５３】
Ｓ３４５では、ＣＰＵ２１０は、ラベル修正テーブルＬＡＴから、Ｓ３４０で取得されたラベルに対応する修正ラベルが取得される。図６（Ｂ）には、ライン情報ＬＤ４（図５（Ｃ））の値Ｖ４２が注目値である場合におけるＳ３４５の時点でのラベル修正テーブルＬＡＴが示されている。この場合には、図６（Ｂ）のラベル修正テーブルＬＡＴのエントリＥ４において、ラベル「４」に対応する修正ラベルは、「４」であるので、修正ラベルとして、「４」が取得される。
【００５４】
ここで、図６（Ｄ）のラベル修正テーブルＬＡＴを参照して、ラベル「６」の修正ラベルを取得する場合を例として、ラベルに対応する修正ラベルの取得の方法について補足の説明をする。先ず、ラベル「６」に対応するエントリＥ６が参照される。エントリＥ６では、ラベル「６」に、修正ラベルとして「５」が対応付けられている。この場合には、次に、ラベル「５」に対応するエントリＥ５が参照される。エントリＥ５では、ラベル「５」に、修正ラベルとして「１」が対応付けられている。この場合には、次に、ラベル「１」に対応するエントリＥ１が参照される。エントリＥ１では、ラベル「１」に、修正ラベルとして「１」が対応付けられている。そして、最終的に、ラベル「６」の修正ラベルとして、「１」が取得される。このように、ラベルと同じ値が修正ラベルとして対応付けられているエントリに到達するまで、エントリの参照を繰り返して、最終的な修正ラベルが取得される。上述したように、ラベル修正テーブルＬＡＴは、ラベルを修正する必要がある場合に、修正ラベルが記録されるテーブルであるので、修正ラベルは、この時点で、参照ライン画素群に設定されているラベルである、と言うことができる。
【００５５】
Ｓ３５０では、ＣＰＵ２１０は、取得された修正ラベルは、現在の仮ラベルより小さいか否かを判断する。修正ラベルが仮ラベルより小さい場合には（Ｓ３５０：ＹＥＳ）、Ｓ３５５にて、ＣＰＵ２１０は、仮ラベルの値を修正ラベルの値に変更する。修正ラベルが仮ラベル以上である場合には（Ｓ３５０：ＮＯ）、ＣＰＵ２１０は、Ｓ３５５をスキップして、Ｓ３６０に処理を進める。この結果、注目ライン画素群と連結すべき１個以上の参照ライン画素群がある場合には、１個以上の参照ライン画素群に現時点で設定されているラベルのうち、最小のラベルが、仮ラベルとされる。
【００５６】
Ｓ３６０では、ＣＰＵ２１０は、現在の参照値を用いて、次の参照値を決定する。現在の参照値の絶対値は、現在の参照値に対応する画素から次回の参照値に対応する画素までの画素数を示している。このために、現在の参照値に対応する注目ライン画素群に対して第１の方向Ｄ１に隣接するライン画素群の先頭画素に対応するライン情報の値を、適切に次ぎの参照値として決定することができる。したがって、ＣＰＵ２１０は、現在の参照値の次の参照値を、現在の参照値に対応する画素と次の参照値に対応する画素との間に位置する画素の値を参照することなく、容易に決定することができる。ただし、Ｓ３１０で決定された現在の参照範囲内に次の参照値がない場合には、次の参照値は決定できない。例えば、現在の参照範囲が、図５（Ｃ）の参照範囲ＲＡ３２であり、現在の参照値が、図５（Ｃ）の値Ｖ３１である場合には、値Ｖ３１「２」に従って、現在の参照値である値Ｖ３２の位置から２画素分だけ第１の方向Ｄ１に移動した位置にある値Ｖ３２が、次の参照値として決定される。現在の参照値が、図５（Ｃ）の値Ｖ３２である場合には、値Ｖ３２「−２」に従って、現在の参照値である値Ｖ３２の位置から２画素分だけ第１の方向Ｄ１に移動した位置にある値Ｖ３３が、次の参照値として決定される。また、現在の参照値が、図５（Ｃ）の値Ｖ３５である場合には、値Ｖ３５「５」に従って、現在の参照値である値Ｖ３５の位置から５画素分だけ第１の方向Ｄ１に移動する。しかしながら、移動した位置にある値Ｖ３８は、参照範囲ＲＡ３２内に存在しないため、次の参照値が決定されない。  
【００５７】
Ｓ３６５では、ＣＰＵ２１０は、次の参照値はあるか否かを判断する。すなわち、ＣＰＵ２１０は、Ｓ３６０にて次の参照値が決定できたか否かを判断する。次の参照値がある場合には（Ｓ３６５：ＹＥＳ）、ＣＰＵ２１０は、Ｓ３２０に戻って、次の参照値を取得する。次の参照値がない場合には（Ｓ３６５：ＮＯ）、Ｓ３７０に処理を進める。
【００５８】
Ｓ３７０では、ＣＰＵ２１０は、現在の注目値に対応する注目ライン画素群のラベルを仮ラベルの値に設定する。注目ライン画素群が図５（Ａ）のライン画素群Ｇ４２である場合には、連結対象であると判断される参照ライン画素群は、図５（Ａ）の３個のライン画素群Ｇ３１、Ｇ３３、Ｇ３４である。３個のライン画素群Ｇ３１、Ｇ３３、Ｇ３４の修正ラベルは、図９（Ａ）のラベル画像ＬＩ内の対応するラベルＬ３１、Ｌ３３、Ｌ３４および図６（Ｂ）のラベル修正テーブルＬＡＴから解るように、「４」、「１」、「５」である。したがって、注目ライン画素群が図５（Ａ）のライン画素群Ｇ４２である場合には、注目ライン画素群のラベルは、「４」、「１」、「５」のうちの最小値である「１」に決定される。決定されたラベルは、ラベルデータに記録される。図９（Ｂ）の例では、ラベルデータによって表されるラベル画像ＬＩにおいて、ライン画素群Ｇ４２に対応する１０個の値ＬＧ４２が、「１」に設定されている。もし、注目ライン画素群と連結すべき参照ライン画素群が１個もない場合には、仮ラベルの値は、Ｓ３１５にて決定された新規の値のまま変更されないから、この場合には、注目ライン画素群のラベルは、新規の値、すなわち、上側ライン上のライン画素群のラベルのいずれとも異なる値に決定される。
【００５９】
なお、注目ラインが、二値画像ＢＩの１行目のラインＢＬ１である場合には、上述したように、上側ラインが存在しないために参照範囲が決定されない。このために、注目ラインがラインＢＬ１である場合には、全ての注目値（すなわち、注目ライン画素群）についてのラベル設定処理において、Ｓ３２０〜Ｓ３６５は実行されず、Ｓ３７０において、注目ライン画素のラベルは、新規の値に決定される。
【００６０】
Ｓ３７５では、ＣＰＵ２１０は、必要に応じて、ラベル修正テーブルＬＡＴの修正を行う。具体的には、連結対象であると判断される参照ライン画素群が２個以上存在する場合には、２個以上の参照ライン画素群のうち、最小ではない修正ラベルが設定されている参照ライン画素群のラベルは、最小である修正ラベルに修正される。例えば、注目ライン画素群が図５（Ａ）のライン画素群Ｇ４２である場合には、連結対象であると判断される３個のライン画素群Ｇ３１、Ｇ３３、Ｇ３４のうち、最小ではない修正ラベルが設定されている２個のライン画素群Ｇ３１、Ｇ３４のラベル「４」、「５」は、最小である修正ラベル、すなわち、ライン画素群Ｇ３３の修正ラベル「１」に修正される。具体的には、図６（Ｃ）に示すように、ラベル修正テーブルＬＡＴのエントリＥ４、Ｅ５において、ラベル「４」、「５」に、修正ラベル「１」がそれぞれ対応付けられる。Ｓ３７５が終了するとラベル設定処理は終了される。
【００６１】
ここで、理解のために、図５（Ｃ）のライン情報ＬＤ４の値Ｖ４４が注目値である場合、すなわち、図５（Ａ）のラインＢＬ４のライン画素群Ｇ４４が注目ライン画素群である場合のラベル設定処理について説明する。この場合には、図５（Ｃ）のライン情報ＬＤ３の値Ｖ３７とＶ３８が、参照値として用いられる。そして、Ｓ３３５にて、値Ｖ３７に対応するライン画素群Ｇ３４（図５（Ａ））が、連結対象であると判断される。そして、Ｓ３４０にて、図９（Ｂ）のラベル画像ＬＩから解るように、ライン画素群Ｇ３４のラベル「５」がラベルデータから取得される。そして、Ｓ３４５にて、図６（Ｃ）のラベル修正テーブルＬＡＴのエントリＥ５から解るように、ラベル「５」に対応する修正ラベル「１」が取得される。この結果、Ｓ３７０にて、図９（Ｃ）に示すように、ライン画素群Ｇ４４に対応する５個の値ＬＧ４４が、「１」に設定される。なお、この場合には、連結対象と判断される２個以上の参照ライン画素群がないので、Ｓ３７５にて、ラベル修正テーブルＬＡＴの修正は行われない。
【００６２】
図４に戻って説明を続ける。Ｓ１６０のラベル設定処理が終了すると、Ｓ１７０では、ＣＰＵ２１０は、現在の注目値を用いて、次の注目値を決定する。具体的には、上述した図８のＳ３６０にて、現在の参照値を用いて次の参照値を決定する際と同様の方法で、現在の注目値を用いて次の注目値が決定される。この結果、現在の注目値に対応する注目ライン画素群に対して第１の方向Ｄ１に隣接する画素に対応するライン情報の値が、次の注目値として決定される。したがって、ＣＰＵ２１０は、現在の注目値の次の注目値を、現在の注目値と次の注目値との間の値を参照することなく、容易に決定することができる。ただし、注目ライン上の全ての画素のラベルが設定された場合には、次の注目値はないので、次の注目値は決定できない。
【００６３】
Ｓ１８０では、ＣＰＵ２１０は、次の注目値はあるか否かを判断する。すなわち、ＣＰＵ２１０は、Ｓ１７０にて次の注目値が決定できたか否かを判断する。次の注目値がある場合には（Ｓ１８０：ＹＥＳ）、ＣＰＵ２１０は、Ｓ１５０に戻って、次の注目値を取得する。次の注目値がない場合には（Ｓ１８０：ＮＯ）、Ｓ１８５にて、ＣＰＵ２１０は、上側ラインのライン情報ＬＤをバッファ領域２３１から消去する。現在の注目ラインのライン情報ＬＤは、次回のＳ１３０〜Ｓ１８０の処理にて、上側ラインのライン情報ＬＤとして使用されるので、バッファ領域２３１に保持される。
【００６４】
Ｓ１９０にて、ＣＰＵ２１０は、二値画像ＢＩ内の全てのラインを処理したか否かを判断する。未処理のラインがある場合には（Ｓ１９０：ＮＯ）、ＣＰＵ２１０は、Ｓ１３０に戻って、未処理のラインを注目ラインとして選択する。全てのラインが処理された場合には（Ｓ１９０：ＹＥＳ）、ＣＰＵ２１０は、Ｓ１９２にて、注目ラインのライン情報ＬＤをバッファ領域２３１から消去して、Ｓ１９５に処理を進める。
【００６５】
Ｓ１９５に処理が進められた時点で、ラベルデータによって表されるラベル画像ＬＩの全ての画素に、ラベルが設定されている。図９（Ｃ）には、Ｓ１９５の時点でのラベル画像ＬＩが示されている。また、図６（Ｄ）には、この時点でのラベル修正テーブルＬＡＴが示されている。
【００６６】
Ｓ１９５では、ＣＰＵ２１０は、ラベル修正テーブルＬＡＴを用いて、ラベルデータを修正する。具体的には、ＣＰＵ２１０は、ラベル修正テーブルＬＡＴを参照して、ラベルデータで使用されている全てのラベルについて、最終的な修正ラベルを取得する。修正ラベルの取得方法は、上述した図８のＳ３４５にて、ラベルに対応する修正ラベルを取得する方法と同じである。すなわち、ラベル修正テーブルＬＡＴを参照して、ラベルと同じ値が修正ラベルとして対応付けられているエントリに到達するまで、エントリの参照を繰り返して、最終的な修正ラベルが取得される。例えば、図６（Ｄ）のラベル修正テーブルＬＡＴを参照して、ラベル「６」の修正ラベルを取得する場合には、先ず、ラベル「６」に対応するエントリＥ６が参照される。エントリＥ６では、ラベル「６」に、修正ラベルとして「５」が対応付けられているので、次に、ラベル「５」に対応するエントリＥ５が参照される。エントリＥ５では、ラベル「５」に、修正ラベルとして「１」が対応付けられているので、次に、ラベル「１」に対応するエントリＥ１が参照される。エントリＥ１では、ラベル「１」に、修正ラベルとして「１」が対応付けられているので、最終的に、ラベル「６」の修正ラベルとして、「１」が取得される。
【００６７】
図９（Ｃ）の例では、ラベルデータ（すなわち、ラベル画像ＬＩ）では、０〜８までの９種類のラベルが使用されている。図６（Ｄ）のラベル修正テーブルＬＡＴを参照して、０〜８までの９種類のラベルの修正ラベルとして、それぞれ、０、１、２、３、１、１、１、７、８が取得される。なお、最小のラベル「０」の修正ラベルは必ず「０」である。
【００６８】
これらの修正ラベルは、途中に不使用の数字がないように、整理される。例えば、０〜８までの９種類のラベルの修正ラベルは、最終的に、０、１、２、３、１、１、１、４、５に決定される。そして、ラベルデータの各画素のラベルは、対応する修正ラベルの値に変更される。図９（Ｄ）には、修正済のラベルデータによって表されるラベル画像ＬＩが示されている。図９（Ｄ）のラベル画像ＬＩでは、１個以上の連続する同じ種類の画素からなる同種画素群のそれぞれに、互いに異なるラベルが設定され、１個の同種画素群に含まれる１個以上の画素のそれぞれには、同じラベルが設定されていることが解る。
【００６９】
以上説明した実施例によれば、例えば、図５（Ｃ）の４行目のラインＢＬ４が注目ラインである場合おいて、図４のＳ１５０にて、注目ラインＢＬ４上の一つのライン画素群Ｇ４２が、注目ライン画素群として決定される。そして、図８のＳ３２０にて、上側ラインであるラインＢＬ３上の１個の画素Ｐ３１に対応する１個の参照値Ｖ３１が取得される。この参照値Ｖ３１は、参照範囲ＲＡ３２内の画素、すなわち、注目ライン画素群Ｇ４２の１個の画素の第１の方向Ｄ１の位置に対応する上側ラインＢＬ３上の画素Ｐ３１に対応する値である。そして、図８のＳ３２５にて、取得された参照値Ｖ３１を用いて、当該参照値Ｖ３１に対応する画素Ｐ３１を含むライン画素群Ｇ３１と、注目ライン画素群Ｇ４２と、が、連結すべき一つ同種画素群を構成するか否かが判断される。
【００７０】
図８のＳ３６０では、参照値Ｖ３１を用いて、画素Ｐ３１とは連続しない上側ラインＢＬ３上の画素Ｐ３２に対応する値Ｖ３２が、次回の参照値として決定され、次回のＳ３２０にて当該参照値Ｖ３２が、取得される。次回のＳ３２５にて、取得された参照値Ｖ３２を用いて、当該参照値Ｖ３２に対応する画素Ｐ３２を含むライン画素群Ｇ３２と、注目ライン画素群Ｇ４２と、が、連結すべき一つ同種画素群を構成するか否かが判断される。そして、これらの判断の結果を用いて、注目ライン画素群Ｇ４２に、ラベルが設定される（Ｓ３３０〜Ｓ３５５、Ｓ３７０など）。
【００７１】
上述したようにライン情報ＬＤ３は、上側ラインＢＬ３上のＮ個の画素のそれぞれに対応するＮ個の値を含んでいる。すなわち、ライン情報ＬＤ３のＮ個の値は、上側ラインＢＬ３内の画素と一対一で対応している。したがって、本実施例では、注目ライン画素群Ｇ４２の第１の方向Ｄ１の位置に基づいてＮ個の値の中から最初の参照値Ｖ３１を容易に取得できる。例えば、ライン情報ＬＤ３のＮ個の値のうち、参照値Ｖ３１より第１の方向Ｄ１の上流側の２個の値を参照しなくても、最初の参照値Ｖ３１を取得できる。さらに、参照値Ｖ３１に対応する画素Ｐ３１と次の参照値Ｖ３２に対応する画素Ｐ３２との間の画素に対応するライン情報ＬＤ３の値を取得することなく、最初の参照値Ｖ３１を用いて、次の参照値Ｖ３２を直接的に容易に取得できる。参照値Ｖ３１の値（絶対値）が、対応する画素Ｐ３２のライン画素群Ｇ３１における第１の方向Ｄ１の位置を示しているからである。この結果、ラベリング処理の処理時間を短縮することができる。
【００７２】
より詳しく説明する。図１０は、比較例のライン情報ＬＤＸの一例を示す図である。このライン情報ＬＤＸは、図５（Ａ）の二値画像ＢＩの３行目のラインＢＬ３に対応するライン情報である。ライン情報ＬＤＸに含まれる８個の要素ＥＬ１〜ＥＬ８は、ラインＢＬ３に含まれる８個のライン画素群に対応している。要素ＥＬ１〜ＥＬ８のそれぞれは、２個の値（Ａ、Ｂ）を含んでいる。第１値Ａは、対応するライン画素群の先頭の画素の第１の方向Ｄ１の座標を示している。第２値Ｂは、対応するライン画素群に含まれる画素の個数を示している。例えば、要素ＥＬ６を参照すれば、ラインＢＬ３の先頭から６番目のライン画素群Ｇ３４の先頭の第１の方向Ｄ１の座標は、１１であり、５個の画素を含むことが解る。しかしながら、例えば、注目ラインがラインＢＬ４であり、上側ラインがラインＢＬ３である場合を考える。注目ラインＢＬ４の注目ライン画素群Ｇ４４（図５（Ａ））の上側に隣接するライン画素群に対応する要素を、比較例のライン情報ＬＤＸから取得するためには、例えば、ＣＰＵ２１０は、ライン情報ＬＤＸの要素ＥＬ１〜ＥＬ８を先頭から１個ずつ参照して、注目ライン画素群Ｇ４４の第１の方向Ｄ１の座標に位置する上側ラインＢＬ３上のライン画素群に対応する要素を探索する必要があった。これに対して、本実施例のライン情報ＬＤ３を参照すれば、ライン情報ＬＤ３は、上側ラインＢＬ３に含まれるＮ個の画素に対応するＮ個の値を有しているから、注目ライン画素群Ｇ４４の第１の方向Ｄ１の座標に位置する上側ラインＢＬ３上の画素に対応するライン情報ＬＤ３の値を、他の値を参照することなく、直接に、参照値として取得できる。また、ライン情報ＬＤ３に含まれるＮ個の値のうちのいずれの値を最初に参照しても、次に参照すべき参照値を、最初の参照値の絶対値を用いて、容易に取得できる。例えば、最初の参照値を取得した後に、最初の参照値に対応する画素と、次の参照値に対応する画素との間の画素に対応する値が取得されることを回避することができる。この結果、本実施例では、ラベリング処理の処理時間を短縮することができる。
【００７３】
さらに、図１０の比較例のライン情報ＬＤＸは、最大で、対応するライン上の画素の個数の２倍の個数の値を含み得る。例えば、オブジェクト画素と背景画素とが第１の方向Ｄ１に沿って交互に並ぶ場合には、各画素について１個の要素が必要となり、上述したように各要素は２個の値を含むからである。このために、１ライン分のライン情報ＬＤＸを生成する際には、当該最大の個数分のメモリ容量をバッファ領域２３１に確保しておく必要がある。これに対して本実施例のライン情報ＬＤは、常に、対応するライン上の画素の個数の値を含む。したがって、１ライン分のライン情報ＬＤを生成する際には、確保すべきメモリ容量は、比較例より少ない。この結果、ラベリング処理に要するメモリ容量を低減することができる。
【００７４】
さらに、本実施例のライン情報ＬＤのＮ個の値は、対応するライン上にて、対応する画素から第１の方向Ｄ１に向かって同じ種類の画素が連続する個数である連続数を示している。この結果、ＣＰＵ２１０は、ライン情報ＬＤのいずれの値を最初の参照値としても、該参照値を用いて、容易に次の参照値を取得することができる。具体的には、ＣＰＵ２１０は、最初の参照値によって示される連続数、すなわち、最初の参照値の絶対値を用いて、最初の参照値に対応する画素を含むライン画素群に対して第１の方向Ｄ１に隣接する画素に対応する値を、次の参照値として取得する（図８のＳ３６０、Ｓ３２０）。この結果、次の参照値を容易に取得できるので、ラベリング処理の処理速度をより向上することができる。
【００７５】
さらに、上記実施例では、ライン情報ＬＤのＮ個の値のそれぞれは、対応する画素がオブジェクト画素である場合には正の値を有し、対応する画素が背景画素である場合には負の値を有している。すなわち、ライン情報ＬＤのＮ個の値のそれぞれは、対応する画素の種類を示す種別情報を含んでいる、と言うことができる。そして、ＣＰＵ２１０は、図８のＳ３２５、Ｓ３３０、Ｓ３３５にて、参照値に含まれる種別情報を用いて、注目ライン画素群と、参照ライン画素群と、が、一つの同種画素群を構成するか否かを判断する。この結果、ライン情報ＬＤのＮ個の値から取得された参照値以外の情報を用いることなく、注目ライン画素群と、参照ライン画素群と、が、一つの同種画素群を構成するか否かを判断できる。この結果、ラベリング処理の処理速度をより向上することができる。
【００７６】
さらに、上記実施例のラベル設定処理では、複数個の参照ライン画素群のうちの少なくとも一つと、注目ライン画素群と、が、一つの同種画素群を構成すると判断される場合には、注目ライン画素群に、複数個の参照ライン画素群のうち、注目ライン画素群と一つの同種画素群を構成すると判断される一のライン画素群と同じラベルが設定される。具体的には、注目ライン画素群と一つの同種画素群を構成すると判断される１個以上の参照ライン画素群のうち、最小のラベルが設定されているライン画素群と同じラベルが、注目ライン画素群に設定される（図８のＳ３３５〜Ｓ３５５、Ｓ３７０）。複数個の参照ライン画素群のうちのいずれもが、注目ライン画素群と一つの同種画素群を構成しないと判断される場合には、注目ライン画素群に、複数個の参照ライン画素群とは異なるラベルが設定される（図８のＳ３１５、Ｓ３３０、Ｓ３７０）。この結果、同種画素群ごとに適切なラベルを設定することができる。
【００７７】
さらに、上記実施例の図４のラベリング処理では、ＣＰＵ２１０は、図４のＳ１５０にて、例えば、注目ラインＢＬ４上の複数個のライン画素群Ｇ４２、Ｇ４４のそれぞれを注目ライン画素群として決定する。そして、図８のラベル設定処理では、ＣＰＵ２１０は、複数個の注目ライン画素群Ｇ４２、Ｇ４４のそれぞれについて、互いに異なる最初の参照値を用いて、注目ライン画素群と参照ライン画素群とが、一つの同種画素群を構成するか否かを判断する。例えば、注目ライン画素群Ｇ４２の最初の参照値は、値Ｖ３１であり、注目ライン画素群Ｇ４４の最初の参照値は、値Ｖ３７である。そして、ＣＰＵ２１０は、複数個の注目ライン画素群Ｇ４２、Ｇ４４のそれぞれについて、互いに異なる２番目の参照値を用いて、注目ライン画素群と参照ライン画素群とが、一つの同種画素群を構成するか否かを判断する。例えば、注目ライン画素群Ｇ４２の２番目の参照値は、値Ｖ３２であり、注目ライン画素群Ｇ４４の２番目の参照値は、値Ｖ３８である。この結果、注目ライン上の複数個のライン画素群Ｇ４２、Ｇ４４のそれぞれに適切なラベルを設定することができる。
【００７８】
さらに、上記実施例の図８のラベル設定処理では、互いに異なるラベルをそれぞれ有する２個以上の参照ライン画素群と、注目ライン画素群と、が、一つの同種画素群を構成すると判断される場合には、注目ライン画素群に、一つの参照ライン画素群と同じラベルを設定する（Ｓ３７０）とともに、他の参照ライン画素群のラベルを、当該一つの参照ライン画素群と同じにするべきことを示す修理ラベル情報を、ラベル修正テーブルＬＡＴに記録する（Ｓ３７５）。そして、図４のラベリング処理のＳ１９５に示すように、注目ラインＢＬ４と上側ラインＢＬ３とを含む二値画像ＢＩ内の複数個のラインにラベルを設定した後に、ラベル修正テーブルＬＡＴを用いて、他の参照ライン画素群のラベルを修正する。この結果、最後に、一括して修正を要するラベルを修正するので、効率的に、適切なラベルを設定することができる。したがって、ラベリング処理の処理時間をより短縮することができる。
【００７９】
以上の説明から解るように、二値画像ＢＩを表す二値画像データは、対象画像データの例である。上側ラインＢＬ３は第１のラインの例であり、注目ラインＢＬ４は第２のラインの例である。
【００８０】
Ｂ．変形例：
（１）上記実施例では、オブジェクト画素と背景画素とを分類するための二値画像データに対して、ラベリング処理が行われている。これに限らず、複数種類の画素を含む画像を表す画像データに対して、ラベリング処理が行われ得る。例えば、赤色の画素などの特定色の画素と、それ以外の画素と、を分類するための二値画像データに対して、ラベリング処理が行われても良く、３種類以上の画素を含む画像データに対して、ラベリング処理が行われても良い。また、上記実施例では、オブジェクト画素と背景画素との両方に対してラベルが設定されているが、２種類の画素の一方の画素、あるいは、３種類以上の画素の一部の種類の画素に対してのみラベルが設定されても良い。
【００８１】
（２）図７のライン情報生成処理に示すライン情報ＬＤの生成手法は一例であり、これに限られない。例えば、ＣＰＵ２１０は、図７の例とは逆に、注目ライン上の複数個の画素を、第１の方向Ｄ１の下流側から上流側に向かって、順次に注目画素として選択しても良い。この場合には、ＣＰＵ２１０は、現在の注目画素が、前の注目画素と同じ種類の画素である場合には、前の注目画素に対応するライン情報ＬＤの値の絶対値に１を加算した値を絶対値とし、かつ、前の注目画素に対応するライン情報ＬＤの値と同じ符号を有する値を、現在の注目画素に対応するライン情報ＬＤの値として決定する。そして、ＣＰＵ２１０は、現在の注目画素が、前の注目画素と異なる種類の画素である場合には、絶対値が初期値「１」であり、かつ、前の注目画素に対応するライン情報ＬＤの値と異なる符号を有する値を、現在の注目画素に対応するライン情報ＬＤの値として決定する。こうすれば、上記実施例と同様に適切なライン情報ＬＤを生成することができる。
【００８２】
（３）上記実施例では、ラベリング処理は、文字オブジェクトを特定して、高圧縮ＰＤＦファイルを生成するために行われているが、ラベリング処理の目的は、これに限られない。例えば、ラベリング処理は、特定の形状を有するオブジェクトを特定するためや、オブジェクトごとに適切な補正処理を行うために、写真、描画などの特定種類のオブジェクトを抽出するためなどに行われ得る。
【００８３】
（４）一般的には、例えば、図４のラベリング処理を含む画像処理を実現する画像処理装置は、複合機２００に限らず、種々の装置であってよい。例えば、プリンタ、デジタルカメラ、スキャナなどの画像関連機器の内部のコンピュータ、汎用のパーソナルコンピュータやスマートフォンなどのユーザの端末装置、ネットワークに接続されたサーバ等によって、本実施例の画像処理が実行されても良い。また、ネットワークを介して互いに通信可能な複数個のコンピュータが、画像処理に要する機能を一部ずつ分担して、全体として、画像処理を実行してもよい。この場合、複数個のコンピュータの全体が、画像処理装置の例である。
【００８４】
（５）上記各実施例において、ハードウェアによって実現されていた構成の一部をソフトウェアに置き換えるようにしてもよく、逆に、ソフトウェアによって実現されていた構成の一部あるいは全部をハードウェアに置き換えるようにしてもよい。
【００８５】
以上、実施例、変形例に基づき本発明について説明してきたが、上記した発明の実施の形態は、本発明の理解を容易にするためのものであり、本発明を限定するものではない。本発明は、その趣旨並びに特許請求の範囲を逸脱することなく、変更、改良され得ると共に、本発明にはその等価物が含まれる。
【符号の説明】
【００８６】
１００...端末装置、２００...複合機、２１０...ＣＰＵ、２２０...不揮発性記憶装置、２３０...揮発性記憶装置、２３１...バッファ領域、２４０...画像読取部、２４１...バッファ領域、２５０...印刷実行部、２６０...操作部、２７０...表示部、２８０...通信部、ＣＰ...コンピュータプログラム
【図１】
0006550903.tif 000002
【図２】
0006550903.tif 000003
【図３】
0006550903.tif 000004
【図４】
0006550903.tif 000005
【図５】
0006550903.tif 000006
【図６】
0006550903.tif 000007
【図７】
0006550903.tif 000008
【図８】
0006550903.tif 000009
【図９】
0006550903.tif 000010
【図１０】
0006550903.tif 000011