(57)【特許請求の範囲】
【請求項１】
複数のセルによりデータブロックと誤り訂正符号ブロックとが複数形成されている二次元コードから情報を読み取るために、その二次元コードを含む画像を撮像し、撮像した画像における各セルの色を二値化して読み取りを行なう二次元コード読み取り装置であって、
撮像した画像における二次元コードの各セルを明セルおよび暗セルのいずれかに決定する二値化手段と、
前記二値化手段による二値化結果の信頼性が低いセルに対してグレーフラグを設定するグレー設定手段と、
前記誤り訂正符号ブロックのコードを用いて検出訂正を行う検出訂正手段と、
前記検出訂正手段で訂正に失敗した場合、グレーフラグが設定されているセルを含むデータブロックを誤り位置に指定して消失訂正を行う消失訂正手段と
を含むことを特徴とする二次元コード読み取り装置。
【請求項２】
請求項１において、
前記二値化手段は、互いに異なる２種類の二値化処理により各セルが明セルであるか暗セルであるかを仮決定し、それら２つの二値化処理による二値化結果に基づいて各セルが明セルであるか暗セルであるかを最終決定するようになっており、
前記グレー設定手段は、前記２種類の二値化処理のうちの一方の二値化結果の信頼性が低いセルに対して仮グレーフラグを設定するとともに、他方の二値化結果の信頼性が低いセルに対しても仮グレーフラグを設定し、それら２つの仮グレーフラグの設定有無に基づいて、最終的なグレーフラグを設定することを特徴とする二次元コード読み取り装置。
【請求項３】
請求項１において、
前記二値化手段は、各セルの輝度と、セルの明暗決定のための閾値とを比較することで、各セルが明セルであるか暗セルであるかを決定するようになっており、
前記グレー設定手段は、各セルの輝度と前記閾値との差が予め設定された範囲である場合には、そのセルに対してグレーフラグを設定することを特徴とする二次元コード読み取り装置。
【請求項４】
請求項２において、
前記二値化手段は、
各セルの周囲に存在する周辺セルの輝度変化に基づいて閾値を設定し、その設定した閾値と当該セルの輝度の比較に基づいて、各セルが明セルであるか暗セルであるかを決定する局所的二値化手段と、
前記局所的二値化手段における閾値設定のための輝度範囲よりも広い範囲に設定された部分領域毎に閾値を設定し、その設定した閾値と当該部分領域に含まれるセルの輝度の比較に基づいて、各セルが明セルであるか暗セルであるかを決定する大局的二値化手段と
を含むことを特徴とする二次元コード読み取り装置。
【請求項５】
請求項１において、
前記二値化手段は、明セルと暗セルとの間の輝度勾配と同色セル間の輝度勾配との中間的な勾配に基準勾配を設定し、各セルに対して、隣接セルとの間の輝度勾配が前記基準勾配よりも急であるか否か、および、その隣接セルよりも高輝度か否かに基づいて、各セルの明暗を決定するものであり、
前記グレー設定手段は、互いに隣接するセル間の輝度勾配が、前記基準勾配に対して予め設定された範囲であるか否かに基づいて、それら２つのセルに対して、グレーフラグを設定するか否かを決定することを特徴とする二次元コード読み取り装置。
【請求項６】
請求項５において、
前記グレー設定手段は、前記二値化手段により、互いに隣接するセルがともに暗セル、あるいはともに明セルに設定されたにも関わらず、それら隣接セル間の輝度勾配が前記基準勾配以上である場合、および、前記二値化手段により互いに隣接するセルの一方が暗セル、他方が明セルに設定されたにも関わらず、その暗セルと明セルとの間の輝度勾配が前記基準勾配以下である場合のいずれかである場合には、それら互いに隣接するセルに対してグレーフラグを設定することを特徴とする二次元コード読み取り装置。
【請求項７】
請求項１において、
前記二値化手段は、前記二次元コードを異なる条件で撮像した複数の画像を用い、画像毎に二次元コードの各セルが明セルであるか暗セルであるかを仮決定し、それら２つの画像からの仮決定結果に基づいて各セルが明セルであるか暗セルであるかを最終決定するようになっており、
前記グレー設定手段は、前記２つの画像の二値化結果が不一致であるセルに対してグレーフラグを設定することを特徴とする二次元コード読み取り装置。
【請求項８】
請求項１〜７のいずれか１項において、
前記二値化手段による二値化結果の信頼の程度に基づいてグレースコアを設定するスコア設定手段を備え、
前記グレー設定手段は、グレーフラグが設定されたセルを含むブロックの数が予め設定した消失訂正規定数を超えない範囲で、二値化結果の信頼の程度が低いことを示している側のグレースコアのセルから順に、グレーフラグを設定することを特徴とする二次元コード読み取り装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、二次元コード読み取り装置に関し、特に、セルの二値化に関する。
【背景技術】
【０００２】
二次元コードからコードワードを解読するためには、コード内のセルの明暗（白黒）を得るために画像を二値化する必要がある。二値化手法としては、分離度と言われる値が最大となる閾値を求める判別分析法（大津の二値化）がよく知られている。
【０００３】
ただし、画像は、照明のあたり方が不均一であったあり、ボケの影響を受けたりするため、閾値を一様に決定することは難しい。そこで、特許文献１、２には、画像の変化に合わせて閾値を可変とするものが知られている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平２−１４１８８６号公報
【特許文献２】特開２０００−２５９７５９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかし、ボケ等の影響が強くなると、個々のセルはその周囲のパターンの影響が大きくなり、個々のセルの適性閾値を決定することが難しくなる。その結果、閾値を可変としてもセルの明暗の分類を失敗してしまう場合が増加する。分類失敗が増加し、コードが備える誤り訂正の限度を越えてしまうと、コードの読み取りができなくなってしまうことにつながる。
【０００６】
本発明は、この事情に基づいて成されたものであり、その目的とするところは、読み取りに失敗することが少ない二次元コード読み取り装置を提供することにある。
【課題を解決するための手段】
【０００７】
その目的を達成するための請求項１記載の発明は、複数のセルによりデータブロックと誤り訂正符号ブロックとが複数形成されている二次元コードから情報を読み取るために、その二次元コードを含む画像を撮像し、撮像した画像における各セルの色を二値化して読み取りを行なう二次元コード読み取り装置であって、撮像した画像における二次元コードの各セルを明セルおよび暗セルのいずれかに決定する二値化手段と、前記二値化手段による二値化結果の信頼性が低いセルに対してグレーフラグを設定するグレー設定手段と、前記誤り訂正符号ブロックのコードを用いて検出訂正を行う検出訂正手段と、前記検出訂正手段で訂正に失敗した場合、グレーフラグが設定されているセルを含むデータブロックを誤り位置に指定して消失訂正を行う消失訂正手段とを含むことを特徴とする。
【０００８】
消失訂正は、誤り位置が分かっていることが必要となるものの、誤り発生位置が特定されていない状態で行う検出訂正に比較して訂正能力は２倍となる。本発明では、誤り訂正が失敗した場合に、検出訂正よりも訂正能力の高い消失訂正を実行できるようにするため、二値化結果の信頼性が低いセルに対してグレーフラグを設定しておく。そして、検出訂正が失敗した場合には、グレーフラグが設定されているセルを含むデータブロックを誤り位置に指定して消失訂正を行う。よって、読み取りに失敗する場合が少なくなる。
【０００９】
請求項２記載の発明では、前記二値化手段は、互いに異なる２種類の二値化処理により各セルが明セルであるか暗セルであるかを仮決定し、それら２つの二値化処理による二値化結果に基づいて各セルが明セルであるか暗セルであるかを最終決定するようになっており、前記グレー設定手段は、前記２種類の二値化処理のうちの一方の二値化結果の信頼性が低いセルに対して仮グレーフラグを設定するとともに、他方の二値化結果の信頼性が低いセルに対しても仮グレーフラグを設定し、それら２つの仮グレーフラグの設定有無に基づいて、最終的なグレーフラグを設定する。
【００１０】
このように、互いに異なる２種類の二値化処理により各セルの二値化を行なって、それぞれの二値化処理結果に基づいて仮グレーフラグを設定し、それら２つの仮グレーフラグの設定有無に基づいて最終的なグレーフラグを設定するようにすれば、二値化結果が正しいものに対してグレーフラグを設定してしまうことを少なくでき、その結果、読み取りに失敗する場合がより減少する。
【００１１】
請求項３記載の発明では、前記二値化手段は、各セルの輝度と、セルの明暗決定のための閾値とを比較することで、各セルが明セルであるか暗セルであるかを決定するようになっており、前記グレー設定手段は、各セルの輝度と前記閾値との差が予め設定された範囲である場合には、そのセルに対してグレーフラグを設定する。
【００１２】
このようにしてグレーフラグを設定すれば、明暗決定の信頼性が低いセルに対して精度よくグレーフラグを設定することができる。
【００１３】
請求項４記載の発明は、請求項２における２種類の二値化処理を具体化した発明である。その請求項４記載の発明では、前記二値化手段は、各セルの周囲に存在する周辺セルの輝度変化に基づいて閾値を設定し、その設定した閾値と当該セルの輝度の比較に基づいて、各セルが明セルであるか暗セルであるかを決定する局所的二値化手段と、前記局所的二値化手段における閾値設定のための輝度範囲よりも広い範囲に設定された部分領域毎に閾値を設定し、その設定した閾値と当該部分領域に含まれるセルの輝度の比較に基づいて、各セルが明セルであるか暗セルであるかを決定する大局的二値化手段とを含む。
【００１４】
請求項５記載の発明では、前記二値化手段は、明セルと暗セルとの間の輝度勾配と同色セル間の輝度勾配との中間的な勾配に基準勾配を設定し、各セルに対して、隣接セルとの間の輝度勾配が前記基準勾配よりも急であるか否か、および、その隣接セルよりも高輝度か否かに基づいて、各セルの明暗を決定するものであり、前記グレー設定手段は、互いに隣接するセル間の輝度勾配が、前記基準勾配に対して予め設定された範囲であるか否かに基づいて、それら２つのセルに対して、グレーフラグを設定するか否かを決定する。
【００１５】
このように、輝度勾配に基づいてグレーフラグを設定することができる。また、輝度勾配に基づいて二値化するので、セル中心に汚れがあっても、正しく二値化を行うこともできる。
【００１６】
請求項６記載の発明では、前記グレー設定手段は、前記二値化手段により、互いに隣接するセルがともに暗セル、あるいはともに明セルに設定されたにも関わらず、それら隣接セル間の輝度勾配が前記基準勾配以上である場合、および、前記二値化手段により互いに隣接するセルの一方が暗セル、他方が明セルに設定されたにも関わらず、その暗セルと明セルとの間の輝度勾配が前記基準勾配以下である場合のいずれかである場合には、それら互いに隣接するセルに対してグレーフラグを設定する。
【００１７】
互いに隣接するセルがともに暗セル、あるいはともに明セルに設定された場合には、それら隣接セル間の輝度勾配は緩やかであるはずである。それにも関わらず、それら隣接セル間の輝度勾配が前記基準勾配以上である場合には、セルの明暗決定が誤っている可能性が高い。また、互いに隣接するセルの一方が暗セル、他方が明セルに設定された場合には、それら隣接セル間の輝度勾配は比較的急な勾配であるはずである。それにも関わらず、それら隣接セル間の輝度勾配が前記基準勾配以下である場合には、セルの明暗決定が誤っている可能性が高い。よって、これらの場合にグレーフラグを設定することで、明暗の判断が誤っている可能性が高いセルに対してグレーフラグを設定することができる。
【００１８】
請求項７記載の発明では、前記二値化手段は、前記二次元コードを異なる条件で撮像した複数の画像を用い、画像毎に二次元コードの各セルが明セルであるか暗セルであるかを仮決定し、それら２つの画像からの仮決定結果に基づいて各セルが明セルであるか暗セルであるかを最終決定するようになっており、前記グレー設定手段は、前記２つの画像の二値化結果が不一致であるセルに対してグレーフラグを設定する。
【００１９】
このように、２つの画像による二値化結果が不一致であるセルに対してグレーフラグを設定することによっても、明暗決定の信頼性が低いセルに対して精度よくグレーフラグを設定することができる。その結果、明暗決定が間違っている可能性が高いセルを含むブロックが優先的に消失訂正されることになることから、明暗の誤りを訂正できる可能性が向上する。よって、読み取りの成功可能性がより向上する。
【００２０】
請求項８記載の発明は、前記二値化手段による二値化結果の信頼の程度に基づいてグレースコアを設定するスコア設定手段を備え、前記グレー設定手段は、グレーフラグが設定されたセルを含むブロックの数が予め設定した消失訂正規定数を超えない範囲で、二値化結果の信頼の程度が低いことを示している側のグレースコアのセルから順に、グレーフラグを設定する。
【００２１】
このようにすれば、消失訂正の能力を越えて消失訂正を行うことが抑制される。その結果、消失訂正が成功する可能性が高くなるので、読み取りの成功可能性が向上する。
【図面の簡単な説明】
【００２２】
【図１】本発明の実施形態となる二次元コード読み取り装置１０の機械的構成を示すブロック図である。
【図２】コード読み取り処理の概要を示すフローチャートである。
【図３】図２のステップＳ１で設定する閾値ｔｈの例を示す図である。
【図４】第１実施形態において行なう、図２のマッピングとデコード処理の詳細を示すフローチャートである。
【図５】ステップＳ１２のグレー設定処理の詳細を示すフローチャートである。
【図６】（Ａ）は、ＱＲコード（登録商標）のブロック配置を示す概略図、（Ｂ）は誤りブロックのデータ処理例である。
【図７】サンプル画像１０枚での第１実施形態と従来手法との比較結果を示す図であり、（Ａ）は誤り総数を比較したグラフ、（Ｂ）は訂正コストを比較したグラフである。
【図８】第２実施形態において実行するグレー設定処理である。
【図９】図８に続いて実行するグレー設定処理の一部である。
【図１０】図８のステップＳ３５で行なう二値化処理における周辺セルを例示する図である。
【図１１】二次元コードの撮像画像の一部を拡大した図である。
【図１２】図１１の（Ａ）、（Ｂ）、（Ｃ）の部分の輝度変化を示すグラフである。
【図１３】輝度勾配の矛盾なし、矛盾ありの一例を説明する図である。
【図１４】第３実施形態において実行するグレー設定処理を示すフローチャートである。
【図１５】図１４に続いて実行するグレー設定処理の一部である。
【図１６】第４実施形態において行なうコード読み取り処理を示すフローチャートである。
【図１７】図１６に続いて実行するコード読み取り処理の一部である。
【発明を実施するための形態】
【００２３】
（第１実施形態）
以下、本発明の実施形態を図面に基づいて説明する。図１は、本発明の実施形態となる二次元コード読み取り装置１０の機械的構成を示すブロック図である。機械的構成は、従来周知の二次元コード読み取り装置と同じである。
【００２４】
図１に示す回路部２０は、図示しないハウジング内に収容されている。この回路部２０は、主に、光学系とコンピュータ系と電源系とから構成されている。光学系は、マーカ光投射器６０、発光ダイオード２１、エリアセンサ２３、結像レンズ２７等から構成されている。
【００２５】
発光ダイオード２１は、ハウジング本体の読取口（図示せず）を介して読み取り面Ｒに向けて照明光Ｌｆを照射可能に構成されている。この読み取り面Ｒには二次元コードなどが記録されている。なお、記録形態としては、印刷、刻印等がある。
【００２６】
エリアセンサ２３は、読み取り面Ｒに照射されて反射した反射光Ｌｒを受光可能に構成されるもので、例えば、Ｃ−ＭＯＳやＣＣＤ等の固体撮像素子である受光素子を数１０万から数１００万個オーダでｍ行ｎ列の２次元に配列して構成されている。受光素子は、受光した光を電気信号に変換して出力する。
【００２７】
このエリアセンサ２３の受光面２３ａは、ハウジング本体外から上述の読取口を介して外観可能に位置しており、エリアセンサ２３は、結像レンズ２７を介して入射する入射光をこの受光面２３ａで受光可能に配置されている。
【００２８】
結像レンズ２７は、外部から読取口を介して入射する入射光を集光してエリアセンサ２３の受光面２３ａに像を結像可能な結像光学系として機能するもので、例えば、鏡筒とこの鏡筒内に収容される複数の集光レンズとにより構成されている。発光ダイオード２１から照射された照明光Ｌｆが二次元コードに反射して読取口に入射する反射光Ｌｒは、結像レンズ２７により集光され、これにより、エリアセンサ２３の受光面２３ａにコード像が結像する。マーカ光投射器６０は、二次元コードの読み取り範囲を示すマーカ光Ｍを読み取り面Ｒに投射する。
【００２９】
次に、コンピュータ系の構成概要を説明する。コンピュータ系は、増幅回路３１、Ａ／Ｄ変換回路３３、メモリ３５、アドレス発生回路３６、同期信号発生回路３８、制御回路４０、操作スイッチ４２、ＬＥＤ４３、ブザー４４、液晶表示器４６、通信インタフェース４８等から構成されている。このコンピュータ系は、前述した光学系によって撮像されたコード像の画像信号をハードウェア的およびソフトウェア的に信号処理し得るものである。また制御回路４０は、二次元コード読み取り装置１０の全体システムに関する制御も行っている。
【００３０】
光学系のエリアセンサ２３から出力される画像信号（アナログ信号）は、増幅回路３１に入力されることで所定ゲインで増幅された後、Ａ／Ｄ変換回路３３に入力されると、アナログ信号からディジタル信号に変換される。そして、ディジタル化された画像信号、つまり画像データ（画像情報）は、メモリ３５に入力されて蓄積される。なお、同期信号発生回路３８は、エリアセンサ２３およびアドレス発生回路３６に対する同期信号を発生可能に構成されており、またアドレス発生回路３６は、この同期信号発生回路３８から供給される同期信号に基づいて、メモリ３５に格納される画像データの格納アドレスを発生可能に構成されている。
【００３１】
メモリ３５は、半導体メモリ装置で、例えばＲＡＭ（ＤＲＡＭ、ＳＲＡＭ等）やＲＯＭ（ＥＰＲＯＭ、ＥＥＰＲＯＭ等）がこれに相当する。またＲＯＭには、画像処理プログラムの他、マーカ光投射器６０、発光ダイオード２１、エリアセンサ２３等の各ハードウェアを制御可能なシステムプログラム等が予め格納されている。
【００３２】
制御回路４０は、二次元コード読み取り装置１０全体を制御可能なコンピュータで、ＣＰＵ、システムバス、入出力インタフェース等からなる。この制御回路４０は、内蔵された入出力インタフェースを介して種々の入出力装置（周辺装置）と接続可能に構成されており、電源スイッチ４１、操作スイッチ４２、ＬＥＤ４３、ブザー４４、液晶表示器４６、通信インタフェース４８、マーカ光投射器６０等が接続されている。
【００３３】
これにより、例えば、コードの読み取り処理、電源スイッチ４１や操作スイッチ４２の監視や管理、またインジケータとして機能するＬＥＤ４３の点灯・消灯、ビープ音やアラーム音を発生可能なブザー４４の鳴動のオンオフ、さらには読み取った二次元コードによるコード内容を画面表示可能な液晶表示器４６の画面制御や外部機器との通信を可能にする通信インタフェース４８の通信制御、マーカ光投射器６０からのマーカ光Ｍの投射制御等を可能にしている。
【００３４】
電源系は、電源スイッチ４１、電池４９等により構成されており、制御回路４０により管理される電源スイッチ４１のオンオフによって、上述した各装置や各回路に、電池４９から供給される駆動電圧の導通や遮断が制御されている。
【００３５】
次に、制御回路４０の読み取り処理について説明する。読み取り処理は、撮像したコード像から文字コードを読み取る処理である。読み取り処理においては、二次元コードを構成する各セルが暗セルであるか明セルであるかを決定する。このセルの色の決定（セルの明暗の決定）においてはセル中心の輝度の二値化処理を行なう。セル中心の位置は、特徴パターンの位置をもとにして決定する。特徴パターンは、二次元コード中における位置および範囲が予め決まっていることから、特徴パターンの位置をもとにして、二次元コードの各セルの中心座標を決定することができるのである。
【００３６】
図２は、コード読み取り処理の概要を示すフローチャートである。この図２を用いてコード読み取り処理をさらに詳細に説明する。図２の処理は、ユーザ操作によりコードを含む画像が撮像されたことにより開始する。
【００３７】
まず、ステップＳ１では、メモリ３５から撮像データを取得し、従来周知の方法、たとえば、判別分析法により、明セルと暗セルとを区別するための閾値ｔｈを設定する。図３に、上記閾値ｔｈの例を示す。この図３に示すように、閾値ｔｈは、一例としては、暗セルを示す輝度のピークと明セルを示す輝度のピークとの間の極小値を示す輝度に設定する。また、図３には、この輝度に対するマージンαも示している。このマージンαの大きさは予め設定されている。
【００３８】
ステップＳ２では、コードから特徴パターンを検出する。たとえば、ＱＲコード（登録商標）では切り出しシンボル（ファインダパターン）を検出する。ステップＳ３ではステップＳ２で検出した特徴パターンをもとにコードの各セルの中心座標を決定する。さらに、その中心座標の輝度から、各セルの明暗を決定する。この処理はマッピングとも言われる。ステップＳ４では、ステップＳ３で決定した各セルの明暗をもとにデコード処理を行なう。
【００３９】
図４は、第１実施形態において行なう、図２のマッピングとデコード処理の詳細を示すフローチャートである。まず、ステップＳ１１では、各セルの中心座標を決定する。ステップＳ１２ではグレー設定処理を行なう。ステップＳ１２のグレー設定処理の詳細を図５に示す。
【００４０】
図５では、ステップＳ２１〜Ｓ２４の処理を各セルに対して行なう。まず、ステップＳ２１では、ステップＳ１１で決定したセル中心座標に対する輝度と、図２のステップＳ１で設定した閾値ｔｈとを比較する。
【００４１】
ステップＳ２２では、ステップＳ２１の比較の結果、セル中心座標の輝度が閾値ｔｈから±α以内であるか否かを判断する。この判断が肯定判断であった場合にはステップＳ２３へ進み、そのセルに対してグレーフラグを格納（設定）する。その後、ステップＳ２４へ進む。一方、ステップＳ２２が否定判断であった場合、すなわち、セル中心座標の輝度が閾値ｔｈから±α以上離れていた場合には、ステップＳ２３を介さずに直接、ステップＳ２４へ進む。ステップＳ２４では、ステップＳ２１での比較結果に基づいてセルの明暗を格納する。
【００４２】
図４へ戻り、ステップＳ１３では、コードの各ブロックからコードワードを取得する。ステップＳ１４では、公知の検出訂正処理を行なう。この検出訂正処理は、誤り発生位置が特定されていない状態で行なう誤り訂正であり、コードに誤り訂正符号として含まれている誤り訂正符号（たとえばリードソロモン符号）を取得して、取得した誤り訂正符号を用い、ステップＳ１３で取得したコードワードが正しいかどうかを確認する。
【００４３】
ステップＳ１５では、ステップＳ１４の処理の結果、訂正に成功したか否かを判断する。このステップＳ１５が肯定判断である場合にはステップＳ１８へ進む。一方、ステップＳ１５が否定判断である場合、すなわち、検出訂正処理に失敗した場合にはステップＳ１６へ進む。
【００４４】
ステップＳ１６ではグレーフラグ反映処理を行う。このグレーフラグ反映処理は、図５でグレーフラグを設定したセルを含んでいるコードワード（すなわちブロック）の位置を誤り位置として設定する処理である。図６（Ａ）は、ＱＲコード（登録商標）のブロック配置を示す概略図である。この図６（Ａ）において、×印はグレーフラグを設定したセルを含んでいるコードワードを示している。この×印のセルを含むコードワードを、誤っていることを示す符号、たとえば、図６（Ｂ）では「０」に変更する。この処理がステップＳ１６の処理である。
【００４５】
続くステップＳ１７では消失訂正を行う。より正確には、誤り訂正を再度実行するが、誤り位置が分かっているブロックについては消失訂正を行なう。消失訂正は、誤り位置が分かっていることが前提とはなるものの、シンドローム多項式から求める多項式は消失数値多項式１つのみとなる。よって、訂正能力が誤り訂正の２倍となるという特徴を持っている。従って、ステップＳ１５で検出訂正処理が失敗と判断されていても、このステップＳ１７の消失訂正は成功する可能性がある。
【００４６】
ステップＳ１８では、ステップＳ１７あるいはステップＳ１４の処理の結果を出力する。この結果は、具体的には、ステップＳ１５が肯定判断であった場合には、訂正成功（すなわち読み取り成功）との結果、および、読み取ったデータを出力することになる。また、ステップＳ１７を実行した場合には、訂正の成否を出力するとともに、訂正成功の場合には、訂正処理によって得たデータを出力する。
【００４７】
ここで、本実施形態の手法は従来手法よりも読み取り可能性が向上していることを、訂正コストを用いて定量的に説明する。リードソロモン法における訂正コストの関係式を（１）に示す。式（１）において、ＥＣＣは訂正コスト、Ｐは誤り検出数、ＦＰは誤り誤検出数、Ｅは誤り数である。
【００４８】
ＥＣＣ＝Ｐ＋ＦＰ＋（Ｅ−Ｐ）×２      ・・・（１）
誤り検出数Ｐ、誤り誤検出数ＦＰ、誤り数Ｅを詳しく説明すると次の通りである。誤り検出数Ｐは、グレーフラグを設定したセルのうち実際に二値化が誤っていたセルを含むブロックの数である。誤り検出数ＦＰは、グレーフラグを設定したが二値化は誤っていなかったセルを含むブロックの数である。誤り数Ｅは、二値化結果が誤っていたセルを含むブロック数である。また、式（１）の（Ｅ−Ｐ）は、二値化結果は誤っていたが、グレーフラグを設定できなかったセルを含むブロックの数を意味することになる。これについては、消失訂正を行なうことができない、つまり検出訂正を行なうので係数「２」を乗じている。
【００４９】
グレーフラグを設定しない従来手法の場合、Ｐ＝０、ＦＰ＝０である。よって、訂正コストＥＣＣは２Ｅとなる。一方、本実施形態において、仮に全ての誤り位置を検出できた場合には、Ｅ＝Ｐ、ＦＰ＝０となる。この場合、訂正コストＥＣＣはＥとなるので、従来手法の半分のコストで訂正ができることが分かる。
【００５０】
図７は、サンプル画像１０枚での本実施形態と従来手法との比較結果を示す図であり、図７（Ａ）は誤り総数を比較したグラフであり、図７（Ｂ）は訂正コストを比較したグラフである。
【００５１】
図７（Ａ）に示すように、本実施形態では、実際には誤っていないものについてまでグレーフラグを設定してしまう可能性があるので、誤り総数は実際の誤り数Ｅよりも増加する。しかし、図７（Ｂ）に示すように、訂正コストは従来よりも低下している。この図７の結果からも、本実施形態の手法は従来手法よりも読み取り可能性が向上していることが分かる。
【００５２】
以上、説明した本実施形態によれば、検出訂正が失敗した場合に、検出訂正よりも訂正能力の高い消失訂正を実行できるようにするため、二値化結果の信頼性が低いセルに対してグレーフラグを設定している。具体的には、輝度が閾値ｔｈに対して±αである場合には、そのセルにグレーフラグを設定している（図５のＳ２３）。そして、検出訂正処理（図４：Ｓ１４）が失敗した場合には（図４：Ｓ１５がＮＯ）、グレーフラグを含んでいるコードワードを誤り位置に設定し（図４：Ｓ１６）、消失訂正を行う（図４：Ｓ１７）。消失訂正は、検出訂正よりも２倍の訂正能力である。よって、本実施形態によれば、検出訂正に失敗したとしても訂正ができる可能性があるので、読み取りに失敗する場合が少なくなる。
【００５３】
（第２実施形態）  
次に、第２実施形態を説明する。第２実施形態は、第１実施形態とグレー設定処理において相違する。図８は、第２実施形態において実行するグレー設定処理である。この第２実施形態では、二種類の互いに異なる二値化処理を行い、それぞれの二値化処理において仮グレーフラグを設定する。そして、それら二種類の二値化処理の結果を用いて、セルの明暗の決定およびグレースコアの設定を行う。なお、グレースコアの意味は後述する。
【００５４】
まず、ステップＳ３１では第１二値化処理を行う。第２実施形態におけるこの第１二値化処理は大局的視点で各セルの二値化を行うものである。このステップＳ３１の処理が特許請求の範囲の大局的二値化手段に相当する。
【００５５】
ステップＳ３１の具体的処理内容は、撮像画像の二次元コードの部分を複数の部分領域に分割し、部分領域毎に第１閾値ｔｈ１を設定し、その設定した第１閾値ｔｈ１と部分領域に含まれるセルの輝度を比較する処理である。部分領域の大きさは、後述する第２二値化処理（局所的二値化処理）における閾値設定のための輝度範囲よりも広い範囲に設定される。たとえば、二次元コードを３×３の９つに分割し、各分割領域を部分領域とする。部分領域における第１閾値ｔｈ１は第１実施形態と同じ手法で決定する。この決定した第１閾値ｔｈ１と各セルの中心座標の輝度とを比較する。
【００５６】
続くステップＳ３２では、上記比較の結果、セル中心座標の輝度が第１閾値ｔｈ１から±α以内であるか否かを判断する。なお、このαは予め設定しておくが、第１実施形態と同じ値である必要はない。
【００５７】
ステップＳ３２の判断が肯定判断であった場合にはステップＳ３３へ進み、そのセルに対して仮グレーフラグ１を格納（設定）する。その後、ステップＳ３４へ進む。一方、ステップＳ３２が否定判断であった場合、すなわち、セル中心座標の輝度が第１閾値ｔｈ１から±α以上離れていた場合には、ステップＳ３３を介さずに直接、ステップＳ３４へ進む。ステップＳ３４では、ステップＳ３１での比較結果に基づいてセルの明暗を格納する。ここで格納したセルの明暗をセル明暗１とする。
【００５８】
ステップＳ３５では第２二値化処理を行う。第２二値化処理は局所的視点で各セルの二値化を行うものである。このステップＳ３５の処理が特許請求の範囲の局所的二値化手段に相当する。
【００５９】
ステップＳ３５の具体的処理内容は、各セルの周囲に存在する周辺セルの輝度変化から閾値（第２閾値ｔｈ２）を設定し、その設定した第２閾値ｔｈ２と当該セルの輝度を比較する。図１０は周辺セルを例示する図であり、丸印のセルの明暗を設定する場合に、そのセルを取り囲む８セルの輝度、および、そのセルの上下左右方向については、該当セルの２つ隣りのセルも含めている。よって合計１２セルを周辺セルとしており、１２セルの輝度に基づいて、その中心にあるセルの閾値（第２閾値ｔｈ２）を決定する。この決定した第２閾値ｔｈ２と、各セルの中心座標の輝度とを比較する。
【００６０】
続くステップＳ３６では、ステップＳ３５での比較の結果、セル中心座標の輝度が第２閾値ｔｈ２から±β以内であるか否かを判断する。なお、このβも予め設定しておく。βの値はαと同じであってもよいし、異なっていてもよい。
【００６１】
ステップＳ３６の判断が肯定判断であった場合にはステップＳ３７へ進み、そのセルに対して仮グレーフラグ２を格納（設定）する。その後、ステップＳ３８へ進む。一方、ステップＳ３６が否定判断であった場合、すなわち、セル中心座標の輝度が第２閾値ｔｈ２から±β以上離れていた場合には、ステップＳ３７を介さずに直接、ステップＳ３８へ進む。ステップＳ３８では、ステップＳ３５での比較結果に基づいてセルの明暗を格納する。ここで格納したセルの明暗をセル明暗２とする。
【００６２】
ステップＳ３９では、ステップＳ３４で設定したセル明暗１とステップＳ３８で設定したセル明暗２を比較する。また、ステップＳ３３で設定した仮グレーフラグ１とステップＳ３７で設定した仮グレーフラグ２も比較する。これ以降の処理は図９に示す。
【００６３】
ステップＳ４０では、ステップＳ３９の結果を用い、グレーフラグ１、２のいずれか一方でも設定されているか否かを判断する。この判断が肯定判断であればステップＳ４２へ進む。一方、グレーフラグ１もグレーフラグ２も設定されていない場合にはステップＳ４１へ進む。
【００６４】
ステップＳ４１では、ステップＳ３９の比較の結果、セル明暗１とセル明暗２とが不一致か否かを判断する。不一致である場合にもステップＳ４２へ進む。一方、セル明暗１とセル明暗２とが一致していればステップＳ４３へ直接進む。
【００６５】
ステップＳ４２ではグレースコアを設定する。ここで、このステップＳ４２を実行するのは、ステップＳ４０が肯定判断の場合、または、ステップＳ４１が肯定判断の場合である。すなわち、いずれか一方の二値化処理においてグレーフラグが設定された場合、あるいは、２種類の二値化処理における二値化結果（明暗）が異なっていた場合のいずれかである。
【００６６】
グレースコアは、閾値ｔｈからのずれが小さいほど大きい値に設定する。閾値ｔｈからのずれが小さいほど二値化結果の信頼性は低い。よって、グレースコアが大きいほど、二値化結果の信頼性が低いことになる。
【００６７】
なお、本実施形態では、第１閾値ｔｈ１と第２閾値ｔｈ２の２つの閾値を設定している。このうちのどちらか一方の予め定めてある側の閾値ｔｈと、その閾値ｔｈに対応する二値化処理手法における各セルの輝度との差に基づいてグレースコアを決定する。また、２種類の二値化手法のうち、閾値と各セルの輝度の差が大きいほうを用いて、グレースコアを決定してもよい。また、両方の二値化手法における閾値と各セルの輝度との差を平均した値に基づいてグレースコアを決定してもよい。
【００６８】
ステップＳ４３では、最終的なセル明暗を格納する。この第２実施形態では、第１二値化処理および第２二値化処理の二種類の二値化処理を行なっているが、このステップＳ４３において、二値化結果を統合するのである。二種類の二値化結果が一致していれば、その二値化結果が示しているセル明暗を格納する。不一致の場合には、予め設定された側のセル明暗を、最終的なセル明暗として格納する。
【００６９】
ステップＳ４４では、グレースコアのソートを行なう。その後、グレースコアを設定したセルに対して、ステップＳ４５、Ｓ４６を実行する。ステップＳ４５では、グレーフラグを設定したセルを含むブロックの数が消失訂正規定数に到達したか否かを判断する。この消失訂正規定数は、誤り訂正コードワードの数を超えない範囲で予め設定されている。消失訂正においては、最大で、誤り訂正コードワードの数の訂正が可能である。従って、上記消失訂正規定数は誤り訂正コードワードの数を超えない範囲で設定される。また、上記消失訂正規定数を誤り訂正コードワードの数、すなわち最大数としてしまうと、グレースコアが設定されなかったが、二値化結果が誤っていたセルの訂正ができない。そこで、上記消失訂正規定数は、誤り訂正コードワードの数を超えない範囲で、適宜の値が設定される。
【００７０】
ステップＳ４５の判断が否定判断であればステップＳ４６へ進む。ステップＳ４６では、グレーフラグ未設定セルのうち、最もグレースコアが高いセルにグレーフラグを設定する。このステップＳ４６を実行後は、ステップＳ４５へ戻り、前述の判断を再度行なう。これにより、グレースコアの高い順に、グレーフラグを設定したセルを含むブロックの数が消失訂正規定数に到達するまでグレーフラグが設定される。そして、消失訂正規定数に到達した場合には、図８、９のグレー設定処理を終了する。また、消失訂正規定数に到達しなくても、グレースコアを設定したセル全てにグレーフラグを設定した場合にもグレー設定処理を終了する。
【００７１】
グレー設定処理を終了した後は、第１実施形態と同様に、図４のステップＳ１３以下を実行する。
【００７２】
以上、説明した第２実施形態によれば、異なる２種類の二値化処理を行なっており（ステップＳ３１、Ｓ３５）、それぞれの二値化処理結果に基づいて仮グレーフラグ１、２を設定している（ステップＳ３３、Ｓ３７）。そして、それら２つの仮グレーフラグ１、２の設定有無に基づいて最終的なグレーフラグを設定している（ステップＳ４６）。これにより、二値化結果が正しいものに対してグレーフラグを設定してしまうことを少なくでき、その結果、読み取りに失敗する場合がより減少する。
【００７３】
また、この第２実施形態では、上記２つの仮グレーフラグ１、２から最終的なグレーフラグを設定する際に、まず二値化結果の信頼性を示すグレースコアを設定しており、このグレースコアが高いセルから順にグレーフラグを設定している。そして、グレーフラグを設定したセルを含むブロック数が消失訂正規定数となった場合には、グレーフラグの設定を終了している。よって、消失訂正の能力を越えて消失訂正を行うことが抑制される。その結果、消失訂正が成功する可能性が高くなるので、読み取りの成功可能性が向上する。
【００７４】
また、グレースコアが高いセルから順にグレーフラグを設定することで、二値化処理結果の信頼性が低いものについて消失訂正を行なうことができる。これによっても、読み取りの成功可能性が向上する。
【００７５】
（第３実施形態）
次に、第３実施形態を説明する。第３実施形態も、グレー設定処理において第１実施形態と相違する。第３実施形態では、隣接セル間の輝度勾配の程度、および、勾配の矛盾有無からグレーフラグを設定する。
【００７６】
まず、隣接セル間の輝度勾配、および、勾配の矛盾について説明する。図１１は、二次元コードの撮像画像の一部を拡大した図である。この図において、十字、実線、破線、（Ａ）、（Ｂ）、（Ｃ）は説明のために付してある。十字はセル中心を示しており、十字間を結ぶ実線、破線は、輝度勾配を演算する箇所を示している。特に、実線には、（Ａ）、（Ｂ）、（Ｃ）が付記してある。これら（Ａ）、（Ｂ）、（Ｃ）の部分の輝度変化を図１２に示す。
【００７７】
図１２は、（Ａ）、（Ｂ）、（Ｃ）とも、横軸は画像位置を示し縦軸が輝度を示す。また、図１２（Ａ）は暗セル間の輝度変化を示しており、図１２（Ｃ）は暗セルと明セルとの間の輝度変化を示している。図１２（Ｂ）の輝度勾配は、これらの中間的な勾配となっている。この図１２（Ｂ）のような輝度勾配となる場合、この輝度勾配を示している２セルのうち、少なくとも一方は、撮像条件、汚れ等、何らかの理由により、そのセルの本来の明暗よりも明るく、或いは暗く撮像されていると言える。そこで、第３実施形態では、この図１２（Ｂ）のような中間的な輝度勾配のセルに対してグレースコアを設定する。
【００７８】
また、第３実施形態では、輝度勾配の程度だけでなく、輝度勾配の矛盾も判定し、この判定結果から、グレーフラグを設定する。
【００７９】
図１３は、輝度勾配の矛盾なし、矛盾ありの一例を説明する図である。図１３において、１、２、３、４の数字が示されている四角が１つのセルを示しており、また、図１３右側の凡例で示すように、矢印は、ある程度の輝度勾配が存在することを示しており、矢印の基端が高輝度側、先端が低輝度側であることを示している。
【００８０】
図１３において、（ａ）、（ｂ）は輝度勾配に矛盾がない例、（ｃ）、（ｄ）は輝度勾配に矛盾がある例である。図１３（ａ）では、セル２に対してセル１から矢印が入っている。このことからセル１が明セル、セル２が暗セルと推定できる。また、セル２には、セル４からも矢印が入っている。このことからセル４が明セル、セル２が暗セルと推定できる。２つの矢印からのセル２に対する推定結果は矛盾していない。
【００８１】
図１３（ｂ）では、セル２に対してセル１から矢印が入っている。また、セル４に対してセル３から矢印が入っている。これらのことからセル１、３が明セル、セル２、４が暗セルと推定できる。また、ともに明セルであるセル１、３の間、および、ともに暗セルであるセル２、４の間には矢印はない。この点でも矛盾はない。
【００８２】
一方、図１３（ｃ）では、セル２に対してセル１から矢印が入っている。このことからセル１が明セル、セル２が暗セルと推定できる。また、セル４に対してセル３から矢印が入っている。このことからセル３が明セル、セル４が暗セルと推定できる。このように、セル２、４はともに暗セルと推定できるにも関わらず、セル２からセル４へ矢印が入っている。よって、セル２、４間の矢印は矛盾である。
【００８３】
また、図１３（ｄ）では、セル２に対してセル１から矢印が入っている。このことからセル１が明セル、セル２が暗セルと推定できる。また、セル３に対してセル４から矢印が入っている。このことから、セル４が明セル、セル３が暗セルであると推定できる。しかし、明セルであると推定できるセル１から暗セルであると推定できるセル３への矢印がない。よって、セル１、３は矛盾している。同様に、明セルであると推定できるセル４から暗セルであると推定できるセル２への矢印もない。よって、セル２、４も矛盾している。
【００８４】
第３実施形態では、以上のような、隣接セル間の輝度勾配、勾配の矛盾有無からグレーフラグを設定する。図１４は、第３実施形態において実行するグレー設定処理を示すフローチャートである。まず、ステップＳ５１を各セルに対して実行する。ステップＳ５１では、勾配情報を収集する。ここでの勾配とは、上下左右に隣接する４つの隣接セルとの間の勾配である。
【００８５】
続くステップＳ５２では基準勾配を設定する。基準勾配は、隣接２セルがともに暗セルである場合、あるいは、隣接２セルがともに明セルである場合の勾配と、隣接２セルが明セルと暗セルである場合の勾配の中間的な勾配とする。基準勾配の決定には、二次元コードに存在する固定パターン（たとえば、ＱＲコード（登録商標）であれば、ファインダパターン、アライメントパターンなど）を検出し、この固定パターンにおける明セルと暗セルとの間の勾配を利用する。固定パターンにおける明セルと暗セルの輝度勾配に所定係数（たとえば１／２）を乗じることで基準勾配を決定する。また、固定パターンに、隣接２セルが、ともに明セル、あるいは、ともに暗セルである場所があれば、それらの明−明セル、暗−暗セルの輝度勾配も用い、固定パターンにおける明セルと暗セルの輝度勾配との平均を、基準勾配としてもよい。
【００８６】
続いてステップＳ５３〜Ｓ５５をセル毎に実行する。ステップＳ５３では、ステップＳ５１で収集した勾配情報、すなわち、上下左右の隣接セルとの勾配が、ステップＳ５２で設定した基準勾配±γの以内であるか否かを判断する。上下左右の勾配のうちいずれか一つでも基準勾配±γ以内であればステップＳ５３を肯定判断してステップＳ５４へ進む。
【００８７】
ステップＳ５４ではグレースコアを設定する。グレースコアの大きさは、第２実施形態と同様に、基準値（ここでは基準勾配）との差に基づいて設定し、その差が小さいほど、すなわち、基準勾配に近いほど高い値に設定する。
【００８８】
ステップＳ５４を実行後はステップＳ５５へ進む。また、ステップＳ５３が否定判断であった場合には、直接、ステップＳ５５へ進む。ステップＳ５５では、セルの明暗を格納する。セルの明暗は、ステップＳ５１で収集した勾配情報とステップＳ５２で設定した基準勾配との比較により行う。ステップＳ５１で収集した勾配情報が基準勾配よりも高い場合であって、自セルの輝度が高い側であれば自セルは明セル、自セルの輝度が低い側であれば自セルは暗セルとする。また、ステップＳ５１で収集した勾配情報が基準勾配よりも低い場合には、そのセルと隣接セルは、ともに暗セルあるいはともに明セルと言える。この場合には、自セルの輝度から明セルか暗セルかを決定する。このときは、明セル、暗セルの基準輝度を決定し、この決定した基準輝度と自セルの輝度を比較する。基準輝度は、基準勾配を設定したときに用いた固定パターンにおいて明暗を推定できるセルの輝度を用いる。また、全セルの輝度分布から、明セル、暗セルの標準的な輝度を決定し、この標準的な輝度を基準輝度としてもよい。
【００８９】
ステップＳ５６では、図１３を用いて例示した輝度勾配の矛盾判定を行う。より詳しくは、次の（１）、（２）の場合に矛盾ありと判定する。（１）は、ステップＳ５５において互いに隣接するセルがともに暗セル或いはともに明セルであるとしたにも関わらず、それら隣接セル間の輝度勾配が基準勾配以上である場合である。（２）は、ステップＳ５５において互いに隣接するセルの一方を暗セル、他方を明セルとしたにも関わらず、それら隣接セル間の輝度勾配が基準勾配以下である場合である。なお、セル明暗も輝度勾配を用いて設定しているが、セル明暗を決定する際の輝度勾配は、上下左右のいずれか一方向のみでよい。このステップＳ５６での矛盾判定で用いる輝度勾配は、セル明暗決定に用いなかった方向の輝度勾配である。上記（１）、（２）のいずれかの場合に、隣接セルは矛盾ありとする。ステップＳ５６を実行後は図１５のステップＳ５７へ進む。
【００９０】
ステップＳ５７では、ステップ５４で設定したグレースコアのソートを行なう。その後、グレースコアを設定したセルに対して、ステップＳ５８、Ｓ５９を実行する。ステップＳ５８では、グレーフラグを設定したセルを含むブロックの数が消失訂正規定数に到達したか否かを判断する。この消失訂正規定数は、第２実施形態と同様、適宜設定される。
【００９１】
ステップＳ５８の判断が否定判断であればステップＳ５９へ進む。ステップＳ５９では、グレーフラグ未設定セルに対して、ステップＳ５６で判定した矛盾有無と、ステップＳ５４で設定したグレースコアに基づいてグレーフラグを設定する。詳しくは、まず、矛盾があると判定されたセルのうち、複数の方向において矛盾があると判定されたセルに対して、グレーフラグを設定する。ステップＳ５６での矛盾判定では、自セルのセル明暗は誤っていなくても、自セルに隣接するセルの明暗が誤っている場合には、勾配に矛盾ありと判定される可能性がある。しかし、複数の方向において矛盾があると判定される場合には、隣接セルではなく、自セルの明暗決定が誤っている可能性が高い。そこで、まず、複数の方向において矛盾があると判定されたセルに対してグレーフラグを設定する。
【００９２】
これによって消失規定数に到達しなかった場合には、グレースコアを設定したセルを対象としてグレーフラグを設定する。具体的には、グレースコアを設定したが、まだ、グレーフラグは設定していない残りのセルのうち、最もグレースコアが高いセルにグレーフラグを設定する。そして、グレースコアを設定した全てのセルに対してグレーフラグを設定しても、まだ消失訂正規定数に到達しなかった場合には、矛盾があると判定されたセルであって、一つの方向においてのみ矛盾があると判定されたセルにグレーフラグを設定する。なお、一つの方向においてのみ矛盾があると判定されたセルの全てにグレーフラグを設定することができない場合には、基準勾配からの差が小さいセルから順にグレーフラグを設定する。
【００９３】
ステップＳ５８において消失訂正規定数に到達したと判断した場合には、図１４、１５のグレー設定処理を終了する。また、消失訂正規定数に到達しなくても、グレースコアを設定したセル全てにグレーフラグを設定した場合にもグレー設定処理を終了する。グレー設定処理を終了した後は、第１、２実施形態と同様に、図４のステップＳ１３以下を実行する。
【００９４】
以上、説明した第３実施形態によれば、隣接２セルの輝度勾配を用いて各セルの二値化を行なっている（Ｓ５１、Ｓ５２、Ｓ５５）ので、セル中心に汚れがあっても正しく二値化を行うこともできる。
【００９５】
また、この第３実施形態では、輝度勾配の矛盾を判定しており（Ｓ５６）、輝度勾配の矛盾判定結果も用いてグレーフラグを設定している。輝度勾配に矛盾がある場合には、セルの二値化結果が誤っている可能性が高いことから、輝度勾配の矛盾判定結果も用いてグレーフラグを設定することで、明暗の判断が誤っている可能性が高いセルに対してグレーフラグを設定することができる。よって、読み取り精度がより向上する。
【００９６】
（第４実施形態）  
次に、第４実施形態を説明する。第４実施形態では、撮像条件が互いに異なる複数の撮像画像（ここでは２枚として説明する）を用いて読み取りを行なう。異ならせる撮像条件は、たとえば、照明条件とする。また、複数のカメラにより同時に撮像してもよい。この場合、撮像方向が異なることになる。
【００９７】
図１６は、第４実施形態において行なうコード読み取り処理を示すフローチャートである。この処理は、ユーザ操作により、コードを含む画像が２枚撮像されたことにより開始する。
【００９８】
まず、ステップＳ６１では、読み取り処理１を実行する。この読み取り処理１は、２枚の撮像画像のうちの一方の画像を用いて行なう。処理の内容は、従来公知の種々のコード読み取り処理を用いることができる。
【００９９】
ステップＳ６２では、ステップＳ６１での読み取り処理１が成功したか否かを判断する。この判断が肯定判断であれば、図１７のステップＳ７５へ進み、読み取ったデータを出力する。一方、ステップＳ６１が否定判断であればステップＳ６３へ進む。
【０１００】
ステップＳ６３では読み取り処理２を実行する。読み取り処理２では、２枚の撮像画像のうち、ステップＳ６１で用いた画像とは違う側の画像を用いて行なう。処理の内容は、従来公知の種々のコード読み取り処理を用いることができ、また、ステップＳ６１と同じでもよいし、異なっていてもよい。
【０１０１】
ステップＳ６４では、ステップＳ６３での読み取り処理２が成功したか否かを判断する。この判断が肯定判断であれば、図１７のステップＳ７５へ進み、読み取ったデータを出力する。一方、ステップＳ６４が否定判断であればステップＳ６５へ進む。
【０１０２】
ステップＳ６５では、マップ情報の有無を判断する。マップ情報とは、二次元コードにおける各セルの位置であり、読み取り処理１および読み取り処理２のいずれか一方でも、各セルの位置が決定できていない場合には、マップ情報なしと判断する。この場合にはステップＳ７５へ進み、読み取り処理の結果として、読み取り失敗との結果を出力する。
【０１０３】
一方、読み取り処理１、２でともに各セルの位置が決定できている場合にはマップ情報ありと判断する。この場合にはステップＳ６６へ進む。
【０１０４】
ステップＳ６６では、読み取り処理１、２のマップ情報の対応関係を決定する。すなわち、読み取り処理１における各セルが、読み取り処理２においてどのセルに対応するかを決定する。
【０１０５】
続いて、ステップＳ６７〜Ｓ７０を各セルに対して実行する。まず、ステップＳ６７では、読み取り処理１、２のセル明暗結果を比較する。ステップＳ６８では、ステップＳ６７の比較の結果、読み取り処理１、２のセル明暗結果が不一致か否かを判断する。不一致である場合にはステップＳ６９へ進む。
【０１０６】
ステップＳ６９ではグレースコアを設定する。グレースコアの決定方法は、たとえば、これまでに説明した実施形態と同じ方法で設定する。ステップＳ７０では、最終的なセル明暗を格納する。ここで格納するセル明暗は、第２実施形態と同じ方法で決定する。すなわち、読み取り処理１、２の二値化結果が一致していれば、その二値化結果が示しているセル明暗を格納する。不一致の場合には、予め設定された側の読み取り処理におけるセル明暗を、最終的なセル明暗として格納する。
【０１０７】
ステップＳ７１以降は図１７に示す。ステップＳ７１では、ステップ６９で設定したグレースコアのソートを行なう。その後、グレースコアを設定したセルに対して、ステップＳ７２、Ｓ７３を実行する。ステップＳ７２では、グレーフラグを設定したセルを含むブロックの数が消失訂正規定数に到達したか否かを判断する。この消失訂正規定数は、第２、３実施形態と同様、適宜設定される。
【０１０８】
ステップＳ７３では、グレーフラグ未設定セルのうち、最もグレースコアが高いセルにグレーフラグを設定する。このステップＳ７３を実行後は、ステップＳ７２へ戻り、前述の判断を再度行なう。そして、消失訂正規定数に到達したと判断した場合には、ステップＳ７４へ進む。
【０１０９】
ステップＳ７４では、グレーフラグを格納したセルを含んでいるコードワードの位置を誤り位置として設定して消失訂正を行う。その後は、ステップＳ７５へ進む。ステップＳ７４の消失訂正が成功した場合には、ステップＳ７５において、読み取り成功との結果、および、読み取ったデータを出力する。一方、消失訂正を実行しても、読み取りができなかった場合には、読み取りが失敗したことを出力する。
【０１１０】
以上、説明した第４実施形態によれば、読み取り処理１、２の２回の読み取り処理を実行しており、これら２回の読み取り処理におけるセル明暗結果が不一致であるセルに対してグレーフラグを設定している。これにより、明暗決定の信頼性が低いセルに対して精度よくグレーフラグを設定することができる。その結果、明暗決定が間違っている可能性が高いセルを含むブロックが優先的に消失訂正されることになることから、明暗の誤りを訂正できる可能性が向上する。よって、読み取りの成功可能性がより向上する。
【０１１１】
以上、本発明の実施形態を説明したが、本発明は上述の実施形態に限定されるものではなく、次の実施形態も本発明の技術的範囲に含まれ、さらに、下記以外にも要旨を逸脱しない範囲内で種々変更して実施することができる。
【０１１２】
たとえば、前述の第３実施形態では、隣接セル間の輝度勾配、および、輝度勾配の矛盾有無からグレーフラグを設定していたが、いずれか一方のみからグレーフラグを設定してもよい。
【０１１３】
また、マージンαを固定値とするのではなく、誤り訂正能力に応じて定まるようにしておいてもよい。誤り訂正能力は、たとえば、ユーザが入力する。また、コードのフォーマット情報から誤り訂正能力を読み取ってもよい。
【符号の説明】
【０１１４】
１０：二次元コード読み取り装置、      ２０：回路部、      ２１：発光ダイオード、      ２３：エリアセンサ、      ２７：結像レンズ、      ３１：増幅回路、      ３３：Ａ／Ｄ変換回路、      ３５：メモリ、      ３６：アドレス発生回路、      ３８：同期信号発生回路、      ４０：制御回路、      ４１：電源スイッチ、      ４２：操作スイッチ、      ４３：ＬＥＤ、      ４４：ブザー、      ４６：液晶表示器、      ４８：通信インタフェース、      ４９：電池、      ６０：マーカ光投射器、      Ｓ１２：グレー設定手段、      Ｓ１４：検出訂正手段、      Ｓ１７：消失訂正手段、      Ｓ３１：大局的二値化手段、      Ｓ３５：局所的二値化手段、      Ｓ４２、Ｓ５４、Ｓ６９：スコア設定手段
【図１】
0005825110.tif 000002
【図２】
0005825110.tif 000003
【図４】
0005825110.tif 000004
【図５】
0005825110.tif 000005
【図７】
0005825110.tif 000006
【図８】
0005825110.tif 000007
【図９】
0005825110.tif 000008
【図１０】
0005825110.tif 000009
【図１２】
0005825110.tif 000010
【図１３】
0005825110.tif 000011
【図１４】
0005825110.tif 000012
【図１５】
0005825110.tif 000013
【図１６】
0005825110.tif 000014
【図１７】
0005825110.tif 000015
【図３】
0005825110.tif 000016
【図６】
0005825110.tif 000017
【図１１】
0005825110.tif 000018