条码基础知识
条码是由一组按一定编码规则排列的条、空符号组成,用以表示一定的字符、数字及符号组成的信息
一维码
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码为三个大的定位点),通过定位标记使读码机正确辨识进行解读,所以二维条码不管是从何种方向读取都可以被辨识。
二维码展示形式
标签码
要将代码应用到产品上,最经济实惠、最简单的方式就是使用预先印刷的标签、标牌和贴纸。然而,这并非总是最灵活的方式,因为必须预先确定代码上的数据。
直接元件标记
直接元件标记(DPM)是一种永久性标记生产元件的工艺,无需标或包装。DPM通常由汽车
航空航天和电子产品制造商使用,以确保在整个生命周期可靠地跟踪他们生产的元件。首选DPM代码是Data Matrix码和OR码。
典型的DPM方法包括:
激光
喷墨
打点
化学蚀刻
http://超小型条码/二维码扫码器 - SR-700 系列 | 基恩士中国官方网站
条码案例
1.选择要识别的二维码格式 此案例为 代码 128
2.设置查找数量
3.设置可找二维码的长度范围
QR码
扩展
CogOCRMaxTool工具的功能原理
CogOCRMaxTool是字符读取工具,能够根据已训练的字符样本读取灰度图像中的字符,并返回读取结果。在使用COgOCRMaxtool工具读取字符的时候,需要设置字符区域,每个字符的最大最小宽度等参数。在字符读取之前需要首先进行字符分割和字符训练。
1.设置搜索区域
2.提取字符
3.分割的区域出现问题
1.调整字符宽度 解决误识别问题
1.提取字符
2.输入对应符号
3.添加到字符库中
4.字符库
1.字符最大宽度
2.宽度类型
1.接受阈值 识别字符分数
1.宽度类型问题
案例 倾斜字符
1.默认区段参数
2.倾斜字符区段参数
案例:带噪点的字符
案例:宽度可变字符
OCR参数总结:
调整
提取线(extract line)允许OCRMax工具检查感兴趣的区域,并尝试使用当前的分割参数集将区域分割为正确的字符符号。
运行时提取 (extract on run)允许该工具每次运行时都对感兴趣区域执行细分。
预期文字 (expected text)输入包含当前图像感兴趣区域的字符串。
自动分段 (auto-Segment)使用“预期文本”中的字符作为参数对感兴趣的区域执行分割。
添加和调整 (add& tune)将当前在感兴趣区域中标识的字符添加到此OCRMax工具的字体中,然后根据当前图像的特征设置分割参数。康耐视建议使用5到15张图像来自动调整分割参数。
tune data显示当前用于分段参数自动调整的所有调整记录。有关更多信息,请参见使用调音数据一节
Segment区段
字符最小宽度 (CharacterMinWidth)字符必须具有的字符标记矩形的最小宽度(以像素为单位)才能被报告
字符最大宽度 (CharacterMaxWidth)字符标记矩形的最大允许宽度,以像素为单位。大于此值的字符将被拆分为不太宽的部分
极性 (Polarity)输入图像中字符的极性。如果极性未知,则将自动确定极性
字符最小高度 (CharacterMinHeight)要报告的字符必须具有的字符标记矩形的最小高度(以像素为单位)
字符最大高度 (CharacterMaxHeight)字符标记矩形的最大允许高度,以像素为单位。该值有两种使用方式。首先,在找到整条线时使用此值,例如拒绝垂直相邻的噪声和/或垂直相邻字符的其他行。第二,高度超过此值的单个字符将被修剪以满足该高度。
SpaceInsertMode
插入模式,指定如何处理将空格字符插入其他字符之间的间隙
SpaceMinWidth
空格字符的最小宽度,以像素为单位
SpaceMaxWidth
空格字符的最大宽度,以像素为单位。
CharacterMinAspect 字符的最小允许宽高比,其中宽高比定义为整个字符行的高度除以字符标记矩形的宽度。纵横比小于此值(即宽度太大)的字符将被拆分为不太宽的部分。
规范化模式 (Normalizationmode) 用于规范输入图像的方法。选择正确的值可以减少工具的执行时间。
Local 当背景可以显示显著变化但字符串的打印质量保持不变时使用。
LocalAdvanced 当背景和字符串中的像素在感兴趣区域内显示显著变化时,请使用默认值。在所有选项中,这个选项对 OCRMax 工具的执行速度影响最大。
Global 适用于背景噪点少且整个感兴趣区域没有照明变化的高质量图像
None 不执行图像规范化,并依赖于特定的灰度值作为字符像素和背景像素之间的阈值。此选项对执行速度的影响最小。
CharacterMinNumPels 要报告的字符必须具有的前景(即文本)像素的最小数量
分析模式 (AnalysisMode)
是执行最小分析还是标准分析。最小分析根据此标签中设置的参数执行简单的细分,而标准分析则对整个行进行分析,包括字符间距,以确定最佳分割。最小字符间隙 (MinIntercharacterGap) 两个字符之间可能出现的最小间距(以像素为单位)。如果两个片段之间的间隔小于此片段,则除非组合字符太宽(由CharacterMaxWidth和/或CharacterMinAspect指定),否则必须将它们视为同一字符的一部分。间隔是从一个字符的标记矩形的右边缘到下一个字符的标记矩形的左边缘测量的。
MaxIntracharacterGap 单个字符内可能出现的最大间隙尺寸(以像素为单位),即使是损坏的字符也是如此。字符间的间隙可能会出现,例如,在点矩阵打印中连续的点列之间,或在两个因刮擦而损坏的实心字符之间。大于此值的任何间隙将始终被解释为两个单独字符之间的间隔,而小于或等于此值的间隙可以被视为两个单独字符之间的间隔或单个字符内的间隔。
跨度度量 (pitchMetric) 用于指定字符间距的度量。注意,间距是相邻字符上(大约)相应点之间的距离,而不是从一个字符的结尾到下一个字符的开头的距离(称为“字符间距”)。还应注意,指定音高度量并不一定意味着所测得的音高值将保持恒定。
跨度类型 (pitchtype) 单个跨度值预计如何变化;跨值按照跨指标指定的方式进行测量。
宽度类型 (widthtype) 字体中字符的宽度应如何变化。请注意,字符宽度是标记矩形(例如,墨水的边界框)的宽度,而不是单元矩形(通常包括标记矩形周围的填充)的宽度。
Fixed固定 Proportional 比例的 Variable 变量
最小间距 (MinPitch)可能出现在两个字符之间的最小间距(以像素为单位),其中间距是由间距度量指定的。如果两个片段之间的间距小于此片段,则除非组合字符太宽(如CharacterMaxWidth和/或CharacterMinAspect所指定),否则必须将它们视为同一字符的一部分。
角度半范围 (AngleHalfRange) 角度搜索范围的一半(弧度)。
偏斜半范围 (SkewHalfRange) 倾斜搜索范围的一半(弧度)。
太空得分模式 (SpaceScoreMode) 分数模式,指定如何处理空格字符的分数。
前景阈值片段 (ForeqroundThresholdFrac)
范围为[0,1]的修饰符,用于计算归一化图像中的二值化阈值,该值在前景和背景之间进行二值化UseStrokeWidthFilter 是否从标准化图像中删除所有看起来与图像其余部分具有相同笔画宽度的东西。例如,如果字符似乎通过细小的噪声条纹相互连接,这将很有用。但是,如果笔划宽度不一致,则使用笔划宽度过滤器可能会错误地删除实字符。
忽略边界片段 (IngoreBorderFragments)是否完全忽略接触ROI边界的任何片段。对于非文本功能(例如可能包含在ROI中的标签边缘),忽略此类片段可能很有用。
CharacterMinNumPels 要报告的字符必须具有的前景(即文本)像素的最小数量。CharacterFragmentMinXOverlap两个字符片段必须在x方向上相互重叠的最小分数,以便将两个片段视为同一字符的一部分。CharacterFragmentContrastThreshold 相对于二值化阈值,片段必须具有的最小对比度(在归一化图像灰度级中),以便考虑可能包含在字符中。
CharacterFragmentMaxDistanceToMainLine 获取/设置范围为[0,1]的修饰符,这是一个片段在字符主行之外可以具有的最大距离,以估计行高的百分比表示。
CharacterFragmentMergeMode 获取/设置用于确定在Group阶段是否将两个片段合并为一个字符的模式。
RunParams运行参数
接受阈值 (AcceptThreshold) 和CogPMAlitnTool一致。
置信度阈值 (ConfidenceThreshold) 置信度阈值有关何时升高或降低置信度阈值的描述,请参阅OCRMax工具主题。
字符串中的任何字符与训练字体中的任何字符之间的匹配分数必须超过接受阈值,然后才能为字符提供读取结果。此外,最高匹配分数必须超过训练字体中所有其他字符的匹配分数,达到您指定的置信度阈值。如果最高匹配分数与任何其他匹配分数之间的差异不超过此阈值,OCRMax 将返回字符串中此字符的混淆结果。混淆结果表示此字符与字体中的另一个字符太相似,无法为您的视觉应用程序准确分类。
默认情况下,置信度阈值设置为 0,因此 OCRMax 无法生成混淆结果。如果您担心 OCRMax 工具对字符进行错误分类,请提高置信度阈值,例如,当字符键在采集的图像中显示为“8”时,验证字符键是否为“3”
ClassifierAlgorithmConstants用于分类的算法。基本选项可用于现有应用程序。 BasicFast选项是默认选项,适用于大多数应用程序。
BasicFast 是 Basic 算法的更新、更简化的版本。建议对大多数应用程序使用基本快速。BasicFast 通常比 Basic 快得多,具有类似的健壮性。保留较旧的基本算法以与较旧的应用程序兼容。请注意,BasicFast 不支持验证(验证是可以使用 Basic 算法启用的附加混淆检查)。
BasicWithValidation 具有分类验证步骤的基本分类算法。分类验证步骤执行一些额外的计算,以“仔细检查”得分最高的候选项是否确实是正确的字符。如果此验证失败,字符位置结果将标记为“混淆”,置信度分数设置为 0,“混淆说明”将设置为“分类验证失败”。验证步骤的结果不会影响结果分数。当必须防止工具意外读取错误字符(类似于增加混淆阈值)时,启用验证。权衡是,启用验证步骤可能会导致某些本应读取确定的字符串返回混乱状态。如果启用验证导致看似可读的字符出现字符混淆,则向字体添加一些额外的字符实例(该字符)可能会有所帮助。
未知字符标记 (UnknownCharacterMarker) 一个字符串,将用于标识此工具生成的结果字符串中的未知字符代码。
超时 (timeout)获取或设置此工具使用的超时值(以毫秒为单位)。
UseXScaleFilter是否使用x比例滤镜。X尺度过滤器范围的低值,用于跳过其校正的训练图像的X大小(即宽度)超出此处指定范围的候选类别/实例。 x比例尺过滤范围的高值,用于跳过其校正的训练图像的y尺寸(即宽度)超出此处指定范围的候选类别/实例。
UseYScaleFilter是否使用y比例过滤器。y缩放过滤器范围的低值,用于跳过其校正的训练图像的y尺寸(即高度)超出此处指定范围的候选类/实例。 y缩放过滤器范围的高值,用于跳过其校正的训练图像的y尺寸(即高度)超出此处指定范围的候选类/实例
CogOCVTool工具的功能原理
CogOCVTool 是 Cognex VisionPro 提供的一个用于光学字符验证(OCV)的工具。该工具利用图像中的几何特征来检测和验证字符的质量和正确性,适用于各种需要字符验证的应用场景。
案例参考 示例
颜色工具集合
颜色提取工具流程
CogColorExtractorTool 从彩色图像中抽取像素来创建灰度图像
1. 颜色分组选项
2.分组中添加对应颜色模块
3.给颜色模块设定名称
4.添加颜色模块
5. 选择提取颜色区域
1.可以对某种色彩反复添加 颜色模块
1.运行
2.选择 模式 查看匹配色彩图
增组别 用来管理不同颜色模块
颜色匹配工具参数总结
柔和度:如果要生成灰度输出图像,该图像的灰度值指示输入图像中的像素与定义的颜色的匹配程 “柔和度”的值越高,输出图像中出现的单个灰度级就越多。
遮罩边线: 允许工具提取比颜色定义的色调更暗(低)或更亮(高)的像素值。
突出显示线限制:允许工具包含从定义颜色到纯白色范围的像素。当输入图像中的对象显示来自一个或多个光源的镜面反射高光时,这可能很有用最小像素计数:
如果最小像素个数少。那么产生的颜色区域越多。
如果最小像素越大,那么对图像要求越苛刻,对应的颜色区域会越小
如:最小像素计数设置为33,同一个区域有33个相同的像素点才会匹配,
如果设置为3,同一个区域有3个像素点就会匹配