2014-11-24 2 views
1

새로운 Kinect v2를 사용하고 있으며 Kinect의 깊이 맵을 얻고 있습니다. 나는 깊이 맵을 얻은 후 깊이 데이터를 카메라 공간으로 변환합니다. 내가 이해하는 한, 각 픽셀의 모든 X, Y 좌표를 Camera Space + 깊이 값을 Z 좌표로 변환하여 변환합니다 (또한 Kinect는 깊이 값을 밀리미터로 제공하므로 미터를 보유하도록 변환됩니다) . 이로 인해 포인트 클라우드는 실제로 깊이 값으로 확장 된 2D 그리드에 있습니다. 시각화는 또한 위의 대화로 인해 점들이 그리드에서 정렬됨을 알기 쉽기 때문에 이것을 확인합니다.2D 그리드에서 점 구름으로 만든 메쉬

저는 시각적으로 OpenGL을 사용하고 있습니다 (glBegin (...) 및 glEnd()). 점에서 메쉬를 만들고 싶습니다. GL_TRIANGLES로 처리 할 수있는 일종의 관리 도구이지만, 정점과 가장자리가 중복되어 있습니다. 그래서 GL_TRIANGLE_STRIP을 사용하여보다 나은 삼각 측량을 만들어야한다고 생각했지만, GL_TRIANGLE_STRIP에 피드를 제공 할 수있는 방식으로 2D 그리드를 통과 할 수있는 좋은 알고리즘을 생각해 낼 수 없기 때문에 여기에 갇혀 있습니다. 좋은 표면.

문제점 : 각 삼각형의 정점 나는 Z 좌표를 확인하고 들어

  • . 특정 임계 값을 초과하면 삼각형을 무시합니다. => 그러면 2D 그리드에 구멍이 생길 수 있습니다.

  • 일부 깊이 값은 NaN입니다. Kinect는 아무 것도 볼 수 없기 때문에 (예 : 객체가 너무 멀거나 너무 가깝습니다) => 이것은 2D 그리드에도 구멍을 만듭니다.

누구든지이 문제를 해결하는 가장 좋은 방법은 무엇입니까?

+1

처음에는 관련성이없는 모든 정점을 덤프하고 (즉, 깊이가 거의 다름) 메쉬를 만듭니다. 포인트 클라우드에서 최적화 된 메시로 빠르게 전환하면 http://meshlabstuff.blogspot.co.uk/2009/09/meshing-point-clouds.html이 반환됩니다. 이런 종류의 것들에 관해서는, 선택 언어로 떠돌아 다니는 구현이 거의 없을 것이며 대신에 백서 및 기타 언어 솔루션을 읽고 그곳에서 직접 구현해야합니다. 다음은 재미있는보고 서입니다. http://cdn.intechopen.com/pdfs-wm/30515.pdf –

+0

안녕하세요. Steve, 의견을 주셔서 감사합니다. 나는 당신이 제공 한 링크를 확실히 읽을 것입니다. 처음 유령으로 그들은 진짜로 유망하게 본다! 포인트 클라우드가 2D 그리드에 실제로 위치하는 이런 종류의 상황에 대한 알고리즘이 있다고 생각했지만, 낙관적 인 희망 일뿐입니다. :) – Silex

+0

그래도 출력물이 3D 모델이되기를 원할 것입니다. 그리드가 실제로 잘못된 것입니다. 그리드에 가장 잘 맞춰지는 것보다 가장 매끄러운 가장자리를 만드는 꼭지점이 필요하기 때문입니다. 이 백서는 외모에서 2 차원 점 구름을 다루고 있는데 그 이유는 표본이 단일 카메라에서 찍혔 기 때문입니다. 행운을 빕니다! –

답변

1

3 차원에서 삼각 측량을 시도하고 외부에있는 tetrahedons를 찾아 볼 수도 있습니다. 쉬운 알고리즘은 tetrahedons와 circumspheres가있는 bowyer-watson입니다. Cgal이 좋은 예입니다.