(57)【特許請求の範囲】
【請求項１】
リモートコンピュータからディスプレイを有するローカルコンピュータへ表示データを送信し、前記ローカルコンピュータのディスプレイに前記リモートコンピュータの表示データを表示させる方法であって、
前記リモートコンピュータの表示データの少なくとも一部を複数のタイルに分割するステップと、
各タイルに色削減アルゴリズムを適用して色削減タイルを作り、各タイルを対応する色削減タイルと比較することにより、各タイルが画像データを表すかテキストデータを表すか判断するステップと、
テキストデータを表す各タイルをロスレス圧縮を用いて符号化するステップと、
画像データを表す各タイルをロッシー圧縮を用いて符号化するステップと、
前記送信される表示データは前記ロッシー圧縮によって符号化されたロッシー符号化画像データと前記ロスレス圧縮によって符号化されたロスレス符号化テキストデータとを有しており、
前記判断するステップは、
ロスレス圧縮を用いて各タイルを圧縮して第１の符号化コピーを作る第１の符号化ステップと、
前記色削減タイルを、前記第１の符号化ステップで用いた前記ロスレス圧縮で圧縮して第２の符号化コピーを作る第２の符号化ステップと、
前記第１の符号化コピーと前記第２の符号化コピーとを比較して、前記タイルが画像データを表すかテキストデータを表すか判断するステップとを有し、
前記第１の符号化コピーのサイズが前記第２の符号化コピーのサイズより大きいとき、タイルは画像データを表し、前記第１の符号化コピーのサイズが前記第２の符号化コピーのサイズとほぼ等しいとき、タイルはテキストデータを表す、
方法。
【請求項２】
前記判断するステップは、各タイルの色データを考慮することにより、各タイルが画像データを表すか又はテキストデータを表すか判断するステップを有する、
請求項１に記載の方法。
【請求項３】
前記表示データは画素データの形式であり、前記判断するステップは異なる値の画素データの発生頻度を分析するステップを有する、
請求項２に記載の方法。
【請求項４】
前記比較するステップは、前記第１の符号化コピーと前記第２の符号化コピーとの間のサイズの差が閾値より大きいか判断するステップを有し、
前記閾値より大きいとき、タイルは画像データを表し、前記閾値より大きくないとき、タイルはテキストデータを表す、請求項１に記載の方法。
【請求項５】
前記表示データは画素データの形式であり、ｎを元の画素データ中の各画素を表すのに用いる総ビット数であるとすると、前記閾値はｎにより決まる、請求項４に記載の方法。
【請求項６】
圧縮で用いられるロスレス圧縮はＴＲＬＥである、請求項４又は５に記載の方法。
【請求項７】
前記表示データは画素データの形式であり、ｎを元の画素データ中の各画素を表すのに用いる総ビット数であるとすると、前記色削減アルゴリズムは各画素を表すのに用いられる総ビット数を削減する、請求項１乃至６いずれか一項に記載の方法。
【請求項８】
符号化で用いられるロスレス圧縮はＲＬＥの変化形である、請求項１乃至７いずれか一項に記載の方法。
【請求項９】
前記変化形はＺＲＬＥである、請求項８に記載の方法。
【請求項１０】
前記ロッシー圧縮はＪＰＥＧである、請求項１乃至９いずれか一項に記載の方法。
【請求項１１】
前記複数のタイルはグリッドを構成する、請求項１乃至１０いずれか一項に記載の方法。
【請求項１２】
前記リモートコンピュータの表示データのどの領域が変化したかを判定し、前記リモートコンピュータの表示データの少なくとも一部が前記変化した領域を含む、請求項１乃至１１いずれか一項に記載の方法。
【請求項１３】
前記ローカルコンピュータから要求を受けるまで、より新しい変化により取って代わられた変化を破棄するステップを有する、請求項１２に記載の方法。
【請求項１４】
ローカルコンピュータからリモートコンピュータを制御する方法であって、
前記ローカルコンピュータと前記リモートコンピュータとをリンクするステップと、
前記ローカルコンピュータにコマンドを入力するステップと、
前記ローカルコンピュータから前記リモートコンピュータに前記コマンドを送信し、前記リモートコンピュータで実行させるステップと、
請求項１乃至１３いずれか一項記載の前記リモートコンピュータから表示データを送るステップとを有する、方法。
【請求項１５】
コンピュータで請求項１乃至１４いずれか一項に記載の方法を実施する処理コードを記録した記録媒体。
【請求項１６】
リモートコンピューティングシステムであって、リモートコンピュータの表示データを生成するように構成されたプロセッサを有し、前記リモートコンピュータは、プロセッサとディスプレイとを有するローカルコンピュータにネットワークを介して接続され、
前記リモートコンピュータのプロセッサは、
前記リモートコンピュータの表示データの少なくとも一部を複数のタイルに分割し、
各タイルに色削減アルゴリズムを適用して色削減タイルを作り、各タイルを対応する色削減タイルと比較することにより、各タイルが画像データを表すかテキストデータを表すか判断し、
テキストデータを表す各タイルをロスレス圧縮を用いて符号化し、
画像データを表す各タイルをロッシー圧縮を用いて符号化し、
前記リモートコンピュータから前記ローカルコンピュータに前記ロッシー圧縮によって符号化されたロッシー符号化画像データと前記ロスレス圧縮によって符号化されたロスレス符号化テキストデータとを含む表示データを送信し、前記ローカルコンピュータのディスプレイに前記リモートコンピュータの表示データを表示させるように構成され、
前記判断するステップは、
ロスレス圧縮を用いて各タイルを圧縮して第１の符号化コピーを作る第１の符号化ステップと、
前記色削減タイルを、前記第１の符号化ステップで用いた前記ロスレス圧縮で圧縮して第２の符号化コピーを作る第２の符号化ステップと、
前記第１の符号化コピーと前記第２の符号化コピーとを比較して、前記タイルが画像データを表すかテキストデータを表すか判断するステップとを有し、
前記第１の符号化コピーのサイズが前記第２の符号化コピーのサイズより大きいとき、タイルは画像データを表し、前記第１の符号化コピーのサイズが前記第２の符号化コピーのサイズとほぼ等しいとき、タイルはテキストデータを表す、
リモートコンピューティングシステム。
【請求項１７】
リモートコンピューティングシステムであって、
プロセッサとディスプレイとを有するローカルコンピュータと、
プロセッサを有するリモートコンピュータと、
前記ローカルコンピュータと前記リモートコンピュータとをリンクするネットワークとを有し、
前記リモートコンピュータのプロセッサは、
前記リモートコンピュータの表示データを生成し、
前記リモートコンピュータの表示データの少なくとも一部を複数のタイルに分割し、
各タイルに色削減アルゴリズムを適用して色削減タイルを作り、各タイルを対応する色削減タイルと比較することにより、各タイルが画像データを表すかテキストデータを表すか判断し、
テキストデータを表す各タイルをロスレス圧縮を用いて符号化し、
画像データを表す各タイルをロッシー圧縮を用いて符号化し、
前記リモートコンピュータから前記ローカルコンピュータに前記ロッシー圧縮によって符号化されたロッシー符号化画素データと前記ロスレス圧縮によって符号化されたロスレス符号化テキストデータとを含む表示データを送信し、
前記ローカルコンピュータの前記プロセッサは、前記送信された表示データを復号し、前記ローカルコンピュータのディスプレイに前記リモートコンピュータのディスプレイを表示するように構成され、
前記判断するステップは、
ロスレス圧縮を用いて各タイルを圧縮して第１の符号化コピーを作る第１の符号化ステップと、
前記色削減タイルを、前記第１の符号化ステップで用いた前記ロスレス圧縮で圧縮して第２の符号化コピーを作る第２の符号化ステップと、
前記第１の符号化コピーと前記第２の符号化コピーとを比較して、前記タイルが画像データを表すかテキストデータを表すか判断するステップとを有し、
前記第１の符号化コピーのサイズが前記第２の符号化コピーのサイズより大きいとき、タイルは画像データを表し、前記第１の符号化コピーのサイズが前記第２の符号化コピーのサイズとほぼ等しいとき、タイルはテキストデータを表す、
リモートコンピューティングシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はリモートコンピューティングの方法及びシステムに関する。
【背景技術】
【０００２】
ローカルコンピュータなどの装置を用いて物理的に離れたコンピュータとインターラクトすることが知られている。個人ユーザの場合、離れたところにいる技術にあまり詳しくない身内のコンピュータのトラブルシューティングを助けることはよくあるシナリオである。バルチモアにある自分のデスクにいても、リモートコンピューティングにより、ユーザは、カリフォルニアにいる身内のＰＣを制御して、バルチモアにある自分のＰＣから新しいソフトウェアパッケージをどう使うかやって、それを身内に示すことができる。よく使われるビジネスアプリケーションはリモートシステム管理されており、それによりアドミニストレータは従業員のマシンを制御して、問題を診断して修復する。すべてのシナリオにおいて、キーの押下、マウスの動き、及びマウスのクリックは、ローカルコンピュータからリモートコンピュータに送られ、リモートコンピュータに変化を及ぼす。リモートコンピュータディスプレイの連続的に更新されるコピーが、ローカルコンピュータのウィンドウに表示される。したがって、リモートコンピュータは別の場所にあっても、ユーザには、自分がリモートコンピュータの前に座っているように見える。
【０００３】
連続的に更新されるコピーは、リモートコンピュータのディスプレイの内容を記述する画素データを符号化して、このデータまたはその変化をローカルコンピュータに送信することにより得られる。この符号化を実現する方法はたくさんある。その一端にはＲａｗエンコーディングがある。これは、データ圧縮をしないので、リモートコンピュータで必要とされるＣＰＵオーバーヘッドは最小だが、高速ネットワークにのみ適している。大量のデータを伝送しないとならないからである。他端には高圧縮率エンコーディング（例えば、ランレングス符号化（ＲＬＥ）やその変形）がある。これは圧縮率が高く低速ネットワークに適しているが、ＣＰＵオーバーヘッドは高くなる。これらの標準的な符号化方法はすべてロスレス（lossless）であり、ローカルコンピュータにおける表示はリモートコンピュータにおける表示の厳密な再現（exact  representation）である。
【０００４】
一般的には、リモートコンピュータにおける表示はテキストと画像データがミックスされたものを含む。近年、より多くの画像とビデオを含めるため、及び半透明かつぼやけたウィンドウフレーム、及びテクスチャや色のグラデーションに凝ったバックグラウンド及びフィルパターンに向かうトレンドにより、画像データ量は増大している。
【０００５】
リモートコンピューティングでは時間的要素も大きい。リモートコンピュータにおける表示の連続的に更新されるコピーを生成して送信するアルゴリズムは、リモートコンピュータにおける変化に遅れることなく追随するだけ高速でなければならない。ボトルネックとなるのは、符号化時間、データ通信時間、又は復号時間であり得る。
【０００６】
出願人は符号化の改善が必要であることを認識している。
【発明の概要】
【課題を解決するための手段】
【０００７】
本発明の第１の態様によると、リモートコンピュータからディスプレイを有するローカルコンピュータへ表示データを送信し、ユーザが前記ローカルコンピュータにおいて前記リモートコンピュータ表示データを見ることができる方法が提供される。前記方法は、前記リモートコンピュータ表示データの少なくとも一部を複数のタイルに分割するステップと、各タイルに色削減アルゴリズムを適用して色削減タイルを作り、各タイルを対応する色削減タイルと比較することにより、各タイルが画像データを表すかテキストデータを表すか判断するステップと、テキストデータを表す各タイルをロスレス圧縮を用いて符号化するステップと、画像データを表す各タイルをロッシー圧縮を用いて符号化するステップと、前記送信される表示データは前記ロッシー符号化画像データと前記ロスレス符号化テキストデータとを有する。
【０００８】
本発明の第２の態様によると、表示データを生成するように構成されたプロセッサを有するリモートコンピュータが提供される。前記リモートコンピュータは、プロセッサとディスプレイとを有するローカルコンピュータにネットワークを介して接続され、前記リモートコンピュータのプロセッサは、前記リモートコンピュータ表示データの少なくとも一部を複数のタイルに分割し、各タイルに色削減アルゴリズムを適用して色削減タイルを作り、各タイルを対応する色削減タイルと比較することにより、各タイルが画像データを表すかテキストデータを表すか判断し、テキストデータを表す各タイルをロスレス圧縮を用いて符号化し、画像データを表す各タイルをロッシー圧縮を用いて符号化し、前記リモートコンピュータから前記ローカルコンピュータに前記ロッシー符号化された画像と前記ロスレス符号化されたテキストデータとを含む表示データを送信し、ユーザが前記ローカルコンピュータディスプレイにおいて前記リモートコンピュータ表示データを見えるように構成されている。
【０００９】
本発明は、ロッシー符号化とロスレス符号化との、具体的にはＪＰＥＧとＲＬＥ（ランレングス符号化）の変形とのハイブリッドであり、ＪＲＬＥとも呼ばれ得る。これはロッシー符号化（ＪＰＥＧ）を用いて「画像」画素データを符号化し、ロスレス符号化（ＺＲＬＥ）を用いて「テキスト」画素データを符号化する。言うまでもなく、「画像」と「テキスト」をミックスしたものである表示データの場合、このハイブリッドは、純粋なロッシー符号化又は純粋なロスレス符号化よりも以下に詳述する組合せ基準を満たす。一般的に、テキストデータは、はっきりした線（well  defined  lines）により特徴付けられ、シャープテキスト、線図、単色領域などのデータを含む。対照的に、画像データは、段階的に変化する色、細かいテクスチャ、ぼかしたテキストや線のエリアを含む。
【００１０】
以下の特徴は本発明のすべての態様に当てはまる。
【００１１】
リモートコンピュータは物理的ディスプレイ、例えばディスプレイモニタを有する。あるいは、リモートコンピュータは物理的ディスプレイに接続されていなくてもよい。この場合、リモートコンピュータのプロセッサは、標準的デスクトップディスプレイなどの表示を生成する。この表示はフレームストア（framestore）にレンダリングされる。このプロセッサは、前記表示を物理的ディスプレイ上に生成させる信号（ＶＧＡやＤＶＩなど）を出力してもよい。しかし、物理的モニタが無いので、この出力はモニタ上では見られない。それにもかかわらず、ディスプレイとそのフレームストアがあり、以下に詳述するように更新が検知され送出される。
【００１２】
前記表示データは画素データの形式であり、ｎは元の画素データ中の各画素を表すのに用いる総ビット数である。ｎは色削減アルゴリズムにおいて５０％（例えば、２４から１２に）削減され得る。
【００１３】
前記判断するステップはさらに、ロスレス圧縮を用いて各タイルを圧縮して第１の符号化コピーを作るステップと、前記色削減タイルを、前記第１の符号化ステップで用いた前記ロスレス圧縮で圧縮して第２の符号化コピーを作るステップと、前記第１と第２の符号化コピーを比較して、前記タイルが画像データを表すかテキストデータを表すか判断するステップとを有し、前記第１の符号化コピーのサイズが前記第２の符号化コピーのサイズより大きいとき、タイルは画像データを表し、前記サイズがほぼ等しいとき、タイルはテキストデータを表す。
【００１４】
画像領域を特定するアルゴリズムは、色数を削減すると、画像領域はみにくくなるとの知見に基づく。よって、換言すると、前記判断するステップは、各タイルの色データを考慮することにより、各タイルが画像データを表すか又はテキストデータを表すか判断するステップを有すると言うこともできる。画像は色の削減により色の帯域が広がり、ポスタライズ（posterized）されがちである。これらの帯域は、原画像より少量のデータに圧縮されるので、フルカラー画像と色削減画像との間の圧縮サイズの差は大きい。対照的に、テキスト領域の場合には、この差は、エッジがもっとシャープなので無視できる。したがって、色削減アルゴリズムとそれに続く圧縮を用いると、タイルがテキストデータか画像データかを判断する有用な方法となる。しかし、他の方法も可能である。
【００１５】
サイズの差の大きさは、閾値に対して判断され得る。よって、前記比較するステップは、前記第１の符号化コピーと前記第２の符号化コピーとの間のサイズの差が閾値より大きいか判断するステップを有し、前記閾値より大きいとき、タイルは画像データを表し、前記閾値より大きくないとき、タイルはテキストデータを表す。前記閾値はｎ（上記の通り総ビット数）により決定される。例えば、ｎが１６と２４の間にあれば、閾値は５０と１５０の間にあり得る。閾値は発見的に見いだしてもよい。
【００１６】
データの圧縮の替わりに、テキストデータと画像データを選択する他のアルゴリズムをもちいてもよい。前記表示データは画素データの形式であり、前記判断するステップは異なる値の画素データの発生頻度を分析するステップを有してもよい。
【００１７】
複数のタイルを、複数のタイルの行と列を有するグリッドに配置してもよい。タイルは重なっても良い。各タイルは１６×１６画素を有しても良い。前記タイルは四角形でもその他の任意の適切な形状であってもよい。
【００１８】
送信される画像データは、好ましくはリアルタイムデータであり、ユーザは自分のローカルコンピュータディスプレイにおいてリモートコンピュータディスプレイの更新されたビューを見ることができる。本方法は、前記リモートコンピュータ表示データのどの領域が変化したか判断するステップを有し、前記リモートコンピュータ表示データの少なくとも一部が前記変化した領域を含む。このように、変化した情報のみを送信し、送信されるデータ量を低減して、システムがより効率的に機能するようにする。ボトルネックを回避するため、本システムは、ローカルコンピュータから戻ってくる要求により構成されるフィードバックループ（例えば、送信したデータを復号するデコーダ）を有しても良い。リソースが足りないとき、リモートコンピュータディスプレイにおける変化は、次の要求が戻ってくるまで破棄される。よって、どの圧縮方式を用いるか素早く決定することが不可欠であり、色削減とそれに続く素早いロスレスアルゴリズムが適当である。
【００１９】
ユーザは、ローカルコンピュータディスプレイにおいてリモートコンピュータディスプレイの表示を見ることができるので、リモートコンピュータとの任意のインターラクションをローカルコンピュータから見ることができる。
【００２０】
本発明の他の一態様によると、ローカルコンピュータからリモートコンピュータを制御する方法が提供される。前記方法は、前記ローカルコンピュータと前記リモートコンピュータとをリンクするステップと、前記ローカルコンピュータにコマンドを入力するステップと、前記ローカルコンピュータから前記リモートコンピュータに前記コマンドを送信し、前記リモートコンピュータで実行させるステップと、上記の通り、表示データを前記リモートコンピュータから送信するステップとを有する。
【００２１】
リモートコンピューティングシステムであって、プロセッサとディスプレイとを有するローカルコンピュータと、プロセッサとディスプレイとを有するローカルコンピュータと、前記ローカルコンピュータと前記リモートコンピュータとをリンクするネットワークとを有し、前記リモートコンピュータのプロセッサは、前記リモートコンピュータ表示データの少なくとも一部を複数のタイルを有するグリッドに分割し、各タイルに色削減アルゴリズムを適用して色削減タイルを作り、各タイルを対応する色削減タイルと比較することにより、各タイルが画像データを表すかテキストデータを表すか判断し、テキストデータを表す各タイルをロスレス圧縮を用いて符号化し、画像データを表す各タイルをロッシー圧縮を用いて符号化し、前記リモートコンピュータから前記ローカルコンピュータに前記ロッシー符号化画素データと前記ロスレス符号化テキストデータとを含む表示データを送るように構成され、前記ローカルコンピュータの前記プロセッサは、前記送信された表示データを復号し、前記ローカルコンピュータディスプレイに前記リモートコンピュータディスプレイを表示するように構成される。
【００２２】
各タイルに色削減アルゴリズムを適用して色削減タイルを作り、各タイルを対応する色削減タイルと比較するステップを有することは好ましいオプションである。本発明の他の一態様によると、リモートコンピュータからディスプレイを有するローカルコンピュータへ表示データを送信し、ユーザが前記ローカルコンピュータにおいて前記リモートコンピュータ表示データを見ることができる方法が提供される。前記方法は、前記リモートコンピュータ表示データの少なくとも一部を複数のタイルに分割するステップと、各タイルが画像データを表す又はテキストデータを表すか判断するステップと、テキストデータを表す各タイルをロスレス圧縮を用いて符号化するステップと、画像データを表す各タイルをロッシー圧縮を用いて符号化するステップとを有し、前記送信される表示データは前記ロッシー符号化画像データと前記ロスレス符号化テキストデータとを有する。
【００２３】
他の一態様では、リモートコンピュータの表示データを生成するように構成されたプロセッサを有する前記リモートコンピュータが提供される。前記リモートコンピュータは、プロセッサとディスプレイとを有するローカルコンピュータにネットワークを介して接続され、前記リモートコンピュータのプロセッサは、前記リモートコンピュータ表示データの少なくとも一部を複数のタイルに分割し、各タイルが画像データを表す又はテキストデータを表すか判断し、テキストデータを表す各タイルをロスレス圧縮を用いて符号化し、画像データを表す各タイルをロッシー圧縮を用いて符号化し、前記リモートコンピュータから前記ローカルコンピュータに前記ロッシー符号化画素データと前記ロスレス符号化テキストデータとを含む表示データを送り、ユーザが前記ローカルコンピュータディスプレイにおいて前記リモートコンピュータディスプレイデータを見られるようにするように構成される。
【００２４】
他の一態様では、リモートコンピューティングシステムが提供される。該システムは、プロセッサとディスプレイとを有するローカルコンピュータと、プロセッサを有するリモートコンピュータと、前記ローカルコンピュータと前記リモートコンピュータとをリンクするネットワークとを有し、前記リモートコンピュータのプロセッサは、前記リモートコンピュータの表示データを生成し、前記リモートコンピュータ表示データの少なくとも一部を複数のタイルに分割し、各タイルが画像データを表す又はテキストデータを表すか判断し、テキストデータを表す各タイルをロスレス圧縮を用いて符号化し、画像データを表す各タイルをロッシー圧縮を用いて符号化し、前記リモートコンピュータから前記ローカルコンピュータに前記ロッシー符号化画素データと前記ロスレス符号化テキストデータとを含む表示データを送るように構成され、前記ローカルコンピュータの前記プロセッサは、前記送信された表示データを復号し、前記ローカルコンピュータディスプレイに前記リモートコンピュータディスプレイを表示するように構成される。
【００２５】
これらの各態様は最初の２つの態様について記載した特徴と組み合わせることができる。
【００２６】
本発明はさらに、上記のシステムと方法を、例えば汎用コンピュータシステムやデジタル信号プロセッサ（ＤＳＰ）において実施するプロセッサ制御コードを提供する。このコードは、ディスク、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、不揮発性メモリ（例えばフラッシュ）などのプログラムされたメモリ又はリードオンリーメモリ（ファームウェア）などのキャリアで提供できる。本発明の実施形態を実装するコード（及び／又はデータ）は、Ｃやアセンブリコードなどの従来のプログラミング言語（インタープリタ又はコンパイルされた）中のソース、オブジェクト、又は実行可能コードを含む。当業者には言うまでもなく、かかるコード及び／又はデータは、互いに通信できように結合した複数のコンポーネント間に分散していてもよい。
【図面の簡単な説明】
【００２７】
本発明を以下の図面により例として図示する。
【図１】リモート制御ができるようにネットワークで接続されたコンピュータのペアを含むシステムを示す図である。
【図２】図１に示したコンピュータのリモート制御をどのように実現するか示すフローチャートである。
【図３ａ】コンピュータのペアの画面上の表示のスクリーンショットを示す図である。
【図３ｂ】図３ａの画像にグリッドを重ねたものである。
【図４】図１のシステムの性能を改善するプロセスを示すフローチャートである。
【発明を実施するための形態】
【００２８】
図１はリモートコンピューティングシステムを示す。該システムは、ユーザがいるローカルコンピュータ１０を含み、これはそのユーザから物理的に離れたところにある他のコンピュータ２０にネットワーク３０を介して接続されている。ローカルコンピュータは、キーボード１２（又はマウスなど、その他の同様の入力装置）、中央処理ユニット１６、メモリ１８、及び（任意的に）グラフィックスカード１７により任意的なフレームストア（framestore）からのデータを用いて駆動されるディスプレイ１４を含む。同様に、リモートコンピュータ２０は、キーボード２２、中央処理ユニット２６、メモリ２８、及び（任意的に）グラフィックスカード２７により任意的なフレームストアからのデータを用いて駆動されるディスプレイ２４などの標準的なコンポーネントを含む。言うまでもなく、コンピュータは同じタイプのものである必要はなく、ＰＤＡ、携帯電話などの同様の電子装置で置き換えても良い。ネットワーク３０は、インターネットなどを介した任意の好適なネットワークであり、又は企業内コンピュータネットワークであってもよい。同様に、グラフィックスカードは任意的であり、本システムは任意の好適な画像生成方法を用いることができる。例えば、ＣＰＵがフレームストア（framestore）などのメモリに格納されたデータから直接画像を生成してもよい。
【００２９】
リモートコンピューティングの一般的なプロセスを図２に示す。以下の説明では、制御プログラムはＶＮＣビューアプログラム及びＶＮＣサーバプログラムと呼ぶが、リモートコンピューティングを可能ならしめる任意の技術を用いることができる。リモートコンピュータのＣＰＵがＶＮＣ（登録商標）サーバプログラム（又は同様のプログラム）を実行し、同時にローカルコンピュータのＣＰＵが補完的なＶＮＣ（登録商標）ビューアプログラム（又は同様のプログラム）を実行する。フローチャートに示したように、リモートコンピュータ上の任意のプログラムを制御できる。第１のステップでは、リモートコンピュータ２０のＣＰＵ２６がリモートコンピュータのグラフィックスカード２７とインターラクト（interact）する。ＶＮＣ（登録商標）サーバプログラムの制御下、リモートコンピュータのＣＰＵ２６は、（例えば、グラフィックスカード２７やＸサーバなどの仮想グラフィックスカードにリンクすることにより）ディスプレイ用のフレームバッファを得て、リモートコンピュータのディスプレイ２４に示された情報のコピーを含む（メモリ２８に記憶された）画素バッファを生成する。次のステップでは、ＶＮＣ（登録商標）サーバプログラムの制御下のＣＰＵが、以下に詳細に説明するように、画素バッファを符号化する。一旦、最初の表示を符号化すると、ＣＰＵ２６はその後リモートコンピュータの表示２４のうち変化した領域のみを符号化すればよい。符号化された画素バッファデータ（及びその後の更新された画素バッファデータ）がネットワークを介してローカルコンピュータ１０に送られる。
【００３０】
リモートコンピュータ２０から受信した符号化画素バッファデータは、ローカルコンピュータ１０に、例えばローカル画素バッファのメモリ１８に格納される。ＶＮＣ（登録商標）ビューアプログラムの制御下、ローカルコンピュータのＣＰＵ１６は、符号化画素バッファデータを復号し、表示のため、例えばグラフィックスカード１７を介して復号データを送る。このように、ローカルコンピュータ１０のディスプレイ１４は、リモートコンピュータ２０のディスプレイ上に現在表示されている表示情報の更新されたコピーを表示する。
【００３１】
図３ａと図３ｂにより詳細に示すように、表示される情報は異なるタイプのデータ、すなわち（写真やその他の実世界の画像など）画像とテキストをミックスしたものである。理想的な符号化は：
（ｉ）リモート表示自体と見かけ上違わないリモート表示のコピーを作り、
（ｉｉ）素早く符号化と復号をし、
（ｉｉｉ）少量の符号化データを生成する。
【００３２】
符号化がこれらの基準を満たす程度は、符号化する画素データのタイプに依存する。画像の画素データ（画像画素データ）は、一般的に、画定されている領域にわたって滑らかに変化する。対照的に、テキストの画素データ（テキスト画素データ）は、一般的に、画定されている領域にわたって頻繁ではないが鋭く変化する。テキスト画素データは、テキスト、又はボタン、メニュー、ダイアローグボックスなどのユーザインタフェース要素を表すことが多い。
【００３３】
出願人は、様々なタイプの符号化の間の違いを調べた。ロスレス符号化は、例えばＺＲＬＥ（下記定義を参照）は、基準（ｉ）は完全に満たすが、基準（ｉｉ）は両タイプの画素データについてあまり満たさない。かかるロスレス符号化は基準（ｉｉｉ）を、テキスト画素データではよく満たすが、画像画素データではほとんど満たさない。一方、ロッシー符号化は、例えばＪＰＥＧは、基準（ｉ）と（ｉｉｉ）を、画像画素データではよく満たすが、テキスト画素データでは不十分であり、基準（ｉｉ）は両タイプのデータでよく満たす。
【００３４】
出願人は、表示のすべての部分に対して同じ符号化をする必要はないことを認識した。したがって、図３ｂに示したように、表示にタイルのグリッド（a  grid  of  tiles）を重ねて、各タイルを「画像」又は「テキスト」と分類する。典型的なグリッドは、１６×１６画素を有するタイルを有するが、他のサイズのグリッドを用いてもよい。グリッドは重なっても良い。さらに、タイルは四角形として示したが、他の形状のタイルを用いてもよい。グリッドは表示全体に重ねられるが、実際には、変化した領域にのみ重ねられる。図３ｂでは、「画像」タイルには「Ｉ」とマークし、「テキスト」タイルには「Ｔ」とマークした。
【００３５】
タイルとその符号化を分類するプロセスを図４に示す。各タイルを「画像」又は「テキスト」に分類するアルゴリズムは、「画像」タイルの異なる画素値の数が、概して「テキスト」タイルより多いということに基づくものである。このことを利用する方法は多数ある。本発明では、このことを、「画像」タイルに隣接する画素は互いに近い画素値を有することが多いことと組み合わせて用いる。この結果、各画素値を表すのに用いるビット数を少なくすると、「画像」タイルの多くの隣接画素が、ビット深度を小さくする前は異なる画素値を有していても、同じ画素値を有することになる。これは、ランレングス符号化に基づくロスレス符号化により、低減前の「画像」タイルより低減後の「画像」タイルにおいて、符号化データ量が大きく圧縮されることを意味する。対照的に、この低減は、「テキスト」タイルに適用されるロスレス符号化による圧縮には影響しない。各タイルの統計的分析を、例えば使用色のヒストグラムを用いて「画像」又は「テキスト」データを検知するその他の手段を用いても良い。例えば、タイルにおいて画素値の８０％以上が色値の１％内であるとき、そのタイルはテキストである。
【００３６】
第１のステップＳ４００では、リモートコンピュータにおいて画素バッファからタイルをコピーする。ステップＳ４０２において、そのタイルにロスレス符号化（例えば、ＴＲＬＥ符号化）を適用して、データを圧縮し、この符号化により生じるデータのバイト数をｎ１として記録する。次のステップＳ４０４では、同じ時のコピーを取り、各画素の色を表すのに用いるビット数を低減する。これは、以下に説明するように、標準的な手法により実現したり発見的に決定したりできる。ステップＳ４０６において、本プロセスは、ビット深度（bit  depth）を少なくしたタイルにロスレス符号化を適用して、データを圧縮し、この符号化により生じたデータのバイト数をｎ２として記録する。ステップＳ４０８においてｎ１をｎ２と比較する。両者の差がある閾値より大きい場合、そのタイルは「画像」として分類され、ステップＳ４１０に示したように、そのタイルはＪＰＥＧなどのロッシー圧縮（lossy  compression）を用いて符号化される。上記閾値は発見的に決定されるものである（例えば、図４に示したように、１５０であると仮定する）。差が閾値より小さい場合、タイルは「テキスト」として分類され、ＺＲＬＥなどのロスレス圧縮（lossless  compression）を用いて符号化される。ステップＳ４１４において、本プロセスでは、最後のタイルが符号化されたかどうか判断し、否であれば、すべてのグリッドが符号化されるまで、ステップＳ４００乃至Ｓ４１４がくり返される。
【００３７】
符号化されたグリッドは、上記の通り復号するため、一連の符号化タイルとしてローカルコンピュータに送られ、復号を可能とするため、各符号化タイルにはどの符号化がタイルに用いられたか示すフラグが、例えば「ＪＰＥＧ符号化」又は「ＺＲＬＥ符号化」を示すフラグが先行する。
【００３８】
ロスレス圧縮を検知して一定色の領域を最適化できれば（これはかかるほとんどの方法の機能である）、圧縮を実現するロスレス符号化や色低減に用いるアルゴリズムそのものは重要ではない。
【００３９】
任意的ビット深度の低減は以下の通り発見的に決定できる。ｎを元の画素データの各画素値を表すのに用いる総ビット数であるとする。すなわち、ｎは各画素値の赤、緑、及び青成分を表すのに用いるビット数の合計でなければならない。低減されたビット深度の画素値は、赤、緑、及び青成分のそれぞれのビット数として、（ｎ＋５）／６以下の最大整数を用いなければならない。例えば、元の画素データが８ビットを用いて各画素値の赤、緑、及び青成分のそれぞれを表す場合、低減されたビット深度画素値は４ビットを用いて各画素値の赤、緑、及び青成分のそれぞれを表すべきである。なぜなら４が（８＋８＋８＋５）／６以下の最大整数だからである。
【００４０】
ビット深度低減の前後の符号化データのバイト数の差に対する最適な閾値は、発見的に見いだされ、元の画素データの各画素値を表すのに用いられる総ビット数（ｎ）に関係する。ｎが２４である場合、閾値は１５０である。ｎが１６である場合、閾値は５０である。ｎが１６である場合、閾値は５０×（ｎ／１６）である。ｎが１６より大きい場合、閾値は、５０（ｎ＝１６の場合）と１５０（ｎ＝２４の場合）の値の間で線形補間／外挿により見いだされる。
【００４１】
間違いなく、当業者はこの他の有効な代替案に想到するであろう。言うまでもなく、本発明は上記の実施形態に限定されず、ここに添付した請求項の精神と範囲内にある当業者には明らかな変形例を含む。
【００４２】
定義
ＪＰＥＧはロッシー圧縮の周知技術である。「ＪＰＥＧ」との要素は、この標準を作成したJoint  Photographic  Experts  Groupの頭字語である。
【００４３】
ＲＬＥはロスレス圧縮の周知技術である。データは、タイルが終わるまでくり返される複数のラン（run）よりなる。各ランは、一つの画素値とそれに続くそのランの長さにより表される。長さは１バイト以上で表される。
【００４４】
ＴＲＬＥはＲＬＥの変形であり、Tiled  Run-Length  Encodingを表す。これはタイリング、パレット化、及びランレングス符号化を組み合わせたものである。四角形は左から右、上から下の順序で１６×１６画素のタイルに分割される。ＴＲＬＥは新しいタイプのＣＰＩＸＥＬ（圧縮画素）を用いる。これは、特殊な場合を除き、合意された画素フォーマットのＰＩＸＥＬと同じであり、true-colorフラグが非ゼロであり、bits-per-pixelが３２であり、depthが２４以下であり、赤、緑、及び青の強さを示すすべてのビットが最下位３バイト又は最上位３バイトのいずれかである場合、よりコンパクトなフォーマットを用いる。これらがすべて当てはまれば、ＣＰＩＸＥＬは、３バイト長であり、必要に応じて、最下位又は最上位３バイトを含む。bytesPerCPixelはＣＰＩＸＥＬのバイト数である。
【００４５】
各タイルはサブエンコーディングタイプバイト（subencoding  type  byte）で始まる。このバイトの先頭ビットは、タイルがランレングス符号化された場合に設定され、そうでない場合にクリアされる。下位７ビットは使われるパレットのサイズを示す：ゼロはパレット無し、１はタイルが１色であることを意味し、２乃至１２７はそのサイズのパレットを示す。特殊なサブエンコーディング値である１２９と１２７は、ＲＬＥをする場合又はしない場合に、パレットを有する最後のタイルから再使用されることを示す。
【００４６】
ＺＲＬＥはZlib  Run-Length  Encodingを表し、ＴＲＬＥと同様の符号化にzlib圧縮を組み合わせる。電話では、四角形は４バイト長フィールドで始まり、zlib圧縮データのそれだけ多くのバイトが続く。RFBプロトコル接続に対して単一zlib「ストリーム」オブジェクトを用い、ZRLE四角形が順序通りに符号化及び復号されるようにする。
【００４７】
圧縮されていないzlibDataは、TRLEと同様に、左から右、上から下の順序でタイルを表すが、タイルサイズは６４×６４画素である。四角形の幅がきっちり６４の倍数でない場合、各行の最後のタイルの幅は小さく、四角形の高さがきっちり６４の倍数でない場合、最後の行の各タイルの高さは小さい。
【００４８】
サブエンコーディング（subencoding）が１２７又は１２９の値を取らないことを除き、すなわちタイル間でパレットを再使用できないことを除き、タイルはTRLEとまったく同じ方法で符号化され、サーバは、各ZRLE符号化四角形の終わりでバイト境界にzlibストリームをフラッシュ（flush）する。四角形中のタイルの間のストリームをフラッシュする必要はない。単一四角形のzlibDataは潜在的に非常に大きいので、クライアントはzlibDataをインクリメント的に復号して解釈できるが、符号化タイルデータのバイトが調整（align）されていると仮定してはならない。
【図１】
0005995864.tif 000002
【図２】
0005995864.tif 000003
【図３ａ−３ｂ】
0005995864.tif 000004
【図４】
0005995864.tif 000005