HALCON Progress Key Visual shows a person running at high speed
MVTec Software GmbH - Release Notes for HALCON <span>23.11.0.0</span>

Release Notes for HALCON 23.11.0.0 Progress

This document provides the release notes for MVTec HALCON 23.11.0.0 Progress, as released in November2023.

Major New Features of HALCON 23.11.0.0 Progress

Structured Light 3D Reconstruction

In 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 Classification

In 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 Ready

With 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 Improvements

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

Compatibility

Licenses

HALCON 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:

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 Interfaces

In 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 Interfaces

In 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 Packages

Please re-generate your own extension packages developed with HALCON 23.05 Progress.

Supported Operating Systems

Windows

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

Linux

HALCON 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 Progress

The changes in HALCON 23.11.0.0 Progress are described with respect to HALCON 23.05.

HDevelop

Bug Fixes

Assistants
  • In the Calibration Assistant, user-defined calibration did not reactivate previously excluded parameters. This problem has been fixed.

Code Export
  • Using 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.

GUI
  • In 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
  • The display of the procedure documentation in HDevelop did not react to changing of the help language. This problem has been fixed.

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

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
  • HDevelop 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 Programs

New 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 Functionality
  • The 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 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 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.

HDevEngine

Bug Fixes

  • In 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 Library

Speedup

  • distance_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:

    ArchitectureInstruction setImage TypeFilter SizeFactorSpeedup
    ARMNEONbyte3x31.0up to 175%
       5x5 up to 110%
       15x15 up to 75%
       3x30.7/2.8up to 140%
       5x5 up to 110%
       15x15 up to 60/90%
      int2/uint23x31.0up to 35/30%
       5x5 up to 35/25%
       15x15 up to 30/25%
    x86/x64AVX2byte3x3 up to 20%
       5x5 up to 10 %
      int2/uint23x30.7/2.8up 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 SizeArchitectureInstruction setSpeedup
    3x3ARMNEONup to 170%
    3x3x86/x64AVX2up to 15%
    9x9ARMNEONup to 70%

    bandpass_image is now faster. In particular, the following speedups can be expected for a 512x512 image:

    ArchitectureInstruction setImage TypeSpeedup
    ARMNEONbyteup to 30%
    ARM64 uint2up to 200%
    ARMv7a  up to 300%
    x86/x64AVX2byteup 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 architectureSpeedup
    ARM64up to 80%
    Armv7up 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 architectureFilter SizeSpeedup
    ARM643x3up to 20%
    Armv7 up to 5%
    ARM645x5up 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 architectureSpeedup
    ARM64up to 40%
    Armv7up to 20%
  • The runtime of read_region when reading binary TIFF images has been improved significantly.

New Functionality

3D
  • The 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 Code
  • The 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 Code
  • For 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 Learning
  • A 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
  • Memory block support has been improved. Previously, handling of empty memory blocks was not supported. Now, memory blocks can be handled even when empty.

    Note that this change affects the compatibility. Read more.
Graphics
  • set_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.

Matching
Miscellaneous
  • The OpenSSL library has been updated to version 1.1.1u.

Parallelization
  • HALCON's automatic operator parallelization can now use more than 64 cores when running Windows 11 or Windows Server 2022.

Region
System
  • open_socket_connect now allows setting the "Server Name Indication" (RFC 6066) for TLS sockets using the generic parameter 'tls_sni'.

Tools

Bug Fixes

3D
Bar Code
Calibration
Classification
Data Code
  • get_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 Learning
  • train_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'.

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

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

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

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

Matching
Miscellaneous
  • gen_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.

Morphology
OCR
  • trainf_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.

Region
  • inner_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
  • 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_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
  • tuple_is_number returned 1 for the strings '08' and '09', which are not valid octal numbers. This problem has been fixed.

XLD

Procedures

Functionality

Bug Fixes

  • When working with the procedure dev_display_deep_counting_results and big images, the min_score slidebar and button Exit could disappear. This problem has been fixed.

HALCON/.NET

Bug Fixes

  • The Easy Extension adapter did not report the correct parameter names in HDevelop when implementing multiple operators. This problem has been fixed.

Language Interface Example Programs

Bug Fixes

  • The 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 Inspect

Bug Fixes

  • The 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 Packages

Bug Fixes

  • The 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 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 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 Guides

  • The 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 Manual

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

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.

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

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.

Miscellaneous

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

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