• 締切済み

画像認識アルゴリズムについて

kringonの回答

  • kringon
  • ベストアンサー率55% (29/52)
回答No.3

自分はVBは使いませんし、PCアプリからは遠ざかっているものです。只今回路設計メインな人間です。 しかし過去に似たようなソフトを作成したことがります。(13年以上前のこと) 特に文献など参考にせずに、何とな~く「!」で考えた手法です。(大方同じような造りになると思いますが) 当時CPUが遅かったので、処理速度を上げる方法として 1.対象画像をグレースケールに変換(256階調) 2.解像度を下げる 3.画像の特定領域のみをスキャンする 最後にスキャン方法を線化して、特定の線上部のスキャンのみを試してみました。 これも良い結果がでたと記憶しています。(四角の枠を数個設定して、その枠上のスキャンをさせるという方法です) 大幅な高速化が実現しました。 また目的も実現できましたが、目的が異なるために果たして有効かどうかは??? 自分の場合は逆の目的ですが(侵入検出ソフトのようなもの)ある意味、正常時は同じ事をさせているわけですから、似たところもあると思います。 もっと手を抜いて処理をしても良い結果が出ると思いますが。

関連する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プログラミングの関数電卓のアルゴリズムについてですが、 標準入力からの文字列式を、トークンに区切り、先頭から配列型スタックに格納して、計算を行う処理を考えていて、 a-b-cという処理のアルゴリズムに困っています。 どういった解決策があるのか教えて頂けませんか?? お願いします!! フローチャートを書くほどの事でも無いと思うので、僕が考えていたアルゴリズムを、文で記載しますが、できれば、このアルゴリズムからどうすれば解決できるかを考えて頂けたらとても助かります!! 1. 別のスタックを用意して、元々のをstack1,コピー用をstack2とし、stack1のトップからstack2に格納。(スタックの構造は二次元文字型配列) この場合、cからstack2に格納される。 2. 演算子を見つけると、その前後の数字をその演算子によって処理。 この場合なら、c-bという処理。 3. 計算結果を、cが格納されていた、演算子の前に格納。 4.引き続き、この操作を繰り返す。 これを考えてたんですが、実行すると、(c-b)-aという式になり、違う答えが出てしまいます。加算ならば影響はでません。 きちんと(-c-b)+a の処理をさせるにはどうしたら良いかがわからないです。 お願いします!! ※返事が多少遅れるかもしれませんが、すみません!!

  • 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値に変換してしまったり(そのせいでパソコンがクラッシュしてしまいました…)、うまくいきません。 画像処理の対象となる原画像を取り込み、その原画像のピクセルの色情報を表示するためには、どのような処理を行えばよいのでしょうか? どうぞよろしくお願いします。

  • RGB値を画像(PNG・BMPJPEGなど)に出力したい

    配列に格納したRGB値からPNG画像(またはBMP画像JPEG画像)を作成したいと思っているのですが、画像ファイルの作り方がわかりません。 ファイルを作成⇒ヘッダ書きこみ⇒色情報書き込み と、漠然とした手順しかわかりません。 詳しい方法、または参考URLがわかる方、アドバイスお願いします。 以下補足です。 ・開発環境はwindowsXPのVC7でC言語を使っています。 ・openCVで適切な関数があれば助かります。 (openCVのIplImageの読み込みなども参考にしようと思いましたがxmlファイルからの取得とは違うのでわかりませんでした。)

  • 疑似言語で表現されたアルゴリズムについて…

    次の疑似言語で表現されたアルゴリズムを処理の概要の条件を満たしかたについて教えてください。 途中までは求められるのですが、(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値をどのように設定したらいいのかなど、わからないことだらけです。 アドバイスを頂けたらありがたいです。どうぞ宜しくお願い致します。