(58)【調査した分野】(Int.Cl.,DB名)
【発明の概要】
【発明が解決しようとする課題】
【0007】
特許文献1及び特許文献2の技術では、隠蔽される情報である復号鍵情報がコードパターンの図形上において元のコードのそれとは異なる「変形セル」や「明暗パターン」として生成される。そして、図形上において対象となる所定の領域または位置での置き換え(すなわち、上書き)操作がなされる。
【0008】
これら技術において、二次元コードの復号化に利用される鍵情報そのものは暗号化されない。そのため、同一の暗号鍵を適用するコード生成体系を持つ場合には、同一の「パターン」が同じ場所に現れる。よって、図形としてのコードパターンを注意深く観察することで情報パターンの隠蔽が疑われる可能性がある。このことは、異形の「変形セル」の場合も同様である。
【0009】
また、上記鍵の「パターン」の置かれる場所がコード図形上の複数の場所にあったとしても、図形パターン上に上書きで置き換えられる方式のために、置き換え場所が図形パターン上での位置があらかじめ規定されている。そのため、同一の鍵情報が適用された二次元コードのサンプルを複数重ね合わせることで「不動な箇所」を認識できてしまう。
【0010】
また、上記技術では、エンコード処理において、上書きするためのパターン図形を生成するための特別な処理が別途必要となる。このような処理は、複雑であり、処理の高速化に際して障害となる。
【0011】
特許文献3では、開示するデータを表すコード語としてコード化されたデータコード語の総数が二次元コード生成のための所定のコード語総数よりも小さい場合に、上記コード領域の後ろに終端符号を置き、本来終端符号のあとに置かれるパディングコード(埋め草コード)の一部に代えて秘匿データコードを配置してコード図形を生成することが開示されている。
【0012】
上記技術によれば、本来パディングコードとして規定されるコードパターンとは別のデータコードがパディングコード領域に配置されることになる。そのため、このようなコードは、非特許文献1のようなパディングコードのコードパターンが規定されるような規格に基づいたコード形式に準ずる標準汎用のデコーダからすれば、規格外の形式のコードとなる。そうすると、本来表示対象ではないデータ領域に規定外のデータコードが混入することになるから、標準汎用のデコーダにおいて想定外の挙動を示す恐れがある。
【0013】
また、開示する情報量よりサイズの大きな情報の場合はもとより、それと同程度のサイズの情報を秘匿する場合、標準のデコード処理で得られるはずの開示情報量と比較して不釣合いに大きなサイズの二次元コードとなることがある。そうすると、この二次元コードの利用者に不信感を与えたり情報秘匿を疑わせ得ることになる。
【0014】
以上のようなことから、開示対象である情報の他に秘匿対象である情報を隠蔽することができる新たな二次元コードが望まれる。また、この新たな二次元コードについて、適切に秘匿対象である情報を読み取ることが望まれる。
【0015】
本発明は、このような事情に鑑みてなされたものであり、開示対象である情報の他に秘匿対象である情報を隠蔽することのできる二次元コードを提供することを目的とする。また、新たな二次元コードから適切に秘匿対象である情報を読み取ることを目的とする。
【課題を解決するための手段】
【0021】
このような目的を達成するために本発明に係る二次元コード生成方法は、
第1の情報を含む第1データコード語と、前記第1データコード語の誤りを検出し訂正しうる誤り訂正コード語と、を含むデータブロックを求めることと、前記データブロックの一部を第2の情報を含む第2データコード語で置換した置換後データブロックを求めることと、前記置換後データブロックに基づいて二次元コードを生成することと、を含み、前記置換後データブロックは、前記置換後データブロックにおける前記第2データコード語の配置情報を含むヘッダデータコード語を備え、前記置換後データブロックにおいて、前記第2データコード語の一部が前記ヘッダデータコード語で置換されており、前記第2データコード語には、当該第2データコード語に生じた誤りを検出し訂正しうる誤り訂正コード語が含まれている。
このようにして生成された二次元コードによれば、ヘッダデータコード語に基づいて第2データコード語の位置を特定することができるとともに、第2データコード語は誤り訂正コードにおいてヘッダデータコード語で置換された部分の訂正を行うことができる。これにより、第2データコード語から適切に第2の情報を求めることができる。
【0022】
また、本発明に係る二次元コード生成方法は、第1の情報を含む第1データコード語と、前記第1データコード語の誤りを検出し訂正しうる誤り訂正コード語と、を含むデータブロックを求めることと、前記データブロックの一部を第2の情報を含む第2データコード語で置換した置換後データブロックを求めることと、前記置換後データブロックに基づいて二次元コードを生成することと、を含み、前記第1データコード語の一部に、前記置換後データブロックにおける前記第2データコード語の配置情報を含むヘッダデータコード語を含む。
このようにして生成された二次元コードによれば、置換後データブロックに含まれる誤り訂正コード語に基づいて第1データコード語を求めることができる。そして、第1データコード語に含まれるヘッダデータコード語に基づいて、置換後データブロックにおける第2データコード語の位置を特定することができる。このようにすることで、第2データコード語を適切に抽出し、第2データコード語から第2の情報を抽出することができる。これにより、より隠蔽性を高めることもできる。
【0023】
また、本発明に係る二次元コード生成方法は、第1の情報を含む第1データコード語と、前記第1データコード語の誤りを検出し訂正しうる誤り訂正コード語と、を含むデータブロックを求めることと、前記データブロックの一部を第2の情報を含む第2データコード語で置換した置換後データブロックを求めることと、前記置換後データブロックに基づいて二次元コードを生成することと、を含み、前記置換後データブロックは、前記置換後データブロックにおける前記第2データコード語の配置情報を含むヘッダデータコード語を備え、
前記第1データコード語の一部に、前記置換後データブロックにおける前記ヘッダデータコード語の配置情報を含むヘッダ位置データコード語を含む。
このようにして生成された二次元コードによれば、置換後データブロックに含まれる誤り訂正コード語に基づいて第1データコード語を求めることができる。そして、第1データコード語に含まれるヘッダ位置データコード語に基づいて、置換後データブロックに含まれるヘッダデータコード語の位置を特定することができる。さらに、特定したヘッダデータコード語の位置からヘッダデータコード語を抽出し、ヘッダデータコード語に基づいて、第2データコード語の位置を特定することができる。そして、第2データコード語に基づいて、第2の情報を抽出することができる。これにより、より隠蔽性を高めることもできる。
【0024】
また、本発明に係る二次元コード生成方法は、第1の情報を含む第1データコード語と、前記第1データコード語の誤りを検出し訂正しうる誤り訂正コード語と、を含むデータブロックを求めることと、前記データブロックの一部を第2の情報を含む第2データコード語で置換した置換後データブロックを求めることと、前記置換後データブロックに基づいて二次元コードを生成することと、を含み、前記二次元コードは所定のマスクパターンでマスキングされており、前記置換後データブロックを求めることは、前記所定のマスクパターンを特定するマスクパターン参照子に基づいて前記データブロックにおける置換位置を特定し、前記置換位置で前記データブロックの一部を前記第2データコード語で置換することを含む。
このようにすることで、二次元コードに適用されたマスクパターンを特定するマスクパターン参照子が、第2データコード語で置換する位置を特定することにも用いられる。マスクパターンは複数種類存在するためマスクパターン参照子も複数の値を有し得る。そのため、適用されるマスクパターンに応じて第2データコード語で置換する位置も変化させることができる。これにより、第三者にとっては第2データコード語の位置を特定することが困難となり、第2データコード語に含まれる第2の情報の抽出をより困難なものとすることができる。
【0025】
また、本発明に係る二次元コード生成方法は、第1の情報を含む第1データコード語と、前記第1データコード語の誤りを検出し訂正しうる誤り訂正コード語と、を含むデータブロックを求めることと、前記データブロックの一部を第2の情報を含む第2データコード語で置換した置換後データブロックを求めることと、前記置換後データブロックに基づいて二次元コードを生成することと、を含み、前記置換後データブロックは、前記置換後データブロックにおける前記第2データコード語の配置情報を含むヘッダデータコード語を備え、前記二次元コードは所定のマスクパターンでマスキングされており、前記置換後データブロックを求めることは、前記所定のマスクパターンを特定するマスクパターン参照子に基づいて前記データブロックにおける置換位置を特定し、前記置換位置で前記データブロックの一部を前記ヘッダデータコード語で置換するとともに、前記ヘッダデータコード語で特定される位置で前記データブロックの一部を前記第2データコード語で置換することを含む。
このようにすることで、二次元コードに適用されたマスクパターンを特定するマスクパターン参照子が、ヘッダデータコード語で置換する位置を特定することにも用いられる。マスクパターンは複数種類存在するためマスクパターン参照子も複数の値を有しうる。そのため、適用されるマスクパターンに応じてヘッダデータコード語で置換する位置も変化させることができる。これにより、第三者にとってはヘッダデータコード語の位置の特定すら困難となる。第2データコード語の位置はヘッダデータコード語で特定されるものであるため、第2データコード語の抽出をより困難なものとすることができる。
【0026】
また、前記二次元コードはQRコードであり、前記マスクパターン参照子は、前記QRコードの形式情報に含まれることが望ましい。
QRコードにおける形式情報は、JIS規格において標準マスクパターン(所定のマスクパターン)でマスキングされない。そのため、QRコードを読み出すことで適切に形式情報に含まれるマスクパターン参照子を読み出すことができる。そして、マスクパターン参照子で特定される所定のマスクパターンを用いて、マスキングを解除することができる。また、マスキングを解除した後に得られる置換後データコード語において、マスクパターン参照子を用いて第2データコード語の位置またはヘッダデータコード語の位置を適切に特定することができる。
【0027】
また、本発明に係る二次元コード生成方法は、第1の情報を含む第1データコード語と、前記第1データコード語の誤りを検出し訂正しうる誤り訂正コード語と、を含むデータブロックを求めることと、前記データブロックの一部を第2の情報を含む第2データコード語で置換した置換後データブロックを求めることと、前記置換後データブロックに基づいて二次元コードを生成することと、を含み、前記置換後データブロックを求めることは、前記誤り訂正コード語に基づいて前記データブロックにおける置換位置を特定し、前記置換位置で前記データブロックの一部を前記第2データコード語で置換することを含む。
誤り訂正コード語は、第1データコード語に基づいて求められる。そのため、第1データコード語が異なれば、誤り訂正コード語も異なることになる。よって、誤り訂正コード語に基づいて置換位置を特定することで、第1データコード語が異なれば置換位置も異なることとなるので、第三者にとっては第2データコード語の位置を特定することが困難となり、第2データ語に含まれる第2の情報の抽出をより困難なものとすることができる。
【0028】
また、本発明に係る二次元コード生成方法は、第1の情報を含む第1データコード語と、前記第1データコード語の誤りを検出し訂正しうる誤り訂正コード語と、を含むデータブロックを求めることと、前記データブロックの一部を第2の情報を含む第2データコード語で置換した置換後データブロックを求めることと、前記置換後データブロックに基づいて二次元コードを生成することと、を含み、前記置換後データブロックは、前記置換後データブロックにおける前記第2データコード語の配置情報を含むヘッダデータコード語を備え、前記置換後データブロックを求めることは、前記誤り訂正コード語に基づいて前記データブロックにおける置換位置を特定し、前記置換位置で前記データブロックの一部を前記ヘッダデータコード語で置換するとともに、前記ヘッダデータコード語で特定される位置で前記データブロックの一部を前記第2データコード語で置換することを含む。
誤り訂正コード語は、第1データコード語に基づいて求められる。そのため、第1データコード語が異なれば、誤り訂正コード語も異なることになる。よって、誤り訂正コード語に基づいて置換位置を特定することで、第1データコード語が異なれば置換位置も異なることとなるので、第三者にとってはヘッダデータコード語の位置を特定することすら困難となる。第2データコード語の位置はヘッダデータコード語で特定されるものであるため、第2データコード語の抽出をより困難なものとすることができる。
【0039】
また、本発明に係る二次元コード読み取り方法は、第1の情報を含む第1データコード語と、前記第1データコード語の誤りを検出し訂正しうる誤り訂正コード語と、を含むデータブロックの一部を第2の情報を含む第2データコード語で置換した置換後データブロックに基づいて生成された二次元コードを読み取ることと、前記置換後データブロックにおける所定の位置から前記第2データコード語を抽出し、当該第2データコード語から前記第2の情報を求めることと、前記置換後データブロックの誤り訂正を行うことにより前記第1データコード語を求め、当該第1データコード語から前記第1の情報を求めることと、を含み、前記置換後データブロックはヘッダデータコード語を含み、前記所定の位置は前記ヘッダデータコード語に基づいて特定され、前記置換後データブロックにおいて、前記第2データコード語の一部が前記ヘッダデータコード語で置換されており、前記第2データコード語には、自己に生じた誤りを検出し訂正しうる誤り訂正コード語が含まれており、前記第2の情報を求めることは、前記ヘッダデータコード語に基づいて前記所定の位置を特定し、特定した前記所定の位置から前記ヘッダデータコード語で一部が置換された前記第2データコード語を求め、前記第2データコード語における誤り訂正コード語に基づいて前記第2データコード語を訂正し、訂正した第2データコード語から前記第2の情報を求めることを含む。
このような二次元コード読み取り方法によれば、ヘッダデータコード語に基づいて第2データコード語の位置を特定することができるとともに、第2データコード語は誤り訂正コードにおいてヘッダデータコード語で置換された部分の訂正を行うことができる。これにより、第2データコード語から適切に第2の情報を求めることができる。
【0040】
また、本発明に係る二次元コード読み取り方法は、第1の情報を含む第1データコード語と、前記第1データコード語の誤りを検出し訂正しうる誤り訂正コード語と、を含むデータブロックの一部を第2の情報を含む第2データコード語で置換した置換後データブロックに基づいて生成された二次元コードを読み取ることと、前記置換後データブロックにおける所定の位置から前記第2データコード語を抽出し、当該第2データコード語から前記第2の情報を求めることと、前記置換後データブロックの誤り訂正を行うことにより前記第1データコード語を求め、当該第1データコード語から前記第1の情報を求めることと、を含み、前記第1データコード語の一部にヘッダデータコード語を含んでおり、前記第2の情報を求めることは、前記置換後データブロックを誤り訂正することにより前記ヘッダデータコード語を求め、前記ヘッダデータコード語に基づいて前記置換後データブロックにおける前記第2データコード語の位置を特定して前記第2データコード語を求め、前記第2データコード語から前記第2の情報を求めることを含む。
このような二次元コード読み取り方法によれば、置換後データブロックに含まれる誤り訂正コード語に基づいて第1データコード語を求めることができる。そして、第1データコード語に含まれるヘッダデータコード語に基づいて、置換後データブロックにおける第2データコード語の位置を特定することができる。このようにすることで、第2データコード語を適切に抽出し、第2データコード語から第2の情報を抽出することができる。これにより、より隠蔽性を高めることができる。
【0041】
また、本発明に係る二次元コード読み取り方法は、第1の情報を含む第1データコード語と、前記第1データコード語の誤りを検出し訂正しうる誤り訂正コード語と、を含むデータブロックの一部を第2の情報を含む第2データコード語で置換した置換後データブロックに基づいて生成された二次元コードを読み取ることと、前記置換後データブロックにおける所定の位置から前記第2データコード語を抽出し、当該第2データコード語から前記第2の情報を求めることと、前記置換後データブロックの誤り訂正を行うことにより前記第1データコード語を求め、当該第1データコード語から前記第1の情報を求めることと、を含み、前記置換後データブロックはヘッダデータコード語を含み、前記所定の位置は前記ヘッダデータコード語に基づいて特定され、前記第1データコード語の一部に前記ヘッダデータコード語の配置位置を示すヘッダ位置データコード語を含んでおり、前記第2の情報を求めることは、前記置換後データブロックを誤り訂正することにより前記第1データコード語に含まれる前記ヘッダ位置データコード語を求め、抽出した前記ヘッダ位置データコード語に基づいて前記ヘッダデータコード語の位置を特定して前記ヘッダデータコード語を求め、前記ヘッダデータコード語に基づいて前記置換後データブロックにおける前記第2データコード語の位置を特定して前記第2データコード語を求め、前記第2データコード語から前記第2の情報を求めることを含む。
このような二次元コード読み取り方法によれば、置換後データブロックに含まれる誤り訂正コード語に基づいて第1データコード語を求めることができる。そして、第1データコード語に含まれるヘッダ位置データコード語に基づいて、置換後データブロックに含まれるヘッダデータコード語の位置を特定することができる。さらに、特定したヘッダデータコード語の位置からヘッダデータコード語を抽出し、ヘッダデータコード語に基づいて、第2データコード語の位置を特定することができる。そして、第2データコード語に基づいて、第2の情報を抽出することができる。これにより、より隠蔽性を高めることができる。
【0042】
また、本発明に係る二次元コード読み取り方法は、第1の情報を含む第1データコード語と、前記第1データコード語の誤りを検出し訂正しうる誤り訂正コード語と、を含むデータブロックの一部を第2の情報を含む第2データコード語で置換した置換後データブロックに基づいて生成された二次元コードを読み取ることと、前記置換後データブロックにおける所定の位置から前記第2データコード語を抽出し、当該第2データコード語から前記第2の情報を求めることと、前記置換後データブロックの誤り訂正を行うことにより前記第1データコード語を求め、当該第1データコード語から前記第1の情報を求めることと、を含み、前記二次元コードは所定のマスクパターンでマスキングされており、前記二次元コードを読み取ることは、前記二次元コードに適用された前記所定のマスクパターンを特定するマスクパターン参照子を読み取ることを含み、前記置換後データブロックにおける所定の位置から前記第2データコード語を抽出することは、前記マスクパターン参照子に基づいて前記置換後データブロックにおける置換位置を特定し、前記置換後データブロックにおける前記置換位置から前記第2データコード語を抽出することを含む。
このようにすることで、二次元コードに適用されたマスクパターンを特定するマスクパターン参照子が、第2データコード語で置換された位置を特定することにも用いられる。マスクパターンは複数種類存在するためマスクパターン参照子も複数の値を有し得る。そのため、適用されるマスクパターンに応じて第2データコード語で置換される位置も変化させられる。これにより、第三者にとっては第2データコード語の位置を特定することが困難となり、第2データコード語に含まれる第2の情報の抽出をより困難なものとすることができる。
【0043】
また、本発明に係る二次元コード読み取り方法は、第1の情報を含む第1データコード語と、前記第1データコード語の誤りを検出し訂正しうる誤り訂正コード語と、を含むデータブロックの一部を第2の情報を含む第2データコード語で置換した置換後データブロックに基づいて生成された二次元コードを読み取ることと、前記置換後データブロックにおける所定の位置から前記第2データコード語を抽出し、当該第2データコード語から前記第2の情報を求めることと、前記置換後データブロックの誤り訂正を行うことにより前記第1データコード語を求め、当該第1データコード語から前記第1の情報を求めることと、を含み、前記置換後データブロックはヘッダデータコード語を含み、前記所定の位置は前記ヘッダデータコード語に基づいて特定され、前記二次元コードは所定のマスクパターンでマスキングされており、前記二次元コードを読み取ることは、前記二次元コードに適用された前記所定のマスクパターンを特定するマスクパターン参照子を読み取ることを含み、前記置換後データブロックにおける所定の位置から前記第2データコード語を抽出することは、前記マスクパターン参照子に基づいて前記置換後データブロックにおける置換位置を特定し、前記置換後データブロックの前記置換位置から前記ヘッダデータコード語を抽出するとともに、前記置換後データブロックの前記ヘッダデータコード語で特定される位置から前記第2データコード語を抽出することを含む。
このようにすることで、二次元コードに適用されたマスクパターンを特定するマスクパターン参照子が、ヘッダデータコード語で置換する位置を特定することにも用いられる。マスクパターンは複数種類存在するためマスクパターン参照子も複数の値を有しうる。そのため、適用されるマスクパターンに応じてヘッダデータコード語で置換される位置も変化させられる。これにより、第三者にとってはヘッダデータコード語の位置の特定すら困難となる。第2データコード語の位置はヘッダデータコード語で特定されるものであるため、第2データコード語の抽出をより困難なものとすることができる。
【0044】
また、本発明に係る二次元コード読み取り方法において、前記二次元コードはQRコードであり、前記マスクパターン参照子は、前記QRコードの形式情報に含まれることが望ましい。
QRコードにおける形式情報は、JIS規格において標準マスクパターン(所定のマスクパターン)でマスキングされない。そのため、QRコードを読み出すことで適切に形式情報に含まれるマスクパターン参照子を読み出すことができる。そして、マスクパターン参照子で特定される所定のマスクパターンを用いて、マスキングを解除することができる。また、マスキングを解除した後に得られる置換後データコード語において、マスクパターン参照子を用いて第2データコード語の位置またはヘッダデータコード語の位置を適切に特定することができる。
【0045】
また、本発明に係る二次元コード読み取り方法は、第1の情報を含む第1データコード語と、前記第1データコード語の誤りを検出し訂正しうる誤り訂正コード語と、を含むデータブロックの一部を第2の情報を含む第2データコード語で置換した置換後データブロックに基づいて生成された二次元コードを読み取ることと、前記置換後データブロックにおける所定の位置から前記第2データコード語を抽出し、当該第2データコード語から前記第2の情報を求めることと、前記置換後データブロックの誤り訂正を行うことにより前記第1データコード語を求め、当該第1データコード語から前記第1の情報を求めることと、を含み、前記置換後データブロックにおける所定の位置から前記第2データコード語を抽出することは、前記誤り訂正コード語に基づいて前記置換後データブロックにおける置換位置を特定し、前記置換後データブロックにおける前記置換位置から前記第2データコード語を抽出することを含む。
誤り訂正コード語は、第1データコード語に基づいて求められる。そのため、第1データコード語が異なれば、誤り訂正コード語も異なることになる。よって、誤り訂正コード語に基づいて置換位置を特定することで、第1データコード語が異なれば置換位置も異なることとなるので、第三者にとっては第2データコード語の位置を特定することが困難となり、第2データ語に含まれる第2の情報の抽出をより困難なものとすることができる。
【0046】
また、本発明に係る二次元コード読み取り方法は、第1の情報を含む第1データコード語と、前記第1データコード語の誤りを検出し訂正しうる誤り訂正コード語と、を含むデータブロックの一部を第2の情報を含む第2データコード語で置換した置換後データブロックに基づいて生成された二次元コードを読み取ることと、前記置換後データブロックにおける所定の位置から前記第2データコード語を抽出し、当該第2データコード語から前記第2の情報を求めることと、前記置換後データブロックの誤り訂正を行うことにより前記第1データコード語を求め、当該第1データコード語から前記第1の情報を求めることと、を含み、前記置換後データブロックはヘッダデータコード語を含み、前記所定の位置は前記ヘッダデータコード語に基づいて特定され、前記置換後データブロックにおける所定の位置から前記第2データコード語を抽出することは、前記誤り訂正コード語に基づいて前記置換後データブロックにおける置換位置を特定し、前記置換後データブロックの前記置換位置から前記ヘッダデータコード語を抽出するとともに、前記置換後データブロックの前記ヘッダデータコード語で特定される位置から前記第2データコード語を抽出することを含む。
誤り訂正コード語は、第1データコード語に基づいて求められる。そのため、第1データコード語が異なれば、誤り訂正コード語も異なることになる。よって、誤り訂正コード語に基づいて置換位置を特定することで、第1データコード語が異なれば置換位置も異なることとなるので、第三者にとってはヘッダデータコード語の位置を特定することすら困難となる。第2データコード語の位置はヘッダデータコード語で特定されるものであるため、第2データコード語の抽出をより困難なものとすることができる。
【発明の効果】
【0056】
以上のように構成された二次元コードによれば、第1データコード語及び誤り訂正コード語の一部が第2データコード語で置換されてしまうものの、第1データコード語については、訂正コード語を用いて訂正して復元することができる。また、第2データコード語については、二次元コードを直接読み込んで得られる誤り訂正処理前の置換後のデータブロックから抽出することができる。そして、抽出した第2データコード語に基づいて第2の情報を得ることができる。このとき、第2の情報に秘匿対象である情報を含ませることで、開示対象である情報の他に秘匿対象である情報を隠蔽することができる二次元コードを提供することができる。
また、以上のような二次元コード読み取り方法によれば、第1データコード語および訂正コード語の一部が第2データコード語で置換されているものの、第1データコード語については、訂正コード語を用いて訂正して復元することができる。また、第2データコード語については、二次元コードを直接読み込んで得られる誤り訂正処理前の置換後データブロックから第2データコード語を抽出することができる。そして、抽出した第2データコード語に基づいて第2の情報を得ることができる。このとき、第2の情報に秘匿対象である情報を含ませることもできる。そして、適切に秘匿対象である情報を読み取ることができる。
【発明を実施するための形態】
【0058】
===第1実施形態===
以下に、第1実施形態における二次元コードについて説明を行う。ここでは、二次元コードの一例としてQRコードを採用して説明するが、二次元コードは、データマトリックスコード、マキシコード、ベリコード、カルラコード、CPコード等であってもよい。
【0059】
また、以下の説明で特段のことわりのない場合には、日本工業規格 JIS X 0510 : 2004「二次元コードシンボル−QRコード−」(以下、単に「JIS規格」ということがある)に準ずる。また、このJIS規格に準ずるエンコーダを標準エンコーダといい、JIS規格に準ずるデコーダを標準デコーダという。また、第1実施形態における隠蔽情報を取り扱うことができるエンコーダを拡張エンコーダといい、デコーダを拡張デコーダという。そして、これらを区別する。
【0060】
また、以下の説明において、「コード語」は、8ビット長として説明するが、システムに応じて、16ビット長とすることもできるし、1ビット長など他の長さを有するものとすることもできる。
【0061】
図1は、QRコードシンボル1の説明図である。QRコードシンボル1は、1型から40型まで様々なサイズが用意されているが、ここでは、一例として型番「2」を例に各機能について説明する。
【0062】
QRコードシンボル1は、機能パターンと符号化領域を有する。機能パターンは、QRコードのモジュール内での復号化を補助するために必要なQRコードシンボル位置の検索や特性の識別に必要なパターンである。符号化領域は、必要となる情報が書き込まれている領域である。
【0063】
機能パターンは、位置検出パターンFP、分離パターンSP、タイミングパターンTP、位置合わせパターンAP、および、クワイエットゾーンQZを有する。
【0064】
位置検出パターンFPは、QRコードの少なくとも3つの隅に配置されるパターンである。読み取り時において、3つの位置検出パターンFPを識別することで、QRコードシンボル1の方向や位置を正しく認識可能とする。
【0065】
分離パターンSPは、位置検出パターンFPの周りに配置される1モジュール幅の明モジュールである。これにより、位置検出パターンFPをQRコードシンボル1から区別することができるようになる。
【0066】
モジュールMは、QRコードシンボル1を構成する単位セルである。原則として、1ビットが1モジュールに相当する。
【0067】
タイミングパターンTPは、暗モジュールと明モジュールが1モジュールずつ直線状に交互に配置されたパターンである。タイミングパターンTPによって、QRコードシンボル1のモジュール数を認識可能となるため、これによりQRコードの型番を識別することができる。
【0068】
位置合わせパターンAPは、QRコードの型番によって決められた位置に配置されるパターンである。位置合わせパターンAPは、大きなモジュールの場合、QRコードシンボル1の位置の検索を補助する働きをする。
【0069】
クワイエットゾーンQZは、QRコードの周囲に設けられる最低4モジュール幅の明モジュール領域である。
【0070】
符号化領域は、データおよび誤り訂正コード語と、形式情報FIと、型番情報VIを有する。データおよび誤り訂正コード語は、実際のデータおよびデータが読み取れなかった場合の誤り訂正用の誤り訂正コード語を配置する。形式情報FIは、QRコードシンボル1に適用する誤り訂正レベルおよび使用するマスク処理パターンに関する情報を有し、符号化領域を復号化するのに必要な符号化パターンである。型番情報VIは、QRコードの型番の情報を有する。
【0071】
図2は、第1実施形態における拡張エンコーダ10のブロック図である。拡張エンコーダ10は、表示対象である情報と隠蔽情報とをQRコードシンボル1に変換する装置である。拡張エンコーダ10は、制御部11と表示装置13と印刷装置14と入力装置15を備える。
【0072】
制御部11は、演算部11aと記憶部11bを備える。演算部11aは中央演算装置等からなり、プログラムの実行および種々の演算を担う。記憶部11bは、プログラムの実行に際して、必要なデータの記憶を担う。特に、記憶部11bには、後述するQRコード生成方法を実行するためのプログラムが記憶されている。
【0073】
表示装置13は、データの入力等に際し必要な表示機能を担う。また、表示装置13は、生成されたQRコードシンボル1を表示により出力する。印刷装置14も、生成されたQRコードシンボル1を印刷により出力する。また、入力装置15は、データの入力および拡張エンコーダ10の操作に使用される。
【0074】
拡張エンコーダ10の構成は、一般的なコンピュータ、携帯電話、および、スマートフォン等に、後述するQRコード生成方法を実行するためのプログラムをインストールすることによって実現することができる。
【0075】
図3は、第1実施形態におけるRSブロックの概要図である。まず、
図3を参照しつつ、第1実施形態におけるQRコードのデータフォーマットの概要について説明する。
図3には、誤り訂正処理単位として、RS(リード・ソロモン)ブロックが示されている。QRコードシンボル1には、1または複数のRSブロックが含まれる。そして、RSブロックを1つの誤り訂正処理単位としている。
【0076】
なお、ここで説明する実施形態においては、リード・ソロモン(RS)符号による誤り訂正方式を採用しているため、誤り検出訂正演算の処理単位ブロックの一例として、「RSブロック」と記載している。
【0077】
RSブロックは、表示対象である情報本体と、終端符号と、パディングコード語とを有するデータコード語(第1データコード語に相当する)を含む。また、RSブロックは、訂正コード語としてのRS(リード・ソロモン)符号(訂正コード語に相当する)を含む。情報本体とは、標準デコーダであってもQRコードシンボル1を読み取ったときにデコード可能な情報である。終端符号は、情報本体の終端を表す符号である。パディングコード語は、情報本体のコード語の総数がQRコードシンボル1の容量に満たない場合、空のコード語部分を充填する目的で使用される仮のコード語である。RS符号は、RSブロックを単位として誤り訂正するために付加される符号である。
【0078】
QRコードでは、「L」「M」「Q」「H」の4段階の誤り訂正レベルが選択可能である。誤り訂正レベル「L」では、全体の語数に対して7%の誤り訂正能力を有する。例えば、RSブロックの語数を100%とした場合、そのうちの7%の誤り訂正能力を有する。誤り訂正レベル「M」では、全体の語数に対して15%の訂正能力を有する。誤り訂正レベル「Q」では、全体の語数に対して25%の訂正能力を有する。誤り訂正レベル「H」では、全体の語数に対して30%の誤り訂正能力を有する。第1実施形態では、例えば、最高クラスの誤り訂正能力である「H」を利用して、隠蔽情報をQRコードに隠蔽する。ただし、隠蔽される隠蔽情報語の語数に応じて誤り訂正レベルを変更してもよい。
【0079】
第1実施形態においてQRコードに情報を隠蔽する手法の概念は、次の通りである。
図3には、隠蔽情報語(第2データコード語に相当する)が示されている。第1実施形態では、この隠蔽情報語でRSブロックの一部を置換する(以下、この「置換」を「上書き」ということがある)。このように一部を置換した場合であっても、標準デコーダでは、置換後の情報本体部分をRS符号を用いて訂正できる。そして訂正後の情報本体部分を抽出して表示することができる。一方、隠蔽情報語は、RS符号により訂正されて捨てられてしまう情報であるため、標準デコーダでは表示されないことになる。
【0080】
これに対し、第1実施形態に対応する拡張デコーダ20では、後述するように、置換後RSブロックから隠蔽情報語を抽出する。そして、その後、RS符号により訂正を行って情報本体部分を抽出する。以上の原理によりQRコードシンボル1に情報を隠蔽する。
【0081】
次に、第1実施形態における具体的なQRコードの生成方法について説明する。
図4は、第1実施形態におけるQRコードシンボル生成方法のフローチャートである。
図5は、RSブロックの説明図である。
図6は、隠蔽情報語の説明図である。以下の説明において、特段のことわりがない場合、QRコードシンボル1へのエンコード手法は、JIS規格による手法が採用される。なお、QRコードシンボル1は、複数のRSブロックを有する場合がほとんどであるが、ここでは説明の容易のために、1つのRSブロックを例示して説明を行う。また、以下に示される内容は容易な説明を行うための例示であるので、各コード語長は実際のものと異なることがある。
【0082】
また、第1実施形態の前提として、記憶部11bには、後述する隠蔽情報語で置換される開始位置を表す「オフセット情報」と、隠蔽情報語の「長さ(語数)情報」が記憶されていることとする。
【0083】
まず、QRコードシンボル1に埋め込まれる情報本体および隠蔽情報語が取り込まれる(S102)。ここでは、情報本体のコード語を「TOKYO<cr>MINATO<cr>JPN」とし(
図5)、隠蔽情報語を「00090012345678」としている(
図6)。情報本体と隠蔽情報語の取り込みは、入力装置14を介して行ってもよいし、記憶部11bに予め記憶された情報を用いてもよい。
【0084】
次に、情報本体および隠蔽情報語に基づいてQRコードシンボル1の型番が決定される(S104)。QRコードシンボル1は型番に応じてトータルのコード語数が定められている。トータルのコード語数は、情報本体の語数を含むデータコード語数と、訂正コード語数と、の和である。また、QRコードシンボル1の型番に応じて、データコード語と訂正コード語からなるRSブロックの大きさと数が定められている。そして、誤り訂正は、RSブロックを単位として行われる。
【0085】
例えば、誤り訂正レベルが「H」であって型番が「4」の場合、トータルのコード語数は「100」と定められている。そして、4つのRSブロックを含むことが定められている。1つのRSブロックにおけるデータコード語数は「9」であり、訂正コード語数は「16」である。
【0086】
データコード語数「9」と訂正コード語数「16」の和は「25」であり、このようなRSブロックが4つあるため、型番が「4」のQRコードシンボルは、25×4=100の総コード語数を有することになる。
【0087】
また、このときの誤り訂正語数は、RSブロック毎に「8」である。これは、データコード語数「9」のうちの「8」を訂正する能力を有することを表す。RSブロックは4つであったから、4×8=32の語数の総訂正能力を有することになる。100語のうち32語を訂正可能としているので、全体からすると32%の訂正能力を有することになる。
【0088】
隠蔽情報語による置換は、RSブロック毎に、RSブロックの誤り訂正数を超えない範囲で行われる。上記の場合であると、RSブロック毎にコード語数「8」の置換が許容されることになり、全体では「32」のコード語数の置換が許容される(「総置換許容語数)と呼ぶことがある)ことになる。
【0089】
このような演算に基づいて、隠蔽情報語数が総置換許容語数を上回らず、かつ、情報本体の語数がデータコード語数を上回らない最小サイズのQRコードシンボル1の型番が選択される。
【0090】
次に、情報本体のコード語に基づいてRSブロックが生成される(S106)。RSブロックを生成するため、情報本体のコード語が複数のブロックに分割される。そして、各ブロックに対して誤り訂正コード語が生成され、生成された訂正コード語が対応するコード語の後に付加される。そして、RSブロックが生成される。なお、訂正コード語の生成手法については、JIS規格に準ずることができる。
【0091】
図5には、情報本体と終端符号と訂正コード語の一例が示されている。ここでは、情報本体のコード語としてプレインなテキスト情報が示されている。終端符号は、例えば、「0000」のビット列を採用することができる。そして、情報本体を含むコード語に基づいて生成されたRS符号が付加され、RSブロックが作成されている。
【0092】
このようにして生成されたRSブロックの一部が隠蔽情報語で置換される(S108)。
【0093】
図7は、第1実施形態による手法でRSブロックの一部を置換したときの第1の説明図である。
図7には、前述のRSブロックと、隠蔽情報語が示されている。そして、前述の隠蔽情報語の長さ情報とオフセット情報に基づき、第1実施形態では、
図7に示されるように、RSブロックの先頭から隠蔽情報語で置換される。
【0094】
このように、RSブロックの一部が隠蔽情報語で置換されると、情報本体の一部が消失してしまうことになる。しかしながら、RSブロック単位で訂正を行うことができるため、標準デコーダでは、置換後の情報本体部分をRS符号で訂正して適切に抽出し、表示できるのである。
【0095】
そして、隠蔽情報語で置換された部分は、QRコードシンボル1の汚損等による誤りであるとみなされて捨てられてしまう情報となるので、標準デコーダでは表示することができない。一方、拡張デコーダ20では、後述するように、置換後RSブロックから隠蔽情報語を抽出する。そして、その後、RS符号により訂正を行って情報本体部分を抽出する。そして、抽出された隠蔽情報語と情報本体部分を表示するのである。
【0096】
次に、置換後RSブロックに基づいてQRコードシンボル1を作成する(S110)。RSブロックに基づいてQRコードシンボル1を生成する手法は、JIS規格における標準的なQRコード生成手法と同様のものを採用することができる。このようにすることで、QRコードシンボル1を生成することができる。
【0097】
なお、上記では説明の容易のために、情報本体はプレインなテキストデータとして表したが、情報本体のデータ語自体をインターリーブしたり、暗号化することとしてもよい。そして、インターリーブ後の情報本体や暗号化後の情報本体に対して訂正コード語を付加して置換前RSブロックを生成することとしてもよい。また、インターリーブや暗号化は、コード語単位でなくビット単位で行われることとしてもよい。
【0098】
また、隠蔽情報語についてもインターリーブしたり、暗号化することとしてもよい。また、隠蔽情報語について誤り検知または誤り訂正のための符号化(例えば、RS符号化など)がなされていることとしてもよい。
【0099】
次に、このようにして生成されたQRコードシンボル1のデコード手法について説明する。
図8は、拡張デコーダ20のブロック図である。拡張デコーダ20は、QRコードシンボル1を読み取り、QRコードシンボル1に含まれる表示対象である情報と隠蔽情報語とを展開する装置である。拡張デコーダ20は、制御部21と撮像装置22と表示装置23と印刷装置24と入力装置25を備える。
【0100】
制御部21は、演算部21aと記憶部21bを備える。演算部21aは中央演算装置等からなり、プログラムの実行および種々の演算を担う。記憶部21bは、プログラムの実行に際して、必要なデータの記憶を担う。特に、記憶部21bには、後述するQRコード読み取り方法を実行するためのプログラムが記憶されている。
【0101】
撮像装置22は、QRコードシンボル1を撮像するための装置であって、例えば、CCDカメラなどである。
【0102】
表示装置23は、データの入力等に際し必要な表示機能を担う。また、表示装置23は、QRコードから展開された情報を表示により出力する。印刷装置24も、展開された情報を印刷により出力する。また、入力装置25は、データの入力および拡張デコーダ20の操作に使用される。
【0103】
拡張デコーダ20の構成は、撮像装置22を備えていれば、一般的なコンピュータ、携帯電話、および、スマートフォンに、後述するQRコード読み取り方法を実行するためのプログラムをインストールすることによって実現することができる。また、前述の拡張エンコーダ10と拡張デコーダ20とを一体化して実現することも可能である。
【0104】
図9は、第1実施形態におけるQRコードシンボル読み取り方法のフローチャートである。以下の説明において、特段のことわりがない場合、QRコードシンボル1のデコード手法は、JIS規格による手法が採用される。
【0105】
また、第1実施形態の前提として、デコーダ20の記憶部21bには、隠蔽情報語の「長さ(語数)情報」、および、隠蔽情報語で置換される開始位置を表す「オフセット情報」が記憶されていることとする。
【0106】
まず、QRコードシンボル1の読み取りが行われる(S202)。そして、読み取ったQRコードシンボル1に基づいて、複数のRSブロックが展開される(S204)。これら複数のRSブロックへの展開は、JIS規格に準ずるものを採用することができる。これにより、たとえば、前述の
図7に示された置換後RSブロックが取得される。
【0107】
次に、取得された置換後RSブロックから情報本体のコード語および隠蔽情報語が抽出される(S206)。
図10は、隠蔽情報語の抽出方法の説明図である。
図10には、置換後RSブロックと隠蔽情報語が示されている。
【0108】
置換後RSブロックは、前述のように、QRコードシンボルを読み取り、JIS規格に準じて展開することにより取得することができる。デコーダ20は、記憶部21bに記憶されている隠蔽情報語のオフセット情報と長さ情報とに基づいて、置換後RSブロックにおける隠蔽情報語の位置を特定する。そして、特定した位置から隠蔽情報語を抽出する。
【0109】
図11は、情報本体の抽出方法の説明図である。デコーダ20は、置換後RSブロックの誤り訂正を行うことにより、置換前RSブロックを取得する。そして、置換前RSブロックの先頭から終端符号までの情報を抽出し、抽出したデータを情報本体とする。
【0110】
次に、得られた情報本体のコード語と隠蔽情報語が出力される(S208)。これらの出力対象は、表示装置23であってもよいし、プリンターなどの印刷装置24であってもよい。
【0111】
なお、前述のように、情報本体のデータ語自体がインターリーブされている場合には、その後、元の順序となるように所定の手法でデータの並び替えが行われる。また、暗号化されていた場合には、所定の復号化方法で復号が行われる。
【0112】
次に、比較例として、標準デコーダで第1実施形態におけるQRコードシンボル1を読み取ったときの出力結果について説明する。標準デコーダでQRコードシンボル1を読み取ると、置換後RSブロックのRS符号に基づいて、RSブロック全体の訂正が行われる。そして、情報本体部分も訂正がなされ、訂正後の情報本体が標準デコーダに表示される。標準デコーダには、前述の拡張デコーダ20のように、置換後RSブロックから隠蔽情報語を抽出する機能はないから、情報本体のみが抽出可能であり、隠蔽情報語を抽出することはできない。
【0113】
また、比較例として、一般的なQRコードシンボルを拡張デコーダ20で読み取ったときの出力結果について説明する。拡張デコーダ20で一般的なQRコードシンボルを読み取ると、これに基づいてRSブロックを取得することができる。一般的なQRコードシンボルから取得されたRSブロックには隠蔽情報語は含まれていない。しかしながら、RSブロックを取得した時点において、拡張デコーダ20は、読み取ったシンボル1が第1実施形態におけるQRコードシンボルであるのか一般的なQRコードシンボルであるのか判定することができない。
【0114】
そのため、拡張デコーダ20は、第1実施形態における手法同様に、RSブロックの隠蔽情報語が配置される位置から隠蔽情報語としてデータコード語を抽出する。その後、RSブロックのRS符号に基づいて、RSブロック全体の訂正を行う。これにより、情報本体部分の訂正が行われ、訂正後の情報本体が拡張デコーダ20に表示される。
【0115】
隠蔽情報語として読み取ったコード語が隠蔽情報語であるのか否かの判定は、訂正前のRSブロックと訂正後のRSブロックとの間に所定割合以上の差異があったときには隠蔽情報語であったと判定(すなわち、QRコードシンボルは第1実施形態におけるQRコードシンボルであると判定)し、所定割合以上の差異がなかったときには隠蔽情報語ではなかったと判定(すなわち、QRコードシンボルは一般的なQRコードシンボルであると判定)して隠蔽情報語を表示しないこととすることができる。これは、隠蔽情報語として置換が行われている場合には、置換前RSブロックと置換後RSブロッとの間の所定割合以上の差異が確実に生ずるものであるという理由に起因する。
【0116】
また、さらなる比較例として、仮に、一般的なQRコードシンボルを生成した後に、特定の隠蔽情報に対応する部分に限って図形パターンの生成処理を行って、図形パターンの上書きを行う場合を考察する。このような場合、二次元パターンを生成した後に特定の図形パターンの生成処理を行うことになるため、別途、特定の図形パターンの生成処理のための異なる処理系を用意する必要がある。また、QRコードシンボルを生成した後に、さらに上書きする図形パターンの生成処理を行う必要がある。このような処理は、複数回図形パターンの生成処理を行っていることになるから処理速度の面から望ましくない。
【0117】
これに対し、第1実施形態であれば、拡張エンコーダ10がデータコード語レベルで置換前データブロックを生成した後、ただちに置換後データブロックを生成する。この処理は、単一の処理系(制御部11)のメモリ(記憶部11b)上で行われる。そして、この置換後データブロックに対して、1回のみ最終的なQRコードシンボル1の生成処理を行うこととしている(S110)。このようにデータコード語レベルで必要な処理を行うこととしているため、図形パターン生成レベルで必要な処理を行うよりも効率的かつ高速に最終的なQRコードシンボル1の生成を行うことができる。なお、このような利点は、後述する実施形態においても同様に言えることでもある。
【0118】
図12は、第1実施形態における手法でRSブロックの一部を置換したときの第2の説明図である。前述の手法では、RSブロックの先頭から順に隠蔽情報語が置換されていた。しかしながら、リード・ソロモン符号による訂正能力を勘案すれば、RSブロックのいずれの位置を隠蔽情報語で置換してもよい。
【0119】
この場合、予めRSブロックの先頭からいくつ目の位置から隠蔽情報語で置換されるかを決めておくことができる。例えば、
図12に示すように、RSブロックの先頭から7語目の位置から13語分の隠蔽情報語で置換することとしてもよい。この場合、拡張エンコーダ10の記憶部11bおよび拡張デコーダ20の記憶部21bには、オフセット情報として置換後RSブロックの予め決められた7語目の位置から隠蔽情報語が開始されることが記憶されている。また、隠蔽情報語の長さ情報として、13語分の長さであることが記憶されている。このような場合であっても、隠蔽情報語の語数がRS符号による訂正可能語数よりも少ないことから、訂正を行うことで適切に置換前RSブロックを得ることができる。そして、置換前RSブロックから情報本体を抽出することができる。
【0120】
なお、このとき、隠蔽情報語の最終語において所定の分離符号を付加することとして、置換される隠蔽情報語の最終端を規定することとしてもよい。
【0121】
図13は、第1実施形態における手法でRSブロックの一部を置換したときの第3の説明図である。ここでは、複数に分離した隠蔽情報語でRSブロックを置換する。
【0122】
この場合、予めRSブロックのどの位置が隠蔽情報語で置換されるかを複数箇所決めておくことができる。例えば、
図13に示すように、RSブロックの先頭から3語目の位置から3語分の隠蔽情報語で置換し、RSブロックの先頭から8語目の位置から2語分の隠蔽情報語で置換し、RSブロックの先頭から11語目の位置から1語分の隠蔽情報語で置換し、RSブロックの先頭から16語目の位置から4語分の隠蔽情報語で置換し、RSブロックの先頭から22語目の位置から3語分の隠蔽情報語で置換することとしてもよい。
【0123】
この場合、拡張エンコーダ10の記憶部11bと拡張デコーダ20の記憶部21bには、オフセット情報および長さ情報として上記の情報が記憶されているものとする。このようにすることで、拡張デコーダ20は、このように予め特定された位置から、それぞれの隠蔽情報語を抽出することができる。また、この場合も隠蔽情報語の語数がRS符号による訂正可能語数よりも少ないことから、訂正を行うことで適切に置換前RSブロックを得ることができる。そして、置換前RSブロックから情報本体を抽出することができる。
【0124】
===第2実施形態===
前述の第1実施形態では、隠蔽情報語のオフセット情報、および、長さ情報などの配置に関する情報(以下、配置情報ということがある)が、予め拡張エンコーダ10の記憶部11b、および、拡張デコーダ20の記憶部21bに記憶されていることしていた。第2実施形態では、ヘッダデータコード語(図中において「ヘッダ」)にこれら配置情報が記録される。そして、第2実施形態では、さらにこのヘッダデータコード語が置換後RSブロックに含まれているものとしている。
【0125】
図14は、第2実施形態におけるRSブロックの概念図である。
図14を前述の第1実施形態における
図3と比較すると分かるように、第2実施形態では、拡張エンコーダ10が、置換前RSブロックの一部をヘッダデータコード語と隠蔽情報語とで置換し、置換後RSブロックを生成する。
【0126】
第2実施形態において、ヘッダデータコード語と隠蔽情報語による置換は、RSブロックの誤り訂正数を超えない範囲で行われる。すなわち、ヘッダデータコード語の語数と隠蔽情報語の語数との総語数は、RSブロックの誤り訂正数を超えない。
【0127】
図14に示されるヘッダデータコード語には、前述のように隠蔽情報語の配置情報が含まれる。よって、このヘッダデータコード語を参照することにより、隠蔽情報語の開始位置およびその長さ(語数)を特定することができる。なお、ヘッダデータコード語の位置は予め決められているものとする。また、さらにヘッダデータコード語は、隠蔽情報語のフォーマットに関する情報を含むことができる。隠蔽情報語のフォーマットに関する情報には、仮に、隠蔽情報語を暗号化したときにおける暗号鍵の情報や、隠蔽情報語をインターリーブしたときにおける配置入れ替えに関する情報が含まれる。また、隠蔽情報語について誤り検知または誤り訂正のための符号化がなされている場合には、誤り検知または誤り訂正の手法に関する情報が含まれる。
【0128】
図15は、第2実施形態におけるヘッダデータコード語および隠蔽情報語の説明図である。
図15には、ヘッダデータコード語と隠蔽情報語が示されており、隠蔽情報語の一部に訂正符号語が含まれることが示されている。
【0129】
図16は、第2実施形態による手法でRSブロックの一部を置換したときの第1の説明図である。
図16には、RSブロックと隠蔽情報語とヘッダデータコード語が示されている。そして、ここでは、
図16に示されるように、RSブロックは、拡張エンコーダ10により、その先頭から隠蔽情報語で置換される。また、RSブロックは、その後端がヘッダデータコード語で置換される。そして、このヘッダデータコード語には、隠蔽情報語の配置情報(この場合、先頭から開始(すなわち、オフセットがゼロである)すること、および、11語の長さを有すること)が含まれている。
【0130】
このように、RSブロックの一部が隠蔽情報語で置換されると、情報本体および訂正コード語の一部が消失してしまうことになる。しかしながら、RSブロック単位で訂正を行うことができるため、標準デコーダでは、置換後の情報本体部分をRS符号で訂正して適切に抽出し、表示できる。そして、隠蔽情報語で置換された部分は、QRコードシンボル1の汚損等による誤りであるとみなされて捨てられてしまう情報となるので、標準デコーダでは表示することができない。
【0131】
一方、拡張デコーダ20では、置換後RSブロックから隠蔽情報語を抽出する。その際、ヘッダデータコード語から隠蔽情報語の位置を特定するための配置情報を取得する。そして、その配置情報に基づいて隠蔽情報語を抽出する。なお、隠蔽情報語には、訂正符号語が付加されているため、仮に、隠蔽情報語に汚損があったとしても、訂正符号語を用いてこれを訂正することもできる。
【0132】
また、隠蔽情報語についてインターリーブされている場合には、ヘッダデータコード語に含まれるインターリーブ手法についての情報に基づいて、元の順序に並べ替えを行うことができる。また、情報本体についてインターリーブされている場合にも、ヘッダデータコード語に含まれるインターリーブ手法についての情報に基づいて、元の順序に並べ替えを行うこともできる。また、隠蔽情報語について暗号化が行われている場合には、ヘッダデータコード語に含まれる暗号鍵等に基づいて復号化を行うことができる。また、前述のように、隠蔽情報語について誤り検知または誤り訂正のための符号化(例えば、RS符号化など)がなされている場合には、ヘッダデータコード語に含まれる情報に基づいて誤り訂正の手法を特定することができる。
【0133】
このようにして隠蔽情報語を抽出した後、拡張デコーダ20は、置換後RSブロックの訂正を行って置換前RSブロックを求める。そして、置換前RSブロックに含まれる情報本体部分を抽出する。そして、抽出された隠蔽情報語と情報本体部分を表示する。
【0134】
図17は、第2実施形態による手法でRSブロックの一部を置換したときの第2の説明図である。前述の
図16の手法では、RSブロックの先頭から順に隠蔽情報語で置換されていた。しかしながら、
図17に示すように、先頭以外の位置から隠蔽情報語で置換することとしてもよい。
【0135】
図17に示されるような場合、RSブロックの9語目から隠蔽情報語の置換が開始されることがヘッダデータコード語中のオフセット情報に含まれている。また、隠蔽情報語が11語分の長さを有することがヘッダデータコード語中の長さ情報に含まれている。これにより、ヘッダデータコード語を参照することで、第1実施形態のときと同様に隠蔽情報語を適切に抽出することができる。
【0136】
これは、前述の
図13のときのように、隠蔽情報語が分散して置換される場合にも同様に適用することができる。
【0137】
図18は、第2実施形態による手法でRSブロックの一部を置換したときの第3の説明図である。このとき、ヘッダデータコード語の位置はRSブロックの13語目から開始して2語の長さを有することが予め決められているものとする。このように、隠蔽情報語が分散して置換される場合には、ヘッダデータコード語には複数の隠蔽情報語の配置情報を含むことになる。このようにすることで、ヘッダデータコード語を参照することで適切に隠蔽情報語を抽出することができる。
【0138】
なお、ヘッダデータコード語の位置は予め決められていたものとして説明を行ったが、ヘッダデータコード語の前後にデリミタを設けることとしてヘッダデータコード語の位置を特定することとしてもよい。
【0139】
なお、読み取ったQRコードシンボルが一般的なQRコードシンボルであるか第2実施形態におけるQRコードシンボルであるかの判定は、抽出した隠蔽情報語にヘッダデータコード語が含まれているか否かに基づいて判定することができる。すなわち、第2実施形態におけるQRコードシンボルには、ヘッダデータコード語が含まれているので、拡張デコーダ20は、隠蔽情報語を表示することとすることができる。また、一般的なQRコードシンボルには、ヘッダデータコード語が含まれていないので、拡張デコーダ20は、隠蔽情報語を表示せず、表示対象の情報のみを表示することができる。
【0140】
===第3実施形態===
図19は、第3実施形態による手法でRSブロックの一部を置換したときの説明図である。
図19には、置換前RSブロックと隠蔽情報語と暫定置換後RSブロックとヘッダデータコード語と置換後RSブロックが示されている。
【0141】
第3実施形態において、拡張エンコーダ10は、置換前RSブロックの一部を隠蔽情報語で置換する。そして、暫定置換後RSブロックを生成する。なお、隠蔽情報語には、後述するように、ヘッダデータコード語によって置換されてもそれを訂正しうるだけの訂正能力を有する訂正符号語が含まれている。
【0142】
次に、拡張エンコーダ10は、暫定置換後RSブロックにおいて隠蔽情報語で置換した部分の一部をヘッダデータコード語で置換する。そして、置換後RSブロックを生成する。その後、拡張エンコーダ10は、生成された置換後RSブロックに基づいてQRコードシンボルを生成する。
【0143】
次に、デコード手法について説明する。第3実施形態における拡張デコーダ20は、このようにして生成されたQRコードシンボルを読み取り、置換後RSブロックを展開する。そして、拡張デコーダ20は、ヘッダデータコード語を抽出する。ヘッダデータコード語の位置は、第1実施形態および第2実施形態のときと同様に、予め決められた位置としておくこともできるし、ヘッダデータコード語の前後にデリミタを設けることとしてその位置を特定することとしてもよい。
【0144】
このようにして抽出されたヘッダデータコード語に含まれる配置情報に基づいて、隠蔽情報語の位置が特定される。そして、隠蔽情報語が抽出される。隠蔽情報語には、前述のように訂正符号語が含まれているため、この訂正符号語に基づいて訂正を行うことにより、ヘッダデータコード語によって置換された部分も適切に訂正される。そして、ヘッダデータコード語によって置換される前の隠蔽情報語が適切に抽出される。
【0145】
このようにすることで、まずは暫定置換後RSブロックを得ることができる。次に、デコーダ20は、置換前RSブロックに含まれる訂正符号語を用いて訂正を行う。これにより、隠蔽情報語によって置換された部分も適切に訂正され、置換前RSブロックを得ることができる。そして、拡張デコーダ20は、置換前RSブロックから情報本体を抽出することができる。
【0146】
第3実施形態において、隠蔽情報語の語数は、置換前RSブロックに含まれる訂正符号語による訂正可能語数を超えない。また、第3実施形態において、ヘッダデータコード語の語数は、隠蔽情報語に含まれる訂正符号語による訂正可能語数を超えない。これにより、適切に隠蔽情報語および情報本体を抽出することができる。
【0147】
第3実施形態において特徴的なのは、このように隠蔽情報語で置換した部分の一部をヘッダデータコード語で置換する点である。このようにすることで、ヘッダデータコード語と隠蔽情報語が重なり合うこととなるので、ヘッダデータコード語と隠蔽情報語との総語長を短くすることができる。これにより、QRコードシンボルの誤り検出・訂正能力の余力をより大きく持たせることができる。
【0148】
なお、第3実施形態においても第2実施形態と同様に、読み取ったQRコードシンボルが一般的なQRコードシンボルであるか第3実施形態におけるQRコードシンボルであるかの判定は、抽出した隠蔽情報語にヘッダデータコード語が含まれているか否かに基づいて判定することができる。すなわち、第3実施形態におけるQRコードシンボルには、ヘッダデータコード語が含まれているので、拡張デコーダ20は隠蔽情報語を表示することとすることができる。また、一般的なQRコードシンボルには、ヘッダデータコード語が含まれていないので、拡張デコーダ20は、隠蔽情報語を表示せず、表示対象の情報のみを表示することができる。
【0149】
===第4実施形態===
図20は、第4実施形態による手法でRSブロックの一部を置換したときの説明図である。
図20には、置換前RSブロックと隠蔽情報語と置換後RSブロックが示されている。
【0150】
第4実施形態において、置換前RSブロックの情報本体には、ヘッダデータコード語が含まれている。ヘッダデータコード語の前後にはデリミタ(
図20において「デリ」と記載)が配置され、これにより、情報本体における表示情報とヘッダデータコード語との切り分けが行われている。
【0151】
このような置換前RSブロックを生成するために、第4実施形態において、拡張エンコーダ10は、表示情報とヘッダデータコード語とデリミタを含む情報本体を生成する。ヘッダデータコード語には、後述する隠蔽情報語の配置情報が含まれている。また、拡張エンコーダ10は、これらの情報本体(存在すればパディングコード語も含め)に基づいて、訂正コード語を生成する。そして、置換前RSブロックを生成する。
【0152】
次に、拡張エンコーダ10は、隠蔽情報語で置換前RSブロックの一部を置換する。ここで、置換する位置は、ヘッダデータコード語に含まれる配置情報に対応する位置である。そして、置換後RSブロックを生成する。その後、拡張エンコーダ10は、置換後RSブロックに基づいてQRコードシンボルを生成する。
【0153】
次に、デコード手法について説明する。第4実施形態における拡張デコーダ20は、このようにして生成されたQRコードシンボルを読み取り、置換後RSブロックを展開する。そして、拡張デコーダ20は、置換前RSブロックに含まれる訂正符号語に基づいて、置換後RSブロックを訂正することにより置換前RSブロックを得る。置換前RSブロックには、前述のようにデリミタで切り分けされたヘッダデータコード語が含まれる。拡張デコーダ20は、このヘッダデータコード語に含まれる配置情報に基づいて、置換後RSブロックから隠蔽情報語の位置を特定し、抽出する。抽出された隠蔽情報語について、隠蔽情報語に含まれる訂正符号語を用いて訂正が行われることとしてもよい。
【0154】
このように、隠蔽情報語の配置情報を含むヘッダデータコード語を隠蔽情報語で置換して置換後RSブロックを生成するので、置換後RSブロックから隠蔽情報語の位置を特定することが困難となる。そして、第三者にとって、隠蔽情報語の抽出をより困難なものとすることができる。
【0155】
なお、第4実施形態において、読み取ったQRコードシンボルが一般的なQRコードシンボルであるか第4実施形態におけるQRコードシンボルであるかの判定は、抽出した置換前RSブロックにヘッダデータコード語が含まれているか否かに基づいて判定することができる。すなわち、第4実施形態における置換前RSブロックには、ヘッダデータコード語が含まれているので、拡張デコーダ20は隠蔽情報語を表示することとすることができる。また、一般的なQRコードシンボルには、ヘッダデータコード語が含まれていないので、拡張デコーダ20は、隠蔽情報語を表示せず、表示対象の情報のみを表示することができる。
【0156】
===第5実施形態===
図21は、第5実施形態による手法でRSブロックの一部を置換したときの説明図である。
図21には、置換前RSブロックと隠蔽情報語とヘッダデータコード語と置換後RSブロックが示されている。
【0157】
第5実施形態において、置換前RSブロックの情報本体には、ヘッダデータコード語の位置情報を含んだヘッダデータコード語オフセット位置情報語(
図21において「オフセット」と記載。「ヘッダ位置データコード語」に対応する)が含まれている。ヘッダオフセット位置情報語の前後には、デリミタが配置され、これにより、情報本体における表示情報とヘッダオフセット位置情報語との切り分けが行われている。
【0158】
このような置換前RSブロックを生成するために、第5実施形態において、拡張エンコーダ10は、表示情報とヘッダオフセット位置情報語とデリミタを含む情報本体を生成する。そして、拡張エンコーダ10は、これらの情報本体(存在すればパディングコード語も含め)に基づいて、訂正コード語を生成する。そして、置換前RSブロックを生成する。
【0159】
次に、拡張エンコーダ10は、隠蔽情報語で置換前RSブロックの一部を置換する。ここで、置換する位置は、ヘッダデータコード語に含まれる隠蔽情報語の配置情報に対応する位置である。ここでは、隠蔽情報語の配置情報において、RSブロックの5語目から隠蔽情報語の置換が開始され、隠蔽情報語が11語分の長さを有することの情報が含まれているものとする。そして、暫定置換後RSブロックを生成する。
【0160】
次に、拡張エンコーダ10は、暫定置換後RSブロックにおける隠蔽情報語の一部をヘッダデータコード語で置換する。ここで、置換する位置は、前述のヘッダオフセット位置情報語に含まれるヘッダデータコード語の位置情報に対応する位置である。ここでは、RSブロックの7語目から置換が行われることの情報がヘッダオフセット位置情報語に含まれるものとする。また、ヘッダデータコード語の長さは予め2語分であることが定められているものとする。そして、これらの情報に基づいて、拡張エンコーダ10はヘッダデータコード語による置換を行い、置換後RSブロックを生成する。その後、拡張エンコーダ10は、置換後RSブロックに基づいてQRコードシンボルを生成する。
【0161】
次に、デコード手法について説明する。第5実施形態における拡張デコーダ20は、このようにして生成されたQRコードシンボルを読み取り、置換後RSブロックを展開する。そして、拡張デコーダ20は、RSブロックに含まれる訂正符号語に基づいて、置換後RSブロックを訂正することにより、置換前RSブロックを得る。置換前RSブロックには、前述のようにデリミタで切り分けされたヘッダオフセット位置情報語が含まれる。
【0162】
拡張デコーダ20は、このヘッダオフセット位置情報語に基づいて、置換後RSブロックにおけるヘッダデータコード語の位置を特定する。そして、特定した置換後RSブロックの位置からヘッダデータコード語を抽出し、隠蔽情報語の配置情報を得る。
【0163】
拡張デコーダ20は、隠蔽情報語の配置情報に基づいて、置換後RSブロックから隠蔽情報語を抽出する。ただし、この隠蔽情報語は、ヘッダデータコード語により一部が置換されている。よって、拡張デコーダ20は、隠蔽情報語に含まれる訂正符号語に基づいて訂正をし、ヘッダデータコード語によって置換がされる前の隠蔽情報語を得る。これにより、適切に隠蔽情報語を取得することができる。
【0164】
また、拡張デコーダ20は、置換前RSブロックの情報本体からヘッダオフセット位置情報語とデリミタを除いた情報語を取得する。
【0165】
このようにすることで、ヘッダデータコード語の位置を特定するためのヘッダオフセット位置情報語を情報本体に含めることし、このヘッダオフセット位置情報語をさらに隠蔽情報語で置換するので、隠蔽情報語の位置を特定することがより困難となる。そして、第三者にとって、隠蔽情報語を抽出することをより困難なものとすることができる。
【0166】
なお、前述の第2実施形態のように、ヘッダデータコード語に含まれる隠蔽情報語の配置情報に基づいて、任意の位置から隠蔽情報語を置換したり、隠蔽情報語を複数に分離させて置換することとすることもできる。また、ヘッダデータコード語の情報に基づいて、隠蔽情報語を暗号化したりインターリーブしたりすることもできる。
【0167】
また、ヘッダデータコード語の位置を「オフセット」に基づいて特定することとしたが、ヘッダデータコード語の位置を特定できればオフセット量で特定しなくとも、他の手法でその位置を特定してもよい。
【0168】
なお、第5実施形態においても第2実施形態と同様に、読み取ったQRコードシンボルが一般的なQRコードシンボルであるか第5実施形態におけるQRコードシンボルであるかの判定は、抽出した隠蔽情報語にヘッダデータコード語が含まれているか否かに基づいて判定することができる。すなわち、第5実施形態におけるQRコードシンボルには、ヘッダデータコード語が含まれているので、拡張デコーダ20は隠蔽情報語を表示することとすることができる。また、一般的なQRコードシンボルには、ヘッダデータコード語が含まれていないので、拡張デコーダ20は、隠蔽情報語を表示せず、表示対象の情報のみを表示することができる。
【0169】
===第6実施形態===
図22は、第6実施形態による手法でRSブロックの一部を置換したときの第1の説明図である。
図22には、置換前RSブロックと隠蔽情報語と置換後RSブロックが示されている。
【0170】
第6実施形態において、拡張エンコーダ10は、情報本体(存在すればパディングコード語も含め)に基づいて、訂正コード語を生成する。そして、置換前RSブロックを生成する。次に、拡張エンコーダ10は、置換前RSブロックの一部を隠蔽情報語で置換する。そして、置換後RSブロックを生成する。そして、置換後RSブロックに基づいて、QRコードシンボルを生成する。このように、第6実施形態において、QRコードシンボルの生成方法は、第1実施形態とほぼ同様の手法による。
【0171】
次に、デコード手法について説明する。第6実施形態における拡張デコーダ20は、このようにして生成されたQRコードシンボルを読み取り、置換後RSブロックを展開する。そして、そして、拡張デコーダ20は、RSブロックに含まれる訂正符号語に基づいて、置換後RSブロックを訂正することにより、置換前RSブロックを得る。
【0172】
拡張デコーダ20は、置換前RSブロックと置換後RSブロックとを比較する。そして、置換前RSブロックと異なる部分を置換後RSブロックから抽出する。このようにして抽出された情報語は隠蔽情報語とされる。また、置換前RSブロックから情報本体を抽出する。置換前RSブロックには、情報本体と訂正符号語の間に終端符号が設けられているため、デコーダ20は、この終端符号に基づいて情報本体と訂正符号語とを切り分けることができる。
【0173】
このようにすることで、隠蔽情報語と情報本体を抽出することができる。そして、第6実施形態の手法によれば、単に置換前RSブロックと置換後RSブロックとを比較し、異なる部分を抽出すればよいので、隠蔽情報語の位置情報が不要となる利点がある。すなわち、仮にヘッダデータコード語を用いる場合には、ヘッダデータコード語の語数を減らすことができる。
【0174】
図23は、第6実施形態における手法でRSブロックの一部を置換したときの第2の説明図である。ここでは、複数に分離した隠蔽情報語でRSブロックを置換する。
【0175】
例えば、
図23に示すように、隠蔽情報語を5つに分離してRSブロックの一部を置換することができる。このようにした場合であっても、隠蔽情報語の語数がRS符号による訂正可能語数より少ないことから、訂正を行うことで適切に置換前RSブロックを得ることができる。そして、この場合も置換前RSブロックと置換後RSブロックとの差分をとることによって、隠蔽情報語を得ることができる。また、置換前RSブロックの予め特定された位置からデータ語を抽出することにより情報本体を得ることができる。
【0176】
このように、差分に基づいて隠蔽情報語を抽出する手法は、QRコードシンボルに汚損が生じにくく、RSブロックにも汚損が生じにくい場合に特に有効である。例えば、QRコードシンボルの画像データファイルを生成し、これをファイルとして取り込み、隠蔽情報語等を抽出する場合には、QRコードシンボルが外部に曝される機会がないため、汚損が生ずることがありえない。
【0177】
この手法によれば、前述のように、特段ヘッダデータコード語等を設けなくても隠蔽情報語を特定することができるという利点がある。これは、より多くの隠蔽情報語で置換をすることができるという利点になる。
【0178】
隠蔽情報語として読み取ったコード語が隠蔽情報語であるのか否かの判定は、第1実施形態と同様に、訂正前のRSブロックと訂正後のRSブロックとの間に所定割合以上の差異があったときには隠蔽情報語であったと判定(すなわち、QRコードシンボルは第6実施形態におけるQRコードシンボルであると判定)し、所定割合以上の差異がなかったときには隠蔽情報語ではなかったと判定(すなわち、QRコードシンボルは一般的なQRコードシンボルであると判定)して隠蔽情報語を表示しないこととすることができる。これは、隠蔽情報語として置換が行われている場合には、置換前RSブロックと置換後RSブロックとの間の所定割合以上の差異が確実に生ずるものであるという理由に起因する。
【0179】
ところで、差分による上記のような手法でデコードを行った場合、置換前データブロックと置換後データブロックの隠蔽情報語で置換される部分において、きわめて希にではあるが、偶然に同じ語となった部分がある場合には、その部分は差分として抽出されないという問題がある。この場合、ヘッダデータコード語、および、隠蔽情報語に含まれる各語は必ず連続で置換されることとしておく。
【0180】
図24は、第6実施形態における手法でRSブロックの一部を置換したときの第3の説明図である。ここでは、ヘッダデータコード語の各語と隠蔽情報語の各語が連続して配置されるという規則を適用する。このような規則を適用することで、これらの語は必ず連続して置換されていることになるので、たとえ偶然に同じ語となることで欠落した語があったとしても、偶然一致してしまった語で欠落部分を埋めることで情報を補完することができる。
【0181】
ところで、このようにRSブロックの端部以外でコード語の欠落が生じた場合には単に対応する位置のデータコード語でその欠落部分を埋めればよい。しかし、RSブロックの端部で欠落が生じた場合には、その欠落が先端部分で生じたのか後端部分で生じたのかを特定すること自体が困難となる。よって、この場合には、次に説明するように、端部についていくつかの補完を行って、検証を行う。
【0182】
図25は、一部欠落したRSブロックの説明図である。
図25には、欠落のないRSブロックと、データコード語の先端部分が欠落したRSブロック(以下、先端欠落RSブロックと呼ぶ)と、訂正コード語の後端部分が欠落したRSブロック(以下、後端欠落RSブロックと呼ぶ)と、両端部分が欠落したRSブロック(以下、両端欠落RSブロックと呼ぶ)が示されている。なお、説明の便宜上、各セル内に具体的なコード語は示されていない。これらの図において、欠落したコード語の部分は、破線で示されている。このように、RSブロックの端部が欠落するケースとしては、これらの3つのケースがあることになる。
【0183】
これらのようなRSブロックについては、可能な組み合わせで先端及び後端に補完を行う。そして、全ての組み合わせについて、(1)補完されたRSブロックで訂正処理が機能するか、(2)訂正処理が機能したとしてその訂正結果がブロック構成構文として正しいか、の検証を行う。
【0184】
図26は、先端欠落RSブロックの補完の説明図である。
図26には、先端欠落RSブロックに対して誤った補完が行われたRSブロックが示されている。先端欠落RSブロックは、本来、先端部分について補完が行われるべきであるが、欠落したRSブロックを見ただけでは先端部分が欠落しているのか後端部分か欠落しているのかは分からない。そのため、先端部分の補完を行ったRSブロックと、後端部分の補完を行ったRSブロックとの両方を生成する。そして、補完を行った両方のRSブロックについて、訂正コード語を用いて訂正を行うことになる。
【0185】
先端部分の補完を行ったRSブロックは、正しいRSブロックとなるため、適切に訂正処理が行われ、訂正結果としてもブロック構成構文として正しい結果となる。
【0186】
これに対し、後端部分の補完を行ったRSブロックは、
図26に示されるように、想定される語長から訂正コード語の位置が推定され、その結果、誤った位置が訂正コード語の位置であるとして特定されてしまう。このように誤って訂正コード語であると認識された領域のコード語に基づいて訂正が行われるため、適切に訂正は行われないことになる。
【0187】
なお、ここでは、1語分の欠落が生じたものとして説明を行ったが、欠落した語数が複数語であっても、特定される訂正コード語の位置は誤った位置となることから、やはり適切に訂正は行われないことになる。
【0188】
図27は、後端欠落RSブロックの補完の説明図である。
図27には、後端欠落RSブロックに対して誤った補完が行われたRSブロックが示されている。後端欠落RSブロックは、本来、後端部分について補完が行われるべきであるが、やはりこの場合も、欠落したRSブロックを見ただけでは先端部分が欠落しているのか後端部分か欠落しているのかは分からない。そのため、この場合も、先端部分の補完を行ったRSブロックと、後端部分の補完を行ったRSブロックとの両方を生成する。そして、補完を行った両方のRSブロックについて訂正コード語を用いて、訂正を行うことになる。
【0189】
後端部分の補完を行ったRSブロックは、正しいRSブロックとなるため、適切に訂正処理が行われ、訂正結果としてもブロック構成構文として正しい結果となる。
【0190】
これに対し、先端部分の補完を行ったRSブロックは、
図27に示されるように、想定される語長から訂正コード語の位置が推定され、その結果、誤った位置が訂正コード語の位置であるとして特定されてしまう。このように誤って訂正コード語であると認識された領域のコード語に基づいて訂正が行われるため、適切に訂正は行われないことになる。
【0191】
なお、ここでも、1語分の欠落が生じたものとして説明を行ったが、欠落した語数が複数語であっても、特定される訂正コード語の位置は誤った位置となることから、やはり適切に訂正は行われないことになる。
【0192】
図28は、両端欠落RSブロックの補完の説明図である。
図28には、両端欠落RSブロックに対して誤った補完が行われた2つのRSブロックが示されている。ここでは、1語ずつ各端部で欠落が生じていることを想定している。このような両端欠落RSブロックにおいて、本来、先端部分と後端部分について1語ずつの補完が行われるべきではあるが、やはりこの場合も欠落したRSブロックを見ただけでは、どのような形態で欠落が生じているのかが分からない。
【0193】
そのため、この場合には、先端部分に2語の補完を行ったRSブロックと、後端部分に2語の補完を行ったRSブロックと、各端部分に1語ずつの補完を行ったRSブロックを生成することになる。そして、それぞれ補完したRSブロックについて、訂正ブロックを用いて訂正することになる。その後の検証方法は、先端欠落RSブロックにて補完を行った場合および後端欠落RSブロックにて補完を行った場合と同様であるので、説明を省略する。
【0194】
このようにして、考えられる全てのケースの補完を行って検証を行うことで、適切に補完がされたRSブロックを得ることができる。
【0195】
ここでは、上記の3ケースについて説明を行ったが、欠落したデータコード語の数に応じて検証するべき数が変化する。
【0196】
例えば、前述のように、データコード語が1語欠落する場合は、先端部分が1語欠落する場合と、後端部分が1語欠落する場合の2ケースが考えられることになる。
【0197】
また、データコード語が2語欠落する場合は、先端部分が2語欠落する場合と、先端部分が2語欠落しかつ後端部分が1語欠落する場合と、後端部分が2語欠落する場合の3ケースが考えられることになる。
【0198】
また、データコード語が3語欠落する場合は、先端部分が3語欠落する場合と、先端部分が2語欠落しかつ後端部分が1語欠落する場合と、先端部分が1語欠落しかつ後端部分が2語欠落する場合と、後端部分が3語欠落する場合の4ケースが考えられることになる。
【0199】
これらの規則性からすると、端部でN語欠落している場合には、(N+1)種類の検証を行うことになる。そして、(N+1)種類の検証を行った後、適切に訂正を行えたものを採用することができる。
【0200】
このように、先端部分や後端部分に欠落が生じた場合であっても、これに対応するケースだけ補完を行ったRSブロックを生成し、それぞれを検証することによって、適切に正しい補完を行うことができる。なお、極めて希に、誤った補完を行ったRSブロックにおいて訂正機能が成立してしまう場合も有りうるが、この場合、訂正後のブロックが定められたフォーマットにしたがっていない等の不具合を有することになる。そのため、これに基づいて、正常な補完ではないと判定することができる。
【0201】
===第7実施形態===
第7実施形態では、置換前RSブロックを隠蔽情報語で置換するときにおいて、マスクパターン参照子MPRで特定される語数の位置で置換が行われる。マスクパターン参照子MPRは、JIS規格におけるマスクパターン(本説明中において「標準マスクパターン」と呼ぶ)を特定する参照子である。第7実施形態では、このマスクパターン参照子MPRを隠蔽情報語での置換位置の特定に利用することにより、第三者からの隠蔽情報語の抽出をより困難にしている。
【0202】
マスクパターン参照子MPRは、QRコードシンボル1の形式情報FIに含まれる。形式情報FIには、さらに誤り訂正レベルが含まれている。なお、JIS規格において、標準マスクパターンによるマスキングは、符号化領域のうち、形式情報FIおよび型番情報VIを除いた領域にのみ適用されるため、マスクパターン参照子MPRも標準マスクパターンによってマスキングされないことになる。
【0203】
図29は、第7実施形態におけるQRコードシンボル生成方法のフローチャートである。以下、本フローチャートを参照しつつ、第7実施形態におけるQRコードシンボル生成方法の説明を行う。
【0204】
まず、QRコードシンボル1に埋め込まれる情報本体および隠蔽情報語が取り込まれる(S302)。次に、情報本体および隠蔽情報語に基づいてQRコードシンボル1の型番が決定される(S304)。次に、情報本体のコード語に基づいてRSブロックが生成される(S306)。これらステップS302からS306における情報本体と隠蔽情報語の取り込み、型番の決定、および、RSブロックの生成については第1実施形態と同様の手法が用いられるため説明を省略する。
【0205】
次に、マスクパターン参照子MPRの値が「0」に初期化される(S308)。JIS規格のマスクパターン参照子MPRによれば、マスクパターン参照子MPRの値は0から7(「000」から「111」)までの数値を有する。そこで、ここでは、マスクパターン参照子MPRの値を0から7まで変化させ、後述するステップS310からステップS314の処理を繰り返し行わせる。そのために、マスクパターン参照子MPRの値を「0」に初期化するのである。
【0206】
次に、マスクパターン参照子MPRで特定される位置(置換位置)で隠蔽情報語での置換が行われる(S310)。ここでは、置換前RSブロックの先頭からマスクパターン参照子MPRの値の語数だけオフセットさせられた位置で隠蔽情報語での置換が行われる。例えば、マスクパターン参照子MPRの値が「0」である場合には、置換前RSブロックの先頭から隠蔽情報語に置換がされることになる。前述のように、マスクパターン参照子MPRは0から7までの値を有することから、マスクパターン参照子MPRは隠蔽情報語の置換位置として8種類の位置を規定することができる。
【0207】
図30は、第7実施形態による手法でRSブロックの一部を置換したときの説明図である。
図30では、マスクパターン参照子MPRの値が「6」である場合であって、置換前RSブロックの先頭から6語分オフセットさせた位置で隠蔽情報語での置換がされる様子が示されている。
【0208】
なお、マスクパターン参照子MPRの値と同じ語数分オフセットさせた位置を隠蔽情報語での置換位置とする手法は、マスクパターン参照子MPRで置換位置を特定する最も単純な形態であり、実施形態はこれに限られない。マスクパターン参照子MPRの値に応じた位置を予め規定しておき、これに応じて置換位置が特定することとしてもよい。
【0209】
次に、このようにしてRSブロックの一部が置換された置換後RSブロックに基づいて、標準マスクパターン適用前のQRコードシンボルが生成される(S312)。そして、標準マスクパターン適用前のQRコードシンボルに対して、マスクパターン参照子MPRで特定される標準マスクパターンが適用される(S314)。標準マスクパターンの適用については、JIS規格に準ずるため説明を省略する。
【0210】
次に、マスクパターン参照子MPRの値が7であるか否かが判定される(S316)。これにより、マスクパターン参照子MPRの値が0から7までの全てのケースについて、ステップS310からステップS314までの処理を行ったか否かの判定がなされることになる。そして、ステップS316において、マスクパターン参照子MPRの値が7ではない場合には、マスクパターン参照子MPRの値をインクリメントする(S318)
【0211】
一方、ステップS316においてマスクパターン参照子MPRの値が「7」である場合には、これまでの処理で、マスクパターン参照子MPRの値を0から7まで変化させたときの全てのQRコードシンボルが生成されていることになる。そこで、これらの8個のQRコードシンボルが評価され最適なQRコードシンボルパターンが特定される(S320)。
【0212】
ステップS320におけるQRコードシンボルの評価は、JIS規格における「マスク処理結果の評価」が適用されるため説明を省略する。この評価処理を行うことにより、モジュールが適度にばらついたQRコードシンボルが特定されることになる。
【0213】
次に、ステップS320において特定されたQRコードシンボルが出力される(S320)。QRコードシンボルの出力は、表示装置13に表示させることとしてもよいし、印刷装置14により印刷させることとしてもよい。
【0214】
このようにすることで、QRコードシンボルに適用された標準マスクパターンを特定するマスクパターン参照子MPRが、隠蔽情報語で置換する位置を特定することにも用いられる。標準マスクパターンが8種類存在するため、マスクパターン参照子MPRの値も8種類の数値を有する。そのため、適用される標準マスクパターンに応じて隠蔽情報語で置換する位置も変化させることができる。これにより、第三者にとっては隠蔽情報語の位置を特定することが困難となり、隠蔽情報語の抽出をより困難なものとすることができる。
【0215】
また、第7実施形態の手法によれば、マスクパターン参照子MPRの値を0から7まで変化させて生成した全てのQRコードシンボルをステップS320で評価してみるまで、どの位置に隠蔽情報語を配置したものが最適なQRコードシンボルとなるのか分からない。そのため、ステップS320で評価するまで、どの位置で隠蔽情報語での置換が行われたQRコードシンボルが採用されるのかが分からないことになる。このように、予め隠蔽情報語の置換位置を決めておくことができないので、より隠蔽情報語の位置の特定を困難なものとすることができる。そして、隠蔽情報語の抽出をより困難なものとすることができる。
【0216】
なお、標準マスクパターンの適用については、ステップS310の隠蔽情報語の置換処理よりも前に行わせることもできる。ただし、QRコードシンボルにおけるモジュールの分散性という観点からすれば、標準マスクパターンの適用はステップS310の隠蔽情報語の置換処理よりも後に行われることが望ましい。
【0217】
なお、前述の第1実施形態においても、ステップS108の後に標準マスクパターンによるマスキングが行われることになる。このとき、マスクパターン参照子MPR「0」から「7」のすべての標準マスクパターンが適用される。そして、第7実施形態におけるステップS320と同様に、これらのQRコードシンボル中から最適なQRコードシンボルとなるものが選択されることになる。
【0218】
標準マスクパターンによるマスキングは、符号化領域のうち形式情報FIおよび型番情報VIを除いた領域にのみ適用されるので、マスクパターン参照子MPRは標準マスクパターンによるマスキングの影響を受けない。よって、QRコードシンボルの読み取り時において、形式情報FIからマスクパターン参照子MPRを適切に読み出して、標準マスクパターンを解除することができる。
【0219】
次に、第7実施形態におけるQRコードシンボルの読み取り方法を説明する。
図31は、第7実施形態におけるQRコードシンボル読み取り方法のフローチャートである。以下、本フローチャートと前述の
図30を参照しつつ、第7実施形態におけるQRコードシンボル読み取り方法の説明を行う。
【0220】
まず、拡張QRコードシンボルの読み取りが行われる(S402)。拡張QRコードシンボルの読み取りについては、第1実施形態と同様の手法が用いられるため、説明を省略する。
【0221】
次に、マスクパターン参照子MPRの値の読み出しが行われる(S404)。マスクパターン参照子MPRは、前述のように形式情報FIに含まれる情報である。形式情報FIは、QRコードシンボル1において、標準マスクパターンによってマスキングされていない。そのため、形式情報FIはJIS規格の手法で適切に読み出すことができる。そして、形式情報FIに含まれるマスクパターン参照子MPRを特定することができる。
【0222】
次に、QRコードシンボルの標準マスクパターンが解除される(S406)。QRコードシンボル1に適用された標準マスクパターンは、マスクパターン参照子MPRによって特定することができる。そして、特定された標準マスクパターンを用いてQRコードシンボル1に適用された標準マスクパターンの解除が行われる。
【0223】
次に、標準マスクパターンが解除されたQRコードシンボルから複数のRSブロック(ここでは、置換後RSブロック)が展開される。そして、マスクパターン参照子MPRに基づいて置換後RSブロックにおける隠蔽情報語の位置が特定される(S408)。ここでは、置換後RSブロックの先頭からマスクパターン参照子MPRの値の語数だけオフセットさせた位置が隠蔽情報語の先頭位置として特定される。
【0224】
再度、
図30を参照する。例えば、マスクパターン参照子MPRの値が「6」である場合には、
図30に示されるように、隠蔽情報語の開始位置は置換後RSブロックの先頭から6語分オフセットした位置ということになる。
【0225】
次に、特定された隠蔽情報語の位置から隠蔽情報語が抽出される(S410)。また、置換後RSブロックについて、リード・ソロモン符号を用いた訂正がなされる(S412)。リード・ソロモン符号による訂正が行われることにより、置換後RSブロックは置換前RSブロックへと変換される。そして、置換前RSブロックから情報本体を抽出することができる。
【0226】
次に、得られた情報本体と隠蔽情報語が出力される(S414)。これらの出力は、表示装置13に表示させることとしてもよいし、印刷装置14により印刷させることとしてもよい。
【0227】
なお、上記説明によれば、マスクパターン参照子MPRに基づいて隠蔽情報語の位置を規定していたが、さらに、QRコードシンボルの型番情報を利用して隠蔽情報語の位置を規定してもよい。QRコードの型番は、JIS規格において1型から40型の40種類を有する。よって、マスクパターン参照子MPR(8種類)にさらに40種類の組み合わせを適用して、計320種類の位置を規定することができるようになる。
【0228】
また、これらの組み合わせに加えて、QRコードシンボルのエラー訂正のレベル情報を組み合わせてもよい。JIS規格において、エラー訂正レベルは「L」「M」「Q」「H」の4種類を有している。よって、これら4種類の組み合わせをさらに適用することで、計1280種類の位置を規定することができるようになる。
【0229】
また、特定された位置から連続して隠蔽情報語を置換することとしたが、前述の
図18のように隠蔽情報語を分散的に置換することとしてもよい。
【0230】
===第8実施形態===
図32は、第8実施形態による手法でRSブロックの一部を置換したときの説明図である。第8実施形態では、前述の第2実施形態と同様に、置換前RSブロックの一部がヘッダデータコード語と隠蔽情報語とで置換され、置換後RSブロックが生成される。また、このとき、ヘッダデータコード語が示す位置で隠蔽情報語での置換が行われる。
【0231】
また、第8実施形態は、マスクパターン参照子MPRの値で置換位置が特定される点で第7実施形態と共通する。そこで、第7実施形態で用いたフローチャートの一部を変更しつつ、第8実施形態におけるQRコードシンボルの生成方法について説明する。
【0232】
ステップS302からステップS308の処理は、第7実施形態と同様である。よって、説明を省略する。第8実施形態において第7実施形態と異なるのは、ステップS310の処理である。第8実施形態では、置換前RSブロックの先頭からマスクパターン参照子MPRの値と同じ語数分オフセットさせた位置を先頭位置として、ヘッダデータコード語による置換が行われる。また、ヘッダデータコード語で特定される位置で、隠蔽情報語での置換前RSブロックの一部の置換が行われる。
【0233】
図32では、マスクパターン参照子MPRが「2」である場合であって、置換前RSブロックの先頭から2語分オフセットさせた位置でヘッダデータコード語での置換がされる様子が示されている。また、このヘッダデータコード語は、隠蔽情報語の置換位置として、置換前RSブロックの先頭から8語オフセットさせた位置を表すものとする。そのため、置換前RSブロックの先頭から8語オフセットさせた位置で隠蔽情報語による置換が行われている。
【0234】
以下、ステップS312からステップS322の処理は第7実施形態と同様であるので説明を省略する。
【0235】
なお、ヘッダデータコード語による置換位置と隠蔽情報語による置換位置であるが、これらの位置は互いに重ならないことが望ましい。これらが重なり合ってしまうと、ヘッダデータコード語と隠蔽情報語の少なくともいずれか一方が正確に復元できなくなってしまうためである。
【0236】
次に、第7実施形態で用いたフローチャートの一部を変更しつつ、第8実施形態におけるQRコードシンボルの読み取り方法について説明する。
【0237】
ステップS402からステップS406の処理は第7実施形態と同様である。よって、説明を省略する。第8実施形態において第7実施形態と異なるのは、ステップS408とステップS410の処理である。第8実施形態ではステップS408において、マスクパターン参照子MPRの値に基づいてヘッダデータコード語の位置を特定し、抽出する。そして、ステップS410において、ヘッダデータコード語を用いて隠蔽情報語の位置を特定し、隠蔽情報語の抽出を行う。
【0238】
以下、ステップS412からステップS414の処理は第7実施形態と同様であるので説明を省略する。
【0239】
このようにすることで、QRコードシンボルに適用された標準マスクパターンを特定するマスクパターン参照子MPRが、ヘッダデータコード語で置換する位置を特定することにも用いられる。標準マスクパターンが8種類存在するため、マスクパターン参照子MPRの値も8種類の数値を有する。そのため、適用される標準マスクパターンに応じてヘッダデータコード語で置換する位置も変化させることができる。これにより、第三者にとってはヘッダデータコード語の位置を特定することが困難となり、隠蔽情報語の抽出をより困難なものとすることができる。
【0240】
また、第8実施形態の手法によれば、マスクパターン参照子MPRの値を0から7まで変化させて生成した全てのQRコードシンボルをステップS320で評価してみるまで、どの位置にヘッダデータコード語を配置したものが最適なQRコードシンボルとなるのか分からない。ステップS320で評価するまで、どの位置でヘッダデータコード語での置換が行われたQRコードシンボルが採用されるのかが分からないことになる。このように、予めヘッダデータコード語の置換位置を決めておくことができないので、ヘッダデータコード語の位置の特定を困難なものとすることができる。そして、ヘッダデータコード語の位置すら特定することが困難となるので、隠蔽情報語の位置を特定することはさらに困難となり、隠蔽情報語の抽出を困難なものとすることができる。
【0241】
===第9実施形態===
第9実施形態では、置換前RSブロックを隠蔽情報語で置換するときにおいて、訂正コード語(RS符号)に基づいて置換する位置が特定される。以下、第1実施形態で用いたフローチャートの一部を変更しつつ、第9実施形態におけるQRコードシンボルの生成方法について説明する。
【0242】
ステップS102からステップS106の処理は、第1実施形態と同様である。よって、説明を省略する。第9実施形態で第1実施形態と異なるのは、ステップ106とステップS108の間に、訂正コード語に基づいて隠蔽情報語の置換位置が特定される点である。
【0243】
図33は、第9実施形態による手法でRSブロックの一部を置換する手法を説明する第1の図である。
図33には、置換前RSブロックが示されている。第9実施形態では、訂正コード語のある特定のバイト内の複数ビットに基づいて、隠蔽情報語の置換位置を特定している。具体的には、ここでは、訂正コード語の第3番目のバイトを抽出し、このバイトから下位4ビットを抽出する。そして、この下位4ビットの値を隠蔽情報語の置換位置とする。
図33では、下位4ビットの情報として「0010」が示されている。「0010」は十進数では「2」を表すが、ここでは、「0」を1番目の位置として特定させるので、「0010」は、先頭から3番目の位置を表す。次に、この置換位置に基づいて隠蔽情報語での置換が行われる(S108)。
【0244】
図34は、第9実施形態による手法でRSブロックの一部を置換する手法を説明する第2の図である。
図34には、置換前RSブロックの先頭から3番目のバイトの位置(3語目の位置)から隠蔽情報語での置換が行われることが示されている。このようにして、訂正コード語に基づいて隠蔽情報語での置換位置が特定され、置換が行われる。
【0245】
このように隠蔽情報語での置換が行われると(S108)、置換後RSブロックに基づいてQRコードが生成される(S110)。そして、標準マスクパターンによるマスキングが行われる。標準マスクパターンによるマスキングは、JIS規格に準ずる。
【0246】
訂正コード語は、データコード語に基づいて求められる。そのため、データコード語が異なれば、訂正コード語も異なることになる。よって、訂正コード語に基づいて置換位置を特定することで、データコード語が異なれば置換位置も異なることとなるので、第三者にとっては隠蔽情報語の位置を特定することが困難となる。そして、隠蔽情報語の抽出をより困難なものとすることができる。
【0247】
次に、第1実施形態で用いたフローチャートの一部を変更しつつ、第9実施形態におけるQRコードシンボルの読み取り方法について説明する。
【0248】
ステップS202からステップS04の処理は第1実施形態と同様である。よって、説明を省略する。第9実施形態において第1実施形態と異なるのは、ステップS206の処理である。第9実施形態では、訂正コード語のある特定のバイトのビットに基づいて、隠蔽情報語の置換位置を特定する。ここでは、前述のように、訂正コード語の第3番目のバイトを抽出する。そして、このバイトから下位4ビットを抽出し、この下位4ビットの表す値に基づいて隠蔽情報語の置換位置を特定する。このようにすることで、
図34に示されるように、適切に隠蔽情報語の位置を特定して、隠蔽情報語を抽出することができることになる。
【0249】
また、その後、訂正コード語を用いて置換後RSブロックを訂正することにより、適切にデータコード語も抽出することができる。
【0250】
抽出したデータの結果出力は、第1実施形態と同様(S108)であるので説明を省略する。
【0251】
なお、隠蔽情報語で置換前RSブロックの一部を置換する際、置換位置を特定するための訂正コード語のバイトも置換されてしまうおそれもある。このような場合には、先に訂正コード語により置換後RSブロックを訂正することとしてもよい。このようにすることで、置換前RSブロックを取得することができるから、置換位置を特定するための訂正コード語のバイトを適切に抽出することができる。
【0252】
また、上記説明では訂正コード語の第3番目のバイトを用いることとしたが、訂正コード語の他のバイトを用いることとしてもよいことは言うまでもない。また、下位4ビットを用いることで16通りの位置を特定することができるようになるが、さらに用いるビット数を多くして、特定する位置を増やすこともできる。
【0253】
また、以上の説明では、隠蔽情報語の置換位置を特定するために訂正コード語を用いることとしたが、第2実施形態のヘッダデータコード語の概念を導入し、このヘッダデータコード語の位置を前述の訂正コード語により特定するようにしてもよい。誤り訂正コード語は、データコード語に基づいて求められる。そのため、データコード語が異なれば、誤り訂正コード語も異なることになる。よって、誤り訂正コード語に基づいて置換位置を特定することで、データコード語が異なれば置換位置も異なることとなるので、第三者にとってはヘッダデータコード語の位置を特定することすら困難となる。隠蔽情報語の位置はヘッダデータコード語で特定されるものであるため、隠蔽情報語の抽出をより困難なものとすることができる。
【0254】
===適用例について===
上記のようなQRコードシンボルは、例えば、予約販売制のイベントやコンサートなどのチケットに印刷して使用することができる。このとき、「表示情報」としては、「イベント名」、「席情報」、「予約番号」、および、「URL」とすることができる。一方、隠蔽情報としては、「予約時の情報」とすることができる。「予約時の情報」とは、「性別」、「年齢」、「氏名」、「免許証」などのID情報や、「パスフレーズ」を採用することができる。
【0255】
このような条件下において、仮に、表示情報のみを利用して新たにQRコードを作成するような偽造行為があったとする。この場合、このQRコードシンボルには、隠蔽情報が存在しない。よって、このQRコードシンボルは偽造されたものであると特定することができる。
【0256】
また、第1実施形態から第6実施形態を用いて作製したQRコードシンボルをそのままコピーした用いた場合には、拡張デコーダ20によって隠蔽情報が読み出される。そして、隠蔽情報に含まれる「性別」、「年齢」、「免許証」のID情報や、「パスフレーズ」を本人と照合することにより、不正利用やなりすましを防止することができる。