Major New Features of HALCON 21.11.0.0 Progress
With Generic Shape Matching, HALCON offers user-friendly access
to MVTec’s industry-proven shape matching technologies. Thanks to the
significant reduction in the number of required operators, users can
implement solutions more easily and quickly.
With HALCON 21.11, existing functionalities are enhanced to
further increase usability. For example, the clutter feature has been
integrated, handle inspection has been optimized, and additional
parameters have been integrated and included in the automatic parameter
estimation.
Dictionaries make it easy and convenient to manage complex data
in HALCON. For example, different data types such as images, ROIs and
parameter settings can be bundled in a single dictionary. This allows
programs to be structured in a logical way, for example when passing
many parameters to a procedure.
HALCON 21.11 includes several improvements that make the
handling of dictionaries even easier and faster. For example,
dictionaries can now be initialized with a single operator call, and the
syntax for adding and retrieving elements has been simplified. In
addition, the auto-completion now also suggests the keys contained in
the dictionary, which further speeds up and simplifies working with
dictionaries.
MVTec provides a plug-in for the Intel Distribution of OpenVINO™
toolkit as part of HALCON Progress Edition. It enables HALCON users to
benefit from AI accelerator hardware that is compatible with the
OpenVINO toolkit.
As a result, significantly faster deep learning inference times
can be achieved on Intel processors including CPUs, GPUs, and VPUs. By
expanding the range of supported Intel devices, customers now have even
more flexibility in their choice of hardware.
This plug-in can also be used with HALCON 21.05 Progress.
With HALCON 21.11, MVTec extends the functional scope of its
deep learning features with a new technology called “instance
segmentation”. This combines the advantages of semantic segmentation and
object detection.
With the help of instance segmentation, objects can be assigned to different classes with pixel accuracy.
This technology is particularly useful in applications where
objects are very close to each other, touch or overlap. Typical use
cases also include grabbing randomly arranged objects from boxes (bin
picking) as well as identifying and measuring naturally grown
structures.
With HALCON 21.11, HALCON’s bar code reader is improved with
respect to robustness in case of blurred Code 128/GS1-128 codes. Now,
codes with a larger amount of blur can be read. Blur on such codes can
occur due to motion or due to limits by the depth of focus. The Code
128/GS1-128 code is a widely used bar code type that is frequently used
in logistics due to its compact size and high data density.
Compatibility
Licenses
HALCON 21.11.0.0 Progress requires a valid HALCON Progress
license and does not run with licenses of HALCON 13 and earlier versions
or HALCON Steady.
HALCON Library
Compared to HALCON 21.05 Progress, many extensions have been
introduced. Thus, the HALCON 21.11.0.0 Progress libraries are not
binary compatible with HALCON 21.05 Progress or earlier versions.
However, HALCON 21.11.0.0 Progress is mostly source-code compatible to
HALCON 21.05 Progress except for the changes listed below:
- OpenCL support for
macOS platforms has been removed. Compute device operators now return
the error 9000 ("Function not implemented on this machine").
The OpenGL compatibility mode for macOS platforms has been removed. More information. - The improvements of find_calib_object can lead to slightly different results in rare cases. More information.
- The parameter 'pyramid_level_lowest' of set_generic_shape_model_param
accepted non-supported values smaller than 1 and reset them to 1
internally. This problem has been fixed. Now, an exception is thrown to
inform the user about invalid input values.
- Due to the bugfix in trans_to_rgb
for the color space 'yiq' and image type 'uint2', the gray values of
the images returned by the operator can slightly differ from the
previous results. Furthermore, the runtime of the operator for color
space 'yiq' and image type 'uint2' has increased. For example, for
images of size 750x500, the runtime has increased by roughly 10-15%. More information.
- read_dl_model and read_deep_ocr
accepted a tuple of filenames as input and only used the first entry
for reading in the model. This behavior has been changed such that an
error (1401) is raised. More information.
- In the procedure determine_dl_model_detection_param,
the default of 'image_size_constant' is 'true', i.e., all images are
assumed to have the same size. To reproduce the previous behavior, set
this parameter to 'false'.
In the procedure determine_dl_model_detection_param,
the default of the generic parameter 'split' has been changed to
'train'. To reproduce the previous behavior, set this parameter to
'all'. More information. - The computation of
print quality values according to the international standard SEMI
T10-0701 has been adapted. Therefore, the 'quality_semi_t10_values'
returned by get_data_code_2d_results may differ from previous versions. More information.
- Basins returned by watersheds_marker
that were found at the border of the image, or markers that were used
at the border of an image, can now differ at the image border in rare
cases. More information.
- For PharmaCode and
2/5 Industrial bar codes, the number of quality grades
('quality_isoiec15416', 'quality_isoiec15416_float_grades') and values
('quality_isoiec15416_values') returned by get_bar_code_result changed from 7 and 8, respectively, to 9. Thereby, 'N/A' is returned for quality grades and values that are not defined. More information.
- set_scene_3d_instance_param now returns the error 1302 ("Wrong value of control parameter 2") if indices of non-existent instances are passed. More information.
- Functionality relying on the removed low-level errors of threshold will not work anymore. More information.
- optimize_dl_model_for_inference
could be applied on a model that was already optimized by a previous
call of the operator. This is no longer possible. Instead, optimize_dl_model_for_inference returns the error 7917 ("Unsupported operation on converted model") in this case. More information.
HALCON Applications
Please re-compile all C, C++, or .NET programs developed
with HALCON 21.05 Progress. The incompatibility with HALCON 21.05
Progress or earlier versions mainly concerns the binaries, with only few
changes in the language interfaces. If you encounter problems during
recompiling your programs, please check the detailed description of
changes below.
Image Acquisition Interfaces
In general, the image acquisition interfaces of HALCON
21.11.0.0 Progress, HALCON 21.05 Progress, HALCON 20.11 Steady, and
HALCON 18.11 Steady are library compatible.
HALCON 21.11.0.0 Progress includes only a subset of
available image acquisition interfaces. Image acquisition interfaces
that are included are: DirectFile, DirectShow, File, GenICamTL,
GigEVision2, GStreamer, USB3Vision, and Video4Linux2. You can download
additional interfaces from our web server.
Digital I/O Interfaces
In general, the digital I/O interfaces of HALCON 21.11.0.0
Progress, HALCON 21.05 Progress, HALCON 20.11 Steady, and HALCON 18.11
Steady are library compatible.
HALCON 21.11.0.0 Progress includes only a subset of
available digital I/O interfaces. Digital I/O interfaces that are
included are: Linux-GPIO and OPC_UA. You can download additional
interfaces from our web server.
Extension Packages
Please re-generate your own extension packages developed with HALCON 21.05 Progress.
Further Compatibility Information
- The introduction of the new keyword dict
may cause conflicts in existing HDevelop scripts if that name was used
as a variable or parameter name (in lowercase). Use the Find/Replace
dialog in HDevelop to locate these occurrences by searching for
'Variables' in scope 'All' with enabled 'Case Sensitive' and 'Whole
Words' options.
- The procedure dev_disp_button has been adapted such that it returns only after the mouse button is released. More information.
Legacy or No Longer Supported Functionality
The following functionality may be discontinued in a future major release:
- Support of uint2 images in find_bar_code and decode_bar_code_rectangle2
is now legacy. Applications using uint2 images with these operators
should convert these images to byte images with a reasonable mapping of
gray values.
- In the procedure determine_dl_model_detection_param,
the generic parameters 'raw_width' and 'raw_height' have been set to
legacy. Instead, the generic parameter 'image_size_constant' has been
introduced. If all images have the same size, this parameter can be set
to 'true' (default) to speed up the procedure.
See the reference manual entries of legacy operators for details on how to replace them.
Supported Operating Systems
Windows
HALCON 21.11.0.0 Progress has been compiled for the
x64-win64 platform version for Windows 8.1/10 or Windows Server 2008
R2/2012 R2/2016/2019/2022 x64 Edition on Intel 64 or AMD 64 processors.
Linux
HALCON 21.11.0.0 Progress has been compiled for the following Linux platform versions:
- x64 platform version for Linux x86_64, GLIBC_2.17, GLIBCXX_3.4.21, on Intel 64 or AMD 64 processors
- armv7a platform version for Linux armv7a, Kernel with
hidraw support, hard-float ABI, GLIBC_2.17, GLIBCXX_3.4.21 on Armv7-A
processors with NEON support
- aarch64 platform version for Linux aarch64, Kernel with hidraw support, GLIBC_2.17, GLIBCXX_3.4.21 on AArch64 processors
Please refer to the Installation Guide for detailed system
requirements corresponding to the different Application Binary
Interfaces.
macOS
HALCON 21.11.0.0 Progress has been compiled for the x64 platform version of macOS 11 and macOS 12 on Intel 64.
Only Intel x64 processors are fully supported. On M1 (Arm)
Processors, HALCON x64 executables can be run via Rosetta2 emulator.
Detailed Description of Changes in HALCON 21.11.0.0 Progress
The changes in HALCON 21.11.0.0 Progress are described with respect to HALCON 21.05 Progress.
HDevelop
New Functionality
GUI
- Opening a variable
inspect window interactively now docks it next to the variable window if
it is the only inspect widget. Otherwise, the variable inspect is
opened as another tab in the existing window.
- The usability of the
context menu of the graphics window has been improved. The actions for
setting the resizing behavior of content displayed in the graphics
window have been added to the visualization menu.
- HDevelop's canvas now supports zooming. The mouse wheel and shortcuts can be used to zoom in an out of the scene.
- The usability of the
example browser has been improved. Now, if the example browser is
docked, it stays open when selecting an example.
- The select dialog for iconic objects has been improved. Now, empty arrays can be displayed.
- The usability of the canvas has been improved. Now, it is possible to turn off the automatic update of the viewport.
- The option for
setting the canvas as the default layout has been removed from the
preferences. Instead, now there is an entry in the menu under "Windows"
> "Restore Default Layout use" > "Canvas" or "Docked Graphics
Window". By selecting the corresponding option, the layout is restored
to the default layout either using the canvas or the graphics window.
- The positioning of
floating windows opened interactively has been improved. Now, windows
opened for the first time are opened relative to HDevelop instead of
relative to screen coordinates.
- The object select
dialog is now docked next to the variable window or tabbed to a variable
inspect window if the latter is already open.
- The following zoom and auto-fit functionality has been added to the canvas, accessible via context menu:
- Fit All Graphics Windows In View
Zooms out the canvas such that all graphic windows are visible.
- Auto-fit By Zooming In
If enabled, when a window placed far from
another is closed, the canvas is automatically zoomed in to show the
remaining window.
- Auto-fit By Zooming Out
If enabled, when a new window is opened far away
from the other windows, the canvas is zoomed out to show all windows.
- Working with the
canvas has been improved. If "Auto-adapt Viewport" is enabled, now it is
ensured that the active graphics window is visible on program stop.
- Navigating in the canvas window has been improved. Now, it is possible to move the scene using the wheel button.
- The names of the
context menu entries "Add To Canvas" and "Float From Canvas" have been
changed to "Attach To Canvas" and "Detach From Canvas".
- The canvas reference point (0, 0) is now visualized by thicker lines if the Show Grid option is enabled.
- Graphics windows
opened via menu or via double-clicking an iconic variable are now added
to the canvas if the canvas is already open.
- The usability of the program window in the dark theme has been improved by adjusting the default colors.
- The context menu of
the canvas has been reordered. Further, the context menu entries of the
contained graphics window have been extended and improved.
- The usability of the
canvas has been improved. Now, the canvas options are also accessible
through the context menu of the graphics window if the graphics window
is attached to the canvas.
- For docked graphics
windows, the default setting of "Behavior on Window Resize" is now "Keep
Aspect Ratio" instead of "No Stretch".
Help
- The appearance of the help has been improved. Now, the colors of the help window correspond to the selected theme.
- The usage of the help
has been improved. Now, the language of the operator reference can be
selected independently of the language of the user interface.
IDE
- The usage of
dictionaries inside HDevelop has been greatly improved. A new syntax can
be used to easily create and initialize dictionaries. Further, a new
syntax with dot notation can be used to set and get values from the
dictionary. The new dictionary syntax is supported by the
auto-completion in the program editor.
- Dictionary handles are now directly visualized in the variable window and in the variable tooltip.
- It is now easier to share the user experience with MVTec. An "Accept All" button has been added to the telemetry dialog.
Language
- The new operators dev_set_system and dev_get_system allow programmatic control of engine system parameters.
- The procedures read_dict_tuple and read_dict_object
have been deprecated. Examples now use the new dictionary expressions
to interact with dictionaries. The new example
hdevelop/Tuple/Data-Containers/dictionary_migration.hdev compares the
old and new approaches.
Procedures
- When adding tables to
the documentation of procedures in Markdown syntax, the text alignment
of all cells was set to 'left'. Now, the layout corresponds to the
specified Markdown code.
Miscellaneous
- The inspection of
dictionaries has been improved. Now, if a tuple contains handles only,
double-clicking it in the variable window opens a handle inspect widget.
- HALCON now officially
supports macOS 11 and macOS 12 on Intel® processors. Library and
HDevelop IDE are also executable on Apple Silicon processors via the
Rosetta 2 emulator. Note that this change affects the compatibility. Read more.
- HDevelop has been
extended with a feedback functionality. To send feedback to MVTec, click
the Submit Feedback icon in the menu bar.
Bug Fixes
Assistants
- A warning sign was
displayed in the calibration assistant even though no event had occurred
that would warrant a warning. This problem has been fixed.
- Deleting individual
calibration images in the Calibration Assistant, followed by adding new
images could yield incorrect calibration results as not all images were
used in the calibration process. This problem has been fixed.
- The code generated by
the matching assistant for finding DXF models only considered the first
(red) channel ('ignore_local_polarity') instead of all channels
('ignore_color_polarity') when using color images. This problem has been
fixed.
Code Export
- Exporting a constant condition like while (true) to C++ caused a warning with Microsoft compilers. This problem has been fixed for Visual Studio 2017 and newer.
GUI
- In rare cases, HDevelop displayed valid code lines in the color used for invalid lines. This problem has been fixed.
- The settings dialog of the output console was not restored after an application restart. This problem has been fixed.
- For vectors,
HDevelop's variable inspect window did not use the 'Values and
Parameters' font as expected. This problem has been fixed.
- Navigating via Windows shortcuts when opening or saving files in HDevelop did not work. This problem has been fixed.
- While a program was
running, the mouse cursor did not adapt to possible user actions such as
resizing, as it was constantly in a "busy" state. To improve the
usability of the GUI, running a program no longer forces the mouse
cursor into a busy state. Instead, the execution status is now more
prominently indicated in the program window itself (previously it was
only indicated in the lower left status bar corner).
- Selecting the last changed variable resulted in a visually unreadable value in the variable window. This problem has been fixed.
- The keyboard
shortcuts for panning an image or moving the mouse pointer did not work
for graphics windows located in the canvas while a graphics window was
selected. This problem has been fixed.
- Resetting a program also closed an opened object select dialog. This problem has been fixed.
- dev_open_tool, dev_show_tool, and dev_set_tool_geometry did not work or did not work correctly for HDevelop's help window. This problem has been fixed.
- Opening a window on a
screen with different desktop scaling than the screen of the main
application could lead to unexpected window geometries. Further, opening
a window on a screen other than the main screen with scaling different
from 100% resulted in increasing window sizes. These problems have been
fixed.
- When using the dark theme, warning text in HDevelop's operator window sometimes was not readable. This problem has been fixed.
- The graphics window was sometimes not updated if the variable window was located in the sidebar. This problem has been fixed.
- When hovering the
title bar of the graphics window within the canvas, the mouse cursor
changed into the hand shape although it is not possible to pan the
window. This problem has been fixed. Now, the cursor keeps its standard
shape.
- Clicking the area displaying the line number could lead to a console warning. This problem has been fixed.
- A newly opened zoom window had a different geometry than the previously closed one. This problem has been fixed.
- After loading a new
program, it could happen that the displayed line number did not fit into
the designated space. This problem has been fixed.
- For graphics windows attached to the canvas, the pixel info overlay was not working. This problem has been fixed.
- The HDevelop
assistants opened at unexpected positions and in unexpected sizes. The
problem has been fixed. Now, the assistants reappear at the same
position as before and with same geometry.
- If a graphics window
was on top of another in the canvas, scrolling with the mouse was
applied to both simultaneously. This problem has been fixed.
- When releasing the
mouse button on a window in the canvas, this event could have been sent
to the wrong window. This problem has been fixed.
IDE
- When executing a
program line in HDevelop with Ctrl+Return or Ctrl+Enter, some variable
inspect widgets were not updated properly. This problem has been fixed.
- The auto completion
did not work if the text cursor was not visible (e.g., if the code was
longer than the editor line). This problem has been fixed.
Language
- Negative integer
literals in decimal notation did not handle the minimum supported
integer value on the platform correctly ("-2147483648" on 32-bit
systems, "-9223372036854775808" on 64-bit systems). The assigned value
was one too large. This problem has been fixed.
Procedures
- If the description
text in the HTML documentation of a procedure contains the names of
procedure parameters, HDevelop automatically generates links to the
corresponding parameter entry. Such links were generated even if the
parameter name was only a substring of another word. This problem has
been fixed. Note, however, that if a word in the description text
exactly matches a parameter name, a link still will be created.
Miscellaneous
- Renaming procedure
parameters from the Edit Procedure Interfaces dialog sometimes changed
the indentation of affected code lines. This problem has been fixed.
- In some cases, a
security alert appeared during the 'Check for Update' action in HDevelop
as a webpage was called with HTTP instead of HTTPS. This problem has
been fixed.
- Changing the 'Update
Windows in Single Step Mode' setting via the preferences dialog required
a restart of the application for the settings to take effect. This
problem has been fixed.
- Calls to HDevelop's inline functions tuple_select and tuple_substr could have been corrupted by HDevelop's command line option reset_free_text. This happened when the first argument of the inline function was an infix operation, e.g., reset_free_text turned six := ([1,2,3] + [1,2,3]) [2:2] into six := [1,2,3] + [1,2,3] [2:2], which has completely different semantics. This problem has been fixed.
HDevelop Example Programs
New HDevelop Example Programs
- hdevelop/Applications/Measuring-2D/pm_measure_board.hdev
- hdevelop/Applications/Position-Recognition-2D/matching_image_border.hdev
- hdevelop/Applications/Robot-Vision/pick_and_place_2d.hdev
- hdevelop/Calibration/Hand-Eye/calibrate_hand_eye_stationary_cam_approx_sphere.hdev
- hdevelop/Deep-Learning/AI2Interfaces/optimize_dl_model_for_inference_classification_openvino.hdev
- hdevelop/Deep-Learning/Instance-Segmentation/dl_instance_segmentation_workflow.hdev
- hdevelop/Identification/Data-Code/print_quality_reflectance_reference.hdev
- hdevelop/Manuals/HDevelop/dictionary_notation.hdev
- hdevelop/Matching/Correlation-Based/ncc_matching_workflow.hdev
- hdevelop/Matching/Shape-Based/adapt_shape_model_high_noise.hdev
- hdevelop/Matching/Shape-Based/alignment_for_ocr_in_semiconductor.hdev
- hdevelop/Matching/Shape-Based/create_shape_model_xld.hdev
- hdevelop/Matching/Shape-Based/find_aniso_shape_model.hdev
- hdevelop/Matching/Shape-Based/find_shape_low_contrast_high_noise.hdev
- hdevelop/Tuple/Data-Containers/dictionary_migration.hdev
- solution_guide/basics/variation_model_illumination.hdev
- solution_guide/basics/variation_model_single.hdev
- solution_guide/matching/align_measurements.hdev
- solution_guide/matching/create_roi_via_vision.hdev
- solution_guide/matching/first_example_shape_matching.hdev
- solution_guide/matching/multiple_models.hdev
- solution_guide/matching/multiple_objects.hdev
- solution_guide/matching/process_shape_model.hdev
- solution_guide/matching/rectify_results.hdev
- solution_guide/matching/reuse_model.hdev
- solution_guide/matching/synthetic_circle.hdev
Bug Fixes
- The example hdevelop/Segmentation/Threshold/fast_threshold.hdev has been removed.
- The HDevelop example
hdevelop/explore_halcon.hdev threw an exception if no Deep Learning
license was available. This problem has been fixed by adding a license
check to the example.
HDevEngine
Bug Fixes
- When executing programs
or procedures with par_start subthreads, an uncaught exception in a
subthread could cause a crash of the application. This problem has been
fixed.
- When JIT compiling procedures that contained comparisons of iconic variables using the ==
operator, the HEngine could crash either during the compilation or when
attempting to execute the compiled procedure. This problem has been
fixed.
HALCON Library
Speedup
- emphasize is now faster for byte images. In particular, the following speedups can be expected for a 512x512 image:
|
Filter Size
|
Factor
|
Speedup
|
|---|
|
3x3
|
1.0
|
up to 265%
|
|
5x5
|
1.0
|
up to 195%
|
|
15x15
|
1.0
|
up to 90%
|
|
|
|
|
|
3x3
|
0.7
|
up to 10%
|
|
5x5
|
0.7
|
up to 10%
|
|
15x15
|
0.7
|
up to 10%
|
- get_data_code_2d_results
is now faster for various print quality inspection standards supported
by HALCON including ISO/IEC15415, ISO/IEC TR29158, SEMI T10, and AIM
DPM-1-2006. A speedup of up to 250% can be achieved on multi-core
systems on images with highly resolved data codes (module size at least
10 pixels). The speedup heavily depends on the resolution and size of
the data code. For data codes of medium size and with modules of about
15 pixels in width and height, a speedup of up to 140% can be expected.
In addition, for Data Matrix ECC 200 codes a significant speedup can be observed
even without parallelization.
- inner_rectangle1 is now faster by up to 17000%.
- interleave_channels
now also supports uint2 image types and is able to make use of the
SSE2/SSSE3 instruction sets. This results in speedups of up to 85%.
- prepare_object_model_3d is now up to 34% faster.
xyz_to_object_model_3d is up to 70% faster for real images.
zoom_image_factor is up to 11% faster for uint2 images. - sobel_dir
for byte image type and 'sum_sqrt' for parameter 'FilterType' is now
supported on computers that support the AVX512BW instruction set. The
operator is 17% faster than the implementation in AVX2 in this case.
- zoom_image_factor is now faster for images of type byte by up to 20% for 'Interpolation' set to 'nearest_neighbor'.
New Functionality
3D
- vector_to_pose
has been extended with the ability to determine the pose for line-scan
cameras with perspective (entocentric) lenses. The parameter Method must
be set to 'line_scan' for this type of cameras. The documentation has
been extended accordingly.
- get_stereo_model_param
has been extended with the parameters 'from_cam_param_rect N',
'to_cam_param_rect N', 'from_cam_pose_rect N', 'to_cam_pose_rect N', and
'rel_pose_rect N' to get the camera parameters, poses, and relative
poses of camera pair N, respectively.
- HALCON has been extended with the operator point_pluecker_line_to_hom_mat3d that computes a rigid 3D transformation from point-to-line correspondences. The lines are specified as Plücker coordinates.
- HALCON has been extended with the operators points_to_pluecker_line, point_direction_to_pluecker_line, pluecker_line_to_points, and pluecker_line_to_point_direction. They can be used to convert 3D line representations to and from Plücker coordinates. In particular, points_to_pluecker_line convert lines given by two points on the line to Plücker coordinates, while point_direction_to_pluecker_line converts lines given by a point on the line and the line direction to Plücker coordinates. Furthermore, pluecker_line_to_points converts lines given in Plücker coordinates to lines given by two points on the line, while pluecker_line_to_point_direction converts lines given in Plücker coordinates to lines given by a point on the line and the line direction.
- HALCON has been extended with the operators distance_point_pluecker_line and distance_point_line. They compute the distance of 3D points from 3D lines. In particular, distance_point_pluecker_line computes the distance for lines represented by Plücker coordinates, while distance_point_line computes the distance for lines represented by two points on the line.
Bar Code
- find_bar_code
now offers the possibility to specify the maximum allowed barcode
width. For this, the new generic parameter 'barcode_width_max' must be
set to an appropriate width in pixels via set_bar_code_param.
- The print quality
inspection of 2D codes according to ISO/IEC15415 and of 1D codes
according to ISOIEC15416 has been extended with the parameters
'quality_isoiec15415_reflectance_reference' and
'quality_isoiec15416_reflectance_reference', respectively, to set a
calibrated reference gray value for print quality inspection. This
reference gray value is used to assess certain grades, e.g., Symbol
Contrast.
- HALCON now supports
all GS1 application identifiers specified in the latest version of the
"GS1 General Specifications" (January 2021).
- The bar code reader is
more robust in regard to blurred Code 128/GS1-128 codes. Now, codes
with a larger amount of blur can be read.
The HDevelop example program
hdevelop/explore_halcon.hdev as well as the custom HPeek demo have been
extended with two new images of blurred Code 128/GS1-128 codes:
- images/barcode/code128/code128_blurred.png
- images/barcode/gs1_128/gs1_128_blurred.png
Calibration
- The new HDevelop
example program
hdevelop/Calibration/Hand-Eye/calibrate_hand_eye_stationary_cam_approx_sphere.hdev
shows how to perform a hand-eye calibration for a robot and a
stationary 3D sensor with a calibration sphere held by the robot.
- get_calib_data_observ_contours has been extended with a parameter 'marks_with_hole', which allows returning only marks detected as having holes. Further, find_calib_object can now easier detect calibration patterns. Note that this change affects the compatibility. Read more.
Data Code
- find_data_code_2d
has been enhanced for large images with many Data Matrix ECC 200 codes and/or a
highly structured background. For these images, the number of code
candidates can become very high, especially with certain parameter
settings like 'maximum_recognition'. For performance reasons, the Data Matrix ECC
200 reader always stopped after 10000 processed candidates. Now, the
number of considered candidates can be increased by setting the find_data_code_2d parameter 'symbol_search' to 'exhaustive'. Then, all candidates will be taken into account if needed.
- The process of
locating a Data Matrix ECC 200 code for print quality grading has been improved. As a
consequence, print quality grading on Data Matrix ECC 200 codes is now slightly
more robust.
- The print quality
inspection of 2D codes according to ISO/IEC15415 and of 1D codes
according to ISOIEC15416 has been extended with the parameters
'quality_isoiec15415_reflectance_reference' and
'quality_isoiec15416_reflectance_reference', respectively, to set a
calibrated reference gray value for print quality inspection. This
reference gray value is used to assess certain grades, e.g., Symbol
Contrast.
- For print quality
grading of Data Matrix ECC 200 codes, HALCON now supports the additional reflectance
check according to ISO/IEC 15415:2011 7.7. The new get_data_code_2d_results parameter 'quality_isoiec15415_additional_reflectance_check' has been added to obtain the result of this check.
- HALCON now supports
all GS1 application identifiers specified in the latest version of the
"GS1 General Specifications" (January 2021).
Deep Learning
- HALCON has been extended with deep learning-based instance segmentation to locate and segment objects simultaneously.
Instance segmentation is an extension of object
detection, i.e., the location of an instance within the image is given
by a rectangular, axis parallel, or oriented bounding box. Additionally,
the segmentation of an instance is given by a region.
create_dl_model_detection has been extended with the generic parameter 'instance_segmentation' to create a deep learning model for instance segmentation.
All parameters for object detection apply in the same way to instance segmentation.
The new model parameter 'mask_head_weight' has been
introduced to balance the influence of the instance segmentation loss
against the detection and classification losses.
For all other purposes besides creation, the general purpose dl_model operator set is used.
The dl_model procedures have been extended to handle instance segmentation in the following way:
- The procedure read_dl_dataset_from_coco
is now able to read segmentation masks that are stored in the COCO
format. Such masks are stored in the 'mask' field in the samples of the
returned DLDataset.
- The procedure gen_dl_samples now accepts the generic parameter 'instance_type' set to 'mask'.
- The procedure preprocess_dl_samples
now accepts the value 'mask' for key 'instance_type' in the input
dictionary DLPreprocessParam. If this is the case, also the ground truth
mask regions are preprocessed.
- In the procedure create_dl_preprocess_param, 'instance_segmentation' has to be set to 'true' for an instance segmentation dataset.
When using the procedure create_dl_preprocess_param_from_model, it is automatically set. - The procedure augment_dl_samples has been extended to handle instance segmentation data.
- The procedure evaluate_dl_model has been extended with the generic parameter 'evaluate_mask'.
For instance segmentation models, the IoU of
instances is computed on the predicted object masks. Setting
'evaluate_mask' to 'false' evaluates the model on the predicted bounding
boxes, as if it was an object detection model.
The procedure dev_display_dl_data now also displays the ground truth and result masks if they are given in DLSample and DLResult, respectively.
The HDevelop example
hdevelop/Deep-Learning/Instance-Segmentation/dl_instance_segmentation_workflow.hdev
has been added to show how to use deep learning based instance
segmentation in HALCON. This example uses ground truth annotations in
hdevelop/Deep-Learning/Instance-Segmentation/pill_bag_instance_segmentation.hdict.
The reference manual chapter "Object Detection" has
been extended to describe how to use the new deep learning functionality
("Deep Learning" > "Object Detection / Instance Segmentation").
Please note that this functionality has special
system requirements like all other deep learning functionality. Please
ensure that the components "Deep Learning Core" and "Deep Learning Data"
are selected in the MVTec Software Manager (SOM) for installation. It
also contains the images and pretrained models for the example. Please
refer to the Installation Guide for more information. - There is now an
OpenVINO AI Accelerator Interface, which can be obtained using SOM. The
HDevelop example
hdevelop/Deep-Learning/AI2Interfaces/optimize_dl_model_for_inference_classification_openvino.hdev
has been added to show how to use the Accelerator Interface. Per
default, HALCON OpenVINO AI Accelerator Interface comes with the
OpenVINO CPU Plugin. Other OpenVINO plugins require an additional
installation of the OpenVINO toolkit.
- The deep learning model types 'detection' and 'segmentation' now support the parameter 'class_names'. The output of apply_dl_model for the model type 'detection' now contains the parameter 'bbox_class_name'.
- The TensorRT AI²
interface now also supports Jetpack 4.6 for aarch64-linux. Moreover, it
has been updated to TensorRT version 8.0.3 for x64-windows and
x64-linux.
- The NVIDIA CUDA Deep
Neural Network library (cuDNN) has been updated to version 8.2.0. HALCON
ships and supports this library for the two CUDA versions 10.2 and
11.1. The libraries can be found in the cuda10_2 and cuda11_1 subdirectories of the thirdparty library directory.
- The NVIDIA CUDA Deep
Neural Network library (cuDNN) on Linux aarch64 has been updated to
version 8.2.1, which comes from NVIDIA JetPack 4.6.
- get_dl_model_param has been extended with the parameter 'layer_names', which returns the name of every layer in the model.
- create_dl_layer_activation has been extended to allow the creation of a leaky ReLU layer. Furthermore, read_dl_model can now read ONNX models containing leaky ReLU layers.
- The procedure determine_dl_model_detection_param
has been extended with the generic parameters 'image_size_constant' and
'compute_max_overlap'. The default of both parameters is 'true'. If
'image_size_constant' is 'true' it is assumed that all images have the
same size to speed up the procedure. If 'compute_max_overlap' is 'true',
the procedure additionally estimates the values for 'max_overlap' and
'max_overlap_class_agnostic' and adds them to the output dictionary.
Further, the parameters 'class_ids', 'image_width',
'image_height', and 'instance_type' are now part of the output
dictionary. Note that this change affects the compatibility. Read more. - The procedure preprocess_dl_dataset
has been improved. The option 'overwrite_files' now accepts the value
'auto'. In 'auto' mode, the preprocessed data is only regenerated if
necessary. All deep-learning-based examples have been updated to use the
new option where possible.
Image
- interleave_channels
now also supports uint2 image types and is able to make use of the
SSE2/SSSE3 instruction sets. This results in speedups of up to 85%.
Matching
- set_generic_shape_model_param has been extended with the parameter 'model_identifier', which allows users to set their own string as model name.
- get_generic_shape_model_param has been extended with the parameter 'scale_type', which describes the type of scaling of a shape model.
- The following operators of the generic shape-based matching interface were extended to enable the clutter feature:
Further, the operator get_generic_shape_model_object has been added.
Moreover, the clutter feature has been extended with
the automatic parameter estimation for 'clutter_contrast' and
'clutter_hom_mat_2d' for the image case.
The new HDevelop example program
hdevelop/Applications/Robot-Vision/pick_and_place_2d.hdev shows how to
use the clutter functionality with the new operator interface.
- set_generic_shape_model_param now also takes integers as input for certain float type parameters to improve the usability. The affected parameters are:
'angle_end', 'angle_start', 'greediness',
'iso_scale_max', 'iso_scale_min', 'max_clutter', 'origin_column',
'origin_row', 'restrict_iso_scale_max', 'restrict_iso_scale_min',
'restrict_scale_column_max', 'restrict_scale_column_min',
'restrict_scale_row_max', 'restrict_scale_row_min', 'scale_column_max',
'scale_column_min', 'scale_row_max', 'scale_row_min'.
- The handle inspect
for shape-matching models has been improved. Now, the parameters are
clustered according to their logical groups of model, search, and iconic
parameters.
Furthermore, the handle inspect now distinguishes
between shape models created with the newer operators for shape matching
(create_generic_shape_model, train_generic_shape_model), and shape models created with the customary operators (create_shape_model, create_shape_model_xld, create_scaled_shape_model, create_scaled_shape_model_xld, create_aniso_shape_model, create_aniso_shape_model_xld). Thereby, the model parameters are displayed in the same way as the set parameters and only show relevant information.
- The shape-based
matching examples have been updated to use the generic interface. This
concerns the following HDevelop standard examples:
- hdevelop/Applications/Measuring-2D/pm_measure_board.hdev
- hdevelop/Applications/Position-Recognition-2D/matching_image_border.hdev
- hdevelop/Matching/Shape-Based/create_shape_model_xld.hdev
- hdevelop/Matching/Shape-Based/find_aniso_shape_model.hdev
- hdevelop/Matching/Shape-Based/find_shape_low_contrast_high_noise.hdev
as well as the following documentation examples:
- solution_guide/basics/variation_model_illumination.hdev
- solution_guide/basics/variation_model_single.hdev
- solution_guide/matching/align_measurements.hdev
- solution_guide/matching/create_roi_via_vision.hdev
- solution_guide/matching/first_example_shape_matching.hdev
- solution_guide/matching/multiple_models.hdev
- solution_guide/matching/multiple_objects.hdev
- solution_guide/matching/process_shape_model.hdev
- solution_guide/matching/rectify_results.hdev
- solution_guide/matching/reuse_model.hdev
- solution_guide/matching/synthetic_circle.hdev
The following new example has been added to
demonstrate an additional use-cases:
hdevelop/Matching/Shape-Based/alignment_for_ocr_in_semiconductor.hdev
The changes made the following examples redundant, which have been removed:
create_model_green_dot.hdev, matching_coins.hdev, matching_green_dot.hdev, multiple_scales.hdev - The new HDevelop
example program
hdevelop/Matching/Correlation-Based/ncc_matching_workflow.hdev shows the
basic workflow for normalized cross correlation (NCC) matching.
Miscellaneous
- HALCON now
officially supports macOS 11 and macOS 12 on Intel® processors. Library
and HDevelop IDE are also executable on Apple Silicon processors via the
Rosetta 2 emulator. Note that this change affects the compatibility. Read more.
- After having been deprecated for some time, OpenCL support has been removed from the macOS version of HALCON.
System
- HALCON now offers operators that convert between JSON strings and dictionaries. The new operator json_to_dict converts a string containing valid JSON into a HALCON dictionary, similar to reading a JSON file with read_dict but without requiring an intermediate file. The new operator dict_to_json transforms a dictionary into a JSON string. Additionally, the operator write_dict can now write JSON files.
- HALCON now only attempts to load and initialize X11 support when a HALCON operator is called that uses X11 functionality.
Tuple
- The operators get_handle_param, get_dict_param, and get_message_param
now no longer raise an error when querying 'key_data_type' or
'key_exists' with an empty tuple as keys. Instead, an empty tuple is
returned.
- get_dict_tuple now allows obtaining the values of multiple keys if all of those keys map to a tuple with a length of 1.
- The new operator set_dict_tuple_at
allows modifying tuples in a dictionary. This is more efficient than
first reading the tuples from and then writing them back into the
dictionary.
Bug Fixes
3D
- simplify_object_model_3d in rare cases generated meshes that subsequently could not be segmented by segment_object_model_3d but raised an error. This problem has been fixed.
- read_object_model_3d sometimes raised an error for .ply files written by write_object_model_3d if the 3D model contained point attributes whose names only differed by a preceding '&'. This problem has been fixed.
- read_object_model_3d
returned the error 0005 ("Operator failed (FAIL)") if the names of PLY
properties were not unique. This problem has been fixed. Now, read_object_model_3d returns the error 9510 ("Invalid 3D file") with the extended error code "PLY: 'PROPERTY' name not unique".
- triangulate_object_model_3d
with 'Method' set to 'implicit' in rare cases generated meshes that
were not watertight, i.e., were not completely closed. This problem has
been fixed.
- In rare cases, window
operations may have crashed or malfunctioned during or after calls to
operators using OpenGL. This problem has been fixed.
- set_scene_3d_instance_param did not work correctly if (unrelated) instances had been removed from the scene before.
Further, the HDevelop variable inspect did not
handle deleted instances, cameras, and lights correctly. These problems
have been fixed. Note that this change affects the compatibility. Read more. - find_ncc_model did not find a good match in very rare cases. This problem has been fixed.
Bar Code
- In rare cases, the barcode training with find_bar_code failed due to a wrong element_size. This problem has been fixed.
- In rare cases, find_bar_code
could misread certain GS1 Databar Limited barcodes, resulting in a
slightly wrong symbol region and an incorrectly decoded string. This
problem has been fixed.
- In very rare cases, find_bar_code computed wrong scanlines if the parameter 'merge_scanlines' was set to 'true'. This problem has been fixed.
- Trying to access
quality grades for uint2 images resulted in a crash as the bar code
reader does not support PQI for uint2 images. This problem has been
fixed. Now, an error is returned stating that the requested
functionality is not implemented.
- get_bar_code_result
sometimes returned the wrong orientation of decoded codes because the
reading direction was ignored. This problem could only occur if the
generic parameter 'small_elements_robustness' was set to 'true' and the
underlying feature was actually used for the decoding step. This problem
has been fixed.
- For PharmaCodes with 16 bars, get_bar_code_result always returned the 'Decode' grade 0 ('quality_isoiec15416'). This problem has been fixed.
- In some cases, find_bar_code
did not return any result if it was aborted or a timeout was set even
though results could have been found with a smaller timeout or earlier
abort. This problem has been fixed.
- For PharmaCode and 2/5 Industrial bar codes, get_bar_code_result
returned only 7 or 8 quality grades ('quality_isoiec15416',
'quality_isoiec15416_float_grades') and values
('quality_isoiec15416_values') even though 9 corresponding quality grade
names were returned by 'quality_isoiec15416_labels'. For these code
types some of the grades are not defined in a corresponding standard and
were therefore not returned. This problem has been fixed. Now, in
general 'N/A' is returned for quality grades and values that are not
defined. Note that this change affects the compatibility. Read more.
Calibration
- calibrate_cameras
sometimes had issues with purely telecentric camera setups if the first
calibration pattern observed by the first camera was not tilted. This
problem has been fixed. Now, calibrate_cameras also considers other cameras and calibration patterns until it finds a pair with tilt.
Color Processing
- trans_to_rgb
with color space 'yiq' could return wrong gray values in rare cases for
input images of type 'uint2'. This issue has been fixed. Note that this
change affects the compatibility. Read more.
- In rare cases, an overflow could occur in the operator trans_from_rgb for the color spaces 'cielchab' and 'cielchuv', leading to wrong results for single pixels. This problem has been fixed.
Data Code
- In some cases, get_data_code_2d_results
returned inaccurate print quality inspection grades for Data Matrix ECC 200 codes
('quality_isoiec15415', 'quality_aimdpm_1_2006',
'quality_isoiec_tr_29158', 'quality_semi_t10_values') if the data code
parameter 'small_modules_robustness' was set to 'high'. This problem has
been fixed.
- Some internal edge
computations in the data code reader were incorrect. This problem has
been fixed. As a consequence, some codes that could be decoded in older
versions of HALCON cannot be decoded anymore. However, this fix slightly
increases the decoding performance of the data code reader in general.
- In rare cases, the
print quality inspection for Data Matrix ECC 200 code used a wrong estimation for
the grid and returned slightly incorrect grades. This problem has been
fixed.
- get_data_code_2d_results
returned inaccurate values for some of the print quality values queried
with the parameter 'quality_semi_t10_values'. This problem has been
fixed. Note that this change affects the compatibility. Read more.
- In rare cases, find_data_code_2d
did not return deterministic results for the symbol type Data Matrix
ECC 200 if a very tight timeout had been specified by the user. This
could have an impact on subsequent calls, e.g., the print quality
assessment, and lead to inconsistent grades and values in multiple runs.
However, this issue could only occur if 'specific_parallelization' for
Data Matrix ECC 200 was enabled. This problem has been fixed.
- The grades for Unused
Error Correction, Modulation, and Reflectance Margin have been computed
incorrectly for M1 MicroQR codes. This problem has been fixed.
- In very rare cases, a
too strict assumption about the position of the Data Matrix ECC 200 solid pattern could lead to issues during the print quality inspection.
This problem has been fixed.
- get_data_code_2d_objects
leaked memory if the process and/or search image for candidates with a
process and/or search image on pyramid level -1 was queried.
Additionally, get_data_code_2d_objects leaked memory if the process and/or search
image for DotCode candidates was queried. These
problems have been fixed.
- find_data_code_2d may have leaked memory for Data Matrix ECC 200 codes if find_data_code_2d returned an error. This problem has been fixed.
- The QR code reader crashed in rare cases with very small codes. This problem has been fixed.
Deep Learning
- In some deep learning procedures, there were overlaps and other unsightly text representations. These problems have been fixed.
- After interrupting the execution of apply_deep_ocr
in 'auto' mode, the resulting dictionaries could have contained
inconsistent results of the detection and recognition components. This
problem has been fixed.
- Specifying the parameter 'check_params' as 'true' in a DL preprocessing dictionary raised an error in the procedure preprocess_dl_samples. This problem has been fixed.
- After using the operator optimize_dl_model_for_inference it was possible to set the calibrated model to a runtime or device for which it was not calibrated by using the operator set_dl_model_param. This problem has been fixed.
- Trying to change the
'recognition_image_height' parameter of a Deep OCR handle did not raise
any error. This problem has been fixed. Now, the error 1302 ("Wrong
value of control parameter 1") is raised.
- The operators gen_dl_model_heatmap, serialize_dl_model, write_dl_model, and optimize_dl_model_for_inference were not reentrant. This could lead to a crash if the model was used by more than one thread. This problem has been fixed.
- The procedure train_dl_model
did not handle evaluation measures correctly that are not based on the
top-k error. The visualization and evaluation summary was incorrect.
This problem has been fixed.
- read_dl_model and read_deep_ocr
crashed when an empty tuple was passed as the file name. This problem
has been fixed. Now, the error 1401 ("Wrong number of values of control
parameter 1") is raised. Note that this change affects the
compatibility. Read more.
- In rare cases, the basins returned by watersheds_marker were incorrectly grouped, such that basins at the image or region boundary were assigned to the wrong marker. This problem has been fixed. Note that this change affects the compatibility. Read more.
- The inspection of a
dl_model handle did not show the entry 'layer_weights' if the model was
not initialized on a runtime. Accordingly, the operator get_handle_tuple
threw an error for the parameter 'layer_weights'. This problem has been
fixed. Now, the 'layer_weights' property of a dl_model handle is
available if applicable. Note that some pretrained models do not allow
access to the weights.
- get_dl_model_layer_activations
could not be used to access output activations when using the inference
with an AI accelerator interface. This problem has been fixed.
- Reading ONNX models with read_dl_model could crash if the model graph contained nodes without inputs. This problem has been fixed.
- After setting the
model runtime to 'cpu' for deep learning models with very large image
dimensions or large batch sizes, a crash could occur. This problem has
been fixed.
- optimize_dl_model_for_inference could be applied on a model that was already optimized by a previous call of the operator. This problem has been fixed. Now, optimize_dl_model_for_inference
returns the error 7917 ("Unsupported operation on converted model") in
this case. Note that this change affects the compatibility. Read more.
Feature
- shape_histo_point did not return meaningful results for 'AbsoluteHisto' when 'Feature' was set to 'holes'. This problem has been fixed.
File
- Using write_image_metadata to write tags into compressed multipage TIFF files could result in corrupted TIFF files. This problem has been fixed.
- Writing tags with write_image_metadata
in a specific order into a TIFF file of an image with reduced domain in
mode 'mask' corrupted the TIFF file. This problem has been fixed.
Filter
- The reference manual entry of abs_image
did not specify the type of the output image and did not explain what
happens in case of overflows or underflows. This problem has been fixed.
- scale_image in rare cases handled overflows incorrectly for 'int4' and 'int8' images. This problem has been fixed.
- highpass_image returned wrong results for filter matrices of size 1x1 for uint2 images. This problem has been fixed.
- edges_sub_pix
did not throw an error when the size of the input image was not large
enough for the filter masks used by the different edge filters. A
similar issue also affected the operator lines_facet.
These problems have been fixed. Now, an error message is properly
returned in case the input is smaller than the used filter masks.
- mirror_image was not parallelized correctly for the mode 'diagonal'. This problem has been fixed.
- In rare cases, optical_flow_mg could return nondeterministic results that might include NaNs. This problem has been fixed.
Graphics
- create_drawing_object_line and create_drawing_object_xld used a marker for visualization that pointed into the wrong direction. This problem has been fixed.
- Complemented regions
were displayed incorrectly if the system variable 'clip_region' was set
to 'false'. This problem has been fixed.
- disp_obj with the '3d_plot' paint mode displaying contour lines crashed in rare cases on Linux systems. This problem has been fixed.
Images
- threshold in rare cases did not clip 'MinGray' and 'MaxGray' to the correct bounds for 'int4' images. set_grayval in rare cases did not clip 'Grayval' to the correct bounds for 'int8' images. gen_image_proto, paint_region, and overpaint_region in some cases for large values did not paint the correct 'Grayval' for 'int8' images. These problems have been fixed.
- cooc_feature_matrix could crash on non-symmetric input. This problem has been fixed. Now, cooc_feature_matrix returns the error 2106 ("Wrong image width") in case of non-symmetric input.
Matching
- An error in the
parallelization of shape-based matching resulted in a miss of a
potential match in very rare cases. This problem has been fixed.
- For find_shape_model, find_shape_models, find_scaled_shape_model, find_scaled_shape_models, find_aniso_shape_model, find_aniso_shape_models, and find_generic_shape_model,
least-squares refinement was not executed properly in rare cases if
'max_deformation' was set to a value greater than 0 and the pyramid
level on which the refinement was done was greater than 1. This problem
has been fixed.
- set_shape_model_metric, set_local_deformable_model_metric, set_planar_calib_deformable_model_metric, and set_planar_uncalib_deformable_model_metric crashed in rare cases when the operator was cancelled or when an out of memory error occurred. This problem has been fixed.
- get_generic_shape_model_result_object returned incorrect 'contours' and 'clutter_region' if an origin other than 0,0 was set. This problem has been fixed.
- find_generic_shape_model did not parallelize internally. Further, the timeout was not supported. These problems have been fixed.
Miscellaneous
- run_bg_esti with 'GainMode' set to 'frame' did not apply the adapted Kalman gains properly in rare cases. This problem has been fixed.
OCR
- In some cases, find_text returned overlapping or duplicate regions when using text models created with mode 'auto'. This problem has been fixed.
Segmentation
- threshold
does not give a low-level error anymore if for 'real' and
'vector_field' type images the parameters 'MinGray' and 'MaxGray' are
provided as 'double' but used as 'float'. The documentation has been
updated to describe the behavior of threshold in these cases. Note that this change affects the compatibility. Read more.
Tuple
- For certain 'Start'/'End' combinations together with a real-valued 'Step' size, tuple_gen_sequence
returned a sequence of unexpected length. For example, [0:0.1:0.3]
resulted in [0, 0.1, 0.2] instead of [0, 0.1, 0.2, 0.3]. This problem
has been fixed. Now, the length of the sequence as well as the last
sequence value are computed more robustly, thus giving the expected
result within a wider range of input values.
XLD
- Certain excessively large values of 'Lookaround' for get_contour_angle_xld were not detected as invalid, resulting in a crash. This problem has been fixed.
- gen_contour_nurbs_xld
crashed if an empty tuple was passed to the parameter 'Weights'. This
problem has been fixed. Now, if an empty tuple is passed, the default
value 'auto' is used.
- distance_cc_min_points returned an erroneous point in case of crossing contours. This problem has been fixed.
- distance_cc_min_points returned wrong point coordinates in rare cases if the contours intersected. This problem has been fixed.
- select_shape_xld crashed for certain features when a contour with exactly one point was passed. This problem has been fixed.
Procedures
Bug Fixes
- The procedure dev_disp_button returned even if the mouse button was still pressed. This problem has been fixed. Now, dev_disp_button returns when the mouse click ends. Note that this change affects the compatibility. Read more.
Language Interface Example Programs
Bug Fixes
- The example ia_callback.cpp hung upon closing. 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.
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 Programmer's Guide has been improved by replacing ASCII diagrams with more pleasing graphical representations in chapter 15.
User Guides
- The HDevelop User's Guide now contains a section describing how to work with dictionaries. In particular, the new syntax using dict expressions is explained.
- The keyboard shortcut
Ctrl+Alt+arrow key has been removed from the documentation. Instead of
panning the image by 10 pixels, this shortcut changes the display
orientation on most Windows systems.
- The Installation Guide now makes clearer that the term "runtime version modules" only refers to licenses.
- The Installation Guide now describes the installation via the MVTec Software Manager.
- The description of the available shortcuts for autocompletion has been improved.
Solution Guides
- The Solution Guides I and
II-B have been updated concerning the shape-based matching entries.
Now, they refer to the generic interface.
Reference Manual
- The reference manual entry for connection_object_model_3d missed to mention select_object_model_3d as possible alternative. This problem has been fixed.
- The reference manual entry for dev_open_tool has been restructured to enhance its readability.
- The reference manual entry for find_planar_uncalib_deformable_model contained a paragraph that was only available in German. This problem has been fixed. Now, it is included for all languages.
- The description of the parameter 'TargetClasses' in the reference manual entry of gen_dl_model_heatmap was misleading. This problem has been fixed.
- The reference manual entry of get_deep_ocr_param missed information about the image preprocessing. This problem has been fixed.
- The reference manual entry for get_disp_object_model_3d_info
erroneously mentioned that the operator would return an error in case
of faulty row and column input values. This problem has been fixed.
- get_dl_model_param has been extended with the parameter 'layer_names', which returns the name of every layer in the model.
- The reference manual entry of measure_pos did not clearly state how to derive useful values for the parameter 'Threshold'. The reference has been adapted accordingly.
- The reference manual entry of reconstruct_surface_stereo
stated that small base lines instead of long base lines between camera
pairs are more suitable for the extraction of depth information. This
problem has been fixed.
- segment_object_model_3d
has been extended with the generic parameter 'surface_check', which can
be used to enable or disable internal checks of the surface topology of
an object model.
- The reference manual entry of set_calib_data has been streamlined by replacing duplicate information with a link to the original information.
- The reference manual entries for set_camera_setup_param, query_color, create_planar_uncalib_deformable_model, and query_calib_data_observ_indices contained translation errors. Further, the entry for dev_close_tool showed an erroneous code snippet. These problems have been fixed.
- The reference manual entry for the operator try referred to a preference option incorrectly. This problem has been fixed.
- tuple_is_number
was accidentally mentioned in the chapter "Tuple" > "Conversion" of
the reference manual while the correct place is "Tuple" > "Type".
This problem has been fixed.
- The reference manual
entries of the Deep Learning Framework operators were not available in
German. The translations have been added.
- The reference manual entry regarding calibration was extended with additional hints on taking a set of suitable images.
Miscellaneous
- The appearance of the help has been improved. Now, the colors of the help window correspond to the selected theme.
- The Solution Guide III-C 3D Vision has been extended with an introduction to Plücker coordinates.
- The HTML documentation
has been improved. So far, warnings and tips were only marked bold. Now,
they are marked with the same symbols that are already used to mark
them in the PDF.
- The HALCON documentation start page now has an entry linking to the AI² interface overview pages.
Installation
- The folder include/com
was part of the discontinued HALCON/COM interface and is no longer
needed. Thus it has been removed from the HALCON installation.
- The installation script
install-linux.sh is no longer needed when installing HALCON via the
MVTec Software Manager and thus has been removed from the file set.
Licensing
- When using a license that
requires CodeMeter Runtime, HALCON could crash if the CodeMeter Runtime
service was not running. This problem has been fixed.
- HALCON dongles can now be accessed over the network.
Release Notes of Previous HALCON Versions
Follow this link to read about the changes of previous HALCON versions.