티스토리 뷰

OpenCV

[Kinect with OpenCV] Hand Tracking using Depth Data & Blob

생각많은 소심남 2012. 10. 5. 00:40

결국 CAMshift는 포기하고 다른 방법으로 가기로 했습니다. 이제 활용할 방법은 전에도 한번 소개해드린 blob Labeling을 기반으로 가기로 했습니다.



사실 저도 영상처리 지식이 많이 부족해서 다른분 도움을 많이 받았습니다. 그래서 Blob마다 LabelIndex가 잡히고 그걸 토대로 오른손만 따라가는 프로그램을 구현해봤습니다. 옆에 콘솔창으로 나오는 것이 바로 오른손의 3D Position입니다. 그리고 test창에 나타나고 있는 것이 원본 파일입니다. 현재 Blob이 두개 나타나고 있지만 DepthHand창에는 오른손에 해당하는 Rectangle만 넘겨줘서 관심영역을 삼고 있습니다.



보다시피 왼손만 나온 경우에는 blob으로는 잡히지만 콘솔창의 좌표로는 아무것도 출력이 되지 않고 있습니다. 즉, 어떤 경우에도 오른손이 들어간 경우에만 그 위치를 구현하게끔 했습니다. 


보통 여기서 생각해볼게.. 왼손만 내밀었을 때 컴퓨터한테 이게 왼손이다라고 알려줄 특징점이 있냐는 겁니다. 사실 왼손의 정의를 내리면 오른손의 왼쪽에 있기 때문이기도 하고 몸의 왼쪽에 있기 때문에 그렇기도 합니다. 그냥 손하나만 내밀었을때는 컴퓨터는 그냥 Blob 하나라고만 인지하고, 조금 똑똑한 컴퓨터는 손이다 라는 것까지 인지 할겁니다.

그럼 과연 왼손이 왼손이다 라는 걸 어떻게 구현을 하냐는 거지요. 저같은 경우는 활동범위를 지정해서 하나의 충돌이벤트로 구현했습니다만.. 아마 더 좋은 아이디어들이 있으시겠지요?


제가 구현한 것의 동작 화면입니다.



댓글