오늘 테스트 결과물은 Kinect SDK 1.7 에서 제공되는 FaceTrackingVisualization 을 뜯어보고, 나만의 프로젝트로 이식하기 까지다.
글의 서두이자 테스트하게 된 이유는,
연구실의 박사님께서 얼굴을 트래킹하는 프로그램을 하나 부탁하신게 있어 시작하게 되었다.
먼저 조사결과, 얼굴을 robust 하게 tracking 할수 있는 방법은 2가지로 줄일수 있는데,
1. FaceAPI
2. KinectSDK - FaceTrackLib
하지만, FaceAPI는 유료이기때문에.. 패스!
Kinect SDK 에서 제공하는 SDK는 무료이기 때문에, 이녀석을 뜯어보고 사용하기로 결정했다.
일단 FaceTrackingVisualization 에서는 크게 2가지로 나누고 있다.
1. MultiFace
2. SingleFace
하지만 나는 얼굴 하나만 트래킹 하면 되기에 싱글을 뜯어보기로 했다.
샘플을 돌려보면 알겠지만, 왼편에 원처럼 생긴곳에 트래킹 얼굴을 따라 아바타가 나타나고, 오른편에는 얼굴을 따라 삼각형 메쉬덩어리들이 얼굴위에 뙇! 나타난다.
내가 필요한 부분은 삼각형 메쉬 덩어리들이기때문에, eggavatar 부분은 버리고,
키넥트로 부터 영상을 받아오는 부분과, 얼굴을 detect 하는부분, 이렇게 찾아본 결과,
KinectSensor = 키넥트에서 영상을 받아오는 부분 (순수 키넥트 영상)
SingleFace = 키넥트에서 받아온 영상을 처리하여 얼굴을 찾는 부분
Visualize = 삼각형 메쉬를 그려주는 부분
이렇게 3가지 부분으로 정리되었다.
그리고 중요한 점!
여기서는 Depth 와 Skeleton Tracking 을 통해 머리와 목을 트래킹 하여 얼굴영역을 트래킹 한다는 사실!
그리고 Depth 영상의 Resolution은 320 X 240 이라는 사실!
(Color 영상은 640 X 480 이다.)
마지막으로 GetClosestHint() 함수를 통해 가장 가까운 사람을 Detect 한다는 사실!
다음으로
영상을 어떻게 출력해줄것인가..??
나는 OpenCV를 사용하여 MFC 의 Picture Control 영역에 뿌려주기 위해 작업을 했다.
그리고 하면서 알게 된 결과..
여기서 영상을 출력해주기 위해 사용하는 영상 포멧은 IFTImage 이고, 4channel 로 이루어져있다는 사실..
이제 필요한 부분과 필요없는 부분을 골라내서 마무리!
대충 결과물은 아래와 같다. (이미지와 영상 참조)
(이미지는 얼굴영역을 어떻게 잡나 보여주기위해, mesh를 제거하였다.)
개발환경 : Window 7, Kinect SDK 1.7, VS 2010, C++, MFC
결과.
트래킹이 잘된다.
하지만 문제점이 있는데,
어느정도 가까워지면 트래킹이 끊어진다. (아마도 스켈레톤을 하지 못해서 이지 않을까.. 라는 생각 )
그리고 한번씩 인식된 부분이 튄다는점인데..
뭐 앞으로 마소 에서 개선하겠지??
이제, 내부구조를 조금 더 파해쳐보고, 수확이 있으면 다음번 포스팅에 올릴예정이다.
'[ Topics ] > Kinect 1.0' 카테고리의 다른 글
[140327 Source code Update]FaceTrackLib 을 이용한 눈동자 트래킹 (4) | 2013.07.24 |
---|---|
Kinect SDK 1.7 coming at March 18 (0) | 2013.03.18 |
Kinect의 IR-Camera 로의 접근 (0) | 2013.02.28 |
Kinect SDK 1.6 맛보기 (0) | 2013.02.28 |
1-inch UniTouch System using Kinect (0) | 2013.01.30 |