以下、複数の実施形態について図面を参照しながら説明する。なお、各実施形態で実質的に同一の要素には同一の符号を付し、説明を省略する。
(第1実施形態)
まず、第1実施形態について、図1〜図8を参照して説明する。
本実施形態の情報コードシステム10は、情報コード生成装置20、情報コード読取装置30、及び外部装置40を含んで構成されている。情報コードシステム10は、例えば駅や空港、イベント会場等において入場者を管理するための発券及び改札システム等に用いることができる。この場合、例えば外部装置40は改札機であり、情報コード生成装置20は発券機である。また、情報コード読取装置30は、例えば改札機つまり外部装置40に組み込まれたコードリーダである。なお、情報コードシステム10は、発券及び改札システムに限られず、他の用途にも適用することができる。また、情報コード読取装置30は、外部装置40に組み込まれている必要はない。
[情報コード生成装置]
以下では、図1〜図5を参照して情報コード生成装置20について説明する。情報コード生成装置20は、図1又は図5に示す情報コード50を生成し、その情報コード50を情報コード表示媒体60に表示させる。情報コード50は、例えばスタック型又はマトリックス型の2次元コードを含むものである。例えば情報コード生成装置20は、2次元コード及び1次元コードを生成する機能を有する。本実施形態の場合、情報コード生成装置20は、QRコード及びバーコードを生成する機能を有する。なお、情報コード生成装置20が生成する情報コード50は、QRコード及びバーコードに限られない。
情報コード50が表示される情報コード表示媒体60は、例えば紙又は樹脂製のシート状の媒体や、液晶画面等の表示画面を備える電子機器例えばスマートフォン等である。この場合、「情報コード50を情報コード表示媒体60に表示させる」とは、情報コード50を情報コード表示媒体60に対して外観から認識できるように表示することを意味する。すなわち、「情報コード50を表示させる」とは、例えば情報コード表示媒体60が紙媒体である場合にはその紙媒体に情報コード50を印刷することを意味し、情報コード表示媒体60がスマートフォン等の電子機器である場合にはその電子機器の画面に情報コード50を表示させることを意味する。本実施形態の場合、情報コード生成装置20は、情報コード生成装置20で生成した情報コードを媒体に印刷する機能を有している。したがって、情報コード生成装置20は、情報コード生成装置20で生成した情報コードを媒体に印刷するための印刷装置を兼ねている。
情報コード生成装置20は、制御部21、一般情報取得部22、固有情報生成部23、符号化部24、及び印刷部25を備えている。制御部21は、例えばCPU211や、ROM、RAM、及び書き換え可能なフラッシュメモリ等の記憶領域212、及び図示しないタイマー等を有するマイクロコンピュータを主体に構成されており、情報コード生成装置20の全体を制御する。記憶領域212は、情報コード生成プログラムを記憶している。制御部21は、CPU211において情報コード生成プログラムを実行することにより、一般情報取得部22、固有情報生成部23、及び符号化部24等を、ソフトウェアによって仮想的に実現する。なお、これら一般情報取得部22、固有情報生成部23、及び符号化部24は、例えば制御部21と一体の集積回路としてハードウェア的に実現してもよい。
情報コード生成装置20によって生成される情報コード50には、図2に示すように、一般情報56及び固有情報57が含まれている。一般情報56とは、符号化の対象となる情報つまり記録の目的となる情報である。例えば情報コードシステム10が駅の改札システムに用いられる場合、一般情報56は、列車番号や座席番号、乗車地、降車地、発券日時及び料金等の情報である。固有情報57とは、一般情報56に付随する情報であって、一般情報56に固有の情報である。つまり、固有情報57は、一般情報56に紐付されており、情報コード50が複数個存在する場合であっても、各情報コード50について一般情報56と固有情報57とは、原則として1対1の関係になっている。
情報コード生成装置20は、例えば図示しない通信回線を介して、この情報コード生成装置20よりも上位のホストコンピュータに接続されている。一般情報取得部22は、この図示しないホストコンピュータから一般情報56を取得する機能を有する。
固有情報生成部23は、図2に示すように、一般情報取得部22で取得した一般情報56に固有の固有情報57を生成する。固有情報生成部23は、例えば符号11ビット及び誤り訂正1ビットを有するBCH符号による固有情報57を生成する。この場合、固有情報生成部23は、2^11=2048通りの固有情報57を生成することができる。そして、同一の固有情報57が生成される確率は、1/(2048)^2となる。したがって、同一の固有情報57が生成される確率は、極めて低いといえる。
固有情報生成部23は、図3に示すように、例えば乱数を用いて固有情報57を生成する機能を有する。つまり、この場合、固有情報57は、乱数571によって構成されている。例えば情報コードシステム10が複数台の情報コード生成装置20を備えている場合、各情報コード生成装置20は、それぞれ異なる乱数表を有している。
また、固有情報生成部23は、例えば図4に示すように、固有情報57を、11ビットのうち3ビットを装置識別子572として設定し、残りの8ビットを印刷装置つまり情報コード生成装置20によって印刷された順番を示す連番号573として設定する。つまり、この場合、固有情報は、装置識別子572及び連番号573によって構成されている。
例えば情報コードシステム10が8台の情報コード生成装置20を備えている場合、各情報コード生成装置20には、それぞれ0〜7の装置識別子572が割り当てられる。そして、固有情報生成部23は、その装置識別子572に連番号573を付加して、固有情報57を生成する。この場合、連番号573は、情報コード生成装置20が使用開始してから現在までに生成した固有情報57の数を意味する。なお、固有情報生成部23が生成する固有情報57は、上述したものに限られない。例えば固有情報57のビット数は11ビットよりも多くてもよいし、少なくてもよい。また、固有情報57は、乱数561や、装置識別子572及び連番号573から構成されるものに限られず、他の要素を含んでいてもよい。
図1に示す符号化部24は、一般情報取得部22で取得した一般情報56及び固有情報生成部23で生成した固有情報57を符号化つまりエンコードして2次元コードを生成する機能を有する。本実施形態の場合、符号化部24は、一般情報取得部22で取得した一般情報及び固有情報生成部23で生成した固有情報を符号化して、図5に示すようなQRコード50を生成する。
図1に示す印刷部25は、符号化部24によって符号化された情報コード50つまり一般情報56及び固有情報57を、券紙等の情報コード表示媒体60に印刷する。なお、印刷部25は、情報コード生成装置20に内蔵されたものでもよいし、情報コード生成装置20の外部に設けられていてもよい。また、情報コード生成装置20は、情報コード生成装置20で生成した情報コード50をスマートフォン等の電子機器に表示させるために、印刷部25に換えて電子機器と通信可能な通信部を備えていてもよい。
[情報コード]
以下では、図5を参照して情報コード50の詳細について説明する。情報コード50は、所定のコード領域51の内部を格子状に区分けして形成された複数のセル511を有している。各セル511は、コード領域51内において2次元的つまり平面的に配列されている。コード領域51は、情報コード50を構成する各セル511を全て含む領域であって、例えば矩形状の領域である。本実施形態の場合、コード領域51は、21×21個のセル511を含む正方形状の領域である。なお、コード領域51のサイズつまり情報コード50のサイズは、上述したものに限定されず、一般情報56の容量等によって適宜変更することができる。各セル511は、例えば白色の明色又は例えば黒色の暗色で表示される。
情報コード50は、例えばQRコードであり、JISX0510に即した構成である。この場合、情報コード50は、位置検出パターン521〜523、タイミングパターン53、分離パターン541〜543、及び符号化領域55を有している。位置検出パターン521〜523及びタイミングパターン53は、予め設定された形状の機能パターンである。すなわち、位置検出パターン521〜523及びタイミングパターン53は、一般情報56及び固有情報57の内容に関わらず、一定形状に設定されている。
本実施形態の場合、正方形のコード領域51の3つの頂点を含む角部に、それぞれ3つの位置検出パターン521〜523が配置されている。この場合、3つの位置検出パターン521〜523のうち、コード領域51の矩形状における対角線上に配置された2つの位置検出パターン521、522を、それぞれ第1位置検出パターン521、第2位置検出パターン522と称し、残りの位置検出パターン523を第3位置検出パターン523と称する。タイミングパターン53は、符号化領域55内に配置されている。
分離パターン541〜543は、位置検出パターン521〜523と符号化領域55とを分離するためのパターンであり、全て明色つまり白色で構成されている。この場合、第1位置検出パターン521と符号化領域55とを分離するための分離パターン541を第1分離パターン541と称する。また、第2位置検出パターン522と符号化領域55とを分離するための分離パターン542を第2分離パターン542と称する。そして、第3位置検出パターン523と符号化領域55とを分離するための分離パターン543を第3分離パターン543と称する。
符号化領域55には、符号化された一般情報56及び固有情報57が配置される。なお、図5では、説明の都合上、符号化された一般情報56及び固有情報57は表示されていない。しかし、実際には、符号化領域55内の各セル511は、符号化された一般情報56及び固有情報57に応じて明色又は暗色で表示される。固有情報57は、符号化領域55内において、分離パターン54に隣接して配置される。情報コード50は、固有情報57が1か所のみに配置されていてもよいが、同一内容の固有情報57が少なくとも2か所に分散して配置されていることが好ましい。したがって、同一内容の固有情報57を3か所以上に分散して配置しても良い。
本実施形態の場合、同一内容の固有情報57が2か所に分散して配置されている。具体的には、符号化領域55は、第1固有情報領域551及び第2固有情報領域552を有している。この場合、図5では、符号化領域55内の各セル511のうち、右下がりの斜線で示した部分が第1固有情報領域551のセル511であり、左下がりの斜線で示した部分が第2固有情報領域552のセル511である。第1固有情報領域551及び第2固有情報領域552には、同一内容の固有情報57が配置される。
この場合、第1固有情報領域551は、2つに分離して設けられている。第1固有情報領域551の一部分は、第1分離パターン541のうち第3位置検出パターン523と対向しない部分に隣接して設けられている。また、第1固有情報領域551の残りの部分は、第2分離パターン542のうち第3位置検出パターン523と対向しない部分に隣接して設けられている。第2固有情報領域552は、第3分離パターン543の全体に亘って隣接して設けられている。また、符号化された一般情報56は、符号化領域55のうち固有情報領域551、542以外の領域に配置される。
[情報コード読取装置]
以下では、図1を参照して情報コード読取装置30について説明する。情報コード読取装置30は、情報コード表示媒体60に表示された情報コード50を読み取り、その読み取った情報コード50を復号つまりデコードする。そして、情報コード読取装置30は、その読取結果つまり復号したコードデータを外部装置40へ送信する。この場合、情報コード読取装置30は、2次元コード及び1次元コードを読み取る機能を有する。本実施形態の場合、情報コード読取装置30は、QRコード及びバーコードを読み取る機能を有する。なお、情報コード読取装置30が読み取る情報コード50は、QRコード及びバーコードに限られない。
情報コード読取装置30は、制御部31、撮像部32、通信部33、コード読取部34、出力部35、及び受信部36を備えている。制御部31は、例えばCPU311や、ROM、RAM、及び書き換え可能なフラッシュメモリ等の記憶領域312、及び図示しないタイマー等を有するマイクロコンピュータを主体に構成されており、情報コード読取装置30の全体を制御する。記憶領域312は、情報コード読取プログラムを記憶している。制御部31は、CPU311において情報コード読取プログラムを実行することにより、コード読取部34、出力部35、及び受信部36等を、ソフトウェアによって仮想的に実現する。なお、これらコード読取部34、出力部35、及び受信部36は、例えば制御部31と一体の集積回路としてハードウェア的に実現してもよい。
撮像部32は、例えばCCDカメラ等であり、情報コード表示媒体60に表示された情報コード50を撮像する機能を有する。制御部31は、情報コード表示媒体60から反射した可視光又は不可視光を撮像部32によって取得することで、情報コード表示媒体60に表示された情報コード50を取得することができる。また、制御部31は、撮像部32による撮像画像の明暗等から、情報コード表示媒体60が撮像部32に翳されたことを検知する機能を有する。なお、制御部31は、近接センサ等の他のセンサを用いて、情報コード表示媒体60が翳されたことを検知してもよい。ユーザが情報コード表示媒体60を撮像部32に翳すと、制御部31は、撮像部32による撮像画像から、情報コード表示媒体60に表示された情報コード50を取得する。
通信部33は、外部装置40とデータを送受信するためのインターフェースである。通信部16は、無線又は有線で外部装置40と接続される。コード読取部34は、撮像部32で撮像した画像をスキャンして、情報コード50を復号して情報コード50の内容を読み取る機能を有する。例えばコード読取部34は、図5に示す位置検出パターン521〜523を検出すると、符号化領域55内の一般情報56及び固有情報57の復号を行う。出力部35は、コード読取部34で読み取った情報コード50の内容つまりコードデータ等を、通信部33を介して外部装置40へ出力する機能を有する。受信部36は、通信部33を介して外部装置40からの指令を受信する機能を有する。
[情報コード読取処理]
以下では、図6及び図7を参照して、情報コード読取装置30の制御部31で行われる情報コード読取処理について説明する。なお、以下の説明において、括弧内の語句は、その括弧の直前の語句に対応するフローチャートの内容を示している。また、図6のステップS14に表記されている「FP」は、ファインダパターンの略であり、位置検出パターン521〜523を意味する。以下の処理では、1つの固定値Toと、3つの変数T、ID0、IDxが設定される。変数Tは、タイマーを作動させてからの時間を示す変数である。制御部31は、情報コード読取処理を開始(図6のスタート)してから初めて固有情報57の読み取りに成功した場合に、タイマーによる計時を開始する。
固定値Toは、変数Tの上限を定めるもので、予め設定された値である。変数ID0は、情報コード読取処理の実行開始(図6のスタート)後に初めて読み取った固有情報57の値を示すためのものである。そして、変数IDxは、情報コード読取処理の実行開始(図6のスタート)後に読み取った固有情報57のうち最新の固有情報57の値を示すためのものである。以下の説明では、変数Tをカウント時間Tと称し、固定値Toをタイムアウト時間Toと称し、変数ID0を初期値ID0と称し、変数IDxを現在値IDxと称する。
本実施形態において、制御部31は、コード読取部34が固有情報57の読み取りに成功しかつ一般情報56の読み取りに失敗した場合に、読み取りに成功した固有情報57と異なる固有情報57を有する情報コード50については一般情報56を読み取らないようにコード読取部34を制御する。
具体的には、制御部31は、情報コード読取処理を開始すると(図6のスタート)、ステップS11において初期設定を行う。制御部31は、初期設定を実行すると、カウント時間T、初期値ID0、及び現在値IDxをそれぞれ0に設定する。次に、制御部31は、ステップS12において、カウント時間Tがタイムアウト時間Toに達しているか否かを判断する。カウント時間Tがタイムアウト時間To以上である場合(ステップS12でNO)、制御部31は、情報コード読取処理を終了する(図7のエンド)。一方、カウント時間Tがタイムアウト時間To未満であれば(ステップS12でYES)、制御部31は、ステップS13へ処理を移行する。
ステップS13において、制御部31は、撮像部32及びコード読取部34により情報コード50の画像取得及びスキャンを行う。ステップS13の処理の結果、位置検出パターン521〜523が検出されなかった場合(ステップS14でNO)、制御部31は、ステップS12へ処理を移行する。一方、位置検出パターン521〜523が検出された場合(ステップS14でYES)、制御部31は、ステップS15へ処理を移行し、情報コード50から固有情報57の読み取りを試みる。
固有情報57の読み取りが失敗した場合(ステップS16でNO)、制御部31は、ステップS12へ処理を移行する。一方、固有情報57の読み取りが成功した場合(ステップS16でYES)、制御部31は、ステップS17へ処理を移行する。そして、制御部31は、現在値IDxを、ステップS15で読み取った固有情報57の値に設定する。その後、制御部31は、図7のステップS18へ処理を移行する。
制御部31は、図7のステップS18において、タイマーが作動中であるか否かを判断する。タイマーが停止しているということは、図6のステップS15で読み取った固有情報57が、情報コード読取処理を開始(図6のスタート)してから初めて読み取った固有情報57そのものであることを意味する。そのため、タイマーが停止中であれば(ステップS18でNO)、制御部31は、ステップS19へ処理を移行し、タイマーを始動させる。そして、制御部31は、ステップS20へ処理を移行し、初期値ID0を現在値IDxに設定する。その後、制御部31は、ステップS22へ処理を移行する。
これに対し、ステップS18においてタイマーが作動しているということは、既にステップS19、20を実行したということを意味する。すなわち、ステップS18においてタイマーが作動しているということは、図6のステップS15で読み取った固有情報57が、情報コード読取処理を開始(図6のスタート)してから初めて読み取った固有情報57そのものでないことつまり2回目以降に読み取った固有情報57であることを意味する。そのため、タイマーが作動中である場合(ステップS18でYES)、制御部31は、ステップS21へ処理を移行し、現在値IDxが初期値ID0と等しいか否かを判断する。
ステップS21において現在値IDxが初期値ID0に一致していないということは、2回目以降に検出した固有情報57が最初に検出した固有情報57と異なっていること、すなわち、最初に取得した情報コード50と、現在取得している情報コード50とが異なっていることを意味する。換言すれば、撮像部32に現在翳されている情報コード表示媒体60が、最初に翳された情報コード表示媒体60と異なっていることを意味する。そのため、現在値IDxと初期値ID0とが不一致である場合(ステップS21でNO)、制御部31は、最初に翳された情報コード表示媒体60と異なる情報コード表示媒体60が翳されたと判断する。そして、制御部31は、ステップS22において一般情報56を読み取ることなく図6のステップS12へ処理を移行する。
一方、ステップS21において現在値IDxが初期値ID0に一致しているということは、2回目以降に検出した固有情報57と最初に検出した固有情報57とが同一であること、すなわち、最初に取得した情報コード50と現在取得している情報コード50とが同一であることを意味する。換言すれば、撮像部32に現在翳されている情報コード表示媒体60が、最初に翳された情報コード表示媒体60と同一のものであることを意味する。そのため、現在値IDxと初期値ID0とが一致している場合(ステップS21でYES)、制御部31は、最初に翳された情報コード表示媒体60と同一の情報コード表示媒体60が再度翳されたと判断し、ステップS22へ処理を移行する。
そして、制御部31は、ステップS22において、コード読取部34により、符号化領域55内に配置された一般情報56を読み取る。次に、制御部31は、ステップS23において、ステップS22で一般情報56の読み取りが成功したか否かを判断する。一般情報56の読み取りが失敗した場合(ステップS23でNO)、制御部31は、図6のステップS12へ処理を移行し、再度、ステップS12〜S23の処理を繰り返す。
一方、一般情報56の読み取りが成功した場合(ステップS23でYES)、制御部31は、ステップS24へ処理を移行する。そして、制御部31は、ステップS24において、出力部35により読取結果を出力するとともに、通信部37を介してその読取結果を外部装置40へ送信する。この場合、制御部31は、図8に示すように、コード読取部34による一般情報の読み取りが成功した(図7のステップS23でYES)直後に、読取結果として一般情報56及び固有情報57を出力する(図7のステップS24)。なお、図8の「読取状態」の矢印上部に付した番号は、図6及び図7のステップ番号を意味している。そして、制御部31は、情報コード読取処理を終了する(図7のエンド)。情報コード読取装置30から読取結果を受信した外部装置40は、その読取結果に応じた処理を行う。
以上説明した実施形態によれば、情報コード読取装置30は、撮像部32、コード読取部34、出力部35、及び制御部31を備えている。撮像部32は、情報コード表示媒体60に表示された情報コード50を撮像することが出来る。コード読取部34は、撮像部32によって撮像された情報コード50を読み取ることが出来る。出力部35は、コード読取部34で読み取った情報コード50の読取結果を出力することが出来る。制御部31は、これら撮像部32、コード読取部34、及び出力部35を制御する。情報コード50は、記録対象となる一般情報56と、一般情報56に固有に設定された固有情報57と、を含んでいる。
そして、制御部31は、コード読取部34が位置検出パターン521〜523を検出した後(ステップS14でYES)、コード読取部34が固有情報57の読み取りに成功し(図6のステップS16でYES)かつ一般情報56の読み取りに成功した場合(図7のステップS23でYES)、その読取結果を出力する(ステップS24)。一方、制御部31は、コード読取部34が位置検出パターン521〜523を検出した後(ステップS14でYES)、コード読取部34が固有情報57の読み取りに成功し(図6のステップS16でYES)かつ一般情報56の読み取りに失敗した場合(図7のステップS23でNO)、読み取りに成功した固有情報57と異なる固有情報57を有する情報コード50については一般情報56を読み取らないようにコード読取部34を制御する(図7のステップS21でNO)。
これによれば、最初に翳された情報コード50について一般情報56の読み取りに失敗し(図7のステップS23)、その後、最初の情報コード50の一般情報56を読み取ることなく更に別の情報コード表示媒体60が翳された場合(図7のステップS21でYES)に、次のような作用効果を奏する。すなわち、情報コード50は一般情報56に固有の固有情報57を有している。そのため、この場合、後に翳された情報コード50が有する固有情報57と、最初に翳された情報コード50が有する固有情報57とは一致しない。したがって、制御部31は、後に翳された情報コード50の一般情報56を読み取らないようにコード読取部34を制御する。これにより、情報コード50について一般情報56の読み取りに失敗した後に、その読み取りに失敗した情報コード50と異なる情報コード50の一般情報56を読み取ってしまうことを防ぐことができる。その結果、例えば情報コード読取装置30を改札機に組み込んだものにおいて、複数のユーザが連続して改札機を通過した場合であっても、改札機は、後のユーザが翳した情報コード50によって先のユーザを通過させてしまう、といった事態を抑制することができる。
制御部31は、コード読取部34が固有情報57の読み取りに成功し(図6のステップS16でYES)かつ一般情報56の読み取りに失敗した場合(図7のステップS23でNO)に、所定期間T0が経過するまでは(図6のステップS12でYES)、読み取りに成功した固有情報57と異なる固有情報57を有する情報コード50については一般情報56を読み取らないようにコード読取部34を制御する。これによれば、情報コード読取装置30が一般情報56の読み取りに失敗した場合であっても、情報コード読取装置30単体によって読取処理を継続することができる。したがって、外部装置40による処理の増大を抑制することができ、その結果、外部装置40の負荷を抑制することができる。
また、上記実施形態による情報コード生成方法は、図5に示すように、所定のコード領域51の内部に予め設定された形状の機能パターン521〜523、53と符号化した一般情報56とを配置するとともに、コード領域51の内部に符号化した固有情報57を配置して情報コード50を生成する。これによれば、例えば従来のQRコードの構成を大きく変えることなく、固有情報57を有した情報コード50を容易に生成することができる。
ここで、例えば固有情報57が乱数によって設定される場合、極めて希ではあるものの、異なる一般情報56に対して偶然にも同一の固有情報57が発番される可能性が存在する。したがって、この場合、同一の固有情報57が生成される可能性を許容するか、又は、固有情報57を生成する情報コード生成装置20が過去に生成された固有情報57と新たに生成した固有情報57とを照合し、一致する場合には固有情報57を生成し直す等の処理が必要になる。そして、後者の処理を行う場合、情報コード生成装置20が印刷装置であって、その印刷装置が複数台存在すると、過去に生成された固有情報57を相互の印刷装置で共有する必要がある。その結果、複数の情報コード生成装置20の相互間で通信が必要となってシステム全体が複雑化する。
そこで、上記実施形態による情報コード生成方法において、固有情報57は、装置識別子572及び連番号573を含んでいても良い。装置識別子572は、情報コード50を情報コード表示媒体60に印刷する印刷装置20この場合情報コード生成装置20を識別するための識別子である。連番号573は、印刷装置20によって印刷された順番を示す番号である。これによれば、印刷装置つまり情報コード生成装置20が複数台存在する場合であっても、各情報コード生成装置20間で少なくとも装置識別子572が異なるため、各情報コード生成装置20間で同一の固有情報57が生成されることがない。そのため、各情報コード生成装置20間で通信等を行うことなく、情報コード生成装置20単体で固有情報57の生成を管理でき、その結果、システム全体が複雑化することを抑制できる。
上記実施形態による情報コード生成方法は、機能パターン521〜523と一般情報56と固有情報57とを2次元コードで構成する。これによれば、固有情報57を例えば従来のQRコードに含めることができるため、固有情報57を含む情報コード50の生成が容易になる。
この場合、情報コード50を構成する2次元コードはQRコードである。そして、情報コード生成方法は、固有情報57を、符号化領域55内において符号化領域55と位置検出パターン521〜523とを分離する分離パターン541〜543に隣接して配置する。つまり、固有情報57は、位置検出パターン521〜523の近傍に配置されている。これによれば、情報コード50の一部がユーザの指等によって隠されていた場合であっても、位置検出パターン521〜523が検出されれば、位置検出パターン521〜523の近傍に配置された固有情報57も同時に検出され易くなる。したがって、情報コード50のうち少なくとも固有情報57が正常に読み取られる確率を向上させることができる。
また、上記実施形態による情報コード生成方法は、同一内容の固有情報57を少なくとも2か所に配置する。すなわち、上記実施形態では、同一内容の固有情報57が、符号化領域55内において第1固有情報領域551と第2固有情報領域552との2か所に分散して配置されている。これによれば、情報コード読取装置30は、一方の固有情報57がユーザの指等によって隠されていた場合であっても、他方の固有情報57を読み取ることができる。したがって、情報コード50のうち少なくとも固有情報57が正常に読み取られる確率を更に向上させることができる。
(第2実施形態)
次に、第2実施形態について図9及び図10を参照して説明する。
第2実施形態において、制御部31は、図9及び図10に示す情報コード読取処理を実行する。図9及び図10に示す情報コード読取処理は、図6のステップS12、及び図7のステップS18、19に換えて、図9に示すステップS31、S32、及び図10に示すステップS33を有している。
すなわち、制御部31は、情報コード読取処理の実行を開始し(図9のスタート)、初期設定を行うと(ステップS11)、ステップS31において初期値ID0が0であるか否かを判断する。初期値ID0が0であることは、情報コード読取処理が開始されてから現在に至るまでに未だ図10のステップS20が実行されていないこと、即ち固有情報57が読み取られていないことを意味する。逆を言えば、初期値ID0が0と異なる値であることは、既にステップS20〜ステップS23が実行されていることを意味する。つまり、初期値ID0が0と異なる値であることは、情報コード読取処理が開始されてから現在に至るまでに既に固有情報57の読み取りが成功し(図9のステップS16でYES)、かつ、一般情報56の読み取りが失敗している(図10のステップS23でNO)ことを意味する。
図9のステップS31において初期値ID0が0と異なる値である場合(ステップS31でNO)、制御部31は、第1実施形態と同様にステップS13〜ステップS17を実行した後、図10のステップS33へ処理を移行する。そして、制御部31は、ステップS33において、初期値ID0が0であるか否かを判断する。初期値ID0が0である場合(ステップS33でYES)、制御部31は、ステップS20において初期値ID0を現在値IDxに設定する。その後、制御部31は、ステップS21へ処理を移行する。一方、初期値ID0が0でない場合(ステップS33でNO)、制御部31は、ステップS20を実行することなく、つまり初期値I0を維持した状態で、ステップS21へ処理を移行する。
制御部31は、第1実施形態と同様にステップS21〜ステップS23を実行する。この場合、現在値IDxが初期値ID0と異なる場合(ステップS21でNO)、又は一般情報56の読み取りが失敗した場合(ステップS23でNO)、制御部31は、図9のステップS31へ処理を移行し、再度、ステップS31以降の処理を繰り返す。また、現在値IDxが初期値ID0と同一であり(図10のステップS21でYES)、かつ、一般情報56の読み取りが成功した場合(ステップS23でYES)、制御部31は、ステップS24へ処理を移行する。そして、制御部31は、ステップS24において、出力部35により読取結果を出力するとともに、通信部37を介してその読取結果を外部装置40へ送信する。そして、制御部31は、処理を終了する(エンド)。
これに対し、図9のステップS31において、初期値ID0が0と異なる値である場合(ステップS31でNO)、制御部31は、ステップS32へ処理を移行する。そして、制御部31は、受信部36が外部装置40から初期値ID0のクリア指令を受信したか否かを判断する。受信部36が初期値ID0のクリア指令を受信していない場合(ステップS32でNO)、制御部31は、上述したように、ステップS13以降を実行する。一方、受信部36が初期値ID0のクリア指令を受信した場合(ステップS32でYES)、制御部31は、情報コード読取処理を終了する(図10のエンド)。
このように、本実施形態において、制御部31は、コード読取部34が固有情報57の読み取りに成功し(ステップS16でYES)かつ一般情報56の読み取りに失敗した場合(図10のステップS23でNO)に、受信部36が外部装置40からの指令を受けるまで(図9のステップS32でYES)は、読み取りに成功した固有情報57と異なる固有情報57を有する情報コード50については一般情報56を読み取らないようにコード読取部34を制御する(ステップS21でNO)。
これによれば、上記第1実施形態と同様の作用効果が得られる。
(第3実施形態)
次に、第3実施形態について図11〜図15を参照して説明する。なお、図13〜図15の「読取状態」の矢印上部に付した番号は、図11及び図12のステップ番号を意味している。
本実施形態において、制御部31は、図13〜図15に示すように、出力部35から出力される出力内容に、読取結果に含まれる情報の種類を識別する情報識別子581、582を付加する。制御部31は、例えば図13に示すように、固有情報57及び一般情報56の読み取りに成功した場合に、固有情報57及び一般情報56に第1情報識別子581を付加して出力する。この場合、第1情報識別子581は、固有情報57及び一般情報56の読み取りに成功したことを示すものである。つまり、第1情報識別子581は、出力部35から出力された内容に、固有情報57及び一般情報56が含まれていることを示すものである。
また、制御部31は、例えば図14及び図15に示すように、固有情報57の読み取りには成功したが一般情報56の読み取りに失敗した場合に、固有情報57に第2情報識別子582を付加して出力する。この場合、第2情報識別子582は、一般情報56の読み取りに失敗したことを示すものである。つまり、第2情報識別子582は、出力部35から出力された内容に、一般情報56が含まれていないことを示すものである。
また、制御部31は、図14及び図15に示すように、コード読取部34が固有情報57を読み取ってから第1期間T1が経過しても一般情報56を読み取れなかった場合には出力部35から固有情報57を出力する。そして、制御部31は、出力部35から固有情報57を出力した後は、位置検出パターン521〜523が未検出状態になることなく位置検出パターン521〜523の検出有り状態が継続している間は、出力部35から固有情報57を出力しない。また、制御部31は、出力部35から固有情報57を出力した後は、位置検出パターン521〜523の未検出状態が第2期間T2以上継続した後に更に固有情報57の読み取りが成功し、その後、第1期間T1が経過しても一般情報56を読み取れなかった場合に、出力部35から固有情報57を再度出力する。
この場合、第2期間T2は、第1期間T1よりも長い期間である。例えば第2期間T2は、情報コード表示媒体60を情報コード読取装置30に翳したユーザが、その情報コード表示媒体60を情報コード読取装置30から一度離してから再度翳すまでの期間として想定される期間であり、例えば1秒程度である。第1期間T1は、第2期間T2よりも短い期間であり、例えば0.5秒程度である。
本実施形態において、制御部31は、図11及び図12に示す情報コード読取処理を実行する。図11に示す処理内容は、図6又は図9の処理内容に加えて、ステップS41、S42を有している。なお、図11では、ステップS13以降の処理を示している。この場合、図11の処理内容において、ステップS13以前の処理内容は、図6に示すものつまりステップS11〜S13であっても良いし、図9に示すものつまりステップS11、S31、S32であっても良い。
また、図12に示す処理内容は、図7又は図10に示す処理内容に加えて、ステップS43〜S47を有している。なお、図12では、ステップS22以降の処理を示している。この場合、図12の処理内容において、ステップS22以前の処理内容は、図7に示すものつまりステップS18〜S21であっても良いし、図10に示すものつまりステップS33、S20、S21であっても良い。また、図12に示す処理内容では、図7又は図10のステップS24に換えて、ステップS43、S47を有している。
具体的には、制御部31は、図6のステップS11、S12、又は図9のステップS11、S31、S32を実行し、更に図11に示すステップS13、S14を実行する。この場合、制御部31は、ステップS11の初期設定において変数Fを0に設定する。変数Fは、出力部35から固有情報57の出力を許可するか否かを決定するものである。変数Fが0である場合、制御部31は、出力部35から固有情報57の出力を許可する。一方、変数Fが0と異なる値である場合、制御部31は、出力部35から固有情報57の出力を許可しない。
図11のステップS13の処理の結果、位置検出パターン521〜523が検出されなかった場合(ステップS14でNO)、制御部31は、ステップS41へ処理を移行する。制御部31は、ステップS41において、位置検出パターン521〜523の未検出状態が第2所定期間T2以上継続しているか否かを判断する。位置検出パターン521〜523の未検出状態が第2所定期間T2以上継続している場合(ステップS41でYES)、制御部31は、ステップS42において変数Fを0に設定する。その後、制御部31は、図6のステップS12又は図9のステップS31へ処理を移行する。
一方、位置検出パターン521〜523の未検出状態が第2所定期間T2以上継続していない場合(図11のステップS41でNO)、制御部31は、ステップS42を実行することなく、図6のステップS12又は図9のステップS31へ処理を移行する。つまり、位置検出パターン521〜523の未検出状態となっていない場合、又は位置検出パターン521〜523の未検出状態が第2所定期間T2未満で終了した場合には、制御部31は、ステップS42を実行しない。
また、図12のステップS23において、制御部31は、ステップS22で行った一般情報56の読み取りが成功したか否かを判断する。一般情報56の読み取りが成功した場合(ステップS23でYES)、制御部31は、ステップS43へ処理を移行する。そして、ステップS43において、制御部31は、図13に示すように、一般情報56及び固有情報57に加えて第1情報識別子581を、出力部35から出力する。
一方、一般情報56の読み取りが失敗した場合(ステップS23でNO)、制御部31は、ステップS44へ処理を移行する。そして、ステップS44において、制御部31は、最初に一般情報56の読み取りを失敗してから第1期間T1が経過したか否かを判断する。ここで、「最初に一般情報56の読み取りを失敗」とは、情報コード読取処理を開始(スタート)してから初めて位置検出パターン521〜523を検出し(図11のステップS14でYES)、その後初めて一般情報56の読み取りに失敗した場合(図12のステップS23でNO)を意味する。
最初に一般情報56の読み取りを失敗してから第1期間T1が経過していない場合(ステップS44でNO)、制御部31は、ステップS45〜S47を実行することなく、図6のステップS12又は図9のステップS31へ処理を移行する。つまり、最初に一般情報56の読み取りを失敗してから(ステップS23でNO)、第1期間T1が経過することなく(ステップS44でNO)、再度、一般情報56の読み取りに失敗した場合(ステップS23でNO)、制御部31は、ステップS45〜S47を実行することなく、図6のステップS12又は図9のステップS31へ処理を移行する。
一方、最初に一般情報56の読み取りを失敗してから第1期間T1が経過した場合(ステップS44でYES)、制御部31は、ステップS45へ処理を移行する。ステップS45において、制御部31は、変数Fが0であるか否かを判断する。変数Fが0であることは、未だステップS46、S47を実行しておらず固有情報57が出力されていないか、又はステップS46、S47を実行して固有情報57が出力されたが、その後、位置検出パターン521〜523の未検出状態が第2期間T2以上継続されて(図11のステップS41でYES)、変数Fが0にリセットされた(ステップS42)ことを意味する。そのため、変数Fが0である場合(ステップS45でYES)、制御部31は、ステップS46において、図14又は図15に示すように、固有情報57に加えて第2情報識別子582を、出力部35から出力する。
また、変数Fが0と異なる値であることは、既にステップS46、47が実行されて固有情報57が出力されておりかつ位置検出パターン521〜523の未検出状態となっていないこと、又は既にステップS46、47が実行されて固有情報57が出力されておりかつ位置検出パターン521〜523の未検出状態となっても第2期間T2以上継続していないことを意味する。そのため、変数Fが0でない場合(図12でステップS45でNO)、制御部31は、ステップS46、S47を実行することなく、つまり固有情報57を出力することなく、図6のステップS12又は図9のステップS31へ処理を移行する。
つまり、既にステップS46、47が実行されて固有情報57が出力されておりかつ位置検出パターン521〜523の未検出状態となっていない場合、又は既にステップS46、47が実行されて固有情報57が出力されておりかつ位置検出パターン521〜523の未検出状態となっても第2期間T2以上継続していない場合には、制御部31は、出力部35から第2識別情報582及び固有情報57を出力しない。
このように、本実施形態において制御部31は、出力部35から出力される出力内容に、読取結果に含まれる情報の種類を識別する情報識別子581、582を付加する。これによれば、情報コード読取装置30から読取結果を受信した外部装置40は、その読取結果に付加された情報識別子581、582を見ることで、その読取結果に含まれる情報の種類を判別でき、便利である。
ここで、例えばユーザの指等によって符号化領域55の一部が隠された状態で、ユーザが情報コード表示媒体60を情報コード読取装置30に翳したままにすると、次のような問題が生じる。すなわち、この場合、情報コード読取装置30は、ユーザが情報コード表示媒体60を翳している間中、固有情報57及び一般情報56の読み取りを行うことになる。そして、一般情報56の読み取りを失敗する度に、固有情報57を出力する構成にすると、出力部35は、一般情報56の読み取りが成功するまでの間、固有情報57を出力し続けることになる。すると、外部装置40が受信する情報量が増えて外部装置40の処理が複雑化する。
そこで、本実施形態において、制御部31は、固有情報57の読み取りが成功し(図11のステップS16でYES)、その後、第1期間T1が経過しても一般情報56を読み取れなかった場合に(図12のステップS23でNO、かつ、ステップS44でYES)、出力部35から固有情報57を出力する。したがって、制御部31は、一般情報56の読み取りを失敗する度に、固有情報57を出力することがない。つまり、制御部31は、一旦固有情報57を出力してしまえば、一般情報56の読み取りが成功するまでの間、固有情報57を出力し続ける、といったことがない。したがって、外部装置40が受信する情報量の増加を抑制することができ、その結果、外部装置40の処理の複雑化を防止し処理の負荷を低減させることができる。
また、情報コード読取装置30に対して情報コード表示媒体60が翳された回数は、情報コード読取装置30や外部装置40の制御を行ううえで有用な情報である。ここで、位置検出パターン521〜523が未検出状態になることなく位置検出パターン521〜523の検出有り状態が継続しているということは、一度翳された情報コード50が情報コード読取装置30から離されていないこと、つまり翳し動作が一度しか行われていないことを意味する。そこで、制御部31は、出力部35から固有情報57を出力した後は、位置検出パターン521〜523が未検出状態になることなく位置検出パターン521〜523の検出有り状態が継続している間は、出力部35から固有情報57を出力しない。
また、位置検出パターン521〜523が未検出状態になった後に再度位置検出パターン521〜523の検出有り状態になるということは、情報コード表示媒体60が翳し直された可能性がある。そこで、制御部31は、出力部35から固有情報57を出力した後は、位置検出パターン521〜523の未検出状態が第2期間T2以上継続した後に更に固有情報57の読み取りが成功し、その後、第1期間T1が経過しても一般情報56を読み取れなかった場合に、出力部35から固有情報57を再度出力する。
この場合、位置検出パターン521〜523が未検出状態になった後に再度位置検出パターン521〜523の検出有り状態になったというだけでは、単なる読取不良なのか、又は翳し動作が行われたかを判断することができない。そのため、制御部31は、第2期間T2を、翳し動作をやり直すために必要な時間、例えば1秒程度に設定している。そして、制御部31は、未検出状態が第2期間T2以上継続したことを、固有情報57を再度出力の条件の1つとしている。
これによれば、固有情報57が出力された回数を、情報コード表示媒体60が翳された回数と擬制することができる。したがって、外部装置40は、情報コード読取装置30から受信した固有情報57の回数を計測することで、ユーザが情報コード表示媒体60を翳した回数を疑似的に把握することができる。
(第4実施形態)
次に、第4実施形態について図16を参照して説明する。
第4実施形態では、情報コード50に配置した固有情報57の構成が、上記各実施形態のものと異なる。本実施形態において、情報コード生成装置20は、符号化した固有情報57としてバーコード591、592を生成する。この場合、2つのバーコード591、592の一方を第1バーコード591と称し、他方を第2バーコード592と称する。第1バーコード691及び第2バーコード592は、いずれも同一内容の固有情報57を示すものである。
本実施形態において、情報コード50を構成する2次元コードは、例えばQRコードである。そして、情報コード生成装置20は、2つのバーコード591、592を、それぞれ符号化領域55外において符号化領域55に隣接する位置であって、2つの位置検出パターン間に配置する。つまり、情報コード生成装置20は、バーコード591、592を、QRコードのコード領域51外において、QRコードのコード領域51に接する位置に配置する。この場合、第1バーコード591は、第1位置検出パターン521と第3位置検出パターン523との間に配置される。また、第2バーコード592は、第2位置検出パターン521と第3位置検出パターン523との間に配置される。
これによれば、固有情報57は、バーコード591、592として符号化領域55外に配置されている。したがって、符号化領域55内に固有情報57を配置することによる一般情報56の情報量の低下を抑制することができる。つまり、本実施形態によれば、一般情報56に対する情報コード50のサイズを小さくすることができる。
また、バーコード591、592は、それぞれ2つの位置検出パターン間、つまり第1位置検出パターン521と第3位置検出パターン523との間及び第2位置検出パターン521と第3位置検出パターン523との間に配置されている。つまり、バーコード591、592は、各位置検出パターン521〜523のいずれにも隣接していない。
ここで、位置検出パターン521〜523に隣接してバーコード591、592を配置するためには、バーコード591、592と位置検出パターン521〜523との間に一定のクワイエットゾーンつまり余白を設ける必要がある。一方、図16に示すように、バーコード591、592を、QRコードのコード領域51外でかつ符号化領域55外に配置する場合であれば、バーコード591、592と符号化領域55との間にクワイエットゾーンを設ける必要がない。そして、バーコード591、592を、QRコードのコード領域51外でかつ位置検出パターン521〜523間に設けることで、バーコード591、592と位置検出パターン521〜523との距離を極力近づけることができる。つまり、バーコード591、592をコード領域51外に配置したことによるバーコード591、592の読み取り性能の低下を極力避けることができる。
以上、本発明の複数の実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。