JP2014191755A - スタック型バーコード読取装置及びスタック型バーコード読取方法 - Google Patents

スタック型バーコード読取装置及びスタック型バーコード読取方法 Download PDF

Info

Publication number
JP2014191755A
JP2014191755A JP2013068945A JP2013068945A JP2014191755A JP 2014191755 A JP2014191755 A JP 2014191755A JP 2013068945 A JP2013068945 A JP 2013068945A JP 2013068945 A JP2013068945 A JP 2013068945A JP 2014191755 A JP2014191755 A JP 2014191755A
Authority
JP
Japan
Prior art keywords
barcode
decoding
stack
sequence
bar
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.)
Granted
Application number
JP2013068945A
Other languages
English (en)
Other versions
JP6095194B2 (ja
Inventor
Hiroshi Nakamura
宏 中村
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nidec Instruments Corp
Original Assignee
Nidec Sankyo Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Nidec Sankyo Corp filed Critical Nidec Sankyo Corp
Priority to JP2013068945A priority Critical patent/JP6095194B2/ja
Priority to US14/221,533 priority patent/US9070033B2/en
Publication of JP2014191755A publication Critical patent/JP2014191755A/ja
Application granted granted Critical
Publication of JP6095194B2 publication Critical patent/JP6095194B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K7/00Methods or arrangements for sensing record carriers, e.g. for reading patterns
    • G06K7/10Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
    • G06K7/14Methods 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/1404Methods for optical code recognition
    • G06K7/1408Methods for optical code recognition the method being specifically adapted for the type of code
    • G06K7/14172D bar codes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K7/00Methods or arrangements for sensing record carriers, e.g. for reading patterns
    • G06K7/10Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
    • G06K7/14Methods 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/1404Methods for optical code recognition
    • G06K7/1439Methods for optical code recognition including a method step for retrieval of the optical code
    • G06K7/1456Methods for optical code recognition including a method step for retrieval of the optical code determining the orientation of the optical code with respect to the reader and correcting therefore
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K7/00Methods or arrangements for sensing record carriers, e.g. for reading patterns
    • G06K7/10Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
    • G06K7/14Methods 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/1404Methods for optical code recognition
    • G06K7/146Methods for optical code recognition the method including quality enhancement steps
    • G06K7/1473Methods for optical code recognition the method including quality enhancement steps error correction

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Electromagnetism (AREA)
  • General Health & Medical Sciences (AREA)
  • Toxicology (AREA)
  • Artificial Intelligence (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Character Input (AREA)

Abstract

【課題】データのばらつきを定量的に判断できるようにして、より精度の高い復号処理を行うことが可能なスタック型バーコード読取装置及びスタック型バーコード読取方法を提供する。
【解決手段】異なる手段によってバーとスペースとの境界を求める複数の閾値算出手段を備えた低レベル復号部13d1と、該低レベル復号部13d1で変換されたコードワードを用いてスタック型バーコード21をキャラクタ情報に復号する高レベル復号部13d2と、復号結果を選択する復号結果選択部13d3と、を有し、高レベル復号部13d2は誤り訂正処理を行う誤り訂正部17aを備え、復号結果選択部13d3は1コードワード内で誤り訂正された数をカウントして訂正数として記憶するカウンタ部18aと、該カウンタ部18aに記憶された訂正数を比較して訂正数の少ない復号結果を選択する選択部18bとを備えている。
【選択図】図1

Description

本発明は、スタック型バーコードを光学的に読み取るためのスタック型バーコード読取装置及びスタック型バーコード読取方法に関するものである。
従来から、各種バーコードが、商品,荷物等の管理などに広く使われている。その各種バーコードの中で、2次元バーコードと呼ばれるバーコードがある。この2次元バーコードは、縦横の2方向に情報を記録し、1方向だけに情報が書かれている1次元バーコードに対し、記憶容量を増大させたものである。
バーコードは、一般に黒など反射率の低いバーと、白など印字のない空白部分で反射率の高いスペースを交互に配置して、英数字などからなる所望の情報を記録している。バーコードをシールなどに印刷しバーコードラベルとして対象物に張り付ける形態や、対象物に直接印刷した形態で利用される。バーコードに対しレーザ光などの光線を走査し、反射光を受光部の受光素子で検出することによりバーコードのバー及びスペースの幅を測定する。得られたアナログ信号を復号することで、バーコードに符号化された情報を読み取る。
この二次元バーコードの中には、一次元バーコードを積み重ねることによって情報量を増加させる方式のものがあり、これは、スタック型バーコードと呼ばれる。その代表的なものに、PDF417と呼ばれる符合体系のスタック型バーコードがある。なお、この符号体系PDF417は、ISO/IEC15438として国際規格化されている。
こうしたスタック型バーコードを読み取る読取装置としては、例えば、特許文献1に開示されたシンボル情報読み取り装置がある。この特許文献1に開示されたシンボル情報読み取り装置は、二次元撮像装置でスタック型バーコードを撮像し、スタック型バーコードの品質状態を数値で表し、スタック型バーコードの劣化状態を把握できるようにしたものである。
特開2012−083835号公報
しかしながら、スタック型バーコードを撮像する撮像光学系の分解能が一定の水準に達していない場合には、スタック型バーコードの走査反射率波形が変動してしまう。このため、特許文献1に開示されたシンボル情報読み取り装置においても、走査反射率波形が変動することで、バー及びスペースとの境界を正確に検出することができないという問題がある。その結果、スタック型バーコードの読み取り精度が低下する恐れがある。
本発明は、このような事情に鑑み、より精度の高い復号処理を行うことが可能なスタック型バーコード読取装置及びスタック型バーコード読取方法を提供することを目的とする。
以上のような課題を解決するために、本発明は、以下のものを提供する。
(1)キャラクタ情報がバーコードに符号化されてバー及びスペースで表示されたスタック型バーコードを撮像する撮像部と、この撮像部が撮像した前記スタック型バーコードの画像データを記憶する画像メモリと、前記画像データに基づき、前記スタック型バーコードのバーコードをキャラクタ情報に復号する復号部を有するデータ処理部と、を備えたスタック型バーコード読取装置であって、前記復号部は、異なる手段によって前記バーと前記スペースとの境界を求める複数の閾値算出手段を備えた低レベル復号部と、該低レベル復号部で変換されたコードワードを用いて前記スタック型バーコードをキャラクタ情報に復号する高レベル復号部と、復号結果を選択する復号結果選択部と、を有し、前記高レベル復号部は、誤り訂正処理を行う誤り訂正部を備え、前記復号結果選択部は、1コードワード内で誤り訂正された数をカウントして訂正数として記憶するカウンタ部と、該カウンタ部に記憶された訂正数を比較して訂正数の少ない復号結果を選択する選択部と、を備えたことを特徴とするスタック型バーコード読取装置。
本発明によれば、復号部が異なる手段によってバーとスペースとの境界を求め、低レベル復号と高レベル復号を実行してスタック型バーコードをキャラクタ情報に復号し、復号結果選択部が誤り訂正の数が少ない復号結果を選択することができる。復号処理できたものでも、そのデータの信頼度には、ばらつきがあるので、本発明のスタック型バーコード読取装置は、そのばらつきを定量的に判断できるようにして、より精度の高い復号処理を行うことが可能である。
(2)キャラクタ情報がバーコードに符号化されてバー及びスペースで表示されたスタック型バーコードを撮像して得られた画像データに基づき、前記スタック型バーコードのバーコードをキャラクタ情報に復号する際に、前記画像データを構成する複数の画素の輝度値によって前記スタック型バーコードのバーとスペースとの線幅を計測するための閾値を算出する閾値算出工程と、前記画像データを構成する複数の画素の輝度値を示す走査反射率波形を微分してn次微分値(nは1又は2)を算出するn次微分値算出工程と、前記閾値及び前記n次微分値に基づき、前記スタック型バーコードのバー及びスペースの線幅を計測する線幅計測工程と、この線幅計測工程において計測された前記スタック型バーコードのバー及びスペースの線幅からTシーケンスを計測するTシーケンス計測工程と、このTシーケンス計測工程において計測されたTシーケンスに対応するコードワードを取得するコードワード取得工程と、前記コードワードを用いて前記スタック型バーコードをキャラクタ情報に復号する高レベル復号工程と、を有し、前記高レベル復号工程は、誤り訂正処理を行う誤り訂正工程を備え、前記復号結果選択工程は、1コードワード内で誤り訂正された数をカウントして訂正数として記憶するカウンタ工程と、該カウンタ工程で記憶された訂正数を比較して訂正数の少ない復号結果を選択する選択工程と、を備えたことを特徴とするスタック型バーコード読取方法。
本発明によれば、異なる手段(閾値算出工程とn次微分値算出工程)によってバーとスペースとの境界を求め、低レベル復号と高レベル復号を実行してスタック型バーコードをキャラクタ情報に復号し、誤り訂正の数が少ない復号結果を選択することができる。復号処理できたものでも、そのデータの信頼度には、ばらつきがあるので、本発明のスタック型バーコード読取方法は、そのばらつきを定量的に判断できるようにして、より精度の高い復号処理方法を行うことが可能である。
本発明によれば、復号部が異なる手段によってバーとスペースとの境界を求め、低レベル復号と高レベル復号を実行してスタック型バーコードをキャラクタ情報に復号し、復号結果選択部が誤り訂正の数が少ない復号結果を選択することができる。復号処理できたものでも、そのデータの信頼度には、ばらつきがあるので、本発明は、そのばらつきを定量的に判断できるようにして、より精度の高い復号処理を行うことが可能である。
また、本発明によれば、異なる手段(閾値算出工程とn次微分値算出工程)によってバーとスペースとの境界を求め、低レベル復号と高レベル復号を実行してスタック型バーコードをキャラクタ情報に復号し、誤り訂正の数が少ない復号結果を選択することができる。復号処理できたものでも、そのデータの信頼度には、ばらつきがあるので、本発明は、そのばらつきを定量的に判断できるようにして、より精度の高い復号処理方法を行うことが可能である。
本発明の実施の形態1に係るスタック型バーコード読取装置の電気的構成を示すブロック図である。 同実施の形態1に係るスタック型バーコード読取装置の低レベル復号部のブロック図である。 スタック型バーコードの一例を示す図である。 スタック型バーコードのうちスタートパターンにおけるビッグバーの部分およびその周辺を拡大した拡大図である。 本発明の実施の形態1に係るスタック型バーコード読取方法の流れを示すフローチャートである。 図5に示すフローチャートにおけるスタック型バーコード位置検出の流れを示すフローチャートである。 図5に示すフローチャートにおける構造解析(カラム解析およびロウ解析)の流れを示すフローチャートである。 補正画像データ(図3参照)に所定の処理を施して算出されたグラフである。 補正画像データの水平方向において各ラインの画素値を示す波形図である。 スタック型バーコードのロウの区切りを特定する様子を説明するための説明図である。 図5に示すフローチャートにおける低レベル復号の流れを示すフローチャートである。 スタック型バーコードのロウを構成する各画素の輝度値を示す走査反射率波形の一部を示す波形図である。 Xシーケンス計測処理の流れを示すフローチャートである。 スタック型バーコードのロウの輝度値を示す走査反射率波形の一部を取り出した図である。 n次微分方式を説明するための図である。 Tシーケンス計測処理の流れを示すフローチャートである。 Tシーケンス計測処理の流れを示すフローチャートである。 本発明の実施の形態1の変形例に係るスタック型バーコード読取方法において、スタック型バーコードのロウの輝度値を示す走査反射率波形の一部を取り出した図である。 スタック型バーコードの一例の全体構造を示すブロック線図である。 スタック型バーコードの一例の所与の安全保護水準に対する誤り訂正コードワードの数をリストした表である。 同実施の形態1に係るスタック型バーコード読取装置の高レベル復号部のブロック図である。 図5に示すフローチャートにおける高レベル復号の流れを示すフローチャートである。 同実施の形態1に係るスタック型バーコード読取装置の複合結果選択部のブロック図である。 復号結果選択の流れを示すフローチャートである。
[発明の実施の形態1]
以下、本発明を実施するための最良の形態について、図面を参照しながら説明する。
(スタック型バーコード読取装置)
図1は、本発明の実施の形態1に係るスタック型バーコード読取装置1の電気的構成を示すブロック図である。
図1において、スタック型バーコード読取装置1は、撮像装置11と、画像メモリ12と、データ処理装置13とを備えている。データ処理装置13は、バーコード検出部13aと、構造解析部13cと、復号部13dとを備えている。カード等の記録担体2には、二次元バーコードの一種であるスタック型バーコード21が印刷されている。バーコード検出部13aは、位置検出部13a1と、切り出し部13a2と、傾き補正部13a3とを有している。構造解析部13cは、スタート又はストップのパターン検出部13c1と、カラム解析部13c2と、ロウ解析部13c3とを有している。復号部13dは、低レベル復号部13d1及び高レベル復号部13d2、復号結果選択部(復号判定部)13d3とを有している。なお、スタック型バーコード21の一種であるPDF417では、低レベル復号処理及び高レベル復号処理の2つの復号処理が行なわれる。
撮像装置11は、密着型のイメージスキャナ11aと、カード搬送機構11bとを有している。イメージスキャナ11aは、記録担体2に印刷されたスタック型バーコード21に照射した光の反射光を受光し、光電変換によって電気信号に変換してスタック型バーコード21の画像データを得る。イメージスキャナ11aは、例えば、8ビット、256階調の多値画像データを得る。得られたスタック型バーコード21の画像データは、画像メモリ12に記憶される。
データ処理装置13は、スタック型バーコード21の画像データを画像メモリ12から取り込み、取り込んだ画像データに対して様々な処理を施す。
低レベル復号部13d1は、図2に示すように、Xシーケンス計測部14と、Tシーケンス計測部15と、コードワード変換部16とを備えている。
Xシーケンス計測部14は、閾値算出手段14a及び線幅計測手段14bを有している。閾値算出手段14aは、固定閾値算出手段14a1と、局所閾値算出手段14a2と、n次微分算出手段14a3とから構成されている。
Tシーケンス計測部15は、シーケンス変換手段15a、線幅正規化手段15b及び判定手段15cを有している。シーケンス変換手段15aは、Xシーケンスで算出した線幅配列をTシーケンス用の線幅配列に変換する機能を有している。また、判定手段15cは、後述するクラスタ番号と理論値とを比較する機能を有している。
コードワード変換部16は、テーブルメモリ16aを有しており、このテーブルメモリ16aには、Tシーケンスとコードワードとの対応関係を示すコードワード変換テーブルが格納されている。
(スタック型バーコード PDF417の構造)
図3は、スタック型バーコード21の一例(PDF417のラベル構造によるスタック型バーコード)を示す図である。図18は、スタック型バーコード21の一例(PDF417のラベル構造によるスタック型バーコード)の全体構造を示すブロック線図である。図19は、スタック型バーコード21の一例(PDF417のラベル構造によるスタック型バーコード)の所与の安全保護水準に対する誤り訂正コードワードの数をリストした表である。なお、本明細書では、スタック型バーコード21はPDF417を用いて説明する。
スタック型バーコード21は、水平方向(X方向)をカラム方向とし、垂直方向(Y方向)をロウ方向としている。ロウ方向とは、複数のロウが配列されている方向である。カラム方向とは、複数のカラムが配列されている方向であり、本実施形態では、5つに大きく分かれている。すなわち、図3に示すように、中央にデータカラムが配置され、また、データカラムの左右にはレフトロウインジケータ、ライトロウインジケータ、さらに、その左右にはスタートパターン、ストップパターンが配置されている。また、各カラムを構成するバーコードの構成は、黒い部分のバーと白い部分のスペースとで構成されており、スタートパターン、ストップパターンには、ビッグバーと呼ばれる幅の広いバーがそれぞれ形成されている。ビッグバーは、図3において、スタートパターン及びストップパターンともに、左側の黒い部分で幅の一番広いバーである。
さらに、図3に示すように、データカラム、レフトロウインジケータ、ライトロウインジケータは各々、ロウ方向に、6行(ロウ1〜ロウ6)から構成されている。各行(ロウ)を構成する3つのカラム(データカラム、レフトロウインジケータ、ライトロウインジケータ)にはそれぞれコードワードが1個ずつ含まれている。例えば、スタック型バーコード21のデータカラムには、1個(データカラム1カラム分)×6行より6個のコードワードが構成されている。なお、コードワードとは、ある数字、文字又はその他のシンボルを表す値、又はこれらに関連づけられた値を符号化するための基本となる単位である。
ここで、バーコードは、幅の異なる黒バーと白バーとを交互に並べて構成されているが、そのバーの最小幅を1モジュールと称する。また、バーコードの左右両側には、スタートコードとストップコードが設けられ、これらスタートコードとストップコードとの間に、複数のコードワードからなるデータコードが設けられている。スタートコードとストップコードを構成するバーの本数、およびモジュール数などはバーコードの種類によって異なり、1コードワードを構成するバーの本数、および1コードワードを構成するモジュール数などもバーコードの種類によって異なる。
また、ストップパターンを除く各カラムは、バー及びスペースが4個ずつ存在し、各線幅は、モジュール(単位)と称される最小幅の整数倍になっている。また、1コードワードの線幅は17モジュールであり、各々のバー、スペースの最大単位は6となっている。なお、ストップパターンは、バーが5個、スペースが4個ずつ存在し、1コードワードの線幅は18モジュールとなっている。
なお、図3に示すスタック型バーコード21では、1個のデータカラムであるが、これに限定されるものではなく、複数個のデータカラムであってもよい。また、スタック型バーコード21は、ロウ(行)の数及びカラム(データ列)の数は可変である。スタック型バーコード21では少なくとも3つのロウ(行)を有していなければならず、90行までを有することができる。同様に各ロウ(行)内のコードワードの数またはカラム(データ列)の数は3乃至30の範囲で変化できる。
スタック型バーコード21は、記号の各行はスタートパターンと、レフトロウインジケータ(コードワード)Liと、データカラム(コードワード)di又は誤り検出/訂正コードワードCiと、と、ストップパターンとからなる。ある行内の最小コードワード数は、レフトロウインジケータ(コードワード)Liと、少なくとも1つのデータコードワードと、ライトロウインジケータ(コードワード)Riとを含む3である。ライトロウインジケータ(コードワード)Ri及びレフトロウインジケータ(コードワード)Liはスタック型バーコード21の構造を同期させるのを援助する(詳細に関しては後述する)。なお、図18に示す左行標識はレフトロウインジケータ(コードワード)Liを示し、右行標識はライトロウインジケータ(コードワード)Riを示す。
スタート(開始)及びストップ(停止)パターンは、スタック型バーコード21の各ロウ(行)が何処で始まり、何処で終るのかを識別する。例えば、スタック型バーコード21としてのPDF417は独特なスタートパターン及びストップパターンを使用する。スタートパターン、即ち各ロウ(行)の左側は"81111113"の独特なパターン、即ちXシーケンスを有している。ストップパターン、即ち各ロウ(行)の右側は"711311121"の独特なXシーケンスを有している。
全ての記号は、その記号内のコードワードの合計数を指示する1つのコードワード(行0内の第1データコードワード)と、少なくとも2つの誤り検出コードワードC0及びC1とを含む。これら2つの誤り検出コードワードは一緒になって2コードワード長の検査合計を形成する。スタック型バーコード21(PDF417)は誤り訂正能力を持たせてデータを符号化することもできる。"安全保護水準"と呼ぶ誤り訂正能力の水準は0から8までの範囲で利用者が選択する。これは、例えば水準6においては、合計126のコードワードが失われる、又は駆逐されても記号全体を読み取って解号できることを意味する。
図19は、スタック型バーコード21(PDF417)の安全保護水準と誤り訂正コードワードCiの数との間の関係を示す表である。
失われた、または駆逐されたデータ("消去"として知られている)の訂正に加えて、スタック型バーコード21(PDF417)はコードワードの誤解号から回復することもできる。誤解号から回復するには2つのコードワードを必要とするから(1つは誤りの検出のために、そして1つはそれを訂正するために)、ある安全保護水準はそれが処理できる未解号コードワードの中の誤解号の数の半分を支援することができる。
以下、本発明の実施の形態1に係るスタック型バーコード読取方法について説明する。
(スタック型バーコード読取方法)
図5は、この実施の形態1に係るスタック型バーコード読取方法の流れを示すフローチャートである。図5に基づき、この実施の形態1に係るスタック型バーコード読取方法の流れを概説する。
データ処理装置13は、スタック型バーコード21を抽出する。画像メモリ12に記憶された画像データから、バーコード21の位置を検出し、画像データを切り出す。また、必要であれば、傾き補正処理が行われる。なお、本発明は、傾き補正処理が必須の構成ではない。
本実施形態では、位置検出処理(図5のステップS31)、切り出し処理(ステップS32)、傾き補正処理(ステップS33)が行われる。
まず、スタック型バーコード21の位置検出が行われる(ステップS31)。具体的には、図1に示すように、スタック型バーコード読取装置1のイメージスキャナ11aは、カード搬送機構11bに沿って所定位置まで移動した記録担体2のスタック型バーコード21を照射した光の反射光を光電変換によって電気信号に変換して画像データを得る。そして、得られたスタック型バーコード21の画像データは、画像メモリ12に記憶される。画像用メモリ12は2次元的に配列された有限個の画素で構成されている。
この実施の形態1では、撮像されたスタック型バーコード21の画像データは、各画素の(画素値である)輝度値を数値で表したものである。この輝度値は、8ビットの256階調の画像データとして、例えば0から255までの整数値として表される。なお、この画像メモリ12は、RAM、SDRAM、DDRSDRAM、RDRAMなど、画像データを記憶しうるものであれば如何なるものであってもよい。
その後、データ処理装置13の位置検出部13a1は、画像メモリ12に記憶された画像データを読み込み、その画像データ中のスタック型バーコード21の位置を検出する。
このようにして位置検出されたスタック型バーコード21は、データ処理装置13の切り出し部13a2において切り出され(ステップS32)、切り出された画像データが画像メモリ12に記憶される。
次に、データ処理装置13において、スタック型バーコード21の傾き補正が行われる(ステップS33)。より具体的には、データ処理装置13の傾き補正部13a3は、ステップS32において切り出された画像データ、すなわち、図4に示すように傾いた状態で撮像されたスタック型バーコード21の画像データを読み込み、その画像データを図3に示すような傾斜角度ゼロの補正画像データに変換する。
図4は、スタック型バーコード21のうち、スタートパターンにおけるビッグバーの部分及びその周辺を拡大した拡大図である。また、この図4は、撮像装置11のイメージスキャナ11aによって、スタック型バーコード21が傾いた状態で撮像された様子を示す図である。スタック型バーコード21を撮像装置11でスキャンしたときには、スタック型バーコード21のロウ方向が必ずしもカード搬送機構11bに対して垂直の関係に位置するとは限らない。イメージスキャナ11aによって読み取られた画像データは、例えば図4に示すように、傾く場合がある。換言すれば、ロウ方向と、画像メモリ12に格納された画像データの垂直方向が一致していない。このような場合に、座標変換に伴い、画素間での画像データの変換となるために発生する量子化誤差に起因するノイズによって、復号の信頼性が損なわれていた。そこで、この実施の形態1では、座標変換後の画像に対して、平滑化を目的とした補間処理や平均処理を行い、かかるノイズの影響を低減している。
次いで、データ処理装置13において、構造解析(カラム解析及びロウ解析)が行われる(ステップS34、S35)。より具体的には、データ処理装置13の構造解析部13cは、ステップS33において変換された補正画像データに基づき、スタック型バーコード21の構造を解析する。構造解析部13cは、カラム解析部13c2及びロウ解析部13c3において、カラム解析(ステップS34)及びロウ解析(ステップS35)が行われる。
最後に、データ処理装置13の復号部13dにおいて、復号の処理が行われる(ステップS36、S37)。より具体的には、データ処理装置13の復号部13dは、ステップS34、S35において解析されたスタック型バーコード21の構造に基づき、スタック型バーコード21の復号処理を行う。このとき、スタック型バーコード21の一種であるPDF417では、低レベル復号処理及び高レベル復号処理の2つの復号処理が行なわれ、復号部13dの低レベル復号部13d1においては低レベル復号処理を行い(ステップS36)、高レベル復号部13d2においては高レベル復号処理を行う(ステップS37)。低レベル復号処理は、データカラムを構成するバーの線幅とスペースの線幅とからなるコードワードが0〜928の番号が付けられた、929個のコードで示される中間情報に一度変換される処理である。次に、高レベル復号処理は、929個のコードで示される中間情報に一度変換された後、所定ルールに基づいて最終言語にデコード(復号)されるようになっている。この最終言語としては、PDF417では、ASCII文字やバイナリ表現、その他のキャラクタ等がある。
以下、図5に示すフローチャートの各処理(ステップS31〜ステップS37)について、それぞれ詳述する。
(スタック型バーコード位置検出)
図6は、図5に示すフローチャートにおけるスタック型バーコード位置検出(ステップS31)の流れを示すフローチャートである。また、図4は、スタック型バーコード21のうち、スタートパターンにおけるビッグバーの部分及びその周辺を拡大した拡大図である。
図6において、まず、変数i(iは整数)に0を代入して初期化され、所定の原点に復帰する(ステップS61)。具体的には、図4は画像メモリ12に格納された画像データの中で、スタック型バーコード21の一部を囲む領域で、左上を画素Sが所定の原点位置となっている。そこで、ステップS61により、水平方向(X方向)に1画素分の行を水平ラインHL(0)とし、最初の画素Sの画像データを読み込むようになっている。
次いで、水平ラインHL(0)から垂直方向(Y方向)にi番目の画素の列について、Y=iにおける水平ラインHL(i)上で、X方向に画素ごとに画像データを読み込み、最初に画像が「明」から「暗」に変化する点(点P(i)とする。)を検索する。具体的には、各画素の画像データ、すなわち、各画素の輝度値が所定の閾値により高い「明」(白い部分)を示す画素(以下、「スペース」という)と、所定の閾値より低い「暗」(黒い部分)を示す画素(以下、「バー」という)とに分けて、最初にスペースからバーに変化した画素の位置を検出する。この変化した画素の位置がスペースとバーとの境界となる。
また、同じ水平ラインHL(i)上で、引き続き、画像が最初に「暗」から「明」に変化する点(点Q(i)とする。)を検索する。具体的には、バー(「暗」を示す画素)からスペース(「明」を示す画素)に変化した画素の位置を検出する(ステップS62)。
次に、i=r−1(r:図4におけるY方向の行数(画素数))が満たされたか否かが判断され(ステップS63)、満たされていないと判定された場合には、iを1、インクリメントして(ステップS64)、再びステップS62の処理が行われる。一方、図4に示す画素Sから検索が始まり、X方向に各画素の輝度値を検索し、最終行の最後の画素まで検索が終了した場合には、i=r−1が満たされたと判定する。このように、満たされたと判定された場合には、処理を次のステップS65に移す。なお、この段階で、r個の点の組(P(i),Q(i))(i=0,1,・・・,r−2,r−1)を得る。
次いで、図4中の点Aと点Cの座標を求める(ステップS65)。より具体的には、点A、点Cに該当する画素の位置を検出する。X方向において、d(i)=|P(i)−Q(i)|を計算し、d(i)のうちの最小値min(d(i))を求める。このmin(d(i))が、PQ間の距離の最も短くなるビッグバーの点A及び点Cの2点に対応する(図4参照)。これにより、点A及び点CのY座標(該当する画素のY方向の位置)は、それぞれAy=max(i)及びCy=min(i)となる。また、点A及び点CのX座標(該当する画素のX方向の位置)は、それぞれのiに対する点PのX座標になるので、それぞれAx=P(i=Ay)のX座標及びCx=P(i=Cy)のX座標となる。
次に、図4中の点Bと点Dの座標を求める(ステップS66)。より具体的には、d(i)が一定となるiの範囲を特定する。そして、ビッグバーの点B及び点DのY座標は、その範囲におけるmin(i)及びmax(i)となる。また、点B及び点DのX座標は、それぞれのiに対する点P及び点QのX座標となるので、それぞれBx=P(i=By)のX座標及びDx=Q(i=Dy)のX座標となる。
このようにして、ステップS61〜ステップS66の処理を経て、ビッグバーの四隅、すなわち、点A、点B、点C、点Dの座標(該当する画素の位置)が確定したので、傾き角度は、atan((Ay−Dy)/(Ax−Dx))で計算することができる。
なお、傾き検出の精度を上げるため、図4において、XとYの役割を交換して同様の操作を行い、ビッグバーの4隅、すなわち、点A'、点B'、点C'、点D'の座標を求め、上記点A、B、C、Dの座標値との平均をとって最終的な座標値としてもよい。
また、図6では、点A及び点Cの座標を求めるとともに(ステップS65)、点B及び点Dの座標も求めることとしたが(ステップS66)、本発明はこれに限定されず、例えば、点A及び点Cの座標のみを求めることで、傾き検出を行うようにしてもよい。
(スタック型バーコード切出し)
テップS61〜ステップS66の処理を経て、ビッグバーの4隅の座標が確定すると、スタック型バーコード21の切出しを行う(ステップS32)。なお、スタック型バーコード21全体よりも少し大きな矩形状に切出しが行われる。
(スタック型バーコード傾き補正)
次に、スタック型バーコード21の傾き補正を行う(ステップS33)。
図3は、上述した角度(=atan((Ay−Dy)/(Ax−Dx)))で傾いたスタック型バーコード21の画像データを傾斜角度ゼロの補正画像データに変換したときの様子を示す図である。換言すれば、図3に示すスタック型バーコード21の画像データは、そのカラム方向及びロウ方向が図4に示す画像メモリ12領域の水平方向(X方向)及び垂直方向(Y方向)に一致するように補正される。
図3において、傾斜角度ゼロの補正画像データへの変換は、スタック型バーコード21の傾斜角度を用いて行う。例えば、アフィン変換などの周知の方法によって行うことができるので、ここでの詳細な説明は省略する。
そして、この実施の形態1に係るスタック型バーコード読取方法では、座標変換に伴う量子化誤差の影響を緩和するため、座標変換後の画像に対して、平滑化を目的として補間処理又は平均化処理を行う。具体的には、各画素の輝度値は、図9(b)や図12に示すように、スペースを示す輝度値(例えば、100)、バーを示す輝度値(例えば、0)としている。なお、補正画像データは、例えば、メディアンフィルタ、エッジ保存フィルタ、適応ウィナーフィルタ、移動平均フィルタなど各種のフィルタにかけることによって平滑化されている。
(構造解析)
図7は、図5に示すフローチャートにおける構造解析(ステップS34、S35)の流れを示すフローチャートである。
図7において、まず、水平射影の処理が行われる(ステップS91)。具体的には、図3に示すスタック型バーコード21の補正画像データに基づいて、水平方向に配列された画素ごとに、各垂直方向に配列された全画素の輝度値の総和を演算し、画像メモリ12に格納する処理である。
その後、求めた輝度値の総和について、水平方向に隣接する画素間で差分をとり、その差分値を用いてスタートパターン及びストップパターンの解析が行われる(ステップS92)。
図3等に示すように、スタートパターンとストップパターンは、他のデータカラム、レフトロウインジケータ、ライトロウインジケータのコードワードと異なり、すべてのロウ(この実施の形態1では、6行)に共通不変のパターンであることから、水平射影をとることでスタートパターン又はストップパターンが平均化され、輝度むらや汚れ等の影響を受けにくく、安定した検出が可能となる。
図8は、補正画像データ(図3参照)に所定の処理を施して得られた図である。より具体的には、図8(a)は、補正画像データ(図3参照)について、垂直方向における画素ごとに射影を計算したものであり、図3で言えば、スタック型バーコード21のロウ方向に、全画素の輝度値の総和を示す分布である。また、図8(b)は、図8(a)のグラフについて差分を計算したものである。具体的には、画像メモリ12に格納された画像データの水平方向において隣接する画素間で、求めた輝度値の総和の差分をとり、その差分値の分布を表したものである。これにより、水平ラインL(i)上で、バー(またはスペース)からスペース(またはバー)に変化した画素の位置を検出することができる。
スタートパターンの検出は、図8(a)又は図8(b)に示されるグラフを用いて、バーとスペースが変化する点の間隔(ランレングス)(以下、「線幅」という)を計測する。本実施の形態では、水平方向における画素数で計数(カウント)することによって行われる。例えば、スタートパターンの各バーの線幅、各スペースの線幅を計測すると、StartWork=[47,6,5,6,7,6,6,18]に示すような線幅配列が求められる。一方で、スタートパターンのバーとスペースの長さの比は、PDF417の規格より、StartMark=[8,1,1,1,1,1,1,3]に示すような線幅配列となっている。ここで、両者の類似性を調べる指標として、例えば、正規化相関Rを用いることができる。図8(b)について、正規化相関Rを考えると、R=corrcoef(StartWork,StartMark)=0.9993となり、Rは十分1に近い。したがって、この場合には、適切にスタートパターンが検出されたと判定される。なお、ストップパターンの正規化相関Rについての説明は、スタートパターンと同様であるので、ここでの説明は省略する。
なお、この実施の形態1では、類似性の尺度として、正規化相関Rを用いることとしたが、本発明はこれに限られず、例えば差分絶対値和、積和などを適宜用いてもよい。
このようにして、スタート/ストップパターンが適切に検出されたか否かが判断された後(ステップS93)、スタート/ストップパターンが適切に検出されたと判定された場合には、処理をステップS95に移す。一方で、スタート/ストップパターンが適切に検出されていないと判定された場合には、デコード不可、すなわち、復号できないとして処理を終了する(ステップS94)。
次いで、図8(b)のグラフに関して、ピーク検出が行われる(ステップS95)。より具体的には、図3に示すように、スタートパターン、レフトロウインジケータ、データカラム、ライトロウインジケータ、ストップパターンは、各カラムの境界では、すべてのロウにおいてスペースからバーへの遷移が行われるため、水平射影の差分値の分布上、この部分で大きな差分値が現れる(図8(b)の上向き矢印)。そして、図8(b)の上向き矢印で示した差分値(ピーク値)を求めるには、適当な閾値を用意して、その閾値を超えたか超えないかでピークの有無を判定することができる。ピークと判断された場合には、ピーク値をもつ画素の位置を画像メモリ12に記憶させる。
次いで、カラムの境界の検出が行われる(ステップS96)。より具体的には、ステップS95において記憶されたピーク値をもつ画素の位置に基づき、スタートパターン、レフトロウインジケータ、データカラム、ライトロウインジケータストップパターンの5つのカラムの境界を検出する。また、隣接するピーク値をもつ画素の間隔はカラムの幅を表すものであり、同様に画像メモリ12に記憶しておく。ここで、ある特定のロウにおいてこの境界近傍に汚れがあった場合、各ロウの走査中に各カラムの境界を示す変化点を正しく検出できない場合があるが、この実施の形態1のように、水平射影を用いることで、この汚れの影響が平均化作用によって小さくなり、各カラムの境界の検出への悪影響を抑えることができる。
次いで、ロウの境界の検出が行われる(ステップS97)。より具体的には、図9及び図10を用いて説明する。図9は、平均化された補正画像データの水平方向において、各ラインLの輝度値を示す波形図である。図10は、スタック型バーコード21の各ロウの区切りを特定する様子を説明するための説明図である。なお、この実施の形態1では、1ラインLは、1行×n列の行列である。ここで、nは評価範囲の幅である。
図9(a)において、ロウの境界の検出は、まず、補正画像データ上に、連続する複数のラインLからなる組を設定する。例えば、連続する3個のラインL(1)、L(2)およびL(3)(以下、「L1、L2およびL3と略す」)からなる組(ライン組S1)を設定する(図10参照)。なお、この実施の形態1では、連続する3個のラインLを設定しているが、3個に限定されるものではない。
そして、これらの3本のラインLについて任意の2本を選び、それらの正規化相関を求めると、全部で3個(L1とL2、L1とL3、L2とL3)の相関値が得られる。これら3個の相関値のうちの最も小さい値が、予め決められた閾値r0よりも大きければ、L1、L2、L3の(ラインLの各画素の輝度値を示す)波形はお互いに相関していると判断し、このライン組S1に1が与えられる(図10参照)。これに対し、予め決められた閾値r0よりも小さければ、最も小さい値が得られた2つのラインLの波形は、少なくとも相関していないと判断し、このライン組S1に0が与えられる。
例えば、水平方向に形成されたラインL1、L2及びL3からなる組については、図9(b)に示すように、ラインL1、L2及びL3がすべて同じロウ1(最も上のロウ)に含まれていることから、3個の相関値のうちの最も小さい値は閾値r0よりも大きくなり、1が与えられることになる(図10において、ライン組S1の判定値は1となっている)。
次に、補正画像データに対して、上述した組を相対的にロウ方向(垂直方向)に移動させて(例えばL2、L3およびL4からなるライン組S2を考えて)、相関値列を算出し、算出された相関値列の最小値が閾値r0よりも大きいか否かを判断することによって、そのライン組に0または1の判定値が与えられる。
以下同様に、ラインLn−2、Ln−1、Ln(ライン組Sn−2)まで上述した処理(判定値を与える処理)を繰り返し行うと、全部でn−2個の1と0とからなる系列が得られる(図10の右欄)。
ここで、3個のラインLが同一のロウから選ばれている場合は、それら3個のラインLよりなるライン組は1に近い値となり、3個のラインLが隣接するロウをまたいで選ばれている場合は、それら3個のラインLよりなるライン組は比較的小さい値となる。より具体的には、図9(b)において、ラインL18より上のラインLはロウ1に属し、ラインL18より下のラインLはロウ2に属し、このラインL18は、ロウ1とロウ2の境界に位置するラインLとなっている。
したがって、このラインL18を含むライン組S16〜S18では、判定値がほぼ0となり、それ以外のライン組では、判定値は1となる(図10参照)。判定値が0に近いライン組は、ロウの切り替わり位置を表しているので、判定値の系列を走査して、その判定値が0に近い場所を特定することにより、ロウの切り替わり位置を知ることができる。なお、この実施の形態1では、相関関数によってラインL相互の類似性を評価しているので、図9(a)に示すように、スタートパターンやストップパターンのような各ロウにおいて共通パターン(バーおよびスペースの線幅が同じ)を除いた範囲を評価範囲とすることで、無駄な演算(計算コスト)を省くことができる。
以上説明したように、ライン組の設定→相関値列の算出→相関値列の最小値と閾値との比較→0又は1の判定値付与→判定値の系列の走査という流れによって、ステップS97のロウの境界の検出が行われる。この実施の形態1では、ロウ1からロウ6の最終ラインLまで行なわれる。
ロウの境界の検出によって、補正画像データの各ラインLがどのロウに属するかを判定し、復号(デコード)可能として処理を終了する(ステップS98)。
また、この実施の形態1では、ロウごとに、それに含まれる複数のラインLの各点の輝度値の平均を計算することによって、ラインLの局所ノイズを低減することができる。さらに、平均した画素の輝度値を用いて、そのロウの特性を代表するものとして、後述する復号処理に用いることができる。これにより、復号(デコード)精度を向上させることができる。
(復号)
次に、スタック型バーコード21の復号処理について説明する。
(低レベル復号)
図11は、図5に示すフローチャートにおける低レベル復号(ステップS36)の流れを示すフローチャートである。
この低レベル復号は、図11に示すように、スタック型バーコード21の各ロウの走査反射特性について、カラム解析で決定されたカラムの境界を両端とするセグメント(すなわち、走査反射率波形)を取り出し、1つのカラムを構成するバーの線幅とスペースの線幅との配列によって形成されるXシーケンスと呼ばれる数値列を求めるXシーケンス計測と、Xシーケンスの隣接する2つのバー及びスペースを1つずつシフトさせながら足し合わせてTシーケンスと呼ばれる数値列を求めるTシーケンス計測と、予め用意しておいたコードワード変換テーブルを参照して各Tシーケンスに対応するコードワードを決定するコードワード変換とからなる。
(低レベル復号におけるXシーケンス計測)
スタック型バーコード21の一種であるPDF417では、低レベル復号処理および高レベル復号処理の2つの復号処理が行なわれ、低レベル復号処理は、1つのカラムを構成するバーの線幅とスペースの線幅とからなるデータカラムを構成するバーの線幅とスペースの線幅とからなるコードワードが0〜928の番号が付けられた、929個のコードで示される中間情報に一度変換される処理である。次に、高レベル復号処理は、929個のコードで示される中間情報に一度変換された後、所定ルールに基づいて最終言語に復号(デコード)されるようになっている。この最終言語としては、PDF417では、ASCII文字やバイナリ表現、その他のキャラクタ等がある。
図11において、まず、低レベル復号部13d1のXシーケンス計測部14は、Xシーケンス計測処理を行う(ステップS131)。一般的なXシーケンス計測処理においては、Xシーケンス計測部14の線幅計測手段14bは、各ロウにおいて、ロウに含まれる複数のラインLを平均化したライン波形を走査して、バーの線幅及びスペースの線幅を求める線幅計測を行った後に、画素数によって表現されている線幅をモジュール数表現に変換して、Xシーケンスを得る。なお、走査線は、例えば、各ロウにおいて、ロウ方向のほぼ真中に形成された複数のラインLであり、すなわち、複数行で構成された画素の行例である。さらに、複数のラインLを構成する画素の輝度値の平均を計算し、平均した画素の輝度値を用いて、そのロウにおける画素の輝度値を示す走査反射率波形として復号処理に用いる。
図12は、あるロウにおいて、ロウに含まれる複数のラインLを平均化したライン波形を走査して得られた、画素の輝度値を示す走査反射率波形の一部を示す波形図である。なお、バーの線幅及びスペースの線幅は、画素の輝度値を示す走査反射率波形の変化点と変化点の間の画素数をカウントしたものである。ここで、変化点は、画素の輝度値を示す走査反射率波形上で、図示しない所定の閾値と交差する点を示している。スタック型バーコード21の符合体系の一種であるPDF417において、図3等に示すように、スタートパターン、レフトロウインジケータ、データカラム、ライトロウインジケータ、ストップパターンの5つのカラムから構成されている。さらに、ストップパターンを除く各カラムは、4個のバーと4個のスペースで構成されるため、画素の輝度値を示す走査反射率波形に損傷がない場合には、合計8個の線幅が得られる。
一方で、画素の輝度値を示す走査反射率波形に異常がある場合には、合計8個以上(9個)の線幅が得られる。かかる場合には、カラムに損傷があることが分かり、このカラムの信頼性が低いことを示すフラグをセットする。かかる操作をあるロウに含まれるカラムすべてについて実行したら、次のロウにおいても同様の処理を実行する。すべてのロウについて、線幅が得られたら、ステップS131(図11参照)のXシーケンス計測処理を終了する。
(低レベル復号におけるTシーケンス計測)
次に、低レベル復号部13d1のTシーケンス計測部15は、Tシーケンス計測処理を行う(ステップS132)。
具体的には、Tシーケンス計測部15のシーケンス変換手段15aは、XシーケンスをTシーケンスに変換する。これは、隣接する2個のXiとXi+1を加算したものであり、図12に示す左側のカラム(データカラム)のXシーケンスをTシーケンスに変換すると、[6(5+1),2(1+1),2(1+1),2(1+1),2(1+1),6(1+5),7(5+2)]に示すような線幅配列となる。
次いで、Tシーケンス計測部15の線幅正規化手段15bは、線幅正規化処理を行う。この線幅正規化処理は、計測されたバーの線幅とスペースの線幅とを表す画素数によって表現されている線幅をモジュール数表現に変換する処理をいう。1モジュールは、バー又はスペースの最小幅に対応する。具体的には、スタック型バーコード21の一種であるPDF417において、データカラムを含む1カラムは17モジュールによって構成されている。1カラム内の線幅をW1,W2,W3,W4,W5,W6,W7,W8とし、
Wc=W1+W2+W3+W4+W5+W6+W7+W8とすれば、
正規化線幅は、Xi=Wi*17/Wc(i=1,2,…,7,8)で表されるXシーケンスとなる。例えば、図12に示す左側のカラム(データカラム)のXシーケンスは、[5,1,1,1,1,1,5,2](これらの総和は17、すなわち、上記した17モジュールを示す)に示すような線幅配列である。
次に、Tシーケンス計測部15の判定手段15cは、線幅正規化されたTシーケンスより計算したクラスタ番号が理論値に一致するか否かを判定する。
(低レベル復号におけるコードワード変換)
最後に、低レベル復号部13d1のコードワード変換部16は、コードワード変換を行う(ステップS133)。より具体的には、コードワード変換テーブルが格納されているテーブルメモリ16aから読み出し、このテーブルメモリ16aを参照することにより、ステップS132において求められたTシーケンスに対応するコードワードを取得する。すなわち、低レベル復号処理が行なわれ、1つのカラムを構成する4個のバーの線幅と4個のスペースの線幅でなるコードワードが0〜928の番号が付けられた、929個のコードで示される中間情報に一度変換される。
ここで、この実施の形態1においては、Xシーケンス計測処理(ステップS131)において、閾値方式及び2次微分方式から得られる複数のXシーケンスから最適なものを選択できるようにしている。
(閾値方式について)
図14は、あるロウにおいて、ロウに含まれる複数のラ
インLを平均化したライン波形を走査して得られた、各画素の輝度値を示す走査反射率波形の一部を取り出した図であり、スタック型バーコード21のあるロウとあるカラムに対応している。各画素の輝度値が第1の(固定)閾値AVより高い値か低い値かでバーかスペースかを判定し、具体的には、あるカラムの始点XSから終点XEまでの間に、バーとスペースの合計個数が8個になればXシーケンスは有効である。図14の例では、第1の(固定)閾値AVに基づいてXシーケンス(バーの線幅とスペースの線幅)を計測し、Xシーケンス[12,6,3,18,3,4,12,11]に示すような線幅配列が得られた。ここで、第1の(固定)閾値AVは、あるロウにおけるあるカラムにおいて、平均化したライン波形を走査して得られたバー及びスペースの線幅からなる全画像データの平均値である。具体的には、図14に示すロウとカラムにおいて、計測された全画素の輝度値を加算し、その加算値を全画素数で除算した値、すなわち、1画素あたりの平均輝度値を(固定)閾値AVとしている。そのため、第1の(固定)閾値AVは、図14に示すように、一定の値となっている。このように、第1の(固定)閾値AVは、一度の処理で求めることができるので、処理時間を短縮することが可能となる。
(n次微分方式について)
図15は、n次微分方式を説明するための図である。図15(a)は、あるロウにおいて、ロウに含まれる複数のラインLを平均化したライン波形を走査して得られた、各画素の輝度値を示す走査反射波形の一部を取り出した図である。図15(b)は、(a)に示す走査反射波形を1次微分した輝度値の差分を示す波形図であり、図15(c)は、(b)の波形をさらに微分(2次微分)した輝度値の差分を示す波形図である。
2次微分方式とは、各画素の輝度値を示す走査反射率波形を2次微分して2次微分値を求め、この2次微分値のゼロクロス点(つまり、元の波形の変曲点)をバーとスペースとの境界とする方式である。この2次微分方式は、閾値方式のように、分解能の影響を受けやすい波形のピークを検出する方法に比べて、波形の変化点を求めることでバーとスペースとの境界を求めるようにしているので、処理が簡単になるという利点がある。なお、図15(a)に示す走査反射率波形の分解能が、図14に示す走査反射率波形の分解能に比べて低い場合となっている。
(Xシーケンス計測処理について)
図13は、Xシーケンス計測処理(図11のステップS131)の流れを示すフローチャートである。このXシーケンス計測処理においては、上述したように、あるロウにおいて、ロウに含まれる複数のラインLを平均化したライン波形を走査して、計測された各画素の輝度値が、所定の閾値Thより高い値であれば、スペースと判定するとともに、各画素の輝度値が、閾値Thより低い値であれば、バーと判定することにより、バーかスペースかの判定を行う。さらに、このような判定に基づいて、バーの線幅と、スペースの線幅とを計測し、線幅を作成する。スタック型バーコード21におけるデータカラムは4個のバーと4個のスペースと、バー及びスペースの合計個数は8個であるから、走査反射率波形と固定閾値AVとの隣接する交点間で形成される線幅の合計個数が8個になるまで処理を繰り返し、閾値Thを変動させていく。
この実施の形態1では、図13に示すように、まず、固定閾値算出手段14a1が、(固定)閾値方式によってXシーケンスを求める(ステップS151〜ステップS158)。
すなわち、I=1のときに、閾値Thとして第1の固定閾値AVを設定する(ステップS151)。なお、固定閾値AVの説明は後述する。
次いで、第1の(固定)閾値Th=AVのときのXシーケンスを計測し(ステップS152)、そのときのバー及びスペースの合計個数が8個か否かを判断する(ステップS153)。ステップS153において、合計個数が8個と判断した場合は、Xシーケンス計測は成功したものとして、このときのXシーケンスを有効化し(ステップS154)、これをXシーケンス1として保存する(ステップS158)。一方、ステップS153において、合計個数が8個でないと判断した場合は、規定回数I(Iは2以上の整数)の処理を繰り返したか否か、例えば、I=3に到達したか否かを判断する(ステップS155)。
ステップS155においてI=3でないと判断した場合は、規定回数Iに1をインクリメントし、この実施の形態1では、第1の(固定)閾値ThからAV/4を減じた第2の(固定)閾値Thを設定して(ステップS156)、ステップS152およびステップS153の処理を繰り返す。なお、図14において、符号L1は第n−1の(固定)閾値ThからAV/4を引いた第nの(固定)閾値Thを示している。また、AV/4は経験則から決めた値であり、これに限定されるものではない。
新たに求めた第2の(固定)閾値Thに基づいて、Xシーケンスを再度計測し(ステップS152)、合計個数が8個と判断されればXシーケンスは有効とし(ステップS154)、合計個数が8個と判断されなければ、規定回数I=3でないので(ステップS155)、Iに1をインクリメントし、第2の(固定)閾値Thから、さらにAV/4を減じた新たな第3の(固定)閾値Thを設定して(ステップS156)、第3の(固定)閾値Thに基づいてXシーケンスの再度計測を行う(ステップS152)。この実施の形態1では、規定回数I=3の処理を繰り返しても合計個数が8個と判断されなければ、Xシーケンスは無効とし(ステップS157)、これをXシーケンス1として保存する(ステップS158)。
こうして(固定)閾値方式によるXシーケンス計測処理が終わったところで、今度は、n次微分算出手段14a3が、2次微分方式によってXシーケンスを求める(ステップS159〜ステップS166)。
すなわち、I=1のときに、ゼロクロス点SLを設定する(ステップS159)。
次いで、このときのXシーケンスを計測し(ステップS160)、そのときの合計個数が8個か否かを判断する(ステップS161)。ステップS161において、合計個数が8個と判断した場合は、Xシーケンス計測は成功したものとして、このときのXシーケンスを有効化し(ステップS162)、これをXシーケンス2として保存する(ステップS166)。一方、ステップS161において、合計個数が8個でないと判断した場合は、規定回数I(Iは2以上の整数)の処理を繰り返したか否か、例えば、I=3に到達したか否かを判断する(ステップS163)。
ステップS163においてI=3でないと判断した場合は、規定回数Iに1をインクリメントするとともに、ゼロクロス点SLに1をインクリメントして(ステップS164)、ステップS160およびステップS161の処理を繰り返す。
新たに求めたゼロクロス点SLに基づいて、Xシーケンスを再度計測し(ステップS160)、合計個数が8個と判断されればXシーケンスは有効とし(ステップS162)、合計個数が8個と判断されなければ、規定回数I=3でないので(ステップS163)、Iに1をインクリメントするとともに、ゼロクロス点(を示すライン)SLに1をインクリメントして(ステップS164)第2のゼロクロス(を示すライン)SL2を算出し、この第2のゼロクロス点(を示すライン)SL2に基づいてXシーケンスの再度計測を行う(ステップS160)。この実施の形態1では、規定回数I=3の処理を繰り返しても合計個数が8個と判断されなければ、Xシーケンスは無効とし(ステップS165)、これをXシーケンス2として保存する(ステップS166)。なお、インクリメントする数は、1としているがこれに限定されるものではない。
(Tシーケンス計測処理について)
図16a及び図16bは、この実施の形態1におけるTシーケンス計測処理(図11のステップS132)の流れを示すフローチャートである。図16a及び図16bに示すように、2次微分方式によるXシーケンス計測処理を終了後、固定閾値方式によるXシーケンス計測処理を実行する。すなわち、本実施の形態では、2つの方式によるXシーケンス計測処理による結果を記憶する。
このTシーケンス計測処理においては、Tシーケンス計測部15のシーケンス変換手段15aが、Xシーケンス1(固定閾値方式から得られたXシーケンス)及びXシーケンス2(2次微分方式から得られたXシーケンス)をそれぞれTシーケンスに変換し、Tシーケンス計測部15の線幅正規化手段15bが、これらのTシーケンスの線幅を正規化し、Tシーケンス計測部15の判定手段15cが、それぞれのTシーケンスより計算したクラスタ番号とクラスタの理論値とを比較する。そして、両者が等しければ、そのTシーケンスを有効とし、両者が等しくなければ、そのTシーケンスを無効とする。
ここで、クラスタ番号とは、図3に示すスタック型バーコード21において、誤り発生の確率を最小にするために用意されているもので、スタートパターン及びストップパターン以外のすべてのコードワードに存在している。具体的には、PDF417の規格により、クラスタ番号は3行目ごとに順次繰り返し現れ、ロウ1にはクラスタ番号「0」、ロウ2にはクラスタ番号「3」、ロウ3にはクラスタ番号「6」が使われている。換言すれば、このクラスタ番号「0」、「3」、「6」は、クラスタ番号の理論値となっている。
次に、具体的な数値で説明する。
まず、2次微分方式によって得たXシーケンス2を取り出し(ステップS171)、Tシーケンスに変換する(ステップS172)。これは、X=[Xi,Xi+1,Xi+2,・・・]において、隣接する2個のXiとXi+1を加算したものであり、2次微分方式によって得たXシーケンス2、例えば、図15(c)に示す走査反射率波形より、X=[12,5,5,16,4,4,12,10]を計測し、このXをTシーケンスに変換すると、T=[17,10,21,20,8,16,22]に示すような線幅配列となる。
次いで、Tシーケンスより、クラスタ番号を計算する(ステップS173)。クラスタの計算は、まず、TシーケンスをTN(i)=T(i)*17/Wc(i=0,1,・・・,7)で正規化する。上の例では、TN=[4,3,5,5,2、4]に示すような線幅配列となる。次に、クラスタ番号K=(TN(0)−TN(1)+TN(4)−TN(5)+9)mod9(ただし、「mod9」は9で除した後の剰余を意味する。)で表される式により、クラスタ番号Kを計算する。上の例では、K=(4−3+2−4+9)mod9=8となる。
次いで、ステップS173において計算されたクラスタ番号は処理中のロウに対応するクラスタ番号の理論値に等しいか否かを判断する(ステップS174)。処理中のロウがスタック型バーコード21の第1行目であるとすると、クラスタの理論値は「0」である。したがって、クラスタ番号「8」は、クラスタ番号の理論値「0」と一致しないため、Tシーケンスを無効とする(ステップS176)。一方、クラスタ番号が理論値と一致していれば、Tシーケンスを有効とし(ステップS175)、これをTシーケンス2として保存する(ステップS177)。
こうして、2次微分方式によるXシーケンス計測処理が終わったところで、今度は、(固定)閾値方式によるXシーケンス計測処理を実行する。
図16bにおいて、(固定)閾値方式によって得たXシーケンス1を取り出し(ステップS178)、Tシーケンスに変換する(ステップS179)。(固定)閾値方式によって得たXシーケンス1、例えば、図14に示す走査反射率波形より、X=[12,6,3,18,3,4,12,11]を計測し、そのXを、Tシーケンスに変換すると、T=[18,9,21,21,7,16,23]となる。
次いで、Tシーケンスより、クラスタ番号を計算する(ステップS180)。上の例では、TN=[4,2,5,5,2,4]と正規化され、K=(4−2+2−4+9)mod9=0となる。
次いで、ステップS173において計算されたクラスタは処理中のロウに対応するクラスタの理論値に等しいか否かを判断する(ステップS181)。上の例では、クラスタ番号「0」とクラスタ番号の理論値「0」が一致しているため、Tシーケンスを有効とする(ステップS182)。一方、クラスタ番号と理論値が一致していない場合は、Tシーケンスを無効とし(ステップS183)、これをTシーケンス1として保存する(ステップS184)。
このように、この実施の形態1においては、固定閾値方式及び2次微分方式の2種類の低レベル復号方式を備え、撮像光学系の分解能の高低に応じて、これらを使い分けることにより、たとえスタック型バーコード21の走査反射率波形が変動しても、最適なXシーケンス(Xシーケンス1又はXシーケンス2)及びTシーケンス(Tシーケンス1又はTシーケンス2)を得ることができる。
適当なXシーケンス及びTシーケンスが得られると、低レベル復号処理が行なわれ、コードワード変換処理(図11のステップS133)が行われる。具体的には、保存されたTシーケンス1及びTシーケンス2のそれぞれについて、各Tシーケンスに対応するコードワードを所定の変換テーブルから取得する。すなわち、低レベル復号処理が行なわれ、1つのカラムを構成する4個のバーの線幅と4個のスペースの線幅でなるコードワードは0〜928の番号が付けられた、929個のコードで示される中間情報に一度変換される。
(高レベル復号)
コードワード変換が完了すると、一般的な高レベル復号が行われて(図5のステップS37)、復号処理が完了する。
図20は、同実施の形態1に係るスタック型バーコード読取装置の高レベル復号部のブロック図である。図21は、図5に示すフローチャートにおける高レベル復号の流れを示すフローチャートである。
高レベル復号部13d2は、誤り訂正部17aとデータ復号部17bとを備えている。
[1]まず、2次微分方式で求めたTシーケンス結果に基づいてコードワード変換されたデータについて、誤り訂正処理を実施する(ステップS141)。
[2]この訂正されたデータコードワードをメモリに格納する。
[3]誤り訂正した数(エラー数)をカウントし、エラー数をメモリに格納する。
なお[1]で訂正できなかった場合は、復号不可能として、処理を終了する。
誤り訂正コードを用いた具体的な処理には、PDF417で一般的な処理方法を用いるが、例えば、特開平8−255208号に記載された方法を用いることができる。
[4]次に、固定閾値方式で求めたTシーケンス結果に基づいてコードワード変換されたデータについて、誤り訂正処理を実施する。
[5]この訂正されたデータコードワードをメモリに格納する。
[6]誤り訂正した数(エラー数)をカウントし、エラー数をメモリに格納する。
なお、[4]で訂正できなかった場合は、復号不可能として、処理を終了する。
そして、データ復号処理を実行する(ステップS142)。
なお、上述しているが、スタック型バーコード21、すなわち、本実施の形態ではPDF417は、左右両側のスタートパターン(コードワード)とストップパターン(コードワード)との間に、白のスペースと黒のバーとが並ぶデータコードワードを複数段重ねて構成されている。そして、データコードワードを構成する1コードワードは、PDF417の場合、4つのスペースと4つのバーからなり、これらの合計モジュールは17モジュールである。
また、復号処理が完了したデータ訂正されたデータコードワードについては、スタック型バーコード情報などとともに上位制御装置に出力されることになる。具体的には、高レベル復号処理は、0〜928の番号が付けられた、929個のコードで示される中間情報に一度変換された後、所定ルールに基づいて最終言語に復号(デコード)されるようになっている。この最終言語としては、PDF417では、ASCII文字やバイナリ表現、その他のキャラクタ等がある。
データ復号処理については、PDF417で一般的な処理方法を用いるが、例えば、特開平3−204793号公報や特開平5−290204号公報に記載された方法などを用いることができる。
なお、より詳細に誤り訂正について説明すると、スタック型バーコード21にはリードソロモン符号による誤り訂正が使用されている。このリードソロモン符号による誤り訂正では、元データにその一部が破損しても復元できるような符号理論を駆使した誤り訂正コードを加えて、データ領域に配置している。これにより、コードの位置が汚れたり欠けたりしても、元のデータを復元できる。
本実施の形態に係るスタック型バーコード読取方法では、一般的に知られている誤り訂正アルゴリズムを用いることで、誤り訂正の情報も出力できるようにしている。
[1]スタック型バーコードから得られたデータを元にシンドロームの演算を行なう。ここで、シンドロームとは、誤りの有無を検出する演算子であり、誤りがない場合には全てのシンドローム値が0の値をもつ。
[2]誤り位置多項式用の変数を求める。
[3]誤り位置多項式を解くことにより、誤り位置が検出される。
[4]誤り位置に対応する誤りの値を求める。
[5]誤りの位置からそれに対応する値を差し引くことで誤りが訂正される。
さらに、詳細に説明すると、スタック型バーコード21には、スタック型バーコード21の汚れや、破損などにより、不具合(誤り)と判断されたコードワードについて、その誤り訂正データを用いて解読されたデータが書き込まれるようになっている。
ここで、スタック型バーコード21の構成、不具合の推定および不具合があった場合の誤り訂正の方式について説明する。まず、スタック型バーコード21は図3、18に示すように二次元的な広がりを持っている。
スタック型バーコード読取装置1では、取り込んだスタック型バーコード21の画像に不具合がある場合には、スタック型バーコード21に含まれる誤り訂正データを用いて誤り訂正を行うことが行われる。ここで、画像の不具合とは、スタック型バーコード21自体の汚れや破損などによってスタック型バーコード21の画像の一部が正しく読み取れなくなっている状態をいう。
一般に、スタック型バーコード21には高度な訂正能力を有する誤り訂正符号が用いられている。スタック型バーコード21では、図18に示すように、データコードワード域と誤り訂正域とに分割され、リードソロモン符号化されている。ここで、誤り訂正ブロックはRS符号化のための冗長データである。なお、データブロックおよび誤り訂正ブロックは、コードワードと呼ばれる、4つのバーと4つのスペースで17モジュールの情報が1単位になって構成されている。また、誤り訂正域には、少なくとも2つの誤り検出コードワードC0及びC1とを含む。これら2つの誤り検出コードワードは一緒になって2コードワード長の検査合計を形成する。スタック型バーコード21(PDF417)は誤り訂正能力を持たせてデータを符号化することもできる。
このようなスタック型バーコード21についての一般的な誤り訂正についてより詳細に説明する。誤り訂正には、検出訂正と消失訂正の2種類の方式が存在する。検出訂正は、大きく以下の3つのステップから構成される。
[1]符号からシンドローム多項式を求める。
[2]シンドローム多項式から誤り位置多項式および誤り数値多項式を求める。
[3]誤り位置多項式からチェンサーチ法により誤り位置を求め、その位置に対する誤りの大きさ(誤りパターン)を求めて誤り訂正を行う。
スタック型バーコード21の例で言えば、符号化ブロックからシンドローム多項式を求め、シンドローム多項式から誤り位置多項式および誤り数値多項式を求める。そして、誤り位置多項式から誤り位置としてのコードワードを特定し、そのコードワードの誤りの大きさを求めて誤り訂正を行うというものである。
一方、消失訂正方式は、誤りである符号の位置(消失位置)、すなわち誤りのあるコードワードが予め分かっていることを前提として、誤りの大きさのみを求めて誤り訂正を行うものである。この消失訂正は、大きくは次の3つのステップから構成される。
[1]符号からシンドローム多項式を求める。
[2]消失位置から得られる消失多項式を用い、シンドローム多項式を修正し、消失数値多項式を求める。
[3]消失位置に対して誤りの大きさを求めて誤り訂正を行う。
このように消失訂正では、誤り位置が分かっていることを前提として誤りの大きさのみを求めるため、検出訂正とは異なり、シンドローム多項式から求める多項式は消失数値多項式の1つだけとなる。従って、訂正能力は検出訂正の2倍になる。
このように、誤り訂正については、上述したリードソロモン符号による方式が多く用いられているが、パリティ(誤り検出符号)を付加してこのパリティにより誤り位置の検出を行い、消失訂正を行って訂正効率を上げるようにしても良い。また、スタック型バーコード21では、白のスペースと黒のバーが交互に分布する。この前提に立てば、白または黒の一方のスペースまたはバーだけで構成されるコードワードブロックは不具合として推定して検出訂正の処理をすることができる。
(復号結果選択)
図22は、同実施の形態1に係るスタック型バーコード読取装置の複合結果選択部のブロック図である。図23は、復号結果選択の流れを示すフローチャートである。
復号結果選択部13d3は、カウンタ18aと選択部18bとを備えている。
まず、nに1をセットする(ステップS191)。第n番目の閾値算出手段による低レベル復号を行い、コードワードセットCW(n)を得る(ステップS192)。
次に、コードワードセットCW(n)を用いて高レベル復号を行い、誤り訂正済みコードワード数EC(n)を得る(ステップS193)。
ステップS194においてn=Nでないと判断した場合は、nに1をインクリメントし(ステップS195)、n=NになるまでステップS192及びステップ193の処理を繰り返す。Nは、閾値算出手段14aの個数である。本実施の形態では、閾値算出手段14aとして、2次微分算出手段と固定閾値算出手段を用いているから、N=2である。
ステップS194においてn=Nであると判断した場合は、Min(EC(n))を与えるnに対応する復号結果を最終結果として採用する(ステップS196)。
本実施の形態において、復号結果の選択は、上述の高レベル復号における上記[3]及び上記[6]で求めた誤り訂正した数(エラー数)を比較し、少ない数の方式を選択する。すなわち、選択した方式でデータ復号処理を行った結果を最終結果として表示する。
なお、上記[3]又は上記[6]どちらか一方が、訂正できなかった場合は、訂正できなかった方式では復号不可能として、処理を終了するので、訂正できた方式をそのまま最終結果として表示する。また、上記[3]及び上記[6]の両者とも、訂正できなかった場合は、復号不可能として、処理を終了する。
(実施の形態の主な効果)
本実施の形態によれば、復号部13dが異なる手段によってバーとスペースとの境界を求め、低レベル復号13d1と高レベル復号13d2を実行してスタック型バーコード21をキャラクタ情報に復号し、復号結果選択部13d3が誤り訂正の数が少ない復号結果を選択することができる。復号処理できたものでも、そのデータの信頼度には、ばらつきがあるので、そのばらつきを定量的に判断できるようにして、より精度の高い復号処理を行うことが可能である。
また、上記したように、復号結果選択部13d3が誤り訂正の数が少ない復号結果を選択するから、走査反射率波形の分解能にかかわらず、最適な復号結果を最終結果として出力することができ、信頼性の高い復号処理系を実現することができる。
また、以上説明したように、この実施の形態においては、スタック型バーコード21の走査反射率波形が変動する場合であっても、このスタック型バーコード21を精度よく読み取ることが可能となる。具体的には、撮像光学系の分解能が一定の水準に達している場合には、スタック型バーコード21の走査反射率波形のピーク値を検出することで閾値を決定する(固定)閾値方式による低レベル復号を採択することができる。一方、撮像光学系の分解能が一定の水準に達していない場合には、スタック型バーコード21の走査反射率波形が変動してしまうため、または、正確なピーク値を検出することが難しくなるが、輝度値の差分をとることで、バーとスペースとのエッジ(境界)部分の出力変化を高精度に抽出可能な2次微分方式による低レベル復号を採択することができる。
その結果、スタック型バーコード21の走査反射率波形の変動の影響を受けにくく、スタック型バーコード21を精度よく読み取ることが可能となる。
また、媒体搬送速度が撮像中に増減する場合でも、両方式((固定)閾値方式及び2次微分方式)の低レベル復号を併用することにより、速度変動に対処しやすくなる利点がある。
バーとスペースとの境界を求める手段として、例えば、走査反射率波形の分解能が比較的高い場合に有効な第一の手段(固定閾値算出手段又は/及び局所閾値算出手段)と、走査反射率波形の分解能が比較的低い場合に有効な第二の手段(n次微分値算出手段)とを含ませることにより、走査反射率特性の変動に強いスタック型バーコード読取装置1を構成することができる。
さらに、閾値算出手段14aは、画像データを構成する複数の画素の輝度値によってスタック型バーコード21のバーとスペースとの線幅を計測するための閾値を算出する固定閾値算出手段14a1又は/及び局所閾値算出手段14a2と、画像データを構成する複数の画素の輝度値を示す走査反射率波形を微分してn次微分値(nは1又は2)を算出するn次微分値算出手段14a3と、を有することを特徴とする。
本実施の形態によれば、画像データを構成する複数の画素の輝度値を示す走査反射率波形の分解能が比較的高い場合に有効な固定閾値算出手段14a1又は局所閾値算出手段14a2と、走査反射率波形の分解能が比較的低い場合に有効なn次微分値算出手段14a3とを有することにより、走査反射率波形が変動した場合でも、より適切な復号結果を選択することができるから、走査反射率特性の変動に強いスタック型バーコード読取装置1を構成することができる。
本実施の形態では、n次微分値は2次微分値であり、この2次微分値のゼロクロス点を前記バーと前記スペースとの境界とすることを特徴とする。これにより、2次微分値のゼロクロス点をバーとスペースとの境界とすることにより、画像データを構成する複数の画素の輝度値を示す走査反射率波形の分解能が比較的低い場合でも、走査反射率波形からバー/スペースパターンを正確に生成することができる。
さらに、固定閾値算出手段14a1は画像データの平均値に基づく固定閾値を算出し、局所閾値算出手段14a2は画像データにおいて互いに隣接するバー及びスペースの最大ピーク値と最小ピーク値との平均値に基づく局所閾値を算出することを特徴とする。これにより、画像データの全体的な平均値又は局所的な平均値に基づいて閾値を算出することにより、画像データを構成する複数の画素の輝度値を示す走査反射率波形の分解能が比較的高い場合には、計算負荷を小さくして処理速度を向上することができる。
また、本実施の形態では、画像データを構成する複数の画素の輝度値を示す走査反射率波形の分解能が比較的高い場合に有効な閾値算出工程と、走査反射率波形の分解能が比較的低い場合に有効なn次微分値算出工程とを有することにより、走査反射率波形が変動した場合でも、より適切な復号結果を選択することができる。復号処理できたものでも、そのデータの信頼度には、ばらつきがあるので、そのばらつきを定量的に判断できるようにして、より精度の高い復号処理方法を行うことが可能である。
また、上記したように、復号結果選択部13d3が誤り訂正の数が少ない復号結果を選択するから、走査反射率波形の分解能にかかわらず、最適な復号結果を最終結果として出力することができ、信頼性の高い復号処理系を実現することができる。
[発明のその他の実施の形態]
なお、上述した実施の形態1では、スタック型バーコード読取方法の低レベル復号に際して、図16a及び図16bに示すように、2次微分方式によるXシーケンス計測処理に基づく低レベル復号(ステップS171〜ステップS177)を実施した後、(固定)閾値方式によるXシーケンス計測処理に基づく低レベル復号(ステップS178〜ステップS184)を実施する場合について説明した。しかし、必要に応じて、これらの順序を入れ替えて、(固定)閾値方式によるXシーケンス計測処理に基づく低レベル復号を実施した後、2次微分方式によるXシーケンス計測処理に基づく低レベル復号を実施するようにしてもよい。
また、上述した実施の形態1では、スタック型バーコード読取方法のXシーケンス計測処理を実行する際に、閾値方式として、走査反射波形を構成する各画素の輝度値の平均を求める固定閾値方式を採用する場合について説明したが、固定閾値方式以外の閾値方式(例えば、局所閾値方式など)を代用または併用することもできる。局所閾値方式を採用する場合は、Xシーケンス計測部14の局所閾値算出手段14a2が局所閾値を算出する。この局所閾値方式は、図17に示すように、画像データにおいて互いに隣接するバー及びスペースの最大ピーク値と最小ピーク値との平均値に基づく局所閾値をバーとスペースとの境界とする方式である。この局所閾値方式は、補正画像データの輝度むらや汚れなどで、ピーク値のばらつきが生じた場合でも、固定閾値方式に比べて、バーとスペースとの線幅を精度よく検出することができるという利点がある。
また、上述した実施の形態1では、スタック型バーコード読取方法のXシーケンス計測処理を実行する際に、n次微分方式として2次微分方式(つまり、n=2)を採用する場合について説明したが、2次微分方式に代えて1次微分方式(つまり、n=1)を代用又は併用することもできる。
また、上述した実施の形態1では、スタック型バーコード読取方法のスタック型バーコード傾き補正(ステップS33)において、スタック型バーコード21の画像データを傾斜角度ゼロの補正画像データに変換する場合について説明した。しかし、スタック型バーコード21の画像データが傾いていないことが保証されている場合や、スタック型バーコード21の画像データが傾いていても別の角度補正手段によって対処できる場合には、このスタック型バーコード傾き補正を省くことも可能である。
また、上述した実施の形態1では、スタック型バーコード21、つまり二次元バーコードの一種について説明したが、一次元バーコードに本発明を同様に適用することもできる。
さらに、上述した実施の形態1では、一次元撮像素子やリニア搬送機構との組み合わせに対して本発明を適用することとしたが、本発明はこれに限られることなく、例えば、二次元CCDやCMOSイメージャなどのエリアセンサと被写体支持機構との組み合わせに対して本発明を適用することとしても構わない。
本発明は、撮像光学系の分解能の高低に起因してスタック型バーコードの走査反射率波形が変動する恐れがあるスタック型バーコード読取装置に好適に適用することができる。
1…スタック型バーコード読取装置
2…記録担体
11…撮像装置(撮像部)
11a…イメージスキャナ
11b…カード搬送機構
12…画像メモリ
13…データ処理装置(データ処理部)
13a…位置検出部
13a1…位置検出部
13a2…切り出し部
13a3…傾き補正部
13c…構造解析部
13c1…パターン検出部
13c2…カラム解析部
13c3…ロウ解析部
13d…復号部
13d1…低レベル復号部
13d2…高レベル復号部
13d3…復号結果選択部
14…Xシーケンス計測部
14a…閾値算出手段
14a1…固定閾値算出手段
14a2…局所閾値算出手段
14a3…n次微分算出手段
14b…線幅計測手段
15…Tシーケンス計測部(Tシーケンス計測手段)
15a…シーケンス変換手段
15b…線幅正規化手段
15c…判定手段
16…コードワード変換部(コードワード取得手段)
16a…テーブルメモリ
17a…誤り訂正部
17b…データ復号部
18a…カウンタ
18b…選択部
21…スタック型バーコード

Claims (2)

  1. キャラクタ情報がバーコードに符号化されてバー及びスペースで表示されたスタック型バーコードを撮像する撮像部と、
    この撮像部が撮像した前記スタック型バーコードの画像データを記憶する画像メモリと、
    前記画像データに基づき、前記スタック型バーコードのバーコードをキャラクタ情報に復号する復号部を有するデータ処理部と、を備えたスタック型バーコード読取装置であって、
    前記復号部は、異なる手段によって前記バーと前記スペースとの境界を求める複数の閾値算出手段を備えた低レベル復号部と、該低レベル復号部で変換されたコードワードを用いて前記スタック型バーコードをキャラクタ情報に復号する高レベル復号部と、復号結果を選択する復号結果選択部と、を有し、
    前記高レベル復号部は、誤り訂正処理を行う誤り訂正部を備え、
    前記復号結果選択部は、1コードワード内で誤り訂正された数をカウントして訂正数として記憶するカウンタ部と、該カウンタ部に記憶された訂正数を比較して訂正数の少ない復号結果を選択する選択部と、を備えたことを特徴とするスタック型バーコード読取装置。
  2. キャラクタ情報がバーコードに符号化されてバー及びスペースで表示されたスタック型バーコードを撮像して得られた画像データに基づき、前記スタック型バーコードのバーコードをキャラクタ情報に復号する際に、前記画像データを構成する複数の画素の輝度値によって前記スタック型バーコードのバーとスペースとの線幅を計測するための閾値を算出する閾値算出工程と、
    前記画像データを構成する複数の画素の輝度値を示す走査反射率波形を微分してn次微分値(nは1又は2)を算出するn次微分値算出工程と、
    前記閾値及び前記n次微分値に基づき、前記スタック型バーコードのバー及びスペースの線幅を計測する線幅計測工程と、
    この線幅計測工程において計測された前記スタック型バーコードのバー及びスペースの線幅からTシーケンスを計測するTシーケンス計測工程と、
    このTシーケンス計測工程において計測されたTシーケンスに対応するコードワードを取得するコードワード取得工程と、
    前記コードワードを用いて前記スタック型バーコードをキャラクタ情報に復号する高レベル復号工程と、を有し、
    前記高レベル復号工程は、誤り訂正処理を行う誤り訂正工程を備え、
    前記復号結果選択工程は、1コードワード内で誤り訂正された数をカウントして訂正数として記憶するカウンタ工程と、該カウンタ工程で記憶された訂正数を比較して訂正数の少ない復号結果を選択する選択工程と、を備えたことを特徴とするスタック型バーコード読取方法。
JP2013068945A 2013-03-28 2013-03-28 スタック型バーコード読取装置及びスタック型バーコード読取方法 Active JP6095194B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2013068945A JP6095194B2 (ja) 2013-03-28 2013-03-28 スタック型バーコード読取装置及びスタック型バーコード読取方法
US14/221,533 US9070033B2 (en) 2013-03-28 2014-03-21 Stack barcode reader and stack barcode reading method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013068945A JP6095194B2 (ja) 2013-03-28 2013-03-28 スタック型バーコード読取装置及びスタック型バーコード読取方法

Publications (2)

Publication Number Publication Date
JP2014191755A true JP2014191755A (ja) 2014-10-06
JP6095194B2 JP6095194B2 (ja) 2017-03-15

Family

ID=51619831

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013068945A Active JP6095194B2 (ja) 2013-03-28 2013-03-28 スタック型バーコード読取装置及びスタック型バーコード読取方法

Country Status (2)

Country Link
US (1) US9070033B2 (ja)
JP (1) JP6095194B2 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9495574B2 (en) 2015-03-31 2016-11-15 Nidec Sankyo Corporation Stack barcode reader and stack barcode reading method
JP2016197347A (ja) * 2015-04-03 2016-11-24 株式会社Nttドコモ 情報処理装置、情報処理方法およびプログラム
JP7481494B2 (ja) 2020-05-07 2024-05-10 ゼジャン・ハーレイ・テクノロジー・カンパニー・リミテッド バーコード復号化のためのシステム及び方法

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106991348B (zh) * 2017-03-21 2019-11-15 浙江华睿科技有限公司 一种条码解码方法及装置
CN107547905B (zh) * 2017-05-10 2020-07-24 新华三信息安全技术有限公司 一种解码方法及装置
US11055590B2 (en) 2019-09-17 2021-07-06 International Business Machines Corporation Multiresolution optical code
JP2023079341A (ja) * 2021-11-29 2023-06-08 株式会社キーエンス 光学情報読取装置の設定装置、光学情報読取システム及び光学情報読取方法

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06199078A (ja) * 1992-06-01 1994-07-19 Symbol Technol Inc 符号化したデータを有する記録体
JPH0863543A (ja) * 1994-08-17 1996-03-08 Olympus Optical Co Ltd シンボル情報読み取り装置
JPH08249412A (ja) * 1995-03-10 1996-09-27 Sharp Corp デジタル情報解読方法
JPH10261043A (ja) * 1997-03-19 1998-09-29 Toshiba Corp 復合方法および復号装置およびバーコード処理システム
JP2009151700A (ja) * 2007-12-21 2009-07-09 Kagoshima Univ 画像処理装置、画像処理方法、プログラム及び記録媒体
JP2012083835A (ja) * 2010-10-07 2012-04-26 Nidec Sankyo Corp スタック型バーコード読取装置およびスタック型バーコード読取方法
JP2012083836A (ja) * 2010-10-07 2012-04-26 Nidec Sankyo Corp スタック型バーコード読取装置およびスタック型バーコード読取方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5631457A (en) * 1994-08-17 1997-05-20 Olympus Optical Co., Ltd. Two-dimensional symbol data read apparatus
US6126074A (en) * 1998-01-28 2000-10-03 Symbol Technologies, Inc. Error correction in macro bar code symbols
JP3516144B1 (ja) * 2002-06-18 2004-04-05 オムロン株式会社 光学情報コードの読取方法および光学情報コード読取装置
CN101063999B (zh) * 2006-04-29 2010-09-15 银河联动信息技术(北京)有限公司 一种二维码与标识的合成系统及方法
US8333326B2 (en) * 2010-10-07 2012-12-18 Nidec Sankyo Corporation Stacked barcode reader and stacked barcode reading method

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06199078A (ja) * 1992-06-01 1994-07-19 Symbol Technol Inc 符号化したデータを有する記録体
JPH0863543A (ja) * 1994-08-17 1996-03-08 Olympus Optical Co Ltd シンボル情報読み取り装置
JPH08249412A (ja) * 1995-03-10 1996-09-27 Sharp Corp デジタル情報解読方法
JPH10261043A (ja) * 1997-03-19 1998-09-29 Toshiba Corp 復合方法および復号装置およびバーコード処理システム
JP2009151700A (ja) * 2007-12-21 2009-07-09 Kagoshima Univ 画像処理装置、画像処理方法、プログラム及び記録媒体
JP2012083835A (ja) * 2010-10-07 2012-04-26 Nidec Sankyo Corp スタック型バーコード読取装置およびスタック型バーコード読取方法
JP2012083836A (ja) * 2010-10-07 2012-04-26 Nidec Sankyo Corp スタック型バーコード読取装置およびスタック型バーコード読取方法

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9495574B2 (en) 2015-03-31 2016-11-15 Nidec Sankyo Corporation Stack barcode reader and stack barcode reading method
JP2016194791A (ja) * 2015-03-31 2016-11-17 日本電産サンキョー株式会社 スタック型バーコード読取装置およびスタック型バーコード読取方法
JP2016197347A (ja) * 2015-04-03 2016-11-24 株式会社Nttドコモ 情報処理装置、情報処理方法およびプログラム
JP7481494B2 (ja) 2020-05-07 2024-05-10 ゼジャン・ハーレイ・テクノロジー・カンパニー・リミテッド バーコード復号化のためのシステム及び方法

Also Published As

Publication number Publication date
US20140291402A1 (en) 2014-10-02
JP6095194B2 (ja) 2017-03-15
US9070033B2 (en) 2015-06-30

Similar Documents

Publication Publication Date Title
JP6095194B2 (ja) スタック型バーコード読取装置及びスタック型バーコード読取方法
US8333326B2 (en) Stacked barcode reader and stacked barcode reading method
CN105512594B (zh) 解码条形码
EP0999519B1 (en) Distortion correction method in optical code reading
JP3115610B2 (ja) 高速画像捕捉システムおよび方法
US8326037B1 (en) Methods and apparatus for locating an object in an image
US5553084A (en) Error correction enhancement for code one and other machine-readable symbologies
JPH0950473A (ja) 未定の複雑な多幅バーコード符号プロフィールをデコードする方法及び装置
US7380718B2 (en) Method for reading out symbol information and device for reading out symbol information
EP3200120B1 (en) Enhanced matrix symbol error correction method
JP5379626B2 (ja) スタック型バーコード情報読取方法及びスタック型バーコード情報読取装置
CN109740403B (zh) 一种识读一维条码的方法和装置
US6102295A (en) Method and apparatus for decoding symbols by declaring erasures of element characteristics
JP4752413B2 (ja) 2次元コード分割表示方法、2次元コード読取方法および2次元コード読取装置
JP5187383B2 (ja) 2次元コード分割表示方法、2次元コード読取方法および2次元コード読取装置
US6394352B1 (en) Method of reconstructing successive scans of a bar code
JP2012058776A (ja) バーコード読取装置およびバーコード読取方法
US10460142B2 (en) Barcode identification method for improving decoding reliability by correcting image distortion
JP5683891B2 (ja) スタック型バーコード読取装置およびスタック型バーコード読取方法
JP5657987B2 (ja) スタック型バーコード読取装置およびスタック型バーコード読取方法
US6330972B1 (en) Error correction enhancement for code 93i and other machine-readable symbologies
JP5187382B2 (ja) 2次元コード分割表示方法、2次元コード読取方法および2次元コード読取装置
US8403221B2 (en) Method and apparatus for reading barcode information
JP4652201B2 (ja) バーコードシンボル情報読取方法及びバーコードシンボル情報読取装置
US9495574B2 (en) Stack barcode reader and stack barcode reading method

Legal Events

Date Code Title Description
RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7421

Effective date: 20150609

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20150622

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20150622

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160205

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20161012

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20161116

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170104

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: 20170201

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170212

R150 Certificate of patent or registration of utility model

Ref document number: 6095194

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150