Rectangle Array Match

1.1.1 개요

이미지 내의 사각형의 배열이 존재할 때, 찾고자 하는 사각형 배열(레퍼런스 사각형 배열)과 유사한 사각형의 배열 배열을 찾는 알고리즘입니다.

1.1.2 알고리즘 상세 설명

Reference Array Template-Based Match Rectangle Array Match
Reference Array Rectangle Array Match Rectangle Array Match
Template Match Rectangle Array Match
Fig. Template-Based Match vs Rectangle Array Match

일반적으로 매칭 알고리즘의 경우 템플릿 내의 여러 개의 학습 정보가 포함되어 있을 때 개별의 정보의 일부가 틀어져 있을 경우 전혀 다른 상태로 인지하는 한계를 가지는 것과 달리 Rectangle Array Match 알고리즘은 각 배열 요소의 종속적인 관계와 배열 요소의 각각의 독립적인 상태변화 요소를 모두 만족할 수 있는 처리방식을 지님으로써, 배열 상태에 특화되면서도 강건한 특징을 지니고 있습니다.

Template Match Template Match
Fig. Rectangle Array Match 동작 실행

복잡한 설정 없이 최소화된 설정으로 손쉬운 실행을 지원합니다. 아래의 코드와 같이 검사 이미지와 레퍼런스 배열을 설정만 하고 실행하여도 강력한 배열 매칭 기능을 바로 사용하실 수 있습니다.

// 알고리즘 객체 생성합니다.
CRectangleArrayMatch rectangleArrayMatch;

// 이미지를 입력합니다.
CFLImage fliSourceImage;
rectangleArrayMatch.SetSourceImage(fliSourceImage);

// 찾을 사각형 도형 배열을 입력합니다.
CFLFigureArray flfaArray;
rectangleArrayMatch.SetArray(flfaArray);

// 알고리즘 실행
rectangleArrayMatch.Execute();
// 알고리즘 객체 생성합니다.
CRectangleArrayMatch rectangleArrayMatch = new CRectangleArrayMatch();

// 이미지를 입력합니다.
CFLImage fliSourceImage = new CFLImage();
rectangleArrayMatch.SetSourceImage(ref fliSourceImage);

// 찾을 사각형 도형 배열을 입력합니다.
CFLFigureArray flfaArray = new CFLFigureArray();
rectangleArrayMatch.SetArray(flfaArray);

// 알고리즘 실행
rectangleArrayMatch.Execute();
# 알고리즘 객체 생성합니다.
rectangleArrayMatch = CRectangleArrayMatch()

# 이미지를 입력합니다.
fliSourceImage = CFLImage()
rectangleArrayMatch.SetSourceImage(fliSourceImage)

# 찾을 사각형 도형 배열을 입력합니다.
flfaArray = CFLFigureArray()
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 전체 배열의 각도