티스토리 뷰

Kinect

[Kinect Update] Kinect SDK v1.7 Released

생각많은 소심남 2013. 3. 19. 23:50

미국시간 3월 18일을 기점으로 kinect SDK v1.7와 Kinect Developer Toolkit v1.7.0이 공개되었습니다. 한동안 키넥트 관련 내용을 정리하지 않고 있었긴 하지만 이번 포스트에서 뭐가 바뀌었는지 한번 다뤄볼 예정입니다. 


<http://www.microsoft.com/en-us/kinectforwindows/develop/developer-downloads.aspx>


간단히 체험해본 바로는 MS가 완전 Kinect를 게임의 수단이 아닌 연구의 목적으로 개발하기 시작했다고 생각합니다. 무엇보다도 관심을 끄는 것은 바로 OpenCV(왠일로?)와 결합했다는  겁니다. 다들 알다시피 OpenCV는 Open Source로 공개되어 있는 Vision Library인데 상업용으로 개발된 SDK와 결합하는 방법을 소개했다는 건 정말로 시사하는 바가 큽니다. 물론 이전 버전도 놀라운 예제들이 포함되어 있지만 왠지 다음에 공개될 v1.8에서는 어떤 예제가 등장할지 사뭇 기대가 됩니다.


설치는 간단합니다. 그냥 현재 v1.6이 설치되어 있는 상태에서 파일을 다운로드 받은 후에 재설치하시면 됩니다. 

*참고로 v1.6과 OpenNI bridge driver를 설치하신 분도 설치하셔도 됩니다. 정상적으로 동작하는 것을 확인했습니다. 


자 우선 공개된 Release Note를 살펴보겠습니다.

 첫번째 변화 사항은 드디어 손을 활용한 제스쳐가 등장했다는 겁니다. 이전 v1.6에서는 단순히 Skeleton Data를 활용한 화면이동만 가능했었는데 이번에 공개된 예제에서는 grab과 press 제스처가 등장했습니다. Press야 그렇더라도 grab이 새로운 gesture interaction 으로 등장했다는 건 MS에서도 다양한 제스처를 넣으려는 의도가 있다는 것으로 보여집니다. 물론 grab 이 인지되는 원리는 손을 tracking한 상태에서 면적변화를 통해서 잡아내는 거 같은데 조만간 finger tracking도 등장할 듯 합니다. 이와 함께 interaction을 원할히 할 수 있는 환경 또한 추가되었습니다. 그 내용은 다음과 같습니다.

  • User stands 1.5 - 2.0 meters away from the sensor
  • Sensor mounted directly above or below the screen showing the application, and centered
  • Screen size < 46 inches
  • Avoid extreme tilt angles
  • As always, avoid lots of natural light and reflective materials for more reliable tracking


두번째는 interaction에 관한 dll파일을 공개한 겁니다. 



원래 toolkit과 Face tracking에 관한 dll이 기존에 제공되었고 이번에 새롭게 추가된것이 Control과 Fusion입니다. Control은 말그대로 앞에서도 언급했던 새로운 interaction을 쉽게 재사용할 수 있도록 프로젝트 형식으로 되어있는 겁니다. 이걸 빌드해서 다른 프로젝트에 삽입해면 그 안에 정의되어 있는 API를 호출해서 쓸수 있다는 것이지요. 두번째가 Fusion인데요.

제가 참 이것도 샘플로 공개될 줄은 이야기만 들어왔던거라 참 놀랍고 신기하네요. 혹시 제가 소개해드린 영상중에 이 영상 기억하시는지요?



바로 3D Reconstruction에 관한 연구 자료였는데요. 이 프로젝트 이름이 Kinect Fusion이었습니다. 이것을 일반 개발자들도 쉽게 사용할 수 있도록 dll 파일로 만들어진 것이 바로 위의 toolkit입니다. 짧게 더 소개하자면 DirectX11 3D 가속 기능을 활용해서 사물을 Reconstruction 시키고 그걸 시각화해주는 작업을 해줍니다. 여기에 추가적으로 특정 사물에 대해 obj 파일 형식으로 mesh도 뽑을 수 있게끔 구현되었기 때문에 Max 같은 작업과 연동하기에도 수월하게 되었습니다. 이 샘플은 잠시후에 소개하도록 하겠고, 한가지 제약사항은 DirectX11을 기반으로 실행되기 때문에 그래픽카드의 영향을 많이 받습니다. 제가 가지고 있는 모델은 GTX 460인데 약간 버벅이긴 하지만 무리없이 수행되었고, 실제로 test에 사용되었던 그래픽카드는 GTX 560과 HD6950이었다고 합니다. 아마 이 부분을 통해서 공부하실 분은 그래픽카드도 좋은 걸로 구하셔야 될 듯 하네요.

 이밖에도 기존에 따로 control 형식으로 제공되던 Kinect Sensor Chooser가 기본적인 API로 구현된 것도 추가로 변화된 점입니다. 


이렇게 Developer Toolkit이 업데이트되면서 msdn도 같이 관련 파트가 추가되었습니다. 앞에서 말씀드렸던 Interaction 관련 API들이 새롭게 reference로 추가되었네요.




자 그럼 이제 새롭게 추가된 샘플을 하나씩 살펴보겠습니다. 

첫번째는 Control Basic입니다. 

여기서는 앞에서 언급되었던 새로운 interaction, grab과 press를 테스트 해볼 수 있습니다. 설명에도 나와있다시피 control toolkit을 활용한 예제로 소개되어 있습니다.



여기서 중간에 있는 건 grab을 해서 좌우로 이동시킬 수 있습니다. 하단에 있는 건 press를 통해서 버튼을 누를 수 있고요. 동작영상을 한번 보겠습니다.


이런식으로 활용한다면 정말로 다양한 기기에 제스처들을 응용해볼 수 있을 듯 합니다. 



두번째는 Interaction Gallery입니다. 


v1.6때도 이게 있었는데 이번에 추가된 interaction을 사용해볼 수 있도록 샘플이 제공되었습니다. 역시 동작 영상입니다. 



개인적으로 penable map이란 샘플이 참 맘에 드네요. 저도 저런 형식의 지도 탐색 프로그램을 생각하고 있었는데.. 정말로 다음 거리뷰 같은데 응용하면 좋을 듯 합니다. 특히 지하철 앞에 키오스크 형식으로 설치되면 터치로 하는 것보다 조금더 편리하지 않을까요?


다음 샘플은 matlab과 opencv에서 사용할 수 있는 쉬운 프로젝트 입니다. 


이걸 활용하려면 최소 matlab 2012a와 OpenCV 2.4 이상의 dependency를 설치하여야 합니다. 생각해보니까 제가 matlab은 설치를 안했네요. OpenCV만 잠시 보여드리겠습니다.


이런식으로 구현되는데 제가 OpenCV 메뉴에서 소개했던 내용들을 다 테스트 해볼 수 있습니다. Canny edge도 구현할 수 있고, erode나 dilate, gaussian blur 같은 화소 보정도 취해볼 수 있습니다. 저도 저런거 해볼라고 열심히 했는데 참... 뭐했나 싶네요.. 동작 영상입니다.



아참 이번 업데이트를 통해서 C++관련 코드들이 많이 업데이트 되었습니다. 아마 OpenCV 개발하시는 분에게는 희소식이 아닐까 싶습니다. 

다음 예제는 Kinect Fusion Basic입니다. 



앞에서 소개해드린 바와 같이 3D Reconstruction을 간단히 구현해볼 수 있는 예제입니다. 저도 돌려봤는데 생각보다 hardware의 영향을 많이 받는 거 같네요. 


이런식으로 조금은 볼품없지만 형태가 하나의 mesh로 나오고 있습니다.


한가지더 Kinect Fusion Explorer가 있는데 이건 생각보다 기능이 참 많네요. 저도 조금더 살펴봐야 될 듯 합니다. 


아무튼 여기까지가 Toolkit v1.7에서 제공되는 새로운 기능과 샘플들이었습니다. 업데이트가 될 때마다 참 놀라운 기능들이 추가되고 개발자에게 편의를 주고 있네요. 저도 처음 키넥트를 만진게 작년 이맘때 쯤이었는데 세미나에서만 보던 기술들을 이렇게 직접 해볼 수도 있게 되서 참 신기합니다. 시간적 여유가 된다면 이런거도 하나씩 건드려보고 개발하고 싶지만.. 참 대학원 생활이 다 그렇지요 뭐... 

 뭐 아무튼 언젠가는 저도 제가 꿈꾸는대로 뭔가를 할 수 있겠지요. 그때 간다면 SDK도 더 많은 기능을 제공할지도 모르겠구요. 아무튼 이번에 추가된 기능에 대해 궁금하셨던 분께는 도움이 되셨으면 좋겠습니다.

댓글