robo8080のブログ

ロボット製作や電子工作など。

Processingを使ってKinectカメラ画像にAR表示させてみた。

2013年12月12日 | Processing

Kinectカメラ画像にAR表示させるのは、NyARToolkit for processing(NyAR4psg) + SimpleOpenNIを使えば簡単。

使用したもの

・Windows 8.1 (64bit版)

Processing-2.0.3 (32bit版)

NyARToolkit for processing(NyAR4psg)-1.3.1

SimpleOpenNI

Kinect for Windows SDK v1.8

・Kinect for Xbox

 Kinect for Windows SDKがインストールされていれば、別途OpenNIのインストールは不要になったみたいだ。

手順

1.Processingをダウンロードし、適当なディレクトリに解凍する。 

 シリアルポートを使う予定があるなら、OSにWindows 64bit版を使用していても、32bit版をダウンロード。

 解凍するディレクトリ名に日本語は使わないほうがよい。

2.Processingを起動し、SimpleOpenNIをインストール。

 メニューの Sketch ー> Import Library... ー> Add Library... を選択し、SimpleOpenNIをインストールする。

3.ここの一番下にある”nyar4psg-1.3.1.zip”をダウンロードし 、適当なディレクトリに解凍する。

4.解凍したら、次のようにnyar4psgを使う準備をする。

  nyar4psg-1.3.1\examples\for2.x にある ”setup_example_pss2.bat”を実行。

  nyar4psg-1.3.1\data にあるARマーカー”pattHiro.pdf”をプリントアウト。

5.USBカメラを接続し、nyar4psgのサンプル”simpleLite”が正常に動くか確認する。

  ”simpleLite”の場所はここ。 nyar4psg-1.3.1\examples\for2.x\simpleLite\simpleLite.pde

     

6.Kinect for Windows SDK v1.8をダウンロードし、インストールする。

  同時に「Kinect for Windows Developer Toolkit」もダウンロードし、インストールしておく。

  インストールしたSDKのサンプルプログラムでKinectが正常に動くことを確認する。

  

7.Processingを起動し、メニューの File ー> Examples... からSimpleOpenNI付属のサンプルプログラムが動くことを確認する。

  

8.NyAR4psg付属のサンプル”simpleLite”を以下のように改造して別名で保存しておく。

  これを起動してKinectカメラに印刷したARマーカーを見せれば、カメラ画像に立方体がAR表示されるはず。

 

 

ー以上ー

 


参考リンク

Installation - simple-openni - How to install. - OpenNI library for Processing

 


Kinect + ProcessingでFingerTrackingの実験

2012年12月10日 | Processing

KinectとProcessingを使ってFingerTrackingができないか調べていたところ、これを見つけたので試してみた。  

Kinect + Processing + SimpleOpenNI を使ったFingerTracking  

FingerTracker

私は通常 Kinect SDK を使用しているので、Kinect SDKとOpenNIを共存させることができるこれを使用した。

kinect-mssdk-openni-bridge

(Kinect SDKもProcessing から使えるようになったようだ。ただ、OpenNIのNiteに相当するものがないのが残念。追記2012.12.12)

ということで、

 Kinect SDK v1.6 + kinect-mssdk-openni-bridge + OpenNI + SimpleOpenNI + Processing

という構成で ”FingerTracker” を試してみたら、ちゃんと動いた。

この構成で動くというのが逆にすごい... (^^;)

 

 

◆動かしてみてわかった問題点

・Depthを二値化して指を検出するための閾値が固定であるため、認識しやすい位置に手を固定しておかなければならない。

・手の動きの自由度を上げるために閾値を大きくすると、体の一部や周囲のものを誤検出する。 

 

動的に閾値を変える良い手が無いか考えていたところ、いい案を思いついた。

OpenNIには手の平を検出するHandTrackingの機能がある。

SimpleOpenNI Niteのサンプルプログラム"Hands"

 

これで手の平の座標を求め、その周囲のDepthデータだけを”FingerTracker”へ喰わせてやれば...

実験してみたところうまく行った。

動画はこちら。 

KinectでFingerTrackingの実験

 

◆使用した環境

・Windows 7 64ビット版

・Kinect Xbox版

・Kinect for Windows SDK v1.6

・OpenNI 1.5.2.23 32ビット版

・Processing 1.5.1

・SimpleOpenNI 0.27

・kinect-mssdk-openni-bridge-v1.6.0.0-for-1.5.2.23

 

―以上―


 

ここを参考にさせていただいた。

Kinect for Windows を OpenNI で使う(Windows 7 限定)

関連するリンク

Kinect for Processing Library (Kinect for Windows SDKをProcessingから使えるようにするライブラリ)


無線LANカメラ+ProcessingでAR表示をやってみた。

2012年03月27日 | Processing

無線LANカメラ+ProcessingでAR表示をやってみた。

使用したもの

Processing Processing1.5.1

NyARToolkit for Processing nyar4psg-1.2.0

PLANEX小型無線LANカメラCS-W07G-CY

 

 

ソースコード

例として、NyARToolkit for processingに付属のサンプルプログラム"simpleLite"を使用するものとする。

下図赤枠のようにソースコードを修正する。

注:無線LANカメラのアドレスは"192.168.0.100"に設定してあるものとする。

 

これを実行すると、このように表示されるはず。

ARパターンは、NyARToolkit for processingに付属の"pattHiro.pdf"を印刷したもの。

 

―以上―

 

ここを参考にさせていただいた。

電池で動くWi-FiカメラCS-W07G-CY(やっと)到着

・プラネックスのネットカメラも試してみる


Processingで”パーティクルフィルタによるトラッキング”を試してみた。

2012年01月29日 | Processing

ここを参考にProcessingで”パーティクルフィルタによるトラッキング”を試した。

ボールのトラッキングをしてみた。

オリジナルのままだと、一度ロストするとなかなか再捕捉しないので少し改造した。

Processingで"パーティクルフィルタによるトラッキング" その1

 

表示を少し変えてみた。

Processingで"パーティクルフィルタによるトラッキング" その2

 

―以上―