ヒストグラムベースの比較 ("default") (JA)
4.4.1 ヒストグラムに基づく比較(「デフォルト)
説明
ヒストグラムベースの比較方法(コード「default」)は、2005年にT-Plan Robotが提供した最初の方法でした。これは、デスクトップ画面を1つ以上のフルスクリーンテンプレート画像と素早く照合するために設計されました。より優れた検証手段である「search2」や「search」メソッドによって置き換えられましたが、特殊なケースでは依然として使用される可能性があります。
この手法は単純なヒストグラム比較に基づいている。画像ヒストグラムとは、平たく言えば画像内に存在する各色のリストと、その色ごとのピクセル数を表すものである。まずリモートデスクトップ画像とテンプレート画像の両方のヒストグラムを計算し、それらを比較する。画像比較の結果は、一致したピクセル数を画像の総ピクセル数で割った値として算出される。
以下の例は、この方法がどのように機能するかを示しています。2つの単純な120x100画像(各12000ピクセル)を考えましょう:
画像1 | 画像2 |
| ||||||||||||||||||||||||||
この場合の比較結果は9000px/12000px、つまり0.75、あるいは75%です。これは、画像を視覚的に比較した際に人間が言う「四分の一だけ異なる」という表現に相当します。
このアルゴリズムは非常に原始的ではあるが、アプリケーションとデスクトップの背景色が異なる場合に、デスクトップが正しいアプリケーションを表示しているかどうかを検証する必要がある場合には十分である。また、ウィンドウの位置変更がフルスクリーンのカラーヒストグラムに影響を与えないという点で、このアルゴリズムはかなり頑健です。
デフォルトの比較方法は、同じサイズの2つの画像を比較するように設計されていることに注意してください。テンプレート画像とリモートデスクトップの画像のサイズが異なる場合、両方の画像は内部的に交差部分のサイズに切り取られます。このため、予測できない結果が生じる可能性があるため、カスタム比較領域(「cmparea」パラメータ)とデフォルトの方法を併用することは推奨されません。
オプション
このメソッドは、ホスティングコマンドまたは Java メソッド呼び出しによって指定される 1 つ以上の テンプレート画像 および/またはイメージコレクションを必要とします。 「passrate」パラメータは、「default」メソッドのコンテキストにおいて、テンプレート画像と画面ヒストグラムの比較で許容される最低の結果を定義します(メソッドの説明)の例を参照)。デフォルトは 95% です。 「cmparea」はオプションであり、省略した場合はデフォルトで画面全体となります。
その他のメソッド固有のパラメーターはサポートされていません。
戻り値
このメソッドは、生成された比較結果が指定された合格率以上であれば、呼び出し元のコマンド(メソッド呼び出し)に0(成功)を返させます。そうでない場合は、値 1 を返します。
トラブルシューティング
"default "メソッドはメソッド固有のパラメータを使用しないため、ヒストグラム比較が失敗した場合に対処する唯一の手段は「passrate」パラメータを減少させることです。ヒストグラム比較後の実際の比較結果を確認するには、変数ビューアで_COMPARE_RESULT変数を探してください。
一般的な(ja) 画像比較のススメでは、以下の信頼性要因を考慮します:
サーバーのデスクトップからすべてのアイコンとアイテムを削除する。できるだけシンプルにしてください。ほとんどのデスクトップには時計/日付も表示されるため、時刻と日付の更新に差異が生じることに注意してください。そのようなオブジェクトが比較する領域に含まれている場合は、パスレートを使用して、不一致ピクセルに対する許容度を増やしてください。
テストするアプリケーション・ウィンドウに安定したサイズで開く。馬場.ウィンドウのサイズや位置が変わると、比較結果に大きく影響します。比較の前に、スクリプト化されたキーシーケンス(WindowsではAlt+Spaceの後にX、Linux/GnomeではAlt+F10など)を使ってアプリケーションウィンドウを最大化することをお勧めします。
使用例
Compareto netscape1.png;netscape1.png method="default" passrate="90"
if ({_EXIT_CODE} > 0) { Exit 1}
- デスクトップ画面を、合格率90%のnetscape1.pngおよびnetscape1.png画像と比較し、いずれの画面とも一致しない場合は終了コード1でスクリプトを終了します。