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.


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