티스토리 뷰

Kinect

[Kinect 원리] Kinect의 Depth Sensing

생각많은 소심남 2012. 7. 10. 14:45

문득 키넥트가 Depth를 어떻게 인지하고 있는지에 대한 궁금증이 생겼습니다. 물론 IR을 사용해서 키넥트가 그 값으로 사람의 깊이를 인지한다는 것을 알고 있었지만 그 원리가 정확히 어떤 건지에 대해서는 잘 몰랐습니다. 그래서 테스트를 해보았습니다.


우선 키넥트와 같은 Depth Camera는 여러가지 방식이 있습니다. 그중에 ToF라고 하는 방식이 있는데 이건 Time of Flight의 약자로써 흔히 IR이 움직이는 시간을 감지해서 Receiver가 받은 시간과 비교해 그 값으로 깊이를 인지하는 방식입니다. Soft Kinect나 파나소닉 D-Imager 같은 카메라가 이 ToF 방식을 취하고 있고 단순히 거리만 측정하는 알고리즘이 적용되기 때문에 간단하고 빠릅니다. 그리고 매우 단순하지요. 단점이 있다면 아무래도 하나의 정보만 가지고 깊이를 판단하기 때문에 외부 간섭의 영향이 있을 경우에는 결과값이 확 바뀌는 점도 있고, 빛의 영향도 크다는 점이 있겠네요.

 또 다른 방식으로는 IR을 넓게 쏴서 하나의 pattern을 인식하는 방식입니다. 물론 정보가 ToF방식의 거리 측정이 아닌 사물의 형태 자체를 인식하는 것이기에 조금더 외부환경에 대해서 강하다고 생각되네요. 여기에는 계속 소개하고 있는 Kinect도 포함되어 있습니다. 밑의 동영상이 바로 IR pattern을 통한 인식을 보여주는 예라고 보시면 됩니다.



저도 궁금해서 한번 시도해봤습니다.



가운데 점 같은게 세밀하게 뿌려지는 게 보일 겁니다. 이걸 Kinect의 Depth Sensor가 인지해서 받아오는 형식을 취합니다.




보면 중간 중간에 밝고 큰 점이 있는데 아마 위치를 기준할 수 있는 기준 점이 아닐까 하는 생각을 해봅니다. 이와 같은 방식을 취한다면 어떤 문제점이 생길까요? 


 제일 큰 문제점이 중첩의 문제입니다. 만약 키넥트를 여러개 사용한다면 어떻게 될지 상상해봅시다. 키넥트는 각자의 IR을 보낼 것이고 그 패턴을 각 기기가 받아야 정상적인 Depth로 인지를 할텐데 위와 같은 방식을 취한다면 IR간에 중첩이 생기게 됩니다. 즉  Pattern을 정확히 인지하지 못해서 kinect만이 가지는 Depth sensing의 차별성이 사라지게 되는 것이죠.

 CDMA방식처럼 빛에도 암호화 방식을 가해서 빛끼리도 구분을 할 수 있다면 얼마나 좋을까요? 그저 상상일 뿐입니다.


댓글