2013-06-07 1 views
2

Kinect Fusion을 사용하여 장면을 캡처하고 정점, 정점 법선 및면을 포함하는 .OBJ 파일을 얻었습니다. 그런 다음이 정보를 기반으로 대형 평면을 감지해야하므로 벽이나 바닥과 같은 평면 표면을 감지 할 수 있습니다 (대형 평면이므로). 나는 이러한 정보를 저장하고 C#을 사용하여 코딩하기 위해 자체 데이터 구조를 만들었습니다. 아무도 내가이 평평한 표면을 어떻게 찾을 수 있는지 안다?.OBJ 파일 (Kinect Fusion에서 생성)에서 넓은 평평한 표면 감지

미리 감사드립니다.

+0

정확하지 않을 수도 있지만 [RANSAC 평면 감지] (https://www.google.co.uk/search?q=plane+detection+ransac&rlz=1C5CHFA_enGB524GB524&oq=plane+ detection + ransac & aqs = chrome.0.57.3664j0 & sourceid = chrome & ie = UTF-8) 도움이 될까요? –

+1

아마도 법선 사이의 내적이 임계 값보다 작은 꼭지점의 조합을 찾으십니까? 즉 그들은 실제적으로 동일 평면 상에 있습니다 ... – gareththegeek

+0

각 버텍스를 너무 복잡하게 비교하지 않겠습니까? 각 vertice를 비교해 보았는데 프로그램이 10 분 이상 실행되었습니다. 6digit의 꼭지점이 있습니다. X_X이 일을하고 지금 당장 떠났어. 너무 분실되고 혼란스러워서 ...... –

답변

1

이것은 완전한 대답은 아니지만 몇 가지 아이디어를 줄 수 있습니다.

저는 개인적으로 일부 이미지 처리 알고리즘을 시도 할 것입니다. 첫 번째는 지역 성장입니다. 두 번째는 종자 채우기입니다. 세그먼트 화를 위해 더 적합한 알고리즘을 찾아야한다고 생각합니다.

이 방법의 핵심은 얼굴 법선을 주요 기능으로 간주하는 것입니다. 인접한 두면이 충분히 비슷한 (동일한) 법선을 갖고 있다면, 같은면의 일부로 간주 할 수 있습니다.

여기서는 픽셀 강도를 얼굴 법선으로 대체 한 다음 이미지 처리 세분화 알고리즘을 구현한다고 가정합니다.

어쨌든 모든 경우에 사용할 수 있을지는 모르겠지만 법선을 인덱싱 할 수 있으므로 픽셀 강도 대신 각 인덱스에 인덱스를 할당 할 수 있습니다.

편집 :

내 생각은 당신이 이렇게 평평하고, 장면의 스냅 샷을하고 포장을 푸는 것이있다. 풀지 않은 메쉬에서, 각면의 색상을 기본으로 지정하여 "색상 맵"을 만들 수 있습니다. 어쩌면 표준을 컬러로 직접 변환 할 수 있습니다. 보통 (1,0,0)은 RGB에서 밝은 빨강이됩니다. 이 컬러 맵은 Normal texture 라 불리는 Graphics에 있습니다. 아마도 kinect에서 일반적인 텍스처를 직접 얻을 수 있습니다.

그러면이 색상지도에서 비슷한/동일한 색상의 연결된 영역을 찾을 수 있습니다. 이 영역은 동일한 평면의 일부이므로 원하는 바닥이나 벽입니다.

3D 데이터 처리에 대한 사전 경험이 없으므로 이는 제 추측이지만, 제대로 작동해야합니다. 최소한 종이에. :)

언 래핑 또는 정상적인 텍스처를 얻는 알고리즘은 실제로 알지 못합니다. 그러나 그것은 당신에게 몇 가지 지시를 주어야합니다.

+0

Erm jnovacho, 소리가 지체되는 경우 울어주세요. 하지만 3D 환경을 처리 할 때 왜 이미지 처리가 사용됩니까? 나는 아직도 이것들에 익숙하지 않다. 나는 잘못된 프로젝트를 선택했다고 생각한다. Kinect Fusion에서 얻은 .OBJ 파일은 vertice의 XYZ, vertice normal의 XYZ, 그리고 나는 3 점으로 얼굴을 만든다. –

+0

추가 정보를 추가했습니다. 편집을 참조하십시오. – jnovacho