特許第5738887号(P5738887)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ マイクロソフト コーポレーションの特許一覧

特許5738887ソース・ビットマップから2Dパターンを識別し抽出することによるビットマップ・リモーティングの加速
<>
  • 特許5738887-ソース・ビットマップから2Dパターンを識別し抽出することによるビットマップ・リモーティングの加速 図000002
  • 特許5738887-ソース・ビットマップから2Dパターンを識別し抽出することによるビットマップ・リモーティングの加速 図000003
  • 特許5738887-ソース・ビットマップから2Dパターンを識別し抽出することによるビットマップ・リモーティングの加速 図000004
  • 特許5738887-ソース・ビットマップから2Dパターンを識別し抽出することによるビットマップ・リモーティングの加速 図000005
  • 特許5738887-ソース・ビットマップから2Dパターンを識別し抽出することによるビットマップ・リモーティングの加速 図000006
  • 特許5738887-ソース・ビットマップから2Dパターンを識別し抽出することによるビットマップ・リモーティングの加速 図000007
  • 特許5738887-ソース・ビットマップから2Dパターンを識別し抽出することによるビットマップ・リモーティングの加速 図000008
  • 特許5738887-ソース・ビットマップから2Dパターンを識別し抽出することによるビットマップ・リモーティングの加速 図000009
  • 特許5738887-ソース・ビットマップから2Dパターンを識別し抽出することによるビットマップ・リモーティングの加速 図000010
  • 特許5738887-ソース・ビットマップから2Dパターンを識別し抽出することによるビットマップ・リモーティングの加速 図000011
  • 特許5738887-ソース・ビットマップから2Dパターンを識別し抽出することによるビットマップ・リモーティングの加速 図000012
  • 特許5738887-ソース・ビットマップから2Dパターンを識別し抽出することによるビットマップ・リモーティングの加速 図000013
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】5738887
(24)【登録日】2015年5月1日
(45)【発行日】2015年6月24日
(54)【発明の名称】ソース・ビットマップから2Dパターンを識別し抽出することによるビットマップ・リモーティングの加速
(51)【国際特許分類】
   G06F 13/00 20060101AFI20150604BHJP
【FI】
   G06F13/00 550C
【請求項の数】15
【全頁数】17
(21)【出願番号】特願2012-543113(P2012-543113)
(86)(22)【出願日】2010年11月5日
(65)【公表番号】特表2013-513859(P2013-513859A)
(43)【公表日】2013年4月22日
(86)【国際出願番号】US2010055737
(87)【国際公開番号】WO2011071623
(87)【国際公開日】20110616
【審査請求日】2013年11月1日
(31)【優先権主張番号】12/636,304
(32)【優先日】2009年12月11日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】500046438
【氏名又は名称】マイクロソフト コーポレーション
(74)【代理人】
【識別番号】100140109
【弁理士】
【氏名又は名称】小野 新次郎
(74)【代理人】
【識別番号】100075270
【弁理士】
【氏名又は名称】小林 泰
(74)【代理人】
【識別番号】100096013
【弁理士】
【氏名又は名称】富田 博行
(74)【代理人】
【識別番号】100092967
【弁理士】
【氏名又は名称】星野 修
(74)【代理人】
【識別番号】100153028
【弁理士】
【氏名又は名称】上田 忠
(74)【代理人】
【識別番号】100138759
【弁理士】
【氏名又は名称】大房 直樹
(72)【発明者】
【氏名】アブド,ナディム・ワイ
(72)【発明者】
【氏名】アルブ,ボイク・アントン
(72)【発明者】
【氏名】ジトニック,ザ・サード,チャールズ・ローレンス
【審査官】 新田 亮
(56)【参考文献】
【文献】 米国特許出願公開第2009/0024763(US,A1)
【文献】 特開2006−135596(JP,A)
【文献】 特開2008−193580(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 13/00
(57)【特許請求の範囲】
【請求項1】
サーバーからタイル指示を受け取る回路であって、前記タイル指示は、タイル、キャッシュされたタイルのキャッシュにおける位置、および格子上に前記タイル指示を表示する位置、からなるグループから選択された少なくとも1つを含む、回路と、
サーバーからフィーチャー指示を受け取る回路であって、前記フィーチャー指示は、フィーチャーの前記キャッシュにおける位置、および前記フィーチャーを表示する位置を含み、前記フィーチャーは、画像の繰り返し特性を含み、前記タイルは、前記タイルに対応する前記フィーチャーの境界を定めるものである、回路と、
前記画像を表示する回路であって、前記画像は、前記フィーチャーと重ね合わせた前記格子上における前記タイル指示を含む、回路と、
を備えるシステム。
【請求項2】
前記フィーチャー指示は、複数のフィーチャーと、当該フィーチャー指示内における各フィーチャーの位置の指示とを含み、
各フィーチャーの前記位置の各指示に基づいて、前記フィーチャー指示内における各フィーチャーを判定する回路を備える、請求項1に記載のシステム。
【請求項3】
前記フィーチャーは、テキスト、線、または、前記画像と直前に受け取った画像との間における動きを含む、請求項1に記載のシステム。
【請求項4】
前記フィーチャーはテキストを含み、
前記フィーチャーは更に、前記テキストと共に表示するフォントの指示を含む、請求項3に記載のシステム。
【請求項5】
前記フィーチャーは形状に隣接している、請求項1に記載のシステム。
【請求項6】
前記形状は矩形である、請求項5に記載のシステム。
【請求項7】
コンピューター実行可能命令を備えた1または複数の物理的なコンピューター読み取り可能記憶媒体であって、前記コンピューター実行可能命令は、1または複数のプロセッサーによって実行された時に、次のステップ:
サーバーからタイル指示を受け取るステップであって、前記タイル指示は、タイル、キャッシュされたタイルのコンピューターキャッシュにおける位置、および格子上に前記タイル指示を表示する位置、からなるグループから選択された少なくとも1つを含む、ステップと、
サーバーからフィーチャー指示を受け取るステップであって、前記フィーチャー指示は、フィーチャーの前記コンピューターキャッシュにおける位置、および前記フィーチャーを表示する位置を含み、前記フィーチャーは、画像の繰り返し特性を含み、前記タイルは、前記タイルに対応する前記フィーチャーの境界を定めるものである、ステップと、
前記画像を表示するステップであって、前記画像は、前記フィーチャーと重ね合わせた前記格子上における前記タイル指示を含む、ステップと、
が実施されるようにする、コンピューター読み取り可能記憶媒体。
【請求項8】
前記フィーチャー指示は複数のフィーチャーを含む、請求項7に記載のコンピューター読み取り可能記憶媒体。
【請求項9】
前記フィーチャーは、テキスト、線、または、前記画像と直前に受け取った画像との間における動きを含む、請求項7に記載のコンピューター読み取り可能記憶媒体。
【請求項10】
前記フィーチャーはテキストを含み、
前記フィーチャーは更に、前記テキストと共に表示するフォントの指示を含む、請求項9に記載のコンピューター読み取り可能記憶媒体。
【請求項11】
情報を受け取り表示するコンピューター実装方法であって、
サーバーからタイル指示を受け取るステップであって、前記タイル指示は、タイル、キャッシュされたタイルのコンピューターキャッシュにおける位置、および格子上に前記タイル指示を表示する位置、からなるグループから選択された少なくとも1つを含む、ステップと、
サーバーからフィーチャー指示を受け取るステップであって、前記フィーチャー指示は、フィーチャーの前記コンピューターキャッシュにおける位置、および前記フィーチャーを表示する位置を含み、前記フィーチャーは、画像の繰り返し特性を含み、前記タイルは、前記タイルに対応する前記フィーチャーの境界を定めるものである、ステップと、
前記画像を表示するステップであって、前記画像は、前記フィーチャーと重ね合わせた前記格子上における前記タイル指示を含む、ステップと、
を含むコンピューター実装方法。
【請求項12】
前記フィーチャー指示は複数のフィーチャーを含む、請求項11に記載のコンピューター実装方法。
【請求項13】
前記フィーチャーは、テキスト、線、または、前記画像と直前に受け取った画像との間における動きを含む、請求項11に記載のコンピューター実装方法。
【請求項14】
前記フィーチャーはテキストを含み、
前記フィーチャーは更に、前記テキストと共に表示するフォントの指示を含む、請求項11に記載のコンピューター実装方法。
【請求項15】
前記フィーチャーは矩形形状に隣接している、請求項11に記載のコンピューター実装方法。
【発明の詳細な説明】
【背景技術】
【0001】
[0001] コンピューターは一度は分離され、または他のコンピューターとは最小限の相互作用を有するか殆ど相互作用を有していなかったが、今日ではコンピューターはローカル・エリア・ネットワーク(LAN)、ワイド・エリア・ネットワーク(WAN)、ダイアルアップ接続等を通じて、多種多様の他のコンピューターと相互作用を行う。インターネットの広範囲にわたる成長によって、コンピューター間の接続は増々重要になり、多くの新たな用途および技術への扉を開いた。大規模ネットワークが成長したこと、および低コスト・パーソナル・コンピューターの広範囲にわたって入手可能になったことが、多くの人々が作業し、相互作用し、通信し、そして遊ぶ方法を根本的に変化させた。
【0002】
[0002] 増々普及しつつある1つのネットワーキング形態は、リモート・プレゼンテーション・システム(remote presentation system)と一般的に呼ぶことができ、Remote Desktop Protocol(RDP)、Independent Computing Architecture(ICA)というようなプロトコル、ならびにデスクトップおよび他のアプリケーションをリモート・ユーザーと共有するためのその他のプロトコルを用いることができる。このような計算システムは、通例、キーボード押下およびマウス・クリックまたは選択をクライアントからサーバーに送信し、ネットワーク接続(例えば、インターネット)を通じて、画面更新を逆方向に中継する。したがって、ユーザーは、彼らの機械がLANの一部として動作しているかのような体験を有するが、実際には、クライアント・デバイスには、アプリケーションのスクリーンショットがサーバー側に現れたときに、これらが送られるに過ぎない。
【0003】
[0003] グラフィクス・データをクライアントに送るためには、通常2つの技法が用いらており、これらの技法は、グラフィクス・プリミティブおよび他の動作を送り、クライアント側のサブルーチンに何をそしてどのように描画するのか命令する技法と、ビットマップ画像を表示のためにクライアントに送る技法である。多くの場合、グラフィクス・プリミティブを送る方が、そのグラフィクス・プリミティブの目に見える実行結果を送るよりも、少ない帯域幅で済む。例えば、11文字のストリング"Hello world"についてのテキスト・プリミティブは、11ユニコード・バイトで表すことができる。各キャラクタを12画素×12画素のエリアに表示しようとする場合、”Hello world"のビットマップ表現を表現するには、約200倍多いバイトが必要となり、したがって約200倍広い帯域幅が必要となる。
【0004】
[0004] 同様に、双方共不透明な矩形のグラフィクス・プリミティブ表現、および画像のスクロールには、これらのビットマップ相当物よりも1桁少ない帯域幅しか必要とされない。同等のビットマップ表現ならば、かなり圧縮することができるが、それでもなお少なくとも数キロバイトが必要であるのが一般的である。不透明な矩形のグラフィクス・プリミティブ表現は、通例、4バイト以下しか必要としない。同様に、画像スクロール(「画面対画面ブリット」(screen-to-screen blit)と呼ぶこともある)は、約10バイトを占めるコマンドとして、グラフィクス・プリミティブで表現することができる。800画素×400画素のウィンドウを移動させることのビットマップ形態は、1.83MBも(800×400画素エリアに、画素当たり3バイトを乗算し、前の位置および新たな位置を考慮に入れるために2倍する)必要となる、即ち、約10,000倍の空間が必要となる場合がある。
【0005】
[0005] 以前に格納した画像を送ろうとするときのように、送るべきグラフィクス・プリミティブが入手できないときがある。このような場合、ビットマップ・フレーム(アプリケーション・ウィンドウのような)をクライアントに送るとき、ビットマップ・フレームを再分割してタイルにすることができる。次いで、これらのタイルをクライアント側でキャッシュし、2つのビットマップ間でタイルが繰り返されるときに、サーバーは、そのタイルを再度クライアントに送るのではなく、キャッシュされたタイルをクライアントが表示するための命令を送る。これは、リモート・プレゼンテーション・セッションの帯域幅コストを、特にタイルが頻繁に繰り返されるときに、大きく低減する。
【0006】
[0006] しかしながら、ビットマップ・タイルをキャッシュするこれらの技法を用いても、ビットマップを送るのに必要となる帯域幅は、グラフィクス・プリミティブを送るのに必要な帯域幅をなおも大きく上回る。更に、ウィンドウをスクロールする画素数が、タイルの1つの寸法における画素数の偶数倍でないときのように、キャッシングが非効率的であることが証明された場合も多くある。画像が実質的に同一であることに変わりがなくても、タイルとは同じように整列しないので、既にキャッシュされているタイルは使用不可になる。
【発明の概要】
【0007】
[0007] したがって、リモート・プレゼンテーション・セッションを通じてビットマップ画像を送るのに必要な帯域幅を低減することができれば、従来技術に対する改良となるであろう。
【0008】
[0008] 本開示の一実施形態では、サーバー・システムが、リモート・プレゼンテーション・セッションにおいて送られる画像を分析して、繰り返される可能性があるフィーチャー(feature)(画像内で繰り返されるもの、またはサーバーが当該セッションにおいて送る複数の画像間で繰り返されるものの双方)を求める。これらのフィーチャーは、テキスト、アプリケーションのナビゲーション・ボタンというような事項を含むことができる。
【0009】
[0009] サーバーは、画像において、繰り返される確率が最も高いセグメントを突き止めることによって、画像内にあるフィーチャーの各インスタンスを特定する。次いで、このようにして発見された各セグメントは、フィーチャーであると宣言され、ハッシュ・シグネーチャー(hash signature)が割り当てられる。
【0010】
[0010] 次いで、サーバーは、各フィーチャーによって占有されているエリアを、所定の値と置き換える。この所定の値は、そのエリアの優勢色、または、近隣画素の繰り返しとすることができ、ランレングス、したがって、圧縮を最大限大きくすることができる。次いで、サーバーはこの画像をタイルに分割する。
【0011】
[0011] 次に、サーバーは、新たなフィーチャーおよび新たなタイルをキャッシュする。サーバーは、これらのフィーチャーおよびタイルのいずれかが既にリモート・プレゼンテーション・セッションのクライアント計算機上に格納されているか否か判断する。クライアントが既にこれらのフィーチャーまたはタイルを格納している場合、サーバーはクライアントに、この画像内においてそのしかるべき位置にそれを表示するように命令する。クライアントが未だこれらのフィーチャーやタイルを格納していない場合、サーバーは、それを格納することおよび画像内におけるそのしかるべき位置にそれを表示することの双方の指示と共に、それをクライアントに送る。
【0012】
[0012] 本開示は、これらの教示を実現するシステム、方法、およびコンピューター読み取り可能記憶媒体を含む。
[0013] 本開示は「ビットマップ」画像に言及するが、これらの教示は種々のフォーマットで表現される画像にも適用できることは認められよう。
【0013】
[0014] 尚、本開示の1つ以上の種々の態様は、本明細補において言及される本開示の態様を実行するための回路および/またはプログラミングを含むことができるがこれらには限定されないこと、これらの回路および/またはプログラミングは、システム設計者の設計選択に応じて、本明細書において言及される態様を実行するように構成されたのであれば、ハードウェア、ソフトウェア、および/またはファームウェアのいずれの組み合わせでも事実上可能であることは、当業者には認めることができよう。
【0014】
[0015] 以上に述べたことは摘要であり、必然的に、詳細の簡略化、一般化、および省略を含む。この摘要は、例示に過ぎず、限定を全く意図していないことは、当業者には認められよう。
【0015】
[0016] ソース・ビットマップから非格子タイルを抽出することによって、ビットマップ・リモーティング(remoting)を加速するシステム、方法、およびコンピューター読み取り可能媒体について、添付図面を参照しながら更に説明する。
【図面の簡単な説明】
【0016】
図1図1は、本明細書において記載される技法を具体化することができる汎用計算環境の一例を示す。
図2図2は、リモート・プレゼンテーション・セッションにおいて送信されるサンプル画像を示す。
図3A図3Aは、図2の画像が白黒表現に変換された後における、サンプル画像を示す。
図3B図3Bは、1つ以上のフィーチャーを識別するために区分された後における、図3Aの画像を示す。
図4図4は、図3Bにおいて識別され、図2のサンプル画像に適用された、フィーチャーを示す。
図5A図5Aは、リモート・プレゼンテーション・セッションにおいて送信される、図2と同様の、別のサンプル画像を示す。
図5B図5Bは、図5Aの画像のテキストのみの区分を示す。
図5C図5Cは、図5Aの画像のテキスト以外の区分を示す。
図6A図6Aは、部分的にフィーチャーが入っているタイルを示す。
図6B図6は、フィーチャーを取り除き、タイルの優勢特性で置き換えた後における、図6Aのタイルを示す。
図7図7は、サーバーが非格子タイルをソース・ビットマップから抽出することによって、ビットマップ・リモーティングを加速する動作手順の一例を示す。
図8図8は、クライアントが非格子タイルをソース・ビットマップから抽出することによって、ビットマップ・リモーティングを加速する動作手順の一例を示す。
【発明を実施するための形態】
【0017】
[0029] 図1は、本明細書において記載する技法を採用することができる汎用計算機のブロック図である。計算システム環境120は、適した計算環境の一例に過ぎず、ここで開示される主題の使用範囲や機能について、何の限定も示唆することを意図していない。また、計算環境120が、本明細書において例示されるいずれの1つのコンポーネントまたはコンポーネントの組み合わせに関して何らかの依存性または要件を有するように解釈してはならない。実施形態によっては、図示する種々の計算エレメントが、本開示の特定の態様をインスタンス化するように構成されている回路を含むこともあり得る。例えば、本開示において用いられる回路という用語は、ファームウェアまたはスイッチによって機能(1つまたは複数)を実行するように構成されている特殊ハードウェア・コンポーネントを含むことができる。別の実施形態例では、回路という用語は、機能(1つまたは複数)を実行するために動作可能なロジックを具現化するソフトウェア命令によって構成される汎用演算装置、メモリー等を含むことができる。回路がハードウェアおよびソフトウェアの組み合わせを含む実施形態例では、実装者(implementer)は、ロジックを具体化するソース・コードを書くことができ、ソース・コードを機械読み取り可能コードにコンパイルすることができ、この機械読み取り可能コードを汎用演算装置によって処理することができる。技術的現状では、ハードウェア、ソフトウェア、またはハードウェア/ソフトウェアの組み合わせの間には殆ど差がないというところまで発展していることを当業者は認めることができるので、特定の機能を実行するためにハードウェアまたはソフトウェアのどちらを選択するかということは、実装者に委ねられた設計選択事項である。更に具体的には、ソフトウェア・プロセスを等価のハードウェア構造に変換することができ、更にハードウェア構造自体を等価のソフトウェア・プロセスに変換することができることを、当業者は認めることができる。つまり、ハードウェアの実施態様およびソフトウェアの実施態様のどちらを選択するかということは、実装者に委ねられた設計選択事項の1つである。
【0018】
[0030] コンピューター141は、通例、種々のコンピューター読み取り可能媒体を含む。コンピューター読み取り可能媒体は、コンピューター141がアクセス可能な入手可能な媒体であればいずれでも可能であり、揮発性および不揮発性の双方、リムーバブル、および非リムーバブル媒体を含む。システム・メモリー122は、リード・オンリー・メモリー(ROM)123およびランダム・アクセス・メモリー(RAM)160のような揮発性および/または不揮発性メモリーの形態で、コンピューター記憶媒体を含む。基本入出力システム124(BIOS)は、起動中のように、コンピューター141内のエレメント間におけるデーター転送を補助する基本的なルーチンを含み、通例ROM123内に格納されている。RAM160は、通例、演算装置159が直ちにアクセス可能であるデーターおよび/またはプログラム・モジュール、または現在これによって処理されているデーターおよび/またはプログラム・モジュールを収容する。一例として、そして限定ではなく、図1は、オペレーティング・システム125、アプリケーション・プログラム126、その他のプログラム・モジュール127、およびプログラム・データー128を示す。
【0019】
[0031] また、コンピューター141は、その他のリムーバブル/非リムーバブル揮発性/不揮発性コンピューター記憶媒体も含むことができる。一例にすぎないが、図1は、非リムーバブル不揮発性磁気媒体からの読み取りおよびこれへの書き込みを行なうハード・ディスク・ドライブ138、リムーバブル不揮発性磁気ディスク154からの読み取りおよびこれへの書き込みを行なう磁気ディスク・ドライブ139、ならびにCD ROMまたはその他の光媒体のようなリムーバブル不揮発性光ディスク153からの読み取りおよびこれへの書き込みを行なう光ディスク・ドライブ140を示す。動作環境の一例において使用可能なその他のリムーバブル/非リムーバブル、揮発性/不揮発性コンピューター記憶媒体には、限定ではなく、磁気テープ・カセット、フラッシュ・メモリー・カード、ディジタル・バーサタイル・ディスク、ディジタル・ビデオ・テープ、ソリッド・ステートRAM、ソリッド・ステートROM等が含まれる。ハード・ディスク・ドライブ138は、通例、インターフェース134のような非リムーバブル・メモリー・インターフェースを介してシステム・バス121に接続され、磁気ディスク・ドライブ139および光ディスク・ドライブ140は、通例、インターフェース135のようなリムーバブル・メモリー・インターフェースによって、システム・バス121に接続する。
【0020】
[0032] 先に論じ図1に示すドライブおよびそれらに付随するコンピューター記憶媒体は、コンピューター読み取り可能命令、データー構造、プログラム・モジュール、およびコンピューター141のその他のデーターを格納する。図1では、例えば、ハード・ディスク・ドライブ138は、オペレーティング・システム158、アプリケーション・プログラム157、他のプログラム・モジュール156、およびプログラム・データー155を格納するように示されている。尚、これらの構成要素は、オペレーティング・システム125、アプリケーション・プログラム126、他のプログラム・モジュール127、およびプログラム・データー128と同じでも異なっていても可能であることを注記しておく。オペレーティング・システム158、アプリケーション・プログラム157、他のプログラム・モジュール156、およびプログラム・データー155は、ここで、少なくともこれらが異なるコピーであることを示すために、異なる番号が与えられている。ユーザーは、キーボード151、および一般にマウス、トラックボールまたはタッチ・パッドと呼ばれているポインティング・デバイス152のような入力デバイスによって、コマンドおよび情報をコンピューター141に入力することができる。他の入力デバイス(図示せず)には、マイクロフォン、ジョイスティック、ゲーム・パッド、衛星ディッシュ、スキャナー等を含むことができる。これらおよびその他の入力デバイスは、多くの場合、ユーザー入力インターフェース136を介して、演算装置159に接続されている。ユーザー入力インターフェース136は、システム・バスに結合されているが、パラレル・ポート、ゲーム・ポート、またはユニバーサル・シリアル・バス(USB)によって接続することも可能である。モニター142またはその他のタイプの表示装置も、ビデオ・インターフェース132のようなインターフェースを介して、システム・バス121に接続されている。モニターに加えて、コンピューターは、スピーカー144およびプリンター143のような、その他の周辺出力装置も含むことができ、これらは出力周辺インターフェース133を通じて接続することができる。
【0021】
[0033] コンピューター141は、リモート・コンピューター146のような1つ以上のリモート・コンピューターへの論理接続を用いて、ネットワーク環境において動作することも可能である。リモート・コンピューター146は、パーソナル・コンピューター、サーバー、ルーター、ネットワークPC、ピア・デバイス、またはその他の共通ネットワーク・ノードとすることができ、通例、コンピューター141に関して先に説明したエレメントの多くまたは全てを含むが、図1にはメモリー記憶装置147のみを示す。図1に示す論理接続は、ローカル・エリア・ネットワーク(LAN)145およびワイド・エリア・ネットワーク(WAN)149を含むが、他のネットワークも含むことができる。このようなネットワーク環境は、事務所、企業規模のコンピューター・ネットワーク、イントラネットおよびインターネットにおいては一般的である。
【0022】
[0034] LANネットワーク環境で用いる場合、コンピューター141は、ネットワーク・インターフェースまたはアダプター137を介してLAN145に接続する。WANネットワーク環境で用いる場合、コンピューター141は、通例、モデム150、またはインターネットのようなWAN149を通じて通信を設定するその他の手段を含む。モデム150は、内蔵でも外付けでもよく、ユーザー入力インターフェース136またはその他の適切な機構を介してシステム・バス121に接続することができる。ネットワーク環境では、コンピューター141に関係付けて図示したプログラム・モジュール、またはその一部は、リモート・メモリー記憶装置に格納することもできる。一例として、そして限定ではなく、図1は、リモート・アプリケーション・プログラム148がメモリー・デバイス147に存在するものとして示している。尚、図示のネットワーク接続は一例であり、コンピューター間で通信リンクを確立する他の手段も使用可能であることは認められよう。
【0023】
[0035] 図2は、リモート・プレゼンテーション・セッションにおいて送信されるサンプル画像202を示す。画像202には、テキスト204およびサブ画像206の双方が入っている。この画像は、コンピュータ・デスクトップ全体、またはあるアプリケーションのためのウィンドウというような、その何らかの部分集合を含むことができる。
【0024】
[0036] 画像202は、サーバーのグラフィクス・スタックから、このサーバーによって受信することができる。次いで、このサーバーは、以下の技法にしたがって画像を処理し、それをクライアントに送信することができる。サーバーは、このクライアントのディスプレイ・デバイス上に表示するために、このクライアントと共にリモート・プレゼンテーション・セッションを実行している。一実施形態では、このサーバーは図1の計算機を備えている。
【0025】
[0037] 図3Aは、図2のサンプル画像202が、画像302の白黒表現に変換された後における、サンプル画像202を示す。これは、閾値峻別方式を用いると、得ることができる。閾値峻別方式では、ある画像における画素値(例えば、赤−緑−青(RGB)値)が閾値未満である場合、これらを全て黒(RGBでは、これは16進数000000として表すことができる)に設定することができ、画像における画素値が閾値よりも大きい場合、これらを全て白(RGBでは、これは16進数FFFFFFとして表すことができる)に設定することができる。
【0026】
[0038] 図3Bは、図3Aの画像302を、1つ以上のフィーチャー302bを識別するために区分した後における、画像302を示す。一実施形態では、サーバーが画像202を直接区分することができる。利用可能なクライアントおよびサーバーの処理リソースおよび帯域幅というような、セッション・システム全体の具体的特性によっては、セッション実行にとって最適なフィーチャーのサイズが、様々に変化することもある。実施形態では、フィーチャーとは、単語、1つの単語の何らかの部分集合(文字を含む)、アプリケーションのナビゲーション・アイコン(「文書印刷」ボタンのような)、またはリモート・プレゼンテーション・セッションにおいて送られる画像の内部にあるサブ画像(ウェブ・ブラウザ・ウィンドウをセッションにおいて送ろうとするときに、ウェブ・ブラウザーによって表示される画像のような)であってもよい。フィーチャーは、境界、即ち、そのフィーチャーを取り囲む周囲を有すると考えることもできる。図示した実施形態では、境界の形状は矩形になっている。しかしながら、種々の形状の境界でも、本技法を使用することが可能である。
【0027】
[0039] 一実施形態では、ここで論じられるクライアントが図1の計算機を備えているのであってもよい。
[0040] 一実施形態では、サーバーおよびクライアントが、リモート・プレゼンテーション・セッションの最中に通信して、用いるフィーチャー粒度を決定する。これは、サーバーおよびクライアントがリモート・プレゼンテーション・セッションを開始するときに、取り決めることができる。また、これは、クライアントの利用可能な処理リソースが減少した場合というような、セッションのパラメータが変化するに連れて、リモート・プレゼンテーション・セッションの最中に取り決めることもできる。
【0028】
[0041] 一実施形態では、サーバーは、接続セグメント・アルゴリズムを用いて、画像302を処理することによって、画像302のフィーチャーを識別する。接続セグメント・アルゴリズムは、画像のフィーチャーに対する枠取りを決定する。次いで、これらの枠取りを逆に画像302に適用して、画像302全体に対する各フィーチャーの境界を決定することができる。
【0029】
[0042] サーバーは、以下のように、接続セグメント・アルゴリズムを実行することができる。サーバーは、強度閾値を用いることによって、テキストまたは背景の一部であるというラベルを、画像302の各画素に付ける。その画素が黒かまたは黒に近い場合、テキストと見なされ、そうでない場合背景と見なされる(画素が暗い背景の上に明るい色のテキストを含む場合、これは逆になる)。次いで、サーバーはテキストであると判定されたこれらの画素の、4接続画素グループ(4-connected groups of pixels)を全て発見する。画素が4接続であると見なすことができるのは、テキストであると判定された画素の直接右、左、上、または下に、この画素がある場合である。一実施形態では、サーバーは、4接続テキスト画素グループ全ての代わりに、8接続テキスト画素グループ全て(4接続グループに加えて、対角線方向に接続されているだけのもの)を発見する。次いで、サーバーは、4接続テキスト画素グループ毎に、枠取りを決定する。一実施形態では、この枠取りは、それよりも小さい枠取りが存在しないように、4接続画素グループを取り囲む水平線および垂直線で構成された矩形となる。
【0030】
[0043] 図4は、画像402において識別され画像202に適用された、画像のフィーチャー302bを示す。元の画像202に対してフィーチャーが識別されると、次にこの画像202を処理して、これらのフィーチャーを画像の残り部分から分離することができる。
【0031】
[0044] 図5Aは、リモート・プレゼンテーション・セッションにおいて送信する、図2と同様の、別のサンプル画像502を示す。
[0045] 図5Bは、図5Aの画像502のテキストのみの区分502bを示す。画像202のテキスト部および画像部を分離し、次いで各サブ画像に対して動作を実行すると、本明細書において開示する技法をやり易くすることができる。この区分動作を実行する実施形態では、画像に対して光学キャラクター認識(OCR)アルゴリズムを実行し、認識されたキャラクターではないものを全て画像から取り除くことによって、テキストのみの区分を行うことができる。
【0032】
[0046] 図5Cは、図5Aの画像502の非テキスト区分502cを示す。サーバーが図5Bの詳細な説明において記載したOCRアルゴリズムを実行する場合、サーバーは、OCRアルゴリズムが識別した各キャラクターを取り除くことによって、画像502cを生成することができる。
【0033】
[0047] 図6Aは、タイル602を示し、その一部にはフィーチャー604の一部が入っている。文字「h」がフィーチャー604を構成する。フィーチャー604の一部が、タイル602の上に延びている。また、タイル602の中にはオブジェクト606もある。一実施形態では、オブジェクト606は、フィーチャー604またはフィーチャー604の一部として識別することができる。
【0034】
[0048] 図6Bは、フィーチャー604が取り除かれ、タイルの優勢特性と置き換えられた後における、図6Aのタイル602を示す。「優勢特性」とは、本明細書において用いられる場合、タイルにおいてフィーチャーと置き換えるために用いられると、そのタイルを圧縮する際に役立つ画像を示す。多くの場合、タイルの優勢特性は、タイルの優勢色である。即ち、フィーチャーによって占有されていないタイルの部分において最も頻繁に発見される1つの色である。本実施形態では、オブジェクト606が存在するが、優勢特性は、タイルの殆どを占有する白の背景であり、したがって、フィーチャー604は全て白で置き換えられる。
【0035】
[0049] フィーチャーがタイル全体を占める実施形態では、このタイルは優勢特性を有さず、このような優勢特性を判定すべき、フィーチャーによって占有されない部分を有さないと考えることができる。この場合、フィーチャーは、1色のべた塗りのような、容易に圧縮可能な画像と置き換えるとよい。尚、フィーチャーによって完全に占有されているこのようなタイル全てに対して同じ優勢特性を用いることが有効となる場合がある。これは、タイルに対するキャッシュ・ヒットの回数が増加し、したがって、クライアントに送る必要があるタイル数が減少するからである。
【0036】
[0050] 図7は、サーバーが非格子タイルをソース・ビットマップから抽出することによって、ビットマップ・リモーティングを加速する動作手順の一例を示す。尚、本開示のあらゆる実施形態において、あらゆる動作を実行しなければならないのではなく、動作手順の多くの機能的部分集合および並び替え(permutation)を実施してもよいことは、認められてしかるべきである。
【0037】
[0051] 動作702は、画像202のような画像のフィーチャーに対して境界を識別することを示し、このフィーチャーは、当該画像に対するタイリング方式(tiling scheme)の少なくとも1つのタイルに対応する。これは、例えば、図3および図4に関して既に論じた技法を用いることによって行うことができる。一実施形態では、このタイリング方式は、画像を矩形タイルの格子に分割することを伴う。フィーチャーはこの格子に制約されず、複数のタイルの全部または一部に現れても、または1つのタイルの一部に現れてもよく、あるいは丁度1つのタイルを占有してもよい。
【0038】
[0052] 一実施形態では、画像にフィーチャーに対して境界を識別することは、フィーチャー粒度に基づき、ホスト通信デバイスによって行われる。フィーチャー粒度は、サイズのように、どのようにフィーチャーを認識するかに影響を及ぼすあるものとすることができる。一実施形態では、フィーチャー粒度は、個々の文字を別個のフィーチャーとして扱わなければならないことを示すことがある。一実施形態では、フィーチャー粒度は、個々の単語を別個のフィーチャーとして扱わなければならないことを示すこともある。
【0039】
[0053] 一実施形態では、フィーチャー粒度は、サーバー(または「ホスト通信デバイス」)、クライアント(または「通信デバイス」)、または通信ネットワークの特性によって決定される。ホスト通信デバイス、通信デバイス、または通信ネットワークの特性は、リモート・プレゼンテーション・セッションの遂行に影響を及ぼすものであり、通信ネットワークを通じて送られるパケットのサイズ、またはホスト通信デバイスのシステム・アーキテクチャーの詳細(particularities)というようなものとするとよい。
【0040】
[0054] 一実施形態では、境界を識別する場合、図3に関して論じたように、画像の白黒表現を生成することを含む。一実施形態では、画像の白黒表現を生成する場合、図3に関して論じたような閾値峻別方式にしたがって画像を処理することを含む。一実施形態では、フィーチャーに対して境界を識別する場合、図4に関して論じたような接続セグメント・アルゴリズムによって画像を処理することを含む。
【0041】
[0055] 一実施形態では、フィーチャーはテキストを含み、このフィーチャーに対して境界を識別する場合、光学キャラクター認識(OCR)アルゴリズムによって画像を処理することを含む。得られたテキストは、画像の各タイル内においてそれを各タイルの優勢特性と置き換えることによって、画像から取り去ることができる。これについては、以下で更に詳しく論ずる。次いで、これらのタイルをテキスト(情報交換用米国標準コード、ASCIIフォーマットで表現されたような)、およびこのテキストをタイル上のどこに重ねるのかという指示と共に送ることができる。これについては、以下で更に詳しく論ずる。
【0042】
[0056] 一実施形態では、フィーチャーは水平または垂直線を含む。サーバーは、画像上において、垂直および水平両方向にランレングス計数アルゴリズムを実行することができる。このアルゴリズムは、一致したまたは密接に一致した直線的画素(閾値よりも高いまたは低い全ての画素というような)のストリングを判定する。次いで、これらの線は、画像の各タイル内においてそれを、各タイルの優勢特性と置き換えることによってというようにして、画像の各タイルから抽出することができる。これについては、以下で更に詳しく論ずる。次いで、これらの線を別個に符号化し(画像内における開始座標および終了座標、線の色、および線の幅を示すことによってというようにして)、タイルと共に表示するために、クライアントに送ることができる。これについては、以下で更に詳しく論ずる。
【0043】
[0057] 一実施形態では、フィーチャーは、ウィンドウをスクロールするときのような、画面間の移動(または、「画面間のブリット」)を含み、フィーチャーに対する境界を識別する場合、この画像を処理して、直前の画像の一部に対するこの画像の一部のモーション・ベクトルを判定することを含む。サーバーは、クライアントに送られた、または送ろうとする複数の画像間でモーション・ベクトルを照合することができる。サーバーは、テキストおよび線(前述の技法を用いて、画像内において画像内で判定された)のような画像特性がどこで移動したかというパターンを判定することによって、モーション・ベクトルを照合することができる。次いで、画像がどちらの方向にそしてどのように移動したかを示すことによるというようにして、各タイルを送るよりは遙かに少ない帯域幅を用いることによって、これをクライアントに表現することができる。
【0044】
[0058] フィーチャーに関するこれらの技法は、組み合わせて実行することができ、例えば、テキストおよび線を、スクロールされる画像から抽出することができる。
[0059] 動作704は、フィーチャーが未だキャッシュに格納されていないときに、このフィーチャーをキャッシュに格納することを示す。サーバーは、各フィーチャーに遭遇したときにこれに対してハッシュ・アルゴリズムを実行し、ハッシュス・アルゴリズムの結果に基づいてフィーチャーのシグネチャーをキャッシュに格納し、更にクライアント・キャッシュにおいて格納されるフィーチャーの対応する位置を格納することによってというようにして、フィーチャーのキャッシュを維持することができる。フィーチャーのシグネチャーは、フィーチャー自体よりも、格納要件を最小に抑えるために格納することができる。これを行う際、新たなフィーチャーに遭遇する毎に、サーバーは、そのフィーチャーに以前にも遭遇したことがあるか否か判定することができるので、そのフィーチャーに対する参照のみをクライアントに送ればよい(キャッシュ・ヒットが判定された場合であり、更に、そのフィーチャーが、キャッシュに格納されており、そのヒットをもたらしたフィーチャーと同一であることを判定する)。また、そのフィーチャーが以前には遭遇していない場合、フィーチャー自体をクライアントに送らなければならない(キャッシュ・ヒットがない場合であり、同一のフィーチャーに以前には遭遇していないことを示す)。
【0045】
[0060] 一実施形態では、キャッシュは最大のサイズ、つまり、有限の水平線を有する。このため、キャッシュがその最大サイズに達したとき、余裕を作るためにどのフィーチャーおよび/またはタイルを除去しなければならないか判定を行う。この判定は、どのフィーチャーおよび/またはタイルが繰り返される可能性が最も低いか、したがって、キャッシュに入れておく効果が最も低いかという発見的方法に基づいて行うことができる。同様に、キャッシュのその最大サイズに達したとき、またはその最大サイズに達するかもしれないとき、新たなフィーチャーおよび/またはタイルをキャッシュに追加すべきか否かに関する判定を行うことができる。
【0046】
[0061] 一実施形態では、キャッシュは、高度に構造化された(階層的)キャッシュから成る。このように高度に構造化されたキャッシュは、フィーチャー、フィーチャーのグループ、およびフィーチャーのグループのグループというように、異なるレベルの粒度に基づいて編成することもできる。例えば、「a」、「n」、および「d」のようなフィーチャーに遭遇した場合、これらのフィーチャーのグループ、即ち、「and」という単語にも遭遇することができる。そして、この単語「and」を含む句というような、このようなフィーチャーのグループを含むグループにも、遭遇することができる。これらのフィーチャーのグループは、フィーチャー自体に加えて、キャッシュすることができる。
【0047】
[0062] 動作706は、タイリング方式にしたがって画像をタイルに区分して、図6のタイルと同様な、少なくとも1つのタイルを生成することを示す。一実施形態では、画像が12画素の偶数倍の寸法を有していないのでなければ、タイルは、12画素×12画素の寸法を有する。画像が12画素の偶数倍の寸法を有していない場合、各列における1つ以下のタイル、および各行における1つのタイルが、12画素×12画素よりも小さい寸法を有する場合もある。
【0048】
[0063] 動作708は、フィーチャーに対応するタイル毎に、そのフィーチャーによって占有されているタイルの一部を、そのタイルに合わせた画像と置き換えることを示す。これは、例えば、図6Aおよび図6Bに関して先に論じた技法を用いることによって、行うことができる。
【0049】
[0064] 動作710は、キャッシュに未だ格納されていない各タイルを、キャッシュに格納することを示す。一実施形態では、タイルの格納は、動作704において論じたように、フィーチャーを格納するのと同様に行われる。一実施形態では、タイルおよびフィーチャーを別個のキャッシュに格納する。一実施形態では、タイルおよびフィーチャーを1つのキャッシュに格納する。タイルがタイルと衝突し、フィーチャーがフィーチャーと衝突する可能性の方が、タイルがフィーチャーと衝突する可能性よりも高いので、ある種のシステム上では、2つのキャッシュを用いることが、性能上有益となることもある。同様に、所与のシステムの詳細によっては、1つのキャッシュを用いる方が好ましい場合もある。
【0050】
[0065] 動作712は、キャッシュに基づいて、通信デバイスが各タイル、およびフィーチャーを有するか否か判定を行うことを示す。一実施形態では、この通信デバイスはクライアントである。サーバーがタイルおよびフィーチャーをクライアントに送ると、クライアントはこれらのタイルおよびフィーチャーをそれ自体の1つ以上のキャッシュにキャッシュする。このクライアントのキャッシュは、格納されたタイルまたはフィーチャー、およびこのタイルまたはフィーチャーに対して実行したハッシュ・アルゴリズムの対応する結果を含むことができる。したがって、サーバーが、現在のタイルまたはフィーチャーと同じ画像を表すタイルまたはフィーチャーが既にそのキャッシュの中に存在すると判断した場合(フィーチャーのシグネチャーを見ることによって行われる)、クライアントは既にタイルまたはフィーチャーをそのキャッシュの中に有していると判断される(または、現在の画像についてのデータを送信する際に、そのタイルまたはフィーチャーが送られる)。キャッシュ・ヒットがない場合、クライアントはそのタイルまたはフィーチャーを有していない。キャッシュ・ヒットがあり、そしてそのヒットを生じさせた、既にキャッシュされているタイルまたはフィーチャーの中(キャッシュ水平線の中に)に、現在のタイルやフィーチャーと同じものがないとサーバーが判断した場合、クライアントはそのタイルもフィーチャーも有していない。それ以外の場合、サーバーは、クライアントがそのタイルまたはフィーチャーを有している(または、直ぐに有するであろう)と判断する。
【0051】
[0066] 動作714は、通信デバイスが有していない各タイルおよびフィーチャーを、通信ネットワークを通じて、表示のために計算機に送ることを示す。クライアントが有していない各タイルおよびフィーチャーは、動作712の技法にしたがって判断することができる。一実施形態では、各タイルおよびフィーチャーはアクティブなリモート・プレゼンテーション・セッションのコンテンツ内における別個の画像として送られる。一実施形態では、サーバーがフィーチャーを纏めて、フィーチャーおよび/またはタイルの1つのビットマップにグループ化し、この複合ビットマップをクライアントに、複合ビットマップのどの部分が各フィーチャーおよびタイルに対応するのかという指示と共に送ることによって、セッションの遂行を改善することができる。一実施形態では、フィーチャーおよびタイル毎に、別個の複合ビットマップを用いることができる。
【0052】
[0067] 一実施形態では、クライアントに送られるタイルおよびフィーチャーの内少なくとも一部が、これらが送られる前に、圧縮され、クライアントがこれらを受信した後に、クライアントによって伸張される。
【0053】
[0068] 動作716は、通信デバイスが有する各タイルおよびフィーチャーの指示を、通信ネットワークを通じて、表示のために計算機に送ることを示す。クライアントが有する各タイルおよびフィーチャーは、動作712の技法にしたがって判断することができる。例えば、タイルには、2つの積分値(integral values)を付随させるとよい。1つは、このタイルの左上角を配置すべき左上角より下にある画素数を示す値であり、1つはこのタイルの左上角を配置すべき左上角よりも右側にある画素数を示す値である。
【0054】
[0069] 一実施形態では、動作714および716の技法にしたがって送られるタイル(1つまたは複数)、フィーチャー(1つまたは複数)、およびその指示(1つまたは複数)は、クライアントが、対応するタイルまたはフィーチャーを、それが再現する画像のどこに配置すべきかという指示と共に送られる。
【0055】
[0070] 図8は、ソース・ビットマップから非格子タイルを抽出することによって、クライアントがビットマップ・リモーティングを加速する動作手順の一例を示す。尚、本開示のあらゆる実施形態において、あらゆる動作を実行しなければならないのではなく、動作手順の多くの機能的部分集合、および並び替え(permutation)を実施してもよいことは、認められてしかるべきである。
【0056】
[0071] 動作802は、複数のタイル指示を受信することを示し、各タイル指示は、タイルまたはタイルのキャッシュにおける位置、および各タイル指示を格子上で表示する位置を含む。
【0057】
[0072] 動作804は、フィーチャー指示を受信することを示し、このフィーチャー指示は、フィーチャーまたはフィーチャーのキャッシュにおける位置、およびこのフィーチャーを表示する位置を含む。
【0058】
[0073] 図7に関して更に詳細に論じたように、フィーチャー指示が複数のフィーチャー、およびフィーチャー指示内における各フィーチャーの位置の指示を含む実施形態では、クライアントは、各フィーチャーの位置の各指示に基づいて、フィーチャー指示内にある各フィーチャーを判定することができる。
【0059】
[0074] 一実施形態では、フィーチャーは、テキスト、線、または画像と直前に受信した画像との間の動きを含む。フィーチャーがテキストから成る実施形態では、フィーチャー指示は、そのテキストを表示すべきフォントの指示を含む。
【0060】
[0075] 動作806は、画像を表示することを示し、この画像は、フィーチャーと共に重ねられた格子上における各タイルの指示を含む。
結論
[0076] 本開示は、種々の図に示したような、好ましい態様と関連付けて説明したが、本開示から逸脱せずにその同じ機能を実行するために、他の同様の態様を用いること、または変更や追加を、記載した態様に対して行ってもよいことは言うまでもない。したがって、本開示は、いずれの1つの態様にも限定されず、添付した特許請求の範囲にしたがって、その広さや範囲を解釈してしかるべきである。例えば、本明細書において説明した種々の手順は、ハードウェアまたはソフトウェア、あるいは双方の組み合わせで実施することができる。つまり、開示した実施形態の方法および装置、あるいはそのある種の態様または部分は、フロッピー・ディスケット、CD−ROM、ハード・ドライブ、またはその他のあらゆる機械読み取り可能記憶媒体というような、有形媒体において具体化されたプログラム・コード(即ち、命令)という形態をなすことができる。このプログラム・コードを、コンピューターのような、機械にロードして実行すると、この機械が、開示した実施形態を実際に行うように構成された装置となる。ここに開示した明細書を考慮することによって、本明細書において明示的に説明した特定の実施態様に加えて、他の態様や実施態様も当業者には明白となろう。尚、本明細書および例示した実施態様は、単なる例として考慮されることを意図している。
図1
図2
図3A
図3B
図4
図5A
図5B
図5C
図6A
図6B
図7
図8