読者です 読者をやめる 読者になる 読者になる

ステレオマッチング (cvaux)

cvFindStereoCorrespondenceBM, cvFindStereoCorrespondenceGCのほかに、cvauxの方にもcvFindStereoCorrespondenceという関数があります。こちらもラップしてみました。 http://opencv.jp/opencv-1.1.0/document/opencvref_cvaux.html#decl_cvFindStereoCorr…

エピポーラ幾何、ステレオマッチングの実装

こちらのページの関数をすべてラップしました。まだリリースはしてません。 http://opencv.jp/opencv-1.1.0/document/opencvref_cv_epipolar.html cvFindStereoCorrespondenceBMとcvFindStereoCorrespondenceGCを試しに動かしてみました。先ほどのOpenCVリフ…

CvEMを実装

まだリポジトリに上げただけですが、CvEMを最低限動くところまでラップしました。 EMアルゴリズムは疎いのでロクに説明はできません。こちらをご覧下さい。http://opencv.jp/opencv-1.1.0/document/opencvref_ml_em.html#ch_em このページの下にあるサンプル…

CvSVMを実装

ひととおりCvSVMをラップしました。 CvSVMなどのC++のクラスで実装されている機械学習関連のものは、MachineLearningという新しい名前空間でラップしました。 これでこちらのサンプルが動きます(下2つは学習ファイルが無いので未確認)。 http://opencv.jp/…

cvFilter2D, cvCopyMakeBorder, cvIntegral を実装

cvFilter2D, cvCopyMakeBorder, cvIntegral 関数をラップしました。これで、以下のページのサンプルが全部動きます。たぶん。 http://opencv.jp/sample/filter_and_color_conversion.html詳解 OpenCV ―コンピュータビジョンライブラリを使った画像処理・認識…

x64環境でのOpenCvSharp

最近研究室のPCが64bit版のWindows Vistaになったのですが、それからというものOpenCvSharpを呼び出している研究のプログラムがBadImageFormatExceptionを吐いて全く動かなくなってしまいました。 あれ?.NETってそういう環境の違いうまく吸収してくれるんじ…

SURFのサンプルをラップ

下の記事でラップしたCV.ExtractSURFを用いて、OpenCV/samples/c/find_obj.cppをC#に書き換えて動作させることに成功しました。ただ、妙に重いのが謎です。ポインタによるアクセスを避けている分のオーバーヘッドは覚悟しているのですが、ここまで重くのなる…

cvExtractSURF

せっかくOpenCV1.1preに対応したということで、新たに実装されたらしいSURF(Speeded Up Robust Features)の関数をラップしてみました。 cvExtractSURFの定義は以下の通り。(cv.hの1111行目あたり) CVAPI(void) cvExtractSURF( const CvArr* img, const CvArr…

OpenCvSharp 1.1pre

時間があったのでOpenCV1.1pre向けのものを公開してみました。http://code.google.com/p/opencvsharp/downloads/listOpenCvSharpのバージョン番号はOpenCVと同期させることにしました。細かいバージョンは、どのタイミングでどれぐらい上げたらいいのかとか…

キャプチャしたIplImageをWriteableBitmapに変換すると反転する問題

Bitmapの方を片づけて一息ついてしまいましたが、当然この問題はWriteableBitmapでも起こるわけで。WriteableBitmapの方には反転する良いメソッドが見当たらなかったので、こちらはcvFlipで解決させました。 研究のプログラムはWPFで作っているので、個人的…

キャプチャしたIplImageをBitmapに変換すると反転する問題

があったようです。 id:Guernsey:20081206:1228571105 Windowsのビットマップでは左下が原点となっていたりするのが原因らしいです。 cvFlip関数のリファレンスを見ると、 http://opencv.jp/document/opencvref_cxcore.html#decl_cvFlip まさしくWindowsでキ…

OpenCV1.1

OpenCvSharpのOpenCV1.1preへの対応は現在試行錯誤中なのですが、カメラキャリブレーションがうまく動かないため保留にしています。話によるとキャリブレーションは1.1ではもっと簡単にできるようになったとかならないとか。 とりあえずpreが取れるまでは様…

OpenCV Wrappers

OpenCVのラッパーが結構たくさん一覧になっています。http://www.eyegazetracking.com/2008/10/opencv-wrappers.html 今回は.NET Framework向けのラッパーのみに絞って、過去に触ってみた感想を書いてみます。なお、大して時間をかけて使ってみた訳ではない…

卒業研究中間発表

卒業研究の中間報告のプレゼンがありました。おおむね首尾よくいったのではないかと思います。 OpenCvSharpはまさしくこの卒研の為に作り始めたのですが、研究では結局のところOpenCVの機能としては二値化と平滑化ぐらいしか使っておらず、あとは自前でごり…

2DRotationMatrix

OpenCVクラスをCVクラスに名前変更した際、メソッドの先頭の"cv"を取り払ったのですが、そうすると"cv2DRotationMatrix"が"2DRotationMatrix"になって先頭に数字が来てしまい、困ってしまいました。現在とりあえず"_2DRotationMatrix"という名前になっていま…

参照渡しの罠

ラッパーを書いていると当然のようにポインタが山のように出てきます。中でもcvCreateTrackbarは鬼門の一つです。定義は次のようになっています。 CV_EXTERN_C_FUNCPTR( void (*CvTrackbarCallback)(int pos) ); int cvCreateTrackbar( const char* trackbar…

顔検出

Haar分類機のあたりをラップしました。これを使うと顔の認識などができます (cvHaarDetectObjects)。OpenCVにはあらかじめ学習したデータが同梱されているので、それを利用するとすぐに顔検出を試してみることができます。 以下の画像はヤルタ会談の写真に顔…

OpenCV -> CV

OpenCvSharpの、OpenCVでいうcvなんたら関数の寄せ集めクラスである "OpenCV" クラスを "CV" に名前変更しました。これにより、 IplImage src = OpenCV.cvLoadImage("lenna.png", LoadMode.GrayScale); IplImage dst = OpenCV.cvCreateImage(new CvSize(src.…

cvInpaint

cvInpaintをラップしました。これは画像中に文字などの「いらないもの」があったとき、その部分を消して、消した部分を周りの画素から推定して修復する関数です。 例えば、以下のような画像があるとします。(OpenCVのサンプルから拝借) これに白いペンで塗…

カメラキャリブレーションを実装

カメラキャリブレーション周りの関数を大体実装し終えました。一応後学の為軽くまとめておきます。 キャリブレーションの著名な手法であるZhangの手法では、まず以下のようなパターン画像を、何枚か色々な方向から撮影します。 これをOpenCVに渡してコーナー…

cvUndistort2を実装

かなり久しぶりにOpenCvSharpを更新しました。カメラキャリブレーションの為の関数をちょっとだけ実装しました。http://coderepos.org/share/changeset/20119OpenCvSharpは、OpenCVという画像処理の為のライブラリをC#から扱うためのラッパーです。卒業研究…