(57)【要約】  表示制御装置（１０）は、画面の変化を検知し、検知された画面の変化に応じて、画面に表示されているアイコンの位置を基に垂直方向または水平方向にスイープした帯状の矩形領域を生成し、該矩形領域を探索範囲として、画面上から指定された画像テンプレートと類似した領域を探索し、該類似した領域にアイコンをオーバレイ表示する暫定更新処理、および、暫定更新処理の探索範囲よりも広い領域を探索範囲として、画像テンプレートと類似した領域を探索し、類似した領域に対応する位置にアイコンをオーバレイ表示する正規更新処理のいずれか一つまたは両方を実行する。
2016039273.tif 000002
【特許請求の範囲】
【請求項１】
画面の変化を検知する検知部と、
前記検知部によって検知された画面の変化に応じて、前記画面に表示されていた前フレームに対する計算結果を基に所定のマッチング結果情報を生成し、該所定のマッチング結果情報を次のフレームのマッチング条件の一部として、画面上から指定された画像テンプレートと類似した領域を探索し、該類似した領域にアイコンをオーバレイ表示する暫定更新処理、および、前記所定のマッチング結果情報よりも広いマッチング条件として、前記画像テンプレートと類似した領域を探索し、類似した領域に対応する位置にアイコンをオーバレイ表示する正規更新処理のいずれか一つまたは両方を実行する表示制御部と
を備えることを特徴とする表示制御装置。
【請求項２】
前記表示制御部は、前記検知部によって検知された画面の変化に応じて、前記画面に表示されているアイコンの位置を基に所定の領域を生成し、該所定の領域を探索範囲として、画面上から指定された画像テンプレートと類似した領域を探索し、該類似した領域にアイコンをオーバレイ表示する暫定更新処理、および、前記所定の領域よりも広い領域を探索範囲として、前記画像テンプレートと類似した領域を探索し、類似した領域に対応する位置にアイコンをオーバレイ表示する正規更新処理のいずれか一つまたは両方を実行することを特徴とする請求項１に記載の表示制御装置。
【請求項３】
前記表示制御部は、前記検知部によって検知された画面の変化に応じて、前記画面に表示されていた前フレームに対する計算結果であるマッチ位置座標を基に所定の代替テンプレート画像を生成し、該所定の代替テンプレート画像を比較対象のビットマップとして、画面上から前記所定の代替テンプレート画像と一致する領域を探索し、該一致した領域にアイコンをオーバレイ表示する暫定更新処理、および、前記所定の代替テンプレート画像に関係なく、画面上から指定された画像テンプレートと類似した領域を探索し、類似した領域に対応する位置にアイコンをオーバレイ表示する正規更新処理のいずれか一つまたは両方を実行することを特徴とする請求項１に記載の表示制御装置。
【請求項４】
前記検知部は、画面の変化の進行および画面の変化の停止を検知し、
前記表示制御部は、前記検知部によって前記画面の変化の進行が検知された場合には、前記暫定更新処理を実行し、前記検知部によって前記画面の変化の停止が検知された場合には、前記正規更新処理を実行することを特徴とする請求項１に記載の表示制御装置。
【請求項５】
前記表示制御部は、前記検知部によって検知された画面の変化が検知されると、前記暫定更新処理および前記正規更新処理を並行して実行し、
前記暫定更新処理では、実行済みである前回の暫定更新処理において前記アイコンが表示される位置と、前記正規更新処理において前フレームに対する計算結果とを基に、次回の暫定更新処理において前記マッチング結果情報を生成することを特徴とする請求項１に記載の表示制御装置。
【請求項６】
前記表示制御部は、前記検知部によって検知された画面の変化が検知されると、前記暫定更新処理および前記正規更新処理を並行して実行し、
前記暫定更新処理では、実行済みである前回の暫定更新処理において前記アイコンが表示される位置と、前記正規更新処理においてアイコンが表示された位置とを基に、次回の暫定更新処理において前記所定の領域を生成することを特徴とする請求項２に記載の表示制御装置。
【請求項７】
前記表示制御部は、前記検知部によって検知された画面の変化が検知されると、前記暫定更新処理および前記正規更新処理を並行して実行し、
前記暫定更新処理では、前記正規更新処理において前フレームに対する計算結果であるマッチ位置座標を基に、次回の暫定更新処理において前記所定の代替テンプレート画像を生成することを特徴とする請求項３に記載の表示制御装置。
【請求項８】
前記表示制御部は、前記正規更新処理において、前記画面に表示されるフレーム間画像の差分領域を抽出し、該差分領域を探索領域として、前記画面上から指定された画像テンプレートと類似した領域を探索し、該類似した領域にアイコンをオーバレイ表示し、前記暫定更新処理において、前記差分領域を抽出するとともに、該抽出した差分領域に前記正規更新処理において抽出された差分領域を追加し、該追加した差分領域を探索領域として、前記画面上から指定された画像テンプレートと類似した領域を探索し、該類似した領域にアイコンをオーバレイ表示することを特徴とする請求項１に記載の表示制御装置。
【請求項９】
前記表示制御部は、前記画面上において所定の比較基準位置を決定し、該比較基準位置における比較対象ピクセルと、前記所定の代替テンプレート画像のビットマップ上のピクセルのうち代表点として選択された比較ピクセルとを順に比較し、１つでもピクセル値が一致しない場合には、前記画面上の次の比較基準位置に移動してさらに比較を繰り返し、代表点として選択された全てのピクセル値が一致する場合には、前記代替テンプレート画像のビットマップ上の全てのピクセルを任意の順に比較し、ビットマップ上の全てのピクセルを任意の順に比較した結果、１つでもピクセル値が一致しない場合には、前記画面上の次の比較基準位置に移動してさらに比較を繰り返し、全ての比較において一致すると判定された場合には、前記画面上の比較基準位置をマッチ位置に前記アイコンをオーバレイ表示することを特徴とする請求項３に記載の表示制御装置。
【請求項１０】
前記表示制御部は、前記検知部によって検知された画面の変化が検知されると、前記暫定更新処理および前記正規更新処理を実行し、
前記正規更新処理では、前フレームに対する計算結果を基に所定のマッチング結果情報を生成し、該所定のマッチング結果情報をキャッシュに複数世代にわたって蓄積し、
前記暫定更新処理では、前フレームに対する計算結果を基に所定のマッチング結果情報を生成し、該所定のマッチング結果情報をキャッシュに複数世代にわたって蓄積し、
前記暫定更新処理では、前記正規更新処理の前記キャッシュ、および、前記暫定更新処理の前記キャッシュのいずれか一つまたは両方に対して、マッチング結果情報のタイムスタンプをもとに参照することで、前記暫定更新処理での次のフレームのマッチング条件を生成することを特徴とする請求項１に記載の表示制御装置。
【請求項１１】
前記正規更新処理の前記キャッシュ、および、前記暫定更新処理の前記キャッシュにおいて、起動の期間と終了の期間とをまたがって、前記画面を表示する情報処理装置に前記マッチング結果情報を記憶させることを特徴とする請求項１０に記載の表示制御装置。
【請求項１２】
前記正規更新処理の前記キャッシュ、および、前記暫定更新処理の前記キャッシュにおいて、起動した情報処理装置を特定する情報またはユーザを特定する情報ごとに分類するとともに、通信可能なサーバに前記マッチング結果情報を記憶させることを特徴とする請求項１０に記載の表示制御装置。
【請求項１３】
表示制御装置で実行される表示制御方法であって、
画面の変化を検知する検知工程と、
前記検知工程によって検知された画面の変化に応じて、前記画面に表示されていた前フレームに対する計算結果を基に所定のマッチング結果情報を生成し、該所定のマッチング結果情報を次のフレームのマッチング条件の一部として、画面上から指定された画像テンプレートと類似した領域を探索し、該類似した領域にアイコンをオーバレイ表示する暫定更新処理、および、前記所定のマッチング結果情報よりも広いマッチング条件として、前記画像テンプレートと類似した領域を探索し、類似した領域に対応する位置にアイコンをオーバレイ表示する正規更新処理のいずれか一つまたは両方を実行する表示制御工程と
を含んだことを特徴とする表示制御方法。
【請求項１４】
画面の変化を検知する検知ステップと、
前記検知ステップによって検知された画面の変化に応じて、前記画面に表示されていた前フレームに対する計算結果を基に所定のマッチング結果情報を生成し、該所定のマッチング結果情報を次のフレームのマッチング条件の一部として、画面上から指定された画像テンプレートと類似した領域を探索し、該類似した領域にアイコンをオーバレイ表示する暫定更新処理、および、前記所定のマッチング結果情報よりも広いマッチング条件として、前記画像テンプレートと類似した領域を探索し、類似した領域に対応する位置にアイコンをオーバレイ表示する正規更新処理のいずれか一つまたは両方を実行する表示制御ステップと
をコンピュータに実行させるための表示制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、表示制御装置、表示制御方法および表示制御プログラムに関する。
【背景技術】
【０００２】
従来、ユーザがアプリケーションを利用する際に、オーバレイ表示によりユーザに対して視覚的な解釈内容を提供するアノテーションの技術が知られている。例えば、アノテーションの技術をリアルタイムの映像に適用することで、各瞬間の解釈結果をオーバレイ表示し、解釈対象の変化や動きに同期して表示更新して、ユーザにもとの映像とそれに対する解釈とを同時に提示する。これにより、もとの映像に手を加えることなく、ユーザに対象と解釈を一体的に見せることで、ユーザの情報支援が可能となる。【０００３】
この分野の具体的応用例として、アノテーションシステムがある（例えば、特許文献１参照）。ＰＣのスクリーン画面を連続的にキャプチャし、その画面上から指定された画像テンプレートと類似した領域を探索し、得られた位置にアイコンをオーバレイ表示するシステムである。【０００４】
ここでは、画像テンプレートとそれぞれに対応する短いメッセージを１セットとするルールを人があらかじめ複数定義しておく。これらルール集合を毎瞬間のキャプチャ画像に画像テンプレートマッチングし、アイコンを表示すべき位置を計算することになる。この処理が、画像内容解釈の処理に相当する。解釈内容を実際に人が操作しているＰＣ画面上に重ねて見せることで、システムＡＰのウィンドウ上の特定のボタンやテキストフィールドに注釈をつける、あるいはテーブル表示された各行の特定のアイコンや文字列にヒント情報をつけることができる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】国際公開第２０１４／００２８１２号
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、従来のアノテーションシステムでは、画像テンプレートマッチングを行っているため、適用対象画像の面積が大きい場合や画面変化が大きい場合には、処理負荷が高くなり、処理時間が長くなるため、迅速に画面の更新処理を行うことができないという課題があった。【０００７】
つまり、アノテーションシステムでは画像テンプレートマッチングを利用しているが、一般に適用対象画像の面積の増大にともなって、計算時間がかかることが知られている。なお、例えば、アクティブなウィンドウ領域に限定して、アノテーション表示計算を行うことでこの問題に対処することも考えられるが、そもそもウィンドウサイズが大きい場合や、Ｗｅｂブラウザのように内部全体がスクロールする場合などは、近年の高性能ＰＣを用いてもコマ送りのように不自然な動きになってしまう。【０００８】
また、例えば、アノテーションシステムの実用シーンにおいては、１つのウィンドウに対して３０以上のルールが定義・適用される場合がある。フレーム画像に対し実行される画像マッチング計算の回数は、ルールごとに１回であるため、ルール数に比例して計算時間がかかる。つまり、実用的なルールセットを使用しようとすると、容易にリアルタイム処理に追いつかないレベルに達してしまう。【０００９】
さらには、例えば、Ｗｅｂブラウザなどはスクロールにより可視になっている画像内容にマッチする一部のルールだけが適用され、ほとんどのルールについては視野外にスクロールアウトして関係ないことが多い。しかしながら、これらが関係ないルールかどうかは、実際に画像マッチングを行ってマッチ位置が見つかるかどうかでしか判断できない。つまり、ユーザの見た目に表示されるアイコンが数個であっても、１フレームごとに逐一評価計算しなければならないルールは潜在的に多数となってしまう。【００１０】
以上の要因が重なると、多数のアイコンが表示されるわけでもなく、見た目に多くの情報が表示されないにも関わらず、１フレームの更新に５〜１０秒かかるなど、実用に耐えないほどユーザが待たされる場合もある。背景の画像はこれと並行・非同期にリアルタイムで進行するため、画面が変化しているあいだはオーバレイ表示が追い付かない。この間はオーバレイ表示が消えてしまうかもとの位置に表示が取り残されたままとなってしまううえ、操作中の画面が静止し十分時間がたってはじめてオーバレイ表示が更新されることになる。
【課題を解決するための手段】
【００１１】
上述した課題を解決し、目的を達成するために、本発明の表示制御装置は、画面の変化を検知する検知部と、前記検知部によって検知された画面の変化に応じて、前記画面に表示されていた前フレームに対する計算結果を基に所定のマッチング結果情報を生成し、該所定のマッチング結果情報を次のフレームのマッチング条件の一部として、画面上から指定された画像テンプレートと類似した領域を探索し、該類似した領域にアイコンをオーバレイ表示する暫定更新処理、および、前記所定のマッチング結果情報よりも広いマッチング条件として、前記画像テンプレートと類似した領域を探索し、類似した領域に対応する位置にアイコンをオーバレイ表示する正規更新処理のいずれか一つまたは両方を実行する表示制御部とを備えることを特徴とする。【００１２】
また、本発明の表示制御方法は、表示制御装置で実行される表示制御方法であって、画面の変化を検知する検知工程と、前記検知工程によって検知された画面の変化に応じて、前記画面に表示されていた前フレームに対する計算結果を基に所定のマッチング結果情報を生成し、該所定のマッチング結果情報を次のフレームのマッチング条件の一部として、画面上から指定された画像テンプレートと類似した領域を探索し、該類似した領域にアイコンをオーバレイ表示する暫定更新処理、および、前記所定のマッチング結果情報よりも広いマッチング条件として、前記画像テンプレートと類似した領域を探索し、類似した領域に対応する位置にアイコンをオーバレイ表示する正規更新処理のいずれか一つまたは両方を実行する表示制御工程とを含んだことを特徴とする。【００１３】
また、本発明の表示制御プログラムは、画面の変化を検知する検知ステップと、前記検知ステップによって検知された画面の変化に応じて、前記画面に表示されていた前フレームに対する計算結果を基に所定のマッチング結果情報を生成し、該所定のマッチング結果情報を次のフレームのマッチング条件の一部として、画面上から指定された画像テンプレートと類似した領域を探索し、該類似した領域にアイコンをオーバレイ表示する暫定更新処理、および、前記所定のマッチング結果情報よりも広いマッチング条件として、前記画像テンプレートと類似した領域を探索し、類似した領域に対応する位置にアイコンをオーバレイ表示する正規更新処理のいずれか一つまたは両方を実行する表示制御ステップとをコンピュータに実行させることを特徴とする。
【発明の効果】
【００１４】
本発明によれば、処理負荷を低減して処理時間を短くし、迅速に画面の更新処理を行うことができるという効果を奏する。
【図面の簡単な説明】
【００１５】
【図１】図１は、第一の実施の形態に係る表示制御装置の全体構成を示す概略構成図である。
【図２】図２は、第一の実施の形態に係る表示制御装置において実行される暫定更新処理の概要について説明する図である。
【図３】図３は、第一の実施の形態に係る表示制御装置において実行される正規更新処理の概要について説明する図である。
【図４Ａ】図４Ａは、オーバレイ表示を説明するための図である。
【図４Ｂ】図４Ｂは、オーバレイ表示を説明するための図である。
【図４Ｃ】図４Ｃは、オーバレイ表示を説明するための図である。
【図５】図５は、暫定更新における見落としが発生する事例について説明する図である。
【図６】図６は、第一の実施の形態に係る表示制御装置における画面変化検知処理の流れを説明する図である。
【図７】図７は、第一の実施の形態に係る表示制御装置における画面更新処理の流れを説明する図である。
【図８】図８は、矩形に対するunion演算を説明する図である。
【図９】図９は、矩形に対するintersection演算を説明する図である。
【図１０】図１０は、第二の実施の形態に係る表示制御装置における正規更新処理の流れを説明する図である。
【図１１】図１１は、暫定更新処理および正規更新処理を並行して実行する画面更新処理を、実際の画面の更新とともに説明する図である。
【図１２】図１２は、第二の実施の形態に係る表示制御装置における正規更新処理の流れを説明する図である。
【図１３】図１３は、第二の実施の形態に係る表示制御装置における暫定更新処理の流れを説明する図である。
【図１４】図１４は、第三の実施の形態に係る表示制御装置において実行される暫定更新処理および正規更新処理を並行して実行する画面更新処理の概要を説明する図である。
【図１５】図１５は、差分更新と非同期構成による見落としが発生する事例について説明する図である。
【図１６】図１６は、第三の実施の形態に係る表示制御装置における正規更新処理の流れを説明する図である。
【図１７】図１７は、第三の実施の形態に係る表示制御装置における暫定更新処理の流れを説明する図である。
【図１８】図１８は、差分更新が効果的に働く事例について説明する図である。
【図１９】図１９は、第四の実施の形態に係る表示制御装置において実行される暫定更新処理および正規更新処理を並行して実行する画面更新処理の概要を説明する図である。
【図２０】図２０は、第四の実施の形態に係る表示制御装置における暫定更新処理の流れを説明する図である。
【図２１】図２１は、対象画像の例を示す図である。
【図２２】図２２は、テンプレート画像の例を示す図である。
【図２３】図２３は、ピクセルの比較処理を説明する図である。
【図２４】図２４は、ピクセルの比較処理を実行するプログラムの疑似コードの例を示す図である。
【図２５Ａ】図２５Ａは、偽の判定を出すべき部分画像の例を示す図である。
【図２５Ｂ】図２５Ｂは、偽の判定を出すべき部分画像の例を示す図である。
【図２５Ｃ】図２５Ｃは、偽の判定を出すべき部分画像の例を示す図である。
【図２５Ｄ】図２５Ｄは、偽の判定を出すべき部分画像の例を示す図である。
【図２５Ｅ】図２５Ｅは、偽の判定を出すべき部分画像の例を示す図である。
【図２６】図２６は、ビットマップマッチング処理における選択点の例を示す図である。
【図２７Ａ】図２７Ａは、代替テンプレートの例を示す図である。
【図２７Ｂ】図２７Ｂは、代替テンプレートの例を示す図である。
【図２８】図２８は、表示制御プログラムを実行するコンピュータを示す図である。
【発明を実施するための形態】
【００１６】
以下に、本願に係る表示制御装置、表示制御方法および表示制御プログラムの実施の形態を図面に基づいて詳細に説明する。なお、この実施の形態により本願に係る表示制御装置、表示制御方法および表示制御プログラムが限定されるものではない。
【００１７】
［第一の実施の形態］
以下の実施の形態では、第一の実施の形態に係る表示制御装置の構成および処理の流れを順に説明し、最後に第一の実施の形態による効果を説明する。なお、以下の説明では、アノテーションを適用例とした表示制御について説明するが、アノテーションに限定されるものではない。
【００１８】
［第一の実施の形態に係る表示制御装置の構成］
まず、図１を用いて、第一の実施の形態に係る表示制御装置１０について説明する。図１は、第一の実施の形態に係る表示制御装置１０の全体構成を示す概略構成図である。図１に示すように、表示制御装置１０は、入力部１１、出力部１２、制御部１３および記憶部１４を有する。
【００１９】
入力部１１は、画面のスクロール指示やアクティブウィンドウの選択指示などを入力するものであり、キーボードやマウスなどを備えて構成される。また、出力部１２は、画面を表示するものであり、ディスプレイやスピーカを備えて構成される。
【００２０】
記憶部１４は、制御部１３による各種処理に必要なデータおよびプログラムを格納するが、特に本発明に密接に関連するものとしては、アノテーションＤＢ（Data  Base）１４ａを有する。例えば、記憶部１４は、ＲＡＭ（Random  Access  Memory）、フラッシュメモリ（Flash  Memory）等の半導体メモリ素子、又は、ハードディスク、光ディスク等の記憶装置などである。アノテーションＤＢ１４ａは、例えば、アノテーション文章の表示対象となるウィンドウ毎に作成した複数のアノテーションルールを記憶する。
【００２１】
制御部１３は、各種の処理手順などを規定したプログラムおよび所要データを格納するための内部メモリを有し、これらによって種々の処理を実行するが、特に本発明に密接に関連するものとしては検知部１３ａおよび表示制御部１３ｂを有する。
【００２２】
検知部１３ａは、出力部１２において表示される画面の変化を検知する。具体的には、検知部１３ａは、画面の変化の進行および画面の変化の停止を検知する。
【００２３】
表示制御部１３ｂは、検知部１３ａによって検知された画面の変化に応じて、画面に表示されていた前フレームに対する計算結果を基に所定のマッチング結果情報を生成し、該所定のマッチング結果情報を次のフレームのマッチング条件の一部として、画面上から指定された画像テンプレートと類似した領域を探索し、該類似した領域にアイコンをオーバレイ表示する暫定更新処理、および、所定のマッチング結果情報よりも広いマッチング条件として、画像テンプレートと類似した領域を探索し、類似した領域に対応する位置にアイコンをオーバレイ表示する正規更新処理のいずれか一つまたは両方を実行する。
【００２４】
具体的には、表示制御部１３ｂは、検知部１３ａによって検知された画面の変化に応じて、画面に表示されているアイコンの位置を基に所定の領域（例えば、アイコンの位置を基に垂直方向または水平方向にスウィープした帯状の矩形領域）を生成し、該矩形領域を探索範囲として、画面上から指定された画像テンプレートと類似した領域を探索し、該類似した領域にアイコンをオーバレイ表示する暫定更新処理、および、矩形領域よりも広い領域を探索範囲として、画像テンプレートと類似した領域を探索し、類似した領域に対応する位置にアイコンをオーバレイ表示する正規更新処理のいずれか一つまたは両方を実行する。
【００２５】
また、表示制御部１３ｂは、検知部１３ａによって画面の変化の進行が検知された場合には、暫定更新を実行し、検知部１３ａによって画面の変化の停止が検知された場合には、正規更新を実行する。
【００２６】
例えば、表示制御部１３ｂは、暫定更新処理において、前フレームを参考に簡易に計算する方法として、既に表示されているアイコンの位置をもとに、それを垂直方向もしくは水平方向にスウィープした帯状の矩形を生成する。この矩形領域を探索範囲として、画像テンプレートマッチングを計算する。これに対して、表示制御部１３ｂは、正規更新において、通常通り他のフレームを参考にしないで、当該フレームの所定の矩形領域を探索範囲とした処理を行う。
【００２７】
また、表示制御部１３ｂは、画面変化が進行している間は暫定更新を行い、静止状態に至った時点で正規更新を行う。その後は次の画面変化が開始するまで、その結果を表示したまま更新は行わず、再び画面変化が開始したら、その時点のアイコン位置から、暫定更新を開始する。
【００２８】
ここで、図２を用いて、暫定更新処理の概要について説明する。図２は、第一の実施の形態に係る表示制御装置において実行される暫定更新処理の概要について説明する図である。図２の例は、表示制御装置１０の各機能を概念的にイメージしたものである。また、図２の例において、画像マッチングを行う処理と、画面上の変化を検知する処理と、アイコンをオーバレイ表示する処理がそれぞれ別のスレッドで実行される。
【００２９】
図２では、機能１０１と機能１０３は、画面上の変化を検知する機能ブロックに相当し、機能１２１〜１２４は、画像マッチングを行う機能ブロックに相当し、また、機能１３１は、アイコンをオーバレイ表示する処理を行う機能ブロックに相当する。
【００３０】
なお、画面上の変化を検知する処理は、画像マッチングの計算中も、画面上の変化が発生するために、変化の検知漏れのないよう短い周期で実行する必要がある。また、アイコンをオーバレイ表示する処理は、実装するＧＵＩ（Graphical  User  Interface）プラットフォームの仕様に依存する部分であり、例えばｊａｖａ（登録商標）言語のｓｗｉｎｇ  ＧＵＩの場合、ｒｅｐａｉｎｔメッセージのようにウィンドウマネージャへ再描画処理実行を依頼したあと、マネージャ側のスレッドで表示処理が行われる。
【００３１】
図２に示すように、機能１０１では、キャプチャ画像を取得し、画像データを機能１２２に出力する。また、機能１０３では、機能１０１からキャプチャ画像を受け取り、キャプチャ画像のウィンドウ枠全体の変化領域（窓枠矩形）を抽出し、変化領域である矩形座標値（ｘ,ｙ,ｗ,ｈ）を機能１２１に通知する。なお、ここでは、変化領域として現在処理対象としているアクティブウィンドウのフレーム境界を使用する。
【００３２】
機能１２１は、機能１２４から取得したマッチ位置１４０をもとに、垂直方向または水平方向にスウィープした帯状のスウィープ矩形を生成し、機能１０３から得た窓枠矩形とintersectionをとって、これを探索領域として機能１２２に通知する。
【００３３】
機能１２２は、機能１２１からテンプレート画像と探索領域を受け取り、さらに、実行時点での探索領域のキャプチャ画像を機能１０１から取得し、データが揃った時点で、探索領域によって現在のルールのテンプレート画像に関するマッチング計算を行い、マッチング結果を機能１２３に通知する。また、機能１２４は、対象のルールＩＤをキーとするハッシュマップに、当該マッチ位置座標のリストを登録する。
【００３４】
機能１３１は、機能１２３から再描画依頼のイベントを受け取り、実際に表示すべきアイコンの位置座標を機能１２４から取得して、オーバレイ表示を行う。なお、アノテーションにおけるアイコンは、常にデスクトップの最前面に位置し、全体を覆う透明ウィンドウ上に描画される。これにより、背後のウィンドウにオーバレイした表示が可能となる。
【００３５】
次に、図３を用いて、正規更新処理の概要について説明する。図３は、第一の実施の形態に係る表示制御装置において実行される正規更新処理の概要について説明する図である。図３の例は、表示制御装置１０の各機能を概念的にイメージしたものである。また、図３の例において、画像マッチングを行う処理と、画面上の変化を検知する処理と、アイコンをオーバレイ表示する処理がそれぞれ別のスレッドで実行される。
【００３６】
図３では、機能１０１と機能１０２は、画面上の変化を検知する機能ブロックに相当し、機能１１１〜１１４は、画像マッチングを行う機能ブロックに相当し、また、機能１３１は、アイコンをオーバレイ表示する処理を行う機能ブロックに相当する。
【００３７】
図３に示すように、機能１０１では、キャプチャ画像を取得し、画像データを機能１１２に出力する。また、機能１０２では、機能１０１からキャプチャ画像を受け取り、キャプチャ画像のウィンドウ枠全体の変化領域（窓枠矩形）を抽出し、変化領域である矩形座標値（ｘ，ｙ，ｗ，ｈ）を機能１１１に通知する。なお、ここでは、変化領域として現在処理対象としているアクティブウィンドウのフレーム境界を使用する。
【００３８】
機能１１２は、機能１１１からテンプレート画像と探索領域を受け取り、さらに、実行時点での探索領域のキャプチャ画像を機能１０１から取得し、データが揃った時点で、探索領域によって現在のルールのテンプレート画像に関するマッチング計算を行い、マッチング結果を機能１１３および機能１３１に通知する。また、機能１１４は、対象のルールＩＤをキーとするハッシュマップに、当該マッチ位置座標のリストをキャッシュメモリに登録する。なお、機能１１４は、前述した機能１２４と同じものである。つまり、機能１１４および機能１２４は、直近に実行された暫定更新処理または正規更新処理において登録されたマッチ位置座標のリストをキャッシュしている。機能１３１は、機能１１３から再描画依頼のイベントを受け取り、実際に表示すべきアイコンの位置座標を機能１１４から取得して、オーバレイ表示を行う。
【００３９】
ここで、図４Ａ、図４Ｂ、図４Ｃを用いて、広い面積が一気に変化するスクロールの例について説明する。スクロールするパネルの内部のビューを示したものが図４Ｂである。図４Ｂにおいて、点線が論理的・内部的に存在しているビューの矩形で、一点鎖線がスクロールパネル上で可視となっている範囲である。ここでのアノテーションルールの定義を簡易に示したものが図４Ｃである。
【００４０】
それぞれ、対象となるウィンドウのタイトル文字列、対象となるプロセスの起動パス、そしてテンプレート画像（ここでは画像イメージを示している）が指定されている。図４Ｃの例では、例えば、「notepad.exe」の「無題」という部分文字列を含むタイトルのウィンドウに対して、「Ａ」などのイメージと同じ座標位置を探索し、そこにアイコンを表示するアノテーションルールの定義が示されている。なお、アイコンは説明のため、マッチした位置にテンプレートを重ねた時の矩形中心に表示するものとする。
【００４１】
現在、図４Ａの状態でアノテーションを表示すると、可視範囲の「Ａ」の位置２か所にルール１の生成したアイコンが表示される。「Ｂ」、「Ｃ」についても同様である。ビューを上にスクロールすると、可視範囲にはいままで見えていなかった領域がスクロールインしてくる。その結果、下方に隠れていた「Ａ」が見えるようになる。
【００４２】
そして、暫定更新は、図４Ｂにおいて二点鎖線で示した矩形、すなわち前フレームのマッチ位置２か所を垂直方向にスウィープさせ、可視範囲とのintersectionをとった矩形を、次のフレームのルール１に対する探索範囲とする更新方法である。この方法は、可視範囲全体を探索範囲とする正規更新よりも計算量が少ないため、速度が速い。
【００４３】
そのかわりに、結果の正確さを犠牲にしている。すなわち、下方に隠れていた「Ａ」１０１３がスクロールインしても探索範囲外であるため、その存在を見落としてしまうことになる。このため、スクロールを継続している間、すなわち暫定更新の間は、「Ａ」１０１３に対するアイコンは表示されないまま、もとから表示されていた２つの「Ａ」１０１１、１０１２が上方に移動していく。
【００４４】
Ｗｅｂブラウザの画面のイメージ上において、見落としの可能性が生じる領域を図５に示す。図５に示すように、スクロール開始時点のＷｅｂブラウザの画面について、垂直スクロールした場合に、新たにスクロールインした可視領域のうち、暫定的なマッチ対象領域に含まれない領域は、新たなアイコン出現を見逃す可能性のある領域となり、そのアイコン表示を漏らしてしまうことになる。
【００４５】
Ｗｅｂブラウザでは、スクロールパネルがウィンドウの大部分を占めるが、探索範囲を絞ることで、大幅に画像マッチングの計算量を抑えられる。実際は、アイコンの存在位置が複数で幅広く分散してしまう場合、この効果は少なくなる。また、水平方向のスクロールやスクロール以外の画面変化に対しては効果がない。しかしながら、ここではＷｅｂブラウザのスクロールをしながら、イントラサイトやイントラシステム画面のなかから必要な情報をユーザが探す場合に、アノテーションのオーバレイ表示が重要である。スクロールで移動中にもアノテーションが一体的に追随することが使用感として大きな違いをもたらすからである。
【００４６】
このようなシーンでは、垂直方向にウィンドウの高さの半分以上の大幅な移動も想定に入れる必要があるため、ウィンドウ枠いっぱいの高さに探索範囲を拡大している。カメラ画像において、テンプレート画像と同じ幅、高さのマージンを加えた探索範囲を使用するなどの方法が一般に用いられるが、本手法は広い意味でそのバリエーションである。ただし、ＰＣの画面上で頻繁に発生し、かつ暫定更新が重要な変化シーンの特徴を利用している点で異なっている。
【００４７】
暫定更新はある意味で正確性を犠牲にすることで計算量を抑える考え方である。ここでの方法について、この点をさらに説明する。図４Ｂの事例について、さらにスクロールを続けると、もとからアイコンが表示されていた「Ａ」１０１１、１０１２はスクロールアウトし、アイコンが消える。動作を止めずに引き続きスクロール方向を逆にして、再びこれら「Ａ」１０１１、１０１２をスクロールインさせても、既にルール１のアイコンが０個となり、次のフレームの探索範囲が空の矩形となってしまっているために、画像マッチング自体がスキップされ計算されない。つまり、一旦アイコンが消えてしまうと、暫定更新を続けたままであっても、「Ａ」１０１３がスクロールインしたときと同じく、その存在を見落としてしまうことになる。
【００４８】
これは、探索範囲が空にならないまでも狭まる場合にも同様のことがいえる。つまり動作を止めずに、「Ａ」１０１１と「Ａ」１０１２のあいだでスクロール方向を反転すると、一旦スクロールアウトして見えなくなった「Ａ」１０１１が再びスクロールインしたとしても、それに対してアイコンが表示されることはない。ただし、「Ａ」１０１１が図の位置ではなく、１０１２の真上、すなわち垂直方向のスウィープ範囲内の位置にあれば、再びアイコンが表示される。
【００４９】
ちなみに、「Ｃ」に着目すると、「Ｃ」１０１６と「Ｃ」１０１８のアイコンが表示されている状態でスクロールし、「Ｃ」１０１７がスクロールインしたとする。この場合、探索範囲は、「Ｃ」１０１６と「Ｃ」１０１８をスウィープした矩形を包含する最小矩形になるため、「Ｃ」１０１７は発見され、アイコンが表示されることになる。このように、ここまでの説明では同種のマッチ位置からの探索範囲をunion演算して、１つの矩形としているが、これを行わずに、複数の探索範囲にわけたまま複数回画像マッチング処理を行うことも考えられる。また、どちらの方法をとるかを、マッチ位置のばらつきによって動的に切り替えることも考えられる。いずれも、暫定更新の内部処理のアルゴリズムのバリエーションであり、本発明の構成上において有効な方法である。
【００５０】
以上から明らかなように、暫定更新は具体的な探索範囲の推定方法を指すのではなく、そのような推定方法にもとづく、正確性を欠くが速度が速い更新処理を過渡的に用いる考え方を指す。特に、正確性について何を犠牲にするかが重要であり、本来アイコンが存在するべき位置にアイコンが表示されない、という偽陰性（False  Negative）を許容する点が重要である。逆に言うと、本来アイコンが存在しない位置に誤ってアイコンが表示される、という偽陽性（False  Positive）は許容しない。これにより、暫定更新を繰り返しても、本来表示されるべきでないアイコンが増大していくことはなく、本来表示されるべきアイコンが誤って消えていく方向にずれていく。したがって、正確性を犠牲にするといっても、最悪でもアイコンが全て消えてしまうのみであり、処理系への負荷が増大することはない。
【００５１】
本発明の構成では、暫定更新で結果の正確さが保証されなくても、適宜に正規更新を実施し、本来存在するべきアイコンを厳密に判定・発見させる点が特徴である。しかし、正規更新は計算量が多いため、スクロール途中ではなく操作を終えて画面の変化がおさまってから実行することが望ましい。画面の変化の開始と終了をプログラムにより行うため、検知部１３ａの内部処理として、画面変化検知手続きを実行する。
【００５２】
［表示制御装置の処理の一例］
次に、図６および図７を用いて、第一の実施の形態に係る表示制御装置１０の処理について説明する。図６は、第一の実施の形態に係る表示制御装置における画面変化検知処理の流れを説明する図である。図７は、第一の実施の形態に係る表示制御装置における画面更新処理の流れを説明する図である。
【００５３】
まず、図６を用いて、表示制御装置１０における画面変化検知処理の流れを説明する。なお、この処理は独立したスレッドで実行され、アノテーションシステムを実行するプログラムが終了するまでループする。
【００５４】
図６に示すように、表示制御装置１０の検知部１３ａは、アノテーションを実行するプログラムが終了したか判定する（ステップＳ１０１）。この結果、アノテーションを実行するプログラムが終了した場合には（ステップＳ１０１肯定）、画面変化検知処理を終了する。また、検知部１３ａは、アノテーションを実行するプログラムが終了していない場合には（ステップＳ１０１否定）、画面をキャプチャし（ステップＳ１０２）、前回の内容との差分をとる（ステップＳ１０３）。
【００５５】
具体的には、検知部１３ａは、画面キャプチャと前回の内容とでビットパターンの比較を行い、差分のビットマップをとる。つまりピクセルごとに値を比較し同じであれば「０」、異なっていれば「１」を格納する。この処理中に１回でも「１」が出現した場合には、差分があるということになる。そして、「差分あり」のときは、その時刻を記憶する。
【００５６】
続いて、検知部１３ａは、変化状態のフラグが現在「変化中」であるか否かを判定する（ステップＳ１０４）。この結果、検知部１３ａは、変化状態のフラグが現在「変化中」である場合（ステップＳ１０４肯定）、「差分あり」であるかを判定する（ステップＳ１０５）。そして、検知部１３ａは、「差分あり」であると判定した場合には（ステップＳ１０５肯定）、ステップＳ１０１に戻る。
【００５７】
また、検知部１３ａは、「差分あり」でないと判定した場合には（ステップＳ１０５否定）、前回の差分ありから監視期間経過したかを判定する（ステップＳ１０６）。例えば、検知部１３ａは、前回の「差分あり」のときの時刻と今現在の時刻の差を計算し、監視期間経過したかどうかを判定する。そして、監視期間はあらかじめ設定された時間で、例えば、短めの設定では1000msec、長めの設定では3000msecなどである。
【００５８】
この結果、検知部１３ａは、前回の「差分あり」から監視期間経過していないと判定した場合には（ステップＳ１０６否定）、ステップＳ１０１に戻る。一方、検知部１３ａは、前回の差分ありから監視期間経過したと判定した場合には（ステップＳ１０６肯定）、画面の状態として「変化終了」を表示制御部１３ｂに通知し（ステップＳ１０７）、ステップＳ１０１に戻る。
【００５９】
また、ステップＳ１０４の処理に戻って、検知部１３ａは、変化状態のフラグが現在「変化中」でないと判定した場合（ステップＳ１０４否定）、「差分あり」であるかを判定する（ステップＳ１０８）。そして、検知部１３ａは、「差分あり」でないと判定した場合には（ステップＳ１０８否定）、ステップＳ１０１に戻る。また、検知部１３ａは、「差分あり」であると判定した場合には（ステップＳ１０８肯定）、画面の状態として「変化開始」を表示制御部１３ｂに通知し（ステップＳ１０９）、ステップＳ１０１に戻る。
【００６０】
次に、図７を用いて、表示制御装置１０における画面更新処理の流れを説明する。なお、この処理は独立したスレッドで実行され、アノテーションシステムを実行するプログラムが終了するまでループする。
【００６１】
図７に示すように、表示制御装置１０の表示制御部１３ｂは、アノテーションを実行するプログラムが終了したか判定する（ステップＳ２０１）。この結果、アノテーションを実行するプログラムが終了した場合には（ステップＳ２０１肯定）、画面更新処理を終了する。また、表示制御部１３ｂは、アノテーションを実行するプログラムが終了していない場合には（ステップＳ２０１否定）、画面変化状態を取得し（ステップＳ２０２）、画面変化状態が「変化終了」直後であるか否かを判定する（ステップＳ２０３）。
【００６２】
また、表示制御部１３ｂは、「変化終了」直後であると判定した場合には（ステップＳ２０３肯定）、未評価ルールがあるか判定する（ステップＳ２０４）。この結果、表示制御部１３ｂは、未評価ルールがないと判定した場合には（ステップＳ２０４否定）、ステップＳ２０１に戻る。
【００６３】
また、表示制御部１３ｂは、未評価ルールがあると判定した場合には（ステップＳ２０４肯定）、探索矩形（変化領域）を取得する（ステップＳ２０５）。変化領域は、ｘ,ｙ,ｗ,ｈからなる矩形座標値である。ステップＳ２０５の処理においては、変化領域として常に現在処理対象としているアクティブウィンドウのフレーム境界を使用する。
【００６４】
そして、表示制御部１３ｂは、画像マッチングを行う（ステップＳ２０６）。画像マッチングでは、探索領域によって現在のルールのテンプレート画像に関するマッチング計算を行う。そして、対象のルールＩＤをキーとするハッシュマップに、マッチ座標のリストをマッチ位置キャッシュに上書きする（ステップＳ２０７）。その後、ステップＳ２０４に戻り、未評価ルールがなくなるまで、ステップＳ２０４〜Ｓ２０７の処理を繰り返す。
【００６５】
ステップＳ２０３の処理に戻って、表示制御部１３ｂは、「変化終了」直後でないと判定した場合には（ステップＳ２０３否定）、画面変化状態が「変化開始」または変化途中であるか否かを判定する（ステップＳ２０８）。この結果、画面変化状態が「変化開始」または変化途中でないと判定した場合には（ステップＳ２０８否定）、ステップＳ２０１に戻る。
【００６６】
また、表示制御部１３ｂは、画面変化状態が「変化開始」または変化途中であると判定した場合には（ステップＳ２０８肯定）、未評価ルールがあるか判定する（ステップＳ２０９）。この結果、表示制御部１３ｂは、未評価ルールがないと判定した場合には（ステップＳ２０９否定）、ステップＳ２０１に戻る。
【００６７】
また、表示制御部１３ｂは、未評価ルールがあると判定した場合には（ステップＳ２０９肯定）、探索矩形（変化領域）を取得して（ステップＳ２１０）、前回マッチ座標をもとにスウィープし（ステップＳ２１１）、画像マッチングを実行する（ステップＳ２１２）。具体的には、表示制御部１３ｂは、前回マッチ座標をもとにスウィープ矩形を生成し、窓枠矩形とintersectionをとって、これを探索領域として画像マッチングを実行する。
【００６８】
そして、表示制御部１３ｂは、マッチ座標をマッチ位置キャッシュに上書きする（ステップＳ２１３）。その後、ステップＳ２０９に戻り、未評価ルールがなくなるまで、ステップＳ２０９〜Ｓ２１３の処理を繰り返す。
【００６９】
ここで、上記した矩形座標値について説明する。矩形座標値とは、矩形の左上座標（ｘ,ｙ）と矩形のサイズ（ｗ,ｈ）を組み合わせた値（ｘ,ｙ,ｗ,ｈ）を指す。また、矩形に対するunion演算の一例を図８に示し、intersection演算の一例を図９に示す。なお、図８および図９では、平面上に何も領域を占めない、空の範囲を表現するため、仮想的な矩形座標の値を定めている。ここでは(0,0,-1,-1)をとる場合に、空の範囲を表現しているものとし、unionやintersectionの演算が内部に含まれる点集合の演算に対応するよう拡張している。
【００７０】
図８の一例を用いて説明すると、union演算において、例えば、Ａの矩形座標値がＲａ(0,0,-1,-1)、Ｂの矩形座標値がＲｂ(30,30,30,30)の場合には、Ｃの矩形座標値がＲｃ(30,30,30,30)となる。また、図９の一例を用いて説明すると、intersection演算において、例えば、Ａの矩形座標値がＲａ(0,0,-1,-1)、Ｂの矩形座標値がＲｂ(30,30,30,30)の場合には、Ｃの矩形座標値がＲｃ(0,0,-1,-1)となる。
【００７１】
［第一の実施の形態の効果］
このように、第一の実施の形態に係る表示制御装置１０は、画面の変化を検知し、検知された画面の変化に応じて、画面に表示されているアイコンの位置を基に垂直方向または水平方向にスウィープした帯状の矩形領域を生成し、該矩形領域を探索範囲として、画面上から指定された画像テンプレートと類似した領域を探索し、該類似した領域にアイコンをオーバレイ表示する暫定更新処理、および、暫定更新処理の探索範囲よりも広い領域を探索範囲として、画像テンプレートと類似した領域を探索し、類似した領域に対応する位置にアイコンをオーバレイ表示する正規更新処理のいずれか一つまたは両方を実行する。これにより、処理負荷を低減して処理時間を短くし、迅速に画面の更新処理を行うことが可能である。
【００７２】
また、表示制御装置１０は、画面の変化の進行および画面の変化の停止を検知し、画面の変化の進行が検知された場合には、暫定更新処理を実行し、画面の変化の停止が検知された場合には、正規更新処理を実行する。
【００７３】
このため、表示制御装置１０では、画像テンプレートマッチングなどを利用して動画像に対しリアルタイムに画像解釈を施し、その結果をオーバレイ表示するなどによりユーザが視覚的に解釈内容を理解できるとともに、動画像内容の変化や動きと同期して解釈内容を更新表示するなどにより一体的に解釈内容を認知することができる。
【００７４】
［第二の実施の形態］
上記した第一の実施の形態では、画面の変化の進行が検知された場合には、暫定更新を実行し、画面の変化の停止が検知された場合には、正規更新を実行する場合を説明したが、これに限定されるものではなく、正規更新と暫定更新を並行して実行してもよい。以下では、第二の実施の形態として、正規更新と暫定更新を並行して実行する場合について説明する。なお、第一の実施の形態と共通する構成・処理については説明を省略する。
【００７５】
第一の実施の形態では、画面変化が終息したかどうかを判定する監視期間や、その結果に応じた更新処理の切り替えが必要であった。第二の実施の形態は、これらの要素を不要とする構成である。つまり、第一の実施の形態において、画面変化が終息したかどうかを判定する方法として、例えば、停止判定にはフレーム間差分がない状態が所定の期間続くかどうかを観測する方法が一般的に考えられるが、観測期間の設定は長すぎても短すぎてもアノテーションの使用感を損なってしまう場合がある。最適な設定は自明ではなく、ユーザの好みやＰＣ性能など個別的な条件や、操作場面ごとのユーザの意図や対象ＧＵＩの振る舞いに依存するため、固定的な値で全てをカバーすることは本来的に難しい。
【００７６】
また、ユーザが一連のスクロール操作を続けて行っているつもりでマウスを動かしても、途中で一瞬ドラッグ位置が止まる場合はよくある。このような瞬間、設定された観測期間より少し長い期間止まっていると、ユーザの本来の操作意図に反して正規更新が開始されてしまう。一旦正規更新が開始されると、完全に計算が終わるまで、次の処理を行えない。つまり、ユーザがスクロールを続けて行っているつもりでも、ドラッグ位置の停止期間が少し長いと、続いての移動再開に対し暫定更新が行われない。ユーザからは、ＧＵＩの表示がスクロールで移動しているにもかかわらず、アノテーションの表示がフリーズしたように、アイコンが途中の位置で取り残されたままとなり、オーバレイ表示が画面とシンクロして見えない。この期間が続いたのち、正規更新が終了し、暫定更新がその後再開されると、突然画面のスクロール位置にあったオーバレイ表示になり、移動が再開されて見える。すなわち、一連のスクロール操作において、アイコンが途中でひっかかったような見え方になる。
【００７７】
また、ユーザがスクロールを停止させる意図で操作を止めたとしても、観測期間が経過しなければ、画面変化が停止したとは判定されない。すなわちスクロール停止後、さらに期間をおいてからはじめて正規更新の計算が開始されるため、ただでさえ処理時間の長い正規更新の結果反映が、無為に遅くなる。一方、本来の暫定更新の考え方では、スクロールの途中でアイコンの暫定更新による表示の乱れが生じても、スクロール停止後に正規更新を行うことで乱れを解消することを前提としている。
【００７８】
このため、ユーザがスクロール操作を停止させた瞬間からできるだけ早く正規更新の画像マッチングを完了し、乱れの無い表示に戻すことが望ましい。しかしながら、上記のように正規更新の結果反映の遅れが大きいと、ユーザがスクロール操作を停止したつもりでも、しばらくは本来のオーバレイ表示の状態にならず待たされることとなり、ユーザの操作意図に対して鈍感な反応になってしまう。これらの事情により、第一の実施の形態では、ユーザの操作に対してスムーズにアイコン表示が追従できず、不自然な操作感となってしまう場合があった。第二の実施の形態では、上記を解消する目的で、正規更新と暫定更新を並行実行するものである。
【００７９】
この第二の実施の形態は、第一の実施の形態のように２つの更新方法を切り替える必要がないため、観測期間の最適設定の問題等が存在しない。第二の実施の形態では、暫定更新が直近のフレームの結果をもとに計算を行うため、例えば、アイコンがスクロールアウトして適用されなくなったルールを、以降の暫定更新の対象から除外できる。
【００８０】
ちなみに、第二の実施の形態の場合には、暫定更新の簡易計算方法を拡張しやすい。つまり、ここまでの説明における暫定更新は、垂直もしくは水平のスクロールを想定した簡易計算を採用しているが、実際は様々な拡張が考えられる。例えば、前フレーム数個分の移動方向や移動距離の推移により、スウィープの方向や長さを適応させることで、さらに探索範囲を抑えることができる。
【００８１】
これに対して、従来の構成は、もっぱら正規更新から結果を参照しなければならないため、拡張の自由度がなく高度化も期待できなかった。また、処理時間の高速化の観点でも、正規更新は計算時間が長い上に、この構成上では非同期かつ不定周期でループ実行するため、暫定更新とタイミングがあわず無駄な待ちあわせ時間が生じ遅くなってしまう。
【００８２】
まず、第二の実施の形態に係る表示制御装置１０の構成は、前述した図１と同様であるため省略するが、表示制御部１３ｂの処理内容が異なる。表示制御部１３ｂは、検知部１３ａによって検知された画面の変化が検知されると、暫定更新処理および正規更新処理を並行して実行する。また、表示制御部１３ｂは、暫定更新処理では、実行済みである前回の暫定更新処理においてアイコンが表示される位置と、正規更新処理においてアイコンが表示された位置とを基に、次回の暫定更新処理において所定の領域を生成する。
【００８３】
ここで、図１０を用いて、第二の実施の形態に係る表示制御装置１０において実行される暫定更新処理および正規更新処理を並行して実行する画面更新処理の概要を説明する。図１０は、第二の実施の形態に係る表示制御装置における正規更新処理の流れを説明する図である。図１０に示すように、第二の実施の形態に係る表示制御装置１０では、暫定更新処理および正規更新処理を並行して行っており、前述の図２と図３を組み合わせたような構成となっている。ここで、左右のブロック群が接続している部分が、機能２４０のマッチ位置受け渡しである。図３に相当する図１０左半分は、機能２３１の表示機能に処理を依頼しないかわりに、図２に相当する図１０の右半分に結果を受け渡す。
【００８４】
本発明の特徴的な点は、図１０における２４０のマッチ位置受け渡しに加えて、図１０における２４１のマッチ位置受け渡しを行う点である。２４１のマッチ位置受け渡しを行う場合と行わない場合の効果の違いについて説明する。図４Ｂの事例における時間軸上の変化を図１１に示す。図１１の例では、時刻１０３０１で検知した変化に対して、ルール１について計算された結果が、時刻１０３０２で出力されている。
【００８５】
このとき、図１０の２４０によって暫定更新処理にマッチ位置が渡され、時刻１０３０３、時刻１０３０４以降の更新が行われ最終的な表示に反映される。暫定更新の画像マッチの探索範囲は、二点鎖線に示した通りになる。ここで時刻１０３０４の探索範囲に注目すると、２４１の処理がない場合は常に正規更新の結果を参照することとなる。２４１のマッチ位置受け渡しがある場合は、２４０を参照するのは正規更新の結果が得られた後の１回だけで、それが取り込まれた後は２４１のマッチ位置受け渡しで自身の前フレームの結果のみを参照する。このため時刻１０３０４で「Ａ」１０１１の一部がスクロールアウトし暫定更新結果に「Ａ」１０１２のみとなったことで探索範囲が二点鎖線に示したように狭められる。以降の暫定更新ではこの探索範囲が使用される。
【００８６】
時刻１０３０５の時点では、実際の画面に「Ａ」１０１３がスクロールインするが、暫定更新にはその存在が発見できず、時刻１０３０６のように依然として狭い探索範囲が使用される。時刻１０３０７で正規更新が「Ａ」１０１３の存在を発見すると、その直後に２４０のフローで暫定更新にそのマッチ位置が取り込まれ、時刻１０３０８では「Ａ」１０１２と「Ａ」１０１３の両方を囲む探索範囲が算出される。それ以降の暫定更新ではしばらくこの探索範囲が使用されるが、前記と同様、「Ａ」１０１２がスクロールアウトすると、時刻１０３０９のように探索範囲が狭められる。
【００８７】
時刻１０３１０の時点では、正規更新が「Ａ」１０１２のスクロールアウトした状態をキャプチャし、画像マッチングを計算する。この結果は、時刻１０３１１の時点で出力され、暫定更新に取り込まれるが、時刻１０３１２の時点での暫定更新のマッチ結果は同じであるため、時刻１０３１２以降では特に探索範囲の変化はおこらない。なお、時刻１０３０９の時点ですぐ正規更新の計算が開始されず、時刻１０３１０の時点まで遅れる理由は、正規更新の画像マッチング計算がｔ１の長い計算時間を要するためであると同時に、この図ではルール１（「Ａ」についてのアノテーション表示のルール）のみをあらわしており、実際にはルール２、ルール３についても計算が行われたあと、ルール１に順番がまわってくるのが、時刻１０３０７の時点からさらに長時間たってからである点に由来する。
【００８８】
実際の利用シーンではさらにルール数が増えるとともに、各ルールでの計算時間のばらつきがあるため、さらに非同期でのタイミングずれが多い状況となる。このため、暫定更新の自身の結果でのフィードバック計算が重要となる。また、このような振る舞いは、後で導入する変化領域に対する差分計算や、暫定更新における探索範囲推定アルゴリズムを拡張する場合は、前提的な構成として必要である。
【００８９】
次に、図１２および図１３を用いて、第二の実施の形態に係る表示制御装置１０による処理を説明する。図１２は、第二の実施の形態に係る表示制御装置における正規更新処理の流れを説明する図である。図１３は、第二の実施の形態に係る表示制御装置における暫定更新処理の流れを説明する図である。
【００９０】
図１２に示すように、第二の実施の形態に係る表示制御装置１０の表示制御部１３ｂは、アノテーションを実行するプログラムが終了したか判定する（ステップＳ３０１）。この結果、アノテーションを実行するプログラムが終了した場合には（ステップＳ３０１肯定）、正規更新処理を終了する。また、表示制御部３３ｂは、アノテーションを実行するプログラムが終了していない場合には（ステップＳ３０１否定）、画面変化状態を取得し（ステップＳ３０２）、画面変化状態が「変化中」であるか否かを判定する（ステップＳ３０３）。この結果、表示制御部１３ｂは、「変化中」でないと判定した場合には（ステップＳ３０３否定）、ステップＳ３０１に戻る。ここで、第二の実施の形態では、第一の実施の形態のように変化の開始や終了を識別せずに、単に「変化中」であるかどうかだけを判断する。
【００９１】
また、表示制御部１３ｂは、「変化中」であると判定した場合には（ステップＳ３０３肯定）、未評価ルールがあるか判定する（ステップＳ３０４）。この結果、表示制御部１３ｂは、未評価ルールがないと判定した場合には（ステップＳ３０４否定）、ステップＳ３０１に戻る。
【００９２】
また、表示制御部１３ｂは、未評価ルールがあると判定した場合には（ステップＳ３０４肯定）、探索矩形（変化領域）を取得する（ステップＳ３０５）。変化領域は、ｘ,ｙ,ｗ,ｈからなる矩形座標値である。ステップＳ３０５の処理においては、変化領域として常に現在処理対象としているアクティブウィンドウのフレーム境界を使用する。
【００９３】
そして、表示制御部１３ｂは、画像マッチングを行う（ステップＳ３０６）。画像マッチングでは、探索領域によって現在のルールのテンプレート画像に関するマッチング計算を行う。そして、対象のルールＩＤをキーとするハッシュマップに、マッチ座標のリストをマッチ位置キャッシュに上書きする（ステップＳ３０７）。その後、ステップＳ３０４に戻り、未評価ルールがなくなるまで、ステップＳ３０４〜Ｓ３０７の処理を繰り返す。
【００９４】
次に、図１３に示すように、第二の実施の形態に係る表示制御装置１０の表示制御部１３ｂは、アノテーションを実行するプログラムが終了したか判定する（ステップＳ４０１）。この結果、アノテーションを実行するプログラムが終了した場合には（ステップＳ４０１肯定）、暫定更新処理を終了する。また、表示制御部１３ｂは、アノテーションを実行するプログラムが終了していない場合には（ステップＳ４０１否定）、画面変化状態を取得し（ステップＳ４０２）、画面変化状態が「変化中」であるか否かを判定する（ステップＳ４０３）。この結果、画面変化状態が「変化中」でないと判定した場合には（ステップＳ４０３否定）、ステップＳ４０１に戻る。
【００９５】
また、表示制御部１３ｂは、「変化中」であると判定した場合には（ステップＳ４０３肯定）、未評価ルールがあるか判定する（ステップＳ４０４）。この結果、表示制御部１３ｂは、未評価ルールがないと判定した場合には（ステップＳ４０４否定）、ステップＳ４０１に戻る。
【００９６】
また、表示制御部１３ｂは、未評価ルールがあると判定した場合には（ステップＳ４０４肯定）、探索矩形（変化領域）を取得して（ステップＳ４０５）、前回マッチ座標をもとにスウィープし（ステップＳ４０６）、画像マッチングを実行する（ステップＳ４０７）。具体的には、表示制御部１３ｂは、前回マッチ座標をもとにスウィープ矩形を生成し、窓枠矩形とintersectionをとって、これを探索領域として画像マッチングを実行する。
【００９７】
そして、表示制御部１３ｂは、マッチ座標をマッチ位置キャッシュに上書きする（ステップＳ４０８）。その後、ステップＳ４０４に戻り、未評価ルールがなくなるまで、ステップＳ４０４〜Ｓ４０８の処理を繰り返す。
【００９８】
このように、第二の実施の形態に係る表示制御装置１０では、画面の変化が検知されると、暫定更新処理および正規更新処理を並行して実行するので、ユーザの操作に対してスムーズにアイコン表示を追従させ、ユーザに対して自然な操作感を実現することが可能である。
【００９９】
［第三の実施の形態］
第二の実施の形態では、画面変化の差分である変化領域の大きさに関係なく、常にウィンドウ枠全体を処理対象としていたがこれに限定されるものではなく、変化領域の位置や大きさに応じて、無駄な計算を省き、同じ結果をより少ない計算量で得るようにしてもよい。
【０１００】
第三の実施の形態は、図１４の構成で画面画像の変化差分についてのみ、漸次的に更新処理を行うものである。以下の第三の実施の形態の説明では、第一の実施の形態または第二の実施の形態と共通する構成・処理については説明を省略する。なお、変化差分の更新を行う一般的な処理の構成は、図１４の丸で示した矢印がない構成となるが、第三の実施の形態では当該接続線で示したデータの授受が行われる点で、従来の構成とは異なっている。この構成では、正規更新の処理が終了したとき、その結果を暫定更新のループ処理に渡すとともに、その結果のもととなった更新領域の矩形データを、暫定更新の更新領域に加える操作を行っている。これにより、非同期で結果がわたされても、暫定更新で変化差分とともに処理対象に含まれるため、最終的な表示内容に漏れることなく確実に反映される、という違いがある。
【０１０１】
まず、第三の実施の形態に係る表示制御装置１０の構成は、前述した図１と同様であるため省略するが、表示制御部１３ｂの処理内容が異なる。表示制御部１３ｂは、第二の実施の形態と同様に、正規更新処理と暫定更新処理を並行して実行するとともに、画面に表示されるフレーム間画像の差分領域を探索領域として、暫定更新処理および正規更新処理を漸次実行する。具体的には、表示制御部１３ｂは、正規更新処理において、画面に表示されるフレーム間画像の差分領域を抽出し、該差分領域を探索領域として、画面上から指定された画像テンプレートと類似した領域を探索し、該類似した領域にアイコンをオーバレイ表示し、暫定更新処理において、差分領域を抽出するとともに、該抽出した差分領域に正規更新処理において抽出された差分領域を追加し、該追加した差分領域を探索領域として、画面上から指定された画像テンプレートと類似した領域を探索し、該類似した領域にアイコンをオーバレイ表示する。
【０１０２】
第三の実施の形態の特徴は、正規更新と暫定更新のそれぞれについて変化領域の管理を行っている点である。図１０と図１４の違いは、機能３０２と機能３０３がそれぞれ、前後フレーム間の差分抽出を行って、変化領域の矩形を取得しているところである。これにより、ウィンドウ枠全体よりも狭い面積を対象とした画像マッチング計算に抑えることができる。
【０１０３】
しかしながら、第三の実施の形態では最終的な表示内容に反映される結果が、スレッド間の連携の実行タイミング依存で異なってくる。すなわち、図１４においては、３１１〜３１４の機能ブロックグループと３２２〜３２４の機能ブロックグループがさらに別々のスレッドになるが、３１１〜３１４の画像マッチング処理が１サイクルを終了する間に、３２２〜３２４の画像マッチング処理は複数回サイクルを完了している場合が多い。また、実行タイミングやフレームごとの変化領域の極端な面積変化によっては、３１１〜３１４の画像マッチング処理の１サイクルの間に３２２〜３２４の画像マッチング処理の複数サイクルが実行される実行速度の逆転も、稀に発生する可能性がある。
【０１０４】
この影響を排除し、第二の実施の形態と同じ結果を得るためには、各スレッドの間で非同期に受け渡すデータの管理に工夫が必要であり、単純にそのままのデータを受け渡すと、最終的な表示への反映漏れが生じる場合がある。
【０１０５】
例えば、図１５を用いて、図４Ｂと同種のエディタ上に「ａ」の文字列が表示されており（１０４０１）、この右側に文字を追加入力していく場合を考える。当該エディタはウィンドウタイトルとして編集中のファイル名を表示しているが、内容が編集されるとファイルから内容が変更された意味の「*」の文字がタイトルに追加されるものとする。１０４０２で「ｂ」が入力されウィンドウタイトルが変更されると、２箇所の画像変化が発生する。
【０１０６】
これに対する更新範囲は、一点鎖線に示す矩形領域１０４１１となる。この矩形領域１０４１１を計算対象として、正規更新と暫定更新が同時に開始される。１０４０３で暫定更新の結果が得られるが、これはルール２の探索範囲が、点線の矩形１０４３１に絞り込まれているため、早く計算が終了している。一方、正規更新は矩形１０４２１のように広い範囲に広がるため、計算に時間がかかる。その間に、「ｃ」が入力されたものとする（１０４０４の時点）。
【０１０７】
その暫定更新は、さらに探索領域が小さくなるため（１０４１２）、計算は短時間に完了する（１０４０５）。変化領域１０４１２に対する更新領域１０４３２は、正規更新結果のキャッシュにルール４の「ｃ」に相当するマッチ位置がまだ存在しないため、探索範囲が設定されず、画像マッチングそのものが行われないために見逃しが生じてしまう。
【０１０８】
一方、１０４０６でようやく正規更新の結果として１０４２１の変化矩形中のマッチ位置が生成されても、これに対応する暫定更新の更新領域１０４３１は既に表示処理が終了している。この場合は、１０４０１の時点から「ａ」のアイコンが表示されているため、表示内容にたまたま不具合は生じない。しかし、ルール４「ｃ」については、不具合が解消しない。１０４０７の時点の１０４１３の変化領域に対し、１０４０８の時点で暫定更新結果が出力されると、変化矩形１０４３３はさらに右側に外れる。１０４０９の時点で正規更新結果が出力されても、マッチ位置１０４２２は暫定更新を介しての表示への反映機会を逸してしまっている。正規更新の結果のキャッシュにマッチ位置が存在しても、これを含む変化領域が更新されない限り、これに相当するアイコンが生成されず、オーバレイ表示に現れない。
【０１０９】
以上のように、実行時のタイミングや表示更新内容に依存して、表示に漏れや見逃しが発生してしまう。これを防止するための通常の考え方としては、更新対象となったマッチ位置を管理しながら、正規更新の結果から暫定更新の結果へのマージを行うことが考えられる。すなわち、例えば、図１０の２４０のデータフローにおいて、非同期のタイミングやルール毎の更新範囲の違いに配慮して、正規更新の結果が得られる毎に、新規に追加されたマッチ位置を暫定更新のマッチ位置キャッシュに追加する。さらに、このように追加されたマッチ位置を暫定更新の計算対象にするために、マッチ位置の矩形座標値を暫定更新の変化領域の矩形とunionをとる必要がある。
【０１１０】
しかしながら、この方法では次のような問題がある。まず、図１５のような画面変化の事例であればよいが、スクロールによる変化ではマッチ位置が時刻ごとに少しずつずれていく。本構成ではフレーム間のマッチ位置の追跡はおこなわず、フレームごとに別々のマッチ位置として扱われる。このため、たまたま暫定更新に時間がかかり正規更新の計算結果が複数回分溜まると、多数のマッチ位置がマージされる。
【０１１１】
この中には、すでに実際の画面内容がスクロール移動したことで、本来は存在しないマッチ位置も含まれ、探索範囲が広くなってしまう。これらマッチ位置の生成・消去や処理済み、未処理の管理を行うと、プログラムが複雑化し実装が困難になるとともに、全てのケースに正しく動くかを検証すること自体難しくなる。しかも、この管理はルールごとに行わなければならないため、記憶領域や計算資源を浪費することになる。
【０１１２】
本構成では、図１４の３４２のデータフローを使用することで、これを解決している。ここで受け渡しするデータの内容は、機能３１２で画像マッチング処理を開始する際に、機能３１１が機能３０２から変化領域として取得した矩形座標値（ｘ,ｙ,ｗ,ｈ）である。機能３１３でマッチング終了のイベントを受け取り、必要なルールに対する計算が終了した時点で、３４２をとおして、機能３０３が保持する変化領域の矩形にunion演算して追加する。
【０１１３】
このときには、既に機能３１４のマッチ位置キャッシュに正規更新の結果が格納されている。暫定更新処理のスレッドが次の処理サイクルに入ると、機能３２１が機能３０３から変化領域として矩形座標値を取得する。この矩形は、機能３０１のキャプチャ画像のフレーム間差分として機能３０３に蓄積された領域であると同時に、前回の計算から今の計算開始までの間に、３４２をとおして追加された領域を含んでいる。機能３２１は受け取った更新対象範囲の矩形をもとに、暫定更新のマッチ位置キャッシュから範囲に入るマッチ位置を抽出する。
【０１１４】
また正規更新のマッチ位置キャッシュからも範囲に入るマッチ位置を抽出する。両者からのマッチ位置をすべて含む矩形を計算し、その矩形を垂直方向にスウィープした上で、更新対象範囲の矩形とintersectionをとったものを、画像マッチングの探索範囲とする。この処理をルール毎に行う。
【０１１５】
このように更新対象範囲の矩形をマージすることで、前記の方法の問題を回避することができる。すなわち、画面内容がスクロール移動する場合も、３４０のデータフローからマッチ位置を取り出す瞬間の最新のマッチ位置キャッシュ３１４を参照するため、計算結果が複数回分溜まることはない。また、マッチ位置の複雑な管理が不要である。さらに、３４２のデータフローや機能３０３で保持する情報は、全てのルールに共通の１つの値、すなわち矩形座標値のみであるため、ルール毎に複雑な更新管理を行う必要がなく、プログラムの間違いがない。また、機能３０３で保持する変化領域の矩形にunion演算していくだけで、他の処理は第三の実施の形態の通常の考え方による構成を変えることなく実現でき、記憶領域や計算資源を浪費することがない。
【０１１６】
なお、上記説明では割愛したが、図１４における３０１〜３０３の機能ブロック、すなわち変化領域の抽出についてここで詳しく説明する。図１４の３０１〜３０３の機能ブロック、３３１のブロックグループもそれぞれ別のスレッドになるが、基本的には図２、図３で説明した振る舞いと同じである。変化領域の抽出に関しては、画面を連続的にキャプチャし、フレーム間の差分を計算する処理を独自のスレッドで自律的に行っている点が特徴である。これに対し、正規更新、暫定更新もそれぞれ別のスレッドで実行される。正規更新の画像マッチ計算と暫定更新のそれとは、探索領域の面積の違いから比較的大きい実行時間差がある（例えば、５：１〜１０：１程度）。変化領域を受け渡す３つのスレッドのタイミングは非同期であるため、以下のように取り扱う。
【０１１７】
すなわち、画面キャプチャは画面変化を漏れなくとるため、いずれの更新処理よりも十分短い周期、つまり暫定更新よりもさらに短い周期で変化矩形の計算を行う。ある期間の累積的な変化矩形を保持するため、各瞬間（２フレーム間）の変化矩形は、その瞬間までの累積的変化矩形に対し和（union）演算操作を行って更新する。累積的変化矩形は、正規更新処理、暫定更新処理それぞれから取得操作が行われたときに、そのデータ値を返すとともに、空の矩形に初期化する。それぞれの取得操作は別々のタイミング・間隔で行われるため、累積変化矩形のオブジェクトは２つ用意する。
【０１１８】
また、上記説明では割愛したが、変化領域に対するアイコン位置の更新範囲、ならびに画像マッチングの探索範囲の計算方法についてここで詳しく説明する。図１６のステップＳ５０２および図１７のステップＳ６０２では、画面変化状態として、変化領域の矩形を取得する。この矩形に対し、マッチ位置（テンプレート画像の大きさ）が境界上にのる場合を以下のように扱う。
【０１１９】
まず、前フレームのマッチ位置が内側か外側かを判定し、外側であれば更新対象から一時的に除外する。すなわち、画像マッチングで得られた新しいマッチ位置（複数）は、内側と判定されたマッチ位置（複数）をキャッシュで置き換え、外側と判定されたマッチ位置はそのままとする。なお、注意すべき点として、この矩形に交差するテンプレート画像は全て内側と判定する。逆に言うと、ルールごとに変化矩形をテンプレート画像の幅、高さで外側に拡張した新たな矩形を計算し、それに完全に含まれるマッチ位置は全て内側と判定する。この矩形を更新範囲とよぶ。
【０１２０】
これに対応する処置として、画像マッチングの探索範囲も拡大する必要がある。すなわち、変化領域の矩形を、テンプレート画像の幅、高さで外側に拡張した新たな矩形をもって、探索範囲とする必要がある。このため、図１７に示すように、暫定更新処理においては、前回結果から変化矩形に入るマッチ位置を抽出し、そこから探索範囲を決定し（ステップＳ６０６）、画像マッチングを行う（ステップＳ６０７）。更新範囲と探索範囲はルール毎に異なるが、同じルールの更新範囲と探索範囲は同一になる。これによって、変化領域の矩形の境界上にマッチ位置がのる場合に、過不足なく更新が行われることが保証される。
【０１２１】
一般的な画像マッチングの用途としては、現実のカメラ画像を対象とする場合が多い。動画映像を対象として連続的に画像マッチングを行う場合は、直前のフレームのマッチ位置をもとに、その周辺に限定した探索範囲で画像マッチングを行うことで、計算量を低減する工夫が考えられる。この方法の欠点は、マッチ位置に映っている対象物が急に移動した場合、探索範囲外に出てしまい、映像上には存在するにも関わらず、次のフレームでマッチ位置を見失う場合があることである。もともと、カメラ画像はノイズや影などを含み、対象物の角度や距離が変わるため、画像マッチングそのものが失敗してマッチ位置が消えてしまう場合もある。このことから、仮にマッチ位置を見失っても、現実の応用においてはあまり問題とならない。
【０１２２】
しかしながら、ＰＣのデスクトップ上の画面画像を対象にした場合は、画像マッチングそのものに由来する失敗の頻度は非常に小さい。人の目で見て自明なマッチ位置を見失ったり消えてしまったりするのは、応用において問題となる。本構成のスウィープ形状の探索範囲を用いることにより、垂直方向のスクロール時に探索範囲外に出てしまうことはない。一般的にスクロールは、垂直もしくは水平の一方向に対する動きとなり、斜め方向や方向が動的に変化する動きはあまり採用されない。このため、暫定更新において、細長い帯状のスウィープ形状が好適となる。さらには、アノテーションがＷｅｂブラウザなど垂直スクロールを多く用いるＧＵＩに適用されることから、垂直方向のスウィープに重みを付けて適用することで、現実にはほとんど不都合が生じないことがわかっている。
【０１２３】
変化領域だけに限定して、差分を更新することで、実際の利用シーンにおける使用感の向上に大きな効果がある。Ｗｅｂブラウザを例に挙げると、図１８に示すように、ユーザが画面上の変化とは意識していないが、ビット比較計算上は変化として扱われる事象は数多く存在する。（１）は、ごく小さい領域で絶えず変化が起こるため、従来のアノテーション表示では変化閾値を用いて対処しなければならなかった。（２）は、ブラウザによって勝手に変化する場合がある。（３）は、画面上の多くの領域でマウスが通過するだけで発生する。これはＵＲＬリンクに限らず、ＧＵＩのボタン、コンボボックス、スクロールバー、メニュー、チェックボックスなどでもマウス通過による表示変化がある。（４）は表示内容そのものの広さが変化した場合にスクロールバーの長さが更新される変化で、テキストエディタでよく発生する。また目で見て気づかない変化なので、ユーザにとってアノテーション更新の理由が把握しにくい。（５）は、ユーザが気付きにくい間隔で自動的に発生する変化となる。（６）や（７）は、Ｗｅｂコンテンツだけでなくイントラネットシステムなどでも採用する場合がある。
【０１２４】
このため、ユーザの意識していない変化により、頻繁にアノテーションの更新が発生し、そのたびに画像マッチングの計算時間を待たされるのは問題である。特に、ブラウザ内のリンク上をマウスが通過するだけで、ハイライト表示の変化が起こるが、これは一瞬ですぐ元に戻り、かつ文字内容は変化しない。仮に当該の文字画像の領域をテンプレート画像に指定していると、もとのアイコン位置からの移動は起こらないにも関わらず、アノテーションの更新が発生することになる。本構成により、小さい領域の変化に対しては、それを囲う矩形領域にだけ更新を行うため、計算時間は短く抑えることができる。さらに、前フレームにおいて当該の変化矩形内にアイコンが存在しなければ、探索範囲が設定されず、画像マッチングそのものが行われないため、多くの場合、関係ない部分の変化では、表示更新そのものも発生しない。
【０１２５】
また、上記（１）〜（７）にみられる小さい変化と、画面のスクロールなど大きな変化が、任意のタイミングで組み合わされると、差分による表示更新を漏れや見逃しのないように行うことは難しいが、本構成では、これらを確実に行うことができる。
【０１２６】
一方、実施の形態で示した構成だけでは、差分を小さく抑えられず効果が半減する場合がある。例えば、図１８の（１）キャレットの点滅が起こっている状態で、離れた位置にそのほかの微小変化が発生すると、同時に発生した瞬間を、これら複数の変化箇所を囲む大きな領域の変化として扱ってしまう。同様に、（３）マウスホバーを行うと、（２）ステータスバーにそのＵＲＬ文字列が表示されるなど、同時に複数個所が変化する場合は、アプリケーションのつくりによってさまざまに作り出される。離れた箇所で同時発生する変化に対しては、あまり効率がよくない。
【０１２７】
しかしながら、これらの変化箇所をウィンドウ内全体で１つの矩形として抽出するのではなく、一定以上のマージンをあけて変化領域が点在する場合、それらを別々の複数の矩形として抽出することができれば、問題は簡単に解決する。すなわち、これら同時に発生した複数の変化領域矩形を、疑似的に別々の変化タイミングで発生したものとして、小さい矩形ごとに小出しにして更新処理を繰り返せばよい。これには、図１４の３０２、３０３を拡張し、複数の矩形にわけて抽出する機能、これらを１つずつ順に正規更新、暫定更新に引き渡す機能が必要になるが、そのほかの構成については変更する必要がない。これは、差分による更新を小さい面積であれば短い時間で計算できること、非同期に任意の更新対象を処理しても、漏れや見逃しがないという特徴によって実現されている。
【０１２８】
アクティブウィンドウの切り替えやウィンドウの移動、リサイズなどの操作があったときのアノテーションの表示更新の開始についても、以下のように対処できる。すなわち、マッチ位置キャッシュをウィンドウごとに持つようにする。具体的には例えば、ウィンドウハンドルとルールＩＤの２つをキーとするハッシュマップにリストを格納し、そこに複数のマッチ位置を保持する。ウィンドウ切り替えが発生した場合、新しいウィンドウハンドルをキーに、前回当該ウィンドウが表示されたときの内容を参照するようにする。また、ウィンドウの移動の場合、前フレームのマッチ位置キャッシュ内の矩形座標を移動量分、強制的にずらす。また、リサイズの場合は、ウィンドウ左上の隅の移動量分を同様に処理し、さらにウィンドウ境界の外にはみ出たマッチ位置を消去する。
【０１２９】
これを最初に表示するためのマッチ位置キャッシュとして使用する。これによって、ウィンドウの切り替え直後から最初に表示されるまでの遅れや、ウィンドウの位置移動やリサイズの直後から表示が大きく更新されるまでの間欠を解消することができる（なお、上記説明はマッチ位置がスクリーン座標で保持されている場合であるが、当該ウィンドウ左上隅を原点とする相対座標で保持されている場合は、マッチ位置を強制的にずらすのではなく、アイコン表示の際に参照する相対座標原点のスクリーン座標を変化させればよい）。このように本発明の構成に新たな要素や振る舞いを導入することなく、切り替えや移動、リサイズに対応するシンプルな実装が実現できる。
【０１３０】
ここで、従来の一般的な方法で単純にキャッシュを使用すると、アイコンの存在有無や座標位置が正しくない可能性がある。これに対して本発明の構成では、暫定更新の後のいずれかの時点で必ず正規更新が実行され正しい内容に到達することが確実に保証される。また、暫定更新ではアイコンの存在有無は不正確だが、ある条件についての位置関係（実施の形態の場合、垂直方向の移動があった場合の位置）は正確であることが保証される。
【０１３１】
そして、上記のとおり、切り替えや移動、リサイズに対応するための具体的な構成や振る舞いが、スクロールの際の問題解決の構成や振る舞いと同じものを共用できているために、ユーザに対して一貫した表示更新として見せることもできている。
【０１３２】
以上をより一般化してとらえれば、本発明の方法は、他の高速化方法を新たに加えて組み合わせるにあたって、親和性が高いといえる。実施の形態においては垂直方向のスクロールを前提とした暫定更新のロジックを用いており、そこに前回アクティブであったときの結果のキャッシュを用いるロジックや、移動、リサイズの直前の結果のキャッシュの一部を用いるロジックなど、様々な方法を組み合せることができている。すなわち過去の結果を参照して、正確性は妥協するかわりに高速性を高める方法を複数組み合せて使用する場合に、その共通的基盤を提供しているといえる。
【０１３３】
例えば、ＰＣのデスクトップ画面上での画像の特徴や変化の特性に適合した暫定更新処理の考え方を導入することで、アノテーションシステムの用途において重要なアイコン移動や生成・消去のスムーズな更新を実現している。
【０１３４】
例えば、フレーム間符号化や動き補償符号化と類似した前フレームの活用の考え方にもとづきながら、画像マッチング結果の偽陰性を許容し、偽陽性を排除する、暫定更新の考え方を導入することで、リアルタイム映像における未来データを得られない、過去データだけにもとづくアノテーション固有の要件に適合した、表示更新処理を実現している。
【０１３５】
前フレームの活用と変化領域の差分計算の両方を兼ね備えた効果によって、同じ結果をより少ない計算量で得ることができる。画面の変化を扱うために、閾値を使用したり、優先順で選択したりすることがないために、微小な変化による更新の必要性を漏らす可能性を排除できる。
【０１３６】
また第二、第三の実施の形態は、第一の実施の形態に対して、監視期間をおかずにすぐ更新処理を起動するため、時間遅れを少なくすることができる。
【０１３７】
［第四の実施の形態］
上述の第一の実施の形態〜第三の実施の形態では、画面に表示されているアイコンの位置を基に所定の領域を生成し、該領域を用いて暫定更新を行う方法を説明したが、これに限定されるものではない。例えば、正規更新処理による前フレームに対する計算結果であるマッチ位置座標を基に代替テンプレートを生成し、暫定更新処理において該代替テンプレート用いたビットマップマッチングを行うようにしてもよい。
【０１３８】
第四の実施の形態では、暫定更新処理において代替テンプレートを用いたビットマップマッチングを行う場合について説明する。ここで代替テンプレートとは、あらかじめルールとして事前に指定したテンプレート画像ではなく、正規更新の処理中に画像マッチングにより抽出された座標位置の矩形領域を切り出したものである。かかる代替テンプレートは、表示更新処理の期間中だけ作業用のテンプレート画像として限定的に用いられる。
【０１３９】
また、ビットマップマッチングとは、ＺＮＣＣ（Ｚｅｒｏ−ｍｅａｎ  Ｎｏｒｍａｌｉｚｅｄ  Ｃｒｏｓｓ−Ｃｏｒｒｅｌａｔｉｏｎ）などの類似性を基準にテンプレートマッチングを行う比較方法ではなく、単純なビット値比較により画像が厳密に一致している場合に限定してマッチ位置を判定して抽出するものである。かかるビットマップマッチングは、完全一致の場合以外を排除することで、大幅な高速化手法が適用可能である。
【０１４０】
代替テンプレートを用いたビットマップマッチングは、正確性を妥協した高速化方法である。正確性の妥協の内容としては、「偽陰性」すなわち「本来表示されるべき位置に表示されないこと」を許容し、「偽陽性」すなわち「本来表示されるべきではない位置に表示されること」を許容しないものである。
【０１４１】
第四の実施の形態に係る表示制御装置の構成は、前述した図１と同様であるため省略するが、表示制御部１３ｂの処理内容が異なる。表示制御部１３ｂは、検知部１３ａによって検知された画面の変化に応じて、画面に表示されていた前フレームに対する計算結果であるマッチ位置座標を基に代替テンプレート画像を生成し、該代替テンプレート画像を比較対象のビットマップとして、画面上から代替テンプレート画像と一致する領域を探索し、該一致した領域にアイコンをオーバレイ表示する暫定更新処理、および、代替テンプレート画像に関係なく、画面上から指定された画像テンプレートと類似した領域を探索し、類似した領域に対応する位置にアイコンをオーバレイ表示する正規更新処理のいずれか一つまたは両方を実行する。
【０１４２】
具体的には、表示制御部１３ｂは、検知部１３ａによって検知された画面の変化が検知されると、暫定更新処理および正規更新処理を並行して実行し、暫定更新処理では、正規更新処理において前フレームに対する計算結果であるマッチ位置座標とを基に、次回の暫定更新処理において代替テンプレート画像を生成する。このように、第四の実施の形態に係る表示制御部１３ｂは、第三の実施の形態と同様に、正規更新処理と暫定更新処理を並行して実行する。ただし、第三の実施の形態では、前フレームでのマッチ位置の座標値セットを基に所定の領域を生成していたが、第四の実施の形態では、前フレームでのマッチ情報を基に代替テンプレートを生成する。
【０１４３】
ここで、図１９を用いて、第四の実施の形態に係る表示制御装置において実行される暫定更新処理および正規更新処理を並行して実行する画面更新処理の概要を説明する。図１９は、第四の実施の形態に係る表示制御装置において実行される暫定更新処理および正規更新処理を並行して実行する画面更新処理の概要を説明する図である。図１４と図１９の違いは、４４０や４４１で受け渡される情報が、第三の実施の形態においては前フレームでのマッチ位置の座標値セットであったが、第四の実施の形態に係る表示制御装置では、この情報が代替テンプレート画像にかわる。ただし、機能４２１が機能４０３から受け取った変化領域（差分抽出）である矩形領域の座標値をもとに、その範囲にかかるキャッシュ内情報を抽出するためには、第三の実施の形態と同様、マッチ位置の座標値を必要とする。このため、座標値と代替テンプレート画像をあわせてマッチ情報を呼ぶこととし、この情報をキャッシュするものとする。
【０１４４】
ここで、表示制御部１３ｂは、正規更新処理においては、代替テンプレート画像に関係なく、指定された画像テンプレートとの類似度を示すマッチ率が、予め設定された所定の閾値以上である領域を探索する。そして、表示制御部１３ｂは、正規更新処理において前フレームに対する計算結果であるマッチ位置座標を基に、次回の暫定更新処理において代替テンプレート画像を生成する。具体的には、画像テンプレートと類似した領域であるマッチ位置座標の矩形領域を切り出し、切り出した領域の画像そのものを代替テンプレート画像とする。そして、表示制御部１３ｂは、暫定更新処理においては、代替テンプレート画像を比較対象のビットマップとして、画面上から代替テンプレート画像と一致する領域を探索する。
【０１４５】
ここで、図２０を用いて、第四の実施の形態に係る表示制御装置における暫定更新処理の流れを説明する。図２０は、第四の実施の形態に係る表示制御装置における暫定更新処理の流れを説明する図である。図２０に示すように、表示制御部１３ｂは、暫定更新処理においては、前回結果から変化矩形に入るマッチ情報を抽出し、代替テンプレートを決定し（ステップＳ７０６）、画像マッチングを行う（ステップＳ７０７）。その後、画像マッチングの結果に応じて、マッチ情報をマッチ情報キャッシュに上書きする（ステップＳ７０８）。その後、ステップＳ７０４に戻り、未評価ルールがなくなるまで、ステップＳ７０４〜Ｓ７０８の処理を繰り返す。
【０１４６】
以下に具体的な事例を用いて、第四の実施の形態に係る表示制御装置の処理について説明する。ここで、図２１および図２２を用いて、処理対象となる対象画像の例と、テンプレート画像の例について説明する。図２１は、対象画像の例を示す図である。図２２は、テンプレート画像の例を示す図である。図２１に例示するように、対象画像は、縦の大きさが「Ｍ＿ｈｅｉｇｈｔ」、横の大きさが「Ｍ＿ｗｉｄｔｈ」の画像であり、画像上にはアルファベットや数字、記号などが表示されている。また、図２２に例示するように、テンプレート画像は、縦の大きさが「Ｎ＿ｈｅｉｇｈｔ」、横の大きさが「Ｎ＿ｗｉｄｔｈ」の画像であり、アルファベットの「ｊ」文字が表示されている。
【０１４７】
図２３を用いて、図２１および図２２の例を用いたピクセルの比較処理を説明する。図２３は、ピクセルの比較処理を説明する図である。図２３の例では、単純に画像左上から順にピクセル比較を行う場合の参照位置の関係を示す。また、ピクセルの比較処理を実行するプログラムの疑似コードの例を図２４に例示する。図２４は、ピクセルの比較処理を実行するプログラムの疑似コードの例を示す図である。
【０１４８】
図２３の例では、対象画像の余白部分のマッチ判定位置ｉ＿ｍ，ｊ＿ｍにおいて、テンプレート画像のｉ＿ｎ＝３，ｊ＿ｎ＝０の位置のピクセルを比較している。図２４の０００６行目のｉｆ文条件部で参照しているＰｍ，Ｐｎはそれぞれピクセル値を格納する配列である。比較の結果、一致しない場合には、０００４行目のループの外側に抜けるよう、０００７〜０００９行目のｉｆ文実行部で制御変数ｉ＿ｎ,ｊ＿ｎを書き換えている。その後、００１３行目でブール変数を参照し、０００６行目での一致判定が全てのＰｎについて真であった場合は、ビットマップマッチング処理において抽出すべきマッチ位置として当該のｉ＿ｍ，ｊ＿ｍを出力する。図２３の場面ではピクセル値はＰｍ，Ｐｎともに白色で一致するため０００６行目ｉｆ文実行は行われないが、次のループ実行でｉ＿ｎ＝４，ｊ＿ｎ＝０の位置が比較されると、テンプレート画像側Ｐｎは黒であるためｉｆ文実行部が実行され、００１３行目で当該位置ｉ＿ｍ，ｊ＿ｍはマッチしないと判定され、次の位置ｉ＿ｍ＋１,ｊ＿ｍに対する判定に移行する。
【０１４９】
次に、ビットマップマッチングに対し高速化の手法を適用した場合を説明する。表示制御部１３ｂは、画面上において所定の比較基準位置を決定し、該比較基準位置における比較対象ピクセルと、所定の代替テンプレート画像のビットマップ上のピクセルのうち選択された比較ピクセルとを順に比較する。つまり、代表点による比較を行う。この結果、表示制御部１３ｂは、１つでもピクセル値が一致しない場合には、画面上の次の比較基準位置に移動してさらに代表点による比較を繰り返す。代表点による比較で全てのピクセル値が一致する場合には、代替テンプレート画像のビットマップ上の全てのピクセルを任意の順に比較する。そして、表示制御部１３ｂは、ビットマップ上の全てのピクセルを任意の順に比較した結果、１つでもピクセル値が一致しない場合には、画面上の次の比較基準位置に移動してさらに比較を繰り返し、全ての比較において一致すると判定された場合には、画面上の比較基準位置をマッチ位置にアイコンをオーバレイ表示する。
【０１５０】
例えば、高速化の手法としては、図２４の０００４行目の直前に、代表点による比較を行う。代表点はあらかじめ好ましい個数が好ましい順位で選択されており、これらの比較を全て一致判定した場合は、０００４行目以降の総当たり比較を前記同様に実行する。代表点による比較で１つでも不一致が発見された場合は、その時点で０００２行目のｆｏｒ文をｃｏｎｔｉｎｕｅする。これにより、対象画像が図２１のように余白が多くなく、文字で埋め尽くされている場合でも比較回数を抑えることができる。例えば、図２５Ａの「ｉ」の文字が埋め尽くされていると、テンプレート画像側Ｐｎはｉ＿ｎ＝２,ｊ＿ｎ＝６（図２６の２６０１のピクセル）まで比較が進まないと図２４の０００６行目のｉｆ文内が実行されないが、代表点の１番目として当該の点を比較すれば、対象画像Ｐｍ全体で見た時の比較回数はＭ回より若干多い程度におさまることになる。
【０１５１】
実際は「ｉ」以外にも図２５Ｂ〜２５Ｄなどの類似した文字の存在を考慮する必要があり、それらの差異として例えば図２６の「Ｘ」で示したような複数の点を選択し、それらを適切に優先順位づけする必要があると考えられる。代表点の選択処理は一般化して考えると、他の文字種別や文字以外のアイコンや図形などの絵柄を含めて総合的に決定する必要がある。このため、実用上で現れやすい画像の内容にもとづきパターンの出現確率、出現傾向を加味して、事前にあらかじめ抽出して決定・記憶しておいたり、表示実行中にリアルタイムな判定結果フィードバックによって、動的に調整・最適化したりすることが考えられる。
【０１５２】
なお、実際の適用シーンでは、キャレットが点滅するなど、動的に画面が変化する場合がある。正規更新でキャレットがテンプレート範囲内にはいった場合も、類似度の閾値を適切に調整することで、マッチ箇所として抽出できる。例えば、最初にキャレットが表示されていない表示状態で、図１９に示す正規更新処理および暫定更新処理が実行されたとする。正規更新における機能４１４では、キャレットを含まない画像、すなわち元のテンプレート画像と同じ絵柄である図２７Ａに例示する代替テンプレートをキャッシュする。また、それに続く暫定更新における機能４２１では、代替テンプレートを用いてビットマップマッチングを行う。そして、同じ結果、すなわち元のテンプレート画像と同じ絵柄である図２７Ａに例示する代替テンプレートが機能４２４に渡されキャッシュされる。
【０１５３】
続いて、カーソルが移動して「ｊ」の横にキャレットが点滅しはじめたとする。この画面変化に対する最初の暫定更新では、図２７Ａに例示する代替テンプレートとキャプチャ画像が一致しないために、一瞬アイコンが消えることになる。一方、並行して別スレッドで実行される正規更新では、類似度の閾値が低く設定されている効果でマッチ位置抽出に成功し、機能４１４により図２７Ｂに例示する代替テンプレートがキャッシュされる。次の暫定更新では、機能４４１から図２７Ａの代替テンプレートが、機能４４０から図２７Ａと図２７Ｂの代替テンプレートが機能４２１に渡されるため、ビットマップマッチングは２セット分実行され、今度はマッチ位置抽出ができアイコンが再度表示されはじめる。その後は、キャレットが点滅しても当該マッチ箇所について２通りの代替テンプレートが同時に適用されるために、暫定更新でアイコンが一瞬消滅することなく表示されつづける。
【０１５４】
以上のように、マッチ位置の画像が閾値の範囲で微小変化する場合でも、各様態の代替テンプレートを複数保持し、ビットマップマッチングを同時適用することで、ＺＮＣＣと同様の表示更新が可能である。
【０１５５】
代替テンプレートのしくみは、近年グラフィック性能やディスプレイ解像度の向上により積極的に使用されるようになったアンチエイリアシングや、その派生技術であるＣｌｅａｒＴｙｐｅ（クリアタイプ）などによる、ビットパターンレベルでの差異を吸収する効果もある。同様にビットパターンレベルでの差異を発生させる技術要素として、例えば、Ｗｅｂブラウザのレンダリングエンジンやフォントの違い、ＲｅｍｏｔｅＤｅｓｋｔｏｐや仮想マシンなどの環境設定における色階調の違いなどに対しても効果を発揮する。これらの差異は、実用場面で比較的遭遇する可能性が大きく、ビットマップマッチングの弱点を回避するうえで重要な構成要素である。
【０１５６】
なお、代替テンプレートの保持数が膨大になると、ビットマップマッチングを数多く行う必要が発生し、かえって性能低下につながることが懸念される。これに対しては、代替テンプレートはマッチ位置の座標値ごとに過去の履歴に応じて個別に保持されるようにする、一定時間以上経過した場合は古いものから消去するなどの対策が可能である。
【０１５７】
また、上記代替テンプレートの同時保持数や、ビット比較の代表点の実際の貢献度合いによっては、動的にビットマップマッチングから通常の画像テンプレートマッチングに切り替えることも対策として可能である。
【０１５８】
上述したように、ビットマップマッチングは、対象画像（画面キャプチャ画像）のピクセル数をＭ、テンプレート画像のピクセル数をＮとすると、原理上は総当たりの試行となるため、Ｍ×Ｎ回のビット値の比較が必要となる場合がある。
【０１５９】
しかし、実際には１箇所でも異なるピクセル値が発見された時点で当該座標位置での判定を偽として、次の座標位置の判定に移行するので、理論値より少ない比較回数で済む。さらに実際の利用シーンでは、対象画像サイズＭに対してテンプレート画像サイズＮが小さく、対象画像上のマッチ位置はたかだか数か所である。例えば、テキストエディタのウィンドウ画像の幅をＭ＿ｗｉｄｔｈ＝２５６ドット、高さをＭ＿ｈｅｉｇｈｔ＝２５６ドットとすると、全画素数Ｍ＝Ｍ＿ｗｉｄｔｈ＊Ｍ＿ｈｅｉｇｈｔ＝６５５３６ドットとなる。一方、テンプレート画像の幅をＮ＿ｗｉｄｔｈ＝８、高さＮ＿ｈｅｉｇｈｔ＝８とするとＮ＝６４ドットとなる。
【０１６０】
単純な比較回数はＭ＊Ｎ＝４１９４３０４回にものぼる。しかし、この事例の場合、正解位置の１か所を除いてほぼ全ての判定試行は偽であるため、対象画像内のＭ箇所各々の位置で、テンプレート画像内のＮ箇所の中でマッチ失敗を早期に発見し無駄な比較を省略できれば、全体の処理時間を大幅に抑えることになる。
【０１６１】
まず、単純に２つのビットマップの左上から順に比較すると仮定した場合を考える。この場合、テンプレート画像「ｊ」の左上から６番目のピクセルが黒である。一方、対象画像は少なくとも９０％のピクセルが白である。これは、ウィンドウ内に文字が９１文字表示されており、全てが黒い塗りつぶしとしても、たかだか５８２４＝９１＊６４ピクセルであることからわかる。ピクセル白の箇所についての比較回数は、３５３８９４＝６＊６５５３６＊０．９回であり、約８．４％程度に抑えられる。
【０１６２】
この試算は条件が違えば結果も大きく変わってくる。例えば、テンプレート画像が図２５Ｅの「.（ピリオド）」のようなビットパターンの場合、左上からの比較では５４番目に初めてピクセルが黒のものがあらわれる。このため比較回数は約７５．６％程度と、もとの規模とあまり変わらない。この例に対しては、逆の方向すなわち右下から順に比較すると前例と同程度の比較回数に抑えることができる。つまり、テンプレート画像の内容によって、適した比較順序が異なってくるといえる。多様なパターンを考えると、中央付近かららせん状の順に比較することが有望な印象を受けるが、「０」や「Ｌ」など中央が白で周辺が黒のピクセルパターンでは大きな改善が期待できない。
【０１６３】
そこで、ピクセルを列挙する際の規則性は無視し、相互の位置関係はランダムでもよいので、あらかじめ絵柄に応じてテンプレート画像の特徴をもっともよく表すピクセル位置を列挙しておくことが考えられる。列挙の規則性とは、例えばＸ方向やＹ方向に連続していたり、周囲４方向や８方向に隣接していたりといった観点である。このとき、全部のピクセルに全順序をつける必要もない。例えば、図２６のように代表となる少数の比較点が小島状に散在する形態でよい。これらの比較をしても偽と判定できなかった対象画像Ｍ上の位置に対して、テンプレート画像の全ピクセルＮ個を比較すればよい。
【０１６４】
また、上述した事例とは異なり、実際の画面キャプチャ画像では、アイコンや写真などを含むため、背景色と文字色だけの２色よりも多くのピクセル値が存在する。このような場合には、特徴的な色を保持する画素、例えばアイコンの中でしか使用されていない色の画素を代表点として選択すれば、テンプレート画像中の１点との比較だけですむので、大幅な比較回数の削減が可能である。
【０１６５】
以上のように、ビットマップマッチングを高速化する手法として、偽に判定されるべきケースにおいてできるだけ少ないビット値比較回数で値が異なるピクセルに遭遇するよう、比較点の選択・順位を最適化することが重要となる。しかしながら一方で、文字画像が複数文字を含むような複雑なパターンや、ウィンドウ全面に文字が存在し余白が少ない画面では、上記のような工夫で必ずしも期待通りの高い効果が得られるとは限らない。比較点の選択・順序づけの技術的な対応は可能と予想されるが、別途の検証評価が必要である。
【０１６６】
実際の適用シーンによっては、対象画像やテンプレート画像の条件が運悪く、効果が上がらないために、この方法を使用しない方がむしろ良い場合もある。そこで、表示更新中にフィードバックを行い、比較順序を動的に制御する、効果が小さいときは他の方法に切り替えておき、効果が出るときのみ有効化する、などが考えられる。
【０１６７】
このように、ビットマップマッチングは「偽陰性」を許容し正確さを妥協することで、高速化を可能としている。また、表示更新の方法としてそのまま用いるには効果にばらつきがある。このため、他の方法と併用して補助的に用いることで、実用性を維持したまま条件がそろいさえすれば高速性を享受できる。
【０１６８】
（複数世代のキャッシュ）
また、上記した第一の実施の形態の説明において、探索範囲を水平方向もしくは垂直方向にスウィープした矩形領域にする例を説明している。この点について、例えば、適用対象のアプリケーションに応じて、Ｗｅｂブラウザ上での垂直スクロールを中心としたアプリケーションであれば、垂直方向を固定的に指定するようにしてもよい。また、データベース検索結果を表示する横方向のテーブルビューを中心としたアプリケーションであれば、水平方向を固定的にするようにしてもよい。
【０１６９】
また、多様なアプリケーションの多様な表示形式に対応するために、表示している対象の内容に応じて、水平・垂直を動的に切り替えるようにしてもよい。これは、マッチ結果情報として、マッチ位置座標をマッチ計算時刻とともに複数世代にわたって保持する構成が必要である。
【０１７０】
そこで、表示制御部１３ｂは、検知部１３ａによって検知された画面の変化が検知されると、暫定更新処理および正規更新処理を実行し、正規更新処理では、前フレームに対する計算結果を基にマッチング結果情報を生成し、該マッチング結果情報をキャッシュに複数世代にわたって蓄積する。そして、暫定更新処理では、前フレームに対する計算結果を基に所定のマッチング結果情報を生成し、該所定のマッチング結果情報をキャッシュに複数世代にわたって蓄積する。また、暫定更新処理は、正規更新処理のキャッシュ、および、暫定更新処理のキャッシュのいずれか一つまたは両方に対して、マッチング結果情報のタイムスタンプをもとに参照することで、暫定更新処理での次のフレームのマッチング条件を生成するようにしてもよい。
【０１７１】
例えば、前世代の情報がない、あるいは１〜２世代程度の場合は、方向が確定していないものとして、水平・垂直の両方のスウィープ矩形領域についてそれぞれ２回ずつ画像マッチングを計算する。それ以上の世代が蓄積している場合は、直近数秒以内は方向の反転が発生していなければ、当該方向に限定した４方向（東西南北）のスィープに限定する。また、４世代程度までは移動量が少ないものとして、１００ピクセル程度の長さをスウィープした短い矩形に限定し、それ以上の世代が蓄積している場合は、直近数秒以外の移動距離の平均の長さを基準にする。さらに移動距離が増加傾向の場合は、基準に対し２倍の長さを確保し、減少傾向の場合は、基準に対し０．８倍の長さに限定する。
【０１７２】
連続的な表示更新が途切れて、直近数十秒以内に動きがない場合は、次の更新では方向や距離をデフォルトの値にリセットする。また、連続的な表示更新は行われているが、直近数十秒以内に動きがない場合は、マッチ位置の地点を囲む最小矩形を範囲として探索の無い画像マッチにより類似度のみをチェックし、絵柄の消滅があったときのみそれを反映させる。
【０１７３】
以上のように、動的な制御方法は、例に挙げたパラメータの初期値や制御量を適宜に変更することはもちろん、一部の制御方法を無効化する、他の制御方法を追加・組み合わせて実施することなどができる。
【０１７４】
また、これらマッチ結果情報を、マッチ位置ごとに保持する以外に、もととなったルール種別、対象のアプリケーション名、対象のウィンドウクラス名、対象のプロセスハンドル、対象のウィンドウハンドルなどからなるカテゴリごとに保持しておくことで、同種のルールの中での傾向、その中でのアプリケーション種別ごとの傾向、さらにその中でのアプリケーションインスタンスごとの傾向等のように動的にフィードバックをかけることが考えられる。このマッチング結果情報をアノテーションシステムの起動の期間と終了の期間とをまたがって、画面を表示するＰＣ上で記憶させるようにしてもよい。または、このマッチング結果情報を起動したＰＣを特定する情報またはユーザを特定する情報ごとに分類するとともに、通信可能なサーバに記憶させるようにしてもよい。例えば、複数ＰＣや複数ユーザごとにさらにカテゴリごとに保持することで、ネットワーク環境内の組織的な利用において、制御を調整させることが可能である。この実施にあたっては、従来技術であるビッグデータ解析などの成果を応用することが考えられる。
【０１７５】
（システム構成等）
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、ＣＰＵおよび当該ＣＰＵにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。例えば、検知部１３ａと表示制御部１３ｂとを統合してもよい。
【０１７６】
また、本実施の形態において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動的におこなうこともでき、あるいは、手動的におこなわれるものとして説明した処理の全部または一部を公知の方法で自動的におこなうこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
【０１７７】
（プログラム）
また、上記実施の形態に係る表示制御装置１０が実行する処理をコンピュータが実行可能な言語で記述したプログラムを作成することもできる。この場合、コンピュータがプログラムを実行することにより、上記実施の形態と同様の効果を得ることができる。さらに、かかるプログラムをコンピュータで読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータに読み込ませて実行することにより上記実施の形態と同様の処理を実現してもよい。以下に、表示制御装置１０と同様の機能を実現する表示制御プログラムを実行するコンピュータの一例を説明する。
【０１７８】
図２８は、表示制御プログラムを実行するコンピュータを示す図である。図２８に示すように、コンピュータ１０００は、例えば、メモリ１０１０と、ＣＰＵ１０２０と、ハードディスクドライブインタフェース１０３０と、ディスクドライブインタフェース１０４０と、シリアルポートインタフェース１０５０と、ビデオアダプタ１０６０と、ネットワークインタフェース１０７０とを有する。これらの各部は、バス１０８０によって接続される。
【０１７９】
メモリ１０１０は、ＲＯＭ（Read  Only  Memory）１０１１およびＲＡＭ（Random  Access  Memory）１０１２を含む。ＲＯＭ１０１１は、例えば、ＢＩＯＳ（Basic  Input  Output  System）等のブートプログラムを記憶する。ハードディスクドライブインタフェース１０３０は、ハードディスクドライブ１０９０に接続される。ディスクドライブインタフェース１０４０は、ディスクドライブ１０４１に接続される。ディスクドライブ１０４１には、例えば、磁気ディスクや光ディスク等の着脱可能な記憶媒体が挿入される。シリアルポートインタフェース１０５０には、例えば、マウス１１１０およびキーボード１１２０が接続される。ビデオアダプタ１０６０には、例えば、ディスプレイ１１３０が接続される。
【０１８０】
ここで、図２８に示すように、ハードディスクドライブ１０９０は、例えば、ＯＳ１０９１、アプリケーションプログラム１０９２、プログラムモジュール１０９３およびプログラムデータ１０９４を記憶する。上記実施の形態で説明した各テーブルは、例えばハードディスクドライブ１０９０やメモリ１０１０に記憶される。
【０１８１】
また、表示制御プログラムは、例えば、コンピュータ１０００によって実行される指令が記述されたプログラムモジュールとして、ハードディスクドライブ１０９０に記憶される。具体的には、上記実施の形態で説明した表示制御装置１０が実行する各処理が記述されたプログラムモジュールが、ハードディスクドライブ１０９０に記憶される。
【０１８２】
また、表示制御プログラムによる情報処理に用いられるデータは、プログラムデータとして、例えば、ハードディスクドライブ１０９０に記憶される。そして、ＣＰＵ１０２０が、ハードディスクドライブ１０９０に記憶されたプログラムモジュール１０９３やプログラムデータ１０９４を必要に応じてＲＡＭ１０１２に読み出して、上述した各手順を実行する。
【０１８３】
なお、表示制御プログラムに係るプログラムモジュール１０９３やプログラムデータ１０９４は、ハードディスクドライブ１０９０に記憶される場合に限られず、例えば、着脱可能な記憶媒体に記憶されて、ディスクドライブ１０４１等を介してＣＰＵ１０２０によって読み出されてもよい。あるいは、表示制御プログラムに係るプログラムモジュール１０９３やプログラムデータ１０９４は、ＬＡＮ（Local  Area  Network）やＷＡＮ（Wide  Area  Network）等のネットワークを介して接続された他のコンピュータに記憶され、ネットワークインタフェース１０７０を介してＣＰＵ１０２０によって読み出されてもよい。
【符号の説明】
【０１８４】
１０  表示制御装置
１１  入力部
１２  出力部
１３  制御部
１３ａ  検知部
１３ｂ  表示制御部
１４  記憶部
１４ａ  アノテーションＤＢ
【図１】
2016039273.tif 000003
【図２】
2016039273.tif 000004
【図３】
2016039273.tif 000005
【図４Ａ】
2016039273.tif 000006
【図４Ｂ】
2016039273.tif 000007
【図４Ｃ】
2016039273.tif 000008
【図５】
2016039273.tif 000009
【図６】
2016039273.tif 000010
【図７】
2016039273.tif 000011
【図８】
2016039273.tif 000012
【図９】
2016039273.tif 000013
【図１０】
2016039273.tif 000014
【図１１】
2016039273.tif 000015
【図１２】
2016039273.tif 000016
【図１３】
2016039273.tif 000017
【図１４】
2016039273.tif 000018
【図１５】
2016039273.tif 000019
【図１６】
2016039273.tif 000020
【図１７】
2016039273.tif 000021
【図１８】
2016039273.tif 000022
【図１９】
2016039273.tif 000023
【図２０】
2016039273.tif 000024
【図２１】
2016039273.tif 000025
【図２２】
2016039273.tif 000026
【図２３】
2016039273.tif 000027
【図２４】
2016039273.tif 000028
【図２５Ａ】
2016039273.tif 000029
【図２５Ｂ】
2016039273.tif 000030
【図２５Ｃ】
2016039273.tif 000031
【図２５Ｄ】
2016039273.tif 000032
【図２５Ｅ】
2016039273.tif 000033
【図２６】
2016039273.tif 000034
【図２７Ａ】
2016039273.tif 000035
【図２７Ｂ】
2016039273.tif 000036
【図２８】
2016039273.tif 000037
【国際調査報告】
2016039273.tif 000038
2016039273.tif 000039
2016039273.tif 000040