2011-09-05 2 views
9

목적은 사람을 다른 배경 (배경 제거라고도 함)에 표시하는 것입니다.Kinect를 사용하여 배경 제거 : 신체 모양 주변의 노이즈 억제

저는 Kinect를 Microsoft의 Beta Kinect SDK와 함께 사용하고 있습니다. 깊이의 도움으로 배경이 필터링되고 우리는 사람의 이미지 만 얻습니다.

이 작업은 매우 간단하며 인터넷에서 모든 작업을 수행하는 코드를 찾을 수 있습니다. 그러나 깊이 신호는 잡음이 많으며 표시되는 사람의 픽셀이 아닙니다.

나는 그것이 유용 있는지 확인하기 위해 에지 검출기를 적용, 나는 현재이 얻을 : 에지 검출하지 않고

다음

다른 사람의를 :

enter image description here

내 질문은 : 어떤 방법으로 나는이 주변의 시끄러운 흰색 픽셀을 제거 할 수 있습니까?

나는 형태학적인 조작을 시도했지만, 몸의 일부분이 지워지고 여전히 뒤에 흰색 픽셀이 남습니다.

알고리즘은 실시간 일 필요는 없으며 '이미지 저장'버튼을 누르면 적용 할 수 있습니다.

편집 1 :

난 그냥 모양의 국경에 가까운 프레임 배경 뺄셈을 수행했습니다. 표시되는 단일 픽셀은 깜박 거리며 노이즈라는 것을 의미하므로 쉽게 제거 할 수 있습니다.

편집 2 : 키 넥트의 수동 교정을 직접 적외선 이미지를 제공 OpenNI 드라이버를 사용하여 :

이 프로젝트는 지금 여기 이상이며, 우리가 무슨 짓을했는지. 결과는 훌륭하지만 각 보정은 각 Kinect에 따라 다릅니다.

그런 다음 테두리에 약간의 투명도를 적용하여 결과가 정말 멋지게 보입니다. 그러나 나는 그림을 제공 할 수 없다.

+1

가장자리 감지기를 적용하기 전에 이미지를 게시 할 수 있습니까? – misha

+1

방금 ​​추가되었습니다. – wormsparty

+0

코드를 공유 할 수 있습니다 – ravithejag

답변

5

문제는 단지 시끄러운 흰색 픽셀 만이 아닙니다. 그 사람의 중요한 부분도 누락되었습니다. 오른손의 일부. 나는 깊이 데이터의 thresholding에 대해 더 보수적 일 것을 권한다. 이것은 당신에게 더 시끄러운 픽셀을 줄 것이지만, 적어도 당신은 그 사람 전체를 가질 것입니다. 외부 픽셀 (당신이 알파 채널을 사용하는 경우/강도를 줄이고 투명성을 증가)

  • 깃털
  • 을 :

    가 시끄러운 픽셀을 제거하기 위해, 나는 몇 가지를 생각할 수

  • 이미지를 부드럽게 처리하고 부드럽게 한 이미지에서 가장자리 감지를 수행 한 다음이 가장자리를 원래의 선명한 이미지와 함께 사용하십시오.
  • 피부 부위 감지를 수행하여 사람에게 분명히 속한 부분을 표시하십시오. skin detection in the YUV color space?Skin Color Detection
  • 을 참조하십시오. 옷의 경우 색조 및 채도 이미지로 작업하십시오. 티셔츠의 색상을 아는 경우 (또는 적어도 중성 색이 아닐 경우) 쉽게 눈에.니다. 이 정보를 모르는 경우 다른 프레임을 사용하는 사람의 모델을 만드는 것이 좋습니다 (동영상에서 큰 회색 덩어리가 움직이는 경우 회색 셔츠를 착용 할 가능성이 있습니다)

이러한 접근 방식은 상호 배타적 인 것이 아니므로 조합하여 사용하는 것이 좋습니다. 내가 다른 것을 생각하면 여기서 다시 게시 할 것입니다.

+0

고마워요, 내일 당신의 아이디어를 보도록하겠습니다. 누락 된 사람의 부분에 대해서는 SDK의 사람 감지 기능을 사용하기 때문에 제어 할 권한이 없습니다. 내 자신의 버전을 작성하더라도, 이러한 오류는 암 가장자리 나 머리카락처럼 깊이 신호가 매우 시끄러운 경우 발생합니다. 때로는 머리 부분에서 깊이가 0이되어 쉽게 복구 할 수 없습니다. – wormsparty

2

가장자리의 지터를 해결할 다른 방법이없는 경우 항상 앤티 앨리어싱을 포스트 프로세스로 사용해 볼 수 있습니다.