以下、図面に基づいて本発明の実施の形態を説明する。
本発明の実施例は、ユーザがスクリーン(PCスクリーン、ホワイトボードなど)上に描画し、共有されるバックグラウンドイメージに注釈付け又はアノテートすることを可能にする。これは、スクリーン上になされたストロークと基礎となる共有されたバックグラウンドとを関連付けることによって実現される。ここで説明される技術を利用して、ユーザは、プレゼンテーション、テキストドキュメント又は他のイメージの一部に描画し、その後に異なるページ又はドキュメント若しくはイメージの一部にスクロールすることが可能とされる。その後、スクリーン上に描画されたストロークは、それらが当初に書かれたイメージ(ドキュメントなど)の部分と関連付けされる。表示されるイメージを変更すると、スクリーン上のストロークは完全に消え、イメージをスクロールすると、マークはディスプレイ上のそれらが当初に描かれたイメージの部分に移動される。ユーザが異なるイメージにスクロールした場合、ストロークは消え、元のイメージに戻ると、マークは正しい位置(すなわち、ストロークがなされた元のページの位置)に再び現れる。
ここに説明される技術は、上述された問題を解決する。
一実施例では、以下の用語が明細書において用いられる。
1)イメージ−表示に適した2D表現 一実施例では、イメージは“スクリーンキャプチャ”である。このスクリーンキャプチャは、カメラ若しくは他のセンサからのものであってもよいし、又はスクリーン上に表示されなくても自動生成されてもよい。
2)ストローク(stroke)−イメージの上部に表示されることが意図される通常手書きのマークアップデータ ストロークは、意図したマークアップを再表示するのに十分なデータを含む。ストロークデータは、サンプルポイントのセット及び“ペン幅”又は他の1次元サンプルデータから構成されるか、あるいは、ストロークデータは、イメージの上部にレンダリング可能となるように、おそらく透過又はマスク情報と共に、ストロークが類似するもののレンダリングされる2Dイメージであってもよい。
3)ストロークID−ストロークデータの一意的な識別子 ストロークIDへのアクセスは、典型的にはレンダリングを可能とせず、ストロークの全データを有するよりはるかにコンパクトである。一部の実施例では、ストロークIDは、“5”
などの整数、UUID、又は文字列であってもよい。
4)特徴点−イメージにおける位置 一実施例では、特徴点は、イメージが異なる回転、スケール、視野角、イルミネーションなどによりキャプチャされる場合であっても特定可能な点である。
5)記述子−特徴点の近傍に基づくベクトル(2進、離散又は連続) 一実施例では、記述子は、イメージが異なるやり方によりキャプチャされる場合、わずかしか変わらない。
6)変換−イメージ上の正しい位置に出現するようにイメージに重畳するため、ストロークとして保存された手書きがどのようにスケーリング、伸張、回転又は修正されるべきかの説明 これは、ストロークがスクリーン上のある位置に書かれるが、ストロークが書かれたイメージはスクリーンに関して移動し、ストロークがイメージと共に移動する必要がある問題を解決することである。
7)ページ−1つのイメージ 一実施例では、ページはおそらくメインディスプレイエリアに沿って又は下方にサムネイルとして表示されるか、あるいは、ミーティングの終わりにサマリ情報として利用されるストロークを含む。
8)コンテクスト−ストロークIDに関する情報 特徴点及び記述子を含み、イメージを含んでもよく、ストロークに関する領域、通常は境界ボックスを含み、ストロークキャプチャ、時間、実行中のアプリケーション、最上位ウィンドウで済ませる必要がある付加情報を含むものであってもよい。
以下の説明では、本発明のより完全な説明を提供するため、多数の詳細が与えられる。しかしながら、本発明がこれら具体的詳細なしに実施可能であることは当業者に明らかであろう。他の例では、周知の構成及び装置は、本発明を不明瞭にすることを回避するため、詳細でなくブロック図の形式により示される。
以下の詳細な説明の一部は、コンピュータメモリ内のデータビットに対する処理のアルゴリズム及びシンボル表現に関して提供される。これらのアルゴリズムによる説明及び表現は、自らの研究の本質を他の当業者に最も効果的に伝えるのにデータ処理分野の当業者により用いられる手段である。ここでは、また一般には、アルゴリズムは、所望の結果に導くステップの自己矛盾のないシーケンスであると考えられる。これらのステップは、物理量の物理的操作を要求するものである。通常、必要ではないが、これらの量は格納、伝送、合成、比較及び操作可能な電気又は磁気信号の形態をとる。主として通常の利用のため、これらの信号をビット、値、要素、シンボル、文字、項、数などとして参照することが便利であることがあると分かっている。
しかしながら、上記及び同様の用語の全ては適切な物理量に関連付けされ、これらの量に適用される単なる便宜上のラベルであると覚えておくべきである。以下の説明から明らかなように、特段の断りがない場合、明細書を通じて、“処理”、“計算”、“決定”又は“表示”などの用語を用いた説明は、コンピュータシステムのレジスタ及びメモリ内で物理(電子)量として表現されるデータを、コンピュータシステムのメモリ若しくはレジスタ又は他の情報ストレージ、伝送若しくは表示装置内の物理量として同様の表現される他のデータに操作及び変換するコンピュータシステム又は同様の電子計算装置のアクション及びプロセスを表すことが理解される。
本発明はまた、ここでの処理を実行する装置に関する。当該装置は要求された目的のため具体的に構成されるか、あるいは、コンピュータに格納されるコンピュータプログラムにより選択的に起動又は再設定される汎用コンピュータから構成されてもよい。このようなコンピュータプログラムは、限定することなく、フロッピー(登録商標)ディスク、光ディスク、CD−ROM及び光磁気ディスクを含む何れかのタイプのディスク、ROM、RAM、EPROM、EEPROM、磁気若しくは光カード、又は電子命令を格納するのに適した何れかのタイプの媒体などのコンピュータ可読記憶媒体に格納され、それぞれはコンピュータシステムバスに接続される。
ここに提供されるアルゴリズム及びディスプレイは、本来的に何れか特定のコンピュータ又は他の装置に関するものでない。各種汎用システムは、ここでの教示に従ってプログラムと共に利用されてもよく、あるいは、要求される方法ステップを実行するようより特化した装置を構成することが便利であると分かるかもしれない。各種システムにも止まれる構成は、以下の説明から明らかになるであろう。さらに、本発明は、何れか特定のプログラミング言語を参照して説明されない。各種プログラミング言語がここに説明されるような本発明の教示を実現するため利用されてもよいことが理解されるであろう。
マシーン可読媒体は、マシーン(コンピュータなど)により可読な形態により情報を格納又は送信するための何れかの機構を含む。例えば、マシーン可読媒体は、ROM、RAM、磁気ディスク記憶媒体、光記憶媒体、フラッシュメモリデバイスなどを含む。
ディスプレイシステムの一実施例の概略
独立したソースのコンテンツを表示するディスプレイ面に独立したソースのストロークを書く際の体感を向上させるため、ディスプレイ面上の基礎となるコンテンツとストロークとを関連付けるための技術が開示される。一実施例では、本装置は、メモリ(データベースなど)と、メモリに接続されるマッチングモジュールとを有する。メモリは、複数のストロークのためのコンテクストを格納し、各コンテクストは、少なくとも1つのストロークと以前に表示されたイメージデータの一部との間の関連付けを表す。
マッチングモジュールは、第1イメージ及び第1コンテクストと関連付けされる新たなストロークの指示を受信し、第1コンテクストの一部がメモリに格納されているコンテクストと同じ、オーバラップ若しくは重複する又は独立しているか判断し、メモリに格納されているコンテクストの1つに新たなストロークを追加するか、又はメモリに既に格納されているコンテクストから独立して第1コンテクストと共に新たなストロークを格納することによって、新たなストロークを含むようメモリを更新する。
一実施例では、マッチングモジュールは、特徴点が第1イメージと当該1つのコンテクストに関するイメージとの間の特徴類似度に基づき追加されることによって、新たなストロークを1つのコンテクストに追加する。他の実施例では、マッチングモジュールは、第1コンテクストと1つのコンテクストとが等しい場合、特徴点を追加することなく、新たなストロークをコンテクストに追加する。更なる他の実施例では、マッチングモジュールは、1つのコンテクストに関するイメージにオーバラップしない第1イメージの部分に関する1以上の特徴点のみによって、新たなストロークをコンテクストに追加する。
一実施例では、マッチングモジュールは、新たなストロークと、コンテクストグループにおいて一緒に出現した他のストロークの少なくとも1つとを格納し、ここで、新たなストロークと当該1つの他のストロークとは、コンテクストグループの特徴点と共に格納される異なる特徴点を有する。一実施例では、第1コンテクストは、第1イメージに関するアプリケーションプログラムを示す情報を有し、さらにストロークマッチングモジュールは、抽出のため情報を利用するよう動作可能である。
一実施例では、マッチングモジュールは、他のイメージに応答して、当該イメージのイメージデータがメモリに格納されているコンテクストの1つに関するものであるか判断し、第2イメージに関するコンテクストの1以上のストロークを特定する情報と、ディスプレイ面上に表示するため関連するコンテクストの1以上のストロークを変換するための変換情報とを返す。一実施例では、1以上のストロークを特定する情報はストロークIDを有する。一実施例では、マッチングモジュールは、第2イメージが1つのコンテクストに関するイメージデータと少なくとも部分的に一致するか比較するため、メモリのコンテクストの何れかを選択するためイメージが表示されるシーケンスに関するシーケンス情報を利用する。他のモジュールでは、マッチングモジュールは、第2イメージがメモリに格納されるコンテクストの1以上のイメージデータと少なくとも部分的に一致するか判断する際、メモリに格納される他のコンテクストをサーチする前に直近にマッチングされたコンテクストのセットと第2イメージデータとを比較する。
図1は、ディスプレイストロークマッチングシステム100の一実施例のブロック図である。本システムは、インタラクティブホワイトボード(IWB)システムとここで参照されてもよい。図1を参照して、システム100は、プロバイダ101、ディスプレイストロークキャプチャ装置102、ストロークマッチング装置103及び更なるディスプレイ又はキャプチャ装置104を有する。図1に示されるコンポーネントは、同一ユニットに統合されてもよいし、又は、例えば、互いに別々に及び/又はリモートに実現されてもよい。例えば、ストロークマッチング装置103は、リモートサーバ又は別のコンピュータシステムを用いて実現されてもよい。
イメージプロバイダ101は、ディスプレイストロークキャプチャ装置102のスクリーン又はサーファスに表示するため送信される1以上のイメージのソースである。一実施例では、イメージプロバイダ101は、パーソナルコンピュータ(PC)を有する。一実施例では、イメージプロバイダ101はカメラを有する。他の実施例では、イメージプロバイダ101は、表示用のコンテンツを提供する何れかのイメージソースを有する。
ディスプレイストロークキャプチャ装置102は、イメージプロバイダ101からのイメージを表示するためのディスプレイ面を有する。ディスプレイストロークキャプチャ装置102はまた、ディスプレイ上に行われたストロークをキャプチャし、キャプチャされたストロークに対応する情報をストロークマッチング装置103に送信する。
ストロークマッチング装置103は、ディスプレイストロークキャプチャ装置102から受信したキャプチャされたストロークに対応する情報(ストロークIDなど)を、ストロークマッチング装置103の一部及び/又はアクセス可能なメモリ(データベースなど)に格納する。ストロークマッチング装置103は、ディスプレイストロークキャプチャ装置102を介し直接的に又は間接的にイメージプロバイダ101により提供されるイメージを受信する。これらのイメージに応答して、ストロークマッチング装置103は、メモリに格納されているイメージのディスプレイに関連して適用可能なストロークを検出し、ストローク情報をディスプレイストロークキャプチャ装置102に提供し、ストローク情報に対応するストロークが関連するイメージと共にディスプレイに含まれることを可能にする。
一実施例では、システム100はまた、更なるディスプレイ及び/又はキャプチャ装置104を有する。
一実施例では、コントローラ(図示せず)は、IWBシステムにより提供される各種機能を制御及び有効にする処理を実行するための中央コンポーネントとして機能する。このようなコントローラは、IWBシステムの1以上の他のコンポーネントに動作接続され、これらのコンポーネントにより実行される機能を制御及び/又は調整するよう構成されてもよい。例えば、コントローラは、ディスプレイストロークキャプチャ装置102及び/又はディスプレイ面に動作接続され、キャプチャされた情報を受信するよう構成されてもよい。
ディスプレイストロークキャプチャ装置102、ストロークマッチング装置103及び関連するコントローラを含むシステムは、プロセッサベース計算装置として実現されてもよい。図11において、このような実現形態の具体例が示され、以降において説明される。他の実施例では、これらのコンポーネントは、プロセッサ、プログラマブルロジック装置などにより少なくとも部分的に実現されてもよい。システムは、プロセッサにより実行される1以上のプログラム(コード命令)を実行してもよい(図11のシステムのプロセスなど)。
IWBシステムは、通信ネットワークに接続され、他のIWBシステム及び通信ネットワークに接続されるストレージを含む他の装置と通信可能であってもよい。通信ネットワークは、単一の通信ネットワーク又は通信ネットワークの集まりであってもよい。ネットワークは、インターネット、イントラネット、LAN(Local
Area Network)、WAN(Wide Area Network)、無線ネットワーク、プライベートネットワーク、パブリックネットワーク、交換ネットワーク、又はIWBシステムと通信ネットワークに接続される他の装置又はシステムとの間の通信を可能にする他の何れか適切な通信ネットワークを含むものであってもよい。1以上の異なる通信プロトコル(イーサネット(登録商標)、各種無線プロトコルなどが、通信ネットワークを用いた通信を実現するのに利用されてもよい。
一実施例では、IWBシステムは、IWBシステムと通信ネットワークとを接続し、通信ネットワークを介し通信を実現するネットワークインタフェースを提供する。IWBシステムは、有線又は無線リンクを介し通信ネットワークに接続されてもよい。
IWBシステムのコンポーネントは、ここに説明される機能を提供する1以上のモジュールを有してもよい。これらのモジュールは、ハードウェア、ソフトウェア又はこれらの組み合わせにより実現されてもよい。例えば、一実施例では、モジュールは、プロセッサにより実行されると、ストロークマッチング装置103により提供される機能を実現するソフトウェア(プログラム、コード、命令)により実現されてもよい。
ディスプレイストロークキャプチャ装置
ディスプレイストロークキャプチャ装置102のディスプレイ面(IWBシステムの“ホワイトボード”又は“描画面”と呼ばれることもある)は、IWBシステムのユーザのための入力と出力との双方のインタフェースを提供する。入力インタフェースとして、それは、ユーザが筆記(描画とも呼ばれる)の入力を提供することを可能にし、当該入力はその後にデジタル情報(筆記のデジタル表現とも呼ばれる)に変換される。出力インタフェースとして、デジタル情報は、投射された情報がIWBシステムの1以上のユーザにより閲覧可能となるように、プロジェクタによってディスプレイ面に投射されてもよい。IWBシステムの1以上のユーザは、1以上の筆記具を用いて書き込むことによってIWBシステムに入力を提供してもよい。例えば、ユーザは、筆記具を用いてディスプレイ面上に筆記してもよい。本出願に用いられる筆記、描画又は筆記情報という用語は、筆記具を用いて提供可能な1以上の文字、記号、単語、文章、表、描画、スケッチ、図又は他の何れかのタイプの入力を含むものであってもよい。他の例として、筆記又は描画は、何れかの言語又はフォーマットにより表現される手書きの文字、数字又は記号を含みうる。更なる他の例として、筆記又は描画は、手書きの絵及び文字要素の組み合わせから構成可能である。
一実施例では、筆記具を用いてなされたユーザの筆記は、キャプチャされてコントローラに通信され、筆記に対応するデジタル情報が決定される。デジタル情報は、その後、ディスプレイ面への投射のためプロジェクタに通信されてもよい。デジタル情報は、ストローク系列、ピクセルベースイメージ、プレイン又はフォーマット化されたテキストなどの各種形態であってもよい。
IWBシステムのユーザは、各種の異なる筆記具を用いて入力を筆記又は提供してもよい。一実施例では、筆記具は、ディスプレイ面上に可視的なマークを残してもよいし、又は残さなくてもよい物理オブジェクトであってもよい。例えば、ユーザは、筆記具として自分の指を用いてディスプレイ面上に筆記を行ってもよい。指はディスプレイ面上に可視的なマークを残さないかもしれないが、指の動きがキャプチャされ、デジタル情報に変換され、その後にディスプレイ面上に投射される。他の例として、ユーザは筆記具としてポインタ又はスタイラスを用いてディスプレイ面上に筆記を行ってもよく、スタイラスは、ディスプレイ面上に何れの物理的な可視的マークを残さない。他の実施例では、ユーザはまたディスプレイ面上に可視的なマークを残す筆記具を利用してもよい。例えば、ユーザは、ペン又は通常のドライイレースマーカを用いてディスプレイ面上に筆記してもよい。ユーザの筆記はキャプチャされ、当該筆記に対応するデジタル情報が決定され、その後にデジタル情報はディスプレイ面上に投射される。
一実施例では、筆記に加えて、筆記具がまたIWBシステムと他の方法によりやりとりするのに利用されてもよい。例えば、一実施例では、筆記具は以前に書かれた情報を消去するのに利用されてもよい。
ディスプレイストロークキャプチャ装置102のディスプレイ面は、パッシブ又はアクティブな面であってもよい。一実施例では、ディスプレイ面は、カメラなどの外部センサにより特定可能なペンからのマークを単に受け入れるパッシブ面であってもよい。例えば、ディスプレイ面は、通常の従来の不透明なホワイトボードであってもよい。他の実施例では、ディスプレイ面は、日本のWacom Co.,Ltdなどからのセンサを内蔵した面などのアクティブ面であってもよい。このようなセンサは、アンテナを内蔵し、パッシブコイルを含むRFID(Radio Frequency Identification)ペンとやりとりする。特定の方法でアンテナをアクティブ化することによって、ペンはトリガ可能であり、アンテナは当該アンテナに対するペンの反応を測定し、ペンの位置及び向きを特定することができる。他のアクティブ面は、スクリーンに対して押下されたオブジェクトの位置を特定するため、抵抗の変化を測定する抵抗接触システムを有する。アクティブ面の他の例は、FTIR(Frustrated Total Internal Reflection)を用いてカメラが面上又はカリフォルニア州CupertinoのApple,Inc.からのiPad及びiPhone装置にあるような容量接触スクリーン上の指又はペンの位置をキャプチャすることを可能にする赤外線LEDにより囲まれたガラスボードを有する。
一実施例では、ディスプレイストロークキャプチャ装置102は、筆記具を用いてユーザにより行われた筆記をキャプチャするよう構成される。ディスプレイストロークキャプチャ装置102によりキャプチャされた筆記情報は、その後に更なる処理のためストロークマッチング装置103に通信されてもよい。ディスプレイストロークキャプチャ装置102は、筆記具を用いて行われた筆記がキャプチャされるのを可能にする1以上のコンポーネントを有してもよい。例えば、ディスプレイ面上に可視的なマークを残す筆記具が利用される実施例では、ディスプレイストロークキャプチャ装置102は、ディスプレイ面の前方に配置され、ディスプレイ面のイメージをキャプチャするカメラを有し、キャプチャされたイメージは、筆記具を用いてディスプレイ面上に生成された可視的なマークを含む。キャプチャされたイメージは、その後にストロークマッチング装置103に通信され、当該ストロークマッチング装置103は、ディスプレイ面上に生成された可視的なマークに対応するデジタル情報を決定するためイメージを処理するよう構成される。
他の実施例では、ディスプレイストロークキャプチャ装置102は、ユーザが筆記具を用いて筆記するとき、筆記具の動き又は移動をキャプチャするよう構成される1以上のセンサを有してもよい。当該動きは、異なる技術を用いてキャプチャされてもよい。1つの技術によると、モーションセンサがディスプレイ面に沿って配置され、2次元平面(又は3次元)における筆記具の動きをキャプチャすることができる。キャプチャされた動き情報は、その後にストロークマッチング装置103に伝えられ、キャプチャされた情報を処理する。
更なる他の実施例では、ディスプレイストロークキャプチャ装置102は、ディスプレイ面の圧力を検知するディスプレイ面に搭載可能な1以上の圧力センサを有してもよい。このような圧力マッピングマルチタッチ面は、マサチューセッツ州South BostonのTekScan,Inc.から入手可能なフレキシブル電子回路などの間に挟まれる感圧抵抗物質から構成可能である。このような実施例では、ディスプレイ面は、ディスプレイ面上のユーザの接触に基づき筆記情報をキャプチャ可能なマルチ接触感圧面を備えてもよい。一実施例では、ユーザの筆記を検知することに加えて、圧力センサはまた、ディスプレイ面上でユーザが筆記する力を決定することが可能であってもよい。
ディスプレイストロークキャプチャ装置102は、例えば、4つのカメラと4隅のIRソースなど、ディスプレイ面のエッジ又はコーナにある2以上のカメラ及びIRソースを有してもよく、ディスプレイ面の周囲の再帰性反射型バックグラウンドを有してもよい。カメラのビュー及びIRソースは、ディスプレイ面に平行に照射する。反射したIR照射のカメラビューをブロックするオブジェクト(ペン、指、拳など)が検出される。
更なる他の実施例では、ディスプレイストロークキャプチャ装置102のディスプレイ面は、Apple iPadTM又はiPhoneTMデバイス上の面などの容量結合入力インタフェースであってもよい。このような実施例では、ディスプレイ面は、マルチ接触入力体感、ズーム及びパン機能などを可能にするものであってもよい。このような実施例では、ユーザは、指や導電性スタイラスを用いてディスプレイ面に筆記し、当該筆記は処理及び解析のためストロークマッチング装置103に通信されてもよい。
筆記具を用いてなされた筆記をキャプチャするため、一実施例では、ディスプレイストロークキャプチャ装置102は筆記具と通信可能にリンクされてもよい。当該リンクは、有線又は無線であってもよく、ディスプレイストロークキャプチャ装置102が筆記具を用いてなされる筆記をキャプチャすることを可能にする。
一実施例では、ディスプレイストロークキャプチャ装置102は、キャプチャした情報に基づきストローク情報を決定し、その後にストローク情報に対応するデジタル情報を決定するよう構成される。ストローク情報は、時間順序づけされたストロークの集まりに関する情報を有してもよい。一実施例では、ストロークは、筆記具が接触した(すなわち、筆記のため利用された)時間から筆記具が離れるまでの筆記具により生成されるデータに対応するものであってもよい。例えば、一実施例では、ストロークは、筆記具がディスプレイ面に接触した時間から、当該接触が中断又は離れるまでに筆記具により生成されたデータに対応するものであってもよい。ストロークは、筆記具を用いてユーザにより入力される情報を表現するのに利用される最も基本的なユニットと考えられる。各ストロークは、当該ストロークが行われた時間を示す関連する時間コンポーネントを有する。筆記具を用いてユーザにより入力又は筆記された情報は、時間により順序づけされたストロークの系列又はセットにより表現されてもよい。
一実施例では、ディスプレイストロークキャプチャ装置102は、ディスプレイストロークキャプチャ装置102によりキャプチャされる生のセンサデータを受信し、その後、当該生データに基づきストローク情報を決定する。あるいは、ストロークマッチング装置103は、筆記キャプチャシステムからストローク情報を受信する。ストロークマッチング装置103は、その後、ストローク情報に対応するデジタル情報を受信する。一部の実施例では、デジタル情報は、生のセンサデータから直接決定されてもよい。デジタル情報は、筆記具114を用いて行われた筆記を反映するようなものである。ディスプレイストロークキャプチャ装置102は、その後にディスプレイ面への投射のため決定されたデジタル情報をプロジェクタ104に通信してもよい。
一実施例では、プロジェクタ(図示せず)は、ディスプレイ面上に情報を投射及び表示するよう構成される。一実施例では、プロジェクタは、筆記具を用いて行われた筆記に対応するデジタル情報を有する信号(ビデオ信号、イメージなど)を受信する。プロジェクタは、筆記に対応するデジタル情報がディスプレイ面上に出力又は表示され、IWBシステムの1以上のユーザに閲覧可能となるように、ディスプレイ面に受信した信号を投射又は出力するよう構成される。一実施例では、筆記に対応するデジタル情報は、ディスプレイ面上の筆記と同じ位置に投射されるように、ディスプレイ面に投射される。
一実施例では、プロジェクタは、ディスプレイ面にデジタル情報を投射可能になるように、ディスプレイ面の前方の近い距離に配置されたショートスロープロジェクタである。例えば、プロジェクタは、ディスプレイ面の前方に配置され、ディスプレイ面に情報を投射するウルトラショートスロープロジェクタであってもよい。このようなプロジェクタの一例は、Hitachi,Ltd.により製造されるCP−AW250NMである。他の実施例では、他のタイプのフロントスロープロジェクタが利用されてもよい。プロジェクタは、高品位(1920×1080など)の解像度を含む異なる解像度により投射してもよい。
ストロークマッチング装置
上述されるように、一実施例では、ストロークマッチング装置103は、ストロークコンテクストとしてここで参照されるコンテンツに関連するイメージデータとストロークとを関連付け、ストロークに対応するストロークデータをストロークコンテクストと共にメモリに格納する。一実施例では、各ストロークコンテクストは、ディスプレイ面に以前に表示されたイメージデータの一部と少なくとも1つのストロークとの間の関連付けを表す。一実施例では、各ストロークは、1つのストロークコンテクストと関連付けされる。一実施例では、ストロークコンテクストは、バックグラウンドイメージ全体及びバックグラウンドイメージを共有するシステムからの何れかの関連する情報(イメージを共有する装置、装置上で実行されるアプリケーション(PowerPointなど)、表示されるドキュメントのファイル名若しくはURL、ユーザ名、ストロークの描画中に発話した人のオーディオサンプルなど)の1以上を有する。一実施例では、ストロークコンテクストは、イメージ内の特徴点、これら特徴点に対するストロークの座標、描画されたストロークの“下方”のバックグラウンドイメージの部分、ストロークが描画された時間、及びPCと共有される場合には最前方のアプリケーションのドキュメント若しくはウィンドウの名前の記述子を含む。
より詳細には、ストロークマッチング装置103は、コンテクストに関連するイメージデータを受信し、当該イメージ部分がメモリにすでに格納されているコンテクストと同じ、オーバラップ又は独立しているか判断する。イメージ部分がメモリにすでに格納されているコンテクストと同じ、オーバラップ又は独立しているか判断した結果に基づき、ストロークマッチング装置103は、メモリに格納されているコンテクストの1つに新たなストロークを加えることによって当該新たなストロークを含むようメモリを更新するか、又はメモリにすでに格納されているコンテクストから独立した第1コンテクストと共に新たなストロークを格納する。一実施例では、ストロークマッチング装置103は、新たなイメージコンテンツとメモリにすでに格納されているコンテクストに関連するイメージとの特徴類似度に基づく特徴点と共に又は特徴点なしに、メモリに格納されているコンテクストに新たなストロークを加える。他の実施例では、新たなイメージに関連するコンテクストと以前に格納されたコンテクストとが同じである場合、ストロークマッチング装置103は、特徴点を加えることなく以前に格納されたコンテクストに新たなストロークを追加する。更なる他の実施例では、ストロークマッチング装置103は、以前に格納されたコンテクストに関連するイメージにオーバラップしない新たなイメージの部分に関連する1以上の特徴点のみと共に、以前に格納されたコンテクストに新たなストロークを追加する。一実施例では、現在のイメージが以前に格納されたコンテクストのイメージデータに一致する場合、例えば、特徴の95%を一致させることによって、新たなストロークコンテクストは生成されない。
ストロークマッチング装置103はまた、イメージリクエストを受信し、当該イメージリクエストに対応するイメージデータがメモリにすでに格納されているコンテクストの一部を有するか判断する。すなわち、ストロークマッチング装置103は、表示される新たなコンテクスト(新たなイメージデータなど)がメモリにすでに格納されているストロークコンテクストに関連しているか判断する。一実施例では、イメージマッチング処理は、誤った“ウィンドウ”にストロークを配置することを回避するため、(特徴スペース一致と反対に)実行されてもよい。ストロークマッチング装置103が、表示対象の新たなコンテンツ(新たなイメージデータなど)がメモリにすでに格納されているストロークコンテクストに関連していると判断した場合、ストロークマッチング装置103は、コンテンツに関連するメモリに格納されているストロークコンテクストの何れかのストロークを特定する情報と、新たなコンテクストに対してディスプレイ面上に表示するためこれらのストロークが変換されることを可能にするための変換情報とを返す。一実施例では、ストロークマッチング装置103は、イメージデータ上に以前に筆記されたストロークに対応する関連するストローク情報(各ストロークのストロークIDなど)と、対応するストロークをディスプレイ面上でイメージデータと共に再生成及び表示することを可能にするため、ストローク情報をどのように変換するかを示す変換情報とを返す。一実施例では、ディスプレイストロークキャプチャ装置102はストロークを追跡し、ストロークマッチング装置103は、ストロークIDのリストと、各ストロークの新たなイメージ座標への変換とを返しさえすればよい。一実施例では、一部のアプリケーションはアファイン又はより限定的な変換しかサポートしないが、当該変換は透視変換である。他の実施例では、当該変換は、移動、スケーリング、回転及び/又はスキュー(skew)を含む。他の実施例では、ディスプレイストロークキャプチャ装置102はストロークを追跡せず、ストロークマッチング装置103は、ストロークイメージを保存及び変換し、ストロークをペーストするための座標と共に変換されたイメージを返す。一実施例では、透過性をサポートするフォーマットが利用される(pngなど)。更なる他の実施例では、マッチング装置は“特徴”を返さず、クエリイメージの座標系への変換のみを返す。
一実施例では、ストロークマッチング装置103は、キーポイント検出、特徴抽出及びマッチングを含む通常のコンピュータビジョンパイプラインを含む。一実施例では、これらの技術は、多数のストロークのためのバックグラウンドコンテクスト(イメージなど)が生成され、コンテクストグループがスクロールされたイメージについて生成され、迅速なストロークの追加及び抽出が利用されるホワイトボード及び同様の技術と共に、スクリーンイメージのための検証技術の利用に関連したマークアップセッションを共有するスクリーンのために設計される。
図2は、ストロークマッチング装置の一実施例を示す。図2を参照して、イメージソース201からの1以上のイメージが、ストロークマッチング装置103により受信される。これに応答して、キーポイント検出モジュール202は、イメージにおいてキーポイントを特定するため、当該分野で周知な方法によりキーポイント検出を実行する。キーポイント検出の実行後、特徴抽出モジュール203は、検出された各キーポイントについて記述子を決定するため、当該分野で周知な方法により特徴抽出を実行する。決定された記述子を利用して、マッチングモジュール204は、イメージソース201から受信したイメージの記述子とメモリ210(データベースなど)に格納されている以前のイメージの記述子との間の一致を求める。一実施例では、マッチングモジュール204は、整合した一致のグループを選択するため、選択アルゴリズムを実行する。一実施例では、個々の一致は、記述子に適した距離の指標に基づき求められる。例えば、連続的な特徴のための連続的な距離の指標又はハミング距離が、バイナリな特徴について利用されてもよい。一実施例では、整合した一致のグループが、RANSACアルゴリズムによって決定される。マッチングモジュール204が、イメージソース201からのイメージの対応する部分又は全てに一致した以前のイメージの一部又は全てを特定した場合、一致した部分に行われた以前のストロークは、新たなイメージが表示されるとき、イメージソース201からの新たなイメージに適合するよう変換される。
メモリ210に格納される以前のイメージは、イメージソース201と同じであってもよいイメージソース211から受信された後に格納されたものであり、モジュール212によるキーポイント検出、モジュール213による特徴抽出及びモジュール214による更新処理が施されたものであることに留意されたい。モジュール214により実行される更新処理は、ディスプレイに関してユーザ入力から受信したストローク220と、ディスプレイ面に書き込まれたイメージとの関連付けを含む。一実施例では、各ストロークは1つのストロークコンテンツ(すなわち、バックグラウンドイメージ)に関連付けされ、新たなストロークがバックグラウンドイメージ上に行われると、更新処理は、当該新たなストロークが同一のストロークコンテクスト上(以前のストロークが関連付けされた同じバックグラウンドイメージなど)、オーバラップしたストロークコンテクスト上(以前に表示されたイメージの少なくとも一部に部分的にオーバラップするバックグラウンドイメージなど)、又は独立したストロークコンテクスト上(新たなバックグラウンドイメージなど)にあるか確認する。新たに追加されたストロークが同一のコンテクストに対するものであると判断された場合、ストロークを規定するストローク情報(ストロークID、ストロークイメージ又はストロークをレンダリングするため描画されたポイントセットなど)が、既存のストロークコンテクストに加えられ、既存のストロークコンテクストにストロークが追加され得ため、マッチングのための新たな特徴点は追加されない。新たに追加されたストロークが以前のコンテクスト(以前に表示されたバックグラウンドイメージ)の少なくとも一部にオーバラップするストロークコンテクスト(バックグラウンドイメージ)に追加されたと判断される場合、ストロークを規定するストローク情報は既存のストロークコンテクストに追加されるが、現在のバックグラウンドイメージの非オーバラップ部分に関連する特徴点のみが加えられる。図3は、この機能を実行するシステムのブロック図である。
図3を参照して、システムは、キーポイント検出モジュール202、特徴抽出モジュール203及びマッチングモジュール204を有するコンピュータビジョンパイプラインを有し、これらは図2の対応するモジュールと同様に動作する。マッチングモジュール204は、イメージソース201からのイメージとと共に、レンダリングモジュール310を用いてインタラクティブホワイトボード320のディスプレイ面にレンダリングされるストロークを生成する。
システムはまた、キーポイント検出モジュール212及び特徴抽出モジュール213を有し、これらは図2の対応するモジュールと同様に動作する。キーポイント検出モジュール212は、イメージソース201からイメージを受信する。更新モジュール312は、特徴抽出モジュール213により抽出された特徴と、ペン又は接触(321)inら楽ティ部ホワイトボード320からのストローク330とに基づきメモリ311(シーケンシャルデータベースなど)を更新する。更新モジュール312はまた、ファーストパス321上で特徴抽出モジュール203により抽出された特徴を受信する。同様に、ファーストパス322はまた、更新モジュール312に入力を提供する。パス321のポイントは、特徴がマッチングのために計算され、同じバックグラウンドイメージ上にストロークが描画された場合に再計算される必要がないものである。ファーストパス322は、ストロークが等価なバックグラウンド上で以降に利用されるかチェックするのに利用されるバックグラウンドイメージを取得するのに利用可能である。
一実施例では、新たなストロークが受信されると、システムは、それがストロークコンテクストの既存部分である何れかのストローク(すなわち、イメージにすでに関連付けされる)、オーバラップしたストロークコンテクスト(以前に表示されたイメージの少なくとも一部に部分的にオーバラップするバックグラウンドイメージ上など)、又は独立したストロークコンテクスト(新たなバックグラウンドイメージなど)とオーバラップするか判断する。新たに追加されたストロークが同じコンテクストに対するものであると判断された場合、新たな特徴点はマッチングのために追加されず、ストロークは既存のストロークコンテクストに追加される。この情報は、ファーストパス322を介し更新モジュール312に伝えられる。新たに追加されたストロークが以前のコンテクスト(以前に表示されたバックグラウンドイメージ)の少なくとも一部にオーバラップするコンテクスト(バックグラウンドイメージ)に追加されたと判断された場合、現在のバックグラウンドイメージの非オーバラップ部分に関連する特徴点のみが、ファーストパス321を介し更新モジュール312によって受信され、イメージのためのストロークコンテクストに加えられる。
一実施例では、キーポイント検出は、イメージが異なる条件(異なるシフト、スケール又は照明など)の下で再キャプチャされた場合に検出可能である可能性があるイメージにおける位置を求めるのに利用される。キーポイント検出の実行結果は、表示対象のイメージに一致する候補である複数のイメージが特定されうるということである。Harris/Stephen Corner(1988)、GFTT(1994)、SIFT(1999)、MSER(2002)、ORB(2011)などのコーナ(複数次元におけるシャープな変化)又は領域(一定の又はリニアに変化するカラーを有するエリア)を求めるためのものを含む複数の周知のキーポイント検出方法がある。また、米国特許第8,504,624号、米国特許出願第2012/0229425号及び第20100251106号を参照されたい。
更なる情報について、Harris,Chris,and Mike Stephens,“A combined corner and edge detector”,Alvey vision conference,Vol.15.1988、Shi,Jianbo,and Carlo Tomasi,“Good features to track”,Computer Vision and Pattern Recognition,1994,Proceedings CVPR‘94,1994 IEEE Computer Society Conference on IEEE,1994、及びEthan Rublee,Vincent Rabaud,Kurt Konolige,Gray R.Bradski“ORB:An efficient alternative to SIFT or SURF”,ICCV 2011:2564−2571を参照されたい。
一実施例では、OpenCVからの“ORB”キーポイント検出装置が利用される。ORBでは、キーポイントは、中心点と当該中心点からある距離にあるピクセルのリングとの間の最大値を求めることによって特定される。イメージは複数のサイズにスケーリングされ、検出装置は、イメージ間で同一のキーポイントを求めることを可能にするため再実行される。特定数のキーポイントを取得するため、差分に対して小さな閾値が設定され、Harrisコーナ指標に基づきポイントがソートされる。一実施例では、キーポイント検出は、単語及び図の始めと終わりにある点と、イメージ内のいくつかの点とを求める。
キーポイント検出アルゴリズムがイメージ内のキーポイントを求めた後、特徴抽出モジュールは、他のイメージに出現する場合に一致可能となるように、キーポイントの記述子を生成する。一実施例では、勾配、モーメント又は距離が計算され、キャプチャ処理における変化を説明するため、当該点における最大値に正規化される。一実施例では、複数の値が典型的には計算され、抽出される各特徴は、
X1=[x1,x2,x3,x4,...,x64],X2=[x1,x2,x3,x4,...,x64],...,X200=[x1,x2,x3,x4,...,x64]などの64次元のベクトルとなるかもしれない。
一実施例では、特徴はスカラー値のベクトルである。他の実施例は、特徴はバイナリ値のより大きなベクトルである。ベクトルは、カラー、局所的勾配、エリア、モーメント及び/又は他のキーポイントとの距離を記述してもよい。
一実施例では、OpenCVのORB特徴抽出装置が特徴抽出に利用される。ORNでは、特徴抽出装置は、検出されたキーポイントの周りのパッチをスムーズ化し、その後にスムーズ化されたパッチ内の複数のピクセルペアのバイナリな比較を実行する。一実施例では、特徴ベクトルは、1及び0のみから構成され、コンパクトに表現される。一実施例では、2つの特徴点の間の距離は、異なるビットの個数によって測定される(ハミング距離)。ORB特徴抽出装置は、パッチをキーポイントの向きの最大値に回転することによって、異なる回転において特徴をマッチングする。一実施例では、計算効率性のため、比較に用いられる点の座標は複数の向きについて予め計算され、正しい座標セットが各キーポイントに対して利用される。
一実施例では、関連するストロークと有する複数のイメージと、以前に描画されたストロークが描画されるべきか判断される必要がある表示対象の現在のイメージとがある。以前のイメージについて決定された特徴と表示対象のイメージについて決定された特徴とを利用して、表示対象のイメージと以前にストロークが関連付けされたイメージとのイメージ特徴の間の一致が求められる。イメージ毎に数百の特徴点が存在する可能性があり、各点は64次元のベクトルによって記述可能であるため、このマッチング処理は極めて計算量の複雑なものになりうる。一実施例では、特徴ベクトルのタイプに適した距離の指標が利用される。例えば、一実施例において利用する際、マッチングは高速インデキシングを可能にするためブルートフォース(brute force)を介したものとなる。他の実施例では、マッチングは、周知なツリーベースマッチング手段を介したものである。ブルートフォースマッチングは、新たなストロークが会議中にイメージに関連付けされるときに重要となる追加的なイメージを加えることを容易にするが、ストローク数が増加するに従ってより長い時間がかかる。マッチングを高速化するツリー構造が利用可能であるが、新たなストロークによりツリー構造を更新するのに長時間かかる可能性がある。
一実施例では、表示対象のイメージの抽出された特徴は、以前に保存された全ての特徴点とマッチングされる。一実施例では、マッチングロジックは、このマッチング処理を複数回利用して、表示される新たなイメージとストロークコンテクストとの間の複数の一致を求める。
ORB特徴はバイナリであるため、マッチング処理は、排他的論理和(XOR)演算を実行し、マッチング後に“1”ビットの個数を計数することに関する。他のマッチング技術では、“局所性鋭敏型ハッシュ(locally sensitive hashing)”法が利用可能である。これは、はるかに少数のマッチング演算で済ませることを可能にするが、常に最近傍を見つけるとは限らない。“局所性鋭敏型ハッシュ”法は、はるかに大きなデータセットが検索されることを可能にするが、新たなバックグランドイメージの追加はより長い時間がかかる。
すなわち、一実施例では、ストロークマッチング装置は、一致をより迅速に求める確率を向上させるため、まず直近にマッチングされたストロークコンテクストをサーチする。直近とみなされるストロークコンテクストの個数は、時間(最近10分以内など)又は個数(最近3個のストロークコンテクストなど)に基づくものであってもよい。特徴点の大部分は一致した場合、更なる一致のための検索は実行されない。しかしながら、多数の点が一致しなかった場合、更なる一致のための検索が続けられる可能性がある。
一実施例では、ストロークマッチング装置は、一致があるかの判断の一部として、イメージが表示されたシーケンスに関連するシーケンス情報を利用する。これは、極めて頻繁にストロークが同じバックがラウンドに素早く追加されるためである。
一実施例では、より迅速にサーチされるコンテクストがグループ化される。すなわち、異なる特徴点を有するが、一緒に出現したストロークが、全体的な検索が実行される前にサーチされるコンテクストグループ内の“コンテクストグループ”特徴点に配置され、コンテクストグループがサーチされるイメージに対応する特徴点との一致を求めるのに十分である場合、低速となりうる全ての特徴点をサーチする必要はない。
一実施例では、マッチングモジュールは、新たなコンテンツがメモリに格納されている1以上のストロークコンテクストと少なくとも部分的に一致するか判断する際、メモリに格納されている他のストロークコンテクストをサーチする前に、新たなコンテンツと既知の変換によるストロークコンテクストセットとを比較する。一実施例では、新たなコンテンツと格納されているストロークコンテクストとの間の複数の変換が、当該ストロークコンテクストとの少なくとも部分的な一致が存在するかの判断の一部として利用される。例えば、ウェブページが閲覧中であり、ヘッダが同一であり、ボディがスクロールされるときなど、ある期間において“クエリ”イメージとストロークコンテクストとの間に複数の変換が求められるかもしれない。この場合、一致した特徴点は、ヘッダに対する1つの変換とボディに対する異なる1つの変換とを有することになる。この場合、オリジナルのストロークが描画されたバックグラウンドイメージは、2つの変換の下で変換可能であり、依然として一致しているかの判断が行われる。一実施例では、マッチングモジュールは、タイプ及びイメージ比較から構成される群から選ばれる1以上に基づき、少なくとも1つの変換を排除する。
マッチングが実行されると、クエリイメージは、複数の異なるイメージと一致する特徴を有してもよい。これらの一致の一部は正確な一致であり、その多くは、ノイズ又はイメージの小さな部分が他のイメージの小さな部分と類似しているため、そうでない。一実施例では、整合性のある一致を求めるため、一部の一致は“異常値”であるかもしれないとランダムに推測し、その後に整合性のため残りの特徴を検証することによって、ベストな整合性のある一致セットを求めるためのアルゴリズム(例えば“RANdom SAmple Consensus”の略語であるRANSACなど)が利用される。すなわち、初期的な一致からの点は除外され、異なるマッピングによる他の一致ポイントのセットがあるか確認するため、RANSACが利用される。
異常値セットが決定されると、これらの点の間のマッピングが、表示対象の新たなイメージとストロークに関連する元の以前のイメージとの間の変換を決定するのに利用可能である。この変換を利用して、元のイメージは新たなイメージに変換され、一致が妥当なものであるか判断するためのサニティチェックが実行される。一致が妥当である場合、イメージに関連するストロークIDが、変換と共にアプリケーションに返される。変換がスクリーンキャプチャと整合していることを確実にするため、4つのマッチングポイントが、あるイメージから他のイメージへの透視変換を決定するのに利用可能であり、これら全ての整合するマッチングポイントは、ストロークを変換し、それを上部に書き込むのに利用可能なものとして抽出される。一実施例では、システムは、下部にストロークが描画されたイメージデータを抽出及び変換し、それとイメージが当初描画されたバックグラウンドイメージと比較する。
ユーザ体感
従来のホワイトボードシステムは、ポジティブなユーザ体感を提供するユーザインタフェースを有さない。ユーザはしばしば、マークアップを加えたイメージを追跡することを所望する。例えば、ユーザがホワイトボードを使用し、コンテンツをマークアップしているとき、ユーザは、コンテンツが変わったとしても、以前のコンテンツによりストロークを維持することを所望する。しかしながら、従来のシステムは、IWBにより表示されているコンテンツを制御しているユーザにストロークが描画されたページに戻ることを要求し、その後、IWBユーザはイメージ及びストロークが一緒になったページを保存することができる。その後、IWBシステムへのコンテンツの供給を制御するユーザは新たなページに変えることができ、IWBユーザはストロークを消去し、次のページをマークアップし始めることができる。
この体感を回避するため、IWBシステムは、マークアップをキャプチャし、ストロークのグループに基づきページを自動生成する。さらに、IWBシステムは、生成されると、ストロークを同じコンテンツの以前に準備されたページに加える。さらに、IWBシステムは、ユーザが現在のコンテンツを表示するスクリーンを、ストロークが追加されたコンテンツの以前に生成されたページを有するものにスイッチすることを可能にするユーザインタフェースを利用する。一実施例では、ユーザがコンテンツを変えるとき、古いストロークが消え、IWBユーザはストロークを即座に加えることが可能である一方、提供されたイメージが古いページ又は関連するページになった場合、IWBユーザにより描画される関連するストロークが出現する。
一実施例では、本方法は、ディスプレイ面上に表示するための第1コンテンツを受信し、ディスプレイ面の第1エリアに第1コンテンツを表示し、第1コンテンツの第1部分に対してディスプレイ面上に筆記されるとストロークをキャプチャし、第1エリアと異なるディスプレイ面の第2エリアに第1ページを自動生成し、キャプチャされたストロークと共に第1コンテンツを表示することを含む。他の実施例では、第1コンテンツによるページがすでに存在しない場合、ディスプレイ面の第2エリアに第1ページを自動生成する。
更なる他の実施例では、本方法は更に、ストロークが追加された第1部分にオーバラップする第1コンテンツの少なくとも一部をすでに表示した1以上の他のページにストロークを追加することを含む。
更なる他の実施例では、本方法は更に、1以上の追加的なストロークが第1コンテンツ上に以前に表示されたことをマッチングサービスが示す場合、第1コンテンツと共にディスプレイ面上に表示するための1以上の追加的なストロークを追加することを含む。
一実施例では、本方法は更に、ディスプレイ面の第1エリアにディスプレイ面の他のエリアに現在表示されている以前に生成されたページを表示させることを含む。他の実施例では、ディスプレイエリアの第1エリアは、ユーザがストロークを追加可能なディスプレイスクリーンのアクティブエリアである。
一実施例では、本方法は更に、第1コンテンツのストロークコンテクストがあるか判断するため、第1コンテンツをマッチングサービスに送信し、ディスプレイ面上に表示するための第2コンテンツを受信し、第1コンテンツのストロークコンテクストがあるか否かに関するマッチングサービスからのレスポンスが受信されたかに基づき、第2コンテンツをマッチングサービスに送信するか判断することを含む。他の実施例では、本方法は更に、第1コンテンツのストロークコンテクストがあることをマッチングサービスが示す場合、第1コンテンツと共にディスプレイ面上に表示するためのストロークを生成し、第2コンテンツをマッチングサービスに送信するか判断する前に、第1コンテンツのストロークコンテクストがあることをマッチングサービスが示す場合、第2コンテンツをマッチングサービスに送信することを含む。更なる他の実施例では、本方法は更に、第1コンテンツのストロークコンテクストがあるかマッチングサービスが示すまで、第2コンテンツがマッチングサービスに送信されることを遅延させることを含む。
図4は、図1のディスプレイストロークキャプチャ装置102の一実施例のブロック図である。図4を参照して、イメージソース400(図1のイメージソース101など)は、イメージバッファ401にバッファされているイメージを提供する。ストロークバッファ402は、1以上のストロークを格納する。これらのストロークは、ディスプレイ更新ロジック403を介しストロークバッファ402に格納される。ディスプレイ更新ロジック403は、ストロークマッチング装置(ストロークマッチング装置103など)、ストロークキャプチャユニット404及び/又は更なるディスプレイ及び/又はキャプチャ装置からストロークを取得してもよい。ディスプレイ更新ロジック403はまた、イメージバッファ401からバッファされたイメージと、ストロークバッファ402からストロークとを受信し、ディスプレイ405上にイメージをレンダリングする。
一実施例では、ストローク識別子(ID)とイメージとを用いて、ディスプレイ更新ロジック403は、ストロークとイメージとの間の関連付けをデータベース(又はストレージ210などの他のストレージ)に加える。一実施例では、これは、イメージ、ストロークID及びストロークのための境界ボックスを取得し、これらを検索するストロークのデータベースに加えるassociate()関数を利用して実行される。
一実施例では、表示対象のバックグラウンドイメージが与えられると、ディスプレイ更新ロジック403は、ストロークID及び変換のリストを返すための関数を利用する。ディスプレイ更新ロジックはイメージによりマッチング装置を呼び出し、マッチング装置は一致するストロークを返す。ディスプレイロジックは、返されたストロークを古い座標系から表示されるバックグラウンドイメージ座標系に変換する。一実施例では、当該変換は、各ストロークについて異なるものとすることができる。変換はシンプルな移動(x,y)オフセットであってもよい。一般には、変換は、ストロークを新たなバックグラウンドイメージにマッピングするため、それらを移動、スケーリング、回転、スキュー及びせん断(shear)することができる透視変換である。一実施例では、ディスプレイ更新ロジック403は、現在のストローク・イメージ関連付けをメモリ(データベースなど)に保存するための関数を利用する。他の実施例では、ディスプレイ更新ロジック403は、特定のストロークIDをもはや返さないようにデータベースを更新するための関数を利用する(すなわち、ストロークを削除するためなど)。
一実施例では、IWBのユーザインタフェースは、レンダリングされたストロークを含む1以上の以前に表示されたイメージと共に、現在のバックグラウンドイメージを表示する。これらの以前に表示されたイメージはそれぞれ、現在の又はライブのバックグラウンドイメージとして以前に表示され、ストロークがそれに適用された。その後、新たなバックグラウンドイメージがストロークコンテクストを有さない現在の(ライブ)イメージとして表示されると、それのストロークコンテクストと共に以前のバックグラウンドイメージが、ホワイトボードのディスプレイ面上の他の位置に表示される。これは、例えば、ホワイトボードのディスプレイの下部に沿って、又はホワイトボードのディスプレイ上の現在のバックグラウンドイメージの下方などにあってもよい。ストロークコンテクストと共に以前に表示されたバックグラウンドイメージの1以上のページは、現在の(ライブ)イメージと共にディスプレイ面上の異なるウィンドウに表示されてもよい。
図5は、ホワイトボードシステムのユーザインタフェースの一例を示す。図5を参照して、ディスプレイウィンドウ500は、メインディスプレイウィンドウであり、イメージソースからの現在表示されているイメージを表すライブビュー501、又はウィンドウ502〜504に表示される関連するストロークを有した1以上の以前に表示されたイメージなど、それの下方に表示されるページの1つの関連するストローク(存在する場合)と共にイメージを表示する。
ディスプレイウィンドウ500にライブビューページ501を表示する間、ユーザがそれのストロークと共に以前に表示されたページを再表示することを所望する場合、ユーザは、ディスプレイ上のページ502〜504の1つを選択する。この選択は、イメージに対してカーソルを移動させ、ホワイトボードにページが選択されたこと示すためにカーソルコントロール装置を操作することによって(カーソルコントロール装置上のボタンの押下など)、又はイメージ上でホワイトボードをタップすることによって実現されてもよい。
さらに、一実施例では、表示される新たなバックグラウンドイメージが、ストロークコンテクストと共に表示されたままである以前に表示されたページの1以上の一部であるコンテンツを含む場合、以前に表示されたページの1以上の一部である新たなバックグラウンドイメージのエリアになされたストロークは、以前に表示されたページに加えられる。例えば、ストローク510,511がディスプレイウィンドウ500に表示されるライブビューページと共に生成されると、ページ502のイメージは、イメージの当該部分をストローク510,511が生成されたディスプレイウィンドウ500に含める。従って、一実施例では、システムのディスプレイ更新ロジックは、これら2つのストロークをページ502のイメージに自動的に追加する。
ストローク更新遅延
システムが管理するストロークとバックグラウンドイメージとの間の同期の外観に寄与する複数のアイテムがある。これらは、バックグラウンドイメージの到着レート、バックグラウンドイメージに続くべきストロークを決定するため“find()”処理を開始するまでの遅延、ストロークを更新する遅延、及びバックグラウンドイメージを更新する遅延を含む。バックグラウンドイメージがホワイトボード上に表示されるとき、システムは、バックグラウンドイメージと共に表示するバックグラウンドイメージに関連するストロークがあるか判断し、ストロークが存在する場合、これらのストロークをホワイトボード上にバックグラウンドイメージと共に表示するために当該ストロークを取得する。ストロークが取得され、バックグラウンドイメージと共にディスプレイに含めることが可能なレートが、新たなバックグラウンドイメージが表示用のイメージソースから受信されるレートより低速である場合、表示されるストロークは、ディスプレイ上で関連するバックグラウンドイメージと同期しないかもしれない。
図6は、全てのスクリーンの到来に対してマッチング処理に基づくストロークを取得するためのfind()処理が実行されるが、find()処理が到着より長い時間がかかる場合に生じるワーストケースの状況を示す。図6を参照して、この場合、時間が経過するに従って、ストロークとバックグラウンドイメージとの間の遅延がより長くなり、ストロークとイメージとの間の関連付けが大変急速になくなる。図6の下部は、フレーム17がフレーム6“F17S6”からのストロークと共に表示されることを示す。
この同期の欠落を改善するためいくつかの方法がある。一実施例では、ストロークとイメージデータとを関連付けるためのシステム及び方法が開示される。一実施例では、システムは、ディスプレイ面、メモリ、ストロークキャプチャモジュール、マッチングモジュール及びディスプレイ更新モジュールを有する。一実施例では、メモリはディスプレイ面に接続され、複数のストロークのストロークコンテクスト(バックグラウンドイメージなど)を格納し、各ストロークコンテクストは、少なくとも1つのストロークと以前に表示されたイメージデータの一部との間の関連付けを表す。ストロークキャプチャモジュールは、ディスプレイ面と共に動作可能であり、ディスプレイ面に書かれた1以上のストロークをキャプチャし、1以上のストロークに対応するキャプチャされたストロークデータと新たなストロークコンテクストを生成するためのコンテンツとを関連付けるため、メモリに通信接続される。ストロークキャプチャモジュールは、新たなストロークコンテクストをメモリに格納する。
マッチングモジュールは、第1コンテンツの受信に応答して、ディスプレイ面と動作し、第1コンテンツがメモリに格納されている1つのストロークコンテクストに関連付けされているか判断し、第1コンテンツに関連する1つのストロークコンテクストの1以上のストロークを特定する情報と、第1コンテンツに対するディスプレイ面上の表示のための1つのストロークコンテクストの1以上のストロークを変換するための変換情報とを返す。一実施例では、マッチングサービスは、第1コンテンツがストロークコンテクストに関連するか判断するため、キーポイント検出、特徴抽出及びマッチングを実行する。ディスプレイ更新ロジックは、第1コンテンツのストロークがあるか判断するため、第1コンテンツをマッチングサービスに送信し、第1コンテンツのストロークがあるか否かに関するマッチングサービスからのレスポンスが受信されたかに基づき、第1コンテンツの後に受信した第2コンテンツをマッチングサービスに送信するか判断する。
一実施例では、システムにより実行される方法は、ディスプレイ面上に表示するための第1コンテンツを受信し、第1コンテンツについて1以上のストロークがあるか判断するため、第1コンテンツをマッチングサービスに送信し、ディスプレイ面上に表示するための第2コンテンツを受信し、結果に関するマッチングサービスからのレスポンスが以前のマッチングリクエストから受信されたかに基づき、第2コンテンツをマッチングサービスに送信するか判断することを含む。一実施例では、本方法は更に、ストロークが第1コンテンツに一致することをマッチングサービスが示す場合、第1コンテンツと共にディスプレイ面上に表示するためのストロークを生成し、第2コンテンツをマッチングサービスに送信するか判断する前に、第1コンテンツについてストロークコンテクストが存在することをマッチングサービスが示す場合、第2コンテンツをマッチングサービスに送信することを含む。
一実施例では、本方法は更に、第1コンテンツについてストロークコンテクストがあるかマッチングサービスが示すまで、第2コンテンツがマッチングサービスに送信されることを遅延することを含む。他の実施例では、本方法は更に、ディスプレイ面上に表示するための第3コンテンツを受信し、第1コンテンツについてストロークコンテクストがあるか否かに関するマッチングサービスからのレスポンスを受信する前に、第3コンテンツが受信された場合、第2コンテンツをマッチングサービスに送信ないことを決定することを含む。更なる他の実施例では、本方法は更に、第3コンテンツについてストロークコンテクストがあるか判断するため、第3コンテンツをマッチングサービスに送信することを含む。
より詳細には、一実施例では、新たなバックグラウンドイメージが表示のために入力及び/又は受信されると、ホワイトボードは、以前のバックグラウンドイメージに関連するストロークをチェックした結果を受信したか判断する。受信していない場合、ホワイトボードは新たなバックグラウンドイメージについてストロークに対するリクエストを送信しない。図7及び8は、より良好な同期を維持するための2つの方法を示す。図7は、返された最新のストロークを基本的には常に表示し、受信した最新のイメージを常に表示するが、以前のイメージからの結果が受信されるまで新たなイメージを送信しない。具体的には、図7において、より直近のスクリーンが到着したときのスクリーンに対するfind()処理の破棄は、ストロークと正しいバックグラウンドイメージとの間の遅延を補償し、これにより、当該遅延は1つのfind()処理の時間より若干大きくなる。新たなイメージが送信されると、最近の利用可能なイメージが利用される。これは、いくつかのフレーム(イメージ)が利用されないことを意味する。
“ストロークコンテクスト”は、マッチングシステムに内部にあり、高速化及びマッチングの向上のための単なる便宜上のものである。ディスプレイユニットの観点から、それはコンテンツ及びストロークIDを送信し、ストローク及びストローク変換を受信し、“ストロークコンテクスト”を受信しない。図7において、フレーム0,2,4,6,9,11,13が送信され、フレーム1,3,5,7,8,10,12は表示のために送信されず、最近に返されたストロークと共に出現する。
図8において、フレームが送信され、関連するストロークが受信されたときに限って、フレームが表示される。このことは、ストロークが表示されるフレームと常に正確に同期していることを意味するが、フレームが受信される時点とそれが表示される時点との間には遅延がある(従って、ホワイトボードとスクリーンを共有するPCとの双方を見ることができる場合、遅延に気付くかもしれない)。また、図8では、マッチングのため送信されないこれらのフレームは表示されない(また、ディスプレイフレームレートは入力フレームレートより遅く、少しぎくしゃくして見えるかもしれない)。
他の代替は、フレームを遅延させるが、フレームレートを維持することである。このようなケースでは、フレーム0はストロークの受信後に表示され、フレーム1はフレーム0とちょうど同じ時間遅延され、その後に同じストロークと共に表示される。これはスムーズなバックグラウンドの更新、近い同期のストローク及びより低速なフレームレートによるストロークの更新をもたらす。
他の実施例では、フレームは受信直後にはディスプレイに送信されず、その代わりに、マッチングが実行されるまで遅延され、存在する場合には、何れのストロークがフレームと共に表示されるべきか判断される。従って、ホワイトボードが表示のためのバックグラウンドイメージを受信するとすぐに、何れかのストロークがバックグラウンドイメージに関連しているか判断するためのリクエストがストローク共有サービスに送信され、ストローク共有サービスがリクエストの結果を返すまでバックグラウンドイメージがバッファされる。このようにして、フレーム更新レートがストローク検出処理のスピード(又は未満)で実行される限り、ストロークは、関連するバックグラウンドイメージの表示と同期し続ける。
同期を更に向上させるため、フレームの表示は、find()処理が終了するまで遅延させることができる。この場合、ストロークは、常にバックグラウンドイメージと完全に同期することになる。このアプローチの問題点は、更新フレームレートがより低速となり(終了したfind()処理のレート)、バックグラウンドイメージの更新のソースの間に遅延が生じることである。多くの場合、バックグラウンドイメージは、特にソースがリモートにあり、すでに遅延しており、比較のため確認することができない場合には問題とはならない。
要約
一実施例では、ユーザは、IWBシステムを利用してセッションのサマリを取得することができる。一実施例では、サマリは、セッション中にバックグラウンドイメージに行われた全てのストロークを含む1以上のページを含む。
サマリを生成する方法及び装置が開示される。一実施例では、システムは、ディスプレイ面、メモリ、ストロークキャプチャモジュール及び要約ユニットを有する。メモリは、複数のストロークのストロークコンテクストを格納するため、ディスプレイ面に接続され、各ストロークコンテクスト(バックグラウンドイメージなど)は、少なくとも1つのストロークと以前に表示されたイメージデータ(コンテンツ)の一部との間の関連付けを表す。ストロークキャプチャモジュールは、ディスプレイ面と動作し、ディスプレイ面に提示されたイメージデータ上に書かれた1以上のストロークをキャプチャするため、メモリに通信接続される。
要約ユニットは、セッション中に行われた1以上のストロークを含むセッション中に表示されたコンテンツに基づき、セッションのサマリを生成するため、メモリに接続される。図9は、メモリ(データベースなど)に接続され、ページの向き付けされたイメージ及びストロークを生成するための要約ユニットとして動作するページサマリロジック901を示す。一実施例では、要約ユニットは、a)サマリページの一部でなく、第1イメージデータに関連する第1ストロークに対応するストロークデータを取得するためメモリにアクセスし、b)第1イメージデータに関連する他の何れかのストロークに対応するストロークデータを取得するためメモリにアクセスし、c)第1ストローク及び第1イメージデータに関連する他の何れかのストロークにより第1サマリページを構成し、及びd)サマリページの一部でない他のストロークについてa)〜c)を繰り返すことによって、サマリを生成するよう動作可能である。一実施例では、要約ユニットはまた、e)全てのストロークが少なくとも1つのサマリページに含まれるまでd)を繰り返すことによって、サマリを生成するよう動作可能である。
一実施例では、要約ユニットは、ユーザストロークに基づきサマリのコンテンツを選択する。一実施例では、サマリは、少なくとも1回行われた全てのストロークを含む出力を含む。一実施例では、サマリはシステムとして生成され、それのホワイトボード(ディスプレイ面)が利用される。一実施例では、サマリは、ディスプレイ面上の1以上のウィンドウ(図5のユーザインタフェースなど)に現在表示される複数のページを有する。
一実施例では、本方法は、ディスプレイ面上に表示されるコンテンツに書き込まれた1以上のストロークをキャプチャし、1以上のストロークに対応するキャプチャされたストロークデータと、ストロークコンテクストを生成するため書き込まれたコンテンツとを関連付け、ここで、各ストロークコンテクストは少なくとも1つのストロークとディスプレイ面上に以前に表示されたコンテンツの一部との関連付けを表し、セッション中に行われた1以上のストロークを含むセッション中に表示されたコンテンツに基づきセッションのサマリを生成することを含む。一実施例では、サマリの生成は、a)サマリページの一部でない、第1イメージデータに関連する第1ストロークに対応するストロークデータを取得するためメモリにアクセスし、b)第1イメージデータに関連する他の何れかのストロークに対応するストロークデータを取得するためメモリにアクセスし、c)第1ストローク及び第1イメージデータに関連する他の何れかのストロークと共に第1サマリページを構成し、d)サマリページの一部でない他のストロークについてa)〜c)を繰り返すことを含む。他の実施例では、本方法は更に、e)全てのストロークが少なくとも1つのサマリページに含まれるまでd)を繰り返すことを含む。図10は、当該処理の一実施例のフロー図である。当該処理は、ハードウェア(回路、専用ロジックなど)、ソフトウェア(汎用コンピュータシステム又は専用マシーン上で実行されるものなど)又はこれらの組み合わせを有する処理ロジックによって実行される。
一実施例では、グリーディアルゴリズムが、1以上のサマリページのセットを生成するため要約ユニットによって実行される。グリーディアルゴリズムはデータベース内のストロークセットから開始され、ストロークの何れもサマリページにない。当該アルゴリズムは、第1ストロークを取得し、それに関連するバックグラウンドイメージを特定する。一実施例では、データベースは、当該特定をサポートするためストロークに関連する少なくともいくつかのイメージを格納する。バックグラウンドイメージを特定すると、アルゴリズムはデータベースにアクセスし、バックグラウンドイメージに関連する他の全てのストロークを取得する。一実施例では、当該アルゴリズムは、“クエリ”としてバックグラウンドイメージを利用し、ストローク及び当該ストロークの変換を決定する(ディスプレイユニットが実行するように)。アルゴリズムは、第1サマリページを生成するため、特定されたバックグラウンドイメージに関連する全てのストロークをバックグラウンドイメージに含める。従って、サマリページは、バックグラウンドイメージ及びストロークの合成を表現する。サマリページは、任意的にはそれ自体によって及び/又は他のサマリページと共に印刷されてもよい。サマリページはまた、それを生成するのに用いられたメモリより長い期間のストロークに移転及び/又は格納されてもよい。この次のサマリページは以前のサマリページにすでに現れた1以上のストロークを含むことに留意されたい。
第1サマリページが生成された後、アルゴリズムは、サマリページの一部でないストロークセットの他のストロークを検出するため、データベースにアクセスする。このようなストロークが取得されると、関連するバックグラウンドイメージが特定され、当該バックグラウンドイメージに関連する他の全てのストロークがデータベースから取得され、他のサマリページが当該バックグラウンドイメージ及び関連するストロークと共に生成される。
当該処理は、ストロークセットからの全てのストロークが少なくとも1つのサマリページに出現するまで繰り返される。
一実施例では、サマリページは、第1ストロークがページに追加された時間によって順序づけされることに留意されたい。
コンピュータシステムの具体例
図11は、本発明の実施例を実施するのに利用可能なコンピュータシステム1100のブロック図である。一実施例では、コンピュータシステム1100は、図1に図示され、上述されたコンポーネントの1以上を実現するのに利用されてもよい。図11に示されるように、コンピュータシステム1100は、バスサブシステム1104を介しいくつかの周辺サブシステムと通信するプロセッサ1102を有する。これらの周辺サブシステムは、メモリサブシステム1108及びファイルストレージサブシステム1110を有するストレージサブシステム1106、ユーザインタフェース入力装置1112、ユーザインタフェース出力装置1114及びネットワークインタフェースサブシステム1116を有してもよい。
バスサブシステム1104は、コンピュータシステム1100の各種コンポーネント及びサブシステムが意図されるように互いに通信することを可能にするための機構を提供する。バスサブシステム1104は単一のバスとして概略的に示されているが、バスサブシステムの他の実施例は複数のバスを利用してもよい。
ネットワークインタフェースサブシステム1116は、他のコンピュータシステム、ネットワーク及びストレージとのインタフェースを提供する。ネットワークインタフェースサブシステム1116は、コンピュータシステム1100と他のシステムとの間でデータを送受信するためのインタフェースとして機能する。例えば、IWBシステムのネットワークインタフェースサブシステム1116は、コントローラがインターネットなどの通信ネットワークを介し他の遠隔配置されたIWBシステムと通信することを可能にするものであってもよい。
ユーザインタフェース入力装置1112は、キーボード、マウスなどのポインティング装置、トラックボール、タッチパッド、グラフィクスタブレット、スキャナ、バーコードスキャナ、ディスプレイに搭載されるタッチスクリーン、音声認識システムなどのオーディオ入力装置、マイクロフォン及び他のタイプの入力装置を含むものであってもよい。一般に、“入力装置”という用語の使用は、コンピュータシステム1100に情報を入力するための可能な全てのタイプの装置及び機構を含むことが意図される。
ユーザインタフェース出力装置1114は、ディスプレイサブシステム、プリンタ、ファックスマシーン、オーディオ出力装置などの非ビジュアルディスプレイなどを含むものであってもよい。ディスプレイサブシステムは、CRT(Cathode Ray Tube)、液晶ディスプレイ(LCD)などのフラットパネル装置又はプロジェクション装置であってもよい。一般に、“出力装置”という用語の使用は、コンピュータシステム1100から情報を出力するための可能な全てのタイプの装置及び機構を含むことが意図される。
ストレージサブシステム1106は、本発明の機能を提供するベーシックプログラミング及びデータ構造を格納するためのコンピュータ可読記憶媒体を提供する。プロセッサにより実行されると、本発明の機能を提供するソフトウェア(プログラム、コードモジュール、命令)は、ストレージサブシステム1106に格納されてもよい。これらのソフトウェアモジュール又は命令は、プロセッサ1102により実行されてもよい。ストレージサブシステム1106はまた、本発明により利用されるデータを格納するためのレポジトリを備えてもよい。ストレージサブシステム1106は、メモリサブシステム1108及びファイル/ディスクストレージサブシステム1110を有してもよい。
メモリサブシステム1108は、プログラム実行中に命令及びデータのストレージのためのメインRAM(Random Access Memory)1118と、固定的な命令が格納されるROM(Read Only Memory)1120とを含む複数のメモリを有してもよい。ファイルストレージサブシステム1110は、プログラム及びデータファイルのための非一時的で永続的な(不揮発性)ストレージを提供し、ハードディスクドライブ、関連する着脱可能な媒体と共にフロッピー(登録商標)ディスクドライブ、CD−ROM(Compact Disk Read Only Memory)ドライブ、光ドライブ、着脱可能なメディアカートリッジ及び他の同様の記憶媒体を含むものであってもよい。
コンピュータシステム1100は、パーソナルコンピュータ、電話、ポータブルコンピュータ、ワークステーション、ネットワークコンピュータ又は他の何れかのデータ処理システムを含む各種タイプとすることが可能である。コンピュータ及びネットワーク可変性のため、図11に示されるコンピュータシステムの説明は、コンピュータシステムの好適な実施例を説明するための単なる具体例であることが意図される。図11に示されるシステムより多数又は少数のコンポーネントを有する他の多くのコンフィギュレーションが可能である。
本発明の特定の実施例が説明されたが、各種改良、変更、他の構成及び均等がまた本発明の範囲内に含まれる。上述された教示は、ブート又はリブート可能なプロセッサを有する何れかのシステムに適用されてもよい。例えば、具体例として特定のシステムを利用した実施例が上述されたが、これは限定的なものでない。上述され、請求項に記載される教示はまた、スクリーン上のストロークが受付され、ドキュメントイメージの基礎となるイメージパッチとマッチングされ、その後にイメージパッチが新たなドキュメントイメージに検出されるかに基づき再描画又は削除することを可能にする他の計算システムによって実施されてもよい。
本発明の多くの変更及び改良が上記説明を参照した当業者に明らかになる一方、例示的に図示及び説明される何れか実施例も限定的なものとして解釈されるべきでないことが理解されるべきである。従って、各種実施例の詳細の参照は、本発明に本質的なものとしてみなされる特徴のみを記載した請求項の範囲を限定することを意図するものでない。