news 2026/4/16 18:42:28

斑点检测与条码识别

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
斑点检测与条码识别

《斑点检测》

斑点适用场景:

对象在尺寸、形状和/或方向上差异很大(训练模型很难或者不可能)

对象有背景中找不到的截然不同的灰度

对象没有重叠或者接触

斑点运行原理:

Blob是先根据用户设定好的灰阶范围对图像进行分割,然后对目标进行查找和分析。

有数种模式可以指定哪些可以将斑点与背景像素分开。

参数介绍:

极性

阀值

将斑点像素从背景像素中分开来的值

分割模式(分割算法)

动态硬阈值(默认):

适用于图像有双峰值的情况,是一种图像分割的方法

固定硬阈值: 128
相对硬阈值:

固定阈值的问题:无论是硬阈值还是软阈值,在光照亮度线性变化时都会出现无法分割的情况,无法适应光线变化

动态硬阈值(默认):

动态硬阈值是根据输入图像的直方图来自动计算合适的阈值

阈值是通过最小化在阈值两边的像素的权重方差来计算的。

有双峰分布的直方图会出现很好的分割。如果不是双峰分布,可能就不能得到很好的分割

固定软阈值:

在目标和背景之间存在一个过渡的区域,过渡区域可以使用柔和度来设置权重,这也就是中间部分是属于目标还是背景,可以根据每个阶段的权重得到计算的结果

总结:硬阈值就是一刀切,把阈值分成两部分

阈值就是分成三部分,除了目标和背景两部分,中间还有一个过渡区,对过去区域根据权重值进行计算,计算出是属于目标还是背景

连通性

一个blob就是由一组连通的像素组成。visionpro中对象使用8邻域,背景使用4邻域

形态学的操作

侵蚀水平面

斑点总结

  1. 固定的阀值要比相对的速度快,因为与百分比对应灰度不必计算
  2. 固定阀值可以检测场景中是否有某特征,而相对阀值始终在场景中找到一个斑点
  1. Blob工具的基本操作方法

选择分割算法、设置分割阈值、设置分割区域、运行查看结果、

设置测量参数、再次运行查看筛选后参数

Blob工具的基本原理

根据图像像素灰度值大小、或者像素个数占比,将图像分割对象和背景两部分,再设置筛选条件,选出合适的目标

  1. blob工具的典型应用场景

适合:2D对象、高对比度(背景与对象对比明显)、无叠加、尺寸和形状不确定

《条码检测》

条码:条码是由一组按一定编码规则排列的条、空符号组成,用以表示一定的字符、数字及符号组成的信息

Code 128 是一种密度很高的字母数字代码系统,可对其进行双向扫描。此代码系统可编码整个 128 ASCII 字符集以及四个非数据字符。采用 Code 128 代码系统的符号使用 11 个黑色或白色模块编码每个字符,并且每个符号包含一个校验和字符。

PLANET 条码是 POSTNET 条码的逆反版本,在 POSTNET 代码系统使用长条码的地方使用短条码,在 POSTNET 代码系统使用短条码的地方使用长条码。美国邮政局使用 PLANET 条码来跟踪邮件。一个 PLANET 条码最多可有 12 位。

4-State 是由澳大利亚邮政局采用的字母数字代码系统。采用 4-State 代码系统的条码使用 4 个不同类的条码来编码每个字符,其中每个条码都有不同的名字和值。4-State 条码可采用以下三个不同结构中的一个来生成:37 个条码(标准)、52 个条码或 67 个条码。Barcode 工具支持 4-State 代码系统的 Australian、JapanPost、UPU 和 USPS 版本。

  • 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
  • 4-State Postal

二维码

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是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工具的字符库允许保存、加载

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 10:34:57

Python BeautifulSoup下载安装教程,解决失败问题

在网络数据采集和解析工作中,BeautifulSoup是一个非常流行的Python库,它能帮助开发者轻松地从HTML或XML文档中提取数据。要使用它,第一步就是正确下载和安装。通常,我们通过Python的包管理工具pip来完成这一过程,但在不…

作者头像 李华
网站建设 2026/4/12 13:01:06

拒绝Meta offer的深层原因:乡土情结与职业平衡

近年来,Meta等科技巨头offer被视为职业巅峰,但不少开发者(包括山东籍人才)却主动拒绝。核心原因在于工作生活平衡(WLB)的优先考量。例如,有开发者从高强度环境(如TikTok)…

作者头像 李华
网站建设 2026/4/10 18:18:43

Return Value Optimization

rust等于C的最佳实践 Rust填了很多C的坑,先不说构建和包管理的优秀,语言本身设计的也确实好,而且是针对C进行的语法优化,这个会用C的一看就明白,这个是后发语言的优势 劣势是出来的太晚了,生态位已经被占…

作者头像 李华
网站建设 2026/4/10 5:12:10

Linux后门检测与清除方法,服务器安全防护

Linux后门是攻击者为了维持对系统的长期、隐蔽访问而植入的恶意程序或配置。它可能隐藏在正常的系统进程、服务或文件中,绕过常规的身份验证和控制机制。了解后门的原理、检测和清除方法,对于维护服务器和数据安全至关重要。 Linux后门有哪些常见的植入方…

作者头像 李华
网站建设 2026/4/15 15:07:34

shell脚本经典书籍推荐:从入门到精通指南

Shell脚本是Linux系统管理和自动化运维的核心工具,掌握它能够显著提升工作效率。选择一本好的教材是学习的关键,经典书籍往往经过时间检验,内容扎实,结构清晰,能帮助读者建立正确的知识体系。 shell脚本入门应该看什么…

作者头像 李华