【第89回】ロータス博士のWinActor塾~色判定Ⅱ
![](https://www.knet-bpr.com/img/DrRoTAS.png)
今回は色判定が活躍するシチュエーションを紹介するぞ。
![](https://www.knet-bpr.com/img/MrRoTAS.png)
なんか塾久しぶりですね。
もう潰れたかと思いました。
![](https://www.knet-bpr.com/img/DrRoTAS.png)
確かに塾はそうじゃな。ワシも最近忙しかったからのう。
サイトとしては毎週何かしら更新しておるから
飽きずに見に来てほしいもんじゃが・・・。
![](https://www.knet-bpr.com/img/RoTAS_yoko.png)
して、色判定の活躍する場所とは?
![](https://www.knet-bpr.com/img/DrRoTAS.png)
ちょっと画面上の表示が不親切なシステムを相手にする場合じゃ。
どんなものか例を用意したからそれをお見せしよう。極端な例じゃがな。
次回は実践の予定じゃから、しっかり聞いておくんじゃぞ。
画像マッチングの苦手分野「類似色」
色判定が活躍する場として、次のような例を用意しました。
この図はとある会社の運営しているサーバの稼働状況をモニタしているシステムの画面です。
オペレータはこの画面を定期的にチェックして異常がないことを確認します。
不親切なことに、この画面には異常かどうかを判断する材料が状態インジケータ(ステータスによって色が変わる)しかありません。オペレータはこの色によって都度判断を行っています。
ステータスによる色の対応表は次の通りです。
異常時はこのように表示されます。
これをロボットが判別することは可能なのでしょうか。
![](https://www.knet-bpr.com/img/MrRoTAS.png)
これは簡単ですよ。
異常のときの画像をマッチングして、成功したら異常あり、失敗したら正常です!
![](https://www.knet-bpr.com/img/DrRoTAS.png)
ふむ、よい考えじゃな。
どのサーバかを特定する必要がないなら、そのフローは正しいじゃろう。
マッチングも1回で済むからのう。
しかし、そううまくいくかな?
![](https://www.knet-bpr.com/img/RoTAS_yoko.png)
なんですかその不穏なセリフ。
では実際にマッチングを行ってみましょう。
画像マッチングに次のようなプロパティ設定をして実行してみます。
しっかりとマッチングできました。このパターンでは問題ないようです。
では、停止状態のサーバがあった場合はどうでしょうか。
異常状態のサーバのみをチェックしたいのですが、停止状態でもマッチしてしまいました。
![](https://www.knet-bpr.com/img/MrRoTAS.png)
なん・・・だと・・・
いや、待ってください!マッチ率!
マッチ率を100%にしましょう!
ロータス君の要望通り、マッチ率を100%にしてみます。
実行結果はこのようになりました。
![](https://www.knet-bpr.com/img/MrRoTAS.png)
あ、終わりだ。
じゃあ終わりです、これ。
![](https://www.knet-bpr.com/img/DrRoTAS_ase.png)
こらこら、勝手に終わりにするでない。
この結果から、色のみが微妙に変化しただけのものを判別する場合
画像マッチングは不向きであるということがわかった。
![](https://www.knet-bpr.com/img/MrRoTAS.png)
なるほど。だからこその色判定。
![](https://www.knet-bpr.com/img/DrRoTAS.png)
そういうことじゃ。
それでは色判定で判別ができるのか、実際に結果を出してみました。
色別にしっかりと値が異なっています。この値を使って判別できそうですね。
この値の色が気になる方はwebサービスなどでRGB値を調べてみましょう。
インジケータの色とほぼ同じ色が出るはずです。
![](https://www.knet-bpr.com/img/RoTAS_yoko.png)
おお、本当に判別できてる。
こういう場合に色判定は活躍するのか・・・。
なぜ画像マッチングでは微妙な色差を判別できないのか
画像マッチングは、テンプレートマッチングという画像処理のアルゴリズムを利用して類似画像を判別しています。
テンプレートマッチングにも様々な手法が存在しますが、WinActorでは入力画像とマッチング対象の画像の類似度を計算し
マッチ率がプロパティで設定したマッチ率を上回ったときに画像が一致したと判断します。
対比する二箇所の画素の値の組み合わせによっては、差分を計算した際に近似した値が求まる場合があると推測できます。
今回の例では、差を求める要素のひとつである”色”が、かなり近似したものでした。
そのため、差分を求めた際の数値がマッチ率の1%に満たない場合、色が異なっていてもマッチしてしまうと考えられます。
WinActorでは、マッチ率に100%を指定した場合
マッチ率が99%を超える画像が見つかった際に画像が一致したと判断します。
また、マッチ率の推奨設定に関しては、公式FAQの次の回答が参考になります。
ブラウザなどで表示される画像は、アンチエイリアス(文字や図形の輪郭を滑らかに表示する手法)などの処理により色境界の補完色が表示状況により変化することから、ピクセル単位の比較でマッチング画像と完全に一致しない場合があります。そのため誤認識しない程度までマッチ率の設定値を下げることをお勧めします。なお、WinActor Ver.7.1以降では画像マッチングノードのマッチ率のデフォルト設定値を90%に変更しております。
引用 - WinActor公式サイトFAQ 画像マッチングのマッチ率とは
![](https://www.knet-bpr.com/img/DrRoTAS.png)
背景色だけがうっすらと違ったり、そういった微妙な変化を正確に判定するのは難しいということじゃな。
判定する画像が、他にない特徴的なものだったりするとしっかり判定できるんじゃがのう。
色の微妙な違いを正確に判別したい場合は、やはり「色判定」を使うのが良いということじゃ。
![](https://www.knet-bpr.com/img/MrRoTAS.png)
すいませんアルゴリズムとかよくわからないので全然聞いてませんでした。
とりあえず色が似ているものを判定したい場合は色判定と覚えておきます。
![](https://www.knet-bpr.com/img/DrRoTAS.png)
はっきり聞いてないと言われるとアレじゃが・・・
まあ覚える必要はないことじゃからな。認識としてはそれで問題ないじゃろう。
では最後に練習問題を出しておしまいとするぞ。
練習問題 色判定でサーバの稼働状況を確認する
次の仕様を満たすシナリオを、色判定を利用して作成してみましょう。
今回はいつもよりも若干難易度を上げています。
シナリオ仕様
・図Aのサーバ一覧で、状態が「異常」「停止」の場合にポップアップで通知する。
その際、異常なのか停止なのかをわかるようにする。
・図Aの場合でも、図Bの場合でもシナリオが正常に動作するように作成する。
(サーバ台数が変化しても対応できるシナリオにする)
図A
図B
(参考)状態インジケータのパターン
![](https://www.knet-bpr.com/img/DrRoTAS.png)
サーバ台数の変化に対応するところが、脳トレポイントじゃな!
次回は解答編の予定じゃ。それまでに頑張ってシナリオを作成してみよう。
![](https://www.knet-bpr.com/img/MrRoTAS.png)
色判定に関係なさそうな条件を付けてきた・・・。
![](https://www.knet-bpr.com/img/DrRoTAS.png)
じゃがここまでしっかり塾を受けてきたなら
このくらいのシナリオは作れるはずじゃ!
ワシは信じておるぞ。
![](https://www.knet-bpr.com/img/RoTAS_age.png)
任せてくださいよ!
僕がバッチリ動くシナリオ作ってやりますよ!
![](https://www.knet-bpr.com/img/DrRoTAS.png)
良い意気込みじゃ!次回が楽しみじゃのう。
それでは今回はここまで!
関連記事こちらの記事も合わせてどうぞ。
2024.05.24
【第102回】ロータス博士のWinActor塾~リトライできるシナリオⅡおまけ
2024.04.22
【第101回】ロータス博士のWinActor塾~リトライできるシナリオⅡ
2024.03.27