カメラを備え、前記カメラにより情報コードの画像を撮像し、撮像した画像に基づいて情報コードから情報を読み取る情報コード読み取り装置であって、前記カメラで撮影した画像から、コーナーを少なくとも含む特徴点を検出する特徴点検出手段と、前記特徴点検出手段で検出した特徴点から、特徴点を通るエッジ線ベクトルおよび特徴点の位置に基づいて、前記情報コードの角の候補となる情報コード角候補を抽出する情報コード角候補抽出手段と、抽出した情報コード角候補の周囲の所定範囲の輝度変化に基づいて、推定セルサイズを、情報コード角候補毎に算出する角候補情報算出手段と、前記角候補情報算出手段で算出した推定セルサイズの類似の程度に基づいて、情報コード角候補から2~4つの候補を情報コード角として選択し、選択した情報コード角に基づいて、前記情報コードの外形となる四角形状のコード外形を推定する外形推定手段と、その外形推定手段で推定したコード外形の内部の複数の点においてエッジ角度を決定し、決定した複数のエッジ角度に基づいて、前記情報コードの基準角度であるコード軸角度を決定するコード軸角度決定手段と、前記外形推定手段で推定したコード外形の内部であって、且つ、互いに直交する線上での白黒変化数および白黒変化幅を算出し、算出した白黒変化数および白黒変化幅に基づいて、セルサイズを決定するセルサイズ決定手段と、前記外形推定手段で推定したコード外形、前記コード軸角度決定手段で決定したコード軸角度、前記セルサイズ決定手段で決定したセルサイズに基づいて、情報コードのデコードを行なうデコード処理手段と、を含むことを特徴とする情報コード読み取り装置。請求項1において、前記コード軸角度決定手段で複数のエッジに対して決定したエッジ角度に基づいて定まるエッジ角度の度数分布が、一次元コードにおけるエッジ角度の度数分布および二次元コードにおけるエッジ角度の度数分布のいずれであるかを判定することにより、前記情報コードが一次元コードか二次元コードかを判定するコード種判定手段を備え、前記デコード処理手段は、前記コード種判定手段の判定結果に基づいて、一次元コード用のデコードアルゴリズムおよび二次元コード用のデコードアルゴリズムのいずれを先に用いるかを決定することを特徴とする情報コード読み取り装置。請求項1または2において、前記カメラで撮影した画像から、画素情報を一定画素間隔で抽出した粗画像を作成する粗画像作成手段を備え、前記特徴点検出手段および前記情報コード角候補抽出手段は、粗画像作成手段で作成した粗画像を用いて前記特徴点を検出するとともに、前記情報コード角候補を抽出することを特徴とする情報コード読み取り装置。請求項3において、情報コード読み取り時におけるセルサイズを記憶するセルサイズ記憶手段を備え、前記粗画像作成手段は、前記セルサイズ記憶手段に記憶されている前回の情報コード読み取り時におけるセルサイズに基づいて、作成する粗画像の粗さを決定することを特徴とする情報コード読み取り装置。請求項3において、ユーザがセルサイズを入力するためのセルサイズ入力手段を備え、前記粗画像作成手段は、前記セルサイズ入力手段に入力されたセルサイズに基づいて、作成する粗画像の粗さを決定することを特徴とする情報コード読み取り装置。請求項1~5のいずれか1項において、前記外形推定手段は、情報コード角候補から選択した情報コード角に基づいて推定したコード外形よりも、前記角候補情報算出手段で算出した推定セルサイズ分だけ大きい範囲を指定範囲として、前記推定セルサイズに基づいて定まる大きさの膨張フィルタをかけ、膨張フィルタをかけた後の上記指定範囲の画像を用いてコーナー検出を行なうことで、情報コードの外形を再決定することを特徴とする情報コード読み取り装置。請求項2において、前記コード種判定手段は、前記エッジ角度の度数分布において、最大度数を中心とする所定角度範囲内の度数の割合が、予め設定した割合以上である場合に、その度数分布は一次元コードの度数分布であると判定することを特徴とする情報コード読み取り装置。請求項2において、前記コード種判定手段は、前記コード外形を垂直走査軸方向に横切り、前記コード外形の一方の端から他方の端までのエッジ角度の度数分布と、前記コード外形を水平走査軸方向に横切り、前記コード外形の一方の端から他方の端までのエッジ角度の度数分布との一致度が一定値以下である場合に、その度数分布は一次元コードの度数分布であると判定することを特徴とする情報コード読み取り装置。カメラを備え、前記カメラにより情報コードの画像を撮像し、撮像した画像に基づいて情報コードから情報を読み取る情報コード読み取り装置であって、前記カメラで撮影した画像から、コーナーを少なくとも含む特徴点を検出する特徴点検出手段と、前記特徴点検出手段で検出した各特徴点に対して、それぞれ、エッジ強度およびエッジ線ベクトルの大きさのいずれか少なくとも一方である特徴情報を決定する特徴情報決定手段と、その特徴情報に基づいて、前記特徴点検出手段が検出した特徴点から、コーナーであって、且つ、他のコーナーと距離が近接するとともに、近接するコーナーと前記特徴情報も近似するコーナー群を決定するコーナー群決定手段と、前記コーナー群決定手段で決定したコーナー群の全体形状に基づいて情報コードの外形を推定する外形推定手段と、その外形推定手段で推定したコード外形の内部の複数の点においてエッジ角度を決定し、決定した複数のエッジ角度に基づいて、前記情報コードの基準角度であるコード軸角度を決定するコード軸角度決定手段と、前記外形推定手段で推定したコード外形の内部であって、且つ、互いに直交する線上での白黒変化数および白黒変化幅を算出し、算出した白黒変化数および白黒変化幅に基づいて、セルサイズを決定するセルサイズ決定手段と、前記外形推定手段で推定したコード外形、前記コード軸角度決定手段で決定したコード軸角度と、前記セルサイズ決定手段で決定したセルサイズに基づいて、情報コードのデコードを行なうデコード処理手段と、を含むことを特徴とする情報コード読み取り装置。特許文献1では、包絡線を作成するために、二次元コード画像の最も外周に存在する黒セルを見つけなければならないが、二次元コード画像の最も外周をどのようにして決定するかは記載されていない。実際には、二次元コードの位置を特定する前の段階で、黒色の部分がセルであるかどうかを判断することは困難である。また、QRコードにおけるファインダパターンなど、特徴的なパターンを画像の全体から探す方法では、汚れや鏡面反射などにより特徴的なパターンを探し出すことができなかった場合、情報コードの位置を特定することができない。従って、たとえば、鏡面反射が、ファインダパターン部分等の一部分のみであり、デコード可能な画像であっても、ファインダパターンが検出できないことによって、情報が読み取れない結果となってしまう。本発明は、この事情に基づいて成されたものであり、その目的とするところは、画像内における情報コードから情報が読み取れないことが少ない情報コード読み取り装置を提供することにある。その目的を達成するための請求項1記載の発明は、Aカメラを備え、前記カメラにより情報コードの画像を撮像し、撮像した画像に基づいて情報コードから情報を読み取る情報コード読み取り装置であって、B前記カメラで撮影した画像から、コーナーを少なくとも含む特徴点を検出する特徴点検出手段と、C前記特徴点検出手段で検出した特徴点から、特徴点を通るエッジ線ベクトルおよび特徴点の位置に基づいて、前記情報コードの角の候補となる情報コード角候補を抽出する情報コード角候補抽出手段と、D抽出した情報コード角候補の周囲の所定範囲の輝度変化に基づいて、推定セルサイズを、情報コード角候補毎に算出する角候補情報算出手段と、E前記角候補情報算出手段で算出した推定セルサイズの類似の程度に基づいて、情報コード角候補から2~4つの候補を情報コード角として選択し、選択した情報コード角に基づいて、前記情報コードの外形となる四角形状のコード外形を推定する外形推定手段と、Fその外形推定手段で推定したコード外形の内部の複数の点においてエッジ角度を決定し、決定した複数のエッジ角度に基づいて、前記情報コードの基準角度であるコード軸角度を決定するコード軸角度決定手段と、G前記外形推定手段で推定したコード外形の内部であって、且つ、互いに直交する線上での白黒変化数および白黒変化幅を算出し、算出した白黒変化数および白黒変化幅に基づいて、セルサイズを決定するセルサイズ決定手段と、H前記外形推定手段で推定したコード外形、前記コード軸角度決定手段で決定したコード軸角度、前記セルサイズ決定手段で決定したセルサイズに基づいて、情報コードのデコードを行なうデコード処理手段と、を含むことを特徴とする。本発明では、情報コードの位置を特定するために、情報コード角候補抽出手段において、情報コードの角の候補情報コード角候補を抽出している。この情報コード角候補を抽出するために、カメラで撮像した画像から特徴点を検出する。そして、この特徴点を通るエッジ線ベクトルおよび特徴点の位置に基づいて情報コード角候補を抽出している。画像から検出できる特徴点には、情報コードの外形を規定する角のみならず、情報コード内のセルによって形成される角や、角以外の部位も含まれる。しかし、情報コード角候補抽出手段では、エッジ線ベクトルおよび特徴点の位置に基づいて特徴点から情報コード角候補を抽出しているので、角以外の部位や、情報コード内の角は抽出されにくい。したがって、情報コード角候補は、ある程度の数に絞られることになる。しかし、撮像範囲内に情報コード以外にも角形状を有する他の図形文字などが存在すれば、その図形上の角も、情報コード角候補として抽出される可能性がある。そこで、さらに、情報コード角候補の周囲の輝度変化に基づいて、情報コード角候補毎に推定セルサイズを算出する。情報コード角候補のうち、本当の情報コード角については、その周囲の輝度変化は、情報コードのセルサイズを反映している。一方、情報コード角候補として抽出されたが、実際には情報コード角ではない候補たとえば、上述の図形の角などについては、その周囲の輝度変化は、情報コードのセルサイズを反映しているわけではないので、実際の情報コード角とは大きく異なる。したがって、情報コード角候補の周囲の輝度変化に基づいて算出する推定セルサイズは、情報コード角である場合と、そうでない場合とで大きく異なる。換言すれば、情報コード角候補のうち、同じ情報コードの外形を規定する角であるものについては、推定セルサイズは互いに類似する。そこで、外形推定手段では、推定セルサイズの類似の程度に基づいて、情報コード角候補から2~4つの候補を情報コード角として選択する。そして、これをもとに情報コードの外形となる四角形状のコード外形を推定する。このように、本発明では、ファインダパターンなどの特徴パターンを検出することなく、コード外形を推定していることから、特徴パターンが検出できない画像であっても、コード外形を推定することができる。しかも、情報コード角を必ず4つ用いるのではなく、2つや3つの情報コード角であっても、それらからコード外形を推定する。これらのことにより、従来よりも、コード外形を決定できない場合が少なくなる。さらに、コード軸角度およびセルサイズも、特徴パターンを利用せずに決定する。すなわち、コード軸角度は、コード外形の内部の複数の点においてエッジ角度を決定し、決定した複数のエッジ角度をもとにして決定している。また、セルサイズも、コード外形の内部の互いに直交する線上での白黒変化数および白黒変化幅に基づいて決定している。デコード処理手段では、このようにして決定したコード外形、コード軸角度、セルサイズに基づいてデコード処理を行なう。よって、特徴パターンの検出ができない画像であってもデコード処理が可能となるので、情報コードが読み取れないことが少なくなる。請求項2記載の発明では、前記コード軸角度決定手段で複数のエッジに対して決定したエッジ角度に基づいて定まるエッジ角度の度数分布が、一次元コードにおけるエッジ角度の度数分布および二次元コードにおけるエッジ角度の度数分布のいずれであるかを判定することにより、前記情報コードが一次元コードか二次元コードかを判定するコード種判定手段を備え、前記デコード処理手段は、前記コード種判定手段の判定結果に基づいて、一次元コード用のデコードアルゴリズムおよび二次元コード用のデコードアルゴリズムのいずれを先に用いるかを決定することを特徴とする。一次元コードは、線が平行に一方向に並んでいるだけであるので、一次元コードにおけるエッジ角度の度数分布はある一つの角度範囲に度数が集中する。それに対して、二次元コードは、縦方向および横方向の2方向にセルが配置されていることから、二次元コードにおけるエッジ角度の度数分布は、度数が集中する角度範囲が少なくとも2つ存在する。従って、エッジ角度の度数分布を用いることで、コード種を判定することができる。この判定したコード種に基づいて、一次元コード用のデコードアルゴリズムおよび二次元コード用のデコードアルゴリズムのいずれを先に用いるかを決定するので、デコードを高速に行なうことができる。請求項3記載の発明では、前記カメラで撮影した画像から、画素情報を一定画素間隔で抽出した粗画像を作成する粗画像作成手段を備え、前記特徴点検出手段および前記情報コード角候補抽出手段は、粗画像作成手段で作成した粗画像を用いて前記特徴点を検出するとともに、前記情報コード角候補を抽出することを特徴とする。このように粗画像を用いて特徴点の検出を行うと、情報コードの内部の小さな特徴点など、不要な特徴点が検出されにくくなることから、情報コード角候補に含まれる不要な候補が少なくなる。その結果、情報コード角の選択が容易になる。上記請求項3記載の発明において、粗画像の粗さは、請求項4、5のようにして決定することができる。請求項4では、情報コード読み取り時におけるセルサイズを記憶するセルサイズ記憶手段を備え、前記粗画像作成手段は、前記セルサイズ記憶手段に記憶されている前回の情報コード読み取り時におけるセルサイズに基づいて、作成する粗画像の粗さを決定する。請求項5では、ユーザがセルサイズを入力するためのセルサイズ入力手段を備え、前記粗画像作成手段は、前記セルサイズ入力手段に入力されたセルサイズに基づいて、作成する粗画像の粗さを決定する。請求項6記載の発明では、前記外形推定手段は、情報コード角候補から選択した情報コード角に基づいて推定したコード外形よりも、前記角候補情報算出手段で算出した推定セルサイズ分だけ大きい範囲を指定範囲として、前記推定セルサイズに基づいて定まる大きさの膨張フィルタをかけ、膨張フィルタをかけた後の上記指定範囲の画像を用いてコーナー検出を行なうことで、情報コードの外形を再決定することを特徴とする。このように、膨張フィルタをかけることにより、情報コード内は、原画像よりも塗りつぶされた状態に近い画像となり、情報コード内の小さなコーナーが減少する。この膨張フィルタをかけた後の画像を用いてコーナー検出を行うことから、情報コードの内の小さなコーナーが検出されにくくなり、精度良く、情報コードの外形を規定する4つのコーナーを検出することができ、ひいては、情報コードの読取精度が向上する。前述のコード種判定手段は、たとえば、請求項7、8のようにして、一次元コードにおけるエッジ角度の度数分布および二次元コードにおけるエッジ角度の度数分布のいずれであるかを判定する。請求項7では、前記コード種判定手段は、前記エッジ角度の度数分布において、最大度数を中心とする所定角度範囲内の度数の割合が、予め設定した割合以上である場合に、その度数分布は一次元コードの度数分布であると判定する。また、請求項8では、前記コード種判定手段は、前記コード外形を垂直走査軸方向に横切り、前記コード外形の一方の端から他方の端までのエッジ角度の度数分布と、前記コード外形を水平走査軸方向に横切り、前記コード外形の一方の端から他方の端までのエッジ角度の度数分布との一致度が一定値以下である場合に、その度数分布は一次元コードの度数分布であると判定する。また、前記目的は、請求項9記載の発明でも達成することができる。その請求項9記載の発明は、Aカメラを備え、前記カメラにより情報コードの画像を撮像し、撮像した画像に基づいて情報コードから情報を読み取る情報コード読み取り装置であって、B前記カメラで撮影した画像から、コーナーを少なくとも含む特徴点を検出する特徴点検出手段と、C前記特徴点検出手段で検出した各特徴点に対して、それぞれ、エッジ強度およびエッジ線ベクトルの大きさのいずれか少なくとも一方である特徴情報を決定する特徴情報決定手段と、Dその特徴情報に基づいて、前記特徴点検出手段が検出した特徴点から、コーナーであって、且つ、他のコーナーと距離が近接するとともに、近接するコーナーと前記特徴情報も近似するコーナー群を決定するコーナー群決定手段と、E前記コーナー群決定手段で決定したコーナー群の全体形状に基づいて情報コードの外形を推定する外形推定手段と、Fその外形推定手段で推定したコード外形の内部の複数の点においてエッジ角度を決定し、決定した複数のエッジ角度に基づいて、前記情報コードの基準角度であるコード軸角度を決定するコード軸角度決定手段と、G前記外形推定手段で推定したコード外形の内部であって、且つ、互いに直交する線上での白黒変化数および白黒変化幅を算出し、算出した白黒変化数および白黒変化幅に基づいて、セルサイズを決定するセルサイズ決定手段と、H前記外形推定手段で推定したコード外形、前記コード軸角度決定手段で決定したコード軸角度と、前記セルサイズ決定手段で決定したセルサイズに基づいて、情報コードのデコードを行なうデコード処理手段と、を含むことを特徴とする。この請求項9に係る発明でも、カメラで撮影した画像から、コーナーを少なくとも含む特徴点を検出しており、且つ、各特徴点に対して、エッジ強度およびエッジ線ベクトルの大きさのいずれか少なくとも一方である特徴情報を決定している。さらに、コーナー群決定手段では、特徴点から、コーナーであって、且つ、他のコーナーと距離が近接するとともに、近接するコーナーと前記特徴情報も近似するコーナー群を決定している。同じ二次元コードに属しているコーナーであれば、特徴情報が互いに近似した値になり、且つ、他のコーナーとの距離も近い。したがって、コーナー群決定手段が決定したコーナー群は、二次元コードに含まれるコーナーの群であると考えることができる。そこで、外形推定手段では、コーナー群の全体形状に基づいて情報コードの外形を推定する。このように、本発明でも、ファインダパターンなどの特徴パターンを検出することなく、コード外形を推定していることから、特徴パターンが検出できないような画像であっても、コード外形を推定することができる。さらに、コード軸角度およびセルサイズも、特徴パターンを利用せずに決定する。すなわち、コード軸角度は、コード外形の内部の複数の点においてエッジ角度を決定し、決定した複数のエッジ角度をもとにコード軸角度を決定している。また、セルサイズも、コード外形の内部の互いに直交する線上での白黒変化数および白黒変化幅に基づいて決定している。デコード処理手段では、このようにして決定したコード外形、コード軸角度、セルサイズに基づいてデコード処理を行なう。よって、特徴パターンの検出ができなくてもデコード処理が可能となるので、情報コードが読み取れないことが少なくなる。第1実施形態以下、本発明の実施形態を図面に基づいて説明する。図1は、本発明が適用された情報コード読み取り装置10の構成概要を示す図である。図1に示すように、情報コード読み取り装置10は、丸みを帯びた薄型のほぼ矩形箱状なすハウジング本体11と、このハウジング本体11の下面ほぼ中央後端寄りにハウジング本体11に一体に形成されるグリップ部12と、からなるガンタイプのハウジングを備えている。このグリップ部12は、作業者が片手で把持可能な程度の外径に設定されており、当該グリップ部12を握った作業者の人差し指が当接する部位に、後述する照明光Lfやマーカ光M1の出射を指示するトリガースイッチ14が設けられている。ハウジング本体11の内部には、後述する回路部20が収容されており、またハウジング本体11の先端部には、照明光Lfを出射可能、且つ、反射光Lrが入射可能な読取口11aが形成されている。ハウジング本体11内の読取口11aの付近には、マーカ光M1を投射するマーカ光投射器60が配置されている。また、図1には図示しないが、ハウジング本体11内の読取口11aの付近には、照明光Lfを照射する発光ダイオード21図2参照も配置されている。なお、図1には、回路部20を構成するプリント配線板15、16や、このプリント配線板16に実装されるエリアセンサ23、結像レンズ27等も図示されている。図2に示すように、回路部20は、主に、マーカ光投射器60、発光ダイオード21、エリアセンサ23、結像レンズ27等の光学系と、メモリ35、制御回路40、操作スイッチ42等のマイクロコンピュータ以下マイコンという系と、電源スイッチ41、電池49等の電源系と、から構成されており、前述したプリント配線板15、16に実装あるいはハウジング本体11内に内装されている。光学系は、前述のように、マーカ光投射器60、発光ダイオード21、エリアセンサ23、結像レンズ27等から構成されている。発光ダイオード21は、ハウジング本体11の読取口11aを介して読み取り面Rに向けて照明光Lfを照射可能に構成されている。なお、図2には、便宜上、発光ダイオード21を1つしか示していないが、発光ダイオード21は適宜複数備えられる。発光ダイオード21により照明される読み取り面Rには、一次元コードや二次元コードなどの情報コードDが記録されている。なお、記録形態としては、印刷、刻印等がある。エリアセンサ23は、読み取り面Rに照射されて反射した反射光Lrを受光可能に構成されるもので、例えば、C-MOSやCCD等の固体撮像素子である受光素子を数10万から数100万個オーダでm行n列の2次元に配列して構成されている。エリアセンサ23の受光素子は、受光した光を電気信号に変換して出力する光電変換素子であり、以下では、画素と呼ぶこともある。各受光素子からは、その素子が受光した光を示す信号が出力される。なお、本実施形態では、エリアセンサ23は、モノクロのセンサであるとする。このエリアセンサ23の受光面23aは、ハウジング本体11外から読取口11aを介して外観可能に位置しており、エリアセンサ23は、結像レンズ27を介して入射する入射光をこの受光面23aで受光可能にプリント配線板16に実装されている。結像レンズ27は、外部から読取口11aを介して入射する入射光を集光してエリアセンサ23の受光面23aに像を結像可能な結像光学系として機能するもので、例えば、鏡筒とこの鏡筒内に収容される複数の集光レンズとにより構成されている。本実施形態では、発光ダイオード21から照射された照明光Lfが情報コードDに反射して読取口11aに入射する反射光Lrを集光することにより、エリアセンサ23の受光面23aにコード像を結像可能にしている。図3は、マーカ光投射器60の構成を示す説明図である。マーカ光投射器60は、情報コードDの読み取り位置を示す位置決め用マーカ光Mを読み取り面Rに投射するもので、図3に示すように、レーザダイオード62とこのレーザダイオード62の出射側に設けられるコリメートレンズ64、位置決め用マーカ光Mのパターンを形成可能な回折格子プレート66、所定形状のスリットが設けられた視野絞り68等とから構成されている。視野絞り68は、種々のスリット形状のものに切り替え可能に構成されており、このスリット形状を切り替えることにより、位置決め用マーカ光Mのパターンを種々のパターンに切り替えることができる。なお、スリット形状を切り替えることにより位置決め用マーカ光Mのパターンを切り替えられることは特開2008-191999号公報に詳しく説明されているので、ここでの説明は省略する。なお、本実施形態では、位置決め用マーカ光Mの色は赤色とする。図2に戻り、次に、マイコン系の構成概要を説明する。マイコン系は、増幅回路31、A/D変換回路33、メモリ35、アドレス発生回路36、同期信号発生回路38、制御回路40、操作スイッチ42、LED43、ブザー44、通信インタフェース48等から構成されている。このマイコン系は、その名の通り、マイコン情報処理装置として機能し得る制御回路40およびメモリ35を中心に構成されるもので、前述した光学系によって撮像されたコード像の画像信号をハードウェア的およびソフトウェア的に信号処理し得るものである。また制御回路40は、当該光学式情報読取装置10の全体システムに関する制御も行っている。光学系のエリアセンサ23から出力される画像信号アナログ信号は、増幅回路31に入力されることで所定ゲインで増幅された後、A/D変換回路33に入力されると、アナログ信号からディジタル信号に変換される。そして、ディジタル化された画像信号は、メモリ35に入力されて蓄積される。なお、同期信号発生回路38は、エリアセンサ23およびアドレス発生回路36に対する同期信号を発生可能に構成されており、またアドレス発生回路36は、この同期信号発生回路38から供給される同期信号に基づいて、メモリ35に格納される画像信号の格納アドレスを発生可能に構成されている。メモリ35は、半導体メモリ装置で、例えばRAMDRAM、SRAM等やROMEPROM、EEPROM等がこれに相当する。またROMには、画像処理プログラムの他、マーカ光投射器60発光ダイオード21、エリアセンサ23等の各ハードウェアを制御可能なシステムプログラム等が予め格納されている。制御回路40は、光学式情報読取装置10全体を制御可能なマイコンで、CPU、システムバス、入出力インタフェース等からなるもので、メモリ35とともに情報処理装置を構成し得るもので情報処理機能を有する。情報処理機能としては、例えば、メモリ35に蓄積された画像信号を処理して、画像信号に含まれる情報コードから情報を読み取る情報読み取り処理がある。また、制御回路40は、内蔵された入出力インタフェースを介して種々の入出力装置周辺装置と接続可能に構成されており、電源スイッチ41、操作スイッチ42、LED43、ブザー44、通信インタフェース48、マーカ光投射器60等が接続されている。これにより、例えば、電源スイッチ41や操作スイッチ42の監視や管理、またインジケータとして機能するLED43の点灯消灯、ビープ音やアラーム音を発生可能なブザー44の鳴動のオンオフ、外部機器とのシリアル通信を可能にする通信インタフェース48の通信制御、マーカ光投射器60からのマーカ光Mの投射制御等を可能にしている。なお、操作スイッチ42には、前述のトリガースイッチ14が含まれている。電源系は、電源スイッチ41、電池49等により構成されており、制御回路40により管理される電源スイッチ41のオンオフによって、上述した各装置や各回路に、電池49から供給される駆動電圧の導通や遮断が制御されている。なお、電池49は、所定の直流電圧を発生可能な2次電池で、例えば、リチウムイオン電池等がこれに相当する。次に、制御回路40の情報読み取り処理を詳しく説明する。図4は、この情報読み取り処理を示すフローチャートである。この図4に示す処理は、読み取り面Rに表された情報コードDを含む画像をエリアセンサ23が撮像し、その画像を示す画像信号がメモリ35に蓄積される都度、実行する。まず、ステップS10では、メモリ35から画像信号を取り込み、エッジ検出処理を行なう。このエッジ検出処理は、画像信号から各画素の輝度値を判断し、その輝度値に基づいて画像上のエッジを検出するものであり、公知の種々のエッジ検出手法を用いることができる。続くステップS12は、特許請求の範囲の特徴点検出手段に相当するものであり、ステップS10で検出したエッジをもとに、公知のコーナー検出手法を用い、画像上のコーナーを検出する。ここで検出できるコーナーは、エッジの交点であり、情報コードDの外形を規定する4つコーナー以外にも、種々のコーナーが検出される。また、コーナー以外にも、変曲点など、コーナー以外の特徴点が検出されてしまうこともある。さらには、情報コードDの外形を規定する4つコーナー以下、情報コード角ともいうの一部または全部が、この処理では検出されないこともある。図5は、エリアセンサ23が取り込んだ画像の一例を示す図であり、その画像に、○印にて、このステップS12で検出するコーナーを示してある。続くステップS14は、特許請求の範囲の情報コード角候補抽出手段に相当するものであり、ステップS12で検出したコーナーから、上記情報コード角の候補となる情報コード角候補を抽出する。ここでの抽出処理においては、たとえば、ハフ変換を用いてエッジの長さを求める。また、抽出する条件としては、エッジ線ベクトルの条件と、コーナーの位置の条件の2つの条件があり、両条件を満たしたものを情報コード角候補として抽出する。エッジ線ベクトルの条件は、具体的には、エッジ線ベクトルの長さが所定長さ以上であり、且つ、コーナーにおいて交差する2本のエッジ線の交差角が略90度90度±αの範囲という条件である。一方、コーナー位置の条件は、具体的には、他のコーナーに対する位置であり、より具体的には、他のコーナーが存在する方向が、対象としているコーナーから見て略90度の範囲に集中している他のコーナーの方向を算出したときに、90度の範囲に入るものが所定割合以上という条件である。上記ステップS14を実行することで得られる情報コード角候補は、かなり少数になるが、それでも、情報コード角のみが抽出されるとは限らない。たとえば、直角に近い形状を含んだ文字が画像内に含まれている場合には、その形状が情報コード角候補として抽出される可能性がある。そこで、さらに、続くステップS16において、ステップS14で抽出した情報コード角候補のそれぞれに対し、情報コード角と、候補となっているが情報コード角ではないものとで相違する角候補情報として、推定セルサイズを算出する。推定セルサイズの算出には、情報コード角候補を含みその周囲所定範囲のエッジ強度の変化を用いる。この範囲のエッジ強度の白黒変化数と白黒変化幅から、予め設定された条件に基づいて推定セルサイズを決定する。予め設定された条件とは、たとえば、白黒変化幅を横軸階級とし、白黒変化数を縦軸度数とするヒストグラムにおいて、最大度数となった変化幅をあるセル数たとえば、1セルあるいは2セルとし、そのヒストグラムから決定したセル数および白黒変化幅から推定セルサイズを決定する。このステップS16が特許請求の範囲の角候補情報算出手段に相当する。そして、特許請求の範囲の外形推定手段に相当するステップS18では、ステップS16で算出した角候補情報すなわち推定セルサイズが互いに類似する情報コード角候補を2~4つ選択し、それらを情報コード角として決定する。推定セルサイズが互いに類似することの判断は、たとえば、それぞれの情報コード角候補に対して算出した推定セルサイズの互いの差や比が、所定差以内あるいは所定比率範囲内であることにより判断する。所定差以内あるいは所定比率に基づく絞り込みを用いても、情報コード角候補を2~4つに絞り込めなかった場合には、他の候補との差あるいは比が最も大きい候補から順に除外する。ステップS18では、さらに、その決定した2~4つの情報コード角を用いて、情報コードのコード外形を推定する。推定セルサイズを用いた上述の処理により、情報コード角を4つ決定した場合には、その4つの情報コード角を通る四角形をコード外形とする。一方、情報コード角が2つ、あるいは3つしか決定されなかった場合には、それらの情報コード角と、情報コードが矩形であることを利用してコード外形を推定する。なお、2つしか決定されなかった場合には、たとえば、その2つの情報コード角を結ぶ直線と、決定済みのコーナーとの位置関係から、2つの情報コードが対角の関係にあるか、同一の辺の両端であるかを判定する。すなわち、対角の関係にある場合には、2つの情報コード角を結ぶ線の両側にコーナーが分布するが、同一の辺の両端である場合には、2つの情報コード角を結ぶ線の一方の側にコーナーが集中する。これを用いて2つの情報コードが対角の関係にあるか、同一の辺の両端であるかを判定する。続くステップ20では、まず、ステップS18で推定したコード外形内の複数の点でエッジ角度を決定する。このエッジ角度は、エッジ点を中心とする3×3画素の輝度値から求めるものであり、下記式1から算出する。なお、下記式においてangleがエッジ角度である。また、dxdyは、それぞれ、図6に示す意味である。すなわち、dxは、エッジ点Eを挟む右3画素の合計輝度値と右3画素の合計輝度値との差であり、dyは、エッジ点Eを挟む下3画素の合計輝度値と上3画素の合計輝度値との差である。式1angle=arctan上記式1を用いてコード外形内の複数の点において求めたエッジ角度を用い、所定角度幅たとえば、1度、5度などを1区間としてヒストグラムを作成する。そして、そのヒストグラムにおいて最も度数の多い角度を、コード軸角度とする。なお、上記複数の点は、コード外形のサイズによって変化するものであり、一例としては、コード外形内の所定画素毎の格子点を、エッジ角度を求める点とする。このステップS20が、特許請求の範囲のコード軸角度決定手段に相当する。続くステップS22では、セルサイズを決定する。具体的には、ステップS18で推定したコード外形内において、互いに直交する1組の線であって、一方の線がステップS21で決定したコード軸と平行である1組の線に沿って走査していき、エッジ強度の白黒変化数と白黒変化幅を算出する。この白黒変化数と白黒変化幅を、上記1組の線をずらしつつ複数回算出してもよい。そして、算出した白黒変化数と白黒変化幅から、予め設定された条件に基づいてセルサイズを決定する。予め設定された条件とは、たとえば、白黒変化幅をある単位で区分して横軸とし、その区分毎の数を縦軸度数とするヒストグラムを作成する。このヒストグラムにおいて、最大度数となった変化幅をあるセル数たとえば、1セルあるいは2セルなど予め決めておくとし、そのヒストグラムから決定したセル数から推定セルサイズを決定する。このステップS22が、特許請求の範囲のセルサイズ決定手段に相当する。続くステップS24は、特許請求の範囲のコード種判定手段に相当しており、情報コードDのコード種を判定する。ここでのコード種とは、一次元コードであるか二次元コードであるかを意味する。この判定においては、エッジ角度のヒストグラムたとえば、ステップS20で作成したものを用いる。図7Aはこのエッジ角度のヒストグラムの一例であり、図7Bは、図7Aのヒストグラムを作成した二次元コード画像である。このヒストグラムが、一次元コードにおけるエッジ角度のヒストグラムおよび二次元コードにおけるエッジ角度のヒストグラムのいずれであるかを判定することにより、撮像した情報コードDが一次元コードであるか二次元コードであるかを判定する。具体的な判定方法は、たとえば、ヒストグラムから算出できる特徴量の基準値を、一次元コードのヒストグラムおよび二次元コードのヒストグラム、それぞれに対して予め設定しておく。一次元コードであれば、エッジ角度はある一つ角度範囲に集中するのに対して、二次元コードであれば、エッジ角度は、度数が集中する角度範囲が少なくとも2つ存在する。そこで、たとえば、特徴量としては、ヒストグラムの最大値を基準とする45度の範囲の合計度数の全体度数に対する割合がある。この割合が、予め設定した基準割合以上であれば、エッジ角度がある範囲に集中しているとことになるので、一次元コードのヒストグラムであると判定する。また、コード外形を垂直走査軸方向に横切り、且つ、コード外形の一方の端から他方の端までのエッジ角度のヒストグラムと、そのコード外形を水平走査軸方向に横切り、コード外形の一方の端から他方の端までのエッジ角度のヒストグラムをそれぞれ求め、それら一致度が一定値以下である場合に、そのヒストグラムは一次元コードの度数分布であると判定することもできる。また、標準的な一次元ヒストグラム、二次元ヒストグラムの形状そのものを参照パターンとして持ち、その参照パターンと、ステップS20で作成したヒストグラムとの形状の相関値から、一次元コードのヒストグラムであるか二次元コードのヒストグラムであるかを判定してもよい。ステップS26は特許請求の範囲のデコード処理手段に相当しており、デコード処理を行う。デコード処理においては、コードの大きさ、コードの傾き、コードを構成するセルサイズの情報が必要である。換言すれば、これらが分かればデコードは可能である。この図4のフローチャートでは、コードの大きさ、コードの傾き、コードを構成するセルサイズを、それぞれ、ステップS18、S20、S22で求めている。そこで、これらステップS18、S20、S22で求めた値を用いてデコード処理を行う。また、デコード処理では、コードの具体的種別QRコード用などに定められた複数のデコードアルゴリズムを順次用いるが、このステップS26では、ステップS24で判定したコード種に属しているデコードアルゴリズムを先に用いてデコード処理を行う。以上、説明した本実施形態によれば、情報コードDの画像内における位置を特定するために、情報コード角候補を抽出しているステップS14。この情報コード角候補を抽出するために、撮像画像からコーナーを検出しステップS12、コーナーを通るエッジ線ベクトルおよび特徴点の位置に基づいて情報コード角候補を抽出しているステップS14。画像から検出できるコーナーには、情報コードDの外形を規定するコーナーのみならず、情報コード内のセルによって形成されるコーナーが含まれ、また、コーナー検出処理によって検出される部位には、コーナー以外の部位も多少含まれることもある。しかし、ステップS14では、エッジ線ベクトルおよびコーナーの位置に基づいて情報コード角候補を抽出しているので、コーナー以外の部位や、情報コードD内のコーナーは抽出されないことになる。したがって、情報コード角候補は、ある程度の数に絞られることになる。しかし、撮像範囲内に情報コードD以外にも角形状を有する他の図形文字などが存在すれば、その図形上の角も、情報コード角候補として抽出される可能性がある。そこで、さらに、情報コード角候補の周囲の輝度変化に基づいて、情報コード角候補毎に推定セルサイズを算出するステップS16。情報コード角候補のうち、本当の情報コード角については、その周囲の輝度変化は、情報コードDのセルサイズを反映している。一方、情報コード角候補として抽出されたが、実際には情報コード角ではない候補たとえば、上述の図形の角などについては、その周囲の輝度変化は、情報コードDのセルサイズを反映しているわけではないので、実際の情報コード角とは大きく異なる。したがって、情報コード角候補の周囲の輝度変化に基づいて算出する推定セルサイズは、情報コード角である場合と、そうでない場合とで大きく異なる。換言すれば、情報コード角候補のうち、同じ情報コードの外形を規定する角であるものについては、推定セルサイズは互いに類似する。そこで、ステップS18において、推定セルサイズの類似の程度に基づいて、情報コード角候補から2~4つの候補を情報コード角として選択し、これをもとに情報コードDのコード外形を推定している。このように、本実施形態では、ファインダパターンなどの特徴パターンを検出することなく、コード外形を推定していることから、特徴パターンが検出できない画像であっても、コード外形を推定することができる。しかも、情報コード角を4つ必須とせず、2つや3つの情報コード角であっても、それらからコード外形を推定する。よって、コード外形を決定できない場合が少なくなる。さらに、コード軸角度およびセルサイズも、特徴パターンを利用せずに決定する。すなわち、コード軸角度は、コード外形の内部の複数の点においてエッジ角度を決定し、エッジ角度のヒストグラムからコード軸角度を決定しているステップS20。また、セルサイズも、コード外形の内部の互いに直交する線上での白黒変化数および白黒変化幅に基づいて決定しているステップS22。ステップS26では、このようにして決定したコード外形、コード軸角度、セルサイズに基づいてデコード処理を行なう。よって、特徴パターンの検出ができない画像であってもデコード処理が可能となるので、情報コードから情報が読み取れないことが少なくなる。また、本実施形態によれば、エッジ角度のヒストグラムを用いて情報コードDが一次元コードであるか二次元コードであるかを判定しており、判定結果に基づいて、一次元コード用のデコードアルゴリズムおよび二次元コード用のデコードアルゴリズムのいずれを先に用いるかを決定しているので、デコードを高速に行なうことができる。第1実施形態の変形例1この変形例1では、メモリ35に記憶されている全画素の画素情報を全部取得するのではなく、全画素の画素情報から一定画素間隔で画素情報を取得するすなわち画素情報を間引いて取得する。このようすると、撮像された画像に対して粗い粗画像が作成できる。なお、この取得処理が特許請求の範囲の粗画像作成手段に相当する。そして、上記粗画像を用いて、ステップS10のエッジ検出処理、ステップS12のコーナー検出処理、ステップS14の情報コード角候補抽出処理を行なう。このように粗画像を用いると、情報コードDの内部の小さな特徴点など、不要な特徴点が検出されにくくなることから、情報コード角候補に含まれる不要な候補が少なくなる。その結果、情報コード角の選択が容易になる。なお、粗画像作成における画素情報の取得間隔は、セルサイズに基づいて定める。より具体的には、セルサイズが大きいほど取得間隔を広くする。また、そのセルサイズは、メモリ35などの記憶手段に、前回の情報コード読み取り時に決定したセルサイズを記憶しておき、記憶手段に記憶してあるセルサイズを用いる。あるいは、それに代えて、セルサイズをユーザが操作スイッチ42から入力できるようにしておき、その入力されたセルサイズに基づいて画素情報の取得間隔を決定してもよい。第1実施形態の変形例2この変形例2では、図4のフローチャートに代えて、図8に示すフローチャートを実行する。図8においては、ステップS18以下を示しているが、ステップS10からステップS18までは図4と同じ処理を実行する。この変形例2では、図8に示すように、ステップS18を実行した後、ステップS19-1へ進む。ステップS19-1では、ステップS18で決定した情報コード角に対してステップS16で推定した推定セルサイズに基づいて定まる膨張フィルタをかける処理を行う。膨張フィルタをかける範囲として指定する指定範囲は、ステップS18で推定したコード外形よりも、ステップS18で決定した情報コード角に対してステップS16で推定した推定セルサイズ分だけ大きい範囲とする。なお、4つの情報コード角に対応して推定セルサイズも4つ存在するので、その平均値を用いる。この指定範囲に対して、推定セルサイズに基づいた大きさたとえば4つの推定セルサイズの平均の大きさの膨張フィルタを適用する。図9の画像は、この膨張フィルタ処理の効果を説明する画像であり、図9Aは膨張フィルタ処理をする前の原画像、図9Bは膨張フィルタ処理をした後の画像である。図9Bから分かるように、膨張フィルタ処理をすることで、情報コードは全体的に黒く塗りつぶされたような画像となり、小さなコーナーがほとんどなくなっている。続くステップS19-2では、ステップS19-1で膨張フィルタをかけた後の画像に対して、再度、コーナー検出処理を行う。図9Bに示したように、膨張フィルタをかけることにより小さなコーナーがほとんどなくなることから、精度良く、情報コードの外形を規定する4つのコーナーを検出することができる。続くステップS19-3では、ステップS19-2で検出した4つのコーナーからコード外形を再決定する。なお、ここでの処理は、4つのコーナーをそのままコード外形における4つのコーナーとすることもできるし、また、膨張フィルタで膨張した分だけ4つのコーナーの位置を移動させてコード外形のコーナーを決定してもよい。以降のステップS20~S26は、ステップS19-3で再決定したコード外形を用いる以外は、図4と同じである。この変形例2によれば、膨張フィルタをかけることにより、情報コード内の小さなコーナーが減少した画像を用いてコーナー検出を行う。よって、精度良く、情報コードの外形を規定する4つのコーナーを検出することができ、ひいては、情報コードの読取精度が向上する。第2実施形態次に、第2実施形態を説明する。第2実施形態は、第1実施形態と同じ機械的構成を備えている。ただし、第2実施形態は、二次元コードを対象として情報を読み取る。第2実施形態でも、制御回路40は情報読み取り処理を行うが、この処理の具体的内容は第1実施形態と相違する。図10は、第2実施形態における情報読み取り処理を示すフローチャートである。まず、ステップS30では、図4のステップS10と同じエッジ検出処理を行なう。続くステップS32では、図4のステップS12と同じコーナー検出処理を行なう。このステップS32は特徴点検出手段に相当する。続くステップS34は、特許請求の範囲の特徴情報決定手段に相当しており、ステップS32のコーナー検出処理で検出した複数のコーナーについて、それぞれ、特徴情報を決定する。この特徴情報は、本実施形態では、エッジ線ベクトルおよびエッジ強度とする。このステップS34は、特許請求の範囲の特徴情報決定手段に相当する。続くステップS36では、ステップS32で検出したコーナーから、上記ステップS34で決定した特徴情報と、コーナーの互いの位置から、二次元コードに含まれるコーナーをコーナー群とする。二次元コードは、縦横に配列された多数のセルを有していることから、コーナー検出処理S32を行なうと、二次元コード内には、多数のコーナーが検出される。しかも、同じコード内であることから、二次元コード内のコーナーは、エッジ強度やエッジ線ベクトルの大きさ前述の特徴情報も類似している。換言すれば、類似した特徴情報を持つコーナーが密集している範囲が二次元コードの範囲であると推定することができる。そこで、ステップS36では、他のコーナーと距離が近接し、且つ、ステップS34で決定した特徴情報も近接するコーナーと近似するという条件に基づいてコーナーを抽出する。そして、抽出したコーナー全体をコーナー群とする。なお、距離が近接するかどうかは、たとえば、コーナー間の画素数が所定画素数以内であることにより判断する。また、特徴情報が近接するかどうかは、特徴情報の差や比が所定値以内であることにより判断する。このステップS36は、特許請求の範囲のコーナー群決定手段に相当する。続くステップS38は、特許請求の範囲の外形推定手段に相当しており、ステップS36で決定したコーナー群の全体形状に基づいて二次元コードの外形を推定する。本実施形態では、まず、コーナー群の全体形状から膨張フィルタをかける範囲を決定する。たとえば、コーナー群内の全てのコーナーを含む四角形コーナー群の外接四角形を指定範囲とする。そして、指定範囲に対して膨張フィルタをかける。膨張フィルタの大きは、たとえば、推定セルサイズの大きさあるいはそれに基づいて定まる大きさとし、その推定セルサイズは、上記推定した外形内の一部または全部に対して、第1実施形態のステップS22と同様にして求める。このようにして膨張フィルタを適用したら、図8のステップS19-2と同様に、コーナー検出処理を行なう。さらにステップS19-3と同様に、コード外形を再決定する。ステップS40では、図4のステップS20と同様にして、コード軸角度を決定する。ステップS42では、図4のステップS22と同様にして、セルサイズを決定する。そして、ステップS44では、ステップS38~42で決定したコード外形、コード軸角度、セルサイズを用いてデコード処理を行なう。これらステップS40、S42、S44は、それぞれ、特許請求の範囲のコード軸角度決定手段、セルサイズ決定手段、デコード処理手段に相当する。以上、説明した第2実施形態によれば、コーナー検出処理をした後、各コーナーの特徴情報エッジ強度、エッジ線ベクトルを決定しているステップS34。そして、他のコーナーと距離が近接するとともに、近接するコーナーと特徴情報も近似するものを、二次元コードのコーナー群として決定しステップS36、このコーナー群の全体形状に基づいて二次元コードの外形を推定しているステップS38。このように、第2実施形態でも、特徴パターンを検出することなく、コード外形を推定していることから、特徴パターンが検出できないような画像であっても、コード外形を推定することができる。また、さらに、コード軸角度およびセルサイズも、特徴パターンを利用せずに決定している。よって、特徴パターンの検出ができなくてもデコード処理が可能となるので、情報コードから情報が読み取れないことが少なくなる。以上、本発明の実施形態を説明したが、本発明は上述の実施形態に限定されるものではなく、次の実施形態も本発明の技術的範囲に含まれ、さらに、下記以外にも要旨を逸脱しない範囲内で種々変更して実施することができる。ただし、いずれか一方のみを特徴情報として決定してもよい。たとえば、前述の実施形態では、エリアセンサ23はモノクロのセンサであったが、エリアセンサ23としてカラーセンサを用いてもよい。ただし、情報コードはセルあるいは線とそれ以外の2色であることから、情報コードの読み取りの際には、1対の色たとえば白黒で処理を行なうことが好ましい。また、前述の第2実施形態では、特徴情報として、エッジ線ベクトルおよびエッジ強度を決定していたが、いずれか一方のみを特徴情報として決定してもよい。