斑点寻找工具Blob
斑点概述
- 斑点分析 探测并且分析图像中的二维形状
- Blob是先根据用户设定好的灰阶范围对图像进行分割,然后对目标进行查找和分析。
- 斑点报告多种属性:
- 面积
- 质心
- 周长
- 主轴
- ……..
应用场景
- Blob分析非常适合以下场合的应用:
- 对象在尺寸、形状和/或方向上差异很大(训练模型很难或者不可能)
- 对象有背景中找不到的截然不同的灰度
- 对象没有重叠或者接触
- 应用案例:
- 检查环氧树脂点分配的数量、尺寸和形状
- 检查表示坏薄片模型的墨水点的正确位置和大小
- 检查药片的破碎和大小
- 根据对象的尺寸、形状或位置整理或者分类对象
原理
- Blob是先根据用户设定好的灰阶范围对图像进行分割,然后对目标进行查找和分析。
- 有数种模式可以指定哪些可以将斑点与背景像素分开
运行作业
- 选择安装目录下blobs图片
- 添加Blob工具
- 运行
参数介绍
极性
-
-
- 在光亮背景上的黑色斑点
- 在黑色背景上的光亮斑点
-
白色的是斑点,黑色的是孔
先根据用户设定好的灰阶范围对图像进行分割,然后对目标进行查找和分析。
阀值
将斑点像素从背景像素中分开来的值
分割模式(分割算法)
固定硬阈值
适用于图像有双峰值的情况,是一种图像分割的方法
如果像让左边也变成白色,需要调整阈值108 使用电子模式调整
根据我们的设置灰阶值进行图像的分割,分割成两部分,背景和目标
分析效果
对应测得尺寸
通过测得结果我们发现最大的面积是18万,最小是68.如果想要其中的某一部分就可以在测得尺寸中进行筛选
如:面积是1000-5000的范围的斑点
排除0或者包含1
添加属性
注意:选择的属性越多,工具运行的时间就会越长
测得尺寸相关参数
拓扑 : 辨别斑点、孔以及孔中的斑点
以上是基本操作,
问题:如何进行灰度值的设置 如何进行查找
恢复成默认值
形态学的操作
白色区域在变大
注意:无论是黑底白点还是白底黑点操作的都是白色
分割算法
Blob使用时通常分为分割和分析两步。分割就是第一步,将Blob区域找出来
固定硬阈值:
硬阈值分割:
相对硬阈值:
固定阈值的问题:无论是硬阈值还是软阈值,在光照亮度线性变化时都会出现无法分割的情况
无法适应光线
上图说明:三幅图最明显的变化是由亮到暗,
第一张当灰度值比较暗的时候,目标是10,背景是90,以100为分割,就找不到图像
第二张: 目标是120,背景是160,以100为分割,能够准确分割
第三张:分割不到
中间的图变亮变暗,都导致无法分割
相对阈值就可以避免这种问题
相对,不是按照灰度值进行分割的,而是按照对应像素的灰度值的占比进行分割的
如上图:40% 不管上面的图像变得两或者暗,目标像素的个数站总像素的个数的比例是固定的
以40%来分割就可以进行分割
使用相对硬阈值对亮度变化的图像实现完美分割
当亮度发生变化的时候,曲线往左平移,40%对应的阈值也会变小 灰度值变化 30
当亮度发生变化的时候,曲线往右平移,40%对应的阈值也会变大 灰度值变化 140
动态硬阈值
动态硬阈值是根据输入图像的直方图来自动计算合适的阈值
阈值是通过最小化在阈值两边的像素的权重方差来计算的。有双峰分布的直方图
会出现很好的分割。如果不是双峰分布,可能就不能得到很好的分割
固定软阈值:
固定硬阈值
在目标和背景之间存在一个过渡的区域,过渡区域可以使用柔和度来设置权重,这也就是中间部分是属于目标还是背景,可以根据每个阶段的权重得到计算的结果
总结:硬阈值就是一刀切,根据阈值分成两部分
软阈值就是分成三部分,除了目标和背景两部分,中间还有一个过渡区,对缓冲区域根据权重值进行计算,计算出是属于目标还是背景
连通性
一个blob就是由一组连通的像素组成。visionpro中对象使用8邻域,背景使用4邻域
左图:中间是目标 8邻域 上下左右 边贴边 斜对角 相接的都属于他的域
以8邻域来看是一个blob,以4邻域来看是8个blob
总结:
- 固定的阀值要比相对的速度快,因为与百分比对应灰度不必计算
- 固定阀值可以检测场景中是否有某特征,而相对阀值始终在场景中找到一个斑点
- Blob工具的基本操作方法
选择分割算法、设置分割阈值、设置分割区域、运行查看结果、
设置测量参数、再次运行查看筛选后参数
Blob工具的基本原理
根据图像像素灰度值大小、或者像素个数占比,将图像分割对象和背景两部分,再设置筛选条件,选出合适的目标
- lob工具的典型应用场景
适合:2D对象、高对比度(背景与对象对比明显)、无叠加、尺寸和形状不确定
豆类检测练习
要求:利用3个Blob工具分别统计视野内花生、红豆、黑豆的个数,并把个数count添加到终端。
- 选择三种类型都有的图片
- 添加工具,选择分段模式
每个图中三种豆类都不一样,所以首先排除相对阈值
动态阈值对于双峰值
- 选择硬阈值固定,手动选择
- 通过输出结果筛选
- 电子模式设置
CogHistogramTool
用于对图像中某个区域的像素的灰度值进行测量
条码的基础知识
条码:条码是由一组按一定编码规则排列的条、空符号组成,用以表示一定的字符、数字及符号组成的信息
一维码
- Code 128
Code 128 是一种密度很高的字母数字代码系统,可对其进行双向扫描。此代码系统可编码整个 128 ASCII 字符集以及四个非数据字符。采用 Code 128 代码系统的符号使用 11 个黑色或白色模块编码每个字符,并且每个符号包含一个校验和字符。
- UPC/EAN
UPC 是一种固定长度的纯数字代码系统,可对其进行双向扫描。UPC 符号的大小可变以适应各种打印流程,但代码在符号的高度大于其宽度时效果最佳。欧洲公司使用大体相当的 European Article Numbering (EAN) 系统。
- Code 39
Code 39(也称为 USS Code 39 或 Code three of nine)是一种广泛使用的代码系统,专门针对非零售环境应用,可编码字母、数字以及“%”和“/”等特殊字符。使用 Code 39 代码系统的符号使用 5 个条码和 4 个空格(共计 9 个元素)来编码每个字符,并且 9 个元素中有 3 个始终为宽。此符号可包含用于进行错误检测的校验和字符。
- Code 93
Code 93 所解码的字符与 Code 39 相同,但每个字符使用 9 个条码元素,而非 15 个。
- Codabar
Codabar 是一种用于编码数字的较旧代码系统。
- Pharmacode
Pharmacode 在制药工业中用作包装控制系统。
- PDF417
PDF417 是堆叠的线性条码符号格式,主要用于包括运输、身份证和库存管理在内的多种应用。
- EAN.UCC Composite
启用此系统时,可解码复合代码(具有二维分量的一维代码)。可与 EAN.UCC 一起使用的一维代码包括 GS1 DataBar 和 Code 128。
POSTNET
- 邮政数字编码技术 (POSTNET) 条码由美国邮政局发明,用来编码 ZIP 代码信息。采用 POSTNET 代码系统的条码使用 5 个长短不同的条码组合来编码每个数字字符。POSTNET 条码可包含 5 位数 ZIP 代码、5 位数 ZIP + 4 代码或 11 位数交货地点代码。此符号始终包含校验和字符。
- PLANET
PLANET 条码是 POSTNET 条码的逆反版本,在 POSTNET 代码系统使用长条码的地方使用短条码,在 POSTNET 代码系统使用短条码的地方使用长条码。美国邮政局使用 PLANET 条码来跟踪邮件。一个 PLANET 条码最多可有 12 位。
- 4-State Postal
4-State 是由澳大利亚邮政局采用的字母数字代码系统。采用 4-State 代码系统的条码使用 4 个不同类的条码来编码每个字符,其中每个条码都有不同的名字和值。4-State 条码可采用以下三个不同结构中的一个来生成:37 个条码(标准)、52 个条码或 67 个条码。Barcode 工具支持 4-State 代码系统的 Australian、JapanPost、UPU 和 USPS 版本。
二维码
1.二维码定义:
二维码(2-Dimensional Bar Code),是用某种特定的几何图形按一定规律在平面(二维方向上)分布的黑白相间的图形记录数据符号信息的。它是指在一维条码的基础上扩展出另一维具有可读性的条码,使用黑白矩形图案表示二进制数据,被设备扫描后可获取其中所包含的信息。一维条码的宽度记载着数据,而其长度没有记载数据。二维条码的长度、宽度均记载着数据。二维条码有一维条码没有的“定位点”和“容错机制”。容错机制在即使没有辨识到全部的条码、或是说条码有污损时,也可以正确地还原条码上的信息。
2.类别:
二维条码的种类很多,不同的机构开发出的二维条码具有不同的结构以及编写、读取方法。常见的二维码有:PDF417码、QR码、汉信码、颜色条码、quick mark code、data matrix
3.定位标记
二维条码通常有特定的定位标记(如QR码为三个大的定位点),通过定位标记使读码机正确辨识进行解读,所以二维条码不管是从何种方向读取都可以被辨识。
4.特性
二维条码比一维条码记载数据量更多。而且可以记载更复杂的数据,比如图片链接、网络链接等。
标记类型
标签码
要将代码应用到产品上,最经济实惠、最简单的方式就是使用预先印刷的标签、标牌和贴纸。然而,这并非总是最灵活的方式,因为必须预先确定代码上的数据。
直接元件标记
直接元件标记(DPM)是一种永久性标记生产元件的工艺,无需标或包装。DPM通常由汽车
航空航天和电子产品制造商使用,以确保在整个生命周期可靠地跟踪他们生产的元件。首选DPM代码是Data Matrix码和OR码。
典型的DPM方法包括:
激光
喷墨
打点
化学蚀刻
CogIDTool
能够在同一张图像中读取种类不同的一维码、多个同种类的二维码、以及一些高度旋转和有透视变形的码
识别条形码
添加图片
添加工具
读取到的信息
识别二维码
总结:
CogIDTool工具的功能原理
CogIDTool是VisionPro新增的一个非常重要的解码工具,能够在同一张图像中读取种类不同的一维码、多个同种类的二维码、以及一些高度旋转和有透视变形的码。与Barcode、2DSymbol、PDF417等读码工具相比,CogIDTool具有如下优点:
(1) 同时支持一维码和二维码的读取;
(2) 能够读取同一图像中种类不同的一维码;
(3) 支持最新的解码算法;
1) CogIDTool对一维码的支持
CogIDTool工具能够读取同一图像中的多个种类的1维码,在读取一维码的时候不需要训练。
2) CogIDTool对二维码的支持
CogIDTool工具能够定位和读2D Data Matrix码或QR Code码。CogIDTool工具同样能够读取图像中的多个二维码,但和读取一维码不同的是,这些二维码必须是同一种类。CogIDTool工具读取了图像中的多个QR码。
在使用CogIDTool工具的时候,你可以训练一些参数,例如:二维码的尺寸、二维码的编码种类、二维码的错误纠正方法等,以便能够重复成功读取二维码。如果你的应用中所有的二维码都具有相同的特征,推荐你对码事先进行训练;如果你的应用中,码的参数是变好的,此时你不需要训练参数,以确保CogIDTool在读码的时候能够包含所有的参数值。
3) CogIDTool工具对图像的要求CogIDTool工具读取一维码对图像有如下要求:
(1) 要读取的码的宽度要大于50个像素,码的每一个模块的宽度要少于50个像素;
(2) 对于一些非线性的码(码模块的宽度不同高度相同),每一个模块的宽度要大于1.6个像素,高度要大于50个像素。对邮政码(码模块的宽度相同高度不同),每一个模块的宽度要大于2.5个像素。
(3) 码的最小值静水带必须存在;
(4) 码模块和背景的对比度要大于32;
(5) 像素高度比不大于1.35:1;
二维码读取时对图像的要求比较低,一般来讲,需要在码四周的模块上周围有等宽度的静水带。
4) CogIDTool工具的解码算法
CogIDTool工具提供两种解码算法:
IDQuick:适用于快速读取一些质量较好的具有较高对比度的码。
IDMax:适用于读取一些图像质量不好的码。
CogIDTool工具默认采用IDMax算法。
5) CogIDTool工具的结果输出只有被正确解码的一维或二维码才会有结果输出,对于成功读取到的码,会输出以下结构:
(1) 会以弧度的度的方式输出读取到的码的方向;
(2) 会输出码的中心点的X、Y坐标;
(3) 会输出码的四个角点的X、Y坐标;
(4) 会以字符串的形式输出读取到的码;
(5) 国际标准化组织的代码和修饰符;
CogOCRMaxTool
CogOCRMaxTool是字符读取工具,能够根据已训练的字符样本读取灰度图像中的字符,并返回读取结果。
在使用COgOCRMaxtool工具读取字符的时候,需要设置字符区域,每个字符的最大最小宽度等参数。在字符读取之前需要首先进行字符分割和字符训练,下面分别进行介绍:
1) 字符分割:
字符分割的过程就是将字符像素从背景像素中分离出来,然后将这些分离后的字符像素分割成独立的符号,CogOCRMaxTool工具支持一套参数,这些参数指示如何把字符和背景以及字符和字符分割开,这些参数的设置需要考虑多种因素,如字符之间的距离、字符的种类、图像的质量等,通常情况下,默认的分割参数不能将字符充分分割。需要不断的尝试着修改分割参数,直到字符能够充分分割。
2) 字符分类
字符分类的过程就是为每一个分割的字符训练一个最佳匹配字符。新添加CogOCRMaxTool工具是没有训练字符的。可以从文件中调用已经存在的字符文件或临时添加字符集,添加字符集是一个不断重复的过程,需要添加所有需要读取的字符,只有在训练字符集中存在的字符才能够被成功读取。对于未训练的字符则不能成功读取。
应用场景
读取生产日期,生产中产品的序列号……
添加图像
参数介绍
点击提取线
添加预期文本
添加和调整
字体
加载和保存
把训练出来的字体库保存
可以点击添加字体库
区段
调整字体宽度
总结:
1. 多行字符进行OCR识别,需要添加多个OCR工具
2. 字符出现在视野中位置不确定时,需要选择合适的特征进行定位
3. OCR工具识别区域框有方向,保证训练方向和识别方向一致
4. OCR工具的字符库允许保存、加载