The changes in HALCON 13.0.3 are described with respect to HALCON 13.0.2.
HDevelop
New Functionality
GUI
- HDevelops Program Window icons like program counter and break points now adjust their size depending on the chosen font size.
IDE
- In the Program Window, syntax errors and undefined variables were underlined with a dotted line that was easily overlooked by users. Now, these errors are highlighted with a wavy underline.
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
- HDevelop now warns the user if code containing invalid lines is exported from the command line. Depending on the graphics capabilities of the used system, either a message box pops up or a message is written to stdout. If the option -no_msg_box is set, the message is only written to stdout and HDevelop returns -1. This is useful for a command line export via scripts, which can use the return value to catch an erroneous code export.
- The export of programs and procedures has been improved to facilitate the work with, e.g., version control systems. Now, the exported external procedures are always written in lexicographical order (case insensitive) to the output files.
Bug Fixes
Assistants
- The Image Acquisition Assistant could have hung on Linux systems after the ‘Connect’ button had been pressed. This problem has been fixed.
- In rare cases, the operator find_text and the OCR Assistant caused a low level error regarding still allocated temporary memory blocks. This problem has been fixed.
GUI
- HDevelop’s Function Inspect Window sometimes displayed erroneous labels on its x-axis. This problem has been fixed.
- The tab order in the dialog box ‘Bounds’ of the Function Inspect Window was unintuitive. This problem has been fixed.
- The 3D object model inspection window showed at most 10 extended attributes per 3D object model. If the 3D object model contained more than 10 extended attributes, the names and types of only the first 10 were shown. This problem has been fixed. The 3D object model inspection window now shows the names and types of all extended attributes.
- HDevelop’s auto completion did not suggest any entries for ‘vector’ in the global variable declaration. This problem has been fixed.
- HDevelop could have crashed during execution of an HDevelop program, when switching between the “All” tab and the “Global” tab of the Variable Window. Sometimes the Variable Window did not display all variables when switching from the “Auto” tab to the “All” tab. These problems have been fixed.
- Under certain conditions HDevelop’s Training File Browser crashed when loading a training file for (at least) the second time. This problem has been fixed.
- Using the magnify mode in the HDevelop Graphics Window could have caused a crash on some systems. This problem has been fixed.
IDE
- 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. Note that this change affects the compatibility.
- Interlacing two block statements in HDevelop (like for, while, endfor, endwhile) usually causes a syntax error. If one of the two blocks is actually deactivated (like * for, while, * endfor, endwhile) it must not affect the second one, and, therefore, no syntax error must occur. This, however, happened. This problem has been fixed.
- The auto completion for dev_inspect_ctrl suggested too less variables. This problem has been fixed.
- HDevelop could have crashed in rare cases when inserting very long program code lines. This problem has been fixed.
- If the program counter was on the last line of an if-block in an if–else-statement or the last line of a try-block in a try–catch statement, and that line was removed or deactivated, the program counter would have moved to the following else– or catch-block even though these should not normally be executed. This problem has been fixed. Now, the program counter moves past those blocks.
- Undo did not work correctly after renaming a procedure parameter via the Edit Procedure Interfaces dialog when the new parameter name was already used by a local variable in the procedure. This problem has been fixed. Additionally, HDevelop highlights the edit field of the parameter when a name conflict with a local variable exists.
- Until now, when a control variable ceased to exist, all open Variable Inspect Windows, which displayed that variable, were closed, regardless whether a Variable Inspect Window also displayed other (still valid) variables. This problem has been fixed. Now, the Variable Inspect Windows are kept open as long as they display at least one valid variable, and only the vanished variables are removed.
HDevelop Language
- HDevelop raised a signal 11 while uninitialized vector objects have been accessed. This problem has been fixed.
Procedures
- In rare cases, calls to imported procedures appeared as valid code lines although they had too many parameters. This problem has been fixed.
- The copy-and-paste of local procedures between different HDevelop instances did not work if there was an existing local procedure at the destination with matching signature and name. This problem has been fixed.
- Encrypting large HDevelop program files took a lot of time during which the user interface was not responsive. This problem has been fixed.
- There were several problems with JIT-compiled procedures which called other procedures: After removing the path to the called procedure, HDevelop could have crashed. In addition, procedure calls within a JIT-compiled procedure were not properly resolved to other procedures after adding a new procedure path. These problems have been fixed.
- When duplicating procedures using library procedures it sometimes happened that a referenced library procedure turned into an unresolved procedure in some places whereas in some other places the library procedure was still referenced correctly. This problem has been fixed. Now, the library procedure stays resolved correctly in all places.
- 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. Note that this change affects the compatibility.
- Procedures with calls to non-JIT-compiled procedures could not be executed JIT-compiled, even if the calls to such procedures have been deactivated. This problem has been fixed.
- In rare cases HDevelop corrupted code lines when pasting the bodies of copied procedures. This problem has been fixed.
- Invalid code lines were not displayed with their actual text in the tab cards ‘Invalid Lines’, ‘Find Results’, ‘Breakpoints’, and ‘Bookmarks’ of the Quick Navigation Window. This problem has been fixed.
- In rare cases, HDevelop crashed when the user deactivated a user-defined procedure directory. This problem has been fixed.
- Library procedures that were both explicitly opened and available via a procedure path disappeared completely when the procedure path was removed (though they should have stayed available for editing). This problem has been fixed.
- HDevelop sometimes didn’t resolve library procedures when loading. This problem has been fixed.
- Attempting to load corrupted procedures of a certain type crashed HDevelop. This problem has been fixed.
- In rare cases, HDevelop corrupted code lines when pasting the bodies of copied procedures. This problem has been fixed.
- When the protection status of programs or procedure libraries, which were protected in the old protection format as a whole, was modified, HDevelop popped up a warning about the protection format change for each procedure in the affected file. This problem has been fixed. Now, only one message per program/library is displayed. Note however, that for local or library procedures, which are protected independently, HDevelop still displays a warning for each modified procedure.
Code Export
- Exporting an external procedure via command line with the options -convert -no_export_of_referred_procs yielded different results than the export via the GUI with comparable settings. This problem has been fixed.
- HDevelop’s C code export sometimes terminated prematurely. This might have happened when a HALCON operator or procedure call was exported that used a global variable as an output control parameter. This problem has been fixed.
- HDevelop’s .NET code export erroneously generated a line that called .Dispose on the getter function of the global variable if a value was assigned to a global variable. This problem has been fixed.
- The C# export of an assignment from empty vector literal to iconic vector variable produced incorrect code. This problem has been fixed.
- Exporting all procedures of a library could have led to duplicate procedures in the exported code. This problem has been fixed.
Miscellaneous
- HDevelop crashed while dev_open_window has been called and ran into an out of memory error. This problem has been fixed.
- HDevelop sometimes crashed when running JIT-compiled. This happened when the return value of an operator or procedure was stored directly into a vector element, but the operator or function actually returned nothing. This problem has been fixed.
- The Image Acquisition Assistant could have hung on Linux systems after the ‘Connect’ button had been pressed. This problem has been fixed.
- HDevelop could have crashed when dev_get_system threw an error in a JIT-compiled procedure after setting ~give_error. This problem has been fixed.
- Using dev_open_window resulted in a misrepresentation of the Graphics Window. This problem has been fixed.
- Calling dev_clear_obj on a global variable can cause a crash with JIT execution. Procedures containing such a call will now be executed without JIT compilation. If this affects the performance of your scripts, please move time-critical calculations into a separate procedure.
- On rare occasions, deactivating a for/while loop crashed HDevelop. This problem has been fixed.
HDevelop Example Programs
Bug Fixes
- The example program hdevelop/Applications/Surface-Inspection/check_for_holes_sheet_of_light.hdev used camera parameters that did not correspond to a real sheet-of-light setup. This problem has been fixed.
- The HDevelop example program hdevelop/System/Parameters/query_system_parameters.hdev did not work correctly on machines without OpenGL installed. This problem has been fixed.
HDevEngine
Bug Fixes
- On Linux and macOS, HDevEngine did not follow symbolic links when looking for procedure libraries. This problem has been fixed.
- Attempting to start the debug server on a platform without HDevEngine debugging support returned the error text “unknown user extension” instead of the intended message “feature not implemented”. 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.
- During the initialization of HDevEngine, it might have happened that a small memory leak occured (about 120kB). This problem has been fixed.
- Using Reset() with an HDevProgramCall executed in a thread led to a deadlock. This problem has been fixed.
- Loading and destroying instances of HDevProcedure and HDevProcedureCall was relatively slow. Note that this problem has already been fixed in HALCON 13.0.2.2.
- HDevelop sometimes crashed when running JIT-compiled. This happened when the return value of an operator or procedure was stored directly into a vector element, but the operator or function actually returned nothing. This problem has been fixed.
- In rare circumstances, it was possible for HDevEngine threads to run without proper error handling so that an error encountered during script execution could have led to an application crash instead of raising an HDevException. This problem has been fixed.
- Not assigned entries of iconic vectors contained uninitialized iconic objects, instead of empty iconic objects. This problem has been fixed.
- Creating an HDevProcedure instance from a local procedure in an HDevProgram did not work when that local procedure referenced other local procedures. This problem has been fixed.
HALCON Library
Speedup
- find_shape_model, find_shape_models, find_scaled_shape_model, find_scaled_shape_models, find_aniso_shape_model and find_aniso_shape_models are now faster on machines with many cores (estimated more than 8 cores), especially for matching models with larger rotation ranges and/or scale ranges.
find_local_deformable_model, find_planar_uncalib_deformable_model and find_planar_calib_deformable_model are now faster on machines with more than one core. - gen_image_interleaved is now parallelized on internal data level for all supported image types and color formats. The achievable speedup is dependent on the number of available threads and the image size.
gen_image_interleaved has been accelerated further for all color formats of type ‘byte’ and for color format = ‘rgb’ and ‘bgr’ for images of type ‘uint2’ on processors that support SSSE3 or SSE41, respectively. In particular, the following speedups can be achieved:
Image Size/Type | Color Format | Instruction Set | Speedup without Parallelization and SIMD | Speedup with 4-Thread Parallelization | Speedup with 8-Thread Parallelization | Speedup with 4-Thread Parallelization and SIMD |
800×600/byte | ‘rgb555’ ‘bgr555’ | SSSE3 | 170% | 58% | 100% | 250% |
‘rgb5551’ ‘bgr5551’ | SSSE3 | 155% | 58% | 100% | 250% | |
‘rgb565’ ‘bgr565’ | SSSE3 | 170% | 54% | 85% | 255% | |
‘rgb’ ‘bgr’ | SSE41 | 130% | 65% | 115% | 240% | |
‘rgbx’ ‘bgrx’ | SSSE3 | 140% | 65% | 115% | 240% | |
800×600/uint2 | ‘rgb’ ‘bgr’ | SSE41 | 40% | 55% | 85% | 105% |
1600×1200/byte | ‘rgb555’ ‘bgr555’ | SSSE3 | 160% | 100% | 160% | 200% |
‘rgb5551’ ‘bgr5551’ | SSSE3 | 150% | 100% | 160% | 195% | |
‘rgb565’ ‘bgr565’ | SSSE3 | 145% | 95% | 160% | 195% | |
‘rgb’ ‘bgr’ | SSE41 | 120% | 100% | 150% | 155% | |
‘rgbx’ ‘bgrx’ | SSSE3 | 115% | 100% | 140% | 140% | |
1600×1200/uint2 | ‘rgb’ ‘bgr’ | SSE41 | 45% | 63% | 75% | 75% |
Image Size/Type | Color Format | Speedup with 4-Thread Parallelization | Speedup with 8-Thread Parallelization |
800×600/uint2 | ‘rgb555’ ‘bgr555’ ‘rgb5551’ ‘bgr5551’ ‘rgb565’ ‘bgr565’ | 55% | 65% |
‘rgbx’ ‘bgrx’ | 55% | 50% | |
‘rgb48’ ‘bgr48’ | 55% | 55% | |
‘rgbx64’ ‘bgrx64’ | 65% | 55% | |
1600×1200/uint2 | ‘rgb555’ ‘bgr555’ ‘rgb5551’ ‘bgr5551’ ‘rgb565’ ‘bgr565’ | 50% | 60% |
‘rgbx’ ‘bgrx’ | 35% | 45% | |
‘rgb48’ ‘bgr48’ | 35% | 35% | |
‘rgbx64’ ‘bgrx64’ | 35% | 40% |
Bug Fixes
3D
- On termination, HALCON may have returned the error 1301 (“Wrong value of control parameter 1”) if stereo models in persistent mode had not been cleared using clear_stereo_model. This problem has been fixed.
- Some operators claimed that a 3D object model was invalid, even though it was not. This problem has been fixed. The corresponding operators are convex_hull_object_model_3d, max_diameter_object_model_3d, smallest_sphere_object_model_3d, smallest_bounding_box_object_model_3d, and select_object_model_3d for some parameters.
- copy_object_model_3d did not copy extended attributes when they were specified explicitly with ‘&’. Furthermore, copy_object_model_3d did not exclude extended attributes from copying by using the prefix ‘~&’. In both cases, the error 1302 (“Wrong value of control parameter 2”) was thrown. This problem has been fixed.
- The operator create_shape_model_3d leaks small amounts of memory when not using the OpenGL based model generation. This problem has been fixed.
- When calling create_surface_model in parallel from several threads with the ‘train_3d_edges’ parameter set to ‘true’, the created models were incorrect and could contain invalid 2D and 3D edges. This problem has been fixed. create_surface_model is now safe to use from multiple threads.
- The operators disp_object_model_3d, render_object_model_3d, display_scene_3d, and render_scene_3d could have crashed when displaying infinite primitive shapes (cylinders or planes without boundary). This problem has been fixed.
- The operator distance_object_model_3d, when applied with the ‘voxel’ method, sometimes returned incorrect distances. This problem has been fixed. Note that 3D object models for which the ‘voxel’ index was previously created with the operator prepare_object_model_3d and that were written as OM3 file need to be re-prepared to apply this fix.
- distance_object_model_3d was not using the information prepared in prepare_object_model_3d by default. This problem has been fixed.
- The parameter ‘max_gap’ was missing in the parameter list offind_surface_model and find_surface_model_image. This problem has been fixed.
- The operator fit_primitives_object_model_3d can fit cylinders into point clouds. Sometimes, small changes of the input point cloud switched the orientation of the fitted cylinder, i.e., its pose and axis. This problem has been fixed. Now, the axis points towards the half space in which the origin is located.
- gen_binocular_rectification_map and set_stereo_model_image_pairs in rare cases raised an error because the generated maps got too large. This problem has been fixed. Now, the parameter ‘Method’ of gen_binocular_rectification_map has the new default value ‘viewing_direction’. set_stereo_model_image_pairs also uses this method per default. set_stereo_model_param, get_stereo_model_param, and create_stereo_model have been extended with the generic parameter (GenParamName) ‘rectif_method’ and the according parameter values (GenParamValue) ‘viewing_direction’ or ‘geometric’. Note that this change affects the compatibility.
- gen_cylinder_object_model_3d did not verify if MinExtent < MaxExtent. This problem has been fixed. Now, gen_cylinder_object_model_3d returns the error 1304 (“Wrong value of control parameter 4”) in case the condition is not met.
- get_object_model_3d_params in rare cases returned implausible results when ‘GenParamName’ was set to ‘num_neighbors_fast X’ and the distance ‘X’ was very small in relation to the size of the input point cloud. This problem has been fixed.
- get_object_model_3d_params returned wrong results when ‘GenParamName’ was set to ‘bounding_box1’, ‘diameter_axis_aligned_bounding_box’ or ‘diameter’ for primitives of type cylinder whose pose was not the identity. This problem has been fixed.
- measure_profile_sheet_of_light crashed in rare cases after a sheet of light model was read. This problem has been fixed.
- Some files in the binary PLY format could not be read by read_object_model_3d. This problem has been fixed.
- reconstruct_surface_stereo crashed in rare cases after set_stereo_model_image_pairs was successfully called at least one time and returned with an error (in most cases error 6001 (“Not enough memory available”)) just before calling reconstruct_surface_stereo. This problem has been fixed.
- The operator segment_object_model_3d crashed in rare cases. This problem has been fixed.
- For the file format ‘om3’, the operators set_object_model_3d_attrib, set_object_model_3d_attrib_mod, and read_object_model_3d did not raise errors for inconsistent ‘xyz_mappings’, e.g., for mappings of height zero, or pixel values outside the given image dimensions. Many operators processing object_model_3d with mappings might have crashed due to the inconsistently generated models. This problem has been fixed. Now, set_object_model_3d_attrib and set_object_model_3d_attrib_mod return the following errors:
- 3524 (“Image width <= 0”),
- 3521 (“Image width > MAX_FORMAT”),
- 3525 (“Image height <= 0”),
- 3523 (“Image height > MAX_FORMAT”),
- 1304 (“Wrong value of control parameter 4”).The operator read_object_model_3d now returns the error 9511 (“Invalid 3D object model”).
- set_object_model_3d_attrib_mod may have corrupted the 3D object model if it was used to change existing attributes. This caused deadlocks or crashes in subsequent operations on this 3d object model. This problem has been fixed.
- set_stereo_model_image_pairs generated images whose image size is greater than MAX_FORMAT. This problem has been fixed. Now, an error occurs when the image size is too big.
- triangulate_object_model_3d internally calculated the normals using the “greedy” method if the 3D object model did not contain them, but without forcing them inwards. This problem has been fixed. Now, triangulate_object_model_3d internally calculates the normals in the expected direction and the documentation has been modified accordingly.
- triangulate_object_model_3d with Method set to ‘implicit’ returned different results for empty GenParamName and GenParamValue on the one hand, and GenParamName set to ‘implicit_octree_depth’, GenParamValue set to 6 on the other hand, although 6 is the default value of ‘implicit_octree_depth’. This problem has been fixed. Now, triangulate_object_model_3d in both cases returns the results which previously were returned for empty parameters.
- In some cases, the operator union_object_model_3d created a 3D object model with an invalid mapping width or height if the first input object model did not have any mapping. Such invalid mapping sizes might have led to crashes in other operators that use the resulting 3D object model. This problem has been fixed.
- HALCON could have crashed or hung when rendering a 3D scene in one thread while modifying one of the contained 3D object models in another thread. This problem has been fixed.
Bar Code
- In very rare cases, find_bar_code returned the error 3513 (“Internal error: number of chords too big for num_max”). This problem has been fixed.
- In very rare cases, find_bar_code crashed in case of GS1 DataBar Expanded Stacked Codes. This problem has been fixed.
- find_bar_code, decode_bar_code_rectangle2, and find_data_code_2d in some cases returned incorrect results if the internal image width and height of the system were smaller than the actual size of the input image. This could have happened in cases where the operators were called in a different thread than the one in which the corresponding image has been read or created or if the system image width and height has been changed with set_system. This problem has been fixed.
- The operator find_bar_code crashed in rare cases when the ‘quiet_zone’ of set_bar_code_param was set to a high value. This problem has been fixed.
- In some cases, find_bar_code was significantly slower on machines with many cores. This problem has been fixed.
- The operator find_bar_code did not check the quiet zone correctly when the quiet zone check was enabled. This problem has been fixed.
- find_bar_code in rare cases returned an incorrect symbol region for composite bar codes. This could have effected the results for ‘quality_isoiec15416’ of all bar code types. This problem has been fixed.
- find_bar_code returned an incorrect trained orientation for slanted bar codes. This problem has been fixed.
- find_bar_code did not check the whole ‘quiet_zone’ if the scanline was too short. This problem has been fixed.
- In some cases, find_bar_code could have leaked memory, when ‘stop_after_result’ and ‘timeout’ was set. This problem has been fixed.
- in very rare cases, get_bar_code_result and find_bar_code returned an error if the quiet zone check was enabled. This problem has been fixed.
- In rare cases, get_bar_code_result returned -1 for all print quality inspection grades or crashed for bar codes near image borders. This problem has been fixed.
- get_bar_code_result could have returned wrong values for the ISO/IEC 15416 decodability in case of EAN-8 symbols. This problem has been fixed.
- get_bar_code_result with quality_isoiec15416 in rare cases returned an incorrect modulation grade when an edge was lying directly at the end of the quiet zone. This problem has been fixed.
- set_bar_code_param and set_bar_code_param_specific did not accept empty tuples as generic input parameters. This problem has been fixed.
- The operator set_bar_code_param adapted the value of ‘min_identical_scanlines’ when ‘num_scanlines’ was set to 0. This problem has been fixed. Now, ‘min_identical_scanlines’ is adapted only when ‘num_scanlines’ is greater than 0.
- set_bar_code_param silently ignored ‘element_size_min’ and ‘element_size_max’ when their combination was inconsistent. This problem has been fixed. Now, an error is thrown if the values are inconsistent. Furthermore, when setting both values with one call, the order does not matter anymore. Note that this change affects the compatibility.
- HALCON now supports all GS1 application identifiers specified in the latest version of the “GS1 General Specifications” (January 2018).
- HALCON now supports all GS1 application identifiers specified in the latest version of the “GS1 General Specifications” (January 2019).
Calibration
- The operators calibrate_cameras, binocular_calibration, and the camera calibration incalibrate_hand_eye in rare cases did not perform as well as expected, i. e., they have returned with an unnecessarily high reprojection error. This problem has been fixed. Note that this change affects the compatibility.
- The comments of the calibration description files generated by create_caltab contained misleading values for ‘width’ and ‘height’. Furthermore, the formulas for ‘width’ and ‘height’ in the reference manual entry of create_caltab were incorrect. These problems have been fixed.
- gen_binocular_rectification_map and set_stereo_model_image_pairs in rare cases raised an error because the generated maps got too large. This problem has been fixed. Now, the parameter ‘Method’ of gen_binocular_rectification_map has the new default value ‘viewing_direction’. set_stereo_model_image_pairs also uses this method per default. set_stereo_model_param, get_stereo_model_param, and create_stereo_model have been extended with the generic parameter (GenParamName) ‘rectif_method’ and the according parameter values (GenParamValue) ‘viewing_direction’ or ‘geometric’. Note that this change affects the compatibility.
- get_calib_data for ItemType set to ‘camera’ and DataName set to ‘params_deviations’ or ‘params_covariances’ returned unintuitive values more often than necessary, in particular when the covariance matrix was nearly singular. This problem has been fixed. Note that this change affects the compatibility.
- When removing a calibration observation using remove_calib_data_observ for a certain pair of camera and calibration object pose indices and adding a new observation for the same indices, the order of observation indices broke. This problem has been fixed.
- All operators that return camera parameters either returned a tuple that had one extra entry or in rare cases made HALCON crash if camera parameters using the old camera models (i.e., without the leading string containing the camera type) of type ‘area_scan_telecentric_tilt_division’ or ‘area_scan_telecentric_tilt_polynomial’ were passed. This problem has been fixed.
- set_calib_data_cam_param and set_camera_setup_cam_param ignored the parameter CameraType, which could have led to unexpected camera setups. This problem has been fixed. Now, CameraType is expected to be equal to [] or to the first entry of CameraParam.
- In rare cases, vector_to_pose returned a wrong pose if the method ‘analytic’ was used. This problem has been fixed.
Classification
- In some cases, class_ndim_norm did not support more than 255 clusters. This problem has been fixed.
- The operators classify_class_gmm and evaluate_class_gmm returned incorrect values for the k-sigma probability ‘KSigmaProb’ for Gaussian Mixture Models with covariance type ‘spherical’ or ‘diag’. This problem has been fixed. Note that this change affects the compatibility.
Compute Device
- HALCON still used pinned memory after deactivating a compute device. This may have resulted in performance issues, especially if the cache for pinned memory was not sized appropriately. This problem has been fixed.
Data Code
- find_bar_code, decode_bar_code_rectangle2, and find_data_code_2d in some cases returned incorrect results if the internal image width and height of the system were smaller than the actual size of the input image. This could have happened in cases where the operators were called in a different thread than the one in which the corresponding image has been read or created or if the system image width and height has been changed with set_system. This problem has been fixed.
- In rare cases, find_data_code_2d crashed randomly for very small or empty domains. This problem has been fixed.
- In rare cases, find_data_code_2d crashed for ECC 200 codes if module_size_min was set to a value with which the smallest possible code would have exceeded the image dimensions. This problem has been fixed.
- In rare cases, find_data_code_2d did not free some intermediate data if the data code model parameter ‘persistence’ was set to 0 or -1. As a consequence, in some cases,get_data_code_2d_objects and get_data_code_2d_results unexpectedly returned print quality results instead of empty objects/tuples. This problem has been fixed.
- In very rare cases, find_data_code_2d crashed for ECC 200 symbols if a candidate was found close to the image border. This problem has been fixed.
- In very rare cases, find_data_code_2d crashed with signal 11 failure for Aztec codes. This problem has been fixed.
- The operators find_data_code_2d and find_bar_code were not able to decode in case of an GS1 Code containing the application identifier 714. This problem has been fixed.
- The operators find_data_code_2d and set_distance_transform_xld_param did not set the ‘modified’ flag for their handle parameter, which can be queried with get_param_info. This problem has been fixed.
- In some rare cases, find_data_code_2d returned a misaligned data code region for ECC 200 codes. This problem has been fixed.
- For Micro QR and Aztec codes find_data_code_2d in some cases was significantly slower on machines with many cores. This problem has been fixed.
- In very rare cases, the print quality inspection for ECC 200 codes crashed for symbols that lay close to the image border. This problem has been fixed.
- In some cases the variable module grid used for print quality inspection of the ECC 200 reader was inaccurate in case of distorted clock patterns. This could have led to bad quality grades. This problem has been fixed.
- In rare cases, the QR code reader caused a low level error about still allocated temporary memory blocks. This problem has been fixed.
- get_data_code_2d_objects could have returned wrong XLDs when querying the XLD of undecoded candidates with ‘candidate_xld’. This happened due to uninitialized memory. This problem has been fixed.
- get_data_code_2d_objects could have crashed when querying the ‘process_image’ if ‘small_module_robustness’ was enabled. This problem has been fixed.
- In very rare cases, get_data_code_2d_results crashed for a print quality inspection if the considered data code was located very close to the image boundary. This problem has been fixed.
- get_data_code_2d_results returned wrong values for ‘symbol_identifier’ of Aztec codes when the data string contained a FNC1 character. This problem has been fixed.
- In some cases, get_data_code_2d_results returned wrong ISOIEC 15415 and AIMDPM-2006-1 quality values for ‘print growth’ and ‘contrast uniformity’. This problem has been fixed.
- The operator get_data_code_2d_results returned invalid values for the candidate groups ‘symbology_ident’ and ‘structured_append’ in case of Micro QR Codes. This problem has been fixed. Note that this change affects the compatibility.
- In rare cases, get_data_code_2d_results crashed during print quality inspection. This problem has been fixed.
- set_data_code_2d_param did not always check the consistency of min/max values for the following parameters: ‘symbol_rows_min/max’, ‘symbol_cols_min/max’, ‘symbol_size_min/max’, ‘module_size_min/max’, ‘module_width_min/max’, ‘module_aspect_min/max’, ‘module_gap_row_min/max’, ‘module_gap_col_min/max’, ‘module_gap_min/max’, and ‘version_min/max’. This problem has been fixed. Now, an error is thrown, if the values are inconsistent. Note that this change affects the compatibility.
- HALCON now supports all GS1 application identifiers specified in the latest version of the “GS1 General Specifications” (January 2018).
- HALCON now supports all GS1 application identifiers specified in the latest version of the “GS1 General Specifications” (January 2019).
Feature
- The operators proj_match_points_ransac, proj_match_points_ransac_guided, match_fundamental_matrix_ransac, match_essential_matrix_ransac, and match_rel_pose_ransac caused a crash in rare cases when ‘Image2’ had much smaller dimensions than ‘Image1’. This problem has been fixed.
File
- The operators read_image and read_region leaked memory when for concatenated objects the error 5279 (“Unexpected object detected”) was returned for the second or any subsequent indices of the object array. This problem has been fixed.
- Writing of very large image files in the HOBJ format did not return. This problem has been fixed.
- Using very long filenames with write_image in ‘tiff’ format or write_ocv may have caused buffer overruns and crashes. This problem has been fixed.
- When writing files to disk, out-of-disk-space errors may not have been detected. This problem has been fixed.
- The reference manual entry of write_images has been extended by the information that you need write permission in your current working directory in order to save an image in JPEG-XR format, regardless of the target directory.
Filter
- convol_image didn’t handle separable kernels with an adjustment of the kernel center correctly. This problem has been fixed.
- derivate_gauss crashed for very large images (width * height > 500 million pixels). This problem has been fixed.
- The operator deviation_image did not return results as accurate as possible for images of type ‘real’. This problem has been fixed.
- The operator deviation_image did not raise an error when the filter size exceeded the image size for images whose type is not ‘byte’. This problem has been fixed. Now, deviation_image returns the error 3033 (“Filter size exceeds image size”).
- The operator exhaustive_match_mg crashed for some invalid values of the parameter ‘Level’. This problem has been fixed. Now, an error is returned if ‘Level’ does not fit the image or template size.
- Due to an incorrect rounding factor, the C implementation used for the creation of the Gauss pyramid for uint2 images returned slightly incorrect results. This problem has been fixed. The problem could have only occurred if the image was internally cropped, i.e., for the following operators: find_local_deformable_model, find_planar_calib_deformable_model, find_planar_uncalib_deformable_model, find_ncc_model, find_ncc_models, find_aniso_shape_model, find_aniso_shape_models, find_scaled_shape_model, find_scaled_shape_models, find_shape_model, and find_shape_models. Note that the corresponding SSE41 implementation was not affected. Note that this change affects the compatibility.
- gen_spherical_mosaic sometimes returned the error 3513 (“Internal error: number of chords too big for num_max”) if StackingOrder was set to ‘blend’. This problem has been fixed.
- The operator illuminate crashed with a mask size of 1×1. This problem has been fixed.
- polar_trans_image_ext crashed for images with an output width and/or height equal to 1, when set_system (‘floating_exceptions’, ‘zero_divide’) was set. This problem has been fixed.
Graphics
- clear_scene_3d may have crashed if a previous call to display_scene_3d returned with an error. This problem has been fixed.
- disp_rectangle1 and disp_rectangle2 could have shown unwanted display artifacts when anti-aliasing was enabled. This problem has been fixed.
- dump_window_image did not support setting the internal image width and height of the system. This problem has been fixed. The internal width and height of the system are the maximum width and height of all HALCON image objects. They will be increased if images of greater width or height are instantiated subsequently.
- On Linux, get_window_extents could have crashed when run in parallel to other graphics operators. This problem has been fixed.
- open_window on Linux systems with a tiling window manager (e.g., matchbox) could not display an image. This problem has been fixed. If the window manager chooses to display the HALCON window with other size as specified by the HALCON window, HALCON will only render the part specified by open_window or set_window_extents.
- open_window did not return consistent error codes in case of an invalid width or height. This problem has been fixed. Now, limitations for width and height of a window are documented in the reference manual. In case of an invalid width the error code 1303 (“Wrong value of control parameter 3”) is returned. In case of an invalid height the error code 1304 (“Wrong value of control parameter 4”) is returned.
- set_drawing_object_params in rare cases might have caused HDevelop to freeze. For drawing objects of type rectangle1, set_drawing_object_params in rare cases might have crashed or raised a memory error. This problem has been fixed.
- The operators set_window_extents and dev_set_window_extents crashed if ‘flush’ was set to ‘false’. This problem has been fixed.
- HALCON could have crashed if set_window_extents aborted with the error code 6001 (“Not enough memory available”) and the window was used, e.g., with dump_window_image. This problem has been fixed.
- If HIOCancelDraw was called before calling a drawing operator, the drawing operator aborted immediately. This problem has been fixed.
- Resizing of xld drawing objects did not work. This problem has been fixed.
- The 3d_plot mode with textures leaked OpenGL textures. This problem has been fixed.
- Sometimes, thin rectangular regions were not displayed. This problem has been fixed.
Inspection
- deserialize_texture_inspection_model returned the error 3803 (“Invalid file format for a texture inspection model”) if models other than a texture inspection model were serialized before the serialization of the texture inspection model. In case that more than one texture inspection model was serialized, deserialize_texture_inspection_model only deserialized the texture inspection model that was serialized first. This problem has been fixed.
- If the parameter ‘novelty_threshold’ was changed using set_texture_inspection_model_param after a texture inspection model has been trained, the model could not be serialized anymore. This problem has been fixed.
- If the levels of a trained texture inspection model were changed, e.g., by setting the parameter ‘num_levels’ from [2,3,4] before the training to ‘auto’ after the training, write_texture_inspection_model crashed after writing the model a second time, i.e., calling write_texture_inspection_model, read_texture_inspection_model and calling write_texture_inspection_model again. The crash only occurred if some levels were omitted, e.g., by setting ‘num_levels’ from [2,3,4] to [2,4] or by adding additional levels, e.g., by setting ‘num_levels’ from [2,3,4] to [1,2,3,4]. Furthermore, set_texture_inspection_model_param crashed after new, untrained levels were added to a deserialized texture inspection model by, e.g., setting ‘num_levels’ from [2,3,4] to [1,2,3,4]. These problems have been fixed.
- In contradiction to write_texture_inspection_model, serialize_texture_inspection_model was not able to serialize an untrained or only partially trained (e.g., by training not all pyramid levels) texture inspection model. This problem has been fixed. Note that this change affects the compatibility.
Image
- add_channels did not use the correct intersection of the image domain and the input regions when the image domain was rectangular and not in the top left corner. This problem has been fixed.
- append_channel did not report an error when attempting to append beyond the limit of 65535 channels to an image. This problem has been fixed.
- The operator channels_to_image threw the HALCON error 3513 (“Internal error: number of chords too big for num_max”) for images with ‘Width’ equal to 1. This problem has been fixed.
- The operators crop_rectangle1 and crop_part raised an error in cases where more than one input image and more than one set of region parameters was specified and the numbers were not equal. Furthermore, they might have raised errors when used in parallel in cases where more input images than available threads and more than one set of region parameters was specified. This problem has been fixed.
- write_image leaked memory when writing the ‘jpegxr’ format. This problem has been fixed.
Matching
- The operators create_scaled_shape_model, create_aniso_shape_model, and determine_shape_model_params in rare cases did not estimate a plausible value for ‘NumLevels’=’auto’ when ‘ScaleMin’, ‘ScaleRMin’, or ‘ScaleCMin’ were set to a small value. create_planar_uncalib_deformable_model, create_planar_calib_deformable_model, create_local_deformable_model, and determine_deformable_model_params in rare cases might have shown the same behavior. This problem has been fixed. Note that this change affects the compatibility.
- The operators create_shape_model, create_scaled_shape_model, create_aniso_shape_model, create_shape_model_xld, create_scaled_shape_model_xld, create_aniso_shape_model_xld, set_shape_model_metric, determine_shape_model_params, create_planar_uncalib_deformable_model, create_local_deformable_model, create_planar_calib_deformable_model, create_planar_uncalib_deformable_model_xld, create_local_deformable_model_xld, create_planar_calib_deformable_model_xld, set_planar_uncalib_deformable_model_metric, set_planar_calib_deformable_model_metric, set_local_deformable_model_metric, determine_deformable_model_params, create_component_model, create_trained_component_model, train_model_components, cluster_model_components, gen_initial_components, and create_shape_model_3d in rare cases returned the error 3513 (“Internal error: number of chords too big for num_max”). This problem has been fixed.
- find_ncc_model might have frozen for models with a very small variance of gray values. This problem has been fixed.
- The operators find_ncc_model and find_ncc_models sometimes applied incomplete subpixel corrections when ‘SubPixel’ was set to ‘false’. This problem has been fixed.
- find_ncc_model and find_ncc_models used much more memory than necessary when called parallelized, which led to the HALCON error 6001 (“Not enough memory available”) in rare cases. This problem has been fixed.
- The results of find_planar_calib_deformable_model, find_planar_uncalib_deformable_model, and find_local_deformable_model could have varied significantly depending on whether a machine with SSE2 or AVX was used to calculate the matches. This problem has been fixed. Note that this change affects the compatibility.
- The operators find_planar_calib_deformable_model, find_planar_uncalib_deformable_model, and find_local_deformable_model returned wrong or even no results for byte images when the SSE2 implementation in combination with the metric ‘ignore_local_polarity’ was used. This problem has been fixed.
- The operators find_planar_calib_deformable_model, find_planar_uncalib_deformable_model, and find_local_deformable_model sometimes returned wrong or even no results for the metric ‘ignore_color_polarity’ when using the AVX optimized implementation. This problem has been fixed.
- find_planar_calib_deformable_model and find_planar_uncalib_deformable_model did not call the correct SIMD implementations for the metric ‘ignore_part_polarity’, i.e., the speed of the operators was not improved for this metric. This problem has been fixed. Note that this change affects the compatibility.
- The operators find_planar_calib_deformable_model, find_planar_uncalib_deformable_model, and find_local_deformable_model sometimes returned wrong or even no results when using the SIMD implementations. These problems have been fixed. Note that this change affects the compatibility.
- find_shape_model, find_shape_models, find_scaled_shape_model, find_scaled_shape_models, find_aniso_shape_model, and find_aniso_shape_models did not find a correct match in rare cases, although the model has been created for and searched in a full circle. This problem has been fixed.
- On Windows 32 bit systems, find_shape_model, find_shape_models, the operators find_scaled_shape_model, find_scaled_shape_models, find_aniso_shape_model, and find_aniso_shape_model crashed when a big memory block was requested. This problem has been fixed. Now, an error is returned.
- In rare cases, get_deformable_model_params returned an unexpected error message for ‘cam_param’ and ‘cam_param_rect’ values. This problem has been fixed.
Matrix
- Some matrix operators crashed or produced incorrect results when a floating point value was passed as matrix handle. This problem has been fixed. All matrix operators now raise an error when passing a floating point value instead of an integer as matrix handle. Note that this change affects the compatibility.
Measure
- The default_type for the get_metrology_object_num_instances parameter ‘NumInstances’ is ‘real’, which was not listed in the corresponding type_list. This problem has been fixed, i.e., ‘real’ has been added to the type_list of the parameter.
Memory
- The temporary memory used by the last operator returned by get_system(‘temp_mem’) was inaccurate. This problem has been fixed.
Miscellaneous
- Setting the parameters ‘width’ or ‘height’ for region clipping purpose in a multi threaded environment might have led to an unpredictable automatic update behavior of these parameter values by image generating operators. This problem has been fixed.
- get_operator_info could have leaked memory when attempting to retrieve a slot that is empty for an operator. This problem has been fixed.
- Calling get_system with the parameter ‘is_license_valid’ crashed HALCON when using a secure application specific license. This problem has been fixed.
- The operator line_position converted its inputs to integer values prior to calculating its outputs. This problem has been fixed. The operator will now work correctly on floating point input values.
- Operators like mult_image, which can be parallelized on channels, dumped low-level error messages or could even have crashed, when these operators were called with input images with a different number of channels. This problem has been fixed.
- optimize_aop crashed if the help files could not be found. This problem has been fixed. Now, optimize_aop will report an error instead.
- The parameter ‘tsp_thread_num’ could not be set to -1 with set_system. This problem has been fixed.
- Using excessively long arguments for set_system or HAccessGlVar may have resulted in buffer overruns. This problem has been fixed. Now, the HALCON error 5141 (“String too long or too high”) will be raised.
- For some error codes no error messages were returned. This problem has been fixed.
- In rare cases, HALCON could have had a deadlock when running out of memory. This problem has been fixed.
Morphology
- The operators opening_rectangle1 and closing_rectangle1 returned an error for rectangle dimensions larger than 10000. This restriction has been removed.
OCR
- concat_ocr_trainf aborted with the error 6006 (“Tmp-memory management: could not find memory element”). This problem has been fixed.
- In very rare cases, find_text returned the error 3510 (“Exceeding the maximum number of run lengths while automatical expansion”). This problem has been fixed.
- In some cases, find_text crashed when it was applied in manual mode on an upright image. This problem has been fixed.
- In some cases, find_text returned characters in a wrong order if text models of mode ‘auto’ with ‘text_line_structure’ and ‘text_line_separators’ have been used and ‘return_whole_line’ has been set to ‘true’. This problem has been fixed.
- In rare cases, find_text led to a stack overflow for highly textured images. The problem occured for text models of mode ‘manual’ and for parameter settings that created a very large number of candidate regions. This problem has been fixed.
- In rare cases, the operator find_text and the OCR Assistant caused a low level error regarding still allocated temporary memory blocks. This problem has been fixed.
- In manual mode find_text sometimes failed to segment characters in binary images. This problem has been fixed.
- get_text_object crashed when no value or only an integer or float value was passed to the parameter ‘ResultName’. This problem has been fixed. Note that this change affects the compatibility.
- The default extension of write_ocr_class_knn has been ‘.okc’ while the parameter ‘FileName’ was declared as ‘.onc.’ in the reference manual. This problem has been fixed. Now, write_ocr_class_knn appends the extension ‘.onc’ by default if no extension is set explicitly. To support k-NN OCR classifiers generated with ‘.okc’, read_ocr_class_knn now can read ‘.onc’, ‘.okc’, and ‘.fnt’ files without setting the extension.
Parallelization
- find_bar_code, decode_bar_code_rectangle2, and find_data_code_2d in some cases returned incorrect results if the internal image width and height of the system were smaller than the actual size of the input image. This could have happened in cases where the operators were called in a different thread than the one in which the corresponding image has been read or created or if the system image width and height has been changed with set_system. This problem has been fixed.
- The operators for
- shape-based matching (find_shape_model, find_shape_models, find_scaled_shape_model, find_scaled_shape_models, find_aniso_shape_model, find_aniso_shape_models),
- shape-based 3D matching (find_shape_model_3d),
- deformable matching (find_local_deformable_model, find_planar_uncalib_deformable_model, find_planar_calib_deformable_model),
- NCC-based matching (find_ncc_model, find_ncc_models), and
- map_image.
Region
- The operators expand_region, expand_gray, and expand_gray_ref either returned the error 3510 (“Exceeding the maximum number of run lengths while automatical expansion”) or crashed if the number of input regions was greater than 32767. This problem has been fixed.
- gen_circle_sector, gen_ellipse_sector, create_drawing_object_circle_sector, and create_drawing_object_ellipse_sector sometimes, for the same radius, did not generate the same arcs as gen_circle, gen_ellipse, create_drawing_object_circle, and create_drawing_object_ellipse, respectively. Additionally, for the same radius but different angle ranges, they sometimes did not generate the same arcs in the overlapping angle range. Furthermore, gen_circle_sector and create_drawing_object_circle_sector sometimes, for the same angle ranges but different radius, did not generate the same sectors in the smaller radius range. These problems have been fixed. Note that this change affects the compatibility.
- gen_rectangle1 could have not returned an error for very big coordinates. This problem has been fixed.
- line_position sometimes returned incorrect orientations in case of non-integer coordinates as input. This problem has been fixed.
- region_features returned an empty object instead of an empty region for some features (‘struct_factor’, ‘row2’, ‘col2’, ‘width’, ‘height’, and ‘ratio’). This problem has been fixed.
- The region borders of regiongrowing_mean were sometimes one pixel too large. This problem has been fixed.
- select_shape returned an empty object instead of an empty region for some features (‘struct_factor’, ‘row2’, ‘col2’, ‘width’, ‘height’, and ‘ratio’). This problem has been fixed.
- sort_region with character mode did not work correctly when the adjacent rows (columns) overlapped with RowOrCol set to row (column). This problem has been fixed. Now, the character mode also works when there is a slight overlap. The reference manual entry has been adapted to specify the new behavior.
Segmentation
- auto_threshold crashed for images of type ‘real’ with a constant gray value. This problem has been fixed.
System
- Parallel opening and closing of windows might have caused a deadlock in rare cases. This problem has been fixed.
- Calling get_system for the parameter ‘opengl_info’ returned an error if the DISPLAY environment variable was not set on Linux systems, or when not running in a graphical session on macOS systems. This problem has been fixed. Now, get_system will return ‘No OpenGL support included’ in both cases.
- Using an invalid message or message queue handle in any of the message or message queue operators could have crashed HDevelop. This problem has been fixed. Note that when not using HDevelop, HALCON can still crash if an invalid message or message queue handle is used.
- In error cases, the operator read_ocr_trainf changed the global variable ‘init_new_image’ to ‘false’. This problem has been fixed.
Tuple
- tuple_gen_sequence returned damaged sequences for inputs like NaN or Inf. This problem has been fixed.
XLD
- In rare cases, intersection_contours_xld returned intersections where the contour contained duplicate points. This problem has been fixed.
- In very rare cases, intersection_line_contour_xld and intersection_segment_contour_xld missed an intersection if the intersection point was also a contour point. This problem has been fixed.
Procedures
Bug Fixes
- Certain procedures used case-sensitive variables, causing problems for Visual Basic code export. This problem has been fixed. Now, the procedures use case-insensitive variables.
- The procedure reference entry of list_image_files mentioned a wrong path to an environment variable. This problem has been fixed.
HALCON/.NET
Bug Fixes
- The HALCON window managed by HSmartWindowControl was not destroyed deterministically when closing the parent form (although it was garbage collected later). This problem has been fixed.
- If the property ‘ZoomContent’ has been set to ‘off’ inside the HSmartWindowControl, the event function did not return X and Y coordinates as argument. This problem has been fixed.
- Tuples of a single type were sometimes converted into mixed tuples leading to unexpected results from the tuple_is_string and tuple_is_int operators. This problem has been fixed.
- If HIOCancelDraw was called before calling a drawing operator, the drawing operator aborted immediately. This problem has been fixed.
- The background setting from Visual Studio overlayed the actual content of an HSmartWindowControlWPF. This problem has been fixed. The adjusted background settings in Visual Studio have no no longer an effect on the HSmartWindowControlWPF. The HSmartWindowControlWPF background settings can be set as usual with the HALCON operators.
- The HSmartWindowControl was overwriting the property HImagePart when the internal HALCON window was created. This problem has been fixed.
- The creation of HSmartWindowControl instances failed on Linux when running with newer versions of mono. This problem has been fixed.
Language Interface Example Programs
Bug Fixes
- Closing the HALCON/C++ example application cpp/mfc/MatchingExtWin or the example application cpp/mfc/FGMultiThreading without stopping it first could have led to an unhandled exception. This problem has been fixed.
- On MacOS X 10.9 or higher compilation of the HDevengine example hdevengine/cpp/makedir failed since the compiler did not include /Library/Frameworks by default. This problem has been fixed.
- In the header file HDevEngineCpp.h for using the HDevEngine two comments were marked with TODO. This problem has been fixed.
- set_drawing_object_params only accepted integer values for the generic parameter ‘line_width’. This problem has been fixed. Now, also floating point numbers are accepted. In this case, the number is rounded to the nearest integer.
HALCON Variable Inspect extension for Visual Studio
Bug Fixes
- Reading the memory in the HALCON Variable Inspect extension for Visual Studio failed in some cases. This problem has been fixed.
- The HALCON Variable Inspect extension for Visual Studio in rare cases displayed a ProcessMemory::Read reading data error. This problem has been fixed. Please note that there are still known compatibility issues when using the Variable Inspect extension in combination with the JetBrains ReSharper plugin.
Image Acquisition Interfaces
The latest information about new interface revisions and newly supported image acquisition devices can be found on MVTec’s web server. Please refer to the release notes within the documentation of the individual image acquisition interfaces for information about improvements, bugfixes, or whether a new revision of the corresponding device driver is required.
Miscellaneous
- GenApi has been updated to version 3.1.0, which is required by the GenICamTL, GigEVision2, and USB3Vision image acquisition interfaces.
- The Image Acquisition Assistant could have hung on Linux systems after the ‘Connect’ button had been pressed. This problem has been fixed.
Digital I/O Interfaces
The latest information about new interface revisions and newly supported digital I/O interfaces can be found on MVTec’s web server. Please refer to the release notes within the documentation of the individual digital I/O interfaces for information about improvements, bugfixes, or whether a new revision of the corresponding device driver is required.
Miscellaneous
- Opening an I/O device leaked a small amount of memory. This problem has been fixed.
Documentation
Miscellaneous
- The reference manual entry of open_compute_device falsely stated that the parameter DeviceHandle is queried with query_available_compute_devices instead of DeviceIdentifier. This problem has been fixed.
Programmer’s Manuals
- In the Programmers Guide, chapter 5.2.5 ‘The Tuple Mode’, in the second code block, ‘ToString()’ was missing. This problem has been fixed.
- The Programmer’s Guide did not clearly mention the procedure call clean up in case of an exception. This problem has been fixed.
Reference Manual
- The reference manual entry of binary_threshold falsely listed ‘real’ as possible value for the image type of the input image. This problem has been fixed.
- The reference manual entries of create_surface_model and find_surface_model did not mention that the normal vectors need to point inwards when ‘train_3d_edges’ is enabled. This problem has been fixed.
- The reference manual entries of find_surface_model and find_surface_model_image missed a documentation of the generic parameters ‘pose_ref_dist_threshold_edges_rel’, ‘pose_ref_dist_threshold_edges_abs’, ‘pose_ref_scoring_dist_edges_rel’, and ‘pose_ref_scoring_dist_edges_abs’. This problem has been fixed. Note that these parameters were nevertheless supported by previous versions of HALCON that support edge-supported surface-based matching.
- Within the chapter Calibration / Calibration Object of the reference manual, the list of suggested calibration plates for the parameter ‘CalPlateDescr’ was outdated. This problem has been fixed.
- The reference manual entry of fwrite_string mentioned a legacy restriction. This problem has been fixed.
- The reference manual entry of get_bar_code_result did not mention the quality grade ‘-1’. Furthermore, the reference manual entry of get_bar_code_object contained a misleading statement. These problems have been fixed.
- Within the reference manual entry of get_bar_code_result, for the parameter ‘quality_isoiec15416_values’ ‘N/A’ was stated as value for ‘Overall Quality’, ‘Overall Quality Linear’, and ‘Overall Quality Composite’, although floating grades are returned. This problem has been fixed.
- The reference manual entry of get_data_code_2d_results was inconsistent for the parameters ‘mirrored’ and ‘structured_append’. This problem has been fixed.
- The documentation of the operator get_object_model_3d_params has been improved. Now, the option ‘extended_attribute_types’ for extended parameters is documented.
- The reference manual entry of get_object_model_3d_params now also describes the return values for the parameter ‘primitive_parameter_extension’ for planes created with gen_plane_object_model_3d instead of fit_primitives_object_model_3d.
- The reference manual entry of get_object_model_3d_params now documents the parameter ‘mapping_size’, which returns the image size of the XYZ mapping of the 3D object model.
- The reference manual entry of get_support_vector_class_svm contained misleading phrases concerning the parameter ‘IndexSupportVectors’. This problem has been fixed.
- The reference manual entry of open_socket_accept missed a documentation of the GenericParameter option ‘reuseaddr’. This problem has been fixed.
- The reference manual entry of send_data mentioned zeros instead of NULL-Bytes. This problem has been fixed.
- The reference manual entry of set_bar_code_param for the parameter check_char was confusing. This problem has been fixed.
- The reference manual entry of set_bar_code_param was formulated over-simplified which led to a wrong description for the result value concerning the removal of the check character. This problem has been fixed.
- The reference manual entry of set_color did not mention the restriction of a maximum of 256 entries. This problem has been fixed.
- The example snippet within the reference manual entry of set_fuzzy_measure transformed a function and then used the original function instead of the transformed one. This problem has been fixed.
- The operator tuple_ldexp uses an integer (rounded down) for the exponent, but the reference manual entry did not mention this possible rounding. This problem has been fixed.
- The reference manual entry of vector_to_pose has been improved. In particular, it has been extended with references to the publications the implementations of the methods are based on.
- The reference manual had several operators where the warning or attention block was missing. This problem has been fixed.
- The reference manual entry of write_images has been extended by the information that you need write permission in your current working directory in order to save an image in JPEG-XR format, regardless of the target directory.
Solution Guides
- The Solution Guide on Image Acquisition still listed the OpenNI interface as supported interface although the support ended with HALCON 13.0. This problem has been fixed.
- In the Solution Guide on 3D Vision the equation for the polynomial model of tilt lenses was erroneous. This problem has been fixed.
User Guides
- The HDevelop User’s Guide did not mention distinct behavior of HDevEngine concerning validity of Thread IDs. This problem has been fixed.
- In the HDevelop User’s Guide, the directory name for emergency backups was outdated. This problem has been fixed.
- The HDevelop User’s Guide contained outdated information related to the single underscore variable ‘_’. This problem has been fixed.
- Some example paths within the user manuals referred to %HALCONROOT% instead of %HALCONEXAMPLES%. This problem has been fixed.
- The HDevelop User’s Guide falsely stated that within the Help Window PDFs could be opened in an external viewer using the Return key. This problem has been fixed.
- Table 8.6 in the HDevelop User’s Guide was numerated erroneous in the pdf-file. This problem has been fixed.
Supported Operating Systems
Windows
HALCON 13.0.3 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.3 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
- 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.3 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
- During installation on Linux systems, invalid environment variables HALCONIMAGES and HALCONEXAMPLES were set in .cshrc_halcon and .profile_halcon for installation types “Runtime” and “Compact”. This problem has been fixed.
- In the installers for Linux, the file and directory access permissions were set somewhat inconsistent. This problem has been fixed.
- The HALCON Student Edition didn’t install the HALCON Microsoft Visual Studio Extension Package. This problem has been fixed.