OpenCV 2.0 – cv::Ptr

A template class for smart reference-counting pointers OpenCV 2.0では cv::Ptr という参照カウント方式のスマートポインタが用意されています。 これは Boost C++ Library の shared_ptr と同様のもので大変便利です。 参考:参照カウント – Wikipedia 一時的にcv::Ptrクラスのrefcountというメンバをprotectedからpublicに変更して挙動を見てみます。 (cx…

OpenCV 2.0を試してみた

この連休中にちょっとOpenCV 2.0で遊んでいました。 ライブラリの規模がかなり大きくなったのでソースを読むのも大変です; IplImage や CvMat は 新しいC++インタフェースでは cv::Mat に取って代わります。 (1.1preで追加されたWImageクラスの立場は? 関連:cv::WImage ? OpenCV 1.1) また、メモリ管理が賢くなっているので、後始末は各クラスのデストラクタに任せておきましょう。 boostのshared_ptrと同様のスマートポインタ(c…

Thrift + OpenCV

Thriftを利用してOpenCVの関数をスクリプトから呼んでみます。 といってもRPCで繋げるだけで特別なことをする必要はありません。 ここでは、画像の各チャンネルの平均値と標準偏差を求めてみます。 サーバ側でOpenCVの cvAvgSvd() を利用すればOK。 まず、最初にRPCのインタフェースをThrift IDLに書きます。 ここでは、平均と標準偏差を求める関数を2つ作ることにしました。 各チャンネルの値が欲しいので戻り値は list<double> に、 引数は画像ファ…

Vector() 関数について

以前書いた位相限定相関のコードなんですが、ピクセルデータを一次元(Number)で扱いたくて

こんな風に書いていました。 ナイトビジョンエフェクトのコードは最初はByteArrayで書いてて、その後でVectorに書き換えています。 get/setVector() vs get/setPixels() で、コードの整理ついでに位相限定相関のコードもVector版で書き換えようとしたんですが、 位相限定相関法はフーリエ変換してからい…

土曜は本屋へ

OpenCVの新しい書籍を立ち読みしてきました。 OpenCV プログラミングブック 第2版 OpenCV 1.1対応 第1版と違うところはやはり「機械学習」の項が増えたことでしょう。 内容はお約束のHaar-likeであまり新鮮味はありませんが、丁寧に書かれていたのは良いです。 巻末のリファレンスもしっかりしているのでお守り代わりに買っておくのもありだと思います。 (ディスプレイでHTMLリファレンスを読みたくない人にオススメ) ———- 最近は業務で簡単な…

実践 OpenCV 映像処理&解析

実践OpenCV―映像処理&解析を買いました。 6月10日発売のOpenCVの新しい書籍です。 NAISTの人達が書いたOpenCV プログラミングブックを既に持っていてこの本を買う意義としては、 強いて挙げるなら6章の「OpenGLとの連携」と7章の「物体検出の機械学習」の部分でしょうか。 ちなみに5章では「映像解析」を扱っていますが、ここで紹介されている処理を載せておきます。 ・テンプレートマッチング ・オプティカルフロー ・離散フーリエ変換フィルタリング ・モーションテンプレート…

Jitter Filter

昨日に引き続き画像処理手法の簡単な紹介。 このフィルタは画素値を周りに拡散させます。 Photoshopの [フィルタ] > [表現技法] > [拡散]と同じ効果です。 実際の処理は参照する座標値をランダムに決めているだけ。 ・ソースコード

・関連記事 Symmetric Nearest Neighbour