(57)【要約】      （修正有）【課題】撮像された画像からバーコードの位置を的確に検出することができるバーコード読取装置を提供する。【解決手段】バーコード読取装置であって、少なくともバーコードを含む領域を撮像する撮像部１と、撮像された画像に微分処理を行った画像から、濃度値に基づき前記微分処理後の画像上での明領域、暗領域を識別した明暗データを作成する明暗領域識別部２と、明暗データに対し、少なくともバーコードのバー間のスペースが明領域になるまで前記明領域を膨張させ、膨張させた明領域を、少なくとも、バー間のスペースが明領域となった前記バーコードと他の明領域との接触がなくなるまで縮退させ、縮退させた明領域を、膨張させる前のサイズに戻した明暗データを作成する膨張縮退部３と、膨張縮退部３によって作成された明暗データの明領域それぞれのうちから最大面積の明領域を選定する位置抽出部４と、を備えた。【選択図】図１
2010140311.tif 000002
【特許請求の範囲】
【請求項１】
少なくともバーコードを含む領域を撮像する撮像部と、
前記撮像部にて撮像された画像にバーコードスキャン方向での微分処理を少なくとも行い、該微分処理を行った画像の濃度値に基づき、前記微分処理を行った画像上での明領域と、前記微分処理を行った画像上での暗領域とを識別した明暗データを作成する明暗領域識別部と、
前記明暗領域識別部によって作成された明暗データに対し、少なくとも明部分に挟まれた暗部分が明領域になるまで明領域を膨張させ、膨張させた明領域を、少なくとも、バー間のスペースが明領域となった前記バーコードと他の明領域との接触がなくなるまで縮退させ、縮退させた明領域を、膨張させる前のサイズに戻した明暗データを作成する膨張縮退部と、
前記膨張縮退部によって作成された明暗データにおける、明領域それぞれのうちから最大面積の明領域を選定する選定部と、
を備えるバーコード読取装置。
【請求項２】
請求項１に記載のバーコード読取装置において、
前記選定部によって選定された明領域をバーコード位置とし、該バーコード位置に基づき前記撮像部によって撮像された画像内のバーコードをデコードするバーコード解読部と、
を備えるバーコード読取装置。
【請求項３】
請求項１または請求項２に記載のバーコード読取装置において、
前記明暗領域識別部は、前記撮像部によって撮像された画像に対し、シェーディング補正を行い、該シェーディング補正後の画像に対しバーコードスキャン方向での微分処理を行い、該微分処理後の画像に対し２値化処理を行うことで、明領域と暗領域とを識別した明暗データを作成することを特徴とするバーコード読取装置。
【請求項４】
少なくともバーコードを含む領域が撮像された画像を取得する取得ステップと、
前記取得ステップによって取得された画像にバーコードスキャン方向での微分処理を少なくとも行い、該微分処理を行った画像の濃度値に基づき、前記微分処理を行った画像上での明領域と、前記微分処理を行った画像上での暗領域とを識別した明暗データを作成する明暗領域識別ステップと、
前記明暗領域識別ステップよって作成された明暗データに対し、少なくとも明部分に挟まれた暗部分が明領域になるまで明領域を膨張させ、膨張させた明領域を、少なくとも、バー間のスペースが明領域となった前記バーコードと他の明領域との接触がなくなるまで縮退させ、縮退させた明領域を、膨張させる前のサイズに戻した明暗データを作成する膨張縮退ステップと、
前記膨張縮退ステップによって作成された明暗データの明領域それぞれのうちから最大面積の明領域を選定する選定ステップと、
前記選定ステップによって選定された明領域をバーコード位置とし、該バーコード位置に基づき前記取得ステップによって取得された画像内のバーコードをデコードするバーコード解読ステップと、
をコンピュータに実行させるバーコード読取プログラム。
【請求項５】
少なくともバーコードを含む領域が撮像された画像を取得する取得ステップと、
前記取得ステップによって取得された画像にバーコードスキャン方向での微分処理を少なくとも行い、該微分処理を行った画像の濃度値に基づき、前記微分処理を行った画像上での明領域と、前記微分処理を行った画像上での暗領域とを識別した明暗データを作成する明暗領域識別ステップと、
前記明暗領域識別ステップよって作成された明暗データに対し、少なくとも明部分に挟まれた暗部分が明領域になるまで明領域を膨張させ、膨張させた明領域を、少なくとも、バー間のスペースが明領域となった前記バーコードと他の明領域との接触がなくなるまで縮退させ、縮退させた明領域を、膨張させる前のサイズに戻した明暗データを作成する膨張縮退ステップと、
前記膨張縮退ステップによって作成された明暗データの明領域それぞれのうちから最大面積の明領域を選定する選定ステップと、
前記選定ステップによって選定された明領域をバーコード位置とし、該バーコード位置に基づき前記取得ステップによって取得された画像内のバーコードをデコードするバーコード解読ステップと、
を実行するバーコード読取方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、バーコードを含んだ領域を撮像し、撮像された画像からバーコードを読み取るバーコード読取装置、バーコード読取プログラム、バーコード読取方法に関する。
【背景技術】
【０００２】
従来、カメラによってバーコードを含んだ領域が撮像され、撮像された画像に基づきバーコードをデコードする手法が開示されている。
【０００３】
また、波形を解読するために撮像画像を２回微分処理し、得られた画像から０クロス点を求める方法が知られている。
【０００４】
なお、本発明の関連ある従来技術として、バーコードの画像が不鮮明であっても、情報を認識可能なバーコード認識装置、方法が開示されている（例えば特許文献１）。
【特許文献１】特開２００７−２２６３２８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、ノイズがある撮像画像に対し、またバー幅の細いバーコードに対して、サブピクセルでの波形を解読するためには、上述の２回微分処理をすることで０クロス点を求める方法では、正確なバー幅を求めるのは困難であり、よって正確なバーコード読取を行うことができない。
【０００６】
本発明は上述した課題を解決するためになされたものであり、撮像された画像が粗い、撮像された画像がぼやけている、ノイズがある、またバーコードのバー幅が細い等であってもバーコードの位置を的確に検出し、検出されたバーコード位置に基づきバーコードを的確にデコードすることができるバーコード読取装置、バーコード読取プログラム、バーコード読取方法を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上述した課題を解決するため、本発明の一態様に係るバーコード読取装置は、少なくともバーコードを含む領域を撮像する撮像部と、前記撮像部にて撮像された画像にバーコードスキャン方向での微分処理を少なくとも行い、該微分処理を行った画像の濃度値に基づき、前記微分処理を行った画像上での明領域と、前記微分処理を行った画像上での暗領域とを識別した明暗データを作成する明暗領域識別部と、前記明暗領域識別部によって作成された明暗データに対し、少なくとも明部分に挟まれた暗部分が明領域になるまで明領域を膨張させ、膨張させた明領域を、少なくとも、バー間のスペースが明領域となった前記バーコードと他の明領域との接触がなくなるまで縮退させ、縮退させた明領域を、膨張させる前のサイズに戻した明暗データを作成する膨張縮退部と、前記膨張縮退部によって作成された明暗データにおける、明領域それぞれのうちから最大面積の明領域を選定する選定部と、を備えることを特徴とする。
【０００８】
また、本発明の一態様に係るバーコード読取プログラムは、少なくともバーコードを含む領域が撮像された画像を取得する取得ステップと、前記取得ステップによって取得された画像にバーコードスキャン方向での微分処理を少なくとも行い、該微分処理を行った画像の濃度値に基づき、前記微分処理を行った画像上での明領域と、前記微分処理を行った画像上での暗領域とを識別した明暗データを作成する明暗領域識別ステップと、前記明暗領域識別ステップよって作成された明暗データに対し、少なくとも明部分に挟まれた暗部分が明領域になるまで明領域を膨張させ、膨張させた明領域を、少なくとも、バー間のスペースが明領域となった前記バーコードと他の明領域との接触がなくなるまで縮退させ、縮退させた明領域を、膨張させる前のサイズに戻した明暗データを作成する膨張縮退ステップと、前記膨張縮退ステップによって作成された明暗データの明領域それぞれのうちから最大面積の明領域を選定する選定ステップと、前記選定ステップによって選定された明領域をバーコード位置とし、該バーコード位置に基づき前記取得ステップによって取得された画像内のバーコードをデコードするバーコード解読ステップと、をコンピュータに実行させることを特徴とする。
【０００９】
さらに、本発明の一態様に係るバーコード読取方法は、少なくともバーコードを含む領域が撮像された画像を取得する取得ステップと、前記取得ステップによって取得された画像にバーコードスキャン方向での微分処理を少なくとも行い、該微分処理を行った画像の濃度値に基づき、前記微分処理を行った画像上での明領域と、前記微分処理を行った画像上での暗領域とを識別した明暗データを作成する明暗領域識別ステップと、前記明暗領域識別ステップよって作成された明暗データに対し、少なくとも明部分に挟まれた暗部分が明領域になるまで明領域を膨張させ、膨張させた明領域を、少なくとも、バー間のスペースが明領域となった前記バーコードと他の明領域との接触がなくなるまで縮退させ、縮退させた明領域を、膨張させる前のサイズに戻した明暗データを作成する膨張縮退ステップと、前記膨張縮退ステップによって作成された明暗データの明領域それぞれのうちから最大面積の明領域を選定する選定ステップと、前記選定ステップによって選定された明領域をバーコード位置とし、該バーコード位置に基づき前記取得ステップによって取得された画像内のバーコードをデコードするバーコード解読ステップと、を実行することを特徴とする。
【発明の効果】
【００１０】
撮像された画像からバーコードの位置を的確に検出することができる。
【発明を実施するための最良の形態】
【００１１】
本実施の形態では、ＮＷ−７のコード体系の仕様に準拠したバーコードを処理の対象とする。ここで、ＮＷ−７について説明する。尚、本実施の形態で開示するバーコード読取装置、バーコード読取プログラム、バーコード読取方法は、ＮＷ−７以外のコード体系（例えばＣｏｄｅ−３９）でも適用可能である。
【００１２】
ＮＷ−７のコード体系では、４本のバーと３本のスペースの合計７本で１文字が構成される。また、文字と文字の間には、キャラクタギャップと呼ばれるワイドスペース部分があるものとする。
【００１３】
バーとスペースは幅が細いもの（ナローバー／ナロースペース）と、太いもの（ワイドバー／ワイドスペース）がある。尚、ナローとワイドの比率が2倍〜3倍であることとする。
【００１４】
また、バーコード幅の密度は、以下の通りである。本実施の形態では、高密度にも対応できる。
・低密度  ：  ナロー幅＝０．４０mm、比率２．５倍
・中密度  ：  ナロー幅＝０．２６mm  比率２．５倍
・高密度  ：  ナロー幅＝０．１９mm  比率２．２５倍
【００１５】
ナローバーとナロースペースは、バイナリーコードの０を表し、ワイドバーとワイドスペースはバイナリーコードの１を表す。すなわち、１文字は７ビットで表現されることになる。
【００１６】
また、ＮＷ−７のコード体系には、以下の仕様がある。
・バーコードの左マージン、右マージンにナロースペースの１０倍以上のスペースを要する。
・データフィールド長は９６ビットで、１２文字を表現する。
・開始文字、終了文字は「ａ」のみ。
【００１７】
また、以下の説明では、バーコードの位置検出に特化したバーコード読取装置の形態を「実施の形態１」として説明し、バーコードの判読に特化したバーコード読取装置の形態を「実施の形態２」として説明する。また、以降の説明では、バーコードの配列方向すなわちスキャン方向を横軸（Ｘ軸）とした画像を対象とする。
【００１８】
（実施の形態１）
実施の形態１におけるバーコード読取装置の機能構成を、図１を参照しつつ説明する。バーコード読取装置１００は、撮像部１、明暗領域識別部２、膨張縮退部３、位置抽出部４（選定部）、バーコード解読部５を備える。
【００１９】
撮像部１は、少なくともバーコードを含んだ領域を、レンズを介して動画として撮像し、撮像した映像を撮像素子に結像させビデオ信号として出力するカメラである。撮像部１は、例えば携帯電話機に代表される動画撮像機能を有する携帯端末機であり、ユーザはバーコード近傍を撮像し続けた状態で、撮像画像の動画を確認しながら作業を実施することができる。
【００２０】
明暗領域識別部２は、撮像された動画画像の１フレーム（１枚の静止画）に対し、シェーディング補正、Ｘ方向微分処理等の画像処理を実施し、画像処理後の画像の明るい領域（以下、白色領域（明領域）と称す）と暗い領域（以下、黒色領域（暗領域）と称す）を識別した画像を生成する。尚、実施の形態１では、白色領域、黒色領域とが２値化された画像が生成されるものとする。
【００２１】
膨張縮退部３は、明暗領域識別部２によって２値化された画像に対し、少なくとも白色部分に挟まれた黒色部分が白色領域になるまで（バー間の黒い隙間（濃度値が０のもの）が埋まるまで、すなわちバー間のスペース部が無くなるまで）白色領域を膨張させる。また、膨張縮退部３は、バーコードの白色領域が周辺の白色領域と接触しているのを切断するため、白色領域を縮退させる。
【００２２】
さらに、膨張縮退部３は、縮退させた白色領域を再度膨張させ、バーコードを元のサイズに戻す。尚、膨張縮退部３は、膨張処理、縮退処理、および元のバーコードサイズに戻すための膨張処理の各ステップで得られるデータを画像データとしてメモリに保持させるものとする。
【００２３】
位置抽出部４は、膨張縮退部３によって膨張処理、縮退処理、および元のバーコードサイズに戻すための膨張処理が実行された画像データに対し、ラベリング処理を行い、白色領域を抽出する。その後、位置抽出部４は、白色領域のうちで一番大きい面積を選定する。尚、この最大面積がバーコードの位置となる。
【００２４】
バーコード解読部５は、位置抽出部４によって抽出された最大面積の白色領域をバーコードの位置とし、当該バーコードの位置に基づき、撮像部１によって撮像された画像内のバーコードをデコード（バーコード解読処理）する。
【００２５】
次に、本実施の形態におけるバーコード読取装置１００の動作を図２のフローチャートを参照しつつ説明する。
【００２６】
まず、撮像部１は、少なくともバーコードを含んだ領域を撮像し、撮像画像を取得する（Ｓ１）。次に明暗領域識別部２は、撮像された画像の平均濃度を算出し、平均濃度が一定範囲にない場合はゲイン値を変更し、平均濃度が一定範囲になるよう補正する（Ｓ２）。
【００２７】
明暗領域識別部２は、ゲインの変更が行われた画像に対し、シェーディング補正を行う（Ｓ３）。明暗領域識別部２は、シェーディング補正としてＸ方向（画像に対する横成分方向）で所定区域の最大の濃度値をその所定領域の中央の濃度値として平均化し、画素毎に、平均化処理をした濃度値で元の画像の濃度値を除算する。また明暗領域識別部２は、その後、除算した値に一定値を積算して各画素の濃度値とする。
【００２８】
ここで、撮像部１によって得られた原画像のバーコード部を図３に、上述シェーディング補正までを施した画像を図４にそれぞれ示す。このように、ゲイン変更処理やシェーディング補正を行うことによって、照明などの外来光の影響を緩和するとともに、原画像のバーの部分とバー間のスペースとの区別をある程度を鮮明にすることができる。尚、図３、図４ではバーコードの画像（Ｘ軸、Ｙ軸の2次元画像）を示したが、処理を高速にするため、実際は上述の通りＸ方向のみの１次元で処理が行われる。
【００２９】
次に、明暗領域識別部２は、シェーディング補正が施された画像に対し、Ｘ方向に隣接した画素の濃度値の差分を取って各画素の濃度値とするＸ方向微分処理を行う（Ｓ４）。図５にＸ方向微分処理を施した画像を示す。図５に示すように明暗領域識別部２は、Ｘ方向微分処理を行うことでバーの部分を強調する。尚、本実施の形態においては、図５に示すように、Ｘ方向微分処理を施した後の画像は本来明るい領域近傍は低い濃度値となり、本来暗い領域近傍は高い濃度値となっていることに留意する。
【００３０】
続いて明暗領域識別部２は、Ｘ方向微分処理を施した後の画像に対し２値化処理を行う（Ｓ５）。
【００３１】
２値化処理を行う際の閾値の選定方法について、図６、図７を参照しつつ説明する。まず、図６（Ａ）にＸ方向微分処理を施した画像の濃度断面図（縦軸が濃度値、横軸が画素単位での画像上の位置）を示す。明暗領域識別部２は、ここで例えば２０画素ずつの局所領域（図６（Ｂ）参照）の濃度値ヒストグラムを作成する。実施の形態１では、例えば濃度のピークが２画素分程度である場合、そのピーク１０箇所分を局所領域の範囲とする。
【００３２】
図７に、縦軸を局所領域内の画素数（個数）、横軸を濃度値とした局所領域の濃度値ヒストグラムを示す。明暗領域識別部２は、濃度波形を２つのクラスに区切ったときに、双方の波形間の分散が最大になるような濃度値を閾値とする（クラス間分散）。明暗領域識別部２は、このように局所領域ごとに閾値を算出し、当該局所領域内の各画素と、算出された閾値を比較する。明暗領域識別部２は、当該画素の濃度値が算出された閾値以上である場合、当該画素を白色（濃度値２５５）とし、閾値未満である場合、当該画素を黒色（濃度値０）とする（図６（Ｂ）も参照）。
【００３３】
尚、明暗領域識別部２は、事前に設けられた所定の閾値以上を白色（濃度値２５５）、閾値未満を黒色（濃度値０）とする手法でも当然よい。図８に、２値化処理を施した画像を示す。
【００３４】
膨張縮退部３は、このように２値化された画像に対し、バーコード部分のバー間の黒い隙間（濃度値０）が全て埋まる（濃度値２５５になる）まで白色領域を膨張させる（Ｓ６）。図９に、白色領域を膨張させた画像を示す。
【００３５】
一般的に、バーコードは、バーの領域の下部にバーの配列によって示される数字が印字されている。図９に示したように白色領域を膨張させた画像では、印字された数字も膨張され、膨張したバーコード部分に数字部分がノイズとして接触した状態となってしまう。またバーコードの印刷の質、よごれの付着によっては、この印字された数字以外のノイズが発生している場合もある。よって、これらノイズとの接触を切断するため、膨張縮退部３は、ノイズとの接触が無くなるまで白色領域を縮退させる（Ｓ７）。縮退処理を行った後の画像を図１０に示す。
【００３６】
続いて膨張縮退部３は、ステップＳ６、Ｓ７によって膨張、縮退処理を行った画像に対し、再度膨張処理を実施することで、白色領域を膨張、縮退処理実施前の元のサイズに戻す（Ｓ８）。元のサイズに戻った画像を図１１に示す。
【００３７】
位置抽出部４は、Ｓ８の処理まで施された画像に対しラベリング処理を行う（Ｓ９）。すなわち、位置抽出部４は、バーコード部分を含めた白色領域の閉領域を抽出し、抽出した閉領域にラベルを付す。その後、位置抽出部４は、ラベルを付した閉領域のうちで、一番面積の大きいものをバーコードの位置として抽出する（Ｓ１０）。尚、バーコードの位置の抽出は、特徴点（矩形領域の場合は各頂点）のＸ座標値、Ｙ座標値を抽出するものとする。
【００３８】
位置抽出部４は、抽出されたバーコード位置の面積が所定の閾値以上でない場合はバーコードとしない、または、抽出した領域内に黒色領域が含まれている場合はバーコードとしない等の予め設けられた条件を満たさない場合、処理を撮像部１による撮像処理（Ｓ１）に戻す（Ｓ１１、Ｎｏ）。また条件を満たしている場合（Ｓ１１、Ｙｅｓ）、バーコード解読部５は、位置抽出部４によって抽出されたバーコードの位置情報に基づき原画像または上述Ｓ３のシェーディング補正が施された画像からバーコードを切り出し、切り出し画像をスキャンすることでバーコードをデコードする（Ｓ１２）。尚、バーコード解読部５によるバーコード解読処理は、後述する実施の形態２の処理であってもよいし、また従来のバーコード解読処理であってもよい。
【００３９】
膨張縮退部３は、膨張率、縮退率として事前に設けられた値を、白色領域の面積に対し積算することでＳ６、Ｓ７、Ｓ８の膨張、縮退処理を実施してもよい。
【００４０】
バーコード読取装置１００は、バーコードの位置を抽出できた場合に発信音等を鳴らしてユーザに通知してもよい。
【００４１】
以上のように、実施の形態１のバーコード読取装置１００によって、バーコードの位置を的確に検出することができる。
【００４２】
（実施の形態２）
実施の形態１では、バーコードの位置を抽出する機能に特化したバーコード読取装置を説明したが、実施の形態２では、抽出されたバーコードを正確にデコードする機能を有するバーコード読取装置について説明する。
【００４３】
図１２に、実施の形態２におけるバーコード読取装置を示す。バーコード読取装置２００は、バーコード位置抽出部１１、スキャンデータ取得部１２（濃度配列データ取得部）、バー幅算出部１３、バー判定部１４、コード抽出部１５を備える。
【００４４】
バーコード位置抽出部１１は、少なくともバーコードが撮像された画像からバーコードの位置を抽出する。
【００４５】
スキャンデータ取得部１２は、バーコード位置抽出部１１によって位置が抽出されたバーコード部分に対し、所定のＹ座標でＸ方向にスキャンし、位置毎（画素毎）の濃度値をスキャンデータとして取得する。
【００４６】
バー幅算出部１３は、スキャンデータから濃度値がピーク値となる位置をそれぞれ取得する。またバー幅算出部１３は、ピーク値となる位置を中心とした、スキャンデータの所定範囲内の濃度平均値をピーク値となる位置ごとに算出する。バー幅算出部１３は、平均濃度値に基づきバーコードのバーの幅およびバー間のスペースの幅を算出する。
【００４７】
バー判定部１４は、バー幅算出部１３によって算出されたバーの幅およびバー間のスペースの幅に基づき、当該バーまたはスペースの示す値が１か０かを判定し、０と１とで成るビット配列を作成する。
【００４８】
コード抽出部１５は、バー判定部１４によって作成された０と１との配列に対応する文字を抽出する。
【００４９】
次に、バーコード読取装置２００の動作について、図１３のフローチャートを参照しつつ説明する。
【００５０】
バーコード位置抽出部１１は、少なくともバーコードが撮像された画像からバーコードの位置を抽出する（Ｓ５１）。バーコード位置抽出部１１は、例えば上述実施の形態１で示した構成であってもよいし、また、従来のバーコード位置抽出処理機能を有するものであってもよい。
【００５１】
スキャンデータ取得部１２は、バーコード位置抽出部１１によって抽出された位置に基づきバーコードを撮像画像から切り出し、切り出されたバーコード部分に対し、所定のＹ座標値でＸ方向にスキャンし、位置毎（画素毎）の濃度値（以下、スキャンデータと称す）を取得する（Ｓ５２）。尚、本実施の形態では検出したバーコード位置のＹ座標の中心値をスキャン位置とする。
【００５２】
バー幅算出部１３は、取得されたスキャンデータで、濃度値がピークとなる位置を特定する（Ｓ５３）。尚、ピークとなる位置とは、例えば横軸をスキャンデータの配列（すなわち、位置のデータ）、縦軸を濃度値とした波形グラフ上で、立ち上がり（右上がり勾配）から立ち下がり（右下がり勾配）に変化する位置、または立ち下がりから立ち上がりに変化する位置（換言すると、波形グラフと接する接線の傾きが０またはその近傍になる位置）をいう。この際、立ち下り量や立ち上がり量が波形グラフの平均高さの一定割合の値以上でない場合、バー幅算出部１３は、局所部分でのノイズとして無視する。
【００５３】
またバー幅算出部１３は、上述のように特定したピーク位置の前後の一定画素を局所領域とし、局所領域の濃度値の平均値（以下、局所平均濃度値）を算出する（Ｓ５４）。尚、実施の形態１の２値化処理（Ｓ５）で使用したクラス間分散を用いてもよく、クラス間分散によって求められた値を局所平均濃度値としてもよい。または、前後のピーク濃度値の平均としてもよい。
【００５４】
さらにバー幅算出部１３は、横軸（Ｘ軸）を位置のデータ、縦軸（Ｙ軸）を濃度値とした上述局所領域に対する波形グラフと、算出した局所平均濃度値とが交差する点のＸ座標値を小数点レベルまで求め、波形グラフの立ち上がり部と局所平均濃度値とが交差する点のＸ座標値と、波形グラフの立ち下がり部と局所平均濃度値とが交差する点のＸ座標値との差を小数点レベルで計算し、算出された差をバーの幅、またはバー間のスペース幅とする（Ｓ５５）。
【００５５】
バー判定部１４は、算出されたバーの幅、スペース幅に基づき、当該バー（またはスペース）の示す値が１か０かを判定し、０と１とで成る配列を作成する。バー判定部１４は、所定の閾値よりバー幅（またはスペース幅）が大きい場合は１とし、小さい場合は０とする（後述のバーコードの仕様も参照）。
【００５６】
尚、バー判定部１４は、上述実施の形態１の２値化処理（Ｓ５）のクラス間分散を用いて閾値を算出してもよい。図１４に、縦軸をバーおよびバー間のスペースの個数、横軸にバー幅またはスペース幅（画素数）としたグラフを示す。バー判定部１４は、波形を２つのクラスに区切ったときに、双方の波形間の分散が最大になるような値を幅判定の閾値とし、幅が閾値より大きければ１と判断し、小さければ０と判断する。
【００５７】
コード抽出部１５は、バー判定部１４によって作成された０と１との配列から対応する文字を抽出する（Ｓ５７）。図１５に、コードと文字との対応を示す。図１５（Ａ）は、７ビットコードと文字との対応を示し、図１５（Ｂ）に、バーコードと文字との対応を示す。
【００５８】
コード抽出部１５は、ＮＷ−７で未登録の文字（すなわち上述のＮＷ−７の仕様に準拠していない文字）があるかを判定する（Ｓ５８）。ここで、未登録の文字がない、すなわち有効なコードである場合（Ｓ５８、Ｎｏ）、次にコード抽出部１５は、開始、終了文字が正しいかを判定する（Ｓ５９）。開始、終了文字が正しい場合（Ｓ５９、Ｙｅｓ）、デコードした文字列をユーザに表示し（Ｓ６０）、処理は終了する。
【００５９】
一方、未登録の文字がある場合（Ｓ５８、Ｙｅｓ）、または開始、終了文字が正しくない場合（Ｓ５９、Ｎｏ）、読み込まれたバーコードのデータは不正であるため、バーコード位置抽出処理の画像入力処理を再度実施する（Ｓ６１）。すなわち、Ｓ５１から再度処理が行われる。
【００６０】
尚、動画画像の所定のフレームと次フレームとの前後の画像で、バーコードをデコードした結果を比較し、例えば３回の結果のうち２回以上が同じならその結果を正規のものとしてもよい。
【００６１】
上述では、バーコードの位置が抽出され、それ以降についての動作を主に説明したが、以下、バーコード位置抽出処理を用いない場合について示す。
【００６２】
原画像全体に対し、スキャンデータ取得部１２は、Ｙ座標値の間隔を大きくとり、Ｘ軸方向に数本スキャンする。例えばスキャンデータ取得部１２は、Ｙ座標最大値の１／４、１／２、３／４のＹ座標値でスキャンする。バー幅算出部１３、バー判定部１４、コード抽出部１５は、スキャンデータそれぞれに対し上述Ｓ５７までの処理を実施する。
【００６３】
バーコード読取装置２００は、コード抽出部１５によって抽出されたスキャンデータのうちで、例えば開始コードと終了コードがあり、その間の文字数が１２文字である等、上述ＮＷ−７の仕様に沿うデータが含まれているスキャンデータにバーコードが含まれているものと判断する。さらに、スキャンデータ取得部１２は、そのバーコードが含まれているスキャンデータをスキャンしたＹ座標値前後付近を複数箇所（例えば３箇所）スキャンし、バー幅算出部１３、バー判定部１４、コード抽出部１５は、さらに、スキャンデータそれぞれに対し上述Ｓ５７までの処理を実施する。この結果、複数回（例えば２回）以上同じコードが抽出された場合、それを正規のコードとする。
【００６４】
この場合、スキャンデータの濃度断面の波形上、Ｘ方向端部から一定割合の位置で濃度値が落ち込んだ部分（暗領域）がバーコード端と判断されてもよい。尚、バーコード端と判断された位置（画素）から一定画素以上次の山（明領域）が離れていたら、その次の濃度値が落ち込んだ部分がバーコード端とする。この処理が真のバーコード端が見つかるまで繰り返される。また仕様上、バーコードが始まる部分の前は白い部分が一定画素以上続くので、一定画素以上明領域が続いた後の落ち込んだ部分をバーコード端とする条件を付け加えた方がより正確性が増す。
【００６５】
また、スキャンデータ取得部１２は、１フレーム画像に対し、バーコード位置内でＹ座標を数画素ずらして複数回スキャンし、デコードされた結果所定回以上が同じデコード結果の場合、その結果を正規のコードとしてもよい。例えば3回スキャンした場合、デコードされた結果３回のうち２回以上が同じコードならその結果を正規のものとする。
【００６６】
また、撮像部１が携帯端末機である場合、ユーザの携帯端末機の持ち方によってバーコードの配列が反転する場合がある。上述の実施の形態で示したバーコード読取装置は、左から右、右から左、水平と垂直方向でもバーコードの読み取りが可能である。例えば左右が反転している場合、バーコード読取装置は、スキャンされたデータ配列の位置を反転する。
【００６７】
上述の実施の形態で示したバーコード読取装置は、少なくともＣＰＵ（Central Processing Unit）、揮発性記憶装置である主記憶装置、不揮発性記憶装置をハードウェア資源として有する１台のコンピュータであってもよいし、また実施の形態１の撮像部１は携帯端末機、その他の機能ブロックはコンピュータとした構成で提供されてもよい。また、全ての機能ブロックを１台の携帯端末機（ＣＰＵ、記憶装置等のハードウェアを少なくとも有する機器）に集約した状態で提供されてもよい。
【００６８】
上述の各機能ブロックは、不揮発性記憶装置に予め導入されたソフトウェアが、ＣＰＵ、主記憶装置等のハードウェア資源と協働することで実現される。
【００６９】
上述の実施の形態において、バーコード読取プログラムは上述したバーコード読取装置の内部に予めインストールされているものとして記載したが、本発明におけるバーコード読取プログラムは記憶媒体に記憶されたものも含まれる。ここで記憶媒体とは、磁気テープ、磁気ディスク（フロッピー（登録商標）ディスク、ハードディスクドライブ等）、光ディスク（ＣＤ−ＲＯＭ、ＤＶＤディスク等）、光磁気ディスク（ＭＯ等）、フラッシュメモリ等、バーコード読取装置に対し脱着可能な媒体や、さらにネットワークを介することで伝送可能な媒体等、上述したバーコード読取装置におけるコンピュータで読み取りや実行が可能な全ての媒体をいう。
【図面の簡単な説明】
【００７０】
【図１】実施の形態１に係る、バーコード読取装置の機能ブロックの一例を示す図である。
【図２】実施の形態１に係る、バーコード読取装置の動作を示すフローチャートである。
【図３】実施の形態１に係る、撮像部によって得られた原画像のバーコード部を示す図である。
【図４】実施の形態１に係る、シェーディング補正までを施した画像を示す図である。
【図５】実施の形態１に係る、Ｘ方向微分処理を施した画像を示す図である。
【図６】実施の形態１に係る、明暗領域識別部の処理を説明するための図である。
【図７】実施の形態１に係る、明暗領域識別部の処理を説明するための図である（クラス間分散）。
【図８】実施の形態１に係る、２値化処理を施した画像を示す図である。
【図９】実施の形態１に係る、白色領域を膨張させた画像を示す図である。
【図１０】実施の形態１に係る、縮退処理を行った後の画像を示す図である。
【図１１】実施の形態１に係る、白色領域を元のサイズに戻した画像を示す図である。
【図１２】実施の形態２に係る、バーコード読取装置の機能ブロックの一例を示す図である。
【図１３】実施の形態２に係る、バーコード読取装置の動作を示すフローチャートである。
【図１４】実施の形態２に係る、縦軸をバーおよびバー間のスペースの個数、横軸にバー幅またはスペース幅（画素数）としたグラフを示す図である。
【図１５】実施の形態２に係る、コード体系の仕様を示す図である。
【符号の説明】
【００７１】
１  撮像部、２  明暗領域識別部、３  膨張縮退部、４  位置抽出部、５  バーコード解読部、１１  バーコード位置抽出部、１２  スキャンデータ取得部、バー幅算出部、１４  バー判定部、１５  コード抽出部、１００、２００  バーコード読取装置。
【図１】
2010140311.tif 000003
【図２】
2010140311.tif 000004
【図３】
2010140311.tif 000005
【図４】
2010140311.tif 000006
【図５】
2010140311.tif 000007
【図６】
2010140311.tif 000008
【図７】
2010140311.tif 000009
【図８】
2010140311.tif 000010
【図９】
2010140311.tif 000011
【図１０】
2010140311.tif 000012
【図１１】
2010140311.tif 000013
【図１２】
2010140311.tif 000014
【図１３】
2010140311.tif 000015
【図１４】
2010140311.tif 000016
【図１５】
2010140311.tif 000017