2008-01-01から1年間の記事一覧

電子ピアノ購入

買っちゃいました。 今までは http://www.casio-intl.com/emi/key_lighting/lk80.html これからは http://casio.jp/emi/privia/px720_720c.html PX720とPX720Cで大いに悩みました。 うまい人に言わせると「所詮CASIOは・・・」ということになるのでしょうが…

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と同期させることにしました。細かいバージョンは、どのタイミングでどれぐらい上げたらいいのかとか…

Wubi 8.10

またWubiを入れる機会がありました。前回導入時からバージョンが上がって8.10になっていましたが、それにより微妙にいろいろ詰まったのでメモっときます。 インストール http://wubi-installer.org/ インストーラにより自動的にディスクイメージの取得が行わ…

キャプチャした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"という名前になっていま…

C++/CLIのキーワードページを作成

「はてなダイアリー市民」とやらに最近なりまして、キーワードの作成ができるようになったので、作ってみました。C++/CLIこのページが無かったなんて・・・C++/CLI流行ってないんですかね。個人的には.NETの言語の中でも最強クラスだと思うんですが。明示的…

参照渡しの罠

ラッパーを書いていると当然のようにポインタが山のように出てきます。中でも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.…

交響曲 第9番「新世界より」第2楽章 [Symphony No. 9 in E Minor "From the New World": II. Largo (Antonín Dvořák)]

MML

前々から気になっているのですが、Firefox, Opera, Safariといったブラウザだと、MMLの再生時にぶつぶつと突っかかるような感じがあるのですが、IEだとほぼ問題なく再生されます。なんなんだろう? $tone = @3 @e1,0,180,64,12 @w50; $tempo = t50; $rit1 = …

cvInpaint

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

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

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

アクセス修飾子

http://notiz.dyndns.org/doku.php?id=cppcli:access_modifiersあまり合ってるか自信がないです。外部からの方がアクセスできるなんてありなんでしょうか。と思ったんですが、どうもさすがにそれはないらしい??まあぶっちゃけ、publicとprivateさえ知って…

Noteflight

http://www.noteflight.com/楽譜をブラウザ上で作成でき、演奏もしてくれます。まだクローズドβということですが、なかなかすごいです。 ためしに打ち込んでみたK.545はこちら。 http://www.noteflight.com/scores/view/37bf9af52b41c64b630fb35b9917360dbd3…

平均、標準偏差

「Niblackの手法」という二値化のアルゴリズムをコーディングしていたのですが、その中では平均と標準偏差を求める処理が必要になります。ものすごく端折って書くと、最初はこのような感じで求めていました。 int[] array = new int[]{1, 7, 3, 8, 9, 4}; do…

2次元配列の動的確保 (C)

C

以前C++について書きましたが今回はCで。 #include <stdio.h> #include <stdlib.h> int main(void){ int row = 4; int col = 7; int** arr; int i, j; // 領域の確保 arr = (int**)calloc(row, sizeof(int)); for (i=0; i</stdlib.h></stdio.h>

Wubi

以前、VirtualPCにUbuntuを入れてみたのですが、結局のところ当方の環境では重くて実用には耐えないものでした。となるとやはりデュアルブートとなるのですが、最近は便利なものができていて、Wubiというものを利用すると普通のアプリケーションの感覚でUbun…

cvUndistort2を実装

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

VirtualPC2007 に Ubuntu8.04

VirtualPC 2007にUbuntu 8.04をインストール。その際やったことの備忘録。 他のFedoraとかopenSUSEに比べると大分楽に入れられましたが、やはり多少「おまじない」は必要です。こちらを参考にしました。 http://memomemomemomemo.blog.so-net.ne.jp/2008-05-…

2次元配列の動的確保 (C++)

C++

備忘録。 int row = 30; int col = 40; int** arr = new int*[row]; for(int i=0; i

プレリュード [Prélude Op.28-7 (Fryderyk Chopin)]

MML

太田胃散でおなじみですね。「イ長調」と「胃腸」をかけてるらしいです。曲自体は非常に短いものの、その分あらが目立ちやすいのでかえって大変。 $tone = @3 @E1,0,180,32,12 @W50; $tempo_base = t80; $tempo_rit = t64; $tone $tempo_base v10 o5 l4 q14 …

結婚行進曲 [Ein Sommernachtstraum (Felix Mendelssohn)]

MML

めずらしくトリルがうまくできた気がします。テンポがトラックごとに独立しているようで、リタルダンドが非常にかけづらいと思います。今回は音を伸ばしてごまかしました。 $tone = @3 @E1,0,180,32,12 @W50; $tempo = t130; $tone $tempo v12 o5 l12 r4 q8c…

unsafe

C#

MMLばっかりなのでたまには他の事を。C#でこんなこんなコードが通るんだなあと、ちょっとしみじみ思ったりしている今日この頃。 for(int i=0; i<10; i++) unsafe{ } まあ、こんな書き方はやめた方がよさそうですが、自分はunsafeなコードが使いたくなった場…