Release Notes for HALCON 20.11.3.0 Steady

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

Compatibility

Licenses

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

HALCON Library

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

HALCON Applications

Please re-compile all C, C++, or .NET programs developed with HALCON 20.11.2. The incompatibility with HALCON 20.11.2 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, image acquisition interfaces of HALCON 20.11.3.0 Steady are library compatible to those of HALCON 20.11 Steady and HALCON 20.11.2, as well as HALCON 18.11.x.

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

Digital I/O Interfaces

In general, digital I/O interfaces of HALCON 20.11.3.0 Steady are library compatible to those of HALCON 20.11 Steady and HALCON 20.11.2, as well as HALCON 18.11.x.

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

Extension Packages

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

Supported Operating Systems

Windows

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

Linux

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

  • x64 platform version for Linux x86_64, GLIBC_2.17, GLIBCXX_3.4.21, on Intel 64 or AMD 64 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 20.11.3.0 Steady has been compiled for the x64 platform version of macOS 10.15 on Intel 64.

Detailed Description of Changes in HALCON 20.11.3.0 Steady

The changes in HALCON 20.11.3.0 Steady are described with respect to HALCON 20.11.2 .

HDevelop

New Functionality

GUI
  • The usability of the canvas has been improved. Now, it is possible to turn off the automatic update of the viewport.
  • The option for setting the canvas as the default layout has been removed from the preferences. Instead, now there is an entry in the menu under "Windows" > "Restore Default Layout use" > "Canvas" or "Docked Graphics Window". By selecting the corresponding option, the layout is restored to the default layout either using the canvas or the graphics window.
  • For docked graphics windows, the default setting of "Behavior on Window Resize" is now "Keep Aspect Ratio" instead of "No Stretch".
  • The procedure documentation in dark theme has been improved. Previously, links and other elements where hard to read while using the dark theme. The corresponding colors have been adapted and now work in both themes.
  • 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.
Procedures
  • When adding tables to the documentation of procedures in Markdown syntax, the text alignment of all cells was set to 'left'. Now, the layout corresponds to the specified Markdown code.
  • The procedure documentation in dark theme has been improved. Previously, links and other elements where hard to read while using the dark theme. The corresponding colors have been adapted and now work in both themes.

Bug Fixes

Assistants
  • A warning sign was displayed in the calibration assistant even though no event had occurred that would warrant a warning. This problem has been fixed.
  • The code generated by the matching assistant for finding DXF models only considered the first (red) channel ('ignore_local_polarity') instead of all channels ('ignore_color_polarity') when using color images. This problem has been fixed.
Code Export
  • Exporting a constant condition like while (true) to C++ caused a warning with Microsoft compilers. This problem has been fixed for Visual Studio 2017 and newer.
  • 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.
  • 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.
  • Clicking the area displaying the line number could lead to a console warning. This problem has been fixed.
  • A newly opened zoom window had a different geometry than the previously closed one. This problem has been fixed.
  • After loading a new program, it could happen that the displayed line number did not fit into the designated space. This problem has been fixed.
  • For graphics windows attached to the canvas, the pixel info overlay was not working. This problem has been fixed.
  • The HDevelop assistants opened at unexpected positions and in unexpected sizes. The problem has been fixed. Now, the assistants reappear at the same position as before and with same geometry.
  • If a graphics window was on top of another in the canvas, scrolling with the mouse was applied to both simultaneously. 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.
  • When releasing the mouse button on a window in the canvas, this event could have been sent to the wrong window. This problem has been fixed.
  • Minimizable floating windows did not have an icon in the taskbar. This problem has been fixed.
  • 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.
  • The size of graphics window was not correct if it was opened between two screens with different scaling. This problem has been fixed.
  • The German translation contained some spelling errors. These problems have 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.
  • If the INI file stored coordinates greater than the size of the display, the Find/Replace dialog was not visible. This could happen if HDevelop had been used with a larger display and later with a smaller one. This problem has been fixed. Now, the Find/Replace dialog is always shown on the available display.
IDE
  • When executing a program line in HDevelop with Ctrl+Return or Ctrl+Enter, some variable inspect widgets were not updated properly. This problem has been fixed.
  • 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 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.
  • 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
  • Negative integer literals in decimal notation did not handle the minimum supported integer value on the platform correctly ("-2147483648" on 32-bit systems, "-9223372036854775808" on 64-bit systems). The assigned value was one too large. This problem has been fixed.
  • 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 deactivated procedure in HDevelop did not work. This problem has been fixed.
  • If the description text in the HTML documentation of a procedure contains the names of procedure parameters, HDevelop automatically generates links to the corresponding parameter entry. Such links were generated even if the parameter name was only a substring of another word. This problem has been fixed. Note, however, that if a word in the description text exactly matches a parameter name, a link still will be created.
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.
  • Changing the 'Update Windows in Single Step Mode' setting via the preferences dialog required a restart of the application for the settings to take effect. This problem has been fixed.
  • Calls to HDevelop's inline functions tuple_select and tuple_substr could have been corrupted by HDevelop's command line option reset_free_text. This happened when the first argument of the inline function was an infix operation, e.g., reset_free_text turned six := ([1,2,3] + [1,2,3]) [2:2] into six := [1,2,3] + [1,2,3] [2:2], which has completely different semantics. This problem has been fixed.
  • When executed JIT-compiled, dev_get_exception_data did not behave as it did when executed non-JIT-compiled or as described in the operator reference. This problem has been fixed.
  • 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.
  • get_mposition returned the value '1' when double-clicking the middle mouse button on a graphics window. This problem has been fixed. Now, the correct value '2' is returned. Further, the canvas is now dragged by pressing Ctrl+middle mouse button instead of just the middle mouse button as before.
  • Having multiple variable inspect widgets tabbed together could crash HDevelop when opening a new program. This problem has been fixed.

HDevEngine

Bug Fixes

  • When executing programs or procedures with par_start subthreads, an uncaught exception in a subthread could cause a crash of the application. This problem has been fixed.
  • When JIT compiling procedures that contained comparisons of iconic variables using the == operator, the HEngine could crash either during the compilation or when attempting to execute the compiled procedure. This problem has been fixed.
  • 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

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

New Functionality

Bar Code
  • HALCON now supports all GS1 application identifiers specified in the latest version of the "GS1 General Specifications" (January 2021).
  • HALCON now supports all GS1 application identifiers specified in the latest version of the “GS1 General Specifications” (January 2022).
Data Code
  • HALCON now supports all GS1 application identifiers specified in the latest version of the "GS1 General Specifications" (January 2021).
  • HALCON now supports all GS1 application identifiers specified in the latest version of the “GS1 General Specifications” (January 2022).
Deep Learning
Miscellaneous
  • The zlib library has been updated to 1.2.12.

Bug Fixes

3D
  • triangulate_object_model_3d with 'Method' set to 'implicit' in rare cases generated meshes that were not watertight, i.e., were not completely closed. This problem has been fixed.
  • In rare cases, window operations may have crashed or malfunctioned during or after calls to operators using OpenGL. This problem has been fixed.
  • set_scene_3d_instance_param did not work correctly if (unrelated) instances had been removed from the scene before. Further, the HDevelop variable inspect did not handle deleted instances, cameras, and lights correctly. These problems have been fixed. Note that this change affects the compatibility. Read more.
  • 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.
  • The visualization of 3D object models has not been correct in rare cases. This has not only affected the general visualization but also several operators that use the visualized 3D object model as (intermediate) result: object_model_3d_to_xyz with type 'cartesian_faces', display_scene_3d, render_object_model_3d, render_scene_3d, disp_object_model_3d, and create_surface_model when using the edge-supported surface-based matching. This problem has been fixed.
  • svd_matrix, projective_trans_image, and norm_matrix in rare cases could create a crash with enabled floating point exceptions. This problem has been fixed.
  • In rare cases on systems where OpenGL is not available or not working properly, or where graphics output is not available at all, object_model_3d_to_xyz with mode 'cartesian_faces' threw an error. This problem has been fixed. Additionally, the operator now has a new mode 'cartesian_faces_no_opengl' that can be used to explicitly use a non-OpenGL variant of 'cartesian_faces'.
Bar Code
  • In very rare cases, find_bar_code computed wrong scanlines if the parameter 'merge_scanlines' was set to 'true'. This problem has been fixed.
  • Trying to access quality grades for uint2 images resulted in a crash as the bar code reader does not support PQI for uint2 images. This problem has been fixed. Now, an error is returned stating that the requested functionality is not implemented.
  • get_bar_code_result sometimes returned the wrong orientation of decoded codes because the reading direction was ignored. This problem could only occur if the generic parameter 'small_elements_robustness' was set to 'true' and the underlying feature was actually used for the decoding step. This problem has been fixed.
  • For Pharmacodes with 16 bars, get_bar_code_result always returned the 'Decode' grade 0 ('quality_isoiec15416'). This problem has been fixed.
  • In some cases, find_bar_code did not return any result if it was aborted or a timeout was set even though results could have been found with a smaller timeout or earlier abort. This problem has been fixed.
  • 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.
  • The orientation of a barcode decoded with find_bar_code was slightly off in rare cases. This problem has been fixed.
  • For Pharmacodes with a single successfully decoded scanline, get_bar_code_result returned an incorrect 'orientation' (rotated by 180 degrees) if the reading direction was backward only. This problem has been fixed.
  • find_bar_code in some cases returned Pharmacode results whose orientation exceeded the range specified with 'orientation' and 'orientation_tol' in set_bar_code_param. This problem has been fixed.
  • For Pharmacode and 2/5 Industrial bar codes, calling get_bar_code_result for the 'quality_isoiec15416_values' result type could lead to crashes. This problem has been fixed.
Color Processing
  • In rare cases, an overflow could occur in the operator trans_from_rgb for the color spaces 'cielchab' and 'cielchuv', leading to wrong results for single pixels. This problem has been fixed.
Data Code
  • In some cases, get_data_code_2d_results returned inaccurate print quality inspection grades for ECC 200 codes ('quality_isoiec15415', 'quality_aimdpm_1_2006', 'quality_isoiec_tr_29158', 'quality_semi_t10_values') if the data code parameter 'small_modules_robustness' was set to 'high'. This problem has been fixed.
  • In rare cases, the print quality inspection for ECC 200 code used a wrong estimation for the grid and returned slightly incorrect grades. This problem has been fixed.
  • get_data_code_2d_results returned inaccurate values for some of the print quality values queried with the parameter 'quality_semi_t10_values'. This problem has been fixed. Note that this change affects the compatibility. Read more.
  • In rare cases, find_data_code_2d did not return deterministic results for the symbol type Data Matrix ECC 200 if a very tight timeout had been specified by the user. This could have an impact on subsequent calls, e.g., the print quality assessment, and lead to inconsistent grades and values in multiple runs. However, this issue could only occur if 'specific_parallelization' for Data Matrix ECC 200 was enabled. This problem has been fixed.
  • The grades for Unused Error Correction, Modulation, and Reflectance Margin have been computed incorrectly for M1 MicroQR codes. This problem has been fixed.
  • The print quality inspection for Data Matrix ECC 200 codes returned incorrect grades on mirrored codes. This problem has been fixed.
  • get_data_code_2d_objects leaked memory if the process and/or search image for candidates with a process and/or search image on pyramid level -1 was queried. Additionally, get_data_code_2d_objects leaked memory if the process and/or search image for DotCode candidates was queried. These problems have been fixed.
  • find_data_code_2d may have leaked memory for Data Matrix ECC200 codes if find_data_code_2d returned an error. This problem has been fixed.
  • The QR code reader crashed in rare cases with very small 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.
  • 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.
  • find_data_code_2d returned the resulting symbol XLD with wrongly ordered points in case of DotCodes. This problem has been fixed.
Deep Learning
  • After interrupting the execution of apply_deep_ocr in 'auto' mode, the resulting dictionaries could have contained inconsistent results of the detection and recognition components. This problem has been fixed.
  • Reading ONNX models with read_dl_model could crash if the model graph contained nodes without inputs. This problem has been fixed.
  • After setting the model runtime to 'cpu' for deep learning models with very large image dimensions or large batch sizes, a crash could occur. 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.
  • 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.
Filter
  • mirror_image was not parallelized correctly for the mode 'diagonal'. This problem has been fixed.
  • In rare cases, optical_flow_mg could return nondeterministic results that might include NaNs. This problem has been fixed.
  • 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
  • cooc_feature_matrix could crash on non-symmetric input. This problem has been fixed. Now, cooc_feature_matrix returns the error 2106 ("Wrong image width") in case of non-symmetric input.
  • 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
Miscellaneous
  • run_bg_esti with 'GainMode' set to 'frame' did not apply the adapted Kalman gains properly in rare cases. This problem has been fixed.
  • set_bg_esti_params and close_bg_esti leaked memory. This problem has been fixed.
Morphology
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
  • threshold does not give a low-level error anymore if for 'real' and 'vector_field' type images the parameters 'MinGray' and 'MaxGray' are provided as 'double' but used as 'float'. The documentation has been updated to describe the behavior of threshold in these cases. Note that this change affects the compatibility. Read more.
  • 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.
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.
XLD
  • distance_cc_min_points returned an erroneous point in case of crossing contours. This problem has been fixed.
  • distance_cc_min_points returned wrong point coordinates in rare cases if the contours intersected. This problem has been fixed.
  • union_collinear_contours_xld did not unite almost collinear contours for large values of 'MaxAngle' in rare cases. 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.

HALCON/.NET

Functionality

  • 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

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

Language Interface Example Programs

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 HDevelopTemplate example crashed when the application was closed while running. 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.

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 Programmer's Guide has been improved by replacing ASCII diagrams with more pleasing graphical representations in chapter 15.

User Guides

  • The Installation Guide now makes clearer that the term "runtime version modules" only refers to licenses.

Solution Guides

  • 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 connection_object_model_3d missed to mention select_object_model_3d as possible alternative. 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 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 entry for find_planar_uncalib_deformable_model contained a paragraph that was only available in German. This problem has been fixed. Now, it is included for all languages.
  • The reference manual entry for stop did not mention that continuing a program is not possible for its subthreads. This problem has been fixed.
  • The description of the parameter 'TargetClasses' in the reference manual entry of gen_dl_model_heatmap was misleading. This problem has been fixed.
  • 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_disp_object_model_3d_info erroneously mentioned that the operator would return an error in case of faulty row and column input values. This problem has 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.
  • The reference manual entry of reconstruct_surface_stereo stated that small base lines instead of long base lines between camera pairs are more suitable for the extraction of depth information. This problem has been fixed.
  • 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_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 HDevelop example code snippet of the procedure documentation of plot_funct_1d caused an exception when being executed. This problem has been fixed.

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