'Computer/kinect'에 해당되는 글 6건

  1. 2013.01.15 [kinect] SimpleOpenNI 설치 및 HelloWorld
반응형

SImpleOpenNI 는 Kinect 데이터를 Processing 에서 접근할수 있도록 해준다. SimpleOpenNI Library의 Installation은 다음의 사이트에서 확인할 수 있다.


http://code.google.com/p/simple-openni/wiki/Installation


SimpleOpenNI 의 설치는 


1) Kinect와 통신하여 그 데이터를 접근하거나 처리하게 해주는 PrimSense에서 제공하는 OpenNI 설치

2) SimpleOpenNI Processing 라이브러리 설치


Kinect는 다음과 같은 한계를 가진다.


minimum range - Kinect가 인지하는 거리는 20 inches 가 최소 거리이다. 그 이하로 가까운 거리에 대해서는 정확하게 측정이 불가능하다. 그 이하의 거리의 depth는 0으로 인지한다. (다시 말해 Infinitely far away)

noise at edges - 적외선이 반사되는 것의 한계로 에지 부분에는 외곡이 생긴다. 

reflection causes distortion - 거울과 같이 빛을 반사하는 것은 infrared dots에 외곡을 발생시킨다. kinect는 kinect와 거울과의 거리와 거울과 거울에 반사되는 물체와의 거리를 더해서 depth를 계산한다. 이는 glass door나 유리창 같은 것으로 외곡이 발생할 수 있다는 것을 알 수 있다.

occlusion and depth shadows - kinect는 IR dot을 쏘고 그 IR dot이 물체에 도달하고 kinect로 반사되어 돌아와 kinect의 IR camera에 읽히기 때문에 특정 물체가 kinect 앞에 놓여 있을 경우에 가려진 물체를 kinect는 인지하지 못한다. 이를 occlusion 이라고 한다. 
misalignment between the color and depth images - 적외선 카메라와 컬러 카메라의 위치가 다르기 떄문에 각각의 이미지의 point가 일치하지 않는다. 하지만 두 영상을 일치시키는 것이 가능하여 배경을 제거하거나 3차원 영상을 만드는 것등이 가능하다.


다음은 Processing에서 Kinect에서 depth/color 카메라에서 이미지를 가져와서 보여주는 코드 이다.


import SimpleOpenNI.*;

SimpleOpenNI kinect;

void setup()

{

size(640*2, 480);

kinect = new SimpleOpenNI(this);

kinect.enableDepth();

kinect.enableRGB();

}

void draw()

{

kinect.update();

// kinect에서 새로운 데이터를 가져 온다.

PImage depthImage = kinect.depthImage();

// kinect의 depthImage 데이터를 가져옴

PImage rgbImage = kinect.rgbImage();

// kinect의 rgbImage 데이터를 가져옴

image(depthImage, 0, 0);

image(rgbImage, 640, 0);

}

void mousePressed(){

color c = get(mouseX, mouseY);

println("r: " + red(c) + " g: " + green(c) + " b: " + blue(c));

}


//kinect는 초당 30 frame으로 데이터를 수집, 전송한다. Processing에서는 일반적으로 draw는 초당 60번을 호출하려고 하며 Processing의 frameRate를 호출하여 설정 가능하다. 컴퓨터 성능에 의존적임


//kinect의 distance는 11bit의 resolution을 가지지만 상기 예제에서는 0-255 Range로 값을 가지고 있다. SimpleOpenNI는 full range의 값을 가져오는 방법이 있으며 다음 포스팅에서 설명한다.


다음은 실행하여 Depth Image 의 특정 지점을 클릭한 실행 예이다.



반응형
Posted by alias
,