Release Notes for HALCON 11.0.3
This document provides the release notes for MVTec HALCON 11.0.3, as released in
April 2014. HALCON 11.0.3 is primarily a
maintenance release that fixes all known bugs in HALCON 11.0.2;
besides, it provides added functionality.
Compatibility
Licenses
HALCON 11.0 licenses are also valid for HALCON 11.0.3. In
contrast, all HALCON 10.0 licenses or licenses of earlier
versions must be replaced or upgraded. Please contact your local
distributor.
In a continuous effort to improve the comfort and security of licenses, our
licensing software supplier provides regular updates. Along with many
enhancements, a recent update unfortunately broke
compatibility with parallel port dongles.
Since this version is
used in HALCON 11, it is no longer possible to issue licenses bound to
parallel port dongles.
HALCON Library
HALCON 11.0.3 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.2:
-
Because of a change concerning the setting of the
world pose for metrology models using add_metrology_object_circle_measure, add_metrology_object_line_measure, add_metrology_object_ellipse_measure,
add_metrology_object_rectangle2_measure, or
set_metrology_object_param, now, if
different world poses are set, always the last world pose is used
and set for the whole model. This applies also for metrology models
read from file that were written with 11.0.2 or earlier versions. As
a consequence, if a metrology model included two metrology objects
with different world poses, now two metrology models must be
created, one for each world pose. For more information, please see
the full release note.
-
Because of a fix regarding the consistency between
sequential and parallel execution of find_local_deformable_model, find_planar_calib_deformable_model, and find_planar_uncalib_deformable_model, the resulting Score
may be greater than in previous versions. Therefore, it might be
necessary to adapt the parameter MinScore accordingly.
-
Several error codes that are returned by select_feature_set_gmm, select_feature_set_knn, select_feature_set_mlp, and select_feature_set_svm in the case of
invalid input parameters have been changed. Therefore, programs
that evaluate the returned errors must be adapted accordingly. For
a complete list of changed error codes, please see the full release note.
-
The error code has been changed that is returned by
set_metrology_object_param if invalid camera
parameters are given. Therefore, programs that evaluate the returned errors
must be adapted accordingly. Instead of the error 1302 ("Wrong value of
control parameter: 2"), now the error 1403 ("Wrong number of values of
control parameter: 3") is returned.
-
Because of a fix concerning the meaning
of the parameters 'poly_rad_2', 'poly_rad_4', and
'poly_rad_6' in set_calib_data and
get_calib_data, the behavior of
'poly_rad_2', 'poly_rad_4', and 'poly_rad_6' has been changed
in set_calib_data. The results
returned by get_calib_data have been
adapted accordingly.
In set_calib_data, the former
behavior of 'poly_rad_2', 'poly_rad_4', and 'poly_rad_6' can
now be obtained by using 'k1', 'k2', and 'k3',
respectively.
get_calib_data does not return
'poly_rad_2', 'poly_rad_4', and 'poly_rad_6' anymore, but
'k1', 'k2' and 'k3'. Therefore, programs that evaluate the
returned parameter names must be adapted accordingly.
HALCON Applications
Applications (i.e., executables) developed with HALCON 11.0, HALCON
11.0.1, or HALCON 11.0.2 can be used with HALCON 11.0.3, i.e., HALCON
11.0.3 is binary compatible with HALCON 11.0 (except for applications
that use the HALCON/C++ interface), HALCON 11.0.1, and HALCON 11.0.2.
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, HALCON 11.0.1, and HALCON 11.0.2,
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.3, 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.2:
-
For using the updated BitFlow interface you must
install the new BitFlow SDK 5.70.
-
For using the updated LinX interface you must
install the new LinX SDK 5.70.
-
For using the updated PixeLINK interface you must
install the new PixeLINK SDK Release v8.7.
If you have developed your own acquisition interfaces with
HALCON 11.0, HALCON 11.0.1, or HALCON 11.0.2, you can use them with
HALCON 11.0.3 without further action.
Extension Packages
Extension packages developed with HALCON 11.0, HALCON 11.0.1, or
HALCON 11.0.2 can be used with HALCON 11.0.3 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.3.
-
ActivVisionTools 1.0 to 3.1 cannot be used with
HALCON 11.0.3. If the setup program detects such an
ActivVisionTools version, it warns you that by continuing to
install HALCON 11.0.3 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.3
Image Acquisition
Speed-Up
HALCON Library
HDevelop
HDevelop has been enhanced in various ways, e.g.,
Examples
Detailed Description of Changes in HALCON
11.0.3
Detailed release notes can be obtained for the following
topics:
HDevelop
Functionality
Assistants
-
The Matching Assistant allowed to set the parameters Min. Row
Scale, Min. Column Scale, Max. Row Scale, and Max. Column Scale
to values between 0.5 and 5.0. A scaling factor above 2.0 may
have produced artifacts that were in general difficult to
handle. Now, the maximum allowed scaling factor is 2.0. Thus,
the scaling factor can now be set to a value between 0.5 and
2.0.
-
In the Matching Assistant, the default value for the parameter Angle
Extent has been changed from 45° to 360 ° for the
Correlation-Based method.
-
The Matching Assistant now gives a warning when a 3D DXF model is loaded by
mistake.
-
The code generated by the OCR Assistant explicitly assigned
values to all parameters of the text model. Now, values are
only assigned if they differ from the default value of the text
model.
Program Listing/Editor
-
When a procedure is edited within the Program window
somewhere above the current position of the program counter
(PC), in general, the PC is set to the edited program line
and, if there is a procedure that is currently called from
the edited procedure, that procedure is aborted. However, for
some edit actions this behavior is not intuitive and
unneeded. Therefor it has been changed so that the PC is no
longer moved in the following cases:
- The edit action just inserts or removes spaces (outside
of string parameters). This also affects the (auto)
indentation actions with Ctrl+Shift+I, Tab, and
Shift+Tab.
- The action just removes program lines
- The modifications apply only on or lead to program
lines that are not executable (e.g., comments, empty lines,
invalid lines).
Furthermore, the PC was not moved, if a program line above the PC was
activated. Now, the PC is set to such a program line when it is activated.
Dialogs
-
In the Browse Examples dialog, the HDevelop image acquisition example
programs have been removed from the main list in the categories Industry
and Application Area. This makes the amount of general example programs in
these categories a little less overwhelming and a little more accessible.
The corresponding example programs still appear in the category
"Method->Image Acquisition".
GUI
-
The handling of the spin boxes in HDevelop has been improved. Editing of
values of spin boxes directly with the keyboard may have had unintuitive
side effects or has been very inconvenient in some cases because every
key press induced a value change. In particular, this led to the
following problems: If the value of a spin box that defines an upper
bound of a range was changed, it may have happened that the respective
lower bound was set to a small value, because when entering the first
digit of the upper bound, the lower bound has been adapted to this value.
Furthermore, if the value change of the spin box triggers the execution
of a time consuming operation, it is very inconvenient that this
operation is executed on every keystroke.
To improve the usability of
spin boxes, their behavior has been changed such that further actions
like the adaptation of other values or the execution of time consuming
operations are only triggered if
- the text box loses the focus,
- the enter or return key is pressed, or
- the up or down key is pressed.
This change affects all spin boxes used in HDevelop,
including the Calibration Assistant, the Matching Assistant,
the Measure Assistant, the OCR Assistant, the Gray Histogram,
and the Line Profile tool.
-
The Help button in the Visualize Object Model 3D dialog now opens the Help
window in addition to changing the status message.
Code Export
-
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++. Note that this
problem has already been fixed in HALCON 11.0.2.1.
Bug Fixes
HDevelop Language
-
dev_open_tool returned a wrong value for the
parameter ToolId under Linux and Mac OS X. This happened when dev_open_tool was used to open a Help Browser, i.e., with
the parameter ToolType set to 'help'. As a consequence, no further action
could be undertaken with the returned ToolId. In particular, the Help Browser
could not be closed with dev_close_tool. This
problem has been fixed.
-
dev_show_tool displayed only an empty window
if HDevelop was in MDI mode and if the Variable window had been closed
beforehand. This problem has been fixed.
-
Calling dev_set_part and then dev_display may have led to a black rectangle
below the image data if the height in dev_set_part
was greater than the height of the image and dev_set_part started at the position 0,0. This problem
occured only on Linux and Mac OS X Systems. This problem has been fixed.
Procedures
-
If local procedures are pasted to a program and if these procedures have
the same name as an already existing local procedure but a different
signature, the procedures are pasted with a different name. In order to
paste consistent code, the program lines that call these procedures must
also be renamed. However, this failed in the following cases:
- The program lines within the pasted procedures that
refer to other renamed procedures from the clipboard have
not been renamed.
- In the full text editor, within the pasted HDevelop
code not only the actual procedure names have been replaced
by the new procedure name but also all other occurrences of
the original procedure name within the text, i.e., also
matching substrings within parameter expressions.
These problems have been fixed.
-
External procedures and procedure libraries that are located in a
directory that is only a symbolic link in the path, were not found
as external procedures. This problem occurred only on Linux and Mac
OS X systems. This problem has been fixed.
-
HDevelop could crash when a local procedure was deleted while it was
displayed on a tab card of the Program window. This problem has been
fixed.
-
Converting procedure libraries with HDevelop -convert could lead to a crash
if a library was loaded with its absolute path and if it was in one of the
used external procedure paths. This problem has been fixed.
-
Procedure calls inside of an imported HDevelop procedure might have become
invalid, e.g., if they were also available via a user defined procedure
path and if that procedure path was deleted or deactivated. This problem
has been fixed.
-
When a procedure library was modified and saved, HDevelop sometimes
erroneously displayed the message "Procedure library <library> was
modified outside HDevelop" and asked whether the user wants to overwrite
the allegedly modified file. This problem has been fixed.
-
While editing another procedure than 'main' in the Program window, the last
program line was ignored for some edit actions like copy, cut, and delete
if it contained a return statement. This problem has been fixed.
-
Pasting some text into a procedure that was opened explicitly, i.e.,
without setting the external procedure path, could erroneously popup a
warning dialog. This happened when the copied text contained parts of a
program line that calls another explicitly opened procedure. In that case,
the user was warned that the procedure could not be reached for calling and
asked to add the path to the external procedure path list. This was
confusing because the other procedure was already opened and the path was
intentionally not set. In addition, this warning was also opened, when only
a part of the program line, e.g., the name of a parameter was pasted into
the current procedure. These problems have been fixed. Furthermore, in
conjunction with pasting program lines into the full text editor, a small
memory leak was fixed.
-
HDevelop sometimes crashed after the deactivation or deletion of a
procedure path. In particular, this happened when an external procedure was
selected in the Operator Window, the procedure's path was deactivated, and
the operator name field was used again without further changes. This
problem has been fixed.
Image Acquisition Assistant
-
The Image Acquisition Assistant did not show a wait cursor while closing a
camera connection. This problem has been fixed. Now, when closing a camera
connection by pressing the 'Disconnect' button or the respective icon in
the menu bar or in the tool bar, a wait cursor appears.
-
The Image Aquisition Assistant was not usable when the last used image
acquisition interface, which was remembered by the assistant, started
crashing. This problem has been fixed. Now the Image Acquisition Assistant
uses the File image acquisition interface as fallback.
Calibration Assistant
-
The Calibration Assistant sometimes clipped values of camera parameters
that were loaded from file. Values greater than 1e5 and less than -1e5 were
set to 1e5 and -1e5, respectively. This problem has been fixed.
-
HDevelop's Calibration Assistant sometimes had a strange behavior by
showing and hiding a button or by flickering that button. This may have
occurred on the 'Calibration' tab when Live Image is checked. This problem
has been fixed.
-
In the Calibration Assistant, the Import Parameters button on the Setup tab
card allows to load an existing calibration file with the extension *.cal
or *.dat to initialize the start parameters. However, under Linux, files
with matching extensions were not listed in the file dialog. This problem
has been fixed.
Matching Assistant
-
In the Matching Assistant, some file names were stored with absolute
paths, even if the file resided on the same drive as the saved
HDevelop program and Preferences > General Options > Relative
File Paths was checked. This problem occurred only on Windows
systems. This problem has been fixed.
-
The Matching Assistant sometimes behaved different after selecting the
Graphics Window as source. Depending on the order of the steps
- read an image
- create an ROI
- selecting the Model Source: Graphics Window
the 'Modify Model Image' Enable checkbox was enabled or not. To modify a
model image, an image must be selected. After setting the ROI and
switching to Model Source 'Graphics Window', it was not possible to select
an image. Therefore the checkbox was not enabled. This behavior has been
changed. Now an image can be selected, by simply displaying it in the
Graphics Window, also after selecting the ROI and setting the Model Source
to 'Graphics Window'. In Addition, the GUI has been changed. Now the
assistant shows the selected model image in a small icon. If the 'Graphics
Window' has been selected as source for the model image a snap button
enables the user to select the image currently displayed in the active
'Graphics Window'.
-
The optimization of HDevelop's Matching Assistant did not work when
the matching method 'Correlation-Based' was selected. Instead of
optimizing the 'Correlation-Based' matching model, the
'Descriptor-Based' was optimized. This problem has been fixed.
Measure Assistant
-
The code generated by the Measure Assistant raised an error if calibration
to world coordinates was used but no edge was found. This problem has been
fixed.
OCR Assistant
-
If an OCR Assistant dialog was minimized or closed, it could still output
results into the Graphics Window in some situations. This problem has been
fixed.
-
Using the drag and drop function within the OCR Training File
Browser to copy samples from one training file to another may
have led to a crash in rare cases. Typically, every sample
consists of an image and a region that describes the Region Of
Interest (ROI) of the sample. If a sample has no ROI and is
copied to a new training file, the new sample gets corrupt
(width = -1, height = -1). When trying to save the new training
file repeatedly, HDevelop may have crashed. This problem has
been fixed. Now, the training file is not saved and the error
3111 ("At least one input object has an empty region") is
returned.
-
In the thumbnail view of the OCR Training File Browser, it was not possible
to properly select samples by drawing a rectangle because the rectangle
could only be draw at the border and the resizing of the rectangle came
into conflict with moving the samples. Because of conceptual problems of
this functionality, it as been removed.
-
Word processing in the OCR Assistant stopped working properly after a
program reset (F2). This problem has been fixed.
Program Listing/Editor
-
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. Note that this problem has
already been fixed in HALCON 11.0.2.1.
-
If the selection within the full text editor ran over at least one
program line up to the beginning of the next program line, so that the text
cursor was placed in front of the first character of the next program line,
the handling of the selection was not intuitive for the following actions:
- If a new procedure was created, the selected program
lines, including the one that was only touched by the text
cursor, were moved to the body of the new procedure.
- The same misbehavior could be observed if the selected
program lines were activated or deactivated.
- In contrast to that, if the indentation of the selected
text was changed by pressing the TAB key, the indentation
of the following line was not changed. However, after
performing that action the text cursor had been moved to
the end of the last selected program line. If that happened
on a long program line, the text area was scrolled to the
right.
These problems have been fixed.
-
HDevelop sometimes crashed while editing the code. This problem has been
fixed.
-
HDevelop sometimes crashed when an import statement was deactivated after
opening the procedure manager. This problem has been fixed.
Operator Window
-
HDevelop crashed when a program line that contained only the text 'for' was
loaded into the Operator Window with double click and replaced via the
Replace button. This problem has been fixed.
Tools
-
The Gray Histogram did not properly test if multi-channel images
contained channels of the unsupported gray values types complex and
vector_field. This problem has been fixed.
-
HDevelop's profiler displayed an incorrect average execution time for
program lines that were currently being executed. This problem has been
fixed. The reason for this miscalculation was that the total number of
executions of a program line was increased when the line was entered, but,
of course, the total execution time of that program line could only be
updated when it was left again. Now, the total number of executions is
increased after the program line is left, too.
-
After opening a 'pixmap' window, opening the Zoom window, and moving the
mouse over HDevelop's default Graphics Window, HDevelop crashed. This
problem has been fixed.
-
The ROI for HDevelop's Line Profile tool could only be created and
edited in the Graphics Window that was active when the Line Profile
tool was opened. This problem has been fixed. Now the Line Profile
tool's ROI is always displayed, and can only be edited or drawn in
that Graphics Window that currently provides the input data for the
Line Profile tool.
-
Opening a Graphics Window with size 0 x 0 under Linux could crash HDevelop.
This problem has been fixed.
Dialogs
-
The Procedure Interface dialog allows to define the semantic types
for all parameters of a procedure. If this was used to set the
semantic type of a parameter to 'matrix' and if via this parameter
an arbitrary value instead of a valid matrix handle was passed,
HDevelop crashed when the appropriate variable was inspected by
double clicking on it in the Variable View window. This problem has
been fixed.
-
The Preferences/Procedures dialog was not updated correctly if a new
program was created while a program that contained import statements was
already open. The procedure paths set by the import statement remained in
the list of search directories on the tab card Directories and imported
procedures remained in the list of external procedures on the tab card
External Procedures. Furthermore, any action on these remaining
inconsistent entries (e.g., double clicking an import path in the tab card
Directories to show the corresponding import statement in the program
window) resulted in a crash of HDevelop. This problem has been fixed.
General
-
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. Note that this problem has already been fixed in
HALCON 11.0.2.1.
-
If for several HDevelop instances that are running simultaneously, the Help
windows were opened, closing one Help window corrupted the operator and
procedure references within the Help windows of the other HDevelop
instances. This problem has been fixed.
-
In some cases, no emergency backup was saved when HDevelop crashed. Note
that this problem affected only the HALCON versions 11.0.1 and 11.0.2. This
problem has been fixed.
-
In some cases, the auto completion tooltip did not disappear when
HDevelop lost the focus to another application. In this case, the
tooltip remained in front of all other windows and applications.
This happened when only the operator tooltip was displayed without
the suggestion list. This problem has been fixed.
-
If "Organize Windows" was executed while the MDI area was scrolled
down or right, the windows were arranged within the currently
visible part of the MDI area. However, the part was not reset, so
the scroll bars were still required and remained visible. This
problem has been fixed.
Code Export
-
HDevelop in rare cases exported programs containing handling of HDevelop
Graphics Windows incorrectly to C#. This happened if a Graphics Window
handle was referenced and the only prior initialization of the window
handle was via the operator dev_get_window.
The problem only occurred if the option 'Window export' was set to 'Use
HALCON Windows'. This problem has been fixed.
-
HDevelop erroneously exported calls to the HDevelop operator dev_get_system in all exports except Visual Basic
.NET. In the latter case, HDevelop crashed when trying to export calls to
the above operator. This problem has been fixed. Now, in all exports, a
comment is exported, containing the information that dev_get_system is only supported in HDevelop.
Examples
New Example Programs
HALCON has been extended with the following HDevelop example
programs:
-
The new HDevelop example program
- hdevelop/Applications/Print-Inspection/inspect_bottle_label_360_degree.hdev
combines four individual images of a bottle into a mosaic image that
shows the unrolled label of the bottle.
It uses the new images
- bottle_label/freixenet_01_cam_1-4.png,
- bottle_label/freixenet_02_cam_1-4.png,
- bottle_label/got2b_01_cam_1-4.png,
- bottle_label/got2b_02_cam_1-4.png,
- bottle_label/jever_01_cam_1-4.png,
- bottle_label/jever_02_cam_1-4.png,
- bottle_label/wala_01_cam_1-4.png, and
- bottle_label/wala_02_cam_1-4.png.
-
The new example program
- hdevelop/Identification/Bar-Code/barcode_param_element_size_variable.hdev
shows the ability of the bar code reader to decode even
deformed GS1 DataBar Limited codes.
It uses the new images
- barcode/gs1databar_limited/gs1databar_limited_cylinder.png
- barcode/gs1databar_limited/gs1databar_limited_no_deform.png
Modified Example Programs
-
The following HDevelop example programs have been revised:
- hdevelop/3D-Reconstruction/Binocular-Stereo/disparity_image_to_xyz.hdev
- hdevelop/Applications/Data-Codes/aztec_optimized_settings.hdev
- hdevelop/Applications/Data-Codes/aztec_simple.hdev
- hdevelop/Applications/Data-Codes/ecc200_optimized_settings.hdev
- hdevelop/Applications/Data-Codes/ecc200_simple.hdev
- hdevelop/Applications/Data-Codes/micro_qr_optimized_settings.hdev
- hdevelop/Applications/Data-Codes/micro_qr_simple.hdev
- hdevelop/Applications/Data-Codes/pdf417_optimized_settings.hdev
- hdevelop/Applications/Data-Codes/pdf417_simple.hdev
- hdevelop/Applications/Data-Codes/qrcode_optimized_settings.hdev
- hdevelop/Applications/Data-Codes/qrcode_simple.hdev
- hdevelop/Applications/Object-Recognition-2D/roads.hdev
- hdevelop/Applications/Position-Recognition-2D/adapt_pattern.hdev
- hdevelop/Applications/Position-Recognition-2D/find_mirror_dies.hdev
- hdevelop/Applications/Position-Recognition-2D/pattern.hdev
- hdevelop/Filters/Arithmetic/abs_image.hdev
- hdevelop/Filters/Arithmetic/add_image.hdev
- hdevelop/Filters/Arithmetic/div_image.hdev
- hdevelop/Filters/Arithmetic/max_image.hdev
- hdevelop/Filters/Arithmetic/min_image.hdev
- hdevelop/Filters/Arithmetic/mult_image.hdev
- hdevelop/Filters/Arithmetic/sub_image.hdev
- hdevelop/Filters/Smoothing/binomial_filter.hdev
- hdevelop/Filters/Texture/texture_laws.hdev
- hdevelop/Identification/Data-Code/2d_data_codes_default_settings.hdev
- hdevelop/Identification/Data-Code/ecc200_finder_pattern_tolerance.hdev
- hdevelop/Identification/Data-Code/ecc200_training.hdev
- hdevelop/Image/Features/cooc_feature_matrix.hdev
- hdevelop/Matching/Component-Based/cbm_label_simple.hdev
- hdevelop/Matching/Component-Based/cbm_pipe_wrench_simple.hdev
- hdevelop/Matching/Shape-Based/set_shape_model_timeout.hdev
- hdevelop/Regions/Features/get_region_thickness.hdev
- hdevelop/Regions/Features/runlength_distribution.hdev
- hdevelop/Segmentation/Threshold/dyn_threshold.hdev
- solution_guide/basics/create_model_green_dot.hdev
- solution_guide/basics/matching_green_dot.hdev
- solution_guide/matching/rectify_results.hdev
-
In the HDevelop example program
- hdevelop/Matching/Component-Based/cbm_label_simple.hdev
not all labels were found correctly. This problem has been fixed.
-
The HDevelop example program
- hdevelop/Applications/Traffic-Monitoring/detect_road_signs.hdev
has been adapted to take a change into account that results from a fix regarding the consistency between sequential and
parallel execution of
find_local_deformable_model,
find_planar_calib_deformable_model,
and find_planar_uncalib_deformable_model. Due to this fix, the
resulting Score may be greater than in previous versions.
-
The following example programs have been revised to reflect various
improvements of the data code reader:
- hdevelop/Applications/Data-Codes/qrcode_simple.hdev
- hdevelop/Identification/Data-Code/2d_data_codes_arbitrary_distortions.hdev
Furthermore, some images used in the following example programs were
out of date:
- hdevelop/Identification/Data-Code/2d_data_codes_arbitrary_distortions.hdev
- hdevelop/Identification/Data-Code/micro_qr_strict_quiet_zone.hdev
Thus, the following images have been updated:
- images/datacode/ecc200/ecc200_distorted_003.png
- images/datacode/ecc200/ecc200_distorted_004.png
- images/datacode/ecc200/ecc200_distorted_005.png
- images/datacode/qrcode/qr_milk_carton.png
Removed Example Programs
-
The following HDevelop example programs have been removed, because they
were out-dated or because they explained approches that are already
explained by other HDevelop example programs.
- hdevelop/Applications/Position-Recognition-2D/movement_col.hdev
- hdevelop/Applications/Measuring-2D/measure_online.hdev
HALCON Library
Modified Operators
2D Metrology
-
set_metrology_object_param has been extended
by a generic parameter 'max_num_iterations' for setting an upper limit for
the number of iterations computed by the RANSAC algorithm. This can be
helpful when time restrictions are more important than the quality of the
fitted geometric form.
Calibration → Camera Parameters
-
All operators that read camera parameters should check if the supplied
parameters are plausible. If unexpected data is supplied, an appropriate
exception should be raised. The requested functionality has been
implemented.
Identification → Bar Code
-
The bar code reader is more robust with respect to the allowed width ratio
of wide and narrow elements for the decoding of Code39 codes.
-
The bar code reader is now more robust for codes that can only be read at
the edge of the codes, i.e., codes that have defects in the inner region of
the code.
-
The bar code reader has been improved in the following way: It is now able
to decode GS1 DataBar Limited, Expanded, and Expanded Stacked codes, even
if they are deformed. For this, it has been extended with the new parameter
'element_size_variable'. If 'element_size_variable' is set to 'true', the
bar code reader tries to undistort the image, which makes it more likely
that the bar code can be decoded successfully. For more information, please
refer to the reference manual entry of set_bar_code_param.
The new example program
- hdevelop/Identification/Bar-Code/barcode_param_element_size_variable.hdev
shows the ability of the bar code reader to decode even deformed GS1
DataBar Limited codes.
It uses the new images
- barcode/gs1databar_limited/gs1databar_limited_cylinder.png
- barcode/gs1databar_limited/gs1databar_limited_no_deform.png
Identification → Data Code
-
The data code reader is more robust with respect to perspective distortions
of QR codes.
Matching → Gray-Value-Based
Bug Fixes
2D Metrology
- add_metrology_object_circle_measure, add_metrology_object_ellipse_measure, add_metrology_object_line_measure, and add_metrology_object_rectangle2_measure hung if
called twice with a wrong number of input values. This problem has been
fixed.
-
add_metrology_object_circle_measure, add_metrology_object_line_measure, add_metrology_object_ellipse_measure, add_metrology_object_rectangle2_measure, and set_metrology_object_param allowed to set different
world poses for different metrology objects contained in the same model.
These different poses were used in the computation, although the metrology
model is designed for measurement in one measurement plane, only. This
problem has been fixed. Now, the behavior corresponds to the one for camera
parameters, i.e., if different world poses are set, always the last world
pose is used and set for the whole model. This applies also for metrology
models read from file that were written with 11.0.2 or earlier
versions.
As a consequence, if a metrology model included two metrology objects with
different world poses, now two metrology models must be created, one for
each world pose. The following code snippets demonstrate, how to adapt
existing programs.
Metrology model creation as working until HALCON 11.0.2:
Pose := [0,0,0.1,0,0,0,0]
Pose2 := [0,0,0.2,0,0,0,0]
create_metrology_model (MetrologyHandle)
add_metrology_object_circle_measure (MetrologyHandle, 10, 10, 10, 20, 5, 1, 30, 'world_pose', Pose, Index1)
add_metrology_object_circle_measure (MetrologyHandle, 30, 30, 10, 20, 5, 1, 30, 'world_pose', Pose2, Index2)
Changed metrology model creation necessary for HALCON 11.0.3 and higher:
Pose := [0,0,0.1,0,0,0,0]
create_metrology_model (MetrologyHandle)
add_metrology_object_circle_measure (MetrologyHandle, 10, 10, 10, 20, 5, 1, 30, 'world_pose', Pose, Index1)
Pose2 := [0,0,0.2,0,0,0,0]
create_metrology_model (MetrologyHandle2)
add_metrology_object_circle_measure (MetrologyHandle2, 30, 30, 10, 20, 5, 1, 30, 'world_pose', Pose2, Index2)
-
add_metrology_object_circle_measure,
add_metrology_object_ellipse_measure,
add_metrology_object_rectangle2_measure, and add_metrology_object_line_measure did not
return an error if an invalid pose, in particular, a tuple with too many
values, was given.
If wrong camera parameters were set together with other parameters,
e.g., a minimum score, with one of the above operators or with set_metrology_object_param, an appropriate
error was returned. Nevertheless, the wrong camera parameters were
stored in the metrology model. These problems have been fixed.
-
add_metrology_object_circle_measure and
add_metrology_object_rectangle2_measure
returned wrong error messages if Radius or Length1 and Length2,
respectively, were set to 0. This problem has been fixed. Now, instead of
the error 8573 ("Not enough valid measures for fitting the metrology
object"), the errors 1304 ("Wrong value of control parameter: 4"), 1305
("Wrong value of control parameter: 5"), and 1306 ("Wrong value of control
parameter: 6") are returned.
-
apply_metrology_model sometimes had long
runtimes. This occurred only if very few measure points were available for
the negative or positive edge transition direction, or if the edge points
were numerous but did not fully support the given model. This problem has
been fixed.
-
apply_metrology_model crashed when it was
called with an invalid metrology model handle and no metrology model was
previously created. This problem has been fixed.
-
apply_metrology_model crashed if the correct
image size was not set and a metrology object was deleted before calling
apply_metrology_model. This problem has been
fixed.
-
apply_metrology_model does not find some of
the rectangles, when searching for nested rectangles. This problem has been
fixed.
-
apply_metrology_model did not find a result
for rectangles if the rectangle metrology object was significantly larger
than the rectangle to be searched for in the image and therefore, some of
the measures were outside of valid object candidates. This problem has been
fixed.
-
apply_metrology_model computed slightly
incorrect scores for rectangles when there were measures and edge points
outside of the rectangle candidate and the edge points were close to the
continuation of a rectangle side. This problem has been fixed.
-
apply_metrology_model did not return
an error if only camera parameters or only a pose was set. This
problem has been fixed. Now an error is returned if either the pose
or the camera parameters are missing.
-
copy_metrology_object crashed when a fuzzy
function was set with set_metrology_object_fuzzy_param before the call of copy_metrology_object. This problem has been fixed.
-
copy_metrology_object did not copy measure
objects correctly. This problem has been fixed.
-
get_metrology_object_measures returned
measures twice in certain cases. This problem only occurred if
'measure_transition' was set to 'uniform'. This problem has been
fixed.
-
get_metrology_object_param crashed in rare
cases if the metrology model had no metrology object and the camera
parameters were accessed. This problem has been fixed.
-
get_metrology_object_result returned
duplicate results when the results or scores for all objects were
requested at once. This problem occurred only if the objects in the
model had different numbers of instances. This problem has been
fixed.
-
get_metrology_object_result returned the
wrong sign for the rotation of rectangles and ellipses when camera
parameters and a measurement plane (pose) were set and the results were
returned in metric coordinates. This problem has been fixed.
-
set_metrology_object_fuzzy_param crashed when
it was called with invalid parameters twice. This problem has been
fixed.
-
set_metrology_object_param returned the error
1302 ("Wrong value of control parameter: 2") for invalid camera parameters
set with the generic parameters. This problem has been fixed. Now, the
error 1403 ("Wrong number of values of control parameter: 3") is
returned.
-
transform_metrology_object did not transform
the metrology objects correctly if the metrology model contained at least
two metrology objects, the parameter Phi was set to 0, and the parameter
Mode was set to 'absolute'. This problem has been fixed.
-
transform_metrology_object did not handle
tuples correctly that were passed for the parameter Indices. Only the first
value of such tuples was used. This problem has been fixed.
3D Matching → Shape-Based
-
find_shape_model_3d did not use the full
specified longitude range in some cases. This problem has been fixed. Now,
find_shape_model_3d uses the full specified
longitude range.
-
find_shape_model_3d in rare cases returned
different results when executed with a different number of threads. This
might have happened if the generic parameter 'max_overlap' was set to a
value different from 1.0. This problem has been fixed.
-
find_shape_model_3d could crash for certain
input models if OpenGL was unavailable or disabled. This problem has been
fixed.
3D Object Model → Creation
-
gen_sphere_object_model_3d and gen_sphere_object_model_3d_center did not
return an error if Radius was set to a value smaller than or equal
to 0. As a consequence, invalid primitives were created. This
problem has been fixed. Now, in these cases, the operators return an
error.
-
write_object_model_3d crashed when a number
was passed for the parameter FileName. This problem has been fixed.
-
write_object_model_3d did not accept the
values 'true' and 'false' for the generic parameter 'invert_normals',
contrary to the documentation. This problem has been fixed. Now, both
integers and strings are accepted, 1 yielding the same result as 'true', 0
the same result as 'false'.
-
write_object_model_3d did not write normals
for files of type 'obj', i.e., if the parameter FileType was set to 'obj'
and read_object_model_3d did not read
normals from files of type 'obj'. These problems have been fixed.
3D Object Model → Features
3D Object Model → Segmentation
-
fit_primitives_object_model_3d sometimes did
not find a fitting cylinder, although the input data matched a cylinder
very nicely. This problem has been fixed.
-
reduce_object_model_3d_by_view crashed in
some cases when called with more than one region. This problem has been
fixed. Note that this problem has already been fixed in HALCON
11.0.2.1.
3D Object Model → Transformations
-
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. Note that this problem has already been fixed in HALCON
11.0.2.1.
-
project_object_model_3d crashed in some cases
if the number of projected contours was zero. This problem has been
fixed. Note that this problem has already been fixed in HALCON
11.0.2.1.
-
project_object_model_3d did not correctly
perform the hidden surface removal if OpenGL was either unavailable or
disabled. This problem has been fixed.
-
register_object_model_3d_global sometimes did
not optimize the poses of the passed 3D object model. Instead, the poses
became worse, the operator returned the input poses, or an incorrect error
message was raised. This problem has been fixed.
-
register_object_model_3d_global, register_object_model_3d_pair, and create_surface_model crashed if a 3D object model
with a diameter equal to zero was passed, i.e., if all points of the 3D
object model were identical. This problem has been fixed.
-
register_object_model_3d_pair calculated a
wrong pose if the method 'icp' was used and if the first 3D object model,
which is passed in the parameter ObjectModel3D1, contained more points than
the second one, which is passed in ObjectModel3D2. This problem has been
fixed.
-
sample_object_model_3d sometimes did
not work correctly or caused HDevelop to freeze if the input model
contained lines. This problem has been fixed.
-
surface_normals_object_model_3d may have set
the value NaN for the normals if they could not be computed. This problem
has been fixed. In situations where no normal can be computed, the normal
vectors are now set to zero.
3D Reconstruction → Binocular Stereo
3D Reconstruction → Photometric
Stereo
-
photometric_stereo in rare cases returned
different height fields for the same input. This could have happened when
the domains of the input images were not the full domain. This problem has
been fixed.
3D Reconstruction → Sheet of Light
-
apply_sheet_of_light_calibration did not work
correctly for reduced domains. This problem has been fixed.
-
get_sheet_of_light_param returned the error
7002 ("Wrong type: output control parameter (see: HPut*Par)") for some
parameters if the model has not been calibrated. This problem has been
fixed. Now, an empty tuple is returned instead.
-
measure_profile_sheet_of_light sporadically
computed no or incomplete results. This happened only if in create_sheet_of_light_model the parameter
'ambiguity_solving' was set to 'brightest', the parameter 'score_type' was
set to 'width' or 'none', and the parameter 'num_profiles' was set to a value
smaller than the default value (512). This problem has been fixed.
-
set_profile_sheet_of_light did not work
correctly for reduced domains. This problem has been fixed.
Calibration → Binocular
-
binocular_calibration for telecentric
cameras excluded camera parameters from the calibration, when
parameters of the camera pose were specified for exclusion. This
problem has been fixed.
Calibration → Camera Parameters
-
read_cam_par now returns an error if the
camera parameter file contains unknown parameters.
Calibration → Hand-Eye
-
It was not possible to query the standard deviations and covariances of the
results of calibrate_hand_eye. This problem
has been fixed. Now, it is possible to query 'tool_in_cam_pose_deviations',
'tool_in_cam_pose_covariances', 'obj_in_base_pose_deviations',
'obj_in_base_pose_covariances', 'base_in_cam_pose_deviations',
'base_in_cam_pose_covariances', 'obj_in_tool_pose_deviations', and
'obj_in_tool_pose_covariances' with get_calib_data.
-
hand_eye_calibration returned the covariances
of the estimated poses in radians instead of degrees. This problem has been
fixed.
-
set_calib_data_observ_pose now returns an
error if it is not used with a calibration data model that is configured
for hand-eye-calibration with no calibration object.
Calibration → Multi-View
-
calibrate_cameras returned slightly
inaccurate results for projective area scan camera. The effect was only
noticeable for simulated data and is negligible. This problem has been
fixed.
-
calibrate_cameras erroneously calibrated Sy
for pinhole cameras if Sx was excluded from the calibration, although Sy
should never be calibrated for pinhole cameras. This problem has been
fixed.
-
calibrate_cameras caused a memory leak. This
problem has been fixed.
-
calibrate_cameras could not handle a start
pose with zero rotations around x and y (RotX and RotY) in telecentric
cases. This problem has been fixed.
-
get_calib_data and set_calib_data returned no error or an incorrect
error in case of an invalid calibration object id. This problem has been
fixed.
-
set_calib_data crashed if the parameter
DataName was set to 'excluded_settings' or 'calib_settings' and the
parameter DataValue was set to 0. This problem has been fixed. Now, an
appropriate error message is returned in these cases.
-
set_calib_data and get_calib_data treated the parameters
'poly_rad_2', 'poly_rad_4', and 'poly_rad_6' incorrectly. These
parameters can be used to control, which of the distortion
parameters of the polynomial distortion model should be optimized
by the camera calibration. Instead of the correct mapping
- 'poly_rad_2': k1
- 'poly_rad_4': k1 and k2
- 'poly_rad_6': k1, k2 and k3
the parameter 'poly_read_4' affected only k2 and the parameter
'poly_rad_6' affected only k3.
This problem has been fixed. In addition, the new parameters 'k1',
'k2', and 'k3' have been added, to still allow an individual
control of the parameters k1, k2, and k3. With this, the mapping
of the parameters to the affected distortion parameters of the
polynomial distortion model is as follows:
- 'poly_rad_2': k1
- 'poly_rad_4': k1 and k2
- 'poly_rad_6': k1, k2 and k3
- 'k1': k1
- 'k2': k2
- 'k3': k3
Calibration → Rectification
Classification → Gaussian Mixture
Models
-
select_feature_set_gmm, select_feature_set_knn, select_feature_set_mlp, and select_feature_set_svm crashed if the input
parameter SelectionMethod was a number instead of a string. Moreover,
select_feature_set_mlp crashed if the generic
parameter 'num_hidden' was set to a negative float value. These problems
have been fixed. Now, the operators return an error if invalid input
parameters are passed.
-
select_feature_set_gmm, select_feature_set_knn, select_feature_set_mlp, and select_feature_set_svm returned incorrect error
codes for several cases of invalid input parameters. In most cases the
error referred to the wrong control parameter. In some cases the error
referred to the type of a control parameter instead of its value. These
problems have been fixed.
The following list shows how the error codes have been changed for
the individual operators and for the different cases of incorrect
parameters. The left column describes the type of invalid input
followed by the old error code (middle) and the new error code
(right):
select_feature_set_gmm |
number of values of control parameter 1 is unequal 1 |
1402 |
1401 |
type of control parameter 1 is real or string |
1202 |
1201 |
type of GenParamName is integer or real |
1303 |
1203 |
select_feature_set_knn |
number of values of control parameter 1 is unequal 1 |
1402 |
1401 |
type of control parameter 1 is real or string |
1202 |
1201 |
type of GenParamName is integer or real |
1303 |
1203 |
select_feature_set_mlp |
number of values of control parameter 1 is unequal 1 |
1402 |
1401 |
type of control parameter 1 is real or string |
1202 |
1201 |
number of values of control parameter 4 is unequal number
of values of control parameter 3 |
1407 |
1404 |
type of GenParamName is integer or real |
1204 |
1203 |
GenParamName is a string unequal 'num_hidden' |
1304 |
1303 |
GenParamValue is string |
1207 |
1204 |
select_feature_set_svm |
number of values of control parameter 1 is unequal 1 |
1402 |
1401 |
type of control parameter 1 is real or string |
1202 |
1201 |
type of GenParamName is integer or real |
1204 |
1203 |
GenParamName = 'nu' or 'gamma' and GenParamValue is a
string unequal 'auto' |
1305 |
1304 |
GenParamName = 'mode' and GenParamValue is a string
unequal 'one-versus-one' and 'one-versus-all' |
1305 |
1304 |
GenParamName = 'mode' and GenParamValue is a number |
1205 |
1204 |
GenParamName is a string unequal 'nu', 'gamma', and 'mode' |
1304 |
1303 |
Classification → K-Nearest Neighbors
Classification → Support Vector
Machines
-
classify_class_svm, classify_class_mlp, and classify_class_gmm returned a HALCON error like
error 1301 ("Wrong value of control parameter: 1") or a memory error in very
rare cases when running in multiple threads in parallel with select_feature_set_svm, select_feature_set_mlp, or select_feature_set_gmm, respectively. This problem has been
fixed.
-
create_class_svm accepted more than one
class, i.e., NumClasses > 1, even if the parameter Mode was set to
'novelty-detection' and therefore, only one class is considered in
training. Furthermore, add_sample_class_svm
accepted class numbers higher than the number of classes specified during
its creation with create_class_svm if it was used
for novelty detection. These problems have been fixed. Now, create_class_svm and add_sample_class_svm throw errors in the above cases.
File → Images
-
write_image generated a corrupt file when
attempting to write an image of unsupported type for the jp2 image format.
This problem has been fixed.
File → Misc
-
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. Note that this problem
has already been fixed in HALCON 11.0.2.1.
File → Region
-
read_region sometimes returned the incorrect
error 6001 ("Not enough memory available") if the input file did not
contain a region. This problem has been fixed. Now, the error 5238 ("Wrong
file format") is returned in this case.
File → Tuple
-
read_tuple had a memory leak if a tuple with
more than one element was read. This problem has been fixed.
Filters → Color
-
trans_to_rgb and trans_from_rgb were using a slightly wrong
lower limit for v in CIELuv <--> RGB transformations, i.e., when
calling the operators with 'cieluv'. This problem has been fixed. The
minimum value for v has changed from -134.0131 to -134.1008. In some cases
this can cause a slightly different mapping from RGB to CIELuv.
Filters → FFT
-
gen_mean_filter crashed if the parameter
MaskShape was set to 'rectangle' and the parameter Mode was set to 'rft'.
This problem has been fixed.
Filters → Geometric Transformations
-
rotate_image returned incorrect results when
executed on a compute device for angles of 90 and 270 degrees on non-square
images. This problem has been fixed.
Filters → Lines
-
lines_color sometimes crashed when using
large values for the parameter Sigma, which defines the amount of
smoothing. This problem has been fixed.
Filters → Misc
-
convol_image sometimes returned a small
number of wrong pixels for 'byte' images when the SSE2 acceleration was
enabled. This problem has been fixed.
-
convol_image returned wrong pixels for 'int2'
images when the SSE41 acceleration was enabled. This problem has been
fixed.
Filters → Smoothing
-
median_rect sometimes crashed for filter
masks of size 3x5 and 5x3 when executed on a compute device. This problem
has been fixed.
Graphics → Drawing
-
draw_point crashed in very rare cases under
Windows when it was cancelled with the right mouse button. This problem has
been fixed.
Graphics → LUT
-
get_lut crashes with user defined LUTs. This
problem has been fixed.
Graphics → Parameters
-
Calling set_part or dev_set_part and then disp_obj or dev_display may have led to a black rectangle below
the image data if the height in set_part was greater
than the height of the image and set_part started at
the position 0,0. This problem occured only on Linux and Mac OS X Systems. This
problem has been fixed.
Graphics → Output
-
disp_object_model_3d and render_object_model_3d displayed some artefacts
if the diameter of the 3D object model was zero and 'disp_pose' was set to
'true'. This problem has been fixed.
-
disp_object_model_3d returned the
incorrect error code 1301 ("Wrong value of control parameter 1") if
an invalid 3D object model handle was passed to the operator. Since
the 3D object model is the second control parameter, error code 1302
should have been returned instead. This problem has been
fixed.
-
When drawing a contour XLD into a buffer window of type 'pixmap', line
segments not fully within the visible area where discarded entirely instead
of clipping them as it is done for other window types. This problem has
been fixed.
-
The window handling on Mac OS X systems had a problem that caused a crash
in HDevelop when maximizing the 'Visualize Object Model 3D' inspection
window. This problem has been fixed.
Graphics → Parameters
-
Displaying a big image in the Graphics Window of HDevelop and zooming in
and out of this image may have led to a crash. This only occurred if the
image was very big, i.e., it had close to 32k pixels, at least in one
dimension, and if zooming out led to a display bigger than 32k. This could
also occur in other HALCON graphic windows, when such large images are
displayed and set_part is called to zoom out. This
problem has been fixed.
Graphics → Text
-
read_string crashed when it was called with
an empty tuple as input string. This problem has been fixed.
-
set_font had a memory leak on Mac OS X
systems when returning an error. This problem has been fixed.
Graphics → Window
-
copy_rectangle generated certain
events that were not processed by the HALCON window and that were
therefore accumulated in the event queue. This problem has been
fixed.
-
set_window_type with WindowType set to
'pixmap' restricted open_window to
open only 50 windows. This restriction has been removed.
-
The background of a graphics windows may have been gray after opening on
Mac OS X systems. This problem has been fixed.
Identification → Bar Code
-
find_bar_code may have returned incorrect
results for 2/5 Industrial codes. In this case, the result contained an
additional '1' at the end of the decoded string. This problem has been
fixed.
-
find_bar_code returned varying results
in very rare cases if SSE2 operations and at the same time automatic
parallelization were used to accelerate find_bar_code. This problem has been fixed.
-
find_bar_code sometimes returned the
error 3510 ("Exceeding the maximum number of run lengths while
automatical expansion") if GS1 Stacked codes were found. This
problem has been fixed. Now, in such cases, the operator produces a
successful decode without throwing an error.
-
query_bar_code_params may have returned some
undefined values and the parameters 'quiet_zone' and 'slanted' were
missing. This problem has been fixed.
-
The bar code reader failed to decode some bar code types when the number of
scanlines was explicitly set to the default value with set_bar_code_param. This problem has been
fixed.
-
The bar code print quality inspection had a memory leak. This problem has
been fixed. Note that this problem has already been fixed in HALCON
11.0.2.1.
-
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. Note that this problem has
already been fixed in HALCON 11.0.2.1.
-
The bar code reader could return false reads for Codabar codes even if the
character pattern was recognizable not valid. This problem has been fixed.
Note that misreads are still possible if distorted elements again form
valid character patterns, especially if a check character is not used.
Identification → Data Code
-
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. Note
that this problem has already been fixed in HALCON 11.0.2.1.
-
find_data_code_2d had a memory leak when
reading ECC 200 codes with a timeout beeing set. This problem has been
fixed.
-
find_data_code_2d crashed with signal 11 for
ECC 200 symbols when the image domain had only 8 or 9 rows and
'finder_pattern_tolerance' was set to 'high'. This problem has been
fixed.
-
find_data_code_2d in rare cases detected
Micro QR codes multiple times. This problem has been fixed.
-
find_data_code_2d in rare cases detected more
Micro QR codes than specified with the parameter 'stop_after_result_num'.
This problem has been fixed.
-
find_data_code_2d crashed sometimes when
running applications where several threads, each with its own QR code
reader, attempted to decode QR codes simultaneously. This problem has been
fixed.
-
get_data_code_2d_objects sometimes crashed
when the parameter ObjectName was set to 'process_image' and the width of
the image was less than its height. This problem has been fixed.
-
get_data_code_2d_results for ECC 200 may have
returned wrong print quality grades for Fixed Pattern Damage when image
height was greater than image width. This problem has been fixed.
-
The QR code reader failed to decode some mirrored QR codes. This problem
only occurs if 'mirrored' has been set to 'yes' using set_data_code_2d_param. 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 data code print quality inspection may have returned incorrect grades
for unused error correction. This problem has been fixed. Note that this
problem has already been fixed in HALCON 11.0.2.1.
-
The QR code reader sometimes returned some codes with corrupted messages
(in some cases empty strings). This problem has been fixed.
-
The PDF417 reader in very rare cases returned incorrect results, when the
image domain was extremely reduced. This problem has been fixed.
-
The ISO/IEC 15415 grades for ECC 200 codes were slightly inaccurate. In
particular, very light or very dark patterns near the quiet zone may have
influenced these grades. This problem has been fixed.
-
The data code reader's error correction failed in rare cases where a
correction of the coded data should be possible. As a consequence, the
grade for Unused Error Correction may have been 0 in cases where the code
could be successfully decoded. This problem has been fixed.
-
The data code print quality inspection returned incorrect values for the
unused error correction for ECC 200 and QR codes if the polarity was set to
'light_on_dark'. This problem has been fixed. Note that this problem
occurred only in HALCON 11.0.2.1.
-
The data code print quality inspection returned incorrect values for the
unused error correction for ECC 200 codes if 'finder_pattern_tolerance' was
set to 'high' and the code was mirrored. In addition, if the code appeared
light on dark and the polarity was set to 'any', the 'grid nonuniformity'
was also incorrect. These problems have been fixed.
Image → Acquisition
-
set_framegrabber_param crashed if the value
for the parameter Param was not a string value. This problem has been
fixed. Now an error is returned in this case.
Image → Features
-
estimate_noise may have crashed for
artificial images. This problem has been fixed. Now, the error 3175
("Number of suitable pixels too small to reliably estimate the
noise") is returned in these cases.
-
gray_histo returned histograms where the
width of the first and last bin were not equal. This problem has been
fixed.
-
select_gray returned wrong results for uint2
or int2 images if the parameter Features was set to 'min'. This problem has
been fixed.
Legacy → XLD
Matching → Deformable
-
create_planar_calib_deformable_model, create_planar_calib_deformable_model_xld, create_planar_uncalib_deformable_model, create_planar_uncalib_deformable_model_xld, create_local_deformable_model, and create_local_deformable_model_xld sometimes crashed if the
model contained too few points. This problem has been fixed. Now, in these
cases the error 8510 ("Number of shape model points too small") is
returned.
-
create_planar_uncalib_deformable_model sometimes
determined the wrong number of levels, e.g., 5 instead of 7. As a
consequence, running create_planar_uncalib_deformable_model on different
architectures reported differing level numbers. This problem has been
fixed.
-
find_local_deformable_model, find_planar_calib_deformable_model, and find_planar_uncalib_deformable_model 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. Note that because of this
fix, the resulting Score may be greater than in previous versions.
Therefore, it might be necessary to adapt the parameter MinScore
accordingly. The HDevelop example program
- hdevelop/Applications/Traffic-Monitoring/detect_road_signs.hdev
has been adapted to take this change into account.
-
find_planar_uncalib_deformable_model, find_planar_calib_deformable_model, and find_local_deformable_model in rare cases returned
different results when called multiple times. For find_planar_uncalib_deformable_model and find_planar_calib_deformable_model this problem only occurred
if the generic parameter 'subpixel' was set to 'least_squares_high' or to (the
default value) 'least_squares_very_high'. For find_local_deformable_model the error occurred independently of
the value of the generic parameter 'subpixel'. This problem has been
fixed.
Matching → Shape-Based
-
create_scaled_shape_model, create_aniso_shape_model, create_scaled_shape_model_xld, create_aniso_shape_model_xld, create_local_deformable_model, create_local_deformable_model_xld, create_planar_calib_deformable_model, create_planar_calib_deformable_model_xld, create_planar_uncalib_deformable_model, and create_planar_uncalib_deformable_model_xld
sometimes computed a wrong number of pyramid levels if NumLevels was set
to 'auto' or it returned the error 8510 ("Number of shape model points
too small") if ScaleMin exceeded 1.0. Note that for anisotropic
scalings, the problem might have occurred if the minimum of ScaleRMin
and ScaleCMin exceeded 1.0. This problem has been fixed.
-
find_shape_model, find_shape_models, find_scaled_shape_model, find_scaled_shape_models, find_aniso_shape_model, find_aniso_shape_models, and find_component_model crashed in rare cases when the
search image had a reduced domain. This problem has been fixed.
-
find_shape_model returned the error 3510
("Exceeding the maximum number of run lengths while automatical expansion")
in rare cases. This problem has been fixed.
-
find_shape_models sometimes crashed for
models with a different number of pyramid levels if the temporary memory
cache was disabled. Note that the temporary memory cache is enabled per
default. This problem has been fixed.
Morphology → Gray Values
OCR → Segmentation
-
find_text sometimes failed to segment some
solid symbols, i.e., in cases where 'is_dotprint' has not been set to
'true' with set_text_model_param. This
problem has been fixed.
-
find_text did not segment separator
characters at the beginning or at the end of a text line. This problem has
been fixed.
OCR → Training Files
Regions → Access
Regions → Creation
-
gen_checker_region sometimes crashed for an
output region with too many runs. This problem has been fixed.
Regions → Features
-
inner_rectangle1 returned incorrect results
for empty input regions. This problem has been fixed.
Regions → Geometric Transformations
-
affine_trans_region may has returned
the error 6001 ("Not enough memory available") for empty input
regions that were created with the operator sequence reduce_domain and get_domain if reduce_domain was carried out with a non-empty region that
lay completely outside of the current image domain and thus producing an
empty image domain. This problem has been fixed.
Regions → Transformations
-
hamming_change_region may have crashed if the
region had negativ row or column coordinates and the system parameter
'clip_region' was set to 'false'. This problem has been fixed.
Segmentation → Threshold
-
check_difference returned the error 3513
("Internal error: number of chords too big for num_max") for large images.
This problem has been fixed.
-
dyn_threshold and var_threshold returned the error 4051 ("Image
data management: object has been deleted already") if the output region
would have been empty and the system parameter 'store_empty_region' was set
to 'false'. This problem has been fixed. Now, the empty output region is
ignored as described for the system parameter 'store_empty_region' (see the
reference manual entry of set_system).
-
threshold_sub_pix sometimes returned the
error 3501 ("Number of chords too big. Increase 'current_runlength_number'
using set_system!"). This problem has been fixed.
System → Parallelization
-
optimize_aop crashed when passing a
particular operator name solely with an incompatible, unsupported iconic
type. This problem has been fixed.
System → Serial
System → Sockets
-
get_socket_param used uninitialized memory
for the remote part of the parameter 'address_info' and therefore, it
returned sometimes a wrong remote address and port. This problem has been
fixed.
-
send_tuple could send data in an incompatible
format to HALCON 10 and earlier receivers. This problem has been
fixed.
Tools → Geometry
-
distance_cc_min sometimes returned invalid
values when used in HALCON XL with the parameter Mode set to
'point_to_point' or 'fast_point_to_segment'. This problem has been
fixed.
-
intersection_contours_xld in rare cases
returned too many intersections. This problem has been fixed.
-
intersection_contours_xld incorrectly
reported an overlap if adjacent line segments had the same slope.
This problem has been fixed.
Tools → Hough
-
hough_line_trans crashed in a specific
case if the input region contained negative coordinates. This
problem has been fixed. Now, an appropriate error is returned in
this case.
-
hough_lines had a memory leak if no lines
were found. This problem has been fixed.
Tuple → Conversion
-
tuple_is_number and tuple_number incorrectly parsed an empty string
as the integer 0. This problem has been fixed since HALCON 11.0.2.
-
tuple_number did not handle invalid octal
numbers properly. For example, the call tuple_number('028') returned the floating point number
28.0 instead of the string '028' as described in the documentation. This
problem has been fixed.
Tuple → Creation
-
tuple_gen_sequence returned empty tuples for
very large integer ranges, in particular when the end value was greater
than the maximum value for a long integer. This problem has been
fixed.
-
tuple_gen_sequence returned an empty tuple if
the term (End-Start)*Step was larger than the maximum integer value on the
used system, i.e. 2^31-1 on 32 bit systems and 2^63-1 on 64 bit systems.
This problem has been fixed.
Tuple → Selection
-
tuple_select_range returned an error if it
was used to select an empty subregion from an empty tuple. Additionally,
the operator crashed in rare cases if the tuple passed to Leftindex or
Rightindex did not have the length 1. These problems have been fixed. The
operator now returns an empty tuple instead of an error.
XLD → Features
-
fit_ellipse_contour_xld hung in rare cases.
This problem has been fixed.
-
fit_ellipse_contour_xld hung if an ellipse
should be fitted to a contour that contains only identical points. This
problem has been fixed. Furthermore, some minor errors have been corrected
in the reference manual entry of fit_ellipse_contour_xld.
-
smallest_rectangle2_xld sometimes returned a
wrong rectangle, which was not the smallest one. This problem has been
fixed.
-
test_self_intersection_xld in rare
cases did not find a self-intersection. This problem has been fixed.
test_self_intersection now uses the same algorithm as intersection_contours_xld. Note that, in
contrast to previous versions, test_self_intersection now also returns
1 (e.g., true) when the contours are only touching.
XLD → Transformations
-
crop_contours_xld did not return the correct
intersection point for contours that enter the cropping rectangle exactly
horizontally. This problem has been fixed.
-
crop_contours_xld sometimes did not crop the
contour in the expected place when contour points lay directly on the
border of the cropping rectangle. This problem has been fixed. The problem
was already reported as fixed for HALCON 11.0.1, but that fix turned out
not to cover all possible cases.
-
crop_contours_xld sometimes returned
incorrect results when contour points lay directly on the border of the
cropping rectangle. Moreover, in some cases the output contour contained
duplicate points. Furthermore, if CloseContours was set to 'true' the
contour was closed incorrectly in rare cases. These problems have been
fixed.
-
smooth_contours_xld returned unexpected
results near the first and last point of a closed contour. This problem has
been fixed.
Error Messages
-
The German error message for error 3117 ("Bilder mit unterschiedlichem
Bildformat") was misleading. The error message was changed into "Bilder mit
unterschiedlicher Bildgröße", which better corresponds to the
meaning of the English error message ("Images with different image
size").
-
In case of an error, HALCON's grid rectification operators returned
H_MSG_FAIL. Instead they now return the new and more specific errors 8390
("The input points could not be arranged in a regular grid") and 8391
("Error while creating the output map"), and 8392 ("Auto rotation
failed").
Extension Package
-
HALCON crashed while loading an extension package that contains more than
74 operators. This problem has been fixed. Note that this problem has
already been fixed in HALCON 11.0.2.1.
-
For the example extension package halconuser, the files
halconusercpp10xl.dll and libhalconusercpp10xl.so were not generated when
using makefile.win or makefile, respectively. This problem has been
fixed.
-
The extension package halconuser threw warnings concerning unknown
predecessors and successors during compilation. This problem has
been fixed.
Parallelization
-
Copying the same XLD object in multiple threads was not thread-safe. This
problem has been fixed.
-
The speed performance of HALCON might have decreased when HALCON operators
with massive data allocation run in multiple threads and if global or
temporary HALCON memory caches were switched off on Windows XP or Windows
2003. This problem has been fixed.
-
aop_optimize generated corrupt information for an operator in very rare
cases. This corrupt information might have caused a crash when running the
operator with automatic parallelization. This problem has been fixed.
General
-
The HALCON library exported libqhull symbols and, therefore, caused linker
conflicts when linking user code to a separate libqhull version. This
problem has been fixed.
Procedures
Bug Fixes
-
calculate_features sometimes returned feature vectors that were too short
when computing gray value features for a region containing unconnected
subregions. Furthermore, calculate_features entered an infinite loop when
computing gray value features for an empty region. These problems have been
fixed. Note that in rare cases the calculation of the features
'gray_vert_proj' and 'gray_hor_proj' may yield slightly different results
compared to previous versions.
-
disp_3d_coord_system did not display a coordinate system for telecentric
cameras where the z-component of the pose is 0. This problem has been
fixed.
-
list_image_files did not accept an ImageDirectory array with more than 2
elements. This problem has been fixed.
-
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'". Note that this problem has
already been fixed in HALCON 11.0.2.1.
-
plot_tuple displayed ticks and grid lines at unexpected positions,
e.g., if the start position for tick and/or grid were not divisible
by the tick or grid distance, the ticks were displayed at, e.g.,
-3.14, -2.14, -1.14,... Now ticks and grid lines are only displayed
as multiples of the specified value. Furthermore, if a tuple Y was
plotted without X values (XValues = []), it was plotted against
1,2,3,... Now, it is plotted against the index values, i.e.,
0,1,2,...
-
visualize_object_model_3d provides the possibility to use the current
window content as background for the visualization of the 3D object model.
This possibility is also provided by disp_object_model_3d. In contrast to disp_object_model_3d, where this is controlled with the
parameter 'disp_background', in visualize_object_model_3d, the respective
parameter was 'use_background'. To make the parameters more consistent, the
respective parameter of visualize_object_model_3d has been changed to
'disp_background'. For compatibility reasons, the old parameter
'use_background' is supported, as well.
-
visualize_object_model_3d continued before the continue button has been
released. This may have led to the problem that subsequent calls of
visualize_object_model_3d were skipped if the button was pressed
continuously. Furthermore, the mechanism to customize the label of the
continue button did not work. These problems have been fixed. Now, the
program is continued not until the continue button is released. Note that
the old behavior can be obtained by setting the variable
WaitForButtonRelease to 'false' in the body of the procedure
visualize_object_model_3d. Furthermore, the value of the global variable
gTerminationButtonLabel is now used as label of the continue button, which
allows to configure this label.
-
visualize_object_model_3d attempted to access an uninitialized variable if
multiple 3D object models were visualized, at least one of them had been
deselected by right-clicking it, and OpenGL was not available or had been
deactivated by setting the generic parameter 'opengl' to 'false'. This
problem has been fixed.
HALCON/C
Bug Fixes
-
HALCON/C had a problem that led to a memory leak in HDevelop's throw
operator if this operator was called with a variable that contained
a string or a tuple of strings. This problem has been fixed.
HALCON/C++
Speed-Up
-
Now, the creation, deletion, and selection of iconic objects in the
HALCON/C++ interface scales better with the number of threads. This
improvement comes into effect when using very long iconic object arrays in
multiple threads concurrently.
Bug Fixes
-
HALCON/C++ had a memory leak when using the class HString as output
parameter. This problem has been fixed.
HALCON/C++ (legacy)
Speed-Up
-
Generation and deletion of HALCON objects did not scale fairly with the
HALCON/C++ (legacy) interface in a multiple threaded environment. The
problem occurred in particular when generating and deleting very long
object arrays in multiple threads concurrently. This problem has been
fixed.
HALCON/.NET
Bug Fixes
-
If HWindowControlWPF ran into an error during initialization, it
looked broken, with a gray rectangle covering or partially
overlapping the window. This problem has been fixed.
-
In HALCON/.NET, the serialization of HTuple did not work. The
serialize attribute in HALCON/.NET was not supported by HTuple.
Also the internal implementation was incorrect and has been
fixed.
HALCON/COM
Bug Fixes
-
There was a critical problem regarding internal memory management, which
could potentially lead to a crash in every application that used
HALCON/COM. This problem has been fixed.
-
In some cases, tuples returned by operators were not empty although they
should have been. This problem has been fixed.
HDevEngine
Bug Fixes
-
In HDevEngine/.NET, the method GetGlobalCtrlVarTuple() of the class
HDevEngine returned erroneous results for variables with multiple values.
This problem has been fixed. Note that this problem has already been fixed
in HALCON 11.0.2.1.
-
In HDevEngine/.NET, the following methods erroneously returned an error
when accessing uninitialized iconic variables:
- class HDevEngine: GetGlobalIconicVarImage/Region/Xld()
- class HDevProcedureCall: GetOutputIconicParamImage/Region/Xld()
- class HDevProgramCall: GetIconicVarImage/Region/Xld()
This problem has been fixed. Now, these methods return an empty object of
the respective type.
Language Interface Example Programs
-
A Visual Studio 2010 project has been added to the .NET Interoperate
example.
-
An XL version has been added in the C and C++ Xcode example projects.
-
The C example program example7 did not show any change of the LUT style
although it states to demonstrate different LUT styles. This problem has
been fixed.
hbench
Bug Fixes
-
hbench might have crashed or exited with error 2400 when
running with the options '-operator -parallel'. This problem
has been fixed.
-
hbench -memory returned unreliable results on fast 32 bit platforms.
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.
Misc
-
The source code of the image acquisition interface template has been
reviewed and enhanced to reflect the currently best practices regarding the
use of the Image Acquisition Assistant.
New Image
Acquisition Interfaces
-
HALCON has been extended with a generic image acquisition interface for
USB3 Vision devices. It supports the operating systems Windows, Linux, and
Mac OS X.
-
HALCON has been extended with the Ensenso-NxLib interface, which supports
Ensenso stereo 3D cameras. It supports the operating system Windows.
Modified Image
Acquisition Interfaces
- The following HALCON image acquisition interfaces have been
revised since HALCON 11.0.2:
-
The new revision of the 1394IIDC
interface provides a new parameter to set specific camera register
values that require the camera to be stopped before as well as a new
parameter to allow different waiting times for the parameter
'register_value_stopped'.
-
The new revision of the 1394IIDC-2
interface includes several extensions and bugfixes, in particular
regarding buffer allocation, handling of multiple cameras, parametrization,
and the pixel format 'Format_7'.
-
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 reading an avi file as
well as a problem when grabbing files with multiple channels and different
image formats.
-
The new revision of the GenICamTL
interface provides bug fixes regarding side-effects when using
multiple GenApi-based image acquisition interfaces.
-
The new revision of the GigEVision
interface includes minor improvements and bug fixes regarding the use
of callbacks, device-specifc events, and the 'Generic' parameter as well
as bug fixes regarding the 'MultiFrame' acquisition mode and side-effects
when using multiple GenApi-based image acquisition interfaces.
-
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 MILLite
interface provides a new parameter to support also the exposure
trigger signal. Furthermore, the new interface revision fixes a bug in case
of an unsupported parameter setting during open_framegrabber.
-
The new revision of the MultiCam
interface includes bug fixes regarding the use of multiple frame
grabber boards.
-
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 PixeLINK
interface is now based on the new PixeLINK SDK Release v8.7.
Furthermore, the new interface revision is also available for 64-bit
Windows and supports the PL-C USB camera series.
-
The new revision of the pylon
interface has been adapted to the latest Basler pylon 4.0 camera
software suite and, thus, supports also the new Basler USB3 Vision cameras.
Furthermore, the new interface revision includes bugfixes regarding
opening a camera with its currently set image resolution, regarding the
parameters 'available_param_names' and 'available_param_descriptions',
regarding a grab timeout in case of using software trigger and switching
between acquisition modes 'Continuous' and 'SingleFrame', as well as
regarding the internal memory allocation during the initialization of a
callback function. Furthermore, the new parameter category 'HALCON
interface' allows an easy access to all HALCON-specific parameters and
the documentation has been slightly extended.
-
The new revision of the SaperaLT
interface supports now the usage of the general device I/Os via
various new parameters and callback types.
-
The new revision of the Sentech
interface allows now to open cameras in any particular order.
Furthermore, it includes several bug fixes regarding the operators
info_framegrabber, open_framegrabber, and close_framegrabber.
-
The new revision of the ShapeDrive
interface provides an updated documentation regarding the parameters
'CameraType', 'Device', and 'Generic'.
-
The new revision of the SICK-3DCamera
interface has been adapted to the new SICK icon API 4.4 with support
of static port allocation. Furthermore, the new interface revision allows
the use of Ranger C cameras under 64-bit Windows and provides a new
parameter to solve an internal camera problem in case of Ethernet devices.
In addition, it provides an updated documentation regarding the usage of
the LUT file in combination with the calibration filter as well as updated
HDevelop example programs.
-
The new revision of the SiliconSoftware
interface provides a bug fix regarding the parameter 'grab_timeout'.
-
The new revision of the TWAIN
interface provides now also 'Automatic Document Feeder' support by
several new parameters and a new HDevelop example
program. Furthermore, the new interface revision has been revised and
provides several fixes and improvements.
-
The new revision of the uEye
interface fixes a bug regarding asynchronous grabbing to avoid a
possible dead-lock situation as well as the list of supported 'focus'
parameter values in the interface documentation. It 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 the two new parameters 'image_format' and
'extended_pixelclock' and parameters to configure the HDR kneepoints, the
sequence ROI mode, and the multi roi mode as well as extensions regarding
the vertical ROI merge mode. Finally, it supports also the RGB15 color
format (5 bits per channel).
-
The new revision of the Video4Linux2
interface solves problems regarding an endless loop during
open_framegrabber and the correct calculation of image parameters.
- 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 program
- hdevelop/Image/Acquisition/twain_automatic_document_feeder.hdev
shows how to use the new functionality of the TWAIN
interface to support automatic document feeders.
-
The new HDevelop example program
- hdevelop/Image/Acquisition/gigevision_flir_ax5.hdev
shows how to use the GigEVision interface to acquire thermal images with
the FLIR AX5 GigE sensor.
-
The new HDevelop example programs
- hdevelop/Image/Acquisition/ensenso-nxlib_2cameras.hdev
- hdevelop/Image/Acquisition/ensenso-nxlib_objectmodel3d.hdev
- hdevelop/Image/Acquisition/ensenso-nxlib_parameters.hdev
- hdevelop/Image/Acquisition/ensenso-nxlib_simple.hdev
- hdevelop/Image/Acquisition/ensenso-nxlib_surface_based_3d_matching.hdev
show how to use the Ensenso-NxLib interface.
-
The new HDevelop example programs
- hdevelop/Image/Acquisition/usb3vision_install_driver.hdev
- hdevelop/Image/Acquisition/usb3vision_parameters.hdev
- hdevelop/Image/Acquisition/usb3vision_simple.hdev
show how to use the USB3Vision interface. In particular, they show how to
install a device driver and how to query for the USB3Vision interface.
Documentation
Solution Guide I (Basics)
-
The basic concept of pixel-precise edge extraction was too extensive in the
Solution Guide I (Basics). This problem has been fixed. Now, the steps "Use
Region of Interest" and "Process Edges" are described in the extended
concept only.
-
The k-NN classifier was not described in chapter 12 "Classification"
of the Solution Guide I (Basics). This problem has been fixed. In
addition, chapter 17 "OCR" of the Solution Guide I (Basics) now
contains a reference to the description of the k-NN classifier in the
Solution Guide "Classification".
Solution Guide II+III (Advanced)
-
In the Solution Guide on 3D Vision, it was incorrectly recommended to
exclude the rotation around the z axis from the calibration of line scan
cameras in certain cases. This problem has been fixed. Now, the
recommendation is to exclude the rotation around the x axis, i.e., 'alpha'
from the calibration.
-
The Solution Guide on 3D Vision did not mention that surface-based matching
relies on consistent normal vectors. Especially, it did not mention that
the orientation of the normal vectors that are derived by create_surface_model is ambiguous and how to cope with
this. This problem has been fixed.
-
The documentation of the calibration error up to which a calibration
can be considered to be successful has been corrected in the
Solution Guide on 3D Vision. Now, a value of up to 0.1 pixel is
stated. Furthermore, the documentation in the Solution Guide is now
clearer that generally the disparity cannot be determined more
accurately than the calibration error.
Reference Manual
-
In the HALCON Operator Reference, the listed values in parameter
descriptions (see "List of values") were sometimes sorted
arbitrarily. These value lists are now sorted alphabetically.
-
Input or output parameters expecting a single pose, hom_mat2d,
hom_mat3d, or quaternion were documented as arrays (e.g.,
pose-array) in the reference manual entry for the corresponding
operator. This problem has been fixed.
-
Some operators contained self-references in one of the suggestion slots
'Alternatives', 'See also', 'Predecessor', or 'Successor'. These
self-references have been eliminated. In particular, the following
operators were affected:
-
The reference manual entries of binocular_distance and binocular_distance_mg have been revised. Now the
description of both operators is clearer. In addition further
references to other operators have been added to the documentation of
binocular_distance_mg.
-
The reference manual entry of calibrate_cameras contained some minor errors and
unclear passages. This problem has been fixed. The documentation has been
revised accordingly.
-
The reference manual entry of calibrate_cameras was incorrect for telecentric
stereo setups. It stated that the relative pose of the second camera
can be determined unambiguously although this is not the case. This
problem has been fixed.
-
The reference manual entry of calibrate_hand_eye referred to set_calib_data with a wrong parameter value. It
erroneously referred to set_calib_data with the
value 'tool_pose' for the parameter ItemType. This value is invalid. The
correct value for this parameter is 'tool'. The reference manual entry of
calibrate_hand_eye has been adapted
accordingly.
-
The German reference manual entry of calibrate_hand_eye used a different nomenclature for
specific poses than the corresponding English version. In particular,
instead of 'obj_in_cam_pose', 'tool_in_cam_pose', 'tool_in_base_pose', and
'obj_in_cam_pose', the poses were called ObjInCameraPose, ToolInCameraPose,
ToolInBasePose, and ObjInBasePose. This problem has been fixed.
-
The reference manual entry of concat_obj did
not clearly describe that the resulting tuple of iconic objects contains
references to the images, regions, and XLDs of the iconic input tuples.
Furthermore, the reference manual entry of set_grayval did not clearly describe that the input
image will be modified directly. These problems have been fixed.
-
In the German reference manual entry of create_calib_data, the description of the generic
sensor case of the hand-eye calibration was missing (i.e., the case
NumCameras=0 and NumCalibObjects=0). This problem has been fixed.
-
The German reference manual entry of disp_object_model_3d incorrectly mentioned
'point_coord_*' as possible values for the generic parameter 'intensity'.
The correct values that can be used are 'coord_x', 'coord_y', and
'coord_z'. The reference manual entry has been adapted accordingly.
-
The HTML reference manual entries of
were incomplete. They contained less information than the respective PDF
reference manual entries. This problem has been fixed.
-
The reference manual entries of find_calib_descriptor_model and find_uncalib_descriptor_model did not describe how
the image domain of the search image is taken into account. This problem has
been fixed. Now, the reference manual entries describe that the domain
restricts the extraction of feature points but not the position of the
reference point of the model.
-
The reference manual entries of find_data_code_2d and set_data_code_2d_param did not mention that a possibly
set timeout is ignored if find_data_code_2d runs in
training mode. This problem has been fixed.
-
The reference manual entry of find_surface_model described the parameter
'max_overlap_dist_rel' imprecisely. This problem has been fixed.
-
The reference manual entry of gen_image1_rect incorrectly stated that the height of
the output image is identical to the height of the input image. This
problem has been fixed.
-
The reference manual entry of get_bar_code_result has been unclear. Especially, the
description of the quality grades of the COMPOSITE RAP elements for
composite bar codes was difficult to understand. Furthermore, there have
been differences between the English and the German version of the
documentation. These problems have been fixed.
-
The reference manual entry of get_metrology_object_param erroneously listed the
parameter 'measure_distance', which is not available for this operator.
This problem has been fixed.
-
The reference manual entry of moments_region_2nd has been revised. Now the
description of the parameters is clearer. In addition, a reference entry in
the section 'References' has been added to the documentation.
-
The reference manual entry of new_extern_window was clarified regarding the fact that
operators that allow the user to define graphical primitives through mouse
interactions, like for example draw_rectangle1, do not work on external
windows.
-
The reference manual entry of read_sequence suggested wrong types for
the parameter PixelType and Pad. Instead of long, Hlong is listed in
the value list for these two parameters. This problem has been
fixed.
-
The reference manual entry of reconstruct_points_stereo was unclear with respect to
the usage of covariance matrices passed in the parameter CovIP. This
problem has been fixed. Now, the description is more precise.
-
The reference manual entry of select_feature_set_gmm did not explain the
meaning of the generic parameter 'class_priors'. This problem has
been fixed.
-
In the reference manual entry of set_sheet_of_light_param, get_sheet_of_light_param, and apply_sheet_of_light_calibration, the description of
camera_pose and lightplane_pose was incorrect. This problem has been
fixed.
-
The reference manual entry of set_system
regarding 'clock_mode' and 'timer_mode' has been clarified. Now, the
section contains information about which time measurement methods are used.
Also, some advice is given, which setting should be used in certain
situations.
-
In the reference manual entry of set_text_model_param, the parameter 'persistence' was
spelled incorrectly: 'persistance' was used rather than 'persistence'. This
problem has been fixed. Note that for compatibility reasons, both kinds of
spelling are accepted by the operator text_model_param.
-
The HDevelop example code in the reference manual entry of texture_laws unnecessarily attempted to write
into a file that was not available. This problem has been fixed. Note that
also the c example code had this problem. Because it did not provide any
further information, it has been removed from the reference manual entry of
texture_laws.
-
The reference manual entries of trans_from_rgb and trans_to_rgb had some minor issues. Some value ranges
were shown as closed intervals instead of open intervals. The transformation
from and to 'hls', 'hsv', and 'ihs' was written in Pseudocode instead of in
HDevelop syntax. Furthermore, the formulas for 'cieluv' and 'cielchuv'
contained typos. These problems have been fixed.
-
The reference manual entries of
have been extended by the information that the angles are represented in
radians.
-
The reference manual entry of tuple_string
is now more descriptive. Especially, it contains examples for the
conversion of numbers and for the modification of strings.
-
The reference manual entry of write_image
stated that for ima images only the first image channel is stored.
Actually, the operator can only store one channel images, i.e., the first
channel is not extracted automatically. The documentation has been
adapted.
Supported Operating
Systems
Windows
HALCON 11.0.3 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.3 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.3 has been compiled for Mac OS X in the following
platform versions:
- x64-macosx platform version for Mac
OS X 10.7, 10.8, and 10.9.
Miscellaneous
Installation
-
When installing the USB dongle driver, the HALCON installer will now
install additional DLLs to the Windows system directory. These are required
for proper operation of FlexNet Publisher 11.12 or higher.
On 32-bit Windows:
haspsrm_win32.dll in %WINDIR%/system32
On 64-bit Windows:
haspsrm_win64.dll in %WINDIR%/system32 and haspsrm_win32.dll in
%WINDIR%/syswow64
Installation of the DLLs will be skipped if the same or a newer
version is already present at the target location.
With respect to this change, the installer will ask again
whether the USB dongle driver should be installed when updating
an existing installation of 11.0.2 or older.
-
The Windows installer included Xcode projects for the extension package and
ia_integration examples. However, note that existing Xcode directories are
not removed in update case.
-
The image installer failed with a write error when attempting to install
images (or 3D object models) for a HALCON installation that did not include
any examples. This problem has been fixed.
Licensing
- HALCON now uses version 11.12 of the FLEXnet Publisher
license manager software.
- Under Windows, the new USB dongle driver version Sentinel HASP 6.60 is
included.
- Under Linux, the new USB dongle driver version Sentinel HASP 2.2.1 is
included.
- Under Mac OS X, the new USB dongle driver version Sentinel HASP 6.60 is
included.
-
On Windows 32 bit systems, parallel port dongles are not supported anymore
since HALCON 11.0.1. The Installation Guide as well as the Windows
installer itself have been adapted accordingly.
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.3.