Release Notes for HALCON 13.0.4

This document provides the release notes for MVTec HALCON 13.0.4, as released in December 2019.

HALCON 13.0.4 is primarily a maintenance release that fixes all known bugs in HALCON 13.0.3; besides, it provides added functionality.

Compatibility

Licenses

HALCON 13.0 licenses are also valid for HALCON 13.0.4. In contrast, all HALCON 12.0 licenses or licenses of earlier versions must be replaced or upgraded. Please contact your local distributor.

HALCON Library

HALCON 13.0.4 is fully compatible with HALCON 13.0 except for the changed behavior of some operators owing to bug fixes. Compared to HALCON 12.0, many extensions have been introduced. Thus, the HALCON 13.0 libraries are not compatible with HALCON 12.0 or earlier versions.

In detail, please note the following incompatibilities with respect to HALCON 13.0.3:

HALCON Applications

Applications (i.e., executables) developed with HALCON 13.0, HALCON 13.0.1, HALCON 13.0.2, or HALCON 13.0.3 can be used with HALCON 13.0.4, i.e., HALCON 13.0.4 is binary compatible with HALCON 13.0, HALCON 13.0.1, HALCON 13.0.2, and HALCON 13.0.3.

All programs (C, C++, .NET, or COM) that have been developed with HALCON 12.0.x must be recompiled. The incompatibility with HALCON 12.0.x or earlier versions mainly concerns the binaries, with only few changes in the language interfaces. If you encounter problems during recompiling your programs, please check the detailed description of changes below and for HALCON 13.0, HALCON 13.0.1, HALCON 13.0.2, and HALCON 13.0.3, respectively.

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

Image Acquisition Interfaces

If you have developed your own acquisition interfaces with HALCON 13.0, HALCON 13.0.1, HALCON 13.0.2, or HALCON 13.0.3, you can use them with HALCON 13.0.4 without further action.

Discontinuation of the GigEVision Interface

MVTec discontinues the GigEVision interface. Since HALCON 13.0.2, the GigEVision interface is deprecated, but still available. Note that instead of the GigEVision interface, the new GigEVision2 interface should be used. For HALCON 18.11 Steady / HALCON 17.12 Progress or higher HALCON versions, the GigEVision2 interface replaces the deprecated GigEVision interface.

Digital I/O Interfaces

If you have developed your own digital I/O interfaces with HALCON 13.0, HALCON 13.0.1, HALCON 13.0.2, or HALCON 13.0.3, you can use them with HALCON 13.0.4 without further action.

Extension Packages

Extension packages developed with HALCON 13.0, HALCON 13.0.1, HALCON 13.0.2, or HALCON 13.0.3 can be used with HALCON 13.0.4 without further action. Extension packages developed with HALCON 12.0.x or earlier versions must be re-generated. Note that the old makefiles for HALCON/C++ must be adapted according to the sample makefile under extension_packages/halconuser.

Further Compatibility Information

  • The Linux installer script install-linux.sh now is run using bash. Any POSIX compatible shell with file globbing support can be used as alternative to bash. More information.

Discontinuation of the HALCON/C++ (legacy) Language Interface

MVTec discontinues the HALCON/C++ (legacy) language interface. Since HALCON 13.0.2, the HALCON/C++ (legacy) interface does not contain any new class. This means, the major part of the new functionality that was introduced with HALCON 13, is not available via the HALCON/C++ (legacy) interface. Since HALCON 12.0.2, there are warnings when compiling HALCON/C++ (legacy) projects. For HALCON 18.11 Steady / HALCON 17.12 Progress or higher HALCON versions, the HALCON/C++ (legacy) interface is no longer available.

Discontinuation of the HALCON/COM Language Interface

MVTec discontinues the HALCON/COM language interface. Since HALCON 13.0.2, the HALCON/COM interface is marked as legacy. For HALCON 18.11 Steady / HALCON 17.12 Progress or higher HALCON versions, the HALCON/COM interface is no longer available.

Detailed Description of Changes in HALCON 13.0.4

The changes in HALCON 13.0.4 are described with respect to HALCON 13.0.3. The detailed description of changes in previous HALCON versions can be found in the release notes of the previous HALCON versions.

HDevelop

Bug Fixes

GUI
  • On new Linux distributions (like Fedora 30 or CentOS 8), which only support libssl 1.1 and not libssl 1.0, HDevelop could have crashed when the start dialog or the help were opened. This problem has been fixed.
IDE
  • Invalidating the code line at the current program counter position (e.g., by edit operations) caused a crash if that line was the last line before an "else" or "catch" statement. This problem has been fixed.
Miscellaneous
  • A for loop around a piece of HDevelop code did not work if this code snippet led to a "procedures call stack" greater or equal than 64 entries. The stack size may have been increased with par_start <> statements or by recursion. This problem has been fixed.

HDevelop Example Programs

Bug Fixes

HDevEngine

Bug Fixes

  • The method HDevProgram::GetLocalProcedureNames returned all used procedures instead of only local ones. This problem has been fixed.
  • In rare cases, JIT compiled procedures could have crashed if they called dev_clear_obj. This problem has been fixed.
  • The method HDevProgram::GetLocalProcedureNames returned all used procedures instead of only local ones. This problem has been fixed.

HALCON Library

New Functionality

Bar Code
  • HALCON now supports all GS1 application identifiers specified in the latest version of the "GS1 General Specifications" (January 2019).
Data Code
  • HALCON now supports all GS1 application identifiers specified in the latest version of the "GS1 General Specifications" (January 2019).
System
  • During initialization HALCON attempts to open a hidden OpenGL window to determine the supported OpenGL capabilities. On systems with broken OpenGL drivers this can lead to HALCON crashing on startup. The environment variable HALCON_NO_OPENGL can now be set to 1 to tell HALCON to disable OpenGL support, avoiding the crash.

Bug Fixes

3D
  • connection_object_model_3d did not work with objects that had both triangles and polygons inside the model. This problem has been fixed.
  • object_model_3d_to_xyz with Type 'cartesian' sometimes did not show the projected coordinate values in the correctly rounded pixels. This problem has been fixed.
  • object_model_3d_to_xyz with Type 'cartesian' sometimes showed incorrect points in the output images, as well as points behind the camera given by CamParam and Pose. This problem has been fixed.
  • set_camera_setup_param did not handle poses correctly which were of a type other than 0, i.e., the last entry of the pose was not equal to 0. This problem has been fixed.
  • In rare situations, smallest_bounding_box_object_model_3d produced different results on different platforms (macOS, Windows, Linux). This problem has been fixed. The results are now more similar on all platforms.
  • In rare cases, triangulate_object_model_3d could have crashed if method was set to 'greedy' and 'greedy_mesh_erosion' was turned on. This problem has been fixed.
  • triangulate_object_model_3d with Method set to 'greedy' did not remove attributes that were attached to an old triangulation. triangulate_object_model_3d with Method set to 'polygon_triangulation' raised an unrelated error in case that the input already contained triangles. triangulate_object_model_3d with Method set to 'polygon_triangulation' froze in case that it contained an attribute named '&original_indices'. These problems have been fixed. Now, triangulate_object_model_3d with Method set to 'polygon_triangulation' replaces triangles.
  • union_object_model_3d did not free temporary memory correctly if all input object models contained no points. This problem has been fixed.
  • vector_to_pose raised memory errors in rare cases. This problem has been fixed.
Bar Code
  • find_bar_code could not decode GS1 DataBar Expanded Stacked codes with less than four symbol characters in the first row. This problem has been fixed. Now, the minimum number of symbol characters in the first row is two as specified by the ISO/IEC 24724:2011 standard.
  • HALCON now supports all GS1 application identifiers specified in the latest version of the "GS1 General Specifications" (July 2019).
Calibration
  • find_calib_object could have found the same finder pattern twice in a low resolution image. This problem has been fixed. Now, the error 8395 ("Same finder pattern found multiple times") is returned.
Color Processing
  • trans_from_rgb could have produced wrong output for the mode 'ihs' and some specific input. This problem has been fixed.
  • RGB/YUV conversion was using wrong equations, not the one from Norm ITU-R BT.470-6: Conventional Television Systems, 1998. This problem has been fixed.
Data Code
  • In very rare cases, find_data_code_2d returned wrong QR code results if ECI mode was used for decoding. This problem has been fixed.
  • In rare cases, find_data_code_2d missed decodable PDF417 symbols due to an inconsistent erasure treatment. This problem has been fixed.
  • In very rare cases, find_data_code_2d crashed for PDF417. This problem has been fixed.
  • In very rare cases, find_data_code_2d returned an incorrectly decoded data string for Data Matrix ECC 200 codes. This problem has been fixed.
  • In rare cases, find_data_code_2d threw the error 6006 ("Tmp-memory management: could not find memory element") for Micro QR codes if small timeout values were set. This problem has been fixed.
  • In rare cases, a memory leak could have occurred in find_data_code_2d for PDF417 codes if small timeout values were set. This problem has been fixed.
  • In very rare cases, find_data_code_2d decoded the left/right indicators of PDF417 codes erroneously. This could have led to crashes. This problem has been fixed.
  • In some cases, find_data_code_2d returned Data Matrix ECC 200 codes which were not mirrored even though the parameter 'mirrored' was set to 'yes'. The problem only occurred for data code models with 'module_grid' set to 'any'. This problem has been fixed.
  • In some cases, get_data_code_2d_results returned further candidates although the expected result number, defined by 'stop_after_result_num', has already been reached. This problem has been fixed.
  • In very rare cases, get_data_code_2d_results returned too bad grades for quality_isoiec15415 for Data Matrix ECC 200 codes. This problem has been fixed.
  • For set_data_code_2d_param, the parameter 'format' allows a list of values. If this list contained an invalid value, the function exited and all previously set values were discarded. This problem has been fixed. Now, the old list of parameters is kept.
  • HALCON now supports all GS1 application identifiers specified in the latest version of the "GS1 General Specifications" (July 2019).
Feature
  • select_gray selected only pixels greater than 0 when using 'min' for the Min argument. This problem has been fixed.
File
  • read_image crashed when reading GIF images in parallel. This problem has been fixed. Now, read_image internally protects reading of GIF images with a mutex.
  • write_image wrote JpegXR files, even if an error occured. This problem has been fixed and write_image now removes partially written JpegXR files on error.
Filter
  • affine_trans_image and affine_trans_region could have crashed in rare cases, if the interpolation method 'nearest_neighbor' was used together with the system parameter 'int_zooming' set to 'false'. This problem has been fixed.
  • convol_image created empty images on asymmetric separable filters. This problem has been fixed.
  • find_text returned non-deterministic results in the rare case when using the manual OCR mode to recognize imprinted characters in uint2 images. This problem has been fixed.
Graphics
  • get_disp_object_model_3d_info sometimes did not raise an error when information was not stored with the window, and 'opengl_compatibility_mode_enable' was set to 'true' via set_system. Instead, the depth information of a prior valid call was returned. This problem has been fixed.
  • open_window did not work on Linux systems with IPv6 (e.g., Ubuntu 18.04). This caused also 3D plots and OpenGL operations not to work. This problem has been fixed.
  • set_window_param did not ensure to run in the GUI thread for non-buffer windows. This could have resulted in undefined behavior in rare cases. This problem has been fixed.
Inspection
Matching
OCR
  • In very rare cases, find_text threw the error 3111 ("At least one input object has an empty region"). This problem has been fixed.
  • Calling get_text_model_param for 'text_line_structure' caused a buffer overrun. This problem has been fixed.
  • The previously allowed overlapping area for sort_region with SortMode 'character' was too large, so that characters in a slightly tilted row or column sometimes were erroneously sorted into two rows or columns. This problem has been fixed. Now, the maximum allowed overlap between two adjacent rows or columns is 15% of the larger one of two overlapping characters.
Region
  • distance_pr and distance_sr did not return an error if the input region was empty. This problem has been fixed.
  • The operator gen_random_regions ignored the random seed defined via set_system. This problem has been fixed. Now, calls to gen_random_regions deliver reproducible results if the same random seed is set.
  • intersection failed if both regions had 65536 run lengths. This problem has been fixed.
  • local_threshold returned the error 3513 ("number of choords too big for num_max") in rare cases. This problem has been fixed.
  • min_max_gray, gray_features, and select_gray returned wrong values for regions consisting of a single pixel. This problem has been fixed.
  • partition_rectangle stored empty regions also if the system settings were set to 'store_empty_region'='false'. This problem has been fixed.
Segmentation
  • local_threshold returned the error 3513 ("number of choords too big for num_max") in rare cases. This problem has been fixed.
System
  • Negative float values were incorrectly rejected by the operator send_data. This problem has been fixed.
XLD
  • In rare circumstances, distance_contours_xld could have crashed in HALCON XL. This problem has been fixed.
  • elliptic_axis_xld returned incorrect results for squares with phi=0. This problem has been fixed.
  • For a large number of input contours, gen_grid_rectification_map crashed on Windows. This problem has been fixed.
  • The number of contour points required for get_contour_angle_xld was not clearly defined. This problem has been fixed. Now, the required minimum is checked correctly and specified in the documentation.

HALCON/.NET

Bug Fixes

  • Within the HALCON/.NET SetFullImagePart method and the dev_display implementation within the hrun program, the Height/Width arguments for the set_part operator were exchanged. This problem has been fixed.

HALCON Variable Inspect extension for Visual Studio

Functionality

  • The HALCON Variable Inspect Extension for Visual Studio now can be used in Visual Studio 2019 also.

Bug Fixes

  • In some cases, it was not possible to read iconic variables with the HALCON Variable Inspect extension for Visual Studio. 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

  • The MVTec GigE Vision Streaming Filter version 2.1.8.2 that is part of the Windows installer now supports the [Stream]EventTransferEnd event and several stream statistics which were only available with the socket driver before.
  • A new procedure /hdevelop/Image/Acquisition/genicamtl_io_control.hdpl has been added.
New Image Acquisition Examples
  • hdevelop/Image/Acquisition/genicamtl_io_control.hdev
  • hdevelop/Image/Acquisition/gigevision2_io_control.hdev
  • hdevelop/Image/Acquisition/gigevision2_wenglor_shapedrive_objectmodel3d.hdev
  • hdevelop/Image/Acquisition/usb3vision_io_control.hdev

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

Miscellaneous

  • Within the documentation, some links within different manuals were outdated or broken. This problem has been fixed. In particular, the outdated links were updated and the links pointing to no longer existing webpages were removed from the respective manuals.

Programmer's Manuals

  • The Programmer's Manual contained incorrect information on the usage of X11. This problem has been fixed.

Reference Manual

  • The reference manual entry of elliptic_axis_xld contained a wrong operator link. This problem has been fixed.
  • The reference manual entry of find_planar_uncalib_deformable_model mentioned a wrong value as parameter restriction. This problem has been fixed.
  • The reference manual entry of get_bar_code_result did not mention all possible status ids. This problem has been fixed.
  • The code example in the reference manual entry of interleave_channels set the wrong pixel format. This problem has been fixed.
  • The example in the reference manual entries of open_io_device and query_io_interface contained a misspelled variable. This problem has been fixed.
  • The reference manual entries of select_shape, select_shape_xld, select_lines, partition_lines, and segment_contour_attrib_xld were not clear about the possible range of values for the parameters 'Min' and 'Max'. This problem has been fixed.
  • The reference manual did not mention possible consequences of changing the encoding. This problem has been fixed. The reference manual entry of set_system has been extended accordingly.
  • The reference manual entries of trans_to_rgb and trans_from_rgb have been improved by a statement about possible slight value differences due to internal precision.
  • The reference manual entry for trans_to_rgb had a wrong conversion formula, further the entry of this operator as well as for trans_from_rgb had a misleading conversion hint. This problem has been fixed. The formula is now correct and the conversion hint reformulated.

Release Documents

  • The previous release notes related to HALCON 13.0 are part of the installation again. Thus, you can find the files release_notes_13_0.html, release_notes_13_0_1.html, release_notes_13_0_2.html, and release_notes_13_0_3.html in your %HALCONROOT% directory.

User Guides

  • The description of the "Visualisation Settings" in the HDevelop User's Guide was outdated. This problem has been fixed.

Supported Operating Systems

Windows

HALCON 13.0.4 has been compiled for the following Windows platform versions:

  • x86sse2-win32 platform version for Windows 7/8/8.1/10 or Windows Server 2008 R2/2012/2012 R2/2016 on x86 processors with SSE2 extension, i.e., Intel Pentium 4 / AMD Athlon 64 or higher
  • x64-win64 platform version for Windows 7/8/8.1/10 or Windows Server 2008 R2/2012/2012 R2/2016 x64 Edition on Intel 64 or AMD64 processors

The setup process checks whether it is running on a 32- or 64-bit system and provides a suitable list of platform versions that can be installed.

During the installation, the environment variable HALCONARCH is set to x86sse2-win32 or x64-win64 to indicate the installed platform version. Please note that if you want to switch to another platform version, you must first install it. Then, you must adapt the environment variable HALCONARCH (see the Installation Guide for more information).

Linux

HALCON 13.0.4 has been compiled for the following Linux platform versions:

  • x64-linux platform version for Linux x86_64, libc.so.6 (GLIBC_2.17 or higher), libstdc++.so.6 (GLIBCXX_3.4.15 or higher), on Intel 64 or AMD64 processors
  • arm7a-linux platform version for Linux armv7a, Kernel with hidraw support, hard-float ABI, glibc 2.17 or higher, libstdc++.so 6.0.18

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

macOS

HALCON 13.0.4 has been compiled for macOS in the following platform version:

  • x64-macosx platform version for macOS 10.12/10.13 or higher on Intel 64.

Miscellaneous

Installation

  • The Linux installer script install-linux.sh failed to install all files on certain Debian armhf-based platforms due to lack of support for file globbing in the armhf version of the default shell "dash". This problem has been fixed. Now, install-linux.sh is run using bash. Note that this change affects the compatibility. Read more.

Errata Release Notes of 13.0.3

  • Within the release notes of HALCON 13.0.3, the information regarding the supported operating systems were not up to date. Please refer to the Installation Guide for the correct information.

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