Convex Hull 3D

1 개요

포인트 클라우드가 주어졌을 때 이들의 볼록껍질을 구하는 알고리즘입니다.

2 알고리즘 상세 설명

Source Convex Hull
Source Data Result Data
Source Data Result Data
점의 집합이 주어졌을 때, 이를 포함하는 가장 작은 볼록집합을 볼록 껍질이라고 합니다.

볼록 껍질을 계산하면 수많은 점들 중 최외각 경계를 결정짓는 점들을 한정지을 수 있으며, 포인트 클라우드로부터 적절한 메시를 만드는 데에도 유용하게 사용할 수 있습니다.

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

3D Object를 받아 3D object를 돌려주는 알고리즘으로, 다음 두 함수를 통해 대상 지정이 필요합니다.

또한 다음과 같은 옵션을 주어 결과를 조정할 수 있습니다.

4 예제 코드

CConvexHull3D convexHull3D;

TPoint3<uint8_t> ptNewColor(255, 255, 0);
CFL3DObject floSrc;
floSrc.Load(L"C:\\Users\\Public\\Documents\\FLImaging\\ExampleImages\\ConvexHull3D\\RandomPointsOnSphere.ply");
CFL3DObject floDst;
convexHull3D.SetSourceObject(floSrc);
convexHull3D.SetDestinationObject(floDst);
convexHull3D.EnablePreserveVertex(true);
convexHull3D.EnableVertexRecoloring(true);
convexHull3D.SetTargetVertexColor(ptNewColor);

convexHull3D.Execute();
CConvexHull3D convexHull3D = new CConvexHull3D();

TPoint3<Byte> ptNewColor = new TPoint3<Byte>(255, 255, 0);
CFL3DObject floSrc = new CFL3DObject();
floSrc.Load("C:\\Users\\Public\\Documents\\FLImaging\\ExampleImages\\ConvexHull3D\\RandomPointsOnSphere.ply");
CFL3DObject floDst = new CFL3DObject();
convexHull3D.SetSourceObject(ref floSrc);
convexHull3D.SetDestinationObject(ref floDst);
convexHull3D.EnablePreserveVertex(true);
convexHull3D.EnableVertexRecoloring(true);
convexHull3D.SetTargetVertexColor(ptNewColor);

convexHull3D.Execute();
convexHull3D = CConvexHull3D()

ptNewColor = TPoint3[Byte](255, 255, 0)
floSrc = CFL3DObject()
floSrc.Load("C:\\Users\\Public\\Documents\\FLImaging\\ExampleImages\\ConvexHull3D\\RandomPointsOnSphere.ply")
floDst = CFL3DObject()
convexHull3D.SetSourceObject(floSrc)
convexHull3D.SetDestinationObject(floDst)
convexHull3D.EnablePreserveVertex(True)
convexHull3D.EnableVertexRecoloring(True)
convexHull3D.SetTargetVertexColor(ptNewColor)
convexHull3D.Execute()