JP2008227659A - 画像データ処理方法、画像データ処理プログラム及び画像データ処理装置 - Google Patents
画像データ処理方法、画像データ処理プログラム及び画像データ処理装置 Download PDFInfo
- Publication number
- JP2008227659A JP2008227659A JP2007059579A JP2007059579A JP2008227659A JP 2008227659 A JP2008227659 A JP 2008227659A JP 2007059579 A JP2007059579 A JP 2007059579A JP 2007059579 A JP2007059579 A JP 2007059579A JP 2008227659 A JP2008227659 A JP 2008227659A
- Authority
- JP
- Japan
- Prior art keywords
- image data
- bit
- run
- start end
- identification
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Landscapes
- Compression Of Band Width Or Redundancy In Fax (AREA)
- Image Analysis (AREA)
Abstract
【課題】2値画像データのランレングス化を高速化する。
【解決手段】2値画像データに存在するランの始端位置と終端位置とを取得する画像データ処理装置10であって、前記ランの始端に対応するビットを始端識別用ビットとしたとき、前記始端識別用ビットが他のビットと異なった値を有する始端識別用データを前記2値画像データから作成する機能と、前記ランの終端に対応するビットを終端識別用ビットとしたとき、当該終端識別用ビットが他のビットと異なった値を有する終端識別用データを前記2値画像データから作成する機能と、前記始端識別用データと前記終端識別用データとに基づいて、前記ランの始端位置と終端位置とを取得する機能とを有する演算処理装置13を有することを特徴とする画像データ処理装置。
【選択図】図12
【解決手段】2値画像データに存在するランの始端位置と終端位置とを取得する画像データ処理装置10であって、前記ランの始端に対応するビットを始端識別用ビットとしたとき、前記始端識別用ビットが他のビットと異なった値を有する始端識別用データを前記2値画像データから作成する機能と、前記ランの終端に対応するビットを終端識別用ビットとしたとき、当該終端識別用ビットが他のビットと異なった値を有する終端識別用データを前記2値画像データから作成する機能と、前記始端識別用データと前記終端識別用データとに基づいて、前記ランの始端位置と終端位置とを取得する機能とを有する演算処理装置13を有することを特徴とする画像データ処理装置。
【選択図】図12
Description
本発明は、2値画像データのランレングス化を高速化する画像データ処理方法、画像データ処理プログラム及び画像データ処理装置に関する。
近年、CCDやCMOSを用いた撮像素子の高画素数化及び高密度化が進展している。これらの撮像素子によって取得された画像データを処理することにより、より詳しい情報が得られるようになってきた。そして、その情報を用いて、いろいろな検査が行われるようになってきた。
例えば、製品への異物の付着あるいは傷の存在などによる欠陥識別のための検査が一例として挙げられる。このような検査を行う際には、画像データの2値化後に注目すべき値(‘黒’または‘白’に相当する値)を持つ画素の連結性を調べるラベリング処理を施す。そして、その同じラベルを持つ領域の大きさ、形状等から異物、傷等の欠陥を判断することになる。このようなラベリング処理は従来から一般的に行われている技術である(例えば、特許文献1)。
特許文献1に開示された技術(以下、従来技術という)は、2値化された画像データのラベリング処理を高速化するために、ランレングスで表現された画像データに対してラベリング処理を施すことが記載されている。そのラベリング処理方法は、ランレングス化された画像データに近傍処理アルゴリズムを応用したものである。
このように、従来技術は、画像データがランレングス化されることにより、ランレングス化された部分にアクセスすればよいことから、2値化された画像データの画素すべてにアクセスする必要がないため、画像データへのアクセス回数の低減が期待され、さらには高速化も期待される。
上述した従来技術は、2値画像データがランレングス化されることによる画像データへのアクセス回数の低減が期待され、更には高速化も期待される。しかし、ここで問題となるのは、ラベリング処理を高速化したとしても、画像データ処理全体の高速化という観点においては、まだ不十分である。すなわち、ラベリング処理以前に行われるランレングス化をも高速化することによって、撮像画像データなどから特徴量を算出するといった画像データ処理全体の高速化が図れるということである。これを実現するには、ランレングス化を如何に高速化するかということが大きな課題である。しかしながら、前述の従来技術では、2値画像データをランレングス化する際の高速化については特に考慮していない。
本発明は、ラベリング処理の前段階の処理として行われるランレングス化の高速化を図ることにより、撮像画像データなどから特徴量を算出するといった画像データ処理全体の高速化に寄与できる画像データ処理方法、画像データ処理プログラム及び画像データ処理装置を提供することを目的とする。
(1)本発明の画像データ処理方法は、2値画像データに存在するランの始端位置と終
端位置とを取得する画像データ処理方法であって、前記ランの始端に対応するビットを始端識別用ビットとしたとき、前記始端識別用ビットが他のビットと異なった値を有する始端識別用データを前記2値画像データから作成する第1ステップと、前記ランの終端に対応するビットを終端識別用ビットとしたとき、当該終端識別用ビットが他のビットと異なった値を有する終端識別用データを前記2値画像データから作成する第2ステップと、前記始端識別用データと前記終端識別用データとに基づいて、前記ランの始端位置と終端位置とを取得する第3ステップとを有することを特徴とする。
端位置とを取得する画像データ処理方法であって、前記ランの始端に対応するビットを始端識別用ビットとしたとき、前記始端識別用ビットが他のビットと異なった値を有する始端識別用データを前記2値画像データから作成する第1ステップと、前記ランの終端に対応するビットを終端識別用ビットとしたとき、当該終端識別用ビットが他のビットと異なった値を有する終端識別用データを前記2値画像データから作成する第2ステップと、前記始端識別用データと前記終端識別用データとに基づいて、前記ランの始端位置と終端位置とを取得する第3ステップとを有することを特徴とする。
本発明の画像データ処理方法によれば、ランの始端位置及び終端位置を効率よく高速に求めることができ、ランレングス化の高速化を図ることができる。このように、ラベリング処理の前段階の処理として行われるランレングス化を高速化することにより、撮像画像データなどから特徴量を算出するといった画像データ処理全体を高速化することができる。
(2)前記(1)に記載の画像データ処理方法においては、前記第3ステップは、前記第1ステップで生成された始端識別用データを分割して分割後の始端識別用データを生成し、生成した分割後の始端識別用データをさらに分割して分割後の始端識別用データを生成する処理を複数段階で行い、前記複数段階の各段階において生成された分割後の始端識別用データに前記始端識別用ビットが存在するか否かを判定し、前記始端識別用ビットが存在する場合のみを処理対象とし、前記第2ステップで生成された終端識別用データを分割して分割後の終端識別用データを生成し、生成した分割後の始端識別用データをさらに分割して分割後の終端識別用データを生成する処理を複数段階で行い、前記複数段階の各段階において生成された分割後の終端識別用データに前記終端識別用ビットが存在するか否かを判定し、前記終端識別用ビットが存在する場合のみを処理対象として、前記ランの始端位置と終端位置とを取得する処理を行うことが好ましい。
このように、ランの始端位置及び終端位置を取得する処理を行う際は、始端識別用データ及び終端識別用データを分割し、分割後の始端識別用データに始端識別用ビットが存在するか否かを判定するとともに、終端識別用データに終端識別用ビットが存在するか否かを判定する。そして、分割後の始端識別用データに始端識別用ビットが存在する場合及び終端識別用データに終端識別用ビットが存在する場合のみに始端位置の取得処理及び始端位置の取得処理を行うようにしている。
したがって、分割後の始端識別用データに始端識別用ビットが存在しない場合及び終端識別用データに終端識別用ビットが存在しない場合には、始端位置の取得処理及び終端位置の取得処理を行わないので、無駄な処理を行うことなく、効率よく始端位置の取得処理及び終端位置の取得処理を行うことができる。
したがって、分割後の始端識別用データに始端識別用ビットが存在しない場合及び終端識別用データに終端識別用ビットが存在しない場合には、始端位置の取得処理及び終端位置の取得処理を行わないので、無駄な処理を行うことなく、効率よく始端位置の取得処理及び終端位置の取得処理を行うことができる。
(3)前記(1)又は(2)に記載の画像データ処理方法においては、前記第1ステップは、前記2値画像データと当該2値画像データを処理の走査方向に1ビット分シフトした2値画像データとの対応する各ビットごとに論理演算を行い、前記論理演算は、前記ランを構成するビットのうち前記始端識別用ビットのみが当該始端識別用ビットの値を保持し、前記ランを構成するビットのうち前記始端識別用ビット以外のビットはその値が反転するような論理演算であり、前記第2ステップは、前記2値画像データと当該2値画像データを処理の走査方向と逆方向に1ビット分シフトした2値画像データとの対応する各ビットごとに論理演算を行い、前記論理演算は、前記ランを構成するビットのうち前記終端識別用ビットのみが当該終端識別用ビットの値を保持し、前記ランを構成するビットのうち前記終端識別用ビット以外のビットはその値が反転するような論理演算であることが好ましい。
このような論理演算を行うことにより、始端識別用データ及び終端識別用データを効率よく、適切に作成することができる。
このような論理演算を行うことにより、始端識別用データ及び終端識別用データを効率よく、適切に作成することができる。
(4)前記(3)に記載の画像データ処理方法においては、前記論理演算は、前記ランが‘0’又は‘1’で表される2値のうちの‘1’の連続であるとした場合、前記第1ステップにおいては、前記2値画像データと当該2値画像データを処理の走査方向に1ビット分シフトした2値画像データとの排他的論理和演算を行い、当該排他的論理和演算によって得られた結果と前記処理単位の2値画像データとの論理積演算を行い、前記第2ステップにおいては、前記2値画像データと当該2値画像データを処理の走査方向と逆方向に1ビット分シフトした2値画像データとの排他的論理和演算を行い、当該排他的論理和演算によって得られた結果と前記処理単位の2値画像データとの論理積演算を行うことが好ましい。
このような論理演算を行うことにより、‘1’の連続で構成されるランの始端に対応するビットのみを‘1’とすることができ、始端識別用ビットを適切に取得することができる。同様に、ランの終端に対応するビットのみを‘1’とすることができ、終端識別用ビットを適切に取得することができる。
(5)前記(3)に記載の画像データ処理方法においては、前記論理演算は、前記ランが‘0’又は‘1’で表される2値のうちの‘1’の連続であるとした場合、前記第1ステップにおいては、前記2値画像データを処理の走査方向に1ビット分シフトした2値画像データの否定論理演算を行い、当該否定論理演算によって得られた結果と前記2値画像データとの論理積演算を行い、前記第2ステップにおいては、前記2値画像データを処理の走査方向と逆方向に1ビット分シフトした2値画像データの否定論理演算を行い、当該否定論理演算によって得られた結果と前記2値画像データとの論理積演算を行うこともまた好ましい。
このような論理演算を行うことによっても、‘1’の連続で構成されるランの始端に対応するビットのみを‘1’とすることができ、始端識別用ビットを適切に取得することができる。同様に、ランの終端に対応するビットのみを‘1’とすることができ、終端識別用ビットを適切に取得することができる。
(6)本発明の画像データ処理プログラムは、2値画像データに存在するランの始端位置と終端位置とを取得する画像データ処理装置に、前記2値画像データに存在するランの始端位置と終端位置とを取得する処理を実行させる画像データ処理プログラムであって、前記ランの始端に対応するビットを始端識別用ビットとしたとき、前記始端識別用ビットが他のビットと異なった値を有する始端識別用データを前記2値画像データから作成する第1ステップと、前記ランの終端に対応するビットを終端識別用ビットとしたとき、当該終端識別用ビットが他のビットと異なった値を有する終端識別用データを前記2値画像データから作成する第2ステップと、前記始端識別用データと前記終端識別用データとに基づいて、前記ランの始端位置と終端位置とを取得する第3ステップとを有することを特徴とする。
このような画像データ処理プログラムを画像データ処理装置に実行させることにより、前記(1)に記載の画像データ処理方法と同様の効果が得られる。なお、この画像データ処理プログラムにおいても、前記(2)〜(5)に記載の画像データ処理方法と同様の特徴を有することが好ましい。
(7)本発明の画像データ処理装置は、2値画像データに存在するランの始端位置と終端位置とを取得する画像データ処理装置であって、前記ランの始端に対応するビットを始端識別用ビットとしたとき、前記始端識別用ビットが他のビットと異なった値を有する始端識別用データを前記2値画像データから作成する機能と、前記ランの終端に対応するビ
ットを終端識別用ビットとしたとき、当該終端識別用ビットが他のビットと異なった値を有する終端識別用データを前記2値画像データから作成する機能と、前記始端識別用データと前記終端識別用データとに基づいて、前記ランの始端位置と終端位置とを取得する機能とを有する演算処理装置を有することを特徴とする。
ットを終端識別用ビットとしたとき、当該終端識別用ビットが他のビットと異なった値を有する終端識別用データを前記2値画像データから作成する機能と、前記始端識別用データと前記終端識別用データとに基づいて、前記ランの始端位置と終端位置とを取得する機能とを有する演算処理装置を有することを特徴とする。
画像データ処理装置にこのような機能を有する演算処理装置を搭載することによって、前記(1)に記載の画像データ処理方法と同様の効果が得られる。なお、この画像データ処理装置においても、前記(2)〜(5)に記載の画像データ処理方法と同様の特徴を有することが好ましい。
以下、本発明の実施形態について説明する。
図1は本発明の実施形態に係る画像データ処理方法を説明するために用いる2値画像データの一例を示す図である。図1に示す2値画像データは、CCDカメラなどの撮像装置によって得られたグレー階調の画像データを閾値判定による2値化を行うことにより得られたものである。なお、図1における格子状の枠内に示される‘0’または‘1’は、各画素における2値のデータである。
図1は本発明の実施形態に係る画像データ処理方法を説明するために用いる2値画像データの一例を示す図である。図1に示す2値画像データは、CCDカメラなどの撮像装置によって得られたグレー階調の画像データを閾値判定による2値化を行うことにより得られたものである。なお、図1における格子状の枠内に示される‘0’または‘1’は、各画素における2値のデータである。
また、図1に示す格子状の枠外において、図示の左右方向に示されている「0,1,2,・・・」の数値は、画素の列を表すインデクス(列インデクスという)を示し、同じく、格子状の枠外において、図示の上下方向に示されている「0」,「1」,「2」,・・・の数値は、画素の行を表すインデクス(行インデクスという)を示している。なお、各行における処理の走査方向は、列インデクス「0」,「1」,「2」,・・・の順(図示の右から左へ向かう方向)であるとする。
図1に示すような2値画像データを高速にランレングス化するために、本発明の実施形態に係る画像データ処理方法では以下に説明するようなランレングス化を行う。なお、本発明の実施形態では、図1に示す2値画像データを各行ごとに列インデクス「0」,「1」,「2」,・・・の順で走査して行き、‘1’の画素の連続を「ラン」としてランレングス化を行うものとする。また、ランレングス化によって作成されたランに対応するデータ(ランデータという)は、当該ランの始端位置と終端位置の情報を有する。なお、始端位置及び終端位置は、‘0’又は‘1’で表される2値画像データの各ビットの位置を示す値(この例では列インデクスの値とする)として取得されるものとする。
ランデータを作成するためには、図1に示す各行ごとの2値画像データに存在する各ランの始端に対応するビットと各ランの終端に対応するビットを適切に検出する必要がある。そこで、まずは、各ランの始端に対応するビット、すなわち始端であることを識別可能なビット(始端識別用ビットという)を有する始端識別用データと、各ランの終端に対応するビット、すなわち終端であることを識別可能なビット(終端識別用ビットという)を有する終端識別用データとを作成する。
図2は始端識別用データを作成する処理(始端識別用データ作成処理という)について説明する図である。なお、図2は一般的な2値画像データにおける始端識別用データ作成処理について説明するための図であるので、図1とは異なる2値画像データを用いている。図2は処理単位となる2値画像データの16ビット分がレジスタに格納された状態を示している。
図2(a)はレジスタに格納された16ビット分の2値画像データであり、この2値画像データを元画像データと呼ぶ。ここで、元画像データのビット列を「ビット列A」とし、当該元画像データのビット列Aの各ビットを、処理の走査方向すなわち図示の左方向に
1ビットだけシフト(左論理シフト)したビット列(図2(b)参照)を「ビット列B」としたとき、ビット列Aとビット列Bとをそれぞれ対応するビットごとに、排他的論理和演算を行う。図2(c)は排他的論理演算結果を示すもので、図2(c)によれば、列インデクス「6」に対応するビットと列インデクス「13」に対応するビットとでそれぞれ‘1’となる。
1ビットだけシフト(左論理シフト)したビット列(図2(b)参照)を「ビット列B」としたとき、ビット列Aとビット列Bとをそれぞれ対応するビットごとに、排他的論理和演算を行う。図2(c)は排他的論理演算結果を示すもので、図2(c)によれば、列インデクス「6」に対応するビットと列インデクス「13」に対応するビットとでそれぞれ‘1’となる。
続いて、図2(c)に示す排他的論理和演算結果と、図2(a)に示す元画像データ(ビット列A)との論理積演算を行う。図2(d)は論理積演算結果を示すもので、図2(d)によれば、列インデクス「6」に対応するビットのみで‘1’となる。
列インデクス「6」は、図2によれば、元画像データに存在するランの始端に対応する位置であるが、この段階では、ランの始端位置であることの識別が可能な始端識別用ビットが検出されただけであって、その始端識別用ビットが元画像データのどの位置であるかの対応付けはなされていない。すなわち、始端識別用ビットと列インデクスとの対応はとれていない。
図3は終端始端識別用データを作成する処理(終端識別用データ作成処理という)について説明するための図である。なお、図3においても図2と同じ2値画像データを用いて説明する。
図3(a)に示す元画像データ(図2(a)と同じ2値画像データ)の1行分のビット列を「ビット列A」とし、当該元画像データのビット列Aの各ビットを、処理の走査方向と逆方向すなわち図示の右方向に1ビットだけシフト(右論理シフト)したビット列(図3(b)参照)を「ビット列C」としたとき、ビット列Aとビット列Cとをそれぞれ対応するビットごとに、排他的論理和演算を行う。図3(c)は排他的論理和演算結果を示すもので、図3(c)によれば、列インデクス「5」に対応するビットと列インデクス「12」に対応するビットとでそれぞれ‘1’となる。
続いて、図3(c)に示す排他的論理和演算結果と、図3(a)に示す元画像データ(ビット列A)との論理積演算を行う。図3(d)は論理積演算結果を示すもので、図3(d)によれば、列インデクス「12」に対応するビットで‘1’となる。
列インデクス「12」は、図2によれば、元画像データに存在するランの終端に対応する位置であるが、図2と同様、この段階では、ランの終端位置であることの識別が可能な終端識別用ビットが検出されただけであって、その終端識別用ビットが元画像データのどの位置であるかの対応付けはなされていない。すなわち、終端識別用ビットと列インデクスとの対応はとれていない。
図2に示す始端識別用データ作成処理及び図3に示す終端識別用データ作成処理によって得られた始端識別用ビット及び終端識別用ビットと列インデクスとの対応を求める処理を行うことによって、元画像データにおけるランの始端位置及び終端位置を決定することができる。
なお、始端識別用ビットと列インデクスとの対応を求める処理を行うことによって、元画像データにおけるランの始端位置を取得する処理を始端位置取得処理と呼び、また、終端識別用ビットと列インデクスとの対応を求める処理を行うことによって、元画像データにおけるランの終端位置を取得する処理を終端位置取得処理と呼ぶことにする。これら、始端位置取得処理及び始端位置取得処理については後述する。
図2及び図3に示す例においては元画像データに存在する始端識別用ビットと終端識別
用ビットを適切に検出することができるが、演算に使用するレジスタのサイズ(処理単位)などによって、始端識別用ビット及び終端識別用ビットを適切に検出できない場合もある。
用ビットを適切に検出することができるが、演算に使用するレジスタのサイズ(処理単位)などによって、始端識別用ビット及び終端識別用ビットを適切に検出できない場合もある。
図4は演算に使用するレジスタの処理単位によって始端識別用ビット及び終端識別用ビットを適切に検出できない場合の一例を示す図である。なお、図4はレジスタにおける処理単位が8ビットである場合を例にとって説明する。また、元画像データは図2及び図3と同じものである。
図4は元画像データのランがレジスタの処理単位である8ビットの境界にまたがった状態でレジスタに格納された場合である。なお、図4においてレジスタの処理単位である8ビットの境界を「L」で表している。
図4(a)〜(d)に示す処理は、図2(a)〜(d)の処理と同様の始端識別用データ作成処理を行った場合のレジスタの内容を示す図である。また、図4(e)〜(h)に示す処理は、図3(a)〜(d)の終端識別用データ作成処理を行った場合のレジスタの内容を示す図である。ただし、図4の場合は、8ビット単位で始端識別用データ作成処理及び終端識別用データ作成処理がなされる点が、図2及び図3の場合とは異なる。
図4(a)〜(d)の始端識別用データ作成処理を行うと、図4(d)に示すように、列インデクス「6」のビットと「8」のビットでそれぞれ‘1’となり、これら‘1’となった2つのビットのうち、どちらのビットが正しい始端識別用ビットであるかを特定することができない。
同様に、図4(e)〜(h)の終端識別用データ作成処理を行うと、図4(h)に示すように、列インデクス「7」のビットと「12」のビットでそれぞれ‘1’となり、これら‘1’となった2つのビットのうち、どちらのビットが正しい終端識別用ビットであるかを特定することができない。
そこで、元画像データのランが処理単位である8ビットの境界Lにまたがる場合においては、始端識別用データ作成処理の結果(図4(d))と終端識別用データ作成処理の結果(図4(h))におけるそれぞれの境界Lの前後のビットがともに‘1’であるか否かを判定し、ともに‘1’である場合には、始端識別用データ作成処理の結果(図4(d))における境界Lの前後の‘1’と、終端識別用データ作成処理の結果(図4(h))における境界Lの前後の‘1’とをともに‘0’とするという処理を行う。
すなわち、図4(d)においては、境界Lの左側のビット(図中の灰色で示すビット)が‘1’であり、図4(h)においては、境界Lの右側のビット(図中の灰色で示すビット)が‘1’であるので、これらを両方とも‘0’とする。
このような処理を行うことにより、図4(d)は図4(i)に示すようになる。すなわち、図4(d)における境界Lの左側の‘1’は‘0’に変換されるので、列インデクス「6」に対応するビットのみが‘1’となった始端識別用データを得ることができる。また、図4(h)は図4(j)に示すようになる。すなわち、図4(h)における境界Lの右側の‘1’が‘0’に変換されるので、列インデクス「12」に対応するビットのみが‘1’となった終端識別用データを得ることができる。
図4で説明したように、元画像データのランが処理単位の境界Lにまたがる場合でも、2値画像データに存在するランの始端識別用ビット及び終端識別用ビットを適切に取得することができる。
図5は元画像データのランが処理単位である8ビットの境界にまたがらない状態でレジスタに格納された場合について説明する図である。すなわち、図5に示す元画像データのレジスタへの格納状態は、図5(a)に示すように、ランが列インデクス「8」に対応するビットから始まり、境界Lにまたがっていない。
図5(a)〜(d)に示す処理は、図2(a)〜(d)と同様の始端識別用データ作成処理を行った場合のレジスタの内容を示す図であり、図5(e)〜(h)に示す処理は、図3(a)〜(d)と同様の終端識別用データ作成処理を行った場合のレジスタの内容を示す図である。
図5(a)〜(d)の始端識別用データ作成処理を行うと、図5(d)に示すように、列インデクス「8」のビットで‘1’となる。同様に、図5(e)〜(h)の終端識別用データ作成処理を行うと、図5(h)に示すように、列インデクス「12」のビットで‘1’となる。
図5に示すような例においては、始端識別用データ作成処理の結果(図5(d))と終端識別用データ作成処理の結果(図5(h))におけるそれぞれの境界Lの前後のビットがともに‘1’であるか否かを判定し、ともに‘1’でない場合には、その状態を保持するという処理を行う。
すなわち、図5(d)においては、境界Lの左側のビット(図中の灰色で示すビット)が‘1’であり、図5(h)においては、境界Lの右側のビット(図中の灰色で示すビット)が‘0’であるので、両者とも‘1’ではないので、その状態を保持する。
このような処理を行うことにより、図5(d)はその状態が保持されるので、図5(i)に示すように、列インデクス「8」に対応するビットのみが‘1’となった始端識別用データを得ることができる。また、図5(h)もその状態が保持されるので、図5(j)に示すように、列インデクス「12」に対応するビットのみが‘1’となった始端識別用データを得ることができる。
本発明の実施形態では、処理対象となる2値画像データ(元画像データ)から始端識別用データ作成処理及び終端識別用データ作成処理を行う際は、使用するレジスタの処理単位に応じて図4及び図5で説明したような処理を施すものとする。
次に、これまで説明した処理によって得られた始端識別用データ及び終端識別用データを用いて、ランの始端位置を取得する処理(始端位置検出処理)と、ランの終端位置を取得する処理(終端位置検出処理)について説明する
図6は始端位置取得処理及び終端位置取得処理を説明するために用いる2値画像データの一例を示す図である。図6(a)は図1と同じ2値画像データであり、各行において32ビットで構成されている。図6(b)はこれまで説明した始端識別用データ作成処理によって得られた始端識別用データであり、行インデクス「0」,「1」,「2」,・・・が付与された各行において、‘1’となっているビットが始端識別用ビットである。同様に、図6(c)はこれまで説明した終端識別用データ作成処理によって得られた終端識別用データであり、行インデクス「0」,「1」,「2」,・・・が付与された各行において、‘1’を示すビットが終端識別用ビットである。
図6(b),(c)に示す始端識別用データ及び終端識別用データを用いて、始端位置取得処理及び終端位置取得処理を行う。まず、図6(b)に示す始端識別用データを用い
た始端位置取得処理について説明する。ここでは、始端位置取得処理及び終端位置取得処理を行う際に用いるレジスタの処理単位が16ビットであるとして説明する。また、図6(b)における行インデクス「0」が付与された行の始端識別用データについて処理を行うものとする。
た始端位置取得処理について説明する。ここでは、始端位置取得処理及び終端位置取得処理を行う際に用いるレジスタの処理単位が16ビットであるとして説明する。また、図6(b)における行インデクス「0」が付与された行の始端識別用データについて処理を行うものとする。
図7は図6(b)に示す始端識別用データにおける下位16ビット(列インデクス「0」のビットを最下位ビットとする)の始端位置取得処理手順を説明する図である。図7(a)は図6(b)の始端識別用データにおける下位16ビットのデータである。
なお、図6(b)に示す始端識別用データにおいて、16ビットごとのデータ(処理単位データという)に付与されたインデクス(処理単位データインデクスという)を、右から順に、i=0,i=1で表す。すなわち、この場合、i=0の処理単位データは、図6(b)における下位16ビットのデータであり、i=1の処理単位データは、図6(b)における上位16ビットのデータである。
まず、i=0の処理単位データがすべて‘0’あるか否かを判定する(図7(a)参照)。この場合、‘1’が存在するので、i=0の処理単位データは‘0’ではない。i=0の処理単位データが‘0’でない場合には、処理単位データ(16ビット)を2分割して、下位8ビットと上位8ビットのデータに2分割する。そして、下位8ビット及び上位8ビットがすべて‘0’であるか否かを判定する。ここで、下位8ビットに付与されたインデクスをk=0、上位8ビットに付与されたインデクスをk=1とする。
まず、k=0すなわち下位8ビットがすべて‘0’あるか否かを判定する(図7(b)参照)。この場合、‘1’が存在するので、k=0(下位8ビット)は‘0’ではない。このように、下位8ビットが0ではないと判定されると、今度は、当該8ビットを下位から2ビットごとに切出して、切出された2ビットが0であるか否かを判定する(図7(c)〜(f)参照)。ここで、下位から順に各2ビット(第1の2ビット、第2の2ビット、・・・と呼ぶことにする)に付与されたインデクスを下位から順に、n=0,1,2,・・・で表す。
図7(c)に示すn=0の2ビット(第1の2ビット)は、すべて‘0’である。この場合、当該n=0の2ビットの2値データは「0,0」であり、その10進数は「0」であるので、p=0とし、それ以上の処理は行わない。
続いて、nをインクリメントして「n=1」として、n=1の2ビット(第2の2ビット)について調べる(図7(d)参照)。この場合、n=1の2ビットには‘1’が存在する。すなわち、n=1の2ビットの2値データは「0,1」であり、その10進数は「2」であるので、p=2とする。n=1の2ビットのように、当該2ビットのデータ中に、‘1’が存在する場合は、下記(1)式によって始端位置Begin[#m]を求める。なお、始端位置Begin[#m]は、列インデクスを表す値である。
Begin[#m]=16×i+8×k+2×n+(p−1)・・・・・・(1)
(1)式において、[#m]は1行分の2値画像データ(この例では32ビット)中の始端又は終端位置の値(列インデクス)を表すもので、例えば、Begin[#0]は、最初(0番目)に始端位置として求められた列インデクスの値を示している。
(1)式において、[#m]は1行分の2値画像データ(この例では32ビット)中の始端又は終端位置の値(列インデクス)を表すもので、例えば、Begin[#0]は、最初(0番目)に始端位置として求められた列インデクスの値を示している。
また、(1)式における「16」は処理単位データの16ビットを表し、「8」は16ビットを2分割した8ビットを表し、「2」は8ビットの下位から切出した2ビットを表している。また、(1)式における「i」は前述したように16ビットの処理単位データインデクス、「k」は2分割して得られた8ビットのデータのインデクス、「n」は8ビ
ットのデータから切出された2ビットのデータのインデクス、「p」は2ビットのデータの10進数である。
ットのデータから切出された2ビットのデータのインデクス、「p」は2ビットのデータの10進数である。
ここで、n=1(第2の2ビット)においては、i=0、k=0、n=1、p=2であるので、(1)式にこれらを代入すると始端位置Begin[#0]は、Begin[#0]=3と求められる。
続いて、nをインクリメントして「n=2」とし、n=2の2ビット(第3の2ビット)を切出すと、「0,0」の2ビットのデータが取得される(図7(e)参照)。この場合、当該n=0の2ビットの2値データは「0,0」であり、その10進数は「0」であるので、p=0とし、それ以上の処理は行わない。
そして、さらに、nをインクリメントして(n=3)、n=3の2ビット(第4の2ビット)を切出すと、図7(f)に示すように、「1,0」の2ビットのデータが取得される。この場合、n=3の2ビットのデータは‘1’が存在する。すなわち、n=3の2ビットの2値データは「1,0」であり、その10進数は「2」であるので、p=2とする。このn=3の2ビットの場合も、当該2ビットのデータ中に、‘1’が得られるので、(1)式によって始端位置Begin[#m]を求める。n=3の2ビットの場合、i=0、k=0、n=3、p=2であるので、これらを(1)式に代入すると、始端位置Begin[#1]=7と求められる。
なお、上記した例では、n=1における処理が終了した後、さらに、2ビットの切出しを行い、同様の処理を行ったが、n=1における処理が終了した後に、それ以降のビットがすべて‘0’であるか否かを判定し、すべて‘0’であれば、それ以降の処理は行わないようにするというように設定しておくことも可能である。
以上のように、図7(b)〜(f)によって下位8ビットの処理が終了すると、今度は、k=1(上位8ビットに付与されたインデクス)とし、上位8ビットの処理を同様に行うが、上位8ビットはすべて‘0’であるので(図7(g)参照)、当該上位8ビットについては、始端位置取得処理は行わない。
以上で図6(b)に示す始端識別用データ(行インデクス「0」に対応する始端識別用データ)の下位16ビット分の始端位置取得処理が終了する。この下位16ビット分の始端位置検出処理の終了時点では、0番目の始端位置Begin[#0]=3と、1番目の始端位置Begin[#1]=7が求められたことになる。
次に、iをインクリメントし、i=1として、図6の行インデクス「0」に対応する行の2値画像データにおける上位16ビットについての始端位置取得処理を行う。
図8は図6(b)に示す始端識別用データにおける上位16ビットの始端位置取得処理手順を説明する図である。図8(a)は図6(b)に示す始端識別用データ(行インデクス「0」に対応する始端識別用データ)における上位16ビットのデータである。
なお、図8(a)〜(g)の処理も図7(a)〜(g)と同様の手順で行うことができる。ただし、図8に示す上位16ビットの場合は、16ビットを2分割して得られた下位8ビットが‘0’であるので(図8(b)参照)、当該下位8ビットについては始端位置取得処理を行わず、kをインクリメントして、k=1として、上位8ビット(図8(c)参照)に処理が移る。
ここで、図8(c)に示す上位8ビットは‘0’ではないので、図7と同様、上位8ビ
ットのうちの下位から2ビットごとに切出しを行い、図7と同様の処理を行う。図8の場合、n=0の2ビット(第1のビット)では、その2値データは「0,0」であるので(図8(d)参照)、(1)式による始端位置取得処理は行わない。
ットのうちの下位から2ビットごとに切出しを行い、図7と同様の処理を行う。図8の場合、n=0の2ビット(第1のビット)では、その2値データは「0,0」であるので(図8(d)参照)、(1)式による始端位置取得処理は行わない。
そして、n=1の2ビット(第2の2ビット)では、その2値データは「0,1」であるので(図8(e)参照)、‘1’が存在する。n=1の2ビットの場合、i=1、k=1、n=1、p=1であるので、これらを(1)式に代入すると、2番目の始端位置Begin[#2]として、Begin[#2]=26が求められる。
また、n=2の2ビット(第3のビット)、n=3の2ビット(第4のビット)ではともに、それぞれの2値データは「0,0」であるので(図8(f),(g)参照)、n=2の2ビット、n=3の2ビットではともに、(1)式による始端位置取得処理は行わない。
以上、図7及び図8によって図6(a)に示す2値画像データ(行インデクス「0」に対応する2値画像データ)におけるランの始端位置取得処理を終了し、この例では、図6(a)に示す2値画像データ(行インデクス「0」に対応する2値画像データ)のランの始端位置としては、0番目の始端位置Begin[#0]=3、1番目の始端位置Begin[#1]=7、2番目の始端位置Begin[#2]=26がそれぞれ求められたことになる。なお、求められた始端位置「3」、「7」、「26」は図6(a)に示す2値画像データおける列インデクスの値である。
次に、図6(c)に示す終端識別用データを用いた終端位置取得処理について説明する。
図9は図6(c)に示す終端識別用データにおける下位16ビットの終端位置取得処理手順を説明する図である。図9(a)は図6(c)に示す終端識別用データ(行インデクス「0」の行に対応する終端識別用データ)における下位16ビットのデータである。なお、図9(a)〜(g)の処理も上述した始端位置取得処理と同様の手順で行うことができるので、ここでは簡単に説明する。
図9は図6(c)に示す終端識別用データにおける下位16ビットの終端位置取得処理手順を説明する図である。図9(a)は図6(c)に示す終端識別用データ(行インデクス「0」の行に対応する終端識別用データ)における下位16ビットのデータである。なお、図9(a)〜(g)の処理も上述した始端位置取得処理と同様の手順で行うことができるので、ここでは簡単に説明する。
まず、k=0すなわち下位8ビットがすべて‘0’あるか否かを判定する(図9(b)参照)。この場合、下位8ビットには‘1’が存在するので、下位8ビットは‘0’ではない。このように、下位8ビットが0ではないと判定されると、今度は、当該8ビットを下位から2ビットごとに切出して、切出された2ビットが0であるか否かを判定する(図9(c)〜(f)参照)。
ここで、n=0の2ビット(第1の2ビット)、n=1の2ビット(第2の2ビット)では、その2値データはそれぞれ「0,0」であるので(図9(c),(d)参照)、終端位置検出処理は行わない。そして、n=2の2ビット(第3の2ビット)では、その2値データは「0,1」であり、‘1’が存在する。したがって、n=2の2ビットでは終端位置検出処理を行う。なお、終端位置End[#m]は(1)式同様、下記(2)式によって求めることができる。
End[#m]=16×i+8×k+2×n+(p−1)・・・・・・・(2)
End[#m]=16×i+8×k+2×n+(p−1)・・・・・・・(2)
n=2の2ビットの場合、i=0、k=0、n=2、p=1であるので、これらを(2)式に代入すると、0番目の終端位置End[#0]は、End[#0]=4と求められる(図9(e)参照)。また、n=3の2ビット(第4の2ビット)の2値データは、「0,0」であるので(図9(f)参照)、終端位置検出処理は行わない。
以上のように、図9(b)〜(f)によって下位8ビットの処理が終了すると、kをイ
ンクリメントしてk=1とし、今度は上位8ビットの処理を同様に行うが、上位8ビットはすべて‘0’であるので(図9(g)参照)、(2)式による終端位置取得処理は行わない。
ンクリメントしてk=1とし、今度は上位8ビットの処理を同様に行うが、上位8ビットはすべて‘0’であるので(図9(g)参照)、(2)式による終端位置取得処理は行わない。
以上で図6(c)に示す終端識別用データ(行インデクス「0」の行に対応する終端識別用データ)における下位16ビット分の始端位置取得処理が終了し、この時点で、0番目の終端位置End[#0]=4が求められたことになる。
次に、iをインクリメントし、i=1として、図6(c)で示した終端識別用データ(行インデクス「0」の行に対応する終端識別用データ)のうちの上位16ビットについての終端位置取得処理を行う。
図10は図6(c)に示す終端識別用データにおける上位16ビットの終端位置取得処理手順を説明する図である。図10(a)は図6(c)における終端識別用データ(行インデクス「0」の行に対応する終端識別用データ)の上位16ビットのデータである。
なお、図10の処理も図9と同様の手順で行うことができる。ただし、図10に示す上位16ビットの場合は、16ビットを2分割して得られた下位8ビット及び上位8ビットはともに、‘1’が存在するので、当該下位8ビット及び上位8ビットそれぞれについて、n=0,1,2,3の各2ビットごとの終端位置取得処理を行う。
なお、図10の処理も図9と同様の手順で行うことができる。ただし、図10に示す上位16ビットの場合は、16ビットを2分割して得られた下位8ビット及び上位8ビットはともに、‘1’が存在するので、当該下位8ビット及び上位8ビットそれぞれについて、n=0,1,2,3の各2ビットごとの終端位置取得処理を行う。
まず、図10(b)に示す下位8ビットから順次切出されたn=0,1,2,3の各2ビットについて、図10(c)〜(f)に示すような処理を行う。この場合、n=0のビット(第1の2ビット)では、その2値データに‘1’が存在する(図10(c)参照)。n=0のビットの場合、i=1、k=0、n=0、p=2であるので、これらを(2)式に代入すると、1番目の終端位置End[#1]は、End[#1]=17と求められる。なお、その他の2ビット(n=1,n=2,n=3の各2ビット)においては、2値データがそれぞれ「0,0」であるので(図10(d)〜(f)参照)、(2)式による終端位置検出処理は行わない。
一方、図10(g)に示す上位8ビットにおいては、当該上位8ビットから順次切出されたn=0,1,2,3の各2ビットについて、図10(h)〜(k)に示すような処理を行う。この場合、n=3の2ビットでは、その2値データは「1,0」であり、‘1’が存在する(図10(k)参照)。n=3の2値データの場合、i=1、k=1、n=3、p=2であるので、これらを(2)式に代入すると、2番目の終端位置End[#2]は、End[#2]=31と求められる。なお、その他の2ビット(n=0,n=1,n=2の各2ビット)においては、2値データがそれぞれ「0,0」であるので(図10(h)〜(j)参照)、(2)式による終端位置検出処理は行わない。
以上、図9及び図10によって図6(c)に示した終端識別用データ(行インデクス「0」の行に対応する終端識別用データ)におけるランの終端位置取得処理を終了し、この例では、図6(a)に示す2値画像データのランの終端位置としては、0番目の終端位置End[#0]=4、1番目の終端位置End[#1]=17、2番目の終端位置End[#2]は、End[#2]=31がそれぞれ求められたことになる。なお、求められた「4」、「17」、「31」は、図6(a)に示す2値画像データにおける列インデクスの値である。
図11は始端位置取得処理及び終端位置取得処理によって取得された始端位置及び終端位置をランデータとしてランデータ格納領域に格納する処理を説明する図である。ここで用いる始端位置は図7及び図8で説明した始端位置取得処理により得られた始端位置であり、終端位置は図9及び図10で説明した終端位置取得処理により得られた終端位置であ
るとする。
るとする。
図11(a)は各ランに対応するランデータを格納するランデータ格納領域であり、「0,1,2,・・・」は各ランに対応するランデータのインデクス(ランデータインデクスという)、「B」は始端位置取得処理により得られた各ランの始端位置、「E」は終端位置取得処理により得られた各ランの終端位置を示している。
このようなランデータ格納領域に、図7〜図10で示すような始端位置取得処理及び終端位置検出処理を行うことによって取得された始端位置及び終端位置を、それぞれの処理段階ごとに格納して行く。なお、図11(b)は初期状態であり、この段階では、ランデータ格納領域はすべてゼロである。
図11(c)は図7及び図8の始端位置取得処理終了時におけるランデータ格納領域への格納状態を示す図である。始端位置取得処理終了時点では、0番目の始端位置Begin[#0]=3、1番目の始端位置Begin[#1]=7、2番目の始端位置Begin[#2]=26が取得され、これら各始端位置はランデータ格納領域の対応する位置に格納される。
具体的には、図11(c)に示すように、0番目の始端位置「3」は、ランデータインデクス「0」が付与されたランデータの「B」に対応する格納領域に格納され、1番目の始端位置「7」は、ランデータインデクス「1」が付与されたランデータの「B」に対応する格納領域に格納され、2番目の始端位置「26」は、ランデータインデクス「2」が付与されたランデータの「B」に対応する格納領域に格納される。
図11(d)は始端位置検出処理に加えて、図9及び図10で説明した終端位置取得処理が終了した時点におけるランデータ格納領域への格納状態を示す図である。始端位置検出処理と終端位置検出処理の終了時点では、図11(b)に示す始端位置に加えて、0番目の終端位置End[#0]=4、1番目の終端位置End[#1]=17、2番目の終端位置End[#2]=31が取得され、これら各終端位置はランデータ格納領域の対応する位置に格納される。
具体的には、図11(d)に示すように、0番目の終端位置「4」は、ランデータインデクス「0」が付与されたランデータの「E」に対応する格納領域に格納され、1番目の終端位置「17」は、ランデータインデクス「1」が付与されたランデータの「E」に対応する格納領域に格納され、2番目の終端位置「31」は、ランデータインデクス「2」が付与されたランデータの「E」に対応する格納領域に格納される。
図11(d)までの処理がなされることにより、ランデータインデクス「0」、「1」,「2」が付与されたランデータはそれぞれ始端位置と終端位置を有するものとなる。これにより、例えば、ランデータインデクス「0」が付与されたランデータの始端位置は「3」、終端位置は「4」であることがわかる。
以上は図6(a)に示す2値画像データ(行インデクス「0」に対応する行の2値画像データ)についての処理であったが、図6に示す2値画像データにおける行インデクス「1」、行インデクス「2」が付与されたそれぞれの行についても、図7〜図10で説明したと同様の処理を行うことによって、各行における始端位置及び終端位置を取得することができる。
そして、行インデクス「1」,「2」が付与されたそれぞれの行において取得された始端位置及び終端位置をそれぞれ対応するランデータの「B」及び「E」に対応する格納領
域に格納することによって、図1に示す2値画像データにおけるランデータが作成される。なお、行インデクス「1」,「2」が付与されたそれぞれの行において取得された始端位置及び終端位置は、ランデータインデクス「3」,「4」,・・・が付与されたランデータの「B」及び「E」に対応する格納領域にそれぞれ格納される(図11(e)〜(h)参照)。
域に格納することによって、図1に示す2値画像データにおけるランデータが作成される。なお、行インデクス「1」,「2」が付与されたそれぞれの行において取得された始端位置及び終端位置は、ランデータインデクス「3」,「4」,・・・が付与されたランデータの「B」及び「E」に対応する格納領域にそれぞれ格納される(図11(e)〜(h)参照)。
以上説明したように、本発明の実施形態によれば、2値画像データをランレングス化する際に必要なランデータ(始端位置及び終端位置)の取得を適切にかつ高速に行うことができ、それによって、2値画像データのランレングス化を高速に行うことができる。このように、ラベリング処理の前段階の処理として行われるランレングス処理の高速化を図ることにより、撮像画像データなどから特徴量を算出するといった画像データ処理全体を高速化することができる。
図12は本発明の実施形態に係る画像データ処理装置の構成を示す図である。本発明の実施形態に係る画像データ処理装置10は、CCDカメラなどの撮像装置20からの撮像データを入力するI/O(入出力部)11、撮像装置20からの撮像データ、撮像データを2値化した2値画像データ、図11に示すランデータ格納領域などを記憶する大容量の記憶領域としてのRAM12、撮像データを2値化して2値画像データを作成する機能、2値画像データを用いて、始端識別用ビット及び終端識別用ビットを検出する処理、始端位置取得処理及び終端位置取得処理、取得された始端位置及び終端位置の格納処理など各種の処理を行う機能を有する演算処理装置13、演算処理装置13が各種の処理を行う際のプログラムを格納するROM14などを有している。なお、本発明の画像データ処理装置10は、パーソナルコンピュータ(PCという)を用いることで実現することができる。
本発明の画像データ処理装置10が行う始端識別用ビット及び終端識別用ビットを検出する処理、始端位置取得処理及び終端位置取得処理、取得された始端位置及び終端位置の格納処理などについては、図1〜図11により詳細に説明したので、その説明は省略する。
なお、本発明は前述の実施形態に限られるものではなく、本発明の要旨を逸脱しない範囲で種々変形実施可能となるものである。例えば、前述の実施形態においては、始端識別用ビットを検出する処理として、ビット列Aとビット列Bとの排他的論理和演算を行い、その排他的論理和演算結果とビット列Aとの論理積を求めることによって始端識別用ビットを検出するようにしたが、これに限られるものではなく、ビット列Bの否定演算を行い、その否定演算結果とビット列Aとの論理積演算を行うことによって始端識別用ビットを検出するようにしてもよい。これは、終端識別用ビットを求める場合にも同様のことが言える。
また、前述の実施形態においては、‘1’の連続をランとした場合について説明したが、‘0’の連続をランとした場合であっても、異なる論理演算を用いることにより、当該ランの始端識別用ビット及び終端識別用ビットを検出する処理を実施することができる。
また、前述の各実施形態において説明した画像データ処理を画像データ処理装置に実行させるためのプログラムとしての画像データ処理プログラムを作成することが可能であり、また、作成した画像データ処理プログラムを各種の記録媒体に記録させておくことも可能である。
したがって、本発明は、これら画像データ処理プログラムとその画像データ処理プログラムを記録した記録媒体をも含むものである。また、画像データ処理プログラムはネット
ワークから取得するようにしてもよい。
ワークから取得するようにしてもよい。
10・・・画像データ処理装置、11・・・I/O、12・・・RAM、13・・・演算処理装置、14・・・ROM、i・・・16ビットの処理単位データに付与されたインデクス、k・・・8ビットに付与されたインデクス、n・・・切出された2ビットに付与されたインデクス、p・・・2ビットの10進数
Claims (7)
- 2値画像データに存在するランの始端位置と終端位置とを取得する画像データ処理方法であって、
前記ランの始端に対応するビットを始端識別用ビットとしたとき、前記始端識別用ビットが他のビットと異なった値を有する始端識別用データを前記2値画像データから作成する第1ステップと、
前記ランの終端に対応するビットを終端識別用ビットとしたとき、当該終端識別用ビットが他のビットと異なった値を有する終端識別用データを前記2値画像データから作成する第2ステップと、
前記始端識別用データと前記終端識別用データとに基づいて、前記ランの始端位置と終端位置とを取得する第3ステップと、
を有することを特徴とする画像データ処理方法。 - 請求項1に記載の画像データ処理方法において、
前記第3ステップは、
前記第1ステップで生成された始端識別用データを分割して分割後の始端識別用データを生成し、生成した分割後の始端識別用データをさらに分割して分割後の始端識別用データを生成する処理を複数段階で行い、前記複数段階の各段階において生成された分割後の始端識別用データに前記始端識別用ビットが存在するか否かを判定し、前記始端識別用ビットが存在する場合のみを処理対象とし、
前記第2ステップで生成された終端識別用データを分割して分割後の終端識別用データを生成し、生成した分割後の始端識別用データをさらに分割して分割後の終端識別用データを生成する処理を複数段階で行い、前記複数段階の各段階において生成された分割後の終端識別用データに前記終端識別用ビットが存在するか否かを判定し、前記終端識別用ビットが存在する場合のみを処理対象として、
前記ランの始端位置と終端位置とを取得する処理を行うことを特徴とする画像データ処理方法。 - 請求項1又2に記載の画像データ処理方法において、
前記第1ステップは、前記2値画像データと当該2値画像データを処理の走査方向に1ビット分シフトした2値画像データとの対応する各ビットごとに論理演算を行い、前記論理演算は、前記ランを構成するビットのうち前記始端識別用ビットのみが当該始端識別用ビットの値を保持し、前記ランを構成するビットのうち前記始端識別用ビット以外のビットはその値が反転するような論理演算であり、
前記第2ステップは、前記2値画像データと当該2値画像データを処理の走査方向と逆方向に1ビット分シフトした2値画像データとの対応する各ビットごとに論理演算を行い、前記論理演算は、前記ランを構成するビットのうち前記終端識別用ビットのみが当該終端識別用ビットの値を保持し、前記ランを構成するビットのうち前記終端識別用ビット以外のビットはその値が反転するような論理演算であることを特徴とする画像データ処理方法。 - 請求項3に記載の画像データ処理方法において、
前記論理演算は、前記ランが‘0’又は‘1’で表される2値のうちの‘1’の連続であるとした場合、前記第1ステップにおいては、前記2値画像データと当該2値画像データを処理の走査方向に1ビット分シフトした2値画像データとの排他的論理和演算を行い、当該排他的論理和演算によって得られた結果と前記処理単位の2値画像データとの論理積演算を行い、
前記第2ステップにおいては、前記2値画像データと当該2値画像データを処理の走査方向と逆方向に1ビット分シフトした2値画像データとの排他的論理和演算を行い、当該
排他的論理和演算によって得られた結果と前記処理単位の2値画像データとの論理積演算を行うことを特徴とする画像データ処理方法。 - 請求項3に記載の画像データ処理方法において、
前記論理演算は、前記ランが‘0’又は‘1’で表される2値のうちの‘1’の連続であるとした場合、前記第1ステップにおいては、前記2値画像データを処理の走査方向に1ビット分シフトした2値画像データの否定論理演算を行い、当該否定論理演算によって得られた結果と前記2値画像データとの論理積演算を行い、
前記第2ステップにおいては、前記2値画像データを処理の走査方向と逆方向に1ビット分シフトした2値画像データの否定論理演算を行い、当該否定論理演算によって得られた結果と前記2値画像データとの論理積演算を行う、
ことを特徴とする画像データ処理方法。 - 2値画像データに存在するランの始端位置と終端位置とを取得する画像データ処理装置に、前記2値画像データに存在するランの始端位置と終端位置とを取得する処理を実行させる画像データ処理プログラムであって、
前記ランの始端に対応するビットを始端識別用ビットとしたとき、前記始端識別用ビットが他のビットと異なった値を有する始端識別用データを前記2値画像データから作成する第1ステップと、
前記ランの終端に対応するビットを終端識別用ビットとしたとき、当該終端識別用ビットが他のビットと異なった値を有する終端識別用データを前記2値画像データから作成する第2ステップと、
前記始端識別用データと前記終端識別用データとに基づいて、前記ランの始端位置と終端位置とを取得する第3ステップと、
を有することを特徴とする画像データ処理プログラム。 - 2値画像データに存在するランの始端位置と終端位置とを取得する画像データ処理装置であって、
前記ランの始端に対応するビットを始端識別用ビットとしたとき、前記始端識別用ビットが他のビットと異なった値を有する始端識別用データを前記2値画像データから作成する機能と、前記ランの終端に対応するビットを終端識別用ビットとしたとき、当該終端識別用ビットが他のビットと異なった値を有する終端識別用データを前記2値画像データから作成する機能と、前記始端識別用データと前記終端識別用データとに基づいて、前記ランの始端位置と終端位置とを取得する機能とを有する演算処理装置を有することを特徴とする画像データ処理装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007059579A JP2008227659A (ja) | 2007-03-09 | 2007-03-09 | 画像データ処理方法、画像データ処理プログラム及び画像データ処理装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007059579A JP2008227659A (ja) | 2007-03-09 | 2007-03-09 | 画像データ処理方法、画像データ処理プログラム及び画像データ処理装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2008227659A true JP2008227659A (ja) | 2008-09-25 |
Family
ID=39845779
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007059579A Withdrawn JP2008227659A (ja) | 2007-03-09 | 2007-03-09 | 画像データ処理方法、画像データ処理プログラム及び画像データ処理装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2008227659A (ja) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH1173505A (ja) * | 1997-08-28 | 1999-03-16 | Canon Inc | 画像処理方法及び装置 |
JP2003250031A (ja) * | 2002-02-22 | 2003-09-05 | Ricoh Co Ltd | 画像処理装置および画像処理方法 |
-
2007
- 2007-03-09 JP JP2007059579A patent/JP2008227659A/ja not_active Withdrawn
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH1173505A (ja) * | 1997-08-28 | 1999-03-16 | Canon Inc | 画像処理方法及び装置 |
JP2003250031A (ja) * | 2002-02-22 | 2003-09-05 | Ricoh Co Ltd | 画像処理装置および画像処理方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4803493B2 (ja) | ラベルイメージの生成方法および画像処理システム | |
KR101235226B1 (ko) | 화상 처리 장치, 화상 처리 방법 및 기록 매체 | |
JPH1166325A (ja) | 物体の境界決定方法および装置並びに物体の境界決定プログラムを記録した記録媒体 | |
JP2007048000A (ja) | 指紋画像認識システム、指紋画像認識方法、及びプログラム | |
JP2008011484A (ja) | 文字図形列抽出装置,文字図形列抽出方法,その方法を実行するプログラム,そのプログラムを記録した記録媒体 | |
CN113643274B (zh) | 一种二维码候选区筛选的方法及装置 | |
CN112052907A (zh) | 基于图像边缘信息的目标检测方法、装置及存储介质 | |
JP2008011135A (ja) | 画像処理装置および画像処理プログラム | |
JP5379626B2 (ja) | スタック型バーコード情報読取方法及びスタック型バーコード情報読取装置 | |
JP4867903B2 (ja) | 画像処理プログラム及び画像処理装置 | |
JP2008227659A (ja) | 画像データ処理方法、画像データ処理プログラム及び画像データ処理装置 | |
CN116091297A (zh) | 一种图像连通域标记硬件实现算法 | |
KR101630078B1 (ko) | 데이터 연산 방법, 데이터 연산 장치 및 결함 검사 장치 | |
JP5988228B2 (ja) | 2次元コード、画像読取装置、画像読取方法、プログラム及び記憶媒体 | |
JP2007293829A (ja) | 画像処理方法及び画像処理装置 | |
WO2022074746A1 (ja) | 劣化検出装置、劣化検出方法、及びプログラム | |
JP7139369B2 (ja) | 検出結果分析装置、検出結果分析方法及び検出結果分析プログラム | |
JP6175904B2 (ja) | 照合対象抽出システム、照合対象抽出方法、照合対象抽出プログラム | |
JP5756947B2 (ja) | 2次元コード、画像読取装置、画像読取方法、プログラム及び記憶媒体 | |
JP2001099625A (ja) | パターン検査装置およびパターン検査方法 | |
JP2021157735A (ja) | 画像識別システム、画像識別装置、プログラムおよび学習済みモデル | |
JP4253265B2 (ja) | 影検出装置、影検出方法及び影検出プログラム、影検出装置を用いた画像処理装置、影検出方法を用いた画像処理方法及び影検出プログラムを用いた画像処理プログラム | |
JP2008186124A (ja) | 画像データ処理方法、画像データ処理プログラム及び画像データ処理装置 | |
US20150030250A1 (en) | System, method, and medium for image object and contour feature extraction | |
JP2021064215A (ja) | 表面性状検査装置及び表面性状検査方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20091002 |
|
A131 | Notification of reasons for refusal |
Effective date: 20110329 Free format text: JAPANESE INTERMEDIATE CODE: A131 |
|
A761 | Written withdrawal of application |
Effective date: 20110426 Free format text: JAPANESE INTERMEDIATE CODE: A761 |