(57)【要約】【課題】利用者が指定し難い狭い領域への操作を容易にすること。【解決手段】操作情報を受け付けた場合、情報処理装置１０１は、操作位置Ｐ１から所定範囲内の座標位置の各々の座標位置に対して、操作位置Ｐ１を各々の座標位置に設定した場合に更新される表示画面１１０の更新領域の画像情報を取得する。情報処理装置１０１は、更新領域の画像情報として、通常のカーソルＣ１の画像データのハッシュ値およびカーソルＣ２の画像データのハッシュ値を取得することにより、位置Ｐ２にて視覚効果のためにカーソルの画像が変化したことを判断する。したがって、情報処理装置１０１は、探索範囲内の座標位置から、位置Ｐ２を選択して、カーソルの座標位置を位置Ｐ１に補正する。【選択図】図１
2014110035.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークを介して端末装置と接続される情報処理装置が、
前記端末装置の画面上で行われた操作の操作情報を受け付けた場合、前記操作情報から特定される操作位置から所定範囲内の複数の座標位置の各々の座標位置に対して、前記操作位置を前記各々の座標位置に設定した場合に更新される前記画面の更新領域の画像情報を取得し、
前記各々の座標位置に対して取得した前記更新領域の画像情報に基づいて、前記複数の座標位置から、いずれかの座標位置を選択し、
前記操作位置を、選択した前記いずれかの座標位置に補正する、
処理を実行することを特徴とする補正方法。
【請求項２】
前記取得する処理は、
前記操作情報を受け付けた場合、前記各々の座標位置に対して、前記操作位置を示すカーソルの座標位置を前記各々の座標位置に設定した場合に更新される前記画面の更新領域に含まれる前記カーソルの画像情報を取得し、
前記選択する処理は、
前記複数の座標位置のうち取得した前記カーソルの画像情報が同一の内容となる座標位置の個数に基づいて、前記複数の座標位置から、いずれかの座標位置を選択することを特徴とする請求項１に記載の補正方法。
【請求項３】
前記選択する処理は、
前記複数の座標位置のうち取得した前記カーソルの画像情報が同一の内容となる座標位置の個数が最も少ない座標位置から、いずれかの座標位置を選択することを特徴とする請求項２に記載の補正方法。
【請求項４】
前記選択する処理は、
前記複数の座標位置のうち取得した前記カーソルの画像情報が同一の内容となる第１の座標位置群の座標位置同士を結ぶことにより形成される第１の線と、取得した前記カーソルの画像情報が同一の内容となる第２の座標位置群の座標位置同士を結ぶことにより形成される第２の線とが交差する座標位置から、いずれかの座標位置を選択することを特徴とする請求項２または３に記載の補正方法。
【請求項５】
前記取得する処理は、
前記操作情報を受け付けた場合、前記各々の座標位置に対して、前記操作位置を前記各々の座標位置に設定した場合に更新される更新後の前記画面の前記操作位置から前記所定範囲内の画像情報を取得し、
前記情報処理装置は、
取得した前記所定範囲内の画像情報に基づいて、前記所定範囲内の画像を拡大した拡大画像の画像情報を生成し、
生成した前記拡大画像の画像情報を前記端末装置に送信する、処理を実行し、
前記選択する処理は、
前記端末装置に前記拡大画像の画像情報が送信された結果、前記端末装置の前記画面内の前記拡大画像が表示された表示領域内で行われた操作の操作情報を受け付けた場合、当該操作情報に基づいて、前記複数の座標位置から、いずれかの座標位置を選択することを特徴とする請求項１に記載の補正方法。
【請求項６】
前記情報処理装置は、
前記各々の座標位置に対して取得した前記更新領域の画像情報に基づいて、前記更新領域の画像を拡大した拡大画像の画像情報を生成し、
生成した前記拡大画像の画像情報を前記端末装置に送信する、処理を実行し、
前記選択する処理は、
前記端末装置に前記拡大画像の画像情報が送信された結果、前記端末装置の前記画面内の前記拡大画像が表示された表示領域内で行われた操作の操作情報を受け付けた場合、当該操作情報に基づいて、前記複数の座標位置から、いずれかの座標位置を選択することを特徴とする請求項１に記載の補正方法。
【請求項７】
前記取得する処理は、
前記操作情報を受け付けた場合、前記各々の座標位置に対して、前記操作位置を前記各々の座標位置に設定した場合に更新される前記画面の更新領域の更新前の画像情報を取得し、
前記情報処理装置は、
前記各々の座標位置に対して取得した前記更新領域の更新前の画像情報に基づいて、前記更新領域の更新前の画像を拡大した拡大画像の画像情報を生成し、
生成した前記拡大画像の画像情報を前記端末装置に送信する、処理を実行し、
前記選択する処理は、
前記端末装置に前記拡大画像の画像情報が送信された結果、前記端末装置の前記画面内の前記拡大画像が表示された表示領域内で行われた操作の操作情報を受け付けた場合、当該操作情報に基づいて、前記複数の座標位置から、いずれかの座標位置を選択することを特徴とする請求項１に記載の補正方法。
【請求項８】
前記情報処理装置は、
特定の操作の操作情報を受け付けた場合、前記取得する処理の実行を開始することを特徴とする請求項１〜７のいずれか一つに記載の補正方法。
【請求項９】
ネットワークを介して情報処理装置と端末装置とが接続されるシステムにおいて、
前記情報処理装置は、
前記端末装置の画面上で行われた操作の操作情報を受け付けた場合、前記操作情報から特定される操作位置から所定範囲内の複数の座標位置の各々の座標位置に対して、前記操作位置を前記各々の座標位置に設定した場合に更新される前記画面の更新領域の画像情報を取得する取得部と、
前記各々の座標位置に対して前記取得部によって取得された前記更新領域の画像情報に基づいて、前記複数の座標位置から、いずれかの座標位置を選択する選択部と、
前記操作位置を、前記選択部によって選択された前記いずれかの座標位置に補正する補正部と、
を有することを特徴とするシステム。
【請求項１０】
ネットワークを介して端末装置と接続される情報処理装置において、
前記端末装置の画面上で行われた操作の操作情報を受け付けた場合、前記操作情報から特定される操作位置から所定範囲内の複数の座標位置の各々の座標位置に対して、前記操作位置を前記各々の座標位置に設定した場合に更新される前記画面の更新領域の画像情報を取得する取得部と、
前記各々の座標位置に対して前記取得部によって取得された前記更新領域の画像情報に基づいて、前記複数の座標位置から、いずれかの座標位置を選択する選択部と、
前記操作位置を、前記選択部によって選択された前記いずれかの座標位置に補正する補正部と、
を有することを特徴とする情報処理装置。
【請求項１１】
ネットワークを介して端末装置と接続される情報処理装置に、
前記端末装置の画面上で行われた操作の操作情報を受け付けた場合、前記操作情報から特定される操作位置から所定範囲内の複数の座標位置の各々の座標位置に対して、前記操作位置を前記各々の座標位置に設定した場合に更新される前記画面の更新領域の画像情報を取得し、
前記各々の座標位置に対して取得した前記更新領域の画像情報に基づいて、前記複数の座標位置から、いずれかの座標位置を選択し、
前記操作位置を、選択した前記いずれかの座標位置に補正する、
処理を実行させることを特徴とする補正プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、補正方法、システム、情報処理装置、および補正プログラムに関する。
【背景技術】
【０００２】
シンクライアントシステムは、クライアントに最低限の機能しか持たせず、サーバでアプリケーションやデータを管理するシステムである。また、タブレット端末やスマートフォンなどの端末装置の普及にともなって、モバイル環境で社内のアプリケーションやデータをセキュアに利用する、いわゆるモバイルシンクライアントシステムのニーズがある。
【０００３】
関連する先行技術としては、クライアントによる方向指示操作が始まってから、画面上に配置されたアイコンの選択状態が遷移するまでの間、クライアントから入力される操作方向に沿って、カーソルを画面上で移動させる視覚表現を実行するものがある。また、利用者の操作に応じて、クライアントの画面の一部の領域を拡大表示する拡大モードへの切り替えを行う技術がある。さらに、端末装置のような表示画面が小さい表示画面上に表示される表示要素を拡大表示する旨の指示があった際に、拡大表示の指示があった表示要素を拡大表示し、拡大表示された表示要素が選択されたときに、表示要素に対応する指示を実行する技術がある。さらに、表示画面上の座標位置と拡大の対象となる拡大対象の表示画面上の表示位置との位置関係が予め定められた条件を満たす場合に拡大対象を含む部分領域を拡大表示する技術がある。さらに、画面上での操作イベントを認識した場合に、前述の操作イベントにおける操作検出位置と操作対象位置との間にオフセットを有する位置となる操作対象位置を囲む枠を有するカーソルを上記画面に表示する技術がある。（たとえば、下記特許文献１〜５を参照。）
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１１−１００４１５号公報
【特許文献２】特開２０１２−０９３９４０号公報
【特許文献３】特開平１１−２７２３８７号公報
【特許文献４】特開２００９−１１６８２３号公報
【特許文献５】特開２０１２−０４３２６６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来技術によれば、タブレット端末などの端末装置を利用する利用者が、端末装置の画面内にある、指定し難い狭い領域への操作を行うことが難しい。たとえば、利用者が指定し難い狭い領域への操作を行った結果、利用者が意図した領域とは異なる領域が指定されてしまう場合がある。また、たとえば、操作し易くするために、利用者の操作により領域を拡大表示させる場合には、利用者の操作量が増加する。
【０００６】
１つの側面では、本発明は、利用者が指定し難い狭い領域への操作を容易にする補正方法、システム、情報処理装置、および補正プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明の一側面によれば、端末装置の画面上で行われた操作の操作情報を受け付けた場合、操作情報から特定される操作位置から所定範囲内の複数の座標位置の各々の座標位置に対して、操作位置を各々の座標位置に設定した場合に更新される画面の更新領域の画像情報を取得し、各々の座標位置に対して取得した更新領域の画像情報に基づいて、複数の座標位置から、いずれかの座標位置を選択し、操作位置を、選択したいずれかの座標位置に補正する補正方法、システム、情報処理装置、および補正プログラムが提案される。
【発明の効果】
【０００８】
本発明の一態様によれば、利用者が指定し難い狭い領域への操作を容易にすることができるという効果を奏する。
【図面の簡単な説明】
【０００９】
【図１】図１は、実施の形態にかかる補正方法の一実施例を示す説明図である。
【図２】図２は、シンクライアントシステムのシステム構成例を示す説明図である。
【図３】図３は、サーバのハードウェア構成例を示すブロック図である。
【図４】図４は、クライアント装置のハードウェア構成例を示すブロック図である。
【図５】図５は、実施の形態１にかかるサーバの機能的構成例を示すブロック図である。
【図６】図６は、クライアント装置の機能的構成例を示すブロック図である。
【図７】図７は、補正補足情報の記憶内容の一例を示す説明図である。
【図８】図８は、実施の形態１にかかる補正処理の動作例を示す説明図（その１）である。
【図９】図９は、実施の形態１にかかる補正処理の動作例を示す説明図（その２）である。
【図１０】図１０は、エッジ検出を利用したカーソルＩＤの選択例を示す説明図である。
【図１１】図１１は、クライアント装置による描画処理手順の一例を示すフローチャートである。
【図１２】図１２は、サーバによる描画処理手順の一例を示すフローチャートである。
【図１３】図１３は、実施の形態１にかかる補正処理手順の一例を示すフローチャートである。
【図１４】図１４は、ステップＳ１３０６の処理について、エッジ検出を利用してメッシュ領域を選択する処理手順の一例を示すフローチャートである。
【図１５】図１５は、実施の形態２にかかるサーバの機能構成例を示すブロック図である。
【図１６】図１６は、補正用更新領域情報の記憶内容の一例を示す説明図である。
【図１７】図１７は、実施の形態２にかかる補正処理の動作例を示す説明図（その１）である。
【図１８】図１８は、実施の形態２にかかる補正処理の動作例を示す説明図（その２）である。
【図１９】図１９は、拡大画像の画像情報の表示位置の一例を示す説明図である。
【図２０】図２０は、実施の形態２にかかる補正処理手順の一例を示すフローチャートである。
【発明を実施するための形態】
【００１０】
以下に添付図面を参照して、開示の補正方法、システム、情報処理装置、および補正プログラムの実施の形態を詳細に説明する。
【００１１】
（補正方法の一実施例）
図１は、実施の形態にかかる補正方法の一実施例を示す説明図である。図１において、システム１００は、情報処理装置１０１と、端末装置１０２と、を含む。システム１００は、たとえば、端末装置１０２に最低限の機能しか持たせず、情報処理装置１０１でアプリケーションやデータを管理するシンクライアントシステムである。
【００１２】
情報処理装置１０１は、ネットワークを介して端末装置１０２と通信可能なコンピュータである。また、情報処理装置１０１は、端末装置１０２の表示画面１１０に表示する画像の画像情報を生成して、端末装置１０２に画像の画像情報を送信する機能を有する。情報処理装置１０１は、たとえば、サーバである。サーバが実行するＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）は特定のアーキテクチャに依存せず、どのようなＯＳでもよい。
【００１３】
画像は、たとえば、端末装置１０２の要求に応じて情報処理装置１０１で実行されるアプリケーションソフトウェアの実行結果を表示する画面の画像である。アプリケーションソフトウェアは、たとえば、設計支援ツール、プレゼンテーションソフト、表計算ソフト、電子メールソフトなどである。画像情報は、たとえば、製図などに利用されるＣＡＤ（Ｃｏｍｐｕｔｅｒ  Ａｉｄｅｄ  Ｄｅｓｉｇｎ）データや商品のカタログデータなどである。アプリケーションソフトウェアを、以下、「アプリ」と称す。
【００１４】
端末装置１０２は、ネットワークを介して情報処理装置１０１と通信可能なコンピュータである。また、端末装置１０２は、表示画面１１０を有し、情報処理装置１０１から受信した画像情報に基づいて、表示画面１１０に画像を表示する機能を有する。端末装置１０２は、たとえば、タブレット端末、ノートＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）、スマートフォン、携帯電話機、携帯音楽プレイヤーなどである。
【００１５】
ここで、端末装置１０２が、タブレット端末、スマートフォン、携帯電話機である場合、端末装置１０２が利用者に提供するユーザインターフェースと、情報処理装置１０１が実行するアプリが想定するユーザインターフェースとが異なる場合がある。この場合、端末装置１０２を操作する利用者が、情報処理装置１０１が実行するアプリを操作しづらい場合がある。
【００１６】
具体的には、端末装置１０２が、ユーザインターフェースとして、タッチ操作に特化しており、情報処理装置１０１が実行するアプリが想定するユーザインターフェースが、マウスによる操作を想定する場合である。タッチ操作に関して、利用者は、指の大きさより狭い領域へのタッチ操作への指示を行い難い。一方、マウスによる操作を用いると、利用者は、数画素程度への狭い領域へのクリック、ドラッグ等も容易に行うことができる。したがって、情報処理装置１０１が実行するアプリが狭い領域へのクリック、ドラッグ等を容易に行うことができるユーザインターフェースを想定して開発された場合、端末装置１０２を操作する利用者は、情報処理装置１０１が実行するアプリを操作しづらくなる。
【００１７】
なお、指示を行い難い狭い領域への操作が発生することは、情報処理装置１０１と端末装置１０２が、共にマウスによる操作を提供しても起こり得る。たとえば、端末装置１０２の画面の画素数が少なく、情報処理装置１０１の画面の画素数が多い場合である。また、画面の画素数が情報処理装置１０１と端末装置１０２が同じであっても、端末装置１０２を利用する利用者が、狭い領域へのマウスによる操作を苦手とする場合もありえる。
【００１８】
狭い領域へのタッチ操作を容易にする技術として、たとえば、以下の２つの技術がある。１つ目の技術は、端末装置１０２上で、タッチされた周辺の拡大画面を表示し、利用者に現在のタッチされた座標位置を拡大画面内で表示するものである。しかし、１つ目の技術は、指の細やかな動きにより、座標位置を変更することになる。また、１つ目の技術は、拡大画面を表示するために、利用者が操作手順を追加することになる。
【００１９】
２つ目の技術は、特定の操作命令が実行された場合、カーソルを特定の位置に移動するものである。特定の位置は、たとえば、ダイアログ内のＯＫボタンが配置された位置、キャンセルボタンが配置された位置等である。しかし、２つ目の技術は、特定の位置を特定するために、ＯＳやアプリが扱う命令を解釈することになるため、ＯＳやアプリへの依存度が高くなる。また、情報処理装置１０１に新たに追加されたアプリに対応することが困難である。
【００２０】
そこで、実施の形態１、２にかかる情報処理装置１０１は、端末装置１０２の画面上で行われたタッチ操作の位置を、タッチ操作の位置周辺で仮想的にカーソルを移動させた場合に視覚効果のために表示画像が変化する位置に補正する。実施の形態１にかかる情報処理装置１０１は、カーソルを移動させた場合に視覚効果のためにカーソルの画像が変化した位置に補正する。これにより、情報処理装置１０１は、指で指定し難い狭い領域へのタッチ操作を容易にする。
【００２１】
図１では、端末装置１０２は、三角形ＴＲ１と、四角形ＲＥＣＴ１を表示する。ここで、操作する利用者が、三角形ＴＲ１の大きさを拡大または縮小したいことを想定する。端末装置１０２は、利用者による操作によって、表示画面１１０上で行われたタッチ操作の操作情報を受け付ける。図１にて、操作情報により特定される操作位置は、操作位置Ｐ１とする。端末装置１０２は、受け付けた操作情報を情報処理装置１０１に送信する。
【００２２】
操作情報を受け付けた場合、情報処理装置１０１は、操作位置Ｐ１から所定範囲内の座標位置の各々の座標位置に対して、操作位置Ｐ１を各々の座標位置に設定した場合に更新される表示画面１１０の更新領域の画像情報を取得する。所定範囲は、たとえば、操作位置Ｐ１を中心に閾値分拡げた範囲とする。閾値の指定方法については、図８にて説明する。また、各々の座標位置は、操作位置Ｐ１が含まれてもよい。以下、所定範囲を、「探索範囲」と呼称する。
【００２３】
更新領域の画像情報は、更新領域に含まれる画像を特定するＩＤや、画像フォーマットに従った更新領域の画像データや、更新領域の画像データのハッシュ値を含む。画像フォーマットは、非圧縮のＲＧＢ値の配列でもよいし、ＢＭＰ（ｍｉｃｒｏｓｏｆｔ  ｗｉｎｄｏｗｓ（登録商標）  ＢｉｔＭａＰ  ｉｍａｇｅ）でもよいし、ＧＩＦ（Ｇｒａｐｈｉｃｓ  Ｉｎｔｅｒｃｈａｎｇｅ  Ｆｏｒｍａｔ）、ＪＰＥＧ（Ｊｏｉｎｔ  Ｐｈｏｔｏｇｒａｐｈｉｃ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ）等の画像フォーマットでもよい。図１の例では、情報処理装置１０１は、更新領域の画像情報として、更新領域に含まれるカーソルの画像データのハッシュ値を取得する。ハッシュ値は、衝突し難いハッシュアルゴリズムにより求められることが好ましく、ハッシュアルゴリズムは、たとえば、ＭＤ５（Ｍｅｓｓａｇｅ  Ｄｉｇｅｓｔ  Ａｌｇｏｒｉｔｈｍ  ５）等である。
【００２４】
図１の例では、情報処理装置１０１は、操作位置Ｐ１にて、通常のカーソルＣ１の画像データのハッシュ値を取得する。また、情報処理装置１０１は、探索範囲内の位置Ｐ２にて、カーソルＣ２の画像データのハッシュ値を取得する。カーソルＣ２は、ドラッグすることにより、三角形ＴＲ１を拡大縮小することができることを示す。なお、情報処理装置１０１が実行するアプリはマウスによる操作を想定して開発されたため、カーソルＣ２に変化する領域は、狭い領域となる。
【００２５】
情報処理装置１０１は、通常のカーソルＣ１の画像データのハッシュ値およびカーソルＣ２の画像データのハッシュ値を取得することにより、位置Ｐ２にて視覚効果のためにカーソルの画像が変化したことを判断する。したがって、情報処理装置１０１は、探索範囲内の座標位置から、位置Ｐ２を選択して、カーソルの座標位置を位置Ｐ１に補正する。これにより、情報処理装置１０１は、指で指定し難い狭い領域へのタッチ操作を容易にする。以下、図２〜図１４を用いて、実施の形態１にかかるシステム１００について説明する。
【００２６】
（実施の形態１）
（シンクライアントシステムのシステム構成例）
次に、図１に示したシステム１００をシンクライアントシステムに適用した場合について説明する。
【００２７】
図２は、シンクライアントシステムのシステム構成例を示す説明図である。図２において、シンクライアントシステム２００は、サーバ２０１と、複数のクライアント装置２０２（図２の例では、３台）とを含む。シンクライアントシステム２００において、サーバ２０１およびクライアント装置２０２は、ネットワーク２１０を介して通信可能に接続される。ネットワーク２１０は、たとえば、移動体通信網（携帯電話網）やインターネットなどである。
【００２８】
シンクライアントシステム２００は、クライアント装置２０２が表示する画面をリモートでサーバ２０１に制御させる。シンクライアントシステム２００によれば、実際にはサーバ２０１が実行した処理結果や保持するデータをクライアント装置２０２に表示させる。これにより、シンクライアントシステム２００は、あたかもクライアント装置２０２が主体となって処理を実行したり、データを保持したりするかのように振る舞うことができる。
【００２９】
サーバ２０１は、クライアント装置２０２に表示する画面をリモートで制御するリモート画面制御サービスを提供するコンピュータである。サーバ２０１は、図１に示した情報処理装置１０１に相当する。クライアント装置２０２は、サーバ２０１からリモート画面制御サービスの提供を受けるコンピュータである。クライアント装置２０２は、図１に示した端末装置１０２に相当する。
【００３０】
（サーバ２０１のハードウェア構成例）
図３は、サーバのハードウェア構成例を示すブロック図である。図３において、サーバ２０１は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）３０１と、メモリ３０２と、Ｉ／Ｆ（Ｉｎｔｅｒｆａｃｅ）３０３と、磁気ディスクドライブ３０４と、磁気ディスク３０５と、を有する。また、各構成部はバス３００によってそれぞれ接続される。
【００３１】
ここで、ＣＰＵ３０１は、サーバ２０１の全体の制御を司る。メモリ３０２は、たとえば、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）およびフラッシュＲＯＭなどを有する。具体的には、たとえば、フラッシュＲＯＭやＲＯＭが各種プログラムを記憶し、ＲＡＭがＣＰＵ３０１のワークエリアとして使用される。メモリ３０２に記憶されるプログラムは、ＣＰＵ３０１にロードされることで、コーディングされた処理をＣＰＵ３０１に実行させることになる。
【００３２】
Ｉ／Ｆ３０３は、通信回線を通じてネットワーク２１０に接続され、ネットワーク２１０を介して他のコンピュータ（たとえば、クライアント装置２０２）に接続される。そして、Ｉ／Ｆ３０３は、ネットワーク２１０と内部のインターフェースを司り、他のコンピュータからのデータの入出力を制御する。Ｉ／Ｆ３０３には、たとえば、モデムやＬＡＮアダプタなどを採用することができる。
【００３３】
磁気ディスクドライブ３０４は、ＣＰＵ３０１の制御に従って磁気ディスク３０５に対するデータのリード／ライトを制御する。磁気ディスク３０５は、磁気ディスクドライブ３０４の制御で書き込まれたデータを記憶する。なお、サーバ２０１は、上述した構成部の他、たとえば、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）、キーボード、ディスプレイなどを有することにしてもよい。
【００３４】
（クライアント装置２０２のハードウェア構成例）
図４は、クライアント装置のハードウェア構成例を示すブロック図である。図４において、クライアント装置２０２は、ＣＰＵ４０１と、ＲＯＭ４０２と、ＲＡＭ４０３と、ディスクドライブ４０４と、ディスク４０５と、Ｉ／Ｆ４０６と、ディスプレイ４０７と、タッチパネル４０８と、を有する。また、各構成部はバス４００によってそれぞれ接続される。
【００３５】
ここで、ＣＰＵ４０１は、クライアント装置２０２の全体の制御を司る。ＲＯＭ４０２は、ブートプログラムなどのプログラムを記憶する。ＲＡＭ４０３は、ＣＰＵ４０１のワークエリアとして使用される。ディスクドライブ４０４は、ＣＰＵ４０１の制御に従ってディスク４０５に対するデータのリード／ライトを制御する。ディスク４０５は、ディスクドライブ４０４の制御で書き込まれたデータを記憶する。ディスクドライブ４０４には、たとえば、磁気ディスクドライブ、ソリッドステートドライブなどを採用することができる。たとえばディスクドライブ４０４が磁気ディスクドライブである場合、ディスク４０５には、磁気ディスクを採用することができる。また、ディスクドライブ４０４がソリッドステートドライブである場合、ディスク４０５には、半導体素子メモリを採用することができる。
【００３６】
Ｉ／Ｆ４０６は、通信回線を通じてネットワーク２１０に接続され、ネットワーク２１０を介して他のコンピュータに接続される。そして、Ｉ／Ｆ４０６は、ネットワーク２１０と内部のインターフェースを司り、他のコンピュータからのデータの入出力を制御する。
【００３７】
ディスプレイ４０７は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。ディスプレイ４０７は、たとえば、ＴＦＴ（Ｔｈｉｎ  Ｆｉｌｍ  Ｔｒａｎｓｉｓｔｏｒ）液晶ディスプレイなどを採用することができる。ディスプレイ４０７は、たとえば、図１に示した表示画面１１０を有する。
【００３８】
タッチパネル４０８は、利用者によるタッチ操作やドラッグ操作を検出する。なお、図４に示したクライアント装置２０２は、タブレット端末を想定する。クライアント装置２０２がパーソナル・コンピュータであれば、クライアント装置２０２は、キーボード、マウス等を有してもよい。
【００３９】
（サーバ２０１の機能的構成例）
図５は、実施の形態１にかかるサーバの機能的構成例を示すブロック図である。図５において、サーバ２０１は、受付部５０１と、取得部５０２と、選択部５０３と、補正部５０４と、送信部５０５と、を含む。制御部となる受付部５０１〜送信部５０５は、記憶装置に記憶されたプログラムをＣＰＵ３０１が実行することにより、受付部５０１〜送信部５０５の機能を実現する。記憶装置とは、具体的には、たとえば、図３に示したメモリ３０２、磁気ディスク３０５などである。
【００４０】
また、サーバ２０１は、補正補足情報５１０にアクセス可能である。補正補足情報５１０は、探索範囲を分割した領域ごとのカーソルの画像を特定する情報を記憶する。補正補足情報５１０の記憶内容は、図７にて説明する。
【００４１】
受付部５０１は、クライアント装置２０２の画面上で行われた操作の操作情報を受け付ける。たとえば、受付部５０１は、ドラッグ操作、フリック操作、ピンチアウト操作、ピンチイン操作等の操作入力を表す操作情報を受け付ける。なお、受け付けた操作情報は、メモリ３０２、磁気ディスク３０５等の記憶装置に格納される。
【００４２】
取得部５０２は、受付部５０１によって操作情報が受け付けられた場合、操作情報から特定される操作位置から探索範囲内の複数の座標位置の各々の座標位置に対して、操作位置を各々の座標位置に設定した場合に更新される画面の更新領域の画像情報を取得する。たとえば、取得部５０２は、探索範囲内の、ある座標位置に対して、カーソルの移動命令をＯＳに発行して、カーソルの移動によりアプリがマウスオーバー処理を行って更新される画像情報を取得する。
【００４３】
また、取得部５０２は、操作情報を受け付けた場合、各々の座標位置に対して、操作位置を示すカーソルの座標位置を各々の座標位置に設定した場合に更新される画面の更新領域に含まれるカーソルの画像情報を取得してもよい。なお、取得した画像情報は、補正補足情報５１０等の記憶領域に格納される。
【００４４】
選択部５０３は、各々の座標位置に対して取得した更新領域の画像情報に基づいて、複数の座標位置から、いずれかの座標位置を選択する。たとえば、選択部５０３は、画像情報が変化した座標位置を選択する。
【００４５】
また、選択部５０３は、複数の座標位置のうち取得したカーソルの画像情報が同一の内容となる座標位置の個数に基づいて、複数の座標位置から、いずれかの座標位置を選択してもよい。また、選択部５０３は、複数の座標位置のうち取得したカーソルの画像情報が同一の内容となる座標位置の個数が最も少ない座標位置から、いずれかの座標位置を選択してもよい。
【００４６】
たとえば、通常のカーソルの画像情報となった座標位置が１個あり、上下にドラッグ操作が行えることを示すカーソルの画像情報となった座標位置が１０個あり、左右にドラッグ操作が行えることを示すカーソルの画像情報となった座標位置が３個あるとする。このとき、選択部５０３は、通常のカーソルの画像情報を除いて、最も少ない、左右にドラッグ操作が行えることを示すカーソルの画像情報となった座標位置のうちのいずれかの座標位置を選択する。また、選択部５０３は、左右にドラッグ操作が行えることを示すカーソルの画像情報となった座標位置のうち、操作位置に最も近い座標位置を選択してもよい。
【００４７】
また、選択部５０３は、第１の線と第２の線とが交差する座標位置から、いずれかの座標位置を選択してもよい。第１の線は、複数の座標位置のうち取得部５０２によって取得されたカーソルの画像情報が同一の内容となる第１の座標位置群の座標位置同士を結ぶことにより形成される線である。第２の線は、取得部５０２によって取得されたカーソルの画像情報が同一の内容となる第２の座標位置群の座標位置同士を結ぶことにより形成される線である。なお、選択された座標位置は、メモリ３０２、磁気ディスク３０５等の記憶装置に格納される。
【００４８】
補正部５０４は、操作位置を、選択部５０３によって選択されたいずれかの座標位置に補正する。たとえば、補正部５０４は、座標位置に対して、カーソルの移動命令をＯＳに発行する。
【００４９】
送信部５０５は、フレームバッファの更新された画像情報をクライアント装置２０２に送信する。フレームバッファは、表示画面１１０に表示する１フレーム分の画像データを一時的に保存する記憶領域であり、たとえば、ＶＲＡＭ（Ｖｉｄｅｏ  ＲＡＭ）である。フレームバッファは、たとえば、メモリ３０２、磁気ディスク３０５などの記憶装置により実現される。
【００５０】
（クライアント装置２０２の機能的構成例）
図６は、クライアント装置の機能的構成例を示すブロック図である。図６において、クライアント装置２０２は、取得部６０１と、送信部６０２と、受信部６０３と、表示制御部６０４と、を含む構成である。取得部６０１〜表示制御部６０４は制御部となる機能である。具体的に、たとえば、図４に示したＲＯＭ４０２、ＲＡＭ４０３、ディスク４０５などの記憶装置に記憶されたプログラムをＣＰＵ４０１に実行させることにより、または、Ｉ／Ｆ４０６により、取得部６０１〜表示制御部６０４の機能を実現する。各機能部の処理結果は、たとえば、ＲＡＭ４０３、ディスク４０５などの記憶装置に記憶される。
【００５１】
取得部６０１は、利用者の操作入力を表す操作情報を取得する。具体的には、たとえば、取得部６０１は、表示画面上でのタッチパネル４０８を用いた利用者の操作入力を受け付けることにより、利用者の操作入力を表す操作情報を取得する。たとえば、取得部６０１は、タッチパネル４０８を用いてタッチ操作、ドラッグ操作、フリック操作、ピンチアウト操作、ピンチイン操作等の操作入力を表す操作情報を取得する。さらに、取得部６０１は、サーバ２０１で実行中のアプリが解釈可能なマウスを用いた操作入力に変換した操作情報を取得することにしてもよい。ただし、操作情報の変換処理は、サーバ２０１側で行われることにしてもよい。なお、ドラッグ操作のように操作入力が継続して行われる場合がある。この場合、取得部６０１は、利用者の操作入力を表す操作情報を一定時間間隔ごとに取得することにしてもよい。
【００５２】
送信部６０２は、取得部６０１によって取得された操作情報をサーバ２０１に送信する。たとえば、送信部６０２は、取得部６０１によって操作情報が取得されると、取得された都度、取得された操作情報をサーバ２０１に送信する。
【００５３】
受信部６０３は、サーバ２０１から更新された画像情報を受信する。たとえば、受信部６０３は、サーバ２０１で実行中のアプリによって更新された画像情報をサーバ２０１から受信する。表示制御部６０４は、ディスプレイ４０７を制御して、受信部６０３によって受信された更新された画像情報を表示する。
【００５４】
図７は、補正補足情報の記憶内容の一例を示す説明図である。補正補足情報５１０は、メッシュ領域ごとのカーソルの画像を特定する情報を記憶する。図７に示す補正補足情報５１０は、レコード７０１−１〜レコード７０１−３を有する。
【００５５】
補正補足情報５１０は、メッシュ領域、カーソルＩＤという２つのフィールドを含む。メッシュ領域フィールドには、メッシュ領域を一意に特定する情報が格納される。メッシュ領域を一意に特定する情報は、たとえば、メッシュ領域の各頂点の座標位置である。また、メッシュ領域が矩形領域であるならば、メッシュ領域を一意に特定する情報は、左上の頂点の座標位置および右下の頂点の座標位置でもよい。さらに、メッシュ領域が矩形領域であり、メッシュ領域の範囲が一定であるならば、メッシュ領域を一意に特定する情報は、メッシュ領域の中心の座標位置でもよい。実施の形態１では、メッシュ領域が矩形領域であり、メッシュ領域の範囲が縦４［画素］×横４［画素］であるとして、メッシュ領域フィールドには、メッシュ領域の中心の座標位置を格納する。
【００５６】
カーソルＩＤフィールドには、該当のメッシュ領域でのカーソルの画像を特定する情報が格納される。カーソルの画像を特定する情報は、たとえば、ハッシュ関数を用いて、取得したカーソルの画像のハッシュ値を、カーソルの画像を特定する情報としてもよい。また、カーソルが変更される際に、カーソルを変更するＡＰＩの引数となるカーソル画像のＩＤが本補正処理を実行するソフトウェアが取得できるならば、カーソルの画像を特定する情報は、カーソル画像のＩＤでもよい。図７の例では、カーソルＩＤ：２２と、カーソルＩＤ：１３の例を示す。
【００５７】
たとえば、レコード７０１−１は、中心の座標位置が（３０２，５０２）となるメッシュ領域でのカーソルＩＤが“２２”となることを示す。
【００５８】
図８は、実施の形態１にかかる補正処理の動作例を示す説明図（その１）である。また、図９は、実施の形態１にかかる補正処理の動作例を示す説明図（その２）である。図８に示すクライアント装置２０２は、サーバ２０１から送信された、三角形と四角形の画像を表示した状態である。この状態で、クライアント装置２０２は、利用者により特定の操作を受け付ける。特定の操作は、通常のユーザインターフェースで行われる操作と区別がつけば、どのような操作でもよい。たとえば、実施の形態１における特定の操作は、２本指で画面をなぞり始める操作であるとする。
【００５９】
また、特定の操作であると認識する装置は、クライアント装置２０２でもよいし、サーバ２０１でもよい。たとえば、クライアント装置２０２が特定の操作であると認識する場合、２本指で画面をなぞり始める操作を受け付けた場合、特定の操作を示す操作種別と、操作位置情報として、２本の指がタッチパネルに触れた点の中点の座標位置とをサーバ２０１に送信する。また、クライアント装置２０２が特定の操作であると認識する場合、２本の指がタッチパネルに触れた点の座標位置を送信し、サーバ２０１が、２点の座標位置を受け付けた場合に、特定の操作であると認識する。
【００６０】
図８と図９との説明では、クライアント装置２０２が、特定の操作であることを認識するとする。図８の（Ａ）が示すように、クライアント装置２０２は、特定の操作を示すコマンドＩＤ：１３と、操作位置情報として、点情報Ｐ１（ｘ，ｙ＝４００，６００）とをサーバ２０１に送信する。ただし、点情報内のｘは、表示画面１１０での点の横方向の座標位置を示す。点情報内のｙは、表示画面１１０での点の縦方向の座標位置を示す。
【００６１】
特定の操作を示すコマンドＩＤと操作位置情報とを受け付けた後、サーバ２０１は、図８の（Ｂ）が示すように、カーソルの移動命令を実行する探索範囲を算出する。探索範囲が、カーソルの座標位置の補正を行う範囲となる。たとえば、サーバ２０１は、操作位置情報の座標位置を中心に、閾値として前後左右１００［画素］分拡げた探索範囲を算出する。
【００６２】
図８の例では、サーバ２０１は、（ｘ，ｙ＝４００，６００）を中心として、探索範囲Ｂ１（ｘ，ｙ，ｗ，ｈ＝３００，５００，２００，２００）を算出する。ただし、探索範囲内のｘは、表示画面１１０での探索範囲の左上の点の横方向の座標位置を示す。探索範囲内のｙは、表示画面１１０での探索範囲の左上の点の縦方向の座標位置を示す。探索範囲内のｗは、表示画面１１０での探索範囲の横方向の幅の画素数を示す。探索範囲内のｈは、表示画面１１０での探索範囲の縦方向の高さの画素数を示す。
【００６３】
また、閾値は、シンクライアントシステム２００の管理者が指定してもよい。または、クライアント装置２０２が、シンクライアントシステム２００の使用を開始した際に、利用者の指が表示画面に触れた範囲をサーバ２０１に送信し、サーバ２０１は、触れた範囲を閾値として設定してもよい。
【００６４】
探索範囲の算出後、サーバ２０１は、図８の（Ｃ）が示すように、探索範囲を分割したメッシュ領域ごとに、カーソルの移動命令を実行して、カーソルの画像を取得する。カーソルの画像を取得した後、サーバ２０１は、カーソルの画像をハッシュ関数に通して得た一意の値をカーソルＩＤとして取得し、メッシュ領域とカーソルＩＤとを補正補足情報５１０に追加する。たとえば、図８の（Ｃ）では、レコード７０１−１がメッシュ領域Ｒ１でのカーソルＩＤを示し、レコード７０１−２がメッシュ領域Ｒ２でのカーソルＩＤを示し、レコード７０１−３がメッシュ領域Ｒ３でのカーソルＩＤを示す。
【００６５】
各メッシュ領域のカーソルＩＤを取得後、サーバ２０１は、図８の（Ｄ）が示すように、探索領域Ｂ１内のカーソルＩＤごとに、出現した回数の合計を算出し、算出した合計の最も小さいカーソルＩＤのメッシュ領域を選択する。図８の（Ｄ）の例では、サーバ２０１は、算出した合計の最も小さいカーソルＩＤ：１３のメッシュ領域Ｒ３のメッシュ領域（ｘ，ｙ＝４１８，６１０）を選択する。なお、選択する際に、サーバ２０１は、デフォルトカーソルを示すカーソルＩＤを選択対象から除いてもよい。サーバ２０１は、図９の（Ｅ）が示す処理を行う。
【００６６】
メッシュ領域の選択後、サーバ２０１は、図９の（Ｅ）が示すように、図８の（Ａ）にて受け付けた操作位置情報Ｐ１（ｘ，ｙ＝４００，６００）を、選択したメッシュ領域の中心の点を用いて、操作位置情報Ｐ２（ｘ，ｙ＝４１８，６１０）に補正する。サーバ２０１は、カーソルの座標位置を操作位置情報Ｐ２に設定するようにＯＳに通知して、ドラッグ操作を開始する。また、サーバ２０１は、ドラッグ操作が開始された画像の画像情報をクライアント装置２０２に送信する。
【００６７】
続けて、図９の（Ｆ）が示すように、利用者が特定の操作をし続けたとする。図９の（Ｆ）では、利用者が、右下方向へのドラッグ操作を行ったとする。この場合、クライアント装置２０２は、特定の操作を示すコマンドＩＤ：１３と、操作位置情報として、点情報Ｐ３（ｘ，ｙ＝４２８，６２０）とをサーバ２０１に送信する。
【００６８】
２つ目以降の特定の操作を示すコマンドＩＤと操作位置情報とを受け付けた場合、サーバ２０１は、図９の（Ｇ）が示すように、特定の操作であるとみなさずに、受け付けた操作を通常のドラッグ操作の続きであると認識し、特定の操作を示すコマンドＩＤをドラッグ操作を示すＩＤへと変換して操作を続行する。結果、サーバ２０１は、ドラッグ操作が行われ、三角形の拡大操作を実行する。
【００６９】
上述した図８の（Ｄ）にて、サーバ２０１は、算出した合計の最も小さいカーソルＩＤのメッシュ領域を選択するが、合計の最も小さいカーソルＩＤとなるメッシュ領域が複数存在する場合もあるし、合計の最も小さいカーソルＩＤが複数となる場合もある。この場合、サーバ２０１は、エッジ検出を利用して、補正領域となるメッシュ領域を選択してもよい。図１０にて、エッジ検出を利用したカーソルＩＤの選択例について説明する。
【００７０】
図１０は、エッジ検出を利用したカーソルＩＤの選択例を示す説明図である。具体的に、図１０では、探索範囲でのカーソルの並び方を利用して、コーナー検出を行い、エッジが交差したメッシュ領域のカーソルＩＤを選択する例について説明する。また、最も小さいカーソルＩＤとなったメッシュ領域を、「補正候補領域」と呼称し、補正候補領域の中心の座標位置を、「補正候補の座標位置」と呼称する。
【００７１】
コーナー検出とは、エッジ検出の一種であり、画像中の隣り合ったピクセルとの色が不連続になるエッジが交差する部分を検出する処理である。コーナー検出には、たとえば、Ｈａｒｒｉｓオペレータによる検出手法を利用することができる。具体的に、サーバ２０１は、コーナー検出に利用するため、メッシュ領域のカーソルＩＤを画像情報へ変換する作業を行う。
【００７２】
サーバ２０１は、各メッシュ領域を１画素とみなし、メッシュ領域に関連付いたカーソルＩＤを色情報として変換を行う。カーソルＩＤを色情報に変換する例として、サーバ２０１は、カーソルＩＤの算出した合計の小さい順からソートした上で、各カーソルＩＤが探索範囲中のメッシュ領域全体に占める割合をカーソルＩＤ毎に算出する。次に、サーバ２０１は、カーソルＩＤに対して占める割合に基づいた色情報の付与を行う。色情報は、たとえば、「（２５６／１００）×カーソルＩＤが占めるパーセンテージ」という式で算出される。サーバ２０１は、全体の２％を占めるカーソルＩＤには２．５６×２＝５．１２≒５を与え、全体の３０％を占めるカーソルＩＤには同様に７７を与え、…、という形で色情報を与える。与えられた色情報は、８ビットグレースケールを想定する。カーソルＩＤの全体に占める割合に基づき異なる色情報を与えることにより、サーバ２０１は、マウスカーソルＩＤが異なる境界を検出しやすくすることが可能となる。
【００７３】
次に、サーバ２０１は、変換した画像情報を、Ｈａｒｒｉｓオペレータを利用したコーナー検出処理に渡し、コーナーとなる画素の座標位置を取得する。以下、コーナーとなる画素の座標位置を、「コーナー位置」と称する。
【００７４】
コーナー位置を取得した後、サーバ２０１は、コーナー位置を元のメッシュ領域の座標位置に変換する。本実施の形態では、サーバ２０１は、メッシュ領域の左上の座標（ｘ，ｙ）にコーナー位置の値を４倍した値（４ｘ，４ｙ）を加えることにより、コーナー位置に該当するメッシュ領域の座標位置を算出可能である。
【００７５】
続けて、サーバ２０１は、コーナー位置と、タッチされた操作位置との距離が他の最近傍の補正候補の座標位置との距離×閾値より近いかどうか判定を行う。閾値は、たとえば２となる。前述の判定処理は、利用者がコーナーを操作する場合と、コーナーを操作することを意図せず操作した場合でもコーナー位置が検出されてしまった場合と、を切り分けるために行う処理である。
【００７６】
コーナー位置と操作位置との距離が、コーナー位置と他の最近傍の補正候補の座標位置との距離×閾値より小さい場合、サーバ２０１は、コーナー位置に該当するメッシュ領域の中心の座標位置を補正座標に選択して補正を行う。一方、コーナー位置と操作位置との距離が、他の最近傍の補正候補の座標位置との距離×閾値以上である場合、サーバ２０１は、他の最近傍の補正候補の座標位置を補正座標に選択して補正を行う。
【００７７】
以上説明を行ったエッジ検出は、サーバ上のアプリが、四角いインターフェースやウィンドウによって形成される特性を利用して検出を行う。たとえば、図１０の（Ａ）では、三角形ＴＲ１に、ドラッグ操作を行うことにより形状を変化することができる枠ＦＲ１が付与された状態を示す。この状態で、利用者により特定の操作を受け付けた後、サーバ２０１が探索範囲Ｂ１を算出し、探索範囲Ｂ１内のメッシュ領域ごとに、カーソルＩＤを取得する。図１０の（Ｂ）は、カーソルＩＤを取得した結果、各メッシュ領域のカーソルＩＤを示す。具体的に、図１０の（Ｂ）では、メッシュ領域群Ｒ４とＲ５に関連付いたカーソルＩＤ：２２、メッシュ領域Ｒ６に関連付いたカーソルＩＤ：１１、メッシュ領域Ｒ７に関連付いたカーソルＩＤ：１２およびメッシュ領域Ｒ８に関連付いたカーソルＩＤ：１３を示す。また、図１０の（Ｂ）では、カーソルＩＤが変化しなかったメッシュ領域群Ｒ９を示す。
【００７８】
図１０の（Ｂ）を用いて、サーバ２０１が行うエッジ検出の一例を示す。サーバ２０１は、カーソルＩＤを８ビットグレースケールの符号へとマッピングした画像データを作成する。各メッシュ領域群の全体に占める割合が、Ｒ６、Ｒ７、Ｒ８がそれぞれ２％ずつ、Ｒ４、Ｒ５がそれぞれ１０％ずつ、Ｒ９が５０％であるとする。この時、サーバ２０１は、Ｒ６、Ｒ７、Ｒ８の群に属する各メッシュ領域へ５の色情報を与え、Ｒ４・Ｒ５の群に属する各メッシュ領域へ２６の色情報を与え、Ｒ９の各メッシュ領域へ１２８の色情報を与える。次に、サーバ２０１は、メッシュ領域に色情報を与えて作成した画像情報を、Ｈａｒｒｉｓオペレータを利用したコーナー検出処理に渡し、コーナー位置を取得する。取得したコーナー位置が（ｘ、ｙ＝１００、２００）であった時、サーバ２０１はコーナー位置を４倍して（ｘ、ｙ＝４００、８００）とし元のメッシュ領域の座標での位置を算出する。続けて、サーバ２０１は、「コーナー位置と操作位置の距離」と「他の最近傍の補正候補の座標と操作位置の距離×閾値（２）」を比較する。たとえば、コーナー位置と操作位置との距離が３０画素であり、他の最近傍の補正候補と２０画素離れている場合、サーバ２０１は、３０＜２０×２であるためコーナー位置を補正座標として補正を行う。コーナー位置が最近傍の補正候補と１０画素しか離れていない場合、サーバ２０１は、補正候補を補正座標として選択し補正を行う。
【００７９】
結果、図１０の（Ｂ）では、サーバ２０１は、コーナー検出によりメッシュ領域群Ｒ４、Ｒ５をエッジとして検出し、メッシュ領域群Ｒ４とＲ５の交点となるメッシュ領域Ｒ５を補正領域として選択する。これにより、サーバ２０１は、補正補足情報５１０を利用して、より多くの場合に適切な補正座標の算出が可能となる。
【００８０】
続けて、図８〜図１０で説明した動作を行うフローチャートを、図１１〜図１４を用いて説明する。
【００８１】
図１１は、クライアント装置による描画処理手順の一例を示すフローチャートである。クライアント装置による描画処理は、サーバ２０１から受信した画像情報を描画する処理である。クライアント装置２０２は、利用者による操作があったか否かを判断する（ステップＳ１１０１）。利用者による操作がない場合（ステップＳ１１０１：Ｎｏ）、クライアント装置２０２は、一定時間経過後、ステップＳ１１０１の処理を実行する。利用者による操作があった場合（ステップＳ１１０１：Ｙｅｓ）、クライアント装置２０２は、操作情報を逐次サーバ２０１へ送信する（ステップＳ１１０２）。次に、クライアント装置２０２は、サーバ２０１から、更新した画像情報を受信したか否かを判断する（ステップＳ１１０３）。更新した画像情報が未受信である場合（ステップＳ１１０３：Ｎｏ）、クライアント装置２０２は、ステップＳ１１０１の処理に移行する。
【００８２】
更新した画像情報を受信した場合（ステップＳ１１０３：Ｙｅｓ）、クライアント装置２０２は、更新した画像情報をフレームバッファに反映する（ステップＳ１１０４）。ステップＳ１１０４の実行終了後、クライアント装置２０２は、ステップＳ１１０１の処理を実行する。クライアント装置による描画処理を実行することにより、クライアント装置２０２は、サーバ２０１にて更新した画像情報を描画して、操作が反映された画像情報を提供することができる。
【００８３】
図１２は、サーバによる描画処理手順の一例を示すフローチャートである。サーバによる画像処理は、クライアント装置２０２からの操作情報を反映した画像情報を生成して、クライアント装置２０２に送信する処理である。
【００８４】
サーバ２０１は、一定時間が経過したか否かを判断する（ステップＳ１２０１）。たとえば、サーバ２０１は、３０［Ｆｒａｍｅｓ  Ｐｅｒ  Ｓｅｃｏｎｄ：ｆｐｓ］で表示画面を更新する場合、一定時間として０．０３３［ミリ秒］経過したか否かを判断する。一定時間が経過していない場合（ステップＳ１２０１：Ｎｏ）、サーバ２０１は、一定時間経過後、ステップＳ１２０１の処理を実行する。一定時間が経過した場合（ステップＳ１２０１：Ｙｅｓ）、サーバ２０１は、フレームバッファに更新があったか否かを判断する（ステップＳ１２０２）。なお、更新があったかを比較するデータは、一定時間の前のフレームバッファのデータである。
【００８５】
フレームバッファに更新がある場合（ステップＳ１２０２：Ｙｅｓ）、サーバ２０１は、フレームバッファのうちの更新した画像情報を生成する（ステップＳ１２０３）。次に、サーバ２０１は、更新した画像情報をクライアント装置２０２に送信する（ステップＳ１２０４）。ステップＳ１２０４の処理終了後、サーバ２０１は、ステップＳ１２０５の処理に移行する。
【００８６】
フレームバッファに更新がない場合（ステップＳ１２０２：Ｎｏ）、または更新した画像情報をクライアント装置に送信後（ステップＳ１２０４）、サーバ２０１は、クライアント装置２０２により、操作情報を受け付けたか否かを判断する（ステップＳ１２０５）。操作情報を受け付けていない場合（ステップＳ１２０５：Ｎｏ）、サーバ２０１は、ステップＳ１２０１の処理に移行する。操作情報を受け付けた場合（ステップＳ１２０５：Ｙｅｓ）、続けて、サーバ２０１は、受け付けた操作情報が特定の操作を示すか否かを判断する（ステップＳ１２０６）。受け付けた操作情報が特定の操作でない場合（ステップＳ１２０６：Ｎｏ）、サーバ２０１は、受け付けた操作情報をＯＳに通知する（ステップＳ１２１０）。操作情報を受け付けたＯＳは、操作情報をアプリへと通知する。
【００８７】
受け付けた操作情報が特定の操作である場合（ステップＳ１２０６：Ｙｅｓ）、サーバ２０１は、操作情報から、操作位置情報を取得する（ステップＳ１２０７）。次に、サーバ２０１は、操作位置情報から、探索範囲を算出する（ステップＳ１２０８）。続けて、サーバ２０１は、補正処理を実行する（ステップＳ１２０９）。補正処理の詳細は、図１３にて後述する。ステップＳ１２０９の実行終了後、サーバ２０１は、操作情報をＯＳに通知する（ステップＳ１２１０）。受け付けた操作情報がＯＳを経由してアプリに通知され、アプリによってフレームバッファが更新される可能性があるため、ステップＳ１２０２の処理に移行する。サーバによる描画処理を実行することにより、サーバ２０１は、クライアント装置２０２からの操作情報を反映した画像情報を生成して、クライアント装置２０２に送信することができる。
【００８８】
図１３は、実施の形態１にかかる補正処理手順の一例を示すフローチャートである。補正処理は、カーソルの座標位置を補正する処理である。サーバ２０１は、探索範囲をメッシュ領域に分割する（ステップＳ１３０１）。次に、サーバ２０１は、メッシュ領域ごとに、カーソルの移動命令をＯＳに発行する（ステップＳ１３０２）。続けて、サーバ２０１は、メッシュ領域ごとに、メッシュ領域に移動した際のカーソルの画像情報のカーソルＩＤを取得する（ステップＳ１３０３）。次に、サーバ２０１はメッシュ領域と、カーソルＩＤとの組を１レコードとして、補正補足情報５１０に追加する（ステップＳ１３０４）。続けて、サーバ２０１は、カーソルＩＤごとに、出現した回数の合計を算出する（ステップＳ１３０５）。
【００８９】
次に、サーバ２０１は、分割した複数のメッシュ領域から、算出した合計が最も小さいカーソルＩＤのメッシュ領域の中心の座標位置を補正座標位置として選択する（ステップＳ１３０６）。続けて、サーバ２０１は、選択した補正座標位置で、操作位置情報を補正する（ステップＳ１３０７）。ステップＳ１３０７の処理終了後、サーバ２０１は、補正処理を終了する。補正処理を実行することにより、サーバ２０１は、カーソルの座標位置を、利用者が期待する適切な位置に補正することができる。
【００９０】
図１４は、ステップＳ１３０６の処理について、エッジ検出を利用してメッシュ領域を選択する処理手順の一例を示すフローチャートである。サーバ２０１は、算出した合計の最も小さいメッシュ領域が１つか否かを判断する（ステップＳ１４０１）。算出した合計の最も小さいメッシュ領域が１つである場合（ステップＳ１４０１：Ｙｅｓ）、サーバ２０１は、分割した複数のメッシュ領域から、算出した合計が最も小さいカーソルＩＤのメッシュ領域の中心の座標位置を補正座標位置として選択する（ステップＳ１４０２）。ステップＳ１４０２の処理実行後、サーバ２０１は、図１４に示すフローチャートを終了する。
【００９１】
算出した合計の最も小さいメッシュ領域が２つ以上ある場合（ステップＳ１４０１：Ｎｏ）、サーバ２０１は、探索範囲内のメッシュ領域のカーソルＩＤを色情報に変換して、画像情報を生成する（ステップＳ１４０３）。次に、サーバ２０１は、Ｈａｒｒｉｓオペレータを利用したコーナー検出を行って、エッジが交差するコーナー位置を取得する（ステップＳ１４０４）。続けて、サーバ２０１は、コーナー位置が存在するメッシュ領域を算出する（ステップＳ１４０５）。
【００９２】
続けて、サーバ２０１は、コーナー位置と操作位置との距離が他の最近傍の補正候補の座標位置との距離×閾値より小さいか否かを判断する（ステップＳ１４０６）。コーナー位置と操作位置との距離が他の最近傍の補正候補の座標位置との距離×閾値より小さい場合（ステップＳ１４０６：Ｙｅｓ）、サーバ２０１は、コーナー位置が存在するメッシュ領域の中心の座標位置を補正座標位置として選択する（ステップＳ１４０７）。コーナー位置と操作位置との距離が他の最近傍の補正候補の座標位置との距離×閾値以上である場合（ステップＳ１４０６：Ｎｏ）、サーバ２０１は、他の最近傍の補正候補の座標位置を補正座標位置として選択する（ステップＳ１４０８）。ステップＳ１４０７またはステップＳ１４０８の処理を終了した後、サーバ２０１は、図１４に示すフローチャートを終了する。図１４に示すフローチャートを実行することにより、算出した合計の最も小さいメッシュ領域が複数ある場合に、適切な補正座標の算出が可能となる。
【００９３】
以上説明したように、サーバ２０１によれば、端末装置１０２の画面上で行われたタッチ操作の位置を、タッチ操作の位置周辺で仮想的にカーソルを移動させた場合に視覚効果のために表示画像が変化する位置に補正する。これにより、サーバ２０１は、指で指定し難い狭い領域へのタッチ操作を容易にする。
【００９４】
また、サーバ２０１によれば、カーソルの座標位置を、仮想的にカーソルを移動させた場合に視覚効果のためにカーソルの画像が変化した位置に補正してもよい。視覚効果のためにカーソルの画像が変化した位置は、マウスでクリックすることにより何らかの処理を行える位置であることを示す。したがって、サーバ２０１は、指で指定し難い狭い領域からはずれてしまったタッチ操作の操作位置を、何らかの処理を行う位置に補正することができる。
【００９５】
また、サーバ２０１によれば、カーソルの座標位置を、仮想的にカーソルの画像が同一の内容となる座標位置の個数が最も少ない座標位置に補正してもよい。同一の内容となる座標位置の個数が最も少ない座標位置で形成される領域が、探索範囲内で最も狭い領域となる。したがって、仮想的にカーソルの画像が同一の内容となる座標位置の個数が最も少ない座標位置に補正することにより、サーバ２０１は、探索範囲内で最も狭い領域へのタッチ操作を容易にする。
【００９６】
また、サーバ２０１によれば、カーソルの座標位置を、エッジ検出を利用して補正してもよい。これにより、サーバ２０１は、より多くの場合に適切な補正座標の算出が可能となる。
【００９７】
また、サーバ２０１によれば、特定の操作を受け付けた際に、更新領域の画像情報を取得する処理を開始してもよい。これにより、サーバ２０１は、狭い領域へのタッチ操作が要求されない時に、更新領域の画像情報を取得する処理を実行しなくなるため、サーバ２０１にかかる負荷を減らすことができる。
【００９８】
また、サーバ２０１は、利用者の操作量を増加させず、また、ＯＳやアプリの命令に非依存の状態で、指による細かい領域への操作を容易にし、誤操作発生を抑制することができる。
【００９９】
（実施の形態２）
実施の形態１にかかるサーバ２０１は、カーソルの画像情報を取得して、利用者がタッチしたい座標を推定する。しかし、実際には、利用者の指示を受け付けた方がよいこともある。たとえば、探索範囲内に、アプリによって複数の小さなボタンが配置された場合である。複数の小さなボタンが配置された場合、図１で説明した１つ目の技術により、複数の小さなボタンへのタッチ操作を容易にすることができる。しかし、１つ目の技術は、指の細やかな動きにより、座標位置を変更することになる。
【０１００】
そこで、実施の形態２にかかるサーバ２０１は、利用者の指示を受け付けて、指示に基づいて、カーソルの座標位置を補正する方法について説明する。なお、実施の形態１において説明した箇所と同様の箇所については、同一符号を付して図示および説明を省略する。
【０１０１】
図１５は、実施の形態２にかかるサーバの機能構成例を示すブロック図である。図１５において、サーバ２０１は、受付部５０１と、取得部１５０１と、生成部１５０２と、送信部１５０３と、選択部１５０４と、補正部５０４と、を含む。制御部となる受付部５０１、補正部５０４、取得部１５０１〜選択部１５０４は、記憶装置に記憶されたプログラムをＣＰＵ３０１が実行することにより、受付部５０１、補正部５０４、取得部１５０１〜選択部１５０４の機能を実現する。記憶装置とは、具体的には、たとえば、図３に示したメモリ３０２、磁気ディスク３０５などである。
【０１０２】
また、サーバ２０１は、補正用更新領域情報１５１０にアクセス可能である。カーソルのマウスオーバー処理によって更新された更新領域を記憶する。補正用更新領域情報１５１０の記憶内容は、図１６にて説明する。
【０１０３】
取得部１５０１は、受付部５０１によって操作情報が受け付けられた場合、各々の座標位置に対して、操作位置を各々の座標位置に設定した場合に更新される更新後の画面の操作位置から探索範囲内の画像情報を取得する。たとえば、取得部１５０１は、画像フォーマットに従った探索範囲内の画像データを取得する。
【０１０４】
また、取得部１５０１は、受付部５０１によって操作情報が受け付けられた場合、各々の座標位置に対して、操作位置を各々の座標位置に設定した場合に更新される画面の更新領域の更新前の画像情報を取得してもよい。なお、取得した画像情報は、補正用更新領域情報１５１０等の記憶領域に格納される。
【０１０５】
生成部１５０２は、取得部１５０１によって取得された探索範囲内の画像情報に基づいて、探索範囲内の画像を拡大した拡大画像の画像情報を生成する。また、生成部１５０２は、各々の座標位置に対して取得した更新領域の画像情報に基づいて、更新領域の画像を拡大した拡大画像の画像情報を生成してもよい。また、生成部１５０２は、各々の座標位置に対して取得した更新領域の更新前の画像情報に基づいて、更新領域の更新前の画像を拡大した拡大画像の画像情報を生成してもよい。具体的な画像の拡大方法については、図１７、図１８にて説明する。なお、生成した拡大画像の画像情報は、メモリ３０２、磁気ディスク３０５等の記憶装置に格納される。送信部１５０３は、生成部１５０２によって生成された拡大画像の画像情報をクライアント装置２０２に送信する。
【０１０６】
選択部１５０４は、クライアント装置２０２に拡大画像の画像情報が送信された結果、次に示す場合、前述の操作情報に基づいて、複数の座標位置から、いずれかの座標位置を選択する。次に示す場合とは、クライアント装置２０２の画面内の拡大画像が表示された表示領域内で行われた操作の操作情報を受け付けた場合である。具体的な選択方法は、図１８にて後述する。なお、選択結果は、メモリ３０２、磁気ディスク３０５等の記憶装置に格納される。
【０１０７】
図１６は、補正用更新領域情報の記憶内容の一例を示す説明図である。補正用更新領域情報１５１０は、カーソルのマウスオーバー処理によって更新された更新領域を記憶する。図１６に示す補正用更新領域情報１５１０は、レコード１６０１−１〜レコード１６０１−３を記憶する。たとえば、レコード１６０１−１は、左上の点のｘ座標が７５０［画素］であり、左上の点のｙ座標が３００［画素］であり、左上の点からの幅が３０［画素］であり、左上の点からの高さが３０［画素］である領域を示す。
【０１０８】
図１７は、実施の形態２にかかる補正処理の動作例を示す説明図（その１）である。また、図１８は、実施の形態２にかかる補正処理の動作例を示す説明図（その２）である。図１７に示すクライアント装置２０２は、サーバ２０１から送信された、三角形と四角形の画像を表示した状態である。この状態で、クライアント装置２０２は、利用者により特定の操作を受け付ける。特定の操作は、通常のユーザインターフェースで行われる操作と区別がつけば、どのような操作でもよい。たとえば、実施の形態２における特定の操作は、２本指で画面を触れる操作であるとする。また、実施の形態１における補正処理と、実施の形態２における補正処理と、を行うことが可能なシンクライアントシステム２００は、補正処理のトリガとなる特定の操作を分けることにより、実現可能である。たとえば、実施の形態１における特定の操作が２本指で画面を触れる操作であり、実施の形態２における特定の操作が３本指で画面を触れる操作であるとしてもよい。
【０１０９】
また、実施の形態１で説明したように、実施の形態２でも、特定の操作であると認識する装置は、クライアント装置２０２でもよいし、サーバ２０１でもよい。図１７と図１８との説明では、クライアント装置２０２が、特定の操作であることを認識するとする。図１７の（Ａ）が示すように、クライアント装置２０２は、特定の操作を示すコマンドＩＤ：１３と、操作位置情報として、点情報Ｐ１１（ｘ，ｙ＝８００，３００）とをサーバ２０１に送信する。
【０１１０】
特定の操作を示すコマンドＩＤと操作位置情報とを受け付けた後、図１７の（Ｂ）が示すように、サーバ２０１は、カーソルの移動命令を実行する探索範囲を算出する。探索範囲が、カーソルの座標位置の補正を行う範囲となる。たとえば、サーバ２０１は、操作位置情報の座標位置を中心に、前後左右１００［画素］分拡げた探索範囲を算出する。
【０１１１】
図１７の（Ｂ）の例では、サーバ２０１は、（ｘ，ｙ＝８００，３００）を中心として、探索範囲Ｂ２（ｘ，ｙ，ｗ，ｈ＝７００，２００，２００，２００）を算出する。探索範囲の算出後、サーバ２０１は、探索範囲を分割したメッシュ領域ごとに、カーソルの移動命令を実行して、カーソルのマウスオーバー処理によって更新された更新領域の画像情報を取得する。続けて、サーバ２０１は、画像情報が更新された領域を、補正用更新領域情報１５１０に追加する。たとえば、図１７の（Ｃ）では、レコード１６０１−１が領域Ｒ１１を示し、レコード１６０１−２が領域Ｒ１２を示し、レコード１６０１−３が領域Ｒ１３を示す。
【０１１２】
なお、あるメッシュ領域に移動したカーソルのマウスオーバー処理によって更新された更新領域が、あるメッシュ領域より大きい場合もありえる。この場合、サーバ２０１は、前述の更新領域に含まれる、あるメッシュ領域以外の他のメッシュ領域について、カーソルの移動命令を行わなくてよい。
【０１１３】
メッシュ領域に対応する更新領域の画像情報を取得後、サーバ２０１は、図１７の（Ｄ）が示すように、各更新領域を結合した結合更新領域Ｒ１４を取得する。結合更新領域Ｒ１４は、探索範囲より小さくなる可能性がある。図１７の（Ｄ）では、結合更新領域Ｒ１４は、（ｘ，ｙ，ｗ，ｈ＝７５０，３００，１８０，１１０）となる。図１７の（Ｄ）では、結合更新領域Ｒ１４は、探索範囲Ｂ２より小さい。
【０１１４】
続けて、サーバ２０１は、結合更新領域Ｒ１４の画像を、指定された倍率に拡大した拡大画像ＰＣＴ１の画像情報を生成する。拡大画像ＰＣＴ１の画像情報の生成方法として、サーバ２０１は、バイキュービック法、ニアレストネイバー法、バイリニア法等を用いる。指定された倍率は、たとえば、シンクライアントシステム２００の設計者により指定される。指定された倍率は、たとえば、２倍に指定される。
【０１１５】
また、サーバ２０１は、拡大画像ＰＣＴ１を、結合更新領域Ｒ１４の更新後の画像を拡大して生成してもよいし、結合更新領域Ｒ１４の更新前の画像を拡大して生成してもよい。結合更新領域Ｒ１４の更新後の画像を拡大する場合、サーバ２０１は、フレームバッファに格納された画像情報を用いることになる。結合更新領域Ｒ１４の更新前の画像を拡大する場合、サーバ２０１は、カーソルの移動命令を発行する前にフレームバッファの内容を保持しておく。そして、サーバ２０１は、結合更新領域Ｒ１４の取得後、保持したフレームバッファの内容を用いて、拡大画像ＰＣＴ１を生成する。
【０１１６】
そして、サーバ２０１は、探索範囲Ｂ２と被らない領域となるように拡大画像の表示位置を決定して、拡大画像の画像情報をクライアント装置２０２に送信する。探索範囲Ｂ２と被らない領域となるように拡大画像の表示領域を決定する例については、図１９にて説明する。
【０１１７】
たとえば、サーバ２０１は、画像を送信するコマンドＩＤ：２と、拡大画像ＰＣＴ１の画像情報と、拡大画像ＰＣＴ１の画像情報の表示位置となる画像表示領域Ｒ１５（ｘ，ｙ，ｗ，ｈ＝７５０，４２０，３６０，２２０）と、をクライアント装置２０２に送信する。クライアント装置２０２が拡大画像の画像情報を受け付けた後の処理については、図１８にて説明する。
【０１１８】
拡大画像ＰＣＴ１の画像情報を受け付けたクライアント装置２０２は、図１８の（Ｅ）が示すように、拡大画像ＰＣＴ１の画像情報と併せて受け付けた画像表示領域に、拡大画像ＰＣＴ１を表示する。続けて、クライアント装置２０２は、利用者による操作を受け付けて、通常の操作を示すコマンドＩＤ：１０と、操作位置情報として、点情報Ｐ１２（ｘ，ｙ＝１０００，４５０）とをサーバ２０１に送信する。
【０１１９】
通常の操作を示すコマンドＩＤと操作位置情報とを受け付けた後、サーバ２０１は、図１８の（Ｆ）が示すように、操作位置情報が、画像表示領域Ｒ１５に含まれる場合、操作位置情報を、実際の画面に当てはめた場合の座標位置を算出する。具体的に、図１８の（Ｆ）の例では、サーバ２０１は、操作位置情報となる点情報Ｐ１２（ｘ，ｙ＝１０００，４５０）が、画像表示領域Ｒ１５（ｘ，ｙ，ｗ、ｈ＝７５０，４２０，３６０，２２０）に含まれるか否かを判断する。この例では、サーバ２０１は、操作位置情報が画像表示領域Ｒ１５に含まれると判断する。
【０１２０】
次に、サーバ２０１は、操作位置情報を拡大前の元の位置情報に当てはめた場合の座標位置を算出する。具体的に、サーバ２０１は、操作位置情報から、拡大画像の画像表示領域Ｒ１５の（ｘ，ｙ）座標を減算する。そして、サーバ２０１は、減算結果を拡大画像の倍率で除算した除算結果に、結合更新領域Ｒ１４の（ｘ，ｙ）座標を加えることにより、拡大前の元の位置情報に当てはめた場合の座標位置を算出する。図１７、図１８の例では、サーバ２０１は、拡大前の元の位置情報に当てはめた場合の座標位置（ｘ，ｙ）を下記（１）式のように算出する。
【０１２１】
（ｘ，ｙ）＝（（１０００−７５０）／２＋７５０，（４５０−４２０）／２＋３００）＝（８７５，３１５）  …（１）
【０１２２】
拡大前の元の位置情報に当てはめた場合の座標位置を算出した後、サーバ２０１は、カーソルの座標位置を算出した座標位置に設定するようにＯＳに通知する。ＯＳに通知された後、図１８の（Ｇ）で示すように、サーバ２０１は、補正後の座標位置にてタッチ操作が行われたと認識して処理を実行する。
【０１２３】
図１７と図１８で説明した動作により、シンクライアントシステム２００は、カーソルの座標位置では座標位置の補正が行えない場合でも、利用者の指示操作を求めることで細かい領域に対する操作を誤操作なしに、かつ少ない手順で実行可能となる。
【０１２４】
図１９は、拡大画像の画像情報の表示位置の一例を示す説明図である。サーバ２０１は、元の探索範囲と被らない領域となるように拡大画像の表示領域を決定する。拡大画像の表示領域は元の探索範囲から近いことが好ましいため、サーバ２０１は、元の探索範囲の近傍となるように、拡大画像の表示領域を決定する。たとえば、サーバ２０１は、元の探索範囲の下方向・右方向・上方向・左方向の順序で、元の探索範囲と被らない領域を検索する。図１９の説明では、図１７と図１８の説明で用いた符号を用いて、元の探索範囲を、探索範囲Ｂ２とし、拡大画像をＰＣＴ１とする。
【０１２５】
以下、探索範囲Ｂ２と拡大画像ＰＣＴ１は、１０［画素］離して表示することとする。また、ｄｅｓｋ＿ｗを表示画面１１０の幅の画素数とし、ｄｅｓｋ＿ｈを表示画面１１０の高さの画素数とする。さらに、ｏｒｉｇ＿ｘを探索範囲Ｂ２のｘとし、ｏｒｉｇ＿ｙを探索範囲Ｂ２のｙとし、ｏｒｉｇ＿ｗを探索範囲Ｂ２のｗとし、ｏｒｉｇ＿ｈを探索範囲Ｂ２のｈとする。
【０１２６】
情報処理装置１０１は、探索範囲Ｂ２の下方向に、拡大画像ＰＣＴ１を表示可能か否かを、下記（２）式が満たされるか否かにより判断する。
【０１２７】
ｄｅｓｋ＿ｈ−（ｏｒｉｇ＿ｙ＋ｏｒｉｇ＿ｈ）＞ｏｒｉｇ＿ｈ＊指定された倍率＋１０  …（２）
【０１２８】
また、情報処理装置１０１は、探索範囲Ｂ２の右方向に、拡大画像ＰＣＴ１を表示可能か否かを、下記（３）式が満たされるか否かにより判断する。
【０１２９】
ｄｅｓｋ＿ｗ−（ｏｒｉｇ＿ｘ＋ｏｒｉｇ＿ｗ）＞ｏｒｉｇ＿ｗ＊指定された倍率＋１０  …（３）
【０１３０】
さらに、情報処理装置１０１は、探索範囲Ｂ２の上方向に、拡大画像ＰＣＴ１を表示可能か否かを、下記（４）式が満たされるか否かにより判断する。
【０１３１】
ｄｅｓｋ＿ｈ−ｏｒｉｇ＿ｙ＞ｏｒｉｇ＿ｈ＊指定された倍率＋１０  …（４）
【０１３２】
さらに、情報処理装置１０１は、探索範囲Ｂ２の左方向に、拡大画像ＰＣＴ１を表示可能か否かを、下記（５）式が満たされるか否かにより判断する。
【０１３３】
ｄｅｓｋ＿ｗ−ｏｒｉｇ＿ｘ＞ｏｒｉｇ＿ｗ＊指定された倍率＋１０  …（５）
【０１３４】
また、サーバ２０１は、探索範囲Ｂ２の下方向または上方向に拡大画像ＰＣＴ１を表示すると決定した場合、下記（６）式が満たされたら、探索範囲Ｂ２と拡大画像ＰＣＴ１とが左揃えとなるように拡大画像ＰＣＴ１の表示位置を決定する。一方、下記（６）式が満たされないなら、サーバ２０１は、探索範囲Ｂ２と拡大画像ＰＣＴ１とが右揃えとなるように拡大画像ＰＣＴ１の表示位置を決定する。
【０１３５】
ｄｅｓｋ＿ｗ−ｏｒｉｇ＿ｘ＞ｏｒｉｇ＿ｗ＊指定された倍率＋１０  …（６）
【０１３６】
同様に、サーバ２０１は、探索範囲Ｂ２の右方向または左方向に拡大画像ＰＣＴ１を表示すると決定した場合、下記（７）式が満たされたら、探索範囲Ｂ２と拡大画像ＰＣＴ１とが上揃えとなるように拡大画像ＰＣＴ１の表示位置を決定する。一方、下記（７）式が満たされないなら、サーバ２０１は、探索範囲Ｂ２と拡大画像ＰＣＴ１とが下揃えとなるように拡大画像ＰＣＴ１の表示位置を決定する。
【０１３７】
ｄｅｓｋ＿ｈ−ｏｒｉｇ＿ｙ＞ｏｒｉｇ＿ｈ＊指定された倍率＋１０  …（７）
【０１３８】
図１９の（Ａ）〜（Ｄ）は、サーバ２０１が（２）〜（７）式を実行した結果により決定された表示位置に従って、クライアント装置２０２が拡大画像ＰＣＴ１を表示する例である。具体的に、図１９の（Ａ）は、（２）式と（６）式が満たされたことにより、サーバ２０１が探索範囲Ｂ２の下方向でかつ、左揃えとなるように拡大画像ＰＣＴ１を表示することを決定した場合の表示例を示す。また、図１９の（Ｂ）は、（２）式が満たされ、（６）式が満たされなかったことにより、サーバ２０１が探索範囲Ｂ２の下方向でかつ、右揃えとなるように拡大画像ＰＣＴ１を表示することを決定した場合の表示例を示す。
【０１３９】
さらに、図１９の（Ｃ）は、（３）式と（７）式が満たされたことにより、サーバ２０１が探索範囲Ｂ２の右方向でかつ、上揃えとなるように拡大画像ＰＣＴ１を表示することを決定した場合の表示例を示す。さらに、図１９の（Ｄ）は、（３）式が満たされ、（７）式が満たされなかったことにより、サーバ２０１が探索範囲Ｂ２の右方向でかつ、下揃えとなるように拡大画像ＰＣＴ１を表示することを決定した場合の表示例を示す。
【０１４０】
続けて、図１７〜図１９で説明した動作を行うフローチャートを、図２０を用いて説明する。なお、実施の形態２にかかるクライアント装置による描画処理は、実施の形態１にかかるクライアント装置による描画処理と同一の処理であるため、説明を省略する。実施の形態２にかかるサーバによる描画処理は、描画処理内で呼ばれる補正処理以外、実施の形態２にかかるサーバによる描画処理と同一の処理であるため、説明を省略する。
【０１４１】
図２０は、実施の形態２にかかる補正処理手順の一例を示すフローチャートである。補正処理は、カーソルの座標位置を補正する処理である。なお、ステップＳ２００１とステップＳ２００２は、ステップＳ１３０１とステップＳ１３０２と同等であるため、説明を省略する。ステップＳ２００２の処理実行後、サーバ２０１は、更新領域を結合した結合更新領域を生成する（ステップＳ２００３）。次に、サーバ２０１は、結合更新領域の画像の画像情報を取得する（ステップＳ２００４）。続けて、サーバ２０１は、結合更新領域の画像を拡大した拡大画像の画像情報を生成する（ステップＳ２００５）。次に、サーバ２０１は、拡大画像の画像表示領域を、探索範囲と重ならないように決定する（ステップＳ２００６）。
【０１４２】
続けて、サーバ２０１は、拡大画像の画像情報と、拡大画像の画像表示領域とをクライアント装置２０２に送信する（ステップＳ２００７）。次に、サーバ２０１は、操作情報を受け付けたか否かを判断する（ステップＳ２００８）。操作情報を受け付けていない場合（ステップＳ２００８：Ｎｏ）、サーバ２０１は、一定時間経過後、ステップＳ２００８の処理を実行する。
【０１４３】
操作情報を受け付けた場合（ステップＳ２００８：Ｙｅｓ）、サーバ２０１は、続けて、受け付けた操作情報の操作位置情報が拡大画像の画像表示領域に含まれるか否かを判断する（ステップＳ２００９）。操作位置情報が拡大画像の画像表示領域に含まれない場合（ステップＳ２００９：Ｎｏ）、サーバ２０１は、補正処理を終了する。
【０１４４】
操作位置情報が拡大画像の画像表示領域に含まれる場合（ステップＳ２００９：Ｙｅｓ）、サーバ２０１は、探索範囲内の座標位置から、操作位置情報を拡大前の元の位置情報に当てはめた場合の座標位置を選択する（ステップＳ２０１０）。続けて、サーバ２０１は、補正座標位置で、操作位置情報を補正する（ステップＳ２０１１）。ステップＳ２０１１の終了後、サーバ２０１は、補正処理を終了する。補正処理を実行することにより、シンクライアントシステム２００は、カーソルの座標位置では座標位置の補正が行えない場合でも、利用者の指示操作を求めることで細かい領域に対する操作を誤操作なしに、かつ少ない手順で実行可能となる。
【０１４５】
以上説明したように、実施の形態２にかかるサーバ２０１によれば、クライアント装置２０２の画面上で行われたタッチ操作の位置を含む探索範囲の画像情報をクライアント装置２０２に送信し、送信後に受け付けた操作位置を用いてカーソルの座標位置を補正する。これにより、サーバ２０１は、指で指定し難い狭い領域へのタッチ操作を容易にすることができる。
【０１４６】
また、サーバ２０１によれば、クライアント装置２０２の画面上で行われたタッチ操作の位置を含む更新領域の画像データをクライアント装置２０２に送信してもよい。探索範囲より、更新領域の方が狭ければ、サーバ２０１は、送信する拡大画像の画像データのデータ量を少なくすることができる。また、拡大画像も小さくなることから、クライアント装置２０２が拡大画像を表示することによって隠れてしまう領域を少なくすることができる。
【０１４７】
また、サーバ２０１によれば、クライアント装置２０２の画面上で行われたタッチ操作の位置を含む更新領域の更新前の画像データをクライアント装置２０２に送信してもよい。更新領域の更新後の画像データは、マウスオーバー処理によってボタン等の表示内容が変化した画像データとなるため、クライアント装置２０２にて拡大画像を表示した際に、拡大前の画像と異なるため、利用者が戸惑う恐れがある。そこで、更新前の画像データを送信することにより、クライアント装置２０２にて拡大画像を表示した際に、クライアント装置２０２は、単に、元の画像を拡大した拡大画像を表示するため、利用者が戸惑うことを避けることができる。
【０１４８】
なお、本実施の形態で説明した補正方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本補正プログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本補正プログラムは、インターネット等のネットワークを介して配布してもよい。
【０１４９】
上述した実施の形態１、２に関し、さらに以下の付記を開示する。
【０１５０】
（付記１）ネットワークを介して端末装置と接続される情報処理装置が、
前記端末装置の画面上で行われた操作の操作情報を受け付けた場合、前記操作情報から特定される操作位置から所定範囲内の複数の座標位置の各々の座標位置に対して、前記操作位置を前記各々の座標位置に設定した場合に更新される前記画面の更新領域の画像情報を取得し、
前記各々の座標位置に対して取得した前記更新領域の画像情報に基づいて、前記複数の座標位置から、いずれかの座標位置を選択し、
前記操作位置を、選択した前記いずれかの座標位置に補正する、
処理を実行することを特徴とする補正方法。
【０１５１】
（付記２）前記取得する処理は、
前記操作情報を受け付けた場合、前記各々の座標位置に対して、前記操作位置を示すカーソルの座標位置を前記各々の座標位置に設定した場合に更新される前記画面の更新領域に含まれる前記カーソルの画像情報を取得し、
前記選択する処理は、
前記複数の座標位置のうち取得した前記カーソルの画像情報が同一の内容となる座標位置の個数に基づいて、前記複数の座標位置から、いずれかの座標位置を選択することを特徴とする付記１に記載の補正方法。
【０１５２】
（付記３）前記選択する処理は、
前記複数の座標位置のうち取得した前記カーソルの画像情報が同一の内容となる座標位置の個数が最も少ない座標位置から、いずれかの座標位置を選択することを特徴とする付記２に記載の補正方法。
【０１５３】
（付記４）前記選択する処理は、
前記複数の座標位置のうち取得した前記カーソルの画像情報が同一の内容となる第１の座標位置群の座標位置同士を結ぶことにより形成される第１の線と、取得した前記カーソルの画像情報が同一の内容となる第２の座標位置群の座標位置同士を結ぶことにより形成される第２の線とが交差する座標位置から、いずれかの座標位置を選択することを特徴とする付記２または３に記載の補正方法。
【０１５４】
（付記５）前記取得する処理は、
前記操作情報を受け付けた場合、前記各々の座標位置に対して、前記操作位置を前記各々の座標位置に設定した場合に更新される更新後の前記画面の前記操作位置から前記所定範囲内の画像情報を取得し、
前記情報処理装置は、
取得した前記所定範囲内の画像情報に基づいて、前記所定範囲内の画像を拡大した拡大画像の画像情報を生成し、
生成した前記拡大画像の画像情報を前記端末装置に送信する、処理を実行し、
前記選択する処理は、
前記端末装置に前記拡大画像の画像情報が送信された結果、前記端末装置の前記画面内の前記拡大画像が表示された表示領域内で行われた操作の操作情報を受け付けた場合、当該操作情報に基づいて、前記複数の座標位置から、いずれかの座標位置を選択することを特徴とする付記１に記載の補正方法。
【０１５５】
（付記６）前記情報処理装置は、
前記各々の座標位置に対して取得した前記更新領域の画像情報に基づいて、前記更新領域の画像を拡大した拡大画像の画像情報を生成し、
生成した前記拡大画像の画像情報を前記端末装置に送信する、処理を実行し、
前記選択する処理は、
前記端末装置に前記拡大画像の画像情報が送信された結果、前記端末装置の前記画面内の前記拡大画像が表示された表示領域内で行われた操作の操作情報を受け付けた場合、当該操作情報に基づいて、前記複数の座標位置から、いずれかの座標位置を選択することを特徴とする付記１に記載の補正方法。
【０１５６】
（付記７）前記取得する処理は、
前記操作情報を受け付けた場合、前記各々の座標位置に対して、前記操作位置を前記各々の座標位置に設定した場合に更新される前記画面の更新領域の更新前の画像情報を取得し、
前記情報処理装置は、
前記各々の座標位置に対して取得した前記更新領域の更新前の画像情報に基づいて、前記更新領域の更新前の画像を拡大した拡大画像の画像情報を生成し、
生成した前記拡大画像の画像情報を前記端末装置に送信する、処理を実行し、
前記選択する処理は、
前記端末装置に前記拡大画像の画像情報が送信された結果、前記端末装置の前記画面内の前記拡大画像が表示された表示領域内で行われた操作の操作情報を受け付けた場合、当該操作情報に基づいて、前記複数の座標位置から、いずれかの座標位置を選択することを特徴とする付記１に記載の補正方法。
【０１５７】
（付記８）前記情報処理装置は、
特定の操作の操作情報を受け付けた場合、前記取得する処理の実行を開始することを特徴とする付記１〜７のいずれか一つに記載の補正方法。
【０１５８】
（付記９）ネットワークを介して情報処理装置と端末装置とが接続されるシステムにおいて、
前記情報処理装置は、
前記端末装置の画面上で行われた操作の操作情報を受け付けた場合、前記操作情報から特定される操作位置から所定範囲内の複数の座標位置の各々の座標位置に対して、前記操作位置を前記各々の座標位置に設定した場合に更新される前記画面の更新領域の画像情報を取得する取得部と、
前記各々の座標位置に対して前記取得部によって取得された前記更新領域の画像情報に基づいて、前記複数の座標位置から、いずれかの座標位置を選択する選択部と、
前記操作位置を、前記選択部によって選択された前記いずれかの座標位置に補正する補正部と、
を有することを特徴とするシステム。
【０１５９】
（付記１０）ネットワークを介して端末装置と接続される情報処理装置において、
前記端末装置の画面上で行われた操作の操作情報を受け付けた場合、前記操作情報から特定される操作位置から所定範囲内の複数の座標位置の各々の座標位置に対して、前記操作位置を前記各々の座標位置に設定した場合に更新される前記画面の更新領域の画像情報を取得する取得部と、
前記各々の座標位置に対して前記取得部によって取得された前記更新領域の画像情報に基づいて、前記複数の座標位置から、いずれかの座標位置を選択する選択部と、
前記操作位置を、前記選択部によって選択された前記いずれかの座標位置に補正する補正部と、
を有することを特徴とする情報処理装置。
【０１６０】
（付記１１）ネットワークを介して端末装置と接続される情報処理装置において、
前記端末装置の画面上で行われた操作の操作情報を受け付けた場合、前記操作情報から特定される操作位置から所定範囲内の複数の座標位置の各々の座標位置に対して、前記操作位置を前記各々の座標位置に設定した場合に更新される前記画面の更新領域の画像情報を取得する取得部と、
前記各々の座標位置に対して前記取得部によって取得された前記更新領域の画像情報に基づいて、前記複数の座標位置から、いずれかの座標位置を選択する選択部と、
前記操作位置を、前記選択部によって選択された前記いずれかの座標位置に補正する補正部と、
を含むコンピュータを有することを特徴とする情報処理装置。
【０１６１】
（付記１２）ネットワークを介して端末装置と接続される情報処理装置に、
前記端末装置の画面上で行われた操作の操作情報を受け付けた場合、前記操作情報から特定される操作位置から所定範囲内の複数の座標位置の各々の座標位置に対して、前記操作位置を前記各々の座標位置に設定した場合に更新される前記画面の更新領域の画像情報を取得し、
前記各々の座標位置に対して取得した前記更新領域の画像情報に基づいて、前記複数の座標位置から、いずれかの座標位置を選択し、
前記操作位置を、選択した前記いずれかの座標位置に補正する、
処理を実行させることを特徴とする補正プログラム。
【符号の説明】
【０１６２】
１００  システム
１０１  情報処理装置
１０２  端末装置
２００  シンクライアントシステム
２０１  サーバ
２０２  クライアント装置
５０１  受付部
５０２、１５０１  取得部
５０３、１５０４  選択部
５０４  補正部
５０５、１５０３  送信部
１５０２  生成部
【図１】
2014110035.tif 000003
【図２】
2014110035.tif 000004
【図３】
2014110035.tif 000005
【図４】
2014110035.tif 000006
【図５】
2014110035.tif 000007
【図６】
2014110035.tif 000008
【図７】
2014110035.tif 000009
【図８】
2014110035.tif 000010
【図９】
2014110035.tif 000011
【図１０】
2014110035.tif 000012
【図１１】
2014110035.tif 000013
【図１２】
2014110035.tif 000014
【図１３】
2014110035.tif 000015
【図１４】
2014110035.tif 000016
【図１５】
2014110035.tif 000017
【図１６】
2014110035.tif 000018
【図１７】
2014110035.tif 000019
【図１８】
2014110035.tif 000020
【図１９】
2014110035.tif 000021
【図２０】
2014110035.tif 000022