programing

3D 포인트 클라우드에서 표면 재구성을위한 강력한 알고리즘?

nasanasas 2020. 12. 4. 08:25
반응형

3D 포인트 클라우드에서 표면 재구성을위한 강력한 알고리즘?


3D 범위 데이터에서 표면 재구성을 수행하기 위해 어떤 알고리즘이 있는지 알아 내려고합니다. 언뜻보기에 볼 피벗 알고리즘 ( BPA )과 푸 아송 표면 재구성 이 더 확립 된 방법 인 것 같습니다.

  • BPA 및 Poisson 표면 재구성 알고리즘 이외의 분야에서 확립되고 더 강력한 알고리즘은 무엇입니까?
  • 추천 연구 간행물?
  • 사용 가능한 소스 코드가 있습니까?

나는 몇 달 동안이 딜레마에 직면했고 철저한 조사를했다.

알고리즘

주로 알고리즘에는 계산 지오메트리와 암시 적 표면의 두 가지 범주가 있습니다.

계산 기하학

그들은 기존 포인트에 메쉬를 맞 춥니 다.

아마도이 그룹에서 가장 유명한 알고리즘은 powercrust 일 것입니다. 왜냐하면 이론적으로 잘 확립되어 있기 때문에 수밀 메시를 보장합니다.

Ball Pivoting은 IBM에서 특허를 받았습니다. 또한 점 밀도가 다양한 점 구름에는 적합하지 않습니다.

암시 적 함수

하나는 점 구름에 암시 적 함수를 맞춘 다음 행진 큐브와 같은 알고리즘을 사용하여 함수의 0 집합을 메시로 추출합니다.

이 범주의 메서드는 주로 사용되는 다른 암시 적 함수에 따라 다릅니다.

Poisson , Hoppe 'sMPU 는이 범주에서 가장 유명한 알고리즘입니다. 주제가 처음이라면 Hoppe의 논문을 읽는 것이 좋습니다. 매우 설명 적입니다.

이 범주의 알고리즘은 일반적으로 엄청난 입력을 매우 효율적으로 처리 할 수 ​​있도록 구현할 수 있으며 품질 <-> 속도 균형을 조정할 수 있습니다. 소음, 다양한 점 밀도, 구멍에 의해 방해받지 않습니다. 단점은 입력 지점에서 일관된 방향의 표면 법선이 필요하다는 것입니다.

구현

적은 수의 무료 구현을 찾을 수 있습니다. 그러나 그것은 당신이 그것을 자유 소프트웨어에 통합할지 (이 경우 GPL 라이선스는 당신에게 허용됨) 또는 상업용 소프트웨어 (이 경우 더 자유로운 라이선스가 필요함)에 통합할지에 달려 있습니다. 후자는 매우 드뭅니다.

하나는 VTK에 있습니다. 통합하기가 어렵고 (무료로 제공되는 문서가 없음) 이상하고 지나치게 복잡한 아키텍처를 가지고 있으며 고성능 애플리케이션을 위해 설계되지 않았습니다. 또한 허용 된 입력 포인트 클라우드에 대한 몇 가지 제한 사항이 있습니다.

Poisson 구현을 살펴보고 그 후에 저와 함께 경험을 공유하십시오.

또한 : 여기 그들 가운데 표면 재구성으로, 몇 고성능 알고리즘입니다.

CGAL은 유명한 3D 라이브러리이지만 무료 프로젝트에만 무료입니다. Meshlab 은 GPL로 유명한 애플리케이션입니다.

또한 (2013 년 8 월에 추가됨) : 라이브러리 PCL 에는 표면 재구성 전용 모듈 이 있으며 현재 개발 중입니다 (Google의 Summer of Code의 일부 임). 표면 모듈에는 재구성을위한 다양한 알고리즘이 포함되어 있습니다. PCL에는 또한 표면 법선을 추정 하는 기능 이 있습니다. 포인트 데이터와 함께 제공되지 않은 경우이 기능은 기능 모듈 에서 찾을 수 있습니다 . PCL은 BSD 라이선스 조건에 따라 출시되며 오픈 소스 소프트웨어이며 상업용 및 연구용으로 무료입니다.


다양한 표면 재구성 알고리즘으로 직접 실험을하고 싶다면 메시 처리 시스템 인 MeshLab 을 사용해 보셔야 합니다.이 시스템은 오픈 소스이며 다음과 같이 이전에 인용 된 많은 표면 재구성 알고리즘의 구현을 포함합니다.

  • 푸 아송 표면 정찰
  • 몇 가지 MLS 기반 접근 방식,
  • 볼 피벗 구현
  • Curless 볼륨 기반 접근 방식의 변형
  • Delaunay 기반 기술 (알파 모양 및 보로 노이 필터링)
  • 산점 세트에서 법선을 계산하는 도구
  • 결과 메시를 비교 / 측정 / 청소 / 단순화하기위한 기타 여러 도구.

소스는 GPL에 의해 보호되므로 상업적인 폐쇄 소스 프로젝트에서는 사용할 수 없지만 다양한 표면 재구성 알고리즘의 속성에 대해 올바른 느낌을 얻는 것이 매우 중요합니다 (노이즈에 얼마나 민감한 지, 속도, 이상치에 대한 견고성, 세부 사항을 보존하는 방법 등) 중 하나를 구현하기 전에.


이 분야의 최근 작업 을 살펴볼 수 있습니다. 현재 Gianmauro Cuccuru, Enrico Gobbetti, Fabio Marton, Renato Pajarola 및 Ruggero Pintus 의 포인트 샘플링 표면의 고속 저 메모리 스트리밍 MLS 재구성 과 같은 것 입니다. 인용을 통해 문헌을 매우 빠르게 살펴볼 수 있습니다.


메시 표현은 아니지만 전 동료가 Thin Plate Spline 방법에 대한 소스 코드 링크를 추천했습니다.

링크

누구나 시도 했습니까?


당신이 그것을 생략 한 것이 이상해 보이기 때문에 그것이 당신의 경우에 정확히 맞는지 확실하지 않지만 행진 큐브 는 일반적으로 이와 같은 경우에 언급됩니다.


여기 GitHub에는 Hugues Hoppe 박사가 작성한 C ++ 의 오픈 소스 메시 처리 라이브러리 가 있습니다. 표면 재구성 프로그램 인 Recon 이 문제에 대한 좋은 옵션입니다.


기하학적 도구로 3D 들로네 도구 . 이 도구는 DirecX 및 OpenGL을 사용합니다. 안타깝게도 도서관의 실제 예제 코드를 보려면 책을 구입해야 할 수도 있습니다. 당신은 여전히 ​​코드를 읽고 이해합니다.

Matlab은 Delaunay, delaunayTriangulation 클래스를 사용하는 표면 재구성 도구도 도입했습니다 .


As I had this problem too, I did develop and implement my own point cloud crust algorithm. The sources as well as the documentation can be found on github.com: https://github.com/ricebean-net/PointCloudCrust. The algorithm is implemented in Java.

Maybe, this can help you. You can find also a short python script on the page which illustrates how to use the library. Have fun!


You might be interested in Alpha Shapes.

참고URL : https://stackoverflow.com/questions/838761/robust-algorithm-for-surface-reconstruction-from-3d-point-cloud

반응형