MVTec Software GmbH - Release Notes for HALCON 22.11.4.0

Release Notes for HALCON 22.11.4.0 Steady

This document provides the release notes for MVTec HALCON 22.11.4.0 Steady, as released in December 2025.

Compatibility

Licenses

HALCON 22.11 Steady licenses are also valid for HALCON 22.11.4.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.4.0 Steady is fully compatible with HALCON 22.11 Steady, HALCON 22.11.2, and HALCON 22.11.3 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.3 :

HALCON Applications

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

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, HALCON 22.11.2, and HALCON 22.11.3, 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.4.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.4.0 Steady are library compatible to those of HALCON 22.11 Steady, HALCON 22.11.2, and HALCON 22.11.3, as well as HALCON 20.11.

HALCON 22.11.4.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.4.0 Steady are library compatible to those of HALCON 22.11 Steady, HALCON 22.11.2, and HALCON 22.11.3, as well as HALCON 20.11.

HALCON 22.11.4.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, HALCON 22.11.2, or HALCON 22.11.3 can be used with HALCON 22.11.4.0 Steady without further action. Extension packages developed with HALCON 20.11 or earlier versions must be re-generated.

Supported Operating Systems

Windows

HALCON 22.11.4.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.4.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.4.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.4.0 Steady

The changes in HALCON 22.11.4.0 Steady are described with respect to HALCON 22.11.3 .

HDevelop

Bug Fixes

Code Export
  • The code export failed for some expressions like dictionary use or named constants when these were separated from adjacent terms only by dummy parentheses and no spaces, for example: A := (D.a)and(D.b). This problem has been fixed.
  • The C# and VB exports of an assignment from subvector to variable as in v := w.at(0) did not copy the vector data, leading to shared references. This problem has been fixed.
  • Use of multiple identical dummy output variables (e.g., some_proc(In, Out1, _, _)) could lead to unexpected behavior after code export. This problem has been fixed. Note that direct calls of exported procedures from target applications should still avoid passing the same memory address for multiple output parameters.
  • When exporting only the current procedure to a single file, the setting to include referenced external procedures was ignored. This problem has been fixed.
GUI
  • Information about variables with multiple tuple elements could appear garbled in the variable window tooltip or status bar when the GUI language did not correspond to the OS system language. This problem has been fixed.
IDE
  • Editing a running program could lead to a false positive warning about program corruption when interrupting a long-running operator. This problem has been fixed.

HDevelop Example Programs

New Functionality
  • The HDevelop example program hdevelop/System/Parameters/query_system_parameters.hdev now also queries information about the used and the available licenses.

HDevEngine

Bug Fixes

  • dev_get_system('jit_enabled') reported an error when called from a JIT-compiled procedure. This problem has been fixed.
  • Remote debugging failed when procedure variables exceeded a serialized size of 100 MB. This problem has been fixed. Note that a hard limit of 2 GB still exists.

HALCON Library

New Functionality

Data Code
  • The Aztec Code reader is now more robust against false-positive reads.
  • The QR Code and Micro QR Code readers are now more robust against false positive reads. Therefore, the HDevelop example program hdevelop/Identification/Data-Code/micro_qr_strict_quiet_zone.hdev has been removed.
Identification
  • The following new GS1 Application Identifiers, which have been introduced with the General Specifications Change Notification (GSCN) 22-246, are now supported:
    7250 (Date of birth), 7251 (Date and time of birth), 7252 (Biological sex), 7253 (Family name of person), 7255 (Given name of person), 7255 (Name suffix of person), 7256 (Full name of person), 7257 (Address of person), 7258 (Baby birth sequence indicator), 7259 (Baby of family name)
  • The following new GS1 Application Identifiers are now supported:
    • 03 – Identification of a Made-to-Order (MtO) trade item (GTIN)
    • 716 – National Healthcare Reimbursement Number (NHRN) - Italy AIC
    • 7041 – UN/CEFACT freight unit type
    • 8014 – Highly Individualized Device Registration Identifier (HIDRI)
System
  • get_system_info now supports all parameters that get_system supports.
  • On Linux, HALCON used select() to check if sockets are ready for I/O. This can lead to problems if the process uses more than 1024 open file descriptors. Now, HALCON uses poll() instead, removing this limitation.

Bug Fixes

3D
Bar Code
  • In very rare cases, find_bar_code could crash if a candidate was successfully decoded by the 'small_elements_robustness' feature with activated quiet zone check, even though not a single edge pair could be detected on the original scanlines. This problem has been fixed.
  • get_bar_code_result returned incorrect 'decoded_data' for some symbols of type Code 128. This problem has been fixed.
  • For all EAN/UPC codes following ISO/IEC 15420, the decodability grade and its related value reported by get_bar_code_result with the parameters 'quality_isoiec15416', 'quality_isoiec15416_float_grades', or 'quality_isoiec15416_values' could be wrong. The wrong values were returned if the critical bars and spaces were located in one of the following symbol characters: {0, 3, 4, 5, 6, 9}. This problem has been fixed.
  • In rare cases, get_bar_code_object returned scanlines without edge markers for 'scanlines_all', 'scanlines_valid', and 'scanlines_merged_edges'. This could occur if the scanlines were positioned very close together or on top of each other due to a very high number of scanlines or a very low height of the bar code. This problem has been fixed.
  • find_bar_code failed to read correct codes for the code type 'PharmaCode' if the reading direction was restricted to reverse, e.g., via set_bar_code_param(..., 'orientation', ...) and the 'quiet_zone' check was enabled. This problem has been fixed.
  • In rare cases, a successful decode of a barcode decoding attempt using the small_elements_robustness decode feature together with the quiet_zone check could lead to the unexpected error 3100 ("Wrong segmentation threshold"). This problem has been fixed.
  • find_bar_code may have failed to successfully decode certain readable barcodes in very rare cases. The issue affected only barcodes suffering from print growth or loss. This problem has been fixed.
  • find_bar_code could crash in very rare case. This problem has been fixed.
Calibration
  • When the execution of find_calib_object was canceled in HDevelop, HALCON could crash. This problem has been fixed.
Data Code
  • get_data_code_2d_results returned the raw_coded_data of Micro QR Codes without the error correction words. This problem has been fixed. Furthermore, the raw_coded_data and the corr_coded data is now returned in packed bytes by get_data_code_2d_results for Micro QR Codes.
  • The Micro QR Code reader crashed in rare cases. This problem has been fixed.
  • find_data_code_2d identified PDF417 and Aztec symbols twice in very rare cases. This problem has been fixed.
  • The QR Code parameter 'position_pattern_min' was trained when calling find_data_code_2d with parameter 'train' set to 'all' even though it was not documented as a trainable parameter. Further, query_data_code_2d_params did not return it in the list of 'trained' parameters. These problems have been fixed. Now, 'position_pattern_min' is documented as trainable for QR Code models and can be trained as single parameter or together with other parameters (including 'all').
  • The Aztec Code reader returned a FNC1 at first position in the DecodedDataStrings and in 'decoded_data' obtained by get_data_code_2d_results. This problem has been fixed.
  • query_data_code_2d_params returned the name of a parameter that is not used anymore. This problem has been fixed.
  • The QR Code reader returned incorrect strings if Shift_JIS-encoded characters contained a \x5c character as second byte. This problem has been fixed.
  • find_data_code_2d in rare cases crashed if 'stop_after_result_num' had been set to 0. This problem has been fixed. Now, find_data_code_2d returns an error in this case.
  • The Data Matrix ECC 200 reader returned overlapping results in rare cases when executed single-threaded. This problem has been fixed.
  • In some cases, there could be issues when find_data_code_2d was called on an image with a reduced domain. This issue affected the Data Matrix, PDF417, and QR Code reader. However, only for the latter one, crashes were observed. This problem has been fixed. The new behavior can lead to slightly different results if multiple codes (more than one) are on an image. This is true even for images without a reduced domain.
  • For the Aztec Code, get_data_code_2d_results could return wrong 'quality_isoiec15415' or 'quality_isoiec29158' grades or values if either multiple codes on one image were assessed or two different standards were subsequently called on one result. This problem has been fixed.
  • For the Aztec Code reader, the parameter 'strict_model' affected the decoding result of mirrored codes: If 'strict_model' was set to 'no', actually mirrored codes could be successfully decoded even if 'mirrored' was disabled via set_data_code_2d_param. This problem has been fixed. Furthermore, the documentation now states that the 'format' setting will be ignored for the Aztec Code if 'strict_model' is set to 'no'.
  • For the Data Matrix ECC 200 reader, the 'quality_isoiec15415' evaluation via get_data_code_2d_results could crash in HALCON XL if 'quality_isoiec15415_decode_algorithm' had been set to 'reference' beforehand. This problem has been fixed.
  • In very rare cases, the PDF417 reader returned a corrupted candidate_xld, which could not be visualized. This problem has been fixed.
  • For the QR code, the X-dimension used for the synthetic smoothing as part of the print quality inspection (quality_isoiec15415 and quality_isoiec29158) was wrongly calculated. This problem has been fixed. This can affect different grades of the print quality inspection. Especially, codes with a small symbol size might be impacted more.
  • If 'polarity' was set to 'any' via set_data_code_2d_param, the print quality results for QR and Micro QR Code symbols may have been different compared to when the actual polarity was set in the model. This problem has been fixed. Now, the symbol refinement for the print quality inspection will also be executed if the result's process level is zero. These changes can lead to slightly different results for the print quality inspection and can affect the runtime of the print quality computation for QR and Micro QR Code symbols.
  • The print quality assessment for Aztec Codes via get_data_code_2d_results could crash or run into undefined behavior if the used result needed a 'module_gap' unequal 'no' to be successfully decoded. This problem has been fixed.
  • In rare cases, get_data_code_2d_results returned wrong start/stop pattern grades of the print quality inspection of PDF 417 codes. This problem has been fixed.
  • For Data Matrix ECC 200 symbols, get_data_code_2d_results returned random values for 'structured_append' if queried for unsuccessful candidates. This problem has been fixed. Now, it always returns an empty tuple for 'structured_append' if queried for an unsuccessful candidate. This is true independent of the symbol type. I.e., the behavior is now consistent for Data Matrix ECC 200, QR Code, Micro QR Code, Aztec Code, and DotCode.
  • The Aztec Code reader in rare cases did not decode small symbols close to the image border. This problem has been fixed.
  • In rare cases, the Aztec Code reader returned the error 9205 ('Matrix is singular'). This problem has been fixed.
  • find_data_code_2d could show unexpected behavior if 'strict_quiet_zone' was set to 'yes' via set_data_code_2d_param and the symbol XLD of the candidate touched or crossed the image borders. In rare cases and under the mentioned circumstances, the strict quiet zone check may not have worked correctly. The issue affected all code types supporting 'strict_quiet_zone'. This problem has been fixed.
  • get_data_code_2d_objects returned wrong results for 'module_1_rois' and 'module_0_rois' for some Data Matrix codes with a square shape in rare cases. Additionally, get_data_code_2d_results returned wrong results for 'bin_module_data' for the same cases. These problems have been fixed.
Deep Learning
  • The serialization strategy 'best' has been extended to support a new behavior, which allows models to be continuously saved during training even when validation performance is equally good compared to the last saved model. The new behavior can be enabled using the create_dl_train_param procedure and its GenParamName and GenParamValue parameters. A minimal working example can be found in the documentation of the create_dl_train_param procedure.
  • During the training of the neural networks, the learning rate was not displayed correctly when the learning rate changed. This problem has been fixed.
  • set_text_model_param with 'separate_touching_chars' set to 'enhanced' crashed if the HALCON deep learning library could not be loaded. This problem has been fixed.
  • The error handling of set_deep_ocr_param and set_dl_model_param used together with the 'recognition_model' has been aligned. Both operators will throw the same errors if an invalid shape adjustment is recognized. Furthermore, it was possible to change the image height of the recognition model's input layer by bypassing the checks in set_deep_ocr_param via set_dl_model_param together with the parameter 'input_dimensions'. These problems have been fixed.
File
  • Corrupted image files in PNM format have not always been detected. This problem has been fixed.
  • Using values exceeding the maximum image size for the read_sequence parameters SourceWidth and SourceHeight caused an error. This problem has been fixed.
  • On Windows, copy_file did not copy access rights and file timestamps of the source file. This problem has been fixed.
  • Under certain conditions, reading corrupted TIFF files caused a crash. This problem has been fixed.
Filter
  • sqrt_image, dots_image, sin_image, cos_image, and tan_image were not thread-safe for byte images when executing with non-compute device and enabled AOP. In very are cases, this could result in some false pixels. This problem has been fixed.
  • In parallel execution, edges_sub_pix could lead to non-deterministic results if the '_junctions' suffix was added to values of Filter. Furthermore, returned Edges could be duplicates in rare cases, i.e., they occurred more often than once in the result. These problems have been fixed.
  • harmonic_interpolation returned wrong results in rare cases when automatic operator parallelization was activated. This problem has been fixed.
  • eliminate_sp had a rounding issue, leading to results that were off by one. If the upper value bound of the image type was exceeded, this could also lead to defined overflow for BYTE and UINT2. The problem has been fixed.
  • Calling phase_correlation_fft with an invalid number of input objects could lead to memory corruption. This problem has been fixed.
  • In rare situations, harmonic_interpolation could generate NaN values. This problem has been fixed. Note that this fix can also affect the operators get_structured_light_object, calibrate_sheet_of_light, and some shape_model operators, since they share certain critical parts.
  • gauss_filter returned incorrect results for int4 images on 32-bit systems. This problem has been fixed.
  • gauss_filter handled inner and border region of 'real' images inconsistently. This problem has been fixed.
  • convol_image defaulted to the non-separable SIMD implementation (SSE2, AVX) when SIMD was available for real images and all separable masks except the mirrored type. Now, it uses the separable implementation instead.
  • mean_image_shape in rare cases returned slightly incorrect results for byte images due to rounding problems on aarch64 with neon enabled. This problem has been fixed.
  • highpass_image only processed the first channel for images of type 'byte'. This problem has been fixed.
Graphics
  • Small contours disappeared in HALCON windows if zoomed out. This problem has been fixed.
  • On some modern Linux systems, HALCON reported that no OpenGL is available even though the system had OpenGL support. This problem has been fixed.
  • draw_region handled sub-pixel coordinates incorrectly. Whenever the operator was executed on a strongly magnified image, the resulting region depended on which part of the pixel was actually touched: The lower-right quadrant of the image pixel resulted in the expected region pixel, whereas the other parts of the image pixel caused the resulting region to be moved by 1 to the left and/or up. This problem has been fixed.
Identification
  • The Aztec reader crashed in rare cases. This problem has been fixed.
  • HALCON could not read GS1 syntax dictionaries with "!" flags. Further, HALCON could not read GS1 syntax dictionaries with Windows CRLF line endings. These problems have been fixed.
Matching
Measure
  • The metrology model parameter 'scale' and the metrology object parameter 'distance_threshold' were previously not always serialized depending on which other model parameters were set. This problem has been fixed.
Miscellaneous
  • The HGetCElementHN macro was defined incorrectly. This problem has been fixed.
OCR
  • get_text_model_param always returned the value 'false' for the parameter 'dot_print_tight_char_spacing'. This problem has been fixed. Now, the actual setting ('true' or 'false') is returned.
Parallelization
  • area_center could return inconsistent results when called with a tuple of empty input regions containing fewer regions than the number of threads used by the automatic operator parallelization. This problem has been fixed.
Region
  • inner_circle returned the error 3513 ("Internal error: number of chords too big for num_max") if the input region contained a lot of small holes. This also affected region_features and select_shape with the corresponding features. This problem has been fixed.
  • gen_checker_region did not check the ranges for the input parameters correctly. This problem has been fixed.
  • In rare cases, closest_point_transform crashed if the output image size was set to one. This problem has been fixed.
  • In rare cases, closest_point_transform returned incorrect distances for the last output image row if Foreground was set to 'false'. This problem has been fixed.
  • inner_circle returned the error 3513 ("Internal error: number of chords too big for num_max") if the input region consisted only of short horizontal chords. This also affected region_features and select_shape with the corresponding features. This problem has been fixed.
  • polar_trans_region_inv previously restricted the input region to lie within the input virtual image to be converted. This restriction has been removed.
  • region_features(Regions : : Features : Value) crashed for multiple features when computed on a region that extends to the limits of the available coordinate range. This problem has been fixed.
System
  • Attempting to run an operator with automatic operator parallelization turned on while the thread pool was turned off led to a crash. This problem has been fixed.
  • HALCON initialized output images for operators with more than one input image when all inputs where full domain images and the image dimensions were not equal. This problem has been fixed.
  • On Windows systems, using the get_serial_param and set_serial_param operators may have resulted in a crash under certain conditions. This problem has been fixed.
Tools
Tuple
  • Calling tuple_sort on a mixed tuple with the first element being a handle returned error 6004 ("Tmp-memory management: Call freeing memory although nothing had been allocated") instead of 1201 ("Wrong type of control parameter 1"). This problem has been fixed.

HALCON/C

Bug Fixes

  • In some cases, a HALCON/C application could crash when destroying an application thread previously used to execute HALCON operators. A necessary condition was that at least one operator, typically the last one executed in the thread, returned an error result. This problem has been fixed.

HALCON/C++

Bug Fixes

  • The member methods HHandle::TupleIsSerializable and HHandle::TupleSemType of the HALCON C++ language interface did not pass their parameters to HALCON correctly and thus did not return correct results. 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

User Guides

  • The Installation Guide did not mention that the SOM package containing hardware support for license dongles is available and gave obsolete manual instructions instead. This problem has been fixed.

Reference Manual

  • The German reference manual entry of binocular_disparity_ms missed the section describing the parameter value 'num_levels'. This section has been added, and the operator reference has been revised and restructured for all languages.
  • The documentation for shape-based matching did not mention that subpixel refinement does not update scores. This problem has been fixed.
  • The reference manual entry of get_dl_model_param did not mention the parameter 'inference_outputs'. This problem has been fixed.
  • In the reference manual entry of guided_filter, an example did not match the shown images. This problem has been fixed.
  • The documentation of the parameter 'symbol_shape', for example, settable via set_data_code_2d_param, was misleading. The documentation referred to the module shape instead of the symbol shape. This problem has been fixed.
  • The reference manual did not mention that for the Micro QR Code, the parameter 'position_pattern_min' is valid and settable via set_data_code_2d_param as well as gettable via get_data_code_2d_param. This problem has been fixed.
  • The reference manual entry of set_metrology_object_param did not mention the minimum values for the parameter 'num_measures' in the case of circular and elliptic arcs, but only for closed circles and ellipses. This problem has been fixed
  • The reference manual entry for set_spy mentioned the option “error” although the option was effectless. This problem has been fixed. The outdated entry has been removed.
  • The reference manual entries of tile_images, tile_channels, and tile_images_offset have been clarified, now mentioning that all channels must be of the same image type.
  • The reference manual entry of trans_from_rgb contained an error in for the equation for v' in the cieluv and cielchuv colorspaces. Furthermore, the equations for the ihs colorspace were open to ambiguity. These problems have been fixed.

Installation

  • The scripts for automated installation have been removed from the HALCON runtime offline installers.

Licensing

  • The new supporting tool hinfo has been added and can be found in the bin folder of the HALCON installation. The tool collects information about the HALCON installation, for example, to assist with support cases or determine why a license is invalid.
  • The number of failed license rechecks accessible via get_system('failed_license_rechecks') was not counted correctly for all license types. This problem has been fixed.
  • On Windows, if a process with elevated privileges was the first process to use HALCON, other non-privileged processes from the same login session could not use the same HALCON license. This problem has been fixed.
  • hhostid has reported the same version number since HALCON 13.0.2. This problem has been fixed. Now, hhostid reports the version number of the HALCON version for which it was compiled.

Third-Party Libraries

  • The third-party library libjpeg-turbo has been updated to version 3.0.3.
  • The third-party library LibTIFF has been updated to version 4.7.0.
  • The third-party library JasPer has been updated to version 4.2.4.
  • The third-party library libpng has been updated to version 1.6.43.
  • The third-party library PCRE2 has been updated to version 10.44.
  • The third-party library zlib has been updated to version 1.3.1.
  • The third-party library Apache Thrift has been updated to version 0.20.0.
  • The third-party library libxml2 has been updated to version 2.13.2.
  • HALCON now uses version 8.20a of the CodeMeter Runtime.
  • HALCON now uses version 8.30a of the CodeMeter Runtime.
  • LibTIFF has been updated to version 4.7.1.

Errata Release Notes

  • Various release notes were missing in the previous version. This problem has been fixed.

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