- 締切済み
画像認識アルゴリズムについて
画像認識アルゴリズムについて 指定画像と同じ画像を、画面に表示されている画像から探すプログラムを趣味で開発しています。 画像を探しだすことには成功しているのですが、どうも処理スピードが遅いように感じます。 アドバイスください。 【処理の詳細】 (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は変更したくありません。 よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- kringon
- ベストアンサー率55% (29/52)
- kmee
- ベストアンサー率55% (1857/3366)
- magicalpass
- ベストアンサー率58% (378/648)
関連するQ&A
- 画像処理アルゴリズム
いちおうC#でやってますが、あくまで考え方、概念、アルゴリズムの回答で構いません 今取りあえず、ある画像の全ピクセルのRGBとHSVデータを配列として持っているとします 色情報[x,y][R]に赤 色情報[x,y][G]に緑 色情報[x,y][B]に青 同様に HSV[x,y][H]にH HSV[x,y][S]にS HSV[x,y][V]にV ここから、配列をfor文で回してもなんでもいいんですが、画像の色情報を取得して 1.単色刷り画像の取得(白、黒、ある色のみで高声された画像、閾値でふるい分け) (黒白赤,黒白薄緑とか) を実現するためにどうすればいいでしょうか? (全部の色を混ぜてその色の彩度で判定・・・しらたちょっと予想と違う検索結果に・・・)
- ベストアンサー
- その他(プログラミング・開発)
- 画像処理のアルゴリズム
画像をシャープにするとか減色するファンクションを実現したいのですが、ゼロからではきついのでどこかで画像処理のアルゴリズムのしくみを知ったり欲をいえばサンプルソースがあると助かるのですけどそういう情報がフリーで得られるサイト等をどなたかご存知ないでしょうか? 考えてみればシェアウェアやフリーウェアでも画像処理ソフトには色々なエフェクトが実装されています。作者の皆さんとかは個々にアルゴリズムを考えておられるものなのでしょうか?
- ベストアンサー
- その他(プログラミング・開発)
- String配列を扱うアルゴリズムについて
よりパフォーマンスの良いアルゴリズムが、 ございましたらご教示下さい。 数レコード分のDBテーブルデータが格納されたString[][]型が存在するとします。 配列の要素は、String[行(フィールド)][列(カラム)]です。 ここで、全レコード中の列ごとの最大文字列長を int[]型に取得したいと思います。 そうした場合、自作した下記の処理よりも、 よいパフォーマンスを得られるアルゴリズムがございましたら、 ご教示願いたいと思います。 ※処理前提条件 ●String[][]型変数に、過不足無くテーブルデータが格納済みであるとします。 ●配列の第一(行)・第二(列)要素の最大値は取得済みであるとします。 ////////////// // 変数定義 // ////////////// String[][] tableData; ← テーブルデータ格納済み(過不足はありません) int 行数 = 全行数(取得済み); int 列数 = 全列数(取得済み); //列毎の最長文字列値を格納する。 int[] maxLen = new int[列数]; ////////// // 処理 // ////////// //列の個数分、処理を繰り返す for(int i = 0; i < 列数; i++) { //行の個数分、処理を繰り返す for(int j = 0; j < 行数; j++) { //NULLを回避する if(tableData[i][j] != null) { //int配列に格納済みの数値より大きければ、改めて格納する if(maxLen[i] < tableData[i][j].length()) { maxLen[i] = tableData[i][j].length(); } } } } 以上です、どなかお知恵をお貸し頂けませんか。 宜しくお願い致します。
- ベストアンサー
- Java
- vector配列の重複を無くすには?
画像処理で各ピクセルごとのRGB値をそれぞれ取得し、 重複を除いた形で全て表示したいと考えています。 (仮に4ピクセルしかないとして、RGB(255,255,0), RGB(255,255,255),RGB(255,255,255),RGB(255,0,255) といった値が取れたときにRGB(255,255,0), RGB(255,255,255),RGB(255,0,255)のみを表示するといった感じです。) 画像ごとにピクセル数が異なり分からないので、 各ピクセルのRGB値を格納するのに動的配列vector<int*> pixelを 用い、そこにred,green,blueそれぞれの値を格納した 配列RGB[3]を格納しようと思い以下のように書いたのですが、 vector配列に配列を格納したときに重複を削除する方法が 分からず困っています。 for(int x = 0; x->width; x++) { for(int y = 0; y->height; y++) { /*getRGBはそのピクセルのRGB値を取得する仮想関数*/ RGB[0] = (int)getRGB(x,y,RED); RGB[1] = (int)getRGB(x,y,GREEN); RGB[2] = (int)getRGB(x,y,BLUE); } } pixel.push_back(RGB); と格納しても、そこからpixel配列に格納された物の中から RGBが全て一致するものを消去する方法が分かりません。 格納していたものが配列でなければ、pixelをsortして、 unique関数で重複を無くせるのでしょうが… どなたか良い方法をご教授願えませんでしょうか?
- ベストアンサー
- C・C++・C#
- Cプログラミングの関数電卓のアルゴリズムについてですが、
Cプログラミングの関数電卓のアルゴリズムについてですが、 標準入力からの文字列式を、トークンに区切り、先頭から配列型スタックに格納して、計算を行う処理を考えていて、 a-b-cという処理のアルゴリズムに困っています。 どういった解決策があるのか教えて頂けませんか?? お願いします!! フローチャートを書くほどの事でも無いと思うので、僕が考えていたアルゴリズムを、文で記載しますが、できれば、このアルゴリズムからどうすれば解決できるかを考えて頂けたらとても助かります!! 1. 別のスタックを用意して、元々のをstack1,コピー用をstack2とし、stack1のトップからstack2に格納。(スタックの構造は二次元文字型配列) この場合、cからstack2に格納される。 2. 演算子を見つけると、その前後の数字をその演算子によって処理。 この場合なら、c-bという処理。 3. 計算結果を、cが格納されていた、演算子の前に格納。 4.引き続き、この操作を繰り返す。 これを考えてたんですが、実行すると、(c-b)-aという式になり、違う答えが出てしまいます。加算ならば影響はでません。 きちんと(-c-b)+a の処理をさせるにはどうしたら良いかがわからないです。 お願いします!! ※返事が多少遅れるかもしれませんが、すみません!!
- ベストアンサー
- C・C++・C#
- FORTRAN でBMP画像の値の取得
FORTRAN でBMP画像の値の取得をしたいのですが,どうすればいいでしょう? たとえば,10×10画素の8bitのbmp画像の各ピクセルの値を読んで,テキストに書き出したいとします. ですので,できるファイルは・・ 1,1,255 1,2,255 ・ ・ ・ みたいに,X座標,Y座標,そこの値 っていうふうにしたいんです. わからないのは,BMP画像の値の取得方法です. また,bmpを読み込んで,その情報を元にまたbmpを作る時はどうすればいいでしょう? 長々とすいません.
- 締切済み
- その他(プログラミング・開発)
- C++の画像処理について【画像のピクセル値を表示する方法】
画像処理に関する質問です。初歩的なことかもしれませんが、ご教授お願いいたします。 開発環境はVisual C++ 2005です。 JPEGまたはBMP画像を読み込んで、その画像のピクセル値を表示するプログラムを作成したいのですが、まったくどうしてよいか判らず、行き詰っています。 これまでいろいろ試してみたのですが、読み込んだ画像をBit値に変換してしまったり(そのせいでパソコンがクラッシュしてしまいました…)、うまくいきません。 画像処理の対象となる原画像を取り込み、その原画像のピクセルの色情報を表示するためには、どのような処理を行えばよいのでしょうか? どうぞよろしくお願いします。
- 締切済み
- C・C++・C#
- RGB値を画像(PNG・BMPJPEGなど)に出力したい
配列に格納したRGB値からPNG画像(またはBMP画像JPEG画像)を作成したいと思っているのですが、画像ファイルの作り方がわかりません。 ファイルを作成⇒ヘッダ書きこみ⇒色情報書き込み と、漠然とした手順しかわかりません。 詳しい方法、または参考URLがわかる方、アドバイスお願いします。 以下補足です。 ・開発環境はwindowsXPのVC7でC言語を使っています。 ・openCVで適切な関数があれば助かります。 (openCVのIplImageの読み込みなども参考にしようと思いましたがxmlファイルからの取得とは違うのでわかりませんでした。)
- ベストアンサー
- C・C++・C#
- 疑似言語で表現されたアルゴリズムについて…
次の疑似言語で表現されたアルゴリズムを処理の概要の条件を満たしかたについて教えてください。 途中までは求められるのですが、(1)~(5)を教えてください。- (処理の概要) 配列Aには学生番号、配列Bには成績が格納されている。同じ添字の位置に対応する学生番号と成績が格納されている。配列の大きさは10件分である。成績の良い順(降順)に学生番号、成績とも並べ替える。 (配列のイメージ(例)) 添字 配列A 配列B 配列A 配列B 1 1001 50 1004 100 2 1002 75 1002 75 3 1003 25 1005 70 4 1004 100 1001 50 5 1005 70 1003 25 ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ (擬似言語) ・i←1 (1) ■i<n | ・j←i+1 | ■j≦n | | ↑ (2) | | |・w1←A(j) | | | (3) | | |・A(j)←A(i) | | | (4) | | |・A(i)←w1 | | | (5) | | ↓ | | ・j←j+1 | ■ | ・i←i+1 ■
- 締切済み
- その他([技術者向] コンピューター)
- C言語でBMP画像(ファイル)は作れますか?(Unix使用)
こんにちは。私は30代男性です。 先日はBMPを読み込んでUnix上でイメージ表示するプログラムを作ろうとしていましたが、ようやく完成しました。ご協力いただいた方々にお礼申し上げます。 次にチャレンジしようとしていることは、「BMPファイルに画像を書き出す。」というものです。画像は横4ピクセル・高さ256ピクセルのサイズで、とりあえず1行ずつRBG値を増やして「色の作成」の時に出てくるような長方形型の色指定用のグラデーション表示をしてみようかなと思っています。 →つまり、色の変化はRBG(0,0,0,)からRBG(255,255,255)にずらしていくという感じです(黒→灰色→白とでもいいましょうか)。 これはパレットに設定する値をfor分でループさせればいいかなと思いましたが、プログラムでBMP画像を作り出すことは無理なんでしょうか?ファイルがない状態からファイル名を指定して作るとしたら、offset値をどのように設定したらいいのかなど、わからないことだらけです。 アドバイスを頂けたらありがたいです。どうぞ宜しくお願い致します。
- ベストアンサー
- C・C++・C#