vm算法
❶ 海康vm算法平台是否收费
收费的。
海康VM算法平台V4、0版本推出时,针对二次开发接口,进行了面向对象封装,提供方案,流程,Group和模块的4级封装概念,并提供了各自的参数配置控件,参数类,结果类,以便二次开发客户能更简单的使用视觉能力做业务开发。
❷ 如何将自己的算法嵌入到海康的VM程序中
有开发实力的视觉集成商和设备商,可以借助VM现有的流程框架,将自己的独特算法和设备配置功能封装成VM模块,放置于流程中,以便轻松调用VM中的图像和各模块的处理结果,并触发自身模块的运行。
尽管提供了VM模块生成工具,可以方便地创建一个带有输入输出和配置界面的空模块,但许多人仍不清楚模块的原理,即使获得了自动生成的模块工程,也不知道如何将其改造成具有独特业务功能的模块。
第一部分将讲解模块的组成结构原理,以便后续的模块开发更加顺利,便于排查错误。
一、VM模块的基本概念
一个VM模块由输入、输出、配置、显示和模块本身构成。输入和输出由最基本的5种数据类型组成:int、float、string、image和PointSet,其中前四种最为常用。由基本类型组成更复杂的组合类型,如IMAGE和ROIBOX,分别代表图像和ROI框。在AAAMo.xml中。
配置是调节模块运行参数的面板,例如圆查找模块的半径。配置由多个基本类型构成,如Integer和Enumeration等,这些基本类型都对应一个可见的配置控件。通过XML定义配置界面的内容。在AAAMoAlgorithmTab.xml中。显示是定义模块运行后需要在渲染窗口上显示的内容,由一些基本的图像和图形组成,如image、circle、point、rect等。在AAAMoDisplay.xml中。
模块本身是可被调用执行的逻辑块,以动态库的形式存在于磁盘上。由底层运行部分和界面运行部分组成。底层运行部分名为AAAMo.dll,界面部分为MoCs.dll,如果界面部分还有较复杂的建模过程,无法仅靠配置XML定义,则还会有一个配置控件,名为AAAMoControl.dll。
二、模块运行机制
了解模块的基本概念后,仍需了解这几部分是如何协同工作的。接下来以模块运行为例,将整个过程串联起来。(以平移旋转功能为例)模块运行时,首先从输入中获取各Input的值,然后获取配置参数,根据编写好的逻辑将输入与参数一起参与运算,将计算结果赋值到输出上。显示配置的图形与输出关联,显示出具体的图形。
三、实例:圆查找
圆查找功能定义:在图像的某个位置查找圆形并输出,查找圆的参数可调。
输入:从圆查找的功能定义可知,圆查找的输入包括图像和查找框。打开IMVSCircleFindMo.xml,找到Input,可见如下定义:
从XML中可见,输入图像为IMAGE组合类型,由image、width、height、format 4个基本类型组成,类型分别为image、int、int、int。
输入ROI有框(InputROI类型为ROIBOX)和圆弧(InputROIAnnulus类型为ROIANNULUS)两种。
输入还包括位置修正信息Position Correction Info类型为FIXTURE。
配置:圆查找需要设置查找圆的半径大小范围、设置明暗变化阈值等。查看IMVSCircleFindMoAlgorithmTab.xml,可见
圆查找的参与与XML中的定义一一对应。例如EdgeThresh对应边缘阈值,默认值为0xf,即界面上显示的15。如果自定义模块开发过程中需要某个配置控件,但不知道具体的控件类型及用法,可以去查看其他已有模块,看看是否有相同的控件。可以把该模块的配置XML打开,找到需要的控件,了解其使用逻辑,复制过来,并修改参数的名称。
配置中还有一个重要的工作,是将需要输入数据与配置控件关联起来,让人可以在界面上配置输入数据从哪来。圆查找的输入数据是图像和ROI,几乎所有的模块都需要这两个数据,因此把这两个数据的配置控件做成了基本界面库。在配置XML中如下:
运算:在圆查找模块中,需要获取图像,找到ROI区域,并尝试找出符合参数的半径和边缘阈值的圆。具体的获取输入数据、参数数据在第二部分文档中讲解。并将搜索到的圆赋值到输出数据中。
输出:从圆查找定义可知,至少会输出一个圆形。查看IMVSCircleFindMo.xml的Output,如下:
有MoStatus模块运行状态,类型为int。
有OutputCircle输出圆形,类型为CIRCLE的复合类型,由Radius半径、CenterX圆心点X、CenterY圆心点Y等组成,类型都为float。
还有一些其他输出。
显示:圆查找至少要显示搜索到的圆形,还需要显示底图。查看IMVSCircleFindMoDisplay.xml可见:
在Display里定义了要显示的图像,名称为InputImage,类型为image。图像数据、长、宽、格式分别对应(Mapping)到输入输出中的InImage、InImageHeight、InImageWidth、InImagePixelFormat。
定义了要显示的圆形,名称为Circle Result,类型为circle。图形的中心点X、Y、内径、外径分别对应(Mapping)到输入输出中的CenterX、CenterY、Radius、Radius。