(57)【特許請求の範囲】
【請求項１】
物体に付けられる二次元識別子であって、表面検知システムによって決定可能であるように値が放射状コードを用いてコード化された二次元識別子であって、
（ａ）前記表面検知システムにより検出可能な材料からなる円形の連続領域を含み、前記表面検知システムにより検出された場合に、前記表面検知システムの座標系に関して前記二次元識別子の配向を示す軸を有する楕円として近似される手掛かりコンポーネントと、
（ｂ）前記連続領域を囲むよう配置され、前記表面検知システムにより検出可能な材料と検出不可能な材料との組み合わせからなる複数のバイナリ要素によって前記値をコード化した放射状コードを備えるコード部分と、
（ｃ）前記連続領域内に且つ該連続領域の中心から第１の定義済みの半径のところに配置され、前記表面検知システムにより検出不可能な材料からなる部分領域であって、前記コード部分が読み取られるべき開始ビットの位置を表す部分領域と、
（ｄ）前記コード部分を囲む境界領域であって、前記表面検知システムにより検出不可能な材料からなり、前記コード部分を囲む干渉マスクとして機能してノイズを最小限に抑える境界領域と
を備えることを特徴とする二次元識別子。
【請求項２】
表面検知システムによって、請求項１に記載された二次元識別子から値を決定する方法であって、
（ａ）前記手掛かりコンポーネントを検出するステップと、
（ｂ）前記手掛かりコンポーネントを楕円として近似し、前記表面検知システムに関して前記手掛かりコンポーネントの位置および配向を決定するステップと、
（ｃ）前記部分領域を検出するステップと、
（ｄ）検出された前記部分領域を用いて、前記手掛かりコンポーネントの前記位置および配向に関して前記コード部分の前記開始ビットを特定するステップと、
（ｅ）前記コード部分の前記開始ビットから前記連続領域の周方向に、前記表面検知システムにより前記複数のバイナリ要素を検出するステップと、
（ｆ）検出された前記複数のバイナリ要素の関数として前記値を復号化するステップと、
（ｇ）前記二次元識別子の値と関連した物体識別子を決定するステップと、
を含むことを特徴とする方法。
【請求項３】
請求項２に記載の方法をコンピュータに実行させるマシン可読命令を格納したことを特徴とするコンピュータ読み取り可能媒体。
【請求項４】
表面検知システムによって、請求項１に記載された二次元識別子から値を決定するシステムであって、
（ａ）前記物体が隣接して置かれる対話型の側と対向側とを持つ対話型表示面と、
（ｂ）赤外線を前記対話型表示面の前記対向側に向けて、前記対話型表示面を通して、前記対話型の側に当てる光源と、
（ｃ）前記物体に付けられている前記二次元識別子を含む画像を形成する前記対話型表示面を通じて前記パターン形成された物体から反射されて戻ってくる赤外線を受け取って感知するように配置されている光センサと、
（ｄ）前記光センサと通信するプロセッサと、
（ｅ）前記プロセッサと通信し、かつデータとマシン命令を格納するメモリと
を具備し、前記マシン命令が、請求項２に記載の方法をプロセッサに実行させることを特徴とするシステム。
【請求項５】
前記マシン言語命令は、さらに、
（ａ）前記赤外線の前記反射から、正規化された画像を出力して前記赤外線の不均一を補正し、
（ｂ）定義済みの第１の光強度しきい値に基づいて前記正規化された画像から２値化画像を出力し、
（ｃ）前記２値化画像を使用して前記手掛かりコンポーネントを決定し、
（ｄ）前記正規化された画像を使用して、第２の光強度しきい値に基づき、前記複数のバイナリ要素を検出する
ことを前記プロセッサに実行させることを特徴とする、請求項４に記載のシステム。
【請求項６】
前記マシン言語命令は、さらに、前記二次元識別子の前記値に関連付けられている物体識別子を決定することを前記プロセッサに実行させることを特徴とする、請求項４に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的に、コード化されたパターンを使用して物体を光学的に識別することに関係しており、より具体的には、物体が対話型表示面の表面上またはその付近に置かれた場合にパターンから反射された赤外線に基づいての物体を識別できるように、その物体に付けることができるさまざまなコード化されたパターンに関係する。
【背景技術】
【０００２】
通常、所定の物体に一意的識別子（数またはバイナリビットコード（ｂｉｎａｒｙ  ｂｉｔ  ｃｏｄｅ）を関連付ける場合に、ＵＰＣ記号などの視覚的コードが使用される。この一意的識別子は、物体上に印刷されている視覚的パターンの一部分の配列を分析する画像処理手法を使用して検出される。このような視覚的コーディングスキーム（ｖｉｓｕａｌ  ｃｏｄｉｎｇ  ｓｃｈｅｍｅｓ）を設計する場合、パターンは物体を撮像することで容易に検出できるか、像内でパターンが特定された後そのパターンから識別子を容易に復元できるか、およびコード化されたビットの個数、誤り検出および／または訂正、回転依存性または不変性などの視覚的コードのさまざまな特徴を考察することが重要である。
【０００３】
視覚的コードが復号化されなければならないアプリケーションでは、物体に識別子を付けるために使用される視覚的コードの形態に制約条件を課すことが多い。例えば、視覚的コードが付けられる物体は、比較的小さく、そのため、視覚的コードはコンパクトでなければならない。さらに、視覚的コーディングに使用されるパターンは、そのパターンを読み取るために使用される撮像システムから、その解像度制約条件の範囲内で、認知できなければならない。小物体が特定の形状を有する、例えば、視覚的コードが検出される表面上の丸い「フットプリント」を有する場合には、一般的に物体のその丸い形状にマッチする円形の視覚的コードを使用することが望ましいであろう。同様に、小物体が矩形または長円形の場合、物体の形状は、視覚的コードの向きを判別しやすくし、コードで使用されるパターンの復号化を容易にし、物体を識別できるようにする形状であるのが望ましいであろう。
【０００４】
市場またはその他の小売店で売られている製品のＵＰＣバーコードに使用される視覚的コードは、通常、コヒーレント光レーザ光源を使用してバーコードをスキャンすることにより読み取られる。このようなレーザ走査システムは比較的高い解像度を持ち、周辺光からの干渉を受けることなくバーコードを走査できる十分に高い強度のレーザ光原を採用している。対照的に、像内の物体の視覚的コードを復号化することはかなり難しく、特に、対話型表示装置の表示面などの比較的大きな面の像の場合には困難である。撮像システムは、まず、表面の像の中の物体を検出し、その後、物体に付けられている視覚的コードのパターンを復号化しなければならない。
【０００５】
当業では視覚的コードを使用して物体を識別する対話型表示装置が知られている。例えば、対話型表示装置プラットフォームは、ＭＩＴ  Ｍｅｄｉａ  Ｌａｂで開発された（例えば、非特許文献１を参照）。ｍｅｔａＤＥＳＫは、二次元地理的情報を表示するために使用される水平に近い地理的表面を含む。デスクユニット内の（つまり、グラフィカルサーフェスの下の）コンピュータ視覚システムは、赤外線（ＩＲ）ランプ、ＩＲカメラ、ビデオカメラ、ビデオプロジェクタ、および鏡を備える。これらの鏡は、プロジェクタによって投射されたグラフィック画像をグラフィック表示面の下側に反射する。ＩＲカメラは、グラフィック面上に置かれている「ファイコン（ｐｈｉｃｏｎｓ）」と呼ばれる物体の下面の材料バッキングを含む「ホットミラー」から反射されたＩＲ光を検出することができる。「グレートドームファイコン（Ｇｒｅａｔ  Ｄｏｍｅ  ｐｈｉｃｏｎ）」の底面に適用される可視光線に対し透過的なこの材料からのＩＲ反射をＩＲカメラが検出したことに対する応答として、ＭＩＴキャンパスの地図が、グレートドームファイコンが置かれている場所に位置するその地図内のグレートドームの実際の場所とともに、グラフィック面に表示される。本明細書では、ＩＲパターンを使用するということの教示または示唆を与えず、また、視覚フレーム毎にソフトウェアが「シーンから抽出された未識別『ブロブ』のリスト」を出力することを示す以外に、検出され、識別される仕方に関する詳細を教示または説明しない。
【０００６】
表示面上の物体を感知する類似のアプローチは、他社と協同でＪｕｎ  Ｒｅｋｉｍｏｔｏ  ｏｆ  Ｓｏｎｙ  Ｃｏｍｐｕｔｅｒ  Ｓｃｉｅｎｃｅ  Ｌａｂｏｒａｔｏｒｙ，Ｉｎｃ．社により発表されているいくつかの論文で開示されている。これらの論文では、「ＨｏｌｏＷａｌｌ」および「ＨｏｌｏＴａｂｌｅ」について簡単に説明しており、これらは両方とも、ＩＲ光を使用して、後面投射された像が見える表示面に近い、または接触している物体を検出する。ＨｏｌｏＷａｌｌ内では垂直、ＨｏｌｏＴａｂｌｅ内では水平の後面投射パネルは、半不透明で拡散的であり、物体は近づくにつれはっきり見えるようになり、やがてパネルに接触する。識別のため物体上のＩＲ検出可能パターンを使用することを述べたが、ここでもまた、ＩＲパターンについて、または物体を識別するためにＩＲパターンを検出する方法について詳しくは説明しない。
【０００７】
【非特許文献１】Brygg Ullmer and Hiroshi Ishii in "The metaDESK: Models and Prototypes for Tangible User Interfaces," Proceedings of UIST 10/1997: 14-17
【非特許文献２】"Connected Components Analysis" by Andrew Hunter, www.dur.ac.uk/andrewl.hunter/Vision/CV02ConnectedComponents.pdf
【発明の開示】
【発明が解決しようとする課題】
【０００８】
従来技術では、さまざまな種類の視覚的コードが知られている。しかし、上述の解像度およびその他の制約条件に制限があるため、高解像度のスキャナと連動するように設計されている従来技術の視覚的コードの多くは、像内の比較的小さな物体に付けられている視覚的コードを読み取るために表示面全体の像内の反射されたＩＲ光を使用しなければならない視覚システムとともに使用するのには適さないことが多い。したがって、識別すべき物体の形状およびサイズに適している、比較的限られた解像度を持つ視覚検知システムにより識別できる視覚的コードを採用することが望ましいであろう。コード化されたパターンを持つ物体が表面上を動き回っている間にリアルタイムで復号化できるためには、十分簡単に復号化できる適当なコード化されたパターンが必要である。パターンは、表面の像内で比較的高いコントラストのＩＲを与え、拡散面を通じてパターンを復号化できることが望ましいが、それは、多くの従来技術のコード化されたパターンは、必要な解像度が大きすぎてそのような表面上では使用できないからである。好適なコード化パターンのさらに望ましい特性は、それが固有の配向性を持ち、そのため、表面上のコード化されたパターンを見つけるために必要な探索空間が絞り込まれることである。同様の理由から、コード化されたパターンは、検出および復号化を容易に行えるように、単一の接続されたコンポーネントとして認識可能であることが好ましいであろう。従来技術では、上述のように、拡散表示面および視覚検知システムに比較的特有のこれらの問題の多くを解決していない。
【課題を解決するための手段】
【０００９】
本発明の利点の１つは、物体の形状およびサイズ、識別子を撮像するために使用される視覚検知システムの解像度により課される制限、および物体が使用されるソフトウェアアプリケーションの要件に基づき、対話型表示テーブルとともに使用される物体に対し適切な識別子を使用できるという点である。したがって、本発明の一態様は、二次元識別子が対話型テーブルの表面検知システムの隣に配置された場合に値を決定することができるように値をコード化するために物体に付けられる二次元識別子を対象とする。二次元識別子は、表面検知システムが応答する検出可能な材料の連続領域を持つ手掛かり（ｃｕｅ）コンポーネントを含む。手掛かりコンポーネントは、表面検知システムにより検出された場合に楕円で近似され、この楕円は表面検知システムの座標系に関して二次元識別子の配向（ｏｒｉｅｎｔａｔｉｏｎ）を示す軸を持つ。識別子のコード部分は、手掛かりコンポーネントに関する定義済みの場所内に配置される。コード部分では、表面検知システムにより検出可能な少なくとも１つのバイナリ要素で値をコード化する。さらに含まれているのは、手掛かりコンポーネントおよびコード部分を囲む境界領域である。境界領域は、表面検知システムにより二次元識別子の一部として検知されず、手掛かりコンポーネントおよびコード部分を囲む干渉マスクとして機能し、ノイズを最小限に抑える検出不可能な材料を含む。検出可能な材料は、表面検知システムが応答する赤外線を反射する反射材料を含む。
【００１０】
この識別子では、いくつかの異なる種類のコード化が使用される。ある種類のコード化では、値をコード化するために放射状コード（ｒａｄｉａｌ  ｃｏｄｅ）が使用され、この種のコード化では、手掛かりコンポーネントは検出可能材料の連続放射状領域を含む。放射状領域は、放射状領域の中心から第１の定義済み半径のところに配置された検出不可能な材料の部分領域を含む。この部分領域は、コード部分が読み取られる開始位置を示す開始ビットを表す。また、コード部分は、放射状領域の中心から第２の定義済み半径のところに配置された領域内に構成され、第２の定義済み半径は、第１の定義済み半径よりも大きく、コード部分は、一般的に、手掛かりコンポーネントの周りに伸びる。
【００１１】
他のコード化スキームでは、値をコード化するため可変長線形コードを採用する。このスキームでは、手掛かりコンポーネントは、実質的に長さが等しく、開始ビットとして使用される検出可能な材料の定義済み領域により第１の端部に接続されている検出可能な材料でできている平行な複数のストリップを含む。平行なストリップは、第１の端部の反対側にある第２の端部で検出不可能な材料により分離され、第２の端部の検出不可能な材料は終了ビットとして使用される。コード部分は、検出可能な領域と検出不可能な領域からなるパターンを含む。それぞれの検出可能な領域およびそれぞれの検出不可能な領域は、定義済み寸法を持ち、平行なストリップ同士の間および開始ビットと終了ビットとの間に配置される。
【００１２】
他のコード化スキームでは、値をコード化するため可変ビット長コードが使用される。この場合、手掛かりコンポーネントは、定義済み寸法および可変長寸法を含む。定義済み寸法は、常に、可変長寸法よりも小さく、可変長寸法は、基準配向および符合部分の範囲を示す。コード部分は、手掛かりコンポーネントから定義済みオフセットのところにある第１のバイナリ要素から始まり、追加バイナリ要素は、手掛かりコンポーネントの基準配向に一般的に平行な方向で可変長寸法により示されるコード部分の範囲で終わる１行分のバイナリ要素を形成する、または可変長寸法に一般的に垂直な方向で１行が表面検知システムにより検出可能な少なくとも１つのバイナリ要素を含まない場合に終わるバイナリ要素のマトリクスを形成する、または直前のバイナリ要素に関する定義済み方向および定義済み距離で互いに関して定義済み位置にある一連のバイナリ要素を形成する３つの方法のうちの少なくとも１つで第１のバイナリ要素から伸びてゆく。
【００１３】
他の種類のコード化では、値は多層可変ビット長コードを使用してコード化されるため、手掛かりコンポーネントは、２値化しきい値で検出可能であり、少なくとも１つの可変長寸法を持つ定義済み形状を有する。少なくとも１つの可変長寸法は、基準配向およびコード部分の範囲を示す。コード部分は、グレースケールのしきい値で検出可能な少なくとも１つのバイナリ要素を含むが、２値化しきい値では検出可能ではない。グレースケールのしきい値で検出可能な少なくとも１つのバイナリ要素は、手掛かりコンポーネント内に配置され、手掛かりコンポーネントは、２値化しきい値で一様であるが、グレースケールのしきい値では少なくとも１つのバイナリ要素を明らかにする。また、コード部分は、ローカルの原点から定義済みオフセットのところに配置され、手掛かりコンポーネントに関して定義済み位置に配置されている第１のバイナリ要素から開始することができ、追加バイナリ要素は、表面検知システムにより使用される１つの軸に一般的に平行な方向および直前のバイナリ要素に関する定義済み方向および定義済み距離のうちの少なくとも１つで第１のバイナリ要素から伸びてゆき、コード部分が定義済み形状を含むように互いに関する定義済み位置に一連のバイナリ要素を形成する。
【００１４】
本発明の他の態様は、物体が表面検知システムの表面の近くに置かれた場合に物体に付けられる二次元識別子から値を決定する方法を対象とする。この方法は、一般的に上述のように識別子を検出する。
【００１５】
本発明のさらに他の態様は、物体を近くに置くことができる対話型の側と対側を持つ対話型表示面を含む物体に付けられる二次元識別子から値を決定するためのシステムを対象とする。システム内の光源は、ＩＲ光を対話型表示面の対側に向けて、対話型表示面を通して、対話型の側に当てる。光センサは、対話型表示面を通じてパターン形成された物体から反射されて戻ってくるＩＲ光を受け取って感知し、物体に付けられている二次元識別子を含む像を形成するように配置される。光センサと通信しているプロセッサは、メモリ内に格納されているマシン命令を実行し、この命令により、プロセッサは、対話型表示面上またはその近くに置かれている物体に付けられている識別子によりコード化された値を決定するために使用される方法の複数のステップと一般的に一致する複数の機能を実行する。
【００１６】
本発明の前述の態様およびその結果の利点の多くは、添付の図面に関して、以下の詳細な説明を参照することにより容易に理解できるため明白であろう。
【発明を実施するための最良の形態】
【００１７】
本発明を実装するコンピューティングシステム例
図１を参照すると、本発明のさまざまな部分を実装するのに好適なシステム例が示されている。システムは、処理ユニット２１、システムメモリ２２、およびシステムバス２３を備える従来のＰＣ２０の形態の汎用コンピューティングデバイスを含む。システムバスは、システムメモリを含むさまざまなシステムコンポーネントを処理ユニット２１に結合し、またメモリバスまたはメモリコントローラ、周辺機器バス、およびさまざまなバスアーキテクチャを使用するローカルバスを含む数種類のバス構造のいずれでもよい。システムメモリは、読み取り専用メモリ（ＲＯＭ）２４およびランダムアクセスメモリ（ＲＡＭ）２５を含む。起動時などにＰＣ２０内の要素間の情報伝送を助ける基本ルーチンを含む基本入出力システム２６（ＢＩＯＳ）は通常、ＲＯＭ２４に格納される。ＰＣ２０は、さらに、ハードディスク（図に示されていない）への読み書きを行うためのハードディスクドライブ２７、取り外し可能磁気ディスク２９への読み書きを行うための磁気ディスクドライブ２８、およびコンパクトディスク読み取り専用メモリ（ＣＤ−ＲＯＭ）またはその他の光媒体などの取り外し可能光ディスク３１への読み書きを行うための光ディスクドライブ３０を備える。ハードディスクドライブ２７、磁気ディスクドライブ２８、および光ディスクドライブ３０は、ハードディスクドライブインターフェイス３２、磁気ディスクドライブインターフェイス３３、および光ディスクドライブインターフェイス３４によりそれぞれシステムバス２３に接続される。ドライブおよび関連コンピュータ可読媒体は、ＰＣ２０用のコンピュータ可読マシン命令、データ構造体、プログラムモジュール、およびその他のデータを格納する不揮発性記憶装置を実現する。本明細書で説明されている環境例ではハードディスク、取り外し可能磁気ディスク２９、および取り外し可能光ディスク３１を採用しているが、当業者であれば、磁気カセット、フラッシュメモリカード、デジタルビデオディスク（ＤＶＤ）、ベルヌーイカートリッジ、ＲＡＭ、ＲＯＭなどのコンピュータからアクセス可能なデータおよびマシン命令を格納できる他のタイプのコンピュータ可読媒体もこの動作環境例で使用できることを理解するであろう。
【００１８】
オペレーティングシステム３５、１つまたは複数のアプリケーションプログラム３６、その他のプログラムモジュール３７、およびプログラムデータ３８を含む、多くのプログラムモジュールは、ハードディスク、磁気ディスク２９、光ディスク３１、ＲＯＭ２４、またはＲＡＭ２５に格納されることができる。ユーザはキーボード４０およびポインティングデバイス４２などの入力デバイスを通じてＰＣ２０にコマンドおよび情報を入力し、制御入力を送ることができる。ポインティングデバイス４２は、マウス、ペン、ワイヤレスリモコン、またはその他のポインタを含むことができるが、本発明に関して、ユーザ側で入力および制御に対話型表示装置を採用することができるため、そのような従来のポインティングデバイスを省くことができる。これ以降使用されるように、「マウス」という用語は、画面上のカーソルの位置を制御するために使用される実質的にいかなるポインティングデバイスをも包含することを意図している。他の入力デバイス（図に示されていない）としては、マイク、ジョイスティック、触覚ジョイスティック、ヨーク、フットペダル、ゲームパッド、衛星放送受信アンテナ、スキャナなどがある。これらおよびその他の入力／出力（Ｉ／Ｏ）デバイスは、システムバス２３に結合されているＩ／Ｏインターフェイス４６を通じて処理ユニット２１に接続されることが多い。Ｉ／Ｏインターフェイスという用語は、シリアルポート、パラレルポート、ゲームポート、キーボードポート、および／またはユニバーサルシリアルバス（ＵＳＢ）に特に使用されるそれぞれのインターフェイスを包含することを意図している。システムバス２３は、さらに、カメラインターフェイス５９にも接続され、後述のように、このインターフェイスは、対話型表示装置６０に結合され、対話型表示装置６０に搭載されているデジタルビデオカメラから信号を受信する。代わりに、デジタルビデオカメラをＵＳＢバージョン２．０ポートなどの適切なシリアルポートＩ／Ｏに結合することもできる。任意選択で、モニタ４７をビデオアダプタ４８などの適切なインターフェイスを介してシステムバス２３に接続することができるが、ただし、本発明の対話型表示テーブルは、かなり情報豊富な表示を行い、ユーザによる対話操作により、情報の入力およびソフトウェアアプリケーションの制御を行うことができ、したがって、ビデオアダプタに結合されることが好ましい。ＰＣは、スピーカ（サウンドカードまたは他のオーディオインターフェイス−図には示されていない）およびプリンタなどの、他の周辺出力デバイス（図に示されていない）に結合されることが多いことは理解されるであろう。
【００１９】
本発明は、単一のマシン上で実施することができるが、ＰＣ２０は、リモートコンピュータ４９などの１つまたは複数のリモートコンピュータへの論理接続を使用してネットワーク接続環境で動作することもできる。リモートコンピュータ４９は、他のＰＣ、サーバ（一般的にＰＣ２０とまったく同様に構成されるのがふつう）、ルータ、ネットワークＰＣ、ピアデバイス、または衛星またはその他の共通ネットワークノードでもよく、通常は、ＰＣ２０に関して上述の要素の多くまたはすべてを含むが、外部メモリ記憶デバイス５０だけが図１に例示されている。図１で説明されている論理接続は、ローカルエリアネットワーク（ＬＡＮ）５１とワイドエリアネットワーク（ＷＡＮ）５２を含む。このようなネットワーキング環境は、オフィス、企業全体にわたるコンピュータネットワーク、イントラネット、およびインターネットでは一般的である。
【００２０】
ＬＡＮネットワーキング環境で使用される場合、ＰＣ２０は、ネットワークインターフェイスまたはアダプタ５３を介してＬＡＮ５１に接続される。ＷＡＮネットワーキング環境で使用する場合、ＰＣ２０は、通常、インターネットなどのＷＡＮ５２上で通信を確立するために、モデム５４、またはケーブルモデム、デジタル加入者回線（ＤＳＬ）インターフェイス、または総合デジタル通信網（ＩＳＤＮ）インターフェイスなどの他の手段を含む。モデム５４は、内蔵でも外付けでもよいが、システムバス２３に接続されるか、またはＩ／Ｏデバイスインターフェイス４６、つまり、シリアルポートを介してバスに接続される。ネットワーク接続環境では、ＰＣ２０により使用されるプログラムモジュールはまたはその一部分は、リモートメモリ記憶デバイスに格納することができる。図に示されているネットワーク接続は実施例であり、無線通信および広帯域ネットワークリンクなどのコンピュータ間の通信リンクを確立するのに他の手段が使用可能であることは理解されるであろう。
【００２１】
対話型の表面の実施例
図２には、フレーム６２内にＰＣ２０を含み、コンピュータの光入力およびビデオ表示デバイスの両方として使用される対話型表示テーブル６０の実施例が示されている。対話型表示テーブルのこの切り欠き図では、テキストおよびグラフィック画像を表示するために使用される光線は、一般的に、点線を使用して示され、対話型表示テーブルの表示面６４ａに載っている、または真上にある物体を感知するために使用される赤外線（ＩＲ）光は、破線を使用して示されている。表示面６４ａは、対話型表示テーブルの上面６４内にセットされる。テーブル面の周辺は、表示面６４ａ上に表示されているグラフィック画像または仮想環境を対話形式で操作するために使用することができる物体を含む、ユーザの腕またはその他の物体を支えるために使用される。
【００２２】
ＩＲ光源６６は、複数のＩＲ発光ダイオード（ＬＥＤ）を備えるのが好ましく、フレーム６２の内側に取り付けられる。ＩＲ光源６６により出力されるＩＲ光は、破線７８ａ、７８ｂ、および７８ｃにより示されるように、上向きに、表示面６４ａの下側に当てられる。ＩＲ光源６６から出たＩＲ光は、光拡散特性を有するベラムまたは他の好適な半透明材料のシートを含む、テーブルの半透明層６４ｂを通過した後、表示面の上または近いところにある物体から反射される。図にはＩＲ光源６６が１つしか示されていないが、そのような複数のＩＲ光源は、フレーム６２の内側の周りの間隔を空けた位置に取り付けて、表示面６４ａを均等に照らすようにできることは理解されるであろう。ＩＲ光源により出力される赤外線は、
・破線７８ａにより示されているように、物体を照らさずに、テーブル面を抜けるか、
・破線７８ｂにより示されているように、テーブル面上の物体を照らすか、
・破線７８ｃにより示されているように、テーブル面から上に短い距離のところにあり、テーブル面と接触していない物体を照らすことができる。
【００２３】
表示面６４ａの上にある物体は、表示面の上に載る「タッチ」物体７６ａおよび表示面に近いが実際には接触していない「ホバー」物体７６ｂを含む。半透明層６４ｂを表示面の下に使用し、表示面を通過するＩＲ光を拡散させた結果、物体が表示面６４ａに近づくにつれ、物体により反射されるＩＲ光の量は、物体が実際に表示面と接触した場合に得られる最大レベルまで増大する。
【００２４】
デジタルビデオカメラ６８は、表示面６４ａの下のフレーム６２に取り付けられ、表示面６４ａの上の方に配置されたタッチ物体またはホバー物体から反射されるＩＲ光を受信するのに適切な位置にある。デジタルビデオカメラ６８は、ＩＲ光のみを透過し、点線８４ａに沿って表示面６４ａ内を伝わる周辺可視光線をブロッキングするＩＲパスフィルタ８６ａを装備している。ＩＲ光源６６とデジタルビデオカメラとの間に邪魔板７９を配置し、ＩＲ光源から直接放射されたＩＲ光がデジタルビデオカメラに入らないようにしたが、なぜかというと、このデジタルビデオカメラは、表示面６４ａから上に短い距離のところにある、または表示面６４ａに接触する物体から反射されたＩＲ光にのみ反応（応答）し、表示面に載っている、またはその上の方にある物体から反射されたＩＲ光の像に対応する出力信号を発生しなければならないからである。デジタルビデオカメラ６８は、さらに、上から表示面６４ａを通り、対話型表示装置の内側に入る周辺光（例えば、点線８４ａにより示されている経路に沿っても伝わる周囲ＩＲ光）に含まれるＩＲ光にも反応することは理解されるであろう。
【００２５】
テーブル面にある、またはその上の方にある物体から反射されたＩＲ光は、
・反射して戻り、破線８０ａおよび８０ｂにより示されているように、半透明層６４ｂを通り、ＩＲパスフィルタ８６ａを通り、デジタルビデオカメラ６８のレンズ内に入るか、または
・破線８０ｃに示されているように、デジタルビデオカメラ６８のレンズに入ることなく、対話型表示装置内の他の内面により反射または吸収される可能性がある。
【００２６】
半透明層６４ｂは、入射ＩＲ光と反射ＩＲ光の両方を拡散する。したがって、上で説明したように、表示面６４ａに近い「ホバー」物体ほど、表示面から遠い同じ反射率の物体と比べてより多くのＩＲ光を反射して、デジタルビデオカメラ６８に返す。デジタルビデオカメラ６８は、撮像フィールド内の「タッチ」および「ホバー」物体から反射されたＩＲ光を検知し、それぞれのそのような物体の位置、および任意選択により、物体のサイズ、配向、および形状を決定する処理のため、ＰＣ２０に入力された反射ＩＲ光の像に対応するデジタル信号を出力する。物体の一部（ユーザの指など）が表示面に接触している間に、物体の他の部分（ユーザの前腕など）がテーブルの上にあってよいことに留意されたい。さらに、物体は、その物体またはその物体が一員である関連する物体のクラスに特有のその物体に固有の底面についているＩＲ光反射パターンまたはコード化された識別子（例えば、バーコード）を含むことができる。したがって、デジタルビデオカメラ６８からの撮像信号は、さらに、本発明により、反射パターンから反射されたＩＲ光に基づいて、それぞれのそのような固有の物体を検出するだけでなく、その配向を決定するのにも使用することができる。この機能を実行するために実装される論理的ステップについて以下で説明する。
【００２７】
ＰＣ２０は、図２に示されているように対話型表示テーブル６０と一体であるか、またはその代わりに、図３の実施形態に示されているように、対話型表示テーブルに対し外付けとすることもできる。図３では、対話型表示テーブル６０’は、データケーブル６３を通じて外部のＰＣ２０（上述のように、オプションのモニタ４７を含む）に接続されている。さらに、この図に示されているように、１組の直交軸ＸおよびＹが、表示面６４ａに関連付けられており、また「０」で示される原点も関連付けられている。個別には示されていないが、それぞれの直交軸に沿う複数の座標位置を使用して、表示面６４ａ上の位置を指定できることは理解されるであろう。
【００２８】
対話型表示テーブルが外部のＰＣ２０に接続されるか（図３のように）、またはセットトップボックス、テレビゲーム機、ラップトップコンピュータ、またはメディアコンピュータ（図に示されていない）などの他の種類の外部コンピューティングデバイスに接続されている場合、対話型表示テーブルは入力／出力デバイスを備える。対話型表示テーブルに送られる電力は、従来の交流（ＡＣ）電源（図に示されていない）に結合されている電源リード６１を通じて供給される。対話型表示テーブル６０’に接続されるデータケーブル６３は、ＰＣ２０上のＵＳＢ２．０ポート、Ｉｎｓｔｉｔｕｔｅ  ｏｆ  Ｅｌｅｃｔｒｉｃａｌ  ａｎｄ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｅｎｇｉｎｅｅｒｓ（ＩＥＥＥ）１３９４（またはファイヤワイヤ）ポート、またはＥｔｈｅｒｎｅｔ（登録商標）ポートに結合することができる。また、無線接続の速度が向上し続けると、対話型表示テーブルも、そのような高速無線接続、または他の何らかの適切な有線または無線データ通信リンクを介して、ＰＣ２０などのコンピューティングデバイスに接続されることもありうると考えられる。対話型表示装置の一体部分として内蔵されるか、または外付けされるかに関係なく、ＰＣ２０は、デジタルビデオカメラ６８からのデジタル画像を処理するアルゴリズムを実行し、よい所をひき立てて対話型表示テーブル６０のより直観的なユーザインターフェイス機能を使用するように設計されたソフトウェアアプリケーションを実行し、さらに、そのような機能を利用するように特に設計されていないが、それでも、対話型表示テーブルの入力および出力機能を適切に使用できる他のソフトウェアアプリケーションをも実行する。
【００２９】
対話型表示テーブル（つまり、上述のいずれかの実施形態）の重要で強力な特徴は、ゲームまたはその他のソフトウェアアプリケーションのためのグラフィック画像または仮想環境を表示し、グラフィック画像または仮想環境の間の対話操作を表示面６４ａ上に表示できるようにし、物体７６ａなどの表示面の上に載っている物体、または物体７６ｂなどの、その真上でホバリングしている物体を識別する機能である。
【００３０】
ここでもまた、図２を参照すると、対話型表示テーブル６０は、グラフィック画像、仮想環境、またはテキスト情報を表示面６４ａ上に表示するために使用されるビデオプロジェクタ７０を備えている。ビデオプロジェクタは、解像度が少なくとも６４０×４８０ピクセルの液晶表示装置（ＬＣＤ）またはデジタルライトプロセッサ（ＤＬＰ）タイプであるのが好ましい。ＩＲカットフィルタ８６ｂは、ビデオプロジェクタ７０のプロジェクタレンズの前面に取り付けられ、これにより、ビデオプロジェクタにより放射されたＩＲ光が対話型表示テーブルの内部に入ってＩＲ光が表示面６４ａに載っている、またはその上にある物体から反射されたＩＲ光と干渉するのを防止する。第１の鏡組立部品７２ａは、投射光が第２の鏡組立品７２ｂ上に入射するように、点線８２ａに沿ってプロジェクタレンズから伝わる投射光をフレーム６２内の透明開口部９０ａに通す。第２の鏡組立品７２ｂは、投射像が見えるように、また表示のため表示面６４ａ上に焦点が合うように、プロジェクタレンズの焦点のところにある半透明層６４ｂ上に投射光を反射する。
【００３１】
表示面に投射された像が表示面と必ず揃うように第１および第２の鏡組立品の角度を調整するため、位置合わせデバイス７４ａおよび７４ｂが用意され、ネジ棒および回転可能調整ナット７４ｃを含む。投射像を所望の方向に向ける他に、これら２つの鏡組立品を使用することで、プロジェクタ７０と半透明層６４ｂとの間の経路を長くできるため、焦点距離の長い（したがって低コストの）プロジェクタレンズをプロジェクタとともに使用することができる。
【００３２】
物体のコード認識
図４には、コード化された物体の二次元識別子コードを認識するための論理全体を例示する流れ図が示されている。ステップ１００で、ゲームなどのアプリケーションプログラムでは、そのアプリケーション側でテーブル上にある物体に付いていることを検知することを期待する種類のコードを指定する。本発明で使用可能なコードの種類には、円形、リニア、マトリクス、可変ビット長マトリクス、多層マトリクス、白黒（バイナリ）、およびグレースケールがある。コードの種類を指定する方法としては、コードパターンの特性のロード、しきい値の設定、および／またはパターン認識に対するテンプレートの有効化が考えられる。テンプレートの有効化は、さらに、物体認識を容易にするテンプレートのいくつかの回転バージョンを生成することをも含むことができる。
【００３３】
図４の残りの論理回路は、現在実行中のソフトウェアアプリケーションと通信する画像処理モジュールにより実行されるのが好ましい。このようにして、ソフトウェアアプリケーションは、標準的な方法により画像処理モジュールとインターフェイスすることができる。以下で詳しく説明するが、画像処理モジュールは、形状、ピクセル強度、コードタイプ、および対応するコード値を通じて物体を検出することに関係するさまざまな機能を実行する。例としては、物体がテーブル上に、任意の向きで出現できる場合にコード化された物体を見つけることを試みるテンプレート照合またはしきい値設定がある。
【００３４】
ステップ１０２で、画像処理モジュールは、表示面上またはその付近にある１つまたは複数の物体から、テーブルの表示面から届いた反射されたＩＲ光に対する応答としてＩＲビデオカメラにより出力される現在の入力像の２値画像内の接続コンポーネントを検出する。ＩＲ視覚システムのこの実施例では、接続コンポーネントは２値画像内の１組の隣接する「オン」ピクセルを含む。これらのピクセルは、ＩＲビデオカメラに向かって反射ＩＲ光が戻るＩＲ反射材料を含む二次元識別子コードの一部分を含む。接続コンポーネントは、対話型テーブル上に置かれている物体に付けられている識別子コード全体、またはその識別子付号のコード部分から分離されているサブコンポーネントに対応することができる。後述のいくつかの場合には、別々のサブコンポーネントが、識別子コードの位置および配向を決定するのを補助する手掛かりコンポーネントとして機能する。他の場合には、識別子コード全体がそれ専用の手掛かりコンポーネントとして使用され、それにより、識別子コードの位置および配向を特定する。２値画像は、正規化された入力画像のどのピクセルが所定の２値化しきい値を超えるかを判別することにより形成される。接続コンポーネント検出は、Ｂ．Ｋ．Ｐ．Ｈｏｒｎ（「ロボット視覚」を参照）により説明されているアルゴリズムなどの標準アルゴリズムを使用して実行される。
【００３５】
ステップ１０４では、画像処理モジュールは、接続コンポーネントを楕円として表し、楕円の長軸および短軸の中心および長さを計算する。その後、画像処理モジュールは、接続コンポーネントのピクセルに対する平均値および共分散値を求め、楕円軸に沿ってのピクセルの統計的平均および共分散に基づき、対話型表示テーブルの座標に関して接続コンポーネントの位置および配向を決定する。この手法の詳細については、例えば、非特許文献２を参照のこと。
【００３６】
接続コンポーネントの位置および配向を決定した後、画像処理モジュールは１つまたは複数の任意選択の決定ステップを実行することによりコードのタイプおよび値を容易に決定できる。一実施形態では、任意選択の決定ステップ１０６、１１０、１１４、１１８、および１２０は、使用されず、プロセスは順次、ステップ１０４からコード決定ステップ１０８、１１２、１１６、１２２、１２４を通り、ステップ１２６へと流れ、そこでコード決定の結果の順位付けを行い、統計解析に基づいて最も近いコードタイプを選択する。第２の実施形態では、これらの任意選択の決定ステップは、実行されるべきコード決定ステップを選択するために使用される。例えば、任意選択の決定ステップ１０６は、コード決定ステップ１０８が実行されるべきかどうかを示す。したがって、この実施形態は、コード検出に必要な計算量を減らすフィルタとして機能する。
【００３７】
コードタイプがうっかり捨てられないようにするため、上記の手法の組み合わせを使用することができる。組み合わせられた手法では、複数の任意選択の決定ステップを使用して、「信頼度」係数を決定されるそれぞれのコードタイプに割り当てることができる。例えば、画像処理システムでは、決定ステップ１０６での決定に従い、指定された半径内に収まる接続コンポーネントの統計解析に基づいて信頼度係数を割り当てることができる。同様に、画像処理モジュールでは、同じ接続コンポーネントが決定ステップ１１０での決定に従い指定された正方形領域内に収まる場合に他の信頼度係数を割り当てることができる。他の信頼度係数は、さらに、接続コンポーネントの短軸と指定された長さとが等しいかどうか（決定ステップ１１４の場合）、接続コンポーネントと指定された形状との一致（決定ステップ１１８の場合）、または接続コンポーネントへのビットの近さ（決定ステップ１２０の場合）について決定することもできる。一般に、信頼度係数は、コードタイプ毎に決定することができ、現在の検出されたコンポーネントに最も当てはまるコードタイプを決定する際にこの信頼度係数を使用できる。例えば、信頼度係数は、ピクセルがどれだけよく「読み取られるか」、つまり、白黒強度レベルにどれだけくっきりと分けられるか、およびさらにピクセル値が有効なコードのコードブックからの有効なビットコードのうちの１つとしてどれだけよく「読み取られるか」ということからも決定することができる。また、信頼度レベルは、最大および最小ピクセル強度レベルが少なくともある程度の所定の値だけ異なるかどうかにより決定することができるが、それは、それらの強度の差の値が小さすぎると、ピクセルはノイズとなる可能性があるからである。
【００３８】
例として、図４では、接続コンポーネントが少なくとも最小基準条件を満たすそれぞれのコードタイプに対するコード値を決定しながら、それぞれのコードタイプに対する最小基準条件を満たさないコードタイプを除去するために使用される第１と第２の実施形態の組み合わせを示している。これらの任意選択の決定ステップは、一致する可能性のあるコードタイプについて接続コンポーネントを最初にふるいにかけるため単独で、または組み合わせて実行することができる。接続コンポーネントが一致する可能性のあるコードタイプについて、画像処理モジュールでは、それぞれの一致する可能性のあるコードタイプから接続コンポーネントの分散を決定するのが好ましい。その後、画像処理モジュールは、最良適合により決定を順位付けして、最も一致度の高いコードタイプおよび対応するコード値を、物体に付けられたコードとして選択する。
【００３９】
上で示されているように、任意選択の決定ステップ１０６で、画像処理モジュールは、特定の半径または放射状マスク内に収まるかどうかについて接続コンポーネントをテストする。接続コンポーネント軸の長さおよび／またはピクセル値の総和が定義済み範囲内にある（つまり、接続コンポーネントが放射状マスクの範囲内に収まる）場合、画像処理モジュールはステップ１０８に進み、放射状コードを決定する。放射状コードの決定の詳細は、図５および６に関して以下で説明される。放射状コードを決定した後、または接続コンポーネントが定義済み半径または放射状マスクの範囲内に収まらない場合、処理は任意選択の決定ステップ１１０に進む。
【００４０】
任意選択の決定ステップ１１０では、画像処理モジュールは、ダイの寸法に対応する指定正方形領域内に収まるかどうかについて接続コンポーネントをテストする。接続コンポーネントが回転された白色の正方形テンプレートと一致するか、または主軸および副軸が等しい長さであり、定義済みダイ寸法に対応する（つまり、接続コンポーネントがダイ寸法の範囲内に収まる）場合、画像処理モジュールはステップ１１２に進み、ダイのスポットパターンを決定する。ダイのスポットパターンの決定の詳細は、図７および８に関して以下で説明される。ダイのスポットパターンを決定した後、または接続コンポーネントが知られているダイの寸法に対応する指定された正方形領域の範囲内に収まらない場合、処理は任意選択の決定ステップ１１４に進む。
【００４１】
任意選択の決定ステップ１１４では、画像処理モジュールは、リニアコード高さに対応する所定の長さと等しいかどうかについて接続コンポーネントをテストする。接続コンポーネントの短軸の長さが所定の長さに等しい（つまり、接続コンポーネントの２番目の軸がリニアコード高さに等しい）場合、画像処理モジュールはステップ１１６に進み、そのリニアコードを決定する。リニアコードの決定の詳細は、図９および１０に関して以下で説明される。リニアコードを決定した後、または接続コンポーネントの副軸が所定の長さに等しくない場合、処理は任意選択の決定ステップ１１８に進む。
【００４２】
任意選択の決定ステップ１１８では、画像処理モジュールは、所定の形状または手掛かりコンポーネントと一致するかどうかについて接続コンポーネントをテストする。接続コンポーネントが１つの知られている寸法を持つ直線の形状でない（つまり、接続コンポーネントは手掛かりコンポーネントと一致していない）場合、画像処理モジュールはステップ１２６に進み、そのような直線の形状である場合、画像処理モジュールは任意選択の決定ステップ１２０に進む。
【００４３】
任意選択の決定ステップ１２０で、画像処理モジュールは、近隣コードビットについて接続コンポーネントをテストする。接続コンポーネントの所定の距離および配向の範囲内に非連結ビットがある（つまり、接続コンポーネントが近隣コードビットを持つ）場合、画像処理モジュールはステップ１２２に進み、マトリクスコードを決定する。マトリクスコードの決定の詳細は、図１１および１２に関して以下で説明される。マトリクスコードを決定した後、または接続コンポーネントの所定の距離および配向の範囲内に非連結ビットがない（つまり、接続コンポーネントが近隣コードビットを持たない）場合、画像処理モジュールはステップ１２４に進み、グレースケールコードを決定する。グレースケールコードの決定の詳細は、図１３、１４、および１５に関して以下で説明される（ステップ１２２からステップ１２４への論理の流れは第１の実施形態の順次的な論理の流れを示す）。
【００４４】
ステップ１２６で、画像処理モジュールは、（複数の）コード決定の結果を順位付けし、その後、統計解析を実行して、接続コンポーネントが適合する可能性が最も高いコードタイプを選択する。接続コンポーネントが、コードとして検出されない場合、画像処理モジュールは、その接続コンポーネントを識別子が付けられていない、ユーザの指または非コード化物体などの他のタイプの物体であると評価することができる。
【００４５】
放射状コード認識
図５は、丸い物体、つまり丸い「フットプリント」を持つ物体に識別子を付ける際に特に有用な放射状コード１３０の実施例を示している。放射状コード１３０は、暗い「開始ビット」１３４を持つ光反射内部円形領域１３２を含む。開始ビット１３４は、コード化領域の中心から定義済みの第１の半径のところに配置されるのが好ましく、キーストーン、パイスライスの形状、または開始ビットを簡単に特定できるその他の形状を取ることができる。光反射内部円形領域内の開始ビットは、コード値を決定できる開始基準点を定める。開始ビットは、光反射内部円形領域に関して、さらに、コードが付けられる物体の配向を定義する。
【００４６】
放射状コード１３０は、さらに、明るいキーストーン形状と暗いキーストーン形状の「データビット」を伴う外側の均等に分割された同心状円環１３６を含む。円環１３６は、第１の半径よりも大きい中心からの第２の半径のところに配置される。破線は、この図の中にのみ含まれ、データビットの配置をより明確に示すことに留意されたい。しかし、実際の放射状コードは、そのような線を含まず、光反射領域全体が単一の接続コンポーネントを含む。この場合、識別子コード全体がそれ独自の手掛かりコンポーネントとして機能する。外側の均等に分割された同心状円環は、コードの値を、明るいキーストーン形状と暗いキーストーン形状のビットの一連の並びとして含む。コード値は、定義済みの時計回り（または代わりに、好ましい反時計回り）の方向で開始ビットを配置することから始めて、読み取られる。
【００４７】
暗い背景１３８は、放射状コードが接続コンポーネントとして簡単に検出できるように、放射状コード１３０を囲む。暗い背景では、「ノイズ」ピクセルが接続コンポーネントの一部としてみなされるリスクを極力小さくする。
【００４８】
図６は、放射状コードを処理するため画像処理モジュールにより実行される論理的ステップを例示する流れ図である。ステップ１４０で、画像処理モジュールは、円形領域の中心から定義済み半径のところで開始ビットを探索する。探索領域は、データビットの半径以内に配置される。一般に、画像処理モジュールでは、定義済み固定しきい値を使用して、任意のビットの値を決定することができる。しかし、信頼性を高めるために、画像処理モジュールは、しきい値をコードパターンの最小ピクセル値と最大ピクセル値との平均値として計算するのが好ましい。上述のように、最小ピクセル値と最大ピクセル値との差が小さすぎるのは、ノイズを復号化しようとすることが原因である可能性がある。
【００４９】
決定ステップ１４２で、画像処理モジュールは、定義済み半径のところで開始ビットが見つかったかどうかを判定する。開始ビットが見つからない場合、放射状コード決定のプロセスは終了する。しかし、開始ビットが見つかった場合、画像処理モジュールはステップ１４４に進み、定義済みの時計回り（または反時計回り）の方向に円形領域の中心から定義済み半径のところでデータビットを読み込む。これらのビットは、入力画像からの変形されたテーブル座標に関して知られている半径方向の幅を持つ。
【００５０】
任意選択の決定ステップ１４６で、有効な放射状コードかどうかをテストする。放射状コードの有効性をテストするために、画像処理モジュールは、検出されたビットが可能な有効なコード値からなるテーブル内に存在するコード値を表すことを検証することを試みることができる。その代わりに、画像処理モジュールは、接続コンポーネントを有効な放射状コードのテンプレートと比較することができる。このパターンマッチング手法を、図８に関して詳述する。検出されたコードが有効なコードでない場合、放射状コード決定のプロセスは終了する。検出されたコードが有効な場合、または任意選択の有効性検査が実行されない場合、画像処理モジュールは、ステップ１４８に進み、テーブルルックアップまたは他のそのような方法を使用してコード内で検出されたビットから物体ＩＤを決定する。
【００５１】
ダイマトリクスコード認識
図７は、ダイの面などの正方形の物体を認識する際に使用されるマトリクスコード１５０の実施例を示している。マトリクスコード１５０は、１から６個のデータビット１５４（ダイスポット）が３×３のグリッド１５８内に６つの所定のパターンで配列されている接続コンポーネントの正方形領域１５２（白色で示されている）を含む。破線は、データビットを例示するために図に含まれているだけであり、実際のダイマトリクスコードは線を含まないことに留意されたい。
【００５２】
ダイのピクセルは、正方形領域内の３×３グリッドから読み取られる。この後、３×３グリッドパターンは、６つの許容可能なダイフェースパターンのそれぞれと比較され、「２」、「３」、または「６」のスポットダイフェースの場合は、さらに、９０度回転されたバージョンのダイフェースパターンとも比較される。その代わりに、任意のサイズおよび関連するダイフェースビットパターンのグリッドを読み取ることもできる。表示面に面しているダイフェースが識別された後、反対側のダイフェースは常に定義済みの関係を持つ、つまり、知られているダイフェースに向かい合うダイフェースは７と知られているダイフェースとの差に等しい数のスポットを持つため上を向いているダイフェースが知られる。
【００５３】
暗い背景１５６は、マトリクスコードが接続コンポーネントとして簡単に検出できるように、マトリクスコード１５０を囲む。暗い背景では、「ノイズ」ピクセルが接続コンポーネントの一部としてみなされるリスクを極力小さくする。
【００５４】
図８は、ダイマトリクスコードを決定するため画像処理モジュールにより実行される論理的ステップを例示する流れ図である。ステップ１６０で、画像処理モジュールは、白色の正方形テンプレートを９０度までの所定の角度だけ回転し、テンプレートと接続コンポーネントとの照合を行うことにより正方形の接続コンポーネントの配向を決定する。その後、画像処理モジュールは、ステップ１６２に進んで、３×３グリッド内から接続コンポーネントの２値化画像のピクセルパターンを読み取る。
【００５５】
ステップ１６４ａでは、それぞれの知られているダイフェースパターン（および「２」、「３」、または「６」個のスポットがあるダイフェースの場合には、９０度回転させたバージョンのダイフェースパターン）を繰り返し調べるプロセスを開始する。決定ステップ１６６で、接続コンポーネントから読み取られたピクセルパターンと知られているダイフェースパターンとを比較する。ピクセルパターンが知られているダイフェースパターンと一致した場合、画像処理モジュールはステップ１６８に進み、ダイの上面の値を決定する。上述のように、ダイ上の対面の合計は７に等しく、上面の値は７引く検出パターン内のスポット数に等しい。上面の値を決定した後、画像処理モジュールは終了する。ただし、知られているダイフェースパターンが接続コンポーネントのピクセルパターンと一致しない場合、反復プロセスはステップ１６４ｂで終了する。
【００５６】
リニアコード認識
図９は、物体の認識で使用されるリニアコード１７０の実施例を示す。リニアコード１７２は、２つの明るい平行なバー１７４ａと１７４ｂ、明るい開始ビット１７６、暗い停止ビット１７８、および複数の明るいまたは暗いコードビット１８０を含む。「明るい」および「暗い」という用語は、物体または物体自体の材料上のコード化パターンを作成するために適用される材料のＩＲ反射率を意味することは明白であろう。明るいビットは、ＩＲ光の良好な反射器である識別子の一部に対応し、暗いビットまたは領域は、識別子の一部またはＩＲ光を吸収する、またはあまりよく反射しない物体の囲む部分に対応する。これらの用語は、表示面の像は電子的に容易に反転できるため、いくぶん恣意的である。
【００５７】
暗い背景１８２は、リニアコードが接続コンポーネントとして簡単に検出できるように、リニアコードを囲む。暗い背景では、「ノイズ」ピクセルが接続コンポーネントの一部としてみなされるリスクを極力小さくする。ここでもまた、データビットを線引きする線は、データビットを例示するだけのために図に含まれていることに留意されたい。実際のリニアコードは、通常、識別可能な線を含まない。
【００５８】
リニアコードは、接続コンポーネントであり、主軸または長軸に関して対称的である。接続コンポーネントプロセスから計算されるような配向は、コードを表示する物体の真の向きから１８０度ずれることがある。開始ビットおよび停止ビットの位置を調べることにより、復号化アルゴリズムにより、配向の訂正を行うことができる。リニアコード内のビットの個数は可変である。ビットのサイズ（例えば、幅）が与えられると、リニアコード内のビットの個数は、明るい平行なバーの長さから直接決定することができる。リニアコードの実施例１７２ａから１７２ｈは、３ビットコードの８つすべてのインスタンスを示している。
【００５９】
図１０は、リニアコードを決定するため画像処理モジュールにより実行される論理的ステップの論理的ステップを例示する流れ図である。ステップ１９０で、画像処理モジュールは、主軸（長軸）の角から開始し、接続コンポーネントの主軸に垂直なそれぞれの線の中のピクセル値を総和することにより、接続コンポーネントの終了辺を特定する。リニアコンポーネント終端は、総和が０か、または所定の低いしきい値以下である場合に確認される。開始ビットの終了では、終了ビットの終了よりも大きな総和を持つことになる。決定ステップ１９２で、画像処理モジュールは、開始ビットの存在についてテストする。開始ビットが見つからない場合、リニアコードを決定するプロセスは終了し、見つかれば、プロセスはステップ１９４に続き、ステップ１９０で見つかった接続コンポーネントの終わりからコードの長さを決定する。
【００６０】
任意選択の決定ステップ１９６で、画像処理モジュールは、有効なコード長についてテストする。物体が検出されるソフトウェアアプリケーションに基づき、コードの長さが予期した通りでない場合、リニアコードを決定するプロセスは終了する。ソフトウェアアプリケーションにより、コードの長さが予期した通りの場合、または有効なコード長についてテストする任意選択の決定が実行されない場合、プロセスはステップ１９８に進み、コード内のビットの個数を決定する。コード内のビットの個数は、以下の式で計算される。
コードビット＝（接続コンポーネント長／ビット幅）−２
【００６１】
プロセスはステップ２００に進み、長軸または主軸に沿ってそれぞれのコードビットの値を決定する。コードビット値は、
・コードビットの中心にあるピクセルの値に基づくか、または
・コードビットの領域内のすべての値の総和の平均値と所定のしきい値とを比較し、平均値が所定のしきい値よりも大きい場合には、コードビット値は「１」であるとすることにより、または
・パターンマッチングによるか、または
・他の何らかの司法使用することにより決定することが可能である。
【００６２】
プロセスはステップ２０２に進み、テーブルルックアップまたは他のそのような方法を介してコードビットの値から物体ＩＤを決定する。
【００６３】
可変ビット長マトリクスコード認識
図１１は、物体の認識で使用される可変ビット長マトリクスコード２１０の実施例を示す。可変ビット長マトリクスコード２１２は、明るい矩形の接続「手掛かり」コンポーネント２１４を含む。手掛かりコンポーネントの副軸または短軸は固定長であるが、主軸または長軸は、任意の長さ（短軸よりも長い）でよい。可変ビット長マトリクスコードの配向の推定は、リニアコードとほとんど同じようにして導かれる。手掛かりコンポーネントの配向は、最大１８０度の回転まで正しく、これは、さらに、ビットフィールドが配置されている手掛かりコンポーネントの辺を決定することにより訂正することができる。手掛かりコンポーネントの形状により、対応する楕円形モデルの配向信頼性を高めることが好ましい。
【００６４】
可変ビット長マトリクスコードは、さらに、マトリクスフィールド２１６も含み、これは、手掛かりコンポーネントの一辺または両辺上の手掛かりコンポーネントの主軸から一定距離のところに配置される。データビットを線引きする線は、データビットを例示するだけのために図に含まれているのであり、実際のダイマトリクスコードは見える線を含まないことに留意されたい。マトリクスフィールドの幅は、手掛かりコンポーネントの主軸の長さに等しい。マトリクスフィールドは、１つまたは複数のデータビット行を含む。マトリクスフィールドの各行は、少なくとも１つの明るい、または白色ビットを含み、このため、復号化アルゴリズムでは、１行内に白色ビットが見つからなくなるまで、手掛かりコンポーネントから外に向かって連続する行を読み取ることによりビットの行数を決定することができる。その代わりに、マトリクスフィールド内の行の数は、マトリクスフィールドの第１の行の中にコード化することができる。手がかりコンポーネントの可変長の主軸とともに、可変個数の行を使用することにより、コードはさまざまな物体サイズに合わせて適切な形状を取るようにできる。マトリクスフィールドは、１つまたは複数のチェックサムビットを含むことができるので、画像分析によりビットシーケンスが復号化された後、復号化の誤りを検出することができる。チェックサムビットは、さらに、復号化プロセスが手掛かりコンポーネントの正しい辺からビットシーケンスを読み取ったかどうかについて、その問題を判別する他の手順がない場合に、それを決定するために使用することができる。そのようなアルゴリズムは、単に、手掛かりコンポーネントの両辺から復号化を試みて、有効なシーケンスを正しいビットパターンとして使用するだけである。その代わりに、手掛かりコンポーネントの形状は、コードが配置されているマトリクスの辺を示すことができる。
【００６５】
可変ビット長マトリクスコードは、暗い背景２１８により囲まれる。暗い背景により、手掛かりコンポーネントを接続コンポーネントとして容易に検出することができ、「ノイズ」ピクセルを手掛かりコンポーネントおよびマトリクスフィールドの一部とみなす危険性を最小限に抑えられる。
【００６６】
図１２は、可変ビット長マトリクスコードを決定するため画像処理モジュールにより実行される論理的ステップを例示する流れ図である。ステップ２３０で、画像処理モジュールは、手掛かりコンポーネントの長さを決定する。画像処理モジュールは、手掛かりコンポーネントを楕円として表し、楕円の長軸および短軸の中心および長さを計算する。次に、画像処理モジュールは、楕円形の軸の統計学的平均および共分散から、テーブル座標に関する手掛かりコンポーネントの位置および配向を決定する。
【００６７】
処理はステップ２３２に進み、マトリクスフィールドの１行当たりのビット数を決定する。コードビットの幅は固定であり、知られているため、１行当たりのビット数はコードビットの知られている幅で除算された手掛かりコンポーネントの長さに等しい。
【００６８】
好ましい任意選択のステップ２３４では、画像処理モジュールは、２値化画像の代わりに正規化された画像にアクセスして、さらに処理を容易にする。正規化された画像を２値化すると、ノイズピクセルが入り込むことが多いが、正規化された画像からビットを読み取ると、比較的信頼性の高いピクセル値が得られ、より小さなビットパターンを読み取ることができる。
【００６９】
ブロック２３６ａ内のプロセスは、手掛かりコンポーネントの一辺上の可変ビット長マトリクスコードの値を確認する。ステップ２３８ａでは、手掛かりコンポーネントの一辺のマトリクスフィールドの各行を繰り返しアドレス指定するプロセスを開始する。マトリクスフィールドの各行は手掛かりコンポーネントから連続する所定のオフセット距離のところに配置されているため、コードビットの読み取りの反復は、離散ステップで実行される。ステップ２４０ａで、プロセスはマトリクスフィールドの１行内のデータビットを読み取る。データビットの読み取りは、定義済みの固定しきい値または相対的しきい値を使用して実行されるのが好ましく、その場合、相対的しきい値は、最大ピクセル強度と最小ピクセル強度との差の関数として決定される。パターンマッチングは可能であるが、可変長の行と可変個の行を検出する自由度は制限される。
【００７０】
決定ステップ２４２ａで、コードの終わりを示す、コードビットの不足がないかをテストする。その行にコードビットが含まれていない場合、反復プロセスは終了し、含まれている場合、プロセスはステップ２４４ａに進み、行コードを格納しておいて後で処理する。反復プロセスはステップ２４６ａに進む。
【００７１】
続いて、ブロック２３６ｂ内の任意選択のプロセスは、手掛かりコンポーネントの対辺上の可変ビット長マトリクスコードの値を確認する。このステップは、アプリケーションプログラム側で可変ビット長マトリクスフィールドが手掛かりコンポーネントの両辺に含まれるべきと予期している場合、またはアプリケーションプログラムが手掛かりコンポーネントの両辺から読み取りを試み、アルゴリズムを使用し、チェックサムまたはその他の妥当性確認プロセスを使ってコードの妥当性を確認する場合に実行されるが、それは、マトリクスコードの配向が±１８０度で決定されるからである。
【００７２】
任意選択のステップ２３８ｂでは、手掛かりコンポーネントの対辺のマトリクスフィールドの各行を繰り返しアドレス指定するプロセスを開始する。これ以降、任意選択のステップ２４０ｂ、２４２ｂ、２４４ｂ、および２４６ｂは、ステップ２４０ａ、２４２ａ、２４４ａ、および２４６ａと同じ機能をそれぞれ実行するが、ただし、手掛かりコンポーネントの対辺上のビットに対してである。コード決定プロセスはステップ２４８に進み、そこで、ルックアップテーブルまたは他の適切な方法使用してステップ２４４で格納されているコードビットから物体ＩＤを決定する。
【００７３】
グレースケールコードおよび任意形状コードの認識
図１３は、物体の認識で使用されるグレースケールコード２５２の実施例を示す。グレースケールコードでは、複数のしきい値を使用して、白黒画像だけでなくグレースケール画像をも検出する。グレースケールコード２５２ａは、接続「手掛かり」コンポーネント２５４ａを含む。暗い背景２５２ａは、グレースケールコードが接続コンポーネントとして簡単に検出できるように、グレースケールコードを囲む。暗い背景により、手掛かりコンポーネントを容易に検出することができ、「ノイズ」ピクセルを手掛かりコンポーネントの一部とみなす危険性を最小限に抑えられる。入力画像の２値化では、しきい値を、入力画像を白黒でレンダリングする所定のレベルに設定する。したがって、２値化された手掛かりコンポーネントは白色であり、そのため、手掛かりコンポーネントとして容易に識別可能である（灰色ビットは２値化画像内では白色である）。
【００７４】
手掛かりコンポーネントが検出された場合、第２の所定のしきい値が正規化された画像に適用され、手掛かりコンポーネント内の灰色および白色のコードビットを現す。この所定の第２のしきい値は、さらに、上で説明したように決定される、相対的しきい値であってよい。したがって、２値化された手掛かりコンポーネント２５４ａ、２５４ｃ、２５４ｅ、および２５４ｇは対をなす片割れのグレースケールコンポーネント２５４ｂ、２５４ｄ、２５４ｆ、および２５４ｈをそれぞれ含む。灰色および白色のデータビットは、手掛かりコンポーネントに関する定義済み位置に配置される。データビットを線引きする線は、データビットを例示するだけのために図に含まれていることに留意されたい。ただし、実際のグレースケールコードは、通常、そのような見える線を含まない。
【００７５】
グレースケールコードに対する手掛かりコンポーネントは、手掛かりコンポーネント例２５４ｃおよび２５４ｇにより示されているように、矩形である必要はない。接続コンポーネントが認識された後、第２の所定のしきい値は、接続コンポーネント内のグレースケールコードビットを現すことができる。その代わりに、グレースケールコードでは、手掛かりコンポーネントを特定するためにパターン認識を使用することもできる。
【００７６】
グレースケールコードの埋め込みの性質により、共通の中心を持つ２つの接続コンポーネントを使用することができる。接続コンポーネントのこのような配列は、偶然起こることは非常にあり得ず、容易に検出される。手掛かりコンポーネント例２５２ｅは、他の接続コンポーネント２５４ｅ内に中心を置く接続コンポーネント２５５ｅを含む。グレースケールコードの配向は、手掛かりコンポーネント内のいくつかのコードビットが白色、灰色、またはその独自の組み合わせであると規定することにより定義することができる。例えば、グレースケールコンポーネント２５４ｂおよび２５４ｆの配向は、コーナービットの１つだけ除いて全部が灰色である必要がある場合に容易に確認される。２５４ｃおよび２５４ｇなどの非対称の手掛かりコンポーネントの形状は、グレースケールコードの配向を明確に示すことができる。グレースケールコードは、複数のチェックサムビットを含むことができるので、画像分析によりビットシーケンスが復号化された後、復号化の誤りを検出することができる。
【００７７】
図１４は、物体、特に奇妙な形の物体を認識する際に使用される任意形状コード例２６０を示す。任意形状コード２６０は、接続「手掛かり」コンポーネント２６２、および１つまたは複数のデータビット２６４を含む。任意形状コードは、暗い背景２６８により囲まれる。暗い背景により、手掛かりコンポーネントデータビットを容易に検出することができ、「ノイズ」ピクセルをコードの一部とみなす危険性を最小限に抑えられる。任意形状コードのデータビットは、手掛かりコンポーネントに関する定義済み位置に置かれている。その代わりに、データビットを、それぞれのデータビットの位置が予め定義されるように前のデータビットに関する定義済み位置に置くこともできる。
【００７８】
任意形状コードは、さらに、１つまたは複数の空の領域２６６を含むこともできる。このような空の領域は、コードが付けられる物体の形状に内在することがある。空の領域は、データビットの配置に影響を及ぼす場合がある。例えば、データビット２６４ｂは、空の領域２６６によりデータビット２６４ａから隔てられる。その代わりに、空の領域は、一定の力でつる巻きバネ３０４を押したときに、例えば、ＩＲ反射領域３０６を移動して表示面と接触させることによりコード内の１つまたは複数のビットの値を変化させるボタン３０２を含む物体などで、コードに影響を及ぼすことができるメカニズムに関連付けることができる。その代わりに、ボタンは、前述のコードのどれかで通常ビットの反射率を変えることもできる。
【００７９】
図１５は、接続コンポーネントを特定した後にグレースケールまたは任意形状コードを決定するため画像処理モジュールにより実行される論理的ステップを例示する流れ図である。ステップ２７０で、画像処理モジュールは、灰色の陰影を含む現在の正規化された画像にアクセスする。ステップ２７２で、画像処理モジュールは、接続コンポーネント内の最小灰色強度を決定する。このステップでは、グレースケールまたは任意形状コードの暗い背景をグレースケールまたは任意形状コード内のコードから区別する。ステップ２７４は、画像処理モジュールで、以下の式で定義される第２のしきい値Ｔを設定することを示している。
Ｔ＝（最大白色強度−最小灰色強度）／２
【００８０】
このしきい値を正規化された画像に適用することにより、灰色ビットと白色ビットとを区別できる。ステップ２７０、２７２、および２７４は、任意形状コードのビットを読み取るうえで必要ではない。しかし、正規化された画像にアクセスすると、小さなビットも正確に読み取ることができる。
【００８１】
ステップ２７６で、画像処理モジュールは、予想されるビット位置の定義済みパターンにアクセスする。これらの定義済み位置は、手掛かりコンポーネント内のビットおよび／または手掛かりコンポーネントの外部の、ただしそれに関する定義済みビット位置に適用可能である。画像処理モジュールは、ステップ２７８において、接続コンポーネントの形状および配向に関してステップ２７６で事前に定義されているパターンでデータビットを読み取る。これらのデータビットは、第２のしきい値を使用して読み取られる。
【００８２】
任意選択の決定ステップ２８０で、画像処理モジュールは、有効なコード値についてテストする。コード値が有効でなければ、プロセスは終了し、有効であれば、プロセスはステップ２８２に進み、そこで、テーブルルックアップまたは他のそのような方法を介してコードビットから物体ＩＤを決定する。
【００８３】
本発明に関連して使用される他のアプローチでは、物体に付けられているコード化されたパターンは、任意形状について認識される。この場合、領域外（ただし、ある定義済みのさらに大きな領域内）のすべての画像ピクセルは、黒色でなければならないが、コード化されたパターン上の画像ピクセルは黒色または白色（または灰色）であると規定される。このプロセスは、本当に有効なコードであることを保証するため知られているコードブックと突き合わせて、読み取られたコードの妥当性を確認する、上記の手法と連携するとうまく機能する。
【００８４】
本発明は、本発明を実施する好ましい形態に関して説明されているが、当業者であれば、請求項の範囲内で多数の修正を加えられることを理解するであろう。したがって、本発明の範囲は、いかなる点でも上の説明により限定されることを意図していないが、その代わりに請求項を参照することで全体が定められる。
【００８５】
排他的権利が主張されている本発明は、請求項により定められる。
【図面の簡単な説明】
【００８６】
【図１】本発明を実施する際に使用されるような対話型表示テーブルの画像処理に好適な一般的に従来のコンピューティングデバイスまたはパーソナルコンピュータ（ＰＣ）の機能ブロック図である。
【図２】含まれているハードウェアコンポーネントを示す対話型表示テーブルの内側、および対話型表示テーブル内の光がたどる経路、および対話型表示テーブルの表面とその上の方に配置されている物体例の図である。
【図３】ＰＣが外付けされている対話型表示テーブルの等角図である。
【図４】表示面上またはその近くに置かれている物体に付けられている二次元識別子コードを認識する論理回路全体を例示する流れ図である。
【図５】本発明による放射状コードの実施例の図である。
【図６】表示面上にある物体に付けられている放射状コードを決定する場合に画像処理モジュールにより実行される論理的ステップを例示する流れ図である。
【図７】本発明によるマトリクスコードの実施例の図である。
【図８】ダイマトリクスコードを決定するため画像処理モジュールにより実行される論理的ステップの論理的ステップを示す流れ図である。
【図９】本発明による線形コードの実施例の図である。
【図１０】線形コードを決定するため画像処理モジュールにより実行される論理的ステップの論理的ステップを例示する流れ図である。
【図１１】本発明による可変ビット長マトリクスコードの実施例の図である。
【図１２】物体に付けられている可変ビット長マトリクスコードを決定するための論理的ステップを示す流れ図である。
【図１３】本発明によるグレースケールコードの実施例の図である。
【図１４】本発明による任意形状コードの実施例の図である。
【図１４Ａ】図１４の任意形状コードを持ち、形状コードを修正するためユーザが押すボタンを備える物体の実施例の図である。
【図１５】グレースケールまたは任意形状コードを決定するため画像処理モジュールにより実行される論理的ステップを例示する流れ図である。
【符号の説明】
【００８７】
２０  システムメモリ
３５  オペレーティングシステム
３６  アプリケーションプログラム
３７  他のプログラムモジュール
３８  プログラムデータ
２１  処理ユニット
４８  ビデオアダプタ
２３  システムバス
３２  ハードディスクドライブインターフェイス
３３  磁気ディスクドライブインターフェイス
３４  光ディスクドライブインターフェイス
４６  Ｉ／Ｏデバイスインターフェイス（例えば、シリアル）
５３  ネットワークインターフェイス
４７  モニタ
４９  リモートコンピュータ
５４  モデム
３６  アプリケーションプログラム
４０  キーボード
【図１】
0004246710.tif 000002
【図２】
0004246710.tif 000003
【図３】
0004246710.tif 000004
【図４】
0004246710.tif 000005
【図５】
0004246710.tif 000006
【図６】
0004246710.tif 000007
【図７】
0004246710.tif 000008
【図８】
0004246710.tif 000009
【図９】
0004246710.tif 000010
【図１０】
0004246710.tif 000011
【図１１】
0004246710.tif 000012
【図１２】
0004246710.tif 000013
【図１３】
0004246710.tif 000014
【図１４】
0004246710.tif 000015
【図１４Ａ】
0004246710.tif 000016
【図１５】
0004246710.tif 000017