资料可以到http://www.commonvisionblox.de/去下载。里面有详细的介绍。且可以下载到试用版的软件。每个工具都有程序示例,和帮助文档。如有其他问题可再联系! 在后续的帖子中将陆续向大家介绍CVB的工具和应用。 欢迎大家共同讨论,提出意见和建议! 让我们共同进步!
高效的视觉产品开发工具包——CVB
作为现代化的图象处理软件,不仅需要有能力完成各种图象处理任务,而且必须做到:具有足够的灵活性,当周边条件发生变化时,也能够迅速适应,而且成本很低。Common Vision Blox(CVB)以全世界上万次的实例证明,它做到了这一点。
施 特默影像(STEMMER IMAGING)公司的Common Vision Blox软件中的程序库是一个面向机器视觉应用软件开发的基础程序包,能 够支持绝大多数标准相机,和多种软件开发平台(VB,VC++ 6.0,Delphi),共分为五层:硬件层、硬件抽象层、算法层、中间管理层和应用层, 可应用于不同行业。CVB包含条形码(1D/2D)、边缘提取、模式匹配、孔径测量、表面检测、OCR/OCV、几何形状识别等20多种常用工具。现在应 用于多个国家的许多行业,如汽车制造、玻璃生产、医药等。
CVB良好的结构层次可以对输入图像的识别抽象化,使得算法不受摄像的约束,允许用户随时更换图象识别硬件。例如,在把面阵像机切换为行扫描像机时,只需载入相应的驱动程序即可,而不需要对应程序作任何修改。
CVB的用户可以使用两种不同的编程环境:用户既可以采用高级语言编译器,也可以采用图形用户界面iTuition。编译后的程序既可以应用在电脑上,也可以应用在智能像机上。
对于常用的图像处理工具,CVB都做了优化处理,使得运算都在几或几十毫秒以内完成。使用CVB提供控件能够轻松地获取目标图像的各种信息,方便地对其进行各种操作,高准确地得到结果,而不用担心执行效率的问题。这将大大缩短机器视觉软件的开发时间。
在现在这个分秒必争的时代,没有人会愿意去制造大规模的硬件。最理想的情况是:系统够用就好。在图像处理中,事先作出的决定往往蕴含着很大的风险。使用CVB可以将这种风险降到最低,而且能够大大降低开发的成本。
CVB工具介绍(1)
在CVB工具中,各种图像处理算法,经过优化后以函数的形式出现,可以很方便的调用他们完成所需要的图像处理。使复杂的图像处理,可以简单,高效的完成;编程工作量大大减少。
在以后帖子中将依次介绍CVB的各种工具。
CVB工具—Blob分析工具
Blob分析(Blob Analysis)是对图像中相同像素的连通域进行分析,该连通域称为Blob.
Blob分析可为机器视觉应用提供图像中的斑点的数量、位置、形状和方向,还可以提供相关斑点间的拓扑结构。
Blob分析主要适用于以下图像:
·二维目标图像;
·高对比度图像;
·存在/缺席检测;
·数量范围和旋转不变性需求。
另一方面,Blob分析并不适用于以下图像:
·低对比度图像;
·必要的图像特征不能用2个灰度级描述;
·按照模版检测
(1)图像分割(Image Segmentation)
因为Blob分析是一种对闭合目标形状进行分析处理的基本方法。在进行Blob分析以前,必须把图像分割为构成斑点(Blob)和局部背景的像素集合。
B l o b 分析一般从场景的灰度图像着手进行分析。在Blob分析以前,图像中的每一像素必须被指定为目标像素或背景像素。典型的目标像素被赋值为1,背景像素被赋 值为0。有多种技术可将图像分割为目标像素和背景像素。这些技术包括:二元阀值(Binary Thresholding)、空间量化误差 (Spatial~ mtization Error)、软件二元阀值和像素加权 (SoftBinary Thresholding and Pixel Weighting)、相关阀值(Relative Thresholds)、 阀值图像(Threshold Image)。
(2)连通性分析(Connectivity Analysis)
当图像被分割为目标像素和背景像素后,必须进行连通性分析,以便将目标图像聚合为目标像素或斑点的连接体。
连通性分析的三种类型如下:
·全图像连通性分析(Whole Image ConnectivityAnalysis)
在全图像连通性分析中,被分割图像的所有的目标像素均被视为构成单一斑点的像素。即使斑点像素彼此并不相连,为了进行Blob分析,它们仍被视为单一的斑点。所有的Blob统计和测量均通过图像中的目标像素进行计算;
·连接Blob分析(Connected Blob analysis)
连接Blob分析通过连通性标准,将图像中目标像素聚合为离散的斑点连接体。一般情况下,连接性分析通过连接所有邻近的目标像素构成斑点。不邻近的目标像素则不被视为是斑点的一部分;
·标注连通性分析(Labeled Connectivity Analysis)
在 机器视觉应用中, 由于所进行的图像处理过程不同,可能需对某些已被分割的图像进行Blob分析,而这些图像并未被分割为目标像素和背景像素。例如:图像 可能被分为四个不同像素集合,每一集合代表不同的像素值范围。这类分割称为标注连通性分析。当对标注分割的图像进行连通性分析时,将连接所有具有同一标注 的图像。标注连通分析不再有目标和背景的概念。
(3)Blob工具
在CVB开发工具包中,Blob工具是用来从背景中分离出目标,并测量任意形状目标物
的形态参数。这个处理过程,Blob并不是分析单个的像素,而是对图形的行进行操作。
图像的每一行都用游程长度编码(RLE)来表示相邻的目标范围。这种方法与基于象素的算法
相比,处理速度能够加快。为了适应各种不同的需求,Blob提供了很多过滤和分类模式来定义测量参数,而且有较好的操作性能。
以动态连接库或ActiveX控件的形式获取。
支持矩形感性区域。
支持8,10,12,14,16bits图像。
处理速度快!
主要能够计算:
Blob的面积、质心、周长、尺寸、方位、数量、最小边界区等参数的任意形状和复杂的目标物体。
条形码是由一组按一定编码规则排列的条、空符号,用以表示一定的字符、数字及符号组成的信息。条形码系统是由条形码符号设计、制作及扫描阅读组成的自动识 别系统。 条形码种类很多,常见的就有20多种码制。而国际广泛使用的条码种类有EAN、UPC码(商品条码,用于在世界范围内唯一标识一种商品。我们在超市中 最常见的就是这种)、Code39码(可表示数字和字母,在管理领域应用最广)、ITF25码(在物流管理中应用较多)、Codebar码(多用于医疗、 图书领域)、Code93码、Code128码等。 此外,还有二维条码,除了具有一维条码的优点外,它还有信息量大、可靠性高,保密、防伪性强等优点。其主要分为堆积或层排式和棋盘或矩阵式两大类。现在, 已有国家将其应用于国防、公共安全、交通运输、医疗保健、工业、商业、金融、海关及政府管理等多个领域。 CVB中的Barcode工具为识别一维和二维的条形码提供了一系列的函数功能。 支持的二维条形码种类: · Data Matrix and Dotted Data Matrix ( ECC 0, 50, 80 ,100, 140 and ECC 200) · 2D Pharmacode ( ECC 0, 50, 80 ,100, 140 and ECC 200) · PDF 417 · RSS codes (RSS-14, RSS-14 限制型, RSS-14 增强型等) 支持的一维条形码种类: · EAN 13 · EAN 8 · UPC A · UPC E · Code 128 · Code 39 · Code 93 · 2/5 interleaved · 2/5 discrete · SonyCode · Pharmacode Barcode工具的特点: 可用的动态链接库、ocx控件 支持矩形感性区域 支持每个位面8位数据 支持CVB脚本编译界面 特殊的条形码特点: (1)所有的1D和2D条形码可以被: 个别激活或不激活 查找图像的任何区域 任何角度的旋转 任何扭曲变形 镜像 打印为黑底白字或白底黑字 (2)所有的条形码可以被: 读取指定的尺寸 无效校验位数控制 无效区域控制 无效的起始字符或终止字符(如果需要)
CVB工具:Manto 主要的应用领域: 1. 手写体识别 2. 人脸识别 3. 文本的分析(仅用于英文和数字) 4. 指纹识别 5. 其他的模式识别项目(如面部表情的识别) Manto主要应用领域是模式识别,pattern是包含于一个给定图像的子矩形内的。对于分类器来说,这个子矩形必须有相同的大小,而被搜索的场景可以 任意大。例如:如果用32*48 RGB来训练分类器,那么所用的pattern也必须用32*48 RGB的图像。 训练通过准备项目的要求的模式识别分类所要求的样本数据开始,将这些数据提供给Manto。例如:用于识别灰度的手写的阿拉伯数字(图像大小28*28) 时,就必须准备相同大小的灰度图像,且每个图像都要包含一个手写数字,同时定义正确的分类名称(或分类编号)。这种类型的数据叫做样本图像列表 (SIL)。开发包中包含有一个Teach程序和许多的库函数帮助生成样本图像列表集(SIL’s)。 一旦创建了SIL,就要将其传递给Manto使用库函数CreateMCFromImageList来生成分类器(MCF)。因此,SIL中必须要含有新 的分类器所要求的信息,并且必须保证这些信息对于项目要求是准确和充分的。例如在手写体识别项目中,如果SIL中不含有任何关于数字“5”的样本,则 MCF也就不会识别出“5”;在人脸识别项目中,如果SIL包含人脸的特征而没包含非人脸特征,结果将是MCF将在不合适的地方错误地识别为人脸。这将使 得MCF变得毫无意义。如果所要求的分类都有,Manto能够正确运行。一般地说,SIL包含越多的样本,它的识别准确率越高。 生成的MCF可用来从背景图像中查找各类感兴趣的模式。功能函数MCSearch返回最匹配的位置,以及对应的分类名。如果在MCF中仅有一个可接受类, 那么MCF中至少要有2个类型,另外一个是被拒绝类型。 另一方面,如果MCF中有很多类型,且要搜索的区域是由单个点组成,MCSearch用来做搜索时,两步逼进法可以提高识别速度和准确率。用此方法可在人 的面部识别中取得好的效果。开始先使用人脸/非人脸分类器识别,然后将分析的结果交由可识别12个人的分类器进行分类。
Edge Detection 数字图像的边缘检测是图像分割、目标区域的识别、区域形状提取等图像分析领域十分重要的基础,图像理解和分析的第一步往往就是边缘检测,目前它已成为机器 视觉研究领域最活跃的课题之一,在工程应用中占有十分重要的地位。 图像的特征指图像场中可用作标志的属性,而图像的边缘是图像 最基本的特征。在数字图像中,所谓边缘是指其周围像素灰度有阶跃变化或屋顶变化的那些像素的集合。由于物体的边缘是由灰度不连续性所反映的,因此一般边缘 检测方法是考察图像的单个像素在某个领域内灰度的变化,利用边缘邻近一阶或二阶方向导数变化规律来检测边缘,这种方法通常称为边缘检测局部算子法。 如果某一应用场合要求确定边缘位置,则边缘的位置可在亚像素 分辨率上来估计,边缘的方位也可以被估计出来. 德国Stemmer Imaging公司的机器视觉软件开发平台Common Vision Blox(CVB)中的Edge工具很好的实现了边缘检测。 特点: (1)运行在单一位面上(8位或者更高至32位) (2)用户可以制定检测区域的位置和方向。 (3)以动态链接库或者OCX控件形式提供功能的实现 (4)支持图像坐标系统和亚象素精度 (5)注重图像处理的精度和速度 Edge中三种不同的方法来达到检测边缘的目的。 1、 以象素的灰度变化设定阈值检测 速度快捷 2、 以一阶微分(相邻灰度间的变化)检测,可以摆脱固定光源的限制。 3、 以二阶微分检测 高精度 其中第一种方法并不是简单的单象素检测,而是对图像象素行或列的像素灰度值之和进行分析,这样就可把其中的一些不明显的边缘检测出来。以下面三行十列象素 区域为例: 69 75 78 85 98 120 128 135 133 135 66 69 76 81 88 102 118 129 134 136 68 74 81 87 101 119 128 136 134 135 从左到右遍历,区域表示的是从黑到白渐进的一个梯度变化。其中中间一行的变化幅度不是很大。 累加后 203 218 235 253 287 341 374 400 401 406 我们做归一化处理 68 73 78 84 96 114 125 133 133 135 这样再进行二值化处理,从而避免了直接阈值处理带来的弊端。 第二种方法是在第一种算法的基础上再运用相邻两个值间的差值变化做二值化处理以求取边缘点。 第三种方法是利用二阶微分过零点的原理提取边界点。在算法实现过程中,选取合适的阈值以提取边缘。 应用: 检测芯片针脚是否规则整齐、目标定位测量、存在/缺席检测等等 CVB软件下载: www.commonvisionblox.de 公司网址: www.cnimage.com
当模式识别的任务变得复杂,包含许多不同的可能特征时,将一个完全未知的特征向量与许多不同模式的特征向量比较太耗时间。在许多应用中这样做是很困难的, 不可取的。决策树的利用使得特征抽取和分类过程交织在一起。决策树是一个紧凑的结构,它每次利用一个(可能是多个)特征将搜索空间分成各种可能的模式。树 的节点代表特征向量的不同特征。每个分支节点对该特征的每个可能值有一个子节点。决策过程根据未知特征向量的特定特征值选择子节点。一个子节点可能定义另 一个被测试的特征,也可能是一个叶子节点,叶子节点包含有根到叶子整个路径得到得的分类结果信息。 二叉决策树是一个二叉树结构,每个节点都关联着一个决策函数。对未知特征向量应用决策函数来决定下一个被访问的节点是当前节点的左子节点还是右子节点。最 简单的情况是采用数值特征值,节点的决策函数仅仅是将未知的特征向量的一个特定特征值与阈值比较,如果特征值小于阈值,则选择左子节点,否则选择右子节 点。在这种情况下,树的每个分支节点仅需要存储要用的特征和阈值。每个叶子节点存储模式类别的名称。如果决策树的决策过程到达某个叶子节点,则未知特征向 量就被分到该模式类别。 德国Stemmer Imageing公司开发的机器视觉软件工具包Common Vision Blox(CVB)中的Minos工具运用决策树原理实现了模式识别。 Minos工具在模式识别、目标定位、和OCR领域有着广泛的应用。它由分类器、动态库、和控件构成。 可以在多种语言环境中应用此工具,例如VB,Delphi,C++或者VC++。 由于其可靠性和灵活性minos适合在以下几个方面开发应用: (1) 在汽车制造中检测显示面板。 (2) 辨认数字和对比。 (3) 读取密码。 (4) 检测焊缝 (5) 检测工作面板 (6) 读取包装标签 minos 工作方法 模式识别是以对象与众不同的特征来识别的。样本的正的实例和反的实例都用来作为识别的特征。一个标准的分类器应包括正实例和反实例。分类器中应包含辨识样 品所需的所有信息,这些信息包含在.MTS格式文件中。 分类器一旦建立,它就可以应用于任何的图像识别程序中。为了做到这一点,分类器完全嵌入到查找函数中。查找函数分为两类,一类为模式识别,一类OCR。模 式识别的查找函数返回结果为模板在查找对象中的位置,以及相似度。在OCR中,返回结果为模板的名称。 Minos的一个分类器中可以包括多个模板,应用这个分类器可以查找第一个模板匹配位置。也可以查找所有的模板。例如在字符识别中。 Minos的灵活性 在minos中可以把多个分类器和多个查找函数结合起来使用,这样做执行效率会提高很多。例如:部分识别、定位、完全检测、质量检测、OCR或者文本确 认。 通过工具和查找函数的选择可以很方便的控制查找方式。Minos 可为个别程序选择最优化查找方法。 如何训练模板 minos 提供了生成分类器的工具—TeachNT 步骤 (1)打开一幅图像 三种格式的图像可以打开: BMP 256阶的灰度BMP图像 MIO minos目标图像 VIN 用于硬件驱动的文件 可以旋转和缩放图像。 (2)创建感兴区域 (3)训练模板 注意选择模板的大小。 (4)创建分类器 (5)测试分类器 几个相关的测试参数: SEARCH DENSITY (查找密度) 这个参数影响查找的速度。减小这个值可以增大速度但是精确度下降。此值在100—1000之间变化。 Quality Threshold(质量阈值) 如果这个值过高,会找到较少的目标,但是有可能查找不到正确的目标。此参数只有在normalized 被选定后才有效。 Trigger (触发) 当Unnormalized被选定后,TRIGGER与Quality Threshold配合使用。TRIGGER的值小时,Quality Threshold的小值才会起作用。 TRIGGER的值在0-20之间选择。 解决错误的方法: 错误类型 解决办法 识别错误 增加正的实例样本 无法识别 增加训练样本,确保每个样本都符合条件。 结果混乱 检查所有的训练样本,确保无正实例样本忽略 模板训练的优点 可以创建旋转和任意缩放的模板 OCR分类器 可以设置对识别无影响的特征点。 需要注意的地方: 一致性检测工具 此函数的菜单在THE TEACH WIDOWS 界面的 TRAINING SET 目录下。 此工具检测结果对于查找函数返回结果混乱错误的解决起主要作用。 一致性检测对话框中的参数 DEnsity (密度) 此数值在minos 查找实例中表示每一行的像素个数和行数。例如数值设置为500,会有50%的像素会被检测是否一致,增大这个值检测时间就会增加。 threshoid (阈值) 定义最小匹配阈值,注意和能够识别实例的阈值一致。 suspects (可能遗漏点) 检测完成以后,可能遗漏的正实例的特征的数量显示出来。
CIE (Commission Internationale de l'Eclairage)是国际照明协会的简称,制定测量颜色的国际标准,对色值进行测定。CIE制定了L*,a*和b*值来测量色值,这种测量方法称为 CIELAB.L*代表着明度,从明亮(此时L*=100)到黑暗(此时L*=0)之间变化。A*值表示颜色从绿色(-a*)到红色(+a*)之间变化, 而b*值表示颜色从黄色(+b*)到蓝色(-b*)之间变化。使用该系统后,任意一种颜色都可在其图表上找到一个相对应的位置,见图。随着 L*,a*,b*及E*的变化,角L*,角a*,角b*及角E*随着变化,而角 E*=角(角L*2+角a*2+角b*2)。该值代表了不同颜色的色值,但不是直接表示颜色的不同。 CIELAB(全称是CIE 1976 L*, a*, b*)的测量方式正在日益普遍,越来越多的应用于从印前到印刷的整个工作流程中。像Photoshop和QuarkXPress等软件都使用 CIELAB。通过ICC特性文件的色彩管理技术也完全基于CIELAB。CIELAB现在可以用来测量各种不同介质上的色彩,不仅是胶片、印刷和印刷样 张上的色彩,还可以测量印刷样张和LCD和CRT计算机显示器的色彩。CIELAB由一个单独的组织——国际照明委员会(Commission International de l`Eclairage,缩写为CIE)定义的。作为一个CIE系统,CIELAB简化了色彩的交流传递方式,因为沟通双方可以通过数字 术语来讨论颜色,而不用再说“印刷品太蓝了”或者“图像偏品色了”。由于CIE系统是一个国际化组织,全球各地使用的这些数字都代表同一种颜色。 CIELAB是最常见的CIE色彩系统。 Color工具是一种颜色查找和颜色分离工具,它利用了CIELAB颜色空间。 这个工具就是让用户在样本图像中定义颜色模板,学习这些颜色,然后从目标图像中找出这些颜色来。查找颜色的方法就是计算给定感兴区域的颜色平均值或者单个 像素的颜色值(依据查找方式的选择确定)与训练的颜色模板间的色差。颜色模板中最接近给定区域的颜色的就是最佳匹配模板。除了要测量色差外,我们还需检测 在不同照明条件下的偏差。 用Color Teach软件创建一个色彩训练集合(TrainingSet)。色彩TrainingSet是用来描述用户定义的颜色的颜色样本集合。这可以用样本图像 中定义区域来完成。每一区域包含一种颜色或者说人眼看上去是一种颜色。这个区域成为实例(Instance)。一种颜色的一个或多个实例构成多种颜色模 板。 学习分类器:实例的颜色表示由RGB颜色空间转换为CIELAB的颜色空间。从一个模板的所有像素中,计算出颜色中心,最佳颜色和偏差。一个模板像素到颜 色中心的最大偏差用MaxDistance来表示,最小偏差用MinDistance来表示。以此三个参数来计算得到关于模板的质量。过滤器可以用于识别 区域中的每一个像素。用过滤器来扫描原始区域。计算像素颜色模板的质量。然后按照过滤模式来处理图像。 应用此工具的关键是如何创建一个合适的模板,和设定不同颜色之间的最大距离。 注意:不能用纯色作模板,因为此时最小距离与最大距离相等。 应用: (1) 布匹颜色质量检测:在纯色布匹上混有其他颜色的杂质,应用背景颜色做过滤器, 在过滤器的作用下,输出图像的背景颜色不变其他颜色杂质为黑色,图像依次做 灰度处理、二值化处理,这样杂质与背景完全分离。再利用blob工具判断是否符合杂质的条件。 (2) 支票的识别:支票的识别主要在红色印章的识别,利用颜色滤波器,把印章提取出来,或者印章定位,再利用manto识别印章的具体信息。 (3) 航拍图像分析:利用颜色的不同,可以计算绿化率、庄稼的成熟度、或者森林树木的虫害面积。
AEON filter 工具
各种滤波器和算子的集合,其中包括:
· 快速均值平滑滤波(aBinomial3、5、9、17、33、65、129)
· 边缘检测滤波
Filter function Filter size Optimization for direction Optimization for MMX
aGradient* 3 x 1 - +
aSobel2* 2 x 2 - +
aSobel3* 3 x 3 - +
aSobelOpt3* 3 x 3 + +
aSobelOpt4* 4 x 4 + -
aSobelOpt5* 5 x 5 + -
· 降噪滤波
Filter function Description
aAdaptSmooth Uses the filter kernel of aBinomial3, optimized for
· 可自由设置的滤波
Filter function Free parameter Optimization for MMX
aBox1 Degree of smoothing -
aBox2 Degree of smoothing -
aRecSmooth Degree of smoothing -
aSteerSmooth Degree of smoothing +
aGradientDir Edge direction +
aSobel2Dir Edge direction +
aSobel3Dir Edge direction +
aSobelOpt3Dir Edge direction +
aSobelOpt4Dir Edge direction -
aSobelOpt5Dir Edge direction -
· 普通的卷积滤波
Filter function Mask data type Optimization for MMX
aConvS Integer +
aConvF Floating point +
应用:
(1) 电路板的质量检测:电路板图像中引入了椒盐噪声,可用均值掩模或者中值滤波器去除噪声,方便后续处理。
(2) 隐形眼镜质量检测:可用梯度算子突出起缺陷,可以简化自动监测的计算任务。
(3) 用于各种图像增强中。例如CT图像中应用图像增强突出病灶部位。
Morpheus 工具介绍 Morpheus控件从灰度图像或者二值图像中提取基于数学形态学和特定设定的图像变换的特征。它提供了一个强调相关性和忽视不相关特征的工具,利用此工 具可以很容易的创建一个高效的过滤器,可以应用于各种图像情形。还提供了快速高效的程序,例如 基于形态学分水岭的图像分割、标记目标、目标分割。 Morpheus 技术 Conventions(约定、范围) 只处理8位灰度图像。输出图像的维数与输入图像的维数相同。 二值图像的黑色背景像数素值为0,目标像素值为255 模板元素为一般的用于图像形态学变换的模板。模板大小用Bx,By确定。 Image handing(图像处理、操作) 大多数情况下的图像处理,需要morpheus变换的几个方面按一定的次序结合起作用于图像。 Morpheus由输入图像的功能叫ImageIn,和输出图像功能叫ImageOut。在多数情况下需要一定的处理次序才能得到想要的结果,可以在输入 输出功能设置中定义这点。 注意事项:ImageOut 不总是保持与ImageIn的设置一样,在 Morpheus.ImageIn : = Morpheus.ImageOut作用下,输出的图像不包括最后的图像变换。如果稍候需要再输出图像,在下一步变换之前,必须先储存一下。 此工具中包含的方法: 形态学的基本操作:开运算、闭运算、腐蚀运算、膨胀运算,填充运算。 梯度变换。 阈值变换。 附加的操作:单色变换、缩小图像。 对比操作(增加对比度) 极值的提取 图像分割 此工具的应用领域 此工具为辅助工具,与其他工具配合使用。主要用于图像的形态学操作。按照设置改变图像表现形式。使用情况以具体问题确定。 例如: 形态学图像平滑处理:除去或减少人为亮和暗的因素或噪声。 形态学图像梯度: 使图像灰度级的跃变更加剧烈。 Top-hat变换: 对于增强阴影的细节很有用处。 纹理分割: 以纹理为基础找到两个区域的边界。 粒度测定: 判断图像中颗粒的尺寸分部问题。(各种颗粒状物体的质量检测) 具体应用案例: (1) 指纹识别:指纹图像受到了噪声污染,使用闭操作后再开操作可去 掉噪声污染。为下一步的图像识别奠定了基础。 (2) 检测包装食物中的杂质:在一般情况下,图像中食物与杂质的灰度级不同,适用阈值分割可以把杂质与背景分离出来。在用blob工具判定是否为杂质。 (3) 颗粒状物体质量检测:以某一特定尺寸对含有相近尺寸的颗粒的图像区域进行开操作。通过计算输入和输出图像的之间的差异可以对相近尺寸颗粒的相对数量进行测 算。
PrintQual (印刷质量检测) 这个工具应用于两幅图像之间的比较对比。对比结果在三个方面显示出来: small,medium,and large scale structure whithin the image.(整体结构,中等细节,小细节方面) 首先要用参考图像(即训练)做出模板,以.QRF格式文件存在。 训练模板时需要设定两方面的内容: 1,设定阈值这里可以认为是偏离度(可以接受的偏离度),偏离度由三部分组成:整体结构的偏离度、中等细节的偏离度、小细节的偏离度。偏离度范围 0-1,0表示没有偏离目标图像与参考图像完全相同,1表示完全偏离。只有三部分全都符合设定,才能确定目标图像符合要求。 2,设定感兴区域,既要检测图像面积的范围。(setArea) 这里有三个template(模板)可选,帮助更加准确的确定感兴区域。 如果不选模板,说明整幅目标图像作为感兴区域。都需要检测。(就是整幅目标图像对应参考图像的模 板训练部分) 选择一个模板,可以确定感性区域在目标图像中的位置。 选择两个模板,又可以确定感性区域的大小。 选择三个模板,又可以确定感性区域的旋转角度。(如果目标图像有旋转) 检测过程中先查找到模板在目标图像中的位置,然后利用模板的位置确定感性区域的位置大小。 此工具应用于(任何的表面质量检测中) 1,电路板的质量检测。 2,机械零件的检测。
ShapeFinder简单介绍 ShapeFinder是一种基于几何形态学算法的模式识别工具。它能够识别出目标的位置(亚像素级别)和目标的旋转角度、缩放比例及质量测度(即最大相 似度)。他的一个最大的特色就是:在生产线上目标区域局部被覆盖、有噪声、映像等变化都能够准确无误的识别出目标。ShapeFinder可以在一幅图像 中同时识别多个目标。 原理: ShapeFinder是基于灰度图像的像素灰度梯度变化,(基于广义Hough变换原理设计)提取一个或多个特征(边缘、对称性、多相性等),利用这些 特征得到模板,从而通过模板识别目标。 工具特性: 以动态连接库(dll)的形式实现功能特性 ShapeFinder2搜索功能以ActiveX控件提供实现 矩形感兴趣区域(AOI) 支持亚像素 注重处理速度和精度的平衡 以高精确性对目标进行定位、角度旋转、缩放比例测量 下图是一个应用测试程序,很方便的实现了目标的识别:
CVB Contour
Contour 工具 包含 轮廓提取和形状识别算法。处理二进制图像
二进制图像通过 阈值来构建。
1、采用边缘跟踪算法实现轮廓提取
2、创建一个轮廓数据库:
(1)指定一个合适的阈值
(2)指定一个角度旋转范围
(可得到参数 面积 长度 中心(重心)坐标 角度)
代码示例:
Contour.ClassifyOnExecute = True//指定轮廓数据是否分类
Contour.ContourSortMode = CSM_DontSort//指定数据在轮廓列表里的排列顺序
Contour.DistanceType = CDT_Uniform//轮廓向量间距离类型
Contour.OverLapAOI = False//设定真子区域是否为感兴趣区域
Contour.Entire = False // 感兴趣区域是否有效
Contour.MaxDistance = 2//指定分类间的最大距离
Contour.Polarity = True//指定二进制图像的阈值极性false:小于阈值的为目标
Contour.Rotations = 90 //指定额外的旋转样本
Contour.image//指定图像
contour.threshold//指定阈值
// 设定感兴趣区域
Contour.x0 = x0
Contour.y0 = y0
Contour.x1 = x1
Contour.y1 = y1
Contour.x2 = x2
Contour.y2 = y2
//轮廓提取并分类
m_contour.ViewTeach();//调用轮廓提取程序
Contour.Execute//执行