(57)【要約】【課題】クライアント端末に表示させる画面を示す動画像データを生成する際の処理負荷を軽減する。【解決手段】操作判定部１ａは、端末装置２で検知された入力操作の内容を示す操作情報を受信し、操作情報が示す入力操作が画面のスクロール操作であると判定した場合、操作情報に基づいてスクロール方向を判定する。画像送信部１ｃは、端末装置２に表示させる表示画面１２であって、操作情報が示す入力操作に応じた処理の結果を含む表示画面１２を示す圧縮動画像データを生成する際に、スクロール方向に基づいて動きベクトルの探索方向を制限する。そして、画像送信部１ｃは、生成された圧縮動画像データを端末装置２に送信する。【選択図】図１
2018191143.tif 000002
【特許請求の範囲】
【請求項１】
端末装置で検知された入力操作の内容を示す操作情報を受信し、前記操作情報が示す入力操作が画面のスクロール操作であると判定した場合、前記操作情報に基づいてスクロール方向を判定する操作判定部と、
前記端末装置に表示させる表示画面であって、前記操作情報が示す入力操作に応じた処理の結果を含む前記表示画面を示す圧縮動画像データを生成する際に、前記スクロール方向に基づいて動きベクトルの探索方向を制限し、前記圧縮動画像データを前記端末装置に送信する画像送信部と、
を有する情報処理装置。
【請求項２】
前記操作判定部は、前記表示画面に第１の領域を設定するとともに、前記操作情報の受信前に前記端末装置に表示させる第１の表示画面に第２の領域を設定し、前記第２の領域を前記スクロール方向に沿って移動させながら前記第１の領域と類似する前記第２の領域を検出することでスクロール量を判定し、
前記画像送信部は、前記スクロール量に基づいて前記動きベクトルの探索範囲を制限する、
請求項１記載の情報処理装置。
【請求項３】
前記操作判定部は、前記第１の領域から特定の特徴を有する第３の領域を除外した画像と、前記第２の領域から前記第３の領域に対応する第４の領域を除外した画像との類似性を判定する、
請求項２記載の情報処理装置。
【請求項４】
前記画像送信部は、算出された前記動きベクトルを前記操作情報とともに記憶部に登録し、
前記操作判定部は、前記操作情報の受信後に前記端末装置で検知された入力操作の内容を示す他の操作情報を受信し、前記他の操作情報が示す入力操作が画面のスクロール操作であると判定した場合、前記記憶部を参照し、前記記憶部に登録された前記操作情報が前記他の操作情報と一致する場合には、前記他の操作情報が示すスクロール操作における前記スクロール方向の判定処理の実行をキャンセルして前記記憶部から前記動きベクトルを読み出し、
前記画像送信部は、前記他の操作情報が示す入力操作に応じた処理の結果を含む第２の表示画面を示す他の圧縮動画像データを、前記動きベクトルに基づいて生成する、
請求項１乃至３のいずれか１項に記載の情報処理装置。
【請求項５】
前記画像送信部は、前記表示画面を分割した複数の分割領域のうち１つの分割領域についての第１の動きベクトルを、前記スクロール方向に基づいて探索方法を制限した状態で算出し、前記複数の分割領域のうち残りの分割領域それぞれについての第２の動きベクトルとして、前記第１の動きベクトルを算出する、
請求項１乃至４のいずれか１項に記載の情報処理装置。
【請求項６】
前記画像送信部は、前記表示画面の領域から更新頻度が高い第５の領域を検出し、前記第５の領域について前記圧縮動画像データを生成し、前記表示画面における前記第５の領域とは別の第６の領域については静止画像データを生成して前記端末装置に送信する、
請求項１乃至５のいずれか１項に記載の情報処理装置。
【請求項７】
コンピュータが、
端末装置で検知された入力操作の内容を示す操作情報を受信し、
前記操作情報が示す入力操作が画面のスクロール操作であると判定した場合、前記操作情報に基づいてスクロール方向を判定し、
前記端末装置に表示させる表示画面であって、前記操作情報が示す入力操作に応じた処理の結果を含む前記表示画面を示す圧縮動画像データを生成する際に、前記スクロール方向に基づいて動きベクトルの探索方向を制限し、
前記圧縮動画像データを前記端末装置に送信する、
画像データ生成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置および画像データ生成方法に関する。
【背景技術】
【０００２】
クライアント端末で実行する処理を最小限にとどめ、ほとんどの処理をサーバで実行させるようにするシンクライアント技術が知られている。特に、サーバでの処理結果を示す画面を画像データとしてクライアント端末に転送する「画面転送型」と呼ばれるシンクライアント技術が、広く利用されている。
【０００３】
例えば、処理結果を示す画面の領域のうち、更新頻度が高い領域の画像を圧縮動画像データとしてクライアント端末に送信し、その他の領域の画像を静止画像データとしてクライアント端末に送信する技術が提案されている。この技術によれば、サーバからクライアント端末への送信データ量を減少させて、画像データの伝送遅延量を少なくすることができ、その結果、クライアント端末での操作レスポンスを改善できる。
【０００４】
また、関連技術の例として、クライアント装置の表示装置でフェード効果を実現するために、フェード開始タイミングにおいて、フェード効果を有する表示を実現させる画像データを送信せずに、表示領域やフェード開始タイミング、フェード期間を指示する情報を送信するようにしたサーバ装置が提案されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１１−２３８０１４号公報
【特許文献２】特開２００７−２４１７３６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ところで、上記のように、処理結果を示す画面の少なくとも一部の画像を圧縮動画像データとしてクライアント端末に送信する場合には、圧縮動画像データを生成するための高い処理負荷がサーバ装置にかかるという問題がある。
【０００７】
１つの側面では、本発明は、クライアント端末に表示させる画面を示す動画像データを生成する際の処理負荷を軽減することが可能な情報処理装置および画像データ生成方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
１つの案では、次のような情報処理装置が提供される。この情報処理装置は、操作判定部と画像送信部とを有する。操作判定部は、端末装置で検知された入力操作の内容を示す操作情報を受信し、操作情報が示す入力操作が画面のスクロール操作であると判定した場合、操作情報に基づいてスクロール方向を判定する。画像送信部は、端末装置に表示させる表示画面であって、操作情報が示す入力操作に応じた処理の結果を含む表示画面を示す圧縮動画像データを生成する際に、スクロール方向に基づいて動きベクトルの探索方向を制限し、圧縮動画像データを端末装置に送信する。
【０００９】
また、１つの案では、上記の情報処理装置と同様の処理をコンピュータが実行する画像データ生成方法が提供される。
【発明の効果】
【００１０】
１つの側面では、クライアント端末に表示させる画面を示す動画像データを生成する際の処理負荷を軽減できる。
【図面の簡単な説明】
【００１１】
【図１】第１の実施の形態に係る画像転送システムの構成例および処理例を示す。
【図２】第２の実施の形態に係るシンクライアントシステムの構成例を示す図である。
【図３】サーバ装置のハードウェア構成例を示す図である。
【図４】サーバ装置が備える処理機能の構成例を示すブロック図である。
【図５】更新回数の判別処理を説明するための図である。
【図６】高頻度更新領域の整形処理について説明するための図である。
【図７】スクロールバーの操作によって垂直方向のスクロール操作が行われた場合の例を示す図である。
【図８】スクロールバーの操作によって水平方向のスクロール操作が行われた場合の例を示す図である。
【図９】上方向へのスクロール操作が行われた場合のスクロール量判定処理について説明するための図である。
【図１０】右方向へのスクロール操作が行われた場合のスクロール量判定処理について説明するための図である。
【図１１】動きベクトル記憶部のデータ構成例を示す図である。
【図１２】エンコーダの内部構成例を示す図である。
【図１３】マクロブロックごとの動きベクトルの算出方法について説明するための図である。
【図１４】更新領域の識別処理手順の例を示すフローチャートである。
【図１５】スクロール方向およびスクロール量の判定処理手順の例を示すフローチャートである。
【図１６】操作内容の判定処理手順の例を示すフローチャート（その１）である。
【図１７】操作内容の判定処理手順の例を示すフローチャート（その２）である。
【図１８】類似領域の探索処理手順の例を示すフローチャートである。
【図１９】動画像データの送信処理手順の例を示すフローチャートである。
【図２０】クライアント端末が備える処理機能の構成例を示すブロック図である。
【図２１】デスクトップ画面の一例を示す図である。
【発明を実施するための形態】
【００１２】
以下、本発明の実施の形態について図面を参照して説明する。
〔第１の実施の形態〕
図１は、第１の実施の形態に係る画像転送システムの構成例および処理例を示す。図１に示す画像転送システムは、情報処理装置１と端末装置２とを有する。この画像転送システムでは、端末装置２は、ユーザによる操作に応じて、その操作の内容を示す操作情報を情報処理装置１に送信する。情報処理装置１は、受信した操作情報に応じた処理の結果を含む画面を、画像データとして端末装置２に送信する。これにより、画像転送システムは、実際には端末装置２以外の機器で実行された処理結果や保持されるデータを端末装置２に表示させつつも、あたかも端末装置２が主体となって処理を実行したり、データを保持しているかのように振る舞う。
【００１３】
情報処理装置１は、操作判定部１ａ、処理実行部１ｂおよび画像送信部１ｃを有する。操作判定部１ａ、処理実行部１ｂおよび画像送信部１ｃの処理は、例えば、情報処理装置１が備える図示しないプロセッサが、所定のプログラムを実行することによって実現される。なお、処理実行部１ｂは、情報処理装置１の外部に接続された別の装置（ただし、端末装置２を除く）が備えていてもよい。
【００１４】
操作判定部１ａは、端末装置２で検知された入力操作の内容を示す操作情報を受信する（ステップＳ１）。操作判定部１ａは、操作情報に基づいて入力操作の内容を認識する。ここで、操作判定部１ａは、操作情報が示す入力操作が画面のスクロール操作であると判定した場合、この操作情報に基づいてスクロール方向を判定する（ステップＳ２）。なお、この例では、端末装置２で表示画面１１が表示された状態で、表示画面１１を上方向にスクロールさせる操作が行われたものとする。
【００１５】
処理実行部１ｂは、操作情報が示す入力操作に応じた処理を実行し、その処理結果を含む表示画面１２を生成する（ステップＳ３）。画像送信部１ｃは、表示画面１２を示す圧縮動画像データを生成する（ステップＳ４）。このとき、画像送信部１ｃは、ステップＳ２で判定されたスクロール方向に基づいて、動きベクトルの探索方向を制限する。
【００１６】
例えば、ステップＳ４の処理では、画像送信部１ｃは、表示画面１２上のある領域１２ａに対応する動きベクトルを算出するために、この領域１２ａが表示画面１１上のどの領域と類似するかを探索する。このとき、画像送信部１ｃは、表示画面１１に領域１２ａに対応する探索領域１１ａを設定し、探索領域１１ａの位置を移動させながら、領域１２ａと探索領域１１ａとの類似度を算出する。このような処理において、画像送信部１ｃは、探索領域１１ａの移動方向を、判定されたスクロール方向に沿った方向に制限する。
【００１７】
表示画面１１に対するスクロール操作が行われた場合、表示画面１１内に存在する画像は同じ方向、すなわちスクロール方向に移動する。このことから、画像送信部１ｃは、探索領域１１ａの移動方向をスクロール方向に沿った方向に制限しても、動きベクトルを正しく算出することができる。
【００１８】
画像送信部１ｃは、生成された圧縮動画像データを端末装置２に送信する（ステップＳ５）。これにより、端末装置２には、送信された圧縮動画像データに基づく表示画面１２が表示される。
【００１９】
以上の第１の実施の形態によれば、情報処理装置１は、圧縮動画像データの生成の際に、判定されたスクロール方向に基づいて動きベクトルの探索方向を制限する。これにより、圧縮動画像データの生成処理負荷を軽減でき、また、その生成処理にかかる時間を短縮することができる。
【００２０】
〔第２の実施の形態〕
図２は、第２の実施の形態に係るシンクライアントシステムの構成例を示す図である。図２に示すシンクライアントシステムは、サーバ装置１００とクライアント端末２００とを有する。サーバ装置１００とクライアント端末２００とは、ネットワーク３００を介して互いに接続されている。
【００２１】
このシンクライアントシステムでは、クライアント端末２００は、ユーザによる操作に応じて、その操作の内容を示す操作情報をサーバ装置１００に送信する。サーバ装置１００は、受信した操作情報に応じた処理を実行し、その実行結果を示す画面を画像データとしてクライアント端末２００に転送する。これによりシンクライアントシステムは、実際にはサーバ装置１００が実行した処理結果や保持するデータをクライアント端末２００に表示させつつも、あたかもクライアント端末２００が主体となって処理を実行したり、データを保持しているかのように振る舞う。
【００２２】
サーバ装置１００は、クライアント端末２００からの操作情報を受け付け、その操作情報に応じた処理結果を示す画面の画像データをクライアント端末２００に転送する画面転送制御アプリケーションのプログラムを実行する。また、サーバ装置１００は、操作情報に応じた処理を実行するアプリケーションとして、例えば、Ｗｅｂ閲覧アプリケーション、電子メールアプリケーション、文書作成アプリケーションなどのプログラムを実行する。画面転送制御アプリケーションは、Ｗｅｂブラウザの画面、電子メールの作成、閲覧、送受信を行うための画面、文書作成のための画面など、操作情報に応じた処理を実行するアプリケーションの画面が組み込まれたデスクトップ画面を生成する。そして、画面転送制御アプリケーションは、生成されたデスクトップ画面の画像データをクライアント端末２００に転送する。
【００２３】
一方、クライアント端末２００は、サーバ装置１００から受信した画像データに基づくデスクトップ画面を表示装置に表示させ、操作に応じて操作情報をサーバ装置１００に送信する画面表示制御アプリケーションのプログラムを実行する。表示されるデスクトップ画面には、Ｗｅｂ閲覧アプリケーション、電子メールアプリケーション、文書作成アプリケーションなどのユーザが利用するアプリケーションの画面が組み込まれている。このため、クライアント端末２００でこれらのアプリケーションのプログラムが実行されていないにもかかわらず、ユーザはクライアント端末２００を操作することでこれらのアプリケーションを利用できる。
【００２４】
なお、図２では、サーバ装置１００に１台のクライアント端末２００が接続されている例を示したが、サーバ装置１００には複数のクライアント端末２００を接続することができる。
【００２５】
ところで、サーバ装置１００からクライアント端末２００に転送される画像データの容量は、画像解像度の拡大や、Ｗｅｂサイト上の様々な映像データの活用により、増加する傾向にある。転送される画像データの容量が大きい場合、ネットワーク３００の伝送帯域や機器間の距離によって、大きな伝送遅延が発生する場合がある。伝送遅延が大きい場合、サーバ装置１００でデスクトップ画面が生成されてから、そのデスクトップ画面がクライアント端末２００で表示されるまでの遅延時間が増大する。その結果、クライアント端末２００で何らかの操作が行われてから、その操作に応じた処理結果を含むデスクトップ画面がクライアント端末２００に表示されるまでの時間が増大するので、操作レスポンスが悪化し、ユーザの使い勝手が悪くなる。
【００２６】
本実施の形態では、２つの手法により、転送される画像データの容量が削減される。第１に、デスクトップ画面の画像データは基本的に静止画像データとして送信されるが、あるフレームの静止画像データとしては、直前のフレームとの差分領域の静止画像データのみがクライアント端末２００に送信される。第２に、デスクトップ画面のうち、更新頻度が高い領域については、動画像圧縮方式で符号化された動画像データとしてクライアント端末２００に送信される。
【００２７】
図３は、サーバ装置のハードウェア構成例を示す図である。サーバ装置１００は、例えば、図３に示すようなコンピュータとして実現される。
サーバ装置１００は、プロセッサ１０１によって装置全体が制御されている。プロセッサ１０１は、マルチプロセッサであってもよい。プロセッサ１０１は、例えばＣＰＵ（Central Processing Unit）、ＭＰＵ（Micro Processing Unit）、ＤＳＰ（Digital Signal Processor）、ＡＳＩＣ（Application Specific Integrated Circuit）、ＧＰＵ（Graphics Processing Unit）、またはＰＬＤ（Programmable Logic Device）である。また、プロセッサ１０１は、ＣＰＵ、ＭＰＵ、ＤＳＰ、ＡＳＩＣ、ＧＰＵ、ＰＬＤのうちの２以上の要素の組み合わせであってもよい。
【００２８】
プロセッサ１０１には、バス１０８を介して、ＲＡＭ（Random Access Memory）１０２と複数の周辺機器が接続されている。
ＲＡＭ１０２は、サーバ装置１００の主記憶装置として使用される。ＲＡＭ１０２には、プロセッサ１０１に実行させるＯＳ（Operating System）プログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、ＲＡＭ１０２には、プロセッサ１０１による処理に必要な各種データが格納される。
【００２９】
バス１０８に接続されている周辺機器としては、ＨＤＤ（Hard Disk Drive）１０３、グラフィック処理装置１０４、入力インタフェース１０５、読み取り装置１０６および通信インタフェース１０７がある。
【００３０】
ＨＤＤ１０３は、サーバ装置１００の補助記憶装置として使用される。ＨＤＤ１０３には、ＯＳプログラム、アプリケーションプログラム、および各種データが格納される。なお、補助記憶装置としては、ＳＳＤ（Solid State Drive）などの他の種類の不揮発性記憶装置を使用することもできる。
【００３１】
グラフィック処理装置１０４には、表示装置１０４ａが接続されている。グラフィック処理装置１０４は、プロセッサ１０１からの命令にしたがって、画像を表示装置１０４ａの画面に表示させる。表示装置１０４ａとしては、液晶ディスプレイや有機ＥＬ（ElectroLuminescence）ディスプレイなどがある。
【００３２】
入力インタフェース１０５には、入力装置１０５ａが接続されている。入力インタフェース１０５は、入力装置１０５ａから出力される信号をプロセッサ１０１に送信する。入力装置１０５ａとしては、キーボードやポインティングデバイスなどがある。ポインティングデバイスとしては、マウス、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
【００３３】
読み取り装置１０６には、可搬型記録媒体１０６ａが脱着される。読み取り装置１０６は、可搬型記録媒体１０６ａに記録されたデータを読み取ってプロセッサ１０１に送信する。可搬型記録媒体１０６ａとしては、光ディスク、光磁気ディスク、半導体メモリなどがある。
【００３４】
通信インタフェース１０７は、ネットワーク３００に接続し、クライアント端末２００などの他の機器との間でデータを送受信する。
以上のようなハードウェア構成によって、サーバ装置１００の処理機能を実現することができる。なお、クライアント端末２００も、図３に示すようなコンピュータとして実現可能である。
【００３５】
図４は、サーバ装置が備える処理機能の構成例を示すブロック図である。サーバ装置１００は、ＯＳ１１１、アプリケーション１１２、グラフィックドライバ１１３、フレームバッファ１１４および画面転送制御部１２０を有する。なお、アプリケーション１１２およびグラフィックドライバ１１３は、図１の処理実行部１ｂの一例であり、画面転送制御部１２０は、図１の操作判定部１ａおよび画像送信部１ｃの一例である。
【００３６】
ＯＳ１１１の処理は、プロセッサ１０１がＯＳプログラムを実行することで実現される。ＯＳ１１１は、例えば、画面転送制御部１２０を介して取得した操作情報に基づいて、アプリケーション１１２の起動が指示されたことを検出すると、アプリケーション１１２を起動させる。また、ＯＳ１１１は、操作情報に基づいて、アプリケーション１１２の操作画面、いわゆるウィンドウ上でコマンドを実行する操作を検出すると、そのコマンドの実行をアプリケーション１１２に指示する。
【００３７】
アプリケーション１１２の処理は、プロセッサ１０１がアプリケーションプログラムを実行することで実現される。アプリケーション１１２は、ＯＳ１１１からの指示に応じて起動する。また、アプリケーション１１２は、ＯＳ１１１からコマンドの実行指示に応じて、コマンドに応じた処理を実行し、その処理結果を示すウィンドウの描画をグラフィックドライバ１１３に要求する。
【００３８】
グラフィックドライバ１１３の処理は、プロセッサ１０１が画像表示のためのドライバプログラムを実行することで実現される。このドライバプログラムは、ＯＳプログラムの一部であってもよい。グラフィックドライバ１１３は、フレームバッファ１１４に対するデスクトップ画面の描画処理を実行する処理部である。例えば、グラフィックドライバ１１３は、アプリケーション１１２からの要求に応じて、アプリケーション１１２の処理結果を示すウィンドウを、アプリケーション１１２から指定されたフレームバッファ１１４上の描画位置へビットマップ形式で描画する。また、グラフィックドライバ１１３は、ＯＳ１１１からの描画要求を受け付けることもできる。例えば、グラフィックドライバ１１３は、マウスカーソルの画像をＯＳ１１１から指示されたフレームバッファ１１４上の描画位置へビットマップ形式で描画する。
【００３９】
画面転送制御部１２０は、クライアント端末２００から送信された操作情報を取得して、ＯＳ１１１に通知する。また、画面転送制御部１２０は、フレームバッファ１１４に描画されたデスクトップ画面をクライアント端末２００に表示させるための画像データを生成して、クライアント端末２００に送信する。画面転送制御部１２０は、デスクトップ画面の領域から前フレームから更新された更新領域を判別し、更新領域のうち、低頻度更新領域の画像データを静止画像データとしてクライアント端末２００に送信し、高頻度更新領域の画像データを圧縮された動画像データとしてクライアント端末２００に送信する。
【００４０】
以下、画面転送制御部１２０の内部構成について説明する。
画面転送制御部１２０は、操作情報取得部１２１、更新領域判別部１２２、更新頻度判別部１２３、高頻度更新領域識別部１２４、静止画像送信部１２５、スクロール判定部１２６、動きベクトル格納処理部１２７、類似領域探索部１２８、エンコーダ１２９および動画像送信部１３０を有する。これらの各ブロックの処理は、例えば、プロセッサ１０１が所定のアプリケーションプログラムを実行することで実現される。また、動きベクトル格納処理部１２７には、動きベクトル記憶部１２７ａが接続されている。動きベクトル記憶部１２７ａは、例えば、ＲＡＭ１０２の記憶領域として実現される。
【００４１】
なお、操作情報取得部１２１、スクロール判定部１２６および類似領域探索部１２８は、図１の操作判定部１ａの一例であり、エンコーダ１２９および動画像送信部１３０は、図１の画像送信部１ｃの一例である。
【００４２】
操作情報取得部１２１は、クライアント端末２００から送信された操作情報を取得し、ＯＳ１１１およびスクロール判定部１２６に操作情報を通知する。操作情報には、例えば、操作種別が含められる。操作種別としては、例えば、キーボードの左カーソルキー、右カーソルキー、上カーソルキー、下カーソルキー、ページアップキー、ページダウンキーのいずれかの押下、マウスの左クリックまたは右クリック、マウスホイールを回す操作、タッチデバイスに対するタッチ操作などがある。
【００４３】
また、例えば、操作種別がマウスホイールを回す操作の場合、操作情報には、マウスホイールの回転方向と、フレーム周期当たりの回転量（ノッチ数）とが含められる。また、操作種別がページアップキーまたはページダウンキーの押下の場合、操作情報には、フレーム周期におけるキーの押下回数または押下時間が含められる。
【００４４】
なお、フレーム周期とは、デスクトップ画面がフレームバッファ１１４に描画される周期であり、例えば、３３分の１秒である。
更新領域判別部１２２は、フレームバッファ１１４に描画されたデスクトップ画面（現フレーム）のビットマップデータと、図示しない内部メモリに格納された前フレームのビットマップデータとを比較する。更新領域判別部１２２は、比較結果に基づいて、デスクトップ画面を格子状に分割した分割領域の中から、フレーム間で画素値の差分がある更新領域を判別する。更新領域判別部１２２は、更新領域の位置を更新頻度判別部１２３に通知する。
【００４５】
更新頻度判別部１２３は、更新領域判別部１２２から通知される更新領域の位置に基づいて、デスクトップ画面の分割領域ごとに所定期間における更新回数を判別する。高頻度更新領域識別部１２４は、更新頻度判別部１２３によって判別された更新回数に基づいて、デスクトップ画面の中から所定期間において更新頻度の高い高頻度更新領域を識別する。以下、この期間を、高頻度更新領域を設定し直すための「再設定期間」と呼ぶ。
【００４６】
ここで、図５は、更新回数の判別処理を説明するための図である。図５では、デスクトップ画面１５１がそれぞれＭ画素×Ｎ画素の分割領域に分割されている。なお、ＭとＮは異なる値であってもよいし、同じ値であってもよい。更新頻度判別部１２３は、分割領域ごとに更新回数が設定された更新回数マップ１２３ａを用いて、分割領域ごとに更新回数を判別する。更新頻度判別部１２３は、更新領域判別部１２２から更新領域の位置が通知されると、更新回数マップ１２３ａの更新回数のうち、通知された更新領域に対応する更新回数をカウントアップする。
【００４７】
高頻度更新領域識別部１２４は、現フレームにおける更新領域の位置の通知を更新頻度判別部１２３から受ける。これとともに、高頻度更新領域識別部１２４は、前回高頻度更新領域を識別してから上記の再設定期間が経過すると、更新回数マップ１２３ａを参照し、設定されている分割領域ごとの更新回数を再設定期間における更新回数として取得する。
【００４８】
高頻度更新領域識別部１２４は、更新回数が所定の閾値を超える分割領域を、高頻度更新領域と識別する。高頻度更新領域識別部１２４は、さらに、識別された高頻度更新領域を次のように整形する。高頻度更新領域識別部１２４は、複数の高頻度更新領域が隣接している場合、それらの高頻度更新領域をすべて含む矩形状の領域を、１つの高頻度更新領域に設定し直す。高頻度更新領域識別部１２４は、高頻度更新領域の識別処理を完了すると、更新回数マップ１２３ａの更新回数をすべて０にリセットする。
【００４９】
なお、図５に示すデスクトップ画面１５１では、再設定期間においてマウスカーソルが表示された領域と、動画像コンテンツが表示された領域とが例示されている。例えば、デスクトップ画面１５１の右寄りの位置にＷｅｂブラウザが表示されており、Ｗｅｂブラウザのウィンドウの中に動画像コンテンツが表示されている。
【００５０】
図６は、高頻度更新領域の整形処理について説明するための図である。図６上側に示すデスクトップ画面１５１において、太い実線で囲まれた領域内の分割領域が、高頻度更新領域識別部１２４によって更新回数マップ１２３ａに基づいて高頻度更新領域として識別された分割領域であるとする。この場合、高頻度更新領域識別部１２４は、さらに、隣接する複数の高頻度更新領域を含む領域１５１ａに対して、さらに隣接する分割領域１５１ｂ〜１５１ｄを連結した領域全体を、図６下側に示す１つの高頻度更新領域１５１ｅに設定し直す。
【００５１】
以下、図４に戻って説明を続ける。
高頻度更新領域識別部１２４は、識別した高頻度更新領域のビットマップデータを、高頻度更新領域の位置を示す属性情報とともに類似領域探索部１２８に通知する。また、高頻度更新領域識別部１２４は、更新頻度判別部１２３から通知された現フレームにおける更新領域のうち、高頻度更新領域に含まれない領域を低頻度更新領域と識別する。高頻度更新領域識別部１２４は、識別した低頻度更新領域のビットマップデータを、低頻度更新領域の位置を示す属性情報とともに静止画像送信部１２５に通知する。
【００５２】
ここで、低頻度更新領域は、フレームごとに更新されるのに対して、高頻度更新領域は、再設定期間が経過するまで同じ位置に設定されたままになる。なお、属性情報は、例えば、矩形状の高頻度更新領域または低頻度更新領域における左上の座標と、横方向および縦方向のそれぞれの画素数とを含む。
【００５３】
静止画像送信部１２５は、高頻度更新領域識別部１２４から通知された低頻度更新領域の画像を示すビットマップデータを、属性情報とともにクライアント端末２００に送信する。なお、静止画像送信部１２５によるデータ送信プロトコルとしては、例えば、ＶＮＣ（Virtual Network Computing）のＲＦＢ（Remote FrameBuffer）プロトコルが用いられる。また、低頻度更新領域の画像データは、例えば、ＪＰＥＧ（Joint Photographic Experts Group）などの所定の静止画像圧縮符号化方式を用いてビットマップデータを圧縮した画像データとして送信されてもよい。
【００５４】
スクロール判定部１２６は、操作情報取得部１２１から通知された操作情報を解析し、クライアント端末２００で行われた操作がスクロール操作かを判定する。スクロール操作と判定される操作種別としては、例えば、マウスホイールを回す操作、マウスのドラッグ、タッチデバイスに対するドラッグ、ページアップキーまたはページダウンキーの押下などがある。ただし、操作情報取得部１２１は、マウスのドラッグおよびタッチデバイスに対するドラッグについては、その操作が行われたことと、ドラッグ方向およびドラッグ量とを、操作情報取得部１２１から通知された操作情報を解析することによって検出する。
【００５５】
スクロール判定部１２６は、スクロール操作が行われたかの判定結果を動きベクトル格納処理部１２７に通知する。また、スクロール判定部１２６は、スクロール操作が行われたと判定した場合、操作情報も動きベクトル格納処理部１２７に通知する。ドラッグが検出された場合、動きベクトル格納処理部１２７は、操作情報取得部１２１から通知された操作情報の解析結果に基づいて、ドラッグ操作の内容を示す操作情報を新たに生成して動きベクトル格納処理部１２７に通知する。
【００５６】
動きベクトル格納処理部１２７および類似領域探索部１２８は、スクロール操作が行われたと判定された場合に、エンコーダ１２９での動きベクトルの算出に利用可能な情報をエンコーダ１２９に通知する。エンコーダ１２９は、通知された情報を用いることで、フレーム間における類似画像領域の探索方向や探索範囲を限定するなど、動きベクトルの算出処理を簡略化することができる。
【００５７】
動きベクトル格納処理部１２７は、スクロール操作が行われたと判定された場合に、次のような処理を実行する。動きベクトル格納処理部１２７は、動きベクトル記憶部１２７ａにおいて、スクロール判定部１２６から通知された操作情報に対して動きベクトルが対応付けて登録されているかを判定する。
【００５８】
動きベクトルが登録されていない場合、動きベクトル格納処理部１２７は、操作情報を類似領域探索部１２８に通知して、スクロール方向とスクロール量の判定処理の実行を指示する。この場合、類似領域探索部１２８によってスクロール方向とスクロール量が判定されて、エンコーダ１２９に通知される。
【００５９】
一方、動きベクトルが登録されている場合、動きベクトル格納処理部１２７は、登録されている動きベクトルを読み出してエンコーダ１２９に通知する。この場合、類似領域探索部１２８によるスクロール方向とスクロール量の判定処理の実行をスキップさせて、処理負荷を軽減させることができる。
【００６０】
ここではまず、類似領域探索部１２８の処理について説明する。
一般的に業務用途で使用されるＷｅｂ閲覧やメール送受信、文書作成、表計算といったアプリケーションの表示領域では、Ｗｅｂページなどに埋め込まれている動画像コンテンツを除き、高頻度更新領域となる領域ではスクロール操作が行われているケースが多い。スクロール操作では、スクロール方向（画面の移動方向）は、基本的に垂直方向か水平方向に限定される。また、スクロール操作はキーボードやマウスの操作情報に応じて行われるため、操作情報の内容とスクロール方向やスクロール量（画面の移動量）との間に相関性がある。
【００６１】
そこで、本実施の形態では、このようなスクロール操作が行われた際の特徴を用いて、動画像の圧縮符号化の際の動きベクトルの算出処理負荷を軽減する。すなわち、類似領域探索部１２８は、操作情報に基づいてスクロール方向とスクロール量とを判定し、エンコーダ１２９に通知する。エンコーダ１２９は、スクロール方向とスクロール量に基づいて、フレーム間における類似画像領域の探索方向や探索範囲を限定するなど、動きベクトルの算出処理を簡略化することができる。
【００６２】
図７は、スクロールバーの操作によって垂直方向のスクロール操作が行われた場合の例を示す図である。また、図８は、スクロールバーの操作によって水平方向のスクロール操作が行われた場合の例を示す図である。
【００６３】
図７では、前フレーム１５２において、マウスポインタ１５２ａがスクロールバー１５２ｂの上に配置される。この状態から、下方向に対してマウスのドラッグが行われ、この操作に伴ってスクロールバー１５２ｂが下方向に移動する。図７に示す現フレーム１５３では、前フレーム１５２と比較してスクロールバー１５２ｂの位置が下方向に移動している。一方、現フレーム１５３内のアプリケーション領域１５３ａに表示された画像は、前フレーム１５２と比較して上方向に移動する。すなわち、上方向にスクロールされる。
【００６４】
また、図８では、前フレーム１５４において、マウスポインタ１５４ａがスクロールバー１５４ｂの上に配置される。この状態から、左方向に対してマウスのドラッグが行われ、この操作に伴ってスクロールバー１５４ｂが左方向に移動する。図８に示す現フレーム１５５では、前フレーム１５４と比較してスクロールバー１５４ｂの位置が左方向に移動している。一方、現フレーム１５５内のアプリケーション領域１５５ａに表示された画像は、前フレーム１５４と比較して右方向に移動する。すなわち、右方向にスクロールされる。
【００６５】
このように、スクロールバーに対するマウスのドラッグが行われた場合、スクロール方向はドラッグ方向とは逆の方向となる。したがって、類似領域探索部１２８は、マウスのドラッグを示す操作情報を動きベクトル格納処理部１２７から取得した場合、操作情報に含まれるドラッグ方向とは逆の方向を、スクロール方向と判定する。
【００６６】
また、この他に例えば、類似領域探索部１２８は、マウスホイールを回したことを示す操作情報を取得した場合、操作情報に含まれるマウスホイールの回転方向を、スクロール方向と判定する。また、類似領域探索部１２８は、ページアップキーの押下を示す操作情報を取得した場合、スクロール方向を上方向と判定し、ページダウンキーの押下を示す操作情報を取得した場合、スクロール方向を下方向と判定する。さらに、類似領域探索部１２８は、カーソルキーの押下を示す操作情報を取得した場合、押下されたカーソルキーに対応する方向をスクロール方向と判定する。
【００６７】
次に、図９、図１０を用いて、スクロール量の判定処理について説明する。
図９は、上方向へのスクロール操作が行われた場合のスクロール量判定処理について説明するための図である。また、図１０は、右方向へのスクロール操作が行われた場合のスクロール量判定処理について説明するための図である。
【００６８】
類似領域探索部１２８は、現フレームと前フレームの同じ領域に探索領域を初期設定する。探索領域の初期位置は、判定されたスクロール方向に応じて設定される。類似領域探索部１２８は、前フレームにおける探索領域を判定されたスクロール方向とは逆の方向に移動させながら、現フレームの探索領域の画素値と前フレームの探索領域の画素値とを比較して、探索領域間の類似度を算出する。そして、類似領域探索部１２８は、類似度が所定の閾値を超えた場合、その時点での現フレームの探索領域と前フレームの探索領域との位置の差分値を、スクロール量と決定する。
【００６９】
例えば、スクロール方向が上方向と判定された場合、類似領域探索部１２８は、図９に示すように類似領域を探索する。類似領域探索部１２８は、垂直方向に対して所定の幅を有し、垂直方向より水平方向の幅が大きい探索領域１５６ａ，１５７ａを、それぞれ前フレーム１５６、現フレーム１５７に設定する。初期状態では、探索領域１５６ａ，１５７ａは、前フレーム１５６、現フレーム１５７におけるできるだけ上側の同じ位置に設定される。
【００７０】
類似領域探索部１２８は、前フレーム１５６の探索領域１５６ａをスクロール方向とは逆の下方向に所定画素ずつスライドさせながら、探索領域１５６ａと探索領域１５７ａとの間の類似度を算出する。そして、類似領域探索部１２８は、類似度が所定の閾値を超えた場合、その時点での探索領域１５６ａと探索領域１５７ａと間の垂直方向の位置の差分を示す画素値を、スクロール量と決定する。
【００７１】
一方、図示しないが、スクロール方向が下方向と判定された場合、類似領域探索部１２８は、初期状態において、探索領域１５６ａ，１５７ａを、前フレーム１５６、現フレーム１５７におけるできるだけ下側の同じ位置に設定する。そして、類似領域探索部１２８は、前フレーム１５６の探索領域１５６ａを上方向に所定画素ずつスライドさせながら、探索領域１５６ａと探索領域１５７ａとの間の類似度を算出する。
【００７２】
また、例えば、スクロール方向が右方向と判定された場合、類似領域探索部１２８は、図１０に示すように類似領域を探索する。類似領域探索部１２８は、水平方向に対して所定の幅を有し、水平方向より垂直方向の幅が大きい探索領域１５８ａ，１５９ａを、それぞれ前フレーム１５８、現フレーム１５９に設定する。初期状態では、探索領域１５８ａ，１５９ａは、前フレーム１５８、現フレーム１５９におけるできるだけ右側の同じ位置に設定される。
【００７３】
類似領域探索部１２８は、前フレーム１５８の探索領域１５８ａをスクロール方向とは逆の左方向に所定画素ずつスライドさせながら、探索領域１５８ａと探索領域１５９ａとの間の類似度を算出する。そして、類似領域探索部１２８は、類似度が所定の閾値を超えた場合、その時点での探索領域１５８ａと探索領域１５９ａと間の水平方向の位置の差分を示す画素値を、スクロール量と決定する。
【００７４】
一方、図示しないが、スクロール方向が左方向と判定された場合、類似領域探索部１２８は、初期状態において、探索領域１５８ａ，１５９ａを、前フレーム１５８、現フレーム１５９におけるできるだけ左側の同じ位置に設定する。そして、類似領域探索部１２８は、前フレーム１５８の探索領域１５８ａを右方向に所定画素ずつスライドさせながら、探索領域１５８ａと探索領域１５９ａとの間の類似度を算出する。
【００７５】
なお、類似領域探索部１２８は、前フレームの探索領域を可動域全体にわたってスライドさせても類似度が所定の閾値を超えなかった場合には、スクロール方向とスクロール量の判定に失敗したと判断し、その旨をエンコーダ１２９に通知する。この場合、エンコーダ１２９は、類似領域探索部１２８や動きベクトル格納処理部１２７からの情報を利用せずに、動きベクトルの算出処理を実行する。
【００７６】
また、マウスホイールを回す操作やカーソルキーを押下する操作が行われた場合、ページアップキーやページダウンキーを押下する操作が行われた場合より、スクロール量が小さい可能性が高い。そのため、マウスホイールを回す操作やカーソルキーを押下する操作が行われた場合、類似領域探索部１２８は、前フレームにおける探索領域のスライド範囲を制限してもよい。この場合、類似領域探索部１２８は、制限されたスライド範囲の全域にわたって探索領域をスライドさせても類似度が所定の閾値を超えなかった場合、スクロール方向とスクロール量の判定に失敗したと判断する。これにより、類似領域探索部１２８における処理時間を短縮できるとともに、プロセッサ１０１に必要性の低い処理を実行させないようにして処理効率を向上させることができる。
【００７７】
次に、動きベクトル格納処理部１２７の処理について説明する。
前述のように、動きベクトル格納処理部１２７は、スクロール判定部１２６によってスクロール操作が行われたと判定された場合に、次のような処理を実行する。動きベクトル格納処理部１２７は、動きベクトル記憶部１２７ａにおいて、スクロール判定部１２６から通知された操作情報に対して動きベクトルが対応付けて登録されているかを判定する。
【００７８】
動きベクトルが登録されていない場合、動きベクトル格納処理部１２７は、操作情報を類似領域探索部１２８に通知して、スクロール方向とスクロール量の判定処理の実行を指示する。一方、動きベクトルが登録されている場合、動きベクトル格納処理部１２７は、登録されている動きベクトルを読み出してエンコーダ１２９に通知する。後者の場合、類似領域探索部１２８によるスクロール方向とスクロール量の判定処理の実行をスキップさせて、処理負荷を軽減させることができる。
【００７９】
また、動きベクトル格納処理部１２７は、スクロール判定部１２６によってスクロール操作が行われたと判定されていない場合には、スクロール量「０」をエンコーダ１２９に通知して、スクロール操作が行われていないことをエンコーダ１２９に通知する。この場合、エンコーダ１２９は、動きベクトル格納処理部１２７または類似領域探索部１２８からの情報を利用せずに動きベクトルを算出する。
【００８０】
さらに、動きベクトル格納処理部１２７は、エンコーダ１２９によって算出され、エンコーダ１２９からフィードバックされた動きベクトルを、そのときにスクロール判定部１２６から通知されている操作情報に対応付けて動きベクトル記憶部１２７ａに登録する。ただし、動きベクトル記憶部１２７ａへの情報登録や更新は、スクロール操作が行われたと判定されている場合に限られる。
【００８１】
図１１は、動きベクトル記憶部のデータ構成例を示す図である。動きベクトル記憶部１２７ａには、例えば、操作種別に応じたテーブル１２７ａ１〜１２７ａ３が登録される。
テーブル１２７ａ１は、マウスホイールを回す操作に対応する。テーブル１２７ａ１は、方向、ノッチ数、動きベクトルの各項目を有する。方向の項目には、マウスホイールの回転方向が登録される。ノッチ数の項目には、マウスホイールの回転量を示すノッチ数が登録される。動きベクトルの項目には、エンコーダ１２９から通知された動きベクトルが登録される。動きベクトル記憶部１２７ａには、方向およびノッチ数の項目に登録される値の組み合わせごと（すなわち、操作情報の内容ごと）に、テーブル１２７ａ１が登録され得る。
【００８２】
テーブル１２７ａ２は、マウスのドラッグに対応する。テーブル１２７ａ２は、方向、移動量、動きベクトルの各項目を有する。方向の項目には、マウスのドラッグ方向が登録される。方向の項目には、上方向、下方向、右方向、左方向のいずれかが登録されるものとする。移動量の項目には、マウスのドラッグ量が登録される。ただし、移動量の項目には、１フレーム周期当たりのドラッグ量が登録されるものとする。動きベクトルの項目には、エンコーダ１２９から通知された動きベクトルが登録される。
【００８３】
動きベクトル記憶部１２７ａには、方向および移動量の項目に登録される値の組み合わせごと（すなわち、操作情報の内容ごと）に、テーブル１２７ａ２が登録され得る。なお、以上のテーブル１２７ａ２はマウスのドラッグに対応するテーブルであるが、この他に、タッチデバイスに対するドラッグに対応するテーブルが登録されてもよい。
【００８４】
テーブル１２７ａ３は、ページアップキーまたはページダウンキーの押下に対応する。テーブル１２７ａ３は、キー種別、操作量、動きベクトルの各項目を有する。キー種別の項目には、押下されたキーがページアップキーとページダウンキーのどちらであるかを示す情報が登録される。操作量の項目には、フレーム周期におけるキーの押下回数または押下時間が登録される。動きベクトルの項目には、エンコーダ１２９から通知された動きベクトルが登録される。動きベクトル記憶部１２７ａには、キー種別および操作量の項目に登録される値の組み合わせごと（すなわち、操作情報の内容ごと）に、テーブル１２７ａ３が登録され得る。
【００８５】
なお、例えば、スクロール判定部１２６からの操作情報（現在の操作情報）に対応するテーブルが動きベクトル記憶部１２７ａに登録されているが、そのテーブルに登録された動きベクトルの値がエンコーダ１２９からの動きベクトルの値と異なる場合があり得る。この場合、動きベクトル格納処理部１２７は、エンコーダ１２９から通知された動きベクトルの大きさの方が大きい場合に、その動きベクトルの値によってテーブルに登録されている動きベクトルの値を更新する。
【００８６】
これは、アプリケーションのウィンドウにはスクロール可能な範囲の制限があり、この制限によって、ユーザによる操作量よりも実際のスクロール量が小さくなる場合があるからである。上記のように、より大きい動きベクトルの値によってテーブルの登録値を更新することで、スクロール可能な範囲の制限に依存しない正確なスクロール量に基づく動きベクトルを、動きベクトル記憶部１２７ａに登録させることができる。
【００８７】
次に、エンコーダ１２９について説明する。
図１２は、エンコーダの内部構成例を示す図である。この図１２では、例として、Ｈ．２６４の動画像圧縮符号化規格に準拠したエンコーダ１２９を示す。エンコーダ１２９は、イントラ予測部１２９ａ、インター予測部１２９ｂ、変換部１２９ｃ、量子化部１２９ｄ、逆量子化部１２９ｅ、逆変換部１２９ｆ、復号画像生成部１２９ｇ、デブロッキングフィルタ１２９ｈ、復号画像記憶部１２９ｉ、動き予測部１２９ｊ、予測画像生成部１２９ｋおよびエントロピー符号化部１２９ｌを有する。
【００８８】
エンコーダ１２９には、類似領域探索部１２８から高頻度更新領域の画像がビットマップデータとして入力される。イントラ予測部１２９ａは、入力画像に対してフレーム内予測処理を実行し、イントラ予測による予測誤差信号を生成する。インター予測部１２９ｂは、入力画像と、予測画像生成部１２９ｋから出力される予測画像との差分を演算することにより、インター予測による予測誤差信号を生成する。変換部１２９ｃは、イントラ予測部１２９ａまたはインター予測部１２９ｂからの予測誤差信号を整数変換（Integer Transform）する。量子化部１２９ｄは、整数変換された信号を量子化する。
【００８９】
逆量子化部１２９ｅは、量子化部１２９ｄから出力された量子化データを逆量子化する。逆変換部１２９ｆは、逆量子化部１２９ｅの出力データを逆整数変換する。これにより、符号化前の予測誤差信号に対応する信号が得られる。復号画像生成部１２９ｇは、予測画像生成部１２９ｋから出力された予測画像と、逆変換部１２９ｆからの出力信号とを加算して、復号画像を生成する。デブロッキングフィルタ１２９ｈは、生成された復号画像に対して、ブロック歪みを低減するためのフィルタ処理を施す。復号画像記憶部１２９ｉは、デブロッキングフィルタ１２９ｈによってフィルタ処理が施された復号画像を、前フレームの参照画像として一時的に記憶する。
【００９０】
動き予測部１２９ｊは、エンコーダ１２９に入力される現フレームの入力画像と、復号画像記憶部１２９ｉに記憶された参照画像とを比較する。動き予測部１２９ｊは、ブロックマッチング技術を用いて、入力画像上の各ブロックと類似する領域を参照画像から判別することで、ブロックごとに動きベクトルを算出する。ただし、類似領域探索部１２８からスクロール方向とスクロール量が通知されている場合、または動きベクトル格納処理部１２７から動きベクトルが通知されている場合には、動き予測部１２９ｊは、通知されている情報を用いて類似領域の探索範囲を制限する。これにより、動きベクトルの算出処理負荷が軽減される。
【００９１】
予測画像生成部１２９ｋは、動き予測部１２９ｊによって算出された動きベクトルと、復号画像記憶部１２９ｉに記憶された参照画像とに基づいて、予測画像を生成する。エントロピー符号化部１２９ｌは、量子化部１２９ｄから出力された量子化データや、動き予測部１２９ｊから出力された動きベクトルをエントロピー符号化し、符号化データを出力する。
【００９２】
なお、エンコーダ１２９による動画像圧縮符号化処理としては、Ｈ．２６４に限らず、ＭＰＥＧ（Moving Picture Experts Group）−２、Ｈ．２６５など、フレーム間予測を用いた他の規格に準拠する処理が実行されてもよい。
【００９３】
以下、動き予測部１２９ｊの処理についてさらに説明する。
図１３は、マクロブロックごとの動きベクトルの算出方法について説明するための図である。スクロール操作が行われた場合、高頻度更新領域１６１に含まれる各マクロブロックの移動方向および移動量は、すべて同じである可能性が高い。そこで、動き予測部１２９ｊは、スクロール操作が行われた場合には、図１３の左側に示すように、高頻度更新領域１６１に含まれるマクロブロックの中から、特徴的な１つのマクロブロック１６１ａを選択する。特徴的なマクロブロック１６１ａとしては、例えば、その内部の各画素で使用されている色または輝度のバラツキが大きいなど、複雑度の高いマクロブロックが選択される。
【００９４】
動き予測部１２９ｊは、選択したマクロブロック１６１ａについての動きベクトルを算出する。そして、動き予測部１２９ｊは、図１３の右側に示すように、算出されたマクロブロック１６１ａの動きベクトルを、その他のマクロブロックの動きベクトルとしてコピーして使用する。このような処理により、すべてのマクロブロックについて個別に動きベクトルを算出する方法と比較して、動きベクトルの算出処理時間を大幅に短縮し、その処理負荷を大幅に軽減できる。
【００９５】
また、動き予測部１２９ｊは、マクロブロック１６１ａの動きベクトルを算出する際、類似領域探索部１２８または動きベクトル格納処理部１２７から通知されている情報を用いて、算出処理を簡略化する。
【００９６】
例えば、類似領域探索部１２８からスクロール方向とスクロール量が通知されている場合、動き予測部１２９ｊは、まず、マクロブロック１６１ａの動きベクトル算出のための参照画像上の探索領域を、通知されたスクロール方向とは逆方向だけに制限する。これにより、マクロブロック１６１ａの位置を中心としたすべての方向に探索する通常の処理と比較して、探索にかかる時間を短縮し、その処理負荷を軽減できる。
【００９７】
さらに、動き予測部１２９ｊは、探索領域を設定する範囲を、通知されたスクロール量に基づいて制限することもできる。例えば、動き予測部１２９ｊは、マクロブロック１６１ａの基準点から探索領域の基準点までの距離が、スクロール量を中心とした一定範囲に収まるように、探索領域の設定範囲を制限する。より具体的な例としては、スクロール方向が上方向であり、スクロール量が１００画素であるとし、上記の一定範囲をプラスマイナス２０画素とする。この場合、動き予測部１２９ｊは、マクロブロック１６１ａの基準点から探索領域の基準点までの距離を、８０画素から１２０画素までの範囲に設定し、この範囲内で探索領域をスライドさせながらブロックマッチングを行う。
【００９８】
このように、探索領域の設定範囲がスクロール量に基づいて制限されることで、探索にかかる時間を短縮し、その処理負荷を軽減できる。
一方、動き予測部１２９ｊは、動きベクトル格納処理部１２７から動きベクトルが通知されている場合には、例えば、通知された動きベクトルを方向と大きさの成分とに分離する。動き予測部１２９ｊは、マクロブロック１６１ａの動きベクトル算出のための参照画像上の探索領域を、通知された動きベクトルの方向だけに制限する。また、動き予測部１２９ｊは、探索領域を設定する範囲を、通知された動きベクトルの大きさに基づいて制限する。これにより、スクロール方向やスクロール量が通知された場合と同様に、探索にかかる時間を短縮し、その処理負荷を軽減できる。
【００９９】
なお、動き予測部１２９ｊは、動きベクトル格納処理部１２７から動きベクトルが通知されている場合、通知された動きベクトルを高頻度更新領域１６１内のすべてのマクロブロックの動きベクトルとしてそのまま使用してもよい。
【０１００】
動き予測部１２９ｊは、以上の方法によって算出された動きベクトルを、動きベクトル格納処理部１２７に通知してフィードバックする。ただし、スクロール操作が行われたと判定されていない場合（例えば、動きベクトル格納処理部１２７から動きベクトル「０」が通知された場合）には、動き予測部１２９ｊは、算出された動きベクトルを動きベクトル格納処理部１２７に通知しなくてもよい。
【０１０１】
以下、図４に戻って説明を続ける。
動画像送信部１３０は、エンコーダ１２９から出力される高頻度更新領域の動画像データを、高頻度更新領域の位置を示す属性情報とともにクライアント端末２００に送信する。動画像送信部１３０によるデータ送信プロトコルとしては、例えば、ＲＴＰ（Real-time Transport Protocol）が用いられる。
【０１０２】
以上説明した画面転送制御部１２０によれば、エンコーダ１２９による動画像データの生成処理負荷が軽減されることで、画面転送制御部１２０の処理負荷を軽減することができる。その結果、１台のクライアント端末２００に対して仮想デスクトップ環境を提供するための処理負荷が軽減され、サーバ装置１００がより多くのクライアント端末２００に対して仮想デスクトップ環境を提供できるようになる。
【０１０３】
なお、上記の画面転送制御部１２０の処理は、例えば、複数のアプリケーションプログラムがプロセッサ１０１に実行されることで実現されてもよい。例えば、画面転送制御部１２０の処理機能のうち、エンコーダ１２９の処理は、他の処理機能の処理とは別のアプリケーションプログラムの実行により実現されてもよい。また、例えば、画面転送制御部１２０の処理の少なくとも一部は、ＤＳＰやＧＰＵなど、プロセッサ１０１とは別の電子回路によって実現されてもよい。
【０１０４】
次に、サーバ装置１００の処理についてフローチャートを用いて説明する。
図１４は、更新領域の識別処理手順の例を示すフローチャートである。なお、図１４の処理は、フレーム周期ごとに繰り返し実行される。
【０１０５】
［ステップＳ１１］更新領域判別部１２２は、フレームバッファ１１４から最新のデスクトップ画面（現フレーム）のビットマップデータを取得する。
［ステップＳ１２］更新領域判別部１２２は、現フレームと前フレームとを、フレームを格子状に分割した分割領域ごとに比較する。更新領域判別部１２２は、比較の結果、フレーム間で画素値の差分がある分割領域を、更新領域と判別する。更新領域判別部１２２は、判別された更新領域の位置を更新頻度判別部１２３に通知する。
【０１０６】
更新頻度判別部１２３は、通知された更新領域の位置に基づいて、分割領域ごとの更新回数を更新する。具体的には、更新頻度判別部１２３は、更新回数マップ１２３ａに登録された更新回数のうち、通知された更新領域に対応する更新回数をカウントアップする。なお、更新回数マップ１２３ａに登録される更新回数の初期値は「０」である。
【０１０７】
［ステップＳ１３］高頻度更新領域識別部１２４は、現時刻が、高頻度更新領域を識別すべきタイミングであるかを判定する。高頻度更新領域識別部１２４は、前回高頻度更新領域を識別してから所定の再設定期間が経過した場合に、高頻度更新領域を識別すべきタイミングであると判定する。高頻度更新領域識別部１２４は、高頻度更新領域を識別すべきタイミングであると判定した場合、ステップＳ１４の処理を実行し、そのタイミングでないと判定した場合、ステップＳ１９の処理を実行する。
【０１０８】
［ステップＳ１４］高頻度更新領域識別部１２４は、すべての分割領域についてステップＳ１５〜Ｓ１７の処理が済んだかを判定する。高頻度更新領域識別部１２４は、未処理の分割領域がある場合、ステップＳ１５の処理を実行する。一方、高頻度更新領域識別部１２４は、すべての分割領域について処理済みの場合、更新回数マップ１２３ａのすべての更新回数を「０」にリセットし、ステップＳ１８の処理を実行する。
【０１０９】
［ステップＳ１５］高頻度更新領域識別部１２４は、未処理の分割領域を１つ選択し、選択した分割領域に対応する更新回数マップ１２３ａの更新回数が、所定の閾値を超えているかを判定する。高頻度更新領域識別部１２４は、更新回数が閾値を超えている場合、ステップＳ１６の処理を実行し、更新回数が閾値以下の場合、ステップＳ１７の処理を実行する。
【０１１０】
［ステップＳ１６］高頻度更新領域識別部１２４は、選択した分割領域を高頻度更新領域と識別する。
［ステップＳ１７］高頻度更新領域識別部１２４は、選択した分割領域を低頻度更新領域と識別する。
【０１１１】
［ステップＳ１８］高頻度更新領域識別部１２４は、隣接する複数の高頻度更新領域が存在する場合、それらの高頻度更新領域と隣接する分割領域とを結合して、それらの高頻度更新領域をすべて含む矩形状の領域に整形する。高頻度更新領域識別部１２４は、整形された矩形状の領域を高頻度更新領域に設定し直す。
【０１１２】
［ステップＳ１９］高頻度更新領域識別部１２４は、ステップＳ１２で判別された更新領域のうち、現在設定されている高頻度更新領域に含まれない領域を、低頻度更新領域と識別する。
【０１１３】
［ステップＳ２０］高頻度更新領域識別部１２４は、高頻度更新領域のビットマップデータを、高頻度更新領域の位置を示す属性情報とともに類似領域探索部１２８に通知する。また、高頻度更新領域識別部１２４は、低頻度更新領域のビットマップデータを、低頻度更新領域の位置を示す属性情報とともに静止画像送信部１２５に通知する。
【０１１４】
［ステップＳ２１］静止画像送信部１２５は、高頻度更新領域識別部１２４から通知された低頻度更新領域の静止画像データを、属性情報とともにクライアント端末２００に送信する。
【０１１５】
図１５は、スクロール方向およびスクロール量の判定処理手順の例を示すフローチャートである。なお、図１５の処理は、フレーム周期ごとに繰り返し実行される。
［ステップＳ３１］スクロール判定部１２６は、操作情報取得部１２１がクライアント端末２００から操作情報を受信し、その操作情報を操作情報取得部１２１から取得した場合、ステップＳ３２の処理を実行する。一方、スクロール判定部１２６は、操作情報取得部１２１が操作情報を受信しておらず、操作情報取得部１２１から操作情報を取得できない場合、動きベクトル格納処理部１２７に対して操作が行われていないことを通知する。この場合、ステップＳ３４の処理が実行される。
【０１１６】
［ステップＳ３２］スクロール判定部１２６は、取得した操作情報に基づいて、クライアント端末２００で行われた操作がスクロール操作か否かを判定する操作内容判定処理を実行する。スクロール判定部１２６は、取得した操作情報を解析することで、クライアント端末で行われた操作内容を判定し、特定の操作が行われた場合にスクロール操作が行われたと判定する。スクロール判定部１２６は、スクロール操作であるか否かを示す情報を動きベクトル格納処理部１２７に通知する。また、スクロール操作が行われた場合、操作内容を示す操作情報も動きベクトル格納処理部１２７に通知する。なお、このステップＳ３２の処理の詳細については、後の図１６、図１７において説明する。
【０１１７】
［ステップＳ３３］動きベクトル格納処理部１２７は、スクロール操作が行われたと判定された場合、ステップＳ３５の処理を実行する。一方、動きベクトル格納処理部１２７は、スクロール操作以外の操作が行われた場合、またはクライアント端末２００で操作が行われなかった場合には、ステップＳ３４の処理を実行する。
【０１１８】
［ステップＳ３４］動きベクトル格納処理部１２７は、スクロール操作が行われていないことを示す動きベクトル「０」を、エンコーダ１２９に通知する。これにより、スクロール操作が行われていないことがエンコーダ１２９に通知される。
【０１１９】
［ステップＳ３５］動きベクトル格納処理部１２７は、スクロール判定部１２６から通知された操作情報に対応する動きベクトルが動きベクトル記憶部１２７ａに格納されているかを判定する。通知された操作情報と同じ内容の操作情報を含むテーブルが動きベクトル記憶部１２７ａに登録されている場合、対応する動きベクトルが格納されていると判定される。動きベクトル格納処理部１２７は、対応する動きベクトルが格納されている場合、ステップＳ３７の処理を実行する。一方、動きベクトル格納処理部１２７は、対応する動きベクトルが格納されていない場合、類似領域探索部１２８に対して操作情報を通知し、スクロール方向とスクロール量とを判定するための類似領域探索処理の実行を指示する。この後、ステップＳ３６の処理が実行される。
【０１２０】
［ステップＳ３６］類似領域探索部１２８は、類似領域探索処理を実行して、スクロール方向とスクロール量とを判定する。類似領域探索部１２８は、判定したスクロール方向およびスクロール量と、高頻度更新領域識別部１２４から通知された高頻度更新領域のビットマップデータおよび属性情報とを、エンコーダ１２９に通知する。なお、このステップＳ３６の処理の詳細については、後の図１８において説明する。
【０１２１】
［ステップＳ３７］動きベクトル格納処理部１２７は、スクロール判定部１２６から通知された操作情報に対応する動きベクトルを動きベクトル記憶部１２７ａから読み出し、エンコーダ１２９に通知する。
【０１２２】
［ステップＳ３８］動きベクトル格納処理部１２７は、エンコーダ１２９によって算出された動きベクトルの通知を待機する。そして、動きベクトル格納処理部１２７は、エンコーダ１２９から動きベクトルが通知されると、この動きベクトルとスクロール判定部１２６から通知された操作情報の内容とを対応付けたテーブルを生成して、そのテーブルを動きベクトル記憶部１２７ａに登録する。
【０１２３】
図１６、図１７は、操作内容の判定処理手順の例を示すフローチャートである。この図１６、図１７の処理は、図１５のステップＳ３２の処理に対応する。なお、図１６、図１７では、マウスの左クリック操作が１フレーム周期以上検出されていることを示す左クリック操作情報を一時的に記憶するためにＲＡＭ１０２の記憶領域が使用される。
【０１２４】
［ステップＳ３２ａ］スクロール判定部１２６は、取得した操作情報がカーソルキー、ページアップキー、ページダウンキーのいずれかの押下を示す場合、ステップＳ３２ｅの処理を実行し、その他の操作を示す場合、ステップＳ３２ｂの処理を実行する。
【０１２５】
［ステップＳ３２ｂ］スクロール判定部１２６は、取得した操作情報がマウスホイールを回す操作を示す場合、ステップＳ３２ｅの処理を実行し、その他の操作を示す場合、ステップＳ３２ｃの処理を実行する。
【０１２６】
［ステップＳ３２ｃ］スクロール判定部１２６は、取得した操作情報がマウスの左クリック操作を示す場合、ステップＳ３２ｄの処理を実行し、その他の操作を示す場合、ステップＳ３２ｆの処理を実行する。
【０１２７】
［ステップＳ３２ｄ］スクロール判定部１２６は、左クリック操作情報が記憶領域に記憶されているかを判定する。スクロール判定部１２６は、左クリック操作情報が記憶されている場合、ステップＳ３２ｅの処理を実行する。この場合、マウスのドラッグ操作が行われたと判定される。一方、スクロール判定部１２６は、左クリック操作情報が記憶されていない場合、ステップＳ３２ｈの処理を実行する。
【０１２８】
［ステップＳ３２ｅ］スクロール判定部１２６は、スクロール操作が行われたと判定し、その旨を示す判定結果情報と操作情報とを動きベクトル格納処理部１２７に通知する。ここで、ステップＳ３２ｄで「Ｙｅｓ」と判定された場合、スクロール判定部１２６は、操作種別がマウスのドラッグであることと、ドラッグ量とを含む操作情報を動きベクトル格納処理部１２７に通知する。ただし、ドラッグ量は１フレーム周期当たりの量に換算されて操作情報に含められる。これは、類似領域探索部１２８での探索処理が、現フレームとそれより１つ前のフレームとを用いて行われるからである。
【０１２９】
［ステップＳ３２ｆ］スクロール判定部１２６は、左クリック操作情報が記憶領域に記憶されているかを判定する。スクロール判定部１２６は、左クリック操作情報が記憶されている場合、ステップＳ３２ｇの処理を実行し、左クリック操作情報が記憶されていない場合、ステップＳ３２ｉの処理を実行する。
【０１３０】
［ステップＳ３２ｇ］スクロール判定部１２６は、左クリック操作情報を記憶領域から削除する。
［ステップＳ３２ｈ］スクロール判定部１２６は、左クリック操作情報を記憶領域に保存する。
【０１３１】
［ステップＳ３２ｉ］スクロール判定部１２６は、スクロール操作が行われていないと判定し、その旨を示す判定結果情報を動きベクトル格納処理部１２７に通知する。
図１８は、類似領域の探索処理手順の例を示すフローチャートである。この図１８の処理は、図１５のステップＳ３６の処理に対応する。
【０１３２】
［ステップＳ３６ａ］類似領域探索部１２８は、操作情報が示す操作内容に基づいて、スクロール方向を判定する。
［ステップＳ３６ｂ］類似領域探索部１２８は、現フレームと前フレームに対して、判定したスクロール方向に基づく位置に探索領域を設定する。
【０１３３】
［ステップＳ３６ｃ］類似領域探索部１２８は、操作内容がマウスホイールを回す操作やカーソルキーを押下する操作である場合、前フレームにおける探索領域のスライド範囲を一定範囲に絞り込む。
【０１３４】
［ステップＳ３６ｄ］類似領域探索部１２８は、現フレームの探索領域と前フレームの探索領域との間で画素ごとに画素値を比較する。類似領域探索部１２８は、画素値が一致する画素数が所定の閾値以上である場合、ステップＳ３６ｈの処理を実行し、画素値が一致する画素数が閾値未満である場合、ステップＳ３６ｅの処理を実行する。
【０１３５】
［ステップＳ３６ｅ］類似領域探索部１２８は、類似領域の探索を終了するかを判定する。前フレームの探索領域をスライド範囲全体にわたってスライドさせた場合に、探索を終了すると判定される。類似領域探索部１２８は、探索を終了する場合、ステップＳ３６ｇの処理を実行し、探索を終了しない場合、ステップＳ３６ｆの処理を実行する。
【０１３６】
［ステップＳ３６ｆ］類似領域探索部１２８は、前フレームの探索領域を所定画素数分だけスライドさせる。
［ステップＳ３６ｇ］類似領域探索部１２８は、スクロール方向とスクロール量の判定に失敗したと判定し、その旨を示す情報をエンコーダ１２９に通知する。具体的には、類似領域探索部１２８は、スクロール方向がないことを示す情報と、スクロール量「０」とをエンコーダ１２９に通知する。
【０１３７】
［ステップＳ３６ｈ］類似領域探索部１２８は、前フレームにおける初期状態から現在までの探索領域の移動量を示す画素数を、スクロール量と判定する。
［ステップＳ３６ｉ］類似領域探索部１２８は、判定されたスクロール方向およびスクロール量をエンコーダ１２９に通知する。
【０１３８】
図１９は、動画像データの送信処理手順の例を示すフローチャートである。
［ステップＳ４１］エンコーダ１２９の動き予測部１２９ｊは、類似領域探索部１２８からスクロール方向とスクロール量とを受信する。または、動き予測部１２９ｊは、動きベクトル格納処理部１２７から動きベクトルを受信する。
【０１３９】
［ステップＳ４２］動き予測部１２９ｊは、スクロール操作が行われたかを判定する。受信したスクロール量または動きベクトルが「０」でない場合、スクロール操作が行われたと判定される。動き予測部１２９ｊは、スクロール操作が行われた場合、ステップＳ４３の処理を実行し、スクロール操作が行われていない場合、ステップＳ４４の処理を実行する。
【０１４０】
［ステップＳ４３］動き予測部１２９ｊは、類似領域探索部１２８または動きベクトル格納処理部１２７から受信した情報に基づいて動きベクトルを算出する。例えば、動き予測部１２９ｊは、スクロール方向または動きベクトルの方向成分に基づいて動きベクトルの探索方向を制限し、スクロール量または動きベクトルの大きさの成分に基づいて動きベクトルの探索範囲を制限する。このような処理により、高頻度更新領域の動画像データがエンコードされる。
【０１４１】
［ステップＳ４４］動き予測部１２９ｊは、類似領域探索部１２８または動きベクトル格納処理部１２７から受信した情報を用いずに動きベクトルを算出する。これにより、高頻度更新領域の動画像データがエンコードされる。
【０１４２】
［ステップＳ４５］動画像送信部１３０は、エンコードされた動画像データを、高頻度更新領域の位置を示す属性情報とともにクライアント端末２００に送信する。
［ステップＳ４６］動き予測部１２９ｊは、算出した動きベクトルを動きベクトル格納処理部１２７に通知する。
【０１４３】
次に、クライアント端末２００について説明する。
図２０は、クライアント端末が備える処理機能の構成例を示すブロック図である。クライアント端末２００は、入力部２１１、表示部２１２および画面表示制御部２２０を有する。画面表示制御部２２０は、操作情報通知部２２１、静止画像受信部２２２、表示制御部２２３、動画像受信部２２４、デコーダ２２５および表示制御部２２６を有する。
【０１４４】
入力部２１１は、ユーザによる操作入力を受け付ける入力デバイスであり、例えば、キーボード、マウスなどである。表示部２１２は、画像を表示する表示デバイスであり、例えば、液晶ディスプレイや有機ＥＬディスプレイである。サーバ装置１００によって生成されたデスクトップ画面を表示する場合、表示部２１２は、表示制御部２２３，２２６によって生成された画面を合成した合成画面を表示する。
【０１４５】
画面表示制御部２２０の処理は、クライアント端末２００のプロセッサが、画面表示アプリケーションのプログラムを実行することによって実現される。
操作情報通知部２２１は、入力部２１１が受け付けた操作の内容を示す操作情報をサーバ装置１００に送信する。
【０１４６】
静止画像受信部２２２は、デスクトップ画面のうち、低頻度更新領域の静止画像データを、属性情報とともにサーバ装置１００から受信する。表示制御部２２３は、低頻度更新領域のビットマップ画像を生成し、表示部２１２の画面領域のうち、属性情報に含まれる位置および大きさが示す画面領域に、生成したビットマップ画像を表示させる。
【０１４７】
動画像受信部２２４は、デスクトップ画面のうち、高頻度更新領域の動画像データを、属性情報とともにサーバ装置１００から受信する。デコーダ２２５は、動画像受信部２２４が受信した動画像データに対する伸長復号化処理を実行する。表示制御部２２６は、デコーダ２２５によって伸長復号化された動画像データに基づいて高頻度更新領域のビットマップ画像を生成する。表示制御部２２６は、表示部２１２の画面領域のうち、属性情報に含まれる位置および大きさが示す画面領域に、生成したビットマップ画像を表示させる。
【０１４８】
なお、画面表示制御部２２０の処理の少なくとも一部は、ＤＳＰやＧＰＵなどの専用の電子回路によって実現されてもよい。
〔第２の実施の形態の変形例〕
次に、第２の実施の形態に係るサーバ装置１００の変形例について説明する。
【０１４９】
図２１は、デスクトップ画面の一例を示す図である。前述のように、類似領域探索部１２８は、現フレームと前フレームとの間で類似する領域を探索する。この探索処理は、次のように変形されてもよい。
【０１５０】
画像間で対応する画素の画素値を比較することで画像間が一致するかを判定する処理では、画像の特徴によっては、各画像の内容が異なるにもかかわらず一致すると誤判定される可能性がある。例えば、比較対象の各画像領域において使用される色が１種類だけの場合や、各画像領域の内部が１本の直線で分割されている場合には、誤判定が発生しやすい。そこで、類似領域探索部１２８は、設定した探索領域の中に誤判定が発生しやすいと考えられる領域が存在する場合には、その領域を一致判定の対象から除外してもよい。
【０１５１】
例えば、図２１に示すように、現フレーム１７０に対して探索領域１７１が設定されたとする。探索領域１７１には、１２個の分割領域が含まれている。これらの分割領域のうち、分割領域１７１ａ，１７１ｂは、単一の色によって塗りつぶされている。また、分割領域１７１ｃは、１本の直線によって分割されている。
【０１５２】
この場合、類似領域探索部１２８は、分割領域１７１ａ〜１７１ｃを一致判定の対象から除外する。これとともに、類似領域探索部１２８は、前フレーム１８０に設定した探索領域１８１に含まれる分割領域のうち、上記の分割領域１７１ａ〜１７１ｃとそれぞれ同じ位置に対応する分割領域１８１ａ〜１８１ｃも一致判定の対象から除外する。すなわち、類似領域探索部１２８は、探索領域１７１のうち分割領域１７１ａ〜１７１ｃを除く領域と、探索領域１８１のうち分割領域１８１ａ〜１８１ｃを除く領域との間で、類似度を計算する。このような処理により、類似判定精度の低下を抑制することができる。
【０１５３】
なお、類似領域探索部１２８は、例えば、探索領域内の各分割領域の色情報のスキャンや、各分割領域におけるエッジ検出処理などによって、上記のような誤判定が発生しやすいと考えられる分割領域を検出することができる。
【０１５４】
以下、他の変形例について説明する。
第２の実施の形態に係るサーバ装置１００を次のように変形することもできる。なお、ここでは、類似領域探索部１２８や動きベクトル格納処理部１２７からの情報を用いることで、動きベクトル算出のための探索方向や探索範囲を制限するなど、処理負荷を軽減する方法が採用されたエンコーダ１２９の処理を、「低負荷エンコード処理」と記載する。
【０１５５】
画面転送制御部１２０は、特定のアプリケーションが実行され、そのアプリケーションの表示画面が表示されている場合にのみ、低負荷エンコード処理が実行されるように制御してもよい。例えば、サーバ装置１００の記憶領域には、画面のスクロールを実行可能なアプリケーションの識別情報があらかじめ登録される。動きベクトル格納処理部１２７は、登録されているアプリケーションが実行されている場合には、エンコーダ１２９が低負荷エンコード処理を実行できるように制御する。一方、動きベクトル格納処理部１２７は、登録されているアプリケーションが実行されていない場合には、例えば、エンコーダ１２９に対して動きベクトル「０」を通知し続けることで、低負荷エンコード処理が実行されないように制御する。
【０１５６】
また、例えば、画面転送制御部１２０は、上記の記憶領域に登録されていないアプリケーションの実行時にスクロール操作が検出された場合には、そのアプリケーションの識別情報を記憶領域に自動的に登録してもよい。また、画面転送制御部１２０は、この時点で低負荷エンコード処理が実行されるように即座に切り替えてもよい。
【０１５７】
なお、上記の各実施の形態に示した装置（例えば、情報処理装置１、サーバ装置１００）の処理機能は、コンピュータによって実現することができる。その場合、各装置が有すべき機能の処理内容を記述したプログラムが提供され、そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記憶装置には、ハードディスク装置（ＨＤＤ）、フレキシブルディスク（ＦＤ）、磁気テープなどがある。光ディスクには、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ（Compact Disc-Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）などがある。光磁気記録媒体には、ＭＯ（Magneto-Optical disk）などがある。
【０１５８】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【０１５９】
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムまたはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムにしたがった処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムにしたがった処理を実行することもできる。また、コンピュータは、ネットワークを介して接続されたサーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムにしたがった処理を実行することもできる。
【符号の説明】
【０１６０】
１  情報処理装置
１ａ  操作判定部
１ｂ  処理実行部
１ｃ  画像送信部
２  端末装置
１１，１２  表示画面
１１ａ  探索領域
１２ａ  領域
【図１】
2018191143.tif 000003
【図２】
2018191143.tif 000004
【図３】
2018191143.tif 000005
【図４】
2018191143.tif 000006
【図５】
2018191143.tif 000007
【図６】
2018191143.tif 000008
【図７】
2018191143.tif 000009
【図８】
2018191143.tif 000010
【図９】
2018191143.tif 000011
【図１０】
2018191143.tif 000012
【図１１】
2018191143.tif 000013
【図１２】
2018191143.tif 000014
【図１３】
2018191143.tif 000015
【図１４】
2018191143.tif 000016
【図１５】
2018191143.tif 000017
【図１６】
2018191143.tif 000018
【図１７】
2018191143.tif 000019
【図１８】
2018191143.tif 000020
【図１９】
2018191143.tif 000021
【図２０】
2018191143.tif 000022
【図２１】
2018191143.tif 000023