Drawing Match

1.1.1 개요

도면 파일이나 Figure 객체를 Load해서 기하학적 정보 패턴을 학습하고 검사 이미지에서 이미지 내의 동일 혹은 유사한 패턴을 탐지하는 알고리즘입니다.

1.1.2 알고리즘 상세 설명

도면 파일을 입력하여 학습을 진행하고 해당 정보를 바탕으로 탐색을 진행합니다.

학습 도면 데이터 매칭 결과
학습 도면 매칭 결과
도면 매칭 결과

1.1.3 학습 방법

  1. FLImaging® 개발 스튜디오을 실행합니다.
개발 스튜디오 실행 화면
개발 스튜디오 실행 화면
  1. Menu 검색창에 Drawing Match를 검색하거나 Advanced Functions에 Match 카테고리에 Drawing을 클릭합니다.
Pattern Match 알고리즘 검색
알고리즘 검색
  1. 학습할 도면을 선택합니다.
도면 파일 불러오기
도면 파일 Load
도면 파일 선택
파일 선택
확장자
파일 확장 필터
경로 입력 완료
도면 파일 경로 입력 완료
  1. 학습을 진행합니다.
    • 버튼(F6)을 클릭합니다.
학습 진행
도면 분해능을 설정합니다.
학습 진행
학습 진행
학습 완료
학습 완료
출력 메세지에 OK 출력시 정상적으로 학습이 동작이 완료되었습니다. 학습 완료
학습 완료

해당 동작을 코드로 표현하면 다음과 같습니다.

CDrawingMatch drawingMatch; // 알고리즘 객체 선언

drawingMatch.SetDrawing(L"Drawing.gbr"); // 도면 파일 경로
drawingMatch.SetPixelAccuracy(1.000000, 1.000000); // 분해능 설정

drawingMatch.Learn(); // 학습 진행
CDrawingMatch drawingMatch = new CDrawingMatch(); // 알고리즘 객체 선언

drawingMatch.SetDrawing("Drawing.gbr"); // 도면 파일 경로
drawingMatch.SetPixelAccuracy(1.000000, 1.000000); // 분해능 설정

drawingMatch.Learn(); // 학습 진행
drawingMatch = CDrawingMatch() # 알고리즘 객체 선언

drawingMatch.SetDrawing("Drawing.gbr") # 도면 파일 경로
drawingMatch.SetPixelAccuracy(1.000000, 1.000000) # 분해능 설정

drawingMatch.Learn() # 학습 진행

1.1.4 검사 방법

  1. 검사를 진행할 이미지를 불러옵니다.
Load File 선택
Load File 선택
파일 선택
파일 선택
이미지 파일 열기
이미지 파일 열기 완료
  1. 검사할 뷰를 선택합니다.
View 선택
View 선택
  1. 검사 옵션을 설정합니다.
옵션 설정
옵션 설정

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

  1. 검사를 진행합니다.
    • Exectue 버튼 클릭(F5)
옵션 설정
옵션 설정
  1. 검사 동작 완료
검사 완료
검사 완료

해당 동작을 코드로 표현하면 다음과 같습니다.

CDrawingMatch drawingMatch; // 학습한 알고리즘 객체와 동일해야합니다.

CFLImage fliSourceImage; // 이미지 객체 선언

fliSourceImage.Load(L"D:/Image.flif");  // 이미지 파일 로드
drawingMatch.SetSourceImage(fliSourceImage); // 검사 이미지 입력
drawingMatch.Execute(); // 검사 동작

int64_t i64Size = drawingMatch.GetResultCount();  // 검사 결과 갯수 확인

for(int64_t i = 0; i < i64Size; ++i) // 검사 결과 데이터 가져오기
{
	CDrawingMatch::SResult results;
	CFLFigureArray flfaResultPoints;
	drawingMatch.GetResult(i, results);
}
CDrawingMatch drawingMatch = new CDrawingMatch(); // 학습한 알고리즘 객체와 동일해야합니다.

CFLImage fliSourceImage = new CFLImage(); // 이미지 객체 선언

fliSourceImage.Load("D:/Image.flif");  // 이미지 파일 로드
drawingMatch.SetSourceImage(ref fliSourceImage); // 검사 이미지 입력
drawingMatch.Execute(); // 검사 동작

long i64Size = drawingMatch.GetResultCount();  // 검사 결과 갯수 확인

for(long i = 0; i < i64Size; ++i) // 검사 결과 데이터 가져오기
{
	CDrawingMatch.SResult results = new CDrawingMatch.SResult();

	drawingMatch.GetResult(i, ref results);
}
drawingMatch = CDrawingMatch() # 학습한 알고리즘 객체와 동일해야합니다.

fliSourceImage = CFLImage() # 이미지 객체 선언

fliSourceImage.Load("D:/Image.flif")  # 이미지 파일 로드
drawingMatch.SetSourceImage(fliSourceImage) # 검사 이미지 입력
drawingMatch.Execute() # 검사 동작

i64Size = drawingMatch.GetResultCount()  # 검사 결과 갯수 확인

for i in range(i64Size): # 검사 결과 데이터 가져오기
	results = CDrawingMatch.SResult()
	drawingMatch.GetResult(i, results)

1.1.5 학습 동작 함수

1.1.6 검사 동작 함수

1.1.5 동작 결과 취득 함수

1.1.7 학습 데이터 Save & Load 방법 설명

학습한 데이터 파일을 저장 및 불러오기가 가능합니다.
이미 학습한 파일을 저장하여 편리하게 관리할 수 있습니다.

1.1.7.1 Save 동작 설명

학습을 진행한 후 해당 학습 데이터 파일을 파일로 저장할 수 있습니다.
Learn 동작을 진행한 이후 저장을 진행 할 수 있습니다.

멤버함수 파라미터 설 명
Save const Base::CFLString strFilePath IN 학습 파일 경로

CDrawingMatch drawingMatch; // 학습이 이미 진행된 알고리즘 객체

// 학습 파일 Save 진행
drawingMatch.Save(L"파일 경로 입력"); // 파일 포멧은 .flg
CDrawingMatch drawingMatch = new CDrawingMatch(); // 학습이 이미 진행된 알고리즘 객체

// 학습 파일 Save 진행
drawingMatch.Save("파일 경로 입력"); // 파일 포멧은 .flg
drawingMatch = CDrawingMatch() # 학습이 이미 진행된 알고리즘 객체

# 학습 파일 Save 진행
drawingMatch.Save("파일 경로 입력") # 파일 포멧은 .flg

1.1.7.2 Load 동작 설명

저장한 학습 파일을 불러오기가 가능합니다.
저장한 파일을 불러와서 바로 검사 진행이 바로 가능합니다.

멤버함수 파라미터 설 명
Load const Base::CFLString strFilePath IN 학습 파일 경로

CDrawingMatch drawingMatch; // 알고리즘 객체

// 학습 파일 Load 진행
drawingMatch.Load(L"파일 경로 입력"); // 파일 포멧은 .flg

// 패턴 탐색
CFLImage fliSourceImage; // 검사할 이미지 객체
drawingMatch.SetSourceImage(fliSourceImage); // 검사 이미지 입력
drawingMatch.Execute(); // 검사 동작
CDrawingMatch drawingMatch = new CDrawingMatch(); // 알고리즘 객체

// 학습 파일 Load 진행
drawingMatch.Load("파일 경로 입력"); // 파일 포멧은 .flg

// 패턴 탐색
CFLImage fliSourceImage = new CFLImage(); // 검사할 이미지 객체
drawingMatch.SetSourceImage(ref fliSourceImage); // 검사 이미지 입력
drawingMatch.Execute(); // 검사 동작
drawingMatch = CDrawingMatch() # 알고리즘 객체

# 학습 파일 Load 진행
drawingMatch.Load("파일 경로 입력") # 파일 포멧은 .flg

# 패턴 탐색
fliSourceImage = CFLImage() # 검사할 이미지 객체
drawingMatch.SetSourceImage(fliSourceImage) # 검사 이미지 입력
drawingMatch.Execute() # 검사 동작