
画像認識アルゴリズムについて
指定画像と同じ画像を、画面に表示されている画像から探すプログラムを趣味で開発しています。
画像を探しだすことには成功しているのですが、どうも処理スピードが遅いように感じます。
アドバイスください。
【処理の詳細】
(1)指定画像を読み込み(LOCKBITSを使用し、一次配列で色情報を取得)
(2)画面画像を読み込み(LOCKBITSを使用し、一次配列で色情報を取得)
※一次配列には、ARGB値が格納されております。なので、10*10の画像を読み込んだ場合、
配列に格納される情報は、400個になります。(A、R、G、B)*100ピクセル
(3)それぞれの配列情報を、FOR文で回し全件検索を行い、完全に一致した場合、完全一致した位置を記憶
というような流れになっています。
(3)の検索アルゴリズムに問題があると思っています。
1ピクセルずつ一致させるので、比較量が半端ないのです。
if bmp(1).equals(search(1)) andalso _
bmp(2).equals(search(2)) andalso _
bmp(3).equals(search(3)) then
次のピクセルへ
endif
このような感じで、全ての一致するか調べています。
なにか高速で処理するための知恵をお貸しください。
基本的にVB.NETは変更したくありません。
よろしくお願いします。
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
自分はVBは使いませんし、PCアプリからは遠ざかっているものです。
只今回路設計メインな人間です。しかし過去に似たようなソフトを作成したことがります。(13年以上前のこと)
特に文献など参考にせずに、何とな~く「!」で考えた手法です。(大方同じような造りになると思いますが)
当時CPUが遅かったので、処理速度を上げる方法として
1.対象画像をグレースケールに変換(256階調)
2.解像度を下げる
3.画像の特定領域のみをスキャンする
最後にスキャン方法を線化して、特定の線上部のスキャンのみを試してみました。
これも良い結果がでたと記憶しています。(四角の枠を数個設定して、その枠上のスキャンをさせるという方法です)
大幅な高速化が実現しました。
また目的も実現できましたが、目的が異なるために果たして有効かどうかは???
自分の場合は逆の目的ですが(侵入検出ソフトのようなもの)ある意味、正常時は同じ事をさせているわけですから、似たところもあると思います。
もっと手を抜いて処理をしても良い結果が出ると思いますが。
No.2
- 回答日時:
これは、テンプレートマッチングと呼ばれる画像認識方法になります。
「テンプレートマッチング」をキーワードに、画像処理関連のサイトを探せば、いろんな手法が載っています。
高速な処理の例もあります。
No.1
- 回答日時:
どんな画像を対象にしてるかで違うので一概に言えませんが……
自然画像を対象とする場合は双方とも各ピクセルを256階調の輝度値に変換した上でマッチングの検査を行えば、ARGBそのままでマッチングを行うよりも処理時間を短縮できます。また、フィルタリング処理等を用いて階調を落としたりするのも効果的かも。
(逆に輝度値の似たような色を使ってパターンを塗り分けしたようなものだと効果はありませんが)
あと、精度に有通が効く場合は、マッチング評価が一定値以上なら全ピクセルを検査しなくても一致とみなすとか、逆に一定のピクセル数を検査しても一定値以下ならもう一致しないと見てスキップするとかというのもよく使われる技法です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- その他(プログラミング・Web制作) uwscとWinShotを使いスクリーンショットを撮る 1 2022/06/30 21:15
- Visual Basic(VBA) Visual Basic : ImageListの画像がそろったときにメッセージを表示 1 2023/07/20 13:53
- Excel(エクセル) エクセル VBA For Next 繰り返しの書き方を教えてください 6 2022/09/01 14:11
- その他(OS) Windowsで大量の画像サイズを半自動で変更する方法 6 2023/02/17 08:45
- 防犯カメラ・監視カメラ・小型カメラ VHSを高画質な動画ファイルにしたいです。 3 2022/05/06 12:08
- Excel(エクセル) エクセルのデータ整形について 3 2022/11/12 00:27
- Visual Basic(VBA) ChatGPTに作らせたい Excel VBA 1 2023/04/05 19:56
- フリーソフト 倍率自動調整して全画面表示できるフリーの画像ビューアー 1 2023/08/24 10:55
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
画像について
-
c 画像の一致を調べる
-
AS3でランダムな画像入れ替わり...
-
アプリケーションのインターフ...
-
スライドのアイコンの上に閉じ...
-
HSPの初歩的な質問
-
8bit(256色)グレースケール画...
-
画像の名前の表示について
-
携帯電話のサイトでのアクセス...
-
流れる画像
-
クリックした位置に画像を貼り...
-
ポイントしたサムネイルの画像...
-
画像の件
-
マウスオーバーで横に反転するj...
-
uwscについての質問です。 画面...
-
新しく追加保存した画像をリア...
-
オンラインでロゴ画像を作成
-
画像のサイズ(容量)について
-
画像のスライドショーの作り方
-
uwcs のマクロで画像認識をして...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
背景画像の繰り返しについて
-
EXCEL VBA 複数のImageコントロ...
-
【EXCEL VBA】ダブルクリックで...
-
uwcs のマクロで画像認識をして...
-
UWSCの画像認識と条件分岐につ...
-
UWSCでループ処理がうまくいき...
-
vb.net 画像の透過について
-
「using Windows」でエラーが出る
-
Excel ユーザーフォームで表示...
-
UWSC 画像判定と条件分岐について
-
uwscの画像認識に失敗します。
-
画像のビット数を変更する方法
-
jqueryスライダーを2段でスライ...
-
画像処理したBitmapをピクチャ...
-
UWSCの色判定
-
UWSCについて
-
スマホでサイトの画像を長押し→...
-
VBAのユーザーフォームのイメー...
-
gif 画像上の ボタンに リン...
-
画像のピクセルデータの取得
おすすめ情報