2014年1月29日水曜日

Kinect: Facetrackerを利用する際の初期設定

KinectのFacetrackingの初期設定でちょっとハマったのでメモ書き。

要求スペック
  • Kinect SDK 1.5以上
  • Kinect Developer Toolkit 1.5以上
  • Kinect for Windows本体(XBOX360版でも可。ただし、nearモードが使えない点に注意)

SDK類はバージョンに注意。特に、Developer Toolkitは忘れないように。

利用する(参照する)ライブラリ
  • Microsoft.Kinect
  • Microsoft.Kinect.Toolkit.FaceTracking
  • Microsoft.Kinect.Toolkit
この3つだけでOK。最初のライブラリはKinectSDKのものです。残りの2つはToolkitのディレクトリに入っていますが、下記に紹介するように各ライブラリはコンパイルして作成し直すことをオススメします。

ライブラリのプラットフォームに注意
Visual Studioで開発する際には
  • x86(32bit)
  • v64(64bit)
  • Any CPU
というようにビルド時のターゲットが選べます。ここで問題になってくるのは、利用するライブラリがどのターゲットでコンパイルされているかです。Kinectのサンプルプログラムの場合、この当たりがちょっと不明で、適当に選んだりすると、
ということになります。

ライブラリの再コンパイルと実行の手順
詳細は書きませんが、だいたい以下のようになります。

(1)Developer Tool Kitから各ライブラリのプロジェクトをインストール
  • スタートメニューからKinect for Windows Developer Toolkitの画面を起動
  • Componentsを選択
  • Microsoft.Kinect.Toolkit.FaceTrackingとMicrosoft.Kinect.Toolkitをインストール(Visual Studioのプロジェクトが保存されます)


(2)現在開発しているソリューションに保存した各プロジェクトを追加



(3)プラットフォームを共通にする
各プロジェクトのプロパティ→ビルドで x86 または x64にしてください。どちらが良いかは、他に利用するライブラリによっても変わってきます。



(4)参照設定にてプロジェクトを追加


これで動くはずです。Facetrackingのクラスが呼び出せないのは、まずプラットフォーム(x86,x64,anyCPU)の違いであると考えていいと思います。


2014年1月21日火曜日

AWS:SimpleDBのクエリーで order by する際の注意事項

ちょっとしたメモ書き。SimpleDBのクエリーでは、RDBのSQLと同様にorder byを利用したソーティングができます。
  • 降順: order by XXXX desc 
  • 昇順: order by XXXX asc 
となります(XXXXはソートするAttribute名)。ただしソート対がnullを含んではいけないというのがあり、これはクエリーで明示的に書いておく必要があります。具体的には、以下のようにwhere句でnullがないように明示しておく必要があります。
where XXXX is not null order by XXXX desc
ご注意を。

2014年1月15日水曜日

ちょっと大きい数の数値計算にMaximaを使ってみました

講義の資料としてMod(モジュロ)表を自作しようとしたのですが、ちょっとハマったので、、、

演算桁には限界がある
コンピュータのことを知っていれば当然の話ですが、コンピュータの演算桁には限界があります。講義資料用に、ab (mod 33)の表を作成しようとしたのですが、Excel でmod関数を使ったら、ちょっと計算しただけで(10乗当たりで)限界になりました。mod関数を使わなかったといても、12乗当たりで限界に。C言語でunsigned long long型を使ってみましたが、ほぼ同様な結果に。

Maximaというソフト
よくネットにアップされているMod表はどうやって作られているのか?通常の数値型を使わずに配列などを用いるなど、工夫をしてプログラムを書けばCでもできるのでしょうけど、ちょっとめんどくさい。
数値計算用のソフトやライブラリを使えば手っ取り早い。代表的なソフトにはMathmaticaがありますが、今回、フリーソフトのMaximaというのがあるので、これを試してみました。ちなみに、Maximaでabのmod表を出力するコードは以下の通りです。
Maxmaでコードを書くのは当然初めてなのでいろいろ試行錯誤しましたが、とりあえずこんな感じでいいかと思います。
個人的にはこういった数値計算ソフトを使うのは初めてでしたが、今度は、CやJavaで数値計算ライブラリを使って試してみようかと思います。