SyntaxHighlighter

2011-09-07

kinect勉強会vol.3 に行ってきた

昨日ありましたので、行ってきました。名だたるマイクロソフトセミナールームでMac, iPad率の高さに、かなり、挑戦的な勉強会だったような気がします。そして、セッション内容もMS Kinect SDKをまともに扱ったのはマイクロソフトの方の発表のみという。。。
そんな状況でも天下のマイクロソフトさまは寛大な心で見て見ぬ振りをしてくださったことでしょう。

既に良質なまとめブログとかがあるようですので、あんまり細かいことは書きませんが、Kinectのドライバだけでなく、Kinect自体にもライセンスと言うか、使用を制限する文言があるってことは驚きでした。罠は思わぬところに張ってあるのだなあ。

あと、NUIって何ぞや、的な話が出てきて、PCはNUIに向かないということらしい。まあ、キーボードとマウスを使うことを前提に今まで発展してきたものだから、同然っちゃ当然なのかも。これから出てくる、新しいデバイスやらなんやらのためのUIなのかも。安直に考えるとSignageとか??
個人的には、NUIとは、人々の普段行っている自然な動作を、情報システム(上述のごとく、NUIの文脈でPCはそぐわない?)にアクセスにマッピングする行為、的な考えを推したいところだけど。Content Awarenessだったっけ?、を言い換えただけだけど。。。

この辺も勉強し直すかな。。

2011-09-05

「キネクトハッカーズマニュアル」を読んだ

タイトル通り。斜め読みした感じですが。全文カラー、素晴らしい。

内容は、Kinectに関する内容が幅広〜く取り扱われていて、メインはKinectハックのやり方が書かれている感じです。特定のフレームワークに限定せずに、OpenNIとかMicrosoftのSDKだとか、それらを便利に使うためのopenFrameworksを使った方法などが紹介されていました。また、Kinectで画像を扱う場合はほぼお世話になるだろう、OpenCVは一章設けてありました。
そうは言いつつ、それぞれのフレームワークの(一部を除いて)細かいところは深入りせず、とりあえず使えるようになって、簡単なサンプルが作れるところまでを重点的に示されているようです。使い方以上に突っ込んだ内容は、各種専門のドキュメントを参考にする必要があるかと。Kinectハック初めての人や、今までOpenNIなど特定のフレームワークしか使ったことがなかったけど、他のSDKとかどうなんだろう?という人向けなのだと思います。

KinectやOpenCV以外の、node.jsやらHTML5関連の技術がほぼ説明なしで使われているところは、普段Web開発している人向けに書かれているためかなあ(何故かは知らないけど、Kinect界隈で遊んでいる人達は、Web技術者が多いらしい。勉強会とか見てると。。。)。普段C++も書かない、Web開発にも関わっていない(私みたいな)人だと、特に後半ちょっと辛い部分があるかも。。。

あと、個人的な感想:
  • 所々に書いてあるコラム的な、KinectのSDK等に使われている技術や、NUIに関する話題が楽しく読めました。
  • 一つに縛られない、ある意味発散系な内容で、個人的には好きです。
  • 認識系のOpenCVが書かれているなら、折角だから、表示系に関するOpenGLとかも書かれていたらなあ、と思います。認識系はそこそこにインタラクティブに魅せる作品が多いことを鑑みると、需要は多いはず。
  • 真面目に読み解いていないけど、ソースコードが場所によって雰囲気が違ってる。書いた時期が異なるだけなんだろうけど。そんなものなのかしら。
  • これを読むとKinectとか使って何か作りたくなる気分になる
だれか、音声系もレクチャーしてくれないかな。。。

2011-08-29

KinectでFFT

注)β時代のSDKを使っていた頃の記事です。最新版では動かないと思います。。。

KinectのマイクロフォンからのデータをFFTできたら面白いかなあと思った続き。

いろいろあって、すごく時間が空いてしまったような気がするけど、とりあえず、kinectのマイクロフォンのデータを取得する関数からの出力を使って、FFTができるようになった。

いろいろ変なところもあろうが、該当部分のソースを晒してみることにした。

  • FFTの本体
const int fftLength = 1024;
byte[] rawData;
const int rawDataLength = 1024 * 2;
AForge.Math.Complex[] fftBuf;

public void doFFT(Stream audioStream)
{
  int recordLength = rawDataLength;
  while (recordLength > 0)
  {
    int count = audioStream.Read(rawData, 0, recordLength);
    recordLength -= count;
  }
  for (int i = 0; i < fftLength; i++)
  {
    fftBuf[i].Re = (rawData[2 * i + 1] << 8 | rawData[2 * i]);
    fftBuf[i].Im = 0;
  }
  AForge.Math.FourierTransform.FFT(fftBuf, AForge.Math.FourierTransform.Direction.Forward);
}
  • 使う側
using (var source = new KinectAudioSource())
 {
   source.SystemMode = SystemMode.OptibeamArrayOnly;
   using (var audioStream = source.Start())
   {
     while (true)
     {
       doFFT(audioStream);
     }
   }
}

ぶっちゃけ、これだけ。あとは枝葉末節(AForgeライブラリに関しては、以前の記事を参照のこと)。


スピードは、FFTの処理自体は付いてきてくれているはずだけど。。。この後、前回記事のように、FFTの結果をスペクトルっぽく表示しているのだけど、ちょっと遅れているように感じる。。。どこか悪いのだろうか??
あと、関数から取得できるデータって、1入力だけなのかしら。マイク4つあるはずだから、4入力取得できる方法があるのかしら(しっかりマニュアル読んでないだけだけど)。


しかし、慣れてないせいもあって、C#、というよりWindowsで図とか表示するの難しいなあ。KinectやらFFTで悩んでいる時間より、画面に図形とかを表示する方法が分からなくて悩んでいる時間のほうが長いや。。。


Related Posts Plugin for WordPress, Blogger...