이번 강좌에서는,
GMF 모듈에 많이 사용하는 함수와 파라미터에 대해 살펴봅니다.
모델 파인더의 모듈 이름은 ‘mod’ 입니다.
모델 파인더를 사용하기 위해 일반적으로 다음의 순서로 함수를 사용합니다.
1. MmodAlloc…( ) – model context 할당
2. MmodAllocResult( ) – model 결과 버퍼 할당
3. MmodDefine( ) – model 정의
4. MmodControl( ) – model에 대한 세팅
5. MmodPreprocess( ) – model context 전처리
6. MmodFind( ) – 검색
7. MmodGetResult( ) – 결과 리턴
8. MmodDraw( ) – 결과 그리기
9. MmodFree( ) – model context, 결과 버퍼 등 해제
자, 하나씩 살펴볼까요?
MmodAlloc( )
모델에 대해 할당합니다.
MmodAllocResult( )
결과 오브젝트에 대해 할당합니다.
모델 파인더 수행 후, 리턴되는 결괏값은 하나가 아니기 때문에
결과 버퍼에 담아 필요한 값을 검색하면 됩니다.
Ex. MmodGetResult(MilResult, M_ALL, M_POSITION_X, &posX);
MilResult에서 position X의 값을 posX로 리턴하라.
MmodDefine( )
모델을 정의하는 함수입니다.
모델을 정의하는 방법은 다양합니다.
1. 타깃 이미지로부터drag&drop 하여 지정합니다.
2. 모델 파인더에서 정의된 여러 모양을 모델로 사용합니다. Circle, rectangle, diamond, ring, … 등 다양한 모양을 지원하고 있습니다.
3. CAD 파일로부터 모델 지정이 가능합니다.
4. 모델 파인더 결과 버퍼에서 모델 정의가 가능합니다.
5. 에지 파인더 결과로부터 모델 정의가 가능합니다.
모델을 정의는 강좌 05에서도 설명한 바와 같이 매우 중요합니다.
1. Good edge
Contrast가 낮거나 노이즈가 강한 에지는 피해야 합니다.
2. Clean model
등록한 모델에서 필요 없는는 마스킹 처리합니다.
3. Efficient model
모델 에지가 중요하거나 꼭 필요한 정보를 담고 있어야 합니다.
4. Stable model
모델이 안정적이어야 합니다.
모델이 단지 평행선이라면,,, 타겟 이미지에서 모호한 결과가 도출될 것입니다.
MmodControl( )
Control 함수는 모델에 대해 설정하는 함수입니다.쉽게 말해 모델 매칭률의 디폴트 세팅은점인데,
90점 이상 되는 모델만 결과로 얻을 수 있도록 설정을 하는 거죠.
MmodControl( ) 파라미터는 매우 다양합니다. MIL에서는 이미지 퀄리티가 나쁘지 않은 경우,
MIL에서 제공하는 디폴트 값을 사용하기를 권장합니다. 그러나 이미지에 노이즈가 많거나, 원하는 edge가 제대로 추출되지 않을 때에는 Control( ) 함수를 통해 사용자 이미지 환경에 맞는 파라미터를 설정해야 합니다.
파라미터들은 매우 다양하므로, 이번 강좌에서는 설정하는 함수다!라는 것만 알아두고 패스합니다.
MmodPreprocess( )
사용자가 지정한 모델을 검색하기 전에 전 처리해야 합니다. 그렇지 않을 경우 에러가 발생합니다.
기하학적인 매칭을 위해 모델을 준비해 두는 작업입니다. 그러나 모델 콘텍스트를 저장할 때, 전처리 정보는 저장되지 않습니다.
MmodFind( )
함수명 그대로 모델에 대해 검색하는 함수입니다.
MmodGetResult( )
찾기에 성공했다면, 찾은 모델에 대해 필요한 결과를 얻어오는 함수입니다.
다음의 결과 값들을 얻어올 수 있습니다.
- M_NUMBER: 타깃에서 찾은 모델의 수
- M_INDEX: 모델이 여러 개 일 때 모델의 인덱스
- M_POSITION: 타겟에서 모델의 위치 값
- M_SCORE: 타겟에서 찾은 모델의 매칭 점수
- M_SCORE_TARGET: 타겟에 관한 매칭 점수 (다음 강좌에서 자세히 설명)
- M_ANGLE: 타겟에서 모델이 회전되어 있는 경우 각도
- M_FIT_ERROR: 찾은 에지가 어느 정도 모델의 edge에 대응하는지를 나타냄
- …
그 밖의 다양한 파라미터는 MIL 도움말을 참고해 주세요~
MmodDraw( )
찾은 모델을 눈으로 확인하기 위해 그려주는 함수입니다.
- M_DRAW_BOX: 모델의 박스를 그림
- M_DRAW_EDGES+M_MODEL/ M_TARGET: 모델의 에지 또는 타깃의 에지를 그림
- M_DRAW_POSITION: 모델의 위치 좌표를 표시함
MmodFree( )
자~ 이제 할당했던 모델 콘텍스트와 결과 버퍼를 해제해 줘야겠지요? 할당한 콘텍스트는 반드시 해제해주어야지,
그렇지 않으면 애플리케이션 종료 시 에러가 발생합니다. 에러 메시지는 불친절해서 ‘MilApplication이 어딘가에서 사용 중이다’라고 표시할 뿐, 어떤 모듈을 해제하세요~라고 알려주지 않습니다.
Alloc( ) 함수를 사용하면 Free( )를 반드시 하도록 습관화하세요.
Mod 모듈의 함수 사용에 대강 감을 잡았나요? 예제를 풀어보면 확실히 이해가 될 거예요 그럼 다음 강좌에서 만나요~
[Matrox Imaging Library - MIL] 3 : GMF(Geometric Model Finder) 설명
MIL 모듈에 설명에 대한 1번 타자는 GMF(Geometric Model finder)입니다.입니다. GMF는 ‘Finding (찾기)’를 목적으로 하고 있습니다. 즉 사용자가 원하는 오브젝트를 모델로 등록해 놓고, 타깃 이미지에서
oneclick-click.tistory.com
[Matrox Imaging Library - MIL] 5 : GMF(Geometric Model Finder) MmodControl() 함수 설명
오늘 강좌는 MmodControl( ) 함수에 대해 자세히 살펴보죠. 지난 강좌에서 모델에 대해 설정하는 함수라는 것을 설명했습니다. 모델 파라미터는 두 가지 종류가 있습니다. 모델 파인더는 멀티 모델
oneclick-click.tistory.com
[Matrox Imaging Library - MIL] 6 : GMF(Geometric Model Finder) 예제 코드 분석
이번 강좌는 GMF(Geometric Model Finder)의 실전입니다. Mod 모듈 소스코드 분석을 해보겠습니다. 기타 다른 언어를 쓰는 분들은 개념만 확인하세요. 언어의 차이일 뿐입니다. 코딩 정답 void CExMILView::On
oneclick-click.tistory.com
'영상처리(Matrox Library, Frame grabber) > Matrox Library' 카테고리의 다른 글
[Matrox Imaging Library - MIL] 8 : Pat(Pattern Matching) 예제코드 분석 (0) | 2021.06.21 |
---|---|
[Matrox Imaging Library - MIL] 6 : GMF(Geometric Model Finder) 예제 코드 분석 (2) | 2021.06.16 |
[Matrox Imaging Library - MIL] 5 : GMF(Geometric Model Finder) MmodControl() 함수 설명 (0) | 2021.06.16 |
[Matrox Imaging Library - MIL] 2 : MIL 기본 소스코드 분석 (0) | 2021.06.01 |
[Matrox Imaging Library - MIL] 1 : 할당하기 Alloc() (1) | 2021.05.31 |