
画像認識アルゴリズムについて
指定画像と同じ画像を、画面に表示されている画像から探すプログラムを趣味で開発しています。
画像を探しだすことには成功しているのですが、どうも処理スピードが遅いように感じます。
アドバイスください。
【処理の詳細】
(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も見ています
-
これまでで一番「情けなかったとき」はいつですか?
これまでの人生で一番「情けない」と感じていたときはいつですか? そこからどう変化していきましたか?
-
「これはヤバかったな」という遅刻エピソード
寝坊だったり、不測の事態だったり、いずれにしても遅刻の思い出はいつ思い出しても冷や汗をかいてしまいますよね。
-
あなたの「プチ贅沢」はなんですか?
お仕事や勉強などを頑張った自分へのご褒美としてやっている「プチ贅沢」があったら教えてください。
-
コーピングについて教えてください
皆さんはストレスを感じたとき、どのような方法や手段、テクニックで対処していますか?
-
思い出すきっかけは 音楽?におい?景色?
記憶をふと思い出すきっかけは 音楽、におい、景色 どれですか?
-
VBAで画像のドット位置を探す。
Excel(エクセル)
-
エクセルのVBAでクリップボードにコピーした画像をpng(or jpg or bmp)保存したい
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・「これはヤバかったな」という遅刻エピソード
- ・初めて自分の家と他人の家が違う、と意識した時
- ・いちばん失敗した人決定戦
- ・思い出すきっかけは 音楽?におい?景色?
- ・あなたなりのストレス発散方法を教えてください!
- ・もし10億円当たったら何に使いますか?
- ・何回やってもうまくいかないことは?
- ・今年はじめたいことは?
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
UWSCでループ処理がうまくいき...
-
背景画像の繰り返しについて
-
画像のピクセルデータの取得
-
VC++6.0でGDI+利用してメモリリ...
-
【EXCEL VBA】ダブルクリックで...
-
VBAのユーザーフォームのイメー...
-
HTMLで画像をポップアップで表...
-
VBA シート毎に画像挿入
-
スマホでサイトの画像を長押し→...
-
Jimdoで画像をポップアップ表示...
-
gif 画像上の ボタンに リン...
-
UWCSでのランダムクリック入力...
-
画像処理したBitmapをピクチャ...
-
PowerPoint VBA で画像の鮮明度...
-
DXライブラリの、マウスを使っ...
-
openCVを用いた手形認識
-
raspberry pi でプログラムを開...
-
画像の解像度をかえるには?
-
サムネイル画像にマウスオーバ...
-
マスク画像の自動作成
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel ユーザーフォームで表示...
-
背景画像の繰り返しについて
-
uwcs のマクロで画像認識をして...
-
UWSC 画像判定と条件分岐について
-
【EXCEL VBA】ダブルクリックで...
-
UWSCの画像認識と条件分岐につ...
-
画像のビット数を変更する方法
-
jqueryスライダーを2段でスライ...
-
vb.net 画像の透過について
-
「using Windows」でエラーが出る
-
UWSC 画像認識で条件分岐
-
gif 画像上の ボタンに リン...
-
UWCSでのランダムクリック入力...
-
画像処理したBitmapをピクチャ...
-
EXCEL VBA 複数のImageコントロ...
-
UWSCでループ処理がうまくいき...
-
VBAのユーザーフォームのイメー...
-
UWSC「画像が無い場合」
-
画像のピクセルデータの取得
-
UWSCの色判定
おすすめ情報