JP4288756B2 - 情報コード概略存在領域推定方法、情報コード読取方法及び装置、記録媒体 - Google Patents
情報コード概略存在領域推定方法、情報コード読取方法及び装置、記録媒体 Download PDFInfo
- Publication number
- JP4288756B2 JP4288756B2 JP16106599A JP16106599A JP4288756B2 JP 4288756 B2 JP4288756 B2 JP 4288756B2 JP 16106599 A JP16106599 A JP 16106599A JP 16106599 A JP16106599 A JP 16106599A JP 4288756 B2 JP4288756 B2 JP 4288756B2
- Authority
- JP
- Japan
- Prior art keywords
- area
- information code
- image data
- dark
- inspection
- 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.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06K—GRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
- G06K7/00—Methods or arrangements for sensing record carriers, e.g. for reading patterns
- G06K7/10—Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
- G06K7/10544—Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation by scanning of the records by radiation in the optical part of the electromagnetic spectrum
- G06K7/10712—Fixed beam scanning
- G06K7/10722—Photodetector array or CCD scanning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06K—GRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
- G06K7/00—Methods or arrangements for sensing record carriers, e.g. for reading patterns
- G06K7/10—Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
- G06K7/14—Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation using light without selection of wavelength, e.g. sensing reflected white light
- G06K7/1404—Methods for optical code recognition
- G06K7/1439—Methods for optical code recognition including a method step for retrieval of the optical code
- G06K7/1443—Methods for optical code recognition including a method step for retrieval of the optical code locating of the code in an image
Landscapes
- Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Electromagnetism (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Toxicology (AREA)
- Artificial Intelligence (AREA)
- Computer Vision & Pattern Recognition (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Image Analysis (AREA)
Description
【発明の属する技術分野】
本発明は、バーコードや2次元コードなどの情報コードを読み取る際、2次元画像検出手段にて検出された2次元的な画像データを一時的に記憶した画像データメモリ上において、情報コードの概略的な存在領域を推定する方法などに関する。
【0002】
【従来の技術】
従来より、バーコードや2次元コードを2次元画像検出手段にて2次元的な画像データとして検出し、その画像データを一時的に記憶した画像データメモリを走査してコード読み取りを行う手法が考えられている。この場合の画像データの総量は非常に多い(例えば横640画素×縦480画素=307200画素)ため、まず画像領域内のどの部分に情報コードが存在するかを短時間で見い出すことが重要である。
【0003】
例えば特開平10−198754号公報においては、2次元CCDセンサから出力される全走査線信号の内、所定間隔で設定された走査線の代表である検査線を設定し、その検査線に沿って画像データを走査することで、画像データメモリ上でのバーコードの位置を早く見つけるようにしている。つまり、走査線単位で逐次画像データを走査すると時間がかかるが、実際に画像データメモリ上において読取対象のコードが存在している領域は一部であるため、走査線群から抜粋した検査線単位で画像データを走査することで早期にコードの存在を検出できるようになる。
【0004】
【発明が解決しようとする課題】
しかしながら、このように検査線を設定する手法の場合には、画像領域中のどの位置にコードが存在するか判らないため、画像領域全体を検査できるように複数本の検査線を設定する必要はある。そして、この検査線は、例えば画像領域横方向であればその横方向長さと同じだけの長さの検査線とされていた。もちろん、画像領域縦方向に設定する場合も同様に、縦方向長さと同じだけの長さの検査線とされていた。
【0005】
このような検査線を用いる手法も有効ではあるが、例えば情報コードの周囲に枠線や文字などの記載があると、情報コードとの判別が必要となる状況が頻繁に発生し、1本の検査線に沿って検査するのに要する時間が増大する。その結果、情報コードの解読に成功したとしても、解読までに要する時間が長く(レスポンスが悪く)なり、作業性の低下を招来してしまう。
【0006】
そこで、本発明は、検出された2次元的な画像データを一時的に記憶した画像データメモリ上において情報コードの概略的な存在領域を推定することにより、その推定された概略的な存在領域に基づいて、その後に情報コードの正確な位置を検出してデータ解読をする処理まで含めたコード読取処理に要する時間を短縮させることを目的とする。
【0007】
【課題を解決するための手段及び発明の効果】
上記目的を達成するためになされた請求項1記載の情報コード概略存在領域推定方法は、2次元画像検出手段にて検出した情報コード(バーコードや2次元コードなど)を含む1画像領域分の画像データを画像データメモリに一時的に記憶しておき、この画像データ中から情報コードの概略存在領域を推定する。この推定方法の内容は後述するが、概略存在領域としては、情報コードよりも大きく、情報コードの全てが含まれる領域として推定されることもあるし、あるいは情報コードの一部は含まれないような概略存在領域として推定されることもある。
【0008】
なお、このように情報コードの概略存在領域を推定するのは、その後、推定された情報コードの概略存在領域内に検査線を設定し、その設定した検査線に沿って画像データを検査することで情報コードの正確な存在領域を検出し、その検出された存在領域内の画像データに基づいて、その中に含まれている情報コードを読み取ることを前提としている。したがって、このような情報コードの正確な位置検出及びコード読取という処理を行うための前処理という位置づけとなる。
【0009】
このような前提において請求項1記載の推定方法は、まず、画像データメモリ上における1画像領域を複数の検査区域に分割し、その分割された検査区域毎に、当該区域内に含まれる画像データに基づいて明暗の変化点の数を計数する。そして、その計数された明暗変化点数に基づいて、情報コードが存在する可能性の高い検査区域を抽出し、その抽出された検査区域を、画像データメモリ上における情報コードの概略的な存在領域として推定するのである。
【0010】
従来は、走査線に従って画像データメモリ領域内の画像データを1画素ごとに検査していく手法であったが、本発明方法は、複数画素を1まとめにした検査区域単位で概略的なコード存在領域を推定した後、その推定された領域内においてのみ従来通りの1画素毎の明暗パターンを検査するので、その検査範囲が小さくて済む。また、概略的なコード存在領域の推定にあっては、検査区域毎に計数した明暗変化点数の大小比較のみ、すなわち整数値の相対比較であるため、処理負荷は小さくて済む。したがって、概略的な存在領域を推定した後に情報コードの正確な位置を検出してデータ解読をする処理まで含めたコード読取処理に要する時間を短縮させることができる。
【0011】
なお、検査区域に関しては、特にその形状が限定されるものではないが、処理効率を考慮すると、請求項3に示すように設定することが好ましい。すなわち、画像領域を水平方向へ走査するための主走査線及び垂直方向へ走査するための副走査線とそれぞれ平行な線によって区画される矩形の区域を検査区域とするのである。2次元画像検出手段(例えばCCDエリアセンサ)においては主走査線及び副走査線方向にマトリックス状に画素が配列されているので、このように矩形領域に設定した方がデータが扱いやすい。
【0012】
また、情報コードが複数のセルによって構成される2次元コードであり、検査区域を矩形領域に設定する場合には、請求項4に示すように、検査区域を、読取対象とするセルが画像データメモリ上で取り得る最も小さいセルサイズよりも大きく設定することが好ましい。このように、情報コードが2次元コードの場合には、検査区域をセルサイズよりも大きくすることにより、明暗セルが隣接している状態を確実に検出できる。
つまり、逆に検査区域がセルサイズよりも小さいと、実際には2次元コードが存在している領域であるにも関わらず、明暗変化点が0という結果が生じてしまい、適切でないからである。もちろん、明セル同士あるいは暗セル同士が隣接している場合には、明暗変化点が存在しないこともあり得るが、少なくとも検査区域をセルサイズよりも大きくすれば、明暗セルが隣接している状態を確実に検出できる点で有効である。
【0013】
この請求項4の考え方に基づけば、請求項5に示すように、検査区域を、セルが画像データメモリ上で取り得る最小サイズの2倍よりも大きくすることが好ましい。この場合は、明セル同士あるいは暗セル同士が2つ隣接している場合でも明暗変化点を確実に検出できる。そして、明暗セルが交互に隣接している状態の場合には、明暗変化点がより多く検出されるため、2次元コードの存在領域であることを、より確実に推定できる。つまり、単なる汚れなどの場合には明暗変化点数がそう多くはならないが、明暗セルが交互に隣接する可能性が高いという2次元コード特有の技術的性質に基づけば、明暗変化点数が多いほど、存在の可能性が高くなる。
【0014】
また、請求項6に示すように、検査区域を、画像領域を水平方向へ走査するための各主走査線に対応する区域とすることも考えられる。画像領域は主走査線に沿って走査されていくため、このように各主走査線に対応する区域を検査区域とすれば、主走査線に沿った走査が終了する毎に検査区域の明暗変化点数がされるため、処理負担は軽減する。但し、この場合には、主走査線単位であるため、画像領域の副走査線方向における明暗変化点数の多い部分を抽出することは可能であるが、主走査線方向に見た場合には、どの部分に明暗変化点が多いかは判断できない。そこで、請求項7に示すように、上述した各主走査線に対応する区域をさらに所定数に分割して、検査区域としてもよい。このようにすれば、主走査線方向に見た場合に、どの部分に明暗変化点が多いかの判断もできるようになる。
【0015】
なお、検査区域のサイズに関しては、一般論として、次のようなことが言える。サイズが小さければ、推定した概略的なコード存在領域が実際のコード存在領域に近い形状として得られるが、検査区域数が多くなるので、推定のための処理負荷は相対的に大きい。但し、その後に実際のコード存在領域を検出(1画素毎に処理)する場合の処理負荷は小さくなる。
【0016】
反対に、サイズが大きければ、推定した概略的なコード存在領域が実際のコード存在領域に対して大きな形状として得られることとなる。つまり、検査区域のほんの一部にしかコードが存在していない場合であっても、その(相対的に大きな)検査区域も概略的なコード存在領域として扱ってしまうため、その後に実際のコード存在領域を検出(1画素毎に処理)する場合の処理負荷は大きくなる。但し、検査区域数が少なくなるので、推定のための処理負荷は相対的に小さい。
【0017】
このように、検査区域の大小によって、領域推定のための処理負荷とその後の領域検出のための処理負荷は相反する結果となるので、両者の効果の有効性を考慮して、適宜設定すればよい。
次に、計数された明暗変化点数に基づいてコードが存在する可能性の高い検査区域を抽出し、その抽出された検査区域を情報コードの概略的な存在領域として推定する際の手法について説明する。
【0018】
請求項8に示す手法は、抽出された検査区域同士が隣接している場合には、その隣接している検査区域群を、情報コードの概略的な存在領域として推定することを前提とし、その検査区域群が複数存在する場合の対処に関するものである。すなわち、この場合は、その少なくとも一部が画像領域中央の所定範囲内に存在する検査区域群を、情報コードの概略的な存在領域である可能性が高いとして推定する。
【0019】
さらに、請求項9に示す手法は、請求項6と同様に検査区域群が複数存在している場合であって、検査区域群中に含まれる検査区域数が多いほど、情報コードの概略的な存在領域である可能性が高いと推定する。画像領域内には情報コード以外の画像も入り込むことがある。そこで、まず、対象となる情報コードが画像領域の中央付近に存在する可能性が高いことに鑑み、請求項8に示すように、検査区域群の少なくとも一部が画像領域中央の所定範囲内に存在する検査区域群を、情報コードの概略的な存在領域である可能性が高いと推定する。これは、コード読取操作においては、画面のなるべく中央にコードが来るようにユーザが操作する可能性が高いことを考慮したものである。
【0020】
そして、画像領域中央の所定範囲内に存在する場合はもちろん、存在しない場合についても、請求項9に示すように検査区域群のサイズに着目し、サイズが大きいほどコード存在領域である可能性が高いとすることにより、情報コードの存在領域であると考えられる範囲を優先して取り扱うことができる。例えば図柄などで大きな面積を持つ部分は明暗変化点数としては少なくなるので、抽出される検査区域群が大きくなることはない。一般的には、情報コードに対応する検査区域群が最大になると思われる。したがって、検査区域群の少なくとも一部が画像領域中央の所定範囲内に含まれ、且つ検査区域群を構成する検査区域数が多いものが、最も情報コードの概略的な存在領域としての可能性が高いと推定される。
【0021】
ところで、検査区域に関しては、請求項1に示すように、1の上位検査区域が複数の下位検査区域に分割された階層構造を採用することも考えられる。もちろん2階層でも3階層でもよい。そして、次のような情報コードの概略存在領域の推定を行う。すなわち、まず、上位検査区域毎に当該区域内に含まれる明暗変化点数が所定の上位検査区域用閾値以上の区域を抽出する。
続いて、その抽出された区域同士が隣接して構成される上位検査区域群の周辺部に位置する上位検査区域について、当該上位検査区域内を構成する下位検査区域毎に当該区域内に含まれる明暗変化点数が所定の下位検査区域用閾値以上の区域と所定の下位検査区域用閾値未満の区域とを区別する。そして、抽出した上位検査区域群から、所定の下位検査区域用閾値未満として区別された下位検査区域を除外した領域を、画像データメモリ上における前記情報コードの概略的な存在領域として推定するのである。
【0022】
抽出された上位検査区域は、その区域内に情報コードが含まれる可能性が高いのであるが、情報コードの中央付近に該当する上位検査区域では、区域内の全部に情報コードが存在するが、情報コードの周辺部に該当する上位検査区域では、区域内の一部にしか情報コードが存在しない場合もある。そこで、抽出された上位検査区域同士が隣接して構成される上位検査区域群の周辺部に位置する上位検査区域については、小さな下位検査区域の単位で、所定の下位検査区域用閾値以上の区域と所定の下位検査区域用閾値未満の区域とを区別する。そして、下位検査区域用閾値未満として区別された下位検査区域を、抽出した上位検査区域群から除外すれば、その領域は、情報コードの実際の存在領域により近い概略的存在領域となる。
【0023】
このようにすれば、最初から小さな検査区域を設定して、各検査区域毎に判定していく場合に比べて、処理効率が向上する。一方、検査区域毎の明暗変化点数の計数に関しては、請求項2に示すような手法を採用することができる。つまり、2次元画像検出手段にて検出された画像データが画像データメモリに出力されて記憶される処理と並行して実行し、その計数された明暗変化点数と前記検査区域との対応関係をテーブル化して記憶しておく。そして、この記憶された変化点数に基づいて情報コードが存在する可能性の高い検査区域を抽出するのである。
【0024】
本推定方法は、その後に、情報コードを読み取る処理へ移行するための前処理として位置づけられるものであるため、2次元画像検出手段にて検出された画像データ自体も画像データメモリに記憶しておく必要がある。そこで、画像データメモリへ出力される過程と並行して画像データを取得し、明暗変化点のみをカウントする処理を行う。このようにすれば、1画像領域分の画像データを記憶してから、その記憶された画像データを走査して明暗変化点を検出するのに比べて、処理時間の短縮が実現される。これは、コード読取全体に要する時間の短縮にも寄与する。
【0025】
また、明暗変化点数の計数方法に関しては、請求項2に示す手法を採用してもよい。すなわち、現時点までに取り込んだ画像データの明暗度合いを示すデータの内、最も明るいデータ及び最も暗いデータを所定のメモリ領域に更新しながら記憶していく。それと共に、それら最も明るいデータ及び最も暗いデータの中間値を計算する。そして、新たに取り込むデータについてはその中間値と比較することで明暗の判定を行い、その明暗判定処理の結果、明暗が変化した数を計数するのである。
【0026】
2次元画像検出手段から出力される画素毎の画像データ(輝度データ)について、それまでに検出された最も明るい画像データと最も暗いデータの中間値を明暗判定の基準値としていく。例えば明るさを数値化した場合、数字が大きくなるほど明るくなる画像データを考え、1〜15まであるとする。最初15が入ってくると、最も明るい画像データと最も暗いデータは共に15であり、中間値も15となる。その後、15が続けて入ってきている間は変化なしであるが、例えば9が入ってくると、最も暗いデータが9に更新され、中間値は12となる。さらに、1が入ってくると、最も暗いデータが1に更新され、中間値は8となる。これが収束値となる。したがって、8を基準として明暗判定すればよい。
【0027】
なお、明暗判定の基本は中間値との比較である。具体的には、入力値≧中間値であれば明、入力値<中間値であれば暗とすることが考えられるが、明暗判定の確実性を増すため、請求項2に示すようにすることも考えられる。まず、次のような明下限値及び暗上限値を用いることを前提とする。すなわち、最も明るいデータから所定の余裕値だけ暗いデータを暗上下限値とし、最も暗いデータから所定の余裕値だけ明るいデータを明下限値とする。そして、明暗判定に際しては、新たに取り込むデータが中間値以上であり、且つ前記明下限値以上である場合には明であると判定し、一方、新たに取り込むデータが中間値よりも暗くて、且つ暗上限値以下である場合には暗であると判定するのである。なお、明下限値を定めるために用いる余裕値及び暗上限値を定めるために用いる余裕値については、それぞれ別々の値を設定してもよいが、両者を等しくしてもよい。
【0028】
例えば、明るさの度合いを1〜15で表した上述の画像データにおいて、明下限値及び暗上限値を定めるための余裕値をそれぞれ5とすると、中間値よりも小さい場合であっても、最も明るいデータよりも5以上小さくなければ暗としては認めないようにし、また、中間値以上であっても、最も暗いデータよりも5以上大きくなければ明として認めないのである。このようにすることで、例えば中間値が3のときに明るさの度合いが4の画像データが入ってきても、それは最も暗いデータよりも5以上大きくはないので「明データ」として認めないこととなり、実状にあった判定となる。
【0029】
なお、検査区域に属する操作線が複数存在する場合には、明暗変化点数の計数に当たっては、請求項10に示すような手法を採用できる。つまり、1つの走査線毎に明暗変化点数の計数を行うことを前提とし、検査区域毎に、その検査区域内の画像データに基づく明暗変化点数を一時的に記憶していくと共に、その検査区域に属する1の走査線に対する計数が終了した時点で前の走査線までに計数した明暗変化点数を累積記憶していく。そして、その検査区域に属する全走査線に対する計数が終了した時点での明暗変化点数の累積値を、その検査区域内の画像データに基づく明暗変化点数とする。一般的には、主走査線毎に処理するため、このような計数手法が採用されることとなる。
【0030】
また、以上説明した情報コード概略存在領域推定方法においては、情報コードが存在する可能性の高い検査区域を抽出するために明暗変化点数に基づいていたが、さらに、請求項11に示すように判定指標を用いても良い。すなわち、検査区域毎に含まれる画像データの明暗度合いを示すデータの平均値を求め、その求めた明暗度合いを示すデータの平均値も加味して、情報コードが存在する可能性の高い検査区域を抽出するのである。具体的には、例えば明暗度合いを示すデータの平均値に基づいて、情報コードの存在する可能性の高い検査区域を概略的に抽出しておき、その中から、計数された明暗変化点数に基づいて抽出したり、あるいは、明暗変化点数と画像データの明暗度合いを示すデータの平均値という2つの判定指標に基づいてそれぞれ抽出した領域の重なる部分を、最終的に抽出する、といった種々の用い方が考えられる。
【0031】
ところで、以上説明したのは情報コード概略存在領域推定方法であったが、上述したように、本推定方法は、その後に、情報コードを読み取る処理へ移行するための前処理として位置づけられるものである。そのため、請求項12に示すように、以上説明した方法で推定された情報コードの概略存在領域内に検査線を設定し、その設定した検査線に沿って画像データを検査することで情報コードの正確な存在領域を検出し、その検出された存在領域内の画像データに基づいて、その中に含まれている前記情報コードを読み取る2次元コード読取方法という概念で技術思想を捉えることもできる。
【0032】
また、この2次元コード読取方法を用いた2次元コード読取装置としては、例えば請求項13に示すような構成を採用することができる。すなわち、2次元画像検出手段と、2次元画像検出手段にて検出した情報コードを含む1画像領域分の画像データを一時的に記憶しておく画像データメモリと、画像データメモリ上における情報コードの概略的な存在領域を、請求項1〜11のいずれか記載の情報コード概略存在領域推定方法によって推定し、その推定された情報コードの概略存在領域内に検査線を設定し、その設定した検査線に沿って画像データを検査することで情報コードの正確な存在領域を検出する存在領域検出手段と、存在領域検出手段にて検出された存在領域内の画像データに基づいて、その中に含まれている情報コードを読み取る読取手段とを備える構成である。
【0033】
なお、請求項14,15に示すように、請求項1〜11のいずれか記載の情報コード概略存在領域推定方法、あるいは請求項12記載の情報コード読取方法を実行する機能は、例えば、デジタル回路やコンピュータシステム側で起動するプログラムとして備えられる。プログラムで実現する場合、例えば、FD、光磁気ディスク、CD−ROM、ハードディスク等の機械読み取り可能な記録媒体に記憶し、必要に応じてコンピュータシステムにロードして起動することにより用いることができる。この他、ROMやバックアップRAMを機械読み取り可能な記録媒体として前記プログラムを記憶しておき、このROMあるいはバックアップRAMをコンピュータシステムに組み込んで用いても良い。
【0034】
【発明の実施の形態】
以下に、本発明の好適な実施例を図面に基づいて説明する。尚、本発明の実施の形態は、下記の実施例に何ら限定されるものではなく、本発明の技術的範囲に属する限り種々の形態を採り得ることはいうまでもない。
【0035】
[第1実施例]
図1のブロック図に、実施例としての情報コード読取装置1の概略的な構成を示す。
情報コード読取装置1は、制御回路10と、照明発光ダイオード(照明LED)11と、CCDエリアセンサ12と、増幅回路13と、A/D変換回路14と、同期パルス出力回路16と、アドレス発生回路17と、画像メモリ20と、スイッチ群31と、液晶表示器32と、通信I/F回路33と、2値化回路50とを中心にして構成されている。
【0036】
制御回路10は、CPU、ROM、RAM、I/O等を備えたコンピュータシステムとして構成され、ROMに記憶されているプログラムに従って後述する読取処理等を実行し、情報コード読取装置1の各構成を制御している。
照明LED11は、読取対象の2次元コードに対して照明用の赤色光を照射するものである。
【0037】
CCDエリアセンサ12は、2次元的に配列された複数の受光素子であるCCDを有しており、外界を撮像してその2次元画像を水平方向の走査線信号として出力する。この走査線信号は増幅回路13によって増幅されてA/D変換回路14に出力される。
【0038】
増幅回路13は、制御回路10から入力したゲインコントロール電圧に対応する増幅率で、CCDエリアセンサ12から出力された走査線信号を増幅する。
A/D変換回路14は、増幅回路13にて増幅されたアナログの走査線信号をディジタル信号に変換して、画像メモリ20に出力する。CCDエリアセンサ12では繰り返し画像を検出するので、その検出が繰り返される度に、画像メモリ20内の画像データは更新される。
【0039】
同期パルス出力回路16は、CCDエリアセンサ12から出力される2次元画像データのパルスより十分に細かい同期パルスを出力する。アドレス発生回路17はこの同期パルスをカウントして、画像メモリ20に対するそれぞれのアドレスを発生させる。
【0040】
画像メモリ20は、画像データメモリ20aと、変化点数メモリ20bと、2次元画像メモリ20cとを備えている。上述したA/D変換回路14にてディジタル信号に変換された画像データは、画像メモリ20中の画像データメモリ20aに格納される。
【0041】
また、A/D変換回路14にてディジタル信号に変換された画像データは、2値化回路50にも出力される。この2値化回路50については後述する。
スイッチ群31は、利用者が読取処理の開始を指示するための読取スイッチや、テンキーあるいは各種ファンクションキーを備えており、情報入力のために用いられる。
【0042】
液晶表示器32は、読み込んだ2次元コードなどを表示するためなどに用いられる。
通信I/F回路33は、ホストコンピュータなどとの間で通信を行うものであり、例えば図示しない通信用発光素子を介してデータを外部装置に送信したり、図示しない通信用受光素子を介して外部装置からの信号(例えばシステムを動かすためのプログラムや、解読した情報コードのデータ送信を指示する命令等)を受信する。もちろん、ホストコンピュータと有線で接続する構成を採用してもよい。
【0043】
続いて、2値化回路50の詳細について、図2,3を参照して説明する。図2は2値化回路50を構成する要素について概略的な機能別にまとめたブロック図であり、図3は、さらに詳細な機能別にまとめたブロック図である。
図2に示すように、2値化回路50は、明比較器51と、暗比較器52と、明暗判定器53と、カウンタ54と、余裕値記憶ブロック55と、ブロックアドレス制御回路56とを備えている。そして、A/D変換回路14にてディジタル信号に変換されて出力された画像データは、明比較器51と、暗比較器52と、明暗判定器53とに入力する。明比較器51及び暗比較器52から出力されるデータは明暗判定器53に入力され、明暗判定器53からの出力データはカウンタ54及び画像メモリ20内の2次元画像メモリ20cへ入力される。また、カウンタ54からの出力、つまりカウント値は、画像メモリ20内の変化点数メモリ20bへ入力される。
【0044】
また、制御回路10からのリードライト制御信号は、明比較器51、暗比較器52、明暗判定器53、余裕値記憶ブロック55、ブロックアドレス制御回路56のそれぞれに入力している。一方、アドレス発生回路17からのアドレス制御信号は、ブロックアドレス制御回路56へ入力しており、そのブロックアドレス制御回路56からの制御信号は、画像メモリ20内の変化点数メモリ20bへ入力されている。なお、アドレス発生回路17からのアドレス制御信号は、画像メモリ20内の画像データメモリ20a及び2次元画像メモリ20cにも入力されている。
【0045】
以上は、2値化回路50の概略的な説明であったので、図3を参照してさらに詳しく説明する。なお、図3においては、図2に示した要素を構成するブロックであることを示すため、同じ数字の後に小文字の英字を付した。例えば明比較器51であれば、比較ブロック51aと、明データ記憶ブロック51bと、減算ブロック51cと、暗上限記憶ブロック51dとを備えるという具合である。それ以外の要素についても同様に示した。
【0046】
明比較器51の構成要素については説明したが、暗比較器52は、比較ブロック52aと、暗データ記憶ブロック52bと、加算ブロック52cと、明下限記憶ブロック52dとを備える。また、明暗判定器53は、除算ブロック53aと、中間値記憶ブロック53bと、明比較ブロック53cと、暗比較ブロック53dと、中間比較ブロック53eと、明比較ブロック53c、暗比較ブロック53d及び中間比較ブロック53eからの出力信号を入力して、所定の判定条件に基づく明暗判定を行う明暗判定ブロック53fと、直前値記憶回路53gと、比較ブロック53hとを備えている。なお、カウンタ54及び余裕値記憶ブロック55は図2に示したものと同じである。また、ブロックアドレス制御回路56は、主走査区分設定ブロック56aと、副走査区分設定ブロック56bと、区域制御ブロック56cとを備えている。
【0047】
続いて、これらの要素間の信号のやりとりについて説明する。まず、図2の明比較器51に属する構成に関して説明する。
A/D変換回路14(図2参照)から出力された(A/D変換後の)画像データは、比較ブロック51a及び明データ記憶ブロック51bに入力する。比較ブロック51aには明データ記憶ブロック51bからの出力信号も入力しており、すなわち比較ブロック51aでは、順次入力される画像データの明るさを示すデータを従前に入力されたデータと比較し、より明るい方を明データ記憶ブロック51bへ出力する。したがって、明データ記憶ブロック51bには、それまでに入力された中で最も明るいデータ(以下、これを明データと称す。)が更新されながら記憶されることとなる。なお、本実施例においては、具体例として後述するように、明るさを1〜15で示しており、数字が大きくなるほど明るいことを前提として説明を進めることとなる。
【0048】
そして、減算ブロック51cでは、余裕値記憶ブロック55より出力された暗余裕値を、この明データ記憶ブロック51bより出力される明データから減算して暗上限記憶ブロック51dに出力する。したがって、暗上限記憶ブロック51dには、暗上限値として、明データから暗余裕値を減算した値が更新されながら記憶されることとなる。なお、この暗上限値とは、明暗判定の際に「暗」と判定する上限の値を指し、それまでの入力データの内で最も明るいとされる明データから所定の暗余裕値を減算した値よりも大きな値となる範囲ではとても暗とは認められない、という判定のために用いるものである。
【0049】
次に、図2の暗比較器52に属する構成に関して説明する。
A/D変換後の画像データは、比較ブロック52a及び暗データ記憶ブロック52bに入力する。比較ブロック52aには暗データ記憶ブロック52bからの出力信号も入力しており、すなわち比較ブロック52aでは、順次入力される画像データの明るさを示すデータを従前に入力されたデータと比較し、より暗い方を暗データ記憶ブロック52bへ出力する。したがって、暗データ記憶ブロック52bには、それまでに入力された中で最も暗いデータ(以下、これを暗データと称す。)が更新されながら記憶されることとなる。そして、加算ブロック52cでは、余裕値記憶ブロック55より出力された明余裕値を、この暗データ記憶ブロック52bから出力される暗データに加算して明下限記憶ブロック52dに出力する。したがって、明下限記憶ブロック52dには、明下限値として、暗データに明余裕値を加算した値が更新されながら記憶されることとなる。なお、この明下限値とは、明暗判定の際に「明」と判定する下限の値を指し、それまでの入力データの内で最も暗いとされる暗データに所定の明余裕値を加算した値よりも小さな値となる範囲ではとても明とは認められない、という判定のために用いるものである。
【0050】
次に、図2の明暗判定器53に属する構成に関して説明する。
除算ブロック53aには明データ記憶ブロック51bからの明データと暗データ記憶ブロック52bからの暗データが入力しており、それらが加算した後に2で除されて、明データと暗データの中間の値が算出されることとなる。つまり、その時点までに入力されている明るさを示すデータの内、最も明るいデータと最も暗いデータの中間の値が算出されて中間値記憶ブロック53bに記憶される。
【0051】
また、明比較ブロック53c、暗比較ブロック53d及び中間比較ブロック53eには、それぞれA/D変換後の画像データが入力している。そして、明比較ブロック53cでは、その入力された画像データの明るさを明下限記憶ブロック52dからの明下限値と比較し、その比較結果を明暗判定ブロック53fに出力する。一方、暗比較ブロック53dでは、その入力された画像データの明るさを暗上限記憶ブロック51dからの暗上限値と比較し、その比較結果を明暗判定ブロック53fに出力する。さらに、中間比較ブロック53eでは、その入力された画像データの明るさを中間値記憶ブロック53bからの中間値と比較し、その比較結果を明暗判定ブロック53fに出力する。
【0052】
この明暗判定ブロック53fにおいては、次のような明暗判定を行う。すなわち、明であるか否かの判定には、明比較ブロック53cにおける判定結果と中間比較ブロック53eからの比較結果を用いて、入力値≧中間値、且つ入力値≧明下限値であれば明と判断する。一方、暗であるか否かの判定には、暗比較ブロック53dにおける判定結果と中間比較ブロック53eからの比較結果を用いて、入力値<中間値、且つ入力値≦暗下限値であれば暗と判断する。明暗の判定ができた場合には、当然その判定結果を出力するが、上述した明暗の判定条件をいずれも満たさない場合には明暗判定ができないものとして、前回の判定結果を出力するようにされている。なお、例えば明であれば1、暗であれば0として出力する。
【0053】
この明暗判定ブロック53fでの判定結果は、図2に示す画像メモリ20内の2次元画像メモリ20cへ出力されると共に、直前値記憶回路53g及び比較ブロック53hにも出力される。そして、比較ブロック53hは、明暗判定ブロック53fからの出力値を、直前値記憶回路53gに記憶された直前値と比較し、変化している場合にのみカウンタ54へ出力する。つまり、明暗が変化するとカウンタ54へ出力されるのである。なお、カウンタ54は、比較ブロック53hからの出力に基づいて明暗が変化した数を計数し、その計数した明暗変化点数を、画像メモリ20中の変化点数メモリ20bへ出力する。
【0054】
次に、図2のブロックアドレス制御回路56に属する構成に関して説明する。
区域制御ブロック56cは、アドレス発生回路17(図1参照)からのアドレス制御信号に基づくと共に、主走査区分設定ブロック56a及び副走査区分設定ブロック56bからの設定に応じて区域制御を行う。詳しくは、設定された検査区域の主走査線上の区分点と副走査線上の区分点とから検査区域毎の変化点数の格納アドレスを制御し、カウンタ54を制御する。なお、区域制御ブロック56cからの区域制御信号は、画像メモリ20中の変化点数メモリ20bへも出力されている。
【0055】
また、主走査区分設定ブロック56a及び副走査区分設定ブロック56bは、制御回路10(図1参照)からのリードライト制御信号によって制御されている。なお、上述した暗上限記憶ブロック51d、明下限記憶ブロック52d、中間値記憶ブロック53b及び余裕値記憶ブロック55も、このリードライト制御信号によって制御されている。
【0056】
このような構成を備えた本実施例の情報コード読取装置1は、まず制御回路10の指示により、CCDエリアセンサ12にて2次元コードの2次元画像を検出する。CCDエリアセンサ12は、2次元画像を検出すると、アナログ信号にて2次元画像データを出力する。CCDエリアセンサ12から出力され増幅回路13によって増幅された走査線信号はA/D変換回路14によってディジタルデータに変換され、この1画像領域分のデータは画像メモリ20中の画像データメモリ20aに一時記憶される。
【0057】
具体的には、図4(a)に示すように、CCDエリアセンサ12の左上の画素を開始点の画素P1とし、左から右へ移動すると共に、上から下へ移動するような順番で最終的には右下の画素が終了点の画素Pnとなる。そして、図4(b)に示すように、その順番(P1〜Pn)で画像データメモリ20a内の所定のアドレスA(P1)〜A(Pn)に格納される。なお、以下の説明においては、実際には画像データメモリ20a内のデータを用いて処理するのであるが、視覚的に理解が容易となるように、図4(a)に対応するような2次元の画像領域を想定して進めることとする。
【0058】
本実施例においては、画像データメモリ20aに一時記憶された1画像領域分のデータの全てを対象としてコード読取処理を行うのではなく、情報コードの概略存在領域を推定した後、情報コード読取処理を行う。そして、この情報コードの概略存在領域の推定に際しては、画像データメモリ20a上における1画像領域を複数の検査区域に分割し、その分割された検査区域毎に、その区域内に含まれる画像データに基づいて明暗の変化点の数を計数して、その計数値に基づいて推定を行う。そこで、まず、この明暗変化点数の計数処理について、図を参照して説明する。
【0059】
最初に検査区域について説明する。図5(a)に示すように、画像領域を水平方向へ走査するための主走査線及び垂直方向へ走査するための副走査線とそれぞれ平行な線によって区画される矩形の区域を検査区域とする。これは、CCDエリアセンサ12においては主走査線及び副走査線方向にマトリックス状に画素が配列されているので、このように矩形領域に設定した方がデータが扱い易いからである。
【0060】
なお、図5(a)においては、画像領域を横G個×縦H個の検査区域に分割し、各検査区域が横a画素×縦b画素とされている。なお、図においてはG=8,H=10,a=b=8とされており、この想定では、画像領域のサイズが横80×縦64画素となってしまう。一般的に、640×480画素といったレベルの解像度のものが用いられるが、ここでは、図に基づく直感的理解を容易にするために、あえてこのような簡易モデルを用いることとする。
【0061】
そして、このような設定の検査区域において、1セルが4×4画素の2次元コードの一部を図5(b)に示すように捉えた場合を考える。明暗変化点は、各主走査線について計数するため、この場合は、8本の主走査線について、それぞれ、0,0,2,2,2,2,2,2となり、それらの累積値が12となる。したがって、この検査区域の明暗変化点数は12となる。このようにして、各検査区域の明暗変化点数を求めるのである。
【0062】
次に、明暗変化点数をカウントするまでの処理内容について、図3の構成説明に際して概略を説明したが、さらに補足説明する。CCDエリアセンサ12から出力される画素毎の画像データについて、それまでに検出された最も明るい画像データと最も暗いデータの中間値を明暗判定の基準値とする。例えば数字が大きくなるほど明るくなる画像データを「1〜15」の範囲で考える。最初15のデータが入ってくると、明データと暗データは共に15であり、中間値も15となる。その後、15が続けて入ってきている間は変化なしであるが、例えば9が入ってくると、暗データが9に更新され、中間値は12となる。さらに、1が入ってくると、暗データが1に更新され、中間値は8となる。これが収束値となる。したがって、その後は8を基準として明暗判定する。
【0063】
また、明暗判定の基本は中間値との比較であるため、入力値≧中間値であれば明、入力値<中間値であれば暗とするが、本実施例では、明暗判定の確実性を増すために不感帯を設けている。つまり、入力値≧中間値であっても、入力値が明下限値未満であれば明とは判定せず、同様に、入力値<中間値であっても、入力値が暗上限よりも大きければ暗とは判定しない。つまり、入力値≧中間値、且つ入力値≧明下限値の場合にのみ明とし、入力値<中間値、且つ入力値≦暗上限値の場合にのみ暗とする。これらの条件に合致しない場合には明暗判定はせず、上述したように前回の判定結果を援用する。
【0064】
そのため、具体的には次のようになる。なお、ここでは暗上限値は最大値−5であるとし、明下限値は最小値+5を想定し、中間値の計算においては小数点以下は切り上げている。また、明暗判定できない場合を×で示してある。
入力順番 ▲1▼ ▲2▼ ▲3▼ ▲4▼ ▲5▼ ▲6▼ ▲7▼ ▲8▼
入力値 15,15, 8, 1, 1, 1, 8,15
最大値(明) 15,15,15,15,15,15,15,15
最小値(暗) 15,15, 8, 1, 1, 1, 1, 1
中間値 15,15,12, 8, 8, 8, 8, 8
暗上限値 10,10,10,10,10,10,10,10
明下限値 20,20,13, 6, 6, 6, 6, 6
明暗判定 × × 暗 暗 暗 暗 明 明
この具体例においては、入力順番▲1▼,▲2▼における入力値が15であるので、最大値、最小値及び中間値が共に15になり、暗上限値は10、明下限値は20となる。入力値(15)≧中間値(15)であるため「明」の可能性があるが、入力値(15)は明下限値(20)以上ではないので、明とは判定されない。当然「暗」とは判定されないので、明暗判定不可能(×)とされる。
【0065】
そして、入力順番▲3▼において入力値が8となると、最小値も8となり、中間値が12となる。すると、入力値(8)<中間値(12)となり、且つ入力値(8)も暗上限値(10)以下となるので、暗と判定される。入力順番▲1▼,▲2▼では明暗判定不可能(×)であったものが▲3▼で暗となったので、この場合には明暗変化があったものと考える。
【0066】
続く▲4▼における入力値は1であるので、最小値も1となり、中間値が8となる。すると、入力値(1)<中間値(8)となり、且つ入力値(1)も暗上限値(10)以下であるので、暗と判定される。なお、この時点で最大値15と最小値1が出現しているので、暗上限値10及び明下限値6はこれ以降同じとなる。入力順番▲5▼,▲6▼でも同様である。
【0067】
そして、入力順番▲7▼において入力値が8となると、入力値(8)≧中間値(8)となり、且つ入力値(8)も明下限値(6)以上となるので、明と判定される。入力順番▲6▼では暗と判定されていたものが▲7▼で明となったので、この場合には明暗変化があったものと考える。したがって、ここで示した例でいえば、明暗変化点数が2となる。
なお、入力順番▲3▼では入力値が8であるが暗と判定されていたが、それは取り得る最小値(1)がその時点で出現していなかったからである。上述したように、入力順番▲4▼までにおいて最大値15と最小値1が出現して、暗上限値10及び明下限値6はこれ以降同じとなるため、今後は、入力値が8以上であれば明と判定され、8未満であれば暗と判定されることとなる。
【0068】
それではここで、各検査区域の明暗変化点数を求めるための処理を図6のフローチャートを参照して説明する。
最初のステップS110では、変数g,hを共に初期値1に設定し、続くS120においては、J番目の走査線に沿ってI番目の画像データを検査して、変化点数を累積カウントする。
【0069】
続いて、検査した画像データの位置を示すIがa×gであるか否かを判定する(S130)。これは、主走査線に沿って横方向にg検査区域分だけ検査したか否かを判定する処理であり、Iがa×gとなっていなければ(S130:NO)、主走査線に沿ってg検査区域分を検査していないので、S120へ戻る。一方、Iがa×gとなれば、主走査線に沿ってg検査区域分だけ検査したこととなるので(S130:YES)、S140へ移行する。
【0070】
S140では、S120にて得た累積カウント値を(g,h)区域の明暗変化点数に加算して記憶する。そして、変数gをインクリメント(g=g+1)してから(S150)、変数gが検査区域の横方向の総数Gよりも大きいか否かを判定する(S160)。これは、1画像領域の横方向分だけ主走査線による検査をしたか否かを判定する処理であり、g>Gとなっていなければ(S160:NO)、S120へ戻る。一方、g>Gとなれば、1画像領域の横方向分だけ主走査線による検査をしたこととなるので(S160:YES)、S170へ移行する。
【0071】
S170では、変数hが検査区域の縦方向の総数Hに一致したか否かを判定する。これは、1画像領域の縦方向分だけ主走査線による検査をしたか否かを判定する処理であり、hとHが一致していなければ(S170:NO)、検査に用いている走査線が何番目のものであるかを示すJがb×hであるか否かを判定する(S180)。これは、主走査線に沿った検査を縦方向にh検査区域分行ったか否かを判定する処理であり、Jがb×hとなっていなければ、まだ主走査線に沿った検査を縦方向にh検査区域分行っていないので((S180:NO)、S120へ戻る。一方、Jがb×hとなれば、主走査線に沿った検査を縦方向にh検査区域分行ったこととなるので(S180:YES)、S190へ移行する。
【0072】
S190で変数hをインクリメント(h=h+1)してから、S120へ戻る。このような処理を繰り返し、S170にて肯定判断となった場合には、1画像領域の縦方向分だけ主走査線による検査をした、つまり1画像領域の全てについて検査したこととなるので、本処理を終了する。
【0073】
このような明暗変化点数の計数処理がなされると、各検査区域単位での明暗変化点数が得られる。その各検査区域における明暗変化点数の表の一例を図5(c)に示す。細い線や小さな点は画素単位で明暗が分かれるので、明暗の「変化」は与えない。また、図柄などの大きな面積を持つ場合は、明暗変化点の数としては少なくなる。したがって、明暗変化点数が多い部分に情報コードが存在する可能性が高いと考えられる。
【0074】
このような状況を踏まえ、各検査区域の明暗変化点数に基づいて、情報コードの概略存在領域を推定し、情報コードの読取を行う。この処理について、図7のフローチャートなどを参照して説明する。
図7の最初のステップS210では、各検査区域の変化点数を所定値と比較し、所定値以上の検査区域と所定値未満の検査区域の配列表を作成する。図8(a)には、その配列表の一例を示す。ここでは、理解を容易にするため、所定値を1として、明暗変化点数が1以上の検査区域と0の検査区域とに区別した(図8(a)では斜線の有無にて区別している)。なお、実際には、所定値が1であると、画像領域内のかなりの検査区域にて1以上となってしまうおそれがあるため、もう少し大きな値が好ましい。例えば、明暗変化点数の最大値と最小値の差分の3分の1を最小値に加えた値などが考えられる。例えば最大値が「18」、最小値が「0」であれば、その差分「18」の3分の1である「6」を最小値0に加えた値「6」を所定値とする、といった具合である。
【0075】
図7のフローチャートの説明に戻り、続くS220では、明暗変化点数が所定値以上の検査区域が主走査線方向に連続しているか、副走査線方向に連続している検査区域群を求め、各検査区域群に含まれる検査区域数を求める。そして、S230において、所定条件に合致する検査区域群から順に、コード記録領域の第1候補、……第N候補とする。
【0076】
本実施例では、所定条件として、まず第1に、検査区域群の少なくとも一部が画像領域中央の所定範囲(図8(b)参照)内に存在するか否かという条件にて候補順位の高低を判定する。そして第2に、検査区域群中に含まれる検査区域数が多いほど候補順位を高くする。したがって、検査区域群の少なくとも一部が所定範囲内に含まれ、且つ検査区域群を構成する検査区域数が多いものが、ここでいう第1候補となる。
【0077】
このように所定条件に基づいて候補順位を決定したのは次の理由からである。画像領域内には情報コード以外の画像も入り込むことがある。そこで、まず、対象となる情報コードが画像領域の中央付近に存在する可能性が高いことに鑑み、検査区域群の少なくとも一部が画像領域中央の所定範囲内に存在する検査区域群を、情報コードの概略的な存在領域である可能性が高いと推定することとした。これは、コード読取操作においては、画面のなるべく中央にコードが来るようにユーザが操作する可能性が高いことを考慮したものである。
【0078】
そして、画像領域中央の所定範囲内に存在する場合はもちろん、存在しない場合についても、検査区域群のサイズに着目し、サイズが大きいほどコード存在領域である可能性が高いとすることにより、情報コードの存在領域であると考えられる範囲を優先して取り扱うことができる。例えば図柄などで大きな面積を持つ部分は明暗変化点数としては少なくなるので、抽出される検査区域群が大きくなることはない。一般的には、情報コードに対応する検査区域群が最大になると思われる。したがって、このような所定条件が、情報コードの概略的な存在領域としての可能性の高さを反映するものとして適切である。
【0079】
図7に戻り、S240にて変数mを初期値1に設定した後、第m候補の検査区域群を詳細に検査してコードの解読を行う(S250)。このS250におけるコード解読処理は、大きく分けると、コード領域検出処理とコード読取処理の2つになる。それらについて説明する。
【0080】
ここでは、図8(c)に示すように、情報コードとして矩形外周の隣接する2辺に実線パターンを有する2次元コード101が存在していると仮定する。この2次元コード101の場合には、一般的に、主走査線に平行な検査線を設定して検査していき、暗パターンを検出した場合には、その暗パターンを辿ることによってL字パターンの有無を検査する。つまり、図8(c)で言えば、2次元コード101の外周の隣接する2辺に存在する実線パターンL1,L2の有無を検出するのである。具体的には、検査線によって実線パターンL1が検出された明暗変化点を基準とし、その明暗の境界線に沿って境界線の長さ、この場合であれば暗パターンの長さを調べる。そして、このように2次元コード101の1辺に相当する暗パターン(この場合には実線パターンL1)の存在が確認された場合には、その暗パターンの端部から折れ曲がって同様に暗部の長さを調べる。2次元コード101の他の1辺に相当する暗パターン(この場合には実線パターンL2)の存在を確認できれば、これにより「L字パターン」があることが判る。
【0081】
このように検査線にて実線パターンL1,L2を検出する際、図8(c)からも判るように、設定する検査線が検査区域群内においてのみ設定されている。つまり、画像領域全体に検査線が設定されるのではなく、検査区域群内においてのみ設定されるため、検査の無駄(つまり実線パターンを検出できない処理)が飛躍的に減少する。
【0082】
このようにしてL字パターンが検出できれば、2次元コード101が存在する領域(コード領域)を計算する。この場合はL字パターンが正方形の2辺であることから、容易にコード領域を計算することができる。
そして、コード領域が計算できれば、その計算されたコード領域内の明暗パターンを解読し、記録されている情報を解読(デコード)する。
【0083】
S250にてコードの解読ができた後は、正常に解読できたか否かを判定する(S260)。そして、正常に解読できた場合には(S260:YES)、画像メモリ20内の図示しない出力データエリアに解読データをセットし(S270)、本処理を終了する。
【0084】
一方、正常に解読できない場合には(S260:NO)、変数mをインクリメント(m=m+1)してから(S280)、変数mが検査区域群の最大候補数Nよりも大きいか否かを判定する(S290)。そして、m≦Nであれば(S290:NO)、S250へ戻り、m>Nであれば(S290:YES)、S300へ移行して解読失敗フラグをセットしてから、本処理を終了する。
【0085】
なお、図6,7に示した処理内容と特許請求の範囲に記載した用語との対応を簡単に説明しておく。図6の処理及び図7中のS210〜S230の処理の実行が、情報コード概略存在領域推定方法としての処理の実行に相当する。そして、図7中のS240〜S300の処理を加えることによって、情報コード読取方法としての処理の実行に相当する。
【0086】
このように、本第1実施例においては、情報コードの概略存在領域の推定に際して、画像データメモリ上における1画像領域を分割した複数の検査区域毎に、その区域内に含まれる画像データに基づいて明暗の変化点の数を計数し、その計数された明暗変化点数に基づいて、情報コードが存在する可能性の高い検査区域を抽出し、その抽出された検査区域を、画像データメモリ上における情報コードの概略的な存在領域として推定する。
【0087】
従来は、走査線に従って画像データメモリ領域内の画像データを1画素ごとに検査していく手法であったが、本実施例の場合には、複数画素を1まとめにした検査区域単位で概略的なコード存在領域を推定した後、その推定された領域内においてのみ従来通りの1画素毎の明暗パターンを検査するので、その検査範囲が小さくて済む。また、概略的なコード存在領域の推定にあっては、検査区域毎に計数した明暗変化点数の大小比較のみ、すなわち整数値の相対比較であるため、処理負荷は小さくて済む。したがって、概略的な存在領域を推定した後に情報コードの正確な位置を検出してデータ解読をする処理まで含めたコード読取処理に要する時間を短縮させることができる。
【0088】
また、検査区域毎の明暗変化点数の計数に関しては、A/D変換回路14から画像データメモリ20aに出力されて記憶される処理と並行して実行している。情報コードを読み取る処理のためには、画像データメモリ20aへの記憶は必要であるため、この過程と並行して明暗変化点の計数処理を行えば、1画像領域分の画像データを記憶してから、その記憶された画像データを走査して明暗変化点を検出するのに比べて、処理時間の短縮が実現される。これは、コード読取全体に要する時間の短縮にも寄与する。
【0089】
なお、本第1実施例においては、理解を容易にするため、図5に示すように、1の検査区域を横a画素×縦b画素で構成し、図示する際には、1セルのサイズが4×4画素の場合に、検査区域を8×8画素で示した。この場合の検査区域のサイズに関しては種々の設定が考えられるが、基本的には、読取対象の情報コードにおける発現頻度が高いセルサイズとの兼ね合いで決定することが好ましい。つまり、細かく区画しすぎると、その区域内に含まれる変化点数が少なすぎて検出の信頼性が低下するし、逆に大きすぎると、特にコード周辺部において余分なデータが含まれて好ましくない状況も生じ易くなる。したがって、例えば、発現頻度が高いセルサイズが5×5画素の場合に、検査区域を16×16画素〜32×32画素程度にすることは、適当な設定であると考えられる。
【0090】
[第2実施例]
本第2実施例の場合にも、上述した図1〜図3の情報コード読取装置1の概略構成はそのまま適用できるので、説明は繰り返さない。
上述した第1実施例においては、図5(a)に示すように、画像領域を横G個×縦H個の検査区域に分割し、各検査区域を横a画素×縦b画素で構成したが、本第2実施例においては、検査区域を階層的に設定した。つまり、図9に示すように、画像領域を横G個×縦H個の大検査区域に分割し(図9(a)参照)、さらに、その各大検査区域を横E個×縦F個の小検査区域に分割し(図9(b)参照)、各小検査区域を横a画素×縦b画素で構成した(図9(c)参照)。
【0091】
この場合は2階層であるので、大検査区域が「上位検査区域」に相当し、小検査区域が「下位検査区域」に相当する。もちろん3階層以上でも構わないが、ここでは、理解を容易にするため図9に示すように2階層の場合で説明する。
明暗変化点の計数手法は基本的には第1実施例と同様に、主走査線に沿って画像データの明暗を判定し、その明暗が変化した場合に変化点数というカウントしていく。但し、本第2実施例の場合には、図9(d)に示すような小検査区域単位での明暗変化点数の表と、図9(e)に示すような大検査区域単位での明暗変化点数の表を作成する。
【0092】
それではここで、各小検査区域及び各大検査区域単位での明暗変化点数を求めるための処理を、図10,11のフローチャートを参照して説明する。なお、以下の説明においては、適宜、小検査区域を「小区域」、大検査区域を「大区域」、明暗変化点数を「変化点数」と略記する。
【0093】
最初のステップS310では、変数などの初期化を行う。具体的には、変数e,f,g,hを共に初期値1に設定すると共に、累積カウント数、全小区域の変化点数、全大区域の変化点数を共に0に設定する。
続くS320では、J番目の走査線に沿ってI番目の画像データを検査して、変化点数を累積カウントする。
【0094】
続いて、検査した画像データの位置を示すIがa×eであるか否かを判定する(S330)。これは、小区域の横方向の画素数がaであることから、主走査線に沿って横方向にe個の小区域分だけ検査したか否かを判定する処理であり、Iがa×eとなっていなければ(S330:NO)、主走査線に沿ってe小区域分を検査していないので、S320へ戻る。一方、Iがa×eとなれば、主走査線に沿ってe小区域分だけ検査したこととなるので(S330:YES)、S340へ移行する。
【0095】
S340では、S320にて得た累積カウント値を(e×g,f×h)小区域の変化点数に加算して記憶する。そして、累積カウントを0とする。
続いて、検査に用いている走査線が何番目のものであるかを示すJがb×fであるか否かを判定する(S360)。これは、主走査線に沿った検査を縦方向にf小区域分行ったか否かを判定する処理であり、Jがb×fとなっていなければ(S360:NO)、S320へ戻る。一方、Jがb×fとなれば、主走査線に沿った検査を縦方向にe小区域分行ったこととなるので(S360:YES)、S370へ移行する。
【0096】
S370では、S340にて得た(e×g,f×h)小区域の変化点数を、(g,f)大区域の変化点数に加算して記憶する。
その後は、図9のS380へ移行して、変数eが、1の大区域を構成する小区域の横方向の総数Eに一致したか否かを判定する(S380)。これは、1の大区域の横方向分だけ主走査線による検査をしたか否かを判定する処理であり、e=Eとなっていなければ(S380:NO)、S390で変数eをインクリメント(e=e+1)してから、S320へ戻る。
【0097】
一方、e=Eとなれば、1の大区域の横方向分だけ主走査線による検査をしたこととなるので(S380:YES)、S400へ移行して、変数eを初期値1にセットする。
続くS410では、変数gが大区域の横方向の総数Gに一致したか否かを判定する。これは、1画像領域の横方向分だけ主走査線による検査をしたか否かを判定する処理であり、g=Gとなっていなければ(S410:NO)、S420で変数gをインクリメント(g=g+1)してから、S320へ戻る。
【0098】
一方、g=Gとなれば、1画像領域の横方向分だけ主走査線による検査をしたこととなるので(S410:YES)、S430へ移行して、変数gを初期値1にセットする。
続くS440では、変数fが、1の大区域を構成する小区域の縦方向の総数Fに一致したか否かを判定する。これは、1の大区域の縦方向分だけ主走査線による検査をしたか否かを判定する処理であり、f=Fとなっていなければ(S440:NO)、S450で変数fをインクリメント(f=f+1)してから、S320へ戻る。
【0099】
一方、f=Fとなれば、1の大区域の縦方向分だけ主走査線による検査をしたこととなるので(S440:YES)、S460へ移行して、変数fを初期値1にセットする。
続くS470では、変数hが大区域の縦方向の総数Hに一致したか否かを判定する。これは、1画像領域の縦方向分だけ主走査線による検査をしたか否かを判定する処理であり、h=Hとなっていなければ(S470:NO)、S480で変数hをインクリメント(h=h+1)してから、S320へ戻る。
【0100】
一方、h=Hとなった場合には(S470:YES)、1画像領域の縦方向分だけ主走査線による検査をした、つまり1画像領域の全てについて検査したこととなるので、本処理を終了する。
このような変化点数の計数処理がなされると、図9(d)に示す小区域単位での変化点数の表と、図9(e)に示す大区域単位での変化点数の表が得られる。
【0101】
そして、これら2種類の変化点数表に基づいて、情報コードの概略存在領域を推定し、情報コードの読取を行う。この処理について、図10のフローチャートなどを参照して説明する。
図12の最初のステップS510では、各大区域の変化点数を所定値と比較し、所定値以上の大区域と所定値未満の大区域の配列表を作成する。上述した第1実施例における図8(a)の配列表例と同様に、図9(e)の表を基に、所定値以上の区域と所定値未満の区域とが区別できるような配置列表が作成される。なお、この場合の所定値についても、上述した第1実施例の場合と同様の観点から設定される。例えば、大区域単位で見た場合の変化点数の最大値と最小値の差分の3分の1を最小値に加えた値などである。
【0102】
続くS520では、明暗変化点数が所定値以上の大区域が主走査線方向に連続しているか、副走査線方向に連続している大区域群を求め、各大区域群に含まれる大区域数を求める。
そして、530において、所定条件に合致する大区域群から順に、コード記録領域の第1候補、……第N候補とする。この所定条件は、上述した第1実施例と同じである。すなわち、まず第1に、大区域群の少なくとも一部が画像領域中央の所定範囲(図8(b)参照)内に存在するか否かという条件にて候補順位の高低を判定する。そして第2に、大査区域群中に含まれる大区域数が多いほど候補順位を高くする。したがって、大区域群の少なくとも一部が所定範囲内に含まれ、且つ大区域群を構成する大区域数が多いものが、ここでいう第1候補となる。
【0103】
続くS540にて変数mを初期値1に設定した後、S550では、第m候補の大区域群の周辺部の大区域に属する小区域の変化点数を所定値と比較し、所定値以上の小区域と所定値未満の小区域の配列表を作成する。例えば図13に示すような大区域群が得られたとすると、この大区域群の「周辺部の大区域」とは、図13にB1〜B14で示す区域を指す。すなわち、この場合の大区域は矩形であるので、その少なくとも1辺が区域群外に面しているような大区域のみを意味することとなる。そして、図13においては大区域B1〜B3についてのみ示しているが、大区域に属する小区域(図13中では横4区域×縦4区域で示した)のそれぞれについて、所定値以上の小区域と所定値未満の小区域の配列表を作成するのである。なお、この場合の所定値についても、例えば、小区域単位で見た場合の変化点数の最大値と最小値の差分の3分の1を最小値に加えた値などが採用される。
【0104】
このようにして、第m大区域群の周辺部の大区域に属する小区域についての配列表が作成されると、続くS560においては、第m大区域群から、変化点数が所定値未満となった小区域を除外した領域を情報コードの概略存在領域と推定し、その推定領域を対象として詳細に検査し、情報コードの解読を行う。このコード解読処理については、上記第1実施例において図8(c)を参照して説明した内容と同様である。すなわち、推定領域内に検査線を設定して検査していき、暗パターンを検出した場合には、その暗パターンを辿ることによって、図13に示す2次元コード101の外周の隣接する2辺に存在する実線パターンL1,L2(L字パターン)の有無を検出する。
【0105】
このように検査線にて実線パターンL1,L2を検出する際、設定する検査線が推定領域内においてのみ設定される。本第2実施例においては、大区域単位で概略存在領域を推定した結果である大区域群から、さらに、その大区域群の周辺部の大区域に属する小区域の内で変化点数が所定値未満となった小区域を除外した領域を、情報コードの概略存在領域と推定している。したがって、より実際のコード存在領域に近い領域を推定できる。そのため、検査の無駄(つまり実線パターンを検出できない処理)が飛躍的に減少する。
【0106】
L字パターンが検出できれば、2次元コード101が存在する領域(コード領域)が計算される。そして、コード領域が計算できれば、その計算されたコード領域内の明暗パターンを解読し、記録されている情報を解読(デコード)する。
S560にてコード解読ができた後は、S570にて、正常に解読できたか否かを判定し、正常に解読できた場合には(S570:YES)、画像メモリ20内の図示しない出力データエリアに解読データをセットし(S580)、本処理を終了する。
【0107】
一方、正常に解読できない場合には(S570:NO)、変数mをインクリメント(m=m+1)してから(S590)、変数mが大区域群の最大候補数Nよりも大きいか否かを判定する(S600)。そして、m≦Nであれば(S600:NO)、S550へ戻り、m>Nであれば(S600:YES)、S610へ移行して解読失敗フラグをセットしてから、本処理を終了する。
【0108】
なお、図10〜12に示した処理内容と特許請求の範囲に記載した用語との対応を簡単に説明しておく。図10,11の処理及び図12中のS510〜S560の処理の実行が、情報コード概略存在領域推定方法としての処理の実行に相当する。なお、S560で実行される処理の内、「第m大区域群から、変化点数が所定値未満となった小区域を除外した領域を情報コードの概略存在領域と推定する」処理までが、情報コード概略存在領域推定方法としての処理の実行に相当する。そして、図12中のS560の処理中のコード解読処理及びS570〜S610の処理の実行が、情報コード読取方法としての処理の実行に相当する。
【0109】
このように、本第2実施例においては、まず、大区域毎に当該区域内に含まれる変化点数が所定値以上の区域を抽出し、その抽出された大区域同士が隣接して構成される大区域群の周辺部に位置する大区域について、その大区域内を構成する小区域毎にその小区域内に含まれる変化点数が所定値以上か所定値未満かを区別する。そして、抽出した大区域群から、所定値未満の小区域を除外した領域を、画像データメモリ上における情報コードの概略的な存在領域として推定する。
【0110】
抽出された大区域は、その区域内に情報コードが含まれる可能性が高いのであるが、情報コードの中央付近に該当する大区域では、区域内の全部に情報コードが存在するが、情報コードの周辺部に該当する大区域では、区域内の一部にしか情報コードが存在しない場合もある。そこで、抽出された大区域群の周辺部に位置する大区域については、小区域単位で、さらに変化点数による大小判定を行う。そして、(小区域用の)所定値未満とされた小区域を、抽出した大区域群から除外すれば、その領域は、情報コードの実際の存在領域により近い概略的存在領域となる。
【0111】
このようにすれば、最初から小さな検査区域を設定して、各検査区域毎に判定していく場合に比べて、処理効率が向上する。
なお、本第2実施例においては、図9に示すように、画像領域を横G個×縦H個の大検査区域に分割し、さらに、その各大検査区域を横E個×縦F個の小検査区域に分割し、各小検査区域を横a画素×縦b画素で構成した。この場合の区域のサイズに関しては、種々の設定が考えられるが、この場合も、上述した第1実施例の場合と同様の考慮をすることが適切である。つまり、細かく区画しすぎると、その区域内に含まれる変化点数が少なすぎて検出の信頼性が低下するし、逆に大きすぎると、特にコード周辺部において余分なデータが含まれて好ましくない状況も生じ易くなるため、読取対象の情報コードにおける発現頻度が高いセルサイズとの兼ね合いで決定する。したがって、例えば発現頻度が高いセルサイズが5×5画素の場合に、小区域を16×16画素、大区域を64×64画素(あるいは128×128画素)にすることは、適当な設定であると考えられる。
【0112】
[第3実施例]
本第3実施例の場合には、上述した図1〜図33にて説明した第1実施例の情報コード読取装置1の構成に、図14に示す平均値算出回路70を追加し、画像メモリ20内に平均値記憶メモリ20dを追加した点が異なるだけである。
【0113】
図14に示すように、平均値算出回路70は、積算ブロック71及び除算ブロック72を備えており、積算ブロック71には、A/D変換後の画像データ及びCCD読出クロックが入力している。なお、このCCD読出クロックは、図1における同期パルス発生回路16から入力される。
【0114】
積算ブロック71では、ディジタル値に変換された画像データをCCD読出クロックに同期して累積加算する。そして、除算ブロック72では、この積算ブロック71からの出力値を、1ブロックに含まれる画素数で割って平均値を算出する。この算出された平均値は、メモリ20内の平均値記憶メモリ20dへ出力される。
【0115】
図15は、この平均値を算出・記憶するための処理を示すフローチャートである。
最初のステップS710で積算値をクリアした後、CCD読出クロック毎に1画素分の画像データを積算する(S720)。そして、1ブロック分の画像データの積算が終了したか否かを判断し(S730)、1ブロック分の積算が終了していない場合には(S730:NO)、S720の処理を繰り返す。一方、1ブ1ブロック分の積算が終了した場合には(S730:YES)、その積算値を1ブロックの画素数で除算する(S740)。そして、当該ブロックの画像の平均値として当該ブロックに該当するアドレスに記憶する(S750)。その後、全ブロックの積算を終了したか否かを判断し(S760)。終了していなければ(S760:NO)、S710へ戻って積算値をクリアした後、S720〜S750の処理を繰り返す。
【0116】
上述した第1実施例においては、図7のS230にてコード記録領域の第1候補、……第N候補とする所定条件として、次の2条件を挙げていた。すなわち、検査区域群の少なくとも一部が画像領域中央の所定範囲(図8(b)参照)内に存在するか否かという条件と、検査区域群中に含まれる検査区域数に基づく条件であった。本第3実施例においては、これら2条件に、上述の明暗度合いを示すデータの平均値に基づく条件を加える。具体的には、平均値が大きいブロックほど候補順位を高くする。
【0117】
具体的には、例えば明暗度合いを示すデータの平均値に基づいて、情報コードの存在する可能性の高い検査区域を概略的に抽出しておき、その中から、計数された明暗変化点数に基づいて抽出したり、あるいは、明暗変化点数と画像データの明暗度合いを示すデータの平均値という2つの判定指標に基づいてそれぞれ抽出した領域の重なる部分を、最終的に抽出する、といった種々の用い方が考えられる。
【0118】
なお、第2実施例の場合であっても同様に、図12のS530において明暗度合いを示すデータの平均値も加味して判定を行えばよい。
[その他]
(1)上記各実施例では、検査区域(第2実施例における大区域及び小区域も含む)の形状を正方形としたが、長方形であっても同様に実現できる。また、画像領域の全てにおいて同じサイズの検査区域としたが、複数サイズの検査区域を混在させることを除くものではない。もちろん、サイズを統一した方が処理上の都合はよい。
【0119】
また、正方形や長方形などの矩形以外の形状に設定することも可能ではあるが、上述した処理上の都合の観点からは、やはり矩形が好ましい。
(2)上記各実施例では、明暗変化点として、明から暗への変化点と暗から明への変化点を共に明暗変化点としたが、これは、いずれかの一方のみに着目して処理してもよい。
【0120】
(3)上記各実施例では、図8(c)あるいは図13に示すように、対象のコードとして、隣接する2辺に実線パターンL1,L2を有する2次元コード101を例に挙げたが、それに限らず、例えば図16(a)に示すバーコードや、図16(b)〜(e)に示す2次元コードなど、種々のものが読取対象として採用可能である。
【0121】
また、当然であるが、図8(c)あるいは図13に示すように、隣接する2辺に実線パターンL1,L2を有する2次元コード101の場合であったため、検査線によってその実線パターンL1,L2を見つけるようにしたが、図12に示すそれ以外の情報コードの場合であれば、それぞれに合致したコード存在領域の検出手法を採用すればよい。例えば図16(c)に示す2次元コードの場合であれば、4つの頂点の内の3つに配置されている、いわゆる「切り出しシンボル」を見つければ、コード存在領域を計算することができる。
【図面の簡単な説明】
【図1】実施例としての情報コード読取装置のブロック図である。
【図2】2値化回路の概略構成を示すブロック図である。
【図3】2値化回路の詳細構成を示すブロック図である。
【図4】画像と画像データアドレスとの対応関係を示す説明図である。
【図5】第1実施例における検査区域などの説明図である。
【図6】第1実施例における明暗変化点の計数処理を示すフローチャートである。
【図7】第1実施例における明暗変化点に基づくコード概略存在領域の推定及びコード読取処理を示すフローチャートである。
【図8】第1実施例における明暗変化点に基づくコード概略存在領域の推定及びコード読取処理を示す説明図である。
【図9】第2実施例における検査区域などの説明図である。
【図10】第2実施例における明暗変化点の計数処理の前半を示すフローチャートである。
【図11】第2実施例における明暗変化点の計数処理の後半を示すフローチャートである。
【図12】第2実施例における明暗変化点に基づくコード概略存在領域の推定及びコード読取処理を示すフローチャートである。
【図13】第2実施例における明暗変化点に基づくコード概略存在領域の推定処理を示す説明図である。
【図14】第3実施例としての情報コード読取装置の内、第1実施例と異なる部分のみを示したブロック図である。
【図15】第3実施例における平均値算出処理を示すフローチャートである。
【図16】 情報コードとしての他の例を示しており、(a)はバーコード、(b)〜(e)は2次元コードの説明図である。
【符号の説明】
1…情報コード読取装置 10…制御回路
11…照明LED 12…CCDエリアセンサ
13…増幅回路 14…A/D変換回路
16…同期パルス出力回路 17…アドレス発生回路
20…画像メモリ 20a…画像データメモリ
20b…変化点数メモリ 20c…2次元画像メモリ
20d…平均値記憶メモリ 31…スイッチ群
32…液晶表示器 33…通信I/F回路
50…2値化回路 51…明比較器
51a…比較ブロック 51b…明データ記憶ブロック
51c…減算ブロック 51d…暗上限記憶ブロック
52…暗比較器 52a…比較ブロック
52b…暗データ記憶ブロック 52c…加算ブロック
52d…明下限記憶ブロック 53…明暗判定器
53a…除算ブロック 53b…中間値記憶ブロック
53c…明比較ブロック 53d…暗比較ブロック
53e…中間比較ブロック 53f…明暗判定ブロック
53g…直前値記憶回路 53h…比較ブロック
54…カウンタ 55…余裕値記憶ブロック
56…ブロックアドレス制御回路 56a…主走査区分設定ブロック
56b…副走査区分設定ブロック 56c…区域制御ブロック
70…平均値算出回路 71…積算ブロック
72…除算ブロック 101…2次元コード
L1,L2…実線パターン
Claims (15)
- 情報コードを2次元画像検出手段にて検出し、前記2次元画像検出手段にて検出した情報コードを含む1画像領域分の画像データを一時的に画像データメモリに記憶しておき、当該記憶された画像データに基づいて前記画像データメモリ上における前記情報コードの概略的な存在領域を推定する方法であって、
前記画像データメモリ上における1画像領域を、1の上位検査区域が複数の下位検査区域に分割された階層構造を有する複数の検査区域に分割し、その分割された検査区域毎に、当該区域内に含まれる画像データに基づいて明暗の変化点の数を計数し、
その計数された明暗変化点数に基づいて、前記上位検査区域毎に当該区域内に含まれる明暗変化点数が所定の上位検査区域用閾値以上の区域を抽出し、
その抽出された区域同士が隣接して構成される上位検査区域群の周辺部に位置する上位検査区域について、当該上位検査区域内を構成する下位検査区域毎に当該区域内に含まれる明暗変化点数が所定の下位検査区域用閾値以上の区域と所定の下位検査区域用閾値未満の区域とを区別し、
前記抽出した上位検査区域群から、前記所定の下位検査区域用閾値未満として区別された下位検査区域を除外した領域を、前記画像データメモリ上における前記情報コードの概略的な存在領域として推定すること、
を特徴とする情報コード概略存在領域推定方法。 - 情報コードを2次元画像検出手段にて検出し、前記2次元画像検出手段にて検出した情報コードを含む1画像領域分の画像データを一時的に画像データメモリに記憶しておき、当該記憶された画像データに基づいて前記画像データメモリ上における前記情報コードの概略的な存在領域を推定する方法であって、
前記画像データメモリ上における1画像領域を複数の検査区域に分割し、その分割された検査区域毎に、当該区域内に含まれる画像データに基づいて明暗の変化点の数を計数する処理を、前記2次元画像検出手段にて検出された画像データが画像データメモリに出力されて記憶される処理と並行して実行し、
また、この明暗変化点数の計数においては、
現時点までに取り込んだ画像データの明暗度合いを示すデータの内、最も明るいデータ及び最も暗いデータを所定のメモリ領域に更新しながら記憶していくと共に、それら最も明るいデータ及び最も暗いデータの中間値を計算し、新たに取り込むデータについてはその中間値と比較することで明暗の判定を行い、その明暗判定処理の結果、明暗が変化した数を計数し、
さらに、この明暗の判定に際しては、
前記最も明るいデータから所定の余裕値だけ暗いデータである暗上限値及び前記最も暗いデータから所定の余裕値だけ明るいデータである明下限値を用いることを前提とし、
前記新たに取り込むデータが前記中間値以上であり、且つ前記明下限値以上である場合には明であると判定し、一方、前記新たに取り込むデータが前記中間値よりも暗くて、且つ前記暗上限値以下である場合には暗であると判定し、
そして、前記明暗変化点数の計数おいて計数された明暗変化点数と前記検査区域との対応関係をテーブル化して記憶しておき、
その記憶された変化点数に基づいて前記情報コードが存在する可能性の高い検査区域を抽出し、その抽出された検査区域を、前記画像データメモリ上における前記情報コードの概略的な存在領域として推定すること、
を特徴とする情報コード概略存在領域推定方法。 - 請求項1又は2記載の情報コード概略存在領域推定方法において、
前記検査区域は、前記画像領域を水平方向へ走査するための主走査線及び垂直方向へ走査するための副走査線とそれぞれ平行な線によって区画される矩形の区域であること、
を特徴とする情報コード概略存在領域推定方法。 - 請求項3記載の情報コード概略存在領域推定方法において、
前記情報コードが複数のセルによって構成される2次元コードであり、
前記検査区域は、読取対象とする前記セルが前記画像データメモリ上で取り得る最小サイズよりも大きく設定されていること、
を特徴とする情報コード概略存在領域推定方法。 - 請求項4記載の情報コード概略存在領域推定方法において、
前記検査区域は、前記セルが前記画像データメモリ上で取り得る最小サイズの2倍よりも大きく設定されていること、
を特徴とする情報コード概略存在領域推定方法。 - 請求項1又は2記載の情報コード概略存在領域推定方法において、
前記検査区域は、前記画像領域を水平方向へ走査するための各主走査線に対応する区域であること、
を特徴とする情報コード概略存在領域推定方法。 - 請求項1又は2記載の情報コード概略存在領域推定方法において、
前記検査区域は、前記画像領域を水平方向へ走査するための各主走査線に対応する区域を、さらに所定数に分割した区域であること、
を特徴とする情報コード概略存在領域推定方法。 - 請求項1〜7のいずれか記載の情報コード概略存在領域推定方法において、
前記抽出された検査区域同士が隣接している場合には、その隣接している検査区域群を、前記情報コードの概略的な存在領域として推定することを前提とし、
前記検査区域群が複数存在する場合には、その少なくとも一部が前記画像領域中央の所定範囲内に存在する検査区域群を、前記情報コードの概略的な存在領域である可能性が高いと推定すること、
を特徴とする情報コード概略存在領域推定方法。 - 請求項8記載の情報コード概略存在領域推定方法において、
前記検査区域群中に含まれる検査区域数が多いほど、前記情報コードの概略的な存在領域である可能性が高いと推定すること、
を特徴とする情報コード概略存在領域推定方法。 - 請求項1〜9のいずれか記載の情報コード概略存在領域推定方法において、
前記検査区域に属する走査線が複数存在する場合には、
1つの走査線毎に前記明暗変化点数の計数を行うことを前提とし、前記検査区域毎に、当該検査区域内の画像データに基づく明暗変化点数を一時的に記憶していくと共に、当該検査区域に属する1の走査線に対する計数が終了した時点で前の走査線までに計数した明暗変化点数を累積記憶していき、当該検査区域に属する全走査線に対する計数が終了した時点での前記明暗変化点数の累積値を、当該検査区域内の画像データに基づく明暗変化点数とすること、
を特徴とする情報コード概略存在領域推定方法。 - 請求項1〜10のいずれか記載の情報コード概略存在領域推定方法において、
前記検査区域毎に含まれる画像データの明暗度合いを示すデータの平均値を求め、
前記情報コードが存在する可能性の高い検査区域を抽出する際には、前記計数された明暗変化点数に基づくと共に、前記求めた明暗度合いを示すデータの平均値も加味すること、
を特徴とする情報コード概略存在領域推定方法。 - 請求項1〜11のいずれか記載の情報コード概略存在領域推定方法によって推定された情報コードの概略存在領域内に検査線を設定し、その設定した検査線に沿って画像データを検査することで情報コードの正確な存在領域を検出し、その検出された存在領域内の画像データに基づいて、その中に含まれている前記情報コードを読み取ること、
を特徴とする情報コード読取方法。 - 2次元画像検出手段と、
該2次元画像検出手段にて検出した情報コードを含む1画像領域分の画像データを一時的に記憶しておく画像データメモリと、
該画像データメモリ上における前記情報コードの概略的な存在領域を、請求項1〜11のいずれか記載の情報コード概略存在領域推定方法によって推定し、その推定された情報コードの概略存在領域内に検査線を設定し、その設定した検査線に沿って画像データを検査することで情報コードの正確な存在領域を検出する存在領域検出手段と、
該存在領域検出手段にて検出された存在領域内の画像データに基づいて、その中に含まれている前記情報コードを読み取る読取手段と、
を備えることを特徴とする情報コード読取装置。 - 請求項1〜11のいずれか記載の情報コード概略存在領域推定方法が、コンピュータシステムにて実行するプログラムとして記録されたことを特徴とする記録媒体。
- 請求項12記載の情報コード読取方法が、コンピュータシステムにて実行するプログラムとして記録されたことを特徴とする記録媒体。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP16106599A JP4288756B2 (ja) | 1999-04-08 | 1999-06-08 | 情報コード概略存在領域推定方法、情報コード読取方法及び装置、記録媒体 |
US09/543,881 US6678412B1 (en) | 1999-04-08 | 2000-04-06 | Method for detecting a two-dimensional code existing area, method reading two-dimensional code, and a recording medium storing related programs |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP11-101381 | 1999-04-08 | ||
JP10138199 | 1999-04-08 | ||
JP16106599A JP4288756B2 (ja) | 1999-04-08 | 1999-06-08 | 情報コード概略存在領域推定方法、情報コード読取方法及び装置、記録媒体 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2000353210A JP2000353210A (ja) | 2000-12-19 |
JP4288756B2 true JP4288756B2 (ja) | 2009-07-01 |
Family
ID=26442266
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP16106599A Expired - Fee Related JP4288756B2 (ja) | 1999-04-08 | 1999-06-08 | 情報コード概略存在領域推定方法、情報コード読取方法及び装置、記録媒体 |
Country Status (2)
Country | Link |
---|---|
US (1) | US6678412B1 (ja) |
JP (1) | JP4288756B2 (ja) |
Families Citing this family (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7387253B1 (en) * | 1996-09-03 | 2008-06-17 | Hand Held Products, Inc. | Optical reader system comprising local host processor and optical reader |
US7304670B1 (en) * | 1997-03-28 | 2007-12-04 | Hand Held Products, Inc. | Method and apparatus for compensating for fixed pattern noise in an imaging system |
US7268924B2 (en) | 2001-01-22 | 2007-09-11 | Hand Held Products, Inc. | Optical reader having reduced parameter determination delay |
EP1354291B1 (en) | 2001-01-22 | 2006-08-02 | Hand Held Products, Inc. | Optical reader having partial frame operating mode |
US7203361B1 (en) | 2001-03-16 | 2007-04-10 | Hand Held Products, Inc. | Adaptive digitizer for optical reader |
US7331523B2 (en) | 2001-07-13 | 2008-02-19 | Hand Held Products, Inc. | Adaptive optical image reader |
US20040134988A1 (en) * | 2003-01-09 | 2004-07-15 | Hand Held Products, Inc. | Analog-to-digital converter with automatic range and sensitivity adjustment |
JP4257131B2 (ja) | 2003-02-21 | 2009-04-22 | 富士通株式会社 | バーコード読取装置およびバーコード読取方法 |
JP4058529B2 (ja) * | 2003-09-08 | 2008-03-12 | 株式会社デンソーウェーブ | 光学情報読取装置 |
US20060050961A1 (en) * | 2004-08-13 | 2006-03-09 | Mohanaraj Thiyagarajah | Method and system for locating and verifying a finder pattern in a two-dimensional machine-readable symbol |
US7676038B2 (en) * | 2005-03-08 | 2010-03-09 | Hewlett-Packard Development Company, L.P. | Secure printing method to thwart counterfeiting |
US7455013B2 (en) * | 2005-03-08 | 2008-11-25 | Hewlett-Packard Development Company, L.P. | Secure printing method to thwart counterfeiting |
KR100828539B1 (ko) * | 2005-09-20 | 2008-05-13 | 후지제롯쿠스 가부시끼가이샤 | 이차원 코드의 검출 방법, 검출 장치, 및 검출 프로그램을기억한 기억 매체 |
JP4911340B2 (ja) * | 2006-02-10 | 2012-04-04 | 富士ゼロックス株式会社 | 二次元コード検出システムおよび二次元コード検出プログラム |
JP4873312B2 (ja) * | 2007-01-19 | 2012-02-08 | 株式会社デンソーウェーブ | 光学情報読取装置 |
US7852519B2 (en) | 2007-02-05 | 2010-12-14 | Hand Held Products, Inc. | Dual-tasking decoder for improved symbol reading |
US8496177B2 (en) | 2007-06-28 | 2013-07-30 | Hand Held Products, Inc. | Bar code reading terminal with video capturing mode |
JP5136302B2 (ja) | 2008-03-27 | 2013-02-06 | 株式会社デンソーウェーブ | 二次元コード、二次元コード生成方法、二次元コードを表示させるコンピュータ読み取り可能なプログラム、二次元コードを利用した認証方法、及び二次元コードを利用した情報提供方法 |
JP5120156B2 (ja) | 2008-03-27 | 2013-01-16 | 株式会社デンソーウェーブ | 二次元コード |
JP5140820B2 (ja) * | 2008-03-31 | 2013-02-13 | 日本電産サンキョー株式会社 | シンボル情報読取装置及びシンボル情報読取方法 |
US8628015B2 (en) | 2008-10-31 | 2014-01-14 | Hand Held Products, Inc. | Indicia reading terminal including frame quality evaluation processing |
US8459556B2 (en) * | 2009-01-09 | 2013-06-11 | Datalogic ADC, Inc. | Prioritized virtual scan line processing |
US8587595B2 (en) | 2009-10-01 | 2013-11-19 | Hand Held Products, Inc. | Low power multi-core decoder system and method |
JP5251964B2 (ja) * | 2009-11-24 | 2013-07-31 | 株式会社デンソーウェーブ | 光学情報読み取り装置 |
JP6078399B2 (ja) * | 2013-03-29 | 2017-02-08 | 日本電産サンキョー株式会社 | シンボル情報読取装置、シンボル情報読取方法、およびプログラム |
JP6338836B2 (ja) * | 2013-09-20 | 2018-06-06 | 株式会社デンソーウェーブ | 情報コード読取装置 |
CN103761327A (zh) * | 2014-01-29 | 2014-04-30 | 百度在线网络技术(北京)有限公司 | 资源共享的方法、系统、终端以及服务器 |
CN105590077A (zh) * | 2014-10-24 | 2016-05-18 | 秀传医疗财团法人彰滨秀传纪念医院 | 红外线辨认定位系统及其读取方法 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5319181A (en) * | 1992-03-16 | 1994-06-07 | Symbol Technologies, Inc. | Method and apparatus for decoding two-dimensional bar code using CCD/CMD camera |
JP3233981B2 (ja) * | 1992-05-26 | 2001-12-04 | オリンパス光学工業株式会社 | シンボル情報読取装置 |
JP3187936B2 (ja) * | 1992-05-29 | 2001-07-16 | オリンパス光学工業株式会社 | バーコード読取装置 |
US5304787A (en) * | 1993-06-01 | 1994-04-19 | Metamedia Corporation | Locating 2-D bar codes |
US5726435A (en) * | 1994-03-14 | 1998-03-10 | Nippondenso Co., Ltd. | Optically readable two-dimensional code and method and apparatus using the same |
JP2867904B2 (ja) * | 1994-12-26 | 1999-03-10 | 株式会社デンソー | 2次元コード読取装置 |
US5764798A (en) | 1996-03-18 | 1998-06-09 | Intermec Corporation | Prioritized searching methods for finding a coded symbol in a digitized image |
JP3209108B2 (ja) * | 1996-08-23 | 2001-09-17 | 松下電器産業株式会社 | 2次元コード読み取り装置 |
JP3758266B2 (ja) | 1997-01-08 | 2006-03-22 | 株式会社デンソー | コード読取装置 |
-
1999
- 1999-06-08 JP JP16106599A patent/JP4288756B2/ja not_active Expired - Fee Related
-
2000
- 2000-04-06 US US09/543,881 patent/US6678412B1/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2000353210A (ja) | 2000-12-19 |
US6678412B1 (en) | 2004-01-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4288756B2 (ja) | 情報コード概略存在領域推定方法、情報コード読取方法及び装置、記録媒体 | |
US4757551A (en) | Character recognition method and system capable of recognizing slant characters | |
JP3458737B2 (ja) | 2次元コードの読取方法及び記録媒体 | |
US6264105B1 (en) | Bar code reader configured to read fine print barcode symbols | |
JP4339925B2 (ja) | 文書画像処理方法、文書画像処理装置、文書画像処理プログラムおよび記憶媒体 | |
JPH0687270B2 (ja) | 線分の方向検出装置及びその方法 | |
JP6630341B2 (ja) | シンボルの光学的検出方法 | |
JP3758266B2 (ja) | コード読取装置 | |
CN101256630A (zh) | 用于改善文档图像二值化性能的去噪声装置和方法 | |
JPH07120389B2 (ja) | 光学的文字読取装置 | |
JP2001043313A (ja) | 文字切出し方法 | |
JP3994571B2 (ja) | 情報コードの2値化方法、当該2値化方法を用いた光学情報読取装置、及び当該2値化方法を用いたコード品質判断補助装置 | |
JP3711725B2 (ja) | 画像認識装置 | |
JP2000251010A (ja) | 帳票読み取り方法 | |
JP3358133B2 (ja) | 画像処理装置 | |
JPH09134403A (ja) | 光学的情報読取装置 | |
JP4055290B2 (ja) | 2次元コード存在領域検出方法、2次元コード読取方法及び記録媒体 | |
JP2894111B2 (ja) | 光学式活字文字認識装置における認識結果の総合判定方式 | |
JPH08272980A (ja) | 閉領域抽出装置 | |
JP3971347B2 (ja) | 光学的情報読み取り方法 | |
JP2674475B2 (ja) | 文字読取装置 | |
JPS5872276A (ja) | 光学式文字読取方式 | |
JPH11161739A (ja) | 文字認識装置 | |
JP2646642B2 (ja) | 画像の内外領域判定システム | |
JP2001307097A (ja) | パターン検出装置及び方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20050620 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20070925 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20071016 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20071205 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20080826 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080903 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20090310 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20090323 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120410 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120410 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130410 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130410 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140410 Year of fee payment: 5 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |