(57)【特許請求の範囲】
【請求項１】
二次元コードに記憶されている情報を光学的に読み取り、記録されている情報を出力する光学情報読取装置において：
二次元コードの機能セルを検出する機能セル検出手段と；
二次元コードで一直線上に配置されている少なくとも３個の機能セルを結ぶ線が直線から所定範囲内に有るか否かにより湾曲歪みの有無を判定する湾曲歪み判定手段と；
湾曲歪みが有る場合に、前記一直線上に配置されている機能セルの位置関係から二次元コードの湾曲歪みに対応する曲線を求める曲線検出手段と；
湾曲歪みが水平方向に生じている場合には、垂直方向のタイミングパターンの各セルから前記曲線上に、当該タイミングパターンのセルの水平方向に位置するデータセルの位置座標を決定し、湾曲歪みが垂直方向に生じている場合には、水平方向のタイミングパターンの各セルから前記曲線上に、当該タイミングパターンのセルの垂直方向に位置するデータセルの位置座標を決定するデータセル座標決定手段と；
前記決定された位置座標での明暗状態から各データセルの明暗を決定してデコードを行うデコード手段と；を備えることを特徴とする光学情報読取装置。
【請求項２】
二次元コードに記憶されている情報を光学的に読み取り、記録されている情報を出力する光学情報読取装置において：
二次元コードの機能セルを検出する機能セル検出手段と；
二次元コードの機能セルから成る外周の各辺が、外周の各辺を結ぶ直線から所定範囲内に有るか否かにより湾曲歪みの有無を判定する湾曲歪み判定手段と；
湾曲歪みが有る場合に、直線から所定範囲内に無いと判断された辺の形状から二次元コードの湾曲歪みに対応する曲線を求める曲線検出手段と；
湾曲歪みが水平方向に生じている場合には、垂直方向のタイミングパターンの各セルから前記曲線上に、当該タイミングパターンのセルの水平方向に位置するデータセルの位置座標を決定し、湾曲歪みが垂直方向に生じている場合には、水平方向のタイミングパターンの各セルから前記曲線上に、当該タイミングパターンのセルの垂直方向に位置するデータセルの位置座標を決定するデータセル座標決定手段と；
前記決定された位置座標での明暗状態から各データセルの明暗を決定してデコードを行うデコード手段と；を備えることを特徴とする光学情報読取装置。
【請求項３】
二次元コードに記憶されている情報を光学的に読み取り、記録されている情報を出力する光学情報読取装置において：
二次元コードの機能セルを検出する機能セル検出手段と；
二次元コードで一直線上に配置されている少なくとも３個の機能セルを結ぶ線が直線から所定範囲内に有るか否かにより湾曲歪みの有無を判定する湾曲歪み判定手段と；
湾曲歪みが有る場合に、前記一直線上に配置されている機能セルの位置関係から二次元コードの湾曲歪みに対応する曲線を求める曲線検出手段と；
湾曲歪みが水平方向及び垂直方向に生じている場合に、垂直方向のタイミングパターンの各セルから前記曲線上に、当該タイミングパターンのセルの水平方向に位置するデータセルの位置座標決定、又は、水平方向のタイミングパターンの各セルから前記曲線上に、当該タイミングパターンのセルの垂直方向に位置するデータセルの位置座標決定の少なくとも一方を行うデータセル座標決定手段と；
前記決定された位置座標での明暗状態から各データセルの明暗を決定してデコードを行うデコード手段と；を備えることを特徴とする光学情報読取装置。
【請求項４】
前記湾曲歪み判定手段が、二次元コードで一直線上に配置されている少なくとも３個の前記機能セルを結ぶ曲線と、当該少なくとも３個の両端に位置する機能セルを結ぶ直線との最大距離が所定範囲内に有るか否かにより湾曲歪みの有無を判定することを特徴とする請求項１又は請求項３の光学情報読取装置。
【請求項５】
前記湾曲歪み判定手段が、二次元コードの機能セルから成る外周の各辺により構成される曲線と、当該各辺の両端のセルを結ぶ直線との最大距離が所定範囲内に有るか否かにより湾曲歪みの有無を判定することを特徴とする請求項２の光学情報読取装置。
【請求項６】
前記所定範囲が、セル幅の０．５倍であることを特徴とする請求項４又は請求項５の光学情報読取装置。
【請求項７】
前記曲線検出手段が、二次元コードで一直線上に配置されている少なくとも３個の前記機能セルを結ぶ曲線の近似式を求めることで、二次元コードの湾曲歪みに対応する曲線を求めることを特徴とする請求項１又は請求項３の光学情報読取装置。
【請求項８】
機能セル検出手段が、タイミングセルを検出する時に、タイミングセルの検出できない領域に対して、当該領域に対応するセル数で等分割することで対応することを特徴とする請求項１又は請求項２の光学情報読取装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＰＯＳ、ＯＡ、ＦＡなどの分野で、ＱＲコード（登録商標）、Data Matrix等の二次元コードを読み取りコンピュータへ自動的に情報を入力する光学情報読取装置に関するものである。
【背景技術】
【０００２】
二次元コードの読取りは、仰角・傾角（エリアセンサ面とコード面がなす角度）などでコードが歪んだ状態で画像が取込まれるのが一般的である。この歪みを補正する為に、ＱＲコードでは、コード内に一定間隔でアライメントパターンが配置されている。特許文献１に示されているようにＱＲコードの外形から推定したアライメントパターンの中心位置から実際のアライメントパターンの中心位置を検出し、このアライメントパターンで囲まれるブロックをセル数に応じて等分割して各セルの中心位置を求めていた。この方式は、図２０（Ａ）に示すＱＲコードが図２０（Ｂ）に示すように台形状に歪む線形歪みに対しては有効である。特許文献２には、マーカを撮像してＱＲコード上のマーカの形状から読取り対象面の傾き、曲面の歪みを特定する技術が記載されている。
【特許文献１】特開平１０−２０８００１号公報
【特許文献２】特開２００６−１７２０７７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかしながら、特許文献１に示されているの読み取り方法では、図２０（Ｃ）に示すような曲面歪みに対して非常に弱く、飲料缶等の直径が比較的大きな対象物に付された二次元コードには対応可能であるが、例えば、試験管等等の小径の管状物に付された二次元コードでは曲面歪みが大きくなり、読み取ることができなかった。特許文献２では、図２１のように読取り対象物が小さく、ＱＲコードにマーカが当たらないと歪みを特定することができない。またこの方法では、正確に歪み量を検出するにはマーカ形状に制約があり、さらにマーカ画像を取得し、形状を推定してからコード画像を取得する為、読み取り時間が長くなるという問題がある。
【０００４】
本発明は、上述した課題を解決するためになされたものであり、その目的とするところは、湾曲歪み大きな二次元コードを読み取ることができる光学情報読取装置を提供することにある。
【課題を解決するための手段】
【０００５】
上記目的を達成するため、請求項１の発明は、二次元コードに記憶されている情報を光学的に読み取り、記録されている情報を出力する光学情報読取装置１０において：
二次元コードの機能セルを検出する機能セル検出手段（Ｓ１４）と；
二次元コードで一直線上に配置されている少なくとも３個の機能セルを結ぶ線が直線から所定範囲内に有るか否かにより湾曲歪みの有無を判定する湾曲歪み判定手段（Ｓ２４）と；
湾曲歪みが有る場合に、前記一直線上に配置されている機能セルの位置関係から二次元コードの湾曲歪みに対応する曲線を求める曲線検出手段（Ｓ２０、Ｓ２０８、Ｓ２１４、Ｓ２１６）と；
湾曲歪みが水平方向に生じている場合には、垂直方向のタイミングパターンの各セルから前記曲線上に、当該タイミングパターンのセルの水平方向に位置するデータセルの位置座標を決定し、湾曲歪みが垂直方向に生じている場合には、水平方向のタイミングパターンの各セルから前記曲線上に、当該タイミングパターンのセルの垂直方向に位置するデータセルの位置座標を決定するデータセル座標決定手段（Ｓ３３４）と；
前記決定された位置座標での明暗状態から各データセルの明暗を決定してデコードを行うデコード手段（Ｓ３８）と；を備えることを技術的特徴とする。
【０００６】
請求項２の発明は、二次元コードに記憶されている情報を光学的に読み取り、記録されている情報を出力する光学情報読取装置１０において：
二次元コードの機能セルを検出する機能セル検出手段（Ｓ１４）と；
二次元コードの機能セルから成る外周の各辺が、外周の各辺を結ぶ直線から所定範囲内に有るか否かにより湾曲歪みの有無を判定する湾曲歪み判定手段（Ｓ２４）と；
湾曲歪みが有る場合に、直線から所定範囲内に無いと判断された辺の形状から二次元コードの湾曲歪みに対応する曲線を求める曲線検出手段（Ｓ２０、Ｓ２０８、Ｓ２１４、Ｓ２１６）と；
湾曲歪みが水平方向に生じている場合には、垂直方向のタイミングパターンの各セルから前記曲線上に、当該タイミングパターンのセルの水平方向に位置するデータセルの位置座標を決定し、湾曲歪みが垂直方向に生じている場合には、水平方向のタイミングパターンの各セルから前記曲線上に、当該タイミングパターンのセルの垂直方向に位置するデータセルの位置座標を決定するデータセル座標決定手段（Ｓ３３４）と；
前記決定された位置座標での明暗状態から各データセルの明暗を決定してデコードを行うデコード手段（Ｓ３８）と；を備えることを技術的特徴とする。
【０００７】
請求項３の発明は、二次元コードに記憶されている情報を光学的に読み取り、記録されている情報を出力する光学情報読取装置１０において：
二次元コードの機能セルを検出する機能セル検出手段（Ｓ１４）と；
二次元コードで一直線上に配置されている少なくとも３個の機能セルを結ぶ線が直線から所定範囲内に有るか否かにより湾曲歪みの有無を判定する湾曲歪み判定手段（Ｓ２４）と；
湾曲歪みが有る場合に、前記一直線上に配置されている機能セルの位置関係から二次元コードの湾曲歪みに対応する曲線を求める曲線検出手段（Ｓ２０、Ｓ２０８、Ｓ２１４、Ｓ２１６）と；
湾曲歪みが水平方向及び垂直方向に生じている場合に、垂直方向のタイミングパターンの各セルから前記曲線上に、当該タイミングパターンのセルの水平方向に位置するデータセルの位置座標決定、又は、水平方向のタイミングパターンの各セルから前記曲線上に、当該タイミングパターンのセルの垂直方向に位置するデータセルの位置座標決定の少なくとも一方を行うデータセル座標決定手段（Ｓ４０８、Ｓ４１０）と；
前記決定された位置座標での明暗状態から各データセルの明暗を決定してデコードを行うデコード手段（Ｓ３８）と；を備えることを技術的特徴とする。
【発明の効果】
【０００８】
請求項１の光学情報読取装置では、二次元コードで一直線上に配置されている少なくとも３個の機能セルを結ぶ線が直線から所定範囲内に有るか否かにより湾曲歪みの有無を判定する。一直線上に配置されている機能セルの位置が大きく直線から外れているかに基づくため、二次元コードに湾曲歪みが有るかを適切に判断することができる。
【０００９】
そして、湾曲歪みが有る場合に、一直線上に配置されている機能セルの位置関係から二次元コードの湾曲歪みを求めるため、直線上の機能セルの位置の湾曲の仕方から二次元コードの湾曲歪みを適切に求めることができる。そして、湾曲歪みが水平方向に生じている場合には、垂直方向のタイミングパターンの各セルから当該曲線上に、当該タイミングパターンのセルの水平方向に位置するデータセルの位置座標を決定し、湾曲歪みが垂直方向に生じている場合には、水平方向のタイミングパターンの各セルから当該曲線上に、当該タイミングパターンのセルの垂直方向に位置するデータセルの位置座標を決定し、決定された位置座標での明暗状態から各データセルの明暗を決定してデコードを行う。このため、湾曲歪みにより変位したデータセルの座標を求めることができ、適正にデータセルに対してデコードを行うことが可能になる。
【００１０】
請求項２の光学情報読取装置では、二次元コードの機能セルから成る外周の各辺が、外周の各辺を結ぶ直線から所定範囲内に有るか否かにより湾曲歪みの有無を判定する。直線状の外周各辺が大きく直線から外れているかに基づくため、二次元コードに湾曲歪みが有るかを適切に判断することができる。
【００１１】
そして、湾曲歪みが有る場合に、直線から所定範囲内に無いと判断された辺の形状から二次元コードの湾曲歪みに対応する曲線を求めるため、直線状の辺の湾曲の仕方から二次元コードの湾曲歪みを適切に求めることができる。そして、湾曲歪みが水平方向に生じている場合には、垂直方向のタイミングパターンの各セルから当該曲線上に、当該タイミングパターンのセルの水平方向に位置するデータセルの位置座標を決定し、湾曲歪みが垂直方向に生じている場合には、水平方向のタイミングパターンの各セルから当該曲線上に、当該タイミングパターンのセルの垂直方向に位置するデータセルの位置座標を決定し、決定された位置座標での明暗状態から各データセルの明暗を決定してデコードを行う。このため、湾曲歪みにより変位したデータセルの座標を求めることができ、適正にデータセルに対してデコードを行うことが可能になる。
【００１２】
請求項３の光学情報読取装置では、二次元コードで一直線上に配置されている少なくとも３個の機能セルを結ぶ線が直線から所定範囲内に有るか否かにより湾曲歪みの有無を判定する。一直線上に配置されている機能セルの位置が大きく直線から外れているかに基づくため、二次元コードに湾曲歪みが有るかを適切に判断することができる。湾曲歪みが有る場合に、一直線上に配置されている機能セルの位置関係から二次元コードの湾曲歪みに対応する曲線を求めるため、直線上の機能セルの位置の湾曲の仕方から二次元コードの湾曲歪みを適切に求めることができる。
【００１３】
湾曲歪みが水平方向及び垂直方向に生じている場合に、垂直方向のタイミングパターンの各セルから上記曲線上に、当該タイミングパターンのセルの水平方向に位置するデータセルの位置座標決定、又は、水平方向のタイミングパターンの各セルから上記曲線上に、当該タイミングパターンのセルの垂直方向に位置するデータセルの位置座標決定の少なくとも一方を行う。そして、決定された位置座標での明暗状態から各データセルの明暗を決定してデコードを行う。このため、湾曲歪みが水平方向及び垂直方向に生じている場合に対応することが可能となる。
【００１４】
請求項４の光学情報読取装置では、二次元コードで一直線上に配置されている少なくとも３個の機能セルを結ぶ曲線と、当該少なくとも３個の両端に位置する機能セルを結ぶ直線との最大距離が所定範囲内に有るか否かにより湾曲歪みの有無を判定する。一直線上に配置されている機能セルを結ぶ曲線と、両端に位置する機能セルを結ぶ直線との最大距離が大きいか否かに基づくため、二次元コードに湾曲歪みが有るかを適切に判断することができる。
【００１５】
請求項５の光学情報読取装置では、二次元コードの機能セルから成る外周の各辺により構成される曲線と、当該各辺の両端のセルを結ぶ直線との最大距離が所定範囲内に有るか否かにより湾曲歪みの有無を判定する。直線状の辺により構成される曲線と、辺の両端に位置する機能セルを結ぶ直線との最大距離が大きいか否かに基づくため、二次元コードに湾曲歪みが有るかを適切に判断することができる。
【００１６】
請求項６の光学情報読取装置では、二次元コードで直線上に配置されている機能セルを結ぶ曲線と、直線との最大距離がセル幅の０．５倍以上である場合に、湾曲歪み有りとして、湾曲歪みに対する湾曲補正のための処理を取る。ここで、湾曲歪みがセル幅の０．５倍未満であれば、湾曲歪みに対する湾曲補正のための処理を行わなくても、機能セルに基づき決定した座標が各データセル内に存在しているため、各データセルの明暗を決定してデコードを行うことができる。このため、湾曲歪みに対する処理の必要性を適切に判断し、必要な場合のみに湾曲補正のための処理を行うことが可能となる。
【００１７】
請求項７の光学情報読取装置では、二次元コードで一直線上に配置されている少なくとも３個の前記機能セルを結ぶ曲線の近似式を求めることで、二次元コードの湾曲歪みに対応する曲線を求める。このため、直線上に配置された機能セルの位置の湾曲具合から二次元コードの湾曲歪みを適切に求めることができる。
【００１８】
請求項８の光学情報読取装置では、タイミングセルを検出する時に、タイミングセルの検出できない領域に対して、当該領域に対応するセル数で等分割することで対応する。このため、タイミングセルの検出できない領域が発生しても、タイミングパターンの各セルから当該曲線上に、当該タイミングパターンのセルの垂直・垂直方向に位置するデータセルの位置座標を決定することができる。このため、湾曲歪みにより変位したデータセルの座標を求めることができ、適正にデータセルに対してデコードを行うことが可能になる。
【発明を実施するための最良の形態】
【００１９】
以下、本発明の光学情報読取装置の実施形態について図を参照して説明する。まず、第１実施形態に係る光学情報読取装置の回路構成を図１のブロック図を参照して説明する。
光学情報読取装置１０には、回路部２０が設けられている。回路部２０は、主に、発光ダイオード２１、集光レンズ２４、受光センサ２３、結像レンズ２７等の光学系と、メモリ３５、制御回路４０、キースイッチ５０、トリガースイッチ２２、液晶表示器４６等のマイクロコンピュータ（以下「マイコン」という）系と、から構成されている。
【００２０】
まず、光学系から説明する。発光ダイオード２１は、照明光Ｌｆを照射可能な光照射器として機能するもので、拡散レンズと凸レンズとを組み合わせた集光レンズ２４により集光させる。受光センサ２３は、読取対象物ＲやＱＲコードＱに照射されて反射した反射光Ｌｒを結像レンズ２７を介して受光可能に構成されるイメージセンサから成る。結像レンズ２７は、外部から入射する入射光を集光して受光センサ２３の受光面２３ａに像を結像可能な結像光学系として機能するもので、例えば、鏡筒とこの鏡筒内に収容される複数の集光レンズとにより構成されている。
【００２１】
次に、マイコン系の構成概要を説明する。マイコン系は、増幅回路３１、Ａ／Ｄ変換回路３３、メモリ３５、アドレス発生回路３６、同期信号発生回路３８、制御回路４０、キースイッチ５０、トリガースイッチ２２、ＬＥＤ４３、ブザー４４、液晶表示器４６、通信インタフェース４８等から構成されている。このマイコン系は、その名の通り、マイコン（情報処理装置）として機能し得る制御回路４０およびメモリ３５を中心に構成されるもので、前述した光学系によって撮像された画像信号をハードウェア的およびソフトウェア的に信号処理し得るものである。また制御回路４０は、当該光学情報読取装置１０の全体システムに関する制御も行っている。
【００２２】
光学系の受光センサ２３から出力される画像信号（アナログ信号）は、増幅回路３１に入力されることで所定ゲインで増幅された後、Ａ／Ｄ変換回路３３に入力されると、アナログ信号からディジタル信号に変換される。そして、ディジタル化された画像信号、つまり画像データは、メモリ３５に入力されて蓄積される。なお、同期信号発生回路３８は、受光センサ２３およびアドレス発生回路３６に対する同期信号を発生可能に構成されており、またアドレス発生回路３６は、この同期信号発生回路３８から供給される同期信号に基づいて、メモリ３５に格納される画像データの格納アドレスを発生可能に構成されている。
【００２３】
制御回路４０は、光学情報読取装置１０全体を制御可能なマイコンで、ＣＰＵ、システムバス、入出力インタフェース等からなるもので、メモリ３５とともに情報処理装置を構成し得るもので情報処理機能を有する。この制御回路４０には、内蔵された入出力インタフェースを介して種々の入出力装置（周辺装置）と接続可能に構成されており、本実施形態の場合、キースイッチ５０、トリガースイッチ２２、ＬＥＤ４３、ブザー４４、液晶表示器４６、通信インタフェース４８等が接続されている。制御回路４０は、二次元コードを読み取った結果を、通信インタフェース４８を介して図示しないコンピュータ側へ出力するよう構成されている。
【００２４】
引き続き、第１実施形態の光学情報読取装置１０によるＱＲコードの湾曲歪みの補正処理について説明する。この説明に先立ち、ＱＲコードの構造に関して簡単に説明する。
図２（Ａ）はＱＲコードの構成を示し、図２（Ｂ）はＱＲコードの機能パターンを示している。ＱＲコードは、図２（Ｂ）に示すように機能パターンとして、ＱＲコードの位置を検出して外形を切り出すための位置検出パターンＰＰが、４角の内の３カ所に置かれている。また、アライメントを検出するための位置合せパターンＡＰが６カ所設けられ、シンボル内のモジュール（セル）座標を決定するための明モジュール（セル）と暗モジュール（セル）との交互列から成るタイミングパターンＴＰが、位置検出パターンＰＰ間に配置されている。図２（Ａ）に示すように機能パターンを除く位置に、明モジュール（セル）、暗モジュール（セル）からなるデータセル（データモジュール）ＤＳが配置されている。なお、図中では、明瞭化のため、実際のＱＲコードよりも明モジュール（セル）の比率を暗モジュール（セル）より高くしてある。
【００２５】
図３（Ａ）は湾曲歪みの生じたＱＲコードを示し、図３（Ｂ）は湾曲歪みの生じたＱＲコードの機能パターンを示している。図中で、例えば、試験管等の小径の円筒物にＱＲコードが貼られ、大きく湾曲歪みが生じている場合を例示してある。図２０（Ｂ）を参照して上述したように線形歪みの場合、湾曲歪みでも歪みが小さい場合には、位置合わせパターンＡＰを用いて、復号ソフトウェアいより画像の座標マップを再編成することができる。しかし、図３中に示すレベルで湾曲歪みが生じると、既存の光学情報読取装置ではＱＲコードの読み取りができなくなっていた。
【００２６】
このため、第１実施形態の光学情報読取装置１０では、二次元コードの画像に湾曲歪みが有るか否かを判断し、湾曲歪みが存在する場合には、湾曲により変位したデータセルの中心座標を求める座標演算処理を行う。
【００２７】
先ず、二次元コードの画像に湾曲歪みが有るか否かを判断について図４（Ａ）を参照して説明する。図４は、図３（Ａ）に示した水平方向への湾曲歪みの生じているＱＲコードの上部を拡大して示すものである。ここで、左上の位置検出パターンＰＰの左下端のセルａと、右下端のセルｂと、右上の位置検出パターンＰＰの左下端のセルｃと、右下端のセルｄとの４点を結ぶ二次曲線ｆｘ1(ｘ）を求める。ここでは、４点から二次曲線ｆｘ1(ｘ）を求めたが、左上の位置検出パターンＰＰと右上の位置検出パターンＰＰとの中間にある位置合せパターンＡＰの中央の点を用い、５点から二次曲線ｆｘ1(ｘ）を求めることも可能である。この二次曲線ｆｘ1(ｘ）は、ＱＲコードの湾曲の度合いを表すことになる。
【００２８】
そして、左上の位置検出パターンＰＰの左下端のセルａと、右上の位置検出パターンＰＰの右下端のセルｄとの２点を結ぶ直線Ｌを求め、二次曲線ｆｘ1(ｘ）と直線Ｌとの距離の最大値Δｄを演算する。この最大値Δｄが、セル幅の１／２以上であるか否かにより、二次元コードの画像に補正処理が必要な程度の湾曲歪みが有るか否かを判断する。
【００２９】
即ち、二次元コードで直線上に配置されている機能セルを結ぶ曲線（二次曲線ｆｘ1(ｘ））と、直線Ｌとの最大距離がセル幅の０．５倍以上である場合に、湾曲歪み有りとして、湾曲歪みに対する湾曲補正のための処理を取る。ここで、湾曲歪みがセル幅の０．５倍未満であれば、湾曲歪みに対する湾曲補正のための処理を行わなくても、機能セルに基づき決定した座標が各データセル内に存在しているため、各データセルの明暗を決定してデコードを行うことができる。このため、湾曲歪みに対する処理の必要性を適切に判断し、必要な場合のみに湾曲補正のための処理を行うことが可能となる。
【００３０】
ここでは、水平方向に歪みがある場合を例に取って説明したが、湾曲歪みが有るか否かの判断は垂直方向に対しても行う。この垂直方向に湾曲歪みがあるか否かの判断は、図３（Ａ）中で、左上の位置検出パターンＰＰの右上端のセルと、右下端のセルと、左下の位置検出パターンＰＰの右上端のセルと、右下端のセルとの４点を結ぶ二次曲線を求める。そして、左上の位置検出パターンＰＰの右上端のセルと左下の位置検出パターンＰＰの右下端のセルとの２点を結ぶ直線との距離の最大値に基づき判断を行う。
【００３１】
引き続き、湾曲歪みが存在する場合の、湾曲により変位したデータセルの中心座標を求める座標演算処理について説明する。ここでは先ず、ＱＲコードをブロックに分けるための曲線を求める。即ち、図４（Ｂ）に示すように、二次曲線ｆｘ1(ｘ）を垂直方向に移動することで、左中央の位置合せパターンＡＰの中心セルｅと、中中央の位置合せパターンＡＰの中心セルｆと、右中央の位置合せパターンＡＰの中心セルｇの３点を通る二次曲線ｆｘ2(ｘ）を求める。ここで、図４（Ｃ）中に示すように、右中央の位置合せパターンＡＰのセルｇの中心点ＣＰと、二次曲線ｆｘ1(ｘ）を垂直移動させた推定点ＳＰとがずれている場合には、位置合せパターンＡＰの中心点ＣＰ側に修正を掛ける。
【００３２】
次に、図５中に示すように、二次曲線ｆｘ2(ｘ）を垂直方向にへ移動し、左下の位置検出パターンＰＰの左上端のセルｉと、右上端のセルｊと、中下の位置合せパターンＡＰの中心セルｋと、右下の位置合せパターンＡＰの中心セルｌとの４点を結ぶ二次曲線ｆｘ3(ｘ）を求める。
【００３３】
更に、二次曲線ｆｘ1(ｘ）を垂直方向に移動し、ＱＲコードの上端の二次曲線ｆｘ0(ｘ）を求める。ここでは、左上の位置検出パターンＰＰの左上端のセルｍと、右上端のセルｏと、右上の位置検出パターンＰＰの左上端のセルｑと、右上端のセルｒとの４点を結ぶ二次曲線ｆｘ0(ｘ）を求める。同様に、二次曲線ｆｘ3(ｘ）を垂直方向に移動し、ＱＲコードの下端の二次曲線ｆｘ4(ｘ）を求める。ここでは、左下の位置検出パターンＰＰの左下端のセルｎと、右下端のセルｑとを結ぶ二次曲線ｆｘ4(ｘ）を求める。
【００３４】
二次曲線は次式で表される。
【数１】
0004951735.tif 000002
【００３５】
なお、二次曲線は最小2乗法を用い次式から求めることができる。
点（ｘ１,ｙ１）、（ｘ2,ｙ2）、（ｘ3,ｙ3）・・・・・・（ｘn,ｙn）を通る2次曲線ｆ(x) = ax2 + bx + cに近似する場合
【数２】
0004951735.tif 000003
【００３６】
Eが最小になる係数a,b,cを求める。
Eをa,b,cそれぞれで偏微分して、E=0で得られる連立方程式を解けば
【数３】
0004951735.tif 000004
【００３７】
少なくとも、3点を特定すれば二次曲線は求められる。
【００３８】
次に、位置検出パターンＰＰ及び位置合せパターンＡＰから垂直方向の直線を求める。即ち、左上の位置検出パターンＰＰの左上端のセルｍと左下の位置検出パターンＰＰの左下端のセルｎとを結ぶ直線ｆｙ0（ｙ）を求める。同様に、左上の位置検出パターンＰＰの右上端のセルｏと左下の位置検出パターンＰＰの右下端のセルｐとを結ぶ直線ｆｙ1（ｙ）を求め、中上の位置合せパターンＡＰの中心セルｈと中下の位置合せパターンＡＰの中心セルｋとを結ぶ直線ｆｙ2（ｙ）を求め、右上の位置検出パターンＰＰの左上端のセルｑと右下の位置合せパターンＡＰの中心セルｌとを結ぶ直線ｆｙ3（ｙ）を求め、右上の位置検出パターンＰＰの右上端のセルｒと右下端のセルｄとを結ぶ直線ｆｙ4（ｙ）を求める。
【００３９】
直線は次式で表される。
【数４】
0004951735.tif 000005
【００４０】
図５中に示すように、二次曲線ｆｘ1(ｘ)〜ｆｘ4(ｘ)及びｆｙ0(ｙ)〜ｆｙ4(ｙ)によって、ＱＲコードをブロック領域Ａ１〜Ａ１３の１３個の領域に分割する。図６（Ｂ）は、領域Ａ４を拡大して示す。水平方向のタイミングパターンＴＰのセルの中心間隔を二次曲線ｆｘ1(ｘ）に沿って求める。ここで、タイミングパターンの存在しない左上の位置検出パターンＰＰに関しては、図６（Ａ）に示すように左端下のセルａ、左側白の幅に対応するセルｓ、３セル分の黒に対応させ黒幅を３分割したセルｔ、ｕ、ｖ、右側白の幅に対応するセルｗ、右端下のセルｂを、それぞれ、タイミングパターンのセルと同様にして求める。この求めたそれぞれの中心間隔に対応する比で、二次曲線ｆｘ1(ｘ）及び二次曲線ｆｘ2(ｘ）を分割する。二次曲線ｆｘ1(ｘ）を分割した各点（セル中央位置）ａ〜Ｐと、二次曲線ｆｘ2(ｘ）を分割した各点（セル中央位置）ａ'〜Ｐ'とを結ぶ線分を求める。
【００４１】
更に、図７（Ｂ）に示すように、垂直方向のタイミングパターンＴＰの各セルに対応するように二次曲線ｆｘ1(ｘ)をそれぞれ求め、それぞれの二次曲線ｆｘ1(ｘ）と、上述した二次曲線ｆｘ1(ｘ）の各点ａ〜Ｐと二次曲線ｆｘ2(ｘ）の各点ａ'〜Ｐ'とを結ぶ線分との交点から、各データセルの中心座標を求める。なお、垂直方向のタイミングパターンＴＰが存在しない、左上の位置検出パターンＰＰ及び左中央の位置合せパターンＡＰに関しては、図６（Ａ）を参照して上述したと同様に処理を行う。
【００４２】
ここで、タイミングパターンのセルが検出異常の場合の対応処理について、図８（Ａ）を参照して説明する。例えば、位置検出パターンＰＰの右端下のセルｂと位置合せパターンＡＰの中央のセルｈとの間のタイミングパターンＴＰで、途中のセルが暗が続き、明が検出できない箇所（図中Ｆ−Ｆ）は、位置検出パターンＰＰの右端下のセルｂ側からタイミングパターンのセルを検出すると共に、位置合せパターンＡＰの中央のセルｈ側からもタイミングパターンのセルを検出する。そして、検出されたセル幅（中心間隔）で、明が検出できない箇所（図中Ｆ−Ｆ）を等分割することで対応する。
【００４３】
第１実施形態では、タイミングセルの検出できない領域が発生しても、タイミングパターンの各セルから当該曲線上に、当該タイミングパターンのセルの垂直・垂直方向に位置するデータセルの位置座標を決定することができる。このため、湾曲歪みにより変位したデータセルの座標を求めることができ、適正にデータセルに対してデコードを行うことが可能になる。
【００４４】
図８（Ｂ）は、タイミングパターンのセルが検出異常の場合の改変例の処理を示している。セル幅（中心間隔）で、交互の明暗が検出できない領域を等分割することで対応できる。
【００４５】
上述した例では、ＱＲコードの湾曲歪みへの対応に関して説明したが、第１実施形態の光学情報読取装置１０は、種々の二次元コードに対応することができる。図１１（Ａ）はData Matrixコードの構成を示し、図１１（Ｂ）はData Matrixコードの機能パターンを示している。図１２（Ａ）は湾曲歪みの生じたData Matrixコードを示し、図１２（Ｂ）は湾曲歪みの生じたData Matrixコードの機能パターンを示している。Data Matrixコードでは、図１１（Ｂ）に示すように機能パターンとして、Data Matrixコードの位置を検出して外形を切り出すための位置検出パターンＰＰが、外周４辺の内の２辺を構成するＬ字状に置かれる。また、アライメントを検出するための位置合せパターンＡＰが十字状に設けられ、シンボル内のモジュール（セル）座標を決定するための明モジュール（セル）と暗モジュール（セル）との交互列から成るタイミングパターンＴＰが、位置検出パターンＰＰの設けられない外周の２辺、及び、十字状の位置合せパターンＡＰに沿って設けられる。図１１（Ａ）に示すように機能パターンを除く位置に、明モジュール（セル）、暗モジュール（セル）からなるデータセル（データモジュール）ＤＳが配置されている。なお、図中では、明瞭化のため、実際のData Matrixコードよりも明モジュール（セル）の比率を暗モジュール（セル）より高くしてある。
【００４６】
第１実施形態の光学情報読取装置１０では、Data Matrixコードに対して、外周４辺の内の２辺を構成するＬ字状の位置検出パターンＰＰの各辺が、隅を結ぶ直線に対して最大距離が０．５セル分以上はなれているか否かにより、湾曲歪みの補正処理が必要か否かを決定する。湾曲歪みが存在する場合の湾曲により変位したデータセルの中心座標を求める座標演算処理に関しては、図２〜図８を参照して上述したＱＲコードでの処理と同様であるため説明を省略する。
【００４７】
更に、上述した例では、垂直方向又は水平方向の一方へ湾曲歪みしている場合の対応について説明したが。第１実施形態の光学情報読取装置１０は、垂直方向及び水平方向に湾曲歪みしている場合にも対応可能である。図１３（Ａ）は水平及び垂直方向に湾曲歪みの生じたＱＲコードを示し、図１３（Ｂ）は水平及び垂直方向に湾曲歪みの生じたＱＲコードの機能パターンを示している。図１４は、水平及び垂直方向に湾曲いたＱＲコードの曲率に対応する曲線を求める処理の説明図である。
【００４８】
図７を参照して上述したように、垂直方向又は水平方向の一方へ湾曲歪みしている場合には、二次曲線ｆｘ1(ｘ)を中央の二次曲線ｆｘ2(ｘ)の位置まで、タイミングパターンのセルに沿って垂直（水平）方向へ平行移動させた。これに対して、垂直方向及び水平方向に湾曲歪みしている場合には、二次曲線ｆｘ1(ｘ)と中央の二次曲線ｆｘ2(ｘ)との間のセル数をｍとし、上半分（ｍ／２）は、上側の二次曲線ｆｘ1(ｘ)を下側へ垂直に平行移動させ、下半分（ｍ／２）は、下側二次曲線ｆｘ2(ｘ)を上側へ垂直に平行移動させる。同様に、中央の二次曲線ｆｘ2(ｘ)と二次曲線ｆｘ３(ｘ)との間のセル数をｎとし、上半分（ｍ／２）は、上側の二次曲線ｆｘ２(ｘ)を下側へ垂直に平行移動させ、下半分（ｍ／２）は、下側の二次曲線ｆｘ3(ｘ）を上側へ垂直に平行移動させる。これにより、垂直方向の湾曲歪みによる影響を小さくする。
【００４９】
引き続き、上述した湾曲歪みに対する処理を行い光学情報読取装置１０での二次元コードの読み取り処理について、図１５〜図１９のフローチャートを参照して説明する。
先ず、二次元コードの画像を取り込む（Ｓ１２）。そして、図２を参照して上述したＱＲコードに対しては、３個の位置検出パターン（切り出しシンボル）ＰＰを、図１１を参照して上述したData Matrixコードに対してはＬ字状の位置検出パターン（切り出しシンボル）ＰＰをを検出する（Ｓ１４）。ＱＲコードに対しては、２個の位置検出パターン（切り出しシンボル）ＰＰの間隔からコードセル数を求める（Ｓ１６）。ここで、Data Matrixコードに対しては、タイミングパターンＴＰからコードセル数を求める。そして、位置検出パターン（切り出しシンボル）ＰＰの４コーナの座標を求める（Ｓ２０）。
【００５０】
引き続き、図４（Ａ）を参照して上述したように、水平方向に配置された２個の位置検出パターン（切り出しシンボル）ＰＰの位置から二次曲線ｆｘ1(ｘ)を、垂直方向に配置された２個の位置検出パターン（切り出しシンボル）ＰＰの位置から二次曲線ｆｙ1(ｙ)を求める（Ｓ２０）。Data Matrixコードに対しては、Ｌ字の位置検出パターン（切り出しシンボル）ＰＰの２辺に対して、二次曲線ｆｘ1(ｘ)及び二次曲線ｆｙ1(ｙ)を求める。そして、図４（Ａ）を参照して上述した位置検出パターン（切り出しシンボル）ＰＰの両外端を結ぶ直線Ｌを求め、曲線と直線の最大距離から湾曲歪みを検出する（Ｓ２２）。続いて、最大距離がセル幅の０．５以上あるか否かにより湾曲歪みの有無を判断する（Ｓ２４）。湾曲歪みが無い場合には（Ｓ２４：Ｎｏ）、図２０（Ｂ）を参照して上述した線形歪みであるとして、線形歪み方式で各セルの中心座標を求める処理を行う（Ｓ１００）。
【００５１】
線形歪み方式で各セルの中心座標を求める処理について、当該処理のサブルーチンを示す図１６、及び、歪みの無いＱＲコードを示す図９を参照して説明する。
３個の位置検出パターン（切り出しシンボル）ＰＰの位置から６個の位置合せパターン（アライメントパターン）ＡＰを検出し（Ｓ１０２）、ＱＲコードの外形を検出し（Ｓ１０４）、図９（Ａ）に示すように１３個のブロックに分割する（Ｓ１０６）。そして、図９（Ｂ）に示すように各ブロックに対して、各ブロックの４辺をセル数で等分割して各セルの中心座標を求める（Ｓ１０８）。
【００５２】
その後、図１５のメイン処理に戻り、各セルの中心座標の諧調データから明／暗セルを決定し（Ｓ３０）、明／暗セルを所定の規則によりコードワード列に変換する（Ｓ３２）。そして、誤り訂正を行い（Ｓ３４）、誤り訂正が可能かを判断し（Ｓ３６）、誤り訂正が出来ない場合には（Ｓ３６：Ｎｏ）、Ｓ１２に戻り再度画像を取り込む。誤り訂正可能な場合には（Ｓ３６：Ｙｅｓ）、コードワード列を所定の規則により情報に復号（デコード）し、復号結果をコンピュータ側へ送信する（Ｓ３８）。
【００５３】
一方、上述したＳ２４での湾曲歪みの有無の判断で湾曲歪み有りと判断した場合（Ｓ２４：Ｙｅｓ）、湾曲歪み方式で各セルの中心座標を求める（Ｓ２００）。湾曲歪み方式で各セルの中心座標を求める処理について、当該処理のサブルーチンを示す図１７、図１８、図１９を参照して説明する。
【００５４】
上述した水平方向の二次曲線ｆｘ1(ｘ)と、垂直方向の二次曲線ｆｙ1(ｙ)のいずれが湾曲しているかに基づき、歪みが水平方向かを判断する（Ｓ２０２）。歪みが水平方向の場合（Ｓ２０２：Ｙｅｓ）、変数ｍを２とする（Ｓ２０４）。そして、図４（Ｂ）を参照して上述したように、二次曲線ｆｘ1(ｘ)を垂直方向に平行移動することで、左中央（２列目）の位置合せパターン（アライメントパターン）ＡＰと、中中央（２列目）の位置合せパターンＡＰと、右中央（２列目）の位置合せパターンＡＰとを検出する（Ｓ２０６）。そして、左中央（２列目）の位置合せパターンＡＰの中心セルｅと、中中央（２列目）の位置合せパターンＡＰの中心セルｆと、右中央（２列目）の位置合せパターンＡＰの中心セルｇの３点を通る二次曲線ｆｘ2(ｘ)を求める（Ｓ２０８）。次に、変数ｍに１を加えて３にして（Ｓ２１０）、最下段の位置合せパターン（アライメントパターン）かを判断する（Ｓ２１２）。現在、中央（２列目）の位置合せパターンＡＰの二次曲線ｆｘ2(ｘ)を求めたところであるため（Ｓ２１２：Ｎｏ）、Ｓ２０６に戻り、二次曲線ｆｘ2(ｘ)を垂直方向に平行移動することで、図５中に示す中下（３列目）の位置合せパターンＡＰと、右下（３列目）の位置合せパターンＡＰとを検出する。そして、左下の位置検出パターンＰＰの左上端のセルｉと、右上端のセルｊと、中下（３列目）の位置合せパターンＡＰの中心セルｋと、右下（３列目）の位置合せパターンＡＰの中心セルｌの４点を通る二次曲線ｆｘ3(ｘ）を求める（Ｓ２０８）。
【００５５】
そして、Ｓ２１０、Ｓ２１２：Ｙｅｓを経て、二次曲線ｆｘ1(ｘ)を平行移動させてＱＲコードの上端の二次曲線ｆｘ0(ｘ)を求め（Ｓ２１４）、二次曲線ｆｘ3(ｘ)を平行移動させてＱＲコードの下端の二次曲線ｆｘ4(ｘ)を求める（Ｓ２１６）。次に、図５、図６（Ｂ）を参照して上述したように水平方向のタイミングパターンＴＰのセルのセル中心間隔を二次曲線ｆｘ1(ｘ）上に追跡して求める（Ｓ２１８）。そして、図６（Ｂ）を参照して上述したように、水平方向のタイミングパターンＴＰのセル中心間隔比率で、二次曲線ｆｘ0(ｘ）、ｆｘ1(ｘ）、ｆｘ2(ｘ）、ｆｘ3(ｘ）、ｆｘ4(ｘ）を分割する（Ｓ２２０）。なお、タイミングパターンのセルが無い所は、図６（Ａ）を参照して上述したように、位置検出パターン（切り出しシンボル）ＰＰの比率を利用して分割する。
【００５６】
水平方向への湾曲があった際の処理に続き、垂直方向へ湾曲があった際の処理を開始する。まず、上述した水平方向の二次曲線ｆｘ1(ｘ)と、垂直方向の二次曲線ｆｙ1(ｙ)のいずれが湾曲しているかに基づき、歪みが垂直方向かを判断する（Ｓ３０２）。湾曲歪みが垂直方向の場合（Ｓ３０２：Ｙｅｓ）、変数ｎを２とする（Ｓ３０４）。そして、図１０に示すように、二次曲線ｆｙ1(ｘ)を水平方向に平行移動することで、上中央（２行目）の位置合せパターン（アライメントパターン）ＡＰと、中中央（２行目）の位置合せパターンＡＰと、下中央（２行目）の位置合せパターンＡＰとを検出する（図１８：Ｓ３０６）。引き続き、上中央（２行目）の位置合せパターンＡＰの中心セルと、中中央（２行目）の位置合せパターンＡＰの中心セルと、下中央（２行目）の位置合せパターンＡＰの中心セルの３点を通る二次曲線ｆｙ2（ｙ）を求める（Ｓ３０８）。次に、変数ｎに１を加えて３にして（Ｓ３１０）、最右端の位置合せパターン（アライメントパターン）かを判断する（Ｓ３１２）。現在、中央（２行目）の位置合せパターンＡＰの二次曲線ｆｙ2（ｙ）を求めたところであるため（Ｓ３１２：Ｎｏ）、Ｓ３０６に戻り、二次曲線ｆｙ2（ｙ）を垂直方向に平行移動することで、右上（３行目）の位置合せパターンＡＰと、右中央（３行目）の位置合せパターンＡＰとを検出する。そして、右上（３行目）の位置合せパターンＡＰの中央のセルと、右中央（３行目）の位置合せパターンＡＰの中央のセルと、右下の位置検出パターンＰＰの左上端のセルと、左下端のセルとの４点を通る二次曲線ｆｙ3（ｙ）を求める（Ｓ３０８）。
【００５７】
そして、Ｓ３１０、Ｓ３１２：Ｙｅｓを経て、二次曲線ｆｙ1（ｙ）を平行移動させてＱＲコードの左端の二次曲線ｆｙ0（ｙ）を求め（Ｓ３１４）、二次曲線ｆｙ3（ｙ）を平行移動させてＱＲコードの右端の二次曲線ｆｙ4（ｙ）を求める（Ｓ３１６）。次に、垂直方向のタイミングパターンＴＰのセルのセル中心間隔を二次曲線ｆｙ1（ｙ）上に追跡して求める（Ｓ３１８）。そして、垂直方向のタイミングパターンＴＰのセル中心間隔比率で、二次曲線ｆｙ0（ｙ）、ｆｙ1（ｙ）、ｆｙ2（ｙ）、ｆｙ3（ｙ）、ｆｙ4（ｙ）を分割する（Ｓ３２０）。
【００５８】
なお、垂直方向へ湾曲あった場合の曲線ｆｙ1(ｙ)は、単純な二次曲線には成らないが、Ｘ・Ｙ座標の置き換えにより二次曲線として等価的に表している。
【００５９】
引き続き、水平及び垂直の両方向に湾曲歪みしているか判断し（Ｓ３２２）、両方向に湾曲していない場合には（Ｓ３２２：Ｎｏ）、水平方向が湾曲歪みかを判断する（Ｓ３２４）。図５を参照して上述したように水平に湾曲している場合には（Ｓ３２４：Ｙｅｓ）、図５を参照して上述したように、各列の位置合せパターン（アライメントパターン）ＡＰの位置から直線ｆｙ0（ｙ）、ｆｙ1（ｙ）、ｆｙ2（ｙ）、ｆｙ3（ｙ）、ｆｙ4（ｙ）を求める（Ｓ３２６）。一方、図１０を参照して上述したように垂直に湾曲している場合には（Ｓ３２４：Ｎｏ）、各行の位置合せパターン（アライメントパターン）ＡＰの位置から直線ｆｘ0(ｘ）、ｆｘ1(ｘ）、ｆｘ2(ｘ）、ｆｘ3(ｘ）、ｆｘ4(ｘ）を求める（Ｓ３２８）。
【００６０】
そして、図５を参照して上述したように水平湾曲歪みの場合には、二次曲線ｆｘ0(ｘ)、ｆｘ1(ｘ)、ｆｘ2(ｘ)、ｆｘ3(ｘ)、ｆｘ4(ｘ)と直線ｆｙ0（ｙ）、ｆｙ1（ｙ）、ｆｙ2（ｙ）、ｆｙ3（ｙ）、ｆｙ4（ｙ）の交点を求め、各ブロック領域Ａ１〜Ａ１３を求める（Ｓ３３０）。一方、図１０に示すように垂直湾曲歪みの場合には、二次曲線ｆｙ0（ｙ）、ｆｙ1（ｙ）、ｆｙ2（ｙ）、ｆｙ3（ｙ）、ｆｙ4（ｙ）と直線ｆｘ0(ｘ)、ｆｘ1(ｘ)、ｆｘ2(ｘ)、ｆｘ3(ｘ)、ｆｘ4(ｘ)の交点を求め、各ブロック領域を求める。そして、図６を参照して上述したように各ブロック領域に対して、タイミングパターンのセルで分割した湾曲歪みの両辺の分割点を結ぶそれぞれの直線を求め、該当するセル数で等分割する（Ｓ３３２）。最後に、図７を参照して上述したように、各ブロック領域の分割した点を結ぶ線を水平（または垂直）方向に引き、交点を求めて各セルの中心座標とする（Ｓ３３４）。これにより、湾曲歪み方式で各セルの中心座標を求めるサブルーチンを完了し、図１５に示すメインルーチンに戻り、Ｓ３０以降で、図９を参照した上述した線形歪みの場合と同様にＱＲコードのデコード処理を行う。
【００６１】
次に、水平及び垂直の両方向に湾曲歪みしている場合（Ｓ３２２：Ｙｅｓ）の処理について説明する。変数ｎ、変数ｍを初期化し（Ｓ４０２、Ｓ４０４）、図１４に示す二次曲線ｆｘ1(ｘ)と中央の二次曲線ｆｘ2(ｘ)との間のセル数をｍとし、分割されたブロック領域の上半分（ｍ／２）は（Ｓ４０６：Ｙｅｓ）、ブロックの上辺の二次曲線ｆｘ1(ｘ)を垂直方向に求めたタイミングパターンのセルのセル間隔分を平行移動させ、水平方向をタイミングパターンのセル間隔比で分割し、各セルの中心座標を求める（Ｓ４１０）。また、分割されたブロック領域の下半分（ｍ／２）は（Ｓ４０６：Ｎｏ）、ブロックの下辺の二次曲線ｆｘ2(ｘ)を垂直方向に求めたタイミングパターンのセルのセル間隔分を平行移動させ、水平方向をタイミングパターンのセル間隔比で分割し、各セルの中心座標を求める（Ｓ４０８）。この処理をブロック領域の各タイミングパターンのセルに対して進め（Ｓ４１２、Ｓ４１４：Ｎｏ）、１のブロック領域の処理が終了すると（Ｓ４１４：Ｙｅｓ）、次のブロック領域に対して処理を行う（Ｓ４１６、Ｓ４１８：Ｎｏ）、そして、全てのブロック領域に対して処理を終了により（Ｓ４１８：Ｎｏ）、当該湾曲歪み方式で各セルの中心座標を求めるサブルーチンを完了し、図１５に示すメインルーチンに戻り、Ｓ３０以降で、図９を参照した上述した線形歪みの場合と同様にＱＲコードのデコード処理を行う。第１実施形態では、ブロック領域を上半分と下半分とに分割し、上半分をブロック領域の上辺の二次曲線を用い、下半分をブロック領域の上辺の二次曲線を用いることで、垂直方向の湾曲歪みによる影響を小さくする。
【００６２】
なお、上述した水平及び垂直の両方向に湾曲歪みしている場合の処理において、水平方向の歪みに対応するようにして対処したが、同様にして垂直方向の歪みに対応するようにすることでも実現可能である。更に、水平方向及び垂直方向の両方にそれぞれ対応させることもできる。
【００６３】
第１実施形態の光学情報読取装置１０では、ＱＲコードで一直線上に配置されている少なくとも３個の機能セルを結ぶ線が直線から所定範囲内に有るか否かにより湾曲歪みの有無を判定する（Ｓ２４）。一直線上に配置されている機能セルの位置が大きく直線から外れているかに基づくため、ＱＲコードに湾曲歪みが有るかを適切に判断することができる。
また、湾曲歪みが無い場合には、線形歪みに対する処理を行うため、通常の線形歪みに対して、読み取り速度を落とす事無くデコードを行うことができる。
【００６４】
そして、ＱＲコードが湾曲歪みが有る場合に、一直線上に配置されている機能セルの位置関係からＱＲコードの湾曲歪みに対応する曲線を求めるため（Ｓ２０、Ｓ２０６〜Ｓ２１６）、直線上の機能セルの位置の湾曲の仕方からＱＲコードの湾曲歪みを適切に求めることができる。そして、湾曲歪みが水平方向に生じている場合には（Ｓ２０２：Ｙｅｓ）、垂直方向のタイミングパターンの各セルから当該曲線上に、当該タイミングパターンのセルの水平方向に位置するデータセルの位置座標を決定する（Ｓ３３４）。湾曲歪みが垂直方向に生じている場合には（Ｓ３０２：Ｙｅｓ）、水平方向のタイミングパターンの各セルから当該曲線上に、当該タイミングパターンのセルの垂直方向に位置するデータセルの位置座標を決定する（Ｓ３３４）。そして、決定された位置座標での明暗状態から各データセルの明暗を決定してデコードを行う（Ｓ３８）。このため、湾曲歪みにより変位したデータセルの座標を求めることができ、適正にデータセルに対してデコードを行うことが可能になる。
【００６５】
第１実施形態の光学情報読取装置１０では、Data Matrixコードの位置検出パターンＰＰ（外周）の各辺が直線から所定範囲内に有るか否かにより湾曲歪みの有無を判定する（Ｓ２４）。直線状の外周各辺が大きく直線から外れているかに基づくため、Data Matrixコードに湾曲歪みが有るかを適切に判断することができる。
【００６６】
そして、Data Matrixコードが湾曲歪みが有る場合に、直線から所定範囲内に無いと判断された辺の形状からData Matrixコードの湾曲歪みに対応する曲線を求めるため（Ｓ２０、Ｓ２０６〜Ｓ２１６）、直線状の辺の湾曲の仕方からData Matrixコードの湾曲歪みを適切に求めることができる。そして、湾曲歪みが水平方向に生じている場合には（Ｓ２０２：Ｙｅｓ）、垂直方向のタイミングパターンの各セルから当該曲線上に、当該タイミングパターンのセルの水平方向に位置するデータセルの位置座標を決定する（Ｓ３３４）。湾曲歪みが垂直方向に生じている場合には（Ｓ３０２：Ｙｅｓ）、水平方向のタイミングパターンの各セルから当該曲線上に、当該タイミングパターンのセルの垂直方向に位置するデータセルの位置座標を決定（Ｓ３３４）。そして、決定された位置座標での明暗状態から各データセルの明暗を決定してデコードを行う（Ｓ３８）。このため、湾曲歪みにより変位したデータセルの座標を求めることができ、適正にデータセルに対してデコードを行うことが可能になる。
【００６７】
湾曲歪みが水平方向及び垂直方向に生じている場合に（Ｓ３２２：Ｙｅｓ）、垂直方向のタイミングパターンの各セルから上記曲線上に、当該タイミングパターンのセルの水平方向に位置するデータセルの位置座標決定を行う（Ｓ４０８、Ｓ４１０）。そして、決定された位置座標での明暗状態から各データセルの明暗を決定してデコードを行う（Ｓ３８）。このため、湾曲歪みが水平方向及び垂直方向に生じている場合にも対応することが可能となる。
【００６８】
第１実施形態の光学情報読取装置１０では、ＱＲコードで一直線上に配置されている少なくとも３個の機能セルを結ぶ曲線と、当該少なくとも３個の両端に位置する機能セルを結ぶ直線との最大距離が所定範囲内に有るか否かにより湾曲歪みの有無を判定する（Ｓ２４）。一直線上に配置されている機能セルを結ぶ曲線と、両端に位置する機能セルを結ぶ直線との最大距離が大きいか否かに基づくため、ＱＲコードに湾曲歪みが有るかを適切に判断することができる。
【００６９】
第１実施形態の光学情報読取装置１０では、Data Matrixコードの位置検出パターンＰＰ（外周）の各辺により構成される曲線と、当該各辺の両端のセルを結ぶ直線との最大距離が所定範囲内に有るか否かにより湾曲歪みの有無を判定する（Ｓ２４）。直線状の辺により構成される曲線と、辺の両端に位置する機能セルを結ぶ直線との最大距離が大きいか否かに基づくため、Data Matrixコードに湾曲歪みが有るかを適切に判断することができる。
【００７０】
第１実施形態の光学情報読取装置１０では、ＱＲコードで一直線上に配置されている少なくとも３個の前記機能セルを結ぶ曲線の近似式を求めることで、ＱＲコードの湾曲歪みに対応する曲線を求める。このため、直線上に配置された機能セルの位置の湾曲具合からＱＲコードの湾曲歪を適切に求めることができる。
【産業上の利用可能性】
【００７１】
上述した実施形態では、光学情報読取装置がＱＲコード、Data Matrixコードを読み取る場合を例示したが、本発明の光学情報読取装置は、種々の二次元コードの読み取りに適用可能である。
【図面の簡単な説明】
【００７２】
【図１】本発明の第１実施形態に係る光学情報読取装置の回路構成を示すブロック図である。
【図２】図２（Ａ）はＱＲコードの構成を示し、図２（Ｂ）はＱＲコードの機能パターンを示している。
【図３】図３（Ａ）は湾曲歪みの生じたＱＲコードを示し、図３（Ｂ）は湾曲歪みの生じたＱＲコードの機能パターンを示している。
【図４】図４（Ａ）は、湾曲の有無を判断するための処理の説明図であり、図４（Ｂ）、図４（Ｃ）は、湾曲の曲率に対応する曲線を求める処理の説明図である。
【図５】湾曲の曲率に対応する曲線を求める処理の説明図である。
【図６】湾曲の曲率に対応する曲線からデータセルの座標を求める処理の説明図である。
【図７】湾曲の曲率に対応する曲線からデータセルの座標を求める処理の説明図である。
【図８】欠落したタイミングパターンのセルを求める処理の説明図である。
【図９】湾曲歪みないＱＲコードのデータセルの座標を求める処理の説明図である。
【図１０】垂直方向に湾曲したＱＲコードの曲率に対応する曲線を求める処理の説明図である。
【図１１】図１１（Ａ）はData Matrixコードの構成を示し、図１１（Ｂ）はData Matrixコードの機能パターンを示している。
【図１２】図１２（Ａ）は湾曲歪みの生じたData Matrixコードを示し、図１２（Ｂ）は湾曲歪みの生じたData Matrixコードの機能パターンを示している。
【図１３】図１３（Ａ）は水平及び垂直方向に湾曲歪みの生じたＱＲコードを示し、図１３（Ｂ）は水平及び垂直方向に湾曲歪みの生じたＱＲコードの機能パターンを示している。
【図１４】水平及び垂直方向に湾曲したＱＲコードの曲率に対応する曲線を求める処理の説明図である。
【図１５】第１実施形態の光学情報読取装置での処理を示すフローチャートである。
【図１６】第１実施形態の光学情報読取装置での処理を示すフローチャートである。
【図１７】第１実施形態の光学情報読取装置での処理を示すフローチャートである。
【図１８】第１実施形態の光学情報読取装置での処理を示すフローチャートである。
【図１９】第１実施形態の光学情報読取装置での処理を示すフローチャートである。
【図２０】図２０（Ａ）は歪みの無いＱＲコードを、図２０（Ｂ）は線形歪みのあるＱＲコードを、図２０（Ｃ）は湾曲歪みのあるＱＲコードを示す説明図である。
【図２１】従来技術でのＱＲコードの撮像画像の説明図である。
【符号の説明】
【００７３】
１０  光学情報読取装置
４０  制御回路
４６  液晶表示器
【図１】
0004951735.tif 000006
【図２】
0004951735.tif 000007
【図３】
0004951735.tif 000008
【図４】
0004951735.tif 000009
【図５】
0004951735.tif 000010
【図６】
0004951735.tif 000011
【図７】
0004951735.tif 000012
【図８】
0004951735.tif 000013
【図９】
0004951735.tif 000014
【図１０】
0004951735.tif 000015
【図１１】
0004951735.tif 000016
【図１２】
0004951735.tif 000017
【図１３】
0004951735.tif 000018
【図１４】
0004951735.tif 000019
【図１５】
0004951735.tif 000020
【図１６】
0004951735.tif 000021
【図１７】
0004951735.tif 000022
【図１８】
0004951735.tif 000023
【図１９】
0004951735.tif 000024
【図２０】
0004951735.tif 000025
【図２１】
0004951735.tif 000026