1、Matrox MIL/MIL-Lite8.0软件包讲座,龚幼平 2006/9/5 于深圳,GongYP,讲座内容安排,一、MIL/MIL-Lite8.0软件包总体介绍1、MIL/MIL-Lite8.0软件包概念与功能模块简介2、MIL/MIL-Lite8.0软件包安装与软件开发环境设置3、DCF文件与Intellicam工具4、MilConfig工具5、程序分发Distribution与软件许可License二、MIL-Lite8.0功能模块详解与程序示例三、MIL8.0功能模块详解与程序示例,MIL/MIL-Lite软件包概念与功能模块简介,MIL的全称:Matrox Imaging Lib
2、ray由加拿大Matrox公司开发; MIL软件包是一个独立于硬件的、含有多个标准模块或组件的32位图像库,可以对图像进行采集、处理、分析、显示和存取操作,其功能覆盖图像领域的所有方面,使用起来也相当简单和方便; MIL-Lite是MIL的子集,含有MIL的部分模块,可以进行图像的采集、显示、存取操作,还可以在图像上进行图形操作及LUT变换等; MIL/MIL-Lite支持Matrox公司所有采集卡,如果应用程序采用其它公司的采集卡,则不能使用MIL/MIL-Lite的采集功能,但应用程序可以使用MIL/MIL-Lite的其它功能。,Matrox公司支持MIL/MIL-Lite软件包的板卡与设
3、备:,MIL/MIL-Lite软件包概念与功能模块简介,CronosPlus (标准视频信号采集卡)Morphis (多路标准视频信号采集压缩卡)Solios (系列卡,可采集模拟或数字信号)Meteor_II (系列卡,可采集模拟或数字信号)Orion (带VGA显卡的标准视频信号采集卡)Corona_II (带VGA显卡的非标RGB视频信号采集卡) Helios (系列卡,可采集模拟或数字信号,有部分处理功能)Odyssey (系列卡,可采集模拟或数字信号,有强力处理功能) Iris (智能相机)4Sight_M (设备),Established and field-proven Firs
4、t released in 1993,Last Release is 8.0 10,000 registered users and growing Backed by a team of over 40 developers Computer scientists, software engineers, physicists and mathematicians,MIL/MIL-Lite软件包概念与功能模块简介,MIL/MIL-Lite的一些资料:,Mapp 应用类Msys 系统类,Mdisp显示类,Mdig采集类,Mbuf数据缓冲区类,Mgra图形操作类,MIL/MIL-LITE8.0介
5、绍:MIL-LITE功能模块与体系架构,MIL/MIL-LITE8.0介绍:MIL功能模块与体系架构,Available for Microsoft Windows 2000Windows XPWindows CE .NET Linux,MIL/MIL-LITE8.0介绍:软件安装 Setup,可安装的操作系统平台,32-bit Only for Matrox Iris P-Series smart camera,MIL/MIL-LITE8.0介绍:软件安装 Setup-1,MIL/MIL-LITE8.0介绍:软件安装 Setup-2,MIL/MIL-LITE8.0介绍:软件安装 Setup-
6、3,MIL/MIL-LITE8.0介绍:软件安装 Setup-4,MIL/MIL-LITE8.0介绍:软件安装 Setup-5,MIL/MIL-LITE8.0介绍:软件安装 Setup-6,MIL/MIL-LITE8.0介绍:软件开发环境设置,MIL/MIL-Lite8.0支持的开发方式 C语言库函数(C API) ActiveX或OCX控件(ActiveMIL),MIL/MIL-Lite8.0函数与控件特点直观、易用的一组功能集 API示例: Malloc() and Mfree();/资源申请和释放ActiveMIL示例: Digitizer1.GrabContinuous();/连续采集
7、图象Digitizer1.Halt(); /停止采集图象,MIL/MIL-Lite8.0函数与控件特点(cont) Platform independent Concept pioneered by Matrox Imaging Move from one hardware platform to another with little or no changes to application code,MilSystem = MsysAlloc(M_SYSTEM_METEOR_II_CL,.);MilSystem = MsysAlloc(M_SYSTEM_SOLIOS,.);,MIL/MIL
8、-LITE8.0介绍:软件开发环境设置,Applications developed using Visual C+ 6.0 or Visual C+ .NET 2003 (unmanaged code) for Windows 2000/XP eMbedded Visual C+ for Windows CE .NET GNU Compiler Collection (GCC) for Linux Visual Basic 6.0 Delphi,Borland C+ Builder,Labview, etc,MIL/MIL-LITE8.0介绍:软件开发环境设置,可应用的计算机高级语言及操作系
9、统OS平台:,MIL/MIL-LITE8.0介绍:软件开发环境设置,用MIL/MIL-LITE8.0的API函数: 在VC6.0下的设置,MIL/MIL-LITE8.0介绍:软件开发环境设置,用MIL/MIL-LITE8.0的API函数: 在VC6.0下的设置,MIL/MIL-LITE8.0介绍:软件开发环境设置,用MIL/MIL-LITE8.0的API函数: 在VC6.0下的设置,MIL/MIL-LITE8.0介绍:软件开发环境设置,用MIL/MIL-LITE8.0的API函数: 在VC6.0下的设置,MIL/MIL-LITE8.0介绍:软件开发环境设置,用MIL/MIL-LITE8.0的A
10、PI函数: 在VC6.0下的设置,DCF的定义:digitizer configuration format DCF文件的作用:描述你使用的相机与Matrox的采集卡之间的接口关系。 Matrox Intellicam:交互式Windows软件 Use for configuring a Matrox frame grabber to acquire from a video source 可用于测试采集卡、相机及其连接电缆等,DCF文件与Intellicam工具,做DCF文件的前提:了解相机的时钟PixelClock、视频信号时序 video timing、数据输出接口、同步信号参数、颜色、
11、信号类型、数据深度等;采集卡与相机的协同工作方式等。 如何用Intellicam做DCF文件?,DCF文件与Intellicam工具,Run Intellicam,如何获取DCF文件?查找MIL/MIL-Lite安装路径的Drivers目录下在MVLZ网站http:/下DownloadMatrox Imaging web site,DCF文件与Intellicam工具, 连续模式 (Continous Grab Mode) 触发模式 (Hardware Trigger Grab Mode - Next Valid Frame ) 异步复位模式(Hardware Trigger Grab Mod
12、e Asynchronous Reset) 长时间积分模式(Long Time Integrate Grab Mode) 线阵相机的工作模式 固定线扫描速度连续模式(Continuous-Free Run) 可变线扫描速度触发模式(Hardware Trigger-Fixed Frame/Varible Line) 可变线扫描速度可变帧大小模式(Hardware Trigger-Varible Frame&Line),曝光时间不超过传输时间 帧速率独立于曝光时间不变 内部曝光控制,DCF文件与Intellicam工具-板卡相机工作模式-连续模式,触发模式,内部曝光控制 外部触发 有一段延时才会
13、获取图像,DCF文件与Intellicam工具-板卡相机工作模式,硬件触发例子,DCF文件与Intellicam工具-板卡相机工作模式,异步复位模式,要求处于异步工作模式下 无延迟得到当前图像 卡送给相机曝光信号,DCF文件与Intellicam工具-板卡相机工作模式,长时间积分模式,外部或内部曝光控制 曝光时间长于传输时间 相当于多图累加,增加亮度,多用于凝胶、暗室操作,DCF文件与Intellicam工具-板卡相机工作模式,固定线扫描速度连续模式,Fixed line rate固定扫描速度 目标物体以恒定速度运行 线扫描速度取决于行同步信号的频率,DCF文件与Intellicam工具-板卡
14、相机工作模式,可变线扫描速度触发模式,Line trigger线触发 目标物体运行速度不定 线扫描速度取决于外部触发脉冲时间,DCF文件与Intellicam工具-板卡相机工作模式,可变线扫描速度 可变帧大小模式,Line trigger线触发 + Frame trigger帧触发 目标物体运行速度不定且大小不固定 线扫描速度取决于外部触发脉冲时间,DCF文件与Intellicam工具-板卡相机工作模式,设置MIL/MIL-Lite程序应用的缺省采集卡或系统类型 设置MIL/MIL-Lite程序使用的计算机物理内存大小 设置MIL/MIL-Lite程序应用到的缺省DCF文件、显示窗口、图象大小
15、等 设置MIL/MIL-Lite程序如何使用VGA显示卡的性能 查看系统信息、软件许可License情况 诊断系统错误等,MILConfig,MilConfig工具,MilConfig工具,MilConfig工具,MilConfig工具,MilConfig工具,MilConfig工具,MilConfig工具,MilConfig工具,程序分发Distribution与软件许可License,MIL8.0软件LicenseDevelopment license (Hardware Dongle)Temporary license (CD,30天试用)Run-time license (硬狗,软狗)
16、 程序分发Distribution用MIL/MIL-Lite8.0光盘分发用编程的方式(InstallShield等)调用MIL/MIL-Lite8.0的分发程序,程序分发Distribution与软件许可License,MIL-Lite 讲解-功能浏览(函数方式),Mapp(应用级) Msys(系统级) Mdig(数字化级) Mbuf(内存级) Mdisp(显示级) Mgra(图形级) Mgen(LUTs),ActiveMilDemo,MIL-Lite 讲解-应用级,Msys 系统分配和查询模块支持分配和查询系统。系统通常指物理层板卡,多数情况为图像采集卡,也可以是显卡和主机CPU。该模块用
17、来指定程序中要用的物理设备,并且进行一些系统级的设置。只有当系统资源已经设置完成,才可以添加相关的其他部分,如Digitizer来控制设备的细节方面。 MIL_ID MsysAlloc(MIL_TEXT_PTR SystemDescriptor, long SystemNum, long InitFlag, MIL_ID *SystemIdPtr),MIL-Lite 讲解-系统级,Mdig Digitizer模块管理和控制板卡的数字化部分。无论是简单还是复杂采集,都可以使用Digitizer模块设置需要的状态,并且可以将命令发送到图像采集卡。 MIL_ID MdigAlloc(MIL_ID S
18、ystemId, long DigNum, MIL_TEXT_PTR DataFormat, long InitFlag, MIL_ID *DigIdPtr) void MdigControl(MIL_ID DigId, long ControlType, double ControlValue) void MdigGrab(MIL_ID DigId,MIL_ID BufID); Void MdigFocus();,MIL-Lite 讲解-数字化级,Mbuf以Mbuf为前缀的函数构成Buffer模块。 Buffer模块可以分配和控制其他MIL模块函数要操作的数据内存(存储空间)。内存包括图像内
19、存和查找表内存。Buffer模块可以使用子buffer从一个内存区域中分离一部分,也可以将一个buffer中的连续,不连续或某些比特位拷贝到另外一个buffer。这个模块的拷贝函数是经过优化的,来实现在最有效利用系统资源的可那下达到最快的传输速度。这个模块还可以以通用的存储格式(如TIFF和JPEG)存储和读取图像数据。也可以创建,保存和读取AVI格式的文件。还可以对单幅和序列图像进行压缩和解压缩。压缩格式支持有损和无损JPEG,以及JPEG2000。此外,该模块还可以将从带有Bayer滤波器的摄像头采集到的图像转换为彩色图像。,MIL-Lite 讲解-内存级,Mdisp显示分配和控制模块可以
20、显示已经分配的buffer中的图像。并且可以对显示进行一些处理和控制。显示控制提供很多显示效果,如添加注释,LUTs,移动和缩放。 MIL_ID MdispAlloc(MIL_ID SystemId, long DispNum, MIL_TEXT_PTR DispFormat, long InitFlag, MIL_ID *DisplayIdPtr) void MdispZoom(MIL_ID DisplayId, long XFactor, long YFactor) void MdispSelectWindow(MIL_ID DisplayId,MIL_ID ImageBufId,HWND
21、 ClientWindowHandle),MIL-Lite 讲解-显示级,Mgra基本的图形模块提供一套有限的图形接口,可以在图像中添加图形和文本注释。 MIL_ID MgraAlloc(MIL_ID SystemId, MIL_ID *GraphContIdPtr) void MgraText( MIL_ID GraphContId, MIL_ID DestImageBufId, long XStart, long YStart, MIL_TEXT_PTR String),MIL-Lite 讲解-图形级,Mgen原始数据生成模块提供一套有限的数据生成工具,可以用来在数据buffer中自动生成
22、预定义的数据(如在LUT buffer中生成查找表数据)。 void MgenLutRamp(MIL_ID LutId, long StartIndex, double StartValue, long EndIndex, double EndValue),MIL-Lite 讲解-LUTs,MIL-Lite 讲解-LUTs,MIL-Lite 讲解-一些例子,1.分配、释放MIL对象,显示图像代码说明,分配/释放MIL对象 & 显示一幅图像,MIL-Lite 讲解-一些例子,1.分配、释放MIL对象,显示图像代码说明,MIL-Lite 讲解-一些例子,浏览运行 MAppStart 程序,浏览运行
23、 MdispWindowLeveling 程序,1.分配、释放MIL对象,显示图像代码说明,2.图像采集控制方式:同步采集与异步采集,同步采集控制:缺省情况下,采集操作指令结束要等到采集过程结束之后CPU才会执行下一条指令;MdigControl(DigitizerID,M_GRAB_MODE, M_SYNCHRONOUS);MdigGrab(DigitizerID,BufferID);/采集过程结束后才执行下条语句MbufCopy(BufferID,DispBufferID); 异步采集控制: MIL可以让客户选择自己的应用程序不与采集过程结束同步,这种方式可以用在图象实时采集处理的情形下;
24、MdigControl(DigitizerID,M_GRAB_MODE, M_ASYNCHRONOUS);MdigGrab(DigitizerID,BufferID);/不等采集过程结束马上执行下条语句MbufCopy(BufferID,DispBufferID);,MIL-Lite 讲解-一些例子,在异步采集模式下就可以使用双缓存 在系统正在执行采集下一幅要处理的图像时,可以执行对上一幅图像的处理命令 仅有一个buffer可以排入采集队列 如果处理时间小于采集时间(或者一帧时间),那么就可以实现“实时”处理,MIL-Lite 讲解-一些例子,3.图像采集方法:双缓存(double Buffe
25、r),MIL-Lite 讲解-一些例子,4.图像采集方法:缓存区链表回调(MdigProcess),浏览运行 MDigDoubleBuffering 程序,浏览运行 MDigProcess 程序,void MdigProcess(MIL_ID DigId, MIL_ID *DestImageArrayPtr, long ImageCount, long Operation, long OperationFlag, MDIGHOOKFCTPTR HookHandlerPtr, void *UserDataPtr),用于实时采集处理(帧处理时间小于帧采集时间) 在回调函数中加入需要的处理功能 对编
26、程开发人员简化了程序结构,易于控制采集过程,Mim functions(Image processing 基本图像处理模块) Mblob functions( Blob analysis 粒子分析模块) Mmeas functions( Measurement 基本测量模块) Mcal functions( Calibration 几何校正模块) Mpat functions( Pattern matching基于NGC的模式识别模块) Medge functions( Edge Finder 边缘搜索和分析模块) Mmod functions( Geometric Model FinderG
27、MF几何模型搜索模块) Mocr functions(OCR 光学字符识别模块) Mstr functions (String Reader 字符串识别模块) Mcode functions( Code Reader 编码模块),MIL8.0-处理分析功能总汇,MIL8.0-Benchmarks函数性能,MIL_Benchmarks,MIL8.0- Comparitive benchmarks, 512 x 512 image; 3.4GHz Xeon,MIL8.0- Comparitive benchmarks, 512 x 512 image; 3.4GHz Xeon, 512 x 512
28、 image; 3.4GHz Xeon,MIL8.0- Comparitive benchmarks,Point-to-point Statistics Filtering Morphology,Geometric transformations Fast Fourier transform Segmentation (Watershed) Deinterlacing,Collection of classical image processing operators,As of Processing Pack 1,MIL8.0-Image Processing,Mim functions(基
29、本图像处理模块) 基本图像处理模块对图像进行点对点,统计,空间滤波,形态和几何变换操作。可以实现图像增强,畸变校正和分析。 MimAllocResult MimArith MimArithMultiple MimBinarize MimClip MimClose MimConnectMap MimConvert MimConvolve MimCountDifference MimDilate MimDistance MimEdgeDetect MimErode MimFindExtreme MimFlip MimFree MimGetResult MimGetResult1d MimHisto
30、gram MimHistogramEqualize MimInquire MimLabel MimLocateEvent MimLutMap MimMorphic MimOpen MimPolarTransform MimProject MimRank MimResize MimRotate MimShift MimThick MimThin MimTransform MimTranslate MimWarp MimWatershed MimZoneOfInfluence,举个例子: MImConvolve代码,MImConvolve程序,MImPolar代码,MImPolar程序,MIL8.
31、0-Image Processing,Mblob functions(粒子分析模块) 以Mblob为前缀的函数构成粒子分析模块。粒子分析模块可以实现在一幅图像中识别象素相连区域(通常认为是粒子),然后计算这些区域的一些特征。粒子分析模块可以计算很多粒子特征,如粒子面积,周长,给定角度的条带直径,最小的绑定区域和重心坐标。也可以进行一些图像处理,如重构或减少粒子。 MblobAllocFeatureList MblobAllocResult MblobCalculate MblobControl MblobDraw MblobFill MblobFree MblobGetLabel MblobG
32、etNumber MblobGetResult MblobGetResultSingle MblobGetRuns MblobInquire MblobLabel MblobReconstruct MblobSelect MblobSelectFeature MblobSelectFeret MblobSelectMoment,MIL8.0- Blob analysis,举个例子: Mblob.c代码,Mblob.exe程序,Mmeas functions(基本测量模块) 基本测量模块是一套测量图像空间相对位置的函数。该模块可以基于象素灰度在图像中搜索标记位置,并返回空间相对位置,测量标记的宽
33、度和角度等参数。运算精度为亚象素精度。 MmeasAllocContext MmeasAllocMarker MmeasAllocResult MmeasCalculate MmeasControl MmeasDraw MmeasFindMarker MmeasFree MmeasGetResult MmeasGetResultSingle MmeasInquire MmeasRestoreMarker MmeasSaveMarker MmeasSetMarker,MIL8.0-Measurement,举个例子: Mmeas.c代码,Mmeas.exe程序,Mcal functions(几何校
34、正模块) 以Mcal为前缀的函数构成校正模块。可以实现由象素坐标到真实坐标的映射校准。无论光学失真(如枕形和桶形失真),宽高比,旋转和透视失真。从MIL其他模块返回的结果可以使用Calibration控件校准到真实坐标。也可以用来实现图像畸变的校正。 McalAlloc McalAssociate McalControl McalFree McalGrid McalInquire McalList McalRelativeOrigin McalRestore McalSave McalTransformCoordinate McalTransformCoordinateList McalTra
35、nsformImage McalTransformResult,MIL8.0- Calibration,举个例子: Mcalib.c代码,Mcalib.exe程序,Mpat functions(基本模式识别模块) 基本模式识别模块使用传统的灰度相关在目标图像中搜索模板,用来排列,测量和检测。 MpatAllocAutoModel MpatAllocModel MpatAllocResult MpatAllocRotatedModel MpatCopy MpatDraw MpatFindModel MpatFindMultipleModel MpatFindOrientation MpatFre
36、e MpatGetNumber MpatGetResult MpatInquire MpatPreprocModel MpatRead MpatRestore MpatSave MpatSetAcceptance MpatSetAccuracy MpatSetAngle MpatSetCenter MpatSetCertainty MpatSetDontCare MpatSetNumber MpatSetPosition MpatSetSearchParameter MpatSetSpeed MpatWrite,MIL8.0- Pattern matching,举个例子: MPat.c代码,M
37、Pat.exe程序,Medge functions(边缘搜索和分析模块) MIL边缘搜索和分析模块以提取图像中物体轮廓或中空曲线的几何线条。该控件有图像处理,特征计算和注释功能,也有分析功能可以更进一步的对结果进行处理。 边缘搜索模块可以和MIL 几何模板搜索模块联合使用;也就是说,可以将边缘提取的结果作为模板或者在边缘提取的结果中搜索模板。另外,EdgeFinder控件对校正提供完全的支持,尽管物理校正图像,也可以在校正的真实坐标中提取边缘,并且返回真实坐标结果。MedgeAlloc MedgeAllocResult MedgeCalculate MedgeControl MedgeDraw
38、 MedgeFree MedgeGetResult MedgeInquire MedgeMask MedgeRestore MedgeSave MedgeSelect,MIL8.0- Edge Finder,举个例子: Medge.c代码,Medge.exe程序,Mmod functions(几何模型搜索模块) 几何模板搜索模块提供一套在图像中搜索模板的函数。几何模板搜索模块使用几何特征帮助解决机器视觉问题,例如排列,测量和检测。 ModelFinder控件对校正提供完全的支持。 MmodAlloc MmodAllocResult MmodControl MmodDefine MmodDefi
39、neFromFile MmodDraw MmodFind MmodFree MmodGetResult MmodInquire MmodMask MmodPreprocess MmodRestore MmodSave,MIL8.0- Geometric Model Finder,举个例子: Mmodfind.c代码,Mmodfind.exe程序,Mocr functions(光学字符识别模块) MIL光学字符识别模块可以实现在8bits灰度图像中读取或识别光学字符。并且提供识别结果,如识别分数和有效性标志。可以创建,保存,读出,修改和查询字体。该模块可以校正字体,定义搜索条件,学习和验证字符串
40、。字体信息可以保存为mfo文件格式,以便用在其他的MATROX图像软件中。 MocrAllocFont MocrAllocResult MocrCalibrateFont MocrControl MocrCopyFont MocrFree MocrGetResult MocrHookFunction MocrImportFont MocrInquire MocrModifyFont MocrPreprocess MocrReadString MocrRestoreFont MocrSaveFont MocrSetConstraint MocrVerifyString,MIL8.0- OCR M
41、odule,举个例子: Mocrread.c代码,Mocrread.exe程序,MIL8.0- String Reader,MstrAlloc() ,MstrAllocResult(),MstrControl(), MstrDraw() ,MstrEditFont() ,MstrFree(), MstrGetResult(), MstrInquire(), MstrPreprocess(), MstrRead(),MstrRestore(), MstrSave() MstrSetConstraint(),MstrStream(),Mstr functions (字符串识别模块),以OCR为基础
42、,特别针对于有角度的字符或者字符串以及字符变形的字符串的识别,perspective,举个例子: MStr.c代码,MStr.exe程序,Mcode functions(编码模块) 以Mcode为前缀的函数构成编码模块。编码模块可以读写符号(通用的一维和二维编码)。支持的一维编码类型包括Code39, Code128, Codabar, BC412, UPC-A, UPC-E, EAN-13, Interleaved 2 of 5, Planet, and Postnet.二维编码类型包括Data Matrix, Maxicode, and PDF417. 该模块可以简单的处理旋转,缩放和模糊
43、的编码,甚至处理复杂背景。 McodeAlloc McodeControl McodeFree McodeGetResult McodeInquire McodeRead McodeRestore McodeSave McodeWrite,MIL8.0- Code Module,举个例子: Mcode.c代码,Mcode.exe程序,Lossy and lossless JPEG and JPEG2000 compression and decompression Bayer filter using bilinear interpolation or adaptive algorithm with support white balancing gamma correction color artifact correction (adaptive only),MIL8.0- Miscellaneous image processing,谢谢大家!,欢迎光临北京微视凌志公司网站 登记注册参加MIL8.0的免费培训,http:/,