Geometric Match
1.1.1 개요
이미지 내의 기하학적 정보 패턴을 학습하고 검사 이미지에서 이미지 내의 동일 혹은 유사한 패턴을 탐지하는 알고리즘입니다.
1.1.2 알고리즘 상세 설명
기하학적 요소를 기반으로 탐색함으로 인해 기존 패턴 매칭방식에서 할 수 없는 폭넓은 범위의 탐지가 가능합니다.
학습 데이터 | 주변 환경 변화 | 가려짐 현상 |
---|---|---|
![]() |
![]() |
![]() |
![]() |
Fig. 예시와 같이 학습 데이터의 주변환경과 검사 이미지의 주변환경은 매우 다른 상태입니다. 하지만 기하 매칭 알고리즘은 주변환경이 변하더라도 정확히 해당 기하학적 정보만을 바탕으로 결과를 판단하기 때문에 주변상태와 무관하게 정확한 결과를 얻을 수 있습니다. 주변 환경 변화와 같이 십자가 주변의 환경이나 십자가 뒷면에 다른 형상이 있어 해당 영역에 영향을 주더라도 정확한 결과를 제공하게 됩니다. 또한 설비상 오류로 인해 패턴이 일부 훼손된 상태로 가려짐이 발생하더라도 기하 패턴에 대한 탐지가 가능합니다.
높은 수준의 정확도를 가진 매칭뿐만 아니라 사용자의 환경에 맞는 학습 환경을 제공하기위해 FLImaging® Geometric Match만의 커스터마이징 학습방법을 제공합니다.
- 다양한 학습 방식
- 표현 가능한 모든 도형의 학습 영역 지원
- 이미지 환경에 무관한 사용자가 원하는 구역에 대한 학습 가능
- 클린하지않은 환경의 학습이미지만 사용가능할 경우, 필터링 기능 제공
![]() |
![]() |
직사각형, 원뿐만 아니라 타원, 임의의 다각형, 곡선형 도형 등 FLImaging®에서 지원하는 모든 도형의 관심영역을 학습영역으로 사용가능합니다.
학습 이미지 내 노이즈 부분이 특징점으로 학습될 수가 있습니다. 전체적인 형태 정보만 필요하고 내부 노이즈 패턴이 불필요한 상황에 대한 처리를 위해 필터링 기능을 제공합니다. 학습 과정에서 발생하는 작은 노이즈부터 불필요한 작은 패턴까지 모두 필터링 가능함으로써 손쉬운 학습이 가능합니다.
![]() |
![]() |
1.1.3 학습 방법
- FLImaging® 개발 스튜디오을 실행합니다.

- Menu 검색창에 Geometric Match를 검색하거나 Advanced Functions에 Match 카테고리에 Geometric을 클릭합니다.

- 학습할 이미지를 불러옵니다.
- 뷰에 마우스 우측 버튼 클릭 후 Load File 선택

- 학습할 파일을 선택하고 열기 버튼 클릭


- 학습할 뷰를 선택합니다.
- 학습할 이미지를 불러오기한 뷰를 선택합니다.


- 학습 영역을 지정합니다.
- Learn View ROI에 항목에 마우스 우측 버튼을 클릭하여 Rect ROI를 클릭합니다.

- 마우스를 움직여 원하는 영역에서 마우스의 왼쪽 버튼을 클릭합니다.

- 지정한 ROI에 마우스 우측 버튼을 클릭하고 OK를 합니다.


- 학습을 진행합니다.
- 버튼(F6)을 클릭합니다.

- 출력 메세지에 OK 출력시 정상적으로 학습이 동작이 완료되었습니다.


해당 동작을 코드로 표현하면 다음과 같습니다.
CGeometricMatch geometricMatch; // 알고리즘 객체 선언
CFLImage fliLearnImage; // 이미지 객체 선언
fliLearnImage.Load(L"D:/Learn.png"); // 이미지 파일 로드
geometricMatch.SetLearnImage(fliLearnImage);// 학습 이미지 입력
CFLRect<double> flfLearnROI(88.407643, 142.165605, 305.477707, 345.477707, 0.000000); // 학습 영역 생성
geometricMatch.SetLearnROI(flfLearnROI); // 학습 영역 입력
geometricMatch.Learn(); // 학습
1.1.4 검사 방법
- 검사를 진행할 이미지를 불러옵니다.

- 검사할 이미지 파일을 선택하고 열기 버튼 클릭


- 검사할 뷰를 선택합니다.
- 검사할 이미지를 불러오기한 뷰를 선택합니다.

- 검사 옵션을 설정합니다.

Scale Min
: 탐색할 패턴의 최소 크기 비율을 설정합니다.
Scale Max
: 탐색할 패턴의 최대 크기 비율을 설정합니다.
Angle Bias
: 패턴 탐색 시 기준이 되는 회전 각도를 설정합니다.
Angle Tolerance
: 허용되는 회전 각도의 범위를 설정합니다.
Minimum Score
: 탐색된 패턴의 최소 신뢰도 점수를 설정합니다.
Max Object
: 이미지에서 탐색할 패턴의 최대 개수를 설정합니다.
Interpolation
: 탐색 시 이미지 보간 방식을 설정합니다.
- 검사를 진행합니다.
- Exectue 버튼 클릭(F5)

- 정상 검사 동작 완료시 다음과 같이 출력됩니다.

해당 동작을 코드로 표현하면 다음과 같습니다.
CGeometricMatch geometricMatch; // 학습한 알고리즘 객체와 동일해야합니다.
CFLImage fliSourceImage; // 이미지 객체 선언
fliSourceImage.Load(L"D:/Find.png"); // 이미지 파일 로드
geometricMatch.SetSourceImage(fliSourceImage); // 검사 이미지 입력
geometricMatch.SetAngleTolerance(90.000000); // 검사 동작 범위 입력 (-90 ~ 90)
geometricMatch.SetMaxObject(3); // 검출학 객체수 출력
geometricMatch.Execute();// 검사 동작
int64_t i64Size = geometricMatch.GetResultCount(); // 검사 결과 갯수 확인
for(int64_t i = 0; i < i64Size; ++i) // 검사 결과 데이터 가져오기
{
CGeometricMatch::SResult results;
geometricMatch.GetResult(i, results);
}
1.1.5 학습 동작 함수
Learn
- 입력된 설정 값으로 학습을 진행합니다.
SetLearnImage
- 학습할 이미지를 설정합니다.
SetLearnROI
- 학습 관심 영역(ROI)을 설정합니다.
1.1.6 검사 동작 함수
Execute
- 검출 이미지에 대한 검사를 진행합니다.
SetMaxObject
- 탐색 최대 개수를 설정합니다.
- 기본값은 1입니다.
- 0 이하 설정시 최대 검출 개수로 설정됩니다.
SetMinimumDetectionScore
- 탐색에서 허용될 수 있는 결과 최소 점수를 설정합니다.
- 기본값은 0.5입니다.
SetScaleRange
- 탐색하고자 하는 패턴의 크기에 최소/최대 비율을 설정합니다.
- 기본값은 1입니다.
SetAngleBias
- 탐색의 기준각도를 설정합니다.
- 기본값은 0입니다.
SetAngleTolerance
- 탐색의 각도 허용범위를 설정합니다.
- 기본값은 0입니다.
EnableInterpolation
- 보간 방식 활성화 유무를 설정합니다.
- 기본값은 true입니다.
1.1.7 동작 결과 취득 함수
GetResult
- 개별 배열 요소의 결과를 취득합니다.
CGeometricMatch::SResult
타입으로 반환합니다.
1.1.8 Learn Weight ROI 상세 설명
기본 학습 진행시 전체적인 학습 영역에서 기하학적 요소에 특징점을 고르게 선출하게되는데 Learn Weight ROI는 특정 영역에 가중치를 주어 해당 영역에 특징점 선출 비율을 조절 할 수 있습니다.
학습 이미지 | 학습 영역 지정 | 학습 결과 (특징점) |
---|---|---|
![]() |
![]() |
![]() |
Weight ROI 지정(좌 0.1 우 0.9) | 학습 결과 |
---|---|
![]() |
![]() |
Fig. 학습 결과를 보면 같이 기본 동작에 학습을 진행시 특징점 위치가 전반적으로 분포됩니다. Figure 는 좌측에 가중치를 0.1 우측 영역에 0.9를 지정하고 학습 진행시 점에 특징점 분포가 가중치에 맞게 선출되게 됩니다.
Weight ROI 지정(가중치 0) | 학습 결과 |
---|---|
![]() |
![]() |
특정 영역에 가중치를 0으로 설정할 수 있습니다.
Fig. 과 같이 내부에 사각형 영역을 지정하고 가중치를 0으로 설정하여 해당 영역에 특징점에 뽑히지 않는 것을 확인할 수 있습니다.
1.1.9 Learn Guide Shape ROI 상세 설명
Learn Guide Shape ROI는 지정 영역에 선을 통해 가중치 비율에 맞게 원하는 위치에 특징점을 뽑을 수가 있습니다.
가이드 영역에 선분에 입력한 Tolerance 거리 차이 내에 기하하적 요소에 특징점을 가중치에 맞게 추출합니다.
Fig. 에 학습 결과를 확인하면 입력한 가이드 영역에 위치에 따라 특징점이 추출됩니다. 특징점이 선출되는 비율은 가중치를 통해 조절이 가능합니다.
Guide Shape 영역 지정 | 학습 결과 |
---|---|
![]() |
![]() |
Guide Shape 영역 지정 | 학습 결과 |
![]() |
![]() |
Guide Shape 영역 지정 | 학습 결과 |
![]() |
![]() |
1.1.10 학습 데이터 Save & Load 방법 설명
학습한 데이터 파일을 저장 및 불러오기가 가능합니다.
이미 학습한 파일을 저장하여 편리하게 관리할 수 있습니다.
1.1.10.1 Save 동작 설명
학습을 진행한 후 해당 학습 데이터 파일을 파일로 저장할 수 있습니다.
Learn 동작을 진행한 이후 저장을 진행 할 수 있습니다.
CGeometricMatch geometricMatch;// 알고리즘 객체
// 패턴 학습
CFLImage fliLearnImage; // 이미지 객체
CFLRect<double> flfLearnROI; // 학습 관심 영역
geometricMatch.SetLearnImage(fliLearnImage); // 학습 이미지 입력
geometricMatch.SetLearnROI(flfLearnROI); // 학습 관심 영역 입력
geometricMatch.Learn(); // 학습 진행
// 학습 파일 Save 진행
geometricMatch.Save(L"파일 경로 입력"); // 파일 포멧은 .flg
1.1.10.2 Load 동작 설명
저장한 학습 파일을 불러오기가 가능합니다.
저장한 파일을 불러와서 바로 검사 진행이 바로 가능합니다.
CGeometricMatch geometricMatch; // 알고리즘 객체
// 학습 파일 Load 진행
geometricMatch.Load(L"파일 경로 입력"); // 파일 포멧은 .flg
// 패턴 탐색
CFLImage fliSourceImage; // 검사할 이미지 객체
geometricMatch.SetSourceImage(fliSourceImage); // 검사 이미지 입력
geometricMatch.Execute(); // 검사 동작