(57)【要約】【課題】複数のウィンドウを対象としてアノテーションの表示を行う場合におけるアノテーションの処理負荷の増大を抑制する。【解決手段】デスクトップ上の複数のウィンドウについてウィンドウごとに設定されたポーリング周期でウィンドウの画面の変化を検知する変化検知部１３１と、変化検知部１３１によって画面の変化が検知されたウィンドウそれぞれについて画面の変化領域を探索範囲として、当該ウィンドウについてのアノテーションルールに設定されたテンプレート画像と類似する領域を探索し、類似する領域に、アノテーションルールに設定されるアイコンをオーバレイ表示する表示更新部１３３とを備える。【選択図】図１
2018063564.tif 000002
【特許請求の範囲】
【請求項１】
デスクトップ上の複数のウィンドウについて前記ウィンドウごとに設定された周期で、前記ウィンドウの画面の変化を検知する変化検知部と、
前記変化検知部によって画面の変化が検知されたウィンドウそれぞれについて画面の変化領域を探索範囲として、当該ウィンドウについてのアノテーションルールに設定されたテンプレート画像と類似する領域を探索し、前記類似する領域に、前記アノテーションルールに設定されるアイコンをオーバレイ表示する表示更新処理を行う表示更新部とを備えることを特徴とする表示制御装置。
【請求項２】
前記表示制御装置は、さらに、
前記複数のウィンドウそれぞれについて前記表示更新部によりオーバレイ表示されるアイコンの時間あたりの変化の頻度および変化量の少なくともいずれかを計測する計測部を備え、
前記変化検知部は、
前記計測部によって計測された前記アイコンの時間あたりの変化の頻度および変化量の少なくともいずれかが増加傾向のウィンドウについては前記画面の変化を検知する周期を現在よりも短く変更し、前記アイコンの時間あたりの変化の頻度および変化量の少なくともいずれかが減少傾向のウィンドウについては前記画面の変化を検知する周期を現在よりも長く変更することを特徴とする請求項１に記載の表示制御装置。
【請求項３】
前記表示更新部は、
前記変化検知部によって検知された前記ウィンドウそれぞれの画面の変化に応じて、前記画面に表示されているアイコンの位置を基に生成した所定の領域を前記探索範囲として、前記テンプレート画像と類似した領域を探索し、前記類似した領域にアイコンをオーバレイ表示する暫定更新処理、および、前記所定の領域よりも広い領域を前記探索範囲として、前記テンプレート画像と類似した領域を探索し、前記類似した領域に対応する位置にアイコンをオーバレイ表示する正規更新処理を実行することを特徴とする請求項１に記載の表示制御装置。
【請求項４】
前記変化検知部は、
前記複数のウィンドウそれぞれの画面の変化の停止を検知し、
前記表示更新部は、
前記変化検知部によって前記画面の変化の停止が検知された場合には、前記表示更新処理を実行することを特徴とする請求項１に記載の表示制御装置。
【請求項５】
前記変化検知部は、
前記ウィンドウの前記正規更新処理に要する画面の変化を検知する周期および前記暫定更新処理に要する画面の変化を検知する周期が別個に設定されていることを特徴とする請求項３に記載の表示制御装置。
【請求項６】
前記表示制御装置は、さらに、
前記複数のウィンドウそれぞれについて前記表示更新部によりオーバレイ表示されるアイコンの時間あたりの出現および消滅による変化の頻度である第１の変化の頻度と、前記アイコンの位置の移動による変化の頻度である第２の変化の頻度とを計測する計測部を備え、
前記変化検知部は、
前記計測部によって計測された前記第１の変化の頻度に対する前記第２の変化の頻度の割合が所定値より大きいウィンドウについて、前記ウィンドウにおける前記正規更新処理に要する画面の変化を検知する周期の長さに対する前記暫定更新処理に要する画面の変化を検知する周期の長さの割合を所定値よりも大きく設定し、
前記計測部によって計測された前記第１の変化の頻度に対する前記第２の変化の頻度の割合が所定値以下であるウィンドウについて、前記ウィンドウにおける前記正規更新処理に要する画面の変化を検知する周期の長さに対する前記暫定更新処理に要する画面の変化を検知する周期の長さの割合を所定値以下に設定することを特徴とする請求項５に記載の表示制御装置。
【請求項７】
前記変化検知部は、
前記デスクトップ上の複数のウィンドウのうち、指定された所定のウィンドウタイトルを持つウィンドウを対象に前記画面の画像の変化を検知することを特徴とする請求項１に記載の表示制御装置。
【請求項８】
表示制御装置で実行される表示制御方法であって、
デスクトップ上の複数のウィンドウについて前記ウィンドウごとに設定された周期で、前記ウィンドウの画面の変化を検知する変化検知ステップと、
前記変化検知ステップによって画面の変化が検知されたウィンドウそれぞれについて画面の変化領域を探索範囲として、当該ウィンドウについてのアノテーションルールに設定されテンプレート画像と類似する領域を探索し、前記類似する領域に、前記アノテーションルールに設定されるアイコンをオーバレイ表示する表示更新ステップとを含んだことを特徴とする表示制御方法。
【請求項９】
デスクトップ上の複数のウィンドウについて前記ウィンドウごとに設定された周期で、前記ウィンドウの画面の変化を検知する変化検知ステップと、
前記変化検知ステップによって画面の変化が検知されたウィンドウそれぞれについて画面の変化領域を探索範囲として、当該ウィンドウについてのアノテーションルールに設定されテンプレート画像と類似する領域を探索し、前記類似する領域に、前記アノテーションルールに設定されるアイコンをオーバレイ表示する表示更新ステップとをコンピュータに実行させるための表示制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、表示制御装置、表示制御方法、および、表示制御プログラムに関する。
【背景技術】
【０００２】
従来、ユーザがアプリケーションを利用する際に、オーバレイ表示によりユーザに対して視覚的な解釈内容を提供するアノテーションの技術が知られている。例えば、アノテーションの技術をリアルタイムの映像に適用することで、各瞬間の解釈結果をオーバレイ表示し、解釈対象の変化や動きに同期して表示更新して、ユーザにもとの映像とそれに対する解釈とを同時に提示することができる。これによりユーザの情報支援が可能となる。
【０００３】
この分野の具体的応用例として、例えば、ＰＣのスクリーン画面を連続的にキャプチャし、その画面上から指定されたテンプレート画像と類似した領域を探索し、得られた位置にアイコンをオーバレイ表示するアノテーションシステムがある（特許文献１参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】国際公開第２０１４／００２８１２号
【特許文献２】国際公開第２０１６／０３９２７３号
【特許文献３】特許第５９１６１３６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかし、上記の従来技術はいずれも、複数のウィンドウを対象としてアノテーションを適用しようとすると、ウィンドウ数に比例してアノテーションの処理負荷が増大し、これに伴いアノテーションの処理時間も増大するという問題がある。そこで、本発明は、前記した問題を解決し、複数のウィンドウを対象としてアノテーションの表示を行う場合におけるアノテーションの処理負荷の増大を抑制することを課題とする。
【課題を解決するための手段】
【０００６】
前記した課題を解決するため、本発明は、デスクトップ上の複数のウィンドウについて前記ウィンドウごとに設定された周期で、前記ウィンドウの画面の変化を検知する変化検知部と、前記変化検知部によって画面の変化が検知されたウィンドウそれぞれについて画面の変化領域を探索範囲として、当該ウィンドウについてのアノテーションルールに設定されたテンプレート画像と類似する領域を探索し、前記類似する領域に、前記アノテーションルールに設定されるアイコンをオーバレイ表示する表示更新処理を行う表示更新部とを備えることを特徴とする。
【発明の効果】
【０００７】
本発明によれば、複数のウィンドウを対象としてアノテーションの表示を行う場合におけるアノテーションの処理負荷の増大を抑制することができる。
【図面の簡単な説明】
【０００８】
【図１】図１は、各実施形態の表示制御装置の構成例を示す図である。
【図２】図２は、アノテーションルールの例を示す図である。
【図３】図３は、第１の実施形態の表示制御装置の制御部の概要を説明する図である。
【図４】図４は、第１の実施形態の表示制御装置の制御部を詳細に説明する図である。
【図５】図５は、第１の実施形態の表示制御装置の処理手順の例を示すフローチャートである。
【図６】図６は、第２の実施形態の表示制御装置における正規更新および暫定更新それぞれの探索範囲を説明する図である。
【図７】図７は、第２の実施形態の表示制御装置における正規更新および暫定更新それぞれの更新処理時間を説明する図である。
【図８】図８は、第２の実施形態の表示制御装置における正規更新および暫定更新それぞれのポーリング周期により別個に設定された検知を説明する図である。
【図９】図９は、第２の実施形態の表示制御装置におけるウィンドウの変化傾向のパターンごとの正規更新および暫定更新それぞれのポーリング周期の設定を説明する図である。
【図１０】図１０は、第３の実施形態の表示制御装置の概要を説明する図である。
【図１１】図１１は、表示制御プログラムを実行するコンピュータを示す図である。
【発明を実施するための形態】
【０００９】
以下、図面を参照しながら、本発明を実施するための形態（実施形態）について説明する。なお、本発明は、以下に説明する実施形態に限定されない。また、以下の説明では、アノテーションを適用例とした表示制御について説明するが、アノテーションに限定されるものではない。
【００１０】
［第１の実施形態］
まず、図１を用いて、各実施形態の表示制御装置１０を説明する。表示制御装置１０は、コンピュータのデスクトップ上に表示される複数のウィンドウの監視を行い、アノテーションを行う。つまり、表示制御装置１０は、複数ウィンドウそれぞれの画面の変化を検知すると、変化したウィンドウにおける変化領域を対象にアノテーションルールを適用する。
【００１１】
この表示制御装置１０は、各ウィンドウの画面の変化を検知するためポーリングを行う。ポーリング周期はウィンドウごとに設定され、例えば、表示制御装置１０は、デスクトップ上の複数のウィンドウのうち、頻繁に操作されるため変化の多いウィンドウについてはポーリング周期を短く設定し、それ以外のウィンドウについてはポーリング周期を長く設定する。つまり、表示制御装置１０は、アノテーションを行うにあたり、限られたＣＰＵ（Central  Processing  Unit）資源を、変化の多いウィンドウに対して多く割り当て、変化の少ないウィンドウには少なく割り当てる。
【００１２】
このようにすることで、表示制御装置１０は、複数のウィンドウを対象にアノテーションを行う場合において、限られたＣＰＵ資源を有効活用することができる。その結果、表示制御装置１０は、複数のウィンドウを対象にアノテーションを行う場合の処理負荷や処理時間の増大を抑制することができる。
【００１３】
（構成）
この表示制御装置１０の構成を説明する。図１に示すように、表示制御装置１０は、入力部１１、出力部１２、制御部１３および記憶部１４を有する。
【００１４】
入力部１１は、画面のスクロール指示やアクティブウィンドウの選択指示等を入力するものであり、キーボードやマウス等を備える。また、出力部１２は、画面を表示するものであり、ディスプレイやスピーカ等を備える。
【００１５】
記憶部１４は、制御部１３による各種処理に必要なデータおよびプログラムを格納するが、特に本発明に密接に関連するものとしては、アノテーションＤＢ（Data  Base）を有する。例えば、記憶部１４は、ＲＡＭ（Random  Access  Memory）、フラッシュメモリ（Flash  Memory）等の半導体メモリ素子、または、ハードディスク、光ディスク等の記憶装置等である。アノテーションＤＢは、例えば、アノテーション文章の表示対象となるウィンドウごとに複数のアノテーションルールを記憶する。
【００１６】
このアノテーションルールは、例えば、ウィンドウルールとアノテートルールとが親子関係となった構造となっている。制御部１３は、まず各ウィンドウに対しウィンドウルールを適用し、当該ウィンドウルールに記述される条件を満たす場合に、当該ウィンドウルールの配下のアノテートルールを適用する。
【００１７】
例えば、アノテーションルールは、図２に示すようなツリー構造であり、ルート直下から順に、ウィンドウルールを記述するwindowタグ、アノテートルールを記述するannotateタグがそれぞれ配置される。windowタグは、title属性を持ち、ここで指定されたウィンドウタイトル文字列にマッチするウィンドウに対して、配下のアノテートルールが適用される。annotateタグは、個々のアノテーションアイコンやメッセージツールチップに関する情報を保持しており、これがアノテーションを生成する直接のルール情報に相当する。なお、imgタグはルール編集やテンプレート画像生成等に必要な要素であるが、ここでは説明を省略する。
【００１８】
図２に例示するアノテーションルールは、ウィンドウルール（windowタグ）の配下に複数のアノテートルール（annotateタグ）が関連付けられている。このうちウィンドウルールにはルール作成時にユーザが指定したウィンドウタイトル文字列（「電卓」）が保持され、アノテートルールにはルール作成時にユーザが指定したテンプレート画像が保持されている。このようなアノテーションルールに基づき、制御部１３は、ウィンドウタイトル「電卓」のウィンドウ上から、指定されたテンプレート画像と類似する画像を探索する（テンプレート画像とのマッチングを行う）。そして、制御部１３は、テンプレート画像と類似する画像を発見すると、例えば、当該画像の近傍に所定のアイコンをオーバレイ表示する。
【００１９】
次に、制御部１３を説明する。まず、図３を用いて制御部１３の概要を説明する。まず、制御部１３は、デスクトップのウィンドウ集合を取得すると、デスクトップ上の全ウィンドウを列挙し、いずれかのウィンドウの位置の変化があれば、これに伴いアノテーションの表示位置を更新する。
【００２０】
また、制御部１３は、デスクトップ上の全ウィンドウを列挙し、いずれかのウィンドウの有無について変化があれば、変化のあったウィンドウについてウィンドウタイトルを参照して、アノテーションルールの適用対象となるウィンドウを絞り込む（ウィンドウタイトルでフィルタ）。
【００２１】
そして、制御部１３は、絞り込んだウィンドウのうち、画面変化のあったウィンドウを列挙する。次に、制御部１３は、列挙したウィンドウと当該ウィンドウにおける変化領域の矩形座標を特定すると、特定した矩形座標（差分の領域）に対し、アノテーションルールに設定されるテンプレート画像とのマッチングを行う。そして、制御部１３は、テンプレート画像とマッチする画像を発見すると、ウィンドウ上にアノテーションルールに基づくアノテーションの表示（表示更新）を行う。
【００２２】
このように制御部１３がウィンドウの画面変化を検知し、前の表示からの差分の領域を対象にアノテーションの表示のためのテンプレート画像とのマッチングを行う。換言すると、制御部１３は、画面変化が発生しないウィンドウ、および、ウィンドウの画面変化が発生していない領域については、テンプレート画像とのマッチングの対象外とする。これにより、表示制御装置１０は、アノテーションの表示に際し、ウィンドウの画像とテンプレート画像とのマッチングを効率よく行うことができる。
【００２３】
なお、制御部１３は、上記のとおり、アノテーションルールの適用対象となるウィンドウに対し当該ウィンドウごとに設定されたポーリング周期で、ウィンドウの画面の変化を検知する。ここで、ウィンドウごとのポーリング周期は、アノテーションルールの適用対象となるウィンドウのうち、ウィンドウ内の画像（画面）変化が少ないウィンドウについては比較的長く設定し、ウィンドウ内の画像（画面）変化が多いウィンドウについては比較的短く設定する。これにより、制御部１３は、限られたＣＰＵ資源を有効活用し、各ウィンドウの画面の変化の検知を行うことができる。
【００２４】
なお、上記のウィンドウごとのポーリング周期の設定は、表示制御装置１０のユーザが手動で設定してもよいが、以下のように自動で設定してもよい。この自動でのポーリング周期の設定について、図４を参照しながら説明する。
【００２５】
例えば、制御部１３は、図４に示すように、ウィンドウ内のアノテーションの有無・位置の監視を行う。そして、制御部１３は、ウィンドウ内のアノテーションの有無・位置の変化量・変化頻度を、ウィンドウごとに集計する。その後、制御部１３は、この集計結果に基づきウィンドウのポーリング周期を変更する。
【００２６】
例えば、制御部１３は、ウィンドウ内のアノテーションのアイコンの時間あたりの変化の頻度および変化量の少なくともいずれかが増加傾向のウィンドウについては、ポーリング周期を現在よりも短く変更する。一方、制御部１３は、ウィンドウ内のアノテーションのアイコンの時間あたりの変化の頻度および変化量の少なくともいずれかが減少傾向のウィンドウについてはポーリング周期を現在よりも長く変更する。
【００２７】
なお、制御部１３は、ウィンドウ内のアノテーションの有無・位置の変化量・変化頻度に加え、ウィンドウ内の画像変化の監視結果（例えば、ウィンドウ内の画像変化の変化量・変化頻度）も考慮してウィンドウのポーリング周期を変更してもよい。さらに、制御部１３は、予め設定されたウィンドウの優先順に基づきポーリング周期を変更してもよい。上記のポーリング周期の変更の詳細については後記する。
【００２８】
図１に戻り、制御部１３を詳細に説明する。制御部１３は、変化検知部１３１と、変化傾向計測部１３２と、表示更新部１３３とを備える。破線で示す表示順位評価部１３４は装備される場合と装備されない場合とがあり、装備される場合については後記する。
【００２９】
変化検知部１３１は、デスクトップ上の複数のウィンドウについて、ウィンドウごとに設定されたポーリング周期でポーリングを行い、ウィンドウの画面の変化を検知する。なお、デスクトップ上のウィンドウは多様な変化をする。このため、変化検知部１３１は、表示更新部１３３によるウィンドウの画面の表示更新とは非同期に発生する時間遅れが極力少なくなるよう変化を検知する必要がある。よって、変化検知部１３１は、表示更新部１３３とは独立したスレッドでポーリング処理を実行する。
【００３０】
具体的には、変化検知部１３１は、ポーリング中にウィンドウに何らかの変化が発生した場合、その種類に応じて対応するフラグ（変化検知フラグ）をTrueにする。フラグの種類は、例えば、デスクトップ上の全ウィンドウの集合の変化（例えば、ウィンドウの有無の変化）、ウィンドウの位置の変化である。そして、変化検知部１３１は、表示更新部１３３からウィンドウの変化の有無や変化の種類の問い合わせを受けると、フラグを参照し、Trueの場合に、該当する詳細情報（例えば、変化のあった全ウィンドウのIDリスト等）を取得すると同時にフラグをFalseに戻す。
【００３１】
なお、表示更新部１３３から変化検知部１３１へ、ウィンドウに変化がないにも関わらず長時間にわたり問い合わせを繰り返すことを避けるため、以下のようにしてもよい。すなわち、変化検知部１３１が表示更新部１３３から次の問い合わせを受けた際、フラグがFalseのままの場合は、表示更新部１３３は変化検知部１３１からの変化イベントの通知を待機する状態に移行する。そして、変化検知部１３１は変化イベントの通知で、表示更新部１３３のスレッドを復帰状態にするよう動作させる。待機手続きは、例えば、Java（登録商標）言語の場合、Objectクラスのwait()、notifyAll()を使用することにより実現できる。
【００３２】
なお、表示更新部１３３が待機手続きを呼び出した時点で、変化検知部１３１で保持するフラグの状態が１つでもTrueのときは、待機をせずに処理を続行する。一方、フラグの状態が全てFalseであれば、表示更新部１３３のスレッドを待機状態（wait()）にする。そして、変化検知部１３１でフラグをTrueにした時点で表示更新部１３３が待機中であれば、表示更新部１３３のスレッドを再開（notifyAll()）させる。これにより制御部１３は、表示更新部１３３から変化検知部１３１への無駄な問い合わせを抑制することができるので、ウィンドウの変化検知に伴うＣＰＵ負荷を低減できる。
【００３３】
また、変化検知部１３１は、変化傾向計測部１３２によって計測されたウィンドウ上のアノテーションのアイコンの時間あたりの変化の頻度および変化量に基づき、当該ウィンドウのポーリング周期を以下のように設定してもよい（基準１によるポーリング周期の設定）。
【００３４】
例えば、変化検知部１３１は、変化傾向計測部１３２によって計測されたウィンドウ上のアノテーションのアイコンの時間あたりの変化の頻度および変化量の少なくともいずれかが増加傾向のウィンドウについてはポーリング周期を短く設定する。一方、変化検知部１３１は、変化傾向計測部１３２によって計測されたウィンドウ上のアノテーションのアイコンの時間あたりの変化の頻度および変化量の少なくともいずれかが減少傾向のウィンドウについてはポーリング周期を長く設定する。
【００３５】
例えば、変化検知部１３１は、ウィンドウの表示更新を実施しても出力されるアノテーションの内容が直前のフレームとほぼ同じ場合、ポーリング周期が過度に短く設定されている可能性がある。よって、変化検知部１３１は、ポーリング周期を長く変更する。一方、変化検知部１３１は、ウィンドウの表示更新を実施して出力されるアノテーションの内容が直前のフレームと異なる場合、ポーリング周期が過度に長く設定されている可能性がある。よって、変化検知部１３１は、ポーリング周期を短く変更する。
【００３６】
なお、変化検知部１３１は、変化傾向計測部１３２によって計測されたウィンドウ上のアノテーションのアイコンの時間あたりの変化頻度・変化量のバラつきが増大傾向の場合、ポーリング周期を短く設定し、逆に減少傾向の場合、ポーリング周期を長く設定してもよい。
【００３７】
さらに、変化検知部１３１は、上記の基準１によるポーリング周期の設定後、変化傾向計測部１３２により計測される、ウィンドウの画面変化、アノテーションのアイコンの時間あたりの変化頻度・変化量があまり変化しなくなった場合、ポーリング周期を以下の基準２により変更（調整）してもよい。
【００３８】
すなわち、変化検知部１３１は、上記の基準１によるポーリング周期の設定を行った上で、変化傾向計測部１３２によって計測された、ウィンドウの画面の変化頻度・変化量に対するアノテーションの変化頻度・変化量の割合の計算結果を得る。そして、変化検知部１３１は、この計算結果の示す値（あるいはその値のバラつき）が減少傾向の場合、基準１で設定したポーリング周期を基準としてポーリング周期を長く変更し、逆に増大傾向の場合、基準１で設定したポーリング周期を基準としてポーリング周期を短く変更する（基準２による調整）。
【００３９】
このように変化検知部１３１が、ウィンドウのポーリング周期の設定にあたり、基準１に加え基準２による調整を行うことで、ウィンドウの画面変化があった場合に、それが実際にアノテーションの内容に影響するケースが多い場合は、ＣＰＵ資源が許す範囲で、ポーリング周期をできるだけ短くすることができる。
【００４０】
また、変化検知部１３１は、基準１に加え基準２による調整を行うことで、ウィンドウの画面変化があった場合に、それが実際にアノテーションの内容に影響するケースが少ない場合は、ポーリング周期を長くすることができる。これにより、変化検知部１３１は、表示制御装置１０のＣＰＵ資源が許す範囲でポーリング周期を好適な状態に調整することができる。
【００４１】
なお、変化検知部１３１は、上記の基準１，２により各ウィンドウのポーリング周期を設定した後、再度、変化傾向計測部１３２による各ウィンドウの時間あたりの変化の計測結果を取得し、この計測結果に上記の基準１，２を適用して、各ウィンドウのポーリング周期を変更してもよい。つまり、変化検知部１３１は、各ウィンドウの時間あたりの変化の計測結果に基づき、各ウィンドウのポーリング周期を動的に変更してもよい。
【００４２】
変化傾向計測部１３２は、複数のウィンドウそれぞれについて時間あたりの変化を計測する。ここでの計測対象は、例えば、表示更新部１３３によりウィンドウ上に表示されるアノテーションのアイコンの時間あたりの変化頻度や変化量、ウィンドウ自体の時間あたりの画面の変化頻度や変化量等を計測する。
【００４３】
表示更新部１３３は、変化検知部１３１によって画面の変化が検知されたウィンドウそれぞれについて画面の変化領域を探索範囲として、当該ウィンドウについてのアノテーションルールに設定されたテンプレート画像と類似する（マッチする）画像の領域を探索する。そして、表示更新部１３３は、テンプレート画像と類似する画像の領域に、アノテーションルールに設定されたアイコンをオーバレイ表示する。
【００４４】
このような表示制御装置１０によれば、複数のウィンドウを対象にアノテーションを行う場合において、アノテーションに必要なＣＰＵ資源を有効活用することができる。その結果、表示制御装置１０は、複数のウィンドウを対象にアノテーションを行う場合の処理負荷や処理時間の増大を抑制することができる。
【００４５】
なお、表示制御装置１０は、他のアプリケーションがＣＰＵ資源を多く消費する場合等、ＣＰＵ資源が枯渇していることを検知した場合、ポーリング周期を一時的に極端に長くしたり、表示更新の動作自体を緊急停止させたりする機能を備えていてもよい。
【００４６】
さらに、表示制御装置１０は、図１の表示順位評価部１３４をさらに備えていてもよい。この表示順位評価部１３４は、デスクトップ上に表示されるウィンドウ間の優先順位を決定する。表示順位評価部１３４は、例えば、ウィンドウが手前側にあるか、後ろ側にあるかの順（Ｚ軸オーダ）や、ウィンドウの枠の矩形サイズの大きさの順や、ウィンドウの中心がデスクトップ画面の中心に近い順等によりウィンドウの優先順位を決定する。
【００４７】
また、表示順位評価部１３４は、デスクトップ上に複数ウィンドウが重なって表示されている場合、ウィンドウの重なり、前後関係を考慮し、ユーザの目に見える領域として実際に露出している面積の大きさの順にウィンドウの優先順位を決定してもよい。
【００４８】
そして、表示更新部１３３は、表示順位評価部１３４により決定された優先順位の高いウィンドウから優先的にアノテーションのアイコンの表示を行う。このようにすることで、表示更新部１３３は、ユーザにとってより重要度が高い可能性の高いウィンドウについて速やかにアノテーションのアイコンの表示を行うことができる。
【００４９】
また、変化検知部１３１は、表示順位評価部１３４により決定された優先順位の高いウィンドウについてはポーリング周期を短く調整し、優先順位の低いウィンドウについてポーリング周期を長く調整してもよい。このようにすることで、表示更新部１３３は、複数のウィンドウ上にアノテーションの表示を行うにあたり、ユーザにとっての重要度の高さに応じて各ウィンドウにＣＰＵ資源を割り当てることができる。
【００５０】
（処理手順）
次に、図５を用いて、表示制御装置１０によるアノテーションの表示の処理手順を説明する。
【００５１】
まず、表示制御装置１０の変化検知部１３１は、デスクトップ上の全ウィンドウのＩＤと位置とを取得する（Ｓ１０１：デスクトップ上の全ウィンドウを列挙（位置））。例えば、ウィンドウ表示に用いるOSがMicrosoft  Windows（登録商標）系のOSの場合、変化検知部１３１は、デスクトップ上の全てのウィンドウのウィンドウハンドル（IDに相当）を、EnumWindows()関数を呼び出すことによって取得する。そして、変化検知部１３１は、ウィンドウのIDと、ウィンドウの位置座標と、ウィンドウタイトル文字列、画面キャプチャ画像を必要に応じてOSから取得する。
【００５２】
Ｓ１０１の後、変化検知部１３１が、デスクトップ上のいずれかのウィンドウに位置の変化があると判定した場合（Ｓ１０２でＹｅｓ）、制御部１３は、全ての対象ウィンドウに対し以下のＳ１０３、Ｓ１０４に示すループを開始する。すなわち、表示更新部１３３は、位置に変更があった（Ｓ１０３でＹｅｓ）ウィンドウに対し、アノテーション表示位置の変更を行い（Ｓ１０４）、位置に変更のなかった（Ｓ１０３でＮｏ）ウィンドウに対しては、Ｓ１０４の処理はスキップする。そして、制御部１３は、全ての対象ウィンドウに対する上記のループを終了すると、Ｓ１０１へ戻る。
【００５３】
Ｓ１０１の後、変化検知部１３１が、デスクトップ上のいずれのウィンドウにも位置の変化はないと判定した場合（Ｓ１０２でＮｏ）、デスクトップ上の全ウィンドウを列挙するとともに全ウィンドウの有無に関する情報を取得する（Ｓ１０５：デスクトップ上の全ウィンドウを列挙（ウィンドウの有無））。
【００５４】
Ｓ１０５の後、変化検知部１３１が、デスクトップ上のいずれかのウィンドウの有無について変化があると判定した場合（Ｓ１０６でＹｅｓ）、全ての対象ウィンドウに対し、以下の処理を実行する。つまり、変化検知部１３１は、対象ウィンドウのタイトルと、ウィンドウルールに設定される全ウィンドウのタイトルとを比較し、マッチするウィンドウタイトルがあれば（Ｓ１０７：タイトルを比較しマッチする？でＹｅｓ）、画面変化検知対象リストに登録する（Ｓ１０８）。
【００５５】
一方、変化検知部１３１は、マッチするウィンドウタイトルがなければ（Ｓ１０７：タイトルを比較しマッチする？でＮｏ）、Ｓ１０８の処理をスキップする。そして、制御部１３は、全ての対象ウィンドウに対し上記のループを終了すると、Ｓ１０１へ戻る。
【００５６】
Ｓ１０５の後、変化検知部１３１が、デスクトップ上のいずれかのウィンドウの有無について変化はないと判定した場合（Ｓ１０６でＮｏ）、画面変化検知対象リストに登録されるウィンドウのうち、画面変化のあったウィンドウを列挙する。つまり、変化検知部１３１は、ウィンドウの有無について変化のあったウィンドウ集合と、当該ウィンドウ集合のうち画面変化のあったウィンドウの変化領域の矩形座標を列挙する（Ｓ１０９：画面変化のあったウィンドウを列挙（ウィンドウの有無、矩形座標））。
【００５７】
Ｓ１０９の後、変化検知部１３１が、画面変化検知対象リストに登録されるウィンドウに変化があると判定した場合（Ｓ１１０でＹｅｓ）、つまり、変化検知部１３１が画面変化を検知した場合、表示更新部１３３は、全ての画面変化検知済みウィンドウに対し、全てのウィンドウルールの配下のアノテートルールのループを開始する。つまり、表示更新部１３３は全ての画面変化検知済みウィンドウに対し、該当する全てのウィンドウルールの配下のアノテートルールに設定されるテンプレート画像を探索し、マッチすれば（Ｓ１１１でＹｅｓ）、アイコン表示を行う（Ｓ１１２）。
【００５８】
一方、表示更新部１３３は、該当する全てのウィンドウルールの配下のアノテートルールに設定されるテンプレート画像を探索し、マッチしなければ（Ｓ１１１でＮｏ）、Ｓ１１２の処理をスキップする。表示更新部１３３は、全ての画面変化検知済みウィンドウに対し上記のループを終了すると、Ｓ１０１へ戻る。
【００５９】
なお、変化検知部１３１が、画面変化検知対象リストに登録されるいずれのウィンドウにも、変化はないと判定した場合（Ｓ１１０でＮｏ）、Ｓ１０１へ戻る。
【００６０】
表示制御装置１０が上記の処理を行うことで、画面の変化のあったウィンドウの変化領域に絞り込んでアノテーションルールに設定されるテンプレート画像とのマッチングを行い、アノテーションのアイコン表示を行うことができる。
【００６１】
［第２の実施形態］
次に、第２の実施形態の表示制御装置１０を説明する。第２の実施形態の表示制御装置１０は、表示更新部１３３が、ウィンドウ上のアノテーションの表示更新を行う際、正規更新処理および暫定更新処理（特許文献２参照）を行う。そして、変化検知部１３１は、ウィンドウの画面の変化を検知する際、正規更新処理および暫定更新処理それぞれの処理に個別のポーリング周期を設定することを特徴とする。なお、以下、正規更新処理は、適宜、正規更新と略し、暫定更新処理は、適宜、暫定更新と略す。
【００６２】
まず、図６を参照して、正規更新処理および暫定更新処理の概要を説明する。前記したとおり、表示更新部１３３は、画面の変化のあったウィンドウの変化領域を探索範囲としてアノテーションルールに設定されるテンプレート画像とのマッチングを行う。ここで、ウィンドウの変化領域すべてを探索範囲として上記のテンプレート画像とのマッチングを行うと時間がかかる可能性がある。そこで、テンプレート画像とのマッチングを行う際の探索範囲として、ウィンドウの変化領域のうち、特にテンプレート画像とマッチする可能性の高い領域に絞り込んだ領域を用いる。
【００６３】
例えば、図６に示すウィンドウの領域６０１が変化領域であった場合を考える。この場合、例えば、ウィンドウの縦方向のスクロールが行われたことを想定し、領域６０１の中の前回のフレームのマッチ位置から垂直方向にスウィープした領域、すなわち変化領域に対して水平方向に絞り込んだ領域６０２を抽出する。そして、表示更新部１３３は、領域６０１を探索範囲としたテンプレート画像とのマッチングを行い、アノテーションの表示更新を行う（正規更新処理）。また、表示更新部１３３は、領域６０２を探索範囲としたテンプレート画像とのマッチングを行い、アノテーションの表示更新を行う（暫定更新処理）。この暫定更新処理は、正規更新に比べて正確性は保証されないものの、正規更新に比べて探索範囲を狭い範囲にしているので正規更新に比べて応答が速いというメリットがある。
【００６４】
例えば、図７に示すように、ウィンドウの画面の変化（例えば、画面のスクロール移動）を検知すると、表示更新部１３３は、正規更新と暫定更新それぞれのスレッドでテンプレート画像とのマッチングを行う。ここで、正規更新には時間がかかるため、画面の変化の検知が追い付かず、正規更新のループが戻ったときに変化検知部１３１のフラグがTrueであることから、すぐに次のループを実行する。一方、暫定更新は比較的短時間で終わるため、暫定更新のループが戻ったときに待機状態に移行し、変化検知部１３１のスレッドからのイベント通知により、暫定更新のループが再開され、図７に示すようにウィンドウの画面のスクロール方向に追随してアノテーションアイコンの表示も更新される。
【００６５】
このように、表示更新部１３３が、正規更新と暫定更新の両方を行う場合において、前記した変化検知フラグを用いることにより、更新の処理時間が単位期間より長くなっても、短くなっても、正しい更新結果を得る動作が可能である。
【００６６】
すなわち、単位期間を長くすると、ウィンドウの画面が変化してもすぐには通知されず、所定の期間の前後の変化がまとめて表示更新部１３３に通知される。その結果、表示制御装置１０のＣＰＵの処理能力に余力があっても、それを消費せず更新処理は待機状態となる。一方、単位期間を短くすると１回の更新処理の実行途中で複数回の変化検知が表示更新部１３３に通知される。これにより、表示制御装置１０のＣＰＵの処理能力が高ければ１対１に近い比率で通知ごとに更新するが、ＣＰＵの処理能力が低ければそれに応じて複数回の変化内容を１回の更新でまとめて処理する。これらの動きによって、待ち合わせ時間のロスや細かすぎる検知の無駄は発生するが、動作の基本的なしくみが破綻することはない。なお、ここでの単位期間の意味は、画面の変化が連続的に発生している場合に変化検知部１３１から通知される検知イベントの時間間隔であり、これは変化検知のポーリング周期と同じである。
【００６７】
以上の作用を応用することで、変化検知部１３１は、上記の暫定更新および正規更新のそれぞれにポーリング周期を設定し、画面の変化の検知を個別に通知する構成に発展させることができる。
【００６８】
すなわち、図８に示すように、変化検知部１３１は、正規更新向けの変化継続中の検知と、暫定更新向けの変化継続中の検知とをそれぞれ別個に設定したポーリング周期で実行する。そして、変化検知部１３１の正規更新向けのポーリングによりウィンドウの変化が検知されると、表示更新部１３３は、ウィンドウの変化領域を対象に正規更新の計算（例えば、テンプレート画像とのマッチング等）を行い、結果領域を得る。また、変化検知部１３１の暫定更新向けのポーリングにより投機範囲（上記の変化領域から、テンプレート画像とマッチする可能性の高い領域に投機的に絞り込んだ領域）を対象に暫定更新の計算を行い、結果領域を得る。そして、表示更新部１３３は、この結果領域にアノテーションのアイコンの表示更新を行う。
【００６９】
その後、変化傾向計測部１３２は、ウィンドウの変化傾向の計測を行い、変化検知部１３１は、その計測結果を用いて、正規更新と暫定更新それぞれのポーリング周期のバランス調整を行う。例えば、変化検知部１３１は、ウィンドウの変化傾向に基づき、以下の方針に基づき、正規更新と暫定更新それぞれのポーリング周期の設定（バランス調整）を行う。ここでは、ウィンドウの変化傾向が、図９（ａ）に示すパターン１、図９（ｂ）に示すパターン２のいずれかである場合を例に説明する。
【００７０】
パターン１は、ウィンドウ内においてテンプレート画像とのマッチ対象の存在位置の変化の割合よりも、マッチ対象の存在有無の変化の割合の方が大きいパターンである。例えば、頻繁にＧＵＩ要素（マッチ対象）が出現／消滅する場合が該当する。また、パターン２は、ウィンドウ内においてテンプレート画像とのマッチ対象の存在有無の変化の割合よりも、マッチ対象の存在位置の変化の割合の方が大きいパターンである。例えば、画面の縦方向のスクロールが常時発生する場合が該当する。
【００７１】
パターン１のように、マッチ対象の「存在有無」の変化の割合が大きい場合、マッチ対象の位置の変化等にあわせてスムーズにアニメーション表示することはあまり重要ではないので、正規更新を手厚く実施した方が好ましい。よって、変化検知部１３１は、図９の（ｃ）に示すように、正規更新のポーリング周期を短く設定し、暫定更新のポーリング周期を長く設定する。
【００７２】
一方、パターン２のように、画面のスクロールが常時発生する等、マッチ対象の「存在位置」の変化の割合が大きい場合、位置の変化にあわせてリアルタイムにアニメーション表示することは重要なので、暫定更新を手厚く実施した方が好ましい。よって、変化検知部１３１は、図９の（ｃ）に示すように、正規更新のポーリング周期を長く設定し、暫定更新のポーリング周期を短く設定する。
【００７３】
例えば、変化傾向計測部１３２は、デスクトップ上の複数のウィンドウそれぞれについてアノテーションにより表示されるアイコンの時間あたりの出現および消滅による変化の頻度（第１の変化の頻度）を測定する。また、変化傾向計測部１３２は、デスクトップ上の複数のウィンドウそれぞれについてアノテーションにより表示されるアイコンの位置の移動による変化の頻度（第２の変化の頻度）を計測する。
【００７４】
そして、変化検知部１３１は、上記の第１の変化の頻度に対する第２の変化の頻度の割合が所定値より大きいウィンドウについて、当該ウィンドウにおける正規更新のポーリング周期の長さに対する、暫定更新のポーリング周期の長さの割合が所定値よりも大きくなるよう設定する。一方、変化検知部１３１は、上記の第１の変化の頻度に対する第２の変化の頻度の割合が所定値以下であるウィンドウについて、当該ウィンドウにおける正規更新のポーリング周期の長さに対する、暫定更新ポーリング周期の長さの割合を所定値以下になるよう設定する。
【００７５】
つまり、変化検知部１３１は、マッチ対象の存在有無の変化頻度に対して、マッチ対象の位置の変化頻度が大きい場合、正規更新のポーリング周期に対する暫定更新のポーリング周期の割合を小さくする。一方、変化検知部１３１は、マッチ対象の存在有無の変化頻度に対して、位置の変化頻度が小さい場合、正規更新のポーリング周期に対する暫定更新のポーリング周期の割合を大きくする。
【００７６】
このように、変化検知部１３１は、ウィンドウそれぞれについて、当該ウィンドウのマッチ対象の有無の変化とマッチ対象の位置の変化のいずれの変化傾向が強いかに応じて、当該ウィンドウの正規更新および暫定更新のポーリング周期を設定する。
【００７７】
なお、変化検知部１３１は、例えば、暫定更新のポーリング周期を正規更新のポーリング周期を基準としたときの割合を変えることで変化させる。この場合、正規更新のポーリング周期を長くするとそれに応じて暫定更新のポーリング周期は長くなり、正規更新のポーリング周期を短くするとそれに応じて暫定更新のポーリング周期は短くなる。
【００７８】
ここで正規更新のポーリング周期よりも暫定更新のポーリング周期が長くなると、暫定更新の処理の前に正規更新の処理が完了し、その結果をもとに暫定更新の処理がキックされる（図８に示す「＋」のリンク）。これにより、暫定更新の処理の必要性がなくなるため、実質的に暫定更新のポーリング処理は意味がなくなる。つまり、ポーリング周期による暫定更新単独での処理は一旦キャンセルされ、直近の暫定更新出力からのポーリング待機が改めて開始される。そのため、正規更新のポーリング周期に対する暫定更新のポーリング周期の割合は最大でも１．０とする。なお、正規更新のポーリング周期は、第１の実施形態で説明した、基準１および基準２を用いた調整を行えばよいが、このときはアノテーションにより表示されるアイコンの位置は無視して、アイコンの有無の変化について監視すればよい。
【００７９】
［第３の実施形態］
次に、第３の実施形態の表示制御装置１０を説明する。第３の実施形態の表示制御装置１０は、画面変化の終了を検知したとき、これをトリガとしてウィンドウの表示更新を行うことにより、ウィンドウの更新漏れや不正な表示内容が残る等の現象を防止することを特徴とする。
【００８０】
第１の実施形態や第２の実施形態のように、表示制御装置１０の変化検知部１３１がポーリング周期を動的に変化させると、ポーリング周期が極端に長く設定された状態が発生する可能性がある。
【００８１】
画面変化がスクロール操作のように長時間の連続的なものではなく、例えば１フレームだけの変化の場合、ユーザは静止画面画像がさし替わったと認識するので、変化後の静止画面画像に対しタイムラグなくアノテーションアイコンの表示更新が行われることを期待する。このときに、ポーリング周期が極端に長く設定されていると、変化後のタイムラグが長くなり、連続変化中の表示更新の周期が間引かれるよりも、ユーザエクスペリエンスが大きく低下してしまう。このため、画面が静止したときの表示更新は、ポーリング周期に関係なく、速やかに開始されることが望ましい。
【００８２】
そこで、第３の実施形態の表示制御装置１０の変化検知部１３１は、複数のウィンドウそれぞれの画面の変化の停止（終了）を検知する。そして、変化検知部１３１によって画面の変化の停止が検知された場合、表示更新部１３３は、ポーリング周期を待たずに更新処理を行う。なお、表示制御装置１０が第２の実施形態のように正規更新および暫定更新を行う場合、図１０に示すように、表示更新部１３３は、画面の変化の終了が検知されると、正規更新のポーリング周期を待たずに正規更新を行う。
【００８３】
このようにすることで、表示制御装置１０は、画面の変化の終了を検知した場合、必ず１回、正規更新による表示更新が実施されることが保証される。その結果、ポーリング周期が極端に長く設定された場合や表示更新処理の途中でポーリング周期が大幅に変化した場合でも、表示制御装置１０はアノテーションのアイコンの表示更新を正確に行うことができる。また、ポーリング周期が極端に長く設定されている場合等でも、画面の変化が収束したとき、表示制御装置１０はすみやかに表示更新を行うことができる。
【００８４】
なお、変化検知部１３１による画面の変化の停止（終了）の検知は、例えば、通常のビットマップ比較による方法（特許文献１参照）の他に、スキャンラインによる方法（特許文献３参照）等、低負荷で速やかに実施する方法を組み合せることも可能である。
【００８５】
［その他の実施形態］
なお、前記した第２の実施形態の表示制御装置１０において正規更新および暫定更新にそれぞれ１つずつスレッドを割り当てる構成ととっているが、処理するスレッド数を増やして並列度を高めた構成をとることもできる。例えば、変化検知部１３１は、対象ウィンドウごとに変化検知フラグを１セットずつ保持するとともに、対象ウィンドウごとにスレッドを割り当てて実行することが考えられる。このとき、対象ウィンドウと同数のスレッドを動的に生成してもよいし、あらかじめ所定の個数のスレッドを生成しておき、それと同数のグループに対象ウィンドウ集合を分割して割り当ててもよい。グループ分けに際しては、表示順位評価部１３４、変化傾向計測部１３２の出力を利用して、対象ウィンドウ要素の優先順位を決定し、優先度区分により分割することが考えられる。これら並列度を高めた構成は、正規更新および暫定更新の各スレッド内で、ポーリングループ１回につき同時に処理する対象ウィンドウが多数になる頻度が高い場合に有効である。
【００８６】
また、上記の実施形態で述べた表示制御装置１０は、表示制御装置１０の機能を実現する表示制御プログラムを所望の情報処理装置（コンピュータ）にインストールすることによって実装できる。例えば、パッケージソフトウェアやオンラインソフトウェアとして提供される上記の表示制御プログラムを情報処理装置に実行させることにより、情報処理装置を表示制御装置１０として機能させることができる。ここで言う情報処理装置には、デスクトップ型またはノート型のパーソナルコンピュータが含まれる。また、その他にも、情報処理装置にはスマートフォン、携帯電話機やＰＨＳ（Personal  Handyphone  System）等の移動体通信端末、さらには、ＰＤＡ（Personal  Digital  Assistants）等がその範疇に含まれる。また、表示制御装置１０を、クラウドサーバに実装してもよい。
【００８７】
以下に、上記の表示制御プログラムを実行するコンピュータの一例を説明する。図１１は、表示制御プログラムを実行するコンピュータを示す図である。図１１に示すように、コンピュータ１０００は、例えば、メモリ１０１０と、ＣＰＵ１０２０と、ハードディスクドライブインタフェース１０３０と、ディスクドライブインタフェース１０４０と、シリアルポートインタフェース１０５０と、ビデオアダプタ１０６０と、ネットワークインタフェース１０７０とを有する。これらの各部は、バス１０８０によって接続される。
【００８８】
メモリ１０１０は、ＲＯＭ（Read  Only  Memory）１０１１およびＲＡＭ１０１２を含む。ＲＯＭ１０１１は、例えば、ＢＩＯＳ（Basic  Input  Output  System）等のブートプログラムを記憶する。ハードディスクドライブインタフェース１０３０は、ハードディスクドライブ１０９０に接続される。ディスクドライブインタフェース１０４０は、ディスクドライブ１１００に接続される。ディスクドライブ１１００には、例えば、磁気ディスクや光ディスク等の着脱可能な記憶媒体が挿入される。シリアルポートインタフェース１０５０には、例えば、マウス１１１０およびキーボード１１２０が接続される。ビデオアダプタ１０６０には、例えば、ディスプレイ１１３０が接続される。
【００８９】
ここで、図１１に示すように、ハードディスクドライブ１０９０は、例えば、ＯＳ１０９１、アプリケーションプログラム１０９２、プログラムモジュール１０９３およびプログラムデータ１０９４を記憶する。前記した各実施形態で説明した各種データや情報は、例えばハードディスクドライブ１０９０やメモリ１０１０に記憶される。
【００９０】
そして、ＣＰＵ１０２０が、ハードディスクドライブ１０９０に記憶されたプログラムモジュール１０９３やプログラムデータ１０９４を必要に応じてＲＡＭ１０１２に読み出して、上述した各手順を実行する。
【００９１】
なお、プログラムに係るプログラムモジュール１０９３やプログラムデータ１０９４は、ハードディスクドライブ１０９０に記憶される場合に限られず、例えば、着脱可能な記憶媒体に記憶されて、ディスクドライブ１１００等を介してＣＰＵ１０２０によって読み出されてもよい。あるいは、プログラムに係るプログラムモジュール１０９３やプログラムデータ１０９４は、ＬＡＮ（Local  Area  Network）やＷＡＮ（Wide  Area  Network）等のネットワークを介して接続された他のコンピュータに記憶され、ネットワークインタフェース１０７０を介してＣＰＵ１０２０によって読み出されてもよい。
【符号の説明】
【００９２】
１０    表示制御装置
１３１  変化検知部
１３２  変化傾向計測部
１３３  表示更新部
１３４  表示順位評価部
【図１】
2018063564.tif 000003
【図２】
2018063564.tif 000004
【図３】
2018063564.tif 000005
【図４】
2018063564.tif 000006
【図５】
2018063564.tif 000007
【図６】
2018063564.tif 000008
【図７】
2018063564.tif 000009
【図８】
2018063564.tif 000010
【図９】
2018063564.tif 000011
【図１０】
2018063564.tif 000012
【図１１】
2018063564.tif 000013