注册登陆后可查看附件和大图,以及购买相关内容
您需要 登录 才可以下载或查看,没有账号?注册会员
x
MVTEC Halcon 23.11.0.0 Progress Runtime Windows x64-win64 HALCON23.11.0.0演进运行版 64位Windows版
文件名: halcon-23.11.0.0-x64-win64-runtime.zip
文件大小: 222514858 字节 (212.21 MB)
修改日期: 2023-11-09 19:12
MD5: 1d6fac71a52dd473edfd1b8ad72a0f34
SHA1: ed2c2e0411f4690e660a179d2a133f956355ca3b
SHA256: 8785ad3bb3c7edf02389856ee0fc78edc95338c4fcb56dac8884d649edc4f72c
CRC32: b5d8cf51
MVTEC官方地址:
www.mvtec.com
百度网盘下载地址:
链接:https://pan.baidu.com/s/1jh-BoXiQ8tSo5ppv1AY-YQ
提取码:
--来自百度网盘超级会员V6的分享
Release Notes for HALCON 23.11.0.0 ProgressThis document provides the release notes for MVTec HALCON 23.11.0.0 Progress, as released in November2023. Contents- Major New Features of HALCON 23.11.0.0 Progress
- Structured Light 3D Reconstruction
- Multi-Label Classification
- MVTec License Server Cloud Ready
- Further Improvements
- Compatibility
- Licenses
- HALCON Library
- HALCON Applications
- Image Acquisition Interfaces
- Digital I/O Interfaces
- Extension Packages
- Supported Operating Systems
- Detailed Description of Changes in HALCON 23.11.0.0 Progress
- HDevelop
- Bug Fixes
- HDevelop Example Programs
- HDevEngine
- HALCON Library
- Speedup
- New Functionality
- Bug Fixes
- Procedures
- HALCON/.NET
- Language Interface Example Programs
- HALCON Variable Inspect
- Extension Packages
- Image Acquisition Interfaces
- Digital I/O Interfaces
- Documentation
- Installation
- Licensing
- Miscellaneous
Major New Features of HALCON 23.11.0.0 ProgressStructured Light 3D ReconstructionIn HALCON 23.11, the structured light model has been enhanced: Besides deflectometry, it now also provides precise 3D reconstruction for diffuse surfaces in short cycle times. This enhancement gives users the flexibility to develop their own application-specific 3D reconstruction systems using a pattern projector and a 2D camera. The feature is particularly suitable for applications where precise spatial representations are required. As a result, the technology is suitable for the optimization of manufacturing processes, quality control, and the precise measurement of various surfaces.
Multi-Label ClassificationIn the new HALCON version, customers now have access to multi-label classification, a new deep learning method that enables the detection of several different classes within a single image. Such classes can include different defects, objects as well as properties such as structure or color. In practice, this method can, for example, detect the presence of different types of defects in an image and provide a more detailed classification of the different possible defect types. Compared to object detection or instance segmentation, this deep learning method is faster in processing and the labeling effort is much lower.
MVTec License Server Cloud ReadyWith HALCON 23.11, customers have an additional “cloud-ready” variant of the license server at their disposal. This now makes it possible to license HALCON in the environments of commercial cloud providers as well as in enterprise-owned cloud setups without the need for hardware, solely through a network connection. This means that HALCON can now be easily licensed across all cloud solutions. By using HALCON in the cloud, customers can easily benefit from the new possibilities offered by machine vision in the cloud.
Further ImprovementsIn HALCON 23.11, a number of improvements for existing methods and technologies were implemented:
For Global Context Anomaly Detection, a method for detecting complex anomalies, the underlying neural network has been further optimized. This improves the accuracy of anomaly detection without increasing hardware requirements or execution time.
In addition, HALCON now utilizes the latest NVIDIA® CUDA® toolkit. This provides users with the opportunity to choose from an even greater range of AI accelerators. For example, the new NVIDIA Jetson OrinTM modules are now supported as well.
Finally, several performance optimizations of HALCON’s core technologies have been implemented in HALCON 23.11. For example, template matching operators (NCC Matching for large templates) now run up to 80% faster on Arm-based systems.
CompatibilityLicensesHALCON 23.11.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.05 Progress, many extensions have been introduced. Thus, the HALCON 23.11.0.0 Progress libraries are not binary compatible with HALCON 23.05 Progress or earlier versions. However, HALCON 23.11.0.0 Progress is mostly source-code compatible to HALCON 23.05 Progress except for the changes listed below: The procedures procedures/general/structured_light_camera_screen_sync.hdvp and procedures/general/structured_light_inspect_segmentation.hdvp have been moved to the new procedure library procedures/general/structured_light.hdpl. More information.affine_trans_object_model_3d does not copy primitives anymore. affine_trans_object_model_3d and rigid_trans_object_model_3d do not copy precomputed data structures for 3D distance computation anymore. More information.To optimize the performance on x64-linux and x64-win64 architectures, cuDNN now performs online selection of the used convolution algorithms. As a consequence, the runtime initialization is more time-consuming than in the previous HALCON version, and the results are not always reproducible.
To reproduce the same results on the same GPU, the system setting 'cudnn_deterministic' can be set to 'true', sacrificing performance, or the TensorRT AI2 interface can be used to optimize the model, if applicable.
The new cuDNN version creates an initial GPU memory cache after its first use, which remains present until the process is terminated. The size of this initial cache can vary depending on the used GPU hardware and its actual usage. More information.The handling of memory blocks has been extended to support empty memory blocks as well. Any application that uses a memory block of size zero to indicate an error should be adapted accordingly. More information.The values retrieved by get_generic_shape_model_param of user-set parameters, i.e., the parameters queried with suffix '_param', may be different for HALCON versions after and including 22.11. Additionally, resulting shape models of train_generic_shape_model may be different.
To retain consistent behavior of get_generic_shape_model_param and train_generic_shape_model after reading shape models written with HALCON versions before 21.05, users have to set affected parameters to the values written in the shape model. For example, the parameter num_levels has to be queried first using get_generic_shape_model_param(ModelID, 'num_levels', NumLevels), and then set by set_generic_shape_model_param(ModelID, 'num_levels', NumLevels) to achieve that NumLevelsParam from get_generic_shape_model_param(ModelID, 'num_levels_param', NumLevelsParam) results in the same value as NumLevels. More information.The behavior of train_generic_shape_model_param with a shape model created by create_shape_model, create_shape_model_xld, create_scaled_shape_model, create_scaled_shape_model_xld, create_aniso_shape_model, or create_aniso_shape_model_xld can differ regarding its treatment of 'min_contrast' and 'contrast'. More information.
HALCON Applications
Please re-compile all C, C++, or .NET programs developed with HALCON 23.05 Progress. The incompatibility with HALCON 23.05 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 InterfacesIn general, HALCON 23.11.0.0 Progress, HALCON 23.05 Progress, and HALCON 20.11 Steady image acquisition interfaces are library compatible. HALCON 23.11.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 InterfacesIn general, HALCON 23.11.0.0 Progress, HALCON 23.05 Progress, and HALCON 20.11 Steady digital I/O interfaces are library compatible. HALCON 23.11.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 PackagesPlease re-generate your own extension packages developed with HALCON 23.05 Progress.
Supported Operating SystemsWindowsHALCON 23.11.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.
LinuxHALCON 23.11.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 23.11.0.0 ProgressThe changes in HALCON 23.11.0.0 Progress are described with respect to HALCON 23.05. HDevelopBug FixesAssistants
Code ExportUsing HDevelop via command line, e.g., for hdevelop -convert operations, did not properly return floating licenses. This problem has been fixed. The C export of dev_open_window did not work when the background color was not a constant value literal. This problem has been fixed.
GUIIn some cases, HDevelop notified that a new software update is available even if the version was up-to-date. This problem has been fixed. dev_open_tool, did not consider the origin of coordinates while opening the tool. The tool was always opened with respect to the primary screen. This problem has been fixed. dev_open_tool now considers the selected origin while opening the tools. HDevelop showed the autocompletion suggestion list too often, making editing less convenient. If the cursor was inside an operator and the user typed something, the suggestion list was displayed. This problem has been fixed. Custom colors set in HDevelop were reset after restart of the application. This problem has been fixed. HDevelop News may not have worked if the package Development > Third-party libraries libcrypto and libssl were not installed. This problem has been fixed. Now, the package is per default installed when HDevelop is selected.
Help
IDEWhen copying code that contains a call to a local procedure, the user could have been asked if the local procedure should also be pasted. This problem has been fixed. HDevelop file tracking did not sync signature changes. This problem has been fixed. Dragging and dropping HDVP and HDPL files on HDevelop did not work. This problem has been fixed.
ProceduresFor procedures without short description, the title of the corresponding (empty) section in the HTML documentation of the procedure always appeared in English, regardless of the selected language. This problem has been fixed.
MiscellaneousHDevelop crashed during the attempt to auto complete an inactive line with the TAB key. This problem has been fixed. HDevelop could crash when canceling the loading of a program, while the start dialog was open. This problem has been fixed. Using HDevelop via command line, e.g., for hdevelop -convert operations, did not properly return floating licenses. This problem has been fixed.
HDevelop Example ProgramsNew HDevelop Example Programs- hdevelop/Classification/k-Nearest-Neighbor/classify_pills_hyperspectral.hdev
- hdevelop/Applications/Battery-Inspection/detect_3d_defects_on_battery_surface.hdev
- hdevelop/Deep-Learning/MultiLabelClassification/dl_multi_label_classification_workflow.hdev
- hdevelop/Applications/Battery-Inspection/inspect_and_identify_battery_cells.hdev
- hdevelop/3D-Reconstruction/Structured-Light/structured_light_3d_surface_reconstruction.hdev
- hdevelop/3D-Reconstruction/Structured-Light/structured_light_calibration.hdev
New FunctionalityThe new HDevelop example hdevelop/Applications/Battery-Inspection/detect_3d_defects_on_battery_surface.hdev demonstrates how 3D defects are found on unrolled surfaces of cylindrical batteries. The new HDevelop example hdevelop/Applications/Battery-Inspection/inspect_and_identify_battery_cells.hdev demonstrates how battery cells are inspected with shape-based matching and identified with Data Matrix ECC 200 code reading in two parallel threads. The new HDevelop example hdevelop/Classification/k-Nearest-Neighbor/classify_pills_hyperspectral.hdev demonstrates the use of different classifiers to evaluate hyperspectral images.
Bug FixesThe HDevelop example program hdevelop/Calibration/Multi-View/calibrate_cameras_monocular.hdev in very rare cases raised an error. This problem has been fixed. The example description for hdevelop/Tools/Geometry/angle_lx.hdev was wrong: The angle is calculated between the line and the horizontal axis (not the vertical axis). This problem has been fixed.
HDevEngineBug FixesIn some cases, calling operators that return iconic values could lead to a memory leak in JIT-compiled procedures. This problem has been fixed. Loading the .NET assembly in the adapter_dotnet when the .NET runtime was already running led to an error. This problem has been fixed. Unloading an individual library procedure was not a well-defined operation and could cause a crash. This problem has been fixed. Now, calling UnloadProcedure on a library procedure implicitly unloads the entire library. Later attempts to create an HDevProcedure from one of the library procedures will reload the library.
HALCON LibrarySpeedupdistance_pc is now faster for large input tuples. emphasize is now faster, especially on ARM architectures. In particular, the following speedups can be expected for a 512x512 image: ARCHITECTURE | INSTRUCTION SET | IMAGE TYPE | FILTER SIZE | FACTOR | SPEEDUP | 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 is now faster for byte images. In particular, the following speedups can be expected for a 512x512 image: 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 is now faster. In particular, the following speedups can be expected for a 512x512 image: 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 is now faster by up to 90%. find_ncc_model and find_ncc_models is now faster for byte images with NEON instructions. In particular, the following speedups can be expected: ARM ARCHITECTURE | SPEEDUP | ARM64 | up to 80% | Armv7 | up to 40% |
Note that the achievable speedup strongly depends on the size of the template on each pyramid level. While there might be no speedup at all for small templates, it increases for larger templates. The ellipse fitting functionality has been optimized. As a result, fit_ellipse_contour_xld is now up to 475% faster when using the 'geohuber', 'geometric', and 'geotukey' algorithms. Additionally, the performance of apply_metrology_model has also been enhanced for ellipses. mean_image is now faster for byte images with small filter masks with NEON instructions. In particular, the following speedups can be expected: ARM ARCHITECTURE | FILTER SIZE | SPEEDUP | ARM64 | 3x3 | up to 20% | Armv7 | | up to 5% | ARM64 | 5x5 | up to 10% |
mean_image_shape is now faster for byte images with filter masks smaller than a mask area of 129 with NEON instructions. In particular, the following speedups can be expected: ARM ARCHITECTURE | SPEEDUP | ARM64 | up to 40% | Armv7 | up to 20% |
The runtime of read_region when reading binary TIFF images has been improved significantly.
New Functionality3DThe HALCON structured light model has been extended to support high quality 3D reconstruction of diffuse surfaces. 3D surfaces can be reconstructed from lambertian or diffuse object surfaces, using a pattern projector for illumination, which projects directed light like an 'inverse camera'. In contrast, up to now structured light models solely have been used for deflectometry, i.e., for detecting defects on a specular surface, using a diffuse display or monitor for illumination. create_structured_light_model sets the new ModelType '3d_reconstruction', set_structured_light_model_param can be used to set the calibration information in 'camera_setup_model'. get_structured_light_model_param has been extended accordingly. The new operator reconstruct_surface_structured_light performs the 3d reconstruction. The chapters Inspection/Structured Light or 3D Reconstruction/Structured Light of the Reference Manual describe the use of the new functionality. The new HDevelop example program hdevelop/3D-Reconstruction/Structured-Light/structured_light_calibration.hdev shows how to calibrate a structured light setup. It uses the new images from structured_light/calibration. The new HDevelop example program hdevelop/3D-Reconstruction/Structured-Light/structured_light_3d_surface_reconstruction.hdev shows how to reconstruct surfaces using a calibrated structured light setup. It uses the new images from structured_light/cast_part. The new HDevelop procedure compute_structured_light_modulation in the new library procedures/general/structured_light.hdpl helps the user to estimate the quality of the aquired sequence of camera pattern images. The already existing example hdevelop/Inspection/Structured-Light/structured_light_tap_collar.hdev has been extended with the modulation computation. Note that this change affects the compatibility. Read more.
Bar CodeThe new GS1 Application Identifiers 7241 (AIDC MEDIA TYPE) and 7242 (VCN) are now supported. Reading of stacked GS1 DataBar symbologies is now more robust in the presence of print growth or print loss. The new GS1 Application Identifiers 4330 (MAX TEMP F.), 4331 (MAX TEMP C.), 4332 (MIN TEMP F.), 4333 (MIN TEMP C.), and 8030 (DIGSIG) are now supported.
Data CodeFor the Data Matrix ECC 200 symbol, the tolerance of find_data_code_2d with respect to the variation of the module widths along the two alternating finder-pattern sides has been improved. Thus, a new parameter 'alternating_pattern_tolerance' is now available via set_data_code_2d_param or create_data_code_2d_model. A total of three different values can be set: 'low' allows only a small variation, 'medium' allows a larger variation, and 'high' additionally expands the search space. A higher setting always includes the lower values.
Note that the new parameter has only an effect on search passes using 'finder_pattern_tolerance' equal to 'low'. Furthermore, it will be automatically set to 'low' for 'default_parameters' set to 'standard_recognition', to 'medium' for 'enhanced_recognition', and to 'high' for 'maximum_recognition'. The new parameter is trainable via find_data_code_2d, and get_data_code_2d_results can be used to check if it was needed for a successful decode. If the decode is based on 'finder_pattern_tolerance' equal to 'high', get_data_code_2d_results will return 'undefined' for 'alternating_pattern_tolerance'.
The changes made can also have a small effect on the print quality inspection result if 'quality_isoiec15415_decode_algorithm' is set to 'robust'. The new GS1 Application Identifiers 7241 (AIDC MEDIA TYPE) and 7242 (VCN) are now supported. The 2D code readers now support specifying Shift JIS as string encoding by setting the parameter 'string_encoding' to 'shiftjis' in set_data_code_2d_param. The new GS1 Application Identifiers 4330 (MAX TEMP F.), 4331 (MAX TEMP C.), 4332 (MIN TEMP F.), 4333 (MIN TEMP C.), and 8030 (DIGSIG) are now supported.
Deep LearningA new deep learning method named multi-label classification has been added to HALCON. This method allows assigning multiple classes to an image at once, with little effort to label the data and a lower inference time compared to other model types like detection.
In addition to extending the deep learning operators and procedures with the new multi-label classification model type, the following procedures are introduced:
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 The HDevelop example program hdevelop/Deep-Learning/MultiLabelClassification/dl_multi_label_classification_workflow.hdev has been added to show how the DL model of multi-label classification can be used in HALCON. A chapter describing the use of the new multi-label classification method has been added to the reference manual ("Deep Learning" > "Multi-Label Classification").
The new procedure dev_display_multi_label_classification_evaluation can be used to visualize the results of a multi-label classification model.
An existing classification, recognition, or segmentation dataset can be converted into a multi-label classification dataset using the provided conversion procedures. The NVIDIA CUDA Basic Linear Algebra Subroutine library (cuBLAS) and NVIDIA CUDA Deep Neural Network library (cuDNN) have been updated to the latest versions. To support also the latest NVIDIA graphics cards, HALCON now ships and supports these libraries for CUDA versions 12.1 on x64-linux and x64-win64 platforms. The libraries can be found in the cuda12_1 subdirectories of the thirdparty library directory.
The following versions of the NVIDIA libraries are shipped for CUDA 12.1:
- NVIDIA CUDA Basic Linear Algebra Subroutine library (cuBLAS) from the CUDA 12.1 Toolkit version 12.1.3.1
- NVIDIA CUDA Deep Neural Network library (cuDNN) version 8.9.2
For aarch64-linux, HALCON now supports NVIDIA Jetpack 5.1.1. Note that this change affects the compatibility. Read more.The DL Framework now contains the new operator create_dl_layer_matmul. This allows building custom CNN graphs that contain matrix multiplications of two inputs DLLayerA and DLLayerB, where the 2D matrices are encoded in the last two dimensions (H, W) of the input tensors, respectively. create_dl_layer_elementwise now allows creating a DL layer with a new elementwise operation type 'division'. The DL framework now contains the new operator create_dl_layer_reduce that creates a Reduce layer within a custom DL model. The layer can be used to reduce an input tensor along one or several given axes by a given operation. Currently, the operation 'norm_l2' to compute the L2-Norm along the given axis is supported. The anomaly detection performance of Global Context Anomaly Detection (GC-AD) has been improved. This is enabled by a novel loss layer in the local network of the GC-AD model and by new pretrained model weights. The updated model has the same name as in previous HALCON versions: pretrained_dl_anomaly_global_context.hdl Although it may perform worse in some cases, this model detects anomalies considerably better on average than the previous versions of GC-AD.
The changes to the GC-AD model do not affect the runtime and memory requirements during inference. The novel loss layer has a small effect on the training duration. For the default image size and patch size setting, this effect is only marginal. Another effect of the updated loss layer is that the loss values observed during training are expected to be numerically higher. optimize_dl_model_for_inference has been extended to support int8 precision together with the Deep Counting model. A new operator create_dl_layer_reduce with operations sum and norm_l2 has been introduced.
File
Graphicsset_lut (and its HDevelop counterpart dev_set_lut) have been extended, such that the minimum and maximum gray value for the mapping of the LUT can be specified by passing a tuple [LUTName, MinGray, MaxGray] to this operator. Skia, the library used for HALCON's visualization, has been updated to milestone 115.
MatchingThe operators for finding shape models for shape-based matching find_shape_model, find_shape_models, find_scaled_shape_model, find_scaled_shape_models, find_aniso_shape_model, find_aniso_shape_models, and find_generic_shape_model are now faster on processors that support the SSE2, AVX2, AVX512, or NEON instruction sets. The speedup depends on the configuration of the shape-based matching (e.g., on the number of pyramid levels, the sub-pixel refinement, the available instruction set, and highly on the value for greediness) and can therefore be non-existent as well. The following speedups can be expected for an exemplary configuration: IMAGE TYPE | AVAILABLE INSTRUCTION SET | SPEEDUP | byte, uint2 | SSE2 | 15% | | AVX2 | 30% | | AVX512 | 50% | | NEON | 20% |
As a consequence of this speedup, the speed of find_component_model and find_shape_model_3d has also improved for some configurations.
Miscellaneous
Parallelization
RegionThe following operators now support parameter broadcasting, where input tuples of length 1 are automatically extended and used for all created elements:
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, and gen_sphere_object_model_3d_center
System
Toolsdistance_pp, distance_ps, distance_pl, distance_sl, distance_ss, angle_ll, angle_lx, and projection_pl have been extended to support parameter broadcasting of the form 1:N and N:1, where each argument can have length N or 1. Additionally, the operators are now automatically parallelized. Finally, the operator distance_pp is now faster by up to 27% for longer input tuples.
Bug Fixes3Daffine_trans_object_model_3d copied primitives without modification. affine_trans_object_model_3d and rigid_trans_object_model_3d copied precomputed data structures for 3D distance computation without modification. These problems have been fixed. Now, these attributes are not copied anymore. Note that this change affects the compatibility. Read more.disp_object_model_3d, object_model_3d_to_xyz, render_object_model_3d, and other visualizations of 3D object models using OpenGL sometimes produced no output if a 3D object model contained many points. This problem has been fixed. sample_object_model_3d threw an error with 3D primitives as input models when using methods furthest_point or furthest_point_compute_normals. However, the reference stated that the method is ignored for 3D primitives. This problem has been fixed. Now, the operator ignores the method and does not throw an error. add_deformable_surface_model_sample, create_surface_model and create_deformable_surface_model in rare cases leaked memory when they raised an error. This problem has been fixed. triangulate_object_model_3d with Method set to 'greedy' sometimes leaked memory when it raised an error. This problem has been fixed. find_surface_model and find_deformable_surface_model could leak memory in rare error cases. This problem has been fixed. disp_object_model_3d and render_object_model_3d leaked memory in some error cases. This problem has been fixed. get_stereo_model_param sometimes leaked a small amount of memory in case it raised an error. This problem has been fixed. read_object_model_3d sometimes leaked memory when reading a dxf file. This problem has been fixed. When copying a 3D object model that was prepared for shape matching, small amounts of memory would leak. This issue has been fixed. max_diameter_object_model_3d leaked memory in some error cases. This problem has been fixed. moments_object_model_3d sometimes leaked memory when it raised an error. This problem has been fixed. area_object_model_3d sometimes leaked memory when it raised an error. This problem has been fixed. volume_object_model_3d_relative_to_plane leaked memory in some cases. This problem has been fixed. read_deformable_surface_model could leak memory in some cases. This problem has been fixed. When setting symmetry poses of a surface model using the parameter 'symmetry_poses' of set_surface_model_param, the surface model leaked a small amount of memory when cleared. This problem has been fixed. get_structured_light_model_param leaked memory in some error cases. This problem has been fixed. prepare_object_model_3d with the parameter Purpose set to 'distance_computation' leaked memory in some cases. This problem has been fixed. Displaying a scene containing a cylinder model with display_scene_3d or render_scene_3d leaked this model. This problem has been fixed. read_object_model_3d for files of format 'dxf' leaked memory in some cases. This problem has been fixed. edges_object_model_3d crashed in rare cases if the input 3D object model did not contain points. This problem has been fixed. gen_camera_setup_object_model_3d sometimes returned unintuitive cones for ConeLength= 'auto', and wrong cones for image-side telecentric cameras. This problem has been fixed. uncalibrated_photometric_stereo returned pixels with the value NaN in the output NormalField and Gradient images in rare cases. This problem has been fixed. Now, in case the reconstruction for some pixels cannot be calculated, the pixels of the resulting NormalField and Gradient are set to 0.
Bar CodeIn some cases, find_bar_code in training mode, get_bar_code_result, and get_bar_code_object leaked memory if 'merge_scanlines' decoding attempts were enabled. This problem has been fixed. find_bar_code could leak memory in error, timeout, or other interruption cases. This problem has been fixed. In very rare cases, it could happen that find_bar_code did not consider all successfully decoded results for the composite code detection, if 'composite_code' was set to 'CC-A/B'. This problem has been fixed. read_bar_code_model, write_bar_code_model, serialize_bar_code_model, and deserialize_bar_code_model did not consider the bar code model parameter 'quiet_zone'. This problem has been fixed. Now, the quiet zone value is correctly read, written, serialized, and deserialized, respectively.
Calibrationbinocular_calibration, get_calib_data, and set_calib_data_calib_object leaked memory in some error cases. This problem has been fixed. query_calib_data_observ_indices could leak memory if the results were empty. This problem has been fixed. find_calib_object leaked memory in case of an error. This problem has been fixed. find_calib_object leaked a small amount of memory in some cases. This problem has been fixed. set_stereo_model_image_pairs leaked memory in some error cases. This problem has been fixed.
Classificationget_params_class_knn could leak memory in case of error. This problem has been fixed. read_texture_inspection_model could leak some memory if the operator exited with an error. This problem has been fixed.
Data Codeget_data_code_2d_results and get_data_code_2d_objects in some cases returned wrong result parameters 'status', 'corr_coded_data', 'raw_coded_data', 'bin_module_data' and wrong result objects 'module_0_rois'/'module_1_rois' for candidates that could not be decoded. This problem has been fixed. In some cases, find_bar_code in training mode, get_bar_code_result, and get_bar_code_object leaked memory if 'merge_scanlines' decoding attempts were enabled. This problem has been fixed. find_data_code_2d leaked a small amount of memory for Aztec Codes. This problem has been fixed. In rare cases, get_data_code_2d_results leaked memory for the parameter 'quality_isoiec15415_additional_reflectance_check'. This problem has been fixed. For DotCode symbols, find_data_code_2d could run into a division-by-zero issue if candidates were detected with dot-like structures very close to the image boundaries. This problem has been fixed. For DotCode symbols, find_data_code_2d could run into the internal error 3513 ("Internal error: number of chords too big for num_max") due to an insufficient number of chords. This problem has been fixed. find_data_code_2d with Data Matrix ECC 200 codes in rare cases returned the error 3513 ("Internal error: number of chords too big for num_max"). This problem has been fixed. Calling find_data_code_2d with the set_system parameter 'database' set to true could cause HALCON to hang or crash. This problem has been fixed. For the DataMatrix ECC 200 symbol type, the 'trained' state of the parameter 'contrast_tolerance' was not considered during serialize_data_code_2d_model or write_data_code_2d_model. This problem has been fixed.
Deep Learningtrain_dl_model_batch leaked memory if a model with a permutation layer was trained on the CPU. This problem has been fixed. set_dl_model_param could crash or return an error if the given model was created with get_dl_model_layer and create_dl_model under very specific circumstances. The issue only occurred if the device of a model used in get_dl_model_layer was initialized. Further, the issue only occurred if set_dl_model_param was called for the created model before initializing its device and the parameter name was 'input_dimensions', 'image_dimensions', 'image_size', 'image_width', or 'image_height'. This problem has been fixed. In some rare cases when deep learning operators could not access the CUDA functionality for some reason, the subsequent operator call could wrongly display an unrelated extended error information about the CUDA functionality in case of failure. This problem has been fixed. create_dl_layer_loss_focal did not check the size of the parameter ClassWeights correctly and failed for the default value []. This problem has been fixed. If the 'solver_type' of a deep learning model was set to 'adam' and then back to 'sgd' to allow reading with versions older than HALCON 22.05, this forward compatibility was broken. This problem has been fixed. Now, deep learning models can be read with older versions as long as the 'solver_type' is changed back to 'sgd'.
Filewrite_image_metadata leaked memory when EXIF tags were written to a TIFF file. Furthermore, read_image_metadata leaked memory when reading a tuple of tags and at least one tag could not be read. These problems have been fixed. read_sequence could crash HALCON XL when reading very large binary images. This problem has been fixed.
Filtergen_filter_mask leaked memory in case of an error. This problem has been fixed. In rare cases, convol_image could raise error 3513 ("Internal error: number of chords too big for num_max") for non-rectangular input regions. This problem has been fixed.
GraphicsDisplaying a scene containing a cylinder model with display_scene_3d or render_scene_3d leaked this model. This problem has been fixed. HALCON could crash when displaying large vector fields with disp_obj or dev_display. This problem has been fixed. When a drawing object was detached and as a consequence the next drawing object in a window was selected while the 'on_select' callback was registered for this drawing object, HALCON returned an error. This problem has been fixed. Using the 'pixmap' or 'PostScript' window type leaked memory when HALCON was loaded and unloaded. This problem has been fixed. set_drawing_object_params returned an error for very small rectangular drawing objects. This problem has been fixed.
Further, the signature of drawing object callback functions has not been updated to HALCON handles in the reference documentation. This problem has been fixed.
Imagesconvert_image_type rounded complex numbers incorrectly to signed integer types. This led to wrong conversion results for complex images with negative real part values. This problem has been fixed. convert_image_type could overflow during the conversion from 'float'/'complex' type to signed integer types. This problem has been fixed. convert_image_type did not clip the lower bound value of -0.5 for the type conversion from 'float'/'complex' to 'direction'. This problem has been fixed. add_image_border did not adapt the system width and height correctly. This problem has been fixed.
MatchingUndefined behavior could happen during execution of operators 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, and find_component_model when a domain for the search image was used. In very rare cases, this may have resulted in unexpected or slightly incorrect matching results. This problem has been fixed. 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, and find_shape_model_3d did not use the NEON optimized implementations. This problem has been fixed. read_component_model leaked memory in case of an error. This problem has been fixed. set_planar_uncalib_deformable_model_metric leaked memory in rare cases. This problem has been fixed. find_shape_model, find_shape_models, find_scaled_shape_model, find_scaled_shape_models, find_aniso_shape_model, and find_aniso_shape_models could run into undefined behavior when using a pregenerated model with a model center outside the model region. This problem has been fixed. In rare cases, this can lead to runtime regressions.
Note that the change leads to a new shape matching file version. As a result, models created with this HALCON version cannot be read in by older HALCON versions. find_shape_models, find_scaled_shape_models, and find_aniso_shape_models returned overlapping instances of different models, although they should have been excluded based on the user-defined max_overlap, if the num_matches were set per model, too. This problem has been fixed. train_model_components could leak memory in case of error. This problem has been fixed. find_generic_shape_model suppressed correct matches when the option 'strinct_boundaries' is set to 'true'. This problem has been fixed. The following operators estimated the maximum number of pyramid levels differently compared to when the user set a pyramid level:
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
When the parameter NumLevels was set to 'auto' in the operator or in the corresponding matching model and the model region was almost the full domain of the model image, the number of pyramid levels was estimated too high. As a consequence, the estimated pyramid level was not settable by the user and matches may not have been found robustly. This problem has been fixed. Now, the maximum possible estimated pyramid level uses the same heuristic as a pyramid level set by the user. In rare cases, create_ncc_model estimated a small number of pyramid levels, although the model could be found on coarser pyramid levels as well, resulting in a very long runtime of find_ncc_model and find_ncc_models. This problem has been fixed. As a consequence, create_ncc_model might return a model with a different number of pyramid levels compared to previous versions. find_generic_shape_model, find_shape_model, find_shape_models, find_scaled_shape_model, find_scaled_shape_models, find_aniso_shape_model, and find_aniso_shape_models were uninterruptible for huge numbers of matches and allowed deformation. This problem has been fixed. read_shape_model did not consistently set the value of user-set parameters for shape models written with HALCON versions before 21.05. That is, the parameters queried with suffix '_param' using get_generic_shape_model_param were not consistent. This problem has been fixed. Note that this change affects the compatibility. Read more.Using train_generic_shape_model_param with a shape model created by create_shape_model, create_shape_model_xld, create_scaled_shape_model, create_scaled_shape_model_xld, create_aniso_shape_model, or create_aniso_shape_model_xld reset the user-set search parameter 'min_contrast' and the model parameter 'contrast' if the models were generated using an XLD. This problem has been fixed.
Note that the change leads to a new shape matching file version. As a result, models created with this HALCON version cannot be read in by older HALCON versions. Note that this change affects the compatibility. Read more.
Miscellaneousgen_arbitrary_distortion_map and gen_grid_rectification_map with MapType set to 'coord_map_sub_pix' sometimes returned maps containing coordinates outside the images to be rectified, so that a subsequent call of map_image might have crashed. This problem has been fixed. gen_image1 and gen_image3 leaked memory in some error cases. This problem has been fixed. When parallelizing a HALCON operator on channels, some memory could be leaked if the operator exited with an error. This problem has been fixed.
Morphologygray_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, and find_data_code_2d in some cases used a lot of memory, especially for many threads or big mask sizes. This problem has been fixed.
OCRtrainf_ocr_class_box leaked memory in case of an error. This problem has been fixed. read_ocr_trainf leaked memory in case of an error. This problem has been fixed. read_ocr_trainf_select leaked memory in case of an error. This problem has been fixed. trainf_ocr_class_mlp leaked memory in case of an error. This problem has been fixed. select_characters could leak memory if 'punctuation' was set to 'true'. This problem has been fixed. find_text for a text model of mode 'manual' could leak memory inside the text result after calling clear_text_result, if 'manual_persistence' was set to 'true'. This problem has been fixed. read_ocr_trainf_names and read_ocr_trainf_names_protected leaked memory in case of an error. This problem has been fixed. In some cases, text_line_orientation returned wrong orientation values if the parameters OrientationFrom and OrientationTo defined a large orientation range around the actual angle. This problem has been fixed. create_ocr_class_svm returned the error 6006 ("Tmp-memory management: could not find memory element") if the input tuple 'Characters' contained duplicates. This problem has been fixed. Now, the correct error 1305 ("Wrong value of control parameter 5") is returned.
Regioninner_rectangle1 sometimes returned different results than in previous HALCON versions. This problem has been fixed. expand_region, expand_gray, and expand_gray_ref did not respect the setting of the 'clip_region' system parameter and always behaved as if it were 'true'. This problem has been fixed. In rare cases, HALCON operators with multiple output control parameters could crash in case of an error. The problem could only occur on systems with multiple CPUs if HALCON is used with automatic operator parallelization, and only in HALCON versions 23.05 and 22.11.2. This problem has been fixed.
System
Toolsgen_grid_rectification_map leaked memory in some error cases. This problem has been fixed. gen_projective_mosaic returned an image that had an overflow of the gray value for some pixels. This problem has been fixed. gen_projective_mosaic returned an output image that was one pixel larger than the input image when using just one input image and identity transformation. This problem has been fixed.
Transformation
Tuple
XLDfit_line_contour_xld leaked memory in some error cases. This problem has been fixed. fit_ellipse_contour_xld with algorithm 'voss' or 'fitzgibbon' leaked memory in some error cases. This problem has been fixed. fit_circle_contour_xld returned incorrect point order in some cases. This problem has been fixed. In rare cases, closed contours transformed by affine_trans_contour_xld or projective_trans_contour_xld were not closed. This problem has been fixed. create_distance_transform_xld crashed if MaxDistance was set to a very large value with the 'point_to_segment' mode. This problem has been fixed. Now, an error is returned in this case.
ProceduresFunctionalityHALCON has been extended with a public procedure dev_disp_3d_coord_system. Previously, the procedure was only available locally in the example program hdevelop/Calibration/Multi-View/check_calib_image_quality.hdev. Some example programs now use dev_disp_3d_coord_system instead of disp_3d_coord_system.
Bug Fixes
HALCON/.NETBug Fixes
Language Interface Example ProgramsBug FixesThe c#/IACallback/dotnetcore31 example was incorrectly configured for a desktop application. This problem has been fixed. In the reference manual entries of dev_set_preferences and dev_get_preferences, as well as in the HDevelop and HDevEngine example test_jit_speedup.hdev, the HDevelop preference dialog was incorrectly named "Experienced Users" instead of "Experienced User". This problem has been fixed.
HALCON Variable InspectBug FixesThe Variable Inspect Visual Studio Extension did not correctly display the version number. This problem has been fixed. The Variable Inspect Visual Studio Extension could not be used with HALCON .NET Core NuGet packages. This problem has been fixed. Modules that by chance have the same names as HALCON modules no longer produce errors. Instead, just a warning is shown, which does not prohibit further use. The same applies to incompatible versions of loaded debug modules.
Extension PackagesBug FixesThe sample documentation for the halconuser extension package example contained an incorrect link. This problem has been fixed. The documentation for gen_image_device_ptr in examples/extension_package/useropencl was missing. This problem has been fixed.
Image Acquisition InterfacesThe 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 InterfacesThe 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 ManualsThe Programmer's Guide now contains a short description on how to export library projects. The Programmer's Guide did not explicitly mention that debugging applications that use par_start is not supported. This problem has been fixed. The Programmer's Guide did not mention how to create a WPF application that targets .NET Core using HSmartWindowControlWPF via the new NuGet packages, including how to add the namespace mapping. This problem has been fixed. The Programmer's Guide now documents HDict and Numpy array conversion functions for HALCON/Python.
User GuidesThe HDevelop User's Guide did not state, how handling large tuples in dicts, using dict access expressions, can increase the runtime. This problem has been fixed. The HDevelop User's Guide contained unresolved text setting commands in the HTML version. This problem has been fixed.
Reference ManualThe reference manual entries of create_dict, set_dict_tuple, get_dict_tuple, set_dict_object, and get_dict_object have been extended with the in-line operations of the respective operators. The reference manual entries of several operators (like create_pose or threshold) now provide a C++ code example. The reference manual entry of dev_inspect_ctrl did not state that expressions within the operator call are not evaluated. This problem has been fixed. The German reference manual entry of find_planar_uncalib_deformable_model was missing the paragraph on output parameters in detail. This problem has been fixed. The reference of get_calib_data_observ_contours had a wrong description for the parameter 'marks_with_hole'. This problem has been fixed. Now, the type of the result is stated correctly. The reference manual entries of get_object_model_3d_params and select_object_model_3d contained incomplete value lists. This problem has been fixed. The reference manual entry for hom_mat2d_translate listed a non-applicable example in the list of possible application examples. This problem has been fixed. The reference manual entries of set_generic_shape_model_param, set_shape_model_param, and set_system did not clearly state for the parameter 'border_shape_models' how much a match instance may be outside the search image to still be found. This problem has been fixed. The German reference manual entry of set_metrology_object_param falsely stated that a transition from light to dark gray values defines a positive edge (and vice versa for negative edges). In fact, it is the other way around. This problem has been fixed. The reference manual entry of set_texture_inspection_model_param did not clearly state the meaning of the generic parameter 'num_levels'. The description of the parameter has been improved. The reference manual entries of several operators that use random generators have been extended with information on random seeds and the used random algorithm.
InstallationThe .profile_halcon file created by the HALCON installer did not set LD_LIBRARY_PATH correctly if LD_LIBRARY_PATH was either empty or unset prior to sourcing .profile_halcon. This problem has been fixed. Installing hardware support for license dongles via SOM failed if the runtime package was not installed beforehand. This problem has been fixed. On Windows systems, the files third_party_copyrights.html and third_party_licenses.txt were missing after installation. This problem has been fixed. When installing HALCON via SOM, there are the following changes:
- For Arm-based platforms (aarch64-linux and armv7a-linux) the following packages are now also available: development, example programs, example data, Deep Learning data. Accordingly, if examples are installed, now also the environment variables $HALCONEXAMPLES and $HALCONIMAGES can be set via the automatically generated file .profile_halcon.
- The tarballs for Arm-based platforms have been removed from the Linux development package.
- For x64-linux, there is now a separate package for cross compilation for Arm-based platforms.
- The aarch64-linux and armv7a-linux full offline installers now additionally contain the packages development, example programs, example data, and Deep Learning data.
Some HALCON SOM package descriptions were not localized. This problem has been fixed. The folder lib/x64-win containing HALCON runtime libraries has been moved from the SOM packages hdevelop and hdevelopxl to the package Windows development. HALCON now uses version 7.60d of the CodeMeter Runtime.
LicensingOn Windows, socket communication is not possible during process termination, so HALCON cannot automatically return floating licenses to the license server for reuse. Instead, the license must be returned manually before terminating the process. The examples and HDevelop code export have been updated accordingly. libcurl has been updated to version 8.4.0.
MiscellaneousThe Installation Guide now contains a short description on how to open the SOM help directly from the command line. The Installation Guide has been extended with a chapter on how to install and run HALCON in a Docker container. Furthermore, examples/docker/halcon-application/Dockerfile was added to serve as an exemplary Dockerfile.
Release Notes of Previous HALCON VersionsFollow this link to read about the changes of previous HALCON versions. |