영상처리/Matrox Imaging Library(MIL

MIL이란 무엇인가.(간략하게 경험해보기)

Coding J 2021. 10. 25. 12:06
영상처리쪽 공부하는 사람들은 대부분 openCV나 YOLO를 대표적으로 알고 있을 것이다.
하지만 기업에서는 위의 라이브러리 및 프레임워크 뿐만 아니라 MIL, Cognex등 다양한 경험을 요구한다.
우리는 이 중 MIL에 대해 간단하게 알아보도록 할 것이다.
Matrox의 라이브러리인 MIL도 OpenCV와 같이 영상처리를 가능하게 한다.
OpenCV에서 여러줄에 걸쳐 사용할 수 있는 기능이 하나의 함수로 구현되어 있어서
한 줄로도 기능을 사용할 수 있고, 다양한 모듈들이 함수로 구혀되어 있어서 필요한 기능을 가져다 쓸 수 있다.
이 외에도 주기적으로 버그 및 새로운 기능들이 추가되고 관리되어 안정성이 높다고 본다.
하지만 편리하고 안정성이 좋은 만큼 유로로 라이센스를 구매하여 사용해야 한다.

 

  • MIL
    MIL-Lite 및 프로세싱 모듈을 포함한 라이브러리(모든 기능 사용 가능)
  • MIL-Lite
    영상 획득 및 간단한 영상처리만 가능하다(제한적)

 

MIL 라이브러리는 일반적으로 Application으로 시작해서 System 까지의 순서는 고정이고, 그 다음으로 사용자 입맛에 맞게 Display, Digitizer, Buffer 등을 Allocation에 할당한다.
이때 할당과 관련된 함수는 MoooAlloc()과 같은 형태로 구성됩니다.

각 구성

  • Application:
    MIL의 최상위 모듈
  • System:
    Frame grabber 보드를 관리하는 모듈이다
    Application에 종속되어 있고 System은 PC의 슬롯 수에 따라 여러 개 장착 가능
  • Display:
    이미지를 화면에 출력하는 일을 맡고 있는 모듈이다.
    시스템에 종속
  • Digitizer:
    카메라를 제어하는 모듈
    영상처리 라이브러리인 만큼 가장 많이 사용한다고 생각한다.
    시스템에 종속
  • Buffer
    이미지 또는 MIL에서 사용하는 메모리
    버퍼는 할당하는 속성에 따라 MIL 메모리 또는 Host 메모리에 할당할 수 있다.
    시스템에 종속
  • Graphics Context:
    이미지 위에 그림을 그리는 gra 모듈
    이미지 위에 투명 버퍼를 씌워 문자나 그림을 표시함(이미지 손상 x)
    시스템에 종속

MIL 모귤의 할당과 해제

  • Alloc()
    최상위 모듈에서 하위모듈로 순차적으로 할당해야함.
    각 순차에 있는 모듈들은 서로 동급이다(Display, Digitizer, Buffer)순서 상관x
    Free()
    상위 모듈부터 해제하면안되므로 할당한 모듈의 반대 순서로 해제해야함.
  • 위의 모듈을 사용하려면 할당이 필요하다. 위에서 설명했던 것 처럼 Application, System 고정 순서로 가고
    그 다음으로 할당 진행하면 된다. 해제는 반대로 해주어야 한다.

MIL함수와 Help 파일검색

  • Matrox의 모든 함수와 파라미터는 M으로 시작한다.
    모든 함수는 대문자 M+소문자 모듈명+함수명으로 구분된다.