MVTec Software GmbH - Release Notes for HALCON 22.11.3.0

Release Notes for HALCON 22.11.3.0 Steady

This document provides the release notes for MVTec HALCON 22.11.3.0 Steady, as released in July 2024.

Compatibility

Licenses

HALCON 22.11 Steady licenses are also valid for HALCON 22.11.3.0 Steady. In contrast, all HALCON 20.11 licenses or licenses of earlier versions must be replaced or upgraded. Please contact your local distributor.

HALCON Library

HALCON 22.11.3.0 Steady is fully compatible with HALCON 22.11 Steady and HALCON 22.11.2 except for the changed behavior of some operators owing to bug fixes. Compared to HALCON 20.11, many extensions have been introduced. Thus, the HALCON 22.11 Steady libraries are not compatible with HALCON 20.11 or earlier versions. In detail, please note the following incompatibilities with respect to HALCON 22.11.2 :

HALCON Applications

Applications (i.e. executables) developed with HALCON 22.11 Steady or HALCON 22.11.2 can be used with HALCON 22.11.3.0 Steady, i.e., HALCON 22.11.3.0 Steady is binary compatible with HALCON 22.11 Steady and HALCON 22.11.2.

All programs (C, C++ or .NET) that have been developed with HALCON 20.11 must be recompiled. The incompatibility with HALCON 20.11 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 and for HALCON 22.11 Steady and HALCON 22.11.2, respectively.

Please note that applications using HALCON/.NET (and HDevEngine/.NET) have local copies of the corresponding assemblies (halcondotnet.dll etc.). After installing HALCON 22.11.3.0 Steady, these applications would therefore use the old version of the HALCON/.NET interface together with the new version of the HALCON library. To benefit from the bug fixes in the HALCON/.NET interface as well, you must either replace the assemblies manually or recompile the projects. If you do not recompile the application, you need to add an application configuration file mapping the application's expected assembly version to the new version. See the Programmer's Guide for more information.

Image Acquisition Interfaces

In general, image acquisition interfaces of HALCON 22.11.3.0 Steady are library compatible to those of HALCON 22.11 Steady and HALCON 22.11.2, as well as HALCON 20.11.

HALCON 22.11.3.0 Steady includes only a subset of available image acquisition interfaces. Image acquisition interfaces that are included are: DirectFile, DirectShow, File, GenICamTL, GigEVision2, GStreamer, RealSense, USB3Vision, and Video4Linux2. You can download additional interfaces from our web server.

Digital I/O Interfaces

In general, digital I/O interfaces of HALCON 22.11.3.0 Steady are library compatible to those of HALCON 22.11 Steady and HALCON 22.11.2, as well as HALCON 20.11.

HALCON 22.11.3.0 Steady includes only a subset of available digital I/O interfaces. Digital I/O interfaces that are included are: OPC_UA, Hilscher-cifX, and Linux-GPIO. You can download additional interfaces from our web server.

Extension Packages

Extension packages developed with HALCON 22.11 Steady or HALCON 22.11.2 can be used with HALCON 22.11.3.0 Steady without further action. Extension packages developed with HALCON 20.11 or earlier versions must be re-generated. Note that the old makefiles for HALCON/C++ must be adapted according to the sample makefile under extension_packages/halconuser.

Further Compatibility Information

Supported Operating Systems

Windows

HALCON 22.11.3.0 Steady has been compiled for the x64-win64 platform version for Windows 8.1/10 (x64 editions)/11 or Windows Server R2/2012 R2/2016/2019/2022 on Intel 64 or AMD 64 with SSE2 (AVX2 dispatch) processors.

Linux

HALCON 22.11.3.0 Steady has been compiled for the following Linux platform versions:

  • x64 platform version for Linux x86_64, GLIBC_2.17, GLIBCXX_3.4.21, on Intel 64 or AMD 64 with SSE2 (AVX2 dispatch) processors
  • armv7a platform version for Linux armv7a, Kernel with hidraw support, hard-float ABI, GLIBC_2.17, GLIBCXX_3.4.21 on Armv7-A processors with NEON support
  • aarch64 platform version for Linux aarch64, Kernel with hidraw support, GLIBC_2.17, GLIBCXX_3.4.21 on AArch64 processors with AArch64 support

Please refer to the Installation Guide for detailed system requirements corresponding to the different Application Binary Interfaces.

macOS

HALCON 22.11.3.0 Steady has been compiled for the x64 platform version of macOS 11, macOS 12 on Intel 64 with SSE2.

Detailed Description of Changes in HALCON 22.11.3.0 Steady

The changes in HALCON 22.11.3.0 Steady are described with respect to HALCON 22.11.2 .

HDevelop

Bug Fixes

Assistants
  • 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.
Code Export
  • 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.
GUI
  • Adding a new tuple element in HDevelop's Variable Inspect Window was not possible anymore. This problem has been fixed.
Procedures
  • For 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.
Miscellaneous
  • Using HDevelop via command line, e.g., for hdevelop -convert operations, did not properly return floating licenses. This problem has been fixed.
  • Compute devices were not deactivated when resetting the program in HDevelop (e.g., when pressing F2). This problem has been fixed.

HDevelop Example Programs

Bug Fixes
  • The HDevelop example program hdevelop/Calibration/Multi-View/calibrate_cameras_monocular.hdev in very rare cases raised an error. This problem has been fixed.
  • 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.

HDevEngine

Bug Fixes

  • On Windows, accessing a non-existing dictionary key in a comparison using the dot syntax in JIT-compiled code did not always throw a proper exception. 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 Library

New Functionality

Bar Code
  • 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 Code
  • 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.

Bug Fixes

3D
Bar Code
  • 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.
  • 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
  • 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.
  • 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.
  • 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.
  • In rare cases, the modules obtained by get_data_code_2d_objects with `module_1_rois' or 'module_0_rois' were mirrored if 'finder_pattern_tolerance' was set to 'any' or 'high' and 'mirrored' was set to 'any'. This problem has been fixed.
Deep Learning
  • 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.
  • 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'.
  • 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.
  • HALCON has been extended with the public procedure get_image_dir. This procedure returns the directories that will be searched by HALCON when reading images (e.g., with read_image or read_sequence). This may include but is not limited to the contents of the HALCONIMAGES environment variable and the local directory.
    Example programs now use get_image_dir instead of manually constructing the path using the example directory.
File
  • read_sequence could crash HALCON XL when reading very large binary images. This problem has been fixed.
  • json_to_dict and read_dict could not convert JSON arrays containing at least one JSON object to a tuple containing dicts when the option 'convert_json_arrays_to' was set to 'tuple' or 'tuple_if_possible'. This problem has been fixed.
Filter
  • 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.
  • 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.
Graphics
  • 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.
Identification
  • When training the Aztec Code reader, find_data_code_2d did not accept 'contrast' as parameter to be trained, instead it expected 'contrast_min'. This problem has been fixed, and both values are accepted now.
Inspection
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
Miscellaneous
Morphology
OCR
  • 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.
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.
  • timed_wait_condition did not relock the mutex in the event of a timeout when used in HDevelop. This problem has been fixed.
Region
  • 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.
  • 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.
System
  • get_system_info('available_license_files') returned error 2036 ("could not find license file") if no license files could be found. Now, it will return no error but an empty tuple instead.
Tools
  • 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.
  • 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.
Tuple
  • tuple_is_number returned 1 for the strings '08' and '09', which are not valid octal numbers. This problem has been fixed.
XLD

Procedures

Bug 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/C

Bug Fixes

  • Using null strings could cause crashes or memory leaks with the C, C++, or .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.
    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, C++, or .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.
    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/.NET

Bug 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 C, C++, or .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.
    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/PYTHON

Bug Fixes

  • If the HALCON/Python interface edition does not match the HALCON edition, now a warning is logged.

Language Interface Example Programs

Bug Fixes

  • 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.

Extension Packages

Bug Fixes

  • The sample documentation for the halconuser extension package example contained an incorrect link. 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.

Documentation

Programmer's Manuals

  • The Programmer's Guide chapter “Debugging HDevEngine From HDevelop” did not mention the example for Python remote debugging. This problem has been fixed.

Solution Guides

  • 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.
  • The Solution Guide III-B 2D Measuring referenced an outdated location for further information about 2D metrology. This problem has been fixed.
  • The Solution Guide III-B 2D Measuring mentioned a wrong operator regarding the center of a shape model region. This problem has been fixed.

Reference Manual

  • 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 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 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 for hom_mat2d_translate listed a non-applicable example in the list of possible application examples. This problem has been fixed.
  • 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 read_char has been updated to better indicate when 'canceled' is returned.
  • 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 spatial_relation confused vertical and horizontal relations in the description of the parameters Relation1 and Relation2. This problem has been fixed.
  • 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.

Miscellaneous

  • Several manuals mentioned legacy operators as examples or in code snippets. This problem has been fixed.

Installation

  • The .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.
  • Some HALCON SOM package descriptions were not localized. This problem has been fixed.
  • HALCON now uses version 7.60d of the CodeMeter Runtime.
  • 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.
  • The HALCON installation included a deprecated version of somctl, which on Windows systems made it impossible to uninstall HALCON via the control panel. As newer versions of SOM no longer require somctl in the HALCON installation, the latter has been removed completely from the installation.

Licensing

  • On 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.
  • Using a numeric IP address for the license server connection did not work. This problem has been fixed. Further, you can now enforce certificate verification by prepending the string verify| to the server URL in the license file, e.g., server=verify|https://<servername>:22022.
  • HALCON did not correctly map errors from the floating license server to HALCON error codes. This problem has been fixed.

Follow this link to read about the changes of previous HALCON versions.