(57)【要約】【課題】商品のパッケージ等に付されたコード自体に汚れが付いていたり、撮影画像内のコード上に照明光が重なって写り込んでしまったりしている場合でも、コードの正確な読み取りを行うことができるようにする。【解決手段】バーコードの撮影画像を複数の水平エリアに分割し、各水平エリアの中から読み取り可能な領域をそれぞれ抽出する領域抽出部２と、抽出した複数の領域を結合することによってバーコードの全体を復元する領域結合部４とを備え、バーコードの一部に読み取れない箇所が生じていても、読み取り可能な複数の領域を部分的に抽出し、それらの領域を結合して全体として読み取り可能なバーコードを復元することにより、部分的に汚れや照明光の写り込みがあるバーコードであっても正確な読み取りを行うことができるようにする。【選択図】図１
2015122015.tif 000002
【特許請求の範囲】
【請求項１】
バーコードの撮影画像を複数の水平エリアに分割し、各水平エリアの中から読み取り可能な領域をそれぞれ抽出する領域抽出部と、
上記領域抽出部により抽出された複数の領域を結合することによって上記バーコードの全体を復元する領域結合部と、
上記領域結合部により復元された上記バーコードをデコードするデコード部とを備えたことを特徴とするコード読取装置。
【請求項２】
上記領域抽出部により抽出された複数の領域の中から、上記領域結合部による結合に適した領域を選別する領域選別部をさらに備え、
上記領域結合部は、上記領域選別部により選別された領域を結合することによって上記バーコードの全体を復元することを特徴とする請求項１に記載のコード読取装置。
【請求項３】
上記領域選別部は、上記バーコードの左端を含む第１の領域および上記バーコードの右端を含む第２の領域を少なくとも選別し、上記第１の領域と上記第２の領域とに重複領域が存在しない場合は、上記第１の領域と上記第２の領域との間を繋ぐ中間の位置にある１以上の第３の領域をさらに選別することを特徴とする請求項２に記載のコード読取装置。
【請求項４】
上記領域結合部は、上記複数の領域の位置をずらしながら領域内の線分を結合させていき、上記複数の領域内の線分の合致度が最も高い位置の結合状態を採用することを特徴とする請求項１〜３の何れか１項に記載のコード読取装置。
【請求項５】
バーコードの撮影画像を複数の水平エリアに分割し、各水平エリアの中から読み取り可能な領域をそれぞれ抽出する領域抽出手段、
上記領域抽出手段により抽出された複数の領域を結合することによって上記バーコードの全体を復元する領域結合手段、および
上記領域結合手段により復元された上記バーコードをデコードするデコード手段
としてコンピュータを機能させるためのコード読取用プログラム。
【請求項６】
上記領域抽出手段により抽出された複数の領域の中から、上記領域結合手段による結合に適した領域を選別する領域選別手段を更に備え、
上記領域結合手段は、上記領域選別手段により選別された領域を結合することによって上記バーコードの全体を復元することを特徴とする請求項５に記載のコード読取用プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コード読取装置およびコード読取用プログラムに関し、特に、撮影した画像からバーコードの読み取りを行うコード読取装置に用いて好適なものである。
【背景技術】
【０００２】
従来、あらかじめ規定された白線と種々の太さの黒線との組み合せから成る縞模様によって各種の情報を表すバーコードや、複数のドットを縦横に配列してより多くの情報を表すことを可能にした二次元コードは、その読み取りとコード認識が容易であるため、広い分野に利用されている。
【０００３】
例えば、これらのバーコードや二次元コード（以下、これらをまとめて単にコードという）は、商品のパッケージ等に付され、流通過程において商品を認識するために使われる。この場合、コードは専用のコードリーダやカメラ等によって読み取られ、数値や文字からなる情報にデコードされる。また、最近では、携帯電話やスマートフォン等のモバイル端末の画面上にコードを表示させ、これを専用のコードリーダで読み取ってデコードするようにした技術も提供されている。
【０００４】
しかしながら、商品のパッケージ等に付されたコードをカメラで読み取る場合、コード自体に汚れが付いていたり、カメラで撮影した画像のコード上に照明光が重なって写り込んでしまったりしていると、コードの正確な読み取りができなくなってしまうという問題があった。
【０００５】
また、モバイル端末の表示画面に表示させたコードを読み取る場合、表示画面に傷や汚れがあったり、コードリーダからの照明光の入射角度によって表示画面が部分的に鏡面反射を起こしたりすると、コードの正確な読み取りができなくなってしまうという問題があった。
【０００６】
後者のような問題に鑑みて、モバイル端末の画面に鏡面反射が生じたり、画面に傷や汚れなどが付いていたりしても、画面に表示されたＱＲコードを正確にデコードすることを可能にした技術が提案されている（例えば、特許文献１参照）。この特許文献１に記載の技術では、同一のＱＲコードの画像を画面上に時間間隔を置いて複数回表示するようにし、かつ、その複数回表示する画像は、各回で互いに９０度回転した状態に表示するようにする。このようにすれば、ＱＲコードの一部に読み取れない箇所が生じていても、１回目のＱＲコードの表示で読み取り不能となった部分が２回目以降の表示で読み取り可能となる。
【０００７】
また、この特許文献１には、１つのＱＲコードを複数個に分割し、その分割された各コードの画像を画面上に時間間隔を置いて順に表示することも記載されている。この場合、分割された各コードをコードリーダで読み取ってデコードし、各コードからデコードされた複数のデータを合成することによって、元のＱＲコードのデコードデータとするようになされている。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００４−５４５８１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
上記特許文献１に記載の技術では、モバイル端末の画面上に表示させたコードの一部が画面の汚れや鏡面反射などによって読み取れない場合の問題は解消することが可能である。しかしながら、カメラで撮影された画像内に写ったコードそのものが、商品のパッケージ等に付されたコード自体の汚れや撮影画像への照明光の写り込みなどによって読み取れない場合の問題は解消することができない。
【００１０】
本発明は、このような問題を解決するために成されたものであり、商品のパッケージ等に付されたコード自体に汚れが付いていたり、撮影画像内のコード上に照明光が重なって写り込んでしまったりしている場合でも、コードの正確な読み取りを行うことができるようにすることを目的とする。
【課題を解決するための手段】
【００１１】
上記した課題を解決するために、本発明では、バーコードの撮影画像を複数の水平エリアに分割し、各水平エリアの中から読み取り可能な領域をそれぞれ抽出し、抽出した複数の領域を結合することによってバーコードの全体を復元するようにしている。
【発明の効果】
【００１２】
上記のように構成した本発明によれば、商品のパッケージ等に付されたコード自体に汚れが付いていたり、撮影画像内のコード上に照明光が重なって写り込んでしまったりして、バーコードの一部に読み取れない箇所が生じていても、読み取り可能な複数の領域が部分的に抽出され、それらの領域が結合されて全体として読み取り可能なバーコードが復元される。これにより、部分的に汚れや照明光の写り込みがあるバーコードであっても正確な読み取りを行うことができる。
【図面の簡単な説明】
【００１３】
【図１】本実施形態によるコード読取装置の機能構成例を示すブロック図である。
【図２】本実施形態による領域抽出部の動作を説明するための図である。
【図３】本実施形態による領域選別部の動作を説明するための図である。
【図４】本実施形態による領域選別部の動作を説明するための図である。
【図５】本実施形態による領域結合部の動作を説明するための図である。
【発明を実施するための形態】
【００１４】
以下、本発明の一実施形態を図面に基づいて説明する。図１は、本実施形態によるコード読取装置の機能構成例を示すブロック図である。本実施形態のコード読取装置１０は、例えばスマートフォンやタブレット等のモバイル端末に実装されるものであり、その機能構成として、画像入力部１、領域抽出部２、領域選別部３、領域結合部４およびデコード部５を備えている。
【００１５】
上記各機能ブロック１〜５は、ハードウェア、ＤＳＰ（Digital Signal Processor）、ソフトウェアの何れによっても構成することが可能である。例えばソフトウェアによって構成する場合、上記各機能ブロック１〜５は、実際にはコンピュータのＣＰＵ、ＲＡＭ、ＲＯＭなどを備えて構成され、ＲＡＭやＲＯＭ、ハードディスクまたは半導体メモリ等の記録媒体に記憶されたコード読取用プログラムが動作することによって実現される。
【００１６】
画像入力部１は、モバイル端末が備えるカメラ１５により撮影されたバーコードの画像を入力する。例えば、商品のパッケージに付されたバーコードをユーザがカメラ１５で撮影すると、画像入力部１はその撮影画像をカメラ１５からコード読取装置１０に入力する。
【００１７】
領域抽出部２は、画像入力部１により入力されたバーコードの撮影画像を複数の水平エリアに分割し、各水平エリアの中から読み取り可能な領域をそれぞれ抽出する。図２は、この領域抽出部２の動作を説明するための図である。図２（ａ）は、商品のパッケージに付されたバーコードの撮影画像を示すものであり、バーコード上に汚れ２０が付いた状態を示している。
【００１８】
図２（ｂ）は、汚れ２０の付いたバーコードの撮影画像を３つの水平エリア２１，２２，２３に３等分した状態を示し、図２（ｃ）は、各水平エリア２１，２２，２３の中から読み取り可能な領域２４〜２８をそれぞれ抽出した状態を示している。読み取り可能な領域２４〜２８とは、例えば、黒線および白線の全長において汚れ２０が全く付着していない領域である。バーコードに汚れ２０が付着していると、その汚れ２０の部分は黒色でも白色でもない中間色となる。そこで、領域抽出部２は、黒線および白線の全長の中に中間色が含まれていないエリアを読み取り可能な領域２４〜２８として抽出する。
【００１９】
また、バーコードでは通常、白線として採り得る最大幅が規定されている。そこで、領域抽出部２は、白色のエリア幅が白線の最大幅を超えるかどうかを判定し、超える場合にはそこで領域を分断する。すなわち、真ん中の水平エリア２２では領域を分断して２つの読み取り可能な領域２５，２６を抽出し、一番下の水平エリア２３でも領域を分断して２つの読み取り可能な領域２７，２８を抽出する。
【００２０】
領域選別部３は、領域抽出部２により抽出された複数の読み取り可能な領域２４〜２８の中から、領域結合部４による結合に適した領域を選別する。図３は、この領域選別部３の動作を説明するための図である。結合に適した領域とは、領域結合部４によって結合を行ったときに元のバーコードの全体を復元可能な最小限の領域である。
【００２１】
具体的には、領域選別部３は、バーコードの左端を含む第１の領域２４と、バーコードの右端を含む第２の領域２８とを少なくとも選別する。左端を含む領域が複数ある場合は、その中から横幅が最も長いものを選別する。すなわち、左端を含む３つの読み取り可能な領域２４，２５，２７の中から、横幅が最も長い領域２４を選別する。同様に、右端を含む領域が複数ある場合は、その中から横幅が最も長いものを選別する。すなわち、右端を含む２つの読み取り可能な領域２６，２８の中から、横幅が最も長い領域２８を選別する。
【００２２】
領域選別部３は、以上のようにして抽出した第１の領域２４と第２の領域２８とに重複領域が存在するか否かを判定する。重複領域が存在する場合、領域選別部３はそれ以外に領域の選別を行わない。図３の場合はこれに該当するので、領域選別部３が選別する領域は第１の領域２４および第２の領域２８のみである。
【００２３】
一方、図４に示すように、バーコードの左端を含む第１の領域３１と右端を含む第２の領域３２とに重複領域が存在しない場合、領域選別部３は、第１の領域と３１第２の領域３２との間を繋ぐ中間の位置にある１以上の第３の領域３３をさらに選別する。このとき選別する第３の領域３３は、図４（ａ）に示すように、第１の領域３１との間に重複領域を有し、かつ、第２の領域３２との間にも重複領域を有する領域であるのが好ましい。選別する第３の領域３３が最小限の１個で済むからである。
【００２４】
ただし、第１の領域３１と第２の領域３２との両方に重複する領域が存在しない場合は、図４（ｂ）に示すように、少なくとも第１の領域３１との間で重複領域を有する第３の領域３３-1と、少なくとも第２の領域３２との間で重複領域を有する第３の領域３３-2とを選別する。なお、このように第３の領域３３を複数選別できるようにするには、水平エリアの分割数を４つ以上とする必要がある。
【００２５】
図４（ｂ）のように選別する２つの第３の領域３３-1，３３-2は、互いが重複する領域を持つものであるのが好ましい。選別する第３の領域３３-1，３３-2が２個で済むからである。なお、２つの第３の領域３３-1，３３-2との間にも重複領域が存在しない場合、領域選別部３はその間を繋ぐ中間の位置にある別の第３の領域をさらに選別する。
【００２６】
領域結合部４は、領域選別部３により選別された領域を結合することにより、バーコードの全体を復元する。具体的には、領域結合部４は、複数の領域の位置をずらしながら領域内の線分を結合させていき、複数の領域内の線分の合致度が最も高い位置の結合状態を採用する。
【００２７】
図５は、この領域結合部４の動作を説明するための図である。図５（ａ）〜（ｃ）は、領域選別部３により選別された第１の領域２４と第２の領域２８との位置関係を１ドットずつ水平方向にずらしていったときの３つの状態を代表として示している。このうち、図５（ｂ）が、第１の領域２４内にある黒線と第２の領域２８内にある黒線との合致度が最も高い状態を示している。
【００２８】
この場合、領域結合部４は、図５（ｂ）の位置関係にあるときの結合状態を採用し、第１の領域２４内にある黒線と第２の領域２８内にある黒線とを結合させる。具体的には、合致している線分（重複領域の線分）どうしが１つに重ね合されるように、第１の領域２４の画像と第２の領域２８の画像とを合成する。その結果を示したものが図５（ｄ）である。
【００２９】
なお、図４のように３つ以上の領域が選別されている場合は、互いに重複領域を有する２つの領域間で上述の処理を行うことによって、バーコードの全体を復元する。例えば、図４（ａ）のように３つの領域３１〜３３が選別されている場合は、第１の領域３１と第３の領域３３との間で線分の結合を行うとともに、第２の領域３２と第３の領域３３との間で線分の結合を行う。
【００３０】
デコード部５は、領域結合部４により復元されたバーコードをデコードし、それによって得られた数値列や文字列などの情報を出力する。図５（ｄ）に示したように、領域結合部４により復元されたバーコードは、垂直方向の長さ（黒線と白線の長さ）が本来のバーコードよりも短くなっている。ただし、水平方向の縞模様は完全に復元されている。バーコードの読み取りは水平方向の縞模様に基づき行われるので、図５（ｄ）のように垂直方向の長さが短くなっていても、正しくデコードを行うことが可能である。
【００３１】
以上詳しく説明したように、本実施形態では、バーコードの撮影画像を複数の水平エリア２１〜２３に分割し、各水平エリア２１〜２３の中から読み取り可能な領域２４〜２８をそれぞれ抽出し、さらに結合に適した領域２４，２８を選別する。そして、選別した領域２２，２８を結合することによってバーコードの全体を復元するようにしている。
【００３２】
このように構成した本実施形態によれば、図２（ａ）のように商品のパッケージ等に付されたバーコード自体に汚れ２０が付いていて、バーコードの一部に読み取れない箇所が生じていても、図５（ｄ）のように全体として読み取り可能なバーコードの画像を生成することができる。これにより、部分的に汚れ２０があるバーコードであっても、正確な読み取りを行うことができる。同様に、撮影画像内のバーコード上に照明光が重なって写り込んでしまっていても、正確な読み取りを行うことができる。
【００３３】
なお、上記実施形態では、複数の読み取り可能な領域２４〜２８の中から結合に適した領域２４，２８を選別し、当該選別した領域２４，２８を結合する例について説明したが、本発明はこれに限定されない。例えば、領域抽出部２により抽出された複数の領域２４〜２８を結合することによってバーコードの全体を復元するようにしてもよい。ただし、結合させる領域の選別を行った方が結合の際の処理負荷を減らすことができる点で好ましい。
【００３４】
また、上記実施形態では、バーコードを３つの水平エリア２１〜２３に３等分する例について説明したが、この分割数は単なる例示に過ぎない。分割数を多くした方が、領域結合部４による結合に適した領域が長くなりやすいので、３つより多い水平エリアに分割するようにしてもよい。
【００３５】
また、最初は２つの水平エリアに分割し、それぞれの水平エリア内から領域選別部３により選別される領域が２つ以下とならない場合に、分割数を３つに増やすようにしてもよい。そして、３つの水平エリア内から領域選別部３により選別される領域が２つ以下とならない場合には、分割数をさらに４つに増やすというように、領域選別部３により選別される領域が２つ以下となるまで水平エリアの分割数を増やしていくようにしてもよい。
【００３６】
このようにすれば、領域結合部４では常に２つ以下の領域を結合すれば良くなるので（領域選別部３により選別される領域が１つのみの場合は結合自体が不要となる）、結合の際の処理負荷を減らすことができる。なお、水平エリアの分割数を増やすか否かの判断基準は、領域選別部３により選別される領域が３つ以下となるか否かとしてもよい。
【００３７】
また、最初は２つの水平エリアに分割し、それぞれの水平エリアから領域抽出部２により抽出される読み取り可能な領域の何れにおいてもバーコードの左端または右端が含まれていない場合に、分割数を３つに増やすようにしてもよい。そして、水平エリアの分割数を３つに増やしても、バーコードの左端を含む領域または右端を含む領域が領域抽出部２により抽出されない場合には、分割数をさらに４つに増やすというように、バーコードの左端を含む領域と右端を含む領域との両方が領域抽出部２により抽出されるまで水平エリアの分割数を増やしていくようにしてもよい。
【００３８】
また、上記実施形態では、領域抽出部２は、黒線および白線の全長において中間色が全く含まれていないエリアを読み取り可能な領域２４〜２８として抽出する例について説明したが、本発明はこれに限定されない。例えば、全長の中の一部に汚れ２０が付いていても、黒線の少なくとも一部が汚れ２０のない状態となっているエリアも含めて読み取り可能な領域を抽出するようにしてもよい。ただし、この場合は、読み取り可能な領域を抽出した後、汚れ２０を除去する処理を行う。
【００３９】
汚れ２０を除去する処理は、例えば以下のようにして行うことが可能である。すなわち、中間色のある領域を水平方向１ドットずつ垂直方向（黒線または白線の長さ方向）にスキャンして、列内に黒色または白色のどちらのドットが含まれているかを判断することにより、黒線または白線のどちらに汚れ２０が付いているのかを列ごとに判別する。そして、黒線に汚れ２０が付いている列については汚れ２０の中間色を黒色に置換する。一方、白線に汚れ２０が付いている列については汚れ２０の中間色を白色に置換する。
【００４０】
このようにすれば、領域抽出部２により抽出される読み取り可能な領域の水平方向の長さがより長くなり、領域選別部３により選別される領域の数をできるだけ少なくすることができる可能性が高くなる。これにより、領域結合部４によって線分の結合を行う際の処理負荷を減らすことができる。また、領域抽出部２が読み取り可能な領域を抽出する際に、バーコードの左端または右端を含む領域を抽出しやすくすることもできる。
【００４１】
その他、上記実施形態は、何れも本発明を実施するにあたっての具体化の一例を示したものに過ぎず、これによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその要旨、またはその主要な特徴から逸脱することなく、様々な形で実施することができる。
【符号の説明】
【００４２】
１  画像入力部
２  領域抽出部
３  領域選別部
４  領域結合部
５  デコード部
１０  コード読取装置
【図１】
2015122015.tif 000003
【図２】
2015122015.tif 000004
【図３】
2015122015.tif 000005
【図４】
2015122015.tif 000006
【図５】
2015122015.tif 000007