Release Notes for HALCON 11.0.2
This document provides the release notes for MVTec HALCON 11.0.2, as released in
July 2013. HALCON 11.0.2 is primarily a maintenance release that
fixes all known bugs in HALCON 11.0.1; besides, it provides added
functionality.
Addendum to the Release Notes of HALCON 11.0.2
The bar code reader and the data code reader of the originally
released version of HALCON 11.0.2 had a few critical issues, as well
as the operator list_files and the method
GetGlobalCtrlVarTuple() of HDevEngine/.NET.
To solve these problems, the original version HALCON 11.0.2 was
substituted by an updated version HALCON 11.0.2.1.
Furthermore, some HALCON image acquisition interfaces have been revised
since HALCON 11.0.2. Note that for using the updated BitFlow interface and the updated LinX interface, you must install the respective
new SDK.
If you have already installed HALCON 11.0.2, we recommend to download
the update and install it over the existing installation. For this
purpose, the Windows installer has been adapted to replace the
respective files automatically.
To find out which version is currently installed, please open the
dialog "Help->About" in HDevelop. The correct versions and dates of
HDevelop and HALCON are: "HDevelop version: 11.0.2.2 (20.09.2013)" and
"HALCON version: 11.0.2.6 (20.09.2013)". The file version of the
HALCON library can also be checked with the following operator call:
get_system('file_version',FileVersion), or, under
Windows, by inspecting the file properties of the files halcon.dll and
halconxl.dll.
In particular, the following problems have been fixed:
Bar Code Reader
-
If the bar code reader was used in autodiscrimination mode with
'Code 128' or 'Code 93' included in the list of code types, then the
result for other code types could sometimes be corrupted. This
problem has been fixed. The problem was already reported as fixed
for HALCON 11.0.2, but that fix turned out not to cover all possible
cases.
-
The bar code print quality inspection had a memory leak. This
problem has been fixed.
Data Code Reader
-
The Aztec code reader crashed in rare cases. This problem only
occurred if find_data_code_2d was
successively called with images of varying image dimensions. This
problem has been fixed.
-
The data code print quality inspection may have returned incorrect
grades for unused error correction. This problem has been
fixed.
list_files on Asian Windows Systems
-
list_files returned the error 5200
("File not found") on Asian Windows systems, when a path was passed
that contained multi-byte characters. This problem has been
fixed.
HDevEngine/.NET
-
In HDevEngine/.NET, the method GetGlobalCtrlVarTuple() of the class
HDevEngine returned erroneous results for variables with multiple
values. This problem has been fixed.
In addition, HALCON 11.0.2.1 also fixes
the following problems:
HDevelop
-
In some cases, no line numbers and no insert cursor were shown
in the dialog based editor if new program lines were appended
to the end of an existing program. This problem has been
fixed.
-
If HDevelop's command line options were used to protect a
program, e.g., by executing hdevelop -protect:<password>
-convert <source> <target>, unused local procedures
were saved unprotected. Furthermore, if also the option
-no_export_of_referred_procs was used, all local procedures but
the main procedure were saved unprotected. This problem has
been fixed.
-
In code exported from HDevelop to C# and Visual Basic it is now
possible to exclude the action procedure from compilation via the
define NO_EXPORT_MAIN, analogous to code exported to C and C++.
3D Object Model
-
reduce_object_model_3d_by_view crashed
in some cases when called with more than one region. This problem
has been fixed.
-
intersect_plane_object_model_3d
crashed for some ill-defined object models, for example a cylinder
of radius zero, or a box with one of its dimensions being zero. This
problem has been fixed.
-
project_object_model_3d crashed in
some cases if the number of projected contours was zero. This
problem has been fixed.
Procedures
-
plot_tuple threw a division-by-zero exception when plotting graphs,
where either the parameter XValues or the parameter YValues (or
both) were tuples with constant values, e.g., [1,1,1,1,1]. This
problem has been fixed.
Additionally, the error messages for inconsistent start and end
values for the coordinate axes have been changed from "Error because
XAxisStartValue > XAxisEndValue" and "Error because
YAxisStartValue > YAxisEndValue" to "Value for 'start_x' is
greater than value for 'end_x'" and "Value for 'start_y' is greater
than value for 'end_y'".
Extension Packages
-
HALCON crashed while loading an extension package that contains more
than 74 operators. This problem has been fixed.
Modified Image Acquisition Interfaces
- The following HALCON image acquisition interfaces have been revised
since HALCON 11.0.2:
-
The new revision of the BitFlow
interface now is based on the BitFlow SDK 5.70. Furthermore, the
new revision supports the callback type 'exposure_end' and provides
several new parameters for direct register access.
-
The new revision of the DirectShow
interface provides an improved internal memory allocation to
avoid stack overflows.
-
The new revision of the File
(VirtualFG) interface solves a problem when grabbing files with
multiple channels and different image formats.
-
The new revision of the LinX
interface now is based on the LinX SDK 5.70. Furthermore, the
new revision supports the callback type 'exposure_end' and provides
several new parameters for direct register access.
-
The new revision of the LuCam
interface supports now also the new Lumenera USB 3.0 cameras.
-
The new revision of the OpenNI
interface now also supports the time-of-flight cameras from
Fotonic E-series as well as the PrimeSense Carmine series.
Furthermore, the new interface revision includes several improvements
regarding opening a device and an extended documentation.
-
The new revision of the Sentech
interface allows now to open cameras in any particular order.
-
The new revision of the uEye
interface includes various extensions and improvements such as the
support of user-specific callbacks for the callback types 'frame_ready',
'ready_for_trigger', 'first_packet_received', and 'query_capture_status' as
well as new color formats. Furthermore, the new interface revision provides
many new parameters, in particular to configure the HDR kneepoints, the
sequence ROI mode, and the multi roi mode.
- Please refer to the corresponding documentation for
information about additional changes, especially whether a new
revision of the corresponding device driver is required.
Compatibility
Licenses
HALCON 11.0 licenses are also valid for HALCON 11.0.2. In
contrast, all HALCON 10.0 licenses or licenses of earlier
versions must be replaced or upgraded. Please contact your local
distributor.
HALCON Library
HALCON 11.0.2 is fully compatible with HALCON 11.0 except for
the changed behavior of some operators due to bug fixes. Compared
to HALCON 10.0, many extensions have been introduced. Thus, the
HALCON 11.0 libraries are not compatible with HALCON 10.0 or
earlier versions.
In detail, please note the following incompatibilities with
respect to HALCON 11.0.1:
-
Because of a fix concerning the determination of
the angle and scale increment during the creation of shape models,
3D shape models, and NCC models, the created models might differ
from models created with previous versions. Therefore, the respective
matching results might also differ slightly. Sometimes, the runtime
can increase slightly, however, the search is now more robust.
-
Because of a fix concerning the creation of 3D
shape models, the created 3D shape models might differ
from models created with previous versions. Therefore,
the respective matching results might also differ slightly. The
runtime of create_shape_model_3d, the size
of the resulting model, and the runtime of find_shape_model_3d increased by about 15
percent, however find_shape_model_3d
is now more robust.
-
In order to provide a more useful error
message, interpolate_scattered_data_image
now returns the error 9053 ("No data points available") instead of the error
9205 ("Matrix is singular") if no data points are available for the
interpolation.
-
Because of a modification concerning the
projection of 3D shape models and a fix
concerning the runtime of the first projection of a 3D shape model
after reading it from file, the file format for 3D shape models
has been changed. 3D shape models written with HALCON 11.0.2 or newer
cannot be read by older versions of HALCON.
-
Because of a fix concerning the runtime of the
determination of connected components of a 3D object model,
the allocation of handle IDs of 3D object models has been changed.
Handles are not necessarily allocated in ascending order, i.e., the
first created 3D object model does not necessarily have the ID 0.
Note that the order of handle IDs is in general undefined and must
not be relied upon.
-
Because of a fix concerning the transfer of OM3
files between 32-bit systems and 64-bit systems, the file
format for OM3 files (HALCON 3D Object Model) has been changed. 3D
object models written in the OM3 file format with HALCON 11.0.2 or
newer cannot be read by older versions of HALCON, if they were
prepared for distance computation with prepare_object_model_3d using the voxel data
structure.
-
Because of a fix concerning the handling of
cameras with polynomial distortions, the file format for
descriptor models has been changed. Descriptor models written with
HALCON versions 11.0.1 or older are handled correctly by read_descriptor_model. New files written with
HALCON 11.0.2 or newer cannot be read by earlier HALCON versions.
The same applies to serialize_descriptor_model and deserialize_descriptor_model.
-
Because of a modification concerning the parameters of the operators
set_object_model_3d_attrib and set_object_model_3d_attrib_mod,
these operators do not longer raise an exception when the parameter
Type (which has been renamed to AttachExtAttribTo) is not set to an
empty tuple ([]) for standard attributes. Since this parameter is
only meaningful for extended attributes, it is now ignored when used
together with standard attributes.
HALCON Applications
Applications (i.e., executables) developed with HALCON 11.0 or
HALCON 11.0.1 can be used with HALCON 11.0.2, i.e., HALCON 11.0.2 is
binary compatible with HALCON 11.0 (except for applications that
use the HALCON/C++ interface) and HALCON 11.0.1.
All programs (C, C++, .NET, or COM) that have been developed
with HALCON 10.0.x must be recompiled.
The incompatibility with HALCON 10.0.x or earlier versions
mainly concerns the binaries, with only few changes in the
language interfaces. If you encounter problems during recompiling
your programs, please check the detailed description of changes
below and for HALCON 11.0 and HALCON 11.0.1, respectively.
Please note that applications using HALCON/.NET (and
HDevEngine/.NET) have local copies of the corresponding
assemblies (halcondotnet.dll etc.). After
installing HALCON 11.0.2, these applications would therefore use
the old version of the HALCON/.NET interface together with the
new version of the HALCON library. In order to benefit from the
bug fixes in the HALCON/.NET interface as well, you must either
replace the assemblies manually or recompile the projects. If you
do not recompile the application, you need to add an application
configuration file mapping the application's expected assembly
version to the new version. See the Programmer's Guide for
more information.
Image Acquisition Interfaces
The system requirements of the following image acquisition
interfaces have been changed since HALCON 11.0.1:
If you have developed your own acquisition interfaces with
HALCON 11.0 or HALCON 11.0.1, you can use them with HALCON 11.0.2
without further action.
Extension Packages
Extension packages developed with HALCON 11.0 or HALCON 11.0.1
can be used with HALCON 11.0.2 without further action. Extension
packages developed with HALCON 10.0.x or earlier versions must be
re-generated. Note that the old makefiles for HALCON/C++ must be
adapted according to the sample makefile under
extension_packages/halconuser.
ActivVisionTools
- If you have been using ActivVisionTools 3.2, please
contact your distributor for further information on how to run
this version together with HALCON 11.0.2.
-
ActivVisionTools 1.0 to 3.1 cannot be used with
HALCON 11.0.2. If the setup program detects such an
ActivVisionTools version, it warns you that by continuing to
install HALCON 11.0.2 you will disable your ActivVisionTools
installation.
If you still want to use your ActivVisionTools
installation you must also keep your old HALCON installation
and switch back to it as described in the Installation
Guide.
Major New Features of HALCON 11.0.2
Licensing
- USB dongles are now supported also for Mac OS X and for Linux
64-bit systems.
HALCON Library
Procedures
HDevelop
Examples
Documentation
Detailed Description of Changes in HALCON
11.0.2
Detailed release notes can be obtained for the following
topics:
HDevelop
Functionality
HDevelop Language
-
In HDevelop, the assign_at operator
accepts within the brackets left of the operator sign any kind of
tuple as indices. However, although it was possible to pass an
enumeration of index values directly within the brackets, a sequence
of indices with the new sequence operator [::] or [:] had to be put
into extra brackets: tuple[[start:step:end]] := values. These double
brackets were confusing, hence it is possible now to set the index
sequence of the result tuple within a single pair of brackets:
tuple[start:step:end] := values.
-
The CallStack window can now be opened via dev_open_tool('call_stack',...). Already
opened Graphics Windows and Program Listings can now be closed and
moved by using the operators dev_show_tool and dev_set_tool_geometry. For example, dev_show_tool('graphics_window',...) shows
or hides the active Graphics Window and dev_show_tool('program_listing',...) shows or
hides the active Program Listing.
Furthermore, all windows
can now be reached not only via the ToolId returned by dev_open_tool, but also via the name that
has been used to open it with dev_open_tool.
In general, if more than one window fits to the given name, it is
not defined which one is used, except for Graphics Windows and
Program Line Views, where the active one is used. If no window fits
to the given ToolId or name, an error is returned.
Assistants
-
The source selection in the Image Acquisition Assistant has
been changed to improve usability:
- The default setting is now acquisition from an image
acquisition device.
- The auto-detect button has been repositioned and
relabelled to more clearly indicate it should be pressed
before selecting an interface from the list.
- After successfully connecting to an interface, it will
become the default selection for future use.
-
The Matching Assistant has been extended with tooltips for the
parameters of the different matching methods.
-
Until now, the Matching Assistant has used completely independent
start directories for creating, loading, and testing of models.
Now, if the directory is changed from which the model image or the
model itself is loaded, this newly selected directory is used as
start directory for loading test images.
-
The Display button on the Usage tab card of the Matching Assistant
has been removed. By pressing this button, the selected image was
displayed in the Graphics Window. However, this was already achieved
by clicking on the respective entry in the list of test images. The
button was only needed if another image, e.g., selected via the
Variable View, had been displayed in the Graphics Window and then,
the selected test image should be displayed. This can now be
achieved by directly clicking on the respective entry in the list of
test images.
GUI
-
The Object Model 3D Inspection window has been extended by a second
rotation mode, which is similiar to the one provided by the procedure
visualize_object_model_3d and allows to set the display color for the
normals separately. Furthermore, the presentation of the coordinates of the
center and of the bounding box of the 3D object models has been corrected
for the case that more than one 3D object model is inspected.
-
If a variable of the semantic type 'any' is expected, the auto
completion list box of HDevelop now lists all available variables,
even object IDs and model IDs.
-
Now it is possible to copy not only the call to a local procedure but also
the local procedure itself, when HDevelop's Program Listing is used in the
full text editor mode. Before, this was only supported while the editor has
been set to dialog based editor mode before a paste operation has been
executed.
-
HDevelop now offers an option to load the recent program file
automatically when HDevelop is started. This option can be selected
via the General Options tab card within the Preferences dialog. In
addition, the command line options -load_recent_prog and
-load_no_prog can be used to control this behavior.
-
On Mac OS X, the resizing of internal HDevelop windows in MDI
mode was only possible via the grip in the lower right corner.
Now, it is possible to resize these windows also via the frame.
This behavior is similar to the one known from other operating
systems.
-
The shortcuts for closing HDevelop windows have been harmonized. Until now,
in MDI mode all MDI sub windows could be closed with Ctrl+W (or Cmd+W on
Mac OS X), but this did not work in SDI mode and for the Help window. In
addition, modal dialogs and most of the non-modal dialogs and tools -
except the Output Console and the Program Line View - could be closed with
the ESC key. The new behavior is: ESC can be used to close all dialogs and
tools, but not the four main windows, the Help window, and the assistants.
Ctrl+W (Cmd+W on Mac OS X) will close all non-modal dialogs and
windows both in MDI and SDI mode.
Bug Fixes
HDevelop Language
-
Within a program line, comments can follow after '//', however, this
did not work within global variable declarations and import
statements. These program lines became invalid by the '//'- comment.
This problem has been fixed.
-
Due to a problem with the HALCON operator
disp_obj, dev_display showed the
full image instead of just the pixels within the image domain if the
image domain had exactly the same dimensions as the window. This
problem has been fixed.
Procedures
-
Library procedures are supposed to know always and automatically about all
other procedures from the same library. Hence, procedure calls
within one procedure library should always get resolved, even if the
library was loaded explicitly and is not available through a
procedure path or an import statement. If, however, a library was
opened for editing without setting the procedure path, procedure
calls within the library sometimes did not get resolved. This
problem has been fixed.
-
If an HDevelop program contains in two or more different procedures
global variable declarations for the same variable name that give
different types, HDevelop chooses the type that is given in the
first declaration, and all declarations that give a different type
become invalid. If all valid declarations are removed or
deactivated, the up to now invalid declarations should become valid
and define the new type of the global variable. This, however, did
not happen, and the remaining declarations stayed invalid. HDevelop
might even have crashed as a consequence. This problem has been
fixed.
-
HDevelop crashed if some special operators like close_window were executed in the last line of a
procedure that has no final return statement. This problem has been
fixed.
-
HDevelop crashed when a procedure that is only available via an
import statement in the current program was
displayed in the Program window and a new program was created or
loaded. This problem has been fixed.
-
HDevelop sometimes saved explicitly opened procedures to the wrong
directory. This happened when the procedure was opened via
HDevelop's command line option and a program from a different
directory was loaded before saving the procedure. This problem has
been fixed.
Image Acquisition Assistant
-
The list of acquisition interfaces presented by the Image
Acquisition Assistant contained all known interfaces, even those not
supported on the specific HALCON architecture. In addition, on Mac
OS X, the list was not extended when new interfaces were placed
in /Library/Frameworks/HALCON.framework/Libraries/
These problems have been fixed.
Calibration Assistant
-
The Calibration Assistant could not load images on its Calibration tab card
if the path contained non-ASCII characters. This problem has been
fixed.
-
The Calibration Assistant remained in an inconsistent state after program
reset, loading of a new program, or creation of a new program, if
calibration had been successful at the time of any of these actions. In
this case, trying to access calibration data, e.g., by generating code via
'Code Generation' -> 'Calibration Data (tuple)' or by changing the
origin of the coordinate system of the camera pose via 'Results' ->
'Camera pose' -> 'Origin at Image Corner', the Calibration Assistant
reported that no calibration data was available. This problem has been
fixed.
-
The Calibration Assistant could crash when is was reused after calibration
in a different configuration. This problem has been fixed.
Matching Assistant
-
The Matching Assistant did not update the displayed matching method in the
GUI after loading the assistant settings from file. This problem has been
fixed.
-
The Matching Assistant crashed if the Usage tab card listed images
that have been acquired with the Image Acquisition Assistant, then,
the settings were saved, and finally reloaded into a new Matching
Assistant. This problem has been fixed.
-
In the Matching Assistant, it was not possible to switch between a
loaded model and a created model, although the settings made for the
models were displayed. This problem has been fixed.
-
The Matching Assistant generated incorrect code for loading a DXF model.
This problem has been fixed. Now, the following correct code is
generated:
read_contour_xld_dxf (DXFModelContours,
'model.dxf', [], [], DXFStatus)
-
If the path of the DXF file to be loaded by the Matching Assistant was very
long, it could happen that the Insert Code button was no longer visible.
This problem has been fixed.
-
The Matching Assistant could not load saved assistant settings with a DXF
model. This problem has been fixed.
-
When using the Matching Assistant with the deformable or shape-based
matching method, in some cases it was suggested to run the
optimization again with an lower score, even if the recognition rate
was already higher than requested. This happened if on the Usage tab
card 'Visible' was set to a value lower than the number of matches
found in the sample image. This problem has been fixed. Now the user
is informed to check the value of the parameter 'Visible'.
-
The Matching Assistant showed unnecessary parameters for the
deformable matching method. This problem has been fixed.
OCR Assistant
-
There were some problems in the border handling of the OCR
Assistant. For ROIs close to the image border, this could lead to
slightly different results reported by the OCR Assistant, the quick
setup, and the code generated by the assistant. This problem has
been fixed.
-
The OCR Training File Browser did not allow to add variations or
samples from a system font to a loaded training file in some cases,
because the respective menu entries were not enabled. This problem
has been fixed.
-
The OCR Training File Browser did not always show the complete image
of a sample in the detail view or thumbnail view. Sometimes only
the gray values of the associated regions were displayed, while in
other cases the gray values of the whole sample were displayed. This
problem has been fixed.
Program Listing/Editor
-
In some cases, the tooltip in the full text editor did not show the
contents of the variable under the mouse cursor, but only a general tooltip
of the program line. This happened within newly created procedures if the
procedure was created from the selected program lines of another procedure.
This problem has been fixed.
-
The auto completion support of the full text editor did not handle
negative values correctly. If for a specific parameter a negative
value was selected from the suggestion list and then TAB was pressed
in order to complete this parameter with a comma and go to the next
parameter, nothing happened. When the suggestion list was opened
again and the parameter was selected again, an additional minus
('-') was added. This problem has been fixed.
-
After using the auto completion function of the full text
editor for inserting one call of the operator open_framegrabber into a program, the values
suggested by the auto completion for an additional call of open_framegrabber were only correct if a valid
interface name was entered manually. Otherwise, the suggested values
were wrong. This problem has been fixed.
-
When using the auto completion of HDevelop, sometimes an invalid name was
inserted if the default parameter name was equal to an already existing
variable of a different type. This problem has been fixed.
-
The auto completion for open_framegrabber
was not working as expected. After using the auto completion
function of the full text editor for inserting one open_framegrabber call into the program, the values
suggested by the auto completion were not the default parameter
values. This problem has been fixed. Now, the auto completion function
inserts the correct default parameter values for open_framegrabber, i.e., the same values as returned
by info_framegrabber(..,'defaults',..).
-
The auto completion popup could occur even if the Program Editor window was
moved into the background. This could happen when another HDevelop window,
the Save As dialog, or another application was activated immediately after
editing a program line. In addition, if the Save As dialog was opened while
the auto completion popup was open, the auto completion popup was not
closed and could hide parts of the file dialog. These problems have been
fixed.
-
When the Program Listing displays Asian characters it could happen that the
line numbers became out of sync in relation to the Program Listing. This
problem has been fixed.
-
Depending on the GUI style and the number of external procedures,
the procedure name combo box popup list in the Program Listing window
could become very big and actually occupy the whole screen. This
happened if the selected GUI style was Cleanlooks or Macintosh,
which are the default styles for Linux and Mac OS X, respectively.
Under Windows, the problem occurred if HDevelop was started
explicitly with the Cleanlooks style by passing the command line
option -style Cleanlooks. This problem has been fixed.
-
By double clicking on a local or external procedure in one of the
Procedures tab cards of the Preferences dialog, this procedure is
displayed in the Program Window. For locked procedures, the combo
box of the Program Window was not updated, i.e., it still showed the
name of the previously selected procedure. This problem has been
fixed.
-
HDevelop crashed if a character was inserted before the very last character
of a program line and if in that moment that program line was not visible
in the editor because it was scrolled out-of-view. This problem has been
fixed.
-
HDevelop crashed when there was no Program Window and a procedure was
opened for editing, or if there was no Program Window and the replace
functionality of HDevelop's Find/Replace dialog was used. This problem has
been fixed.
-
If HDevelop was started with Japanese GUI, entering some selected
character sequences into the full text editor or the Operator window
could freeze HDevelop. This happened with any substring of 'thinning_seq' that was at least two
characters long, e.g., 'se', 'in', 'eq', or 'thin'. The same problem
could occur with procedures that have a long short description, with
long parts without any space (' ') or dash ('-'). This problem has
been fixed.
-
If another program was inserted into the current procedure via File
/ Insert Program / Insert All... or Insert Mainbody... and if then
this action was undone, e.g., with Ctrl+Z and redone again (Ctrl+Y),
all blocks that have been inserted from the other main procedure
became invalid. This problem has been fixed.
-
There were some minor problems with the Insert Program
functionality:
- There was no message box opened if the loading and inserting
of the program failed.
- The file dialogs that were opened by selecting any Insert
Program task listed also HDevelop procedure files, although
inserting external procedures is not supported.
- In HDevelop/Demo, the task 'Insert Mainbody' did not
work.
These problems have been fixed.
-
If there were two HDevelop instances running at the same time, and if
one instance was blocked by a long running operator, it could happen
that the other HDevelop instance did not respond when the clipboard
was used by this instance, e.g., by trying to copy and paste the
selected text into the full text editor. This problem has been
fixed.
Variable View
-
Empty regions were erroneously labeled as empty objects in the Variable
View, in the tooltip, and in the status bar. This problem has been
fixed.
-
If an HDevelop variable contained a very long string and if the
content of this variable was displayed in a tooltip, in the Variable
View, or in the Variable Inspect, HDevelop seemed to hang. This
problem has been fixed. For a better working experience, the
displayed strings are now limited in their size. In the Variable
Inspect, no more than 10000 characters are displayed. In the
Variable View and in tooltips, which provide only limited
possibilities to inspect the value of a variable, the lengths of
strings is limited to 5000 characters and 1000 characters,
respectively.
-
If a local variable in an HDevelop program is changed into a global
variable, or vice versa, typically, its value changes. However, the
new value of the variable was not displayed in the Variable View
of HDevelop. This problem has been fixed.
-
The Variable View offers for global variables via its context
menu the option to jump to the program lines that declare the
variable. However, this did not work for global iconic
variables if the variable declaration was not in the procedure
currently displayed. This problem has been fixed. In addition,
now also the declarations that are invalid owing to a type
conflict are listed and can be accessed.
-
The Object Model 3D Inspection window crashed, if the tree view of an
invalid model id was expanded. This problem has been fixed.
-
The Visualization window that can be invoked from the Object Model
3D Inspection window remained black for some 3D object models
because of an incorrectly determined starting pose. This problem has
been fixed.
Operator Window
-
For parameters of the semantic type 'filename', the Operator Window
offers a button that allows to select the file name via a file
dialog. If the file dialog was opened again, it was not opened in
the same directory where it was left before. This problem has been
fixed.
Help
-
It was not possible to open an HDevelop example program via the
HDevelop Help window, after opening an HDevelop example program that
was located on a different drive than the one HALCON has been
installed to. This problem has been fixed.
-
On Mac OS X it could happen that after clicking into the Help window, the
Main window came to front hiding the Help window. This problem has been
fixed.
Tools
-
In the Gray Histogram, low level error messages could be thrown when
for the current image the wrong channel was selected. This could
happen after displaying the histogram of a multi-channel image and
then selecting an image with less channels. The low level error
messages occurred after changing a histogram option like the
quantization. In addition, after selecting the first channel of the
single channel image the channel number in the table was not adapted
accordingly. These problems have been fixed.
-
The background color of the Zoom window and of the Magnify window
was always set to black, ignoring the background color of the
corresponding Graphics Window. This problem has been fixed. Now,
the background color of these windows is set to the background color
of the active Graphics Window.
-
In MDI mode, some HDevelop tools were not correctly opened if the MDI
windows were maximized. The following windows did not occupy the whole MDI
area and had no frame: Zoom window, Create Procedure and Procedure
Interface dialog, Line Profile tool, Create and Edit Procedure Library
dialog. This gave the false impression that the maximize mode was left,
which was, however, broken. This problem has been fixed.
Dialogs
-
The Duplicate Procedure dialog, which can be opened via the menu entry
Procedures/Duplicate..., did not support to copy a library procedure. This
problem has been fixed.
-
In rare cases, HDevelop crashed when the Find/Replace dialog was open, a
search was executed with the 'Find All' option, and a new program was
loaded or created. This problem has been fixed.
-
If the search direction was changed in the Find/Replace dialog
after finding a hit and without moving the text cursor explicitly
to a new search position, the following problems could occur:
- If the Find button was pressed to continue the search,
the last hit was found again.
- If the Replace button was pressed, an error message box
was opened.
These problems have been fixed.
General
-
There was a memory leak in HDevelop. With every program reset and when the
Program window got the focus, some memory was allocated without being
freed. This problem has been fixed.
-
On Mac OS X, assistants and the Variable View disappeared when the
full screen mode was activated or deactivated. This problem has been
fixed.
Code Export
-
If a short description of a procedure contained multiple lines, only
the first line was exported as a comment, which could produce
warnings while compiling the exported code. This problem has been
fixed.
-
HDevelop sometimes exported unnecessary declarations of local variables.
This happened, e.g., if a local variable was referenced only by operators
that were not exported or that were deactivated. This problem has been
fixed.
-
HDevelop erroneously exported import
statements as operator calls instead of exporting them as comments.
This problem has been fixed.
-
HDevelop exported program lines where global variables are
incremented incorrectly to C++ if the initialization of the global
variable was located in a different procedure. This problem has been
fixed.
-
HDevelop exported assign_at operators
incorrectly to Visual Basic 6.0. This problem has been fixed.
Examples
New Example Programs
HALCON has been extended with the following HDevelop example
programs:
-
The new HDevelop example program
-
hdevelop/Identification/Data-Code/ecc200_contrast_tolerance.hdev
shows how to use the new mode of the ECC 200 data code
reader that is more robust against local contrast variations.
-
The new HDevelop example program
-
hdevelop/Applications/Object-Recognition-2D/classify_pills_auto_select_features.hdev
shows the functionality to calculate groups of features with given
properties for classification that is provided by the new procedure library calculate_feature_set.hdpl.
-
The new HDevelop example program
- hdevelop/Identification/Data-Code/micro_qr_strict_quiet_zone.hdev
shows how to use the new parameter 'strict_quiet_zone' of
the data code reader to suppress false positives, i.e., the incorrect
detection of data codes, e.g., inside larger data codes.
-
The new HDevelop example program
-
hdevelop/Graphics/Output/plot_tuple.hdev
shows how to use the new procedures
plot_tuple.hdvp and plot_funct_1d.hdvp to plot tuples and
functions, respectively.
-
The new HDevelop example program
- hdevelop/Applications/Measuring-3D/inspect_3d_surface_intersections.hdev
shows the inspection of planar intersections of 3D objects. The
intersections are derived by intersecting the reconstructed 3D object
models with suitable planes, using the operator intersect_plane_object_model_3d.
-
The new HDevelop example program
- hdevelop/3D-Object-Model/Features/moments_object_model_3d.hdev
shows how to use the operator moments_object_model_3d to align a 3D object to the
coordinate axes. It uses the new 3D object model file cutting_edge.om3.
Modified Example Programs
-
The HDevelop example programs that show the usage of the data code reader
have been revised and reorganized. Some HDevelop example programs
have been combined to a single HDevelop example program, some were
redundant and have been removed.
In particular, the following HDevelop example programs have been added:
- hdevelop/Applications/Data-Codes/aztec_simple.hdev
- hdevelop/Applications/Data-Codes/micro_qr_simple.hdev
- hdevelop/Identification/Data-Code/2d_data_codes_default_settings.hdev
The following HDevelop example programs have been moved to the directory
hdevelop/Identification/Data-Code:
- 2d_data_codes_arbitrary_distortions.hdev
- 2d_data_codes_data_access.hdev
- 2d_data_codes_minimize_module_gaps.hdev
- 2d_data_codes_minimize_noise.hdev
- 2d_data_codes_rectify_symbol.hdev
The following HDevelop example programs have been moved to the directory
hdevelop/Applications/Data-Codes:
- aztec_optimized_settings.hdev
- ecc200_optimized_settings.hdev
- pdf417_optimized_settings.hdev
- micro_qr_optimized_settings.hdev
- qrcode_optimized_settings.hdev
The following HDevelop example programs were redundant and have been removed:
- hdevelop/Applications/Data-Codes/ecc200_optimized.hdev
- hdevelop/Applications/Data-Codes/pdf417_optimized.hdev
- hdevelop/Applications/Data-Codes/qrcode_optimized.hdev
- hdevelop/Identification/Data-Code/aztec_default_settings.hdev
- hdevelop/Identification/Data-Code/ecc200_default_settings.hdev
- hdevelop/Identification/Data-Code/ecc200_read_model.hdev
- hdevelop/Identification/Data-Code/ecc200_write_model.hdev
- hdevelop/Identification/Data-Code/micro_qr_default_settings.hdev
- hdevelop/Identification/Data-Code/pdf417_default_settings.hdev
- hdevelop/Identification/Data-Code/qrcode_default_settings.hdev
- solution_guide/2d_data_codes/2d_data_codes_first_example.hdev
- solution_guide/2d_data_codes/2d_data_codes_global_settings.hdev
- solution_guide/2d_data_codes/2d_data_codes_manual_settings.hdev
- solution_guide/2d_data_codes/2d_data_codes_training.hdev
- solution_guide/2d_data_codes/read_2d_data_code_model.hdev
- solution_guide/2d_data_codes/write_2d_data_code_model.hdev
- solution_guide/basics/ecc200_training_simple.hdev
Also, the image datacode/ecc200/ecc200_to_preprocess_004.png has
been changed.
-
The HDevelop example program
-
hdevelop/Classification/Feature-Selection/auto_select_region_features.hdev
has been adapted to use the new procedure library
calculate_feature_set.hdpl.
-
The HDevelop example programs
- hdevelop/3D-Matching/Shape-Based/find_shape_model_3d_recompute_score.hdev
- hdevelop/Applications/Completeness-Check/count_fish_sticks.hdev
- hdevelop/Applications/General/determine_sharpness.hdev
- hdevelop/Applications/Measuring-3D/check_smd_tilt.hdev
- hdevelop/Applications/OCR/ocr_gradient_feature.hdev
- hdevelop/System/Parallelization/optimize_aop.hdev
- hdevelop/Tools/Function/compose_funct_1d.hdev
- hdevelop/Tools/Function/invert_funct_1d.hdev
- hdevelop/Tools/Geometry/distance_cc_min.hdev
have been modified to use the new procedures
plot_tuple.hdvp and plot_funct_1d.hdvp to plot tuples and
functions, respectively.
-
The following HDevelop example programs have been revised and
improved with respect to visualization, format, and comments:
- hdevelop/Filters/Inpainting/inpainting_aniso.hdev
- hdevelop/Filters/Inpainting/inpainting_ced.hdev
- hdevelop/Filters/Inpainting/inpainting_mcf.hdev
- hdevelop/Identification/Data-Code/2d_data_codes_arbitrary_distortions.hdev
- hdevelop/Identification/Data-Code/2d_data_codes_minimize_module_gaps.hdev
- hdevelop/Identification/Data-Code/2d_data_codes_rectify_symbol.hdev
- hdevelop/Identification/Data-Code/aztec_optimized_settings.hdev
- hdevelop/Identification/Data-Code/ecc200_print_quality.hdev
- hdevelop/Identification/Data-Code/ecc200_small_modules_robustness.hdev
- hdevelop/Matching/Component-Based/cbm_modules_simple.hdev
- hdevelop/Matching/Shape-Based/find_aniso_shape_model.hdev
- solution_guide/3d_vision/3d_information_for_selected_points.hdev
- solution_guide/3d_vision/height_above_reference_plane_from_stereo.hdev
- solution_guide/basics/surface_scratch.hdev
-
The HDevelop example program
- hdevelop/3D-Object-Model/Transformation/intersect_plane_object_model_3d.hdev
has been adapted to show, how XLD contours can be derived from the
intersection of a 3D object model with a plane.
-
The HDevelop example programs
- hdevelop/3D-Matching/Shape-Based/find_shape_model_3d_recompute_score.hdev
- hdevelop/3D-Object-Model/Transformations/projective_trans_object_model_3d.hdev
- hdevelop/Applications/Robot-Vision/reconstruct_3d_object_model_for_matching.hdev
- hdevelop/Classification/k-Nearest-Neighbor/nearest_neighbors.hdev
- hdevelop/Graphics/Output/disp_object_model_3d.hdev
- hdevelop/Image/Acquisition/genicamtl_gocator_objectmodel3d.hdev
- hdevelop/Image/Acquisition/gigevision_atc4_objectmodel3d.hdev
- hdevelop/Image/Acquisition/swissranger_objectmodel3d.hdev
have been modified to use the renamed
parameters of set_object_model_3d_attrib,
set_object_model_3d_attrib_mod, and get_object_model_3d_params.
HALCON Library
Speed-Up and
Enhancements
3D Matching → Shape-Based, Matching → Deformable
-
The shape-based 3D matching and the calibrated perspective matching now are
more efficient for lenses with strong polynomial distortions or strong
pincushion-shaped radial distortions. Efficiency in this context means
both in terms of model size as well as in terms of runtime when searching
the model in an image. For very large distortions, this might result in
speed-ups up to a factor of 2.
Identification → Data Code
-
find_data_code_2d now is
up to 200% faster for searching ECC 200 codes with the parameter
'finder_pattern_tolerance' set to 'high'.
Modified Operators
3D Object Model → Transformations
-
project_object_model_3d no longer
closes projected line segments, i.e., the first point and the last
point are no longer connected. This eases further processing of the
projected lines.
-
project_object_model_3d and project_shape_model_3d now join projected lines
if they are adjacent. For project_object_model_3d,
this behavior is now enabled by default an can be disabled using the
generic parameter 'union_adjacent_contours'. For project_shape_model_3d, the new behavior is disabled by default
and can be enabled in create_shape_model_3d
using the generic parameter 'union_adjacent_contours'.
This change required a new file format version for 3D shape models.
3D shape models written with HALCON 11.0.2 or newer cannot be read
by older versions of HALCON.
3D Reconstruction → Multi-View Stereo
Graphics → Output
-
disp_object_model_3d has been
extended by the following features:
- The characteristics of the light source can be set with the
two new generic parameters 'light_ambient' and 'light_diffuse'.
- The width of lines can be set with the new generic parameter
'line_width'.
Identification → Bar Code
-
The bar code reader now supports verification of an optional check
character without stripping it from the bar code data. This can be
achieved by setting the parameter 'check_char' to 'preserved'.
Identification → Data Code
-
The data code reader is now able to validate the quiet zone of detected
symbols. If the quiet zone of a symbol is missing or contains severe
damage, the symbol is now discarded if the data code model parameter
'strict_quiet_zone' has been set to 'yes'. This mode is supported for all
code types, except for Aztec codes.
The new HDevelop example program
-
hdevelop/Identification/Data-Code/micro_qr_strict_quiet_zone.hdev
shows how to use this new parameter to suppress false positives, i.e., the
incorrect detection of data codes, e.g., inside larger data codes. It uses
the new image datacode/qrcode/qr_milk_carton.png.
-
find_data_code_2d has been extended for
PDF417 codes to detect erasures, i.e., errors with known location. This
increases the number of possible error corrections in the presence of
erasures.
-
The ECC 200 data code reader now decodes symbols containing a Reader
Programming Character. get_data_code_2d_results has been extended by the new
paramater 'reader_programming' to query if a decoded symbol contains this
character.
-
The ECC 200 data code reader has been extended with a mode
that is more robust against local contrast variations. The
new data code model parameter 'contrast_tolerance' is used to
activate this mode.
The new HDevelop example program
-
hdevelop/Identification/Data-Code/ecc200_contrast_tolerance.hdev
shows how to use this new mode. It uses the new images
datacode/ecc200/ecc200_contrast_variations_01-07.png.
-
For ECC 200 data codes, find_data_code_2d is now more robust in the
presence of expanded finder patterns when the parameter
'finder_pattern_tolerance' is set to 'high'. This is
particularly helpful in cases where the width of the finder
pattern is significantly larger than the module width, e.g., due to
poor print quality.
Matching → Correlation-Based
Bug Fixes
2D Metrology
-
add_metrology_object_ellipse_measure
sometimes created measure regions that were rotated incorrectly.
This problem has been fixed.
-
apply_metrology_model discarded
ellipses that were inside all measure regions if
'instances_outside_measure_regions' was set to 'false', which is the
default. This problem has been fixed. Now, apply_metrology_model discards only those ellipses
that are really outside all measure regions if
'instances_outside_measure_regions' is set to 'false'.
3D Matching → Shape-Based
-
create_shape_model_3d did not create enough
views in some parts of the pose range. Consequently, objects with a pose
that was within this part of the pose range could not be found robustly by
using find_shape_model_3d. This problem has
been fixed.
Note that because of this fix create_shape_model_3d, and hence, the created models
themselves changed. The runtime of create_shape_model_3d, the size of the resulting model,
and the runtime of find_shape_model_3d slightly
increased by about 15 percent on average. Further note that the precomputed
3D shape model file clamp_sloped_35.sm3 in the directory
examples/hdevelop/Applications/Position-Recognition-3D has been updated
accordingly.
-
Operators using a 3D shape model may have returned the error 5185 ("No
OpenGL support available") if used in different threads, even though the
system variable 'opengl_hidden_surface_removal_available' was 'true'. This
problem occurred if the first thread using the OpenGL based hidden surface
removal (e.g., by calling create_shape_model_3d)
has already been terminated. This problem has been fixed.
-
create_shape_model_3d crashed in some cases
when the system parameter 'opengl_hidden_surface_removal_enable' was set to
'false' with set_system. This problem has
been fixed.
-
If a 3D shape model was read using read_shape_model_3d and the system variable
'opengl_hidden_surface_removal_enable' was set to 'true', the first call to
find_shape_model_3d took significantly longer
than subsequent calls. project_shape_model_3d was affected as well. This
problem has been fixed.
This change required a new file format version for 3D shape models.
3D shape models written with HALCON 11.0.2 or newer cannot be read
by older versions of HALCON.
3D Matching → Surface-Based
-
find_surface_model did not always return the
score as documented. This happened in the following two cases:
- If the dense pose refinement was disabled and the sparse pose
refinement was enabled, find_surface_model
always returned the 'score_type' of type 'model_point_fraction',
regardless of the setting of 'score_type'.
- If the 'score_type' was set to 'num_scene_points', a
weighted sum is returned, whereas the documentation
incorrectly stated that the actual number of scene points
would be returned. Additionally, if the dense pose
refinement was enabled, the documentation incorrectly
states that the sampled scene points would be used.
These problems have been fixed.
3D Object Model → Creation
-
read_object_model_3d read an OM3 file
incorrectly if the 3D object model contained in this file has been prepared
for distance computation with prepare_object_model_3d and if the OM3 file was
used to transfer the 3D object model between a 32-bit and a 64-bit system.
This problem has been fixed.
This change required a new file format version for OM3 files (HALCON
3D Object Model). 3D object models written in the OM3 file format
with HALCON 11.0.2 or newer cannot be read by older versions of
HALCON, if they were prepared for distance computation with prepare_object_model_3d using the voxel data
structure.
-
read_object_model_3d read incorrect
values from ASCII files in rare cases if those files contained
floating-point numbers with a precision larger than 9. This problem
has been fixed.
-
set_object_model_3d_attrib_mod did not work
in few cases if an existing attribute was overwritten. This problem has
been fixed.
-
Some parameters and parts of the reference manual entries of
the operators
have not been consistent with other operators for 3D object
models. These problems have been fixed as follows:
- The parameters of set_object_model_3d_attrib and set_object_model_3d_attrib_mod have been renamed
as follows:
- Name has been renamed to AttribName
- Type has been renamed to AttachExtAttribTo
- Data has been renamed to AttribValues
- The parameter value 'faces' for the input parameter
AttribName (formerly Name) of the operators set_object_model_3d_attrib and
set_object_model_3d_attrib_mod
has been changed to 'polygons'. Note that 'faces' is
still supported for backward compatibility.
- The parameter values 'faces', 'num_faces', and 'has_faces' for
the input parameter ParamName of the operator get_object_model_3d_params have been changed to
'polygons', 'num_polygons', and 'has_polygons'. Note that 'faces',
'num_faces', and 'has_faces' are still supported for backward
compatibility.
- The parameter values 'vertices' and 'faces' for the input
parameter AttachExtAttribTo (formerly Type) of the operators
set_object_model_3d_attrib and set_object_model_3d_attrib_mod have been
changed to 'points' and 'polygons', respectively. Note that
'vertices' and 'faces' are still supported for backward
compatibility.
- The parameter AttachExtAttribTo (formerly Type) of the
operators set_object_model_3d_attrib and
set_object_model_3d_attrib_mod
now also allows 'object' as input, which is
equivalent to an empty tuple ([]) but more descriptive.
Note that the operators set_object_model_3d_attrib and set_object_model_3d_attrib_mod raised an
exception when the parameter Type (now AttachExtAttribTo) has not
been set to an empty tuple ([]) for standard attributes. Since the
parameter Type (now AttachExtAttribTo) is only meaningful for
extended attributes, it is now ignored when used together with
standard attributes.
The following example programs have been adapted accordingly:
- hdevelop/3D-Matching/Shape-Based/find_shape_model_3d_recompute_score.hdev
- hdevelop/3D-Object-Model/Transformations/projective_trans_object_model_3d.hdev
- hdevelop/Classification/k-Nearest-Neighbor/nearest_neighbors.hdev
- hdevelop/Applications/Robot-Vision/reconstruct_3d_object_model_for_matching.hdev
- hdevelop/Graphics/Output/disp_object_model_3d.hdev
- hdevelop/Image/Acquisition/gigevision_atc4_objectmodel3d.hdev
- hdevelop/Image/Acquisition/swissranger_objectmodel3d.hdev
- hdevelop/Image/Acquisition/genicamtl_gocator_objectmodel3d.hdev
-
union_object_model_3d may have crashed if one
of the input objects contained the attribute 'face_triangle'. This problem
has been fixed.
3D Object Model → Features
-
distance_object_model_3d and prepare_object_model_3d used with mode
'distance_computation' crashed in rare cases if the method 'kd-tree' was
selected and the 3D object model contained many points with the same
Z-coordinate. This problem has been fixed.
-
moments_object_model_3d did not
compute the yz-moment and the principle axis correctly. This problem
has been fixed. Now, moments_object_model_3d computes the complete principal
component analysis of the data. It returns a pose that corresponds to
the coordinate system where the axes are aligned with the principal
axes of the data. The value 'principal_axis' for the parameter
MomentsToCalculate has been renamed to 'principal_axes.' For backward
compatibility, the old value is still supported.
-
smallest_bounding_box_object_model_3d
was very slow for certain inputs. Additionally, the approximation of
the returned oriented bounding box was not always as good as
possible. These problems have been fixed.
3D Object Model → Segmentation
-
segment_object_model_3d crashed if the
input object model contained edges with more than two neighboring
triangles. This problem has been fixed. Now, the error 9550
("Triangles of the 3D object model are not suitable for this
operator") is returned.
-
select_points_object_model_3d sometimes did
not select all points that met the conditions passed to the operator if the
selection was based on an extended attribute, i.e., an attribute whose name
starts with '&'. Erroneously, points at the end of the point list were
sometimes not selected. This problem has been fixed.
3D Object Model → Transformations
-
connection_object_model_3d took
very long or did not terminate for some configurations, even
for datasets where the connected components should have been
found faster. Additionally, it did not always return the
correct error message when attributes were missing. These
problems have been fixed.
Note that due to this fix, the allocation of handle IDs of 3D object
models has been changed. Handles are not necessarily allocated in
ascending order, i.e., the first created 3D object model does not
necessarily have the ID 0. Note that the order of handle IDs is in
general undefined and must not be relied upon.
-
prepare_object_model_3d hung if the operator
set_object_model_3d_attrib was called before
the operator prepare_object_model_3d. This problem
has been fixed.
-
prepare_object_model_3d did not close all
holes during the triangulation of the given 3D object model, i.e., if the
parameter Purpose was set to 'segmentation'. This problem has been
fixed.
-
project_object_model_3d did not return all
edges that are horizontal in the projection if the system parameter
'opengl_hidden_surface_removal_enable' was set to 'false'. This problem has
been fixed.
-
project_object_model_3d did not return all
object model contours if OpenGL was enabled, the camera had a barrel
distortion, and the pose of the model was chosen in such a way that the
projected model lies sufficiently close to the image borders defined by the
width and height parameters stored in the camera parameters, which were
passed to project_object_model_3d. This problem has
been fixed.
-
render_object_model_3d sometimes crashed in
multithreading applications if the first thread in which render_object_model_3d was used was closed. This problem
has been fixed.
-
rigid_trans_object_model_3d treated the input
pose as if it were of type 0. The pose type, which is specified by the last
entry of the pose, was ignored. This problem has been fixed.
-
sample_object_model_3d may have crashed if
the method 'accurate' or 'accurate_use_normals' was used. This problem has
been fixed.
-
sample_object_model_3d incorrectly raised an
error if the mode 'accurate_use_normals' was selected and the generic
parameter 'max_angle_diff' was used. This problem has been fixed.
3D Reconstruction → Binocular Stereo
-
binocular_disparity and binocular_distance sometimes returned the
error 1307 ("Wrong value of control parameter: 7") or 1310 ("Wrong
value of control parameter: 10"), respectively, when the number of
used threads for the automatic parallelisation on domain level was
large compared to the size of the input domain. This problem has
been fixed.
-
binocular_disparity and binocular_distance might have caused the
error 6002 ("Memory partition on heap has been overwritten") under
certain circumstances. This problem has been fixed.
-
gen_binocular_rectification_map has returned
inconsistent results in case of telecentric lenses. The first rectified
camera was not to the left of the second rectified camera, as it is stated
in the documentation. Because of this, reconstruct_surface_stereo did not work with telecentric
lenses. This problem has been fixed.
3D Reconstruction → Multi-View Stereo
-
create_stereo_model now returns an error if
the camera setup model contains uninitialized cameras.
3D Reconstruction → Sheet of Light
-
reset_sheet_of_light_model did not correctly
reset the sheet-of-light model. This problem has been fixed.
-
set_profile_sheet_of_light crashed if the
sheet-of-light model was configured to perform no calibration, i.e., if the
generic parameter 'calibration' was set to 'none', which is the default
setting in create_sheet_of_light_model. This
problem has been fixed.
-
set_sheet_of_light_param provided no
specific English error message if the tuple used to set the camera
parameters had an inappropriate length. Instead, the error message
"No error message available for this error code (3779)" was
returned. This problem has been fixed.
Calibration → Calibration Object
-
find_calib_object did not check if the size
of its input image matched the image size set in the camera parameters.
This problem has been fixed. Now, an error is returned if the image sizes
are not equal.
-
find_calib_object sometimes did not work for
uint2 images. This problem has been fixed.
-
find_calib_object and find_marks_and_pose crashed in rare cases.
This problem has been fixed.
-
find_caltab sometimes did not work for uint2
images with the advanced algorithm. This problem has been fixed.
-
sim_caltab allocated a lot of memory
if the caltab was very close to the camera. This problem has been
fixed. Now, the rendering routine handles this case without
allocating a lot of memory.
Calibration → Multi-View
-
calibrate_cameras returned incorrect
calibration data if more than one telecentric camera was calibrated. This
problem has been fixed.
-
calibrate_cameras optimized both Sx and Sy
when excluding the focal length from optimization and using a
non-telecentric camera. This problem has been fixed. Now Sy remains
excluded from optimization when calibrate_cameras
is called without any further parameter exclusion.
-
calibrate_cameras did not raise an exception
for some incorrect constellations of input data. This problem has been
fixed. If calibrate_cameras encounters incorrect
input data, now an appropriate exception is raised.
-
set_calib_data_cam_param did not return an
error if a hand-eye calibration model was used and 'area_scan_polynomial'
was combined with an 8-element tuple or if 'area_scan_division' and a
12-element tuple were used. This problem has been fixed. Now an appropriate
error is returned.
Calibration → Rectification
-
change_radial_distortion_cam_par sometimes
returned the error 6001 ("Not enough memory available"). Only the
polynomial camera model was affected. This problem has been fixed.
Classification → K-Nearest Neighbors
-
add_class_train_data_knn
incorrectly copied training data from a SVM classifier into a k-NN
classifier. This happened if the training data of the SVM classifier
had been retrieved with get_class_train_data_svm, i.e., in form of a
TrainDataHandle, and if this handle was used in add_class_train_data_knn to add the training data to
a k-NN classifier with the same dimension of the feature vectors. The
trained k-NN classifier incorrectly had the same number of classes as
the SVM classifier. This problem has been fixed.
Note that this fix also involved a change in some of the language
interfaces involving the class methods representing the operator
get_class_train_data_svm.
-
The feature normalization for k-NN classification was incomplete.
Features were normalized to the range [0..1] during training but
they were not normalized during the classification. This problem has
been fixed. Now, k-NN classification uses feature normalization
during training and classification. When 'normalization' is set to
'true' during training, features are normalized to have zero mean
and unit variance in each dimension: (x - mean)/std_deviation.
Classification → Support Vector Machines
-
create_class_svm failed to notice the
case where the user attempted to do image segmentation or novelty
detection, providing samples from just one class, and mistakenly
choosing a classification mode other than 'novely-detection'. This
problem has been fixed.
File → Images
-
read_image does not read BMP files
with BitCount = 4 correctly. It exchanged the green and the blue
channel of these files. This problem has been fixed.
Filters → Geometric Transformations
Filters → Lines
-
lines_gauss and lines_color returned slightly incorrect
results if ExtractWidth was set to 'true'. The position and the
attributes of the extracted lines were affected. This problem has
been fixed.
Filters → Optical Flow
-
optical_flow_mg crashed in rare cases if the
created vector field contained the value NaN. Additionally, the operator
unwarp_image_vector_field crashed if the
passed vector field contained the value NaN. These problems have been
fixed.
Filters → Smoothing
-
mean_image crashed under HALCON XL with very
large images when using reduced domains and if the image domain started at
a linear image coordinate (i.e., Row*ImageWidth+Col) of above 2^30. The
problem also occurred in combination with very large images and automatic
operator parallelization on domain level, as the underlying concept uses
reduced domains implicitly.
Graphics → Drawing
-
draw_nurbs_mod did not work correctly with
closed input NURBS if the first and the last weight of the input NURBS
differed. This problem has been fixed.
Graphics → Output
-
disp_obj showed the full image instead of
just the pixels within the image domain if the image domain had exactly the
same dimensions as the window. This problem has been fixed. Note
that this problem also affected the HDevelop
operator dev_display.
-
disp_object_model_3d and render_object_model_3d did not visualize the 3D
object model at the correct position for telecentric cameras. This problem
has been fixed.
-
disp_object_model_3d and render_object_model_3d sometimes did not display
the entire 3D object model if 'opengl_compatibility_mode_enable' was set to
'true'. This problem has been fixed.
-
disp_object_model_3d and render_object_model_3d did not work correctly
under Mac OS X if 'opengl_compatibility_mode_enable' was set to 'true'.
This problem has been fixed.
-
disp_object_model_3d did not always estimate
a pose such that all 3D object models were visible if the input pose was an
empty tuple. This problem has been fixed.
-
In some cases disp_object_model_3d produced
3D graphics that were wrongly clipped. This problem has been fixed. Now the
operator applies the correct clipping to multiple 3D objects.
-
disp_object_model_3d sometimes did not
display infinite planes. This problem has been fixed.
-
Compared to HALCON 11.0.0, disp_object_model_3d was slower with some
graphic cards. This problem has been fixed.
-
disp_object_model_3d did not return an
error when used with incompatible extended attributes. Only extended
attributes attached to 'points' (with set_object_model_3d_attrib or set_object_model_3d_attrib_mod) can be used in disp_object_model_3d. This problem has been fixed and
disp_object_model_3d now returns an error
when used with incompatible extended attributes.
-
disp_object_model_3d and render_object_model_3d sometimes produced
no output if a 3D object model contained the primitive attribute but
no primitive and if the 'attribute' parameter was set to 'auto'.
This problem has been fixed.
-
disp_object_model_3d and render_object_model_3d may have produced
some artefacts at the right border and at the bottom border,
respectively, if used with a Windows Remote Desktop and if the width
or the height of the camera parameters was larger than the resolution
of the Windows Remote Desktop. Now the error 5184 ("Maximum image
size for Windows Remote Desktop is exceeded") is returned in these
cases.
Graphics → Parameters
-
When setting the line style to a value other than the empty tuple
[], e.g., by calling set_line_style
with Style set to [2,2], subsequent calls to display a region in
'fill' mode could take a lot of time under Windows. This problem has
been fixed.
Identification → Bar Code
-
find_bar_code sometimes returned the error
3513 ("Internal error: number of chords too big for num_max") when called
on images that were more than four times as wide as they were high. This
problem has been fixed.
-
find_bar_code sometimes returned corrupt data
when it was used in auto-discrimination mode, with Code 128 or Code 93
included in the list of bar code types, and if 'min_identical_scanlines'
was set to a value of 3 or higher. This problem has been fixed.
-
find_bar_code returned the error 3513
("Internal error: number of chords too big for num_max") in rare
cases. This problem only occured if the domain of the input image
had been reduced. This problem has been fixed.
-
find_bar_code crashed with stacked
codes in rare cases. This problem occurred only if the search was
limited to a single code type. This problem has been fixed.
-
The print quality for composite bar codes was calculated incorrectly
under specific circumstances. This problem has been fixed.
-
The ISO/IEC 15416 print quality could not be determined for bar
codes that were found using autodiscrimination. This problem
has been fixed.
Identification → Data Code
-
find_data_code_2d crashed in some
cases for QR codes if a timeout was set. This problem has been
fixed.
-
The QR code reader failed to decode some mirrored QR codes. This problem
only occurred if 'mirrored' has been set to yes using set_data_code_2d_param. This problem has been
fixed.
-
The QR code reader failed to decode some QR codes of model type 1 if
'model_type' was set to 'any', although they were successfully decoded if
'model_type' was set to '1'. This problem has been fixed.
-
find_data_code_2d crashed
in some cases for Micro QR codes. This problem has been fixed.
-
get_data_code_2d_objects crashed while
requesting the 'process_image', if 'small_modules_robustness' was set to
'high' and at the same time the height of the image was larger than its
width. This problem has been fixed.
-
get_data_code_2d_results returned the
result value for 'decoded_string' for GS1 data codes unformatted.
This problem has been fixed.
-
get_data_code_2d_results sometimes
returned different values for 'undecoded_num' and 'aborted_num' on
x64 and x86 systems for ECC200 codes when 'finder_pattern_tolerance'
was set to 'high'. This problem has been fixed. Note that as a
consequence, in some cases the classification of discarded
candidates might change. In particular, the number of aborted and
undecoded candidates can be different.
-
get_data_code_2d_results crashed in
some cases for the quality inspection of ECC 200 data codes when
results were queried by setting the parameter ResultNames to
'quality_isoiec15415'. This problem has been fixed.
-
There was a memory leak when computing the ISO/IEC-15415 quality parameters
for Aztec codes. This problem has been fixed.
-
The data code print quality inspection for ECC 200 codes depended on the
parameter 'module_grid'. For different settings of this parameter the print
quality inspection may have returned significantly different values. This
problem has been fixed.
Identification → Sample-Based
Image → Manipulation
-
paint_region did not work correctly or
crashed for multi-channel images of mixed type. This problem has been
fixed.
-
paint_xld did not work if the complete
input contour or polygon lay within one single pixel. This problem
has been fixed.
Matching → Deformable
Matching → Descriptor-Based
-
write_descriptor_model and read_descriptor_model did not handle cameras with
polynomial distortions correctly. All camera parameters passed to create_calib_descriptor_model were saved as if a
camera with the division model had been passed. The same problem also
occurred in serialize_descriptor_model and
deserialize_descriptor_model. These problems
have been fixed.
This change required a new file format version for write_descriptor_model. Files written with HALCON versions
11.0.1 or older are handled correctly by read_descriptor_model. New files written with HALCON 11.0.2
or newer cannot be read by earlier HALCON versions. The same applies to serialize_descriptor_model and deserialize_descriptor_model.
Matching → Shape-Based
-
The 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,
- create_local_deformable_model,
- create_local_deformable_model_xld,
- create_planar_uncalib_deformable_model,
- create_planar_uncalib_deformable_model_xld,
- create_planar_calib_deformable_model,
- create_planar_calib_deformable_model_xld,
- create_shape_model_3d, and
- create_ncc_model
sometimes returned models where the internal angle/scale increment
for searching the model was too large. This happened when the
angle interval or the scaling was small and it caused the matching
to be less robust in these cases. This problem has been fixed.
Note that the created models might differ from models created with
previous versions. Therefore, the respective matching results
might also differ slightly. Sometimes, the runtime can increase
slightly, however, the search is now more robust.
-
determine_shape_model_params and determine_deformable_model_params
sometimes did not return the error 8510 ("Number of shape model
points too small"). This was the case if the number of pyramid
levels was not determined automatically, i.e., 'num_levels' was not
passed in Parameters. This problem has been fixed.
-
find_shape_model, find_shape_models, find_scaled_shape_model, find_scaled_shape_models, find_aniso_shape_model, and find_aniso_shape_models in rare cases returned
different results when executed with a different number of threads. This
might have happened if MaxOverlap was set to a value different from 1.0.
This problem has been fixed.
Morphology → Region
-
opening_rectangle1 and closing_rectangle1 may have returned regions with
corrupted features. These regions caused undefined behavior in subsequent
operators, e.g., in select_shape. The
erroneous behavior did only occur if the result of opening_rectangle1 or closing_rectangle1 was an empty region. This problem has been
fixed.
OCR → Training Files
-
append_ocr_trainf did not check whether any
of the input regions is empty. This problem has been fixed.
Segmentation → Threshold
-
bin_threshold crashed if the input
image was of type 'real' and all pixels had the same value. This
problem has been fixed.
Segmentation → Topography
System → Compute Devices
-
query_available_compute_devices may have
returned an error on certain systems. This problem only occurred on systems
with OpenCL compatible CPUs. This problem has been fixed.
System → Multithreading
-
timed_wait_condition interpreted the
timeout value as seconds instead of microseconds. Furthermore, on
Linux systems and on Mac OS X systems, infinite timeouts, which can
be set via negative values, did not work. These problems have been
fixed. In addition, the reference manual entry of timed_wait_condition has been extended to
describe how to set infinite timeouts.
System → Serialized Item
-
If a Serialized Item was cleared internally, a memory corruption bug
occured in rare cases. This problem has been fixed. The operator clear_serialized_item was not affected.
System → Sockets
Tools → Function
-
write_funct_1d crashed when writing a
function to file. This problem has been fixed.
Tools → Interpolation
-
interpolate_scattered_data_image returned the
error 9205 ("Matrix is singular") if no data points were available for the
interpolation. In order to return a more useful error message, the error
9205 has been replaced with the error 9053 ("No data points available"),
which is now returned if no data points are available.
Transformations → Poses
-
pose_to_quat did not return a correct
quaternion for poses with a pose type different than type 0. This problem
has been fixed.
XLD → Features
-
fit_ellipse_contour_xld in very rare cases
returned the value NaN for parameters of the fitted ellipse if the
algorithm 'voss' was used. This happened, e.g., if the contour was extremely
elongated and had many self-intersections. This problem has been
fixed.
XLD → Transformations
-
crop_contours_xld returned undefined
values if the contour entered or left the rectangle exactly
vertically and if this vertical segment was coincident with one of
the vertical borders of the rectangle. This problem has been
fixed.
-
union_adjacent_contours_xld did not
always merge all adjacent contours if the distance between the
endpoints of the contours was smaller than 1 and the contours
appeared in a certain order. This problem has been fixed.
-
union_cocircular_contours_xld in some cases
did not merge segments of circles, even though the angles between their
tangents and their connecting line were small and MaxTangentAngle was set
to a much larger value. This problem has been fixed.
Automatic Operator Parallelization
-
The automatic operator parallelization had a memory leak when the thread
pool was switched off by set_system
('thread_pool', 'false'). This problem has been fixed.
Compute Devices
-
Many operators did not treat an empty domain correctly when executed on an
OpenCL device. These problems have been fixed.
-
Accessing an image object on a compute device from a thread different to
the one that originally created the image could freeze or crash HALCON
under certain conditions. This problem has been fixed.
Misc
-
In certain cases, a region was not displayed immediately in the graphics
window on Mac OS X systems. After performing some other action (move the
window, open a menu), the region was displayed properly. This problem has
been fixed.
-
Some German error messages used German Umlauts and some did not.
This problem has been fixed. Now, all German error messages use
German Umlauts.
Procedures
Functionality
-
HALCON has been extended with the two new procedures plot_tuple.hdvp and
plot_funct_1d.hdvp to plot tuples and functions as graphs in a graphics
window.
The new HDevelop example program
- hdevelop/Graphics/Output/plot_tuple.hdev
demonstrates this new functionality.
The existing example programs
- hdevelop/Applications/Measuring-3D/check_smd_tilt.hdev
- hdevelop/Applications/Completeness-Check/count_fish_sticks.hdev
- hdevelop/Applications/General/determine_sharpness.hdev
- hdevelop/Tools/Geometry/distance_cc_min.hdev
- hdevelop/3D-Matching/Shape-Based/find_shape_model_3d_recompute_score.hdev
- hdevelop/Tools/Function/invert_funct_1d.hdev
- hdevelop/Tools/Function/compose_funct_1d.hdev
- hdevelop/Applications/OCR/ocr_gradient_feature.hdev
- hdevelop/System/Parallelization/optimize_aop.hdev
have been modified to use the new procedures.
-
HALCON has been extended with a new procedure library
calculate_feature_set.hdpl to make it easier to calculate
groups of features with given properties for classification. This is
especially useful for automatic feature selection. The provided features can
easily be extended with user-defined features using the new template
procedure procedures/templates/get_custom_features.hdvp.
The new HDevelop example program
-
hdevelop/Applications/Object-Recognition-2D/classify_pills_auto_select_features.hdev
shows the new functionality. It uses the new images
- color/pills_class_01-10.png and
- color/pills_test_01-03.png.
The HDevelop example program
- hdevelop/Classification/Feature-Selection/auto_select_region_features.hdev
has been adapted to demonstrate the new functionality.
-
The procedures get_object_models_center and
determine_optimum_pose_distance, which are part of the procedure library
visualize_object_model_3d.hdpl have been made public because they can,
e.g., be used to determine input poses for disp_object_model_3d and render_object_model_3d.
Bug Fixes
-
visualize_object_model_3d may have set the rotation center incorrectly if
'inspection_mode' was set to 'surface' and 'attribute' was set to a value
different from what is automatically selected for displaying the 3D object
model. This problem happened, e.g., if a 3D object model that contains
triangles as well as some not triangulated points were displayed with the
generic parameter 'attribute' set to 'points'. If the object was positioned
such that the rotation center, which is indicated by a cross, lies close to
one of the not triangulated points, the actual rotation center was
calculated incorrectly, i.e., the object was not rotated approximately
around the nearby point. This problem has been fixed.
-
The procedure parse_filename did not work if the supplied input contained
periods (.) in folder names and the file name had no extension. This problem
has been fixed.
HALCON/C
Bug Fixes
-
clear_obj was not able to handle iconic objects set to UNDEF_KEY in
HALCON/C and HALCON/COM. This made it impossible to export a working error
handling of an operator from HDevelop language to HALCON/C or HALCON/COM
code. This problem has been fixed.
-
delete_tuple failed if called on a tuple that has been created with
create_tuple and if no value has been assigned to the tuple prior to
deleting it. create_tuple_type failed to set the desired type if called
before any HALCON operator. These problems have been fixed.
HALCON/.NET
Bug Fixes
-
The indexer for selecting objects from iconic object arrays (e.g.,
region[3]) contained a resource leak that would significantly degrade
application performance over time. This problem has been fixed.
-
There was both a memory leak and degraded performance when calling
operators that had input parameters of type HHomMat2D, HHomMat3D,
HQuaternion, or HFunction1D. This problem has been fixed.
HALCON/COM
Bug Fixes
-
HALCON/COM had a memory leak if a null pointer was passed instead of an
iconic or tool class input object. This problem has been fixed.
HDevEngine
Bug Fixes
-
If the HDevelop tool operators dev_open_tool, dev_open_dialog, dev_open_file_dialog, dev_close_tool, dev_show_tool, and dev_set_tool_geometry were called within HDevEngine, an
exception was thrown, complaining that "opening or reading of HDevelop
program or procedure file failed". This problem has been fixed. These
operators are now ignored within HDevEngine.
-
If a program or procedure that has been loaded within the HDevEngine
referred to an external or library procedure that referred to another
library procedure, the loading of the program was aborted with the error
message: "There is an unresolved procedure call." This problem has been
fixed.
-
There was a memory leak in the HalconAPI.DestroyTuple method of the
HALCON/.NET interface. This caused also memory leaks in the following
methods of HDevEngine/.NET: HDevProcedureCall::SetInputCtrlParamTuple
HDevProcedure::GetProcedureInfo HDevProgram::GetProgramInfo. This problem
has been fixed.
-
The method GetGlobalIconicVarObject of HDevEngine/C++ in the (non-legacy)
C++ interface had a significant memory leak. The iconic object was never
released. 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.
New Image
Acquisition Interfaces
-
HALCON now also includes the ShapeDrive interface and allows the easy
acquisition of 3D depth images from ShapeDrive 3D sensors.
The new HDevelop example programs
- hdevelop/Image/Acquisition/shapedrive_simple.hdev,
- hdevelop/Image/Acquisition/shapedrive_parameters.hdev, and
- hdevelop/Image/Acquisition/shapedrive_objectmodel3d.hdev
show how to use this interface.
Modified Image
Acquisition Interfaces
- The following HALCON image acquisition interfaces have been
revised since HALCON 11.0.1:
-
The new revision of the File
(VirtualFG) interface allows now to specify a directory name
also relatively to the search path.
-
The new revision of the GenICamTL
interface has been revised and extended to completely support
GenTL v1.3 and provides numerous fixes and improvements. In
particular, the new interface revision now provides access to
GenICam chunk data and supports GenICam events through callbacks.
-
The new revision of the GigEVision
interface now supports also the callback types 'transfer_end' and
'device_lost'. Furthermore, the internal callback handling has been
improved and can be controlled via three new parameters and an additional
callback type. The new interface revision allows to receive
only the newest images without the need to explicitly flush buffers.
It also includes several bug fixes and improvements, in particular in
the underlying GigE Vision transport layer and regarding the
handling of devices that are no more reachable ("lost devices").
Finally, the new interface revision provides a more detailed
documentation of the ForceIP and 'clear_buffer' parameters.
-
The new revision of the LPS36
interface fixes a bug regarding the 'generic' parameter values.
-
The new revision of the MILLite
interface improves the error handling in the operator
open_framegrabber when trying to open an already used digitizer a second
time.
-
The new revision of the MultiCam
interface includes bug fixes regarding aborting a pending grab via
the operators grab_image_start and grab_image, using the MONO_DECA board
topology for GRABLINK Full boards, and to allow to use an image height or
image width smaller than 64.
-
The new revision of the pylon
interface includes bug fixes regarding correct recovering from
timeouts during asynchronous image acquisition, aborting a pending grab via
calling the operator grab_image_start, and setting unsupported parameters
to IEEE 1394 cameras. Furthermore, it fixes a bug in the operator
grab_image in continuous acquisition mode, a bug in the operator
info_framegrabber when querying the actually available read-only
parameters, and a bug in the operator open_framegrabber in case of Camera
Link devices.
-
The new revision of the SaperaLT
interface
provides improvements regarding the buffer allocation in case of
very large images. Furthermore, it fixes a problem in the
operator open_framegrabber when opening a camera with an image
height or image width smaller than 8, a problem in the operator
set_framegrabber_param regarding the value range check, in
particular in combination with Xcelera boards, as well as a bug
regarding floating point parameter values.
-
The new revision of the Sentech
interface now also supports the new USB 3.0 camera models,
enables to use the 'color_reduction' interpolation mode and provides
an improved error handling if external triggering is not supported
by the camera. Furthermore, the new interface revision fixes a bug
in combination with software trigger mode.
-
The new revision of the SICK-3DCamera
interface includes a new parameter and a new HDevelop example program
to show how to use the internal queue of buffers as well as improvements
and bug fixes regarding the continuous grabbing mode. Furthermore, the new
revision fixes bugs regarding the use of mark data, the initialization of
the calibration filter, regarding the range images in case that the
rectification filter is disabled, as well as regarding the use of only one
component with a 16 bit representation. The new interface revision
provides new and updated HDevelop example programs, in particular to show
the usage of the different grabbing modes. Finally, the interface
documentation has been generally reviewed and adapted.
-
The new revision of the SiliconSoftware
interface is now based on the new Silicon Software SDK 5.2.1
and supports the Multiple ROI functionality of VisualApplets
modules. Furthermore, the new interface revision fixes several
bugs, in particular regarding the continuous grabbing mode and in
the operator close_framegrabber and it provides new and updated
HDevelop example programs.
- Please refer to the corresponding documentation for
information about additional changes, especially whether a new
revision of the corresponding device driver is required.
Image Acquisition Example
Programs
New Image Acquisition Example Programs
-
The new HDevelop example programs
- hdevelop/Image/Acquisition/sick-3dcamera_buffer_queue.hdev
- hdevelop/Image/Acquisition/sick-3dcamera_grabbing_modes.hdev
show how to use the SICK frame grabber's internal queue of buffers
and how to use different grabbing modes.
-
The new HDevelop example programs
- hdevelop/Image/Acquisition/siliconsoftware_fieldparameter.hdev
- hdevelop/Image/Acquisition/siliconsoftware_multiroi.hdev
show how to access the Silicon Software generic field parameter and
how to use the Silicon Software VisualApplets' RoI functionality.
-
The new HDevelop example programs
- hdevelop/Image/Acquisition/shapedrive_simple.hdev,
- hdevelop/Image/Acquisition/shapedrive_parameters.hdev,
and
- hdevelop/Image/Acquisition/shapedrive_objectmodel3d.hdev
show how to use the ShapeDrive interface.
Modified Image Acquisition Example Programs
-
In the example programs
- c#/IACallback/source/IACallback.cs and
- cpp/console/source/ia_callback.cpp,
the value for the GenICam parameter "EventNotification" has been
changed from "GigEVisionEvent" to "On" to comply with the GenICam
Standard Feature Naming Convention (SFNC) 1.5 and higher.
Removed Image Acquisition Example Programs
-
The example program
- hdevelop/Image/Acquisition/saperalt_split_channel_mode.hdev
has been removed.
Documentation
Installation
Guide
-
The Installation Guide is available in a new edition. It has
been adapted to the changes of HALCON 11.0.2.
HDevelop User's
Guide
-
The HDevelop User's Guide is available in a new edition. It
has been adapted to the changes of HALCON 11.0.2.
Solution Guide II+III (Advanced)
-
The Solution Guide on Classification is available in a new edition.
It now describes also the k-NN classification approach.
Technical Notes
-
The new technical note 'Gray Value Interpolation' describes the methods for
gray value interpolation that are used in HALCON operators.
Reference Manual
-
The operator chapter 'Sets' was also called 'Sets' in the German HDevelop
version, although 'Sets' is no German term. This problem has been fixed.
The chapter has been renamed to 'Mengen-Operationen' in the German
version.
-
The procedure visualize_object_model_3d contained rudimentary German
reference documentation. Therefore, if the GUI language was set to German,
only this rudimentary documentation was shown instead of the detailed
English documentation. Currently, procedures are typically only documented
in English. Therefore, the rudimentary German documentation was removed,
which makes the English documentation to be displayed in any case.
-
In the reference manual entry of calibrate_cameras, the value of the average
backprojection error of the optimization was not specified
correctly. This problem has been fixed.
-
The reference manual entry of dev_open_tool
mentions the wrong value 'operators' for the parameter GenParamName,
instead of the correct value 'operator'. This problem has been fixed.
dev_open_tool with the parameter 'operator' can be
used to open a specific operator reference in the HDevelop Help window,
e.g., dev_open_tool('help',...,'operator','read_image') opens the HDevelop Help window and
displays the operator reference for the operator read_image.
-
The PDF version and the HTML version of the reference manual entry of
dev_open_tool and dev_open_dialog were not consistent. In addition,
some entries for the parameter ToolId were incorrect:
- To open the Measure Assistant via dev_open_tool, the parameter ToolId must be set
to 'measure1d_assistant' instead of 'measure_assistant'.
- To open the Program Line View dialog via
dev_open_tool, the parameter
for ToolId must be set to 'program_line_view_dialog'
instead of 'program_line_view'.
- To open the Breakpoints dialog via dev_open_tool, the parameter for ToolId must be
set to 'breakpoints_dialog' instead of 'breakpoint_dialog'.
- To open the Open Graphics Windows dialog via
dev_open_dialog, the parameter for
ToolId must be set to 'open_graphics_windows_dialog'
instead of 'open_graphics_window_dialog'.
-
In the HTML version of the reference manual entries of calibrate_hand_eye and hand_eye_calibration, the notation of homogeneous
transformation matrices was not consistent with the respective notation in
the PDF version. This problem has been fixed.
-
The reference manual entry of clip_region_rel was unclear. This was particularly
relevant for the definition of the rectangle to which the input region is
clipped. Now, the description is more precise.
-
The reference manual entry of concat_obj
incorrectly mentioned the restriction that object tuples of mixed type must
not be created in HDevelop. This restriction was already eliminated with
the release of HALCON 8.0. Also, the remark that the operator is designed
especially for HALCON/C and is not needed in other language interfaces was
obsolete. The reference manual entry has been adapted accordingly.
-
The reference manual entry of convol_image incorrectly stated that convol_image performs a convolution of an image
with a given filter mask. convol_image
calculates the correlation between the image and the filter mask. The
reference manual entry of convol_image has
been corrected.
-
The attention slots in the reference manual entries of create_serialized_item_ptr and get_serialized_item_ptr were misleading. They
suggested that the two operators must not be used in any application. This
statement is not true. Instead, the operators should not be used in HDevelop
programs, which was already expressed in the respective warnings in the
reference manual entries. This problem has been fixed. The misleading parts
of the attention slots have been removed.
-
The English reference manual entry of create_serialized_item_ptr incorrectly stated that
copying just the pointer to some data would be slower than copying the
actual data. This problem has been fixed.
-
The reference manual entry of dev_open_tool
was erroneous. Some values for the parameter ToolName were not correct.
This problem has been fixed. Especially, the ToolName 'preferences_dialog'
does not exist and has been replaced with the correct value 'preferences'.
Furthermore, some values of the parameter GenParamNames have been
corrected.
-
The reference manual entry of distance_object_model_3d has been extended. It
now mentions that it can be rather slow to compute the distance to
planes fitted with segment_object_model_3d or fit_primitives_object_model_3d, because those
planes might contain a complex boundary. In those cases, it is
recommended to create a new plane without boundary for the
distance computation.
-
The reference manual entries of the operators
- find_component_model,
- find_ncc_model,
- find_planar_uncalib_deformable_model,
- find_planar_calib_deformable_model,
- find_local_deformable_model,
- find_shape_model,
- find_scaled_shape_model,
- find_aniso_shape_model,
- find_shape_models,
- find_scaled_shape_models,
- find_aniso_shape_models, and
- find_surface_model
have been updated to explain the special case where NumMatches=0. In this
case all matching instances are returned.
-
The reference manual of get_data_code_2d_results contained an error in the
description of the parameter 'quality_isoiec15415_values'. For the 2D
stacked code PDF417, it erroneously stated that the grades are 'codeword',
'yield', 'unused', and 'error correction'. This problem has been fixed.
Now, the correct grades 'codeword yield' and 'unused error correction' are
mentioned.
-
In the value list of the parameter GenParamNames of get_deformable_model_params the value
'created_from_xld' was missing. This problem has been fixed.
-
The reference manual entry of interpolate_scattered_data_image stated that the domain
of the Image specifies the valid data points. This is not correct. Instead,
the data points are specified by the difference between the image domain
and the given region RegionInterpolate. The reference manual entry has been
corrected accordingly. Furthermore, it has been extended by some more
details on how to use interpolate_scattered_data_image best.
-
The reference manual entry of points_lepetit mentioned incorrect parameter
values for the parameter Subpix. This problem has been fixed. Now,
the correct values 'interpolation' and 'none' are described.
-
The reference manual entry of set_data_code_2d_param describes the possible side
effects of the parameters 'symbol_rows', 'symbol_cols', 'symbol_rows_min',
'symbol_rows_max', 'symbol_cols_min', 'symbol_cols_max', 'symbol_size_min',
'symbol_size_max', and 'symbol_shape' for Data Matrix ECC 200 codes more
specifically.
-
The reference manual entry of set_metrology_object_param described the measure
direction incorrectly. This problem has been fixed.
-
The reference manual entry of smallest_bounding_box_object_model_3d
incorrectly stated that the exactly oriented bounding box is
returned, although just an approximation is calculated. This problem
has been fixed.
-
The reference manual entry of the operator write_object_model_3d has been extended by the
information that primitives may only be stored in the HALCON 3D
Object Model format 'om3'.
Release Notes
-
The structure of the release notes has been changed in order to make
it easier to find release notes for a specific topic of HDevelop and
of the HALCON library.
Supported Operating
Systems
Windows
HALCON 11.0.2 has been compiled for the following Windows
platform versions:
- x86sse2-win32 platform version for
Windows XP/2003/Vista/2008/7/8/2012 on x86 processors with SSE2
extension, i.e., Intel Pentium 4 / AMD Athlon 64 or newer
- x64-win64 platform version for
Windows XP/2003/Vista/2008/7/8/2012 x64 Edition on Intel 64 or AMD64
processors
The setup process checks whether it is running on a 32 or 64
bit system and provides a suitable list of platform versions that
can be installed.
During the installation, the environment variable HALCONARCH is set to x86sse2-win32 or x64-win64 to
indicate the installed platform version.
Please note that if you want to switch to another platform
version, you must first install it. Then, you must adapt the
environment variable HALCONARCH (see the
Installation Guide for more information).
Linux
HALCON 11.0.2 has been compiled in the following Linux
platform versions:
- x86sse2-linux2.4-gcc40 platform
version for Linux, Kernel 2.4 or higher with ABI 2 on x86
processors with SSE2 extension, i.e., Intel Pentium 4 / AMD
Athlon 64 or newer
- x64-linux2.4-gcc40 platform version
for Linux x86_64, Kernel 2.4 or higher with ABI 2, on Intel 64
or AMD64 processors
Please refer to the Installation Guide for detailed
system requirements corresponding to the different Application
Binary Interfaces.
The installation script checks whether it is running on a 32
or 64 bit system and provides a suitable list of platform
versions that can be installed.
Mac OS X
HALCON 11.0.2 has been compiled for Mac OS X in the following
platform versions:
- x64-macosx platform version for Mac
OS X 10.7 and 10.8.
Miscellaneous
Installation
-
No desktop shortcuts for HDevelop were created if the system was
rebooted at the end of the installation (a reboot is suggested by
the installer after installing the GigEVision filter driver). This
problem has been fixed.
Licensing
- HALCON now uses version 11.11.1 of the FLEXnet Publisher
license manager software.
- Under Linux, the new USB dongle driver version Sentinel HASP
2.1.1 is included.
- Under Windows, the new USB dongle driver version Sentinel
HASP 6.56 is included.
- USB dongles are now supported also for Mac OS X and for Linux
64-bit systems.
-
The following operators were erroneously contained in the module
foundation, while the correct module would be OCR/OCV:
This problem has been fixed.
Example Images
New Example Images
For several of the new HDevelop
example programs, new images are available. On Windows, these
images will be installed automatically during the update to HALCON
11.0.2.
-
The new images
- datacode/ecc200/ecc200_contrast_variations_01-07.png
are used by the HDevelop example program that shows how to use the new mode of the ECC 200 data code reader that is more
robust against local contrast variations.
-
The new images
- color/pills_class_01-10.png and
- color/pills_test_01-03.png.
are used by the HDevelop example program that shows the functionality to
calculate groups of features with given properties for classification that
is provided by the new procedure library
calculate_feature_set.hdpl.
-
The new image
- datacode/qrcode/qr_milk_carton.png
is used by the HDevelop example program that shows how to use the new parameter 'strict_quiet_zone' of the data code
reader to suppress false positives, i.e., the incorrect detection of data
codes, e.g., inside larger data codes.
3D Models
New 3D Models
On Windows, the new 3D model will be installed automatically during
the update to HALCON 11.0.2.
-
The new 3D model
is used by the HDevelop example program that shows how to use the
operator moments_object_model_3d to align a
3D object to the coordinate axes.