(57)【要約】【課題】最大事後確率推定を用いて情報を取り出すと共に、その際の計算量を削減する。【解決手段】入力装置（ＣＣＤ１０３）で撮影された入力画像はデコード基板１０６上に設けられるメモリ１０７の入力画像バッファ１７１に記憶される。このメモリ１０７の入力画像バッファ１７１、抽出バーコード画像バッファ１７２、前処理後バーコード画像バッファ１７３、計Ｍ本のスキャンラインバッファ１７４高解像度化スキャンラインバッファ１７６、エッジ強調高解像度化スキャンラインバッファ１７７に記憶されるデータがＣＰＵ部１０５のバーコード領域抽出部１５１、前処理部１５２の画像補正部１５３、スキャンライン取得部１５４、高解像度化実行部１５５、後処理部１５６、バーコード読み取り部１５７に供給される。さらに、同定されたキャラクタがメモリ１０７のバーコード読み取り結果バッファ１７８に記憶され、出力装置１０９に取り出される。【選択図】図３
2008134710.tif 000002
【特許請求の範囲】
【請求項１】
画像の明部及び／または暗部の長さにより情報を形成すると共に、前記情報の配列方向に対して直交する方向に任意の幅を有してなる２値画像を読み取る光学的情報読取装置であって、
前記任意の幅の範囲を互いに位相を違えて複数回走査する画像走査手段と、
前記複数回の走査で読み取った信号に対して最大事後確率推定を用いて情報を取り出す情報抽出手段と、
を設けることを特徴とする光学的情報読取装置。
【請求項２】
前記互いに位相を違えて複数回走査する画像走査手段は、筐体に対して所定の角度を傾けて配置された撮像装置からなる
ことを特徴とする請求項１記載の光学的情報読取装置。
【請求項３】
前記互いに位相を違えて複数回走査する画像走査手段は、前記撮像装置で撮像された任意の走査線に対して前記光学的情報１画素分ずれて同じになる走査線を判別し、その間を等分した走査線を前記複数回走査した信号として取り出す手段を含む
ことを特徴とする請求項２記載の光学的情報読取装置。
【請求項４】
前記最大事後確率推定を用いて情報を取り出す情報抽出手段は、前記複数回の走査で読み取った信号に対して前記画像の明部及び暗部の変わり目における重み付けを用いて行列演算を行うと共に、前記重み付けの値を予め設定して計算量を削減する演算手段を含む
ことを特徴とする請求項１〜３のいずれか一つに記載の光学的情報読取装置。
【請求項５】
画像の明部及び／または暗部の長さにより情報を形成すると共に、前記情報の配列方向に対して直交する方向に任意の幅を有してなる２値画像を読み取るための光学的情報読取方法であって、
前記任意の幅の範囲を互いに位相を違えて複数回走査するステップと、
前記複数回の走査で読み取った信号に対して最大事後確率推定を用いて情報を取り出すステップと、
を備えることを特徴とする光学的情報読取方法。
【請求項６】
前記複数回の走査で読み取った信号に対して、任意の走査線と前記光学的情報１画素分ずれて同じになる走査線とを判別するステップと、
前記判別された走査線の間を等分した走査線を取り出すステップと、
前記取り出された信号に対して最大事後確率推定を用いて情報を取り出すステップと、
を備えることを特徴とする請求項５記載の光学的情報読取方法。
【請求項７】
前記最大事後確率推定は、前記複数回の走査で読み取った信号に対して前記画像の明及び暗部の変わり目における重み付けを用いて行列演算を行うと共に、前記重み付けの値を予め設定して計算量を削減する
ことを特徴とする請求項５または６のいずれかに記載の光学的情報読取方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えばバーコードリーダーに使用して好適な光学的情報読取装置及び光学的情報読取方法に関する。詳しくは、最大事後確率推定を用いて装置の解像度以上の情報の取り出しを可能にするものであって、さらに、その際の計算量を削減してＣＰＵ（Central Processing Unit）での処理を可能にすることができるものである。
【背景技術】
【０００２】
流通、物流、郵便、医療・化学検査などの広範な分野で、物品や書類、材料、被検体、その他各種の物の認識手段として、光反射率の異なる部分で情報を表記したバーコード記号や二次元コード記号が広く使用されている。このようなバーコード記号や二次元コード記号等を読取対象とするバーコードスキャナや二次元コードスキャナ等には、従来から光学的情報読取装置が使用される。
【０００３】
ところが、このようなバーコード記号や二次元コード記号等の情報を光学的情報読取装置で読み取る場合には、バーコード記号や二次元コード記号等自体の汚損や、バーコード記号や二次元コード記号等の記載される紙面の状態などによって、読み取った信号にノイズが混入することが避けられない。そこで、このようなノイズを除去するために種々の技術が開発されている。
【０００４】
すなわち、例えばハイパスフィルタとローパスフィルタとを組み合わせて用いることにより、ノイズを除去する技術が開発されている（例えば、特許文献１参照。）。
あるいは、フィルタリングの際に、ラプラス演算子等を用いた伝達関数を実現することにより、紙面ノイズを除去しているものもある（例えば、特許文献２参照。）。
さらに、最大事後確率（ＭＡＰ）推定を用いて低解像度の画像を高解像度化する研究も行われている（例えば、非特許文献１参照。）。
【０００５】
【特許文献１】特許第２７５２８７０号公報
【特許文献２】特開２００５−２９３３２７号公報
【非特許文献１】Hardie et al. ,“Joint MAP Registration and High-Resolution Image Estimation Using a Sequence of Undersampled Images”, IEEE Trans. on Image Proc., VOL.6, NO.12, pp.1621-1633 Dec.1997
【発明の開示】
【発明が解決しようとする課題】
【０００６】
従来から光学的情報読取装置においては、特許文献１，２にも開示されているように、情報の正確な読み取りを行うための種々の技術が開発されている。しかしながら、これら特許文献１，２に開示された技術の目的は、汚損や表示面の状態によって生じるノイズの除去であって、例えば装置の解像度以上の情報の取り出しを行うものではない。
【０００７】
ところで、撮像装置を用いてバーコードの読み取りを行う場合に、バーコードに収納できる情報量は、撮像装置の性能や撮像位置などによる影響を受ける。また、撮像位置が遠い場合にバーコードが読み取れないという問題が生じる。特に、撮像装置の画素数が少ない場合にこの問題は顕著となるが、画素数が多い場合でも、より多くの情報を一度に読み込むためには、より遠くからバーコードが正確に読み取れる必要がある。
【０００８】
一方、従来の技術では、バーコードの細いエレメントが画像上で１ピクセル程度の幅がなければ読み取ることが不可能であると考えられていた。これに対して、非特許文献１に開示された技術のように、画像処理の技術を利用して撮影された画像の解像度を上げることは考えられるが、従来の技術でバーコードの画像処理を行うには膨大な計算量が必要となり、通常のＣＰＵの処理では実施が困難であるか、非常に時間が掛かってしまう。
【０００９】
この発明はこのような問題点に鑑みて成されたものであって、本発明の目的は、最大事後確率推定を用いて装置の解像度以上の情報の取り出しを可能とすることであって、さらに、その際の計算量を削減して、通常のＣＰＵでも処理が行えるようにすることである。
【課題を解決するための手段】
【００１０】
上記の課題を解決し、本発明の目的を達成するため、請求項１に記載された発明は、画像の明部及び／または暗部の長さにより情報を形成すると共に、情報の配列方向に対して直交する方向に任意の幅を有してなる２値画像を読み取る光学的情報読取装置であって、任意の幅の範囲を互いに位相を違えて複数回走査する画像走査手段と、複数回の走査で読み取った信号に対して最大事後確率推定を用いて情報を取り出す情報抽出手段と、を設けることを特徴とする光学的情報読取装置である。
【００１１】
請求項２に記載の光学的情報読取装置においては、互いに位相を違えて複数回走査する画像走査手段は、筐体に対して所定の角度を傾けて配置された撮像装置からなることを特徴とするものである。
【００１２】
請求項３に記載の光学的情報読取装置においては、互いに位相を違えて複数回走査する画像走査手段は、撮像装置で撮像された任意の走査線に対して光学的情報１画素分ずれて同じになる走査線を判別し、その間を等分した走査線を複数回走査した信号として取り出す手段を含むことを特徴とするものである。
【００１３】
請求項４に記載の光学的情報読取装置においては、最大事後確率推定を用いて情報を取り出す情報抽出手段は、複数回の走査で読み取った信号に対して画像の明部及び暗部の変わり目における重み付けを用いて行列演算を行うと共に、重み付けの値を予め設定して計算量を削減する演算手段を含むことを特徴とするものである。
【００１４】
また、請求項５に記載された発明は、画像の明部及び／または暗部の長さにより情報を形成すると共に、情報の配列方向に対して直交する方向に任意の幅を有してなる２値画像を読み取るための光学的情報読取方法であって、任意の幅の範囲を互いに位相を違えて複数回走査するステップと、複数回の走査で読み取った信号に対して最大事後確率推定を用いて情報を取り出すステップと、を備えることを特徴とする光学的情報読取方法である。
【００１５】
請求項６に記載の光学的情報読取方法においては、複数回の走査で読み取った信号に対して、任意の走査線と光学的情報１画素分ずれて同じになる走査線とを判別するステップと、判別された走査線の間を等分した走査線を取り出すステップと、取り出された信号に対して最大事後確率推定を用いて情報を取り出すステップと、を備えることを特徴とするものである。
【００１６】
請求項７に記載の光学的情報読取方法においては、最大事後確率推定は、複数回の走査で読み取った信号に対して画像の明及び暗部の変わり目における重み付けを用いて行列演算を行うと共に、重み付けの値を予め設定して計算量を削減することを特徴とするものである。
【発明の効果】
【００１７】
本発明の光学的情報読取装置及び光学的情報読取方法によれば、最大事後確率推定を用いて装置の解像度以上の情報の取り出しを可能にすることができる。また、その際の計算量を削減してＣＰＵでの処理を可能にすることができる。
【発明を実施するための最良の形態】
【００１８】
本発明は、バーコード読み取りシステムにおけるセンサ（ＣＣＤ：Charge Coupled Device）の配置と、センサによって得られる信号の処理に関するものである。バーコード読み取りシステムは、流通や製造など様々な場面で用いられている。また携帯電話のカメラを用いた情報取得など個人的利用も増えており、ここでは、こうしたバーコードを利用しうる全ての状況を想定している。
【００１９】
想定されるシステム全体の構成例を図１のＡに示す。システムは、バーコードを撮像する素子（ＣＣＤ）及びその情報を処理してバーコード情報のデコード（読み取り）を行うＣＰＵを含むスキャナ部１００と、デコードされた情報が転送される端末２００からなっている。但し、情報を処理するＣＰＵ部分が端末２００に存在する場合や、図１のＢのように端末２００からは独立して、デコードされた情報をスキャナ部１００に直接貯蔵したり、処理したりする場合もある。
【００２０】
このようなバーコード読み取りシステムにおいて、本発明は、まずスキャナ部１００に存在するＣＣＤの配置に関するものである。すなわち、図２にはスキャナ部１００の具体的な構成を示し、ここでは発光素子１０１からの光線がバーコード３００に照射され、その反射光がレンズ１０２を介してＣＣＤ１０３で撮像される。そしてこの場合に、ＣＣＤ１０３を筐体１０４に対して若干傾けて配置することで、読み取りの際に非常に有用な情報を取得することが可能となる。
【００２１】
このようにＣＣＤ１０３を若干傾けて配置することができるのは、バーコード３００において縦方向に同じ情報が並んでいるためである。すなわち、縦方向に同じ情報が並んでいるバーコード３００に対して、ＣＣＤ１０３が傾けて配置されることで、ＣＣＤ１０３からはバーコード３００の異なった位置の情報が得られる。なお、スキャナ部１００は人間の手で保持されるので、バーコード３００に対しては通常でも傾くことが多いと考えられるが、ＣＣＤ１０３を筐体１０４に対して傾けて配置することで、確実に傾くことになるものである。
【００２２】
そして、このＣＣＤ１０３によって得られた情報は、ＣＰＵ部１０５を含むデコード基板１０６に供給される。すなわち、このＣＣＤ１０３によって得られた情報をＣＰＵ部１０５で処理する手法も本発明の主要な点となるものである。この処理は、バーコード３００の情報を高解像度化するものであり、デコードをより高精度に行うことを可能とする。なお、バーコードには様々な種類が存在するが、本発明は、基本的には既存のどの種類のバーコードに対しても適用可能とされる。
【００２３】
図３には、上述したデコード基板１０６の構成を模式的なブロック図で示す。図３において、入力装置としてのＣＣＤ１０３で撮影された入力画像はデコード基板１０６上に設けられるメモリ１０７の入力画像バッファ１７１に記憶される。
【００２４】
この入力画像バッファ１７１に記憶された入力画像がＣＰＵ部１０５のバーコード領域抽出部１５１に供給される。バーコード領域抽出部１５１では、図４のＡに示すように、例えば画像の二値化（ステップＳ１）、エッジの抽出（ステップＳ２）、画像をブロックに分割（ステップＳ３）、ブロック内のエッジ数カウント（ステップＳ４）、バーコードの存在領域候補決定（ステップＳ５）、ラベリングによるバーコード領域抽出（ステップＳ６）等の処理が行われる。そして抽出されたバーコード領域の画像が、メモリ１０７の抽出バーコード画像バッファ１７２に記憶される。
【００２５】
抽出バーコード画像バッファ１７２に記憶された抽出バーコード画像は、ＣＰＵ部１０５の前処理部１５２の画像補正部１５３に供給される。画像補正部１５３では、図４のＢに示すように、例えば輝度正規化（ステップＳ７）、エッジ強調（ステップＳ８）等の処理が行われて、メモリ１０７の前処理後バーコード画像バッファ１７３に記憶される。
【００２６】
前処理後バーコード画像バッファ１７３に記憶された前処理後バーコード画像は、ＣＰＵ部１０５の前処理部１５２のスキャンライン取得部１５４に供給される。スキャンライン取得部１５４では、図４のＣに示すように、例えば基本ラインのスキャン（ステップＳ９）、ブロックマッチング手法による１ピクセルずれたスキャンラインの探索（ステップＳ１０）、Ｍ倍の高解像度化を行う場合には、基本スキャンラインと１ピクセルずれたスキャンライン間をＭ等分するスキャンラインを取得（ステップＳ１１）等の処理が行われる。そして取得された計Ｍ本のスキャンラインが、メモリ１０７の計Ｍ本のスキャンラインバッファ１７４に記憶される。
【００２７】
また、例えば外部記憶装置１０８にあらかじめ設定されているずれ／ボケを表現する行列の逆行列が、メモリ１０７のずれ／ボケを表現する行列の逆行列バッファ１７５に読み込まれる。そして、計Ｍ本のスキャンラインバッファ１７４に記憶された信号がＣＰＵ部１０５の高解像度化実行部１５５に供給され、図４のＤに示すように、例えば高速化のためのスキャンライン分割（ステップＳ１２）、重み計算（ステップＳ１３）、ずれ／ボケを表現する行列の逆行列バッファ１７５からずれ／ボケを表現する行列の逆行列が入力されて、ずれ／ボケを表現する行列の逆行列から繰り返し演算がスタート（ステップＳ１４）等の処理が行われる。
【００２８】
さらに高解像度化実行部１５５では、逆行列の補助定理を用いた繰り返しによる逆行列演算（ステップＳ１５）が行われて、重み計算に変化があるか否か判断（ステップＳ１６）される。このステップＳ１６で変化があるとき（Ｙｅｓ）はステップＳ１４に戻される。また、ステップＳ１６で変化がないとき（Ｎｏ）は、高解像度化スキャンライン結果取得（ステップＳ１７）等の処理が行われる。そして取得された高解像度化スキャンラインが、メモリ１０７の高解像度化スキャンラインバッファ１７６に記憶される。
【００２９】
高解像度化スキャンラインバッファ１７６に記憶された高解像度化スキャンラインは、ＣＰＵ部１０５の後処理部１５６に供給される。後処理部１５６では、図４のＥに示すように、例えばエッジ強調（ステップＳ１８）等の処理が行われる。そしてエッジ強調されたエッジ強調高解像度化スキャンラインが、メモリ１０７のエッジ強調高解像度化スキャンラインバッファ１７７に記憶される。
【００３０】
エッジ強調高解像度化スキャンラインバッファ１７７に記憶されたエッジ強調高解像度化スキャンラインは、ＣＰＵ部１０５のバーコード読み取り部１５７に供給される。バーコード読み取り部１５７では、図４のＦに示すように、例えば分割されたスキャンラインを結合（ステップＳ１９）、スキャンライン二値化（ステップＳ２０）、太エレメントと細エレメントの同定（ステップＳ２１）、エレメントの補正（ステップＳ２２）、キャラクタの同定（ステップＳ２３）等の処理が行われる。そして同定されたキャラクタが、メモリ１０７のバーコード読み取り結果バッファ１７８に記憶される。さらに、バーコード読み取り結果バッファ１７８に記憶された情報が出力装置１０９に取り出される。
【００３１】
これによって、上述の装置によれば、例えば図５に示すように、手順１としてバーコード画像の撮影を行い、手順２ではバーコード領域の抽出として画像中のバーコードを抜き出し、手順３の前処理で画像の補正、エッジ強調処理、正規化を行うことでレンズやＣＣＤの特性を補正する。なお、前処理に必要なパラメータは使用するカメラ（ＣＣＤ）によって変更する。さらに、手順４として高解像度化を行い、手順５の後処理としてエッジ強調処理行い、手順６のデコードで全処理を終えた結果をデコードする。
【００３２】
上述の手順１でバーコードをカメラで撮影する際にはバーコードを傾けて撮影する。ユーザが意識する必要なく傾けて撮像するために、ＣＣＤ自体を水平に対して傾けて配置しておく。もしくは、ユーザが撮像した際に自動的に必要な傾きになるようにセンサ部を可動式にしておく。これによって、読み取りの際に非常に有用な情報を取得することが可能となる。
【００３３】
さらに手順４の高解像度化では、最大事後確率（ＭＡＰ：Maximum a posteriori）推定を用いて高解像度化を行う。またこの際に、バーコードをブロック化すると共に、以下に提案する逆行列演算を用いることで、高速に演算を行うことを可能とする。また適切な重みの計算を行う。以下は、この手順４の高解像度化について説明する。
【００３４】
図６のＡには、従来のＭＡＰ推定を用いた画像高解像度化の手法を示し、図６のＢには本発明による従来のＭＡＰ推定を用いた画像高解像度化の手法を示す。
【００３５】
ここで図６のＡの従来の手法では、適当にずれのある画像を入力とする（ステップＳ３１）。次に、補間により高解像度画像の初期値を決定（ステップＳ３２）し、さらに画像のずれを推定する（ステップＳ３３）。そして、重みを画像全体で一定として高解像度画像を推定する（ステップＳ３４）。さらに収束したかを判断し（ステップＳ３５）、収束していないとき（Ｎｏ）はステップＳ３３に戻される。また収束していたとき（Ｙｅｓ）は終了される（ステップＳ３６）。
【００３６】
これに対して、図６のＢの本発明による手法では、基準のラインからずれが（１／倍率）の倍数となるラインを入力とする（ステップＳ４１）。次に、重みを画像全体で一定として高解像度画像を推定（ステップＳ４２）し、画素ごとに最適な重みを決定する（ステップＳ４３）。そして、ステップＳ４３で求めた重みを用いて高解像度画像化する（ステップＳ４４）。さらに収束したかを判断し（ステップＳ４５）、収束していないとき（Ｎｏ）はステップＳ４３に戻される。また収束していたとき（Ｙｅｓ）は終了される（ステップＳ４６）。
【００３７】
以上の手法の違いにおいて、従来のＭＡＰ推定を用いた画像高解像度化では、画像のずれと高解像度画像を交互に何度も繰り返し計算するために時間が非常にかかるものであった。しかし、本発明の手法では、バーコードは縦に同じデータが並んでいるという特性を利用し、傾けて撮影することにより最初に全ての画像（ライン）のずれを推定することが可能であり、必要最低限の画像を使用して高解像度化が可能である。
【００３８】
すなわち、一般的な画像と違い、バーコード画像は輝度の差が大きい点が多く見られるため重みを画素ごとに変更することが望ましい。そこで、重みを画像によって変更し高解像度画像と重みを交互に繰り返し計算する。重みを変更することで、従来のＭＡＰ推定を用いた高解像度化と同様に繰り返し処理が必要となるが、演算方法を工夫し処理の高速化を行うことで少ない計算量で計算することが可能である。
【００３９】
また、初期値を決める際にずれが予め判っており、重みを全体で一定とすると、処理に時間のかかる行列演算を予め行っておくことが可能となる。これによって、短い処理時間で、従来の手法による補間の場合より良い画像が計算される。
【００４０】
さらに以下には、ＭＡＰ推定を用いた高解像度化について具体的に説明する。ここでは、バーコード画像の高解像度化にはＭＡＰ推定を用いた方法として非特許文献１に開示された手法を使用する。
【００４１】
ＭＡＰ推定を用いた高解像度化とは、低解像度画像ｙが与えられたときの事後確率Pr(z,s|y)を最大とする高解像度画像ｚとレジストレーションパラメータｓを推定する方法である。Pr(z,s|y)は、対数を取りベイズの定理を用いることで事前確率の対数logPr(z)と条件付確率の対数logPr(y|z,s)の和によって表される。従ってＭＡＰ推定の問題は、次のように書くことができる。（なお、以下の説明で、数式ではベクトルを太字で表すが、説明文では太字を使用できないため、通常の文字で表記している）
【００４２】
【数１】
2008134710.tif 000003
【００４３】
上式は二つの重みσ、λによって制御される。二つの重みの比をｗ＝σ２／λとするとｗが大きければ隣り合う画素の輝度が近い値になる。しかし、バーコードは黒から白へと輝度が急激に変わる部分があるため、そこではｗの値を小さくする必要がある。提案手法では、白が続く場合（輝度200以上が３ピクセル以上続いている場合）と、黒が続いている場合（輝度50以下が３ピクセル以上続いている場合）はｗ＝ｗ１、それ以外の場合はｗ＝ｗ２というように輝度によってｗの値を変化させた。重みを変更したときの結果を図７に示す。
【００４４】
次に、スキャンラインの取得について説明する。１次元バーコードは横１行にデータが配置されており、同じデータが縦に並んでいる。よって、水平に１ラインとしてスキャン出来れば良い。図８に示したものは１次元バーコードの例Ａとそれがスキャンされる様子Ｂである。図６Ｂに示した３本のスキャンラインから得られるデータはすべて同一となるため、一次元バーコードを高解像度化された結果として必要となるのは横一列の一次元のデータであり、二次元画像を高解像度化する必要はない。
【００４５】
そこで本発明の手法では、低解像度なバーコード画像より、複数のスキャンラインのデータを用いて一つの高解像度化された一次元データを推定する。なお、２次元のコードであっても、エレメントの水平方向のデータの並びが同じとなる範囲を複数スキャンできるようにすれば、本発明は実施可能となるものである。
【００４６】
以下の説明では、画像を４倍に高解像度化するものであり、その場合に、正しく高解像度化するためには画像を高解像度化した状態で１ピクセル（低解像度で４分の１ピクセル）ずつずれたラインが４本必要である。スキャンラインの取得方法を以下に示す。
手順１：画像の撮影
図９に示すようにわざと位置ずれが発生するように撮影する。これは、カメラセンサ部を若干水平より傾けておくことで自然に実現可能である。
【００４７】
手順２：１ピクセルずれたラインの取得
図９のライン(a)のような基本となるラインを１つ決定し、１ピクセルずらしたものと他のラインと差をとり、一番差が小さいライン（図９のライン(ｂ)）を探し出す。
手順３：ラインの取得
従って、ライン(a)と(b)を４等分するライン(c)が４分の１ずつずれた必要となるスキャンラインである。これらのライン(a)と(c)の計４本のスキャンラインを用いて高解像度化を行う。
【００４８】
すなわち、スキャンラインを取得する際に横一列のデータを単純に取得するのではなく上下一列を含めた３列の平均を取ったものを一本のスキャンラインとすることでより高い認識率を実現した。スキャンラインを１列から得たものと３列の平均を用いたものの結果の例を図１０、１１に示す。１列では輝度の差がほとんど見られなかった部分が、３列用いることで輝度の差がはっきり出る部分があることがわかる。
【００４９】
さらに、高速化について説明する。ここではまず高速化のためのブロック化について検討する。高解像度化における問題は計算量である。問題は次の二つに集約される。
(１)大きなサイズの行列演算であること
(２)逆行列の演算が伴うこと
【００５０】
ここでは、まず(１)の問題について考える。演算する行列のサイズを小さくするには、単純に信号をブロックに分割することで、大きなサイズの行列演算を小さなサイズの複数の行列演算に置き換えればよい。但し、単に信号をブロックに分割すると分割した境界での誤差が大きくなり問題となる。そこでここでは、隣り合うブロックが重複するように分割することでこの問題を回避する。ブロックのサイズは、実験的に高解像度化後の60ピクセル分とした。また、ブロック間の重複は、20ピクセルとした。
【００５１】
次に、(２)の逆行列の演算の高速化について考える。高解像度画像ｚは式(３)で表される。
【数２】
2008134710.tif 000004
ここで逆行列の演算が必要となり、最低でも60×60の逆行列の演算が必要となる。
【００５２】
この式(３)でCは滑らかさを表すものであり、式(４)で表される。
【数３】
2008134710.tif 000005
【００５３】
そこで、ＷsTＷs＝Ａとおき、ｄ＝［ｄ1，ｄ２・・・ｄN］とすると、式(３)のカッコ内の逆行列は式(５)で表される。
【数４】
2008134710.tif 000006
【００５４】
さらに、式(５)の逆行列は式(６)で表される。
【数５】
2008134710.tif 000007
逆行列は式(６)の演算をＮ回（60回）行う必要がある。
【００５５】
ここで、Ｗiは0.002と1.0の2種類である。そこで、Ａの対角行列に0.002を足すとＷiは0と0.998の2種類に変更できる。一方、Ｗiの比率はおよそ(0.002)：(1.0)＝3：1であるので、0.002を足すことで演算量を約４分の１に減らすことができる。さらに、最終的に必要となるデータは以上の方法で求めた逆行列にＷsTｙをかけた高解像度化画像▲ｚ▼（ｚの上に＾）である。
【００５６】
そこで、ＷsTＷs＝ｂとおき、式（６）の両辺に右からｂをかけると式(７)のようになる。
【数６】
2008134710.tif 000008
【００５７】
ここで、ＡN-1-1ＣNが計算できていれば式(７)で▲ｚ▼（ｚの上に＾）を計算することが可能である。式(６)では60×60の行列を求める計算だったが、式(７)を用いるとベクトルの計算となり計算量の減少が期待できる。ＡN-1-1ＣNは式(６)を用いて式(８)のように表される。
【数７】
2008134710.tif 000009
【００５８】
さらに、ＡN-2-1ＣNも同様に式(９)で表される。
【数８】
2008134710.tif 000010
【００５９】
この計算をＡ0-1ＣNが計算されるまで繰り返すことでＡN-1ＣNｂは計算される。この場合の６０×６０の大きさの行列の計算量の比較を表１に示す。なお、画像全体の計算量はバーコードの幅が600ピクセルのとき計算量である。
【００６０】
【表１】
2008134710.tif 000011
【００６１】
この表１において、従来の方法であるＬＵ分解を用いた方法と比べ、本発明の手法を用いることで計算量は約５分の１となった。逆行列を計算するためには従来では40,824,000回計算が必要であったが、本発明の方法を用いることで2,952,000回に減らすことが可能となる。
【００６２】
さらに、９種類のバーコードを200mmから25mmずつ300mmまで離して撮影した画像を用いて、重みｗ２を変化させながら高解像度化を行った。実験結果を表２に示す。
【表２】
2008134710.tif 000012
【００６３】
この表２において、ｗ2の値を変更した結果を見ると、距離によって最適なｗ2の値は違うことがわかった。つまり、距離によってｗ2の値を変更することでより高い認識率が実現できる。今回の場合撮影距離が250mmまでのときはｗ2を0.05、それよりも離したときは0.02を用いることで高い認識率を実現できる。撮影距離によってｗ2を変更し、後処理としてアンシャープ処理を行うことで250mmまでは9枚すべて275mmは８枚、300mmについても７枚認識することが出来た。
【００６４】
さらに、300mmから10mmずつ離して撮影し、読み取れる距離の限界を調べた。カメラとバーコードの距離は従来法では215mmが限界であるが、提案法では330mmとなった。これらを文字数に換算すると、従来法の読み取り限界は42文字、提案手法では63文字となり、より多くの情報を保持できることが分かる。なお、ＭＡＰ推定を用いて高解像度化した結果を図１２に示す。図１２(c)を見ると、線形補間により計算したもの(b)に比べ、良い結果が得られていることが分かる。
【００６５】
以下さらに、２倍の高解像度化を行う際の実施形態について、図１３を用いて具体的に説明する。この図１３における問題点は、低解像度入力から高解像度の１ライン（ここでは１番上の基準ラインｘとする）を推定することである。
【００６６】
そこで、手順１の前処理では、
(１)入力画像全体を0から255の範囲に正規化する(ここでは便宜上0から1の範囲とする)
(２)画像中のエッジを強調する(ここでは説明の便宜上強調は行わない)
(３)入力における赤の基準スキャンラインを１ピクセルずらしたものと、それ以降のスキャンラインを比較することで、一ピクセルずれたスキャンラインを検索する。
【００６７】
ここでは、
ｙ0を１ピクセルずらしたもの⇒［0 0 0.5 0.9］(左端は折り返すことで生成する）
ｙ1⇒［0.1 0 1.1 0.9］
ｙ2⇒［0 0 0.4 1］
とする。
【００６８】
これらの2乗誤差を計算すると、ｙ2がｙ0の１ピクセルに相当するものであることが分かる。よって、ｙ0とこれが１／２ピクセル(高解像度画像上で1ピクセル)ずれたｙ1を用いて高解像度化の計算を行う。
【００６９】
次に、手順２の高解像度化処理では、
(１)スキャンラインの分割(実際にはスキャンラインが300やそれ以上の長さを持っているため、これを手ごろな長さで分割するが、ここでの例は十分短いため分割しない)。
(２)重みの計算をするために入力ｙ0を補間する⇒［0 0.25 0.5 0.75 1 1 1 1］
各ピクセルに対する滑らかさの重みを補間した情報により決定する。
⇒ｗ＝［ｗ0 ｗ1 ｗ2 ｗ3 ｗ4 ｗ5 ｗ6 ｗ７］＝［0 0 0 0 1 11 1］
【００７０】
この重みは、エレメントの切り替わりが起っている位置では滑らかさの拘束を課さないために必要となる。また、繰り返しによって、高解像度画像が得られるたびに更新する。
（ここでは便宜上、隣との差が大きい場合は0小さい場合は1とするが、実際には輝度200以上が３ピクセル以上続いている場合か、輝度50以下が３ピクセル以上続いている場合に1、それ以外の場合に0.002とする）
【００７１】
(３)求めたい高解像度情報をｘ＝［ｘ0 ｘ1 ｘ2 ｘ3 ｘ4 ｘ5 ｘ6 ｘ７］Ｔとおくと、
【数９】
2008134710.tif 000013
が等しくなるようにｘを求めればよい。
【００７２】
ただし、ｙ0とｙ1にはノイズがのっているため、単純に連立方程式を解いてしまうと正しい結果が得られない可能性がある。そこで、自乗誤差の和が最小になるようにｘを決定する。
【００７３】
これらは、行列で書くと
【数１０】
2008134710.tif 000014
であり、これらの和であるから
⇒ｘＴ（Ｗ0ＴＷ0＋Ｗ1ＴＷ1）ｘ−２（Ｗ0ＴＷ0＋Ｗ1ＴＷ1）ｘ＋（ｙ0Ｔｙ0＋ｙ1Ｔｙ1）
となる。
【００７４】
さらに滑らかさの拘束条件（隣り合うピクセル同士が近い値をとる）を考えると、
【数１１】
2008134710.tif 000015
も小さくなる必要があり、これを足すと問題は、ｘＴ（Ｗ0ＴＷ0＋Ｗ1ＴＷ1）ｘ−２（Ｗ0ＴＷ0＋Ｗ1ＴＷ1）ｘ＋（ｙ0Ｔｙ0＋ｙ1Ｔｙ1）を最小にするｘを求めることである。
【００７５】
そこで、上式を微分して0とおくと
【数１２】
2008134710.tif 000016
を解けばよい。
【００７６】
この逆行列をそのまま解くと計算量が問題となるため、逆行列の補助定理と
【数１３】
2008134710.tif 000017
なる関係を用いる。
【００７７】
またＡ0-1は何倍に高解像度化するかにのみ依存するため、事前に計算しておくことが可能である。これらより解はベクトル計算のみによって再帰的に計算可能であり、また重みｗiがゼロの位置では計算する必要がなく、非常に効率的である。
【００７８】
実際に解く手順は次の通り。
a) 準備として、Ａ0-1をメモリにロードする。またｂを計算する。
b)-1-1  Ａ0-1Ｃ1を計算。Ａ0-1Ｃ1＝［2 -6 6 -6 6 -6 6 -6］
b)-1-2  Ａ1-1ｂを計算。Ａ1-1ｂ＝［0.1 -0.1 0.1 0.9 1.3 0.5 1.3 1.1］
b)-2-1  Ａ0-1Ｃ2を計算。Ａ0-1Ｃ2＝［-2 10 -14 14 -14 14 -14 14］
b)-2-2  Ａ1-1Ｃ2を計算。Ａ1-1Ｃ2＝［-2 10 -14 14 -14 14 -14 14］
b)-2-3  Ａ2-1ｂを計算。Ａ2-1ｂ＝［0.1 -0.1 0.1 0.9 1.3 0.5 1.3 1.1］
b)-3-1  Ａ1-1Ｃ3を計算。
【００７９】
同様に繰り返し
b)-3-3  Ａ2-1Ｃ2まで計算。
b)-3-4  Ａ3-1ｂを計算。Ａ3-1ｂ＝［0.1 -0.1 0.1 0.9 1.3 0.5 1.3 1.1］
同様に繰り返し（実際にはｗiがゼロとなるところは計算する必要がない）
b)-8-9  Ａ8-1ｂを計算。
Ａ8-1ｂ＝［0.079 0.003 -0.085 1.167 0.950 0.956 1.038 1.103］
【００８０】
よって、設定した重みに対する最終的な解は、
ｘ＝［0.079 0.003 -0.085 1.167 0.950 0.956 1.038 1.103］
となる。b)におけるステップ数はｘの長さによって決まる。
【００８１】
(４)上述の(３)で得られた結果に対して重みを計算する。重みに変化がなければ終了して次の手順へ移る。変化した場合は、新たな重みで再び(３)の計算を行う。例では、ｘ＝［0.079 0.003 -0.085 1.167 0.950 0.956 1.038 1.103］Ｔであるから、ｗ＝［1 1 0 1 1 11 1］となり、前回の重みと異なるため、もう一度(３)に戻る。
【００８２】
２度目の繰り返し後は解が
Ａ8-1ｂ＝［0.050 0.016 0.002 1.034 1.003 0.974 1.044 1.107］Ｔ
となり、重みも前回と変化がないため、これが最終的な解となる。
【００８３】
さらに、手順３の後処理では、エッジを強調し、手順４のバーコードのデコードでは、バーコードを読み取ることが行われるが、これらは従来の技術と同様であるので、説明は省略する。
【００８４】
こうして、本発明によれば、ＭＡＰ推定を用いたバーコード画像の高解像度化により遠距離からのバーコードの読み取りを実現し、収納できる情報量の増加が可能であることを示した。
【００８５】
また、従来の技術では、細エレメント幅が約1.0ピクセルであるときが限界であったが、本発明の技術を用いることで約0.66ピクセルまで正しく読むことができる。これを640×480の解像度のカメラを使用したとすると、文字数にして従来法では42文字が限界だったが、63文字まで読み取ることが可能である。また、29文字収納されたバーコードを読み取るには従来法だと最低でも横幅が420ピクセルの解像度が必要であったが、提案法を用いると横幅が285ピクセルで読み取ることが出来る。
【００８６】
これによりバーコード読み取り機のセンサ部の小型化もしくは、コスト低減を図ることができる。また、ユーザは、バーコードを読み取る際のセンサとバーコードとの位置に関する自由度が高くなり、より使い勝手の良いバーコード読み取り装置を実現できる。
【００８７】
なお本発明は、上述の説明した実施形態に限定されるものではなく、特許請求の範囲の記載を逸脱しない範囲において、種々の変形が可能とされるものである。
【図面の簡単な説明】
【００８８】
【図１】本発明の適用されるシステム全体の構成を示す模式図である。
【図２】そのスキャナ部１００の具体的な構成を示す図である。
【図３】そのデコード基板１０６の構成を示す模式的なブロック図である。
【図４】その説明のためのフローチャート図である。
【図５】その説明のためのフローチャート図である。
【図６】その説明のためのフローチャート図である。
【図７】その説明のための図である。
【図８】その説明のための図である。
【図９】その説明のための図である。
【図１０】その説明のための図である。
【図１１】その説明のための図である。
【図１２】その説明のための図である。
【図１３】その説明のための図である。
【符号の説明】
【００８９】
１００…スキャナ部、２００…端末、３００…バーコード、１０１…発光素子、１０２…レンズ、１０３…ＣＣＤ、１０４…筐体、１０５…ＣＰＵ部、１０６…デコード基板、１０７…メモリ、１０８…外部記憶装置、１０９…出力装置
【図１】
2008134710.tif 000018
【図２】
2008134710.tif 000019
【図３】
2008134710.tif 000020
【図４】
2008134710.tif 000021
【図５】
2008134710.tif 000022
【図６】
2008134710.tif 000023
【図８】
2008134710.tif 000024
【図１３】
2008134710.tif 000025
【図７】
2008134710.tif 000026
【図９】
2008134710.tif 000027
【図１０】
2008134710.tif 000028
【図１１】
2008134710.tif 000029
【図１２】
2008134710.tif 000030