9月 2008 のアーカイブ

OpenCV開発再開? – 100円プログラマの覚え書き経由で知ったのですが,
OpenCV@sourceforge.netのForumsに以下のような記述があるみたい.

Willow Garage, a robotics research institutue/incubator is now supporting OpenCV development.
Expect new release early October that includes full, state of the art stereo pipeline,
improved calibration and many bug fixes.

これから,Willow GarageがOpenCVの開発をサポートするということでしょうか.
#それなら,IntelのOpenCVサイトが無くなったのも納得な気がするけど,IPPはどうするんでしょうか? > Intel

あと,10月にOpenCVのリリースがあるかもとのこと.

うーん,次のリリースで公開される機能って何だろーということで,
OpenCV v1.0と比べて,CVS版で大きく変わったと思われる機能を挙げてみます.
これがそのまま次のリリースで公開されるのかな?(※外れてたらスミマセン。。。)

・特徴点抽出アルゴリズムSIFTの高速化版SURF: Speeded Up Robust Features
→cvExtractSURF関数

・Stereo Calibration
→cvStereoCalibrate関数

・graph cut-based algorithmを用いた視差マップ算出
→cvFindStereoCorrespondenceGC関数

・cvThreshold
→「大津の方法」アルゴリズム追加

・オブジェクト検出器追加
→haarcascade_eye.xml,haarcascade_eye_tree_eyeglasses.xml

ざっと,こんな感じでしょうか?(CVS版を見た感じだと,bug fixはかなりあるみたい)
10月ももうすぐなのでリリースを楽しみに待つことにしましょう.

Comments コメントなし »

NUI Group » Getting Started With MultiTouch
MultiTouchを実現するテクニックとしてLaser Light Plane (LLP)が追加されたみたいです.
#最近(というか,結構前から),海外ではこの手法が流行り出してるみたいですね.

上記の掲示板の説明によると,Laser Light Plane (LLP)には以下のメリットがあるらしい.

・赤外LEDのフレームが不要
・セットアップが簡単
・他の手法よりコストが若干安価

ただ,「赤外レーザーって簡単に手に入る?」や「安全なの?」あたりが気になるよなー.
#と思ってたら,NUI Group » IR Laser Safety!!! [ READ THIS ]
#に記述があるみたいなので後で読んでおこう。。。

あと,YouTubeにアップされている動画を観た感じだと,blobのコントラストはそこそこ良い感じみたい.




いつも思うけど,こういう手法自体を提案する人はスゴイなぁ。。。(遠い目)

********************

3Dキャラクターが現実世界に誕生! ARToolKit拡張現実感プログラミング入門

著者/訳者:橋本 直

出版社:アスキー・メディアワークス( 2008-09-17 )

定価:¥ 3,129

Amazon価格:¥ 3,129

大型本 ( 240 ページ )

ISBN-10 : 4048673610

ISBN-13 : 9784048673617



出版社サイト

読みました.

ARToolKitの使い方だけでなく,ARToolKitのアルゴリズムやadvanced的な内容も含まれているので,
初心者だけでなく,中級者向けとしても良い本だと思います.
#Windowsユーザ以外のフォローももう少しあるとなお良しかな?

あと,書籍化の際に技術的な相談を受けた事もあり,謝辞にdandelionと入っていました(苦笑)
何か申し訳ないような気持ちでいっぱいですが。。。

********************

たのしいCocoaプログラミング[Leopard対応版]

著者/訳者:木下 誠

出版社:ビー・エヌ・エヌ新社( 2008-08-30 )

定価:¥ 2,940

Amazon価格:¥ 2,940

単行本(ソフトカバー) ( 352 ページ )

ISBN-10 : 4861005949

ISBN-13 : 9784861005947




読了しました!!
これで,Cocoaプログラミングの基本の基本の基本は押さえられたかなと.
これからは

詳解 Objective-C 2.0

著者/訳者:荻原 剛志

出版社:ソフトバンククリエイティブ( 2008-05-28 )

定価:¥ 4,410

Amazon価格:¥ 4,410

大型本 ( 560 ページ )

ISBN-10 : 4797346809

ISBN-13 : 9784797346800




を読んでObjective-Cの詳細を勉強したり,ADCのドキュメントを読みながら実践で慣れていくフェーズかなと.
さて,iPhoneアプリ開発まで辿り着くのはいつの日か。。。

Comments 5 コメント »

新 masafumi’s Diary: PS Eyeを読んで気付いたのですが,
今のところはサンプルアプリしか提供されてないんですね。。。
#Multi-touch Tableのアプリで使っているという書き込みを見たことがあるので,
#てっきり普通にwebカメラとして使えるものだと思ってました.

ということで購入ちょっと先走ってしまったかも.
(前の記事読んで購入しちゃった人には申し訳ないです)

ただ,NUI Groupの掲示板

I will be working on custom PS3EYE capture filter for use in TouchLib.

と書かれており,将来的にTouchLibで使えるようになるみたいなので,
そのうちAPIが公開される or DirectShowで使えるようになるのかも.

とりあえず,作者の方にメールでその点について聞いてみようかと思います.

Comments コメントなし »

ポケットニュース: PS3用USBカメラ「PlayStation Eye」をWindows Vistaで使ってみる
という記事を読んで,即,PlayStation Eyeを注文しました(PS3持ってないけど。。。).

ぶっちゃけると,専用ソフトウェアとかはどうでも良いのですが,
・640×480:60fps
・320×240:120fps
でビデオキャプチャできて,画角が最大75ºなwebカメラが4000円(※Amazon)なのがスゴイです.
なんというコストパフォーマンス。。。
Diffused Illumination用に使えるかな?

あとは分解できるかだけど,NUI Groupの掲示板でオススメのカメラの一つに挙げられている
みたいなのでなんとかなるかも.Vistaで良かったと初めて思ったかもしれない。。。

【注意】追記しました!!
(PS3持ってないけど)PlayStation Eyeを注文しました(2)

Comments 2 コメント »

たのしいCocoaプログラミング[Leopard対応版]「Lesson 11 チュートリアル:RSSリーダ」まで読了.
ようやく前半戦終了?

ここまで本を読みながら実装することでInterface Builderの使い方やObjective-Cの文法には慣れてきたけど,
「Lesson 11 チュートリアル:RSSリーダ」でいきなり難易度が上がったような(苦笑)
#XML周りのクラスとTableViewがちょっと複雑なので要復習.

でも,なんとなく掴めてきた感じで,Cocoaプログラミングが楽しくなってきたかも.


Comments コメントなし »

dandelion’s log » cvReleaseImageの挙動についてのコメント欄のアドバイスをもとに,
OpenCV/videoInput Libraryによるビデオキャプチャのサンプルプログラム
にmemcpyバージョンを追加しました.

ただ,記事を書いた時に比べてvideoInputのバージョンが上がってAPIが少し変わっているので
その辺の対応もいずれ書かないとダメかな?(需要があるのかって話だけど。。。)

*******************************

Linux上でOpenCVを使っている人にはお馴染みのサイト,
Linux + OpenCV + 1394カメラ HOWTO
が更新されています!!(自分も学部時代にお世話になりました)

今後の更新が気になるところです.

*******************************

たのしいCocoaプログラミング[Leopard対応版]

著者/訳者:木下 誠

出版社:ビー・エヌ・エヌ新社( 2008-08-30 )

定価:¥ 2,940

Amazon価格:¥ 2,940

単行本(ソフトカバー) ( 352 ページ )

ISBN-10 : 4861005949

ISBN-13 : 9784861005947




が届きました.前評判通り懇切丁寧な解説でわかりやすい!!

ただ,MacBook付属のDVDに入っているXcodeはバージョンが3.0なんだけど,書籍で説明に使われている
Xcodeのバージョンが3.1なので,画面が少し違って焦った。。。(あれ?このチェックボックスがない etc…)
#新しいもの好きなのでADCで最新のXcodeをダウンロードしてインストールしましたが

ということで,Xcodeでいろいろプログラム組んでいたので,Diffused Illumination関連が出来なかった。。。
#9/23の休みにはなんとかやりたいところ.

Comments コメントなし »

PDF形式で無償の「Linux標準教科書」提供開始 Linux初級者が対象:CodeZine
という記事があったので早速ダウンロードしてきました(注:要登録).

まぁ,紹介文にあるようにかなり初心者向けなので,多少知っている人には物足りないかも.
ただ,全256ページで基礎は一通り網羅しているので,学部生のテキストには十分な内容かと.
#こんな教材が無料で手に入るなんて良い時代になったなーと思います.

*******************************

たのしいCocoaプログラミング[Leopard対応版]

著者/訳者:木下 誠

出版社:ビー・エヌ・エヌ新社( 2008-08-30 )

定価:¥ 2,940

Amazon価格:¥ 2,940

単行本(ソフトカバー) ( 352 ページ )

ISBN-10 : 4861005949

ISBN-13 : 9784861005947




がいつの間にか出ていたのでAmazonでポチッと.

たのしいCocoaプログラミング

著者/訳者:木下誠

出版社:ビー・エヌ・エヌ新社( 2007-06-26 )

定価:¥ 2,940

単行本(ソフトカバー) ( 356 ページ )

ISBN-10 : 4861004438

ISBN-13 : 9784861004438




は初学者向けとして評判が高かったので気になってたんだけどLeopardに
対応してなかったので購入見送ってました.明日には届くはずなので楽しみです!!

*******************************

Learning OpenCV

著者/訳者:Gary Bradski Adrian Kaehler

出版社:Oreilly & Associates Inc( 2008-10-03 )

定価:¥ 4,666

Amazon価格:¥ 3,736

ペーパーバック ( 555 ページ )

ISBN-10 : 0596516134

ISBN-13 : 9780596516130




の発売日が以前見たときは9月中旬だった気がするんだけど,10月になってる。。。(※2008年9月18日現在)
記憶ではこの本の発売日が延びるのは今回が初めてではないので,状況が気になるところです.

********************************

dolipoの作者,drikinさんのblogDrift Diary12にこのblogのエントリが紹介されててビックリしました.
ここには特筆すべき記事が皆無なので,リンクからわざわざ来られた方には申し訳ない限りです。。。

あと,久しくweb上に成果物を出していないので,

・マルチタッチテーブル
#相変わらずDiffused Illuminationは日本で流行ってないな。。。

・Gainer C++ライブラリ for Windows
#動作テスト用のセンサが手元に少ししか無いので誰か貸してくれないかな-(苦笑)

あたりを再開したいところです.今週末に少しはできるかな?(多分)

Comments コメントなし »

OpenCV/videoInput Libraryによるビデオキャプチャのサンプルプログラムについて,
HandyARのデモが動かない問題の原因を発見した - サイScripterの旅立ちにて以下の指摘がありました.

どこのサイトを見ても、どうも怪しいコードしか載っていないように見える。

cvCreateImage後はimageDataにアロケートされているんだから、imageDataに代入しちゃったら解放するアドレスがわからないと思うんだけどなぁ。

でもメモリーリークの警告でないしなぁ・・・


結論から言うとメモリ解放について問題は無いです.ということで,
こちらとしても,「怪しいコードと断定」されるのも癪なので,
なぜ問題無いかについて少し書いてみます.

まず,cvReleaseImageの内部で何をやっているかというと,
確保したイメージ領域の解放のためにcvReleaseDataをコールしています.
cxarray.cppのcvReleaseData関数の中身を以下に示します.

C++:
  1. // Deallocates array's data
  2. CV_IMPL void
  3. cvReleaseData( CvArr* arr )
  4. {
  5.     CV_FUNCNAME( "cvReleaseData" );
  6.    
  7.     __BEGIN__;
  8.  
  9.     if( CV_IS_MAT_HDR( arr ) || CV_IS_MATND_HDR( arr ))
  10.     {
  11.         CvMat* mat = (CvMat*)arr;
  12.         cvDecRefData( mat );
  13.     }
  14.     else if( CV_IS_IMAGE_HDR( arr ))
  15.     {
  16.         IplImage* img = (IplImage*)arr;
  17.  
  18.         if( !CvIPL.deallocate )
  19.         {
  20.             char* ptr = img->imageDataOrigin;
  21.             img->imageData = img->imageDataOrigin = 0;
  22.             cvFree( &ptr );
  23.         }
  24.         else
  25.         {
  26.             CvIPL.deallocate( img, IPL_IMAGE_DATA );
  27.         }
  28.     }
  29.     else
  30.     {
  31.         CV_ERROR( CV_StsBadArg, "unrecognized or unsupported array type" );
  32.     }
  33.  
  34.     __END__;
  35. }


その中で,
C++:
  1. if( !CvIPL.deallocate )
  2. {
  3.     char* ptr = img->imageDataOrigin;
  4.     img->imageData = img->imageDataOrigin = 0;
  5.     cvFree( &ptr );
  6. }

という部分からわかるように実際に解放するメモリ領域の先頭アドレスとして指定されるのは
img->imageDataOriginであることがわかると思います.

では,img->imageDataOriginって何?という話になるので,
IplImage構造体について一度確認してみましょう.
cxtypes.hのIplImage構造体の定義を以下に示します.

C++:
  1. typedef struct _IplImage
  2. {
  3.     int  nSize;         /* sizeof(IplImage) */
  4.     int  ID;            /* version (=0)*/
  5.     int  nChannels;     /* Most of OpenCV functions support 1,2,3 or 4 channels */
  6.     int  alphaChannel;  /* ignored by OpenCV */
  7.     int  depth;         /* pixel depth in bits: IPL_DEPTH_8U, IPL_DEPTH_8S, IPL_DEPTH_16S,
  8.                            IPL_DEPTH_32S, IPL_DEPTH_32F and IPL_DEPTH_64F are supported */
  9.     char colorModel[4]; /* ignored by OpenCV */
  10.     char channelSeq[4]; /* ditto */
  11.     int  dataOrder;     /* 0 - interleaved color channels, 1 - separate color channels.
  12.                            cvCreateImage can only create interleaved images */
  13.     int  origin;        /* 0 - top-left origin,
  14.                            1 - bottom-left origin (Windows bitmaps style) */
  15.     int  align;         /* Alignment of image rows (4 or 8).
  16.                            OpenCV ignores it and uses widthStep instead */
  17.     int  width;         /* image width in pixels */
  18.     int  height;        /* image height in pixels */
  19.     struct _IplROI *roi;/* image ROI. if NULL, the whole image is selected */
  20.     struct _IplImage *maskROI; /* must be NULL */
  21.     void  *imageId;     /* ditto */
  22.     struct _IplTileInfo *tileInfo; /* ditto */
  23.     int  imageSize;     /* image data size in bytes
  24.                            (==image->height*image->widthStep
  25.                            in case of interleaved data)*/
  26.     char *imageData;  /* pointer to aligned image data */
  27.     int  widthStep;   /* size of aligned image row in bytes */
  28.     int  BorderMode[4]; /* ignored by OpenCV */
  29.     int  BorderConst[4]; /* ditto */
  30.     char *imageDataOrigin; /* pointer to very origin of image data
  31.                               (not necessarily aligned) -
  32.                               needed for correct deallocation */
  33. }
  34. IplImage;


コメントにもありますが,imageDataOriginは,cvCreateImageで確保したイメージ領域を解放する
ことを保証するために用意されていて,実際にcvCreateImage関数の内部で
呼ばれるcvCreateData関数の中で,イメージ領域の割り当て時に
イメージ領域の先頭アドレスはimageDataとimageDataOriginの両方に格納されます.
cvarray.cppのcvCreateData関数の一部を以下に示します.

C++:
  1. if( !CvIPL.allocateData )
  2. {
  3.     CV_CALL( img->imageData = img->imageDataOrigin =
  4.                         (char*)cvAlloc( (size_t)img->imageSize ));
  5. }


ということで,imageDataが変更されても,imageDataOriginにイメージ領域の先頭アドレスが
格納されているので,cvReleaseImageできちんと解放されることがおわかりいただけると思います.

そんなわけで,OpenCVの内部でどうなっているかを把握した上で書いている点ご理解ください.
※誤解を生まないようVI.getPixelsで取得したイメージデータをmemcpy使ってコピーすれば
 いいんでしょうけど,ループ中にメモリコピーを行うと速度が落ちそうなので,ポインタの変更で済ませちゃってます.

#まぁ,指摘通り,C,C++がある程度わかる人には一見危なそうに見えるのは事実なんですが,
#このようにきちんと内部動作まで解説するとそれなりに大変で,初心者がそれを読むと挫折しそうなので
#今のところ説明を省いています.その辺のバランスって難しいですよね。。。
#何か良い案があれば教えてください.

Comments 4 コメント »

同期曰く,年齢を重ねていくうちに運動しても体重が減りにくくなるターニングポイント的なものを
感じる瞬間があるらしい.今のところそんな予兆は全くないけど恐ろしい.
自分の場合,学生時よりも運動量は減って,食べる量は増えた気がするんだけど,
体重は平行線なので,むしろ,原理が説明できない自分の身体が不気味でしょうがない(苦笑)

とか書くと,いろんな方面から反感を買いそうだけど,「食べ過ぎて運動しなかったら太る」という
ごく当たり前の法則が成り立たないのはなんだか気持ち悪い.摂取したエネルギーは何処へ(遠い目)

というか,どんだけ燃費が悪いんだ。。。orz
#逆に原理がわかればビジネスになりそうだけど.

***********

詳解 Objective-C 2.0

著者/訳者:荻原 剛志

出版社:ソフトバンククリエイティブ( 2008-05-28 )

定価:¥ 4,410

Amazon価格:¥ 4,410

大型本 ( 560 ページ )

ISBN-10 : 4797346809

ISBN-13 : 9784797346800




も時間を見つけてちょこちょこ読んでますが,
Objective-Cは特殊な言語? - @ITはさらっと読めそうなので,後で読んどこう.
それにしてもなかなかObjective-C独特の記述に慣れないな。。。

CocoaアプリやiPod touchアプリを開発するなら必須の知識らしいので,
なんとか身につけたい言語ではあるんだけど.

Comments コメントなし »

久しくOpenCVで遊んでないけど,これまで書き損ねてた豆知識的な事を書いてみます.参考までに.

■opencv_introduction
既出かもしれませんが,opencv-docにある
・opencv_introduction_2007June9.pdf
・opencv_objectdetection_2007june10.pdf
が結構良い感じにまとまっているよなーと.
この発表の資料かな?

(英語だけど)OpenCVの概要を掴むには良い教材だし,それなりに情報も新しい.
他所の情報を引用しただけの微妙なサイトよりも遙かに有用.

■CodingStyleGuide
ソースを直に読むなら,既存のファイルや関数の命名規則などが分かっていた方が遙かに効率が良いです.
CodingStyleGuide - OpenCV Library Wikiに軽く目を通すだけでも効率アップするはず!!

■CVS版
人柱的な意味合いが強いのでCVS版は避けられがちですが, 機能追加やbug fixがあって,
面白いので時々チェックしてます.

例えば,CVS版には,otherlibsの下にffopencvというディレクトリが新規で追加されてたりします.
CVSのコメントには,
>ffmpeg wrapper for opencv
と書かれているので,うまく使えばいろんな動画フォーマットに対応できるのかな?(多分)
あと,CVS版には目検出用の学習データ
・haarcascade_eye_tree_eyeglasses.xml
・haarcascade_eye.xml
が追加されていたりします.新しもの好きな方はCVS版で遊んでみる価値アリかも.

■公式サイト消失!?
個人的に結構前から凄く気になっていたのですが,IntelにあるOpenCV 公式サイトが無くなってますよね。。。
もしかして,Intelが手を引こうとしている??最近,というかかなりMLのチェックを怠ってたので,状況が掴めてません.
OpenCV本がそろそろ出るだけに気になる所です.

Learning OpenCV

著者/訳者:Gary Bradski Adrian Kaehler

出版社:Oreilly & Associates Inc( 2008-10-03 )

定価:¥ 4,666

Amazon価格:¥ 3,736

ペーパーバック ( 555 ページ )

ISBN-10 : 0596516134

ISBN-13 : 9780596516130


Comments コメントなし »