1、Cognex 调研1. 概述Cognex 是一家美国公司,是机器视觉系统、软件以及自动化生产中使用的传感器、装配机器人的制造商。Cognex 实在 20 世纪 80 年代初期探讨机器视觉的商业应用的首批公司之一。VisionPro 是 Cognex 公司开发的一款视觉系统工具包,具有以下特性:1) 快速开发强大的应用系统Cognex VisionPro 系统组合了世界上一流的机器视觉技术,具有快速而强大的应用系统开发能力。包括图像预处理、图像拼接、图像标定、集合校正、定位、OCV/ID、图像几何测量、结果分析等功能。在 VisionPro 的 QuickStart 环境中,利用拖放工具,无需任
2、何代码编程,就可以完成检查文件的设置,检测结果输出,以加速应用原型的开发。这一成果在应用开发的整个周期内都可应用。通过使用基于 Com/ActiveX 的 VisionPro 机器视觉工具和 Visual Basic,Visual C+等图形化编程环境,开发应用系统。与 MVS-8100 系列图像采集卡相配合,VisionPro 使得制造商、系统集成商、工程师能够快速开发和配置出强大的机器视觉应用系统。2) 快速建立原型和易于集成VisionPro 的两层软件架构便于建立原型和集成。交互层利用拖放工具盒ActiveX 控件以加速应用系统的开发,在程序层,将原型应用开发成用户解放方案。基于 CO
3、M/ActiveX 技术使 VisionPro 应用系统易于集成第三方应用程序(如图形函数) ,而且为整个机器(例如 IO,计算机控制,工厂通信)提供了基于 Com 空间应用的易于集成性。3) 先进的机器视觉软件Cognex 的视觉工具库提供了用于测量、检测、制造和识别的视觉软件程序组。即使实在最具挑战性的视觉应用中,这些工具也被证实具有高可靠性。4) 硬件灵活性VisionPro 的用户可以在较大范围内选择 MVS-8100 系列图像采集卡,以开发视觉应用。该软件可以直接和国际大多数相机相连,包括模拟、1394、千兆网相机等。经 VisionPro 软件测试和证明,这些图像采集卡为主机提供了
4、用于图像处理和显示的高速图像转移,以获得快速的视觉应用操作。多相机输入、高速度以及对高分辨效率的支持提高了 VisionPro 系统的采集灵活性。5) 技术优势 快速开发强大的基于 PC 的视觉应用 简化视觉系统与其他主控制程序的融合处理 兼容多种 Cognex MVS-8100 系列图像采集卡 通过 QuickStart 拖放工具加速原型应用 配合视觉工具库,以获得高性能2. VisionPro 软件架构VisionPro 提供了易于应用的原型,发展和应用。在交互层,通过系列缩放工具,VisionPro QuickStart 原型环境加速了强大机器视觉系统的开发速度。用户可以很快定义工具,测
5、试工具行为以及有效的运行参数之间的连接。通过QuickStart 或 Vision Basic 可访问 ActiveX 控件。因此,在程序层,原型应用可以通过 Visual Basic 或 Visual C+增强,以开发出个性化的解决方案。这一性能将使应用系统的开发时间大大缩短。VisionPro 的结构使用户可以从 QuickStart ,ActiveX 或 Com 对象中的任何一层开始他们的应用系统开发。3. 功能分析1) 标定标定动作是为了实现图像显示空间和物理空间之间的坐标映射,主要是数学变换,难点主要在于变换矩阵的选取与实现。Cognex 和 Mil 都有比较完善的标定功能,对于两个
6、软件的具体变换矩阵不得而知,下面的方法主要参考封装设备视觉系统软件包的设计这篇论文。相机标定问题就是建立图像阵列中的像素位置和场景点位置的对应关系,涉及到确定两组参数:用于刚体变换(外部定位)的非固有参数(外参数)和相机自身(内部定位)所拥有的固有参数(内参数) 。刚体变换可以用下式表示,其中 R 为旋转矩阵,从而对应有 12 个外参数。对于旋转变换,其实用 3 个参数就足以确定变化,比如欧拉角描述:绕 X 周旋转角 ,绕新的 y 轴旋转角 ,绕新的 z 轴旋转角 ,从而对应有 6 个外参数。另外,对于旋转变换也较为直观的思远数的表示方式,四元数是一个四元矢量,对于定位求解问题,四元数表示能够
7、给出很好的数值解。=(1234)=+可见,外参数有多种不同的表示方式,或者说不同的模型,从而也对应这不同的求解算法,同样,相机本身(内参数)也有多种模型,一般分为线性模型和非线性模型,线性模型一般是指经典的小孔模型,如下是所示,共有 5 个参数,分别是图像在 u 轴和 v 轴上的尺寸因子 fu 和 fv,主点坐标 u0 和 v0,畸变因子 s。非线性模型可以表示成线性模型加上非线性畸变值,如下式所示,其中,为非线性畸变值,共有 8 个参数,径向畸变因子 k1,k2,k3,k4,薄棱镜畸变因子p1,p2 和离心畸变因子 s1,s2。非线性模型也有很多种,具体模型与考虑的因素以及模型假设有关。对应
8、于内参数的建模及求解已经有了许多相关的研究,本文并不关心具体的模型或算法,而只从软件设计的角度对相机标定进行研究。2) 预处理a) 点对点处理数学运算:加、减、乘、整数除、浮点除、反色、取绝对值、拷贝图像逻辑运算:与、或、非、与非、或非、异或手动或自动阈值(二值化,裁剪)设置缓冲区为一个常数比较(最大值,最小值)平移查找表(LUT )映射帧平均处理b) 统计学运算生成灰度直方图查找最小/最大像素值定位常像素值计算两幅图像异同实现从二维(2D)到一维(1D)的映射图像的直方图均衡化处理c) 滤波处理去噪和图像平滑:低通高斯滤波、中值滤波、高通滤波边缘增强:锐化,增强对比度边缘检测:水平和垂直检测
9、、Sobel 算子检测Cognex 自带滤波器多但是不支持自定义滤波。在一般应用中, Cognex 定义的滤波器已经可以满足要求了。自定义滤波器虽然应用范围更广,但是设置麻烦。在边缘检测方面,Cognex 仅提供了 Sobel 算法。Sobel 为一阶算法,速度快,但是效果差一些,因此 Cognex 对要求较高的处理显得无能为力。d) 形态学运算腐蚀、膨胀、开、闭、二值匹配等3) Blob 分析(Blob 分析是对图像中相同像素的连通区域进行分析,该连通区域成为 blob。Blob 分析可为机器视觉应用提供图像中的斑点的数量、位置、形状和方向,还可以提供相关斑点间的拓扑结构。 )Cognex
10、斑点分析非常适用于以下场合的应用: 对象在尺寸、形状或方向上差异很大(训练模型很难或者不可能) 对象有背景中找不到的截然不同的灰度 对象没有重叠或者接触。Cognex 的 Blob 分析过程分析的结果包括:斑点的索引、ID、几何属性和非集合属性。在实际应用中,Blob 分析是非常重要的一环,大多数的视觉软件均将其视为重点,但是有关 Cognex 的 Blob 分析精度等级,未查阅到相关资料。4) 样本匹配Cognex 的样本匹配工具为 PMAlign。其不同于其他的模式定位工具之处在于没有基于像素进行定位,在图像旋转或尺寸拉伸的情况下,像素单元格定位精度低且运行效率也低。取而代之的是,PMAl
11、ign 工具是基于特征的。一个PMAlign 模式就是一个集合特征集,集合中的每个特征都是不同像素区域边界上的点。特征和特征的空间关系构成模式,特征在模式匹配方面表现的变化快且精度高。Cognex 基于特征的样本匹配示意图PMAlign 以任意的合成的变换方法在运动时图像中训练模式。可以将PMAlign 受限于某个自由度,这个自由度只有特定的范围,除了这些,PMAlign 还可以在最短的时间内找到应用程序中各种满足条件的模式。对每一个在运行时图像中找到的模型实例,都会返回实例的位置以及该模式实例发生变换时对应的自由度值。自由度包括晶体比例大小,允许的偏差角度范围等等。如下图所示:模型实例变换示
12、意图当你使用 PMAlign 工具训练模式为图片训练模式时,你可以通过掩模的方法,通过屏蔽掉部分区域,去除包含在训练样本里面的一些特征或小细节,值得注意的是,掩模并不支持形状训练模式,因此在设置形状时,你自己本身就可以去掉一些你不想要的特征或者形状,下图表示了通过掩模的方法去掉了中间几个 Cognex 的英文字母,这个不是我们想要找的特征。PMAlign 图片训练模式掩模方法示意图PMAlign 工具在图像中寻找特征准确度主要是通过粒度(或者说间隔尺寸)来控制的。粒度可以这样理解,它是用来表示感兴趣的区域半径大小,单位是像素。如果粒度小的话,在进行特征检测时,就可以检测得更加细致一点,反之亦然
13、。在实际应用中,一个特征可以表现为小的粒度或者大的粒度,在检测大特征的时候,PMAlign 工具使用较大的粒度,而检测小特征时, PMAlign 工具则使用较小的。PMAlign 工具使用一个范围的粒度在图像中训练样本,他会自动决定出一个最优的粒度设置,如下图所示,粒度越小,寻找到的样本特征就越多。粒度选择对样本特征的影响示意图PMAlign 里面也有很多小设置,比如是否忽略极性等,忽略极性会使寻找样本定位时慢 10%左右。因此忽略极性也就是允许一个反色当时形状相同的实例也被计算进去,所以寻找的范围大了,时间也相应加长。PMAlign 工具忽略极性设置示意图PMAlign 计算完模式所做的变化
14、后,还会对目标模式和运行时图像中的模式匹配程度进行打分,得分的范围在 0.0 到 1.0 之间。在 PMAlign 工具中,对样本的训练以及识别可以大致分为 3 种:PatMax,PatQuick 和 PatFlex。PatMax 和 PatQuick 适用于一般的图像识别,他们的原理如上述。区别在于 PatMax 比 PatQuick 的精度更高,但是需要执行的时间更长,还有 PatMax 算法能够提供额外的分数等其他信息,一般来说,PatMax 通过大特征来迅速找到在图片中的跟样本匹配的实例,和通过小特征对实例进行精确定位。对于一些有明显形变的图像,有两种办法处理:一个是设置一个不为 0
15、的弹性值,使得该形变在 PatMax 算法或其他算法容忍程度以内,适用于较小形变的图像,第二种是采用 PatFlex 算法。如果选择了 PatFlex 算法,PMAlign 工具能对识别过程中,图像的非线性形变有较好的支持,并且会返回相关的形状信息,如果你的图像有发生以下形变:图像畸变示意图如果你知道要识别的图像会是上面的那种畸变,那么使用 PatFlex 算法并实现设置好畸变类型会对图像识别的速度和准确度有很大提高。在样本匹配功能上 Cognex 做的比较好,提供的三个函数各有侧重,基本上能够适应各种需求,这方面应用的实例也非常多。在不少图像处理论坛上讨论其他软件的这个功能都是以 PMAli
16、gn 为标准的,可见这个是可以作为标准来用的。5) 图形工具Cognex 图形工具分为静态的(一旦显示就不会更新)和交互的(可以选择并操纵图形属性在代码中修改并自动更新) 。形状包括圆形(cogcircle 类) 、坐标轴(cogcoordinateaxes 类) 、椭圆(cogelipse 类) 、线段(coglinesegment 类) 、点标记(cogpointmarker 类) 、矩形(cogrectangle 类) 、矩形放射(cogrectangleaffine 类) 、多边形( cogpolygn 类) 、复合形状(cogcompositeshape 类) 、文本图形( cogg
17、raphiclable 类) 。复合形状是一种包括其他几种形状的形状。构成复合形状的所有形状被称为子形状。其两大用途一是创建包含数个总是一种操纵的形状的交互图形,二是作为视觉工具的结果图形。Cognex 的图形种类更多更全面,而且从资料上看 Mil 没有交互式的图形,这样的话很不方便,在很多方面的应用都受到了限制。在图形工具这个方面Cognex 更加强大,实用。6) 计算Cognex 的计算主要是在 blob 模块里面的,面积、周长、质心、坐标轴周围惯量的第三个力矩、几何延伸、主要限制框、斑点中位数、坐标轴周围惯量的第二个力矩、坐标延伸、任意的限制框。7) 其他a) 光学字符识别(OCR,Op
18、tical Character Recognition) OCVMax 工具可以使用多数的字体文件: 西方语言 TrueType ASCII Unicode 字符字体 使用图像字体萃取器创建自己的字体文件 VisionPro 帮助中列出了更多的扩展功能b) 颜色工具 FireWire 白色平衡 颜色匹配 复合颜色匹配 颜色分割Cognex 不能直接进行条码识别,不过可以间接处理,实际应用中这个很多。此外, Cognex 的颜色处理能力还是很强大的,工业应用也比较多。字符识别、条码识别和颜色处理在机器视觉中占有很高的比例,有很多的工业应用的实例,从完备的图像处理软件角度来讲的话,这一块是必须的,
19、而且相当重要。4. 总结总体来说,Cognex 更偏重于直接的实际应用,在这方面做的也更好,它的教学也都是以实例的方式开展的。从上面的对比中我们就可以看出,Cognex 并不是追求图像处理效果的最佳,而是追求在满足要求的条件下处理的最快、占用的资源更省,以使生产的利润最大化。在图像预处理等方面 Cognex 还是有一些不足的,很多功能过于简单。Cognex 的相关的视觉软件系统也相当完善,构成了比较完整的体系,在实际工业生产中的应用很多。上面主要讨论了 Cognex 软件视觉应用层的功能对比,但是限于资料较少,很多功能所能达到的精度等级还没有查到。对于系统与图像处理层的功能(如输入、输出、图片格式转换、图像压缩等)与数据处理及硬件联系较紧,这里没有提及,如有需要可以补充。