2010년 7월 26일 월요일

Configuration of Matrox Meteor-II + MIL-lite


-->
출처는 알수 없지만, 문제가 된다면 연락주세요 오래된 내용 정리하다가
필요한 사람들이 있을 것 같아 이렇게 올려 봅니다.
Mil Mil Lite, Active Mil 과의 차이점
MIL-LITE 의 경우는 Matrox Frame Grabber 설치를 위한 Driver를 제공하며 기본적인 Frame Grabber 기능 즉, 영상획득, Display, 영상 Load, 저장이 가능한 Module들로 구성되어 있습니다.
주로 영상을 획득하여 Image 확인 및 이에 대한 저장을 위해 많이 사용되며 Image data를 직접 Access하여 독자적인 Processing처리 및 알고리즘을 적용할 수 있습니다.
MIL의 경우는 MIl-Lite에서 저공하는 기능을 포함하며 영상 처리를 위해 사용되는 알고리즘이 쉽게 사용할 수 있는 함수로 구현되어 있습니다.
, Image Processing, Pattern matching, OCR, blob, Measurement등의 기능을 함수로써 제공하므로 누구나 쉽게 사용하실 수 있도록 구성되어 있습니다.
MIL은 우리가 Visual C++ 환경에서 c language를 사용하여 programming 할 수 있도록 Library가 구성되어 있습니다.
Active MIL Active X를 사용하는 것으로써 Visual Basic Visual C++환경에서 개발이 가능하며 mil에서 사용하는 module들이 control들로 구성되어 있습니다.
MIL에서는 사용하기 위한 module들에 대한 선언 및 초기화 작업에 대한 작업을 coding을 통해 설정을 해주는 반면에 Active MIL의 경우는 Active X control로 모든 module들이 구성 되어 있어 control Form Resource에서 원하는 control을 선택하고 여기에 대한 초기화를 속성 창을 통해 설정을 합니다.
지원하는 기능은 동일하며 다만 사용하는 함수의 표현방식이 개발환경에 따라 다릅니다.

S/W License 정책 및 Maintenance
License의 경우는 MIL-Lite의 경우는 구매하시면 한 법인 내에서 1copy free로 사용가능합니다. 그러나 MIl의 경우는 1copy당 각각의 license가 있습니다. Hardware Lock key가 있어야만 사용이 가능 합니다. 따라서 2개 이상 사용시는 Hardware
Lock key를 추가로 구매하셔야 합니다.
Maintenance의 경우는 구매 후 1년 이내이면 Minor version upgrade시 무상 upgrade가 가능합니다. 그러나 Major version upgrade 및 구매 후 1년 이상이 지나신 경우는
Maintenance 비용을 지불하시면 upgrade가 가능합니다.

Mil Uninstall이 잘 되지 않을 경우
win2K 환경에서는 레지스트리 관리에 의해 MIL은 자체적인 Uninstall후에도 MIL이 제대로 제거되지 않는 경우가 있습니다.
또한 불가피하게 MIL을 다시 설치하게 될 경우 Uninstall 과정을 거친 후 다시 설치를 하게 되는데 설치가 제대로 되지 않는 경우가 있습니다.
이럴 경우에는 다음과 같이 setting을 하시면 됩니다.
1. Registry 편집기를 실행시킨다.
2. HKEY_LOCAL_MACHINE\SOFTWARE\Matrox의 폴더를 삭제 단, Matrox Desktop 제외
3. HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\MtxDma0의 폴더를 삭제
4. ControlSet003, ControlSet004, Current ControlSet 각각의 폴더 아래에 있는 MtxDma0도 모두 삭제
5. Boot.ini File 확인 사항Uninstall Boot.ini 파일 안에 메모리 관련 수치가 삭제되었는지 확인
C:\WINNT 폴더에 Boot.ini 파일의 내용 중 메모리 관련 내용을 삭제합니다.
Boot.ini File 내용의 일부분
[Operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINNT="Microsoft
Windows 2000 Professional(Memory :
NT=228MB, MIL=20.0MB)(Memory : NT=148MB,
MIL=100.0MB)" /MAXMEM=148 /MAXMEM=248 /fastdetect
6. 재부팅

Mil을 설치 했는데 보드가 제대로 인식이 되지 않는 경우
MIL을 설치한 후 장치관리자에서 새로운 장치가 올바르게 설치되었는지 여부를 확인할 수 있습니다. Board를 제대로 인식하지 않는 경우는 다음과 같습니다.
1. 적절한 드라이버가 설치되지 않아 노란 물음표기 표시되어 있는 경우
2. Frame Grabber Adapter가 잘못 명기되어 있는 경우
예를 들어 Meteor2/4 또는 Meteor MC를 설치했는데 인식되는 board MeteorII-digital Frame Grabber 일 경우 그 반대의 경우 MeteorII-digital을 설치했는데 MeteorII라고 인식되는 경우
3. Intellicam에서 System Device0로 인식되지 않는 경우
1~3번의 경우는 장치관리자에서 드라이버 업데이트를 통해 적절한 드라이버를 설치하도록 설정, 재부팅 합니다. 그런 후에도 board가 잡히지 않는다면 IRQ setting이 어떻게 되어있는지 확인하시고 IRQ의 설정을 변경한 후 check를 합니다.

Intellicam을 잘 활용하는 방법
Intellicam Matrox에서 제공하는 하나의 Application Program으로 MIL MIL-Lite 모두에 포함되어 있는 program 입니다.
Application program
1. Board가 제대로 인식되는지에 대한 확인
2. 사용하는 camera에 대한 적절한 dcf 제작및 편집
-> 대부분 Matrox에서 제공하며 sync mode exposure time을 원하는 형태로 설정하는 것을 이 Application program을 통해 편집 가능
3. 제공되는 또는 제작 편집을 한 dcf camera와의 interfacing을 통해 영상이 제대로 획득 되는지를 원하는 결과가 나타나는 지 렌즈 및 빛의 밝기 등이 적절하게 선택되었는지 확인 할 수 있습니다.
또한 dcf의 편집을 통해 다양한 기능을 수행할 수 있으며, 간단한 Digitizer control을 할 수 있습니다.
원하는 영상이 획득된다면 이에 해당하는 dcf를 사용하여 program을 작성하시면 됩니다.

Matrox에서 제공 하는 예제를 보는 방법
Visual Studio 6.0 환경에서 Source를 불러와서 직접workspace를 생성할 때
예제는 Active MIL MIL 예제가 제공되고 있습니다.
예제에 대한 전반적인 기능에 대해 살펴보기 위해서는 시작/프로그램/Matrox
Imaging/Active MIL(MIL)/Example 을 클릭하시면 됩니다.
Active MIL의 경우는 바로 예제를 Simulation할 수 있도록 지원되는 형태로 이루어져있습니다. 따라서 원하는 Program에 대한 결과를 볼 수 있습니다.또한 오른쪽 하단에 Edit이라고 나타나 있는 Button click할 경우 visual Basic에서 구현된 code form을 바로 볼 수 있습니다.
MIL의 경우는 각 예제에 대해 각각 선택을 할 수 있으며 이것을 선택하셔서 결과를 확인할 수 있습니다.
Code C:/program files/Matrox Imaging/MIL/examples 에서 원하시는 code를 살펴볼
수 있습니다.
물론 Active MIL도 위와 같은 방법으로 볼 수 있으며 Visual C++ 환경에서 coding program도 볼 수 있습니다

Mil workspace 생성을 위한 setting
MIL을 이용한 program을 실행하기 위해서는
1. Tool/option을 선택하셔서 Directories Tab에서 Library include File Matrox Include Library를 설정해주십시오.
2. 그런 후 complie을 하시면 workspace가 생성이 되면서 error가 여러개 발생합니다.
error의 경우는 각 module에 대한 library link되지 않아서 발생하는 error이므로 다음과 같은 설정을 합니다.
- project/setting tab link program에서 사용되는 library module을 삽입해 주시면 됩니다.
예를 들면 mblob.c를 사용할 경우 기본적으로 mil.lib milblob.lib, milim.lib library를 첨가해주시면 됩니다.
3. 다시 Complie 합니다.

Mil (or Mil lite) 소스의 기본구조
MIL(Matrox Imaging Library) Matrox에서 나오는 Frame Grabber를 사용하기 위해서 필요한 일종의 라이브러리입니다.
MIL MIL-lite의 두 종류로 나뉘어 있으며 MIL MIL-lite에 들어있지 않은 Image Processing관련 함수들이 포함되어 있습니다.
MIL을 처음 다루시는 분들을 위해 간단한 grab예제로 설명을 하도록 하겠습니다.
/* MIL함수들이 정의되어 있는 함수로써 include 해주셔야 합니다.*/
#include <>
#include <>
void main(void)
{
/* MIL에서 각 개체들을 다루는 data type으로서, 아래와 같은 */
/* 항목들을 지정합니다. */
MIL_ID MilApplication,
/* 제작하는 응용프로그램 ID */
MilSystem,
/* Frame Grabber ID */
MilDisplay,
/* Display를 위한 ID */
MilDigitizer,
/* Digitizer Camera를 위한 ID */
MilImage;
/* Image Buffer를 위한 ID */
/* 응용프로그램에서 각 ID들을 기본적인 설정으로 할당합니다. */
MappAllocDefault(M_SETUP, &MilApplication, &MilSystem,
&MilDisplay, &MilDigitizer, &MilImage);
/* Monitor MilImage의 내용을 Display하기 위한 설정을 합니다. */
MdispSelect(MilDisplay, MilImage);
/* Camera에서 Grab하여 MilImage에 저장합니다. */
MdigGrab(MilDigitizer, MilImage);
/* printf */
printf("An image has been grabbed.\n");
printf("Press to end.\n");
getchar();
/* 처음에 할당한 ID들을 해제합니다. */
MappFreeDefault(MilApplication, MilSystem,
MilDisplay, MilDigitizer, MilImage);
}
위에서 각 ID들을 할당하고 해제시켜주는 것은 모든 응용프로그램에서 동일합니다.
다만 각 경우에 따라 각 ID들을 따로 할당시키고 각각 해제할 수 있습니다.
각각의 MIL_ID를 할당 및 해제하는 함수는 다음과 같습니다.
MilApplication - MappAlloc, MappFree
MilSystem - MsysAlloc, MsysFree
MilDisplay - MdispAlloc, MdispFree
MilDigitizer - MdigAlloc, MdigFree
MilImage - MbufAlloc2d, MbufAllocColor, MbufFree, etc
여기서 주의하실 점은 할당 및 해제할 때 순서에 따라야 한다는 것입니다.
할당의 경우는
MappAlloc -> MsysAlloc -> MdigAlloc, MdispAlloc, MbufAlloc
해제의 경우는
MdigFree, MdispFree, MbufFree -> MsysFree -> MappAlloc
의 순서입니다

Visual C++에서 Mil 사용 팁!!
1. MIL help 이용방법
- MIL을 설치하신 후에 메뉴>Tools>Customize에 들어가셔서 Add-ins and Macro Files 탭을 보시면 다음과 같은 항목이 추가되는 걸 확인하실 수 있습니다.
. Matrox ActiveMIL VC++ Add-In
. Matrox MIL VC++ Add-In
여기서 Matrox MIL VC++ Add-In을 추가하시면 Visual C++을 사용하시다가 MIL함수에 대한 도움말을 보실 때, 함수 명위에 커서를 위치시키고, Ctrl+F1을 누르시면 바로 MIL help를 보실 수 있습니다.
2. LINK : fatal error LNK1104: cannot open file "mil.lib"
(or error LNK2001: unresolved external symbol)
프로그래밍을 조금만 해보신 분이라면 아시겠지만, 위 에러는 컴파일할 때 mil library를 못찾은 까닭입니다. 이 때는 메뉴>Tools>Options에서 Directories탭에 가셔서 library files의 디렉토리로 MIL library파일이 있는 경로를 추가해주시면 됩니다.
일반적인 경우 경로는 다음과 같습니다.
C:\PROGRAM FILES\MATROX IMAGING\MIL\LIBRARY\WINNT\MSC\DLL
Include file도 똑같이 해주시면 되고, 경로는 다음과 같습니다.
C:\PROGRAM FILES\MATROX IMAGING\MIL\INCLUDE
(주의)이미 만들어진 소스를 가지고 작업을 하시게 될 경우에도 위의 에러를 보시는 경우가 있을 것입니다. 이것은 기존 workspace에 설정돼있는 lib화일의 경로와 현재 사용하시는 컴퓨터에서의 경로가 다르기 때문인데, 이때는 위의 directories설정을 제대로 해주셔도 위와 같은 link error가 발생합니다.
이때는 workspace view에 있는 *.lib화일을 삭제하시고 다시 컴파일하시면 됩니다.

Milimage 를 파일로 저장하거나 불러오는 방법
MIL에서 기본으로 사용하는 Image Format *.mim형태의 tiff형식의 화일입니다.
따라서 MbufLoad MbufSave를 다음과 같이 사용하시면, mim화일로 저장 또는 불러오기가 가능합니다.
MbufLoad("load.mim", MilImageLoaded);
MbufSave("save.mim", MilImageSaved);
그러나 일반적으로 사용하는 포맷인 jpeg이나 tiff, raw등의 이미지화일포맷은 다음의 함수를 사용하여 저장 또는 불러오기가 가능합니다.
MbufImport("sample.jpg", M_JPEG_LOSSY, M_RESTORE,
MilSystem, &MilImage);
MbufExport("sample.tif", M_TIFF, MilImage);
그리고 Image sequence avi파일로도 저장이 가능한데, 이때는 MbufImportSequence, MbufExportSequence함수를 이용하시면 됩니다.

Mil을 이용한 프로세싱 시간 측정
프로그램을 직접 작성하시다 보면 각 부분들의 성능을 측정하고, 디버깅을 위해 Timer가 필요한 경우가 많습니다. 이럴 경우 MIL, MIL-lite에서 제공하는 MappTimer를 사용하시면 됩니다. 사용방법은 매우 간단합니다.
/* Return되는 시간값의 단위는 sec()이고, 따라서 보통
Time*1000(ms)로 사용합니다. */
double Time;
MappTimer(M_TIMER_RESET, M_NULL);
/* 이곳에 시간측정대상이 되는 프로세스가 들어갑니다.*/
MappTimer(M_TIMER_READ, &Time);

Mil을 이용한 프로세싱 시간 측정
Matrox 프레임그래버의 드라이버는 따로 화일로 주어지지는 않습니다. MIL이나 Mil-lite를 설치하실 때 깔게 되구요. 창이 설치도중에 뜨게 되는데 이때 선택하신 보드의 드라이버들이 깔리게 됩니다.
MIL이나 Mil-lite의 설치가 끝난 후 프레임그래버가 자동으로 잡히지 않는 경우에는 장치관리자를 확인하여 주시기 바랍니다. 제대로 잡혔다면 Matrox Imaging Adapter라는 폴더가 생기고 그 안에 프레임그래버정도가 들어있게 됩니다.
느낌표나 x표가 있을 경우 제대로 인식이 안된 것입니다. 이때는 등록정보의 드라이버탭의 드라이버 업데이트를 해주십시요.
위와 같이 하시면, 창이 새로 뜨게 되는데 여기서 밑의 항목을 선택합니다.
그러시면, 설치하신 프레임그래버 드라이버중 사용가능한 드라이버의 목록이나 설치할 준비가 되었다는 메시지가 뜨게 됩니다.
(참고로 Meteor2/Multi-Channel보드도 MeteorII라고만 표시됩니다.)
그리고 나시면 Intellicam 에서 Device 0 라고 나온것을 확인하실 수 있습니다.

댓글 없음:

댓글 쓰기