本文件提供 2024 年 11 月发布的 MVTec HALCON 24.11.1.0 Progress-Steady 的发布说明。
HALCON 24.11.1 Steady 的发行说明可单独获取,请参见 HALCON 24.11.1 Steady。
HALCON 的这一新功能可以轻松识别生产过程中因错误分类而导致的意外行为。因此,用户可以采取适当的措施,例如有针对性地、高效地停止机器。使用深度学习分类器时,未知对象会被分配到系统学习到的类别中。例如,如果缺陷或对象本身属于从未出现过的类型,这就会导致问题。
新的深度学习功能 "分布外检测(OOD)" 指出了何时对训练数据中未包含的对象进行分类。例如,如果系统只针对玻璃瓶进行过训练,那么这可能是一个金属制造的物体。在这种情况下,OOD 会提供一个 "OOD 分数",表示偏离训练类别的程度。
在使用新的训练图像扩展深度学习模型时,OOD 分数也很有用,它能说明哪些新图像对新模型的价值最大。例如,新训练图像的 OOD 得分越高,表明与网络已见图像的偏差越大——这意味着信息含量越高,因此训练价值越大。
HALCON 24.11 为所有 HALCON 集成开发环境 (IDE) HDevelop 的用户提供了一个特别亮点:新 IDE HDevelopEVO 的预览。
除其他外,它还具有更现代、更直观的用户界面和经过改进的编辑器(即中央编程元件)。后者可以更快、更高效地进行机器视觉应用的编程和原型设计。
用户已经可以在 HALCON 24.11 中广泛测试新的开发环境。HDevelopEVO 的功能范围将在今后的版本中不断扩大,并逐渐成为标准的 HALCON 开发环境。
新版 HALCON 使许多应用中使用的 "基于形状的匹配" 功能更加方便用户使用。这项技术用于快速、准确、精确地查找对象。为此,HALCON 24.11 新增了正在申请专利的 "扩展参数估计 "功能。这使得参数估计的粒度更大,从而大大提高了某些应用中的鲁棒性。"扩展参数估计" 使没有深入机器视觉专业知识的用户也能进行参数估计。
HALCON QR 码阅读器的性能得到了显著提高。这在困难条件下尤为明显,例如,需要在图像区域找到多个码,或者图像中的许多纹理使检测变得复杂。在要求较高的情况下,识别率得到了提高,评估时间也大大缩短。
凭借这一功能,HALCON 24.11 为三维视觉领域带来了基于深度学习的市场创新,尤其适用于拣选和拾放应用。该功能在确定训练对象的准确位置和旋转方面特别强大,而且参数设置工作量极小,执行时间极短。根据精度要求,可使用一个或多个经济高效的标准 2D 机来确定位置。
训练完全在 CAD 模型生成的合成数据上进行。因此不需要进一步的训练数据。
客户已可在 HALCON 24.11 中运行该功能——若要训练模型和评估应用,可随时联系 MVTec。下一个版本将在 HALCON 中进行训练和评估。
随着该版本的发布,HALCON 的 GigE Vision 接口支持 RoCEv2 网络协议,从而提高了图像传输性能。
HALCON Progress 现在与 HALCON Steady 版本完全兼容。Progress 用户现在可以与 Steady 用户在同一项目上进行协作。此外,HALCON Progress 用户将获得与 HALCON Steady 用户相同的维护更新。今后,从 Steady 切换到 Progress 只需交换许可证文件即可。
所有 HALCON 24.05 Progress 许可证或早期版本的许可证都必须更换或升级。请联系当地经销商。HALCON 24.11.1.0 Progress-Steady 许可证将向下兼容 HALCON 24.05 Progress。
与 HALCON 24.05 Progress 相比,引入了许多扩展。因此,HALCON 24.11.1.0 Progress-Steady 库与 HALCON 24.05 Progress 或更早版本的二进制不兼容。不过,除以下更改外,HALCON 24.11.1.0 Progress-Steady 与 HALCON 24.05 Progress 的源代码基本兼容:
对于 sample_object_model_3d,参数 "SampleDistance"已更名为 "SamplingParam"。在 HALCON/Python 或 HALCON/.NET 中使用命名参数时,必须重新命名参数。
更多信息。对于 read_object_model_3d,输出参数 "ObjectModel3D" 现在是 ObjectModel3D 数组类型,而不是单值类型 ObjectModel3D。这影响了 HALCON/C++ 和 HALCON/.NET 语言接口中 read_object_model_3d 的面向对象签名,包括 HObjectModel3D 构造函数及其成员函数 HObjectModel3D::ReadObjectModel3D。为实现向后兼容,仍提供未注明的单值签名,但不能与新参数 "split_level" 一起使用。有关完全支持的签名,参见算子参考。
更多信息。算子 area_intersection_rectangle2、distance_pr、distance_lr、distance_sr、distance_sc、distance_lc、distance_cc_min、distance_cc_min_points 和 distance_cc 现在可接受以前会产生异常的输入。此外,算子 distance_cc、distance_cc_min 和 distance_cc_min_points 的 HALCON/C++ 和 HALCON/.NET 接口现在支持额外的重载,这在极少数情况下会导致兼容性问题。
更多信息。convex_hull_object_model_3d、triangulate_object_model_3d、 intersect_plane_object_model_3d、 register_object_model_3d_pair 和 register_object_model_3d_global 现在会返回错误 9526("三维对象模型中的基元没有扩展数据"),而不是错误 9203、9511、9514、9515、9517 或对圆柱体或平面类型的无限基元的错误结果。
更多信息。HTuple::GetHctuple() 成员函数已更改为接收 Hctuple 结构的引用,以便将数据复制到该结构,而不是返回一个 Hctuple。
从 HalconCDefs.h 中移除了未注明的 at_i、at_d、at_h 和 at_s 宏。
HGetPPar 函数的签名已更改,因此第三个参数现在使用 Hcpar const* H_RESTRICT* 参数,而不是 Hcpar* H_RESTRICT* 参数。任何直接或间接调用 HGetPPar 的代码都需要进行修改。
请注意,这不是语义上的更改,因为 HGetPPar 的文档规定,不得修改 HGetPPar 返回的 Hcpar 值。这一修改向编译器明确说明了这一限制。
find_shape_model、 find_scaled_shape_model 和 find_aniso_shape_model 预计参数 "NumLevels" 和 "NumMatch"为整数,但也接受双精度。由于这些值应该是整数,因此现在设置双精度会导致错误,以便通知用户。
更多信息。在对象检测模型的推理中,如果预测方框与另一个预测方框的交并比(IoU)分别等于阈值 "max_overlap" 或 "max_overlap_class_agnostic",则在非最大压制期间保留预测方框。
更多信息。深度学习模型的 GPU 运行时初始化已得到改进。性能应该会比以前更稳定,初始化模型所需的时间也会大大减少。作为副作用,apply_dl_model 和 train_dl_model_batch 的运行时性能和 GPU 内存使用量可能与之前版本的 HALCON 有所不同。这仅适用于 GPU 运行时设备。请注意,要在 GPU 上获得最佳推理性能,应使用像 Tensor RT 这样的 AI² 接口(参见 query_available_dl_devices )。
更多信息。一般来说,HALCON 24.11.1.0 Progress-Steady、HALCON 24.05 Progress 和 HALCON 20.11 Steady 图像采集接口与库兼容。
HALCON 24.11.1.0 Progress-Steady 仅包含可用图像采集接口的子集。更多信息,参见 图像采集接口的参考文档 。您可以从我们的 网络服务器 下载其他接口。
一般来说,HALCON 24.11.1.0 Progress-Steady、HALCON 24.05 Progress 和 HALCON 20.11 Steady 数字输入/输出接口与库兼容。
HALCON 24.11.1.0 Progress-Steady 仅包含可用数字输入/输出接口的子集。更多信息,参见 输入/输出接口参考文档 。您可以从我们的 网络服务器 下载其他接口。
请重新生成使用 HALCON 24.05 Progress 开发的扩展包。
以下功能可能会在未来的主要版本中停止使用:
有关如何替换遗留算子的详细信息,请参见参考手册条目。
HALCON Steady 的许可证服务器现已废弃。今后,许可证服务器将仅适用于 HALCON Progress。
自 HALCON 24.11 起,armv7-linux 平台已被宣布为 HALCON 标准平台,从 HALCON 25.11 Progress 版和 HALCON 26.11 Steady 版开始,该平台将不再提供。该平台仍将作为 HALCON Embedded 计划的一部分按需提供。
遗留句柄模式已被宣布为 HALCON 24.11 的遗产。该模式通过 set_system 算子中的参数 "legacy_handle_mode" 将句柄的所有权转移给用户,并将在随后的 HALCON 25.05 版本中移除,包括用于集体销毁句柄的算子:
clear_all_bar_code_models, clear_all_barriers, clear_all_calib_data, clear_all_camera_setup_models, clear_all_class_gmm, clear_all_class_knn, clear_all_class_lut, clear_all_class_mlp, clear_all_class_svm, clear_all_class_train_data, clear_all_color_trans_luts, clear_all_component_models, clear_all_conditions, clear_all_data_code_2d_models, clear_all_deformable_models, clear_all_descriptor_models, clear_all_events, clear_all_lexica, clear_all_matrices, clear_all_metrology_models, clear_all_mutexes, clear_all_ncc_models, clear_all_object_model_3d, clear_all_ocr_class_knn, clear_all_ocr_class_mlp, clear_all_ocr_class_svm, clear_all_sample_identifiers, clear_all_scattered_data_interpolators, clear_all_serialized_items, clear_all_shape_model_3d, clear_all_shape_models, clear_all_sheet_of_light_models, clear_all_stereo_models, clear_all_surface_matching_results, clear_all_surface_models, clear_all_templates, clear_all_text_models, clear_all_text_results, clear_all_training_components, clear_all_variation_models, close_all_bg_esti, close_all_class_box, close_all_files, close_all_framegrabbers, close_all_measures, close_all_ocrs, close_all_ocvs, close_all_serials, close_all_sockets.
仍支持用于释放单个句柄内容的算子。
函数 set_dl_model_param_max_gpu_batch_size 自 HALCON 24.05 起宣布退出历史舞台,从 HALCON 25.11 Progress 版和 HALCON 26.11 Steady 版开始将不再提供。
自 HALCON 24.05 起,基于匹配/组件的功能已被宣布为遗留功能,从 HALCON 26.11 开始,Steady 版和 Progress 版将不再提供该功能。
自 HALCON 13.0 以来,基于匹配/灰度值的功能已被宣布为遗留功能,从 HALCON 25.11 Progress 版和 HALCON 26.11 Steady 版开始,该功能将不再提供。
分类/超级盒子功能自 HALCON 13.0 起已宣布为遗留功能,从 HALCON 25.11 Progress 版和 HALCON 26.11 Steady 版开始,该功能将不再提供。
旧的 DL 分类器功能自 HALCON 22.05 版起已宣布退出历史舞台,从 HALCON 25.11 Progress 版和 HALCON 26.11 Steady 版开始,该功能将不再提供。
自 HALCON 13.0 起,在 find_bar_code 和 decode_bar_code_rectangle2 中对 uint2 图像的支持已被宣布为遗留,从 HALCON 25.11 Progress 版和 HALCON 26.11 Steady 版开始,该功能将不再提供。
算子 set_insert、get_insert 和 query_insert 自 HALCON 20.05 起已宣布为遗留算子,从 HALCON 25.11 Progress 版和 HALCON 26.11 Steady 版开始,该功能将不再提供。
算子 bin_threshold 自 HALCON 12.00 起已宣布退出历史舞台,从 HALCON 25.11 Progress 版和 HALCON 26.11 Steady 版开始,该功能将不再提供。
HALCON 24.11.1.0 Progress-Steady 已编译为 x64-win64 平台版本,适用于配备 SSE2(AVX2 调度)处理器的英特尔 64 或 AMD 64 处理器上的 Windows Windows 10(x64 版本)、11、Windows Server 2016、2019、2022。
HALCON 24.11.1.0 Progress-Steady 已针对以下 Linux 平台版本进行了编译:
有关不同应用二进制接口的详细系统要求,请参阅安装指南。
HALCON 24.11.1.0 Progress-Steady 中的更改与 HALCON 24.05 有关。
现在可以通过 HDevelop 的开始对话框访问 MVTec 学院。
当中断一个长期运行的算子时,编辑一个正在运行的程序可能会导致关于程序损坏的误报警告。这一问题已得到修复。
dev_get_system 的自动完成功能未提供 "call_stack" 参数。该问题已得到修复。
This problem has been fixed.深度 OCR 识别训练的增强 "rotate_range" 在 augment_dl_samples 中引发异常。该问题已得到修复。
新的 HDevelop 示例程序 hdevelop/Applications/Battery-Inspection/battery_electrode_sheet_inspection.hdev 展示了电池电极片的检测过程。它使用子目录 images/battery_electrode 中的图片 battery_measure.png、battery_defect_01.png、...、battery_defect_5.png。
HDevelop示例程序hdevelop/Deep-Learning/AnomalyDetection/dl_anomaly_detection_global_context_inference.hdev已被扩展,以考虑存储在GC-AD DLModelHandle元数据中的图像域,例如由Deep-Learning工具导出的图像域。
HDevelop 示例程序 hdevelop/System/Parameters/query_system_parameters.hdev 现在也能查询已使用和可用许可证的信息。
新的 HDevelop 示例程序 hdevelop/halcon_basic_concepts.hdev 介绍了 HALCON 特有的图像、区域、域和元组概念。
如果没有可用的图形窗口,deep_counting_workflow 示例将无法运行。该问题已得到修复。
dev_get_system('jit_enabled') 在从 JIT 编译的函数中调用时报错。该问题已得到修复。
现在,bit_lshift 和 bit_rshift 处理 int1 类型图像的速度更快了。在 Intel 平台上,bit_lshift 和在 Arm 平台上,bit_rshift 现在快三倍。
对于英特尔平台和 "字节" 图像类型,div_image 现在快了约 50%。
Data Matrix ECC 200 和 DotCode 阅读器的解码性能得到了改进。我们的内部基准测试表明,特别是在 ARM 机器上,解码性能有所提高,预计速度可提高 15%(ECC 200)和 20%(DotCode)。在使用 x86 或 x64 处理器的机器上,解码性能也略有提高。
现在,frei_amp、prewitt_amp、robinson_amp 和 kirsch_amp 在英特尔平台上的运行速度提高了四倍。
灰度形态算子 gray_bothat、gray_closing、gray_dilation、gray_erosion、gray_opening 和 gray_tophat 与非平面结构元素一起使用时,在所有平台和所有图像类型上的速度都有所提高。速度提高了 15% 到 60%。
在基于 Arm 的平台上,灰度形态算子 gray_bothat、gray_closing、gray_dilation、gray_erosion、gray_opening 和 gray_tophat 与平面结构元素配合使用时,现在对所有图像类型的运算速度都有所提高。针对 aarch64-linux 的速度改进范围从字节图像的五倍到 uint2 的三倍,以及实数图像的两倍。
inner_circle 和shape_trans(::, 'inner_circle') 的速度提高了 215%。速度的提升取决于输入区域的大小: 对于较大的区域,速度会更快。
在支持 AVX2 的处理器上,用于字节图像和 7x7 开始的更大掩模的 mean_image 处理速度提高了 50%。
在支持 AVX2 的处理器上,用于字节图像和 7x7 开始的更大掩模的 emphasize 处理速度最多可提高 50%。
在支持 AVX2 的处理器上,用于字节图像和 7x7 开始的较大掩模的 highpass_image 现在速度提高了 40%。
现在,在支持 AVX2 的机器上,对于掩模大小大于或等于 5 的 uint2 图像,mean_image 的速度更快了。速度提高了 300%。
在 Arm 机器上,mean_image 在所有掩模大小的 uint2 图像上也更快。速度提升高达 60%。
现在,在支持 AVX2 的机器上,对于掩模大小大于或等于 5 的 uint2 图像,emphasize 的速度更快了。速度提升高达 250%。
在 Arm 机器上,对于所有掩模大小的 uint2 图像,emphasize 的速度也更快。速度提升高达 60%。
在基于 Arm 的系统上,moments_object_model_3d 现在的速度提高了 50%。
在英特尔平台上,sub_image 用于 int2 图像和 Mult=1 的速度现在更快了。此外,将字节图像添加到 uint2 图像并使用 Mult=1 和 Add=0 时,add_image 的速度提高了 40%。
在 x64 处理器上处理 int2 图像时,针对 yuv、cielab、ciexyz2 和 ciexyz3 色彩空间,trans_from_rgb 的性能得到了改进。现在,Cielab 的速度提高了 80%;yuv、ciexyz2 和 ciexyz3 的速度提高了 100%。
在英特尔平台上,针对某些色彩空间,trans_from_rgb 和 trans_to_rgb 的性能有所提高。现在,cieluv 和 cielchuv 处理字节、uint2 和 int4 图像时,trans_to_rgb 的速度提高了三倍或更多。ciexyz4 处理字节、uint2 和 int4 图像时,速度提高了 60% 或更多。lsm 对 uint2 和 int4 图像的处理速度提高了 40% 或更多。此外,从 rgb 转换到 hsv 的速度现在快了四倍。
tuple_repeat 和 tuple_repeat_elem 现在对大型元组的处理速度更快。可实现的速度提升主要取决于元组的类型和元素数量。
对于 sample_object_model_3d,参数 "SampleDistance" 已更名为 "SamplingParam"。该参数可以使用 "m"或像素为单位的距离,也可以使用采样对象的点数,具体取决于所使用的方法。新的参数名称更准确地描述了参数的行为。
请注意,这一更改会影响兼容性。 更多信息。surface_normals_object_model_3d 已得到改进。现在,对于 "三角形"方法,算子还以扩展属性"&triangle_normal_x"、"&triangle_normal_y" 和 "&triangle_normal_z" 返回每个三角形的法线。
格式选项 "generic_ascii" 扩展了 read_object_model_3d。现在,可以读取包含 3D 点信息的不同 ASCII 格式,如 .xyz、.pts 和 .ptx。新增的 HDevelop 范例 hdevelop/3D-Object-Model/Creation/read_object_model_3d_generic_ascii.hdev 用于演示使用方法。
HALCON 扩展了基于 DL 的深度三维匹配推理。
深度三维 匹配使用场景的多个校准相机视图来查找 CAD 模型的一个或多个实例的三维姿态。训练深度三维匹配模型将在未来版本的 HALCON 中提供。如需获得经过训练的深度三维匹配模型,请联系 HALCON 销售代表。
新算子 read_deep_matching_3d 和 write_deep_matching_3d 可用于深度三维匹配模型的反序列化和序列化。新算子 set_deep_matching_3d_param 和 get_deep_matching_3d_param 可用于设置和获取此类模型的参数,如相机参数和姿态。此外,新算子 apply_deep_matching_3d 可用于使用深度三维匹配模型和搜索图像执行姿态估计。
新的 HDevelop 示例
hdevelop/3D-Matching/Deep-3D-Matching/deep_3d_matching_workflow.hdev
以演示如何在 HALCON 中使用此功能。在此示例中,添加了一组新图像,它们位于名为 3d_machine_vision/multi_view 的示例图像目录中。此外,还添加了一个预训练模型,名为 hdevelop/3D-Matching/Deep-3D-Matching/pretrained_bitholder_deep_3d_matching.dm3
此外,参考手册还新增了 "三维匹配/深度三维匹配 "一章,概述了相应的工作流程。
read_object_model_3d 现在可为 step 文件提供通用参数 "split_level"。使用该参数,可以将一个输入 step 文件中的模型组件读入各种三维对象模型。
请注意,这一更改会影响兼容性。 更多信息。通用规格变更通知 (GSCN) 22-246 引入了以下新的 GS1 应用标识符,现在已支持这些标识符:
7250(出生日期),7251(出生日期和时间),7252(生物性别),7253(人的姓氏),7255(人的名字),7255(人的名字后缀),7256(人的全名),7257(人的地址),7258(婴儿出生顺序指示符),7259(婴儿姓氏)
QR 码阅读器和微型 QR 码阅读器已得到改进。通过使用更强大的方法来查找图像中的候选码,可以提高检测率,尤其是在具有多个码或高纹理背景的图像等具有挑战性的情况下。同时,在处理复杂图像时,运行时间也大大缩短。此外,点印 QR 码的解码性能也得到了提高。
候选者搜索功能通过一种对局部对比度变化更为稳健的模式进行了扩展,这种模式可通过数据码模型参数 "contrast_tolerance" 激活。
此外,数据码模型参数 "candidate_selection" 现在可用于控制候选区域的生成,这些候选区域用于(微型)QR 码符号检测。
此外,还可以使用 find_data_code_2d 参数 "symbol_search" 调整符号搜索的复杂度。不过,只有在非常特殊的情况下,即非常简单("粗略")或非常复杂("详尽")的图像时,才有必要这样做。
采用新的候选搜索方法后,现有数据码模型参数 "contrast_min" 的值对读码器性能的影响就不那么重要了,只有在极少数情况下才需要设置。此外,参数 "module_gap_max" 的默认值也针对(微型)QR 码模型进行了更改。自定义 HPeek 演示和以下 HDevelop 示例程序也作了相应调整:
使用旧版 HALCON 创建的(微型)QR 码模型仍可读取,但可能会导致不同的结果。
QR 码和微型 QR 码阅读器现在能更有效地防止误读。因此,HDevelop 示例程序 hdevelop/Identification/Data-Code/micro_qr_strict_quiet_zone.hdev 已被移除。
通用规格变更通知 (GSCN) 22-246 引入了以下新的 GS1 应用标识符,现在已支持这些标识符:
7250(出生日期),7251(出生日期和时间),7252(生物性别),7253(人的姓氏),7255(人的名字),7255(人的名字后缀),7256(人的全名),7257(人的地址),7258(婴儿出生顺序指示符),7259(婴儿姓氏)
距离损耗层现在支持 L1 距离。create_dl_layer_loss_distance 也已相应扩展。
深度学习推理模块已更名为深度学习增强模块,深度学习训练模块已更名为深度学习专业模块。有关哪些技术属于哪个模块的详细信息,请参阅安装指南(第 5.4.2 章)。
所需的许可证模块已根据新的深度学习许可证进行了调整。
get_dl_model_param 扩展了参数 "min_version"。它将返回支持给定模型所需的最小 HALCON 版本。这样,用户就可以确保其模型与较旧的 HALCON 版本兼容。
自 HALCON 23.11 以来,深度学习模型上 GPU 设备的运行时初始化耗时较长。这一问题已得到明显改善。
请注意,这一更改会影响兼容性。 更多信息。HALCON 已扩展到包括所有深度学习分类模型的分布外检测 (OOD) 功能。该功能可识别输入何时超出了训练数据的分布范围。
除了使用新的分布外检测功能扩展深度学习算子和函数外,还引入了算子 fit_dl_out_of_distribution 和函数 add_dl_out_of_distribution_data。
新增了 HDevelop 示例程序 hdevelop/Deep-Learning/Classification/detect_out_of_distribution_samples_for_classification.hdev,以展示如何利用此功能建立分类 DL 模型。
参考手册 "深度学习" > "分类" 条目已扩展,说明了如何拟合分类模型进行分布外检测。
对程序 evaluate_dl_model 进行了扩展,以便使用多种评估指标对分布外检测功能进行评估。
新增 LUT "batlow" 和 "invers_batlow"。这些 LUT 在感知上是统一的,并且对色差友好。
train_generic_shape_model 现在提供了一种通过扩展参数估计来确定搜索参数值的新方法。给定具有代表性的匹配样本后,估算结果将取代 "greediness" 和 "min_score"。因此,set_generic_shape_model_param 扩展了一个名为 "扩展参数估计 "的新参数。新方法可以通过 "per_level "值启用。
因此,通过将新参数设置为 "线性" 值,现在可以启用 "min_score" 的扩展参数估计。对 HDevelop 示例 train_generic_shape_model_sample_workflow.hdev 进行了调整。
由于估算替换了 "greediness" 和 "min_score",因此无法通过 get_generic_shape_model_param 获取结果值。
对于 train_generic_shape_model,修改了通过扩展参数估计方法 "linear_estimate" 确定 "min_score" 的方法。改进了样本中接受匹配的标准。这可能会改变极少数情况下的行为。
如果样本中没有匹配项或匹配项过多,算子现在也会返回错误 8684("扩展参数估计失败")。
HPGetPPar 函数的 "val "参数从 Hcpar* H_RESTRICT 更改为 Hcpar const* H_RESTRICT*。
请注意,这一更改会影响兼容性。 更多信息。HALCON 扩展了一个算子 tuple_str_distance,用于计算字符串之间的编辑距离。
新算子 test_region_points 可用于查询一个或多个区域中包含哪些点。与 test_region_point 不同的是,每个测试点都会单独返回测试结果。算子支持参数广播,可以是单个区域和多个点,也可以是多个区域和单个点,还可以是多个区域和多个点。
get_system_info 现在支持 get_system 支持的所有参数。
以下算子现在支持参数广播,长度为 1 的输入元组会自动扩展并用于所有创建的元素: area_intersection_rectangle2、 distance_pr、 distance_lr、 distance_sr、 distance_sc、 distance_lc、 distance_cc_min、 distance_cc_min_points 和 distance_cc
请注意,这一更改会影响兼容性。 更多信息。控制元组数据类型现在支持写入时复制机制。这提高了复制或访问元组元素时的处理速度,尤其是在处理长元组时。因此,如果包含长元组,字典的处理速度就会加快。
对 HALCON 字典键表的访问现在是线程安全的。详情请参见 create_dict 的参考文档。
intersect_plane_object_model_3d 在 "Plane" 参数类型错误时不会报错。该问题已得到修复。
convex_hull_object_model_3d、 triangulate_object_model_3d、 intersect_plane_object_model_3d、 register_object_model_3d_pair 和 register_object_model_3d_global在处理圆柱体或平面类型的无限基元时表现不一致。根据输入数据的不同,算子会返回不同的错误(9203、9511、9514、9515、9517)或不正确的结果。这个问题已经解决。现在,对于无限基元,算子会返回错误 9526("三维对象模型中的基元没有扩展数据")。
请注意,这一更改会影响兼容性。 更多信息。如果使用相对采样距离较小的复杂几何对象,在极少数情况下 create_deformable_surface_model 可能会崩溃。该问题已得到修复。
Aztec 码阅读器在 DecodedDataStrings 和 get_data_code_2d_results 获得的 "decoded_data" 中的第一个位置返回 FNC1。此问题已得到修复。
在使用 trans_from_rgb 或 trans_to_rgb 从 "cielab" 色彩空间转换字节图像或将其转换为 "cielab" 色彩空间时,由于值缩放错误,a 和 b 通道的处理略有不正确。该问题已得到修复。
在极少数情况下,如果将 "finder_pattern_tolerance" 设置为 "any" 或 "high",并将 "mirrored" 设置为 "any",则通过带有 "module_1_rois" 或 "module_0_rois" 的 get_data_code_2d_objects 获得的模块会被镜像。该问题已得到修复。
get_data_code_2d_results 返回的微型 QR 码原始编码数据没有纠错字。这一问题已得到解决。此外,对于微型 QR 码,get_data_code_2d_results 现在会以打包字节形式返回原始编码数据和纠错数据。
微型 QR 码阅读器在极少数情况下会崩溃。该问题已得到修复。
在极少数情况下,find_data_code_2d 会识别两次 PDF417 和 Aztec 符号。该问题已得到修复。
当调用 find_data_code_2d 并将参数 "train" 设置为 "all" 时,QR 码参数 "position_pattern_min" 被训练,尽管该参数未被记录为可训练参数。此外,query_data_code_2d_params 也没有在 "trained" 参数列表中返回该参数。这些问题已得到修复。现在,"position_pattern_min" 已被记录为 QR 码模型的可训练参数,可以作为单个参数或与其他参数(包括 "all")一起训练。
Aztec 代码阅读器在 DecodedDataStrings 和 get_data_code_2d_results 获得的 "decoded_data" 中的第一个位置返回 FNC1。此问题已得到修复。
query_data_code_2d_params 返回的参数名称已不再使用。该问题已得到修复。
该函数返回 HALCON 在读取图像(例如,使用 read_image 或 read_sequence)时将搜索的目录。这可能包括但不限于 HALCONIMAGES 环境变量和本地目录的内容。
示例程序现在使用 get_image_dir,而不是使用示例目录手动构建路径。
如果所有给定轴的维度都已为 1,则缩减层会产生错误。这个问题已得到修复。在这种特殊情况下,缩减层的行为与恒等层相同。
query_available_dl_devices 在内部同时初始化了两个 HALCON 运行时(CPU 和 GPU),即使通用参数中只请求了其中一个。这种行为已得到优化。
包含缩放层的模型在与特定输入大小相结合时,可能会在优化过程中失败。受影响的预训练模型有:
该问题已得到修复。
使用 Hailo 设备时,无法在优化模型上设置某些模型参数。现在,在 Hailo 设备上调用 optimize_dl_model_for_inference 后即可调整支持的参数,而无需重新运行优化。
此外,在调用 optimize_dl_model_for_inference 之后,有可能更改类的数量,从而导致推理过程中出现错误。该问题已得到修复。
read_deep_ocr、read_deep_counting_model 和 deserialize_handle 在传递错误的句柄类型或损坏的句柄类型时,可能会出现意外行为,因为在反序列化过程中没有对 DeepOCR 和 DeepCounting 句柄进行句柄类型检查。这个问题已得到修复。现在,如果句柄类型与预期类型不匹配,就会引发错误。
对于将 "max_overlap" 或 "max_overlap_class_agnostic" 设置为 0 的 DL 对象检测模型,即使其他方框没有重叠,每个类别或每幅图像也只能分别预测出一个方框。这一问题已得到修复。
请注意,这一更改会影响兼容性。 更多信息。深度 OCR 识别训练的增强 "rotate_range" 在 augment_dl_samples 中引发异常。该问题已得到修复。
改进了在 set_dl_model_param 中使用参数 "type" 时可能出现的错误信息,使其更具描述性。
当选项 "convert_json_arrays_to" 设置为 "tuple" 或 "tuple_if_possible" 时,json_to_dict 和 read_dict 无法将至少包含一个 JSON 对象的 JSON 数组转换为包含字典的元组。该问题已得到修复。
segment_image_mser 可能会在某些 "MinArea" 值的情况下返回与内存管理相关的错误。该问题已得到修复。
在并行执行中,如果在滤波器的值上添加后缀"_junctions",edges_sub_pix 可能会导致非确定性结果。此外,在极少数情况下,返回的边可能是重复的,即在结果中出现的次数多于一次。这些问题已得到修复。
在训练Aztec码阅读器时,find_data_code_2d 不接受 "contrast" 作为要训练的参数,而是希望接受 "contrast_min"。这个问题已经解决,现在两个值都可以接受。
在将 "border_shape_model" 设置为 "true" 并允许变形的情况下,当在最后一层未找到匹配的图形时,ffind_generic_shape_model、 find_shape_model、 find_shape_models、 find_scaled_shape_model、 find_scaled_shape_models、 find_aniso_shape_model 和 find_aniso_shape_models 会出现错误偏移。这个问题可能导致错误的匹配坐标,现已得到修复。
determine_shape_model_params 和 create_scaled_shape_model会返回给定角度的不同估计缩放值。该问题已得到修复。
在空图像上创建模型时,find_ncc_model 和 find_ncc_models 会崩溃。这个问题已经解决。现在,它们与 find_shape_model 和 find_shape_models 的行为一致,都会返回错误信息。
find_shape_model、find_scaled_shape_model 和 find_aniso_shape_model 参数 "NumLevels" 和 "NumMatches" 预期为整数,但也接受双精度,这可能隐藏了错误的参数用法。该问题已得到修复。
请注意,这一更改会影响兼容性。 更多信息。如果区域包含负坐标,GenParamName 设为 "clutter_region" 的 set_generic_shape_model_object 不会引发错误,而且文档中也没有给出明确的解决方法。该问题已得到修复。set_generic_shape_model_object 现在会返回错误 8519("杂波区域包含负坐标")。
find_shape_model、 find_shape_models、 find_scaled_shape_model、 find_scaled_shape_models、 find_aniso_shape_model 和 find_aniso_shape_models 没有为所有弦分配足够的内存,导致在某些情况下出现错误。该问题已得到修复。
当使用 binocular_disparity 处理非常大的图像,并结合 memory_allocator=mimalloc 和高内存使用率时,可能会因内存耗尽而导致崩溃。该问题已得到修复。
protect_ocr_trainf、read_ocr_trainf_names_protected 以及读取加密模型时的 read_dl_model 都不是线程安全的。这个问题已得到修复。
在调用 image_to_memory_block 时,如果使用的是不支持的格式,则会创建一个空的内存块,并且不会出现错误。该问题已得到修复。
在 HDevelop 中使用 timed_wait_condition 时,超时时不会重新锁定互斥。该问题已得到修复。
如果输入区域包含大量小孔,inner_circle 会返回错误 3513("内部错误:弦数对于 num_max 而言过大")。这也影响了具有相应特征的 region_features 和 select_shape。该问题已得到修复。
在关闭线程池的情况下,尝试运行已打开自动算子并行化的算子会导致崩溃。该问题已得到修复。
当所有输入均为全域图像且图像尺寸不相等时,HALCON 会为具有多个输入图像的算子初始化输出图像。这一问题已得到修复。
当以空元组作为 "DLDatasetInfo" 调用函数 dev_display_dl_data 并请求显示分类基本事实或结果时,该函数会返回错误。 这个问题已经解决。现在,如果传入一个空元组作为 "DLDatasetInfo",函数的行为与文档中描述的一样。
HALCON 变量检查工具栏现在可适应所使用的 Visual Studio 主题。此外,使用的图标也已重新设计。
有关新接口版本和新支持的图像采集设备的最新信息可在 MVTec 的网络服务器 上找到。请参阅各个 图像采集接口 文档中的发行说明,了解有关改进、错误修复或是否需要相应设备驱动程序新版本的信息。
有关新接口版本和新支持的数字 I/O 接口的最新信息,可在 MVTec 的网络服务器 上找到。有关改进、错误修复或是否需要相应设备驱动程序新版本的信息,请参阅各 数字输入/输出接口 文档中的发布说明。
手册 "基于 Arm 平台的 HALCON" 已进行扩展,包含了有关嵌入式评估许可证以及如何在 Arm 平台上安装的信息。
安装指南没有提及包含许可证加密狗硬件支持的 SOM 软件包,而是提供了过时的手册说明。这一问题已得到解决。
解决方案指南 III-B 二维测量引用了一个过时的位置,以获取有关二维计量的更多信息。该问题已得到解决。
解决方案指南 III-B 二维测量中提到了一个关于形状模型区域中心的错误算子。这个问题已经解决。
德文参考手册中的 binocular_disparity_ms 条目缺少描述参数值 "num_levels" 的部分。我们已添加了这部分内容,并对所有语言的算子参考进行了修订和重组。
遗留算子的参考手册条目现在包含 HALCON 版本,如果已计划删除,则将与该版本一起删除。
在 guided_filter 的参考手册条目中,有一个示例与显示的图像不匹配。该问题已得到解决。
参考手册中的 set_metrology_object_param 条目未提及参数 "num_measures" 在圆弧和椭圆情况下的最小值,而仅提及闭合圆和椭圆的最小值。这一问题已得到解决。
参考手册中的 trans_from_rgb 条目在 cieluv 和 cielchuv 色彩空间中的 v' 公式中存在错误。此外,ihs 色彩空间的等式也容易产生歧义。这些问题已得到解决。
参考手册中的 trans_from_rgb 和 trans_to_rgb 条目在给出的公式和数值范围中包含若干错误。该问题已得到修正。
参考手册中的 trans_from_rgb 条目对色彩空间 "ciexyz2" 的输出值范围的缩放不清楚。这一问题已得到解决。
MVTec 学院 的各种互动在线课程涵盖许多主题。在手册、解决方案指南和算子参考资料中,只要合适,就会添加 MVTec 学院相关课程的链接。
HALCON 安装程序中包含一个过时的 somctl 版本,在 Windows 系统上,该版本导致无法通过控制面板卸载 HALCON。由于新版本的 SOM 不再需要在 HALCON 安装中使用 somctl,因此后者已从安装中完全删除。
自 HALCON 24.11 起,armv7-linux 平台已被宣布为标准 HALCON 平台。
在 Windows 上使用浮动许可证时,HALCON 现在会启动一个看门狗进程,以确保在 HALCON 进程终止时立即返回许可证。
HALCON Progress 和 HALCON Steady 版本现在共享相同的二进制文件,称为 HALCON 24.11 Progress-Steady。
HALCON Progress 版本的许可证现在也可用于相应的 HALCON Steady 版本。
所需的许可证模块已根据新的深度学习许可证进行了调整。
新增许可证分析工具 hinfo,可在 HALCON 安装的 bin 文件夹中找到。该工具会分析安装的 HALCON 版本所能找到的所有许可证,并返回许可证的特征和有效性信息。
已添加参数 "supported_editions" 和 "licensed_product_edition" 作为 get_system 和 get_system_info 的参数。此外,参数 "edition" 和 "product_edition" 现已废弃。
第三方库 libjpeg-turbo 已更新至 3.0.3 版。
第三方库 LibTIFF 已更新至 4.7.0 版。
用于 HALCON 可视化的 Skia 库已更新至里程碑 124。
第三方库 JasPer 已更新至 4.2.4 版。
第三方库 libpng 已更新至 1.6.43 版。
第三方库 PCRE2 已更新至 10.44 版。
第三方库 zlib 已更新至 1.3.1 版。
第三方库 Apache Thrift 已更新至 0.20.0 版。
第三方库 libxml2 已更新至 2.13.2 版。
可选的第三方库 libcurl 已更新至 8.10.1 版。
第三方库 OpenSSL 已更新为长期支持系列 OpenSSL 3.0。此前,HALCON 22.11 使用的是 OpenSSL 1.1,而 HALCON 24.05 使用的是 OpenSSL 3.2。
第三方程序库 libprotobuf 已更新至 3.21.12 版。
第三方库 onnx 已更新至 1.16.2 版。
请点击 此链接 了解 HALCON 以前版本的变化。