(57)【特許請求の範囲】
【請求項１】
実線の直線パターンおよび点線の直線パターンの少なくともいずれか一方である特徴パターンを含む二次元コードを読み取るために、その二次元コードを含む画像を撮像し、撮像した画像における前記特徴パターンの位置に基づいて前記二次元コードのセルの画像上の位置を決定した後、そのセルの位置の輝度に基づいてセルの色を二値化してデコードを行なう二次元コード読み取り装置であって、
前記画像における二次元コードの外形を推定する外形推定手段と、
その外形推定手段で推定した外形に基づいて前記特徴パターンの概略位置を決定する概略位置決定手段と、
その概略位置決定手段で決定した特徴パターンの概略位置に輝度特徴値を算出するための直線である輝度特徴値算出線を設定し、その輝度特徴値算出線の角度を走査しつつ、各走査角度において輝度特徴値算出線の輝度特徴値を算出する輝度特徴値算出手段と、
その輝度特徴値算出手段が、各走査角度において算出した輝度特徴値の比較に基づいて、前記特徴パターンの角度を決定する角度決定手段と
を含むことを特徴とする二次元コード読み取り装置。
【請求項２】
請求項１において、
前記輝度特徴値算出手段は、前記輝度特徴値算出線上に所定間隔でサンプリング点を設定し、隣接する２つのサンプリング点間の輝度差の総和を前記輝度特徴値として算出することを特徴とする二次元コード読み取り装置。
【請求項３】
請求項１または２において、
前記輝度特徴値算出手段は、互いに平行な複数本の輝度特徴値算出線をセルサイズよりも狭い範囲に設定し、平行を維持してそれら複数本の輝度特徴値算出線の角度を走査し、各走査角度において、各輝度特徴値算出線の輝度特徴値を合計した値を、前記角度決定手段で用いる輝度特徴値とすることを特徴とする二次元コード読み取り装置。
【請求項４】
請求項１〜３のいずれか１項において、
前記輝度特徴値算出手段は、前記輝度特徴値算出線上に、撮像画像の画素よりも細かい間隔でサンプリング点を設定し、画素間のサンプリング点の輝度は補間により決定し、各サンプリング点の輝度値に基づいて、前記輝度特徴値を算出することを特徴とする二次元コード読み取り装置。
【請求項５】
請求項１〜４のいずれか１項において、
前記輝度特徴値算出手段は、前記外形推定手段が推定した二次元コードの外形の変形程度が大きいほど、輝度特徴値算出線を走査する角度範囲を広く設定することを特徴とする二次元コード読み取り装置。
【請求項６】
請求項１〜５のいずれか１項において、
前記輝度特徴値算出線を前記角度決定手段で決定した角度に設定して、その輝度特徴値算出線を所定間隔で平行移動させつつ、各平行移動位置において輝度特徴値算出線の輝度特徴値を算出する平行移動処理手段と、
各平行移動位置における輝度特徴値算出線の輝度特徴値の比較に基づいて、前記特徴パターンを構成する各セルについて、セル配列方向に対して垂直方向の中心位置を決定する中心位置決定手段とを含むことを特徴とする二次元コード読み取り装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、二次元コード読み取り装置に関し、特に、精度のよい読み取りを短時間で行なうことができる技術に関する。
【背景技術】
【０００２】
二次元コードの読み取りにおいては、特許文献１に開示されているように、二次元コードを撮像し、撮像した画像において二次元コード内の各セルの座標を決定し、その座標の輝度に基づいてセルの色を二値化する。そして、各セルを二値化した値に基づいて、その後の読み取り処理を行なう。
【０００３】
ところで、二次元コードの画像は、仰角や傾角といった読み取り装置の傾きにより、変形していることも多い。従って、変形したコード画像からコードを読み取る必要がある。前述したように、読み取りにおいては各セルの座標を決定する。この座標決定は、二次元コードにおけるセルの配置を決定するものと言えるので、マッピングと呼ばれることもある。マッピングが正確にできれば、精度のよい読み取りが可能となる。
【０００４】
サイズが小さいコードであれば、コード外形を求めた後、コード外形の単純な比例分割により各セルの位置を決定しても、実際のセルの位置との誤差は比較的少ない。しかし、コードが大きくなると、単純にコード外形を比例分割して求めたセルの位置と実際のセルの位置との誤差が大きくなる。また、コード外形に汚れ等がある場合にも、コード外形を正確に検出できないことになるので、コード外形を用いて決定する各セルの位置の誤差も大きくなる。
【０００５】
そこで、二次元コードには、各セル位置を正確に決定するために利用するものとして、特徴パターンを有しているものが多い。例えば、データマトリックスでは、３２×３２セル以上になると、コード中央でコードを４分割する特徴パターン（アライメントパターン）が存在する。上記アライメントパターンは実線の直線パターンである。このアライメントパターンに隣接して、点線の直線パターンであるクロックパターンも存在する。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特許２９３８３３８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
二次元コード読み取り処理において、直線パターンの検出を行なう場合、エッジを検出し、エッジ位置から直線を検出する手法（ハフ変換や最小二乗法等）が知られている。また、パターンマッチングによって特徴パターンを検出する手法もある。しかしながら、二次元コードにおいて直線パターンを検出するための従来公知の手法は、いずれも計算量が多く、デコード時間が長くなるという問題があった。
【０００８】
本発明は、この事情に基づいて成されたものであり、その目的とするところは、特徴パターン検出の計算量を少なくすることができる二次元コード読み取り装置を提供することにある。
【課題を解決するための手段】
【０００９】
その目的を達成するための請求項１記載の発明は、実線の直線パターンおよび点線の直線パターンの少なくともいずれか一方である特徴パターンを含む二次元コードを読み取るために、その二次元コードを含む画像を撮像し、撮像した画像における前記特徴パターンの位置に基づいて前記二次元コードのセルの画像上の位置を決定した後、そのセルの位置の輝度に基づいてセルの色を二値化してデコードを行なう二次元コード読み取り装置であって、
前記画像における二次元コードの外形を推定する外形推定手段と、その外形推定手段で推定した外形に基づいて前記特徴パターンの概略位置を決定する概略位置決定手段と、その概略位置決定手段で決定した特徴パターンの概略位置に輝度特徴値を算出するための直線である輝度特徴値算出線を設定し、その輝度特徴値算出線の角度を走査しつつ、各走査角度において輝度特徴値算出線の輝度特徴値を算出する輝度特徴値算出手段と、その輝度特徴値算出手段が、各走査角度において算出した輝度特徴値の比較に基づいて、前記特徴パターンの角度を決定する角度決定手段とを含むことを特徴とする。
【００１０】
このように、本発明では、輝度特徴値算出線の角度を走査しつつ、各走査角度において輝度特徴値を算出する。そして、各走査角度における輝度特徴値の比較に基づいて特徴パターンの角度を決定している。従来手法の一つである最小二乗法では、相当数の直線に対して、それぞれ多数のエッジ点からの距離差を二乗計算により算出する必要があり、また、別の従来手法であるハフ変換では、画像中のエッジ点ごとに一本のハフ曲線を描く必要がある。これに対して、本発明では、各走査角度において輝度特徴値算出線上の輝度特徴値を算出するが、この算出には、多数の点と直線との距離を二乗計算で算出する必要はなく、また、各点毎に曲線を描く必要もない。よって、従来の特徴パターン検出手法よりも計算量を少なくすることができる。
【００１１】
請求項２記載の発明では、前記輝度特徴値算出手段は、前記輝度特徴値算出線上に所定間隔でサンプリング点を設定し、隣接する２つのサンプリング点間の輝度差の総和を前記輝度特徴値として算出する。
【００１２】
上記輝度差の総和は、特徴パターンが実線の直線パターンである場合には、輝度特徴値算出線がその実線の直線パターン上に位置しているときが最小となる。また、特徴パターンが点線の直線パターンである場合には、輝度特徴値算出線がその点線の直線パターン上に位置しているときが、輝度差の総和は最大となる。従って、各走査角度において算出した輝度差の総和を比較することで、容易に、特徴パターンの角度を精度よく決定することができる。
【００１３】
請求項３記載の発明では、前記輝度特徴値算出手段は、互いに平行な複数本の輝度特徴値算出線をセルサイズよりも狭い範囲に設定し、平行を維持してそれら複数本の輝度特徴値算出線の角度を走査し、各走査角度において、各輝度特徴値算出線の輝度特徴値を合計した値を、前記角度決定手段で用いる輝度特徴値とする。
【００１４】
このように、輝度特徴値算出線を複数本とすれば、ある輝度特徴値算出線は汚れ等の外乱が多いとしても、他の輝度特徴値算出線はその外乱の影響を受けていない可能性もあり、その場合には、複数本の輝度値算出線の全体としては外乱の影響が少なくなる。よって、複数本の輝度特徴値算出線の輝度特徴値の合計を算出すれば、角度決定がより外乱の影響を受けにくくなる。
【００１５】
請求項４記載の発明では、前記輝度特徴値算出手段は、前記輝度特徴値算出線上に、撮像画像の画素よりも細かい間隔でサンプリング点を設定し、画素間のサンプリング点の輝度は補間により決定し、各サンプリング点の輝度値に基づいて、前記輝度特徴値を算出する。
【００１６】
このようにすれば、輝度特徴値算出線の細かな位置変化に応じたサンプリング点を設定できるので、角度決定の分解能が向上する。
【００１７】
請求項５記載の発明では、前記輝度特徴値算出手段は、前記外形推定手段が推定した二次元コードの外形の変形程度が大きいほど、輝度特徴値算出線を走査する角度範囲を広く設定する。
【００１８】
このようにすれば、二次元コードの外形の変形程度が小さい場合には、輝度特徴値算出線を走査する角度範囲は狭く設定されることになる。よって、輝度特徴値算出線を走査する角度範囲を常に広い範囲とする場合よりも、計算量を少なくすることができる。
【００１９】
請求項６記載の発明では、前記輝度特徴値算出線を前記角度決定手段で決定した角度に設定して、その輝度特徴値算出線を所定間隔で平行移動させつつ、各平行移動位置において輝度特徴値算出線の輝度特徴値を算出する平行移動処理手段と、各平行移動位置における輝度特徴値算出線の輝度特徴値の比較に基づいて、前記特徴パターンを構成する各セルについて、セル配列方向に対して垂直方向の中心位置を決定する中心位置決定手段とを含む。
【００２０】
このようにすれば、特徴パターンを構成する各セルについて、セル配列方向に対して垂直方向の中心位置も決定できることから、読み取り精度がより向上する。
【図面の簡単な説明】
【００２１】
【図１】データマトリックスの一部画像であり、（Ａ）はアライメントパターン部分の画像、（Ｂ）はクロックパターン部分の画像である。
【図２】データマトリックスを模して擬似的に作成した二次元コード画像である。
【図３】二次元コードの一部分を拡大した概念図である。
【図４】特徴パターンが実線パターンである場合の、特徴パターンに対する輝度変化総和を演算する直線の角度のズレと、輝度変化総和の関係を示すグラフである。
【図５】特徴パターンが点線パターンである場合の、特徴パターンに対する輝度変化総和を演算する直線の角度のズレと、輝度変化総和の関係を示すグラフである。
【図６】特徴パターンが実線パターンである場合の角度検出実験の結果を示すグラフである。
【図７】特徴パターンが点線パターンである場合の角度検出実験の結果を示すグラフである。
【図８】図４の実験に用いた画像に対してボケを付加し、さらに、輝度算出線Ｌの固定点をセル中心から１／４セルずらした実験の結果を示すグラフである。
【図９】特徴パターンが実線パターンである場合の角度検出実験であって、ボケおよび固定点をセル中心からずらした実験の結果を示すグラフである。
【図１０】実施形態におけるセル中心の検出方法の概念図である。
【図１１】実線パターンに対して、セル中心位置からのズレと輝度変化総和の関係を示すグラフである。
【図１２】点線パターンに対して、セル中心位置からのズレと輝度変化総和の関係を示すグラフである。
【図１３】実線パターンに対して、セル中心位置を検出した実験結果を示すグラフである。
【図１４】点線パターンに対して、セル中心位置を検出した実験結果を示すグラフである。
【図１５】実施形態の二次元コード読み取り装置１０の機械的構成を示すブロック図である。
【図１６】特徴パターンの角度検出処理を示すフローチャートである。
【図１７】セル中心検出処理を示すフローチャートである。
【図１８】図１６の角度検出処理および図１７のセル中心検出処理の概要を示す図である。
【発明を実施するための形態】
【００２２】
（本発明による特徴パターンの角度検出手法の説明）
本発明を適用した二次元コード読み取り装置を説明する前に、本発明の考え方を、二次元コードとしてデータマトリックスを例にして説明する。
【００２３】
図１（Ａ）、（Ｂ）はいずれもデータマトリックスの一部画像である。データマトリックスは、周知の通り、特徴パターンとして、図１（Ａ）においてＡ−Ａ矢印で挟まれる部分に存在するアライメントパターンと、図１（Ｂ）においてＢ−Ｂ矢印で挟まれる部分に存在するクロックパターンとを有する。これらアライメントパターン、クロックパターンはいずれも直線であり、アライメントパターンは実線パターン、クロックパターンは点線パターンである。点線パターンは、より詳しくは、セル単位で色が反転するパターンである。
【００２４】
データマトリックスのデコードにおいては、これらアライメントパターン、クロックパターンを検出し、これらアライメントパターン、クロックパターンから得られる情報に基づいてコード内の各セルの位置決定を行なう。
【００２５】
そのため、コードの読み取り精度向上のためには、これらの特徴パターンの傾きが精度よく検出できることが望ましい。さらには、特徴パターンを形成する各セルのセル中心を正確に検出できることがより望ましい。なお、以下の説明においては、特に言及しない限り、特徴パターンは、アライメントパターンとクロックパターンとを含む意味である。
【００２６】
図２は、データマトリックスを模して擬似的に作成した二次元コード画像である。データマトリックスは本来は正方形であるが、この図２の画像は正方形から変形している。具体的には、頂角はいずれも直角からややずれており、４辺の長さは、わずかではあるが互いに異なっている。この画像は擬似的に作成したものであるが、読み取り装置のデータマトリックスに対する傾きにより、実際の撮像画像においても、この図２に示したように、データマトリックスは正方形から変形していることも多い。
【００２７】
このような変形したデータマトリックスの画像から、特徴パターンの位置を正確に検出する必要がある。直線の位置は、直線上の１点と直線の傾きにより定まる。よって、特徴パターンの位置検出精度を向上させるためには、特徴パターンの傾き、および、パターン上の点の位置の一方、好ましくは、両方の検出精度を向上させる必要がある。
【００２８】
上記特徴パターン、すなわち、アライメントパターン、クロックパターンはいずれも直線であることから、直線検出手法として周知のハフ変換や最小二乗法を用いてこれらのパターンを検出することが考えられる。しかし、既に説明したようにこれらの手法は計算量が多い。
【００２９】
そこで、本発明では、特徴パターンが存在すると推定できる概略位置に輝度算出線（特許請求の範囲の輝度特徴値算出線に相当）Ｌを設定し、その輝度算出線Ｌを走査しつつ、輝度算出線Ｌの輝度特徴値を算出する。輝度特徴値として、まず、輝度算出線上に所定間隔で設定したサンプリング点における隣接サンプリング点に対する輝度差の総和（以下、輝度変化総和という）を説明する。
【００３０】
図３は、二次元コードの一部分を拡大した概念図であり、上述のサンプリング点を例示している図である。図３においては、ハッチングで示す四角が黒セルであることを示しており、それに隣接するハッチングなしの四角が白セルであることを示している。図３では、輝度算出線Ｌの上に、一定間隔でサンプリング点（黒丸）が配置されている。サンプリング点の間隔は、１セル内に複数配置できる間隔に設定されており、図３の例では、１セル内に３つのサンプリング点が配置されている。この図３の例のように１セル内に３つ、あるいは、それ以上のサンプリング点が配置できることが好ましい。ただし、ほとんどのセルに少なくとも１つのサンプリング点が配置できる間隔であれば、本発明の目的とする効果を得ることはできる。
【００３１】
輝度算出線Ｌを走査しつつ輝度変化総和を算出すると、実線パターン（アライメントパターン）や点線パターン（クロックパターン）の位置に輝度算出線Ｌがある場合、輝度変化総和は最小あるいは最大となる。従って、輝度算出線Ｌを走査しつつ輝度変化総和を算出することで、実線パターンや点線パターンの角度を精度よく検出することができる。
【００３２】
次に、輝度変化総和により、実線パターンおよび点線パターンの角度を精度よく検出できることを確認した実験を説明する。
【００３３】
実験においては、図２に例示した擬似的な二次元コード画像を、特徴パターン以外はランダムに白黒を配置して１０００枚作成した。これら１０００枚の画像において、正解の位置（特徴パターンの中心を通る位置）からの角度ズレと輝度変化総和の関係を調べた。実験条件として、セルサイズは５画素、サンプリング点の間隔は１／４セルとした。輝度算出線Ｌは、一点を特徴パターンの端点（図２の点Ｏ）に固定し、正解の角度に対して±１０度の範囲（図２に両矢印で示す範囲）を走査した。また、角度分解能（すなわち輝度算出線Ｌの走査角度単位）は０．５度とした。
【００３４】
また、サンプリング点における輝度をサブピクセルの細度（すなわち撮像装置の画素よりも細かい間隔）で決定するために、ピクセルとピクセルとの間の点（補間点）の輝度値を、その周囲の輝度値に基づいて決定した。この決定手法としては、公知の種々のサブピクセル処理を用いることができ、たとえば、補間点の上下左右４点の輝度値の平均値を補間点の輝度値とする。
【００３５】
図４は、特徴パターンが実線パターンである場合の実験結果を示すグラフである。横軸は正解の角度を０度とし、その正確の角度に対する輝度算出線Ｌの角度のズレを示している。縦軸は、１０００回の実験における各々の「角度のズレ」における輝度変化総和の平均値を示している。
【００３６】
図４に示すように、特徴パターンを実線パターンとしたこの実験では、角度のズレ＝０度（すなわちズレがない位置）を中心として−１度から１度までの間は、輝度変化総和がゼロとなっている。輝度算出線Ｌが実線パターン上に位置している場合、サンプリング点の輝度は全て黒を示す輝度であることから、隣接するサンプリング点間の輝度変化はゼロとなるからである。
【００３７】
図５は、特徴パターンが点線パターンである場合の実験結果を示すグラフである。図５に示すように、特徴パターンを点線パターンとした実験では、角度のズレ＝０度を中心として−１度から１度までの間が、輝度変化総和が最大となっている。輝度算出線Ｌが破線パターン上に位置している場合、輝度算出線Ｌは、黒セルと白セルとが交互に繰り返す位置を通っていることになるからである。
【００３８】
このように、輝度算出線Ｌの角度が実線パターンの角度と一致すると輝度変化総和は最小となり、輝度算出線Ｌの角度が点線パターンの角度と一致すると輝度変化総和は最大となることが確認できた。
【００３９】
次に、輝度変化総和がピークとなる輝度算出線Ｌの角度を特徴パターンの角度として検出したとき、その検出した角度と、正確の角度とのズレを確認した実験の結果を示す。実験条件は、図４、図５の場合と同様に、特徴パターン以外はランダムに白黒を配置して１０００枚の二次元コード画像を作成し、セルサイズ、サンプリング点の間隔、輝度算出線Ｌの走査条件（固定している点の位置と、走査角度範囲）、角度分解能も、図４、５と同一とした。
【００４０】
図６は、特徴パターンが実線パターンである場合の実験結果を示すグラフであり、図７は、特徴パターンが点線パターンである場合の実験結果を示すグラフである。いずれのグラフも、横軸は正解の角度からのズレを示し、縦軸は、正解の角度からのズレが横軸の値となった回数を示している。
【００４１】
図６、図７は、いずれも、正解の角度からのズレが０度にピークが存在している。すなわち、輝度変化総和の最小値あるいは最大値を示す角度を特徴パターン（実線パターンあるいは点線パターン）の角度とする手法は、精度よく、その特徴パターンの角度を検出できることが分かる。
【００４２】
ところで、これまで説明した実験では外乱は考慮していない。外乱としては、画像のボケ等による輝度値変動、特徴パターンを検出する際の輝度算出線Ｌの固定点のセル中心からの位置ずれなどがある。しかしながら、これらの外乱をある程度考慮しても、正解の角度からのズレは±１度に収まることを確認した。その根拠を次に説明する。
【００４３】
図８は、図４の実験に用いた画像に対してセルサイズ相当のボケをガウシアンフィルタによって付加し、さらに、輝度算出線Ｌの固定点をセル中心から１／４セルずらして、他の条件は図４と同じとした実験の結果を示すグラフである。また、図８において、実線は、ボケを付加したのみで固定点はセル中心である場合、破線は、ボケを付加し、且つ、固定点をずらした場合の実験結果である。
【００４４】
図８の実線と図４との比較から分かるように、ボケを付加すると、正解からの角度のズレが−１度から１度の範囲でも輝度変化総和が０ではなくなること、および、輝度変化総和の最小となる範囲が狭まることが分かる。さらに、固定点を１／４セルずらすと、破線で示すように、正解からの角度のズレが−１度から１度の範囲における輝度変化総和が一層増加することが分かる。
【００４５】
図９は、図６に対応するものであり、図６と同様に、輝度変化総和のピークを特徴パターンの角度として検出したとき、その検出した角度と、正確の角度とのズレを確認した実験の結果を示している。図９と図６の違いは、図８と図４の違いと同じ、すなわち、実験に用いた画像に対してセルサイズ相当のボケをガウシアンフィルタによって付加したこと、および、輝度算出線Ｌの固定点をセル中心から１／４セルずらしたことである。
【００４６】
図９の実線から分かるように、ボケを付加しただけならば、ほとんど精度低下は生じない。また、ボケの付加に加え固定点を１／４セルずらすと、破線で示すように、多少、精度が低下することが分かる。しかし、ほとんどの検出において、正解からの角度ズレは−１度から１度の範囲に収まっている。すなわち、ある程度の外乱があっても、本手法は、正解の角度からのズレが±１度に収まることが分かる。
【００４７】
（複数本の輝度算出線上にサンプリング点を配置した手法の説明）
上述の説明では、サンプリング点を配置する輝度算出線Ｌを１本として説明していた。しかし、この輝度算出線Ｌとして、複数本（たとえば３本）の平行線を用意してもよい。
【００４８】
複数本の平行線を用いる場合、一方の端の平行線から他方の端の平行線までの長さが１セルよりも短くなるように、複数本の平行線を配置する。１セルよりも短くなるようにするためには、セルサイズを推定することが好ましい。セルサイズの推定はたとえば次のようにして行なう。まず、輝度算出線Ｌなど、コードに対して略垂直に引いた線における輝度変化を求める。そして、この輝度変化において極大から極小への変化周期の最小値を１セルサイズと推定する。その他に、コード外形の概略位置の推定後に、その概略位置に基づいて、セルサイズを示す特徴パターン（たとえばクロックパターン）の概略位置を推定する手法も考えられる。このときの特徴パターンの位置は概略位置であることから、セルサイズも概略となるが、複数の本の平行線の配置幅を、１セルサイズよりも短くなるようにするために利用するだけであることから、概略でも問題ない。また、平行線の間隔を装置性能から定まる最小間隔あるいはそれに近い間隔に設定しておいてもよい。このようにすれば、平行線の配置幅は、ほとんどの場合、１セルサイズよりも狭くなるからである。
【００４９】
複数本の平行線を配置したら、これら複数の平行線を平行を維持したまま走査し、各走査角度において輝度変化総和を算出する。輝度変化総和は、互いに隣り合うサンプリング点における輝度差の総和であり、複数本の平行線を配置する場合における隣り合うサンプリング点は、同一輝度算出線上において隣り合うサンプリング点である。このようにすると、各線毎に輝度変化総和を算出できるが、これら線の数分の輝度変化総和を全部加算して、特徴パターンを検出するための輝度変化総和とする。
【００５０】
このように複数本とする場合、ある１本の輝度算出線Ｌは、正解の角度において汚れ等の外乱が多い位置だったとしても、他の輝度算出線Ｌは、正解の角度においてその外乱が少ない可能性がある。よって、複数本の平行な輝度算出線上のサンプリング点における輝度変化の総和を算出すれば、角度検出がより外乱の影響を受けにくくなる。
【００５１】
（セル中心の検出方法）
次に、セル中心位置の検出方法について説明する。ここまでに説明した手法は、特徴パターンの角度を求める手法である。また、この手法では、図８、図９を用いて説明したように、輝度算出線Ｌの固定点Ｏがセル中心から少しずれていても、特徴パターンの角度をよい精度で検出できる。
【００５２】
しかし、二次元コードのデコードにおいては、各セルが白セルであるか黒セルであるか正しく決定することが重要であり、各セルが白セルであるか黒セルであるかはセル中心の輝度から判断する。セル中心の輝度を用いてセルの色を判断するのは、セル中心はボケ等の外乱の影響を最も受けにくいからである。このように、各セルの色の判断にセル中心を用いることから、セル中心をより精度よく検出できることが望まれる。そこで、次に、特徴パターンの角度の検出の次に行なう、セル中心の検出方法を説明する。
【００５３】
ここで、セル中心の検出に対する従来公知の方法として、セルのエッジ点を求め、そのエッジ点から中点を求める方法がある。しかし、エッジ点は周囲のセルの影響を受けるため、正確さに問題がある。また、統計的に求め用としてエッジ点の数を増やすと、計算量が多くなってしまう。
【００５４】
一方、本実施形態におけるセル中心の検出方法は、これまでに説明した角度検出に類似しており、特徴パターンの角度検出と同様に、輝度算出線Ｌの輝度変化総和を用いる。そのため計算量は少ない。また、後に実験結果を示すように、精度も良好である。
【００５５】
図１０は、本実施形態におけるセル中心の検出方法の概念図である。角度検出の場合との違いは、角度検出の場合には輝度算出線Ｌの角度を走査していたが、セル中心の検出においては、輝度算出線Ｌを平行移動させつつ、輝度変化総和を算出する。
【００５６】
前述したように、セル中心は最も外乱の影響を受けにくい。そのため、輝度算出線Ｌが特徴パターンの各セルのセル中心を通る場合が、最も特徴パターンの輝度変化総和を正しく表しているはずである。一方、輝度算出線Ｌが特徴パターンを通る場合には、輝度変化総和はピークを示す。よって、輝度算出線Ｌを平行移動させたとき、輝度変化総和のピークとなる位置が、特徴パターンの各セルのセル中心を輝度算出線Ｌが通っていると判断できる。
【００５７】
このようにして特徴パターンのセル中心を正しく検出できることを実験により確認した。この実験は、角度検出の場合と同様に、特徴パターン以外はランダムに白黒を配置して１０００枚の二次元コード画像を作成して行なった。セルサイズ、サンプリング点の間隔は、角度検出での実験と同じにした。輝度算出線Ｌの平行移動範囲は、±１／２セルとした。
【００５８】
この実験の結果を図１１、図１２に示す。図１１は、特徴パターンが実線パターンである場合の実験結果を示すグラフである。横軸はセル中心からのズレを示している。縦軸は、１０００回の実験における各々の「セル中心からのズレ」における輝度変化総和の平均値を示している。また、図１２は、特徴パターンが点線パターンである場合の実験結果を示すグラフであり、縦軸、横軸は図１１と同じである。また、図１１、図１２とも、実線は、前述の手法で検出した特徴パターンの角度が正確の角度からずれていない場合であり、破線は、検出した角度が正解の角度から１度ずれている場合のセル中心検出結果である。
【００５９】
図１１、１２に示すように、特徴パターンが実線パターンである場合にも、また、点線である場合にも、セル中心に輝度変化総和のピークがあることが分かる。さらに、角度ズレがあっても、セル中心に輝度変化総和のピークがあることが分かる。
【００６０】
次に、輝度算出線Ｌを平行移動させつつ算出した輝度変化総和がピークとなる輝度算出線Ｌの位置をセル中心として検出したとき、検出したセル中心の位置と、正確のセル中心とのズレを確認した実験の結果を示す。実験条件は、図１１、１２と同じである。
【００６１】
図１３は、特徴パターンが実線パターンである場合の実験結果を示すグラフであり、図１４は、特徴パターンが点線パターンである場合の実験結果を示すグラフである。いずれのグラフも、横軸は正解のセル中心位置からのズレを示し、縦軸は、正解の角度からのズレが横軸の値となった回数を示している。
【００６２】
図１３、図１４は、いずれも、正確のセル中心位置にピークが存在しており、正解のセル中心位置からずれたとしても、ほとんどの場合、１／８セルのズレに収まっていることが分かる。
【００６３】
本発明の二次元コード読み取り装置は、ここまでに説明した手法により、二次元コードの特徴パターンの角度およびその特徴パターンのセル中心の位置を検出する。
【００６４】
（実施形態）
次に、本発明の二次元コード読み取り装置の実施形態を説明する。図１５は、本発明の実施形態となる二次元コード読み取り装置１０の機械的構成を示すブロック図である。機械的構成は、従来周知の二次元コード読み取り装置と同じである。
【００６５】
図１５に示す回路部２０は、図示しないハウジング内に収容されている。この回路部２０は、主に、光学系とコンピュータ系と電源系とから構成されている。光学系は、マーカ光投射器６０、発光ダイオード２１、エリアセンサ２３、結像レンズ２７等から構成されている。
【００６６】
発光ダイオード２１は、ハウジング本体の読取口（図示せず）を介して読み取り面Ｒに向けて照明光Ｌｆを照射可能に構成されている。この読み取り面Ｒには二次元コードなどが記録されている。なお、記録形態としては、印刷、刻印等がある。
【００６７】
エリアセンサ２３は、読み取り面Ｒに照射されて反射した反射光Ｌｒを受光可能に構成されるもので、例えば、Ｃ−ＭＯＳやＣＣＤ等の固体撮像素子である受光素子を数１０万から数１００万個オーダでｍ行ｎ列の２次元に配列して構成されている。受光素子は、受光した光を電気信号に変換して出力する。
【００６８】
このエリアセンサ２３の受光面２３ａは、ハウジング本体外から上述の読取口を介して外観可能に位置しており、エリアセンサ２３は、結像レンズ２７を介して入射する入射光をこの受光面２３ａで受光可能に配置されている。
【００６９】
結像レンズ２７は、外部から読取口を介して入射する入射光を集光してエリアセンサ２３の受光面２３ａに像を結像可能な結像光学系として機能するもので、例えば、鏡筒とこの鏡筒内に収容される複数の集光レンズとにより構成されている。発光ダイオード２１から照射された照明光Ｌｆが二次元コードに反射して読取口に入射する反射光Ｌｒは、結像レンズ２７により集光され、これにより、エリアセンサ２３の受光面２３ａにコード像が結像する。マーカ光投射器６０は、二次元コードの読み取り範囲を示すマーカ光Ｍを読み取り面Ｒに投射する。
【００７０】
次に、コンピュータ系の構成概要を説明する。コンピュータ系は、増幅回路３１、Ａ／Ｄ変換回路３３、メモリ３５、アドレス発生回路３６、同期信号発生回路３８、制御回路４０、操作スイッチ４２、ＬＥＤ４３、ブザー４４、液晶表示器４６、通信インタフェース４８等から構成されている。このコンピュータ系は、前述した光学系によって撮像されたコード像の画像信号をハードウェア的およびソフトウェア的に信号処理し得るものである。また制御回路４０は、二次元コード読み取り装置１０の全体システムに関する制御も行っている。
【００７１】
光学系のエリアセンサ２３から出力される画像信号（アナログ信号）は、増幅回路３１に入力されることで所定ゲインで増幅された後、Ａ／Ｄ変換回路３３に入力されると、アナログ信号からディジタル信号に変換される。そして、ディジタル化された画像信号、つまり画像データ（画像情報）は、メモリ３５に入力されて蓄積される。なお、同期信号発生回路３８は、エリアセンサ２３およびアドレス発生回路３６に対する同期信号を発生可能に構成されており、またアドレス発生回路３６は、この同期信号発生回路３８から供給される同期信号に基づいて、メモリ３５に格納される画像データの格納アドレスを発生可能に構成されている。
【００７２】
メモリ３５は、半導体メモリ装置で、例えばＲＡＭ（ＤＲＡＭ、ＳＲＡＭ等）やＲＯＭ（ＥＰＲＯＭ、ＥＥＰＲＯＭ等）がこれに相当する。またＲＯＭには、画像処理プログラムの他、マーカ光投射器６０、発光ダイオード２１、エリアセンサ２３等の各ハードウェアを制御可能なシステムプログラム等が予め格納されている。
【００７３】
制御回路４０は、二次元コード読み取り装置１０全体を制御可能なコンピュータで、ＣＰＵ、システムバス、入出力インタフェース等からなる。この制御回路４０は、内蔵された入出力インタフェースを介して種々の入出力装置（周辺装置）と接続可能に構成されており、電源スイッチ４１、操作スイッチ４２、ＬＥＤ４３、ブザー４４、液晶表示器４６、通信インタフェース４８、マーカ光投射器６０等が接続されている。
【００７４】
これにより、例えば、コードの読み取り処理、電源スイッチ４１や操作スイッチ４２の監視や管理、またインジケータとして機能するＬＥＤ４３の点灯・消灯、ビープ音やアラーム音を発生可能なブザー４４の鳴動のオンオフ、さらには読み取った二次元コードによるコード内容を画面表示可能な液晶表示器４６の画面制御や外部機器との通信を可能にする通信インタフェース４８の通信制御、マーカ光投射器６０からのマーカ光Ｍの投射制御等を可能にしている。
【００７５】
電源系は、電源スイッチ４１、電池４９等により構成されており、制御回路４０により管理される電源スイッチ４１のオンオフによって、上述した各装置や各回路に、電池４９から供給される駆動電圧の導通や遮断が制御されている。
【００７６】
次に、制御回路４０の読み取り処理について詳しく説明する。読み取り処理は、撮像したコード像から文字コードを読み取る処理である。読み取り処理においては、二次元コードを構成する各セルが黒セルであるか白セルであるかを決定する。このセルの色の決定においてはセル中心の輝度の二値化処理を行なう。セル中心の位置は、特徴パターンの位置をもとにして決定する。特徴パターンは、二次元コード中における位置および範囲が予め決まっていることから、特徴パターンの位置をもとにして、二次元コードの各セルの中心座標を決定することができるのである。
【００７７】
本実施形態の二次元コード読み取り装置１０の制御回路４０は、前述した手法により、特徴パターンの角度検出処理と、特徴パターンを構成するセルの中心位置の検出するセル中心検出処理を行なう。
【００７８】
図１６は、特徴パターンの角度検出処理を示すフローチャートである。図１６、図１７のフローチャートの説明では、データマトリックスを例にして具体的処理を説明する。また、図１８に、この図１６の角度検出処理および図１７のセル中心検出処理の概要を図示している。この図１８も参照しつつ図１６、図１７を説明する。
【００７９】
まず、ステップＳ１（特許請求の範囲の外形推定手段に相当）では、コード外形の概略位置の推定を行なう。この推定には、たとえば、ハフ変換を用いる。ハフ変換は、既に説明したように、計算量が多いという課題を有する。そこで、本実施形態では、ハフ変換を用いる処理をこのステップＳ１におけるコード外形の概略位置の推定に限定し、特徴パターンの検出にはハフ変換は用いない。
【００８０】
続くステップＳ２（特許請求の範囲の概略位置決定手段に相当）では、ステップＳ１においてコード外形の概略位置を推定した結果をもとに、特徴パターンがあると推定できる位置に輝度変化総和を算出するための輝度算出線Ｌを設定する。
【００８１】
データマトリックスには、特徴パターンとして、実線パターンであるアライメントパターンと、点線パターンであるクロックパターンとがある。これらの位置は、データマトリックスの１辺のセル数が３２セル以上の場合には、アライメントパターンは、コードの４辺のうちの互いに接する２辺と、コードの互いに対向する２辺のそれぞれの中点を結ぶ位置に存在する。クロックパターンは、コードの４辺のうちアライメントパターンが存在しない残りの２辺と、コードの互いに対向する２辺のそれぞれの中点を結ぶ位置に存在する。なお、データマトリックスは、互いに接する２辺にアライメントパターンが配置され、残りの２辺にクロックパターンが配置されている正方形を１つのブロックとし、コードが大きくなる場合には、そのブロックを組み合わせて１つのコードが生成される。そのため、４ブロックが組み合わされて１つのコードが形成されている場合、コードの内側に存在するアライメントパターンの位置は、より正確には、コードを２分割した線に隣接する２本のセル列のうち、アライメントパターンが存在するコード外辺から遠い側のセル列である。また、コードの内側に存在するクロックパターンの位置は、より正確には、コードを２分割した線に隣接する２本のセル列のうち、クロックパターンが存在する外辺から遠い側のセル列である。
【００８２】
このように、二次元コードにおいて特徴パターンの位置が予め分かっていることと、ステップＳ１で推定したコード外形の概略位置を用いて、輝度算出線Ｌを設定する。輝度算出線Ｌの設定方法の一例として、図２において、コード中央に左右方向に存在するアライメントパターンに対して輝度算出線Ｌを設定する場合を説明する。
【００８３】
この場合、まず、図２においてコード左辺の中点とコード右辺の中点とを結ぶ直線、つまり、コードを上下２つに分ける上下分割直線を演算する。そして、この上下分割直線を０．５セル分上方向に平行移動させた直線が、コード中央に左右方向に存在するアライメントパターンに対する輝度算出線Ｌである。なお、０．５セル分の平行移動のためには、画像における１セルの大きさを推定する必要がある。この推定方法としては、前述のように、輝度算出線Ｌなどコードに対して略垂直に引いた線上の輝度変化周期から推定する方法がある。また、データマトリックスでは、コードの２辺にクロックパターンが配置されていることから、この２辺のクロックパターンから、撮像画像における１セルサイズの概略推定を行ってもよい。また、ステップＳ１でコード外形を概略ではあるが推定しており、また、既に説明したように、特徴パターンの角度検出においては輝度算出線Ｌがセル中心からずれていても、角度の検出精度の低下はそれほど大きくない。従って、０．５セル分の平行移動を省略してもよい。また、予め設定された一定量だけ平行移動させることとしてもよい。
【００８４】
図１８（Ａ）に、このステップＳ２で設定した輝度算出線Ｌを例示している。図１８（Ａ）に示すように、当然、ステップＳ２の段階では、輝度算出線Ｌはセルの並び方向となっているとは限らない。
【００８５】
続くステップＳ３、Ｓ４は、特許請求の範囲の輝度特徴値算出手段に相当する。ステップＳ３では、輝度算出線Ｌの走査角度範囲を決定する。この走査角度範囲はコードの変形程度に基づいて決定する。たとえば、コードの四辺のうち、本来は特徴パターンと平行である一対の辺の傾きの範囲を上記走査角度範囲とする。より具体的には、図２において、コードの上辺の傾きが−α度、下辺の傾きがβ度であるとすると、上記走査角度範囲を、ステップＳ２で設定した輝度算出線の初期角度−α〜初期角度＋βとする。また、それ以外にも、上記α、βに一定値γを加算あるいは減算した範囲を走査角度範囲としてもよい。さらには、画像におけるコードの最大の変形程度を考慮して、走査角度範囲の振り幅（走査角度範囲の最大値−最小値）を予め設定しておいてもよい。図１８（Ｂ）において一点鎖線で示す範囲は、このステップＳ３で決定した走査角度範囲を概念的に示している。
【００８６】
続くステップＳ４では、輝度算出線Ｌの一方の端を固定して、ステップＳ３で決定した走査角度範囲において所定のステップ角度毎に輝度算出線Ｌを回転移動させつつ、各ステップ角度において輝度変化総和を算出する。なお、輝度算出線Ｌにおいて輝度変化総和を算出する範囲は、始点は固定点Ｏであり、終点は、固定点Ｏではない側のコード外辺である。
【００８７】
ステップＳ５（特許請求の範囲の角度決定手段に相当）では、輝度変化総和がピークとなったときの輝度算出線Ｌの角度を特徴パターンの角度とする。図１８（Ｃ）は、このステップＳ５で決定された角度での輝度算出線Ｌである。
【００８８】
なお、ステップＳ２以下の処理は特徴パターン毎に行う。図２のデータマトリックスでは、アライメントパターンが外辺に２本あり内部にも２本ある。また、クロックパターンも、外辺および内部にも２本ずつある。よって、合計８回、ステップＳ２以下の処理を行う。ただし、外辺の特徴パターンについては、ステップＳ１のコード外形の概略位置推定で代用してもよい。
【００８９】
このようにして特徴パターンの角度を検出した後は、図１７のセル中心検出処理を実行する。図１７において、ステップＳ１１、Ｓ１２は特許請求の範囲の平行移動処理手段に相当する。ステップＳ１１では、輝度算出線Ｌを、セル中心検出処理における初期位置に設定する。この初期位置は、図１６で最終的に決定した角度であって、図１６の角度検出処理での固定点を通る位置である。前述の図１８（Ｃ）は、このステップＳ１１において設定された初期位置の輝度算出線Ｌでもある。
【００９０】
ステップＳ１２では、輝度算出線Ｌを、１セルサイズよりも短い所定の移動間隔（たとえば１／８セル）で所定の移動幅分（たとえば１／２セル〜１セル幅分）にわたり平行移動させつつ、各位置において輝度変化総和を算出する。図１８（Ｄ）がこのステップＳ１２の処理を概念的に示している。なお、移動間隔はセルサイズを演算して決定してもよいし、また、セルサイズよりも十分に狭いと考えられる間隔に予め設定しておいてもよい。移動幅についても、セルサイズを演算して決定してもよい。また、セルサイズの１／２幅分よりは長くなると想定できる一定値に予め設定しておいてもよい。
【００９１】
ステップＳ１３（特許請求の範囲の中心位置決定手段に相当）では、輝度変化総和がピークとなったときの輝度算出線Ｌの位置を特徴パターンの各セルのセル中心を通る線とする。図１８（Ｅ）は、このステップＳ１３で決定されたセル中心を通っている輝度算出線Ｌである。
【００９２】
図１６、図１７の角度検出処理、セル中心検出処理により、特徴パターンの角度、および、特徴パターンを構成する各セルの（セル配列に対して垂直方向の）中心位置が精度よく決定できる。その後、特徴パターンを構成する各セルのセル中心位置をもとにして、二次元コード内のその他のセルのセル中心位置を決定する。
【００９３】
以上、説明した本実施形態によれば、輝度算出線Ｌの角度を走査しつつ、各走査角度において輝度変化総和を算出する（Ｓ４）。そして、輝度変化総和が最小であるときの輝度算出線Ｌの角度を実線パターン（アライメントパターン）の角度とし、輝度変化総和が最大であるときの輝度算出線Ｌの角度を点線パターン（クロックパターン）の角度としている（Ｓ５）。輝度変化総和は、直線上の輝度値の差分を加算するだけの単純な処理であることから、従来手法よりも計算量を少なくすることができる。
【００９４】
また、輝度算出線Ｌの走査角度範囲を、コードの変形程度に基づいて決定していることから（ステップＳ３）、コードの外形の変形程度が小さい場合には、走査角度範囲は狭くなる。よって、走査角度範囲を常に広い範囲とする場合よりも、計算量を少なくすることができる。
【００９５】
さらに、角度検出処理（図１６）は、輝度算出線Ｌがセル中心を通っていない場合にも、精度よく特徴パターンの角度を検出することができる。そして、この角度検出処理で精度よく検出した角度で輝度算出線Ｌを配置して、特徴パターンを構成する各セルの中心位置を決定している。よって、計算量を少なくしつつも、特徴パターンの位置を精度よく決定することができる。従って、精度のよい読み取りが可能となる。
【００９６】
以上、本発明の実施形態を説明したが、本発明は上述の実施形態に限定されるものではなく、次の実施形態も本発明の技術的範囲に含まれ、さらに、下記以外にも要旨を逸脱しない範囲内で種々変更して実施することができる。
【００９７】
たとえば、前述の実施形態では、輝度特徴値として輝度変化総和を算出していた。しかし、これに代えて、実線パターン（アライメントパターン）の場合、サンプリング点における輝度値を単純に加算した輝度値総和を用いてもよい。
【００９８】
また、コード外形の概略位置の推定（ステップＳ１）は、ハフ変換に限られず、公知の種々の手法、たとえば、オープニング・クロージング（膨張収縮）を用いてもよい。
【００９９】
また、本発明が適用できる二次元コードは、データマトリックスに限らず、実線の直線パターンおよび点線の直線パターンの少なくともいずれか一方の特徴パターンを含んでいる二次元コードであればよい。また、特徴パターンは、コードの辺の長さよりも短くてもよい。ＱＲコード（登録商標）のファインダパターンやタイミングパターンは、上記特徴パターンに該当する。よって、本発明は、ＱＲコード（登録商標）の読み取りにも適用することができる。
【０１００】
なお、特徴パターンがコードの辺の長さよりも短い場合には、輝度値総和などの輝度特徴値を算出する範囲を、輝度算出線Ｌがコードと重なっている範囲全部とするのではなく、特徴パターンがあると推定できる範囲に限定する。
【符号の説明】
【０１０１】
１０：二次元コード読み取り装置、      ２０：回路部、      ２１：発光ダイオード、      ２３：エリアセンサ、      ２７：結像レンズ、      ３１：増幅回路、      ３３：Ａ／Ｄ変換回路、      ３５：メモリ、      ３６：アドレス発生回路、      ３８：同期信号発生回路、      ４０：制御回路、      ４１：電源スイッチ、      ４２：操作スイッチ、      ４３：ＬＥＤ、      ４４：ブザー、      ４６：液晶表示器、      ４８：通信インタフェース、      ４９：電池、      ６０：マーカ光投射器、      Ｓ１：外形推定手段、      Ｓ２：概略位置決定手段、      Ｓ３，Ｓ４：輝度特徴値算出手段、      Ｓ５：角度決定手段、      Ｓ１１，１２：平行移動処理手段、      Ｓ１３： 中心位置決定手段
【図１】
0005776562.tif 000002
【図２】
0005776562.tif 000003
【図３】
0005776562.tif 000004
【図４】
0005776562.tif 000005
【図５】
0005776562.tif 000006
【図６】
0005776562.tif 000007
【図７】
0005776562.tif 000008
【図８】
0005776562.tif 000009
【図９】
0005776562.tif 000010
【図１０】
0005776562.tif 000011
【図１１】
0005776562.tif 000012
【図１２】
0005776562.tif 000013
【図１３】
0005776562.tif 000014
【図１４】
0005776562.tif 000015
【図１５】
0005776562.tif 000016
【図１６】
0005776562.tif 000017
【図１７】
0005776562.tif 000018
【図１８】
0005776562.tif 000019