サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
衆院選
pukulab.blog.fc2.com
SIFTとかSURFでよくあるサンプルをORBで動かしてみました。 ↓ここのやつですね。 http://docs.opencv.org/doc/tutorials/features2d/feature_homography/feature_homography.html 十分な対応点が得られない場合や、ホモグラフィー行列がうまく推定できなかった場合のエラー処理が入っていなかったので追加しています。 #include <opencv2/opencv.hpp> // -------------------------------------------------------------------------- // main(Number of arguments, Argument values) // Description : This is the entry point of t
今回はパーティクルフィルタ(ConDensation)を使ったトラッキングを紹介します。 パーティクルフィルタは、モデルの状態を多数の粒子で近似する方法です。 ゴリ押しです。 OpenCV.jpのサンプルでは、尤度(ゆうど)関数がRGB色空間でのユークリッド距離でしたが、 任意色をとるには使いにくいので、本サンプルでは「指定した色の重心との距離」を尤度としています。 #include "ardrone/ardrone.h" #include "opencv2/legacy/legacy.hpp" #include "opencv2/legacy/compat.hpp" #define KEY_DOWN(key) (GetAsyncKeyState(key) & 0x8000) #define KEY_PUSH(key) (GetAsyncKeyState(key) & 0x0001) //
OpenCVフリークの皆さん、こんにちは。 いつの間にか5点アルゴリズムが実装されたそうですよ! 3ヶ月ぐらい前らしいです全然知りませんでした。 基礎行列の計算方法はこれまで「cv::findFundamentalMat()で求めた基本行列からカメラ行列を掛ける」といったものでしたが(Mastering OpenCVにも書かれていますね)、 // 7点(RANSAC)アルゴリズムで基礎行列を計算 cv::Mat F = cv::findFundamentalMat(ptsA, ptsB, cv::FM_RANSAC, 0.1, 0.99); cv::Mat_<double> K = cameraMatrix; cv::Mat_<double> E = K.t() * F * K; //according to HZ (9.12) キャリブレーション済みの画像を用いて、 // 5点アルゴリズ
カルマンフィルタは、ノイズの乗った観測値から真値を推定する際によく使われるものです。 OpenCVにはCvKalman、cv::KalmanFilterとして実装されています。 OpenCVに同梱されているサンプルを動かすのもいいと思います。 ちょっとゴチャゴチャしていますが。 前回のサンプルにカルマンフィルタを入れたので、これを使って実際にどう使うか解説していきます。 1. カルマンフィルタの初期化 状態をこのように定義します。x、yは画面上のマーカーの位置です。 となります。 cvCreateKalmanに状態ベクトルの次元数(=4)と観測ベクトルの次元数(=2)を入れて初期化します。 // 初期化 CvKalman *kalman = cvCreateKalman(4, 2); cvSetIdentity(kalman->measurement_matrix, cvRealScala
特徴点の検出器といえば、SIFT(Scale-invariant feature transform)やSURF(Speed-Upped Robust Feature)が有名です。 どちらもスケール回転不偏特徴量として優れていますが、CV Drone付属のOpenCVライブラリはNON_FREE無効でビルドしているため、これらが使えません。 ORB(Oriented-BRIEF)はOpenCV2.3から実装されたフリーの特徴検出器・記述子で、SIFTやSURFのようにスケール・回転不偏でありながら、SURFの10倍、SIFTの100倍 高速と言われています。リアルタイムで動かすにはもってこいですね。 SIFT detection: 0.417645 s description: 0.397645 s SURF (hessianThreshold = 2000) detection: 0.1
OpenCVのパノラマ画像生成機能(Stitching)を使ってみましょう。 最小限のコードはこんな感じです。 // 画像セット std::vector<cv::Mat> images; images.puch_back(何かの画像1); images.puch_back(何かの画像2); : images.puch_back(何かの画像n); // パノラマ画像生成 cv::Mat result; cv::Stitcher stitcher = cv::Stitcher::createDefault(); stitcher.stitch(images, result);AR.Droneへ応用するときに毎ループpush_backするとパノラマ画像の生成に時間がかかる(というか画像が多すぎるとメモリ不足になる)ので注意しましょう。 #include "ardrone/ardrone.h" #
AR.Drone 2.0は動画をH.264形式で送ってきます。 ※本記事中のH.264ビデオデコード方法はFFmpegのチュートリアル及び、AR.Drone Development様の記事を参考にしております。 やり方はこんな感じです。UVLCと比べて少し多くなります。 1. FFmpegの初期化 2. avformat_open_input()でビデオのポート(5555番)を開く 3. avformat_find_stream_info()でストリーム情報を取得 4. avcodec_find_decoder()で対応するデコーダを見つける 5. avcodec_open2()でコーデックを開く 6. ビデオ用のバッファを確保 7. 画像用のIplImageを確保 8. av_read_frame()でフレームを読み込む(内部的にメモリ確保されるので解放を忘れずに) 9. avcodec
OpenCVの最新版が先週リリースされましたね。 今回は備忘録も兼ねてVisual Studio用のライブラリのビルドの方法を紹介します。 1. Visual Studioのインストール 「Visual Studio Express 2012 for Windows Desktop」をインストールしましょう。 ※ 注意: VS2012をインストールするとVS2010でコンパイルができなくなります。 .Net Framework4.0を再インストールすると解決しますがVS2012が起動できなくなります。 2. CMakeのインストール OpenCVのビルドに必要です。「cmake-2.8.10-win32-x86.exe」をダウンロードし、インストールしてください。 2.8.9ではうまくいかないという報告もあります。
Bebop対応するぞーとか言って3年近く経ってしまった。 というかもうあるじゃん。 http://ogidow.hateblo.jp/entry/2016/03/16/124120 https://github.com/ogidow/cvbebop
プログラム公開から1ヶ月ほど経ちました。 今回は開発を進める上で参考になったサイトやライブラリを紹介していこうと思います。 AR.Drone SDK 1.8 公式SDK。バグだらけでビルドがまともに通らない。信じられないだろ...公式なんだぜ、コレ。 AR.Drone SDK 2.0 相変わらずの心折設計。Win32はサポート対象外に ナンテコッタ/(^o^)\ ※SDK 2.0.1で復活! AR.Drone Development 1番参考になるサイトです。ここがなければCV Droneは生まれなかったでしょう。 ARDrone-Control-.NET 計器がカッコ良くて有名、多くのプロジェクトのUVLCデコード部分はこれが元になっています。 ARDroneForP5 みんな大好き工学ナビのProcessingによるAR.Droneハック AR.Drone+OpenCV For AR.
このページを最初にブックマークしてみませんか?
『Puku's Laboratory』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く