Surface Reconstruction 3D

1 개요

주어진 포인트 클라우드의 표면을 재구성하는 알고리즘입니다.

2 알고리즘 상세 설명

Source Destination
Reference Data Source Data
Reference Data2 Source Data2
Fig. Surface Reconstruction 3D 동작 예시

원본의 변화 없이 표면을 재구성할 수 있는 명시적 표면 재구성 방법(Explicit)과, 닫힌 표면에 한정하여 표면을 추정하는 암시적 표면 재구성 방법(Implicit)을 지원합니다. 명시적 표면은 두 가지 방법으로 나뉩니다.

3 파라미터 설정 및 사용 방법

Explicit/Implicit 공통 파라미터

0.007 0.009 0.01
Cluster Dialog Learn Result Cluster Dialog
Fig. Sampling 결과

Source Object의 Point Cloud 수가 10만 개 이상으로 큰 데이터의 경우 오랜 시간이 소요될 수 있습니다. 이러한 데이터는 대부분 밀도가 높을 가능성이 있으며, Sampling 결과로 표면 재구성을 해도 유사한 표면을 얻을 수 있습니다.

Explicit 공통 파라미터

Explicit Region Growing 파라미터

Implicit 파라미터

4 예제 코드

CSurfaceReconstruction3D SurfaceReconstruction3D;
CFL3DObject floSource;
CFL3DObject floDestination;

floSource.Load(L"C:\\Users\\Public\\Documents\\FLImaging\\ExampleImages\\SurfaceReconstruction3D\\Source.ply");
SurfaceReconstruction3D.SetSourceObject(floSource);
SurfaceReconstruction3D.SetDestinationObject(floDestination);
SurfaceReconstruction3D.EnableSamplingPointCloud(false);
SurfaceReconstruction3D.EnableExplicitAutoRadius(true);
SurfaceReconstruction3D.SetExplicitMaxRadiusCoefficient(5.000000f);
SurfaceReconstruction3D.EnableExplicitHoleFillingAutoRadius(true);
SurfaceReconstruction3D.SetExplicitHoleFillingRadiusCoefficient(5.000000f);
SurfaceReconstruction3D.SetExplicitMaxSeed(1000);
SurfaceReconstruction3D.EnableExplicitAutoCellRadius(true);
SurfaceReconstruction3D.SetExplicitCellRadiusCoefficient(1.000000f);
SurfaceReconstruction3D.Execute();
CSurfaceReconstruction3D SurfaceReconstruction3D = new CSurfaceReconstruction3D();
CFL3DObject floSource = new CFL3DObject();
CFL3DObject floDestination = new CFL3DObject();

floSource.Load("C:\\Users\\Public\\Documents\\FLImaging\\ExampleImages\\SurfaceReconstruction3D\\Source.ply");
SurfaceReconstruction3D.SetSourceObject(ref floSource);
SurfaceReconstruction3D.SetDestinationObject(ref floDestination);
SurfaceReconstruction3D.EnableSamplingPointCloud(false);
SurfaceReconstruction3D.EnableExplicitAutoRadius(true);
SurfaceReconstruction3D.SetExplicitMaxRadiusCoefficient(5.000000f);
SurfaceReconstruction3D.EnableExplicitHoleFillingAutoRadius(true);
SurfaceReconstruction3D.SetExplicitHoleFillingRadiusCoefficient(5.000000f);
SurfaceReconstruction3D.SetExplicitMaxSeed(1000);
SurfaceReconstruction3D.EnableExplicitAutoCellRadius(true);
SurfaceReconstruction3D.SetExplicitCellRadiusCoefficient(1.000000f);
SurfaceReconstruction3D.Execute();