Oriented FAST and Rotated BRIEF (ORB)
1 개요
FAST (Features from Accelerated Segment Test) 와 BRIEF (Binary Robust Independent Elementary Features) 알고리즘을 기반으로 회전과 방향을 고려하도록 개선된 특징점 검출 알고리즘 입니다.
2 알고리즘 상세 설명
-
Key Point 검출
- FAST 알고리즘을 사용하여 대략적인 Key point 후보들을 선정 후 Scoring 을 통해 상위 N 개의 점을 남깁니다.
-
Descriptor 계산
- BRIEF 알고리즘을 사용하여 선정 된 N 개의 점을 128차원의 이진 특징 벡터로 변환합니다.
-
해당 알고리즘은 크기 불변성과 회전 불변성의 특징을 가지며 빠른 속도가 장점입니다.
입력 이미지 | 결과 이미지 |
---|---|
![]() |
![]() |
Fig. Oriented FAST and Rotated BRIEF 동작 예시
3 파라미터 설정 및 사용 방법
-
SetScoreType(EScoreType eScoreType)
- 특징점을 산출할 Score 타입을 설정합니다.
- Default Value :
COrientedFASTandRotatedBRIEF::EScoreType_FastScore
- Other Value :
COrientedFASTandRotatedBRIEF::EScoreType_HarrisScore
-
SetNLevels(int32_t i32Nlevels)
- 이미지 피라미드의 갯수를 설정합니다.
- Default Value : 4
- Recommended Value : 3, 4, 5
-
SetNfeature(int32_t i32Nfeature)
- 최종적으로 산출할 특징점 갯수를 설정합니다.
- 0 설정 시 모든 결과를 반환합니다.
- Default Value : 500
- Recommended Value : 0, 100, 500
-
SetFASTThreshold(int32_t i32FASTThreshold)
- 내부적으로 동작하는 FAST 알고리즘의 임계값을 설정합니다.
- Default Value : 10
- Recommended Value : 5, 10, 15
-
SetScaleFactor(float f32ScaleFactor)
- 이미지 피라미드의 배율 값을 설정합니다.
- Default Value : 1.2
- Recommended Value : 1.2, 1.5, 2.0
4 결과 취득 방법
GetResultPoints(CFLPointArray flpaResultPoints)
- 결과 Keypoint의 좌표를 얻어옵니다.
GetResultDescriptorBuffer(CFLArray<float> flaResult)
- 결과 Keypoint의 Descriptor를 얻어옵니다.
5 예제 코드
이미지 및 ROI 설정 방법(ImageProcessing_Common 항목 참고)
CScaleInvariantFeatureTransform ORB;
CFLImage fliSourceImage;
ORB.SetSourceImage(fliSourceImage);
ORB.SetScoreType(COrientedFASTandRotatedBRIEF::EScoreType_FastScore);
ORB.Execute();
CFLPointArray flfaResultPoints;
ORB.GetResultPoints(flfaResultPoints);