(57)【特許請求の範囲】
【請求項１】
カメラを備え、前記カメラにより情報コードの画像を撮像し、撮像した画像に基づいて情報コードから情報を読み取る情報コード読み取り装置であって、
前記カメラで撮影した画像から、コーナーを少なくとも含む特徴点を検出する特徴点検出手段と、
前記特徴点検出手段で検出した特徴点から、特徴点を通るエッジ線ベクトルおよび特徴点の位置に基づいて、前記情報コードの角の候補となる情報コード角候補を抽出する情報コード角候補抽出手段と、
抽出した情報コード角候補の周囲の所定範囲の輝度変化に基づいて、推定セルサイズを、情報コード角候補毎に算出する角候補情報算出手段と、
前記角候補情報算出手段で算出した推定セルサイズの類似の程度に基づいて、情報コード角候補から２〜４つの候補を情報コード角として選択し、選択した情報コード角に基づいて、前記情報コードの外形となる四角形状のコード外形を推定する外形推定手段と、
その外形推定手段で推定したコード外形の内部の複数の点においてエッジ角度を決定し、決定した複数のエッジ角度に基づいて、前記情報コードの基準角度であるコード軸角度を決定するコード軸角度決定手段と、
前記外形推定手段で推定したコード外形の内部であって、且つ、互いに直交する線上での白黒変化数および白黒変化幅を算出し、算出した白黒変化数および白黒変化幅に基づいて、セルサイズを決定するセルサイズ決定手段と、
前記外形推定手段で推定したコード外形、前記コード軸角度決定手段で決定したコード軸角度、前記セルサイズ決定手段で決定したセルサイズに基づいて、情報コードのデコードを行なうデコード処理手段と、を含むことを特徴とする情報コード読み取り装置。
【請求項２】
請求項１において、
前記コード軸角度決定手段で複数のエッジに対して決定したエッジ角度に基づいて定まるエッジ角度の度数分布が、一次元コードにおけるエッジ角度の度数分布および二次元コードにおけるエッジ角度の度数分布のいずれであるかを判定することにより、前記情報コードが一次元コードか二次元コードかを判定するコード種判定手段を備え、
前記デコード処理手段は、前記コード種判定手段の判定結果に基づいて、一次元コード用のデコードアルゴリズムおよび二次元コード用のデコードアルゴリズムのいずれを先に用いるかを決定することを特徴とする情報コード読み取り装置。
【請求項３】
請求項１または２において、
前記カメラで撮影した画像から、画素情報を一定画素間隔で抽出した粗画像を作成する粗画像作成手段を備え、
前記特徴点検出手段および前記情報コード角候補抽出手段は、粗画像作成手段で作成した粗画像を用いて前記特徴点を検出するとともに、前記情報コード角候補を抽出することを特徴とする情報コード読み取り装置。
【請求項４】
請求項３において、
情報コード読み取り時におけるセルサイズを記憶するセルサイズ記憶手段を備え、
前記粗画像作成手段は、前記セルサイズ記憶手段に記憶されている前回の情報コード読み取り時におけるセルサイズに基づいて、作成する粗画像の粗さを決定することを特徴とする情報コード読み取り装置。
【請求項５】
請求項３において、
ユーザがセルサイズを入力するためのセルサイズ入力手段を備え、
前記粗画像作成手段は、前記セルサイズ入力手段に入力されたセルサイズに基づいて、作成する粗画像の粗さを決定することを特徴とする情報コード読み取り装置。
【請求項６】
請求項１〜５のいずれか１項において、
前記外形推定手段は、情報コード角候補から選択した情報コード角に基づいて推定したコード外形よりも、前記角候補情報算出手段で算出した推定セルサイズ分だけ大きい範囲を指定範囲として、前記推定セルサイズに基づいて定まる大きさの膨張フィルタをかけ、膨張フィルタをかけた後の上記指定範囲の画像を用いてコーナー検出を行なうことで、情報コードの外形を再決定することを特徴とする情報コード読み取り装置。
【請求項７】
請求項２において、
前記コード種判定手段は、前記エッジ角度の度数分布において、最大度数を中心とする所定角度範囲内の度数の割合が、予め設定した割合以上である場合に、その度数分布は一次元コードの度数分布であると判定することを特徴とする情報コード読み取り装置。
【請求項８】
請求項２において、
前記コード種判定手段は、前記コード外形を垂直走査軸方向に横切り、前記コード外形の一方の端から他方の端までのエッジ角度の度数分布と、前記コード外形を水平走査軸方向に横切り、前記コード外形の一方の端から他方の端までのエッジ角度の度数分布との一致度が一定値以下である場合に、その度数分布は一次元コードの度数分布であると判定することを特徴とする情報コード読み取り装置。
【請求項９】
カメラを備え、前記カメラにより情報コードの画像を撮像し、撮像した画像に基づいて情報コードから情報を読み取る情報コード読み取り装置であって、
前記カメラで撮影した画像から、コーナーを少なくとも含む特徴点を検出する特徴点検出手段と、
前記特徴点検出手段で検出した各特徴点に対して、それぞれ、エッジ強度およびエッジ線ベクトルの大きさのいずれか少なくとも一方である特徴情報を決定する特徴情報決定手段と、
その特徴情報に基づいて、前記特徴点検出手段が検出した特徴点から、コーナーであって、且つ、他のコーナーと距離が近接するとともに、近接するコーナーと前記特徴情報も近似するコーナー群を決定するコーナー群決定手段と、
前記コーナー群決定手段で決定したコーナー群の全体形状に基づいて情報コードの外形を推定する外形推定手段と、
その外形推定手段で推定したコード外形の内部の複数の点においてエッジ角度を決定し、決定した複数のエッジ角度に基づいて、前記情報コードの基準角度であるコード軸角度を決定するコード軸角度決定手段と、
前記外形推定手段で推定したコード外形の内部であって、且つ、互いに直交する線上での白黒変化数および白黒変化幅を算出し、算出した白黒変化数および白黒変化幅に基づいて、セルサイズを決定するセルサイズ決定手段と、
前記外形推定手段で推定したコード外形、前記コード軸角度決定手段で決定したコード軸角度と、前記セルサイズ決定手段で決定したセルサイズに基づいて、情報コードのデコードを行なうデコード処理手段と、を含むことを特徴とする情報コード読み取り装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、カメラによって情報コードを撮像して情報コードから情報を読み取る情報コード読み取り装置に関し、特に、撮像した画像における情報コードの位置を特定する技術に関する。
【背景技術】
【０００２】
カメラによって情報コードを撮像し、撮像した画像を解析することで情報コードから情報を読み取る情報コード読み取り装置が多数知られている。情報コード読み取り装置において画像を解析する場合には、処理の高速化を図るために、撮像した画像における情報コードの位置を特定し、情報コードの位置を含む画像の一部分に対してデコード処理を行なうことが多い。
【０００３】
情報コードの位置を特定する方法としては、情報コードに含まれる特徴的なパターンを画像の全体から探す方法が広く知られている。たとえば、情報コードがＱＲコード（登録商標）である場合、ＱＲコードは切り出しシンボル（ファインダパターン）を含んでいるので、まず、この切り出しシンボルを画像全体から探す処理を行なう。
【０００４】
また、特許文献１には、二次元コード画像を取り囲む包絡線を作成することで、二次元コードの位置を特定する技術が開示されている。詳しくは、特許文献１では、二次元コード画像を二値化処理し、ノイズ取りをした後、二値化処理した画像において最も外周に存在する黒セルを見つけて、順次隣接する黒セル間を接続することで、包絡線を作成している（特許文献１の段落００１６）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】２００４−３６２０５３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
特許文献１では、包絡線を作成するために、二次元コード画像の最も外周に存在する黒セルを見つけなければならないが、二次元コード画像の最も外周をどのようにして決定するかは記載されていない。実際には、二次元コードの位置を特定する前の段階で、黒色の部分がセルであるかどうかを判断することは困難である。
【０００７】
また、ＱＲコードにおけるファインダパターンなど、特徴的なパターンを画像の全体から探す方法では、汚れや鏡面反射などにより特徴的なパターンを探し出すことができなかった場合、情報コードの位置を特定することができない。従って、たとえば、鏡面反射が、ファインダパターン部分等の一部分のみであり、デコード可能な画像であっても、ファインダパターンが検出できないことによって、情報が読み取れない結果となってしまう。
【０００８】
本発明は、この事情に基づいて成されたものであり、その目的とするところは、画像内における情報コードから情報が読み取れないことが少ない情報コード読み取り装置を提供することにある。
【課題を解決するための手段】
【０００９】
その目的を達成するための請求項１記載の発明は、
（Ａ）カメラを備え、前記カメラにより情報コードの画像を撮像し、撮像した画像に基づいて情報コードから情報を読み取る情報コード読み取り装置であって、
（Ｂ）前記カメラで撮影した画像から、コーナーを少なくとも含む特徴点を検出する特徴点検出手段と、
（Ｃ）前記特徴点検出手段で検出した特徴点から、特徴点を通るエッジ線ベクトルおよび特徴点の位置に基づいて、前記情報コードの角の候補となる情報コード角候補を抽出する情報コード角候補抽出手段と、
（Ｄ）抽出した情報コード角候補の周囲の所定範囲の輝度変化に基づいて、推定セルサイズを、情報コード角候補毎に算出する角候補情報算出手段と、
（Ｅ）前記角候補情報算出手段で算出した推定セルサイズの類似の程度に基づいて、情報コード角候補から２〜４つの候補を情報コード角として選択し、選択した情報コード角に基づいて、前記情報コードの外形となる四角形状のコード外形を推定する外形推定手段と、
（Ｆ）その外形推定手段で推定したコード外形の内部の複数の点においてエッジ角度を決定し、決定した複数のエッジ角度に基づいて、前記情報コードの基準角度であるコード軸角度を決定するコード軸角度決定手段と、
（Ｇ）前記外形推定手段で推定したコード外形の内部であって、且つ、互いに直交する線上での白黒変化数および白黒変化幅を算出し、算出した白黒変化数および白黒変化幅に基づいて、セルサイズを決定するセルサイズ決定手段と、
（Ｈ）前記外形推定手段で推定したコード外形、前記コード軸角度決定手段で決定したコード軸角度、前記セルサイズ決定手段で決定したセルサイズに基づいて、情報コードのデコードを行なうデコード処理手段と、を含むことを特徴とする。
【００１０】
本発明では、情報コードの位置を特定するために、情報コード角候補抽出手段において、情報コードの角の候補（情報コード角候補）を抽出している。この情報コード角候補を抽出するために、カメラで撮像した画像から特徴点を検出する。そして、この特徴点を通るエッジ線ベクトルおよび特徴点の位置に基づいて情報コード角候補を抽出している。
【００１１】
画像から検出できる特徴点には、情報コードの外形を規定する角のみならず、情報コード内のセルによって形成される角や、角以外の部位も含まれる。しかし、情報コード角候補抽出手段では、エッジ線ベクトルおよび特徴点の位置に基づいて特徴点から情報コード角候補を抽出しているので、角以外の部位や、情報コード内の角は抽出されにくい。したがって、情報コード角候補は、ある程度の数に絞られることになる。
【００１２】
しかし、撮像範囲内に情報コード以外にも角形状を有する他の図形（文字など）が存在すれば、その図形上の角も、情報コード角候補として抽出される可能性がある。そこで、さらに、情報コード角候補の周囲の輝度変化に基づいて、情報コード角候補毎に推定セルサイズを算出する。情報コード角候補のうち、本当の情報コード角については、その周囲の輝度変化は、情報コードのセルサイズを反映している。一方、情報コード角候補として抽出されたが、実際には情報コード角ではない候補（たとえば、上述の図形の角など）については、その周囲の輝度変化は、情報コードのセルサイズを反映しているわけではないので、実際の情報コード角とは大きく異なる。したがって、情報コード角候補の周囲の輝度変化に基づいて算出する推定セルサイズは、情報コード角である場合と、そうでない場合とで大きく異なる。換言すれば、情報コード角候補のうち、同じ情報コードの外形を規定する角であるものについては、推定セルサイズは互いに類似する。そこで、外形推定手段では、推定セルサイズの類似の程度に基づいて、情報コード角候補から２〜４つの候補を情報コード角として選択する。そして、これをもとに情報コードの外形となる四角形状のコード外形を推定する。このように、本発明では、ファインダパターンなどの特徴パターンを検出することなく、コード外形を推定していることから、特徴パターンが検出できない画像であっても、コード外形を推定することができる。しかも、情報コード角を必ず４つ用いるのではなく、２つや３つの情報コード角であっても、それらからコード外形を推定する。これらのことにより、従来よりも、コード外形を決定できない場合が少なくなる。
【００１３】
さらに、コード軸角度およびセルサイズも、特徴パターンを利用せずに決定する。すなわち、コード軸角度は、コード外形の内部の複数の点においてエッジ角度を決定し、決定した複数のエッジ角度をもとにして決定している。また、セルサイズも、コード外形の内部の互いに直交する線上での白黒変化数および白黒変化幅に基づいて決定している。デコード処理手段では、このようにして決定したコード外形、コード軸角度、セルサイズに基づいてデコード処理を行なう。よって、特徴パターンの検出ができない画像であってもデコード処理が可能となるので、情報コードが読み取れないことが少なくなる。
【００１４】
請求項２記載の発明では、前記コード軸角度決定手段で複数のエッジに対して決定したエッジ角度に基づいて定まるエッジ角度の度数分布が、一次元コードにおけるエッジ角度の度数分布および二次元コードにおけるエッジ角度の度数分布のいずれであるかを判定することにより、前記情報コードが一次元コードか二次元コードかを判定するコード種判定手段を備え、
前記デコード処理手段は、前記コード種判定手段の判定結果に基づいて、一次元コード用のデコードアルゴリズムおよび二次元コード用のデコードアルゴリズムのいずれを先に用いるかを決定することを特徴とする。
【００１５】
一次元コードは、線が平行に一方向に並んでいるだけであるので、一次元コードにおけるエッジ角度の度数分布はある一つの角度範囲に度数が集中する。それに対して、二次元コードは、縦方向および横方向の２方向にセルが配置されていることから、二次元コードにおけるエッジ角度の度数分布は、度数が集中する角度範囲が少なくとも２つ存在する。従って、エッジ角度の度数分布を用いることで、コード種を判定することができる。この判定したコード種に基づいて、一次元コード用のデコードアルゴリズムおよび二次元コード用のデコードアルゴリズムのいずれを先に用いるかを決定するので、デコードを高速に行なうことができる。
【００１６】
請求項３記載の発明では、前記カメラで撮影した画像から、画素情報を一定画素間隔で抽出した粗画像を作成する粗画像作成手段を備え、
前記特徴点検出手段および前記情報コード角候補抽出手段は、粗画像作成手段で作成した粗画像を用いて前記特徴点を検出するとともに、前記情報コード角候補を抽出することを特徴とする。
【００１７】
このように粗画像を用いて特徴点の検出を行うと、情報コードの内部の小さな特徴点など、不要な特徴点が検出されにくくなることから、情報コード角候補に含まれる不要な候補が少なくなる。その結果、情報コード角の選択が容易になる。
【００１８】
上記請求項３記載の発明において、粗画像の粗さは、請求項４、５のようにして決定することができる。請求項４では、情報コード読み取り時におけるセルサイズを記憶するセルサイズ記憶手段を備え、前記粗画像作成手段は、前記セルサイズ記憶手段に記憶されている前回の情報コード読み取り時におけるセルサイズに基づいて、作成する粗画像の粗さを決定する。請求項５では、ユーザがセルサイズを入力するためのセルサイズ入力手段を備え、前記粗画像作成手段は、前記セルサイズ入力手段に入力されたセルサイズに基づいて、作成する粗画像の粗さを決定する。
【００１９】
請求項６記載の発明では、前記外形推定手段は、情報コード角候補から選択した情報コード角に基づいて推定したコード外形よりも、前記角候補情報算出手段で算出した推定セルサイズ分だけ大きい範囲を指定範囲として、前記推定セルサイズに基づいて定まる大きさの膨張フィルタをかけ、膨張フィルタをかけた後の上記指定範囲の画像を用いてコーナー検出を行なうことで、情報コードの外形を再決定することを特徴とする。
【００２０】
このように、膨張フィルタをかけることにより、情報コード内は、原画像よりも塗りつぶされた状態に近い画像となり、情報コード内の小さなコーナーが減少する。この膨張フィルタをかけた後の画像を用いてコーナー検出を行うことから、情報コードの内の小さなコーナーが検出されにくくなり、精度良く、情報コードの外形を規定する４つのコーナーを検出することができ、ひいては、情報コードの読取精度が向上する。
【００２１】
前述のコード種判定手段は、たとえば、請求項７、８のようにして、一次元コードにおけるエッジ角度の度数分布および二次元コードにおけるエッジ角度の度数分布のいずれであるかを判定する。請求項７では、前記コード種判定手段は、前記エッジ角度の度数分布において、最大度数を中心とする所定角度範囲内の度数の割合が、予め設定した割合以上である場合に、その度数分布は一次元コードの度数分布であると判定する。また、請求項８では、前記コード種判定手段は、前記コード外形を垂直走査軸方向に横切り、前記コード外形の一方の端から他方の端までのエッジ角度の度数分布と、前記コード外形を水平走査軸方向に横切り、前記コード外形の一方の端から他方の端までのエッジ角度の度数分布との一致度が一定値以下である場合に、その度数分布は一次元コードの度数分布であると判定する。
【００２２】
また、前記目的は、請求項９記載の発明でも達成することができる。その請求項９記載の発明は、
（Ａ）カメラを備え、前記カメラにより情報コードの画像を撮像し、撮像した画像に基づいて情報コードから情報を読み取る情報コード読み取り装置であって、
（Ｂ）前記カメラで撮影した画像から、コーナーを少なくとも含む特徴点を検出する特徴点検出手段と、
（Ｃ）前記特徴点検出手段で検出した各特徴点に対して、それぞれ、エッジ強度およびエッジ線ベクトルの大きさのいずれか少なくとも一方である特徴情報を決定する特徴情報決定手段と、
（Ｄ）その特徴情報に基づいて、前記特徴点検出手段が検出した特徴点から、コーナーであって、且つ、他のコーナーと距離が近接するとともに、近接するコーナーと前記特徴情報も近似するコーナー群を決定するコーナー群決定手段と、
（Ｅ）前記コーナー群決定手段で決定したコーナー群の全体形状に基づいて情報コードの外形を推定する外形推定手段と、
（Ｆ）その外形推定手段で推定したコード外形の内部の複数の点においてエッジ角度を決定し、決定した複数のエッジ角度に基づいて、前記情報コードの基準角度であるコード軸角度を決定するコード軸角度決定手段と、
（Ｇ）前記外形推定手段で推定したコード外形の内部であって、且つ、互いに直交する線上での白黒変化数および白黒変化幅を算出し、算出した白黒変化数および白黒変化幅に基づいて、セルサイズを決定するセルサイズ決定手段と、
（Ｈ）前記外形推定手段で推定したコード外形、前記コード軸角度決定手段で決定したコード軸角度と、前記セルサイズ決定手段で決定したセルサイズに基づいて、情報コードのデコードを行なうデコード処理手段と、を含むことを特徴とする。
【００２３】
この請求項９に係る発明でも、カメラで撮影した画像から、コーナーを少なくとも含む特徴点を検出しており、且つ、各特徴点に対して、エッジ強度およびエッジ線ベクトルの大きさのいずれか少なくとも一方である特徴情報を決定している。さらに、コーナー群決定手段では、特徴点から、コーナーであって、且つ、他のコーナーと距離が近接するとともに、近接するコーナーと前記特徴情報も近似するコーナー群を決定している。同じ二次元コードに属しているコーナーであれば、特徴情報が互いに近似した値になり、且つ、他のコーナーとの距離も近い。したがって、コーナー群決定手段が決定したコーナー群は、二次元コードに含まれるコーナーの群であると考えることができる。そこで、外形推定手段では、コーナー群の全体形状に基づいて情報コードの外形を推定する。このように、本発明でも、ファインダパターンなどの特徴パターンを検出することなく、コード外形を推定していることから、特徴パターンが検出できないような画像であっても、コード外形を推定することができる。
【００２４】
さらに、コード軸角度およびセルサイズも、特徴パターンを利用せずに決定する。すなわち、コード軸角度は、コード外形の内部の複数の点においてエッジ角度を決定し、決定した複数のエッジ角度をもとにコード軸角度を決定している。また、セルサイズも、コード外形の内部の互いに直交する線上での白黒変化数および白黒変化幅に基づいて決定している。デコード処理手段では、このようにして決定したコード外形、コード軸角度、セルサイズに基づいてデコード処理を行なう。よって、特徴パターンの検出ができなくてもデコード処理が可能となるので、情報コードが読み取れないことが少なくなる。
【図面の簡単な説明】
【００２５】
【図１】本発明の実施形態に係る情報コード読み取り装置１０のハウジング１１等の構成概要を示す部分縦断面図である。
【図２】実施形態に係る光学情報読取装置１０の回路部２０の構成概要を示すブロック図である。
【図３】マーカ光投射器６０の構成を示す説明図である。
【図４】第１実施形態において、制御回路４０が実行する情報読み取り処理を示すフローチャートである。
【図５】エリアセンサ２３が取り込んだ画像の一例を示す図である。
【図６】エッジ角度の算出式を説明する図である。
【図７】（Ａ）はエッジ角度のヒストグラムの一例であり、（Ｂ）は、（Ａ）のヒストグラムを作成した二次元コード画像である。
【図８】第１実施形態の変形例２において、制御回路４０が実行する情報読み取り処理を示すフローチャートである。
【図９】（Ａ）は膨張フィルタ処理をする前の原画像、（Ｂ）は膨張フィルタ処理をした後の画像である。
【図１０】第２実施形態において、制御回路４０が実行する情報読み取り処理を示すフローチャートである。
【発明を実施するための形態】
【００２６】
（第１実施形態）
以下、本発明の実施形態を図面に基づいて説明する。図１は、本発明が適用された情報コード読み取り装置１０の構成概要を示す図である。
【００２７】
図１に示すように、情報コード読み取り装置１０は、丸みを帯びた薄型のほぼ矩形箱状なすハウジング本体１１と、このハウジング本体１１の下面ほぼ中央後端寄りにハウジング本体１１に一体に形成されるグリップ部１２と、からなるガンタイプのハウジングを備えている。このグリップ部１２は、作業者が片手で把持可能な程度の外径に設定されており、当該グリップ部１２を握った作業者の人差し指が当接する部位に、後述する照明光Ｌｆやマーカ光Ｍ１の出射を指示するトリガースイッチ１４が設けられている。
【００２８】
ハウジング本体１１の内部には、後述する回路部２０が収容されており、またハウジング本体１１の先端部には、照明光Ｌｆを出射可能、且つ、反射光Ｌｒが入射可能な読取口１１ａが形成されている。ハウジング本体１１内の読取口１１ａの付近には、マーカ光Ｍ１を投射するマーカ光投射器６０が配置されている。また、図１には図示しないが、ハウジング本体１１内の読取口１１ａの付近には、照明光Ｌｆを照射する発光ダイオード２１（図２参照）も配置されている。なお、図１には、回路部２０を構成するプリント配線板１５、１６や、このプリント配線板１６に実装されるエリアセンサ２３、結像レンズ２７等も図示されている。
【００２９】
図２に示すように、回路部２０は、主に、マーカ光投射器６０、発光ダイオード２１、エリアセンサ２３、結像レンズ２７等の光学系と、メモリ３５、制御回路４０、操作スイッチ４２等のマイクロコンピュータ（以下「マイコン」という）系と、電源スイッチ４１、電池４９等の電源系と、から構成されており、前述したプリント配線板１５、１６に実装あるいはハウジング本体１１内に内装されている。
【００３０】
光学系は、前述のように、マーカ光投射器６０、発光ダイオード２１、エリアセンサ２３、結像レンズ２７等から構成されている。発光ダイオード２１は、ハウジング本体１１の読取口１１ａを介して読み取り面Ｒに向けて照明光Ｌｆを照射可能に構成されている。なお、図２には、便宜上、発光ダイオード２１を１つしか示していないが、発光ダイオード２１は適宜複数備えられる。発光ダイオード２１により照明される読み取り面Ｒには、一次元コードや二次元コードなどの情報コードＤが記録されている。なお、記録形態としては、印刷、刻印等がある。
【００３１】
エリアセンサ２３は、読み取り面Ｒに照射されて反射した反射光Ｌｒを受光可能に構成されるもので、例えば、Ｃ−ＭＯＳやＣＣＤ等の固体撮像素子である受光素子を数１０万から数１００万個オーダでｍ行ｎ列の２次元に配列して構成されている。エリアセンサ２３の受光素子は、受光した光を電気信号に変換して出力する光電変換素子であり、以下では、画素と呼ぶこともある。各受光素子からは、その素子が受光した光を示す信号が出力される。なお、本実施形態では、エリアセンサ２３は、モノクロのセンサであるとする。
【００３２】
このエリアセンサ２３の受光面２３ａは、ハウジング本体１１外から読取口１１ａを介して外観可能に位置しており、エリアセンサ２３は、結像レンズ２７を介して入射する入射光をこの受光面２３ａで受光可能にプリント配線板１６に実装されている。
【００３３】
結像レンズ２７は、外部から読取口１１ａを介して入射する入射光を集光してエリアセンサ２３の受光面２３ａに像を結像可能な結像光学系として機能するもので、例えば、鏡筒とこの鏡筒内に収容される複数の集光レンズとにより構成されている。本実施形態では、発光ダイオード２１から照射された照明光Ｌｆが情報コードＤに反射して読取口１１ａに入射する反射光Ｌｒを集光することにより、エリアセンサ２３の受光面２３ａにコード像を結像可能にしている。
【００３４】
図３は、マーカ光投射器６０の構成を示す説明図である。マーカ光投射器６０は、情報コードＤの読み取り位置を示す位置決め用マーカ光Ｍを読み取り面Ｒに投射するもので、図３に示すように、レーザダイオード６２とこのレーザダイオード６２の出射側に設けられるコリメートレンズ６４、位置決め用マーカ光Ｍのパターンを形成可能な回折格子プレート６６、所定形状のスリットが設けられた視野絞り６８等とから構成されている。
【００３５】
視野絞り６８は、種々のスリット形状のものに切り替え可能に構成されており、このスリット形状を切り替えることにより、位置決め用マーカ光Ｍのパターンを種々のパターンに切り替えることができる。なお、スリット形状を切り替えることにより位置決め用マーカ光Ｍのパターンを切り替えられることは特開２００８−１９１９９９号公報に詳しく説明されているので、ここでの説明は省略する。なお、本実施形態では、位置決め用マーカ光Ｍの色は赤色とする。
【００３６】
図２に戻り、次に、マイコン系の構成概要を説明する。マイコン系は、増幅回路３１、Ａ／Ｄ変換回路３３、メモリ３５、アドレス発生回路３６、同期信号発生回路３８、制御回路４０、操作スイッチ４２、ＬＥＤ４３、ブザー４４、通信インタフェース４８等から構成されている。このマイコン系は、その名の通り、マイコン（情報処理装置）として機能し得る制御回路４０およびメモリ３５を中心に構成されるもので、前述した光学系によって撮像されたコード像の画像信号をハードウェア的およびソフトウェア的に信号処理し得るものである。また制御回路４０は、当該光学式情報読取装置１０の全体システムに関する制御も行っている。
【００３７】
光学系のエリアセンサ２３から出力される画像信号（アナログ信号）は、増幅回路３１に入力されることで所定ゲインで増幅された後、Ａ／Ｄ変換回路３３に入力されると、アナログ信号からディジタル信号に変換される。そして、ディジタル化された画像信号は、メモリ３５に入力されて蓄積される。なお、同期信号発生回路３８は、エリアセンサ２３およびアドレス発生回路３６に対する同期信号を発生可能に構成されており、またアドレス発生回路３６は、この同期信号発生回路３８から供給される同期信号に基づいて、メモリ３５に格納される画像信号の格納アドレスを発生可能に構成されている。
【００３８】
メモリ３５は、半導体メモリ装置で、例えばＲＡＭ（ＤＲＡＭ、ＳＲＡＭ等）やＲＯＭ（ＥＰＲＯＭ、ＥＥＰＲＯＭ等）がこれに相当する。またＲＯＭには、画像処理プログラムの他、マーカ光投射器６０発光ダイオード２１、エリアセンサ２３等の各ハードウェアを制御可能なシステムプログラム等が予め格納されている。
【００３９】
制御回路４０は、光学式情報読取装置１０全体を制御可能なマイコンで、ＣＰＵ、システムバス、入出力インタフェース等からなるもので、メモリ３５とともに情報処理装置を構成し得るもので情報処理機能を有する。情報処理機能としては、例えば、メモリ３５に蓄積された画像信号を処理して、画像信号に含まれる情報コードから情報を読み取る情報読み取り処理がある。
【００４０】
また、制御回路４０は、内蔵された入出力インタフェースを介して種々の入出力装置（周辺装置）と接続可能に構成されており、電源スイッチ４１、操作スイッチ４２、ＬＥＤ４３、ブザー４４、通信インタフェース４８、マーカ光投射器６０等が接続されている。
【００４１】
これにより、例えば、電源スイッチ４１や操作スイッチ４２の監視や管理、またインジケータとして機能するＬＥＤ４３の点灯・消灯、ビープ音やアラーム音を発生可能なブザー４４の鳴動のオンオフ、外部機器とのシリアル通信を可能にする通信インタフェース４８の通信制御、マーカ光投射器６０からのマーカ光Ｍの投射制御等を可能にしている。なお、操作スイッチ４２には、前述のトリガースイッチ１４が含まれている。
【００４２】
電源系は、電源スイッチ４１、電池４９等により構成されており、制御回路４０により管理される電源スイッチ４１のオンオフによって、上述した各装置や各回路に、電池４９から供給される駆動電圧の導通や遮断が制御されている。なお、電池４９は、所定の直流電圧を発生可能な２次電池で、例えば、リチウムイオン電池等がこれに相当する。
【００４３】
次に、制御回路４０の情報読み取り処理を詳しく説明する。図４は、この情報読み取り処理を示すフローチャートである。この図４に示す処理は、読み取り面Ｒに表された情報コードＤを含む画像をエリアセンサ２３が撮像し、その画像を示す画像信号がメモリ３５に蓄積される都度、実行する。
【００４４】
まず、ステップＳ１０では、メモリ３５から画像信号を取り込み、エッジ検出処理を行なう。このエッジ検出処理は、画像信号から各画素の輝度値を判断し、その輝度値に基づいて画像上のエッジを検出するものであり、公知の種々のエッジ検出手法を用いることができる。
【００４５】
続くステップＳ１２は、特許請求の範囲の特徴点検出手段に相当するものであり、ステップＳ１０で検出したエッジをもとに、公知のコーナー検出手法を用い、画像上のコーナーを検出する。ここで検出できるコーナーは、エッジの交点であり、情報コードＤの外形を規定する４つコーナー以外にも、種々のコーナーが検出される。また、コーナー以外にも、変曲点など、コーナー以外の特徴点が検出されてしまうこともある。さらには、情報コードＤの外形を規定する４つコーナー（以下、情報コード角ともいう）の一部または全部が、この処理では検出されないこともある。図５は、エリアセンサ２３が取り込んだ画像の一例を示す図であり、その画像に、○印にて、このステップＳ１２で検出するコーナーを示してある。
【００４６】
続くステップＳ１４は、特許請求の範囲の情報コード角候補抽出手段に相当するものであり、ステップＳ１２で検出したコーナーから、上記情報コード角の候補となる情報コード角候補を抽出する。ここでの抽出処理においては、たとえば、ハフ変換を用いてエッジの長さを求める。また、抽出する条件としては、エッジ線ベクトルの条件と、コーナーの位置の条件の２つの条件があり、両条件を満たしたものを情報コード角候補として抽出する。エッジ線ベクトルの条件は、具体的には、エッジ線ベクトルの長さが所定長さ以上であり、且つ、コーナーにおいて交差する２本のエッジ線の交差角が略９０度（９０度±αの範囲）という条件である。一方、コーナー位置の条件は、具体的には、他のコーナーに対する位置であり、より具体的には、他のコーナーが存在する方向が、対象としているコーナーから見て略９０度の範囲に集中している（他のコーナーの方向を算出したときに、９０度の範囲に入るものが所定割合以上）という条件である。
【００４７】
上記ステップＳ１４を実行することで得られる情報コード角候補は、かなり少数になるが、それでも、情報コード角のみが抽出されるとは限らない。たとえば、直角に近い形状を含んだ文字が画像内に含まれている場合には、その形状が情報コード角候補として抽出される可能性がある。
【００４８】
そこで、さらに、続くステップＳ１６において、ステップＳ１４で抽出した情報コード角候補のそれぞれに対し、情報コード角と、候補となっているが情報コード角ではないものとで相違する角候補情報として、推定セルサイズを算出する。
【００４９】
推定セルサイズの算出には、情報コード角候補を含みその周囲所定範囲のエッジ強度の変化を用いる。この範囲のエッジ強度の白黒変化数と白黒変化幅から、予め設定された条件に基づいて推定セルサイズを決定する。予め設定された条件とは、たとえば、白黒変化幅を横軸（階級）とし、白黒変化数を縦軸（度数）とするヒストグラムにおいて、最大度数となった変化幅をあるセル数（たとえば、１セルあるいは２セル）とし、そのヒストグラムから決定したセル数および白黒変化幅から推定セルサイズを決定する。このステップＳ１６が特許請求の範囲の角候補情報算出手段に相当する。
【００５０】
そして、特許請求の範囲の外形推定手段に相当するステップＳ１８では、ステップＳ１６で算出した角候補情報（すなわち推定セルサイズ）が互いに類似する情報コード角候補を２〜４つ選択し、それらを情報コード角として決定する。推定セルサイズが互いに類似することの判断は、たとえば、それぞれの情報コード角候補に対して算出した推定セルサイズの互いの差や比が、所定差以内あるいは所定比率範囲内であることにより判断する。所定差以内あるいは所定比率に基づく絞り込みを用いても、情報コード角候補を２〜４つに絞り込めなかった場合には、他の候補との差あるいは比が最も大きい候補から順に除外する。
【００５１】
ステップＳ１８では、さらに、その決定した２〜４つの情報コード角を用いて、情報コードのコード外形を推定する。推定セルサイズを用いた上述の処理により、情報コード角を４つ決定した場合には、その４つの情報コード角を通る四角形をコード外形とする。一方、情報コード角が２つ、あるいは３つしか決定されなかった場合には、それらの情報コード角と、情報コードが矩形であることを利用してコード外形を推定する。なお、２つしか決定されなかった場合には、たとえば、その２つの情報コード角を結ぶ直線と、決定済みのコーナーとの位置関係から、２つの情報コードが対角の関係にあるか、同一の辺の両端であるかを判定する。すなわち、対角の関係にある場合には、２つの情報コード角を結ぶ線の両側にコーナーが分布するが、同一の辺の両端である場合には、２つの情報コード角を結ぶ線の一方の側にコーナーが集中する。これを用いて２つの情報コードが対角の関係にあるか、同一の辺の両端であるかを判定する。
【００５２】
続くステップ２０では、まず、ステップＳ１８で推定したコード外形内の複数の点でエッジ角度を決定する。このエッジ角度は、エッジ点を中心とする３×３画素の輝度値から求めるものであり、下記式１から算出する。なお、下記式において「angle」がエッジ角度である。また、dx, dyは、それぞれ、図６に示す意味である。すなわち、dxは、エッジ点Ｅを挟む右３画素の合計輝度値と右３画素の合計輝度値との差であり、dyは、エッジ点Ｅを挟む下３画素の合計輝度値と上３画素の合計輝度値との差である。
（式１）      angle ＝ arctan(dx/dy)
上記式１を用いてコード外形内の複数の点において求めたエッジ角度を用い、所定角度幅（たとえば、１度、５度など）を１区間としてヒストグラムを作成する。そして、そのヒストグラムにおいて最も度数の多い角度を、コード軸角度とする。なお、上記複数の点は、コード外形のサイズによって変化するものであり、一例としては、コード外形内の所定画素毎の格子点を、エッジ角度を求める点とする。このステップＳ２０が、特許請求の範囲のコード軸角度決定手段に相当する。
【００５３】
続くステップＳ２２では、セルサイズを決定する。具体的には、ステップＳ１８で推定したコード外形内において、互いに直交する１組の線であって、一方の線がステップＳ２１で決定したコード軸と平行である１組の線に沿って走査していき、エッジ強度の白黒変化数と白黒変化幅を算出する。この白黒変化数と白黒変化幅を、上記１組の線をずらしつつ複数回算出してもよい。そして、算出した白黒変化数と白黒変化幅から、予め設定された条件に基づいてセルサイズを決定する。予め設定された条件とは、たとえば、白黒変化幅をある単位で区分して横軸とし、その区分毎の数を縦軸（度数）とするヒストグラムを作成する。このヒストグラムにおいて、最大度数となった変化幅をあるセル数（たとえば、１セルあるいは２セルなど予め決めておく）とし、そのヒストグラムから決定したセル数から推定セルサイズを決定する。このステップＳ２２が、特許請求の範囲のセルサイズ決定手段に相当する。
【００５４】
続くステップＳ２４は、特許請求の範囲のコード種判定手段に相当しており、情報コードＤのコード種を判定する。ここでのコード種とは、一次元コードであるか二次元コードであるかを意味する。この判定においては、エッジ角度のヒストグラム（たとえば、ステップＳ２０で作成したもの）を用いる。図７（Ａ）はこのエッジ角度のヒストグラムの一例であり、図７（Ｂ）は、図７（Ａ）のヒストグラムを作成した二次元コード画像である。
【００５５】
このヒストグラムが、一次元コードにおけるエッジ角度のヒストグラムおよび二次元コードにおけるエッジ角度のヒストグラムのいずれであるかを判定することにより、撮像した情報コードＤが一次元コードであるか二次元コードであるかを判定する。具体的な判定方法は、たとえば、ヒストグラムから算出できる特徴量の基準値を、一次元コードのヒストグラムおよび二次元コードのヒストグラム、それぞれに対して予め設定しておく。一次元コードであれば、エッジ角度はある一つ角度範囲に集中するのに対して、二次元コードであれば、エッジ角度は、度数が集中する角度範囲が少なくとも２つ存在する。そこで、たとえば、特徴量としては、ヒストグラムの最大値を基準とする４５度の範囲の合計度数の全体度数に対する割合がある。この割合が、予め設定した基準割合以上であれば、エッジ角度がある範囲に集中しているとことになるので、一次元コードのヒストグラムであると判定する。また、コード外形を垂直走査軸方向に横切り、且つ、コード外形の一方の端から他方の端までのエッジ角度のヒストグラムと、そのコード外形を水平走査軸方向に横切り、コード外形の一方の端から他方の端までのエッジ角度のヒストグラムをそれぞれ求め、それら一致度が一定値以下である場合に、そのヒストグラムは一次元コードの度数分布であると判定することもできる。また、標準的な一次元ヒストグラム、二次元ヒストグラムの形状そのものを参照パターンとして持ち、その参照パターンと、ステップＳ２０で作成したヒストグラムとの形状の相関値から、一次元コードのヒストグラムであるか二次元コードのヒストグラムであるかを判定してもよい。
【００５６】
ステップＳ２６は特許請求の範囲のデコード処理手段に相当しており、デコード処理を行う。デコード処理においては、コードの大きさ、コードの傾き、コードを構成するセルサイズの情報が必要である。換言すれば、これらが分かればデコードは可能である。この図４のフローチャートでは、コードの大きさ、コードの傾き、コードを構成するセルサイズを、それぞれ、ステップＳ１８、Ｓ２０、Ｓ２２で求めている。そこで、これらステップＳ１８、Ｓ２０、Ｓ２２で求めた値を用いてデコード処理を行う。また、デコード処理では、コードの具体的種別（ＱＲコード用など）に定められた複数のデコードアルゴリズムを順次用いるが、このステップＳ２６では、ステップＳ２４で判定したコード種に属しているデコードアルゴリズムを先に用いてデコード処理を行う。
【００５７】
以上、説明した本実施形態によれば、情報コードＤの画像内における位置を特定するために、情報コード角候補を抽出している（ステップＳ１４）。この情報コード角候補を抽出するために、撮像画像からコーナーを検出し（ステップＳ１２）、コーナーを通るエッジ線ベクトルおよび特徴点の位置に基づいて情報コード角候補を抽出している（ステップＳ１４）。
【００５８】
画像から検出できるコーナーには、情報コードＤの外形を規定するコーナーのみならず、情報コード内のセルによって形成されるコーナーが含まれ、また、コーナー検出処理によって検出される部位には、コーナー以外の部位も多少含まれることもある。しかし、ステップＳ１４では、エッジ線ベクトルおよびコーナーの位置に基づいて情報コード角候補を抽出しているので、コーナー以外の部位や、情報コードＤ内のコーナーは抽出されないことになる。したがって、情報コード角候補は、ある程度の数に絞られることになる。
【００５９】
しかし、撮像範囲内に情報コードＤ以外にも角形状を有する他の図形（文字など）が存在すれば、その図形上の角も、情報コード角候補として抽出される可能性がある。そこで、さらに、情報コード角候補の周囲の輝度変化に基づいて、情報コード角候補毎に推定セルサイズを算出する（ステップＳ１６）。情報コード角候補のうち、本当の情報コード角については、その周囲の輝度変化は、情報コードＤのセルサイズを反映している。一方、情報コード角候補として抽出されたが、実際には情報コード角ではない候補（たとえば、上述の図形の角など）については、その周囲の輝度変化は、情報コードＤのセルサイズを反映しているわけではないので、実際の情報コード角とは大きく異なる。したがって、情報コード角候補の周囲の輝度変化に基づいて算出する推定セルサイズは、情報コード角である場合と、そうでない場合とで大きく異なる。換言すれば、情報コード角候補のうち、同じ情報コードの外形を規定する角であるものについては、推定セルサイズは互いに類似する。そこで、ステップＳ１８において、推定セルサイズの類似の程度に基づいて、情報コード角候補から２〜４つの候補を情報コード角として選択し、これをもとに情報コードＤのコード外形を推定している。
【００６０】
このように、本実施形態では、ファインダパターンなどの特徴パターンを検出することなく、コード外形を推定していることから、特徴パターンが検出できない画像であっても、コード外形を推定することができる。しかも、情報コード角を４つ必須とせず、２つや３つの情報コード角であっても、それらからコード外形を推定する。よって、コード外形を決定できない場合が少なくなる。
【００６１】
さらに、コード軸角度およびセルサイズも、特徴パターンを利用せずに決定する。すなわち、コード軸角度は、コード外形の内部の複数の点においてエッジ角度を決定し、エッジ角度のヒストグラムからコード軸角度を決定している（ステップＳ２０）。また、セルサイズも、コード外形の内部の互いに直交する線上での白黒変化数および白黒変化幅に基づいて決定している（ステップＳ２２）。ステップＳ２６では、このようにして決定したコード外形、コード軸角度、セルサイズに基づいてデコード処理を行なう。よって、特徴パターンの検出ができない画像であってもデコード処理が可能となるので、情報コードから情報が読み取れないことが少なくなる。
【００６２】
また、本実施形態によれば、エッジ角度のヒストグラムを用いて情報コードＤが一次元コードであるか二次元コードであるかを判定しており、判定結果に基づいて、一次元コード用のデコードアルゴリズムおよび二次元コード用のデコードアルゴリズムのいずれを先に用いるかを決定しているので、デコードを高速に行なうことができる。
（第１実施形態の変形例１）
この変形例１では、メモリ３５に記憶されている全画素の画素情報を全部取得するのではなく、全画素の画素情報から一定画素間隔で画素情報を取得する（すなわち画素情報を間引いて取得する）。このようすると、撮像された画像に対して粗い粗画像が作成できる。なお、この取得処理が特許請求の範囲の粗画像作成手段に相当する。
【００６３】
そして、上記粗画像を用いて、ステップＳ１０のエッジ検出処理、ステップＳ１２のコーナー検出処理、ステップＳ１４の情報コード角候補抽出処理を行なう。
【００６４】
このように粗画像を用いると、情報コードＤの内部の小さな特徴点など、不要な特徴点が検出されにくくなることから、情報コード角候補に含まれる不要な候補が少なくなる。その結果、情報コード角の選択が容易になる。
【００６５】
なお、粗画像作成における画素情報の取得間隔は、セルサイズに基づいて定める。より具体的には、セルサイズが大きいほど取得間隔を広くする。また、そのセルサイズは、メモリ３５などの記憶手段に、前回の情報コード読み取り時に決定したセルサイズを記憶しておき、記憶手段に記憶してあるセルサイズを用いる。あるいは、それに代えて、セルサイズをユーザが操作スイッチ４２から入力できるようにしておき、その入力されたセルサイズに基づいて画素情報の取得間隔を決定してもよい。
（第１実施形態の変形例２）
この変形例２では、図４のフローチャートに代えて、図８に示すフローチャートを実行する。図８においては、ステップＳ１８以下を示しているが、ステップＳ１０からステップＳ１８までは図４と同じ処理を実行する。
【００６６】
この変形例２では、図８に示すように、ステップＳ１８を実行した後、ステップＳ１９−１へ進む。ステップＳ１９−１では、ステップＳ１８で決定した情報コード角に対してステップＳ１６で推定した推定セルサイズに基づいて定まる膨張フィルタをかける処理を行う。膨張フィルタをかける範囲として指定する指定範囲は、ステップＳ１８で推定したコード外形よりも、ステップＳ１８で決定した情報コード角に対してステップＳ１６で推定した推定セルサイズ分だけ大きい範囲とする。なお、４つの情報コード角に対応して推定セルサイズも４つ存在するので、その平均値を用いる。この指定範囲に対して、推定セルサイズに基づいた大きさ（たとえば４つの推定セルサイズの平均の大きさ）の膨張フィルタを適用する。図９の画像は、この膨張フィルタ処理の効果を説明する画像であり、図９（Ａ）は膨張フィルタ処理をする前の原画像、図９（Ｂ）は膨張フィルタ処理をした後の画像である。図９（Ｂ）から分かるように、膨張フィルタ処理をすることで、情報コードは全体的に黒く塗りつぶされたような画像となり、小さなコーナーがほとんどなくなっている。
【００６７】
続くステップＳ１９−２では、ステップＳ１９−１で膨張フィルタをかけた後の画像に対して、再度、コーナー検出処理を行う。図９（Ｂ）に示したように、膨張フィルタをかけることにより小さなコーナーがほとんどなくなることから、精度良く、情報コードの外形を規定する４つのコーナーを検出することができる。続くステップＳ１９−３では、ステップＳ１９−２で検出した４つのコーナーからコード外形を再決定する。なお、ここでの処理は、４つのコーナーをそのままコード外形における４つのコーナーとすることもできるし、また、膨張フィルタで膨張した分だけ４つのコーナーの位置を移動させてコード外形のコーナーを決定してもよい。
【００６８】
以降のステップＳ２０〜Ｓ２６は、ステップＳ１９−３で再決定したコード外形を用いる以外は、図４と同じである。
【００６９】
この変形例２によれば、膨張フィルタをかけることにより、情報コード内の小さなコーナーが減少した画像を用いてコーナー検出を行う。よって、精度良く、情報コードの外形を規定する４つのコーナーを検出することができ、ひいては、情報コードの読取精度が向上する。
（第２実施形態）
次に、第２実施形態を説明する。第２実施形態は、第１実施形態と同じ機械的構成を備えている。ただし、第２実施形態は、二次元コードを対象として情報を読み取る。第２実施形態でも、制御回路４０は情報読み取り処理を行うが、この処理の具体的内容は第１実施形態と相違する。
【００７０】
図１０は、第２実施形態における情報読み取り処理を示すフローチャートである。まず、ステップＳ３０では、図４のステップＳ１０と同じエッジ検出処理を行なう。続くステップＳ３２では、図４のステップＳ１２と同じコーナー検出処理を行なう。このステップＳ３２は特徴点検出手段に相当する。
【００７１】
続くステップＳ３４は、特許請求の範囲の特徴情報決定手段に相当しており、ステップＳ３２のコーナー検出処理で検出した複数のコーナーについて、それぞれ、特徴情報を決定する。この特徴情報は、本実施形態では、エッジ線ベクトルおよびエッジ強度とする。このステップＳ３４は、特許請求の範囲の特徴情報決定手段に相当する。
【００７２】
続くステップＳ３６では、ステップＳ３２で検出したコーナーから、上記ステップＳ３４で決定した特徴情報と、コーナーの互いの位置から、二次元コードに含まれるコーナーをコーナー群とする。二次元コードは、縦横に配列された多数のセルを有していることから、コーナー検出処理（Ｓ３２）を行なうと、二次元コード内には、多数のコーナーが検出される。しかも、同じコード内であることから、二次元コード内のコーナーは、エッジ強度やエッジ線ベクトルの大きさ（前述の特徴情報）も類似している。換言すれば、類似した特徴情報を持つコーナーが密集している範囲が二次元コードの範囲であると推定することができる。そこで、ステップＳ３６では、他のコーナーと距離が近接し、且つ、ステップＳ３４で決定した特徴情報も近接するコーナーと近似するという条件に基づいてコーナーを抽出する。そして、抽出したコーナー全体をコーナー群とする。なお、距離が近接するかどうかは、たとえば、コーナー間の画素数が所定画素数以内であることにより判断する。また、特徴情報が近接するかどうかは、特徴情報の差や比が所定値以内であることにより判断する。このステップＳ３６は、特許請求の範囲のコーナー群決定手段に相当する。
【００７３】
続くステップＳ３８は、特許請求の範囲の外形推定手段に相当しており、ステップＳ３６で決定したコーナー群の全体形状に基づいて二次元コードの外形を推定する。本実施形態では、まず、コーナー群の全体形状から膨張フィルタをかける範囲を決定する。たとえば、コーナー群内の全てのコーナーを含む四角形（コーナー群の外接四角形）を指定範囲とする。そして、指定範囲に対して膨張フィルタをかける。膨張フィルタの大きは、たとえば、推定セルサイズの大きさ（あるいはそれに基づいて定まる大きさ）とし、その推定セルサイズは、上記推定した外形内の一部または全部に対して、第１実施形態のステップＳ２２と同様にして求める。このようにして膨張フィルタを適用したら、図８のステップＳ１９−２と同様に、コーナー検出処理を行なう。さらにステップＳ１９−３と同様に、コード外形を再決定する。
【００７４】
ステップＳ４０では、図４のステップＳ２０と同様にして、コード軸角度を決定する。ステップＳ４２では、図４のステップＳ２２と同様にして、セルサイズを決定する。そして、ステップＳ４４では、ステップＳ３８〜４２で決定したコード外形、コード軸角度、セルサイズを用いてデコード処理を行なう。これらステップＳ４０、Ｓ４２、Ｓ４４は、それぞれ、特許請求の範囲のコード軸角度決定手段、セルサイズ決定手段、デコード処理手段に相当する。
【００７５】
以上、説明した第２実施形態によれば、コーナー検出処理をした後、各コーナーの特徴情報（エッジ強度、エッジ線ベクトル）を決定している（ステップＳ３４）。そして、他のコーナーと距離が近接するとともに、近接するコーナーと特徴情報も近似するものを、二次元コードのコーナー群として決定し（ステップＳ３６）、このコーナー群の全体形状に基づいて二次元コードの外形を推定している（ステップＳ３８）。このように、第２実施形態でも、特徴パターンを検出することなく、コード外形を推定していることから、特徴パターンが検出できないような画像であっても、コード外形を推定することができる。また、さらに、コード軸角度およびセルサイズも、特徴パターンを利用せずに決定している。よって、特徴パターンの検出ができなくてもデコード処理が可能となるので、情報コードから情報が読み取れないことが少なくなる。
【００７６】
以上、本発明の実施形態を説明したが、本発明は上述の実施形態に限定されるものではなく、次の実施形態も本発明の技術的範囲に含まれ、さらに、下記以外にも要旨を逸脱しない範囲内で種々変更して実施することができる。
ただし、いずれか一方のみを特徴情報として決定してもよい。
【００７７】
たとえば、前述の実施形態では、エリアセンサ２３はモノクロのセンサであったが、エリアセンサ２３としてカラーセンサを用いてもよい。ただし、情報コードはセル（あるいは線）とそれ以外の２色であることから、情報コードの読み取りの際には、１対の色（たとえば白黒）で処理を行なうことが好ましい。
【００７８】
また、前述の第２実施形態では、特徴情報として、エッジ線ベクトルおよびエッジ強度を決定していたが、いずれか一方のみを特徴情報として決定してもよい。
【符号の説明】
【００７９】
１０：情報コード読み取り装置、      １１：ハウジング本体、      １１ａ：読取口、      １２：グリップ部、      １４：トリガースイッチ、      １５：プリント配線板、      １６：プリント配線板、      ２０：回路部、      ２１：発光ダイオード、      ２３：エリアセンサ（受光センサ）、      ２３ａ：受光面、      ２７：結像レンズ、      ３１：増幅回路、      ３３：Ａ／Ｄ変換回路、      ３５：メモリ、      ３６：アドレス発生回路、      ３８：同期信号発生回路、      ４０：制御回路、      ４１：電源スイッチ、      ４２：操作スイッチ、      ４３：ＬＥＤ、      ４４：ブザー、      ４８：通信インタフェース、      ４９：電池、      ６０：マーカ光投射器、      ６２：レーザダイオード、      ６４：コリメートレンズ、      ６６：回折格子プレート、      ６８：視野絞り、      Ｄ：情報コード、      Ｅ：読み取り範囲、      Ｌｆ：照明光、      Ｌｒ：反射光、      Ｍ：位置決め用マーカ光、      Ｒ：読み取り面、      Ｓ１２：特徴点検出手段、      Ｓ１４：情報コード角候補抽出手段、      Ｓ１６：角候補情報算出手段、      Ｓ１８：外形推定手段、      Ｓ２０：コード軸角度決定手段、      Ｓ２２：セルサイズ決定手段、      Ｓ２４：コード種判定手段、      Ｓ２６：デコード処理手段、      Ｓ３２：特徴点検出手段、      Ｓ３４：特徴情報決定手段、      Ｓ３６：コーナー群決定手段、      Ｓ３８：外形推定手段、      Ｓ４０：コード軸角度決定手段、      Ｓ４２：セルサイズ決定手段、      Ｓ４４：デコード処理手段
【図１】
0005601291.tif 000002
【図２】
0005601291.tif 000003
【図３】
0005601291.tif 000004
【図４】
0005601291.tif 000005
【図６】
0005601291.tif 000006
【図８】
0005601291.tif 000007
【図１０】
0005601291.tif 000008
【図５】
0005601291.tif 000009
【図７】
0005601291.tif 000010
【図９】
0005601291.tif 000011