JP2003248792A - 2次元コードのデコード方法、2次元コードのデコード装置、コンピュータに2次元コードのデコード方法を実行させるためのプログラム、このプログラムを記録した記録媒体 - Google Patents
2次元コードのデコード方法、2次元コードのデコード装置、コンピュータに2次元コードのデコード方法を実行させるためのプログラム、このプログラムを記録した記録媒体Info
- Publication number
- JP2003248792A JP2003248792A JP2002046989A JP2002046989A JP2003248792A JP 2003248792 A JP2003248792 A JP 2003248792A JP 2002046989 A JP2002046989 A JP 2002046989A JP 2002046989 A JP2002046989 A JP 2002046989A JP 2003248792 A JP2003248792 A JP 2003248792A
- Authority
- JP
- Japan
- Prior art keywords
- value
- dimensional code
- pattern
- area
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Abstract
(57)【要約】
【課題】 例えばQRコードのように、エンコードされ
たデータ以外の情報を表す機能パターン領域を含む2次
元コードからのデータのデコード処理を効率的に行なえ
るようにする。 【解決手段】 QRコードのシンボルを構成する各モジ
ュールに対応する要素を有するビットデータマトリクス
Bを用いる。位置検出パターンやアライメントパターン
等の機能パターンに対応する要素には、「0」「1」以
外の値(例えば「2」または「3」)を格納しておく。
ビットデータマトリクスBの要素を走査する際、値が
「2」または「3」の要素は、その値を無視し、あるい
は、走査方向を反転する。
たデータ以外の情報を表す機能パターン領域を含む2次
元コードからのデータのデコード処理を効率的に行なえ
るようにする。 【解決手段】 QRコードのシンボルを構成する各モジ
ュールに対応する要素を有するビットデータマトリクス
Bを用いる。位置検出パターンやアライメントパターン
等の機能パターンに対応する要素には、「0」「1」以
外の値(例えば「2」または「3」)を格納しておく。
ビットデータマトリクスBの要素を走査する際、値が
「2」または「3」の要素は、その値を無視し、あるい
は、走査方向を反転する。
Description
【0001】
【発明の属する技術分野】本発明は、例えばQRコード
等の2次元コードのように、夫々が第1または第2の色
で表示される複数のセルで構成され、セルが特定のパタ
ーンで配置された機能パターンを含む機能パターン領域
と、セルが、表現されるべきデータに応じたパターンで
配置されたコードワード領域とを有する2次元コードか
らデータをデコードする方法および装置に関する。本発
明は、また、そのような方法をコンピュータに実行させ
るプログラムおよびこのプログラムを記録した記録媒体
にも関する。
等の2次元コードのように、夫々が第1または第2の色
で表示される複数のセルで構成され、セルが特定のパタ
ーンで配置された機能パターンを含む機能パターン領域
と、セルが、表現されるべきデータに応じたパターンで
配置されたコードワード領域とを有する2次元コードか
らデータをデコードする方法および装置に関する。本発
明は、また、そのような方法をコンピュータに実行させ
るプログラムおよびこのプログラムを記録した記録媒体
にも関する。
【0002】
【従来の技術】近年、縦横両方向に情報を持つ2次元コ
ードが普及しつつある。2次元コードは、白黒のセルを
2次元的に配置したものであり、一方向にしか情報を持
たないバーコードに比べて格段に大きな情報を表現する
ことができる。
ードが普及しつつある。2次元コードは、白黒のセルを
2次元的に配置したものであり、一方向にしか情報を持
たないバーコードに比べて格段に大きな情報を表現する
ことができる。
【0003】図1は、2次元コードの一種であるQRコ
ードのシンボルの一例を示す。図1に示す如く、QRコ
ードのシンボルは、同図右部に拡大して示すように、正
方形のセル要素であるモジュール50を2次元的に正方
形状に配置して構成されている。各モジュール50は白
または黒で表示され、これら白黒のモジュール50の配
置パターンにより情報が表される。シンボルは、当該シ
ンボルで表現すべきデータがエンコードされたコードワ
ード領域52の他に、位置検出パターン54、アライメ
ントパターン56、タイミングパターン58、セパレー
タ領域60といった機能パターン領域や、バージョン情
報領域62、フォーマット情報領域64等の領域が含ま
れている。
ードのシンボルの一例を示す。図1に示す如く、QRコ
ードのシンボルは、同図右部に拡大して示すように、正
方形のセル要素であるモジュール50を2次元的に正方
形状に配置して構成されている。各モジュール50は白
または黒で表示され、これら白黒のモジュール50の配
置パターンにより情報が表される。シンボルは、当該シ
ンボルで表現すべきデータがエンコードされたコードワ
ード領域52の他に、位置検出パターン54、アライメ
ントパターン56、タイミングパターン58、セパレー
タ領域60といった機能パターン領域や、バージョン情
報領域62、フォーマット情報領域64等の領域が含ま
れている。
【0004】このようなQRコードのシンボルからデー
タをデコードする場合、シンボルの画像を含む画像デー
タから位置検出パターン54を探索し、画像データ内で
のシンボルの位置および姿勢を判別したうえで、その他
の機能パターンも探索して各モジュール50の画像デー
タ上での位置を識別する。そして、識別した各モジュー
ル50の位置から黒/白の色を判別して、白黒のモジュ
ール配置を1/0のビット列に変換し、このビット列か
らデータを復元する。その際、得られたビット列には機
能パターン領域に対応するセルの情報も含まれているか
ら、これらセルに対応する部分を除外して、エンコード
されたデータに対応する部分のみを復元することが必要
である。
タをデコードする場合、シンボルの画像を含む画像デー
タから位置検出パターン54を探索し、画像データ内で
のシンボルの位置および姿勢を判別したうえで、その他
の機能パターンも探索して各モジュール50の画像デー
タ上での位置を識別する。そして、識別した各モジュー
ル50の位置から黒/白の色を判別して、白黒のモジュ
ール配置を1/0のビット列に変換し、このビット列か
らデータを復元する。その際、得られたビット列には機
能パターン領域に対応するセルの情報も含まれているか
ら、これらセルに対応する部分を除外して、エンコード
されたデータに対応する部分のみを復元することが必要
である。
【0005】
【発明が解決しようとする課題】しかしながら、ビット
列から機能パターン領域に対応する部分を除外するため
に、各ビットについて機能パターン領域に対応するか否
かをその都度判定したのでは処理効率が悪い。特に、ア
ライメントパターン56については、QRコードのバー
ジョンによって個数や位置が異なっているため、上記の
判定処理は複雑となる。また、データをデコードするう
えでは機能パターン領域内のモジュール50の色を判断
する必要はないのであるから、シンボルを構成する全て
のモジュール50について黒/白を判別してビット列に
変換するのは非効率である。このように、QRコードの
デコード処理においては、処理効率の改善の余地が大き
い。
列から機能パターン領域に対応する部分を除外するため
に、各ビットについて機能パターン領域に対応するか否
かをその都度判定したのでは処理効率が悪い。特に、ア
ライメントパターン56については、QRコードのバー
ジョンによって個数や位置が異なっているため、上記の
判定処理は複雑となる。また、データをデコードするう
えでは機能パターン領域内のモジュール50の色を判断
する必要はないのであるから、シンボルを構成する全て
のモジュール50について黒/白を判別してビット列に
変換するのは非効率である。このように、QRコードの
デコード処理においては、処理効率の改善の余地が大き
い。
【0006】本発明は上記の点に鑑みてなされたもので
あり、例えばQRコードのように、エンコードされたデ
ータ以外の情報を表す機能パターン領域を含む2次元コ
ードのデコード処理を効率的に行なえるようにすること
を目的とする。
あり、例えばQRコードのように、エンコードされたデ
ータ以外の情報を表す機能パターン領域を含む2次元コ
ードのデコード処理を効率的に行なえるようにすること
を目的とする。
【0007】
【課題を解決するための手段】上記の目的を達成するた
め、請求項1に記載された発明は、夫々が第1または第
2の色で表示される複数のセルで構成され、前記セルが
特定のパターンで配置された機能パターンを含む機能パ
ターン領域と、前記セルが、表現されるべきデータに応
じたパターンで配置されたコードワード領域とを有する
2次元コードから前記データをデコードする方法であっ
て、前記2次元コードを構成する各セルに対応した要素
を有する配列の、前記機能パターン領域に含まれるセル
に対応する要素へ、前記機能パターン領域であることを
表す所定の値を格納する機能値格納ステップと、前記2
次元コードを表す画像データに基づいて、前記コードワ
ード領域に含まれる各セルの色が前記第1または第2の
色の何れであるかを判別し、該判別された色に応じた値
を前記配列の対応する要素へ格納するデータ値格納ステ
ップと、前記配列に格納された値に基づいて前記データ
を復元する復元ステップとを備えることを特徴とする。
め、請求項1に記載された発明は、夫々が第1または第
2の色で表示される複数のセルで構成され、前記セルが
特定のパターンで配置された機能パターンを含む機能パ
ターン領域と、前記セルが、表現されるべきデータに応
じたパターンで配置されたコードワード領域とを有する
2次元コードから前記データをデコードする方法であっ
て、前記2次元コードを構成する各セルに対応した要素
を有する配列の、前記機能パターン領域に含まれるセル
に対応する要素へ、前記機能パターン領域であることを
表す所定の値を格納する機能値格納ステップと、前記2
次元コードを表す画像データに基づいて、前記コードワ
ード領域に含まれる各セルの色が前記第1または第2の
色の何れであるかを判別し、該判別された色に応じた値
を前記配列の対応する要素へ格納するデータ値格納ステ
ップと、前記配列に格納された値に基づいて前記データ
を復元する復元ステップとを備えることを特徴とする。
【0008】本発明によれば、機能パターン領域に含ま
れるセルに対応する配列要素に所定の値を格納するの
で、復元ステップにおいて、各要素が機能パターン領域
に対応するものか否かを即座に判断することが可能とな
り、処理効率が向上する。
れるセルに対応する配列要素に所定の値を格納するの
で、復元ステップにおいて、各要素が機能パターン領域
に対応するものか否かを即座に判断することが可能とな
り、処理効率が向上する。
【0009】また、請求項2に記載された発明は、請求
項1記載の2次元コードのデコード方法において、前記
復元ステップは、前記配列の要素を所定の規則に従った
順序で走査しながら各要素に格納された値を取得する第
1ステップと、該第1ステップで取得した値に基づいて
前記データを復元する第2ステップとを含むことを特徴
とする。
項1記載の2次元コードのデコード方法において、前記
復元ステップは、前記配列の要素を所定の規則に従った
順序で走査しながら各要素に格納された値を取得する第
1ステップと、該第1ステップで取得した値に基づいて
前記データを復元する第2ステップとを含むことを特徴
とする。
【0010】また、請求項3に記載された発明は、請求
項2記載の2次元コードのデコード方法において、前記
復元ステップの前記第1ステップでは、前記マトリクス
の要素の値が前記所定の値である場合に、その要素の値
を無視することを特徴とする。
項2記載の2次元コードのデコード方法において、前記
復元ステップの前記第1ステップでは、前記マトリクス
の要素の値が前記所定の値である場合に、その要素の値
を無視することを特徴とする。
【0011】また、請求項4に記載された発明は、請求
項2または3記載の2次元コードのデコード方法におい
て、前記所定の規則は、前記2次元コードの所定のコー
ナー部に対応する前記配列の要素から開始して、全ての
要素を走査するまで、次の(a),(b)を繰り返すも
のであることを特徴とする。 (a)互いに隣接する所定数の列または行を走査単位と
して、各列または各行の要素の値を順次取得しながら列
方向または行方向に走査する。 (b)列または行の終わりに達したら次の前記所定数の
列または行に移ると共に走査の向きを反転し、(a)に
戻る。
項2または3記載の2次元コードのデコード方法におい
て、前記所定の規則は、前記2次元コードの所定のコー
ナー部に対応する前記配列の要素から開始して、全ての
要素を走査するまで、次の(a),(b)を繰り返すも
のであることを特徴とする。 (a)互いに隣接する所定数の列または行を走査単位と
して、各列または各行の要素の値を順次取得しながら列
方向または行方向に走査する。 (b)列または行の終わりに達したら次の前記所定数の
列または行に移ると共に走査の向きを反転し、(a)に
戻る。
【0012】また、請求項5に記載された発明は、請求
項4記載の2次元コードのデコード方法において、前記
機能パターン領域は、前記所定の規則に従った順序で前
記配列の要素を走査するにあたり、対応する要素の値を
無視すべき第1の領域と、前記所定の規則の前記(b)
において列または行の終りに達したとみなすべき第2の
領域とに区別され、前記機能値格納ステップでは、前記
第1の領域に含まれるセルに対応する要素については前
記所定の値として第1の値を格納し、前記第2の領域に
含まれるセルに対応する要素については前記所定の値と
して第2の値を格納し、前記復元ステップの前記第1ス
テップでは、前記配列の要素の値が前記第1の値であれ
ば、その要素の値を無視して引き続き前記所定の規則に
従った順序で走査を行い、前記配列の要素の値が前記第
2の値であれば、その要素の値を無視して前記所定の規
則の(b)で列または行の終わりに達したとみなすこと
を特徴とする。
項4記載の2次元コードのデコード方法において、前記
機能パターン領域は、前記所定の規則に従った順序で前
記配列の要素を走査するにあたり、対応する要素の値を
無視すべき第1の領域と、前記所定の規則の前記(b)
において列または行の終りに達したとみなすべき第2の
領域とに区別され、前記機能値格納ステップでは、前記
第1の領域に含まれるセルに対応する要素については前
記所定の値として第1の値を格納し、前記第2の領域に
含まれるセルに対応する要素については前記所定の値と
して第2の値を格納し、前記復元ステップの前記第1ス
テップでは、前記配列の要素の値が前記第1の値であれ
ば、その要素の値を無視して引き続き前記所定の規則に
従った順序で走査を行い、前記配列の要素の値が前記第
2の値であれば、その要素の値を無視して前記所定の規
則の(b)で列または行の終わりに達したとみなすこと
を特徴とする。
【0013】また、請求項6に記載された発明は、請求
項1乃至5のうち何れか1項記載の方法において、前記
2次元コードは、前記機能パターン領域に含まれる一部
の機能パターンの2次元コード内での位置を特定するた
めの情報を含む位置情報領域を有し、前記機能値格納ス
テップでは、前記一部の機能パターンについて、前記2
次元コードを表す画像データから前記位置情報領域に含
まれる前記情報を取得し、該取得した情報に基づいて前
記一部の機能パターンに含まれるセルを特定し、該特定
したセルに対応する前記配列の要素に前記所定の値を格
納することを特徴とする。
項1乃至5のうち何れか1項記載の方法において、前記
2次元コードは、前記機能パターン領域に含まれる一部
の機能パターンの2次元コード内での位置を特定するた
めの情報を含む位置情報領域を有し、前記機能値格納ス
テップでは、前記一部の機能パターンについて、前記2
次元コードを表す画像データから前記位置情報領域に含
まれる前記情報を取得し、該取得した情報に基づいて前
記一部の機能パターンに含まれるセルを特定し、該特定
したセルに対応する前記配列の要素に前記所定の値を格
納することを特徴とする。
【0014】また、請求項7に記載された発明は、夫々
が第1または第2の色で表示される複数のセルで構成さ
れ、前記セルが特定のパターンで配置された機能パター
ンを含む機能パターン領域と、前記セルが、表現される
べきデータに応じたパターンで配置されたコードワード
領域とを有する2次元コードから前記データをデコード
する装置であって、前記2次元コードを構成する各セル
に対応した要素を有する配列の、前記機能パターン領域
に含まれるセルに対応する要素へ、前記機能パターン領
域であることを表す所定の値を格納する機能値格納手段
と、前記2次元コードを表す画像データに基づいて、前
記コードワード領域に含まれる各セルの色が前記第1ま
たは第2の色の何れであるかを判別し、該判別された色
に応じた値を前記配列の対応する要素へ格納するデータ
値格納手段と、前記配列に格納された値に基づいて前記
データを復元する復元手段とを備えることを特徴とす
る。
が第1または第2の色で表示される複数のセルで構成さ
れ、前記セルが特定のパターンで配置された機能パター
ンを含む機能パターン領域と、前記セルが、表現される
べきデータに応じたパターンで配置されたコードワード
領域とを有する2次元コードから前記データをデコード
する装置であって、前記2次元コードを構成する各セル
に対応した要素を有する配列の、前記機能パターン領域
に含まれるセルに対応する要素へ、前記機能パターン領
域であることを表す所定の値を格納する機能値格納手段
と、前記2次元コードを表す画像データに基づいて、前
記コードワード領域に含まれる各セルの色が前記第1ま
たは第2の色の何れであるかを判別し、該判別された色
に応じた値を前記配列の対応する要素へ格納するデータ
値格納手段と、前記配列に格納された値に基づいて前記
データを復元する復元手段とを備えることを特徴とす
る。
【0015】また、請求項8に記載された発明は、請求
項7記載の2次元コードのデコード装置において、前記
復元手段は、前記配列の要素を所定の規則に従った順序
で走査しながら各要素に格納された値を取得する第1手
段と、該第1手段で取得した値に基づいて前記データを
復元する第2手段とを含むことを特徴とする。
項7記載の2次元コードのデコード装置において、前記
復元手段は、前記配列の要素を所定の規則に従った順序
で走査しながら各要素に格納された値を取得する第1手
段と、該第1手段で取得した値に基づいて前記データを
復元する第2手段とを含むことを特徴とする。
【0016】また、請求項9に記載された発明は、請求
項8記載の2次元コードのデコード装置において、前記
復元手段の前記第1手段は、前記マトリクスの要素の値
が前記所定の値である場合に、その要素の値を無視する
ことを特徴とする。
項8記載の2次元コードのデコード装置において、前記
復元手段の前記第1手段は、前記マトリクスの要素の値
が前記所定の値である場合に、その要素の値を無視する
ことを特徴とする。
【0017】また、請求項10に記載された発明は、請
求項8または9記載の2次元コードのデコード装置にお
いて、前記所定の規則は、前記2次元コードの所定のコ
ーナー部に対応する前記配列の要素から開始して、全て
の要素を走査するまで、次の(a),(b)を繰り返す
ものであることを特徴とする。 (a)互いに隣接する所定数の列または行を走査単位と
して、各列または各行の要素の値を順次取得しながら列
方向または行方向に走査する。 (b)列または行の終わりに達したら次の前記所定数の
列または行に移ると共に走査の向きを反転し、(a)に
戻る。
求項8または9記載の2次元コードのデコード装置にお
いて、前記所定の規則は、前記2次元コードの所定のコ
ーナー部に対応する前記配列の要素から開始して、全て
の要素を走査するまで、次の(a),(b)を繰り返す
ものであることを特徴とする。 (a)互いに隣接する所定数の列または行を走査単位と
して、各列または各行の要素の値を順次取得しながら列
方向または行方向に走査する。 (b)列または行の終わりに達したら次の前記所定数の
列または行に移ると共に走査の向きを反転し、(a)に
戻る。
【0018】また、請求項11に記載された発明は、請
求項10記載の2次元コードのデコード装置において、
前記機能パターン領域は、前記所定の規則に従った順序
で前記配列の要素を走査するにあたり、対応する要素の
値を無視すべき第1の領域と、前記所定の規則の前記
(b)において列または行の終りに達したとみなすべき
第2の領域とに区別され、前記機能値格納手段は、前記
第1の領域に含まれるセルに対応する要素については前
記所定の値として第1の値を格納し、前記第2の領域に
含まれるセルに対応する要素については前記所定の値と
して第2の値を格納し、前記復元手段の前記第1手段
は、前記配列の要素の値が前記第1の値であれば、その
要素の値を無視して引き続き前記所定の規則に従った順
序で走査を行い、前記配列の要素の値が前記第2の値で
あれば、その要素の値を無視して前記所定の規則の
(b)で列または行の終わりに達したとみなすことを特
徴とする。
求項10記載の2次元コードのデコード装置において、
前記機能パターン領域は、前記所定の規則に従った順序
で前記配列の要素を走査するにあたり、対応する要素の
値を無視すべき第1の領域と、前記所定の規則の前記
(b)において列または行の終りに達したとみなすべき
第2の領域とに区別され、前記機能値格納手段は、前記
第1の領域に含まれるセルに対応する要素については前
記所定の値として第1の値を格納し、前記第2の領域に
含まれるセルに対応する要素については前記所定の値と
して第2の値を格納し、前記復元手段の前記第1手段
は、前記配列の要素の値が前記第1の値であれば、その
要素の値を無視して引き続き前記所定の規則に従った順
序で走査を行い、前記配列の要素の値が前記第2の値で
あれば、その要素の値を無視して前記所定の規則の
(b)で列または行の終わりに達したとみなすことを特
徴とする。
【0019】また、請求項12に記載された発明は、請
求項7乃至11のうち何れか1項記載の装置において、
前記2次元コードは、前記機能パターン領域に含まれる
一部の機能パターンの2次元コード内での位置を特定す
るための情報を含む位置情報領域を有し、前記機能値格
納手段は、前記一部の機能パターンについて、前記2次
元コードを表す画像データから前記位置情報領域に含ま
れる前記情報を取得し、該取得した情報に基づいて前記
一部の機能パターンに含まれるセルを特定し、該特定し
たセルに対応する前記配列の要素に前記所定の値を格納
することを特徴とする。
求項7乃至11のうち何れか1項記載の装置において、
前記2次元コードは、前記機能パターン領域に含まれる
一部の機能パターンの2次元コード内での位置を特定す
るための情報を含む位置情報領域を有し、前記機能値格
納手段は、前記一部の機能パターンについて、前記2次
元コードを表す画像データから前記位置情報領域に含ま
れる前記情報を取得し、該取得した情報に基づいて前記
一部の機能パターンに含まれるセルを特定し、該特定し
たセルに対応する前記配列の要素に前記所定の値を格納
することを特徴とする。
【0020】また、請求項13に記載された発明は、請
求項1乃至6のうち何れか1項記載の2次元コードのデ
コード方法をコンピュータに実行させるためのプログラ
ムに係るものであり、請求項14に記載された発明は、
このプログラムを記録した記録媒体に係るものである。
求項1乃至6のうち何れか1項記載の2次元コードのデ
コード方法をコンピュータに実行させるためのプログラ
ムに係るものであり、請求項14に記載された発明は、
このプログラムを記録した記録媒体に係るものである。
【0021】
【発明の実施の形態】図2は、本発明の一実施形態であ
る2次元コードスキャナー10のシステム構成図であ
る。2次元コードスキャナー10は、QRコードのシン
ボルの画像を読み取ってデコード処理を行い、そのデコ
ード結果を出力するものである。なお、QRコードには
モデル1およびモデル2の2種類のモデルが存在する
が、本実施形態では、モデル1の機能を拡張した仕様を
持つモデル2のQRコードをデコードするものとして説
明する。
る2次元コードスキャナー10のシステム構成図であ
る。2次元コードスキャナー10は、QRコードのシン
ボルの画像を読み取ってデコード処理を行い、そのデコ
ード結果を出力するものである。なお、QRコードには
モデル1およびモデル2の2種類のモデルが存在する
が、本実施形態では、モデル1の機能を拡張した仕様を
持つモデル2のQRコードをデコードするものとして説
明する。
【0022】図2に示す如く、2次元コードスキャナー
10は、CPU12、光センサ14、AD変換器16、
ビデオRAM(VRAM)18、ROM20、光源2
2、結像光学系24、キャプチャボタン26、出力部2
8等を備えている。光源22はCPU12からの指示に
応じて対象面30を照明する。照明された対象面30の
像は結像光学系24により光センサ14の受光面上に結
像される。光センサ14は、例えばCCD等の2次元的
に配置された複数の受光素子を備えており、各受光素子
を走査して、受光面に結像した画像の光強度分布に応じ
た信号をAD変換器16へ出力する。AD変換器16
は、CPU12からの指示に応じて、光センサ14から
出力された信号をデジタルデータに変換し、グレイスケ
ールで表された2次元画像データとしてVRAM18へ
格納する。なお、光センサ14としてリニアセンサを用
い、対象面30の像を回転ミラー等でスキャンして2次
元画像データを得ることとしてもよい。
10は、CPU12、光センサ14、AD変換器16、
ビデオRAM(VRAM)18、ROM20、光源2
2、結像光学系24、キャプチャボタン26、出力部2
8等を備えている。光源22はCPU12からの指示に
応じて対象面30を照明する。照明された対象面30の
像は結像光学系24により光センサ14の受光面上に結
像される。光センサ14は、例えばCCD等の2次元的
に配置された複数の受光素子を備えており、各受光素子
を走査して、受光面に結像した画像の光強度分布に応じ
た信号をAD変換器16へ出力する。AD変換器16
は、CPU12からの指示に応じて、光センサ14から
出力された信号をデジタルデータに変換し、グレイスケ
ールで表された2次元画像データとしてVRAM18へ
格納する。なお、光センサ14としてリニアセンサを用
い、対象面30の像を回転ミラー等でスキャンして2次
元画像データを得ることとしてもよい。
【0023】CPU12は、ROM20に記憶されたプ
ログラムを実行することにより、VRAM20に格納さ
れた画像データからQRコードのデコード処理を実行す
る。そして、デコードしたデータ(またはデコードに失
敗した場合はエラー信号)を出力部28から他の適宜な
装置(例えばコンピュータ等)へ出力させる。ただし、
2次元コードスキャナー10自体に表示部を設けてデコ
ード結果表示やエラー表示を行なうようにしてもよい。
ログラムを実行することにより、VRAM20に格納さ
れた画像データからQRコードのデコード処理を実行す
る。そして、デコードしたデータ(またはデコードに失
敗した場合はエラー信号)を出力部28から他の適宜な
装置(例えばコンピュータ等)へ出力させる。ただし、
2次元コードスキャナー10自体に表示部を設けてデコ
ード結果表示やエラー表示を行なうようにしてもよい。
【0024】次に、QRコードの概要について述べる。
【0025】上記したように、図1に示すQRコードの
シンボルは、コードワード領域52、位置検出パターン
54、アライメントパターン56、タイミングパターン
58、セパレータ領域60、バージョン情報領域62、
およびフォーマット情報領域64を含んでいる。なお、
QRコードのシンボルは、位置検出パターン54が左
上、右上、左下に位置するような姿勢が正立姿勢であ
り、以下の記載では、この正立姿勢を基準として上下左
右の向きを表すものとする。
シンボルは、コードワード領域52、位置検出パターン
54、アライメントパターン56、タイミングパターン
58、セパレータ領域60、バージョン情報領域62、
およびフォーマット情報領域64を含んでいる。なお、
QRコードのシンボルは、位置検出パターン54が左
上、右上、左下に位置するような姿勢が正立姿勢であ
り、以下の記載では、この正立姿勢を基準として上下左
右の向きを表すものとする。
【0026】コードワード領域52は、シンボルで表現
すべきデータがエンコードされたデータコードワード
と、データコードワードのエラー訂正を行なうためのエ
ラー訂正コードワードとが格納された領域である。
すべきデータがエンコードされたデータコードワード
と、データコードワードのエラー訂正を行なうためのエ
ラー訂正コードワードとが格納された領域である。
【0027】位置検出パターン54は、シンボルの左
上、右上、および左下の3つのコーナー部に配置されて
いる。図3に拡大して示すように、位置検出パターン5
4は、(7×7)モジュールの黒の正方形と、(5×
5)モジュールの白の正方形と、(3×3)モジュール
の黒の正方形を重ねた構成を有しており、中心部付近を
横断した際に、黒、白、黒、白、黒の幅の比が「1:
1:3:1:1」となるように構成されている。後述す
るデコード処理においては、先ず、このような白黒の比
率を用いて各位置検出パターン54の位置を検出するこ
とで、画像データ内でのシンボルの位置および姿勢を認
識する。
上、右上、および左下の3つのコーナー部に配置されて
いる。図3に拡大して示すように、位置検出パターン5
4は、(7×7)モジュールの黒の正方形と、(5×
5)モジュールの白の正方形と、(3×3)モジュール
の黒の正方形を重ねた構成を有しており、中心部付近を
横断した際に、黒、白、黒、白、黒の幅の比が「1:
1:3:1:1」となるように構成されている。後述す
るデコード処理においては、先ず、このような白黒の比
率を用いて各位置検出パターン54の位置を検出するこ
とで、画像データ内でのシンボルの位置および姿勢を認
識する。
【0028】アライメントパターン56は、図4に拡大
して示すように、(5×5)モジュールの黒の正方形
と、(3×3)モジュールの白の正方形と、(1×1)
モジュールの黒の正方形を重ねた構成を有しており、中
心部付近を横断した際に、黒、白、黒、白、黒の幅の比
が「1:1:1:1:1」となるように構成されてい
る。後述するデコード処理においては、画像データ上の
シンボルに歪みがある場合にその歪みを補正するのに用
いられる。なお、QRコードには1〜40のバージョン
が存在するが、アライメントパターン56の個数および
位置は、バージョン数によって異なっており、また、バ
ージョン0および1のQRコードではアライメントパタ
ーン56は省略される。
して示すように、(5×5)モジュールの黒の正方形
と、(3×3)モジュールの白の正方形と、(1×1)
モジュールの黒の正方形を重ねた構成を有しており、中
心部付近を横断した際に、黒、白、黒、白、黒の幅の比
が「1:1:1:1:1」となるように構成されてい
る。後述するデコード処理においては、画像データ上の
シンボルに歪みがある場合にその歪みを補正するのに用
いられる。なお、QRコードには1〜40のバージョン
が存在するが、アライメントパターン56の個数および
位置は、バージョン数によって異なっており、また、バ
ージョン0および1のQRコードではアライメントパタ
ーン56は省略される。
【0029】タイミングパターン58は、図5に拡大し
て示すように、隣合う位置検出パターン54の最も内側
のモジュール50を結ぶ直線上に、白のモジュール50
と黒のモジュール50とが1つずつ交互に配置されるこ
とにより構成されている。
て示すように、隣合う位置検出パターン54の最も内側
のモジュール50を結ぶ直線上に、白のモジュール50
と黒のモジュール50とが1つずつ交互に配置されるこ
とにより構成されている。
【0030】セパレータ領域60は、各位置検出パター
ン54とバージョン情報領域62およびフォーマット情
報領域64との間に設けられた幅1モジュールの白色の
領域である。
ン54とバージョン情報領域62およびフォーマット情
報領域64との間に設けられた幅1モジュールの白色の
領域である。
【0031】バージョン情報領域62は、シンボルのバ
ージョン情報を表す領域であり、右上の位置検出パター
ン54の左隣および左下の位置検出パターン54の上隣
に上記セパレータ領域60を隔てて配置されている。な
お、バージョン情報領域62はバージョン7以上のQR
コードのシンボルのみに設けられる。
ージョン情報を表す領域であり、右上の位置検出パター
ン54の左隣および左下の位置検出パターン54の上隣
に上記セパレータ領域60を隔てて配置されている。な
お、バージョン情報領域62はバージョン7以上のQR
コードのシンボルのみに設けられる。
【0032】フォーマット情報領域64は、エラー訂正
レベルとマスキングの際のマスクパターンとに関する情
報を表す領域であり、左上の位置検出パターン54の下
辺と右辺、右上の位置検出パターン54の下辺、および
左下の位置検出パターン54の右辺に沿って上記セパレ
ータ領域60を隔てて配置されている。
レベルとマスキングの際のマスクパターンとに関する情
報を表す領域であり、左上の位置検出パターン54の下
辺と右辺、右上の位置検出パターン54の下辺、および
左下の位置検出パターン54の右辺に沿って上記セパレ
ータ領域60を隔てて配置されている。
【0033】以下、本実施形態におけるシンボルのデコ
ード処理について説明する。図6は、本実施形態におい
てCPU12が実行するデコード処理の全体を概略的に
表すフローチャートである。図6に示すように、デコー
ド処理は、画像キャプチャ/2値化処理(S100)、
ファインダーパターン探索処理(S200)、バージョ
ン情報取得処理(S300)、タイミングパターン取得
処理(S400)、アライメントパターン探索処理(S
500)、ビットデータマトリクス取得処理(S60
0)、フォーマット情報取得処理(S700)、マスキ
ング解除処理(S800)、コードワード変換処理(S
900)、エラー訂正処理(S1000)、および、デ
ータ復元処理(S1100)から構成されている。
ード処理について説明する。図6は、本実施形態におい
てCPU12が実行するデコード処理の全体を概略的に
表すフローチャートである。図6に示すように、デコー
ド処理は、画像キャプチャ/2値化処理(S100)、
ファインダーパターン探索処理(S200)、バージョ
ン情報取得処理(S300)、タイミングパターン取得
処理(S400)、アライメントパターン探索処理(S
500)、ビットデータマトリクス取得処理(S60
0)、フォーマット情報取得処理(S700)、マスキ
ング解除処理(S800)、コードワード変換処理(S
900)、エラー訂正処理(S1000)、および、デ
ータ復元処理(S1100)から構成されている。
【0034】図7〜図10は、図6に示す上記各処理の
概要を表す図である。図7に示すように、ファインダー
パターン探索処理(S200)では、画像キャプチャ/
2値化処理(S100)で得られた画像データ内での3
つの位置検出パターン54の中心位置が決定され、バー
ジョン情報取得処理(S300)では、バージョン情報
領域62からバージョン情報が取得される。そして、タ
イミングパターン取得処理(S400)では、タイミン
グパターン58の各モジュール50の中心位置が決定さ
れる。次に、図8に示すように、アライメントパターン
探索処理(S500)では、各アライメントパターン5
6の中心位置が決定される。そして、ビットデータマト
リクス取得処理(S600)では、位置検出パターン5
4、タイミングパターン58、およびアライメントパタ
ーン56について決定された各点の位置に基づいて、シ
ンボルの各モジュール50上に各交点が位置するような
グリッドパターンが設定され、このグリッドを用いて各
モジュール50の黒/白に応じた値を持つ2次元マトリ
クス(以下、ビットデータマトリクスBと称する)が生
成される。そして、図9に示すように、フォーマット情
報取得処理(S700)では、ビットデータマトリクス
Bのフォーマット情報領域64に対応する要素の値から
フォーマット情報が取得され、マスキング解除処理(S
800)では、フォーマット情報に基づいて、マスキン
グが解除される。最後に、図10に示すように、コード
ワード変換処理(S900)において、マスキングが解
除されたビットデータマトリクスBから、シンボル上で
のコードワード配置に従って8ビットの各コードワード
が取得され、エラー訂正処理(S1000)でエラー訂
正処理が行なわれた後、データ復元処理(S1100)
においてデータが復元される。
概要を表す図である。図7に示すように、ファインダー
パターン探索処理(S200)では、画像キャプチャ/
2値化処理(S100)で得られた画像データ内での3
つの位置検出パターン54の中心位置が決定され、バー
ジョン情報取得処理(S300)では、バージョン情報
領域62からバージョン情報が取得される。そして、タ
イミングパターン取得処理(S400)では、タイミン
グパターン58の各モジュール50の中心位置が決定さ
れる。次に、図8に示すように、アライメントパターン
探索処理(S500)では、各アライメントパターン5
6の中心位置が決定される。そして、ビットデータマト
リクス取得処理(S600)では、位置検出パターン5
4、タイミングパターン58、およびアライメントパタ
ーン56について決定された各点の位置に基づいて、シ
ンボルの各モジュール50上に各交点が位置するような
グリッドパターンが設定され、このグリッドを用いて各
モジュール50の黒/白に応じた値を持つ2次元マトリ
クス(以下、ビットデータマトリクスBと称する)が生
成される。そして、図9に示すように、フォーマット情
報取得処理(S700)では、ビットデータマトリクス
Bのフォーマット情報領域64に対応する要素の値から
フォーマット情報が取得され、マスキング解除処理(S
800)では、フォーマット情報に基づいて、マスキン
グが解除される。最後に、図10に示すように、コード
ワード変換処理(S900)において、マスキングが解
除されたビットデータマトリクスBから、シンボル上で
のコードワード配置に従って8ビットの各コードワード
が取得され、エラー訂正処理(S1000)でエラー訂
正処理が行なわれた後、データ復元処理(S1100)
においてデータが復元される。
【0035】以下、各処理の内容を詳細に説明する。
【0036】図11は、画像キャプチャ/2値化処理の
フローチャートである。同図に示すように、先ず、S1
02において、キャプチャボタン26が押下されている
か否かが判別される。その結果、キャプチャボタン26
が押下されていれば、S104において、AD変換器1
6にキャプチャ指示が送られる。これに応じて、AD変
換器16は光センサ14の出力信号をデジタル画像デー
タに変換し、この画像データをVRAM18に格納す
る。そして、S106において、VRAM18に格納さ
れた画像データに基づいて、2値化のための閾値が決定
され、S108では、この閾値を用いてVRAMに格納
された画像データが2値化される。
フローチャートである。同図に示すように、先ず、S1
02において、キャプチャボタン26が押下されている
か否かが判別される。その結果、キャプチャボタン26
が押下されていれば、S104において、AD変換器1
6にキャプチャ指示が送られる。これに応じて、AD変
換器16は光センサ14の出力信号をデジタル画像デー
タに変換し、この画像データをVRAM18に格納す
る。そして、S106において、VRAM18に格納さ
れた画像データに基づいて、2値化のための閾値が決定
され、S108では、この閾値を用いてVRAMに格納
された画像データが2値化される。
【0037】次に、ファインダーパターン探索処理につ
いて説明する。ファインダーパターンは、3つの位置検
出パターンで構成されている。ファインダーパターン探
索処理では、2値化された画像データを、図12に示す
ように、横方向に3行ごとに走査して増減表を取得し、
所定のテンプレートパターンとのマッチングにより3箇
所に配置されている位置検出パターン54を探索する。
図13(A)は位置検出パターンの増減表を示す。同図
に示すように、増減表とは、画像を走査したときに得ら
れる画像の濃度値(黒が「1」、白が「0」とする)の
変化パターンを意味する。なお、位置検出パターン54
は上記のように、黒と白の幅が「1:1:3:1:1」
となるように構成されているが、黒と白の幅の比は、2
値化する際に用いた閾値の大きさの影響を受け易い。こ
のため、黒と白の幅の比に基づいてテンプレートパター
ンと増減表とのマッチングを行なったのでは、位置検出
パターン54を正しく検出できなくなってしまうおそれ
がある。そこで、本実施形態では、図13(B)に示す
ように、白(0)から黒(1)へ変化する点の間の距離
および黒(1)から白(0)へ変化する点の間の距離の
比(位置検出パターン54では同図に示すように「1:
2:2:1」)に基づいて、マッチング処理を行なうこ
ととしている。なお、以下の記載では、増減表が白から
黒、または、黒から白へ変化する点を境界点と称し、ま
た、上記のような境界点間の距離の比を境界点間距離比
と称する。すなわち、位置検出パターン54のテンプレ
ートパターンの境界点間距離比は、「1:2:2:1」
である。
いて説明する。ファインダーパターンは、3つの位置検
出パターンで構成されている。ファインダーパターン探
索処理では、2値化された画像データを、図12に示す
ように、横方向に3行ごとに走査して増減表を取得し、
所定のテンプレートパターンとのマッチングにより3箇
所に配置されている位置検出パターン54を探索する。
図13(A)は位置検出パターンの増減表を示す。同図
に示すように、増減表とは、画像を走査したときに得ら
れる画像の濃度値(黒が「1」、白が「0」とする)の
変化パターンを意味する。なお、位置検出パターン54
は上記のように、黒と白の幅が「1:1:3:1:1」
となるように構成されているが、黒と白の幅の比は、2
値化する際に用いた閾値の大きさの影響を受け易い。こ
のため、黒と白の幅の比に基づいてテンプレートパター
ンと増減表とのマッチングを行なったのでは、位置検出
パターン54を正しく検出できなくなってしまうおそれ
がある。そこで、本実施形態では、図13(B)に示す
ように、白(0)から黒(1)へ変化する点の間の距離
および黒(1)から白(0)へ変化する点の間の距離の
比(位置検出パターン54では同図に示すように「1:
2:2:1」)に基づいて、マッチング処理を行なうこ
ととしている。なお、以下の記載では、増減表が白から
黒、または、黒から白へ変化する点を境界点と称し、ま
た、上記のような境界点間の距離の比を境界点間距離比
と称する。すなわち、位置検出パターン54のテンプレ
ートパターンの境界点間距離比は、「1:2:2:1」
である。
【0038】図14は、本実施形態の説明で用いる座標
系の設定を示す。同図に示すように、本実施形態では、
画像データは縦横が(M×N)ドットの画素で表される
ものとし、画像データの左上コーナーを原点として、画
像データの右向きにX軸、下向きにY軸をとり、画像デ
ータを基準とする(X,Y)座標を画像の画素単位で表
すものとする。また、画像データ上に表されQRコード
のシンボルについて、シンボルの左上コーナーを原点と
して、QRコードの右向きにx軸、下向きにy軸をと
り、シンボルを基準とする(x、y)座標をモジュール
単位で表すものとする。
系の設定を示す。同図に示すように、本実施形態では、
画像データは縦横が(M×N)ドットの画素で表される
ものとし、画像データの左上コーナーを原点として、画
像データの右向きにX軸、下向きにY軸をとり、画像デ
ータを基準とする(X,Y)座標を画像の画素単位で表
すものとする。また、画像データ上に表されQRコード
のシンボルについて、シンボルの左上コーナーを原点と
して、QRコードの右向きにx軸、下向きにy軸をと
り、シンボルを基準とする(x、y)座標をモジュール
単位で表すものとする。
【0039】図15および図16は、ファインダーパタ
ーン探索処理のフローチャートである。図15に示すよ
うに、先ず、S202において、検出された位置検出パ
ターン54の個数を表す検出数カウンタCが「0」に初
期化され、S204において、画像データの上から何画
素目の行を走査するかを示す走査行カウンタiが「1」
に初期化される。
ーン探索処理のフローチャートである。図15に示すよ
うに、先ず、S202において、検出された位置検出パ
ターン54の個数を表す検出数カウンタCが「0」に初
期化され、S204において、画像データの上から何画
素目の行を走査するかを示す走査行カウンタiが「1」
に初期化される。
【0040】次に、S206において、画像データのi
行目をX方向に走査して増減表を得ながら、テンプレー
トパターンの境界点間距離比「1:2:2:1」とマッ
チするパターンが検出されるか否かが判別される。図1
7は、S206において、テンプレートパターンとマッ
チするパターンが検出される様子を示す。同図に示す例
では、境界点Aからの境界点間距離比が「1:2:2:
1」となり、テンプレートパターンにマッチするパター
ンが検出されることになる。
行目をX方向に走査して増減表を得ながら、テンプレー
トパターンの境界点間距離比「1:2:2:1」とマッ
チするパターンが検出されるか否かが判別される。図1
7は、S206において、テンプレートパターンとマッ
チするパターンが検出される様子を示す。同図に示す例
では、境界点Aからの境界点間距離比が「1:2:2:
1」となり、テンプレートパターンにマッチするパター
ンが検出されることになる。
【0041】次に、S208において、i行目でテンプ
レートパターンにマッチするパターンが検出されたかど
うかが判別され、検出されなかった場合は、S210に
おいて、走査行カウンタiに「3」が加算される。そし
て、S212において、走査行iの値がM(画像データ
の縦方向の画素数)以下であるか否かが判別される。そ
の結果、i≦MであればS206へ戻り、一方、i>M
である場合は、画像データ内に位置検出パターン54は
存在しないと判断されて、S214においてエラー出力
が行なわれた後、処理は終了する。
レートパターンにマッチするパターンが検出されたかど
うかが判別され、検出されなかった場合は、S210に
おいて、走査行カウンタiに「3」が加算される。そし
て、S212において、走査行iの値がM(画像データ
の縦方向の画素数)以下であるか否かが判別される。そ
の結果、i≦MであればS206へ戻り、一方、i>M
である場合は、画像データ内に位置検出パターン54は
存在しないと判断されて、S214においてエラー出力
が行なわれた後、処理は終了する。
【0042】一方、S208において、テンプレートに
マッチするパターンが検出されたと判別された場合は、
S216において、マッチしたパターンの中心点(つま
り、図17における境界点Cと境界点Dとの中点)P1
のX座標Pxが決定される。次に、S218において、
図18に示すように、中心点P1を通るY方向の直線に
沿って、点P1を中心に、上下に3個ずつの境界点が含
まれる範囲で走査が行なわれて増減表が取得される。そ
して、この増減表の境界点間距離比についてテンプレー
トパターンとのマッチング処理が行なわれる。その結
果、マッチする場合には、S220において、マッチし
たパターンの中心点P2のY座標PYが決定される。さら
に、S222およびS224において、点P2を通り、
X軸に対して±45度の2つの斜め方向についても点P
2を中心として同様のマッチング処理が行なわれる。そ
の結果、±45度の何れの方向についてもテンプレート
とマッチした場合には、位置検出パターン54が検出さ
れたと判断される。この場合、S226において、検出
数カウンタCに「1」が加えられ、S228において、
座標(Px,PY)がC番目に探索された位置検出パター
ンの中心点PCの候補座標として記憶された後、図16
に示すS230へ進む。
マッチするパターンが検出されたと判別された場合は、
S216において、マッチしたパターンの中心点(つま
り、図17における境界点Cと境界点Dとの中点)P1
のX座標Pxが決定される。次に、S218において、
図18に示すように、中心点P1を通るY方向の直線に
沿って、点P1を中心に、上下に3個ずつの境界点が含
まれる範囲で走査が行なわれて増減表が取得される。そ
して、この増減表の境界点間距離比についてテンプレー
トパターンとのマッチング処理が行なわれる。その結
果、マッチする場合には、S220において、マッチし
たパターンの中心点P2のY座標PYが決定される。さら
に、S222およびS224において、点P2を通り、
X軸に対して±45度の2つの斜め方向についても点P
2を中心として同様のマッチング処理が行なわれる。そ
の結果、±45度の何れの方向についてもテンプレート
とマッチした場合には、位置検出パターン54が検出さ
れたと判断される。この場合、S226において、検出
数カウンタCに「1」が加えられ、S228において、
座標(Px,PY)がC番目に探索された位置検出パター
ンの中心点PCの候補座標として記憶された後、図16
に示すS230へ進む。
【0043】一方、上記S218、S222、またはS
224の何れかのステップにおいてマッチしないと判別
された場合には、i行目では位置検出パターン54は検
出されなかったと判断されて、上記S210へ進む。
224の何れかのステップにおいてマッチしないと判別
された場合には、i行目では位置検出パターン54は検
出されなかったと判断されて、上記S210へ進む。
【0044】図16に示すS230以降では、上記のよ
うに決定した位置検出パターン54の中心点PCの候補
座標の上下近傍についても画像を走査して候補座標を求
め、それら候補座標から位置検出パターン54の中心点
PCの座標が最終的に決定される。
うに決定した位置検出パターン54の中心点PCの候補
座標の上下近傍についても画像を走査して候補座標を求
め、それら候補座標から位置検出パターン54の中心点
PCの座標が最終的に決定される。
【0045】先ずS230では、走査行カウンタiの値
がサブカウンタi0に記憶され、続くS232におい
て、サブカウンタi0に「1」が加えられる。そして、
S234において、画像データのi0行目を、候補座標
(PX,PY)を中心に左右3個ずつの境界点が検出され
る範囲で走査して、テンプレートパターンとマッチする
か否かが判別される。その結果、マッチしたと判別され
た場合には、S235において、マッチしたパターンの
中心点をY方向に走査してテンプレートとマッチするか
否かが判別される。その結果、マッチする場合はその中
心座標が求められ、位置検出パターン54の中心点PC
の候補座標として記憶された後、S232へ戻る。
がサブカウンタi0に記憶され、続くS232におい
て、サブカウンタi0に「1」が加えられる。そして、
S234において、画像データのi0行目を、候補座標
(PX,PY)を中心に左右3個ずつの境界点が検出され
る範囲で走査して、テンプレートパターンとマッチする
か否かが判別される。その結果、マッチしたと判別され
た場合には、S235において、マッチしたパターンの
中心点をY方向に走査してテンプレートとマッチするか
否かが判別される。その結果、マッチする場合はその中
心座標が求められ、位置検出パターン54の中心点PC
の候補座標として記憶された後、S232へ戻る。
【0046】一方、S234またはS235でマッチし
なかった場合は、S238において、サブカウンタi0
に再び走査行カウンタiの値が設定され、続くS240
において、サブカウンタi0から「1」が減じられる。
そして、上記S234,S235と同様にして、画像デ
ータのi0行目においてテンプレートパターンとマッチ
するか否かが判別され、マッチした場合には、S244
において、マッチしたパターンの中心座標が求められ、
位置検出パターン54の中心点PCの候補座標として記
憶された後、S240へ戻る。
なかった場合は、S238において、サブカウンタi0
に再び走査行カウンタiの値が設定され、続くS240
において、サブカウンタi0から「1」が減じられる。
そして、上記S234,S235と同様にして、画像デ
ータのi0行目においてテンプレートパターンとマッチ
するか否かが判別され、マッチした場合には、S244
において、マッチしたパターンの中心座標が求められ、
位置検出パターン54の中心点PCの候補座標として記
憶された後、S240へ戻る。
【0047】一方、S242またはS243でマッチし
なかった場合は、S246において、上記S228,S
236,S244で記憶した候補点の座標をC番目の位
置検出パターン54の中心点PCの座標候補グループと
する。そして、S248にて、C=3が成立するか否か
が判別され、C=3が不成立であれば、次の位置検出パ
ターン54の探索を行なうべく、図15のS204へ戻
る。
なかった場合は、S246において、上記S228,S
236,S244で記憶した候補点の座標をC番目の位
置検出パターン54の中心点PCの座標候補グループと
する。そして、S248にて、C=3が成立するか否か
が判別され、C=3が不成立であれば、次の位置検出パ
ターン54の探索を行なうべく、図15のS204へ戻
る。
【0048】一方、C=3が成立する場合は、3個の位
置検出パターン54のすべてについて中心候補グループ
が求められたことになる。この場合、S250におい
て、グループ1,2,3の夫々の候補座標の平均座標
が、3つの位置検出パターン54の中心点PCの座標と
して夫々計算される。次に、S252において、計算さ
れた各中心座標の位置関係から、3つの中心点PCが、
左上、右上、または左下のどの位置の位置検出パターン
54の中心であるかが識別される。そして、最後に、S
254において、図19に示すように、各位置検出パタ
ーン54について、夫々の中心点PCを通るx軸および
y軸に平行な直線上に位置し、かつ、これら直線上の増
減表の境界点A,B,C,中心点PC、境界点D,E,
Fの間の6個の中点(x,y方向合わせて12個)の
(X,Y)座標が計算される。なお、各位置検出パター
ン54について、上記12個の中点および中心点P
C(つまり、位置検出パターン54の中心を通るxおよ
びy方向の直線上に位置する各モジュール50の中心
点)を基準点と称する。
置検出パターン54のすべてについて中心候補グループ
が求められたことになる。この場合、S250におい
て、グループ1,2,3の夫々の候補座標の平均座標
が、3つの位置検出パターン54の中心点PCの座標と
して夫々計算される。次に、S252において、計算さ
れた各中心座標の位置関係から、3つの中心点PCが、
左上、右上、または左下のどの位置の位置検出パターン
54の中心であるかが識別される。そして、最後に、S
254において、図19に示すように、各位置検出パタ
ーン54について、夫々の中心点PCを通るx軸および
y軸に平行な直線上に位置し、かつ、これら直線上の増
減表の境界点A,B,C,中心点PC、境界点D,E,
Fの間の6個の中点(x,y方向合わせて12個)の
(X,Y)座標が計算される。なお、各位置検出パター
ン54について、上記12個の中点および中心点P
C(つまり、位置検出パターン54の中心を通るxおよ
びy方向の直線上に位置する各モジュール50の中心
点)を基準点と称する。
【0049】以上のように、ファインダーパターン探索
処理では、S206〜S224において、X方向、Y方
向、および、±45度方向の4つの方向すべてにおいて
テンプレートとマッチする場合に、位置検出パターン5
4が検出されたと判断しているので、シンボル内に位置
検出パターン54に似たパターンが存在する場合にも、
そのパターンを位置検出パターン54と誤認識してしま
うのを防止することができる。
処理では、S206〜S224において、X方向、Y方
向、および、±45度方向の4つの方向すべてにおいて
テンプレートとマッチする場合に、位置検出パターン5
4が検出されたと判断しているので、シンボル内に位置
検出パターン54に似たパターンが存在する場合にも、
そのパターンを位置検出パターン54と誤認識してしま
うのを防止することができる。
【0050】また、位置検出パターン54がi行目で検
出されてその中心座標を求めた後、S226以降におい
て、i行目の上下の行についてもマッチング処理を行な
って中心座標を求め、これらの求められた中心座標の平
均座標を位置検出パターン54の最終的な中心座標とし
ている。これにより、各位置検出パターン54の中心座
標をより正確に決定することが可能となっている。
出されてその中心座標を求めた後、S226以降におい
て、i行目の上下の行についてもマッチング処理を行な
って中心座標を求め、これらの求められた中心座標の平
均座標を位置検出パターン54の最終的な中心座標とし
ている。これにより、各位置検出パターン54の中心座
標をより正確に決定することが可能となっている。
【0051】次に、バージョン情報取得処理について説
明する。バージョン情報取得処理では、右上および左下
の位置検出パターン54に隣接する2つのバージョン情
報領域62の何れか一方からQRコードのバージョン情
報を取得する。
明する。バージョン情報取得処理では、右上および左下
の位置検出パターン54に隣接する2つのバージョン情
報領域62の何れか一方からQRコードのバージョン情
報を取得する。
【0052】図20は、バージョン情報領域62の詳細
を示す。同図に示すように、各バージョン情報領域62
は、縦横が6×3(右上の領域)または3×6(左下の
領域)のモジュール50により構成されている。これら
18個のモジュールで表される18ビットの情報のう
ち、上位6ビットはバージョン数を表すビットであり、
残りの12ビットはエラー訂正ビットである。
を示す。同図に示すように、各バージョン情報領域62
は、縦横が6×3(右上の領域)または3×6(左下の
領域)のモジュール50により構成されている。これら
18個のモジュールで表される18ビットの情報のう
ち、上位6ビットはバージョン数を表すビットであり、
残りの12ビットはエラー訂正ビットである。
【0053】図21は、バージョン情報取得処理のフロ
ーチャートである。同図に示すように、先ず、S302
において、右上または左下の何れのバージョン情報領域
からバージョン情報を取得するかが決定される。具体的
には、先ず、図22に示すように、左上および右上の位
置検出パターン54についてx方向の寸法Wulx,Wury
を、また、左上および左下の位置検出パターン54につ
いてy方向の寸法Wuly,Wdlyを、夫々、上記ファイン
ダー探索処理のS254(図16)で求めた基準点の
(X,Y)座標を用いて計算する。そして、(Wulx−
Wurx)<(Wuly−Wdly)が成立する場合は、右上の
バージョン情報領域62から情報を取得することとし、
(Wulx−Wurx)≧(Wuly−Wdly)が成立する場合
は、左下のバージョン情報領域62から情報を取得する
こととする。すなわち、(Wulx−Wurx)<(Wuly−
Wdly)が成立する場合は、左上と右上の位置検出パタ
ーン54の寸法の差が、左上と左下の位置検出パターン
54の寸法の差よりも小さいことになるから、右上の位
置検出パターン54の方が座標を正確に求められている
と判断して右上の領域を選択し、そうでない場合は左下
の領域を選択するのである。
ーチャートである。同図に示すように、先ず、S302
において、右上または左下の何れのバージョン情報領域
からバージョン情報を取得するかが決定される。具体的
には、先ず、図22に示すように、左上および右上の位
置検出パターン54についてx方向の寸法Wulx,Wury
を、また、左上および左下の位置検出パターン54につ
いてy方向の寸法Wuly,Wdlyを、夫々、上記ファイン
ダー探索処理のS254(図16)で求めた基準点の
(X,Y)座標を用いて計算する。そして、(Wulx−
Wurx)<(Wuly−Wdly)が成立する場合は、右上の
バージョン情報領域62から情報を取得することとし、
(Wulx−Wurx)≧(Wuly−Wdly)が成立する場合
は、左下のバージョン情報領域62から情報を取得する
こととする。すなわち、(Wulx−Wurx)<(Wuly−
Wdly)が成立する場合は、左上と右上の位置検出パタ
ーン54の寸法の差が、左上と左下の位置検出パターン
54の寸法の差よりも小さいことになるから、右上の位
置検出パターン54の方が座標を正確に求められている
と判断して右上の領域を選択し、そうでない場合は左下
の領域を選択するのである。
【0054】次に、S304において、左上および右上
の位置検出パターン54の中心点間の距離Dx(右上の
領域が選択された場合)、または、左上および左下の位
置検出パターン54の中心点間の距離Dy(左下の領域
が選択された場合)が計算される。
の位置検出パターン54の中心点間の距離Dx(右上の
領域が選択された場合)、または、左上および左下の位
置検出パターン54の中心点間の距離Dy(左下の領域
が選択された場合)が計算される。
【0055】次に、S306において、モジュール50
の公称寸法Aが次式により計算される。
の公称寸法Aが次式により計算される。
【0056】A=(Wulx+Wurx)/14 (右上の領
域が選択された場合) A=(Wuly+Wdly)/14 (左下の領域が選択され
た場合) すなわち、位置検出パターン54は縦横7モジュールで
構成されているから、2つの位置検出パターン54の縦
または横の寸法(画素数)の和を「14」で割った値を
モジュール50の公称寸法Aとしている。
域が選択された場合) A=(Wuly+Wdly)/14 (左下の領域が選択され
た場合) すなわち、位置検出パターン54は縦横7モジュールで
構成されているから、2つの位置検出パターン54の縦
または横の寸法(画素数)の和を「14」で割った値を
モジュール50の公称寸法Aとしている。
【0057】次に、ステップ308において、仮のバー
ジョン数Vcが次式により計算される。
ジョン数Vcが次式により計算される。
【0058】Vc={(Dx/A)−8}/4 (右上の
領域が選択された場合) Vc={(Dy/A)−8}/4 (右上の領域が選択さ
れた場合) そして、S310において、仮のバージョン数Vcが7
以上であるか否かが判別される。その結果、Vc<7で
あれば、バージョン情報領域62は存在しないことにな
るから、処理は終了する。一方、Vc≧7であれば、S
312において、モジュールサイズPitchが次式により
計算される。
領域が選択された場合) Vc={(Dy/A)−8}/4 (右上の領域が選択さ
れた場合) そして、S310において、仮のバージョン数Vcが7
以上であるか否かが判別される。その結果、Vc<7で
あれば、バージョン情報領域62は存在しないことにな
るから、処理は終了する。一方、Vc≧7であれば、S
312において、モジュールサイズPitchが次式により
計算される。
【0059】
Pitch=Wurx/7 (右上の領域が選択された場合)
Pitch=Wdly/7 (左下の領域が選択された場合)
すなわち、上記のように、位置検出パターン54は7×
7のモジュールにより構成されており、WurxおよびWd
lyは位置検出パターンの一辺の長さ(画素数)であるか
ら、上記式で計算されたモジュールサイズPitchは、右
上または左下の位置検出パターン54における1モジュ
ールの一辺の長さの平均値を表すことになる。
7のモジュールにより構成されており、WurxおよびWd
lyは位置検出パターンの一辺の長さ(画素数)であるか
ら、上記式で計算されたモジュールサイズPitchは、右
上または左下の位置検出パターン54における1モジュ
ールの一辺の長さの平均値を表すことになる。
【0060】次に、S314において、選択された右上
または左下のバージョン情報領域62について、各モジ
ュールの「1」(黒)または「0」(白)を判別する処
理が行われる。図23は、右上のバージョン情報領域6
2についての処理を説明するための図である。同図に示
すように、左上および右上の位置検出パターン54の中
心点を結ぶ直線Tに平行で、かつ、右上の位置検出パタ
ーン54のy方向に並んだ7個の基準点を通る7本の直
線(上記した直線Tを含む)を探索線とし、各探索線上
を右上の位置検出パターンの各基準点からスタートして
左向きに7個の境界点が検出されるまで走査して増減表
を取得する。次に、図24に示すように、各探索線につ
いて得られた増減表の境界点間の距離をモジュールサイ
ズPitchで割ることにより、各境界点間に含まれるモジ
ュール50の個数を計算する。そして、バージョン情報
領域62が(6×3)モジュールで構成されることに基
づいて、バージョン情報領域62に含まれるモジュール
50を特定する。こうして特定した各モジュール50の
中心点の(X,Y)座標を求める。
または左下のバージョン情報領域62について、各モジ
ュールの「1」(黒)または「0」(白)を判別する処
理が行われる。図23は、右上のバージョン情報領域6
2についての処理を説明するための図である。同図に示
すように、左上および右上の位置検出パターン54の中
心点を結ぶ直線Tに平行で、かつ、右上の位置検出パタ
ーン54のy方向に並んだ7個の基準点を通る7本の直
線(上記した直線Tを含む)を探索線とし、各探索線上
を右上の位置検出パターンの各基準点からスタートして
左向きに7個の境界点が検出されるまで走査して増減表
を取得する。次に、図24に示すように、各探索線につ
いて得られた増減表の境界点間の距離をモジュールサイ
ズPitchで割ることにより、各境界点間に含まれるモジ
ュール50の個数を計算する。そして、バージョン情報
領域62が(6×3)モジュールで構成されることに基
づいて、バージョン情報領域62に含まれるモジュール
50を特定する。こうして特定した各モジュール50の
中心点の(X,Y)座標を求める。
【0061】次に、S316において、図25に示すよ
うに、各モジュールの中心座標について、該当する画素
が黒ならビット値を「1」に、白ならビット値を「0」
とすることにより、バージョン情報領域62の白黒のモ
ジュールパターンをビット列に変換する。そして、S3
18において、エラー訂正処理を行い、S320におい
てエラー訂正に成功したか否かの判定を行う。エラー訂
正処理に失敗した場合は、さらにS322において右
上、左下両方のバージョン情報領域を探索したか否かを
判別する。どちらか一方の領域しか探索していない場合
は、もう一方の領域を探索するためにS304へ戻り、
両方の領域を探索し終えた場合は、バージョン情報取得
に失敗したと判断されてS324においてエラー出力が
行われた後、処理は終了する。一方エラー訂正処理に成
功した場合は、S326において取得したビット列のう
ち上位6ビットからバージョン数Vが求められる。
うに、各モジュールの中心座標について、該当する画素
が黒ならビット値を「1」に、白ならビット値を「0」
とすることにより、バージョン情報領域62の白黒のモ
ジュールパターンをビット列に変換する。そして、S3
18において、エラー訂正処理を行い、S320におい
てエラー訂正に成功したか否かの判定を行う。エラー訂
正処理に失敗した場合は、さらにS322において右
上、左下両方のバージョン情報領域を探索したか否かを
判別する。どちらか一方の領域しか探索していない場合
は、もう一方の領域を探索するためにS304へ戻り、
両方の領域を探索し終えた場合は、バージョン情報取得
に失敗したと判断されてS324においてエラー出力が
行われた後、処理は終了する。一方エラー訂正処理に成
功した場合は、S326において取得したビット列のう
ち上位6ビットからバージョン数Vが求められる。
【0062】なお、左下のバージョン情報領域62から
バージョン情報を取得する場合にも、左上および左下の
位置検出パターンのx方向に並んだ7個の基準点同士を
結ぶ直線を探索線として、上記と同様の処理によりバー
ジョン情報領域62をビット列に変換して、バージョン
数Vが求められる。
バージョン情報を取得する場合にも、左上および左下の
位置検出パターンのx方向に並んだ7個の基準点同士を
結ぶ直線を探索線として、上記と同様の処理によりバー
ジョン情報領域62をビット列に変換して、バージョン
数Vが求められる。
【0063】次に、タイミングパターン探索処理につい
て説明する。上記のように、タイミングパターン58
は、隣り合う位置検出パターン54の最も内側のモジュ
ールを結ぶ直線上に配置される。そこで、タイミングパ
ターン探索処理では、左上および右上の位置検出パター
ン54のy方向に並んだ基準点のうち最も下側の基準点
同士を結ぶ直線、および、左上および左下の位置検出パ
ターン54のx方向に並んだ基準点のうち最も右側の基
準点同士を結ぶ直線(以下、これらの直線をタイミング
パターン探索線と称す)上を走査する。
て説明する。上記のように、タイミングパターン58
は、隣り合う位置検出パターン54の最も内側のモジュ
ールを結ぶ直線上に配置される。そこで、タイミングパ
ターン探索処理では、左上および右上の位置検出パター
ン54のy方向に並んだ基準点のうち最も下側の基準点
同士を結ぶ直線、および、左上および左下の位置検出パ
ターン54のx方向に並んだ基準点のうち最も右側の基
準点同士を結ぶ直線(以下、これらの直線をタイミング
パターン探索線と称す)上を走査する。
【0064】図26は、タイミングパターン探索処理の
フローチャートである。また、図27は、タイミングパ
ターン探索処理においてタイミングパターン58につい
てのデータが取得される様子を示す図である。図26に
示すように、先ず、S402において、右上および左上
の位置検出パターン54の間のタイミングパターン探索
線上をシンボルの一端から他端まで走査することにより
各境界点の(X,Y)座標が取得される(図27(A)
参照)。次にS404において、隣接する境界点間の各
中点座標が計算される(図27(B)参照)。ただし、
位置検出パターン54に含まれる部分(シンボルの端か
ら7モジュール分)については、黒のモジュールが続く
ので、最初の白→黒の境界点および最後の黒→白の境界
点と、夫々に隣接する境界点との間を7等分した点を夫
々仮想的な境界点とみなし、これら境界点間の各中点座
標を計算する。そして、左下および左上の位置検出パタ
ーン54の間のタイミングパターン探索線についても上
記S402,S404と同様にして、境界点間の中点座
標が計算される(S406,S408)。
フローチャートである。また、図27は、タイミングパ
ターン探索処理においてタイミングパターン58につい
てのデータが取得される様子を示す図である。図26に
示すように、先ず、S402において、右上および左上
の位置検出パターン54の間のタイミングパターン探索
線上をシンボルの一端から他端まで走査することにより
各境界点の(X,Y)座標が取得される(図27(A)
参照)。次にS404において、隣接する境界点間の各
中点座標が計算される(図27(B)参照)。ただし、
位置検出パターン54に含まれる部分(シンボルの端か
ら7モジュール分)については、黒のモジュールが続く
ので、最初の白→黒の境界点および最後の黒→白の境界
点と、夫々に隣接する境界点との間を7等分した点を夫
々仮想的な境界点とみなし、これら境界点間の各中点座
標を計算する。そして、左下および左上の位置検出パタ
ーン54の間のタイミングパターン探索線についても上
記S402,S404と同様にして、境界点間の中点座
標が計算される(S406,S408)。
【0065】以上でタイミングパターン取得処理は終了
する。この時点で、図28に黒丸で示す点の(X,Y)
座標が決定されたことになる。
する。この時点で、図28に黒丸で示す点の(X,Y)
座標が決定されたことになる。
【0066】次に、アライメントパターン探索処理につ
いて説明する。アライメントパターン探索処理では、ア
ライメントパターン56の画像データ上での位置を検出
するが、上記したように、アライメントパターン56の
個数および位置はQRコードのバージョン数Vによって
異なる。そこで、本実施形態では、バージョン数とアラ
イメントパターン56の個数および位置に関する情報と
の対応関係を予めアライメントパターン位置情報テーブ
ルに格納しておき、このテーブルを参照して、バージョ
ン数に応じたアライメントパターン56の個数および位
置を取得する。
いて説明する。アライメントパターン探索処理では、ア
ライメントパターン56の画像データ上での位置を検出
するが、上記したように、アライメントパターン56の
個数および位置はQRコードのバージョン数Vによって
異なる。そこで、本実施形態では、バージョン数とアラ
イメントパターン56の個数および位置に関する情報と
の対応関係を予めアライメントパターン位置情報テーブ
ルに格納しておき、このテーブルを参照して、バージョ
ン数に応じたアライメントパターン56の個数および位
置を取得する。
【0067】図29は、アライメントパターン位置情報
テーブルの一例を示す。同図において、「領域数」の欄
には、QRコードシンボルの一辺当たりに存在するアラ
イメントパターン56の個数が示されている。例えば、
バージョン数0,1のQRコードにはアライメントパタ
ーン56は設けられず、バージョン数2〜6のQRコー
ドには一辺当たり2個設けられ、バージョン数7のQR
コードには一辺当たり3個設けられることになる。ただ
し、左上、右上、および左下の位置検出パターン54と
重なる位置にはアライメントパターン56は設けられな
いので、アライメントパターン56の個数は、バージョ
ン3〜6では2個、バージョン7では6個となる。ま
た、アライメントパターン位置情報テーブルの「配置」
の欄には、各アライメントパターン56の中心の(x、
y)座標が記録されている。なお、アライメントパター
ン56はシンボルの左上コーナーと右下コーナーとを結
ぶ対角線に関して対称に配置されるので、図29に示す
アライメントパターン位置情報テーブルでは、この対称
性を用いて各アライメントパターン56の中心位置を特
定するのに必要な最小限の情報のみを記録している。例
えば、バージョン7のシンボルの場合、「配置」の情報
が6,22,38となっているので、アライメントパタ
ーン56の中心の(x,y)座標は(6,22),(2
2,6),(22,22),(22,38),(38,
22),(38,38)となる。ただし、中心座標の格
納形態はこれに限らず、全てのアライメントパターン5
6の中心の(x,y)座標をテーブルに格納しておいて
もよい。
テーブルの一例を示す。同図において、「領域数」の欄
には、QRコードシンボルの一辺当たりに存在するアラ
イメントパターン56の個数が示されている。例えば、
バージョン数0,1のQRコードにはアライメントパタ
ーン56は設けられず、バージョン数2〜6のQRコー
ドには一辺当たり2個設けられ、バージョン数7のQR
コードには一辺当たり3個設けられることになる。ただ
し、左上、右上、および左下の位置検出パターン54と
重なる位置にはアライメントパターン56は設けられな
いので、アライメントパターン56の個数は、バージョ
ン3〜6では2個、バージョン7では6個となる。ま
た、アライメントパターン位置情報テーブルの「配置」
の欄には、各アライメントパターン56の中心の(x、
y)座標が記録されている。なお、アライメントパター
ン56はシンボルの左上コーナーと右下コーナーとを結
ぶ対角線に関して対称に配置されるので、図29に示す
アライメントパターン位置情報テーブルでは、この対称
性を用いて各アライメントパターン56の中心位置を特
定するのに必要な最小限の情報のみを記録している。例
えば、バージョン7のシンボルの場合、「配置」の情報
が6,22,38となっているので、アライメントパタ
ーン56の中心の(x,y)座標は(6,22),(2
2,6),(22,22),(22,38),(38,
22),(38,38)となる。ただし、中心座標の格
納形態はこれに限らず、全てのアライメントパターン5
6の中心の(x,y)座標をテーブルに格納しておいて
もよい。
【0068】本実施形態では、図30に示すように、ア
ライメントパターン位置情報テーブルから取得した各ア
ライメントパターン56の中心モジュールの中心点P1
〜P4を頂点とするような領域Tj,i( i,j=0,1,・
・・,R−2;Rはシンボル一辺当たりのアライメントパ
ターン56の個数)にシンボルを分割し、各領域の頂点
の画像データ上での位置をアライメントパターン56の
中心点の(X,Y)座標として検出する。
ライメントパターン位置情報テーブルから取得した各ア
ライメントパターン56の中心モジュールの中心点P1
〜P4を頂点とするような領域Tj,i( i,j=0,1,・
・・,R−2;Rはシンボル一辺当たりのアライメントパ
ターン56の個数)にシンボルを分割し、各領域の頂点
の画像データ上での位置をアライメントパターン56の
中心点の(X,Y)座標として検出する。
【0069】図31および図32は、アライメントパタ
ーン探索処理のフローチャートである。図31に示すよ
うに、先ず、S502において、アライメントパターン
位置情報テーブルを参照して、バージョン数Vに応じた
一辺当たりのアライメントパターン56の個数Rが取得
される。
ーン探索処理のフローチャートである。図31に示すよ
うに、先ず、S502において、アライメントパターン
位置情報テーブルを参照して、バージョン数Vに応じた
一辺当たりのアライメントパターン56の個数Rが取得
される。
【0070】次に、S504において、インデックス
i,jが共に0に初期化され、続くS506において、
各領域Tj,i(i,j=0,1,・・・,R−2)の左上、
右上、および左下の3つの頂点P1,P2,P3の
(X,Y)座標が決定される。
i,jが共に0に初期化され、続くS506において、
各領域Tj,i(i,j=0,1,・・・,R−2)の左上、
右上、および左下の3つの頂点P1,P2,P3の
(X,Y)座標が決定される。
【0071】上記図30からわかるように、領域T0,0
について、左上の頂点P1は、左上の位置検出パターン
54の右下コーナーのモジュールに一致する。したがっ
て、このモジュールの中点座標を左上の頂点P1の
(X,Y)座標とする。
について、左上の頂点P1は、左上の位置検出パターン
54の右下コーナーのモジュールに一致する。したがっ
て、このモジュールの中点座標を左上の頂点P1の
(X,Y)座標とする。
【0072】また、右上および左下の頂点P2,P3
は、タイミングパターン58上に位置している。タイミ
ングパターン58は白と黒が1モジュールずつ交互に配
置されたものであるから、タイミングパターン取得処理
で取得された、位置検出パターン54の間の境界点間の
中点の個数M(位置検出パターン54に該当する部分を
除く)は、位置検出パターン54の間に存在するモジュ
ール50の個数を表している。したがって、タイミング
パターン58を構成するモジュール50のうち、左上の
位置検出パターン54から右向きに数えてM/(R−
1)個目のモジュール50の中心点が頂点P2に該当す
ることになる。そこで、このモジュール50の中心点座
標を頂点P2の(X,Y)座標とする。同様に、左下の
頂点P3についても、左上および左下の位置検出パター
ン54を結ぶタイミングパターン58について、左上の
位置検出パターン54から下方向きに数えてM/(R−
1)個目のモジュール50の中心点座標を頂点P3の
(X,Y)座標とする。
は、タイミングパターン58上に位置している。タイミ
ングパターン58は白と黒が1モジュールずつ交互に配
置されたものであるから、タイミングパターン取得処理
で取得された、位置検出パターン54の間の境界点間の
中点の個数M(位置検出パターン54に該当する部分を
除く)は、位置検出パターン54の間に存在するモジュ
ール50の個数を表している。したがって、タイミング
パターン58を構成するモジュール50のうち、左上の
位置検出パターン54から右向きに数えてM/(R−
1)個目のモジュール50の中心点が頂点P2に該当す
ることになる。そこで、このモジュール50の中心点座
標を頂点P2の(X,Y)座標とする。同様に、左下の
頂点P3についても、左上および左下の位置検出パター
ン54を結ぶタイミングパターン58について、左上の
位置検出パターン54から下方向きに数えてM/(R−
1)個目のモジュール50の中心点座標を頂点P3の
(X,Y)座標とする。
【0073】次に、S508において、図33に示すよ
うに、頂点P1とP2とを結ぶ直線と、頂点P1とP3
とを結ぶ直線との交点の(X,Y)座標が計算され、こ
の交点が右下の仮の頂点P4cとされる。
うに、頂点P1とP2とを結ぶ直線と、頂点P1とP3
とを結ぶ直線との交点の(X,Y)座標が計算され、こ
の交点が右下の仮の頂点P4cとされる。
【0074】次に、S510において、左上および右上
の頂点P1,P2の間の距離を、頂点P1,P2の間の
モジュール50の個数(つまり、上記したM/(R−
1))で割ることによりx方向のモジュールサイズPitc
hxが計算される。同様に、左上および左下の頂点P1,
P3の間の距離を、頂点P1,P2の間のモジュール個
数で割ることにより縦方向のモジュールサイズPitchyが
計算される。
の頂点P1,P2の間の距離を、頂点P1,P2の間の
モジュール50の個数(つまり、上記したM/(R−
1))で割ることによりx方向のモジュールサイズPitc
hxが計算される。同様に、左上および左下の頂点P1,
P3の間の距離を、頂点P1,P2の間のモジュール個
数で割ることにより縦方向のモジュールサイズPitchyが
計算される。
【0075】次に、S512において、図34に示すよ
うに、右下の仮の頂点P4cを通り、かつ、頂点P1,
P2を結ぶ基準線P1−P2に平行な直線上を仮の頂点
P4cを中心に走査することにより点P4cの両側に夫々
3個、計6個の境界点PtX[0]〜PtX[5]が求めら
れ、それら境界点の中点p0〜p4の(X,Y)座標が計
算される。
うに、右下の仮の頂点P4cを通り、かつ、頂点P1,
P2を結ぶ基準線P1−P2に平行な直線上を仮の頂点
P4cを中心に走査することにより点P4cの両側に夫々
3個、計6個の境界点PtX[0]〜PtX[5]が求めら
れ、それら境界点の中点p0〜p4の(X,Y)座標が計
算される。
【0076】次に、S514において、インデックスk
が「2」に設定される。そして、S516において、図
35に示すように点pkを通り、かつ、基準線P1−P
2に垂直な直線上を、点pkを中心に走査することによ
り、点pkの上下に1個ずつの境界点ptY[0],ptY
[1]が求められる。
が「2」に設定される。そして、S516において、図
35に示すように点pkを通り、かつ、基準線P1−P
2に垂直な直線上を、点pkを中心に走査することによ
り、点pkの上下に1個ずつの境界点ptY[0],ptY
[1]が求められる。
【0077】次に、S518において、境界点PtX
[0]とPtX[5]との間の距離D1、および、境界点pt
Y[0]とptY[1]との間の距離D2を、夫々、縦方向お
よび横方向のモジュールサイズPitchxおよびPitchyで割
ることにより、横方向および縦方向のモジュール数n
1,n2が計算される。
[0]とPtX[5]との間の距離D1、および、境界点pt
Y[0]とptY[1]との間の距離D2を、夫々、縦方向お
よび横方向のモジュールサイズPitchxおよびPitchyで割
ることにより、横方向および縦方向のモジュール数n
1,n2が計算される。
【0078】次に、S520において、n1およびn2
が共に「1」に等しく、かつ、点p kの画素の色が黒で
あるか否かが判別される。その結果、上記条件が成立す
る場合は、仮の頂点P4cは、アライメントパターン5
6の内側の(1×1)モジュールの黒い正方形の上にあ
ると判断される。この場合、S522において、図36
に示すように、境界点PtY[0],PtX[2],PtY
[1],PtX[3]を頂点とする四角形の重心の(X,Y)
座標が計算され、この重心が右下の頂点P4とされる。
が共に「1」に等しく、かつ、点p kの画素の色が黒で
あるか否かが判別される。その結果、上記条件が成立す
る場合は、仮の頂点P4cは、アライメントパターン5
6の内側の(1×1)モジュールの黒い正方形の上にあ
ると判断される。この場合、S522において、図36
に示すように、境界点PtY[0],PtX[2],PtY
[1],PtX[3]を頂点とする四角形の重心の(X,Y)
座標が計算され、この重心が右下の頂点P4とされる。
【0079】一方、S520において、上記条件が不成
立であれば、S524において、インデックスkの値が
「1」に更新され、再び上記S516〜S520の処理
が実行される。以後、S520で条件が不成立となる毎
に、S526において、kの値を、2→1→3→0→4
の順(つまり、仮の頂点P4cに近い順)に変化させて
上記S516〜S520の処理を実行する。そして、S
524でk=4が成立する場合は、図32に示すS52
8〜S542において、左上の頂点P1と左下の頂点P
3を結ぶ直線を基準線P1−P3として、上記S512
〜S526での処理でx方向とy方向を入れ替えた処理
が実行される。ただし、S540においてi=4である
場合には、基準線P1−P3を基準としても頂点P4を
決定できないと判断され、S544において、エラー出
力が行なわれて処理は終了する。
立であれば、S524において、インデックスkの値が
「1」に更新され、再び上記S516〜S520の処理
が実行される。以後、S520で条件が不成立となる毎
に、S526において、kの値を、2→1→3→0→4
の順(つまり、仮の頂点P4cに近い順)に変化させて
上記S516〜S520の処理を実行する。そして、S
524でk=4が成立する場合は、図32に示すS52
8〜S542において、左上の頂点P1と左下の頂点P
3を結ぶ直線を基準線P1−P3として、上記S512
〜S526での処理でx方向とy方向を入れ替えた処理
が実行される。ただし、S540においてi=4である
場合には、基準線P1−P3を基準としても頂点P4を
決定できないと判断され、S544において、エラー出
力が行なわれて処理は終了する。
【0080】上記S522またはS538において右下
の頂点P4が決定されると、次にS550において、i
およびjが共にR−2に等しいか否か(つまり、すべて
の領域Tj,iについて右下の頂点P4が決定されたか否
か)が判別され、i=j=R−2が成立する場合は、処
理は終了する。一方、i=j=R−2が不成立であれ
ば、S552〜S556において、i,jの値が更新さ
れる。すなわち、S552では、iが「1」だけ増加さ
れ、S554においてi≧R−1が成立する場合は、S
556においてiが「0」に設定されると共にjに
「1」が加えられる。このようにして、i,jを更新す
ることで、処理される領域Tj,iが左から右へ、また、
上から下へ移動することになる。以後、更新された領域
Tj,iについて図31に示すS506以降の処理が繰り
返される。
の頂点P4が決定されると、次にS550において、i
およびjが共にR−2に等しいか否か(つまり、すべて
の領域Tj,iについて右下の頂点P4が決定されたか否
か)が判別され、i=j=R−2が成立する場合は、処
理は終了する。一方、i=j=R−2が不成立であれ
ば、S552〜S556において、i,jの値が更新さ
れる。すなわち、S552では、iが「1」だけ増加さ
れ、S554においてi≧R−1が成立する場合は、S
556においてiが「0」に設定されると共にjに
「1」が加えられる。このようにして、i,jを更新す
ることで、処理される領域Tj,iが左から右へ、また、
上から下へ移動することになる。以後、更新された領域
Tj,iについて図31に示すS506以降の処理が繰り
返される。
【0081】なお、ある領域Tj,iについて求められた
右下の頂点P4は、右隣りの領域T j,i+1では左下の頂
点P3となり、下隣りの領域Tj+1,iでは右上の頂点P
2となり、右斜め下の領域Tj+1,i+1では左上の頂点P
1となる。したがって、S552〜S556において処
理領域Tj,iが、左から右へ、また、上から下へ移るよ
うにi,jを更新することで、ある領域Tj,iについて
頂点P4を決定する際には、必ずそれまでに左上、右
上、左下の3つの頂点P1,P2,P3は決定されてい
ることになる。
右下の頂点P4は、右隣りの領域T j,i+1では左下の頂
点P3となり、下隣りの領域Tj+1,iでは右上の頂点P
2となり、右斜め下の領域Tj+1,i+1では左上の頂点P
1となる。したがって、S552〜S556において処
理領域Tj,iが、左から右へ、また、上から下へ移るよ
うにi,jを更新することで、ある領域Tj,iについて
頂点P4を決定する際には、必ずそれまでに左上、右
上、左下の3つの頂点P1,P2,P3は決定されてい
ることになる。
【0082】以上述べたように、アライメントパターン
探索処理では、仮の頂点P4cを通り、かつ、基準線P
1−P2または基準線P1−P3に平行な直線上に点p
0〜p4を取る。そして、これら点p0〜p4のうち、その
点を中心に基準線に垂直な方向に走査して最初に見つか
った境界点間の距離n1およびn2が共に1で、かつ、
色が黒であるような点を見出して、その点を頂点P4と
する。これにより、仮の頂点P4cがアライメントパタ
ーン56の内側の黒のモジュールから上下左右に外れ
て、その周りの白の領域に位置する場合にも、頂点P4
をアライメントパターン56の中心点に設定することが
できる。すなわち、画像データの歪みにより各領域T
j,iが正方形とならない場合にも、頂点P4を確実にア
ライメントパターン56の中心点に設定することができ
る。
探索処理では、仮の頂点P4cを通り、かつ、基準線P
1−P2または基準線P1−P3に平行な直線上に点p
0〜p4を取る。そして、これら点p0〜p4のうち、その
点を中心に基準線に垂直な方向に走査して最初に見つか
った境界点間の距離n1およびn2が共に1で、かつ、
色が黒であるような点を見出して、その点を頂点P4と
する。これにより、仮の頂点P4cがアライメントパタ
ーン56の内側の黒のモジュールから上下左右に外れ
て、その周りの白の領域に位置する場合にも、頂点P4
をアライメントパターン56の中心点に設定することが
できる。すなわち、画像データの歪みにより各領域T
j,iが正方形とならない場合にも、頂点P4を確実にア
ライメントパターン56の中心点に設定することができ
る。
【0083】次に、ビットデータマトリクス取得処理に
ついて説明する。
ついて説明する。
【0084】ビットデータマトリクス取得処理では、シ
ンボル上の各モジュールの色(黒または白)を検査し
て、黒のモジュールを「1」に、白のモジュールを
「0」に夫々変換し、(モジュールの個数)×(モジュ
ールの個数)の要素を有する2次元のビットデータマト
リクスBに格納する。すなわち、図37に示すように、
シンボルの左上隅のモジュールを(0,0)として、座
標(x、y)のモジュールの黒/白に応じた値を、ビッ
トデータマトリクスBの対応する要素(y,x)に格納
する。ただし、後述するように、位置検出パターン54
やアライメントパターン56等の機能パターンに対応す
るビットデータマトリクスBの要素には、「0」,
「1」以外の値(例えば「2」または「3」)が格納さ
れる。
ンボル上の各モジュールの色(黒または白)を検査し
て、黒のモジュールを「1」に、白のモジュールを
「0」に夫々変換し、(モジュールの個数)×(モジュ
ールの個数)の要素を有する2次元のビットデータマト
リクスBに格納する。すなわち、図37に示すように、
シンボルの左上隅のモジュールを(0,0)として、座
標(x、y)のモジュールの黒/白に応じた値を、ビッ
トデータマトリクスBの対応する要素(y,x)に格納
する。ただし、後述するように、位置検出パターン54
やアライメントパターン56等の機能パターンに対応す
るビットデータマトリクスBの要素には、「0」,
「1」以外の値(例えば「2」または「3」)が格納さ
れる。
【0085】なお、QRコードのシンボルのモジュール
サイズ(Z×Z)は、バージョンVに応じて、(21+
4・(V−1))×(21+4・(V−1))となる。
したがって、例えばバージョン7の場合、モジュールサ
イズは45×45となり、ビットデータマトリクスBの
サイズも45×45となる。
サイズ(Z×Z)は、バージョンVに応じて、(21+
4・(V−1))×(21+4・(V−1))となる。
したがって、例えばバージョン7の場合、モジュールサ
イズは45×45となり、ビットデータマトリクスBの
サイズも45×45となる。
【0086】図38は、ビットデータマトリクス取得処
理のフローチャートである。
理のフローチャートである。
【0087】図38に示すように、先ず、S602にお
いて、位置検出パターン54、セパレータ領域60、お
よびバージョン情報領域62を構成するモジュールに対
応するビットデータマトリクスBの要素の値が「2」に
設定される(ただし、右上のバージョン情報領域62に
ついては、左端の一列分は「3」に設定)と共に、タイ
ミングパターン58およびアライメントパターン56に
含まれるモジュールに対応する要素の値が「3」に設定
される。ただし、これらの値は「2」、「3」に限ら
ず、「0」、「1」と異なる任意の値を用いることがで
きる。
いて、位置検出パターン54、セパレータ領域60、お
よびバージョン情報領域62を構成するモジュールに対
応するビットデータマトリクスBの要素の値が「2」に
設定される(ただし、右上のバージョン情報領域62に
ついては、左端の一列分は「3」に設定)と共に、タイ
ミングパターン58およびアライメントパターン56に
含まれるモジュールに対応する要素の値が「3」に設定
される。ただし、これらの値は「2」、「3」に限ら
ず、「0」、「1」と異なる任意の値を用いることがで
きる。
【0088】具体的には、各位置検出パターン54およ
びセパレータ領域60は、シンボルの左上、右上、およ
び左下のコーナーの(8×8)のモジュールで夫々表さ
れるので、 B(y,x)=2 (0≦x≦7かつ0≦y≦7、また
は、Z−8≦x≦Z−1かつ0≦y≦7、または、0≦
x≦7かつZ−8≦y≦Z−1) とする。
びセパレータ領域60は、シンボルの左上、右上、およ
び左下のコーナーの(8×8)のモジュールで夫々表さ
れるので、 B(y,x)=2 (0≦x≦7かつ0≦y≦7、また
は、Z−8≦x≦Z−1かつ0≦y≦7、または、0≦
x≦7かつZ−8≦y≦Z−1) とする。
【0089】また、各バージョン情報領域62は、上記
図20に示すように、右上の位置検出パターン54の左
隣りの(6×3)のモジュール、および、左下の位置検
出パターン54の上隣の(3×6)モジュールで夫々表
されるので、 B(y,x)=2 (Z−10≦x≦Z−9かつ0≦y
≦5、または、0≦x≦5かつZ−11≦y≦Z−9) B(y,x)=3 (x=Z−11かつ0≦y≦5) とする。
図20に示すように、右上の位置検出パターン54の左
隣りの(6×3)のモジュール、および、左下の位置検
出パターン54の上隣の(3×6)モジュールで夫々表
されるので、 B(y,x)=2 (Z−10≦x≦Z−9かつ0≦y
≦5、または、0≦x≦5かつZ−11≦y≦Z−9) B(y,x)=3 (x=Z−11かつ0≦y≦5) とする。
【0090】また、タイミングパターン58は、上記図
28に示すように、左上および右上の位置検出パターン
54の下辺を結ぶ直線上、および、左上および左下の位
置検出パターン54の右辺を結ぶ直線上に位置するモジ
ュールで夫々表されるので、 B(y,x)=2 (7≦x≦Z−8かつy=6、また
は、x=6かつ7≦y≦Z−8) また、アライメントパターン56については、バージョ
ンVに応じたパターンの個数をU、各アライメントパタ
ーン56の中心モジュールの(x,y)座標を(xk,
yk)(k=1,・・・,R)とおいて、アライメントパタ
ーン56のモジュールサイズは5×5であるから、 B(y,x)=2 (xk−2≦x≦xk+2かつyk−
2≦y≦yk+2;k=1,・・・,U) とする。
28に示すように、左上および右上の位置検出パターン
54の下辺を結ぶ直線上、および、左上および左下の位
置検出パターン54の右辺を結ぶ直線上に位置するモジ
ュールで夫々表されるので、 B(y,x)=2 (7≦x≦Z−8かつy=6、また
は、x=6かつ7≦y≦Z−8) また、アライメントパターン56については、バージョ
ンVに応じたパターンの個数をU、各アライメントパタ
ーン56の中心モジュールの(x,y)座標を(xk,
yk)(k=1,・・・,R)とおいて、アライメントパタ
ーン56のモジュールサイズは5×5であるから、 B(y,x)=2 (xk−2≦x≦xk+2かつyk−
2≦y≦yk+2;k=1,・・・,U) とする。
【0091】次に、S604〜S612において、各モ
ジュール50についてのプロット処理が行なわれる。こ
こで、プロット処理とは、モジュール50の中心点位置
の画像データ上での(X,Y)座標を決定する処理を意
味する。
ジュール50についてのプロット処理が行なわれる。こ
こで、プロット処理とは、モジュール50の中心点位置
の画像データ上での(X,Y)座標を決定する処理を意
味する。
【0092】モジュール50のプロット処理では、上記
ファインダーパターン探索処理、タイミングパターン取
得処理、およびアライメントパターン探索処理において
位置検出パターン54、タイミングパターン58、およ
びアライメントパターン56に関して求めた各(X,
Y)座標を用いて、シンボル内の各モジュールが格子点
上に位置するような直線群(以下、サンプリンググリッ
ドという)を設定し、これら直線群の格子点をプロット
していく。なお、図39に、シンボル上に設定されたサ
ンプリンググリッドの例を示す。
ファインダーパターン探索処理、タイミングパターン取
得処理、およびアライメントパターン探索処理において
位置検出パターン54、タイミングパターン58、およ
びアライメントパターン56に関して求めた各(X,
Y)座標を用いて、シンボル内の各モジュールが格子点
上に位置するような直線群(以下、サンプリンググリッ
ドという)を設定し、これら直線群の格子点をプロット
していく。なお、図39に、シンボル上に設定されたサ
ンプリンググリッドの例を示す。
【0093】プロット処理では、アライメントパターン
56の中心点を結ぶ基準グリッド線を設定し、この基準
グリッド線で区画された各領域毎に行なう。図40は、
基準グリッド線で区画された領域Sj,i(j=0,・・・,
N−1、i=0,・・・,R;Rは一辺当たりに存在する
アライメントパターン56の個数)を示す。
56の中心点を結ぶ基準グリッド線を設定し、この基準
グリッド線で区画された各領域毎に行なう。図40は、
基準グリッド線で区画された領域Sj,i(j=0,・・・,
N−1、i=0,・・・,R;Rは一辺当たりに存在する
アライメントパターン56の個数)を示す。
【0094】先ず、S604において、4辺とも基準グ
リッド線で囲まれた領域Sj,i(j=1,・・・,R−1、
i=1,・・・,R−1)(図40では、領域S1,1,S
1,2,S2,1,S2,2)についてのプロット処理を行な
う。
リッド線で囲まれた領域Sj,i(j=1,・・・,R−1、
i=1,・・・,R−1)(図40では、領域S1,1,S
1,2,S2,1,S2,2)についてのプロット処理を行な
う。
【0095】すなわち、左上の領域S1,1について、左
辺上および右辺上の各モジュールはプロット済みである
ので、残りの2辺上を、図41に示すように、アライメ
ントパターン56間のモジュールの個数分だけ等間隔に
プロットする。この領域S1, 1の辺上のプロットが完了
すると、隣接する領域S1,2およびS2,1について、夫
々、左辺および上辺がプロットされたことになるから、
これら領域S1,2およびS2,1について、領域S1,1と同
様にして、残りの2辺上をプロットする。以下、同様
に、左辺および上辺のプロットが完了した領域について
残りの2辺をプロットするという処理を繰り返すこと
で、4辺が基準グリッド線で囲まれたすべての領域につ
いて、4辺上のプロット処理が完了する。
辺上および右辺上の各モジュールはプロット済みである
ので、残りの2辺上を、図41に示すように、アライメ
ントパターン56間のモジュールの個数分だけ等間隔に
プロットする。この領域S1, 1の辺上のプロットが完了
すると、隣接する領域S1,2およびS2,1について、夫
々、左辺および上辺がプロットされたことになるから、
これら領域S1,2およびS2,1について、領域S1,1と同
様にして、残りの2辺上をプロットする。以下、同様
に、左辺および上辺のプロットが完了した領域について
残りの2辺をプロットするという処理を繰り返すこと
で、4辺が基準グリッド線で囲まれたすべての領域につ
いて、4辺上のプロット処理が完了する。
【0096】次にS606において、3辺が基準グリッ
ド線で囲まれた領域S0,1〜S0,R-1,S1、0〜SR-1,0,
SN,1〜SN,R-1,S1,R〜SR-1,R(図40では領域S
0,1,S0,2,S1,0,S2,0,S3,1,S3,2,S1,3,S
2,3)についてプロット処理が行なわれる。
ド線で囲まれた領域S0,1〜S0,R-1,S1、0〜SR-1,0,
SN,1〜SN,R-1,S1,R〜SR-1,R(図40では領域S
0,1,S0,2,S1,0,S2,0,S3,1,S3,2,S1,3,S
2,3)についてプロット処理が行なわれる。
【0097】すなわち、左上の位置検出パターン54に
隣接する領域S0,1およびS1,0については、3辺のうち
2辺はプロット済みであるので、残りの1辺のプロット
処理を行なう。先ず、図42に示すように、プロット処
理を行なうべき辺を含む直線を基準線とし、この辺に隣
接する辺を含む直線を副線として、両直線の交点P0の
(X,Y)座標(P0.X,P0.Y)と、基準線上で交
点P0に隣接する点Oの(X,Y)座標(O.X,O.
Y)を求める。点P0および点Oは、領域S1,1の右上頂
点およびその下隣りのモジュールとしてプロット済みで
あるから、これら2点の(X,Y)座標は領域S1,1に
ついてのプロットデータから求めることができる。
隣接する領域S0,1およびS1,0については、3辺のうち
2辺はプロット済みであるので、残りの1辺のプロット
処理を行なう。先ず、図42に示すように、プロット処
理を行なうべき辺を含む直線を基準線とし、この辺に隣
接する辺を含む直線を副線として、両直線の交点P0の
(X,Y)座標(P0.X,P0.Y)と、基準線上で交
点P0に隣接する点Oの(X,Y)座標(O.X,O.
Y)を求める。点P0および点Oは、領域S1,1の右上頂
点およびその下隣りのモジュールとしてプロット済みで
あるから、これら2点の(X,Y)座標は領域S1,1に
ついてのプロットデータから求めることができる。
【0098】次に、点Oおよび点P0を通る直線の直線
の傾き(ΔX,ΔY)を次式により求める。
の傾き(ΔX,ΔY)を次式により求める。
【0099】
ΔX=(P0.X―O.X)
ΔY=(P0.y―O.Y)
そして、基準線は点Oおよび点P0を通るとの仮定の下
に、求められた傾き(ΔX,ΔY)を用いて、次式によ
り点Pi(i=1,2,3,4,6)の(X,Y)座標
(Pi.X,Pi.Y)を求める(図42を参照)。
に、求められた傾き(ΔX,ΔY)を用いて、次式によ
り点Pi(i=1,2,3,4,6)の(X,Y)座標
(Pi.X,Pi.Y)を求める(図42を参照)。
【0100】
Pi.X=Pi-1.X+ΔX
Pi.Y=Pi-1.Y+ΔY
以上のプロット処理により、各アライメントパターン5
6の中心点を通る基準グリッド線上に位置する全てのモ
ジュール50の(X,Y)座標が求められたことにな
る。
6の中心点を通る基準グリッド線上に位置する全てのモ
ジュール50の(X,Y)座標が求められたことにな
る。
【0101】次に、S608〜S612において、各領
域Sj,iの内部の各モジュールがプロットされる。
域Sj,iの内部の各モジュールがプロットされる。
【0102】先ず、S608では、4辺が基準グリッド
線で囲まれた領域Sj,i(j=1,・・・,R−1;i=
1,・・・,R−1)の内部のプロット処理が行なわれ
る。これらの領域については、4辺の全てについてプロ
ット点が得られているので、図43に示すように、対向
する辺の対応する位置のモジュール同士を結ぶ直線群の
交点を領域内の各モジュールのプロット点としてプロッ
ト処理を行なう。
線で囲まれた領域Sj,i(j=1,・・・,R−1;i=
1,・・・,R−1)の内部のプロット処理が行なわれ
る。これらの領域については、4辺の全てについてプロ
ット点が得られているので、図43に示すように、対向
する辺の対応する位置のモジュール同士を結ぶ直線群の
交点を領域内の各モジュールのプロット点としてプロッ
ト処理を行なう。
【0103】次に、S610では、3辺がグリッド線で
囲まれた領域S0,1〜S0,R-1,S1、 0〜SR-1,0,SR,1
〜SR,R-1,S1,R〜SR-1,Rの内部のプロット処理が行
なわれる。これらの領域については、3辺がプロット済
みである。そこで、図44に示すように、3辺のうち互
いに対向する2辺のプロット点同士を直線で結び、残り
の一辺については、この辺を共有する隣接領域(例えば
領域S0,2に対してS1 ,2)の、当該共有辺に対向する辺
(領域S1,2の下辺)上のプロット点を用いて、対応す
るプロット点同士を直線で結ぶ。そして、これら直線の
交点を領域内のプロット点としてプロット処理を行な
う。
囲まれた領域S0,1〜S0,R-1,S1、 0〜SR-1,0,SR,1
〜SR,R-1,S1,R〜SR-1,Rの内部のプロット処理が行
なわれる。これらの領域については、3辺がプロット済
みである。そこで、図44に示すように、3辺のうち互
いに対向する2辺のプロット点同士を直線で結び、残り
の一辺については、この辺を共有する隣接領域(例えば
領域S0,2に対してS1 ,2)の、当該共有辺に対向する辺
(領域S1,2の下辺)上のプロット点を用いて、対応す
るプロット点同士を直線で結ぶ。そして、これら直線の
交点を領域内のプロット点としてプロット処理を行な
う。
【0104】さらに、S612では、右下隅の領域S
R,Rの内部のプロット点が求められる。この領域につい
ては上辺上および左辺上のみプロット処理が行なわれて
いる。そこで、図45に示すように、領域SR,Rの上辺
を共有する隣接領域SR-1,Rの、当該共有辺に対向する
辺(上辺)の上のプロット点を用いて、対応するプロッ
ト点同士を直線で結ぶ。同様に、領域SR,Rの左辺を共
有する隣接領域SR,R-1の、当該共有辺に対向する辺
(左辺)の上のプロット点を用いて、対応するプロット
点同士を直線で結ぶ。そして、これら直線の交点を領域
内のプロット点として、プロット処理を行なう。
R,Rの内部のプロット点が求められる。この領域につい
ては上辺上および左辺上のみプロット処理が行なわれて
いる。そこで、図45に示すように、領域SR,Rの上辺
を共有する隣接領域SR-1,Rの、当該共有辺に対向する
辺(上辺)の上のプロット点を用いて、対応するプロッ
ト点同士を直線で結ぶ。同様に、領域SR,Rの左辺を共
有する隣接領域SR,R-1の、当該共有辺に対向する辺
(左辺)の上のプロット点を用いて、対応するプロット
点同士を直線で結ぶ。そして、これら直線の交点を領域
内のプロット点として、プロット処理を行なう。
【0105】なお、左上隅、右上隅、および左下隅の領
域S0,0,S0、R,SR,0は、位置検出パターン54に対
応する領域であるから、これらの領域についてはプロッ
ト処理を行なわない。このように、プロット処理が不必
要な位置検出パターン54についてのプロット処理を省
略することで、処理時間の短縮が図られている。
域S0,0,S0、R,SR,0は、位置検出パターン54に対
応する領域であるから、これらの領域についてはプロッ
ト処理を行なわない。このように、プロット処理が不必
要な位置検出パターン54についてのプロット処理を省
略することで、処理時間の短縮が図られている。
【0106】こうして各モジュールのプロット処理が完
了すると、次に、S614において、各プロット点の色
(白または黒)に応じて、黒であれば「1」、白であれ
ば「0」が、夫々、ビットデータマトリクスBの対応す
る要素に格納される。ただし、既に「2」または「3」
が設定されている要素は、S602で設定された機能パ
ターンに該当する要素であるから、先に設定された値を
優先してその値は変更しないものとする。
了すると、次に、S614において、各プロット点の色
(白または黒)に応じて、黒であれば「1」、白であれ
ば「0」が、夫々、ビットデータマトリクスBの対応す
る要素に格納される。ただし、既に「2」または「3」
が設定されている要素は、S602で設定された機能パ
ターンに該当する要素であるから、先に設定された値を
優先してその値は変更しないものとする。
【0107】次にフォーマット情報取得処理について説
明する。
明する。
【0108】図46は、フォーマット情報領域64を詳
細に示す図である。フォーマット情報領域64は2つ設
けられており、これら2つの領域には同じ情報が格納さ
れている。同図に示すように、第1のフォーマット情報
領域64は、左上の位置検出パターン54の右辺および
下辺に沿って、幅1モジュールのセパレータ領域60を
隔てた位置に並んだ15個のモジュールにより構成され
る。また、第2のフォーマット情報領域64は、右上の
位置検出パターン54の下辺に沿ってセパレータ領域6
0を隔てた位置に並んだ7個のモジュールと、左下の位
置検出パターン54の右辺に沿ってセパレータ領域60
を隔てた位置に並んだ8個のモジュールの計15個のモ
ジュールにより構成される。なお、タイミングパターン
58上に位置するモジュール(図46に黒で示すモジュ
ール)は、フォーマット情報領域64から除外する。
細に示す図である。フォーマット情報領域64は2つ設
けられており、これら2つの領域には同じ情報が格納さ
れている。同図に示すように、第1のフォーマット情報
領域64は、左上の位置検出パターン54の右辺および
下辺に沿って、幅1モジュールのセパレータ領域60を
隔てた位置に並んだ15個のモジュールにより構成され
る。また、第2のフォーマット情報領域64は、右上の
位置検出パターン54の下辺に沿ってセパレータ領域6
0を隔てた位置に並んだ7個のモジュールと、左下の位
置検出パターン54の右辺に沿ってセパレータ領域60
を隔てた位置に並んだ8個のモジュールの計15個のモ
ジュールにより構成される。なお、タイミングパターン
58上に位置するモジュール(図46に黒で示すモジュ
ール)は、フォーマット情報領域64から除外する。
【0109】図46においてフォーマット情報領域64
の各モジュールに付した番号は、各モジュールのビット
位置を表している。15個のモジュールで表される15
ビットのうち、上位5ビットはデータビットを表し、残
りの10ビットがエラー訂正ビットを表す。そして、5
ビットのデータビットのうち、2ビットがエラー訂正レ
ベルを表し、残りの3ビットがマスクパターンリファレ
ンスを表している。
の各モジュールに付した番号は、各モジュールのビット
位置を表している。15個のモジュールで表される15
ビットのうち、上位5ビットはデータビットを表し、残
りの10ビットがエラー訂正ビットを表す。そして、5
ビットのデータビットのうち、2ビットがエラー訂正レ
ベルを表し、残りの3ビットがマスクパターンリファレ
ンスを表している。
【0110】フォーマット情報取得処理では、第1およ
び第2のフォーマット情報領域64の何れか一方からエ
ラー訂正レベルおよびマスクパターンリファレンスを取
得する。なお、エラー訂正レベルは、4つの訂正レベル
M(復元率15%)、L(復元率7%)、H(復元率3
0%)、Q(復元率25%)のうちの何れかのレベルを
表し、後述するコードワード変換処理(S900)で用
いられる。また、マスクパターンリファレンスは、後述
するマスキング解除処理(S800)で用いられるマス
クパターンの種類を表している。
び第2のフォーマット情報領域64の何れか一方からエ
ラー訂正レベルおよびマスクパターンリファレンスを取
得する。なお、エラー訂正レベルは、4つの訂正レベル
M(復元率15%)、L(復元率7%)、H(復元率3
0%)、Q(復元率25%)のうちの何れかのレベルを
表し、後述するコードワード変換処理(S900)で用
いられる。また、マスクパターンリファレンスは、後述
するマスキング解除処理(S800)で用いられるマス
クパターンの種類を表している。
【0111】図47は、フォーマット情報取得処理のフ
ローチャートである。同図に示すように、先ず、S70
2において、左上に位置する第1のフォーマット情報領
域64の各モジュールで表されるデータが取得される。
このフォーマット情報領域64はビットデータマトリク
スBの要素B(y,x)(y=8かつx=0〜5,7,
8、および、x=8かつy=7,5〜0)に対応する。
したがって、ビットデータマトリクスBのこれらの要素
の値を読み出し、ビット14が最上位ビット、ビット0
が最下位ビットとなるように並べることで15ビットの
データが取得される。例えば、図48に示す例の場合、
フォーマット情報として「1011110011111
00」が取得されることとなる。
ローチャートである。同図に示すように、先ず、S70
2において、左上に位置する第1のフォーマット情報領
域64の各モジュールで表されるデータが取得される。
このフォーマット情報領域64はビットデータマトリク
スBの要素B(y,x)(y=8かつx=0〜5,7,
8、および、x=8かつy=7,5〜0)に対応する。
したがって、ビットデータマトリクスBのこれらの要素
の値を読み出し、ビット14が最上位ビット、ビット0
が最下位ビットとなるように並べることで15ビットの
データが取得される。例えば、図48に示す例の場合、
フォーマット情報として「1011110011111
00」が取得されることとなる。
【0112】次に、S704において、データが読み出
されたビットマトリクスの要素B(y,x)に「2」ま
たは「3」が格納される。すなわち、第1のフォーマッ
ト情報領域64のx方向に並んだモジュールに対応する
要素に「2」が格納され、y方向に並んだモジュールに
対応する要素に「3」が格納される。
されたビットマトリクスの要素B(y,x)に「2」ま
たは「3」が格納される。すなわち、第1のフォーマッ
ト情報領域64のx方向に並んだモジュールに対応する
要素に「2」が格納され、y方向に並んだモジュールに
対応する要素に「3」が格納される。
【0113】すなわち、
要素B(y,x)=2 (y=8かつx=0〜5、7)
要素B(y,x)=3 (x=8かつy=1〜8)
これにより、後述するコードワード変換処理において、
これらの要素をコードワード領域52に対応する要素と
区別することが可能となる。
これらの要素をコードワード領域52に対応する要素と
区別することが可能となる。
【0114】次に、S706において、上記のように取
得されたフォーマット情報と所定のマスクパターン
(「101010000010010」)とのXOR演
算が行なわれ、続くS708において、XOR演算後の
データについてエラー訂正処理が行なわれる。そして、
S710においてエラー訂正処理が成功したか否かが判
別され、成功した場合には、S712において当該エラ
ー訂正処理で計算されたエラー訂正レベルおよびマスク
パターンリファレンスが取得される。例えば、上記例の
ように、フォーマット情報として「101111001
111100」が取得された場合、XOR演算後のビッ
ト列は「000101001101110」となり、こ
れについてエラー訂正処理を行なうことで、エラー訂正
レベル「00」(レベルMに対応)およびマスクパター
ンリファレンス「010」が得られる。
得されたフォーマット情報と所定のマスクパターン
(「101010000010010」)とのXOR演
算が行なわれ、続くS708において、XOR演算後の
データについてエラー訂正処理が行なわれる。そして、
S710においてエラー訂正処理が成功したか否かが判
別され、成功した場合には、S712において当該エラ
ー訂正処理で計算されたエラー訂正レベルおよびマスク
パターンリファレンスが取得される。例えば、上記例の
ように、フォーマット情報として「101111001
111100」が取得された場合、XOR演算後のビッ
ト列は「000101001101110」となり、こ
れについてエラー訂正処理を行なうことで、エラー訂正
レベル「00」(レベルMに対応)およびマスクパター
ンリファレンス「010」が得られる。
【0115】次に、S714において、第2のフォーマ
ット情報領域の左下の部分(つまりモジュールがy方向
に並んだ部分)に対応するビットデータマトリクスBの
要素に「2」が格納され、右上の部分(つまりモジュー
ルがx方向に並んだ部分)に対応する要素に「3」が格
納される。すなわち、 要素B(y,x)=2 (x=8かつy=Z−1〜Z−
8) 要素B(y,x)=3 (y=8かつx=Z−1〜Z−
8) とされる。
ット情報領域の左下の部分(つまりモジュールがy方向
に並んだ部分)に対応するビットデータマトリクスBの
要素に「2」が格納され、右上の部分(つまりモジュー
ルがx方向に並んだ部分)に対応する要素に「3」が格
納される。すなわち、 要素B(y,x)=2 (x=8かつy=Z−1〜Z−
8) 要素B(y,x)=3 (y=8かつx=Z−1〜Z−
8) とされる。
【0116】また、上記S710でエラー訂正処理に失
敗したと判別された場合は、S716において第2のフ
ォーマット情報領域64を対象として上記S702〜S
708と同様の処理が行なわれ、S718でエラー訂正
処理に失敗したと判別された場合は、S720でエラー
出力が行なわれて処理は終了する。また、S718でエ
ラー訂正処理に成功したと判別された場合は、エラー訂
正処理で計算されたエラー訂正レベルおよびマスクパタ
ーンリファレンスが取得され、S724で、上記S70
4と同様にして第1のフォーマット情報領域64の各モ
ジュールに対応するビットデータマトリクスBの要素の
値が「2」または「3」に設定される。
敗したと判別された場合は、S716において第2のフ
ォーマット情報領域64を対象として上記S702〜S
708と同様の処理が行なわれ、S718でエラー訂正
処理に失敗したと判別された場合は、S720でエラー
出力が行なわれて処理は終了する。また、S718でエ
ラー訂正処理に成功したと判別された場合は、エラー訂
正処理で計算されたエラー訂正レベルおよびマスクパタ
ーンリファレンスが取得され、S724で、上記S70
4と同様にして第1のフォーマット情報領域64の各モ
ジュールに対応するビットデータマトリクスBの要素の
値が「2」または「3」に設定される。
【0117】次に、マスキング解除処理について説明す
る。QRコードを作成する際には、シンボル内のデータ
エンコード領域50に位置検出パターン54と同じ
「1:1:3:1:1」のパターンが現れないよう、白
黒のモジュールを適切に分散させるために、所定のマス
クパターンとのXOR演算を施すマスキング処理が行な
われる。このマスクパターンとしては、図49に示すよ
うに、8種類の(12×12)モジュールのマスクパタ
ーンの何れかが用いられる。マスキング解除処理では、
このようなマスキング処理の逆演算を行なうことによ
り、マスキングを解除する。その際、図49に示す8種
類のマスクパターンの夫々について、黒のモジュールを
「1」、白のモジュールを「0」で表した8種類のマス
クパターンデータテーブルを予め用意しておき、これら
の中からマスクパターンリファレンスで指定されるデー
タテーブルを用いてマスキングを解除する。
る。QRコードを作成する際には、シンボル内のデータ
エンコード領域50に位置検出パターン54と同じ
「1:1:3:1:1」のパターンが現れないよう、白
黒のモジュールを適切に分散させるために、所定のマス
クパターンとのXOR演算を施すマスキング処理が行な
われる。このマスクパターンとしては、図49に示すよ
うに、8種類の(12×12)モジュールのマスクパタ
ーンの何れかが用いられる。マスキング解除処理では、
このようなマスキング処理の逆演算を行なうことによ
り、マスキングを解除する。その際、図49に示す8種
類のマスクパターンの夫々について、黒のモジュールを
「1」、白のモジュールを「0」で表した8種類のマス
クパターンデータテーブルを予め用意しておき、これら
の中からマスクパターンリファレンスで指定されるデー
タテーブルを用いてマスキングを解除する。
【0118】図50は、マスキング解除処理のフローチ
ャートである。同図に示すように、先ず、S802にお
いて、上記フォーマット情報取得処理で得られたマスク
パターンリファレンスに対応するマスクパターンデータ
テーブルが選択される。
ャートである。同図に示すように、先ず、S802にお
いて、上記フォーマット情報取得処理で得られたマスク
パターンリファレンスに対応するマスクパターンデータ
テーブルが選択される。
【0119】次に、S804において、選択された(1
2×12)のマスクパターンテーブルが、図51に示す
ように、ビットデータマトリクスBの左上から敷き詰め
るように繰り返し配置されて、ビットデータマトリクス
Bとマスクパターンテーブルとの対応する要素同士でX
OR演算が行なわれ、ビットデータマトリクスBの各要
素の値が、XOR演算の結果に置き換えられる。ただ
し、機能パターンの領域についてはマスキング解除を行
なってはならないので、値が「2」または「3」である
ビットデータマトリクスBの要素については、XOR演
算処理は行なわないものとする。
2×12)のマスクパターンテーブルが、図51に示す
ように、ビットデータマトリクスBの左上から敷き詰め
るように繰り返し配置されて、ビットデータマトリクス
Bとマスクパターンテーブルとの対応する要素同士でX
OR演算が行なわれ、ビットデータマトリクスBの各要
素の値が、XOR演算の結果に置き換えられる。ただ
し、機能パターンの領域についてはマスキング解除を行
なってはならないので、値が「2」または「3」である
ビットデータマトリクスBの要素については、XOR演
算処理は行なわないものとする。
【0120】以上でマスキング解除処理は終了する。
【0121】次に、コードワード変換処理について説明
する。コードワード変換処理では、コードワード領域5
2からデータコードワードおよびデータ訂正コードワー
ドを取得する。
する。コードワード変換処理では、コードワード領域5
2からデータコードワードおよびデータ訂正コードワー
ドを取得する。
【0122】コードワード、エラー訂正コードワードの
配置は、バージョン数、エラー訂正レベルによりそれぞ
れ異なる。図52は、バージョン7、エラー訂正レベル
MのQRコードについて、データコードワードおよびデ
ータ訂正コードワードの配置を示している。同図におい
て、「D」で始まる符号の領域はデータコードワードを
示し、「E」で始まる符号の領域はデータ訂正コードワ
ードを示している。
配置は、バージョン数、エラー訂正レベルによりそれぞ
れ異なる。図52は、バージョン7、エラー訂正レベル
MのQRコードについて、データコードワードおよびデ
ータ訂正コードワードの配置を示している。同図におい
て、「D」で始まる符号の領域はデータコードワードを
示し、「E」で始まる符号の領域はデータ訂正コードワ
ードを示している。
【0123】各コードワードは基本的には縦2列に並ん
だ8ビットにより構成される。そして、コードワード内
でビットが配置される向きは、2列毎に上下に反転する
ようになっている。すなわち、図53に示すように、シ
ンボルの右下から上向きに開始して、上端に達すると下
向きに反転し、下端に達すると上向きに反転するような
2列単位の走査線を設定し、上向き、下向き、および向
きが反転する部分の各コードワードについて、図54に
示すような順序でビットが配置される。なお、同図にお
いて、最上位ビットを「7」、最下位ビットを「0」で
表している。
だ8ビットにより構成される。そして、コードワード内
でビットが配置される向きは、2列毎に上下に反転する
ようになっている。すなわち、図53に示すように、シ
ンボルの右下から上向きに開始して、上端に達すると下
向きに反転し、下端に達すると上向きに反転するような
2列単位の走査線を設定し、上向き、下向き、および向
きが反転する部分の各コードワードについて、図54に
示すような順序でビットが配置される。なお、同図にお
いて、最上位ビットを「7」、最下位ビットを「0」で
表している。
【0124】上記図54に示す配置規則は、原則的な規
則であるが、タイミングパターン58、アライメントパ
ターン56、またはバージョン情報領域62に属するモ
ジュールについては、2列ずつの配置を行なうことがで
きない。そこで、コードワードの右側の列が、これらタ
イミングパターン58等と重なるモジュールに達した場
合は、図55に示すように、原則的な規則では右側の列
に配置すべきビットを、左側の列に延長して配置する
(図54のコードワードnのビット2)。そして、次の
コードワードについても右列にビットを配置できない場
合(図55のコードワード(n+1)のビット7)は、
引き続き左側の列からビット配置を開始し、右列への配
置が可能となったモジュール(図55のコードワード
(n+1)のビット6)から、原則通りの2列の配置を
再開する。
則であるが、タイミングパターン58、アライメントパ
ターン56、またはバージョン情報領域62に属するモ
ジュールについては、2列ずつの配置を行なうことがで
きない。そこで、コードワードの右側の列が、これらタ
イミングパターン58等と重なるモジュールに達した場
合は、図55に示すように、原則的な規則では右側の列
に配置すべきビットを、左側の列に延長して配置する
(図54のコードワードnのビット2)。そして、次の
コードワードについても右列にビットを配置できない場
合(図55のコードワード(n+1)のビット7)は、
引き続き左側の列からビット配置を開始し、右列への配
置が可能となったモジュール(図55のコードワード
(n+1)のビット6)から、原則通りの2列の配置を
再開する。
【0125】コードワード変換処理では、上記のような
コードワードの配置規則に従った順序でビットデータマ
トリクスBの要素を走査してコードワードへの変換処理
を行なう。そして、この変換処理にあたっては、データ
コードワードとエラー訂正コードワードからなる一次元
のビットストリームのブロック(以下、コードワードデ
ータブロックという)を指定された個数だけ構築し、各
ビットストリームブロックについてエラー訂正処理を行
なう。
コードワードの配置規則に従った順序でビットデータマ
トリクスBの要素を走査してコードワードへの変換処理
を行なう。そして、この変換処理にあたっては、データ
コードワードとエラー訂正コードワードからなる一次元
のビットストリームのブロック(以下、コードワードデ
ータブロックという)を指定された個数だけ構築し、各
ビットストリームブロックについてエラー訂正処理を行
なう。
【0126】図56は、バージョン7、エラー訂正レベ
ルMのQRコードの場合のコードワードデータブロック
を示す。同図に示すように、4つのコードワードデータ
ブロックが構築され、各ブロックは、31個のデータコ
ードワードと18個のエラー訂正コードワードとを含ん
でいる。上記図52に示すコードワード配置からわかる
ように、データコードワードおよびエラー訂正コードワ
ードは端から順序よく並んでいるわけではない。そこ
で、コードワードデータブロックを構築するにあたって
は、図57に示すように、ビットデータマトリクスBか
ら得られたコードワードがどのコードワードデータブロ
ックに属するかを逐次判断しながら、各ブロックにコー
ドワードを割り当てていく。
ルMのQRコードの場合のコードワードデータブロック
を示す。同図に示すように、4つのコードワードデータ
ブロックが構築され、各ブロックは、31個のデータコ
ードワードと18個のエラー訂正コードワードとを含ん
でいる。上記図52に示すコードワード配置からわかる
ように、データコードワードおよびエラー訂正コードワ
ードは端から順序よく並んでいるわけではない。そこ
で、コードワードデータブロックを構築するにあたって
は、図57に示すように、ビットデータマトリクスBか
ら得られたコードワードがどのコードワードデータブロ
ックに属するかを逐次判断しながら、各ブロックにコー
ドワードを割り当てていく。
【0127】なお、コードワードデータブロックの個
数、1ブロック当たりのデータコードワードの個数、お
よび、1ブロック当たりのエラー訂正コードの個数は、
バージョン数およびエラー訂正レベルに応じて定まる。
本実施形態では、これらの対応関係を予めデータブロッ
ク情報テーブルに格納している。
数、1ブロック当たりのデータコードワードの個数、お
よび、1ブロック当たりのエラー訂正コードの個数は、
バージョン数およびエラー訂正レベルに応じて定まる。
本実施形態では、これらの対応関係を予めデータブロッ
ク情報テーブルに格納している。
【0128】また、図52に示すコードワードの配置か
らわかるように、データコードワードはシンボル内の右
側に、エラー訂正コードワードはシンボル内の左側に配
置される。そこで、コードワード変換処理では、シンボ
ルの右下位置からデータ取得を開始するものとして、先
ず、データコードワードの取得処理を行い、データコー
ドワードの取得が完了した後、エラー訂正コードワード
の取得処理を行なうようにしている。
らわかるように、データコードワードはシンボル内の右
側に、エラー訂正コードワードはシンボル内の左側に配
置される。そこで、コードワード変換処理では、シンボ
ルの右下位置からデータ取得を開始するものとして、先
ず、データコードワードの取得処理を行い、データコー
ドワードの取得が完了した後、エラー訂正コードワード
の取得処理を行なうようにしている。
【0129】図58および図59は、コードワード変換
処理のフローチャートである。同図に示すように、先ず
S902において、上記データブロック情報テーブルを
参照して、バージョン数およびエラー訂正レベルから、
データコードブロックの個数、1ブロック当たりのデー
タコードワードの個数、1ブロック当たりのエラー訂正
コードの個数、および、図52に示すようなシンボル内
でのコードワードの配置に関する情報が取得される。
処理のフローチャートである。同図に示すように、先ず
S902において、上記データブロック情報テーブルを
参照して、バージョン数およびエラー訂正レベルから、
データコードブロックの個数、1ブロック当たりのデー
タコードワードの個数、1ブロック当たりのエラー訂正
コードの個数、および、図52に示すようなシンボル内
でのコードワードの配置に関する情報が取得される。
【0130】次に、S904において、ビットデータマ
トリクスBのデータ取得列を表す列番号Jが(Z−1)
に設定されると共に、ビットデータマトリクスBのデー
タ取得方向Dの値が「−1」に設定され、さらに、コー
ドワードの取得数を表すカウンタGが「0」に初期化さ
れる。なお、列番号がJに設定される値「Z」はビット
データマトリクスBのサイズを表し、データ取得方向D
は、値「−1」が上向き、値「1」が下向きを表すもの
とする。
トリクスBのデータ取得列を表す列番号Jが(Z−1)
に設定されると共に、ビットデータマトリクスBのデー
タ取得方向Dの値が「−1」に設定され、さらに、コー
ドワードの取得数を表すカウンタGが「0」に初期化さ
れる。なお、列番号がJに設定される値「Z」はビット
データマトリクスBのサイズを表し、データ取得方向D
は、値「−1」が上向き、値「1」が下向きを表すもの
とする。
【0131】次に、S906において、上記S902で
取得した情報に基づいて、データコードワードの総個数
M1、各データコードブロックに属する先頭のデータコ
ードワードの番号等のブロック情報が設定される。
取得した情報に基づいて、データコードワードの総個数
M1、各データコードブロックに属する先頭のデータコ
ードワードの番号等のブロック情報が設定される。
【0132】次に、S908において、縦方向(y方
向)のデータ取得位置を示すカウンタIが(Z−1)に
初期化され、以後、S910〜S928において、デー
タコードワードの取得処理が行なわれる。
向)のデータ取得位置を示すカウンタIが(Z−1)に
初期化され、以後、S910〜S928において、デー
タコードワードの取得処理が行なわれる。
【0133】先ずS910では、各コードワードの何ビ
ット目を取得中であるかを示すカウンタwが「0」に初
期化される。
ット目を取得中であるかを示すカウンタwが「0」に初
期化される。
【0134】S912では、コードワードの配置情報に
基づいて、ビットデータマトリクスBの要素B(I,
J)に該当するデータコードワードの番号Lが判別され
る。
基づいて、ビットデータマトリクスBの要素B(I,
J)に該当するデータコードワードの番号Lが判別され
る。
【0135】S914では、各コードワードデータブロ
ックの先頭データコード番号に関する情報に基づいて、
データコードワードLが属するコードワードデータブロ
ックの番号Kおよびそのコードワードデータブロック内
でのデータ格納開始ビット位置kが決定される。
ックの先頭データコード番号に関する情報に基づいて、
データコードワードLが属するコードワードデータブロ
ックの番号Kおよびそのコードワードデータブロック内
でのデータ格納開始ビット位置kが決定される。
【0136】S916では、B(I,J)の値が「1」
または「0」であるか否かが判別される。その結果、B
(I,J)=1またはB(I,J)=0が成立する場合
は、S918において、コードワードデータブロックK
の先頭から(k+w)番目のビットにB(I,J)の値
が格納される。
または「0」であるか否かが判別される。その結果、B
(I,J)=1またはB(I,J)=0が成立する場合
は、S918において、コードワードデータブロックK
の先頭から(k+w)番目のビットにB(I,J)の値
が格納される。
【0137】次に、S920において、カウンタwが
「1」だけ増加され、続くS922では、データ取得位
置(I,J)の更新処理が行なわれる。具体的には、列
番号Jが奇数であれば、現在位置がコードワード内の右
側の列であると判断されて、左側の列に移るべく列番号
Jから「1」が減じられる。また、列番号Jが偶数であ
れば、現在位置がコードワード内の左側の列であると判
断されて、右上(上向きにデータ取得中の場合)または
右下(下向きにデータ取得中の場合)のモジュールに移
るべく、列番号Jに「1」が加えられると共に行番号I
にDが加えられる。
「1」だけ増加され、続くS922では、データ取得位
置(I,J)の更新処理が行なわれる。具体的には、列
番号Jが奇数であれば、現在位置がコードワード内の右
側の列であると判断されて、左側の列に移るべく列番号
Jから「1」が減じられる。また、列番号Jが偶数であ
れば、現在位置がコードワード内の左側の列であると判
断されて、右上(上向きにデータ取得中の場合)または
右下(下向きにデータ取得中の場合)のモジュールに移
るべく、列番号Jに「1」が加えられると共に行番号I
にDが加えられる。
【0138】次に、S924において、wが「8」に達
したか否かが判別され、w=8が不成立であれば、デー
タコードワード内の次のビットを取得すべく上記S91
6へ戻る。一方、w=8が成立する場合は、1つのデー
タコードワードの取得が完了したことになるから、S9
26においてGの値が「1」だけ増加され、続くS92
8においてGがデータコードワードの総個数M1を超え
たか否かが判別される。その結果、G>M1が不成立で
あれば、次のデータコードワードを取得すべく、上記S
910へ戻る。一方、G>M1が成立する場合は、S9
40以降において、エラー訂正コードワードの取得処理
が行なわれる。
したか否かが判別され、w=8が不成立であれば、デー
タコードワード内の次のビットを取得すべく上記S91
6へ戻る。一方、w=8が成立する場合は、1つのデー
タコードワードの取得が完了したことになるから、S9
26においてGの値が「1」だけ増加され、続くS92
8においてGがデータコードワードの総個数M1を超え
たか否かが判別される。その結果、G>M1が不成立で
あれば、次のデータコードワードを取得すべく、上記S
910へ戻る。一方、G>M1が成立する場合は、S9
40以降において、エラー訂正コードワードの取得処理
が行なわれる。
【0139】また、上記S916でB(I,J)が
「0」または「1」の何れでもないと判別された場合
は、S930において、B(I,J)が「2」に等しい
か否かが判別される。その結果、B(I,J)=2が成
立する場合は、データ取得方向を反転すべきと判定され
る。この場合、S932においてデータ取得方向Dの符
号が反転され、列番号Jから「2」が減じられた後、S
916へ戻る。一方、S930でB(I,J)=2が不
成立(つまり、B(I,J)=3が成立)する場合は、
データを無視すべきと判断されて、S934において、
上記S922と同様にしてデータ取得位置(I,J)が
更新された後、上記S916へ戻る。
「0」または「1」の何れでもないと判別された場合
は、S930において、B(I,J)が「2」に等しい
か否かが判別される。その結果、B(I,J)=2が成
立する場合は、データ取得方向を反転すべきと判定され
る。この場合、S932においてデータ取得方向Dの符
号が反転され、列番号Jから「2」が減じられた後、S
916へ戻る。一方、S930でB(I,J)=2が不
成立(つまり、B(I,J)=3が成立)する場合は、
データを無視すべきと判断されて、S934において、
上記S922と同様にしてデータ取得位置(I,J)が
更新された後、上記S916へ戻る。
【0140】すなわち、ビットデータマトリクスBの対
応要素に値「2」が設定された位置検出パターン54ま
たはバージョン情報領域62に達した場合は、そこから
同じ方向へ進んでもエンコードデータは現れることはな
いため、データ方向を取得させる。一方、ビットデータ
マトリクスBに値「3」が設定されたタイミングパター
ン58またはアライメントパターン56に達した場合
は、その先にエンコードデータが存在するので、ビット
データマトリクスBの値を無視するだけにして、同じデ
ータ取得方向で次のデータを更新する。
応要素に値「2」が設定された位置検出パターン54ま
たはバージョン情報領域62に達した場合は、そこから
同じ方向へ進んでもエンコードデータは現れることはな
いため、データ方向を取得させる。一方、ビットデータ
マトリクスBに値「3」が設定されたタイミングパター
ン58またはアライメントパターン56に達した場合
は、その先にエンコードデータが存在するので、ビット
データマトリクスBの値を無視するだけにして、同じデ
ータ取得方向で次のデータを更新する。
【0141】図59に示すS940〜S970では、エ
ラー訂正コードワードについて、上記S904〜S92
8におけるデータコードワードと同様のデータ取得処理
が行なわれる。ただし、データ取得位置I,Jおよび取
得方向Dの初期化は行なわず、データコードワードの取
得に引き続いて処理を開始するものとする。そして、S
964でコードワード取得数がエラー訂正コードワード
の総個数M2よりも大きいと判別されると、コードワー
ド変換処理は終了する。
ラー訂正コードワードについて、上記S904〜S92
8におけるデータコードワードと同様のデータ取得処理
が行なわれる。ただし、データ取得位置I,Jおよび取
得方向Dの初期化は行なわず、データコードワードの取
得に引き続いて処理を開始するものとする。そして、S
964でコードワード取得数がエラー訂正コードワード
の総個数M2よりも大きいと判別されると、コードワー
ド変換処理は終了する。
【0142】次に、エラー訂正処理の一般的な手法につ
いて説明する。図60は、エラー訂正処理の手順を概念
的に示す図である。同図に示すように、エラー訂正処理
では、コードワード変換処理で得られた各コードワード
データブロック毎に、エラー訂正コードワードを用いて
同じブロック内のデータコードワードのエラー訂正処理
を行い、エラー訂正が行なわれたデータコードワードを
番号順に並べたデータコードワードストリームを生成す
る。なお、エラー訂正処理は、公知のReed−Sol
omon法を用いて行なわれる。
いて説明する。図60は、エラー訂正処理の手順を概念
的に示す図である。同図に示すように、エラー訂正処理
では、コードワード変換処理で得られた各コードワード
データブロック毎に、エラー訂正コードワードを用いて
同じブロック内のデータコードワードのエラー訂正処理
を行い、エラー訂正が行なわれたデータコードワードを
番号順に並べたデータコードワードストリームを生成す
る。なお、エラー訂正処理は、公知のReed−Sol
omon法を用いて行なわれる。
【0143】図61はエラー訂正処理のフローチャート
である。同図に示すように、先ずS1002において、
処理対象のコードワードデータブロックの番号を示すカ
ウンタnが「1」に初期化される。次に、S1004に
おいて、コードワードデータブロックnについて、エラ
ー訂正処理が行なわれる。そして、S1006におい
て、エラー訂正処理で検出されたエラー数Eが、上記ブ
ロック情報テーブルから取得される復元可能なコードワ
ード数Ecを超えているか否かが判別される。その結
果、E>Ecであれば、エラー訂正処理を行なえないと
判断され、S1008でエラー表示が行なわれて処理は
終了する。一方、E>Ecが不成立であれば、S101
0において、エラー訂正処理後のデータコードワードが
番号順にデータコードワードストリームに格納される。
そして、S1012においてカウンタnに「1」が加え
られ、S1010において、カウンタnがコードワード
データブロック数を超えていなければ、上記S1004
へ戻る。一方、nがコードワードデータブロック数を超
えていればエラー訂正処理は終了する。
である。同図に示すように、先ずS1002において、
処理対象のコードワードデータブロックの番号を示すカ
ウンタnが「1」に初期化される。次に、S1004に
おいて、コードワードデータブロックnについて、エラ
ー訂正処理が行なわれる。そして、S1006におい
て、エラー訂正処理で検出されたエラー数Eが、上記ブ
ロック情報テーブルから取得される復元可能なコードワ
ード数Ecを超えているか否かが判別される。その結
果、E>Ecであれば、エラー訂正処理を行なえないと
判断され、S1008でエラー表示が行なわれて処理は
終了する。一方、E>Ecが不成立であれば、S101
0において、エラー訂正処理後のデータコードワードが
番号順にデータコードワードストリームに格納される。
そして、S1012においてカウンタnに「1」が加え
られ、S1010において、カウンタnがコードワード
データブロック数を超えていなければ、上記S1004
へ戻る。一方、nがコードワードデータブロック数を超
えていればエラー訂正処理は終了する。
【0144】次に、データ復元処理について一般的な手
法を説明する。上記のように取得されたデータコードワ
ードストリームには、図62に示すように、混在モード
と呼ばれるモードインジケータ、文字数インジケータ、
およびデータからなるデータブロックが繰り返し配置さ
れている。モードインジケータは、図63のモードイン
ジケータテーブルに示すように、後に続くデータが拡張
チャンネル解釈(ECI)モード、数字モード、英数字モ
ード、8ビットバイトモード、漢字モード、またはター
ミネータの何れを表す4ビットのデータである。その他
に連結モード、FNC1モードが定義されている。ま
た、文字数インジケータは、データの文字数を表すもの
であり、そのビット数は、図64の文字数インジケータ
ビットテーブルに示すように、バージョンおよびモード
に応じて定められている。
法を説明する。上記のように取得されたデータコードワ
ードストリームには、図62に示すように、混在モード
と呼ばれるモードインジケータ、文字数インジケータ、
およびデータからなるデータブロックが繰り返し配置さ
れている。モードインジケータは、図63のモードイン
ジケータテーブルに示すように、後に続くデータが拡張
チャンネル解釈(ECI)モード、数字モード、英数字モ
ード、8ビットバイトモード、漢字モード、またはター
ミネータの何れを表す4ビットのデータである。その他
に連結モード、FNC1モードが定義されている。ま
た、文字数インジケータは、データの文字数を表すもの
であり、そのビット数は、図64の文字数インジケータ
ビットテーブルに示すように、バージョンおよびモード
に応じて定められている。
【0145】データ復元処理では、各データブロックに
ついて、モードインジケータおよび文字数インジケータ
を用いてデータの復元を行なう。
ついて、モードインジケータおよび文字数インジケータ
を用いてデータの復元を行なう。
【0146】図65は、データ復元処理のフローチャー
トである。同図に示すように、先ずS1102におい
て、データコードワードストリームから4ビットのモー
ドインジケータが取得され、S1104において、モー
ドインジケータに基づいてモード(ECIモード、連結
モード、FNC1モード、その他のモード)が判別され
る。ECIモード、連結モード、FNC1モードの場
合、それぞれに応じた処理を行う。
トである。同図に示すように、先ずS1102におい
て、データコードワードストリームから4ビットのモー
ドインジケータが取得され、S1104において、モー
ドインジケータに基づいてモード(ECIモード、連結
モード、FNC1モード、その他のモード)が判別され
る。ECIモード、連結モード、FNC1モードの場
合、それぞれに応じた処理を行う。
【0147】まず、ECIモードの場合の処理について
説明する。ECIモードの場合、S1106においてデ
ータコードワードストリームから8ビットのECI割り
当て番号が取得される。次にS1108において、再び
データコードワードストリームから4ビットのモードイ
ンジケータが取得され、S1110においてモードイン
ジケータがFNC1であるか否かの判別を行う。モード
インジケータがFNC1である場合は、S1112にお
いてFNC1において一般的な手法を用いた処理を行
い、S1114においてさらにモードインジケータを取
得し、S1130においてすべてのビットストリームに
ついてデータを復元したか否かを判別する。モードイン
ジケータがFNC1でない場合は、何も処理を行わず、
S1130へ移動する。
説明する。ECIモードの場合、S1106においてデ
ータコードワードストリームから8ビットのECI割り
当て番号が取得される。次にS1108において、再び
データコードワードストリームから4ビットのモードイ
ンジケータが取得され、S1110においてモードイン
ジケータがFNC1であるか否かの判別を行う。モード
インジケータがFNC1である場合は、S1112にお
いてFNC1において一般的な手法を用いた処理を行
い、S1114においてさらにモードインジケータを取
得し、S1130においてすべてのビットストリームに
ついてデータを復元したか否かを判別する。モードイン
ジケータがFNC1でない場合は、何も処理を行わず、
S1130へ移動する。
【0148】次に連結モードの場合の処理について説明
する。連結モードの場合、S1116においてデータコ
ードワードストリームから連結ヘッダのエンコード処理
が行われる。次にS1118において、再びデータコー
ドワードストリームから4ビットのモードインジケータ
が取得され、S1120においてモードインジケータが
FNC1であるか否かの判別を行う。モードインジケー
タがFNC1である場合は、S1122においてFNC
1の一般的な手法を用いた処理を行い、S1124にお
いてさらにモードインジケータを取得し、S1130に
おいてすべてのビットストリームについてデータを復元
したか否かを判別する。モードインジケータがFNC1
でない場合は、何も処理を行わず、S1130へ移動す
る。
する。連結モードの場合、S1116においてデータコ
ードワードストリームから連結ヘッダのエンコード処理
が行われる。次にS1118において、再びデータコー
ドワードストリームから4ビットのモードインジケータ
が取得され、S1120においてモードインジケータが
FNC1であるか否かの判別を行う。モードインジケー
タがFNC1である場合は、S1122においてFNC
1の一般的な手法を用いた処理を行い、S1124にお
いてさらにモードインジケータを取得し、S1130に
おいてすべてのビットストリームについてデータを復元
したか否かを判別する。モードインジケータがFNC1
でない場合は、何も処理を行わず、S1130へ移動す
る。
【0149】次にFNC1モードの場合の処理について
説明する。FNC1モードの場合、S1126において
FNC1の一般的な手法を用いた処理を行い、S112
8においてさらにモードインジケータを取得し、S11
30においてすべてのビットストリームについてデータ
を復元したか否かを判別する。
説明する。FNC1モードの場合、S1126において
FNC1の一般的な手法を用いた処理を行い、S112
8においてさらにモードインジケータを取得し、S11
30においてすべてのビットストリームについてデータ
を復元したか否かを判別する。
【0150】その他のモードの場合は、何も処理を行わ
ずS1130へ移動する。
ずS1130へ移動する。
【0151】S1130においてすべてのビットストリ
ームについてデータを復元していない場合は、S113
2において取得したモードインジケータとバージョン数
とに基づいて、上記文字数インジケータビットテーブル
を参照して、文字数インジケータのビット数が取得され
る。次に、S1134において、コードワードストリー
ムから、そのビット数分の文字数インジケータが取得さ
れる。そして、S1136において、モードインジケー
タに基づいてモード(数字モード、英数字モード、8ビ
ットバイトモード、漢字モードまたはターミネータ)が
判別されたうえで、文字数インジケータで表される文字
数分だけ、モードに応じたデータ復元処理が行なわれ
る。 先ず、S1138において行われる数字モード処
理について説明を行う。数字モードの場合には、3桁の
数値が10ビットで表される。そして、桁数が3の倍数
でない場合には、最後の1桁または2桁は夫々4ビット
または7ビットで表される。そこで、数字モードの復元
処理では、データコードワードストリームから10ビッ
トずつ取得していき、文字数が3の倍数でない場合は、
最後の1桁または2桁については、夫々、4ビットまた
は7ビットを取得する。具体的な復元方法は、”2次元
コードシンボル-QRコード-技術仕様”(エーアイエム
ジャパン)で定義されている手法を用いる。そして、数
字モードのデータ復元処理を終了した後、S1146に
おいて次のモードインジケータを取得し、S1130へ
戻る。
ームについてデータを復元していない場合は、S113
2において取得したモードインジケータとバージョン数
とに基づいて、上記文字数インジケータビットテーブル
を参照して、文字数インジケータのビット数が取得され
る。次に、S1134において、コードワードストリー
ムから、そのビット数分の文字数インジケータが取得さ
れる。そして、S1136において、モードインジケー
タに基づいてモード(数字モード、英数字モード、8ビ
ットバイトモード、漢字モードまたはターミネータ)が
判別されたうえで、文字数インジケータで表される文字
数分だけ、モードに応じたデータ復元処理が行なわれ
る。 先ず、S1138において行われる数字モード処
理について説明を行う。数字モードの場合には、3桁の
数値が10ビットで表される。そして、桁数が3の倍数
でない場合には、最後の1桁または2桁は夫々4ビット
または7ビットで表される。そこで、数字モードの復元
処理では、データコードワードストリームから10ビッ
トずつ取得していき、文字数が3の倍数でない場合は、
最後の1桁または2桁については、夫々、4ビットまた
は7ビットを取得する。具体的な復元方法は、”2次元
コードシンボル-QRコード-技術仕様”(エーアイエム
ジャパン)で定義されている手法を用いる。そして、数
字モードのデータ復元処理を終了した後、S1146に
おいて次のモードインジケータを取得し、S1130へ
戻る。
【0152】次に、S1140において行われる英数字
モード処理について説明を行う。英数字モードでは、図
66の英数字デコードテーブルに示すように、各文字に
0〜44のキャラクタ値が割り当てられている。また、
英数字モードでは、11ビットが2桁の文字を表してお
り、最初の文字のキャラクタ値に45を乗じた値に、2
番目の文字のキャラクタ値を加えた値が11ビットのデ
ータで表現されている。例えば、文字”AC”の場
合、”A”のキャラクタ値は10、”C”のキャラクタ
値は12であるから、文字”AC”は、10×45+1
2=462を11ビットの2進数で表した「00111
001110」で表現されることになる。なお、文字数
が奇数の場合には、最後の文字は6ビットで表される。
具体的な復元方法は、”2次元コードシンボル-QRコ
ード-技術仕様”(エーアイエムジャパン)で定義されて
いる手法を用いる。そして、英数字モードのデータ復元
処理を終了した後、S1146において次のモードイン
ジケータを取得し、S1130へ戻る。
モード処理について説明を行う。英数字モードでは、図
66の英数字デコードテーブルに示すように、各文字に
0〜44のキャラクタ値が割り当てられている。また、
英数字モードでは、11ビットが2桁の文字を表してお
り、最初の文字のキャラクタ値に45を乗じた値に、2
番目の文字のキャラクタ値を加えた値が11ビットのデ
ータで表現されている。例えば、文字”AC”の場
合、”A”のキャラクタ値は10、”C”のキャラクタ
値は12であるから、文字”AC”は、10×45+1
2=462を11ビットの2進数で表した「00111
001110」で表現されることになる。なお、文字数
が奇数の場合には、最後の文字は6ビットで表される。
具体的な復元方法は、”2次元コードシンボル-QRコ
ード-技術仕様”(エーアイエムジャパン)で定義されて
いる手法を用いる。そして、英数字モードのデータ復元
処理を終了した後、S1146において次のモードイン
ジケータを取得し、S1130へ戻る。
【0153】次に、S1142において行われる8ビッ
トバイトモード処理について説明を行う。8ビットバイ
トモードでは、8ビットのビット列によりJIS8キャ
ラクタ値が直接表現されている。そこで、8ビットずつ
データを取得して、JIS8キャラクタに変換する。8
ビットバイトモードのデータ復元処理を終了した後、S
1146において次のモードインジケータを取得する。
トバイトモード処理について説明を行う。8ビットバイ
トモードでは、8ビットのビット列によりJIS8キャ
ラクタ値が直接表現されている。そこで、8ビットずつ
データを取得して、JIS8キャラクタに変換する。8
ビットバイトモードのデータ復元処理を終了した後、S
1146において次のモードインジケータを取得する。
【0154】次に、S1144において行われる漢字モ
ード処理について説明を行う。漢字モードはシフトJI
Sシステムによって定義されている。シフトJISシス
テムでは、漢字は2バイトの組み合わせによって表現さ
れる。また、文字数インジケータで定義されているよう
に、漢字モードは8,10,12ビットデータで1文字
の漢字を表している。具体的な復元方法は、”2次元コ
ードシンボル-QRコード-技術仕様”(エーアイエムジ
ャパン)で定義されている手法を用いる。そして、漢字
モードのデータ復元処理を終了した後、S1146にお
いて次のモードインジケータを取得し、S1130へ戻
る。
ード処理について説明を行う。漢字モードはシフトJI
Sシステムによって定義されている。シフトJISシス
テムでは、漢字は2バイトの組み合わせによって表現さ
れる。また、文字数インジケータで定義されているよう
に、漢字モードは8,10,12ビットデータで1文字
の漢字を表している。具体的な復元方法は、”2次元コ
ードシンボル-QRコード-技術仕様”(エーアイエムジ
ャパン)で定義されている手法を用いる。そして、漢字
モードのデータ復元処理を終了した後、S1146にお
いて次のモードインジケータを取得し、S1130へ戻
る。
【0155】また、上記S1148でモードがターミネ
ータであると判別された場合は、S1150において、
復元されたデータが出力された後、処理は終了する。
ータであると判別された場合は、S1150において、
復元されたデータが出力された後、処理は終了する。
【0156】一方、S1130においてすべてのビット
ストリームについてデータを復元している場合は、ター
ミネータが省略されているものと判断し、S1150に
おいて、復元されたデータが出力された後、処理は終了
する。
ストリームについてデータを復元している場合は、ター
ミネータが省略されているものと判断し、S1150に
おいて、復元されたデータが出力された後、処理は終了
する。
【0157】以上説明したように、本実施形態によれ
ば、QRコードのシンボルを構成する各モジュール50
に対応する要素を有するビットデータマトリクスBにつ
いて、コードワード領域52以外の機能パターン領域
(位置検出パターン54、タイミングパターン58、ア
ライメントパターン56、バージョン領域62)に対応
する要素には、「1」、「0」以外の値(すなわち
「2」または「3」)を格納する。このため、ビットデ
ータマトリクスBの各要素に格納されたビットデータか
らデータを復元する際に、各要素が機能パターン領域に
相当するかどうかをその都度確認することが不要とな
り、デコードの処理速度を向上させることができる。
ば、QRコードのシンボルを構成する各モジュール50
に対応する要素を有するビットデータマトリクスBにつ
いて、コードワード領域52以外の機能パターン領域
(位置検出パターン54、タイミングパターン58、ア
ライメントパターン56、バージョン領域62)に対応
する要素には、「1」、「0」以外の値(すなわち
「2」または「3」)を格納する。このため、ビットデ
ータマトリクスBの各要素に格納されたビットデータか
らデータを復元する際に、各要素が機能パターン領域に
相当するかどうかをその都度確認することが不要とな
り、デコードの処理速度を向上させることができる。
【0158】特に、アライメントパターン56はQRコ
ードのバージョンによって個数および位置が異なるた
め、各要素がアライメントパターン56に該当するかど
うかをその都度判別するのは複雑な処理となる。これに
対して、本実施形態では、ビットデータマトリクスBに
「0」または「1」のビット値を格納する前に、バージ
ョン情報領域62から取得したバージョン情報に基づい
てアライメントパターン56の位置を識別して、対応す
る要素に「3」を格納しておくので、処理効率は大幅に
向上することとなる。
ードのバージョンによって個数および位置が異なるた
め、各要素がアライメントパターン56に該当するかど
うかをその都度判別するのは複雑な処理となる。これに
対して、本実施形態では、ビットデータマトリクスBに
「0」または「1」のビット値を格納する前に、バージ
ョン情報領域62から取得したバージョン情報に基づい
てアライメントパターン56の位置を識別して、対応す
る要素に「3」を格納しておくので、処理効率は大幅に
向上することとなる。
【0159】また、位置検出パターン54、セパレータ
領域60、およびバージョン情報領域62については、
同じ方向にそれ以上探索してもコードワード領域52は
現れないことから、値として「2」を格納し、コードワ
ード変換処理では、ビットデータマトリクスBからのデ
ータ取得にあたって値が「2」の要素に到達すると、走
査の向きを反転させる。このため、位置検出パターン5
4のようなデータ復元のうえで不必要な領域を走査する
ことがなくなり、これにより、処理効率は更に向上す
る。
領域60、およびバージョン情報領域62については、
同じ方向にそれ以上探索してもコードワード領域52は
現れないことから、値として「2」を格納し、コードワ
ード変換処理では、ビットデータマトリクスBからのデ
ータ取得にあたって値が「2」の要素に到達すると、走
査の向きを反転させる。このため、位置検出パターン5
4のようなデータ復元のうえで不必要な領域を走査する
ことがなくなり、これにより、処理効率は更に向上す
る。
【0160】さらに、ビットデータマトリクス取得処理
では、モジュールの白/黒を判別する必要のない位置検
出パターン54に相当する左上、右上、および左下のコ
ーナー部の領域については、計算量が大きいモジュール
のプロット処理を行わないので、デコード処理の処理効
率は更に大幅に向上する。
では、モジュールの白/黒を判別する必要のない位置検
出パターン54に相当する左上、右上、および左下のコ
ーナー部の領域については、計算量が大きいモジュール
のプロット処理を行わないので、デコード処理の処理効
率は更に大幅に向上する。
【0161】なお、上記実施形態では、本発明がQRコ
ードのデコード処理に適用された場合について説明した
が、本発明はこれに限らず、マキシコード、ベリコー
ド、CPコード、カルラコード等、他の2次元コードの
デコード処理にも適用が可能である。すなわち、これら
の2次元コードでもシンボルの位置や姿勢等を検出する
ための特定のパターンが設けられるが、このようなパタ
ーンに対応してマトリクスに「0」「1」以外の値を設
定しておくことで、デコード処理を効率的に行なうこと
ができるのである。
ードのデコード処理に適用された場合について説明した
が、本発明はこれに限らず、マキシコード、ベリコー
ド、CPコード、カルラコード等、他の2次元コードの
デコード処理にも適用が可能である。すなわち、これら
の2次元コードでもシンボルの位置や姿勢等を検出する
ための特定のパターンが設けられるが、このようなパタ
ーンに対応してマトリクスに「0」「1」以外の値を設
定しておくことで、デコード処理を効率的に行なうこと
ができるのである。
【0162】
【発明の効果】本発明によれば、エンコードされたデー
タ以外の情報を表す機能パターン領域を含む2次元コー
ドからのデータのデコード処理を効率的に行うことがで
きる。
タ以外の情報を表す機能パターン領域を含む2次元コー
ドからのデータのデコード処理を効率的に行うことがで
きる。
【図1】QRコードのシンボルの一例を示す図である。
【図2】本発明の一実施形態である2次元コードスキャ
ナーのシステム構成図である。
ナーのシステム構成図である。
【図3】QRコードの位置検出パターンを拡大して示す
図である。
図である。
【図4】QRコードのアライメントパターンを拡大して
示す図である。
示す図である。
【図5】QRコードのタイミングパターンを拡大して示
す図である。
す図である。
【図6】本実施形態においてCPUが実行するデコード
処理の全体の流れを示すフローチャートである。
処理の全体の流れを示すフローチャートである。
【図7】デコード処理の各処理の概要を表す図(その
1)である。
1)である。
【図8】デコード処理の各処理の概要を表す図(その
2)である。
2)である。
【図9】デコード処理の各処理の概要を表す図(その
3)である。
3)である。
【図10】デコード処理の各処理の概要を表す図(その
4)である。
4)である。
【図11】画像キャプチャ/2値化処理のフローチャー
トである
トである
【図12】ファインダーパターンでの増減表取得処理を
説明するための図である。
説明するための図である。
【図13】図13(A)は増減表を説明するための図で
あり、図13(B)は増減表からえられる境界点、およ
び、境界点間の距離の比である境界点間距離比を説明す
るための図である。
あり、図13(B)は増減表からえられる境界点、およ
び、境界点間の距離の比である境界点間距離比を説明す
るための図である。
【図14】画像データおよびQRコードシンボルを基準
とする座標系を示す図である。
とする座標系を示す図である。
【図15】ファインダーパターン探索処理の流れを表す
フローチャート(その1)である。
フローチャート(その1)である。
【図16】ファインダーパターン探索処理の流れを表す
フローチャート(その2)である。
フローチャート(その2)である。
【図17】ファインダーパターン探索処理において、テ
ンプレートにマッチするパターンが検出される様子を示
す図である。
ンプレートにマッチするパターンが検出される様子を示
す図である。
【図18】ファインダーパターン探索処理において、テ
ンプレートにマッチするパターンについて、縦方向にも
マッチング処理を行う様子を示す図である。
ンプレートにマッチするパターンについて、縦方向にも
マッチング処理を行う様子を示す図である。
【図19】各位置検出パターンにおいて求められる基準
点を示す図である。
点を示す図である。
【図20】バージョン情報領域の詳細を示す図である。
【図21】バージョン情報取得処理のフローチャートで
ある。
ある。
【図22】バージョン情報取得処理において求められる
位置検出パターンの寸法を示す図である。
位置検出パターンの寸法を示す図である。
【図23】右上に位置するバージョン情報領域につい
て、各モジュールの「1」(黒)または「0」(白)を
判別する処理を説明するための図である。
て、各モジュールの「1」(黒)または「0」(白)を
判別する処理を説明するための図である。
【図24】バージョン情報領域に含まれるモジュールを
特定するための処理を説明する図である。
特定するための処理を説明する図である。
【図25】バージョン情報領域に含まれるモジュールの
白/黒から1・0のビットパターンに変換する様子を示
す図である。
白/黒から1・0のビットパターンに変換する様子を示
す図である。
【図26】タイミングパターン探索処理のフローチャー
トである。
トである。
【図27】タイミングパターン探索処理においてタイミ
ングパターンについてのデータが取得される様子を示す
図である。
ングパターンについてのデータが取得される様子を示す
図である。
【図28】タイミングパターン取得処理が完了した時点
で(X,Y)座標が決定された点を示す図である。
で(X,Y)座標が決定された点を示す図である。
【図29】アライメントパターン位置情報テーブルの一
例を示す図である。
例を示す図である。
【図30】アライメントパターン探索処理で区画される
領域Tj,iを示す図である。
領域Tj,iを示す図である。
【図31】アライメントパターン探索処理のフローチャ
ート(その1)である。
ート(その1)である。
【図32】アライメントパターン探索処理のフローチャ
ート(その2)である。
ート(その2)である。
【図33】領域Tj,Iの右下の仮の頂点P4cを求める手
順を説明するための図である。
順を説明するための図である。
【図34】仮の頂点P4cから真の頂点P4を求める手
順を説明するための図(その1)である。
順を説明するための図(その1)である。
【図35】仮の頂点P4cから真の頂点P4を求める手
順を説明するための図(その2)である。
順を説明するための図(その2)である。
【図36】仮の頂点P4cから真の頂点P4を求める手
順を説明するための図(その3)である。
順を説明するための図(その3)である。
【図37】シンボルのモジュールとビットデータマトリ
クスBの要素との対応関係を示す図である。
クスBの要素との対応関係を示す図である。
【図38】ビットデータマトリクス取得処理のフローチ
ャートである。
ャートである。
【図39】シンボル上に設定されたサンプリンググリッ
ドの例を示す図である。
ドの例を示す図である。
【図40】ビットデータマトリクス取得処理でのプロッ
ト処理で用いられる基準グリッド線を示す図である。
ト処理で用いられる基準グリッド線を示す図である。
【図41】4辺が基準グリッド線で囲まれた領域の右辺
および下辺のプロット処理を説明するための図である。
および下辺のプロット処理を説明するための図である。
【図42】3辺が基準グリッド線で囲まれた領域の右辺
のプロット処理を説明するための図である。
のプロット処理を説明するための図である。
【図43】4辺が基準グリッド線で囲まれた領域内のプ
ロット処理を説明するための図である。
ロット処理を説明するための図である。
【図44】3辺が基準グリッド線で囲まれた領域内のプ
ロット処理を説明するための図である。
ロット処理を説明するための図である。
【図45】2辺が基準グリッド線で囲まれた領域内のプ
ロット処理を説明するための図である。
ロット処理を説明するための図である。
【図46】フォーマット情報領域を詳細に示す図であ
る。
る。
【図47】フォーマット情報取得処理のフローチャート
である。
である。
【図48】フォーマット情報取得の処理例を示す図であ
る。
る。
【図49】マスキング処理で用いられる8種類のマスク
パターンを示す図である。
パターンを示す図である。
【図50】マスキング解除処理のフローチャートであ
る。
る。
【図51】マスキング解除処理におけるビットデータマ
トリクス上へのマスクパターンの配置を示す図である。
トリクス上へのマスクパターンの配置を示す図である。
【図52】バージョン7、エラー訂正レベルMのQRコ
ードについて、データコードワードおよびデータ訂正コ
ードワードの配置を示す図である。
ードについて、データコードワードおよびデータ訂正コ
ードワードの配置を示す図である。
【図53】コードワード取得処理におけるビットデータ
マトリクスBの走査方向を示す図である。
マトリクスBの走査方向を示す図である。
【図54】コードワードの配置規則を示す図である。
【図55】走査されるモジュールがアライメントパター
ンに到達した際の走査順序を示す図である。
ンに到達した際の走査順序を示す図である。
【図56】バージョン7、エラー訂正レベルMのQRコ
ードの場合のコードワードデータブロックを示す図であ
る。
ードの場合のコードワードデータブロックを示す図であ
る。
【図57】ビットデータマトリクスBから得られたコー
ドワードをコードワードデータブロックに割り当てる様
子を示す図である。
ドワードをコードワードデータブロックに割り当てる様
子を示す図である。
【図58】コードワード変換処理のフローチャート(そ
の1)である。
の1)である。
【図59】コードワード変換処理のフローチャート(そ
の2)である。
の2)である。
【図60】エラー訂正処理の手順を概念的に示す図であ
る。
る。
【図61】エラー訂正処理のフローチャートである。
【図62】データコードワードストリームの構成を示す
図である。
図である。
【図63】モードインジケータテーブルを示す図であ
る。
る。
【図64】文字数インジケータビットテーブルを示す図
である。
である。
【図65】データ復元処理のフローチャートである。
【図66】英数字デコードテーブルを示す図である。
B ビットデータマトリクス
10 2次元コードスキャナー
12 CPU
14 光センサ
16 AD変換器
18 VRAM
20 ROM
22 光源
24 結像光学系
26 キャプチャボタン
28 出力部
30 対象面
50 モジュール
52 コードワード領域
52 モジュール
54 位置検出パターン
56 アライメントパターン
58 タイミングパターン
60 セパレータ領域
62 バージョン情報領域
64 フォーマット情報領域
フロントページの続き
(72)発明者 大堀 治善
長野県諏訪市大和3丁目3番5号 セイコ
ーエプソン株式会社内
Fターム(参考) 5B072 CC21 CC32 DD01 DD23 FF39
GG07 LL04 LL11 LL18
Claims (14)
- 【請求項1】 夫々が第1または第2の色で表示される
複数のセルで構成され、前記セルが特定のパターンで配
置された機能パターンを含む機能パターン領域と、前記
セルが、表現されるべきデータに応じたパターンで配置
されたコードワード領域とを有する2次元コードから前
記データをデコードする方法であって、 前記2次元コードを構成する各セルに対応した要素を有
する配列の、前記機能パターン領域に含まれるセルに対
応する要素へ、前記機能パターン領域であることを表す
所定の値を格納する機能値格納ステップと、 前記2次元コードを表す画像データに基づいて、前記コ
ードワード領域に含まれる各セルの色が前記第1または
第2の色の何れであるかを判別し、該判別された色に応
じた値を前記配列の対応する要素へ格納するデータ値格
納ステップと、 前記配列に格納された値に基づいて前記データを復元す
る復元ステップとを備えることを特徴とする方法。 - 【請求項2】 請求項1記載の2次元コードのデコード
方法において、 前記復元ステップは、前記配列の要素を所定の規則に従
った順序で走査しながら各要素に格納された値を取得す
る第1ステップと、該第1ステップで取得した値に基づ
いて前記データを復元する第2ステップとを含むことを
特徴とする方法。 - 【請求項3】 請求項2記載の2次元コードのデコード
方法において、 前記復元ステップの前記第1ステップでは、前記マトリ
クスの要素の値が前記所定の値である場合に、その要素
の値を無視することを特徴とする方法。 - 【請求項4】 請求項2または3記載の2次元コードの
デコード方法において、 前記所定の規則は、前記2次元コードの所定のコーナー
部に対応する前記配列の要素から開始して、全ての要素
を走査するまで、次の(a),(b)を繰り返すもので
あることを特徴とする方法。 (a)互いに隣接する所定数の列または行を走査単位と
して、各列または各行の要素の値を順次取得しながら列
方向または行方向に走査する。 (b)列または行の終わりに達したら次の前記所定数の
列または行に移ると共に走査の向きを反転し、(a)に
戻る。 - 【請求項5】 請求項4記載の2次元コードのデコード
方法において、 前記機能パターン領域は、前記所定の規則に従った順序
で前記配列の要素を走査するにあたり、対応する要素の
値を無視すべき第1の領域と、前記所定の規則の前記
(b)において列または行の終りに達したとみなすべき
第2の領域とに区別され、 前記機能値格納ステップでは、前記第1の領域に含まれ
るセルに対応する要素については前記所定の値として第
1の値を格納し、前記第2の領域に含まれるセルに対応
する要素については前記所定の値として第2の値を格納
し、 前記復元ステップの前記第1ステップでは、前記配列の
要素の値が前記第1の値であれば、その要素の値を無視
して引き続き前記所定の規則に従った順序で走査を行
い、前記配列の要素の値が前記第2の値であれば、その
要素の値を無視して前記所定の規則の(b)で列または
行の終わりに達したとみなすことを特徴とする方法。 - 【請求項6】 請求項1乃至5のうち何れか1項記載の
2次元コードのデコード方法において、 前記2次元コードは、前記機能パターン領域に含まれる
一部の機能パターンの2次元コード内での位置を特定す
るための情報を含む位置情報領域を有し、 前記機能値格納ステップでは、前記一部の機能パターン
について、前記2次元コードを表す画像データから前記
位置情報領域に含まれる前記情報を取得し、該取得した
情報に基づいて前記一部の機能パターンに含まれるセル
を特定し、該特定したセルに対応する前記配列の要素に
前記所定の値を格納することを特徴とする方法。 - 【請求項7】 夫々が第1または第2の色で表示される
複数のセルで構成され、前記セルが特定のパターンで配
置された機能パターンを含む機能パターン領域と、前記
セルが、表現されるべきデータに応じたパターンで配置
されたコードワード領域とを有する2次元コードから前
記データをデコードする装置であって、 前記2次元コードを構成する各セルに対応した要素を有
する配列の、前記機能パターン領域に含まれるセルに対
応する要素へ、前記機能パターン領域であることを表す
所定の値を格納する機能値格納手段と、 前記2次元コードを表す画像データに基づいて、前記コ
ードワード領域に含まれる各セルの色が前記第1または
第2の色の何れであるかを判別し、該判別された色に応
じた値を前記配列の対応する要素へ格納するデータ値格
納手段と、 前記配列に格納された値に基づいて前記データを復元す
る復元手段とを備えることを特徴とする装置。 - 【請求項8】 請求項7記載の2次元コードのデコード
装置において、 前記復元手段は、前記配列の要素を所定の規則に従った
順序で走査しながら各要素に格納された値を取得する第
1手段と、該第1手段で取得した値に基づいて前記デー
タを復元する第2手段とを含むことを特徴とする装置。 - 【請求項9】 請求項8記載の2次元コードのデコード
装置において、 前記復元手段の前記第1手段は、前記マトリクスの要素
の値が前記所定の値である場合に、その要素の値を無視
することを特徴とする装置。 - 【請求項10】 請求項8または9記載の2次元コード
のデコード装置において、 前記所定の規則は、前記2次元コードの所定のコーナー
部に対応する前記配列の要素から開始して、全ての要素
を走査するまで、次の(a),(b)を繰り返すもので
あることを特徴とする装置。 (a)互いに隣接する所定数の列または行を走査単位と
して、各列または各行の要素の値を順次取得しながら列
方向または行方向に走査する。 (b)列または行の終わりに達したら次の前記所定数の
列または行に移ると共に走査の向きを反転し、(a)に
戻る。 - 【請求項11】 請求項10記載の2次元コードのデコ
ード装置において、 前記機能パターン領域は、前記所定の規則に従った順序
で前記配列の要素を走査するにあたり、対応する要素の
値を無視すべき第1の領域と、前記所定の規則の前記
(b)において列または行の終りに達したとみなすべき
第2の領域とに区別され、 前記機能値格納手段は、前記第1の領域に含まれるセル
に対応する要素については前記所定の値として第1の値
を格納し、前記第2の領域に含まれるセルに対応する要
素については前記所定の値として第2の値を格納し、 前記復元手段の前記第1手段は、前記配列の要素の値が
前記第1の値であれば、その要素の値を無視して引き続
き前記所定の規則に従った順序で走査を行い、前記配列
の要素の値が前記第2の値であれば、その要素の値を無
視して前記所定の規則の(b)で列または行の終わりに
達したとみなすことを特徴とする装置。 - 【請求項12】 請求項7乃至11のうち何れか1項記
載の2次元コードのデコード装置において、 前記2次元コードは、前記機能パターン領域に含まれる
一部の機能パターンの2次元コード内での位置を特定す
るための情報を含む位置情報領域を有し、 前記機能値格納手段は、前記一部の機能パターンについ
て、前記2次元コードを表す画像データから前記位置情
報領域に含まれる前記情報を取得し、該取得した情報に
基づいて前記一部の機能パターンに含まれるセルを特定
し、該特定したセルに対応する前記配列の要素に前記所
定の値を格納することを特徴とする装置。 - 【請求項13】 請求項1乃至6のうち何れか1項記載
の2次元コードのデコード方法をコンピュータに実行さ
せるためのプログラム。 - 【請求項14】 請求項13記載のプログラムを記録し
た記録媒体。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002046989A JP2003248792A (ja) | 2002-02-22 | 2002-02-22 | 2次元コードのデコード方法、2次元コードのデコード装置、コンピュータに2次元コードのデコード方法を実行させるためのプログラム、このプログラムを記録した記録媒体 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002046989A JP2003248792A (ja) | 2002-02-22 | 2002-02-22 | 2次元コードのデコード方法、2次元コードのデコード装置、コンピュータに2次元コードのデコード方法を実行させるためのプログラム、このプログラムを記録した記録媒体 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2003248792A true JP2003248792A (ja) | 2003-09-05 |
Family
ID=28660204
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002046989A Withdrawn JP2003248792A (ja) | 2002-02-22 | 2002-02-22 | 2次元コードのデコード方法、2次元コードのデコード装置、コンピュータに2次元コードのデコード方法を実行させるためのプログラム、このプログラムを記録した記録媒体 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2003248792A (ja) |
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007334478A (ja) * | 2006-06-13 | 2007-12-27 | Hitachi Computer Peripherals Co Ltd | 画像処理装置及び画像処理方法 |
CN100380393C (zh) * | 2006-09-26 | 2008-04-09 | 福建榕基软件开发有限公司 | 复杂背景下qr码图像符号区域的精确定位方法 |
CN100383809C (zh) * | 2006-09-26 | 2008-04-23 | 福建榕基软件开发有限公司 | Qr码图像的采样及识别方法 |
CN100383810C (zh) * | 2006-09-26 | 2008-04-23 | 福建榕基软件开发有限公司 | 畸变qr码图像的扭正方法 |
CN100456314C (zh) * | 2007-05-31 | 2009-01-28 | 中国农业大学 | 基于聊天用摄像头的快速响应矩阵码识读方法 |
CN100464345C (zh) * | 2006-11-07 | 2009-02-25 | 中国物品编码中心 | 二维条码符号转换为编码信息的方法 |
JP2010170539A (ja) * | 2008-12-22 | 2010-08-05 | Canon Inc | コード検出及び復号化システム |
CN101882207A (zh) * | 2010-06-01 | 2010-11-10 | 福建新大陆电脑股份有限公司 | Data Matrix码条码解码芯片及其解码方法 |
CN101882211A (zh) * | 2010-06-01 | 2010-11-10 | 福建新大陆电脑股份有限公司 | 汉信码条码解码芯片及其解码方法 |
JP4724800B1 (ja) * | 2010-07-30 | 2011-07-13 | 株式会社シフト | 物品検出装置およびプログラム |
WO2012014264A1 (ja) * | 2010-07-30 | 2012-02-02 | 株式会社シフト | 二次元コードリーダおよびプログラム |
JP2012256313A (ja) * | 2011-05-17 | 2012-12-27 | Toshiba Tec Corp | コード読取装置及びプログラム |
CN103593653A (zh) * | 2013-11-01 | 2014-02-19 | 浙江工业大学 | 基于扫描枪的字符二维条码识别方法 |
CN104517090A (zh) * | 2013-09-29 | 2015-04-15 | 北大方正集团有限公司 | 一种qr码探测图形的检测方法及系统 |
WO2017016445A1 (zh) * | 2015-07-27 | 2017-02-02 | 福建联迪商用设备有限公司 | 二维码分块解码方法及系统 |
JP2017091484A (ja) * | 2015-11-17 | 2017-05-25 | 富士通株式会社 | シンボル検出装置、画像処理装置、及び、シンボル検出方法 |
CN106991462A (zh) * | 2017-03-13 | 2017-07-28 | 三维码(厦门)网络科技有限公司 | 三维码生成方法 |
-
2002
- 2002-02-22 JP JP2002046989A patent/JP2003248792A/ja not_active Withdrawn
Cited By (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007334478A (ja) * | 2006-06-13 | 2007-12-27 | Hitachi Computer Peripherals Co Ltd | 画像処理装置及び画像処理方法 |
CN100380393C (zh) * | 2006-09-26 | 2008-04-09 | 福建榕基软件开发有限公司 | 复杂背景下qr码图像符号区域的精确定位方法 |
CN100383809C (zh) * | 2006-09-26 | 2008-04-23 | 福建榕基软件开发有限公司 | Qr码图像的采样及识别方法 |
CN100383810C (zh) * | 2006-09-26 | 2008-04-23 | 福建榕基软件开发有限公司 | 畸变qr码图像的扭正方法 |
CN100464345C (zh) * | 2006-11-07 | 2009-02-25 | 中国物品编码中心 | 二维条码符号转换为编码信息的方法 |
CN100456314C (zh) * | 2007-05-31 | 2009-01-28 | 中国农业大学 | 基于聊天用摄像头的快速响应矩阵码识读方法 |
JP2010170539A (ja) * | 2008-12-22 | 2010-08-05 | Canon Inc | コード検出及び復号化システム |
CN101882207A (zh) * | 2010-06-01 | 2010-11-10 | 福建新大陆电脑股份有限公司 | Data Matrix码条码解码芯片及其解码方法 |
CN101882211A (zh) * | 2010-06-01 | 2010-11-10 | 福建新大陆电脑股份有限公司 | 汉信码条码解码芯片及其解码方法 |
CN101882211B (zh) * | 2010-06-01 | 2012-05-23 | 福建新大陆电脑股份有限公司 | 汉信码条码解码芯片及其解码方法 |
WO2012014264A1 (ja) * | 2010-07-30 | 2012-02-02 | 株式会社シフト | 二次元コードリーダおよびプログラム |
WO2012014263A1 (ja) * | 2010-07-30 | 2012-02-02 | 株式会社シフト | 物品検出装置およびプログラム |
JP2012033033A (ja) * | 2010-07-30 | 2012-02-16 | Shift:Kk | 物品検出装置およびプログラム |
JP4724800B1 (ja) * | 2010-07-30 | 2011-07-13 | 株式会社シフト | 物品検出装置およびプログラム |
US8534560B2 (en) | 2010-07-30 | 2013-09-17 | Shift Co. Ltd. | Two-dimensional code reader and program |
JP2012256313A (ja) * | 2011-05-17 | 2012-12-27 | Toshiba Tec Corp | コード読取装置及びプログラム |
US8584949B2 (en) | 2011-05-17 | 2013-11-19 | Toshiba Tec Kabushiki Kaisha | Code reading apparatus and method |
CN104517090A (zh) * | 2013-09-29 | 2015-04-15 | 北大方正集团有限公司 | 一种qr码探测图形的检测方法及系统 |
CN103593653A (zh) * | 2013-11-01 | 2014-02-19 | 浙江工业大学 | 基于扫描枪的字符二维条码识别方法 |
WO2017016445A1 (zh) * | 2015-07-27 | 2017-02-02 | 福建联迪商用设备有限公司 | 二维码分块解码方法及系统 |
JP2017091484A (ja) * | 2015-11-17 | 2017-05-25 | 富士通株式会社 | シンボル検出装置、画像処理装置、及び、シンボル検出方法 |
CN106991462A (zh) * | 2017-03-13 | 2017-07-28 | 三维码(厦门)网络科技有限公司 | 三维码生成方法 |
CN106991462B (zh) * | 2017-03-13 | 2018-04-17 | 三维码(厦门)网络科技有限公司 | 三维码生成方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2003248792A (ja) | 2次元コードのデコード方法、2次元コードのデコード装置、コンピュータに2次元コードのデコード方法を実行させるためのプログラム、このプログラムを記録した記録媒体 | |
KR930012137B1 (ko) | 기계광학 판독 가능한 동적 가변 2진 코드 판독장치, 2진 코드의 크기 및 밀도 결정장치 및 2진 코드 생성장치 | |
US8006911B2 (en) | System and method for encoding and decoding large capacity 2-dimensional color bar code which can be color-corrected | |
JP3706385B2 (ja) | ドットパターンを用いた情報入出力方法 | |
US5686718A (en) | Recording method, decoding method, and decoding apparatus for digital information | |
KR100960786B1 (ko) | 2d 부호의 인코딩 디코딩 방법 및 시스템 | |
KR100570242B1 (ko) | 2차원 코드 판독 방법, 2차원 코드 판독 프로그램을기록한 기록 매체, 2차원 코드 판독 장치, 디지털 카메라및 디지털 카메라를 구비한 휴대용 단말기 | |
WO2014077186A1 (ja) | 二次元コード、二次元コードの作成システムおよび解析プログラム | |
JP2005316755A (ja) | 2次元矩形コードシンボル読み取り装置及び2次元矩形コードシンボル読み取り方法 | |
US20080199081A1 (en) | Image processing apparatus, image processing method and computer-readable medium | |
KR101770540B1 (ko) | 이차원 코드, 이차원 코드의 해석 시스템 및 이차원 코드의 작성 시스템 | |
WO2006117869A1 (ja) | ドットパターンを用いた情報入出力方法 | |
US8699798B2 (en) | Information input output method using a dot pattern | |
JP2007317184A (ja) | 二次元バーコード、その符号化方法及び復号化方法 | |
TWI501159B (zh) | QR code | |
JPH0612515A (ja) | Ccd/cmdカメラを使用して二次元バーコードを復号する方法及び装置 | |
US7991191B2 (en) | Clustering-scheme-encoded interfaces providing orientation feedback | |
CN1458619A (zh) | 双向可读二维条形码系统及其识读方法 | |
JP5392711B2 (ja) | 2次元カラーバーコード | |
KR100860110B1 (ko) | 도트 패턴을 이용한 정보 입출력 방법 | |
JP3853331B2 (ja) | デジタル情報記録方法 | |
JP4383961B2 (ja) | デジタル情報記録担体 | |
JP3586911B2 (ja) | 枠線認識装置 | |
JP4102742B2 (ja) | 光学的情報読取装置及び画像データ解析方法 | |
JP2000235632A (ja) | デジタル情報記録担体、デジタル情報記録方法および装置、並びにデジタル情報解読方法および装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Withdrawal of application because of no request for examination |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20050510 |