MVTEC Halcon 24.05.0.0 Progress Full Version Linux x64-linux HALCON24.05.0.0进阶版完整版 64位x64-linux版
HALCON 23.11.0.4 Full Version (x64-linux):
文件名: halcon-24.05.0.0-x64-linux.zip
文件大小: 7393888304 字节 (6.89 GB)
修改日期: 2024-05-14 18:05
MD5: 81f0fdf251c14e9efafc333c2f043895
SHA1: 573ec2625561bd88b91fade157cee8e98a8288bd
SHA256: 17245e05fd9cdbcbbff29a06edb0dd2d23b140d1487a3b74615fa5a06cf4cae0
CRC32: 3de0a29e
MVTEC官方下载
www.mvtec.com
百度网盘下载地址:
通过百度网盘分享的文件:halcon-24.05.0.0-x64-linux.zip
链接:https://pan.baidu.com/s/127zlpE5coL1MjMkd0Z_efA
提取码:
MVTEC Halcon 24.05.0.0 Progress Full Version Linux x64-linux HALCON24.05.0.0进阶版完整版 64位x64-linux版
http://visionbbs.com/thread-32301-1-1.html
(出处: 石鑫华视觉论坛)
Release Notes for HALCON 24.05.0.0 Progress
This document provides the release notes for MVTec HALCON 24.05.0.0 Progress, as released in May2024.
Contents
Major New Features of HALCON 24.05.0.0 Progress
Extended Parameter Estimation for Shape Matching
Bar Code Reader Improvements for Stacked Bar Codes
3D Improvements & Enhancements: Importing 3D Object Models From the STEP Format
New Version of the OpenVINO™ Toolkit AI² Plug-in
Speedups and Further Improvements
Compatibility
Licenses
HALCON Library
HALCON Applications
Image Acquisition Interfaces
Digital I/O Interfaces
Extension Packages
Further Compatibility Information
Legacy or No Longer Supported Functionality
Supported Operating Systems
Windows
Linux
Detailed Description of Changes in HALCON 24.05.0.0 Progress
Speedup
New Functionality
Bug Fixes
Bug Fixes
New Functionality
Bug Fixes
HDevelop Example Programs
HDevelop
HDevEngine
HALCON Library
Procedures
HALCON/C
HALCON/C++
HALCON/.NET
HALCON/PYTHON
HALCON Variable Inspect
Extension Packages
Image Acquisition Interfaces
Digital I/O Interfaces
Documentation
Installation
Licensing
Major New Features of HALCON 24.05.0.0 ProgressExtended Parameter Estimation for Shape Matching
HALCON 24.05 introduces the first iteration of the extended parameter estimation for Shape Matching. With its subpixel accuracy, Shape Matching finds objects robustly and accurately in real-time, even in the most challenging situations. Thanks to the extended parameter estimation, manual parameter adjustments will soon be a thing of the past.
Using multiple annotated images, users can now easily optimize for maximum online speed while keeping robustness through automated parameter tuning. Users thus benefit from a faster implementation of shape matching applications, even without specialized expertise.
Shape Matching has never been easier!
Bar Code Reader Improvements for Stacked Bar Codes
The bar code reader for GS1 DataBar Expanded Stacked codes has been improved in HALCON 24.05. Depending on the application, customers can expect significant improvements to their decoding rates. This will especially benefit industries such as logistics, retail, and manufacturing, where stacked bar codes are an essential means of tracking and tracing goods.
3D Improvements & Enhancements: Importing 3D Object Models From the STEP Format
Starting with version 24.05, HALCON supports the STEP (Standard for the Exchange of Product Data) file format, the industry standard for 3D CAD data. Customers can now seamlessly load STEP CAD data directly into a HALCON 3D object model without any intermediate steps or conversions. The STEP format is supported by most common CAD programs, increasing interoperability and efficiency, because models for 3D matching can be taken directly from the planning data in the CAD software.
New Version of the OpenVINO™ Toolkit AI² Plug-in
Parallel to the HALCON 24.05 release, a new version of the OpenVINO Toolkit AI² plug-in will be released. This update uses the latest LTS version of the Intel® Distribution of OpenVINO™ Toolkit, ensuring compatibility with the latest Intel hardware and boosting the inference performance of deep learning applications.
Notably, the new plug-in version enhances support for Intel’s 13th generation of Core processors, leading to improved inference performance. In addition, customers can now also utilize Intel’s discrete graphics cards for inference, providing greater flexibility in selecting the appropriate hardware for their application.
Speedups and Further Improvements
HALCON 24.05 also includes several performance optimizations for various core technologies. For example, unwarping byte images using a vector field is now up to 285 % faster on AVX2-capable Intel CPUs. The operator map_image is now up to 25% faster as well.
In addition, HALCON 24.05 provides adjustments to many operators to address performance impacts resulting from Intel's resolution of the “Downfall” security vulnerability.
CompatibilityLicenses
HALCON 24.05.0.0 Progress requires a valid HALCON Progress license and does not run with licenses of HALCON 13 and earlier versions or HALCON Steady.
HALCON Library
Compared to HALCON 23.11 Progress, many extensions have been introduced. Thus, the HALCON 24.05.0.0 Progress libraries are not binary compatible with HALCON 23.11 Progress or earlier versions. However, HALCON 24.05.0.0 Progress is mostly source-code compatible to HALCON 23.11 Progress except for the changes listed below:
Legacy gnuplot operators have been removed from HALCON.
More information.
The OpenSSL libraries are used for HDevelop, HALCON socket operators when using TLS encryption, floating licensing, and the OPC-UA interface. HDevelop and the HALCON socket operators maintain OpenSSL 1.1 and OpenSSL 3 compatibility, but only OpenSSL 3 can be used for floating licensing and the OPC-UA interface. For systems that do not provide the OpenSSL 3 libraries, the OpenSSL 3 libraries are provided as third-party libraries.
More information.
A model calibrated with optimize_dl_model_for_inference in the fixed version and for the HAILO AI² Plugin can only be inferred by HALCON versions that also include the bug fix. The bug fix is compatible with all HAILO AI² Plugins that are compatible with the given HALCON version.
More information.
Due to numerical instabilities, the calculation of the value compared with aniso_scale_change_restriction has been fixed which can result in different results obtained by find_local_deformable_model, find_planar_calib_deformable_model, and find_planar_uncalib_deformable_model.
More information.
HALCON Applications
Please re-compile all C, C++, or .NET programs developed with HALCON 23.11 Progress. The incompatibility with HALCON 23.11 Progress or earlier versions mainly concerns the binaries, with only few changes in the language interfaces. If you encounter problems during recompiling your programs, please check the detailed description of changes below.
Image Acquisition Interfaces
In general, HALCON 24.05.0.0 Progress, HALCON 23.11 Progress, and HALCON 20.11 Steady image acquisition interfaces are library compatible.
HALCON 24.05.0.0 Progress includes only a subset of available image acquisition interfaces. For more information, see the reference documentation of the Image Acquisition Interfaces. You can download additional interfaces from our web server.
Digital I/O Interfaces
In general, HALCON 24.05.0.0 Progress, HALCON 23.11 Progress, and HALCON 20.11 Steady digital I/O interfaces are library compatible.
HALCON 24.05.0.0 Progress includes only a subset of available digital I/O interfaces. For more information, see the reference documentation of the I/O Interfaces. You can download additional interfaces from our web server.
Extension Packages
Please re-generate your own extension packages developed with HALCON 23.11 Progress.
Further Compatibility Information
For gray_histo, gray_histo_abs, and gray_histo_range, the input parameter 'Regions' has been renamed to 'Region', which breaks compatibility in case of calls with keyword argument.
More information.
Legacy or No Longer Supported Functionality
The following functionality may be discontinued in a future major release. See the reference manual entries of legacy operators for details on how to replace them.
The procedure set_dl_model_param_max_gpu_batch_size has been set to legacy and is not used anymore in the examples. The operator set_dl_model_param with a suitable 'batch_size' should be used instead.
Component-based matching is set to legacy for HALCON 24.05. This includes the following operators: clear_component_model, clear_training_components, cluster_model_components, create_component_model, create_trained_component_model, deserialize_component_model, deserialize_training_components, find_component_model, gen_initial_components, get_component_model_params, get_component_model_tree, get_component_relations, get_found_component_model, get_training_components, inspect_clustered_components, modify_component_relations, read_component_model, read_training_components, serialize_component_model, serialize_training_components, train_model_components, write_component_model, write_training_components.
distance_funct_1d is now legacy.
Supported Operating SystemsWindows
HALCON 24.05.0.0 Progress has been compiled for the x64-win64 platform version for Windows Windows 10 (x64 editions), 11, Windows Server 2016, 2019, 2022 on Intel 64 or AMD 64 with SSE2 (AVX2 dispatch) processors.
Linux
HALCON 24.05.0.0 Progress has been compiled for the following Linux platform versions:
x64-linux platform version for Linux x86_64, GLIBC_2.27, GLIBCXX_3.4.24 on Intel 64 or AMD 64 with SSE2 (AVX2 dispatch) processors
armv7a-linux platform version for Linux armv7a, Kernel with hidraw support, hard-float ABI, GLIBCXX_3.4.24, GLIBCXX_3.4.24 on Armv7-A with NEON support
aarch64-linux platform version for Linux aarch64, Kernel with hidraw support, GLIBC_2.27, GLIBCXX_3.4.24 on Armv8-A with AArch64 support
Please refer to the Installation Guide for detailed system requirements corresponding to the different Application Binary Interfaces.
Detailed Description of Changes in HALCON 24.05.0.0 Progress
The changes in HALCON 24.05.0.0 Progress are described with respect to HALCON 23.11.
HDevelopNew FunctionalityIDE
dev_get_system now also supports the parameter 'call_stack', which can be used to return the current call stack.
Miscellaneous
The HALCON third-party library OpenSSL has been updated to OpenSSL 3. Previously, OpenSSL 1.1 was used. The docker example examples/docker/halcon-application/ has been adapted to use Ubuntu 22.04, which supports OpenSSL 3 by default.
Note that this change affects the compatibility. Read more.
Bug FixesAssistants
In the HDevelop Matching Assistant, 'Display Image Pyramid Level' for the correlation-based, descriptor-based, and deformable matching was disabled. This problem has been fixed.
GUI
Adding a new tuple element in HDevelop's Variable Inspect Window was not possible anymore. This problem has been fixed.
The Gray Histogram of HDevelop did not display the correct histogram data if there were more than one graphics windows. This problem has been fixed.
Help
Since a recent bug fix, the procedure documentation in HDevelop was displayed in the language configured for the operator reference. Though generally desirable, the procedure documentation thus was restricted to the three languages English, German, and Japanese, whereas before, all GUI languages were allowed. Therefore, the decision was made to revert to the former behavior.
Now,
the procedure documentation is again displayed in HDevelop's GUI language (and therefore can differ from the operator reference),
this behavior is explicitly documented in the HDevelop User's Guide, and
HDevelop's GUI has been adapted accordingly by renaming the option “HDevelop GUI” under “Preferences >User Interface > Language” to “HDevelop GUI and Procedure Reference”).
IDE
When (temporarily) losing the connection to the file system in combination with HDevelop's application file tracking, HDevelop could become unresponsive. This problem has been fixed. Now, HDevelop reports the problem and offers to stop the application file tracking.
In some cases, HDevelop's file tracking mechanism could lead to a crash. The crash occurred when an unloaded procedure (e.g., due to an invalid file name) was modified and HDevelop subsequently tried to reload it. This problem has been fixed.
Miscellaneous
Compute devices were not deactivated when resetting the program in HDevelop (e.g., when pressing F2). This problem has been fixed.
HDevelop Example ProgramsNew HDevelop Example Programs
hdevelop/XLD/Sets/intersection_region_contour_xld.hdev
hdevelop/Matching/Shape-Based/train_generic_shape_model_sample_workflow.hdev
Bug Fixes
The HDevelop examples locate_car_door, locate_engine_parts, and create_planar_calib_deformable_model mentioned erroneous coordinate systems in their explaining comments. This problem has been fixed.
HDevEngineHALCON LibrarySpeedup
difference, intersection, symm_difference, and union2 are now faster when the second parameter is a single region with a large number of runs.
unwarp_image_vector_field for byte images is now faster on AVX2 capable Intel processors by up to 285%. This only applies to image sizes that do not require HALCON XL.
New Functionality3D
intersect_plane_object_model_3d has been extended to allow 1:N relations between one input 3D object model and multiple plane poses. Now, the operator allows the relations 1:N, N:N and N:1.
With HALCON 24.05, read_object_model_3d now supports reading of the STEP 3D data exchange format. A new STEP-specific generic parameter 'max_surface_deviation' is introduced to set the accuracy of the read model. The reference manual entry of read_object_model_3d has been extended accordingly. Additionally, an example model 'engine_part_bearing.step' is included in the installation.
The Qhull library has been updated to version 2020.2 (8.0.2).
When using any of the following 3D operators in parallel running threads (for example, using par_start), the performance of these operators might have been affected by the usage of another operator from the list in a different task:
convex_hull_object_model_3d, distance_object_model_3d (for generic parameter 'method' set to 'voxel'), max_diameter_object_model_3d, intersect_plane_object_model_3d (only for 3D primitives), prepare_object_model_3d (for parameter Purpose set to 'distance_computation'), register_object_model_3d_global (only for 3D primitives), register_object_model_3d_pair (only for 3D primitives), select_object_model_3d (for parameter Feature set to 'diameter_bounding_box' or 'diameter_object'), smallest_bounding_box_object_model_3d, smallest_sphere_object_model_3d, triangulate_object_model_3d (only for 3D primitives and parameter 'Method' set to 'greedy')
This problem has been fixed.
Bar Code
Decoding of GS1 DataBar Expanded Stacked barcodes is now more robust.
get_bar_code_result and get_data_code_2d_results now support the new mandatory associations of GS1 application identifiers for AI 8030 (DIGSIG), which have been introduced with the GS1 General Specifications, Version 24.0. The mandatory associations are considered when using the result parameters 'gs1_lint_result' and 'gs1_lint_passed'.
Data Code
get_data_code_2d_results has been extended with the parameter 'quality_isoiec29158_intermediate_float_grades', which returns the intermediate grades of the print quality inspection of Data Matrix ECC 200 codes according to ISO/IEC 29158:2020.
get_bar_code_result and get_data_code_2d_results now support the new mandatory associations of GS1 application identifiers for AI 8030 (DIGSIG), which have been introduced with the GS1 General Specifications, Version 24.0. The mandatory associations are considered when using the result parameters 'gs1_lint_result' and 'gs1_lint_passed'.
The default value for 'model_type' in the QR Code reader has been changed to 2 for 'standard_recognition' and 'enhanced_recognition', as Model Type 1 codes are deprecated and have been removed from ISO/IEC 18004 in 2006. Applications still working with Model Type 1 codes need to set 'model_type' to 'any'.
Deep Learning
Global Context Anomaly Detection (GC-AD) has been extended with domain aware inference. The procedure preprocess_dl_samples has been extended to support 'keep_domain' as an option for DLPreprocessParam.domain_handling for GC-AD models in inference mode. As a result, apply_dl_model will only consider the input domain when calculating the 'anomaly_score' value.
The following two HDevelop programs have been extended to show the new functionality:
A section named "Domain Handling During Inference" has been added to the "Deep Learning/Anomaly Detection and Global Context Anomaly Detection" chapter reference to explain the new functionality.
hdevelop/Deep-Learning/AnomalyDetection/dl_anomaly_detection_global_context_inference.hdev
hdevelop/Deep-Learning/AnomalyDetection/dl_anomaly_detection_global_context_workflow.hdev
A new version of the OpenVINO AI Accelerator Interface, 21.05.3.1, is released at the same time as HALCON 24.05 and can be obtained via SOM. By default, the HALCON OpenVINO AI Accelerator Interface is delivered with the OpenVINO 2023.3 LTS plugins for CPU and GPU.
Graphics
disp_text and dev_disp_text have been extended with new generic parameters:
`backdrop_blur_sigma' to specify the amount of blur of the background of the text box
'rotate_phi', 'rotate_col', and 'rotate_row' to enable rendering of rotated text
'border_width' and 'border_color' to specify how the border of the text box is rendered
Legacy gnuplot operators have been removed from HALCON.
Note that this change affects the compatibility. Read more.
Matching
train_generic_shape_model now offers the possibility to determine the parameter 'min_score' by extended parameter estimation. Doing so, a suitable value is estimated given representative matching samples. Accordingly, set_generic_shape_model_param has been extended to set representative samples to the matching model.
Component-based matching is set to legacy for HALCON 24.05.
Miscellaneous
The Extension Package Programmer's Manual now explains more details of the HSetExtendedErrorInfo function and also mentions the related HSetExtendedErrorInfoF function.
On August 24, 2022, a security vulnerability found in 6th through 11th generations of consumer and 1st through 4th generations of Xeon Intel x86-64 microprocessors has been reported to INTEL (CVE-2022-40982). To resolve the vulnerability, microcode updates have been released that significantly reduce the performance of HALCON operators that make use of gather instructions. To mitigate the performance impact of the microcode updates, many affected HALCON operators have been revised.
On startup, HALCON now automatically detects if the used CPU is affected and prefers the usage of alternative implementations without gather instructions. To query the recommendation of HALCON, get_system has been extended with the new parameter 'avx2_gather_recommended'. If the old implementations with gather instructions is desired (e.g., for unpatched CPUs), set_system now has the new parameter 'avx2_gather_enable' to control whether AVX2 gather instructions should be used or not. 'avx2_gather_enable' is also available for get_system to query the current status.
HALCON automatically sets 'avx2_gather_enable' to 'false' for AMD CPUs Zen1 and Zen2 because of their poor performance with gather instructions.
The following operators are affected by the security vulnerability and have been revised to either mitigate the performance impact or improve the performance compared to previous HALCON versions:
Although not affected by the security vulnerability, many HALCON operators have been sped-up:
create_shape_model, create_scaled_shape_model, and create_aniso_shape_model are now up to 20% faster for affected CPUs and up to 25% faster for newer, unaffected CPUs on processors that support AVX2 for Templates of type 'byte'.
polar_trans_image_ext with system parameter 'int_zooming' set to 'true' for interpolation 'bilinear' on processors that support AVX2 are now up to 35% faster for affected CPUs and up to 45% faster for newer, unaffected CPUs for images of type 'byte'.
A speedup of 10% on average can be expected for the robust PQI, i.e., for the print quality inspection if 'quality_isoiec15415_decode_algorithm' is set to 'robust' using set_data_code_2d_param.
projective_trans_image, projective_trans_image_size, and projective_trans_region with system parameter 'int_zooming' set to 'true' for interpolation 'bilinear' on processors that support AVX2 are now up to 70% faster for affected CPUs and up to 60% faster for newer, unaffected CPUs for images of type 'byte'.
gen_bundle_adjust_mosaic and gen_projective_mosaic are now up to 70% faster for images of type 'byte' for affected and patched CPUs while the speedup for newer, unaffected CPUs is up to 60%, when compared to HALCON 23.05.
affine_trans_region with system parameter 'int_zooming' set to 'true' is now up to 35% faster for affected CPUs and up to 65% faster for newer, unaffected CPUs for interpolation 'constant' on processors that support AVX2.
affine_trans_image, affine_trans_image_size, zoom_image_factor (if the ScaleWidth and ScaleHeight are not exactly 0.5), zoom_image_size (if the output image size is not half the input image size), rotate_image (for angles not multiples of 90 degrees) and crop_rectangle2 with AlignToAxis set 'true' with system parameter 'int_zooming' set to 'true' for interpolation 'bilinear', 'constant', and 'weighted', on processors that support AVX2 are now up to 35% faster for affected CPUs and up to 60% faster for newer, unaffected CPUs for images of type 'byte'. The same holds for gen_gauss_pyramid using interpolation 'constant' and 'weighted' for images of type 'byte', when the Scale is not exactly 0.5.
create_shape_model, create_scaled_shape_model and create_aniso_shape_model have been revised for Templates of type 'uint2' on processors that support AVX2 to mitigate the up to −20% slowdown. HALCON 24.05 is now faster by up to 15% compared to previous versions.
determine_shape_model_params and determine_ncc_model_params have been revised for images of type 'uint2' on processors that support AVX2 to mitigate the up to −10% slowdown. The slowdown could be compensated entirely.
histo_to_thresh has been revised for absolute histograms with 256 values on processors that support AVX2 to mitigate the up to −60% slowdown. The slowdown could not be compensated entirely, the performance regression is now only up to –30%.
binary_threshold has been revised for images of type 'byte' on processors that support AVX2 for Method 'smooth_histo' to mitigate the up to −45% slowdown. Although the slowdown could not be compensated entirely, the performance regression is now only up to –20%.
gen_grid_rectification_map has been revised for images of type 'byte' and 'uint2' on processors that support AVX2 to mitigate the up to −45% slowdown. Although the slowdown could not be compensated entirely, the performance regression is now only up to –20%.
find_planar_calib_deformable_model has been revised on processors that support AVX2 to mitigate the up to −10% slowdown. The slowdown could be compensated entirely.
derivate_gauss has been revised for all supported image types and the performance regression of up to −20% due to a microcode update could almost entirely be fixed with a remaining slowdown of about −5% for images with full domain. As a result of this, edges_color, edges_color_sub_pix and edges_sub_pix for images of type 'byte' and 'uint2' for Filter 'canny', points_foerstner for Smoothing 'gauss', critical_points_sub_pix for Filter 'gauss' and 'facet' and all supported image types, local_max_sub_pix and local_min_sub_pix for Filter 'gauss' and 'facet' and all supported image types and saddle_points_min_sub_pix for Filter 'gauss' and 'facet' have been affected in an identical or slightly less manor.
polar_trans_image_ext with system parameter 'int_zooming' set to 'true' has been revised for interpolation 'bilinear' for images of type 'int2' and 'uint2' on processors that support AVX2 to mitigate the −50% slowdown. Although the slowdown could not be compensated entirely, the performance regression is now only up to –20%.
projective_trans_image and projective_trans_image_size with system parameter 'int_zooming' set to 'true' have also been revised for interpolations 'bilinear' on processors that support AVX2 to mitigate the up to −55% slowdown.
The slowdown of images of type uint2 could not be compensated entirely, and is now up to −20% slower than with an unpatched CPU. For images of type real, the slowdown is slightly less and is up to −10% slower than without a microcode update.
rotate_image (for angles of 90 and 270 degrees) has also been revised for all supported interpolation types for images of type 'byte' on processors that support AVX2 to mitigate the up to −65% slowdown. Even with an installed microcode update, the performance is identical or slightly faster when compared with an unpatched CPU.
zoom_image_factor (if the ScaleWidth and ScaleHeight are exactly 0.5), zoom_image_size (if the output image size is half the input image size) have been revised for interpolation method 'bicubic', 'bilinear', and 'none' on processors that support AVX2 to mitigate the up to −65% slowdown. HALCON 24.05 is now faster by up to 20% for images of type 'real' compared to previous versions. For newer Intel generations that are not affected, the speedup can be up to 30%.
affine_trans_image, affine_trans_image_size, zoom_image_factor (if the ScaleWidth and ScaleHeight are not exactly 0.5), zoom_image_size (if the output image size is not half the input image size), rotate_image (for angles not multiples of 90 degrees) and crop_rectangle2 with AlignToAxis set 'true' and system parameter 'int_zooming' set to 'true' have also been revised for interpolations 'bilinear', 'constant', and 'weighted' on processors that support AVX2 to mitigate the up to −70% slowdown. The same holds for gen_gauss_pyramid using interpolation 'constant' and 'weighted' for images of type 'uint2', when the Scale is not exactly 0.5. The slowdown of images of type int2 and uint2 could not be compensated entirely and are now up to −20% slower than with an unpatched CPU. For images of type real, the performance is mostly equal for patched CPUs, with a slowdown of up to −15%.
affine_trans_image, affine_trans_image_size, zoom_image_factor (if the ScaleWidth and ScaleHeight are not exactly 0.5), zoom_image_size (if the output image size is not half the input image size), rotate_image (for angles not multiples of 90 degrees), and crop_rectangle2 with AlignToAxis set to 'true' and system parameter 'int_zooming' set to 'true' have been revised for interpolation 'bicubic' for all available image types ('byte', 'int2', 'uint2', and 'real') on processors that support AVX2 to mitigate the −70% slowdown.
For images of type 'byte' and 'int2', the operators are up to 20% faster, for images of type 'uint2', the operators are up to 25% faster and for images of type 'real', a speedup of up to 40% can be expected when compared to previous HALCON versions for patched CPUs. For unaffected or unpatched CPUs, a speedup of up to 5% for images of type 'int2', a speedup of up to 10% and for images of type 'real', a speedup of up to 15% can be expected when compared to previous HALCON versions.
map_image is now faster for maps of type 'bilinear‘ and 'coord_map_sub_pix‘ for byte and uint2 images. The slowdown on patched CPUs (up to −70%) has been compensated completely and a speedup of up to 25% (byte) and 30% (uint2) compared to previous HALCON versions can be expected.
For unpatched CPUs that enable the gather instructions or for unaffected CPUs, a speedup of up to 40% can be expected. This only applies to image sizes/maps that do not require HALCON XL.
Region
The new operator intersection_region_contour_xld can be used to select those parts of a contour XLD that intersect with a region.
System
The HALCON third-party library OpenSSL has been updated to OpenSSL 3. Previously, OpenSSL 1.1 was used. The docker example examples/docker/halcon-application/ has been adapted to use Ubuntu 22.04, which supports OpenSSL 3 by default.
Note that this change affects the compatibility. Read more.
Tuple
HALCON has been extended with the operator tuple_str_replace, which replaces all occurrences of a substring in a string. It is also available as inline operation str_replace.
HALCON has been extended with the operators tuple_repeat and tuple_repeat_elem:
tuple_repeat computes the iterated concatenation of a tuple to itself.
tuple_repeat_elem replaces every element in a tuple by a given number of copies of itself.
XLD
The new operator intersection_region_contour_xld can be used to select those parts of a contour XLD that intersect with a region.
Bug Fixes3D
get_stereo_model_param sometimes leaked memory in case it raised an error. This problem has been fixed.
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, and select_object_model_3d leaked memory when used with the parameters 'diameter_object' or 'diameter_bounding_box'.
prepare_object_model_3d leaked memory when used with the parameter 'distance_computation'.
In some cases, triangulate_object_model_3d, intersect_plane_object_model_3d, register_object_model_3d_pair, register_object_model_3d_global, and sample_object_model_3d also were affected. These problems have been fixed.
write_object_model_3d accessed invalid memory in rare cases. This problem has been fixed.
reconstruct_surface_stereo did not support OpenCL compute devices when 'disparity_method' was set to 'binocular_ms'. This problem has been fixed.
On Windows, reading 3D STL files that are larger than 2 GB with read_object_model_3d did not always work. This problem has been fixed.
intersect_plane_object_model_3d, convex_hull_object_model_3d, register_object_model_3d_pair, and register_object_model_3d_global sometimes delivered erroneous results for input models of primitive type 'cylinder'. This problem has been fixed.
get_object_model_3d_params with the generic parameter 'has_points' returned 'true' for models created with empty XYZ mappings, which do not have any points. This problem has been fixed. Now, 'has_points' only returns 'true' if the 3D Object Model has at least one point.
intersect_plane_object_model_3d crashed when using multiple input object models, when a model containing polygons was followed by a model without polygons. This problem has been fixed.
Bar Code
set_bar_code_param and set_bar_code_param_specific could crash if values of unexpected type were used for certain parameters. In particular, parameters expecting strings as input were affected. This problem has been fixed.
The quiet zone check settable via set_bar_code_param did not correctly work if the successful decode was based on the 'small_elements_robustness' feature. In these cases, the quiet zone check could invalidate correct decodes even though the quiet zone was completely free of any defects. This problem has been fixed.
Some PharmaCode barcodes could not be read if the ratio of the number of wide bars to the number of narrow bars was extremely large. This problem has been fixed.
In some cases, find_bar_code could decode barcodes by using edges outside the specified reduced image domain. This problem has been fixed. Now, edges outside the image domain will never be used for the decoding attempt.
In some cases, get_bar_code_result and get_bar_code_object could fail to return the correct status and objects for a successfully decoded candidate. This problem has been fixed.
find_bar_code did not always use the correct gray values as reference for the bar/space classification during the decoding step if the 'merge_scanlines' feature was used. This problem has been fixed. Note that the change can lead to slightly different decoding performance in rare cases.
Data Code
In very rare cases, the grid determination in find_data_code_2d could fail for Data Matrix ECC 200 Codes. This problem has been fixed.
The Aztec Code reader decoded codes with less than 3 words for error correction. These codes do not conform to ISO/IEC 24778:2008 and reading codes with less than 3 words for error correction increases the probability of a false read. This problem has been fixed and the Aztec Code reader now only reads conforming codes with at least 3 words for error correction.
get_data_code_2d_results in some cases crashed for (Micro) QR Code models if the result parameter 'orientation' was used together with other parameters. This problem has been fixed.
The ECC 200 reader returned false positives in very rare cases. This problem has been fixed.
get_data_code_2d_results in some cases returned an incorrect number of values if the result parameters 'gs1_lint_result' or 'gs1_lint_passed' were used together with other parameters. This problem has been fixed. Further, the error 8827 ("One of the parameters returns several values and has to be used exclusively for a single candidate") is now returned if the parameter 'gs1_lint_result' is not queried exclusively for one result.
The DataMatrix reader in rare cases leaked a small amount of memory. This problem has been fixed.
find_data_code_2d crashed if the image width or image height exceeded the maximum image size allowed with small modules robustness set to 'high'. This problem has been fixed.
Deep Learning
Global Context Anomaly Detection (GC-AD) models could not be optimized correctly to HAILO-8 AI² Plugin and hardware. This hardware only allows int8 calibration precision. The calibration result showed faulty anomaly images, which led to very poor segmentation results and incorrect classification results. This problem has been fixed. Now, optimize_dl_model_for_inference converts the GC-AD models so that the quantitative results are very similar to full precision float32 models. It is necessary to calibrate GC-AD models with the new version again using optimize_dl_model_for_inference. It is also necessary to adjust the classification/segmentation thresholds for best results after calibration.
Note that this change affects the compatibility. Read more.
Setting the parameter 'angle_step' of a deep counting model via set_deep_counting_model_param was not possible as long as the 'angle_start' and 'angle_end' parameters were on default values (0.0). This problem has been fixed.
The procedure set_dl_model_param_max_gpu_batch_size has become obsolete since the cuDNN update in HALCON 23.11. The reason for this is that the selected cuDNN algorithms are not always the same, and therefore, the memory used by them is not deterministic anymore. The procedure has been set to legacy and is not used anymore in the examples. The operator set_dl_model_param with a suitable 'batch_size' should be used instead.
set_dl_model_param leaked memory for the parameter 'device' if the model device was an AI2 device and it was changed to a standard CPU- or GPU-device. This problem has been fixed.
When running GC-AD inference and calculating the anomaly score for very big images, an error "DL Internal Error" was thrown. This problem has been fixed.
get_dl_model_layer could crash if layers were requested in a different order than they appeared in the network graph. This problem has been fixed.
apply_deep_ocr returned wrong detection results when called with multiple images of different size. This problem has been fixed.
Filter
gen_gauss_pyramid, zoom_image_size, and zoom_image_factor could produce wrong values along the right and bottom image borders for zoom factors equal to 0.5 and interpolation set to 'weighted' if the input images had odd dimensions. There could also be an effect for exhaustive_match_mg during the resolution pyramid creation. This problem has been fixed.
gen_gauss_pyramid, zoom_image_size, and zoom_image_factor did not respect rounding effects for byte, int2 and uint2 images for zoom factors equal to 0.5 and interpolation set to 'weighted'. There could also be an effect for exhaustive_match_mg during the resolution pyramid creation of byte images. This problem has been fixed.
Inspection
Due to numerical instabilities, the calculation of the value compared with aniso_scale_change_restriction could have failed in special cases to produce meaningful values for operators find_local_deformable_model, find_planar_calib_deformable_model, and find_planar_uncalib_deformable_model. This problem has been fixed.
Note that this change affects the compatibility. Read more.
Images
On Windows, reading memory blocks that are larger than 2 GB using read_memory_block could return an error. This problem has been fixed.
When using the set_system options 'extern_alloc_funct' or 'extern_free_funct' in conjunction with read_image to read a PNG file with alpha channel, the var_threshold operator or the concat_ocr_trainf operator resulted in a heap corruption error. This problem has been fixed.
Matching
cluster_model_components, create_component_modelcreate_trained_component_model, deserialize_component_model, deserialize_training_components, get_component_model_tree, read_component_model, read_training_components, and train_model_components leaked memory or crashed in case of errors. This problem has been fixed.
Due to numerical instabilities, the calculation of the value compared with aniso_scale_change_restriction could have failed in special cases to produce meaningful values for operators find_local_deformable_model, find_planar_calib_deformable_model, and find_planar_uncalib_deformable_model. This problem has been fixed.
Note that this change affects the compatibility. Read more.
In very rare cases and when using a very low 'min_score', some matching operators did not allocate enough memory for the top-level matching. This problem has been fixed.
find_local_deformable_model, find_planar_calib_deformable_model, and find_planar_uncalib_deformable_model crashed in rare cases when 'border_shape_model' was set to 'true' using set_system. This problem has been fixed.
find_shape_models, find_scaled_shape_models, find_aniso_shape_models and find_generic_shape_model behaved unexpectedly when searching multiple models with different values for border_shape_models. Only the last model of the search was considered for the value of 'border_shape_models'. This problem has been fixed. Now, 'border_shape_models' is true for all models if it is true for any of the models in a search. Additionally, this behavior is now specified in the reference manual entries of these operators.
Measure
add_metrology_object_circle_measure, add_metrology_object_ellipse_measureadd_metrology_object_generic, add_metrology_object_line_measure, and add_metrology_object_rectangle2_measure could crash when given invalid parameter types. This problem has been fixed.
Miscellaneous
There were a number of operators that could show a float-division-by-zero under certain rare circumstances. Note that the behavior of float division by zero is well-defined according to ISO/IEC/IEEE 60559 / IEEE 754. However, these cases might lead to unexpected behavior in later program parts. The following operators were potentially affected:
adjust_mosaic_images, apply_sample_identifier, create_bg_esti, find_bar_code, find_data_code_2d (for QR Code, Micro QR Code and Aztec Code), 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
These problems have been fixed.
HALCON 23.11.0.0 changed the paths Windows uses to search for DLLs by default by calling SetDefaultDllDirectories. As this led to problems, the change has been reverted and SetDefaultDllDirectories is no longer called.
For filename encoding not set to 'utf8', HALCON could fail to open acquisition interfaces or extension packages with non-ASCII characters in their name. This problem has been fixed.
Parallelization
hcheck_parallel did not correctly report the name of the file to which the parallelization information is written. This problem has been fixed.
Calling par_start concurrently could lead to a crash. This problem has been fixed.
Region
For some regions, smallest_rectangle2 failed to determine the smallest surrounding rectangle. While returning a surrounding rectangle, it was not the smallest surrounding rectangle in these cases. This problem has been fixed.
Segmentation
auto_threshold incorrectly returned an error about a wrong segmentation threshold for a certain Sigma value for real images. This problem has been fixed.
In HALCON XL only, binary_threshold with Method set to 'max_separability' could result in a segmentation, which does not maximize the separability. This problem has been fixed.
System
Passing an invalid string value to set_system('seed_rand') did not return an error. This problem has been fixed.
Tools
distance_funct_1d returned the error 6006 ("Tmp-memory management: could not find memory element") for Sigma not equal to zero. This problem has been fixed.
In some cases, distance_funct_1d returned random values for Mode 'length'. This problem has been fixed.
Transformation
The parallelization of affine_trans_image for int2 images using the interpolation method 'bicubic' together with int_zooming set to 'true' for processors that support the AVX2 instruction set was broken. This problem has been fixed.
The following operators could have wrongly worked for image type 'int2' and interpolation mode 'constant' in border cases, due to a signed integer overflow:
affine_trans_image, affine_trans_image_size, crop_rectangle2, rotate_image, zoom_image_factor, zoom_image_size
This problem has been fixed.
XLD
In very rare corner cases, intersection_contours_xld could miss valid intersection points. This problem has been fixed.
ProceduresBug Fixes
The procedure train_dl_model failed to resume training if the given serialization base name had multiple subfolders. This problem has been fixed.
HALCON/CBug Fixes
Using null strings could cause crashes or memory leaks with the C language interface. This problem has been fixed. Note that this usage is not recommended, as HALCON tuples do not have the concept of an invalid element. Instead, consider using an empty tuple to represent an invalid value, for example.
In addition, the following three string functions of the HALCON/C API did not work if HC_FAST was not defined: init_s_from_utf8, init_s_from_local8bit, init_s_from_wcs. This problem has been fixed as well.
HALCON/C++Bug Fixes
Using null strings could cause crashes or memory leaks with the C++ language interface. This problem has been fixed. Note that this usage is not recommended, as HALCON tuples do not have the concept of an invalid element. Instead, consider using an empty tuple to represent an invalid value, for example.
HALCON/.NETBug Fixes
Resizing a HSmartWindowControlWPF when zoomed in with HKeepAspectRatio set to true always caused the full image to be shown again at 1:1 aspect. This problem has been fixed. Now, the visible part is just extended or reduced according to the size change of the control. However, if the part has never been changed from the default full image view after control creation or the last call to SetFullImagePart, then resizing will still fit the full image at 1:1 aspect to the new size.
Using null strings could cause crashes or memory leaks with the .NET language interface. This problem has been fixed. Note that this usage is not recommended, as HALCON tuples do not have the concept of an invalid element. Instead, consider using an empty tuple to represent an invalid value, for example.
HALCON/PYTHONFunctionality
Some HALCON functionality can now be configured in HALCON/Python before HALCON is initialized, for example, spin lock usage. For more information, see the Programmer's Guide, section "Global HALCON Functions in HALCON/Python".
Bug Fixes
If the HALCON/Python interface edition does not match the HALCON edition, now a warning is logged.
HALCON Variable InspectFunctionality
HALCON Variable Inspect is now largely able to adapt to the used Visual Studio theme. Additionally, the window has been slightly redesigned to be closer to the look and feel of a Visual Studio window. The Visual Studio versions 2017, 2019, and 2022 are supported.
Extension PackagesBug Fixes
Calling an operator from a HALCON extension package via the C language interface with default error handling enabled did not report an error when the extension package could not be loaded. This problem has been fixed.
Image Acquisition Interfaces
The latest information about new interface revisions and newly supported image acquisition devices can be found on MVTec's web server. Please refer to the release notes within the documentation of the individual image acquisition interfaces for information about improvements, bugfixes, or whether a new revision of the corresponding device driver is required.
Digital I/O Interfaces
The latest information about new interface revisions and newly supported digital I/O interfaces can be found on MVTec's web server. Please refer to the release notes within the documentation of the individual digital I/O interfaces for information about improvements, bugfixes, or whether a new revision of the corresponding device driver is required.
DocumentationProgrammer's Manuals
The Extension Package Programmer's Manual now explains more details of the HSetExtendedErrorInfo function and also mentions the related HSetExtendedErrorInfoF function.
The guide "HALCON for Arm-based Platforms" only mentioned C++ in the chapter "Using HDevEngine". It has been extended and now also covers Python.
The Programmer's Guide chapter “Debugging HDevEngine From HDevelop” did not mention the example for Python remote debugging. This problem has been fixed.
HALCON Variable Inspect cannot be used to inspect images with fewer channels than the set default number of channels for HImage. The Programmer's Guide has been updated to inform about this known restriction.
The Programmer's Guide falsely stated that the class HTuple is thread-safe. This problem has been fixed.
User Guides
In the User's Guide, section “6.3 Status Bar” contained an incorrectly rendered list. This problem has been fixed.
Solution Guides
The Solution Guide III-C 3D Vision has been extended with information on the optimization method 'stochastic' with regard to hand-eye calibration.
The chapter 'Deflectometry' in the Solution Guide I Basics has been restructured. Now, the chapter focuses on the topic 'Structured Light' and provides information on both 'Deflectometry' and '3D Reconstruction' performed using a structured light setup.
The Solution Guide II-B Matching gave an erroneous example how the parameter 'NumMatches' influences the tracking of found candidates. This problem has been fixed.
Reference Manual
The reference manual entries of create_planar_calib_deformable_model and create_planar_calib_deformable_model_xld were revised to provide better guidance when using calibrated perspective matching.
The reference manual entry of the procedure visualize_object_model_3d did not mention that camera parameters are adapted to fit within the window size (in case that camera parameters are given).
The reference manual entries of disp_object_model_3d, display_scene_3d, and visualize_object_model_3d did not mention that sometimes the aspect ratios of window handle and camera parameters should be similar to obtain the intended results. This problem has been fixed.
The reference manual entry of find_generic_shape_model has been extended with example images to ease understanding the search domain.
The reference manual entries of find_planar_calib_deformable_model, find_shape_model_3d, and find_calib_descriptor_model now more clearly state that distortion in input images does not need to be corrected manually. The provided calibration data is used internally to correct the images.
The reference manual entry for gray_histo, gray_histo_abs, and gray_histo_range mentioned erroneously that it is possible to set a tuple for the parameter 'Regions'. This problem has been fixed.
Note that this change affects the compatibility. Read more.
The reference manual entry of lines_gauss was improved by revising the provided formula and its description in the reference text.
The reference manual entry of load_dl_model_weights wrongly stated that the operator cannot be used with the supplied deep-learning models. This section has been removed.
The reference manual entry of map_image did not clearly state which constraints have to be fulfilled when interpolation is used. This problem has been fixed.
The reference manual entry of open_socket_accept misspelled the possible parameter value address. This problem has been fixed.
The reference manual entry of optimize_dl_model_for_inference did not list all the changeable parameters of a model. The parameter 'meta_data' was not listed, despite the fact that it can be set even if the model has been optimized. This problem has been fixed.
The reference manual entry of read_char has been updated to better indicate when 'canceled' is returned.
The reference manual entry of set_generic_shape_model_param now provides more detail about the effect of the parameter 'strict_boundaries'.
The reference manual entry of spatial_relation confused vertical and horizontal relations in the description of the parameters Relation1 and Relation2. This problem has been fixed.
The reference manual entries of train_generic_shape_model and find_generic_shape_model did not mention how the treatment of multichannel images depends on the parameter 'metric' of set_generic_shape_model_param. The description has been clarified.
The documentation for unlock_mutex incorrectly claimed that attempting to unlock a mutex that is not locked has no effect. This problem has been fixed.
The reference manual chapters “3D Reconstruction” > “Structured Light” and “Inspection” > “Structured Light” were both pruned to only contain information on the respective topic of the chapter instead of a general method overview.
Miscellaneous
A technical note "HALCON Memory Management" has been added. The note contains detailed information on the nature and the use of HALCON's caches as well as practical advice on how to handle suspected memory leaks.
The icon that indicates a tip in the manuals has been replaced by one that fits in better with the general design language.
Several manuals mentioned legacy operators as examples or in code snippets. This problem has been fixed.
Installation
In HALCON installations for the architecture aarch64-linux, a superfluous third-party directory was installed. This problem has been fixed.
HALCON now uses version 8.0a of the CodeMeter Runtime.
Starting with HALCON 24.05, MVTec will no longer provide separate runtime installers for HALCON. If required, customers can create their own runtime installers directly within the MVTec Software Manager (version 1.5.0 or later), using the “Create custom installer” feature.
Licensing
HALCON did not correctly map errors from the floating license server to HALCON error codes. This problem has been fixed.
Release Notes of Previous HALCON Versions
Follow this link to read about the changes of previous HALCON versions.