(57)【特許請求の範囲】
【請求項１】
２次元バーコードのパターンを認識する画像処理装置において、
前記２次元バーコードが貼付されたオブジェクトを撮像する撮像手段と、
撮像された画像を記憶する記憶手段と、
記憶された前記画像をディスプレイに表示させるとともに、前記２次元バーコードの探知範囲を示す枠を前記画像に重畳表示させる表示手段と、
ユーザから所定の操作が行われている期間のみ、記憶された前記画像のうち、前記枠内の部分画像を拡大する拡大手段と、
拡大された前記部分画像の中から前記２次元バーコードを探知する探知手段と、
探知された前記２次元バーコードの前記パターンを識別する識別手段と、
識別された前記２次元バーコードの前記パターンに対応して所定の処理を実行する実行手段と
を含む画像処理装置。
【請求項２】
前記探知手段は、記憶された前記画像からも前記２次元バーコードを探知する
請求項１に記載の画像処理装置。
【請求項３】
２次元バーコードのパターンを認識する画像処理装置の画像処理方法において、
前記２次元バーコードが貼付されたオブジェクトを撮像する撮像ステップと、
撮像された画像を記憶する記憶ステップと、
記憶された前記画像をディスプレイに表示させるとともに、前記２次元バーコードの探知範囲を示す枠を前記画像に重畳表示させる表示ステップと、
ユーザから所定の操作が行われている期間のみ、記憶された前記画像のうち、前記枠内の部分画像を拡大する拡大ステップと、
拡大された前記部分画像の中から前記２次元バーコードを探知する探知ステップと、
探知された前記２次元バーコードの前記パターンを識別する識別ステップと、
識別された前記２次元バーコードの前記パターンに対応して所定の処理を実行する実行ステップと
を含む画像処理方法。
【請求項４】
２次元バーコードのパターンを認識する画像処理装置の制御用のプログラムであって、
前記２次元バーコードが貼付されたオブジェクトを撮像する撮像ステップと、
撮像された画像を記憶する記憶ステップと、
記憶された前記画像をディスプレイに表示させるとともに、前記２次元バーコードの探知範囲を示す枠を前記画像に重畳表示させる表示ステップと、
ユーザから所定の操作が行われている期間のみ、記憶された前記画像のうち、前記枠内の部分画像を拡大する拡大ステップと、
拡大された前記部分画像の中から前記２次元バーコードを探知する探知ステップと、
探知された前記２次元バーコードの前記パターンを識別する識別ステップと、
識別された前記２次元バーコードの前記パターンに対応して所定の処理を実行する実行ステップと
を含む処理を画像処理装置のコンピュータに実行させるプログラムが記録されている記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、画像処理装置および方法、並びに記録媒体に関し、特に、２次元バーコードから得られる識別情報や、２次元バーコードが貼付されている位置の情報などの認識情報を取得し、これらの情報に基づいて各種の処理を実行することができるようにした画像処理装置および方法、並びに記録媒体に関する。
【０００２】
【従来の技術】
既に本出願人は、図１に示すような２次元バーコード（以下、２Ｄコードと略記する）のパターンを読み取り、そのパターンに対応した処理を実行するシステムを、例えば特願平１０−１８４３５１号として提案している。
【０００３】
図１に示す例の場合、名刺状のカード（オブジェクト）２００の右側に２Ｄコード２０１が貼付（印刷を含む）されている。２Ｄコード２０１には、図２に示すように、１ブロックを１単位とし、縦方向が９．５ブロック分の長さで、横方向が７ブロック分の長さの長方形の範囲内に、セル部Ａとロゴ部Ｂが１ブロック分離して配置されている。セル部Ａには、縦方向と横方向が共に、７ブロック分の長さの正方形の範囲内に、方形のセルが２次元的にパターン化され配置されている。ロゴ部Ｂには、縦方向が１．５ブロック分の長さで、横方向が７ブロック分の長さの大きな長方形のセルが配置され、そこに、例えば、オブジェクトの名称、あるいは宣伝のためのマーク（ロゴ）などが記載される。
【０００４】
パーソナルコンピュータ１は、ノート型コンピュータであって、表示部３の上端中央部分にはCCD(Charge Coupled Device)ビデオカメラ２３が設けられている。オブジェクト２００上の２Ｄコード２０１は、パーソナルコンピュータ１のCCDビデオカメラ２３により撮像され、その結果得られた画像データから２Ｄコード２０１のパターンが認識されて、そのパターンに対応した所定の処理が実行される。
【０００５】
【発明が解決しようとする課題】
ところで、従来のシステムにおいて、２Ｄコード２０１のパターンを正確に認識させるためには、２Ｄコード２０１とCCDビデオカメラ２３との距離を約１０cmとする必要があり、その距離が１０cmよりも広い場合、２Ｄコード２０１のパターンを正確に認識することができない課題があった。
【０００６】
本発明はこのような状況に鑑みてなされたものであり、撮像した画像を拡大することにより、２次元バーコードの認識率を向上させるようにするものである。
【０００７】
【課題を解決するための手段】
本発明の画像処理装置は、２次元バーコードが貼付されたオブジェクトを撮像する撮像手段と、撮像された画像を記憶する記憶手段と、記憶された画像をディスプレイに表示させるとともに、２次元バーコードの探知範囲を示す枠を画像に重畳表示させる表示手段と、ユーザから所定の操作が行われている期間のみ、記憶された画像のうち、枠内の部分画像を拡大する拡大手段と、拡大された部分画像の中から２次元バーコードを探知する探知手段と、探知された２次元バーコードのパターンを識別する識別手段と、識別された２次元バーコードのパターンに対応して所定の処理を実行する実行手段とを含む。
【０００８】
前記探知手段は、記憶された画像からも２次元バーコードを探知することができる。
【０００９】
本発明の画像処理方法は、２次元バーコードが貼付されたオブジェクトを撮像する撮像ステップと、撮像された画像を記憶する記憶ステップと、記憶された画像をディスプレイに表示させるとともに、２次元バーコードの探知範囲を示す枠を画像に重畳表示させる表示ステップと、ユーザから所定の操作が行われている期間のみ、記憶された画像のうち、枠内の部分画像を拡大する拡大ステップと、拡大された部分画像の中から２次元バーコードを探知する探知ステップと、探知された２次元バーコードのパターンを識別する識別ステップと、識別された２次元バーコードのパターンに対応して所定の処理を実行する実行ステップとを含む。
【００１０】
本発明の記録媒体は、２次元バーコードが貼付されたオブジェクトを撮像する撮像ステップと、撮像された画像を記憶する記憶ステップと、記憶された画像をディスプレイに表示させるとともに、２次元バーコードの探知範囲を示す枠を画像に重畳表示させる表示ステップと、ユーザから所定の操作が行われている期間のみ、記憶された画像のうち、枠内の部分画像を拡大する拡大ステップと、拡大された部分画像の中から２次元バーコードを探知する探知ステップと、探知された２次元バーコードのパターンを識別する識別ステップと、識別された２次元バーコードのパターンに対応して所定の処理を実行する実行ステップとを含む処理を画像処理装置のコンピュータに実行させるプログラムが記録されている。
【００１１】
本発明においては、２次元バーコードが貼付されたオブジェクトが撮像され、撮像された画像が記憶され、記憶された画像がディスプレイに表示されるとともに、２次元バーコードの探知範囲を示す枠が画像に重畳表示される。そして、ユーザから所定の操作が行われている期間のみ、記憶された画像のうち、枠内の部分画像が拡大され、拡大された部分画像の中から２次元バーコードが探知され、探知された２次元バーコードのパターンが識別され、そのパターンに対応して所定の処理が実行される。
【００１２】
【発明の実施の形態】
図３乃至図８は、本発明を適用したノート型パーソナルコンピュータの構成例を示している。このパーソナルコンピュータ１は、ミニノート型のパーソナルコンピュータとされ、基本的に、本体２と、本体２に対して開閉自在とされている表示部３により構成されている。図３は、表示部３を本体２に対して開いた状態を示す外観斜視図、図４は、図３の平面図、図５は、表示部３を本体２に対して閉塞した状態を示す左側側面図、図６は、表示部３を本体２に対して１８０度開いた状態を示す右側側面図、図７は、図５の正面図、図８は、図６の底面図である。
【００１３】
本体２の上面には、各種の文字や記号などを入力するとき操作されるキーボード４が配置され、キーボード４のほぼ中央には、マウスカーソルを移動させるときなどに、ジョイスティックのように操作される、スティック式ポインティングデバイス（以下、スティックと略称する）５が設けられている。左ボタン３１と右ボタン３３は、通常のパーソナルコンピュータにおけるマウスの左ボタンと右ボタンと同様に操作される。センタボタン３２は、カーソルを、スクロールボタンに合わせることなく、スクロールバーを操作するとき使用される。さらに、本体２の上面には、音を出力するスピーカ８と、表示部３に設けられているCCDビデオカメラ２３で撮像するとき操作されるシャッタボタン１０が設けられている。
【００１４】
表示部３の上端部には、ツメ１３が設けられており、図５に示すように、表示部３を本体２に対して閉塞した状態において、ツメ１３に対向する位置における本体２には、ツメ１３が嵌合する孔部６が設けられている。本体２の前面には、スライドレバー７が前面に平行に移動可能に設けられており、スライドレバー７は孔部６に嵌合したツメ１３と係合してロックし、またロック解除することができるようになっている。ロックを解除することにより、表示部３を本体２に対して回動することができる。ツメ１３の隣りには、マイクロホン２４が取り付けられている。このマイクロホン２４は、図８にも示すように、背面からの音も収音できる。
【００１５】
本体２の正面にはまた、プログラマブルパワーキー(PPK)９が設けられている。本体２の右側面には、図６に示すように、排気孔１１が設けられており、本体２の前面下部には、図７に示すように、吸気孔１４が設けられている。さらに、排気孔１１の右側には、PCMCIA(Personal Computer Memory Card International Association)カード（PCカード）を挿入するためのスロット１２が設けられている。
【００１６】
表示部３の正面には、画像を表示するLCD(Liquid Crystal Display)２１が設けられており、その上端部には、撮像部２２が、表示部３に対して回動自在に設けられている。すなわち、この撮像部２２は、LCD２１と同一の方向と、その逆の方向（背面の方向）との間の１８０度の範囲の任意の位置に回動することができる。撮像部２２には、CCDビデオカメラ２３が取り付けられている。
【００１７】
表示部３の下側の本体側には、電源ランプPL、電池ランプBL、メッセージランプML、その他のLED（発光ダイオード）よりなるランプが設けられている。なお、本体左側側面には、図５に示すように、電源スイッチ４０が設けられている。また、表示部３の上側面には、図７に示すように、CCDビデオカメラ２３のフォーカスを調整する調整リング２５が設けられている。さらに、本体１の底部には、図８に示すように、本体２内に増設メモリを取り付けるための開口部を被覆する蓋２６、蓋２６のロックツメを外すためのピンを挿入する小孔４１が設けられている。
【００１８】
図９は、パーソナルコンピュータ１の内部の構成を表している。内部バス５１には、CPU(Central Processing Unit)５２、必要に応じて挿入されるＰＣカード５３、RAM(Random Access Memory)５４、およびグラフィックチップ６４が接続されている。内部バス５１は、外部バス５５に接続されており、外部バス５５には、ハードディスクドライブ(HDD)５６、Ｉ／Ｏ（入出力）コントローラ５７、キーボードコントローラ５８、スティックコントローラ５９、サウンドチップ６０、モデム６１、LCDコントローラ６２などが接続されている。
【００１９】
CPU５２は、各種の機能を統括するコントローラであり、ＰＣカード５３は、オプションの機能を付加するとき適宜装着される。RAM５４の中には、起動が完了した時点において、例えば、ＯＳ５６Ｃ（基本プログラムソフトウェア）、アプリケーションプログラムソフトウェア等が、HDD５６から転送され、記憶される。
【００２０】
ＯＳ５６Ｃ（基本プログラムソフトウェア）は、Windows９８（商標）に代表される、コンピュータの基本的な動作を制御するものである。
【００２１】
一方、外部バス５５側のハードディスクドライブ（HDD）５６には、図１０に示すように、電子メールプログラム５６Ａ、オートパイロットプログラム５６Ｂ、オペレーションシステムソフトウェア(OS)５６Ｃ、２次元バーコードデータベース（以下、２Ｄコードデータベースと略記する）５６Ｄ、ファインダアプリケーションプログラム（以下、FAプログラムと略記する）５６Ｅ、２次元バーコードアソシエートアプリケーションプログラム（以下、２Ｄコードプログラムと略記する）５６Ｆ、および管理ツールプログラム５６Ｇが記憶されている。
【００２２】
２Ｄコードデータベース５６Ｄには、２Ｄコードの識別番号（以下、２ＤコードIDと称する）の他、２Ｄコードに関連して設定される、実行ファイル（プログラム）（例えば、.exe、.comなどの拡張子を有するファイル）またはドキュメントファイル（例えば、.txt、.html、.jpgなどの拡張子を有するファイル）の名前が記憶されている。この実行ファイルは、２Ｄコードが識別されたとき、それに対応して自動的に起動されるように設定された実行ファイル（以下、２Ｄコード関連実行ファイルと記述する）である。また、ドキュメントファイルは、２Ｄコードが識別されたとき、それに対応して自動的に開かれるように設定されたドキュメントファイル（以下、２Ｄコード関連ドキュメントファイルと記述する）である。なお、以下においては、２Ｄコード関連実行ファイルと２Ｄコード関連ドキュメントファイルを特に区別する必要がない場合、両者をまとめて、単に、２Ｄコード関連ファイルと記述する。
【００２３】
２Ｄコードデータベース５６Ｄにはまた、２Ｄコード関連ファイルの内容を説明する情報（以下、２Ｄコードメモ情報と記述する）や２Ｄコード関連ファイルのタイトルなど、２Ｄコードに付随する情報が記憶されている。なお、この例の場合、２Ｄコードデータベース５６Ｄは、DDL(Dynamic Link Library)とされる。
【００２４】
FAプログラム５６Ｅは、例えば、グラフィックチップ８１のVRAM８１Ａに記憶されている画像データから２Ｄコードの部分の画像データを抽出し、抽出した２Ｄコードに対応する２Ｄコード関連ファイルを自動的に実行させるプログラムである。FAプログラム５６Ｅはまた、２Ｄコードプログラム５６Ｆを開発するためのAPI(Application Programming Interface)を有している。
【００２５】
２Ｄコードプログラム５６Ｆは、FAプログラム５６ＥのAPIを介して、FAプログラム５６Ｅとデータの授受を行うことができる、２Ｄコード関連実行ファイルである。
【００２６】
管理ツールプログラム５６Ｇは、FAプログラム５６Ｅおよび２Ｄコードプログラム５６Ｆが実行される上において必要なデータを登録するためのプログラムである。管理ツールプログラム５６Ｇまたは、所定のGUI(Graphical User Interface)を備えている。
【００２７】
ハードディスクドライブ５６内のＯＳ５６Ｃ、FAプログラム５６Ｅ等は、例えば、電源スイッチ４０が操作されＯＳ５６Ｃが起動（ブートアップ）され、さらにFAプログラム５６Ｅが起動される処理の過程で、これらのプログラムがRAM５４内に順次転送され、記憶される。
【００２８】
図９に戻り、Ｉ／Ｏコントローラ５７は、マイクロコントローラ、Ｉ／Ｏインタフェース、CPU、RAM、ROMなどにより構成されている。Ｉ／Ｏコントローラ５７は、電源ランプＰＬ、電池ランプＢＬ、メッセージランプＭＬなどのランプを駆動する。また、Ｉ／Ｏコントローラ５７は、電源スイッチ４０、プログラマブルパワーキー９、半押しスイッチ６７、全押しスイッチ６８、反転スイッチ６９などの操作を検知する。
【００２９】
電源スイッチ４０は、電源をオンまたはオフするとき操作される。半押しスイッチ６７は、シャッタボタン１０が半押し状態にされたときオンされ、全押しスイッチ６８は、シャッタボタン１０が全押し状態にされたときオンされる。反転スイッチ６９は、撮像部２２が１８０度回転されたとき（CCDビデオカメラ２３がLCD２１の反対側を撮像する方向に回転されたとき）、オンされる。RTC(Real-Time Clock)７０は、常時、計時動作を実行し、現在時刻を、Ｉ／Ｏコントローラ５７に出力している。また、Ｉ／Ｏコントローラ５７は、バッテリ７１によりバックアップされている。
【００３０】
外部バス５５に接続されているキーボードコントローラ５８は、キーボード４からの入力をコントロールする。スティックコントローラ５９は、スティック５の入力を制御する。サウンドチップ６０は、マイクロホン２４からの入力を取り込んだり、内蔵スピーカ８に対して音声信号を供給する。モデム６１は、公衆電話回線９０、インターネットサービスプロバイダ９１を介して、インターネットなどの通信ネットワーク９２、メールサーバ９３、WWWサーバ９４などに接続することができる。
【００３１】
内部バス５１に接続されているグラフィックチップ６４には、CCDビデオカメラ２３で取り込んだ画像データが、処理部６６で処理された後、入力される。グラフィックチップ６４は、処理部６６を介してCCDビデオカメラ２３より入力されたビデオデータを、内蔵するVRAM６５に記憶させ、適宜、これを読み出して、LCDコントローラ６２に出力する。LCDコントローラ６２は、グラフィックチップ６４より供給された画像データをLCD２１に出力し、表示させる。バックライト６３は、LCD２１を後方から照明する。
【００３２】
次に、FAプログラム５６Ｅによる２Ｄコード認識処理について、図１１のフローチャートを参照して説明する。この２Ｄコード認識処理は、ユーザによる所定のプログラム起動操作に対応して、ハードディスクドライブ５６に記憶されているFAプログラム５６ＥがRAM５４に転送されて記憶され、CPU５２により実行されることにより開始される。
【００３３】
ユーザがプログラム起動操作を実行した後、オブジェクト２００の２Ｄコード２０１が貼付されている面をCCDビデオカメラ２３に向けると、その画像がCCDビデオカメラ２３により撮像されて処理部６６で所定の処理が施される。ステップＳ１において、FAプログラム５６Ｅは、処理部６６で処理されて、グラフィックチップ６４のVRAM６５に描画された画像データの画像に、通常モードの画像（２Ｄコード２０１の位置を示す照準の画像）を重畳した画像をファインダウィンドウ（図１３、ただし同図はハイパサーチモードを示している）として、LCD２１に表示させる。
【００３４】
ステップＳ２において、FAプログラム５６Ｅは、ユーザにより所定のプログラム終了操作が実行されたか否かを判定し、終了操作が実行されていないと判定した場合、ステップＳ３に進む。
【００３５】
ステップＳ３において、FAプログラム５６Ｅは、ファインダウィンドウ（３２０×２４０画素）全体（図１２(A)）の画像データをキャプチャする（画像データをVRAM６５からRAM５４に転送する）。
【００３６】
ステップＳ４において、FAプログラム５６Ｅは、シャッタボタン１０が押下されているか否か（ハイパサーチモードに設定されたか否か）を判定し、シャッタボタン１０が押下されていると判定した場合、ステップＳ５に進む。ステップＳ５において、FAプログラム５６Ｅは、ファインダウィンドウにハイパサーチモードに設定された旨を示す画像を表示する。すなわち、FAプログラム５６Ｅは、図１３に示すように、ファインダウィンドウの中央部分に、画像を拡大して２Ｄコード２０１を探知する範囲を示す矩形の枠（８０×６０画素、図１２(B)）と、右下部分に「Hyper Search」の文字を表示する。このような矩形の枠を表示することにより、ユーザが２Ｄコード２０１を適切な位置に調整することを容易とする。
【００３７】
ステップＳ６において、FAプログラム５６Ｅは、ファインダウィンドウの中央部分（８０×６０画素）の画像データを、縦横それぞれ４倍に拡大した画像（３２０×２４０画素、図１２(C)）を生成する。
【００３８】
ステップＳ７において、FAプログラム５６Ｅは、３２０×２４０画素の画像（ステップＳ３でキャプチャした画像、またはステップＳ６で拡大した画像）の中から２Ｄコード２０１を探知する。
【００３９】
ステップＳ８において、FAプログラム５６Ｅは、ステップＳ７で２Ｄコード２０１を探知できたか否かを判定し、探知できていないと判定した場合、その旨を表示して、ユーザに２Ｄコード２０１が貼付されたオブジェクト２００のCCDビデオカメラ２３に対する距離や角度を調整するように促す。そして、ステップＳ１に戻り、それ以降の処理を繰り返す。その後、２Ｄコード２０１を探知できたと判定された場合、ステップＳ９に進む。
【００４０】
ステップＳ９において、FAプログラム５６Ｅは、２Ｄコード２０１のパターンを識別し、パターンが示すID（２ＤコードID）と、ファインダウィンドウにおける２Ｄコード２０１の４つの頂点Ｐi（ｉ＝０，１，２，３）の位置を示す２次元座標（Ｐix，Ｐiy）とCCDビデオカメラ２３の焦点距離（以下、適宜、focalとも記述する）を取得する。ただし、２Ｄコード２０１の左上の頂点をＰ0とし、右上の頂点をＰ1とし、左下の頂点をＰ2とし、右下の頂点をＰ3とする。
【００４１】
ステップＳ１０において、FAプログラム５６Ｅは、取得した２ＤコードIDが、既に登録済みであるか否か（ハードディスクドライブ５６に格納されている２Ｄコードデータベース５６Ｄに、ステップＳ９で取得した２ＤコードIDがあるか否か）を判定し、既に登録済みであると判定した場合、ステップＳ１１に進む。ステップＳ１１において、FAプログラム５６Ｅは、登録されている処理を実行する。例えば、FAプログラム５６Ｅは、２ＤコードIDに対応する２Ｄコードプログラム５６Ｆとしての３次元オブジェクト表示アプリケーションプログラム（以下、３Ｄアプリケーションと略記する）を起動する。
【００４２】
なお、３Ｄアプリケーションは、ファインダウィンドウ上に３次元オブジェクトを表示させるアプリケーションプログラムであり、引数として供給される２ＤコードIDに対応付けて、表示する３次元オブジェクトデータ（Microsoft Direct3Dで使用される標準的なファイルフォーマットであるＸファイルとして記述されたもの）、再生するサウンドデータ（WAVEファイル）、ファインダウィンドウ上に３次元オブジェクトを表示させるXYZ座標（ファインダウィンドウ上の２Ｄコード２０１の所定の部分を原点とした座標系）、アニメーションの速度等の情報を管理している。
【００４３】
３Ｄアプリケーションの処理について、図１４のフローチャートを参照して説明する。ステップＳ２１において、３Ｄアプリケーションは、FAプログラム５６Ｅから供給される引数としての２ＤコードIDを受領する。ステップＳ２２において、３Ｄアプリケーションは、ファインダウィンドウ上に３Ｄオブジェクト表示用ウィンドウを生成する。
【００４４】
ステップＳ２３において、３Ｄアプリケーションは、ステップＳ２１で供給された２ＤコードIDに対応する３次元オブジェクトデータ等を読み出す。ステップＳ２４において、３Ｄアプリケーションは、FAプログラム５６Ｅから供給されるファインダウィンドウ上の２Ｄコード２０１の２次元座標（Ｐix，Ｐiy）とCCDビデオカメラ２３の焦点距離(focal)を受領する。
【００４５】
ステップＳ２５において、３Ｄアプリケーションは、ステップＳ２４で受領した、ファインダウィンドウ上の２Ｄコード２０１の２次元座標を用いて、３Ｄオブジェクトを表示させるファインダウィンドウ上の座標を算出する。
【００４６】
具体的には、実３次元座標系における２Ｄコード２０１の４つの頂点の座標をωiとし、実３次元空間の−Ｚ軸の方向を向くCCDビデオカメラ２３のレンズ面を原点とするカメラ座標系における２Ｄコード２０１の４つの頂点の座標をＣiとし、ファインダウィンドウ上における（以下、ファインダウィンドウ座標系と記述する）２Ｄコード２０１の４つの頂点の座標をＰi（ｉ＝０，１，２，３）とした場合、実３次元座標系の座標ωiとカメラ座標系における座標Ｃiは次式（１）のように関係付けられる。
【００４７】
Ｃi＝Ｒ*ωi＋Ｔ                                          ・・・（１）
ここで、Ｒは実３次元座標系に対するカメラ座標系の回転を表す回転行列であり、ＴはCCDビデオカメラ２３の移動ベクトル（実３次元座標系の原点とカメラ座標系の原点の距離）である。まず、この回転行列Ｒと移動ベクトルＴを演算する。
【００４８】
ファインダウィンドウ座標系の座標Ｐiとカメラ座標系における座標Ｃiは次式（２）に示す関係である。
【００４９】
Ｐix＝−focal*Ｃix／Ｃiz
Ｐiy＝−focal*Ｃiy／Ｃiz
Ｐiz＝−focal*Ｃiz／Ｃiz＝−focal                        ・・・（２）
ここで、ベクトルω30，ω20，ω10を実３次元座標系の座標ωiを用い、次式（３）に示すように定義する。
【００５０】
ω30＝ω3−ω0
ω20＝ω2−ω0
ω10＝ω1−ω0                                           ・・・（３）
なお、座標ω0，ω1，ω2，ω3は同一平面上に存在するので、
ω30＝ｓω10＋ｔω20                           ・・・（４）
となるｓおよびｔが存在する。ただし、いまの場合、座標ω0，ω1，ω2，ω3は矩形の４頂点の座標であるのでｓ＝ｔ＝１である。
【００５１】
また、ベクトルω30，ω20，ω10は、カメラ座標系の座標Ｃi、およびベクトルＣ30，Ｃ20，Ｃ10を用いて表すことができる。
【００５２】
ω30＝Ｃ3−Ｃ0＝Ｃ30
ω20＝Ｃ2−Ｃ0＝Ｃ20
ω10＝Ｃ1−Ｃ0＝Ｃ10                                     ・・・（５）
ところで、カメラ座標系における座標Ｃiは、次式（６）に示すように、ファインダウィンドウ座標系の座標Ｐiのｋi（スカラ量）倍として表すことができる。
【００５３】
Ｃi＝ｋi*Ｐi （ｉ＝０，１，２，３）                      ・・・（６）
ここで、式（４）に式（５）を代入して次式（７）を得る。
【００５４】
Ｃ3−Ｃ0＝ｓ（Ｃ1−Ｃ0）＋ｔ（Ｃ2−Ｃ0）                  ・・・（７）
式（７）に式（６）を代入して次式（８）を得る。
【００５５】
ｋ3*Ｐ3−ｋ0*Ｐ0＝ｓ（ｋ1*Ｐ1−ｋ0*Ｐ0）＋ｔ（ｋ2*Ｐ2−ｋ0*Ｐ0）・・・（８）
式（８）をＰ3について解けば、
Ｐ0ｋ0（１−ｓ−ｔ）／ｋ3＋Ｐ1ｓ*ｋ1／ｋ3＋Ｐ2ｔ*ｋ2／ｋ3＝Ｐ3・・・（９）
となる。
【００５６】
式（９）を行列式で表記すると次式（１０）となる。
【００５７】
【数１】
0004269406.tif 000002
0004269406.tif 000003
ここで、式（１０）の左辺の（Ｐ0 Ｐ1 Ｐ2）をＶとおき、その逆行列をＶ−１を式（１０）の両辺に左側から乗算すれば、次式（１１）を得る。
【数２】
0004269406.tif 000004
【００５８】
・・・（１１）
さらに、式（１１）の右辺のＶ−１*Ｐ3を（ａ0 ａ1 ａ2）とおけば、次式（１２）を得る。
【００５９】
ｋ0＝ａ0*ｋ3／（１−ｓ−ｔ）
ｋ1＝ａ1*ｋ3／ｓ
ｋ2＝ａ2*ｋ3／ｔ                                       ・・・（１２）
ところで、｜ω30｜は、２Ｄコード２０１の対角線の長さであり、
｜ω30｜＝｜ｋ3*Ｐ3−ｋ0*Ｐ0｜                          ・・・（１３）
であるので、式（１３）の右辺のｋ0に式（１２）を適用すれば、
0004269406.tif 000005
を得る。
【００６０】
式（１４）の｜ω30｜および｜Ｐ3−ａ0*Ｐ0／（１−ｓ−ｔ）｜の値は既知であるので、スカラ量ｋ3を求めることができる。さらに、得られたスカラ量ｋ3を式（１２）に代入して、スカラ量ｋ0，ｋ1，ｋ2を得る。
【００６１】
得られたスカラ量ｋi（ｉ＝０，１，２，３）を式（６）に代入してカメラ座標系の座標Ｃi（ｉ＝０，１，２，３）を得る。
【００６２】
ここで、回転行列Ｒは、ベクトルω30，ω10を、それぞれ、ベクトルＣ30，Ｃ10に変換する行列として演算できる。また、移動ベクトルＴは、式（１）より、
Ｔ＝Σ（Ｃｉ−Ｒ*ωｉ）／４
として演算できる。
【００６３】
以上のようにして求めた回転行列Ｒおよび移動ベクトルＴを用い、実３次元座標系における座標ωiをカメラ座標系の３次元座標に変換し、さらに、ファインダウィンドウ座標系における座標Ｐiを算出して、図１４のステップＳ２６に進む。
【００６４】
ステップＳ２６において、３Ｄアプリケーションは、図１５に示すように、ステップＳ２５で算出したファインダウィンドウ座標系の座標に、対応する３Ｄオブジェクトを表示する。
【００６５】
このような３Ｄアプリケーション処理により、あたかも３Ｄオブジェクトがファインダウィンドウに表示されたカメラ映像の中に存在するかのような合成画像を表示できる。
【００６６】
また、表示させる３Ｄオブジェクトは、Micrisoft Direct3Dで使用される標準のファイルフォーマット（Ｘファイル）であるので、ユーザが任意のソフトウェアを用いて作成することが可能である。また、３Ｄのアニメーションもサポートされている。さらに、同時に、サウンドファイル（WAVEファイル）を指定して再生することができるので、ファインダウィンドウ内の３Ｄオブジェクトが話をしているかのような表現を実現することが可能となる。
【００６７】
図１１の説明に戻る。ステップＳ１０において、取得した２ＤコードIDが、既に登録済みではないと判定された場合、ステップＳ１２に進み、FAプログラム５６Ｅは、その２ＤコードIDに所定の処理を対応付ける設定の入力を受け付ける処理を実行して、ステップＳ１に戻る。
【００６８】
なお、ステップＳ２において、FAプログラム５６Ｅは、ユーザにより終了操作が実行されたと判定した場合、２Ｄコード認識処理を終了する。
【００６９】
また、ステップＳ４において、FAプログラム５６Ｅは、シャッタボタン１０が押下されていないと判定した場合、ステップＳ５，Ｓ６をスキップする。この場合、ステップＳ７においては、ステップＳ３でキャプチャされた画像から２Ｄコードが探知される。
【００７０】
なお、以上の説明では、ステップＳ４におけるシャッタボタン１０の押下が半押しであるか、または全押しであるかについては言及していないが、例えば、シャッタボタン１０が半押し状態とされたときにハイパサーチモードとし、全押しされたときに２Ｄコードを探知するようにしてもよい。
【００７１】
以上のように、キャプチャした画像の中央部分を拡大して２Ｄコード２０１を探知することで、２Ｄコード２０１を認識可能なCCDビデオカメラ２３との距離を、画像を拡大しない場合の約１０cmから、２倍の約２０cmに向上させることが可能となる。
【００７２】
なお、本実施の形態では、キャプチャした画像を拡大する処理はCPU５２に大きな負担をかけるので、シャッタボタン１０が押下されたときだけ拡大処理を実行するようにした。これにより、必要なとき（通常モードでは２Ｄコードを認識できないとき）だけ認識率を向上させることが可能である。
【００７３】
ところで、３Ｄアプリケーション処理の応用としては、次のようなものが考えられる。
【００７４】
例えば、テレビジョン放送や漫画雑誌の人気キャラクタの絵および２Ｄコードが印刷されたトレーディングカードと、そのキャラクタのアニメーションデータをセットで販売する。当該トレーディングカードの２Ｄコードが認識されると当該アニメーションが表示されるようにする。
【００７５】
例えば、頁の隅に２Ｄコードが印刷された児童向けの絵本と、当該絵本の登場人物の３Ｄ画像データや台詞等のサウンドファイルをセットで販売する。当該２Ｄコードが認識されると絵本の頁上に登場人物の３Ｄ画像が表示されて台詞が再生されるようにすることで、当該絵本の登場人物があたかも絵本の中から飛び出すような視覚効果が表現される。さらに、登場人物のアニメーションを表示させることにより、絵本のストーリを進行させるようにしてもよい。
【００７６】
例えば、２Ｄコードを様々な角度で認識させ、その角度に対応して３Ｄオブジェクトを表示する角度を変化させるようにしてもよい。そのような特徴を利用して、化学における分子構造モデルを表示させる教材に適用することも可能である。
【００７７】
例えば、２Ｄコードを年賀状や挨拶状に適用してもよい。すなわち、任意のメッセージ表現する３Ｄオブジェクトを任意のアプリケーションプログラムで作成し、そのデータを予め年賀状等を送る先方に予め供給し、その後、２Ｄコードを印刷した年賀状等を送る。当該年賀状等の２Ｄコードが認識されると当該３Ｄオブジェクトが表示されるようにする。
【００７８】
上述した一連の処理は、ハードウェアにより実行させることもできるが、ソフトウェアにより実行させることもできる。一連の処理をソフトウェアにより実行させる場合には、そのソフトウェアを構成するプログラムが、専用のハードウェアとしての画像処理装置に組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどにインストールされる。
【００７９】
次に、図１６を参照して、上述した一連の処理を実行するプログラムをコンピュータにインストールし、コンピュータによって実行可能な状態とするために用いられる媒体について説明する。
【００８０】
プログラムは、図１６(A)に示すように、コンピュータ１０１に内蔵されている記録媒体としてのハードディスク１０２（図９のハードディスクドライブ５６に内蔵されているハードディスクに対応する）や半導体メモリ１０３に予めインストールした状態でユーザに提供することができる。
【００８１】
あるいはまた、プログラムは、図１６(B)に示すように、フロッピーディスク１１１、CD-ROM(Compact Disc-Read Only Memory)１１２、ＭＯ(Magneto Optical)ディスク１１３、DVD(Digital Versatile Disc)１１４、磁気ディスク１１５、半導体メモリ１１６などの記録媒体に、一時的あるいは永続的に格納し、パッケージソフトウエアとして提供することができる。
【００８２】
さらに、プログラムは、図１６(C)に示すように、ダウンロードサイト１２１から、無線で衛星１２２を介して、コンピュータ１２３に転送したり、ローカルエリアネットワーク、インターネットといったネットワーク１３１を介して、有線または無線でコンピュータ１２３に転送し、コンピュータ１２３において、内蔵するハードディスクなどに格納させることができる。
【００８３】
本明細書における媒体とは、これら全ての媒体を含む広義の概念を意味するものである。
【００８４】
また、本明細書において、媒体により提供されるプログラムを記述するステップは、記載された順序に従って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
【００８５】
なお、本明細書において、システムとは、複数の装置により構成される装置全体を表すものである。
【００８６】
【発明の効果】
以上のように、本発明によれば、２次元バーコードのパターンの認識率を向上させることが可能となる。
【図面の簡単な説明】
【図１】２次元バーコードを認識するシステムについて説明するための図である。
【図２】２次元バーコードの仕様を説明する図である。
【図３】本発明を適用したパーソナルコンピュータ１の斜視図である。
【図４】図１のパーソナルコンピュータ１の平面図である。
【図５】図１のパーソナルコンピュータ１の側面図である。
【図６】図１のパーソナルコンピュータ１の側面図である。
【図７】図１のパーソナルコンピュータ１の正面図である。
【図８】図１のパーソナルコンピュータ１の底面図である。
【図９】図１のパーソナルコンピュータ１の電気的な構成を示すブロック図である。
【図１０】図９のHDD５６に記録されているデータを示す図である。
【図１１】２Ｄコード認識処理を説明するためのフローチャートである。
【図１２】ハイパサーチモードを説明するための図である。
【図１３】ハイパサーチモードにおけるファインダウィンドウをLCD２１に表示した中間調画像の写真である。
【図１４】３Ｄアプリケーション処理を説明するためのフローチャートである。
【図１５】ファインダウィンドウ上に３Ｄオブジェクトを合成した画像をLCD２１に表示した中間調画像の写真である。
【図１６】プログラムをコンピュータにインストールし、実行可能な状態とするために用いられる媒体について説明するための図である。
【符号の説明】
１  パーソナルコンピュータ，  １０  シャッタボタン，  ２３  CCDビデオカメラ，  ５２  CPU，  ５６  HDD，  ５６Ｅ  ファインダアプリケーションプログラム，  ５６Ｆ  ２次元バーコードアソシエートアプリケーションプログラム，  ２００  オブジェクト，  ２０１  ２次元バーコード
【図１】
0004269406.tif 000006
【図２】
0004269406.tif 000007
【図３】
0004269406.tif 000008
【図４】
0004269406.tif 000009
【図５】
0004269406.tif 000010
【図６】
0004269406.tif 000011
【図７】
0004269406.tif 000012
【図８】
0004269406.tif 000013
【図９】
0004269406.tif 000014
【図１０】
0004269406.tif 000015
【図１１】
0004269406.tif 000016
【図１２】
0004269406.tif 000017
【図１３】
0004269406.tif 000018
【図１４】
0004269406.tif 000019
【図１５】
0004269406.tif 000020
【図１６】
0004269406.tif 000021