23.05.0.0

HALCON 23.05.0.0 Progress发行说明

本文件提供 2023 年 5 月发布的MVTec HALCON 23.05.0.0 Progress的发行说明。

目录

HALCON 23.05.0.0 Progress的主要新功能

深度计数

从 HALCON 23.05 开始,客户可使用深度计数功能快速、稳健地计数大量物体并检测其位置。 与现有的机器视觉方法相比,基于深度学习的技术具有显著优势:由于只需对极少数物体进行标注和训练--这两个步骤都可以在 HALCON 中轻松完成,因此该功能的部署速度非常快。即使是高反射和不规则材料的物体,该技术也能提供可靠的结果。使用深度计数,可以对玻璃瓶、树干或食物等大量物体进行计数。

深度OCR训练

深度 OCR 能以非常强大的方式读取文本,甚至不考虑文本的方向和字体。为此,该技术首先会检测图像中的相关文本,然后进行读取。有了 HALCON 23.05,现在还可以通过使用特定应用图像重新训练预训练网络,对文本检测进行微调。 这提供了更加可靠的结果,并开辟了新的应用可能性。例如:检测任意印刷类型或未知字符类型的文本,以及在嘈杂、对比度低的环境中提高可读性。

三维抓取点检测训练

三维抓取点检测可用于稳健地检测任何物体上适合用吸力抓取的表面。在 HALCON 23.05 中,现在可以使用特定应用的图像数据重新训练预训练模型。因此,可抓取表面的识别能力更强。必要的标记可通过 MVTec 深度学习工具轻松高效地完成。

简易扩展接口

在 HALCON 扩展程序包的帮助下,可以集成外部编程语言。客户的优势:因此,HALCON 可涵盖纯图像处理以外的功能。在 HALCON 23.05 中,通过简易扩展接口,外部代码的集成变得更加容易。这样,用户只需几步就能在 HDevelop 和 HDevEngine 中使用自己用 .NET 代码编写的函数,同时受益于 .NET 框架提供的广泛功能。甚至可以使用 HALCON/.NET 语言接口中已知的数据类型和 HALCON 算子。这提高了 HALCON 的灵活性和应用可能性。

兼容性

许可证

HALCON 23.05.0.0 Progress需要有效的 HALCON Progress许可证,不能与 HALCON 13 及更早版本或 HALCON Steady许可证一起运行。

HALCON 库

与 HALCON 22.11 Progress 相比,引入了许多扩展功能。T此外,HALCON 23.05.0.0 Progress 库与 HALCON 22.11 Progress 或更早版本的二进制文件不兼容。不过,HALCON 23.05.0.0 Progress 与 HALCON 22.11 Progress 的源代码基本兼容,但下列更改除外:

  • 在函数 "dev_display_dl_data" 中,可以使用参数 "heatmap_color_scheme" 更改 "gripping_map" 的显示颜色。这种行为已经改变。现在,参数 "heatmap_color_scheme" 不再影响抓取映射显示的颜色。相反,可以使用参数 "gripping_point_map_color" 和 "gripping_point_background_color" 来更改抓取映射的颜色。

    更多信息。
  • 如果"饱和度变化"增强方法已被用作 Deep-OCR 识别模型训练脚本中 augment_dl_samples 的输入,那么该脚本将在更新的 HALCON 版本中失效。为了使脚本正常工作,必须从输入字典中删除 "saturation_variation" 键。

    更多信息。
  • 当数据中缺少 calib_obj_pose 时,ItemType='calib_obj_pose'的 get_calib_data有时不会引发错误,或返回错误 8458("无效校准对象索引")。get_calib_data 现在会返回错误 8459("校准对象姿态索引无效")。

    更多信息。
  • 预训练的深度 OCR 检测模型得到了改进和改变。对于某些图像,apply_deep_ocr 现在可能会在 "detection" 和 "auto" 模式下产生不同的结果。现有应用程序应根据新模型测试参数设置。在新版 HALCON 中,旧版深度学习模型向后兼容读取。

    更多信息。
  • 使用 Hpar f 联合体成员的应用程序可以安全地修改为使用二进制兼容的 d 成员。任何使用 FLOAT_PAR 宏都可以安全地替换为相同的 DOUBLE_PAR 宏。

    更多信息。
  • armv7a-linux、x64-linux 平台和 armv8-linux 平台上 HALCON 库的最低系统要求已提高到 gcc 7 和 glibc 2.27。

    更多信息。
  • 使用 "pretrained_dl_classifier_resnet18.hdl" 模型进行的训练结果可能与之前的版本略有不同。

    更多信息。

HALCON 应用

请重新编译所有使用 HALCON 22.11 Progress 开发的 C、C++ 或 .NET 程序。与 HALCON 22.11 Progress 或更早版本的不兼容性主要涉及二进制文件,仅在语言接口方面有少量更改。如果您在重新编译程序时遇到问题,请查看以下更改的详细说明。

图像采集接口

一般来说,HALCON 23.05.0.0 Progress、HALCON 22.11 Progress 和 HALCON 20.11 Steady 图像采集接口与库兼容。

HALCON 23.05.0.0 Progress 仅包括可用图像采集接口的一个子集。更多信息,请参阅图像采集接口的参考文件。 您可以从我们的网络服务器下载其他接口。

数字 I/O 接口

一般来说,HALCON 23.05.0.0 Progress、HALCON 22.11 Progress 和 HALCON 20.11 Steady 数字 I/O 接口与库兼容。

HALCON 23.05.0.0 Progress 仅包括可用数字输入/输出接口的一个子集。更多信息,请参阅I/O接口参考文件。您可以从我们的网络服务器下载其他接口。

扩展程序包

请重新生成使用 HALCON 22.11 Progress 开发的扩展程序包。

更多兼容性信息

  • 正如之前发布的版本所宣布的,MVTec 在发布 HALCON 23.05 后停止了对 macOS 系统的支持。 我们建议今后的应用程序改用 Windows 或 Linux 平台。

  • 使用函数 dev_display_dl_data 对三维抓取点数据进行三维可视化,并将 "point_cloud" 值作为关键字显示参数的程序将不再运行。必须调用函数 dev_display_dl_data,而不是 dev_display_dl_3d_data。此外,参数值已更名为 "gripping_point_cloud" 。

    更多信息。
  • 使用 HDevelop 22.11 或更早版本导出的使用字典的代码,其源代码与更高版本的语言接口不兼容,必须重新导出。

    更多信息。
  • 自 HALCON 23.05 发布以来,MVTec 已停止对 Windows 8.1 和 Windows Server 2012 R2 操作系统的支持。这意味着从 23.05 版开始,HALCON 将不再在该平台和操作系统上进行测试。支持渠道将不再处理该平台的具体问题。

支持的操作系统

Windows

HALCON 23.05.0.0 Progress已针对x64-win64平台版本进行编译,适用于Windows 10(x64版本)、11、Windows Server 2016、2019、2022,在Intel 64或AMD 64上使用SSE2(AVX2调度)处理器。

Linux

HALCON 23.05.0.0 Progress 已针对以下 Linux 平台版本进行了编译:

  • 适用于Intel 64或AMD 64上带有SSE2(AVX2调度)处理器的linux x86_64、GLIBC_2.27、GLIBCXX_3.4.24的x64 linux平台版本
  • armv7a-linux 平台版本,用于支持 NEON 的 Armv7-A 上的 Linux armv7a、支持 hidraw 的内核、hard-float ABI、GLIBC_2.27、GLIBCXX_3.4.24
  • aarch64-linux 平台版本,用于支持 AArch64 的 Armv8-A 上的 Linux aarch64、支持 hidraw 的内核、GLIBC_2.27、GLIBCXX_3.4.24

有关不同应用二进制接口的详细系统要求,请参阅安装指南。

HALCON 23.05.0.0 Progress更改的详细说明

HALCON 23.05.0.0 Progress 与 HALCON 22.11 相比有哪些更改。

HDevelop

新功能

助手
  • 在 HDevelop 中,图像采集助手参数选项卡上某些参数类型的可用性得到了改进。IP 和 MAC 地址以及十六进制数字现在都显示为人类可读的字符串。
GUI
  • 改进了与多个 HDevelop 的协同工作。在 HDevelop.ini 中不再每次关闭时都存储部件的坐标和尺寸属性,现在只有在关闭 HDevelop 后才会存储。

  • 改进了 HDevelop 的程序窗口组合框。函数分组已进一步更改,现在可以搜索函数。

  • 如果您同意与我们共享匿名数据,您可能会收到有关我们最新或即将推出的产品的更多信息。

  • CTRL + W 会关闭整个程序窗口,无论是否有打开的标签页。现在,当前标签页会被关闭,如果没有其他标签页打开,CTRL + W 就会关闭程序窗口。

  • 改进了窗口菜单的可用性。 "Open Canvas" 选项现在有了专用图标。

  • 改进了 HDevelop 的可用性。现在,按下 Ctrl 键即可隐藏停靠下拉指示器。这样,就可以移动窗口并防止其停靠。

  • 现在可以使用"参数选择" > "用户接口" > "程序窗口" 下提供的选项,在程序编辑器中显示空白。
IDE
  • HDevelop 的可用性已通过一种机制得到改善,该机制会通知用户已修改的程序、函数和函数库文件,并提供重新加载已修改文件的服务。该机制的实施有两个方面:

    • 其中一种实施方法基于系统操作。它对性能没有影响,被视为首选实施方案。
    • 在极少数情况下,这种实现方式是不够的(例如,由于操作系统无法同时打开足够多的文件句柄),我们提供了一种基于定时器的实现方式。这种实现方式会影响 HDevelop 应用程序的性能和响应速度,因此只是一种备用解决方案。

    使用哪种实现方式将被持久保存,并可在 HDevelop 的常规选项中进行选择。也可以完全停用文件跟踪功能。

语言
  • 字典查找表达式现在支持多键(0-N)。更多信息,请参阅HDevelop 用户指南。

    请注意,这一更改会影响兼容性。 更多信息。
杂项
  • 改进了标签页中HDevelop关闭按钮的设计。现在,HDevelop中的关闭按钮在所有组件中看起来都是一样的。

错误修复

助手
  • 在测量助手中手动输入或编辑模糊值不起作用。该问题已得到解决。

  • 在 Windows 下使用与测量助手相关的线条轮廓对话框不起作用。这个问题已经解决。

代码导出
  • 在某些情况下,块语句条件中的字典表达式可能导致不正确的代码输出。该问题已得到修复。

GUI
  • 图形窗口在最大化和还原时似乎被推到画布的左上角。这一问题已得到修复。

  • 快速导航窗口中标签页的最后一列标题在调整窗口大小时显示空白。该问题已得到修复。

  • 在深色主题中,函数检查窗口 x 轴和 y 轴的标签不可见。该问题已得到修复。

  • 删除功能后,功能检查窗口标题未正确更新。该问题已得到修复。

  • 在显示小图像时,图像在调整大小时无法正确贴合窗口。要么显示过大,部分内容被剪切,要么显示过小,导致出现黑色边框。该问题已得到修复。

  • 主题更改后,自动完成的工具提示颜色不正确。该问题已得到修复。

  • 如果缩放系数达到最大值,则通过"-"按钮缩放不起作用。该问题已得到修复。

  • 对象模型 3D 检查窗口中无法正确显示"中心" 和"边框"的多个值。该问题已得到修复。

  • 程序编辑器中的自动完成速度慢。这一问题已得到解决。

  • 按下左右箭头键后,自动完成功能被隐藏。该问题已得到修复。

  • 二维图形窗口中无法立即显示二维图形中更新的图标变量。这一问题已得到解决。现在,一旦用户点击"句柄检查"小工具中的图标变量,图形窗口就会更新。

  • 当从Windows连接到Linux时,在某些罕见的情况下,HDevelop可能会丢失焦点。这可能导致编辑 HDevelop 程序时触发不需要的快捷方式或丢失字符。该问题已得到修复。

  • 在使用默认参数时,dev_open_tool 算子没有设置正确的工具几何形状。该问题已得到修复。

  • 在极少数情况下,显示"附加到进程"对话框需要很长时间。这个问题已经解决。

  • 如果将显示比例设置为 100% 以外,在极少数情况下,"对象模型 3D 检查窗口"中的线条会被切断。该问题已得到修复。 

帮助
  • 扩展程序包算子的文档未显示在 HDevelop 帮助窗口中。该问题已得到修复。

IDE
  • 在某些情况下,HDevelops 程序窗口中的查找&替换操作会导致错误的高亮显示。该问题已得到修复。

函数
  • 在函数界面对话框中重复使用现有参数名称会导致重命名无效。该问题已得到修复。

  • 使用字典或向量访问表达式创建函数时,无法始终为代码确定正确的输入参数。该问题已得到修复。

  • 函数 read_dl_dataset_ocr_recognition 没有使用深度学习工具 (DLT) 的深度 OCR 项目中可定义的附加文本类。该问题已得到修复。

杂项
  • 当自动完成工具提示在两个显示器之间显示时,程序窗口会崩溃,一个显示器的缩放比例为 125%,另一个显示器的缩放比例为 150%。该问题已得到修复。

  • 自动完成有时会在不适用的地方建议使用帧捕捉器接口。这一问题已得到修复。

  • 在选中 "显示低级错误" 参数选择(Preference参数选择 > General Options一般选项 > Experienced User高级用户)后,打开"读取图像"对话框会出现错误。此外,从 Linux shell 以图像作为参数打开 HDevelop 时也会出现低级错误。这些问题已得到修复。

  • 有可能编写的代码会打开一个非常大的窗口。这可能会导致崩溃。这个问题已得到修复。现在,窗口的最大宽度和高度限制为 2^15。

  • 在某些罕见的情况下,当打开用于选择特定图标对象的检查组件时,HDevelop 会崩溃,而显示的变量会被正在运行的程序修改。该问题已得到修复。

  • 在使用 HDevelop.ini 文件时,如果基于 JSON 的条目 "MainWndDockingLayout_Canvas" 在布局部分中有许多子对象,则 HDevelop 要花很长时间才能加载该布局。该问题已得到修复。

  • 在极少数情况下,程序窗口可能会进入不一致状态,导致行为和着色不稳定,以及 HDEV/HDVP/HDPL 文件中当前编辑的函数体损坏。虽然这一问题的根本原因尚未确定,但已采取了若干缓解措施,以降低此类事件发生的概率和影响。 特别是,一个涉及使用打开的句柄检查组件输入的潜在问题已得到修复。 此外,现在还能对编辑器的内部不一致状态进行早期防御检测,从而在潜在损坏之前保存当前编辑器内容的纯文本备份副本。

HDevelop 示例程序

错误修复
  • 示例 check_calib_image_quality.hdev 有时会错误显示校准板的坐标系。该问题已得到修复。

HDevEngine

功能性

  •  "导出程序" 不再导出 MacOS/Apple (C/C++) 专用代码。

错误修复

  • 加载或写入使用动态字典键的函数会导致很小的一次性内存泄漏。该问题已得到修复。

HALCON库

提速

  • 对于某些图像类型,在支持 SSSE3/AVX2/NEON 的系统上,在插值模式为 "常数" 和缩放因子为 0.5 时,算子 gen_gauss_pyramid, zoom_image_factorzoom_image_size 的速度更快。特别是,对于大小为 512x512 的图像,预计会有以下加速:

    算子 图像类型 指令集 提速
    gen_gauss_pyramid byte SSSE3 up to 70%
        AVX2 up to 30%
      uint2 SSSE3 up to 70%
        AVX2 up to 55%
    zoom_image_size
    zoom_image_factor
    byte SSSE3 up to 95%
        AVX2 up to 40%
      uint2 SSSE3 up to 80%
        AVX2 up to 80%
      int2 NEON up to150%
  • 通过使用 AVX512 指令,mirror_image 在模式 "col" 下的运行速度加快了。在支持 AVX512BW 指令集的英特尔计算机上,现在速度最多可提高 21%,具体取决于图像和当前区域的大小。在支持 AVX512BW/AVX512VBMI 指令集的 AMD 机器上,现在速度最多可提高 45%/91% ,具体取决于手头图像和区域的大小。

  • 算子 read_dl_model, deserialize_dl_modelread_object_model_3ddeserialize_object_model_3d 的运行时间得到了改进。在忽略 I/O 时间的情况下,这些算子的速度提高了 320%。其他几个读取和反序列化算子的速度也得到了提高,但幅度较小。

新功能

3D
条形码
  • 通过将新参数 "upce1_enable" 设置为 "true" ,find_bar_code 现在可支持数字系统 1 的 UPC-E 条形码。

  • set_bar_code_paramset_bar_code_param_specific 扩展了参数 "max_code_length" 。 使用该参数可指定条形码仍被视为有效的解码字符串的最大允许长度。通过 get_bar_code_paramget_bar_code_param_specific,可以查询所述参数的当前值。

  • get_bar_code_resultget_data_code_2d_results 扩展了新参数 "gs1_lint_result" 和 "gs1_lint_passed" ,用于检查 GS1 代码内容是否符合 GS1 规范。

  • 条形码阅读器在误读带附加功能的 EAN/UPC 代码( "EAN-13 Add-On 2" 、 "EAN-13 Add-On 5" 、 "EAN-8 Add-On 2" 、 "EAN-8 Add-On 5" 、 "UPC-A Add-On 2" 、 "UPC-A Add-On 5" 、 "UPC-E Add-On 2" 、 "UPC-E Add-On 5" )时的鲁棒性有所提高。现在,与主符号距离太远的边缘不会被视为可能的附加边缘,从而减少了误读的数量,例如当两个代码非常接近时。

校准
  • calibrate_hand_eye 进行了扩展,采用了一种新的稳健方法,对包括机器人姿势在内的测量观测数据的不确定性进行建模。 set_calib_data 使用参数 "optimization_method" 设置新方法 "stochastic" 。 get_calib_data 扩展了新参数,以获得更多输出。新的 HDevelop 示例程序 hdevelop/Calibration/Hand-Eye/calibrate_hand_eye_stationary_cam_stochastic.hdev,展示了如何将这种方法集成到手眼校准工作流程中。它使用了 3d_machine_vision/hand_eye/stationary_cam_stochastic.hdev 中的新图像。

分类
  • classify_class_knn 现在使用自动算子并行化,对输入点进行内部并行化。

数据码
  • 通过使用新的 get_data_code_2d_results 参数 "quality_isoiec29158_float_grades" ,直接部件标记代码的打印质量检测现在支持根据 ISO/IEC 29158 对以下代码类型进行连续分级:
    Data Matrix ECC 200、 QR Code、 Micro QR Code、 Aztec Code

    此外,参数

    • quality_isoiec_tr_29158
    • quality_isoiec_tr_29158_labels
    • quality_isoiec_tr_29158_values
    • quality_isoiec_tr_29158_rows
    • quality_isoiec_tr_29158_cols
    • quality_isoiec_tr_29158_intermediate
    • quality_isoiec_tr_29158_intermediate_labels
    • quality_isoiec_tr_29158_intermediate_values
    • quality_isoiec_tr_29158_reflectance_margin_module_grades

    更名为

    • quality_isoiec29158
    • quality_isoiec29158_labels
    • quality_isoiec29158_values
    • quality_isoiec29158_rows
    • quality_isoiec29158_cols
    • quality_isoiec29158_intermediate
    • quality_isoiec29158_intermediate_labels
    • quality_isoiec29158_intermediate_values
    • quality_isoiec29158_reflectance_margin_module_grades

    保持向后兼容性。

    调试函数 grade_data_code_2ddev_display_data_code_2d_print_quality_results 现在分别使用 "isoiec29158" 作为参数 "Standard" 和 "QualityStandard" 的输入。这也保留了向后兼容性。

  • 现在可以通过向新的 set_system 参数 "gs1_syntax_dictionary" 提供语法字典(可从 https://ref.gs1.org/tools/gs1-barcode-syntax-resource/syntax-dictionary/获取)来设置支持的 GS1 应用标识符列表。

  • 现在可以设置用于二维数据码打印质量分级的最小模块尺寸。为此,新增了 set_data_code_2d_param 参数 quality_isoiec15415_smallest_module_size。
    新示例 hdevelop/Identification/Data-Code/print_quality_smallest_module_size.hdev 演示了如何使用这一功能。

  • 点码阅读器的解码性能得到了改进。最大的优点是对带有某种视觉干扰的点码进行了解码,例如用铝箔覆盖的点码。 我们的内部基准表明,解码性能相对提高了 10%。
    此外,通用参数 "max_allowed_error_correction" 的默认值已从 1.0 降至 0.9,即读码器将最多使用其 90% 的纠错能力。

深度学习
  • read_dl_model 现在支持读取包含 Transpose 操作的 ONNX 模型。

  • read_dl_model 现在支持读取包含重塑操作的 ONNX 模型。

  • HALCON 扩展了深度计数功能。通过这种方法,无需设置复杂的参数,就能轻松、稳健地对图像中的对外进行计数。
    深度计数的算子包括:

    新增了 HDevelop 示例程序 hdevelop/Matching/Deep-Counting/deep_counting_workflow.hdev 和 hdevelop/Matching/Deep-Counting/deep_counting.hdev,以演示如何在 HALCON 中使用深度计数。
    示例 hdevelop/Matching/Deep-Counting/deep_counting.hdev 已使用子目录 images/counting 中的新图片 flasks_[01-03].jpg、pipe_[01-03].jpg 和 rods_[01-03].jpg 进行了扩展。
    示例 hdevelop/Matching/Deep-Counting/deep_counting_workflow.hdev 使用了子目录 images/bottles 中已有的图片 bottle_crate_[01-24].png。

    新函数 draw_deep_counting_templates 可用于为深度计数模型绘制模板。新函数 dev_display_deep_counting_results 可用于可视化深度计数的结果。

    参考手册增加了一章,介绍如何使用新的深度计数功能( "匹配" > "深度计数" )。

  • read_dl_model 现在可以读取包含 ConvTranspose 操作的 ONNX 模型。 此外,转置卷积( create_dl_layer_transposed_convolution )现在支持偏置项和 CPU 训练。

  • HALCON 已通过深度 OCR 检测训练进行了扩展。现在,深度 OCR 模型的检测组件可以在特定应用领域进行再训练,以获得更好的检测结果。

    新增 HDevelop 示例 hdevelop/OCR/Deep-OCR/deep_docr_detection_training_workflow.hdev,以展示如何在 HALCON 中使用该功能。本示例添加了一组新图像。它位于名为 "punched_numbers" 的示例图像文件夹中。
    我们对现有的 HDevelop 示例程序 hdevelop/OCR/Deep-OCR/deep_ocr_prelabel_dataset.hdev 进行了改编,它展示了如何使用深度 OCR 对图像进行预标注,并创建可导入深度学习工具的数据集,以完善标签。

    扩展了以下深度学习函数:

    现在可以使用以下新函数:

    算子set_dl_model_paramget_dl_model_param 扩展了深度 OCR 检测的特定参数:

    • "min_character_score"
    • "min_link_score"
    • "min_word_area"
    • "min_word_score"
    • "orientation"
    • "sort_by_line"
    • "tiling"
    • "tiling_overlap"

    扩展了参考手册中的 "深度学习" 、 "深度学习/模型" 和 "OCR/Deep-OCR" 章节,以及get_dl_model_paramset_dl_model_paramset_deep_ocr_paramget_deep_ocr_param 算子条目。现在,它们介绍了如何使用该方法以及相应的参数。解决方案指南 I 基础知识 中有关深度 OCR 的章节也作了相应调整。

  • 预训练的深度 OCR 检测模型得到了改进和扩展。在 "detection" 和 "auto" 模式下,apply_deep_ocr 得出的检测框现在更加精确。
    此外,还新增了一个紧凑型检测组件。这种紧凑型模型的精确度略低于默认模型。这样做的好处是,它使用的内存大大减少,推理速度也更快。这两个模型都可以使用深度 OCR 检测训练进行重新训练。
    set_deep_ocr_param 增加了为参数 "detection_model" 指定文件名、 "compact"或 "default" 选项。在参数 "recognition_model" 中增加了设置文件名或 "default" 的选项。
    更新了以下预训练模型:
    dl/pretrained_deep_ocr_detection.hdl 
    添加了以下预训练模型:
    dl/pretrained_deep_ocr_detection_compact.hdl

    请注意,这一更改会影响兼容性。 更多信息。
  • 现在可以在调用 optimize_dl_model_for_inference 之后设置某些模型参数。这样就无需 Repeat重复 耗时的优化工作。
    优化模型的结构无法更改,因此只支持选择参数。此外,还可以对支持的参数进行限制,以满足这些约束条件。
    在模型优化后,可以使用 set_dl_model_param 对每种模型类型的下列参数进行更改:

    • 异常检测:standard_deviation_factor 
    • 全局上下文异常检测: anomaly_score_tolerance 
    • 分类:class_names 
    • 检测:class_names、 max_num_detections、 max_overlap、max_overlap_class_agnostic、 min_confidence 
    • 深度 OCR 检测组件: min_character_score、 min_link_score、 min_word_score、 orientation、 sort_by_line、 tiling、 tiling_overlap 
    • 深度 OCR 识别组件:alphabet、 alphabet_internal、 alphabet_mapping 
    • 分割:class_names 

    set_deep_ocr_param 也扩展了这一新功能,并在优化后支持以下参数:

    • 深度OCR: detection_min_character_score、 detection_min_link_score、 detection_min_word_score、 detection_orientation、 detection_sort_by_line、 detection_tiling、 detection_tiling_overlap、 recognition_alphabet、 recognition_alphabet_internal、 recognition_alphabet_mapping
  • set_dl_model_paramget_dl_model_param 进行了扩展。使用参数 "image_size" 可以设置和获取输入图像的宽度和高度,同时保持深度不变。

文件
  • list_files 已扩展至支持 Linux 系统上的符号链接列表。

  • HALCON 扩展了对数据类型 "serialized_item" 、"memory_block" 和 "encrypted_item" 的序列化和反序列化支持。

图形
图像
  • HALCON 扩展了算子 add_image_border。它可用于在图像上添加一个任意大小、灰度值恒定的边框。

匹配
杂项
  • 自 HALCON 11.0 以来,Hpar f 联合体已被宣布为遗留代码,现已删除。此外,宏 FLOAT_PAR 也已删除。

    请注意,这一更改会影响兼容性。 更多信息。
  • armv7a-linux、x64-linux 平台和 armv8-linux 平台上 HALCON 库的最低系统要求已提高到 gcc 7 和 glibc 2.27。

    请注意,这一更改会影响兼容性。更多信息。
系统
  • set_systemget_system 扩展了参数 "enable_neon" 。该参数控制是否使用 NEON 操作来加速选定的图像处理算子。
    此外,get_system 还扩展了参数 "neon_supported" 。该参数表示处理器是否支持 NEON 操作。

  • send_datareceive_data 扩展了对数据类型 "memory_block" 的支持。

  • 在 Windows 上,HALCON 22.11 增加了 mimalloc 内存分配器的使用(详情请参见https://microsoft.github.io/mimalloc),以提高某些特定情况下的性能。不过,这一变化增加了所有情况下的总体内存消耗。因此,现在可以使用 set_system 的新参数 "memory_allocator" 禁用 mimalloc。此外,mimalloc 内存分配器现在也适用于 Linux。

元组
  • set_dict_tuple 现在可以同时设置多个键。 为此,可以传递单个值,作为所有键的值,也可以传递一组值,一个键一个值。这也适用于字典赋值表达式。

错误修复

3D
  • 对于 "3d_gripping_point_detection" 类型的模型,如果使用 "calibration_precisions" 作为精度(例如 "int8" ),optimize_dl_model_for_inference 会产生不正确的结果。该问题已得到修复。

  • 在使用 "gen_xyz_mapping" 和 "xyz_map_width" 或 "xyz_map_height" 参数 prepare_object_model_3d 处理点数过多的三维对象模型数据时,可能会生成损坏的三维对象模型。这个问题已得到修复。现在,如果参数不适合给定的三维点数,就会出现错误。

  • project_3d_point 和其他必须使用多项式模型计算透镜失真的算子在极少数情况下会返回失真点的错误坐标。这一问题已得到修复。在这种情况下,现在会返回错误 8406("无法投影点")。

  • 如果输入的三维对象模型是使用 GenParamName 设置为 "xyz_mapping_max_view_angle" 的 triangulate_object_model_3d 创建的,则 segment_object_model_3d 无法正常工作或崩溃。该问题已得到修复。

  • 读取包含圆和/或弧的 DXF 文件时,read_object_model_3d 会泄露内存。该问题已得到修复。

  • 在调用apply_sheet_of_light_calibration之后, reset_sheet_of_light_model 有时会崩溃。该问题已得到解决。

条形码
  • set_bar_code_paramset_bar_code_param_specific 即使算子调用失败,也可以更改模型。原因是所有有效参数都被解析,直到出现一对无效参数。该问题已得到解决。 现在,只有当 set_bar_code_param/set_bar_code_param_specific 调用成功完成时,才会对模型进行调整。 此外,还修正了 "bar_code_width_min" / "bar_code_width_max" 等参数之间的某些依赖性问题,如果在一次调用中同时设置这两个参数,可能会出现这种问题。

  • 具有两位数应用标识符但只有一位数内容的 GS1 代码无法正确解码。这一问题已得到解决。

校准
  • 当数据中缺少所需的 calib_obj_pose 时,calibrate_hand_eye 有时不会引发错误,但会返回错误的结果。当数据中缺少所需的 calib_obj_pose 或返回错误 8458( "无效校准对象索引" )时,get_calib_data 有时不会引发错误。现在, calibrate_hand_eye 返回错误 8467( "观测数据不完整" )、get_calib_data 将返回错误 8459( "校准对象姿态索引无效" )。该问题已得到解决。

    请注意,这一更改会影响兼容性。 更多信息。
  • 当 DataName 是一个包含多个条目的数组时,get_calib_data 有时会返回错误或未定义的结果,其中包含 "hand_eye_calib_error" 。这一问题已得到修复。

  • HDevelop示例程序hdevelop/Applications/Robot-Vision/pick_and_place_with_2d_matching_moving_cam.hdev未能正确校正用于匹配和机器人接近姿势的模型图像。该问题已得到修复。

颜色处理
数据码
  • 由于短方向上有少量模块(如 8x...)的矩形 Data Matrix ECC 200 代码的参考解码算法不足,将 "quality_isoiec15415_decode_algorithm" 设置为 "reference" 时,打印质量检测 (ISO/IEC 15415) 可能会失败,即使是几乎完美的代码。该问题已得到解决。

  • set_data_code_2d_paramfind_data_code_2d 接受字符串作为许多数值或布尔 GenParamValues 的输入。不过,内部转换机制并不能可靠地捕捉到所有转换错误。这一问题已得到修复。此外,对于 DotCode,如果使用了错误的 GenParamName 或错误的 GenParamValue,find_data_code_2d 的错误代码也已更改。新的错误代码与其他二维符号一致:错误值导致 8830( "无效参数值" ),错误名称导致 8831( "未知参数名" )。

  • set_data_code_2d_paramfind_data_code_2d 接受不同类型的值,这可能导致溢出、意外缩小转换或根本不受支持。然而,内部解析机制并不能可靠地捕捉到所有错误。这一问题已得到解决。现在,将抛出一条扩展错误信息,告知用户输入的错误值。

  • 在 armv7a 和 aarch64 上,find_data_code_2dgray_closing_shapegray_dilation_shapegray_erosion_shapegray_opening_shape 的运行速度明显降低。该问题已得到修复。

  • 可使用通用参数 "quality_isoiec15415_decode_algorithm" 和相关值 "reference" 通过 set_data_code_2d_param 激活参考解码算法。这一问题已得到修复。现在,如果参考解码算法不适用,将返回等于-1 的质量等级。在这种情况下,我们建议使用 "robust" 模式。

  • set_data_code_2d_paramset_bar_code_paramset_bar_code_param_specific 的某些参数指定的范围并非总是经过检查。这一问题已得到修复。现在,超出记录范围的值将产生错误。不过,也有例外情况,为了提高可用性,在这种情况下不会抛出错误。

  • 具有两位数应用标识符但只有一位数内容的 GS1 代码无法正确解码。这一问题已得到解决。

  • Data Matrix ECC 200 代码阅读器在检测模块尺寸差异较大的代码的正确符号尺寸时出现问题。上述问题还可能影响打印质量。该问题已得到修复。

  • MicroQR 代码阅读器在极少数情况下会崩溃。该问题已得到修复。

  • 由于位于符号边界的点太少,DotCode 阅读器可能会拒绝良好的候选码。这一问题已得到解决。

  • 如果通过 set_data_code_2d_param 将 "mirrored" 设置为 "any" ,则 get_data_code_2d_objects 会返回不可解码 QR 代码候选码的错误 "module_0_rois" 和 "module_1_rois" 。该问题已得到修复。

  • 对于 DotCode 符号,在训练模式下调用 find_data_code_2d 时会泄露内存。该问题已得到修复。

  • 读取用 HALCON 6.1 或更早版本生成的模型文件时,read_data_code_2d_model 会泄露内存。该问题已得到修复。

  • 在训练模式下使用 find_data_code_2d 时,在某些情况下会导致后续操作符调用 Aztec 代码符号时出现内存泄漏。该问题已得到修复。

深度学习
  • 在极少数情况下,如果模型是用create_dl_model创建的,apply_dl_model 可能会返回不必要的中间输出。只有当模型的中间节点与多个输出相连,且中间节点直接与一个或多个损耗层或剔除层相连时,才会出现这种情况。没有一个预训练模型受此问题影响。该问题已得到修复。

  • 无法在变量窗口中保存 HALCON深度OCR 模型。保存 HALCON DL 模型会导致文件无法读取。该问题已得到修复。

  • 算法 augment_dl_samples 错误地支持 Deep-OCR 识别模型的增强方法 "saturation_variation" 。该问题已得到修复。

    请注意,这一更改会影响兼容性。 更多信息。
  • 自定义深度学习模型的 apply_dl_model 输出字典(网络末端有一个模式为 "arg_and_value" 的 depthmax 层)不包含第一个输出的键。该问题已得到修复。

  • 算子 read_dl_dataset_anomalyread_dl_dataset_segmentation 在图像目录中包含正则表达式中具有特殊含义的字符时可能会失败。该问题已得到修复。

  • 示例 deep_ocr_recognition_training_workflow.hdev 在第 5 步:DEEP OCR INTEGRATION AND INFERENCE深度OCR集成和推理 中没有使用正确的测试图像。该问题已得到解决。

  • 如果深度学习数据集包含大数字作为类 ID,有些程序就会占用过多内存。受此问题影响的函数如下:read_dl_dataset_from_cocosplit_dl_dataset。该问题已得到解决。添加了公共函数 create_dl_class_id_mapping ,以支持类 ID 的内存高效映射,即使 ID 是大整数值。

  • 如果调用函数 check_dl_gc_anomaly_scores_normalization 时所使用的模型已经过 optimize_dl_model_for_inference优化,那么其就会产生 2105 错误("访问未定义的灰度值成分")。该问题已得到解决。

  • 在某些情况下,如果 ONNX DL 模型文件中包含退出操作,则无法读取该文件。这一问题已得到解决。

  • 在某些情况下,如果 ONNX 模型包含按给定比例因子缩放输入特征图的调整大小操作,则 read_dl_model 会失败。该问题已得到解决。

  • 使用 set_deep_ocr_param 更改 recognition_alphabet 参数时,如果该参数是从其他线程设置的,则可能会失败。只有当识别组件的运行时设置为 "gpu" 时才会出现这种情况。该问题已得到修复。

  • 调用 set_system ('cudnn_deterministic', 'true')后,对象检测和语义分割深度学习模型的 train_dl_model_batch 对于运行时 "gpu" 来说不是确定的。该问题已得到解决。

  • 在某些情况下,将参数 "anomaly_region_threshold" 设置为某个值可能会导致错误。该问题已得到修复。

  • 在使用 DL 框架时,有可能创建的模型并非所有输出层都与损失相连。在这种情况下,使用 "cpu" 运行时,算子 train_dl_model_batch 会出错,因此无法训练模型。这一问题已得到修复。

  • 分类模型 "pretrained_dl_classifier_resnet18.hdl" 的批次规范统计初始值略有不一致。这在应用中本不应该成为问题,因为批次规范统计量是在微调过程中学习的,以适应新的自定义域。该问题已得到修复。

    请注意,这一更改会影响兼容性。 更多信息。
  • 如果 apply_deep_ocr 因超时或 break中断 事件而中止,则可能出现内存泄漏。只有当深度 OCR 句柄的参数 "tiling" 设置为 "true" 时,才会发生内存泄漏。该问题已得到修复。

  • read_dl_model 在某些错误情况下会泄露内存。该问题已得到修复。

文件
  • 在使用 read_memory_block 时发生错误,打开的文件描述符没有关闭,导致泄漏。该问题已得到修复。

滤波器
  • 当多个具有相同参照的图像被作为输入图像传入时, optical_flow_mg 返回相同的 VectorField,即使其他输入图像是不同的。该问题已得到解决。

  • 对 int2、uint2 和实数图像进行 "weighted" 插值时,zoom_image_size 返回的结果不正确。 具体来说,使用的是 "constant" 插值方法,而不是所需的 "weighted" 方法。这个问题已得到修复。现在,所有图像类型都使用了正确的插值方法。

  • 如果第一个图像通道不包含所有图像通道中的最大灰度值,adjust_mosaic_images 无法正确处理 "uint2" 图像。该问题已得到修复。

图形
  • 在缓冲区窗口和 HDevelop 图形窗口中,即使没有按下鼠标键,get_mposition 也会返回修改键的状态。该问题已得到解决,在这种情况下,get_mposition 现在不会返回修改键的状态。

  • 对于 dev_set_draw_mode('margin'),区域的可视化仅限于其轮廓。这与新的像素网格功能产生了不良影响,因为像素网格会覆盖区域轮廓,使其难以看清。该问题已得到修复。

  • draw_nurbsdraw_nurbs_mod 会泄露内存。 该问题已得到解决。

图像
  • 在 HALCON XL 中,由于浮点错误,zoom_image_factor 会对非常大的图像执行错误的计算。该问题已得到修复。

  • 在 64 位系统上,HALCON XL 中的 convert_image_type 可能会导致超大图像崩溃。该问题已得到修复。

  • 当发生内部错误时,算子 cooc_feature_matrix 会泄漏少量内存。该问题已得到修复。

匹配
矩阵
  • 算子 read_matrix 在从 ASCII 文件读取矩阵时遇到困难,在某些情况下可能导致无法读取文件或读取错误的数字。该问题已得到修复。

杂项
形态学
区域
  • gen_ellipse 无法为某些方向生成完整的椭圆。在这种情况下,会缺少一个很小的扇形。该问题已得到修复。

  • 对于由单个像素组成的区域,get_region_convex 会返回不确定的结果。这个问题已经解决。现在,返回的是正确的凸壳,即区域像素的行和列。

  • sort_region 没有检查输入的 Order 和 RowOrCol 的值。 这个问题已得到解决。现在,sort_region 返回错误 1302( "控制参数 2 的错误值" )和 1303( "控制参数 3 的错误值" )。

系统
  • open_socket_connect 在解析给定主机名失败时泄漏内存。该问题已得到修复。

  • send_data 无法通过 Windows 上未绑定的 UDP 套接字发送数据。该问题已得到修复。

工具
变换
元组
  • 使用 tuple_select_ranktuple_median 处理包含 NaN 元素的元组时,在某些情况下会导致崩溃。该问题已得到修复。

  • serialize_tuple 无法正确处理小于 INT32_MIN 的整数元组元素。该问题已得到修复。

XLD

函数

错误修复

  • 在 WindowHandle 中放大或缩小时,深度学习函数 dev_display_dl_interactive_confusion_matrix 有时无法使用。该问题已得到修复。

  • 深度学习函数 find_dl_detection_param 计算了错误的兼容目标输入大小检查。该问题已得到修复。

  • 函数 dev_display_dl_data 使用的操作符是校准和 3D 度量许可证模块的一部分。只有当参数 KeysForDisplay 包含 "point_cloud" 值时,才会使用这些算子。HDevelop 的 "Used Modules" 对话框总是将校准和 3D 度量许可证模块报告为已用。这一问题已得到修复。现在,所有三维可视化功能都已转移到一个新的专用函数 dev_display_dl_3d_data。 修改了示例 3d_gripping_point_detection_workflow.hdev,并将参数 "point_cloud" 更名为更准确的名称 "gripping_point_cloud" 。

    请注意,这一更改会影响兼容性。更多信息。
  • 函数 gen_dl_samples 在处理包含多个对象的图像时不会出错。这可能会在其他不支持此类图像的函数中造成后续错误。该问题已得到解决。现在,gen_dl_samples 会对包含多个对象的图像抛出相应的错误。

HALCON/PYTHON

功能性

  • HALCON/Python 现在支持 HALCON XL。详情请参见程序员指南。

错误修复

  • 在 HDevEngine/Python 中使用多维向量中的图标输出和 get_global_iconic_var 会导致内存泄漏。该问题已得到修复。

HALCON 变量检查

错误修复

  • 在 Visual Studio 中打开并运行多个项目后,在 HALCON 变量检查中显示 HALCON 数据可能会停止工作。这一问题已得到修复。此外,无法显示较大数据(如大图像)的问题也已基本解决。

  • Visual Studio 2022 的 VSIX 未正确签名,导致 VSIX 安装程序显示数字签名无效的消息。该问题已得到修复。

扩展程序包

功能性

  • 新增扩展程序包示例程序extension_package/easy_extensions/dotnet,作为 .NET 的简易扩展接口示例。它展示了如何将基于 HALCON/.NET 接口的 .NET 函数轻松集成到 HALCON 的运算器集,并可在 HDevEngine 和 HDevelop 中使用。
    该扩展程序包包含一个用户定义的 HALCON 算子示例的 .NET 源代码和算子定义文件。
    此外,它还包含定义 .NET 简易扩展接口适配器的源代码。该简易扩展适配器为任何在.NET中编码的用户定义的 HALCON 算子实现了通用供应方法,并可重复用于自己的 .NET HALCON 算子集扩展。

错误修复

  • Visual Studio 在构建 useropencl 示例时显示了一些编译器警告。该问题已得到修复。

图像采集接口

有关新界面修订和新支持的图像采集设备的最新信息,可在 MVTec的网络服务器 上找到。有关改进、错误修复或是否需要相应设备驱动程序的新版本的信息,请参阅各个 图像采集接口 文档中的发行说明。

数字I/O接口

有关新接口修订和新支持的数字 I/O 接口的最新信息,可在 MVTec 的网络服务器上找到。 有关改进、错误修正或是否需要相应设备驱动程序的新版本的信息,请参阅各 数字I/O接口文档中的发行说明。

文档

用户指南

  • 在HDevelop 用户指南中,元组描述已更新并缩短。

  • 提高了 HDevelop 用户指南的可读性。图像描述更加直观。

  • 更新了HDevelop 用户指南,以提高可读性和文字流畅性。

  • 安装指南描述了无效的系统要求。深度 OCR 识别组件声明可在 CPU 上进行训练。然而,该组件只能在 GPU 上进行训练。该问题已得到修复。

  • HDevelop 用户指南中关于浮动窗口重启行为的描述不清楚。该问题已得到修复。

  • W当使用两个版本的 HALCON 并执行变量检查时,可能会导致许可错误。安装指南已更新,说明了如何避免这一错误。

  • HDevelop 用户指南中给出的算子优先级不正确。这一问题已得到解决。

解决方案指南

  • 解决方案指南 I 基础 几乎每一章都有一个关于选择算子的小节。由于每章的方法描述中都提到了算子,因此删除了相应的算子选择小节。

参考手册

  • 参考手册中的 apply_bead_inspection_model 条目没有说明图像域会被忽略。该问题已得到修复。

  • correlation_fftconvol_fft 的参考手册条目进行了扩展,以明确算子的确切行为。

  • 文档中没有说明手眼校准不适用于远心相机。这一问题已得到解决。现在,该行为已在 create_calib_data 的参考手册条目中记录。

  • create_dl_model_detection 的参考手册条目将 "class_weights" 列为可设置参数,尽管该参数对检测网络没有影响。该问题已得到修复。

  • 德文参考手册中 erosion_rectangle1 的条目没有正确说明如果"宽度"和"高度"不是奇数,图像将如何受到腐蚀操作的影响。该问题已得到修正。

  • 参考手册中 find_generic_shape_model 条目在多个图像对象的情况下不够精确。该问题已得到修复。

  • 基于深度学习的对象检测参考手册章节遗漏了 SoAP 公式中的归一化系数。该问题已得到修复。

  • 参考手册中有关 2D 变换的章节包含关于以像素为中心的坐标的错误说明。该问题已得到修复。

  • 德文参考手册中 get_data_code_2d_paramset_data_code_2d_param 条目遗漏了专门针对微型QR二维码的部分。该问题已得到修复。

  • 对于二维数据码, "bin_module_data" 的顺序与通过 "module_1_rois" 和 "module_0_rois" 访问的模块之间的关系没有很好地记录。这一问题已得到解决。更多信息,请参见 get_data_code_2d_resultsget_data_code_2d_objects 的参考手册条目。

  • 参考手册中的 get_dl_model_param 条目没有说明更改 DL 模型的 "solver_type" 会重置模型的"learning_rate" 。该问题已得到修复。

  • 关于 get_object_model_3d_paramsset_object_model_3d_attribremove_object_model_3d_attrib 扩展属性的文档不正确。该问题已得到修复。

  • get_operator_info 在显示大多数矩阵算子的公式时存在问题。该问题已得到修复。

  • image_to_memory_block 的参考手册条目现在正确地将 "png" 列为支持的图像文件格式。

  • 参考手册中 rigid_trans_object_model_3d 条目没有正确提及所有未修改的属性。该问题已得到修复。

  • set_spy 的参考手册条目指出,在 HDevelop 中,stdout 输出不起作用。如果 HDevelop 与控制台一起使用,输出就会生效,因此该说明是无效的。该问题已得到修复。

  • 参考手册中 set_system 条目忽略了参数 "do_low_error" 的排他性。该问题已得到修复。

  • set_system 的参考手册条目指出,参数 "global_mem_cache" 支持 "shared" 模式。不过, "shared" 模式已不再有效,内部设置为 "exclusive" ,以避免破坏兼容性。参数文档已作相应调整。此问题已得到修复。

  • set_window_param的参考手册条目未提及无法为缓冲区窗口设置 "window_title" ,包括通过 dev_open_window 打开的窗口。该问题已得到修复。

  • 日文参考手册没有区分不同的字体类型,导致格式误导。这个问题已经解决。现在使用的是不同的字体类型。

  • HTML 参考文档中的一些表格现在可以交替使用背景颜色,从而简化视觉导航。

杂项

  • 改进了 HTML 文档的布局。现在,行的长度减少了,阅读起来更轻松。

  • 第三方版权页面现在包含指向相应软件位置的链接。

  • 第三方库版权的列表包含异常格式。该问题已得到解决。

安装

  • 在 Windows 系统中,当前用户安装的示例和图像的默认位置无法自动搜索,这需要从外部设置环境变量 HALCONEXAMPLES。这一问题已得到修复。现在会检查 "current user" 和 "for all users" 的路径,并使用第一个可用路径。

杂项

  • 在 Linux 下,程序窗口在启动时并不总是有焦点。这一问题已得到修复。

  • EULA 中缺少章节编号。该问题已得到修复。

  • 支持语言接口示例的 Visual Studio 最低版本已从 VS2005 更改为 VS2013。

  • 如果使用 -t 选项,hrun 会泄露少量内存。此外,examples/arm-linux/hrun.cpp 也存在同样的问题,这些问题已得到修复。

  • 如果使用选项 -D,hrun 和 hpeek 会泄露少量内存。此外,examples/arm-linux/hrun.cpp 也存在同样的问题,这些问题已得到修复。

请点击 此链接 了解 HALCON 以前版本的变化。