Fringe Pattern 3D
1 개요
물체에 투영된 프린지 패턴(Fringe pattern)을 조사하여 물체의 높이를 판단하는 알고리즘
2 알고리즘 상세 설명
Learn Images | Source Images | Destination Object |
---|---|---|
![]() |
![]() |
![]() |
Fig. Learn, Source and Result images.
위 예시에서 사용된 Learn, Source 페어는 각 7 페이지이며, 2개의 페어를 사용하여 연산한 결과를 나타냅니다.
알고리즘 수행은 크게 Calibrate 과정과 Excute 과정으로 구성됩니다.
Calibrate 용 Learn 이미지 시퀀스와 Excute 용 Source 이미지 시퀀스는 서로 쌍을 이루기 때문에 동일 페이지 인덱스에서 투영되는 패턴의 위상이 서로 동일해야 합니다. 두 이미지 간의 차이점은 측정 대상 물체의 유무입니다.
위의 예시와 같은 일부 케이스의 경우, 패턴 투영 각도와 물체의 높이 및 길이로 인해 측정 불가 지점이 국소적으로 존재할 수 있으며, 이를 보완하기 위해 투영 각도를 달리한 여러 시퀀스 페어의 이미지를 입력할 수 있습니다. 이 경우, 서로 다른 페어에서 물체의 위치가 변경되지 않아야 합니다.
GUI 상에서는 입력할 페어의 수를 Add Data
버튼 및 Delete Data
버튼으로 변경할 수 있습니다.
3 파라미터 설정 및 사용 방법
Camera 파라미터 설정
const CResult SetWorkingDistance(double f64WorkingDistanceMM)
카메라와 바닥면 사이 거리를 설정합니다.f64WorkingDistanceMM
: 카메라와 바닥면 사이 mm 단위의 거리
const CResult SetFieldOfView(double f64FieldOfViewMM)
이미지 좌우 양 끝 사이 거리를 설정합니다.f64FieldOfViewMM
: 이미지 좌우 양 끝 사이 mm 단위의 거리
const CResult SetAngleOfProjector(CMultiVar<double> mvF64AngleOfProjector)
각 페어에 대한 프린지 패턴 투영 각도를 설정합니다.mvF64AngleOfProjector
: 패턴 투영 각도
Calibrate 파라미터 설정
const CResult SetPatternType(EPatternType ePatternType)
투영된 프린지 패턴의 타입을 설정합니다.ePatternType
: 패턴 타입- EPatternType_SineWave : 사인파 형식의 패턴 타입
- EPatternType_SquareWave : 사각파 형식의 파턴 타입
const CResult SetBinProcessingType(EBinProcessingType eBinProcessingType)
연산 내부에 사용되는 자료구조의 구간 길이를 설정합니다.eBinProcessingType
: 내부 구간의 길이 설정 방법- EBinProcessingType_Auto : 자동으로 구간의 길이를 설정하는 모드
- EBinProcessingType_Manual : 수동으로 구간의 길이를 변경하는 모드
const CResult SetBinInterval(CMultiVar<double> mvF64BinInterval)
구간 길이 설정 방식이 Manual 모드인 경우, 그 값을 설정합니다. 각 Learn-Source 페어 마다 값이 요구됩니다.mvF64BinInterval
: Manual 방식의 구간 길이
const CResult SetLearnImage(CFLArray<CFLImage*>& flaImages)
Calibrate 용으로 사용할, 빈 바닥면에 패턴을 투영한 Learn 이미지를 설정합니다.
각 페어의 이미지는 여러 페이지로 구성되어 있으며, 투영되는 위상이 페이지 인덱스에 따라 선형적으로 변화해야 합니다.
여러 페어에 대해 입력을 지원합니다.flaImages
: Calibrate 용 Learn 이미지, 바닥면 이미지
Execute 파라미터 설정
const CResult EnableNoiseReduction(bool bNoiseReduction)
실행 결과에 존재하는 노이즈 처리 여부를 결정합니다.bNoiseReduction
: 결과 노이즈 처리 여부
const CResult SetSourceImage(CFLArray<CFLImage*>& flaImages)
Execute 용으로 사용할, 측정 대상에 패턴을 투영한 Source 이미지를 설정합니다.
각 페어의 이미지는 여러 페이지로 구성되어 있으며, 투영되는 위상이 페이지 인덱스에 따라 선형적으로 변화해야 합니다.
여러 페어에 대해 입력을 지원합니다.flaImages
: Execute 용 Source 이미지, 측정 대상이 포함된 이미지
4 예제 코드
CFringePattern3D fringePattern3D;
CFLArray<CFLImage*> arrPFliLearnImage;
CFLArray<CFLImage*> arrPFliSourceImage;
CFLImage fliDestinationHeightMapImage;
CMultiVar<double> mvAngles(73.0, 105.0);
fringePattern3D.SetWorkingDistance(330.0);
fringePattern3D.SetFieldOfView(400.0);
fringePattern3D.SetAngleOfProjector(mvAngles);
fringePattern3D.SetPatternType(CFringePattern3D::EPatternType_SquareWave);
fringePattern3D.SetBinProcessingType(CFringePattern3D::EBinProcessingType_Auto);
fringePattern3D.SetDestinationHeightMapImage(fliDestinationHeightMapImage);
fringePattern3D.EnableNoiseReduction(true);
fringePattern3D.SetLearnImage(arrPFliSourceImage);
fringePattern3D.Calibrate();
fringePattern3D.SetSourceImage(arrPFliSourceImage);
fringePattern3D.Execute();
5 기타 사항
Supported Feature
- Image
- Learn Image
- Source Image
- Destination Height Map Image
- Destination Object
Supported Format
- Learn
- Page
- 2
- Channel
- 1
- Value Type & Depth
- Unsigned: 8
- Page
- Source
- Page
- 2
- Channel
- 1
- Value Type & Depth
- Unsigned: 8
- Page
- Destination Height Map
- Channel
- 1
- Value Type & Depth
- Floating : 32
- Channel