(57)【要約】【課題】スタック型バーコード情報を読み取る処理時間の短縮が可能なスタック型バーコード情報読取方法及びスタック型バーコード情報読取装置を提供する。【解決手段】画像データから１カラム分のバー及びスペースの線幅を複数の閾値それぞれに基づき計測して線幅配列を生成する変換工程を複数もち、複数の変換工程のうち一の変換工程で求めた線幅配列に基づくクラスタ番号と各ロウごとのクラスタ番号の理論値とを比較する。【選択図】図１５
2011076208.tif 000002
【特許請求の範囲】
【請求項１】
媒体上に記録されたスタック型バーコード情報を撮像して得られた画像データを処理することによって、当該スタック型バーコード情報を読み取るスタック型バーコード情報読取方法において、
撮像して得られた画像データに基づいてスタック型バーコード情報のカラムの区切りを特定するカラム特定工程と、
前記カラム特定工程により特定したカラムの区切りに基づいて、各ロウのカラムの境界を決定する境界決定工程と、
前記境界決定工程の結果に基づいて、カラムごとにその範囲内の前記画像データからコードワード変換を行うコードワード取得工程と、を有し、
前記コードワード取得工程は、前記画像データから１カラム分のバー及びスペースの線幅を複数の閾値それぞれに基づき計測して線幅配列を生成する変換工程を複数もち、複数の変換工程のうち一の変換工程で求めた線幅配列に基づくクラスタ番号と各ロウごとのクラスタ番号の理論値とを比較することを特徴とするスタック型バーコード情報読取方法。
【請求項２】
前記変換工程は、前記１カラム分のバー及びスペースの線幅からなる全画像データの平均値を第1の固定閾値として、前記バー及びスペースの線幅を計測して線幅配列を生成する工程と、前記第1の固定閾値を変更して第ｎの固定閾値（ｎは２以上の整数）を求め、この第ｎの固定閾値を用いて線幅配列を生成する工程と、を含むことを特徴とする請求項１記載のスタック型バーコード情報読取方法。
【請求項３】
前記変換工程は、前記１カラム分のバー及びスペースの線幅からなる画像データにおいて隣接する前記バーの最大ピーク値と前記スペースの最小ピーク値の平均値を第1の局所閾値前記バー及びスペースの線幅を計測して線幅配列を生成する工程と、前記第1の局所閾値を変更して第ｍの局所閾値（ｍは２以上の整数）を求め、この第ｍの局所閾値を用いて線幅配列を生成する工程と、を含むことを特徴とする請求項１または２記載のスタック型バーコード情報読取方法。
【請求項４】
媒体上に記録されたスタック型バーコード情報を撮像する撮像装置と、
該撮像装置から得られた前記スタック型バーコードの画像データを記憶する画像メモリと、
前記画像データに基づき前記スタック型バーコードの構造解析をおこなう構造解析部を有するデータ処理装置と、を備え、前記スタック型バーコード情報を読み取るスタック型バーコード情報読取装置において、
前記構造解析部は、前記画像データから１カラム分のバー及びスペースの線幅を複数の閾値それぞれに基づき計測して線幅配列を生成することを特徴とするスタック型バーコード情報読取装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、スタック型バーコード情報を光学的に読み取るスタック型バーコード情報読取方法及びスタック型バーコード情報読取装置に関するものである。
【背景技術】
【０００２】
従来より、紙やプラスチック等の媒体に固有の情報を付与し、これを自動認識するための手段として、バーコードなるものが普及している。例えば、一般消費財には、一次元バーコードが使用されている。近年、バーコードの情報量に対する要求が強まり、一次元バーコードよりも格段に容量を増加させた二次元バーコードが登場してきている。そして、この二次元バーコードに対応した読み取り装置も次第に普及してきている。
【０００３】
この二次元バーコードの中には、一次元バーコードを積み重ねることによって情報量を増加させる方式のものがあり、これは、スタック型バーコードと呼ばれる。代表的なものにＰＤＦ４１７と呼ばれる符合体系のスタック型バーコードがある。なお、この符号体系ＰＤＦ４１７は、ＩＳＯ／ＩＥＣ１５４３８として国際規格化されている。
【０００４】
スタック型バーコードを読み取る読取装置としては、例えば、特許文献１又は特許文献２記載の読取装置がある。特許文献１に開示されたバーコード情報読取装置は、二次元撮像装置でバーコードを撮像し、可能な限りコードワードの読み取りを行ってから誤り訂正することで、処理時間の短縮を図ることができるものである。また、特許文献２に開示されたスタック型バーコード情報読み取り装置は、二次元撮像装置でバーコードを撮像し、バーコードの劣化状態を把握できるようにしたものである。
【０００５】
【特許文献１】特開平０９−０２２４３８号公報
【特許文献２】特開平０８−２４１３６９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献１に開示されたバーコード情報読取装置では、読取るべきバーコードを構成する全コードワード数と読取りに成功したコードワード数を比較して、予め設定した比率以上のコードワード数を読取った時には誤り訂正を施し、上記読取に成功したコードワード数が上記比率以下の時には、撮像部から新たな画像を撮像し読取り、上記比率以上のコードワードを読取れるまで繰り返し行うようにしている。そのため、媒体の状態によっては誤り訂正移行条件が満たされないか、満たされるまでに相当のリトライ回数を要するため、撮像に時間を要するような構成においては処理時間が長くなってしまうという問題がある。
【０００７】
また、特許文献２に開示されたスタック型バーコード情報読み取り装置では、バーコードが正しくエラー訂正されたか否かを判断し、良好にエラー訂正が終了した場合はデータ変換ステップに処理を移行するが、エラー訂正不能の場合は、再度バーコードの撮影を行う構成をとっているため、媒体の汚れやひずみなどによってエラー訂正条件が満たされにくい条件下では、再撮影回数が増えることにより、処理時間が長くなってしまうという問題がある。
【０００８】
本発明は、このような点に鑑みてなされたものであり、その目的は、スタック型バーコード情報を読み取る処理時間の短縮が可能なスタック型バーコード情報読取方法及びスタック型バーコード情報読取装置を提供することにある。
【課題を解決するための手段】
【０００９】
以上のような課題を解決するために、本発明は、撮像して得られた画像データから１カラム分の各ロウのバー及びスペースの線幅を計測して線幅配列を生成する変換工程を複数もち、複数の変換工程のうち一の変換工程で求めた線幅配列に基づくクラスタ番号と各ロウごとのクラスタの理論値とを比較することを特徴とする。
【００１０】
より具体的には、本発明は、以下のものを提供する。
【００１１】
（１）  媒体上に記録されたスタック型バーコード情報を撮像して得られた画像データを処理することによって、当該スタック型バーコード情報を読み取るスタック型バーコード情報読取方法において、撮像して得られた画像データに基づいてスタック型バーコード情報のカラムの区切りを特定するカラム特定工程と、前記カラム特定工程により特定したカラムの区切りに基づいて、各ロウのカラムの境界を決定する境界決定工程と、前記境界決定工程の結果に基づいて、カラムごとにその範囲内の前記画像データからコードワード変換を行うコードワード取得工程と、を有し、前記コードワード取得工程は、前記画像データから１カラム分のバー及びスペースの線幅を複数の閾値それぞれに基づき計測して線幅配列を生成する変換工程を複数もち、複数の変換工程のうち一の変換工程で求めた線幅配列に基づくクラスタ番号と各ロウごとのクラスタ番号の理論値とを比較することを特徴とするスタック型バーコード情報読取方法。
【００１２】
本発明によれば、紙やプラスチック等の媒体上に記録されたスタック型バーコード情報を撮像して得られた画像データをソフトウエア的に処理することによって、そのスタック型バーコード情報を読み取るスタック型バーコード情報読取方法において、撮像して得られた画像データから１カラム分のバー及びスペースの線幅を複数の閾値それぞれに基づき計測して線幅配列を生成する変換工程を複数もち、複数の変換工程のうち一の変換工程で求めた線幅配列に基づくクラスタ番号と各ロウごとのクラスタ番号の理論値とを比較することから、生成された複数の線幅配列に基づくそれぞれのクラスタ番号に基づいて、いずれの線幅配列が適正であるかを判断することができる。
【００１３】
従って、スタック型バーコード画像の輝度ムラや汚れなどがあっても、生成された複数の線幅配列のいずれかによってコードワードを取得するので、従来のように、スタック型バーコード情報を再撮像することなく、スタック型バーコード情報を読み取る処理時間の短縮が可能となる。なお、コードワードとは、ある数字、文字またはその他のシンボルを表わす値、またはこれらに関連づけられた値を符号化するための基本となる単位である。
【００１４】
（２）  前記変換工程は、前記１カラム分のバー及びスペースの線幅からなる全画像データの平均値を第1の固定閾値として、前記バー及びスペースの線幅を計測して線幅配列を生成する工程と、前記第1の固定閾値を変更して第ｎの固定閾値（ｎは２以上の整数）を求め、この第ｎの固定閾値を用いて線幅配列を生成する工程と、を含むことを特徴とする（１）記載のスタック型バーコード情報読取方法。
【００１５】
本発明によれば、第1の固定閾値及び第ｎの固定閾値は、一定の値となっている。このように、固定閾値は、一度の処理で求めることができるので、処理時間を短縮することが可能となる。
【００１６】
（３）  前記変換工程は、前記１カラム分の各ロウのバー及びスペースの線幅からなる画像データにおいて隣接する前記バーの最大ピーク値と前記スペースの最小ピーク値の平均値を第1の局所閾値前記バー及びスペースの線幅を計測して線幅配列を生成する工程と、前記第1の局所閾値を変更して第ｍの局所閾値（ｍは２以上の整数）を求め、この第ｍの局所閾値を用いて線幅配列を生成する工程と、を含むことを特徴とする（１）または（２）のスタック型バーコード情報読取方法。
【００１７】
本発明によれば、第１の局所閾値及び第ｍの局所閾値は、隣接するバーの最大ピーク値とスペースの最小ピーク値を用いて検出しているので、ロウを形成する複数のバーとスペースにおいて異なった値となっている。このため、画像データの輝度ムラや汚れなどで、ピーク値のばらつきが生じた場合でも、精度良くバーとスペースとの幅を検出することが可能となる。
【００１８】
（４）  媒体上に記録されたスタック型バーコード情報を撮像する撮像装置と、撮像装置から得られた前記スタック型バーコードの画像データを記憶する画像メモリと、前記画像データに基づき前記スタック型バーコードの構造解析をおこなう構造解析部を有するデータ処理装置と、を備え、前記スタック型バーコード情報を読み取るスタック型バーコード情報読取装置において、前記構造解析部は、前記画像データから１カラム分のバー及びスペースの線幅を複数の閾値それぞれに基づき計測して線幅配列を生成することを特徴とするスタック型バーコード情報読取装置。
【００１９】
本発明によれば、スタック型バーコード画像の輝度ムラや汚れなどがあっても、生成された複数の線幅配列のいずれかによってコードワードを取得するので、従来のように、スタック型バーコード情報を再撮像することなく、スタック型バーコード情報を読み取る処理時間の短縮が可能となる。
【発明の効果】
【００２０】
本発明に係るスタック型バーコード情報読取方法及びスタック型バーコード情報読取装置は、画像データの輝度ムラや汚れなどがあっても、スタック型バーコード情報を再撮像することなく、スタック型バーコード情報を読み取ることが可能となり、スタック型バーコード情報を読み取る処理時間の短縮が可能となる。
【発明を実施するための最良の形態】
【００２１】
以下、本発明を実施するための最良の形態について、図面を参照しながら説明する。
【００２２】
［スタック型バーコード情報読取装置］
図１は、本発明の実施の形態に係るスタック型バーコード情報読取装置１の電気的構成を示すブロック図である。
【００２３】
図１において、スタック型バーコード情報読取装置１は、密着型の撮像素子１１ａとカード搬送機構１１ｂとを有する撮像装置１１と、画像メモリ１２と、データ処理装置１３と、を備えている。データ処理装置１３は、位置検出部１３ａと、傾き補正部１３ｂと、構造解析部１３ｃと、復号部１３ｄと、を備えている。また、スタック型バーコード情報が付与されたカード等の記録担体２には、二次元バーコードのスタック型バーコード２１が印刷されている。また、復号部１３ｄは、低レベル信号復号部１３ｄ１及び高レベル信号復号部１３ｄ２が設けられている。
【００２４】
撮像装置１１の撮像素子１１ａは、記録担体２に印刷されたスタック型バーコード２１を、光電変換によって撮像する。画像メモリ１２は、撮像素子１１ａによって撮像されたスタック型バーコード２１の画像データを記憶する。データ処理装置１３は、スタック型バーコード２１の画像データを画像メモリ１２から取り込み、取り込んだ画像データに対して様々な処理を施す。
【００２５】
このような電気的構成からなるスタック型バーコード情報読取装置１において、本発明の実施の形態に係るスタック型バーコード情報読取方法について説明する。
【００２６】
［スタック型バーコード情報読取方法］
図２は、本発明の実施の形態に係るスタック型バーコード情報読取方法の流れを示すフローチャートである。図２を用いて、本発明の実施の形態に係るスタック型バーコード情報読取方法の流れを概説する。
【００２７】
まず、スタック型バーコードの位置検出が行われる（ステップＳ２１）。具体的には、スタック型バーコード情報読取装置１の撮像素子１１ａは、カード搬送機構１１ｂに沿って所定位置まで移動した記録担体２のスタック型バーコード２１を、光電変換によって撮像する。そして、撮像されたスタック型バーコード２１の画像データは、画像メモリ１２において記憶される。本実施の形態では、撮像されたスタック型バーコード２１の画像データは、画像を有限個の画素の行列とみなし、各画素の（画素値である）輝度値を数値で表わされるものである。この輝度値は例えば、０から２５５までの整数値として表わされる。なお、この画像メモリ１２は、ＲＡＭ，ＳＤＲＡＭ,ＤＤＲＳＤＲＡＭ，ＲＤＲＡＭなど、画像データを記憶しうるものであれば如何なるものであってもよい。
【００２８】
その後、データ処理装置１３の位置検出部１３ａは、画像メモリ１２で記憶された画像データを読み込み、その画像データ中のスタック型バーコード２１の位置を検出する。
【００２９】
このようにして位置検出されたスタック型バーコード２１はデータ処理装置１３において切り出されて（ステップＳ２２）、切り出された画像データが画像メモリ１２に記憶される。
【００３０】
次いで、データ処理装置１３において、スタック型バーコード２１の傾き補正が行われる（ステップＳ２３）。より具体的には、データ処理装置１３の傾き補正部１３ｂは、ステップＳ２２において切り出された画像データを読み込み、その画像データを傾斜角度ゼロの補正画像データに変換する。
【００３１】
次いで、データ処理装置１３において、構造解析が行われる（ステップＳ２４，Ｓ２５）。より具体的には、データ処理装置１３の構造解析部１３ｃは、ステップＳ２３において変換された補正画像データに基づき、スタック型バーコード２１の構造を解析する。構造解析部１３ｃにおいては、カラム解析（ステップＳ２４）及びロウ解析（ステップＳ２５）が行われる。
【００３２】
最後に、データ処理装置１３の復号部１３ｄにおいて、復号の処理が行われる（ステップＳ２６，Ｓ２７）。より具体的には、データ処理装置１３の復号部１３ｄは、ステップＳ２４、Ｓ２５において解析されたスタック型バーコード２１の構造に基づき、スタック型バーコード２１の復号処理を行う。復号部１３ｄの低レベル復号部１３ｄ１においては低レベル復号処理を（ステップＳ２６）、高レベル復号部１３ｄ２においては高レベル復号処理を行う（ステップＳ２７）。
【００３３】
図３は、上述したステップＳ２１において撮像されたスタック型バーコード２１の画像データの一例を示す図である。図３に示すスタック型バーコード２１は、スタック型バーコードの一種であるＰＤＦ４１７のラベル構造によるスタック型バーコードを表している。
【００３４】
図３において、スタック型バーコード２１は、図中の垂直方向（縦方向）をロウ方向、水平方向（横方向）をカラム方向とし、カラム方向において、５つに大きく分かれている。すなわち、図３に示すように、５カラムに分かれており、中央にデータカラムが配置され、また、データカラムの左右にはレフトロウインジケータ，ライトロウインジケータ、更にその左右にはスタートパターン，ストップパターンが配置されている。また、各カラムを構成するバーコードの構成は、黒い部分のバーと白い部分のスペースで構成されており、スタートパターン、ストップパターンには、ビッグバーと呼ばれる幅の広いバーがそれぞれ形成されている。ビッグバーは、図３において、スタートパターン及びストップパターンともに、右側の黒い部分で幅の一番広いバーである。
【００３５】
さらに、図３に示すスタック型バーコード２１は、ロウ方向において、３つのカラム（データカラム、レフトロウインジケータ、ライトロウインジケータ）は６行から構成されている。各行を構成する３つのカラムにはそれぞれコードワードが１個ずつ含まれている。たとえば、スタック型バーコード２１のデータカラムには、１個（データカラム１カラム分）×６行より６個のコードワードが構成されている。なお、コードワードとは、ある数字、文字またはその他のシンボルを表わす値、またはこれらに関連づけられた値を符号化するための基本となる単位である。
【００３６】
図４は、撮像装置１１の撮像素子１１ａによって、スタック型バーコード２１が傾いた状態で撮像された様子を示す図である。スタック型バーコード２１を撮像装置１１でスキャンしたときには、スタック型バーコード２１のロウ方向が必ずしもカード搬送機構１１ｂに対して垂直の関係に位置するとは限らない。撮像素子１１ａによって読み取られた画像データは、例えば図４に示すように傾く場合がある。換言すれば、ロウ方向と、画像メモリ１２に格納された画像データの垂直方向が一致していない。このような場合に、従来のスタック型バーコード情報読取装置では、量子化誤差に起因したノイズによって、復号の信頼性が損なわれていたが、本実施形態によれば、かかるノイズの影響を低減することができる。以下、図２に示すフローチャートの各処理（ステップＳ２１〜ステップＳ２７）について詳述する。
【００３７】
［位置検出］
図５は、図２に示すフローチャートにおける位置検出の流れを示すフローチャートである。また、図６は、スタック型バーコード２１のうち、スタートパターンにおけるビッグバーの部分及びその周辺を拡大した拡大図である。
【００３８】
図５において、まず、変数ｉに０を代入して初期化する（ステップＳ５１）。
【００３９】
具体的には、図６は画像メモリ１２に格納された画像データの中で、スタック型バーコードの一部を囲む領域で、左上を画素Ｓとし、その水平（Ｘ）方向に１画素分の行を水平ラインＨＬ（０）としている。
【００４０】
次いで、水平ラインＨＬ（０）から垂直方向（Ｙ方向）にｉ番目の画素の列を、Ｙ＝ｉにおける水平ラインＨＬ（ｉ）上で、Ｘ方向に画素ごとに画像データを読み込み、画像が「明」から「暗」に変化する点（点Ｐ（ｉ）とする）を検索する。具体的には、各画素の画像データ、すなわち、各画素の輝度値が所定の閾値により高い「明」（白い部分）を示す画素（以下、「スペース」という）と、所定の閾値より低い「暗」（黒い部分）を示す画素（以下、「バー」という）とに分けて、スペースからバーに変化した画素の位置を検出する。
また、同じ水平ラインＨＬ（ｉ）上で、今度は、画像が「暗」から「明」に変化する点（点Ｑ（ｉ）とする）を検索する。具体的には、バー（「暗」を示す画素）からスペース（「明」を示す画素）に変化した画素の位置を検出する。（ステップＳ５２）。
【００４１】
次いで、ｉ＝ｒ−１（ｒ：図６におけるＹ方向の行数（画素数））が満たされたか否かが判断され（ステップＳ５３）、満たされていないと判定された場合には、ｉを１だけインクリメントして（ステップＳ５４）、再びステップＳ５２の処理が行われる。一方、図６に示す画素Ｓから検索が始まり、Ｘ方向に各画素の輝度値を検索し、最終行の画素Ｅまで検索が終了した場合には、ｉ＝ｒ−１が満たされたと判定する。このように、満たされたと判定された場合には、処理を次のステップＳ５５に移す。なお、この段階で、ｎ個の点の組（Ｐ（ｉ），Ｑ（ｉ））（ｉ＝０，１，・・・，ｒ−２，ｒ−１）を得る。
【００４２】
次いで、図６中の点Ａと点Ｃの座標を求める（ステップＳ５５）。より具体的には、点Ａ、点Ｃに該当する画素の位置を検出する。Ｘ方向において、ｄ（ｉ）＝｜Ｐ（ｉ）−Ｑ（ｉ）｜を計算し、ｄ（ｉ）のうちの最小値ｍｉｎ（ｄ（ｉ））を求める。このｍｉｎ（ｄ（ｉ））が、ＰＱ間の距離の最も短くなるビッグバーの点Ａ及び点Ｃの２点に対応する（図６参照）。これにより、点Ａ及び点ＣのＹ座標（該当する画素のＹ方向の位置）は、それぞれＡｙ＝ｍｉｎ（ｉ）及びＣｙ＝ｍａｘ（ｉ）となる。また、点Ａ及び点ＣのＸ座標（該当する画素のＸ方向の位置）は、それぞれのｉに対する点ＰのＸ座標になるので、それぞれＡｘ＝Ｐ（ｉ＝Ａｙ）のＸ座標及びＣｘ＝Ｐ（ｉ＝Ｃｙ）のＸ座標となる。
【００４３】
次いで、図６中の点Ｂと点Ｃの座標を求める（ステップＳ５６）。より具体的には、ｄ（ｉ）が一定となるｉの範囲を特定する。そして、ビッグバーの点Ｂ及び点ＤのＹ座標は、その範囲におけるｍａｘ（ｉ）及びｍｉｎ（ｉ）となる。また、点Ｂ及び点ＤのＸ座標は、それぞれのｉに対する点Ｐ及び点ＱのＸ座標となるので、それぞれＢｘ＝Ｐ（ｉ＝Ｂｙ）のＸ座標及びＤｘ＝Ｑ（ｉ＝Ｄｙ）のＸ座標となる。
【００４４】
このようにして、ステップＳ５１〜ステップＳ５６の処理を経て、ビッグバーの４隅、すなわち、点Ａ、点Ｂ、点Ｃ、点Ｄの座標（該当する画素の位置）が確定したので、傾き角度は、ａｔａｎ（（Ａｙ−Ｄｙ）／（Ａｘ−Ｄｘ））で計算することができる。
【００４５】
なお、傾き検出の精度を上げるため、図６において、ＸとＹの役割を交換して同様の操作を行い、ビッグバーの４隅、すなわち、点Ａ'，点Ｂ'，点Ｃ'，点Ｄ'の座標を求め、上記点Ａ，Ｂ，Ｃ，Ｄの座標値との平均をとって最終的な座標値としてもよい。
【００４６】
また、図５では、点Ａ及び点Ｃの座標を求めるとともに（ステップＳ５５）、点Ｂ及び点Ｄの座標も求めることとしたが（ステップＳ５６）、本発明はこれに限定されず、例えば点Ａ及び点Ｃの座標を求めることで、傾き検出を行うようにしてもよい。
【００４７】
［切出し処理］
ステップＳ５１〜ステップＳ５６の処理を経て、ビッグバーの４隅の座標が確定すると、スタック型バーコード２１の切出しを行う。
【００４８】
［傾き補正］
図７は、上述した角度（＝ａｔａｎ（（Ａｙ−Ｄｙ）／（Ａｘ−Ｄｘ）））で傾いたスタック型バーコード２１の画像データを、傾斜角度ゼロの補正画像データに変換したときの様子を示す図である。換言すれば、図７に示すスタック型バーコード２１は、そのカラム方向とロウ方向とが図６に示す画像メモリ１２領域の水平方向（Ｘ方向）と垂直方向（Ｙ方向）と一致するように補正される。
【００４９】
図７において、傾斜角度ゼロの補正画像データへの変換は、スタック型バーコード２１の傾斜角度を用いて行う。例えば、アフィン変換などの方法によって行うことができる。そして、本発明の実施の形態に係るスタック型バーコード情報読取方法では、座標変換に伴う量子化誤差の影響を緩和するため、座標変換後の画像に対して、平滑化を目的として補間処理又は平均化処理を行う。具体的には、各画素の輝度値は、図１０（ｂ）や図１３に示すように、スペースを示す輝度値（例えば、１００）、バーを示す輝度値（例えば、０）としている。なお、補正画像データは、例えば、メディアンフィルタ，エッジ保存フィルタ，適応ウィナーフィルタ，移動平均フィルタなどの各種フィルタにかけることによって平滑化されている。
【００５０】
［構造解析］
図８は、図２に示すフローチャートにおける構造解析（カラム解析、ロウ解析）の流れを示すフローチャートである。
【００５１】
図８において、まず、水平射影の処理が行われる（ステップＳ８１）。具体的には、図７に示すスタック型バーコード２１の補正画像データに基づいて、水平方向に配列された画素毎に、各垂直方向に配列された全画素の輝度値の総和を演算し、画像メモリ１２に格納する処理である。
【００５２】
その後、求めた輝度値の総和を、水平方向に隣接する画素間で差分をとり、その差分値を用いてスタートパターン及びストップパターンの解析が行われる（ステップＳ８２）。図３等に示すように、スタートパターンとストップパターンは、他のデータカラム、レフトロウインジケータ、ライトロウインジケータのコードワードと異なり、全てのロウ（本実施の形態では６行）に共通不変のパターンであることから、水平射影をとることでスタートパターンまたはストップパターンが平均化され、輝度ムラや汚れ等の影響を受けにくく、安定した検出が可能である。
【００５３】
図９は、補正画像データ（図７参照）に所定の処理を施して得られた図である。より具体的には、図９（ａ）は、補正画像データ（図７参照）について、垂直方向における画素毎に射影を計算したものであり、図３でいえば、スタック型バーコード１２のロウ方向に、全画素の輝度値の総和を示す分布である。また、図９（ｂ）は、図９（ａ）のグラフについて差分を計算したものである。具体的には、画像メモリ１２に格納された画像データの水平方向において隣接する画素間で、求めた輝度値の総和の差分をとり、その差分値の分布である。これにより、水平ラインＬ（ｉ）上で、バー（またはスペース）からスペース（またはバー）に変化した画素の位置を検出することができる。
【００５４】
スタートパターンの検出は、図９（ａ）又は図９（ｂ）に示されるグラフを用いて、バーとスペースが変化する点の間隔（ランレングス）を水平方向における画素数（以下、「線幅」という）でカウントすることによって行われる。例えば、スタートパターンの各バーの線幅、各スペースの線幅を計測すると、ＳｔａｒｔＷｏｒｋ＝［４７，６，５，６，７，６，６，１８］に示すような線幅配列が求められる。一方で、スタートパターンのバーとスペースの長さの比は、ＰＤＦ４１７の規格より、ＳｔａｒｔＭａｒｋ＝［８，１，１，１，１，１，１，３］に示すような線幅配列となっている。ここで、両者の類似性を調べる指標として、例えば正規化相関Ｒを用いることができる。図９（ｂ）について、正規化相関Ｒを考えると、Ｒ＝ｃｏｒｒｃｏｅｆ（ＳｔａｒｔＷｏｒｋ，ＳｔａｒｔＭａｒｋ）＝０．９９９３となり、Ｒは十分１に近い。従って、この場合には、適切にスタートパターンが検出されたと判定される。なお、ストップパターンの正規化相関Ｒについての説明は、スタートパターンと同様であるので、ここでの説明は省略する。
【００５５】
このようにして、スタート／ストップパターンが適切に検出されたか否かが判断された後（ステップＳ８３）、スタート／ストップパターンが適切に検出されたと判定された場合には、処理をステップＳ８５に移す。一方で、スタート／ストップパターンが適切に検出されていないと判定された場合には、デコード不可、すなわち、復号できないとして処理を終了する（ステップＳ８４）。
【００５６】
なお、本実施形態では、類似性の尺度として、正規化相関Ｒを用いることとしたが、本発明はこれに限られず、例えば差分絶対値和，積和などを適宜用いてもよい。
【００５７】
次いで、図９（ｂ）のグラフに関してピーク検出が行われる（ステップＳ８５）。より具体的には、図３に示すように、スタートパターン、レフトロウインジケータ、データカラム、ライトロウインジケータ、ストップパターンは、各カラムの境界では全てのロウにおいてスペースからバーへの遷移が行われるため、水平射影の差分値の分布上、この部分で大きな差分値が現れる（図９（ｂ）の上向き矢印）。そして、図９（ｂ）の上向き矢印で示した差分値（ピーク値）を求めるには、適当な閾値を用意して、その閾値を超えたか超えないかでピークの有無を判定することができる。ピークと判断された場合には、ピーク値をもつ画素の位置を画像メモリ１２に記憶させる。
【００５８】
次いで、カラム境界の検出が行われる（ステップＳ８６）。より具体的には、ステップＳ８５において記憶されたピーク値をもつ画素の位置に基づき、スタートパターン、レフトロウインジケータ、データカラム、ライトロウインジケータストップパターンの５つのカラムの境界を検出する。また、隣接するピーク値をもつ画素の間隔はカラムの幅を表すものであり、同様に画像メモリ１２に記憶しておく。ここで、ある特定のロウにおいてこの境界近傍に汚れがあった場合、各ロウのスキャン中に各カラムの境界を示す変化点を正しく検出できない場合があるが、本実施形態のように水平方向における射影を用いることで、この汚れの影響が平均化作用によって小さくなり、各カラムの境界の検出への悪影響を抑えることができる。
【００５９】
次いで、ロウ境界の検出が行われる（ステップＳ８７）。より具体的には、図１０及び図１１を用いて説明する。図１０は、平均化された補正画像データの水平方向において、各ラインＬの輝度値を示す波形図である。図１１は、スタック型バーコード２１の各ロウの区切りを特定する様子を説明するための説明図である。なお、本実施の形態では、１ラインＬは、1行×ｎ列の行列である。ここで、ｎは評価範囲の幅である。
【００６０】
図１０（ａ）において、ロウ境界の検出は、まず、補正画像データ上に、連続する複数のラインＬからなる組を設定する。例えば、連続する３個のラインＬ（１），Ｌ（２）及びＬ（３）（以下、「Ｌ１，Ｌ２及びＬ３と略す」）からなる組（ライン組Ｓ１）を設定する。なお、本実施の形態では、連続する３個のラインＬを設定しているが、個数に限定されるものではない。
【００６１】
そして、これらの３本のラインＬについて任意の２本を選びそれらの正規化相関を求めると、全部で３個（Ｌ１とＬ２，Ｌ１とＬ３，Ｌ２とＬ３）の相関値が得られる。これら３個の相関値のうちの最も小さい値が、予め決められた閾値ｒ０よりも大きければ、Ｌ１、Ｌ２、Ｌ３の（ラインＬの各画素の輝度値を示す）波形はお互いに相関していると判断し、このライン組Ｓ１に１が与えられる。これに対し、予め決められた閾値ｒ０よりも小さければ、最も小さい値が得られた２つのラインＬの波形は、少なくとも相関していないと判断し、このライン組Ｓ１に０が与えられる。
【００６２】
例えば、水平方向に形成されたラインＬ１，Ｌ２及びＬ３からなる組については、図１０（ｂ）に示すように、ラインＬ１，Ｌ２及びＬ３が全て同じロウ１（最も上のロウ）に含まれていることから、９個の相関値のうちの最も小さい値は閾値ｒ０よりも大きくなり、１が与えられることになる（図１１において、ライン組Ｓ１の判定値は１となっている）。
【００６３】
次に、補正画像データに対して上述した組を相対的にロウ方向（垂直方向）に移動させて（例えばＬ２，Ｌ３及びＬ４からなるライン組Ｓ２を考えて）、相関値列を算出し、算出された相関値列の最小値が閾値ｒ０よりも大きいか否かを判断することによって、そのライン組に０又は１の判定値が与えられる。
【００６４】
以下同様に、ラインＬｎ−２，Ｌｎ−１，Ｌｎ（ライン組Ｓｎ−２）まで上述した処理（判定値を与える処理）を繰り返し行うと、全部でｎ−２個の１と０とからなる系列が得られる（図１１の右欄）。
【００６５】
ここで、３個のラインＬが同一ロウから選ばれている場合は、それら３個のラインＬよりなるライン組は１に近い値となり、３個のラインＬが隣接するロウをまたいで選ばれている場合は、それら３個のラインＬよりなるライン組は比較的小さい値となる。より具体的には、図１０（ｂ）において、ラインＬ１８より上のラインＬはロウ１に属し、ラインＬ１８より下のラインＬはロウ２に属し、このラインＬ１８は、ロウ１とロウ２の境界に位置するラインＬとなっている。
【００６６】
従って、このラインＬ１８を含むライン組では、判定値がほぼ０となり、それ以外では、判定値は１となる（図１１参照）。判定値が０に近いライン組は、ロウの切り替わり位置を表しているので、判定値の系列をスキャンして、その判定値が０に近い場所を特定することにより、ロウの切り替わり位置を知ることができる。なお、本実施形態では、相関関数によってラインＬ相互の類似性を評価しているので、図１０（ａ）に図示するように、スタートパターンやストップパターンのような各ロウにおいて共通パターン（バー及びスペースの線幅が同じ）を除いた範囲を評価範囲とすることで、無駄な演算（計算コスト）を省くことができる。
【００６７】
以上説明したように、ライン組の設定→相関値列の算出→相関値列の最小値と閾値との比較→０又は１の判定値付与→判定値の系列のスキャン、という流れによって、ステップＳ８７のロウ境界の検出が行われる。本実施の形態では、ロウ１からロウ６の最終ラインＬまで行なわれる。
【００６８】
ロウ境界の検出によって、補正画像データの各ラインＬがどのロウに属するかを判定し、デコード（復号）可能として処理を終了する（ステップＳ８８）。
また、本実施の形態では、ロウごとに、それに含まれる複数のラインＬの各点の輝度値の平均を計算することによって、ラインＬの局所ノイズを低減することができる。さらに、平均した画素の輝度値を用いて、そのロウの特性を代表するものとして後述する復号処理に用いることができる。これにより、デコード（復号）精度を向上させることができる。
【００６９】
［低レベル復号処理］
図１２は、図２に示すフローチャートにおける低レベル復号（ステップＳ２６）の流れを示すフローチャートである。
【００７０】
なお、スタック型バーコードの一種であるＰＤＦ４１７では、低レベル復号処理と高レベル復号処理と２つの復号処理が行なわれ、低レベル復号処理は、１つのカラムを構成するバーの線幅とスペースの線幅でなるワードコードは「０」〜「９２８」で示される中間情報に一度変換される処理である。次に、高レベル復号処理は、「０」〜「９２８」で示される中間情報に一度変換された後、所定ルールに基づいて最終言語にデコード（復号）されるようになっている。この最終言語としては、ＰＤＦ４１７では、ＡＳＣＩＩ文字やバイナリ表現、その他のキャラクタ等がある。
【００７１】
図１２において、まず、Ｘシーケンス計測処理が行われる（ステップＳ１２１）。一般的なＸシーケンス計測処理は、各ロウにおいて、ロウに含まれる複数のラインＬを平均化したライン波形をスキャンして、バーと、スペースの線幅を求める線幅計測が行われた後に、画素数によって表現されている線幅データをモジュール数表現に変換して、Ｘシーケンスを得る。なお、走査線は、例えば、各ロウにおいて、ロウ方向のほぼ真中に形成された複数のラインＬであり、すなわち、複数行で構成された画素の行例である。さらに、複数のラインＬを構成する画素の輝度値の平均を計算し、平均した画素の輝度値を用いて、そのロウにおける画素の輝度値を示す波形として復号処理に用いる。
【００７２】
図１３は、あるロウにおいて、ロウに含まれる複数のラインＬを平均化したライン波形をスキャンして得られた、画素の輝度値を示す波形の一部を示す波形図である。なお、バーの線幅及びスペースの線幅は、画素の輝度値を示す波形の変化点と変化点の間の画素数をカウントしたものである。ここで、変化点は、画素の輝度値を示す波形上で、図示しない所定の閾値と交差する点を示している。スタック型バーコードの一種であるＰＤＦ４１７において、図３等に示すように、スタートパターン、レフトロウインジケータ、データカラム、ライトロウインジケータ、ストップパターンの５つのカラムから構成されている。さらに、ストップパターンを除く各カラムは、４個のバーと４個のスペースで構成されるため、画素の輝度値を示す波形に損傷のない場合には、図１３（ａ）に示すように、合計８個の線幅データが得られる。
【００７３】
一方で、画素の輝度値を示す波形に異常がある場合には、図１３（ｂ）に示すように、合計８個以上（９個）の線幅データが得られる。かかる場合には、カラムに損傷があることが分かり、このカラムの信頼性が低いことを示すフラグをセットする。かかる操作をあるロウに含まれるカラム全てについて実行したら、次のロウにおいても同様の処理を実行する。全てのロウについて、線幅データが得られたら、ステップＳ１２１（図１２参照）の処理を終了する。
【００７４】
次いで、線幅正規化処理が行われる。線幅正規化処理は、計測されたバーの線幅とスペースの線幅とを表す画素数によって表現されている線幅データをモジュール数表現に変換する処理をいう。１モジュールは、バー又はスペースの最小幅に対応する。具体的には、スタック型バーコードの一種であるＰＤＦ４１７において、１カラムは１７モジュールによって構成されている。１カラム内の線幅データをＷ１，Ｗ２，Ｗ３，Ｗ４，Ｗ５，Ｗ６，Ｗ７，Ｗ８とし、Ｗｃ＝Ｗ１＋Ｗ２＋Ｗ３＋Ｗ４＋Ｗ５＋Ｗ６＋Ｗ７＋Ｗ８とすれば、正規化線幅データは、Ｘｉ＝Ｗｉ＊１７／Ｗｃ（ｉ＝１，２，…，７，８）で表されるＸシーケンスとなる。例えば、図１３（ａ）に示す左側のカラムのＸシーケンスは、［５，１，１，１，１，１，５，２］（これらの総和は１７、すなわち、上記した１７モジュールを示す）に示すような線幅配列である。
【００７５】
次に、Ｔシーケンス計測処理が行われる（ステップＳ１２２）。具体的には、Ｘシーケンスは、Ｔシーケンスに変換される。これは、隣接する２個のＸｉとＸｉ＋１を加算したものであり、図１３（ａ）に示す左側のカラムのＸシーケンスをＴシーケンスに変換すると、［６（５＋１），２（1＋１），２（1＋１），２（1＋１），２（1＋１），６（1＋５），７（５＋２）］に示すような線幅配列となる。
【００７６】
最後に、コードワード変換が行われる（ステップＳ１２３）。より具体的には、ステップＳ１２２において求められたＴシーケンスに対応するコードワードを所定の参照テーブルから取得する。すなわち、低レベル復号処理が行なわれ、１つのカラムを構成する４個のバーの線幅と４個のスペースの線幅でなるコードワードは「０」〜「９２８」で示される中間情報に一度変換される。
【００７７】
ここで、本実施形態においては、Ｘシーケンス計測処理（ステップＳ１２１）において、Ｘシーケンスの誤判定を抑制するために、固定閾値及び局所閾値から得られる複数のＸシーケンスから最適なものを選択できるようにしている。
【００７８】
図１４は、本実施形態におけるＸシーケンス計測処理（ステップＳ１２１）の流れを示すフローチャートである。このＸシーケンス計測処理においては、上述したように、あるロウにおいて、ロウに含まれる複数のラインＬを平均化したライン波形をスキャンして、計測された各画素の輝度値が、所定の閾値Ｈｌより高い値であれば、スペースと判定し、各画素の輝度値が、閾値Ｈｌより低い値であれば、バーと判定し、バーかスペースかの判定を行う。さらに、このような判定に基づいて、バーの線幅と、スペースの線幅とを計測し、線幅データを作成する。スタック型バーコードにおける各カラムは４個のバーと４個のスペースで構成され、ひとつのカラムに含まれるエレメント数は８個であるから、エレメント数が８個になるまで処理を繰り返し、閾値Ｈｌを変動させていく。
【００７９】
本実施形態では、まず、ｎ＝１（またはｍ＝１）のときに閾値Ｈ１として第１の固定閾値ＡＶ（または第１の局所閾値ＡＶ'）を設定する（ステップＳ１４１）。なお、固定閾値ＡＶ、局所閾値ＡＶ'の説明は後述する。
【００８０】
次いで、第１の固定閾値Ｈ１＝ＡＶ（または第１の局所閾値ＡＶ'）のときのＸシーケンスを計測し（ステップＳ１４２）、そのときのエレメント数が８個か否かを判断する（ステップＳ１４３）。ステップＳ１４３においてエレメント数が８個と判断した場合は、Ｘシーケンス計測は成功したものとして、このときのＸシーケンスを有効化して（ステップＳ１４４）、本サブルーチンを終了する。一方、ステップＳ１４３において、エレメント数が８個でない判断した場合は、閾値Ｈ１を変更し規定回数ｎ（またはｍ）（ｎ、ｍは２以上の整数）の処理を繰り返したか否か、例えば、ｎ＝３（またはｍ＝３）に到達したか否かを判断する（ステップＳ１４５）。
【００８１】
ステップＳ１４５においてｎ＝３（またはｍ＝３）でないと判断した場合は、規定回数ｎ（またはｍ）に１をインクリメントし、本実施の形態では、第1の固定閾値Ｈ１からＡＶ（またはＡＶ'）／４を減じた第２の固定閾値Ｈ２を設定して（ステップＳ１４６）、ステップＳ１４２及びステップＳ１４３の処理を繰り返す。なお、ＡＶ（またはＡＶ'）／４は経験則から決めた値であり、これに限定されるものではない。
【００８２】
新たに求めた第２の固定閾値Ｈ２に基づいて、Ｘシーケンスを再度計測し（ステップＳ１４２）、エレメント数が８個と判断されればＸシーケンスは有効とし（ステップＳ１４４）、エレメント数が８個と判断されなければ、規定回数ｎ＝３（またはｍ＝３）でないので（ステップＳ１４５）、ｎ（またはｍ）に１をインクリメントし、第２の固定閾値Ｈ２から、さらにＡＶ（またはＡＶ'）／４を減じた新たな第３の固定閾値Ｈ３を設定して（ステップＳ１４６）、第３の固定閾値Ｈ３に基づいてＸシーケンスの再度計測を行う（ステップＳ１４２）。本実施の形態では、規定回数ｎ＝３（またはｍ＝３）の処理を繰り返してもエレメント数が８個と判断されなければ、Ｘシーケンスは無効として（ステップＳ１４７）、本サブルーチンを終了する。
【００８３】
（固定閾値ＡＶ方式について）
図１５は、あるロウにおいて、ロウに含まれる複数のラインＬを平均化したライン波形をスキャンして得られた、各画素の輝度値を示す波形の一部を取り出した図であり、スタック型バーコードのあるロウとあるカラムに対応している。各画素の輝度値が第１の固定閾値ＡＶより高い値か低い値かでバーかスペースかを判定し、具体的には、あるカラムの始点ＸＳから終点ＸＥまでの間に、バーとスペースのエレメント個数が８個になればＸシーケンスは有効である。図１５の例では、第1の固定閾値ＡＶに基づいてＸシーケンス（バーの線幅とスペースの線幅）を計測し、Ｘシーケンス［１２，６，３，１８，３，４，１２，１１］に示すような線幅配列が得られた。ここで、第1の固定閾値ＡＶは、あるロウにおけるあるカラムにおいて、平均化したライン波形をスキャンして得られたバー及びスペースの線幅からなる全画像データの平均値である。具体的には、図１５に示すロウとカラムにおいて、計測された全画素の輝度値を加算し、その加算値を全画素数で除算した値、すなわち、１画素あたりの平均輝度値を固定閾値ＡＶとしている。そのため、第１の固定閾値ＡＶは、図１５に示すように、一定の値となっている。このように、第１の固定閾値ＡＶは、一度の処理で求めることができるので、処理時間を短縮することが可能となる。
【００８４】
（局所閾値ＡＶ'方式について）
一方、図１６はあるロウにおいて、ロウに含まれる複数のラインＬを平均化したライン波形をスキャンして得られた、各画素の輝度値を示す波形の一部を取り出した図であり、この波形は図１５に示すものと同じ波形である。局所閾値ＡＶ'は、ピーク値間の平均値、すなわち、隣接する最大ピーク値と最小ピーク値の平均値であり、図１６の点線で示すように局所的に閾値を設定している。図１６の例では、局所閾値ＡＶ'に基づいてＸシーケンスを計測し、Ｘシーケンス［１２，５，５，１６，４，４，１２，１０］に示すような線幅配列が得られた。局所閾値ＡＶは、図１６に示すように、隣接するバーとスペースを用いて検出しているので、ロウを形成する複数のバーとスペースにおいて異なった値となっている。このため、補正画像データの輝度ムラや汚れなどで、ピーク値のばらつきが生じた場合でも、精度良くバーとスペースとの幅を検出することが可能となる。
【００８５】
図１７は、本実施形態におけるＴシーケンス計測処理（ステップＳ１２２）の流れを示すフローチャートである。このＴシーケンス計測処理においては、固定閾値方式と局所閾値方式の２種類の閾値設定方式から得られたＸシーケンスをＴシーケンスに変換し、それぞれのＴシーケンスより計算したクラスタ番号がクラスタの理論値に等しければそのＴシーケンスを有効とし、理論値に等しくなければそのＴシーケンスを無効とする。なお、図１７においては、局所閾値方式から得られたＸシーケンスを第１に、固定閾値方式から得られたＸシーケンスを第２にして、処理ステップを構成しているが、必要に応じて処理順序を逆にしてもよい。
【００８６】
ここで、クラスタ番号とは、図３に示すスタック型バーコード２１において、誤り発生の確率を最小にするために用意されているもので、スタートパターン及びストップパターン以外の全てのコードワードに存在している。具体的には、ＰＤＦ４１７の規格により、クラスタ番号は３行目毎に順次繰り返し現れ、ロウ１（行０）にはクラスタ番号０、ロウ２（行１）にはクラスタ番号３、ロウ３（行２）にはクラスタ番号６が使われている。換言すれば、このクラスタ番号０、３、６は、クラスタ番号の理論値となっている。
【００８７】
つぎに、具体的な数値で説明する。
まず、局所閾値方式によって得たＸシーケンスを取り出し（ステップＳ１７１）、Ｔシーケンスに変換する（ステップＳ１７２）。これは、Ｘ＝[Ｘｉ，Ｘi＋１，Ｘｉ＋２，・・・]において、隣接する２個のＸｉとＸｉ＋１を加算したものであり、局所閾値方式によって得たＸシーケンス、Ｘ＝［１２，５，５，１６，４，４，１２，１０］をＴシーケンスに変換すると、Ｔ＝［１７，１０，２１，２０，８，１６，２２］に示すような線幅配列となる。
【００８８】
次いで、Ｔシーケンスよりクラスタ番号を計算する（ステップＳ１７３）。クラスタの計算は、まず、ＴシーケンスをＴＮ（ｉ）＝Ｔ（ｉ）＊１７／Ｗｃ（ｉ＝０，１，・・・，７）で正規化する。上の例では、ＴＮ＝[４，３，５，５，２、４]に示すような線幅配列となる。次に、クラスタ番号Ｋ＝（ＴＮ（０）−ＴＮ（１）＋ＴＮ（４）−ＴＮ（５）＋９）ｍｏｄ９（ただし、"ｍｏｄ９"は９で除した後の剰余である）で表される式によりクラスタ番号Ｋを計算する。上の例では、Ｋ＝（４−３＋２−４＋９）ｍｏｄ９＝８となる。
【００８９】
次いで、ステップＳ１７３において計算されたクラスタ番号は処理中のロウに対応するクラスタ番号の理論値と等しいか否かを判断する（ステップＳ１７４）。処理中のロウがスタック型バーコード２１の第１行目であるとすると、クラスタの理論値は０である。従って、クラスタ番号８は、クラスタ番号の理論値０と一致しないため、Ｔシーケンスを無効として処理をステップＳ１７６に進める。一方、クラスタ番号が理論値と一致していれば、Ｔシーケンスを有効とする（ステップＳ１７５）。
【００９０】
ステップＳ１７４においてクラスタ番号が理論値と一致しないときは、固定閾値方式によって得たＸシーケンスを取り出し（ステップＳ１７６）、Ｔシーケンスに変換する（ステップＳ１７７）。固定閾値方式によって得たＸシーケンスをＴシーケンスに変換すると、Ｔ＝［１８，９，２１，２１，７，１６，２３］となる。
【００９１】
次いで、Ｔシーケンスよりクラスタ番号を計算する（ステップＳ１７８）。上の例では、ＴＮ＝［４，２，５，５，２，４］と正規化され、Ｋ＝（４−２＋２−４＋９）ｍｏｄ９＝０となる。
【００９２】
次いで、ステップＳ１７３において計算されたクラスタは処理中のロウに対応するクラスタの理論値と等しいか否かを判断する（ステップＳ１７９）。上の例では、クラスタ番号０とクラスタ番号の理論値０が一致しているため、Ｔシーケンスを有効とする（ステップＳ１７５）。一方、クラスタ番号と理論値が一致していない場合は、Ｔシーケンスを無効とする（ステップＳ１８０）。
【００９３】
このように、本実施形態においては、固定閾値方式と局所閾値方式の２種類の閾値設定方式を備え、画像データの輝度ムラや汚れなどの影響があっても、処理中のロウから得られるクラスタ番号を理論値と比較することにより、Ｘシーケンスが正しいか否かを判断し、最適なＸシーケンスを得ることができる。
【００９４】
最適なＸシーケンスが得られると、低レベル復号処理が行なわれ、コードワード変換処理が行われる。具体的には、有効とされたＴシーケンスに対応するコードワードを所定の参照テーブルから取得する。すなわち、低レベル復号処理が行なわれ、１つのカラムを構成する４個のバーの線幅と４個のスペースの線幅でなるコードワードは「０」〜「９２８」で示される中間情報に一度変換される。
【００９５】
［高レベル復号処理］
コードワード変換が完了すると、一般的な高レベル復号が行われ、復号処理が完了する。また、復号処理が完了したデータについては、スタック型バーコード情報などとともに上位制御装置に出力されることになる。具体的には、高レベル復号処理は、「０」〜「９２８」で示される中間情報に一度変換された後、所定ルールに基づいて最終言語にデコード（復号）されるようになっている。この最終言語としては、ＰＤＦ４１７では、ＡＳＣＩＩ文字やバイナリ表現、その他のキャラクタ等がある。
【００９６】
（本実施の形態の主な効果）
以上説明したように、本実施形態においては、スタック型バーコード情報を精度よく読み取ることができるので、処理時間を増やすことなく、精度よいスタック型バーコード情報読取方法及びスタック型バーコード情報読取装置を構成することができる。すなわち、撮像して得られた補正画像データから１カラム分のバー及びスペースの線幅を複数の固定閾値または局所閾値それぞれに基づいて計測して線幅配列を生成し、これら複数の線幅配列について、クラスタ番号と各ロウごとのクラスタの理論値とを比較することから、生成された複数の線幅配列に基づくそれぞれのクラスタ番号に基づいて、いずれの線幅配列が適正であるかを判断することができる。
【００９７】
従って、撮像して得られた画像データの輝度ムラや汚れなどがあっても、生成された複数の線幅配列のいずれかによってコードワードを取得するので、従来のように、スタック型バーコード情報を再撮像することなく、スタック型バーコード情報を読み取ることができる。そのため、スタック型バーコード情報を読み取る処理時間の短縮が可能となる。
【００９８】
（他の実施の形態）
本実施形態では、一次元撮像素子やリニア搬送機構の組合せに対して本発明を適用することとしたが、本発明はこれに限られることなく、例えば、二次元ＣＣＤやＣＭＯＳイメージャなどのエリアセンサと被写体支持機構との組合せに対して本発明を適用することとしてもよい。
【００９９】
また、上述した角度変換工程は、スタック型バーコード情報を撮像して得られた画像データ自体の傾きを変えて、傾斜角度ゼロの補正画像データに変換するようにしているが、これに限定されるものではない。例えば、光学座標系を回転させて、実質的に傾斜角度ゼロの補正画像データに変換するなど、結果的に、傾斜角度ゼロの補正画像データを生成できるものであれば、如何なる手法であっても構わない。
【産業上の利用可能性】
【０１００】
本発明に係るスタック型バーコード情報読取方法及びスタック型バーコード情報読取装置は、スタック型バーコード画像の輝度ムラや汚れなどがあっても、スタック型バーコード情報を精度よく読み取ることができるものとして有用である。
【図面の簡単な説明】
【０１０１】
【図１】本発明の実施の形態に係るスタック型バーコード情報読取装置の電気的構成を示すブロック図である。
【図２】本発明の実施の形態に係るスタック型バーコード情報読取方法の流れを示すフローチャートである。
【図３】スタック型バーコードの画像データの一例を示す図である。
【図４】撮像装置の撮像素子によって、スタック型バーコードが傾いた状態で撮像された様子を示す図である。
【図５】図２に示すフローチャートにおける位置検出の流れを示すフローチャートである。
【図６】スタック型バーコードのうち、スタートパターンにおけるビッグバーの部分及びその周辺を拡大した拡大図である。
【図７】所定の角度で傾いたスタック型バーコードの画像データを、傾斜角度ゼロの補正画像データに変換したときの様子を示す図である。
【図８】図２に示すフローチャートにおける構造解析の流れを示すフローチャートである。
【図９】補正画像データ（図７参照）に所定の処理を施して算出された図である。
【図１０】補正画像データの水平方向において、各ラインの画素値を示す波形図である。
【図１１】スタック型バーコードの行の区切りを特定する様子を説明するための説明図である。
【図１２】図２に示すフローチャートにおける低レベル復号の流れを示すフローチャートである。
【図１３】ロウの各画素の輝度値を示す波形の一部を示す波形図である。
【図１４】Ｘシーケンス計測処理の流れを示すフローチャートである
【図１５】ロウの輝度値を示す波形の一部を取り出した図である。
【図１６】ロウの輝度値を示す波形の一部を取り出した図である。
【図１７】Ｔシーケンス計測処理の流れを示すフローチャートである。
【符号の説明】
【０１０２】
１  スタック型バーコード情報読取装置
２  記録担体
１１  撮像装置
１１ａ  撮像素子
１２  画像メモリ
１３  データ処理装置
１３ａ  位置検出部
１３ｂ  傾き補正部
１３ｃ  構造解析部
１３ｄ  復号部
【図１】
2011076208.tif 000003
【図２】
2011076208.tif 000004
【図３】
2011076208.tif 000005
【図４】
2011076208.tif 000006
【図５】
2011076208.tif 000007
【図６】
2011076208.tif 000008
【図７】
2011076208.tif 000009
【図８】
2011076208.tif 000010
【図９】
2011076208.tif 000011
【図１０】
2011076208.tif 000012
【図１１】
2011076208.tif 000013
【図１２】
2011076208.tif 000014
【図１３】
2011076208.tif 000015
【図１４】
2011076208.tif 000016
【図１５】
2011076208.tif 000017
【図１６】
2011076208.tif 000018
【図１７】
2011076208.tif 000019