月別アーカイブ: 2011年11月

相関係数を計算を自作する(完成)

マスク画像を使えるように、テンプレートマッチの関数を自作します。 templmatch.cpp 内の元ネタを使っても良かったのですが、相加平均を計算するところが、1/w*h で固定値になっているので、マスク画像を渡すと大幅に書き換えになってしまう…というのと、行列全体をフーリエ演算対象にしてしまっているので、そもそもマスク画像を渡すことができない。ってのが自作の理由です。 相関係数を計算を自作する(途中) | Moonmile Solutions Blog http://www.moonmile.net/blog/archives/2509 前回は、RGB チャンネルを平坦に加算していたので誤検出多くなっていましたが、元の関数と同じようにチャンネル毎に相加平均を計算するという方式に変えました。すると、cv::matchTemplate と同じ結果が得られています(厳密にチェック … 続きを読む

カテゴリー: 開発, C++, OpenCV | 3件のコメント

相関係数を計算を自作する(途中)

結局、自作してみる… templmatch.cpp 内にある crossCorr 関数で相関平均を計算しているのだが、フーリエ解析を使っているためか値が違う。 後でコードを見直そう。 ちなみに、Mat:at を使うとデバッグ実行ではひどく遅いのだが、Release ビルドをすると結構速い。 おそらく、mat.hpp に定義されている で設定されている CV_DbgAssert の関数が遅いわけで、これはリリースモードでは外れるようになっている。 この部分を、CV_DbgAssert を使わないように展開してやれば、早くなるのではないかなぁと。

カテゴリー: 開発, 雑談, C++, OpenCV | コメントする

特定点でテンプレートマッチングを行うための考察

テンプレートマッチング法を使うと、教師画像を実画像から簡単に検索できるのだが、相関係数(CV_TM_CCOEFF_NORMED)を使って探索をすると結構遅い…というか、これが目で駒を追うやり方なのかどうかが疑問だったりします。 なので、以下は、ちょっと考察。 なにも、教師画像のすべてをマッチングさせる必要はなくて、教師画像の特徴を掴んで、実画像とマッチングさせればよいのです。これを特徴量という言い方をするのですが、この特徴量の定義として考えられるのが、 教師画像の、色で検出する。 教師画像の、形で検出する。 教師画像の、白黒画像で検出する。 教師画像の、角で検出する。 というやり方があります。 画像処理 (3) 顕著性マップ http://fussy.web.fc2.com/algo/algo12-3.htm をつらつらと読んで考えたのが、教師画像での顕著性のある場所が、実画像 … 続きを読む

カテゴリー: 開発, 雑談, OpenCV | コメントする

jsMath を使う

試しに jsMath で数式を書いてみる。 \int^1_\kappa \left[\bigl(1-w^2\bigr)\bigl(\kappa^2-w^2\bigr)\right]^{-1/2} dw = \frac{4}{\left(1+\sqrt{\kappa}\,\right)^2} K \left(\left(\frac{1-\sqrt{\kappa}}{1+\sqrt{\kappa}}\right)^{\!\!2}\right) jsMath: Web ページで数式を表示する一つの方法 http://math3.ifdef.jp/jsmath/welcome.htm あたりを参考に 相関係数とか、 \sum_{i=1}^n \left( x_i – \overline{x} \right) \left( y_i – \overline{y} \right) … 続きを読む

カテゴリー: 雑談 | 1件のコメント

OpenCVテンプレートマッチングと低解像度化で、駒を検出する

OpenCV のテンプレートマッチを使って駒を検出 | Moonmile Solutions Blog http://www.moonmile.net/blog/archives/2468 の続きです。 先のテンプレートマッチングが遅かった原因は、2 つあって、 cv::matchTemplate を呼び出して、MaxMin を検索した後に、再び cv::matchTemplate を呼び出しているのが無駄。 元画像をそのままマッチング対象にしているので、低解像度にすれば早くなる? ってところです。 前者の cv::matchTemplate の多重呼び出しは完全にコーディングミスですね。50 個の max を取るのに、いちいち cv::matchTemplate を呼び出す必要はありません。一回だけ呼び出して、その結果の画像を使って 50 個の max を cv::minMaxLoc で … 続きを読む

カテゴリー: C++, OpenCV | 4件のコメント

UVC対応カメラを複数台つなげるときは帯域に注意する

2 台の Web カメラを繋げて、次のプログラムを実行します。   結論から言えば、UVC 対応の WEB カメラを複数台つなげることができます。 実は、最初なかなかつながらなくて、AMCAP(DirectShowのサンプル)を動かしても認識しないし、片方を止めれば片方が認識するし、なぜか、3台繋いだ状態でも、同時には1台しか表示させることができない…ってな訳で、半日ほど悩みました。 複数接続させた例は、Linux だったり、何故だろう、Windows 7 では動かないのか?とか。 で、あれこれと調べた挙句。 AOISAKURA – 日記(2010-07-25) http://www.aoisakura.jp/tdiary/?date=20100725 なところで、「帯域」の話があったので、なるほど USB の帯域の問題であったか orz ということです。 … 続きを読む

カテゴリー: 開発, C++, OpenCV | 1件のコメント

OpenCV で UVC(USB video device class)対応のカメラを使う

と、電気屋さんで web カメラが安売り(投げ売り)されていたので、OpenCV のステレオ用に(というか、別の方向からも撮影したいし)ということで、2 個ほど買ってきました。 ELECOM 製の UCAM-DLG200H というやつです。 さて、これをパソコンに繋げて動かそうとしたのですが、動かない。 結論から言うと、UVC 対応の WEB カメラは、OpenCV 2.2 では動きません…ってな訳です。 opencv.jp からダウンロードできる安定版は、現時点で v2.2 (http://opencv.jp/download)なので、 OpenCV2.3rcからOpenCV2.3の変更点(ChangeLog) | OpenCV.jp http://opencv.jp/misc/changelog_from_23rc なところから、v2.3 をダウンロードして使います。 ちょ … 続きを読む

カテゴリー: 開発, C++, OpenCV | コメントする

OpenCV の特徴量検出器を使ってみる

プチロボ事始め | Moonmile Solutions Blog http://www.moonmile.net/blog/archives/2416 プチロボで4軸構成にしてみる | Moonmile Solutions Blog http://www.moonmile.net/blog/archives/2421 OpenCV を使ってエッジ抽出 | Moonmile Solutions Blog http://www.moonmile.net/blog/archives/2452 OpenCV を使って顔認識 | Moonmile Solutions Blog http://www.moonmile.net/blog/archives/2460 OpenCV のテンプレートマッチを使って駒を検出 | Moonmile Solutions Blog http://www.moonmi … 続きを読む

カテゴリー: C++, プチロボ | コメントする

OpenCV のテンプレートマッチを使って駒を検出

プチロボ事始め | Moonmile Solutions Blog http://www.moonmile.net/blog/archives/2416 プチロボで4軸構成にしてみる | Moonmile Solutions Blog http://www.moonmile.net/blog/archives/2421 OpenCV を使ってエッジ抽出 | Moonmile Solutions Blog http://www.moonmile.net/blog/archives/2452 OpenCV を使って顔認識 | Moonmile Solutions Blog http://www.moonmile.net/blog/archives/2460 の続き パズルゲームを解くのが目的なので、テンプレートマッチングは非常にオーバーヘッドが大きいのですが、試しに。   ちょうど、 … 続きを読む

カテゴリー: C++, プチロボ | コメントする

OpenCV を使って顔認識

プチロボ事始め | Moonmile Solutions Blog http://www.moonmile.net/blog/archives/2416 プチロボで4軸構成にしてみる | Moonmile Solutions Blog http://www.moonmile.net/blog/archives/2421 OpenCV を使ってエッジ抽出 | Moonmile Solutions Blog http://www.moonmile.net/blog/archives/2452 の続き テンプレートマッチングの前に、SVM というか、OpenCV で顔認識を試してみます。 ひとまず、opencv.jp の sample コードを見ながらざっとコーディング。 opencv.jp – OpenCV: 物体検出(Object Detection)サンプルコード &#8211 … 続きを読む

カテゴリー: C++, プチロボ | コメントする