本文件提供 2024 年 11 月发布的 MVTec HALCON 24.11.1.0 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 23.05 为客户提供的深度计数功能可用于快速、稳健地计数大量物体并检测其位置。与现有的机器视觉方法相比,基于深度学习的技术具有显著优势: 由于只需对极少数物体进行标注和训练--这两个步骤都可以在 HALCON 中轻松完成,因此可以非常快速地部署该功能。即使是高反射和无定形材料的物体,该技术也能提供可靠的结果。利用深度计数功能,可以对玻璃瓶、树干或食物等大量物体进行计数。
深度 OCR 能以非常稳健的方式读取文本,甚至不受文本方向和字体的影响。为此,该技术首先检测图像中的相关文本,然后进行读取。有了 HALCON 23.05,现在还可以通过使用特定应用图像重新训练预训练网络来微调文本检测。这将提供更强大的结果,并开辟新的应用可能性。例如:检测任意印刷类型或未知字符类型的文本,以及在嘈杂、对比度低的环境中提高可读性。
HALCON 24.05 引入了形状匹配扩展参数估计的首次迭代。凭借亚像素精度,即使在最具挑战性的情况下,"形状匹配" 也能稳健、准确地实时找到目标。有了扩展参数估计,手动参数调整很快就会成为过去。
现在,用户可以使用多张注释图像,通过自动参数调整,在保持稳健性的同时,轻松优化最高在线速度。因此,即使没有专业知识,用户也能更快地实现形状匹配应用。
形状匹配从未如此简单!
HALCON 24.05 对 GS1 DataBar Expanded Stacked 条码阅读器进行了改进。根据不同的应用,客户可以期待解码率的显著提高。这将特别有利于物流、零售和制造等行业,因为堆叠条形码是跟踪和追踪货物的重要手段。
从 24.05 版开始,HALCON 支持 STEP(产品数据交换标准)文件格式,这是三维 CAD 数据的行业标准。客户现在可以将 STEP CAD 数据直接无缝加载到 HALCON 三维对象模型中,而无需任何中间步骤或转换。STEP 格式受大多数常见 CAD 程序的支持,提高了互操作性和效率,因为用于三维匹配的模型可以直接从 CAD 软件中的规划数据中提取。
在发布 HALCON 24.05 的同时,还将发布新版 OpenVINO 工具包 AI² 插件。该更新使用最新的英特尔® OpenVINO™ 工具包 LTS 版本,确保与最新的英特尔硬件兼容,并提高深度学习应用的推理性能。
值得一提的是,新版插件增强了对英特尔第 13 代酷睿处理器的支持,从而提高了推理性能。此外,客户现在还可以利用英特尔的独立显卡进行推理,在为其应用选择合适的硬件方面提供了更大的灵活性。
HALCON 24.05 还针对各种核心技术进行了多项性能优化。例如,在支持 AVX2 的英特尔 CPU 上,使用向量字段对字节图像进行解压缩的速度提高了 285%。算子 map_image 的速度也提高了 25%。
此外,HALCON 24.05 还对许多算子进行了调整,以解决英特尔解决 "Downfall "安全漏洞后对性能造成的影响。
随着该版本的发布,HALCON 的 GigE Vision 接口支持 RoCEv2 网络协议,从而提高了图像传输性能。
HALCON Progress 现在与 HALCON Steady 版本完全兼容。Progress 用户现在可以与 Steady 用户在同一项目上进行协作。此外,HALCON Progress 用户将获得与 HALCON Steady 用户相同的维护更新。今后,从 Steady 切换到 Progress 只需交换许可证文件即可。
三维抓取点检测可用于稳健地检测任何物体上适合用吸力抓取的表面。在 HALCON 23.05 中,现在可以使用特定应用的图像数据重新训练预训练模型。因此,可抓取表面的识别能力更强。必要的标记可通过 MVTec 深度学习工具轻松高效地完成。
在 HALCON 扩展包的帮助下,可以集成外部编程语言。客户的优势:因此,HALCON 可以涵盖纯图像处理以外的功能。在 HALCON 23.05 中,通过简易扩展接口,外部代码的集成变得更加容易。这使得用户只需几步就能在 HDevelop 和 HDevEngine 中使用自己用 .NET 代码编写的函数,同时受益于 .NET 框架提供的广泛功能。甚至可以使用 HALCON/.NET 语言接口中已知的数据类型和 HALCON 算子。这增加了 HALCON 的灵活性和应用可能性。
在新版 HALCON 中,客户现在可以使用多标签分类,这是一种新的深度学习方法,可以在单张图像中检测出多个不同的类别。这些类别可以包括不同的缺陷、物体以及结构或颜色等属性。例如,在实践中,这种方法可以检测图像中是否存在不同类型的缺陷,并对不同的可能缺陷类型进行更详细的分类。与对象检测或实例分割相比,这种深度学习方法的处理速度更快,标注工作量也小得多。
在 HALCON 23.11 中,对现有方法和技术进行了多项改进:
全局上下文异常检测是一种用于检测复杂异常的方法,其底层神经网络已得到进一步优化。这在不增加硬件要求或执行时间的情况下提高了异常检测的准确性。
此外,HALCON 现在还采用了最新的 NVIDIA® CUDA® 工具包。这为用户提供了从更多人工智能加速器中进行选择的机会。例如,现在还支持新的英伟达™(NVIDIA®)Jetson OrinTM 模块。
最后,HALCON 23.11 对 HALCON 核心技术进行了多项性能优化。例如,模板匹配算子(大型模板的 NCC 匹配)在基于 Arm 的系统上的运行速度提高了 80%。
所有 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 宏。
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 )。
更多信息。函数 "dev_display_dl_data" 中 "gripping_map" 的显示颜色可通过参数 "heatmap_color_scheme" 进行更改。这一行为已被更改。现在,参数 "heatmap_color_scheme" 不再影响显示的抓取图的颜色。相反,可以使用参数 "gripping_point_map_color" 和 "gripping_point_background_color"来更改抓取图的颜色。
更多信息。如果 "saturation_variation" 增强方法已被用作 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 现在可能会在 "检测" 和 "自动" 模式下产生不同的结果。现有应用程序应根据新模型测试参数设置。在新版 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 "模型进行的训练结果可能与之前的版本略有不同。
更多信息。函数/general/structured_light_camera_screen_sync.hdvp 和 procedures/general/structured_light_inspect_segmentation.hdvp 已移至新程序库 procedures/general/structured_light.hdpl。
更多信息。affine_trans_object_model_3d 不再复制基元。 affine_trans_object_model_3d 和 rigid_trans_object_model_3d 不再复制用于三维距离计算的预计算数据结构。
更多信息。为了优化在 x64-linux 和 x64-win64 架构上的性能,cuDNN 现在可以在线选择所使用的卷积算法。因此,与之前的 HALCON 版本相比,运行时初始化更加耗时,而且结果并不总是可重复的。
要在相同的 GPU 上重现相同的结果,可以将系统设置 "cudnn_deterministic" 设为 "true",以牺牲性能,或者使用 TensorRT AI² 接口来优化模型(如适用)。
新版 cuDNN 会在首次使用后创建初始 GPU 内存缓存,该缓存会一直存在,直到进程结束。初始缓存的大小会根据所使用的 GPU 硬件及其实际使用情况而变化。
内存块的处理也已扩展到支持空内存块。任何使用大小为零的内存块来表示错误的应用程序都应进行相应调整。
更多信息。对于 22.11 之后(包括 22.11)的 HALCON 版本,通过 get_generic_shape_model_param 获取的用户设置参数值(即以后缀"_param" 查询的参数)可能有所不同。此外,train_generic_shape_model 得出的形状模型也可能不同。
为使 get_generic_shape_model_param 和 train_generic_shape_model 在读取用 21.05 之前版本的 HALCON 编写的形状模型后保持一致的行为,用户必须将受影响的参数设置为形状模型中编写的值。例如,必须首先使用 get_generic_shape_model_param(ModelID,
'num_levels', NumLevels) 查询参数 num_levels,然后使用 set_generic_shape_model_param(ModelID,
'num_levels', NumLevels) 设置参数NumLevelsParam,以实现从 get_generic_shape_model_param(ModelID,
'num_levels_param', NumLevelsParam)得到与 NumLevels 相同的值。
对于通过 create_shape_model、create_shape_model_xld、create_scaled_shape_model、create_scaled_shape_model_xld、create_aniso_shape_model 或 create_aniso_shape_model_xld 创建的形状模型,train_generic_shape_model_param 的行为在处理 "min_contrast" 和 "contrast" 时可能会有所不同。
更多信息。函数/general/structured_light_camera_screen_sync.hdvp 和 procedures/general/structured_light_inspect_segmentation.hdvp 已移至新程序库 procedures/general/structured_light.hdpl。
更多信息。affine_trans_object_model_3d 不再复制基元。 affine_trans_object_model_3d 和 rigid_trans_object_model_3d 不再复制用于三维距离计算的预计算数据结构。
更多信息。为了优化在 x64-linux 和 x64-win64 架构上的性能,cuDNN 现在可以在线选择所使用的卷积算法。因此,与之前的 HALCON 版本相比,运行时初始化更加耗时,而且结果并不总是可重复的。
要在相同的 GPU 上重现相同的结果,可以将系统设置 "cudnn_deterministic" 设为 "true",以牺牲性能,或者使用 TensorRT AI² 接口来优化模型(如适用)。
新版 cuDNN 会在首次使用后创建初始 GPU 内存缓存,该缓存会一直存在,直到进程结束。初始缓存的大小会根据所使用的 GPU 硬件及其实际使用情况而变化。
内存块的处理也已扩展到支持空内存块。任何使用大小为零的内存块来表示错误的应用程序都应进行相应调整。
更多信息。对于 22.11 之后(包括 22.11)的 HALCON 版本,通过 get_generic_shape_model_param 获取的用户设置参数值(即以后缀"_param" 查询的参数)可能有所不同。此外,train_generic_shape_model 得出的形状模型也可能不同。
为使 get_generic_shape_model_param 和 train_generic_shape_model 在读取用 21.05 之前版本的 HALCON 编写的形状模型后保持一致的行为,用户必须将受影响的参数设置为形状模型中编写的值。例如,必须首先使用 get_generic_shape_model_param(ModelID,
'num_levels', NumLevels) 查询参数 num_levels,然后使用 set_generic_shape_model_param(ModelID,
'num_levels', NumLevels)设置参数NumLevelsParam,以实现从 get_generic_shape_model_param(ModelID,
'num_levels_param', NumLevelsParam) 得到与 NumLevels 相同的值。
对于通过 create_shape_model、 create_shape_model_xld、 create_scaled_shape_model、 create_scaled_shape_model_xld、 create_aniso_shape_model 或 create_aniso_shape_model_xld 创建的形状模型,train_generic_shape_model_param 的行为在处理 "min_contrast" 和 "contrast" 时可能会有所不同。
更多信息已从 HALCON 中移除遗留的 gnuplot 算子。
更多信息。在固定版本和 HAILO AI² Plugin 中使用 optimize_dl_model_for_inference 对模型进行校准后,只能由包含错误修复的 HALCON 版本进行推断。错误修正与所有与给定 HALCON 版本兼容的 HAILO AI² 插件兼容。
更多信息。由于数值不稳定性,与 aniso_scale_change_restriction 相比的计算值已被修正,这可能导致 find_local_deformable_model、find_planar_calib_deformable_model 和 find_planar_uncalib_deformable_model 得到的结果不同。
更多信息。一般来说,HALCON 24.11.1.0 Steady、HALCON 24.05 Progress 和 HALCON 20.11 Steady 图像采集接口与库兼容。
HALCON 24.11.1.0 Steady 仅包含可用图像采集接口的子集。更多信息,参见 图像采集接口的参考文档 。您可以从我们的 网络服务器 下载其他接口。
一般来说,HALCON 24.11.1.0 Steady、HALCON 24.05 Progress 和 HALCON 20.11 Steady 数字输入/输出接口与库兼容。
HALCON 24.11.1.0 Steady 仅包含可用数字输入/输出接口的子集。更多信息,参见 输入/输出接口参考文档 。您可以从我们的 网络服务器 下载其他接口。
请重新生成使用 HALCON 24.05 Progress 开发的扩展包。
对于 gray_histo、gray_histo_abs 和 gray_histo_range,输入参数 "Regions" 已更名为 "Region",这将在调用关键字参数时破坏兼容性。
更多信息。以下功能可能会在未来的主要版本中停止使用:
有关如何替换遗留算子的详细信息,请参见参考手册条目。
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 版开始,该功能将不再提供。
正如之前发行的版本所宣布的,MVTec 在发布 HALCON 23.05 后停止了对 macOS 系统的支持。 我们建议今后的应用程序改用 Windows 或 Linux 平台。
使用函数 dev_display_dl_data 对三维抓取点数据进行三维可视化,并将 "point_cloud" 值作为 KeysForDisplay 参数的程序将不再工作。必须调用函数 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 将不再在该平台和操作系统上进行测试。支持渠道将不再处理该平台的具体问题。
HALCON 24.11.1.0 Steady 已针对 x64-win64 平台版本进行了编译,适用于 Windows 10(x64 版本)、11、Windows Server 2016、2019、2022(英特尔 64 或 AMD 64,带 SSE2(AVX2 调度)处理器)。
HALCON 24.11.1.0 Progress-Steady 已针对以下 Linux 平台版本进行了编译:
有关不同应用二进制接口的详细系统要求,请参阅安装指南。
HALCON 24.11.1.0 Steady 中的更改与 HALCON 24.05 有关。
现在可以通过 HDevelop 的开始对话框访问 MVTec 学院。
改进了与多个 HDevelop 的协同工作。在 HDevelop.ini 中不再每次关闭时都存储部件的坐标和尺寸属性,现在只有在关闭 HDevelop 后才会存储。
改进了 HDevelop 的程序窗口组合框。函数的分组方式有了进一步的改变,现在可以搜索函数了。
如果您同意与我们共享匿名数据,您可能会收到有关我们最新或即将推出的产品的更多信息。
CTRL + W 会关闭整个程序窗口,无论是否有打开的标签页。现在,当前标签页会被关闭,如果没有其他标签页打开,CTRL + W 就会关闭程序窗口。
改进了窗口菜单的可用性。"打开画布" 选项现在有了专用图标。
改进了 HDevelop 的可用性。现在,按下 Ctrl 键即可隐藏停靠下拉指示器。这样,就可以移动窗口并防止其停靠。
现在可以使用 "参数设置" > "用户接口" > "程序窗口 "下提供的选项,在程序编辑器中显示空白。
The usability of HDevelop has been improved by a mechanism that informs the user about modified program, procedure, or procedure library files, and offers to reload the modified files. This mechanism is implemented twofold:HDevelop 的可用性已通过一种机制得到改善,该机制会通知用户已修改的程序、函数或函数库文件,并提供重新加载已修改文件的服务。这种机制有两个方面:
使用哪种实现方式将被持久保存,并可在 HDevelop 的常规选项中进行选择。也可以完全停用文件跟踪功能。
dev_get_system 现在还支持参数 "call_stack",可用于返回当前的调用栈。
字典查找表达式现在支持多键(0-N)。更多信息,请参阅 HDevelop 用户指南。
请注意,这一更改会影响兼容性。 更多信息。在校准助手中,用户定义的校准不能重新激活先前排除的参数。该问题已得到修复。
通过命令行使用 HDevelop,例如进行 hdevelop -convert 操作时,无法正确返回浮动许可证。该问题已得到修复。
当背景颜色不是常数值字面时,dev_open_window 的 C 导出不起作用。该问题已得到修复。
无法在 HDevelop 的变量检查窗口中添加新的元组元素。该问题已得到修复。
如果有多个图形窗口,HDevelop 的灰色直方图无法显示正确的直方图数据。该问题已得到修复。
在某些情况下,即使版本是最新的,HDevelop 也会通知有新的软件更新。这个问题已经解决。
dev_open_tool 在打开工具时没有考虑坐标原点。工具始终是相对于主屏幕打开的。现在,dev_open_tool 在打开工具时会考虑所选的原点。
HDevelop 显示自动完成建议列表的频率过高,导致编辑不方便。如果光标在算子内,用户键入了内容,建议列表就会显示。该问题已得到修复。
重新启动应用程序后,在 HDevelop 中设置的自定义颜色会被重置。该问题已得到修复。
如果未安装软件包 开发 > 第三方库 libcrypto 和 libssl ,HDevelop News 可能无法运行。这个问题已经解决。现在,选择 HDevelop 时默认已安装该软件包。
当图形用户界面语言与操作系统系统语言不一致时,带有多个元组元素的变量信息可能会在变量窗口工具提示或状态栏中显示为乱码。该问题已得到修复。
图形窗口在最大化和还原时似乎被推到画布的左上角。这一问题已得到修复。
快速导航窗口中标签页的最后一列标题在调整窗口大小时显示空白。该问题已得到修复。
在深色主题中,函数检查窗口 x 轴和 y 轴的标签不可见。该问题已得到修复。
移除功能后,功能检查窗口标题未正确更新。该问题已得到修复。
在显示小图像时,图像在调整大小时无法正确贴合窗口。要么显示过大,部分内容被剪切,要么显示过小,导致出现黑色边框。该问题已得到修复。
主题更改后,自动完成的工具提示颜色不正确。该问题已得到修复。
如果缩放系数达到最大值,则通过"-"按钮缩放不起作用。该问题已得到修复。
对象模型三维检查窗口中无法正确显示 "中心" 和 "边框" 的多个值。该问题已得到修复。
程序编辑器中的自动完成速度慢。这一问题已得到解决。
按下左右箭头键后,自动完成功能被隐藏。该问题已得到修复。
二维图形窗口中无法立即显示二维图形中更新的图标变量。这一问题已得到解决。现在,一旦用户点击 "句柄检查" 小工具中的图标变量,图形窗口就会更新。
当从Windows连接到Linux时,在某些罕见的情况下,HDevelop可能会丢失焦点。这可能导致编辑 HDevelop 程序时触发不需要的快捷方式或丢失字符。该问题已得到修复。
在使用默认参数时,dev_open_tool 算子没有设置正确的工具几何形状。该问题已得到修复。
在极少数情况下,显示 "附加到进程" 对话框需要很长时间。这个问题已经解决。
当(暂时)失去与文件系统的连接时,再加上HDevelop的应用程序文件跟踪,HDevelop可能会变得反应迟钝。这个问题已经解决。现在,HDevelop会报告问题,并主动停止应用文件跟踪。
在某些情况下,HDevelop 的文件跟踪机制可能会导致崩溃。当一个未加载的函数(例如,由于文件名无效)被修改,而 HDevelop 随后又试图重新加载它时,就会发生崩溃。该问题已得到修复。
在复制包含本地函数调用的代码时,可能会询问用户是否也要粘贴本地函数。这一问题已得到解决。
HDevelop 文件跟踪未同步签名更改。该问题已得到修复。
在 HDevelop 上拖放 HDVP 和 HDPL 文件不起作用。这个问题已经解决。
当中断一个长期运行的算子时,编辑一个正在运行的程序可能会导致关于程序损坏的误报警告。这一问题已得到修复。
dev_get_system 的自动完成功能未提供 "call_stack" 参数。该问题已得到修复。
在某些情况下,HDevelops 程序窗口中的查找和替换操作会导致错误的高亮显示。该问题已得到修复。
深度 OCR 识别训练的增强 "rotate_range" 在 augment_dl_samples 中出现异常。该问题已得到修复。
在程序接口对话框中重复使用现有参数名称会导致重命名无效。该问题已得到修复。
使用字典或向量访问表达式创建函数时,并不总能确定代码的正确输入参数。该问题已得到修复。
函数 read_dl_dataset_ocr_recognition 没有使用深度学习工具 (DLT) 的深度 OCR 项目中可定义的其他文本类。该问题已得到修复。
在 HDevelop 中重置程序(如按 F2 键)时,计算设备没有停用。 该问题已得到修复。
在尝试使用 TAB 键自动完成非活动行时,HDevelop 崩溃。 该问题已得到修复。
当开始对话框打开时,如果取消加载程序,HDevelop 可能会崩溃。 该问题已得到修复。
通过命令行使用 HDevelop,例如进行 hdevelop -convert 操作时,无法正确返回浮动许可证。该问题已得到修复。
当自动完成工具提示在两个显示器之间显示时,程序窗口崩溃,一个显示器的缩放比例为 125%,另一个显示器的缩放比例为 150%。 该问题已得到修复。
自动完成功能有时会在不适用的地方建议使用帧捕获器接口。 该问题已得到修复。
在选中 "显示底层错误" 选项("参数选择" > "一般属性" > "高级用户")后,打开 "读取图像"对话框会出现错误。此外,从 Linux shell 以映像作为参数打开 HDevelop 时也会出现低级错误。该问题已得到修复。
有可能编写的代码会打开一个非常大的窗口。这可能会导致崩溃。该问题已得到修复。 现在,窗口的最大宽度和高度限制为 2^15。
在某些罕见的情况下,当打开用于选择特定图标对象的检查组件时,HDevelop 会崩溃,而显示的变量会被正在运行的程序修改。该问题已得到修复。
在使用 HDevelop.ini 文件时,如果基于 JSON 的条目 "MainWndDockingLayout_Canvas" 在布局部分中有许多子对象,HDevelop 要花很长时间才能加载该布局。该问题已得到修复。
在极少数情况下,程序窗口可能会进入不一致状态,导致行为和着色不稳定,以及 HDEV/HDVP/HDPL 文件中当前编辑的函数体损坏。虽然这一问题的根本原因尚未确定,但已实施了几项缓解修复措施,以降低此类事件发生的概率和影响。其中,一个涉及使用打开的句柄检查组件键入的潜在问题已得到修复。此外,现在还能对编辑器的内部不一致状态进行早期防御检测,从而在潜在损坏之前保存当前编辑器内容的纯文本备份副本。
新的 HDevelop 示例 hdevelop/Applications/Battery-Inspection/detect_3d_defects_on_battery_surface.hdev 演示了如何在圆柱形电池的展开表面发现三维缺陷。
新的HDevelop示例hdevelop/Applications/Battery-Inspection/inspect_and_identify_battery_cells.hdev演示了如何在两个并行线程中使用基于形状的匹配来检测电池单元,并使用数据矩阵ECC 200码读取来识别电池单元。
新的 HDevelop 示例 hdevelop/Classification/k-Nearest-Neighbor/classify_pills_hyperspectral.hdev 演示了如何使用不同的分类器来评估高光谱图像。
新的 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 示例 locate_car_door、locate_engine_parts 和 create_planar_calib_deformable_model 在解释注释中提到了错误的坐标系。该问题已得到修复。
HDevelop 示例程序 hdevelop/Calibration/Multi-View/calibrate_cameras_monocular.hdev 在极少数情况下会出现错误。该问题已得到修复。
hdevelop/Tools/Geometry/angle_lx.hdev 的示例描述有误:计算的是直线与水平轴(而不是垂直轴)之间的角度。该问题已得到修复。
如果没有可用的图形窗口,deep_counting_workflow 示例将无法运行。 该问题已得到修复。
check_calib_image_quality.hdev 示例有时会错误显示标定板的坐标系。 该问题已得到修复。
"导出程序"不再导出 MacOS/Apple (C/C++) 专用代码。
在某些情况下,调用返回图标值的算子可能会导致 JIT 编译程序出现内存泄漏。该问题已得到修复。
当 .NET 运行时已在运行中,在 adapter_dotnet 中加载 .NET 程序集会导致错误。该问题已得到修复。
卸载单个库函数不是定义明确的操作,可能导致崩溃。该问题已得到修复。现在,对库函数调用 UnloadProcedure 会隐式地卸载整个库。以后尝试从库函数中创建 HDevProcedure 时,将重新加载库。
dev_get_system('jit_enabled') 在从 JIT 编译的程序中调用时报告了一个错误。该问题已得到修复。
加载或写入使用动态字典键的函数会导致很小的一次性内存泄漏。该问题已得到修复。
在某些情况下,调用返回图标值的算子可能会导致 JIT 编译函数出现内存泄漏。该问题已得到修复。
当 .NET 运行时已在运行中,在 adapter_dotnet 中加载 .NET 程序集会导致错误。该问题已得到修复。
卸载单个库函数不是定义明确的操作,可能导致崩溃。该问题已得到修复。现在,对库函数调用 UnloadProcedure 会隐式地卸载整个库。以后尝试从库函数中创建 HDevProcedure 时,将重新加载库。
现在,当第二个参数是大量运行的单个区域时,difference、intersection、symm_difference 和 union2 的速度更快了。
现在,在支持 AVX2 的英特尔处理器上,字节图像的 unwarp_image_vector_field 速度提高了 285%。这仅适用于不需要 HALCON XL 的图像大小。
现在,distance_pc 在处理大型输入元组时速度更快。
emphasize 现在的速度更快了,尤其是在 ARM 架构上。特别是,对于 512x512 的图像,预计可实现以下提速:
架构 | 指令集 | 图像类型 | 滤波器尺寸 | 系数 | 提速 |
---|---|---|---|---|---|
ARM | NEON | byte | 3x3 | 1.0 | up to 175% |
5x5 | up to 110% | ||||
15x15 | up to 75% | ||||
3x3 | 0.7/2.8 | up to 140% | |||
5x5 | up to 110% | ||||
15x15 | up to 60/90% | ||||
int2/uint2 | 3x3 | 1.0 | up to 35/30% | ||
5x5 | up to 35/25% | ||||
15x15 | up to 30/25% | ||||
x86/x64 | AVX2 | byte | 3x3 | up to 20% | |
5x5 | up to 10 % | ||||
int2/uint2 | 3x3 | 0.7/2.8 | up to 5%/15% | ||
5x5 | up to 8% | ||||
15x15 | up to 8% |
highpass_image 现在对字节图像的处理速度更快。特别是,对于 512x512 的图像,预计会有以下速度提升:
Filter Size | Architecture | Instruction set | Speedup |
---|---|---|---|
3x3 | ARM | NEON | up to 170% |
3x3 | x86/x64 | AVX2 | up to 15% |
9x9 | ARM | NEON | up to 70% |
bandpass_image 现在的速度更快了。特别是,对于 512x512 的图像,预计会有以下加速:
Architecture | Instruction set | Image Type | Speedup |
---|---|---|---|
ARM | NEON | byte | up to 30% |
ARM64 | uint2 | up to 200% | |
ARMv7a | up to 300% | ||
x86/x64 | AVX2 | byte | up to 12% |
fill_up 现在速度提高了 90%。
对于使用 NEON 指令的字节图像,find_ncc_model 和 find_ncc_models 现在速度更快。具体而言,可望实现以下加速:
ARM 架构 | 提速 |
---|---|
ARM64 | up to 80% |
Armv7 | up to 40% |
需要注意的是,可实现的速度提升在很大程度上取决于每个金字塔层模板的大小。小模板可能根本不会提速,而大模板则会提速。
优化了椭圆拟合功能。因此,在使用 "geohuber"、"geometric "和 "geotukey "算法时,fit_ellipse_contour_xld 的速度提高了 475%。此外,椭圆的 apply_metrology_model 性能也得到了增强。
现在,mean_image 在使用 NEON 指令的小滤波器掩模的字节图像中速度更快。具体来说,可望实现以下加速:
ARM 架构 | 滤波器尺寸 | 提速 |
---|---|---|
ARM64 | 3x3 | up to 20% |
Armv7 | up to 5% | |
ARM64 | 5x5 | up to 10% |
现在,使用 NEON 指令,对于滤波器掩模小于 129 掩码区的字节图像,mean_image_shape 的速度更快。具体而言,可望实现以下加速:
ARM 架构 | 提速 |
---|---|
ARM64 | up to 40% |
Armv7 | up to 20% |
读取二进制 TIFF 图像时,read_region 的运行时间有了明显改善。
现在,bit_lshift 和 bit_rshift 处理 int1 类型图像的速度更快了。在 Intel 平台上,bit_lshift 和在 Arm 平台上,bit_rshift 现在快三倍。
对于英特尔平台和 "字节" 图像类型,div_image 现在快了约 50%。
数据矩阵 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 现在对大型元组的处理速度更快。可实现的速度提升主要取决于元组的类型和元素数量。
对于某些图像类型,在支持 SSSE3/AVX2/NEON 的系统上,在插值模式为 "常量" 和缩放因子为 0.5 时,算子 gen_gauss_pyramid、zoom_image_factor 和 zoom_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_model、read_object_model_3d 和 deserialize_object_model_3d 的运行时间得到了改进。在忽略 I/O 时间的情况下,这些算子的速度提高了 320%。其他几个读取和反序列化算子的速度也得到了提高,但幅度较小。
intersect_plane_object_model_3d 已进行了扩展,允许在一个输入的三维对象模型和多个平面姿态之间建立 1:N 的关系。现在,算子允许 1:N、N:N 和 N:1 的关系。
在 HALCON 24.05 中,read_object_model_3d 现在支持读取 STEP 三维数据交换格式。引入了一个新的 STEP 专用通用参数 "max_surface_deviation",用于设置读取模型的精度。对 read_object_model_3d 的参考手册条目进行了相应扩展。此外,安装程序中还包含一个示例模型 "engine_part_bearing.step"。
Qhull 库已更新至 2020.2 (8.0.2) 版。
在并行运行线程中使用以下任何三维算子时(例如,使用 par_start),这些算子的性能可能会受到在不同任务中使用列表中另一个算子的影响:
convex_hull_object_model_3d、
distance_object_model_3d
(通用参数 "method"设为 "voxel")。、 max_diameter_object_model_3d、
intersect_plane_object_model_3d
(仅适用于三维基元)、 prepare_object_model_3d
(参数 Purpose 设置为 "distance_computation")。、 register_object_model_3d_global
(仅适用于三维基元)、 register_object_model_3d_pair
(仅适用于三维基元)、 select_object_model_3d
(参数 Feature 设置为 "diameter_bounding_box"或 "diameter_object")。、 smallest_bounding_box_object_model_3d、
smallest_sphere_object_model_3d、
triangulate_object_model_3d
(仅适用于三维基元,且参数 "Method"设置为 "greedy")。
该问题已得到修复。
对 HALCON 结构光模型进行了扩展,以支持漫反射表面的高质量三维重建。
通过使用图案投影仪进行照明,像 "反向相机"一样投射定向光,可以从朗伯或漫反射物体表面重建三维表面。相比之下,迄今为止,结构光模型仅用于偏转测量,即使用漫反射显示器或监视器照明,检测镜面表面的缺陷。
create_structured_light_model 设置了新的模型类型 "3d_reconstruction",set_structured_light_model_param 可用于设置 "camera_setup_model" 中的校准信息。对 get_structured_light_model_param 进行了相应扩展。新算子 reconstruct_surface_structured_light 可执行三维重建。
参考手册中的检测/结构光或三维重建/结构光一章介绍了新功能的使用。
新的 HDevelop 示例程序 hdevelop/3D-Reconstruction/Structured-Light/structured_light_calibration.hdev 展示了如何校准结构光设置。它使用 structured_light/calibration 中的新图像。
新的 HDevelop 示例程序 hdevelop/3D-Reconstruction/Structured-Light/structured_light_3d_surface_reconstruction.hdev 展示了如何使用已校准的结构光设置重建表面。它使用 structured_light/cast_part 中的新图像。
新程序库procedures/general/structured_light.hdpl中新增的HDevelop函数compute_structured_light_modulation可帮助用户估算获取的相机图案图像序列的质量。现有的示例 hdevelop/Inspection/Structured-Light/structured_light_tap_collar.hdev已通过调制计算进行了扩展。
请注意,这一更改会影响兼容性。 更多信息。对于 sample_object_model_3d,参数 "SampleDistance" 已更名为 "SamplingParam"。该参数可以使用 "m"或像素为单位的距离,也可以使用采样物体的点数,具体取决于所使用的方法。新的参数名称更准确地描述了参数的行为。
请注意,这一更改会影响兼容性。 更多信息。surface_normals_object_model_3d 已得到改进。现在,对于 "triangles"方法,算子还以扩展属性"&triangle_normal_x"、"&triangle_normal_y" 和"&triangle_normal_z" 返回每个三角形的法线。
格式选项 "generic_ascii" 扩展了 read_object_model_3d。现在,可以读取包含三维点信息的不同 ASCII 格式,如 .xyz、.pts 和 .ptx。新增的 HDevelop 范例 hdevelop/3D-Object-Model/Creation/read_object_model_3d_generic_ascii.hdev 用于演示使用方法。
HALCON 扩展了基于深度学习的深度三维匹配推理。
深度三维匹配使用场景的多个校准相机视图来查找 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"。使用该参数,可以将一个输入步骤文件中的模型组件读入各种三维对象模型。
请注意,这一更改会影响兼容性。 更多信息。HALCON 扩展了三维抓取点检测训练。现在,可以对三维抓取点检测模型进行微调,以提高特定三维传感器或设置的检测性能。
新增 HDevelop 示例 hdevelop/3D-Matching/3D-Gripping-Point-Detection/3d_gripping_point_detection_training_workflow.hdev,以展示如何在 HALCON 中使用该功能。为此示例添加了一组新图像。它位于示例图像文件夹 "3d_machine_vision/depalletizing" 中。
扩展了以下深度学习函数:
现在可以使用以下新函数:
扩展了参考手册中的 "三维匹配/三维抓取点检测" 和 "深度学习/模型" 章,以及 get_dl_model_param 和 set_dl_model_param 的算子条目。
请注意,这一更改会影响兼容性。 Read more.GS1 DataBar Expanded Stacked 条形码的解码功能现在更加强大。
get_bar_code_result 和 get_data_code_2d_results 现在支持 AI 8030 (DIGSIG) 的 GS1 应用标识符的新强制关联,该关联已在 GS1 通用规范 24.0 版中引入。使用结果参数 "gs1_lint_result" 和 "gs1_lint_passed" 时会考虑强制关联。
通用规格变更通知 (GSCN) 22-246 引入了以下新的 GS1 应用标识符,现已支持这些标识符:
7250(出生日期)、7251(出生日期和时间)、7252(生物性别)、7253(人的姓氏)、7255(人的名字)、7255(人的名字后缀)、7256(人的全名)、7257(人的地址)、7258(婴儿出生序列指示符)、7259(婴儿姓氏)。
现在支持新的 GS1 应用标识符 7241(AIDC 媒体类型)和 7242(VCN)。
在出现打印增大或打印丢失的情况下,对堆叠的 GS1 DataBar 符号的读取现在更加可靠。
现在支持新的 GS1 应用标识符 4330(最高温度 F)、4331(最高温度 C)、4332(最低温度 F)、4333(最低温度 C)和 8030(DIGSIG)。
通过将新参数 "upce1_enable" 设置为 "true",find_bar_code 现在可支持数字系统 1 的 UPC-E 条形码。
set_bar_code_param 和 set_bar_code_param_specific 扩展了参数 "max_code_length"。使用该参数可指定条形码仍被视为有效的解码字符串的最大允许长度。通过 get_bar_code_param 和 get_bar_code_param_specific,可以查询上述参数的当前值。
get_bar_code_result 和 get_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_intermediate_float_grades" 进行了扩展,该参数根据 ISO/IEC 29158:2020 返回数据矩阵 ECC 200 代码打印质量检测的中间等级。
get_bar_code_result 和 get_data_code_2d_results 现在支持 AI 8030 (DIGSIG) 的 GS1 应用标识符的新强制关联,该关联已在 GS1 通用规范 24.0 版中引入。使用结果参数 "gs1_lint_result" 和 "gs1_lint_passed" 时会考虑强制关联。
QR 码阅读器中 "standard_recognition" 和 "enhanced_recognition" 的 "model_type" 默认值已改为 2,因为模型类型 1 代码已被弃用,并于 2006 年从 ISO/IEC 18004 中移除。仍在使用模型类型 1 代码的应用程序需要将 "model_type" 设置为 "any"。
对于数据矩阵 ECC 200 符号,find_data_code_2d 对模块宽度沿两个交替查找图案边的变化的容差已得到改进。因此,现在可通过 set_data_code_2d_param 或 create_data_code_2d_model 使用新参数 "alternating_pattern_tolerance"。总共可以设置三个不同的值: "low" 仅允许较小的变化,"medium" 允许较大的变化,而 "high" 则会额外扩展搜索空间。较高的设置总是包含较低的值。请注意,新参数仅对使用 "finder_pattern_tolerance" 等于 "low" 的搜索通行有效。此外,当 "default_parameters" 设置为 "standard_recognition" 时,它将自动设置为 "low";当设置为 "enhanced_recognition" 时,它将自动设置为 "medium";当设置为 "maximum_recognition" 时,它将自动设置为 "high"。新参数可通过 find_data_code_2d 进行训练,get_data_code_2d_results 可用于检查成功解码是否需要该参数。如果解码是基于等于 "high" 的 "finder_pattern_tolerance",则 get_data_code_2d_results 将返回 "undefined" 的 "alternating_pattern_tolerance"。
如果将 "quality_isoiec15415_decode_algorithm" 设置为 "robust",所做的更改也会对打印质量检测结果产生微小影响。
现在支持新的 GS1 应用标识符 7241(AIDC 媒体类型)和 7242(VCN)。
通过在 set_data_code_2d_param 中将参数 "string_encoding"设置为 "shiftjis",二维码阅读器现在支持将 Shift JIS 指定为字符串编码。
现在支持新的 GS1 应用标识符 4330(最高温度 F)、4331(最高温度 C)、4332(最低温度 F)、4333(最低温度 C)和 8030(DIGSIG)。
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(婴儿姓氏)。
通过使用新的 get_data_code_2d_results 参数 "quality_isoiec29158_float_grades",直接部件标记代码的打印质量检测现在支持根据 ISO/IEC 29158 对以下代码类型进行连续分级:
数据矩阵 ECC 200、QR 码、微型 QR 码、Aztec码
此外,参数
更名为
保持向后兼容性。
调试函数 grade_data_code_2d 和 dev_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 演示了如何使用此功能。
DotCode 阅读器的解码性能得到了改进。最大的优点是对带有某种视觉干扰的 DotCode 进行了解码,例如用铝箔覆盖的 DotCode。 我们的内部基准表明,解码性能相对提高了 10%。
此外,通用参数 "max_allowed_error_correction" 的默认值已从 1.0 降至 0.9,即读码器将最多使用其 90% 的纠错能力。
全局上下文异常检测(GC-AD)已扩展为域感知推理。对程序 preprocess_dl_samples 进行了扩展,以支持将 "keep_domain" 作为推理模式下 GC-AD 模型的 DLPreprocessParam.domain_handling 选项。因此,apply_dl_model 在计算 "anomaly_score" 值时将只考虑输入域。
以下两个 HDevelop 程序经过扩展,展示了新功能:
在 "深度学习/异常检测和全局上下文异常检测" 参考章中添加了一个名为 "推理过程中的域处理" 的小节,以解释新功能。
新版 OpenVINO AI 加速器接口 21.05.3.1 与 HALCON 24.05 同时发布,可通过 SOM 获取。默认情况下,HALCON OpenVINO AI 加速器接口与用于 CPU 和 GPU 的 OpenVINO 2023.3 LTS 插件一起交付。
HALCON 中新增了一种名为 "多标签分类" 的深度学习方法。与检测等其他模型类型相比,这种方法只需花费很少的精力来标注数据,推理时间也更短,因此可以一次性为图像分配多个类别。
除了用新的多标签分类模型类型扩展深度学习算子和函数外,还引入了以下函数:
create_dl_model_multi_label_classification, read_dl_dataset_multi_label_classification, convert_classification_dataset_to_multi_label_classification, convert_detection_dataset_to_multi_label_classification, convert_segmentation_dataset_to_multi_label_classification, dev_display_multi_label_classification_evaluation
新增了 HDevelop 示例程序 hdevelop/Deep-Learning/MultiLabelClassification/dl_multi_label_classification_workflow.hdev,以展示如何在 HALCON 中使用多标签分类的 DL 模型。
参考手册中增加了一章介绍新的多标签分类方法的使用("深度学习" > "多标签分类")。
新函数 dev_display_multi_label_classification_evaluation 可用于可视化多标签分类模型的结果。
现有的分类、识别或分割数据集可通过提供的转换函数转换为多标签分类数据集。
英伟达™(NVIDIA®)CUDA 基础线性代数子程序库(cuBLAS)和英伟达™(NVIDIA®)CUDA 深度神经网络库(cuDNN)已更新至最新版本。为了同时支持最新的英伟达™(NVIDIA®)显卡,HALCON 现已为 x64-linux 和 x64-win64 平台上的 CUDA 12.1 版本提供并支持这些库。这些库位于第三方库目录的 cuda12_1 子目录中。
下列版本的英伟达™(NVIDIA®)程序库是为 CUDA 12.1 提供的:
对于 aarch64-linux,HALCON 现在支持英伟达 Jetpack 5.1.1。
请注意,这一更改会影响兼容性。 更多信息。DL 框架现在包含新算子 create_dl_layer_matmul。这允许构建包含两个输入 DLLayerA 和 DLLayerB 的矩阵乘法的自定义 CNN 图,其中二维矩阵分别以输入张量的最后两个维度(H、W)编码。
create_dl_layer_elementwise 现在可以使用新的元素操作类型 "division" 来创建 DL 图层。
DL 框架现在包含新算子 create_dl_layer_reduce,可在自定义 DL 模型中创建缩减层。该层可用于通过给定的操作沿一个或多个给定轴缩减输入张量。目前,该层支持 "norm_l2 "操作,即沿给定轴计算 L2 正值。
全局上下文异常检测(GC-AD)的异常检测性能得到了提高。这得益于 GC-AD 模型本地网络中的新损失层和新的预训练模型权重。更新后的模型名称与之前的 HALCON 版本相同:pretrained_dl_anomaly_global_context.hdl 虽然在某些情况下可能表现较差,但该模型的平均异常检测性能比之前版本的 GC-AD 要好得多。
对 GC-AD 模型的修改不会影响推理过程中的运行时间和内存需求。新的损失层对训练时间的影响较小。在默认图像大小和补丁大小设置下,这种影响微乎其微。更新损失层的另一个影响是,在训练过程中观察到的损失值在数值上会更高。
optimize_dl_model_for_inference 已扩展至支持 int8 精度和深度计数模型。
引入了带有 sum 和 norm_l2 操作的新算子 create_dl_layer_reduce。
距离损耗层现在支持 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 进行了扩展,以便使用多种评估指标对分布外检测功能进行评估。
read_dl_model 现在支持读取包含 Transpose 操作的 ONNX 模型。
read_dl_model 现在支持读取包含 Reshape 操作的 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_param 和 get_dl_model_param 扩展了深度 OCR 检测的特定参数:
扩展了参考手册 "深度学习"、"深度学习/模型" 和 "OCR/Deep-OCR" 章以及 get_dl_model_param、set_dl_model_param、set_deep_ocr_param 和 get_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 对每种模型类型的下列参数进行更改:
set_deep_ocr_param 也扩展了这一新功能,并在优化后支持以下参数:
对 set_dl_model_param 和 get_dl_model_param 进行了扩展。使用参数 "image_size" 可以设置和获取输入图像的宽度和高度,同时保持深度不变。
改进了内存块支持。以前不支持处理空内存块。现在,即使是空的内存块也可以处理。
请注意,这一更改会影响兼容性。 更多信息。list_files 已扩展至支持 Linux 系统上的符号链接列表。
HALCON 扩展了对数据类型 "serialized_item"、"memory_block" 和 "encrypted_item" 的序列化和反序列化支持。
set_lut(及其 HDevelop 对应的 dev_set_lut)进行了扩展,通过向该算子传递 [LUTName、MinGray、MaxGray] 元组,可以指定 LUT 映射的最小和最大灰度值。
用于 HALCON 可视化的 Skia 库已更新至里程碑 115。
disp_text 和 dev_disp_text 扩展了新的通用参数:
已从 HALCON 中移除遗留的 gnuplot 算子。
请注意,这一更改会影响兼容性。 更多信息。新增 LUT "batlow" 和 "invers_batlow"。这些 LUT 在感知上是统一的,并且对色差友好。
set_drawing_object_params 扩展了参数 "marker_size",使用于操作绘图对象的锚点的大小可以配置。
HALCON 扩展了算子 add_image_border。它可用于在图像上添加一个任意大小、灰度值恒定的边框。
train_generic_shape_model 现在可以通过扩展参数估计来确定参数 "min_score"。通过这种方法,可以根据具有代表性的匹配样本估算出一个合适的值。因此,set_generic_shape_model_param 已被扩展用于为匹配模型设置代表性样本。
在 HALCON 24.05 中,基于组件的匹配设置为遗留。
在支持 SSE2、AVX2、AVX512 或 NEON 指令集的处理器上,为基于形状的匹配查找形状模型的算子 find_shape_model、 find_shape_models、 find_scaled_shape_model、 find_scaled_shape_models、 find_aniso_shape_model、 find_aniso_shape_models 和 find_generic_shape_model 现在速度更快。速度提升取决于基于形状匹配的配置(例如,金字塔级数、子像素细化、可用指令集以及贪婪度值),因此也可能不存在速度提升。对于示例配置,预计可实现以下加速:
图像类型 | 可用指令集 | 提速 |
---|---|---|
byte, uint2 | SSE2 | 15% |
AVX2 | 30% | |
AVX512 | 50% | |
NEON | 20% |
由于速度的提高,对于某些配置,find_component_model 和 find_shape_model_3d 的速度也有所改善。
train_generic_shape_model 现在提供了一种通过扩展参数估计来确定搜索参数值的新方法。给定具有代表性的匹配样本后,估算结果将取代 "greediness"和 "min_score"。因此,set_generic_shape_model_param 扩展了一个名为 "extended_parameter_estimation" 的新参数。新方法可以通过 "per_level" 值启用。
因此,通过将新参数设置为 "linear" 值,现在可以启用 "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("扩展参数估计失败")。
通用形状匹配接口现在可以为 find_generic_shape_model 中传递的所有模型评估实例的最大重叠度。要启用全局最大重叠,请调用 set_generic_shape_model_param,并将 "max_overlap_global_enable"设置为 "true"。
HPGetPPar 函数的 "val" 参数从 Hcpar* H_RESTRICT 更改为 Hcpar const* H_RESTRICT*。
请注意,这一更改会影响兼容性。 更多信息。HALCON 扩展了一个算子 tuple_str_distance,用于计算字符串之间的编辑距离。
在运行 Windows 11 或 Windows Server 2022 时,HALCON 的自动算子并行化现在可以使用超过 64 个内核。
扩展包程序员手册现在解释了 HSetExtendedErrorInfo 函数的更多细节,还提到了相关的 HSetExtendedErrorInfoF 函数。
2022 年 8 月 24 日,INTEL 收到报告称,在第 6 代至第 11 代消费级和第 1 代至第 4 代 Xeon Intel x86-64 微处理器中发现了一个安全漏洞 (CVE-2022-40982)。为解决该漏洞,INTEL 发布了微代码更新,显著降低了使用收集指令的 HALCON 算子的性能。为减轻微代码更新对性能的影响,许多受影响的 HALCON 算子已被修改。
现在,HALCON 会在启动时自动检测所使用的 CPU 是否受到影响,并优先使用不含收集指令的替代实现。为查询 HALCON 的建议,get_system 扩展了新参数 "avx2_gather_recommended"。如果希望使用带有收集指令的旧实现(例如用于未打补丁的 CPU),set_system 现在增加了新参数 "avx2_gather_enable",以控制是否使用 AVX2 收集指令。"avx2_gather_enable" 也可用于 get_system,以查询当前状态。
对于 AMD CPU Zen1 和 Zen2,HALCON 会自动将 "avx2_gather_enable" 设置为 "false",因为它们的收集指令性能较差。
以下算子受到安全漏洞的影响,与以前的 HALCON 版本相比,这些算子已经过修订,以减轻性能影响或提高性能:
虽然没有受到安全漏洞的影响,但许多 HALCON 算子的已经提速:
以下算子现在支持参数广播,长度为 1 的输入元组会自动扩展并用于所有创建的元素:
gen_circle、 gen_circle_sector、 gen_ellipse、
gen_ellipse_sector、 gen_rectangle1、 gen_rectangle2、 gen_circle_contour_xld、
gen_cross_contour_xld、
gen_ellipse_contour_xld、
gen_rectangle2_contour_xld、
gen_box_object_model_3d、
gen_sphere_object_model_3d 和 gen_sphere_object_model_3d_center
新算子 test_region_points 可用于查询一个或多个区域中包含哪些点。与 test_region_point 不同的是,每个测试点都会单独返回测试结果。算子支持参数广播,可以是单个区域和多个点,也可以是多个区域和单个点,还可以是多个区域和多个点。
HALCON 第三方库 OpenSSL 已更新至 OpenSSL 3。 此前使用的是 OpenSSL 1.1。docker示例/examples/docker/halcon-application/已调整为使用默认支持OpenSSL 3的Ubuntu 22.04。
请注意,这一更改会影响兼容性。 更多信息。open_socket_connect 现在允许使用通用参数 "tls_sni" 为 TLS 套接字设置 "服务器名称指示"(RFC 6066)。
get_system_info 现在支持 get_system 支持的所有参数。
set_system 和 get_system 扩展了参数 "enable_neon"。该参数可控制是否使用 NEON 操作来加速选定的图像处理算子。
此外,get_system 还扩展了参数 "neon_supported"。该参数表示处理器是否支持 NEON 操作。
send_data 和 receive_data 扩展了对数据类型 "memory_block" 的支持。
在 Windows 上,HALCON 22.11 增加了 mimalloc 内存分配器的使用(详情请参见 https://microsoft.github.io/mimalloc),以提高某些特定情况下的性能。然而,这一变化增加了所有情况下的总体内存消耗。因此,现在可以使用 set_system's 的新参数 "memory_allocator" 禁用 mimalloc。此外,mimalloc 内存分配器现在也适用于 Linux。
distance_pp、 distance_ps、 distance_pl、 distance_sl、 distance_ss、 angle_ll、 angle_lx 和 projection_pl 已扩展到支持 1:N 和 N:1 形式的参数广播,其中每个参数的长度可以是 N 或 1。此外,算子现在已自动并行化。最后,对于较长的输入图元,算子 distance_pp 的运算速度提高了 27%。
以下算子现在支持参数广播,长度为 1 的输入元组会自动扩展并用于所有创建的元素: area_intersection_rectangle2、 distance_pr、 distance_lr、 distance_sr、 distance_sc、 distance_lc、 distance_cc_min、 distance_cc_min_points 和 distance_cc
请注意,这一更改会影响兼容性。 更多信息。HALCON 扩展了算子 tuple_str_replace,用于替换字符串中出现的所有子串。它也可以作为内联操作 str_replace 使用。
HALCON 扩展了 tuple_repeat 和 tuple_repeat_elem 算子:
控制元组数据类型现在支持写入时复制机制。这提高了复制或访问元组元素时的处理速度,尤其是在处理长元组时。因此,如果包含长元组,字典的处理速度就会加快。
对 HALCON 字典键表的访问现在是线程安全的。详情请参见 create_dict 的参考文档。
set_dict_tuple 现在可以同时设置多个键。为此,可以传入一个值,作为所有键的值,或者传入一个值元组,每个键一个值。这也适用于 dict 赋值表达式。
新算子 intersection_region_contour_xld 可用于选择轮廓 XLD 与区域相交的部分。
get_stereo_model_param 有时会泄露内存,以防出错。 该问题已得到修复。
当使用参数 "diameter_object" 或 "diameter_bounding_box" 时,max_diameter_object_model_3d、 smallest_sphere_object_model_3d、 smallest_bounding_box_object_model_3d、 convex_hull_object_model_3d、 distance_object_model_3d 和 select_object_model_3d 会泄露内存。
当使用参数 "distance_computation" 时,prepare_object_model_3d 会泄露内存。
在某些情况下,triangulate_object_model_3d、 intersect_plane_object_model_3d、 register_object_model_3d_pair、 register_object_model_3d_global 和 sample_object_model_3d 也会受到影响。该问题已得到修复。
在极少数情况下,write_object_model_3d 会访问无效内存。该问题已得到修复。
当 "disparity_method" 设置为 "binocular_ms" 时,reconstruct_surface_stereo 不支持 OpenCL 计算设备。该问题已得到修复。
在 Windows 系统中,使用 read_object_model_3d 读取大于 2 GB 的 3D STL 文件并不总是有效。该问题已得到修复。
intersect_plane_object_model_3d、 convex_hull_object_model_3d、 register_object_model_3d_pair 和 register_object_model_3d_global 有时会对原始类型为 "圆柱体" 的输入模型产生错误结果。 该问题已得到修复。
使用通用参数 "has_points" 的 get_object_model_3d_params,对于使用空 XYZ 映射创建的模型(没有任何点),返回值为 "true"。该问题已得到修复。 现在,只有当三维对象模型至少有一个点时,"has_points" 才会返回 "true"。
在使用多个输入对象模型时,当一个包含多边形的模型后面跟着一个不包含多边形的模型时,intersect_plane_object_model_3d 会崩溃。该问题已得到修复。
affine_trans_object_model_3d 在未修改的情况下复制了基元。 affine_trans_object_model_3d 和 rigid_trans_object_model_3d 在未修改的情况下复制了用于三维距离计算的预计算数据结构。这些问题已得到修复。现在,这些属性不再被复制。
请注意,这一更改会影响兼容性。 更多信息。使用 OpenGL 对三维对象模型进行的 disp_object_model_3d、object_model_3d_to_xyz、render_object_model_3d 和其他可视化操作有时会在三维模型包含许多点的情况下产生无输出。该问题已得到修复。
sample_object_model_3d 在使用 furthest_point 或 furthest_point_compute_normals 方法时,如果使用三维基元作为输入模型,会出现错误。然而,参考文献指出,对于三维基元,该方法会被忽略。该问题已得到修复。 现在,算子会忽略该方法,也不会抛出错误。
在极少数情况下,add_deformable_surface_model_sample、create_surface_model 和 create_deformable_surface_model 引发错误时会泄露内存。该问题已得到修复。
方法设置为 "greedy" 的 triangulate_object_model_3d,有时会在出错时泄漏内存。该问题已得到修复。
find_surface_model 和 find_deformable_surface_model 可能会在极少数错误情况下泄漏内存。该问题已得到修复。
在某些错误情况下,disp_object_model_3d 和 render_object_model_3d 会泄漏内存。该问题已得到修复。
get_stereo_model_param 有时会泄露少量内存,以防出错。该问题已得到修复。
读取 dxf 文件时,read_object_model_3d 有时会泄露内存。该问题已得到修复。
复制已为形状匹配做好准备的三维对象模型时,会泄漏少量内存。这问题已得到修复。
在某些错误情况下,max_diameter_object_model_3d 会泄露内存。该问题已得到修复。
moments_object_model_3d 引发错误时有时会泄露内存。该问题已得到修复。
area_object_model_3d 引发错误时有时会泄露内存。该问题已得到修复。
在某些情况下,volume_object_model_3d_relative_to_plane 会泄露内存。该问题已得到修复。
read_deformable_surface_model 在某些情况下可能会泄露内存。该问题已得到修复。
使用 set_surface_model_param 的参数 "symmetry_poses" 设置表面模型的对称姿态时,表面模型在清除时会泄漏少量内存。该问题已得到修复。
在某些错误情况下,get_structured_light_model_param 会泄露内存。该问题已得到修复。
在某些情况下,参数 Purpose 设置为 "distance_computation" 的 prepare_object_model_3d 会泄露内存。该问题已得到修复。
使用 display_scene_3d 或 render_scene_3d 显示包含圆柱体模型的场景时,会泄露该模型。该问题已得到修复。
在某些情况下,格式为 "dxf" 的文件的 read_object_model_3d 会泄露内存。该问题已得到修复。
如果输入的三维对象模型不包含点,edges_object_model_3d 会在极少数情况下崩溃。该问题已得到修复。
在 ConeLength= 'auto' 时,gen_camera_setup_object_model_3d 有时会返回不直观的锥形,而在图像侧远心相机中则返回错误的锥形。这一问题已得到修复。
在极少数情况下,uncalibrated_photometric_stereo 会在输出的 NormalField 和 Gradient 图像中返回数值为 NaN 的像素。该问题已得到修复。现在,如果无法计算某些像素的重构,则将生成的 NormalField 和 Gradient 的像素设置为 0。
如果 "Plane "参数的类型错误,intersect_plane_object_model_3d 不会报错。该问题已得到修复。
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 可能会崩溃。该问题已得到修复。
对于 "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_param 和 set_bar_code_param_specific 可能会崩溃。特别是将字符串作为输入的参数会受到影响。该问题已得到修复。
如果成功解码是基于 "small_elements_robustness" 功能,则可通过 set_bar_code_param 设置的静音区检查无法正确工作。在这种情况下,即使静音区完全没有任何缺陷,静音区检查也可能使正确的解码失效。该问题已得到修复。
如果宽条数与窄条数的比例非常大,有些 PharmaCode 条形码就无法读取。该问题已得到修复。
在某些情况下,find_bar_code 可能会使用指定缩小图像域之外的边缘来解码条形码。该问题已得到修复。现在,图像域外的边缘永远不会被用于解码尝试。
在某些情况下,get_bar_code_result 和 get_bar_code_object 可能无法为成功解码的候选码返回正确的状态和目标。这一问题已得到修复。
如果使用了 "merge_scanlines" 功能,在解码步骤中 find_bar_code 并不总是使用正确的灰度值作为条形/空间分类的参考。该问题已得到修复。请注意,在极少数情况下,这种变化可能会导致解码性能略有不同。
在某些情况下,如果启用了 "merge_scanlines" 解码尝试,训练模式下的 find_bar_code、get_bar_code_result 和 get_bar_code_object 会泄露内存。该问题已得到修复。
find_bar_code 可能会在出错、超时或其他中断情况下泄漏内存。该问题已得到修复。
在极少数情况下,如果将 "composite_code" 设置为 "CC-A/B",可能会出现 find_bar_code 在复合码检测中没有考虑所有成功解码的结果。该问题已得到修复。
read_bar_code_model、 write_bar_code_model、 serialize_bar_code_model 和 deserialize_bar_code_model 未考虑条形码模型参数 "quiet_zone"。该问题已得到修复。现在,静音区值的读取、写入、序列化和反序列化都分别正确无误。
Aztec 码阅读器在 DecodedDataStrings 和 get_data_code_2d_results 获得的 "decoded_data" 中的第一个位置返回一个 FNC1。该问题已得到修复。
在极少数情况下,如果 "small_elements_robustness" 功能成功解码了候选码,并激活了静音区检查,即使在原始扫描线上检测不到任何边对,find_bar_code 仍可能崩溃。该问题已得到修复。
即使算子调用失败,set_bar_code_param 和 set_bar_code_param_specific 仍可更改模型。原因是所有有效参数都会被解析,直到出现无效参数对。该问题已得到修复。现在,只有当 set_bar_code_param/set_bar_code_param_specific 调用成功完成时,才会调整模型。此外,还修正了 "bar_code_width_min"/"bar_code_width_max" 等参数之间的某些依赖性问题,如果在一次调用中同时设置这两个参数,可能会出现这种问题。
具有两位数应用标识符但只有一位数内容的 GS1 代码无法正确解码。该问题已得到修复。
在某些错误情况下,binocular_calibration、get_calib_data 和 set_calib_data_calib_object 会泄露内存。该问题已得到修复。
如果结果为空,query_calib_data_observ_indices 可能会泄露内存。该问题已得到修复。
find_calib_object 出错时会泄露内存。该问题已得到修复。
find_calib_object 在某些情况下会泄漏少量内存。该问题已得到修复。
set_stereo_model_image_pairs 在某些出错情况下会泄露内存。该问题已得到修复。
当数据中缺少所需的 calib_obj_pose 时,calibrate_hand_eye 有时不会引发错误,但会返回错误的结果;当数据中缺少所需的 calib_obj_pose 时,get_calib_data 有时不会引发错误,或返回错误 8458("校准对象索引无效")。现在,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没有正确校正用于匹配和机器人接近姿态的模型图像。该问题已得到修复。
get_params_class_knn 出错时可能会泄露内存。该问题已得到修复。
如果算子错误退出,read_texture_inspection_model 可能会泄漏一些内存。该问题已得到修复。
在使用 trans_from_rgb 或 trans_to_rgb 从 "cielab "色彩空间转换字节图像或将其转换为 "cielab" 色彩空间时,由于值缩放错误,a 和 b 通道的处理略有不正确。该问题已得到修复。
create_color_trans_lut 导致少量内存泄漏。该问题已得到修复。
在极少数情况下,对于数据矩阵 ECC 200 代码,find_data_code_2d 中的网格确定可能会失败。该问题已得到修复。
Aztec 码阅读器能解码纠错字数少于 3 个字的代码。这些代码不符合 ISO/IEC 24778:2008 标准,读取纠错字数少于 3 个字的代码会增加误读的可能性。这个问题已得到解决,现在 Aztec 码阅读器只读取至少有 3 个纠错字的符合标准的代码。
如果结果参数 "orientation" 与其他参数一起使用,get_data_code_2d_results 在某些情况下会导致(微型)QR 码模型崩溃。该问题已得到修复。
在极少数情况下,ECC 200 阅读器会出现误报。该问题已得到修复。
如果结果参数 "gs1_lint_result" 或 "gs1_lint_passed" 与其他参数一起使用,get_data_code_2d_results 在某些情况下会返回不正确的数值。该问题已得到修复。 此外,如果参数 "gs1_lint_result" 不是只查询一个结果,现在会返回错误 8827("参数之一返回多个值,必须只用于一个候选值")。
数据矩阵阅读器在极少数情况下会泄露少量内存。该问题已得到修复。
在小模块鲁棒性设置为 "high" 时,如果图像宽度或高度超过允许的最大图像尺寸,则 find_data_code_2d 会崩溃。该问题已得到修复。
在某些情况下,get_data_code_2d_results 和 get_data_code_2d_objects 会返回错误的结果参数 "status"、"corr_coded_data"、"raw_coded_data"、"bin_module_data",以及错误的结果对象 "module_0_rois"/"module_1_rois"。该问题已得到修复。
在某些情况下,如果启用了 "merge_scanlines" 解码尝试,训练模式下的 find_bar_code、get_bar_code_result 和 get_bar_code_object 会泄露内存。该问题已得到修复。
find_data_code_2d 泄露了 Aztec 代码的少量内存。该问题已得到修复。
在极少数情况下,get_data_code_2d_results 会泄漏参数 "quality_isoiec15415_additional_reflectance_check" 的内存。该问题已得到修复。
对于 DotCode 符号,如果检测到的候选码具有非常接近图像边界的点状结构,则 find_data_code_2d 可能会遇到除以零的问题。该问题已得到修复。
对于 DotCode 符号,由于弦数不足,find_data_code_2d 可能会遇到内部错误 3513("内部错误:弦数过多,不符合 num_max")。该问题已得到修复。
在极少数情况下,使用 Data Matrix ECC 200 代码的 find_data_code_2d 会返回错误 3513("内部错误:弦数对于 num_max 而言过大")。该问题已得到修复。
在将 set_system 参数 "database" 设置为 true 时调用 find_data_code_2d,可能导致 HALCON 挂起或崩溃。该问题已得到修复。
对于数据矩阵 ECC 200 符号类型,在serialize_data_code_2d_model 或 write_data_code_2d_model 时,没有考虑参数 "contrast_tolerance" 的 "trained" 状态。该问题已得到修复。
在极少数情况下,如果将 "finder_pattern_tolerance" 设置为 "any" 或 "high",并将 "mirrored" 设置为 "any",则通过带有 "module_1_rois" 或 "module_0_rois" 的 get_data_code_2d_objects 获得的模块会被镜像。该问题已得到修复。
get_data_code_2d_results 返回不含纠错字的微型二维码原始编码数据。该问题已得到修复。此外,对于微型 QR 码,get_data_code_2d_results 现在会以打包字节形式返回 raw_coded_data 和 corr_coded 数据。
微型 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" 已被记录为二维码模型的可训练参数,可作为单一参数或与其他参数(包括 "all")一起训练。
Aztec 码阅读器在 DecodedDataStrings 和 get_data_code_2d_results 获得的 "decoded_data" 中的第一个位置返回一个 FNC1。该问题已得到修复。
query_data_code_2d_params 返回了一个不再使用的参数名称。该问题已得到修复。
由于短方向上有少量模块(如 8x...)的矩形 数据矩阵 ECC 200 码的参考解码算法不足,将 "quality_isoiec15415_decode_algorithm" 设置为 "reference" 时,打印质量检测 (ISO/IEC 15415) 可能会失败,即使是几乎完美的代码。该问题已得到修复。
set_data_code_2d_param 和 find_data_code_2d 接受字符串作为许多数值型或布尔型 GenParamValues 的输入。然而,内部转换机制并不能可靠地捕捉到所有转换错误。该问题已得到修复。此外,对于 DotCode,如果使用了错误的 GenParamName 或错误的 GenParamValue,find_data_code_2d 的错误代码也会发生变化。新的错误代码与其他二维符号一致:错误的值导致 8830("无效参数值"),错误的名称导致 8831("未知参数名")。
set_data_code_2d_param 和 find_data_code_2d 接受不同类型的值,这可能导致溢出、意外的缩小转换或根本不支持。然而,内部解析机制并不能可靠地捕捉到所有错误。该问题已得到修复。现在,将抛出一条扩展错误信息,告知用户输入值有误。
在 armv7a 和 aarch64 上,find_data_code_2d、gray_closing_shape、gray_dilation_shape、gray_erosion_shape 和 gray_opening_shape 的运行速度明显减慢。该问题已得到修复。
参考解码算法可通过 set_data_code_2d_param 使用通用参数 "quality_isoiec15415_decode_algorithm" 和相关值 "reference" 来激活。该问题已得到修复。现在,如果参考解码算法不适用,将返回等于-1 的质量等级。在这种情况下,我们建议使用 "robust" 模式。
没有始终检查 set_data_code_2d_param、set_bar_code_param 和 set_bar_code_param_specific 中某些参数的指定范围。该问题已得到修复。现在,超出记录范围的值将引发错误。不过,也有一些例外情况,为了保证可用性,不会出现错误。
具有两位数应用标识符但只有一位数内容的 GS1 代码无法正确解码。该问题已得到修复。
数据矩阵 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 码符号时出现内存泄漏。该问题已得到修复。
全局上下文异常检测 (GC-AD) 模型无法根据 HAILO-8 AI² 插件和硬件进行正确优化。这种硬件只允许 int8 的校准精度。校准结果显示出错误的异常图像,导致非常糟糕的分割结果和不正确的分类结果。该问题已得到修复。现在,optimize_dl_model_for_inference 可以转换 GC-AD 模型,使定量结果与全精度 float32 模型非常相似。有必要使用 optimize_dl_model_for_inference 再次用新版本校准 GC-AD 模型。校准后还需要调整分类/分割阈值,以获得最佳结果。
请注意,这一更改会影响兼容性。 Read more.只要 "angle_start" 和 "angle_end" 参数为默认值(0.0),就无法通过 set_deep_counting_model_param 设置深度计数模型的参数 "angle_step"。该问题已得到修复。
自 HALCON 23.11 更新 cuDNN 后,函数 set_dl_model_param_max_gpu_batch_size 已过时。原因是所选的 cuDNN 算法并不总是相同的,因此它们使用的内存不再是确定的。该函数已被设置为遗留,在示例中不再使用。应使用带有合适 "batch_size" 的算子 set_dl_model_param。
set_dl_model_param 会泄露参数 "device" 的内存,前提是模型设备是 AI2 设备,并已更改为标准 CPU 或 GPU 设备。该问题已得到修复。
在运行 GC-AD 推理并计算超大图像的异常得分时,会出现 "DL 内部错误" 错误。该问题已得到修复。
如果请求层的顺序与网络图中出现的顺序不同,get_dl_model_layer 可能会崩溃。该问题已得到修复。
当调用多个不同大小的图像时,apply_deep_ocr 返回错误的检测结果。该问题已得到修复。
train_dl_model_batch 会泄露内存,前提是在 CPU 上训练了一个带有置换层的模型。该问题已得到修复。
如果在非常特殊的情况下使用 get_dl_model_layer 和 create_dl_model 创建了给定的模型,set_dl_model_param 可能会崩溃或返回错误信息。只有在 get_dl_model_layer 中使用的模型的设备被初始化时,才会出现这个问题。此外,只有在初始化已创建模型的设备之前调用了 set_dl_model_param,且参数名称为 "input_dimensions"、"image_dimensions"、"image_size"、"image_width "或 "image_height "时,才会出现该问题。该问题已得到修复。
在某些罕见的情况下,当深度学习算子由于某些原因无法访问 CUDA 功能时,后续算子调用可能会在失败时错误地显示与 CUDA 功能无关的扩展错误信息。该问题已得到修复。
create_dl_layer_loss_focal 没有正确检查参数 ClassWeights 的大小,默认值 [] 失败。该问题已得到修复。
通过命令行使用 HDevelop,例如进行 hdevelop -convert 操作时,无法正确返回浮动许可证。该问题已得到修复。
当背景颜色不是常数值文字时,dev_open_window 的 C 导出不起作用。该问题已得到修复。
HALCON 扩展了公共函数 get_image_dir。该函数返回 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" 时可能出现的错误信息,使其更具描述性。
在极少数情况下,如果模型是用 create_dl_model 创建的,apply_dl_model 可能会返回不必要的中间输出。只有当模型的中间节点连接到多个输出,并且中间节点直接连接到一个或多个损失层或辍学层时,才会出现这种情况。没有一个预训练模型受此问题影响。该问题已得到修复。
无法在变量窗口中保存 HALCON Deep OCR 模型。保存 HALCON DL 模型会导致文件无法读取。该问题已得到修复。
函数 augment_dl_samples 错误地支持了 Deep-OCR 识别模型的增强方法 "saturation_variation"。该问题已得到修复。
请注意,这一更改会影响兼容性。 更多信息。自定义深度学习模型上的 apply_dl_model 输出字典(网络末端有一个模式为 "arg_and_value" 的最大深度层)不包含第一个输出的键。该问题已得到修复。
函数 read_dl_dataset_anomaly 和 read_dl_dataset_segmentation 在图像目录中包含正则表达式中具有特殊含义的字符时可能会失败。该问题已得到修复。
示例 deep_ocr_recognition_training_workflow.hdev 在第 5 步: DEEP OCR INTEGRATION AND INFERENCE(深度OCR 集成与推理)中没有使用正确的测试图像。该问题已得到修复。
如果深度学习数据集包含大数字作为类 IDs,某些函数会占用过多内存。受此问题影响的程序如下:read_dl_dataset_from_coco、split_dl_dataset。该问题已得到修复。添加了公共函数 create_dl_class_id_mapping,以支持类 IDs 的内存高效映射,即使 IDs 是大整数值。
如果对已使用 optimize_dl_model_for_inference 优化的模型调用函数 check_dl_gc_anomaly_scores_normalization,则会抛出错误 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 因超时或 中断 事件而中止,则可能出现内存泄漏。只有当深度 OCR 句柄的参数 "tiling"设置为 "true" 时,才会发生内存泄漏。该问题已得到修复。
在某些错误情况下,read_dl_model 会泄露内存。该问题已得到修复。
当向 TIFF 文件写入 EXIF 标记时,write_image_metadata 会泄露内存。此外,当读取标签元组且至少有一个标签无法读取时,read_image_metadata 会泄露内存。这些问题已得到修复。
读取超大二进制图像时,read_sequence 可能会导致 HALCON XL 崩溃。该问题已得到修复。
当选项 "convert_json_arrays_to" 设置为 "tuple" 或 "tuple_if_possible" 时,json_to_dict 和 read_dict 无法将至少包含一个 JSON 对象的 JSON 数组转换为包含字典的元组。该问题已得到修复。
在使用 read_memory_block 时发生错误,导致打开的文件描述符未关闭并泄漏。该问题已得到修复。
如果输入图像的尺寸为奇数,则当缩放因子等于 0.5 且插值设置为 "weighted" 时,gen_gauss_pyramid、zoom_image_size 和 zoom_image_factor 可能会在右侧和底部图像边界生成错误的值。在创建分辨率金字塔时,也可能会影响 exhaustive_match_mg。该问题已得到修复。
对于缩放因子等于 0.5 且插值设置为 "weighted" 的byte、int2 和 uint2 图像,gen_gauss_pyramid、zoom_image_size 和 zoom_image_factor 没有考虑四舍五入效果。在创建字节图像的分辨率金字塔时,也可能会影响 exhaustive_match_mg。该问题已得到修复。
gen_filter_mask 出现错误时会泄露内存。该问题已得到修复。
在极少数情况下,对于非矩形输入区域,convol_image 可能会引发错误 3513("内部错误:弦数对于 num_max 来说太大")。该问题已得到修复。
segment_image_mser 可能会因 "MinArea" 的某些值而返回与内存管理相关的错误。该问题已得到修复。
在并行执行中,如果在滤波器的值上添加后缀"_junctions",edges_sub_pix 可能会导致非确定性结果。此外,在极少数情况下,返回的边缘可能是重复的,即在结果中出现的次数多于一次。该问题已得到修复。
当多个具有相同参照的图像被作为输入图像传入时,optical_flow_mg 返回相同的 向量场,即使其他输入图像是不同的。该问题已得到修复。
在 int2、uint2 和实数图像上,zoom_image_size 返回的插值 "weighted" 结果不正确。 具体来说,使用的是 "'constant" 插值方法,而不是所需的 "weighted" 方法。该问题已得到修复。 现在,所有图像类型都使用了正确的插值方法。
如果第一个图像通道不包含所有图像通道中的最大灰度值,adjust_mosaic_images 无法正确处理 "uint2" 图像。该问题已得到修复。
使用 display_scene_3d 或 render_scene_3d 显示包含圆柱体模型的场景时,会泄露该模型。该问题已得到修复。
在使用 disp_obj 或 dev_display 显示大型向量字段时,HALCON 可能会崩溃。该问题已得到修复。
当一个绘图对象被分离,并因此选择了窗口中的下一个绘图对象,而该绘图对象的 "on_select" 回调已被注册时,HALCON 返回错误信息。该问题已得到修复。
在加载和卸载 HALCON 时,使用 "pixmap" 或 "PostScript" 窗口类型会泄露内存。该问题已得到修复。
对于非常小的矩形绘图对象,set_drawing_object_params 返回错误。该问题已得到修复。
此外,在参考文档中,绘图对象回调函数的签名尚未更新为 HALCON 句柄。该问题已得到修复。
在缓冲窗口和 HDevelop 图形窗口中,即使没有按下鼠标键,get_mposition(_subpix) 也会返回修改键的状态。这个问题已得到修复,现在 get_mposition(_subpix) 在这种情况下不会返回修改键的状态。
对于 dev_set_draw_mode('margin'),区域的可视化仅限于其轮廓。这与新的像素网格功能产生了不良影响,因为像素网格会覆盖区域轮廓,使其难以看清。该问题已得到修复。
draw_nurbs 和 draw_nurbs_mod 会泄露内存。该问题已得到修复。
由于数值上的不稳定性,在特殊情况下,计算与 aniso_scale_change_restriction 相比的值可能会失败,无法为算子 find_local_deformable_model、find_planar_calib_deformable_model 和 find_planar_uncalib_deformable_model 生成有意义的值。该问题已得到修复。
请注意,这一更改会影响兼容性。 更多信息。在 Windows 系统中,使用 read_memory_block 读取大于 2 GB 的内存块可能会返回错误。该问题已得到修复。
在使用 set_system 选项 "extern_alloc_funct" 或 "extern_free_funct" 读取带有 alpha 通道的 PNG 文件时,var_threshold 运算符或 concat_ocr_trainf 算子会导致堆损坏错误。该问题已得到修复。
convert_image_type 错误地将复数舍入为有符号整数类型。这导致具有负实数部分值的复数图像出现错误的转换结果。该问题已得到修复。
convert_image_type 在从 "float"/"complex" 类型转换为有符号整数类型时可能会溢出。该问题已得到修复。
convert_image_type 在将类型从 "float"/"complex"转换为 "direction"时,没有剪切下限值 -0.5。该问题已得到修复。
add_image_border 无法正确调整系统宽度和高度。该问题已得到修复。
在 HALCON XL 中,由于浮点错误,zoom_image_factor 会对非常大的图像执行错误的计算。该问题已得到修复。
在 64 位系统上,HALCON XL 中的 convert_image_type 可能会导致超大图像崩溃。该问题已得到修复。
算子 cooc_feature_matrix 在发生内部错误时泄漏了少量内存。该问题已得到修复。
在训练 Aztec 码阅读器时,find_data_code_2d 不接受 "contrast" 作为要训练的参数,而是希望接受 "contrast_min"。这个问题已经解决,现在两个值都可以接受。
cluster_model_components、 create_component_model、 create_trained_component_model、 deserialize_component_model、 deserialize_training_components、 get_component_model_tree、 read_component_model、 read_training_components 和 train_model_components 出现错误时会泄露内存或崩溃。该问题已得到修复。
由于数值上的不稳定性,在特殊情况下,计算与 aniso_scale_change_restriction 相比的值可能会失败,无法为算子find_local_deformable_model、 find_planar_calib_deformable_model 和 find_planar_uncalib_deformable_model 生成有意义的值。该问题已得到修复。
请注意,这一更改会影响兼容性。 更多信息。在极少数情况下,当使用极低的 "min_score"时,某些匹配算子无法为顶层匹配分配足够的内存。该问题已得到修复。
当使用 set_system 将 "border_shape_model" 设置为 "true" 时,find_local_deformable_model、find_planar_calib_deformable_model 和 find_planar_uncalib_deformable_model 在极少数情况下会崩溃。该问题已得到修复。
当搜索具有不同 border_shape_models 值的多个模型时,find_shape_models、find_scaled_shape_models、find_aniso_shape_models 和 find_generic_shape_model 出现意外行为。对于 "border_shape_models" 值,只考虑搜索的最后一个模型。该问题已得到修复。现在,如果 "border_shape_models" 对搜索中的任何模型都为真,则对所有模型都为真。此外,现在这些操作符的参考手册条目中也指定了这种行为。
当使用搜索图像的域时,在执行算子find_shape_model、 find_shape_models、 find_scaled_shape_model、 find_scaled_shape_models、 find_aniso_shape_model、 find_aniso_shape_models、 find_generic_shape_model、 find_shape_model_3d 和 find_component_model 时可能会出现未定义的行为。在极少数情况下,这可能会导致意外或轻微不正确的匹配结果。该问题已得到修复。
find_shape_model、 find_shape_models、 find_scaled_shape_model、 find_scaled_shape_models、 find_aniso_shape_model、 find_aniso_shape_models、 find_generic_shape_model、 find_component_model 和 find_shape_model_3d 未使用 NEON 优化实现。该问题已得到修复。
read_component_model 出现错误时会泄露内存。该问题已得到修复。
set_planar_uncalib_deformable_model_metric 在极少数情况下会泄露内存。该问题已得到修复。
当使用模型中心位于模型区域之外的预生成模型时,find_shape_model, find_shape_models, find_scaled_shape_model,
find_scaled_shape_models,
find_aniso_shape_model,
and find_aniso_shape_models
可能会遇到未定义的行为。该问题已得到修复。在极少数情况下,这会导致运行时回归。
请注意,这一更改会导致一个新的形状匹配文件版本。因此,旧版本的 HALCON 无法读取使用此 HALCON 版本创建的模型。
find_shape_models、find_scaled_shape_models 和 find_aniso_shape_models 返回了不同模型的重叠实例,尽管如果每个模型也设置了匹配数,本应根据用户定义的 max_overlap 将它们排除在外。该问题已得到修复。
train_model_components 出错时可能会泄露内存。该问题已得到修复。
当选项 "strinct_boundaries" 设置为 "true" 时,find_generic_shape_model 会抑制正确匹配。该问题已得到修复。
与用户设置金字塔层级时相比,以下算子估算金字塔层级的最大数量有所不同:
cluster_model_components、create_aniso_shape_model、
create_aniso_shape_model_xld、
create_component_model、
create_generic_shape_model、
create_local_deformable_model、
create_local_deformable_model_xld、
create_ncc_model、 create_planar_calib_deformable_model、
create_planar_calib_deformable_model_xld、
create_planar_uncalib_deformable_model、
create_planar_uncalib_deformable_model_xld、
create_scaled_shape_model、
create_scaled_shape_model_xld、
create_shape_model、 create_shape_model_xld、
create_trained_component_model、
determine_deformable_model_params、
determine_ncc_model_params、
determine_shape_model_params、
train_generic_shape_model、
train_model_components
当算子或相应匹配模型中的参数 NumLevels 设置为 "auto",且模型区域几乎是模型图像的全域时,金字塔层级的估计数量就会过高。因此,用户无法设置估计的金字塔层级,也就无法稳健地找到匹配结果。该问题已得到修复。现在,最大可能的估计金字塔层级与用户设定的金字塔级别采用相同的启发式。
在极少数情况下,create_ncc_model 只估计了少量的金字塔层级,尽管也可以在更粗的金字塔层级上找到模型,这导致 find_ncc_model 和 find_ncc_models 的运行时间非常长。该问题已得到修复。因此,与以前的版本相比,create_ncc_model 可能会返回一个金字塔层级不同的模型。
find_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 在大量匹配时不间断,并允许变形。该问题已得到修复。
对于使用 21.05 以前版本的 HALCON 编写的形状模型,read_shape_model 无法一致地设置用户设置参数的值。也就是说,使用 get_generic_shape_model_param 查询到的后缀为"_param "的参数并不一致。该问题已得到修复。
请注意,这一更改会影响兼容性。 更多信息。使用 train_generic_shape_model_param,并使用 create_shape_model、 create_shape_model_xld、 create_scaled_shape_model、 create_scaled_shape_model_xld、 create_aniso_shape_model 或 create_aniso_shape_model_xld 创建的形状模型,会重置用户设置的搜索参数 "min_contrast" 和模型参数 "contrast"(如果模型是使用 XLD 生成的)。该问题已得到修复。
请注意,这一更改会导致一个新的形状匹配文件版本。因此,旧版本的 HALCON 无法读取使用此 HALCON 版本创建的模型。
在将 "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 没有为所有弦分配足够的内存,这在某些情况下会导致错误。该问题已得到修复。
调用 set_shape_model_metric 时,如果内部将级别数改为较小的值,则 find_shape_model、 find_shape_models、 find_scaled_shape_model、 find_scaled_shape_models、 find_aniso_shape_model、 find_aniso_shape_models、 find_generic_shape_model 会崩溃。该问题已得到修复。
set_shape_model_metric 没有正确复制用户设置的形状模型参数,而是为调整后的形状模型设置了默认值。该问题已得到修复。
在某些情况下,对 get_ncc_model_region 的后续调用会泄露内存。该问题已得到修复。
算子 read_matrix 在从 ascii 文件读取矩阵时遇到困难,在某些情况下可能导致无法读取文件或读取错误的数字。该问题已得到修复。
add_metrology_object_circle_measure、 add_metrology_object_ellipse_measure、 add_metrology_object_generic、 add_metrology_object_line_measure 和 add_metrology_object_rectangle2_measure 在给定无效参数类型时可能会崩溃。该问题已得到修复。
在使用 memory_allocator=mimalloc 和高内存使用率的情况下,使用 binocular_disparity 处理超大图像时,可能会因内存耗尽而崩溃。该问题已得到修复。
在某些罕见的情况下,一些算子可能会出现浮点数除以零的情况。请注意,根据 ISO/IEC/IEEE 60559 / IEEE 754,浮点数除以零的行为是明确定义的。但是,这些情况可能会导致后面的程序部分出现意外行为。以下算子可能受到影响:
adjust_mosaic_images、 apply_sample_identifier、
create_bg_esti、 find_bar_code、 find_data_code_2d (用于 QR
码、微型 QR 码和 Aztec 码)、 find_text、 gen_bundle_adjusted_mosaic、
get_data_code_2d_results、
gen_projective_mosaic、
projective_trans_image、
projective_trans_image_size、
projective_trans_region、
regiongrowing_n、 select_feature_set_gmm、
set_planar_calib_deformable_model_metric、
set_planar_uncalib_deformable_model_metric、
set_shape_model_metric、
train_class_gmm、 train_texture_inspection_model
该问题已得到修复。
HALCON 23.11.0.0 通过调用 SetDefaultDllDirectories 更改了 Windows 默认用于搜索 DLL 的路径。由于这导致了一些问题,因此我们恢复了这一更改,不再调用 SetDefaultDllDirectories。
对于未设置为 "utf8" 的文件名编码,HALCON 可能无法打开名称中包含非 ASCII 字符的采集接口或扩展包。该问题已得到修复。
在将 MapType 设置为 "coord_map_sub_pix" 的情况下,gen_arbitrary_distortion_map 和 gen_grid_rectification_map 有时会返回包含待校正图像之外坐标的映射,因此随后调用 map_image 时可能会崩溃。该问题已得到修复。
gen_image1 和 gen_image3 在某些错误情况下会泄漏内存。该问题已得到修复。
在对通道上的 HALCON 算子进行并行处理时,如果算子退出时出错,可能会泄露部分内存。该问题已得到修复。
protect_ocr_trainf、 read_ocr_trainf_names_protected 以及读取加密模型时的 read_dl_model 都不是线程安全的。该问题已得到修复。
在调用 image_to_memory_block 时,如果使用的是不支持的格式,则会创建一个空的内存块,但不会引发错误。该问题已得到修复。
在某些错误情况下,crop_rectangle2 会泄露内存。该问题已得到修复。
在某些错误条件下,dump_window_image 会泄露内存。该问题已得到修复。
在某些错误情况下,set_fuzzy_measure 和 set_fuzzy_measure_norm_pair 会泄露内存。该问题已得到修复。
gray_erosion_shape、 gray_dilation_shape、 gray_opening_shape、 gray_closing_shape、 gray_erosion_rect、 gray_dilation_rect、 gray_opening_rect、 gray_closing_rect、 gray_range_rect 和 find_data_code_2d 在某些情况下会占用大量内存,尤其是在线程较多或掩模较大的情况下。该问题已得到修复。
find_data_code_2d、 gray_closing_shape、 gray_dilation_shape、 gray_erosion_shape 和 gray_opening_shape 显示在 armv7a 和 aarch64 上运行速度明显减慢。该问题已得到修复。
erosion_rectangle1 在宽度和高度为偶数时的表现与使用矩形结构元素的 erosion1 不同,而与 minkowski_sub1 相似。该问题已得到修复。
trainf_ocr_class_box 如果发生错误,则会泄漏内存。该问题已得到修复。
read_ocr_trainf 如果发生错误,则会泄漏内存。该问题已得到修复。
read_ocr_trainf_select 如果发生错误,则会泄漏内存。该问题已得到修复。
trainf_ocr_class_mlp 如果发生错误,则会泄漏内存。该问题已得到修复。
select_characters 如果将 "punctuation" 设置为 "true" ,可能会泄露内存。该问题已得到修复。
如果 "manual_persistence" 设置为 "true",则模式为 "manual "的文本模型的 find_text 在调用 clear_text_result 后可能会在文本结果中泄漏内存。该问题已得到修复。
read_ocr_trainf_names 和 read_ocr_trainf_names_protected 会在出错时泄漏内存。该问题已得到修复。
在某些情况下,如果参数 OrientationFrom 和 OrientationTo 在实际角度周围定义了较大的方向范围,text_line_orientation 会返回错误的方向值。该问题已得到修复。
如果输入元组 "Characters" 包含重复内容,create_ocr_class_svm 会返回错误 6006("临时内存管理:找不到内存元素")。该问题已得到修复。 现在,正确的错误 1305("控制参数 5 值错误")被返回。
hcheck_parallel 无法正确报告写入并行化信息的文件名。该问题已得到修复。
同时调用 par_start 可能会导致崩溃。该问题已得到修复。
在 HDevelop 中使用 timed_wait_condition 时,超时时不会重新锁定互斥。该问题已得到修复。
对于某些区域,smallest_rectangle2 无法确定最小的周边矩形。虽然返回了一个周边矩形,但在这些情况下,它并不是最小的周边矩形。该问题已得到修复。
inner_rectangle1 有时返回的结果与以前的 HALCON 版本不同。该问题已得到修复。
expand_region、expand_gray 和 expand_gray_ref 不关联 "clip_region" 系统参数的设置,总是将其视为 "true"。该问题已得到修复。
在极少数情况下,具有多个输出控制参数的 HALCON 算子在出错时可能会崩溃。只有在 HALCON 23.05 和 22.11.2 版中使用自动算子并行化时,才会在具有多个 CPU 的系统中出现该问题。该问题已得到修复。
如果输入区域包含大量小孔,inner_circle 会返回错误 3513("内部错误:弦数对于 num_max 而言过大")。这也影响了具有相应特征的 region_features 和 select_shape。该问题已得到修复。
gen_ellipse 无法为某些方向生成完整的椭圆。在这种情况下,会缺少一个很小的扇形。该问题已得到修复。
对于由单个像素组成的区域,get_region_convex 返回的结果是不确定的。该问题已得到修复。现在,我们将返回正确的凸壳,即区域像素的行和列。
sort_region 没有检查输入的 Order 和 RowOrCol 的值。该问题已得到修复。 现在,sort_region 返回错误 1302("控制参数 2 的错误值")和 1303("控制参数 3 的错误值")。
对于实数图像,auto_threshold 错误地返回了关于某个 Sigma 值的错误分割阈值的错误信息。该问题已得到修复。
仅在 HALCON XL 中,方法设置为 "max_separability" 的 binary_threshold 可能会导致分割无法最大化可分性。该问题已得到修复。
向 set_system('seed_rand') 传递无效字符串值不会返回错误。该问题已得到修复。
如果找不到许可证文件,get_system_info('available_license_files') 会返回错误 2036("找不到许可证文件")。现在,它不会返回错误,而是返回一个空元组。
在关闭线程池的情况下,尝试运行已打开自动算子并行化的算子时,会导致崩溃。该问题已得到修复。
当所有输入图像都是全域图像且图像尺寸不相等时,HALCON 会为具有多个输入图像的算子初始化输出图像。该问题已得到修复。
当解析给定主机名失败时,open_socket_connect 会泄露内存。该问题已得到修复。
send_data 无法通过 Windows 上未绑定的 UDP 套接字发送数据。该问题已得到修复。
由于 Sigma 不等于零,distance_funct_1d 返回错误 6006("临时内存管理:找不到内存元素")。该问题已得到修复。
在某些情况下,distance_funct_1d 返回模式 "长度"的随机值。该问题已得到修复。
gen_grid_rectification_map 在某些错误情况下会泄漏内存。该问题已得到修复。
gen_projective_mosaic 返回的图像有部分像素的灰度值溢出。 该问题已得到修复。
gen_projective_mosaic 只使用一个输入图像和身份变换时,返回的输出图像比输入图像大一个像素。该问题已得到修复。
某些算子在使用包含按 x 值升序排序且 x 值不同的点的输入函数时,可能会返回一个令人困惑的错误,声称这些值的排序有误。create_funct_1d_pairs 中记录了这种行为的原因。如果两个具有不同实数(64 位浮点)x 值的点非常接近,以至于在从双精度数转换为浮点烽后产生了相同的浮点数(32 位浮点)值,就会出现这种情况。该问题已得到修复。 现在,对于 x 值与浮点值相同的点,会返回一条更合适的错误信息,同时警告说,这可能是由于将双精度数转换为浮点数所造成的。
可能涉及的算子名单: integrate_funct_1d、 zero_crossings_funct_1d、 local_min_max_funct_1d、 derivate_funct_1d、 distance_funct_1d、 invert_funct_1d、 compose_funct_1d、 match_funct_1d_trans、 transform_funct_1d、 sample_funct_1d、 get_y_value_funct_1d、 set_fuzzy_measure、 set_fuzzy_measure_norm_pair。
对于支持 AVX2 指令集的处理器,在使用插值方法 "bicubic" 并将 int_zooming 设置为 "true" 的情况下,affine_trans_image 的并行化被破坏。该问题已得到修复。
由于有符号整数溢出,以下算子可能在图像类型 "int2" 和插值模式 "constant" 的边界情况下错误工作:
affine_trans_image, affine_trans_image_size,
crop_rectangle2, rotate_image, zoom_image_factor, zoom_image_size
该问题已得到修复。
get_rectangle_pose 在某些出错情况下会泄露内存。该问题已得到修复。
在极少数情况下,polar_trans_region_inv 不会返回。该问题已得到修复。
gen_projective_mosaic 在出错情况下泄露少量内存。该问题已得到修复。
tuple_is_number 返回 1,而字符串 "08" 和 "09" 不是有效的八进制数。该问题已得到修复。
使用 tuple_select_rank 或 tuple_median 处理包含 NaN 元素的元组时,在某些情况下会导致崩溃。该问题已得到修复。
serialize_tuple 未正确处理小于 INT32_MIN 的整数元组元素。该问题已得到修复。
在非常罕见的角落情况下,intersection_contours_xld 可能会错过有效的交叉点。该问题已得到修复。
fit_line_contour_xld 在某些出错情况下会泄露内存。该问题已得到修复。
在某些错误情况下,使用算法 "voss" 或 "fitzgibbon" 的 fit_ellipse_contour_xld 会泄露内存。该问题已得到修复。
在某些情况下,fit_circle_contour_xld 返回的点顺序不正确。该问题已得到修复。
在极少数情况下,通过 affine_trans_contour_xld 或 projective_trans_contour_xld 转换的封闭轮廓并不封闭。该问题已得到修复。
如果在 "point_to_segment" 模式下将 MaxDistance 设置为非常大的值,则 create_distance_transform_xld 会崩溃。该问题已得到修复。现在,在这种情况下会返回错误信息。
当一个半径参数设置为零时,gen_ellipse_contour_xld 会泄露内存。该问题已得到修复。
HALCON 扩展了公共函数 dev_disp_3d_coord_system。在此之前,该函数只能在本地示例程序 hdevelop/Calibration/Multi-View/check_calib_image_quality.hdev 中使用。一些示例程序现在使用 dev_disp_3d_coord_system 代替 disp_3d_coord_system。
如果给定的序列化基础名称有多个子文件夹,函数 train_dl_model 无法继续训练。该问题已得到修复。
在使用 dev_display_deep_counting_results 和大图像时,min_score 滑动杆和按钮 Exit 可能会消失。该问题已得到修复。
当以空元组作为 "DLDatasetInfo" 调用函数 dev_display_dl_data 并请求显示分类基本事实或结果时,该函数返回错误。该问题已得到修复。现在,如果传入一个空元组作为 "DLDatasetInfo",函数将按照其文档中描述的方式运行。
在 WindowHandle 中放大或缩小时,深度学习函数 dev_display_dl_interactive_confusion_matrix 有时无法使用。该问题已得到修复。
深度学习函数 find_dl_detection_param 对兼容的目标输入大小进行了错误的计算检查。该问题已得到修复。
函数 dev_display_dl_data 使用了校准和三维计量许可证模块中的算子。只有当参数 KeysForDisplay 包含值 "point_cloud" 时,才会使用这些算子。HDevelop 的已使用模块对话框总是将校准和三维计量许可证模块报告为已使用。该问题已得到修复。现在,所有的三维可视化都被转移到了一个新的专用函数 dev_display_dl_3d_data。对示例 3d_gripping_point_detection_workflow.hdev 进行了调整,将参数 "point_cloud" 更名为更准确的名称 "gripping_point_cloud"。
请注意,这一更改会影响兼容性。 更多信息。函数 gen_dl_samples 在处理包含多个对象的图像时不会出错。这可能会导致其他不支持此类图像的函数出现错误。该问题已得到修复。现在,对于包含多个对象的图像,gen_dl_samples 会抛出相应的错误。
使用空字符串可能会导致 C 语言接口崩溃或内存泄漏。该问题已得到修复。请注意,由于 HALCON 元组没有无效元素的概念,因此不建议使用这种方法。例如,可以考虑使用空元组来表示无效值。
此外,如果未定义 HC_FAST,HALCON/C API 的以下三个字符串函数将不起作用:init_s_from_utf8、init_s_from_local8bit 和 init_s_from_wcs。这一问题也已得到修复。
使用空字符串可能会导致 C++ 语言接口崩溃或内存泄漏。该问题已得到修复。请注意,由于 HALCON 元组没有无效元素的概念,因此不建议使用这种方法。例如,可以考虑使用空元组来表示无效值。
在 HKeepAspectRatio 设置为 true 的情况下放大 HSmartWindowControlWPF 时,调整其大小总是会导致以 1:1 的宽高比再次显示完整图像。该问题已得到修复。现在,可见部分只是根据控件大小的变化进行扩展或缩小。但是,如果在创建控件或最后一次调用 SetFullImagePart 后,从未改变过部件的默认全图视图,那么调整大小后,全图仍将以 1:1 的长宽比适应新的大小。
使用空字符串可能会导致 .NET 语言接口崩溃或内存泄漏。该问题已得到修复。请注意,由于 HALCON 元组没有无效元素的概念,因此不建议使用这种方法。例如,可以考虑使用空元组来表示无效值。
执行多个算子时,Easy Extension 适配器在 HDevelop 中无法报告正确的参数名称。该问题已得到修复。
现在可以在初始化 HALCON 之前在 HALCON/Python 中配置某些 HALCON 功能,例如自旋锁的使用。有关详细信息,请参阅程序员指南中的 "HALCON/Python 中的全局 HALCON 函数 "一节。
HALCON/Python 现在支持 HALCON XL。详情请参见程序员指南。
在 HDevEngine/Python 中使用多维向量中的图标输出和 get_global_iconic_var 会导致内存泄漏。该问题已得到修复。
HALCON 变量检查现在在很大程度上能够适应所使用的 Visual Studio 主题。此外,窗口也稍作了重新设计,更接近 Visual Studio 窗口的外观和感觉。支持 Visual Studio 2017、2019 和 2022 版本。
在 Visual Studio 中打开并运行多个项目后,在 HALCON 变量检查中显示 HALCON 数据可能会停止工作。该问题已得到修复。此外,无法显示较大数据(如大图像)的问题已基本解决。
Visual Studio 2022 的 VSIX 未正确签名,导致 VSIX 安装程序显示数字签名无效的消息。该问题已得到修复。
在启用默认错误处理的情况下,通过 C 语言接口从 HALCON 扩展包调用算子时,在无法加载扩展包时不会报错。该问题已得到修复。
c#/IACallback/dotnetcore31 示例针对桌面应用程序的配置不正确。该问题已得到修复。
在 dev_set_preferences 和 dev_get_preferences 的参考手册条目中,以及在 HDevelop 和 HDevEngine 示例 test_jit_speedup.hdev 中,HDevelop 偏好设置对话框被错误地命名为 "Experienced Users",而不是 "Experienced User"。该问题已得到修复。
HALCON 变量检查工具栏现在可适应所使用的 Visual Studio 主题。此外,使用的图标也已重新设计。
新增扩展包示例程序 extension_package/easy_extensions/dotnet,作为 .NET 的简易扩展接口示例。它展示了如何将基于 HALCON/.NET 接口的 .NET 函数轻松集成到 HALCON 的算子集,并可在 HDevEngine 和 HDevelop 中使用。
该扩展包包含一个用户定义的 HALCON 算子示例的 .NET 源代码和算子定义文件。
此外,它还包含定义 .NET 简易扩展接口适配器的源代码。该简易扩展适配器为任何在.NET中编码的用户定义的 HALCON 算子实现了通用供应方法,并可重复用于自己的 .NET HALCON 算子集扩展。
变量检查 Visual Studio 扩展无法正确显示版本号。该问题已得到修复。
变量检查 Visual Studio 扩展无法与 HALCON .NET Core NuGet 软件包一起使用。该问题已得到修复。
偶然与 HALCON 模块同名的模块不再产生错误。取而代之的是一个警告,但并不禁止继续使用。这同样适用于已加载调试模块的不兼容版本。
有关新接口版本和新支持的图像采集设备的最新信息可在 MVTec 的网络服务器 上找到。请参阅各个 图像采集接口 文档中的发行说明,了解有关改进、错误修复或是否需要相应设备驱动程序新版本的信息。
有关新接口版本和新支持的 数字输入/输出接口 的最新信息,可在 MVTec 的网络服务器 上找到。有关改进、错误修复或是否需要相应设备驱动程序新版本的信息,请参阅各数字 I/O 接口文档中的发行说明。
手册 "基于 Arm 平台的 HALCON" 已进行扩展,包含了有关嵌入式评估许可证以及如何在 Arm 平台上安装的信息。
安装指南没有提及包含许可证加密狗硬件支持的 SOM 软件包,而是提供了过时的手册说明。该问题已得到修复。
在 HDevelop 用户指南中,元组描述已更新并缩短。
提高了 HDevelop 用户指南的可读性。图像描述更加直观。
更新了 HDevelop 用户指南,以提高可读性和文字流畅性。
安装指南 描述了无效的系统要求。深度 OCR 识别组件声明可在 CPU 上进行训练。然而,该组件只能在 GPU 上进行训练。该问题已得到修复。
HDevelop 用户指南中对浮动窗口重启行为的描述不清楚。该问题已得到修复。
当使用两个版本的 HALCON 并执行变量检查时,可能会导致许可错误。安装指南已更新,说明了如何避免这一错误。
HDevelop 用户指南中给出的算子优先级不正确。该问题已得到修复。
解决方案指南 III-B 二维测量参考了一个过时的位置,以获取有关二维计量的更多信息。该问题已得到修复。
解答指南 III-B 二维测量中提到了一个关于形状模型区域中心的错误算子。该问题已得到修复。
解答指南 I 基础几乎每一章都有一个关于选择算子的小节。由于每章的方法说明中都提到了算子,因此移除了相应的算子选择小节。
德文参考手册中的 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" 的输出值范围的缩放不清楚。这一问题已得到解决。
参考手册中的 apply_bead_inspection_model 条目没有说明忽略图像域。该问题已得到修复。
对 correlation_fft 和 convol_fft 的参考手册条目进行了扩展,以明确算子的确切行为。
文档中没有说明手眼标定不适用于远心相机。该问题已得到修复。现在,该行为已在 create_calib_data 的参考手册条目中记录。
create_dl_model_detection 的参考手册条目将 "class_weights" 列为可设置参数,尽管该参数对检测网络没有影响。该问题已得到修复。
德文参考手册中 erosion_rectangle1 的条目没有正确说明,如果宽度和高度不是奇数,图像将如何受到腐蚀操作的影响。该问题已得到修复。
参考手册中的 find_generic_shape_model 项对于多个图像目标的情况不够精确。该问题已得到修复。
基于深度学习的对象检测参考手册章节遗漏了 SoAP 公式中的归一化系数。该问题已得到修复。
参考手册中有关二维变换的章节包含关于以像素为中心的坐标的错误说明。该问题已得到修复。
德文参考手册中的 get_data_code_2d_param 和 set_data_code_2d_param 条目遗漏了专门针对微型 QR 码的部分。该问题已得到修复。
对于二维数据码,"bin_module_data" 的顺序与通过 "module_1_rois" 和 "module_0_rois" 访问的模块之间的关系没有很好的记录。该问题已得到修复。更多信息,请参见 get_data_code_2d_results 和 get_data_code_2d_objects 的参考手册条目。
参考手册中的 get_dl_model_param 条目没有说明更改 DL 模型的 "求解器" 会重置模型的 "学习率"。该问题已得到修复。
关于 get_object_model_3d_params、set_object_model_3d_attrib 和 remove_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" 支持 "共享" 模式。不过,"共享" 模式已不再有效,内部设置为 "独占",以避免破坏兼容性。参数文档已作相应调整。该问题已得到修复。
set_window_param 的参考手册条目没有提到 "window_title "不能为缓冲区窗口设置,包括通过 dev_open_window 打开的窗口。该问题已得到修复。
日文参考手册没有区分不同的字体类型,导致格式误导。该问题已得到修复。 现在,我们使用了不同的字体类型。
HTML 参考文档中的一些表格现在可以交替使用背景颜色,从而简化视觉导航。
MVTec 学院 的各种互动在线课程涵盖许多主题。在手册、解决方案指南和算子参考资料中,只要合适,就会添加 MVTec 学院相关课程的链接。
改进了 HTML 文档的布局。现在,行的长度减少了,阅读起来更轻松。
第三方版权页面现在包含指向相应软件位置的链接。
列出第三方库版权的表格包含异常格式。该问题已得到解决。
HALCON 安装程序中包含一个过时的 somctl 版本,在 Windows 系统上,该版本导致无法通过控制面板卸载 HALCON。由于新版本的 SOM 不再需要在 HALCON 安装中使用 somctl,因此后者已从安装中完全删除。
自 HALCON 24.11 起,armv7-linux 平台已被宣布为标准 HALCON 平台。
在 Windows 系统中,当前用户安装的示例和图像的默认位置无法自动搜索,这需要从外部设置环境变量 HALCONEXAMPLES。这一问题已得到修复。现在会检查 "当前用户" 和 "所有用户" 的路径,并使用第一个可用路径。
在 Windows 上使用浮动许可证时,HALCON 现在会启动一个看门狗进程,以确保在 HALCON 进程终止时立即返回许可证。
HALCON Progress 和 HALCON Steady 版本现在共享相同的二进制文件,称为 HALCON 24.11 Steady。
HALCON Progress 版本的许可证现在也可用于相应的 HALCON Steady 版本。
所需的许可证模块已根据新的深度学习许可证进行了调整。
新增许可证分析工具 hinfo,可在 HALCON 安装的 bin 文件夹中找到。该工具会分析安装的 HALCON 版本所能找到的所有许可证,并返回许可证的特征和有效性信息。
已添加参数 "supported_editions" 和 "licensed_product_edition" 作为 get_system 和 get_system_info 的参数。此外,参数 "edition" 和 "product_edition" 现已废弃。
halconuser 扩展包示例的示例文档包含一个不正确的链接。该问题已得到修复。
examples/extension_package/useropencl 中的 gen_image_device_ptr 文档丢失。该问题已得到修复。
在 Linux 下,程序窗口在启动时并不总是有焦点。这一问题已得到修复。
EULA 中缺少章节编号。该问题已得到修复。
支持语言接口示例的 Visual Studio 最低版本已从 VS2005 更改为 VS2013。
如果使用 -t 选项,hrun 会泄露少量内存。此外,examples/arm-linux/hrun.cpp 也存在同样的问题,这些问题已得到修复。
如果使用选项 -D,hrun 和 hpeek 会泄露少量内存。此外,examples/arm-linux/hrun.cpp 也存在同样的问题,这些问题已得到修复。
第三方库 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 以前版本的变化。