Distance Transform 3D

1 개요

카메라의 위치와 방향 정보가 주어졌을 때 카메라에 의해 결정된 축에 대한 정점들의 거리를 측정하는 알고리즘입니다.

2 알고리즘 상세 설명

Source Data Result Data
Source Data Result Data
카메라의 위치에 대한 스칼라 거리 혹은 벡터 거리를 측정하는 알고리즘입니다.

구체적으로, 카메라의 위치를 원점으로, 카메라의 방향을 z축으로, 그리고 Up vector를 통해 카메라의 나머지 축을 결정짓게 되며, Distance Transform 알고리즘은 카메라 좌표계에 대한 3D 객체의 새 좌표를 계산하는 알고리즘으로 볼 수 있습니다.

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

다음 함수들을 통해 카메라의 위치/방향 정보를 결정합니다.

이후 다음 함수를 통해 거리 정보를 추출할 3D 객체를 결정합니다.

계산된 정보는 다음 함수를 통해 추출할 수 있습니다.

4 예제 코드

CDistanceTransform3D distanceTransform3D;

CFL3DObject floSource;
floSource.Load(L"C:/Users/Public/Documents/FLImaging/ExampleImages/DistanceTransform3D/binary-vertex.ply");
TPoint3<float> tpPosition(0.000000, 0.000000, 0.000000);
TPoint3<float> tpDirection(0.000000, 0.000000, -1.000000);
TPoint3<float> tpUpVector(0.000000, 1.000000, 0.000000);
distanceTransform3D.SetPosition(tpPosition);
distanceTransform3D.SetDirection(tpDirection);
distanceTransform3D.SetUpVector(tpUpVector);
distanceTransform3D.SetSourceObject(floSource);

distanceTransform3D.Execute();

CFLArray<TPoint3<float>> arrResult;
distanceTransform3D.GetResultDistanceAxis(arrResult);
CDistanceTransform3D distanceTransform3D = new CDistanceTransform3D();

CFL3DObject floSource = new CFL3DObject();
floSource.Load("C:/Users/Public/Documents/FLImaging/ExampleImages/DistanceTransform3D/binary-vertex.ply");
TPoint3<float> tpPosition = new TPoint3<float>(0.000000, 0.000000, 0.000000);
TPoint3<float> tpDirection = new TPoint3<float>(0.000000, 0.000000, -1.000000);
TPoint3<float> tpUpVector = new TPoint3<float>(0.000000, 1.000000, 0.000000);
distanceTransform3D.SetPosition(tpPosition);
distanceTransform3D.SetDirection(tpDirection);
distanceTransform3D.SetUpVector(tpUpVector);
distanceTransform3D.SetSourceObject(ref floSource);
distanceTransform3D.Execute();

List<TPoint3<float>> arrResult = new List<TPoint3<float>>();
distanceTransform3D.GetResultDistanceAxis(ref arrResult);
distanceTransform3D = CDistanceTransform3D()

floSource = CFL3DObject()
floSource.Load("C:/Users/Public/Documents/FLImaging/ExampleImages/DistanceTransform3D/binary-vertex.ply")
tpPosition = TPoint3[Single](0.000000, 0.000000, 0.000000)
tpDirection = TPoint3[Single](0.000000, 0.000000, -1.000000)
tpUpVector = TPoint3[Single](0.000000, 1.000000, 0.000000)
distanceTransform3D.SetPosition(tpPosition)
distanceTransform3D.SetDirection(tpDirection)
distanceTransform3D.SetUpVector(tpUpVector)
distanceTransform3D.SetSourceObject(floSource)
distanceTransform3D.Execute()

res, arrResult = distanceTransform3D.GetResultDistanceAxis(List[TPoint3[Single]]())