(57)【特許請求の範囲】
【請求項１】
二次元に配列された複数の撮像素子により、所定の間隔時間毎に所定の露出時間で被写体を撮像する撮像装置において、
複数の撮像素子の出力値に対応する画像内での、前記露出時間中に移動する前記被写体の移動距離を、撮像素子数に換算して算出する算出手段と、
前記移動距離及び隣接する撮像素子同士の出力値の差分値を用いて、前記画像内での前記被写体を含む被写体部分から、前記被写体の静止画像を復元する復元手段とを備えることを特徴とする撮像装置。
【請求項２】
請求項１において、さらに、
第一の画像を記憶する第一の記憶手段と、
前記第一の画像の次に撮像される第二の画像を記憶する第二の記憶手段とを有し、
前記算出手段は、前記第一の画像内における被写体部分の位置と、前記第二の画像内における被写体部分の位置との差に基づいて、前記間隔時間における前記被写体の移動距離を算出し、さらに、前記間隔時間と前記露出時間との比に基づいて、前記第一の画像又は前記第二の画像内における前記被写体の前記移動距離を算出することを特徴とする撮像装置。
【請求項３】
請求項２において、
前記画像内の複数ラインを走査して、各ライン上の撮像素子の出力値の変化パターンに基づいて、前記画像内のうちの前記被写体部分を抽出する抽出手段を備えることを特徴とする撮像装置。
【請求項４】
請求項３において、
前記被写体がバーコードである場合、
前記抽出手段は、所定ラインにおいて、白色部分に対応するほぼ一定の出力値が続く第一の部分と、
出力値が所定範囲の変化率で減少し、白色部分に対応する出力値より小さい値で、出力値の増減を複数回繰り返し、また、出力値が所定範囲の変化率で上昇する第二の部分と、
再度、白色部分に対応するほぼ一定の出力値が続く第三の部分とを有する変化パターンを検索し、当該変化パターンを含む部分をバーコード部分として抽出することを特徴とする撮像装置。
【請求項５】
請求項４において、
前記被写体部分を撮像する複数の撮像素子のうちの第一の撮像素子は、バーコードの前記第一の部分のみを撮像することを特徴とする撮像装置。
【請求項６】
請求項５において、
前記復元手段は、前記第一の撮像素子の出力値を前記移動距離で除算することで、前記移動距離における一つの撮像素子幅分の出力値を求め、
前記第一の撮像素子以降の所定ライン上の各撮像素子について、前記移動距離における最初の撮像素子幅分の出力値と、各撮像素子の出力値とその直前に隣接する撮像素子の出力値との差分値との差に基づいて、最後の撮像素子幅分の出力値を求めることで、前記バーコード部分の静止画像を復元することを特徴とする撮像装置。
【請求項７】
請求項３において、
前記第一の画像及び前記第二の画像それぞれにおいて互いに対応する２つの撮像素子の出力値を比較する比較手段と、
第三の格納手段とを有し、
前記比較手段は、前記２つの撮像素子の出力値の差が所定値以上の場合、あらかじめ決められた一方の撮像素子の出力値を、ＯＮ状態の有効フラグを付して、前記第三の記憶手段に格納し、前記２つの撮像素子の出力値の差が所定値以上の場合、前記一方の撮像素子の出力値を、ＯＦＦ状態の有効フラグを付して、前記第三の記憶手段に格納し、
前記抽出手段は、ライン走査時に、有効フラグがＯＮ状態の撮像素子の出力値部分を走査することを特徴とする撮像装置。
【請求項８】
請求項３において、
前記第一の画像又は前記第二の画像いずれかにおいて、互いに隣接する２つの撮像素子の出力値を比較する比較手段と、
第三の格納手段とを有し、
前記比較手段は、前記２つの撮像素子の出力値の差が所定値以上の場合、あらかじめ決められた一方の撮像素子の出力値を、ＯＮ状態の有効フラグを付して、前記第三の記憶手段に格納し、前記２つの撮像素子の出力値の差が所定値以上の場合、前記一方の撮像素子の出力値を、ＯＦＦ状態の有効フラグを付して、前記第三の記憶手段に格納し、
前記抽出手段は、ライン走査時に、有効フラグがＯＮ状態の撮像素子の出力値部分を走査することを特徴とする撮像装置。
【請求項９】
二次元に配列された複数の撮像素子によって、所定の間隔時間毎に所定の露出時間で撮像される移動する被写体の画像に対する画像処理方法において、
複数の撮像素子の出力値に対応する画像内での、前記露出時間中に移動する前記被写体の移動距離を、撮像素子数に換算して算出するステップと、
前記移動距離及び隣接する撮像素子同士の出力値の差分値を用いて、前記画像内での前記被写体を含む被写体部分から、前記被写体の静止画像を復元するステップとを備える画像処理方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ＣＣＤのような撮像素子により移動する被写体を撮像し、移動ぶれした被写体の画像から、被写体の静止画像を復元する撮像装置に関し、特に、バーコードを読み取るバーコードスキャナに関する。
【０００２】
【従来の技術】
バーコードスキャナとして、例えば、レーザスキャナが知られている。レーザスキャナは、レーザ光でバーコードを一方向に走査する（例えば、固定されているバーコードスキャナに対してバーコードを一方向に移動させる）ことで、その反射光の強度に応じてバーコードにおける白黒の幅を検知して、バーコードを読み取る。
【０００３】
【発明が解決しようとする課題】
しかしながら、上述のように、バーコードスキャナに対して相対的にバーコードを一方向に移動させる場合、一次元バーコードを読み取ることはできるが、面として情報を有する二次元バーコードを読み取ることはできない。
【０００４】
二次元バーコードを読み取るには、例えば、二次元に配列された撮像素子を有する撮像装置により、二次元バーコードを撮像することが考えられる。しかしながら、撮像装置でバーコードを撮像する場合、バーコードを静止又はそれに近い状態で撮像する必要がある。撮像装置に含まれる個々の撮像素子は、シャッター開放時間（露出時間）に入力される光量を検知するため、バーコードが移動していると、
移動速度／シャッタ開放時間
分の移動ぶれが生じ、鮮明な画像が得られないからである。即ち、鮮明な画像が得られないと、バーコードの白黒の輪郭がぼやけてしまい、バーコードの白黒の幅を検知できないため、バーコードを読み取ることができない。この移動ぶれを抑えるためには、シャッタ開放時間を無限に短くし、外部環境をそのシャッタ開放時間に合わせた光量を有する環境にしなければならないが、非現実的である。
【０００５】
従って、本発明の目的は、移動しているバーコードを撮像し、その画像からバーコードを読み取ることができる撮像装置を提供することにある。
【０００６】
また、本発明の目的は、移動している被写体を撮像し、移動ぼけしている被写体の画像から被写体の静止画像を復元する撮像装置を提供することにある。
【０００７】
【課題を解決するための手段】
上記目的を達成するための本発明の撮像装置の構成は、二次元に配列された複数の撮像素子により、所定の間隔時間毎に所定の露出時間で被写体を撮像する撮像装置において、
複数の撮像素子の出力値に対応する画像内での、前記露出時間中に移動する前記被写体の移動距離を、撮像素子数に換算して算出する算出手段と、
前記移動距離及び隣接する撮像素子同士の出力値の差分値を用いて、前記画像内での前記被写体を含む被写体部分から、前記被写体の静止画像を復元する復元手段とを備えることを特徴とする。
【０００８】
好ましくは、撮像装置は、第一の画像を記憶する第一の記憶手段と、
前記第一の画像の次に撮像される第二の画像を記憶する第二の記憶手段とを有し、
前記算出手段は、前記第一の画像内における被写体部分の位置と、前記第二の画像内における被写体部分の位置との差に基づいて、前記間隔時間における前記被写体の移動距離を算出し、さらに、前記間隔時間と前記露出時間との比に基づいて、前記第一の画像又は前記第二の画像内における前記被写体の前記移動距離を算出する。
【０００９】
さらに好ましくは、撮像装置は、前記画像内の複数ラインを走査して、各ライン上の撮像素子の出力値の変化パターンに基づいて、前記画像内のうちの前記被写体部分を抽出する抽出手段を備える。例えば、撮像装置がバーコードスキャナであって、被写体としてバーコードを撮像する場合、前記抽出手段は、所定ラインにおいて、白色部分に対応するほぼ一定の出力値が続く第一の部分と、
出力値が所定範囲の変化率で減少し、白色部分に対応する出力値より小さい値で、出力値の増減を複数回繰り返し、また、出力値が所定範囲の変化率で上昇する第二の部分と、
再度、白色部分に対応するほぼ一定の出力値が続く第三の部分とを有する変化パターンを検索し、当該変化パターンを含む部分をバーコード部分として抽出する。
【００１０】
このとき、前記被写体部分を撮像する複数の撮像素子のうちの第一の撮像素子は、バーコードの前記第一の部分のみを撮像することが必要となる。
【００１１】
そして、前記復元手段は、前記第一の撮像素子の出力値を前記移動距離で除算することで、前記移動距離における一つの撮像素子幅分の出力値を求め、
前記第一の撮像素子以降の所定ライン上の各撮像素子について、前記移動距離における最初の撮像素子幅分の出力値と、各撮像素子の出力値とその直前に隣接する撮像素子の出力値との差分値との差に基づいて、最後の撮像素子幅分の出力値を求めることで、前記バーコード部分の静止画像を復元する。
【００１２】
【発明の実施の形態】
以下、本発明の実施の形態について説明する。しかしながら、本発明の技術的範囲が、本実施の形態に限定されるものではない。
【００１３】
図１は、本発明の実施の形態における撮像装置の構成例を示す図である。本実施の形態の撮像装置は、撮像したバーコードを読み取るバーコードスキャナを例に説明する。図１において、撮像装置１は、レンズ１１及び二次元に配置された複数の撮像素子（例えば、ＣＣＤ素子やＣＭＯＳ素子など）１２を有し、移動するバーコードを撮像する。駆動部１３は、撮像素子を駆動し、撮像素子からの画像信号を、Ａ／Ｄコンバータ１４に送る。Ａ／Ｄコンバータ１４は、アナログ画像信号をデジタル画像データに変換し、フレームメモリ１５に格納する。本実施の形態の撮像装置は、２つのフレームメモリ１５Ａ、１５Ｂを備え、所定の撮像間隔時間（例えば1/60秒毎）で撮像される画像データは、フレームメモリ１５Ａと１５Ｂに交互に格納される。画像処理手段であるＣＰＵ（演算処理装置）１６は、フレームメモリ１５Ａ、１５Ｂから画像データを読み出し、本発明に特徴的なバーコード復元処理を実行する。即ち、撮像された画像データの中からバーコードが含まれる部分を抽出し、さらに、移動ぶれによりぼやけているバーコード部分からバーコードを復元する。ＣＰＵ１６は、バーコードを復元すると、そのバーコード情報を読み取り、所定のインターフェース１７を介して、バーコード情報をホスト装置に転送する。また、ＣＰＵ１６は、正常にバーコードを復元した場合は、所定の表示装置に復元完了表示を行い、バーコードを復元できなかった場合は、エラー表示を行う。
【００１４】
まず、図２及び図３を用いて、本発明の原理について説明する。図２は、移動しているバーコードを撮像する各撮像素子の出力値を説明する図である。図２では、例として、一本のライン上に配列された複数の撮像素子（例えばＣＣＤ）によって、移動している１次元バーコードを撮像する場合の各撮像素子（以下、画素という）の出力値を模式的に説明する。また、図２において、各画素に番号を付し、移動距離を画素数換算で８画素、分解能を１．５画素／１モジュールとする。１モジュールは、バーコードの黒バー又は白バーの最小幅である。
【００１５】
撮像開始から撮像終了までの間（シャッタ開放時間中）、バーコードは、図に向かって右方向に８画素分移動する。このとき、図示されるように、バーコードの黒色部分は、画素No.1の撮像領域に入らないので、画素No.1に対して、全て白色部分が通過する。本実施の形態では、撮像領域が全て白色である領域に対応する画素の出力値をあらかじめ求めておくことが必要である。白色に対する基準値を求めるためである。
【００１６】
図２において、各番号の画素に対応する出力値のグラフが示されている。例えば、画素No.1の出力値は「８」である。このときのバーコードの移動距離は８画素であるので、画素No.1についての出力値は、出力値を移動距離で除算して、「１」となる。即ち、一画素当たりの白色に対する出力値（基準値）は「１」である。なお、一画素当たりの黒色に対する出力値は、「０（ゼロ）」である。
【００１７】
続いて、画素No.1に隣接する画素No.2の撮像領域には、０．５画素幅の黒色部分が含まれる。即ち、画素No.2の検知する白色部分は、７．５画素幅であるので、画素No.2の出力は「７．５」となる。
【００１８】
また、画素No.3の撮像領域には、１．５画素幅の黒色部分が含まれるので、画素No.3の出力値は「６．５」である。さらに、画素No.4の撮像領域についても、１．５画素幅の黒色部分が含まれるので、画素No.4の出力値も「６．５」となる。画素No.5以降の画素についても、同様に、黒色部分の含まれる画素幅に応じた出力値となる。
【００１９】
図３は、各画素の出力値からバーコードを復元する方法を説明する図である。図３においては、各画素の出力値における最初の一画素幅部分に対応する出力値ΔＡと、最後の一画素幅部分に対応する出力値ΔＢについて考える。
【００２０】
まず、画素No.1は、図２で示したように、全て白色部分を撮像しており、バーコードの８画素幅分の移動に対して、その出力値は最大値「８」であるので、最初の一画素幅部分（以下、第一画素幅という）の出力値ΔＡ１＝「１」、最後の一画素幅部分（以下、第八画素幅という）の出力値ΔＢ１＝「１」であり、さらに、その間の各一画素幅部分（第二画素幅〜第七画素幅）の出力値も「１」とみなすことができる。
【００２１】
そして、画素No.2の撮像領域は、画素No.1の撮像領域と一画素幅分ずれているだけなので、画素No.2の撮像領域中の最初の７画素（第一画素幅から第七画素幅まで）は、画素No.1の撮像領域の第二画素幅から第八画素幅と共通である。画素No.1の撮像領域の各一画素幅部分の出力値は「１」であるので、その共通部分の各一画素幅部分の出力値も「１」となる。即ち、画素No.2の最初の一画素幅部分（第一画素幅部分）の出力値ΔＡ２は「１」である。一方、画素No.1全体の出力値と画素No.2全体の出力値の差は、「８」−「７．５」＝「０．５」であり、その差は、画素No.1の撮像領域と重なっていない画素No.2の撮像領域である最後の一画素幅部分（第八画素幅部分）の出力値ΔＢ２の出力値と決定することができる。
【００２２】
続いて、画素No.3の撮像領域は、画素No.2の撮像領域と一画素幅分ずれているので、画素No.3の撮像領域中の第一画素幅部分から第七画素幅部分は、画素No.2の撮像領域の第二画素幅部分から第八画素幅部分と共通である。この共通部分の出力値は「６．５」であり、画素No.3の第一画素幅部分は、画素No.1の第三画素幅部分と同じなので、その出力値ΔＡ３は「１」となる。一方、画素No.2全体の出力値と画素No.3全体の出力値の差は、「６．５」−「６．５」＝「０」であり、その差は、画素No.2の撮像領域と共通でない画素No.3の最後の画素幅部分（第八画素幅部分）の出力値ΔＢ３の出力値と決定することができる。即ち、画素No.3の第八画素幅部分の出力値ΔＢ３＝「０」となる。
【００２３】
同様に、画素No.4、No.5、…、No.7の両端の画素幅部分第一画素幅部分と第八画素幅部分）それぞれの出力値ΔＡ、ΔＢを求めることができる。
【００２４】
さらに、画素No.8以降の画素については、以下の式により出力値ΔＡ、ΔＢを求めることができる。即ち、画素No.ｘのΔＡｘ、ΔＢｘは、それぞれ
ΔＡx＝ΔＢx-7  …（１）
ΔＢx＝No.ｘ画素全体の出力値−(画素No.x-1全体の出力値−ΔＡx-1)
＝ΔＡx-1−(画素No.X-1全体の出力値−画素No.ｘ全体の出力値)
…（２）
により表される。なお、上記（２）式は、上述した画素No.2〜No.7にも適用可能である。
【００２５】
このようにして求められる各画素の出力値ΔＢは、各画素全体の出力値から、その前の画素と共通する撮像領域部分の出力値を減算した値となる。即ち、各画素全体の出力値から、バーコードの移動により含まれる複数の画素に共通の出力値が排除されるので、各画素の出力値ΔＢは、バーコードを静止して撮像した場合における各画素の出力値に対応することとなる。このように、各画素の出力値ΔＢを求めることで、バーコードを復元することができる。
【００２６】
表１は、各画素についての全体出力値、前の画素の全体出力値との差分値、ΔＡ及びΔＢの表である。
【００２７】
【表１】
0004271378.tif 000002
【００２８】
表１において、ΔＢ＝「１」は、一画素幅分全て白色部分であって、ΔＢ＝「０」は、一画素幅分全て黒色部分であって、ΔＢ＝「０．５」は、一画素幅のうち半分が黒色部分であることを示す。
【００２９】
従って、上記表１より、撮像されたバーコードの構成は、図２又は図３に示されるように、順に１モジュール分の黒色（画素No.2、No.3のΔＢに対応）、１モジュール分の白色（画素No.4、No.5のΔＢに対応）、１モジュール分の黒色（画素No.5、No.6のΔＢに対応）、２モジュール分の白色（画素No.7、No.8、No.9のΔＢに対応）、２モジュール分の黒色（画素No.10、No.11、No.12のΔＢに対応）、２モジュール分の白色（画素No.13、No.14、No.15のΔＢに対応）、２モジュール分の黒色（画素No.16、No.17、No.18のΔＢに対応）、１モジュール分の白色（画素No.19、No.20のΔＢに対応）、１モジュール分の黒色（画素No.20、No.21のΔＢに対応）として復元される。
【００３０】
図４は、本発明の実施の形態におけるバーコード復元処理のフローチャートである。図４において、まず、フレームメモリ１５Ａ、１５Ｂに格納される画像データから、所定の方法でバーコードが含まれている部分（バーコード部分）を抽出する（Ｓ１０）。ここで、バーコード部分の抽出方法について簡単に説明する。
【００３１】
図５は、バーコード部分の抽出方法を説明する図である。例えば、図５（ａ）に示すように、撮像素子が静止しているバーコードを撮像する場合、バーコードの白黒の輪郭が明確であるので、ラインａにおけるバーコード部分の出力波形は、図５（ｂ）に示すように、理想的には、白黒の幅に合った急峻な波形になる。従って、静止画像からバーコード部分を抽出するには、所定のバーコードのパターンに対応する出力波形を見つければよい。例えば、バーコードには、白黒パターンの前後に所定幅のクワイエットゾーン（白色部分）が設けられるので、（Ａ’）一定幅以上の白色部分（前側のクワイエットゾーン）に対応する出力値（例えば、所定のしきい値以上の値）、（Ｂ’）白色部分に対応する出力値と黒色部分に対応する出力値（例えば、所定のしきい値未満の値）が所定幅にわたって交互に出力される部分、（Ｃ’）一定幅以上の白色部分（後側のクワイエットゾーン）に対応する出力値となるパターンを検索することで、バーコード部分を抽出することができる。また、この方法により、バーコードを抽出するとともに、バーコード情報を読み取ることもできる。
【００３２】
一方、シャッタ開放時間（露出時間）の間にバーコードが移動する場合、その移動ぶれのためにバーコードの白黒の輪郭がぼやけて撮像される。その場合、ラインａにおけるバーコード部分の出力波形は、図５（ｃ）に示すように、交互の黒色部分と白色部分に対応する凹凸波形が、静止画像の波形と比較して形状が不明瞭となる。従って、移動ぶれのある画像からバーコード部分を抽出するには、
（Ａ）一定幅以上の白色部分に対応する出力値が続き、
（Ｂ）その後出力値が所定範囲の変化率で減少し、白色部分に対応する出力値より小さい値で、所定幅にわたって出力値の増減（波形の凹凸）を複数回繰り返し、また、出力値が所定範囲の変化率で上昇し、
（Ｃ）一定幅以上の白色部分に対応する出力値が続く
パターンを検索することで、バーコード部分を抽出することができる。即ち、交互の白色部分と黒色部分に対応する部分を見つけるのに、出力値としきい値との比較ではなく、出力値の変化パターンで判別する。
【００３３】
図６は、バーコード部分の抽出処理の概略フローチャートである。図６において、まず、フレームメモリ１５Ａ又は１５Ｂにおける水平方向（Ｘ方向）及び垂直方向（Ｙ方向）及び所定角度（例えば±４５度）方向ラインを、所定画素数毎の間隔で走査する（Ｓ１００）。ステップＳ１００で走査されるラインを基本ラインと呼ぶ。
【００３４】
図７は、基本ラインの例を示す図である。例えば、基本ラインは、フレームメモリ１５における水平方向（Ｘ方向）及び垂直方向（Ｙ方向）及び所定角度（例えば±４５度）方向ラインに所定画素数毎の間隔で設定される。基本ラインが複数方向に設定されるのは、バーコードが必ずしも一方向で撮像されるとは限らず、任意の方向で撮像されたバーコードを検出するためである。所定角度は、４５度に限られず、また、複数の角度が設定されてもよい。
【００３５】
ある基本ラインの走査において、上記（Ａ）の条件を満たし（Ｓ１０１）、上記（Ｂ）の条件を満たし（Ｓ１０２）、さらに、上記（Ｃ）の条件を満たし（Ｓ１０３）、上記（Ａ）、（Ｂ）、（Ｃ）の条件を満たす画素数の合計が、所定画素数以上である場合（Ｓ１０４）、さらに、その基本ラインと同じ方向に対して上下に５〜１０画素の範囲のライン（近接ライン）を走査する（Ｓ１０５）。そして、基本ラインとの照合率が例えば９５％以上の（又は、上記（Ａ）、（Ｂ）、（Ｃ）の条件を満足する）ラインがある場合は、基本ライン上の画素データのうちの上記（Ａ）、（Ｂ）、（Ｃ）の条件を満たす部分、及びその部分に対応する近接ラインの画素データをバーコード部分として抽出する（Ｓ１０６）。上記ステップＳ１０１乃至Ｓ１０５において、各条件を満足しない場合は、次の基本ラインを走査し、上記処理を繰り返す。
【００３６】
このような抽出処理により、撮像された画像データ全体から、移動ぼけしているバーコード部分の画素データを抽出することができる。
【００３７】
図８は、バーコード部分の抽出を説明する図である。図８に示すように、同方向で所定距離離れている第一の走査ラインと第二の走査ラインの出力値がほぼ同一であれば、その部分の周囲をバーコード部分として抽出することができる。
【００３８】
図９は、複数のバーコード部分が存在する画像例である。図９のように、画像の中に、複数のバーコードが存在する場合、上記処理により、各バーコード部分（図におけるバーコード復元領域Ａ、Ｂ）がそれぞれ抽出され、それぞれの静止画像が復元される。
【００３９】
図４に戻って、バーコード部分を抽出すると、次に、バーコードの移動距離を検出する（Ｓ１１）。移動距離は、各画素の露出時間中に移動するバーコードの距離であって、画素数に換算されて求められる。
【００４０】
図１０は、移動距離検出方法を説明する図である。図１に示されたように、２つのフレームメモリ１５Ａ、１５Ｂには、所定の撮像間隔時間（例えば1/60秒毎）で撮像される画像データが交互に格納される。図１０（ａ）、（ｂ）は、それぞれフレームメモリ１５Ａ、１５Ｂに格納される画像データの例であって、それぞれ画像データからバーコード部分に対応する画素エリアＰ１、Ｐ２が抽出される。そして、バーコードが撮像素子に対して水平方向に移動している場合、フレームメモリ上での画素エリアＰ１とＰ２の位置は、撮像間隔時間の間におけるバーコード部分の移動距離分ずれる。
【００４１】
本実施の形態では、この撮像間隔時間に対応する画素エリアＰ１とＰ２の移動距離を、露出時間中の移動距離に換算して算出する。
【００４２】
図１１は、移動距離検出処理フローチャートである。図１１において、まず、所定時刻において、所定の露出時間（例えば、1/600秒）で撮像された画像データをフレームメモリ１５Ａに格納する（Ｓ２０１）。そして、所定時刻から撮像間隔時間（例えば、1/60秒）経過後に撮像された画像データをフレームメモリ１５Ｂに格納する（Ｓ２０２）。
【００４３】
そして、フレームメモリ１５Ａ、１５Ｂそれぞれに格納された画像データに対して、上述したバーコード部分の抽出処理により、バーコード部分を抽出する（Ｓ２０３、Ｓ２０４）。
【００４４】
抽出された２つのバーコード部分の画像データ同士を比較し、同じ画像データであることを確認する（Ｓ２０５）。具体的には、照合率が９５％以上であれば同じ画像とみなすようにしてもよい。なお、同じ画像データでない場合は、エラーとなる。
【００４５】
抽出された２つのバーコード部分が同じ画像データであることが確認されると、各バーコード部分における特定画素（例えば、バーコード部分の端部の画素）同士の座標からフレーム間移動距離を算出する（Ｓ２０６）。例えば、図１０（ｂ）に示すように、２つの特定画素の座標が、水平方向に１００画素ずれている場合、撮像間隔時間におけるバーコードの移動距離（フレーム間移動距離という）も１００画素である。
【００４６】
そして、上記フレーム間移動距離から、求めるべき露出時間中の移動距離は、撮像間隔時間と露出時間との比から、
移動距離＝フレーム間移動距離×露出時間／撮像間隔時間
により算出する（Ｓ２０７）。
【００４７】
上記式によれば、例えば、フレーム間移動距離１００画素、露出時間1/600秒、撮像間隔時間1/60秒の場合、露出時間中の移動距離は１０画素と求められる。
【００４８】
図４に戻って、露出時間中の移動距離を検出すると、次に、検出された移動距離がクワイエットゾーンの長さより短いことを確認する（Ｓ１２）。少なくとも一つの画素が、所定の露出時間中に白色部分（クワイエットゾーン）だけを撮像することが必要だからである。白色部分だけを撮像することで、以下に説明するように、バーコードを復元する上での基準値、即ち一画素幅当たりの白色の出力値を決定することができる。なお、各画素の検出された移動距離がクワイエットゾーンより長い場合は、ステップＳ１０において、クワイエットゾーンが移動距離より長くなるように、再度バーコード部分の抽出をやり直す。
【００４９】
移動距離がクワイエットゾーンより短いことを確認すると、次に、ある走査ラインにおける最初の画素（画素No.１）の出力を移動距離（移動画素数）で除算することで、一画素幅当たりの白色の出力値を算出する（Ｓ１３）。
【００５０】
移動距離がクワイエットゾーンより短いことで、図２で示したように、少なくとも画素No.１は、クワイエットゾーン（白色部分）だけを撮像する画素となる。画素No.１のどの画素幅部分の出力値も同じであるので、画素No.１の最初の画素幅部分の出力値ΔＡ１と最後の画素幅部分の出力値ΔＢ１を、算出された一画素幅当たりの白色の出力値と決定することができる。
【００５１】
画素No.２以降について、上記式（２）を利用して各画素No.ｘの最後の画素幅部分の出力値ΔＢxを算出する（Ｓ１４）。
【００５２】
抽出した部分の所定ラインについて、ステップＳ１４で求められた各画素のΔＢｘの出力値の組み合わせが、バーコードであるかどうか認識する（Ｓ１５）。バーコードであるかどうかは、例えば、あらかじめ与えられたバーコードパターンと一致するかどうかで判定する。
【００５３】
バーコードと認識できた場合は、バーコード情報の読み取り工程や、バーコード復元完了表示工程などの次工程に進む（Ｓ１６）。一方、バーコードと認識できなかった場合は、認識エラーと判定され、例えば、表示装置にエラー表示が行われる（Ｓ１７）。
【００５４】
図１２は、復元されたバーコードの画像例を示す図である。図１２（ａ）は、静止したバーコードを撮像した画像例であって、図１２（ｂ）は、露出時間中にバーコードが９画素移動した場合のバーコード部分の画像例であり、バーコード部分がぼけて、白黒部分を判別できない。そして、図１２（ｃ）は、図１２（ｂ）の画像に上記復元処理を施した画像であって、静止状態のバーコードの画像が復元されている。
【００５５】
なお、バーコードと認識できなかった場合、認識エラーと判定する前に、抽出されたバーコード部分の別のラインについて、上記バーコード復元処理を行ってもよい。また、検出された移動距離を所定範囲内で変更して、上記バーコード復元処理を行ってもよい。そして、このような処理によってもバーコードを認識できない場合に、エラー判定が行われる。
【００５６】
バーコード部分の抽出処理において、基本ラインを走査する前に、以下に説明する前処理（以下、走査ライン限定処理という）が施されてもよい。即ち、走査ライン限定処理では、基本ライン走査処理を行う前に、フレームメモリ内のバーコード部分の位置をある程度推定する。これにより、バーコード部分が存在しないと推定されるラインの走査を省略し、バーコード部分が存在する推定されるラインだけを走査することで、より迅速にバーコード部分の抽出が可能となる。
【００５７】
図１３は、走査ライン限定処理を実行する撮像装置の別の構成例を示す図である。なお、図１３において、図１と同じ要素には、同一の参照番号を付している。撮像素子１２からのアナログ画像信号は、Ａ／Ｄコンバータ１４で複数ビットのデジタル画像データに変換され、図１と同様に、フレームメモリ１５Ａ、１５Ｂに交互に格納される。データ比較部１８は、フレームメモリ１５Ａに格納される画像データと、フレームメモリ１５Ｂに格納される画像データとを各画素データ毎に比較する。
【００５８】
そして、データ比較部１８は、各フレームメモリ１５Ａ、１５Ｂの同じ座標の画素データを順に読み出し、その差分値が、所定のしきい値より大きいか否か判定する。そして、読み出したフレームメモリ１５Ａ又は１５Ｂの画素データのうちのいずれか一方を、有効フラグ（１ビット）を付加して、別のフレームメモリ１９に格納する。
【００５９】
差分値がしきい値未満の場合は、有効フラグＯＦＦ（「０」）が付加され、差分値がしきい値以上の場合は、有効フラグＯＮ（「１」）が付加される。差分値がしきい値未満の場合は、フレームメモリ１５Ａと１５Ｂ間の画素データがほぼ同じ出力値であるので、その画素データは、移動しない被写体（背景部分）に対応するデータと判定することができる。一方、差分値がしきい値以上の場合は、フレームメモリ１５Ａと１５Ｂ間の画素データの出力値は異なるので、その画素データは、バーコードを含む移動する被写体に対応するデータと判定することができる。
【００６０】
図１４は、フレームメモリ１５Ａ、１５Ｂ、１９の模式図を示す図である。図１４（ａ）、（ｂ）に示されるフレームメモリ１５Ａ、１５Ｂの斜線部分の領域が、バーコードの付された移動する被写体を撮像した画素データの領域であり、斜線部分以外の領域は、背景（移動しない被写体）とする。従って、図１４（ｃ）に示すフレームメモリ１９においては、その両方を含む領域（斜線領域）に対応する画素データの有効フラグがＯＮ（「１」）となり、それ以外の領域の画素データに対応する有効フラグはＯＦＦ（「０」）となる。なお、フレームメモリ１９に、フレームメモリ１５Ａ又は１５Ｂのどちらの画素データを格納するかは、あらかじめ設定しておく。
【００６１】
これにより、フレームメモリ１９を走査する場合、有効フラグがＯＮの画素データを含むラインを走査することで、フレームメモリにおけるバーコード部分をより迅速に見つけることができる。
【００６２】
図１５は、有効フラグ判定処理のフローチャートである。図１５において、データ比較部１８は、フレームメモリ１５Ａとフレームメモリ１５Ｂにおける最初の座標（例えば、（Ｘ１、Ｙ１））を設定する（Ｓ３００）。設定された座標に対応する各画素データをフレームメモリ１５Ａと１５Ｂから読み出し、両画素データの差分値を算出する（Ｓ３０１）。ステップＳ３０２において、差分値がしきい値以上の場合は、有効フラグＯＮを付加して、例えばフレームメモリ１５Ａの画素データをフレームメモリ１９に格納する（Ｓ３０３）。一方、差分値がしきい値未満の場合は、有効フラグＯＦＦを付加して、フレームメモリ１５Ｂの画素データをフレームメモリ１９に格納する（Ｓ３０４）。そして、最後の座標になるまで（Ｓ３０５）、次の座標を設定し（Ｓ３０６）、上記処理を繰り返す。
【００６３】
このような処理を行うことで、ＣＰＵ１６によるバーコード部分の抽出処理における基本ライン走査時に、有効フラグがＯＦＦ（「０」）の画素データについては、上記（Ａ）、（Ｂ）、（Ｃ）の条件を満足する部分があるかどうかを調べるために、各画素データ間の出力値の変化を演算する必要がなくなる。これにより、ＣＰＵ１６は、有効フラグがＯＮの画素データについてのみ、上記条件を満足するかどうかの演算を行えばよくなるので、ＣＰＵ１６による演算量が大幅に減少し、バーコード部分をより迅速に見つけることができるようになる。
【００６４】
なお、一枚のフレームメモリ１５Ａ（又は１５Ｂ）の画像データに基づいて、走査ライン限定処理が行われてもよい。但し、この場合、背景の明るさは一定であることを前提とする。本処理では、データ比較部１８は、フレームメモリ内の隣接する画素データ同士を比較する。
【００６５】
上記前提のように、移動しない背景の明るさは一定であるので、背景部分の画素データは、ほぼ同じ出力値となる。従って、隣接する画素データの差分値を計算し、所定のしきい値未満の場合、有効フラグＯＦＦ、しきい値以上の場合、有効フラグＯＮを、画素データとともに、フレームメモリ１９に格納する。これにより、上述同様に、ＣＰＵ１６の演算量を削減することができ、バーコード部分の抽出をより迅速化できる。
【００６６】
上記実施の形態では、一次元バーコードを例に説明したが、二次元バーコードにも適用可能である。本実施の形態の撮像装置により、二次元バーコードを撮像することで、移動している二次元バーコードのバーコード情報も読み出すことが可能となる。
【００６７】
さらに、上記実施の形態の撮像装置の被写体は、バーコードに限られず、任意の移動物体であってもよい。
【００６８】
また、上記実施の形態の撮像装置は、バーコードスキャナに限られず、ビデオカメラのような動画を撮影する装置であってもよい。この場合、ビデオカメラにより撮像される画像が手ぶれする場合であっても、上記実施の形態を適用することにより、手ぶれを補正することができる。
【００６９】
本発明の保護範囲は、上記の実施の形態に限定されず、特許請求の範囲に記載された発明とその均等物に及ぶものである。
【００７０】
（付記１）二次元に配列された複数の撮像素子により、所定の間隔時間毎に所定の露出時間で被写体を撮像する撮像装置において、
複数の撮像素子の出力値に対応する画像内での、前記露出時間中に移動する前記被写体の移動距離を、撮像素子数に換算して算出する算出手段と、
前記移動距離及び隣接する撮像素子同士の出力値の差分値を用いて、前記画像内での前記被写体を含む被写体部分から、前記被写体の静止画像を復元する復元手段とを備えることを特徴とする撮像装置。
【００７１】
（付記２）付記１において、さらに、
第一の画像を記憶する第一の記憶手段と、
前記第一の画像の次に撮像される第二の画像を記憶する第二の記憶手段とを有し、
前記算出手段は、前記第一の画像内における被写体部分の位置と、前記第二の画像内における被写体部分の位置との差に基づいて、前記間隔時間における前記被写体の移動距離を算出し、さらに、前記間隔時間と前記露出時間との比に基づいて、前記第一の画像又は前記第二の画像内における前記被写体の前記移動距離を算出することを特徴とする撮像装置。
【００７２】
（付記３）付記２において、
前記画像内の複数ラインを走査して、各ライン上の撮像素子の出力値の変化パターンに基づいて、前記画像内のうちの前記被写体部分を抽出する抽出手段を備えることを特徴とする撮像装置。
【００７３】
（付記４）付記３において、
前記被写体がバーコードである場合、
前記抽出手段は、所定ラインにおいて、白色部分に対応するほぼ一定の出力値が続く第一の部分と、
出力値が所定範囲の変化率で減少し、白色部分に対応する出力値より小さい値で、出力値の増減を複数回繰り返し、また、出力値が所定範囲の変化率で上昇する第二の部分と、
再度、白色部分に対応するほぼ一定の出力値が続く第三の部分とを有する変化パターンを検索し、当該変化パターンを含む部分をバーコード部分として抽出することを特徴とする撮像装置。
【００７４】
（付記５）付記４において、
前記抽出手段は、前記変化パターンを有する第一のラインと、当該第一のラインと同方向に走査され且つ前記第一のラインの変化パターンと所定の照合率以上で一致する変化パターンを有する第二のラインとを検出すると、
前記第一のラインの変化パターン部分と、前記第二のラインの変化パターン部分とを囲む部分をバーコード部分として抽出することを特徴とする撮像装置。
【００７５】
（付記６）付記４において、
前記抽出手段は、前記画像内に複数のバーコード部分が存在する場合、各バーコード部分を抽出し、
前記復元手段は、各バーコード部分の静止画像をそれぞれ復元することを特徴とする撮像装置。
【００７６】
（付記７）付記４において、
前記被写体部分を撮像する複数の撮像素子のうちの第一の撮像素子は、バーコードの前記第一の部分のみを撮像することを特徴とする撮像装置。
【００７７】
（付記８）付記７において、
前記復元手段は、前記第一の撮像素子の出力値を前記移動距離で除算することで、前記移動距離における一つの撮像素子幅分の出力値を求め、
前記第一の撮像素子以降の所定ライン上の各撮像素子について、前記移動距離における最初の撮像素子幅分の出力値と、各撮像素子の出力値とその直前に隣接する撮像素子の出力値との差分値との差に基づいて、最後の撮像素子幅分の出力値を求めることで、前記バーコード部分の静止画像を復元することを特徴とする撮像装置。
【００７８】
（付記９）付記３において、
前記第一の画像及び前記第二の画像それぞれにおいて互いに対応する２つの撮像素子の出力値を比較する比較手段と、
第三の格納手段とを有し、
前記比較手段は、前記２つの撮像素子の出力値の差が所定値以上の場合、あらかじめ決められた一方の撮像素子の出力値を、ＯＮ状態の有効フラグを付して、前記第三の記憶手段に格納し、前記２つの撮像素子の出力値の差が所定値以上の場合、前記一方の撮像素子の出力値を、ＯＦＦ状態の有効フラグを付して、前記第三の記憶手段に格納し、
前記抽出手段は、ライン走査時に、有効フラグがＯＮ状態の撮像素子の出力値部分を走査することを特徴とする撮像装置。
【００７９】
（付記１０）付記３において、
前記第一の画像又は前記第二の画像いずれかにおいて、互いに隣接する２つの撮像素子の出力値を比較する比較手段と、
第三の格納手段とを有し、
前記比較手段は、前記２つの撮像素子の出力値の差が所定値以上の場合、あらかじめ決められた一方の撮像素子の出力値を、ＯＮ状態の有効フラグを付して、前記第三の記憶手段に格納し、前記２つの撮像素子の出力値の差が所定値以上の場合、前記一方の撮像素子の出力値を、ＯＦＦ状態の有効フラグを付して、前記第三の記憶手段に格納し、
前記抽出手段は、ライン走査時に、有効フラグがＯＮ状態の撮像素子の出力値部分を走査することを特徴とする撮像装置。
【００８０】
（付記１１）二次元に配列された複数の撮像素子によって、所定の間隔時間毎に所定の露出時間で撮像される移動する被写体の画像に対する画像処理方法において、
複数の撮像素子の出力値に対応する画像内での、前記露出時間中に移動する前記被写体の移動距離を、撮像素子数に換算して算出するステップと、
前記移動距離及び隣接する撮像素子同士の出力値の差分値を用いて、前記画像内での前記被写体を含む被写体部分から、前記被写体の静止画像を復元するステップとを備える画像処理方法。
【００８１】
【発明の効果】
以上、本発明によれば、二次元配列の撮像素子により移動している被写体を撮像した場合、移動ぼけしている被写体の画像から、被写体の静止画像を復元することができる。
【００８２】
特に、移動するバーコードを撮像する場合、撮像中におけるバーコードの移動によりバーコードの画像がぼけても、バーコードの黒色部分と白色部分の輪郭が明確なバーコードの静止画像が得られるので、撮像されたバーコードからバーコード情報を読み出すことができる。
【図面の簡単な説明】
【図１】本発明の実施の形態における撮像装置の構成例を示す図である。
【図２】移動しているバーコードを撮像する各撮像素子の出力値を説明する図である。
【図３】各画素の出力値からバーコードを復元する方法を説明する図である。
【図４】本発明の実施の形態におけるバーコード復元処理のフローチャートである。
【図５】バーコード部分の抽出方法を説明する図である。
【図６】バーコード部分の抽出処理の概略フローチャートである。
【図７】基本ラインの例を示す図である。
【図８】バーコード部分の抽出を説明する図である。
【図９】複数のバーコード部分が存在する画像例である。
【図１０】移動距離検出方法を説明する図である。
【図１１】移動距離検出処理フローチャートである。
【図１２】復元されたバーコードの画像例を示す図である。
【図１３】撮像装置の別の構成例を示す図である。
【図１４】フレームメモリ１５Ａ、１５Ｂ、１９の模式図を示す図である。
【図１５】有効フラグ判定処理のフローチャートである。
【符号の説明】
１２  撮像素子
１５  フレームメモリ
１６  ＣＰＵ
１８  データ比較部
１９  フレームメモリ
【図１】
0004271378.tif 000003
【図２】
0004271378.tif 000004
【図３】
0004271378.tif 000005
【図４】
0004271378.tif 000006
【図５】
0004271378.tif 000007
【図６】
0004271378.tif 000008
【図７】
0004271378.tif 000009
【図８】
0004271378.tif 000010
【図９】
0004271378.tif 000011
【図１０】
0004271378.tif 000012
【図１１】
0004271378.tif 000013
【図１２】
0004271378.tif 000014
【図１３】
0004271378.tif 000015
【図１４】
0004271378.tif 000016
【図１５】
0004271378.tif 000017