(57)【要約】【課題】  画像中における光学的情報の配列方向によらず、細かい情報でも高い精度で読み取れるようにする。【解決手段】  撮像手段が撮像した画像内に、それぞれ向かい合う２辺が上記画像の画素配列方向と平行であり他の２辺が光学的情報の配列方向と垂直である複数の平行四辺形状のブロックを、該複数のブロックにより上記光学的情報の配列方向全域をカバーするように設け（Ｓ４）、上記各ブロック内の画像データから、そのブロック内の光学的情報の配列を示す配列データを生成し（Ｓ６乃至Ｓ９）、その生成した配列データを上記複数のブロック分連結して（Ｓ１１）、上記光学的情報全体の配列を示す配列データを生成するようにした。【選択図】        図２
2015102899.tif 000002
【特許請求の範囲】
【請求項１】
読取対象物の画像を撮像手段により撮像して解析することにより読取対象物上に配列された光学的情報を読み取る光学的情報読取装置における画像処理方法であって、
前記撮像手段が撮像した画像中における光学的情報の配列方向を求める第１ステップと、
前記画像中の前記光学的情報が配置された領域内に、それぞれ向かい合う２辺が前記画像の画素配列方向と平行であり他の２辺が前記光学的情報の配列方向と垂直である複数の平行四辺形状のブロックを、該複数のブロックにより前記光学的情報の配列方向全域をカバーするように設ける第２ステップと、
前記各ブロック内の画像データから、該ブロック内の光学的情報の配列を示す配列データを生成する第３ステップと、
前記第３ステップで生成した配列データを前記複数のブロック分連結して、前記光学的情報全体の配列を示す配列データを生成する第４ステップとを備えることを特徴とする、光学的情報読取装置の画像処理方法。
【請求項２】
請求項１に記載の光学的情報読取装置の画像処理方法であって、
前記第３ステップにおいて、前記ブロック毎に、ブロック内における前記光学情報の配列方向を求め、該配列方向の値に基づき該ブロック内の光学的情報の配列を示す配列データを生成することを特徴とする光学的情報読取装置の画像処理方法。
【請求項３】
請求項１又は２に記載の光学的情報読取装置の画像処理方法であって、
前記第３ステップにおいて、前記ブロック毎に、該ブロック内における前記向かい合う２辺に平行な向きの複数ラインの画像データについて、該ラインの位置及び該ブロックにおける前記光学情報の配列方向に基づき前記画像データよりも高い解像度で該ラインの方向の位置合わせを行い、該位置合わせ後の各ラインの画像データに基づいて、該ブロック内の前記配列データを前記高い解像度で生成することを特徴とする光学的情報読取装置の画像処理方法。
【請求項４】
請求項１乃至３のいずれか一項に記載の光学的情報読取装置の画像処理方法であって、
前記第２ステップにおいて、前記複数のブロックを、隣接するブロックが一部重なるように設け、
前記第４ステップにおいて、隣接するブロックの配列データを、該隣接する各ブロックにおける前記一部重なる領域と対応する配列データ同士が整合する位置で連結することを特徴とする光学的情報読取装置の画像処理方法。
【請求項５】
請求項１乃至４のいずれか一項に記載の光学的情報読取装置の画像処理方法であって、
前記第２ステップにおいて、前記ブロックのサイズを、前記読取対象物の画像中の、前記光学的情報が配列された領域の四隅の座標に基づき決定することを特徴とする光学的情報読取装置の画像処理方法。
【請求項６】
請求項１乃至５のいずれか一項に記載の光学的情報読取装置の画像処理方法であって、
前記第４ステップで生成した配列データをデコードする第５ステップを備えたことを特徴とする光学的情報読取装置の画像処理方法。
【請求項７】
読取対象物の画像を撮像手段により撮像して解析することにより読取対象物上に配列された光学的情報を読み取る光学的情報読取装置であって、
前記撮像手段が撮像した画像中における光学的情報の配列方向を求める第１手段と、
前記画像中の前記光学的情報が配置された領域内に、それぞれ向かい合う２辺が前記画像の画素配列方向と垂直であり他の２辺が前記光学的情報の配列方向と平行である複数の平行四辺形状のブロックを、該複数のブロックにより前記光学的情報の配列方向全域をカバーするように設ける第２手段と、
前記各ブロック内の画像データから、該ブロック内の光学的情報の配列を示す配列データを生成する第３手段と、
前記第３手段が生成した配列データを前記複数のブロック分連結して、前記光学的情報全体の配列を示す配列データを生成する第４手段とを備えることを特徴とする光学的情報読取装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、読取対象物の画像を撮像手段より撮像して解析することにより読取対象物上の光学的情報を読み取る光学的情報読取装置における画像処理方法及び、このような光学的情報読取装置に関する。特に、一方向にのみ情報が配列された光学的情報の読み取りに適した画像処理方法及び光学的情報読取装置に関する。
【背景技術】
【０００２】
従来から、読取対象物の画像を撮像手段より撮像して解析することにより読取対象物上の光学的情報を読み取る光学的情報読取装置として、バーコードのようなコード記号を読み取る読取装置が知られている。
【０００３】
このような光学的情報読取装置において、解像度が不足し読み取り困難なバーコード画像を高解像化し読み取りを可能にする従来技術として、非特許文献１及び特許文献１に記載のものが知られている。
これらの文献に記載の技術は、傾きをともなったバーコード画像に対して、バーコード領域を水平方向に横切る複数ラインの１次元画像を用いてそれらを合成することによって高解像画像を得るものである。
【０００４】
図１９に示すように、バーコード領域Ｃを横切る２本のラインＬ１，Ｌ２に沿った１次元画像中に表れるコード記号の濃淡は、画像の傾きによって互いに画素ピッチＰの非整数倍の幅の横ずれＤを伴い、それらは画素ピッチＰ以下の解像度の情報をもちえる。このため、ラインＬ１，Ｌ２に沿った画像を合成することにより、高解像化が可能になる。
【０００５】
また、特許文献２には、イメージセンサを矩形状の読取口に対して４５度傾いた状態で配置してバーコードを撮影し、その画像の対角線に平行なバーコードを横切る２本の隣接ラインが互いに半ピッチずれていることを利用して、それらの合成により、１ラインを用いた場合の約２倍の解像度を得る技術が記載されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１１−１８６７７７号公報
【特許文献２】特開２００６−４３５３号公報
【非特許文献】
【０００７】
【非特許文献１】Donald  G  Bailey,  “Super-resolution  of  bar  codes”,  Journal  of  Electronic  Imaging,  January  2001,  vol.  10(1),  p.213-220
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、非特許文献１及び特許文献１に記載の技術については、図２０に示すように、撮像した画像中でのバーコードの傾きψが大きいと、バーコード領域Ｃの全幅を通るような水平方向のラインＬ１，Ｌ２を引くことができない。このため、各ラインに沿った一次元画像はコード記号の途中で欠けてしまうためバーコード全幅に対する高解像化は困難であるという問題があった。
【０００９】
また、特許文献２に記載の技術については、画像の対角線上では画素に対して√２倍のピッチとなるため、２本の隣接ラインを合成しても高々√２倍しか解像力は向上しないことに加え、イメージセンサに対してバーコードが相対的に４５度傾いたときにしか最高性能を発揮できないという問題があった。
【００１０】
この発明は、このような背景に鑑みてなされたものであり、読取対象物の画像を撮像手段より撮像して解析することにより読取対象物上の光学的情報を読み取る場合において、画像中における光学的情報の配列方向によらず、細かい情報でも高い精度で読み取れるようにすることを目的とする。
【課題を解決するための手段】
【００１１】
この発明は、上記の目的を達成するため、読取対象物の画像を撮像手段により撮像して解析することにより読取対象物上に配列された光学的情報を読み取る光学的情報読取装置における画像処理方法において、上記撮像手段が撮像した画像中における光学的情報の配列方向を求める第１ステップと、上記画像中の上記光学的情報が配置された領域内に、それぞれ向かい合う２辺が上記画像の画素配列方向と平行であり他の２辺が上記光学的情報の配列方向と垂直である複数の平行四辺形状のブロックを、その複数のブロックにより上記光学的情報の配列方向全域をカバーするように設ける第２ステップと、上記各ブロック内の画像データから、そのブロック内の光学的情報の配列を示す配列データを生成する第３ステップと、上記第３ステップで生成した配列データを上記複数のブロック分連結して、上記光学的情報全体の配列を示す配列データを生成する第４ステップとを設けたものである。
【００１２】
このような光学的情報読取装置の画像処理方法において、上記第３ステップにおいて、上記ブロック毎に、ブロック内における上記光学情報の配列方向を求め、その配列方向の値に基づきそのブロック内の光学的情報の配列を示す配列データを生成するようにするとよい。
さらに、上記第３ステップにおいて、上記ブロック毎に、そのブロック内における上記向かい合う２辺に平行な向きの複数ラインの画像データについて、そのラインの位置及びそのブロックにおける上記光学情報の配列方向に基づき上記画像データよりも高い解像度でそのラインの方向の位置合わせを行い、その位置合わせ後の各ラインの画像データに基づいて、そのブロック内の上記配列データを上記高い解像度で生成するようにするとよい。
【００１３】
さらに、上記第２ステップにおいて、上記複数のブロックを、隣接するブロックが一部重なるように設け、上記第４ステップにおいて、隣接するブロックの配列データを、その隣接する各ブロックにおける上記一部重なる領域と対応する配列データ同士が整合する位置で連結するようにするとよい。
さらに、上記第２ステップにおいて、上記ブロックのサイズを、上記読取対象物の画像中の、上記光学的情報が配列された領域の四隅の座標に基づき決定するようにするとよい。
【００１４】
さらに、上記第４ステップで生成した配列データをデコードする第５ステップを設けるとよい。
また、この発明は、方法として実施する他、装置、システム、プログラム、媒体等、他の任意の形態で実施可能である。
【発明の効果】
【００１５】
この発明による光学的情報読取装置の画像処理方法及び光学的情報読取装置によれば、読取対象物の画像を撮像手段より撮像して解析することにより読取対象物上の光学的情報を読み取る場合において、画像中における光学的情報の配列方向によらず、細かい情報でも高い精度で読み取れるようにすることができる。
【図面の簡単な説明】
【００１６】
【図１】この発明の光学的情報読取装置の一実施形態であるバーコード読取装置のハードウェア構成を示すブロック図である。
【図２】図１に示したバーコード読取装置がバーコード記号の読み取りを行う場合にそのＣＰＵが実行する処理のフローチャートである。
【図３】図２の各ステップにおいて行う処理の内容を模式的に示す図である。
【図４】４５°≦｜θ１｜＜９０°の場合のブロックの配置例を示す図である。
【図５】位相限定相関法の概略を説明するための図である。
【図６】バーコード領域の四隅の座標の定義を示す図である。
【図７】ブロックの形状例を示す図である。
【図８】図６に示した座標から求まるブロックのサイズ（Ｈ及びＷ）を示す図である。
【図９】あるブロックとその隣のブロックとの位置関係を示す図である。
【図１０】第ｎブロックの画像データから得られる輝度分布と、第ｎ＋１ブロックの画像データから得られる輝度分布との関係を示す図である。
【図１１】−４５°≦θ１＜０°の場合のブロックの形状例を示す、図７と対応する図である。
【図１２】−４５°≦θ１＜０°の場合のブロックのサイズ（Ｈ及びＷ）を示す、図８と対応する図である。
【図１３】図２の処理により高解像化が可能である仕組みについて説明するための図である。
【図１４】第１比較例の構成によるバーコード記号の読取結果の一例を示す図である。
【図１５】第２比較例の構成によるバーコード記号の読取結果の一例を示す図である。
【図１６】本発明の実施形態の構成によるバーコード記号の読取結果の一例を示す図である。
【図１７】本発明の実施形態の構成によるバーコード記号の読取結果の他の例を示す図である。
【図１８】第１比較例の構成によるバーコード記号の読取結果の他の例を示す図である。
【図１９】従来の高解像化について説明するための図である。
【図２０】従来の高解像化の問題点について説明するための図である。
【発明を実施するための形態】
【００１７】
以下、この発明を実施するための形態を図面に基づいて具体的に説明する。
まず、この発明の光学的情報読取装置の一実施形態であるバーコード読取装置について説明する。
図１は、そのバーコード読取装置のハードウェア構成を示すブロック図である。
【００１８】
図１に示すように、バーコード読取装置１００は、ユーザが（少なくとも光学部１０を）手に持って操作し、読取対象物４０上で光反射率が周囲と異なる記号により示される情報であるバーコード記号４１を読み取るための装置である。
このバーコード読取装置１００は、光学部１０、デコーダ２０、操作部３１及び通知部３２を備える。
【００１９】
このうち光学部１０は、撮像センサ１１、レンズ１２、パルスＬＥＤ（発光ダイオード）１３を備える。
撮像センサ１１は、読取対象物４０の画像を撮像するための撮像手段であり、例えばＣＭＯＳ（相補性金属酸化膜半導体）イメージセンサにより構成することができる。また、撮像センサ１１は、撮像によりイメージセンサの各画素に蓄積した電荷に基づき、各画素の階調値を示す画像データを生成し、デコーダ２０へ出力することができる。この撮像センサ１１において、画素は二次元的に配置されている。
【００２０】
レンズ１２は、撮像センサ１１上にバーコード記号４１を含む読取対象物４０からの反射光を結像させるための光学系である。レンズ１２は、１枚のレンズで構成しても、複数のレンズで構成してもよい。また、焦点距離を調整可能なレンズを用いてもよい。
パルスＬＥＤ１３は、撮像対象である読取対象物４０へ照明光を照射するための照明手段である。
【００２１】
次に、デコーダ２０は、ＣＰＵ２１と、ＣＰＵ２１が実行するプログラムや各種テーブル等のデータを記憶したＲＯＭ２２と、ＣＰＵ２１が各種の処理を実行する際の作業領域として使用するＲＡＭ２３と、外部装置と通信を行うための通信Ｉ／Ｆ２４とを備えている。
上記ＣＰＵ２１，ＲＯＭ２２，ＲＡＭ２３としては、例えば、ＡＳＩＣ（Application  Specific  Integrated  Circuit），フラッシュロム（ＦＲＯＭ），ＳＤＲＡＭ（Synchronous  Dynamic  Random  Access  Memory）等を用いることができる。
【００２２】
ＣＰＵ２１は、ＲＡＭ２３を作業領域としてＲＯＭ２２に記憶されたプログラムを実行することにより、光学部１０、操作部３１及び通知部３２を含むバーコード読取装置１００全体の動作を制御する。また、撮像センサ１１が撮像した画像の画像データに含まれるバーコード記号４１の検出及びデコード、そのデコード結果の外部への出力あるいは蓄積、パルスＬＥＤ１３による照明光量（又は時間）の調整などの処理も行う。
【００２３】
通信Ｉ／Ｆ２４は、デコーダ２０によるデコード結果を処理するＰＣ（パーソナルコンピュータ）等のデータ処理装置と通信するためのインタフェースであり、有線無線を問わず任意の規格を採用可能である。また、通信Ｉ／Ｆ２４から読み込んだデータに基づきデコーダ２０に制御用パラメータの設定を行うことができるようにしてもよい。
【００２４】
操作部３１は、ユーザの操作を受け付けるためのボタンやトリガ等の操作手段である。ここでは、コード記号の読み取り開始を指示するためのトリガを備えるとする。
通知部３２は、ユーザへの各種通知を行うための通知手段である。具体的な通知の方法としては、ディスプレイによるメッセージやデータの表示、ランプの点灯や点滅、スピーカによる音の出力等が考えられるが、これに限られることはない。ここでは、通知部３２としてスピーカ及びランプを備えるとする。
【００２５】
以上のバーコード読取装置１００は、撮像センサ１１によりバーコード記号４１を撮像して得た画像データをデコーダ２０が解析してバーコード記号４１におけるバーの配列を示す配列データを生成し、これをデコードすることにより、バーコード記号４１を読み取ることができる。
そして、このバーコード読取装置１００において特徴的な点の１つは、撮像で得られた画像データから上記の配列データを生成する処理の内容である。以下、この点について説明する。
【００２６】
図２に、バーコード読取装置１００がバーコード記号の読み取りを行う場合にＣＰＵ２１が実行する処理のフローチャートを示す。図３は、その各ステップにおいて行う処理の内容を模式的に示した図である。
ＣＰＵ２１は、ユーザから読み取り実行を指示された場合や、定期的な読み取り実行タイミングになったことを検出した場合など、バーコード記号の読み取りを行うべきと判断した場合に、ＲＯＭ２２に格納されている所要のプログラムを実行することにより、図２のフローチャートに示す処理を開始する。
【００２７】
そして、まず光学部１０に所定のコマンドを送信して撮像センサ１１に読取対象物４０を撮像させ、その画像データを取得する（Ｓ１）。次に、ＣＰＵ２１は、ステップＳ１で取得した画像データ中の、バーコード記号４１の画像の領域を、バーコード領域として特定する（Ｓ２）。これは、撮像した画像中で白黒のバーが一定間隔で並ぶ構造などを検出することにより行う。なお、ここでバーコード領域を撮像画像から切り出して後の処理に用いるようにしてもよい。
【００２８】
次に、ＣＰＵ２１は、ステップＳ２での特定結果に基づき、読み取り対象の光学的情報の配列方向として、バーコード領域におけるバーの配列方向を算出する（Ｓ３）。この算出は、大まかでよく、手法も任意のものを用いることができる。例えば、ステップＳ２で特定したバーコード領域の四隅の画像中での座標を用いて、バーコード領域を形成する略長方形の長辺の傾きを求め、その傾きのアークタンジェントを求めればよい。
この配列方向は、ここでは、図３のＳ３に示すように、画像の水平方向を基準にした角度θ１で表すことにする。また、−９０°＜θ１＜９０°であるとする。
【００２９】
次に、ＣＰＵ２１は、ステップＳ２で特定したバーコード領域中に、バーの配列方向全域を覆うように複数の平行四辺形のブロックを配置する（Ｓ４）。このブロックはそれぞれ、向かい合う２辺（ここでは図で上下の辺）が画像の画素配列方向と平行であり、これと隣り合う他の２辺（ここでは図で左右の辺）がバーの配列方向と垂直（バーの長手方向と平行）である平行四辺形状をしている。
【００３０】
そして、図３のＳ４に示すように、隣接するブロックが一部重なるように配置することが好ましい。この重複領域は、後述する１次元画像において誤差が大きくなる両端部分を避けて、ブロック間で安全に接続できるようにするためのものであり、これが可能な程度に重複幅を決定するとよい。ただし、重複があることは必須ではない。また、両端のブロックは、バーコード領域からはみ出しても構わない。図３の例では、第１ブロックをバーコード領域の端部を基準に配置しているため、第６ブロックのみがバーコード領域からはみ出している。
【００３１】
また、各ブロックは、ブロック内においてバーコードの伸縮が一定とみなせる範囲で横幅を長く、かつ（端部のブロックを除く）各ブロックがバーコード画像に内包される範囲で高さを大きく選ぶ。このサイズ及び重複領域幅の決定法については、後に詳述する。
【００３２】
また、０°≦｜θ１｜≦４５°の場合は、図３のように上下２辺が画像の水平方向と平行であるが、４５°≦｜θ１｜＜９０°の場合は、図４に示すように、左右２辺が画像の垂直方向と平行なブロックとする。これと隣り合う他の２辺がバーの配列方向と垂直である点は、０°≦｜θ１｜≦４５°の場合と変わらない。このようにするのは、４５°≦｜θ１｜＜９０°のときに０°≦｜θ１｜≦４５°の場合と同じやり方でブロックを配置すると、ブロックが細くなりすぎ、ステップＳ１１での連結処理に支障を来すためである。
ここでは、特に断らない限り、０°≦θ１≦４５°の場合を前提に説明するが、θ１が他の範囲の角度の場合でも、ここで説明する処理に若干の変更を加えるだけで適用可能である。
【００３３】
次に、ＣＰＵ２１は、ステップＳ４で配置したブロックの１つを処理対象として（Ｓ５）、ステップＳ６乃至Ｓ９の処理を行う。
すなわち、まず、処理対象のブロック内の画像データから、複数ラインの画像データを抽出する（Ｓ６）。この画像データは、ラインに沿った一次元輝度分布となる。また、ここで抽出するラインは、上記上下２辺、すなわち画像の画素配列方向（ここでは水平方向）の辺と平行な向きのラインである。図３には、４ライン分の一次元輝度分布を抽出した例を示している。図で横方向が画素の並びを、縦方向が各画素における輝度レベルを示す。
【００３４】
また、このとき、各ラインの位置関係を後で特定できるようにしておくとよい。これは、例えば各ラインの開始位置（左端など）の画像内での座標を記憶しておく等、位置を直接特定するものでもよい。また、各ラインが基準となる１番目のラインから何画素離れた位置であるかを記憶しておき、この値とθ１とから、基準となるラインから何画素ずれた位置にあるかを計算できるようにしてもよい。
なお、各ラインの端部の輝度分布は、後述のように隣接するブロックのデータと連結する際に端部を切り落とすことが望ましい。この場合、ライン端部の輝度分布は最終的なデコード結果にほぼ反映されないため、ラインの位置関係を特定できれば、各ラインの開始位置や終了位置がブロックを設定した位置から多少ずれても、大きな問題はない。
【００３５】
次に、ＣＰＵ２１は、抽出した輝度分布に基づき、処理対象のブロックにおけるバーコード記号の配列方向（傾き角）を算出する（Ｓ７）。この算出は、例えば、IEICE  Fundamentals  Review,  Vol.  1,  No.  1,  pp.  30-40,  July  2007に記載の位相限定相関法を用いて行うことができる。
【００３６】
ステップＳ６で取得した各ラインの一次元輝度分布は、図３に示したブロックの配置からわかるように、基本的には、バーコード記号の同じバーに対応した輝度分布となっているはずである。しかしながら、バーは完全に画素に重なるわけではないため、図で垂直方向の位置に応じて、１画素未満の位置ずれが含まれる。また、θ１の算出精度が十分でなかったり、バーコード記号４１が歪んでいて処理対象のブロックの位置で局所的にバーの配列方向がずれていたりした場合には、それに伴う位置ずれも発生する。
ステップＳ７においては、まず、１つのライン（例えば１番目のライン）を基準に、各ラインの輝度分布が、ライン方向にどれだけずれているかを、画素ピッチ以上の精度で算出する。この算出に用いるのが上記の位相限定相関法である。
【００３７】
その概略を図５に示す。
ここでは、基準となる１番目のラインの輝度分布をｆ１（ｘ）とし、ずれ量を求めるｋ番目のラインの輝度分布をｆ１＋ｋ（ｘ＋ｋδ）とする。ｋδは、位置ずれ量を示す。そして、これらの各輝度分布をそれぞれフーリエ変換し、振幅成分で割って相関を取り、その関数を逆フーリエ変換して関数δ（ｘ−ｋδ）を得る。このδ（ｘ−ｋδ）に表れるピークの位置が、１番目のラインとｋ番目のラインの間の輝度分布のずれ量と対応する。
【００３８】
以上を各ラインについて行って得られるずれ量から、処理対象のブロックにおけるバーの配列方向θ２（図３では画像をブロックの形状に切り出した状態を示しているためθ１と記載形式が異なるが、θ１と同じ意味の値である）を求めることができる。ステップＳ３で求めたθ１がバーコード記号４１全体の大まかな傾き角であったのに対して、θ２はそれをブロックごとに補正した、高精度な傾き角として得られる。
【００３９】
なお、ステップＳ６で取得した各ラインの一次元輝度分布について、図３の「一元画像」にあるように、θ１を基準に左端を揃えたものとしてθ２−θ1に相当する補正量を求めてもよいし、ラインの開始位置のずれも考慮して直接θ２を求めてもよい。いずれについても位相限定相関法が適用可能である。
【００４０】
図２及び図３の説明に戻ると、次にＣＰＵ２１は、各ラインの一次元輝度分布を、該ラインの位置及びステップＳ７で求めた配列方向θ２に基づき、元の画像データよりも高い解像度で位置合わせする（Ｓ８）。そして、このことにより、元の各ラインの一次元輝度分布より解像度の高い一次元輝度分布を得る。この処理は、非特許文献１に記載の「超解像法」あるいは「画素ずらし法」に該当するものである。
【００４１】
より具体的には、まず、元の１次元輝度分布に対して整数倍に画素数を増やした１次元の高画素空間を用意する。光学系の伝達特性上、高解像化には限界があり通常は画素数をもとの２倍〜４倍にすれば十分である。ここでは２倍を例として説明する。
次に、ステップＳ６で得られた各ラインの１次元輝度分布の各画素値を１画素おきに高画素空間上に配置する。この際、ステップＳ７で求めた配列方向θ２から各１次元輝度分布の横ずれ量を画素ピッチよりも細かい（例えば一桁細かい）精度で求め、その２倍の画素数（小数点以下は四捨五入）だけ反対方向へずらした位置に配置して横ずれを補正する。
【００４２】
例えば、２番目のラインが１番目のラインと１０画素離れており、θ２＝１５°であるとすると、２番目のラインの輝度分布は１番目のラインの輝度分布と、１０×ｔａｎ１５°≒２．６８画素ずれているはずである。
【００４３】
すなわち、２番目のラインの輝度分布を、２．６８画素だけ、図３で左方向にずらせば、１番目のラインの輝度分布と一致すると考えられる。そこで、高解像化に対応してその２倍の小数点以下を四捨五入した５画素（撮像時の２．５画素に相当）だけ左側にずらして高画素空間上に配置すればよい。
なお、ここで示したずれ量は、ラインの開始位置のずれ量も含んだ値である。従って、例えば２番目のラインの開始位置が１番目のラインの開始位置に対してライン方向（ここでは水平方向）右側に２画素ずれている場合には、輝度分布のデータ自体は、撮像時の画素に換算して２．５−２＝０．５画素分左側にずらして高画素空間上に配置すればよいことになる。
【００４４】
以上の処理を全てのラインについて行えば、高画素空間上に、各バーと対応するピークの位置が揃った輝度分布が配置される。
そこで、ＣＰＵ２１は、高画素空間上の各画素について、その画素に配置された各ラインの画素値を平均することにより、処理対象のブロックにおける高解像度の輝度分布を生成して取得することができる（Ｓ９）。この輝度分布は、バーコード記号４１中のバーの配列を示す配列データに該当する。
【００４５】
そして、ＣＰＵ２１は、まだ処理対象としていないブロックがあれば（Ｓ１０）、ステップＳ５に戻って処理を繰り返し、全てのブロックについてステップＳ９で高解像度の輝度分布を生成すると、ステップＳ１１へ進む。
そして、全ブロックの輝度分布を連結してバーコード記号４１の全幅と対応する高解像度の一次元輝度分布を取得し（Ｓ１１）、これをデコードしてバーコード記号４１が示すデータを取得し（Ｓ１２）、処理を終了する。ステップＳ１２のデコードは、ステップＳ１１で取得したデータを、バーコード記号４１の１ライン分の輝度分布データであるとして、適宜公知の手法で行えばよい。
【００４６】
デコードで得られたデータは、通信Ｉ／Ｆ２４からデータ処理装置へ出力するか、ＲＡＭ２３に記憶して後で参照できるようにしておく。また、図示は省略したが、デコードが正常に行えなかった場合には、その旨をユーザに通知し、必要に応じて再度ステップＳ１から処理を繰り返す。
【００４７】
なお、ステップＳ１１での連結に当たっては、各ブロックの位置関係はステップＳ４で把握できていることから、この情報をもとに、隣接するブロックの輝度分布を何画素分ずらして重ねると元の撮像画像と同じ位置関係になるかを算出することができる。従って、その算出した画素分ずらしてつなぎ合わせればよい。
【００４８】
あるいは、ブロックの範囲が重複する部分のデータ同士を、重ね合わせる位置を変化させながら比較し、最も差が小さくなるような位置を探索して、その位置で連結するようにしてもよい。すなわち、隣接するブロックの輝度分布同士が整合する位置で連結するようにしてもよい。このようにすれば、ブロック毎にバーの配列方向が異なる等してブロック毎の輝度分布を作成する過程でずれが生じている場合でも、元のバーコード記号４１の配列を復元できるように適切な連結を行うことができる。
【００４９】
また、いずれの場合も、双方のブロックでデータが重複する部分については、双方のデータを平均する、いずれか一方のデータを採用する等、適宜に調整を行う。このとき、各ブロックの端部のデータは、ブロック内で各ラインの位置合わせを行った際にデータの過不足が起こって精度が劣化していることが考えられる。そこで、端部のデータを一部（例えば画素数で５％分）除外してから、連結の処理を行うようにするとよい。ただし、ブロックに重なりを設けず、端部のデータの切り落としも行わずに各ブロックのデータを連結することも、精度を多少犠牲にすれば可能である。
【００５０】
以上の図２の処理において、ステップＳ３が第１ステップに該当し、ステップＳ４が第２ステップに該当し、ステップＳ６乃至Ｓ９が第３ステップに該当し、ステップＳ１１が第４ステップに該当し、ステップＳ１２が第５ステップに該当する。また、これらの第１乃至第５ステップの各処理においては、ＣＰＵ２１がそれぞれ第１乃至第５手段として機能する。
【００５１】
次に、図６乃至図１２を用いて、図２のステップＳ４において配置するブロックのサイズ及び配置位置の決定方法の例を説明する。
まず、図６に示すように、ステップＳ２で特定したバーコード領域の四隅の画像中の座標を、（ｘ１，ｙ１）〜（ｘ４，ｙ４）とする。１つめの成分が水平軸方向の位置を、２つめの成分が垂直軸方向の位置を、それぞれ画素数で示す。また、図７に示すように、ブロックを構成する平行四辺形のうち、画像の画素配列方向と平行な向きの辺の長さをＷ、その辺を底辺とした時の高さをＨとする。
【００５２】
すると、ブロックはバーコード領域の内部に収まるように配置するため、ブロックの高さＨは、Ｈ＜Ｙであることが必要となる。ただし、Ｙ＝ｙ４−ｙ１である。また、Ｈ≒Ｙであると、ブロックの横幅がほとんど取れないため、例えばＨ＝３／４×Ｙとするとよい。なお、ＨとＹの関係はこれに限られず、後述のようにバーコード領域の向きや形状に応じて動的に算出してもよい。
【００５３】
ここで、ブロックの横幅をなるべく広く取れるようにすることを考えると、第１ブロックは、図７の左上の頂点が（ｘ４，ｙ４）の位置に来るように配置することが好ましい。この場合、第１ブロックの左側の辺は、図８でバーコード記号４１の一番左側のバーと重なる位置に来る。また、第１ブロックの下側の辺は、図８に示す直線ｙ＝ｙ４−Ｈ上に位置する。
【００５４】
従って、第１ブロックの右端は、最大で、（ｘ１，ｙ１）と（ｘ２，ｙ２）を結ぶ直線と、上記直線ｙ＝ｙ４−Ｈとの交点まで延ばすことができる。前者の直線の式は、θ１を用いて、
ｙ＝ｔａｎθ１ｘ＋（ｙ１−ｔａｎθ１ｘ１）
と表すことができる。この交点の座標を（ｘ′，ｙ′）とすると、ブロックの底辺の長さＷの最大値Ｗｍａｘは、
Ｗｍａｘ＝ｘ′−ｘ４−Ｈｔａｎθ１
である。しかし、多少の余裕をもって、ここでは、
Ｗ＝３／４×Ｗｍａｘ＝３／４×（ｘ′−ｘ４−Ｈｔａｎθ１）
とする。
【００５５】
なお、図２のステップＳ６乃至Ｓ９の処理及びその後の連結を適切に行うためには、Ｗは少なくとも２５画素以上であることが望ましい。従って、以上により算出されたＷが２５画素未満である場合、Ｈを少しずつ小さくして、Ｗが２５画素以上になるまで再計算することが望ましい（なお、ｘ′もＨに依存することに注意）。
【００５６】
次に、あるブロックとその隣のブロックとの位置関係について考える。
図９に示すように、第ｎ＋１ブロックＢｎ＋１を、第ｎブロックＢｎよりも、ｓｋｉｐ＿ｈだけ水平軸方向へ、ｓｋｉｐ＿ｖだけ垂直軸方向へずらして配置することを考える。０°＜θ１≦４５°の場合には、ブロックは徐々に右上方向へずらして配置していくことになる。
【００５７】
ここで、バーコード記号の図で上側及び下側の辺の傾き角度はθ１であるから、第ｎブロックＢｎがバーコード領域内に収まっているとするなら、これを右方向にｓｋｉｐ＿ｈだけ移動させたとき、同時に上方向にｓｋｉｐ＿ｈ×ｔａｎθ１だけ移動させれば、移動先において、ブロックが上記上側及び下側の辺を突き抜けてバーコード領域の外にはみだすことはない（図で右側の辺を突き抜けてバーコード領域の外にはみだすことはあり得るがこれは問題ない）。
【００５８】
従って、ブロックをバーコード領域内に配置することを考えると、
ｓｋｉｐ＿ｖ＝ｓｋｉｐ＿ｈ×ｔａｎθ１・・・（式Ａ）
とすることが望ましく、ここではそのようにする。
一方、図８等からわかるように、ブロックを右へ移動させると、ブロック内には、バーコード記号４１のより右側にあるバーが含まれることになる。一方、ブロックを上へ移動させた場合も、ブロック内には、バーコード記号４１のより右側にあるバーが含まれることになる。ただし、上へ移動させた場合には、右へ移動させた場合のｔａｎθ１倍の移動量である。
【００５９】
図１０に示すように、第ｎブロックの画像データと第ｎ＋１ブロックの画像データの水平方向のずれ量は、上記のようにｓｋｉｐ＿ｈである。
隣接するブロックがバーコード記号４１中の一部重複した範囲の輝度分布を含むようにするためには、ｓｋｉｐ＿ｈ＜Ｗである必要がある。ただし、ｓｋｉｐ＿ｈが小さすぎても、バーコードの配列方向全域をカバーするために多数のブロックが必要となり、計算効率が低下する。
【００６０】
ブロックの端部においては、図２のステップＳ９で得られる輝度分布の信頼性が低いため、ある程度広い重複領域を確保することを考えると、θ１に応じてｓｋｉｐ＿ｈの値を変化させ、例えば、
ｓｋｉｐ＿ｈ＝Ｗ／２（０°≦θ１＜２５°），Ｗ／４（２５°＜θ１≦４５°）
とすることが好ましいといえる。
【００６１】
以上と同じ考え方は、θ１が０°≦θ１≦４５°以外の範囲であっても成り立つ。
例えば、−４５°≦θ１＜０°の場合、ブロックの形状は、図１１に示すようになるが、図１２に示すように考えると、図８の場合と同様、
Ｗ＝３／４×Ｗｍａｘ＝３／４×（ｘ′−ｘ４＋Ｈｔａｎθ１）
とすることができる。なお、−４５°≦θ１＜０°の範囲では、ｔａｎθ１の値がマイナスであることに伴い、Ｈｔａｎθ１の項の符号が反転している。
４５°＜｜θ１｜＜９０°の場合は、ｘとｙを入れ替えて図８又は図１２と同様な演算を行えばよい。
【００６２】
以上によりブロックを配置した後は、θ１の正負によらず同様に図２のステップＳ６以下の処理を実行することができる。なお、４５°＜｜θ１｜＜９０°の場合は、ステップＳ６で輝度分布の抽出に用いるラインが垂直方向になる（図４参照）が、このラインが画像の画素配列方向の辺と平行な向きのラインであることに変わりはない。
【００６３】
以上のような本実施形態の画像処理方法を用いることにより、バーコードがどのように傾いて撮影されても、すなわち、読み取り対象の光学的情報が撮像された画像中でどのような向きに配列されていても、高解像化が可能であり高い精度で読み取ることができる。本実施形態による読み取り精度の向上は、以下の２つの仕組みにより達成される。
【００６４】
図１３を参照して、この仕組みについて説明する。
１つ目は、バーコードが傾いていても、図１３（ａ）にＤ１で示すように常に画素配列に沿ってバーコード情報を読み取ることで、バーの配列方向Ｄ２に沿って読み取る場合に比べ、各バーの幅が実質１／ｃｏｓθ倍となる点である。従って、読み取りに用いる画素数も１／ｃｏｓθ倍になり高解像化される。ただし、θはバーコード記号の傾き角である。
【００６５】
一方、従来は、図１３（ｂ）にＤ３で示すようにバーと垂直な向きに読み取りを行うのが一般的である。この場合でも画素はＤ４に示すように水平に配置されているため、傾きがないときと比べて同じバーコード幅に対応する画素数はcosθ倍になり低解像となる。
すなわち、バーコードの傾きにかかわらず画素配列（図２のステップＳ６でいう「ライン」）に沿ってバーコード情報を読み取る本実施形態による方法が、高解像化には顕著に有利である。具体的には、常に画素配列に沿ってバーコード情報を読み取ることで、バーコードに垂直な向きに読み取りを行う場合に対して、トータルで１／ｃｏｓ2θ倍に高解像化される。
【００６６】
２つ目は、傾きのあるバーコード画像から画素配列に沿って取り出して得られる複数ラインの１次元画像が、互いに画素ピッチの非整数倍の横ずれをともなうため（図１９参照）、それらの合成により画素ピッチ以下の情報が補われ高画素化できる点である。イメージセンサの正方格子状の画素配列と同方向にバーが配列されたバーコード記号を撮影した場合は、どの行の１次元画像も同一となり画素間隔以下の情報をもちえないが、傾いたバーコード記号を撮影した場合は、画素配列に対して各バーが斜めになるため、各ラインの１次元画像を互いに補完すれば画素間隔以下の情報を有することになる。
【００６７】
本実施形態では、１つ目の点は物理的な配置により自動的に、２つ目の点は画像処理を通して、それぞれ独立かつ同時に実行されるため、撮像手段が持つ解像度よりも高い解像度で撮像を行ったかのような精度でバーコード記号を読み取ることができる。
この際、バーコード画像をブロック分割し個別に高解像化処理した後連結する方法をとっている。このため、図２０を用いて説明したような、バーコードの傾きが大きいとバーコード領域の全幅を通るような読み取りラインを引くことができないという不具合も起こらない。
【００６８】
さらに、切り出しの際のブロックの形状を平行四辺形とし、上下の辺を画素配列の水平方向にとり、他の１組の辺をバーコードの傾きに合わせているため、ブロックの切り出しによっても各ラインは両端部を含めて概ね同じ輝度分布を有することになり、高解像化処理の精度が向上する。
また、撮影環境によって生じるバーコードの幾何学的歪みに対しては、分割したブロック内では均一とみなせるため、全体の歪みを気にすることなくブロック毎に高解像化処理が可能である。
【００６９】
ここで、図２の処理を行う本実施形態の装置と、図２の処理を行わない比較例の装置とを用いてそれぞれバーコード記号の読み取りを試みた結果を示す。
まず、３．０ｍｉｌのサイズの、Ｃｏｄｅ３９規格のバーコード記号を、１３０ｍｍの距離で読み取った結果を示す。なお、レンズ１２の焦点距離が１３０ｍｍ付近であり、結像に支障はない光学系を用いた。
【００７０】
まず図１４に、第１比較例の読取結果を示す。
この第１比較例は、図１３（ａ）のＤ２及び同図（ｂ）のＤ３で示したような、撮像画像中のバーコードに対して垂直に横切る方向に読み取りラインを取り、そのライン上の輝度分布を取得してデコードを行う例である。
また、図１４には、５回の試行における読取結果を示している。一番左側の列が第１回、右側の列が第５回の読取結果である。「×」は、該当回で読み取り不能であったことを示す。
図１４からわかるように、第１比較例では、全ての条件で読み取り不能であった。これは、実験に用いた光学部１０では、第１比較例の方式で読み取りが可能な程度の解像度を有する画像が撮像できないことを示す。
【００７１】
次に図１５に、第２比較例の読取結果を示す。
この第２比較例は、図１９にＬ１及びＬ２で示したような、撮像画像中のバーコード領域の全幅を通るような複数本の読み取りライン上の輝度分布をそれぞれ取得し、それらについて超解像処理を行って得られた輝度分布に対しデコードを行う例である。
図１５も、結果の表示形式は図１４と同じであるが、「○」は読み取り成功を、「△」はデコード処理自体は成功したものの誤読であったことを示す。また、「Ｎ／Ａ」はデータなしである。
【００７２】
図１５の結果から、超解像法の処理を行うことにより、ある程度は読み取り可能な範囲が生じることがわかる。しかし、図２０を用いて説明したように、θ１の絶対値が大きい場合、バーコード領域の全幅を通るようなラインを引くことができず、超解像法の処理が行えない。このため、θ１の絶対値が２５°以上の条件では、超解像法の処理が行えないことが明らかであるため、実験を行っていない。
なお、θ１＝０°の場合、ライン間でバーの位置にずれが生じないため、超解像法を適用できないことから、この条件での実験も行っていない。
【００７３】
次に図１６に、上述した実施形態による読取結果を示す。
図１６も、結果の表示形式は図１４及び図１５と同じである。図１６からわかるように、図２の処理を適用することにより、θ１の値によらず、デコードがほぼ成功している。
図１６の結果は、第１及び第２比較例の場合と同じハードウェアを用い、画像処理の方法を変えたのみで得られている。このことから、図２の処理により、バーコード記号読取の精度を飛躍的に向上させられることがわかる。特に、画像中における光学的情報の配列方向によらず、細かい情報でも高い精度で読み取れることがわかる。これは、上述のように、撮像手段が持つ解像度よりも高い解像度で撮像を行ったかのような精度でバーコード記号を読み取ることができることに起因するものである。
【００７４】
なお、θ１＝０°，±９０°の場合のデータがないのは、ライン間でバーの位置にずれが生じないため、超解像法を適用できないためである。また、θ１＝±４５°についてデータがないのは、この条件では０画素もしくは０．５画素のずれしか生じないためである。
しかし、現実の読み取り環境を考えた場合、読取対象物とバーコード読取装置とを特殊な条件で固定しない限りは、θ１が０°、±４５°、±９０°といった特殊な角度に正確に一致することはないと考えられ、また、固定する場合でも正確にこの角度に固定する必然性は通常ないと考えられる。従って、いくつか読み取りのできない角度があることは、現実の読み取り環境においては特に障害にならないと考えられる。
【００７５】
また、図１７及び図１８に、上述した実施形態及び第１比較例の装置を用いて、種々のサイズのＣｏｄｅ３９規格のバーコード記号に対し、種々の読み取り距離で５回の読み取りを試みた場合の読み取り成功回数を示す。θ１は、２０°とした。カッコ内の数字は、デコード処理自体は成功したものの誤読であった回数を示す。図１７が実施形態の読取結果を、図１８が第１比較例の読取結果を示す。
これらの結果の比較から、図２の処理により、同じハードウェアを用いても、より細かいバーコード記号を、より幅広い読取距離で読取可能となることがわかる。
【００７６】
以上で実施形態の説明を終了するが、装置の構成や、読取対象のコード記号の種類、具体的な処理の手順等が上述の実施形態で説明したものに限られないことはもちろんである。
ブロックの配置について、第１ブロックをバーコード領域の端部の位置に配置する例について説明したが、第１ブロックが、バーコード領域の端部からバーの配列方向にはみ出していても構わない。
【００７７】
また、各ブロックが、バーコード領域をバーの長手方向にはみ出すことも必ずしも妨げられない。この場合でも、図２のステップＳ６で用いるラインがバーコード領域をバーの長手方向にはみ出していなければ、以後の処理を問題なく行うことができる。
また、各ブロックについて複数ライン分の輝度分布データを用いて超解像法を適用することは必須ではない。また、各ブロックについて個別にθ２を求めることも必須ではない。θ１の値をそのままθ２として用いることも妨げられない。
また、全てのブロックについて隣接するブロック間の位置関係が共通である必要はない。すなわち、ブロックによってｓｋｉｐ＿ｈ及びｓｋｉｐ＿ｖの値が異なることも妨げられない。ブロックのサイズについても、ブロックごとに異なることは妨げられない。
【００７８】
また、この発明を適用する光学的情報読取装置は、据え置き型の装置としても、手持ち型の装置としても、構成することができる。
また、上述した実施形態では、バーコード読取装置１００がデコード処理まで行う例について説明したが、図２のステップＳ１１までの処理を行った状態で輝度分布データを出力したり保存したりしてもよい。また、デコーダ２０を、光学部１０と独立した装置として構成することも考えられる。この場合、デコーダ２０は、入力する画像データに対して画像処理を行う画像処理装置として構成することができる。
【００７９】
また、読取対象の光学的情報は、必ずしも白バーと黒バーが交互に配列されたコード記号に限らない。中間調や、他の色のバーを含むものでもよい。あるいは、色や濃度が連続的に変化するものでも構わない。ただし、デコードされるべき情報は、１方向にのみ配列されているものである。そして、配列方向と直交する方向においては、色や濃度は一様なものである。
また、以上述べてきた構成及び変形例は、矛盾しない範囲で個別に適用したり適宜組み合わせて適用したりすることも可能である。
【産業上の利用可能性】
【００８０】
以上説明してきた光学的情報読取装置の画像処理方法及び光学的情報読取装置によれば、読取対象物上の光学的情報を、高い精度で読み取れるようにすることができる。従って、光学的情報読取装置の利便性を向上させることができる。
【符号の説明】
【００８１】
１０…光学部、１１…撮像センサ、１２…レンズ、２０…デコーダ、２１…ＣＰＵ、２２…ＲＯＭ、２３…ＲＡＭ、２４…通信Ｉ／Ｆ、３１…操作部、３２…通知部、４０…読取対象物、４１…バーコード記号、Ｂ…ブロック、Ｃ…バーコード領域、Ｄ…横ずれ、Ｌ１，Ｌ２…ライン、Ｐ…画素ピッチ
【図１】
2015102899.tif 000003
【図２】
2015102899.tif 000004
【図５】
2015102899.tif 000005
【図６】
2015102899.tif 000006
【図７】
2015102899.tif 000007
【図８】
2015102899.tif 000008
【図９】
2015102899.tif 000009
【図１０】
2015102899.tif 000010
【図１１】
2015102899.tif 000011
【図１２】
2015102899.tif 000012
【図１３】
2015102899.tif 000013
【図１４】
2015102899.tif 000014
【図１５】
2015102899.tif 000015
【図１６】
2015102899.tif 000016
【図１７】
2015102899.tif 000017
【図１８】
2015102899.tif 000018
【図１９】
2015102899.tif 000019
【図２０】
2015102899.tif 000020
【図３】
2015102899.tif 000021
【図４】
2015102899.tif 000022