イメージ バリデーション(応用)#4

Ranorexの画像比較では、対象となる2つの画像を厳密に比較するため、人の目では識別できないような1ピクセルの違いに対しても異なる画像としてレポートします。しかしながら、検証結果として人の目で識別できるレベルや、多少の誤差に対しては成功とさせたい場合もでてくるかと思われます。このような場合において、プリプロセスフィルター、またはSimilarity(類似度)を使用することで、検証内容に合わせた画像比較をおこなうことができます。

画像比較の基本的な操作などについては以下のBlog記事をご参照ください。

プリプロセスフィルター

Downsize(ダウンサイジング)

Downsizeは、画像の特徴を残しつつスケールを小さくして比較をおこないます。これにより、表面的な違いによってテストが失敗となる可能性が低くなります。また、比較する必要のあるピクセル数が少なくて済むため、テストの実行が速くなります。

Edges(エッジ)

Edgesは、画像の情報量を減らして比較をおこないます。これによりテスト実行を速くします。画像の色や輝度の変化に対して、画像の認識をより堅牢なものにします。

EdgesSobel(エッジソーベル)

EdgesSobelは、画像のエッジ(明るい部分(白)と、暗い部分(黒)の境界)を強調して比較をおこないます。Edgesに似ており、色や輝度の変化に対してイメージ認識をより堅牢なものにします。

Grayscale(グレースケール)

Grayscaleは、画像の色や輝度の情報を減らして比較をおこないます。(画像をグレースケール256階調で表現します)画像の色の変化に対して、イメージ認識をより堅牢なものにします。

Threshold(スレッショルド)

Thresholdは、画像を白と黒の2色で表して比較をおこないます。たとえば右下の画像では、 暗い木はほぼ完全に黒く、 白い雪はほぼ完全に白になります。画像の色や輝度の変化に対して、画像の認識をより堅牢なものにします。

Similarity(類似度)

Similarityは、比較画像と実際の画像(テスト対象アプリに表示されている画像)が一致しているかを数値(類似度)でレポートします。Similarityは、0.0~1.0の値を持ち、0~100%の一致を意味します。

この値は変更することができ、画像に多少の差異があっても比較結果を成功とする場合、0.8や0.9のような値を使用するのが良いように思われますが、実際には、これらは非常に低い値になります。たとえば、Similarityの値を0.9に設定した場合、完全に白い100ピクセルの画像は、90個の白いピクセルと、10個の黒いピクセルを持つ画像と同一とみなされます。これは実際には大きな違いがあります。非常に大きな画像の場合、この差はさらに顕著になります。

※ Similarityは、比較画像がどの程度似ているかを、パーセンテージで定義します。
各ピクセルの色差が計算され、平均二乗誤差が合計されます。
10×10 ピクセルのイメージを例に考えます。
1ピクセルを除き、他のすべてのピクセル値が同じ色である2つの画像を考えます。
異なる1ピクセルが、画像Aでは白(RGB 255,255,255)、画像Bでは黒(RGB 0,0,0)である場合、類似度は99%になります。
異なる1ピクセルが、画像Aでは黒(RGB 0,0,0)、画像Bではグレー(RGB 128,128,128、つまり、50%の色差) である場合、類似度は99.75%になります。
単純に言えば、大きな画像を比較してその中の小さな差異を見つけたい場合には、99%の値は非常に低い類似度ということになります。

プリプロセスフィルターとSimilarityの設定

プリプロセスフィルター

プリプロセスフィルターは初期値として設定されていません。Ranorexの設定にある「イメージ処理」タブにて、「プリプロセスステップ」で初期値を変更できます。この対応により、レコーディングモジュールに画像比較のValidateアクションを追加した際に設定したフィルターが指定されます。

レコーディングモジュールに追加した画像比較のValidateアクションに対してプリプロセスフィルターを変更したい場合、対象のアクションの右クリックメニューから「プロパティ」を選択し、表示されるプロパティにて「Image based」-「Advanced options」-「Preprocessing」を変更することで対応できます。

Similarity

Similarityは初期値として1(100%)が設定されています。Ranorexの設定にある「イメージ処理」タブにて、「類似しきい値*(Similarity)」で初期値を変更できます。

レコーディングモジュールに追加した画像比較のValidateアクションに対してSimilarityを変更したい場合、対象のアクションの右クリックメニューから「プロパティ」を選択し、表示されるプロパティにて「Image based」-「Selection rectangle」-「Similarity」を変更することで対応できます。

※ 画像比較をおこない、失敗した結果が誤差の範囲内である場合、失敗した時の類似度以上の値に変更することで、結果(類似度)が誤差だった場合も成功とすることができます。