(57)【特許請求の範囲】
【請求項１】
複数のセルが所定の配列規則に従って多次元配置された多次元コードを認識する多次元コード認識処理方法において、
前記多次元コードを撮像した結果得られる画像情報から、所定の閾値に基づいて２値化データを生成する２値化処理ステップと、
前記２値化処理ステップの処理で生成された前記２値化データに基づいて、前記多次元コードを認識する上で基準となるセルを検出するセル検出処理ステップと、
前記２値化処理ステップの処理で生成された前記２値化データに基づいて、前記セル検出処理ステップの処理で検出された前記多次元コードを認識する上で基準となるセルに対応する所定の探索範囲内に存在する、前記多次元コードの領域を特定するのに基本となるセルを決定する基本セル決定ステップと、
前記基本となるセルによって一意に定まる範囲を、前記多次元コードの領域が撮像面に対向して撮像された場合に得られる範囲に変換する変換ステップと、
前記２値化処理ステップの処理で生成された前記２値化データに基づいて、前記変換ステップの処理で変換された範囲に存在する前記多次元コードに割り当てられたコードデータを検出するコードデータ検出処理ステップと
を含むことを特徴とする多次元コード認識処理方法。
【請求項２】
前記多次元コードを認識する上で基準となるセルは、所定の縦横比の矩形状の黒色画素連結領域内に前記多次元コードに関連する白抜きの可読情報を含んで構成され、
前記基本セル検出処理ステップは、前記可読情報を含む所定の縦横比の矩形状の前記多次元コードを認識する上で基準となるセルを検出する
ことを特徴とする請求項１に記載の多次元コード認識処理方法。
【請求項３】
前記可読情報は、
前記多次元コードのコード体系に付されたロゴマーク、
前記多次元コードのコード体系に関連する会社名、
または、前記多次元コードのコード体系に関連するＵＲＬである
ことを特徴とする請求項２に記載の多次元コード認識処理方法。
【請求項４】
前記基本セル検出処理ステップは、任意に設定可能な検出開始点から、前記２値化処理ステップの処理で生成された前記２値化データに基づいて、前記多次元コードを認識する上で基準となる所定の縦横比の矩形状のセルを検出する
ことを特徴とする請求項１に記載の多次元コード認識処理方法。
【請求項５】
前記基本セル検出処理ステップは、
前記検出開始点として、直前に検出した前記多次元コードを認識する上で基準となるセルの開始点を設定する、および／または
前記基本セル検出処理ステップは、直前に検出した前記多次元コードを認識する上で基準となるセルの前記開始点が存在しない場合、前記検出開始点として、外部から取り込んだ画像情報の中心点を設定する
ことを特徴とする請求項４に記載の多次元コード認識処理方法。
【請求項６】
前記２値化処理ステップの処理で生成された前記２値化データに基づいて、黒色画素が連結された黒色画素連結領域の総数を計数し、前記総数が所定個数未満となるまで、前記２値化処理ステップの処理での所定の閾値を段階的に設定変更する閾値変更処理ステップ
をさらに備えることを特徴とする請求項１に記載の多次元コード認識処理方法。
【請求項７】
前記閾値変更処理ステップの処理で、前記閾値が段階的に設定変更され、全ての前記閾値が設定変更された段階において、前記黒色画素連結領域の総数が前記所定個数以上であった場合、一連の認識処理を一旦終了し、外部から取り込んだ新たな画像情報に基づく一連の認識処理を開始する
ことを特徴とする請求項６に記載の多次元コード認識処理方法。
【請求項８】
前記コードデータ検出処理ステップは、前記２値化処理ステップの処理で生成された前記２値化データに基づいて、前記変換ステップの処理で変換された範囲に存在する前記多次元コードからコードデータを算出するコードデータ算出処理ステップと、
前記変換ステップの処理で変換された範囲に存在する前記多次元コードに存在する前記多次元コードからチェックデータを算出するチェックデータ算出処理ステップと、
前記チェックデータ算出処理ステップの処理で算出された前記チェックデータに基づいて、前記コードデータ算出処理ステップの処理で算出された前記コードデータを検証する検証処理ステップと
からなることを特徴とする請求項１に記載の多次元コード認識処理方法。
【請求項９】
前記２値化処理ステップは、外部の撮像手段によって撮像された前記画像情報を取り込み、取り込んだ前記画像情報から、前記所定の閾値に基づいて前記２値化データを生成する
ことを特徴とする請求項１に記載の多次元コード認識処理方法。
【請求項１０】
複数のセルが所定の配列規則に従って多次元配置された多次元コードを認識する多次元コード認識処理装置において、
前記多次元コードを撮像した結果得られる画像情報から、所定の閾値に基づいて２値化データを生成する２値化処理手段と、
前記２値化処理手段により生成された前記２値化データに基づいて、前記多次元コードを認識する上で基準となるセルを検出するセル検出処理手段と、
前記２値化処理手段により生成された前記２値化データに基づいて、前記セル検出処理手段により検出された前記多次元コードを認識する上で基準となるセルに対応する所定の探索範囲内に存在する、前記多次元コードの領域を特定するのに基本となるセルを決定する基本セル決定手段と、
前記基本となるセルによって一意に定まる範囲を、前記多次元コードの領域が撮像面に対向して撮像された場合に得られる範囲に変換する変換手段と、
前記２値化処理手段により生成された前記２値化データに基づいて、前記変換手段により変換された範囲に存在する前記多次元コードに割り当てられたコードデータを検出するコードデータ検出処理手段と
を備えることを特徴とする多次元コード認識処理装置。
【請求項１１】
複数のセルが所定の配列規則に従って多次元配置された多次元コードを認識する多次元コード認識処理プログラムにおいて、
前記多次元コードを撮像した結果得られる画像情報から、所定の閾値に基づいて２値化データを生成する２値化処理ステップと、
前記２値化処理ステップの処理で生成された前記２値化データに基づいて、前記多次元コードを認識する上で基準となるセルを検出するセル検出処理ステップと、
前記２値化処理ステップの処理で生成された前記２値化データに基づいて、前記セル検出処理ステップの処理で検出された前記多次元コードを認識する上で基準となるセルに対応する所定の探索範囲内に存在する、前記多次元コードの領域を特定するのに基本となるセルを決定する基本セル決定ステップと、
前記基本となるセルによって一意に定まる範囲を、前記多次元コードの領域が撮像面に対向して撮像された場合に得られる範囲に変換する変換ステップと、
前記２値化処理ステップの処理で生成された前記２値化データに基づいて、前記変換ステップの処理で変換された範囲に存在する前記多次元コードに割り当てられたコードデータを検出するコードデータ検出処理ステップと
を含むことを特徴とするコンピュータが読みとり可能な多次元コード認識処理プログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、多次元コード認識処理方法、多次元コード認識処理装置、および多次元コード認識処理プログラムに関し、特に、撮像された２次元コードの画像データから、効率よくかつ正確にコードデータを認識することができるようにした多次元コード認識処理方法、多次元コード認識処理装置、および多次元コード認識処理プログラムに関する。
【０００２】
【従来の技術】
従来から、物品の種類や状態などを示す英数文字をバーコード化し、例えば、物品に貼付しておき、その貼付されたバーコードを読み取って、物品の種類や状態などの情報を取得するバーコードシステムが、多くの産業分野に普及している。
【０００３】
この種のバーコードにおいて、特に１次元バーコードと呼ばれるものの一例を示せば、図２０の通りである。この図において、１次元バーコード５００は、太さの異なるバー（黒色の棒状部分）と、スペース（空白部分）の組み合わせからなるコード部５０１と、このコード部５０１にコード化されているコードを示すID(識別番号)部５０２とから構成されている。そして、ID部５０２には、コード部５０１にコード化されている英数文字が可読情報として表示されている。このような１次元バーコード５００が、バーコードスキャナと呼ばれる光学的認識装置によって読み取られるようになっている。
【０００４】
【発明が解決しようとする課題】
ところで、上述した１次元バーコード５００を読み取る１つの方法として、CCDビデオカメラにより読み取る方法が挙げられるが、例えば、コード化される情報量の増大に伴って、バーの配列が長くなると、ＣＣＤビデオカメラによる１次元バーコード５００の読み取りが困難になる。
【０００５】
そこで、コード化される情報が多くなった場合においても、ビデオカメラによる読み取りを可能にするために、１次元バーコード５００のバーに代えて、図２１に示すような複数の黒色の方形セルが所定の配列規則に従って２次元配置されたコード部６０１と、コード部６０１にコード化されているコードを示すID部６０２とから構成される２次元コード６００が種々提案されている。
【０００６】
これによれば、情報が２次元的にコード化されることより、より多くの情報量をコード化することができ、１次元バーコード５００に比べ、より多くの情報がコード化されていても、ビデオカメラによる読み取りが可能となる。
【０００７】
しかしながら、２次元コード６００は、ビデオカメラによって撮像された画像データから２次元コード６００を認識する際に、ゴミ、汚れ、その他の２次元コード６００以外の画像との識別が困難となり、正確にコードデータを認識することができないという課題があった。
【０００８】
また、上述した２次元コード６００においては、１次元バーコード５００と同様に、そのID部６０２に、コード化されたコードが人間によって判読可能な英数字等によって表示されてはいるものの、その２次元コード６００が、一体何を示すコードなのか、さらには、一体どのようなコード体系で、どのような配列規則に従って方形セルが２次元配置されているのかについて、識別することができなかった。
【０００９】
本発明はこのような状況に鑑みてなされたものであり、２次元コードの画像データから、コードデータを効率よくかつ正確に認識することができるようにするものである。
【００１０】
【発明を解決するための手段】
請求項１の多次元コード認識処理方法は、多次元コードを撮像した結果得られる画像情報から、所定の閾値に基づいて２値化データを生成する２値化処理ステップと、２値化処理ステップの処理で生成された２値化データに基づいて、多次元コードを認識する上で基準となるセルを検出するセル検出処理ステップと、２値化処理ステップの処理で生成された２値化データに基づいて、セル検出処理ステップの処理で検出された多次元コードを認識する上で基準となるセルに対応する所定の探索範囲内に存在する、多次元コードの領域を特定するのに基本となるセルを決定する基本セル決定ステップと、基本となるセルによって一意に定まる範囲を、多次元コードの領域が撮像面に対向して撮像された場合に得られる範囲に変換する変換ステップと、２値化処理ステップの処理で生成された２値化データに基づいて、変換ステップの処理で変換された範囲に存在する多次元コードに割り当てられたコードデータを検出するコードデータ検出処理ステップとを含むことを特徴とする。
【００１１】
請求項１０に記載の多次元コード認識処理装置は、多次元コードを撮像した結果得られる画像情報から、所定の閾値に基づいて２値化データを生成する２値化処理手段と、２値化処理手段により生成された２値化データに基づいて、多次元コードを認識する上で基準となるセルを検出するセル検出処理手段と、２値化処理手段により生成された２値化データに基づいて、セル検出処理手段により検出された多次元コードを認識する上で基準となるセルに対応する所定の探索範囲内に存在する、多次元コードの領域を特定するのに基本となるセルを決定する基本セル決定手段と、基本となるセルによって一意に定まる範囲を、多次元コードの領域が撮像面に対向して撮像された場合に得られる範囲に変換する変換手段と、２値化処理手段により生成された２値化データに基づいて、変換手段により変換された範囲に存在する多次元コードに割り当てられたコードデータを検出するコードデータ検出処理手段とを備えることを特徴とする。
【００１２】
請求項１１に記載の多次元コード認識処理プログラムは、多次元コードを撮像した結果得られる画像情報から、所定の閾値に基づいて２値化データを生成する２値化処理ステップと、２値化処理ステップの処理で生成された２値化データに基づいて、多次元コードを認識する上で基準となるセルを検出するセル検出処理ステップと、２値化処理ステップの処理で生成された２値化データに基づいて、セル検出処理ステップの処理で検出された多次元コードを認識する上で基準となるセルに対応する所定の探索範囲内に存在する、多次元コードの領域を特定するのに基本となるセルを決定する基本セル決定ステップと、基本となるセルによって一意に定まる範囲を、多次元コードの領域が撮像面に対向して撮像された場合に得られる範囲に変換する変換ステップと、２値化処理ステップの処理で生成された２値化データに基づいて、変換ステップの処理で変換された範囲に存在する多次元コードに割り当てられたコードデータを検出するコードデータ検出処理ステップとを含むことを特徴とする。
【００１３】
請求項１の記載の多次元コード認識処理方法、請求項１０に記載の多次元コード認識装置、および請求項１１に記載の多次元コード認識処理プログラムにおいては、多次元コードを撮像した結果得られる画像情報から、所定の閾値に基づいて２値化データが生成され、生成された２値化データに基づいて、多次元コードを認識する上で基準となるセルが検出され、生成された２値化データに基づいて、検出された多次元コードを認識する上で基準となるセルに対応する所定の探索範囲内に存在する、多次元コードの領域を特定するのに基本となるセルが決定され、基本となるセルによって一意に定まる範囲が、多次元コードの領域が撮像面に対向して撮像された場合に得られる範囲に変換され、生成された２値化データに基づいて、変換された範囲内に存在する多次元コードに割り当てられたコードデータが検出される。
【００１４】
【発明の実施の形態】
以下に本発明の実施の形態を説明する。
【００１５】
図１は、本発明を適用したパーソナルコンピュータ１の使用例を表している。オブジェクト１００は、例えば、名刺状のカードで、２次元コード１０１が貼付（印刷を含む）されている。
【００１６】
２次元コード１０１は、図２に示すように、複数の正方形状のセル（黒色の部分）が所定の配列規則に従って２次元的に配置されており、このセルの配列パターンにより、所定の英数文字、例えば、この例の場合、数字２００がコード化されている。
【００１７】
以下に、２次元コード１０１の詳細を説明する。２次元コード１０１は、ロゴマーク部２０１とコード部２０２から構成されており、これらロゴマーク部２０１とコード部２０２の全体は、１個の正方形状のセルの矩形領域を１ブロックと表現すると、７ブロック分の長さのＸ軸方向の辺と、９．５ブロック分の長さのＹ軸方向の辺で形成される領域（以下、このような領域を７×９．５ブロック領域と記述する。他の場合においても同様である）内に配置されている。
【００１８】
ロゴマーク部２０１は、図３に示すように、ロゴマークセル部３０１およびノンセル部３０２から構成されている。そして、７×１．５ブロック領域の長方形状のセルであるロゴマークセル部３０１には、ロゴマーク、文字、または数字など、２次元コードに関連する白抜きの可読文字情報が印刷により表示されている。ここで、例えば、ロゴマークとしては、２次元コード１０１のコード体系に付された「ＣｙｂｅｒＣｏｄｅ」など、２次元コード１０１が何を意味するコードなのかを、人間が判読可能なマークとして、白抜き文字で表示される。
【００１９】
また、ロゴマークに限らず、２次元コード１０１のコード体系を開発した本出願人の会社名を表示したり、２次元コード１０１のコード体系に関連する情報資源の格納場所を示すＵＲＬ（Uniform Resource Locator）などを表示するようにしても構わない。なお、URLとは、インターネット上に分散しているファイルなどの情報資源の格納場所を一意に指定するための表記方法である。
【００２０】
以上のように、長方形状のロゴマークセル部３０１に、その２次元コード１０１が何を示すコードなのかをロゴマーク等で表示することにより、そのロゴマーク等に関する情報が掲載されているインターネット上のホームページなどを参照することで、その２次元コード１０１に関する情報を取得し、理解することができる。例えば、本願出願時点において、本出願人が提供している下記のURLでアクセス可能なホームページには、以下のような説明文が掲載されている。
http://www.sony.co.jp/sd/ProductsPark/Consumer/PCOM/PCG-C1CAT/cybercode.html
「「サイバーコード」は、ソニー独自の２次元バーコードで、約1,677万通り(24ビット)のパターンが存在します。このうち約100万通り(20ビット)を、任意のプログラム起動用として自由に登録することが可能。残りのコード分は、将来のサービス拡張用として予約されています。「サイバーコード」は、それが貼られたものから、対応するコンピューター上の情報を引き出すためのインデックスの役割をし、CyberCode Finderのファインダーを通して、プログラムが起動されることにより、あたかも「サイバーコード」が貼られたものから、対応する情報がコンピューター上に飛び出してくるという新しいインターフェースを提供します。」
【００２１】
次に、図３に示すように、ロゴマークセル部３０１の、コード部２０２側の７×１ブロック領域には、セルが存在しないノンセル部３０２が存在する。なお、ロゴマークセル部３０１の長軸（図２のＸ軸方向の軸）を辺Ａ、および短軸（図２のＹ軸方向の軸）を辺Ｂとする。
【００２２】
コード部２０２には、図４に示すように、ロゴマークセル部３０１を下方向に位置させたとき、ロゴマークセル部３０１の左端から７ブロック分上方向に位置する左上コーナーセル、およびロゴマークセル部３０１の右端から７ブロック分上方向に位置する右上コーナーセルが存在する。また、ロゴマークセル部３０１の左端から１ブロック分上方向に位置する左下コーナーセル、およびロゴマークセル部３０１の右端から１ブロック分上方向に位置する右下コーナーセルが存在する。なお、左上コーナーセル、右上コーナーセル、左下コーナーセル、および右下コーナーセルを特に区別する必要がない場合、これらをまとめてコーナーセルと称する。
【００２３】
コーナーセルの周囲の隣接する３ブロック分の領域には、セルが存在しない。つまり、ロゴマークセル部３０１に対して、上述したような位置に存在し、周り３ブロック領域にセルが存在しないようなセルはコーナーセルとされる。
【００２４】
コード部２０２は、実際は、１ブロックを１ビットとすると、４９ビット（７ブロック×７ブロック＝４９ブロック）分の情報をコード化することができるが、上述したように、コーナーセル（１ブロック）およびコーナーセルの周り３ブロックは、データを構成しない。すなわち、合計１６ブロックは、データを構成しない。また、残り３３ブロック（３３ビット）中、９ブロック（９ビット）は、コードデータが、正しいコードデータであることを確かめるためのチェックデータを構成する。従って、コード部２０２には、２４ビット分の情報がコード化されている。
【００２５】
図５は、上述した２次元コード１０１の具体例を表している。図５（Ａ）の２次元コード１０１のコード部２０２には、識別番号２００、２０１、２０２、２０３、１５００、１５０１、１５０２、そして１５０３がコード化されたコードパターンが印刷されている。また、ロゴマークセル部３０１の下方の、ID部２０３には、コード化された識別番号に対応する数字が印刷されている。
【００２６】
また、図５（B）に示す具体例では、２次元コード１０１のロゴマークセル部３０１に、ロゴマークが白抜き文字で印刷されている。また、図５（C）に示す具体例では、２次元コード１０１のID部２０３の識別番号に対応する数字が省略されている。さらに、図５（D）に示す具体例では、ロゴマークセル部３０１に識別番号に対応する数字が白抜き文字で印刷されており、ID部２０３にロゴマークが黒文字で印刷されている。これら図５（A）乃至図５（Ｄ）に表されている２次元コード１０１のコード部２０２は、全て同一の仕様により作成されている。
【００２７】
ここで、上述したロゴマークセル部３０１は、所定の縦横比の矩形状の領域によって構成され、後述するように、複数の黒色画素が連結してなる黒色画素連結領域を含んで構成されている。さらに、ロゴマークセル部３０１内には、２次元コード１０１に関連する白抜きの可読情報を含んで構成されている。そして、２次元コード１１０１の認識処理を開始する初期段階で、予め規定された所定の縦横比の矩形状のロゴマークセル部３０１を検出することで、このロゴマークセル部３０１を基準として、所定の探索範囲内に存在するその他のセルの検出処理へと認識処理を進めることが可能となる。したがって、上述したロゴマークセル部３０１は、単に、２次元コード１０１の意味合いを可読なロゴマークという形態で表示するという目的のためだけに設けているのではなく、２次元コード１０１の認識処理を進める上での基準を示す機能も兼ね備えている。
【００２８】
このように、ロゴマークセル部３０１には、基準を示す機能に加えて、図５（B）乃至図５（Ｄ）に示すように、ロゴマークや文字などを表示する機能を付与しているので、最小限の占有面積で、認識処理の基準に必要な情報と、可読情報とを同時に提示することが可能となっている。
【００２９】
図１に戻り、パーソナルコンピュータ１は、例えば、オブジェクト１００と２次元コード１０１を、ＣＣＤビデオカメラ２３により撮像することができ、また、その結果得られた２次元コード１０１のコードデータを認識するようになされている。
【００３０】
図６乃至図１１は、本発明を適用した携帯型パーソナルコンピュータの構成例を表している。このパーソナルコンピュータ１は、ミニノート型のパーソナルコンピュータとされ、基本的に、本体２と、本体２に対して開閉自在とされている表示部３により構成されている。図６は、表示部３を本体２に対して開いた状態を示す外観斜視図、図７は、図６の平面図、図８は、表示部３を本体２に対して閉塞した状態を示す左側側面図、図９は、表示部３を本体２に対して１８０度開いた状態を示す右側側面図、図１０は、図８の正面図、図１１は、図９の底面図である。
【００３１】
本体２には、各種の文字や記号などを入力するとき操作されるキーボード４、マウスカーソルを移動させるときなどに操作されるスティック式ポインティングデバイス５が、その上面に設けられている。また、本体２の上面には、音を出力するスピーカ８と、表示部３に設けられているCCDビデオカメラ２３で撮像するとき操作されるシャッタボタン１０がさらに設けられている。
【００３２】
表示部３の上端部には、ツメ１３が設けられており、図８に示すように、表示部３を本体２に対して閉塞した状態において、ツメ１３に対向する位置における本体２には、ツメ１３が嵌合する孔部６が設けられている。本体２の前面には、スライドレバー７が前面に平行に移動可能に設けられており、スライドレバー７は孔部６に嵌合したツメ１３と係合してロックし、またロック解除することができるようになっている。ロックを解除することにより、表示部３を本体２に対して回動することができる。ツメ１３の隣りには、マイクロホン２４が取り付けられている。このマイクロホン２４は、図１１にも示すように、背面からの音も収音できるようになされている。
【００３３】
本体２の正面にはまた、プログラマブルパワーキー（PPK）９が設けられている。本体２の右側面には、図９に示すように、排気孔１１が設けられており、本体２の前面下部には、図１０に示すように、吸気孔１４が設けられている。さらに、排気孔１１の右側には、PCMCIA（Personal Computer Memory Card International Association）カード（ＰＣカード）を挿入するためのスロット１２が設けられている。
【００３４】
表示部３の正面には、画像を表示するLCD（Liquid Crystal Display）２１が設けられており、その上端部には、撮像部２２が、表示部３に対して回動自在に設けられている。すなわち、この撮像部２２は、LCD２１と同一の方向と、その逆の方向（背面の方向）との間の１８０度の範囲の任意の位置に回動することができるようになされている。撮像部２２には、CCDビデオカメラ２３が取り付けられている。
【００３５】
表示部３の下側の本体側には、電源ランプPL、電池ランプBL、メッセージランプML、その他のLEDよりなるランプが設けられている。なお、図８に示す符号４０は、本体２の左側面に設けられた電源スイッチであり、図１０に示す符号２５は、CCDビデオカメラ２３のフォーカスを調整する調整リングである。さらに、図１１に示す符号２６は、本体２内に増設メモリを取り付けるための開口部を被覆する蓋であり、符号４１は、蓋２６のロックツメを外すためのピンを挿入する小孔である。
【００３６】
図１２は、パーソナルコンピュータ１の内部の構成例を表している。内部バス５１には、CPU（Central Processing Unit）５２、必要に応じて挿入されるPCカード５３、RAM（Random Access Memory）５４、およびグラフィックチップ８１が接続されている。この内部バス５１は、外部バス５５に接続されており、外部バス５５には、ハードディスクドライブ（HDD）５６、I/O（入出力）コントローラ５７、キーボードコントローラ５８、スティック式ポインティングデバイスコントローラ５９、サウンドチップ６０、LCDコントローラ８３、モデム５０等が接続されている。
【００３７】
CPU５２は、各機能を統括するコントローラであり、PCカード５３は、オプションの機能を付加するとき適宜装着される。
【００３８】
グラフィックチップ８１には、CCDビデオカメラ２３で取り込んだ画像データが、処理部８２で処理された後、入力されるようになされている。グラフィックチップ８１は、処理部８２を介してCCDビデオカメラ２３より入力されたビデオデータを、内蔵するVRAM８１Ａに記憶し、適宜、これを読み出して、LCDコントローラ８３に出力する。LCDコントローラ８３は、グラフィックチップ８１より供給された画像データをLCD２１に出力し、表示させる。バックライト８４は、LCD２１を後方から照明するようになされている。
【００３９】
RAM５４の中には、起動が完了した時点において、電子メールプログラム（アプリケーションプログラム）５４Ａ、オートパイロットプログラム（アプリケーションプログラム）５４Ｂ、そしてOS（基本プログラム）５４ＣがHDD５６から転送され、記憶される。
【００４０】
電子メールプログラム５４Ａは、電話回線のような通信回線等からネットワーク経由で通信文を授受するプログラムである。電子メールプログラム５４Ａは、特定機能としての着信メール取得機能を有している。この着信メール取得機能は、メールサーバ９３に対してそのメールボックス９３Ａ内に自分（利用者）宛のメールが着信しているかどうかを確認して、自分宛のメールがあれば取得する処理を実行する。
【００４１】
オートパイロットプログラム５４Ｂは、予め設定された複数の処理（またはプログラム）等を、予め設定された順序で順次起動して、処理するプログラムである。
【００４２】
OS（基本プログラムソフトウェア）５４Ｃは、Windows95やWindows98（商標）に代表される、コンピュータの基本的な動作を制御するものである。
【００４３】
一方、外部バス５５側のハードディスクドライブ（HDD）５６には、電子メールプログラム５６Ａ、オートパイロットプログラム５６Ｂ、OS（基本プログラムソフトウェア）５６Ｃ、および２次元コード認識プログラム５６Ｄが記憶されている。
【００４４】
２次元コード認識プログラムは、グラフィックチップ８１のVRAM８１Ａに記憶される画像データから、２次元コードのロゴマーク部２０１のロゴマークセル部３０１およびコード部２０２を検出し、そしてコード部２０２のコードデータを認識することで、コード化された所定の情報を読み取るプログラムである。
【００４５】
I/Oコントローラ５７は、マイクロコントローラ６１を有し、このマイクロコントローラ６１にはI/Oインタフェース６２が設けられている。このマイクロコントローラ６１はI/Oインタフェース６２、CPU６３、RAM６４、ROM６９が相互に接続されて構成されている。このRAM６４は、キー入力ステイタスレジスタ６５、LED（発光ダイオード）制御レジスタ６６、設定時刻レジスタ６７、レジスタ６８を有している。設定時刻レジスタ６７は、ユーザが予め設定した時刻（起動条件）になると起動シーケンス制御部７６の動作を開始させる際に利用される。レジスタ６８は、予め設定された操作キーの組み合わせ（起動条件）と、起動すべきアプリケーションプログラムの対応を記憶するもので、その記憶された操作キーの組み合わせがユーザにより入力されると、その記憶されたアプリケーションプログラム（例えば電子メール）が起動されることになる。
【００４６】
キー入力ステイタスレジスタ６５は、ワンタッチ操作用のプログラマブルパワーキー（PPK）９が押されると、操作キーフラグが格納されるようになっている。LED制御レジスタ６６は、レジスタ６８に記憶されたアプリケーションプログラム（電子メール）の立上げ状態を表示するメッセージランプMLの点灯を制御するものである。設定時刻レジスタ６７は、所定の時刻を任意に設定することができるものである。
【００４７】
なお、このマイクロコントローラ６１にはバックアップ用のバッテリ７４が接続されており、各レジスタ６５，６６，６７の値は、本体２の電源がオフとされている状態においても保持されるようになっている。
【００４８】
マイクロコントローラ６１内のROM６９の中には、ウェイクアッププログラム７０、キー入力監視プログラム７１、LED制御プログラム７２が予め格納されている。このROM６９は、例えばEEPROM（electrically erasable and programmable read only memory）で構成されている。このEEPROMはフラッシュメモリとも呼ばれている。さらにマイクロコントローラ６１には、常時現在時刻をカウントするRTC（Real-Time Clock）７５が接続されている。
【００４９】
ROM６９の中のウェイクアッププログラム７０は、RTC７５から供給される現在時刻データに基づいて、設定時刻レジスタ６７に予め設定された時刻になったかどうかをチェックして、設定された時刻になると、所定の処理（またはプログラム）等の起動をするプログラムである。キー入力監視プログラム７１は、PPK９が利用者により押されたかどうかを常時監視するプログラムである。LED制御プログラム７２は、メッセージランプMLの点灯を制御するプログラムである。
【００５０】
ROM６９には、さらにBIOS（Basic Input/Output System）７３が書き込まれている。このBIOSとは、基本入出力システムのことをいい、OSやアプリケーションソフトウェアと周辺機器（ディスプレイ、キーボード、ハードディスクドライブ等）の間でのデータの受け渡し（入出力）を制御するソフトウェアプログラムである。
【００５１】
外部バス５５に接続されているキーボードコントローラ５８は、キーボード４からの入力をコントロールする。スティック式ポインティングデバイスコントローラ５９はスティック式ポインティングデバイス５の入力を制御する。
【００５２】
サウンドチップ６０は、マイクロホン２４からの入力を取り込み、あるいは内蔵スピーカ８に対して音声信号を供給する。
【００５３】
モデム５０は、公衆電話回線９０、インターネットサービスプロバイダ９１を介して、インターネット等の通信ネットワーク９２やメールサーバ９３等に接続することができる。
【００５４】
電源スイッチ４０は、電源をオンまたはオフするとき操作される。半押しスイッチ８５は、シャッタボタン１０が半押し状態にされたときオンされ、全押しスイッチ８６は、シャッタボタン１０が全押し状態にされたときオンされる。反転スイッチ８７は、撮像部２２が１８０度回転されたとき（CCDビデオカメラ２３がLCD２１の反対側を撮像する方向に回転されたとき）、オンされるようになされている。
【００５５】
次に、２次元コード認識処理の処理手順を、図１３のフローチャートを参照して説明する。
【００５６】
２次元コード１０１がＣＣＤビデオカメラ２３により撮像され、その結果得られた１フレーム分の画像データが、処理部８２により処理され、グラフィックチップ８１のVRAM８１Ａに記憶されている状態において、ＨＤＤ５６に記憶されている２次元コード認識プログラム５６Ｄが起動されると、ステップＳ１において、CPU５２は、所定の輝度値を示す閾値の設定をカウントするカウンタｉの値に１を初期設定する。この例の場合、図１４に示すように、閾値が、５段階に設定されている。設定番号１に示される閾値Ａの値が、最も大きい値に設定され、設定番号５に示される閾値Ｅに向かって、段階的に値が小さくなるように設定されている。
【００５７】
ステップＳ２において、CPU５２は、カウンタｉの値に対応する設定番号の閾値に基づいて、VRAM８１Ａに記憶されている画像データに対して２値化処理を行う。ここで、閾値より大きい輝度を保持する画素の画素値は、”０”に符号化され、表示上、その画素は白色とされる。以下においては、このように、画素値が”０”に符号化された画素を、白色画素と称する。
【００５８】
一方、閾値以下の輝度値を保持する画素の画素値は、”１”に符号化され、表示上、その画素は黒色とされる。以下においては、このように、画素値が”１”に符号化された画素を、黒色画素と称する。
【００５９】
次に、ステップＳ３において、CPU５２は、図１５に示すように、黒色画素が連結する領域を１つの領域として、左上から右下に向かって番号を設定（ラベリング）する。
【００６０】
ステップＳ４において、CPU５２は、ステップＳ３でラベリングした黒色画素連結領域の総数Ｍを求め、求めた黒色画素連結領域の総数Ｍが２５７個以上であるか否かを判定し、総数Ｍが２５７個以上であると判定した場合、すなわち、現在、VRAM８１Ａに記憶されている画像フレームが、以降の処理を実行するのに適さない画像であると判定した場合、ステップＳ５に進む。ここで、以降の処理を実行するのに適さない画像とは、いわゆるディザ状の画像と呼ばれる砂粒のような点を多量に含む画像であり、このようなディザ状の画像に対して無理に認識処理を進めようとすると、演算処理に要するCPUの負荷が大となってしまう。そこで、このようなディザ状の画像の場合は、そのまま認識処理を進めずに、ステップＳ５へ進むようにしてある。
【００６１】
ステップＳ５において、CPU５２は、カウンタｉの値が、閾値の設定数Ｎ（＝５）と等しい（ｉ＝５）か否かを判定し、ｉ＝５ではないと判定した場合、ステップＳ６において、カウンタｉの値を１だけ増加した後、ステップＳ２に戻る。ステップＳ２において、CPU５２は、１つだけ増加されたカウンタｉの値に対応する設定番号の閾値に基づいて、VRAM８１Ａに記憶されている画像データに対して、再度、２値化処理を実行する。
【００６２】
上述したように、設定番号１で示される閾値Ａは、最も値が大きい閾値であり、すなわち、この最も大きい値が２値化処理の閾値とされると、画像データの多くの画素の輝度が、閾値Ａよりも相対的に小さい値となり、その結果多くの画素が黒色画素と認識され、これにより、黒色画素連結領域の総数Ｍも多くなる。そこで、ステップＳ５で、カウンタｉの値が１つ増加され、１段階小さい値の閾値が、次の２値化処理の閾値とされると、黒色画素として認識される画素が少なくなる。
【００６３】
このように、最初に、より大きい閾値で、大きい輝度値を基準として２値化処理を行うことより、フレーム全体が比較的明るい画像に適する２値化処理を実行することができ、さらに、閾値を段階的に小さくし、より小さい輝度値を基準として２値化処理を行うことにより、フレーム全体が比較的暗い画像に適する２値化処理を実行することができる。このように、閾値を5段階に分け、この閾値を段階的に変更することによって、画像フレーム全体に明るさの変動があった場合であっても、常に精度の高い２値化データを生成することができるようになっている。
【００６４】
ステップＳ５において、CPU５２は、ｉ＝５であると判定した場合、すなわち、閾値Ａ乃至Ｅのいずれの閾値によっても、適当な総数Ｍの黒色画素連結領域が生成されない場合、この１フレーム分の画素データには、２次元コード１０１が存在しないものと判定した場合、処理が終了される。
【００６５】
ステップＳ４において、CPU５２は、黒色画素連結領域の総数Ｍが２５７個より少ないと判定した場合、ステップＳ７に進む。
【００６６】
ステップＳ７において、CPU５２は、以前に実行された２次元コード認識処理により認識された２次元コード１０１のLCD２１の表示上の位置、例えば、ロゴマークセル部３０１の中央点が、RAM５４などに記憶されているか否かを判定し、それが記憶されている場合、ステップＳ８に進み、記憶されている点をロゴマークセル部検出処理の開始点に設定する。ステップＳ７で、２次元コード１０１の位置が記憶されていないと判定した場合、ステップＳ９に進み、CPU５２は、３２０×２４０画素のLCD２１の表示上の中心点（例えば、Ｘ軸方向に１６０番目であり、Ｙ軸方向に１２０番目の画素）を開始点に設定する。このようにすることより、ロゴマークセル部３０１を効率的に検出することができる。
【００６７】
次に、ステップＳ１０において、ロゴマークセル部検出処理が実行される。ステップＳ１０におけるロゴマークセル部検出処理の詳細を、図１６のフローチャートを参照して説明する。
【００６８】
はじめに、ステップＳ２１において、CPU５２は、黒色画素連結領域の総数Ｍをカウントするカウンタｊの値を１に初期設定し、次に、ステップＳ２２において、図１３のステップＳ８およびステップＳ９で設定された開始点から、LCD２１の画面上を左回りの渦巻の軌跡に沿って、黒色画素連結領域を探索し、始めに検出した黒色画素連結領域をロゴマークセル部候補領域として選択する。
【００６９】
次に、ステップＳ２３において、CPU５２は、ステップＳ２２で選択したロゴマークセル部候補領域の、図３に示したようなロゴマークセル部３０１の辺Ａおよび辺Ｂに対応する辺ＡTおよび辺ＢTを決定する。辺ＡTは、図１７に示すように、黒色画素連結領域がLCD２１の画像上のＸ軸上に投影されて形成される線（Ｘ軸投影線）と、Ｙ軸上に投影されて形成される線（Ｙ軸投影線）のうち、長い方の線とする。辺ＢTは、他方の短い方の線とする。
【００７０】
次に、ステップＳ２４において、CPU５２は、短軸に対応する辺ＢTが２０画素より少ない画素で構成されているか否かを判定する。例えば、短軸（辺Ｂ）が２０画素より少ない画素で構成されている黒色画素連結領域がロゴマークセル部３０１であるとすると、図２に示したように、１ブロックの一辺の長さは、辺Ｂの長さとの比が１対１．５であるため、さらに少ない数の画素から構成されるようになり、この場合、最小セル（１×１ブロック領域のセル）が小さくなり、LCD２１に適切に表示されなくなる。このことより、ステップＳ２４において、辺ＢTが２０画素より少ない画素で構成されていると判定された場合、今回ステップＳ２２で選択された黒色画素連結領域は、ロゴマークセル部３０１ではないとされ、ステップＳ２５に進み、CPU５２は、カウンタｊの値が、黒色画素連結領域の総数Ｍと等しい（ｊ＝Ｍ）か否かを判定し、ｊ＝Ｍではないと判定した場合、ステップＳ２６に進み、カウンタｊの値を１だけ増加した後、ステップＳ２２に戻る。そして、CPU５２は、次の黒色画素連結領域を、次のロゴマークセル部候補領域として、同様の処理を行う。
【００７１】
ステップＳ２４において、ステップＳ２２で選択されたロゴマークセル部候補領域の辺ＢTが２０画素と等しいか、またはそれより多い画素で構成されていると判定された場合、ステップＳ２７に進み、CPU５２は、ロゴマークセル部候補領域の辺ＡTが３００画素より多い画素で構成されているか否かを判定する。例えば、長軸（辺Ａ）が３００画素より多い画素で構成されている黒色画素連結領域がロゴマークセル部３０１であるとすると、図２に示したように、辺Ａの長さが７に対して１の割合で求められる１ブロックの一辺の長さが大きくなり、図４に示したように、ロゴマークセル部３０１から、７ブロック分離れて位置する左上コーナーセルおよび右上コーナーセルが、LCD２１上に表示されなくなる。このことより、ステップＳ２７において、辺ＡTが３００画素より多い画素で構成されていると判定された場合、今回ステップＳ２２で選択された黒色画素連結領域は、ロゴマークセル部３０１ではないとされ、ステップＳ２５に進み、それ以降の処理が行われる。
【００７２】
ステップＳ２７において、ステップＳ２２で選択されたロゴマークセル部候補領域の辺ＡTが３００画素より多い画素で構成されていない（３００画素以下の画素で構成されている）と判定された場合、ステップＳ２８に進み、CPU５２は、ロゴマークセル部候補領域の黒色画素の総数が、２０画素以上かつ１５００画素未満であるか否かを判定し、２０画素以上かつ１５００画素未満であると判断した場合、ステップＳ２９に進む。
【００７３】
一方、ステップＳ２８において、ロゴマークセル部候補領域の黒色画素の総数が２０画素未満、または１５００画素以上であると判定された場合、ステップＳ２５に進む。なお、黒色画素の総数が、２０画素未満の場合、ステップＳ２４において辺ＢTが２０画素より少ない画素で構成された場合と同様の問題が発生し、また、１５００画素以上である場合、ステップＳ２７において辺ＡTが３００画素より多い画素で構成された場合と同様の問題が発生し、いずれの場合も、ロゴマークセル部３０１である可能性が小さくなる。
【００７４】
次に、ステップＳ２９において、CPU５２は、ステップＳ２２で選択したロゴマークセル部候補領域の方形らしさ（ｆｉｔｎｅｓｓ）を判定し、方形であると判定した場合、ステップＳ３０に進む。この例の場合、式（１）に基づいて算出されるｆｉｔｎｅｓｓが、０．２以上である場合、ロゴマークセル部候補領域は方形であると判定される。
【００７５】
【数１】
0003794463.tif 000002
【００７６】
式（１）の定数ａは、式（２）に基づいて、定数ｃは、式（３）に基づいて、そして定数ｂ／２は、式（４）に基づいて求められる、いわゆる、モーメント特徴のうちの２次元モーメントである。
【００７７】
【数２】
0003794463.tif 000003
【００７８】
【数３】
0003794463.tif 000004
【００７９】
【数４】
0003794463.tif 000005
【００８０】
式（２）乃至式（４）のｆ（ｉ，ｊ）は、LCD２１の表示上の画素のＸ座標ｉと、Ｙ座標ｊにより特定される画素が黒色の場合、１となり、また、特定される画素が白色の場合、０となる関数である。
【００８１】
ステップＳ３０において、CPU５２は、ステップＳ２９で方形とされたロゴマークセル部候補領域の長軸と短軸の比を、式（５）に基づいて算出し、算出結果が２．０以上かつ２５以下であるか否かを判定する。
【００８２】
【数５】
0003794463.tif 000006
【００８３】
算出結果が２．０以上かつ２５以下であると判定された場合、ステップＳ３１に進み、CPU５２は、ステップＳ２２で選択したロゴマークセル部候補領域をロゴマークセル部３０１として設定（仮定）し、例えば、ロゴマークセル部候補領域とされた黒色画素連結領域の番号を、RAM５４に記憶させる。このようにして、ロゴマークセル部３０１は検出され、処理は終了される。
【００８４】
ステップＳ２８において、黒色画素の総数が２０画素未満、または１５００画素以上であると判定された場合、ステップＳ２９において、ロゴマークセル部候補領域が方形ではないと判定された場合、またはステップＳ３０において、辺ＡTと辺ＢTの比が２．０未満または２５より大きいと判定された場合、今回ステップＳ２２で選択されたロゴマークセル部候補領域は、ロゴマークセル部３０１ではないとされ、ステップＳ２５に進み、次に検出された黒色画素連結領域が次のロゴマークセル部候補領域とされ、以降の処理が行われる。
【００８５】
ステップＳ２５において、カウンタｊの値が黒色画素連結領域の総数Ｍと等しい（ｊ＝Ｍ）と判定された場合、ステップＳ３１でロゴマークセル部３０１が設定されず、処理は終了される。すなわち、今回２次元コード認識処理の対象とされた画像データ（１フレーム）には、ロゴマークセル部３０１が存在しないものとされる。
【００８６】
以上のようにして、ロゴマークセル部検出処理が完了したとき、次に、図１３のステップＳ１１に進む。
【００８７】
ステップＳ１１において、ステップＳ１０でロゴマークセル部３０１が検出されたか否かが判定され、検出されたと判定された場合、ステップＳ１２に進み、コード部検出処理が実行される。ステップＳ１２におけるコード部検出処理の詳細を、図１８のフローチャートを参照して説明する。
【００８８】
はじめに、ステップＳ４１において、CPU５２は、図１３のステップＳ３で検出した黒色画素連結領域の総数Ｍをカウントするカウンタｊの値を１に初期設定し、ステップＳ４２において、その値に対応する番号の黒色画素連結領域を検出し、それを左上コーナーセル候補領域として選択する。
【００８９】
次に、ステップＳ４３において、CPU５２は、ステップＳ４２で選択した左上コーナーセル候補領域の、図１７に示したようにして決定した辺ＡTおよび辺ＢTの長さの比が３倍以下であるか否かを判定し、その比が３倍以下であると判定した場合、ステップＳ４４に進む。
【００９０】
ステップＳ４４において、CPU５２は、ステップＳ４２で選択した左上コーナーセル候補領域が、図１３のステップＳ１０で検出したロゴマークセル部３０１に対して予め設定された探索範囲内に存在するか否かを判定し、探索範囲内に存在すると判定した場合、ステップＳ４５に進み、それを左上コーナーセルとして設定（仮定）する。
【００９１】
ステップＳ４３において、辺ＡTの長さに対する辺ＢTの長さの比が３倍より大きいと判定された場合、または、ステップＳ４４において、探索範囲内に存在しないと判定された場合、ステップＳ４２で選択された黒色画素連結領域は、左上コーナーセルではないと判定され、ステップＳ４６に進み、カウンタｊの値が黒色画素連結領域の総数Ｍに等しい（ｊ＝Ｍ）か否かが判定され、ｊ＝Ｍではないと判定された場合、ステップＳ４７に進み、カウンタｊの値が１だけ増加され、ステップＳ４２に戻る。そして、次の番号の黒色画素連結領域が、次の左上コーナーセル候補領域とされ、同様の処理が行われる。
【００９２】
ステップＳ４５において、左上コーナーセルが設定されると、ステップＳ４８に進み、CPU５２は、黒色画素連結領域の番号をカウントする他のカウンタｋに２を初期設定し、次に、ステップＳ４９において、カウンタｋの値に対応する番号の黒色画素連結領域を検出し、それを右上コーナーセル候補領域として選択する。
【００９３】
次に、ステップＳ５０において、CPU５２は、ステップＳ４５で設定した左上コーナーセルの画素数（面積）と、ステップＳ４９で選択した右上コーナーセル候補領域の画素数（面積）の比を算出し、その比（面積比）が６倍以下であるか否かを判定し、６倍以下であると判定した場合、ステップＳ５１に進む。
【００９４】
ステップＳ５１において、CPU５２は、ステップＳ４５で設定した左上コーナーセルの面積（画素数）（Ｓ１）、ステップＳ４９で選択した右上コーナーセル候補領域の面積（画素数）（Ｓ２）、およびその左上コーナーセルの中心点とその右上コーナーセル候補領域の中心点との距離（Ｄ）を算出し、式（６）および式（７）が成立するか否かを判定する。
【００９５】
（Ｓ1／Ｄ2）＜＝９００  ・・・（６）
（Ｓ2／Ｄ2）＜＝９００  ・・・（７）
ステップＳ５１において、式（６）および式（７）が成立すると判定された場合、ステップＳ５２に進み、CPU５２は、ステップＳ４９で選択した右上コーナーセル候補領域を右上コーナーセルとして設定（仮定）する。
【００９６】
ステップＳ５２において、右上コーナーセルが設定（仮定）されると、ステップＳ５５において、CPU５２は、ステップＳ４５で設定した左上コーナーセル、ステップＳ５２で設定した右上コーナーセル、および図１３のステップＳ１０で設定されたロゴマークセル部３０１により形成される領域を、LCD２１の画面上のＸ軸方向に７ブロック分の長さ、そしてＹ軸方向に９．５ブロック分の領域になるようにアフィン変換する。なお、１ブロックの一辺の長さは、ステップＳ１０で設定されたロゴマークセル部３０１の辺ＡTまたは辺ＢTに基づいて算出される。
【００９７】
次に、ステップＳ５６において、CPU５２は、ステップＳ５５で変換した画像から、図１３のステップＳ１０で設定したロゴマークセル部分３０１とそれに対応して存在するノンセル部３０２に相当する領域（７×２．５ブロック領域）を削除し、その結果得られた７×７ブロック領域の範囲に、黒色画素連結領域をセルとしてマッピングし、コードマップを生成する。
【００９８】
ステップＳ５７において、CPU５２は、ステップＳ５６で生成したコードマップのセルのうち、４角のセルを検出し、その周りの３ブロック領域が、白色画素とされているか否かを判定し、白色画素とされていると判定した場合、ステップＳ５８に進み、ステップＳ５６で生成したコードマップを２次元コード１０１のコード部２０２と設定（仮定）する。このようにして、コード部２０２が検出されると、処理は終了される。
【００９９】
ステップＳ５０において、面積比が６倍より大きいと判定された場合、ステップＳ５１において、式（６）および式（７）が成立しないと判定された場合、またはステップＳ５７において、４角のセルの周りの３ブロック領域が白色画素ではないと判定された場合、ステップＳ５３に進み、カウンタｋの値が黒色画素連結領域の総数Ｍに等しい（ｋ＝Ｍ）か否かが判定され、ｋ＝Ｍではないと判定された場合、ステップＳ５４に進み、カウンタｋの値が１だけ増加され、ステップＳ４９に戻る。そして次の番号の黒色画素連結領域が、次の右上コーナーセル候補領域とされ、同様の処理が行われる。
【０１００】
ステップＳ５３において、カウンタｋの値が黒色画素連結領域の総数Ｍと等しいと判定された場合、ステップＳ４６に戻り、ステップＳ４６の処理において、ｊ＝Ｍでないと判定された場合、ステップＳ４７に進み、カウンタｊの値が１だけ増加され、ステップＳ４２に戻り、次の番号の黒色画素連結領域が、次の左上コーナーセル候補領域として選択され、それ以降の処理が行われる。
【０１０１】
ステップＳ４６において、ｊ＝Ｍと判定された場合、今回２次元コード認識処理の対象となっている画像には、２次元コード１０１が存在しないものとされ、処理は終了される。
【０１０２】
以上のようにして、コード部検出処理が完了すると、図１３のステップＳ１３に進む。ステップＳ１３において、ステップＳ１２でコード部２０２が検出されたか否かが判定され、検出されたと判定された場合、ステップＳ１４に進み、コードデータ検証処理が実行される。ステップＳ１４のコードデータ検証処理の詳細を、図１９のフローチャートを参照して説明する。
【０１０３】
はじめに、ステップＳ６１において、CPU５２は、後述するステップＳ６３およびステップＳ６５で算出される基準値を、１ビット右方向にシフトする回数をカウントするカウンタｐの値を１に初期設定する。
【０１０４】
次に、ステップＳ６２において、CPU５２は、図１３のステップＳ１２で検出されたコード部２０２のコードマップから、コードデータおよびチェックデータの値を算出する。
【０１０５】
ステップＳ６３において、CPU５２は、ステップＳ６２で算出したコードデータの値（ビットストリーム）と、０ｘＦＦＦＦＦＦとの排他的論理和演算を行い、その結果得られた値（ビットストリーム）を基準値（基準ビットストリーム）とする。ステップＳ６４において、CPU５２は、基準ビットストリームのLSB(Least Significant Bit)に”１”が立っているか否かを判定し、”１”が立っていないと判定した場合、ステップＳ６５に進む。
【０１０６】
ステップＳ６５において、CPU５２は、ステップＳ６３で算出した基準値（基準ビットストリーム）と、０ｘ８４０８との排他的論理和演算を行い、その結果得られた値（ビットストリーム）を新たな基準値（基準ビットストリーム）とし、ステップＳ６６に進む。
【０１０７】
ステップＳ６４において、CPU５２は、ステップＳ６３で算出した基準値（基準ビットストリーム）のＬＳＢに”１”が立っていると判定した場合、ステップＳ６５の処理をスキップし、ステップＳ６６に進む。
【０１０８】
ステップＳ６６において、CPU５２は、ステップＳ６３またはステップＳ６５において算出した基準値（基準ビットストリーム）を１ビットだけ右にシフトさせ、ステップＳ６７に進み、カウンタｐの値が、２４（予め決められたシフトの回数）に等しい（ｐ＝２４）か否かを判定し、ｐ＝２４ではないと判定した場合、ステップＳ６８に進み、カウンタｐの値を１だけ増加した後、ステップＳ６４に戻る。以下、同様の処理が、ステップＳ６７においてｐ＝２４であると判定されるまで、繰り返し実行させる。
【０１０９】
ステップＳ６７において、CPU５２は、ｐ＝２４であると判定した場合、ステップＳ６９に進み、ステップＳ６４乃至Ｓ６８の処理により算出されたビットストリームと、０ｘ１ＦＦとの論理積演算を行う。次に、ステップ７０において、CPU５２は、ステップＳ６９における論理積演算より得られ値が、ステップＳ６２で算出したチェックデータの値と等しいか否かを判定し、等しいと判定した場合、図１３のステップＳ１３で検出されたコード部２０２は、２次元コード１０１として適正なパターンであるとし、ステップＳ７１において、２次元コード１０１のコード部２０２を確定する。その後、処理は終了される。
【０１１０】
ステップＳ７０において、ステップＳ６９で算出された値と、ステップＳ６２で算出されたチェックデータの値とが等しくないと判定された場合、ステップＳ７１の処理がスキップされ、処理は終了される。
【０１１１】
以上のようにして、コードデータ検証処理が完了されると、図１３のステップＳ１５に進み、図１９のステップＳ７１でコード部２０２が確定されたか否かが判定され、確定されていると判定された場合、ステップＳ１６に進み、CPU５２は、図１９のステップＳ６２で算出したコードデータの値、すなわち、２次元コード１０１の値を、例えば、RAM５４に記憶させ、保持する。その後、処理は終了される。
【０１１２】
ステップＳ１１において、ロゴマークセル部３０１が検出されていないと判定された場合、ステップＳ１３において、コード部２０２が検出されていないと判定された場合、またはステップＳ１５において、コード部２０２が確定されていないと判定された場合、今回２次元コード認識処理の対象とされた画像データには、２次元コード１０１が存在しないものとされ、処理は終了される。
【０１１３】
このように、例えば、ロゴマークなどの２次元コード１０１の属性等を表示するロゴマークセル部３０１を認識処理の基準として利用し、コード部２０２を検出するようにしたので、２次元コード１０１の占有面積を最小限に抑えることができる。すなわち、ロゴマークセル部３０１には、基準を示す機能に加えて、ロゴマークや文字などを表示する機能を付与しているので、最小限の占有面積で、認識処理の基準に必要な情報と、可読情報とを同時に提示することが可能である。
【０１１４】
なお、上述した一連の処理を実行するプログラムをコンピュータにインストールし、コンピュータによって実行可能な状態とするために用いられる媒体としては、例えば、フロッピーディスク、CD-ROM、DVDなどのパッケージメディアのみならず、プログラムが一時的もしくは永続的に格納される半導体メモリや磁気ディスクなどで実現してもよく、さらには、ローカルエリアネットワークやインターネット、デジタル衛星放送などの有線および無線通信媒体、およびこれらの通信媒体を介して提供されるプログラムを転送もしくは受信するルーターやモデム等の各種通信インターフェイスで実現してもよく、本願明細書における媒体とは、これら全ての媒体を含む広義の概念を意味するものである。
【０１１５】
【発明の効果】
本発明によれば、多次元コードの画像データからコードデータを、効率よくかつ正確に認識することができ、さらに、最小限の占有面積で、認識処理の基準に必要な情報と、可読情報とを同時に提示することが可能となる。
【図面の簡単な説明】
【図１】本発明を適用したパーソナルコンピュータ１の使用例を表している。
【図２】２次元コードの仕様について説明する図である。
【図３】２次元コードの仕様について説明する他の図である。
【図４】２次元コードの仕様について説明する他の図である。
【図５】２次元コードの例を示す図である。
【図６】本発明を適用した携帯型パーソナルコンピュータの構成例の表示部を本体に対して開いた状態を示す外観斜視図である。
【図７】図６の平面図である。
【図８】図６の表示部を本体に対して閉塞した状態を示す左側側面図である。
【図９】図６の表示部を本体に対して１８０度開いた状態を示す右側側面図である。
【図１０】図８の正面図である。
【図１１】  図９の底面図である。
【図１２】  図６の電気回路の構成例を示すブロック図である。
【図１３】２次元コード認識処理を説明するフローチャートである。
【図１４】閾値の設定を説明する図である。
【図１５】黒色画素連結領域のラベリングを説明する図である。
【図１６】  ロゴマークセル部検出処理を説明するフローチャートである。
【図１７】辺ＡTおよび辺ＢTの求め方を説明する図である。
【図１８】  コード部検出処理を説明する図である。
【図１９】コードデータ検証処理を説明するフローチャートである。
【図２０】  従来の１次元バーコードの例を示す図である。
【図２１】  従来の２次元コードの例を示す図である。
【符号の説明】
１  パーソナルコンピュータ，  ３  表示部，  ２１    LCD，  ２３  CCDビデオカメラ，  ５２  CPU，  ５６  HDD，  ８１  グラフィックチップ，  ８３  LCDコントローラ，    １００  オブジェクト，  １０１  ２次元コード，  ２０２  コード部，  ３０１  ロゴマークセル部
【図１】
0003794463.tif 000007
【図２】
0003794463.tif 000008
【図３】
0003794463.tif 000009
【図４】
0003794463.tif 000010
【図５】
0003794463.tif 000011
【図６】
0003794463.tif 000012
【図７】
0003794463.tif 000013
【図８】
0003794463.tif 000014
【図９】
0003794463.tif 000015
【図１０】
0003794463.tif 000016
【図１１】
0003794463.tif 000017
【図１２】
0003794463.tif 000018
【図１３】
0003794463.tif 000019
【図１４】
0003794463.tif 000020
【図１５】
0003794463.tif 000021
【図１６】
0003794463.tif 000022
【図１７】
0003794463.tif 000023
【図１８】
0003794463.tif 000024
【図１９】
0003794463.tif 000025
【図２０】
0003794463.tif 000026
【図２１】
0003794463.tif 000027