リモートコンピュータからディスプレイを有するローカルコンピュータへ表示データを送信し、ユーザが前記ローカルコンピュータにおいて前記リモートコンピュータ表示データを見ることができる方法であって、前記リモートコンピュータ表示データの少なくとも一部を複数のタイルに分割するステップと、各タイルに色削減アルゴリズムを適用して色削減タイルを作り、各タイルを対応する色削減タイルと比較することにより、各タイルが画像データを表すかテキストデータを表すか判断するステップと、テキストデータを表す各タイルをロスレス圧縮を用いて符号化するステップと、画像データを表す各タイルをロッシー圧縮を用いて符号化するステップと、前記送信される表示データは前記ロッシー符号化画像データと前記ロスレス符号化テキストデータとを有する、方法。前記判断するステップは、各タイルの色データを考慮することにより、各タイルが画像データを表すか又はテキストデータを表すか判断するステップを有する、請求項1に記載の方法。前記表示データは画素データの形式であり、前記判断するステップは異なる値の画素データの発生頻度を分析するステップを有する、請求項2に記載の方法。前記判断するステップは、ロスレス圧縮を用いて各タイルを圧縮して第1の符号化コピーを作るステップと、前記色削減タイルを、前記第1の符号化ステップで用いた前記ロスレス圧縮で圧縮して第2の符号化コピーを作るステップと、前記第1と第2の符号化コピーを比較して、前記タイルが画像データを表すかテキストデータを表すか判断するステップとを有し、前記第1の符号化コピーのサイズが前記第2の符号化コピーのサイズより大きいとき、タイルは画像データを表し、前記サイズがほぼ等しいとき、タイルはテキストデータを表す、請求項1乃至3いずれか一項に記載の方法。前記比較するステップは、前記第1の符号化コピーと前記第2の符号化コピーとの間のサイズの差が閾値より大きいか判断するステップを有し、前記閾値より大きいとき、タイルは画像データを表し、前記閾値より大きくないとき、タイルはテキストデータを表す、請求項4に記載の方法。前記表示データは画素データの形式であり、nを元の画素データ中の各画素を表すのに用いる総ビット数であるとすると、前記閾値はnにより決まる、請求項5に記載の方法。前記圧縮ステップで用いられるロスレス圧縮はTRLEである、請求項4ないし6いずれか一項に記載の方法。前記表示データは画素データの形式であり、nを元の画素データ中の各画素を表すのに用いる総ビット数であるとすると、前記色削減アルゴリズムは各画素を表すのに用いられる総ビット数を削減する、請求項1乃至4いずれか一項に記載の方法。前記符号化ステップのロスレス圧縮はRLEの変化形である、請求項1乃至8いずれか一項に記載の方法。前記変化形はZRLEである、請求項9に記載の方法。前記ロッシー圧縮はJPEGである、請求項1乃至10いずれか一項に記載の方法。前記複数のタイルはグリッドを構成する、請求項1乃至11いずれか一項に記載の方法。前記リモートコンピュータ表示データのどの領域が変化し、前記リモートコンピュータ表示データの少なくとも一部が前記変化した領域を含む、請求項1乃至12いずれか一項に記載の方法。前記ローカルコンピュータから要求を受けるまで、より新しい変化により取って代わられた変化を破棄するステップを有する、請求項13に記載の方法。ローカルコンピュータからリモートコンピュータを制御する方法であって、前記ローカルコンピュータと前記リモートコンピュータとをリンクするステップと、前記ローカルコンピュータにコマンドを入力するステップと、前記ローカルコンピュータから前記リモートコンピュータに前記コマンドを送信し、前記リモートコンピュータで実行させるステップと、請求項1乃至14いずれか一項記載の前記リモートコンピュータから表示データを送るステップとを有する、方法。コンピュータで請求項1乃至15いずれか一項に記載の方法を実施する処理コードを担うキャリア。リモートコンピュータであって、前記リモートコンピュータの表示データを生成するように構成されたプロセッサを有し、前記リモートコンピュータは、プロセッサとディスプレイとを有するローカルコンピュータにネットワークを介して接続され、前記リモートコンピュータのプロセッサは、前記リモートコンピュータ表示データの少なくとも一部を複数のタイルに分割し、各タイルに色削減アルゴリズムを適用して色削減タイルを作り、各タイルを対応する色削減タイルと比較することにより、各タイルが画像データを表すかテキストデータを表すか判断し、テキストデータを表す各タイルをロスレス圧縮を用いて符号化し、画像データを表す各タイルをロッシー圧縮を用いて符号化し、前記リモートコンピュータから前記ローカルコンピュータに前記ロッシー符号化された画像と前記ロスレス符号化されたテキストデータとを含む表示データを送信し、ユーザが前記ローカルコンピュータディスプレイにおいて前記リモートコンピュータ表示データを見えるように構成される、リモートコンピュータ。リモートコンピューティングシステムであって、プロセッサとディスプレイとを有するローカルコンピュータと、プロセッサを有するリモートコンピュータと、前記ローカルコンピュータと前記リモートコンピュータとをリンクするネットワークとを有し、前記リモートコンピュータのプロセッサは、前記リモートコンピュータの表示データを生成し、前記リモートコンピュータ表示データの少なくとも一部を複数のタイルに分割し、各タイルに色削減アルゴリズムを適用して色削減タイルを作り、各タイルを対応する色削減タイルと比較することにより、各タイルが画像データを表すかテキストデータを表すか判断し、テキストデータを表す各タイルをロスレス圧縮を用いて符号化し、画像データを表す各タイルをロッシー圧縮を用いて符号化し、前記リモートコンピュータから前記ローカルコンピュータに前記ロッシー符号化画素データと前記ロスレス符号化テキストデータとを含む表示データを送り、前記ローカルコンピュータの前記プロセッサは、前記送信された表示データを復号し、前記ローカルコンピュータディスプレイに前記リモートコンピュータディスプレイを表示するように構成された、リモートコンピューティングシステム。リモートコンピュータからディスプレイを有するローカルコンピュータへ表示データを送信し、ユーザが前記ローカルコンピュータにおいて前記リモートコンピュータ表示データを見ることができる方法であって、前記リモートコンピュータ表示データの少なくとも一部を複数のタイルに分割するステップと、各タイルが画像データを表す又はテキストデータを表すか判断するステップと、テキストデータを表す各タイルをロスレス圧縮を用いて符号化するステップと、画像データを表す各タイルをロッシー圧縮を用いて符号化するステップと、前記送信される表示データは前記ロッシー符号化画像データと前記ロスレス符号化テキストデータとを有する、方法。前記判断するステップは、各タイルに色削減アルゴリズムを適用して色削減タイルを作り、各タイルを対応する色削減タイルと比較するステップを有する、請求項19に記載の方法。リモートコンピュータであって、前記リモートコンピュータの表示データを生成するように構成されたプロセッサを有し、前記リモートコンピュータは、プロセッサとディスプレイとを有するローカルコンピュータにネットワークを介して接続され、前記リモートコンピュータのプロセッサは、前記リモートコンピュータ表示データの少なくとも一部を複数のタイルに分割し、各タイルが画像データを表す又はテキストデータを表すか判断し、テキストデータを表す各タイルをロスレス圧縮を用いて符号化し、画像データを表す各タイルをロッシー圧縮を用いて符号化し、前記リモートコンピュータから前記ローカルコンピュータに前記ロッシー符号化画素データと前記ロスレス符号化テキストデータとを含む表示データを送り、ユーザが前記ローカルコンピュータディスプレイにおいて前記リモートコンピュータディスプレイデータを見られるようにするように構成された、リモートコンピュータ。リモートコンピューティングシステムであって、プロセッサとディスプレイとを有するローカルコンピュータと、プロセッサを有するリモートコンピュータと、前記ローカルコンピュータと前記リモートコンピュータとをリンクするネットワークとを有し、前記リモートコンピュータのプロセッサは、前記リモートコンピュータの表示データを生成し、前記リモートコンピュータ表示データの少なくとも一部を複数のタイルに分割し、各タイルが画像データを表す又はテキストデータを表すか判断し、テキストデータを表す各タイルをロスレス圧縮を用いて符号化し、画像データを表す各タイルをロッシー圧縮を用いて符号化し、前記リモートコンピュータから前記ローカルコンピュータに前記ロッシー符号化画素データと前記ロスレス符号化テキストデータとを含む表示データを送り、前記ローカルコンピュータの前記プロセッサは、前記送信された表示データを復号し、前記ローカルコンピュータディスプレイに前記リモートコンピュータディスプレイを表示するように構成された、リモートコンピューティングシステム。本発明の第1の態様によると、リモートコンピュータからディスプレイを有するローカルコンピュータへ表示データを送信し、ユーザが前記ローカルコンピュータにおいて前記リモートコンピュータ表示データを見ることができる方法が提供される。前記方法は、前記リモートコンピュータ表示データの少なくとも一部を複数のタイルに分割するステップと、各タイルに色削減アルゴリズムを適用して色削減タイルを作り、各タイルを対応する色削減タイルと比較することにより、各タイルが画像データを表すかテキストデータを表すか判断するステップと、テキストデータを表す各タイルをロスレス圧縮を用いて符号化するステップと、画像データを表す各タイルをロッシー圧縮を用いて符号化するステップと、前記送信される表示データは前記ロッシー符号化画像データと前記ロスレス符号化テキストデータとを有する。本発明の第2の態様によると、表示データを生成するように構成されたプロセッサを有するリモートコンピュータが提供される。前記リモートコンピュータは、プロセッサとディスプレイとを有するローカルコンピュータにネットワークを介して接続され、前記リモートコンピュータのプロセッサは、前記リモートコンピュータ表示データの少なくとも一部を複数のタイルに分割し、各タイルに色削減アルゴリズムを適用して色削減タイルを作り、各タイルを対応する色削減タイルと比較することにより、各タイルが画像データを表すかテキストデータを表すか判断し、テキストデータを表す各タイルをロスレス圧縮を用いて符号化し、画像データを表す各タイルをロッシー圧縮を用いて符号化し、前記リモートコンピュータから前記ローカルコンピュータに前記ロッシー符号化された画像と前記ロスレス符号化されたテキストデータとを含む表示データを送信し、ユーザが前記ローカルコンピュータディスプレイにおいて前記リモートコンピュータ表示データを見えるように構成されている。本発明は、ロッシー符号化とロスレス符号化との、具体的にはJPEGとRLEランレングス符号化の変形とのハイブリッドであり、JRLEとも呼ばれ得る。これはロッシー符号化JPEGを用いて画像画素データを符号化し、ロスレス符号化ZRLEを用いてテキスト画素データを符号化する。言うまでもなく、画像とテキストをミックスしたものである表示データの場合、このハイブリッドは、純粋なロッシー符号化又は純粋なロスレス符号化よりも以下に詳述する組合せ基準を満たす。一般的に、テキストデータは、はっきりした線welldefinedlinesにより特徴付けられ、シャープテキスト、線図、単色領域などのデータを含む。対照的に、画像データは、段階的に変化する色、細かいテクスチャ、ぼかしたテキストや線のエリアを含む。以下の特徴は本発明のすべての態様に当てはまる。リモートコンピュータは物理的ディスプレイ、例えばディスプレイモニタを有する。あるいは、リモートコンピュータは物理的ディスプレイに接続されていなくてもよい。この場合、リモートコンピュータのプロセッサは、標準的デスクトップディスプレイなどの表示を生成する。この表示はフレームストアframestoreにレンダリングされる。このプロセッサは、前記表示を物理的ディスプレイ上に生成させる信号VGAやDVIなどを出力してもよい。しかし、物理的モニタが無いので、この出力はモニタ上では見られない。それにもかかわらず、ディスプレイとそのフレームストアがあり、以下に詳述するように更新が検知され送出される。前記表示データは画素データの形式であり、nは元の画素データ中の各画素を表すのに用いる総ビット数である。nは色削減アルゴリズムにおいて50例えば、24から12に削減され得る。前記判断するステップはさらに、ロスレス圧縮を用いて各タイルを圧縮して第1の符号化コピーを作るステップと、前記色削減タイルを、前記第1の符号化ステップで用いた前記ロスレス圧縮で圧縮して第2の符号化コピーを作るステップと、前記第1と第2の符号化コピーを比較して、前記タイルが画像データを表すかテキストデータを表すか判断するステップとを有し、前記第1の符号化コピーのサイズが前記第2の符号化コピーのサイズより大きいとき、タイルは画像データを表し、前記サイズがほぼ等しいとき、タイルはテキストデータを表す。画像領域を特定するアルゴリズムは、色数を削減すると、画像領域はみにくくなるとの知見に基づく。よって、換言すると、前記判断するステップは、各タイルの色データを考慮することにより、各タイルが画像データを表すか又はテキストデータを表すか判断するステップを有すると言うこともできる。画像は色の削減により色の帯域が広がり、ポスタライズposterizedされがちである。これらの帯域は、原画像より少量のデータに圧縮されるので、フルカラー画像と色削減画像との間の圧縮サイズの差は大きい。対照的に、テキスト領域の場合には、この差は、エッジがもっとシャープなので無視できる。したがって、色削減アルゴリズムとそれに続く圧縮を用いると、タイルがテキストデータか画像データかを判断する有用な方法となる。しかし、他の方法も可能である。サイズの差の大きさは、閾値に対して判断され得る。よって、前記比較するステップは、前記第1の符号化コピーと前記第2の符号化コピーとの間のサイズの差が閾値より大きいか判断するステップを有し、前記閾値より大きいとき、タイルは画像データを表し、前記閾値より大きくないとき、タイルはテキストデータを表す。前記閾値はn上記の通り総ビット数により決定される。例えば、nが16と24の間にあれば、閾値は50と150の間にあり得る。閾値は発見的に見いだしてもよい。データの圧縮の替わりに、テキストデータと画像データを選択する他のアルゴリズムをもちいてもよい。前記表示データは画素データの形式であり、前記判断するステップは異なる値の画素データの発生頻度を分析するステップを有してもよい。複数のタイルを、複数のタイルの行と列を有するグリッドに配置してもよい。タイルは重なっても良い。各タイルは16×16画素を有しても良い。前記タイルは四角形でもその他の任意の適切な形状であってもよい。送信される画像データは、好ましくはリアルタイムデータであり、ユーザは自分のローカルコンピュータディスプレイにおいてリモートコンピュータディスプレイの更新されたビューを見ることができる。本方法は、前記リモートコンピュータ表示データのどの領域が変化したか判断するステップを有し、前記リモートコンピュータ表示データの少なくとも一部が前記変化した領域を含む。このように、変化した情報のみを送信し、送信されるデータ量を低減して、システムがより効率的に機能するようにする。ボトルネックを回避するため、本システムは、ローカルコンピュータから戻ってくる要求により構成されるフィードバックループ例えば、送信したデータを復号するデコーダを有しても良い。リソースが足りないとき、リモートコンピュータディスプレイにおける変化は、次の要求が戻ってくるまで破棄される。よって、どの圧縮方式を用いるか素早く決定することが不可欠であり、色削減とそれに続く素早いロスレスアルゴリズムが適当である。ユーザは、ローカルコンピュータディスプレイにおいてリモートコンピュータディスプレイの表示を見ることができるので、リモートコンピュータとの任意のインターラクションをローカルコンピュータから見ることができる。本発明の他の一態様によると、ローカルコンピュータからリモートコンピュータを制御する方法が提供される。前記方法は、前記ローカルコンピュータと前記リモートコンピュータとをリンクするステップと、前記ローカルコンピュータにコマンドを入力するステップと、前記ローカルコンピュータから前記リモートコンピュータに前記コマンドを送信し、前記リモートコンピュータで実行させるステップと、上記の通り、表示データを前記リモートコンピュータから送信するステップとを有する。リモートコンピューティングシステムであって、プロセッサとディスプレイとを有するローカルコンピュータと、プロセッサとディスプレイとを有するローカルコンピュータと、前記ローカルコンピュータと前記リモートコンピュータとをリンクするネットワークとを有し、前記リモートコンピュータのプロセッサは、前記リモートコンピュータ表示データの少なくとも一部を複数のタイルを有するグリッドに分割し、各タイルに色削減アルゴリズムを適用して色削減タイルを作り、各タイルを対応する色削減タイルと比較することにより、各タイルが画像データを表すかテキストデータを表すか判断し、テキストデータを表す各タイルをロスレス圧縮を用いて符号化し、画像データを表す各タイルをロッシー圧縮を用いて符号化し、前記リモートコンピュータから前記ローカルコンピュータに前記ロッシー符号化画素データと前記ロスレス符号化テキストデータとを含む表示データを送るように構成され、前記ローカルコンピュータの前記プロセッサは、前記送信された表示データを復号し、前記ローカルコンピュータディスプレイに前記リモートコンピュータディスプレイを表示するように構成される。各タイルに色削減アルゴリズムを適用して色削減タイルを作り、各タイルを対応する色削減タイルと比較するステップを有することは好ましいオプションである。本発明の他の一態様によると、リモートコンピュータからディスプレイを有するローカルコンピュータへ表示データを送信し、ユーザが前記ローカルコンピュータにおいて前記リモートコンピュータ表示データを見ることができる方法が提供される。前記方法は、前記リモートコンピュータ表示データの少なくとも一部を複数のタイルに分割するステップと、各タイルが画像データを表す又はテキストデータを表すか判断するステップと、テキストデータを表す各タイルをロスレス圧縮を用いて符号化するステップと、画像データを表す各タイルをロッシー圧縮を用いて符号化するステップとを有し、前記送信される表示データは前記ロッシー符号化画像データと前記ロスレス符号化テキストデータとを有する。他の一態様では、リモートコンピュータの表示データを生成するように構成されたプロセッサを有する前記リモートコンピュータが提供される。前記リモートコンピュータは、プロセッサとディスプレイとを有するローカルコンピュータにネットワークを介して接続され、前記リモートコンピュータのプロセッサは、前記リモートコンピュータ表示データの少なくとも一部を複数のタイルに分割し、各タイルが画像データを表す又はテキストデータを表すか判断し、テキストデータを表す各タイルをロスレス圧縮を用いて符号化し、画像データを表す各タイルをロッシー圧縮を用いて符号化し、前記リモートコンピュータから前記ローカルコンピュータに前記ロッシー符号化画素データと前記ロスレス符号化テキストデータとを含む表示データを送り、ユーザが前記ローカルコンピュータディスプレイにおいて前記リモートコンピュータディスプレイデータを見られるようにするように構成される。他の一態様では、リモートコンピューティングシステムが提供される。該システムは、プロセッサとディスプレイとを有するローカルコンピュータと、プロセッサを有するリモートコンピュータと、前記ローカルコンピュータと前記リモートコンピュータとをリンクするネットワークとを有し、前記リモートコンピュータのプロセッサは、前記リモートコンピュータの表示データを生成し、前記リモートコンピュータ表示データの少なくとも一部を複数のタイルに分割し、各タイルが画像データを表す又はテキストデータを表すか判断し、テキストデータを表す各タイルをロスレス圧縮を用いて符号化し、画像データを表す各タイルをロッシー圧縮を用いて符号化し、前記リモートコンピュータから前記ローカルコンピュータに前記ロッシー符号化画素データと前記ロスレス符号化テキストデータとを含む表示データを送るように構成され、前記ローカルコンピュータの前記プロセッサは、前記送信された表示データを復号し、前記ローカルコンピュータディスプレイに前記リモートコンピュータディスプレイを表示するように構成される。これらの各態様は最初の2つの態様について記載した特徴と組み合わせることができる。本発明はさらに、上記のシステムと方法を、例えば汎用コンピュータシステムやデジタル信号プロセッサDSPにおいて実施するプロセッサ制御コードを提供する。このコードは、ディスク、CD-ROM、DVD-ROM、不揮発性メモリ例えばフラッシュなどのプログラムされたメモリ又はリードオンリーメモリファームウェアなどのキャリアで提供できる。本発明の実施形態を実装するコード及び/又はデータは、Cやアセンブリコードなどの従来のプログラミング言語インタープリタ又はコンパイルされた中のソース、オブジェクト、又は実行可能コードを含む。当業者には言うまでもなく、かかるコード及び/又はデータは、互いに通信できように結合した複数のコンポーネント間に分散していてもよい。図1はリモートコンピューティングシステムを示す。該システムは、ユーザがいるローカルコンピュータ10を含み、これはそのユーザから物理的に離れたところにある他のコンピュータ20にネットワーク30を介して接続されている。ローカルコンピュータは、キーボード12又はマウスなど、その他の同様の入力装置、中央処理ユニット16、メモリ18、及び任意的にグラフィックスカード17により任意的なフレームストアframestoreからのデータを用いて駆動されるディスプレイ14を含む。同様に、リモートコンピュータ20は、キーボード22、中央処理ユニット26、メモリ28、及び任意的にグラフィックスカード27により任意的なフレームストアからのデータを用いて駆動されるディスプレイ24などの標準的なコンポーネントを含む。言うまでもなく、コンピュータは同じタイプのものである必要はなく、PDA、携帯電話などの同様の電子装置で置き換えても良い。ネットワーク30は、インターネットなどを介した任意の好適なネットワークであり、又は企業内コンピュータネットワークであってもよい。同様に、グラフィックスカードは任意的であり、本システムは任意の好適な画像生成方法を用いることができる。例えば、CPUがフレームストアframestoreなどのメモリに格納されたデータから直接画像を生成してもよい。リモートコンピューティングの一般的なプロセスを図2に示す。以下の説明では、制御プログラムはVNCビューアプログラム及びVNCサーバプログラムと呼ぶが、リモートコンピューティングを可能ならしめる任意の技術を用いることができる。リモートコンピュータのCPUがVNC登録商標サーバプログラム又は同様のプログラムを実行し、同時にローカルコンピュータのCPUが補完的なVNC登録商標ビューアプログラム又は同様のプログラムを実行する。フローチャートに示したように、リモートコンピュータ上の任意のプログラムを制御できる。第1のステップでは、リモートコンピュータ20のCPU26がリモートコンピュータのグラフィックスカード27とインターラクトinteractする。VNC登録商標サーバプログラムの制御下、リモートコンピュータのCPU26は、例えば、グラフィックスカード27やXサーバなどの仮想グラフィックスカードにリンクすることによりディスプレイ用のフレームバッファを得て、リモートコンピュータのディスプレイ24に示された情報のコピーを含むメモリ28に記憶された画素バッファを生成する。次のステップでは、VNC登録商標サーバプログラムの制御下のCPUが、以下に詳細に説明するように、画素バッファを符号化する。一旦、最初の表示を符号化すると、CPU26はその後リモートコンピュータの表示24のうち変化した領域のみを符号化すればよい。符号化された画素バッファデータ及びその後の更新された画素バッファデータがネットワークを介してローカルコンピュータ10に送られる。リモートコンピュータ20から受信した符号化画素バッファデータは、ローカルコンピュータ10に、例えばローカル画素バッファのメモリ18に格納される。VNC登録商標ビューアプログラムの制御下、ローカルコンピュータのCPU16は、符号化画素バッファデータを復号し、表示のため、例えばグラフィックスカード17を介して復号データを送る。このように、ローカルコンピュータ10のディスプレイ14は、リモートコンピュータ20のディスプレイ上に現在表示されている表示情報の更新されたコピーを表示する。図3aと図3bにより詳細に示すように、表示される情報は異なるタイプのデータ、すなわち写真やその他の実世界の画像など画像とテキストをミックスしたものである。理想的な符号化は:iリモート表示自体と見かけ上違わないリモート表示のコピーを作り、ii素早く符号化と復号をし、iii少量の符号化データを生成する。符号化がこれらの基準を満たす程度は、符号化する画素データのタイプに依存する。画像の画素データ画像画素データは、一般的に、画定されている領域にわたって滑らかに変化する。対照的に、テキストの画素データテキスト画素データは、一般的に、画定されている領域にわたって頻繁ではないが鋭く変化する。テキスト画素データは、テキスト、又はボタン、メニュー、ダイアローグボックスなどのユーザインタフェース要素を表すことが多い。出願人は、様々なタイプの符号化の間の違いを調べた。ロスレス符号化は、例えばZRLE下記定義を参照は、基準iは完全に満たすが、基準iiは両タイプの画素データについてあまり満たさない。かかるロスレス符号化は基準iiiを、テキスト画素データではよく満たすが、画像画素データではほとんど満たさない。一方、ロッシー符号化は、例えばJPEGは、基準iとiiiを、画像画素データではよく満たすが、テキスト画素データでは不十分であり、基準iiは両タイプのデータでよく満たす。出願人は、表示のすべての部分に対して同じ符号化をする必要はないことを認識した。したがって、図3bに示したように、表示にタイルのグリッドagridoftilesを重ねて、各タイルを画像又はテキストと分類する。典型的なグリッドは、16×16画素を有するタイルを有するが、他のサイズのグリッドを用いてもよい。グリッドは重なっても良い。さらに、タイルは四角形として示したが、他の形状のタイルを用いてもよい。グリッドは表示全体に重ねられるが、実際には、変化した領域にのみ重ねられる。図3bでは、画像タイルにはIとマークし、テキストタイルにはTとマークした。タイルとその符号化を分類するプロセスを図4に示す。各タイルを画像又はテキストに分類するアルゴリズムは、画像タイルの異なる画素値の数が、概してテキストタイルより多いということに基づくものである。このことを利用する方法は多数ある。本発明では、このことを、画像タイルに隣接する画素は互いに近い画素値を有することが多いことと組み合わせて用いる。この結果、各画素値を表すのに用いるビット数を少なくすると、画像タイルの多くの隣接画素が、ビット深度を小さくする前は異なる画素値を有していても、同じ画素値を有することになる。これは、ランレングス符号化に基づくロスレス符号化により、低減前の画像タイルより低減後の画像タイルにおいて、符号化データ量が大きく圧縮されることを意味する。対照的に、この低減は、テキストタイルに適用されるロスレス符号化による圧縮には影響しない。各タイルの統計的分析を、例えば使用色のヒストグラムを用いて画像又はテキストデータを検知するその他の手段を用いても良い。例えば、タイルにおいて画素値の80以上が色値の1内であるとき、そのタイルはテキストである。第1のステップS400では、リモートコンピュータにおいて画素バッファからタイルをコピーする。ステップS402において、そのタイルにロスレス符号化例えば、TRLE符号化を適用して、データを圧縮し、この符号化により生じるデータのバイト数をn1として記録する。次のステップS404では、同じ時のコピーを取り、各画素の色を表すのに用いるビット数を低減する。これは、以下に説明するように、標準的な手法により実現したり発見的に決定したりできる。ステップS406において、本プロセスは、ビット深度bitdepthを少なくしたタイルにロスレス符号化を適用して、データを圧縮し、この符号化により生じたデータのバイト数をn2として記録する。ステップS408においてn1をn2と比較する。両者の差がある閾値より大きい場合、そのタイルは画像として分類され、ステップS410に示したように、そのタイルはJPEGなどのロッシー圧縮lossycompressionを用いて符号化される。上記閾値は発見的に決定されるものである例えば、図4に示したように、150であると仮定する。差が閾値より小さい場合、タイルはテキストとして分類され、ZRLEなどのロスレス圧縮losslesscompressionを用いて符号化される。ステップS414において、本プロセスでは、最後のタイルが符号化されたかどうか判断し、否であれば、すべてのグリッドが符号化されるまで、ステップS400乃至S414がくり返される。符号化されたグリッドは、上記の通り復号するため、一連の符号化タイルとしてローカルコンピュータに送られ、復号を可能とするため、各符号化タイルにはどの符号化がタイルに用いられたか示すフラグが、例えばJPEG符号化又はZRLE符号化を示すフラグが先行する。ロスレス圧縮を検知して一定色の領域を最適化できればこれはかかるほとんどの方法の機能である、圧縮を実現するロスレス符号化や色低減に用いるアルゴリズムそのものは重要ではない。任意的ビット深度の低減は以下の通り発見的に決定できる。nを元の画素データの各画素値を表すのに用いる総ビット数であるとする。すなわち、nは各画素値の赤、緑、及び青成分を表すのに用いるビット数の合計でなければならない。低減されたビット深度の画素値は、赤、緑、及び青成分のそれぞれのビット数として、n5/6以下の最大整数を用いなければならない。例えば、元の画素データが8ビットを用いて各画素値の赤、緑、及び青成分のそれぞれを表す場合、低減されたビット深度画素値は4ビットを用いて各画素値の赤、緑、及び青成分のそれぞれを表すべきである。なぜなら4が8885/6以下の最大整数だからである。ビット深度低減の前後の符号化データのバイト数の差に対する最適な閾値は、発見的に見いだされ、元の画素データの各画素値を表すのに用いられる総ビット数nに関係する。nが24である場合、閾値は150である。nが16である場合、閾値は50である。nが16である場合、閾値は50×n/16である。nが16より大きい場合、閾値は、50n=16の場合と150n=24の場合の値の間で線形補間/外挿により見いだされる。間違いなく、当業者はこの他の有効な代替案に想到するであろう。言うまでもなく、本発明は上記の実施形態に限定されず、ここに添付した請求項の精神と範囲内にある当業者には明らかな変形例を含む。定義JPEGはロッシー圧縮の周知技術である。JPEGとの要素は、この標準を作成したJointPhotographicExpertsGroupの頭字語である。RLEはロスレス圧縮の周知技術である。データは、タイルが終わるまでくり返される複数のランrunよりなる。各ランは、一つの画素値とそれに続くそのランの長さにより表される。長さは1バイト以上で表される。TRLEはRLEの変形であり、TiledRunLengthEncodingを表す。これはタイリング、パレット化、及びランレングス符号化を組み合わせたものである。四角形は左から右、上から下の順序で16×16画素のタイルに分割される。TRLEは新しいタイプのCPIXEL圧縮画素を用いる。これは、特殊な場合を除き、合意された画素フォーマットのPIXELと同じであり、truecolorフラグが非ゼロであり、bitsperpixelが32であり、depthが24以下であり、赤、緑、及び青の強さを示すすべてのビットが最下位3バイト又は最上位3バイトのいずれかである場合、よりコンパクトなフォーマットを用いる。これらがすべて当てはまれば、CPIXELは、3バイト長であり、必要に応じて、最下位又は最上位3バイトを含む。bytesPerCPixelはCPIXELのバイト数である。各タイルはサブエンコーディングタイプバイトsubencodingtypebyteで始まる。このバイトの先頭ビットは、タイルがランレングス符号化された場合に設定され、そうでない場合にクリアされる。下位7ビットは使われるパレットのサイズを示す:ゼロはパレット無し、1はタイルが1色であることを意味し、2乃至127はそのサイズのパレットを示す。特殊なサブエンコーディング値である129と127は、RLEをする場合又はしない場合に、パレットを有する最後のタイルから再使用されることを示す。ZRLEはZlibRunLengthEncodingを表し、TRLEと同様の符号化にzlib圧縮を組み合わせる。電話では、四角形は4バイト長フィールドで始まり、zlib圧縮データのそれだけ多くのバイトが続く。RFBプロトコル接続に対して単一zlibストリームオブジェクトを用い、ZRLE四角形が順序通りに符号化及び復号されるようにする。圧縮されていないzlibDataは、TRLEと同様に、左から右、上から下の順序でタイルを表すが、タイルサイズは64×64画素である。四角形の幅がきっちり64の倍数でない場合、各行の最後のタイルの幅は小さく、四角形の高さがきっちり64の倍数でない場合、最後の行の各タイルの高さは小さい。サブエンコーディングsubencodingが127又は129の値を取らないことを除き、すなわちタイル間でパレットを再使用できないことを除き、タイルはTRLEとまったく同じ方法で符号化され、サーバは、各ZRLE符号化四角形の終わりでバイト境界にzlibストリームをフラッシュflushする。四角形中のタイルの間のストリームをフラッシュする必要はない。単一四角形のzlibDataは潜在的に非常に大きいので、クライアントはzlibDataをインクリメント的に復号して解釈できるが、符号化タイルデータのバイトが調整alignされていると仮定してはならない。