(57)【要約】【課題】２Ｄコードを適切に認識する。【解決手段】２Ｄコード１０１の画像から２Ｄコード１０１を認識する際に、はじめに２Ｄコード１０１の画像が第１の閾値に基づいて２値化され、その２値化データに基づいて、所定の情報がコード化されているコード部１１２の位置を検出するために用いられるガイド部１１１およびコーナセル１２１が検出される。次に、第１の閾値より大きい値の第２の閾値に基づいて２値化された、ガイド部１１１およびコーナセル１２１によって特定されるコード部１１２の２値化データに基づいて、コード化セル１２２がマッピングされる。本発明は、例えば、パーソナルコンピュータに適用される。【選択図】図２
2007156879.tif 000002
【特許請求の範囲】
【請求項１】
複数のセルが所定の配列規則に従って２次元配置されて所定の情報がコード化されている２次元コードを認識する情報処理装置において、
前記２次元コードの画像の、前記所定の情報がコード化されているセルの領域を特定する際に利用される位置決め部を検出する検出手段と、
前記検出手段により検出された前記位置決め部により特定される領域に存在するセルの配置規則から、前記所定の情報を取得する取得手段と
を備え、
前記検出手段は、前記２次元コードの画像が第１の閾値に基づいて２値化された結果得られた２値化データに基づいて、前記位置決め部を検出し、
前記取得手段は、前記位置決め部により特定される領域が前記第１の閾値と異なる第２の閾値に基づいて２値化された結果得られた２値化データに基づいて、前記位置決め部により特定される領域に存在するセルの配置規則を検出し、前記所定の情報を取得する
情報処理装置。
【請求項２】
前記２次元コードの画像を、前記第１の閾値および前記第２の閾値に基づいて、３値化する３値化手段をさらに備え、
前記検出手段は、前記３値化手段による３値化の結果得られた３値化データを、前記第１の閾値に基づいて２値化し、
前記取得手段は、前記３値化手段による３値化の結果得られた３値化データを、前記第２の閾値に基づいて２値化する
請求項１に記載の情報処理装置。
【請求項３】
前記検出手段は、前記２次元コードの画像が、前記第１の閾値に基づいて２値化された結果得られた２値化データと前記第２の閾値に基づいて２値化された結果得られた２値化データに基づいて、前記位置決め部を検出し、
前記取得手段は、前記位置決め部により特定される領域が、前記第２の閾値に基づいて２値化された結果得られた２値化データと前記第１の閾値に基づいて２値化された結果得られた２値化データに基づいて、前記位置決め部により特定される領域に存在するセルの配置規則を検出し、前記所定の情報を取得する
請求項１に記載の情報処理装置。
【請求項４】
複数のセルが所定の配列規則に従って２次元配置されて所定の情報がコード化されている２次元コードを認識する情報処理方法において、
前記２次元コードの画像の、前記所定の情報がコード化されているセルの領域を特定する際に利用される位置決め部を検出する検出ステップと、
前記検出ステップの処理で検出された前記位置決め部により特定される領域に存在するセルの配置規則から、前記所定の情報を取得する取得ステップと
を含み、
前記検出ステップは、前記２次元コードの画像が第１の閾値に基づいて２値化された結果得られた２値化データに基づいて、前記位置決め部を検出し、
前記取得ステップは、前記位置決め部により特定される領域が前記第１の閾値と異なる第２の閾値に基づいて２値化された結果得られた２値化データに基づいて、前記位置決め部により特定される領域に存在するセルの配置規則を検出し、前記所定の情報を取得する
情報処理方法。
【請求項５】
複数のセルが所定の配列規則に従って２次元配置されて所定の情報がコード化されている２次元コードを認識する情報処理を、コンピュータに実行させるプログラムにおいて、
前記２次元コードの画像の、前記所定の情報がコード化されているセルの領域を特定する際に利用される位置決め部を検出する検出ステップと、
前記検出ステップの処理で検出された前記位置決め部により特定される領域に存在するセルの配置規則から、前記所定の情報を取得する取得ステップと
を含み、
前記検出ステップは、前記２次元コードの画像が第１の閾値に基づいて２値化された結果得られた２値化データに基づいて、前記位置決め部を検出し、
前記取得ステップは、前記位置決め部により特定される領域が前記第１の閾値と異なる第２の閾値に基づいて２値化された結果得られた２値化データに基づいて、前記位置決め部により特定される領域に存在するセルの配置規則を検出し、前記所定の情報を取得する
情報処理をコンピュータに実行させるプログラム。
【請求項６】
複数のセルが所定の配列規則に従って２次元配置されて所定の情報がコード化されている２次元コードを認識する情報処理装置において、
前記２次元コードの画像の、前記所定の情報がコード化されているセルの領域を特定する際に利用される位置決め部を、前記２次元コードの画像が第１の閾値に基づいて２値化された結果得られた２値化データに基づいて検出する検出手段と、
前記位置決め部により特定される領域が前記第１の閾値と異なる第２の閾値に基づいて２値化された結果得られた２値化データに基づいて、前記位置決め部により特定される領域に存在するセルの配置規則を検出し、前記配列規則から、前記所定の情報を取得する取得手段と
を備え、
前記検出手段または前記取得手段は、前記２次元コードの画像が３値化された結果得られた３値化データを、所定位置関係にある複数の３値化データ毎に、前記複数の３値化データの相対的関係に基づいて２値化する
情報処理装置。
【請求項７】
複数のセルが所定の配列規則に従って２次元配置されて所定の情報がコード化されている２次元コードを認識する情報処理方法において、
前記２次元コードの画像の、前記所定の情報がコード化されているセルの領域を特定する際に利用される位置決め部を、前記２次元コードの画像が第１の閾値に基づいて２値化された結果得られた２値化データに基づいて検出する検出ステップと、
前記位置決め部により特定される領域が前記第１の閾値と異なる第２の閾値に基づいて２値化された結果得られた２値化データに基づいて、前記位置決め部により特定される領域に存在するセルの配置規則を検出し、前記配列規則から、前記所定の情報を取得する取得ステップと
を含み、
前記検出ステップまたは前記取得ステップは、前記２次元コードの画像が３値化された結果得られた３値化データを、所定位置関係にある複数の３値化データ毎に、前記複数の３値化データの相対的関係に基づいて２値化する
情報処理方法。
【請求項８】
複数のセルが所定の配列規則に従って２次元配置されて所定の情報がコード化されている２次元コードを認識する情報処理を、コンピュータに実行させるプログラムにおいて、
前記２次元コードの画像の、前記所定の情報がコード化されているセルの領域を特定する際に利用される位置決め部を、前記２次元コードの画像が第１の閾値に基づいて２値化された結果得られた２値化データに基づいて検出する検出ステップと、
前記位置決め部により特定される領域が前記第１の閾値と異なる第２の閾値に基づいて２値化された結果得られた２値化データに基づいて、前記位置決め部により特定される領域に存在するセルの配置規則を検出し、前記配列規則から、前記所定の情報を取得する取得ステップと
を含み、
前記検出ステップまたは前記取得ステップは、前記２次元コードの画像が３値化された結果得られた３値化データを、所定位置関係にある複数の３値化データ毎に、前記複数の３値化データの相対的関係に基づいて２値化する
情報処理をコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置および方法、並びにプログラムに関し、特に、２次元バーコードを適切に認識することができるようにする情報処理装置および方法、並びにプログラムに関する。
【背景技術】
【０００２】
図１は、例えばパーソナルコンピュータ等により認識される２次元バーコード（以下、２Ｄコードと称する）１０１の例を示している。この２Ｄコード１０１をパーソナルコンピュータに認識させることにより、パーソナルコンピュータに２Ｄコード１０１によりコード化されている所定の情報に応じた処理を実行させることができる。
【０００３】
２Ｄコード１０１は、Ｘ軸方向が１つの正方形（以下、ブロックと称する）７つ分の長さで、Ｙ軸方向が９．５ブロック分の長さの長方形の範囲内に設けられたガイド部１１１およびコード部１１２から構成されている。
【０００４】
ガイド部１１１は、Ｘ軸方向が７ブロック分の長さで、Ｙ軸方向が１．５ブロック分の長さの長方形のセルにより形成されている。
【０００５】
。
コード部１１２は、ガイド部１１１から１ブロック分離れて設けられており、方形のセルが２次元的にパターン化されて配置されている。
【０００６】
コード部１１２を構成するセルには、図２に示すように、ガイド部１１１の図中左端から７ブロック分上方向に位置する左上コーナセル１２１−１、およびガイド部１１１の右端から７ブロック分上方向に位置する右上コーナセル１２１−２、並びにガイド部１１１の左端から１ブロック分上方向に位置する左下コーナセル１２１−３、およびガイド部１１１の右端から１ブロック分上方向に位置する右下コーナセル１２１−４が存在する。なお、左上コーナセル１２１−１、右上コーナセル１２１−２、左下コーナセル１２１−３、および右下コーナセル１２１−４を特に区別する必要がない場合、これらをまとめてコーナセル１２１と称する。
【０００７】
コーナセル１２１の周囲の隣接する３ブロック（図中点線で示されるブロック）分の領域には、セルが存在しない。
【０００８】
コード部１１２のコーナセル１２１以外のセル（以下、適宜、コード化セルと称する）１２２は、所定の英数文字等に応じて２次元的に配列されている。
【０００９】
パーソナルコンピュータは、２Ｄコード１０１の画像から、ガイド部１１１およびコード部１１２のコーナセル１２１を検出し、それらに基づいて、コード部１１２が存在する範囲を特定し、そしてその範囲に存在するコード化セル１２２の配列パターンからコード化された情報を取得する。
【００１０】
次に、従来の２Ｄコード認識処理を、図３のフローチャートを参照して説明する（特許文献１参照）。
【００１１】
ステップＳ１において、所定の輝度値を示す閾値の設定をカウントするカウンタｉの値に１が初期設定される。この例の場合、図４に示すように、閾値が５段階に設定され、各閾値の大きさは、設定番号１に示される閾値Ａが最も大きく、設定番号５に示される閾値Ｅに向かって、段階的に小さくなっている。
【００１２】
図３に戻りステップＳ２において、カウンタｉの値に対応する設定番号の閾値に基づいて、パーソナルコンピュータに取り込まれた２Ｄコード１０１の画像データに対して２値化処理が行われる。
【００１３】
ここで、閾値より大きい輝度値を保持する画素は、”１”に符号化され、表示上、その画素は白色とされる。以下においては、このように、”１”に符号化された画素を、白色画素と称する。
【００１４】
一方、閾値以下の輝度値を保持する画素は、”０”に符号化され、表示上、その画素は黒色とされる。以下においては、このように、”０”に符号化された画素を、黒色画素と称する。
【００１５】
次に、ステップＳ３において、図５に示すように、黒色画素が連結する領域（以下、黒色画素連結領域と称する）を１つの領域として、左上から右下に向かって順に番号が設定（ラベリング）される。
【００１６】
ステップＳ４において、ステップＳ３でラベリングされた黒色画素連結領域の総数Ｍが求められ、そして求められた黒色画素連結領域の総数Ｍが２５７個以上であるか否かが判定され、Ｍが２５７以上であると判定された場合、この２値化画像が、以降の処理を実行するのに適さない画像であるとして、ステップＳ５に進む。
【００１７】
ステップＳ５において、カウンタｉの値が、閾値の設定数Ｎ（＝５）と等しい（ｉ＝５）か否かが判定され、ｉ＝５ではないと判定された場合、ステップＳ６において、カウンタｉの値が１だけ増加された後、ステップＳ２に戻る。ステップＳ２において、１つだけ増加されたカウンタｉの値に対応する設定番号の閾値に基づいて、取り込まれた画像データに対して、再度、２値化処理が実行される。
【００１８】
上述したように、設定番号１で示される閾値Ａは、最も値が大きい閾値で、それによって２値化処理された場合、画像データの多くの画素の輝度値が、閾値Ａより小さい値となり、多くの画素が黒色画素とされ、これにより、黒色画素連結領域の総数Ｍが多くなる。そこで、ステップＳ４でYESの判定がなされた場合、ステップＳ５で、カウンタｉの値が１つ増加され、１段階小さい値の閾値によって２値化処理することによって、黒色画素とされる画素、すなわち黒色画素連結領域の数を減少させることができる。
【００１９】
ステップＳ５において、ｉ＝５であると判定された場合、すなわち、閾値Ａ乃至閾値Ｅのいずれの閾値によっても、適当な総数Ｍの黒色画素連結領域が生成されなかった場合、この１フレーム分の画素データには、２Ｄコード１０１の画像が存在しないものと判定され、処理が終了される。
【００２０】
ステップＳ４において、黒色画素連結領域の総数が２５７個より小さい数であると判定された場合、ステップＳ７に進み、ガイド部検出処理が実行される。ステップＳ７におけるガイド部検出処理の詳細を、図６のフローチャートを参照して説明する。
【００２１】
はじめに、ステップＳ２１において、黒色画素連結領域の数をカウントするカウンタｊの値が１に初期設定され、次に、ステップＳ２２において、例えばフレームの中央点から、左回りの渦巻の軌跡に沿って、黒色画素連結領域が探索され、始めに検出された黒色画素連結領域がガイド部候補領域として選択される。
【００２２】
次に、ステップＳ２３において、ステップＳ２２で選択されたガイド部候補領域の、ガイド部１１１の長軸（以下、辺Ａと称する）および短軸（以下、辺Ｂと称する）に対応する辺ＡTおよび辺ＢTが決定される。辺ＡTは、図７に示すように、黒色画素連結領域が画像上のＸ軸上に投影されて形成される線（Ｘ軸投影線）とされ、辺ＢTは、Ｙ軸上に投影されて形成される線（Ｙ軸投影線）とされる。
【００２３】
次に、ステップＳ２４において、短軸に対応する辺ＢTが２０画素より少ない画素で構成されているか否かが判定される。例えば、短軸（辺Ｂ）が２０画素より少ない画素で構成されている黒色画素連結領域がガイド部１１１であるとすると、図１に示したように、辺Ｂの長さが１．５に対して１の割合で求められる１ブロックの一辺の長さが小さくなり、最小セル（１×１ブロック領域のセル）が適切に表示されなくなる。このことより、辺ＢTが２０画素より少ない画素で構成されていると判定された場合、今回ステップＳ２２で選択された黒色画素連結領域は、ガイド部１１１ではないとされ、ステップＳ２５に進む。
【００２４】
ステップＳ２５において、カウンタｊの値が、黒色画素連結領域の総数Ｍと等しい（ｊ＝Ｍ）か否かが判定され、ｊ＝Ｍではないと判定された場合、ステップＳ２６に進み、カウンタｊの値が１だけ増加された後、ステップＳ２２に戻る。そして、次に検出される黒色画素連結領域が、次のガイド部候補領域とされ、同様の処理が行われる。
【００２５】
ステップＳ２４において、ステップＳ２２で選択されたガイド部候補領域の辺ＢTが２０画素と等しいか、それより多い画素で構成されていると判定された場合、ステップＳ２７に進み、ガイド部候補領域の辺ＡTが３００画素より多い画素で構成されているか否かが判定される。例えば、長軸（辺Ａ）が３００画素より多い画素で構成されている黒色画素連結領域がガイド部１１１であるとすると、図１に示したように、辺Ａの長さが７に対して１の割合で求められる１ブロックの一辺の長さが大きくなり、図２に示したように、ガイド部１１１から７ブロック分離れて位置する左上コーナセル１２１−１および右上コーナセル１２１−２が、表示されなくなる。このことより、辺ＡTが３００画素より多い画素で構成されていると判定された場合、今回ステップＳ２２で選択された黒色画素連結領域は、ガイド部１１１ではないとされ、ステップＳ２５に進む。
【００２６】
ステップＳ２７において、ステップＳ２２で選択されたガイド部候補領域の辺ＡTが３００画素より多い画素で構成されていない（３００画素以下の画素で構成されている）と判定された場合、ステップＳ２８に進む。
【００２７】
ステップＳ２８において、ガイド部候補領域の黒色画素の総数が、２０画素以上かつ１５００画素未満であるか否かが判定され、ガイド部候補領域の黒色画素の総数が２０画素未満、または１５００画素以上であると判定された場合、ステップＳ２５に進む。黒色画素の総数が、２０画素未満の場合、ステップＳ２４で辺ＢTが２０画素より少ない画素で構成された場合と同様の問題が発生し、また、１５００画素以上である場合、ステップＳ２７で辺ＡTが３００画素より多い画素で構成された場合と同様の問題が発生し、いずれの場合も、ガイド部１１１である可能性が小さい。
【００２８】
ステップＳ２８で、２０画素以上かつ１５００画素未満であると判定された場合、ステップＳ２９に進み、ステップＳ２２で選択されたガイド部候補領域の方形らしさ（ｆｉｔｎｅｓｓ）が判定され、方形であると判定された場合、ステップＳ３０に進む。
【００２９】
ステップＳ３０において、ステップＳ２９で方形とされたガイド部候補領域の長軸と短軸の比が２．０以上かつ２５以下であるか否かが判定され、２．０以上かつ２５以下であると判定された場合、ステップＳ３１に進む。
【００３０】
ステップＳ３１において、ステップＳ２２で選択したガイド部候補領域がガイド部１１１として設定（仮定）され、例えば、ガイド部候補領域とされた黒色画素連結領域の番号が記憶される。このようにして、ガイド部１１１が検出されると、処理は終了される。
【００３１】
ステップＳ２８で、黒色画素の総数が２０画素未満、若しくは１５００画素以上であると判定された場合、ステップＳ２９で、ガイド部候補領域が方形ではないと判定された場合、またはステップＳ３０で、辺ＡTと辺ＢTの比が２．０未満若しくは２５以上であると判定された場合、今回ステップＳ２２で選択されたガイド部候補領域は、ガイド部１１１ではないとされ、ステップＳ２５に進み、次に検出された黒色画素連結領域が次のガイド部候補領域とされ、以降の処理が行われる。
【００３２】
ステップＳ２５で、カウンタｊの値が黒色画素連結領域の総数Ｍと等しい（ｊ＝Ｍ）と判定された場合、ステップＳ３１でガイド部１１１が設定されず、処理は終了される。すなわち、今回２Ｄコード認識処理の対象とされた画像データ（１フレーム）には、ガイド部１１１が存在しないものとされる。
【００３３】
以上のようにして、ガイド部検出処理が完了したとき、次に、図３のステップＳ８に進む。
【００３４】
ステップＳ８において、ステップＳ７でガイド部１１１が検出されたか否かが判定され、検出されたと判定された場合、ステップＳ９に進み、コード部検出処理が実行される。このコード部検出処理の詳細を、図８のフローチャートを参照して説明する。
【００３５】
ステップＳ４１において、図３のステップＳ３で検出された黒色画素連結領域の数をカウントするカウンタｊの値が１に初期設定され、ステップＳ４２において、その値に対応する番号の黒色画素連結領域が検出され、それが左上コーナセル候補領域として選択される。
【００３６】
次に、ステップＳ４３において、ステップＳ４２で選択された左上コーナセル候補領域の、図７に示したようにして決定された辺ＡTおよび辺ＢTの長さの比が３倍以下であるか否かが判定され、その比が３倍以下であると判定された場合、ステップＳ４４に進む。
【００３７】
ステップＳ４４において、ステップＳ４２で選択された左上コーナセル候補領域が、図３のステップＳ７で検出されたガイド部１１１に対して予め設定された探索範囲内に存在するか否かが判定され、探索範囲内に存在すると判定された場合、ステップＳ４５において、それが左上コーナセル１２１−１として設定（仮定）される。
【００３８】
ステップＳ４３で、辺ＡTの長さに対する辺ＢTの長さの比が３倍より大きいと判定された場合、またはステップＳ４４で、探索範囲内に存在しないと判定された場合、ステップＳ４２で選択された黒色画素連結領域は、左上コーナセル１２１−１ではないとして、ステップＳ４６に進み、カウンタｊの値が黒色画素連結領域の総数Ｍに等しい（ｊ＝Ｍ）か否かが判定され、ｊ＝Ｍではないと判定された場合、ステップＳ４７に進み、カウンタｊの値が１だけ増加されて、ステップＳ４２に戻る。そして、次の番号の黒色画素連結領域が、次の左上コーナセル候補領域とされ、同様の処理が行われる。
【００３９】
ステップＳ４５において、左上コーナセル１２１−１が設定されると、ステップＳ４８に進み、黒色画素連結領域の番号をカウントする他のカウンタｋに２が初期設定され、次に、ステップＳ４９において、カウンタｋの値に対応する番号の黒色画素連結領域が検出され、それが右上コーナセル候補領域として選択される。
【００４０】
次に、ステップＳ５０において、ステップＳ４５で設定された左上コーナセル１２１−１の画素数（面積）と、ステップＳ４９で選択された右上コーナセル候補領域の画素数（面積）の比が算出され、その比（面積比）が６倍以下であるか否かが判定され、６倍以下であると判定された場合、ステップＳ５１に進む。
【００４１】
ステップＳ５１において、ステップＳ４５で設定された左上コーナセル１２１−１の面積（画素数）、ステップＳ４９で選択された右上コーナセル候補領域の面積（画素数）、およびその左上コーナセル１２１−１の中心点とその右上コーナセル候補領域の中心点との距離（Ｄ）が算出され、式（１）および式（２）が成立するか否かが判定される。
（Ｓ1／Ｄ2）≦９００  ・・・（１）
（Ｓ2／Ｄ2）≦９００  ・・・（２）
【００４２】
ステップＳ５１において、式（１）および式（２）が成立すると判定された場合、ステップＳ５２に進み、ステップＳ４９で選択された右上コーナセル候補領域が右上コーナセル１２１−２として設定（仮定）される。
【００４３】
右上コーナセル１２１−２が設定（仮定）されると、ステップＳ５５において、ステップＳ４５で設定された左上コーナセル１２１−１、ステップＳ５２で設定された右上コーナセル１２１−２、および図３のステップＳ７で設定されたガイド部１１１により特定される領域が、表示上のＸ軸方向に７ブロック分の長さ、そしてＹ軸方向に９．５ブロック分の長さの領域になるようにアフィン変換される。なお、１ブロックの１辺の長さは、図３のステップＳ７で設定されたガイド部１１１の辺ＡTまたは辺ＢTに基づいて算出される。
【００４４】
次に、ステップＳ５６において、ステップＳ５５で変換された画像から、図３のステップＳ７で設定されたガイド部１１１と、ガイド部１１１上側の７×１ブロック（ガイド部１１１とコード部１１２との間の７×１ブロックに相当するブロック）分の領域（７×２．５ブロック領域）（図１）が削除され、その結果得られた７×７ブロック領域の範囲に、黒色画素連結領域がセルとしてマッピングされ、コードマップが生成される。
【００４５】
ステップＳ５７において、ステップＳ５６で生成されたコードマップのセルのうち、４角のセルが検出され、コーナセル１２１の周り３ブロック領域にセルが存在しないので（図２）、その周りの３ブロック領域が白色画素とされているか否かが判定され、白色ブロックとされていると判定された場合、ステップＳ５８に進み、ステップＳ５６で生成されたコードマップが２Ｄコード１０１のコード部１１２と設定（仮定）される。このようにして、コード部１１２が検出され、処理は終了される。
【００４６】
ステップＳ５０で、面積比が６倍より大きいと判定された場合、ステップＳ５１で、式（１）および式（２）が成立しないと判定された場合、またはステップＳ５７で、４角のセルの周りの３ブロック領域が白色画素とされていないと判定された場合、ステップＳ５３に進み、カウンタｋの値が黒色画素連結領域の総数Ｍに等しい（ｋ＝Ｍ）か否かが判定され、ｋ＝Ｍではないと判定された場合、ステップＳ５４に進み、カウンタｋの値が１だけ増加され、ステップＳ４９に戻る。そして次の番号の黒色画素連結領域が、次の右上コーナセル候補領域とされ、同様の処理が行われる。
【００４７】
ステップＳ５３で、カウンタｋの値が黒色画素連結領域の総数Ｍと等しいと判定された場合、ステップＳ４６に戻り、ステップＳ４６の処理で、ｊ＝Ｍでないと判定された場合、ステップＳ４７において、カウンタｊの値が１だけ増加され、ステップＳ４２に戻り、次の番号の黒色画素連結領域が、次の左上コーナセル候補領域として選択され、それ以降の処理が行われる。
【００４８】
ステップＳ４６で、ｊ＝Ｍと判定された場合、今回２Ｄコード認識処理の対象となっている画像には、２Ｄコード１０１が存在しないものとされ、処理は終了される。
【００４９】
以上のようにして、コード部検出処理が完了すると、図３のステップＳ１０に進み、コード部１１２が検出されたか否かが判定され、検出されたと判定された場合、ステップＳ１１において、検出されたコード部１１２のコードマップから、コードデータ、すなわち２Ｄコード１０１の値が算出され、保持される。その後、処理は終了される。
【００５０】
ステップＳ８で、ガイド部１１１が検出されていないと判定された場合、またはステップＳ１０で、コード部１１２が検出されていないと判定された場合、今回２Ｄコード認識処理の対象とされた画像データには、２Ｄコード１０１が存在しないものとされ、処理は終了される。
【００５１】
以上のようにして２Ｄコード１０１が認識される。
【００５２】
【特許文献１】特開２０００−１４８９０４号公報
【発明の開示】
【発明が解決しようとする課題】
【００５３】
ところで、例えば図９に示すように２Ｄコード１０１に何かの影が落ちている場合の２Ｄコード１０１の画像データについて、上述した２Ｄコード認識処理が行われるものとする。この場合閾値が、図３のステップＳ４の処理で、黒色画素連結領域の数に応じた値に決定されても、例えば閾値が大きな値に設定されると、図１０に示すように、影により輝度値が小さくなっている部分（暗くなっている部分）が黒色画素（図中、Ｂｒ−１）とされ、ガイド部１１１とその黒色画素が連結し１つの黒色画素連結領域を形成してしまい、ガイド部１１１が適切に検出されない（例えば、図６のステップＳ２９）。
【００５４】
なおこの場合コード部１１２は、ガイド部１１１とコーナセル１２１により特定されるので、それらにより特定される範囲外は、コード部１１２としては取り扱われない。すなわち例えばコード部１１２付近の影の部分が黒色画素（図１０においては、例えばＢｒ−２）とされ、コード部１１２のコード化セル１２２と連結して１つの黒色画素連結領域が形成されても、その部分は排除されてコード部１１２が認識されるので、特に問題はない。
【００５５】
一方閾値が小さな値に設定されると、コード部１１２の、例えば図１１中点線の枠で示される、影から遠い部分で明るくなっている部分（図９）が、黒色画素とはならず、２Ｄコード１０１の値が適切に読み取れない場合がある。
【００５６】
なおこの場合（図１１）、ガイド部１１１は、図１０に示した影による黒色画素連結領域Ｂr−１が存在しないので、ガイド部１１１は、適切に検出される。
【００５７】
すなわち従来においては、例えば影等で一部が暗くなった場合、２Ｄコード１０１が適切に認識されない場合があった。
【００５８】
本発明は、このような状況に鑑みてなされたものであり、例えば影等で一部が暗くなった場合においても、２Ｄコード１０１が適切に認識されるようにするものである。
【課題を解決するための手段】
【００５９】
本発明の第１の側面の情報処理装置は、複数のセルが所定の配列規則に従って２次元配置されて所定の情報がコード化されている２次元コードを認識する情報処理装置において、前記２次元コードの画像の、前記所定の情報がコード化されているセルの領域を特定する際に利用される位置決め部を検出する検出手段と、前記検出手段により検出された前記位置決め部により特定される領域に存在するセルの配置規則から、前記所定の情報を取得する取得手段とを備え、前記検出手段は、前記２次元コードの画像が第１の閾値に基づいて２値化された結果得られた２値化データに基づいて、前記位置決め部を検出し、前記取得手段は、前記位置決め部により特定される領域が前記第１の閾値と異なる第２の閾値に基づいて２値化された結果得られた２値化データに基づいて、前記位置決め部により特定される領域に存在するセルの配置規則を検出し、前記所定の情報を取得する。
【００６０】
前記２次元コードの画像を、前記第１の閾値および前記第２の閾値に基づいて、３値化する３値化手段をさらに設け、前記検出手段には、前記３値化手段による３値化の結果得られた３値化データを、前記第１の閾値に基づいて２値化させ、前記取得手段には、前記３値化手段による３値化の結果得られた３値化データを、前記第２の閾値に基づいて２値化させることができる。
【００６１】
前記検出手段は、前記２次元コードの画像が、前記第１の閾値に基づいて２値化された結果得られた２値化データと前記第２の閾値に基づいて２値化された結果得られた２値化データに基づいて、前記位置決め部を検出し、前記取得手段は、前記位置決め部により特定される領域が、前記第２の閾値に基づいて２値化された結果得られた２値化データと前記第１の閾値に基づいて２値化された結果得られた２値化データに基づいて、前記位置決め部により特定される領域に存在するセルの配置規則を検出し、前記所定の情報を取得することができる。
【００６２】
本発明の第１の側面の情報処理方法、またはプログラムは、複数のセルが所定の配列規則に従って２次元配置されて所定の情報がコード化されている２次元コードを認識する情報処理方法において、または複数のセルが所定の配列規則に従って２次元配置されて所定の情報がコード化されている２次元コードを認識する情報処理を、コンピュータに実行させるプログラムにおいて、前記２次元コードの画像の、前記所定の情報がコード化されているセルの領域を特定する際に利用される位置決め部を検出する検出ステップと、前記検出ステップの処理で検出された前記位置決め部により特定される領域に存在するセルの配置規則から、前記所定の情報を取得する取得ステップとを含み、前記検出ステップは、前記２次元コードの画像が第１の閾値に基づいて２値化された結果得られた２値化データに基づいて、前記位置決め部を検出し、前記取得ステップは、前記位置決め部により特定される領域が前記第１の閾値と異なる第２の閾値に基づいて２値化された結果得られた２値化データに基づいて、前記位置決め部により特定される領域に存在するセルの配置規則を検出し、前記所定の情報を取得する。
【００６３】
本発明の第１の側面の情報処理装置、情報処理方法、またはプログラムにおいては、前記２次元コードの画像の、前記所定の情報がコード化されているセルの領域を特定する際に利用される位置決め部が検出され、検出された前記位置決め部により特定される領域に存在するセルの配置規則から、前記所定の情報が取得される。その際、前記２次元コードの画像が第１の閾値に基づいて２値化された結果得られた２値化データに基づいて、前記位置決め部が検出され、前記位置決め部により特定される領域が前記第１の閾値と異なる第２の閾値に基づいて２値化された結果得られた２値化データに基づいて、前記位置決め部により特定される領域に存在するセルの配置規則が検出され、前記所定の情報が取得される。
【００６４】
本発明の第２の側面の情報処理装置は、複数のセルが所定の配列規則に従って２次元配置されて所定の情報がコード化されている２次元コードを認識する情報処理装置において、前記２次元コードの画像の、前記所定の情報がコード化されているセルの領域を特定する際に利用される位置決め部を、前記２次元コードの画像が第１の閾値に基づいて２値化された結果得られた２値化データに基づいて検出する検出手段と、前記位置決め部により特定される領域が前記第１の閾値と異なる第２の閾値に基づいて２値化された結果得られた２値化データに基づいて、前記位置決め部により特定される領域に存在するセルの配置規則を検出し、前記配列規則から、前記所定の情報を取得する取得手段とを備え、前記検出手段または前記取得手段は、前記２次元コードの画像が３値化された結果得られた３値化データを、所定位置関係にある複数の３値化データ毎に、前記複数の３値化データの相対的関係に基づいて２値化する。
【００６５】
本発明の第２の側面の情報処理方法、またはプログラムは、複数のセルが所定の配列規則に従って２次元配置されて所定の情報がコード化されている２次元コードを認識する情報処理方法において、または複数のセルが所定の配列規則に従って２次元配置されて所定の情報がコード化されている２次元コードを認識する情報処理を、コンピュータに実行させるプログラムにおいて、前記２次元コードの画像の、前記所定の情報がコード化されているセルの領域を特定する際に利用される位置決め部を、前記２次元コードの画像が第１の閾値に基づいて２値化された結果得られた２値化データに基づいて検出する検出ステップと、前記位置決め部により特定される領域が前記第１の閾値と異なる第２の閾値に基づいて２値化された結果得られた２値化データに基づいて、前記位置決め部により特定される領域に存在するセルの配置規則を検出し、前記配列規則から、前記所定の情報を取得する取得ステップとを含み、前記検出ステップまたは前記取得ステップは、前記２次元コードの画像が３値化された結果得られた３値化データを、所定位置関係にある複数の３値化データ毎に、前記複数の３値化データの相対的関係に基づいて２値化する。
【００６６】
本発明の第２の側面の情報処理装置、情報処理方法、またはプログラムにおいては、前記２次元コードの画像の、前記所定の情報がコード化されているセルの領域を特定する際に利用される位置決め部が、前記２次元コードの画像が第１の閾値に基づいて２値化された結果得られた２値化データに基づいて検出され、前記位置決め部により特定される領域が前記第１の閾値と異なる第２の閾値に基づいて２値化された結果得られた２値化データに基づいて、前記位置決め部により特定される領域に存在するセルの配置規則が検出され、前記配列規則から、前記所定の情報が取得される。その際、前記２次元コードの画像が３値化された結果得られた３値化データが、所定位置関係にある複数の３値化データ毎に、前記複数の３値化データの相対的関係に基づいて２値化される。
【発明の効果】
【００６７】
本発明の第１および第２の側面によれば、２Ｄコードを適切に認識することができる。
【発明を実施するための最良の形態】
【００６８】
以下に本発明の実施の形態を説明するが、本発明の構成要件と、明細書または図面に記載の実施の形態との対応関係を例示すると、次のようになる。この記載は、本発明をサポートする実施の形態が、明細書または図面に記載されていることを確認するためのものである。従って、明細書または図面中には記載されているが、本発明の構成要件に対応する実施の形態として、ここには記載されていない実施の形態があったとしても、そのことは、その実施の形態が、その構成要件に対応するものではないことを意味するものではない。逆に、実施の形態が構成要件に対応するものとしてここに記載されていたとしても、そのことは、その実施の形態が、その構成要件以外の構成要件には対応しないものであることを意味するものでもない。
【００６９】
本発明の第１の側面の情報処理装置は、
複数のセルが所定の配列規則に従って２次元配置されて所定の情報がコード化されている２次元コードを認識する情報処理装置（例えば、図１２のパーソナルコンピュータ１）において、
前記２次元コードの画像の、前記所定の情報がコード化されているセルの領域を特定する際に利用される位置決め部を検出する検出手段（例えば、図１３のコード認識部４２）と、
前記検出手段により検出された前記位置決め部により特定される領域に存在するセルの配置規則から、前記所定の情報を取得する取得手段（例えば、図１３のコード認識部４２）と
を備え、
前記検出手段は、前記２次元コードの画像が第１の閾値に基づいて２値化された結果得られた２値化データに基づいて、前記位置決め部を検出し、
前記取得手段は、前記位置決め部により特定される領域が前記第１の閾値と異なる第２の閾値に基づいて２値化された結果得られた２値化データに基づいて、前記位置決め部により特定される領域に存在するセルの配置規則を検出し、前記所定の情報を取得する。
【００７０】
前記２次元コードの画像を、前記第１の閾値および前記第２の閾値に基づいて、３値化する３値化手段（例えば、図１４のステップＳ１０１の処理を行う図１３のコード認識部４２）をさらに設け、
前記検出手段には、前記３値化手段による３値化の結果得られた３値化データを、前記第１の閾値に基づいて２値化させ（例えば、図１７のステップＳ１２１）、
前記取得手段は、前記３値化手段による３値化の結果得られた３値化データを、前記第２の閾値に基づいて２値化させる（例えば、図１８のステップＳ１５１）ことができる。
【００７１】
前記検出手段は、前記２次元コードの画像が、前記第１の閾値に基づいて２値化された結果得られた２値化データ（例えば、図１０の２値化画像）と前記第２の閾値に基づいて２値化された結果得られた２値化データ（例えば、図１１の２値化画像）に基づいて、前記位置決め部を検出し、
前記取得手段は、前記位置決め部により特定される領域が、前記第２の閾値に基づいて２値化された結果得られた２値化データ（例えば、図１１の２値化画像）と前記第１の閾値に基づいて２値化された結果得られた２値化データ（例えば、図１０の２値化画像）に基づいて、前記位置決め部により特定される領域に存在するセルの配置規則を検出し、前記所定の情報を取得することができる。
【００７２】
本発明の第１の側面の情報処理方法、またはプログラムは、
複数のセルが所定の配列規則に従って２次元配置されて所定の情報がコード化されている２次元コードを認識する情報処理方法において、または複数のセルが所定の配列規則に従って２次元配置されて所定の情報がコード化されている２次元コードを認識する情報処理を、コンピュータに実行させるプログラムにおいて、
前記２次元コードの画像の、前記所定の情報がコード化されているセルの領域を特定する際に利用される位置決め部を検出する検出ステップ（例えば、図１４のステップＳ１０２）と、
前記検出ステップの処理で検出された前記位置決め部により特定される領域に存在するセルの配置規則から、前記所定の情報を取得する取得ステップ（例えば、図１４のステップＳ１０４およびステップＳ１０５）と
を含み、
前記検出ステップは、前記２次元コードの画像が第１の閾値に基づいて２値化された結果得られた２値化データに基づいて、前記位置決め部を検出し、
前記取得ステップは、前記位置決め部により特定される領域が前記第１の閾値と異なる第２の閾値に基づいて２値化された結果得られた２値化データに基づいて、前記位置決め部により特定される領域に存在するセルの配置規則を検出し、前記所定の情報を取得する。
【００７３】
本発明の第２の側面の情報処理装置は、
複数のセルが所定の配列規則に従って２次元配置されて所定の情報がコード化されている２次元コードを認識する情報処理装置において、
前記２次元コードの画像の、前記所定の情報がコード化されているセルの領域を特定する際に利用される位置決め部を、前記２次元コードの画像が第１の閾値に基づいて２値化された結果得られた２値化データに基づいて検出する検出手段（例えば、図１３のコード認識部４２）と、
前記位置決め部により特定される領域が前記第１の閾値と異なる第２の閾値に基づいて２値化された結果得られた２値化データに基づいて、前記位置決め部により特定される領域に存在するセルの配置規則を検出し、前記配列規則から、前記所定の情報を取得する取得手段（例えば、図１３のコード認識部４２）と
を備え、
前記検出手段または前記取得手段は、前記２次元コードの画像が３値化された結果得られた３値化データを、所定位置関係にある複数の３値化データ毎に、前記複数の３値化データの相対的関係に基づいて２値化する（例えば、図１９）。
【００７４】
本発明の第２の側面の情報処理方法、またはプログラムは、
複数のセルが所定の配列規則に従って２次元配置されて所定の情報がコード化されている２次元コードを認識する情報処理方法において、または複数のセルが所定の配列規則に従って２次元配置されて所定の情報がコード化されている２次元コードを認識する情報処理を、コンピュータに実行させるプログラムにおいて、
前記２次元コードの画像の、前記所定の情報がコード化されているセルの領域を特定する際に利用される位置決め部を、前記２次元コードの画像が第１の閾値に基づいて２値化された結果得られた２値化データに基づいて検出する検出ステップと、
前記位置決め部により特定される領域が前記第１の閾値と異なる第２の閾値に基づいて２値化された結果得られた２値化データに基づいて、前記位置決め部により特定される領域に存在するセルの配置規則を検出し、前記配列規則から、前記所定の情報を取得する取得ステップと
を含み、
前記検出ステップまたは前記取得ステップは、前記２次元コードの画像が３値化された結果得られた３値化データを、所定位置関係にある複数の３値化データ毎に、前記複数の３値化データの相対的関係に基づいて２値化する（例えば、図１９）。
【００７５】
図１２は、本発明を適用したパーソナルコンピュータ１の利用例を示す図である。
【００７６】
パーソナルコンピュータ１は、モニタ２の上部に設けられたカメラ１１により撮像された２Ｄコード１０１の画像を含む画像データから、２Ｄコード１０１を認識し、２Ｄコード１０１によりコード化された所定の情報に応じた処理を実行する。
【００７７】
２Ｄコード１０１は、図１および図２に示したように構成されている。なおこの例の場合、２Ｄコード１０１は、カード１００に印刷されている。
【００７８】
図１３は、パーソナルコンピュータ１の構成例を示している。
【００７９】
処理部３１は、演算部や制御部等からなり、ROM３２やRAM３３等を利用して、各部を制御する。つまり、処理部３１は、パーソナルコンピュータ１においてCPU（Central Processing Unit）として動作する。
【００８０】
ROM３２は、製造時に回路にデータやプログラムが書き込まれている読み出し専用のマスクROMであり、必要に応じて、そのデータやプログラムを処理部３１に供給する。RAM３３は、データの更新が可能な半導体メモリであり、処理部３１が実行中の処理（プログラム）やその処理に必要なデータを、処理部３１の制御に基づいて、一時的に保持する。
【００８１】
入力部３４は、例えば、キーボード、マウス等の入力デバイスにより構成され、ユーザがその入力部３４を操作することにより入力した指示を処理部３１に供給する。
【００８２】
記憶部３５は、例えば、ハードディスク等の不揮発性の記憶媒体により構成され、処理部３１が実行するプログラムやデータ等の各種の情報を記憶し、必要に応じてそれらの情報を処理部３１に供給する。
【００８３】
通信部３６は、処理部３１に制御され、図示せぬネットワークを介して接続され、図示せぬ他のパーソナルコンピュータ等と通信を行い、情報の授受を行う。
【００８４】
ドライブ３７は、装着されたリムーバブルメディア３８を駆動させ、リムーバブルメディア３８に記憶されているデータを読み出し、それを処理部３１に供給する。例えば、リムーバブルメディア３８は、磁気ディスク（フレキシブルディスクを含む）、光ディスク（CD-ROM(Compact Disk-Read Only Memory),DVD(Digital Versatile Disk)を含む）、光磁気ディスク（ＭＤ（Mini-Disk）（登録商標）を含む）、もしくは半導体メモリやハードディスクなどで構成される。ドライブ３７は、このリムーバブルメディア３８に記録されているプログラムを読み出し、処理部３１において実行させることもできる。
【００８５】
入力インタフェース４１は、例えば、USB（Universal Serial Bus）やIEEE（Institute of Electrical and Electronic Engineers）１３９４等の所定の方式でパーソナルコンピュータ１の外部装置とパーソナルコンピュータ１を接続し、外部装置から供給される情報をパーソナルコンピュータ１に供給するためのインタフェースである。図１３において入力インタフェース４１は、カメラ１１に接続され、カメラ１１より供給される画像情報をコード認識部４２または表示制御部４３に供給する。
【００８６】
コード認識部４２は、処理部３１に制御され、入力インタフェース４１を介して取得したカメラ１１の撮影画像から２Ｄコード１０１を認識する処理を行う。コード認識部４２における２Ｄコード認識処理の詳細については後述する。コード認識部４２は、２Ｄコード１０１を認識すると、その認識結果を処理部３１に供給する。処理部３１は、その認識結果に基づいて処理を行う。
【００８７】
表示制御部４３は、図示せぬ画像用のバッファメモリを有し、モニタ２に表示される表示画像の生成に関する処理を行う。例えば、表示制御部４３は、処理部３１に制御され、入力インタフェース４１を介して取得したカメラ１１の撮影画像を出力インタフェース４４に供給する。
【００８８】
出力インタフェース４４は、モニタ２に接続され、表示制御部４３より供給される画像データ等をモニタ２に供給するインタフェースである。
【００８９】
次に、コード認識部４２の２Ｄコード認識処理を、図１４のフローチャートを参照して説明する。
【００９０】
ステップＳ１０１において、カメラ１１による撮像の結果得られた画像データ（２Ｄコード１０１の画像を含む画像データ）の３値化処理が行われる。この処理の詳細は、図１５のフローチャートに示されている。
【００９１】
ステップＳ１１１において、コード認識部４２は、カメラ１１による撮像の結果得られた画像データを構成する１個の画素を選択する。
【００９２】
次にステップＳ１１２において、コード認識部４２は、選択した画素と、その周辺の画素（例えば、隣接する４個の画素）の輝度値の平均値を算出する。
【００９３】
ステップＳ１１３において、コード認識部４２は、ステップＳ１１２で算出した平均値に０．１を乗算して得た値（平均値の１０％の輝度値）を、第１の閾値とする。
【００９４】
ステップＳ１１４において、コード認識部４２は、ステップＳ１１２で算出した平均値に０．６を乗算して得た値（平均値の６０％の輝度値）を、第２の閾値とする。
【００９５】
次にステップＳ１１５において、コード認識部４２は、ステップＳ１１１で選択した画素の輝度値と、第１の閾値および第２の閾値とを比較し、その比較結果に応じて、以下のように画素を３値化する。
画素の輝度値≦第１の閾値→“０”
第１の閾値＜画素の輝度値≦第２の閾値→“１”
第２の閾値＜画素の輝度値→“２”
【００９６】
すなわち、第１の閾値以下の輝度値を保持する画素は、”０”に符号化され、表示上、その画素は黒色とされる。以下においては、このように、”０”に符号化される画素を、黒色画素と称する。第１の閾値より大きく、第２の閾値以下の輝度値を保持する画素は、”１”に符号化され、表示上、その画素は灰色とされる。以下においては、このように、”１”に符号化される画素を、灰色画素と称する。そして第２の閾値より大きい輝度値を保持する画素は、”２”に符号化され、表示上、その画素は白色とされる。以下においては、このように、”０”に符号化される画素を、白色画素と称する。
【００９７】
図１６は、図９に示した画像を上述したように３値化した場合の表示例を示している。影により暗くなっていた部分は、灰色で表示されている。
【００９８】
図１５に戻りステップＳ１１６において、コード認識部４２は、すべての画素を選択したか否かを判定し、まだ選択しないで残っている画素が存在すると判定した場合、ステップＳ１１１に戻り、次の画素を選択し、ステップＳ１１２以降の処理を同様に実行する。
【００９９】
ステップＳ１１６で、すべての画素が選択されたと判定された場合、すなわち各画素が、値０、値１、または値２のいずれかの値に３値化されたとき、処理は、図１４のステップＳ１０２に進む。
【０１００】
ステップＳ１０２において、位置決め部検出処理が行われる。この処理により２Ｄコード１０１（図２）のガイド部１１１、左上コーナセル１２１−１、および右上コーナセル１２１−２（以下、適宜、これらをまとめて位置決め部と称する）が検出される。この処理の詳細は、図１７のフローチャートに示されている。
【０１０１】
ステップＳ１２１において、コード認識部４２は、各画素を、図１５のステップＳ１１３で算出した第１の閾値を利用して２値化する。すなわち３値化値“０”の画素は、“０”（黒色）に、そして３値化値“１”および“２”の画素は、“２”（白色）に２値化される。
【０１０２】
コード認識部４２はまた、黒色画素が連結する領域（以下、黒色画素連結領域と称する）を１つの領域として、左上から右下に向かって順に番号を設定（ラベリング）する（図５）。
【０１０３】
次に、ステップＳ１２２において、コード認識部４２は、黒色画素連結領域の数をカウントするカウンタｉの値を１に初期設定し、ステップＳ１２３において、例えばフレームの中央点から、左回りの渦巻の軌跡に沿って、黒色画素連結領域を探索し、始めに検出した黒色画素連結領域をガイド部候補領域として選択する。
【０１０４】
次に、ステップＳ１２４において、コード認識部４２は、図６のステップＳ２３乃至ステップＳ３０の処理に相当する処理（ガイド部候補領域の検証処理）を実行し、ステップＳ１２５において、ステップＳ１２３で選択したガイド部候補領域がガイド部１１１であるか否かを判定し、ガイド部１１１ではないと判定した場合、ステップＳ１２６に進む。
【０１０５】
ステップＳ１２６において、コード認識部４２は、カウンタｉの値が、黒色画素連結領域の総数Ｍと等しい（ｊ＝Ｍ）か否かを判定し、ｉ＝Ｍではないと判定した場合、ステップＳ１２７に進み、カウンタｉの値を１だけ増加した後、ステップＳ１２３に戻る。そして、次に検出する黒色画素連結領域が、次のガイド部候補領域とされ、同様の処理が行われる。
【０１０６】
ステップＳ１２５で、ガイド部候補領域がガイド部１１１であると判定した場合、ステップＳ１２８に進み、コード認識部４２は、ステップＳ１２３で選択したガイド部候補領域をガイド部１１１として設定（仮定）し、例えば、ガイド部候補領域とされた黒色画素連結領域の番号を、RAM３３に記憶させる。
【０１０７】
次に、ステップＳ１２９において、コード認識部４２は、黒色画素連結領域の数をカウントするカウンタｊの値を１に初期設定し、ステップＳ１３０において、その値に対応する番号の黒色画素連結領域を検出し、それを左上コーナセル候補領域として選択する。
【０１０８】
ステップＳ１３１において、コード認識部４２は、図８のステップＳ４３およびステップＳ４４に相当する処理（左上コーナセル候補領域の検証処理）を実行し、ステップＳ１３２において、ステップＳ１３０で選択した左上コーナセル候補領域が左上コーナセル１２１−１であるか否かを判定し、左上コーナセル１２１−１ではないと判定した場合、ステップＳ１３３に進む。
【０１０９】
ステップＳ１３３において、コード認識部４２は、カウンタｊの値が黒色画素連結領域の総数Ｍに等しい（ｊ＝Ｍ）か否かを判定し、ｊ＝Ｍではないと判定した場合、ステップＳ１３４に進み、カウンタｊの値を１だけ増加して、ステップＳ１３０に戻る。そして、次の番号の黒色画素連結領域が、次の左上コーナセル候補領域とされ、同様の処理が行われる。
【０１１０】
ステップＳ１３２で、ステップＳ１３０で選択した左上コーナセル候補領域が左上コーナセル１２１−１であると判定した場合、コード認識部４２は、ステップＳ１３５において、ステップＳ１３０で選択した左上コーナセル候補領域を左上コーナセル１２１−１として設定（仮定）する。
【０１１１】
次にステップＳ１３６において、コード認識部４２は、黒色画素連結領域の番号をカウントする他のカウンタｋに２を初期設定し、ステップＳ１３７において、カウンタｋの値に対応する番号の黒色画素連結領域を検出し、それを右上コーナセル候補領域として選択する。
【０１１２】
ステップＳ１３８において、コード認識部４２は、図８のステップＳ５０およびステップＳ５１に相当する処理（右上コーナセル候補領域の検証処理）を実行し、ステップＳ１３９において、ステップＳ１３７で選択した右上コーナセル候補領域が右上コーナセル１２１−２であるか否かを判定し、ステップＳ１３７で選択した右上コーナセル候補領域が右上コーナセル１２１−２であると判定した場合、ステップＳ１４２において、それを右上コーナセル１２１−２として設定（仮定）する。
【０１１３】
次にステップＳ１４３において、コード認識部４２は、ステップＳ１２８で設定したガイド部１１１、ステップＳ１３５で設定した左上コーナセル１２１−１、およびステップＳ１４２で設定した右上コーナセル１２１−２により特定される領域を、表示上のＸ軸方向に７ブロック分の長さ、そしてＹ軸方向に９．５ブロック分の長さの領域になるようにアフィン変換する。なお、１ブロックの１辺の長さは、ステップＳ１２３で設定されたガイド部１１１の辺ＡTまたは辺ＢTに基づいて算出される。
【０１１４】
コード認識部４２はまた、アファイン変換した画像から、ステップＳ１２８で設定したガイド部１１１と、ガイド部１１１上側の７×１ブロック（ガイド部１１１とコード部１１２との間の７×１ブロックに相当するブロック）（図１）分の領域（７×２．５ブロック領域）を削除し、その結果得られた７×７ブロック領域の範囲に、黒色画素連結領域をセルとしてマッピングし、コードマップを生成する。
【０１１５】
ステップＳ１４４において、コード認識部４２は、ステップＳ１４３で生成されたコードマップのセルのうち、４角のセルを検出し、その周りの３ブロック領域が、白色画素とされているか否かを判定し（図２）、白色画素とされていると判定した場合、ステップＳ１４５において、ステップＳ１２８、ステップＳ１３５、およびステップＳ１４２でそれぞれ設定したガイド部１１１、左上コーナセル１２１−１、および右上コーナセル１２１−２の設定を確定する。
【０１１６】
ステップＳ１３９で、ステップＳ１３７で選択した右上コーナセル候補が右上コーナセル１２１−２ではないと判定された場合、またはステップＳ１４４で、４角のセルの周りの３ブロック領域が白色画素とされていないと判定された場合、ステップＳ１４０に進み、コード認識部４２は、カウンタｋの値が黒色画素連結領域の総数Ｍに等しい（ｋ＝Ｍ）か否かを判定し、ｋ＝Ｍではないと判定した場合、ステップＳ１４１に進み、カウンタｋの値を１だけ増加して、ステップＳ１３７に戻る。すなわち次の番号の黒色画素連結領域が、次の右上コーナセル候補領域とされ、同様の処理が行われる。
【０１１７】
ステップＳ１４０で、ｋ＝Ｍであると判定された場合、ステップＳ１３３に戻り、それ以降の処理が行われる。すなわち左上コーナセル１２１−１の検出が再度行われる。
【０１１８】
ステップＳ１２６で、ｉ＝Ｍと判定された場合、またはステップＳ１３３で、ｊ＝Ｍと判定された場合、今回２Ｄコード認識処理の対象となっている画像には、２Ｄコード１０１が存在しないものとされ、処理は終了される。
【０１１９】
以上のようにして位置決め部検出処理が完了すると、図１４のステップＳ１０３に進み、コード認識部４２は、位置決め部が確定したか否かを判定し、確定したと判定した場合、ステップＳ１０４に進み、コード部検出処理を行う。この処理の詳細は、図１８のフローチャートに示されている。
【０１２０】
ステップＳ１５１において、コード認識部４２は、図１５のステップＳ１１４で算出した第２の閾値に基づいて、２値化処理を行う。すなわち３値化値“０”および“１”の画素は、“０”（黒色）に、３値化値“２”の画素は、“２”（白色）に２値化される。
【０１２１】
コード認識部４２はまた、黒色画素が連結する領域（黒色画素連結領域）を１つの領域として、左上から右下に向かって順に番号を設定（ラベリング）する（図５）。
【０１２２】
次にステップＳ１５２において、コード認識部４２は、図１７のステップＳ１２８で設定したガイド部１１１、ステップＳ１３５で設定した左上コーナセル１２１−１、およびステップＳ１４２で設定した右上コーナセル１２１−２により特定される領域を決定し、ステップＳ１５３において、その領域を、表示上のＸ軸方向に７ブロック分の長さ、そしてＹ軸方向に９．５ブロック分の長さの領域になるようにアフィン変換する。なお、１ブロックの一辺の長さは、ステップＳ１２８で設定されたガイド部１１１の辺ＡTまたは辺ＢTに基づいて算出される。
【０１２３】
次に、ステップＳ１５４において、コード認識部４２は、ステップＳ１５３で変換した画像から、図１７のステップＳ１２８で設定されたガイド部１１１と、ガイド部１１１上側の７×１ブロック（ガイド部１１１とコード部１１２との間の７×１ブロックに相当するブロック）（図１）分の領域（７×２．５ブロック領域）を削除し、その結果得られた７×７ブロック領域の範囲に、黒色画素連結領域をセルとしてマッピングし、コードマップを生成する。
【０１２４】
ステップＳ１５５において、コード認識部４２は、ステップＳ１５４で生成されたコードマップを２Ｄコード１０１のコード部１１２として設定する。その後、処理は、図１４のステップＳ１０５に進む。
【０１２５】
ステップＳ１０５において、コード認識部４２は、検出したコード部１１２のコードマップから、コードデータ、すなわち２Ｄコード１０１の値を算出し、保持する。その後、処理は終了される。
【０１２６】
ステップＳ１０３で、位置決め部が確定していないと判定された場合、今回２Ｄコード認識処理の対象とされた画像データには、２Ｄコード１０１が存在しないものとされ、処理は終了される。
【０１２７】
以上のようにして、２Ｄコード１０１の位置決め部を検出する際には、小さな値の第１の閾値を利用して２値化するようにしたので（図１７のステップＳ１２１）、２Ｄコード１０１の画像データとして、図９に示したような、２Ｄコード１０１に影が落ちて一部が暗くなっている画像データが入力されても、図１１に示したようなガイド部１１１が適切に得られる２値化データ（第１の閾値が小さいので、影の部分の灰色画素（図１６）が、白色画素に変換されている２値化データ）を利用して、ガイド部１１１を検出することができる。
【０１２８】
またコード部１１２を検出する際に、第１の閾値より大きい第２の閾値を利用して２値化するようにしたので（図１８のステップＳ１５１）、図１０に示したような、コード部１１２が適切に得られる２値化データ（第２の閾値が大きいので、コード部１１２のコード化セル１２２の部分が適切に黒色画素になっている２値化データ）を利用して、コード部１１２が検出される。
【０１２９】
なおコード部１１２は、ガイド部１１１とコーナセル１２１により特定されるので、それらにより特定される範囲外は、コード部１１２としては取り扱われないので、図１０に示すように、コード部１１２付近の影の部分が黒色画素（例えば図中、Ｂｒ−２）とされ、コード化セル１２２と連結して１つの黒色画素連結領域が形成されても、その部分は排除されてコード部１１２が認識されるので、特に問題はない。
【０１３０】
このように本発明によれば、例えば２Ｄコード１０１に影が落ちて、２Ｄコード１０１の画像の一部が暗くなっていても、適切に２Ｄコード１０１を認識することができる。
【０１３１】
なお以上においては、２Ｄコード１０１のコード部１１２を検出する際に、第２の閾値に基づいて２値化したが（３値化値“０”および“１”の画素は、“０”（黒色）に、３値化値“２”の画素は、“２”（白色）に２値化されたが）、例えば、３値化値“０”は、“０”（黒色）に、３値化値“２”は、“２”（白色）にするが、３値化値“１”については、その画素の周辺の画素の輝度値の大きさに応じて“０”または“２”にすることができる。
【０１３２】
例えば３値化値“１”の画素の周辺の画素の平均輝度値が、第２の閾値より小さければ、“２”（白色）に、そして周辺画素の平均輝度値が、第２の閾値以上であれば、“０”（黒色）にすることができる。このようにすることで、周囲の他の画素の輝度値が小さければ（暗ければ）、白色画素に、輝度値が大きければ（明るければ）、黒色画素に２値化されるので、コード部１１２部分のコントラストを鮮明にすることができる。
【０１３３】
また以上においては、位置決め部を検出する際には、第１の閾値で２値化された画像を利用し、コード部１１２を検出する際には、第２の閾値で２値化された画像を利用したが、位置決め部またはコード部１１２を検出する際に、第１の閾値で２値化された画像と第２の閾値で２値化された画像の両方を利用することもできる。例えば位置決め部検出の際、ガイド部１１１を検出するとき、図１０の画像（第１の閾値で２値化された画像）と図１１（第２の閾値の画像）との差分を取ることにより、灰色画素を排除することができるので、適切にガイド部１１１を検出することができる。
【０１３４】
また以上においては、例えば各画素を、その画素値（輝度値）に基づいて２値化したが、例えば、隣接する２個の画素の画素値の傾向に応じて、それらを２値化することができる。
【０１３５】
図１９の例では、図１９Ａのように、上下する画素の３値化値において、上部の画素の値が下部の画素の値より小さい場合、それらの画素は、図１９Ｂに示すように、上部の画素が“０”（黒色）に、下部の画素が“２”（白色）にそれぞれ２値化される。このように２値化することで、３値化値に図１９Ａに示すようにばらつきが生じても、図１９Ｂに示すように所定の値に２値化することができる。
【０１３６】
上述した一連の処理は、ハードウエアにより実行させることもできるし、ソフトウエアにより実行させることもできる。一連の処理をソフトウエアにより実行させる場合には、そのソフトウエアを構成するプログラムが、専用のハードウエアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、プログラム記録媒体からインストールされる。
【０１３７】
なお、本明細書において、プログラム記録媒体に格納されるプログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
【図面の簡単な説明】
【０１３８】
【図１】２Ｄコードの例を示す図である。
【図２】２Ｄコードの例を示す他の図である。
【図３】従来の２Ｄコード認識処理を説明するフローチャートである。
【図４】図３のステップＳ２の２値化処理で使用される閾値の例を示す図である。
【図５】黒色画素連結領域の例を示す図である。
【図６】図３のステップＳ７のガイド部検出処理を説明するフローチャートである。
【図７】セルの短軸および長軸の求め方を説明する図である。
【図８】図３のステップＳ９のコード部検出処理を説明するフローチャートである。
【図９】２Ｄコードの撮像画像の例を示す図である。
【図１０】２Ｄコードの撮像画像の２値化画像の例を示す図である。
【図１１】２Ｄコードの撮像画像の他の２値化画像の例を示す図である。
【図１２】本発明を適用したパーソナルコンピュータ１の利用例を示す図である。
【図１３】図１２のパーソナルコンピュータ１の構成例を示すブロック図である。
【図１４】図１２のパーソナルコンピュータ１における２Ｄコード認識処理を説明するフローチャートである。
【図１５】図１４のステップＳ１０１の３値化処理を説明するフローチャートである。
【図１６】３値化画像の例を示す図である。
【図１７】図１４のステップＳ１０２の位置決め部検出処理を説明するフローチャートである。
【図１８】図１４のステップＳ１０４のデータ部検出処理を説明するフローチャートである。
【図１９】２値化処理の他の例を説明する図である。
【符号の説明】
【０１３９】
１  パーソナルコンピュータ，  ２  モニタ，  １１  カメラ，  ４２  コード認識部，  １０１  ２Ｄコード，  １１１  ガイド部，  １１２  コード部，  １２１  コーナセル
【図１】
2007156879.tif 000003
【図２】
2007156879.tif 000004
【図３】
2007156879.tif 000005
【図４】
2007156879.tif 000006
【図５】
2007156879.tif 000007
【図６】
2007156879.tif 000008
【図７】
2007156879.tif 000009
【図８】
2007156879.tif 000010
【図９】
2007156879.tif 000011
【図１０】
2007156879.tif 000012
【図１１】
2007156879.tif 000013
【図１２】
2007156879.tif 000014
【図１３】
2007156879.tif 000015
【図１４】
2007156879.tif 000016
【図１５】
2007156879.tif 000017
【図１６】
2007156879.tif 000018
【図１７】
2007156879.tif 000019
【図１８】
2007156879.tif 000020
【図１９】
2007156879.tif 000021