# ReadIDMax

ReadIDMax 函数用于定位和解码感兴趣区域内的一维或二维符号。该函数可配置为处理各种符号、不同数量的结果，并可处理高度旋转和透视畸变。或者，它也可以用于训练 Data Matrix 和 QR 码模型，并验证质量指标。

### 1D/堆栈符号

ReadIDMax 函数支持解码同一图像中的多个一维/堆栈符号，包括以下类型：

- Code 128
- Code 39
- Interleaved 2 of 5
- UPC/EAN
- Code 93
- Codabar
- PDF 417

注意:一维/堆叠符号不需要任何训练。

#### 一维查找器图案点：

对于条形码，查找器图案点位于符号的四个角单元格中的每一个单元格的中心。点 0 在左上角的单元格中，点 1 是左下角，点 2 是在右下角，点 3 是在右上角。

### 二维符号

ReadIDMax 函数可以定位和解码二维 Data Matrix 和 QR 码符号。该函数可以定位多个二维符号，但与一维符号不同的是，所有符号必须是相同的符号类型。例如，如果图像包含 Data Matrix 和 QR 码符号的混合，并且函数的符号组参数设置为 Data Matrix，函数将忽略 QR 码符号并仅返回 Data Matrix 符号。

通过建立符号网格大小、二维符号类型和符号用于验证其包含的数据准确性的错误检查和纠正 (ECC) 方法，可以训练该函数解码相同类型的二维符号。

注意:Cognex 建议在应用程序中使用的二维符号都具有相同特征时训练该函数。例如，如果二维符号的网格大小或极性可能不同，则不要训练函数并允许它在解码二维符号时考虑所有可能的设置。

训练 ReadIDMax 函数可以提高其性能，尤其是当所有要解码的符号具有相同的质量时，而不训练该函数允许它解码更多种类的符号而无需重新配置。

#### 二维查找器案点：

二维 Data Matrix 符号：对于 Data Matrix 符号，查找器图案点位于四个角单元格的中心。也称为模块，单元格是一个正方形，可以是黑色或白色。例如，一个 10 x 10 的符号由 100 个黑白单元格组成。一个单元格等于符号的一位数据。两条实线的交点形成“L 边界”。在训练过程中，L 的角应朝向左下角。点 0 是符号左上角的单元格，点 1 是左下角（实线相交处），点 2 是右下角，点 3 是右上角单元格。

二维 QR 符号：对于 QR 符号，查找器图案点位于符号的四个角单元格中的每一个的中心。符号上的三个位置检测图案形成一个“L”形。

在训练过程中，L 的角应该朝向左上角。点 0 是符号右上角的单元格，点 1 是左上角（中间位置检测图案形成“L”的角），点 2 是左下角，和点 3 是右下角的单元格。

### 一维/二维图像要求

ReadIDMax 函数在扫描 1D 符号之前需要最少的配置，但输入图像应遵循以下准则：

- 所有符号的长度必须大于 50 像素，而任何模块的最大宽度不能超过 10 像素。

注意:模块是符号中最窄的元素（空格或条形）。

- 对于线性符号（模块宽度不同但高度一致），模块的宽度必须至少为 1.6 像素，高度必须为 50 像素。
- 必须存在一个安静区（符号两端不含标记的区域），该区域至少应具有打印规范中为符类型号指定的最小大小。
- 模块和背景之间的对比度必须至少为 32 个灰度级。
- 像素纵横比不能大于 1.35:1。

二维符号的图像要求较少。一般而言，符号四周必须有一个安静区（或边距），其宽度等于符号内部一个模块的宽度。

### IDMax 和 IDQuick

ReadIDMax 函数为解码算法提供了两种处理模式：

- 选择 IDQuick 可对格式较好且对比度高的符号进行高速解码。
- 为高级图像处理和图像分析技术选择 IDMax，专为难处理的图像而设计。

默认情况下，函数使用 IDMax 模式，但是，使用 IDQuick 进行试验以确定它如何影响应用程序中函数的性能。

#### 结果

只有找到并解码的符号才会生成结果。对于图像中的每个符号，ReadIDMax 函数通过 Vision Data Access functions 生成以下结果：

- 解码的字符串。
- 找到符号的角度方向（以度为单位）。
- 符号中心的位置 (Y/X)。
- 符号的特定符号系统。
- ISO/IEC 所提供的代码和修饰符可根据行业标准唯一地标识符号。

注意:必须启用验证复选框才能生成超出解码字符串的结果。使用 ValidateIDData 函数处理有关已解码符号的其他验证指标。

## ReadIDMax 输入

注意:配置 ReadIDMax 函数的属性表时，要查看更新参数值的影响，请按确定按钮接受更改并关闭属性表。ReadIDMax 函数不支持在属性表打开时显示更新的结果。

参数 | 说明
图像 | 该参数必须在包含 图像 数据结构的电子表格单元格中使用单元格引用；默认情况下，此参数引用 A0，即包含由 函数返回的 Image 数据结构的单元格。此参数还可以引用其他 Image 数据结构，例如视觉工具图像函数返回的那些数据结构。
固定 | 定义相对于固定输入或视觉工具函数的图像坐标系输出的关注区域 (ROI)。根据“固定坐标”来设置的 ROI 可以确保如果“固定坐标” 被旋转或转换，相应的 ROI 也会根据“固定坐标”而旋转或转换。 默认设置为(0,0,0)，图像的最左上方。
X | 在固定坐标中，偏移原点的 x 值。
Y | 在固定坐标中，偏移原点的 y 值。
Theta | 图像坐标系中图像 X 轴的旋转。（顺时针 +/-360 度）
区域 | 也称为关注区域 (ROI)，指定要进行分析的图像区域。双击区域参数以创建可以变换和旋转的交互图形模式。选择此参数并按属性表的作业编辑工具栏上的最大化区域按钮，自动拉伸区域以覆盖整个图像。
X | 在固定坐标中，偏移原点的 x 值。
Y | 在固定坐标中，偏移原点的 y 值。
高度 | 沿区域 x 轴的尺寸。 注意: 读取一维/堆栈 符号时，ReadIDMax 函数支持的最大区域大小为 2048 像素高 x 2048 像素宽。如果将高度或宽度参数设置为大于 2048 像素的值，该函数将返回 #ERR。
宽度 | 沿区域 y 轴的尺寸。 注意:读取一维/堆栈 符号时，ReadIDMax 函数支持的最大尺寸为 2048 像素高 x 2048 像素宽。如果将高度或宽度参数设置为大于 2048 像素的值，该函数将返回 #ERR。
角度 | 在固定坐标上的方向。
符号组 | 指定要读取的符号组。
一维/堆叠（默认值） | 选择一维和堆叠代码读取。
Data Matrix | 选择 Data Matrix 读取。
QR 码 | 选择 QR 码读取。
最大结果 | 指定要定位和解码的最大符号数（1 到 128；默认值 = 1）。 注意:如果该参数指定的值超过 ROI 中的符号个数，函数仍会继续搜索指定个数的符号。如果 ROI 中的符号数量发生变化，可以通过降低超时参数设置来减少函数的执行时间。
高级解码模式 | 指定用于解码 Data Matrix 或一维/堆栈符号组的设置。
IDMax®（默认值） | 只读取一致的符号；不会尝试读取不一致的符号。
IDQuick™ | 用于可能出现扭曲、畸变或出现在不均匀背景中的符号。此模式专为具有“连续”查找器图案而不是分隔点的代码而设计。
启用训练 | 启用后，训练读取的第一个 Data Matrix 或 QR 码符号的模型。训练函数可以提高性能，尤其是当所有要解码的符号都具有相似的特征时。 保留训练信息，直到禁用此复选框。要重新训练符号，请禁用该复选框，然后再次启用该复选框。 提示: 启用训练时，建议区域中只有一个符号。
Off（默认值） | 不训练模型。
On | 训练第一个符号读取的模型。
1D/堆栈符号 | 指定要读取的一维/堆叠符号（可以选择和读取多个符号）。
Code 128 | 选择 Code 128 读取。Code 128 是一种非常高密度的字母数字符号，可以双向扫描。该符号系统可以对整个 128 个 ASCII 字符集加上四个非数据字符进行编码。使用 Code 128 符号体系的符号使用 11 个黑色或白色模块对每个字符进行编码，并且每个符号都包含一个校验和字符。
Code 39 | 选择 Code 39 读取。Code 39（也称为 USS Code 39、BC39 或 Code 3 of 9）是一种广泛使用的符号体系，针对非零售环境开发，可以对字母、数字和特殊字符（如“%”和“/”）进行编码。使用 Code 39 符号体系的符号使用 5 个条形和 4 个间隙对每个字符进行编码，总共 9 个元素，并且 9 个元素中的 3 个始终是宽的。该符号可以包括用于错误检测的校验和字符。
Interleaved 2 of 5 | 选择 Interleaved 2 of 5 读取。在仓库应用程序中很常用，Interleaved 2 of 5（也称为 I2of5、I-2/5 或 ITF）是一种长度可变的纯数字代码。使用 Interleaved 2 of 5 符号体系的符号以 5 个条和空格为单位对 2 个字符进行编码，其中偶数位置的字符编码为条，而奇数位置的字符编码为空格。Interleaved 2 of 5 符号体系只能对偶数长度的数据进行编码。该符号可以包括用于错误检测的校验和字符。
UPC/EAN | 选择 UPC（通用产品代码）和 EAN（欧洲商品编号）读取。UPC 是一种固定长度的纯数字符号体系，可以双向扫描。UPC 符号的大小可以变化以适应各种打印过程，但当符号的高度超过其宽度时，代码效果最佳。欧洲公司使用通常等效的 EAN 系统。 UPC 支持 A 版（普通版）和 E 版（零抑制版）UPC 条形码，以及两个和五个字符的补充编码。EAN 支持 EAN-8 和 EAN-13 条形码，以及两个和五个字符的补充编码。
Code 93 | 选择 Code 93 读取。Code 93 编码的字符与 Code 39 相同，但每个字符使用 9 个条形码元素而不是 15 个。
Codabar | 选择 Codabar 读数（也称为 USD-4 和 Code 2 of 7）。Codabar 是一种用于对数字进行编码的旧式符号系统。
PDF 417 | 选择 PDF 417 读取。PDF 417 是一种堆叠式线性条码符号格式，用于各种应用，主要用于运输、身份证和库存管理。
堆叠符号 | 指定要读取的堆叠符号（可以选择和读取多个符号）。
PDF 417 | 选择 PDF417 读取。PDF417 是一种堆叠式线性条码符号格式，用于各种应用，主要用于运输、身份证和库存管理。
解码设置 |
透视 | 指定具有透视畸变的 Data Matrix 和 QR 码符号的解码，并可选择针对已知的透视畸变训练 Data Matrix 符号。
最小 （默认值） | 解码包含最小透视畸变的 Data Matrix 符号。
中等 | 解码具有透视畸变的 Data Matrix、QR 码和一维/堆叠符号；透视畸变是在模型训练和运行时独立估计的。
严格 | 解码具有已知透视畸变的 Data Matrix 符号。训练透视图，然后在运行时，使用训练的属性在输入图像中的透视即便得到补偿的空间中搜索符号。此选项要求将运行时符号放置在与训练符号相同的平面上。该选项提供了对严重损坏的符号进行解码的能力，这些符号具有已知的透视畸变。 注意:建议安装视觉系统，使入射角（传感器光轴与显示符号的平面的法向量之间的角度）不超过 40 度，分辨率为每的个单元格符号至少有 5 个像素。
QR 模式 | 指定要读取的 QR 码类型。
QR 模型 1
QR 模型 2
QR 模型 1 和 2
微型 QR
微型 QR 和 QR 模型 1
微型 QR 和 QR 模型 2
所有 QR 模式（默认值）
忽略极性 | 指定是否读取相对于训练符号而言极性反转的 Data Matrix 符号。 注意:此参数仅在启用训练参数为 On 时有效。
Off（默认值） | 不允许训练模型出现反极性。
On | 允许训练模型的极性反转。
允许灵活处理 网格大小 | 指定是否相对于训练符号读取不同网格大小的 Data Matrix 和 QR 码符号。 注意:此参数仅在启用训练参数为 On 时有效。
Off（默认值） | 只允许读取与训练符号具有相同网格大小的符号。
On | 允许读取与训练符号不同的网格大小的符号。
校验和 | 指定是否使用错误检测算法验证符号以确保可靠性。校验和仅适用于符号中包含可选校验和算法的符号；每个符号都有自己独特的校验和算法。使用的校验和类型（如果有）取决于所选的代码类型。
OFF（默认值） | 不验证校验和。
ON | 需要校验和才能通过。
注意:无论参数选择如何，Code 128、Code 93 和 UPC/EAN 条码均使用校验和进行验证。如果为任何其他条码启用了校验和，并且未编码校验和，读取将失败。
极性 | 指定符号的颜色。
黑色 | 符号比背景暗。
白色 | 符号比背景浅。
自动（默认值） | 该函数自动选择符号的极性。
全向 | 指定扫描线在区域内的投影方向，以便检测条形码中的所有元素。至少有一条扫描线必须投影到条码的每个元素上才能成功解码。
0 = OFF | 扫描线投影在一个方向以检测平行于区域的条形码。
1 = ON （默认值） | 扫描线以不同的角度投射以检测相对于区域旋转的条码。
排序模式 | 指定返回结果的顺序（如果有）。 注意:为了对符号进行准确排序，最大结果参数必须设置为等于或大于图像中包含的符号数的值。
无（默认值） | 按第一个解码结果排序。任何未解码的结果将跟解码的结果之后。
自顶向下 | 按行升序排序。
左到右 | 按列顺序升序排序
按字母顺序 | 按字母顺序对结果进行排序。
字符串长度 | 按字符串长度（从最短到最长）对结果进行排序。
行 | 通过将符号分组到行中对结果进行排序，然后在每行中从左到右对它们进行排序。按行排序时，如果一个符号的中心与另一个符号的任何部分垂直重叠，则两个符号将被视为同一行的一部分。
列 | 通过将符号分组到列中对结果进行排序，然后在每列中从上到下对它们进行排序。按列排序时，如果一个符号的中心与另一个符号的任何部分水平重叠，则两个符号将被视为同一列的一部分。
允许相同的一维符号 | 指定函数是否应该解码区域内的所有符号，即使这些符号是相同的。如果两个符号具有相同的长度、符号类型和解码字符串，则视为相同符号。
OFF（默认值） | 如果解码多个符号，则只返回一个结果。
ON | 返回所有结果，即使符号相同。
展开 UPC-E | 指定解码后的符号是返回 6 位 UPC-E 字符串还是扩展的 11 位 UPC-A 等效字符串。
OFF | 解码后的符号返回 6 位 UPC-E 字符串。
ON（默认值） | 解码后的符号返回扩展的 11 位 UPC-A 等效字符串。
注意:展开 UPC-E参数仅针对一维/堆叠符号实施。
验证 | 指定是否执行打印质量测试（也称为质量验证指标）。
OFF（默认值） | 不测试质量。
ON | 测试质量并在电子表格中显示结果。
注意: 如果字符串无法解码，则所有自动插入电子表格的结果都将返回#ERR。 除 PDF 417 之外的所有代码类型都支持质量验证指标。
超时 | 指定时间量，以毫秒为单位（0 到 30000），该函数将在暂停执行并返回#ERR 之前搜索有效的 ID 符号。将该值设置为 0 将禁用该设置，并且不会应用超时。 注意:有时，ReadIDMax 函数可能会超出指定的超时参数值不同的百分比。如果发生这种情况，请将超时参数值调低以补偿超额。
显示 | 指定图像上 ReadIDMax 图形叠加的显示模式。 注意:显示参数仅适用于 Data Matrix 和 QR 码符号。
隐藏所有（默认值） | 输入区域边界将被隐藏，除非电子表格中突出显示包含 ReadIDMax 函数的单元格。
仅限结果图形 | 结果图形（Data Matrix 和 QR 码的框）将始终显示。
输入和结果图形 | 输入图形和结果图形将始终显示。

## ReadIDMax 输出

返回 | 包含解码的字母数字字符串的 IDMax 数据结构，如果任何输入参数无效，则为 #ERR。
结果 | 在将函数插入单元格时，会在电子表格中自动插入结果表。结果表中返回的索引字符串数等于在最大结果参数中输入的值。如果无法定位和解码任何符号，则返回 #ERR。 注意:对于 Data Matrix 符号，根据 Data MatrixISO/IEC 16022 规范，基数 256 锁存字符（十进制 231 十六进制 E7）将导致编码数据作为字节处理。使用 GetStringIDMax 函数返回编码数据。有关详细信息，请参见 IDMax。

## ReadIDMax Vision Data Access functions

字符串 | GetString(IDMax, [索引]) | 返回在索引符号中编码的字母数字字符串。

注意:

- 如果解码 Data Matrix 符号，请使用 GetStringIDMax 函数而不是 GetString 以获得有关解码符号的更准确和详细的信息。