Surface Match 3D Multi

1 개요

하나 이상의 3D 객체와 가장 유사한 표면을 찾는 알고리즘입니다.

2 알고리즘 상세 설명

Learn Data 1 Learn Data 2 Learn Data 3 Match Result
LearnData1 LearnData2 LearnData3 Result
Fig. 다중 템플릿 매치 결과

위 사진의 Learn Data(1, 2, 3) 으로 등록한 객체를 모두 탐지합니다. 데이터는 Learn/Source 포인트 클라우드 모두 법선 벡터를 포함하고 있어야 합니다.

표면 데이터 생성 방법은 및 기본 파라미터 설정 방법은 Surface Match 3D참고 바랍니다.

3 학습 데이터 Save & Load 방법 설명

학습한 데이터 파일을 저장 및 불러오기가 가능합니다. 하나 이상의 학습 모델을 각각 개별로 저장하거나 불러올 수 있습니다. 또한 여러 모델을 등록한 후 전체 모델을 한 번에 하나의 파일로 저장한 뒤 불러올 수 있습니다.

4.1 Save 동작 설명

학습을 진행한 후 개별 학습 데이터 파일을 *.flsm(Surface Match) *.flvm(Vertex Match)확장자로 저장할 수 있습니다. 전체 학습 데이터는 *.flsmm(Surface Match 3D Multi) *.flvmm(Vertex Match 3D Multi)확장자로 저장할 수 있습니다.

CSurfaceMatch3DMulti surfaceMatch3DMulti;
CFL3DObject floLearnObjectData;
CFLString<wchar_t> flsClassName = L"Default";

surfaceMatch3DMulti.SetLearnObject(floLearnObjectData);
surfaceMatch3DMulti.Learn(flsClassName);

surfaceMatch3DMulti.Save(L"파일 경로//*.flsmm"); // Vertex Match 3D Multi : *.flvmm
surfaceMatch3DMulti.SaveSingleModel(L"파일 경로//*.flsm", flsClassName); // Vertex Match 3D : *.flvm
CSurfaceMatch3DMulti surfaceMatch3DMulti = new CSurfaceMatch3DMulti();
CFL3DObject floLearnObjectData = new CFL3DObject();
String strClassName = "Default";

surfaceMatch3DMulti.SetLearnObject(ref floLearnObjectData);
surfaceMatch3DMulti.Learn(strClassName);
surfaceMatch3DMulti.Save("파일 경로//*.flsmm"); // Vertex Match 3D Multi : *.flvmm
surfaceMatch3DMulti.SaveSingleModel("파일 경로//*.flsm", strClassName); // Vertex Match 3D : *.flvm
surfaceMatch3DMulti = CSurfaceMatch3DMulti()
floLearnObjectData = CFL3DObject()
strClassName = "Default"

surfaceMatch3DMulti.SetLearnObject(floLearnObjectData)
surfaceMatch3DMulti.Learn(strClassName)
surfaceMatch3DMulti.Save("파일 경로//*.flsmm") # Vertex Match 3D Multi : *.flvmm
surfaceMatch3DMulti.SaveSingleModel("파일 경로//*.flsm", strClassName) # Vertex Match 3D : *.flvm

4.2 Load 동작 설명

저장된 시점의 파라미터 및 학습 데이터를 불러온 뒤 바로 검사에 사용할 수 있습니다. 개별 학습 데이터를 불러오거나, 전체 학습 데이터를 한 번에 불러올 수 있습니다.

CSurfaceMatch3DMulti surfaceMatch3DMulti;
CFL3DObject floSourceObjectData;
CFLString<wchar_t> flsClassName = L"Default";

surfaceMatch3DMulti.Load(L"파일 경로//*.flsmm"); // Vertex Match 3D Multi : *.flvmm
surfaceMatch3DMulti.LoadSingleModel(L"파일 경로//*.flsm", flsClassName); // Vertex Match 3D : *.flvm
surfaceMatch3DMulti.SetSourceObject(floSourceObjectData);
surfaceMatch3DMulti.Execute();
CSurfaceMatch3DMulti surfaceMatch3DMulti = new CSurfaceMatch3DMulti();
CFL3DObject floSourceObjectData = new CFL3DObject();
String strClassName = "Default";

surfaceMatch3DMulti.Load("파일 경로//*.flsmm", strClassName); // Vertex Match 3D Multi : *.flvmm
surfaceMatch3DMulti.SetSourceObject(ref floSourceObjectData);
surfaceMatch3DMulti.Execute();
surfaceMatch3DMulti = CSurfaceMatch3DMulti()
floSourceObjectData = CFL3DObject()
strClassName = "Default"

surfaceMatch3DMulti.Load("파일 경로//*.flsmm") # Vertex Match 3D Multi : *.flvmm
surfaceMatch3DMulti.LoadSingleModel("파일 경로//*.flsm") # Vertex Match 3D : *.flvm
surfaceMatch3DMulti.SetSourceObject(floSourceObjectData)
surfaceMatch3DMulti.Execute()

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

6 알고리즘 수행 결과 취득 방법

결과는 전체 3D Pose Parameter의 Euler Angle 및 Sequence, Rotation Vector, Translation Vector, Score 및 Residual을 반환합니다.

개별 결과는 아래의 GetResultPoseMatrix() 함수를 통해 얻어올 수 있습니다.

7 예제 코드

CSurfaceMatch3DMulti surfaceMatch3DMulti;
CFL3DObject floLearnObjectData;
CFL3DObject floSourceObjectData;
CFLString<wchar_t> flsClassName = L"Default";

surfaceMatch3DMulti.SetLearnObject(floLearnObjectData);
surfaceMatch3DMulti.Learn(flsClassName);

surfaceMatch3DMulti.SetSourceObject(floSourceObjectData);
surfaceMatch3DMulti.Execute();
CSurfaceMatch3DMulti surfaceMatch3DMulti = new CSurfaceMatch3DMulti();
CFL3DObject floLearnObjectData = new CFL3DObject();
CFL3DObject floSourceObjectData = new CFL3DObject();
String strClassName = "Default";

surfaceMatch3DMulti.SetLearnObject(ref floLearnObjectData);
surfaceMatch3DMulti.Learn(strClassName);

surfaceMatch3DMulti.SetSourceObject(ref floSourceObjectData);
surfaceMatch3DMulti.Execute();
surfaceMatch3D = CSurfaceMatch3DMulti()
floLearnObjectData = CFL3DObject()
floSourceObjectData = CFL3DObject()
strClassName = "Default"

surfaceMatch3D.SetLearnObject(floLearnObjectData)
surfaceMatch3D.Learn(strClassName)

surfaceMatch3D.SetSourceObject(floSourceObjectData)
surfaceMatch3D.Execute()

8 관련 알고리즘

Surface Match 3D, Vertex Match 3D