(57)【要約】【課題】２値画像データのランレングス化を高速化する。【解決手段】２値画像データに存在するランの始端位置と終端位置とを取得する画像データ処理装置１０であって、前記ランの始端に対応するビットを始端識別用ビットとしたとき、前記始端識別用ビットが他のビットと異なった値を有する始端識別用データを前記２値画像データから作成する機能と、前記ランの終端に対応するビットを終端識別用ビットとしたとき、当該終端識別用ビットが他のビットと異なった値を有する終端識別用データを前記２値画像データから作成する機能と、前記始端識別用データと前記終端識別用データとに基づいて、前記ランの始端位置と終端位置とを取得する機能とを有する演算処理装置１３を有することを特徴とする画像データ処理装置。【選択図】図１２
2008227659.tif 000002
【特許請求の範囲】
【請求項１】
２値画像データに存在するランの始端位置と終端位置とを取得する画像データ処理方法であって、
前記ランの始端に対応するビットを始端識別用ビットとしたとき、前記始端識別用ビットが他のビットと異なった値を有する始端識別用データを前記２値画像データから作成する第１ステップと、
前記ランの終端に対応するビットを終端識別用ビットとしたとき、当該終端識別用ビットが他のビットと異なった値を有する終端識別用データを前記２値画像データから作成する第２ステップと、
前記始端識別用データと前記終端識別用データとに基づいて、前記ランの始端位置と終端位置とを取得する第３ステップと、
を有することを特徴とする画像データ処理方法。
【請求項２】
請求項１に記載の画像データ処理方法において、
前記第３ステップは、
前記第１ステップで生成された始端識別用データを分割して分割後の始端識別用データを生成し、生成した分割後の始端識別用データをさらに分割して分割後の始端識別用データを生成する処理を複数段階で行い、前記複数段階の各段階において生成された分割後の始端識別用データに前記始端識別用ビットが存在するか否かを判定し、前記始端識別用ビットが存在する場合のみを処理対象とし、
前記第２ステップで生成された終端識別用データを分割して分割後の終端識別用データを生成し、生成した分割後の始端識別用データをさらに分割して分割後の終端識別用データを生成する処理を複数段階で行い、前記複数段階の各段階において生成された分割後の終端識別用データに前記終端識別用ビットが存在するか否かを判定し、前記終端識別用ビットが存在する場合のみを処理対象として、
前記ランの始端位置と終端位置とを取得する処理を行うことを特徴とする画像データ処理方法。
【請求項３】
請求項１又２に記載の画像データ処理方法において、
前記第１ステップは、前記２値画像データと当該２値画像データを処理の走査方向に１ビット分シフトした２値画像データとの対応する各ビットごとに論理演算を行い、前記論理演算は、前記ランを構成するビットのうち前記始端識別用ビットのみが当該始端識別用ビットの値を保持し、前記ランを構成するビットのうち前記始端識別用ビット以外のビットはその値が反転するような論理演算であり、
前記第２ステップは、前記２値画像データと当該２値画像データを処理の走査方向と逆方向に１ビット分シフトした２値画像データとの対応する各ビットごとに論理演算を行い、前記論理演算は、前記ランを構成するビットのうち前記終端識別用ビットのみが当該終端識別用ビットの値を保持し、前記ランを構成するビットのうち前記終端識別用ビット以外のビットはその値が反転するような論理演算であることを特徴とする画像データ処理方法。
【請求項４】
請求項３に記載の画像データ処理方法において、
前記論理演算は、前記ランが‘０’又は‘１’で表される２値のうちの‘１’の連続であるとした場合、前記第１ステップにおいては、前記２値画像データと当該２値画像データを処理の走査方向に１ビット分シフトした２値画像データとの排他的論理和演算を行い、当該排他的論理和演算によって得られた結果と前記処理単位の２値画像データとの論理積演算を行い、
前記第２ステップにおいては、前記２値画像データと当該２値画像データを処理の走査方向と逆方向に１ビット分シフトした２値画像データとの排他的論理和演算を行い、当該
排他的論理和演算によって得られた結果と前記処理単位の２値画像データとの論理積演算を行うことを特徴とする画像データ処理方法。
【請求項５】
請求項３に記載の画像データ処理方法において、
前記論理演算は、前記ランが‘０’又は‘１’で表される２値のうちの‘１’の連続であるとした場合、前記第１ステップにおいては、前記２値画像データを処理の走査方向に１ビット分シフトした２値画像データの否定論理演算を行い、当該否定論理演算によって得られた結果と前記２値画像データとの論理積演算を行い、
前記第２ステップにおいては、前記２値画像データを処理の走査方向と逆方向に１ビット分シフトした２値画像データの否定論理演算を行い、当該否定論理演算によって得られた結果と前記２値画像データとの論理積演算を行う、
ことを特徴とする画像データ処理方法。
【請求項６】
２値画像データに存在するランの始端位置と終端位置とを取得する画像データ処理装置に、前記２値画像データに存在するランの始端位置と終端位置とを取得する処理を実行させる画像データ処理プログラムであって、
前記ランの始端に対応するビットを始端識別用ビットとしたとき、前記始端識別用ビットが他のビットと異なった値を有する始端識別用データを前記２値画像データから作成する第１ステップと、
前記ランの終端に対応するビットを終端識別用ビットとしたとき、当該終端識別用ビットが他のビットと異なった値を有する終端識別用データを前記２値画像データから作成する第２ステップと、
前記始端識別用データと前記終端識別用データとに基づいて、前記ランの始端位置と終端位置とを取得する第３ステップと、
を有することを特徴とする画像データ処理プログラム。
【請求項７】
２値画像データに存在するランの始端位置と終端位置とを取得する画像データ処理装置であって、
前記ランの始端に対応するビットを始端識別用ビットとしたとき、前記始端識別用ビットが他のビットと異なった値を有する始端識別用データを前記２値画像データから作成する機能と、前記ランの終端に対応するビットを終端識別用ビットとしたとき、当該終端識別用ビットが他のビットと異なった値を有する終端識別用データを前記２値画像データから作成する機能と、前記始端識別用データと前記終端識別用データとに基づいて、前記ランの始端位置と終端位置とを取得する機能とを有する演算処理装置を有することを特徴とする画像データ処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、２値画像データのランレングス化を高速化する画像データ処理方法、画像データ処理プログラム及び画像データ処理装置に関する。
【背景技術】
【０００２】
近年、ＣＣＤやＣＭＯＳを用いた撮像素子の高画素数化及び高密度化が進展している。これらの撮像素子によって取得された画像データを処理することにより、より詳しい情報が得られるようになってきた。そして、その情報を用いて、いろいろな検査が行われるようになってきた。
【０００３】
例えば、製品への異物の付着あるいは傷の存在などによる欠陥識別のための検査が一例として挙げられる。このような検査を行う際には、画像データの２値化後に注目すべき値(‘黒’または‘白’に相当する値)を持つ画素の連結性を調べるラベリング処理を施す。そして、その同じラベルを持つ領域の大きさ、形状等から異物、傷等の欠陥を判断することになる。このようなラベリング処理は従来から一般的に行われている技術である（例えば、特許文献１）。
【０００４】
特許文献１に開示された技術（以下、従来技術という）は、２値化された画像データのラベリング処理を高速化するために、ランレングスで表現された画像データに対してラベリング処理を施すことが記載されている。そのラベリング処理方法は、ランレングス化された画像データに近傍処理アルゴリズムを応用したものである。
【０００５】
このように、従来技術は、画像データがランレングス化されることにより、ランレングス化された部分にアクセスすればよいことから、２値化された画像データの画素すべてにアクセスする必要がないため、画像データへのアクセス回数の低減が期待され、さらには高速化も期待される。
【０００６】
【特許文献１】特開平５−１６５９５５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
上述した従来技術は、２値画像データがランレングス化されることによる画像データへのアクセス回数の低減が期待され、更には高速化も期待される。しかし、ここで問題となるのは、ラベリング処理を高速化したとしても、画像データ処理全体の高速化という観点においては、まだ不十分である。すなわち、ラベリング処理以前に行われるランレングス化をも高速化することによって、撮像画像データなどから特徴量を算出するといった画像データ処理全体の高速化が図れるということである。これを実現するには、ランレングス化を如何に高速化するかということが大きな課題である。しかしながら、前述の従来技術では、２値画像データをランレングス化する際の高速化については特に考慮していない。
【０００８】
本発明は、ラベリング処理の前段階の処理として行われるランレングス化の高速化を図ることにより、撮像画像データなどから特徴量を算出するといった画像データ処理全体の高速化に寄与できる画像データ処理方法、画像データ処理プログラム及び画像データ処理装置を提供することを目的とする。
【課題を解決するための手段】
【０００９】
（１）本発明の画像データ処理方法は、２値画像データに存在するランの始端位置と終
端位置とを取得する画像データ処理方法であって、前記ランの始端に対応するビットを始端識別用ビットとしたとき、前記始端識別用ビットが他のビットと異なった値を有する始端識別用データを前記２値画像データから作成する第１ステップと、前記ランの終端に対応するビットを終端識別用ビットとしたとき、当該終端識別用ビットが他のビットと異なった値を有する終端識別用データを前記２値画像データから作成する第２ステップと、前記始端識別用データと前記終端識別用データとに基づいて、前記ランの始端位置と終端位置とを取得する第３ステップとを有することを特徴とする。
【００１０】
本発明の画像データ処理方法によれば、ランの始端位置及び終端位置を効率よく高速に求めることができ、ランレングス化の高速化を図ることができる。このように、ラベリング処理の前段階の処理として行われるランレングス化を高速化することにより、撮像画像データなどから特徴量を算出するといった画像データ処理全体を高速化することができる。
【００１１】
（２）前記（１）に記載の画像データ処理方法においては、前記第３ステップは、前記第１ステップで生成された始端識別用データを分割して分割後の始端識別用データを生成し、生成した分割後の始端識別用データをさらに分割して分割後の始端識別用データを生成する処理を複数段階で行い、前記複数段階の各段階において生成された分割後の始端識別用データに前記始端識別用ビットが存在するか否かを判定し、前記始端識別用ビットが存在する場合のみを処理対象とし、前記第２ステップで生成された終端識別用データを分割して分割後の終端識別用データを生成し、生成した分割後の始端識別用データをさらに分割して分割後の終端識別用データを生成する処理を複数段階で行い、前記複数段階の各段階において生成された分割後の終端識別用データに前記終端識別用ビットが存在するか否かを判定し、前記終端識別用ビットが存在する場合のみを処理対象として、前記ランの始端位置と終端位置とを取得する処理を行うことが好ましい。
【００１２】
このように、ランの始端位置及び終端位置を取得する処理を行う際は、始端識別用データ及び終端識別用データを分割し、分割後の始端識別用データに始端識別用ビットが存在するか否かを判定するとともに、終端識別用データに終端識別用ビットが存在するか否かを判定する。そして、分割後の始端識別用データに始端識別用ビットが存在する場合及び終端識別用データに終端識別用ビットが存在する場合のみに始端位置の取得処理及び始端位置の取得処理を行うようにしている。
したがって、分割後の始端識別用データに始端識別用ビットが存在しない場合及び終端識別用データに終端識別用ビットが存在しない場合には、始端位置の取得処理及び終端位置の取得処理を行わないので、無駄な処理を行うことなく、効率よく始端位置の取得処理及び終端位置の取得処理を行うことができる。
【００１３】
（３）前記（１）又は（２）に記載の画像データ処理方法においては、前記第１ステップは、前記２値画像データと当該２値画像データを処理の走査方向に１ビット分シフトした２値画像データとの対応する各ビットごとに論理演算を行い、前記論理演算は、前記ランを構成するビットのうち前記始端識別用ビットのみが当該始端識別用ビットの値を保持し、前記ランを構成するビットのうち前記始端識別用ビット以外のビットはその値が反転するような論理演算であり、前記第２ステップは、前記２値画像データと当該２値画像データを処理の走査方向と逆方向に１ビット分シフトした２値画像データとの対応する各ビットごとに論理演算を行い、前記論理演算は、前記ランを構成するビットのうち前記終端識別用ビットのみが当該終端識別用ビットの値を保持し、前記ランを構成するビットのうち前記終端識別用ビット以外のビットはその値が反転するような論理演算であることが好ましい。
このような論理演算を行うことにより、始端識別用データ及び終端識別用データを効率よく、適切に作成することができる。
【００１４】
（４）前記（３）に記載の画像データ処理方法においては、前記論理演算は、前記ランが‘０’又は‘１’で表される２値のうちの‘１’の連続であるとした場合、前記第１ステップにおいては、前記２値画像データと当該２値画像データを処理の走査方向に１ビット分シフトした２値画像データとの排他的論理和演算を行い、当該排他的論理和演算によって得られた結果と前記処理単位の２値画像データとの論理積演算を行い、前記第２ステップにおいては、前記２値画像データと当該２値画像データを処理の走査方向と逆方向に１ビット分シフトした２値画像データとの排他的論理和演算を行い、当該排他的論理和演算によって得られた結果と前記処理単位の２値画像データとの論理積演算を行うことが好ましい。
【００１５】
このような論理演算を行うことにより、‘１’の連続で構成されるランの始端に対応するビットのみを‘１’とすることができ、始端識別用ビットを適切に取得することができる。同様に、ランの終端に対応するビットのみを‘１’とすることができ、終端識別用ビットを適切に取得することができる。
【００１６】
（５）前記（３）に記載の画像データ処理方法においては、前記論理演算は、前記ランが‘０’又は‘１’で表される２値のうちの‘１’の連続であるとした場合、前記第１ステップにおいては、前記２値画像データを処理の走査方向に１ビット分シフトした２値画像データの否定論理演算を行い、当該否定論理演算によって得られた結果と前記２値画像データとの論理積演算を行い、前記第２ステップにおいては、前記２値画像データを処理の走査方向と逆方向に１ビット分シフトした２値画像データの否定論理演算を行い、当該否定論理演算によって得られた結果と前記２値画像データとの論理積演算を行うこともまた好ましい。
【００１７】
このような論理演算を行うことによっても、‘１’の連続で構成されるランの始端に対応するビットのみを‘１’とすることができ、始端識別用ビットを適切に取得することができる。同様に、ランの終端に対応するビットのみを‘１’とすることができ、終端識別用ビットを適切に取得することができる。
【００１８】
（６）本発明の画像データ処理プログラムは、２値画像データに存在するランの始端位置と終端位置とを取得する画像データ処理装置に、前記２値画像データに存在するランの始端位置と終端位置とを取得する処理を実行させる画像データ処理プログラムであって、前記ランの始端に対応するビットを始端識別用ビットとしたとき、前記始端識別用ビットが他のビットと異なった値を有する始端識別用データを前記２値画像データから作成する第１ステップと、前記ランの終端に対応するビットを終端識別用ビットとしたとき、当該終端識別用ビットが他のビットと異なった値を有する終端識別用データを前記２値画像データから作成する第２ステップと、前記始端識別用データと前記終端識別用データとに基づいて、前記ランの始端位置と終端位置とを取得する第３ステップとを有することを特徴とする。
【００１９】
このような画像データ処理プログラムを画像データ処理装置に実行させることにより、前記（１）に記載の画像データ処理方法と同様の効果が得られる。なお、この画像データ処理プログラムにおいても、前記（２）〜（５）に記載の画像データ処理方法と同様の特徴を有することが好ましい。
【００２０】
（７）本発明の画像データ処理装置は、２値画像データに存在するランの始端位置と終端位置とを取得する画像データ処理装置であって、前記ランの始端に対応するビットを始端識別用ビットとしたとき、前記始端識別用ビットが他のビットと異なった値を有する始端識別用データを前記２値画像データから作成する機能と、前記ランの終端に対応するビ
ットを終端識別用ビットとしたとき、当該終端識別用ビットが他のビットと異なった値を有する終端識別用データを前記２値画像データから作成する機能と、前記始端識別用データと前記終端識別用データとに基づいて、前記ランの始端位置と終端位置とを取得する機能とを有する演算処理装置を有することを特徴とする。
【００２１】
画像データ処理装置にこのような機能を有する演算処理装置を搭載することによって、前記（１）に記載の画像データ処理方法と同様の効果が得られる。なお、この画像データ処理装置においても、前記（２）〜（５）に記載の画像データ処理方法と同様の特徴を有することが好ましい。
【発明を実施するための最良の形態】
【００２２】
以下、本発明の実施形態について説明する。
図１は本発明の実施形態に係る画像データ処理方法を説明するために用いる２値画像データの一例を示す図である。図１に示す２値画像データは、ＣＣＤカメラなどの撮像装置によって得られたグレー階調の画像データを閾値判定による２値化を行うことにより得られたものである。なお、図１における格子状の枠内に示される‘０’または‘１’は、各画素における２値のデータである。
【００２３】
また、図１に示す格子状の枠外において、図示の左右方向に示されている「０，１，２，・・・」の数値は、画素の列を表すインデクス（列インデクスという）を示し、同じく、格子状の枠外において、図示の上下方向に示されている「０」，「１」，「２」，・・・の数値は、画素の行を表すインデクス（行インデクスという）を示している。なお、各行における処理の走査方向は、列インデクス「０」，「１」，「２」，・・・の順（図示の右から左へ向かう方向）であるとする。
【００２４】
図１に示すような２値画像データを高速にランレングス化するために、本発明の実施形態に係る画像データ処理方法では以下に説明するようなランレングス化を行う。なお、本発明の実施形態では、図１に示す２値画像データを各行ごとに列インデクス「０」，「１」，「２」，・・・の順で走査して行き、‘１’の画素の連続を「ラン」としてランレングス化を行うものとする。また、ランレングス化によって作成されたランに対応するデータ（ランデータという）は、当該ランの始端位置と終端位置の情報を有する。なお、始端位置及び終端位置は、‘０’又は‘１’で表される２値画像データの各ビットの位置を示す値（この例では列インデクスの値とする）として取得されるものとする。
【００２５】
ランデータを作成するためには、図１に示す各行ごとの２値画像データに存在する各ランの始端に対応するビットと各ランの終端に対応するビットを適切に検出する必要がある。そこで、まずは、各ランの始端に対応するビット、すなわち始端であることを識別可能なビット（始端識別用ビットという）を有する始端識別用データと、各ランの終端に対応するビット、すなわち終端であることを識別可能なビット（終端識別用ビットという）を有する終端識別用データとを作成する。
【００２６】
図２は始端識別用データを作成する処理（始端識別用データ作成処理という）について説明する図である。なお、図２は一般的な２値画像データにおける始端識別用データ作成処理について説明するための図であるので、図１とは異なる２値画像データを用いている。図２は処理単位となる２値画像データの１６ビット分がレジスタに格納された状態を示している。
【００２７】
図２（ａ）はレジスタに格納された１６ビット分の２値画像データであり、この２値画像データを元画像データと呼ぶ。ここで、元画像データのビット列を「ビット列Ａ」とし、当該元画像データのビット列Ａの各ビットを、処理の走査方向すなわち図示の左方向に
１ビットだけシフト（左論理シフト）したビット列（図２（ｂ）参照）を「ビット列Ｂ」としたとき、ビット列Ａとビット列Ｂとをそれぞれ対応するビットごとに、排他的論理和演算を行う。図２（ｃ）は排他的論理演算結果を示すもので、図２（ｃ）によれば、列インデクス「６」に対応するビットと列インデクス「１３」に対応するビットとでそれぞれ‘１’となる。
【００２８】
続いて、図２（ｃ）に示す排他的論理和演算結果と、図２（ａ）に示す元画像データ（ビット列Ａ）との論理積演算を行う。図２（ｄ）は論理積演算結果を示すもので、図２（ｄ）によれば、列インデクス「６」に対応するビットのみで‘１’となる。
【００２９】
列インデクス「６」は、図２によれば、元画像データに存在するランの始端に対応する位置であるが、この段階では、ランの始端位置であることの識別が可能な始端識別用ビットが検出されただけであって、その始端識別用ビットが元画像データのどの位置であるかの対応付けはなされていない。すなわち、始端識別用ビットと列インデクスとの対応はとれていない。
【００３０】
図３は終端始端識別用データを作成する処理（終端識別用データ作成処理という）について説明するための図である。なお、図３においても図２と同じ２値画像データを用いて説明する。
【００３１】
図３（ａ）に示す元画像データ（図２（ａ）と同じ２値画像データ）の１行分のビット列を「ビット列Ａ」とし、当該元画像データのビット列Ａの各ビットを、処理の走査方向と逆方向すなわち図示の右方向に１ビットだけシフト（右論理シフト）したビット列（図３（ｂ）参照）を「ビット列Ｃ」としたとき、ビット列Ａとビット列Ｃとをそれぞれ対応するビットごとに、排他的論理和演算を行う。図３（ｃ）は排他的論理和演算結果を示すもので、図３（ｃ）によれば、列インデクス「５」に対応するビットと列インデクス「１２」に対応するビットとでそれぞれ‘１’となる。
【００３２】
続いて、図３（ｃ）に示す排他的論理和演算結果と、図３（ａ）に示す元画像データ（ビット列Ａ）との論理積演算を行う。図３（ｄ）は論理積演算結果を示すもので、図３（ｄ）によれば、列インデクス「１２」に対応するビットで‘１’となる。
【００３３】
列インデクス「１２」は、図２によれば、元画像データに存在するランの終端に対応する位置であるが、図２と同様、この段階では、ランの終端位置であることの識別が可能な終端識別用ビットが検出されただけであって、その終端識別用ビットが元画像データのどの位置であるかの対応付けはなされていない。すなわち、終端識別用ビットと列インデクスとの対応はとれていない。
【００３４】
図２に示す始端識別用データ作成処理及び図３に示す終端識別用データ作成処理によって得られた始端識別用ビット及び終端識別用ビットと列インデクスとの対応を求める処理を行うことによって、元画像データにおけるランの始端位置及び終端位置を決定することができる。
【００３５】
なお、始端識別用ビットと列インデクスとの対応を求める処理を行うことによって、元画像データにおけるランの始端位置を取得する処理を始端位置取得処理と呼び、また、終端識別用ビットと列インデクスとの対応を求める処理を行うことによって、元画像データにおけるランの終端位置を取得する処理を終端位置取得処理と呼ぶことにする。これら、始端位置取得処理及び始端位置取得処理については後述する。
【００３６】
図２及び図３に示す例においては元画像データに存在する始端識別用ビットと終端識別
用ビットを適切に検出することができるが、演算に使用するレジスタのサイズ(処理単位)などによって、始端識別用ビット及び終端識別用ビットを適切に検出できない場合もある。
【００３７】
図４は演算に使用するレジスタの処理単位によって始端識別用ビット及び終端識別用ビットを適切に検出できない場合の一例を示す図である。なお、図４はレジスタにおける処理単位が８ビットである場合を例にとって説明する。また、元画像データは図２及び図３と同じものである。
【００３８】
図４は元画像データのランがレジスタの処理単位である８ビットの境界にまたがった状態でレジスタに格納された場合である。なお、図４においてレジスタの処理単位である８ビットの境界を「Ｌ」で表している。
【００３９】
図４（ａ）〜（ｄ）に示す処理は、図２（ａ）〜（ｄ）の処理と同様の始端識別用データ作成処理を行った場合のレジスタの内容を示す図である。また、図４（ｅ）〜（ｈ）に示す処理は、図３（ａ）〜（ｄ）の終端識別用データ作成処理を行った場合のレジスタの内容を示す図である。ただし、図４の場合は、８ビット単位で始端識別用データ作成処理及び終端識別用データ作成処理がなされる点が、図２及び図３の場合とは異なる。
【００４０】
図４（ａ）〜（ｄ）の始端識別用データ作成処理を行うと、図４（ｄ）に示すように、列インデクス「６」のビットと「８」のビットでそれぞれ‘１’となり、これら‘１’となった２つのビットのうち、どちらのビットが正しい始端識別用ビットであるかを特定することができない。
【００４１】
同様に、図４（ｅ）〜（ｈ）の終端識別用データ作成処理を行うと、図４（ｈ）に示すように、列インデクス「７」のビットと「１２」のビットでそれぞれ‘１’となり、これら‘１’となった２つのビットのうち、どちらのビットが正しい終端識別用ビットであるかを特定することができない。
【００４２】
そこで、元画像データのランが処理単位である８ビットの境界Ｌにまたがる場合においては、始端識別用データ作成処理の結果（図４（ｄ））と終端識別用データ作成処理の結果（図４（ｈ））におけるそれぞれの境界Ｌの前後のビットがともに‘１’であるか否かを判定し、ともに‘１’である場合には、始端識別用データ作成処理の結果（図４（ｄ））における境界Ｌの前後の‘１’と、終端識別用データ作成処理の結果（図４（ｈ））における境界Ｌの前後の‘１’とをともに‘０’とするという処理を行う。
【００４３】
すなわち、図４（ｄ）においては、境界Ｌの左側のビット（図中の灰色で示すビット）が‘１’であり、図４（ｈ）においては、境界Ｌの右側のビット（図中の灰色で示すビット）が‘１’であるので、これらを両方とも‘０’とする。
【００４４】
このような処理を行うことにより、図４（ｄ）は図４（ｉ）に示すようになる。すなわち、図４（ｄ）における境界Ｌの左側の‘１’は‘０’に変換されるので、列インデクス「６」に対応するビットのみが‘１’となった始端識別用データを得ることができる。また、図４（ｈ）は図４（ｊ）に示すようになる。すなわち、図４（ｈ）における境界Ｌの右側の‘１’が‘０’に変換されるので、列インデクス「１２」に対応するビットのみが‘１’となった終端識別用データを得ることができる。
【００４５】
図４で説明したように、元画像データのランが処理単位の境界Ｌにまたがる場合でも、２値画像データに存在するランの始端識別用ビット及び終端識別用ビットを適切に取得することができる。
【００４６】
図５は元画像データのランが処理単位である８ビットの境界にまたがらない状態でレジスタに格納された場合について説明する図である。すなわち、図５に示す元画像データのレジスタへの格納状態は、図５（ａ）に示すように、ランが列インデクス「８」に対応するビットから始まり、境界Ｌにまたがっていない。
【００４７】
図５（ａ）〜（ｄ）に示す処理は、図２（ａ）〜（ｄ）と同様の始端識別用データ作成処理を行った場合のレジスタの内容を示す図であり、図５（ｅ）〜（ｈ）に示す処理は、図３（ａ）〜（ｄ）と同様の終端識別用データ作成処理を行った場合のレジスタの内容を示す図である。
【００４８】
図５（ａ）〜（ｄ）の始端識別用データ作成処理を行うと、図５（ｄ）に示すように、列インデクス「８」のビットで‘１’となる。同様に、図５（ｅ）〜（ｈ）の終端識別用データ作成処理を行うと、図５（ｈ）に示すように、列インデクス「１２」のビットで‘１’となる。
【００４９】
図５に示すような例においては、始端識別用データ作成処理の結果（図５（ｄ））と終端識別用データ作成処理の結果（図５（ｈ））におけるそれぞれの境界Ｌの前後のビットがともに‘１’であるか否かを判定し、ともに‘１’でない場合には、その状態を保持するという処理を行う。
【００５０】
すなわち、図５（ｄ）においては、境界Ｌの左側のビット（図中の灰色で示すビット）が‘１’であり、図５（ｈ）においては、境界Ｌの右側のビット（図中の灰色で示すビット）が‘０’であるので、両者とも‘１’ではないので、その状態を保持する。
【００５１】
このような処理を行うことにより、図５（ｄ）はその状態が保持されるので、図５（ｉ）に示すように、列インデクス「８」に対応するビットのみが‘１’となった始端識別用データを得ることができる。また、図５（ｈ）もその状態が保持されるので、図５（ｊ）に示すように、列インデクス「１２」に対応するビットのみが‘１’となった始端識別用データを得ることができる。
【００５２】
本発明の実施形態では、処理対象となる２値画像データ（元画像データ）から始端識別用データ作成処理及び終端識別用データ作成処理を行う際は、使用するレジスタの処理単位に応じて図４及び図５で説明したような処理を施すものとする。
【００５３】
次に、これまで説明した処理によって得られた始端識別用データ及び終端識別用データを用いて、ランの始端位置を取得する処理（始端位置検出処理）と、ランの終端位置を取得する処理（終端位置検出処理）について説明する
【００５４】
図６は始端位置取得処理及び終端位置取得処理を説明するために用いる２値画像データの一例を示す図である。図６（ａ）は図１と同じ２値画像データであり、各行において３２ビットで構成されている。図６（ｂ）はこれまで説明した始端識別用データ作成処理によって得られた始端識別用データであり、行インデクス「０」，「１」，「２」，・・・が付与された各行において、‘１’となっているビットが始端識別用ビットである。同様に、図６（ｃ）はこれまで説明した終端識別用データ作成処理によって得られた終端識別用データであり、行インデクス「０」，「１」，「２」，・・・が付与された各行において、‘１’を示すビットが終端識別用ビットである。
【００５５】
図６（ｂ），（ｃ）に示す始端識別用データ及び終端識別用データを用いて、始端位置取得処理及び終端位置取得処理を行う。まず、図６（ｂ）に示す始端識別用データを用い
た始端位置取得処理について説明する。ここでは、始端位置取得処理及び終端位置取得処理を行う際に用いるレジスタの処理単位が１６ビットであるとして説明する。また、図６（ｂ）における行インデクス「０」が付与された行の始端識別用データについて処理を行うものとする。
【００５６】
図７は図６（ｂ）に示す始端識別用データにおける下位１６ビット（列インデクス「０」のビットを最下位ビットとする）の始端位置取得処理手順を説明する図である。図７（ａ）は図６（ｂ）の始端識別用データにおける下位１６ビットのデータである。
【００５７】
なお、図６（ｂ）に示す始端識別用データにおいて、１６ビットごとのデータ（処理単位データという）に付与されたインデクス（処理単位データインデクスという）を、右から順に、ｉ＝０，ｉ＝１で表す。すなわち、この場合、ｉ＝０の処理単位データは、図６（ｂ）における下位１６ビットのデータであり、ｉ＝１の処理単位データは、図６（ｂ）における上位１６ビットのデータである。
【００５８】
まず、ｉ＝０の処理単位データがすべて‘０’あるか否かを判定する(図７（ａ)参照）。この場合、‘１’が存在するので、ｉ＝０の処理単位データは‘０’ではない。ｉ＝０の処理単位データが‘０’でない場合には、処理単位データ（１６ビット）を２分割して、下位８ビットと上位８ビットのデータに２分割する。そして、下位８ビット及び上位８ビットがすべて‘０’であるか否かを判定する。ここで、下位８ビットに付与されたインデクスをｋ＝０、上位８ビットに付与されたインデクスをｋ＝１とする。
【００５９】
まず、ｋ＝０すなわち下位８ビットがすべて‘０’あるか否かを判定する（図７（ｂ）参照）。この場合、‘１’が存在するので、ｋ＝０（下位８ビット）は‘０’ではない。このように、下位８ビットが０ではないと判定されると、今度は、当該８ビットを下位から２ビットごとに切出して、切出された２ビットが０であるか否かを判定する（図７（ｃ）〜（ｆ）参照）。ここで、下位から順に各２ビット（第１の２ビット、第２の２ビット、・・・と呼ぶことにする）に付与されたインデクスを下位から順に、ｎ＝０，１，２，・・・で表す。
【００６０】
図７（ｃ）に示すｎ＝０の２ビット（第１の２ビット）は、すべて‘０’である。この場合、当該ｎ＝０の２ビットの２値データは「０，０」であり、その１０進数は「０」であるので、ｐ＝０とし、それ以上の処理は行わない。
【００６１】
続いて、ｎをインクリメントして「ｎ＝１」として、ｎ＝１の２ビット（第２の２ビット）について調べる（図７（ｄ）参照）。この場合、ｎ＝１の２ビットには‘１’が存在する。すなわち、ｎ＝１の２ビットの２値データは「０，１」であり、その１０進数は「２」であるので、ｐ＝２とする。ｎ＝１の２ビットのように、当該２ビットのデータ中に、‘１’が存在する場合は、下記（１）式によって始端位置Ｂｅｇｉｎ[＃ｍ]を求める。なお、始端位置Ｂｅｇｉｎ[＃ｍ]は、列インデクスを表す値である。
【００６２】
Ｂｅｇｉｎ[＃ｍ]＝１６×ｉ＋８×ｋ＋２×ｎ＋（ｐ−１）・・・・・・（１）
（１）式において、[＃ｍ]は１行分の２値画像データ（この例では３２ビット）中の始端又は終端位置の値（列インデクス）を表すもので、例えば、Ｂｅｇｉｎ[＃０]は、最初（０番目）に始端位置として求められた列インデクスの値を示している。
【００６３】
また、（１）式における「１６」は処理単位データの１６ビットを表し、「８」は１６ビットを２分割した８ビットを表し、「２」は８ビットの下位から切出した２ビットを表している。また、（１）式における「ｉ」は前述したように１６ビットの処理単位データインデクス、「ｋ」は２分割して得られた８ビットのデータのインデクス、「ｎ」は８ビ
ットのデータから切出された２ビットのデータのインデクス、「ｐ」は２ビットのデータの１０進数である。
【００６４】
ここで、ｎ＝１（第２の２ビット）においては、ｉ＝０、ｋ＝０、ｎ＝１、ｐ＝２であるので、（１）式にこれらを代入すると始端位置Ｂｅｇｉｎ[＃０]は、Ｂｅｇｉｎ[＃０]＝３と求められる。
【００６５】
続いて、ｎをインクリメントして「ｎ＝２」とし、ｎ＝２の２ビット（第３の２ビット）を切出すと、「０，０」の２ビットのデータが取得される（図７（ｅ）参照）。この場合、当該ｎ＝０の２ビットの２値データは「０，０」であり、その１０進数は「０」であるので、ｐ＝０とし、それ以上の処理は行わない。
【００６６】
そして、さらに、ｎをインクリメントして（ｎ＝３）、ｎ＝３の２ビット（第４の２ビット）を切出すと、図７（ｆ）に示すように、「１，０」の２ビットのデータが取得される。この場合、ｎ＝３の２ビットのデータは‘１’が存在する。すなわち、ｎ＝３の２ビットの２値データは「１，０」であり、その１０進数は「２」であるので、ｐ＝２とする。このｎ＝３の２ビットの場合も、当該２ビットのデータ中に、‘１’が得られるので、（１）式によって始端位置Ｂｅｇｉｎ[＃ｍ]を求める。ｎ＝３の２ビットの場合、ｉ＝０、ｋ＝０、ｎ＝３、ｐ＝２であるので、これらを（１）式に代入すると、始端位置Ｂｅｇｉｎ[＃１]＝７と求められる。
【００６７】
なお、上記した例では、ｎ＝１における処理が終了した後、さらに、２ビットの切出しを行い、同様の処理を行ったが、ｎ＝１における処理が終了した後に、それ以降のビットがすべて‘０’であるか否かを判定し、すべて‘０’であれば、それ以降の処理は行わないようにするというように設定しておくことも可能である。
【００６８】
以上のように、図７（ｂ）〜（ｆ）によって下位８ビットの処理が終了すると、今度は、ｋ＝１（上位８ビットに付与されたインデクス）とし、上位８ビットの処理を同様に行うが、上位８ビットはすべて‘０’であるので（図７（ｇ）参照）、当該上位８ビットについては、始端位置取得処理は行わない。
【００６９】
以上で図６（ｂ）に示す始端識別用データ（行インデクス「０」に対応する始端識別用データ）の下位１６ビット分の始端位置取得処理が終了する。この下位１６ビット分の始端位置検出処理の終了時点では、０番目の始端位置Ｂｅｇｉｎ[＃０]＝３と、１番目の始端位置Ｂｅｇｉｎ[＃１]＝７が求められたことになる。
【００７０】
次に、ｉをインクリメントし、ｉ＝１として、図６の行インデクス「０」に対応する行の２値画像データにおける上位１６ビットについての始端位置取得処理を行う。
【００７１】
図８は図６（ｂ）に示す始端識別用データにおける上位１６ビットの始端位置取得処理手順を説明する図である。図８（ａ）は図６（ｂ）に示す始端識別用データ（行インデクス「０」に対応する始端識別用データ）における上位１６ビットのデータである。
【００７２】
なお、図８（ａ）〜（ｇ）の処理も図７（ａ）〜（ｇ）と同様の手順で行うことができる。ただし、図８に示す上位１６ビットの場合は、１６ビットを２分割して得られた下位８ビットが‘０’であるので（図８（ｂ）参照）、当該下位８ビットについては始端位置取得処理を行わず、ｋをインクリメントして、ｋ＝１として、上位８ビット（図８（ｃ）参照）に処理が移る。
【００７３】
ここで、図８（ｃ）に示す上位８ビットは‘０’ではないので、図７と同様、上位８ビ
ットのうちの下位から２ビットごとに切出しを行い、図７と同様の処理を行う。図８の場合、ｎ＝０の２ビット（第１のビット）では、その２値データは「０，０」であるので（図８（ｄ）参照）、（１）式による始端位置取得処理は行わない。
【００７４】
そして、ｎ＝１の２ビット（第２の２ビット）では、その２値データは「０，１」であるので（図８（ｅ）参照）、‘１’が存在する。ｎ＝１の２ビットの場合、ｉ＝１、ｋ＝１、ｎ＝１、ｐ＝１であるので、これらを（１）式に代入すると、２番目の始端位置Ｂｅｇｉｎ[＃２]として、Ｂｅｇｉｎ[＃２]＝２６が求められる。
【００７５】
また、ｎ＝２の２ビット（第３のビット）、ｎ＝３の２ビット（第４のビット）ではともに、それぞれの２値データは「０，０」であるので（図８（ｆ），（ｇ）参照）、ｎ＝２の２ビット、ｎ＝３の２ビットではともに、（１）式による始端位置取得処理は行わない。
【００７６】
以上、図７及び図８によって図６（ａ）に示す２値画像データ（行インデクス「０」に対応する２値画像データ）におけるランの始端位置取得処理を終了し、この例では、図６（ａ）に示す２値画像データ（行インデクス「０」に対応する２値画像データ）のランの始端位置としては、０番目の始端位置Ｂｅｇｉｎ[＃０]＝３、１番目の始端位置Ｂｅｇｉｎ[＃１]＝７、２番目の始端位置Ｂｅｇｉｎ[＃２]＝２６がそれぞれ求められたことになる。なお、求められた始端位置「３」、「７」、「２６」は図６（ａ）に示す２値画像データおける列インデクスの値である。
【００７７】
次に、図６（ｃ）に示す終端識別用データを用いた終端位置取得処理について説明する。
図９は図６（ｃ）に示す終端識別用データにおける下位１６ビットの終端位置取得処理手順を説明する図である。図９（ａ）は図６（ｃ）に示す終端識別用データ（行インデクス「０」の行に対応する終端識別用データ）における下位１６ビットのデータである。なお、図９（ａ）〜（ｇ）の処理も上述した始端位置取得処理と同様の手順で行うことができるので、ここでは簡単に説明する。
【００７８】
まず、ｋ＝０すなわち下位８ビットがすべて‘０’あるか否かを判定する（図９（ｂ）参照）。この場合、下位８ビットには‘１’が存在するので、下位８ビットは‘０’ではない。このように、下位８ビットが０ではないと判定されると、今度は、当該８ビットを下位から２ビットごとに切出して、切出された２ビットが０であるか否かを判定する（図９（ｃ）〜（ｆ）参照）。
【００７９】
ここで、ｎ＝０の２ビット（第１の２ビット）、ｎ＝１の２ビット（第２の２ビット）では、その２値データはそれぞれ「０，０」であるので（図９（ｃ），（ｄ）参照）、終端位置検出処理は行わない。そして、ｎ＝２の２ビット（第３の２ビット）では、その２値データは「０，１」であり、‘１’が存在する。したがって、ｎ＝２の２ビットでは終端位置検出処理を行う。なお、終端位置Ｅｎｄ[＃ｍ]は（１）式同様、下記（２）式によって求めることができる。
Ｅｎｄ[＃ｍ]＝１６×ｉ＋８×ｋ＋２×ｎ＋（ｐ−１）・・・・・・・（２）
【００８０】
ｎ＝２の２ビットの場合、ｉ＝０、ｋ＝０、ｎ＝２、ｐ＝１であるので、これらを（２）式に代入すると、０番目の終端位置Ｅｎｄ[＃０]は、Ｅｎｄ[＃０]＝４と求められる（図９（ｅ）参照）。また、ｎ＝３の２ビット（第４の２ビット）の２値データは、「０，０」であるので（図９（ｆ）参照）、終端位置検出処理は行わない。
【００８１】
以上のように、図９（ｂ）〜（ｆ）によって下位８ビットの処理が終了すると、ｋをイ
ンクリメントしてｋ＝１とし、今度は上位８ビットの処理を同様に行うが、上位８ビットはすべて‘０’であるので（図９（ｇ）参照）、（２）式による終端位置取得処理は行わない。
【００８２】
以上で図６（ｃ）に示す終端識別用データ（行インデクス「０」の行に対応する終端識別用データ）における下位１６ビット分の始端位置取得処理が終了し、この時点で、０番目の終端位置Ｅｎｄ[＃０]＝４が求められたことになる。
【００８３】
次に、ｉをインクリメントし、ｉ＝１として、図６（ｃ）で示した終端識別用データ（行インデクス「０」の行に対応する終端識別用データ）のうちの上位１６ビットについての終端位置取得処理を行う。
【００８４】
図１０は図６（ｃ）に示す終端識別用データにおける上位１６ビットの終端位置取得処理手順を説明する図である。図１０（ａ）は図６（ｃ）における終端識別用データ（行インデクス「０」の行に対応する終端識別用データ）の上位１６ビットのデータである。
なお、図１０の処理も図９と同様の手順で行うことができる。ただし、図１０に示す上位１６ビットの場合は、１６ビットを２分割して得られた下位８ビット及び上位８ビットはともに、‘１’が存在するので、当該下位８ビット及び上位８ビットそれぞれについて、ｎ＝０，１，２，３の各２ビットごとの終端位置取得処理を行う。
【００８５】
まず、図１０（ｂ）に示す下位８ビットから順次切出されたｎ＝０，１，２，３の各２ビットについて、図１０（ｃ）〜（ｆ）に示すような処理を行う。この場合、ｎ＝０のビット（第１の２ビット）では、その２値データに‘１’が存在する（図１０（ｃ）参照）。ｎ＝０のビットの場合、ｉ＝１、ｋ＝０、ｎ＝０、ｐ＝２であるので、これらを（２）式に代入すると、１番目の終端位置Ｅｎｄ[＃１]は、Ｅｎｄ[＃１]＝１７と求められる。なお、その他の２ビット（ｎ＝１，ｎ＝２，ｎ＝３の各２ビット）においては、２値データがそれぞれ「０，０」であるので（図１０（ｄ）〜（ｆ）参照）、（２）式による終端位置検出処理は行わない。
【００８６】
一方、図１０（ｇ）に示す上位８ビットにおいては、当該上位８ビットから順次切出されたｎ＝０，１，２，３の各２ビットについて、図１０（ｈ）〜（ｋ）に示すような処理を行う。この場合、ｎ＝３の２ビットでは、その２値データは「１，０」であり、‘１’が存在する（図１０（ｋ）参照）。ｎ＝３の２値データの場合、ｉ＝１、ｋ＝１、ｎ＝３、ｐ＝２であるので、これらを（２）式に代入すると、２番目の終端位置Ｅｎｄ[＃２]は、Ｅｎｄ[＃２]＝３１と求められる。なお、その他の２ビット（ｎ＝０，ｎ＝１，ｎ＝２の各２ビット）においては、２値データがそれぞれ「０，０」であるので（図１０（ｈ）〜（ｊ）参照）、（２）式による終端位置検出処理は行わない。
【００８７】
以上、図９及び図１０によって図６（ｃ）に示した終端識別用データ（行インデクス「０」の行に対応する終端識別用データ）におけるランの終端位置取得処理を終了し、この例では、図６（ａ）に示す２値画像データのランの終端位置としては、０番目の終端位置Ｅｎｄ[＃０]＝４、１番目の終端位置Ｅｎｄ[＃１]＝１７、２番目の終端位置Ｅｎｄ[＃２]は、Ｅｎｄ[＃２]＝３１がそれぞれ求められたことになる。なお、求められた「４」、「１７」、「３１」は、図６（ａ）に示す２値画像データにおける列インデクスの値である。
【００８８】
図１１は始端位置取得処理及び終端位置取得処理によって取得された始端位置及び終端位置をランデータとしてランデータ格納領域に格納する処理を説明する図である。ここで用いる始端位置は図７及び図８で説明した始端位置取得処理により得られた始端位置であり、終端位置は図９及び図１０で説明した終端位置取得処理により得られた終端位置であ
るとする。
【００８９】
図１１（ａ）は各ランに対応するランデータを格納するランデータ格納領域であり、「０，１，２，・・・」は各ランに対応するランデータのインデクス（ランデータインデクスという）、「Ｂ」は始端位置取得処理により得られた各ランの始端位置、「Ｅ」は終端位置取得処理により得られた各ランの終端位置を示している。
【００９０】
このようなランデータ格納領域に、図７〜図１０で示すような始端位置取得処理及び終端位置検出処理を行うことによって取得された始端位置及び終端位置を、それぞれの処理段階ごとに格納して行く。なお、図１１（ｂ）は初期状態であり、この段階では、ランデータ格納領域はすべてゼロである。
【００９１】
図１１（ｃ）は図７及び図８の始端位置取得処理終了時におけるランデータ格納領域への格納状態を示す図である。始端位置取得処理終了時点では、０番目の始端位置Ｂｅｇｉｎ[＃０]＝３、１番目の始端位置Ｂｅｇｉｎ[＃１]＝７、２番目の始端位置Ｂｅｇｉｎ[＃２]＝２６が取得され、これら各始端位置はランデータ格納領域の対応する位置に格納される。
【００９２】
具体的には、図１１（ｃ）に示すように、０番目の始端位置「３」は、ランデータインデクス「０」が付与されたランデータの「Ｂ」に対応する格納領域に格納され、１番目の始端位置「７」は、ランデータインデクス「１」が付与されたランデータの「Ｂ」に対応する格納領域に格納され、２番目の始端位置「２６」は、ランデータインデクス「２」が付与されたランデータの「Ｂ」に対応する格納領域に格納される。
【００９３】
図１１（ｄ）は始端位置検出処理に加えて、図９及び図１０で説明した終端位置取得処理が終了した時点におけるランデータ格納領域への格納状態を示す図である。始端位置検出処理と終端位置検出処理の終了時点では、図１１（ｂ）に示す始端位置に加えて、０番目の終端位置Ｅｎｄ[＃０]＝４、１番目の終端位置Ｅｎｄ[＃１]＝１７、２番目の終端位置Ｅｎｄ[＃２]＝３１が取得され、これら各終端位置はランデータ格納領域の対応する位置に格納される。
【００９４】
具体的には、図１１（ｄ）に示すように、０番目の終端位置「４」は、ランデータインデクス「０」が付与されたランデータの「Ｅ」に対応する格納領域に格納され、１番目の終端位置「１７」は、ランデータインデクス「１」が付与されたランデータの「Ｅ」に対応する格納領域に格納され、２番目の終端位置「３１」は、ランデータインデクス「２」が付与されたランデータの「Ｅ」に対応する格納領域に格納される。
【００９５】
図１１（ｄ）までの処理がなされることにより、ランデータインデクス「０」、「１」，「２」が付与されたランデータはそれぞれ始端位置と終端位置を有するものとなる。これにより、例えば、ランデータインデクス「０」が付与されたランデータの始端位置は「３」、終端位置は「４」であることがわかる。
【００９６】
以上は図６（ａ）に示す２値画像データ（行インデクス「０」に対応する行の２値画像データ）についての処理であったが、図６に示す２値画像データにおける行インデクス「１」、行インデクス「２」が付与されたそれぞれの行についても、図７〜図１０で説明したと同様の処理を行うことによって、各行における始端位置及び終端位置を取得することができる。
【００９７】
そして、行インデクス「１」，「２」が付与されたそれぞれの行において取得された始端位置及び終端位置をそれぞれ対応するランデータの「Ｂ」及び「Ｅ」に対応する格納領
域に格納することによって、図１に示す２値画像データにおけるランデータが作成される。なお、行インデクス「１」，「２」が付与されたそれぞれの行において取得された始端位置及び終端位置は、ランデータインデクス「３」，「４」，・・・が付与されたランデータの「Ｂ」及び「Ｅ」に対応する格納領域にそれぞれ格納される（図１１（ｅ）〜（ｈ）参照）。
【００９８】
以上説明したように、本発明の実施形態によれば、２値画像データをランレングス化する際に必要なランデータ（始端位置及び終端位置）の取得を適切にかつ高速に行うことができ、それによって、２値画像データのランレングス化を高速に行うことができる。このように、ラベリング処理の前段階の処理として行われるランレングス処理の高速化を図ることにより、撮像画像データなどから特徴量を算出するといった画像データ処理全体を高速化することができる。
【００９９】
図１２は本発明の実施形態に係る画像データ処理装置の構成を示す図である。本発明の実施形態に係る画像データ処理装置１０は、ＣＣＤカメラなどの撮像装置２０からの撮像データを入力するＩ／Ｏ（入出力部）１１、撮像装置２０からの撮像データ、撮像データを２値化した２値画像データ、図１１に示すランデータ格納領域などを記憶する大容量の記憶領域としてのＲＡＭ１２、撮像データを２値化して２値画像データを作成する機能、２値画像データを用いて、始端識別用ビット及び終端識別用ビットを検出する処理、始端位置取得処理及び終端位置取得処理、取得された始端位置及び終端位置の格納処理など各種の処理を行う機能を有する演算処理装置１３、演算処理装置１３が各種の処理を行う際のプログラムを格納するＲＯＭ１４などを有している。なお、本発明の画像データ処理装置１０は、パーソナルコンピュータ（ＰＣという）を用いることで実現することができる。
【０１００】
本発明の画像データ処理装置１０が行う始端識別用ビット及び終端識別用ビットを検出する処理、始端位置取得処理及び終端位置取得処理、取得された始端位置及び終端位置の格納処理などについては、図１〜図１１により詳細に説明したので、その説明は省略する。
【０１０１】
なお、本発明は前述の実施形態に限られるものではなく、本発明の要旨を逸脱しない範囲で種々変形実施可能となるものである。例えば、前述の実施形態においては、始端識別用ビットを検出する処理として、ビット列Ａとビット列Ｂとの排他的論理和演算を行い、その排他的論理和演算結果とビット列Ａとの論理積を求めることによって始端識別用ビットを検出するようにしたが、これに限られるものではなく、ビット列Ｂの否定演算を行い、その否定演算結果とビット列Ａとの論理積演算を行うことによって始端識別用ビットを検出するようにしてもよい。これは、終端識別用ビットを求める場合にも同様のことが言える。
【０１０２】
また、前述の実施形態においては、‘１’の連続をランとした場合について説明したが、‘０’の連続をランとした場合であっても、異なる論理演算を用いることにより、当該ランの始端識別用ビット及び終端識別用ビットを検出する処理を実施することができる。
【０１０３】
また、前述の各実施形態において説明した画像データ処理を画像データ処理装置に実行させるためのプログラムとしての画像データ処理プログラムを作成することが可能であり、また、作成した画像データ処理プログラムを各種の記録媒体に記録させておくことも可能である。
【０１０４】
したがって、本発明は、これら画像データ処理プログラムとその画像データ処理プログラムを記録した記録媒体をも含むものである。また、画像データ処理プログラムはネット
ワークから取得するようにしてもよい。
【図面の簡単な説明】
【０１０５】
【図１】本発明の実施形態に係る画像データ処理方法を説明するために用いる２値画像データの一例を示す図。
【図２】始端識別用データ作成処理について説明する図。
【図３】終端識別用データ作成処理について説明する図。
【図４】演算に使用するレジスタの処理単位によって始端識別用ビット及び終端識別用ビットを適切に検出できない場合の一例を示す図。
【図５】元画像データのランが処理単位である８ビットの境界にまたがらない状態でレジスタに格納された場合について説明する図。
【図６】始端位置取得処理及び終端位置取得処理を説明するために用いる２値画像データの一例を示す図。
【図７】図６（ｂ）に示す始端識別用データにおける下位１６ビットの始端位置取得処理手順を説明する図。
【図８】図６（ｂ）に示す始端識別用データにおける上位１６ビットの始端位置取得処理手順を説明する図。
【図９】図６（ｃ）に示す終端識別用データにおける下位１６ビットの終端位置取得処理手順を説明する図。
【図１０】図６（ｃ）に示す終端識別用データにおける上位１６ビットの終端位置取得処理手順を説明する図。
【図１１】始端位置取得処理及び終端位置取得処理によって取得された始端位置及び終端位置をランデータとしてランデータ格納領域に格納する処理を説明する図。
【図１２】本発明の実施形態に係る画像データ処理装置の構成を示す図。
【符号の説明】
【０１０６】
１０・・・画像データ処理装置、１１・・・Ｉ／Ｏ、１２・・・ＲＡＭ、１３・・・演算処理装置、１４・・・ＲＯＭ、ｉ・・・１６ビットの処理単位データに付与されたインデクス、ｋ・・・８ビットに付与されたインデクス、ｎ・・・切出された２ビットに付与されたインデクス、ｐ・・・２ビットの１０進数
【図１】
2008227659.tif 000003
【図２】
2008227659.tif 000004
【図３】
2008227659.tif 000005
【図６】
2008227659.tif 000006
【図７】
2008227659.tif 000007
【図８】
2008227659.tif 000008
【図９】
2008227659.tif 000009
【図１０】
2008227659.tif 000010
【図１１】
2008227659.tif 000011
【図１２】
2008227659.tif 000012
【図４】
2008227659.tif 000013
【図５】
2008227659.tif 000014