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