JPH1049622A - バーコード読み取り装置 - Google Patents

バーコード読み取り装置

Info

Publication number
JPH1049622A
JPH1049622A JP8199186A JP19918696A JPH1049622A JP H1049622 A JPH1049622 A JP H1049622A JP 8199186 A JP8199186 A JP 8199186A JP 19918696 A JP19918696 A JP 19918696A JP H1049622 A JPH1049622 A JP H1049622A
Authority
JP
Japan
Prior art keywords
label
scanning
barcode
information
dimensional image
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.)
Pending
Application number
JP8199186A
Other languages
English (en)
Inventor
Masahiro Takizawa
正浩 滝沢
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.)
Olympus Corp
Original Assignee
Olympus Optical Co Ltd
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 Olympus Optical Co Ltd filed Critical Olympus Optical Co Ltd
Priority to JP8199186A priority Critical patent/JPH1049622A/ja
Publication of JPH1049622A publication Critical patent/JPH1049622A/ja
Pending legal-status Critical Current

Links

Abstract

(57)【要約】 【課題】従来の読み取り装置では復号できなかったバー
コードを復号するバーコード読み取り装置を提供する。 【解決手段】バーコードラベルを2次元像として撮像し
て記憶された2次元像内のバーコードラベルを検出する
ラベル検出部6を有するバーコード読み取り装置であっ
て、ラベル検出部6は、複数の走査角度でもって2次元
像内のバーコードラベルを走査できる検出用走査部14
と、複数の走査角度のうちの第1の走査角度での走査線
で2次元像内のバーコードラベルを走査し、バーコード
ラベルの特徴的なパターンの有無を検出する有無検出部
15と、パターンの角度が第1の走査角度とは異なる第
2の走査角度から所定範囲内であるか否かを判定する判
定部16とを有し、判定部16の出力に基づいて、第2
の走査角度で2次元像内のバーコードを走査する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明はバーコード読み取り
装置に関する。
【0002】
【従来の技術】最近の目ざましいPOS(ポイント・オ
ブ・セールス=販売時点情報管理システム)の普及によ
って、バーコードは、広く一般に知られるようになって
きた。ここで、バーコードとは、大きさの異なるバーと
スペースの平行な組合せパターンにより1つのバーコー
ドキャラクタを形成し、必要であればチェックデジット
を含む必要なキャラクタ群を平行に配列し、例えば前後
にスタート/ストップキャラクタのような特徴的な所定
パターンを配して構成したシンボルのことである。
【0003】広く一般消費財に使用されているバーコー
ドとしては、JAN(Japan Article Number)が日本で
標準化されている。また、バーコードの他の応用として
は、物流シンボルがある。このシンボルは、上記JAN
コードの前に、1桁又は2桁の物流識別コードが追加さ
れたものである。上記いずれのバーコードシンボルも1
次元バーコードと呼ばれるものであり、これらのコード
体系が許容できる情報量はせいぜい数十バイトであっ
た。
【0004】ところが近年、バーコードの情報量の増大
に対する要求が声高に叫ばれるようになってきたことに
呼応して、各種の2次元バーコードと呼ばれるシンボル
体系が発表されている。
【0005】それらのシンボル体系によれば、いずれも
1次元バーコードに比べ格段に多い情報をコード化でき
る特徴を持っている。この体系は、1次元のバーコード
を積み重ねることによって情報量を増加させる方式であ
る。このような方式のシンボルは、スタックドバーコー
ドと呼ばれている。その1つに、PDF−417と呼ば
れるコード体系がある。
【0006】従来、このようなスタックドバーコードを
読み取るシンボル情報読み取り装置としては、例えば特
開平2−268382号公報に開示されているようなレ
ーザースキャンタイプの装置が知られている。この装置
に於いては、レーザー光を2次元にスキャンすること
で、バーコードシンボル情報を読み取って復号してい
る。
【0007】また、特開平2−268383号公報や特
開平6−12515号公報には、2次元撮像装置でバー
コードを撮像し、バーコードの画像をメモリに取り込ん
で、このデータを元にバーコードシンボル情報を復号す
る装置が開示されている。
【0008】
【発明が解決しようとする課題】しかしながら、読み取
り方向におけるバーコードの高さが低く、バーコードの
傾き(チルト角)が大きい場合や、撮像装置の画素の大
きさが無視できなくなるほどバーコードの情報密度が高
い場合には、上記の2次元撮像装置を用いた読み取り装
置ではバーコードを正確に復号できないことがある。ま
た、従来の読み取り装置では情報密度が高いバーコード
を読むには、画素数が多い、すなわち高価な撮像装置を
用いなければならなかった。
【0009】本発明のバーコード読み取り装置はこのよ
うな課題に着目してなされたものであり、その目的とす
るところは、従来の読み取り装置では復号できない状態
のバーコードであっても、その内容を正確に復号するこ
とができるバーコード読み取り装置を提供することにあ
る。
【0010】
【課題を解決するための手段】上記の目的を達成するた
めに、第1の発明は、バーとスペースからなり任意の情
報をコード化して表されるバーコードラベルを2次元像
として撮像する撮像手段と、前記撮像手段により得られ
た2次元像を一時的に記憶する記憶手段と、前記記憶手
段に記憶された2次元像内のバーコードラベルを検出す
るラベル検出部と、該ラベル検出部の出力に基づいて前
記2次元像内のバーコードを読み取る読み取り部と、前
記読み取り部からのバーコード情報を前記任意の情報に
復号する復号部とを有するデータ処理手段とからなるバ
ーコード読み取り装置において、前記ラベル検出部は、
複数の走査角度でもって前記2次元像内のバーコードラ
ベルを走査する走査部と、前記複数の走査角度のうちの
第1の走査角度での走査線で2次元像内のバーコードラ
ベルを走査し、前記バーコードラベルの特徴的なパター
ンの有無を検出する有無検出部と、前記パターンの角度
が前記第1の走査角度とは異なる第2の走査角度から所
定範囲内であるか否かを判定する判定部とを有し、前記
判定部の出力に基づいて、前記第2の走査角度で2次元
像内のバーコードを走査する。
【0011】また、第2の発明は、バーとスペースから
なり任意の情報をコード化して表されるバーコードラベ
ルを2次元像として撮像する撮像手段と、前記撮像手段
により得られた2次元像を一時的に記憶する記憶手段
と、前記記憶手段に記憶された2次元像内のバーコード
ラベルを検出するラベル検出手段と、該ラベル検出手段
の出力に基づいて前記2次元像内のバーコードを複数の
走査線でもって走査して画素情報を得ることによって該
バーコードの情報を読み取る読み取り手段と、前記読み
取り手段からのバーコード情報から前記任意の情報に復
号する復号手段とを有するデータ処理手段とからなるバ
ーコード読み取り装置において、前記読み取り手段は、
前記2次元像内のバーコードラベルを走査する走査部
と、前記走査部によって走査された前記走査線上の画素
の第1の画素情報と該画素に隣接した少なくとも1つ以
上の画素の第2の画素情報とから第3の画素情報を演算
する演算部と、前記演算部によって演算された第3の画
素情報を前記走査線線上の画素情報として読み取る読み
取り部とからなる。
【0012】また、第3の発明は、第2の発明におい
て、前記走査部は、一画素に対して複数の走査線でもっ
て走査する。すなわち、第1の発明は、バーとスペース
からなり任意の情報をコード化して表されるバーコード
ラベルを2次元像として撮像し、この撮像により得られ
た2次元像を一時的に記憶する。次に、記憶された2次
元像内のバーコードラベルを検出し、この検出によって
出力されたラベル検出信号に基づいて前記2次元像内の
バーコードを読み取り、読み取ったバーコード情報から
前記任意の情報に復号する。そして、ラベル検出時に、
複数の走査角度でもって前記2次元像内のバーコードラ
ベルを走査する場合、前記複数の走査角度のうちの第1
の走査角度での走査線で2次元像内のバーコードラベル
を走査して前記バーコードラベルの特徴的なパターンの
有無を検出し、前記パターンの角度が前記第1の走査角
度とは異なる第2の走査角度から所定範囲内であるか否
かを判定し、この判定出力に基づいて、前記第2の走査
角度で2次元像内のバーコードを走査する。
【0013】また、第2の発明は、バーとスペースから
なり任意の情報をコード化して表されるバーコードラベ
ルを2次元像として撮像し、この撮像によって得られた
2次元像を一時的に記憶する。次に、記憶された2次元
像内のバーコードラベルを検出し、この検出によって出
力されたラベル検出信号に基づいて前記2次元像内のバ
ーコードを複数の走査線でもって走査して画素情報を得
ることによって該バーコードの情報を読み取り、読み取
ったバーコード情報を前記任意の情報に復号する。そし
て、バーコードの情報の読み取り時は、前記2次元像内
のバーコードラベルを走査し、走査された前記走査線上
の画素の第1の画素情報と該画素に隣接した少なくとも
1つ以上の画素の第2の画素情報とから第3の画素情報
を演算し、演算された第3の画素情報を前記走査線線上
の画素情報として読み取る。また、第3の発明は、第2
の発明において、走査時は、一画素に対して複数の走査
線でもって走査するようにする。
【0014】
【発明の実施の形態】以下、図面を参照して本発明の一
実施例を説明する。図1は本発明の一実施形態に係るバ
ーコード読み取り装置の概略構成を示す図である。この
バーコード読み取り装置は、物品100などに貼付され
た、例えば、PDF−417フォーマットのスタックド
ラベル(以下、バーコードラベルと称する)101を光
学的に結像するレンズからなる撮像光学系1と、結像さ
れたバーコードラベル101を光電変換面2aで読み取
るCCDなどの2次元撮像部2と、読み取ったラベルの
画像データ(映像信号)を一時的に記憶するフレームメ
モリ3と、ラベル画像データを元のシンボル情報に復号
するデータ処理部4とで構成される。また、外部には、
バーコード情報を処理するためのマイクロコンピュータ
などのホスト装置20が設けられている。
【0015】図2は図1に示すデータ処理部4の詳細を
示すブロック図である。データ処理部4は、フレームメ
モリ3に記憶された画像データの中のバーコードラベル
の撮像状態を検出するラベル検出部6と、フレームメモ
リ3内のバーコードラベルを走査(スキャン)してバー
コード情報として読み取るラベル読み取り部7と、読み
取ったバーコード情報が復号(デコード)できるものか
否かを判定するデコード判定部8と、デコードできると
判定されたバーコード情報を元の情報に復号する復号部
9と、メモリ(各種定数及び変数を格納するための種々
のレジスタを含む)11と、これらの各部位を制御する
制御部10とで構成される。
【0016】ラベル検出部6は、ラベル位置検出部12
とラベル傾き検出部13からなり、ラベル位置検出部1
2は、水平(行方向)、垂直(列方向)、45度(正方
向45度)、135度(逆方向45度)の角度で走査す
ることが可能な検出用走査部14と、前記行方向または
垂直方向の走査によってバーコードラベル101の特徴
的なパターン(スタートコード及び/またはストップコ
ード)の有無を検出するパターン有無検出部15と、パ
ターン有無検出部15でパターンが検出された場合にそ
のパターンの角度を検出して、検出された角度が正方向
45度の角度から所定範囲内に入っているかどうかを判
定する第1の判定部と、そのパターンが逆方向45度の
角度から所定範囲内に入っているかどうかを判定する第
2の判定部とからなる判定部16とから構成されてい
る。
【0017】ラベル傾き検出部13はバーコードラベル
の傾き具合を検出している。ラベル検出部6では判定部
16の第1の判定部及び第2の判定部の出力に基づい
て、行方向、列方向、正方向45度、逆方向45度のい
ずれかで走査して、スタートコード及び/またはストッ
プコードを検出し、ラベル傾き検出部13の出力に基づ
いて傾き具合を検出する。
【0018】ラベル読み取り部7は、2次元像内のバー
コードラベル101を走査する読み取り用走査部17
と、この読み取り用走査部17によって走査されたある
走査線上のある画素の輝度情報と、該画素に隣接した画
素の輝度情報とを演算する輝度情報演算部18と、輝度
情報演算部18によって演算された画素の輝度情報をあ
る走査線上のある画素の輝度情報として読み取る読み取
り部19とからなる。
【0019】図3は、図1に示すバーコードラベル10
1のラベル構造を示している。このバーコードラベル1
01は、バーとスペースの組合せでなるバーコードキャ
ラクタ群で構成された復号されるべき情報成分の領域で
あるラベル部21と、その前後に配されたスタート/ス
トップキャラクタであるスタートコード22及びストッ
プコード23とを有している。そして、1コードは、ス
トップコード23を除いて4つのバーとスペースとから
なっている。また、スタート及びストップコード22,
23は、“ビックバー”と呼ばれる大きなバー22A,
23Aから始まっている。
【0020】ラベル部21は、スタートコード22及び
ストップコード23の隣に存在するロウインディケータ
21Aと呼ばれるコードと、それらの間に挟まれた実際
のデータが記述されている複数のデータカラム21Bか
らなるラベルマトリックス21Cとにより構成される。
ロウインディケータ21Aには、ラベルのロウ方向、カ
ラム方向のサイズやセキュリティレベル等が記述されて
いる。従って、このロウインディケータの情報を解読す
れば、ラベルの情報サイズや修復可能なコード数等が決
定できる。なお、この図3は、4×2のラベルマトリッ
クスを有するバーコードラベルを示している。
【0021】図4は、フレームメモリ3の画素配列に上
記のようなPDF−417のラベル画像を仮想的に投影
して得られたバーコードラベル投影像108を示す模式
図である。
【0022】データ処理部4では、以下に説明するよう
なアルゴリズムに基づいて、ラベル検出を行い、ラベル
情報を読み出した後、復号を行ってホスト装置20に出
力する。
【0023】即ち、図5は、このデータ処理部4でラベ
ル情報を読出すアルゴリズムの概略を示すフローチャー
トである。なお、後述するフローチャートはプログラミ
ング言語Cの記述方式に従って書かれている。
【0024】まず、フレームメモリ3、しきい値、各種
グローバル変数等の種々のパラメータを初期設定する
(ステップS1)。次に、画像取り込みルーチンをコー
ルして画像をフレームメモリ3に取り込む(ステップS
2)。
【0025】次に、詳細は後述するようなスタート又は
ストップコード検出ルーチンをコールして(ステップS
3)、フレームメモリ3内にPDF417のスタート又
はストップコードが存在するか、すなわちPDF417
バーコードラベルが存在するか否かをチェックする。
【0026】そして、上記ステップS3に於けるスター
ト又はストップコード検出処理の結果を判断し(ステッ
プS4)、スタート又はストップコードが存在しない場
合には、再度、上記ステップS1に制御を移して初期設
定ルーチンをコールする。
【0027】次に、詳細は後述するラベル情報決定ルー
チンをコールして(ステップS5)、フレームメモリ3
内におけるバーコードラベル101に関する種々の幾何
学的な情報(ラベルの角度、スキャン範囲等)を決定す
る。
【0028】次に、詳細は後述するようなラベルスキャ
ンルーチンをコールして(ステップS6)、バーコード
ラベル101を全面スキャンする。そして、上記ステッ
プS6の全面スキャンの結果で読み取った情報で、デコ
ード可能かどうかを判断し(ステップS7)、デコード
可能の場合は、ステップS8のデコード処理に制御を移
す。また、デコード不能の場合は、再度、上記ステップ
S1に制御を移して初期設定ルーチンをコールする。
【0029】以上述べてきた各種処理ルーチンを、以下
に詳しく説明する。まず、図6のフローチャートに基づ
いて、図7の行スキャン、図8の列スキャン、図9の正
方向45°スキャンおよび図10の逆方向45°スキャ
ンの図を参照して図5のステップS3でコールされるス
タート又はストップコード検出ルーチンを説明する。こ
こで、図6のフローチャートは図5のステップS4の判
断も含んでいるものとする。
【0030】まず、フレームメモリ3を図7に示すよう
に水平方向に一定の幅を持って上から順番にスキャンラ
イン109に沿ってスキャンする(ステップS31)。
ここでスキャンという単語は、フレームメモリ3の中で
指定された1行分の画素(輝度値)をピックアップし、
然るべき配列変数の中にその輝度値を格納する作業を意
味する。次にスキャンされた画素情報の中にPDF41
7のスタート又はストップコードが2個以上存在するか
どうかの判定を行う(ステップS32)。この判定には
パターンマッチング等の様々な手法が用いられるが、詳
細は省略する。ステップS32でスタート又はストップ
コードが2個以上検出されたら、最初に検出されたスタ
ート又はストップコードの位置と、最後に検出されたス
タート又はストップコードの位置の関係により角度を検
出し(ステップS32A)、検出された角度が正方向4
5°(図9に示す方向)±α°以内かどうかの判定を行
う(ステップS33)。ここでαは任意の値、例えば5
などの値に設定する。ステップS32でスタート又はス
トップコードが2個以上検出されなかったら、フレーム
メモリ3を図8に示すように垂直方向に一定の幅を持っ
て左から順番にスキャンライン110に沿ってスキャン
する(ステップS34)。
【0031】次にスキャンされた画素情報の中にPDF
417のスタート又はストップコードが2個以上存在す
るかどうかの判定を行う(ステップS35)。ステップ
S35でスタート又はストップコードが2個以上検出さ
れたら、最初に検出されたスタート又はストップコード
の位置と、最後に検出されたスタート又はストップコー
ドの位置の関係により角度を検出し、検出された角度が
正方向45°±α°以内かどうかの判定を行う。ステッ
プS33の判定が偽であると判定された場合には、最初
に検出されたスタート又はストップコードの位置と、最
後に検出されたスタート又はストップコードの位置の関
係が逆方向45°(図10に示す方向)±α°以内かど
うかの判定を行う(ステップS36)。ここでαは任意
の値、例えば5などの値に設定する。ステップS33に
より、検出されたスタート又はストップコードの2箇所
の位置関係が正方向45°±α°以内であると判定され
た場合またはステップS35でスタート又はストップコ
ードが2個以上検出されなかった場合には、フレームメ
モリ3を図9に示すように45°方向に一定の幅を持っ
て左上から順番にスキャンライン111に沿ってスキャ
ンする(ステップS37)。次にスキャンされた画素情
報の中でPDF417のスタート又はストップコードが
2個以上存在するかどうかの判定を行う(ステップS3
8)。ステップS38でスタート又はストップコードが
2個以上検出された場合または上記ステップS36の判
定が偽であると判定された場合には、検出コード、検出
位置の情報を特定の変数に格納する(ステップS3
9)。
【0032】上記ステップS38でスタート又はストッ
プコードが2個以上検出されなかった場合には、フレー
ムメモリ3を図10に示すように図9とは逆の45°方
向に一定の幅を持って右上から順番にスキャンライン1
12に沿ってスキャンする(ステップS3A)。次にス
キャンされた画素情報の中でPDF417のスタート又
はストップコードが2個以上存在するかどうかの判定を
行う(ステップS3B)。ステップS3Bでスタート又
はストップコードが2個以上検出された場合には、上記
ステップS39により検出コード、検出位置の情報を特
定の変数に格納する。そしてTRUE(真)をリターン
し、制御を上位ルーチンに移す。
【0033】ステップS3Bでスタート又はストップコ
ードが2個以上検出されなかった場合には、FALSE
(偽)をリターンし、制御を上位ルーチンに移す。ここ
で、上記した正方向、逆方向の45°スキャンは、バー
コードラベルが図11に示すようなTruncated (切り詰
め型)PDF(ストップコードとその隣のロウインディ
ケータがもともと存在しないPDF417バーコード)
フォーマットでバーコード自体の高さが低く、さらにチ
ルト角(傾き)が45°近辺の場合に効果がある。すな
わち図11に示すように、ロウ(行)スキャンではaの
幅においてのみ、スタートコードが検出できるが、正方
向45°スキャンを行えば、その幅はbに増加する。b
>aなのは一目瞭然である。また、詳細は後述するが、
Truncated (切り詰め型)PDFの場合、ラベルの角度
を決定する際に、最初に検出されたスタートコードと最
後に検出されたスタートコードの距離は大きい程よい。
【0034】また、ここでは行、列スキャンの他に、正
逆方向の45°スキャンだけを説明したが、必要に応じ
て30°スキャン、15°スキャンと角度の幅を狭く設
定したり、任意の角度のスキャンを導入することも可能
なのは勿論である。しかし、最小角度を15°に設定し
ておけば、最小行数(3行)のPDF417バーコード
ラベルが任意の角度でフレームメモリ3中に投影されて
いても読み取ることができる。
【0035】次に図12に示すスタート又はストップコ
ードの検出結果と、図13に示すフローチャートと、図
14に示す上端下端探索および角度決定および図15に
示すTruncated ラベルの場合の図を参照して、上記ステ
ップS5でコールされるラベル情報決定ルーチンの詳細
を説明する。
【0036】まず、上記ステップS3のスタート又はス
トップコード検出ルーチンの検出コードの結果よりスタ
ートコードがフレームメモリ3内に存在するかどうかの
判定を行う(ステップS51)。存在した場合にはバー
コードラベル投影像108のスタートコードの上端下端
の検出処理を行う(ステップS52)。次に図5に示す
ステップS3のスタートまたはストップコード検出ルー
チンの検出コードの結果よりストップコードがフレーム
メモリ3内に存在するかどうかの判定を行う(ステップ
S53)。存在する場合にはバーコードラベル投影像1
08のストップコードの上端下端の検出処理を行う(ス
テップS54)。以下に、上端下端の検出処理の説明を
する。
【0037】まず、図5に示すステップS3で、最初に
検出されたスタートコードの位置109Aと、最後に検
出されたスタートコードの位置109Bと、最初に検出
されたストップコードの位置109Cと、最後に検出さ
れたストップコードの位置109Dとが図示されてい
る。各々の点から図14のようにバーコードラベル投影
像108の上下方向にエッジ探索を行い、スタートコー
ド上端AA、スタートコード下端AB、ストップコード
上端AC、ストップコード下端ADを検出する。
【0038】次に上記ステップS3のスタート又はスト
ップコード検出ルーチンの検出コードの結果よりスター
トとストップコードの両方が存在するかどうかの判定を
行う(ステップS55)。両方存在する場合には図15
に示すバーコードラベルの角度slope を求める(ステッ
プS56)。また、上記ステップS55でスタート、ス
トップコードの一方しかないと判定された場合は、それ
がスタートコードであるかどうかの判定を行う(ステッ
プS57)。判定の結果、それがスタートコードであれ
ば、上記ステップS3のスタート又はストップコード検
出ルーチンの結果から得られたスタートコードの位置情
報を用いてバーコードラベルの角度を求める(ステップ
S58)。
【0039】この場合はまず、図15に示すように、最
初に検出されたスタートコードの位置BA、最後に検出
されたスタートコードの位置BBを結ぶ直線から傾きa
_slope を求めることにより、この傾きと直交するバー
コードラベルの角度slope =1/a _slope を決定するこ
とができる。上記ステップS57でストップコードしか
ないと判定された場合には、特に図示しないが、最初に
検出されたストップコードの位置と、最後に検出された
ストップコードの位置から、スタートコードのみの場合
と同様にバーコードラベルの角度を求めることができる
(ステップS59)。そして、リターンして上位ルーチ
ンに制御を戻す。
【0040】次に図5に示す上記ステップS6でコール
されるラベルスキャンルーチンを図16のフローチャー
トと図17のラベルスキャンの図を参照しながら説明す
る。最初にステップS5で求まったスタートコード上
端、スタートコード下端、ストップコード上端、ストッ
プコード下端、それぞれの位置情報からスタートコード
の長さがストップコードの長さよりも大きいかどうかの
判定を行う(ステップS61)。図17の例を基に判断
すると、スタートコードの方がストップコードよりも長
いと仮定してこの判定を真とする。ステップS61の判
定の結果が真であれば図17に示すスタートコードの上
端から下端までの各点start[0]〜start[N-1] を計算す
る(ステップS62)。これはコードの上端から下端ま
で1画素毎に点を取っていくことを意味する。0〜N−
1=Nはコードの上端から下端までの画素数である。
【0041】また、ステップS61の判定の結果が偽で
あればストップコードの上端から下端までの各点stop
[0] 〜stop[N′-1] を計算する(ステップS63)。こ
れはコードの上端から下端まで1画素毎に点を取ってい
くことを意味する。ここで、0〜N′−1=Nはコード
の上端から下端までの画素数である。
【0042】以下では、図17の例によりスタートコー
ドの処理のみについて話を進める。次に変数iを初期化
する(ステップS64)。そしてstart[i]を通りslope
の傾きを持つ直線を計算する(ステップS65)。この
直線は図17の直線群CL0〜CLN−1に相当する。
そして詳細は後述するスキャンルーチンをコールし(ス
テップS66)、変数iをインクリメントする(ステッ
プS67)。そしてiがN−1に到達したかどうかの判
定を行い(ステップS67)、まだ、到達していなけれ
ば再度ステップS65に戻り直線の計算とスキャンを繰
り返す。iがN−1に到達したときはリターンして上位
ルーチンに制御を戻す。
【0043】次に上記ステップS62でコールされるス
タートコードの各点の計算ルーチンを図18のフローチ
ャートを参照しながら説明する。最初に変数iに0を代
入して初期化する(ステップS621)。次に以下の式
によってstart[i]の座標を計算する(S622)。
【0044】 start[i]のy座標の値=ラベル上端点(図14の点AA)のy座標の値+i /A …(1) start[i]のx座標の値=start[i]のy座標の値*(−1/slope )+直線の 切片 …(2) ここで、Aの値は通常1に設定する。また、*は乗算を
意味する。Aの詳細は後述するが、スタートコードの画
素数よりも多い本数のスキャンラインをとりたいときに
1より大きい値にする。直線の切片とはラベルの上端点
と下端点を結ぶ直線が画面の上側の端と交わる点のx座
標の値である。次に、変数iをインクリメントし(ステ
ップS623)、iがN*A よりも大きいかどうかを判定
する(ステップS624)。ここで小さければステップ
S622に戻り、大きければリターンし上位関数に制御
を戻す。なお、ステップS63のストップコードの各点
の計算ルーチンはステップS622のstart[i]をstop
[i] に変えればよいだけなので省略する。
【0045】次に上記ステップS66でコールされるス
キャンルーチンを図19のフローチャートを参照しなが
ら説明する。まず、後述する画素情報(輝度値)1ライ
ン分の取得ルーチンをコールする(ステップS66
1)。次にステップS661で得られた画素情報を幅情
報に変換する(ステップS662)。これは微分(差
分)等の処理によりバーコードのエレメント(バー、ス
ペース)のエッジを検出し、幅情報を求めるものであ
る。次にステップS662で得られた幅情報から対応す
るコード値を取得する(ステップS663)。これは幅
情報を特定のテーブル等に照合することによって、その
コード値を得る処理である。そしてリターンし、上位関
数に制御を戻す。
【0046】次に、図20のフローチャートと図21の
フレームメモリのアドレスおよび図22の画素情報(輝
度値)の取り方についての説明図を参照しながら、図1
9に示す上記ステップS661でコールされるスキャン
ルーチンを説明する。
【0047】まず、フレームメモリ3上の各画素のアド
レスは図21のようになっている。左上が座標位置
(0、0)に相当し、全部でROW*COLUMN(*
は乗算を意味する)の数の画素がある。
【0048】以下に、図21の直線DLの例について説
明する。まず、スキャンする直線の(x,y)の初期値
を設定する(ステップS6611)。これはスキャンの
開始点のアドレスを設定するものである。図21の例で
はx=0でyはある特定の値になる。次にyの値を変数
deltayに格納する(ステップS6612)。ここで変数
deltayは小数型の変数である。続いてdeltayにdeltayの
小数点以下の値を格納する(ステップS6613)。す
なわち、ステップS6613の実行以前にdeltayが例え
ば1.5であった場合は、ステップS6613の処理に
おいて、1.5の小数部のみが抽出されてdeltayには
0.5という値が新たに格納されることになる。次にde
ltayが0.5以上かどうかを判定する(ステップS66
14)。これはある座標点の画素情報(輝度値)を決定
する際に、その座標を含む1つの画素情報だけで決定し
てしまわないで、隣接する周囲の画素情報(輝度値)を
も考慮するためである。
【0049】具体的な例を図22を参照して説明する。
x座標x0の輝度値は通常、画素EAの輝度値で代表さ
れるが、y0の値は画素ECの座標に近くなっている
(ここでy座標としてのdeltayの値はほぼ0.8〜0.
9である)。そこで、x座標x0の輝度値を画素EAだ
けでなく、画素ECの輝度値をも考慮することによっ
て、より高密度なバーコードラベルに対応させる。
【0050】これを図20のフローチャートで説明する
と、deltayの値からステップS6614の判定は真にな
る。そして、次式によりx座標x0の輝度値を決定する
(ステップS6615)。
【0051】 (x,y) の輝度値=(1.5-deltay)* (x,y) の輝度値 +(deltay-0.5)* (x,y-1) の輝度値 …(3) 図22では、(x,y) の輝度値は画素EAの輝度値であ
り、(x,y-1) の輝度値は画素ECの輝度値である。図2
2において、x座標x1の輝度値を決定する場合、y1
の値は画素EDの座標に近くなっている(ここでdeltay
の値はほぼ0.1〜0.2である)。したがって、この
場合はステップS6614の判定は偽になり、次式によ
りx座標x1の輝度値を決定する(ステップS661
6)。
【0052】 (x,y) の輝度値=(0.5+deltay)* (x,y) の輝度値 +(0.5-deltay)* (x,y+1) の輝度値 …(4) 図22では、(x,y) の輝度値は画素EBの輝度値であ
り、(x,y+1) の輝度値は画素EDの輝度値である。次に
決定された輝度値を特定の配列に格納し、座標xをイン
クリメントする(ステップS6617)。そして、xが
定数COLUMNに到達したかどうかの判定を行う(ス
テップS6618)。ここで、まだ到達していなければ
deltayの値を計算し(ステップS6619)、ステップ
S6613に戻る。ステップS6619の計算はxのイ
ンクリメント分に対応するyの増分を計算して前のdelt
ayに累積加算する処理であり、ステップS5のラベル情
報決定ルーチンで求めたラベルの角度slope の値を用い
て計算する。そして、ステップS6618の判定が真で
あればリターンして上位ルーチンに制御を戻す。
【0053】なお、ここでは図21の直線DLについて
だけ説明したが、直線DL′のような場合には、上記フ
ローのxとyが逆になる。すなわち、45°以上傾いて
いるスキャンの場合にはyをインクリメントしxの増分
を計算する。また、上下方向の画素情報ではなく、左右
の画素情報を考慮することになる。式(3)、(4)は
ある画素と、その上下(左右)どちらかの画素をいわば
一次的(直線的)に補間する方法であったが、ある画素
とその上下(左右)の3画素を2次曲線で補間する方法
もある。これは3画素の輝度値を2次曲線で結び、関数
f(x)=ax2 +bx+c のa,b,c3つの係数を算出して、
相当する位置のxの値を代入して輝度値を求める方法で
あるが、詳しい計算式は省略する。
【0054】そして、ここでは上下(左右)方向の画素
情報のみに着目したが、ある画素の周囲8画素の画素情
報を考慮することも勿論可能である。その場合に輝度値
を求める例として、 (x,y) の輝度値=((x,y) の輝度値+deltay* (x,y-1) の輝度値+(1-deltay) * (x,y+1) の輝度値+deltay* (x-1,y-1) の輝度値+deltay* (x+1,y-1) の輝度 値+(1-deltay)* (x-1,y+1) の輝度値+(1-deltay)* (x+1,y+1) の輝度値+(x-1 ,y)の輝度値+(x+1,y) の輝度値)/8 …(5) 等がある。また、ある画素の上下左右4画素を考慮して (x,y) の輝度値=((x,y) の輝度値+deltay* (x,y-1) の輝度値 +(1-deltay)* (x,y+1) の輝度値 +(x-1,y) の輝度値+(x+1,y) の輝度値)/4 …(6) という式で輝度値を求めることもできる。
【0055】また、自分自身の周囲と画素情報にそれぞ
れ違う重み係数を掛けることもできる。その場合、
(3)式は (x,y) の輝度値=A* (1.5-deltay)* (x,y) の輝度値 +B* (deltay-0.5)* (x,y-1) の輝度値 …(7) となり、重み係数A,Bを例えば最適化手法などにより
決定する。以下、全ての式に同様な重み係数を適用する
ことも勿論可能である。
【0056】また、上記の手法を用いれば、図22の直
線ELやEL′のようにどんなに近接したスキャンライ
ンの直線をとっても各x座標の輝度値はスキャンライン
毎に必ず異なる値になるので、高さの低いバーコードラ
ベルでも任意本数のスキャンラインを取ることにより、
安定したデコードができるようになる。
【0057】より具体的にはステップS62とS63
で、スタートコード、ストップコード各点を1画素毎に
計算していたが、この部分を1画素よりも小さい任意の
間隔で計算していき、その各点を通りslope の傾きを持
つ直線を計算する。すなわち、図18のフローチャート
におけるステップS622とS624のAの値を1より
も大きくすることによりこの処理が可能になる。
【0058】以上より明らかなように、本発明はバーコ
ードの高さが低く、バーコードの傾き(チルト角)が大
きい場合や、撮像装置の画素の大きさが無視できなくな
るほどバーコードの情報密度が高く、従来のバーコード
読み取り装置では復号できない場合であっても、正確に
バーコードラベルの内容を復号することを可能にしたも
のである。また、高密度なバーコードであっても、少な
い画素数の撮像装置でバーコードを読み取ることが可能
になるため、安価な読み取り装置が実現できる。なお、
特定の実施形態について本発明を説明したが、本発明は
上記実施形態に限定されるものではなく、その他の種々
の変更、変形例が可能である。
【0059】
【発明の効果】本発明によれば、従来の読み取り装置で
は復号できない状態のバーコードであっても、その内容
を正確に復号することができるバーコード読み取り装置
を提供することができる。
【図面の簡単な説明】
【図1】本発明のバーコード読み取り装置の概略構成を
示す図である。
【図2】図1に示すデータ処理部の構成を詳細に示すブ
ロック図である。
【図3】2次元バーコードPDF417の構造を示す図
である。
【図4】バーコードラベルがフレームメモリに投影され
た様子を示す図である。
【図5】本発明のバーコード読み取り装置の概略的な動
作を説明するためのフローチャートである。
【図6】図5のフローチャート中のスタート・ストップ
コード検出の詳細を説明するためのフローチャートであ
る。
【図7】スタート・ストップコードを行スキャンで探索
する様子を説明するための図である。
【図8】スタート・ストップコードを列スキャンで探索
する様子を説明するための図である。
【図9】スタート・ストップコードを正方向45°スキ
ャンで探索する様子を説明するための図である。
【図10】スタート・ストップコードを逆方向45°ス
キャンで探索する様子を説明するための図である。
【図11】Truncated ラベルにおける45°スキャンの
優位性を説明するための図である。
【図12】スタート・ストップコードの検出結果を説明
するための図である。
【図13】図5のラベル情報決定ルーチンの詳細を説明
するためのフローチャートである。
【図14】バーコードラベルのデコードに必要なラベル
情報を決定する方法を説明するための図である。
【図15】Truncated ラベルにおいてバーコードラベル
のデコードに必要なラベル情報を決定する方法を説明す
るための図である。
【図16】図5に示すラベルスキャンルーチンの詳細を
説明するためのフローチャートである。
【図17】バーコードラベルの全面スキャンを説明する
ための図である。
【図18】図16中のスキャンルーチンの詳細を説明す
るためのフローチャートである。
【図19】スタートコード各点の計算フローの詳細を説
明するためのフローチャートである。
【図20】図18中の画素情報(輝度値)1ライン分を
取得するルーチンの詳細を説明するためのフローチャー
トである。
【図21】フレームメモリのアドレスを説明するための
図である。
【図22】画素情報(輝度値)の取り方を説明するため
の図である。
【符号の説明】
1…撮像光学系、2…2次元撮像部、3…フレームメモ
リ、4…データ処理部、6…、7…、8…デコード判定
部、9…復号部、10…制御部、11…メモリ(レジス
タ)、12…ラベル位置検出部、13…ラベル傾き検出
部、14…検出用走査部、15…有無検出部、16…判
定部、17…読み取り用走査部、18…輝度情報演算
部、19…読み取り部。

Claims (3)

    【特許請求の範囲】
  1. 【請求項1】 バーとスペースからなり任意の情報をコ
    ード化して表されるバーコードラベルを2次元像として
    撮像する撮像手段と、 前記撮像手段により得られた2次元像を一時的に記憶す
    る記憶手段と、 前記記憶手段に記憶された2次元像内のバーコードラベ
    ルを検出するラベル検出部と、該ラベル検出部の出力に
    基づいて前記2次元像内のバーコードを読み取る読み取
    り部と、前記読み取り部からのバーコード情報を前記任
    意の情報に復号する復号部とを有するデータ処理手段と
    からなるバーコード読み取り装置において、 前記ラベル検出部は、複数の走査角度でもって前記2次
    元像内のバーコードラベルを走査する走査部と、 前記複数の走査角度のうちの第1の走査角度での走査線
    で2次元像内のバーコードラベルを走査し、前記バーコ
    ードラベルの特徴的なパターンの有無を検出する有無検
    出部と、 前記パターンの角度が前記第1の走査角度とは異なる第
    2の走査角度から所定範囲内であるか否かを判定する判
    定部とを有し、 前記判定部の出力に基づいて、前記第2の走査角度で2
    次元像内のバーコードを走査することを特徴とするバー
    コード読み取り装置。
  2. 【請求項2】 バーとスペースからなり任意の情報をコ
    ード化して表されるバーコードラベルを2次元像として
    撮像する撮像手段と、 前記撮像手段により得られた2次元像を一時的に記憶す
    る記憶手段と、 前記記憶手段に記憶された2次元像内のバーコードラベ
    ルを検出するラベル検出手段と、該ラベル検出手段の出
    力に基づいて前記2次元像内のバーコードを複数の走査
    線でもって走査して画素情報を得ることによって該バー
    コードの情報を読み取る読み取り手段と、前記読み取り
    手段からのバーコード情報を前記任意の情報に復号する
    復号手段とを有するデータ処理手段と、からなるバーコ
    ード読み取り装置において、 前記読み取り手段は、 前記2次元像内のバーコードラベルを走査する走査部
    と、 前記走査部によって走査された前記走査線上の画素の第
    1の画素情報と該画素に隣接した少なくとも1つ以上の
    画素の第2の画素情報とから第3の画素情報を演算する
    演算部と、 前記演算部によって演算された第3の画素情報を前記走
    査線線上の画素情報として読み取る読み取り部とからな
    ることを特徴とするバーコード読み取り装置。
  3. 【請求項3】 前記走査部は、一画素に対して複数の走
    査線でもって走査することを特徴とする請求項2記載の
    バーコード読み取り装置。
JP8199186A 1996-07-29 1996-07-29 バーコード読み取り装置 Pending JPH1049622A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP8199186A JPH1049622A (ja) 1996-07-29 1996-07-29 バーコード読み取り装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP8199186A JPH1049622A (ja) 1996-07-29 1996-07-29 バーコード読み取り装置

Publications (1)

Publication Number Publication Date
JPH1049622A true JPH1049622A (ja) 1998-02-20

Family

ID=16403577

Family Applications (1)

Application Number Title Priority Date Filing Date
JP8199186A Pending JPH1049622A (ja) 1996-07-29 1996-07-29 バーコード読み取り装置

Country Status (1)

Country Link
JP (1) JPH1049622A (ja)

Similar Documents

Publication Publication Date Title
JP3233981B2 (ja) シンボル情報読取装置
KR100271245B1 (ko) 바코드 판독장치
US5635697A (en) Method and apparatus for decoding two-dimensional bar code
US5319181A (en) Method and apparatus for decoding two-dimensional bar code using CCD/CMD camera
US5742041A (en) Method and apparatus for locating and decoding machine-readable symbols, including data matrix symbols
US5422470A (en) Symbol information reading apparatus
US5616905A (en) Two-dimensional code recognition method
EP0384955B1 (en) Laser scanner for reading two dimensional bar codes
US5550363A (en) Optical information reading apparatus
JP3668275B2 (ja) デジタル情報記録方法、解読方法および解読装置
US5329105A (en) Method and apparatus for determining the width of elements of bar code symbols
JP4557433B2 (ja) 郵便番号読取り用の撮像エンジンおよび技術
KR100275006B1 (ko) 자동판독개시기능이 달린 바코드 판독장치
US5719384A (en) Oblique access to image data for reading dataforms
EP0484132A2 (en) Multiple resolution machine readable symbols
EP1383071A2 (en) Anti-hand-jittering dataform readers and methods
JPH08212280A (ja) 2次元バーコードの走査方法およびその走査装置
US5854478A (en) Method and apparatus for reading machine-readable symbols having surface or optical distortions
US5442164A (en) Bar code reader for reading two-dimensional bar codes by using length information derived from a sensed signal
US5811776A (en) Method and apparatus for accurately locating data regions in stored images of symbols
JPH1049622A (ja) バーコード読み取り装置
CN111951329B (zh) 二维码的识别方法、装置、设备及存储介质
WO1996009597A1 (en) Method and apparatus for detecting and adaptively decoding bar code symbols in continuous images
JP5579424B2 (ja) 画像取込装置及び画像取込方法
JP3191997B2 (ja) シンボル情報読取装置

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20050620

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050628

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050826

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060328

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20060822