MVTec Software GmbH
 

Release Notes for HALCON 13.0.2

MVTec Software GmbH - Release Notes for HALCON 13.0.2

This document provides the release notes for MVTec HALCON 13.0.2, as released in January 2018.

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


Addendum to the Release Notes of HALCON 13.0.2.2

Creating an HDevProcedure instance from a local procedure in an HDevProgram did not work when that local procedure referenced other local procedures. To solve this problem, the version HALCON 13.0.2.2 was substituted by an updated version HALCON 13.0.2.3.

To find out which version is currently installed, please open the dialog "Help->About" in HDevelop. The fixed version of the HALCON library is indicated by: "HALCON version: 13.0.2.5 (11.07.2018)". The file version of the HALCON library can also be checked with the following operator call: get_system('file_version',FileVersion), or, under Windows, by inspecting the file properties of the files halcon.dll and halconxl.dll.


Addendum to the Release Notes of HALCON 13.0.2

The originally released version of HALCON 13.0.2 had a few issues. To solve these problems, the original version HALCON 13.0.2 was substituted by an updated version HALCON 13.0.2.2.

To find out which version is currently installed, please open the dialog "Help->About" in HDevelop. The fixed version of the HALCON library is indicated by: "HALCON version: 13.0.2.5 (08.06.2018)". The file version of the HALCON library can also be checked with the following operator call: get_system('file_version',FileVersion), or, under Windows, by inspecting the file properties of the files halcon.dll and halconxl.dll.


In particular, the following problems have been fixed:

Procedures

The protection format for HDevelop files has been changed to improve security. Files containing procedures protected with the old format can still be opened, edited, and executed, but will be stored in the new format. Files with the new protection cannot be used with unpatched HALCON versions published before May 2018. If you need to open these files with older HALCON versions, please update these versions using the patches available for download from our web server https://www.mvtec.com/download/halcon/.

HDevEngine

  • Loading and destroying instances of HDevProcedure and HDevProcedureCall was relatively slow. This problem has been fixed.
  • Loading two or more programs into the same instance of HDevEngine sometimes led to unresolved procedure calls. This problem has been fixed.

HALCON Library


Contents

Major New Feature of HALCON 13.0.2

GigEVision2

HALCON now provides the new GigEVision2 interface which is the successor of the old GigEVision interface. The GigEVision2 interface extends the old interface and now also supports devices complying with the GigE Vision 2.x standard. In particular, this new interface supports the transmission of chunk data and additional payload types including the multipart payload. In combination with a 3D sensor that supports the multipart payload type the GigEVision2 interface is now able to directly create an ObjectModel3D when using grab_data or grab_data_async.

Compatibility

Licenses

HALCON 13.0 licenses are also valid for HALCON 13.0.2. 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.2 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.1:

  • In some cases, find_surface_model_image crashed when using a model that was written with write_surface_model and read with read_surface_model. Since the data corruption already occurred during write_surface_model, all models created and written with prior versions of HALCON (including HALCON 13.0.1 and HALCON 17.12-progress) must be re-created. To facilitate finding such incorrectly written models, the internal version number of surface models that were created with 'train_3d_edges' enabled has been increased. HALCON will now raise an error when attempting to read a corrupted surface model that was written with a previous version of HALCON. More information.

HALCON Applications

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

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 and HALCON 13.0.1, 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.2, 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

Planned Discontinuation of the GigEVision Interface

MVTec plans to discontinue the GigEVision interface. The timeline for this discontinuation includes the following steps:

  • 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.
  • Next major HALCON version:

    • The GigEVision2 interface replaces the deprecated GigEVision interface.

Please note also the following compatibility issue related to image acquisition interfaces:

  • If both interfaces, GigEVision2 and the deprecated GigEVision, should be used on the same PC you need to update the old GigEVision interface to revision 13.0.3. This is because the MVTec GigE Vision Streaming Filter (version 2.1.8.0) that is part of the Windows version of the new GigEVision2 interface is only compatible with GigEVision revision 13.0.3.

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

Digital I/O Interfaces

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

Extension Packages

Extension packages developed with HALCON 13.0 or HALCON 13.0.1 can be used with HALCON 13.0.2 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.

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

MVTec plans to discontinue the HALCON/C++ (legacy) language interface. The timeline for this discontinuation includes the following steps:

  • 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.
  • HALCON 17.12 and higher:

    • The HALCON/C++ (legacy) interface is not available anymore.

Planned Discontinuation of the HALCON/COM Language Interface

MVTec plans to discontinue the HALCON/COM language interface. The timeline for this discontinuation includes the following steps:

  • HALCON 13.0.2:

    • The HALCON/COM interface is marked as legacy.
  • HALCON 17.12 and higher:

    • The HALCON/COM interface is not available anymore.

Detailed Description of Changes in HALCON 13.0.2

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

HDevelop

New Functionality

Procedures
  • The saving of procedures in procedure library files has been improved to facilitate the work with, e.g., version control systems. Now, procedures are always stored in lexicographical order (case insensitive).
Code Export
  • C++ code exported from HDevelop now encloses the call to the action() function with a try/catch block.
Miscellaneous
  • Error message dialogs within try/catch blocks are now suppressed by default (Preferences > General Options > Experienced User > Suppress error message dialogs in try/catch blocks). Example programs and procedures that had explicitly set this option have been adapted. Furthermore, the error message has been restated for clarity.

Bug Fixes

Assistants
  • Attempts to connect to an already connected DirectShow image source from the Image Acquisition Assistant caused HDevelop to freeze. This problem has been fixed.
  • Code generated by the OCR assistant for training an MLP classifier could use a different number of hidden components as training parameter than when training the classifier within the OCR assistant itself. This problem has been fixed.
  • The OCR Trainingfile Browser allowed to enter empty symbol names. Therefore, these symbols could not be deleted from the tree. This problem has been fixed. Now, it is no longer supported to enter empty symbol names.
GUI
  • HDevelop crashed in rare cases when closing the runtime statistics window. This problem has been fixed.
  • HDevelop crashed when closing an empty variable inspection window under certain circumstances (multiple variables, multiple cells selected, program was reset). This problem has been fixed.
  • Selecting regions by clicking on them in the graphics window did not work reliably for coordinates larger than 511. This problem has been fixed.
  • HDevelop crashed when a matrix variable was cleared while it was being edited in the variable inspect dialog. This problem has been fixed.
  • In HDevelop, low-level error messages with non-ASCII characters that were displayed in the Output Console window or the HALCON Low Level Error Message Box could be displayed corrupted. This problem has been fixed.
IDE
  • HDevelop's auto completion list box showed a dot in front of vector methods. This problem has been fixed.
  • While using the keyboard in the autocompletion of HDevelop, it happened that the tooltip obscured the shown list. This problem has been fixed.
  • When cycling through HDevelop's auto completion list, the cycling stopped at the first entry when the UP key was pressed. This problem has been fixed. Now, it can be cycled through in both directions.
  • When opening an inspection window for a hom_mat3d matrix a second time, HDevelop opened another inspection window instead of re-using the existing one. This problem has been fixed.
  • HDevelop behaved inconsistently or crashed when executing procedures containing vector operations with erroneous index expressions JIT-compiled. This problem has been fixed.
HDevelop Language
  • HDevelop easily crashed on Windows systems for languages with multibyte encodings such as Japanese, e.g., when typing "tmp := abs" into the Program Window. Note that this problem has already been fixed in HALCON 13.0.1.1.
Procedures
  • If during the creation of an HDevelop procedure from a selection of code lines a variable name has been suggested as an input as well as an output parameter, the variable name is used as input parameter of the procedure, and for the output parameter a new variable name is created which corresponds to the variable name extended by "Out". However, in the procedure body, the two variables were not always used consistently, which led to wrong behavior and runtime errors. This problem has been fixed.
  • HDevelop did not recognize and resolve procedures from a procedure library when that procedure library was first opened for editing, and added only afterwards via external procedure library path. This problem has been fixed.
  • HDevelop's vector method .remove raised an exception when executed JIT-compiled with an index value beyond the vectors end, but didn't so when executed non-JIT-compiled. This problem has been fixed. Now, no exception is raised in both cases.
Miscellaneous
  • When executing a JIT-compiled procedure that contained a for loop with an invalid start value, i.e. not of length 1 or not numeric, an exception with an incorrect error message was thrown. This problem has been fixed. In such situations, an exception with code H_ERR_WIPN1 or H_ERR_WIPT1 is now thrown, which is the same error code that it would throw when executed non-JIT-compiled.
  • On macOS, HDevelop crashed if no connection to a remote HDevEngine process could be established. This problem has been fixed.
  • JIT-compiled HDevelop procedures that used long-running HALCON operators caused performance problems with par_start. This problem has been fixed.
  • If the HDevEngine execution was stopped within a locked procedure (e.g., due to debug_wait_for_connection), connecting HDevelop for debugging caused an error. This problem has been fixed.
  • Stopping the program execution in HDevelop with F9 (break) or F2 (reset) as well as closing HDevelop while a program was running did not work correctly when it was using mutexes. This problem has been fixed.
  • The HDevelop GUI could have become unresponsive when executing a long-running operator or JIT-compiled procedure. This problem has been fixed.
  • The import statement in HDevelop did not resolve UNC paths on Windows correctly, leading to invalid procedure paths and problems resolving external procedures. This problem has been fixed.
  • On macOS, HDevelop could have crashed when interrupting read_string or read_char by stopping the program execution. This problem has been fixed.
  • Using get_framegrabber_param and set_framegrabber_param in HDevelop via its operator window could lead to invalid suggestions in rare cases. This problem has been fixed.
  • HDevelop crashed when an import statement was deactivated while the corresponding imported procedure was executed JIT-compiled. This problem has been fixed. Now the program execution is aborted, and the deactivation of the line is postponed until the execution has stopped. For the related limitations of activating/deactivating program lines during program execution please consult the HDevelop User's Guide.

HDevelop Example Programs

  • The following HDevelop example program has been added:
    • solution_guide/3d_vision/camera_calibration_single_image.hdev
    It shows a measurement after a single image calibration and explains the systematic error that occurs when measuring outside the calibrated plane. More information can be found in the section 'Single Image Calibration' of the Solution Guide 3D Vision.
Bug Fixes
  • A memory leak in explore_halcon.hdev resulted in accumulation of data. This problem has been fixed.

HDevEngine

Bug Fixes

  • When executing a JIT-compiled procedure that contained a for loop with an invalid start value, i.e. not of length 1 or not numeric, an exception with an incorrect error message was thrown. This problem has been fixed. In such situations, an exception with code H_ERR_WIPN1 or H_ERR_WIPT1 is now thrown, which is the same error code that it would throw when executed non-JIT-compiled.
  • When passing empty tuples as input parameters to procedures via HDevEngine/.NET, it was possible for tuple data to become corrupted or even for the application to crash. Note that this problem has already been fixed in HALCON 13.0.1.1.
  • HDevEngine crashed due to invalid memory access when sharing one HDevProcedure across multiple threads, where the HDevProcCalls get created and destroyed inside the respective thread worker functions. This problem has been fixed.
  • Creating and destroying HDevProgram instances could have led to unresolved lines in loaded external procedures and thus to potential errors when loading further programs. This problem has been fixed.
  • convert_vector_to_tuple raised an exception with JIT compilation when the input was an empty vector. This problem has been fixed. Now, an empty tuple is returned like in the non-JIT-compiled case.

HALCON Library

Bug Fixes

3D
  • The operators might have returned wrong score values in rare cases or might have crashed in rare cases. For binocular_disparity_mg and binocular_distance_mg the problem only occurred when 'CalculateScore' was set to 'true'. For reconstruct_surface_stereo the problem only occurred when 'disparity_method' was set to 'binocular_mg' using set_stereo_model_param. This problem has been fixed.
  • copy_object_model_3d did not return an error for incorrect values in the parameter 'Attributes'. This problem has been fixed.
  • When calling create_surface_model with 'train_3d_edges' set to 'true' from multiple threads in parallel, some of the calls could have failed and incorrectly returned the error H_ERR_NOGL. This problem has been fixed.
  • In some cases, find_surface_model_image crashed when using a model that was written with write_surface_model and read with read_surface_model. This problem has been fixed. Note that this change affects the compatibility. Read more.
  • The operator get_surface_matching_result returned the incorrect error code H_ERR_WIPV3 when passing sampled_3d_edges after matching with a model that was not created for edge-supported surface-based matching. This problem has been fixed. The operator now returns the correct error code H_ERR_WIPV2.
  • read_object_model_3d threw an error when reading OBJ files that contained too many white space characters at certain positions. Additionally, polygons with more than 1000 vertices were truncated, and only the first 1000 vertices were returned. These problems have been fixed. The operator now reads OBJ files with arbitrary white space characters and no longer truncates polygons with more than 1000 vertices.
  • register_object_model_3d_pair might have crashed if an input model contained only primitives. This problem has been fixed.
  • When passing a 3D object model that contains only a primitive as second parameter to register_object_model_3d_pair, the 3D object model sometimes was handled incorrectly, leading to a deadlock when using it in a subsequent operator. This problem has been fixed.
  • set_sheet_of_light_param crashed when a calibration object of the wrong type, i.e., no DXF model, was passed. This problem has been fixed.
  • set_surface_model_param and get_surface_model_param did not always throw an error when passing a malformed parameter for the camera parameters or camera pose of a camera with index larger than zero. Instead, the camera index was silently set to zero. This problem has been fixed.
  • simplify_object_model_3d sometimes crashed if a triangle of the input object model was degenerated by containing the same point two or three times. This problem has been fixed.
  • union_object_model_3d did not raise an error if the passed parameter 'Method' was incorrect. This problem has been fixed. union_object_model_3d now returns the errors 1202 ("Wrong type of control parameter 2"), 1302 ("Wrong value of control parameter 2") and 1402 ("Wrong number of values of control parameter 2").
Bar Code
  • find_bar_code hung in very rare cases when 'merge_scanlines' was 'true'. This problem has been fixed.
  • get_bar_code_result with 'quality_isoiec15416' used in very rare cases uninitialized image values to evaluate the quiet zone. This problem has been fixed.
  • get_bar_code_result threw an exception and then crashed for quality inspection in rare cases when the symbol region was outside the image. This problem has been fixed.
Calibration
Classification
Compute Device
  • HALCON may have crashed after destroying the tuple returned by get_compute_device_param with GenParamName='asynchronous_execution' or GenParamName='alloc_pinned'. This problem has been fixed.
Data Code
  • find_data_code_2d could crash while reading Data Matrix ECC 200 codes if a small candidate was found at the border of the image. This problem has been fixed.
  • In rare cases, find_data_code_2d for QR codes might have returned the error 3513 ("Internal error: number of chords too big for num_max"). This problem has been fixed.
  • find_data_code_2d for Data Matrix ECC 200 codes in very rare cases did not find symbols when 'module_gap_min' was set to 'no' or 'small' and 'module_gap_max' was set to 'big', although the symbols could be found when 'module_gap' was set to 'big'. This problem has been fixed.
  • For find_data_code_2d the false positive check for small datacodes using the variable 'module_grid' did not work correctly. This problem has been fixed.
  • find_data_code_2d for Data Matrix ECC 200 codes in very rare cases did not find symbols when a timeout was set, although the same symbols could be found when no timeout was set. This problem has been fixed.
  • The Data Matrix ECC 200 code reader could have accessed invalid memory when reading invalid content of symbols. This problem has been fixed.
  • The Aztec code reader could have crashed in very rare cases. This problem has been fixed.
  • get_data_code_2d_results could have returned too low grades for print quality inspection and detected damages in the quiet zone where no damages were. This problem has been fixed.
  • The parameter 'contrast_min' of set_data_code_2d_param did not accept values greater than 100 for the Aztec code reader. To be consistent with the other code readers, this restriction has been removed.
File
Filter
  • convol_image returned incorrect results with byte images and separable filter masks that have more than 8 columns and 'mirrored' border treatment. This problem has been fixed.
  • edges_image returned different results in subsequent calls when executed on OpenCL compute devices. This problem has been fixed.
  • edges_sub_pix and edges_color_sub_pix could have returned contours consisting of single points for the filter 'sobel_fast'. This problem has been fixed.
  • mean_sp read the parameters 'MaskWidth' and 'MaskHeight' in the wrong order. This problem has been fixed.
  • phase_correlation_fft sometimes returned an indefinite output. This problem has been fixed.
Graphics
  • create_drawing_object_xld could have caused invalid memory accesses when using halconxl.dll and HALCONARCH=x86sse2-win32.This problem has been fixed.
  • When interacting with XLD drawing objects created by create_drawing_object_xld, HALCON could have crashed. This problem has been fixed.
  • When using create_drawing_object_xld and attach_drawing_object_to_window together in a zoomed graphics window, it was sometimes not possible to select a contour point of the drawing object or to merge two contiguous points. This problem has been fixed.
  • disp_caltab crashed in rare cases when the parameter 'ScaleFac' was equal to 0. This problem has been fixed.
  • disp_polygon returned an error if empty tuples were passed. This problem has been fixed.
  • When calling disp_region with an image object, sometimes the image was displayed instead of the region. This problem has been fixed.
  • dump_window_image could have caused a deadlock, when it was used together with drawing objects. This problem has been fixed.
  • If a HALCON window was placed inside another HALCON window on Linux systems, the application that created the windows, for example HDevelop, could hang on exit if the child window was not closed before the parent window. This problem has been fixed.
  • HALCON crashed on macOS if a 'cocoa' window was opened and used after a 'pixmap' window has been created. This problem has been fixed.
  • open_window and set_window_extents did not apply the background color correctly. This problem has been fixed.
  • Using open_window on certain window managers on Linux systems, in particular OpenBox and LXDE used in Raspbian for the Raspberry Pi, no images could be displayed within the opened windows. This problem has been fixed.
  • read_char returned random characters when its execution was aborted in HDevelop by stopping the program. This problem has been fixed. Now, read_char returns an empty string.
  • After setting the hlib encoding to 'utf8' via set_system ('filename_encoding', 'utf8), on the new HALCON windows the operator read_string did not display latin-1 characters like German umlauts correctly. This problem has been fixed.
Inspection
Matching
Miscellaneous
  • Getting the host IDs via get_system's 'hostids' parameter leaked memory. This problem has been fixed.
  • interpolate_scattered_data usually returned incorrectly interpolated values if the number of points that have been used to create the interpolator exceeded 500, or if the number of evaluated points exceeded 4500. This problem has been fixed. Now, the operator might be slower in some cases.
  • Using the macro HGetElemS defined in include/HMacro.h caused a compiler error reporting too many arguments in function 'HPGetPElemS'. This problem has been fixed.
OCR
  • clear_text_model sometimes crashed if the text model parameter 'ocr_classifier' has been set before with set_text_model_param and set_text_model_param returned an error. This problem has been fixed.
  • concat_ocr_trainf did not always close all opened file handles. This problem has been fixed.
  • find_text crashed in rare cases with text models of mode 'manual'. This problem has been fixed.
  • find_text crashed when using an OCR classifier with only one class. This problem has been fixed. Now, the minimal number of classes required by find_text is one instead of two.
  • find_text in manual mode could have produced inconsistent results over multiple executions. This problem has been fixed.
  • find_text returned an error for multichannel images. This problem has been fixed. Now, instead of throwing an error the first image channel is used for text segmentation.
  • get_text_result returned wrong results for the parameters 'class', 'class_element', and 'class_line' when the text model that was used to create the results was cleared before the call of get_text_result. This problem has been fixed.
  • get_text_results returned error messages that were not helpful if the result name is not available for the selected mode. This problem has been fixed. Now, the HALCON error code 8338 is returned.
  • trainf_ocr_class_svm might have crashed for corrupted input files. This problem has been fixed.
Parallelization
  • The set_system parameter 'tsp_thread_num' set the number of AOP threads to a number that was one below when setting the maximum available threads. The problem occurred when 'tsp_thread_num' was set to a smaller number before. This problem has been fixed.
Region
  • partition_rectangle sometimes processed vertically discontiguous input regions incorrectly. This problem has been fixed.
System
  • When determining the maximum number of threads to use for automatic operator parallelization, HALCON did not properly take CPU affinity restrictions into account on Linux systems. This problem has been fixed. On Linux systems, HALCON now checks the scheduling policy of the thread initializing HALCON and only enables the use of spinlocks for the SCHED_OTHER policy. On Windows systems, the priority class of the process is checked and spinlocks are enabled for classes below the HIGH_PRIORITY_CLASS. This behavior can be overridden by calling the HSetUseSpinLock function with the desired value prior to calling the first HALCON operator.
  • try_lock_mutex returned a semantically inverted busy flag when running in HDevelop under Windows. This problem has been fixed.
XLD
  • get_contour_angle_xld with 'AngleMode' set to 'rel' could have returned wrong angle values for the first and the last point of a closed contour. This problem has been fixed.
  • segment_contours_xld could have crashed for input contours consisting of a single point. Note that this problem has already been fixed in HALCON 13.0.1.1.

Procedures

Functionality

  • The HDevelop procedure set_display_font now supports Liberation Fonts.

HALCON/.NET

Bug Fixes

  • Operators in HALCON/.NET that took an array of tool classes as input parameters (such as HObjectModel3D[] or HShapeModel[]) exhibited a resource leak. This problem has been fixed. Note that HTuple-based signatures via HOperatorSet or types that represent tuple data such as HPose[] were not affected.
  • The file version for halcondotnet.dll and halcondotnetxl.dll has not been incremented for HALCON version 13.0.1. Note that this problem has already been fixed in HALCON 13.0.1.1.
  • Changing the window size resizes also a displayed image. However, when the HKeepAspectRatio option of the HSmartWindowControl was enabled, the image was not displayed with the correct ratio. This problem has been fixed.
  • Accessing multiple elements of HTuple at once by indexing with another HTuple (t1[t2]) was inefficient in HALCON/.NET. This problem has been fixed. For pure integral indexing tuples the performance has been improved.
  • In Microsoft Visual Studio 2013 Express, trying to view a Form containing a HSmartWindowControl in the Designer led to an error stating that an attempt was made to load a program with an incorrect format. This problem has been fixed.
  • If the HSmartWindowControl was set to an arbitrary position inside the father window, the zooming of iconic data returned with wrong results, because the offset between the upper left corner of the father window and the HSmartWindowControl was not considered. This problem has been fixed.
  • In some cases, binding the ActualHeight or ActualWidth properties of the HSmartWindowControlWPF could have led to a null pointer exception. This problem has been fixed.
  • Calling an operator with a null input parameter caused a memory leak in HALCON/.NET. This problem has been fixed. To profit from the bugfix when using extension packages, please regenerate the HALCON/.NET language interface of your extension package.
  • If the HSmartWindowControlWPF was resized to the minimum height, the focus of the window was sometimes lost. This problem has been fixed.
  • The Serialize() member functions in the .NET interfaces crashed in rare cases. This problem has been fixed.
  • Serializing or deserializing HALCON/.NET objects raised use of unmanaged memory until next garbage collection even when explicitly disposing all objects. This problem has been fixed.

Language Interface Example Programs

Bug Fixes

  • The HDevEngine/C++ example 'error_handling.cpp' demonstrates different error states that may occur during the execution of an HDevEngine program. Some parts of the test were skipped owing to a procedure that could not be loaded. This problem has been fixed.
  • When the HALCON/C++ example 'matching.cpp' (examples/cpp/qt/Matching/matching.cpp) was built with Qt5, the encoding of the copyright string was wrong. This problem has been fixed.

HALCON Variable Inspect extension for Visual Studio

Functionality

  • The HALCON Variable Inspect extension for Visual Studio has been improved. Former it allowed to inspect variables on the highest call stack level, now it supports the inspection of HALCON Variables on every call stack level. The call stack can be switched via the Visual Studio Call Stack Window.

Bug Fixes

  • The HALCON Variable Inspect extension for Visual Studio now deals better with coexisting versions. Furthermore, the behavior in case of errors has been improved. However, it is not recommended to use different versions of the HALCON Variable Inspect extension concurrently in the same Visual Studio.
  • The HALCON Variable Inspect extension for Visual Studio displayed a crash message when it was started without a valid license. This problem has been fixed.
  • The HALCON Variable Inspect extension for Visual Studio displayed the wrong version number in the window title. This problem has been fixed.
  • The HALCON Variable Inspect extension for Visual Studio did not support the inspection of images of type 'cyclic'. This problem has been fixed.
  • Microsoft Visual Studio creates temporary variables for return values of method calls. The HALCON Variable Inspect extension for Visual Studio displayed these values. But it was not possible to inspect them and they were not deleted from the list until the scope has changed, even if Visual Studio no longer displayed them. This problem has been fixed. Now, these return value variables are no longer displayed in the locals view.
  • During a drag and drop operation to the watch window of the HALCON Variable Inspect extension for Visual Studio, the dropped text was moved instead of copied. This problem has been fixed.
  • The HALCON Variable Inspect extension for Visual Studio did not clean the data of watched variables after a stop or restart of the application. Thus the old value could be visualized, although retrieving data was not successful. This problem has been fixed. Now, watched variables are cleared during stopping or restarting the application.

Extension Packages

Bug Fixes

  • HALCON did not unload extension package libraries if the extension packages could not be initialized properly. Besides, an error during the initialization of an extension package prevented other extension packages from being loaded. These problems have been fixed.
  • Extension packages might have crashed when using the macro HGetElemS. 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.

New, Modified, or Removed Image Acquisition Interfaces

  • HALCON has been extended with the new GigEVision2 interface for GigE Vision devices complying with GigE Vision 1.x or GigE Vision 2.x. It supports the operating systems Windows, Linux, and macOS. Note that the GigEVision interface is deprecated and the new GigEVision2 interface should be used instead.

Image Acquisition Example Programs

  • The HALCON/C++ example 'ia_callback' and the HALCON/.NET example 'IACallback' have been refactored to improve their usability. Now, GenICam Module Events and Event Data are supported, the Image Acquisition Interface is selected interactively, and the error handling has been improved.
New Image Acquisition Examples
  • hdevelop/Image/Acquisition/genicamtl_smartray_ecco_objectmodel3d.hdev
  • hdevelop/Image/Acquisition/gigevision2.hdev
  • hdevelop/Image/Acquisition/gigevision2_2cameras.hdev
  • hdevelop/Image/Acquisition/gigevision2_atc4_objectmodel3d.hdev
  • hdevelop/Image/Acquisition/gigevision2_crop.hdev
  • hdevelop/Image/Acquisition/gigevision2_do_abort_grab.hdev
  • hdevelop/Image/Acquisition/gigevision2_flir_ax5.hdev
  • hdevelop/Image/Acquisition/gigevision2_forceip.hdev
  • hdevelop/Image/Acquisition/gigevision2_frame_rate.hdev
  • hdevelop/Image/Acquisition/gigevision2_information.hdev
  • hdevelop/Image/Acquisition/gigevision2_interpacket_delay.hdev
  • hdevelop/Image/Acquisition/gigevision2_ip_address_handling.hdev
  • hdevelop/Image/Acquisition/gigevision2_link_aggregation.hdev
  • hdevelop/Image/Acquisition/gigevision2_multiframe.hdev
  • hdevelop/Image/Acquisition/gigevision2_parameters.hdev
  • hdevelop/Image/Acquisition/gigevision2_photonfocus3d_objectmodel3d.hdev
  • hdevelop/Image/Acquisition/gigevision2_simple.hdev
  • hdevelop/Image/Acquisition/gigevision2_software_trigger.hdev
  • hdevelop/Image/Acquisition/gigevision2_wenglor_wecat3d_objectmodel3d.hdev
  • hdevelop/Image/Acquisition/gigevision_information.hdev
  • hdevelop/Image/Acquisition/saperalt_turbodrive.hdev
  • hdevelop/Image/Acquisition/ueye_adaptive_hotpixel_correction.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.

Miscellaneous

  • The hioTemplate operator get_io_channel_param started with the index 1 to initialize the 'param_name' values. This problem has been fixed.
  • Attempting to open an I/O interface with an incompatible interface version returned a wrong error code. This problem has been fixed.

Digital I/O Example Programs

New Digital I/O Examples
  • hdevelop/System/IO-Devices/opc_ua_read_struct.hdev
  • hdevelop/System/IO-Devices/opc_ua_read_write_complex_data_types.hdev

Documentation

Miscellaneous

  • Within include/hlib/HObjectModel3D.h, HOM3DAddPoints, HOM3DAddPointsAndMapping, HOM3DGetPoints, HOM3DAddPointsFromImagesRegion, and HOM3DAddPointsFromImagesInvalid did not document that values of point coordinates are treated as 'mm'. This problem has been fixed.

Programmer's Manuals

  • The Programmer's Guide has been improved to describe the default behavior of the implementation class 'HDevOpMultiWindowImpl'.
  • The Programmer's Guide has been improved such that the sections for 'Error Handling' provide links to the list of HALCON error codes.
  • The Programmer's Guide has been improved. It now describes how to fit a new image (or other content) to the size of the window control in the source code.
  • The Programmer's Guide did not mention that collecting database information is not thread-safe when exchanging iconic objects between threads. This problem has been fixed.
  • The Programmer's Guide has been extended with the information that when working with the HALCON Variable Inspect extension for Visual Studio using an older installation of Visual Studio 2013, it might be necessary to install the .NET 4.6 framework.
  • In section 28.1.1 of the Programmer's Guide, information about the parameters 'mem_free_intern', 'debug_password', and 'debug_wait_for_connection' has been added.
  • The Programmer's Guide did not mention that halcon.lib has to be linked to be able to call FinalizeHALCONLibrary() (chapter 3.2). The problem has been fixed.
  • The Programmer's Guide has been extended by the information that the HDevEngine method LoadProgram changes the working directory if a program is loaded.

Reference Manual

  • The reference manual entries of the following operators contained imprecise restrictions for the parameter Sigma: These problems have been fixed.
  • The warning section of the reference manual entry of clear_all_matrices did not mention that the operator is obsolete, and the attention section of the reference manual entry of clear_all_calib_data was missing. These problems have been fixed.
  • The reference manual entries for have been extended to also describe possible behavior at the border of the image or a reduced domain.
  • The reference manual entries of create_caltab and gen_caltab have been improved. They now explain how to calculate the size of the generated calibration plate.
  • The German reference manual entry of create_planar_calib_deformable_model contained a wrong parameter description of 'ScaleCMin'. This problem has been fixed.
  • The reference manual entry of create_sheet_of_light_calib_object has been improved to mention that, if the parameters 'HeightMin' and 'HeightMax' were chosen such that the height difference between the truncated pyramid and the ramp was too small, calibrate_sheet_of_light might not have found the calibration object.
  • In the reference manual entries of edges_image, edges_sub_pix, and edges_color, the comparison of different values of 'Alpha' does not show comparable filter widths, but filters with comparable properties. Additionally, the reference manual entry of info_edges did not explain the coefficients well enough for all possible filters. These problems have been fixed.
  • The reference manual entries of edges_image and edges_color did not contain the information that the hysteresis threshold operation is not applied if 'NMS' is set to 'none'. This problem has been fixed.
  • The reference manual entry of enqueue_message mentioned a deep copy behavior which was mistakable. This problem has been fixed.
  • The overview pages of the reference manuals for image acquisition and I/O interfaces now include a separate section for systems based on Linux for Armv7-A.
  • The reference manual entry of set_hsi contained a wrong formula. This problem has been fixed.
  • set_shape_model_metric ignores an origin that was set by set_shape_model_origin. This issue has been documented.
  • The description of the set_system parameter 'filename_encoding' was outdated and lacked details. This problem has been fixed.
  • The reference manual entry of of tuple_split has been extended regarding subsequent separators and separators at the beginning and the end of the string.
  • In the reference manual entries of update_window_pose and set_camera_setup_cam_param, the multi-threading scope was set to local instead of global. This problem has been fixed.
  • Within the reference manual entry of write_ocr_class_knn, the default file extension was documented incorrectly as  '.onc' instead of '.okc'. This problem has been fixed.
  • The reference manual entries of operators that depend on libcanvas have been extended to explicitly state this requirement.
  • The Japanese reference manual had several punctuation mark errors. This problem has been fixed.
  • In the PDF version of the Japanese reference manual, a figure in the chapter '1D Measuring' appeared clipped. This problem has been fixed.

Solution Guides

  • The Solution Guide on 3D Vision has been improved. In particular, the recommendations for acquiring calibration images have been revised.
  • The Solution Guide Basics has been improved to mention also the texture inspection model in the chapter 'Texture Analysis'.
  • The Solution Guide Basics has been improved to describe multi-threading issues for compute devices more clearly.

User Guides

  • The Installation Guide did not accurately describe how many instances of HALCON can be used in parallel. This problem has been fixed.
  • The section Limitations of the User's Guide for HALCON for ARM-based Platforms did not mention that OpenCL is currently not supported. This problem has been fixed.
  • In the HDevelop OCR assistant, when training an OCR classifier, the training might have taken a very long time if the number of trained characters was very high. The reason for this might have been the Hidden Units parameter, where the auto mode produces a too large value for a large number of characters. The description of this parameter has been adapted accordingly in the HDevelop User's Guide.
  • The list of color names in appendix B of the HDevelop User's Guide was incomplete. This problem has been fixed. In addition, the numbering of appendices in the HTML version of the manuals now matches the PDF version.
  • The in-line operator notation table within the HDevelop User's Guide has been extended.
  • The explanation of the procedure resolution within the HDevelop User's Guide was partly unclear. This problem has been fixed.

Supported Operating Systems

Windows

HALCON 13.0.2 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.2 has been compiled for the following Linux platform version:

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

  • Linux armv7a libraries got installed by mistake during compact and runtime installation. This problem has been fixed.
  • Support to install the Armv7-a release on aarch64 machines has been added to the installer.
  • The IO integration example and the corresponding documentation were not installed during installations on Linux. This problem has been fixed.

Licensing

  • When using dongle licenses and starting HALCON processes simultaneously, some processes might have exited with an license error on macOS platforms. This problem has been fixed.
  • HALCON was unable to verify the signature of license files containing unknown modules, flags or platforms, which made the licenses non-forward compatible. This problem has been fixed.

The major new features of HALCON 13.0.2 are described with respect to HALCON 13.0.1. Follow the links below to read about major new features of previous HALCON versions.

The changes in HALCON 13.0.2 are described with respect to HALCON 13.0.1. Follow the links below to read about changes in previous HALCON versions.