Release Notes für HALCON 22.05 Progress

This document provides the release notes for MVTec HALCON 22.05.0.0 Progress, as released in May 2022.

Contents

Major New Features of HALCON 22.05.0.0 Progress

Notable Quality-of-Life Improvements and Speed-Ups

With HALCON 22.05, various improvements are released. One example is a new operator that performs adaptive histogram equalization to improve contrast locally in an image. This helps to extract significantly more information from images with low contrast, especially in case of inhomogeneous gray value gradient. Besides, the HALCON library has been extended with a new operator, which allows image smoothing with arbitrarily shaped regions.
Furthermore, another new operator allows you to transform 3D points using a rigid 3D transformation that is specified as a dual quaternion. And finally, HDevelop’s Matching Assistant now generates the code based on Generic Shape Matching.

Improved Print Quality Inspection for ECC 200 Codes

Print Quality Inspection (PQI) refers to the evaluation and grading of certain aspects of printed bar and data codes according to international standards. For example, it indicates how reliable a code can be read by various code readers or how stable the print quality is in a manufacturing process. HALCON supports various standards for grading the print quality of 1D and 2D codes.
With HALCON 22.05, the PQI of data codes has been further improved. It is now up to 150% faster. In addition, the module grid determination for print quality inspection of ECC 200 has been improved. Last but not least, the usability of the PQI of data codes has been improved by introducing a new procedure that provides the grades.

Global Context Anomaly Detection

HALCON 22.05 opens up completely new application possibilities with the detection of logical anomalies in images. This is the further development of the deep learning technology anomaly detection. Until now, it was possible to detect local, structural anomalies. The new “Global Context Anomaly Detection” is a one-of-a-kind technology, which is able to “understand” the logical content of the entire image. Just like HALCON’s existing anomaly detection, the new “Global Context Anomaly Detection” only requires “good images” for training, eliminating the need of data labeling.
This technology makes it possible to detect entirely new variants of anomalies, for example, missing, deformed, or incorrectly arranged components. It opens up completely new possibilities: For example, the inspection of printed circuit boards in the semiconductor production or the inspection of imprints.

Deep OCR Training

HALCON’s DeepOCR enables users to efficiently solve text reading applications in a multitude of use cases. With HALCON 22.05, this technology is extended by training functionality, enabling application-specific training on the user’s own application-specific image dataset. This allows you to solve even most complex applications like reading text with bad contrast (e.g., on tires). Another advantage is that very rarely used special characters or printing styles can also be trained. Training for Deep OCR significantly improves the performance and usability and makes applications run even more robust.

Compatibility

Licenses

HALCON 22.05.0.0 Progress requires a valid HALCON Progress license and does not run with licenses of HALCON 13 and earlier versions or HALCON Steady.

HALCON Library

Compared to HALCON 21.11 Progress, many extensions have been introduced. Thus, the HALCON 22.05.0.0 Progress libraries are not binary compatible with HALCON 21.11 Progress or earlier versions. However, HALCON 22.05.0.0 Progress is mostly source-code compatible to HALCON 21.11 Progress except for the changes listed below:

  • The results of optical_flow_mg can be slightly different when enabling the new parameter 'parallel_solver'. More information.
  • For the operator create_dl_layer_pooling, the default value of 'global_pooling_mode' has been changed (only applicable for pooling layers with mode 'global_maximum' or 'global_average' and kernel size other than [1, 1]). To obtain the same results as in the previous version, the generic parameter 'global_pooling_mode' must be set to 'non_overlapping'. This only affects DL models that are newly created with the DL framework using the above operator, followed by create_dl_model. Models that have been serialized and are just read using read_dl_model are not affected. More information.
  • set_dl_classifier_param and set_dl_model_param may return the error message 7913 ("DL: Requested runtime cannot be set") if the legacy parameter 'runtime' (use operator query_available_dl_devices instead) is set to 'gpu' but no GPU is available on the system. More information.
  • gen_filter_mask does not scale anymore but takes the inverse into account and its output is now independent of the image size. As a consequence, the operator's results will differ from those of its previous implementation. More information.
  • Due to an internal bug, the Inception_v1 model from the ONNX model zoo could be read in and the runtime could be set to 'cpu' but returned pure inference results. Therefore, this specific model can no longer be inferred using a HALCON runtime.
  • As the Deep OCR detection model used by create_deep_ocr has been improved and changed, apply_deep_ocr may now produce different results for the modes 'detection' and 'auto' for certain images. More information.
  • The error messages returned by the deep learning procedure augment_dl_samples have been modified. More information.
  • The define H_ERR_CAL_AMBIGIOUS in HErrorDef.h has been renamed to H_ERR_CAL_AMBIGUOUS, which can break source code compatibility. More information.

HALCON Applications

Please re-compile all C, C++, or .NET programs developed with HALCON 21.11 Progress. The incompatibility with HALCON 21.11 Progress or earlier versions mainly concerns the binaries, with only few changes in the language interfaces. If you encounter problems during recompiling your programs, please check the detailed description of changes below.

Image Acquisition Interfaces

In general, HALCON 22.05.0.0 Progress, HALCON 21.11 Progress, and HALCON 18.11 Steady image acquisition interfaces are library compatible.

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

Digital I/O Interfaces

In general, HALCON 22.05.0.0 Progress, HALCON 21.11 Progress, and HALCON 18.11 Steady digital I/O interfaces are library compatible.

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

Extension Packages

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

Further Compatibility Information

Planned Discontinuation of HALCON for macOS

MVTec plans to discontinue the support of macOS systems. The future HALCON releases HALCON 22.11 Steady and HALCON 22.11 Progress, which will be released in November 2022, will most likely be the last HALCON versions for which macOS support will be available. We recommend that you start switching your applications to Windows or Linux platforms.

Supported Operating Systems

Windows

HALCON 22.05.0.0 Progress has been compiled for the x64-win64 platform version for Windows 8.1/10 (x64 Edition)/11 or Windows Server 2012 R2, 2016, 2019, 2022 on Intel 64 or AMD 64 processors.

Linux

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

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

macOS

HALCON 22.05.0.0 Progress has been compiled for the x64 platform version of macOS 11, macOS 12 on Intel 64.

Detailed Description of Changes in HALCON 22.05.0.0 Progress

The changes in HALCON 22.05.0.0 Progress are described with respect to HALCON 21.11 Progress.

HDevelop

New Functionality

Assistants
  • The HDevelop Matching Assistant has been updated and now generates code using the generic shape model interface. The assistant also supports the logic of the generic model interface and uses the angle range as search parameters. The corresponding chapter explaining the Matching Assistant in the HDevelop User's Guide has been restructured and updated.
    Note that the behavior of the Matching Assistant has been changed regarding the effect of 'Detect All': The value for 'Maximum Number of Matches' is not reset (except for descriptor-based matching) and the number of visible objects is only set if no value was specified before.
GUI
  • HDevelop no longer supports the Italian language setting. The corresponding option is no longer available in the Preferences dialog.
  • On Windows and Linux, HDevelop relied on the regional format to decide which GUI language to use. Now, HDevelop uses the selected display language of the OS instead. Note that this is only relevant when HDevelop is started for the first time.
  • The usability of the language selection has been improved. Now, the language page permanently displays a reminder to restart HDevelop if the help language has been changed.
  • The usability of the language selection has been improved. Now, the entries for selecting the language have the same format.
  • The operator window has been improved. Now, the layout of the window can be switched between one and two columns.
  • The execution time of dev_set_window has been improved. Now, if dev_set_window is called on the already active window, the execution is much faster.
Help
  • On a fresh installation, the language of the operator reference will be the same as the language of the system if applicable. If the system language is not supported for the help, the default language will be English.
IDE
  • Auto-completion in HDevelop now considers operator and procedure input parameter types when showing suggestions for dictionary keys.
Miscellaneous
  • The command line interface has been improved. Now, it is possible to convert all files contained in a directory in a single step. For example, it is now possible to protect all files in a directory with one call.

Bug Fixes

Code Export
  • Passing a constant string literal to a parameter with default type real (e.g., threshold(Image, Region, 'min', 255) produced incorrect code when exporting to HALCON/C. This problem has been fixed.
  • If the last case in a switch statement contained only comments but no code then the code export to C or C++ did not compile. This problem has been fixed.
  • HDevelop erroneously rejected namespace names containing a period (.) when using the library export from the command line to the target language C#. This problem has been fixed.
GUI
  • When moving a dialog (for example, the image acquisition dialog) between screens with different scaling, artifacts could appear in GUI controls. This problem has been fixed.
  • When moving a floating window over the main HDevelop window, the drop indicators were sometimes not visible. This problem has been fixed.
  • After undocking a tabbed widget from the application with the dock button, the new floating and tabbed widgets could not be docked again to the application via the dock button. This problem has been fixed.
  • The used fonts for the buttons of the User Interface > Fonts settings in the preferences dialog did not always correspond to the selected font. This problem has been fixed.
  • Under Linux, docking a minimizable window to a free floating window that was covered by HDevelop let the window disappear. This problem has been fixed.
  • In a setup with multiple monitors and different scaling, the size of the graphics window was not correct when running a program after dragging HDevelop from one monitor to another. This problem has been fixed.
  • When opening a graphics window on the main screen, moving it to a second screen with 150% scaling, closing it, and then reopening it on the main screen again, the window had a different size. This problem has been fixed.
  • In rare cases, the Create Procedure dialog initially showed wrong fields when opened. This problem has been fixed.
  • When opening a variable inspect window, some visual artifacts appeared temporarily. This problem has been fixed.
  • Changing the size of a graphics window in the canvas during a drawing operation could lead to unexpected window sizes. This problem has been fixed. Now, it is not possible to change the size of a graphics window during a drawing operation.
  • Under Linux, the help window sometimes did not open the first time. This problem has been fixed.
  • The tab order in the Preferences > General Options dialog was confusing. This problem has been fixed.
  • The preview of the visualization settings in the Preferences dialog was distorted when resizing the window. This problem has been fixed.
  • Minimizable floating windows did not have an icon in the taskbar. This problem has been fixed.
  • For a graphics window present in the canvas, wrong image coordinates were displayed when pressing Ctrl and moving the mouse over the graphics window frame (i.e., outside the image). This problem has been fixed. Now, no coordinates are displayed in this case.
  • Sometimes the wrong cursor symbol was displayed for a graphics window in the canvas. This problem has been fixed.
  • When a draw operator like get_mbutton was waiting for an event within the graphics window in the canvas, the context menu could appear upon right-click. This problem has been fixed.
  • Under Linux, the HDevelop assistants opened and reopened at unexpected positions and with unexpected sizes. This problem has been fixed.
  • When using the Window > Restore Default Layout use > Canvas option, unexpected zooming could happen. Further, the view could jump slightly when zooming or resizing the canvas. These problems have been fixed.
  • On the canvas, the text displayed on the zoom button sometimes was bigger than the zoom button itself. This problem has been fixed.
  • The size of graphics window was not correct if it was opened between two screens with different scaling. This problem has been fixed.
  • The resizing of windows located in the canvas has been improved. Previously, windows may not have been resized correctly if the canvas was zoomed in or out. Now, the resizing works as expected.
  • Some options of the Telemetry dialog were not translated. This problem has been fixed.
  • The German translation contained some spelling errors. These problems have been fixed.
  • Adding a graphics window to the canvas via the main window menu could result in the graphics window not being fully visible. This problem has been fixed.
  • Reopening the Export Library Project dialog did not bring it in front of the application if the floating window behavior was set to minimizable windows. This problem has been fixed.
  • The usability of HDevelop has been improved. Previously, large menus were multi-column and could take up a lot of the available screen space. This problem has been fixed. Now, the menus are always single-column and can be scrolled if they contain many entries.
  • The icons in the Edit Procedure menu did not change when the theme was changed. This problem has been fixed.
Help
  • The path of the extension package documentation was wrong when trying to display it via the HDevelop help. This problem has been fixed.
IDE
  • When executing a program line in HDevelop with Ctrl+Return or Ctrl+Enter, the handle inspect widget was not updated properly. This problem has been fixed.
  • The colors of the program editor were reset and not imported from previous versions. This problem has been fixed.
  • HDevelop sometimes highlighted lines incorrectly. This problem has been fixed.
  • HDevelop's autocompletion did not react to typing the string dict at a position where an operator or procedure name was expected. This problem has been fixed.
  • HDevelop procedures were sorted into the operator menu according to their English chapter entries, instead of those for the currently selected help language. This problem has been fixed.
  • The inline method of tuple_gen_sequence displayed a wrong tool tip. This problem has been fixed.
  • Code lines that start with an invalid character behaved misleadingly. E.g., their tool tip displayed 'comment' as operator type but did not display the error text. This problem has been fixed. Now, these lines behave like any other code lines with errors.
  • The variable inspect did not update when it was hidden. This problem has been fixed.
  • In rare cases, HDevelop's autocompletion erroneously removed one or more letters of the code that should be completed. This problem has been fixed.
  • HDevelop sometimes added a superfluous dot when replacing the key of a dictionary by a second key. This problem has been fixed.
  • The completion when pressing Tab did not always stick to the written code. For example, if a variable bab existed and in the next line the user typed ab, then the completion result was bab instead of the correct ab. This problem has been fixed.
  • HDevelop could crash if a variable inspect window was open during execution and the inspected iconic variable changed a lot. This problem has been fixed.
Language
  • In rare cases, HDevelop resolved imported procedures not correctly. The problem occurred when a statement imported a procedure, and a second import below the first one pointed to a procedure that was not visible (e.g., because it was a private library procedure) with the same name at a different location.
    In this case, a procedure call could not be resolved to the first procedure, but remained unresolved. This problem has been fixed.
Procedures
  • Pressing Ctrl+Alt+Enter to open a procedure in HDevelop did not work. This problem has been fixed.
  • In the dark theme, code blocks within the procedure documentation were not legible. This problem has been fixed.
Miscellaneous
  • Sometimes HDevelop crashed when a widget was closed. This problem has been fixed.
  • C-style comments in HDevelop language scripts (i.e., comments at the end of a code line that begin with "//") were not printed when printing a program from HDevelop. This problem has been fixed.
    Furthermore, reformatting a program with hdevelop -convert -reset_free_text now preserves C-style comments as well.
  • Opening graphics windows inside the canvas has been improved. Previously, opening a window with default size argument (-1, -1) lead to a very small window if the window was opened in the canvas. This problem has been fixed. Now, the previous window settings are used.

HDevelop Example Programs

New HDevelop Example Programs
  • hdevelop/Deep-Learning/AnomalyDetection/dl_anomaly_detection_global_context_workflow.hdev
  • hdevelop/Filters/Enhancement/equ_histo_image_rect.hdev
  • hdevelop/OCR/Deep-OCR/deep_ocr_prelabel_dataset.hdev
  • hdevelop/OCR/Deep-OCR/deep_ocr_recognition_training_workflow.hdev
Bug Fixes
  • The HDevelop example program hdevelop/Applications/OCR/ocr_gradient_feature.hdev has been rewritten to not include legacy operators.
  • The HDevelop example program hdevelop/Deep-Learning/AnomalyDetection/dl_anomaly_detection_workflow.hdev created DL preprocessing parameters with wrong image_range_min and image_range_max values, stored in DLPreprocessParam. This problem has been fixed. Now, DLPreprocessParam uses the same image_range_min and image_range_max values as the anomaly detection model.
  • The model created in the HDevelop example program hdevelop/Deep-Learning/Framework/create_dl_model_segmentation.hdev could not be used in the HDevelop example program hdevelop/Deep-Learning/Segmentation/dl_segmentation_workflow.hdev. This problem has been fixed.

HDevEngine

Bug Fixes

  • Using the attribute 'ignore_unresolved_lines' it was possible for an unresolved procedure call to be excuted in HDevEngine when that call occurred before an import statement making the procedure available. This problem has been fixed.

HALCON Library

Speedup

  • bandpass_image is now faster for byte and uint2 images on x64-based systems. In particular, the following speedups can be expected for a 512x512 image:
    Image Type Speedup
    byte up to 760%
    uint2 up to 440%
  • The following operators are now faster on Windows platforms:
    Operator Speedup
    connection up to 60%
    area_center up to 50 %
    apply_bead_inspection_model up to 45%
    photometric_stereo up to 13%
    find_ncc_model
    find_ncc_models
    up to 10%
    find_text up to 10%
    find_bar_code up to 10%
    find_box_3d up to 10%
  • emphasize is now faster for int2 and uint2 images. In particular, the following speedups can be expected for a 512x512 image:
    Image Type Filter Size Factor Speedup
    uint2 3x3 1.0 up to 115%
    int2     up to 30%
    uint2 5x5   up to 20%
    int2     up to 30%
           
    uint2 3x3 0.7 up to 10%
    uint2 5x5   up to 5%
    int2     up to 5%
    highpass_image is now faster for byte images. In particular, the following speedups can be expected for a 512x512 image:
    Filter Size Speedup
    3x3 up to 260%
    9x9 up to 65%
  • find_data_code_2d is now about 20% faster for QR codes on x64-based systems. The expected speedup strongly depends on the image content.
  • get_data_code_2d_results is now faster for various print quality inspection standards supported by HALCON including ISO/IEC 15415, ISO/IEC TR29158, SEMI T10, and AIM DPM-1-2006. A speedup of up to 150% can be achieved on images with highly resolved data codes (module size at least 10 pixels). The speedup heavily depends on the resolution and size of the data code. Furthermore, get_bar_code_result is now faster for the print quality inspection standard ISO/IEC 15416. The speedup also heavily depends on the size and resolution of the bar code.
  • The performance of optical_flow_mg has been improved. The operator is now up to 23% faster in serial execution and up to 61% faster with internal parallelization enabled. Additionally, the new parameter 'parallel_solver' can be used to further speed up the 'fdrig' solver with internal parallelization for a total of 83% over the previous version. Note that this change affects the compatibility. Read more.
  • sobel_dir with FilterType = 'sum_sqrt' is now faster on processors that support the AVX512BW instruction set. The speedup is up to 67% compared to the AVX2 version.

New Functionality

3D
  • HALCON has been extended with an operator dual_quat_trans_point_3d that transforms 3D points using a rigid 3D transformation that is specified as a dual quaternion.
Bar Code
  • get_bar_code_result was extended with the generic parameter 'decode_feature' indicating which feature was used for successfully decoding each result.
  • HALCON now supports all GS1 application identifiers specified in the latest version of the “GS1 General Specifications” (January 2022).
Data Code
  • The Data Matrix ECC 200 reader has been improved for small codes. Now, challenging Data Matrix ECC 200 codes with symbol sizes smaller than 16 x 16 can be read more robustly.
  • For some cases of degraded Data Matrix ECC 200 codes with damaged solid pattern, find_data_code_2d is more robust now. Additionally, the module position determination of get_data_code_2d_results for the print quality inspection is improved for such cases.
  • The procedure dev_display_data_code_2d_print_quality_results has been extended with the generic parameter 'grid'. If set to 'true', dev_display_data_code_2d_print_quality_results displays a line-based grid to visualize the base for print quality grading.
  • For the ECC 200 print quality inspection, determining the solid pattern width (as part of the finder pattern) has been improved.
  • HALCON has been extended with a procedure grade_data_code_2d, which performs print quality inspection on data codes and returns all results in a dictionary. The quality grades can be represented either as numbers (0-4) or letters (F-A). Furthermore, in addition to the grades, all existing intermediate results can be returned.
    The HDevelop example programs
    • hdevelop/Identification/Data-Code/ecc200_print_quality.hdev
    • hdevelop/Identification/Data-Code/ecc200_print_quality_intermediate_results.hdev
    • hdevelop/Identification/Data-Code/print_quality_reflectance_reference.hdev
    have been adapted to demonstrate the usage of the procedure.
  • In dev_display_data_code_2d_print_quality_results, the visualization of the module grid for ECC 200 codes has been removed. Now, only the module centers can be visualized.
  • HALCON now supports all GS1 application identifiers specified in the latest version of the “GS1 General Specifications” (January 2022).
  • The determination of the module grid for print quality inspection has been improved for Data Matrix ECC 200 codes. In addition, the grid center determination on the alternating pattern has been adapted to follow the reference decode algorithm described in ISO/IEC 16022:2006/Cor.2:2011.
Deep Learning
  • create_dl_layer_loss_distance has been improved by making the input node DLLayerWeights optional. Now, passing an empty tuple is possible to use a constant weight of 1 for every value.
  • HALCON has been extended with deep learning-based Global Context Anomaly Detection to detect logical and structural anomalies. Global Context Anomaly Detection is an additional anomaly detection method. It makes it possible to find structural anomalies like scratches or contaminations as well as logical anomalies like missing objects.
    The HDevelop example hdevelop/Deep-Learning/AnomalyDetection/dl_anomaly_detection_global_context_workflow.hdev and the trained model detect_juice_bottle_gc_anomalies.hdl have been added to show how to use deep learning-based Global Context Anomaly Detection in HALCON.
    The new pretrained model pretrained_dl_anomaly_global_context.hdl is now available and can be trained on the specific dataset.
    The following deep learning procedures have been extended to handle Global Context Anomaly Detection and its results:
    • compute_dl_anomaly_thresholds
    • create_dl_preprocess_param_from_model
    • create_dl_train_param
    • dev_display_anomaly_detection_evaluation
    • dev_display_dl_data
    • evaluate_dl_model
    • train_dl_model
    The following new deep learning procedures are now available:
    • normalize_dl_gc_anomaly_features to prepare the model for training on a given dataset
    • normalize_dl_gc_anomaly_scores to normalize the anomaly scores of the local and the global network to a suitable range
    The reference manual chapters "Deep Learning", "Deep Learning/Model", and "Deep Learning/Anomaly Detection" methods" as well as the operator entry for get_dl_model_param have been extended and now describe how to use the method Global Context Anomaly Method and the corresponding parameters.
  • The DL framework pooling layer operator create_dl_layer_pooling has been improved. For the global pooling modes 'global_maximum' and 'global_average', a new generic parameter 'global_pooling_mode' has been introduced that allows selecting among three different modes for the calculation of the internally used kernel size and stride of global pooling: 'overlapping' (new default), 'non_overlapping' (previous default), and 'adaptive'. Note that this change affects the compatibility. Read more.
  • HALCON has been extended with Deep OCR recognition training.Now, the recognition component of a Deep OCR model can be retrained on a specific application domain for even better reading results.
    The training allows the addition of new characters.
    The new HDevelop example hdevelop/OCR/Deep-OCR/deep_ocr_recognition_training_workflow.hdev has been added to show how to use this feature in HALCON. For this example, a new set of images has been added. It is located in the example images folder named "expiration_date".
    The new HDevelop example program hdevelop/OCR/Deep-OCR/deep_ocr_prelabel_dataset.hdev shows how to prelabel images using Deep OCR and create a dataset that can be imported into the Deep Learning Tool for refining the labels.
    A new augmentation method named "remove_pixels" has been added. It simulates an inaccurate bounding box around the word, which allows the user to train a more robust model.
    The following deep learning procedures have been extended:
    • preprocess_dl_samples
    • create_dl_preprocess_param
    • create_dl_preprocess_param_from_model
    • dev_display_dl_data
    • augment_dl_samples
    • evaluate_dl_model
    • train_dl_model
    The following new procedures are now available:
    • read_dl_dataset_ocr_recognition
    • gen_dl_dataset_ocr_recognition_statistics
    • find_invalid_samples_dl_ocr_recognition
    The operators set_dl_model_param and get_dl_model_param have been extended with Deep OCR recognition specific parameters:
    • 'alphabet'
    • 'alphabet_internal'
    • 'alphabet_mapping'
    The new parameters can be used to restrict the character set for recognition.
    The reference manual chapters "Deep Learning", "Deep Learning/Model", and "OCR/Deep-OCR" as well as the operator entry for get_dl_model_param, set_dl_model_param, set_deep_ocr_param, and get_deep_ocr_param have been extended. They now describe how to use the method and the corresponding parameters. The chapter on Deep OCR in the Solution Guide I Basics has been adapted accordingly.
  • HALCON has been extended with file forward compatibility for deep learning models (.hdl files). Now, a model that is written using a Progress edition can be read with the latest Steady edition of HALCON. E.g., a model trained and serialized in HALCON 22.05 Progress can be read in HALCON 20.11.x Steady.
    This compatibility is only possible if the written model only uses features that are also part of the feature set of the Steady version. E.g., if a model uses the Adam solver during training (a feature of HALCON 22.05 Progress), that model cannot be read in HALCON 20.11.x Steady because this feature was not part of the Steady edition. However, in that example the solver type can be reset to SGD before writing, which makes the model compatible with HALCON 20.11.x Steady.
  • read_dl_model and deserialize_dl_model now return an extended error message in case that the operator fails due to a compatibility issue with a newer version.
  • create_dl_layer_transposed_convolution has been extended to allow using arbitrary padding values.
  • Changing the shape of the inputs of a DL model has been sped up. The exact speedup depends on the network and is in general higher if the network contains many layers for which the shape of the weights does not change when changing the shapes of the inputs.
  • read_dl_model now supports reading ONNX models with ONNX operations 'Sub' and 'Mean'.
    apply_dl_model now supports output requests for HALCON AI² interfaces.
  • The Deep OCR detection model used by create_deep_ocr has been improved. The resulting detection boxes of apply_deep_ocr for the modes 'detection' and 'auto' are now in general more precise and the estimation of their orientation is slightly better. Note that this change affects the compatibility. Read more.
  • The DL Framework now allows creating a new type of layer with the operator create_dl_layer_permutation. This layer can permute the order of the four axes of the input and rearranges the input data accordingly.
  • set_dl_model_param now supports a new parameter 'batchnorm_momentum' to set the momentum of the batch normalization layers of the model.
  • HALCON deep learning training has been extended with a new optimization algorithm (Adam). This solver is available for all deep learning models except for models of type 'anomaly_detection'.
    The Handle Inspect for handles of type 'dl_model' has been extended with the following variables:
    • 'solver_type': Defines the optimization algorithm ('sgd' or 'adam')
    • 'adam_beta1': Defines the momentum for the linear term in the Adam solver
    • 'adam_beta2': Defines the momentum for the quadratic term in the Adam solver
    • 'adam_epsilon': Guarantees the numeric stability of the Adam solver
  • read_dl_model now supports reading ONNX models with operator 'Constant'.
  • The procedure augment_dl_samples provides two new augmentation methods for deep learning models. They enable augmenting the contrast and saturating input images. Note that this change affects the compatibility. Read more.
  • set_deep_ocr_param has been extended with the parameter 'detection_tiling_overlap', which allows the user to control the extent of the overlapping image tiles.
Filter
  • HALCON has been extended with an operator equ_histo_image_rect, which performs adaptive histogram equalization within a rectangular mask. The new HDevelop example program hdevelop/Filters/Enhancement/equ_histo_image_rect.hdev shows the new functionality.
  • HALCON has been extended with the operator mean_image_shape. It can be used to smooth an image by mean filtering with an arbitrarily shaped region.
Matching
  • The C++, C++.NET, C#, VB.NET, and Python examples have been updated to the new generic shape-based matching interface.
  • The following example programs have been updated concerning the shape-based matching parts. Now, they use the generic interface.
    • hdevelop/explore_halcon.hdev
    • hdevelop/Applications/Position-Recognition-2D/pm_world_plane.hdev
    • hdevelop/Applications/Measuring-2D/measure_stamping_part.hdev
    • hdevelop/Applications/Object-Recognition-2D/pm_multiple_models.hdev
    • hdevelop/Applications/Print-Inspection/print_check.hdev
    The custom HPeek demo has also been updated to the generic shape matching interface. You can download this demo in our customer area for free and evaluate the performance on your hardware.
Measure
  • The new operator get_measure_param can be used to obtain information about a measure object. Additionally, measure objects can now be inspected in the handle inspect window.
Miscellaneous
  • The zlib library has been updated to 1.2.12.
System
  • system_call has been improved. Now, it uses the POSIX Spawn API for Linux and macOS, which can improve speed and memory footprint. Additionally, more information in case of errors is provided as low-level error message.
  • get_compute_device_info has been extended with the parameter 'max_mem_alloc_size', which reports the maximum size of an OpenCL memory block in bytes.
Tuple
  • The new operator tuple_join allows concatenating strings to a single string by adding separators in between. It works the opposite way as the already existing operator tuple_split. The short HDevelop example program hdevelop/Tuple/String-Operations/tuple_split_join.hdev has been added.

Bug Fixes

3D
  • calibrate_sheet_of_light crashed in rare cases when applied to a read or deserialized model. This problem has been fixed.
  • depth_from_focus on OpenCL devices returned incorrect results if mean filtering was used with the 'Filter' parameter, e.g.: Filter = ['bandpass', 3, 3]. This problem has been fixed.
  • read_object_model_3d returned an error when reading an OBJ file that contained both vn lines and v lines, and where the number of vn lines was different from the number of v lines. This problem has been fixed. Now, the operator ignores vn lines if their number is different from the number of v lines.
  • photometric_stereo returned the normalized surface normal when the parameter 'normalized_gradient' was set. The parameter has been renamed to 'normalized_surface_normal'. The old parameter name is still supported for backwards compatibility. The HDevelop example program hdevelop/Applications/Surface-Inspection/determine_tilt_slant_photometric_stereo.hdev has been extended to show the usage of the parameter.
Bar Code
  • In very rare cases, find_bar_code crashed when barcode candidates were found at the image border. This problem has been fixed.
  • In very rare cases, get_bar_code_result crashed for print quality inspection ('quality_isoiec15416') of barcode results found at the image border. This problem has been fixed.
  • get_bar_code_object and get_bar_code_result in some cases returned wrong scanline statuses if the result was retrieved by a call to find_bar_code with 'min_identical_scanlines' set to a number larger than 1. This problem has been fixed.
Calibration
  • An error message contained a typo. This problem has been fixed by renaming the define H_ERR_CAL_AMBIGIOUS in HErrorDef.h to H_ERR_CAL_AMBIGUOUS.Note that this change affects the compatibility. Read more.
Classification
Data Code
  • The print quality inspection for Data Matrix ECC 200 codes returned incorrect grades on mirrored codes. This problem has been fixed.
  • write_data_code_2d_model did not write Micro QR code models correctly, i.e., no Micro QR codes could be found when using such models. This problem has been fixed.
  • get_data_code_2d_results accepted tuples of parameter names for which some parameter names return multiple values (e.g., '*_labels' parameters). This problem has been fixed. Now, get_data_code_2d_result returns an error in this case.
  • In rare cases, find_data_code_2d returned duplicate results for Aztec codes. Further, Aztec codes could be returned that did not lie completely within the image domain. These problems have been fixed.
  • get_data_code_2d_results returned the orientation angle for DotCode symbols in radians instead of degrees. Additionally, the orientation angle of successfully decoded DotCode results was given in the range of [-90, 90] degrees rather than [-180, 180] degrees. These problems have been fixed.
  • find_data_code_2d crashed in rare cases for the DotCode symbol. This problem has been fixed.
  • In very rare cases, find_data_code_2d returned the error 6001 ("Not enough memory available") for Micro QR Codes. This problem has been fixed.
  • get_data_code_2d_results crashed for print quality inspection ('quality_isoiec15415') if 'quality_isoiec15415_aperture_size' was set to 0. This problem has been fixed.
  • In very rare cases, the variable 'module grid' used in find_data_code_2d and print quality inspection for Data Matrix ECC 200 was incorrect. This problem has been fixed.
Deep Learning
  • The deep learning procedure train_dl_model sometimes showed overlapping text snippets during a deep learning training. This problem has been fixed by not showing the full device name anymore but cutting it after some characters.
  • Setting the same device multiple times for a deep learning model could lead to the error 4320 ("Error occurred in an AI Accelerator Interface"). This problem has been fixed. Note that this change affects the compatibility. Read more.
  • For instance segmentation models, setting the parameters 'min_confidence', 'max_overlap', 'max_overlap_class_agnostic', and 'max_num_detections' had no effect. This problem has been fixed.
  • Custom deep learning models containing input layers that were created using create_dl_layer_input with 'input_type' 'constant' could have behaved wrongly in certain cases, e.g. after changing the model parameter 'input_dimensions'. This problem has been fixed.
  • set_dl_model_layer_weights in some cases could leak memory. This problem has been fixed.
  • apply_dl_model and train_dl_model_batch could have crashed for deep learning models with a dense layer when the parameter 'bias_term' was set to 'false'. This problem has been fixed.
  • HALCON's AI² Interfaces could not be used for networks with multiple inputs. This problem has been fixed.
  • Inference of DL models with constant input layer did not work with AI² plugin devices. This problem has been fixed.
  • Using the batchnorm layer with the parameter 'has_biases' set to 'false' resulted in a crash during serialization and training. This problem has been fixed.
  • A deep learning layer can be directly connected to the same other layer only once. This is now ensured by the operator read_dl_model when reading an ONNX model and by the operators create_dl_layer_concat, create_dl_layer_elementwise, create_dl_layer_loss_cross_entropy, create_dl_layer_loss_ctc, create_dl_layer_loss_distance, create_dl_layer_loss_focal, create_dl_layer_loss_huber, and create_dl_layer_zoom_to_layer_size.
  • gen_dl_model_heatmap returned incorrect heatmaps for models that use a batchnorm layer with bounded ReLU activation as, e.g., for pretrained_dl_classifier_mobilenet_v2.hdl. This problem has been fixed.
  • When using the procedure read_dl_dataset_from_coco to read a dataset that does not contain segmentation masks, an exception was thrown when using the procedure's default parameters. This problem has been fixed. Now, when using default parameters, datasets without segmentation masks are read and returned without such masks, while for datasets that include segmentation masks that mask is read and returned.
  • Customer-defined DL networks with layer that have multiple inputs could have been handled incorrectly if inferred on an AI² plugin. This problem has been fixed.
  • optimize_dl_model_for_inference sometimes crashed if entries in DLSamples have invalid key values. This problem has been fixed.
  • The serialization of a batchnorm layer with momentum specified as 'auto' had an error. The underlying momentum value was set to zero during the read operation regardless of the given actual momentum value. This has the effect that if a model was pretrained with such a batchnorm layer, the given layer statistics (mean/variance) were overwritten during the very first iteration by the first batch of data using train_dl_model_batch. This is a problem because if the batchnorm statistics (mean/variance) change rapidly like this, the weights of connected layers have to be changed radically as well and this leads to bad learning behavior.
    This problem has been fixed. Now, the momentum value is persistent and will be restored after the read operation. The statistics of the batchnorm layers will thus not change rapidly. Note that there is an option to change the momentum value of a given model via set_dl_model_param.
    This issue does not apply to any of the pretrained models provided by HALCON. The issue only applies to models created with the operator set create_dl_layer_*.
  • The DL layer created by create_dl_layer_reshape sometimes overwrote gradients of other layers that used the same input layer during the training. This problem has been fixed.
  • Depending on the layers that followed a concat layer, there could be a memory error during the training of the model if the training was done with a 'cpu' device. This problem has been fixed.
  • HALCON AI² interfaces could not handle models with zoom layer created with create_dl_layer_zoom_to_layer_size where the reference input layer only served as an input to the zoom layer. This problem has been fixed.
  • The plots produced by dev_display_anomaly_detection_evaluation were difficult to inspect if the anomaly thresholds are close to the border. This problem has been fixed. Now, the OK and NOK histograms take up at least 15% of the whole plot width.
  • It was not safe to call the operator train_dl_classifier_batch simultaneously from different threads. This problem has been fixed.
  • Setting and afterwards getting an unsupported value for the 'meta_data' for a deep learning model via set_dl_model_param could lead to a crash. This problem has been fixed.
  • During the runtime initialization of a deep learning model using an AI² device CPU memory was leaked. This problem has been fixed.
  • Setting the 'input_dimensions' of a deep-learning model with set_dl_model_param returned an error if the corresponding tuple with integer values within the input dictionary previously contained values of mixed data types. This problem has been fixed.
Filter
  • In rare cases, optical_flow_mg could have returned nondeterministic results that may have included NaNs. This problem has been fixed.
  • rank_image treated regions with negative center points erroneously due to rounding errors. This problem has been fixed.
  • rank_image and trimmed_mean may have returned wrong error messages or even crash if the filter size exceeded the image size. These problems have been fixed. Now, an appropriate error message is returned.
  • gen_filter_mask did not work as documented, in particular, the values could be scaled, the inverse was ignored, and there was a dependency to the image size. This problem has been fixed. Note that this change affects the compatibility. Read more.
  • optical_flow_mg sometimes crashed for large images or unnecessarily returned the error 6001 ("Not enough memory available"). Further, optical_flow_mg sometimes leaked memory in cases where it returned an error. These problems have been fixed.
  • gray_erosion, gray_dilation, gray_tophat, gray_bothat, gray_opening, and gray_closing may have crashed in HALCON XL for very large image sizes. This problem has been fixed.
  • The OpenCL implementation of mean_image allowed input parameter combinations that could lead to undefined behavior of the OpenCL device. This problem has been fixed.
Graphics
Images
  • write_image did not correctly write images bigger than 2 GB. This problem has been fixed.
  • crop_rectangle2 returned a low level error (still allocated temporary memory) if AlignToAxis was set to 'false'. This problem has been fixed.
  • get_image_pointer1_rect did not return the number of used bits for uint2 images if set from the acquisition device. This problem has been fixed.
Matching
  • find_ncc_model could occasionally yield non-deterministic results. This problem has been fixed.
  • In rare cases, shape model functionality may have crashed or malfunctioned for a large number of rotations or scales. This problem has been fixed. Now, the error 6001 ("Not enough memory available") is returned.
  • find_generic_shape_model crashed when an empty tuple was specified as 'ModelID'. This problem has been fixed.
  • find_ncc_model and find_ncc_models had unexpected results without parallelization in rare cases. This problem has been fixed.
  • set_shape_model_metric did not set the model parameter 'metric_param' correctly. This problem has been fixed.
Miscellaneous
Morphology
Parallelization
  • Operators that use FFT, including photometric_stereo with ResultType 'height_field', ignored the maximum number of threads to use set with set_system('thread_num'). This problem has been fixed. Now, the operators use at most as many threads as set with set_system.
Region
  • Calling gen_random_regions with parameters that create only empty regions caused an infinite loop for rectangle1, circles, ellipses, and rings. This problem has been fixed. Now, also empty regions are returned.
  • move_region did not correctly detect situations where the region coordinates exceeded the maximum allowed range. This problem has been fixed. Now, the respective exception will be thrown if the coordinates exceed the allowed range and 'clip_region' is set to 'false'.
  • gen_rectangle1 and other region operators could have displayed an inaccurate error message in HDevelopXL if the minimum or maximum value for the input rows or columns were exceeded. This problem has been fixed.
  • gen_circle incorrectly returned an error in extreme cases when the resulting region was very close to the allowed minimum or maximum. This problem has been fixed.
  • In very rare cases, area_center could suffer from signed integer overflow, especially on 32-bit systems and 64-bit systems with enabled AVX2 support. This problem has been fixed.
  • polar_trans_region and polar_trans_region_inv accepted too large inputs for their 'width' and 'height' input parameters. This problem has been fixed.
Segmentation
  • hysteresis_threshold returned errors with very large values for the thresholds. This problem has been fixed.
  • hysteresis_threshold did not return correct results for low thresholds near -FLT_MAX. This problem has been fixed.
System
  • A sequence of get_system('alloctmp_single_block', Value) and set_system('alloctmp_single_block', Value) could unintentionally overwrite the 'temporary_mem_cache' setting if the temporary memory cache was set to 'shared' or 'aggregate'. This problem has been fixed. Now, whenever the current 'temporary_mem_cache' mode is not supported by the deprecated 'alloctmp_single_block' setting, get_system('alloctmp_single_block', Value) will return 'unsupported_mode' and a low error message will be thrown.
  • get_system with parameter 'current_license_info' did not report the Deep Learning Training module. This problem has been fixed.
  • get_system returned unexpected results for the revision query if run on a HALCON Progress edition. This problem has been fixed.
Transformation
  • affine_trans_image_size in some cases crashed when using HALCON XL if the input image dimensions exceeded the maximum image dimensions of HALCON, AVX2 instructions were enabled, and 'int_zooming' was set to 'true' .
    Furthermore, affine_trans_image_size may have returned wrong results when using HALCON XL if the input image dimensions exceeded the maximum image dimensions of HALCON, 'int_zooming' was set to 'true', and AVX2 instructions were disabled or not supported.
    Both problems applied to all image types except 'real'. These problems have been fixed.
Tuple
  • HDevelop could crash when a variable held a dictionary that contained HNULL as one of its values. This problem has been fixed.
  • For some serialized items, the type and the content of the serialized data was not properly displayed in the handle inspect window. This problem has been fixed.
XLD
  • select_shape_xld had a memory leak for some features. This problem has been fixed.
  • select_shape selected only features greater than 0 when using 'min' for the Min argument. This problem has been fixed.

Procedures

Bug Fixes

  • The deep learning procedure train_dl_model sometimes showed overlapping text snippets during a deep learning training. This problem has been fixed by not showing the full device name anymore but cutting it after some characters.

HALCON/C++

Bug Fixes

  • Some XLD classes could not be correctly cloned in HALCON/CPP and HALCON/.NET. The affected classes were HXLDCont, HXLDExtPara, HXLDModPara, HXLDPara, and HXLDPoly. Cloning them returned an instance of the base class HXLD instead. This problem has been fixed. Note that this change affects the compatibility. Read more.

HALCON/.NET

Functionality

  • An XML namespace (xlmns) definition has been added to make it easier to reference HALCON/.NET from XAML code. Instead of xmlns:ha="clr-namespace:HalconDotNet;assembly=halcondotnet"
    you can now write xmlns:ha="http://schemas.mvtec.com/halcondotnet". In particular, this allows you to share the XAML code for builds targeting different assembly names, e.g., HALCON + HALCON XL or .NET Framework + .NET Core.
  • HALCON exceptions during initialization of HSmartWindowControlWPF and HSmartWindowControl (in particular due to missing license) could not be handled easily. Now, they will be caught internally, for example, to allow a later license check in application code. Details about errors during startup can be obtained via the HErrorNotify event.

Bug Fixes

  • Using dependency properties like LineWidth and LineStyle of HIconicDisplayObjectWPF and HColumn, HRow, HMessageText, and HCoordinateSystem of HMessageDisplayObjectWPF caused an Visual Studio Designer error. This problem has been fixed.
  • Some XLD classes could not be correctly deserialized in HALCON/.NET. The affected classes were HXLDCont, HXLDExtPara, HXLDModPara, HXLDPara, and HXLDPoly. This problem has been fixed. Note that this change affects the compatibility. Read more.
  • Display using HSmartWindowControl leaked some unnecessary GDI objects (until garbage collection). In rare cases, the display handling in HSmartWindowControl may have caused undefined behavior. This problem has been fixed.
  • Some XLD classes could not be correctly cloned in HALCON/CPP and HALCON/.NET. The affected classes were HXLDCont, HXLDExtPara, HXLDModPara, HXLDPara, and HXLDPoly. Cloning them returned an instance of the base class HXLD instead. This problem has been fixed. Note that this change affects the compatibility. Read more.

Language Interface Example Programs

Functionality

  • The build method of the following examples has been improved:
    • c
    • cpp/console
    • cpp/mfc/FGMultiThreading
    • cpp/mfc/Matching
    • cpp/mfc/MatchingExtWin
    • cpp/motif/Matching
    • cpp/qt/Matching
    • hdevengine/cpp
    • hdevengine/mfc/exec_procedures_mt_mfc
    Now, these examples can be build with CMake by using the provided CMakeLists.txt files.
  • The example program cpp/mfc/MultiThreading has been removed and the example program cpp/mfc/FGMultiThreading has been rewritten. Now, the example cpp/mfc/FGMultiThreading uses message queues for data delivery between threads.

Bug Fixes

  • The cpp.net/Interoperate example did not open in newer versions of Visual Studio. This problem has been fixed by adding a separate project for Visual Studio 2019 and later.
  • The MultiThreading example crashed when the application was closed while running. This problem has been fixed.
  • The HDevelopTemplate example crashed when the application was closed while running. This problem has been fixed.
  • The following examples crashed when the application was closed while running:
    • hdevengine/c#/MultiThreading
    • hdevengine/c#/MultiThreadingTwoWindows
    • c#/MultiThreading
    This problem has been fixed.

HBench

Functionality

  • The deprecated benchmark -c_operations is no longer available via hbench.

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.

Miscellaneous

  • Grabbing images from two or more open image acquisition interfaces could lead to execution of open_framegrabber being blocked indefinitely. This problem has been fixed.

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 description how to remove the Variable Inspect Extension for Visual Studio (VSIX) has been adapted to the current versions of Visual Studio.

User Guides

  • In the HDevelop User's Guide, the descriptions of the menu items have been structured in a clearer way. Now, tables show the menu entries with their corresponding descriptions and shortcuts.
  • The usability of the HDevelop User's Guide has been improved. In chapter 6, windows and dialogs are now ordered in alphabetical order. The appendix "Keyboard Shortcuts" is also ordered alphabetically.
  • The layout of lists, e.g, for explaining icons, in the HTML documentation has been improved.
  • The description of generic operating system dialogs has been removed from the HDevelop User's Guide.
  • The documentation regarding reserved words and dictionary expressions has been improved.
  • In the Quick Guide, the figure showing the basic architecture of HALCON did not mention the AI² interfaces. This problem has been fixed.

Solution Guides

  • In the Solution Guide III-C, the section on hand-eye calibration did not clearly state that two separate calibration models are needed when performing a hand-eye calibration with a stereo camera system. This problem has been fixed.
  • The Solution Guide I Basics and the Solution Guide II-A Image Acquisition stated wrong example paths to Image Acquisition and I/O examples. This problem has been fixed.
  • The Solution Guide III-C 3D Vision still stated that camera parameters, camera pose, light plane pose, and movement pose of calibrated sheet-of-light models could not be obtained. As this is not the case anymore, the corresponding section has been adapted.

Reference Manual

  • The formula describing the NCC method in the reference manual entries of binocular_disparity and binocular_distance was not correct. This problem has been fixed.
  • The reference manual entry for create_dict, set_dict_tuple, and create_message as well as the section in the HDevelop User's Guide discussing dictionaries contained wrong information about copies of handles. This problem has been fixed.
  • The reference manual entries for create_dl_layer_dense, create_dl_layer_convolution, and create_dl_layer_batch_normalization erroneously stated 'xavier' instead of 'const' as default value for 'bias_filler'. This problem has been fixed
  • The reference manual entry for create_message stated that tuple and objects in messages are stored as deep copies. However, this is just the case for tuples. This problem has been fixed.
  • The reference manual entry for find_bar_code had a misleading description of the parameter 'quiet_zone'. This problem has been fixed.
  • The reference manual chapter "Deep Learning" > "Object Detection, Instance Segmentation" listed the non-existent parameter 'mask_threshold' for instance segmentation models. This entry has been removed.
  • The reference manual entries of gen_image_surface_first_order and gen_image_surface_second_order have been extended with information regarding the usage with fit_surface_first_order or fit_surface_second_order, respectively. The workflow in the example programs hdevelop/3D-Object-Model/Segmentation/remove_background_for_3d_object_localization.hdev and hdevelop/3D-Object-Model/Segmentation/remove_bin_for_3d_object_localization.hdev have been adapted accordingly. The chapter on background removal in the technical note on surface-based matching has been adapted as well.
  • The reference manual entry for gen_random_regions missed a precise parameter description. This problem has been fixed.
  • The reference manual entry for get_dict_param missed the default value for the parameter 'key'. This problem has been fixed.
  • The reference manual entry for get_dl_model_param falsely listed 'tensorrt' and 'openvino' as possible values for 'runtime'. This problem has been fixed.
  • In some reference manual entries, Booleans and return values were confused: The entry for get_operator_info mentioned return values TRUE/FALSE instead of H_MSG_TRUE/H_MSG_FALSE and several operators mentioned a call of set_system with the value H_MSG_TRUE/H_MSG_FALSE instead of TRUE/FALSE in their result section. These problems have been fixed.
  • The reference manual entries of get_polygon_xld, get_lines_xld, and get_parallels_xld did not clearly state that the retrieved angles refer to the normals of the lines. This problem has been fixed.
  • The reference manual entry for local_threshold did not draw attention to the fact that unexpected results can occur for images with a reduced domain. This problem has been fixed by adding a corresponding note.
  • In the reference manual entry for segment_contours_xld, a statement concerning the condition for the second optimization step was wrong. This problem has been fixed.
  • The reference manual entries for send_tuple and receive_tuple did not mention restrictions regarding tuples. This problem has been fixed.
  • The reference manual entry for set_dl_model_layer_param regarding 'bias_term' was not accurate enough. This problem has been fixed.
  • The reference manual entry for set_generic_shape_model_param listed wrong options for the generic parameter 'optimization'. This problem has been fixed.
  • The reference manual entry for set_surface_model_param now describes the behavior of 'symmetry_axis_direction' and 'symmetry_axis_origin' when used together with a restriction of the pose range.
  • The reference manual entry for tuple_insert, tuple_sem_type, and tuple_sem_type_elem lacked a description of the in-line notation. For tuple_insert, the description was also missing in the HDevelop User's Guide. These problems have been fixed.
  • The reference manual entries for zoom_image_factor and zoom_image_size were incorrect for special cases. This problem has been fixed.
  • The reference manual chapter "Filters" was updated regarding the occurrence of undefined pixels and the different strategies to prevent errors when applying filters consecutively. It was also extended with an introduction to the concept of filter masks.
  • In the dark theme, the tables in the documentation of the OpenVINO™ interface were barely legible. This problem has been fixed.
  • In the dark theme, code blocks within the procedure documentation were not legible. This problem has been fixed.
  • The HDevelop example code snippet of the procedure documentation of plot_funct_1d caused an exception when being executed. This problem has been fixed.

Miscellaneous

  • The documentation did not mention that using HALCON XL is only recommended if its features are really needed. Now, this is noted in the Programmer's Guide and in the Installation Guide.

Licensing

  • A remote dongle license was not properly released by HDevelop during termination, causing a few minutes delay until the license was usable again. This problem has been fixed.

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