(57)【要約】【課題】変更の頻度の多い領域を速やかに検出できる情報処理装置、変更検出方法および変更検出プログラムを提供する。【解決手段】送信部４７は、生成された画像をクライアント端末に対して送信する。取得部４２は、送信部４７による画像の送信タイミングとは異なるタイミングにおいて生成された画像を少なくとも１つ取得する。算出部は、送信部４７から送信済みの画像および取得部４２により取得された画像から画像を構成する複数の分割領域毎の変更頻度を算出する。【選択図】図２
2015191630.tif 000002
【特許請求の範囲】
【請求項１】
生成された画像をクライアント端末に対して送信する送信部と、
前記送信部による画像の送信タイミングとは異なるタイミングにおいて生成された画像を少なくとも１つ取得する取得部と、
前記送信部から送信済みの画像および前記取得部により取得された画像から画像を構成する複数の分割領域毎の変更頻度を算出する算出部と、
を有することを特徴とする情報処理装置。
【請求項２】
前記送信部により送信される画像を、当該画像より前に送信された画像と比較して、前記複数の分割領域のうち変更があった領域を更新領域として検出する検出部をさらに有し、
前記算出部は、前記検出部により更新領域が検出された画像から時系列の順に遡って、送信済みの画像および前記取得部により取得された画像の前記更新領域を順に比較して変更頻度を算出する
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記算出部は、前記分割領域ごとに前記変更頻度として変更回数をカウントし、変更回数が所定のしきい値となった分割領域については比較を終了する
ことを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記更新領域のうち、前記算出部により算出される変更頻度が所定のしきい値以上の領域を動画の領域とし、その他の領域を静止画の領域として、画像データを変換する変換部をさらに有し、
前記送信部は、前記変換部により変換された画像データを送信する
ことを特徴とする請求項２または３に記載の情報処理装置。
【請求項５】
前記クライアント端末との通信で利用可能な通信帯域を特定する特定部と、
前記特定部により特定された利用可能な通信帯域が低いほど、前記しきい値を低くする更新、および、前記取得部が送信される画像間で画像を取得する取得頻度を多くする更新の何れか一方または両方を行う更新部と、
をさらに有することを特徴とする請求項４に記載の情報処理装置。
【請求項６】
コンピュータに、
生成された画像をクライアント端末に対して送信し、
画像の送信タイミングとは異なるタイミングにおいて生成された画像を少なくとも１つ取得し、
送信済みの画像および取得された画像から画像を構成する複数の分割領域毎の変更頻度を算出する
処理を実行させることを特徴とする変更検出プログラム。
【請求項７】
コンピュータが、
生成された画像をクライアント端末に対して送信し、
画像の送信タイミングとは異なるタイミングにおいて生成された画像を少なくとも１つ取得し、
送信済みの画像および取得された画像から画像を構成する複数の分割領域毎の変更頻度を算出する
処理を実行することを特徴とする変更検出方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、変更検出方法および変更検出プログラムに関する。
【背景技術】
【０００２】
従来より、サーバ上でクライアントのデスクトップを仮想化する仮想デスクトップが知られている。この仮想デスクトップでは、サーバ上にクライアントを仮想化した環境を構築してクライアントからリモートでの操作を受付け、サーバが所定のフレームレートでデスクトップ画面の画像をクライアントに送信してクライアントに画像を表示させる。
【０００３】
ところで、サーバがデスクトップの画像を全て静止画の画像データで送信すると、ネットワークを伝送される画像データのデータ量が多くなり、クライアントでの操作性が悪化する場合がある。例えば、サーバとクライアント間のネットワークの通信帯域が狭い場合に、伝送されるデータ量が多くなると、クライアントでの画像の表示に遅延が発生して操作性が悪化する場合がある。
【０００４】
そこで、伝送されるデータ量を減らす技術として、送信するフレームの画像を複数の領域に分割して領域ごとにフレームの画像間の変更の頻度を判別し、変更の頻度がしきい値を超えた領域に対して動画の圧縮処理を行って送信する技術がある。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１１−２３８０１４号公報
【特許文献２】特開２０１２−１４５３３号公報
【特許文献３】特開２００４−２１３４１８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、上記の技術は、フレームの画像間の変更の頻度がしきい値を超えるまで画像が静止画として送信されてしまい、変更の頻度の多い領域の検出に時間がかかる。このように変更の頻度の多い領域の検出に時間がかかると、伝送される画像データのデータ量が多くなり、クライアントでの操作性が悪化する場合がある。
【０００７】
一側面では、変更の頻度の多い領域を速やかに検出できる情報処理装置、変更検出方法および変更検出プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明の一側面によれば、情報処理装置は、送信部と、取得部と、算出部とを有する。送信部は、生成された画像をクライアントに対して送信する。取得部は、前記送信部による画像の送信タイミングとは異なるタイミングにおいて生成された画像を少なくとも１つ取得する。算出部は、前記送信部から送信済みの画像および前記取得部により取得された画像から画像を構成する複数の分割領域毎の変更頻度を算出する。
【発明の効果】
【０００９】
本発明の一側面によれば、変更の頻度の多い領域を速やかに検出できる。
【図面の簡単な説明】
【００１０】
【図１】図１は、実施例１に係るシステムの全体の概略構成の一例を示す図である。
【図２】図２は、実施例１に係るサーバの機能的な構成の一例を示す図である。
【図３】図３は、画像の分割した分割領域を説明するための図である。
【図４Ａ】図４Ａは、デスクトップ画面の変更頻度の判別要領を説明するための図である。
【図４Ｂ】図４Ｂは、デスクトップ画面の変更頻度の判別要領を説明するための図である。
【図５Ａ】図５Ａは、連結領域の補正要領を説明するための図である。
【図５Ｂ】図５Ｂは、連結領域の補正要領を説明するための図である。
【図５Ｃ】図５Ｃは、連結領域の補正要領を説明するための図である。
【図６】図６は、端末の機能的な構成の一例を示す図である。
【図７】図７は、実施例１に係る高頻度更新領域を検出する流れの一例を模式的に示した図である。
【図８】図８は、実施例１に係る変更頻度を算出する動作の流れの一例を模式的に示した図である。
【図９】図９は、送信フレームの画像のみで高頻度更新領域を検出する流れの一例を模式的に示した図である。
【図１０】図１０は、実施例１に係る高頻度更新領域を検出する流れの他の一例を模式的に示した図である。
【図１１】図１１は、実施例１に係る変更検出処理の手順の一例を示すフローチャートである。
【図１２】図１２は、実施例２に係る変更頻度を算出する動作の流れの一例を模式的に示した図である。
【図１３】図１３は、実施例３に係るサーバの機能的な構成の一例を示す図である。
【図１４】図１４は、速度別設定情報テーブルの一例を示す図である。
【図１５】図１５は、高頻度更新領域を検出する流れの一例を模式的に示した図である。
【図１６】図１６は、高頻度更新領域を検出する流れの一例を模式的に示した図である。
【図１７】図１７は、実施例３に係る設定更新処理の手順の一例を示すフローチャートである。
【図１８】図１８は、変更検出プログラムを実行するコンピュータを示す図である。
【発明を実施するための形態】
【００１１】
以下に、本発明に係る情報処理装置、変更検出方法および変更検出プログラムの実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。そして、各実施例は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
【実施例１】
【００１２】
［システムの構成］
実施例１に係るシステム１０について説明する。図１は、実施例１に係るシステムの全体の概略構成の一例を示す図である。図１に示すように、システム１０は、サーバ上でクライアントのデスクトップを仮想化するシステムである。システム１０は、サーバ１１と、クライアント端末１２とを有する。サーバ１１とクライアント端末１２は、各種の情報を交換することが可能とされている。例えば、サーバ１１とクライアント端末１２は、ネットワーク１３を介して通信可能に接続され、各種の情報を交換することが可能とされている。かかるネットワーク１３の一態様としては、有線または無線を問わず、携帯電話などの移動体通信、インターネット（Internet）、ＬＡＮ（Local  Area  Network）やＶＰＮ（Virtual  Private  Network）などの任意の種類の通信網を採用できる。
【００１３】
サーバ１１は、クライアントのデスクトップを仮想化した仮想デスクトップを提供する装置である。サーバ１１は、例えば、サーバコンピュータなどのコンピュータなどである。サーバ１１は、情報処理装置に対応する。サーバ１１は、１台のコンピュータとして実装してもよく、また、複数台のコンピュータによるクラウドとして実装することもできる。なお、本実施例では、サーバ１１を１台のコンピュータとした場合を例として説明する。サーバ１１は、クライアントを仮想化した環境が構築され、クライアントからリモートでの操作を受付ける。例えば、サーバ１１は、クライアントの仮想的なデスクトップ画面の画像を周期的にクライアントへ送信しており、クライアントからリモートでの操作を受付ける。サーバ１１には、クライアントを仮想化した仮想環境を構築するサーバ向けのリモート画面制御用のアプリケーションがインストールまたはプリインストールされる。なお、以下では、サーバ向けのリモート画面制御用のアプリケーションをサーバ側リモート画面制御用アプリと呼ぶ。
【００１４】
このサーバ側リモート画面制御用アプリは、基本機能として、リモート画面制御サービスを提供する機能を有する。一例としては、サーバ側リモート画面制御用アプリは、クライアント端末１２から操作を受け付け、受け付けた操作により要求された処理を自装置で動作するアプリケーションに実行させる。そして、サーバ側リモート画面制御用アプリは、アプリケーションにより実行された処理結果を表示するための画面を生成した上でその画面をクライアント端末１２へ送信する。このとき、サーバ側リモート画面制御用アプリは、今回の画面生成の前にクライアント端末１２へ送信して表示させた画像との間で変更があった部分の画素が集まった領域、すなわち更新領域の画像を送信する。なお、以下では、一例として、更新部分の画像が矩形の画像で形成される場合を説明するが、開示の装置は更新部分の画像が矩形以外の形状で形成される場合にも適用できる。
【００１５】
このほか、サーバ側リモート画面制御用アプリは、フレーム間で動きが大きい部分のデータを動画向けの圧縮方式のデータに圧縮してクライアント端末１２へ送信する機能も有する。一例としては、サーバ側リモート画面制御用アプリは、アプリケーションにより実行された処理結果から生成した画面を複数の領域に分割し、分割した領域ごとに変更の頻度を検出する。このとき、サーバ側リモート画面制御用アプリは、変更の頻度がしきい値以上の領域、すなわち高頻度更新領域の属性情報をクライアント端末１２へ送信する。これとともに、サーバ側リモート画面制御用アプリは、高頻度更新領域の画像をＭＰＥＧ−２やＭＰＥＧ−４などのＭＰＥＧ（Moving  Picture  Experts  Group）方式のデータにエンコードした上でクライアント端末１２へ送信する。なお、ここでは、ＭＰＥＧ方式のデータへ圧縮する場合を例示したが、これに限定されない。例えば、動画向けの圧縮方式であれば任意の圧縮符号化方式、例えば、Ｍｏｔｉｏｎ−ＪＰＥＧ（Joint  Photographic  Experts  Group）などを採用できる。
【００１６】
クライアント端末１２は、ユーザが用いるコンピュータである。クライアント端末１２は、例えば、デスクトップ型ＰＣ（Personal  Computer）、ノート型ＰＣなどの情報処理装置であってもよい。また、クライアント端末１２は、例えば、タブレット端末、スマートフォン、ＰＤＡ（Personal  Digital  Assistant）などの携帯端末装置であってもよい。また、クライアント端末１２は、例えば、シンクライアント（thin  client）であってもよい。シンクライアントは、最低限の入出力装置しか持っていない端末装置である。例えば、シンクライアントは、ハードディスクを持たず、資源がサーバ側で一元管理される。なお、図１の例では、クライアント端末１２を１つとした場合を例示したが、開示のシステムはこれに限定されず、クライアント端末１２を任意の数とすることができる。
【００１７】
クライアント端末１２は、サーバ１１によるリモート画面制御サービスの提供を受ける。クライアント端末１２には、リモート画面制御サービスの提供を受けるクライアント向けのリモート画面制御用アプリケーションがインストールまたはプリインストールされる。なお、以下では、クライアント向けのリモート画面制御用のアプリケーションをクライアント側リモート画面制御用アプリと呼ぶ。
【００１８】
このクライアント側リモート画面制御用アプリは、マウスやキーボードなどの各種の入力デバイスを介して受け付けた操作情報をサーバ１１へ通知する機能を有する。一例としては、クライアント側リモート画面制御用アプリは、マウスの左右のクリックを始め、ダブルクリックやドラッグ、マウスの移動操作を介して得られたマウスカーソルの位置や移動量などを操作情報として通知する。他の一例としては、マウスホイールの回転量、キーボードのうち押下されたキーの種別なども操作情報として通知する。
【００１９】
さらに、クライアント側リモート画面制御用アプリは、サーバ１１から受信した画像を所定の表示部に表示させる機能を有する。一例として、クライアント側リモート画面制御用アプリは、サーバ１１から更新領域の画像を受信する。クライアント側リモート画面制御用アプリは、更新領域の画像を受信した場合、更新領域の画像を前回の画像から変更のあった位置に合わせて表示する。他の一例として、クライアント側リモート画面制御用アプリは、サーバ１１から高頻度更新領域の属性情報および動画向けの圧縮方式のデータを受信する。クライアント側リモート画面制御用アプリは、属性情報および動画向けの圧縮方式のデータを受信した場合、属性情報に含まれる位置に対応する表示画面上の領域に、動画向けの圧縮方式のデータをデコードした画像を合成して表示する。
【００２０】
システム１０は、仮想デスクトップ上でクライアントの業務に関するアプリケーションを実行させ、そのアプリケーションの処理結果をクライアント端末１２に表示させることより、様々なサービスを提供する。例えば、システム１０は、サーバ１１の仮想デスクトップ上で資料作成やメールなどの業務に関するアプリケーションを動作させて仮想デスクトップ上でリモートでの文書作成環境を提供する。このような業務アプリの他にも、システム１０は、例えば、サーバ１１の仮想デスクトップ上でＣＡＤ（Computer  Aided  Design）プログラムを動作させて仮想デスクトップ上でリモートでの設計環境を提供する。
【００２１】
［サーバの構成］
次に、実施例１に係るサーバ１１について説明する。図２は、実施例１に係るサーバの機能的な構成の一例を示す図である。図２に示すように、サーバ１１は、通信Ｉ／Ｆ（interface）部２０と、記憶部２１と、制御部２２とを有する。
【００２２】
通信Ｉ／Ｆ部２０は、他の装置との間で通信制御を行うインタフェースである。通信Ｉ／Ｆ部２０は、ネットワーク１３を介して他の装置と各種情報を送受信する。例えば、通信Ｉ／Ｆ部２０は、クライアント端末１２から仮想化されたデスクトップに対する操作情報を受信する。また、通信Ｉ／Ｆ部２０は、クライアント端末１２に表示させるデスクトップ画面に関するデータをクライアント端末１２に送信する。通信Ｉ／Ｆ部２０としては、ＬＡＮカードなどのネットワークインタフェースカードを採用できる。
【００２３】
記憶部２１は、各種のデータを記憶する記憶デバイスである。記憶部２１の一態様としては、フラッシュメモリなどの半導体メモリ素子、ハードディスク、光ディスクなどの記憶装置が挙げられる。なお、記憶部２１は、上記の種類の記憶装置に限定されるものではなく、ＲＡＭ（Random  Access  Memory)であってもよい。また、記憶部２１は、物理的に複数の記憶デバイスに分かれていてもよい。
【００２４】
記憶部２１は、制御部２２で実行されるＯＳ（Operating  System）や各種プログラムを記憶する。例えば、記憶部２１は、上述のサーバ側リモート画面制御用アプリのプログラムを記憶する。さらに、記憶部２１は、制御部２２で実行されるプログラムで用いられる各種データを記憶する。例えば、記憶部２１は、デスクトップ画面情報３０と、蓄積画像情報３１と、設定情報３２とを記憶する。
【００２５】
デスクトップ画面情報３０は、クライアント端末１２の仮想的なデスクトップ画面の画像が記憶されたデータである。デスクトップ画面情報３０には、クライアント端末１２の生成された最新のデスクトップ画面の画像データが記憶されており、デスクトップ画面に書き換えが発生すると随時更新される。例えば、デスクトップ画面情報３０は、クライアント端末１２から受け付けた操作や、ＯＳ、実行中のプログラムの処理によりデスクトップ画面に書き換えが発生すると更新される。
【００２６】
蓄積画像情報３１は、所定のタイミングにおけるデスクトップ画面の画像を記憶したデータである。例えば、蓄積画像情報３１には、クライアント端末１２へ送信された送信フレームの画像および送信フレームの間でのデスクトップの画像が所定の期間分記憶されている。
【００２７】
設定情報３２は、リモート画面制御サービスに関する各種の設定を記憶したデータである。例えば、設定情報３２には、デスクトップ画面の画像をクライアント端末１２へ送信するフレームレートや、高頻度更新領域の判定に用いるしきい値、送信フレームの間に取得すべきデスクトップ画面の取得枚数などが記憶されている。
【００２８】
なお、デスクトップ画面情報３０、蓄積画像情報３１および設定情報３２は、複数の記憶デバイスに分かれて記憶されていてもよい。例えば、デスクトップ画面情報３０がビデオメモリに記憶され、蓄積画像情報３１がメインメモリに記憶され、設定情報３２がハードディスクに記憶されていてもよい。
【００２９】
制御部２２は、サーバ１１を制御するデバイスである。制御部２２としては、ＣＰＵ（Central  Processing  Unit）、ＭＰＵ（Micro  Processing  Unit）等の電子回路や、ＡＳＩＣ（Application  Specific  Integrated  Circuit）、ＦＰＧＡ（Field  Programmable  Gate  Array）等の集積回路を採用できる。制御部２２は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、これらによって種々の処理を実行する。制御部２２は、各種のプログラムが動作しており、各種の処理部として機能する。例えば、制御部２２は、サーバ側リモート画面制御用アプリが動作する。制御部２２は、受付部４０と、画面制御部４１と、取得部４２と、検出部４３と、算出部４４と、識別部４５と、変換部４６と、送信部４７と、格納部４８とを有する。
【００３０】
受付部４０は、クライアント端末１２の仮想環境に対する操作を受け受ける処理部である。例えば、受付部４０は、仮想環境に対する操作として、クライアント端末１２から仮想的なデスクトップ画面に対する操作情報を受け付ける。
【００３１】
画面制御部４１は、仮想的なデスクトップ画面の更新を制御する処理部である。例えば、画面制御部４１は、受付部４０により操作情報を受け付けた場合、受け付けた操作情報に応じてデスクトップ画面情報３０を書き換える更新を行う。なお、デスクトップ画面情報３０の更新は、画面制御部４１が直接行ってもよい。また、デスクトップ画面情報３０の更新は、ＯＳやグラフィックドライバを介して行ってもよい。例えば、画面制御部４１は、受け付けた操作情報をＯＳに通知し、ＯＳが通知された操作情報に応じた描画要求をグラフィックドライバに行い、グラフィックドライバが描画要求に応じてデスクトップ画面情報３０を更新してもよい。
【００３２】
取得部４２は、所定のタイミングのデスクトップ画面の画像データを取得する処理部である。取得部４２は、所定のタイミングで記憶部２１に記憶されたデスクトップ画面情報３０を読み出して、デスクトップ画面の画像データを取得する。例えば、取得部４２は、設定情報３２に記憶された送信フレームレートに応じたクライアント端末１２への画像の送信タイミングでデスクトップ画面の画像データを取得する。また、取得部４２は、送信タイミングの間のタイミングでもデスクトップ画面の画像データを取得する。例えば、取得部４２は、設定情報３２に記憶された取得枚数が各送信フレームレートの間で得られるようにタイミングを求め、求めたタイミングでデスクトップ画面の画像データを取得する。例えば、取得枚数が２枚とされている場合、取得部４２は、送信タイミングの間の期間を均等に３等分するタイミングを求め、それぞれのタイミングでデスクトップ画面の画像データを取得する。よって、例えば、送信フレームレートが２４枚／秒であり、送信タイミングの間の取得枚数が２枚である場合、取得部４２は、７２枚／秒で周期的に画像を取得する。なお、取得部４２は、送信タイミングの間の期間でデスクトップ画面の画像データを取得するタイミングは、必ずしも均等なタイミングでなくもてよい。
【００３３】
検出部４３は、クライアント端末１２へ送信される画像間で変更された更新領域を検出する処理部である。検出部４３は、クライアント端末１２へ送信する画像を、当該画像より前に送信された画像と比較して更新領域を検出する。例えば、検出部４３は、送信タイミングとなって取得部４２によりデスクトップ画面の画像データが取得されると、蓄積画像情報３１から１つ前の送信された送信フレームの画像を読み出す。そして、検出部４３は、取得部４２により取得された画像データの画像と、蓄積画像情報３１から読み出した１つ前の送信フレームの画像とを比較する。そして、検出部４３は、１つ前の送信フレームの画像から変更があった部分の画素をつなぎ合わせた上で矩形に整形して、画像が変化した更新領域を特定する。検出部４３は、特定した更新領域の画像内の位置を示す位置情報を生成する。例えば、検出部４３は、画像内での矩形状の更新領域の左上の頂点など特定の頂点の座標と、更新領域の幅および高さを位置情報として生成する。
【００３４】
算出部４４は、画像の領域毎の変更頻度を算出する処理部である。例えば、算出部４４は、画像のメッシュ状に分割した分割領域毎に変更頻度を算出する。
【００３５】
図３は、画像の分割した分割領域を説明するための図である。図３に示すように、画像５０は、複数の分割領域５１に分割されている。図３の例では、画像５０が縦×横で５×８の分割領域５１にメッシュ状に分割されている。なお、画像を分割する縦×横の分割数は、一例であり、これに限定されるものではない。
【００３６】
算出部４４は、蓄積画像情報３１に蓄積された画像を比較し、検出部４３により検出された更新領域の分割領域毎に、分割領域の変更頻度として変更回数をカウントする。例えば、算出部４４は、蓄積画像情報３１に蓄積された所定の期間分の画像を順に読み出し、検出部４３で検出された更新領域を画像間で比較して、更新領域内での画素値が変化した画素を特定する。そして、算出部４４は、分割領域毎に、分割領域内に画素値が変化した画素が含まれる場合、分割領域の変更回数を１つ加算する。なお、算出部４４は、分割領域内に画素値が変化した画素が所定数以上含まれる場合に変更回数をカウントするものとしてもよい。
【００３７】
図４Ａおよび図４Ｂは、デスクトップ画面の変更頻度の判別要領を説明するための図である。図４Ａおよび図４Ｂは、画像５０を縦×横で５×８の分割領域５１に分けて変更回数をカウントした一例を示している。図４Ａの例は、更新領域５２の画素が変化している場合を示している。この場合、算出部４４は、更新領域５２が重複する網掛け部分の分割領域５１の変更回数を１とカウントする。図４Ｂの例は、さらに更新領域５３の画素が変化している場合を示している。更新領域５３の画素がさらに変化している場合、算出部４４は、更新領域５３が含まれる分割領域５１の変更回数を１つ加算する。この場合、網掛け部分の分割領域５１は、元の変更回数が１であるため、変更回数が１から２に加算される。なお、数字が図示されていない分割領域５１は、変更回数がゼロであるものとする。
【００３８】
識別部４５は、クライアント端末１２に表示されるデスクトップ画面のうち変更頻度の高い領域を識別する処理部である。例えば、識別部４５は、算出部４４による変更回数のカウントが終了した場合に、所定の期間における変更回数、すなわち、変更頻度が設定情報３２に記憶されたしきい値以上の分割領域を特定する。例えば、しきい値を「２」としたとき、図４Ｂの例では、網掛け部分の分割領域５１が特定される。かかるしきい値は、その値を高く設定するほどデスクトップ画面で動画が表示されている可能性が高い部分を後述の変換部４６によりエンコードできる。なお、上記の「しきい値」は、サーバ側リモート画面制御用アプリの開発者が段階的に設定した値をエンドユーザに選択させたり、また、エンドユーザが値を直接設定することができる。
【００３９】
識別部４５は、変更回数がしきい値以上の分割領域が特定された場合に、特定された分割領域のうち隣接する分割領域同士を連結して連結領域に補正する。一例としては、識別部４５は、辺を共有する分割領域同士、すなわち、画面内の上下左右で隣接する分割領域同士を連結して矩形の連結領域に補正する。
【００４０】
図５Ａ〜図５Ｃは、連結領域の補正要領を説明するための図である。図５Ａに示すように、２つの分割領域５１Ａ、５１Ｂが左右で隣り合う場合、識別部４５は、分割領域５１Ａ、５１Ｂを連結して矩形の連結領域５５に補正する。一方、図５Ｂに示すように、２つの分割領域５１Ａ、５１Ｂが斜めに隣り合う場合、識別部４５は、分割領域５１Ａ、５１Ｂを連結しない。なお、本実施例では、上下左右で隣接する分割領域同士を連結して連結領域に補正する場合について説明したが、これに限定されない。例えば、識別部４５は、距離などが所定の条件を満たす複数の分割領域がある場合、領域を補間する補間領域を導出した上で、変更回数がしきい値以上の分割領域と補間領域を足し合わせて、変更回数がしきい値以上の分割領域を内包する連結領域を求めてもよい。領域の距離とは、領域間の最短距離を指すものとする。また、例えば、識別部４５は、変更回数がしきい値以上の分割領域を含むように連結領域を求めてもよい。図５Ｃに示すように、２つの分割領域５１Ａ、５１Ｂが斜めに隣り合う場合、識別部４５は、分割領域５１Ａ、５１Ｂが内接する矩形の連結領域５６を求めてもよい。
【００４１】
図２に戻り、識別部４５は、連結領域を、変更の頻度の多い高頻度更新領域と識別する。なお、識別部４５は、連結領域が複数ある場合、それぞれを高頻度更新領域と識別してもよい。また、識別部４５は、連結領域が複数ある場合、所定サイズ以上の連結領域、または、最もサイズが大きい連結領域を高頻度更新領域と識別してもよい。また、識別部４５は、連結領域が複数ある場合、連結領域の間の領域を補間する補間領域を導出した上で、連結領域と補間領域を足し合わせた領域を高頻度更新領域と識別してもよい。
【００４２】
変換部４６は、デスクトップ画面の画像データの変換を行う処理部である。例えば、変換部４６は、送信タイミングで取得部４２により取得されたデスクトップ画面の画像データの高頻度更新領域の部分の画像を動画形式のデータに変換する。一例としては、変換部４６は、取得部４２により取得されたデスクトップ画面がストリーム（stream）を形成可能なフレーム数に到達した段階で高頻度更新領域のビットマップ画像をエンコードする。なお、エンコード方式の一態様としては、ＭＰＥＧ−２やＭＰＥＧ−４などのＭＰＥＧ方式やＭｏｔｉｏｎ−ＪＰＥＧ方式が挙げられる。
【００４３】
また、変換部４６は、送信タイミングで取得部４２により取得されたデスクトップ画面の画像データの更新領域部分の画像を静止画形式のデータに変換する。変換部４６は、高頻度更新領域が識別され、更新領域に高頻度更新領域以外の部分がある場合、デスクトップ画面の更新領域の高頻度更新領域以外の部分の画像を静止画形式のデータに変換する。例えば、変換部４６は、デスクトップ画面の更新領域のうち、高頻度更新領域の以外の部分の画像を複数の矩形部分に分割し、矩形部分毎の画像データに変換する。すなわち、変換部４６は、デスクトップ画面の更新領域に高頻度更新領域以外の部分がある場合、高頻度更新領域を除いた更新領域部分の画像を、複数の矩形部分の画像の組み合わせで表示するように分割する。変換部４６は、矩形部分の画像の配置関係を示す配置情報も生成する。本実施例では、更新領域に高頻度更新領域が含まれない場合でも、更新領域に配置する画像を対応させた配置情報を生成する。なお、変換部４６は、デスクトップ画面の更新領域の高頻度更新領域の部分をブランクまたは透過領域とした画像データに変換してもよい。
【００４４】
送信部４７は、クライアント端末１２へデータの送信を行う処理部である。例えば、送信部４７は、クライアント端末１２へのデスクトップ画面に関するデータの送信を行う処理部である。例えば、送信部４７は、更新領域の位置情報、デスクトップ画面の高頻度更新領域部分の画像の画像データおよび配置情報を送信する。また、送信部４７は、デスクトップ画面に高頻度更新領域が含まれる場合、高頻度更新領域の部分の動画データおよび画像内での高頻度更新領域の位置および大きさを示す属性情報をさらに送信する。これにより、クライアント端末１２では、位置情報に基づいて、画像内での更新領域の位置を求め、配置情報に基づいて画像を配置してデスクトップ画面を復元する。また、クライアント端末１２では、属性情報に基づいて、デスクトップ画面の高頻度更新領域の部分に、動画データの画像を合成して表示する。
【００４５】
格納部４８は、取得部４２により取得されたデスクトップ画面の画像データの格納を行う処理部である。例えば、格納部４８は、取得部４２により取得されたデスクトップ画面の画像データを蓄積画像情報３１に格納する。この際、格納部４８は、画像の取得時刻など時刻やシーケンス番号などの順番を示す情報、送信フレームであるか否かを示す情報を付加して蓄積画像情報３１に画像データを格納する。また、格納部４８は、所定の期間を経過した画像データを蓄積画像情報３１から削除する。これにより、蓄積画像情報３１には、直近の所定の期間の間のデスクトップ画面の画像データが蓄積される。画像データを蓄積させる期間は、高頻度更新領域を識別する精度と相関関係があり、期間を長くするほど高頻度更新領域の誤検出が低減される。なお、ここでは、一例として、１秒間にわたってデスクトップ画面の画像データを蓄積する場合を想定する。
【００４６】
［端末の構成］
次に、実施例１に係る端末について説明する。図６は、端末の機能的な構成の一例を示す図である。図６に示すように、クライアント端末１２は、通信Ｉ／Ｆ部７０と、表示部７１と、入力部７２と、制御部７３とを有する。
【００４７】
通信Ｉ／Ｆ部７０は、他の装置との間で通信制御を行うインタフェースである。通信Ｉ／Ｆ部７０は、ネットワーク１３を介して他の装置と各種情報を送受信する。例えば、通信Ｉ／Ｆ部７０は、サーバ１１からデスクトップ画面に関するデータを受信する。また、通信Ｉ／Ｆ部７０は、サーバ１１へデスクトップに対する操作情報を送信する。通信Ｉ／Ｆ部７０としては、ＬＡＮカードなどのネットワークインタフェースカードを採用できる。
【００４８】
表示部７１は、各種情報を表示する表示デバイスである。表示部７１としては、ＬＣＤ（Liquid  Crystal  Display）やＣＲＴ（Cathode  Ray  Tube）などの表示デバイスが挙げられる。表示部７１は、各種情報を表示する。例えば、表示部７１は、サーバから送信された仮想デスクトップのデスクトップ画面を表示する。
【００４９】
入力部７２は、各種の情報を入力する入力デバイスである。例えば、入力部７２としては、マウスやキーボードなどの入力デバイスが挙げられる。入力部７２は、ユーザからの操作入力を受付け、受付けた操作内容を示す操作情報を制御部７３に入力する。例えば、入力部７２は、デスクトップ画面に対する、マウスやキーボードなどによる各種の操作を受付ける。
【００５０】
制御部７３は、クライアント端末１２を制御するデバイスである。制御部７３としては、ＣＰＵ、ＭＰＵ等の電子回路や、ＡＳＩＣ、ＦＰＧＡ等の集積回路を採用できる。制御部７３は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、これらによって種々の処理を実行する。制御部７３は、各種のプログラムが動作しており、各種の処理部として機能する。例えば、制御部７３は、クライアント側リモート画面制御用アプリが動作する。制御部７３は、受信部７５と、表示制御部７６と、操作情報送信部７７とを有する。
【００５１】
受信部７５は、サーバ１１から仮想デスクトップに関するデータを受信する処理部である。例えば、受信部７５は、サーバ１１からデスクトップ画面に関するデータを受信する。例えば、受信部７５は、更新領域の位置情報、デスクトップ画面の高頻度更新領域部分の画面の画像データおよび配置情報を受信する。また、受信部７５は、デスクトップ画面に高頻度更新領域が含まれる場合、高頻度更新領域の部分の動画データおよび画像内での高頻度更新領域の位置および大きさを示す属性情報をさらに受信する。
【００５２】
表示制御部７６は、表示部７１の画像の表示を制御する処理部である。表示制御部７６は、受信部７５により受信された仮想デスクトップに関するデータに基づき、表示部７１にデスクトップ画面を表示させる。例えば、表示制御部７６は、位置情報に基づいて、画像内での更新領域の位置を求め、配置情報に基づいて画像を配置してデスクトップ画面を復元する。これにより、デスクトップ画面に高頻度更新領域が含まれる場合には、高頻度更新領域の部分を除いたデスクトップ画面が復元される。表示制御部７６は、動画データおよび属性情報の受信が無い場合、復元したデスクトップ画面の画像を表示部７１に表示させる。一方、表示制御部７６は、動画データおよび属性情報が受信される場合、復元したデスクトップ画面の画像に動画データの動画を合成して表示部７１に表示させる。例えば、表示制御部７６は、属性情報に基づいて、デスクトップ画面の高頻度更新領域の部分に、動画データの画像を合成し、動画を合成したデスクトップ画面の画像を表示部７１に表示させる。
【００５３】
操作情報送信部７７は、サーバ１１へ仮想デスクトップに対する操作情報を送信する処理部である。操作情報送信部７７は、入力部７２による操作情報をサーバ１１へ送信する。例えば、操作情報送信部７７は、マウスの左右のクリックを始め、ダブルクリックやドラッグ、マウスの移動操作を介して得られたマウスカーソルの移動量などを操作情報として送信する。他の一例としては、操作情報送信部７７は、マウスホイールの回転量、キーボードのうち押下されたキーの種別なども操作情報として送信する。
【００５４】
［システムの動作］
次に、実施例１に係るサーバ１１がデスクトップ画面の画像から高頻度更新領域を検出する動作の一例について説明する。図７は、実施例１に係る高頻度更新領域を検出する流れの一例を模式的に示した図である。図７の例では、送信タイミングで、更新領域の検出および高頻度更新領域の検出を続けて行う場合を示している。
【００５５】
図７には、時間の経過に沿って各時刻のデスクトップ画面の画像が示されている。サーバ１１は、送信フレームレートに応じた送信タイミングでデスクトップ画面情報３０からデスクトップ画面の画像データを取得し、仮想デスクトップに関するデータをクライアント端末１２へ送信する。時刻ｔ１、ｔ２、ｔ３の画像は、クライアント端末１２へ送信される送信フレームの画像である。
【００５６】
また、サーバ１１は、送信タイミングの間のタイミングでもデスクトップ画面情報３０からデスクトップ画面の画像データを取得する。図７の例では、送信タイミングの間で２つの画像を取得している。図７の例では、時刻ｔ１とｔ２の間の時刻ｔ１’、ｔ１’’、時刻ｔ２とｔ３の間の時刻ｔ２’、ｔ２’’、時刻ｔ３の後の時刻ｔ３’、ｔ３’’にそれぞれデスクトップ画面の画像データを取得している。この時刻ｔ１’、ｔ１’’、ｔ２’、ｔ２’’、ｔ３’、ｔ３’’の画像は、クライアント端末１２へ送信されない画像である。
【００５７】
図７の例では、サーバ１１は、各送信タイミングでクライアント端末１２へ送信される画像間で変更された更新領域を検出する。以下では、更新領域の検出するタイミングを更新領域検出タイミングと呼ぶ。図７の例では、時刻ｔ１、ｔ２、ｔ３が、更新領域検出タイミングである。例えば、サーバ１１は、送信される画像を、当該画像より１つ前に送信された画像と比較して更新領域を検出する。例えば、サーバ１１は、時刻ｔ２のタイミングでは、時刻ｔ２の画像と、時刻ｔ２より１つ前に送信された時刻ｔ１の画像を比較して更新領域を検出する。図７の例では、比較の結果、更新領域８０が検出されている。
【００５８】
また、図７の例では、サーバ１１は、更新領域８０を検出した後、続けて高頻度更新領域を検出する。以下では、高頻度更新領域を検出するタイミングを高頻度更新領域検出タイミングと呼ぶ。図７の例では、時刻ｔ１、ｔ２、ｔ３が、高頻度更新領域検出タイミングでもある。サーバ１１は、更新領域８０が検出された時刻ｔ２の画像から時系列の順に画像を遡って更新領域８０を順に比較して変更頻度を算出する。図７の例では、比較の結果、更新領域８０が検出された時刻ｔ２の画像から時刻ｔ１’’、時刻ｔ１’、時刻ｔ１と順に遡って画像の更新領域８０を比較して変更頻度を算出する。
【００５９】
サーバ１１が変更頻度を算出する動作についてより詳細に説明する。図８は、実施例１に係る変更頻度を算出する動作の流れの一例を模式的に示した図である。図８の例では、４つの画像８１〜８４を順に比較して変更頻度を算出している。例えば、画像８１は、図７の時刻ｔ２の画像に対応する。画像８２は、図７の時刻ｔ１’’の画像に対応する。画像８３は、図７の時刻ｔ１’の画像に対応する。画像８４は、図７の時刻ｔ１の画像に対応する。更新領域８０は、画像８１と画像８４との比較から検出されている。
【００６０】
サーバ１１は、時系列の順に画像８１〜８４を遡って更新領域を順に比較し、分割領域毎に、更新領域８０の変更回数をカウントする。図８の例では、画像８１と画像８２の更新領域８０を比較した結果、更新領域８０内の全ての分割領域８５で変更があるため、更新回数が１にカウントアップされている。また、画像８２と画像８３の更新領域８０を比較した結果、更新領域８０内の全ての分割領域８５で変更があるため、更新回数が２にカウントアップされている。また、画像８３と画像８４の更新領域８０を比較した結果、更新領域８０内の全ての分割領域８５で変更があるため、更新回数が３にカウントアップされている。
【００６１】
サーバ１１は、変更回数が設定情報３２に記憶されたしきい値以上の分割領域を特定する。例えば、しきい値を「３」とした場合、図８の例では、範囲８７に示した網掛け部分の分割領域８５が特定される。サーバ１１は、この範囲８７を高頻度更新領域と識別する。
【００６２】
次に、図７の例を用いて、高頻度更新領域の検出について推定される処理量および送信データ量を定量的に説明する。最初に、推定に用いるパラメータについて説明する。
【００６３】
例えば、デスクトップ画面の画像は、横方向の画素数をＷとし、縦方向の画素数をＨとする。また、更新領域は、横方向の画素数をＷupdateとし、縦方向の画素数をＨupdateとする。この場合、デスクトップ画面の画面全体の解像度および更新領域の大きさは以下のようなる。
【００６４】
画面全体の解像度：  Ｗ×Ｈ
更新領域の大きさ:  Ｗupdate×Ｈupdate
【００６５】
また、更新領域に対する静止画の圧縮率と、動画の圧縮率を以下とする。
【００６６】
静止画の圧縮率:  Ｉｍｇrate
動画の圧縮率  :  Ｍｏｖrate
【００６７】
また、１つの分割領域あたりの更新検出処理量と、１つの分割領域あたりの高頻度更新検出処理量を以下とする。
【００６８】
更新検出処理量      :  ＵM
高頻度更新検出処理量:  ＤM
【００６９】
また、デスクトップ画面の画像の横方向の分割領域数をＭWとし、デスクトップ画面の画像に縦方向の分割領域数をＭHとする。更新領域の横方向の分割領域数をＭWupdateとし、更新領域の縦方向の分割領域数をＭHupdateとする。この場合、デスクトップ画面の画像全体での分割領域数ＭWHおよび更新領域の分割領域数ＭWHupdateは以下のようなる。
【００７０】
画面全体:  ＭWH＝ＭW×ＭH
更新領域:  ＭWHupdate＝ＭHupdate×ＭWupdate
【００７１】
この場合、デスクトップ画面の画像全体に対する更新検出処理量は、以下の（１）となる。更新領域に対する更新検出処理量は、以下の（２）となる。
【００７２】
画面全体:  ＵM×ＭWH＝（ＵMＭWH）              （１）
更新領域:  ＵM×ＭWHupdate＝（ＵMＭWHupdate)        （２）
【００７３】
また、デスクトップ画面の画像全体に対する高頻度更新領域検出処理量は、以下の（３）となる。更新領域に対する高頻度更新領域検出処理量は、以下の（４）となる。
【００７４】
画面全体:  ＤM×ＭWH＝（ＤMＭWH）              （３）
更新領域:  ＤM×ＭWHupdate＝（ＤMＭWHupdate)        （４）
【００７５】
また、デスクトップ画面の画像全体の静止画での圧縮データ量Ｄａｔａimgは、以下の（５）となる。更新領域の静止画での圧縮データ量ＵｐｄａｔｅＤａｔａimgは、以下の（６）となる。更新領域の動画での圧縮データ量ＵｐｄａｔｅＤａｔａmovは、は、以下の（７）となる。
画面全体:  Ｄａｔａimg＝Ｗ×Ｈ×Ｉｍｇrate      （５）
更新領域静止画圧縮:  ＵｐｄａｔｅＤａｔａimg＝
Ｗupdate×Ｈupdate×Ｉｍｇrate    （６）
更新領域動画圧縮:  ＵｐｄａｔｅＤａｔａmov＝
Ｗupdate×Ｈupdate×Ｍｏｖrate    （７）
【００７６】
なお、本実施例の推定では、画面の取得にかかるキャプチャ時間は十分に小さいものとし、０とする。
【００７７】
この場合、図７の例の時刻ｔ２おいて、図８に示したような高頻度更新領域の検出を行う場合、更新領域８０の検出が１回行われる。また、画像間の更新領域８０を比較して画像の変化を検出する更新検出と、分割領域毎に変更回数をカウントする高頻度更新検出処理がそれぞれ３回行われる。よって、処理量は、上述の（１）、（２）、（４）から以下の（８）ようになる。
【００７８】
ＵMＭWH＋３（ＵMＭWHupdate＋ＤMＭWHupdate）    （８）
【００７９】
また、図７の例の時刻ｔ２において、更新領域８０を動画として送信される。このデータ量は、上述の（７）から以下のようになる。
【００８０】
ＵｐｄａｔｅＤａｔａmov
【００８１】
次に、比較のため、例えば、サーバ１１が、クライアント端末１２へ送信する送信フレームの画像のみで高頻度更新領域の検出を行う場合を説明する。図９は、送信フレームの画像のみで高頻度更新領域を検出する流れの一例を模式的に示した図である。図９の例は、送信フレームレートに応じた送信タイミングで仮想デスクトップのデスクトップ画面の画像データを取得してクライアントへ送信する場合を示している。この時刻ｔ１〜ｔ４の画像は、クライアントへ送信される送信フレームの画像である。図９の例は、各送信タイミングで、送信フレームの画像間の変更の頻度を判別し、変更の頻度がしきい値を超えた領域に対して動画の圧縮処理を行って送信するものとする。図９の例では、時刻ｔ１の画像の時点では、１つ前の画像と変更箇所がなく全ての分割領域の変更回数がゼロであり、時刻ｔ２〜ｔ４の画像でそれぞれ１つ前の画像との画面の変更回数がカウントするものとする。高頻度更新領域の判定に用いるしきい値は、図７、８と同様に「３」とする。この場合、時刻ｔ２、ｔ３の送信タイミングでは、それぞれ１つ前の画像と変更があっても画面の変更回数が３未満であるため、高頻度更新領域が識別されず、画像全体が静止画として送信される。時刻ｔ４の送信タイミングでは、画面の変更回数が３となるため、高頻度更新領域が識別され、高頻度更新領域の画像が動画として送信される。なお、高頻度更新領域は、図７の例と同じであるものとする。
【００８２】
この場合、時刻ｔ２、ｔ３では、デスクトップ画面の画像全体に対する更新検出処理が行われる。この処理量は、上述の（１）からＵMＭWHとなる。また、時刻ｔ２、ｔ３では、更新領域が静止画として送信される。このデータ量は、上述の（６）からＵｐｄａｔｅＤａｔａimgとなる。
【００８３】
一方、時刻ｔ４では、デスクトップ画面の画像全体に対する更新検出処理および高頻度更新領域検出処理が行われる。この処理量は、上述の（１）、（４）からＵMＭWH＋ＤMＭWHとなる。また、時刻ｔ４では、更新領域が動画として送信される。このデータ量は、上述の（７）からＵｐｄａｔｅＤａｔａmovとなる。
【００８４】
ここで、図７の例と図９の例の転送データ量を比較する。図７の例は、時刻ｔ１で高頻度更新領域が識別され、高頻度更新領域の画像が動画として送信される。この高頻度更新領域についての伝送データ量は、ＵｐｄａｔｅＤａｔａmovである。また、時刻ｔ３までの高頻度更新領域についての伝送データ量は、３×ＵｐｄａｔｅＤａｔａmovである。一方、図９の例は、時刻ｔ４で高頻度更新領域が識別され、高頻度更新領域の画像が動画として送信されるため、時刻ｔ４までの高頻度更新領域についての伝送データ量は、２×ＵｐｄａｔｅＤａｔａimg＋ＵｐｄａｔｅＤａｔａmovである。同じサイズの領域の画像を送信する場合、一般的に、動画の画像データの方が静止画の画像データよりデータ量が抑えられる。よって、図７の例の方が、伝送データ量を少なく抑えることができる。
【００８５】
また、図７の例と図９の例の処理量を比較する。図７の例では、時刻ｔ２において、高頻度更新領域が識別する際の処理量は、ＵMＭWH  ＋  ３（ＵMＭWHupdate  ＋ＤMＭWHupdate）である。一方、図９の例では、時刻ｔ４において、高頻度更新領域が識別する際の処理量は、ＵMＭWH  ＋ＤMＭWHである。
【００８６】
本実施例では、更新領域についてのみ画像間で比較して高頻度更領域を検出する。よって、画像内の更新領域のサイズが小さいほど処理量は、小さくなる。
【００８７】
どのようなケースで処理量が低くなるか一例を試算する。
ＵMＭWH  ＋ＤMＭWH  ＞  ＵMＭWH  ＋  ３（ＵMＭWHupdate  ＋ＤMＭWHupdate）
ＤMＭWH  ＞  ３（ＵMＭWHupdate  ＋ＤMＭWHupdate）
【００８８】
ここで、例えば、Ｗ＝１２００、Ｈ＝９００、分割領域のサイズが３０×３０画素、ＵＭ＝５、ＤＭ＝１０、ＭＷＨ＝４０×３０画素とする。この場合、更新領域の分割領域数ＭWHupdate≦２６７と求まる。例えば、動画領域が２０×１３メッシュ程度より小さい場合に処理量が減少する。
【００８９】
このように、本実施例に係るサーバ１１は、画像の更新領域を順に比較して変更頻度を算出する。これにより、サーバ１１は、更新領域の分割領域数が小さい場合、画像全体を順に比較して変更頻度を算出するより処理量を軽減できる。
【００９０】
次に、実施例１に係るサーバ１１がデスクトップ画面の画像から高頻度更新領域を検出する動作の別の例について説明する。図１０は、実施例１に係る高頻度更新領域を検出する流れの他の一例を模式的に示した図である。図１０の例では、送信タイミングで、更新領域の検出を行い、送信タイミングの間で高頻度更新領域の検出を行う場合を示している。
【００９１】
図１０には、時間の経過に沿って各時刻のデスクトップ画面の画像が示されている。サーバ１１は、送信フレームレートに応じた送信タイミングでデスクトップ画面情報３０からデスクトップ画面の画像データを取得し、仮想デスクトップに関するデータをクライアント端末１２へ送信する。時刻ｔ１、ｔ２、ｔ３の画像は、クライアント端末１２へ送信される送信フレームの画像である。
【００９２】
また、サーバ１１は、送信タイミングの間のタイミングでもデスクトップ画面情報３０からデスクトップ画面の画像データを取得する。図１０の例では、送信タイミングの間で２つの画像を取得している。図１０の例では、時刻ｔ１とｔ２の間の時刻ｔ１’、ｔ１’’、時刻ｔ２とｔ３の間の時刻ｔ２’、ｔ２’’、時刻ｔ３の後の時刻ｔ３’、ｔ３’’にそれぞれデスクトップ画面の画像データを取得している。この時刻ｔ１’、ｔ１’’、ｔ２’、ｔ２’’、ｔ３’、ｔ３’’の画像は、クライアント端末１２へ送信されない画像である。
【００９３】
図１０の例では、サーバ１１は、各送信タイミングを更新領域検出タイミングとして、クライアント端末１２へ送信される画像間で変更された更新領域を検出する。図１０の例では、時刻ｔ１、ｔ２、ｔ３が、更新領域検出タイミングである。例えば、サーバ１１は、送信される画像を、当該画像より１つ前に送信された画像と比較して更新領域を検出する。例えば、サーバ１１は、時刻ｔ２のタイミングでは、時刻ｔ２の画像と、時刻ｔ２より１つ前に送信された時刻ｔ１の画像を比較して更新領域を検出する。図１０の例では、比較の結果、更新領域８０が検出されている。
【００９４】
また、図１０の例では、サーバ１１は、送信タイミングの間で高頻度更新領域を検出する。図１０の例では、時刻ｔ１’’、ｔ２’’、ｔ３’’のタイミングで高頻度更新領域を検出する。図１０の例では、時刻ｔ１’’、ｔ２’’、ｔ３’’が、高頻度更新領域検出タイミングでもある。図１０の例では、比較の結果、時刻ｔ２’’の画像から時刻ｔ２’、時刻ｔ２、時刻ｔ１’’と順に遡って画像の更新領域８０を比較して変更頻度を算出する。
【００９５】
これにより、サーバ１１は、時刻ｔ１、ｔ２、ｔ３のタイミングで更新検出までしか行わないため、処理量がＵMＭWHとなる。また、サーバ１１は、時刻ｔ１’’、ｔ２’’、ｔ３’’のタイミングで高頻度更新領域の検出を行なうため、処理量が３（ＵMＭWHupdate＋ＤMＭWHupdate）となる。
【００９６】
時刻ｔ１、ｔ２、ｔ３は、送信タイミングであるため、クライアント端末１２へ仮想デスクトップに関するデータの送信が行われる。よって、サーバ１１は、高頻度更新領域の検出を別なタイミングで行うことにより、送信タイミングでの処理負荷を低下させることができる。
【００９７】
［処理の流れ］
次に、実施例１に係るサーバ１１が、画像の変更頻度を算出し、変更頻度に基づいて高頻度更新領域を識別する変更検出処理の流れについて説明する。図１１は、実施例１に係る変更検出処理の手順の一例を示すフローチャートである。この変更検出処理は、所定のタイミング、例えば、取得部４２が画像の取得を行うタイミングで実行される。
【００９８】
図１１に示すように、取得部４２は、記憶部２１に記憶されたデスクトップ画面情報３０を読み出して、デスクトップ画面の画像データを取得する（Ｓ１０）。検出部４３は、更新領域を検出する更新検出タイミングであるか否かを判定する（Ｓ１１）。図７および図１０の例では、時刻ｔ１、ｔ２、ｔ３が、更新領域検出タイミングである。更新検出タイミングではない場合（Ｓ１１否定）、処理は、後述のＳ１６へ移行する。一方、更新検出タイミングである場合（Ｓ１１肯定）、検出部４３は、蓄積画像情報３１から１つ前の送信された送信フレームの画像を読み出す（Ｓ１２）。検出部４３は、Ｓ１０にて取得した画像と、Ｓ１２にて読み出した画像を比較する（Ｓ１３）。そして、検出部４３は、１つ前の送信フレームの画像から変更があった部分の画素をつなぎ合わせた上で矩形に整形して、画像が変化した更新領域を検出する（Ｓ１４）。検出部４３は、検出した更新領域を図示しない作業用の内部メモリに格納して一時的に記憶させる（Ｓ１５）。
【００９９】
算出部４４は、高頻度更新領域を検出する高頻度更新領域検出タイミングであるか否かを判定する（Ｓ１６）。図７の例では、時刻ｔ１、ｔ２、ｔ３が、高頻度更新領域検出タイミングである。一方、図１０の例では、時刻ｔ１’’、ｔ２’’、ｔ３’’が、高頻度更新領域検出タイミングである。高頻度更新領域検出タイミングではない場合（Ｓ１６否定）、処理は、後述のＳ２５へ移行する。一方、高頻度更新検出タイミングである場合（Ｓ１６肯定）、算出部４４は、Ｓ１０にて取得した画像を比較元の画像とする（Ｓ１７）。算出部４４は、蓄積画像情報３１に蓄積された画像を直近のものから順に１つ読み出す（Ｓ１８）。算出部４４は、図示しない作業用の内部メモリに格納された内部メモリに格納された更新領域を読み出し、比較元の画像と、Ｓ１０にて読み出した画像の更新領域を比較する（Ｓ１９）。算出部４４は、分割領域毎に、分割領域内に画素値が変化した画素が含まれる場合、分割領域の変更回数を１つ加算する（Ｓ２０）。算出部４４は、蓄積画像情報３１に蓄積された画像の全ての読み出しが完了したか否かを判定する（Ｓ２１）。全ての読み出しが完了していない場合（Ｓ２１否定）、算出部４４は、Ｓ１８にて読み出した画像を比較元画像と更新して（Ｓ２２）、Ｓ１８へ移行する。これにより、蓄積画像情報３１に蓄積された画像の比較が順に行われる。
【０１００】
一方、全ての読み出しが完了した場合（Ｓ２１肯定）、識別部４５は、変更頻度が設定情報３２に記憶されたしきい値以上の分割領域があるか否か判定する（Ｓ２３）。変更頻度がしきい値以上の分割領域がない場合（Ｓ２３否定）、処理は、後述のＳ２５へ移行する。一方、変更頻度がしきい値以上の分割領域がある場合（Ｓ２３肯定）、識別部４５は、変更回数がしきい値以上の分割領域を補正して高頻度更新領域を特定する（Ｓ２４）。
【０１０１】
格納部４８は、Ｓ１０にて取得したデスクトップ画面の画像データを蓄積画像情報３１に格納する（Ｓ２５）。
【０１０２】
変換部４６は、更新領域を検出する更新検出タイミングであるか否かを判定する（Ｓ２６）。本実施例では、画像の送信タイミングである場合、更新検出タイミングであると判定する。更新検出タイミングではない場合（Ｓ２６否定）、処理を終了する。一方、更新検出タイミングである場合（Ｓ２６肯定）、変換部４６は、Ｓ１０にて取得したデスクトップ画面の画像の更新領域のうち、高頻度更新領域を動画の領域とし、その他の領域を静止画の領域として、画像データを変換する（Ｓ２７）。送信部４７は、変換された画像データをクライアント端末１２へ送信し（Ｓ２８）、処理を終了する。
【０１０３】
［効果］
上述してきたように、本実施例に係るサーバ１１は、生成された画像をクライアント端末１２に対して送信する。サーバ１１は、画像の送信タイミングとは異なるタイミングにおいて生成された画像を少なくとも１つ取得する。例えば、サーバ１１は、画像の送信タイミングの間に生成された画像を少なくとも１つ取得する。サーバ１１は、送信済みの画像および取得された画像から画像を構成する複数の分割領域毎の変更頻度を算出する。これにより、サーバ１１は、変更の頻度の多い領域を速やかに検出できる。
【０１０４】
また、本実施例に係るサーバ１１は、送信される画像を、当該画像より前に送信された画像と比較して、前記複数の分割領域のうち変更があった領域を更新領域として検出する。サーバ１１は、更新領域が検出された画像から時系列の順に遡って、送信済みの画像および取得された画像の更新領域を順に比較して変更頻度を算出する。これにより、サーバ１１は、更新領域のサイズが小さい場合、画像全体を順に比較して変更頻度を算出するより処理量を軽減できる。
【０１０５】
また、本実施例に係るサーバ１１は、更新領域のうち、変更頻度が所定のしきい値以上の領域を動画の領域とし、その他の領域を静止画の領域として、画像データを変換する。これにより、サーバ１１は、クライアント端末１２へ伝送するデータ量を減らすことができる。
【実施例２】
【０１０６】
次に、実施例２について説明する。実施例２では、変更頻度がしきい値となった分割領域については比較を終了する場合について説明する。実施例２に係るサーバ１１の構成は、図２と同様であるため、主に異なる部分について説明する。
【０１０７】
算出部４４は、画像の更新領域を順に比較して分割領域ごと、変更頻度として変更回数をカウントし、変更頻度が設定情報３２に記憶されたしきい値となった分割領域については比較を終了する。
【０１０８】
［システムの動作］
次に、実施例２に係るサーバ１１が変更頻度を算出する動作についてより詳細に説明する。図１２は、実施例２に係る変更頻度を算出する動作の流れの一例を模式的に示した図である。図１２の例では、図７と同様に、４つの画像８１〜８４を順に比較して変更頻度を算出している。なお、しきい値は「２」とする。
【０１０９】
算出部４４は、時系列の順に画像８１〜８４を遡って更新領域を順に比較し、分割領域毎に、更新領域８０の変更回数をカウントし、変更回数がしきい値となった分割領域については比較を終了する。図１２の例では、画像８１と画像８２の更新領域８０を比較した結果、更新領域８０内の全ての分割領域で変更があるため、更新回数が１にカウントアップされている。また、画像８２と画像８３の更新領域８０を比較した結果、更新領域８０内の全ての分割領域８５で変更があるため、更新回数が２にカウントアップされている。ここで、更新回数が２としきい値となっている。このため、画像８３と画像８４の更新領域８０を比較は、省略されている。
【０１１０】
［効果］
上述してきたように、本実施例に係るサーバ１１は、画像を分割した分割領域ごとに変更頻度として変更回数をカウントし、変更回数が所定のしきい値となった分割領域については比較を終了する。これにより、サーバ１１は、変更頻度が所定のしきい値となった分割領域について比較が行われなくなるため、処理量を減少させることができる。
【実施例３】
【０１１１】
次に、実施例３について説明する。実施例３では、利用可能な通信帯域に応じて設定情報３２を更新する場合について説明する。
【０１１２】
［サーバの構成］
実施例３に係るサーバ１１について説明する。図１３は、実施例３に係るサーバの機能的な構成の一例を示す図である。なお、図２に示した実施例１に係るサーバと同一部分については同一の符号を付し、主に異なる部分について説明する。
【０１１３】
図１３に示す、サーバ１１の記憶部２１は、帯域別設定テーブル９０が記憶されている。帯域別設定テーブル９０には、利用可能な通信帯域毎に、画像を取得する取得頻度としきい値が記憶されており、利用可能な通信帯域が低いほど、取得頻度が大きく、しきい値が小さく設定されている。
【０１１４】
図１４は、速度別設定情報テーブルの一例を示す図である。図１４に示すように、帯域別設定テーブル９０は、「利用可能帯域」、「取得頻度」、「しきい値」の各項目を有する。利用可能帯域の項目は、クライアント端末１２との通信で利用可能な通信帯域を記憶する領域である。取得頻度の項目は、取得部４２が送信タイミングの間でデスクトップ画面の画像データを取得する頻度を記憶する領域である。しきい値は、変更頻度の高い領域と識別するしきい値を記憶する領域である。
【０１１５】
図１４の例では、帯域Ａは、取得頻度Ｃ、しきい値Ｅが設定されている。帯域Ｂは、取得頻度Ｄ、しきい値Ｆが設定されている。この図１４の例では、帯域Ａ＞帯域Ｂ、取得頻度Ｃ＜取得頻度Ｄ、しきい値Ｅ＞しきい値Ｆであるものとする。すなわち、利用可能な通信帯域が低いほど、取得頻度およびしきい値が大きく設定されている。
【０１１６】
図１３に戻り、サーバ１１の制御部２２は、特定部９１と、更新部９２とをさらに有する。
【０１１７】
特定部９１は、クライアント端末１２との通信で利用可能な通信帯域を特定する。例えば、特定部９１は、所定のタイミングでクライアント端末１２へ所定量のデータを送信し、所定量のデータの送信にかかった送信時間を計測する。そして、特定部９１は、送信したデータ量を送信時間で除算して利用可能な通信帯域を特定する。この場合、利用可能な通信帯域とは、通信速度を意味する。なお、利用可能な通信帯域の特定手法は、一例であり、他の手法を用いてもよい。
【０１１８】
更新部９２は、設定情報３２を更新する処理部である。例えば、更新部９２は、特定部９１により特定された利用可能な通信帯域が低いほど、しきい値を低くする更新する。また、更新部９２は、利用可能な通信帯域が低いほど、取得部４２が送信される画像間で画像を取得する取得頻度を多くする。例えば、更新部９２は、帯域別設定テーブル９０から、特定部９１により特定された利用可能な通信帯域に対応する取得頻度、および、しきい値を読み出す。そして、更新部９２は、読み出した取得頻度、および、しきい値で、設定情報３２に記憶された取得頻度、および、しきい値を更新する。これにより、設定情報３２は、更新された取得頻度でデスクトップ画面情報３０からデスクトップ画面の画像データを取得する。また、識別部４５は、変更回数が更新されたしきい値以上の分割領域から高頻度更新領域を識別する。
【０１１９】
［システムの動作］
次に、実施例３に係るサーバ１１がデスクトップ画面の画像から高頻度更新領域を検出する動作の一例について説明する。図１５は、高頻度更新領域を検出する流れの一例を模式的に示した図である。図１５の例では、送信タイミングで、更新領域の検出および高頻度更新領域の検出を続けて行う場合を示している。なお、しきい値は、「３」とする。また、送信される画像間で画像を取得する取得頻度は、「２」とする。
【０１２０】
図１５には、時間の経過に沿って各時刻のデスクトップ画面の画像が示されている。サーバ１１は、送信フレームレートに応じた送信タイミングでデスクトップ画面情報３０からデスクトップ画面の画像データを取得し、仮想デスクトップに関するデータをクライアント端末１２へ送信する。時刻ｔ１、ｔ２、ｔ３の画像は、クライアント端末１２へ送信される送信フレームの画像である。
【０１２１】
また、サーバ１１は、送信タイミングの間のタイミングでもデスクトップ画面情報３０からデスクトップ画面の画像データを取得する。図１５の例では、送信タイミングの間で２つの画像を取得している。図１５の例では、時刻ｔ１とｔ２の間の時刻ｔ１’、ｔ１’’、時刻ｔ２とｔ３の間の時刻ｔ２’、ｔ２’’、時刻ｔ３の後の時刻ｔ３’、ｔ３’’にそれぞれデスクトップ画面の画像データを取得している。この時刻ｔ１’、ｔ１’’、ｔ２’、ｔ２’’、ｔ３’、ｔ３’’の画像は、クライアント端末１２へ送信されない画像である。
【０１２２】
ここで、図１５の例では、時刻ｔ１’’からデスクトップ画面に動画が表示されて更新頻度の多い領域が発生したものとする。図１５の例では、時刻ｔ１、ｔ２、ｔ３が、更新領域検出タイミングである。例えば、サーバ１１は、送信される画像を、当該画像より１つ前に送信された画像と比較して更新領域を検出する。この場合、時刻ｔ２の送信タイミングでは、それぞれ１つ前の画像と変更があっても画面の変更回数が３未満であるため、高頻度更新領域が識別されず、画像全体が静止画として送信される。そして、時刻ｔ３の送信タイミングで高頻度更新領域が識別される。サーバ１１とクライアント端末１２間の利用可能な通信帯域が狭い場合に、高頻度更新領域が静止画として伝送されるとデータ量が多くなり、クライアント端末１２での画像の表示に遅延が発生して操作性が悪化する場合がある。
【０１２３】
そこで、サーバ１１は、利用可能な通信帯域が低いほど、しきい値を低く更新する。また、サーバ１１は、利用可能な通信帯域が低いほど、取得部４２が送信される画像間で画像を取得する取得頻度を多くする。これにより、サーバ１１は、利用可能な通信帯域が低い場合に、変更の頻度の多い領域を速やかに検出できる。
【０１２４】
図１６は、高頻度更新領域を検出する流れの一例を模式的に示した図である。図１６の例は、図１５において、しきい値を「２」に更新し、取得頻度を「３」に更新していた場合を示している。図１６の例では、送信タイミングの間で３つの画像を取得している。図１６の例では、時刻ｔ１とｔ２の間の時刻ｔ１’、ｔ１’’  、ｔ１’’’、時刻ｔ２とｔ３の間の時刻ｔ２’、ｔ２’’  、ｔ２’’’、時刻ｔ３の後の時刻ｔ３’、ｔ３’’、ｔ３’’’にそれぞれデスクトップ画面の画像データを取得している。この時刻ｔ１’、ｔ１’’、ｔ１’’’、ｔ２’、ｔ２’’  、ｔ２’’’、ｔ３’、ｔ３’’、ｔ３’’’の画像は、クライアント端末１２へ送信されない画像である。図１６の例では、時刻ｔ１’’からデスクトップ画面に動画が表示されて更新頻度の多い領域が発生したものとする。図１６の例では、時刻ｔ１、ｔ２、ｔ３が、更新領域検出タイミングである。例えば、サーバ１１は、送信される画像を、当該画像より１つ前に送信された画像と比較して更新領域を検出する。この場合、時刻ｔ２の送信タイミングで、それぞれ１つ前の画像との変更の変更回数が２となり、更新されたしきい値以上となるため、高頻度更新領域が識別されて、高頻度更新領域が動画として送信される。
【０１２５】
［処理の流れ］
次に、実施例３に係るサーバ１１が、利用可能な通信帯域に応じて設定情報３２を更新する設定更新処理の流れについて説明する。図１７は、実施例３に係る設定更新処理の手順の一例を示すフローチャートである。この設定更新処理は、所定のタイミング、例えば、日時などの所定時間毎のタイミング、あるいは管理者から指示されたタイミングで実行される。
【０１２６】
図１７に示すように、特定部９１は、クライアント端末１２との通信で利用可能な通信帯域を特定する（Ｓ５０）。更新部９２は、帯域別設定テーブル９０から、特定部９１により特定された利用可能な通信帯域に対応する取得頻度およびしきい値を読み出す（Ｓ５１）。そして、更新部９２は、読み出した取得頻度およびしきい値で、設定情報３２に記憶された取得頻度およびしきい値を更新し（Ｓ５２）、処理を終了する。
【０１２７】
［効果］
上述してきたように、本実施例に係るサーバ１１は、クライアント端末１２との通信で利用可能な通信帯域を特定する。そして、サーバ１１は、特定された利用可能な通信帯域が低いほど、しきい値を低くする更新、および、画像間で画像を取得する取得頻度を多くする更新の何れか一方または両方を行う。これにより、サーバ１１は、利用可能な通信帯域が低い場合に、変更の頻度の多い領域を速やかに検出できる。
【実施例４】
【０１２８】
さて、これまで開示の装置に関する実施例について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下では、本発明に含まれる他の実施例を説明する。
【０１２９】
例えば、上記の実施例では、サーバ１１がクライアント端末１２の仮想的なデスクトップ画面の画像を記憶する場合について説明したが、開示の装置はこれに限定されない。例えば、仮想的なデスクトップ画面の画像は、他のサーバに記憶され、他のサーバから取得してもよい。
【０１３０】
また、上記の実施例では、クライアント端末１２へ仮想的なデスクトップ画面の画像を送信する場合について説明したが、開示の装置はこれに限定されない。例えば、クライアント端末１２へ送信する画像は、仮想的なデスクトップ画面の画像に限定されるものではない。
【０１３１】
また、上記の実施例では、送信される画像を、１つ前の送信フレームの画像と比較して更新領域を検出する場合について説明したが、開示の装置はこれに限定されない。例えば、２つ以上前の所定の送信フレームの画像と比較して更新領域を検出してもよい。
【０１３２】
また、上記の実施例では、所定の期間を経過した画像データを蓄積画像情報３１から削除することにより、蓄積画像情報３１に所定の期間分の画像を蓄積し、蓄積された全ての画像を読み出して比較する場合について説明したが、開示の装置はこれに限定されない。例えば、所定の期間分以上の画像データを蓄積画像情報３１に蓄積し、直近所定の期間分の画像を読み出して比較してもよい。また、蓄積画像情報３１に所定個の画像を蓄積し、蓄積された全ての画像を読み出して比較してもよい。
【０１３３】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的状態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、サーバ１１の受付部４０と、画面制御部４１、取得部４２、検出部４３、算出部４４、識別部４５、変換部４６、送信部４７、格納部４８、特定部９１および更新部９２の各処理部が適宜統合されてもよい。また、各処理部の処理が適宜複数の処理部の処理に分離されてもよい。また、各装置は各処理部の一部または全部を適宜統合してもよい。さらに、各処理部にて行なわれる各処理機能は、その全部または任意の一部が、ＣＰＵおよび当該ＣＰＵにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【０１３４】
［変更検出プログラム］
また、上記の実施例で説明した各種の処理は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータシステムで実行することによって実現することもできる。そこで、以下では、上記の実施例と同様の機能を有するプログラムを実行するコンピュータシステムの一例を説明する。図１８は、変更検出プログラムを実行するコンピュータを示す図である。
【０１３５】
図１８に示すように、コンピュータ３００は、ＣＰＵ（Central  Processing  Unit）３１０、ＨＤＤ（Hard  Disk  Drive）３２０、ＲＡＭ（Random  Access  Memory）３４０を有する。これら３００〜３４０の各部は、バス４００を介して接続される。
【０１３６】
ＨＤＤ３２０には上記のサーバ１１の各処理部と同様の機能を発揮する変更検出プログラム３２０ａが予め記憶される。なお、変更検出プログラム３２０ａについては、適宜分離しても良い。
【０１３７】
また、ＨＤＤ３２０は、各種情報を記憶する。例えば、ＨＤＤ３２０は、ＯＳや処理に用いる各種データを記憶する。
【０１３８】
そして、ＣＰＵ３１０が、変更検出プログラム３２０ａをＨＤＤ３２０から読み出して実行することで、実施例の各処理部と同様の動作を実行する。すなわち、変更検出プログラム３２０ａは、クライアント端末１２の各処理部およびサーバ１１の各処理部と同様の動作を実行する。
【０１３９】
なお、上記した変更検出プログラム３２０ａについては、必ずしも最初からＨＤＤ３２０に記憶させることを要しない。
【０１４０】
例えば、コンピュータ３００に挿入されるフレキシブルディスク（ＦＤ）、ＣＤ−ＲＯＭ、ＤＶＤディスク、光磁気ディスク、ＩＣカードなどの「可搬用の物理媒体」にプログラムを記憶させておく。そして、コンピュータ３００がこれらからプログラムを読み出して実行するようにしてもよい。
【０１４１】
さらには、公衆回線、インターネット、ＬＡＮ、ＷＡＮなどを介してコンピュータ３００に接続される「他のコンピュータ（またはサーバ）」などにプログラムを記憶させておく。そして、コンピュータ３００がこれらからプログラムを読み出して実行するようにしてもよい。
【符号の説明】
【０１４２】
１０  システム
１１  サーバ
１２  クライアント端末
２１  記憶部
２２  制御部
３０  デスクトップ画面情報
３１  蓄積画像情報
３２  設定情報
４０  受付部
４１  画面制御部
４２  取得部
４３  検出部
４４  算出部
４５  識別部
４６  変換部
４７  送信部
４８  格納部
９１  特定部
９２  更新部
【図１】
2015191630.tif 000003
【図２】
2015191630.tif 000004
【図３】
2015191630.tif 000005
【図４Ａ】
2015191630.tif 000006
【図４Ｂ】
2015191630.tif 000007
【図５Ａ】
2015191630.tif 000008
【図５Ｂ】
2015191630.tif 000009
【図５Ｃ】
2015191630.tif 000010
【図６】
2015191630.tif 000011
【図７】
2015191630.tif 000012
【図８】
2015191630.tif 000013
【図９】
2015191630.tif 000014
【図１０】
2015191630.tif 000015
【図１１】
2015191630.tif 000016
【図１２】
2015191630.tif 000017
【図１３】
2015191630.tif 000018
【図１４】
2015191630.tif 000019
【図１５】
2015191630.tif 000020
【図１６】
2015191630.tif 000021
【図１７】
2015191630.tif 000022
【図１８】
2015191630.tif 000023