(57)【要約】【課題】本発明は、ファインダパターンの大きさ及び配置の自由度を向上させられて、二次元コードの使用環境に応じたファインダパターンを備えることができる二次元コードの提供を目的とする。【解決手段】本発明の二次元コード１００は、対象データに対応するビット列をパターンとして表したデータ部１５０と、データ部１５０から分離して配置されるファインダパターン１１０と、を備えることを特徴とする。【選択図】図２
2017097624.tif 000002
【特許請求の範囲】
【請求項１】
対象データに対応するビット列をパターンとして表したデータ部と、
前記データ部から分離して配置されるファインダパターンと、を備えることを特徴とする二次元コード。
【請求項２】
前記ファインダパターンは、円環部、及び、基準方向を特定できる方向特定部を備えることを特徴とする請求項１に記載の二次元コード。
【請求項３】
前記方向特定部は、前記円環部に沿って、前記円環部の円周方向に伸びる突起部を備えることを特徴とする請求項２に記載の二次元コード。
【請求項４】
前記方向特定部は、前記円環部の円周方向の長さが異なる複数の前記突起部を備えることを特徴とする請求項３に記載の二次元コード。
【請求項５】
前記円環部は、同心円に配置された複数の円環を備えることを特徴とする請求項２乃至４のいずれか１項に記載の二次元コード。
【請求項６】
一の前記データ部に対して前記ファインダパターンが複数配置され、前記複数のファインダパターンがそれぞれ特定できることを特徴とする請求項１乃至５のいずれか１項に記載の二次元コード。
【請求項７】
請求項１乃至６のいずれか１項に記載の二次元コードを読取る画像読取り装置であって、
前記二次元コードを含む画像データから前記ファインダパターンを検出する検出手段と、
前記検出手段が検出した前記画像データの前記ファインダパターンと、設計上の二次元コードとから、前記画像データの前記データ部の位置を算出する算出手段と、
前記算出手段が算出した前記画像データの前記データ部の位置に基づいて、前記画像データの前記データ部を読取る読取り手段と、を備えることを特徴とする画像読取り装置。
【請求項８】
前記ファインダパターンは、円環部、及び、基準方向を特定できる方向特定部を備え、
前記算出手段は、前記画像データの前記円環部を設計上の前記円環部に対応できる楕円の方程式の定数である楕円定数を算出して、前記楕円定数に基づいて前記画像データの前記データ部の位置を算出することを特徴とする請求項７に記載の画像読取り装置。
【請求項９】
前記算出手段は、設計上の前記二次元コードにおける前記方向特定部を含んだ第１走査線の輝度分布と、前記画像データにおける前記第１走査線に対応する第２走査線を走査して得られる前記輝度分布とから、前記画像データの前記基準方向と設計上の前記基準方向との関係を得て、前記画像データの前記基準方向と設計上の前記基準方向との関係に基づいて、前記画像データの前記データ部の位置を算出することを特徴とする請求項８に記載の画像読取り装置。
【請求項１０】
前記第１走査線は前記円環部の同心円であり、前記第２走査線は楕円であり、
前記算出手段は、前記楕円定数に基づいて、前記第１走査線に対応する前記第２走査線を導くことを特徴とする請求項９に記載の画像読取り装置。
【請求項１１】
前記算出手段は、前記楕円定数、前記画像データの前記基準方向と設計上の前記基準方向との関係、及び、設計上の前記ファインダパターンを基準とした前記データ部の位置、に基づいて、前記画像データの前記データ部の位置を算出することを特徴とする請求項９又は１０に記載の画像読取り装置。
【請求項１２】
第１画角の第１画像データ、及び、前記第１画角より狭い第２画角の第２画像データを取得する画像データ取得手段をさらに備え、
前記検出手段が前記第１画像データに前記ファインダパターンを検出したとき、前記画像データ取得手段は前記ファインダパターンを含む前記第２画像データを取得し、前記検出手段、前記算出手段及び前記読取り手段は、前記画像データとして前記第２画像データを使うことを特徴とする請求項７乃至１１のいずれか１項に記載の画像読取り装置。
【請求項１３】
前記二次元コードは、一の前記データ部に対して前記ファインダパターンが複数配置され、前記複数のファインダパターンがそれぞれ特定でき、
前記算出手段は、前記検出手段が検出した前記ファインダパターンが、前記二次元コードが備える複数の前記ファインダパターンのいずれであるかを特定し、特定した設計上の前記ファインダパターンに基づいて、前記画像データの前記データ部の位置を算出することを特徴とする請求項７乃至１２のいずれか１項に記載の画像読取り装置。
【請求項１４】
請求項１乃至６のいずれか１項に記載の二次元コードを読取る画像読取り方法であって、
前記二次元コードを含む画像データから前記ファインダパターンを検出する検出ステップと、
前記検出ステップで検出した前記画像データの前記ファインダパターンと、設計上の二次元コードとから、前記画像データの前記データ部の位置を算出する算出ステップと、
前記算出ステップで算出した前記画像データの前記データ部の位置に基づいて、前記画像データの前記データ部を読取る読取りステップと、を備えることを特徴とする画像読取り方法。
【請求項１５】
請求項１乃至６のいずれか１項に記載の二次元コードを読取る画像読取り装置を制御するプログラムであって、
前記二次元コードを含む画像データから前記ファインダパターンを検出する検出ステップと、
前記検出ステップで検出した前記画像データの前記ファインダパターンと、設計上の二次元コードとから、前記画像データの前記データ部の位置を算出する算出ステップと、
前記算出ステップで算出した前記画像データの前記データ部の位置に基づいて、前記画像データの前記データ部を読取る読取りステップと、をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、二次元コード、画像読取り装置、画像読取り方法及びプログラムに関する。
【背景技術】
【０００２】
従来から、データ部と、データ部の内部に配置されるファインダパターンとを備える二次元コードが広く使われている。このような二次元コードの読取り方法として、特許文献１には次のような技術が開示されている。特許文献１の二次元コードの読取り方法では、まず、二次元コードのシンボルと二次元コードのシンボルの読み取り画像との間の相関関係を示す関係式を算出する。次に、算出した関係式に基づいて、二次元コードのシンボルの読み取り画像を補正する。
【０００３】
なお、特許文献２には、三次元形状を高精度かつ高能率で計測する自動計測解析方法が開示されている。特許文献２の自動計測解析方法では、三次元計測システムを用いて、ターゲットの三次元座標を計測する。三次元計測システムは、計測器本体と画像処理装置と三次元計測システムと用いてをターゲットの三次元座標を計測する。計測器本体は、計測対象物上の多数のターゲットを視準するモーター駆動可能なＣＣＤカメラを備え、三次元座標計測ができる。画像処理装置は、ＣＣＤカメラで把えたターゲット画像を解析する。三次元計測システムは、計測条件の設定、座標変換、解析を行う。そして、三次元計測システムに入力した計測対象物の設計寸法値又は座標値を座標変換してＣＣＤカメラを駆動してターゲットを自動追尾して自動的に三次元座標を計測する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００２−２４７５２号公報
【特許文献２】特許第３２１０８１７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１の二次元コードは、ファインダパターンとデータ部とが一体化している。したがって、汚れが付きやすい環境等で二次元コードを使う場合、汚れ等でファインダパターンの識別が困難になり、データ部からデータを読取ることができなくなるおそれがある。
なお、特許文献２の自動計測解析方法は、ターゲットの三次元座標を計測するものであり、汚れが付きやすい環境等で二次元コードを使うことを想定したものではない。
【０００６】
本発明は以上のような状況に鑑みてなされたものであり、二次元コードの使用環境に応じて、ファインダパターンの大きさ及び配置の自由度を向上させられるようにすることを目的とする。
【課題を解決するための手段】
【０００７】
本発明の二次元コードは、対象データに対応するビット列をパターンとして表したデータ部と、前記データ部から分離して配置されるファインダパターンと、を備えることを特徴とする。
本発明の画像読取り装置は、前記二次元コードを読取る画像読取り装置であって、前記二次元コードを含む画像データから前記ファインダパターンを検出する検出手段と、前記検出手段が検出した前記画像データの前記ファインダパターンと、設計上の二次元コードとから、前記画像データの前記データ部の位置を算出する算出手段と、前記算出手段が算出した前記画像データの前記データ部の位置に基づいて、前記画像データの前記データ部を読取る読取り手段と、を備えることを特徴とする。
【発明の効果】
【０００８】
本発明によれば、二次元コードの使用環境に応じて、ファインダパターンの大きさ及び配置の自由度を向上させることができる。これにより、二次元コードの読取り精度を向上させることができる。
【図面の簡単な説明】
【０００９】
【図１】第１実施形態の二次元コードシステムの構成図である。
【図２】第１実施形態の二次元コードの形状を示す図である。
【図３】印刷装置の処理を示すフローチャートである。
【図４】対象データをコード化ビット列に変換する処理の概念図である。
【図５】画像読取り装置の処理を示すフローチャートである。
【図６】ファインダパターン検出処理を説明する概念図であり、（ａ）は画像データの図、（ｂ）はファインダパターンの縞候補を検出する走査を説明する図、（ｃ）はファインダパターンの縞候補を検出する走査を説明する他の図である。
【図７】楕円形状算出処理を説明する概念図であり、（ａ）は画像データの楕円形状を構成する点を走査する処理の図、（ｂ）は走査で得られた点を示す図である。
【図８】ＸＹ座標系での画像データの二次元コードの図である。
【図９】設計上の二次元コードの方向特定部を説明する図であり、（ａ）は設計輝度分布を示す図、（ｂ）は設計輝度分布と設計上の二次元コードとの関係を説明する図である。
【図１０】画像データの二次元コードの方向特定部を説明する図であり、（ａ）は取得輝度分布を示す図、（ｂ）は取得輝度分布と画像データの二次元コードとの関係を説明する図である。
【図１１】設計輝度分布と取得輝度分布との関係を示す図である。
【図１２】設計上の二次元コードのファインダパターンとデータ部との関係を示す図である。
【図１３】データ部の位置の算出処理を説明する概念図である。
【図１４】データ部のコード化ビット列を元のデータに戻す処理の概念図である。
【図１５】第２実施形態の二次元コードの形状を示す図である。
【図１６】第２実施形態の他の二次元コードの形状を示す図である。
【図１７】第３実施形態の二次元コードシステムの構成図である。
【発明を実施するための形態】
【００１０】
以下、添付図面を参照して、本発明の好適な実施形態について説明する。
＜第１実施形態＞
はじめに、図１を参照して、本実施形態の二次元コードシステム１について説明する。
二次元コードシステム１は、印刷装置１０と、画像読み取り装置２０とを備える。
印刷装置１０は、二次元コード化の対象とする対象データから二次元コード１００を生成し、耐熱ラベルや印刷用紙に二次元コード１００を印刷して、二次元コードが印刷された印刷物を作成する。
画像読み取り装置２０は、二次元コード１００が印刷された印刷物から二次元コード１００を読取り、二次元コード１００に表された対象データを取得する。
【００１１】
図２に示すように、二次元コード１００は、データ部１５０と、データ部から分離して配置されるファインダパターン１１０とを備える。なお、図２では符号の見やすさ等のために一部の領域をドットで示すが、実際にはこの領域は例えば黒で塗りつぶされて印刷される。以降の図も同様である。
ファインダパターン１１０は、データ部１５０を検出するための検出用パターンであり、円環部１１１と、方向特定部１２０とを備える。
円環部１１１は、複数の円環１１２を備える。本実施形態では、第１円環１１２ａ、第２円環１１２ｂ及び第３円環１１２ｃの３つの円環を備え、それぞれの円環１１２は同心円となる。それぞれの円環１１２は、同じ太さであり、同間隔に離間する。なお、円環１１２の数は３つ限定されるものではなく、１つや２つなど、３つ以外の数としてもよい。
方向特定部１２０は、ファインダパターン１１０の基準方向Ｗ１０を特定できるパターンであり、円環部１１１（円環１１２ｃの最外部）に沿って、円環部１１１の円周方向に伸びる複数の突起部１２１を備える。本実施形態では、第１突起部１２１ａ、第２突起部１２１ｂ、第３突起部１２１ｃ及び第４突起部１２１ｄの４つの突起部１２１を備える。それぞれの突起部１２１は、円環部１１１の円周方向の長さが異なる。なお、突起部１２１の数は４つ限定されるものではなく、１つや２つなど、４つ以外の数としてもよい。
【００１２】
データ部１５０は、基準方向Ｗ１０に対して予め定められた所定の方向であって、ファインダパターン１１０から所定の距離に配置される。
データ部１５０は、データ領域部１５１と、枠部１５２とを備え、矩形状である。
データ領域部１５１は、二次元コード１００の対象データに対応するビット列をパターンとして表す。データ領域部１５１は、複数のセル領域を備え、それぞれのセル領域が１ビットのデータを表す。例えば、セル領域が塗りつぶされているとき１であり、塗りつぶされていないとき０とする。データ領域部１５１には、マトリクス状に、同形状のセル領域が並ぶ。
枠部１５２は、データ領域部１５１の外周を囲む矩形状の枠である。
データ部１５０におけるファインダパターン１１０と対向する辺の長さは、ファインダパターン１１０の円環部１１１の直径の略２倍である。
なお、図２では、ファインダパターン１１０は、データ部１５０の長辺と対向する位置に配置されるが、データ部１５０の短辺と対向する位置に配置されてもよく、その他の位置に配置されてもよい。
【００１３】
図１の画像読み取り装置２０は、このような二次元コード１００が印刷された印刷物から二次元コード１００に表された対象データを読取る装置であり、画像データ取得部２１と、検出部２２と、算出部２３と、読取り部２４とを備える。
画像データ取得部２１は、二次元コード１００が印刷された印刷物を撮影して画像データを取得する。画像データ取得部２１は、レンズ等の光学系と、ＣＣＤやＣＭＯＳ等の撮像素子とを備える。印刷物からの光が光学系を通り撮像素子に到達する。撮像素子は、撮像素子に到達した光を電気信号に変換する。画像データ取得部２１は、この電気信号を元に、画像データを生成して取得する。なお、画像データ取得部２１は、外部の装置からネットワーク経由で画像データを受信したり、画像読み取り装置２０に接続された記録媒体から画像データを読取ったりして、画像データを取得してもよい。
検出部２２は、画像データ取得部２１が取得した画像データから、二次元コード１００のファインダパターン１１０を検出する。
算出部２３は、検出部２２が検出した画像データのファインダパターン１１０と、予め記憶してある設計上の二次元コード１００とから、画像データのデータ部１５０の位置を算出する。
読取り部２４は、算出部２３が算出した画像データのデータ部１５０の位置に基づいて、データ部１５０に表されるデータを読取る。
【００１４】
印刷装置１０及び画像読み取り装置２０は、それぞれ、ＣＰＵ（Central Processing Unit）、メモリ、及びハードディスク等の主記憶装置を備える。そして、主記憶装置に記憶されたプログラムがメモリに展開され、ＣＰＵがメモリに展開されたプログラムを実行することで、それぞれの装置が備える機能が実現される。
【００１５】
次に、図３を参照して、印刷装置１０の処理について説明する。図３は、印刷装置１０の処理を示すフローチャートである。
ステップＳ１００において、印刷装置１０は、外部の装置からデータを受信したり、ユーザが入力したデータを取得したりして、二次元コード１００にする対象データを特定する。
ステップＳ１０１において、印刷装置１０は、対象データから、データ部１５０に表すビット列であるコード化ビット列を生成する。この処理について、図４を参照して説明する。
印刷装置１０は、ステップＳ１００において、既に二次元コード１００にする対象データＤ１００を特定している。
【００１６】
まず、印刷装置１０は、対象データＤ１００を、予め定められた規則でビット列Ｄ１１０にする。
次に、印刷装置１０は、ビット列Ｄ１１０から、固定ビット長符号化により、符号化データＤ１２０を生成する。
次に、印刷装置１０は、符号化データＤ１２０から誤り検出符号Ｄ１３１を生成し、符号化データＤ１２０に誤り検出符号Ｄ１３１を付加して、誤り検出可能な符号化データＤ１３０を生成する。誤り検出の方法には、例えばＣＲＣ（巡回冗長検査）が使われる。
次に、印刷装置１０は、誤り検出可能な符号化データＤ１３０から、誤り訂正符号Ｄ１４１を生成し、誤り検出可能な符号化データＤ１３０に誤り訂正符号Ｄ１４１を付加して、誤り訂正可能な符号化データＤ１４０を生成する。誤り訂正符号Ｄ１４１には、例えば、リード・ソロモン符号が使われる。
次に、印刷装置１０は、誤り訂正可能な符号化データＤ１４０をビット列にして、コード化ビット列Ｄ１５０を得る。
印刷装置１０は、このようにしてコード化ビット列Ｄ１５０を得る。
【００１７】
図３のステップＳ１０２において、印刷装置１０は、二次元コード１００の画像データを生成する。このとき、まず、印刷装置１０は、コード化ビット列Ｄ１５０を使って、データ領域部１５１を生成する。次に、印刷装置１０は、生成したデータ領域部１５１と、予め定められている二次元コード１００のファインダパターン１１０及び枠部１５２とを結合して、二次元コード１００の画像データを生成する。
ステップＳ１０３において、印刷装置１０は、耐熱ラベルや印刷用紙に二次元コード１００を印刷する。
【００１８】
次に、図５を参照して、画像読取り装置２０の処理について説明する。図５は、画像読み取り装置２０の処理を示すフローチャートである。
ステップＳ２００において、画像読取り装置２０の画像データ取得部２１は、二次元コード１００が印刷された印刷物を撮影して画像データを取得する。
ステップＳ２０１において、画像読取り装置２０の検出部２２は、画像データ取得部２１が取得した画像データから、二次元コード１００のファインダパターン１１０を検出する。なお、以降では、画像データ取得部２１が取得した画像データを、単に画像データともいう。
【００１９】
次に、図６を参照して、検出部２２がファインダパターン１１０を検出する処理について説明する。
図６（ａ）に、画像データの例を示す。二次元コード１００が印刷された印刷物を撮影するとき、常に正面から撮影できるとは限らず、斜め方向から印刷物を撮影することがある。図６（ａ）の例は、このように、斜め方向から印刷物を撮影したときの画像データの例である。
検出部２２は、画像データを左側の端部から右方向に走査し、画素毎の輝度値を取得する。そして、検出部２２は、輝度値が所定値よりも大きく上昇する場所を黒白変化点として検出する。また、検出部２２は、黒白変化点の前後の輝度値の中間値を白黒判定閾値として記憶する。
検出部２２は、黒白変化点を３つ検出し、１個目と２個目の黒白変化点の距離と２個目と３個目の黒白変化点の距離との差が所定値以下のとき、検出部２２はこの３つの黒白変化点を、ファインダパターン１１０の第１縞候補（左縞候補）とする。
【００２０】
ここで、図６（ｂ）を参照して、検出部２２が第１縞候補を検出する例を説明する。図６（ｂ）は、図６（ａ）における領域Ｒ１０の拡大図である。
検出部２２は、走査線Ｌ１００に沿って左から右に画像データを走査するものとする。このときに検出部２２が取得する輝度値を輝度値グラフＧ１０に示す。輝度値グラフＧ１０の横方向は走査線Ｌ１００の位置を表し、輝度値グラフＧ１０の縦方向は、輝度値グラフＧ１０の横方向で表される走査線Ｌ１００の位置での輝度値を表す。検出部２２は、輝度値が大きいと白に近く、輝度値が小さいと黒に近いものとする。
輝度値グラフＧ１０に示すとおり、点Ｐ１００、Ｐ１０１及びＰ１０２で、輝度値が大きく上昇する。この輝度値の上昇量は、所定値よりも大きいとする。すると、点Ｐ１００、Ｐ１０１及びＰ１０２が黒白変化点となる。
次に、検出部２２は、点Ｐ１００と点Ｐ１０１との距離と、点Ｐ１０１と点Ｐ１０２との距離と、の差の絶対値が所定値以下か否かを判断する。図６（ｂ）の例では、所定値以下とする。このとき、検出部２２は、点Ｐ１００、Ｐ１０１及びＰ１０２を第１縞候補として検出する。
【００２１】
検出部２２は、第１縞候補を検出したとき、そのまま右方向を走査し、上記の白黒判定閾値に基づいて、白から黒に変化する点を白黒変化点として検出する。例えば、検出部２２は、輝度値が白黒判定閾値未満から白黒判定閾値以上に変化する点を白黒変化点として検出する。
検出部２２は、白黒変化点を３つ検出し、１個目と２個目の白黒変化点の距離と、２個目と３個目の白黒変化点の距離と、の差の絶対値が所定値以下のとき、この３つの白黒変化点を、ファインダパターン１１０の第２縞候補（右縞候補）とする。
【００２２】
検出部２２は、同様に、上方向及び下方向を走査し、第３縞候補（上縞候補）及び第４縞候補（下縞候補）を検出する。上方向及び下方向の走査の開始点Ｐ１５０は、左縞候補の３個目の点と右縞候補の１個目の点との間の点であり、輝度値が白黒判定閾値より大きい点とする。
図６（ｃ）に示す例では、検出部２２は、第２縞候補の検出のために、検出部２２が走査線Ｌ１１０に沿って走査を検出する。走査線Ｌ１１０での走査に対応する輝度値グラフＧ１１に示されるように、点Ｐ１１０、Ｐ１１１及びＰ１１２が右縞候補である。
検出部２２は、同様に、第３縞候補の検出のために走査線Ｌ１２０に沿って走査し、第４縞候補の検出のために走査線Ｌ１３０に沿って走査する。それぞれの輝度値グラフＧ１２、Ｇ１３に示されるように、点Ｐ１２０、Ｐ１２１及びＰ１２２が第３縞候補であり、点Ｐ１３０、Ｐ１３１及びＰ１３２が第４縞候補である。
【００２３】
検出部２２は、第１〜第４縞候補を検出したときに、ファインダパターン１１０を検出したものとする。そして、検出部２２は、第１〜第４縞候補の黒白変化点及び白黒変化点に基づいて、ファインダパターン１１０の中心位置であるファインダパターン中心点を算出する。
なお、検出部２２は、第２〜第４縞候補のうち、１つ又は２つの縞候補を検出したときに、ファインダパターン１１０を検出したものとしてもよい。
また、第１縞候補は、右方向以外の方向の走査で得られる縞候補であってもよい。また、第１〜第４縞候補は、それぞれの縞候補の検出時の走査の方向が互いに異なれば、どの方向の走査で検出できる縞候補であってもよい。ただし、走査の方向は直線状であることが、走査の簡易化のために好ましい。
また、縞候補の数は、２個や３個などでもよく、４個に限定されるものではない。そして、検出部２２は、２以上の所定の数の縞候補を検出したときに、ファインダパターン１１０を検出したものとしてもよい。
【００２４】
図５のステップＳ２０２において、画像読取り装置２０の算出部２３は、画像データの円環部１１１を楕円とみなし、この楕円の方程式の定数である楕円定数を算出する。楕円定数により、設計上の円環部１１１の同心円に対応する画像データの二次元コード１００の楕円が得られる。なお、二次元コード１００を正面から撮影したときは、円環部１１１は円として表されるため、得られる楕円定数は円の方程式を表すことになる。
本実施形態では、第３円環１１２ｃの内側の境界線を楕円として算出する。
まず、図７を参照して、楕円候補点を抽出する処理について説明する。図７（ａ）に示すように、算出部２３は、ステップＳ２０１で算出されたファインダパターン中心点Ｐ２００から外方に向かう走査線Ｌ２００に沿って、画像データを走査していき、３個目の白黒変化点を楕円候補点Ｐ２０１として検出する。走査線Ｌ２００は、ファインダパターン中心点Ｐ２００を中心として放射状となるように複数設けられ、それぞれの走査線Ｌ２００に沿って走査することで、楕円候補点Ｐ２０１が複数検出される。互いに隣接する走査線Ｌ２００の間の角度は、１度、５度、７度等とするが、これ以外の角度であってもよい。
図７（ａ）に示す輝度値グラフＧ２０は、一つの走査線Ｌ２００に沿って走査したときの輝度値を表す。輝度値グラフＧ２０の横方向が走査線Ｌ２００の位置を表し、右に行くほどファインダパターン中心点Ｐ２００から離れる。輝度値グラフＧ２０の縦方向は、輝度値グラフＧ２０の横方向で表される走査線Ｌ２００の位置での輝度値を表す。輝度値グラフＧ２０から分かるように、３個目の白黒変化点である点が楕円候補点Ｐ２０１である。
【００２５】
次に、算出部２３は、検出した楕円候補点Ｐ２０１から、楕円候補点Ｐ２０１で表される楕円Ｌ２１０の楕円定数を算出する。
楕円Ｌ２１０の楕円定数を算出するために、図８に示すような、原点をＯとする画像データのＸＹ座標系を考える。
楕円Ｌ２１０の任意の点を（ｘ、ｙ）、楕円Ｌ２１０の中心座標Ｏ’を（ｘ０、ｙ０）、長軸の長さをａ、短軸の長さをｂ、長軸の傾きをθ、楕円の関数をｆとすると、ＸＹ座標系での楕円Ｌ２１０は、一般的に次の式１のように表すことができる。なお、図８には、中心座標Ｏ’を原点とし、長軸の方向をＸ’軸、短軸の方法をＹ’軸とするＸ’Ｙ’座標を示す。
ｆ（ｘ、ｙ、ｘ０、ｙ０、ａ、ｂ、θ）＝０  ・・・  （式１）
このように、中心座標Ｏ’、長軸の長さをａ、短軸の長さをｂ、及び、長軸の傾きθで、楕円の関数ｆを特定でき、中心座標Ｏ’、長軸の長さをａ、短軸の長さをｂ、及び、長軸の傾きθを楕円定数と呼ぶ。
式１から分かるように、５つの楕円候補点Ｐ２０１を（ｘ、ｙ）に代入して、５つの式を得ることで、一組の楕円定数、すなわち、中心座標Ｏ’（ｘ０、ｙ０）、長軸の長さａ、短軸の長さｂ、及び、長軸の傾きθが算出される。
【００２６】
まず、算出部２３は、楕円候補点Ｐ２０１から任意に５点を抽出して、上記の方法で楕円定数を得ることで、楕円関数ｆを１つ特定する。同様に、算出部２３は、異なる楕円候補点Ｐ２０１の５点を抽出して楕円定数を得て楕円関数ｆを算出することを繰り返して、複数の楕円関数ｆを特定する。
次に、算出部２３は、特定したそれぞれの楕円関数ｆから精度の高い楕円関数を１つ選択する。この選択の方法には例えば次のようなものがある。特定された楕円関数ｆで表される楕円と、楕円関数ｆを得るときに使用していない楕円候補点Ｐ２０１と、の距離を算出する。算出部２３は、この距離が最も小さくなるような楕円関数ｆを、精度の高い楕円関数として選択する。
次に、算出部２３は、選択された楕円関数ｆに使われる楕円定数を楕円Ｌ２１０の楕円定数とする。
なお、算出部２３は、一組の楕円定数のみを算出して、この楕円定数を楕円Ｌ２１０の楕円定数としてもよい。
【００２７】
図５のステップＳ２０３において、算出部２３は、画像データのファインダパターン１１０の基準方向Ｗ１０と、設計上のファインダパターン１１０の基準方向Ｗ１０との関係を算出する。本実施形態では、この関係として、コード回転角を算出する。コード回転角とは、画像データのファインダパターン１１０の基準方向Ｗ１０の、基準となるファインダパターン１１０の方向からのずれを表す角度であり、画像データで二次元コード１００がどの程度回転しているかを表す。基準となるファインダパターン１１０の方向とは、設計上のファインダパターン１１０の基準方向Ｗ１０であり、本実施形態では、図９に示すようにＸ軸の正の方向とする。
算出部２３は、コード回転角の算出に、方向特定輝度分布を使う。方向特定輝度分布は、基準方向Ｗ１０の特定が可能であり、２つの方向特定輝度分布を比べることで、２つの基準方向Ｗ１０のずれであるコード回転角を算出できる輝度分布であり、次のように表現される輝度分布である。方向特定輝度分布の横軸は角度である。方向特定輝度分布の縦軸は、ファインダパターン１１０の中心から、横軸の角度で指定される角度における方向特定部１２０の有無を表す。
算出部２３は、設計上のファインダパターン１１０の方向特定輝度分布（設計輝度分布Ｇ３０）と、画像データ取得部２１が取得した画像データのファインダパターン１１０の方向特定輝度分布（取得輝度分布Ｇ３１）と、を比べる。
【００２８】
次に、図９を参照して、設計輝度分布Ｇ３０について説明する。
設計輝度分布Ｇ３０は、設計上の二次元コード１００における方向特定部１２０の突起部１２１を通り、各円環１１２ａ〜ｃと同心円となる走査線Ｌ３０１を走査して得られる輝度分布である。
設計上の二次元コード１００のファインダパターン１１０は、図９（ｂ）に示すように、円環部１１１（円環１１２ａ〜ｃ）の中心点が図８のＸＹ座標系の原点と一致するものとする。また、設計上のファインダパターン１１０の基準方向Ｗ１０はＸ軸の正方向に等しく、第３円環１１２ｃの内側の境界線Ｌ３００がＸＹ座標系における単位円となるような縮尺であるものとする。このように考えると、ステップＳ２０２の楕円Ｌ２１０は、設計上の二次元コード１００の第３円環１１２ｃに対応付けられるといえる。
このような設計上の二次元コード１００において、走査線Ｌ３０１は半径ｒの円である。半径ｒは、走査線Ｌ３０１が突起部１２１における放射方向（原点から外側に向かう方向）の中央を通るように、定められる。
図９（ａ）に設計輝度分布Ｇ３０の例を示す。設計輝度分布Ｇ３０の横軸は、Ｘ軸からの角度αである。設計輝度分布Ｇ３０の縦軸は、走査線Ｌ３０１における角度αの点の輝度値である。したがって、設計輝度分布Ｇ３０の輝度が黒と表される部分が、方向特定部１２０の突起部１２１ａ〜１２１ｄに対応する。
このようなファインダパターン１１０の設計輝度分布Ｇ３０は、予め画像読取り装置２０の主記憶装置等に保存されている。
【００２９】
取得輝度分布Ｇ３１は、設計上の走査線Ｌ３０１に対応する画像データの走査線Ｌ３１１を走査して得られる輝度分布である。
次に、図１０を参照して、画像データのファインダパターン１１０の取得輝度分布Ｇ３１の算出方法について説明する。
まず、設計上の円環部１１１の同心円に対応する画像データの二次元コード１００の楕円の表し方について説明する。
図１０（ｂ）を参照して、画像データのファインダパターン１１０ａにおける点の表し方について説明する。図１０（ｂ）では、画像データのファインダパターンを符号１１０ａとし、設計上のファインダパターンを符号１１０ｂで表す。
ファインダパターン１１０ａにおける楕円L２１０は、単位円をＸ軸方向にａ倍、Ｙ軸方向にｂ倍し、反時計回りにθ度回転して、中心を（ｘ０、ｙ０）としたものである。このため、楕円L２１０上の点Ｐ３１０（Ｅｘ、Ｅｙ）は、単位円上の点Ｐ３００（Ｃｘ、Ｃｙ）から次式で算出できる。
Ｅｘ＝Ｃｘ×ａ×ｃｏｓθ−Ｃｙ×ｂ×ｓｉｎθ＋ｘ０  ・・・  （式２）
Ｅｙ＝Ｃｘ×ａ×ｓｉｎθ＋Ｃｙ×ｂ×ｃｏｓθ＋ｙ０  ・・・  （式３）
【００３０】
ここで、単位円上の点Ｐ３００（Ｃｘ、Ｃｙ）は、Ｘ軸からの角度βを媒介変数として、次式で算出できる。
Ｃｘ＝ｃｏｓβ  ・・・  （式４）
Ｃｙ＝ｓｉｎβ  ・・・  （式５）
したがって、楕円Ｌ２１０上の点Ｐ３１０（Ｅｘ、Ｅｙ）は、次式で算出できる。
Ｅｘ＝ｃｏｓβ×ａ×ｃｏｓθ−ｓｉｎβ×ｂ×ｓｉｎθ＋ｘ０  ・・・  （式６）
Ｅｙ＝ｃｏｓβ×ａ×ｓｉｎθ＋ｓｉｎβ×ｂ×ｃｏｓθ＋ｙ０  ・・・  （式７）
同様の考え方で、原点Ｏを中心とした半径Ｌの円に対応する楕円の点（Ｆｘ、Ｆｙ）は、次式で算出できる。
Ｆｘ＝Ｌ×ｃｏｓβ×ａ×ｃｏｓθ−Ｌ×ｓｉｎβ×ｂ×ｓｉｎθ＋ｘ０  ・・・  （式８）
Ｆｙ＝Ｌ×ｃｏｓβ×ａ×ｓｉｎθ＋Ｌ×ｓｉｎβ×ｂ×ｃｏｓθ＋ｙ０  ・・・  （式９）
このように、楕円定数により、設計上の円環部１１１の同心円に対応する画像データの二次元コード１００の楕円を表すことができる。
【００３１】
算出部２３は、図９に示す設計上の二次元コード１００の走査線Ｌ３０１に対応する、画像データの走査線Ｌ３１１の点Ｐ３１１を、式８、式９のＬに走査線Ｌ３０１の半径ｒを代入することで得る。
そして、算出部２３は、βを０度以上３６０度未満の範囲で変化させて、複数の点Ｐ３１１における輝度を取得し、図１０（ａ）に示す取得輝度分布Ｇ３１を算出する。βは１度単位で変化させるが、５度や１０度など、変化の単位を異ならせてもよい。
こうして、取得輝度分布Ｇ３１が算出される。
【００３２】
次に、算出部２３は、設計輝度分布Ｇ３０と取得輝度分布Ｇ３１とから、コード回転角γを算出する。この算出方法について、図１１を参照して説明する。
算出部２３は、設計輝度分布Ｇ３０と取得輝度分布Ｇ３１とを比較して、両者が一致するか否かを判定する。例えば、０度以上３６０度未満の所定の複数の角度において、設計輝度分布Ｇ３０の輝度値と取得輝度分布Ｇ３１の輝度値との差を算出する。そして、算出した差の絶対値の合計が所定値未満のとき設計輝度分布Ｇ３０と取得輝度分布Ｇ３１とが一致すると判定し、この合計が所定値以上のとき設計輝度分布Ｇ３０と取得輝度分布Ｇ３１とが一致しないと判定する。
算出部２３は、一致しないとき、設計輝度分布Ｇ３０を所定量（所定の角度でありシフト量とも呼ぶ）、角度が正となる方向に設計輝度分布Ｇ３０をシフトさせる。このとき、３６０度が０度に等しくなるように、循環的にシフトさせる。したがって、例えば、３５５度を１０度シフトさせると５度になるようにシフトさせることになる。
そして、算出部２３は、シフト後の設計輝度分布Ｇ３０と取得輝度分布Ｇ３１とが一致するか否かを判定する。一致しないときは、シフト量を変えての設計輝度分布Ｇ３０のシフトと、一致の判定と再度行う。
算出部２３は、設計輝度分布Ｇ３０と取得輝度分布Ｇ３１とが一致するときのシフト量をコード回転角γとする。
図１１の例では、図から明らかなように、シフト量としてコード回転角γとしたときに、設計輝度分布Ｇ３０と取得輝度分布Ｇ３１とが一致する。
なお、算出部２３は、シフトする量を変えて複数回設計輝度分布Ｇ３０と取得輝度分布Ｇ３１とを比較し、両者の差が最も小さくなるシフト量をコード回転角γとしてもよい。
【００３３】
図５のステップＳ２０４において、算出部２３は、式８、式９、コード回転角γ、及び、設計上のファインダパターン１１０を基準としたデータ部１５０の位置、に基づいて、画像データのデータ部１５０の位置を算出する。
まず、算出部２３は、画像データのデータ部１５０の４角の位置を推定する。図１２を参照して、この推定方法について説明する。図１２は、図１０に示す設計上の二次元コード１００を拡大した図である。なお、上記の通り、境界線Ｌ３００は単位円となる。
図１２に示すように、設計上の二次元コード１００のデータ部１５０の４角の点Ｐ４００〜Ｐ４０３は、設計上の二次元コード１００のファインダパターン１１０の中心点（図１２の原点）と、基準方向Ｗ１０との関係で予め定められている。
また、設計上の二次元コード１００上の点を、この点に対応する画像データの二次元コード１００上の点に変換には、式８、式９を使うことができる。このとき、コード回転角γを使い、設計上の基準方向Ｗ１０を画像データの基準方向Ｗ１０に合わせる。
具体的には、画像データの二次元コード１００のデータ部１５０の４角の点は、次のように算出して推定できる。
点Ｐ４００に対応する画像データの二次元コード１００の点は、式８、式９においてＬを４．０４９６、βを（γ−２０度）とすることで、算出できる。同様に、点Ｐ４０１、４０２、４０３に対応する画像データの二次元コード１００の点は、式８、式９において、それぞれ、Ｌを５．６６４、４．４２７２、１．９７９８、βを（γ−４８度）、（γ−１０８度）、（γ−１３５度）とすることで、算出できる。
【００３４】
次に、算出部２３は、画像データのデータ部１５０の４角の位置の精度を上げる処理を行う。図１３を参照して、画像データのデータ部１５０の４角の位置の精度を上げる処理について説明する。
図１３に示す点Ｐ５００〜Ｐ５０３は、それぞれ、設計上のデータ部１５０の４角の点Ｐ４００〜Ｐ４０３に対応する画像データのデータ部１５０の４角の点として推定された点である。
また、辺Ｌ４００〜Ｌ４０３は、それぞれ、点Ｐ５００と点Ｐ５０１とをつなぐ辺、点Ｐ５０１と点Ｐ５０２とをつなぐ辺、点Ｐ５０２と点Ｐ５０３とをつなぐ辺、点Ｐ５０３と点Ｐ５００とをつなぐ辺である。
まず、算出部２３は、辺Ｌ４００における、データ部１５０の外方から、データ部１５０の内方に向けて走査し、画素毎の輝度値を取得する。そして、算出部２３は、輝度値が所定値よりも大きく下降する場所を白黒変化点として検出する。算出部２３は、辺Ｌ４００における複数の異なる場所で同様の走査を行い、複数の白黒変化点として検出する。
この検出した複数の白黒変化点をつかい、検出した複数の白黒変化点に最もよく一致する直線方程式を算出する。この直線方程式の算出には、例えば最小二乗法が使われる。
【００３５】
算出部２３は、同様に、辺Ｌ４０１〜Ｌ４０３においても、複数の白黒変化点を検出して、検出した白黒変化点に基づく直線方程式を算出する。
算出部２３は、こうして算出された辺Ｌ４００〜Ｌ４０３のそれぞれに対応する４つの直線方程式から、画像データのデータ部１５０の４角の位置として、４つの交点を算出する。算出部２３は、この４つの交点を画像データのデータ部１５０の位置として扱う。
【００３６】
図５のステップＳ２０５において、画像読み取り装置２０の読取り部２４は、画像データのデータ部１５０を読取る。
データ部１５０は、上記の通り、マトリクス状に同形状のセル領域が並ぶ。したがって、読取り部２４は、ステップＳ２０４で算出された画像データのデータ部１５０の４角の位置から、データ部１５０のそれぞれのセル領域の場所が特定できる。
読取り部２４は、画像データにおける特定したそれぞれのセル領域の輝度値を取得して、セル領域の輝度に応じて、０又は１の１ビットのデータを取得する。こうして、読取り部２４は、データ部１５０からビット列を読取る。
【００３７】
ステップＳ２０６において、読取り部２４は、ステップＳ２０５で読取り部２４が読取ったビット列から、画像データのデータ部１５０に表される対象データを生成する。この処理により、画像読み取り装置２０は二次元コード１００に表された対象データを取得することになる。図１４を参照して、対象データの生成処理について説明する。
図１４のコード化ビット列Ｄ２００は、ステップＳ２０５で読取り部２４が読取ったビット列であり、図４のコード化ビット列Ｄ１５０に対応する。
まず、読取り部２４は、コード化ビット列Ｄ１５０を符号化して、誤り訂正可能な符号化データＤ２１０を生成する。誤り訂正可能な符号化データＤ２１０は、図４の誤り訂正可能な符号化データＤ１４０に対応する。誤り訂正可能な符号化データＤ２１０は、誤り訂正符号Ｄ２１１を含む。
【００３８】
次に、読取り部２４は、必要に応じて誤り訂正符号Ｄ２１１を用いた誤り訂正を行い、誤り検出可能な符号化データＤ２２０を生成する。誤り検出可能な符号化データＤ２２０は、図４の誤り検出可能な符号化データＤ１３０に対応する。誤り検出可能な符号化データＤ２２０は、誤り検出符号Ｄ２２１を備える。読取り部２４は、誤り検出符号Ｄ２２１を使って、誤り検出可能な符号化データＤ２２０に誤りがあるか否かを判断する。誤りがないときは次の処理に進め、誤りがあるときは対象データの生成に失敗したと判断して処理を終了する。
次に、読取り部２４は、誤り検出可能な符号化データＤ２２０から誤り検出符号Ｄ２２１を除去して、符号化データＤ２３０を生成する。符号化データＤ２３０は、図４の符号化データＤ１２０に対応する。
次に、読取り部２４は、符号化データＤ２３０からビット列Ｄ２４０を生成する。この生成は、例えば、固定ビット長符号化とは反対の処理を行うことで実現できる。
次に、読取り部２４は、ビット列Ｄ２４０を、予め定められた規則で対象データＤ２５０にする。
こうして、読取り部２４は、対象データを生成する。
【００３９】
以上のように、二次元コード１００では、ファインダパターン１１０と、データ部１５０とは分離して配置される。よって、ファインダパターン１１０の大きさ及び配置を、データ部１５０の形状に依存させる必要がない。したがって、二次元コードの使用環境に応じて、ファインダパターンの大きさ及び配置の自由度を向上させることができる。これにより、二次元コードの読取り精度を向上させることができる。
例えば、鋼片を製造する製鋼工場において、鋼片に二次元コードが印刷された耐熱ラベルを鋼片に貼り付けて、鋼片を管理することがある。このような鋼片は、移動させたりスラブヤードに保管したりする中で汚れが付くことが多い。しかし、二次元コード１００では、ファインダパターンの大きさ及び配置の自由度を向上させることができるため、鋼片に付く汚れに影響されないようなファインダパターンを備える二次元コード１００の準備が容易である。これにより、鋼片に貼り付けられた二次元コードの読取り精度を向上させることができる。
【００４０】
また、画像読み取り装置２０は、画像データのファインダパターン１１０と、設計上の二次元コード１００とから、画像データのデータ部１５０の位置を算出する。したがって、ファインダパターン１１０とデータ部１５０とが分離する二次元コード１００のデータを読取ることができる。また、画像読み取り装置２０は、画像データ自体を補正したり変換したりする必要がない。したがって、二次元コード１００の読取りの処理時間を短縮できる。
【００４１】
また、二次元コード１００は円環部１１１を備える。したがって、二次元コード１００を撮影した画像データで、傾いて円環部１１１が表されても次のようにデータ部１５０の位置を算出できる。すなわち、画像読み取り装置２０は、画像データの円環部１１１を設計上の円環部１１１に対応できる楕円とする楕円の楕円定数を算出でき、楕円定数に基づいて画像データのデータ部１５０の位置を算出できる。
また、二次元コード１００は方向特定部１２０を備える。よって、画像読み取り装置２０は、突起部１２１に基づいて、二次元コード１００の向きを特定して二次元コード１００のデータ部１５０の位置を特定できる。
具体的には、設計上の二次元コードの走査線Ｌ３０１を走査して得られる輝度分布（設計輝度分布Ｇ３０）と、走査線Ｌ３０１に対応する画像データの走査線Ｌ３１１を走査して得られる輝度分布（取得輝度分布Ｇ３１）と、を比べる。走査線Ｌ３０１、Ｌ３１１はそれぞれ方向特定部１２０を含む。よって、この輝度分布の比較により、画像データの基準方向Ｗ１０と設計上の基準方向Ｗ１０との関係が得られる。
また、設計上の二次元コードの走査線Ｌ３０１は、設計上の円環部１１１の同心円である。よって、画像読み取り装置２０は、楕円定数を使って、走査線Ｌ３０１に対応する画像データ上の走査線Ｌ３１１を導ける。
【００４２】
また、画像読み取り装置２０は、楕円定数、画像データの基準方向Ｗ１０と設計上の基準方向Ｗ１０との関係、及び、設計上のファインダパターン１１０を基準としたデータ部１５０の位置に基づいて、画像データのデータ部１５０の位置を算出する。したがって、画像読み取り装置２０は、二次元コード１００におけるファインダパターン１１０とデータ部１５０との位置関係が変わっても、簡易に対応できる。すなわち、画像読み取り装置２０が持つ設計上のファインダパターン１１０を基準としたデータ部１５０の位置の情報を変更することで、簡易に対応できる。
【００４３】
また、二次元コード１００の方向特定部１２０は、円環部１１１の円周方向の長さが異なる複数の突起部１２１を備える。したがって、突起部１２１の一部が汚れ等で画像データに現れていない場合でも、設計輝度分布Ｇ３０と取得輝度分布Ｇ３１との比較の精度が落ちるおそれを低減できる。
【００４４】
＜第２実施形態＞
次に、上記以外の二次元コードの例について説明する。なお、上記の二次元コードと同様の点については説明を省略する。
まず、図１５を参照して、ファインダパターンを大きくした二次元コード２００について説明する。
図１５の二次元コード２００は、ファインダパターン２１０とデータ部１５０とを備える。ここで、ファインダパターン２１０とデータ部１５０とが並ぶ方向、すなわちファインダパターン２１０の中心部とデータ部１５０の中心部とをむすぶ方向を並び方向と呼び、並び方向に垂直な方向を幅方向と呼ぶ。図１５の例では、ファインダパターン２１０の幅方向の長さの最大値は、データ部１５０の幅方向の長さに略等しい。
また、ファインダパターン１１０の円環部１１１の直径は、データ部１５０におけるファインダパターン１１０と対向する辺の長さに略等しい。
ファインダパターン２１０とデータ部１５０との位置及び大きさはこのような関係であり、ファインダパターン２１０は、図２に示す第１実施形態のファインダパターン１１０より大きい。したがって、ファインダパターン２１０の一部が、汚れや剥がれ等で画像データに表れていない場合でも、画像読取り装置２０がファインダパターン２１０の検出に失敗するおそれが低減する。
なお、ファインダパターン１１０の円環部１１１の直径を、データ部１５０におけるファインダパターン１１０と対向する辺の長さより長くしてもよい。
【００４５】
次に、図１６を参照して、一のデータ部に対してファインダパターンが複数配置される二次元コード３００について説明する。ここではファインダパターンの数を２つとして説明するが、３つ以上であってもよい。
図１６の二次元コード３００は、第１ファインダパターン３１０と、第２ファインダパターン３３０と、外形が略正方形状のデータ部３５０とを備える。
第１ファインダパターン３１０は、図２のファインダパターン１１０と同様の形状である。
第２ファインダパターン３３０は、第１ファインダパターン３１０と第２ファインダパターン３３０とでデータ部３５０を挟む位置であって、かつ、第１ファインダパターン３１０及びデータ部３５０と分離した位置に配置される。
第２ファインダパターン３３０は、第２ファインダパターン３３０の方向特定部１２０が補助突起部３３１を備える点で第１ファインダパターン３１０と相違する。
補助突起部３３１は、いずれかの突起部１２１、例えば第２突起部１２１ｂに設けられ、第２突起部１２１ｂから、第２ファインダパターン３３０の外方に伸びる。補助突起部３３１によって、第１ファインダパターン３１０と第２ファインダパターン３３０とを区別できる。
また、データ部１５０における第１ファインダパターン３１０と対向する辺の長さは、第１ファインダパターン３１０の円環部１１１の直径に略等しい。同様に、データ部１５０における第２ファインダパターン３３０と対向する辺の長さは、第２ファインダパターン３３０の円環部１１１の直径に略等しい。
【００４６】
次に、画像読み取り装置２０が、ファインダパターンを２つ設けた二次元コード３００を読取る処理について説明する。
まず、画像読み取り装置２０の画像データ取得部２１は、画像データを取得する。
次に、画像読み取り装置２０の検出部２２は、ファインダパターンを検出する。ここで検出するファインダパターンは、第１ファインダパターン３１０又は第２ファインダパターン３３０である。
次に、画像読み取り装置２０の算出部２３は、検出したファインダパターンについて、楕円形状の算出及びコード回転角の算出を行う。
【００４７】
次に、算出部２３は、検出したファインダパターンが第１ファインダパターン３１０及び第２ファインダパターン３３０のどちらであるかを判断する。
ここで、第２ファインダパターン３３０の補助突起部３３１について、第２ファインダパターン３３０の中心点からの設計上の距離及び、この中心点を基準とした基準方向Ｗ１０からの設計上の角度は予め定められている。したがって、式８及び式９を使うことで、画像データの補助突起部３３１の位置を特定できる。
そこで、算出部２３は、特定した画像データの補助突起部３３１の位置の画素の輝度値を取得して、黒に相当する輝度値か否かを判断する。算出部２３は、黒に相当する輝度値のとき、ファインダパターンに補助突起部３３１があると判断して、検出したファインダパターンは第２ファインダパターン３３０であると判断する。算出部２３は、黒に相当する輝度値ではないとき、検出したファインダパターンに補助突起部３３１がないと判断して、検出したファインダパターンは第１ファインダパターン３１０であると判断する。
なお、算出部２３は、特定した画像データの補助突起部３３１の位置の近傍の複数の画素の輝度値を取得して、ファインダパターンに補助突起部３３１があるか否かを判断してもよい。
【００４８】
次に、算出部２３は、データ部３５０の位置を算出する。データ部３５０の４角の点として推定される画像データの点の位置は、第１ファインダパターン３１０を基準とした場合と、第２ファインダパターン３３０を基準とした場合とでは異なる。このため、算出部２３は、検出したファインダパターンに応じて、データ部３５０の４角の点として推定される点の位置を特定する。その他の処理は、第１実施形態と同様である。
【００４９】
以上のように、図１６の二次元コード３００は、２つのファインダパターンを備える。よって、画像読取り装置２０は、汚れや剥がれ等でファインダパターンの一方を検出できない場合でも、他方のファインダパターンを検出することで、検出したファインダパターンに基づいて、データ部３５０を読取れる。したがって、画像読取り装置２０がデータ部１５０の読取りに失敗するおそれが低減する。
【００５０】
なお、補助突起部３３１以外で、ファインダパターン３１０、３３０を特定できるようにしてもよい。例えば、ファインダパターン３１０、３３０毎に、方向特定部１２０の突起部１２１の円周方向の長さを異ならせて、いずれのファインダパターンを任意の角度回転させても、他のパターンと重ね合わせて一致させることができなうような形状にしてもよい。このとき、画像読取り装置２０は、第１ファインダパターン３１０用の設計輝度分布Ｇ３０と、第２ファインダパターン３３０用の設計輝度分布Ｇ３０とを予め記憶する。そして、取得輝度分布Ｇ３１がどちらの設計輝度分布Ｇ３０と一致するかに応じて、検出したファインダパターンが、第１ファインダパターン３１０と第２ファインダパターン３３０のどちらであるかを特定する。
【００５１】
＜第３実施形態＞
次に、図１７を参照して、本実施形態の二次元コードシステム２について説明する。
本実施形態の二次元コードシステム２は、パン、チルト及びズームが可能な画像読取り装置３２０を備える。また、二次元コードシステム２は、図１５で説明した二次元コード２００が使われる。その他の点は、上記実施形態と同様であるため説明を省略する。
本実施形態の画像読取り装置３２０の画像データ取得部２１は、パン、チルト及びズームが可能なレンズ等の光学系を備える。
画像読取り装置３２０は、ＰＴＺ（パン、チルト及びズーム）制御部をさらに備える。ＰＴＺ制御部は、画像データ取得部２１のパン、チルト及びズームを制御する。
【００５２】
次に、画像読取り装置３２０の処理について説明する。
第１に、画像読取り装置３２０のＰＴＺ制御部は、予め設定された広角な画角である第１画角で画像データを取得できるように、画像データ取得部２１の光学系を制御する。
第２に、画像読取り装置３２０の画像データ取得部２１は、ＰＴＺ制御部で制御された光学系の設定で撮影して、第１画角の第１画像データを取得する。
第３に、画像読取り装置３２０の検出部２２は、画像データ取得部２１が取得した第１画像データから、二次元コード２００のファインダパターン２１０を検出する。なお、この処理は、第１実施形態と同様である。
第４に、ＰＴＺ制御部は、検出部２２がファインダパターン２１０を検出したとき、ファインダパターン２１０を含む二次元コード２００がズームアップされる第２画像データが取得できるように、画像データ取得部２１を制御する。第２画像データの画角である第２画角は、第１画角より狭い。
第５に、画像読取り装置３２０の画像データ取得部２１は、ＰＴＺ制御部で制御された光学系の設定で撮影して画像データを取得する。
第６に、画像読取り装置３２０の検出部２２は、第２画像データから、二次元コード２００のファインダパターン２１０を検出する。そして、画像読取り装置３２０は、第２画像データを使い、図５のステップＳ２０２以降の処理を行って、対象データを読取る。
広角な画角の第１画像データに複数のファインダパターン２１０が検出されたとき、画像読取り装置３２０は、全てのファインダパターン２１０について、上記の第４〜第６の処理を行って、対象データを読取る。
【００５３】
以上のように、本実施形態の画像読取り装置３２０は、まず広角な第１画像データでファインダパターン２１０を検出する。次に、検出したファインダパターン２１０をズームアップした第２画像データを撮影し、第２画像データを使ってデータ部１５０を読取る。したがって、画像読取り装置３２０は、二次元コード２００の位置が定まっていなかったり、二次元コード２００が比較的遠方にあったりする場合でも、精度よく二次元コード２００を読取れる。
【００５４】
＜その他の実施形態＞
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【００５５】
以上、本発明を実施形態と共に説明したが、上記実施形態は本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。
【符号の説明】
【００５６】
１  二次元コードシステム、１０  印刷装置、２０  画像読取り装置、１００  二次元コード
【図１】
2017097624.tif 000003
【図２】
2017097624.tif 000004
【図３】
2017097624.tif 000005
【図４】
2017097624.tif 000006
【図５】
2017097624.tif 000007
【図６】
2017097624.tif 000008
【図７】
2017097624.tif 000009
【図８】
2017097624.tif 000010
【図９】
2017097624.tif 000011
【図１０】
2017097624.tif 000012
【図１１】
2017097624.tif 000013
【図１２】
2017097624.tif 000014
【図１３】
2017097624.tif 000015
【図１４】
2017097624.tif 000016
【図１５】
2017097624.tif 000017
【図１６】
2017097624.tif 000018
【図１７】
2017097624.tif 000019