(58)【調査した分野】(Int.Cl.,DB名)
前記ベクトル一致判断部は、前記第1および第2のバーコードの前記ベクトルの長さおよび角度の少なくとも一方が一致しないとき、前記二段バーコードの読み込みを行わないと判断することを特徴とする請求項1記載の二段バーコード読取装置。
前記ベクトル一致判断部は、前記ベクトルの長さおよび角度の一致判断において、前記第1および第2のバーコードの前記ベクトルの長さの差または相対角度が所定の許容範囲を超えたときに、前記二段バーコードの読み込みを行わないと判断することを特徴とする請求項2記載の二段バーコード読取装置。
前記ベクトル始点間距離判断部は、前記第1および第2のバーコードの前記ベクトルが前記第1の方向または前記第2の方向の少なくとも一方に所定の距離を超えて離れているとき、前記二段バーコードの読み込みを行わないと判断することを特徴とする請求項1記載の二段バーコード読取装置。
前記画像データからバーコードを検出するバーコード検出部を備え、検出した前記バーコードが2つ以外のとき、前記二段バーコードの読み込みを行わないと判断することを特徴とする請求項1記載の二段バーコード読取装置。
前記画像データから取得される前記第1および第2のバーコードが前記二段バーコードとしてあらかじめ定義されているものであることを判断するバーコード正当性判断部を備え、前記第1および第2のバーコードが前記二段バーコードとして定義されているものでないとき、前記二段バーコードの読み込みを行わないと判断することを特徴とする請求項1記載の二段バーコード読取装置。
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、画像スキャナは、その読取範囲に商品などを置き、それに付された二段バーコードを1回の読み取り操作で読み取るので、商品の置き方によっては、複数の商品のバーコードを別の商品のバーコードとして読み取ってしまうことがあるという問題点があった。
【0007】
図10は画像スキャナによる二段バーコードの不正読み取りの可能性を示す説明図である。この例では、二段バーコードが付された商品として書籍の場合を示している。2冊の書籍100,101があり、書籍100には、上段バーコード100Aおよび下段バーコード100Bからなる二段バーコードが印刷され、書籍101には、上段バーコード101Aおよび下段バーコード101Bからなる二段バーコードが印刷されている。
【0008】
ここで、レジにおいて2冊の書籍100,101を精算する場合には、画像スキャナで書籍100および書籍101の二段バーコードをそれぞれ別個に読み取らせ、精算する商品の登録をすることになる。このとき、2冊の書籍100,101を部分的に重ねた状態で、かつ、それぞれの二段バーコードが見える状態で画像スキャナの前に置かれた場合、書籍100,101の二段バーコードの一部が画像スキャナの読取範囲102の中に入ってしまうことがある。すなわち、
図10に示した状態では、画像スキャナは、書籍100の上段バーコード100Aと書籍101の下段バーコード101Bとをある商品の二段バーコードとして誤って認識してしまう可能性があった。
【0009】
本発明はこのような点に鑑みてなされたものであり、画像スキャナで複数の商品の二段バーコードを読み取ることがないようにした二段バーコード読取装置および二段バーコード読取方法を提供することを目的とする。
【課題を解決するための手段】
【0010】
本発明では上記の課題を解決するために、画像スキャナにより商品に付された二段バーコードを読み取る二段バーコード読取装置において、前記画像スキャナが撮った画像データから検出される第1および第2のバーコードの始点および終点の座標を取得する座標取得部と、前記座標取得部が取得した4つの前記座標を基に前記第1および第2のバーコードのベクトルを算出するベクトル算出部と、前記ベクトル算出部が算出した前記第1および第2のバーコードの前記ベクトルが一致するか否かを判断するベクトル一致判断部と、前記第1および第2のバーコードの前記ベクトルにおける始点の前記座標がベクトル方向の第1の方向または該第1の方向に対して直角方向の第2の方向の距離を判断するベクトル始点間距離判断部と、を備えていることを特徴とする二段バーコード読取装置が提供される。
【0011】
また、本発明では、画像スキャナにより商品に付された二段バーコードを読み取る二段バーコード読取方法において、前記画像スキャナが撮った画像データから検出される第1および第2のバーコードの始点および終点の4つの座標を取得し、4つの前記座標を基に前記第1および第2のバーコードのベクトルを算出し、算出した前記第1および第2のバーコードの前記ベクトルの長さおよび角度が一致するか否かを判断し、前記ベクトルの長さまたは角度が一致しないときには、前記二段バーコードの読み込みを行わないと判断し、前記第1および第2のバーコードの前記ベクトルにおける始点の前記座標がベクトル方向の第1の方向または該第1の方向に対して直角方向の第2の方向の距離を判断し、前記ベクトルが前記第1の方向または前記第2の方向に所定の距離を超えて離れているとき、前記二段バーコードの読み込みを行わないと判断する、ことを特徴とする二段バーコード読取方法が提供される。
【0012】
このような二段バーコード読取装置および二段バーコード読取方法によれば、二段バーコードとして検出した第1および第2のバーコードのベクトルを求め、それらのベクトルが一致しているか、さらには、ベクトルが離れすぎていないかを判断している。ここで、第1および第2のバーコードのベクトルが一致していない場合、さらには、ベクトルが離れすぎている場合には、1つの商品に付された二段バーコードでないと判断することができる。
【発明の効果】
【0013】
上記構成の二段バーコード読取装置および二段バーコード読取方法は、2つの商品の二段バーコードの一部を1つの商品の二段バーコードとして読み取ってしまった場合に、この読み取りを確実に阻止することができるという利点がある。
【図面の簡単な説明】
【0014】
【
図1】本発明の実施の形態に係る二段バーコード読取装置の構成を示す機能ブロック図である。
【
図2】本実施の形態に用いられるコンピュータのハードウェアの一構成例を示す図である。
【
図3】二段バーコード読取装置の処理の流れを示すフローチャートである。
【
図4】座標チェック処理の流れを示すフローチャートである。
【
図5】2つのバーコードの処理例を示す説明図であって、(A)は2つのバーコードの座標検出を説明し、(B)は2つのバーコードを含む画像データの回転を説明し、(C)は2つのバーコードのベクトル算出を説明する図である。
【
図6】ベクトルの長さが相違したときの説明図であって、(A)は2冊の書籍の設置例を示し、(B)は2つのベクトルの比較を説明する図である。
【
図7】ベクトルの角度が相違したときの説明図であって、(A)は2冊の書籍の設置例を示し、(B)は2つのベクトルの比較を説明する図である。
【
図8】ベクトルの向き方向の始点座標が相違したときの説明図であって、(A)は2冊の書籍の設置例を示し、(B)は2つのベクトルのベクトル方向の離間を説明する図である。
【
図9】ベクトルの間隔が大幅に相違したときの説明図であって、(A)は2冊の書籍の設置例を示し、(B)は2つのベクトルの間隔を説明する図である。
【
図10】画像スキャナによる二段バーコードの不正読み取りの可能性を示す説明図である。
【発明を実施するための形態】
【0015】
以下、本発明の実施の形態について、書籍に印刷された二段バーコードの読み取りに適用した場合を例に図面を参照して詳細に説明する。なお、各実施の形態は、矛盾のない範囲で複数の実施の形態を組み合わせて実施することができる。
【0016】
図1は本発明の実施の形態に係る二段バーコード読取装置の構成を示す機能ブロック図である。
二段バーコード読取装置は、二段バーコードを画像データとして読み取る画像スキャナ1と、その画像スキャナ1によって得られた画像データを画像処理する画像データ処理部2とを備えている。画像データ処理部2は、バーコード検出部3と、バーコード正当性判断部4と、座標取得部5と、ベクトル算出部6と、ベクトル一致判断部7と、ベクトル始点間距離判断部8とを有している。
【0017】
バーコード検出部3は、画像スキャナ1によって得られた画像データからバーコードと思われる長方形のバーコード領域を特定し、そのバーコード領域の画像データを画像処理してバーコードのデータを検出する。複数のバーコード領域がある場合は、それぞれのバーコード領域からバーコードのデータを検出する。
【0018】
バーコード正当性判断部4は、バーコード検出部3によって得られたバーコードのデータが、あらかじめ定義されているバーコードであるか否かを判断する。書籍に用いられる二段バーコードにおいては、上段バーコードが「978」または「979」から始まり、下段バーコードが「191」または「192」から始まることが定義されている。したがって、バーコード正当性判断部4は、バーの並び方向の始点または終点側に検出された数字が定義された数字かどうかを確認することによって、検出したバーコードが書籍用の二段バーコードであるか否かを判断することができる。
【0019】
座標取得部5は、検出したバーコードが書籍用の二段バーコードである場合に、画像スキャナ1によって得られた画像データにおける上段バーコードおよび下段バーコードの始点および終点の座標を取得する。この二段バーコードの始点および終点の座標は、たとえば、バーコード検出部3によって特定された長方形のバーコード領域から、長方形の各短辺の中心の座標とすることができ、これらの座標は、座標取得部5による演算により取得される。
【0020】
ベクトル算出部6は、座標取得部5によって取得された二段バーコードの始点および終点の座標に基づいて、上段バーコードおよび下段バーコードのベクトルを算出により求める。
【0021】
ベクトル一致判断部7は、ベクトル算出部6によって算出された上段バーコードおよび下段バーコードのベクトルを比較し、ベクトルの長さおよび向き(または画像データの水平基準線に対する傾斜角度)がそれぞれ一致しているか否かを判断する。二段バーコードの場合、各バーコードがほぼ同じ大きさで互いに平行に配置されていて、各バーコードのベクトルが同じになることから、両ベクトルを比較することで、単一書籍の二段バーコードか否かを大まかに確認することができる。
【0022】
ベクトル始点間距離判断部8は、ベクトル算出部6によって算出された上段バーコードおよび下段バーコードのベクトルの始点間距離を判断する。すなわち、ベクトル始点間距離判断部8は、両ベクトルの長さおよび向きが同じでも、下段バーコードのベクトルの始点から当該ベクトルに直交する方向に上段バーコードのベクトルの始点の座標がない場合がある。このような場合、ベクトル始点間距離判断部8は、上段バーコードおよび下段バーコードのベクトルの始点がベクトル方向に離れているとして、単一書籍の二段バーコードでないと判断することができる。また、両ベクトルの長さおよび向きが同じであり、しかも下段バーコードのベクトルの始点から当該ベクトルに直交する方向に上段バーコードのベクトルの始点の座標がある場合でも、両ベクトルの始点の座標があまりにもかけ離れていれば、異なる書籍であると判断できる。
【0023】
図2は本実施の形態に用いられるコンピュータのハードウェアの一構成例を示す図である。
コンピュータ10は、CPU(Central Processing Unit)11によって装置全体が制御されている。CPU11には、RAM(Random Access Memory)12、ROM(Read Only Memory)13および入力インターフェース14がバス15を介して相互に接続されている。
【0024】
RAM12は、コンピュータ10の主記憶装置として使用される。RAM12には、CPU11に実行させるOS(Operating System)のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、RAM12には、CPU11による処理に必要な各種データが格納される。
【0025】
ROM13には、OSのプログラム、二段バーコード読取のためのアプリケーションプログラム、および各種データが格納される。なお、ROM13としては、フラッシュメモリなどのような書き換え可能な不揮発性の半導体メモリが使用される。
【0026】
入力インターフェース14には、撮像素子とすることができるカメラ16が接続されている。入力インターフェース14は、カメラ16から送られてくる画像データをRAM12に送り、CPU11が画像データに対して画像処理を行う。
【0027】
以上のようなハードウェア構成によって、本実施の形態の処理機能、すなわち、画像データ処理部2におけるバーコード検出、バーコード正当性判断、座標取得、ベクトル算出、ベクトル一致判断およびベクトル始点間距離判断の各処理機能を実現することができる。
【0028】
図3は二段バーコード読取装置の処理の流れを示すフローチャート、
図4は座標チェック処理の流れを示すフローチャートである。
図5は2つのバーコードの処理例を示す説明図であって、(A)は2つのバーコードの座標検出を説明し、(B)は2つのバーコードを含む画像データの回転を説明し、(C)は2つのバーコードのベクトル算出を説明する図である。
図6はベクトルの長さが相違したときの説明図であって、(A)は2冊の書籍の設置例を示し、(B)は2つのベクトルの比較を説明する図である。
図7はベクトルの角度が相違したときの説明図であって、(A)は2冊の書籍の設置例を示し、(B)は2つのベクトルの比較を説明する図である。
図8はベクトルの向き方向の始点座標が相違したときの説明図であって、(A)は2冊の書籍の設置例を示し、(B)は2つのベクトルのベクトル方向の離間を説明する図である。
図9はベクトルの間隔が大幅に相違したときの説明図であって、(A)は2冊の書籍の設置例を示し、(B)は2つのベクトルの間隔を説明する図である。
【0029】
二段バーコード読取装置において、
図3に示すバーコード読取処理は、カメラ16の前に書籍が置かれてカメラ16から画像データが送られてきたときに開始される。ここで、CPU11は、まず、バーコードが検出されたか否かを待機する(ステップS1)。画像データからすべてのバーコードが検出されると、CPU11は、検出したバーコードが1つか否かを判断し(ステップS2)、検出したバーコードが1つの場合は、二段バーコード読取不可(読取NG)と判断する。
【0030】
次に、CPU11は、検出したバーコードが2つか否かを判断し(ステップS3)、検出したバーコードが2つでない場合は、二段バーコード読取不可と判断する。検出したバーコードが2つの場合、CPU11は、2つのバーコードが二段バーコードの上段バーコードおよび下段バーコードとしてあらかじめ定義されたものか否かを判断する(ステップS4)。すなわち、書籍の場合、バーコードの先頭の3桁が書籍JAN(Japanese Article Number)コードの上段であることを示す「978」または「979」、下段であることを示す「191」または「192」となっているので、これらの数字から書籍の二段バーコードであることを判断できる。ここで、検出したバーコードが二段バーコードでない場合、CPU11は、二段バーコード読取不可と判断する。
【0031】
次に、検出したバーコードが二段バーコードであると判断された場合、CPU11は、二段バーコードの始点および終点の座標を検出する(ステップS5)。たとえば、
図5の(A)に示したように、カメラ16によって撮影された画像データ20の中に2つのバーコードである第1のバーコード30Aおよび第2のバーコード31Bが検出されていたとする。この場合、CPU11は、黒バーが並んだ長方形のバーコード領域から、その長方形の各短辺の中心の座標を演算により取得する。図示の例では、第1のバーコード30Aについては、その始点の座標A−STおよび終点の座標A−SPが算出され、第2のバーコード31Bについては、その始点の座標B−STおよび終点の座標B−SPが算出される。
【0032】
次に、CPU11は、算出した座標A−ST、座標A−SP、座標B−STおよび座標B−SPを基に座標チェック処理を行う(ステップS6)。次に、CPU11は、その座標チェック処理のチェックがOKかどうかを判断し(ステップS7)、チェックがOKの場合、二段バーコード読取OKと判断する。また、その座標チェック処理のチェックがOKでない場合、CPU11は、二段バーコード読取不可と判断する。
【0033】
ステップS6の座標チェック処理では、
図4に示したように、CPU11は、4つの始点および終点の座標A−ST、座標A−SP、座標B−STおよび座標B−SPのうち画像の原点に近いX:Y座標を0:0にする(ステップS11)。すなわち、
図5の(B)に示したように、画像データ20の原点(図では左下の角の座標)に最も近い座標(図では座標A−ST)をX:Y座標を0:0にしている。
【0034】
次に、CPU11は、座標A−ST,A−SPから、X:Y座標が0:0の第1のバーコード30Aのベクトルの向き、すなわち、X軸に対する傾きの角度αを算出し、
図5の(C)に示したように、0:0の座標を中心に画像を角度α分だけ回転する(ステップS12)。
【0035】
次に、CPU11は、座標A−ST、座標A−SP、座標B−STおよび座標B−SPを基に、第1のバーコード30Aのベクトル長および第2のバーコード31Bのベクトル長および角度βを算出する(ステップS13)。
【0036】
次に、CPU11は、座標A−ST、座標A−SP、座標B−STおよび座標B−SPを基に、第1のバーコード30Aおよび第2のバーコード31Bのベクトル長をそれぞれチェックし(ステップS14)、ベクトル長が同じかどうかをチェックする(ステップS15)。このとき、ベクトル長の比較においては、許容範囲を設け、一方のベクトル長が他方のベクトル長の±20%の範囲内にあれば、チェックOKとする。たとえば、第1のバーコード30Aのベクトル長が第2のバーコード31Bのベクトル長の±20%の許容範囲に入っているかどうかを判断し、許容範囲に入っていない場合には、チェックNGとなる。
【0037】
このチェックNGの例としては、たとえば
図6の(A)に示したように、大きさの異なる2冊の書籍30,31のバーコードが画像データ20に含まれている場合である。バーコードは、大きさが決まっていないので、書籍30,31の大きさが違えば、バーコードの大きさも異なることがある。図示の例では、書籍30,31には、第1のバーコード30A,30Bおよび第2のバーコード31A,31Bがそれぞれ印刷されているが、第1のバーコード30A,30Bが第2のバーコード31A,31Bよりも大きくなっている。このため、
図6の(B)のように、第1のバーコード30Aのベクトル長LAが第2のバーコード31Bのベクトル長LBよりも長くなり、その差が、許容範囲を超えていれば、ベクトル長チェックは、チェックNGと判断される。
【0038】
次に、CPU11は、座標B−STおよび座標B−SPを基に、第2のバーコード31Bのベクトルの角度をチェックし(ステップS16)、角度が0かどうかをチェックする(ステップS17)。このとき、ベクトルの角度のチェックにおいては、第2のバーコード31Bのベクトルの角度が±5°の許容範囲内にあれば、チェックOKとする。ここで、第2のバーコード31Bのベクトルの角度が±5°の許容範囲に入っていない場合には、チェックNGとなる。
【0039】
このチェックNGの例としては、たとえば
図7の(A)に示したように、2冊の書籍30,31が互いに傾斜した状態で重ねられていて、それらのバーコードの片方ずつが画像データ20に含まれている場合である。このような場合、第1のバーコード30Aのベクトルと第2のバーコード31Bのベクトルとの間に、相対的に角度βの分だけベクトルの向きが相違する。このため、
図7の(B)のように、第2のバーコード31Bのベクトルの角度βが、許容範囲を超えていれば、ベクトルの角度チェックは、チェックNGと判断される。
【0040】
次に、CPU11は、座標A−ST、座標A−SP、座標B−STおよび座標B−SPを基に、第1のバーコード30Aおよび第2のバーコード31BのX軸に沿ったX方向の始点間の距離をチェックする(ステップS18)。ここで、第1のバーコード30Aおよび第2のバーコード31BにX方向の離間があるかどうかをチェックする(ステップS19)。このとき、第2のバーコード31BのX方向の離間が第1のバーコード30Aのベクトル長の±20%の許容範囲にあれば、チェックOKとし、許容範囲を超えていれば、チェックNGとなる。
【0041】
このチェックNGの例としては、たとえば
図8の(A)に示したように、2冊の書籍30,31がY軸方向に離間した状態で重ねられていて、それらのバーコードの片方ずつが画像データ20に含まれている場合である。このような場合、第1のバーコード30Aの始点の座標A−STと第2のバーコード31Bの始点の座標B−STとは、距離WだけX方向に離間している。このため、
図8の(B)のように、第1のバーコード30Aの始点の座標A−STと第2のバーコード31Bの始点の座標B−STとの距離Wが許容範囲を超えていれば、X方向始点間距離チェックは、チェックNGと判断される。
【0042】
最後に、CPU11は、座標A−ST、座標A−SP、座標B−STおよび座標B−SPを基に、第1のバーコード30Aおよび第2のバーコード31BのY軸に沿ったY方向の始点間の距離をチェックする(ステップS20)。ここで、第1のバーコード30Aおよび第2のバーコード31BにY方向の離間があるかどうかをチェックする(ステップS21)。このとき、第2のバーコード31BのY方向の離間が第1のバーコード30Aのベクトル長の±50%の許容範囲にあれば、チェックOKとし、許容範囲を超えていれば、チェックNGとなる。
【0043】
このチェックNGの例としては、たとえば
図9の(A)に示したように、2冊の書籍30,31がY軸方向に離間した状態で重ねられていて、それらのバーコードの片方ずつが画像データ20に含まれている場合である。このような場合、第1のバーコード30Aの始点の座標A−STと第2のバーコード31Bの始点の座標B−STとは、距離HだけY方向に離間している。このため、
図9の(B)のように、第1のバーコード30Aの始点の座標A−STと第2のバーコード31Bの始点の座標B−STとの距離Hが許容範囲を超えていれば、Y方向始点間距離チェックは、チェックNGと判断される。
【0044】
以上のように、二段バーコードの始点および終点の座標を検出し、それらの座標を基に、二段バーコードのベクトル長、角度、始点間のXおよびY方向の離間をチェックするようにした。これにより、2冊の書籍が部分的に重なった状態で、両方の二段バーコードを片方ずつ読み取ることがあっても、誤って1冊の二段バーコードとして認識してしまうことがなくなる。
【0045】
なお、上記の実施の形態では、第1のバーコード30Aの始点の座標A−STと第2のバーコード31Bの始点の座標B−STとのX方向およびY方向の距離W,Hのチェックを分かりやすく説明するために、ステップS12の段階で画像データを回転するようにした。しかし、処理速度を高めるために、画像データの回転をすることなく、距離W,Hのチェックをすることが好ましい。すなわち、距離Wは、第1のバーコード30Aのベクトルの始点の座標A−STから当該ベクトルに直交する方向に第2のバーコード31Bのベクトルの始点の座標B−STが存在するかを計算により求めることでチェックすることができる。また、距離Wのチェックの際に、第2のバーコード31Bのベクトルの始点の座標B−STが存在する場合に、始点間の距離を求めることにより、距離Hをチェックすることができる。