JP6393226B2 - スタック型バーコード読取装置およびスタック型バーコード読取方法 - Google Patents

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

Info

Publication number
JP6393226B2
JP6393226B2 JP2015074073A JP2015074073A JP6393226B2 JP 6393226 B2 JP6393226 B2 JP 6393226B2 JP 2015074073 A JP2015074073 A JP 2015074073A JP 2015074073 A JP2015074073 A JP 2015074073A JP 6393226 B2 JP6393226 B2 JP 6393226B2
Authority
JP
Japan
Prior art keywords
sequence
cluster value
barcode
unit
stack
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
Application number
JP2015074073A
Other languages
English (en)
Other versions
JP2016194791A (ja
Inventor
中村 宏
宏 中村
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 Sankyo 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 JP2015074073A priority Critical patent/JP6393226B2/ja
Priority to US15/084,742 priority patent/US9495574B2/en
Publication of JP2016194791A publication Critical patent/JP2016194791A/ja
Application granted granted Critical
Publication of JP6393226B2 publication Critical patent/JP6393226B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/1439Methods for optical code recognition including a method step for retrieval of the optical code
    • G06K7/1443Methods 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)
  • 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)
  • Printers Characterized By Their Purpose (AREA)

Description

本発明は、スタック型バーコードを光学的に読み取るスタック型バーコード読取装置およびスタック型バーコード読取方法に関するものである。
スタック型バーコードは、一次元バーコードを積み重ねることによって情報量を増加させる方式のものであり、代表的なものにPDF417がある。
このスタック型バーコードを光学的な手法でデジタル画像化し、画像内のスタック型バーコードを画像処理の手法によって解析し、記録されているデータを読み出す読取装置が種々提案されている(たとえば特許文献1参照)。
特許文献1に示すPDF417(スタック型バーコード)は誤り訂正機能を持っている。誤り訂正能力は、PDF417に組み込まれている誤り訂正コードワードの数が多いほど、より多くの誤りを訂正することができる。
そこで、特許文献1に示すスタック型バーコード読取装置は、復号結果選択部を設けて誤り訂正の数が少ない復号結果を選択している。すなわち、復号処理できたものでも、そのバーおよびスペースを計測した幅の信頼度にはばらつきがあるので、このスタック型バーコード読取装置は、そのばらつきを定量的に判断できるようにして、より精度の高い復号処理を行っている。
特開2014−191755号公報
しかしながら、特許文献1に記載されたスタック型バーコード読取装置は、バーやスペースの配列に対応したコードワードがコードワード参照テーブルに存在しないことによる誤りについては対策を取っていない。そのため、このような明示的な誤り数が誤り訂正限界を超える場合には、復号ができないという問題があった。
そこで、本発明の課題は、事前に検出可能な誤りの発生を抑止することができ、誤り訂正処理の処理負荷を軽減することが可能なスタック型バーコード読取装置およびスタック型バーコード読取方法を提供することにある。
上記の課題を解決するため、本発明のスタック型バーコード読取装置は、情報がコード化されてバーおよびスペースで表示されたスタック型バーコードを撮像する撮像部と、前記撮像部が撮像した前記スタック型バーコードの画像データを記憶する画像メモリと、前記画像データに基づき、前記スタック型バーコードで表示されたコード化情報を復号する復号部を有するデータ処理部と、を備え、前記復号部は、前記画像データを形成する複数の画素値に基づき、前記スタック型バーコードのバーおよびスペースの線幅を計測する線幅計測手段と、前記線幅計測手段によって計測された前記スタック型バーコードのバーおよびスペースの線幅から数値列であるTシーケンスを計測するTシーケンス計測手段と、少なくとも前記Tシーケンス計測手段によって計測されたTシーケンスに対応するコードワードを取得するコードワード取得手段と、前記Tシーケンス計測手段によるTシーケンスから得られるクラスタ値と理論クラスタ値とを比較し、両クラスタ値に差異が生じた場合に、理論クラスタ値と、Tシーケンスと前記コードワードとの変換テーブルを用いてTシーケンスを修正するTシーケンス修正手段と、を有することを特徴とする。
本発明のスタック型バーコード読取装置では、復号部が、変換されたバーおよびスペースのTシーケンスから得られるクラスタ値を、理論クラスタ値と比較するクラスタ比較機能と、両クラスタ値に差異がある場合はその差異の程度に応じてTシーメンス(バーおよびスペースシーケンス)を修正する修正機能を有していることから、たとえば事前に検出可能な誤りの発生を抑止することができ、誤り訂正処理の処理負荷を軽減することが可能である。
また、本発明において、スタック型バーコード読取装置は、前記Tシーケンス修正手段は、前記Tシーケンスから得られるクラスタ値が前記理論クラスタ値に一致するように、Tシーケンスを修正することが好ましい。このように構成すると、Tシーケンスから得られるクラスタ値が前記理論クラスタ値に一致するように、Tシーケンスを修正することにより、誤りがあった場合にもコードワード参照を実行できるようにすることができる。
本発明のスタック型バーコード読取方法は、情報がコード化されてバーおよびスペースで表示されたスタック型バーコードを撮像する撮像部と、前記撮像部が撮像した前記スタック型バーコードの画像データを記憶する画像メモリと、前記画像データに基づき、前記スタック型バーコードで表示されたコード化情報を復号する復号部を有するデータ処理部と、を備えたスタック型バーコード読取装置で使用されるスタック型バーコード読取方法であって、前記復号部において、前記画像データを形成する複数の画素値に基づき、前記スタック型バーコードのバーおよびスペースの線幅を計測する第1ステップと、前記第1ステップによって計測された前記スタック型バーコードのバーおよびスペースの線幅から数値列であるTシーケンスを計測する第2ステップと、少なくとも前記第2ステップによって計測されたTシーケンスに対応するコードワードを取得する第3ステップと、前記第2ステップによるTシーケンスから得られるクラスタ値と理論クラスタ値とを比較し、両クラスタ値に差異が生じた場合に、理論クラスタ値と、Tシーケンスと前記コードワードとの変換テーブルを用いてTシーケンスを修正する第4ステップと、を有することを特徴とする。
本発明スタック型バーコード読取方法では、変換されたバーおよびスペースのTシーケンスから得られるクラスタ値を、理論クラスタ値と比較するクラスタ比較機能と、両クラスタ値に差異がある場合はその差異の程度に応じてTシーメンス(バーおよびスペースシーケンス)を修正する修正機能を有していることから、たとえば事前に検出可能な誤りの発生を抑止することができ、誤り訂正処理の処理負荷を軽減することが可能である。
また、本発明において、前記第4ステップにおいては、前記Tシーケンスから得られるクラスタ値が前記理論クラスタ値に一致するように、Tシーケンスを修正することが好ましい。このように構成すると、Tシーケンスから得られるクラスタ値が前記理論クラスタ値に一致するように、Tシーケンスを修正することにより、誤りがあった場合にもコードワード参照を実行できるようにすることができる。
本発明によれば、事前に検出可能な誤りの発生を抑止することができ、誤り訂正処理の処理負荷を軽減することが可能となる。
本発明の実施形態に係るスタック型バーコード読取装置の構成例を示す図である。 本実施形態に係る低レベル復号部の要部の構成例を示すブロック図である。 図2のTシーケンス修正部の構成例を示すブロック図である。 スタック型バーコードであるPDF417のラベル構造の画像データの一例を示す図である。 本実施形態に係るスタック型バーコードの読取方法の流れを示すフローチャートである。 図5に示すフローチャートにおける構造解析処理(ステップST4、ST5)の流れを示すフローチャートである。 図5に示すフローチャートにおける低レベル復号処理(ステップST6)の流れを示すフローチャートである。 本実施形態においてスタック型バーコードを読み取って得られた結果の一例を示す図である。 本実施形態に係るTシーケンス修正の具体的な処理フローを示す第1のフローチャートである。 本実施形態に係るTシーケンス修正の具体的な処理フローを示す第2のフローチャートである。
以下、本発明の実施形態を図面に関連付けて説明する。
図1は、本発明の実施形態に係るスタック型バーコード読取装置の構成例を示す図である。
本実施形態に係るスタック型バーコード読取装置10は、カード等の記録媒体20上に固有の情報として付与されたスタック型バーコード(本実施形態ではPDF417)を撮像して得られた画像データを処理することによって、画像データからスタック型バーコード全体を正確に読み取ることが可能に構成されている。
スタック型バーコード読取装置10は、図1に示すように、撮像装置11、記憶部としての画像メモリ12、データ処理部13、および表示部14を主構成要素として有している。
撮像装置11は、密着型の一次元撮像素子111、およびカード等の記録媒体20を搬送する搬送機構(搬送ガイドを含む)112を含んで構成されている。撮像装置11の撮像素子111で撮像される記録媒体20には、図1では、スタック型バーコードの一例としてPDF417のバーコード21が印刷(記録)されている。
本実施形態に係るスタック型バーコード読取装置10は、図1に示すように、スタック型バーコード21が印刷(記録)されている記録媒体20を読取可能である。
なお、図1において、符号Dは記録媒体20の搬送方向を示している。また、説明を簡単にするために、本実施形態では、搬送方向DはX軸方向としている。また、搬送方向Dに直交する方向をY軸方向としている。
撮像素子111として密着型一次元撮像素子を採用して装置の小型化等を図っているが、撮像素子111としては、読み取り対象の記録媒体20のスタック型バーコードを読み取り対象とする二次元のエリアセンサ等を採用することも可能である。また、搬送機構として定速の搬送機構を採用しているが、手動によるものも採用可能である。撮像素子111は、たとえばCCDやCMOSセンサにより形成される。
画像メモリ12は、撮像素子111で撮像されたスタック型バーコード21を含む記録媒体20の画像データを記憶(格納)する。なお、この画像メモリ12は、RAM,SDRAM,DDRSDRAM,RDRAMなど、画像データを記憶しうるものであれば如何なるものであってもよい。
データ処理部13は、位置検出処理部131、構造解析部132、および復号部133を主構成要素として有している。
データ処理部13を構成する各要素は、CPUやROM,RAMといったハードウェアにより実現することができる。また、本実施形態では、データ処理部13は、位置検出処理部131、構造解析部132、および復号部133の3つの主要構成要素を含む形態で構成されているが、たとえば位置検出処理部131を前処理部とし、構造解析部132および復号部133を本処理部として構成することも可能である。
位置検出処理部131は、画像メモリ12に格納された画像データを読み込み、その画像データにおけるスタック型バーコード21の位置を検出し、切り出す。
本実施形態の位置検出処理部131は、シンボル位置検出部1311、およびシンボル切出部1312を有する。
シンボル位置検出部1311は、記録媒体20のデジタル画像を画像メモリ12から読み出して(入力して)スタック型バーコード21の位置を検出する。シンボル位置検出部1311は、位置検出結果をシンボル切出部1312に供給する。
シンボル切出部1312は、シンボル位置情報に基づいてスタック型バーコード21のイメージ(像)を切り出す。シンボル切出部1312は、切り出したスタック型バーコード21のイメージ情報を構造解析部132に供給する。
構造解析部132は、切り出したスタック型バーコード21の画像データのカラムおよびロウの構造解析を行い、各カラムおよび各ロウの境界位置を特定する。
本実施形態の構造解析部132は、カラム解析部1321およびロウ解析部1322を有する。
カラム解析部1321は、スタック型バーコード21のカラム構造を解析して各カラムの境界位置を特定する。
ロウ解析部1322は、スタック型バーコード21のロウ構造を解析して各ロウの境界位置を特定する。
構造解析部132は、カラム解析部1321の解析結果およびロウ解析部1322の解析結果を復号部133に供給する。
復号部133は、構造解析結果に基づき、スタック型バーコードのコード化情報を、たとえばキャラクタ情報に復号する。復号部133の復号結果はたとえば表示部14に表示される。
本実施形態では、復号部133においては、低レベル復号処理および高レベル復号処理が行われる。具体的には、PDF417の場合において、低レベル復号処理は、データカラムを構成するバーの線幅とスペースの線幅とからなるコードワードが0〜928の番号が付けられた、929個のコードで示される中間情報に変換される処理である。
次に行われる高レベル復号処理は、929個のコードで示される中間情報に変換された後、所定ルールに基づいて最終言語にデコード(復号)される処理である。この最終言語としては、PDF417では、ASCII文字やバイナリ表現、その他のキャラクタ等がある。
本実施形態の復号部133は、低レベル復号部1331および高レベル復号部1332を有する。
低レベル復号部1331は、構造解析部132の解析結果に基づいてコードワードごとにその走査反射率特性(波形)よりバーおよびスペースパターンを生成し、そのパターンからコードワードを特定して、コードワードマトリクスを、高レベル復号部1332に出力する。なお、走査反射率特性(波形)は、たとえば、特開2014−191755号公報に説明されているので、ここでの説明は省略する。
より具体的には、本実施形態の低レベル復号部1331は、走査反射率特性(波形)から線幅(エレメント幅)の配列によって形成されるXシーケンスと呼ばれる数値列であるバーおよびスペースパターンを生成し、このXシーケンスを線幅(エレメント幅)の配列によって形成されるバーおよびスペースのTシーケンスに変換する変換機能を有する。
低レベル復号部1331は、変換されたバーおよびスペースのTシーケンスから計算されるクラスタ値CTを、ロウ番号から決まる理論クラスタ値CRと比較するクラスタ比較機能を有する。
低レベル復号部1331は、さらにクラスタ値CTとCRに差異がある場合はその差異の程度に応じてその差異がゼロとなるようにバーおよびスペースシーケンスを修正する線幅(エレメント幅)修正機能を有している。
図2は、本実施形態に係る低レベル復号部の要部の構成例を示すブロック図である。
図2に示す低レベル復号部1331は、線幅計測部としてのXシーケンス計測部13311、Tシーケンス計測部13312、コードワード取得部13313、およびTシーケンス修正部13314を有している。
図2に示す低レベル復号部1331において、上記変換機能は、Xシーケンス計測部13311およびTシーケンス計測部13312により実現され、クラスタ比較機能および線幅(エレメント幅)修正機能は、Tシーケンス修正部13314により実現される。
Xシーケンス計測部13311は、基本的に、画像データを形成する複数の画素値に基づき、スタック型バーコード21のバーおよびスペースの線幅を計測する。
具体的には、Xシーケンス計測部13311は、スタック型バーコード21の各ロウの走査反射特性について、カラム解析部1321で決定されたカラム境界を両端とするセグメント(すなわち部分走査反射特性)を取り出し、このセグメントについてバー(黒色で示す)とスペース(白色で示す)からなる線幅(エレメント幅)の配列によって形成されるXシーケンスと呼ばれる数値列を求める。
また、Xシーケンス計測部13311は、測定した線幅を正規化する。
ここでいう正規化とは、画素数によって表現されている線幅(エレメント幅)データをモジュール数表現に変換する処理のことをいう。PDF417ではモジュールは1〜6の値をとる。1モジュールはバーまたはスペースの最小幅に対応する。1カラムは17モジュールによって構成される。
Tシーケンス計測部13312は、線幅計測部としてのXシーケンス計測部13311によって計測されたスタック型バーコード21のバーおよびスペースの線幅からTシーケンスを計測する。
具体的には、Tシーケンス計測部13312は、Xシーケンスの隣接する2つのエレメントを1つずつシフトさせながら足し合わせてTシーケンスと呼ばれる数値列を求める。
コードワード取得部13313は、Tシーケンス計測部13312によって計測されたTシーケンスまたはTシーケンス修正部13314で修正された修正Tシーケンスに対応するコードワードを取得する。
コードワード取得部13313は、テーブルメモリ133131を有しており、テーブルメモリ133131には、Tシーケンスとコードワードとの対応関係を示すコードワード変換(参照)テーブルが格納されている。
コードワード取得部13313は、テーブルメモリ133131にあらかじめ用意しておいたコードワード変換(参照)テーブルを参照して各Tシーケンスに対応するコードワードを決定する。
また、本実施形態によれば、コードワード取得部13313は、Tシーケンス修正部13314で修正されたTシーケンスに対応するコードワードを参照し、該当するコードワードを取得する。
Tシーケンス修正部13314は、Tシーケンス計測部13312によるTシーケンスから算出したクラスタ値CTと理論クラスタ値CRとを比較し、その差異が生じた場合に、理論クラスタ値CRと、Tシーケンスとコードワードとの変換テーブルを用いてTシーケンスを修正する。
また、Tシーケンス修正部13314は、Tシーケンスから得られるクラスタ値CTが理論クラスタ値CRに一致するように、Tシーケンスを修正する。
また、Tシーケンス修正部13314は、異なる数値列となるように修正した複数のTシーケンスからコードワード参照を行う少なくとも一つの有効なTシーケンスを取得する。
また、Tシーケンス修正部13314は、Tシーケンスから得られるクラスタ値CTと理論クラスタ値CRとの差異が±1のときにTシーケンスの修正を行う。
図3は、図2のTシーケンス修正部の構成例を示すブロック図である。
このTシーケンス修正部13314は、比較部133141および修正部133142を有する。
比較部133141は、Tシーケンス計測部13312によるTシーケンスから算出したクラスタ値CTと理論クラスタ値CRとを比較し、その結果を修正部133142に出力する。
修正部133142は、比較部133141の比較の結果、クラスタ値CTと理論クラスタ値CRとの間に、差異が生じた場合に、理論クラスタ値CRと、Tシーケンスとコードワードとの変換テーブルを用いてTシーケンスを修正する。
本実施形態では、クラスタ値CTと理論クラスタ値CRとの差(コードワード差)が±1である場合にTシーケンスに修正をかけるようにしている。
ここで、クラスタ値CTと理論クラスタ値CRとの差(コードワード差)がある場合にTシーケンスに修正をかけるようにした構成について述べる。
PDF417等のスタック型バーコードは誤り訂正機能を持っている。誤り訂正能力は、スタック型バーコードに組み込まれている誤り訂正コードワードの数が多いほど、より多くの誤りを訂正することができる。誤りの数が誤り訂正能力を超えると誤り訂正できなくなるので、誤りの数は事前にできるだけ少なくしておく必要がある。
誤りには、「事前に把握できる誤り」と、「誤り訂正処理の過程で検出できる誤り」とがある。
「事前に把握できる誤り」とは、バーおよびスペース判定の結果得られるXシーケンスまたはTシーケンスに対して、Tシーケンスから計算されるクラスタ値CTに対するコードワードテーブル内を検索したとき、該当するコードワードが存在しないことから顕在化する誤りを指し、PDF417規格では「erasure」と呼ばれる。これは、スタック型バーコードの擦れや、印刷不良により、バーおよびスペースパターンが損傷を受けた場合に生じることが多い。
これに対して「事前に把握できない誤り」は、「substitution」と呼ばれ、線幅(エレメント幅)や総モジュール数の条件を満たしていて、コードワードテーブル参照でも該当するコードワードが存在した場合、このコードワードが誤っているかどうかは、わからない。
本実施形態においては、事前に把握できる誤りを小さくする構成を採用する。
いま、あるスタック型バーコードを読み取って、1または複数の誤り(Erasure)を含む結果が得られたとする。
上述したように、クラスタ値CTはPDF417規格に基づいて、Tシーケンスから計算されるクラスタ値である。一方、理論クラスタ値CRはコードワードのロウ番号から決定されるクラスタ値である。
ここで両クラスタ値に着目する。いまTシーケンスの要素をT[0:5]とすると、クラスタ値CTは次のように定義される。
CT=(T[0]−T[1]+T[4]−T[5]+9)mod 9
クラスタ値CTは、走査反射率特性のゆらぎによって線幅(エレメント幅)T[0:5]が変化すると、値が変わってしまう。一方、理論クラスタ値CRはコードワードが存在するロウ番号から決まるので、ロウ番号が正しければ変化することはない。
理論上、クラスタ値CTと理論クラスタ値CRは一致する。しかしクラスタ値CTが「0」,「3」,「6」以外の値の場合、コードワード参照を行うことができなくなるため、この時点で「Erasure」エラーが確定する。
しかし、クラスタ値CTと理論クラスタ値CRの差異が小さければ、クラスタ値CTが理論クラスタ値CRに一致するように、Tシーケンスの線幅(エレメント幅)の要素T[0:5]を調整することにより、コードワード参照を実行できるようにすることができる。
上述したように、本実施形態では、クラスタ値CTと理論クラスタ値CRの差異(コードワード差)が±1である場合にTシーケンスに修正(補正)をかけるようにしている。
高レベル復号部1332は、コードワードマトリクスに基づいてエラー訂正を行い、訂正後のコードワードマトリクスよりデータを復号する。
高レベル復号部1332の復号結果はたとえば表示部14に表示される。
次に、スタック型バーコード21の一例であるPDF417の構造について説明した後、スタック型バーコード21の具体的な読み取り処理である位置検出処理、傾き補正処理、構造解析処理、および復号処理について説明する。
(スタック型バーコード PDF417の構造)
図4は、スタック型バーコード21であるPDF417のラベル構造の画像データの一例を示す図である。なお、このスタック型バーコードPDF417は、ISO/IEC15438として国際規格化されている。
図4において、スタック型バーコード21は、図中のY軸方向(垂直方向)をロウ方向(複数のロウが配列されている方向)DR、X軸方向(水平方向)をカラム方向(複数のカラムが配列されている方向)DCとし、カラム方向DCにおいて、5つに大きく分かれている。
すなわち、図4に示すように、スタック型バーコード21は、5カラムに分かれており、中央にデータカラム211が配置され、また、データカラム211の左右にはレフトロウインジケータ212、ライトロウインジケータ213、さらに、その左右にはスタートパターン214、ストップパターン215が配置されている。
また、各カラムを形成するバーコードは、黒い部分のバーBRと白い部分のスペースSPとで構成されており、スタートパターン214、ストップパターン215には、ビッグバーと呼ばれる幅の広いバーがそれぞれ形成されている。ビッグバーBBRは、図4において、スタートパターン214およびストップパターン215ともに、左側の黒い部分で幅の一番広いバーである。
さらに、図4に示すように、データカラム211、レフトロウインジケータ212、ライトロウインジケータ213は各々、ロウ方向DRに、6行(ロウ1〜ロウ6)から構成されている。各ロウ(行)を構成する3つのカラム(データカラム211、レフトロウインジケータ212、ライトロウインジケータ213)にはそれぞれコードワードが1個ずつ含まれている。
たとえば、スタック型バーコード21のデータカラム211には、1個(データカラム1カラム分)×6行より6個のコードワードが構成されている。
なお、コードワードとは、ある数字、文字またはその他のシンボルを表す値、またはこれらに関連付けられた値を符号化するための基本となる単位である。
また、ストップパターン215を除く各カラムは、バーBRおよびスペースSPが4個ずつ存在し、各線幅は、モジュール(単位)と称される最小幅の整数倍になっている。また、1コードワードの線幅は17モジュールであり、各々のバーBR、スペースSPの最大単位は6となっている。なお、ストップパターン215は、バーBRが5個、スペースSPが4個ずつ存在し、1コードワードの線幅は18モジュールとなっている。
なお、図4に示すスタック型バーコード21では、1個のデータカラムであるが、これに限定されるものではなく、複数個のデータカラムであってもよい。
(スタック型バーコードの読取方法)
次に、本実施形態に係るスタック型バーコードであるPDF417の読取方法について説明する。
図5は、本実施形態に係るスタック型バーコードの読取方法の流れを示すフローチャートである。図5に関連付けて、本実施形態に係るスタック型バーコードの読取方法の流れを概説する。そして概説した後、各処理(ステップST1〜ステップST6)について、それぞれ詳述する。
まず、スタック型バーコード21の位置検出が行われる(ステップST1)。具体的には、図1に示すように、スタック型バーコード読取装置10の撮像素子111は、媒体搬送機構112に沿って所定位置まで移動した記録媒体20のスタック型バーコード21を照射した光の反射光を光電変換によって電気信号に変換して画像データを得る。
そして、得られたスタック型バーコード21の画像データは、画像メモリ12に記憶される。画像メモリ12は二次元的に配列された有限個の画素で構成されている。
本実施形態では、撮像されたスタック型バーコード21の画像データは、各画素の(画素値である)輝度値を数値で表したものである。この輝度値は、たとえば0〜255までの整数値として表される。
その後、データ処理部13の位置検出処理部131は、画像メモリ12に記憶された画像データを読み込み、その画像データ中のスタック型バーコード21の位置を検出する。
このようにして位置検出されたスタック型バーコード21は、たとえばデータ処理部13において切り出され(ステップST2)、切り出された画像データがたとえば画像メモリ12に記憶される。なお、スタック型バーコード21全体よりも少し大きな矩形状に切出しが行われる。
次に、データ処理部13において、構造解析(カラム解析およびロウ解析)が行われる(ステップST3、ST4)。
より具体的には、データ処理部13の構造解析部132は、ステップST2において切出された画像データに基づき、スタック型バーコード21の構造を解析する。構造解析部13においては、カラム解析(ステップST3)およびロウ解析(ステップST4)が行われる。
最後に、データ処理部13の復号部133において、復号処理が行われる(ステップST5、ST6)。
より具体的には、データ処理部13の復号部133は、ステップST3、ST4において解析されたスタック型バーコード21の構造に基づき、スタック型バーコード21の復号処理を行う。
このとき、スタック型バーコード21の一種であるPDF417では、低レベル復号処理および高レベル復号処理の2つの復号処理が行われ、復号部133の低レベル復号部1331においては低レベル復号処理が行われ(ステップST5)、高レベル復号部1332においては高レベル復号処理が行われる(ステップST6)。
低レベル復号処理では、データカラムを構成するバーの線幅とスペースの線幅とからなるコードワードが0〜928の番号が付けられた、929個のコードで示される中間情報に変換される。
次に行われる高レベル復号処理では、929個のコードで示される中間情報に変換された後、所定ルールに基づいて最終言語にデコード(復号)される。
次に、図5に示すフローチャートの所要の処理について、それぞれ詳述する。
(構造解析)
図5のステップST3、ST4の構造解析処理について説明する。
図6は、図5に示すフローチャートにおける構造解析処理(ステップST3、ST4)の流れを示すフローチャートである。
図6において、構造解析部132では、まず、水平射影の処理が行われる(ステップST21)。
具体的には、スタック型バーコード21の画像データに基づいて、X軸方向(水平方向)に配列された画素ごとに、各Y軸方向(垂直方向)に配列された全画素の輝度値の総和を演算し、画像メモリ12に格納する処理である。
その後、求めた輝度値の総和について、X軸方向(水平方向)に隣接する画素間で差分をとり、その差分値を用いてスタートパターン214およびストップパターン215の解析が行われる(ステップST22)。
図4等に示すように、スタートパターン214とストップパターン215は、他のデータカラム211、レフトロウインジケータ212、ライトロウインジケータ213のコードワードと異なり、すべてのロウ(本実施形態では、6行)に共通不変のパターンであることから、X軸への射影(水平射影)をとることでスタートパターン214またはストップパターン215が平均化され、輝度むらや汚れ等の影響を受けにくく、安定した検出が可能となる。
そして、スタートパターン214およびストップパターン215が適切に検出されたか否かが判断された後(ステップST23)、スタートパターン214およびストップパターン215が適切に検出されたと判定された場合には、処理をステップST25に移行する。
一方、ステップST23において、スタートパターン214およびストップパターン215が適切に検出されていないと判定された場合には、デコード不可、すなわち、復号できないとして処理を終了する(ステップST24)。
次いで、ピーク検出が行われる(ステップST25)。
ピークと判断された場合には、ピーク値をもつ画素の位置を画像メモリ12に記憶させる。
次いで、カラムの境界の検出が行われる(ステップST26)。
より具体的には、ステップST25において記憶されたピーク値をもつ画素の位置に基づき、スタートパターン214、レフトロウインジケータ212、データカラム211、ライトロウインジケータ213、ストップパターン215の5つのカラムの境界を検出する。
次いで、ロウの境界の検出が行われる(ステップST27)。
そして、ロウの境界の検出によって、画像データの各ラインLがどのロウに属するかを判定し、デコード(復号)可能として処理を終了する(ステップST28)。
(低レベル復号)
次に、図5のステップST5の低レベル復号処理について説明する。
図7は、図5に示すフローチャートにおける低レベル復号処理(ステップST5)の流れを示すフローチャートである。
この低レベル復号処理は、図7に示すように、スタック型バーコード21の各ロウの走査反射特性について、カラム解析で決定されたカラムの境界を両端とするセグメント(すなわち、走査反射率波形)を取り出し、1つのカラムを構成するバーの線幅とスペースの線幅との配列によって形成されるXシーケンスと呼ばれる数値列を求めるXシーケンス計測処理(ステップST31)と、Xシーケンスの隣接する2つのバーおよびスペースを1つずつシフトさせながら足し合わせてTシーケンスと呼ばれる数値列を求めるTシーケンス計測処理(ステップST32)と、予め用意しておいたコードワード変換(参照)テーブルを参照して各Tシーケンスに対応するコードワードを取得(決定)するコードワード取得処理(ステップST33)と、Tシーケンス計測部13312によるTシーケンスから算出したクラスタ値CTと理論クラスタ値CRとを比較し、その差異が生じた場合に、理論クラスタ値CRと、Tシーケンスとコードワードとの変換テーブルを用いてTシーケンスを修正するTシーケンス修正処理(ステップST34)と、を含む。
スタック型バーコード21の一種であるPDF417では、低レベル復号処理および高レベル復号処理の2つの復号処理が行われる。具体的には、PDF417の場合において、低レベル復号処理は、データカラムを構成するバーの線幅とスペースの線幅とからなるコードワードが0〜928の番号が付けられた、929個のコードで示される中間情報に変換される処理である。
次に行われる高レベル復号処理は、929個のコードで示される中間情報に変換された後、所定ルールに基づいて最終言語にデコード(復号)される処理である。この最終言語としては、PDF417では、ASCII文字やバイナリ表現、その他のキャラクタ等がある。
(低レベル復号におけるXシーケンス計測)
Xシーケンス計測処理においては、各ロウにおいて、ロウに含まれる複数のラインLを平均化したライン波形を走査して、バーの線幅およびスペースの線幅を求める線幅計測を行った後に、画素数によって表現されている線幅をモジュール数表現に変換して、Xシーケンスを得る。
なお、走査線は、たとえば、各ロウにおいて、ロウ方向のほぼ真中に形成された複数のラインLであり、すなわち、複数行で構成された画素の行列である。さらに、複数のラインLを構成する画素の輝度値の平均を計算し、平均した画素の輝度値を用いて、そのロウにおける画素の輝度値を示す走査反射率波形として復号処理に用いる。
このように、Xシーケンス計測処理においては、線幅計測が行われる。より具体的には、線幅計測とは、各ロウの画素パターンをスキャンして、バーとスペースの長さ、すなわち線幅を求める処理をいう。
(低レベル復号におけるTシーケンス計測)
Xシーケンス計測処理の次に、Tシーケンス計測処理を行う(図7のステップST32)。
具体的には、Tシーケンス計測処理では、XシーケンスX[0:7]をTシーケンスT[0:5]に変換する。これは、隣接する2個のXiとXi+1を加算したものである。
たとえば、XシーケンスX[0:7]=[2,1,1,1,1,3,2,6]がTシーケンスT[0:5]=[3,2,2,2,4,5]の線幅配列に変換される。
(低レベル復号におけるコードワード取得)
次に、コードワード取得処理を行う(図7のステップST33)。
具体的には、テーブルメモリ133131に予め用意しておいたコードワード変換テーブルを参照して各Tシーケンスに対応するコードワードを取得(決定)する。
すなわち、低レベル復号処理が行われ、1つのカラムを構成する4個のバーの線幅と4個のスペースの線幅でなるコードワードが0〜928の番号が付けられた、929個のコードで示される中間情報に変換される。
(低レベル復号におけるTシーケンス修正処理)
本実施形態では、コードワード取得処理(ステップST33)を行った後、直ちに高レベル復号処理に移行せずに、Tシーケンス修正処理を行う(ステップST34)。
より具体的には、Tシーケンスから算出したクラスタ値CTと理論クラスタ値CRとを比較し、その差異が生じた場合に、理論クラスタ値CRと、Tシーケンスとコードワードとの変換テーブルを用いてTシーケンスを修正する。
すなわち、本実施形態では、クラスタ値CTと理論クラスタ値CRとの差(コードワード差)がある場合にTシーケンスに修正をかけるようにしている。
既に述べたように、PDF417等のスタック型バーコードは誤り訂正機能を持っている。誤り訂正能力は、スタック型バーコードに組み込まれている誤り訂正コードワードの数が多いほど、より多くの誤りを訂正することができる。誤りの数が誤り訂正能力を超えると誤り訂正できなくなるので、誤りの数は事前にできるだけ少なくしておく必要がある。
誤りには、「事前に把握できる誤り」と、「誤り訂正処理の過程で検出できる誤り」とがある。
「事前に把握できる誤り」とは、バーおよびスペース判定の結果得られるXシーケンスまたはTシーケンスに対して、Tシーケンスから計算されるクラスタ値CTに対するコードワードテーブル内を検索したとき、該当するコードワードが存在しないことから顕在化する誤りを指し、PDF417規格では「erasure」と呼ばれる。これは、スタック型バーコードの擦れや、印刷不良により、バーおよびスペースパターンが損傷を受けた場合に生じることが多い。
これに対して「事前に把握できない誤り」は、「substitution」と呼ばれ、線幅(エレメント幅)や総モジュール数の条件を満たしていて、コードワードテーブル参照でも該当したコードワードが存在した場合、このコードワードが誤っているかどうかは、わからない。
本実施形態においては、事前に把握できる誤りを小さくする構成を採用している。
図8は、本実施形態においてスタック型バーコードとしてのPDF417を読み取って得られた結果の一例を示す図である。
図8の読み取り結果においては、5個の誤り(Erasure)の結果#1〜#5を含んでおり、ロウ(ROW)とカラム(COL)は各コードワードのマトリクス上の位置を、クラスタ値CTはPDF417規格に基づいて、Tシーケンスから計算されるクラスタ値である。一方、理論クラスタ値CRはコードワードのロウ番号から決定されるクラスタ値である。
なお、前述したように、レベル復号処理は、データカラムを構成するバーの線幅とスペースの線幅とからなるコードワードが「0〜928」の番号が付けられた、929個のコードで示される中間情報に変換される。図8における最終結果において、誤りがなく正常に変換が行われた場合は「0〜928」の番号が提示され、正常に変換が行われなかった場合には「0〜928」の番号以外の番号たとえば「999」が提示される。そして、最終結果の番号「999」はTシーケンス修正が可能であるが正しくなかった場合やTシーケンス修正ができない場合の結果を示す番号となっている。以下では番号「999」を修正不調番号という。
また、以下に示す図8の説明において、Tシーケンス修正が可能であるが修正が正しくない場合のTシーケンス(TSEQ)修正の結果は「NG」で表し、Tシーケンス修正が正しい場合のTシーケンス修正の結果は「OK」で表し、クラスタ値CTと理論クラスタ値CRとの差が±1より大きい場合はTシーケンス修正をしないことを「−」で表している。
ここで両クラスタ値に着目する。いまTシーケンスの要素をT[0:5]とすると、クラスタ値CTは次のように定義される。
CT=(T[0]−T[1]+T[4]−T[5]+9)mod 9
クラスタ値CTは、走査反射率特性のゆらぎによって線幅(エレメント幅)T[0:5]が変化すると、値が変わってしまう。一方、理論クラスタ値CRはコードワードが存在するロウ番号から決まるので、ロウ番号が正しければ変化することはない。
理論上、クラスタ値CTと理論クラスタ値CRは一致する。しかし、クラスタ値CTが「0」,「3」,「6」以外の値の場合、コードワード参照を行うことができなくなるため、この時点でErasureエラーが確定する。
しかし、クラスタ値CTと理論クラスタ値CRの差異が小さければ、クラスタ値CTが理論クラスタ値CRに一致するように、Tシーケンスの線幅(エレメント幅)T[0:5]を調整することにより、コードワード参照を実行できるようにすることができる。
上述したように、本実施形態では、クラスタ値CTと理論クラスタ値CRの差異(コードワード差)が±1である場合にTシーケンスに修正(補正)をかけるようにしている。
図8の読み取り結果は、以下の通りである。
結果#1では、Tシーケンスは「233223」、クラスタ値CTが「7」、ロウ番号ROW#は「3」、カラム番号COL#は「11」、理論クラスタ値CRは「6」、クラスタ値CTと理論クラスタ値CRとの差異は「1」でTシーケンス(TSEQ)修正可能であり、これによりTシーケンス(TSEQ)修正の可否は「する(可)」であり、Tシーケンス(TSEQ)修正候補は「243223」と「233224」であるが、Tシーケンス(TSEQ)修正結果は「NG」であり、以上から最終結果は修正不調番号「999」が提示されている。
結果#2では、Tシーケンスは「868972」、クラスタ値CTが「7」、ロウ番号ROW#は「5」、カラム番号COL#は「4」、理論クラスタ値CRは「3」、クラスタ値CTと理論クラスタ値CRとの差異は「4」であり、その結果Tシーケンス(TSEQ)修正の可否は「しない(否)」であり、以上から最終結果は修正不調番号「999」が提示されている。
結果#3では、Tシーケンスは「562233」、クラスタ値CTが「8」、ロウ番号ROW#は「13」、カラム番号COL#は「11」、理論クラスタ値CRは「0」、クラスタ値CTと理論クラスタ値CRとの差異は「1」でTシーケンス(TSEQ)修正可能であり、これによりTシーケンス(TSEQ)修正の可否は「する(可)」であり、Tシーケンス(TSEQ)修正候補は「662233」と「552233」であり、Tシーケンス(TSEQ)修正結果は「OK」であり、以上からTシーケンス(TSEQ)修正後のクラスタ値CTは「0」となり、最終結果は正常な番号「806」が提示されている。
結果#4では、Tシーケンスは「445645」、クラスタ値CTが「8」、ロウ番号ROW#は「15」、カラム番号COL#は「12」、理論クラスタ値CRは「6」、クラスタ値CTと理論クラスタ値CRとの差異は「2」であり、その結果Tシーケンス(TSEQ)修正の可否は「しない(否)」であり、以上から最終結果は修正不調番号「999」が提示されている。
結果#5では、Tシーケンスは「345566」、クラスタ値CTが「8」、ロウ番号ROW#は「40」、カラム番号COL#は「5」、理論クラスタ値CRは「0」、クラスタ値CTと理論クラスタ値CRとの差異は「1」でTシーケンス(TSEQ)修正可能であり、これによりTシーケンス(TSEQ)修正の可否は「する(可)」であり、Tシーケンス(TSEQ修正候補は「445566」と「335566」と「345576」と「345565」、Tシーケンス(TSEQ)修正結果は「OK」であり、Tシーケンス(TSEQ)修正後のクラスタ値CTは「0」となり、最終結果は正常な番号「806」が提示されている。
このように、図8の例では、5個の誤りのうち3個がTシーケンス修正の対象になる。実際、クラスタ値CTが理論クラスタ値CRに一致するように修正をかけると、3個のうち、2個についてコードワード参照で該当するコードワードが存在する結果となった。この処理によって「Erasure」を当初の5個から3個に減らすことができた。
なお、クラスタ値CTと理論クラスタ値CRとの差(コードワード差)が±1より大きい場合についても、同様の修正を行うことは理論的には可能であるが、修正の候補の数が多くなって処理時間を増大させるおそれがあるため、この場合、製品コストに応じた構成をとるようにすればよい。
(Tシーケンス修正の具体的な処理フロー)
図9および図10は、本実施形態に係るTシーケンス修正の具体的な処理フローを示すフローチャートである。
ここで、本実施形態に係るTシーケンス修正部13314におけるTシーケンス修正の具体的な処理フローについて図9および図10に関連付けて説明する。
Tシーケンス修正部13314においては、まず、Tシーケンスから算出したクラスタ値CTと理論クラスタ値CRとが比較され、両クラスタ値が等しいか否かが判定される(ステップST61)。
ステップST61において、クラスタ値CTと理論クラスタ値CRが等しいと判定されると、Tシーケンス修正は不要として通常の処理が行われる(ステップST62)。
ステップST61において、クラスタ値CTと理論クラスタ値CRが等しくないと判定されると、Tシーケンス修正を行うべく、まず、クラスタ値CTが理論クラスタ値CRより大きいか否かが判定される(ステップST63)。
ステップST63において、クラスタ値CTが理論クラスタ値CRより大きいと判定された場合にはステップST64の処理に移行し、大きくない(小さい)と判定された場合には図10のステップST83の処理に移行する。
クラスタ値CTが理論クラスタ値CRより大きい場合は、Tシーケンスの最上位(第1位)T[0]の値をマイナス1(−1)し、Tシーケンスの最上位側から第2位T[1]の値をプラス1(+1)し、Tシーケンスの最上位側から第5位T[4]の値をマイナス1(−1)し、Tシーケンスの最上位側から第6位T[5]の値をプラス1(+1)して、候補となる修正TシーケンスTlを生成する処理を行う。
クラスタ値CTが理論クラスタ値CRより小さい場合は、Tシーケンスの最上位(第1位)T[0]の値をプラス1(+1)し、Tシーケンスの最上位側から第2位T[1]の値をマイナス1(−1)し、Tシーケンスの最上位側から第5位T[4]の値をプラス1(+1)し、Tシーケンスの最上位側から第6位T[5]の値をマイナス1(−1)して、候補となる修正TシーケンスTlを生成する処理を行う。
すなわち、本実施形態では、クラスタ値CTが理論クラスタ値CRより大きいか否かで、クラスタ値CTの各要素にプラス1するかマイナス1するかを切り替えて、幅広く候補となる修正TシーケンスTlを生成するようにしている。
また、図9および図10の処理では、候補となる生成した修正TシーケンスTlが確度の高い候補として選択できるように、その修正TシーケンスTlに対応するXシーケンスが存在するか否かを判別し、条件を満たすXシーケンスが存在する場合に修正TシーケンスTlを候補Tシーケンスとして採用するようにしている。
ここで、Xシーケンスを生成して候補条件に採用しているのは、基本的に、Xシーケンスからシフト演算によりTシーケンスが求められることから、条件を満たすXシーケンスが存在するということは、修正Tシーケンス自体も実存するものに即している可能性が高いとみなすことが可能となるからである。
ステップST64においては、Tシーケンスの最上位(第1位)T[0]の値をマイナス1(−1)して修正TシーケンスTlを生成し、この修正TシーケンスTlに対応するXシーケンスXseqを生成する(ステップST65)。そして、生成したXシーケンスXseqが条件を満たす最低1個のXシーケンスとして存在するか否かが判定される(ステップST66)。
ステップST66において、条件を満たすと判定された場合には、修正TシーケンスTlを候補Tシーケンスバッファに追加(格納)する(ステップST67)。ステップST67の処理後またはステップST66において条件を満たさないと判定された場合にはステップST68の処理に移行する。
ステップST68においては、Tシーケンスの最上位側から第2位T[1]の値をプラス1(+1)して修正TシーケンスTlを生成し、この修正TシーケンスTlに対応するXシーケンスXseqを生成する(ステップST69)。そして、生成したXシーケンスXseqが条件を満たす最低1個のXシーケンスとして存在するか否かが判定される(ステップST70)。
ステップST70において、条件を満たすと判定された場合には、修正TシーケンスTlを候補Tシーケンスバッファに追加(格納)する(ステップST71)。ステップST71の処理後またはステップST70において条件を満たさないと判定された場合にはステップST72の処理に移行する。
ステップST72においては、Tシーケンスの最上位側から第2位T[1]の値をプラス1(+1)して修正TシーケンスTlを生成し、この修正TシーケンスTlに対応するXシーケンスXseqを生成する(ステップST73)。そして、生成したXシーケンスXseqが条件を満たす最低1個のXシーケンスとして存在するか否かが判定される(ステップST74)。
ステップST74において、条件を満たすと判定された場合には、修正TシーケンスTlを候補Tシーケンスバッファに追加(格納)する(ステップST75)。ステップST75の処理後またはステップST74において条件を満たさないと判定された場合にはステップST76の処理に移行する。
ステップST76においては、Tシーケンスの最上位側から第6位T[5]の値をプラス1(+1)して修正TシーケンスTlを生成し、この修正TシーケンスTlに対応するXシーケンスXseqを生成する(ステップST77)。そして、生成したXシーケンスXseqが条件を満たす最低1個のXシーケンスとして存在するか否かが判定される(ステップST78)。
ステップST78において、条件を満たすと判定された場合には、修正TシーケンスTlを候補Tシーケンスバッファに追加(格納)する(ステップST79)。ステップST79の処理後またはステップST78において、条件を満たさないと判定された場合にはステップST80の処理に移行する。
ステップST80においては、候補Tシーケンスバッファに追加した修正TシーケンスTlに有効Tシーケンスが最低1個存在するか否かが判定される。
ステップST80において有効Tシーケンスが存在すると判定された場合にはTシーケンス修正の結果が真(正しい、OK)であると判定される(ステップST81)。一方、有効Tシーケンスが存在しないと判定された場合にはTシーケンス修正の結果が偽(正しくない、NG)であると判定される(ステップST82)。
ステップST63において、クラスタ値CTが理論クラスタ値CRより大きくない(小さい)と判定された場合には図10のステップST83の処理に移行し、以下の処理が行われる。
ステップST83においては、Tシーケンスの最上位(第1位)T[0]の値をプラス1(+1)して修正TシーケンスTlを生成し、この修正TシーケンスTlに対応するXシーケンスXseqを生成する(ステップST84)。
ここで生成される修正TシーケンスTlは、図8の例を参照すると、結果#5のTシーケンス「345566」の最上位(第1位)T[0]の値をプラス1(+1)して候補Tシーケンスとして「445566」が生成される。
そして、生成したXシーケンスXseqが条件を満たす最低1個のXシーケンスとして存在するか否かが判定される(ステップST85)。
ステップST85において、条件を満たすと判定された場合には、修正TシーケンスTlを候補Tシーケンスバッファに追加(格納)する(ステップST86)。ステップST86の処理後またはステップST85において条件を満たさないと判定された場合にはステップST87の処理に移行する。
ステップST87においては、Tシーケンスの最上位側から第2位T[1]の値をマイナス1(−1)して修正TシーケンスTlを生成し、この修正TシーケンスTlに対応するXシーケンスXseqを生成する(ステップST88)。
ここで生成される修正TシーケンスTlは、図8の例を参照すると、結果#5のTシーケンス「345566」の第2位T[1]の値をマイナス1(−1)して候補Tシーケンスとして「335566」が生成される。
そして、生成したXシーケンスXseqが条件を満たす最低1個のXシーケンスとして存在するか否かが判定される(ステップST89)。
ステップST89において、条件を満たすと判定された場合には、修正TシーケンスTlを候補Tシーケンスバッファに追加(格納)する(ステップST90)。ステップST90の処理後またはステップST89において条件を満たさないと判定された場合にはステップST91の処理に移行する。
ステップST91においては、Tシーケンスの最上位側から第5位T[4]の値をプラス1(+1)して修正TシーケンスTlを生成し、この修正TシーケンスTlに対応するXシーケンスXseqを生成する(ステップST92)。
ここで生成される修正TシーケンスTlは、図8の例を参照すると、結果#5のTシーケンス「345566」の第5位T[4]の値をプラス1(+1)して候補Tシーケンスとして「345576」が生成される。
そして、生成したXシーケンスXseqが条件を満たす最低1個のXシーケンスとして存在するか否かが判定される(ステップST93)。
ステップST93において、条件を満たすと判定された場合には、修正TシーケンスTlを候補Tシーケンスバッファに追加(格納)する(ステップST94)。ステップST94の処理後またはステップST93において条件を満たさないと判定された場合にはステップST95の処理に移行する。
ステップST95においては、Tシーケンスの最上位側から第6位T[5]の値をマイナス1(−1)して修正TシーケンスTlを生成し、この修正TシーケンスTlに対応するXシーケンスXseqを生成する(ステップST96)。
ここで生成される修正TシーケンスTlは、図8の例を参照すると、結果#5のTシーケンス「345566」の第6位T[5]の値をマイナス1(−1)して候補Tシーケンスとして「345565」が生成される。
そして、生成したXシーケンスXseqが条件を満たす最低1個のXシーケンスとして存在するか否かが判定される(ステップST97)。
ステップST97において、条件を満たすと判定された場合には、修正TシーケンスTlを候補Tシーケンスバッファに追加(格納)する(ステップST98)。ステップST98の処理後またはステップST97において、条件を満たさないと判定された場合にはステップST99の処理に移行する。
ステップST99においては、候補Tシーケンスバッファに追加した修正TシーケンスTlに有効Tシーケンスが最低1個存在するか否かが判定される。
ステップST99において、有効Tシーケンスが存在すると判定された場合にはTシーケンス修正の結果が真(正しい、OK)であると判定される(ステップST100)。一方、有効Tシーケンスが存在しないと判定された場合にはTシーケンス修正の結果が偽(正しくない、NG)であると判定される(ステップST101)。
[実施形態の主な効果]
以上説明したように、本実施形態に係るスタック型バーコード読取装置10によれば、復号部133の低レベル復号部1331は、画像データを形成する複数の画素値に基づき、スタック型バーコード(PDF417)のバーおよびスペースの線幅を計測する線幅計測部としてのXシーケンス計測部13311と、Xシーケンス計測部によって計測されたスタック型バーコード(PDF417)のバーおよびスペースの線幅から数値列であるTシーケンスを計測するTシーケンス計測部13312と、Tシーケンス計測部13312によって計測されたTシーケンスまたは修正されたTシーケンスに対応するコードワードを取得するコードワード取得部13313と、Tシーケンス計測部によるTシーケンスから得られるクラスタ値CTと理論クラスタ値CRとを比較し、両クラスタ値に差異が生じた場合に、理論クラスタ値CRと、Tシーケンスとコードワードとの変換テーブルを用いてTシーケンスを修正するTシーケンス修正部13314と、を有する。
より具体的には、本実施形態の低レベル復号部1331は、走査反射率特性(波形)から線幅(エレメント幅)の配列によって形成されるXシーケンスと呼ばれる数値列であるバーおよびスペースパターンを生成し、このXシーケンスを線幅(エレメント幅)の配列によって形成されるバーおよびスペースのTシーケンスに変換する変換機能を有する。
低レベル復号部1331は、変換されたバーおよびスペースのTシーケンスから計算されるクラスタ値CTを、ロウ番号から決まる理論クラスタ値CRと比較するクラスタ比較機能を有する。
低レベル復号部1331は、さらにクラスタ値CTと理論クラスタ値CRに差異がある場合はその差異の程度に応じてその差異がゼロとなるようにTシーケンスを修正する線幅(エレメント幅)修正機能を有している。
したがって、本実施形態によれば、以下の効果を得ることができる。
本実施形態においては、たとえば事前に検出可能な誤りの発生を抑止することができ、誤り訂正処理の処理負荷を軽減することが可能である。そして、エラー数が誤り訂正限界を超える場合であっても、スタック型バーコード(PDF417)の復号を行うことが可能となる。
また、本実施形態よれば、Tシーケンス修正部13314は、Tシーケンスから得られるクラスタ値CTが理論クラスタ値CRに一致するように、Tシーケンスを修正する。
このように、本実施形態においては、Tシーケンスから得られるクラスタ値CTが理論クラスタ値CRに一致するように、Tシーケンスを修正することにより、誤りがあった場合にもコードワード参照を実行できるようにすることができる。
また、本実施形態によれば、Tシーケンス修正部13314は、図9および図10に関連付けて説明したように、異なる数値列となるように修正した複数のTシーケンスからコードワード参照を行う少なくとも一つの有効なTシーケンスを取得する。
このように、本実施形態においては、異なる数値列となるように修正した複数のTシーケンスからコードワード参照を行う少なくとも一つの有効なTシーケンスを取得することにより、たとえば事前に把握できる誤りを可能な限り削減することが可能となる。
また、本実施形態によれば、Tシーケンス修正部13314は、Tシーケンスから得られるクラスタ値CTと理論クラスタ値CRとの差異が±1のときにTシーケンスの修正を行う。
このように、本実施形態においては、Tシーケンスから得られるクラスタ値CRと理論クラスタ値CRとの差異が±1のときにTシーケンスの修正を行うことにより、修正の候補の数を適正化でき、処理時間の増大を抑止することが可能となる。
また、本実施形態によれば、コードワード取得部13313は、Tシーケンス修正部13314で修正されたTシーケンスに対応するコードワードを参照し、該当するコードワードを取得する。
このように、本実施形態においては、Tシーケンス修正部13314で修正されたTシーケンスに対応するコードワードを参照し、該当するコードワードを取得することにより、たとえば事前に把握できる誤りを可能な限り削減することが可能となる。
結果として、本実施形態によれば、スタック型バーコード(PDF417)を読み取る場合において、事前に検出可能な誤りの発生を抑止することができ、誤り訂正処理の処理負荷を軽減することが可能である。そして、エラー数が誤り訂正限界を超える場合であっても、スタック型バーコード(PDF417)の復号を行うことが可能となる。
[他の実施形態]
上述した実施形態では、位置検出処理部131のシンボル切出し部1312の出力側に構造解析部132を配置したが、シンボル切出し部1312の出力と構造解析部132の入力との間に、切り出したバーコード21の傾斜角を検出して傾斜角を補正し、補正後のバーコード21の画像データを構造解析部132に供給する傾き補正部を設けても良い。この傾き補正部は、たとえば特開2014−191755号に開示されているものである。
スタック型バーコード21を撮像装置11でスキャンしたときには、スタック型バーコード21のロウ方向DR(Y軸方向)が必ずしも媒体搬送機構112に対して垂直の関係に位置するとは限らない。
撮像素子111によって読み取られたスタック型バーコードの画像データは、傾く場合がある。換言すれば、ロウ方向DRと画像メモリ12に格納された画像データの垂直方向が一致していない場合がある。
そのため、スタック型バーコード21の読み取り処理において、傾き補正を行うように構成しても良い。
[変形例]
上述した実施形態では、クラスタ値CTと理論クラスタ値CRの差異(コードワード差)が±1である場合にTシーケンスに修正(補正)をかけるようにしているが、差が±1より大きい場合についても、同様の修正を行うことは可能である。この場合、修正の候補の数が多くなって処理時間を増大させることもあるため、製品コストに応じた構成をとるようにすればよい。
なお、以上詳細に説明した方法は、上記手順に応じたプログラムとして形成し、CPU等のコンピュータで実行するように構成することも可能である。
また、このようなプログラムは、半導体メモリ、磁気ディスク、光ディスク、フロッピー(登録商標)ディスク等の記録媒体、この記録媒体をセットしたコンピュータによりアクセスし上記プログラムを実行するように構成可能である。
10・・・スタック型バーコード読取装置、11・・・撮像装置、111・・・撮像素子、112・・・搬送機構、12・・・画像メモリ、13・・・データ処理部、131・・・位置検出処理部、1311・・・シンボル位置検出部、1312・・・シンボル切り出部、132・・・構造解析部、1321・・・カラム解析部、1322・・・ロウ解析部、133・・・復号部、1331・・・低レベル復号部、13311・・・Xシーケンス計測部(線幅計測部)、13312・・・Tシーケンス計測部、13313・・・コードワード取得部、13314・・・Tシーケンス修正部、1332・・・高レベル復号部、14・・・表示部。

Claims (4)

  1. 情報がコード化されてバーおよびスペースで表示されたスタック型バーコードを撮像する撮像部と、
    前記撮像部が撮像した前記スタック型バーコードの画像データを記憶する画像メモリと、
    前記画像データに基づき、前記スタック型バーコードで表示されたコード化情報を復号する復号部を有するデータ処理部と、を備え、
    前記復号部は、
    前記画像データを形成する複数の画素値に基づき、前記スタック型バーコードのバーおよびスペースの線幅を計測する線幅計測手段と、
    前記線幅計測手段によって計測された前記スタック型バーコードのバーおよびスペースの線幅から数値列であるTシーケンスを計測するTシーケンス計測手段と、
    少なくとも前記Tシーケンス計測手段によって計測されたTシーケンスに対応するコードワードを取得するコードワード取得手段と、
    前記Tシーケンス計測手段によるTシーケンスから得られるクラスタ値と理論クラスタ値とを比較し、両クラスタ値に差異が生じた場合に、理論クラスタ値と、Tシーケンスと前記コードワードとの変換テーブルを用いてTシーケンスを修正するTシーケンス修正手段と、を有することを特徴とするスタック型バーコード読取装置。
  2. 前記Tシーケンス修正手段は、
    前記Tシーケンスから得られるクラスタ値が前記理論クラスタ値に一致するように、Tシーケンスを修正することを特徴とする請求項1に記載のスタック型バーコード読取装置。
  3. 情報がコード化されてバーおよびスペースで表示されたスタック型バーコードを撮像する撮像部と、
    前記撮像部が撮像した前記スタック型バーコードの画像データを記憶する画像メモリと、
    前記画像データに基づき、前記スタック型バーコードで表示されたコード化情報を復号する復号部を有するデータ処理部と、を備えたスタック型バーコード読取装置で使用されるスタック型バーコード読取方法であって、
    前記復号部において、
    前記画像データを形成する複数の画素値に基づき、前記スタック型バーコードのバーおよびスペースの線幅を計測する第1ステップと、
    前記第1ステップによって計測された前記スタック型バーコードのバーおよびスペースの線幅から数値列であるTシーケンスを計測する第2ステップと、
    少なくとも前記第2ステップによって計測されたTシーケンスに対応するコードワードを取得する第3ステップと、
    前記第2ステップによるTシーケンスから得られるクラスタ値と理論クラスタ値とを比較し、両クラスタ値に差異が生じた場合に、理論クラスタ値と、Tシーケンスと前記コードワードとの変換テーブルを用いてTシーケンスを修正する第4ステップと、を有することを特徴とするスタック型バーコード読取方法。
  4. 前記第4ステップにおいては、
    前記Tシーケンスから得られるクラスタ値が前記理論クラスタ値に一致するように、Tシーケンスを修正することを特徴とする請求項3に記載のスタック型バーコード読取方法。
JP2015074073A 2015-03-31 2015-03-31 スタック型バーコード読取装置およびスタック型バーコード読取方法 Expired - Fee Related JP6393226B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2015074073A JP6393226B2 (ja) 2015-03-31 2015-03-31 スタック型バーコード読取装置およびスタック型バーコード読取方法
US15/084,742 US9495574B2 (en) 2015-03-31 2016-03-30 Stack barcode reader and stack barcode reading method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015074073A JP6393226B2 (ja) 2015-03-31 2015-03-31 スタック型バーコード読取装置およびスタック型バーコード読取方法

Publications (2)

Publication Number Publication Date
JP2016194791A JP2016194791A (ja) 2016-11-17
JP6393226B2 true JP6393226B2 (ja) 2018-09-19

Family

ID=57015386

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015074073A Expired - Fee Related JP6393226B2 (ja) 2015-03-31 2015-03-31 スタック型バーコード読取装置およびスタック型バーコード読取方法

Country Status (2)

Country Link
US (1) US9495574B2 (ja)
JP (1) JP6393226B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112241641B (zh) * 2019-07-19 2022-07-05 杭州海康威视数字技术股份有限公司 对条形码的解码方法、终端设备及存储介质

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5489158A (en) * 1990-01-05 1996-02-06 Symbol Technologies, Inc. Printer system for removable machine readable code
US6672511B1 (en) * 1996-06-03 2004-01-06 Symbol Technologies, Inc. Omnidirectional reading of two-dimensional symbols
ATE321310T1 (de) * 2000-04-06 2006-04-15 Seiko Epson Corp Verfahren und vorrichtung zum lesen von einem zwei-dimensionalen strichkode und datenspeichermedium
JP6095194B2 (ja) * 2013-03-28 2017-03-15 日本電産サンキョー株式会社 スタック型バーコード読取装置及びスタック型バーコード読取方法

Also Published As

Publication number Publication date
US20160292482A1 (en) 2016-10-06
JP2016194791A (ja) 2016-11-17
US9495574B2 (en) 2016-11-15

Similar Documents

Publication Publication Date Title
JP4911340B2 (ja) 二次元コード検出システムおよび二次元コード検出プログラム
US7380718B2 (en) Method for reading out symbol information and device for reading out symbol information
JP3725879B2 (ja) 多解像度機械の読み取り可能な記号
EP0999519B1 (en) Distortion correction method in optical code reading
US7949187B2 (en) Character string recognition method and device
EP0561334A2 (en) Method and apparatus for decoding two-dimensional bar code using CCD/CMD camera
JPH05324887A (ja) シンボル情報読取装置
WO2007075719A2 (en) Method and system for creating and using barcodes
US8333326B2 (en) Stacked barcode reader and stacked barcode reading method
US9070033B2 (en) Stack barcode reader and stack barcode reading method
CN109657515B (zh) 一种一维条形码的解码方法及设备
JP5676183B2 (ja) バーコード読取装置およびバーコード読取方法
JP5379626B2 (ja) スタック型バーコード情報読取方法及びスタック型バーコード情報読取装置
JP6393226B2 (ja) スタック型バーコード読取装置およびスタック型バーコード読取方法
JP4652201B2 (ja) バーコードシンボル情報読取方法及びバーコードシンボル情報読取装置
US8403221B2 (en) Method and apparatus for reading barcode information
JP5683891B2 (ja) スタック型バーコード読取装置およびスタック型バーコード読取方法
JP5657987B2 (ja) スタック型バーコード読取装置およびスタック型バーコード読取方法
JP4403063B2 (ja) シンボル情報読取方法及びシンボル情報読取装置
JP5453594B2 (ja) シンボル情報読取装置及びシンボル情報読取方法
JP3730716B2 (ja) バーコード読取装置
JP2000194793A (ja) スタック型2次元バ―コ―ドのデ―タ読み取り装置及びスタック型2次元バ―コ―ドのデ―タ読み取り方法

Legal Events

Date Code Title Description
RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20171121

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180207

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180824

R150 Certificate of patent or registration of utility model

Ref document number: 6393226

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees