(57)【要約】【課題】画像に含まれる直線判定の精度を高めること。【解決手段】情報処理装置１０は、画像データを取得し、取得した画像データに含まれる複数の画素それぞれの周囲に位置する画素に対応付けられた画素値に基づき、複数の画素それぞれに応じた領域内での画素値の変化の方向を、複数の画素それぞれに対応付ける分布情報を生成し、生成した分布情報に基づき、複数の画素のうち、対応付けられた方向の類似度が基準を満たす複数の画素の連続性に基づき、該複数の画素に対応する位置に直線が存在するか否かの判定を行う。【選択図】図２
2019106012.tif 000002
【特許請求の範囲】
【請求項１】
画像データを取得し、
取得した前記画像データに含まれる複数の画素それぞれの周囲に位置する画素に対応付けられた画素値に基づき、前記複数の画素それぞれに応じた領域内での画素値の変化の方向を、前記複数の画素それぞれに対応付ける分布情報を生成し、
生成した前記分布情報に基づき、前記複数の画素のうち、対応付けられた方向の類似度が基準を満たす複数の画素の連続性に基づき、該複数の画素に対応する位置に直線が存在するか否かの判定を行う、
処理をコンピュータに実行させることを特徴とする判定プログラム。
【請求項２】
前記判定を行う処理は、対応付けられた方向の類似度が基準を満たし、かつ前記画素値の変化の方向と交差する方向に位置する、前記複数の画素の連続性に基づき、該複数の画素に対応する位置に直線が存在するか否かの判定を行う、ことを特徴とする請求項１に記載の判定プログラム。
【請求項３】
前記判定を行う処理は、対応付けられた方向の類似度が基準を満たし、かつ前記画素値の変化の方向と直交する方向に位置する、前記複数の画素の連続性に基づき、該複数の画素に対応する位置に直線が存在するか否かの判定を行う、ことを特徴とする請求項２に記載の判定プログラム。
【請求項４】
前記複数の画素それぞれに応じた領域内での画素値の変化の方向は、前記画像データに含まれる複数の画素それぞれの周囲に位置する画素に対応付けられた画素値を用いて水平および垂直の方向ごとに算出されたエッジ成分に基づいて算出される、ことを特徴とする請求項１、２または３に記載の判定プログラム。
【請求項５】
画像データを取得し、
取得した前記画像データに含まれる複数の画素それぞれの周囲に位置する画素に対応付けられた画素値に基づき、前記複数の画素それぞれに応じた領域内での画素値の変化の方向を、前記複数の画素それぞれに対応付ける分布情報を生成し、
生成した前記分布情報に基づき、前記複数の画素のうち、対応付けられた方向の類似度が基準を満たす複数の画素の連続性に基づき、該複数の画素に対応する位置に直線が存在するか否かの判定を行う、
処理をコンピュータが実行することを特徴とする判定方法。
【請求項６】
画像データを取得する取得部と、
取得した前記画像データに含まれる複数の画素それぞれの周囲に位置する画素に対応付けられた画素値に基づき、前記複数の画素それぞれに応じた領域内での画素値の変化の方向を、前記複数の画素それぞれに対応付ける分布情報を生成する生成部と、
生成した前記分布情報に基づき、前記複数の画素のうち、対応付けられた方向の類似度が基準を満たす複数の画素の連続性に基づき、該複数の画素に対応する位置に直線が存在するか否かの判定を行う判定部と、
を有することを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、判定プログラム、判定方法および情報処理装置に関する。
【背景技術】
【０００２】
画像の中から直線を検出する技術の一例として、画像ごとに作成されたエッジのヒストグラム間の距離に基づいて画像の類似性を判定する画像処理装置が提案されている。この画像処理装置では、ヒストグラムの作成時に線分の検出が行われる。すなわち、画像処理装置は、画像を部分領域としてのブロックに分割し、そのブロックに存在する方向成分ごとの線分の数をビンとすることでヒストグラムを作成する。例えば、０度方向のときは、行ごとに０度方向のエッジがどれだけ含まれているかが計数される。その上で、全て０度方向のエッジであればブロックの行が線分であるとみなされると共に、途中で０度方向のエッジが検出されない画素がいくつか存在する場合であっても一定の割合以上で０度方向のエッジがあれば線分とみなされる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００６−１２７１５９号公報
【特許文献２】特開２００１−２２３８９１号公報
【特許文献３】特開２００２−２３０５６２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、上記の技術では、画像に含まれる直線判定の精度を高めることができない場合がある。すなわち、上記の画像処理装置では、同一方向のエッジの数の多寡によって線分が検出される。それ故、同一方向のエッジが局所的に密集する場合、エッジが密集する箇所が直線以外の文字列や円弧などのノイズに対応する場合であっても、エッジが密集する箇所が直線と誤判定されてしまう。
【０００５】
１つの側面では、本発明は、画像に含まれる直線判定の精度を高めることができる判定プログラム、判定方法および情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【０００６】
一態様では、判定プログラムは、画像データを取得し、取得した前記画像データに含まれる複数の画素それぞれの周囲に位置する画素に対応付けられた画素値に基づき、前記複数の画素それぞれに応じた領域内での画素値の変化の方向を、前記複数の画素それぞれに対応付ける分布情報を生成し、生成した前記分布情報に基づき、前記複数の画素のうち、対応付けられた方向の類似度が基準を満たす複数の画素の連続性に基づき、該複数の画素に対応する位置に直線が存在するか否かの判定を行う、処理をコンピュータに実行させる。
【発明の効果】
【０００７】
画像に含まれる直線判定の精度を高めることができる。
【図面の簡単な説明】
【０００８】
【図１】図１は、実施例１に係るシステム構成の一例を示す図である。
【図２】図２は、実施例１に係る情報処理装置の機能的構成の一例を示すブロック図である。
【図３】図３は、エッジ量の算出方法の一例を示す図である。
【図４】図４は、エッジ方向の一例を示す図である。
【図５】図５は、探索方法の一例を示す図である。
【図６】図６は、デスクトップ画面の一例を示す図である。
【図７】図７は、画素値の一例を示す模式図である。
【図８Ａ】図８Ａは、エッジ量およびエッジ方向の一例を示す模式図である。
【図８Ｂ】図８Ｂは、エッジ量およびエッジ方向の一例を示す模式図である。
【図９】図９は、画素値の一例を示す模式図である。
【図１０Ａ】図１０Ａは、エッジ量およびエッジ方向の一例を示す模式図である。
【図１０Ｂ】図１０Ｂは、エッジ量およびエッジ方向の一例を示す模式図である。
【図１１】図１１は、構造モデルの抽出例を示す図である。
【図１２】図１２は、実施例１に係るランサムウェア検知処理の手順を示すフローチャートである。
【図１３】図１３は、実施例１に係る直線判定処理の手順を示すフローチャートである。
【図１４】図１４は、実施例１及び実施例２に係る判定プログラムを実行するコンピュータのハードウェア構成例を示す図である。
【発明を実施するための形態】
【０００９】
以下に添付図面を参照して本願に係る判定プログラム、判定方法および情報処理装置について説明する。なお、この実施例は開示の技術を限定するものではない。そして、各実施例は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
【実施例１】
【００１０】
図１は、実施例１に係るシステム構成の一例を示す図である。図１には、直線判定のユースケースのあくまで一例として、企業システム等のシステム１に収容される情報処理装置１０Ａ〜１０Ｃのランサムウェア感染を検知するために、情報処理装置１０Ａ〜１０Ｃ上で動作する監視プログラムによってデスクトップ画面の画像データから直線が検出される例が示されている。
【００１１】
図１に示すように、システム１には、情報処理装置１０Ａ〜１０Ｃと、管理者端末３０とが含まれる。以下では、情報処理装置１０Ａ〜１０Ｃのことを総称する場合に「情報処理装置１０」と記載する場合がある。なお、図１には、３つの情報処理装置１０Ａ〜１０Ｃを図示したが、システム１に収容される情報処理装置１０の数は任意の数であってかまわない。
【００１２】
これら情報処理装置１０および管理者端末３０の間は、ネットワークＮＷを介して相互に通信可能に接続される。かかるネットワークＮＷには、有線または無線を問わず、インターネットやＬＡＮ（Local  Area  Network）、ＶＰＮ（Virtual  Private  Network）などの任意の種類の通信網を採用できる。
【００１３】
情報処理装置１０は、企業等の組織に所属するエンドユーザによって使用されるコンピュータである。例えば、情報処理装置１０には、パーソナルコンピュータやワークステーションなどのデスクトップ型のコンピュータなどが対応する。このようなデスクトップ型のコンピュータに限定されず、ラックトップ型のコンピュータや携帯端末装置、ウェアラブル端末などの任意のコンピュータであってかまわない。
【００１４】
管理者端末３０は、企業等の組織に所属するシステム管理者によって使用されるコンピュータである。例えば、管理者端末３０では、エンドユーザが使用する情報処理装置１０とは異なるアカウント、すなわち管理者権限を有するアカウントが使用される。このラベルはあくまで機能の一面からの分類であってコンピュータの種類やそのハードウェア構成が特定のものに限定される訳ではなく、上記の情報処理装置１０と同様、任意のコンピュータであってかまわない。
【００１５】
ここで、情報処理装置１０には、ランサムウェアへの感染を監視する機能を実現する監視プログラムがインストールされる。この監視プログラムは、ランサムウェア対策専用のソフトウェアであってもよいし、情報漏洩対策としてインストールされたソフトウェアにランサムウェアへの感染を監視する機能がアドオンされたものであってもかまわない。
【００１６】
一側面として、情報処理装置１０上で動作する監視プログラムは、デスクトップ画面がキャプチャされた画像データに構造判定および単語判定の２つの判定を行うことにより、情報処理装置１０がランサムウェアに感染中であるか否かを判定する。ここで言う「構造判定」とは、デスクトップ画面の直線検出結果から直線またはその組合せを要素とする画面の構造モデルを作成し、あらかじめ登録されたランサムウェアの構造モデルと類似するか否かを判定する処理を指す。また、「単語判定」とは、デスクトップ画面の文字認識結果として得られた単語の中にランサムウェア感染中に表示される画面に頻出する単語が含まれるか否かを判定する処理を指す。
【００１７】
そして、上記の監視プログラムは、デスクトップ画面の構造モデルとランサムウェアの構造モデルとが類似し、かつデスクトップ画面に含まれる単語の中にランサムウェア感染時に表示される画面に頻出する単語が含まれる場合、ランサムウェアに感染中のリスクありと判定する。この場合、上記の監視プログラムは、所定のアラートを管理者端末３０へ出力する。例えば、上記の監視プログラムは、当該監視プログラムが動作する情報処理装置１０の識別情報と共にランサムウェアへの感染が検知されたデスクトップ画面の画像データをアラートとして管理者端末３０へ出力したり、ランサムウェアへの感染を通知する画像や音声のメッセージを管理者端末３０へ出力したりすることができる。
【００１８】
［情報処理装置１０の構成］
図２は、実施例１に係る情報処理装置１０の機能的構成の一例を示すブロック図である。図２に示すように、情報処理装置１０は、通信Ｉ／Ｆ（InterFace）部１１と、記憶部１３と、制御部１５とを有する。図２には、データの授受の関係を表す実線が示されているが、説明の便宜上、最小限の部分について示されているに過ぎない。すなわち、各処理部に関するデータの入出力は、図示の例に限定されず、図示以外のデータの入出力、例えば処理部及び処理部の間、処理部及びデータの間、並びに、処理部及び外部装置の間のデータの入出力が行われることとしてもかまわない。
【００１９】
通信Ｉ／Ｆ部１１は、他の装置、例えば管理者端末３０等との間で通信制御を行うインタフェースである。
【００２０】
一実施形態として、通信Ｉ／Ｆ部１１には、ＬＡＮカードなどのネットワークインタフェースカードなどが対応する。例えば、通信Ｉ／Ｆ部１１は、管理者端末３０から遠隔操作等のコマンドを受信したり、遠隔操作のコマンドに対応する処理の実行結果を管理者端末３０へ送信したりすることができる。また、通信Ｉ／Ｆ部１１は、ランサムウェア感染のアラートを管理者端末３０へ送信することもできる。この他、通信Ｉ／Ｆ部１１は、図示しないサーバ装置等から情報処理装置１０にインストールする監視プログラムをダウンロードすることもできる。
【００２１】
記憶部１３は、制御部１５で実行されるＯＳ（Operating  System）を始め、上記の監視プログラム、例えばアプリケーションプログラムやミドルウェアなどの各種プログラムに用いられるデータを記憶する記憶デバイスである。
【００２２】
一実施形態として、記憶部１３は、情報処理装置１０における補助記憶装置として実装することができる。例えば、記憶部１３には、ＨＤＤ（Hard  Disk  Drive）、光ディスクやＳＳＤ（Solid  State  Drive）などを採用できる。なお、記憶部１３は、必ずしも補助記憶装置として実装されずともよく、情報処理装置１０における主記憶装置として実装することもできる。この場合、記憶部１３には、各種の半導体メモリ素子、例えばＲＡＭ（Random  Access  Memory)やフラッシュメモリを採用できる。
【００２３】
記憶部１３は、制御部１５で実行されるプログラムに用いられるデータの一例として、分布情報１３ａと、ランサムウェア情報１３ｂとを記憶する。これらのデータ以外にも、記憶部１３には、他の電子データが記憶されることとしてもかまわない。例えば、記憶部１３は、情報処理装置１０を使用するユーザに付与されたアカウント情報なども併せて記憶することもできる。なお、分布情報１３ａおよびランサムウェア情報１３ｂの説明は、各データの生成または参照が行われる制御部１５の説明と合わせて行うこととする。
【００２４】
制御部１５は、情報処理装置１０の全体制御を行う処理部である。
【００２５】
一実施形態として、制御部１５は、ＣＰＵ（Central  Processing  Unit）やＭＰＵ（Micro  Processing  Unit）などのハードウェアプロセッサにより実装することができる。ここでは、プロセッサの一例として、ＣＰＵやＭＰＵを例示したが、汎用型および特化型を問わず、任意のプロセッサ、例えばＧＰＵ（Graphics  Processing  Unit）やＤＳＰ（Digital  Signal  Processor）の他、ＧＰＧＰＵ（General-purpose  computing  on  graphics  processing  units）により実装することができる。この他、制御部１５は、ＡＳＩＣ（Application  Specific  Integrated  Circuit）やＦＰＧＡ（Field  Programmable  Gate  Array）などのハードワイヤードロジックによって実現されることとしてもかまわない。
【００２６】
制御部１５は、図示しない主記憶装置として実装されるＤＲＡＭ（Dynamic  Random  Access  Memory）やＳＲＡＭ（Static  Random  Access  Memory）などのＲＡＭのワークエリア上に、上記の監視プログラムを展開することにより、下記の処理部を仮想的に実現する。
【００２７】
制御部１５は、図２に示すように、取得部１５ａと、エッジ点検出部１５ｂと、エッジ方向算出部１５ｃと、生成部１５ｄと、探索部１５ｅと、直線判定部１５ｆと、ランサムウェア判定部１５ｇとを有する。
【００２８】
取得部１５ａは、画像を取得する処理部である。
【００２９】
一実施形態として、取得部１５ａは、情報処理装置１０の表示部に表示されるデスクトップ画面の画像データを保存するフレームバッファから、デスクトップ画面の画像データを取得する。このようにデスクトップ画面の画像データを取得する契機の例として、前回にデスクトップ画面の画像データが取得されてから所定の時間、例えば１０秒間が経過することを条件とすることができる。このような時間的な条件の他、情報処理装置１０のプロセッサが実行するＯＳやアプリケーションにより新たなウィンドウが生成されるイベントを条件とすることもできる。
【００３０】
エッジ点検出部１５ｂは、画像からエッジ点を検出する処理部である。
【００３１】
一実施形態として、エッジ点検出部１５ｂは、取得部１５ａによりデスクトップ画面の画像データが取得される度に、次のような処理を実行する。すなわち、エッジ点検出部１５ｂは、取得部１５ａにより取得されたデスクトップ画面の画像データをビットマップ形式のカラー画像からグレースケール画像へ変換する。これにより、一例として、画像データの各画素の画素値が８ビットの階調値で表される０〜２５５の濃淡値へ変換される。続いて、エッジ点検出部１５ｂは、画像データに含まれる画素のうち画素を１つ選択する。例えば、エッジ点検出部１５ｂは、ラスタースキャン等の手順にしたがって画素を選択することができる。以下では、画像データに含まれる画素の中から選択された画素をそれ以外の画素と区別する観点から「選択中の画素」と記載する場合がある。
【００３２】
そして、エッジ点検出部１５ｂは、選択中の画素の周囲に位置する画素の画素値に基づいて、選択中の画素のエッジ成分を横方向および縦方向ごとに算出する。このようにエッジ成分を算出する場合、選択中の画素の周囲に位置する画素として、選択中の画素の８近傍、すなわち選択中の画素の上の画素から時計回りの順に上、右上、右、右下、下、左下、左および左上の８画素を用いることができる。例えば、エッジ点検出部１５ｂは、下記の式（１）にしたがって横方向のエッジ成分を算出することができる。また、エッジ点検出部１５ｂは、下記の式（２）にしたがって縦方向のエッジ成分を算出することができる。その後、エッジ点検出部１５ｂは、下記の式（３）にしたがって横方向のエッジ成分および縦方向のエッジ成分から選択中の画素のエッジ量を算出する。
【００３３】
横方向のエッジ成分＝（左上の画素値−右上の画素値）／４＋（左の画素値−右の画素値）／２＋（左下の画素値−右下の画素値）／４・・・（１）
縦方向のエッジ成分＝（左上の画素値−左下の画素値）／４＋（上の画素値−下の画素値）／２＋（右上の画素値−右下の画素値）／４・・・（２）
エッジ量＝ｓｑｒｔ｛（縦方向のエッジ成分）２＋（横方向のエッジ成分）２｝・・・（３）
【００３４】
図３は、エッジ量の算出方法の一例を示す図である。図３には、選択中の画素とその周囲に位置する８近傍とが示されると共に、８近傍の各画素の中には画素値が記入されている。図３示す例では、選択中の画素の横方向のエッジ成分は、「（２５５−０）／４＋（２５５−０）／２＋（２５５−０）／４」の計算により、「２５５」と算出される。また、選択中の画素の縦方向のエッジ成分は、「（２５５−２５５）／４＋（０−０）／２＋（０−０）／４」の計算により、「０」と算出される。このため、選択中の画素のエッジ量は、「ｓｑｒｔ｛（０）２＋（２５５）２｝」の計算により、「２５５」と算出される。
【００３５】
このように選択中の画素のエッジ量が算出された後、エッジ点検出部１５ｂは、選択中の画素のエッジ量が所定の閾値Ｔｈ１以上であるか否かを判定する。この閾値Ｔｈ１には、一例として、背景および前景を分離できる値が設定される。例えば、カラーの画像データにおいて白地の背景および黒地の前景を分離する場合には、おおよそ１８０程度の値を閾値Ｔｈ１として設定できる。また、カラーの画像データにおいて黄色の背景および赤色の前景を分離する場合、おおよそ８０程度の値を閾値Ｔｈ１として設定できる。このような閾値Ｔｈ１の設定は、次のような処理によって自動化できる。例えば、グレースケールに変換されたデスクトップ画面の画像データに含まれる画素ごとに当該画素が持つ画素値に対応する階級値の度数をインクリメントすることによりヒストグラムを生成する。続いて、ヒストグラムから度数が最高である第１のピークと第１のピークの次に度数が高い第２のピークとを検出する。その上で、第１のピークと第２のピークとの中間にある階級値を閾値Ｔｈ１として設定する。これによって、第１のピークに対応する可能性が高い背景と、第２のピークに対応する可能性が高い前景とを識別できる閾値Ｔｈ１を設定することが可能になる。
【００３６】
ここで、選択中の画素のエッジ量が閾値Ｔｈ１以上である場合、エッジ点検出部１５ｂは、当該選択中の画素を「エッジ点」として検出する。一方、選択中の画素のエッジ量が閾値Ｔｈ１未満である場合、当該選択中の画素は「エッジ点」として検出されない。
【００３７】
エッジ方向算出部１５ｃは、エッジ方向を算出する処理部である。
【００３８】
一実施形態として、エッジ方向算出部１５ｃは、エッジ点検出部１５ｂによりエッジ点として検出された画素を対象に、当該画素のエッジ方向を算出する。例えば、エッジ方向算出部１５ｃは、エッジ点における横方向および縦方向のエッジ成分の符号の組合せに応じて下記の式（４）〜下記の式（７）のうちいずれか１つを選択してエッジ点におけるエッジ方向を算出する。すなわち、横方向のエッジ成分および縦方向のエッジ成分の両方の符号が「正」である場合（ケース１）、エッジ方向の算出に下記の式（４）が用いられる。また、横方向のエッジ成分の符号が「負」であり、かつ縦方向のエッジ成分の符号が「正」である場合（ケース２）、エッジ方向の算出に下記の式（５）が用いられる。また、横方向のエッジ成分および縦方向のエッジ成分の両方の符号が「負」である場合（ケース３）、エッジ方向の算出に下記の式（６）が用いられる。また、横方向のエッジ成分の符号が「正」であり、かつ縦方向のエッジ成分の符号が「負」である場合（ケース４）、エッジ方向の算出に下記の式（７）が用いられる。なお、ここでは、エッジ点として検出された画素に絞ってエッジ方向を算出する場合を例示したが、全ての画素のエッジ方向を算出することとしてもかまわない。
【００３９】
＜ケース１＞
（縦方向のエッジ成分／（横方向のエッジ成分＋縦方向のエッジ成分））＊９０・・・（４）
＜ケース２＞
（（−横方向のエッジ成分）／（（−横方向のエッジ成分）＋縦方向のエッジ成分））＊９０＋９０・・・（５）
＜ケース３＞
（（−縦方向のエッジ成分）／（（−横方向のエッジ成分）＋（−縦方向のエッジ成分）））＊９０＋１８０・・・（６）
＜ケース４＞
（横方向のエッジ成分／（横方向のエッジ成分＋（−縦方向のエッジ成分）））＊９０＋２７０・・・（７）
【００４０】
例えば、図３に示す選択中の画素がエッジ点として検出された場合、横方向のエッジ成分および縦方向のエッジ成分の符号はいずれも「正」であるので、エッジ方向の算出には上記の式（４）が用いられる。すなわち、エッジ方向は、「（０／（２５５＋０））＊９０」の計算により、「０」と算出される。
【００４１】
ここで、上記の式（４）〜上記の式（７）によりエッジ方向が算出される場合、所定の方向に対する相対角度によって表される。図４は、エッジ方向の一例を示す図である。図４に示すように、エッジ方向θは、左方向を０度とし、そこから時計回りに３６０度までの値が上記の式（４）〜上記の式（７）により算出される。
【００４２】
生成部１５ｄは、画像データに含まれる複数の画素それぞれに対応する分布情報を生成する処理部である。
【００４３】
一実施形態として、生成部１５ｄは、エッジ方向算出部１５ｃによりエッジ点におけるエッジ方向が算出される度に、当該選択中の画素に対応付けてエッジ方向を記憶部１３に保存する。これによって、エッジ点の画素ごとに当該画素におけるエッジ方向が対応付けられた分布情報１３ａが生成される。
【００４４】
このようなエッジ点の検出、エッジ方向の算出および分布情報の生成は、デスクトップ画面の画像データに含まれる全ての画素が選択されるまで繰り返し実行される。
【００４５】
探索部１５ｅは、エッジ点からエッジ点のエッジ方向と交差する方向へ向かって画素を探索する処理部である。
【００４６】
一実施形態として、探索部１５ｅは、記憶部１３に記憶された分布情報１３ａに含まれるエッジ点の中からエッジ点を１つ選択する。以下では、分布情報１３ａに含まれるエッジ点の中から選択されたエッジ点をそれ以外のエッジ点と区別する観点から「選択中のエッジ点」と記載する場合がある。続いて、探索部１５ｅは、選択中のエッジ点におけるエッジ方向θから当該エッジ方向θと直交する方向、すなわちθ±９０度を探索方向として算出する。その上で、探索部１５ｅは、選択中のエッジ点を探索の開始地点とし、そこから探索方向に存在する画素を選択中のエッジ点から近い位置の画素から順に探索する。すなわち、探索部１５ｅは、選択中のエッジ点の探索方向に存在する画素のうちエッジ点に１番近い画素を探索する。その後、選択中のエッジ点におけるエッジ方向と類似するエッジ方向の画素が探索される限り、探索が継続される。すなわち、探索部１５ｅは、選択中のエッジ点の探索方向に存在する画素のうち１回前に探索された画素の次に選択中のエッジ点に近い画素を繰り返し探索する。
【００４７】
図５は、探索方法の一例を示す図である。図５には、選択中のエッジ点の周囲に位置する８近傍の画素と、探索方向との対応関係が示されている。図５に示すように、エッジ点のエッジ方向θ±９０度により算出された探索方向が３３５度〜３６０度または０度〜２５度の第１の区間に該当する場合、選択中のエッジ点から左方向へ向かって画素が探索される。また、探索方向が２０度〜７０度の第２の区間に該当する場合、選択中のエッジ点から左上方向へ向かって画素が探索される。これら第１の区間および第２の区間は、その一部、すなわち２０度〜２５度が重複する。このように第１の区間および第２の区間が重複する区間に探索方向が該当する場合、選択中のエッジ点から左方向へ向かっての画素の探索、並びに、選択中のエッジ点から左上方向へ向かっての画素の探索の２方向の探索を併せて実行する。
【００４８】
また、探索方向が６５度〜１１５度の第３の区間に該当する場合、選択中のエッジ点から上方向へ向かって画素が探索される。これら第２の区間および第３の区間は、その一部、すなわち６５度〜７０度が重複する。このように第２の区間および第３の区間が重複する区間に探索方向が該当する場合、選択中のエッジ点から左上方向へ向かっての画素の探索、並びに、選択中のエッジ点から上方向へ向かっての画素の探索の２方向の探索を併せて実行する。さらに、探索方向が１１０度〜１６０度の第４の区間に該当する場合、選択中のエッジ点から右上方向へ向かって画素が探索される。これら第３の区間および第４の区間は、その一部、すなわち１１０度〜１１５度が重複する。このように第３の区間および第４の区間が重複する区間に探索方向が該当する場合、選択中のエッジ点から上方向へ向かっての画素の探索、並びに、選択中のエッジ点から右上方向へ向かっての画素の探索の２方向の探索を併せて実行する。
【００４９】
また、探索方向が１５５度〜２０５度の第５の区間に該当する場合、選択中のエッジ点から右方向へ向かって画素が探索される。これら第４の区間および第５の区間は、その一部、すなわち１５５度〜１６０度が重複する。このように第４の区間および第５の区間が重複する区間に探索方向が該当する場合、選択中のエッジ点から右上方向へ向かっての画素の探索、並びに、選択中のエッジ点から右方向へ向かっての画素の探索の２方向の探索を併せて実行する。さらに、探索方向が２００度〜２５０度の第６の区間に該当する場合、選択中のエッジ点から右下方向へ向かって画素が探索される。これら第５の区間および第６の区間は、その一部、すなわち２００度〜２０５度が重複する。このように第５の区間および第６の区間が重複する区間に探索方向が該当する場合、選択中のエッジ点から右方向へ向かっての画素の探索、並びに、選択中のエッジ点から右下方向へ向かっての画素の探索の２方向の探索を併せて実行する。
【００５０】
また、探索方向が２４５度〜２９５度の第７の区間に該当する場合、選択中のエッジ点から下方向へ向かって画素が探索される。これら第６の区間および第７の区間は、その一部、すなわち２４５度〜２５０度が重複する。このように第６の区間および第７の区間が重複する区間に探索方向が該当する場合、選択中のエッジ点から右下方向へ向かっての画素の探索、並びに、選択中のエッジ点から下方向へ向かっての画素の探索の２方向の探索を併せて実行する。さらに、探索方向が２９０度〜３４０度の第８の区間に該当する場合、選択中のエッジ点から左下方向へ向かって画素が探索される。これら第７の区間および第８の区間は、その一部、すなわち２９０度〜２９５度が重複する。このように第７の区間および第８の区間が重複する区間に探索方向が該当する場合、選択中のエッジ点から下方向へ向かっての画素の探索、並びに、選択中のエッジ点から左方向へ向かっての画素の探索の２方向の探索を併せて実行する。加えて、第１の区間および第８の区間は、その一部、すなわち３３５度〜３４０度が重複する。このように第１の区間および第８の区間が重複する区間に探索方向が該当する場合、選択中のエッジ点から左方向へ向かっての画素の探索、並びに、選択中のエッジ点から左下方向へ向かっての画素の探索の２方向の探索を併せて実行する。
【００５１】
直線判定部１５ｆは、エッジ点から探索方向へ向かって画素が探索された探索エリアが直線であるか否かを判定する処理部である。
【００５２】
一実施形態として、直線判定部１５ｆは、探索部１５ｅにより画素が探索される度に、選択中のエッジ点におけるエッジ方向と、探索部１５ｅにより探索された画素におけるエッジ方向とが類似するか否かを判定する。例えば、直線判定部１５ｆは、選択中のエッジ点におけるエッジ方向と、探索部１５ｅにより探索された画素におけるエッジ方向との差の二乗値が所定の閾値Ｔｈ２、例えば「２０」未満であるか否かを判定する。なお、ここでは、エッジ方向の差の二乗値を用いる例を示したが、エッジ方向に関する他の値、例えばエッジ方向の差の絶対値などを代わりに用いることもできる。
【００５３】
ここで、両者のエッジ方向の差の二乗値が閾値Ｔｈ２未満である場合、直線判定部１５ｆは、選択中のエッジ点との間でエッジ方向が類似する画素が探索方向に連続する個数を１つインクリメントする。以下では、選択中のエッジ点との間でエッジ方向が類似する画素が探索方向に連続する個数のことを「連続数」と記載する場合がある。この連続数は、一例として、直線判定部１５ｆが参照することができるレジスタ等に保持することができる。このように連続数が更新される場合、探索部１５ｅによる探索が継続される。
【００５４】
一方、両者のエッジ方向の差の二乗値が閾値Ｔｈ２以上である場合、選択中のエッジ点との間でエッジ方向が類似する画素が今回に探索された画素で途切れる。この場合、直線判定部１５ｆは、レジスタ等に保持された連続数が所定の閾値Ｔｈ３以上であるか否かを判定する。例えば、ランサムウェア感染の検知精度を高める側面から、閾値Ｔｈ３には、ランサムウェアへの感染時に表示されるウィンドウに含まれる部品のフレーム等を形成する線画として出現する最小のサイズよりも大きいサイズを採用することができる。また、直線の誤判定を抑制する側面から、閾値Ｔｈ３には、文字列等を直線と誤判定するのを避ける観点から、１文字の幅または高さのサイズよりも大きい画素数を採用することができる。
【００５５】
このとき、レジスタに保持された連続数が閾値Ｔｈ３未満である場合、ランサムウェアへの感染時に表示されるウィンドウに含まれる部品の輪郭等に対応する可能性が低く、さらに、文字列等に対応する余地が残ることがわかる。この場合、上記の探索エリアは、直線と判定されない。一方、レジスタに保持された連続数が閾値Ｔｈ３以上である場合、ランサムウェアへの感染時に表示されるウィンドウに含まれる部品の輪郭等に対応する可能性が高まり、さらに、文字列等に対応する可能性が低まることがわかる。この場合、直線判定部１５ｆは、上記の探索エリアを直線と判定する。
【００５６】
このような探索方向への画素の探索および直線の判定は、分布情報１３ａに含まれる全てのエッジ点が選択されるまで繰り返し実行される。
【００５７】
図６は、デスクトップ画面の一例を示す図である。図６には、一例として、デスクトップ画面５００がキャプチャされた画像が示されている。図６に示すように、デスクトップ画面５００には、フレーム５１０が含まれると共に、フレーム５１０内には、文字列「あいうえお」が含まれる。このようなデスクトップ画面５００から上記の構造判定によってランサムウェア感染を検知する場合、ウィンドウ内に含まれる部品の外形形状やウィンドウ内で部品が配置される位置や大きさなどの特徴が直線やその組合せを要素として抽出される。このため、ランサムウェア感染の検知には、フレーム５１０の輪郭を形成する直線５１０Ａ〜５１０Ｄが有用である。その一方で、フレーム５１０に含まれる文字列「あいうえお」やその一部が直線として誤検出されると、ランサムウェア感染の検知への阻害要因となることがある。それ故、直線５１０Ａ〜５１０Ｄが直線として検出される一方で、文字列「あいうえお」やその一部を直線として誤検出されない直線判定の実現が上記の構造判定の精度を高めるアプローチとなる。
【００５８】
図７は、画素値の一例を示す模式図である。図７には、図６に示すデスクトップ画面５００で文字「お」の一部を含む領域５２０が画素のレベルにまで拡大された状態でピックアップされると共に、各画素に当該画素が有する画素値が模式的に示されている。図７に示すように、領域５２０に含まれる画素のうち文字「お」の要素に対応する画素は、黒に対応する画素値「２５５」を有する一方で、それ以外の部分の画素は、背景、この場合は白に対応する画素値「０」を有する。このような領域５２０の上から５つ目の行は、文字「お」の要素が直線に類似する形状を持ち、画素値「２５５」の画素が６つ集中すると共にそこから得られるエッジ方向も類似している。このため、上記の背景技術に記載の画像処理装置では、文字「お」の一部の要素を直線と誤検出するおそれがある。これとは対照的に、本実施例では、探索方向への画素の探索、エッジ方向の類似性の判定および類似エッジ方向の連続数の判定などによって上記の誤検出を抑制することができる。
【００５９】
図８Ａ及び図８Ｂは、エッジ量およびエッジ方向の一例を示す模式図である。図８Ａ及び図８Ｂには、図７に示す領域５２０の各画素が有する画素値から算出されたエッジ量が画素ごとに示されている。さらに、エッジ量が閾値Ｔｈ１「１８０」以上であるエッジ点に対応する画素には、水平および垂直のエッジ成分から算出されたエッジ方向が括弧書きで示されている。言い換えれば、括弧書きでエッジ方向の値の記入がない画素はエッジ方向には対応しない。
【００６０】
図８Ａに示すように、エッジ点のうち上から４行目および左から３列目のエッジ点、図中の反転表示が選択された場合、当該エッジ点におけるエッジ方向は「２７０度」であるので、探索方向は「１８０度」および「３６０度」となる。このため、図８Ａにハッチングで示す通り、図５に示す探索方向の決定方法にしたがって選択中のエッジ点から左方向および右方向へ画素が探索される。このうち、選択中のエッジ点から左方向へ探索された場合、選択中のエッジ点と、上から４行目および左から２列目の画素との間でエッジ方向が類似しているか否かが判定される。この場合、エッジ方向の差の二乗値は、（２７０−２４０）２の計算により「９００」と求まる。これは、閾値Ｔｈ２を上回るので、左方向への探索は１つ目の画素で終了する。一方、選択中のエッジ点から右方向へ探索された場合、選択中のエッジ点と、上から４行目および左から４列目の画素との間でエッジ方向が類似しているか否かが判定される。この場合、エッジ方向の差の二乗値は、（２７０−３００）２の計算により「９００」と求まる。これも、閾値Ｔｈ２を上回るので、右方向への探索も１つ目の画素で終了する。このため、連続数は初期値である「１」から変化がなく、閾値Ｔｈ３、例えば「７」未満となるので、直線とは判定されない。
【００６１】
図８Ｂに示すように、エッジ点のうち上から４行目および左から４列目のエッジ点、図中の反転表示が選択された場合、当該エッジ点におけるエッジ方向は「３００度」であるので、探索方向は「２２０度」および「３０度（＝３９０度）」となる。このため、図８Ｂにハッチングで示す通り、図５に示す探索方向の決定方法にしたがって選択中のエッジ点から左上方向および右下方向へ画素が探索される。このうち、選択中のエッジ点から左上方向へ探索された場合、１つ目の探索画素に対応する上から３行目および左から３列目の画素は、そもそもエッジ点でないので、左上方向への探索は１つ目の画素で終了する。一方、選択中のエッジ点から右下方向へ探索された場合にも、１つ目の探索画素に対応する上から５行目および左から５列目の画素は、そもそもエッジ点でないので、右方向への探索も１つ目の画素で終了する。このため、連続数は初期値である「１」から変化がなく、閾値Ｔｈ３、例えば「７」未満となるので、直線とは判定されない。
【００６２】
ここでは、一例として、エッジ点のうち上から４行目および左から３列目のエッジ点、および、上から４行目および左から４列目のエッジ点が選択される場合を抜粋して説明したが、領域５２０においてこれ以外の他のエッジ点が選択された場合にも、類似エッジ方向の連続数の判定で閾値Ｔｈ３以上の連続数となる条件を満たさないので、直線は検出されない。それ故、文字「お」の一部の要素を直線と誤検出するのを抑制できる。さらに、領域５２０の画素のうちエッジ点に絞って探索が実行されると共に、エッジ点におけるエッジ方向と交差する方向に探索方向が絞り込まれるので、探索回数も削減できる。
【００６３】
図９は、画素値の一例を示す模式図である。図６には、図６に示すデスクトップ画面５００でフレーム５１０を形成する直線５１０Ｃの一部を含む領域５３０が画素のレベルにまで拡大された状態でピックアップされると共に、各画素に当該画素が有する画素値が模式的に示されている。図９に示すように、領域５３０に含まれる画素のうち直線５１０Ｃに対応する画素は、黒に対応する画素値「２５５」を有する一方で、それ以外の部分の画素は、背景、この場合は白に対応する画素値「０」を有する。このようにウィンドウ内に含まれる部品の外形形状やウィンドウ内で部品が配置される位置や大きさなどの特徴が現れる直線５１０Ｃはランサムウェア感染の検知に有用であるので、検出漏れを抑制するのが好ましい。
【００６４】
図１０Ａ及び図１０Ｂは、エッジ量およびエッジ方向の一例を示す模式図である。図１０Ａ及び図１０Ｂには、図９に示す領域５３０の各画素が有する画素値から算出されたエッジ量が画素ごとに示されている。さらに、エッジ量が閾値Ｔｈ１「１８０」以上であるエッジ点に対応する画素には、水平および垂直のエッジ成分から算出されたエッジ方向が括弧書きで示されている。言い換えれば、括弧書きでエッジ方向の値の記入がない画素はエッジ方向には対応しない。
【００６５】
図１０Ａに示すように、エッジ点のうち上から２行目および左から１列目のエッジ点、図中の反転表示が選択された場合、当該エッジ点におけるエッジ方向は「２７０度」であるので、探索方向は「１８０度」および「３６０度」となる。このため、図１０Ａにハッチングで示す通り、図５に示す探索方向の決定方法にしたがって選択中のエッジ点から左方向および右方向へ画素が探索される。このうち、選択中のエッジ点から右方向へ探索された場合、選択中のエッジ点と、上から２行目および左から２列目の画素との間でエッジ方向が類似しているか否かが判定される。この場合、エッジ方向の差の二乗値は、（２７０−２７０）２の計算により「０」と求まる。これは、閾値Ｔｈ２未満であるので、連続数がインクリメントされると共に、右方向への探索は継続される。上から２行目の他の列、すなわち３列目〜８列目においても同様に、エッジ方向の差の二乗値は、同値、すなわち「０」であり、閾値Ｔｈ２未満であるので、連続数がインクリメントされると共に、右方向への探索は継続される。この右方向の探索は、図示は省略するが、直線５１０Ｃの右端まで継続される。一方、選択中のエッジ点から左方向へ探索された場合、選択中のエッジ点と、図中に点線で示したエッジ点の左側に隣接する画素との間でエッジ方向が類似しているか否かが判定される。この場合、エッジ方向の差の二乗値は、（２７０−２７０）２の計算により「０」と求まる。これは、閾値Ｔｈ２以下であるので、連続数がインクリメントされると共に、左方向への探索は継続される。この左方向の探索も図示は省略するが、直線５１０Ｃの左端まで継続される。このように左方向および右方向へと探索された結果、連続数は、閾値Ｔｈ３、例えば「７」以上となるので、図１０Ａにハッチングで示す画素の列を含む直線５１０Ｃの上側が直線と判定される。
【００６６】
図１０Ｂに示すように、エッジ点のうち上から４行目および左から１列目のエッジ点、図中の反転表示が選択された場合、当該エッジ点におけるエッジ方向は「９０度」であるので、探索方向は「０度」および「１８０度」となる。このため、図１０Ｂにハッチングで示す通り、図５に示す探索方向の決定方法にしたがって選択中のエッジ点から左方向および右方向へ画素が探索される。このうち、選択中のエッジ点から右方向へ探索された場合、選択中のエッジ点と、上から４行目および左から２列目の画素との間でエッジ方向が類似しているか否かが判定される。この場合、エッジ方向の差の二乗値は、（９０−９０）２の計算により「０」と求まる。これは、閾値Ｔｈ２未満であるので、連続数がインクリメントされると共に、右方向への探索は継続される。上から４行目の他の列、すなわち３列目〜８列目においても同様に、エッジ方向の差の二乗値は、同値、すなわち「０」であり、閾値Ｔｈ２未満であるので、連続数がインクリメントされると共に、右方向への探索は継続される。この右方向の探索は、図示は省略するが、直線５１０Ｃの右端まで継続される。一方、選択中のエッジ点から左方向へ探索された場合、選択中のエッジ点と、図中に点線で示したエッジ点の左側に隣接する画素との間でエッジ方向が類似しているか否かが判定される。この場合、エッジ方向の差の二乗値は、（９０−９０）２の計算により「０」と求まる。これは、閾値Ｔｈ２以下であるので、連続数がインクリメントされると共に、左方向への探索は継続される。この左方向の探索も図示は省略するが、直線５１０Ｃの左端まで継続される。このように左方向および右方向へと探索された結果、連続数は、閾値Ｔｈ３、例えば「７」以上となるので、図１０Ｂにハッチングで示す画素の列を含む直線５１０Ｃの下側が直線と判定される。
【００６７】
このように、文字「お」の一部の要素を直線と誤検出するのを抑制できると共に、ウィンドウ内に含まれる部品の外形形状やウィンドウ内で部品が配置される位置や大きさなどの特徴が現れる直線５１０Ｃの検出漏れを抑制できる。この結果、本実施例では、直線判定の精度を向上させることができる。さらに、領域５２０および領域５３０の画素のうちエッジ点に絞って探索が実行されると共に、エッジ点におけるエッジ方向と交差する方向に探索方向が絞り込まれるので、探索回数も削減できる。
【００６８】
図２の説明に戻り、ランサムウェア判定部１５ｇは、情報処理装置１０のランサムウェアへの感染を判定する処理部である。
【００６９】
一実施形態として、ランサムウェア判定部１５ｇは、デスクトップ画面がキャプチャされた画像データに構造判定および単語判定の２つの判定を行うことにより、情報処理装置１０がランサムウェアに感染中であるか否かを判定する。
【００７０】
より詳細には、ランサムウェア判定部１５ｇは、デスクトップ画面の直線検出結果から直線またはその組合せを要素とする画面の構造モデルを作成する。図１１は、構造モデルの抽出例を示す図である。図１１に示すように、ランサムウェア判定部１５ｇは、直線判定部１５ｆによりデスクトップ画面６００の画像データから判定された直線の検出結果から、ウィンドウ内に含まれる部品の外形形状やウィンドウ内で部品が配置される位置や大きさなどの特徴が現れる直線またはその組合せを要素とする画面の構造モデル７００を作成する。例えば、ランサムウェア判定部１５ｇは、直線判定部１５ｆにより検出された直線を、左右方向の線、上下方向の線、矩形を形成する上下左右の４辺の計６パターンの要素に分類された分類結果を構造モデルとして作成する。
【００７１】
このようにデスクトップ画面から作成された構造モデルは、ランサムウェア判定部１５ｇによってランサムウェアの構造モデルと比較される。このランサムウェアの構造モデルは、あらかじめランサムウェア情報１３ｂの一部として記憶部１３に登録される。例えば、記憶部１３には、ランサムウェアの種類ごとに当該種類のランサムウェアに感染された場合に表示されるウィンドウから作成された画面の構造モデルがランサムウェア情報１３ｂとして登録される。
【００７２】
例えば、ランサムウェア判定部１５ｇは、デスクトップ画面から作成された構造モデルと、ランサムウェアの構造モデルとの間で類似度をランサムウェアの種類ごとに算出する。より具体的には、ランサムウェア判定部１５ｇは、ランサムウェアの構造モデルに含まれる要素ごとに、当該要素と同一の分類に属する要素をデスクトップ画面の構造モデルから検索する。そして、ランサムウェア判定部１５ｇは、検索結果として、ランサムウェアの構造モデルの要素との距離が近い位置にデスクトップ画面の構造モデルの要素が得られるほど高いスコアを算出する。これと共に、ランサムウェア判定部１５ｇは、検索結果として、ランサムウェアの構造モデルの要素のサイズ、例えば長さと近いデスクトップ画面の構造モデルの要素が得られるほど高いスコアを算出する。その後、ランサムウェア判定部１５ｇは、要素ごとに算出されるスコアに統計処理、例えば合計、平均や重み付けなどを実行することにより、デスクトップ画面から作成された構造モデルとランサムウェアの構造モデルとの間の総合の類似度を算出する。
【００７３】
ここで、ランサムウェアの構造モデルとの間で所定値以上の類似度が算出された場合、ランサムウェア判定部１５ｇは、上記の単語判定を実行する。すなわち、ランサムウェア判定部１５ｇは、デスクトップ画面の画像データにＯＣＲ（Optical  Character  Reader）等の文字認識処理を実行する。その上で、ランサムウェア判定部１５ｇは、デスクトップ画面の文字認識結果として得られた単語の中に、ランサムウェア感染中に表示される画面に頻出する単語が含まれるか否かを判定する。この頻出単語は、一例として、あらかじめランサムウェア情報１３ｂの一部として記憶部１３に登録しておくことができる。例えば、ランサムウェア感染時に表示される警告画面に記載されている文章から一般的なサイトで出現しにくい単語をｔｆ−ｉｄｆ法などで評価した上で上位所定数、例えば２０個の単語を抽出することにより、頻出単語、例えば暗号化、復元、回復などを取得することができる。
【００７４】
そして、デスクトップ画面の文字認識結果として得られた単語の中にランサムウェア感染中に表示される画面の頻出単語が含まれる場合、ランサムウェアに感染中のリスクがあると判断できる。この場合、ランサムウェア判定部１５ｇは、所定のアラートを管理者端末３０へ出力する。例えば、ランサムウェア判定部１５ｇは、当該監視プログラムが動作する情報処理装置１０の識別情報と共にランサムウェアへの感染が検知されたデスクトップ画面の画像データをアラートとして管理者端末３０へ出力したり、ランサムウェアへの感染を通知する画像や音声のメッセージを管理者端末３０へ出力したりすることができる。
【００７５】
［処理の流れ］
図１２は、実施例１に係るランサムウェア検知処理の手順を示すフローチャートである。この処理は、一例として、取得部１５ａによりデスクトップ画面の画像データが取得される度に繰り返し実行される。
【００７６】
図１２に示すように、デスクトップ画面の画像データが取得されると（ステップＳ１０１）、エッジ点検出部１５ｂ、エッジ方向算出部１５ｃ、生成部１５ｄ、探索部１５ｅおよび直線判定部１５ｆにより、ステップＳ１０１で取得されたデスクトップ画面の画像データから直線を判定する「直線判定処理」が実行される（ステップＳ１０２）。なお、上記の「直線判定処理」は、図１２を用いて後述することとする。
【００７７】
その後、ランサムウェア判定部１５ｇは、ステップＳ１０２におけるデスクトップ画面の直線検出結果から直線またはその組合せを要素とする画面の構造モデルを作成する（ステップＳ１０３）。続いて、ランサムウェア判定部１５ｇは、デスクトップ画面から作成された構造モデルと、ランサムウェアの構造モデルとを比較することにより、両者の類似度をランサムウェアの種類ごとに算出する（ステップＳ１０４）。
【００７８】
そして、ランサムウェアの構造モデルとの間で所定値以上の類似度が算出された場合（ステップＳ１０５Ｙｅｓ）、ランサムウェア判定部１５ｇは、ステップＳ１０１で取得されたデスクトップ画面の画像データにＯＣＲ等の文字認識処理を実行する（ステップＳ１０６）。
【００７９】
その上で、ランサムウェア判定部１５ｇは、ステップＳ１０６でデスクトップ画面の文字認識結果として得られた単語の中に、ランサムウェア感染中に表示される画面に頻出する単語が含まれるか否かを判定する（ステップＳ１０７）。
【００８０】
ここで、デスクトップ画面の文字認識結果として得られた単語の中にランサムウェア感染中に表示される画面の頻出単語が含まれる場合（ステップＳ１０８Ｙｅｓ）、ランサムウェアに感染中のリスクがあると判断できる。この場合、ランサムウェア判定部１５ｇは、所定のアラートを管理者端末３０へ出力し（ステップＳ１０９）、処理を終了する。
【００８１】
なお、ランサムウェアの構造モデルとの間で所定値以上の類似度が算出されない場合、あるいはデスクトップ画面の文字認識結果として得られた単語の中にランサムウェア感染中に表示される画面の頻出単語が含まれない場合（ステップＳ１０５ＮｏまたはステップＳ１０８Ｎｏ）、アラートを管理者端末３０へ出力せずにそのまま処理を終了する。
【００８２】
図１３は、実施例１に係る直線判定処理の手順を示すフローチャートである。この処理は、図１２に示すステップＳ１０２の処理に対応する。図１３に示すように、エッジ点検出部１５ｂは、ステップＳ１０１で取得されたデスクトップ画面の画像データをビットマップ形式のカラー画像からグレースケール画像へ変換する（ステップＳ３０１）。続いて、エッジ点検出部１５ｂは、グレースケールに変換後の画像データに含まれる画素のうち画素を１つ選択する（ステップＳ３０２）。
【００８３】
そして、エッジ点検出部１５ｂは、ステップＳ３０２で選択された画素の周囲に位置する画素の画素値に基づいて、選択中の画素のエッジ成分を横方向および縦方向ごとに算出する（ステップＳ３０３）。その後、エッジ点検出部１５ｂは、ステップＳ３０３で算出された横方向のエッジ成分および縦方向のエッジ成分から選択中の画素のエッジ量を算出する（ステップＳ３０４）。
【００８４】
続いて、エッジ点検出部１５ｂは、選択中の画素のエッジ量が所定の閾値Ｔｈ１以上であるか否かを判定する（ステップＳ３０５）。このとき、選択中の画素のエッジ量が閾値Ｔｈ１以上である場合（ステップＳ３０５Ｙｅｓ）、当該選択中の画素が「エッジ点」として検出される。この場合、エッジ方向算出部１５ｃは、選択中の画素における横方向のエッジ成分および縦方向のエッジ成分から当該選択中の画素のエッジ方向をさらに算出する（ステップＳ３０６）。なお、選択中の画素のエッジ量が閾値Ｔｈ１以上でない場合（ステップＳ３０５Ｎｏ）、ステップＳ３０６の処理をスキップすることができる。
【００８５】
その後、デスクトップ画面の画像データに含まれる全ての画素が選択されるまで（ステップＳ３０７Ｎｏ）、上記のステップＳ３０２から上記のステップＳ３０６までの処理を繰り返し実行する。これによって、エッジ点の画素ごとに当該画素におけるエッジ方向が対応付けられた分布情報１３ａが生成される。
【００８６】
そして、デスクトップ画面の画像データに含まれる全ての画素が選択された場合（ステップＳ３０７Ｙｅｓ）、探索部１５ｅは、記憶部１３に記憶された分布情報１３ａに含まれるエッジ点の中からエッジ点を１つ選択する（ステップＳ３０８）。
【００８７】
続いて、探索部１５ｅは、選択中のエッジ点におけるエッジ方向θから当該エッジ方向θと直交する方向、すなわちθ±９０度を探索方向として算出する（ステップＳ３０９）。その上で、探索部１５ｅは、選択中のエッジ点を探索の開始地点とし、そこから探索方向に存在する画素を選択中のエッジ点から近い位置の画素から順に探索する（ステップＳ３１０）。そして、直線判定部１５ｆは、選択中のエッジ点におけるエッジ方向と、ステップＳ３１０で探索された画素におけるエッジ方向とが類似するか否かを判定する（ステップＳ３１１）。
【００８８】
このとき、両者のエッジ方向が類似する場合（ステップＳ３１１Ｙｅｓ）、選択中のエッジ点とエッジ方向が類似する画素が探索方向に連続する連続数が１つインクリメントされた後、上記のステップＳ３１０の画素の探索が改めて実行される。
【００８９】
また、両者のエッジ方向が類似しない場合（ステップＳ３１１Ｎｏ）、選択中のエッジ点との間でエッジ方向が類似する画素が今回に探索された画素で途切れる。この場合、直線判定部１５ｆは、レジスタ等に保持された連続数が所定の閾値Ｔｈ３以上であるか否かを判定する（ステップＳ３１２）。
【００９０】
ここで、レジスタに保持された連続数が閾値Ｔｈ３以上である場合（ステップＳ３１２Ｙｅｓ）、ランサムウェアへの感染時に表示されるウィンドウに含まれる部品の輪郭等に対応する可能性が高まり、さらに、文字列等に対応する可能性が低まることがわかる。この場合、直線判定部１５ｆは、上記の探索エリアを直線と判定する（ステップＳ３１３）。なお、レジスタに保持された連続数が閾値Ｔｈ３以上でない場合（ステップＳ３１２Ｎｏ）、上記のステップＳ３１３の処理はスキップされる。
【００９１】
その後、分布情報１３ａに含まれる全てのエッジ点が選択されるまで（ステップＳ３１４Ｎｏ）、上記のステップＳ３０８から上記のステップＳ３１３までの処理が繰り返し実行される。そして、分布情報１３ａに含まれる全てのエッジ点が選択されると（ステップＳ３１４Ｙｅｓ）、処理を終了する。
【００９２】
なお、図１３には、全ての画素を選択してエッジ点が検出された後にエッジ点を選択して画素探索や直線判定を実行する場合を例示したが、エッジ点が検出される度に画素探索や直線判定を実行することとしてもよい。この場合、必ずしもラスタスキャン等の順序通りにエッジ点の検出が実行されない場合があるが、探索時に探索画素に関するエッジ点の検出を行うこととすればよい。
【００９３】
［実施例１の効果の一側面］
上述してきたように、本実施例に係る情報処理装置１０は、デスクトップ画面等の画像データに含まれる画素ごとに当該画素の周辺の画素から画素値が変化する方向を求め、方向の類似度が基準を満たす複数の画素の連続性に基づいて要素が直線か否か判定する。したがって、本実施例に係る情報処理装置１０によれば、画像に含まれる直線判定の精度を高めることが可能になる。
【実施例２】
【００９４】
さて、これまで開示の装置に関する実施例について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下では、本発明に含まれる他の実施例を説明する。
【００９５】
［クライアントサーバシステム］
上記の実施例１では、図１２や図１３に示す処理が情報処理装置１０で実行される場合を例示したが、図１２や図１３に示す処理は、複数の情報処理装置１０が接続されるサーバ装置等のコンピュータで実行されることとしてもかまわない。この場合、サーバ装置は、デスクトップ画面の画像データを情報処理装置１０ごとに取得し、図１２や図１３に示す処理を情報処理装置１０ごとに並列して実行することができる。この他、シンクライアント端末の仮想マシンが物理マシン上で実行される場合にも、仮想マシンごとに図１２や図１３に示す処理を並列して実行することができる。
【００９６】
［ユースケース］
上記の実施例１では、直線判定のユースケースのあくまで一例として、ランサムウェア感染を検知するために直線検出が実行される場合を例示したが、他のユースケースで直線検出が実行される場合にも、図１２や図１３に示す処理を適用することができる。
【００９７】
［分散および統合］
また、図示した各装置の各構成要素は、必ずしも物理的に図示の如く構成されておらずともよい。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、取得部１５ａ、エッジ点検出部１５ｂ、エッジ方向算出部１５ｃ、生成部１５ｄ、探索部１５ｅ、直線判定部１５ｆまたはランサムウェア判定部１５ｇを情報処理装置１０の外部装置としてネットワーク経由で接続するようにしてもよい。また、取得部１５ａ、エッジ点検出部１５ｂ、エッジ方向算出部１５ｃ、生成部１５ｄ、探索部１５ｅ、直線判定部１５ｆまたはランサムウェア判定部１５ｇを別の装置がそれぞれ有し、ネットワーク接続されて協働することで、上記の情報処理装置１０の機能を実現するようにしてもよい。
【００９８】
［判定プログラム］
また、上記の実施例で説明した各種の処理は、予め用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータで実行することによって実現することができる。そこで、以下では、図１４を用いて、上記の実施例と同様の機能を有する判定プログラムを実行するコンピュータの一例について説明する。
【００９９】
図１４は、実施例１及び実施例２に係る判定プログラムを実行するコンピュータのハードウェア構成例を示す図である。図１４に示すように、コンピュータ１００は、操作部１１０ａと、スピーカ１１０ｂと、カメラ１１０ｃと、ディスプレイ１２０と、通信部１３０とを有する。さらに、このコンピュータ１００は、ＣＰＵ１５０と、ＲＯＭ１６０と、ＨＤＤ１７０と、ＲＡＭ１８０とを有する。これら１１０〜１８０の各部はバス１４０を介して接続される。
【０１００】
ＨＤＤ１７０には、図１４に示すように、上記の実施例１で示した取得部１５ａ、エッジ点検出部１５ｂ、エッジ方向算出部１５ｃ、生成部１５ｄ、探索部１５ｅ、直線判定部１５ｆ及びランサムウェア判定部１５ｇと同様の機能を発揮する判定プログラム１７０ａが記憶される。この判定プログラム１７０ａは、図２に示した取得部１５ａ、エッジ点検出部１５ｂ、エッジ方向算出部１５ｃ、生成部１５ｄ、探索部１５ｅ、直線判定部１５ｆ及びランサムウェア判定部１５ｇの各構成要素と同様、統合又は分離してもかまわない。すなわち、ＨＤＤ１７０には、必ずしも上記の実施例１で示した全てのデータが格納されずともよく、処理に用いるデータがＨＤＤ１７０に格納されればよい。
【０１０１】
このような環境の下、ＣＰＵ１５０は、ＨＤＤ１７０から判定プログラム１７０ａを読み出した上でＲＡＭ１８０へ展開する。この結果、判定プログラム１７０ａは、図１４に示すように、判定プロセス１８０ａとして機能する。この判定プロセス１８０ａは、ＲＡＭ１８０が有する記憶領域のうち判定プロセス１８０ａに割り当てられた領域にＨＤＤ１７０から読み出した各種データを展開し、この展開した各種データを用いて各種の処理を実行する。例えば、判定プロセス１８０ａが実行する処理の一例として、図１２や図１３に示す処理などが含まれる。なお、ＣＰＵ１５０では、必ずしも上記の実施例１で示した全ての処理部が動作せずともよく、実行対象とする処理に対応する処理部が仮想的に実現されればよい。
【０１０２】
なお、上記の判定プログラム１７０ａは、必ずしも最初からＨＤＤ１７０やＲＯＭ１６０に記憶されておらずともかまわない。例えば、コンピュータ１００に挿入されるフレキシブルディスク、いわゆるＦＤ、ＣＤ−ＲＯＭ、ＤＶＤディスク、光磁気ディスク、ＩＣカードなどの「可搬用の物理媒体」に判定プログラム１７０ａを記憶させる。そして、コンピュータ１００がこれらの可搬用の物理媒体から判定プログラム１７０ａを取得して実行するようにしてもよい。また、公衆回線、インターネット、ＬＡＮ、ＷＡＮなどを介してコンピュータ１００に接続される他のコンピュータまたはサーバ装置などに判定プログラム１７０ａを記憶させておき、コンピュータ１００がこれらから判定プログラム１７０ａを取得して実行するようにしてもよい。
【０１０３】
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
【０１０４】
（付記１）画像データを取得し、
取得した前記画像データに含まれる複数の画素それぞれの周囲に位置する画素に対応付けられた画素値に基づき、前記複数の画素それぞれに応じた領域内での画素値の変化の方向を、前記複数の画素それぞれに対応付ける分布情報を生成し、
生成した前記分布情報に基づき、前記複数の画素のうち、対応付けられた方向の類似度が基準を満たす複数の画素の連続性に基づき、該複数の画素に対応する位置に直線が存在するか否かの判定を行う、
処理をコンピュータに実行させることを特徴とする判定プログラム。
【０１０５】
（付記２）前記判定を行う処理は、対応付けられた方向の類似度が基準を満たし、かつ前記画素値の変化の方向と交差する方向に位置する、前記複数の画素の連続性に基づき、該複数の画素に対応する位置に直線が存在するか否かの判定を行う、ことを特徴とする付記１に記載の判定プログラム。
【０１０６】
（付記３）前記判定を行う処理は、対応付けられた方向の類似度が基準を満たし、かつ前記画素値の変化の方向と直交する方向に位置する、前記複数の画素の連続性に基づき、該複数の画素に対応する位置に直線が存在するか否かの判定を行う、ことを特徴とする付記２に記載の判定プログラム。
【０１０７】
（付記４）前記複数の画素それぞれに応じた領域内での画素値の変化の方向は、前記画像データに含まれる複数の画素それぞれの周囲に位置する画素に対応付けられた画素値を用いて水平および垂直の方向ごとに算出されたエッジ成分に基づいて算出される、ことを特徴とする付記１、２または３に記載の判定プログラム。
【０１０８】
（付記５）画像データを取得し、
取得した前記画像データに含まれる複数の画素それぞれの周囲に位置する画素に対応付けられた画素値に基づき、前記複数の画素それぞれに応じた領域内での画素値の変化の方向を、前記複数の画素それぞれに対応付ける分布情報を生成し、
生成した前記分布情報に基づき、前記複数の画素のうち、対応付けられた方向の類似度が基準を満たす複数の画素の連続性に基づき、該複数の画素に対応する位置に直線が存在するか否かの判定を行う、
処理をコンピュータが実行することを特徴とする判定方法。
【０１０９】
（付記６）前記判定を行う処理は、対応付けられた方向の類似度が基準を満たし、かつ前記画素値の変化の方向と交差する方向に位置する、前記複数の画素の連続性に基づき、該複数の画素に対応する位置に直線が存在するか否かの判定を行う、ことを特徴とする付記５に記載の判定方法。
【０１１０】
（付記７）前記判定を行う処理は、対応付けられた方向の類似度が基準を満たし、かつ前記画素値の変化の方向と直交する方向に位置する、前記複数の画素の連続性に基づき、該複数の画素に対応する位置に直線が存在するか否かの判定を行う、ことを特徴とする付記６に記載の判定方法。
【０１１１】
（付記８）前記複数の画素それぞれに応じた領域内での画素値の変化の方向は、前記画像データに含まれる複数の画素それぞれの周囲に位置する画素に対応付けられた画素値を用いて水平および垂直の方向ごとに算出されたエッジ成分に基づいて算出される、ことを特徴とする付記５、６または７に記載の判定方法。
【０１１２】
（付記９）画像データを取得する取得部と、
取得した前記画像データに含まれる複数の画素それぞれの周囲に位置する画素に対応付けられた画素値に基づき、前記複数の画素それぞれに応じた領域内での画素値の変化の方向を、前記複数の画素それぞれに対応付ける分布情報を生成する生成部と、
生成した前記分布情報に基づき、前記複数の画素のうち、対応付けられた方向の類似度が基準を満たす複数の画素の連続性に基づき、該複数の画素に対応する位置に直線が存在するか否かの判定を行う判定部と、
を有することを特徴とする情報処理装置。
【０１１３】
（付記１０）前記判定部は、対応付けられた方向の類似度が基準を満たし、かつ前記画素値の変化の方向と交差する方向に位置する、前記複数の画素の連続性に基づき、該複数の画素に対応する位置に直線が存在するか否かの判定を行う、ことを特徴とする付記９に記載の情報処理装置。
【０１１４】
（付記１１）前記判定部は、対応付けられた方向の類似度が基準を満たし、かつ前記画素値の変化の方向と直交する方向に位置する、前記複数の画素の連続性に基づき、該複数の画素に対応する位置に直線が存在するか否かの判定を行う、ことを特徴とする付記１０に記載の情報処理装置。
【０１１５】
（付記１２）前記複数の画素それぞれに応じた領域内での画素値の変化の方向は、前記画像データに含まれる複数の画素それぞれの周囲に位置する画素に対応付けられた画素値を用いて水平および垂直の方向ごとに算出されたエッジ成分に基づいて算出される、ことを特徴とする付記９、１０または１１に記載の情報処理装置。
【符号の説明】
【０１１６】
１    システム
１０    情報処理装置
１１    通信Ｉ／Ｆ部
１３    記憶部
１３ａ  分布情報
１３ｂ  ランサムウェア情報
１５    制御部
１５ａ  取得部
１５ｂ  エッジ点検出部
１５ｃ  エッジ方向算出部
１５ｄ  生成部
１５ｅ  探索部
１５ｆ  直線判定部
１５ｇ  ランサムウェア判定部
３０    管理者端末
【図１】
2019106012.tif 000003
【図２】
2019106012.tif 000004
【図３】
2019106012.tif 000005
【図４】
2019106012.tif 000006
【図５】
2019106012.tif 000007
【図６】
2019106012.tif 000008
【図７】
2019106012.tif 000009
【図８Ａ】
2019106012.tif 000010
【図８Ｂ】
2019106012.tif 000011
【図９】
2019106012.tif 000012
【図１０Ａ】
2019106012.tif 000013
【図１０Ｂ】
2019106012.tif 000014
【図１１】
2019106012.tif 000015
【図１２】
2019106012.tif 000016
【図１３】
2019106012.tif 000017
【図１４】
2019106012.tif 000018