説明

情報処理装置、画像送信プログラム、画像送信方法および画像表示方法

【課題】データ転送量を削減することを課題とする。
【解決手段】情報処理装置は、画像を保持する第1の画像メモリと、送信済みの画像を保持する第2の画像メモリとを有する。また、情報処理装置は、第1の画像メモリの保持される画像を端末装置へ送信する第1の画像送信部と、前記画像を基準画像と差分画像とを組み合わせて送信する第2の画像送信部を有する。この第2の画像送信部は、第1の画像送信部から第2の画像送信部に送信を切り換える際に、第2の画像メモリに保持された画像を基準画像に設定し、基準画像を基に、第1の画像メモリに保持された画像から差分画像を生成する。そして、第2の画像送信部は、基準画像を端末装置に送信済みの画像から取得する信号と共に差分画像を送信する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置、画像送信プログラム、画像送信方法および画像表示方法に関する。
【背景技術】
【0002】
シンクライアントというシステムが知られている。シンクライアントシステムでは、クライアントに最低限の機能しか持たせず、サーバでアプリケーションやファイルなどのリソースを管理するようにシステムが構築される。
【0003】
かかるシンクライアントシステムは、実際にはサーバが処理を実行した処理結果やサーバが保持するデータをクライアントに表示させつつも、あたかもクライアントが主体となって処理を実行したり、データを保持しているかのように振る舞う。このシンクライアントシステムで通信に用いられるプロトコルには、例えばRDP(Remote Desktop Protocol)や、VNC(Virtual Network Computing)で用いられているRFB(Remote Frame Buffer)プロトコルなどがある。
【0004】
シンクライアントシステムでは、文章作成アプリケーションやWebブラウザだけでなく、CAD(Computer-Aided Design)アプリケーションも利用できる。CADアプリケーションでは、基盤の配線や3Dモデルの作成をワイヤフレームとよばれるデータで処理が実行される。そして、データによってはより詳細な描画データを作成するレンダリングと呼ばれる作業や、ワイヤフレームを様々な角度から眺めて不具合やおかしな部分や全体を検査するといった作業が行われる。そのため、CADアプリケーションなどをシンクライアントシステム上で利用する場合には大量のデータを転送することが要求される。
【0005】
このようなアプリケーションを利用する場合、全ての画面データをそのままの形で転送すると数100Mbits/秒のネットワークの帯域幅を消費してしまう。そのため、画面データを転送する場合には圧縮処理を行った上でデータを転送する。圧縮処理を行う場合には、画質とデータ量のトレードオフによって特定時間あたりのデータ量を変化させる。
【0006】
しかし、利用可能なネットワーク帯域は常に一定ではなく時間帯や接続しているネットワーク自体においても増減が発生する。さらに、利用するアプリケーションによって必要とするネットワーク帯域幅が異なるため、単純に一つの圧縮方式と特定の画質設定に応じて圧縮や転送を行った場合、必要なネットワーク帯域幅が足りずに圧縮画面データを転送できないといった問題が発生する。また、利用可能なネットワーク帯域幅を十分に利用できずに画像品質を向上できないといった問題が発生する。なお、かかる問題は、シンクライアントシステムでクライアントとサーバ間で画面更新時に大容量のデータ送信が発生する場合に共通するものであり、画像や動画を扱う場合に限定して生じる問題ではない。
【0007】
このことから、サーバとクライアント間におけるデータ転送量を削減し、操作レスポンスを改善する技術が開示されている。一例として、ディスプレイ画面のデータを転送する場合に現在利用可能なネットワークの帯域幅に応じて圧縮率の異なる画像圧縮方式を適用することで、転送量を最適化する技術が存在する。この技術では、利用可能な帯域幅が少ない場合には、画面データを不可逆圧縮方式で圧縮することで画像品質を削減することと引き替えに、必要なデータ転送量を大きく削減する。逆に、利用可能な帯域幅が大きい場合には、可逆圧縮方式での圧縮や非圧縮で画像データを転送することで、膨大な帯域幅を消費しつつも高品質の画像データを転送する。このように、この技術は、ネットワーク帯域幅の状況に応じて切り替えることで、適切な転送量と画質を維持している。
【先行技術文献】
【特許文献】
【0008】
【特許文献1】特表2007−505580号公報
【発明の概要】
【発明が解決しようとする課題】
【0009】
しかしながら、従来の技術では、データ転送量が大きいという問題があった。
【0010】
例えば、ある時点において画面データを画像として圧縮および転送しており、ネットワーク帯域や利用アプリの変化によって、次の時点で動画データとして画面データを圧縮おおび転送する処理に切り替わった場合を想定する。この場合、動画データとして画面データを圧縮する際には、画像によって圧縮された画面データに対する次の更新が発生した画面から圧縮が行われる。
【0011】
しかし、画像で圧縮された画面(以下、前フレームという)と、動画で圧縮された画面(以下、後フレームという)の間では全ての領域で無関係に更新が行われているということはまれで、前フレームと後フレームのデータは似通っているという関係がある。動画だけでの圧縮の場合、一般的にこの関係を利用し、差分データのみを含むフレーム(以下、Pフレームという)の送信を行い、少ないデータ量での表示を実現している。ところが、従来技術の場合、このような差分データによるデータ更新は行われず、差分データの元になる対象領域の全データを含むフレーム(以下、Iフレームという)から動画データが生成され、画面データとして圧縮および転送が行われる。
【0012】
例えば、画像データで転送を行った前フレームと動画データで転送を行った後フレームのデータは似通っているにもかかわらず、動画データ中でIフレームとして圧縮および送信されてしまうため、重複したデータの転送が発生している。すなわち、データ転送量の大きい静止画を重複して送信することになり、データ転送量が削減できているとは言い難い。
【0013】
開示の技術は、上記に鑑みてなされたものであって、データ転送量を削減できる情報処理装置、画像送信プログラム、画像送信方法および画像表示方法を提供することを目的とする。
【課題を解決するための手段】
【0014】
本願の開示する情報処理装置は、一つの態様において、前記画像を保持する第1の画像メモリと、前記画像を前記端末装置へ送信する第1の画像送信部とを有する。また、開示する情報処理装置は、前記第1の画像送信部で送信した画像を保持する第2の画像メモリと、前記画像を基準画像と差分画像とを組み合わせて送信する第2の画像送信部とを有する。また、開示する情報処理装置の第2の画像送信部は、前記第1の画像送信部から前記第2の画像送信部に送信を切り換える際に、前記第2の画像メモリに保持された画像を前記基準画像に設定し、前記基準画像を基に、前記第1の画像メモリに保持された画像から前記差分画像を生成する。そして、開示する情報処理装置の第2の画像送信部は、前記基準画像を端末装置に送信済みの画像から取得する信号と共に前記差分画像を送信する。
【発明の効果】
【0015】
本願の開示する情報処理装置、画像送信プログラム、画像送信方法および画像表示方法の一つの態様によれば、画像品質の劣化を防止しつつ、データ転送量を削減できるという効果を奏する。
【図面の簡単な説明】
【0016】
【図1】図1は、実施例1に係るシンクライアントシステムの構成を示す図である。
【図2】図2は、実施例1に係るシステムの流れを説明する図である。
【図3】図3は、サーバ装置がクライアント装置に送信した画像の例を示す図である。
【図4】図4は、クライアント操作の例を示す図である。
【図5】図5は、クライアント装置が差分画像を用いて動画を生成する処理の例を示す図である。
【図6】図6は、実施例2に係るシステムが有する各装置の構成を示すブロック図である。
【図7】図7は、更新差分動画変換部の内部処理の例を示す図である。
【図8】図8は、動画データ処理部の内部処理の例を示す図である。
【図9】図9は、実施例2に係るサーバ装置が実行する処理の全体的な流れを示すフローチャートである。
【図10】図10は、実施例2に係るサーバ装置が実行するフレームバッファ蓄積処理の流れを示すフローチャートである。
【図11】図11は、実施例2に係るサーバ装置が実行する擬似Iフレーム作成処理の流れを示すフローチャートである。
【図12】図12は、実施例2に係るサーバ装置が実行する更新差分動画作成処理の流れを示すフローチャートである。
【図13】図13は、実施例2に係るクライアント装置が実行する処理の全体的な流れを示すフローチャートである。
【図14】図14は、実施例2に係るクライアント装置が実行する擬似Iフレーム処理の流れを示すフローチャートである。
【図15】図15は、実施例2に係るクライアント装置が実行する動画データ処理の流れを示すフローチャートである。
【図16】図16は、実施例3に係るサーバ装置の構成を示すブロック図である。
【図17】図17は、実施例3に係るサーバ装置が実行する更新差分画像変換処理の流れを示すフローチャートである。
【図18】図18は、実施例3に係るサーバ装置が実行する擬似Iフレーム作成処理の流れを示すフローチャートである。
【図19】図19は、実施例4に係るサーバ装置の構成を示すブロック図である。
【図20】図20は、実施例4に係るサーバ装置が実行する擬似Iフレーム作成処理の流れを示すフローチャートである。
【図21】図21は、画像送信プログラムを実行するコンピュータのハードウェア構成例を示す図である。
【発明を実施するための形態】
【0017】
以下に、本願の開示する情報処理装置、画像送信プログラム、画像送信方法および画像表示方法の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
【実施例1】
【0018】
実施例1では、シンクライアントシステムの全体構成、シンクライアントシステムを形成する各装置の構成、処理の流れ等を説明する。
【0019】
[全体構成]
図1は、実施例1に係るシンクライアントシステムの構成を示す図である。図1に示すように、このシステムは、サーバ装置1とクライアント装置5とを有する。なお、各装置の台数はあくまで例示であり、これに限定されるものではない。
【0020】
このシンクライアントシステムは、クライアント装置5が表示する画面をリモートでサーバ装置1に制御させるものである。つまり、シンクライアントシステムは、実際にはサーバ装置1が実行した処理結果や保持するデータをクライアント装置5に表示させつつも、あたかもクライアント装置5が主体となって処理を実行したり、データを保持しているかのように振る舞う。
【0021】
これらサーバ装置1及びクライアント装置5は、所定のネットワークを介して、相互に通信可能に接続される。かかるネットワークには、有線または無線を問わず、インターネット、LAN(Local Area Network)やVPN(Virtual Private Network)などの任意の種類の通信網を採用できる。なお、サーバ装置1及びクライアント装置5間の通信プロトコルには、一例として、VNC(Virtual Network Computing)におけるRFB(Remote Frame Buffer)プロトコルを採用する場合を想定する。
【0022】
サーバ装置1は、クライアント装置5に表示させる画面をリモートで制御するサービスを提供するコンピュータである。一例としては、サーバ装置1は、クライアント装置5における操作情報を取得した上でその操作により要求された処理を自装置で動作するアプリケーションに実行させる。そして、サーバ装置1は、アプリケーションにより実行された処理結果を表示するための画面を生成した上で、その画面をクライアント装置5へ送信する。
【0023】
クライアント装置5は、サーバ装置1によるリモート画面制御サービスの提供を受ける側のコンピュータである。かかるクライアント装置5の一例としては、パーソナルコンピュータなど固定端末の他、携帯電話機、PHS(Personal Handyphone System)やPDA(Personal Digital Assistant)などの移動体端末を適用することもできる。
【0024】
[サーバの構成]
図1に示すように、サーバ装置1は、通信部1a、第1の画像メモリ1b、第2の画像メモリ1c、第1の画像送信部1d、第2の画像送信部1e、OS(Operating System)実行部1fを有する。通信部1aは、クライアント装置5との間の通信を制御するインタフェースであり、クライアント装置5に画像等を送信したり、クライアント装置5で実行された操作等を受信する。
【0025】
第1の画像メモリ1bは、コンピュータの上で実行されているOS自身ならびにOS上で動作するアプリケーションが行ったデスクトップ画面への描画処理の実行結果を保持する。つまり、第1の画像メモリ1bは、サーバ装置1がリモート画面制御サービスとしてクライアント装置5に提供するための元データとなるデスクトップ画面の最新の画像データを保持する。
【0026】
第2の画像メモリ1cは、後述する第1の画像送信部1dで送信した画像を保持する。つまり、第2の画像メモリ1cは、サーバ装置1がリモート画面制御サービスとしてクライアント装置5に提供した、送信済みの画像を保持する。例えば、第2の画像メモリ1cは、送信された順序や時系列で送信済みのリモート画面を保持する。第1の画像メモリでは、非同期に異なる間隔でOSやアプリケーションから更新画像が書き込まれる。一方、第1の画像送信部は、必ずしもOS実行部1fから画像メモリへの書き込み毎にデータを取得するとは限らない。また、第1の画像メモリ1bから第2の画像メモリ1cへ直接コピーを行うと、クライアントへ送信したデータと同期がとれない可能性がある。ゆえに、サーバ装置1は、第1の画像送信部1d経由で画像メモリデータを第2の画像メモリ1cへコピーする。
【0027】
第1の画像送信部1dは、第1の画像メモリ1bに保持される画像を一定間隔で取得しクライアント装置5へ送信するとともに第2の画像メモリへも送信(コピー)する。例えば、OS実行部1fは、クライアント装置5における操作情報を取得した上で、その操作により要求された処理を自装置で動作するアプリケーションに実行させる。そして、OS実行部1fは、アプリケーションにより実行された処理結果を表示するための画像を生成して第1の画像メモリ1bに格納する。そして、第1の画像送信部1dは、第1の画像メモリ1bに格納された画像をあるタイミングでコピーした上で変換を行いクライアント装置へ送信する。この送信処理と同時に変換に利用した画像メモリのデータを第2の画像メモリ1cに格納する。
【0028】
第2の画像送信部1eは、第1の画像送信部1dから第2の画像送信部1eに送信を切り換える際に、第2の画像メモリ1cに保持された画像で最新のものを基準画像に設定する。そして、第2の画像送信部1eは、基準画像を基に、第1の画像メモリ1bから一定間隔で画像データを取得して差分画像を生成し、基準画像をクライアント装置5に送信済みの画像から取得する信号と共に差分画像を送信する。
【0029】
例えば、第2の画像送信部1eは、所定の契機で、第1の画像送信部1dが実行していた画像送信から、動画送信に送信手法を変更する。そして、第2の画像送信部1eは、送信手法を切り替えるタイミングでクライアント装置5が表示していたリモート画面、すなわち、第2の画像メモリ1cが保持する最新画像を基準画像に決定する。続いて、第2の画像送信部1eは、切り替え以降の画像送信データを基準画像をもとにした差分画像として生成する。ここでの差分画像は第2の画像送信部が一定間隔で第1の画像メモリから画面データを取得し、基準画像と比較することで生成される。その後、第2の画像送信部1eは、基準画像をクライアント装置5に送信済みの画像から取得する信号と共に、差分画像をクライアント装置5に送信する。
【0030】
つまり、第2の画像送信部1eは、画像送信から動画送信に切り替えた際に、いわゆるIフレームについてはPフレームを生成する際にだけ使用し、Pフレームのみをクライアント装置5に送信する。
【0031】
[クライアント装置の構成]
図1に示すように、クライアント装置5は、通信部5a、画像メモリ5b、表示部5c、画像生成部5dを有する。通信部5aは、サーバ装置1との間の通信を制御するインタフェースであり、例えば、サーバ装置1から画像等を受信したり、サーバ装置1に操作情報を送信したりする。
【0032】
画像メモリ5bは、サーバ装置1から受信した画像や保持する。例えば、画像メモリ5bは、リモート画面として受信した画像を画像生成部で展開・復号処理した結果を保持する。表示部5cは、画像メモリ上に書き込まれた画像データを表示するディスプレイやタッチパネルなどの表示装置であり、マウス等と連携してポインティングデバイスを提供する。
【0033】
画像生成部5dは、サーバ装置1から画像を受信した場合には、受信した画像を画像メモリ5bに格納する。また、画像生成部5dは、基準画像を送信済みの画像から取得する信号と共に差分画像を受信した場合に、画像メモリ5bに記憶される画像を取得して擬似基準画像とする。そして、画像生成部5dは、擬似基準画像と受信した差分画像とを用いて動画を生成し、生成した動画を画像メモリ5bに格納する。その後、クライアント装置5内のOS等は、画像メモリ5bから読み出してリモート画面として表示部5cに再生する。
【0034】
つまり、画像生成部5dは、サーバ装置1からPフレームと所定信号とを受信した場合に、直前まで表示部5cに表示されていた画像を擬似Iフレームと決定する。そして、画像生成部5dは、決定した擬似Iフレームと受信したPフレームとを用いて、動画を再生する。
【0035】
[処理の流れ]
図2は、実施例1に係るシステムの流れを説明する図である。図2に示すように、サーバ装置1の第1の画像送信部1dは、第1の画像メモリ1bから取得し更新のあった領域の画像を差分画像としてクライアント装置5へ送信する(S101とS102)。つまり、サーバ装置1は、クライアント装置5における操作情報を取得した上で、その操作により要求された処理を自装置で動作するアプリケーションに実行させ、実行された処理結果を表示するための画像を生成してクライアント装置5へ送信する。
【0036】
この画像を受信したクライアント装置5の画像生成部5dは、サーバ装置1から受信した画像を画像メモリ5bに格納し、これが表示部へと出力される(S103)。
【0037】
その後、所定契機を検出したサーバ装置1の第2の画像送信部1eは、送信手法を切り替えると判定し、送信手法を切り替えるタイミングでクライアント装置5が表示していたリモート画面を基準画像に決定する(S104とS105)。すなわち、第2の画像送信部1eは、第2の画像メモリ1cが保持する最新画像を基準画像に決定する。
【0038】
そして、第2の画像送信部1eは、基準画像を基に、基準画像からクライアント装置5に表示させる画像までの差分画像を第1の画像メモリ1bに保持された画像を一定間隔で取得し基準画像との比較から生成する(S106)。
【0039】
その後、第2の画像送信部1eは、基準画像をクライアント装置5に送信済みの画像から取得させる信号と共に、差分画像をクライアント装置5に送信する(S107とS108)。
【0040】
この差分画像および信号を受信したクライアント装置5の画像生成部5dは、差分画像を受信する直前の画像、言い換えると、表示部5cに表示していた最新画像を擬似基準画像とし、擬似基準画像と差分画像を用いて動画を生成する(S109とS110)。そして、画像生成部5dは、生成した動画を画像メモリ5bに格納するとともに、リモート画面として表示部5cに表示させる(S111)。
【0041】
[送信手法切替の具体例]
次に、図3〜図5を用いて、図1に示したシステムで実行される画面送信手法の切替例を説明する。図3は、サーバ装置がクライアント装置に送信した画像の例を示す図である。図4は、クライアント操作の例を示す図である。図5は、クライアント装置が差分画像を用いて動画を生成する処理の例を示す図である。
【0042】
まず、サーバ装置1は、図3に示した画像Aを生成してクライアント装置5に送信する。その後、クライアント装置5では、図4に示したように、表示画像Aを所定値以上移動させる画像操作が実行される。サーバ装置1は、図4に示した画像操作をトリガとして、画像送信の手法を切り替える。
【0043】
そして、サーバ装置1は、図4の画像操作が実行されるまでクライアント装置に表示されていた図3に示す画像Aを基準画像とし、この基準画像を基に、図4に示す画像Aから画像Bまでの差分画像を生成する。その後、サーバ装置1は、基準画像を送信済みの画像から取得する信号と共に、生成した差分画像をクライアント装置5に送信する。なお、画像Aから画像Bまで移動する場合、基準画像は今までの各フレームの差分画像との和に変更される。
【0044】
すると、クライアント装置5では、基準画像を受信する直前に受信した画像、すなわち図3の画像Aを擬似基準画像として、図5に示すように、この擬似基準画像と受信した差分画像とを用いて動画を生成して表示部5cに再生する。
【0045】
[実施例1による効果]
実施例1に係るシステムでは、圧縮方式を切り替えながら画面の更新データを送信するシーンにおいて、サーバ装置とクライアント装置双方に存在するフレームを擬似基準画像として利用することで、重複をなくしデータ転送量を削減可能である。すなわち、サーバ装置1がデータ転送量の大きい静止画を送信しないにも関らず、クライアント装置5では動画を表示させることができる。したがって、データ転送量を削減できる。
【実施例2】
【0046】
次に、サーバ装置が通常時には静止画像をクライアント装置に送信し、トリガを検出した場合に、静止画像からMPEG(Moving Picture Expert Group)送信に切り替える例について説明する。ここでは、システムが有する各装置の構成、処理の流れ、効果について説明する。なお、ここで例示する圧縮形式は、MPEG−2でもMPEG−4でもよく、圧縮形式を限定するものではない。
【0047】
[各装置の構成]
図6は、実施例2に係るシステムが有する各装置の構成を示すブロック図である。図6に示すように、このシステムは、サーバ装置10とクライアント装置50とを有するので、ここでは各装置の構成を説明する。
【0048】
(サーバの構成)
図6に示すように、サーバ10は、通信部11、操作情報取得部12、OS(Operating System)実行部13、表示画面生成部14、サーバ側リモート画面制御部15を有する。なお、図6の例では、図6に示した機能部以外にも既知のコンピュータが有する各種の機能部、例えば各種の入力デバイスや表示デバイスなどの機能を有するものとする。
【0049】
通信部11は、クライアント装置50との間でデータの送受信を行う通信インタフェースである。例えば、通信部11は、後述する画面更新通知部23から出力された画像や差分画像をクライアント装置50に送信する。また、通信部11は、クライアント装置50から操作情報を受信して操作情報取得部12に出力する。
【0050】
操作情報取得部12は、通信部11が受信したクライアント装置50の操作情報を取得する処理部である。例えば、操情報取得部12は、マウスの左右のクリックを始め、ダブルクリックやドラッグ、マウスの移動操作を介して得られたマウスカーソルの移動量などを操作情報として取得する。他の一例としては、操作情報取得部12は、マウスホイールの回転量、キーボードのうち押下されたキーの種別なども操作情報として取得する。具体的な例を挙げると、操作情報取得部12は、クライアント装置50から取得したマウスのダウンクリックからアップクリックまでに要した時間や、マウスのダウンクリックからアップクリックまでの距離等を取得してもよい。
【0051】
OS実行部13は、サーバ内のOSを実行する処理部である。例えば、OS実行部13は、操作情報取得部12により取得された操作情報からアプリケーションの起動指示やアプリケーションに対するコマンドを検出する。一例としては、OS実行部13は、アプリケーションのアイコン上でダブルクリックを検出した場合に、そのアイコンに対応するアプリケーションの起動を表示画面生成部14へ指示する。他の一例としては、OS実行部13は、起動中のアプリケーションの操作画面、いわゆるウィンドウ上でコマンドの実行を要求する操作を検出した場合に、そのコマンドの実行を表示画面生成部14へ指示する。
【0052】
表示画面生成部14は、OS実行部13による指示に基づき、アプリケーションの実行を制御したり、画面生成を実行したりする処理部である。一例としては、表示画面生成部14は、OS実行部13によりアプリの起動が指示された場合や起動中のアプリにコマンドの実行が指示された場合にアプリを動作させる。そして、表示画面生成部14は、アプリを実行することにより得られた処理結果の表示用画像(リモート画面)を生成して、フレームバッファ16に書き込む。
【0053】
なお、表示画面生成部14が実行するアプリケーションは、プリインストールされたものであってもよく、サーバ装置10の出荷後にインストールされたものであってもかまわない。また、JAVA(登録商標)などのネットワーク環境から動的にデータを読み込んだ上で動作するアプリケーションであってもよい。また、表示画面生成部14は、フレームバッファ16に表示用画像を書き込む、言い換えると、フレームバッファ16に表示用画像を描画するためのドライバ等を有していてもよい。
【0054】
サーバ側リモート画面制御部15は、サーバ側リモート画面制御用アプリケーションを通じて、リモート画面制御サービスをクライアント装置50へ提供する処理部である。このサーバ側リモート画面制御部15は、図6に示すように、フレームバッファ16、フレームバッファ蓄積部17、更新差分作成部18、高頻度画面更新領域検出部19、更新差分画像変換部20を有する。さらに、サーバ側リモート画面制御部15は、擬似Iフレーム処理部21、更新差分動画変換部22、画面更新通知部23を有する。
【0055】
フレームバッファ16は、表示画面生成部14により描画された表示用画像を画像データフレームとして記憶する記憶デバイスである。かかるフレームバッファ16の一態様としては、VRAM(Video Random Access Memory)を始めとするRAM(Random Access Memory)、ROM(Read Only Memory)やフラッシュメモリ(flash memory)などの半導体メモリ素子が挙げられる。なお、フレームバッファ16は、ハードディスク、光ディスクなどの記憶装置を採用することとしてもかまわない。
【0056】
フレームバッファ蓄積部17は、過去のフレームバッファ状態を履歴として蓄積する記憶デバイスであり、フレームバッファ16と同種別のデバイスを用いることができる。例えば、フレームバッファ蓄積部17は、サーバ側のフレームバッファ16に書き込みされた過去の画面データフレームを蓄積する機能を有する。具体的には、フレームバッファ蓄積部17は、サーバ装置10中で画面情報の差分検出処理を行う際に、1回全画面を走査して差分検出を行うのを1フレームとカウントし、これを1フレームずつ蓄積していく。
【0057】
例を挙げると、フレームバッファ蓄積部17は、ある時点におけるフレームの全情報を定期的に取得して保持し、他の処理部からの要求に応じて保持したデータを出力する。フレームバッファ蓄積部17は、例えば33msに1回など、フレームバッファをチェックするタイミングにおいて、更新差分作成部18から要求を受けフレームバッファの画面データフレームを取得する。フレームバッファ蓄積部17は、取得時にはそのタイミングにおけるフレームの全情報をその時のフレーム番号とともに保持する。なお、フレーム番号はフレームバッファをチェックする際に1ずつ増加する値である。
【0058】
更新差分作成部18は、フレームバッファ16を検査し更新された差分部分を検出する処理部である。例えば、更新差分作成部18は、フレームバッファ蓄積部17から画面データフレームを受信した場合に、今回受信した画面データフレームと前回のタイミングで受信した画面データフレームとを比較して、差分部分を検出する。そして、更新差分作成部18は、検出した差分部分を高頻度画面更新領域検出部19に出力する。
【0059】
高頻度画面更新領域検出部19は、更新差分作成部18から取得した更新差分を利用してフレームバッファ中で更新が激しい領域を検出する処理部である。高頻度画面更新領域検出部19が更新の激しい領域を検出する手法には様々な手法を用いることができる。一例を挙げると、高頻度画面更新領域検出部19は、取得した差分部分から更新された矩形を示す更新矩形を生成し、生成した更新矩形が動画化領域である場合には、更新が激しい領域として検出する。
【0060】
例えば、高頻度画面更新領域検出部19は、更新矩形の大きさが所定値以上であったり、更新矩形を表す差分画像のフレーム数が所定値以上であったりする場合に、動画化領域と検出する。つまり、高頻度画面更新領域検出部19は、サーバ装置10がクライアント装置50に前回送信した画面データフレームに対して、クライアント装置50によって激しい操作が実行されたか否かを検出する。そして、高頻度画面更新領域検出部19は、激しい操作が実行されたと判定した場合に、動画生成依頼を擬似Iフレーム処理部21に通知し、激しい操作が実行されていないと判定した場合に、更新画像送信を更新差分画像変換部20に通知する。
【0061】
更新差分画像変換部20は、高頻度画面更新領域検出部19から更新画像送信依頼を受信すると、領域の更新頻度から更新差分に一致する領域をフレームバッファ16から取得して画像へ変換し、変換した画像を画面更新通知部23に出力する処理部である。つまり、更新差分画像変換部20は、サーバ装置10がクライアント装置50に前回送信した画面データフレームに対して、許容範囲内の画像操作が実行されたとする。この場合、更新差分画像変換部20は、前回送信された画面データフレームとの差分画像を、フレームバッファ蓄積部17やフレームバッファ16に記憶されるデータを用いて生成する。
【0062】
擬似Iフレーム処理部21は、更新差分を動画へ変換する場合に、Iフレームとして利用可能なフレーム情報を検出する処理部である。そして、擬似Iフレーム処理部21は、フレーム情報を利用してフレームバッファ蓄積部17から擬似Iフレームデータとなる画面データを取得して、更新差分動画変換部22へ出力する。
【0063】
具体的には、擬似Iフレーム処理部21は、フレームバッファ蓄積部17から現在送信済みで最新のフレームバッファを取得する。そして、擬似Iフレーム処理部21は、そのフレームデータから動画データへ変換する対象の領域の画面データを取得し、擬似Iフレームとして更新差分動画変換部22に出力する。例えば、擬似Iフレーム処理部21は、高頻度画面更新領域検出部19から動画データへ変換する必要がある高頻度画面更新領域の情報を受け取るとともに、画面更新通知部23から現在までに送信済みのフレームの番号を取得する。なお、画面更新通知部23で送信が行われたデータはクライアント側に届いていると想定する。そして、擬似Iフレーム処理部21は、フレームバッファ蓄積部17から送信済みのフレーム番号に該当するフレームの情報を取得し、ここから動画データへ変換する領域の画面データを抽出する。擬似Iフレーム処理部21は、この画面データを擬似Iフレームとして更新差分動画変換部22へ出力する。
【0064】
更新差分動画変換部22は、擬似Iフレームがあらかじめ渡された状態で生成され、このIフレームをベースとしてフレームバッファ16から取得したデータを利用して、先頭Iフレームを排除した形で動画データを生成する処理部である。例えば、更新差分動画変換部22は、擬似Iフレーム処理部21から擬似Iフレームと高頻度画面更新領域の情報を受信し、擬似IフレームのデータをIフレームとして現在のフレームバッファと比較する。その後、更新差分動画変換部22は、データの先頭がPフレームから始まる動画データを作成し、画面更新通知部23に渡す。
【0065】
なお、更新差分動画変換部22では画面の更新差分データの変換のためにMPEG技術を利用することができる。MPEG技術の中で以下の2種類の性質の異なるフレームのみを利用して動画データを生成する。はじめに、Iフレームと呼ばれるデータを動画データの先頭に作成する。これは、他のフレーム(Pフレーム)の土台となるフレームで、このフレーム単独で1枚の画像として表示可能な独立したデータになっている。次に、Pフレームと呼ばれるデータを作成する。これは、Iフレームに対する差分データのみを含むフレームで、Iフレームに対してこのフレームを適用することで画面全体を生成することが可能である。ゆえに、Pフレーム単独では画像を生成することはできない。また、PフレームはIフレームの後に連続して作成することが可能である。
【0066】
ここで、更新差分動画変換部22が実行するMPEG符号化について説明する。図7は、更新差分動画変換部の内部処理の例を示す図である。図7に示すように、MPEG符号化器である更新差分動画変換部22では、一般的な符号化器と同様、動き予測、動き補償、テクスチャ符号化、多重化などの処理を実行して、動画データを生成する。ここで、更新差分動画変換部22が実行する処理で、一般的な復号化器と異なる点は、符号化器初期化時に処理領域のフレームバッファをIフレームとして入力する点である。なお、一般的な符号化器と同様の処理については、詳細な説明は省略する。
【0067】
具体的には、まず、更新差分動画変換部22は、MPEGデータを作成する際のIフレームの替わりとして、擬似Iフレーム処理部21から過去のフレームバッファ中の高頻度画面更新領域の位置の画面データを取得する。ここでは、過去の画面データを取得するのは、クライアント側に既に通知されているフレームバッファを使うためである。次に、更新差分動画変換部22は、取得した画面データを擬似Iフレームとして、「前画面までの再構成フレーム」が保持されているバッファに書き込む。この処理により、符号化の際に生成するデータの先頭のIフレームの生成を無くし、Pフレームからの動画データ生成を可能とする。
【0068】
そして、更新差分動画変換部22は、フレームバッファから最新の画面データを取得し、擬似Iフレームを保持した状態で、はじめから差分のデータが生成され、先頭がPフレームからはじまるMPEG形式で画面の更新データを生成する。更新差分動画変換部22は、生成した更新データを画面更新通知部23に出力し、通信部11を経由してクライアント装置50に通知される。
【0069】
一例を挙げると、更新差分動画変換部22は、入力された画像と擬似Iフレームとを用いて動き予測や動き補償を実行した後に、テクスチャ符号化によってテクスチャ情報を生成する。一方で、更新差分動画変換部22は、動き補償の結果とテクスチャ情報とを用いて、新たなフレームを生成してバッファに書込む。また、更新差分動画変換部22は、動き予測から得られた動きベクトル情報と、テクスチャ符号化によって得られたテクスチャ情報とを多重化してバッファに書込み、このバッファからデータを読み出して、ビットストリームとしてクライアント装置50に送信する。
【0070】
図6に戻り、画面更新通知部23は、更新差分画像変換部20によって生成された画像をクライアント装置50に送信する。また、画面更新通知部23は、更新差分動画変換部22によって生成された動画、すなわち、Pフレームのみから形成される動画をクライアント装置50に送信する。また、画面更新通知部23は、現在までに送信済みの画像(フレーム)と、当該フレームに割り与えられた番号とを対応付けて保持する。
【0071】
なお、上述した各処理部は、各種の集積回路や電子回路を採用でき、一部を別の集積回路や電子回路とすることもできる。例えば、集積回路としては、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)が挙げられる。また、電子回路としては、CPU(Central Processing Unit)やMPU(Micro Processing Unit)などが挙げられる。
【0072】
(クライアント装置の構成)
図6に示すように、クライアント装置50は、通信部51、表示部52、画面表示部53、操作情報取得部54、クライアント側リモート画面制御部55を有する。なお、図6の例では、図6に示した機能部以外にも既知のコンピュータが有する各種の機能部、例えば各種の入力デバイスや音声出力部などの機能を有するものとする。
【0073】
通信部51は、サーバ装置10との間でデータの送受信を行う通信インタフェースである。例えば、通信部51は、後述する操作情報取得部54により取得された操作情報をサーバ装置10に送信する。また、通信部51は、サーバ装置10から画像や動画を受信して画面更新情報取得部56等に出力する。
【0074】
表示部52は、各種の情報、例えばサーバ装置10から送信されたデスクトップ画面などを表示する表示デバイスであり、一例としては、モニタ、ディスプレイやタッチパネルなどを適用できる。また、表示部52は、マウスなどの入力デバイスと協働して、ポインティングデバイスを提供する。
【0075】
画面表示部53は、フレームバッファ60に書き込まれた画像、言い換えると、フレームバッファ60に描画された画像や動画を読み出し、リモート画面として表示部52に表示させる。この結果、サーバ装置10から送信された画像や動画がクライアント装置50に表示され、リモート画面制御サービスの提供が行われることになる。
【0076】
操作情報取得部54は、マウスなどの操作情報を取得してサーバ装置10へ通知する処理部である。一例としては、操作情報取得部54は、マウスの左右のクリックを始め、ダブルクリックやドラッグ、マウスの移動操作を介して得られたマウスカーソルの移動量などを操作情報として通知する。他の一例としては、操作情報取得部54は、マウスホイールの回転量、キーボードのうち押下されたキーの種別なども操作情報として通知する。
【0077】
クライアント側リモート画面制御部55は、クライアント側リモート画面制御用アプリを通じて、サーバ装置10によるリモート画面制御サービスの提供を受ける処理部である。このクライアント側リモート画面制御部55は、図6に示すように、画面更新情報取得部56、画像データ処理部57、擬似Iフレーム処理部58、動画データ処理部59、フレームバッファ60を有する。
【0078】
画面更新情報取得部56は、サーバ装置10から送信された画像データを通信部51から取得する処理部である。そして、画面更新情報取得部56は、取得した画像データが静止画などの画像である場合には、当該画像データを画像データ処理部57に出力する。また、画面更新情報取得部56は、取得した画像データがPフレームなどの動画である場合には、当該画像データを擬似Iフレーム処理部58に出力する。なお、画面更新情報取得部56は、画像データのフォーマットや符号化状態などから、画像データの種類を判別することができる。
【0079】
画像データ処理部57は、画面更新情報取得部56から取得した画像データをフレームバッファ60に書き込む処理部である。例えば、画像データ処理部57は、サーバ装置10から送信された画像データ、すなわち、クライアントの操作によって更新された画像をフレームバッファ60に描画する。
【0080】
擬似Iフレーム処理部58は、画面更新情報取得部56から取得した、先頭のIフレームが取り除かれた動画データから、処理すべきフレーム内の領域位置情報を取得する処理部である。そして、擬似Iフレーム処理部58は、取得した領域位置情報に基づいてフレームバッファ60から画面データを取得し、擬似Iフレームとして動画データ処理部59に出力する。
【0081】
例えば、擬似Iフレーム処理部58は、Pフレームから始まる画面の動画更新データを受信し、フレームバッファ60から更新データと同領域の画面データを擬似Iフレームとして切り出して動画データ処理部59に出力する。具体的には、擬似Iフレーム処理部58は、動画形式の更新データを受信し、更新データから描画位置の情報として座標位置等を取得する。続いて、擬似Iフレーム処理部58は、この位置情報を利用して、フレームバッファ60から該当する領域の画面データを取得し、擬似Iフレームとして動画データ処理部59へ通知する。
【0082】
つまり、擬似Iフレーム処理部58は、取得した動画データの先頭がPフレームである場合、サーバ装置10から動画データを受信する直前に受信していた画像データを特定する。そして、擬似Iフレーム処理部58は、取得した動画データと、特定した画像データと、擬似Iフレームとを動画データ処理部59に出力する。
【0083】
動画データ処理部59は、擬似Iフレーム処理部58から取得した擬似Iフレームと、サーバ装置10から受信したIフレームが取り除かれたデータとを利用して、動画データを再生する。なお、動画データ処理部59は、動画生成にMPEG技術を利用することができる。例えば、MPEG復号器である動画データ処理部59は、擬似Iフレーム処理部58から擬似Iフレームを受信するとともに、Pフレームから始まる動画データも受信し、これらのデータから動画データをフレームバッファ60へ描画する。
【0084】
図8は、動画データ処理部の内部処理の例を示す図である。図8に示すように、動画データ処理部59は、一般的なMPEG復号器と同様、バッファを有し、可変長復号処理、逆量子化、逆直交変換、動き補償等を実行して復号映像を生成する。ここで、動画データ処理部59が実行する処理で、一般的な復号器と異なる点は、復号器初期化時に処理領域のフレームをIフレームとしてバッファに入力する点である。なお、一般的な復号器と同様の処理については、詳細な説明は省略する。
【0085】
具体的には、まず、動画データ処理部59は、受信した擬似Iフレームを「バッファ」に書き込む。この処理により、復号の際に生成する画面描画データを現在のフレームバッファ60に表示中の画面データに変更が加えられた後のデータから生成可能とする。そして、動画データ処理部59は、Pフレームから始まる動画データとこの擬似Iフレームとを用いて、Pフレームの差分が反映されたフレームから画面の更新データを生成する。その後、動画データ処理部59は、生成されたデータをフレームバッファ60に書き込む。
【0086】
図6に戻り、フレームバッファ60は、画像データ処理部57により描画された画像や、動画データ処理部59により生成された動画を保持する。例えば、フレームバッファ60は、動画データ処理部59などが実行する描画処理の結果のデータが書き込まれるとともに、擬似Iフレーム処理部58が取得する擬似Iフレームのデータの元となる画像を保持する。
【0087】
[処理の流れ]
次に、実施例2に係るシステムで実行される処理の流れを説明する。ここでは、サーバ装置が実行する処理の流れ、クライアント装置が実行する処理の流れを説明する。
【0088】
(サーバが実行する全体的な処理の流れ)
図9は、実施例2に係るサーバ装置が実行する処理の全体的な流れを示すフローチャートである。図9に示すように、サーバ装置10の操作情報取得部12は、クライアント装置50で実行されたユーザの操作情報を取得し(S201)、表示画面生成部14は、ユーザの操作情報に対応した画面を生成してフレームバッファ16に反映する(S202)。
【0089】
そして、フレームバッファ蓄積部17は、表示画面生成部14によってフレームが反映された結果、フレームバッファ16に更新が生じたと検出すると(S203肯定)、フレームバッファ蓄積処理を実行する(S204)。なお、フレームバッファ蓄積部17によってフレームバッファ16に更新が生じていないと検出された場合には(S203否定)、サーバ装置10は、S201に戻って以降の処理を繰り返す。
【0090】
その後、更新差分作成部18は、フレームバッファ蓄積処理によって蓄積された全フレームバッファの情報から、フレームバッファ16の更新矩形を作成する(S205)。続いて、高頻度画面更新領域検出部19は、更新差分作成部18が生成した更新矩形から、高頻度画面更新領域を検出する(S206)。そして、高頻度画面更新領域検出部19は、検出した高頻度画面更新領域が動画化領域、すなわち、更新の激しいか否かを判定する(S207)。
【0091】
高頻度画面更新領域が動画化領域でない場合(S207否定)、更新差分画像変換部20は、更新差分に一致する領域をフレームバッファ16から取得して画像へ変換し、変換した画像を画面更新通知部23に出力する(S208)。そして、画像更新通知部23は、通信部11を介して、更新差分画像変換部20から取得した差分画像をクライアント装置50に送信する(S209)。その後、クライアント装置で画像描画処理が実行される(S210)。
【0092】
一方、高頻度画面更新領域が動画化領域である場合(S207肯定)、擬似Iフレーム処理部21が擬似Iフレーム作成処理を実行し(S211)、続いて、更新差分動画変換部22が更新差分動画作成処理を実行する(S212)。
【0093】
その後、画面更新通知部23は、通信部11を介して、IフレームがなくPフレームだけの動画データをクライアント装置50に送信する(S213)。その後、クライアント装置で動画再生処理が実行される(S214)。
【0094】
(フレームバッファ蓄積処理)
図10は、実施例2に係るサーバ装置が実行するフレームバッファ蓄積処理の流れを示すフローチャートである。なお、この処理は、図9のS204で実行される。
【0095】
図10に示すように、フレームバッファ蓄積部17は、更新差分作成部18から取得要求を受信すると(S301肯定)、フレームバッファ16中の全データを取得し(S302)、一意なフレーム番号を付与して保持する(S303)。
【0096】
一方、フレームバッファ蓄積部17は、更新差分作成部18から取得要求を受信せずに(S301否定)、擬似Iフレーム処理部21から取得要求を受信した場合(S304肯定)、S305を実行する。すなわち、フレームバッファ蓄積部17は、取得要求に含まれるフレーム番号に一致するデータを検索し、検索されたデータを擬似Iフレーム処理部21に出力する(S305)。なお、フレームバッファ蓄積部17は、更新差分作成部18から取得要求を受信せずに(S301否定)、擬似Iフレーム処理部21からも取得要求を受信しない場合(S304否定)、S301に戻って以降の処理を実行する。
【0097】
(擬似Iフレーム作成処理)
図11は、実施例2に係るサーバ装置が実行する擬似Iフレーム作成処理の流れを示すフローチャートである。なお、この処理は、図9のS211で実行される。この処理は、高頻度画面が検出されるたびに実行される。
【0098】
図11に示すように、擬似Iフレーム処理部21は、更新差分画像変換部20から高頻度画面が存在することを受信した場合(S401肯定)、送信済みの最新のフレーム番号を画面更新通知部23から取得する(S402)。
【0099】
続いて、擬似Iフレーム処理部21は、取得した最新のフレーム番号に対応するフレームデータをフレームバッファ蓄積部17から取得する(S403)。そして、擬似Iフレーム処理部21は、高頻度画面更新領域を更新差分画像変換部20から取得するとともに、この領域に一致する領域の画面データをフレームバッファ蓄積部17から取得する(S404)。その後、擬似Iフレーム処理部21は、取得した画像データを擬似Iフレームとして、更新差分動画変換部22へ出力する(S405)。
【0100】
(更新差分動画作成処理)
図12は、実施例2に係るサーバ装置が実行する更新差分動画作成処理の流れを示すフローチャートである。なお、この処理は、図9のS212で実行される。この処理は、擬似フレームが受信されるたびに実行される。
【0101】
図12に示すように、更新差分動画変換部22は、擬似Iフレーム処理部21から擬似Iフレームを受信すると(S501肯定)、擬似Iフレームを「前画面までの再構成フレーム」を保持するバッファに格納する(S502)。
【0102】
続いて、更新差分動画変換部22は、高頻度画面更新領域すなわち激しい操作が実行された領域の最新のフレームをフレームバッファ16から取得し(S503)、Pフレームから始まる動画データを生成する(S504)。その後、更新差分動画変換部22は、生成した動画データを画面更新通知部23に出力する(S505)。
【0103】
(クライアント装置が実行する全体的な処理の流れ)
図13は、実施例2に係るクライアント装置が実行する処理の全体的な流れを示すフローチャートである。図13に示すように、クライアント装置50の操作情報取得部54は、表示部52に表示される画面に対してユーザが操作した場合に(S601肯定)、当該操作の内容を示す操作情報を逐次サーバ装置10に送信する(S602)。
【0104】
そして、画面更新情報取得部56がサーバ装置10から画像データを受信した場合(S603肯定)、画像データ処理部57は、受信された画像データをフレームバッファ60に描画する(S604)。
【0105】
一方、画面更新情報取得部56がサーバ装置10から画像データではなく(S603否定)、動画データを受信した場合(S605肯定)、擬似Iフレーム処理部58は、受信された動画データの先頭がPフレームであるか否かを判定する(S606)。
【0106】
そして、擬似Iフレーム処理部58は、受信された動画データの先頭がPフレームである場合(S606肯定)、擬似Iフレーム処理を実行する(S607)。また、このS606において、動画データ処理部59は、動画データを生成する。その後、動画データ処理部59は、生成した動画データをフレームバッファ60に重畳して再生する(S608)。なお、擬似Iフレーム処理部58は、受信された動画データの先頭がPフレームでなくIフレームである場合(S606否定)、S607を実行することなく、動画データ処理部59は、受信した動画データをフレームバッファ60に重畳して再生する(S608)。
【0107】
(擬似Iフレーム処理)
図14は、実施例2に係るクライアント装置が実行する擬似Iフレーム処理の流れを示すフローチャートである。なお、この処理は、図13のS605からS608で実行される。この処理は、動画データが受信されるたびに実行される。
【0108】
図14に示すように、擬似Iフレーム処理部58は、画面更新情報取得部56によって動画データが受信され(S701肯定)、データの先頭がPフレームである場合(S702肯定)、動画データから描画位置の情報を取得する(S703)。
【0109】
そして、擬似Iフレーム処理部58は、取得した描画位置にある高頻度画面更新領域と一致する領域の画面データを取得する(S704)。その後、擬似Iフレーム処理部58は、取得した画面データを擬似Iフレームとして動画データ処理部59に出力する(S705)。
【0110】
一方、画面更新情報取得部56によって受信された動画データの先頭がPフレームでない場合(S702否定)、受信された動画データを動画データ処理部59に出力する(S706)。
【0111】
(動画データ処理)
図15は、実施例2に係るクライアント装置が実行する動画データ処理の流れを示すフローチャートである。なお、この処理は、図13のS607で実行される。この処理は、擬似Iフレームが受信されるたびに実行される。
【0112】
図15に示すように、動画データ処理部59は、擬似Iフレーム処理部58から擬似Iフレームを受信すると(S801肯定)、受信した擬似フレームを動画データ処理部59内部のバッファ等に書き込む(S802)。
【0113】
続いて、動画データ処理部59は、擬似Iフレームと、サーバ装置10から受信したIフレームが取り除かれた動画データを利用して動画データを生成する(S803)。そして、動画データ処理部59は、受信した動画データをフレームバッファ60に重畳して再生する(S804)。
【0114】
[実施例2による効果]
実施例2によれば、大量のキャッシュデータなしに、画面データの処理方法切替時のデータ重複を排除し、更新開始時の送信データ量を削減することができる。また、マウスの操作情報などを操作トリガとして利用することで、大量の更新が発生する可能性が高い場合のみ開示する処理を適用することができる。また、実施例2の処理によって更新された画面領域の場所を記憶することで、通信量が少ないときに更新を行うことができ、この場合であっても高画質を維持できる。
【実施例3】
【0115】
ところで、開示するシステムは、クライアント装置に画像で画面更新データを送信した際に利用した画像圧縮形式を保持し、擬似Iフレームを取得する際に画像圧縮形式情報を取得する。そして、このシステムは、取得した画像圧縮形式情報をフレームバッファ蓄積部から取得した画面データに適用することでより正確な擬似Iフレームを生成することができる。
【0116】
そこで、実施例3では、画像圧縮形式情報を保持しておき、正確な擬似Iフレームを生成する例について説明する。ここでは、装置の構成、処理の流れ、効果を説明する。なお、クライアント装置の構成は、実施例2と同様であるので、詳細な説明は省略する。
【0117】
[装置の構成]
図16は、実施例3に係るサーバ装置の構成を示すブロック図である。図16に示すように、このサーバ装置10は、通信部11、操作情報取得部12、OS実行部13、表示画面生成部14、サーバ側リモート画面制御部15を有する。なお、通信部11、操作情報取得部12、OS実行部13、画面生成部14は、図6と同様なので、詳細な説明は省略する。
【0118】
サーバ側リモート画面制御部15は、フレームバッファ16、フレームバッファ蓄積部17、更新差分作成部18、高頻度画面更新領域検出部19、更新差分画像変換部20を有する。さらに、サーバ側リモート画面制御部15は、擬似Iフレーム処理部21、更新差分動画変換部22、画面更新通知部23を有する。さらに、サーバ側リモート画面制御部15は、フレームバッファ変換情報蓄積部30を有する。なお、フレームバッファ変換情報蓄積部30以外の処理部は、図6と同様の処理を実行するので、ここでは詳細な説明は省略する。
【0119】
フレームバッファ変換情報蓄積部30は、クライアント装置に送信されたデータに利用される画像圧縮形式を保持する。例えば、フレームバッファ変換情報蓄積部30は、更新差分動画変換部22において利用された変換方式と更新した領域情報とを取得して保持する。そして、擬似Iフレーム処理部21が高頻度画面更新領域の情報を受け取った際に、領域情報を検索キーとして、フレームバッファ変換情報蓄積部30を検索する。その後、擬似Iフレーム処理部21は、一致するものがあればフレームバッファ16から取得した該当領域に対してその圧縮方式を適用した上で、再度展開して擬似Iフレームとして利用する。
【0120】
[処理の流れ]
次に、図17と図18を用いて、実施例3に係るサーバ装置が実行する処理について説明する。ここでは、実施例2とは異なる処理として、更新差分画像変換処理と擬似Iフレーム作成処理について説明する。
【0121】
(更新差分画像変換処理)
図17は、実施例3に係るサーバ装置が実行する更新差分画像変換処理の流れを示すフローチャートである。図17に示すように、更新差分画像変換部20は、更新された矩形の情報を高頻度画面更新領域検出部19から受信すると(S901肯定)、S902を実行する。すなわち、更新差分画像変換部20は、更新矩形情報から領域情報を読み込んで、フレームバッファ16から該当領域の画面データを取得する(S902)。
【0122】
そして、更新差分画像変換部20は、クライアント装置50との間で予め取り決められた非可逆圧縮方式または前回画面データを生成した際に利用した非可逆圧縮方式で画面データを圧縮する(S903)。その後、更新差分画像変換部20は、画面データを生成した領域の情報と、圧縮方式とを対応付けてフレームバッファ変換情報蓄積部30に通知し(S904)、生成した画面データを画面更新通知部23に出力する(S905)。
【0123】
(擬似Iフレーム作成処理)
図18は、実施例3に係るサーバ装置が実行する擬似Iフレーム作成処理の流れを示すフローチャートである。図18に示すように、擬似Iフレーム処理部21は、更新差分画像変換部20から高頻度画面が存在することを受信した場合(S1001肯定)、送信済みの最新のフレーム番号を画面更新通知部23から取得する(S1002)。
【0124】
続いて、擬似Iフレーム処理部21は、取得した最新のフレーム番号に対応するフレームデータをフレームバッファ蓄積部17から取得する(S1003)。そして、擬似Iフレーム処理部21は、高頻度画面更新領域を更新差分画像変換部20から取得するとともに、この領域に一致する領域の画面データをフレームバッファ蓄積部17から取得する(S1004)。その後、擬似Iフレーム処理部21は、フレームバッファ変換情報蓄積部30から該当領域の圧縮方式を取得する(S1005)。
【0125】
そして、擬似Iフレーム処理部21は、取得した圧縮方式が可逆圧縮である場合(S1006肯定)、S1004で取得した画像データを擬似Iフレームとして、更新差分動画変換部22へ出力する(S1007)。
【0126】
一方、擬似Iフレーム処理部21は、取得した圧縮方式が可逆圧縮でない場合(S1006否定)、取得した圧縮方式で、S1004で取得した画像データを圧縮後、再展開したデータを擬似Iフレームとして、更新差分動画変換部22へ出力する(S1008)。
【0127】
[実施例3による効果]
クライアント装置とサーバ装置双方のフレームバッファは、同一のものが存在することを想定している。このように画面データ転送時に同一のデータを転送しようとするとする場合、可逆圧縮方式と呼ばれる比較的データ量が大きい方法で画像を圧縮する必要がある。そのため、データの欠落を許容することでデータ量を小さくすることが可能な非可逆圧縮方式で画面データを圧縮して転送することも可能である。しかし、クライアントに対して非可逆圧縮方式で画面データを送信すると、サーバに存在するフレームバッファとクライアントのそれの整合性がとれない事象が発生する恐れもある。
【0128】
そこで、実施例3のように、サーバ装置10に「フレームバッファ変換情報蓄積部30」を加えて、領域毎の圧縮方式や圧縮品質を保持しておくことで、クライアント装置とサーバ装置間で同一の擬似Iフレームを生成可能となる。
【実施例4】
【0129】
ところで、開示するシステムは、既存のMPEG符号化器や復号器に手を加えずにIフレームを排除し、データ転送量を削減することもできる。そこで、実施例4では、既存のMPEG符号化器や復号器に手を加えずにIフレームを排除例について説明する。ここでは、装置の構成、処理の流れ、効果を説明する。なお、クライアント装置の構成は、実施例2と同様であるので、詳細な説明は省略する。
【0130】
[装置の構成]
図19は、実施例4に係るサーバ装置の構成を示すブロック図である。図19に示すように、このサーバ装置10は、通信部11、操作情報取得部12、OS実行部13、表示画面生成部14、サーバ側リモート画面制御部15を有する。なお、通信部11、操作情報取得部12、OS実行部13、画面生成部14は、図6と同様なので、詳細な説明は省略する。
【0131】
サーバ側リモート画面制御部15は、フレームバッファ16、フレームバッファ蓄積部17、更新差分作成部18、高頻度画面更新領域検出部19、更新差分画像変換部20を有する。さらに、サーバ側リモート画面制御部15は、擬似Iフレーム処理部21、更新差分動画変換部22、画面更新通知部23を有する。さらに、サーバ側リモート画面制御部15は、Iフレームデータ排除部31を有する。なお、Iフレームデータ排除部31以外の処理部は、図6と同様の処理を実行するので、ここでは詳細な説明は省略する。
【0132】
Iフレームデータ排除部31は、擬似Iフレーム処理部21によって生成されたMPEGデータ中から先頭のIフレームのデータを排除する処理部である。例えば、Iフレームデータ排除部31は、擬似Iフレーム処理部21からIフレームを排除するよう通知を受信した場合、擬似Iフレーム処理部21から受信したMPEGデータの先頭からIフレームを排除して、画面更新通知部23に出力する。
【0133】
[処理の流れ]
図20は、実施例4に係るサーバ装置が実行する擬似Iフレーム作成処理の流れを示すフローチャートである。図20に示すように、擬似Iフレーム処理部21は、高頻度画面更新領域検出部19から高頻度画面更新領域を受信する(S1101肯定)。すると、擬似Iフレーム処理部21は、画面更新通知部23から送信済みフレームのうち最新値を取得し(S1102)、フレームバッファ蓄積部17に蓄積されている最新のフレームバッファの番号を取得する(S1103)。
【0134】
続いて、擬似Iフレーム処理部21は、画面更新通知部23から取得したフレーム番号と、フレームバッファ蓄積部17から取得したフレーム番号とが一致するか否かを判定する(S1104)。なお、フレームバッファ蓄積部17へ先に新しい画面データが書き込まれるため、処理のタイミングによっては動画作成時のIフレームに相当するデータがクライアントへ届いていない場合、つまり画面更新通知部23のフレーム番号が古い場合が存在する。そのような場合には、Pフレームから始まるデータをクライアントへ送信しても疑似Iフレームが生成できない可能性がある。このような場合のために一致判定を行う。
【0135】
そして、擬似Iフレーム処理部21は、両方のフレーム番号が一致する場合(S1104肯定)、Iフレームデータ排除部31に次のMPEGデータ、すなわちこれから通知されるMPEGデータの先頭Iフレームを排除する通知を出力する(S1105)。なお、擬似Iフレーム処理部21は、両方のフレーム番号が一致しない場合(S1104否定)、S1105を実行することなくS1106を実行する。
【0136】
その後、擬似Iフレーム処理部21は、高頻度画面更新領域検出部19から取得した高頻度更新領域を更新差分動画変換部22に出力する(S1106)。この結果、Iフレームデータ排除部31は、更新差分動画変換部22から取得したMPEGデータの先頭のIフレームを削除して画面更新通知部23に出力する。
【0137】
[実施例4による効果]
このように、サーバ装置に「Iフレームデータ排除部31」をさらに加え、生成されたMPEGデータ中から先頭のIフレームのデータを排除した上でクライアント装置に転送する。クライアント装置では、自身のフレームバッファから取得した擬似Iフレームを、受信したMPEGデータの先頭に付与することでデータ転送量を削減可能である。
【実施例5】
【0138】
さて、これまで本発明の実施例について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下に異なる実施例を説明する。
【0139】
(送信手法の切替)
例えば、実施例1から実施例4では、画像送信から動画送信に切り替える例を説明しているがこれに限定されるものではない。例えば、開示するシステムは、動画データによる更新から別の動画データ形式への切り替え時や、動画データによる更新から画像データ形式への切り替え時にも適用可能である。
【0140】
また、切り替えるトリガ、言い換えると激しい操作の例としては、サーバ装置は、クライアント装置からマウスのダウンクリックを検出してから、アップクリックを検出するまでの時間が所定時間となった場合に、激しい操作が行われたと検出する。また、サーバ装置は、ダウンクリックからアップクリックまでの距離が所定値以上となった場合に、激しい操作が行われたと検出する。
【0141】
(送信手法の戻し)
例えば、実施例1から実施例4で説明した手法で、画像送信から動画送信に切り替えた後に、元の画像送信に切り戻すタイミングは、任意に設定できる。例えば、動画化される領域が一定になったタイミング、もしくは更新が少ない状態で一定時間経った場合に、元の送信手法に戻してもよい。
【0142】
(動画圧縮)
例えば、実施例1から実施例4では、MPEG技術で利用されるIフレーム、Pフレームを用いた例で説明しているが、開示するシステムの適用範囲はMPEG技術だけではなく、他の動画圧縮形式にも適用可能ある。つまり、実施例で例示したIフレーム、Pフレームは、動画圧縮方式一般で利用される基準画像、差分画像に相当するものである。
【0143】
(システム)
また、本実施例において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動的におこなうこともできる。あるいは、手動的におこなわれるものとして説明した処理の全部または一部を公知の方法で自動的におこなうこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、例えば図3等に示した各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
【0144】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、任意の処理部を統合するなど各装置の分散・統合の具体的形態は図示のものに限られない。つまり、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、CPUおよび当該CPUにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【0145】
また、各実施例で説明した操作情報取得部は、加速度センサや光センサ、地磁気センサ、温度センサなどのユーザの周辺状況および端末へのユーザの動作をセンシング可能なセンサでも良い。また、操作情報取得部は、タッチパネルやキーボードやマイクロフォンなどのユーザが直接入力を行う機器でも構わない。また、本実施例ではクライアント装置としてサーバ装置上のデスクトップ環境と同サイズの出力が可能なクライアント装置を利用しているが、これに限定されるものではない。例えば、画面の表示サイズを縮小することでこれ以外のPDAやノートPC、携帯ゲーム機、携帯音楽プレイヤーなどの画面サイズの小さな端末上にも適用可能である。また、サーバ装置側のOS実行部は特定のアーキテクチャに依存せず、どのようなOSでも構わない。
【0146】
(プログラム)
ところで、上記の実施例で説明した各種の処理は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータシステムで実行することによって実現することができる。そこで、以下では、上記の実施例と同様の機能を有するプログラムを実行するコンピュータシステムの一例を説明する。
【0147】
図21は、画像送信プログラムを実行するコンピュータのハードウェア構成例を示す図である。図21に示すように、コンピュータシステム100は、バス101に、CPU102、入力装置103、出力装置104、通信インタフェース105、HDD(Hard Disk Drive)106、RAM(Random Access Memory)107が接続される。
【0148】
入力装置103は、マウスやキーボードであり、出力装置104は、ディスプレイなどであり、通信インタフェース105は、NIC(Network Interface Card)などのインタフェースである。HDD106には、画像送信プログラム106aととともに、図6等に示した各バッファ等に記憶される情報が記憶される。記録媒体の例としてHDD106を例に挙げたが、ROM(Read Only Memory)、RAM(Random Access Memory)、CD−ROM等の他のコンピュータ読み取り可能な記録媒体に各種プログラムを格納しておき、コンピュータに読み取らせることとしてもよい。なお、記憶媒体を遠隔地に配置し、コンピュータが、その記憶媒体にアクセスすることでプログラムを取得して利用してもよい。また、その際、取得したプログラムをそのコンピュータ自身の記録媒体に格納して用いてもよい。
【0149】
CPU102は、画像送信プログラム106aを読み出してRAM107に展開することで、図6等で説明した各機能を実行する画像送信プロセス107aを動作させる。すなわち、画像送信プロセス107aは、図6、図16、図19に記載したサーバ側リモート画面制御部15が有する各処理部と同様の機能を実行する。このようにコンピュータシステム100は、プログラムを読み出して実行することでリモート画面送信制御方法を実行する情報処理装置として動作する。
【符号の説明】
【0150】
1、10 サーバ装置
1a 通信部
1b 第1の画像メモリ
1c 第2の画像メモリ
1d 第1の画像送信部
1e 第2の画像送信部
5、50 クライアント装置
5a 通信部
5b 画像メモリ
5c 表示部
5d 画像生成部
11 通信部
12 操作情報取得部
13 OS実行部
14 表示画面生成部
15 サーバ側リモート画面制御部
16 フレームバッファ
17 フレームバッファ蓄積部
18 更新差分作成部
19 高頻度画面更新領域検出部
20 更新差分画像変換部
21 擬似Iフレーム処理部
22 更新差分動画変換部
23 画面更新通知部
51 通信部
52 表示部
53 画面表示部
54 操作情報取得部
55 クライアント側リモート画面制御部
56 画面更新情報取得部
57 画像データ処理部
58 擬似Iフレーム処理部
59 動画データ処理部

【特許請求の範囲】
【請求項1】
ネットワーク経由で接続された端末装置の表示部にコンピュータの実行結果を表示するための画像を生成して前記端末装置へ送信する情報処理装置であって、
前記画像を保持する第1の画像メモリと、
前記画像を前記端末装置へ送信する第1の画像送信部と、
前記第1の画像送信部で送信した画像を保持する第2の画像メモリと、
前記画像を基準画像と差分画像とを組み合わせて送信する第2の画像送信部と、を有し、
前記第2の画像送信部は、
前記第1の画像送信部から前記第2の画像送信部に送信を切り換える際に、前記第2の画像メモリに保持された画像を前記基準画像に設定し、
前記基準画像を基に、前記第1の画像メモリに保持された画像から前記差分画像を生成し、
前記基準画像を端末装置に送信済みの画像から取得する信号と共に前記差分画像を送信する情報処理装置。
【請求項2】
前記第2の画像送信部は、
前記端末装置の表示部に表示される画像の更新領域が所定値以上となった場合に、前記第1の画像送信部から前記第2の画像送信部に送信を切り換え、前記移動距離が所定値以上となった画像を前記基準画像とすることを特徴とする請求項1に記載の情報処理装置。
【請求項3】
前記第2の画像メモリは、前記第1の画像送信部で送信した画像に加えて、前記画像に利用された圧縮方式をさらに対応付けて保持し、
前記第2の画像送信部は、前記第1の画像送信部から前記第2の画像送信部に送信を切り換える際に、前記第2の画像メモリに保持された画像を、当該画像に対応付けられている圧縮方式を用いて前記基準画像を生成することを特徴とする請求項1または2に記載の情報処理装置。
【請求項4】
ネットワーク経由で接続された端末装置の表示部にコンピュータの実行結果を表示するための画像を生成して前記端末装置へ送信する情報処理装置に
前記画像を第1の画像メモリに保持する第1保持手順と、
前記画像を前記端末装置へ送信する第1の画像送信手順と、
前記端末装置に送信された画像を第2の画像メモリを保持する第2保持手順と、
前記画像を基準画像と差分画像とを組み合わせて送信する第2の画像送信手順と、
前記第2の画像送信手順は、
前記第1の画像送信手順から前記第2の画像送信手順に送信を切り換える際に、前記第2の画像メモリに保持された画像を前記基準画像に設定し、
前記基準画像を基に、前記第1の画像メモリに保持された画像から前記差分画像を生成し、
前記基準画像を端末装置に送信済みの画像から取得する信号と共に前記差分画像を送信する処理を実行することを特徴とする画像送信プログラム。
【請求項5】
ネットワーク経由で接続された端末装置の表示部にコンピュータの実行結果を表示するための画像を生成して前記端末装置へ送信する情報処理装置が実行する制御方法であって、
前記画像を第1の画像メモリに保持する第1保持工程と、
前記画像を前記端末装置へ送信する第1の画像送信工程と、
前記端末装置に送信された画像を第2の画像メモリを保持する第2保持工程と、
前記画像を基準画像と差分画像とを組み合わせて送信する第2の画像送信工程と、
前記第2の画像送信工程は、
前記第1の画像送信工程から前記第2の画像送信工程に送信を切り換える際に、前記第2の画像メモリに保持された画像を前記基準画像に設定し、
前記基準画像を基に、前記第1の画像メモリに保持された画像から前記差分画像を生成し、
前記基準画像を端末装置に送信済みの画像から取得する信号と共に前記差分画像を送信することを含んだことを特徴とする画像送信方法。
【請求項6】
ネットワーク経由で接続された端末装置の表示部にコンピュータの実行結果を表示するための画像を生成して前記端末装置へ送信する情報処理装置と、前記情報処理装置から前記ネットワークを経由して受信した画像を表示する端末装置とを有する画像表示システムに用いる画像表示方法であって、
前記情報処理装置は、
前記画像を第1の画像メモリに保持する第1保持工程と、
前記画像を前記端末装置へ送信する第1の画像送信工程と、
前記端末装置に送信された画像を第2の画像メモリを保持する第2保持工程と、
前記画像を基準画像と差分画像とを組み合わせて送信する第2の画像送信工程であって、前記第1の画像送信工程から前記第2の画像送信工程に送信を切り換える際に、前記第2の画像メモリに保持された画像を前記基準画像に設定し、
前記基準画像を基に、前記第1の画像メモリに保持された画像から前記差分画像を生成し、
前記基準画像を端末装置に送信済みの画像から取得する信号と共に前記差分画像を送信する第2の画像送信工程とを含み、
前記端末装置は、
前記情報処理装置から画像を受信した画像を保持部に保持する保持工程と、
前記保持部に保持される画像を所定の表示部に表示させる第1表示制御部と、
前記情報処理装置から前記差分画像と前記信号とを受信した場合に、前記保持部に保持される画像を基準画像として、当該基準画像と前記差分画像から生成した画像を前記所定の表示部に表示させる第2表示制御部と、
を含んだことを特徴とする画像表示方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate


【公開番号】特開2012−195629(P2012−195629A)
【公開日】平成24年10月11日(2012.10.11)
【国際特許分類】
【出願番号】特願2011−55995(P2011−55995)
【出願日】平成23年3月14日(2011.3.14)
【出願人】(000005223)富士通株式会社 (25,993)
【Fターム(参考)】