오랫만에 새글을 작성하는거 같다.
춘계 멀티미디어 학회 준비도 그렇고 연구실 프로젝트도 그렇고 이런저런 일이 겹쳐서 너무 정신없었던 나머지 업데이트도 하지 못했다.
어째뜬, 오늘 글을 끄적이는 주제는 RGB 이미지와 Depth 이미지의 Calibration 인데, 관련 자료를 찾아보는데, 너무나도 많은 시간을 허비한거 같다.
외국사이트에서는 OpenNI를 이용하여 RGB 와 Depth 카메라 각각에 접근, 체스보드판을 촬영하여 정확한 Calibration 값을 추출하여 Point Cloud를 구성 하는것을 많이 봤지만, SDK를 활용해서 만든 자료는 거의 없었다.
하지만 이번에 SDK 버전이 1.0으로 업뎃이 되면서 이런저런 좋은 함수가 지원이 되는데, 그중에 쓸만한것 2개정도만 간추려서 소개를 해볼까 한다.
각 함수의 매개변수는 구글에 복사해서 엔터키 땅 때리면 쫘르륵~~ 나오니깐 검색해보시길..
(솔직히 귀찮은것도..?? 하하..ㅋㅋㅋㅋ)
첫째. NuiImageGetColorPixelCoordinatesFromDepthPixelAtResolution()
아래 사진은 그 결과물이다.
하지만 결과물은.. 썩 맘에 들지 않는다. 왜냐하면 Depth 이미지가 오른쪽으로 2~3픽셀씩 시프팅 된거 같은데, 수동으로 반대로 이동 시키면 나머지 부분이 좀 매칭이 안되는 경향이 있다.
그래서... 패스!!
관련 함수 사용한 홈페이지의 레퍼런스 : http://kassymemo.blogspot.com/2012/04/kinect-for-windows-sdk3.html
두번째. NuiImageGetColorPixelCoordinateFrameFromDepthPixelFrameAtResolution()
이함수는 결과물을 보면 알수있겠지만 어느정도 매칭이 되는것을 확인 할수가 있다.
너무나도 맘에 든다.
좀 울렁 거리는게 있지만, 저건 뭐 Image Processing 작업을 통해 해결 할수 있을거라 생각하고..
관련 함수 레퍼런스 링크 : http://stackoverflow.com/questions/10117396/trouble-fitting-depth-image-to-rgb-image-using-kinect-1-0-sdk
아래에는 관련 결과물을 촬영한 영상이다.
이제 Calibration 작업을 진행했으니 , 아마도 다음은 OpenGL 을 MFC에 붙여서 Point Cloud 환경을 구성하지 싶다.
그리고 이전에 진행하던 핸드트래킹 시스템을 Point Cloud 시스템에 붙여서 더욱 디테일 한 환경을 만들어보고싶다. 얼마나 걸릴지 모르지만..ㅋㅋ
앞으로 갈길은 정말 멀고도 험하구만.. 하지만 재밋다. 정말로 ^^
앞으로 어떠한 역경이 나를 또 괴롭힐지.. ㅎㅎ
------------------------------------------------------------------------------------
해당 프로젝트 파일을 원하시는 분들이 많아서 자로 함께 첨부합니다.
오래전 파일이라서 새로 프로젝트 파일 작성했구요,
구동환경은 VS2012, OpenCV 2.4.2, C++, Kinect SDK 1.8 이구요, Console 에서 구동 합니다.
RGB영상에 맞게 Depth 정보를 매핑 시키는 프로그램이구요, 이를 응용 및 활용하면 Point cloud 도 생성 가능합니다.
Kinect_DepthCalib_in_console(RGB, Depth with calib, OpenCV).vol1.egg
Kinect_DepthCalib_in_console(RGB, Depth with calib, OpenCV).vol2.egg
------------------------------------------------------------------------------------
'[ Topics ] > Kinect 1.0' 카테고리의 다른 글
1-inch UniTouch System using Kinect (0) | 2013.01.30 |
---|---|
NuiInitialize() 에서 뻗는 문제점과 해결방법 (8) | 2012.08.13 |
손끝점(Finger Tip) 을 찾기 위한 고찰과 방법 (12) | 2012.03.02 |
Kinect SDK 에서 Type 별 지원 Resolution (0) | 2012.01.18 |
Skeleton 의 Joint 와 Depth 값 구하기(130923_소스추가) (40) | 2012.01.07 |