Release Notes for HALCON 13.0.1
This document provides the release notes for MVTec HALCON 13.0.1, as released in June 2017.
HALCON 13.0.1 is primarily a maintenance release that fixes all known bugs in HALCON 13.0; besides, it provides added functionality.
Addendum to the Release Notes of HALCON 13.0.1
The originally released version of HALCON 13.0.1 had a few critical issues. To solve these problems, the original version HALCON 13.0.1 was substituted by an updated version HALCON 13.0.1.1.
If you have already installed HALCON 13.0.1, we recommend to download the update and install it over the existing installation. For this, all installers have been adapted accordingly.
To find out which version is currently installed, please open the dialog "Help->About" in HDevelop. The correct version and date of HALCON are: "HALCON version: 13.0.1.1 (14.06.2017)". 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:
HDevelop
- HDevelop easily crashed on Windows systems for languages with multibyte encodings such as Japanese, e.g., when typing "tmp := abs" into the Program Window. This problem has been fixed.
HALCON/.NET and HDevEngine .NET
- 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. This problem has been fixed.
- The file version for halcondotnet.dll and halcondotnetxl.dll has not been incremented for HALCON version 13.0.1. This problem has been fixed.
HALCON Library
- 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.
- segment_contours_xld could have crashed for input contours consisting of single points. This problem has been fixed.
Contents
- Major New Features of HALCON 13.0.1
- Compatibility
- Detailed Description of Changes in HALCON 13.0.1
- Errata Release Notes of HALCON 13.0
- Release Notes of Previous HALCON Versions
Major New Features of HALCON 13.0.1
Supported Operating Systems
- HALCON is now also available for ARM®-based platforms. I.e., the Linux installer, which can be downloaded as usual from the MVTec website, has been extended by the option to additionally install the components necessary for ARM-based platforms. These components include:
- HALCON libraries including HDevEngine,
- two example programs for C++ and HDevEngine,
- image acquisition interfaces (Video4Linux2, File, GenICamTL, GigEVision), and
- a tar-file for the installation of the runtime files on an ARM-based platform.
HALCON Variable Inspect Extension for Visual Studio
- The HALCON operator reference can now be opened via the HALCON Variable Inspect extension for Visual Studio using the context menu entry HALCON Help or the shortcut ALT+H.
- The HALCON Variable Inspect extension for Visual Studio now supports also Visual Basic .net.
- A great speed up has been achieved inside the HALCON Variable Inspect extension for Visual Studio for retrieving and visualizing iconic HALCON objects.
HALCON/.NET
- The HSmartWindowControlWPF has been improved. WindowSize and HImagePart were not WPF compliant. Now, these properties support TwoWay binding. Additionally, the new property HDisplayCurrentObject has been added to display any HALCON object directly through binding as well. To demonstrate the binding, a new C# example BindingWPF has been added.
- The HSmartWindowControlWPF property now supports a further parameter HZoomFactor. If the HZoomContent property is active, the HZoomFactor parameter has a direct impact on the behavior of the HSmartWindowControlWPF zoom option and allows to influence the step size.
- The HALCON Variable Inspect extension for Visual Studio now supports also Visual Basic .net.
Compatibility
Licenses
HALCON 13.0 licenses are also valid for HALCON 13.0.1. 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.1 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:
- In very rare cases, the improvement of the determination of the module position of Data Matrix ECC 200 code for quality assessment can affect the detection of Data Matrix ECC 200 codes using find_data_code_2d. More information.
- Due to an improvement with respect to the calculation of the range of rotations, the operators
find_shape_model,
find_shape_models,
find_scaled_shape_model,
find_scaled_shape_models,
find_aniso_shape_model,
find_aniso_shape_models,
find_ncc_model, and
find_ncc_models
may return different or additional results compared to previous HALCON versions. The reason is that the angle range may now be larger for models created from a negative starting angle to a positive angle and smaller for models created for a full circle. More information. - The results and scores of surface-based matching can change for scenes where the average distance between neighboring points is larger than 0.001. More information.
- For get_circle_pose the order of the output poses may be reversed with respect to the old behavior when the distance of the circle to the camera is smaller than or roughly equal to its radius. More information.
- Note that query_bar_code_params does not support overridden functions anymore. More information.
- Extended attributes of 3D object models that are bound to the object itself, not to points, triangles, polygons, or lines, are no longer copied by union_object_model_3d. Additionally, some attributes that previously were not in the output 3D object model now are copied. More information.
HALCON Applications
Applications (i.e., executables) developed with HALCON 13.0 can be used with HALCON 13.0.1, i.e., HALCON 13.0.1 is binary compatible with HALCON 13.0.
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, 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.1, 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, you can use them with HALCON 13.0.1 without further action.
Digital I/O Interfaces
If you have developed your own digital I/O interfaces with HALCON 13.0, you can use them with HALCON 13.0.1 without further action.
Extension Packages
Extension packages developed with HALCON 13.0 can be used with HALCON 13.0.1 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:
- 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.
Next major HALCON version after HALCON 13:
- The HALCON/C++ (legacy) interface will not be available.
Detailed Description of Changes in HALCON 13.0.1
The changes in HALCON 13.0.1 are described with respect to HALCON 13.0. The detailed description of changes in previous HALCON versions can be found in the release notes of the previous HALCON versions.HDevelop
New Functionality
IDE
- HDevelop now also shows the tool tip in the auto completion list box while using the keyboard. Previously the mouse had to be moved over an item in the auto completion box to get the tool tip for a suggested operator or value.
Miscellaneous
- The Help menu of HDevelop has been extended by a "Check For Updates" menu entry that can be used to check if a new update for HALCON is available.
Bug Fixes
Assistants
- Without the tilt lens option selected, the Calibration Assistant ignored the parameter Projection Model. I.e., if the projection model Telecentric was selected during the setup, nonetheless, the calibration was performed for the projection model Projective. This problem has been fixed.
- The Calibration Assistant generated code for "estimate pose from one image" erroneously. In particular, the shift for the pose, which is needed because of the plate thickness, had the wrong direction. This problem has been fixed. Now, the estimated pose is shifted towards the calibration plane and not away from it.
- The Calibration Assistant uses the size of the calibration images as an implicit calibration parameter. If, however, the calibration image sequence contained images with different dimensions, it was not clear, on which size the calibration was based upon. Under unfavorable circumstances the Calibration Assistant might even have used a size of an image that was already removed from the image sequence (thus, e.g., causing the extraction of the calibration marks to fail for all remaining images). This problem has been fixed. Now, always the size of the current reference image is used.
- Reconnecting a camera from the Image Acquisition Assistant could have caused HDevelop to freeze. The problem appeared after running and stopping the created code inside its acquisition loop. This problem has been fixed.
- dev_open_tool did not support to open the OCR Assistant with the page OCR Classifier. This problem has been fixed. Now, the assistant can be opened with the OCR Classifier tab selected by calling
dev_open_tool('ocr_assistant', 'default', 'default', 'default', 'default', 'page','ocr_classifier', ToolId).
- The OCR Assistant did not support pretrained CNN fonts. In particular, they could have been used but have not been listed. This problem has been fixed. Now, the assistant lists them under the Pretrained Classifiers on the OCR Classifiers tab.
- The teaching functionality of the OCR Assistant did not work for special characters with multibyte representation in the native OS encoding, e.g. Japanese. This problem has been fixed. Umlauts and accents in European languages were for the most part not affected under Windows since their regional code pages with single byte representations are used.
- The quick setup functionality of the OCR Assistant did not work for dotprint and SEMI fonts. This problem has been fixed.
- If the OCR Assistant was open, sometimes the images that were displayed in the Graphics Window were not resized correctly to the window size. This problem has been fixed.
- There were some syntactical inconsistencies in HDevelop's menu entries. This problem has been fixed.
GUI
- slide_image ignored the 'width' and 'height' system properties. This problem has been fixed.
- The text highlighting when searching for text in the HTML reference documentation was nearly invisible. This problem has been fixed.
- HDevelop's icons for input and output parameters were difficult to recognize. This problem has been fixed.
- There were some syntactical inconsistencies in HDevelop's menu entries. This problem has been fixed.
- dev_inspect_ctrl failed when the GUI lagged behind the program execution and still displayed a different procedure. This problem has been fixed.
- The five general category entries in HDevelop's preferences dialog weren't translated into other languages than English anymore. This problem has been fixed.
- HDevelop crashed when an open plot or function inspection window contained empty or uninitialized data, and the mouse was inside that window. This problem has been fixed.
- Selecting "Add to User Tab" from the context menu of an iconic variable did not reliably add that variable to the user tab. This problem has been fixed.
IDE
- In HDevelop a par_join waitet infinitely for a thread to finish if that named thread triggered a variable breakpoint on one of its output variables. This problem has been fixed.
- Within the Help menu, the HALCON News (WWW) entry did not redirect to the HALCON News web page in some cases. This problem has been fixed.
- HDevelop terminated when attempting to connect to an external engine application in SDI mode. This problem has been fixed.
- In HDevelop code it is possible to split long commands over multiple lines using the line continuation character (backslash). However, a command that was split over more than two lines did not display correctly when debugging it in an external HDevEngine application. This problem has been fixed.
- When executed with JIT-compilation, the HDevelop operator convert_vector_to_tuple sporadically raised a low level error or crashed, if the vector argument of the operator was an expression. This problem has been fixed.
- Selecting "Add to User Tab" from the context menu of an iconic variable did not reliably add that variable to the user tab. This problem has been fixed.
Procedures
- External procedures could not be resolved anymore after they had been renamed. This problem has been fixed.
- HDevelop sometimes changed the format of program lines that called imported procedures. This problem has been fixed.
Code Export
- HDevelop exported tuple element assignment operations incorrectly to HALCON/C++ and HALCON/.NET if the assignment variable was global and not a vector. This problem has been fixed.
- Exporting HDevelop programs with hdevelop -convert only worked correctly if the export file was specified with an absolute path. This problem has been fixed.
- There was a memory leak in the methods HTupleVector::Concat and HObjectVector::Concat. This problem has been fixed.
- HDevelop exported vector comparison expressions incorrectly to C++, if the vector comparison expression was part of another expression. This problem has been fixed.
- HDevelop exported declarations of exceptions with preceding namespace, which was unnecessary and could have led to problems if the exported code was embedded in a user defined namespace. This problem has been fixed.
- HDevelop exported procedures with error variables incorrectly to HALCON/C, if an error variable was an output parameter of the regarding procedure. This problem has been fixed.
- HDevelop exported iconic vectors incorrectly to C#, if the only operations on the vector were modifying vector methods. In that case, in the exported code the variable declaration of the regarding vector was missing. This problem has been fixed.
- HDevelop exported iconic vector length and comparison expressions incorrectly to HALCON/C, if the vector argument was not a variable. This problem has been fixed.
Miscellaneous
- The auto completion always added a comma in the parameter list of a one-parameter function. This problem has been fixed.
- HDevelop crashed when a HALCON error occurred during opening an inspection window on an (otherwise) valid image acquisition handle. This problem has been fixed.
- It was not possible to set a new value to a control variable in a variable inspect window if this variable had not already a valid value (e.g., because the variable hasn't been initialized, yet). This problem has been fixed.
- If in HDevelop an external procedure was opened explicitly for editing, saved under a different name via 'Save Procedure As', and no path to the procedure was added to the external procedure paths, the procedure was removed from HDevelop. However, the tab for the procedure in the program window remained, but did not show any code (as the procedure was unloaded). This problem has been fixed. Now, the procedure is kept open for editing, and the procedure code stays displayed.
- HDevelop might have crashed if in a HDevelop program a 3D model inspect window was closed with dev_close_inspect_ctrl, and the displayed 3D model handles were deleted immediately afterwards. This problem has been fixed.
- If HDevelop's profiler was activated, some menu items were not enabled after a restart of HDevelop (in particular, the 'Profiler Display' sub menu, 'Reset Profiler', and 'Show Runtime Statistics'). This problem has been fixed.
- HDevelop could have remained in an inconsistent state if procedures containing nested try-catch statements were executed JIT-compiled. This problem has been fixed.
- HDevelop might have crashed, if the Variable Window displayed the global variables, and a global variable ceased to exist. This problem has been fixed.
- With dev_update_window ('off'), sometimes output to the HDevelop Graphics Window did not work when it was applied immediately after opening or resizing a Graphics Window. This problem affected volatile visualizations like disp_line (i.e., those visualizations that are lost also after zooming or resizing the Graphics Window). This problem has been fixed.
- The 'Auto' tab in the Variable Window did not work for remote engine debugging. This problem has been fixed.
- HDevelop crashed when an import statement was removed while the corresponding imported procedure was executed JIT compiled. This problem has been fixed.
HDevelop Example Programs
New, Improved, or Deleted HDevelop Example Programs
- HALCON has been extended with a set of new examples and procedures to facilitate the hand-eye calibration for a setup with a stationary camera and pick-and-place applications for setups both with a stationary camera and a moving camera (attached to the robot arm):
The HDevelop example program- hdevelop/Calibration/Hand-Eye/calibrate_hand_eye_stationary_cam_approx.hdev
The HDevelop example programs- hdevelop/Applications/Robot-Vision/pick_and_place_with_2d_matching_stationary_cam.hdev and
- hdevelop/Applications/Robot-Vision/pick_and_place_with_2d_matching_moving_cam.hdev
These example programs use new procedures, which are available in the procedure library procedures/general/hand_eye.hdpl. The most important new procedures are:- calibrate_robot_touching_point,
- collect_single_image_calibration_data and calibrate_camera_and_plane_single_image, which allow you to calibrate your camera setup with a single image,
- calibrate_hand_eye_stationary_cam_approx and calibrate_hand_eye_stationary_cam_approx_without_calib_plate,
- obtain_3d_pose_of_match_stationary_cam and obtain_3d_pose_of_match_moving_cam, which allow you to use shape-based 2D matching to get the 3D position of these matches, and
- prepare_poses_and_rectification_data_stationary_cam and prepare_poses_and_rectification_data_moving_cam to prepare the necessary data for the two previous procedures.
The procedure library visualize_object_model_3d.hdvp has been extended with the procedure gen_arrow_object_model_3d, which can be used to create 3D arrows for visualization. - get_data_code_2d_results has been extended for Data Matrix ECC 200 codes by the ResultNames parameters:
- 'quality_isoiec15415_reflectance_margin_module_grades',
- 'quality_isoiec15415_rows',
- 'quality_isoiec15415_cols',
- 'quality_aimdpm_1_2006_reflectance_margin_module_grades',
- 'quality_aimdpm_1_2006_rows', and
- 'quality_aimdpm_1_2006_cols'.
The new HDevelop procedure- procedures/general/dev_display_data_code_2d_print_quality_results.hdvp
The new HDevelop example program- hdevelop/Identification/Data-Code/ecc200_print_quality_modules.hdev
The HDevelop example program- hdevelop/Identification/Data-Code/ecc200_print_quality.hdev
- The HDevelop example program
- hdevelop/System/IO-Devices/adlink-eos_digital_read.hdev
- The HDevelop example program
- hdevelop/System/IO-Devices/adlink-eos_digital_write.hdev
- The HDevelop example program
- hdevelop/System/IO-Devices/adlink-eos_event_based_read.hdev
- The HDevelop example program
- io_integration/hioexample_test.hdev
Bug Fixes
- In the HDevelop example program
- examples/hdevelop/3D-Matching/Surfdace-Based/find_surface_model.hdev
- On some architectures, the HDevelop example program
- hdevelop/Applications/Surface-Inspection/compare_surface_sheet_of_light.hdev
- The HDevelop example program
- hdevelop/Calibration/Hand-Eye/pick_and_place_scara_stationary_cam.hdev
HDevEngine
Bug Fixes
- HDevelop terminated when attempting to connect to an external engine application in SDI mode. This problem has been fixed.
- Deactivated or invalid lines in a procedure could have caused a crash when debugging the procedure within an HDevEngine application. This problem has been fixed.
- In HDevelop code it is possible to split long commands over multiple lines using the line continuation character (backslash). However, a command that was split over more than two lines did not display correctly when debugging it in an external HDevEngine application. This problem has been fixed.
- On Linux, string operations executed in HDevEngine were not thread-safe. This could have led to crashes in very rare cases. This problem has been fixed.
- When executed with JIT-compilation, the HDevelop operator convert_vector_to_tuple sporadically raised a low level error or crashed, if the vector argument of the operator was an expression. This problem has been fixed.
- Setting control vectors as input parameters of a procedure call in HDevEngine created a memory leak. This problem has been fixed.
- HDevelop could have remained in an inconsistent state if procedures containing nested try-catch statements were executed JIT-compiled. This problem has been fixed.
- Procedures may refer to multiple procedures with the same name, either directly via the import statement or indirectly for private library procedures. However, when used In engine applications via HDevProcedure, such procedures did not work correctly. This problem has been fixed.
- It was possible for engine applications to leak large amounts of memory when they were being debugged remotely via HDevelop. This problem has been fixed.
- In HDevEngine applications, trying to execute a procedure JIT-compiled led to a crash if the regarding procedure contained dev_disp_text. This problem has been fixed.
- Exported C / C++ code could have failed to run correctly as a standalone program on macOS 10.12. This problem has been fixed.
- In HDevEngine/.NET, program and procedure paths with special characters were not properly encoded with the system parameter 'filename_encoding' set to 'utf8'. This problem has been fixed. It is now possible to use arbitrary characters in directory names (even those not supported by the local encoding).
HALCON Library
Speedup
- bit_lshift worked incorrectly for 'int4' images in 32-bit environments. This problem has been fixed. The operator is now up to 300% faster for all supported image types.
- sample_object_model_3d did not sample sphere and cylinder primitives as accurately as possible. Additionally, when sampling in mode 'fast_compute_normals', the normal vectors of those primitives would have pointed inward instead of outward. These problems have been fixed. Additionally, sampling spheres is now up to 670% faster, sampling cylinders is up to 8500% faster.
New Functionality
3D
- sample_object_model_3d did not sample sphere and cylinder primitives as accurately as possible. Additionally, when sampling in mode 'fast_compute_normals', the normal vectors of those primitives would have pointed inward instead of outward. These problems have been fixed. Additionally, sampling spheres is now up to 670% faster, sampling cylinders is up to 8500% faster.
- vector_to_pose now uses an algorithm for Method set to 'telecentric_planar' that is slightly more robust.
Calibration
- The operators now raise an exception if used with line scan cameras, which are not supported. Formerly, no exception was raised and thus it was implied that line scan cameras were supported.
- vector_to_pose now uses an algorithm for Method set to 'telecentric_planar' that is slightly more robust.
Data Code
- The data code reader has been extended for Data Matrix ECC 200 by the parameter 'decoding_scheme', which allows to read symbols that use a custom decoding step.
- get_data_code_2d_results now returns grades of -1 if some part of the symbol including the quiet zone is outside the image.
- get_data_code_2d_results has been extended for Data Matrix ECC 200 codes by the ResultNames parameters:
- 'quality_isoiec15415_reflectance_margin_module_grades',
- 'quality_isoiec15415_rows',
- 'quality_isoiec15415_cols',
- 'quality_aimdpm_1_2006_reflectance_margin_module_grades',
- 'quality_aimdpm_1_2006_rows', and
- 'quality_aimdpm_1_2006_cols'.
The new HDevelop procedure- procedures/general/dev_display_data_code_2d_print_quality_results.hdvp
The new HDevelop example program- hdevelop/Identification/Data-Code/ecc200_print_quality_modules.hdev
The HDevelop example program- hdevelop/Identification/Data-Code/ecc200_print_quality.hdev
- For get_data_code_2d_results the determination of the module positions of Data Matrix ECC 200 codes for quality assessment has been improved. This can lead to different grades in relation to previous HALCON versions.
In this context, a new image- datacode/ecc200/ecc200_quality_aimdpm_08.png
- get_data_code_2d_results has been extended by print quality inspection according to ISO/IEC TR 29158. This standard was previously established as AIM DPM-1-2006.
The operator get_data_code_2d_results provides the following additional parameters, which correspond to the respective 'quality_aimdpm_1_2006_*' name:- 'quality_isoiec_tr_29158'
- 'quality_isoiec_tr_29158_labels'
- 'quality_isoiec_tr_29158_values'
- 'quality_isoiec_tr_29158_reflectance_margin_module_grades'
- 'quality_isoiec_tr_29158_rows'
- 'quality_isoiec_tr_29158_cols'
Feature
- gray_features and select_gray now support the feature 'median'.
Graphics
- The drawing objects have been enhanced. Until now, the modifier regions of the drawing objects scaled with the image part, e.g., when the window was zoomed. This was confusing and thus has been changed. Now, the size of the modifiers is fixed.
Region
- The usability of distance_rr_min has been improved. Now, regions with multiple unconnected components can be evaluated as well.
System
- set_system and get_system have been extended with the new parameter 'seed_rand' to set and get the seed used for the random generator in tuple_rand, add_noise_white, add_noise_distribution, gen_random_region, and add_noise_white_contour_xld.
Bug Fixes
3D
- binocular_disparity_ms and binocular_distance_ms sometimes crashed when the operators were executed parallelized and the image size was greater than approximately 9 megapixels. This problem has been fixed.
- binocular_disparity_ms and binocular_distance_ms crashed after running out of memory. This problem has been fixed. Now, the error 6001 ("Not enough memory available") is returned.
- binocular_disparity_ms and binocular_distance_ms sometimes crashed for large images and disparity ranges. This problem has been fixed.
- binocular_disparity_ms and binocular_distance_ms had a restriction on the disparity range. The disparity range could not be larger than 256. This problem has been fixed.
- In rare cases, binocular_distance incorrectly reduced the domain of the result at the lower and upper parts when 'parallelize_operators' was set to 'true' in set_system. This problem has been fixed.
- The execution time of connection_object_model_3d could have varied by a large factor when executed with parallelization enabled, even for identical input. This problem has been fixed.
- During surface-based matching the normals computed from XYZ-mappings, e.g., by the operators create_surface_model and find_surface_model, were not scale invariant. Most notably, if the distance between neighboring points exceeded 1, the normals could have pointed into wrong directions. This problem has been fixed. The normals are now computed in a way that is invariant to the scale of the model and the data. Note that this change affects the compatibility. Read more.
- In rare cases, create_surface_model crashed when called with train_3d_edges enabled. This problem has been fixed.
- In rare cases, find_shape_model_3d returned matches with a Score smaller than MinScore. This problem has been fixed.
- find_shape_model_3d crashed in rare cases if the camera parameters did not match the setup. This problem has been fixed.
- The generic parameters 'max_overlap_dist_abs', 'pose_ref_scoring_dist_abs', '3d_edge_min_amplitude_abs' and 'pose_ref_dist_threshold_abs' of the operators find_surface_model and find_surface_model_image were interpreted incorrectly, leading to an internal value that was by a factor 1000 off. This problem has been fixed.
- get_circle_pose in some cases did not work if the distance of the circle to the camera was smaller than its radius. This problem has been fixed. Note that this change affects the compatibility. Read more.
- pose_average returned wrong quality measure values and the respective documentation was not clear. This problem has been fixed.
- prepare_object_model_3d in rare cases did not close all holes during the triangulation
of the given 3D object model, i.e., if the parameter Purpose was set to
'segmentation' and 'max_area_holes' was used. This problem has been fixed. - project_object_model_3d with the generic parameter 'hidden_surface_removal' set to 'false' could have returned wrong results in rare cases. This problem has been fixed.
- read_object_model_3d returned a wrong error message when a binary format with unsupported data was read. This problem has been fixed. Now, the error message 9541 ("At least one attribute is not supported") is returned.
- In rare cases, especially for planar or cylindrical objects that were created from primitives or synthetic data, refine_surface_model_pose and the internal refinement of find_surface_model moved the model very far away from its original position. This problem has been fixed.
- simplify_object_model_3d did not preserve the orientation of triangles if possible. This problem has been fixed. Please note the influence of the parameter 'avoid_triangle_flips' on the orientation of the resulting triangles.
- triangulate_object_model_3d might have frozen in rare cases when 'greedy_mesh_erosion' >= 1 was set. This problem has been fixed.
- In rare cases, when passing invalid 3D object model handles to union_object_model_3d, exception H_ERR_WIPT1 instead of H_ERR_WIPV1 was raised. This problem has been fixed.
- union_object_model_3d returned an error if one of the input 3D object models was empty. Additionally, attributes that were not present in all input object models were removed. These problems have been fixed. Now, union_object_model_3d combines as many points, faces, lines, and extended attributes as possible. Note that this change affects the compatibility. Read more.
- volume_object_model_3d_relative_to_plane sometimes returned wrong results when a triangle of the 3D object model intersected the plane. This problem has been fixed. Also, the reference manual entry has been clarified and extended.
Bar Code
- find_bar_code crashed in very rare cases when merge_scanlines was enabled. This problem has been fixed.
- get_bar_code_object crashed with the parameter 'scanlines_merged_edges' if find_bar_code has not been called for the model before. This problem has been fixed.
- get_bar_code_result could have returned an invalid value for 'meas_thresh' after the training. This occurred when the bar code could only be decoded with the merged scanline. This problem has been fixed.
- query_bar_code_params and query_data_code_2d_params returned incomplete lists of parameters. Additionally, query_bar_code_params sometimes did not return a tuple but only one parameter when using language interfaces. These problems have been fixed. Now, query_bar_code_params does not support overridden functions anymore. Note that this change affects the compatibility. Read more.
Calibration
- calibrate_cameras in rare cases returned slightly inaccurate calibration results for multi-view setups because the pose of the reference camera was not excluded from the optimization by default. This problem has been fixed.
- find_calib_object in rare cases extracts some marks twice if the resolution of the marks is only slightly above the minimum radius of 10px. This problem is not easily to fix, but now, find_calib_object returns an error in this case.
- get_calib_data returned wrong initial poses when using 'init_pose'. This problem has been fixed.
- The operators
- image_points_to_world_plane,
- image_to_world_plane,
- gen_image_to_world_plane_map, and
- contour_to_world_plane_xld
accepted some invalid input. This problem has been fixed.
Classification
- learn_ndim_norm and learn_ndim_box crashed if the provided regions exceeded the dimensions of the input region. This problem has been fixed.
Compute Device
- After disabling and enabling compute devices, there was a small memory leak when calling operators with automatic operator parallelization. This problem has been fixed.
Data Code
- find_data_code_2d had a memory leak in the QR code reader. This problem has been fixed.
- find_data_code_2d could not handle missing finder patterns of Data Matrix ECC 200 symbols when the first data region row had few dark modules. This problem has been fixed.
- find_data_code_2d returned duplicated results in some cases although 'discard_undecoded_results' was 'true'. This problem has been fixed.
- find_data_code_2d could not find codes without finder pattern, if the parameter 'symbol_size_min' was set very restrictive. This also effected the training. This problem has been fixed.
- The QR code reader might have been very time and memory consuming when there were many circular structures in the image. This problem has been fixed.
- get_data_code_2d_param returned wrong default values of 'version_max' and 'symbol_size_max' for Micro QR Codes. This problem has been fixed.
- get_data_code_2d_results in rare cases could have returned invalid results or crashed when querying print quality grades of Aztec codes. This problem has been fixed.
- get_data_code_2d_results crashed for 'quality_isoiec15415_values', 'quality_aimdpm_1_2006_values', and 'quality_semi_t10_values' when the symbol was near the image border. This problem has been fixed.
- get_data_code_2d_results in rare cases returned the error 6006 ("Tmp-memory management: could not find memory element") when querying quality parameters for QR codes. This problem has been fixed.
- get_data_code_2d_results may have crashed for 'quality_semi_t10' when the detected symbol was near the image border. This problem has been fixed. Note that the determination of the symbol's corners has been improved, which can result in slightly different quality values.
- get_data_code_2d_results in rare cases returned results that were not robust for 'quality_isoiec15415', 'quality_aimdpm_1_2006', and 'quality_semi_t10'. This problem has been fixed.
- get_data_code_2d_results used a wrong contrast value for grading the fixed pattern of Data Matrix ECC 200, QR codes, and Micro QR codes for AIM DPM-1-2006. This problem has been fixed.
- query_bar_code_params and query_data_code_2d_params returned incomplete lists of parameters. Additionally, query_bar_code_params sometimes did not return a tuple but only one parameter when using language interfaces. These problems have been fixed. Now, query_bar_code_params does not support overridden functions anymore. Note that this change affects the compatibility. Read more.
- read_data_code_2d_model and read_sheet_of_light_model returned the error 8725 ("Invalid file format for bar code model"), when the file was corrupt. This problem has been fixed. Now, read_data_code_2d_model returns the error 8867 ("Invalid file format of data code model") and read_sheet_of_light_model returns the error 3786 ("Invalid file format for sheet-of-light model").
- set_data_code_2d_param has been extended by the parameter 'quality_isoiec15415_aperture_size', which allows to specify the aperture size when assessing the quality of a datacode according to ISO/IEC 15415.
File
- Calling set_current_dir for absolute paths caused the .NET API call Directory.GetCurrentDir() to crash. This problem has been fixed for path lengths up to 247 characters.
- The 'File' interface failed to read images stored in the hobj format. This problem has been fixed.
Filter
- For bilateral_filter, the type_list for ImageJoint and ImageBilateral did not contain uint2 and real. This problem has been fixed.
- bilateral_filter and guided_filter crashed if mixed image types were given as input. This problem has been fixed. Now an error message is returned.
- bit_lshift worked incorrectly for 'int4' images in 32-bit environments. This problem has been fixed. The operator is now up to 300% faster for all supported image types.
- mult_image did not correctly multiply byte images for small multiplication factors. This problem has been fixed.
- points_harris_binomial might have crashed in very rare cases. This problem has been fixed.
Graphics
- close_window and disp_obj might have led to a dead lock if called in parallel on two different windows or buffers. This problem has been fixed.
- copy_rectangle and move_rectangle crashed if the rectangle to copy exceeded the dimensions of the source window. This problem has been fixed.
- The 3d_plot always displayed the full image even if an image part has been set with dev_set_part. This problem has been fixed.
- disp_obj saved objects on the graphics_stack even when it was disabled. This problem has been fixed.
- Drawing an image with disp_obj could have caused illegal memory accesses in rare cases. This problem has been fixed. Note that this problem has already been fixed in HALCON 13.0.0.1.
- disp_text and dev_disp_text displayed text if the coordinate tuples were empty. This problem has been fixed and disp_text and dev_disp_text return now without error in this case.
- The callbacks for drawing objects where called with the wrong window handle if attached to visible windows. This problem has been fixed.
- get_mposition and get_mposition_sub_pix did not always report the modifier state. This problem has been fixed.
- query_font, set_font, and get_font did not work correctly with font names containing non-ASCII characters. This problem has been fixed.
- Some drawing objects were not visualized correctly after setting 'line_width' greater than 1 via set_drawing_object_params and then attaching them to a window via attach_drawing_object_to_window. This problem has been fixed.
- set_part did not check the input parameters for buffer windows correctly. This problem has been fixed.
- Oriented drawing objects (rectangle2, ellipse, and ellipse_sector) behaved wrong in the following cases:
- clicking on the marker opposite to the arrow marker caused the drawing object to rotate by 180 degrees, and
- clicking on the corner markers caused the drawing object to rotate the arrow marker to the former position of the corner marker.
- After selecting overlapping drawing objects with a double-click, HALCON windows were not repainted. This problem has been fixed.
Inspection
- apply_texture_inspection_model may have returned undefined results for a non-rectangular domain if the normalization was switched on (set_texture_inspection_model_param (TextureInspectionModel, 'patch_normalization', 'weber')) and when being executed with more than one thread. This problem has been fixed.
- Setting the texture inspection parameter 'levels' to 'auto' via set_texture_inspection_model_param caused a high memory consumption and the training process did not converge. This problem has been fixed. As a workaround, a call of set_texture_inspection_model_param (Model, 'num_levels', 'auto') automatically sets 'levels' to 'auto' correctly.
Image
- full_domain crashed if an image with width or height equal to 0 was passed. This problem has been fixed.
Matching
- create_scaled_shape_model and create_scaled_shape_model_xld could have used uninitialized memory, if the model was using a large part of the image. This might have led to a crash on non-SSE/AVX systems. This problem has been fixed.
- The operators sometimes returned the error 6006 ("Tmp-memory management: Could not find memory element") instead of 8510 ("Number of shape model points too small"). This problem has been fixed.
- In rare cases, when using find_planar_uncalib_deformable_model with the metric 'ignore_part_polarity', different results have been achieved depending on the system setting of 'sse2_enable'. This problem has been fixed.
- The operators
- find_shape_model,
- find_shape_models,
- find_scaled_shape_model,
- find_scaled_shape_models,
- find_aniso_shape_model,
- find_aniso_shape_models,
- find_ncc_model, and
- find_ncc_models
Furthermore, the model search did not find a valid match in rare cases if the model was generated from a negative starting angle to a positive angle and the model to be found was searched only up to the starting angle of the created model. Note that this change affects the compatibility. Read more. - The operators
- find_shape_model,
- find_shape_models,
- find_scaled_shape_model,
- find_scaled_shape_models,
- find_aniso_shape_model,
- find_aniso_shape_models, and
- find_component_model
- The algorithms used for the operators
- find_shape_model,
- find_shape_models,
- find_scaled_shape_model,
- find_scaled_shape_models,
- find_aniso_shape_model,
- find_aniso_shape_models,
- find_local_deformable_model,
- find_planar_calib_deformable_model,
- find_planar_uncalib_deformable_model,
- find_ncc_model,
- find_ncc_models,
- find_component_model, and
- find_shape_model_3d
- The generic parameters 'max_overlap_dist_abs', 'pose_ref_scoring_dist_abs', '3d_edge_min_amplitude_abs' and 'pose_ref_dist_threshold_abs' of the operators find_surface_model and find_surface_model_image were interpreted incorrectly, leading to an internal value that was by a factor 1000 off. This problem has been fixed.
- In rare cases, especially for planar or cylindrical objects that were created from primitives or synthetic data, refine_surface_model_pose and the internal refinement of find_surface_model moved the model very far away from its original position. This problem has been fixed.
Measure
- get_metrology_object_measures crashed if an integer or float value was passed to the parameter Transition. This problem has been fixed.
Miscellaneous
- gen_grid_rectification_map could have crashed in very rare cases. This problem has been fixed.
- get_circle_pose crashed if an integer or float value was passed to the parameter OutputType. This problem has been fixed.
- gray_histo_range crashed for real images with a very large value range. This problem has been fixed.
- inpainting_texture in rare cases could have returned wrong results. This problem has been fixed.
OCR
- find_text in rare cases crashed for text models with dot print text (set via set_text_model_param (TextModel, 'dot_print', 'true')) and small image sizes. This problem has been fixed.
- find_text in rare cases crashed or returned wrong results for text models with dot print text (set via set_text_model_param (TextModel, 'dot_print', 'true')) and certain text line structures (set via set_text_model_param (TextModel, 'text_line_structure', LineStruct)). This problem has been fixed. The problem mainly occured when a character region was part of multiple lines with the given structure.
- write_ocr_trainf and write_ocr_trainf_image did not close the train file, if an error due to an empty character region was returned. This problem has been fixed.
Parallelization
- The automatic operator parallelization (AOP) has had a memory leak on channel level for operators that support AOP on tuple level as well as on channel level and have more than one iconic input parameter. Operators that are concerned are This problem has been fixed.
- close_window and disp_obj might have led to a dead lock if called in parallel on two different windows or buffers. This problem has been fixed.
- slide_image ignored the 'width' and 'height' system properties. This problem has been fixed.
- After disabling and enabling compute devices, there was a small memory leak when calling operators with automatic operator parallelization. This problem has been fixed.
Region
- zoom_region could have failed with the error 3513 ("Internal error: number of chords too big for num_max") when zooming a very sparse region down. This problem has been fixed.
Segmentation
- The border treatment of the SSE41 implementation of dyn_threshold for uint2 images and the parameter LightDark = 'dark' was not correct. This problem has been fixed.
- local_min and local_max could have returned wrong results for images with a width of 1. This problem has been fixed.
System
- If an operator emitted an extended error message, HDevelop crashed after closing HDevelop. This problem has been fixed.
- Setting the 'help_dir' via set_system had no effect. This problem has been fixed.
Tuple
- tuple_replace crashed in rare cases when the same index was replaced more than once. It also caused a memory leak in other rare cases. These problems have been fixed.
- tuple_string crashed when called with a large field width. The HDevelop language construct $ was affected as well. This problem has been fixed.
XLD
- gen_nurbs_interp did not work correctly if duplicated points were passed to the operator. This problem has been fixed.
- The operators in rare cases returned wrong results if the input contours contained duplicated points. This problem has been fixed.
- intersection_closed_contours_xld led to a crash for input contours containing only 1 point. This problem has been fixed.
- smallest_rectangle2_xld returned 0 as Length in rare cases, when the XLD contained straight segments. This problem has been fixed.
Procedures
Functionality
- The procedure gen_camera_setup_object_model_3d has been improved. The parameters ConeLength and CameraSize can now be set to 'auto'. Then, these values are estimated automatically based on the lines of sight of the cameras.
- HALCON has been extended with a set of new examples and procedures to facilitate the hand-eye calibration for a setup with a stationary camera and pick-and-place applications for setups both with a stationary camera and a moving camera (attached to the robot arm):
The HDevelop example program- hdevelop/Calibration/Hand-Eye/calibrate_hand_eye_stationary_cam_approx.hdev
The HDevelop example programs- hdevelop/Applications/Robot-Vision/pick_and_place_with_2d_matching_stationary_cam.hdev and
- hdevelop/Applications/Robot-Vision/pick_and_place_with_2d_matching_moving_cam.hdev
These example programs use new procedures, which are available in the procedure library procedures/general/hand_eye.hdpl. The most important new procedures are:- calibrate_robot_touching_point,
- collect_single_image_calibration_data and calibrate_camera_and_plane_single_image, which allow you to calibrate your camera setup with a single image,
- calibrate_hand_eye_stationary_cam_approx and calibrate_hand_eye_stationary_cam_approx_without_calib_plate,
- obtain_3d_pose_of_match_stationary_cam and obtain_3d_pose_of_match_moving_cam, which allow you to use shape-based 2D matching to get the 3D position of these matches, and
- prepare_poses_and_rectification_data_stationary_cam and prepare_poses_and_rectification_data_moving_cam to prepare the necessary data for the two previous procedures.
The procedure library visualize_object_model_3d.hdvp has been extended with the procedure gen_arrow_object_model_3d, which can be used to create 3D arrows for visualization. - get_data_code_2d_results has been extended for Data Matrix ECC 200 codes by the ResultNames parameters:
- 'quality_isoiec15415_reflectance_margin_module_grades',
- 'quality_isoiec15415_rows',
- 'quality_isoiec15415_cols',
- 'quality_aimdpm_1_2006_reflectance_margin_module_grades',
- 'quality_aimdpm_1_2006_rows', and
- 'quality_aimdpm_1_2006_cols'.
The new HDevelop procedure- procedures/general/dev_display_data_code_2d_print_quality_results.hdvp
The new HDevelop example program- hdevelop/Identification/Data-Code/ecc200_print_quality_modules.hdev
The HDevelop example program- hdevelop/Identification/Data-Code/ecc200_print_quality.hdev
Bug Fixes
- The HDevelop standard procedure scale_image_range did not support image arrays. This problem has been fixed.
- The value list of the parameters Row and Column for disp_message did not contain predefined values, such as 'top' and 'bottom'. Furthermore, some parts of the documentation were not adapted to the predefined values. These problems have been fixed.
HALCON/C++
Bug Fixes
- When copying a C++ HTuple created using one of the array constructors with a size of zero or one, HALCON could have crashed when the HTuples were freed. This problem has been fixed.
- Setting control vectors as input parameters of a procedure call in HDevEngine created a memory leak. This problem has been fixed.
- There was a memory leak in the methods HTupleVector::Concat and HObjectVector::Concat. This problem has been fixed.
HALCON/.NET
Functionality
- The HSmartWindowControlWPF has been improved. WindowSize and HImagePart were not WPF compliant. Now, these properties support TwoWay binding. Additionally, the new property HDisplayCurrentObject has been added to display any HALCON object directly through binding as well. To demonstrate the binding, a new C# example BindingWPF has been added.
- The HSmartWindowControlWPF property now supports a further parameter HZoomFactor. If the HZoomContent property is active, the HZoomFactor parameter has a direct impact on the behavior of the HSmartWindowControlWPF zoom option and allows to influence the step size.
- The HSmartWindowControl and HSmartWindowControlWPF now provide the event HErrorNotify. This event allows the user to react to errors that take place internally within the control, but can have external causes, like for example an unplugged dongle or a missing license file. The Programmer's Guide has been adapted accordingly.
- The HALCON Variable Inspect extension for Visual Studio now supports also Visual Basic .net.
Bug Fixes
- The Programmer's Guide incorrectly stated that .NET client profiles are supported in HALCON 13.0. This problem has been fixed.
- Passing empty strings to HALCON operators via the HALCON/.NET language interface caused an error when the system parameter 'filename_encoding' was set to 'utf8'. This includes that it was not possible to call DevOpenWindow via HDevEngine with HDevOpMultiWindowImpl, since it internally passes an empty string to the machine parameter of OpenWindow. This problem has been fixed.
- When embedding a HSmartWindowControlWPF in a Grid with no minimal nor maximal sizes specified, like for example this one:
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>,
the HSmartWindowControl WPF could have failed to initialize. This problem has been fixed. - HSmartWindowControl.HImagePart returned an incorrect width and height. This problem has been fixed.
- When overloading the Loaded event of HSmartWindowControlWPF, the property HalconID returned -1 for an uninitialized window. In contrast to that, the HalconWindow property returned an initialized window. This problem has been fixed. Both cases now behave equally, i.e., when querying the ID property, the handle of the new window is returned.
- If the HSmartWindowControl was used inside Visual Studio together with a HALCON x64 build environment, a BadImageFormatException was thrown. The HSmartWindowControl was not displayed. This problem has been fixed.
HALCON/COM
Bug Fixes
- Programs using the HALCON/COM interface could have hung when exiting. This problem has been fixed.
Language Interface Example Programs
Bug Fixes
- The HDevEngine example exec_programs_mt could have crashed when it was started with a non-existent HDevelop script. This problem has been fixed.
- The Visual Studio example project examples/cpp/mfc/MatchingCOM/vs2005/Matching.sln had no 64-bit platform target. This problem has been fixed.
- The use_debug_server example for HDevEngine was not included in the xcode project for macOS. This problem has been fixed.
- Exported C / C++ code could have failed to run correctly as a standalone program on macOS 10.12. This problem has been fixed.
HALCON Variable Inspect Extension for Visual Studio
Functionality
- The HALCON Variable Inspect extension for Visual Studio now supplies a way to release the retrieved data via clicking on the tool bar button clear data window. This can be used in case of low memory to free the already retrieved data.
- The usability of the HALCON Variable Inspect Extension for Visual Studio has been improved. Instead of displaying all local variables as default, now the watch list is displayed. This improves the performance especially if many HALCON variables are used in the current scope.
- The HALCON operator reference can now be opened via the HALCON Variable Inspect extension for Visual Studio using the context menu entry HALCON Help or the shortcut ALT+H.
- The Programmer's Guide has been updated regarding the changes in the HALCON Variable Inspect extension for Visual Studio.
- The HALCON Variable Inspect extension for Visual Studio now stores settings made by the user. These are the used layout direction, the option "Only display last iconic object", and the selected tab Watch or Locals.
- The HALCON Variable Inspect extension for Visual Studio now retrieves .Net HTuple faster, no matter which HTuple type is retrieved.
- The HALCON Variable Inspect extension for Visual Studio now supports the Visual Studio versions 2013, 2015 and 2017.
- The GUI of the HALCON Variable Inspect extension for Visual Studio has been updated according to the new speed up. In particular, no longer needed table entries have been removed and other entries have been optimized.
- The HALCON Variable Inspect extension for Visual Studio now supports also Visual Basic .net.
- A great speed up has been achieved inside the HALCON Variable Inspect extension for Visual Studio for retrieving and visualizing iconic HALCON objects.
Bug Fixes
- If the HALCON Variable Inspect extension for Visual Studio was closed at the start of a debug session and only opened after execution had already halted (e.g., after a breakpoint), its GUI was disabled until a further execution step was executed (e.g., by pressing F10). This problem has been fixed.
- In the HALCON Variable Inspect extension for Visual Studio, removing many variables from the watch was very slow. This problem has been fixed.
- Displaying an already retrieved HALCON variable in the HALCON Variable Inspect extension for Visual Studio was very time consuming. This problem has been fixed.
- In special cases, the HALCON Variable Inspect Extension for Visual Studio erroneously reported a licensing error. The same error could have occurred in case of user-specific HALCON 32-bit applications. This problem has been fixed. Note that this problem has already been fixed in HALCON 13.0.0.1.
- The HALCON Variable Inspect extension for Visual Studio displayed gray values in the status bar, even on areas where the image domain has not been set. This problem has been fixed. Now it displays only gray values, when the domain of the image is defined at the mouse position. In general, the gray values of the first image on the stack are displayed.
- The HALCON Variable Inspect extension for Visual Studio did not correctly display polygons, since the x and y values of the points were swapped. This problem has been fixed.
- The HALCON Variable Inspect extension for Visual Studio could not be used with the HALCON/C++ interface. The attempt to retrieve data always failed. The Status "System.NullReferenceException: Object reference not set to an instance of an object" was displayed. This problem has been fixed.
- In the HALCON Variable Inspect extension for Visual Studio, the button "Fit image into graphics window" after scrolling and zooming a none image object did not work as expected. This problem has been fixed.
- Within the HALCON Variable Inspect extension for Visual Studio, to Minimize and maximize an embedded HSmartWindowControlWPF led to an exception. When maximizing the window, a render function with invalid parameters was called. This problem has been fixed.
- The HALCON Variable Inspect extension for Visual Studio sometimes crashed while inspecting variables in the Watch tab. This problem has been fixed.
- With the HALCON Variable Inspect extension for Visual Studio, HALCON control values could not be inspected if the Watch window of Visual Studio has been set to Hexadecimal display. 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
- GenApi has been updated to version 3.0.2, which is required by the GenICamTL, GigEVision, and USB3Vision image acquisition interfaces.
Miscellaneous
- The 'File' interface failed to read images stored in the hobj format. This problem has been fixed.
- With the redesign of the HALCON website the general installation instructions for image acquisition and digital I/O interfaces were removed. To compensate this, installation instructions were added to the reference documentation of all the image acquisition and digital I/O interfaces.
Image Acquisition Example Programs
Modified Image Acquisition Example Programs
- The license of the image and I/O acquisition template source code has been adapted so that it can be redistributed now.
New Image Acquisition Example Programs
The following HDevelop example programs have been added:
- hdevelop/Image/Acquisition/ensenso-nxlib_workspace_calibration.hdev
- hdevelop/Image/Acquisition/genicamtl_basler_tof_objectmodel3d.hdev
- hdevelop/Image/Acquisition/gigevision_2cameras.hdev
- hdevelop/Image/Acquisition/gigevision_do_abort_grab.hdev
- hdevelop/Image/Acquisition/gigevision_multiframe.hdev
- hdevelop/Image/Acquisition/o3d3xx_temporary_parameters.hdev
- hdevelop/Image/Acquisition/ueye_memory_mode.hdev
- hdevelop/Image/Acquisition/ueye_persistent_memory.hdev
- hdevelop/Image/Acquisition/ueye_sequencer_mode.hdev
- hdevelop/Image/Acquisition/ueye_vertical_roi_merge_mode.hdev
- hdevelop/Image/Acquisition/usb3vision_2cameras.hdev
- hdevelop/Image/Acquisition/usb3vision_do_abort_grab.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
- With the redesign of the HALCON website the general installation instructions for image acquisition and digital I/O interfaces were removed. To compensate this, installation instructions were added to the reference documentation of all the image acquisition and digital I/O interfaces.
- The example I/O interface included with the I/O interface template could not be built for HALCON 13.0. This problem has been fixed.
Digital I/0 Example Programs
- The license of the image and I/O acquisition template source code has been adapted so that it can be redistributed now.
- The I/O integration interface example hioExample was missing. In particular, the following files were missing: CIOEvent.cpp, CIOEvent.h, CIOVirtualDAQ.cpp, CIOVirtualDAQ.h, CIOVirtual.h, hioExample.cpp, hioExample_param.h, and hioExample_param.in. Furthermore, the complete directory io_integration/doc was missing. These problems have been fixed.
- The io_integration examples failed to build on macOS because HMessageQueue.h could not be included. This problem has been fixed.
- HALCON has been extended by a new HDevelop example
- io_integration/hioexample_test.hdev
Documentation
Programmer's Manuals
- The Programmer's Guide has been updated to clarify that JIT-compiled procedures are already being compiled at the moment a corresponding HDevProcedureCall or HDevProgramCall instance is created.
- The Programmer's Guide erroneously stated that you can reset the external procedure paths by passing an empty string to SetProcedurePath. This problem has been fixed.
- The Programmer's Guide incorrectly stated that .NET client profiles are supported in HALCON 13.0. This problem has been fixed.
- The Programmer's Manual has been extended by the information that HALCON uses spinlocks by default, and what problems can thus occur when using real-time scheduling or more threads than available CPUs.
- The Programmer's Guide has been extended by some general hints for developing graphical applications.
- Since HALCON 12.0.2, the mechanism to terminate the HALCON library has been changed by introducing a new function FinalizeHALCONLibrary(). Now, the correct way to close all HALCON threads and free resources is to call the function FinalizeHALCONLibrary() before unloading halcon.dll. The Programmer's Guide missed this information. This problem has been fixed.
- The Programmer's Guide has been updated regarding the changes in the HALCON Variable Inspect extension for Visual Studio.
- The HSmartWindowControl and HSmartWindowControlWPF now provide the event HErrorNotify. This event allows the user to react to errors that take place internally within the control, but can have external causes, like for example an unplugged dongle or a missing license file. The Programmer's Guide has been adapted accordingly.
- The list of error codes in the Extension Package Programmer's Manual was missing some error messages regarding license errors. This problem has been fixed.
Reference Manual
- The SemType of the output parameter Angle of the operators angle_ll and angle_lx was real when it should have been angle.rad. This problem has been fixed.
- The reference manual entry of apply_metrology_model has been slightly enhanced to clarify that for fitting a second instance of the metrology object no edge positions are used that were already used for the fitting of the first instance.
- The reference manual entry of find_data_code_2d contained a link to a wrong operator. This problem has 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.
- In the reference manual entry of find_surface_model, the description of the settings 'fast' and 'mls' of the parameter 'scene_normal_computation' has been improved. In the 'fast' mode, if the 3D scene already contains normals, these are used. In contrast, in the 'mls' mode, the normals of the sampled scene are computed anew, regardless whether it already contains normals or not.
- In the reference manual entry of get_data_code_2d_results, it was incorrectly described that the parameter 'decode' in 'quality_isoiec15415' always takes the grade 4, meaning that the code could be decoded. Actually, the decode quality is graded 4 when the code could be decoded according to the reference decode algorithm defined in the standard, and 0 otherwise. This problem has been fixed. Note that HALCON's decode algorithm differs from the reference decode algorithm. Thus, in many cases HALCON can decode the symbol although the decode grade according to the standard is 0.
- Since HALCON 13.0, get_font_extents and get_string_extents return floating point precise values. However, the output parameters still had the semantic type "integer". This problem has been fixed.
- The reference manual entry of get_system did not mention in which unit the values for 'temporary_mem_reservoir_block_sizes' and 'tsp_temporary_mem_cache_block_sizes' are given (bytes). This problem has been fixed.
- The reference manual entry of gray_projections now describes the special case when there are no region points available for the calculation of particular projections.
- The reference manual entry of lines_gauss has been extended by a short explanation of the 'contrast' attribute.
- The reference manual entry of paint_xld has been improved. It was not clear enough what 'touching segments' meant. Now, it is described more clearly that segments that are very close (lying in neighboring pixels) do not work correctly with this operator, and that you can influence the behavior with the set_system parameter 'neighborhood'. Additionally, the parameter description of 'neighborhood' in the manual reference entry of set_system has been extended with an image explaining the two settings.
- In the English and Japanese reference manual entries of points_harris, the Attention text was not complete. This problem has been fixed.
- The reference manual entries of set_color and dev_set_color have been extended with a color table to simplify the selection of transparent colors.
- The code example in the reference manual entry of set_font has not been adapted to the new font notation introduced with HALCON 13.0. This problem has been fixed.
- Since HALCON 13, using the set_system parameter 'flush_graphic' is no longer recommended as it might lead to unexpected results. Instead, it is recommended to set the parameter 'flush' of set_window_param to 'false' and then call flush_buffer to transfer the buffer to the graphics window. The reference manual entry of set_system has been adapted accordingly.
- The reference manual entry of tuple_split stated that the examined strings are split into the substrings between the separators. This was not quite correct. Actually, it splits the strings into the substrings divided by the separators. This problem has been fixed.
- The reference manual entry of write_object_model_3d has been improved to state more clearly which attributes could be stored in the *.obj file format using HALCON. In particular, HALCON supports the writing of 3D points, polygons, normals, and triangles (which are stored as polygons).
- The documentation of descriptor-based matching has been improved. The documentation was inconsistent regarding the planarity of the objects that can be matched. Now, both the reference manual and the Solution Guide Matching explain that the part of the object that is visible in the image when creating the descriptor-based matching model needs to be planar.
Solution Guides
- The documentation of descriptor-based matching has been improved. The documentation was inconsistent regarding the planarity of the objects that can be matched. Now, both the reference manual and the Solution Guide Matching explain that the part of the object that is visible in the image when creating the descriptor-based matching model needs to be planar.
User Guides
- The Installation Guide has been extended with information regarding restrictions related to CodeMeter dongles and the CodeMeter Runtime version. Actually, if you are using a CodeMeter dongle and CodeMeter Runtime is running, CodeMeter Runtime needs to be at least version 5.00. Otherwise, the dongle is not recognized correctly and HALCON throws an error regarding the license file.
- The chapter "Programming HDevelop" in the HDevelop User's Guide has been slightly extended to show how to explicitly open graphics windows in the program.
- In the documentation, now also Windows 8.1 is listed as supported platform.
Supported Operating Systems
Windows
HALCON 13.0.1 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 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 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.1 has been compiled for the following Linux platform versions:
- x64-linux platform version for Linux x86_64, Kernel 3.6 or higher, libc.so.6 (GLIBC_2.17 or higher), libstdc++.so.6 (GLIBCXX_3.4.15 or higher), on Intel 64 or AMD64 processors
- armv7a-linux platform version for Linux armv7a, Kernel with hidraw support, hard-float ABI, glibc 2.17 or higher, libstdc++.so 6.0.18, on 32-bit systems
Please refer to the Installation Guide for detailed system requirements corresponding to the different Application Binary Interfaces.
macOS
HALCON 13.0.1 has been compiled for macOS in the following platform version:
- x64-macosx platform version for OS X 10.10 or higher on Intel 64.
Miscellaneous
Installation
- The profiles generated by the Linux installer when installing to a relative path did not set the environment variables correctly. This problem has been fixed.
- The I/O integration interface example hioExample was missing. In particular, the following files were missing: CIOEvent.cpp, CIOEvent.h, CIOVirtualDAQ.cpp, CIOVirtualDAQ.h, CIOVirtual.h, hioExample.cpp, hioExample_param.h, and hioExample_param.in. Furthermore, the complete directory io_integration/doc was missing. These problems have been fixed.
- On macOS, the two header files HMessageQueue.h and HObjectModel3D.h were missing. This problem has been fixed.
- After uninstalling HALCON, a previous active version was not restored. This problem has been fixed. Now, the path and the COM library of the previous active version are restored again.
- After uninstalling HALCON, the path of a previous active version was not restored correctly. The HALCON entries in the path environment variable were not separated by semicolons. This problem has been fixed.
- HALCON is now also available for ARM-based platforms. I.e., the Linux installer, which can be downloaded as usual from the MVTec website, has been extended by the option to additionally install the components necessary for ARM-based platforms. These components include:
- HALCON libraries including HDevEngine,
- two example programs for C++ and HDevEngine,
- image acquisition interfaces (Video4Linux2, File, GenICamTL, GigEVision), and
- a tar-file for the installation of the runtime files on an ARM-based platform.
- For the Linux installation, the requirement for LSB compliance has been removed.
Licensing
- When encountering an empty license file, HALCON could have crashed. This problem has been fixed.
- If a license file started with an UTF-8 byte order marker, HALCON ignored the first license entry. This problem has been fixed.
- The Installation Guide has been extended with information regarding restrictions related to CodeMeter dongles and the CodeMeter Runtime version. Actually, if you are using a CodeMeter dongle and CodeMeter Runtime is running, CodeMeter Runtime needs to be at least version 5.00. Otherwise, the dongle is not recognized correctly and HALCON throws an error regarding the license file.
- In rare cases HALCON rejected certain valid MAC addresses for licensing. This problem has been fixed.
- When using dongle licenses and starting HALCON processes simultaneously, some processes might have exited with an license error on Windows platforms. This problem has been fixed.
- On macOS, HALCON could not correctly detect CodeMeter dongles if CodeMeter Runtime was installed. This problem has been fixed.
- When using a dongle for licensing, HALCON now regularly checks if the dongle is still available.
- The list of error codes in the Extension Package Programmer's Manual was missing some error messages regarding license errors. This problem has been fixed.
Various
- The HALCON compiler hcomp did not always write all warning and error messages to stderr. Additionally, on Windows, all output was written to stdout instead of stderr. These problems have been fixed.
Errata Release Notes of HALCON 13.0
- The release notes of HALCON 13.0 contained an incomplete note. In particular, the release note describing the complete overhauling of the visualization missed the information that the font handling can significantly differ between HALCON 13.0 and older HALCON versions, because the new visualization is based on a different API.
- The release notes of HALCON 13.0 contained an incorrect note. When describing the complete overhauling of the visualization and thus introducing the new window controls HSmartWindowControl and HSmartWindowControlWPF, occasionally a wrong name of a control was used (HWindowControl instead of HSmartWindowControl) and additionally wrong property names were used. In particular,
- instead of the correct property names HMoveContent and HZoomContent the names HAutomaticMove and HAutomaticScale were used for switching off and on the drag or zoom behavior from the designer,
- instead of the correct property name HZoomContent the name HNaturalZooming was used for changing the zoom direction, and
- instead of the correct property name HDoubleClickToFitContent, the name HResetPart was used for changing the behavior on a double-click.
Release Notes of Previous HALCON Versions
Links to Major New Features of Previous HALCON Versions
The major new features of HALCON 13.0.1 are described with respect to HALCON 13.0. Follow the links below to read about major new features of previous HALCON versions.
Links to Detailed Description of Changes in Previous HALCON Versions
The changes in HALCON 13.0.1 are described with respect to HALCON 13.0. Follow the links below to read about changes in previous HALCON versions.