The changes in HALCON 18.11.2.0 Steady are described with respect to HALCON 18.11 Steady.
HDevelop
New Functionality
GUI
- HDevelop’s Program Window icons like program counter and break points now adjust their size depending on the chosen font size.
Bug Fixes
Code Export
- HDevelop’s C export sometimes generated invalid code when the source program contained deactivated or invalid lines. This problem has been fixed.
- Exporting empty vector literals in control expressions to C# or VB.net could have led to syntactically incorrect code. This problem has been fixed.
- The export to C# and VB.net did not work correctly for direct modification of global tuple elements containing handles. 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.
- HDevelop exported empty vector literals in block statements (e.g., if) incorrectly when called via command line. This problem has been fixed.
GUI
- The Object Model 3D Inspect 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 Object Model 3D Inspect now shows the names and types of all extended attributes.
- Calling open_window in HDevelop on a macOS platform caused an error. This problem has 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.
- After switching the encoding of the HALCON library to locale with set_system(‘filename_encoding’, ‘locale’), the Read Image dialog was not able to load images with non-ASCII characters in the path or filename. 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.
- Opening a HALCON window larger than the allowed width and height limits (2^15=32768) and a too large window size (e.g., 30000×30000 width/height) could have led to a crash of HDevelop. This problem has been fixed.
- The execution of draw operators corrupted HDevelop’s Graphics Window when the window was rather big (i.e., when at least one dimension exceeded a size of about 4000 pixels). This problem has been fixed.
Help
- HDevelops Help might have displayed examples with an incorrect header. This problem has been fixed.
IDE
- 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.
- Calling close_window with a window handle that was obtained with dev_open_window or dev_get_window crashed HDevelop (with some delay). This problem has been fixed. Now, the corresponding Graphics Window is closed. Note that nonetheless the use of close_window in HDevelop is not recommended by any means. Please, use dev_close_window instead.
- On a few Linux systems, the description in the “Attach To Process..” dialog was cut off. This problem has been fixed. Now, it is possible to store the size of the dialog so the user can read the description after reopening the dialog.
- Until now, when a control variable stops 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.
- Commenting a catch did not comment the try–catch block inside HDevelop. This problem has been fixed.
Procedures
- In rare cases, HDevelop crashed when the user deactivated a user-defined procedure directory. 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.
Miscellaneous
- HDevelop features an “Extended error code”, which will be set when, e.g., a dynamic library could not be opened (HALCON error code: 8600). When running a different HDevelop program in the same HDevelop session later, and a regular exception was raised, HDevelop again presented the old extended error code from the previous program. 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.
- C++ code exported by HDevelop for comparison operators in expressions (e.g., “a := b + (c<d)”) did not compile with all C++ compilers. This problem has been fixed.
- On Japanese Windows systems, the sub dialog “Add Samples From A System Font” of the OCR Training File Browser showed very small symbols in the left list view. This problem has been fixed.
- On rare occasions, deactivating a for/while loop crashed HDevelop. This problem has been fixed.
- dev_disp_text did not correctly display non-ASCII characters in the HDevelop Graphics Window when the HALCON library was set to locale encoding (set_system(‘filename_encoding’, ‘locale’)). This problem has been fixed.
- If the maximum number of subthreads has been set to a value greater or equal to 64 via the Preferences dialog (Menu->Edit->Preferences->General Options) and more than 64 par_start<> statements were called, HDevEngine and HDevelop hung. This problem has been fixed.
- dev_get_window is specified to return -1 if no window is available. However, for implementations in engine applications, this case was not handled correctly. In particular, with JIT compilation an invalid handle could have led to a crash and in HDevEngine/.NET an empty tuple could have been returned even in a non-JIT case, changing the behavior of the script code. This problem has been fixed. Now, always -1 will be returned. Note that user implementations should never return a numeric value except for legacy mode. Instead, indicate the invalid value with an empty tuple or an empty handle.
- A for loop around a piece of HDevelop code did not work if this code snippet led to a “procedures call stack” greater or equal than 64 entries. The stack size may have been increased with par_start <> statements or by recursion. This problem has been fixed.
- On Linux systems, the Start Dialog of HDevelop did not work properly if an SSL library version greater than 1.0 was installed. This problem has been fixed. Now, HDevelop uses the libraries libssl and libcrypto that are installed in the folder lib/x64-linux/thirdparty.
HDevelop Example Programs
New HDevelop Example Programs
- hdevelop/Image/Acquisition/genicamtl_io_control.hdev
- hdevelop/Image/Acquisition/gigevision2_io_control.hdev
- hdevelop/Image/Acquisition/gigevision2_roboception_rcvisard_objectmodel3d.hdev
- hdevelop/Image/Acquisition/gigevision2_wenglor_shapedrive_objectmodel3d.hdev
- hdevelop/Image/Acquisition/usb3vision_io_control.hdev
Bug Fixes
- The HDevelop example program explore_halcon.hdev used at one point an invalid window handle. Though the invalid handle is ignored by HDevelop, it might have caused problems in HDevEngine applications in combination with custom dev-operator implementations. This problem has been fixed.
HDevEngine
Bug Fixes
- 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.
- For each instance of an HDevProcedure, HDevEngine has started a separate thread by default (besides the engine’s own main execution thread), regardless whether that thread was used later on or not. When many HDevProcedure instances were created, this led to a substancial resource consumption. This problem has been fixed. Now, new threads are only started when they are actually requested by the executed code.
- In the context of the handle rewrite for HALCON 18.11, there was a performance regression in the HDevEngine execution without JIT compilation. For script code that mostly manipulated control variables this could have produced an overhead of about 15%. This problem has been mitigated. The overhead is now closer to 5%.
- The file HDevEngineCpp.h contained a wrong comment. In particular, instead of GetInfo, GetProcInfo has been used. This problem has been fixed.
- If the maximum number of subthreads has been set to a value greater or equal to 64 via the Preferences dialog (Menu->Edit->Preferences->General Options) and more than 64 par_start<> statements were called, HDevEngine and HDevelop hung. This problem has been fixed.
- dev_get_window is specified to return -1 if no window is available. However, for implementations in engine applications, this case was not handled correctly. In particular, with JIT compilation an invalid handle could have led to a crash and in HDevEngine/.NET an empty tuple could have been returned even in a non-JIT case, changing the behavior of the script code. This problem has been fixed. Now, always -1 will be returned. Note that user implementations should never return a numeric value except for legacy mode. Instead, indicate the invalid value with an empty tuple or an empty handle.
HALCON Library
Speedup
- 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% |
New Functionality
Bar Code
- HALCON now supports all GS1 application identifiers specified in the latest version of the “GS1 General Specifications” (January 2019).
Data Code
- HALCON now supports all GS1 application identifiers specified in the latest version of the “GS1 General Specifications” (January 2019).
Deep Learning
- The error message regarding outdated graphics drivers (regarding the CUDA version they support) has been clarified.
Graphics
- Displaying large regions zoomed in a window now requires less memory.
Bug Fixes
3D
- calibrate_sheet_of_light did not raise an error for inconsistent gray values in the set disparity image. This problem has been fixed. Now, calibrate_sheet_of_light raises the error 3791 (“The gray values of the disparity image, which specify rows in the camera image, do not fit the height of the camera”).
- gen_box_object_model_3d did not create more than one box correctly. This problem has been fixed.
- In the procedure debug_find_surface_model, when inspecting the model edges under a direction where the model has no edges, an exception was raised and the tool would have closed. This problem has been fixed. The tool now stays open even if the model has no edges under a particular view.
- set_camera_setup_param did not handle poses correctly which were of a type other than 0, i.e., the last entry of the pose was not equal to 0. This problem has been fixed.
- triangulate_object_model_3d with Method set to ‘xyz_mapping’ or ‘greedy’ did not remove attributes which were attached to an old triangulation. triangulate_object_model_3d with Method set to ‘polygon_triangulation’ raised an unrelated error in case that the input already contained triangles. triangulate_object_model_3d with Method set to ‘polygon_triangulation’ froze in case that it contained an attribute named ‘&original_indices’. These problems have been fixed. Now, triangulate_object_model_3d with Method set to ‘polygon_triangulation’ replaces triangles.
- 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.
- union_object_model_3d did not free temporary memory correctly if all input object models contained no points. This problem has been fixed.
- vector_to_pose raised memory errors in rare cases. This problem has been fixed.
- The point density check of the procedure debug_find_surface_model was too lenient. It rated a density of one neighbor per point as ‘good’, which is actually a bit low. This problem has been fixed. Now, a proper warning is shown instead.
Bar Code
- In rare cases, find_bar_code could not restore edges. This problem has been fixed.
- find_bar_code could not decode GS1 DataBar Expanded Stacked codes with less than four symbol characters in the first row. This problem has been fixed. Now, the minimum number of symbol characters in the first row is two as specified by the ISO/IEC 24724:2011 standard.
- 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.
- 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.
- set_bar_code_param and set_bar_code_param_specific did not accept empty tuples as generic input parameters. This problem has been fixed.
Calibration
- 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.
Color Processing
- trans_from_rgb could have produced wrong output for the mode ‘ihs’ and some specific input. This problem has been fixed.
- RGB/YUV conversion was using wrong equations, not the one from Norm ITU-R BT.470-6: Conventional Television Systems, 1998. This problem has been fixed.
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
- In very rare cases, find_data_code_2d returned a false decoded data string for Data Matrix ECC200 Codes. This problem has been fixed.
- In rare cases, find_data_code_2d threw the error 6006 (“Tmp-memory management: could not find memory element”) for Micro QR codes if small timeout values were set. This problem has been fixed.
- In rare cases, a memory leak could have occured in find_data_code_2d for PDF417 codes if small timeout values were set. This problem has been fixed.
- In very rare cases, find_data_code_2d decoded the left/right indicators of PDF417 codes erroneously. This could have led to crashes. This problem has been fixed.
- In some cases, find_data_code_2d returned ECC 200 codes which were not mirrored even though the parameter ‘mirrored’ was set to ‘yes’. The problem only occurred for data code models with ‘module_grid’ set to ‘any’. This problem has been fixed.
- In 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 very rare cases, find_data_code_2d crashed for ECC 200 code candidates that are close to the image border. 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.
- find_data_code_2d sometimes returned different results in dependence on the chosen value of ‘discard_undecoded_candidates’. 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.
- In very rare cases, get_data_code_2d_results returned too bad grades for quality_isoiec15415 for Data Matrix ECC 200 codes. This problem has been fixed.
- 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.
- For set_data_code_2d_param, the parameter ‘format’ allows a list of values. If this list contained an invalid value, the function exited and all previously set values were discarded. This problem has been fixed. Now, the old list of parameters is kept.
- write_data_code_2d_model and serialize_data_code_2d_model did not store the value of the data code model parameter ‘discard_undecoded_candidates’. This problem has been fixed.
Deep Learning
- create_dl_model_detection now performs additional checks on the parameters ‘min_level’ and ‘max_level’.
- pretrained_dl_classifier_resnet50.hdl had wrong default classes and a too high default batch size. This problem has been fixed.
- The cuBLAS and cuDNN libraries shipping with the Linux x64 installer are now from the archives for Ubuntu 16.04.
- The procedure dev_display_dl_data failed if the number of items to visualize was greater than the number of items in the corresponding split of the dataset. The procedure train_dl_model is also affected because it uses the procedure. This problem has been fixed.
- The procedure read_dl_dataset_segmentation failed on windows if some of the input paths contained “\\” separators (e.g. “my\\path\\to\\images”). This problem has been fixed.
- The procedure train_dl_model plotted the mAP incorrectly if the minimum and maximum mAP values are close together. This problem has been fixed.
- train_dl_model_batch did not check if BBoxIDs are in the range of ClassIDs. This problem has been fixed
- train_dl_model_batch could have failed for object detection if bounding box coordinates have been passed over as a mixed tuple. This problem has been fixed.
- If the batch size, input dimension, or number of classes were changed such that an out of memory exception was thrown, memory leaked temporarily on the GPU in some cases. This memory was freed if the runtime of the model was switched back to CPU or the model was cleared. The problem only existed if the model has already been initialized on the GPU (usually after the first call to train_dl_model_batch / train_dl_classifier_batch). The operators set_dl_model_param and set_dl_classifier_param were affected by this problem. This problem has been fixed.
- In some cases, train_dl_model_batch displayed a remaining time greater than zero although the training was completed. This problem has been fixed.
- write_dl_model and write_dl_classifier did not handle errors during the write process correctly. Especially, if the model was initialized on the GPU, this could have led to an unusable model and also to a crash. The problem could have occured if during the write operation another process used GPU memory or the underlying CUDA memory decided to use more memory after the write operation than before. This problem has been fixed. Now, the GPU memory is not changed during the write operations. As a positive side-effect, the write operation is faster since no memory is copied back and forth. The speed-up depends on the size of the used deep learning model. Note further that the operators write_dl_model and write_dl_classifier now provide better error reporting in case of hardware faults.
- The procedures preprocess_dl_classifier_images and preprocess_dl_model_images have been improved when using ContrastNormalization. Now, when using ContrastNormalization not only ‘real’ and ‘byte’ images can be used but also images of integer-formats.
- The procedure preprocess_dl_samples might have returned bounding boxes with zero area. This problem has been fixed. Note that this change affects the compatibility.
- The procedure dev_display_dl_data had a problem with the indexing of windows. This problem has been fixed.
File
- Reading a JSON file with read_dict was not locale-independent and failed on systems with locales where the decimal point is not a point. Applications using HDevelop or HDevEngine were not affected as HDeveEngine sets the LC_NUMERIC locale to “C”. This problem has been fixed.
- read_dict did not read some JSON files on Windows. This problem has been fixed.
- read_image crashed when reading GIF images in parallel. This problem has been fixed. Now, read_image internally protects reading of GIF images with a mutex.
- Writing of very large image files in the HOBJ format did not return. This problem has been fixed.
- write_image wrote JpegXR files, even if an error occured. This problem has been fixed and write_image now removes partially written JpegXR files on error.
Filter
- convol_image did not handle separable kernels with an adjustment of the kernel center correctly. 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
- open_window did not work on Linux systems with IPv6 (e.g., Ubuntu 18.04). This caused also 3D plots and OpenGL operations not to work. This problem has been fixed.
- Calling open_window in HDevelop on a macOS platform caused an error. 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 (i.e., host and GPU memory). This problem has been fixed.
- Sometimes, thin rectangular regions were not displayed when zooming or shifting images. This problem has been fixed.
Inspection
- get_texture_inspection_model_param did not work correctly in rare cases when GenParamName was set to ‘gmm_centers’ or ‘novelty_threshold’. In more detail, the behavior occured in case that set_texture_inspection_model_param had been called previously with GenParamName set to ‘levels’ and GenParamValue set to ‘auto’ with no subsequent call to train_texture_inspection_model. This problem has been fixed. Now, get_texture_inspection_model_param raises the error 3801 (“Texture inspection model is not trained”).
Matching
- find_ncc_model might have frozen for models with a very small variance of gray values. This problem has been fixed.
Memory
- The operator call set_system(‘global_mem_cache’,’cleanup’) did not free the global cache properly. The cached memory blocks of the local thread still remained. This problem has been fixed.
Miscellaneous
- Error messages for which the length was not fixed could have led to a crash. This problem has been fixed.
- get_system with ‘parallelize_operators’ returned an empty tuple instead of ‘false’ when operator parallelization was turned off. 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 parameter ‘tsp_thread_num’ could not be set to -1 with set_system. This problem has been fixed.
- Excessively long environment variables resulted in HALCON internal buffer overruns. This problem has been fixed.
OCR
- In very rare cases, find_text threw the error 3111 (“At least one input object has an empty region”). This problem has been fixed.
- 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.
- The handle inspect for text model handles and text result handles did not display parameters consistent with the documentation of the ‘manual’ and ‘auto’ mode, respectively. This problem has been fixed.
- The previously allowed overlapping area for sort_region with SortMode ‘character’ was too large, so that characters in a slightly tilted row or column sometimes were erroneously sorted into two rows or columns. This problem has been fixed. Now, the maximum allowed overlap between two adjacent rows or columns is 15% of the larger one of two overlapping characters.
- sort_region with SortMode ‘character’ 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.
Region
- distance_pr and distance_sr did not return an error if the input region was empty. This problem has been fixed.
- line_position sometimes returned incorrect orientations in case of non-integer coordinates as input. This problem has been fixed.
- local_threshold returned the error 3513 (“number of choords too big for num_max”) in rare cases. This problem has been fixed.
- partition_rectangle stored empty regions also if the system settings were set to ‘store_empty_region’=’false’. This problem has been fixed.
Segmentation
- local_threshold returned the error 3513 (“number of choords too big for num_max”) in rare cases. This problem has been fixed.
Tuple
- tuple_gen_sequence returned damaged sequences for inputs like NaN or Inf. This problem has been fixed.
- tuple_regexp_replace returned a memory error instead of error 1302 (“Wrong value of control parameter: 2”). This problem has been fixed.
XLD
- distance_cc_min_points using the mode ‘fast_point_to_segment’ sometimes mixed coordinate values for resulting contours. This problem has been fixed.
- The number of contour points required for get_contour_angle_xld was not clearly defined. This problem has been fixed. Now, the required minimum is checked correctly and specified in the documentation.
HALCON/.NET
Bug Fixes
- The creation of HSmartWindowControl instances failed on Linux when running with newer versions of mono. This problem has been fixed.
- HSmartWindowControlWPF has had a memory leak when the control was added and removed dynamically. This problem has been fixed.
- Within the HALCON/.NET SetFullImagePart method and the dev_display implementation within the hrun program, the Hight/Width arguments for the set_part operator were exchanged. This problem has been fixed.
Language Interface Example Programs
Bug Fixes
- The C# example MultiThreadingMessageQueues was provided as a Visual Studio 2005 solution even though the source code was not compatible with .NET 2.0. This problem has been fixed. It is now provided as a Visual Studio 2010 solution.
- The MFC HDevEngine example exec_procedures_mt_mfc did not compile with some Visual Studio versions on Windows. This problem has been fixed.
HALCON Variable Inspect
Functionality
- The HALCON Variable Inspect extension for Visual Studio now also supports Visual Studio 2019.
Bug Fixes
- When examining individual pixels with the HALCON Variable Inspect extension for Visual Studio, the correspondence between the mouse position and the related pixel coordinates was incorrect, as a wrong image coordinate system was used. Thus, the gray values of neighbored pixels might have been returned instead of those of the inspected pixel. This problem has been fixed.
- The HALCON Variable Inspect extension for Visual Studio has been extended to support the display of string data in UTF-8 encoding.
- In some cases, it was not possible to read iconic variables with the HALCON Variable Inspect extension for Visual Studio. This problem has been fixed.
Image Acquisition Interfaces
The latest information about new interface revisions and newly supported image acquisition devices can be found on MVTec’s web server. Please refer to the release notes within the documentation of the individual image acquisition interfaces for information about improvements, bugfixes, or whether a new revision of the corresponding device driver is required.
Miscellaneous
- When calling open_framegrabber with any interface while an empty tuple was provided as device name, colorspace, cameratype, external trigger, or field parameter, HALCON terminated. This problem has been fixed.
- The MVTec GigE Vision Streaming Filter version 2.1.8.2 that is part of the Windows installer now supports the [Stream]EventTransferEnd event and several stream statistics which were only available with the socket driver before.
Digital I/O Interfaces
The latest information about new interface revisions and newly supported digital I/O interfaces can be found on MVTec’s web server. Please refer to the release notes within the documentation of the individual digital I/O interfaces for information about improvements, bugfixes, or whether a new revision of the corresponding device driver is required.
Documentation
Programmer’s Manuals
- The Programmers Manual did not mention that the HALCON Variable Inspect extension for Visual Studio with HALCON/C++ can currently not be used with activated CLR. This problem has been fixed.
- The Programmer’s Manual contained incorrect information on the usage of X11. This problem has been fixed.
User Guides
- The description of the “Visualisation Settings” in the HDevelop User’s Guide was outdated. This problem has been fixed.
Reference Manual
- The reference manual entry of find_planar_uncalib_deformable_model mentioned a wrong value as parameter restriction. This problem has been fixed.
- The reference manual entry of find_surface_model mentioned an outdated accuracy. This problem has been fixed.
- The reference manual entry for find_surface_model missed information about the behavior without point normals. This problem has been fixed.
- The reference documentation regarding the overall grade returned by the print quality inspection of 1D bar codes was incorrect. Since HALCON 18.11 the ISO/IEC 15416:2016 standard is supported. In this revised standard the overall grade is not the minimum of the other grades as the documentation incorrectly explained. This problem has been fixed. The reference manual entry of get_bar_code_result has been updated accordingly.
- The reference manual entry of get_bar_code_result did not mention all possible status ids. This problem has been fixed.
- The reference manual entry of get_dl_model_param did not mention the value interval of ‘weight_classes’. This problem has been fixed.
- The reference manual entry of get_string_extents did not mention that the operator treats multiple line strings as if they were concatenated. This problem has been fixed.
- The reference manual entry of get_system contained some incorrect information for ‘cuda_version’ in combination with a GPU that does not meet the minimum system requirements. This problem has been fixed.
- The code example in the reference manual entry of interleave_channels set the wrong pixel format. This problem has been fixed.
- The 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.
- The reference manual entry of select_grayvalues_from_channels has been improved to document the channels of the index image more clearly.
- The reference manual entries of select_shape, select_shape_xld, select_lines, partition_lines, and segment_contour_attrib_xld were not clear about the possible range of values for the parameters ‘Min’ and ‘Max’. This problem has been fixed.
- The reference manual entry of set_bar_code_param for the parameter ‘check_char’ was confusing. 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 reference manual did not mention possible consequences of changing the encoding. This problem has been fixed. The reference manual entry of set_system has been extended accordingly.
- The reference manual entries of trans_to_rgb and trans_from_rgb have been improved by a statement about possible slight value differences due to internal precision.
- The reference manual entry for trans_to_rgb had a wrong conversion formula, further the entry of this operator as well as for trans_from_rgb had a misleading conversion hint. This problem has been fixed. The formula is now correct and the conversion hint reformulated.
- The reference manual entry of write_image 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.
Miscellaneous
- The HDevelop User’s Guide and the Programmer’s Guide mentioned only some of the limitations for HDevEngine remote debugging. This problem has been fixed. Now they refer to the other limitations as well.
- General information concerning a possible slow down due to window extrapolations has been moved from the Programmer’s Guide to the reference manual entries of set_window_extents and set_part.
- The technical note on Gray Value Interpolation has been extended by information about the effects of using floating-point calculation for interpolation. The reference manual entries of projective_trans_image, projective_trans_image_size, affine_trans_image, affine_trans_image_size, polar_trans_image_ext, polar_trans_image_inv, rotate_image, scale_image, zoom_image_factor, and zoom_image_size have been adapted as well.
- The OCR rejection class is returned as ‘0x1a’ (hexadecimal basis) and ‘032’ (octal basis), but only the first notation has been mentioned in the corresponding reference manual entries and in the Solution Guide on Classification. This problem has been fixed.
Installation
- If more than one HALCON version was installed, the HALCON uninstaller on Windows always set the HALCON version with the highest version number to active. This problem has been fixed. Now, the uninstaller asks, which version should be set to active, if there is no version active after uninstalling the current HALCON version.
- For the HALCON student edition on linux, install_linux.sh contained a syntax error. This problem has been fixed.