Pattern Match Sparse Multi
1.1.1 개요
이미지 내의 패턴을 학습하고 검사 이미지에서 이미지 내의 동일 혹은 유사한 패턴을 탐지하는 알고리즘입니다. Pattern Match 알고리즘과 다르게 샘플링된 점 데이터를 기반으로 계산을 진행하여 기존 Pattern Match 보다 빠르게 패턴을 검사할 수 있습니다.
1.1.2 알고리즘 상세 설명
학습 이미지 | 원본 이미지 결과 |
---|---|
![]() |
![]() |
조명 밝기 오류 | 포커싱 불량 |
![]() |
![]() |
FLImaging® Pattern Match은 이미지 픽셀 단위 이상의 부동소수점 단위의 정밀도를 제공합니다. 아래 Interpolation 적용 전후 비교에 이미지(왼쪽)와 검사이미지에 대하여 (+0.5, +0.5)만큼 이동변환된 이미지(오른쪽)입니다. 만약 픽셀단위의 결과만 제공할 수 있다면 (+0.5,+0.5)의 상태에 대하여 결과로 제공할 수 없습니다. 하지만 정밀한 보간방식을 이용하여 다음 이미지와 같이 정밀한 결과를 확인할 수 있습니다.
원본 이미지 | (+0.5,+0.5) 이동변환 이미지 |
---|---|
![]() |
![]() |
알고리즘의 파라미터 설정 방식 또한 간단하여 파라미터 설정없이 동작이 가능하며, 사용자에 최적화된 성능을 제공하기 위한 하이퍼 파라미터가 존재하여 커스터마이징된 높은 처리속도의 정확한 결과를 얻을 수 있습니다.
CPatternMatchMultiSparse patternMatchMultiSparse; // 알고리즘 객체
// 패턴 학습
CFLImage fliLearnImage; // 이미지 객체
CFLRect<double> flfLearnROI; // 학습 관심 영역
patternMatchMultiSparse.SetLearnImage(fliLearnImage); // 학습 이미지 입력
patternMatchMultiSparse.SetLearnROI(flfLearnROI); // 학습 관심 영역 입력
patternMatchMultiSparse.Learn(L"학습 클래스 명칭 입력"); // 학습 진행
// 패턴 탐색
CFLImage fliSourceImage; // 검사할 이미지 객체
patternMatchMultiSparse.SetSourceImage(fliSourceImage); // 검사 이미지 입력
patternMatchMultiSparse.Execute(); // 검사 동작
Pattern Match Multi는 Pattern Match와 달리 여러 학습 데이터를 동시에 학습하고, 한 번에 패턴 검사를 수행할 수 있습니다. 이를 통해 하나의 객체에 대해 여러 패턴을 검사할 수 있으며, 학습 데이터가 하나의 파일로 저장되어 관리가 용이하고 사용이 편리합니다.
1.1.3 학습 방법
- FLImaging® 개발 스튜디오을 실행합니다.

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

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

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


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


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

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

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


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

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

해당 동작을 코드로 표현하면 다음과 같습니다.
CPatternMatchMultiSparse patternMatchMultiSparse; // 알고리즘 객체 선언
CFLImage fliLearnImage; // 이미지 객체 선언
fliLearnImage.Load(L"Learn.flif"); // 이미지 파일 로드
patternMatchMultiSparse.SetLearnImage(fliLearnImage); // 학습 이미지 입력
CFLRect<double> flfLearnROI(361.150327, 141.067538, 705.758170, 497.766885, 0.000000);// 학습 영역 생성
patternMatchMultiSparse.SetLearnROI(flfLearnROI); // 학습 영역 입력
patternMatchMultiSparse.Learn(L"CPU"); // 학습 진행(명칭 입력)
1.1.4 검사 방법
- 검사를 진행할 이미지를 불러옵니다.

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


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

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

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

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

해당 동작을 코드로 표현하면 다음과 같습니다.
CPatternMatchMultiSparse patternMatchMultiSparse; // 학습한 알고리즘 객체와 동일해야합니다.
CFLImage fliSourceImage; // 이미지 객체 선언
fliSourceImage.Load(L"Find.flif"); // 이미지 파일 로드
patternMatchMultiSparse.SetSourceImage(fliSourceImage); // 검사 이미지 입력
patternMatchMultiSparse.SetMinimumDetectionScore(0.5); // 최소 스코어 설정
patternMatchMultiSparse.SetMaxObjectTotal(1); // 검출학 객체수 출력
patternMatchMultiSparse.Execute(); // 검사 동작
int64_t i64Size = patternMatchMultiSparse.GetResultCount(); // 검사 결과 갯수 확인
for(int64_t i = 0; i < i64Size; ++i) // 검사 결과 데이터 가져오기
{
CPatternMatchMultiSparse::SResult results;
patternMatchMultiSparse.GetResult(i, results);
}
1.1.3 학습 동작 함수
Learn
- 입력된 설정 값으로 학습을 진행합니다.
- 입력된 Class Name으로 학습 데이터를 구분하여 학습을 진행합니다.
- 동일한 Class Name의 기존 데이터는 새로운 학습 정보로 갱신됩니다.
SetLearnImage
- 학습할 이미지를 설정합니다.
SetLearnROI
- 학습 관심 영역(ROI)을 설정합니다.
SetSampleCount
- 학습에 사용할 샘플 갯수를 설정 합니다.
1.1.4 검사 동작 함수
Execute
- 검출 이미지에 대한 검사를 진행합니다.
SetMaxObjectMode
- 탐색 최대 개수 모드를 설정합니다.
EMaxObjectMode_Total
전체 클래스에서 최대 개수 설정EMaxObjectMode_Class
클래스별 최대 개수 설정- 기본값
EMaxObjectMode_Total
SetMaxObjectTotal
- 검출할 객체의 모든 합산의 최대 개수를 설정합니다.
- EMaxObjectMode가
EMaxObjectMode_Total
일 때 동작합니다. - 기본값은 1입니다.
- 0 이하 설정시 최대 검출 개수로 설정됩니다.
SetMaxObjectClass
- 특정 클래스의 검출할 객체 최대 개수를 설정합니다.
- EMaxObjectMode가
EMaxObjectMode_Class
일 때 동작합니다. - 기본값은 1입니다.
- 0 이하 설정시 최대 검출 개수로 설정됩니다.
SetMinimumDetectionScore
- 탐색에서 허용될 수 있는 결과 최소 점수를 설정합니다.
- 기본값은 0.5입니다.
SetAngleBias
- 탐색의 기준각도를 설정합니다.
- 기본값은 0입니다.
SetAngleTolerance
- 탐색의 각도 허용범위를 설정합니다.
- 기본값은 0입니다.
EnableInterpolation
- 보간 방식 활성화 유무를 설정합니다.
- 기본값은 true입니다.
1.1.5 동작 결과 취득 함수
GetResult
- 개별 배열 요소의 결과를 취득합니다.
CPatternMatchMultiSparse::SResult
타입으로 반환합니다.
1.1.6 학습 데이터 Save & Load 방법 설명
학습한 데이터 파일을 저장 및 불러오기가 가능합니다.
이미 학습한 파일을 저장하여 편리하게 관리할 수 있습니다.
1.1.6.1 Save 동작 설명
학습을 진행한 후 해당 학습 데이터 파일을 파일로 저장할 수 있습니다.
Learn 동작을 진행한 이후 저장을 진행 할 수 있습니다.
- Save 버튼을 클릭합니다.

- 파일 명칭을 입력합니다.


멤버함수 | 파라미터 | 설 명 | ||
---|---|---|---|---|
Save | const Base::CFLString |
strFilePath | IN | 학습 파일 경로 |
CPatternMatchMultiSparse patternMatchMultiSparse; // 알고리즘 객체
// 패턴 학습
CFLImage fliLearnImage; // 이미지 객체
CFLRect<double> flfLearnROI; // 학습 관심 영역
patternMatchMultiSparse.SetLearnImage(fliLearnImage); // 학습 이미지 입력
patternMatchMultiSparse.SetLearnROI(flfLearnROI); // 학습 관심 영역 입력
patternMatchMultiSparse.Learn(L"학습 클래스 명칭 입력"); // 학습 진행
// 학습 파일 Save 진행
patternMatchMultiSparse.Save(L"파일 경로 입력"); // 파일 포멧은 .flmms
1.1.6.2 Load 동작 설명
저장한 학습 파일을 불러오기가 가능합니다.
저장한 파일을 불러와서 바로 검사 진행이 바로 가능합니다.
- Load 버튼을 클릭하여 저장된 학습 파일을 선택합니다.



멤버함수 | 파라미터 | 설 명 | ||
---|---|---|---|---|
Load | const Base::CFLString |
strFilePath | IN | 학습 파일 경로 |
CPatternMatchMultiSparse patternMatchMultiSparse; // 알고리즘 객체
// 학습 파일 Load 진행
patternMatchMultiSparse.Load("파일 경로 입력"); // 파일 포멧은 .flmms
// 패턴 탐색
CFLImage fliSourceImage; // 검사할 이미지 객체
patternMatchMultiSparse.SetSourceImage(fliSourceImage); // 검사 이미지 입력
patternMatchMultiSparse.Execute(); // 검사 동작