(57)【要約】【課題】読み取られた二次元コードが、読み取りの際の条件に応じて二通りの異なるデコード結果が出力され得る特殊二次元コードであるか否かを判別することができる技術を提供する。【解決手段】制御部は、撮像部によって撮像された二次元コードを表わすコード画像に基づいて、二次元コードに記録された情報のデコードを行うデコード部と、デコードが行われたことによってデコード結果が取得される場合に、デコードの過程で誤り訂正処理が行われたか否かを判断する、第１の判断部と、誤り訂正処理が行われたと判断される場合に、デコード結果に対応する複数のコードワードのうち、誤り訂正処理が行われた範囲である訂正ワードを特定する、第１の特定部と、コード画像のうち、訂正ワードに対応する範囲を表わす対象部分を特定する、第２の特定部と、対象部分の全部がセルを表わす特徴を有しているか否かを判断する、第２の判断部と、を備える。【選択図】図４
2020160759.tif 000002
【特許請求の範囲】
【請求項１】
複数の明色セルと複数の暗色セルとを二次元のマトリックス上に配置して構成される二次元コードを撮像する撮像部と、
制御部と、を備えており、
前記制御部は、
前記撮像部によって撮像された前記二次元コードを表わすコード画像に基づいて、前記二次元コードに記録された情報のデコードを行うデコード部と、
前記デコードが行われたことによってデコード結果が取得される場合に、前記デコードの過程で誤り訂正処理が行われたか否かを判断する、第１の判断部と、
前記誤り訂正処理が行われたと判断される場合に、前記デコード結果に対応する複数のコードワードのうち、前記誤り訂正処理が行われた範囲である訂正ワードを特定する、第１の特定部と、
前記コード画像のうち、前記訂正ワードに対応する範囲を表わす対象部分を特定する、第２の特定部と、
前記対象部分の全部がセルを表わす特徴を有しているか否かを判断する、第２の判断部と、を備える、
二次元コード読取装置。
【請求項２】
前記第２の判断部は、前記対象部分に基づいて前記対象部分内の各部の明度を示す出力波形を取得し、取得された前記出力波形が前記セルを表わす特徴を示すか否かを判断することにより、前記対象部分の全部が前記セルを表わす特徴を有しているか否かを判断する、請求項１に記載の二次元コード読取装置。
【請求項３】
前記第２の判断部は、前記対象部分に基づいて前記対象部分内の各部の明度を二値化した二値化データを取得し、取得された前記二値化データが前記セルを表わす特徴を示すか否かを判断することにより、前記対象部分の全部が前記セルを表わす特徴を有しているか否かを判断する、請求項１に記載の二次元コード読取装置。
【請求項４】
前記制御部は、さらに、
（ａ）前記対象部分の全部が前記セルを表わす特徴を有していると判断される場合には、前記デコード結果を出力せず、又は、前記デコード結果とともに報知情報を出力し、（ｂ）前記対象部分の少なくとも一部が前記セル以外のオブジェクトを表わす特徴を有していると判断される場合には、前記デコード結果を出力する、出力制御部を備える、請求項１から３のいずれか一項に記載の二次元コード読取装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書で開示する技術は、二次元コード読取装置に関する。
【背景技術】
【０００２】
特許文献１に示すように、複数の明色セルと複数の暗色セルとを二次元のマトリックス上に配置して構成される二次元コードに記録された情報を読み取るための二次元コードが知られている。この種の二次元コードに記録された情報を読み取るために、二次元コード読取装置が用いられる。このような二次元コード読取装置は、通常、二次元コードを撮像する撮像部と、撮像部によって撮像された二次元コードを表わすコード画像に基づいて、二次元コードに記録された情報のデコードを行う制御部と、を備える。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特許第２９３８３３８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特許文献１の技術では、読み取り対象である１個の二次元コードには、本来、一種類の情報のみが記録されることが予定されている。即ち、特許文献１の技術では、特定のセル構成を有する特定の二次元コードが二次元コード読取装置で読み取られる場合、読み取られた結果として出力されるデコード結果は、毎回、特定の二次元コードに予め記録された特定の情報であることが予定されている。
【０００５】
しかしながら、近年、１個の二次元コードを構成する複数のセルのうちの１個のセルを、意図的に明色と暗色の中間色で表示したり、意図的に明色部と暗色部とに分割して表示したりする特殊セルとした特殊二次元コードが、例えば不正の目的等で使用される事態が確認されている。このような特殊二次元コードが二次元コード読取装置によって読み取られる場合、読み取りの際の諸条件（例えば、特殊二次元コードが撮像される際の光の加減等）に応じて、特殊セルが、暗色セルとして読み取られる場合と、明色セルとして読み取られる場合とがある。そして、特殊セルが暗色セルとして読み取られる場合と、明色セルとして読み取られる場合とによって、二通りの異なるデコード結果が出力されてしまうことがある。その結果、特殊二次元コードが読み取られた際、二次元コード読取装置の利用者が意図しないデコード結果（例えば、有害サイトのＵＲＬ等）が出力されてしまう等の不都合が発生する場合もある。
【０００６】
本明細書では、読み取られた二次元コードが、読み取りの際の条件に応じて二通りの異なるデコード結果が出力され得る特殊二次元コードであるか否かを判別することができる技術を提供する。
【０００７】
本明細書が開示する二次元コード読取装置は、複数の明色セルと複数の暗色セルとを二次元のマトリックス上に配置して構成される二次元コードを撮像する撮像部と、制御部と、を備えている。前記制御部は、前記撮像部によって撮像された前記二次元コードを表わすコード画像に基づいて、前記二次元コードに記録された情報のデコードを行うデコード部と、前記デコードが行われたことによってデコード結果が取得される場合に、前記デコードの過程で誤り訂正処理が行われたか否かを判断する、第１の判断部と、前記誤り訂正処理が行われたと判断される場合に、前記デコード結果に対応する複数のコードワードのうち、前記誤り訂正処理が行われた範囲である訂正ワードを特定する、第１の特定部と、前記コード画像のうち、前記訂正ワードに対応する範囲を表わす対象部分を特定する、第２の特定部と、前記対象部分の全部がセルを表わす特徴を有しているか否かを判断する、第２の判断部と、を備える。
【０００８】
上記の通り、近年、１個の二次元コードを構成する複数のセルのうちの１個のセルを、読み取り時の条件によって暗色セルと明色セルの二通りに読み取られ得る特殊セルとした特殊二次元コードが、例えば不正の目的等で使用される事態が確認されている。例えば、特殊セルは、意図的に暗色と明色の中間色で表示されたり、意図的に暗色部と明色部とに分割して表示されたりする。
【０００９】
一方、そのような特殊セルを含まない通常の二次元コードにおいても、印字の際の不具合等により、上記の特殊セルと同様の表示態様のセルが偶発的に含まれる場合がある。また、二次元コードが汚れたり削れたりすることにより、二次元コードを構成する複数のセルのうちの一部が、明色セル（又は暗色セル）に変わってしまう事態も起こり得る。ただし、通常であれば、二次元コード読取装置がそのような通常の二次元コードを読み取る場合、公知の誤り訂正処理が行われることにより、所定の最大誤り訂正許容率（例えば、７％、１５％、２５％、３０％等）以下の割合の誤り（汚損、損傷、欠け等）は訂正される。そのため、通常であれば、何らかの事情で二次元コードに所定割合までの特殊セルが含まれた場合であっても、二次元コード読取装置は、誤り訂正処理を行った上で、予め二次元コードに記録された情報をデコード結果として出力することができる。
【００１０】
ここで、「最大誤り訂正許容率」とは、二次元コードが汚損等している場合においても、情報をデコードし得る許容率の最大値のことである。例えば最大誤り訂正許容率が２５％である二次元コードの場合、二次元コードの情報記録領域に含まれる複数個のセルブロックのうちの２５％が損傷している場合であっても、読取装置は当該二次元コードからデータをデコード可能であることを意味する。ここで言う１個の「セルブロック」は、８個のセルを単位とするセル群によって構成されるセル群単位である。デコードの過程では、１個の「セルブロック」からは１個のコードワードが抽出される。そして、最大誤り訂正許容率のレベルは、二次元コード毎に予め設定されている。二次元コードは、最大誤り訂正許容率を示すデータも含んでいる。従って、最大誤り訂正許容率のレベルが高いほど、二次元コードに誤りを含むセルブロックが含まれる割合が高い場合であってもデータを正しくデコードすることが可能となる。
【００１１】
しかしながら、本件発明者等の分析の結果、近年確認されている上記の特殊二次元コードは、特殊セルが暗色セルとして読み取られる場合と、明色セルとして読み取られる場合と、のどちらの場合においても、特殊セルを含むセルブロック以外の部分において、最大誤り訂正許容率に対応する数のセルブロック（即ち、最大誤り訂正許容率の限界値のセルブロック）に対する誤り訂正処理が実行されるよう、意図的かつ精密に設定されていることが判明した。その結果、特殊二次元コードが読み取られた際に、特殊セルを含むセルブロックが「誤り」として処理されることなく、特殊セルが暗色セル又は明色セルとして読み取られた状態でデコードが成功してしまう事態が発生する。その結果、特殊セルが暗色セルとして読み取られる場合と、明色セルとして読み取られる場合とによって、二通りの異なるデコード結果が出力されてしまう事態が起こる。その結果、特殊二次元コードが読み取られた際、二次元コード読取装置の利用者が意図しない読取結果（例えば、有害サイトのＵＲＬ等）がデコード結果として出力されてしまう等の不都合が発生する場合もある。
【００１２】
これに対し、上記の構成を有する本明細書の二次元コード読取装置によると、制御部は、二次元コードを表わすコード画像に基づいてデコードを行うことでデコード結果が取得される場合に、デコードの過程で誤り訂正処理が行われたか否かを判断する。そして、制御部は、誤り訂正処理が行われたと判断される場合に、デコード結果に対応する複数のコードワードのうち、誤り訂正処理が行われた範囲である訂正ワードを特定する。そして、制御部は、コード画像のうち、訂正ワードに対応する範囲を表わす対象部分を特定し、その対象部分の全部がセルを表わす特徴を有しているか否かを判断する。ここで、「コードワード」は、二次元コードに含まれるセルブロック（即ち、８個のセルによって構成されるセル群）のデコード結果を表わす文字列（英数字の組合せ）である。
【００１３】
対象部分の全部がセルを表わす特徴を有している場合、二次元コードの対象部分（即ち、誤り訂正処理が行われた範囲）には、汚損、損傷、欠け等が発生していなかった可能性が高い。即ち、対象部分は、誤り訂正処理が行われるように意図的に設けられた部分である可能性が高い。この場合、読み取られた二次元コードが、上記の特殊二次元コードである可能性が高いと言える。
【００１４】
一方、対象部分の少なくとも一部がセル以外のオブジェクトを表わす特徴を有していると判断される場合には、二次元コードの対象部分（即ち、誤り訂正処理が行われた範囲）には、汚損、損傷、欠け等が発生していた可能性が高い。即ち、対象部分は、誤り訂正処理が行われるように意図的に設けられた部分ではなかった可能性が高い。この場合、読み取られた二次元コードが、上記の特殊二次元コードではない可能性が高いと言える。
【００１５】
従って、上記の二次元コード読取装置によれば、対象部分の全部がセルを表わす特徴を有しているか否かを判断することによって、読み取られた二次元コードが、読み取りの際の条件に応じて二通りの異なるデコード結果が出力され得る特殊二次元コードであるか否かを判別することができる。
【００１６】
前記第２の判断部は、前記対象部分に基づいて前記対象部分内の各部の明度を示す出力波形を取得し、取得された前記出力波形が前記セルを表わす特徴を示すか否かを判断することにより、前記対象部分の全部が前記セルを表わす特徴を有しているか否かを判断してもよい。
【００１７】
二次元コードに含まれる各セル（明色セル、暗色セル）は、いずれも、所定の明度で表示されるとともに、所定長さの辺を有する正方形である。そのため、二次元コードの対象部分の各部の明度を示す出力波形は、明色セルと暗色セルとの間で明確な境界を有する。また、明色セルを表わす波形の長さ、暗色セルを表わす波形の長さも予め定められた範囲の長さを有する。即ち、汚損、損傷、欠け等が発生していない二次元コードの出力波形には所定の規則性がみられる。一方、二次元コードに汚損、損傷、欠け等が発生していた場合、出力波形は不規則になる。
【００１８】
従って、上記の構成によると、二次元コード読取装置は、対象部分内の各部の明度を示す出力波形に基づいてセルを表わす特徴を示すか否かを判断することにより、読み取られた二次元コードが特殊二次元コードであるのか否かを適切に判別することができる。
【００１９】
前記第２の判断部は、前記対象部分に基づいて前記対象部分内の各部の明度を二値化した二値化データを取得し、取得された前記二値化データが前記セルを表わす特徴を示すか否かを判断することにより、前記対象部分の全部が前記セルを表わす特徴を有しているか否かを判断してもよい。
【００２０】
二次元コードに含まれる各セル（明色セル、暗色セル）は、いずれも、所定の明度で表示されるとともに、所定長さの辺を有する正方形である。そのため、二次元コードの対象部分の各部の明度を二値化した二値化データは、明色セルと暗色セルとの間で明確な境界を有する。また、明色セルを表わす二値化データの上下左右の長さ、暗色セルを表わす二値化データの上下左右の長さ（データ数）も予め定められた範囲の長さを有する。即ち、汚損、損傷、欠け等が発生していない二次元コードの二値化データには所定の規則性がみられる。一方、二次元コードに汚損、損傷、欠け等が発生していた場合、二値化データは不規則になる。
【００２１】
従って、上記の構成によると、二次元コード読取装置は、対象部分内の各部の明度を二値化した二値化データに基づいてセルを表わす特徴を示すか否かを判断することにより、読み取られた二次元コードが特殊二次元コードであるのか否かを適切に判別することができる。
【００２２】
前記制御部は、さらに、（ａ）前記対象部分の全部が前記セルを表わす特徴を有していると判断される場合には、前記デコード結果を出力せず、又は、前記デコード結果とともに報知情報を出力し、（ｂ）前記対象部分の少なくとも一部が前記セル以外のオブジェクトを表わす特徴を有していると判断される場合には、前記デコード結果を出力する、出力制御部を備えてもよい。
【００２３】
上記の通り、対象部分の全部がセルを表わす特徴を有している場合、読み取られた二次元コードが、上記の特殊二次元コードである可能性が高いと言える。一方、対象部分の少なくとも一部がセル以外のオブジェクトを表わす特徴を有していると判断される場合には、読み取られた二次元コードが、上記の特殊二次元コードではない可能性が高いと言える。そのため、上記の構成によると、読み取られた二次元コードが、上記の特殊二次元コードである可能性が高い場合には、デコード結果を出力しない、又は、デコード結果とともに報知情報を出力することにより、二次元コード読取装置の利用者に、読み取られた二次元コードが特殊二次元コードである可能性が高いことを把握させることができる。
【００２４】
なお、上記の二次元コード読取装置を実現するための制御方法、コンピュータプログラム、及び、当該コンピュータプログラムを記憶するコンピュータ読取可能記録媒体も、新規で有用である。
【図面の簡単な説明】
【００２５】
【図１】情報コード読取装置の概要を示す。
【図２】特殊二次元コードを表わすコード画像の一例を示す。
【図３】図２のコード画像において、特殊セルが明色セルとして読み取られた場合に得られるコードワードと暗色セルとして読み取られた場合に得られるコードワードを示す。
【図４】二次元コード読取処理のフローチャートを示す。
【図５】特殊二次元コードの対象部分の出力波形及び二値化データの一例を示す。
【図６】汚損した二次元コードの対象部分の出力波形及び二値化データの一例を示す。
【図７】特殊二次元コードを表わすコード画像の他の一例を示す。
【発明を実施するための形態】
【００２６】
（第１実施例）
（二次元コード読取装置１０の構成；図１）
図１に示す本実施例の二次元コード読取装置１０は、例えば、端末機器のディスプレイや紙などに表示された二次元コード１００を読み取って、二次元コード１００に記録されたデータを取得するための装置である。図１の例では、読み取りの対象の二次元コード１００は、ＱＲコード（本件出願人の登録商標）である。二次元コード１００は、複数の明色セルと複数の暗色セルとを二次元のマトリックス上に配置して構成されている。他の例では、読み取りの対象の二次元コード１００は、他のマトリックス形式の二次元コードであってもよい。
【００２７】
本実施例の二次元コード読取装置１０は、例えば、ユーザが所持するスマートフォン等の端末装置である。図１に示すように、二次元コード読取装置１０は、操作部１２と、表示部１４と、撮像部１６と、制御部２０と、メモリ２２と、を備える。
【００２８】
操作部１２は、１個以上のキーを含む。ユーザは、操作部１２を操作して、様々な指示を二次元コード読取装置１０に入力することができる。表示部１４は、読み取られた二次元コード１００のデコード結果を含む様々な情報を表示させるためのディスプレイである。また、操作部１２と表示部１４は、両者が一体に構成されたタッチパネルであってもよい。撮像部１６は、所定の撮影可能範囲内の画像を撮影可能なＣＣＤカメラである。撮像部１６が二次元コード１００を撮像することにより、二次元コード１００を表わすコード画像Ｃ（図１、図２等参照）が取得される。
【００２９】
制御部２０は、メモリ２２に記憶されているプログラムに従って、後述のコード読取処理（図４参照）を含む様々な処理を実行する。本実施例では、制御部２０がコード読取処理を実行することにより、二次元コード１００に記録されたデータを取得し、出力することができる。メモリ２２は、ＲＯＭ（Read Only Memoryの略）、ＲＡＭ（Random Access Memoryの略）等によって構成される。上記の通り、メモリ２２は、ＯＳプログラム、上述のコード読取処理を実行するための読取アプリケーションプログラム等、様々なプログラムを記憶している。さらに、メモリ２２は、後述のコード読取処理の実行過程において生成される様々なデータを記憶するための一時記憶領域も有している。
【００３０】
（特殊二次元コードの構成及び仕組み；図２、図３）
上記の通り、二次元コード読取装置１０は二次元コード１００を読み取り対象とする。一方、近年、１個の二次元コードを構成する複数のセルのうちの１個のセルを、条件によって暗色セルと明色セルの二通りに読み取られ得る特殊セルとした二次元コード（以下では「特殊二次元コード」と呼ぶ）が、例えば不正の目的等で使用される事態が確認されている。ここで言う「特殊セル」は、意図的に暗色と明色の中間色で表示されたり、意図的に暗色部と明色部とに分割して表示されたりしている。このような特殊二次元コードが従来の二次元コード読取装置によって読み取られる場合、読み取りの際の諸条件（例えば、特殊二次元コードが撮像される際の光の加減等）に応じて、特殊セルが、明色セルとして読み取られる場合と、暗色セルとして読み取られる場合とが生じ得る。そして、特殊セルが明色セルとして読み取られる場合と、暗色セルとして読み取られる場合とによって、二通りの異なるデコード結果が出力されてしまうことがある。その結果、特殊二次元コードが読み取られた際、二次元コード読取装置の利用者が意図しない読取結果（例えば、有害サイトのＵＲＬ等）がデコード結果として出力されてしまう等の不都合が発生する場合もある。
【００３１】
以下、図２、図３を参照して、このような特殊二次元コードの構成と、特殊二次元コードが読み取られた際に二通りの異なるデコード結果が出力される仕組みと、について説明する。以下では、本実施例の二次元コード読取装置１０が、特殊二次元コードである二次元コード１００を読み取る場合を例として説明する。図２の（ａ）は、二次元コード読取装置１０の撮像部１６によって撮像される二次元コード１００（及びその二次元コード１００を表わすコード画像Ｃ）の例である。即ち、図２の（ａ）の二次元コード１００は、特殊二次元コードである。二次元コード１００は、暗色（具体的には黒色）のセル（以下「暗色セル」と呼ぶ）と、明色（具体的には白色）のセル（以下「明色セル」と呼ぶ）との組み合わせによって構成されている。二次元コード１００は、３箇所の角部に配置されたファインダパターン４０と、１個のアライメントパターン４２と、ファインダパターン４０及びアライメントパターン４２の中央に配置されたデータセル領域４４と、を含む。
【００３２】
ファインダパターン４０は、二次元コード１００の読み取りの際に最初に認識される部分であり、二次元コード１００の上下左右位置を特定するためのパターンである。ファインダパターン４０の位置、大きさ、形状等は予め定められている。二次元コード読取装置１０は、ファインダパターン４０を認識することで、二次元コード１００の向きに関わらず、どの方向からでも二次元コード１００に記録されたデータを読み取ることができるようになる。アライメントパターン４２は、歪みによって生じる各セルの位置ずれを補正するための部分である。
【００３３】
データセル領域４４は、二次元コード１００に記録されるデータを表現するための各種セルが含まれる領域である。データセル領域４４には、データキャラクタ、誤り訂正符号等が含まれる。
【００３４】
ここで、「データキャラクタ」は、二次元コード１００に記録されるデータを含む。データキャラクタによって表現されるデータには、デコード対象のデータ自身のほかに、最大誤り訂正許容率を示すデータも含まれる。最大誤り訂正許容率とは、二次元コード１００が汚損等している場合においても、データをデコードし得る許容率の最大値（例えば、７％、１５％、２５％、３０％等）を示す。例えば最大誤り訂正許容率が２０％である情報コードの場合、二次元コード１００のデータセル領域４４を構成する４４個のセルブロックＣＢ（後述の図２の（ｂ）参照。即ち、ファインダパターン４０及びアライメントパターン４２を除く部分）のうちの２０％（この場合は９個）が損傷している場合であっても、二次元コード読取装置１０は当該二次元コード１００からデータをデコード可能であることを意味する。そして、「誤り訂正符号」は、二次元コード１００を読み取った二次元コード読取装置１０が、読み取ったデータの誤りを検出し、訂正することを可能にするための情報である。二次元コード読取装置１０は、読み取ったデータと誤り訂正符号とを比較して、データに誤り（即ち、欠け等）があるか否かを判定することができるとともに、誤りがある場合に、誤り訂正符号に基づいて誤り部分を補完することができる。この機能は誤り訂正機能と呼ばれ、一般に知られている。また、この誤り訂正機能に基づいて誤り部分を補完する処理のことを以下では「誤り訂正処理」と呼ぶ場合がある。
【００３５】
さらに、本実施例では、データセル領域４４には、意図的に明色と暗色の中間色で表示させた１個の特殊セル５０が含まれる。即ち、特殊二次元コードである二次元コード１００は、１個の特殊セル５０を含む。特殊セル５０は、二次元コード読取装置１０によって読み取られる場合、読み取りの際の諸条件（例えば、特殊二次元コードが撮像される際の光の加減等）に応じて、特殊セル５０が、明色セルとして読み取られる場合と、暗色セルとして読み取られる場合がある。そして、特殊セル５０が明色セルとして読み取られる場合と、暗色セルとして読み取られる場合とによって、二通りの異なるデコード結果が出力されてしまうことがある。この例では、特殊セル５０が暗色セルとして読み取られる場合（パターンＡ）には、デコード結果「http://srv.prof.net/~lob」が出力される。一方、特殊セル５０が明色セルとして読み取られる場合（パターンＢ）には、デコード結果「http://srv.prof.net/~lab」が出力される。パターンＡのデコード結果と、パターンＢのデコード結果は、ともにウェブサイトのＵＲＬを示すが、ＵＲＬの一部が「a」と「o」とで異なっている。このように、特殊二次元コードである二次元コード１００が読み取られると、二通りの異なるデコード結果が出力される。その結果、特殊二次元コードが読み取られた際、ユーザが意図しないデコード結果（例えば、有害サイトのＵＲＬ等）が出力される場合もある。
【００３６】
図２の（ｂ）に示すように、データセル領域４４に含まれる多数のセルは、８個のセルを単位とするセル群である複数のセルブロックＣＢを構成している。図２の（ｂ）の例では、二次元コード１００内には、合計４４個のセルブロックＣＢ（図２の（ｂ）中のＤ１〜Ｄ２８、Ｅ１〜Ｅ１６）が設けられる。このうち、２８個のセルブロックＤ１〜Ｄ２８は、上述のデータキャラクタに対応するセルブロックである。セルブロックＤ１〜Ｄ２８のそれぞれは、１６進法で表される２桁のコードワード（例えば図３の（ａ）の「４１」等）を表わしている。１６個のセルブロックＥ１〜Ｅ１６は、上述の誤り訂正符号に対応するセルブロックである。セルブロックＥ１〜Ｅ１６のそれぞれも、１６進法で表される２桁のコードワード（例えば図３の（ａ）の「Ｅ６」等）を表わしている。
【００３７】
特殊二次元コードに基づいて二通りのデコード結果が出力される仕組み（図３の（ａ）（ｂ）参照）について説明する前に、特殊セル５０を含まない通常の二次元コードにおいて、一部のセルに特殊が生じた場合であっても、予定された（即ち一通りの）デコード結果が正しく出力される仕組みについて説明しておく。通常の二次元コードにおいて、印字の際の不具合等により、上記の特殊セル５０と同様の表示態様を有するセルが偶発的に含まれる場合がある。また、二次元コードが汚れたり削れたりすることにより、二次元コードを構成する複数のセルのうちの一部が、暗色セル（又は明色セル）に変わってしまう事態も起こり得る。ただし、通常であれば、二次元コード読取装置１０がそのような二次元コードを読み取る場合、上記の誤り訂正処理が行われることにより、所定の最大誤り訂正許容率（例えば、７％、１５％、２５％、３０％等）以下の割合の誤り（汚損、損傷、欠け等）が訂正される。そのため、通常であれば、何らかの事情で二次元コードに所定割合までの特殊セルが含まれた場合であっても、二次元コード読取装置１０は、誤り訂正処理を行った上で、予め二次元コードに記録されたデータ（一通りのデータ）をデコード結果として出力することができる。即ち、特定のセル構成を有する通常の二次元コードが二次元コード読取装置１０で読み取られる場合、読み取られた結果として出力されるデコード結果は、毎回、通常の二次元コードに予め記録された一種類のデータであることが予定されている。
【００３８】
これに対し、近年確認されている上記の特殊二次元コードは、データセル領域４４に含まれる特殊セル５０が暗色セルとして読み取られる場合（図３の（ａ）［パターンＡ］参照）と、明色セルとして読み取られる場合（図３の（ｂ）［パターンＢ］参照）と、のどちらの場合においても、特殊セル５０を含むセルブロック以外の部分において、最大誤り訂正許容率に対応する数のセルブロック（即ち、最大誤り訂正許容率の限界値のセルブロック）に対する誤り訂正処理が実行されるよう、意図的かつ精密に設定されていることが判明している。その結果、特殊二次元コードが読み取られた際に、特殊セル５０を含むセルブロックが「誤り」として処理されることなく、特殊セル５０が暗色セル又は明色セルとして読み取られてしまう事態が発生する。その結果、特殊セル５０が暗色セルとして読み取られる場合と、明色セルとして読み取られる場合とによって、二通りの異なるデコード結果が出力されてしまう事態が起こる（図３の（ａ）（ｂ）参照）。
【００３９】
図３の（ａ）、（ｂ）を参照して、このことをより詳細に説明する。図３の（ａ）は、特殊二次元コードである二次元コード１００（図２参照）の特殊セル５０が暗色セルとして読み取られる場合（パターンＡ）の具体例を示す。パターンＡでは、デコードの過程で誤り訂正処理が実行されることにより、各セルブロックに対応する訂正後の４４個のコードワードが取得される。図３の（ｂ）は、同様の状況において、特殊セル５０が明色セルとして読み取られる場合（パターンＢ）の具体例を示す。パターンＢでは、誤り訂正処理が実行されることにより、各セルブロックに対応する訂正後の４４個のコードワード（即ち、パターンＡの場合とは部分的に異なる４４個の訂正後のコードワード）が取得される。いずれもパターンでも、特殊二次元コードである二次元コード１００に設定された最大誤り訂正許容率は２０％である。即ち、デコードの際、４４個のセルブロックＣＢのうち、最大９個のセルブロックまでの誤りを訂正可能である。
【００４０】
（パターンＡ；図３の（ａ））
特殊二次元コードである二次元コード１００（図２参照）の特殊セル５０が暗色セルとして読み取られると、誤り訂正処理が行われる前において、図３の（ａ）の上段に示すような４４個のコードワードが取得される。４４個のコードワードのうち、前半の２８個のコードワード（「４１」から「Ｆ７」まで）は、セルブロックＤ１〜Ｄ２８（即ちデータキャラクタに対応するセルブロック）に対応するコードワードである。このうち、網掛け表示で示されている「９６」とその隣の「Ｃ６」が、英文字「o」に相当するコードワードである。そして、４４個のコードワードのうち、後半の１６個のコードワード（「Ｅ６」から「Ｃ６」まで）は、セルブロックＥ１〜Ｅ１６（即ち誤り訂正符号に対応するセルブロック）に対応するコードワードである。このうち、斜線ハッチング表示で示されている「７１」が、特殊セル５０が暗色セルとして読み取られたことで得られたコードワードである。
【００４１】
上記の通り、二次元コード１００に設定された最大誤り訂正許容率は２０％である。そして、特殊二次元コードである二次元コード１００は、特殊セル５０が暗色セルとして読み取られる場合と明色セルとして読み取られる場合のどちらの場合も、最大誤り訂正許容率に対応するセルブロックのコードワードに対する誤り訂正処理が実行されるように意図的かつ精密に設定される。そのため、二次元コード読取装置１０は、４４個のセルブロックＣＢに対応するコードワードのうち、９個のセルブロックに対応するコードワードの誤りを訂正する。図３の（ａ）の例では、下線を付した９個のコードワードが訂正される。パターンＡでは、誤り訂正処理の対象の９個のコードワードは、いずれも、セルブロックＥ１〜Ｅ１６に対応するコードワードである。
【００４２】
誤り訂正処理が行われたことにより、図３の（ａ）の下段に示すような４４個のコードワードが取得される。図中の４４個のコードワードのうち、訂正処理が行われたコードワード（以下では「訂正ワード」と呼ぶ場合がある）には、下線を付している。誤り訂正処理後においても、網掛け表示で示されている「９６」とその隣の「Ｃ６」は、誤り訂正処理前と変わらず維持されている。即ち、「９６」と「Ｃ６」は、誤り訂正処理前と変わらず英文字「o」を表わしている。この結果、二次元コード読取装置１０は、誤り訂正処理後の４４個のコードワードのうち、前半の２８個のコードワード（「４１」から「Ｆ７」まで）に基づいて、デコード結果「http://srv.prof.net/~lob」を出力することができる。
【００４３】
（パターンＢ；図３の（ｂ））
特殊二次元コードである二次元コード１００（図２参照）の特殊セル５０が明色セルとして読み取られると、誤り訂正処理が行われる前において、図３の（ｂ）の上段に示すような４４個のコードワードが取得される。この場合も、前半の２８個のコードワード（「４１」から「Ｆ７」まで）は、セルブロックＤ１〜Ｄ２８（即ちデータキャラクタに対応するセルブロック）に対応するコードワードである。このうち、網掛け表示で示されている「９６」とその隣の「Ｃ６」が、英文字「o」に相当するコードワードである。そして、４４個のコードワードのうち、後半の１６個のコードワード（「Ｅ６」から「Ｃ６」まで）は、セルブロックＥ１〜Ｅ１６（即ち誤り訂正符号に対応するセルブロック）に対応するコードワードである。このうち、斜線ハッチング表示で示されている「Ｆ１」が、特殊セル５０が明色セルとして読み取られたことで得られたコードワードである。このように、特殊セル５０が明色セルとして読み取られた場合に得られるコードワード（「７１」）とは異なっている。
【００４４】
この場合も、二次元コード１００に設定された最大誤り訂正許容率（２０％）に応じた数（９個）のコードワードの誤りが訂正される。具体的には、図３の（ｂ）のうち、下線を付した９個のコードワードが訂正される。パターンＢで誤り訂正処理の対象となるコードワードは、パターンＡの場合とは異なる。図３の（ｂ）に示すように、パターンＢでは、セルブロックＥ１〜Ｅ１６に対応する（誤り訂正符号に対応する）コードワードに対して誤り訂正処理が行われる他、セルブロックＤ１〜Ｄ２８に対応する（データキャラクタに対応する）コードワードのうち、英文字「o」を構成する部分である「Ｃ６」に対しても誤り訂正処理が行われる。
【００４５】
誤り訂正処理が行われたことにより、図３の（ｂ）の下段に示すような４４個のコードワードが取得される。図中の４４個のコードワードのうちの訂正ワードには、下線を付している。パターンＢでは、網掛け表示で示されている「９６」の隣の「Ｃ６」が「１６」に訂正されている。「９６」と「１６」は、英文字「a」を表わす。この結果、二次元コード読取装置１０は、誤り訂正処理後の４４個のコードワードのうち、前半の２８個のコードワード（「４１」から「Ｆ７」まで）に基づいて、デコード結果「http://srv.prof.net/~lab」を出力することができる。このように、パターンＡのデコード結果と、パターンＢのデコード結果は、ともにウェブサイトのＵＲＬを示すが、ＵＲＬの一部が「a」と「o」とで異なっている。
【００４６】
特殊二次元コードである二次元コード１００が読み取られる（即ちデコードされる）場合、二次元コード読取装置１０が上記のような処理を行うことにより、二通りのデコード結果が出力される。
【００４７】
（コード読取処理；図４）
本実施例では、二次元コード読取装置１０の制御部２０は、図４のコード読取処理を実行することで、読み取られた二次元コード１００が上記のような特殊二次元コードであるのか否かを判別することができる。以下、図４を参照して、本実施例の二次元コード読取装置１０の制御部２０が実行するコード読取処理について説明する。ユーザは、二次元コードを読み取るための読取アプリケーションプログラムが起動された二次元コード読取装置１０の操作部１２に、所定の読取指示を入力することができる。読取指示が入力される場合、制御部２０は、図４のコード読取処理を開始する。
【００４８】
Ｓ１０では、制御部２０は、二次元コード１００を表わすコード画像Ｃが撮像されることを監視する。コード読取処理が開始されると、制御部２０は、撮像部１６を起動させ、撮像範囲内の画像の撮像を開始する。この際、ユーザが、撮像部１６の撮像範囲内に二次元コード１００が含まれるように二次元コード読取装置１０の位置及び角度を変化させることで、撮像部１６に二次元コード１００を撮像させることができる。これにより、撮像部１６によって二次元コード１００を表わす画像が撮像される。そして、制御部２０は、撮像された画像内に、二次元コード１００を表わす特徴（例えば、ファインダパターン４０等）が存在するか否かを判断し、二次元コード１００を表わす特徴が存在すると判断される場合に、コード画像Ｃが撮像されたと判断（即ちＳ１０でＹＥＳと判断）し、Ｓ１２に進む。
【００４９】
Ｓ１２では、制御部２０は、Ｓ１０で撮像されたコード画像Ｃに基づいてデコードを試行する。即ち、制御部２０は、公知のデコード手法に従って、コード画像Ｃが表す二次元コード１００に記録されたデータのデコードを行う。その際、上記の通り、制御部２０は、必要に応じて誤り訂正処理も行う（図２、図３参照）。
【００５０】
Ｓ１４では、制御部２０は、デコードが成功したか否かを判断する。Ｓ１２で試行されたデコードの結果、デコード結果が取得されている場合、制御部２０は、Ｓ１４でＹＥＳと判断し、Ｓ１６に進む。一方、何らかの事情（例えば、コード画像Ｃが表わす二次元コード１００の破損度が、最大誤り訂正許容率を超えていた場合等）でデコード結果の取得に失敗した場合、制御部２０は、Ｓ１４でＮＯと判断し、コード読取処理をエラー終了する。
【００５１】
Ｓ１６では、制御部２０は、デコードの過程で、誤り訂正処理が行われたか否かを判断する。具体的には、Ｓ１６では、まず、制御部２０は、デコードの過程でメモリ２２の一次記憶領域に記憶されたコードワード（図３参照）等を参照することにより、デコードの過程で誤り訂正処理が行われたか否かを判定する。その結果、デコードの過程で誤り訂正処理が行われたと判定される場合、制御部２０は、Ｓ１６でＹＥＳと判断し、Ｓ１８に進む。一方、デコードの過程で誤り訂正処理が行われていないと判定される場合、制御部２０は、Ｓ１６でＮＯと判断し、Ｓ３０に進む。
【００５２】
Ｓ１８では、制御部２０は、Ｓ１０で撮像されたコード画像Ｃをメモリ２２の一次記憶領域に記憶させる。
【００５３】
次いで、Ｓ２０では、制御部２０は、デコードの過程でメモリ２２の一次記憶領域に記憶されたコードワード（図３参照）を参照し、誤り訂正処理が行われたコードワードである訂正ワードを特定する。
【００５４】
次いで、Ｓ２２では、制御部２０は、メモリ２２に記憶されたコード画像Ｃを参照し、コード画像Ｃのうち、Ｓ２０で特定された訂正ワードに対応する対象部分を特定する。具体的には、Ｓ２２では、まず、制御部２０は、コード画像Ｃのうち、訂正ワードに対応するセルブロックを特定する。そして、制御部２０は、コード画像Ｃのうち、特定されたセルブロックに対応する範囲を、対象部分として特定する。
【００５５】
次いで、Ｓ２４では、制御部２０は、Ｓ２２で特定された対象部分の分析を行う。本実施例では、Ｓ２４において、まず、制御部２０は、対象部分の各部の明度を示す出力波形を取得する。そして、制御部２０は、取得された出力波形の分析を行い、対象部分の明色部と暗色部とが形成するパターンを特定する。
【００５６】
続くＳ２６では、制御部２０は、Ｓ２４で行われた分析の結果、対象部分の全部がセルであるのか否かを判断する。即ち、制御部２０は、Ｓ２４で取得された対象部分の各部の明度を示す出力波形が、対象部分内の全部についてセルを表わす特徴を有しているのか否かを判断する。この結果、対象部分の出力波形が、対象部分の全部についてセルを表わす特徴を有していると判断される場合（後述の図５参照）、制御部２０は、Ｓ２６でＹＥＳと判断し、Ｓ２８に進む。反対に、対象部分の出力波形が、対象部分の少なくとも一部について、セル以外のオブジェクト（例えば、汚れや欠け等）を表わす特徴を有していると判断される場合（後述の図６参照）、制御部２０は、Ｓ２６でＮＯと判断し、Ｓ３０に進む。
【００５７】
図５、図６を参照し、Ｓ２６でＹＥＳと判断される場合、Ｓ２６でＮＯと判断される場合のそれぞれの具体例を説明する。図５は、コード画像Ｃの対象部分ＴＰがセル特有の特徴を有している場合（Ｓ２６でＹＥＳと判断される場合）の一例である。図５の例では、コード画像Ｃのうち、太線で囲まれた部分が、訂正ワードに対応する対象部分ＴＰである。図５に示すように、この例では、対象部分ＴＰには目立った汚れ等が付着しておらず、対象部分ＴＰは全部がセルによって構成されている。二次元コード１００に含まれる各セル（明色セル、暗色セル）は、いずれも、所定の明度で表示されるとともに、所定長さの辺を有する正方形である。そのため、図５の例では、対象部分ＴＰの出力波形は、明色部と暗色部との間に明確な境界を有する。また、明色部を表わす波形の長さ（図中の横幅）、暗色部を表わす波形の長さも予め定められたセルサイズに応じた長さを有する。対象部分ＴＰの各部の出力波形が全てこのような特徴を有する場合、対象部分ＴＰの全部がセルであると言える。その場合、制御部２０は、Ｓ２６でＹＥＳと判断し、Ｓ２８に進む。
【００５８】
これに対し、図６は、コード画像Ｃの対象部分ＴＰの少なくとも一部がセル以外のオブジェクト（例えば、汚れや欠け等）を表わす特徴を有している場合（Ｓ２６でＮＯと判断される場合）の一例である。図６の例でも、コード画像Ｃのうち、太線で囲まれた部分が、訂正ワードに対応する対象部分ＴＰである。図６に示すように、この例では、対象部分ＴＰには大きな汚れ６０が付着している。そのため、図６の例では、対象部分ＴＰの出力波形は、明色部と暗色部との間に、セルとは明らかに異なる不規則な境界を有する部分を含む。また、少なくとも一部において、明色部を表わす波形の長さ（図中の横幅）、暗色部を表わす波形の長さも予め定められたセルサイズとは異なる長さを有する。対象部分ＴＰの各部の出力波形の少なくとも一部がこのような特徴を有する場合、対象部分ＴＰの全部がセルではない（即ち、対象部分ＴＰの少なくとも一部がセル以外のオブジェクト（例えば、汚れや欠け等）を表わす特徴を有している）と言える。その場合、制御部２０は、Ｓ２６でＮＯと判断し、Ｓ３０に進む。
【００５９】
Ｓ２８では、制御部２０は、取得済みのデコード結果とともに、読み取られた二次元コード１００が特殊二次元コードであることに関係する報知情報を出力（例えば表示部１４に表示）する。報知情報は、例えば、読み取られた二次元コード１００に特殊な加工が施されている可能性が高く、デコード結果に留意するようユーザに報知するためのメッセージを含む。上記のＳ２６でＹＥＳと判断される場合、デコードの過程で誤り訂正処理が行われているにも関わらず、コード画像Ｃのうち、誤り訂正処理の対象であった訂正ワードに対応する対象部分は、全てセルとしての特徴を有しており、汚損等している訳ではないことを意味する（図５参照）。即ち、対象部分ＴＰは、誤り訂正処理が行われるように意図的に設けられた部分である可能性が高い。この場合、読み取られた二次元コード１００が、上記の特殊二次元コードである可能性が高いと言える。Ｓ２８において、制御部２０が、取得済みのデコード結果に加えて報知情報を出力することにより、ユーザに対して、読み取られた二次元コード１００が特殊二次元コードであった可能性が高いことを報知するとともに、デコード結果が予定通りの情報であるのか否かを確認するよう注意喚起をすることができる。
【００６０】
一方、Ｓ３０では、制御部２０は、取得済みのデコード結果を出力する。例えば、上記のＳ２６でＮＯと判断される場合、デコードの過程で誤り訂正処理が行われた原因が、二次元コード１００の汚損等であった可能性が高いことを意味する（図６参照）。つまり、この場合、読み取られた二次元コード１００は、誤り訂正処理が行われるように意図的に構成されたコードではなく、通常の二次元コードであった可能性が高いと言える。この場合、Ｓ３０において、制御部２０は、取得済みのデコード結果を通常通り出力することができる。
【００６１】
以上、本実施例の二次元コード読取装置１０の構成及び動作について説明した。上記の通り、制御部２０は、二次元コード１００を表わすコード画像Ｃに基づいてデコードを行うことでデコード結果が取得される場合に（図４のＳ１４でＹＥＳ）、デコードの過程で誤り訂正処理が行われたか否かを判断する（Ｓ１６）。そして、制御部２０は、誤り訂正処理が行われたと判断される場合（Ｓ１６でＹＥＳ）に、デコード結果に対応する複数のコードワードのうち、誤り訂正処理が行われた範囲である訂正ワードを特定する（Ｓ２０）。そして、制御部２０は、コード画像Ｃのうち、訂正ワードに対応する範囲を表わす対象部分を特定し、その対象部分の全部がセルを表わす特徴を有しているか否かを判断する（Ｓ２６）。対象部分の全部がセルを表わす特徴を有している場合（Ｓ２６でＹＥＳ）、二次元コード１００の対象部分（即ち、誤り訂正処理が行われた範囲）には、汚損、損傷、欠け等が発生していなかった可能性が高い。即ち、対象部分は、誤り訂正処理が行われるように意図的に設けられた部分である可能性が高い。この場合、読み取られた二次元コードが、上記の特殊二次元コードである可能性が高いと言える。一方、対象部分の少なくとも一部がセル以外のオブジェクトを表わす特徴を有していると判断される場合（Ｓ２６でＮＯ）には、二次元コードの対象部分には、汚損、損傷、欠け等が発生していた可能性が高い。即ち、対象部分は、誤り訂正処理が行われるように意図的に設けられた部分ではなかった可能性が高い。この場合、読み取られた二次元コードが、上記の特殊二次元コードではない可能性が高いと言える。従って、本実施例の二次元コード読取装置１０によれば、対象部分の全部がセルを表わす特徴を有しているか否かを判断することによって、読み取られた二次元コード１００が、読み取りの際の条件に応じて二通りの異なるデコード結果が出力され得る特殊二次元コードであるか否かを適切に判別することができる。
【００６２】
また、上記の通り、本実施例では、制御部２０は、対象部分内の各部の明度を示す出力波形を取得し、取得された出力波形がセルを表わす特徴を示すか否かを判断することにより、対象部分の全部がセルを表わす特徴を有しているか否かを判断している（Ｓ２６）。上記の通り、汚損、損傷、欠け等が発生していない二次元コード１００の出力波形には所定の規則性がみられる。一方、二次元コード１００に汚損、損傷、欠け等が発生していた場合、出力波形は不規則になる。従って、本実施例によると、二次元コード読取装置１０は、対象部分内の各部の明度を示す出力波形に基づいてセルを表わす特徴を示すか否かを判断することにより、読み取られた二次元コード１００が特殊二次元コードであるのか否かを適切に判別することができる。
【００６３】
本実施例と請求項の対応関係を説明しておく。図４のＳ１２の処理、Ｓ１６の処理、Ｓ２０の処理、Ｓ２２の処理、Ｓ２６の処理が、それぞれ、「デコード部」、「第１の判断部」、「第１の特定部」、「第２の特定部」、「第２の判断部」が実行する処理の一例である。Ｓ２８及びＳ３０の処理が「出力制御部」が実行する処理の一例である。
【００６４】
（第２実施例）
第２実施例の二次元コード読取装置１０について、第１実施例と異なる点を中心に説明する。本実施例の二次元コード読取装置１０も、その基本的な構成及び動作は第１実施例と共通する。ただし、本実施例では、図４のコード読取処理のＳ２４における対象部分の分析の手法が第１実施例とは異なる。
【００６５】
本実施例では、Ｓ２４において、まず、制御部２０は、対象部分の各部の明度を二値化した二値化データを取得する。そして、制御部２０は、取得された二値化データ分析を行い、対象部分の明色部と暗色部とが形成するパターンを特定する。続くＳ２６では、制御部２０は、Ｓ２４で行われた分析の結果、対象部分の全部がセルであるのか否かを判断する。即ち、制御部２０は、Ｓ２４で取得された対象部分の各部の明度を二値化した二値化データが、対象部分内の全部についてセルを表わす特徴を有しているのか否かを判断する。この結果、二値化データが、対象部分の全部についてセルを表わす特徴を有していると判断される場合（後述の図５参照）、制御部２０は、Ｓ２６でＹＥＳと判断し、Ｓ２８に進む。反対に、二値化データが、対象部分の少なくとも一部について、セル以外のオブジェクト（例えば、汚れや欠け等）を表わす特徴を有していると判断される場合（後述の図６参照）、制御部２０は、Ｓ２６でＮＯと判断し、Ｓ３０に進む。
【００６６】
本実施例でも、図５、図６を参照し、Ｓ２６でＹＥＳと判断される場合、Ｓ２６でＮＯと判断される場合のそれぞれの具体例を説明する。図５は、コード画像Ｃの対象部分ＴＰがセル特有の特徴を有している場合（Ｓ２６でＹＥＳと判断される場合）の一例である。二値化データは、対象部分内を走査した上で、明色部を「０」、暗色部を「１」でそれぞれ表したデータである。上記の通り、図５の例では、対象部分ＴＰには目立った汚れ等が付着しておらず、対象部分ＴＰは全部がセルによって構成されている。二次元コード１００に含まれる各セル（明色セル、暗色セル）は、いずれも、所定の明度で表示されるとともに、所定長さの辺を有する正方形である。そのため、図５の例では、対象部分ＴＰの二値化データは、明色部を表わす「０」の領域と暗色部を表わす「１」の領域との間に明確な境界を有する。また、明色部を表わす「０」の領域の上下左右の長さ（データ数）、暗色部を表わす「１」の領域の上下左右の長さ（データ数）も予め定められたセルサイズに応じた長さ（データ数）を有する。対象部分ＴＰの二値化データが全てこのような特徴を有する場合、対象部分ＴＰの全部がセルであると言える。その場合、制御部２０は、Ｓ２６でＹＥＳと判断し、Ｓ２８に進む。
【００６７】
これに対し、図６は、コード画像Ｃの対象部分ＴＰの少なくとも一部がセル以外のオブジェクト（例えば、汚れや欠け等）を表わす特徴を有している場合（Ｓ２６でＮＯと判断される場合）の一例である。上記の通り、図６の例では、対象部分ＴＰには大きな汚れ６０が付着している。そのため、図６の例では、対象部分ＴＰの二値化データは、明色部を表わす「０」の領域と暗色部を表わす「１」の領域との間に、セルとは明らかに異なる不規則な境界を有する部分を含む。また、少なくとも一部において、明色部を表わす「０」の領域の上下左右の長さ（データ数）、及び、暗色部を表わす「１」の領域の上下左右の長さ（データ数）も、予め定められたセルサイズとは異なる長さ（データ数）を有する。対象部分ＴＰの二値化データの少なくとも一部がこのような特徴を有する場合、対象部分ＴＰの全部がセルではない（即ち、対象部分ＴＰの少なくとも一部がセル以外のオブジェクト（例えば、汚れや欠け等）を表わす特徴を有している）と言える。その場合、制御部２０は、Ｓ２６でＮＯと判断し、Ｓ３０に進む。
【００６８】
上記の通り、汚損、損傷、欠け等が発生していない二次元コード１００の二値化データには所定の規則性がみられる。一方、二次元コード１００に汚損、損傷、欠け等が発生していた場合、二値化データは不規則になる。従って、本実施例でも、二次元コード読取装置１０は、対象部分内の各部の明度を二値化した二値化データに基づいてセルを表わす特徴を示すか否かを判断することにより、読み取られた二次元コード１００が特殊二次元コードであるのか否かを適切に判別することができる。
【００６９】
（第３実施例）
本実施例は、上記の第１及び第２実施例の変形例である。上記の第１及び第２実施例では、判別対象の特殊二次元コード（例えば図２の二次元コード１００）は、明色と暗色の中間色で表示された１個の特殊セル５０を含む。本実施例では、判別対象の特殊二次元コードは、図７の二次元コード２００に示すように、セルを意図的に明色部と暗色部とに分割して表示した特殊セル１５０を含む。この場合も、読み取りの際の諸条件（例えば、特殊二次元コードが撮像される際の光の加減等）に応じて、特殊セル１５０が、暗色セルとして読み取られる場合と、明色セルとして読み取られる場合がある。上記の第１及び第２実施例で開示する二次元コード読取装置１０は、図７に示すようなタイプの特殊二次元コード（即ち二次元コード２００）を読み取る場合も、第１及び第２実施例と同様の動作を行うことができる。
【００７０】
以上、本発明の各実施例について詳細に説明したが、これらは例示に過ぎず、特許請求の範囲を限定するものではない。特許請求の範囲に記載の技術には、以上に例示した具体例を様々に変形、変更したものが含まれる。例えば、以下の変形例を採用してもよい。
【００７１】
（変形例１）上記の各実施例では、制御部２０は、図４のＳ２６でＹＥＳと判断した場合、Ｓ２８において、デコード結果とともに報知情報を出力している。これに限られず、制御部２０は、図４のＳ２６でＹＥＳと判断した場合には、デコード結果を出力させず、報知情報のみを出力するようにしてもよい。また、さらに他の例では、デコード結果と報知情報のどちらも出力しないようにしてもよい。
【００７２】
（変形例２）図４のコード読取処理における対象部分の分析の手法（Ｓ２４）、及び、対象部分の全部がセルを表わす特徴を有しているか否かの判断手法（Ｓ２６）は、上記の各実施例で説明した手法には限られず、他の任意の手法が採用されてもよい。従って、例えば、制御部２０は、コード画像Ｃの対象部分の画像に含まれる特徴点を抽出し、抽出された特徴点がすべてセルの特徴を示すか否かを判断することにより、対象部分の全部がセルを表わす特徴を有しているかを判断するようにしてもよい。
【００７３】
（変形例３）上記の各実施例では、特殊二次元コードは、読み取りの際の条件によって二通りのデコード結果が出力され得るコードとして説明されている。これに限られず、特殊二次元コードは、読み取りの際の条件によって三通り以上のデコード結果が出力され得るコードであってもよい。また、特殊二次元コードは、そのような複数のデコード結果の出力を可能にするために、２個以上の特殊セルを含んでいてもよい。
【００７４】
本明細書または図面に説明した技術要素は、単独であるいは各種の組み合わせによって技術的有用性を発揮するものであり、出願時請求項記載の組み合わせに限定されるものではない。また、本明細書または図面に例示した技術は複数目的を同時に達成するものであり、そのうちの一つの目的を達成すること自体で技術的有用性を持つものである。
【符号の説明】
【００７５】
１０：二次元コード読取装置
１２：操作部
１４：表示部
１６：撮像部
２０：制御部
２２：メモリ
１００、２００：二次元コード
４０：ファインダパターン
４２：アライメントパターン
４４：データセル領域
５０、１５０：特殊セル
６０：汚れ
Ｃ：コード画像
ＣＢ：セルブロック
Ｄ１〜Ｄ２６：データキャラクタに対応するセルブロック
Ｅ１〜Ｅ１６：誤り訂正符号に対応するセルブロック
ＴＰ：対象部分
【図１】
2020160759.tif 000003
【図２】
2020160759.tif 000004
【図３】
2020160759.tif 000005
【図４】
2020160759.tif 000006
【図５】
2020160759.tif 000007
【図６】
2020160759.tif 000008
【図７】
2020160759.tif 000009