本発明による識別コード読取システム及び方法の実施の形態を、図面を参照しながら詳細に説明する。
図1は、本発明による識別コード読取システムの実施の形態のブロック図である。図1に示す識別コード読取システムは、端末1と、ネットワーク(通信経路)2と、サーバ3と、を備える。本実施の形態では、識別コードとして、位置検出パターンの二つ以上の座標が取得可能な矩形であるQRコード(登録商標)等の二次元コードを用いる。位置検出パターンの座標は、例えば、撮影画像を解析することによって検出可能である。
端末1は、カメラ機能付きスマートホン、カメラが接続されたパーソナルコンピュータ(PC)等として実現され、撮影手段としてのカメラ(撮影部)1Aと、識別コード認識手段及び遷移検出手段としてのコンピュータ(識別コード認識部及び遷移検出部)1Bと、表示手段としてのディスプレイ1Cと、通信インタフェース1Dと、を有する。
カメラ1Aは、画像として読取可能な識別コードが付された物品を撮影する。このために、カメラ1Aは、レンズ1aと、イメージセンサ1bと、アナログ・デジタル変換器(AD)1cと、を有し、撮影した識別コードのデジタル画像データをコンピュータ1Bに出力する。
コンピュータ1Bは、通常のコンピュータと同様の構成で実現され、端末1の動作を制御する。本実施の形態では、コンピュータ1Bは、カメラ1Aが撮影した画像中の識別コードを認識し、認識した識別コードを識別コード情報に変換し、変換した識別コード情報を、通信インタフェース1D及びネットワーク2を介してサーバ3に送信する。
ディスプレイ1Cは、後に説明するようにしてネットワーク2及び通信インタフェース1Dを介してサーバ3から提供されたオーバーレイ情報を、カメラ1Aで撮影した画像に重畳して表示する。本実施の形態では、ディスプレイ1Cは、表示画像中で画面操作を行うことができるタッチパネルディスプレイによって構成され、コンピュータ1Bによって動作が制御される。また、本実施の形態では、カメラ1Aが複数の物品をそれぞれ撮影した場合、ディスプレイ1Cは、複数の物品にそれぞれ対応する複数の撮影画像を合わせてディスプレイ1Cの画面に表示する。本実施の形態では、後に詳細に説明するように、画像中での第1の情報及び第2の情報としての二つのオーバーレイ情報の互いに重なり合わない状態から互いに重なり合う状態への遷移があるか否かを、コンピュータ1Bが検出する。そして、コンピュータ1Bは、二つのオーバーレイ情報の互いに重なり合わない状態から互いに重なり合う状態への遷移の検出に応答して、二つのオーバーレイ情報を、通信インタフェース1D及びネットワーク2を介してサーバ3に送信する。
サーバ3は、データベース3Aと、情報抽出手段及び関連情報生成手段としてのコンピュータ(情報抽出部及び関連情報生成部)3Bと、通信インタフェース3Cと、を備える。データベース3Aは、画像として読取可能な識別コードが付された物品の情報を記憶する。本実施の形態では、データベース3Aは、画像として読取可能な識別コードが付された物品の情報を画像として読取可能な識別コードが付された他の物品の情報と関連付けて記憶する。このために、データベース3Aは、物品の情報を階層構造で記憶し、関連する情報を容易に取得できるようにしている。データベース3Aに格納される情報の階層構造の一例を図2に示す。図2に示す例において、データベース3Aは、識別コードデータを物品名に関連付けて記憶する。更に詳しく説明すると、データベース3Aは、図3に示すように、物品のコードIDを、当該物品の一つ上の階層の物品のコードIDである高次コードID及び当該物品の一つ下の階層の物品のコードIDである低次コードIDに関連して記憶する。
コンピュータ3Bは、サーバ3の動作を制御する。本実施の形態では、コンピュータ3Bは、識別コード情報を、通信インタフェース1D、ネットワーク2及び通信インタフェース3Cを介してコンピュータ1Bから受信する。そして、コンピュータ3Bは、データベース3Aにアクセスして、識別コード情報に対応する物品のオーバーレイ情報を抽出する。
本実施の形態では、コンピュータ1Bは、ディスプレイ1Cの画面内の撮影画像をラスター走査する際に撮影画像から抽出される識別コードの数を判断することによって、ディスプレイ1Cの画面内に存在する単数又は複数の識別コードを認識する。コンピュータ1Bがディスプレイ1Cの画面内に存在する単数の識別コードを認識する場合、ディスプレイ1Cは、コンピュータ1Bが抽出した単数の識別コードに対応するオーバーレイ情報を、ディスプレイ1Cの画面内の単数の識別コードに対応付けて表示する。それに対し、コンピュータ1Bがディスプレイ1Cの画面内に存在する複数の識別コードを認識する場合、ディスプレイ1Cは、コンピュータ1Bが抽出した複数の識別コードに対応するオーバーレイ情報を、ディスプレイ1Cの画面内の複数の識別コードに対応付けて表示する。
また、本実施の形態では、また、コンピュータ3Bは、二つのオーバーレイ情報の互いに重なり合わない状態から互いに重なり合う状態への遷移の検出に応答してコンピュータ1Bから送信された二つのオーバーレイ情報を、通信インタフェース1D、ネットワーク2及び通信インタフェース3Cを介して受信する。そして、コンピュータ3Bは、二つのオーバーレイ情報が互いに関連付けられたことを示す関連情報を生成し、関連情報をデータベース3Aに記憶させる。これについては後述する。
図4は、図1に示す識別コード読取システムで用いられる識別コードの一例を示す図である。図4に示す識別コード11は、35×35セルの大きさを有し、9×9のブロックに分割され、隣接するブロック間に1セルの明の分離スペース23を有する二次元コードである。したがって、分離スペースは、8×8列の1セル幅のブロック間隔の格子状パターンになる。右下の3×3ブロック及び3×3分離スペースの部分には第1位置検出パターン12Aが、左上の2×2ブロック及び2×2分離スペースの部分には第2位置検出パターン12Dが、右上の3(横)×2(縦)ブロック及び3×2分離スペースの部分には第3位置検出パターン12Bが、左下の2(横)×3(縦)ブロック及び2×3分離スペースの部分には第4位置検出パターン12Cが、それぞれ設けられている。したがって、識別コード11の第1から第4位置検出パターン以外のブロックに、第1から第4位置検出パターン以上の大きさの連続したパターンが出現することはない。
識別コード11のコード部分の最小単位はセルである。識別コード11は、通常正方形又は長方形の形状をとる。他の形状も可能だが、二次元コードの多くは四角形であり、第1実施形態の二次元コードも正方形であるが、これに限定されるものではなく、長方形でも他の形状でもよい。
一般に、二次元コードは明暗のセルでデータを表し、識別コード11もコード部は明暗のセルでデータを表す。さらに、識別コード11は、35×35セルの正方形であるが、これよりサイズの大きなコードや、長方形のような縦横の大きさを変えた形状にすることも可能である。35×35セルの正方形の二次元コードを、これをバージョン2×2と呼ぶ。ここで、最小のバージョンは1×1であり、この時のセルサイズは27×27となる。絵柄の埋込は、縦横のバージョンが共に2以上の場合に可能とする。バージョンが1×1の際に絵柄を埋め込まない理由は、データ量が少ないにも関わらず、絵柄を埋め込むと、さらにデータ量が少なくなり、認識してもほとんどデータが得られないことになるため、上記のような制限を加えた。識別コード11は、縦方向及び横方向にそれぞれ伸張できる。横バージョンが2、縦バージョンが3の場合、バージョン2×3と表記する。バージョンが1上がるごとに、セルサイズが8大きくなり、ブロック数が2大きくなる。よって、バージョン3×4では、セルサイズは43×51になる。バージョンは1から20まで選択可能であるが、これに限定されるものではない。
第1位置検出パターン12Aは、暗セルの部分が、8×8セルの1セル幅の正方形枠と、正方形枠の中心の2×2の正方形と、を有する。第2位置検出パターン12Dは、暗セルの部分が、4×4セルの1セル幅の正方形枠を有する。第3位置検出パターン12Bは、暗セルの部分が、8×4セルの1セル幅の長方形枠を有する、横長の長方形枠である。第4位置検出パターン12Cは、暗セルの部分が、4×8セルの1セル幅の長方形枠を有する、縦長の長方形枠である。
識別コード11では、正方形の二次元コードの4隅に4個の異なる位置検出パターンを配置する。なお、位置検出パターンが異なるというのは、形状、大きさ、二次元コード上での配置方向が異なる場合であり、線幅の比率が異なる場合も含まれる。ただし、撮影条件等の影響を受けるため、色の違いは対象とせず、明暗の二値画像を対象とする。
識別コード11では、位置検出パターンは、正方形又は長方形の各頂点付近に配置する。これは、1箇所に配置する場合より、できるだけ離れて配置する方が汚れの影響を分散できるためである。ただし、位置検出パターンの配置位置は、4隅に限定されるものではない。識別コード11のように、位置検出パターンとして、正方形だけでなく、長方形のものを用いることで、形状・傾き・大きさの区別が容易にできるため、高速に認識できる。また中抜きした長方形は、他の写り込みと区別するのが容易であり、データの無駄が少ない。
4個の位置検出パターンを配置する理由は、解析において精度高くデータの座標のマッピングを計算するのに用いる二次元の射影変換では、コードのセルと、そのセルに対応する撮影画像の座標を計算するために、4組の座標の組をパラメータとして与える必要があるからである。位置検出パターン数が2個又は3個しかない場合でも、座標を補間することで、4点を算出した上で射影変換を行うことは可能であるが、ななめからの撮影や、歪み、ぼけなどで正確な座標が得にくく、データ抽出の精度に大きく影響するため、識別コード11では4個の位置検出パターンを配置している。
また、位置検出パターンが異なる理由は、認識できなかった位置検出パターンがあった場合でも、認識できなかった位置検出パターンが確実に特定でき、認識できなかった位置検出パターンの座標の予測が可能になり、位置検出パターンの訂正が可能になるためである。すべて同じ位置検出パターンを用いた場合、認識できなかった位置検出パターンの特定は、すべて異なる位置検出パターンを用いた場合ほど容易ではなく、位置検出パターンの訂正が困難になる。
識別コード11の4個の位置検出パターン以外の56ブロックは、データ部であり、実データブロック、誤り訂正符号ブロック、バージョン情報ブロック、フォーマット情報ブロック、及び絵柄埋込情報ブロックと、を含む。
上記のように、データ部は3×3セルを1ブロックとし、ブロック単位でデータを埋め込む。データ部は、バージョン情報ブロック15及び16と、フォーマット情報ブロック17と、絵柄埋込情報ブロック18A、18B、19A及び19Bと、を有し、残りのブロックが実データブロック22である。識別コード11では、実データブロック22の一部を、誤り訂正符号と、位置補正パターンとして利用する。
したがって、位置検出パターン、バージョン情報ブロック、フォーマット情報ブロック、絵柄埋込情報ブロック、位置補正パターンを設けるブロック、さらに誤り訂正符号ブロックを除いた、残りのブロック22が、実データブロックである。もし、絵柄の埋め込みが行われる場合には、絵柄埋込情報ブロックが指示する絵柄埋め込みブロックも実データブロックから除く。実データは、実データブロックに属するブロックについて、左上から右に順にデータを敷き詰め、敷き詰め終わったら1ブロック下の左から敷き詰めるという具合に順に記録する。
ブロックは、3×3セルを有し、各セルは明と暗の1ビットを表すので、1ブロックは最大9ビットの情報を持つ(9ビット表現)が、ここでは画像のぼけ・ぶれに対する耐性を高めるため、1ブロック当たりのデータ量を9ビットのデータ量より小さく設定できるようにしている。なお、識別コード11では、ブロックを3×3セルのサイズとしたが、ブロックサイズはこれに限定されるものではなく、最小である1×1セルのサイズや、縦と横のセルサイズが異なるなどのブロックサイズも可能である。
バージョン情報ブロックは、識別コード11のサイズに関する情報を記録し、縦バージョン情報ブロック15と、横バージョン情報ブロック16の2種類存在し、それぞれ対応するバージョン情報が記録される。縦バージョン情報ブロック15及び横バージョン情報ブロック16は、それぞれ同じ情報を記憶した2個のブロックを離れた2箇所に配置することにより、汚れ等で欠損するリスクを分散させる。バージョン情報として、バージョン数(縦横各1から20)までの数値を表すブロックを配置する。
フォーマット情報ブロック17は、絵柄埋込フラグ(1ビット)と、データブロック種別データ(2ビット)からなるフォーマット情報を記録し、同じ情報を記憶した3個のブロックを離れた3箇所に配置する。絵柄埋込フラグは、絵柄埋込の有無、すなわち絵柄埋込領域が設けられているか否かを示す。絵柄埋込が有の場合、絵柄埋込情報ブロックが設けられる。データブロック種別データは、データブロックの種別を示し、データブロックの種別とは、1ブロック当たりのデータ容量であり、6、7、9ビット/ブロックのいずれかを選択する。データ量は9ビット>7ビット>6ビット表現の順に少なくなるが、データの読み取りのしやすさは、6ビット>7ビット>9ビットの順であり、ぼけやぶれの発生具合と、データ量を勘案して、選択する。これについては後述する。
埋め込まれる絵柄は、ブロック単位で埋め込まれ、隣接した複数のブロックが絵柄埋込領域である場合には、その間の分離スペースも絵柄埋込領域に含まれる。埋め込まれる絵柄の外形は四角形であり、絵柄の画像は、セル単位の2値画像に限定されず、どのようなものでもよい。また、絵柄を埋め込む四角形のブロックは、複数個あってもよい。例えば、絵柄は、セルより高分解能の多値画像でも、カラー画像でもよく、もちろんセル単位の2値画像でもよい。第1実施形態では、絵柄埋め込みの制限として、コード上側ブロック2行、左側ブロック2列、下側ブロック3行、右ブロック3列には絵柄を埋め込まないものとする。この範囲は二次元コードの仕様により、絵柄の埋め込み範囲外の部分に画像の情報を持つ絵柄埋込情報ブロックを配置する。
絵柄埋込情報ブロックは、絵柄を埋め込む領域のサイズ及びブロック位置に関する情報を縦横それぞれで記録し、縦埋込情報ブロック18A及び18Bと、横埋込情報ブロック19A及び19Bの2種類存在し、それぞれ対応するバージョン情報が記録される。縦埋込情報ブロック18A及び18Bは、絵柄埋め込み高さ(3ビット又は6ビット)及び絵柄埋込オフセット高さ(3ビット又は6ビット)を記録する。横埋込情報ブロック19A及び19Bは、絵柄埋込幅(3ビット又は6ビット)及び絵柄埋込オフセット幅(3ビット又は6ビット)を指定する。なお、3ビット又は6ビットにするかは、後述するようにバージョン情報に関係し、バージョンが2〜4の場合には3ビット、バージョンが5〜20の場合には6ビット必要であり、バージョン2〜4の場合には、縦埋込情報ブロック18B及び横埋込情報ブロック19Bは不要である。
絵柄埋込情報ブロックは、フォーマット情報ブロックで絵柄埋込フラグが立っていた場合のみ存在する。識別コード11は、埋込絵柄の個数が1つのみの場合を想定しており、複数の埋込絵柄を複数領域に埋め込むことを想定した場合には、フォーマット情報ブロックで絵柄埋込フラグのビット数を増加させて絵柄埋込領域数を示すようにすると共に、上記の絵柄埋込情報ブロックを絵柄枚数分設ける。絵柄のサイズと絵柄の埋込開始位置は、ブロック単位で指定する。ブロックの座標を左上隅のブロックを原点として(n,m)と表現し、横ブロック数をblW個、縦ブロック数をblH個とする。第1実施形態では、絵柄の埋め込み領域は、左上(2,2)、右下((blW−4,blH−4)からなる矩形の領域に限定される。絵柄の最大横ブロック数はblW−5個、最大縦ブロック数はblH−5個となる。
絵柄の位置は、始点(左上)となるブロック座標と、ブロックサイズの情報を絵柄埋込情報ブロックとしてコード内に埋め込むことで、コード解析時にどの位置に絵柄が入っているかを認識できるようにする。バージョン情報ブロックと同様に、横と縦で別々に扱う。横はblW−5が8未満の時(横バージョン2〜4)と、それ以外の場合(横バージョン5〜20)でデータ量を分け、縦も同様にする。blWと、blHの値は、横と縦のバージョンを解析することで求められる。
blWが13未満の時、横のブロックサイズは最小1、最大8ブロックであり、8通りは3ビットで表すことができ、同様に横のオフセットブロック数は2から8まで7通りあり、これも3ビットで表せるため、合計が6ビットとなる。そのため、ブロックを6ビット表現し、これらは1ブロックで表現可能である。縦も同様にする。blWが13以上の時、横のブロックサイズは6ビットで表し、同様に横のオフセットブロック数も6ビットで表す。よって、2ブロックを使って表現することになる。縦も同様にする。
横埋込情報ブロック19A及び19Bは、左上及び右下の横バージョン情報ブロックの外側(上側及び下側)に、縦埋込情報ブロック18A及び18Bは、左下及び右下の縦バージョン情報ブロックの外側(左側及び右側)に配置する。
絵柄を埋め込まない場合、すなわちフォーマット情報ブロックの絵柄埋込フラグが「無し」を示す場合、絵柄埋込情報ブロック及び絵柄埋め込みの領域が不要になるため、コードが効率的になる。
位置補正パターンは、実データブロック、誤り訂正符号ブロック、絵柄が埋め込まれている場合には絵柄埋込情報ブロックの座標補正に用いる目的のパターンである。識別コード11における概ねの座標は位置検出パターンから取得できるが、紙のよれ、曲がり、レンズの歪み、位置検出パターン取得時のズレによりデータ部の座標に誤差がでるので、これを修正する目的で設ける。位置補正パターンは、位置検出パターンと異なり、他のノイズと区別する必要がなく、位置検出パターンが算出できれば位置補正パターンの位置は容易に判明する。したがって、位置補正パターンは細かな座標補正がしやすい形状が望ましい。
識別コード11では、位置補正パターンは、決められたセルの組合せからなるブロック(位置補正ブロック)を実データの代わりに等間隔に配置する。ブロックの中心1セルを暗、その周囲を明にしたブロックを、ブロック座標(7n,7m)(n,mは0以上の整数)がデータ部であれば配置する。ただし、その座標に、位置検出ブロック、バージョン情報ブロック、フォーマット情報ブロック、絵柄埋込情報ブロック及び絵柄が存在すべき時は、配置しない。ここでは、ブロック座標は、ブロックの左上の座標基準座標を(0,0)とし、右隣のブロックを(1,0)と表現している。なお、位置補正パターンを設けるブロックは、上記に限られない。
実データは、メッセージと、メッセージを修飾するヘッダー(メッセージ種類(メッセージのエンコード)・メッセージサイズ)を合わせたセグメントを、メッセージ数だけ並べる。また特殊なセグメントとして、メッセージを含まない、終端フラグだけが入ったセグメントを用意し、実データの容量が余った場合に終端フラグのセグメントを配置し、その後に埋め草を配置する。実データはデータブロック種別データが示す1ブロック当たりのデータ容量に従い、ブロック単位に分割する。同様に誤り訂正符号も、ブロック単位に分割する。
誤り訂正符号にリードソロモン符号を使った場合、誤り訂正はワード単位で行われるため、1ワードを1ブロックとすることが望ましい。1ワードが複数のブロックにまたがる場合、1つのブロックに汚れが発生した場合でも、そのブロックが関係する全てのワードが誤り訂正の対象となり、訂正の効率が悪くなる。訂正原因となる汚れや、スポットライトによる色とびは、1箇所に集中することが多いが、ブロックにすることにより同時に訂正対象となるデータを1箇所にまとめる効果があり、効率的な訂正を可能にし、コードを認識させる可能性を高める。
図5は、図1の識別コード読取システムの動作のフローチャートである。ここでは、物品としての図2に示す収納箱A及びノートAにそれぞれ貼り付けられた識別コードを一度に撮影する場合について説明する。
先ず、カメラ1Aが物品を撮影する(ステップS1)。次に、ディスプレイ1Cが、カメラ1Aが撮影した物品を含む一つの撮影画像を画面に表示する(ステップS2)。図6は、図1のディスプレイの画面上での複数の物品を含む一つの撮影画像の表示例を示す図である。図6において、画面30に表示される一つの撮影画像30’に含まれる物品31,32は、図2に示す収納箱A及びノートAにそれぞれ対応し、印刷された識別コード31A,32Aが物品31,32にそれぞれ貼り付けられている。
識別コード31Aは、収納箱Aであることを示しており、コンピュータ1Bにより認識される。識別コード32Aは、ノートAであることを示しており、コンピュータ1Bにより認識される。図6に示す例において画面30(撮影画像30’)の幅及び長さをそれぞれw,hとし、左上のコーナーの座標を原点O(すなわち、(0,0))とした場合、右上のコーナーAの座標、右下のコーナーBの座標及び左下のコーナーCの座標はそれぞれ、(w−1,0),(w−1,h−1)及び(0,h−1)で表される。
次に、コンピュータ1Bは、カメラ1Aが撮影した画像中の識別コード31A,32Aを認識し、認識した識別コード31A,32Aをそれぞれ識別コード情報に変換し、変換した識別コード情報をサーバ3に送信する(ステップS3)。
次に、コンピュータ3Bは、識別コード情報をコンピュータ1Bから受信する(ステップS4)。次に、コンピュータ3Bは、データベース3Aにアクセスして、識別コード情報に対応する物品31,32のオーバーレイ情報を抽出する。
この場合、コンピュータ3Bは、物品31のオーバーレイ情報として、物品31が収納箱Aであることを示すオーバーレイ情報を抽出する。さらに、コンピュータ3Bは、物品32のオーバーレイ情報として、物品32がノートAであることを示すオーバーレイ情報を抽出する。
次に、コンピュータ3Bは、物品31,32のオーバーレイ情報をコンピュータ1Bに送信する(ステップS6)。次に、コンピュータ1Bは、物品31,32のオーバーレイ情報をコンピュータ3Bから受信する(ステップS7)。
次に、ディスプレイ1Cは、物品31,32のオーバーレイ情報を、カメラ1Aが撮影した物品31,32にそれぞれ重畳して画面に表示する(ステップS8)。
図7は、図1のディスプレイの画面上での物品のオーバーレイ情報の表示例を示す図である。図7において、ディスプレイ1Cは、物品31が収納箱Aであることを示す第1の情報としてのオーバーレイ情報31Bを、物品31に重畳して画面30に表示する。また、ディスプレイ1Cは、物品32がノートAであることを示す第2の情報としてのオーバーレイ情報32Bを、物品32に重畳して画面30に表示する。
次に、コンピュータ1Bは、撮影画像30’中での関連付ける物品31と物品32を指定する操作を検出し、物品31を、物品32の一つ上の階層の物品として選択するとともに、物品32を、物品31の一つ下の階層の物品として選択する(ステップS9)。2つの物品を指定する操作では、図示しないタッチペン、ユーザの指等によりオーバーレイ情報31B及びオーバーレイ情報32Bに順次タップすることによって、オーバーレイ情報31Bに対応する物品31を、オーバーレイ情報32Bに対応する物品32の一つ上の階層の物品に指定するとともに、オーバーレイ情報32Bに対応する物品32を、オーバーレイ情報31Bに対応する物品31の一つ下の階層の物品に指定する。物品の選択の終了後、コンピュータ1Bは、物品32の一つ上の階層の物品及び物品31の一つ下の階層の物品についての情報である物品階層情報を生成する。
次に、コンピュータ1Bは、図示しないタッチペン、ユーザの指等によりオーバーレイ情報32Bをドラッグすることによる撮影画像30’中でのオーバーレイ情報31B及びオーバーレイ情報32Bの互いに重なり合わない状態から互いに重なり合う状態への遷移を検出する(ステップS10)。このために、コンピュータ1Bは、オーバーレイ情報31B及びオーバーレイ情報32Bが互いに重なり合う状態であるか互いに重なり合わない状態であるかを、オーバーレイ情報31B及びオーバーレイ情報32Bのうちの一方(この場合、オーバーレイ情報32B)の予め決定された座標(この場合、オーバーレイ情報32Bのコーナーの座標)がオーバーレイ情報31B及びオーバーレイ情報32Bのうちの他方(この場合、オーバーレイ情報31B)の表示領域に含まれているか否かに基づいて決定する。
ここで、オーバーレイ情報31B及びオーバーレイ情報32Bの互いに重なり合わない状態から互いに重なり合う状態への遷移の検出について説明する。図7に示す例において、オーバーレイ情報31Bの右上のコーナーT0の座標(tx0,ty0)、右下のコーナーT1の座標(tx1,ty1)、左下のコーナーT2の座標(tx2,ty2)及び左上のコーナーT3の座標(tx3,ty3)はそれぞれ、ディスプレイ1Cの画面内の識別コード31Aに対応付けて表示する際に識別コード31A内の予め決定された位置座標(例えば、識別コード31Aの中心座標)に基づいて決定される。
また、図7に示す例において、オーバーレイ情報32Bの右上のコーナーJ0の座標(jx0,jy0)、右下のコーナーJ1の座標(jx1,jy1)、左下のコーナーJ2の座標(jx2,jy2)及び左上のコーナーJ3の座標(jx3,jy3)はそれぞれ、ディスプレイ1Cの画面内の識別コード32Aに対応付けて表示する際に識別コード32A内の予め決定された位置座標(例えば、識別コード32Aの中心座標)に基づいて決定される。
コーナーJ0,J1,Jj2,J3がオーバーレイ情報31Bの領域内にある状態であることがコンピュータ1Bによって判断された場合、すなわち、tx2<jx0<tx0かつty0<jy0<ty2である第1の状態、tx2<jx1<tx0かつty0<jy1<ty2である第2の状態、tx2<jx2<tx0かつty0<jy2<ty2である第3の状態又はtx2<tx3<tx0かつty0<jy3<ty2である第4の状態であることがコンピュータ1Bによって判断された場合、コンピュータ1Bは、オーバーレイ情報31Bとオーバーレイ情報32Bとが互いに重なり合っている状態であることを検出する。
それに対し、コーナーJ0,J1,J2,J3がオーバーレイ情報31Bの領域外にある状態であることがコンピュータ1Bによって判断された場合、すなわち、上記第1の状態、上記第2の状態、上記第3の状態及び上記第4の状態以外の第5の状態であることがコンピュータ1Bによって判断された場合、コンピュータ1Bは、オーバーレイ情報31Bとオーバーレイ情報32Bとが互いに重なり合っていない状態を検出する。
コンピュータ1Bは、上記第5の状態を検出した後に上記第1の状態、上記第2の状態、上記第3の状態又は上記第4の状態を検出した場合、撮影画像30’中でのオーバーレイ情報31B及びオーバーレイ情報32Bの互いに重なり合わない状態から互いに重なり合う状態への遷移を検出する。
図8は、図1のディスプレイの画面上での物品のオーバーレイ情報のドラッグの一例を示す図であり、図9は、図1のディスプレイの画面上での物品のオーバーレイ情報のドラッグ後の表示例を示す図である。図示しないタッチペン、ユーザの指等によってオーバーレイ情報32Bにタッチし、タッチした個所を起点としてオーバーレイ情報31Bの表示範囲内の所定の個所(終点)まで矢印A(図8)方向にドラッグすることによって、ディスプレイ1Cは、オーバーレイ情報32Bをオーバーレイ情報31Bに重畳して画面30に表示する(図9)。
次に、コンピュータ1Bは、物品階層情報、オーバーレイ情報31B及びオーバーレイ情報32Bをコンピュータ3Bに送信する(ステップS11)。次に、コンピュータ3Bは、物品階層情報、オーバーレイ情報31B及びオーバーレイ情報32Bをコンピュータ1Bから受信する(ステップS12)。
次に、コンピュータ1Bは、受信した物品階層情報、オーバーレイ情報31B及びオーバーレイ情報32Bに基づいて、オーバーレイ情報31Bとオーバーレイ情報32Bとが関連付けられたことを示す関連情報を生成する(ステップS13)。この場合、コンピュータ1Bは、物品31(収納箱A)の低次コードIDが物品32(ノートA)のコードIDであるとともに物品32の高次コードIDが物品31のコードIDであることを表す情報を関連情報として生成する。次に、コンピュータ3Bは、生成した関連情報に基づいて、物品31に関する情報を物品32に関する情報に関連付けてデータベース3Aに記憶させ(ステップS14)、処理フローを終了する。
図5のフローチャートを用いた図1の識別コード読取システムの動作の説明において、ステップS8でオーバーレイ情報31B及びオーバーレイ情報32Bを物品31,32にそれぞれ重畳して画面に表示する際にオーバーレイ情報31B及びオーバーレイ情報32Bが互いに重なっていないことを前提にした。
ステップS8でオーバーレイ情報31B及びオーバーレイ情報32Bを物品31,32にそれぞれ重畳して画面に表示する際にオーバーレイ情報31B及びオーバーレイ情報32Bが互いに重なっている場合には、先ず、ステップS10を実行するために、オーバーレイ情報32Bをドラッグすることによってオーバーレイ情報31B及びオーバーレイ情報32Bが互いに重なり合った状態からオーバーレイ情報31B及びオーバーレイ情報32Bが互いに重なり合わない状態に遷移させる。
その後、オーバーレイ情報32Bをドラッグすることによってオーバーレイ情報31B及びオーバーレイ情報32Bが互いに重なり合わない状態からオーバーレイ情報31B及びオーバーレイ情報32Bが互いに重なり合った状態に遷移させる。
また、ステップS8でオーバーレイ情報31B及びオーバーレイ情報32Bを物品31,32にそれぞれ重畳して画面に表示する際にオーバーレイ情報31B及びオーバーレイ情報32Bが互いに重なり合わない状態にするために、識別コード31Aに対応するオーバーレイ情報31Bの表示範囲及び識別コード32Aに対応するオーバーレイ情報32Bの表示範囲を、これらの表示範囲が重なり合わないように識別コード31A,32A内の予め決定された位置座標(例えば、中心座標)に基づいて設定してもよい。
図10は、関連情報取得後に図1のデータベースに格納される情報の階層構造の一例を示す図であり、図11は、関連情報取得後に図1のデータベースに格納される情報の内容の一例を示す図である。図10に示す階層構造において、ノートAが収納箱Aの下位階層の物品になったことを示す。また、図11に示すように、収納箱Aの低次コードIDとしてノートAのコードIDが書き込まれ、ノートAの高次コードIDとして収納箱AのコードIDが書き込まれる。
本実施の形態によれば、画像として読取可能な識別コード31A,32Aが付された物品31,32を撮影し、異なる識別コード31A,32Aが付された二つ以上(この場合、二つ)の物品31,32が表示された撮影画像30’(表示画像)中で画面操作(例えば、オーバーレイ情報のドラッグ)により関連付けた異なる識別コード(例えば、識別コード31A)の関連情報をデータベース3Aに記憶させている。このために、識別コードが付された物品(例えば、物品31)に識別コードが付された他の物品(例えば、物品32)についての情報を関連付ける操作をディスプレイ1Cの管理画面上で別途行う必要がなくなるので、識別コードが付された物品に識別コードが付された他の物品についての情報を関連付ける操作をディスプレイ1Cの画面上で迅速に行うことができる。
また、識別コードが付された物品に識別コードが付された他の物品についての情報を関連付ける操作をディスプレイ1Cの管理画面上で別途行う必要がないので、識別コードが付された物品に識別コードが付された他の物品についての情報を誤って関連付けるおそれがなくなる。例えば、収納箱AにノートAを収納すべきである場合、収納箱AにノートA以外の物品(例えば、ノートB)を誤って関連付けるおそれがなくなる。したがって、識別コードが付された物品に識別コードが付された他の物品についての情報を関連付ける操作をディスプレイ1Cの画面上で正確に行うことができる。
本実施の形態によれば、識別コードが付された物品を対象としているので、識別コードが付された物品の画像を取得することが可能である。識別コードが付された物品を撮影し、撮影した画像を表示手段に表示すれば、関連付けようとしている複数の物品を容易に確認でき、誤った関連付けを行うミスが低減できる。
また、画像処理により物品を識別するのは容易ではないが、識別コードは容易に識別可能である。そのため、物品に付された識別コードの部分を特定して関連付ければ、画像処理量が増大せず、関連付けの処理量を少なくできる。
次に、物品としての図2に示す収納箱A及びノートAにそれぞれ貼り付けられた識別コードを複数回(ここでは、2回)で撮影する場合について説明する。
図12は、図1のディスプレイの画面上での複数の物品を含む複数の撮影画像の表示例を示す図である。図12において、画面30に表示される二つの撮影画像30A,30Bにそれぞれ含まれる物品31,32は、図2に示す収納箱A及びノートAにそれぞれ対応し、印刷された識別コード31A,32Aが物品31,32にそれぞれ貼り付けられている。
図13は、図12の表示例において、物品のオーバーレイ情報をさらに表示した例を示す図である。図13において、ディスプレイ1Cは、物品31が収納箱Aであることを示すオーバーレイ情報31Bを、撮影画像30Aに含まれる物品31に重畳して画面30に表示する。また、ディスプレイ1Cは、物品32がノートAであることを示すオーバーレイ情報32Bを、撮影画像30Bに含まれる物品32に重畳して画面30に表示する。
図14は、図13の表示例における物品のオーバーレイ情報のドラッグの例を示す図であり、図15は、ドラッグ後の表示を示す図である。図示しないタッチペン、ユーザの指等によって撮影画像30Cに含まれるオーバーレイ情報32Bにタッチして矢印A’(図14)方向にドラッグすることに応じて、ディスプレイ1Cは、撮影画像30Bに含まれるオーバーレイ情報32Bを撮影画像30Aに含まれるオーバーレイ情報31Bに重畳して画面30に表示する(図15)。
図12〜15を用いて説明したように収納箱A及びノートAにそれぞれ貼り付けられた識別コードを複数回(ここでは、2回)で撮影する場合には、図5に示すステップS1〜S9を物品ごとに2回実行した後にステップS10〜S14を実行する。
図12〜15を用いた説明において、撮影画像30Aと撮影画像30Bとを重ね合わせてディスプレイ1Cの画面30に表示し、オーバーレイ情報31B,32Bを撮影画像30A,30Bにそれぞれ重畳する場合について説明したが、撮影画像30Aのみをディスプレイ1Cの画面30に表示し、オーバーレイ情報31B,32Bを撮影画像30Aに重畳することもできる。
本発明は、上記実施の形態に限定されるものではなく、幾多の変更及び変形が可能である。例えば、データベースをサーバの代わりに端末に設けることもできる。また、対応する識別コードが付された3個以上の物品を一度に又は個別に撮影して画面に表示する場合にも、本発明を適用することができる。
また、コンピュータ1Bをパーソナルコンピュータ(PC)によって実現し、オーバーレイ情報21B,22Bにそれぞれ対応する物品31,32の選択、オーバーレイ情報のドラッグ等のディスプレイ1Cの画面操作を、コンピュータ1Bに接続したマウスによって行うこともできる。
さらに、上記実施の形態において、関連情報取得前に物品間の一部について既に階層構造が確立されるとともに関連情報取得後に物品間の全てについて階層構造が確立される場合について説明したが、関連情報取得前に物品間で階層構造が確立されていない場合又は関連情報取得後に物品間の一部について階層構造が確立される場合にも、本発明を適用することができる。
さらに、上記実施の形態においては、オーバーレイ情報を表示して関連付操作を行う例を説明した。オーバーレイ情報は、コンピュータ1Bにより表示範囲が指定されるため、互いに重なり合わない状態から重なり合う状態への遷移を容易に判定できる。前述のように、二次元コードも4個の位置検出パターンの位置を検出することにより、二次元コードの範囲を検出することができる。これは他の識別コードについても同様であり、識別コードの範囲を検出することができる。そのため、オーバーレイ情報の代わりに、表示された物品に付された識別コードを使用して、物品を関連付けることも可能である。その場合、撮影された物品に付された識別コードが、ドラッグ等の操作によって移動するのは奇異に感じられる場合がある。そこで、例えば、識別コードのコード範囲を示す枠を表示し、前述のオーバーレイ情報の代わりに枠を利用してドラッグ等の操作を行うようにする。また、画面にポインタを表示し、ポインタが一方の識別コードのコード範囲に表示された状態から、ドラッグ等の操作に応じてポインタが他方の識別コードのコード範囲へ移動するポインタの移動軌跡を表示し、その移動軌跡により遷移を検出することもできる。