JP3786167B2 - 2次元コード認識処理方法、2次元コード認識処理装置、および2次元コード認識処理プログラム格納媒体 - Google Patents
2次元コード認識処理方法、2次元コード認識処理装置、および2次元コード認識処理プログラム格納媒体 Download PDFInfo
- Publication number
- JP3786167B2 JP3786167B2 JP24519499A JP24519499A JP3786167B2 JP 3786167 B2 JP3786167 B2 JP 3786167B2 JP 24519499 A JP24519499 A JP 24519499A JP 24519499 A JP24519499 A JP 24519499A JP 3786167 B2 JP3786167 B2 JP 3786167B2
- Authority
- JP
- Japan
- Prior art keywords
- dimensional code
- code
- cell
- recognition processing
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Information Transfer Between Computers (AREA)
Description
【発明の属する技術分野】
本発明は、2次元コード認識処理方法、2次元コード認識処理装置、および2次元コード認識処理プログラム格納媒体に関し、特に、撮像された複数の2次元コードの組み合わせからなる拡張されたコードデータを効率よくかつ正確に認識することができるようにした2次元コード認識処理方法、2次元コード認識処理装置、および2次元コード認識処理プログラム格納媒体に関する。
【0002】
【従来の技術】
従来から、物品の種類や状態などを示す英数文字をバーコード化し、例えば、物品に貼付しておき、その貼付されたバーコードを読み取って、物品の種類や状態などの情報を取得するバーコードシステムが、多くの産業分野に普及している。
【0003】
この種のバーコードにおいて、特に1次元バーコードと呼ばれるものの一例を示せば、図23の通りである。この図において、1次元バーコード500は、太さの異なるバー(黒色の棒状部分)と、スペース(空白部分)の組み合わせからなるコード部501と、このコード部501にコード化されているコードを示すID(識別番号)部502とから構成されている。そして、ID部502には、コード部501にコード化されている英数文字が可読情報として表示されている。このような1次元バーコード500が、バーコードスキャナと呼ばれる光学的認識装置によって読み取られるようになっている。
【0004】
【発明が解決しようとする課題】
ところで、上述した1次元バーコード500を読み取る1つの方法として、CCDビデオカメラにより読み取る方法が挙げられるが、例えば、コード化される情報量の増大に伴って、バーの配列が長くなると、CCDビデオカメラによる1次元バーコード500の読み取りが困難になる。
【0005】
そこで、コード化される情報が多くなった場合においても、ビデオカメラによる読み取りを可能にするために、1次元バーコード500のバーに代えて、図24に示すような複数の黒色の方形セルが所定の配列規則に従って2次元配置されたコード部601と、コード部601にコード化されているコードを示すID部602とから構成される2次元コード600が種々提案されている。
【0006】
これによれば、情報が2次元的にコード化されることより、より多くの情報量をコード化することができ、1次元バーコード500に比べ、より多くの情報がコード化されていても、ビデオカメラによる読み取りが可能となる。
【0007】
しかしながら、2次元コード600は、ビデオカメラによって撮像された画像データから2次元コード600を認識する際に、ゴミ、汚れ、その他の2次元コード600以外の画像との識別が困難となり、正確にコードデータを認識することができないという課題があった。
【0008】
また、従来は、単一の2次元コード600に割り当てられたコードデータのみが利用可能であり、利用可能な情報量に制限があったため、応用範囲も限られていた。
【0009】
本発明はこのような状況に鑑みてなされたものであり、複数の2次元コードの組み合わせからなる拡張されたコードデータを効率よくかつ正確に認識することができるようにするものである。
【0010】
【発明を解決するための手段】
請求項1に記載の2次元コード認識処理方法は、2次元コードを撮像した結果得られる画像情報から、2次元コードに割り当てられたコードデータを認識する認識処理ステップと、認識処理ステップによって、時間を隔てて順次複数のコードデータが認識された場合、もしくは、同一画像情報から複数のコードデータが認識された場合、これら複数のコードデータを連結して、拡張されたコードデータを生成する連結処理ステップとを含み、認識処理ステップは、画像情報から、所定の閾値に基づいて2値化データを生成する2値化処理ステップと、2値化処理ステップの処理で生成された2値化データに基づいて、2次元コードを認識する上で基準となるセルを検出するセル検出処理ステップと、2値化処理ステップの処理で生成された2値化データに基づいて、セル検出処理ステップの処理で検出された2次元コードを認識する上で基準となるセルに対応する所定の探索範囲内に存在する、2次元コードの領域を特定するのに基本となるセルを決定する基本セル決定ステップと、基本となるセルによって一意に定まる範囲を、2次元コードの領域が撮像面に対向して撮像された場合に得られる範囲に変換する変換ステップと、2値化処理ステップの処理で生成された2値化データに基づいて、変換ステップの処理で変換された範囲に存在する2次元コードに割り当てられたコードデータを検出するコードデータ検出処理ステップとを含むことを特徴とする。
【0011】
請求項6に記載の2次元コード認識処理装置は、前記2次元コードを撮像した結果得られる画像情報から、前記2次元コードに割り当てられたコードデータを認識する認識処理ステップと、前記認識処理ステップによって、時間を隔てて順次複数のコードデータが認識された場合、もしくは、同一画像情報から複数のコードデータが認識された場合、これら複数のコードデータを連結して、拡張されたコードデータを生成する連結処理ステップとを含み、前記認識処理手段は、前記画像情報から、所定の閾値に基づいて2値化データを生成する2値化処理手段と、前記2値化処理手段により生成された前記2値化データに基づいて、前記2次元コードを認識する上で基準となるセルを検出するセル検出処理手段と、前記2値化処理手段により生成された前記2値化データに基づいて、前記セル検出処理手段により検出された前記2次元コードを認識する上で基準となるセルに対応する所定の探索範囲内に存在する、前記2次元コードの領域を特定するのに基本となるセルを決定する基本セル決定手段と、前記基本となるセルによって一意に定まる範囲を、前記2次元コードの領域が撮像面に対向して撮像された場合に得られる範囲に変換する変換手段と、前記2値化処理手段により生成された前記2値化データに基づいて、前記変換手段により変換された範囲に存在する前記2次元コードに割り当てられたコードデータを検出するコードデータ検出処理手段とを含むことを特徴とする。
【0012】
請求項7に記載の2次元コード認識処理プログラム格納媒体のプログラムは、2次元コードを撮像した結果得られる画像情報から、2次元コードに割り当てられたコードデータを認識する認識処理ステップと、認識処理ステップによって、時間を隔てて順次複数のコードデータが認識された場合、もしくは、同一画像情報から複数のコードデータが認識された場合、これら複数のコードデータを連結して、拡張されたコードデータを生成する連結処理ステップとを含み、認識処理ステップは、画像情報から、所定の閾値に基づいて2値化データを生成する2値化処理ステップと、2値化処理ステップの処理で生成された2値化データに基づいて、2次元コードを認識する上で基準となるセルを検出するセル検出処理ステップと、2値化処理ステップの処理で生成された2値化データに基づいて、セル検出処理ステップの処理で検出された2次元コードを認識する上で基準となるセルに対応する所定の探索範囲内に存在する、2次元コードの領域を特定するのに基本となるセルを決定する基本セル決定ステップと、基本となるセルによって一意に定まる範囲を、2次元コードの領域が撮像面に対向して撮像された場合に得られる範囲に変換する変換ステップと、2値化処理ステップの処理で生成された2値化データに基づいて、変換ステップの処理で変換された範囲に存在する2次元コードに割り当てられたコードデータを検出するコードデータ検出処理ステップとを含むことを特徴とする。
【0013】
請求項1に記載の2次元コード認識方法、請求項6に記載の2次元コード認識装置、および請求項7に記載の2次元コード認識処理プログラム格納媒体のプログラムにおいては、2次元コードを撮像した結果得られる画像情報から、2次元コードに割り当てられたコードデータが認識され、時間を隔てて順次複数のコードデータが認識された場合、もしくは、同一画像情報から複数のコードデータが認識された場合、これら複数のコードデータを連結して、拡張されたコードデータが生成され、2次元コードを撮像した結果得られる画像情報から、2次元コードに割り当てられたコードデータが認識される際、画像情報から、所定の閾値に基づいて2値化データが生成され、生成された2値化データに基づいて、2次元コードを認識する上で基準となるセルが検出され、2値化データに基づいて、2次元コードを認識する上で基準となるセルに対応する所定の探索範囲内に存在する、2次元コードの領域を特定するのに基本となるセルが決定され、基本となるセルによって一意に定まる範囲が、2次元コードの領域が撮像面に対向して撮像された場合に得られる範囲に変換され、生成された2値化データに基づいて、変換された範囲に存在する2次元コードに割り当てられたコードデータが検出される。
【0014】
【発明の実施の形態】
以下に本発明の実施の形態を説明する。
【0015】
図1乃至図6は、本発明を適用した携帯型パーソナルコンピュータの構成例を表している。このパーソナルコンピュータ1は、ミニノート型のパーソナルコンピュータとされ、基本的に、本体2と、本体2に対して開閉自在とされている表示部3により構成されている。図1は、表示部3を本体2に対して開いた状態を示す外観斜視図、図2は、図1の平面図、図3は、表示部3を本体2に対して閉塞した状態を示す左側側面図、図4は、表示部3を本体2に対して180度開いた状態を示す右側側面図、図5は、図3の正面図、図6は、図4の底面図である。
【0016】
本体2には、各種の文字や記号などを入力するとき操作されるキーボード4、マウスカーソルを移動させるときなどに操作されるスティック式ポインティングデバイス5が、その上面に設けられている。また、本体2の上面には、音を出力するスピーカ8と、表示部3に設けられているCCDビデオカメラ23で撮像するとき操作されるシャッタボタン10がさらに設けられている。
【0017】
表示部3の上端部には、ツメ13が設けられており、図3に示すように、表示部3を本体2に対して閉塞した状態において、ツメ13に対向する位置における本体2には、ツメ13が嵌合する孔部6が設けられている。本体2の前面には、スライドレバー7が前面に平行に移動可能に設けられており、スライドレバー7は孔部6に嵌合したツメ13と係合してロックし、またロック解除することができるようになっている。ロックを解除することにより、表示部3を本体2に対して回動することができる。ツメ13の隣りには、マイクロホン24が取り付けられている。このマイクロホン24は、図6にも示すように、背面からの音も収音できるようになされている。
【0018】
本体2の正面にはまた、プログラマブルパワーキー(PPK)9が設けられている。本体2の右側面には、図4に示すように、排気孔11が設けられており、本体2の前面下部には、図5に示すように、吸気孔14が設けられている。さらに、排気孔11の右側には、PCMCIA(Personal Computer Memory Card International Association)カード(PCカード)を挿入するためのスロット12が設けられている。
【0019】
表示部3の正面には、画像を表示するLCD(Liquid Crystal Display)21が設けられており、その上端部には、撮像部22が、表示部3に対して回動自在に設けられている。すなわち、この撮像部22は、LCD21と同一の方向と、その逆の方向(背面の方向)との間の180度の範囲の任意の位置に回動することができるようになされている。撮像部22には、CCDビデオカメラ23が取り付けられている。
【0020】
表示部3の下側の本体側には、電源ランプPL、電池ランプBL、メッセージランプML、その他のLEDよりなるランプが設けられている。なお、図3に示す符号40は、本体2の左側面に設けられた電源スイッチであり、図5に示す符号25は、CCDビデオカメラ23のフォーカスを調整する調整リングである。さらに、図6に示す符号26は、本体2内に増設メモリを取り付けるための開口部を被覆する蓋であり、符号41は、蓋26のロックツメを外すためのピンを挿入する小孔である。
【0021】
図7は、パーソナルコンピュータ1の内部の構成例を表している。内部バス51には、CPU(Central Processing Unit)52、必要に応じて挿入されるPCカード53、RAM(Random Access Memory)54、およびグラフィックチップ81が接続されている。この内部バス51は、外部バス55に接続されており、外部バス55には、ハードディスクドライブ(HDD)56、I/O(入出力)コントローラ57、キーボードコントローラ58、スティック式ポインティングデバイスコントローラ59、サウンドチップ60、LCDコントローラ83、モデム50等が接続されている。
【0022】
CPU52は、各機能を統括するコントローラであり、PCカード53は、オプションの機能を付加するとき適宜装着される。
【0023】
グラフィックチップ81には、CCDビデオカメラ23で取り込んだ画像データが、処理部82で処理された後、入力されるようになされている。グラフィックチップ81は、処理部82を介してCCDビデオカメラ23より入力されたビデオデータを、内蔵するVRAM81Aに記憶し、適宜、これを読み出して、LCDコントローラ83に出力する。LCDコントローラ83は、グラフィックチップ81より供給された画像データをLCD21に出力し、表示させる。バックライト84は、LCD21を後方から照明するようになされている。
【0024】
RAM54の中には、起動が完了した時点において、電子メールプログラム(アプリケーションプログラム)54A、オートパイロットプログラム(アプリケーションプログラム)54B、そしてOS(オペレーティングシステム)54CがHDD56から転送され、記憶される。
【0025】
電子メールプログラム54Aは、電話回線のような通信回線等からネットワーク経由で通信文を授受するプログラムである。電子メールプログラム54Aは、特定機能としての着信メール取得機能を有している。この着信メール取得機能は、メールサーバ93に対してそのメールボックス93A内に自分(利用者)宛のメールが着信しているかどうかを確認して、自分宛のメールがあれば取得する処理を実行する。
【0026】
オートパイロットプログラム54Bは、予め設定された複数の処理(またはプログラム)等を、予め設定された順序で順次起動して、処理するプログラムである。
【0027】
OS(オペレーティングシステム)54Cは、Windows95やWindows98(商標)に代表される、コンピュータの基本的な動作を制御するものである。
【0028】
一方、外部バス55側のハードディスクドライブ(HDD)56には、電子メールプログラム56A、オートパイロットプログラム56B、OS(基本プログラムソフトウェア)56C、および2次元コード認識プログラム56Dが記憶されている。
【0029】
2次元コード認識プログラムは、グラフィックチップ81のVRAM81Aに記憶される画像データから、2次元コードのロゴマーク部201のロゴマークセル部301およびコード部202を検出し、そしてコード部202のコードデータを認識することで、コード化された所定の情報を読み取るプログラムである。
【0030】
I/Oコントローラ57は、マイクロコントローラ61を有し、このマイクロコントローラ61にはI/Oインタフェース62が設けられている。このマイクロコントローラ61はI/Oインタフェース62、CPU63、RAM64、ROM69が相互に接続されて構成されている。このRAM64は、キー入力ステイタスレジスタ65、LED(発光ダイオード)制御レジスタ66、設定時刻レジスタ67、レジスタ68を有している。設定時刻レジスタ67は、ユーザが予め設定した時刻(起動条件)になると起動シーケンス制御部76の動作を開始させる際に利用される。レジスタ68は、予め設定された操作キーの組み合わせ(起動条件)と、起動すべきアプリケーションプログラムの対応を記憶するもので、その記憶された操作キーの組み合わせがユーザにより入力されると、その記憶されたアプリケーションプログラム(例えば電子メール)が起動されることになる。
【0031】
キー入力ステイタスレジスタ65は、ワンタッチ操作用のプログラマブルパワーキー(PPK)9が押されると、操作キーフラグが格納されるようになっている。LED制御レジスタ66は、レジスタ68に記憶されたアプリケーションプログラム(電子メール)の立上げ状態を表示するメッセージランプMLの点灯を制御するものである。設定時刻レジスタ67は、所定の時刻を任意に設定することができるものである。
【0032】
なお、このマイクロコントローラ61にはバックアップ用のバッテリ74が接続されており、各レジスタ65,66,67の値は、本体2の電源がオフとされている状態においても保持されるようになっている。
【0033】
マイクロコントローラ61内のROM69の中には、ウェイクアッププログラム70、キー入力監視プログラム71、LED制御プログラム72が予め格納されている。このROM69は、例えばEEPROM(electrically erasable and programmable read only memory)で構成されている。このEEPROMはフラッシュメモリとも呼ばれている。さらにマイクロコントローラ61には、常時現在時刻をカウントするRTC(Real-Time Clock)75が接続されている。
【0034】
ROM69の中のウェイクアッププログラム70は、RTC75から供給される現在時刻データに基づいて、設定時刻レジスタ67に予め設定された時刻になったかどうかをチェックして、設定された時刻になると、所定の処理(またはプログラム)等の起動をするプログラムである。キー入力監視プログラム71は、PPK9が利用者により押されたかどうかを常時監視するプログラムである。LED制御プログラム72は、メッセージランプMLの点灯を制御するプログラムである。
【0035】
ROM69には、さらにBIOS(Basic Input/Output System)73が書き込まれている。このBIOSとは、基本入出力システムのことをいい、OSやアプリケーションソフトウェアと周辺機器(ディスプレイ、キーボード、ハードディスクドライブ等)の間でのデータの受け渡し(入出力)を制御するソフトウェアプログラムである。
【0036】
外部バス55に接続されているキーボードコントローラ58は、キーボード4からの入力をコントロールする。スティック式ポインティングデバイスコントローラ59はスティック式ポインティングデバイス5の入力を制御する。
【0037】
サウンドチップ60は、マイクロホン24からの入力を取り込み、あるいは内蔵スピーカ8に対して音声信号を供給する。
【0038】
モデム50は、公衆電話回線90、インターネットサービスプロバイダ91を介して、インターネット等の通信ネットワーク92やメールサーバ93等に接続することができる。
【0039】
電源スイッチ40は、電源をオンまたはオフするとき操作される。半押しスイッチ85は、シャッタボタン10が半押し状態にされたときオンされ、全押しスイッチ86は、シャッタボタン10が全押し状態にされたときオンされる。反転スイッチ87は、撮像部22が180度回転されたとき(CCDビデオカメラ23がLCD21の反対側を撮像する方向に回転されたとき)、オンされるようになされている。
【0040】
図8は、本発明を適用したパーソナルコンピュータ1の使用例を表している。オブジェクト100は、例えば、名刺状のカードで、2次元コード101が貼付(印刷を含む)されている。
【0041】
2次元コード101は、図9に示すように、複数の正方形状のセル(黒色の部分)が所定の配列規則に従って2次元的に配置されており、このセルの配列パターンにより、所定の英数文字、例えば、この例の場合、数字200がコード化されている。
【0042】
以下に、2次元コード101の詳細を説明する。2次元コード101は、ロゴマーク部201とコード部202から構成されており、これらロゴマーク部201とコード部202の全体は、1個の正方形状のセルの矩形領域を1ブロックと表現すると、7ブロック分の長さのX軸方向の辺と、9.5ブロック分の長さのY軸方向の辺で形成される領域(以下、このような領域を7×9.5ブロック領域と記述する。他の場合においても同様である)内に配置されている。
【0043】
ロゴマーク部201は、図10に示すように、ロゴマークセル部301およびノンセル部302から構成されている。そして、7×1.5ブロック領域の長方形状のセルであるロゴマークセル部301には、ロゴマーク、文字、または数字など、2次元コードに関連する白抜きの可読文字情報が印刷により表示されている。ここで、例えば、ロゴマークとしては、2次元コード101のコード体系に付された「CyberCode」など、2次元コード101が何を意味するコードなのかを、人間が判読可能なマークとして、白抜き文字で表示される。
【0044】
また、ロゴマークに限らず、2次元コード101のコード体系を開発した本出願人の会社名を表示したり、2次元コード101のコード体系に関連する情報資源の格納場所を示すURL(Uniform Resource Locator)などを表示するようにしても構わない。なお、URLとは、インターネット上に分散しているファイルなどの情報資源の格納場所を一意に指定するための表記方法である。
【0045】
以上のように、長方形状のロゴマークセル部301に、その2次元コード101が何を示すコードなのかをロゴマーク等で表示することにより、そのロゴマーク等に関する情報が掲載されているインターネット上のホームページなどを参照することで、その2次元コード101に関する情報を取得し、理解することができる。例えば、本願出願時点において、本出願人が提供している下記のURLでアクセス可能なホームページには、以下のような説明文が掲載されている。
http://www.sony.co.jp/sd/ProductsPark/Consumer/PCOM/PCG-C1CAT/cybercode.html
「「サイバーコード」は、ソニー独自の2次元コードで、約1,677万通り(24ビット)のパターンが存在します。このうち約100万通り(20ビット)を、任意のプログラム起動用として自由に登録することが可能。残りのコード分は、将来のサービス拡張用として予約されています。「サイバーコード」は、それが貼られたものから、対応するコンピューター上の情報を引き出すためのインデックスの役割をし、CyberCode Finderのファインダーを通して、プログラムが起動されることにより、あたかも「サイバーコード」が貼られたものから、対応する情報がコンピューター上に飛び出してくるという新しいインターフェースを提供します。」
次に、図10に示すように、ロゴマークセル部301の、コード部202側の7×1ブロック領域には、セルが存在しないノンセル部302が存在する。なお、ロゴマークセル部301の長軸(図9のX軸方向の軸)を辺A、および短軸(図9のY軸方向の軸)を辺Bとする。
【0046】
コード部202には、図11に示すように、ロゴマークセル部301を下方向に位置させたとき、ロゴマークセル部301の左端から7ブロック分上方向に位置する左上コーナーセル、およびロゴマークセル部301の右端から7ブロック分上方向に位置する右上コーナーセルが存在する。また、ロゴマークセル部301の左端から1ブロック分上方向に位置する左下コーナーセル、およびロゴマークセル部301の右端から1ブロック分上方向に位置する右下コーナーセルが存在する。なお、左上コーナーセル、右上コーナーセル、左下コーナーセル、および右下コーナーセルを特に区別する必要がない場合、これらをまとめてコーナーセルと称する。
【0047】
コーナーセルの周囲の隣接する3ブロック分の領域には、セルが存在しない。つまり、ロゴマークセル部301に対して、上述したような位置に存在し、周り3ブロック領域にセルが存在しないようなセルはコーナーセルとされる。
【0048】
コード部202は、実際は、1ブロックを1ビットとすると、49ビット(7ブロック×7ブロック=49ブロック)分の情報をコード化することができるが、上述したように、コーナーセル(1ブロック)およびコーナーセルの周り3ブロックは、データを構成しない。すなわち、合計16ブロックは、データを構成しない。また、残り33ブロック(33ビット)中、9ブロック(9ビット)は、コードデータが、正しいコードデータであることを確かめるためのチェックデータを構成する。従って、コード部202には、24ビット分の情報がコード化されている。
【0049】
図12は、上述した2次元コード101の具体例を表している。図12(A)の2次元コード101のコード部202には、識別番号200、201、202、203、1500、1501、1502、そして1503がコード化されたコードパターンが印刷されている。また、ロゴマークセル部301の下方の、ID部203には、コード化された識別番号に対応する数字が印刷されている。
【0050】
また、図12(B)に示す具体例では、2次元コード101のロゴマークセル部301に、ロゴマークが白抜き文字で印刷されている。また、図12(C)に示す具体例では、2次元コード101のID部203の識別番号に対応する数字が省略されている。さらに、図12(D)に示す具体例では、ロゴマークセル部301に識別番号に対応する数字が白抜き文字で印刷されており、ID部203にロゴマークが黒文字で印刷されている。これら図12(A)乃至図12(D)に表されている2次元コード101のコード部202は、全て同一の仕様により作成されている。
【0051】
ここで、上述したロゴマークセル部301は、所定の縦横比の矩形状の領域によって構成され、後述するように、複数の黒色画素が連結してなる黒色画素連結領域を含んで構成されている。さらに、ロゴマークセル部301内には、2次元コード101に関連する白抜きの可読情報を含んで構成されている。そして、2次元コード1101の認識処理を開始する初期段階で、予め規定された所定の縦横比の矩形状のロゴマークセル部301を検出することで、このロゴマークセル部301を基準として、所定の探索範囲内に存在するその他のセルの検出処理へと認識処理を進めることが可能となる。したがって、上述したロゴマークセル部301は、単に、2次元コード101の意味合いを可読なロゴマークという形態で表示するという目的のためだけに設けているのではなく、2次元コード101の認識処理を進める上での基準を示す機能も兼ね備えている。
【0052】
このように、ロゴマークセル部301には、基準を示す機能に加えて、図12(B)乃至図12(D)に示すように、ロゴマークや文字などを表示する機能を付与しているので、最小限の占有面積で、認識処理の基準に必要な情報と、可読情報とを同時に提示することが可能となっている。
【0053】
図8に戻り、パーソナルコンピュータ1は、例えば、オブジェクト100と2次元コード101を、CCDビデオカメラ23により撮像することができ、また、その結果得られた2次元コード101のコードデータを認識するようになされている。
【0054】
次に、2次元コード認識処理の処理手順を、図13のフローチャートを参照して説明する。
【0055】
2次元コード101がCCDビデオカメラ23により撮像され、その結果得られた1フレーム分の画像データが、処理部82により処理され、グラフィックチップ81のVRAM81Aに記憶されている状態において、HDD56に記憶されている2次元コード認識プログラム56Dが起動されると、ステップS1において、CPU52は、所定の輝度値を示す閾値の設定をカウントするカウンタiの値に1を初期設定する。この例の場合、図14に示すように、閾値が、5段階に設定されている。設定番号1に示される閾値Aの値が、最も大きい値に設定され、設定番号5に示される閾値Eに向かって、段階的に値が小さくなるように設定されている。
【0056】
ステップS2において、CPU52は、カウンタiの値に対応する設定番号の閾値に基づいて、VRAM81Aに記憶されている画像データに対して2値化処理を行う。ここで、閾値より大きい輝度を保持する画素の画素値は、”0”に符号化され、表示上、その画素は白色とされる。以下においては、このように、画素値が”0”に符号化された画素を、白色画素と称する。
【0057】
一方、閾値以下の輝度値を保持する画素の画素値は、”1”に符号化され、表示上、その画素は黒色とされる。以下においては、このように、画素値が”1”に符号化された画素を、黒色画素と称する。
【0058】
次に、ステップS3において、CPU52は、図15に示すように、黒色画素が連結する領域を1つの領域として、左上から右下に向かって番号を設定(ラベリング)する。
【0059】
ステップS4において、CPU52は、ステップS3でラベリングした黒色画素連結領域の総数Mを求め、求めた黒色画素連結領域の総数Mが257個以上であるか否かを判定し、総数Mが257個以上であると判定した場合、すなわち、現在、VRAM81Aに記憶されている画像フレームが、以降の処理を実行するのに適さない画像であると判定した場合、ステップS5に進む。ここで、以降の処理を実行するのに適さない画像とは、いわゆるディザ状の画像と呼ばれる砂粒のような点を多量に含む画像であり、このようなディザ状の画像に対して無理に認識処理を進めようとすると、演算処理に要するCPUの負荷が大となってしまう。そこで、このようなディザ状の画像の場合は、そのまま認識処理を進めずに、ステップS5へ進むようにしてある。
【0060】
ステップS5において、CPU52は、カウンタiの値が、閾値の設定数N(=5)と等しい(i=5)か否かを判定し、i=5ではないと判定した場合、ステップS6において、カウンタiの値を1だけ増加した後、ステップS2に戻る。ステップS2において、CPU52は、1つだけ増加されたカウンタiの値に対応する設定番号の閾値に基づいて、VRAM81Aに記憶されている画像データに対して、再度、2値化処理を実行する。
【0061】
上述したように、設定番号1で示される閾値Aは、最も値が大きい閾値であり、すなわち、この最も大きい値が2値化処理の閾値とされると、画像データの多くの画素の輝度が、閾値Aよりも相対的に小さい値となり、その結果多くの画素が黒色画素と認識され、これにより、黒色画素連結領域の総数Mも多くなる。そこで、ステップS5で、カウンタiの値が1つ増加され、1段階小さい値の閾値が、次の2値化処理の閾値とされると、黒色画素として認識される画素が少なくなる。
【0062】
このように、最初に、より大きい閾値で、大きい輝度値を基準として2値化処理を行うことより、フレーム全体が比較的明るい画像に適する2値化処理を実行することができ、さらに、閾値を段階的に小さくし、より小さい輝度値を基準として2値化処理を行うことにより、フレーム全体が比較的暗い画像に適する2値化処理を実行することができる。このように、閾値を5段階に分け、この閾値を段階的に変更することによって、画像フレーム全体に明るさの変動があった場合であっても、常に精度の高い2値化データを生成することができるようになっている。
【0063】
ステップS5において、CPU52は、i=5であると判定した場合、すなわち、閾値A乃至Eのいずれの閾値によっても、適当な総数Mの黒色画素連結領域が生成されない場合、この1フレーム分の画素データには、2次元コード101が存在しないものと判定した場合、処理が終了される。
【0064】
ステップS4において、CPU52は、黒色画素連結領域の総数Mが257個より少ないと判定した場合、ステップS7に進む。
【0065】
ステップS7において、CPU52は、以前に実行された2次元コード認識処理により認識された2次元コード101のLCD21の表示上の位置、例えば、ロゴマークセル部301の中央点が、RAM54などに記憶されているか否かを判定し、それが記憶されている場合、ステップS8に進み、記憶されている点をロゴマークセル部検出処理の開始点に設定する。ステップS7で、2次元コード101の位置が記憶されていないと判定した場合、ステップS9に進み、CPU52は、320×240画素のLCD21の表示上の中心点(例えば、X軸方向に160番目であり、Y軸方向に120番目の画素)を開始点に設定する。このようにすることより、ロゴマークセル部301を効率的に検出することができる。
【0066】
次に、ステップS10において、ロゴマークセル部検出処理が実行される。ステップS10におけるロゴマークセル部検出処理の詳細を、図16のフローチャートを参照して説明する。
【0067】
はじめに、ステップS21において、CPU52は、黒色画素連結領域の総数Mをカウントするカウンタjの値を1に初期設定し、次に、ステップS22において、図13のステップS8およびステップS9で設定された開始点から、LCD21の画面上を左回りの渦巻の軌跡に沿って、黒色画素連結領域を探索し、始めに検出した黒色画素連結領域をロゴマークセル部候補領域として選択する。
【0068】
次に、ステップS23において、CPU52は、ステップS22で選択したロゴマークセル部候補領域の、図10に示したようなロゴマークセル部301の辺Aおよび辺Bに対応する辺ATおよび辺BTを決定する。辺ATは、図17に示すように、黒色画素連結領域がLCD21の画像上のX軸上に投影されて形成される線(X軸投影線)と、Y軸上に投影されて形成される線(Y軸投影線)のうち、長い方の線とする。辺BTは、他方の短い方の線とする。
【0069】
次に、ステップS24において、CPU52は、短軸に対応する辺BTが20画素より少ない画素で構成されているか否かを判定する。例えば、短軸(辺B)が20画素より少ない画素で構成されている黒色画素連結領域がロゴマークセル部301であるとすると、図9に示したように、1ブロックの一辺の長さは、辺Bの長さとの比が1対1.5であるため、さらに少ない数の画素から構成されるようになり、この場合、最小セル(1×1ブロック領域のセル)が小さくなり、LCD21に適切に表示されなくなる。このことより、ステップS24において、辺BTが20画素より少ない画素で構成されていると判定された場合、今回ステップS22で選択された黒色画素連結領域は、ロゴマークセル部301ではないとされ、ステップS25に進み、CPU52は、カウンタjの値が、黒色画素連結領域の総数Mと等しい(j=M)か否かを判定し、j=Mではないと判定した場合、ステップS26に進み、カウンタjの値を1だけ増加した後、ステップS22に戻る。そして、CPU52は、次の黒色画素連結領域を、次のロゴマークセル部候補領域として、同様の処理を行う。
【0070】
ステップS24において、ステップS22で選択されたロゴマークセル部候補領域の辺BTが20画素と等しいか、またはそれより多い画素で構成されていると判定された場合、ステップS27に進み、CPU52は、ロゴマークセル部候補領域の辺ATが300画素より多い画素で構成されているか否かを判定する。例えば、長軸(辺A)が300画素より多い画素で構成されている黒色画素連結領域がロゴマークセル部301であるとすると、図9に示したように、辺Aの長さが7に対して1の割合で求められる1ブロックの一辺の長さが大きくなり、図11に示したように、ロゴマークセル部301から、7ブロック分離れて位置する左上コーナーセルおよび右上コーナーセルが、LCD21上に表示されなくなる。このことより、ステップS27において、辺ATが300画素より多い画素で構成されていると判定された場合、今回ステップS22で選択された黒色画素連結領域は、ロゴマークセル部301ではないとされ、ステップS25に進み、それ以降の処理が行われる。
【0071】
ステップS27において、ステップS22で選択されたロゴマークセル部候補領域の辺ATが300画素より多い画素で構成されていない(300画素以下の画素で構成されている)と判定された場合、ステップS28に進み、CPU52は、ロゴマークセル部候補領域の黒色画素の総数が、20画素以上かつ1500画素未満であるか否かを判定し、20画素以上かつ1500画素未満であると判断した場合、ステップS29に進む。
【0072】
一方、ステップS28において、ロゴマークセル部候補領域の黒色画素の総数が20画素未満、または1500画素以上であると判定された場合、ステップS25に進む。なお、黒色画素の総数が、20画素未満の場合、ステップS24において辺BTが20画素より少ない画素で構成された場合と同様の問題が発生し、また、1500画素以上である場合、ステップS27において辺ATが300画素より多い画素で構成された場合と同様の問題が発生し、いずれの場合も、ロゴマークセル部301である可能性が小さくなる。
【0073】
次に、ステップS29において、CPU52は、ステップS22で選択したロゴマークセル部候補領域の方形らしさ(fitness)を判定し、方形であると判定した場合、ステップS30に進む。この例の場合、式(1)に基づいて算出されるfitnessが、0.2以上である場合、ロゴマークセル部候補領域は方形であると判定される。
【0074】
【数1】
【0075】
式(1)の定数aは、式(2)に基づいて、定数cは、式(3)に基づいて、そして定数b/2は、式(4)に基づいて求められる、いわゆる、モーメント特徴のうちの2次元モーメントである。
【0076】
【数2】
【0077】
【数3】
【0078】
【数4】
【0079】
式(2)乃至式(4)のf(i,j)は、LCD21の表示上の画素のX座標iと、Y座標jにより特定される画素が黒色の場合、1となり、また、特定される画素が白色の場合、0となる関数である。
【0080】
ステップS30において、CPU52は、ステップS29で方形とされたロゴマークセル部候補領域の長軸と短軸の比を、式(5)に基づいて算出し、算出結果が2.0以上かつ25以下であるか否かを判定する。
【0081】
【数5】
【0082】
算出結果が2.0以上かつ25以下であると判定された場合、ステップS31に進み、CPU52は、ステップS22で選択したロゴマークセル部候補領域をロゴマークセル部301として設定(仮定)し、例えば、ロゴマークセル部候補領域とされた黒色画素連結領域の番号を、RAM54に記憶させる。このようにして、ロゴマークセル部301は検出され、処理は終了される。
【0083】
ステップS28において、黒色画素の総数が20画素未満、または1500画素以上であると判定された場合、ステップS29において、ロゴマークセル部候補領域が方形ではないと判定された場合、またはステップS30において、辺ATと辺BTの比が2.0未満または25より大きいと判定された場合、今回ステップS22で選択されたロゴマークセル部候補領域は、ロゴマークセル部301ではないとされ、ステップS25に進み、次に検出された黒色画素連結領域が次のロゴマークセル部候補領域とされ、以降の処理が行われる。
【0084】
ステップS25において、カウンタjの値が黒色画素連結領域の総数Mと等しい(j=M)と判定された場合、ステップS31でロゴマークセル部301が設定されず、処理は終了される。すなわち、今回2次元コード認識処理の対象とされた画像データ(1フレーム)には、ロゴマークセル部301が存在しないものとされる。
【0085】
以上のようにして、ロゴマークセル部検出処理が完了したとき、次に、図13のステップS11に進む。
【0086】
ステップS11において、ステップS10でロゴマークセル部301が検出されたか否かが判定され、検出されたと判定された場合、ステップS12に進み、コード部検出処理が実行される。ステップS12におけるコード部検出処理の詳細を、図18のフローチャートを参照して説明する。
【0087】
はじめに、ステップS41において、CPU52は、図13のステップS3で検出した黒色画素連結領域の総数Mをカウントするカウンタjの値を1に初期設定し、ステップS42において、その値に対応する番号の黒色画素連結領域を検出し、それを左上コーナーセル候補領域として選択する。
【0088】
次に、ステップS43において、CPU52は、ステップS42で選択した左上コーナーセル候補領域の、図17に示したようにして決定した辺ATおよび辺BTの長さの比が3倍以下であるか否かを判定し、その比が3倍以下であると判定した場合、ステップS44に進む。
【0089】
ステップS44において、CPU52は、ステップS42で選択した左上コーナーセル候補領域が、図13のステップS10で検出したロゴマークセル部301に対して予め設定された探索範囲内に存在するか否かを判定し、探索範囲内に存在すると判定した場合、ステップS45に進み、それを左上コーナーセルとして設定(仮定)する。
【0090】
ステップS43において、辺ATの長さに対する辺BTの長さの比が3倍より大きいと判定された場合、または、ステップS44において、探索範囲内に存在しないと判定された場合、ステップS42で選択された黒色画素連結領域は、左上コーナーセルではないと判定され、ステップS46に進み、カウンタjの値が黒色画素連結領域の総数Mに等しい(j=M)か否かが判定され、j=Mではないと判定された場合、ステップS47に進み、カウンタjの値が1だけ増加され、ステップS42に戻る。そして、次の番号の黒色画素連結領域が、次の左上コーナーセル候補領域とされ、同様の処理が行われる。
【0091】
ステップS45において、左上コーナーセルが設定されると、ステップS48に進み、CPU52は、黒色画素連結領域の番号をカウントする他のカウンタkに2を初期設定し、次に、ステップS49において、カウンタkの値に対応する番号の黒色画素連結領域を検出し、それを右上コーナーセル候補領域として選択する。
【0092】
次に、ステップS50において、CPU52は、ステップS45で設定した左上コーナーセルの画素数(面積)と、ステップS49で選択した右上コーナーセル候補領域の画素数(面積)の比を算出し、その比(面積比)が6倍以下であるか否かを判定し、6倍以下であると判定した場合、ステップS51に進む。
【0093】
ステップS51において、CPU52は、ステップS45で設定した左上コーナーセルの面積(画素数)(S1)、ステップS49で選択した右上コーナーセル候補領域の面積(画素数)(S2)、およびその左上コーナーセルの中心点とその右上コーナーセル候補領域の中心点との距離(D)を算出し、式(6)および式(7)が成立するか否かを判定する。
【0094】
(S1/D2)<=900 ・・・(6)
(S2/D2)<=900 ・・・(7)
ステップS51において、式(6)および式(7)が成立すると判定された場合、ステップS52に進み、CPU52は、ステップS49で選択した右上コーナーセル候補領域を右上コーナーセルとして設定(仮定)する。
【0095】
ステップS52において、右上コーナーセルが設定(仮定)されると、ステップS55において、CPU52は、ステップS45で設定した左上コーナーセル、ステップS52で設定した右上コーナーセル、および図13のステップS10で設定されたロゴマークセル部301により形成される領域を、LCD21の画面上のX軸方向に7ブロック分の長さ、そしてY軸方向に9.5ブロック分の領域になるようにアフィン変換する。なお、1ブロックの一辺の長さは、ステップS10で設定されたロゴマークセル部301の辺ATまたは辺BTに基づいて算出される。
【0096】
次に、ステップS56において、CPU52は、ステップS55で変換した画像から、図13のステップS10で設定したロゴマークセル部分301とそれに対応して存在するノンセル部302に相当する領域(7×2.5ブロック領域)を削除し、その結果得られた7×7ブロック領域の範囲に、黒色画素連結領域をセルとしてマッピングし、コードマップを生成する。
【0097】
ステップS57において、CPU52は、ステップS56で生成したコードマップのセルのうち、4角のセルを検出し、その周りの3ブロック領域が、白色画素とされているか否かを判定し、白色画素とされていると判定した場合、ステップS58に進み、ステップS56で生成したコードマップを2次元コード101のコード部202と設定(仮定)する。このようにして、コード部202が検出されると、処理は終了される。
【0098】
ステップS50において、面積比が6倍より大きいと判定された場合、ステップS51において、式(6)および式(7)が成立しないと判定された場合、またはステップS57において、4角のセルの周りの3ブロック領域が白色画素ではないと判定された場合、ステップS53に進み、カウンタkの値が黒色画素連結領域の総数Mに等しい(k=M)か否かが判定され、k=Mではないと判定された場合、ステップS54に進み、カウンタkの値が1だけ増加され、ステップS49に戻る。そして次の番号の黒色画素連結領域が、次の右上コーナーセル候補領域とされ、同様の処理が行われる。
【0099】
ステップS53において、カウンタkの値が黒色画素連結領域の総数Mと等しいと判定された場合、ステップS46に戻り、ステップS46の処理において、j=Mでないと判定された場合、ステップS47に進み、カウンタjの値が1だけ増加され、ステップS42に戻り、次の番号の黒色画素連結領域が、次の左上コーナーセル候補領域として選択され、それ以降の処理が行われる。
【0100】
ステップS46において、j=Mと判定された場合、今回2次元コード認識処理の対象となっている画像には、2次元コード101が存在しないものとされ、処理は終了される。
【0101】
以上のようにして、コード部検出処理が完了すると、図13のステップS13に進む。ステップS13において、ステップS12でコード部202が検出されたか否かが判定され、検出されたと判定された場合、ステップS14に進み、コードデータ検証処理が実行される。ステップS14のコードデータ検証処理の詳細を、図19のフローチャートを参照して説明する。
【0102】
はじめに、ステップS61において、CPU52は、後述するステップS63およびステップS65で算出される基準値を、1ビット右方向にシフトする回数をカウントするカウンタpの値を1に初期設定する。
【0103】
次に、ステップS62において、CPU52は、図13のステップS12で検出されたコード部202のコードマップから、コードデータおよびチェックデータの値を算出する。
【0104】
ステップS63において、CPU52は、ステップS62で算出したコードデータの値(ビットストリーム)と、0xFFFFFFとの排他的論理和演算を行い、その結果得られた値(ビットストリーム)を基準値(基準ビットストリーム)とする。ステップS64において、CPU52は、基準ビットストリームのLSB(Least Significant Bit)に”1”が立っているか否かを判定し、”1”が立っていないと判定した場合、ステップS65に進む。
【0105】
ステップS65において、CPU52は、ステップS63で算出した基準値(基準ビットストリーム)と、0x8408との排他的論理和演算を行い、その結果得られた値(ビットストリーム)を新たな基準値(基準ビットストリーム)とし、ステップS66に進む。
【0106】
ステップS64において、CPU52は、ステップS63で算出した基準値(基準ビットストリーム)のLSBに”1”が立っていると判定した場合、ステップS65の処理をスキップし、ステップS66に進む。
【0107】
ステップS66において、CPU52は、ステップS63またはステップS65において算出した基準値(基準ビットストリーム)を1ビットだけ右にシフトさせ、ステップS67に進み、カウンタpの値が、24(予め決められたシフトの回数)に等しい(p=24)か否かを判定し、p=24ではないと判定した場合、ステップS68に進み、カウンタpの値を1だけ増加した後、ステップS64に戻る。以下、同様の処理が、ステップS67においてp=24であると判定されるまで、繰り返し実行させる。
【0108】
ステップS67において、CPU52は、p=24であると判定した場合、ステップS69に進み、ステップS64乃至S68の処理により算出されたビットストリームと、0x1FFFとの論理積演算を行う。次に、ステップ70において、CPU52は、ステップS69における論理積演算より得られ値が、ステップS62で算出したチェックデータの値と等しいか否かを判定し、等しいと判定した場合、図13のステップS13で検出されたコード部202は、2次元コード101として適正なパターンであるとし、ステップS71において、2次元コード101のコード部202を確定する。その後、処理は終了される。
【0109】
ステップS70において、ステップS69で算出された値と、ステップS62で算出されたチェックデータの値とが等しくないと判定された場合、ステップS71の処理がスキップされ、処理は終了される。
【0110】
以上のようにして、コードデータ検証処理が完了されると、図13のステップS15に進み、図19のステップS71でコード部202が確定されたか否かが判定され、確定されていると判定された場合、ステップS16に進み、CPU52は、図19のステップS62で算出したコードデータの値、すなわち、2次元コード101の値を、例えば、RAM54に記憶させ、保持する。その後、処理は終了される。
【0111】
ステップS11において、ロゴマークセル部301が検出されていないと判定された場合、ステップS13において、コード部202が検出されていないと判定された場合、またはステップS15において、コード部202が確定されていないと判定された場合、今回2次元コード認識処理の対象とされた画像データには、2次元コード101が存在しないものとされ、処理は終了される。
【0112】
このように、例えば、ロゴマークなどの2次元コード101の属性等を表示するロゴマークセル部301を認識処理の基準として利用し、コード部202を検出するようにしたので、2次元コード101の占有面積を最小限に抑えることができる。すなわち、ロゴマークセル部301には、基準を示す機能に加えて、ロゴマークや文字などを表示する機能を付与しているので、最小限の占有面積で、認識処理の基準に必要な情報と、可読情報とを同時に提示することが可能である。
【0113】
図20は、複数の2次元コードを読み込ませ、それぞれ読み込まれた2次元コードに対応する処理を連続して行わせる場合を説明するフローチャートである。この実施の形態では、ユーザが複数の2次元コードを、1個づつ、時間を隔てて、パーソナルコンピュータ1に認識させることにより行われる。まず、ステップS81において、CPU52は、上述した処理により、2次元コードが認識されたか否かを判定する。2次元コードが認識されたと判定されるまで、ステップS81の処理が繰り返され、2次元コードが認識されたと判定された場合、ステップS82に進む。
【0114】
ステップS82において、連続フラグビットが“1”であるか否かが判定される。この連続フラグビットは、2次元コードのコード部202の24ビットのうち、任意の1ビットが割り当てられており、このフラグが立っている(“1”にされている)と、その2次元コードは、既に認識された2次元コード、またはこれから認識される2次元コードと連続したデータを構成することを示し、逆に、このフラグが立っていない(“0”にされている)と、その2次元コードは、1個だけの単一の2次元コード(そのデータだけで、処理を行うコード)である、または連続する2次元コードの最後の2次元コードであることを示している。
【0115】
ステップS82において、認識された2次元コードの連続フラグが“1”になっていると判定された場合、ステップS83に進み、前回までに認識されている2次元コードのコードデータに、今回、新たに認識された2次元コードの23ビットのコードデータを連結する。連結が終了されたら、ステップS81に戻り、次の2次元コードに対して同様の処理が繰り返される。
【0116】
一方、ステップS82において、認識された2次元コードの連続フラグが“1”ではないと判定された場合、換言すれば、“0”であると判定された場合、ステップS84に進む。ステップS84において、認識された2次元コードの連続ビットを含む24ビットの値が、全て“0”であるか否かが判定される。24ビットの値、全てが“0”ではないと判定された場合、ステップS85に進み、ステップS83での処理と同様の処理が行われる。ステップS83またはステップS85の処理が繰り返されることにより、23ビット、46ビット、69ビット、...というふうに、所望のビット数を用意することが可能なので、複雑な処理をさせるために、コードデータが多く必要な場合にも、この2次元コードを用いることができる。
【0117】
ステップS85による処理が終了されたら、ステップS86に進み、連結されたコードデータが現在のビット値として確定され、RAM54に記憶される。このように、連続フラグが0であるが、残り23ビットの値が0だけではない場合、連続する(連結される)2次元コードの最後の2次元コードであることを示し、ステップS86において、その連結されたデータがRAM54に記憶され、ステップS87において、その記憶されたデータに対応する処理が行われる。
【0118】
一方、ステップS84において、認識された2次元コードの24ビットの値、全てが“0”であると判定された場合、ステップS88に進む。ステップS88において、いま認識された2次元コードの前に認識され、RAM54に連結されるコードデータとして記憶されているコードデータが存在するか否かが判定される。連結されるコードデータとして記憶されているコードデータは存在しないと判定された場合、ステップS89に進み、認識された2次元コードのコードデータそのもの、すなわち、23ビット全てが0であるデータが、RAM54に記憶され、ステップS87に進み、このコードデータに対応する処理が実行される。
【0119】
ステップS88において、連結されるコードデータとして記憶されているコードデータが存在すると判定された場合、ステップS90に進み、その記憶されているコードデータ全てがクリアされる。すなわち、24ビット全てが0に設定されている2次元コードは、それ自体単独で用いられた場合は、割り当てられている処理を行い、連続して認識される2次元コードの内の一つとしてとして用いられた場合は、この2次元コードが認識される以前において記憶されたコードデータを全てクリア(破棄)する処理を行う為に用いられる。
【0120】
このようにしておくことで、誤った2次元コードを認識させてしまった場合に、それまでのコードデータをキャンセルさせ、始めからやり直すことを可能としている。
【0121】
図21は、上述した処理と同様に、複数の2次元コードを読み込み、読み込んだ2次元コード、それぞれに対応する処理を連続して行わせる場合を説明するフローチャートである。この実施の形態においては、図22に示すように、オブジェクト100上に、4個の2次元コードラベル101−1乃至101−4が貼り付けられたものが用いられる。このように、複数の2次元コード101−1乃至101−4が貼り付けられたオブジェクト100が、CCDビデオカメラ23により撮像された場合、パーソナルコンピュータ1は、図21のフローチャートの処理を行うことにより、同一画像情報から順次2次元コードラベル101−1乃至101−4を認識していく。
【0122】
すなわち、ステップS101乃至S116の処理により、2次元コードラベル101−1が認識される。このステップS101乃至S116の処理は、図13のステップS1乃至S16の処理と同様の処理なので、その説明は省略する。2次元コードラベル101−1がステップS101乃至S106の処理により、認識されたら、ステップS117において、ロゴマーク(2次元コードラベル101)かどうか検出していない領域があるか否かが判定される。
【0123】
この場合、2次元コードラベル101−2乃至101−4が、まだ検出されていないので、ステップS101に戻り、それ以降の処理が繰り返される。ステップS101乃至S117の処理が繰り返されることにより、ロゴマークかどうか検出していない領域が存在しなくなった場合、ステップS118に進み、認識された2次元コードラベル101の個数、それぞれの2次元コードラベル101に割り当てられたコードデータ、および配置情報がRAM54に記憶される。
【0124】
この場合、2次元コードラベル101の個数は4個であり、それぞれのコードデータと配置情報は、例えば、2次元コードラベル101−1が“0x111111”で左上、2次元コードラベル101−2が“0x222222”で右上、2次元コードラベル101−3が“0x333333”で左下、2次元コードラベル101−4が“0x444444”で右下として記憶される。
【0125】
このように4個の2次元コードラベル101−1乃至101−4が認識された場合、左上から右下の順に、それらの配置情報に基づいて、優先順位が第1位乃至第4位と決定され、優先順位の高い方(第4位)が上位ビットとして設定される。すなわち、図22で示した例では、2次元コードラベル101−1が第1位、2次元コードラベル101−2が第2位、2次元コードラベル101−3が第3位、2次元コードラベル101−4が第4位となるので、新たに拡張されたコードデータとしてのビット配列は、“0x444444333333222222111111”となる。そして、同一画像情報上の4個の2次元コードラベル101−1乃至101−4の画像から、これら複数の2次元コードコードラベル101−1乃至101−4に各々対応したコードデータが順次認識され、これら複数のコードデータが連結されて、新たに拡張されたコードデータ(ビット配列)が生成され、このようにして得られたコードデータに対応する処理が、パーソナルコンピュータ1によって実行される。
【0126】
このように、図20のフローチャートで示したように時間的に、または図21のフローチャートで示したように空間的に、複数の2次元コードを認識させることにより、例えば、1つめの2次元コードでアプリケーションを起動させ、2つめの2次元コードで引用ファイルやオプション等を設定させ、3つめ以降の2次元コードでその他の処理を引き続いて処理させるなどができるようになる。
【0127】
なお、上述した一連の処理を実行するプログラムをコンピュータにインストールし、コンピュータによって実行可能な状態とするために用いられるプログラム格納媒体としては、例えば、フロッピーディスク、CD-ROM、DVDなどのパッケージメディアのみならず、プログラムが一時的もしくは永続的に格納される半導体メモリや磁気ディスクなどで実現してもよい。さらには、上述したプログラムをインストールする手段としては、ローカルエリアネットワークやインターネット、デジタル衛星放送などの有線および無線通信媒体、およびこれらの通信媒体を介して提供されるプログラムを転送もしくは受信するルーターやモデム等の各種通信インターフェイス等を利用することができる。
【0128】
【発明の効果】
本発明によれば、複数の2次元コードを用いて、複雑な処理を行わせることが可能となる。
【図面の簡単な説明】
【図1】本発明を適用した携帯型パーソナルコンピュータの構成例の表示部を本体に対して開いた状態を示す外観斜視図である。
【図2】図1の平面図である。
【図3】図1の表示部を本体に対して閉塞した状態を示す左側側面図である。
【図4】図1の表示部を本体に対して180度開いた状態を示す右側側面図である。
【図5】図3の正面図である。
【図6】図4の底面図である。
【図7】図1の電気回路の構成例を示すブロック図である。
【図8】パーソナルコンピュータ1の使用例を表している。
【図9】2次元コードの仕様について説明する図である。
【図10】2次元コードの仕様について説明する他の図である。
【図11】2次元コードの仕様について説明する他の図である。
【図12】2次元コードの例を示す図である。
【図13】2次元コード認識処理を説明するフローチャートである。
【図14】閾値の設定を説明する図である。
【図15】黒色画素連結領域のラベリングを説明する図である。
【図16】ロゴマークセル部検出処理を説明するフローチャートである。
【図17】辺ATおよび辺BTの求め方を説明する図である。
【図18】コード部検出処理を説明する図である。
【図19】コードパターン検証処理を説明するフローチャートである。
【図20】複数の2次元コードを認識するときの処理を説明するフローチャートである。
【図21】複数の2次元コードを認識するときの他の処理を説明するフローチャートである。
【図22】複数の2次元コードが配置されたオブジェクトを説明する図である。
【図23】従来の1次元バーコードの例を示す図である。
【図24】従来の2次元コードの例を示す図である。
【符号の説明】
1 パーソナルコンピュータ, 3 表示部, 21 LCD, 23 CCDビデオカメラ, 52 CPU, 56 HDD, 81 グラフィックチップ, 83 LCDコントローラ, 100 オブジェクト, 101 2次元コード
Claims (7)
- 複数のセルが所定の配列規則に従って2次元配置された2次元コードを認識する2次元コード認識処理方法において、
前記2次元コードを撮像した結果得られる画像情報から、前記2次元コードに割り当てられたコードデータを認識する認識処理ステップと、
前記認識処理ステップによって、時間を隔てて順次複数のコードデータが認識された場合、もしくは、同一画像情報から複数のコードデータが認識された場合、これら複数のコードデータを連結して、拡張されたコードデータを生成する連結処理ステップと
を含み、
前記認識処理ステップは、
前記画像情報から、所定の閾値に基づいて2値化データを生成する2値化処理ステップと、
前記2値化処理ステップの処理で生成された前記2値化データに基づいて、前記2次元コードを認識する上で基準となるセルを検出するセル検出処理ステップと、
前記2値化処理ステップの処理で生成された前記2値化データに基づいて、前記セル検出処理ステップの処理で検出された前記2次元コードを認識する上で基準となるセルに対応する所定の探索範囲内に存在する、前記2次元コードの領域を特定するのに基本となるセルを決定する基本セル決定ステップと、
前記基本となるセルによって一意に定まる範囲を、前記2次元コードの領域が撮像面に対向して撮像された場合に得られる範囲に変換する変換ステップと、
前記2値化処理ステップの処理で生成された前記2値化データに基づいて、前記変換ステップの処理で変換された範囲に存在する前記2次元コードに割り当てられたコードデータを検出するコードデータ検出処理ステップと
を含むことを特徴とする2次元コード認識処理方法。 - 前記連結処理ステップは、
前記認識処理ステップの処理で認識された複数のコードデータが、互いに関連するコードデータであるか否かを判断する第1のステップと、
前記第1のステップの処理で、複数のコードデータが互いに関連するコードデータであると判断された場合、これら複数のコードデータを連結する第2のステップと
を含むことを特徴とする請求項1に記載の2次元コード認識処理方法。 - 前記認識処理ステップは、前記画像情報から、前記2次元コードに割り当てられたコードデータと、前記2次元コードの配置情報を認識し、
前記連結処理ステップは、前記認識処理ステップの処理で認識された配置情報に基づいて、複数のコードデータの優先順位を決定し、決定した優先順位に基づいて複数のコードデータを連結する
ことを特徴とする請求項1に記載の2次元コード認識処理方法。 - 前記2次元コードを認識する上で基準となるセルは、所定の縦横比の矩形状の黒色画素連結領域内に前記2次元コードに関連する白抜きの可読情報を含んで構成され、
前記セル検出処理ステップは、前記可読情報を含む所定の縦横比の矩形状の前記2次元コードを認識する上で基準となるセルを検出する
ことを特徴とする請求項1に記載の2次元コード認識処理方法。 - 前記可読情報は、前記2次元コードのコード体系に付されたロゴマークである
ことを特徴とする請求項4に記載の2次元コード認識処理方法。 - 複数のセルが所定の配列規則に従って2次元配置された2次元コードを認識する2次元コード認識処理装置において、
前記2次元コードを撮像した結果得られる画像情報から、前記2次元コードに割り当てられたコードデータを認識する認識処理手段と、
前記認識処理ステップによって、時間を隔てて順次複数のコードデータが認識された場 合、もしくは、同一画像情報から複数のコードデータが認識された場合、これら複数のコードデータを連結して、拡張されたコードデータを生成する連結処理手段と
を備え、
前記認識処理手段は、
前記画像情報から、所定の閾値に基づいて2値化データを生成する2値化処理手段と、
前記2値化処理手段により生成された前記2値化データに基づいて、前記2次元コードを認識する上で基準となるセルを検出するセル検出処理手段と、
前記2値化処理手段により生成された前記2値化データに基づいて、前記セル検出処理手段により検出された前記2次元コードを認識する上で基準となるセルに対応する所定の探索範囲内に存在する、前記2次元コードの領域を特定するのに基本となるセルを決定する基本セル決定手段と、
前記基本となるセルによって一意に定まる範囲を、前記2次元コードの領域が撮像面に対向して撮像された場合に得られる範囲に変換する変換手段と、
前記2値化処理手段により生成された前記2値化データに基づいて、前記変換手段により変換された範囲に存在する前記2次元コードに割り当てられたコードデータを検出するコードデータ検出処理手段と
を含むことを特徴とする2次元コード認識処理装置。 - 複数のセルが所定の配列規則に従って2次元配置された2次元コードを認識するプログラムを格納する次元コード認識処理装置を制御するコンピュータに実行させるプログラムを格納する2次元コード認識処理プログラム格納媒体において、
前記2次元コードを撮像した結果得られる画像情報から、前記2次元コードに割り当てられたコードデータを認識する認識処理ステップと、
前記認識処理ステップによって、時間を隔てて順次複数のコードデータが認識された場合、もしくは、同一画像情報から複数のコードデータが認識された場合、これら複数のコードデータを連結して、拡張されたコードデータを生成する連結処理ステップと
を含み、
前記認識処理ステップは、
前記画像情報から、所定の閾値に基づいて2値化データを生成する2値化処理ステップと、
前記2値化処理ステップの処理で生成された前記2値化データに基づいて、前記2次元コードを認識する上で基準となるセルを検出するセル検出処理ステップと、
前記2値化処理ステップの処理で生成された前記2値化データに基づいて、前記セル検出処理ステップの処理で検出された前記2次元コードを認識する上で基準となるセルに対応する所定の探索範囲内に存在する、前記2次元コードの領域を特定するのに基本となるセルを決定する基本セル決定ステップと、
前記基本となるセルによって一意に定まる範囲を、前記2次元コードの領域が撮像面に対向して撮像された場合に得られる範囲に変換する変換ステップと、
前記2値化処理ステップの処理で生成された前記2値化データに基づいて、前記変換ステップの処理で変換された範囲に存在する前記2次元コードに割り当てられたコードデータを検出するコードデータ検出処理ステップと
を含むことを特徴とする2次元コード認識処理プログラムをコンピュータに実行させる2次元コード認識処理プログラム格納媒体。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP24519499A JP3786167B2 (ja) | 1998-08-31 | 1999-08-31 | 2次元コード認識処理方法、2次元コード認識処理装置、および2次元コード認識処理プログラム格納媒体 |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP24585798 | 1998-08-31 | ||
JP10-245857 | 1998-08-31 | ||
JP24519499A JP3786167B2 (ja) | 1998-08-31 | 1999-08-31 | 2次元コード認識処理方法、2次元コード認識処理装置、および2次元コード認識処理プログラム格納媒体 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2000148904A JP2000148904A (ja) | 2000-05-30 |
JP3786167B2 true JP3786167B2 (ja) | 2006-06-14 |
Family
ID=26537097
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP24519499A Expired - Fee Related JP3786167B2 (ja) | 1998-08-31 | 1999-08-31 | 2次元コード認識処理方法、2次元コード認識処理装置、および2次元コード認識処理プログラム格納媒体 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3786167B2 (ja) |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2004090801A1 (ja) | 2003-04-08 | 2004-10-21 | Nippon Telegraph And Telephone Corporation | 情報符号化装置、情報復号化装置ならびにその方法及びプログラム |
JP4531809B2 (ja) | 2005-03-18 | 2010-08-25 | 富士通株式会社 | コード画像処理方法 |
JP2007156879A (ja) * | 2005-12-06 | 2007-06-21 | Sony Corp | 情報処理装置および方法、並びにプログラム |
EP1818849A3 (en) | 2006-02-07 | 2008-01-02 | Murata Kikai Kabushiki Kaisha | Image forming device |
EP2355526A3 (en) | 2010-01-14 | 2012-10-31 | Nintendo Co., Ltd. | Computer-readable storage medium having stored therein display control program, display control apparatus, display control system, and display control method |
JP5898842B2 (ja) | 2010-01-14 | 2016-04-06 | 任天堂株式会社 | 携帯型情報処理装置、携帯型ゲーム装置 |
JP5800501B2 (ja) | 2010-03-12 | 2015-10-28 | 任天堂株式会社 | 表示制御プログラム、表示制御装置、表示制御システム、及び、表示制御方法 |
US8633947B2 (en) | 2010-06-02 | 2014-01-21 | Nintendo Co., Ltd. | Computer-readable storage medium having stored therein information processing program, information processing apparatus, information processing system, and information processing method |
US8384770B2 (en) | 2010-06-02 | 2013-02-26 | Nintendo Co., Ltd. | Image display system, image display apparatus, and image display method |
EP2395769B1 (en) | 2010-06-11 | 2015-03-04 | Nintendo Co., Ltd. | Image display program, image display system, and image display method |
JP5647819B2 (ja) | 2010-06-11 | 2015-01-07 | 任天堂株式会社 | 携帯型電子機器 |
JP5739674B2 (ja) | 2010-09-27 | 2015-06-24 | 任天堂株式会社 | 情報処理プログラム、情報処理装置、情報処理システム、および、情報処理方法 |
US8854356B2 (en) | 2010-09-28 | 2014-10-07 | Nintendo Co., Ltd. | Storage medium having stored therein image processing program, image processing apparatus, image processing system, and image processing method |
JP5825110B2 (ja) * | 2012-01-17 | 2015-12-02 | 株式会社デンソーウェーブ | 二次元コード読み取り装置 |
JP6075180B2 (ja) | 2013-04-18 | 2017-02-08 | オムロン株式会社 | 作業管理システムおよび作業管理方法 |
JP6156441B2 (ja) * | 2015-05-14 | 2017-07-05 | オムロン株式会社 | 作業管理システムおよび作業管理方法 |
CN111178109A (zh) * | 2019-11-28 | 2020-05-19 | 北京爱创科技股份有限公司 | 一种包装关联关系的检验装置、方法及包装箱 |
-
1999
- 1999-08-31 JP JP24519499A patent/JP3786167B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2000148904A (ja) | 2000-05-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3794463B2 (ja) | 多次元コード認識処理方法、多次元コード認識処理装置、および多次元コード認識処理プログラム | |
JP3786167B2 (ja) | 2次元コード認識処理方法、2次元コード認識処理装置、および2次元コード認識処理プログラム格納媒体 | |
EP0969403B1 (en) | Two-dimensional code recognition processing method and apparatus, and storage medium | |
EP0984385B1 (en) | Two-dimensional code recognition processing | |
JP4674644B2 (ja) | 画像処理装置、画像処理方法、および画像処理プログラム媒体 | |
JP3786166B2 (ja) | 画像処理装置、画像処理方法、および画像処理プログラム | |
US7447362B2 (en) | System and method of enabling a cellular/wireless device with imaging capabilities to decode printed alphanumeric characters | |
JP4095243B2 (ja) | Url取得および処理システムおよびその方法およびその処理を実行するプログラムを記憶した記憶媒体。 | |
US6501854B1 (en) | Information processing apparatus, an information processing method and a medium | |
US20090017765A1 (en) | System and Method of Enabling a Cellular/Wireless Device with Imaging Capabilities to Decode Printed Alphanumeric Characters | |
JP2007034625A (ja) | 情報表示装置 | |
JP2003169187A (ja) | 情報処理端末 | |
JP4352287B2 (ja) | 画像処理装置、画像処理方法、および画像処理プログラム媒体 | |
JP2000207338A (ja) | 情報処理装置および方法、並びに提供媒体 | |
JP2000148797A (ja) | 画像処理装置、画像処理方法、および画像処理プログラム格納媒体 | |
JP2000207487A (ja) | 情報処理装置および方法、並びに提供媒体 | |
JP2005276119A (ja) | コードシンボル読取装置、および、プログラム | |
JP2003198674A (ja) | 携帯電話端末 | |
JP2015135701A (ja) | 2次元コード、画像読取装置、画像読取方法、プログラム及び記憶媒体 | |
JP4566297B2 (ja) | 情報処理装置および画像処理方法、並びに記録媒体 | |
JP2005038102A (ja) | ポイント管理装置およびプログラム | |
JP4019510B2 (ja) | 情報処理装置および方法、情報処理システム、並びに記録媒体 | |
JP2007133474A (ja) | 画像切出装置 | |
JP2005295313A (ja) | コード読取装置、電子機器、パラメータの調整方法及びパラメータ調整プログラム | |
JP2003281010A (ja) | 携帯端末装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20050602 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20050621 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050812 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20060301 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20060314 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100331 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100331 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110331 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120331 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130331 Year of fee payment: 7 |
|
LAPS | Cancellation because of no payment of annual fees |