Rectangle Array Match
1.1.1 개요
이미지 내의 사각형의 배열이 존재할 때, 찾고자 하는 사각형 배열(레퍼런스 사각형 배열)과 유사한 사각형의 배열 배열을 찾는 알고리즘입니다.
1.1.2 알고리즘 상세 설명
Reference Array | Template-Based Match | Rectangle Array Match |
---|---|---|
![]() |
![]() |
![]() |
![]() |
![]() |
일반적으로 매칭 알고리즘의 경우 템플릿 내의 여러 개의 학습 정보가 포함되어 있을 때 개별의 정보의 일부가 틀어져 있을 경우 전혀 다른 상태로 인지하는 한계를 가지는 것과 달리 Rectangle Array Match 알고리즘은 각 배열 요소의 종속적인 관계와 배열 요소의 각각의 독립적인 상태변화 요소를 모두 만족할 수 있는 처리방식을 지님으로써, 배열 상태에 특화되면서도 강건한 특징을 지니고 있습니다.
![]() |
![]() |
---|
복잡한 설정 없이 최소화된 설정으로 손쉬운 실행을 지원합니다. 아래의 코드와 같이 검사 이미지와 레퍼런스 배열을 설정만 하고 실행하여도 강력한 배열 매칭 기능을 바로 사용하실 수 있습니다.
// 알고리즘 객체 생성합니다.
CRectangleArrayMatch rectangleArrayMatch;
// 이미지를 입력합니다.
CFLImage fliSourceImage;
rectangleArrayMatch.SetSourceImage(fliSourceImage);
// 찾을 사각형 도형 배열을 입력합니다.
CFLFigureArray flfaArray;
rectangleArrayMatch.SetArray(flfaArray);
// 알고리즘 실행
rectangleArrayMatch.Execute();
1.1.3 파라미터 설정 및 사용 방법
[i] 동작을 위한 최소한의 기본 설정 파라미터는 아래와 같습니다.
멤버함수 | 파라미터 | 설 명 | ||
---|---|---|---|---|
SetArray | CFLFigureArray | flfaRegionArray | IN | 찾을 대상의 배열 정보 |
사용자가 찾고자 하는 사각형 배열을 설정합니다. 배열의 사각형 개수는 제한이 없으며 이미지에 대한 별도의 학습없이 사각형 배열 도형을 설정하는 것만으로도 사용이 가능합니다.
[ii] 기본 설정을 제외하고 사용자의 최적화된 결과를 제공하기위한 다양한 하이퍼 파라미터를 제공합니다. 해당 파라미터는 설정할 의무가 없으나 설비 혹은 개발에 최적화된 처리속도와 정밀한 결과를 얻기 위해 적절한 파라미터 값을 설정한다면 더 효과적인 결과를 얻을 수 있습니다.
멤버함수 | 파라미터 | 설 명 | ||
---|---|---|---|---|
SetMinScore | double | f64MinScore | IN | 탐색에서 허용될 수 있는 결과 점수 |
탐색에서 허용될 수 있는 결과 최소 점수를 설정합니다.
f64MinScore
- Default Value: 0.5, Recommended Value: 0.5, 0.6, 0.7
멤버함수 | 파라미터 | 설 명 | ||
---|---|---|---|---|
SetObjectAngleTolerance | double | f64AngleTolerance | IN | 찾고자 하는 대상의 각도 허용 범위 |
찾고자 하는 대상의 각도 허용 정도를 설정합니다. 만약 설정값이 60도라고 한다면 -60도에서 60도 사이의 각도내의 결과만 탐색합니다.
f64AngleTolerance
- Default Value: 180, Recommended Value: 10, 30, 45, 60, 90, 180
멤버함수 | 파라미터 | 설 명 | ||
---|---|---|---|---|
SetBaseAngle | double | f64Angle | IN | 찾은 대상에 대한 기본 각도 |
찾은 대상에 대한 기본 각도 상태를 설정합니다. +10 값을 설정했다면, 레퍼런스 배열 기준에서 찾은 배열에 대해 각 요소마다 +10도의 각도 정보가 더해져 결과를 제공합니다.
f64Angle
- Default Value: 0, Recommended Value: 0
멤버함수 | 파라미터 | 설 명 | ||
---|---|---|---|---|
SetPivotOffset | CFLPoint<double> | flpPivotOffset | IN | 찾은 대상에 대한 결과 위치의 오프셋 |
찾은 대상에 대한 결과 위치의 오프셋을 설정합니다. 만약 (+10,+10)을 설정했다면 이미지 내의 결과위치가 (x, y)이라면 (x+10, y+10)로 결과가 제공됩니다.
flpPivotOffset
- Default Value: (0,0), Recommended Value: (0, 0)
멤버함수 | 파라미터 | 설 명 | ||
---|---|---|---|---|
EnablePivotImageCenter | bool | bUse | IN | 결과 위치 오프셋을 이미지 중심으로 설정 여부 |
찾은 대상에 대한 결과 위치의 오프셋을 이미지 중심으로 설정합니다. True일 때 이미지 기준에서 동일한 위치로 결과가 나타나며, False일 때 이미지 중심 거리이 (0,0)으로 가정하고 결과 위치가 옮겨집니다.
bUse
- Default Value: true, Recommended Value: true
멤버함수 | 파라미터 | 설 명 | ||
---|---|---|---|---|
SetAllowingObjectDistanceError | double | f64Error | IN | 객체 간의 거리 허용 오차 |
객체 간의 거리 허용 오차를 설정합니다. -1일 경우 내부적인 판단기준에 따라 자동으로 허용치를 판단하고 만약 +5를 설정하였다면 5픽셀까지 거리만 허용 오차로 판별하고 그 외는 오류로 판단하여 결과에서 제외됩니다.
f64Error
- Default Value: -1, Recommended Value: -1
멤버함수 | 파라미터 | 설 명 | ||
---|---|---|---|---|
SetFitting | CRectangleArrayMatch::EFitting | eFitting | IN | 정밀성 방식 |
정밀성 방식을 설정합니다. Enable 설정 시 Interpolation되는 정밀한 결과를 제공하며 Disable시 정밀성을 제한시키나 좀 더 빠른 처리속도를 얻을 수 있습니다.
eFitting
- Default Value: EFitting_Enable, Recommended Value: EFitting_Enable
멤버함수 | 파라미터 | 설 명 | ||
---|---|---|---|---|
SetThresholdMethod | CRectangleArrayMatch::EThreshold | eThreshold | IN | 이미지 전처리 방식 |
이미지 전처리 방식을 설정합니다. 만약 Auto로 설정되어 있을 경우 자동화된 기준의 전처리를 진행하며, Manual의 경우 사용자가 설정한 Threshold를 기준으로 전처리를 진행합니다.
eThreshold
- Default Value: EThreshold_Enable, Recommended Value: EThreshold_Enable
멤버함수 | 파라미터 | 설 명 | ||
---|---|---|---|---|
SetManualThreshold | int32_t | i32Threshold | IN | 이미지 전처리 임계치 값 |
이미지 전처리 임계치 값을 설정합니다. EThreshold_Manual 설정 시 동작합니다.
i32Threshold
- Default Value: 128, Recommended Value: 128
1.1.4 알고리즘 수행 결과 취득 방법
결과는 전체 배열의 각도 및 점수와 개별 배열요소의 각도 및 점수를 제공합니다. 개별 배열요소의 결과는 SResult 구조체를 이용하여 결과정보를 제공합니다.
결과 구조체 | 파라미터 | 설 명 | |
---|---|---|---|
CRectangleArrayMatch::SResult | int64_t | i64Index | 요소의 인덱스 값 |
CFLRect<double> | flrMeasuredRegion | 실제 피팅된 측정 결과 | |
CFLRect<double> | flrDrawingRegion | 도면 기준 크기의 결과 | |
double | f64Score | 요소의 점수 | |
double | f64Angle | 요소의 각도 | |
CFLPoint<double> | flpCenter | 요소의 중심 |
개별 배열요소의 결과는 GetResult 함수를 통해 취득할 수 있습니다.
멤버함수 | 파라미터 | 설 명 | ||
---|---|---|---|---|
GetResult | int64_t | i64Index | IN | 개별 요소의 인덱스 값 |
CRectangleArrayMatch::SResult | sResult | OUT | 결과 구조체 |
전체 배열의 점수 및 각도 결과는 다음 함수를 통해 취득할 수 있습니다.
멤버함수 | 파라미터 | 설 명 | ||
---|---|---|---|---|
GetResultForArrayScore | double | f64ResultScore | OUT | 전체 배열의 점수 |
멤버함수 | 파라미터 | 설 명 | ||
---|---|---|---|---|
GetResultForArrayAngle | double | f64ResultAngle | OUT | 전체 배열의 각도 |