Release Notes for HALCON 11.0
This document provides the release notes for MVTec HALCON 11.0, as released in June 2012.
Addendum to the Release Notes of HALCON 11.0
The OCR Assistant and the Training File Browser of the originally
released version of HALCON 11.0 had critical issues with regard to
the training files. The legacy HALCON/C++ interface also had a
critical issue when using the object-oriented variant. To solve
these problems, the original version HALCON 11.0 was substituted by
an updated version HALCON 11.0.0.1.
If you have already installed HALCON 11.0, we recommend to download
the update and install it over the existing installation. For this
purpose, the Windows installer has been adapted to replace the
respective files automatically.
To find out which version is currently installed, please open the
dialog "Help->About" in HDevelop. The correct versions and dates
of HDevelop and HALCON are: "HDevelop version: 11.0.0.1
(11.07.2012)" and "HALCON version: (29.06.2012)". The file version
of the HALCON library can also be checked with the following
operator call: get_system('file_version',FileVersion), or,
under Windows, by inspecting the file properties of the files
halcon.dll and halconxl.dll.
OCR Assistant and Training File Browser
Each training sample consists of an image and of a region. The
image contains the gray values and the region represents the shape
of the character. In certain cases, the training samples were stored
without the region information. As a consequence, a classificator
that is trained based on such a training file will provide worse
classification results owing to the missing region information.
In particular, the following issues occured:
- The teaching process of the OCR Assistant in HDevelop
did not work correctly. The segmented characters stored in a
training file during the teaching process missed their region
information. Only the image data was written to the training file.
The region of the stored image was set to the full domain, so that
the region information of the character was lost. This problem has
been fixed.
- Copying samples from one training
file to another training file with the OCR Training File Browser
of HDevelop did not work correctly. When samples were copied, via
drag and drop or copy and paste, from one training file to a
different training file, the region data of the character was
lost. After this action, the region of the copied image was set
to the full domain, so that the region information of the
character was lost. This problem has been fixed.
All training files that have been created with HALCON 11.0 by one
of the above described ways should be replaced by new training
files, created with HALCON 11.0.0.1. All classifiers that have been
trained with such a training file should be re-trained with the
respective new training file.
Legacy HALCON/C++ interface
The class implementation of legacy HALCON/C++ returned the error
7200 ("Wrong number of output object parameter") in specific cases.
The error occured if an operator with more than one iconic output
parameter was called with a non-empty HALCON object as iconic output
parameter. This problem has been fixed.
In addition, HALCON 11.0.0.1 also fixes
the following problems:
- It took very long to load and act on training files
with many samples in the OCR Training File Browser. Because
of this the sorting was restricted to files with less than 1000
samples. If more than or 1000 samples existed, sorting was not
possible. This has been changed. Now the loading and handling is
much faster and the restriction for the sorting was removed.
- There was a problem with entering East Asian
characters into the full text editor. During or after entering East
Asian characters like Hiragana, Katakana, or Hanja via a phonetic or
shape based input method the text cursor might jump to the begin of
the next line. This could not only happen after the conversion into
the East Asian characters but also in the middle of entering a
character by a key sequence. If this happened, the complete program
line could become corrupted. This problem has been fixed.
- HDevelop crashed if two case
statements with the same label were entered in one switch block
via the full text editor. This problem has been fixed.
- HALCON/C++ returned inconsistent
tuples in some cases. The problem occured if output tuples
containing only one value are reused, e.g., in a loop. The further
use of these tuples was not safe and may have introduced undefined
values. This problem has been fixed.
- Erroneously, the specific values for the item names
"FileVersion" and "ProductVersion" of the following DLLs have been
set to "11.0 Beta3" instead of "11.0":
- halcon.dll
- halconxl.dll
- halconc.dll
- halconcxl.dll
- hdevenginecpp.dll
- hdevenginecppxl.dll
- hdevenginecpp10.dll
- hdevenginecpp10xl.dll
Note that the DLLs themselves are correct, only this versioning
string has not been updated. This problem has been fixed.
Compatibility
Licenses
All HALCON 10.0 licenses or licenses of earlier versions must be replaced
or upgraded. Please contact your local distributor.
HDevelop Example Programs and Procedures
The HDevelop language now supports C syntax for
comparison operators, i.e., == can be used instead of = and != can be
used instead of #. The old syntax remains valid for compatibility reasons.
Please note that the old syntax must be used if the example program should be
readable with HALCON 10.0.x or earlier versions.
New revised HALCON/C++ Interface
The HALCON/C++ interface has been revised to support
more efficient tuple handling, and to provide an improved API that is
consistent with HALCON/.NET. The new HALCON/C++ interface is not source
code compatible to the old HALCON/C++ interface, although a limited
compatibility mode for procedural code is available by setting the
preprocessor define HCPP_LEGACY_API. The old HALCON/C++ interface, which is
now called “legacy HALCON/C++ interface”, is still available by
linking against halconcpp10.lib or libhalconcpp10.so,
respectively. Existing applications using the HDevEngine that corresponds
to the legacy HALCON/C++ interface must also link against the corresponding
hdevenginecpp10.lib or libhdevenginecpp10.so library.
HALCON Library
Compared to HALCON 10.0, many extensions have been introduced. Thus, the
HALCON 11.0 libraries are not binary compatible with HALCON 10.0.x or
earlier versions. However, HALCON 11.0 is mostly source-code compatible to
HALCON 10.0.x except for the changes listed below.
HALCON Applications
Please re-compile all C, C++, .NET, or COM programs developed with HALCON
10.0.x.
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.
Please note the following source-code incompatibilities:
-
circularity might have
returned an inaccurate or even incorrect result for small regions.
The value of Circularity was estimated too large, which resulted in a
Circularity of 1.0 for almost every region with only a few points. The
value of Circularity is now smaller than it was in earlier versions of
HALCON. The difference between the old and the new value depends on the
size of the region. For small regions (e.g., Area < 5000 or diameter
< 100), the difference (approximately 0.02
- 0.05) is larger than for large regions.
-
descript_class_box now returns the results as control parameters instead of
writing them to 'standard_output'. Therefore, all programs that use the
operator descript_class_box must be adapted
accordingly.
-
HALCON's FFT operators (fft_generic, fft_image, fft_image_inv, and rft_generic) are now significantly faster on
systems that support the AVX instruction set. In this context, the
file format used by write_fft_optimization_data and read_fft_optimization_data has changed
and is not backwards compatible. All FFT optimization data must be
generated anew with optimize_fft_speed or
optimize_rft_speed and must be written with
write_fft_optimization_data in the new format.
-
find_shape_model_3d has a new mode in which
the score is recomputed after the pose refinement.
This ensures that a better match always obtains a higher score, and hence
results in a more intuitive ordering of the returned matches. This mode
can be activated by setting the new generic parameter 'recompute_score'
to 'true'. For efficiency reasons, some computations are performed
offline when calling create_shape_model_3d
and stored in the 3D shape model.
Additionally, shape-based 3D matching has been extended with GPU accelerated hidden surface removal. Depending
on the graphics card, the operators create_shape_model_3d, project_shape_model_3d, and project_object_model_3d are now significantly
faster for models with a large number of faces. Furthermore, find_shape_model_3d also is significantly
faster if the shape model was not created with 'fast_pose_refinement'
enabled. This new mode is the default and can be toggled with the new
set_system parameter
'opengl_hidden_surface_removal_enable'. The get_system parameter
'opengl_hidden_surface_removal_available' can be used to query whether
this mode is available (this depends on the capabilities of the graphics
card).
Because of the above improvements, 3D shape models created with HALCON 11
cannot be used with earlier versions of HALCON. If the new mode to
recompute the score after the pose refinement is not used, 3D shape models
created with earlier versions of HALCON can be used with HALCON 11. If
this new mode should be used, 3D shape models created with earlier versions
of HALCON cannot be used with HALCON 11 (except for some special cases).
-
gen_binocular_proj_rectification returned
incorrect projective transformations in the
parameters H1 and H2: the matrices conceptually had the row and column
coordinates exchanged. Now, the correct values are returned.
Existing applications that rely on the previous order of the values of
the projective transformation matrices must convert the current matrices
into the previous format by executing the following code after the call
to gen_binocular_proj_rectification:
hom_mat2d_translate_local (H1, 0.5, 0.5, H1)
hom_mat2d_translate (H1, -0.5, -0.5, H1)
H1 := subset(H1,[4,3,5,1,0,2,7,6,8])
hom_mat2d_translate_local (H, 0.5, 0.5, H2)
hom_mat2d_translate (H2, -0.5, -0.5, H2)
H2 := subset(H2,[4,3,5,1,0,2,7,6,8])
-
The image type vector_field now supports different
semantic types of vector fields: vector fields that contain
relative coordinates and vector fields that contain absolute coordinates.
Consequently, the image type name has been extended by a suffix, which
describes the semantics of the vector_field. Images of type
'vector_field_relative' contain relative coordinates and images of type
'vector_field_absolute' contain absolute coordinates. For compatibility
reasons, the old image type 'vector_field' is still supported. It behaves
like the new image type 'vector_field_relative'.
This change implies various adaptations of the behavior of operators that
handle vector fields. See below for a detailed
description of these changes. Especially, the operator real_to_vector_field has been extended by the new
parameter Type, which is used to set the
semantic type of the output vector field. Therefore, all programs
using the operator real_to_vector_field
must be adapted accordingly.
-
The parameter name 'diameter' has been renamed to
'diameter_axis_aligned_bounding_box' in get_object_model_3d_params and select_object_model_3d. This was necessary due
to the introduction of max_diameter_object_model_3d, which might have
caused confusion since the value accessed by
'diameter_axis_aligned_bounding_box' is larger than the result of max_diameter_object_model_3d. For compatibility
reasons, 'diameter' will still be supported.
-
gray_range_rect no longer
supports images of type direction. Programs that use the operator
gray_range_rect with images of type direction
must be adapted accordingly.
-
The operators
did not return an error if elements of an empty tuple
were accessed. Instead, an empty tuple was returned. This was
inconsistent with the [] operation in HDevelop. These tuple
operators now return the error 1402 ("Wrong number of values of control
parameter: 2").
The error handling in existing applications using tuple_first_n, tuple_last_n,
tuple_select_range and tuple_str_bit_select must be adapted accordingly.
-
The semantics of the for loop in HDevelop and
HDevEngine was changed in the
following way: The index variable of the for loop is no longer set to an
internal counter before the execution of the next loop body begins, i.e.,
modifications of the index variable within the loop body will be
preserved for the next cycle.
Consequently, the export has been adapted such that programs that use the
new semantics of the for loop behave in the same way, regardless of the
programming language to which they have been exported.
For compatibility reasons, existing programs that modify the index
variable within the for loop will not change their behavior. The for
statement of these loops are marked in the program listing with the
identifier __use_internal_index__ and in the Operator window
with a warning text.
-
HALCON has been extended with the new operator
tuple_gen_sequence, which returns a tuple with a sequence of
equidistant values. The procedure tuple_gen_sequence.hdvp is
replaced by this operator and has been removed.
Exported programs that contain a version of the procedure
tuple_gen_sequence must be adapted as
follows: The generated function tuple_gen_sequence must be
removed. For C programs, all calls to tuple_gen_sequence must be
replaced by a call to T_tuple_gen_sequence.
-
The signature of HALCON/C utility functions have
been revised to pass references for input parameters of type
Htuple. The wrapper macros of these utility functions have been
revised for best possible source code compatibility. But passing a
function's return value of type Htuple to an input parameter of a
HALCON/C utility function is incompatible and has to be passed via
a temporary variable, now.
-
The default type of the input parameter of tuple_number has been changed
from real to string.
This change is not source code compatible regarding HALCON/C because the
type of the input parameter of the single value version of the operator
tuple_number has been changed from double to
string.
-
In HALCON/.NET, it is now possible to index a tuple
with a double value (e.g., t[1.0]). This change is not
source code compatible as it may lead to ambiguities if an index supports
casting both to int and to HTuple, e.g., when the index is itself a tuple
element as in s[t[0]].
-
In HALCON/.NET, HTuple now supports boolean expressions
using the operators && and ||. Furthermore, for consistency
with other members of HTuple, the tuple operators TupleEqual,
TupleNotEqual, TupleGreater, TupleGreaterEqual, TupleLess,
TupleLessEqual, and TupleRegexpTest now have return values of type HTuple
instead of bool. These modified member signatures are not source code
compatible.
-
In HALCON/.NET, the signatures of the single value API
overload has changed for the following class members:
-
HObjectModel3D::FitPrimitivesObjectModel3d,
-
HObjectModel3D::SegmentObjectModel3d, and
-
HObjectModel3D::PrepareObjectModel3d, as well as
-
HShapeModel::FindAnisoShapeModels,
-
HShapeModel::FindScaledShapeModels, and
-
HShapeModel::FindShapeModels.
The latter three are likely not relevant, as dedicated operators for
finding a single shape model exist.
-
In HALCON/.NET, the API for the generic XLD operators
SelectXldPoint, SelectShapeXld, ShapeTransXld, and
GenGridRectificationMap has been improved to return specific XLD classes
when used on a specific XLD class (such as HXLDCont). These API changes
on the specific XLD classes are not source code compatible. Also,
existing source code may contain conversions between HXLD and, e.g.,
HXLDCont that are syntactically correct but no longer required.
-
The signatures of the operators
have been changed to allow the usage of arrays
of data objects. This leads to source code incompatibilities
in HALCON/.NET and HALCON/COM. Some arguments or variables
receiving the return values have to be converted to arrays.
-
In HALCON/.NET and HALCON/COM, the signatures of
ClosingRectangle1 and OpeningRectangle1 have been changed to
support only the elementary data types int and Hlong. Note that
these changes are not source code compatible.
-
In HALCON/C++ (legacy), the changes of
multivalue entries in the operators
lead to source code incompatibilities. Some parameters have changed
from an elementary data type to HTuple.
In HALCON/C++ (legacy), the signatures of
HImage::GetImagePointer1 and HImage::GetImagePointer3 have been
changed to support only elementary data types instead of HTuple.
Note that these changes are not source code compatible.
In HALCON/.NET, the changes of multivalue entries in the operators
lead to source code incompatibilities. Some parameters have
changed from an elementary data type to HTuple.
In HALCON/COM, the changes of multivalue entries in the operators
lead to source code incompatibilities. Some parameters have
changed from an elementary data type to type variant.
Image Acquisition Interfaces
Because of the new version 5.x of the HALCON
Acquisition Integration Interface, acquisition interfaces developed
with HALCON 10.0.x or lower are not binary compatible, but mostly
source-code compatible with HALCON 11.0.
The system requirements of the following image acquisition interfaces
have been changed since HALCON 10.0.2:
-
For using the updated ABS interface you
must install the new UK11xx camera API version 1.10.
-
For using the updated Andor interface you
must install the new Andor SDK version 2.93.
-
For using the updated BitFlow interface you
must install the new BitFlow SDK 5.60.
-
For using the updated LinX interface you
must install the new LinX SDK 5.60.
-
For using the updated pylon interface you
must install the new Basler pylon SDK version 3.0.
-
For using the updated Sentech interface you
must install the new Sentech SDK version 1.0.0.7.
If you have developed your own acquisition interfaces with HALCON
10.0.x, you can re-generate them with HALCON 11.0.
Extension Packages
Please re-generate your own extension packages developed with HALCON
10.0.x. 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.
-
ActivVisionTools 1.0 to 3.1 cannot be used with HALCON 11.0. If
the setup program detects such an ActivVisionTools version, it warns you
that by continuing to install HALCON 11.0 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.
No Longer Supported Operating Systems
-
HALCON no longer supports the operating system Solaris, i.e., the
platform version sparc-sun-solaris9.
Legacy or No Longer Supported Features
Major New Features of HALCON 11.0
General Features
Sample-based Identification
HALCON now provides operators for sample-based
identification. With sample-based identification, trained objects
can be identified based on characteristic features like texture or color.
Sample-based identification is capable of differentiating a large number
of objects.
3D Surface Comparison
HALCON now provides operators for 3D surface
comparison. With 3D surface comparison, the distances of points
from one 3D object model to the points or faces of another 3D object
model can be computed.
3D Object Processing
HALCON now provides more operators for the processing of 3D object
models. Amongst others, for
Improved photometric stereo
HALCON now provides a new operator for photometric stereo. The operator
photometric_stereo handles
regions, supports different reconstruction methods, and returns the albedo
and gradient field. The returned albedo and gradient field images enhance
the use of photometric stereo for surface inspection applications.
Reading of Aztec Codes
HALCON's data code reader now supports Aztec codes.
Reading of Micro QR Codes
HALCON's data code reader now supports Micro QR codes.
Automatic Feature Selection for Classification
HALCON now provides operators for an automatic selection
of features for classification.
2D Metrology
HALCON now provides operators for 2D metrology,
with which it is possible to measure 2D standard shapes in an
easy-to-use manner.
Speed-Up and extended GPU support
Further Enhancements
HDevelop
-
HDevelop now provides a profiling tool. When
activated, the profiler counts how often each program line was called, and
measures the execution time for each line. The measured times are displayed
next to each line in HDevelop's Program window.
-
HDevelop now provides an OCR Assistant for
segmentation of symbols, reading of text using pretrained classifiers, as
well as teaching and training of user-defined fonts.
-
The existing Matching Assistant has
been extended significantly. In addition to shape-based matching, it
now also supports the correlation-based, the descriptor-based, and the
deformable matching methods of HALCON.
-
The general usability of HDevelop
has been enhanced in many ways.
Language Interfaces
New revised HALCON/C++ Interface
The HALCON/C++ interface has been revised to
support more efficient tuple handling, and to provide an improved API that
is consistent with HALCON/.NET.
Further Enhancements
HALCON now supports serialization of HALCON objects,
HALCON handles, and HALCON tuples directly in HALCON/.NET and HALCON/C++.
HALCON now supports the operating system Mac OS X 10.7.
Image Acquisition
The HALCON image acquisition interface documentation now
describes all image acquisition interface operators consistently
and parameters in detail.
Detailed Description of Changes in
HALCON 11.0 (relative to HALCON 10.0.2)
Detailed release notes can be obtained for the following topics:
HDevelop
HDevelop Language
-
The HDevelop language now supports multiway branch
blocks that can be defined with the help of the new switch/case
statements. The semantics of the switch-case block is the same as in C/C++. A more detailed
documentation of the new statements can be found in the operator
references of switch, case, break, and default. The new example program
hdevelop/Control/switch_case.hdev demonstrates the usage of
these block statements.
-
The semantics of the for loop was changed in the following way:
The index variable of the for loop is no longer
set to an internal counter before the execution of the next loop body
begins, i.e., modifications of the index variable within the loop body
will be preserved for the next iteration. Consequently, the export has
been adapted such that programs that use the new semantics of the for loop behave in the same way, regardless of the
programming language to which they have been exported. For compatibility
reasons, existing programs that modify the index variable within the
for loop will not change their behavior. The for
statement of these loops are marked in the program listing with the
identifier __use_internal_index__ and in the Operator window
with a warning text.
-
The HDevelop language now supports C syntax for
comparison operations, i.e., == can be used instead of = and !=
can be used instead of #. The old syntax remains valid for compatibility
reasons.
-
HDevelop now provides several infix operations for
elementwise tuple comparison. The following operations for an
elementwise comparison are available:
-
The HDevelop language now provides a simple and efficient way for
creating sequence tuples. Such a tuple can
be created via the expression [begin:step:end].
The step parameter is optional. If it is omitted, it is set to 1: [begin:end]. The HDevelop
example program hdevelop/Control/assign.hdev was extended to
demonstrate the usage of this statement.
-
HDevelop's insert operator became obsolete
and was replaced by two new operators. There was a non-modifying version
of the insert operator that was replaced
by the new HDevelop operator tuple_replace. The modifying
assignment-like version (t[i] := ...) was
replaced by the new HDevelop operator assign_at that uses the same notation as the
old insert operator in the full text editor.
In addition, the new operators can handle index and value arrays for
setting several tuple elements in one operation. They allow to set
several elements to one value in one step: t[1,3,5]
:= 99, or to set the items of one tuple element-wise to the
specified elements of another tuple: Result[IndexArray]
:= ValueArray. For compatibility reasons to prior HALCON
versions, the index assignment operations are stored in a format that
can be read by older HALCON versions, as long as the new multi-element
assignment is not used.
-
HDevelop's language now provides an operation insert, which provides the same
functionality as the new operator tuple_insert.
-
HDevelop's language now provides an operation replace, which provides the same
functionality as the new operator tuple_replace.
-
HDevelop's language now provides an operation select_mask, which provides the same
functionality as the new operator tuple_select_mask.
Functionality
-
HDevelop has been extended with the operators:
The new HDevelop example programs
-
hdevelop/Develop/dev_open_tool.hdev,
-
hdevelop/Develop/dev_open_dialog.hdev, and
-
hdevelop/Develop/dev_open_file_selection_dialog.hdev
show how to use the new functionalities. Note that these operators
have no effect in HDevEngine and are not exported.
-
With the new operator
it is possible to detect whether the script runs under HDevelop or HDevEngine.
If the script runs in HDevelop the operator dev_get_system('engine_environment', Value) sets
Value to 'HDevelop', otherwise to 'HDevEngine'.
-
HDevelop has been extended with the operator
that returns the handle of the active Graphics window. This operator is
exported to all supported programming languages and returns the active
window on the window stack. Within HDevEngine, the operator can be used
as demonstrated in the HDevEngine example implementation
my_hdevopertorimpl.h/.cpp.
-
HDevelop's Image Acquisition Assistant has been
extended to allow the selection of the Graphics window for the
output. The output window can been chosen on the inspect tab card, which
offers the list of open Graphics windows in a combo box.
-
The Matching Assistant in HDevelop has been
extended. In addition to shape-based matching, it now also
supports the correlation-based, the descriptor-based, and the deformable
matching methods of HALCON. Furthermore, the code generation can now
create code for image rectification and alignment transformations.
-
HDevelop now includes an OCR Assistant for
segmentation of symbols, reading of text using pretrained classifiers, as
well as teaching and training of user-defined fonts.
In addition, HDevelop now includes a Training File Browser that allows
both viewing and editing of OCR training data.
-
HDevelop now has a new command line option
-external_proc_path that adds one or more external procedure paths to the list of executable
procedures. Several paths can be separated by the operating system's
separator. Instead of a directory it is also possible to pass a
procedure library file. These paths have a higher priority than
HDevelop's user-defined and standard procedure paths, but are not saved
when closing HDevelop.
-
HDevelop now provides a new command line
option -delete_unused_local_procs that allows to
remove all unused local procedures from the
program that is about to be converted if the option -convert is used.
-
Resetting the HDevelop program by pressing F2 or loading a new program
now closes all socket connections opened by
open_socket_accept,
open_socket_connect, or
socket_accept_connect.
-
HDevelop's histogram and line profile tools
have been extended to allow the selection of the
Graphics window for the input. The histogram tools now also
allow the selection of the output Graphics window.
-
HDevelop's line profile tool now offers the
possibility to display the derivative of the
profile. This helps in selecting a threshold for a
measure operation.
-
The Variable Inspection window now allows to set
values of control variables that haven't been instantiated yet.
-
HDevelop now has an Inspection window that displays
the values of homogeneous matrix variables. Additionally, it is
possible to change matrix values in the Inspection window.
-
HDevelop now has an Inspection Window that displays
the values of pose variables. Additionally, it is possible to
change pose values in the Inspection Window.
-
HDevelop now has a profiling tool. In
particular, the profiler, when activated, counts how often each program
line was called, and measures the total, the average, the minimum, and
the maximum execution time for each line. The measured times are
displayed next to each line in HDevelop's Program window.
The profiler also distinguishes between the execution time, i.e., the
time a program line consumes during the execution in HDevelop/HDevEngine,
and the operator time, i.e., the time for the mere HALCON operator, and
measures both times separately. The user can switch freely between both
kinds of time measurements.
Furthermore, the profiler provides a separate tool to display the
aforementioned values not per program line but per operator and
procedure, respectively.
-
The Visualization dialog of HDevelop supports now user-defined color tuples and the definition of free colors in the form of #rrggbb. The newly designed colors and the
custom color list can also be called from the reorganized color context
menu of the Graphics window.
-
It is now possible to drag multiple images onto
HDevelop. In this case, the Image Acquisition Assistant is
opened, and the dropped images are preselected.
Along the same lines, the Image Acquisition Assistant will be opened if a
directory that contains images is dropped onto HDevelop.
-
HDevelop now has a new stop command (Shift+F9) to
stop after the current program line. In contrast to the
regular stop command (F9), the current procedure call runs to its end
and the view of the Program window does not change.
-
For operators that work on Graphics windows, like set_tposition, now the IDs of the open Graphics windows appear in the
parameter suggestion list of the appropriate parameters. If
there is no window variable available, the ID of the active
Graphics window is suggested as default value.
-
HDevelop now manages HALCON windows that have been opened with
open_window. If a new program is
loaded or the program is reset, HDevelop closes all HALCON
windows that haven't been closed with close_window. This avoids memory leaks
in HDevelop programs that use HALCON windows directly and that
have been interrupted and reset before the window is closed,
especially if buffer windows are used. Attention: this feature
was added due to the interactivity of HDevelop. Programs that
run in HDevEngine or that are exported to a programming language
must close all HALCON windows explicitly by calling close_window within the program.
-
If the Operator window was closed explicitly in the full text editor
mode, the following Insert Operator actions will no
longer re-open the Operator window automatically. Instead, the
code fragment is now generated directly into the program listing by
-
Insert Operator action within the Feature Inspection dialog,
-
Insert Operator action within the Help window,
-
inserting operators via the Operator menu.
If, on the other hand, the Operator window is already open, it will still
be filled with the operator and its parameter suggestions. Pressing the
Ctrl key while selecting one of these actions will reverse the behavior,
i.e., if the Operator window was closed it is re-opened and filled with
the operator, and if it already is open, the operator is entered directly
into the program listing.
-
It is now possible to change the parameters of a
freely formatted program line via the Operator window without losing the
formatting, as long as the formatting — like line breaks and
additional spaces — are not placed in the middle of a parameter
expression that was changed.
-
Constant expressions like rad(90) or ord('a') are now evaluated immediately while loading or creating
the program line and not only during the program execution. This will
improve performance and allow to detect invalid expressions already while
editing the program.
-
The tool tip in the full text editor can now also
display the result of expressions. If the mouse cursor remains
over a function name or an operator, the result of the sub-expression is
calculated and displayed in the tool tip. Until now, only the contents
of variables were displayed.
-
HDevelop has been extended with the possibility to pin a listing at a specific procedure part so
that no automatic scrolling of this listing occurs.
-
Update Window is now adjustable in single step
mode. Up to now, the iconic output objects were always shown in
the active Graphics window. Now it is possible to choose between the
modes 'always', 'never', 'clear and display', 'show last image and
display', and 'same behavior as in run mode'. This can be specified
in the Visualization Menu or in the General Options tab card of the
Preferences dialog.
-
It is now easier to add variables to the Variable
Window's User tab, i.e., instead of having to open the User tab
and selecting the desired variable in the context menu, it is now
possible to add the desired variable from the Program Window, either via
the Add Watch entry of the Program Window's context menu or via drag
and drop. In both cases,
the Variable Window automatically opens the User tab if not already done
so. Note, however, that this is only supported in the full text editor
mode.
-
The last change of the sort order in the Variable
window is now stored persistently. This setting is used as the
default for sorting variables in a newly displayed procedure. It is
always adapted if the sort order is changed for the currently visible
procedure in the Variable window. In addition, the default sort order
can be set via the General Options tab card on the Preferences dialog.
-
The Variable Inspect window now supports edit
actions like paste, cut, and insert better. These actions are
accessible via the context menu and short cuts. In addition, the dialog
no longer inserts undefined tuple elements.
-
The Browse Example dialog now allows to exit the
Find edit area by keyboard navigation: pressing the Enter or the
Move Down keys will now move the key focus into the example file list and
select the first entry in this list.
-
During the execution of the operators trainf_ocr_class_svm and train_class_svm, HDevelop now informs the user
about the progress of the training via the
status bar: a progress bar is displayed within the status bar that is
updated after every training cycle. In addition, the last cycle number
and the maximum number of cycles is displayed in the status bar.
-
HDevelop now supports a full screen mode in
which HDevelop covers the full desktop without displaying the window
frame, title bar, and the task bar. This mode can be toggled via the
Windows menu in the main menu bar or the short cut Ctrl+Shift+W
Ctrl+Shift+F. By default, the tool bars are also hidden. However, they
can be individually switched on via the context menu of the menu bar.
These settings are kept persistently for the full screen mode.
-
HDevelop's help browser has been extended in
the operator reference to show a list of the
corresponding examples. The examples are displayed in the
browser and can be opened as a program from there.
-
HDevelop's help browser now has a Locate
button that, for the currently shown help page, displays the
page's location in the contents tab.
-
It is now possible to enter newlines in the short
description of procedures. This can be used to improve the
readability of the procedure tool tips in the Program window.
-
HDevelop now supports procedure libraries,
i.e., files that contain more than one HDevelop procedure.
Such libraries are not mere containers for procedures. Instead, it is
assumed that all procedures from one library have a strong coupling.
Therefore, procedure calls in one of the library procedures are
preferably resolved with other procedures from the same library.
-
HDevelop now supports locally visible
procedures. Other procedures can see and call locally visible
procedures only if they are located in the same directory (for external
procedures), or if they are located in the same procedure library.
-
It is now possible to temporarily deactivate and
reactivate HDevelop procedures. Deactivated procedures will not
be used to resolve program lines by HDevelop. Deactivated procedures,
however, will stay loaded and editable, and, if reactivated, will be used
to resolve program lines in the usual manner.
-
It is now possible to open procedures
for editing explicitly, even if those procedures are not available for
execution via external procedure paths. Explicitly opened
procedures stay open and loaded until they are explicitly closed by the
user.
A procedure can be opened via a new entry of the File menu or via drag
and drop.
-
The following procedure library to interactively visualize 3D object
models is now part of the HALCON installation:
-
general/visualize_object_model_3d.hdpl
It is located in the directory %HALCONROOT%/procedures. This directory
is added to HDevelop's external procedure path list by default.
-
The following procedure is now part of the HALCON installation:
-
general/disp_end_of_program_message.hdvp
It is located in the directory %HALCONROOT%/procedures. This
directory is added to HDevelop's external procedure path list by
default.
-
In exported HDevelop programs, the internal image
width and height are now set to 512 and 512, respectively, i.e.,
exported code now contains the calls set_system
('width',512) and set_system
('height',512). Furthermore, exported code no longer contains the
unnecessary call set_system('do_low_error','false').
Legacy and Obsolete Operations
-
HDevelop's insert operator became obsolete and
was replaced by two new operators. There was a non-modifying
version of the insert operator that was
replaced by the new HALCON operator tuple_replace. The modifying
assignment-like version (t[i] := ...) was
replaced by the new HDevelop operator assign_at that uses the same notation as
the old insert operator in the full text
editor.
Bug Fixes
-
If the HDevelop Image Acquisition Assistant was
closed while the live grab was running, it continued to grab
images. This problem has been fixed.
-
Since HALCON 10.0.1, the Calibration Assistant no
longer displayed the coordinate system even when the option was
activated. This problem has been fixed.
-
The ROI width used by the Measure Assistant was
twice as large as the value specified in the GUI. This problem
has been fixed. Also, a value of 0 is now supported for the ROI width.
-
If the Line Profile tool was opened via the Measure Assistant, the
selected smoothing value was not correctly
transferred to the Line Profile tool. This problem has been
fixed.
-
The assistants of HDevelop did not support file names that
contain non-ASCII characters. The file could be used, but when
the settings were stored and loaded, the file name was
incorrectly decoded. This problem has been fixed.
-
HDevelop's gray histogram crashed if an image was used that
contains the values INF or NaN. This problem has been fixed.
-
HDevelop sometimes crashed if the program counter
was set to another procedure, e.g., main, during the execution of the
operator wait_seconds within a
procedure. This problem has been fixed.
-
On Linux systems, HDevelop could crash if the
Graphics window was closed during the execution of read_string. This problem has been
fixed.
-
Invalid lines are no longer ignored during
execution. The user is informed via a dialog that an invalid line
was requested to be executed.
This behavior can be changed via the Preferences dialog:
Edit/Preferences/General Options/Experienced User/ Stop execution at
invalid program lines.
The default for HDevelop is to stop and show a dialog box. The default
for HDevEngine is to ignore invalid lines. Thus, the behavior for
HDevEngine has not changed.
-
Although dev_update_pc was switched off,
the listing jumped to a catch statement if
an exception was caught. This problem has been fixed.
-
HDevelop's Program Line View did not always
maintain the correct selections when new breakpoints or
bookmarks were added. This happened when the new breakpoints or
bookmarks were added between two selected ones. This problem has been
fixed.
-
Live acquisition in HDevelop could interfere with
draw operations, preventing the creation of ROIs and in rare
cases even causing a crash. This problem has been fixed: in addition
to disabling the GUI, draw operations now block background operations
such as live acquisition.
-
There were some interactive operators for which no or a wrong instruction was displayed in the status bar. The following operators were affected: drag_region1, drag_region2, drag_region3, read_string, read_char, slide_image. This problem has been fixed.
-
If images with a very low height or width were displayed in the
Graphics window, e.g., images from a line scan camera, the zooming via the mouse wheel or the Zoom In/Out tool buttons was faulty. After the zooming (independent of the
zooming direction) the short side of the image was heavily increased
while the other side was zoomed normally. By this the aspect ratio
became extremely distorted. This problem has been fixed.
-
The User tab card of the Variable View sometimes
showed wrong variables if the variable names were changed in the
Program window. This problem has been fixed.
-
The Window sub menu from the main menu bar could
become very big if a procedure with a very long signature was
selected and displayed in the Variable window. This problem has been
fixed.
-
In SDI mode, the ROI Inspection windows of the line profile tool and
different assistants, i.e., the Matching assistant and the Measure
assistant, were opened at the wrong place.
Instead of opening a separate top level window, the ROI inspection
widget was placed somewhere inside the tool or assistant. This problem
has been fixed.
-
In the Print dialog, it was not possible to
configure the Print Selection mode properly. It was not
possible to select whether used procedures should be printed or not
because the corresponding check boxes were disabled. However, the
selected settings that had been made previously were used. This
problem has been fixed.
-
No auto completion was shown if an HDevelop operation name, like
'band', was entered as the operator name fragment. This problem has
been fixed.
-
If the execution of a program line that threw an exception,
returned a low-level error, and was embedded within a try-catch
block was stopped via the HALCON Low Level Error dialog, and if
the program counter was then set to another program line, the
program counter jumped, after the execution of the new program
line with F6, to the catch statement that followed the program
line that returned the low-level error. This problem has been
fixed.
-
The Find/Replace dialog found variables that are
written in brackets at the wrong position. The selection of the
search result started at the first bracket instead of the position of
the first character of the variable name. This problem has been fixed.
-
HDevelop's Find/Replace dialog sometimes did not mark and replace the correct occurrence of the
found text. This problem has been fixed.
-
After closing the Find/Replace dialog, setting the text cursor, and
reopening the Find/Replace dialog, the search did not start at the
current cursor position but after the last search result. The same
problem occurred with the Find Again functionality (Ctrl+G). This
problem has been fixed.
-
Especially under Windows, updating the program
counter became quite slow after selecting the user color scheme
for the program listing via the Preferences dialog. This problem
emerged notably if many operations, each with a short run time, were
executed. This problem has been fixed.
-
If an extension package operator returned a user-defined error message
with an error code greater than 10000, the error
text was not correctly displayed in the HDevelop error message
box. This problem has been fixed.
-
If an HDevelop program contained locked procedures and the default file
format was dvp, 'Make All External' resulted in the loss of the locked procedures. This problem has
been fixed.
-
If the documentation of a procedure contained an ampersand,
everything behind the ampersand was lost after saving the
procedure. This problem has been fixed.
-
HDevelop exported programs containing variables
that have the same name as HALCON operators incorrectly to C and
C++. Now, all variable names are exported with a prefix to
their name, as it was already the case in exported HALCON/.NET and
HALCON/COM code.
-
HDevelop exported calls to procedures beginning
with dev_map, dev_unmap, and dev_update as comments. This
problem has been fixed.
-
HDevelop sometimes exported programs containing
nested exception handling incorrectly to C and Visual Basic
6.0. This problem has been fixed.
-
When exporting external procedures to separate files, HDevelop's Export
dialog sometimes erroneously warned that the
external procedures export directory was not writeable. This
happened if the directory string in the Export dialog was not
normalized, i.e., if it contained backslashes, double slashes, or
similar. This problem has been fixed.
-
When exporting a program containing external procedures to separate
files, HDevelop exported the file containing the
local procedures incorrectly if the directory string in the
dialog did not contain a backslash or slash at the end. In this case
the regarding export file was not named correctly and it was not placed
in the export directory but parallel to it. These problems have been
fixed.
-
HDevelop exported local procedures incorrectly to C# if the
procedure contained output parameters and exporting of local
procedure bodies was disabled. This problem has been fixed.
-
HDevelop exported program lines containing string constants
incorrectly to C if the string constant contained the sub string
'*/' and the program line was exported as a comment. In that
case, the exported code failed to compile. This problem has been
fixed.
-
HDevelop exported the module name incorrectly to Visual Basic
.NET and Visual Basic 6.0. If all referenced external procedures
were exported to separate files, in most cases, an external
procedure could not be called from within another module. This
problem has been fixed.
-
HDevelop may have crashed on shutdown if SDI mode was used and
the variable window showed the Auto tab card. This problem
has been fixed.
-
HDevelop sometimes could not trigger the opening of PDF files
from the help browsers right pane. This problem has been fixed.
-
HDevelop could be in a state, where no parameter edit field in
the procedure interface dialog was activated but the Move Down
button (which is used to change the order of procedure
parameters) was enabled. Pressing the Move Down button in such a
state caused HDevelop to crash. This problem has been fixed.
Examples
New syntax for comparison operators
The HDevelop example programs use the new syntax for the
comparison operators, i.e., instead of =
and #, the new comparison operators == and != are used.
New Example Programs
HALCON has been extended with more than 70 new HDevelop example
programs:
-
HALCON has been extended with a set of new HDevelop example
programs that demonstrate selected applications and HALCON
features in detail. In particular, the following HDevelop
example programs have been added:
-
hdevelop/Applications/General/create_high_dynamic_range_image.hdev
-
hdevelop/Applications/OCR/ocr_embossed_photometric_stereo.hdev
-
hdevelop/Applications/OCR/read_braille_photometric_stereo.hdev
-
hdevelop/Applications/Object-Recognition-2D/identify_vegetables.hdev
-
hdevelop/Applications/Surface-Inspection/inspect_blister_photometric_stereo.hdev
-
hdevelop/Applications/Surface-Inspection/inspect_flooring_photometric_stereo.hdev
-
hdevelop/Applications/Surface-Inspection/inspect_leather_photometric_stereo.hdev
-
hdevelop/Applications/Surface-Inspection/inspect_shampoo_label_photometric_stereo.hdev
-
hdevelop/Matrix/solve_linear_equation.hdev
-
hdevelop/System/Parameters/query_system_parameters.hdev
-
hdevelop/Transformations/Poses/explain_poses.hdev
-
hdevelop/Transformations/Poses/show_coordinate_systems_hand_eye.hdev
-
Two example programs were introduced to demonstrate the GS1-128 bar code and the GS1 data codes,
respectively:
-
hdevelop/Identification/Bar-Code/gs1_128.hdev
-
hdevelop/Identification/Data-Code/gs1_data_codes.hdev
-
The new HDevelop example programs
-
hdevelop/Identification/Data-Code/aztec_default_settings.hdev and
-
hdevelop/Identification/Data-Code/aztec_optimized_settings.hdev
show how to use the new functionality to read
Aztec codes.
-
The new HDevelop example programs
-
hdevelop/Identification/Data-Code/micro_qr_default_settings.hdev
and
-
hdevelop/Identification/Data-Code/micro_qr_optimized_settings.hdev
show how to use the new functionality to read
Micro QR codes.
-
The new example programs
-
hdevelop/Applications/Measuring-2D/apply_metrology_model_diamond.hdev
and
-
hdevelop/2D-Metrology/apply_metrology_model.hdev
show how to use the operators for measuring standard
shapes.
-
The new example programs
-
hdevelop/3D-Object-Model/Features/smallest_bounding_box_object_model_3d.hdev
and
-
hdevelop/3D-Object-Model/Features/select_object_model_3d.hdev
demonstrate the new functionality to calculate
global features for 3D object models.
-
The new example programs
-
hdevelop/Calibration/Hand-Eye/calibrate_hand_eye_stationary_3d_sensor.hdev
-
solution_guide/3d_vision/handeye_movingcam_calibration_poses.hdev
show the direct use of 3D poses for hand-eye calibration.
-
The example program
-
hdevelop/3D-Reconstruction/Binocular-Stereo/vector_to_fundamental_matrix_distortion.hdev
shows how to convert camera parameters and a pose
into a 3x4 projection matrix.
-
The new example program
-
hdevelop/3D-Object-Model/Transformations/connection_object_model_3d.hdev
demonstrates the calculation of connected components
in 3D object models.
-
The usage of the operators to manage training data
that consists of several features can be seen in the example
programs for the selection of features for the classification:
-
hdevelop/Classification/Feature-Selection/classify_bottle_mouth.hdev and
-
hdevelop/Classification/Feature-Selection/auto_select_region_features.hdev
-
The new HDevelop example programs
-
hdevelop/Develop/dev_open_tool.hdev,
-
hdevelop/Develop/dev_open_dialog.hdev, and
-
hdevelop/Develop/dev_open_file_selection_dialog.hdev
show how to use the new HDevelop functionalities to open and close modal dialogs, tools, or assistants.
-
The new example programs
-
hdevelop/Applications/Robot-Vision/reconstruct_3d_object_model_for_matching.hdev and
-
hdevelop/Applications/Surface-Inspection/compare_surface_sheet_of_light.hdev
show how to compute the distances of points from one 3D
object model to the points or faces of another 3D object model.
-
The new HDevelop example program
-
hdevelop/3D-Matching/Shape-Based/find_shape_model_3d_recompute_score.hdev
shows how to use the new mode of find_shape_model_3d in which the score is recomputed after the pose refinement.
-
The new example program
-
hdevelop/3D-Object-Model/Creation/gen_primitives_object_model_3d.hdev
shows how to use the new operators to create 3D object models.
-
The new HDevelop example program
-
hdevelop/Graphics/Output/disp_object_model_3d.hdev
shows how to use the new functionality to display 3D
object models using OpenGL.
-
The new HDevelop example programs
-
hdevelop/Classification/k-Nearest-Neighbor/nearest_neighbors.hdev,
-
hdevelop/Classification/k-Nearest-Neighbor/set_params_class_knn.hdev,
-
hdevelop/Segmentation/Classification/classify_image_class_knn.hdev,
and
-
hdevelop/OCR/k-Nearest-Neighbor/letters_knn.hdev
show the usage of the new classifier based on k nearest
neighbors.
-
The new example program
-
hdevelop/Transformations/2D-Transformations/hom_mat2d_reflect.hdev
shows how to add a reflection to a 2d
transformation.
-
The new example programs
-
hdevelop/3D-Object-Model/Transformations/intersect_plane_object_model_3d.hdev
and
-
hdevelop/3D-Object-Model/Transformations/interactive_intersection.hdev
demonstrate the intersection of a 3D object model and a plane.
-
The new example program
-
hdevelop/Tools/Geometry/intersection_contours.hdev
shows how to use the operators to compute the intersection points between line segments, lines,
circles, and XLD contours.
-
The new example program
-
hdevelop/File/Misc/make_and_remove_dir.hdev
shows how to create and remove directories.
-
The new HDevelop example program
-
hdevelop/Transformations/Poses/pose_average.hdev
demonstrates how to average the rotation and
translation of a set of poses.
-
The new HDevelop example programs
-
hdevelop/Transformations/Poses/pose_invert.hdev
-
hdevelop/Transformations/Poses/pose_compose.hdev
show how to combine two 3D poses and how to invert a 3D pose.
-
The example program
-
hdevelop/3D-Reconstruction/Binocular-Stereo/vector_to_fundamental_matrix_distortion.hdev
shows how to project 3D points using 3x4 projection matrices.
-
The new example program
-
hdevelop/3D-Reconstruction/Binocular-Stereo/vector_to_fundamental_matrix_distortion.hdev
shows how to transform 3D points with 4x4 projective
3D transformation matrices.
-
The new example program
-
hdevelop/3D-Object-Model/Segmentation/reduce_object_model_3d_by_view.hdev
demonstrates how to enable the selection of parts of
3D object models by a region from a certain perspective.
-
The new example program
-
hdevelop/Applications/Robot-Vision/reconstruct_3d_object_model_for_matching.hdev
demonstrates how to register 3D object models.
-
The new example programs
-
hdevelop/3D-Object-Model/Transformations/rigid_trans_object_model_3d.hdev and
-
hdevelop/3D-Object-Model/Transformations/projective_trans_object_model_3d.hdev
show how to transform 3d object models.
-
The new example programs
-
hdevelop/Applications/Robot-Vision/reconstruct_3d_object_model_for_matching.hdev,
-
hdevelop/Applications/Surface-Inspection/compare_surface_sheet_of_light.hdev, and
-
hdevelop/3D-Object-Model/Transformations/projective_trans_object_model_3d.hdev
demonstrate how to sample a 3D object model uniformly.
-
The new HDevelop example programs
-
hdevelop/Classification/Feature-Selection/classify_bottle_mouth.hdev and
-
hdevelop/Classification/Feature-Selection/auto_select_region_features.hdev
show how to automatically select features for a general classification.
The new HDevelop example program
-
hdevelop/OCR/Feature-Selection/optimize_svm_parameter.hdev
shows how to automatically select features for an OCR classification.
-
The new example program
-
hdevelop/3D-Object-Model/Features/select_object_model_3d.hdev
demonstrates how to select 3D object models from
a tuple of 3D obejct models based on their global features.
-
The new example program
-
hdevelop/3D-Object-Model/Segmentation/select_points_object_model_3d.hdev
shows how to select points in a 3D object model
by thresholds on attributes.
-
The new example program
-
hdevelop/3D-Object-Model/Creation/set_object_model_3d_attrib.hdev
shows how to set and modify attributes and data of 3d
object models.
-
The new example program
-
hdevelop/Control/switch_case.hdev
demonstrates the usage of the new switch/case
statements.
-
The new HDevelop example programs
-
hdevelop/3D-Object-Model/Transformations/triangulate_object_model_3d_greedy.hdev
and
-
hdevelop/3D-Object-Model/Transformations/triangulate_object_model_3d_implicit.hdev
show how to triangulate, smooth, and calculate
surface normals for a point cloud.
-
The new example program
-
hdevelop/Tuple/Manipulation/tuple_insert.hdev
shows how to insert a tuple at a specified index into
another tuple.
-
The new example program
-
hdevelop/Tuple/Manipulation/tuple_replace.hdev
shows how to replace elements of a tuple.
-
The new example program
-
hdevelop/Tuple/Selection/tuple_select_mask.hdev
shows how to select elements of a tuple with a mask.
-
The new example program
-
hdevelop/Tuple/String-Operations/tuple_substr.hdev
shows how to determine substrings from a tuple.
-
The example program
-
hdevelop/Applications/Robot-Vision/reconstruct_3d_object_model_for_matching.hdev
shows how to combine several 3D object models into one.
-
The new example program
-
hdevelop/Transformations/2D-Transformations/vector_to_aniso.hdev
shows how to compute an anisotropic similarity
transformation from at least three point correspondences
-
The new example programs
-
hdevelop/3D-Reconstruction/Binocular-Stereo/match_fundamental_matrix_distortion_ransac_general.hdev
and
-
hdevelop/3D-Reconstruction/Binocular-Stereo/match_fundamental_matrix_distortion_ransac_trans.hdev
show how to determine the fundamental matrix and the
radial distortion coefficient from automatically determined point
correspondences.
The new example program
-
hdevelop/3D-Reconstruction/Binocular-Stereo/vector_to_fundamental_matrix_distortion.hdev
shows how to determine the fundamental matrix and the
radial distortion coefficient from already known point
correspondences.
-
The new example programs
-
hdevelop/Transformations/3D-Transformations/vector_to_hom_mat3d.hdev and
-
hdevelop/3D-Reconstruction/Binocular-Stereo/vector_to_fundamental_matrix_distortion.hdev
show how to compute a 3D transformation from 3D point correspondences.
-
The new example program
-
hdevelop/Tools/Mosaicking/proj_match_points_distortion_ransac.hdev
shows how to determine the projective transformation
matrix and the radial distortion coefficient from automatically
determined point correspondences.
The new example program
-
hdevelop/Tools/Mosaicking/proj_match_points_distortion_ransac_guided.hdev
shows how to determine the projective transformation
matrix and the radial distortion coefficient from automatically
determined point correspondences using known approximations of the
projective transformation and of the radial distortion coefficient.
-
The new HDevelop example programs
-
hdevelop/Identification/Sample-Based/apply_sample_identifier.hdev
and
-
hdevelop/Applications/Object-Recognition-2D/identify_vegetables.hdev
show how to use the new functionality to identify objects based on sample images.
-
The new example program
-
hdevelop/Application/Surface-Inspection/compare_surface_sheet_of_light.hdev
demonstrates how to transform the results of
an uncalibrated sheet-of-light model into 3D object model.
-
The new example program
-
hdevelop/Tools/Interpolation/interpolate_scattered_data.hdev
shows how to interpolate scattered data.
-
The new example program
-
hdevelop/Application/Surface-Inspection/compare_surface_sheet_of_light.hdev
demonstrates how to collect disparities in a
sheet-of-light model.
-
The new example program
-
hdevelop/Tuple/Comparison/tuple_compare_elem.hdev
demonstrates the elementwise comparison of tuples.
-
The new HDevelop example program
-
hdevelop/Tuple/Type/tuple_type.hdev
shows how to use the new functionality to determine
the type of tuples and of single elements of a tuple.
-
The new example program
-
hdevelop/OCR/Training-Files/protect_ocr_trainf.hdev
demonstrates the new functionality to protect
OCR training data.
-
The new HDevelop example programs
-
hdevelop/System/Sockets/send_serialized_item.hdev and
-
hdevelop/System/Sockets/receive_serialized_item.hdev
show how to use the new functionality for serialization and
deserialization of HALCON objects, HALCON handles, and HALCON
tuples.
Furthermore, the new C++ example program serialized_item.cpp
shows how to use the new functionality using the HALCON/C++
language interface and the new C# example project SerializedItem
shows how to use the new functionality using the HALCON/.NET
language interface.
-
The new example extension_package/useropencl shows the usage of the
interface for compute devices.
-
The following example programs have been adapted and extended to
also support Mac OS X:
-
The HALCON/C example programs in c have been adapted and
extended with an Xcode project.
-
The HALCON/C++ example programs in cpp/console have been adapted and
extended with an Xcode project.
-
The HDevEngine/C++ example programs in hdevengine/cpp have been
adapted and extended with an Xcode project.
-
Furthermode, the new HALCON/C++ example in cpp/cocoa shows
how to use a HALCON window in a Cocoa Application.
-
The new C++ and C# example programs
-
cpp/console/source/ia_callback.cpp
-
c#/IACallback
demonstrate the usage of HALCON image acquisition callbacks. The
generic implementation which uses the GigEVision interface can
be easily adapted to any other image acquisition interface which
supports callbacks.
Modified Example Programs
-
The HDevelop example programs camera_calibration_interior.hdev and
camera_calibration_exterior.hdev in the subdirectory
solution_guide/3d_vision have been renamed to
-
camera_calibration_internal.hdev and
-
camera_calibration_external.hdev
to obtain a more consistent terminology related to camera parameters
throughout all manuals and HDevelop examples.
-
Some example programs contained unused local procedures. These examples
may have incorrectly been listed as examples for specific operators in
the Browse Examples dialog. The following HDevelop examples were
affected:
-
hdevelop/explore_halcon.hdev
-
hdevelop/Tools/Geometry/distance_cc_min.hdev
-
hdevelop/Identification/Bar-Code/rss14truncated.hdev
-
hdevelop/Identification/Bar-Code/composite_print_quality_isoiec15416.hdev
-
hdevelop/Applications/Data-Codes/pdf417_bottle.hdev
-
hdevelop/Applications/OCR/find_text_dongle.hdev
-
hdevelop/Applications/Completeness-Check/color_segmentation_pizza.hdev
-
hdevelop/Applications/Position-Recognition-2D/find_cocoa_packages_local_deformable.hdev
-
hdevelop/Matching/Deformable/create_planar_calib_deformable_model_xld.hdev
-
hdevelop/Matching/Correlation-Based/find_ncc_model_defocused_precision.hdev
-
hdevelop/Image/Acquisition/abs.hdev
-
hdevelop/Image/Acquisition/video4linux2_parameters.hdev
-
hdevelop/Image/Acquisition/svcam-gige.hdev
-
hdevelop/Image/Acquisition/sentech.hdev
-
hdevelop/XLD/Transformations/crop_contours_xld.hdev
-
hdevelop/Matrix/adjust_circle_matrix.hdev
-
solution_guide/basics/measure_metal_part.hdev
-
solution_guide/basics/matching_green_dot.hdev
-
solution_guide/basics/ecc200_training_simple.hdev
-
solution_guide/basics/atoms.hdev
-
solution_guide/basics/crystal.hdev
-
solution_guide/2d_measuring/measure_metal_part_extended.hdev
-
solution_guide/3d_vision/handeye_stationarycam_grasp_nut.hdev
-
solution_guide/3d_vision/bundle_adjusted_mosaicking.hdev
-
solution_guide/2d_data_codes/write_2d_data_code_model.hdev
-
solution_guide/2d_data_codes/2d_data_codes_first_example.hdev
This problem has been fixed. Now, the examples do not contain unused
local procedures.
-
The following HDevelop example programs have been revised:
-
hdevelop/Calibration/Rectification/lens_distortions.hdev
-
hdevelop/Calibration/Binocular/binocular_calibration.hdev
-
hdevelop/explore_halcon.hdev
-
hdevelop/Filters/Edges/edges_sub_pix.hdev
-
hdevelop/Tools/Geometry/distance_pc.hdev
-
hdevelop/Applications/Measuring-2D/correct_measure_direction.hdev
-
hdevelop/Applications/Measuring-2D/rim.hdev
-
hdevelop/Applications/Measuring-2D/measure_ball_bond.hdev
-
hdevelop/Applications/Measuring-2D/circles.hdev
-
hdevelop/Applications/Measuring-3D/3d_coordinates.hdev
-
hdevelop/Applications/Measuring-3D/world_coordinates_line_scan.hdev
-
hdevelop/Applications/Position-Recognition-3D/3d_position_of_circles.hdev
-
hdevelop/Applications/Print-Inspection/print_check.hdev
-
hdevelop/XLD/Transformations/union_contours_xld.hdev
-
hdevelop/XLD/Transformations/sort_contours_xld.hdev
-
hdevelop/File/XLD/dxf_input_output.hdev
-
hdevelop/Matrix/adjust_circle_matrix.hdev
-
solution_guide/basics/color_pieces_euclid.hdev
-
The following example programs under hdevelop/Identification/Bar-Code/
have been renamed to use the new name GS1
DataBar:
-
rss_composite.hdev → gs1databar_composite.hdev
-
rssexpanded.hdev → gs1databar_expanded.hdev
-
rssexpanded_stacked.hdev → gs1databar_expanded_stacked.hdev
-
rsslimited.hdev → gs1databar_limited.hdev
-
rss14.hdev → gs1databar_omnidir.hdev
-
rss14_stacked.hdev → gs1databar_stacked.hdev
-
rss14_stacked_omnidir.hdev → gs1databar_stacked_omnidir.hdev
-
rss14truncated.hdev → gs1databar_truncated.hdev
The following example programs have been adapted to use the new name GS1 DataBar:
-
hdevelop/Identification/Bar-Code/barcode_autodiscrimination.hdev
-
hdevelop/Identification/Bar-Code/barcode_param_num_scanlines.hdev
-
hdevelop/Identification/Bar-Code/barcode_param_stop_after_result_num.hdev
-
hdevelop/Identification/Bar-Code/composite_print_quality_isoiec15416.hdev
-
hdevelop/Identification/Data-Code/calibration_aimdpm_1_2006.hdev
-
The HDevelop example program
-
hdevelop/Control/assign.hdev
was extended to demonstrate a simple and efficient
way for creating sequence tuples.
-
The following example programs were adapted to use the new functionality
to directly use 3D poses for hand-eye calibration.
-
solution_guide/3d_vision/handeye_movingcam_calibration.hdev
-
solution_guide/3d_vision/handeye_stationarycam_calibration.hdev
-
solution_guide/3d_vision/handeye_stationarycam_grasp_nut.hdev
-
The following example programs were adapted to use the new interface for and the new functionality of the
calibration data model:
-
hdevelop/Applications/Measuring-3D/calibrate_sheet_of_light.hdev
-
hdevelop/Calibration/Monocular/camera_calibration.hdev
-
hdevelop/Image/Acquisition/sick-3dcamera_calibration.hdev
-
hdevelop/Calibration/Monocular/line_scan_calibration.hdev
-
hdevelop/Calibration/Self-Calibration/radial_distortion_comparison.hdev
-
hdevelop/Calibration/Self-Calibration/stationary_camera_self_calibration.hdev
-
hdevelop/Calibration/Monocular/compare_calibration_models.hdev
-
hdevelop/Calibration/Multi-View/calibrate_cameras_precision.hdev
-
hdevelop/Calibration/Multi-View/calibrate_cameras.hdev
-
solution_guide/3d_vision/two_camera_calibration.hdev
-
solution_guide/3d_vision/camera_calibration_multi_image.hdev
-
solution_guide/3d_vision/stereo_calibration.hdev
-
The HDevelop example
-
hdevelop/3D-Matching/Shape-Based/find_shape_model_3d_recompute_score.hdev
was adapted to use the operator gen_object_model_3d_from_points.
-
The following example programs were adapted to use the new functionality to combine two 3D poses and to invert a 3D pose.
-
hdevelop/explore_halcon.hdev
-
hdevelop/Applications/Robot-Vision/locate_pipe_joints_stereo.hdev
-
hdevelop/Applications/Position-Recognition-3D/3d_matching_clamps.hdev
-
hdevelop/3D-Reconstruction/Binocular-Stereo/disparity_to_point_3d.hdev
-
hdevelop/3D-Reconstruction/Binocular-Stereo/intersect_lines_of_sight.hdev
-
hdevelop/Image/Acquisition/openni_surface_based_3d_matching.hdev
-
solution_guide/3d_vision/handeye_movingcam_calibration.hdev
-
solution_guide/3d_vision/camera_calibration_external.hdev
-
solution_guide/3d_vision/handeye_stationarycam_calibration.hdev
-
The example program
-
hdevelop/3D-Matching/Shape-Based/find_shape_model_3d_recompute_score.hdev
was adapted to use the new operator set_object_model_3d_attrib_mod.
-
The example program
-
hdevelop/Identification/Bar-Code/barcode_training.hdev
was adapted to demonstrate how to write and
read bar code models to and from file.
-
The example program
-
hdevelop/Control/comment.hdev
demonstrates the use of special code export instructions (lines
beginning with #). It is suggested to export the example program to
see the effect of this special syntax.
-
The C++ example program hdevengine/cpp/error_handling.cpp was
extended to show the handling of the exception that is thrown if an uninitialized output parameter of a procedure is
accessed via HDevProcedureCall::GetOutputIconicParamObject or
HDevProcedureCall::GetOutputCtrlParamTuple.
-
The C++ examples in the directory %HALCONEXAMPLES%/hdevengine/cpp that
demonstrate the usage of HDevEngine have been improved in the following
ways:
-
The example implementation of the dev operators, the class
MyHDevOperatorImpl in the file my_hdevoperatorimpl.h/.cpp now
implements all dev operators that handle the Graphics window.
-
The methods for displaying messages and exception information in the
file my_error_output.h/.cpp have been improved and renamed into
DispMessage and DispErrorMessage.
-
The example program exec_programs_mt that allows to execute arbitrary
HDevelop programs in parallel has now a command line option for
setting the external procedure path.
-
The error handling in some HALCON/C examples has been corrected.
-
The Visual Studio projects for the C++ examples under
-
cpp/console/
-
cpp/mfc
-
hdevengine/cpp
-
hdevengine/mfc
now contain explicit platform targets for x64 to allow more convenient
use with the x64-win64 architecture.
Removed Example Programs
The following example programs have been removed:
-
hdevelop/3D-Reconstruction/Photometric-Stereo/phot_stereo.hdev
-
hdevelop/Applications/Measuring-3D/phot_stereo_board.hdev
-
hdevelop/Identification/Bar-Code/rss14.hdev
-
hdevelop/Identification/Bar-Code/rss14_stacked.hdev
-
hdevelop/Identification/Bar-Code/rss14_stacked_omnidir.hdev
-
hdevelop/Identification/Bar-Code/rss14truncated.hdev
-
hdevelop/Identification/Bar-Code/rss_composite.hdev
-
hdevelop/Identification/Bar-Code/rssexpanded.hdev
-
hdevelop/Identification/Bar-Code/rssexpanded_stacked.hdev
-
hdevelop/Identification/Bar-Code/rsslimited.hdev
-
hdevelop/Image/Acquisition/baumerfcam.hdev
-
hdevelop/Image/Acquisition/baumerfcam_2cameras.hdev
-
hdevelop/Image/Acquisition/baumerfcam_crop.hdev
-
hdevelop/Image/Acquisition/baumerfcam_flash.hdev
-
hdevelop/Image/Acquisition/baumerfcam_formats.hdev
-
hdevelop/Image/Acquisition/baumerfcam_lut.hdev
-
hdevelop/Image/Acquisition/baumerfcam_parameters.hdev
-
hdevelop/Image/Acquisition/baumerfcam_simple.hdev
-
hdevelop/Image/Acquisition/baumerfcam_trigger.hdev
-
hdevelop/Image/Acquisition/eneo.hdev
-
hdevelop/Image/Acquisition/eneo_parameters.hdev
-
hdevelop/Image/Acquisition/eneo_simple.hdev
-
hdevelop/Image/Acquisition/falcon.hdev
-
hdevelop/Image/Acquisition/falcon_2boards.hdev
-
hdevelop/Image/Acquisition/falcon_gain.hdev
-
hdevelop/Image/Acquisition/falcon_trigger.hdev
-
hdevelop/Image/Acquisition/flashbusmx.hdev
-
hdevelop/Image/Acquisition/flashbusmx_lut.hdev
-
hdevelop/Image/Acquisition/flashbusmx_simple.hdev
-
hdevelop/Image/Acquisition/menable3.hdev
-
hdevelop/Image/Acquisition/menable3_continuous.hdev
-
hdevelop/Image/Acquisition/menable3_crop.hdev
-
hdevelop/Image/Acquisition/menable3_exposure.hdev
-
hdevelop/Image/Acquisition/menable3_parameters.hdev
-
hdevelop/Image/Acquisition/menable3_shaftencoder.hdev
-
hdevelop/Image/Acquisition/menable3_simple.hdev
-
hdevelop/Image/Acquisition/menable4.hdev
-
hdevelop/Image/Acquisition/menable4_continuous.hdev
-
hdevelop/Image/Acquisition/menable4_crop.hdev
-
hdevelop/Image/Acquisition/menable4_exposure.hdev
-
hdevelop/Image/Acquisition/menable4_parameters.hdev
-
hdevelop/Image/Acquisition/menable4_shaftencoder.hdev
-
hdevelop/Image/Acquisition/menable4_simple.hdev
-
hdevelop/Image/Acquisition/menablevisualapplets.hdev
-
hdevelop/Image/Acquisition/menablevisualapplets_continuous.hdev
-
hdevelop/Image/Acquisition/menablevisualapplets_parameters.hdev
-
hdevelop/Image/Acquisition/menablevisualapplets_simple.hdev
-
hdevelop/Image/Acquisition/pxc.hdev
-
hdevelop/Image/Acquisition/pxc_2boards.hdev
-
hdevelop/Image/Acquisition/pxc_gain.hdev
-
hdevelop/Image/Acquisition/pxc_gain_bw.hdev
-
hdevelop/Image/Acquisition/pxc_simple.hdev
-
hdevelop/Image/Acquisition/pxc_start_digitizing.hdev
-
hdevelop/Image/Acquisition/pxc_timeout.hdev
-
hdevelop/Image/Acquisition/pxr.hdev
-
hdevelop/Image/Acquisition/pxr_2cameras.hdev
-
hdevelop/Image/Acquisition/pxr_crop.hdev
-
hdevelop/Image/Acquisition/pxr_gain.hdev
-
hdevelop/Image/Acquisition/pxr_lut.hdev
-
hdevelop/Image/Acquisition/pxr_simple.hdev
-
hdevelop/Image/Acquisition/pxr_trigger.hdev
-
hdevelop/Image/Acquisition/tag.hdev
-
hdevelop/Image/Acquisition/tag_2cameras.hdev
-
hdevelop/Image/Acquisition/tag_crop.hdev
-
hdevelop/Image/Acquisition/tag_parameters.hdev
-
hdevelop/Image/Acquisition/tag_simple.hdev
-
hdevelop/Image/Acquisition/vrmareascan3d_parameters.hdev
-
hdevelop/Image/Acquisition/vrmareascan3d_simple.hdev
-
hdevelop/Tools/Geometry/intersection_ll.hdev
HALCON Library
New Operators
-
HALCON has been extended with a set of operators for measuring standard
shapes. The following operators have been added:
The new example programs
-
hdevelop/Applications/Measuring-2D/apply_metrology_model_diamond.hdev and
-
hdevelop/2D-Metrology/apply_metrology_model.hdev
show how to use several of the new operators.
-
HALCON has been extended with a set of operators to identify objects
based on sample images of the objects:
The new HDevelop example programs
-
hdevelop/Identification/Sample-Based/apply_sample_identifier.hdev
and
-
hdevelop/Applications/Object-Recognition-2D/identify_vegetables.hdev
shows how to use the new functionality. They use the new images
from the subdirectories images/food/wine_label and images/food/vegetables.
-
HALCON has been extended with the operators
to calculate global features for 3D object models.
The new example programs
-
hdevelop/3D-Object-Model/Features/smallest_bounding_box_object_model_3d.hdev
and
-
hdevelop/3D-Object-Model/Features/select_object_model_3d.hdev
demonstrate the new functionality.
-
HALCON has been extended with the ability to calibrate a
telecentric camera setup in the stereo and multiview-stereo
calibration. The following operators have been extended:
-
HALCON has been extended with the operators
which provide a new interface for the hand-eye calibration that just
takes poses as input. The hand-eye calibration can now be used with
arbitrary 3D sensors.
To show the setting of 3D poses directly, the following examples
were introduced:
-
hdevelop/Calibration/Hand-Eye/calibrate_hand_eye_stationary_3d_sensor.hdev
-
solution_guide/3d_vision/handeye_movingcam_calibration_poses.hdev
The following example programs were adapted to use the new functionality:
-
solution_guide/3d_vision/handeye_movingcam_calibration.hdev
-
solution_guide/3d_vision/handeye_stationarycam_calibration.hdev
-
solution_guide/3d_vision/handeye_stationarycam_grasp_nut.hdev
-
HALCON has been extended with the operator
that converts camera parameters and a pose into a 3x4 projection matrix.
The example program
-
hdevelop/3D-Reconstruction/Binocular-Stereo/vector_to_fundamental_matrix_distortion.hdev
shows how to use cam_par_pose_to_hom_mat3d.
-
HALCON has been extended with the operator
The operator closes all sockets that were previously opened by open_socket_accept, open_socket_connect, or socket_accept_connect.
-
HALCON has been extended with the operator
to enable the calculation of connected components in 3D object models.
A component consists of points of the 3D object model that are closer
to one other point in the component than a specified threshold in a
specified distance criterion. An example for distance criterion is the
euclidean distance between points or the angle between normals of the
points.
The new example program
-
hdevelop/3D-Object-Model/Transformations/connection_object_model_3d.hdev
demonstrates the new functionality. The example uses the file
3d_models/bmc_mini.om3.
-
HALCON has been extended with the operator
to compute the convex hull of 3D object models.
-
HALCON has been extended with the operator
to copy files.
-
HALCON has been extended with functionality to manage training data
that consists of several features. Thus, HALCON has been extended
with the following operators:
The usage of these operators can be seen in the example programs for the
selection of features for the classification:
-
hdevelop/Classification/Feature-Selection/classify_bottle_mouth.hdev
-
hdevelop/Classification/Feature-Selection/auto_select_region_features.hdev
-
HALCON has been extended with the operator
that convolves a vector field with derivatives of the Gaussian similar
to derivate_gauss for images.
-
HALCON has been extended with an operator
that computes the standard deviation over several channels.
-
HALCON has been extended with the operator
which computes the distances of points from one 3D object model to the points
or faces of another 3D object model.
The new functionality is demonstrated in the new example programs
-
hdevelop/Applications/Robot-Vision/reconstruct_3d_object_model_for_matching.hdev
and
-
hdevelop/Applications/Surface-Inspection/compare_surface_sheet_of_light.hdev
-
HALCON has been extended with the operators
find_calib_object incorporates the
functionality of the operators find_caltab and find_marks_and_pose and stores its results
directly into a calibration data model. Additionally, it stores the
extracted calibration mark contours in the model. The new operator
get_calib_data_observ_contours provides access
to these contours.
In addition to the new operators, the operators calibrate_cameras, find_caltab, and sim_caltab have been improved: The
calibration algorithm in calibrate_cameras was
extended to use the contours of the calibration marks that are now
stored in the model and it now achieves more accurate calibration
results. The new implementation of find_caltab
is invariant against image size and illumination and achieves much
better results with its default parameter adjustments. sim_caltab is now much faster, especially for large
images.
The following example programs were adapted to use the new interface
and functionality:
-
hdevelop/Applications/Measuring-3D/calibrate_sheet_of_light.hdev
-
hdevelop/Calibration/Monocular/camera_calibration.hdev
-
hdevelop/Image/Acquisition/sick-3dcamera_calibration.hdev
-
hdevelop/Calibration/Monocular/line_scan_calibration.hdev
-
hdevelop/Calibration/Self-Calibration/radial_distortion_comparison.hdev
-
hdevelop/Calibration/Self-Calibration/stationary_camera_self_calibration.hdev
-
hdevelop/Calibration/Monocular/compare_calibration_models.hdev
-
hdevelop/Calibration/Multi-View/calibrate_cameras_precision.hdev
-
hdevelop/Calibration/Multi-View/calibrate_cameras.hdev
-
solution_guide/3d_vision/two_camera_calibration.hdev
-
solution_guide/3d_vision/camera_calibration_multi_image.hdev
-
solution_guide/3d_vision/stereo_calibration.hdev
-
HALCON has been extended with the operator
It provides the functionality for gamma encoding and decoding of images.
-
HALCON has been extended with the following operators to create 3D
object models:
The new example program
-
hdevelop/3D-Object-Model/Creation/gen_primitives_object_model_3d.hdev
shows how to use several of the new operators.
The HDevelop example
-
hdevelop/3D-Matching/Shape-Based/find_shape_model_3d_recompute_score.hdev
has been adapted to use the operator gen_object_model_3d_from_points.
-
HALCON has been extended with the operators
The operator disp_object_model_3d displays 3D
object models using OpenGL. get_disp_object_model_3d_info can be used to query
the depth and the index of displayed object models.
The new HDevelop example program
-
hdevelop/Graphics/Output/disp_object_model_3d.hdev
shows how to use the new functionality.
-
HALCON has been extended with a new classifier based on k nearest
neighbors (knn) that can be trained faster than the
classifiers that are already available in HALCON. The classifier is
available for OCR and for general classification problems. Thus,
HALCON has been extended with the following operators:
The new HDevelop example programs
-
hdevelop/Classification/k-Nearest-Neighbor/nearest_neighbors.hdev,
-
hdevelop/Classification/k-Nearest-Neighbor/set_params_class_knn.hdev,
-
hdevelop/Segmentation/Classification/classify_image_class_knn.hdev,
and
-
hdevelop/OCR/k-Nearest-Neighbor/letters_knn.hdev
show how to use the new classifier.
-
HALCON has been extended with the operators
which add a reflection to a 2D transformation.
The new example program
-
hdevelop/Transformations/2D-Transformations/hom_mat2d_reflect.hdev
shows how to use hom_mat2d_reflect.
-
HALCON has been extended with the operators
-
HALCON has been extended with the operators
to interpolate scattered data. The interpolated values can be returned
in a depth image or as separate points.
The new example program
-
hdevelop/Tools/Interpolation/interpolate_scattered_data.hdev
shows how to use these operators.
-
HALCON has been extended with the operator
to enable the intersection of a 3D object model and a plane.
The new example programs
-
hdevelop/3D-Object-Model/Transformations/intersect_plane_object_model_3d.hdev
and
-
hdevelop/3D-Object-Model/Transformations/interactive_intersection.hdev
demonstrate the new functionality.
Both examples use the files
-
3d_models/glass_mug.ply and
-
3d_models/bmc_mini.om3.
-
HALCON has been extended with the operators
to compute the intersection points between line segments, lines,
circles, and XLD contours.
The new example program
-
hdevelop/Tools/Geometry/intersection_contours.hdev
shows how to use the operators.
-
HALCON has been extended with the operators
to create and remove directories.
The new example program
-
hdevelop/File/Misc/make_and_remove_dir.hdev
shows how to use the operators.
-
HALCON has been extended with the operator
to support an enhanced photometric stereo functionality. The operator
handles regions, returns the albedo and gradient field, and supports
different reconstruction methods. The use of regions and different
reconstruction methods allows a more accurate reconstruction compared
to phot_stereo. The returned albedo and
gradient field images enhance the use of photometric stereo for surface
inspection applications.
The following HALCON operator has become legacy:
-
HALCON has been extended with the operator
which averages the rotation and translation of a set of poses. The
operator also provides an iterative mode that is stable against
outlier poses.
The new HDevelop example program
-
hdevelop/Transformations/Poses/pose_average.hdev
demonstrates the new functionality.
-
HALCON has been extended with the operators
pose_compose combines the 3D poses given in
two input tuples into new ones. Each composed pose is the result of
applying two poses, one from each input tuple, in sequence.
The operator pose_invert can be used to invert each 3D pose
in the input tuple.
The new HDevelop example programs
-
hdevelop/Transformations/Poses/pose_invert.hdev
-
hdevelop/Transformations/Poses/pose_compose.hdev
show the usage of the new operators.
The following example programs were adapted to use the new functionality:
-
hdevelop/explore_halcon.hdev
-
hdevelop/Applications/Robot-Vision/locate_pipe_joints_stereo.hdev
-
hdevelop/Applications/Position-Recognition-3D/3d_matching_clamps.hdev
-
hdevelop/3D-Reconstruction/Binocular-Stereo/disparity_to_point_3d.hdev
-
hdevelop/3D-Reconstruction/Binocular-Stereo/intersect_lines_of_sight.hdev
-
hdevelop/Image/Acquisition/openni_surface_based_3d_matching.hdev
-
solution_guide/3d_vision/handeye_movingcam_calibration.hdev
-
solution_guide/3d_vision/camera_calibration_external.hdev
-
solution_guide/3d_vision/handeye_stationarycam_calibration.hdev
-
HALCON has been extended with an operator
which converts the rotation of a pose into a quaternion.
-
HALCON has been extended with the operators
to project 3D points using 3x4 projection matrices. project_point_hom_mat3d projects inhomogeneous 3D
points, while project_hom_point_hom_mat3d
projects homogeneous 3D points.
The example program
-
hdevelop/3D-Reconstruction/Binocular-Stereo/vector_to_fundamental_matrix_distortion.hdev
shows how to use project_point_hom_mat3d.
-
HALCON has been extended with the two operators
to transform 3D points with 4x4 projective 3D transformation matrices.
The new example program
-
hdevelop/3D-Reconstruction/Binocular-Stereo/vector_to_fundamental_matrix_distortion.hdev
shows how to use projective_trans_point_3d.
-
HALCON has been extended with a mechanism for protecting OCR training
data.
can be used to protect the OCR training data contained in an
unprotected training file and write it to a protected OCR training
file. The protection is done with a user password. The same password
must be used afterwards in order to use the protected OCR training
data, which can be done with the following set of operators:
The functionality of the above operators corresponds to the
functionality of the equally named operators (without the suffix _protected) with the addition that above operators
can process unprotected and protected training files. Protected OCR
training data can be used for training of multilayer perceptron (MLP)
classifiers and support vector machine (SVM) classifiers.
The new example program
-
hdevelop/OCR/Training-Files/protect_ocr_trainf.hdev
demonstrates the new functionality.
-
HALCON has been extended with the operator
to allow the integration of a gradient surface into a consistent height
field.
-
HALCON has been extended with the operator
to enable the selection of parts of 3D object models by a region from a
certain perspective.
The new example program
-
hdevelop/3D-Object-Model/Segmentation/reduce_object_model_3d_by_view.hdev
demonstrates the new functionality. The example program uses the file
3d_models/glass_mug.ply.
-
HALCON has been extended with the operators
that return several region/gray features at once. The list of features
that can be specified in the operators select_shape and select_gray is applicable for these operators,
respectively.
-
HALCON has been extended with the operators
to register 3D object models. register_object_model_3d_pair registers two 3D
object models without an initial solution. The operator register_object_model_3d_global refines the global
registration of a set of 3D object models.
The new example program
-
hdevelop/Applications/Robot-Vision/reconstruct_3d_object_model_for_matching.hdev
demonstrates the new functionality. This example uses the files in the
directory 3d_models/universal_joint_part.
-
HALCON has been extended with the operator
for rendering 3D object models into an image object using OpenGL.
-
HALCON has been extended with the operator
to reset all indices and result arrays of a sheet-of-light model.
-
HALCON has been extended with the operators
to transform 3d object models.
The new example programs
-
hdevelop/3D-Object-Model/Transformations/rigid_trans_object_model_3d.hdev
and
-
hdevelop/3D-Object-Model/Transformations/projective_trans_object_model_3d.hdev
show how to use the operators.
-
HALCON has been extended with the operator
that uniformly samples a 3D object model that consists of points or
faces. Additionally, this operator allows basic smoothing and outlier
suppression for points.
The new example programs
-
hdevelop/Applications/Robot-Vision/reconstruct_3d_object_model_for_matching.hdev,
-
hdevelop/Applications/Surface-Inspection/compare_surface_sheet_of_light.hdev,
and
-
hdevelop/3D-Object-Model/Transformations/projective_trans_object_model_3d.hdev
demonstrate the new functionality.
-
HALCON has been extended with functionality to automatically select
features for classification. For training data that consists of a set
of features, it is now possible to find the best-fitted features in
this set to classify the training data. Thus, HALCON has been extended
with the following operators for general classification problems:
Additionally, HALCON has been extended with the following operators
for OCR classification problems:
The new HDevelop example programs
-
hdevelop/Classification/Feature-Selection/classify_bottle_mouth.hdev
and
-
hdevelop/Classification/Feature-Selection/auto_select_region_features.hdev
show the usage of the operators for the general classification
problems.
The new HDevelop example program
-
hdevelop/OCR/Feature-Selection/optimize_svm_parameter.hdev
shows the usage of the operators for the OCR classification problems.
-
HALCON has been extended with the operator
to enable the selection of specific 3D object models from a tuple of 3D
object models by their global features. Examples for such global
features are volume and diameter_object.
The new example program
-
hdevelop/3D-Object-Model/Features/select_object_model_3d.hdev
demonstrates the new functionality.
-
HALCON has been extended with the operator
to enable the selection of points in a 3D object model by thresholds on
attributes.
The new example program
-
hdevelop/3D-Object-Model/Segmentation/select_points_object_model_3d.hdev
demonstrates the new functionality.
-
HALCON has been extended with the following operators for
serialization and deserialization of HALCON objects, HALCON
handles, and HALCON tuples:
-
serialize_image, deserialize_image,
-
serialize_xld, deserialize_xld,
-
serialize_region, deserialize_region,
-
serialize_object, deserialize_object,
-
serialize_quat, deserialize_quat,
-
serialize_hom_mat2d, deserialize_hom_mat2d,
-
serialize_hom_mat3d, deserialize_hom_mat3d,
-
serialize_tuple, deserialize_tuple,
-
serialize_pose, deserialize_pose,
-
serialize_cam_par, deserialize_cam_par,
-
serialize_ocv, deserialize_ocv,
-
serialize_ocr, deserialize_ocr,
-
serialize_class_knn, deserialize_class_knn,
-
serialize_ocr_class_knn, deserialize_ocr_class_knn,
-
serialize_template, deserialize_template,
-
serialize_data_code_2d_model,
deserialize_data_code_2d_model,
-
serialize_fft_optimization_data,
deserialize_fft_optimization_data,
-
serialize_class_box, deserialize_class_box,
-
serialize_ocr_class_svm, deserialize_ocr_class_svm,
-
serialize_ocr_class_mlp, deserialize_ocr_class_mlp,
-
serialize_class_gmm, deserialize_class_gmm,
-
serialize_class_svm, deserialize_class_svm,
-
serialize_class_mlp, deserialize_class_mlp,
-
serialize_variation_model, deserialize_variation_model,
-
serialize_measure, deserialize_measure,
-
serialize_metrology_model, deserialize_metrology_model,
-
serialize_matrix, deserialize_matrix,
-
serialize_shape_model, deserialize_shape_model,
-
serialize_descriptor_model,
deserialize_descriptor_model,
-
serialize_deformable_model,
deserialize_deformable_model,
-
serialize_ncc_model, deserialize_ncc_model,
-
serialize_component_model, deserialize_component_model,
-
serialize_training_components,
deserialize_training_components,
-
serialize_surface_model, deserialize_surface_model,
-
serialize_shape_model_3d, deserialize_shape_model_3d,
-
serialize_object_model_3d, deserialize_object_model_3d,
-
serialize_camera_setup_model,
deserialize_camera_setup_model,
-
serialize_calib_data, deserialize_calib_data,
-
serialize_bar_code_model, deserialize_bar_code_model,
-
serialize_class_train_data,
deserialize_class_train_data,
-
serialize_sample_identifier,
deserialize_sample_identifier
In addition, HALCON has been extended with the following
operators for handling serialized items:
Furthermore, the operator get_next_socket_data_type has been expanded
to return the type 'serialized_item'.
The new HDevelop example programs
-
hdevelop/System/Sockets/send_serialized_item.hdev and
-
hdevelop/System/Sockets/receive_serialized_item.hdev
show how to use the new functionality.
The new C++ example program serialized_item.cpp shows how to use
the new functionality using the HALCON/C++ language interface.
The new C# example project SerializedItem shows how to use the
new functionality using the HALCON/.NET language interface.
-
HALCON has been extended with the operators
for setting and modifying attributes and data of 3d object models.
The new example program
-
hdevelop/3D-Object-Model/Creation/set_object_model_3d_attrib.hdev
shows how to use the operators.
The HDevelop example program
-
hdevelop/3D-Matching/Shape-Based/find_shape_model_3d_recompute_score.hdev
has been adapted to use the operator set_object_model_3d_attrib_mod.
-
HALCON has been extended with the operator
to collect disparities in a sheet-of-light model. This operator
allows the specification of a pose per profile.
The new example program
-
hdevelop/Application/Surface-Inspection/compare_surface_sheet_of_light.hdev
demonstrates how to collect disparities in a sheet-of-light model.
This example uses the new images
-
images/sheet_of_light/metal_part_*_disparity_line*
-
HALCON has been extended with functionality to use an
uncalibrated sheet-of-light model in 3D. With the existing
operator get_sheet_of_light_result_object_model_3d
it is now possible to transform the results of a sheet-of-light
model into a 3D object model regardless whether the sheet-of-light
model is calibrated or not.
The new example program
-
hdevelop/Application/Surface-Inspection/compare_surface_sheet_of_light.hdev
demonstrates how to transform the results of an uncalibrated
sheet-of-light model into 3D object model.
This example uses the new images
-
images/sheet_of_light/metal_part_*_disparity_line*.
-
HALCON has been extended with the following operators for image arithmetic:
-
HALCON has been extended with the operators
for triangulation, smoothing, and calculation of surface normals for a
point cloud.
The new HDevelop example programs
-
hdevelop/3D-Object-Model/Transformations/triangulate_object_model_3d_greedy.hdev
and
-
hdevelop/3D-Object-Model/Transformations/triangulate_object_model_3d_implicit.hdev
show the interfaces and the functionality of the new operators.
They use the new 3D object models
-
3d_models/mvtec_bunny.om3
-
3d_models/mvtec_bunny_normals.om3
-
HALCON has been extended with the operators
for the elementwise comparison of two input tuples: If both tuples have
the same length, the corresponding elements of both tuples are compared
and the output tuple has the same length as the input
tuples. Otherwise, one of the input tuples must have length 1. In this
case, the comparison is performed for each element of the longer tuple
with the single element of the other tuple and the output tuple has the
same length as the longer input tuple.
The new example program
-
hdevelop/Tuple/Comparison/tuple_compare_elem.hdev
demonstrates the new functionality.
-
HALCON has been extended with the operator
which returns a tuple with a sequence of equidistant values.
The procedure tuple_gen_sequence.hdvp is replaced by this
operator and has been removed.
Note that programs that contain an exported version of the
procedure tuple_gen_sequence must be
adapted as follows: The generated function tuple_gen_sequence
must be removed. For C programs, all calls to tuple_gen_sequence
must be replaced by a call to T_tuple_gen_sequence.
-
HALCON has been extended with the operator
which inserts a tuple at a given index into another tuple.
HDevelop's language now provides a function insert, which provides the same
functionality as the new operator tuple_insert.
The new example program
-
hdevelop/Tuple/Manipulation/tuple_insert.hdev
shows how to use the operator.
-
HALCON has been extended with the operator
which replaces one or more elements of a tuple.
HDevelop's language now provides a function replace, which
provides the same functionality as the new operator tuple_replace.
The new example program
-
hdevelop/Tuple/Manipulation/tuple_replace.hdev
shows how to use the operator.
-
HALCON has been extended with the operator
which returns the elements of a tuple with mask value > 0.
HDevelop's language now provides an operation select_mask, which
provides the same functionality as the new operator tuple_select_mask.
The new example program
-
hdevelop/Tuple/Selection/tuple_select_mask.hdev
shows how to use the operator.
-
HALCON has been extended with the operator
to return substrings of a tuple.
The new example program
-
hdevelop/Tuple/String-Operations/tuple_substr.hdev
shows how to use the operator.
-
HALCON has been extended with a set of operators that determine the
type of tuples and of single elements of a tuple.
The new operators
return the type of a tuple or of the elements of a tuple.
The new operators
test whether a tuple or the elements of a tuple contain elements of a
given type.
The new example program
-
hdevelop/Tuple/Type/tuple_type.hdev
shows how to determine the type of tuples and of their
elements.
-
HALCON has been extended with the operator
that combines several 3D object models into one.
The example program
-
hdevelop/Applications/Robot-Vision/reconstruct_3d_object_model_for_matching.hdev
demonstrates the new functionality.
-
HALCON has been extended with an operator
that computes an anisotropic similarity transformation from at least
three point correspondences.
The new example program
-
hdevelop/Transformations/2D-Transformations/vector_to_aniso.hdev
shows how to use vector_to_aniso.
-
HALCON has been extended with operators to determine the fundamental
matrix for cameras with radial distortion. The new operator
determines the fundamental matrix and the radial distortion coefficient
from known point correspondences. In addition, the new operator
determines the point correspondences automatically. Both operators
support general camera motions as well as camera motions that are
restricted to pure translations.
The new example programs
-
hdevelop/3D-Reconstruction/Binocular-Stereo/match_fundamental_matrix_distortion_ransac_general.hdev and
-
hdevelop/3D-Reconstruction/Binocular-Stereo/match_fundamental_matrix_distortion_ransac_trans.hdev
show how to use match_fundamental_matrix_distortion_ransac. They
use the new example images
-
images/stereo/uncalib/books_l.png
-
images/stereo/uncalib/books_r.png
-
images/stereo/uncalib/pcb_l.png
-
images/stereo/uncalib/pcb_r.png
The new example program
-
hdevelop/3D-Reconstruction/Binocular-Stereo/vector_to_fundamental_matrix_distortion.hdev
shows how to use vector_to_fundamental_matrix_distortion.
-
HALCON has been extended with the operator
that computes a 3D transformation of a user-specified type (rigid,
similarity, general affine, projective) from 3D point correspondences.
The new example programs
-
hdevelop/Transformations/3D-Transformations/vector_to_hom_mat3d.hdev
and
-
hdevelop/3D-Reconstruction/Binocular-Stereo/vector_to_fundamental_matrix_distortion.hdev
show how to use vector_to_hom_mat3d.
-
HALCON has been extended with operators to determine the projective
transformation matrix for cameras with radial distortion. The new
operator
determines the projective transformation matrix and the radial distortion
coefficient from known point correspondences. In addition, the new operator
determines the point correspondences automatically. Furthermore, the operator
correspondences automatically based on a known approximation of the
projective transformation and radial distortion coefficient.
The new example program
-
hdevelop/Tools/Mosaicking/proj_match_points_distortion_ransac.hdev
shows how to use proj_match_points_distortion_ransac.
The new example program
-
hdevelop/Tools/Mosaicking/proj_match_points_distortion_ransac_guided.hdev
shows how to use proj_match_points_distortion_ransac_guided. Both
example programs use the new images
-
images/mosaic/building_01.png
-
images/mosaic/building_02.png
-
HALCON has been extended with the four operators
for writing and reading bar code models to and from a file and
for serializing and deserializing bar code models to and from a
serialized item.
The following example program was adapted to demonstrate the first
two operators:
-
hdevelop/Identification/Bar-Code/barcode_training.hdev
-
HALCON has been extended with the four operators
for writing and reading measure objects to and from a file and
for serializing and deserializing measure objects to and from a
serialized item.
Speed-Up and Enhancements
-
convol_image is now significantly faster
for separable masks (e.g., by factor 4 for a 7x7 separable mask).
convol_image now directly accepts the two
vectors of a separable mask as parameter. On Intel compatible
processors that support SSE2 under Windows and Linux convol_image is now faster by a factor of up to 5 for
byte images and by a factor of up to 3 for real images. On Intel
compatible processors that support SSE4.1 under Windows and Linux convol_image is now faster by a factor of up to 3 for
int2 and uint2 images. On Intel compatible processors that support AVX
under Windows and Linux convol_image for real
images is up to 30 percent faster compared to the SSE implementation.
-
Shape-based 3D matching has been extended with GPU accelerated hidden
surface removal. Depending on the graphics card, the operators create_shape_model_3d, project_shape_model_3d, and project_object_model_3d are now significantly
faster for models with a large number of faces. Furthermore, find_shape_model_3d also is significantly
faster if the shape model was not created with 'fast_pose_refinement'
enabled.
This new mode is the default and can be toggled with the new set_system parameter
'opengl_hidden_surface_removal_enable'. The get_system parameter
'opengl_hidden_surface_removal_available' can be used to query whether
this mode is available (this depends on the capabilities of the
graphics card).
Note that shape models created with this mode cannot be used with
earlier versions of HALCON.
-
depth_from_focus is now up to three times
faster on Intel-compatible processors that support SSE2 under Windows
and Linux. depth_from_focus can now be executed
on OpenCL devices if Selection is set to 'local'.
-
derivate_gauss is now faster by up to 50%
on Intel compatible processors that support AVX under Windows and
Linux.
-
HALCON's FFT operators (fft_generic,
fft_image, fft_image_inv, and rft_generic) are now significantly faster on
systems that support the AVX instruction set.
Note that because of the change, the file format used by write_fft_optimization_data and read_fft_optimization_data has changed and is
not backwards compatible. All FFT optimization data must be generated
anew with optimize_fft_speed or optimize_rft_speed and must be written with
write_fft_optimization_data in the new format.
-
The ECC200 Datacode reader is now faster, especially if no code is
found.
-
find_local_deformable_model is now faster
by up to 30%.
-
find_ncc_model is now faster with reduced
image domains.
-
gray_histo_range is now faster in
parallel mode if the ratio between the number of bins and the number of
pixels is large.
-
info_framegrabber, open_framegrabber, close_framegrabber and close_all_framegrabbers do not run
completely exclusive, now. Instead, they form with all remaining
image acquisition operators, i.e., with get_framegrabber_param, set_framegrabber_param, get_framegrabber_callback, set_framegrabber_callback, get_framegrabber_lut, set_framegrabber_lut, grab_image_start, grab_image, grab_image_async, grab_data, and grab_data_async an own synchronisation group in
which info_framegrabber, open_framegrabber, close_framegrabber and close_all_framegrabbers still run exclusively. I.e.,
info_framegrabber, open_framegrabber, close_framegrabber or close_all_framegrabbers block the concurrent execution
of all other operators within this group, but run in parallel with all
non-exclusive operators outside of this group.
-
median_image is now faster on 'byte'
images for circular masks of radius 1 by up to a factor of 20.
-
Reading and writing of JPEG files is now faster by a factor of up to 2.
-
tuple_sort is now faster.
-
vector_field_to_hom_mat2d is now faster
by a factor of more than 30.
-
vector_to_hom_mat2d is now faster by a
factor of more than 13.
-
vector_to_rigid is now faster by a factor
of more than 45.
-
vector_to_similarity is now faster by a
factor of more than 11.
-
zoom_image_size and zoom_image_factor are now faster if the input
image is zoomed up to twice its dimensions and Interpolation is set to
'bilinear', 'constant', or 'weighted'.
Modified Operators
-
The following operators have been extended with an
implementation for OpenCL compatible GPUs. Note that for some
operators not all parameter sets are supported. Details can be
found in the corresponding reference manual entries.
-
HALCON internally creates image and region pyramids for its matching
operators. The regions on higher levels of the ROI pyramid tended to
drift to the upper left corner of the image in the corresponding level
of the image pyramid and became too small on high levels. Therefore,
HALCON now creates “or” region pyramids for its matching
operators: A pixel in the next higher level of a region pyramid is now
set if any of the four eligible pixels in the input region is set.
-
HALCON is now able to return low level error messages when reading or
writing PNG images.
-
The chapter structure in which the HALCON operators regarding object
model 3D are arranged in the HALCON reference manual and in the
HDevelop operator menu were reorganized.
-
The data code reader now supports Aztec codes.
The new HDevelop example programs
-
hdevelop/Identification/Data-Code/aztec_default_settings.hdev and
-
hdevelop/Identification/Data-Code/aztec_optimized_settings.hdev
show how to use the new functionality. They use the new images
aztec_* from the subdirectory images/datacode/aztec/.
-
The data code reader now supports Micro QR codes.
The new HDevelop example programs
-
hdevelop/Identification/Data-Code/micro_qr_default_settings.hdev
and
-
hdevelop/Identification/Data-Code/micro_qr_optimized_settings.hdev
show how to use the new functionality. They use the new images
micro_qr_board_* from the subdirectory
images/datacode/micro_qr.
-
The HALCON bar and data code models were adapted to better support
the GS1 symbologies:
The following changes were made in the bar code model:
-
'RSS' has been renamed to 'GS1 DataBar':
RSS-14 |
→ |
GS1 DataBar Omnidir |
RSS-14 Truncated |
→ |
GS1 DataBar Truncated |
RSS-14 Stacked |
→ |
GS1 DataBar Stacked |
RSS-14 Stacked Omnidir |
→ |
GS1 DataBar Stacked Omnidir |
RSS Limited |
→ |
GS1 DataBar Limited |
RSS Expanded |
→ |
GS1 DataBar Expanded |
RSS Expanded Stacked |
→ |
GS1 DataBar Expanded Stacked |
-
introduced: GS1-128
The following changes were made in the data code model:
-
introduced: GS1 DataMatrix
-
introduced: GS1 QR Code
-
introduced: GS1 Aztec Code
The following example programs under hdevelop/Identification/Bar-Code/
have been renamed to use the new name GS1 DataBar:
rss_composite.hdev |
→ |
gs1databar_composite.hdev |
rssexpanded.hdev |
→ |
gs1databar_expanded.hdev |
rssexpanded_stacked.hdev |
→ |
gs1databar_expanded_stacked.hdev |
rsslimited.hdev |
→ |
gs1databar_limited.hdev |
rss14.hdev |
→ |
gs1databar_omnidir.hdev |
rss14_stacked.hdev |
→ |
gs1databar_stacked.hdev |
rss14_stacked_omnidir.hdev |
→ |
gs1databar_stacked_omnidir.hdev |
rss14truncated.hdev |
→ |
gs1databar_truncated.hdev |
The following example programs have been adapted to use the new name
GS1 DataBar:
-
hdevelop/Identification/Bar-Code/barcode_autodiscrimination.hdev
-
hdevelop/Identification/Bar-Code/barcode_param_num_scanlines.hdev
-
hdevelop/Identification/Bar-Code/barcode_param_stop_after_result_num.hdev
-
hdevelop/Identification/Bar-Code/composite_print_quality_isoiec15416.hdev
-
hdevelop/Identification/Data-Code/calibration_aimdpm_1_2006.hdev
The folders and the respective images under %HALCONIMAGES%/barcode/ containing
RSS codes were renamed
rss14/rss14* |
→ |
gs1databar_omnidir/gs1databar_omnidir* |
rss14_stacked/rss14* |
→ |
gs1databar_stacked/gs1databar* |
rss14_stacked_omnidir/rss14* |
→ |
gs1databar_stacked_omnidir/gs1databar* |
rss14truncated/rss14* |
→ |
gs1databar_truncated/gs1databar_* |
rss_composite/rss* |
→ |
gs1databar_composite/gs1databar* |
rssexpanded/rss* |
→ |
gs1databar_expanded/gs1databar_* |
rssexpanded_stacked/rss* |
→ |
gs1databar_expanded_stacked/gs1databar_* |
rsslimited/rss* |
→ |
gs1databar_limited/gs1databar_* |
Two example programs were introduced to demonstrate the GS1-128
bar code and the GS1 data codes, respectively:
-
hdevelop/Identification/Bar-Code/gs1_128.hdev
-
hdevelop/Identification/Data-Code/gs1_data_codes.hdev
Twelve new images containing generated GS1 symbols were introduced
-
images/barcode/gs1_128/gs1_128_generated_*.png
-
images/datacode/gs1datamatrix/gs1datamatrix_generated_*.png
-
images/datacode/gs1qrcode/gs1qrcode_generated_*.png
-
images/datacode/gs1aztec/gs1aztec_generated_*.png
-
HALCON operators now support native type arrays in tuples. This
increases processing speed significantly for long tuples and reduces
memory consumption. Using native type arrays is transparent and source
code compatible.
-
The following operators, which contain images in their parameter list,
did not supply information on whether they support multichannel images
or not. The corresponding entry in the operator's definition has been
added without changing the operators' behavior:
-
adapt_template (false),
-
anisotropic_diffusion (optional),
-
append_channel (false),
-
append_ocr_trainf (false),
-
apply_color_trans_lut (false),
-
auto_threshold (false),
-
best_match (false),
-
best_match_mg (false),
-
best_match_pre_mg (false),
-
best_match_rot (false),
-
best_match_rot_mg (false),
-
bin_threshold (false),
-
binocular_disparity (false),
-
binocular_distance (false),
-
cfa_to_rgb (false),
-
change_domain (optional),
-
char_threshold (false),
-
check_difference (false),
-
class_2dim_sup (false),
-
class_2dim_unsup (false),
-
close_edges (false),
-
close_edges_length (false),
-
coherence_enhancing_diff (optional),
-
compare_ext_variation_model (false),
-
compare_variation_model (false),
-
complex_to_real (false),
-
cooc_feature_image (false),
-
cooc_feature_matrix (false),
-
create_bg_esti (false),
-
create_template (false),
-
create_template_rot (false),
-
decode_bar_code_rectangle2 (false),
-
disp_channel (optional),
-
disp_color (true),
-
disp_image (false),
-
do_ocr_multi (false),
-
do_ocr_multi_class_mlp (false),
-
do_ocr_multi_class_svm (false),
-
do_ocr_single (false),
-
do_ocr_single_class_mlp (false),
-
do_ocr_single_class_svm (false),
-
do_ocr_word_mlp (false),
-
do_ocr_word_svm (false),
-
do_ocv_simple (false),
-
dual_threshold (false),
-
dyn_threshold (false),
-
edges_sub_pix (false),
-
entropy_gray (false),
-
estimate_al_am (false),
-
estimate_noise (false),
-
estimate_sl_al_lr (false),
-
estimate_sl_al_zc (false),
-
estimate_tilt_lr (false),
-
estimate_tilt_zc (false),
-
exhaustive_match (false),
-
exhaustive_match_mg (false),
-
expand_domain_gray (optional),
-
expand_gray (optional),
-
expand_gray_ref (optional),
-
expand_line (false),
-
fast_match (false),
-
fast_match_mg (false),
-
fast_threshold (false),
-
find_1d_bar_code (false),
-
find_1d_bar_code_region (false),
-
find_1d_bar_code_scanline (false),
-
find_2d_bar_code (false),
-
find_bar_code (false),
-
find_calib_object (false),
-
find_caltab (false),
-
find_data_code_2d (false),
-
find_marks_and_pose (false),
-
find_text (false),
-
fit_surface_first_order (false),
-
fit_surface_second_order (false),
-
full_domain (optional),
-
fuzzy_entropy (false),
-
fuzzy_perimeter (false),
-
gen_cooc_matrix (false),
-
gen_image_proto (false),
-
get_1d_bar_code (false),
-
get_1d_bar_code_scanline (false),
-
get_2d_bar_code (false),
-
get_2d_bar_code_pos (false),
-
get_domain (optional),
-
get_features_ocr_class_mlp (false),
-
get_features_ocr_class_svm (false),
-
get_grayval_contour_xld (false),
-
get_grayval_interpolated (false),
-
get_image_pointer1 (false),
-
get_image_pointer1_rect (false),
-
get_image_pointer3 (true),
-
get_image_size (optional),
-
get_image_time (optional),
-
get_image_type (optional),
-
gnuplot_plot_image (false),
-
gray_histo (false),
-
gray_histo_abs (false),
-
gray_projections (false),
-
harmonic_interpolation (optional),
-
hough_line_trans_dir (false),
-
hough_lines_dir (false),
-
hysteresis_threshold (false),
-
info_parallels_xld (false),
-
inpainting_aniso (optional),
-
inpainting_ced (optional),
-
inpainting_mcf (optional),
-
inpainting_texture (optional),
-
intensity (false),
-
isotropic_diffusion (optional),
-
label_to_region (false),
-
learn_ndim_norm (false),
-
local_max (false),
-
local_max_contours_xld (false),
-
local_min (false),
-
lowlands (false),
-
lowlands_center (false),
-
mean_curvature_flow (optional),
-
mean_n (optional),
-
measure_profile_sheet_of_light (false),
-
min_max_gray (false),
-
mod_parallels_xld (false),
-
moments_gray_plane (false),
-
noise_distribution_mean (false),
-
nonmax_suppression_amp (false),
-
nonmax_suppression_dir (false),
-
ocr_get_features (false),
-
overpaint_gray (optional),
-
overpaint_region (optional),
-
paint_gray (optional),
-
paint_region (optional),
-
paint_xld (optional),
-
plane_deviation (false),
-
plateaus (false),
-
plateaus_center (false),
-
pouring (false),
-
prepare_direct_variation_model (false),
-
rank_image (optional),
-
rank_n (optional),
-
real_to_complex (false),
-
real_to_vector_field (false),
-
rectangle1_domain (optional),
-
reduce_domain (optional),
-
region_to_mean (optional),
-
regiongrowing (false),
-
regiongrowing_mean (false),
-
regiongrowing_n (optional),
-
rgb1_to_gray (optional),
-
rgb3_to_gray (false),
-
run_bg_esti (false),
-
select_gray (false),
-
send_image (optional),
-
set_local_deformable_model_metric (false),
-
set_planar_calib_deformable_model_metric (false),
-
set_planar_uncalib_deformable_model_metric (false),
-
set_shape_model_metric (false),
-
sfs_mod_lr (false),
-
sfs_orig_lr (false),
-
sfs_pentland (false),
-
shade_height_field (false),
-
shape_histo_all (false),
-
shape_histo_point (false),
-
shock_filter (optional),
-
testd_ocr_class_box (false),
-
threshold (false),
-
train_variation_model (false),
-
traind_ocr_class_box (false),
-
traind_ocv_proj (false),
-
trans_from_rgb (false),
-
trans_to_rgb (false),
-
trimmed_mean (optional),
-
unproject_coordinates (false),
-
update_bg_esti (false),
-
vector_field_to_real (false),
-
watersheds (false),
-
watersheds_threshold (false),
-
write_image (optional),
-
write_ocr_trainf (false),
-
write_ocr_trainf_image (false), and
-
zero_crossing (false).
The following operators stated that they required a multichannel input
image although the operator worked for single channel images, too. The
according entry in the operator's definition has been adapted without
changing the operators' behavior:
Additionally, the behavior of the following operators was adapted to
optionally support multichannel images:
-
change_format,
-
convol_fft,
-
convol_gabor,
-
correlation_fft,
-
energy_gabor,
-
fft_generic,
-
fft_image,
-
fft_image_inv,
-
get_grayval,
-
phase_deg,
-
phase_rad,
-
power_byte,
-
power_ln,
-
power_real,
-
rft_generic,
-
set_grayval,
-
simulate_defocus,
-
simulate_motion,
-
wiener_filter, and
-
wiener_filter_ni.
The behavior of the following operators has been
changed to optionally support multivalue input images and the
according entry in the operator's definition has been added:
-
affine_trans_object_model_3d now supports
multiple values for the parameters ObjectModel3D and HomMat3D.
-
The operators
-
affine_trans_object_model_3d,
-
clear_all_data_code_2d_models,
-
clear_all_object_model_3d,
-
clear_all_shape_models,
-
clear_data_code_2d_model,
-
clear_object_model_3d,
-
clear_shape_model,
-
create_aniso_shape_model,
-
create_aniso_shape_model_xld,
-
create_caltab,
-
create_data_code_2d_model,
-
create_scaled_shape_model,
-
create_scaled_shape_model_xld,
-
create_shape_model,
-
create_shape_model_xld,
-
gen_caltab,
-
get_chapter_info,
-
get_keywords,
-
get_operator_info,
-
get_param_info,
-
query_operator_info,
-
read_data_code_2d_model,
-
read_object_model_3d,
-
read_object_model_3d_dxf,
-
read_shape_model,
-
search_operator,
-
set_shape_model_metric,
-
set_shape_model_origin,
-
set_shape_model_param,
-
write_cam_par,
-
write_pose, and
-
xyz_to_object_model_3d
now have the multithreading type 'reentrant' instead of 'exclusive'.
-
Multiple operators are now parallelized on channel or tuple level.
The following operators have been parallelized on channel level:
-
anisotropic_diffusion,
-
coherence_enhancing_diff,
-
convol_fft,
-
convol_gabor,
-
correlation_fft,
-
energy_gabor,
-
fft_generic,
-
fft_image,
-
fft_image_inv,
-
gray_bothat,
-
gray_closing,
-
gray_dilation,
-
gray_erosion,
-
gray_tophat,
-
harmonic_interpolation,
-
inpainting_ced,
-
inpainting_mcf,
-
phase_rad,
-
power_byte,
-
power_ln,
-
power_real,
-
shock_filter,
-
simulate_defocus,
-
simulate_motion,
-
wiener_filter,
-
change_radial_distortion_imager,
-
gray_opening,
-
inpainting_aniso,
-
isotropic_diffusion,
-
mean_curvature_flow,
-
phase_deg,
-
rft_generic, and
-
wiener_filter_ni.
The following operators have been parallelized on tuple level:
-
area_center_gray can now be executed on
OpenCL devices.
-
Operators that require specific attributes in a 3D object model 3D report
now more specific errors if a required attribute is missing. The error
9514 ("Required attribute missing in 3D object model") was replaced by
more specific errors in the following operators:
-
The correlation-based matching now finds the perfect match in the
model image independent of the selected range of rotations. For this,
create_ncc_model adapts the given range
of rotations slightly. Note that this may lead to slight changes of the
matching results with respect to earlier versions.
-
descript_class_box now returns the
results as control parameters. In previous HALCON versions, descript_class_box wrote the results to
'standard_output'.
Note that descript_class_box now returns the
results as control parameters instead of writing them to
'standard_output'. Therefore, all programs that use the operator descript_class_box must be adapted accordingly.
-
The operators
now support hexadecimal color definitions in the form '#rrggbb'.
-
The bar code reader now has a parameter to return the edges used for
scanning a symbol in a plain format that is suitable for further
processing. This is in contrast to the existing parameters
'scanlines_all' and 'scanlines_valid' that return XLD contours that can
be used mainly for visualization purposes. The single edges of the
scanlines can be retrieved after execution of the operator find_bar_code or decode_bar_code_rectangle2 with the help of the
operator get_bar_code_object with the
parameter ObjectName set to 'scanlines_all_plain' or
'scanlines_valid_plain'.
-
If the generic parameter 'stop_after_result_num' is specified in the
operator find_data_code_2d, the data code
reader will no longer return more results as specified. Until now, it
could happen with the ECC200 Data Matrix reader that more results than
specified were returned if more similar symbols were visible in the
image. If the parameter 'stop_after_result_num' is not specified, the
behavior is the same as before: for images that contain several similar
symbols that can be read, the reader may return one, more, or even all
visible symbols, depending on the symbols that can be read in the first
successful read pass.
-
The deformable matching operators
are now parallelized automatically.
-
find_marks_and_pose is now more robust
for pinhole and telecentric cameras with regard to image distortions.
-
find_ncc_model is now able to use the
same model to search in images of different width in different threads
in parallel.
-
find_ncc_model can now be executed
on OpenCL devices.
-
find_shape_model_3d has a new mode in
which the score is recomputed after the pose refinement. This ensures
that a better match always obtains a higher score, and hence results in
a more intuitive ordering of the returned matches. This mode can be
activated by setting the new generic parameter 'recompute_score' to
'true'.
The new HDevelop example program
-
hdevelop/3D-Matching/Shape-Based/find_shape_model_3d_recompute_score.hdev
shows how to use the new functionality.
Note that for efficiency reasons, some computations are performed
offline when calling create_shape_model_3d and stored in the 3D
shape model. Consequently, the 3D shape model is no longer backwards
compatible to previous HALCON versions. In some cases, 3D shape models
that have been created with previous HALCON versions can be used even if
'recompute_score' is set to 'true'. However, this does not work if
'fast_pose_refinement' was set to 'true', 'metric' was set to
'ignore_part_polarity', and 'lowest_model_level' was set to 1. In this case
the error 8913 is returned.
-
find_shape_model_3d now is more robust.
Note that this improvement in robustness in rare cases might lead to an
increased computation time of up to 20 percent.
-
find_surface_model and refine_surface_model_pose can now use the
normal vectors in the scene, if present, for a more accurate pose
refinement.
-
The default value of the parameter RelSamplingDistance in find_surface_model was too large for
typical scenes. The default value was changed to 0.05, which is
more suitable for most situations.
-
fit_primitives_object_model_3d
provides the possibility to store the extentions of the primitives
of type cylinder and plane.
-
The image type vector_field now supports different semantic types of
vector fields. The image type name is extended by a suffix describing
the semantics of the vector field: 'vector_field_relative' for vector
fields containing relative coordinates and 'vector_field_absolute' for
vector fields containing absolute coordinates. gen_image_const has been adapted to accept
these types as parameters for the parameter Type. The set_paint mode 'vector_field' has been extended
by an 'auto' mode which displays vector field images depending on their
semantic type. The operator write_image now
stores the semantic type of vector field images in TIFF files. Be aware
that these TIFF files cannot be read by HALCON versions earlier than 9.0.3
and 10.0.1, respectively. The operators get_image_pointer1, get_image_pointer3, and get_image_type now return 'vector_field_relative' or
'vector_field_absolute' instead of 'vector_field'. The operators map_image and set_local_deformable_model_metric now only accept
vector fields of the semantic type 'vector_field_absolute'. The operators
vector_field_length and
unwarp_vector_field
only accept vector fields of the semantic type 'vector_field_relative'. The
operator real_to_vector_field has been extended
by the parameter Type which is used to set the semantic type of the output
vector field. All programs using this operator must be adapted.
-
gen_rectangle2 and gen_measure_rectangle2 had default values
that produced rectangles that lie partially outside the image. Now,
these rectangles lie typically within the image area.
-
get_deformable_model_params now allows to
query the model type, and returns 'planar_uncalib', 'planar_calib', or
'local', depending on the operator with which the model was created.
-
get_mbutton, get_mbutton_sub_pix, get_mposition, and get_mposition_sub_pix now also return the state
of the modifier keys CTRL, ALT, and SHIFT.
-
get_object_model_3d_params has been
extended to return primitives of type box. Also the existence of a
quadratic residual error of a primitive can be accessed. The reference
manual entry of get_object_model_3d_params has
been adapted accordingly. The values 'primitive_type' and
'primitive_parameter' of the generic parameter 'ParamName' have been
added.
copy_object_model_3d has been extended to
copy primitives of type box. The reference manual entry of copy_object_model_3d has been adapted accordingly,
i.e., for the generic parameter 'ParamName' now also the value
'primitive_box' are described.
-
'diameter' has been renamed to 'diameter_axis_aligned_bounding_box' in
get_object_model_3d_params and select_object_model_3d. This was necessary due
to the introduction of max_diameter_object_model_3d, which might have
caused confusion since the value accessed by
'diameter_axis_aligned_bounding_box' is larger than the result of max_diameter_object_model_3d. Due to compatibility
reasons, 'diameter' will still be supported.
-
get_object_model_3d_params now supports
multiple 3D object models and has no restrictions on the combinations
of selected attributes.
-
get_object_model_3d_params has been
improved to handle extended attributes. The reference manual entry of
get_object_model_3d_params has been adapted
accordingly, i.e., for the generic parameter 'ParamName' now also the
values 'extended_attribute_names', 'has_extended_attribute', and
'num_extended_attribute' are described.
copy_object_model_3d has been extended to
copy extended attributes. The reference manual entry of copy_object_model_3d has been adapted accordingly,
i.e., for the generic parameter 'ParamName' now also the value
'extended_attribute' are described.
-
gray_projections can now be executed on
OpenCL devices for Mode = 'simple'.
-
HALCON's operators that handle 3x4 homogeneous 3D transformation
matrices (hom_mat3d_compose, hom_mat3d_invert, hom_mat3d_rotate, hom_mat3d_rotate_local, hom_mat3d_scale, hom_mat3d_scale_local, hom_mat3d_translate, hom_mat3d_translate_local) now also support 4x4
projective 3D transformation matrices.
-
lut_trans can now be executed on OpenCL
devices.
-
min_max_gray is now parallelized on tuple
level automatically.
-
object_model_3d_to_xyz now supports the
line scan camera model.
-
open_file has been extended to open files
in binary format. For this, additional selections for FileType have
been added.
-
principal_comp can now be executed on
OpenCL devices for multichannel images with up to eight channels.
-
project_object_model_3d now projects also
the 3D line attributes that may be contained in 3D object models.
-
radiometric_self_calibration is now able
to return the inverse response as a tuple of floating point numbers.
To effect this, FunctionType must be set to 'discrete_real' or
'polynomial_real'.
-
read_contour_xld_dxf now allows to
control the approximation accuracy of the DXF entity SPLINE with the
generic parameter 'min_num_points'.
-
read_image now supports reading of JPEG
XR files. write_image and dump_window now support writing of JPEG XR
files (lossless and lossy with arbitrary user-specified compression
ratios).
-
read_image and write_image now support TIFF files larger
than 4 GiB (BigTIFF files). read_image
supports BigTIFF files transparently. In write_image, Format = 'bigtiff' must be used to
indicate TIFF files that can potentially become larger than 4 GiB.
Format = 'bigtiff' supports the same compression options as Format =
'tiff'.
-
read_object_model_3d and write_object_model_3d now support 3D lines
and contours in DXF files.
-
If the operators read_object_model_3d and
(deprecated) read_object_model_3d_dxf are
called with relative filenames, these operators search the file in the
current directory and in the directories specified in the HALCON system
variable '3d_model_dir'. The system variable '3d_model_dir' contains
the directory '%HALCONEXAMPLES%/3d_models' by default, where
%HALCONEXAMPLES% is the operating system environment variable
HALCONEXAMPLES.
-
read_string can now be canceled by
pressing the Stop button in HDevelop or by calling HIOCancelDraw
(only on Windows/Mac OS X platform versions).
-
The bar code reader now has a new parameter 'upce_encodation' to set
the encodation of UPC-E results to be in UCC-12 format or in
zero-suppressed format. The parameter can be set with the operators
set_bar_code_param and set_bar_code_param_specific and read with get_bar_code_param and get_bar_code_param_specific.
-
set_calib_data_cam_param now has the
default value 'area_scan_division' instead of 'area_scan_polynomial'
for the parameter CameraType. Users should typically use the division
model for camera calibration because it works with fewer images. Only
if the accuracy of the calibration is not sufficient owing to the type
of the lens distortions, the polynomial model should be used.
-
set_grayval now sets gray values in
multichannel images and get_grayval gets
values from multichannel images. The gray values can be set to equal
values for all channels if the number of elements of Grayval is equal
to the number of elements in Row and Column or separately for each
channel if the number of elements of Grayval is equal to the number of
elements in Row and Column times the number of channels. get_grayval always returns the gray values for all
channels.
-
The mode of the shape-based matching in which models that lie partially
outside the search image can be found can be activated individually for
each shape model with the operator set_shape_model_param and the parameter
'border_shape_models'. This allows to have different behaviors for
different shape models with respect to this mode.
-
set_system has a parameter to clear
cached global memory. This new functionality is provided by set_system('global_mem_cache','cleanup').
-
set_text_model_param and get_text_model_param have been
extended with the parameter 'eliminate_border_blobs' to suppress
the detection of characters that touch the border of the domain
of the input image. Furthermore, they have been extended with
the parameter 'fragment_size_min' to specify the minium size of
fragment regions that are added to text regions if the parameter
'add_fragments' is set to 'true'. The parameter
'return_interpunctations' has been renamed to
'return_punctuation'.
-
system_call does not open a new console
window on Windows systems anymore.
-
texture_laws now supports the 7×7
Laws filters based on the 'u' filter: u = [ 1 -4 5
0 -5 4 -1 ].
-
trans_from_rgb,
trans_to_rgb, and create_color_trans_lut now support the color
spaces
-
'lms',
-
'cielchab',
-
'cieluv', and
-
'cielchuv'.
-
The parameters T1 and T2 of the following tuple operators were
renamed to show their semantics more clearly:
tuple_find
|
(::T1,T2:Indices) |
→ |
(::Tuple,ToFind:Indices) |
tuple_split
|
(::T1,T2:Substrings) |
→ |
(::String,Separator:Substrings) |
tuple_str_first_n
|
(::T1,T2:Substring) |
→ |
(::String,Position:Substring) |
tuple_str_last_n
|
(::T1,T2:Substring) |
→ |
(::String,Position:Substring) |
tuple_strchr
|
(::T1,T2:Position) |
→ |
(::String,ToFind:Position) |
tuple_strrchr
|
(::T1,T2:Position) |
→ |
(::String,ToFind:Position) |
tuple_strstr
|
(::T1,T2:Position) |
→ |
(::String,ToFind:Position) |
tuple_strrstr
|
(::T1,T2:Position) |
→ |
(::String,ToFind:Position) |
Furthermore, the parameters of the following operators were renamed:
-
The default type of the input parameter of tuple_number has been changed from real to
string.
Note that this change is not source code compatible regarding HALCON/C
because the type of the input parameter of the single value version of
the operator tuple_number has been changed from
double to string.
-
xyz_to_object_model_3d used only the
domain of the X image and ignored the domains of the Y and Z image.
The operator now intersects the three domains and uses only points in
the resulting region.
Legacy Operators
-
The following HALCON operators have been declared legacy:
Bug Fixes
-
Images with reduced domain were displayed incorrectly in certain cases.
This problem has been fixed.
-
approx_chain and approx_chain_simple did not return an error
if the input parameter 'Row' had more elements than the input parameter
'Column'. This problem has been fixed.
-
binocular_disparity and
binocular_distance sometimes returned
the error 6002 ("Memory partition on heap has been overwritten"). This could
particularly happen, when the left image had a reduced domain
and the parameter NumLevels is set to a fairly high value, e.g.,
to 5. Note that this behavior could be observed even with full
domain images when the operators execution was parallelized.
Now, such a situation is detected and an error message
indicating that the value of NumLevels is inadequate is returned
instead.
-
calibrate_cameras sometimes returned too
high error values indicating that the internal optimization did not converge
properly. This behaviour could be observed sometimes when the focal
length of the camera was larger than 0.02 m. This problem has been
fixed.
-
circularity might have returned an
inaccurate or even incorrect result for small regions. The value of
Circularity was larger than expected, which resulted in a Circularity
of 1.0 for almost every region with only a few points. This problem has
been fixed.
Note that the value of Circularity is now smaller than it was in
earlier versions of HALCON. The difference between the old and the new
value depends on the size of the region. For small regions (e.g. Area <
5000 or diameter < 100), the difference (approximately 0.02 - 0.05) is
larger than for large regions.
-
clear_object_model_3d is able to clear
multiple 3D object models by passing them as tuple. This behavior was
not properly documented and was not reflected in the language
interfaces. This problem has been fixed by changing the documentation
and the language interfaces to allow tuples of handles.
-
closing_rectangle1 and opening_rectangle1 stated that they
support real values for the parameters Width and Height although
they don't. This problem has been fixed.
Note that in HALCON/.NET and HALCON/COM, the signatures of
ClosingRectangle1 and OpeningRectangle1 have been changed to
support only the elementary data types int and Hlong. These
changes are not source code compatible.
-
connection may have returned wrong
results if the system variable neighborhood was set to 4. This happened
only if the input region was the result of a previous call of the
operator connection and if the system variable
neighborhood was set to 8 for this previous call of connection. This problem has been fixed.
-
The operators
created images of type direction with gray values that were not in the
value range that is valid for direction images. Also, a small part of
the gray values of direction images created by
were wrong. These problems have been fixed. The reference manual
entry of these operators have been adapted accordingly.
-
create_shape_model_3d and read_shape_model_3d sometimes had a memory
leak of varying size if an error occurred during the execution (e.g.,
not enough memory available). This problem has been fixed.
-
disp_obj ignored the background color in
certain cases. This problem has been fixed.
-
drag_region1 returned error #6041 (No
memory block allocated at last) when running in memory checking mode
(set_check('memory') or 'Show Memory
Usage'-Flag in HDevelop) and pressing right mouse button before left
button. This problem has been fixed.
-
The operators
crashed or lead to memory corruption if they were called with an
invalid window handle. These problems have been fixed.
-
exhaustive_match crashed in rare
cases when diagonal templates were searched in an image. This
problem has been fixed.
-
The operators
may have crashed if the system parameter 'border_shape_models' was set
to 'true' and the search image had a reduced domain. This problem has
been fixed.
-
The operators
in very rare cases crashed if 'max_deformation' with a value greater
than 0 was used and the input image had a reduced domain. This problem
has been fixed.
-
find_bar_code might have returned a wrong
UPC-E result if the bar code reader detected an invalid combination of
the number sets A and B. This problem has been fixed.
-
find_data_code_2d returned the error 3513
in rare cases. This problem has been fixed.
-
The data code print quality inspection was not robust.
Especially the grade for modulation may have changed
significantly if the image containing the symbol was cropped by
a few pixels. This problem has been fixed.
-
find_shape_model_3d did not find matches
if the parameter NumLevels was set to 1. This problem has been fixed.
-
find_shape_model_3d returned the error
3510 (Exceeding the maximum number of run lenths while automatic
expansion) if NumLevels was set to a value below the lowest available
model level that previously was set with create_shape_model_3d. This problem has been
fixed.
-
find_shape_model_3d in rare cases
returned inaccurate results if 'pose_refinement' was set to
'least_squares', 'least_squares_high', or
'least_squares_very_high'. This problem has been fixed.
-
find_text hung in rare cases. This
problem has been fixed.
-
find_text crashed in rare cases. This
problem has been fixed.
-
fit_circle_contour_xld might have
returned a circle that did not fit well for small contours if using the
Algorithm 'algebraic'. This problem has been fixed.
-
fit_line_contour_xld may have returned
negative values in Dist. This problem has been fixed.
-
The operators
returned too low amplitudes. This was especially the case for small
sigmas. This problem has been fixed.
-
gen_arbitrary_distortion_map did not
return a correct image map. Furthermore, the width and height of the
returned image map were too small by one pixel each. This problem has
been fixed.
-
gen_binocular_proj_rectification returned
incorrect projective transformations in the parameters H1 and H2: the
matrices conceptually had the row and column coordinates exchanged.
This problem has been fixed.
Existing applications that rely on the previous order of the values of
the projective transformation matrices must convert the current matrices
into the previous format by executing the following code after the call
to gen_binocular_proj_rectification:
hom_mat2d_translate_local (H1, 0.5, 0.5, H1)
hom_mat2d_translate (H1, -0.5, -0.5, H1)
H1 := subset(H1,[4,3,5,1,0,2,7,6,8])
hom_mat2d_translate_local (H, 0.5, 0.5, H2)
hom_mat2d_translate (H2, -0.5, -0.5, H2)
H2 := subset(H2,[4,3,5,1,0,2,7,6,8])
-
get_bar_code_param did not return the
parameter value 'start_stop_tolerance' but returned an error instead.
-
get_data_code_2d_results in rare cases
returned the internal error #3513 (Number of chords too big for
num_max) if the print quality of QR codes was inspected. This problem
has been fixed.
-
get_operator_info, get_param_names, and get_param_info crashed for extension packages
without help files. This problem has been fixed.
-
get_system returned the wrong value
'fixed' instead of '-fixed-' for 'default_font'. This problem has been
fixed.
-
gray_dilation_shape could crash if
a real-valued height was used with the 'rectangle' shape. The
problem appeared only if the automatic operator parallelization
was enabled. This problem has been fixed.
-
gray_range_rect no longer supports images
of type direction.
Note that programs that use images of type direction must be adapted
accordingly.
-
import_lexicon did not return when
the text file to be read was empty. This problem has been
fixed.
-
prepare_object_model_3d and segment_object_model_3d failed in rare
cases. This problem has been fixed.
-
read_calib_data caused a
small memory leak (224 Bytes). This problem has been fixed.
-
read_camera_setup_model and write_camera_setup_model did not store the
camera parameter covariances in platform-independent manner. No other
data was affected by this problem. Now, the file format was fixed to
be platform-independent. Since the file format version was changed,
this has the following implications:
read in |
|
written by |
HALCON 11.x BE | ← | HALCON 11.x ANY |
HALCON 11.x LE | ← | HALCON 11.x ANY |
HALCON 11.x BE | ← | HALCON 10.x BE |
HALCON 11.x BE | XX | HALCON 10.x LE |
HALCON 11.x LE | XX | HALCON 10.x BE |
HALCON 11.x LE | ← | HALCON 10.x LE |
HALCON 10.x BE | ← | HALCON 10.x BE |
HALCON 10.x BE | XX | HALCON 10.x LE |
HALCON 10.x LE | XX | HALCON 10.x BE |
HALCON 10.x LE | ← | HALCON 10.x LE |
HALCON 10.x ANY | XX | HALCON 11.x ANY |
with:
-
BE - on a big-endian system, e.g., Solaris
-
LE - on a little-endian system, e.g., Windows, or Linux
-
ANY - both BE and LE
-
← - "can read from"
-
XX - "cannot read from"
This problem has been fixed.
-
read_contour_xld_dxf did not allow to
control the approximation accuracy of the DXF entities CIRCLE, ARC,
ELLIPSE, and SPLINE with the parameter 'max_approx_error'. This problem
has been fixed.
-
read_string did not allow to remove
already typed digits/text by pressing the backspace key. This problem
has been fixed. On windows systems, it is now possible to remove typed
digits/text in the operator read_string by
pressing the backspace key.
-
read_tuple did not check correctly for
overflow when reading long values in a tuple. This was specially
critical when attempting to load values in a 32 bit system that were
generated by a 64 bit system. The problem has been fixed
-
receive_image and receive_region returned the error 5602
(Received data is no tuple) in HALCON XL for large regions. This
problem has been fixed.
-
receive_image and receive_region returned the error 5624
(Received data type is too large) in HALCON XL (32bit) for large
regions. This problem has been fixed.
-
reconstruct_surface_stereo returned
erroneous results in rare cases. This problem has been fixed.
-
rgb1_to_gray returned the error 9003
(Undefined gray values) when called with a singe-channel image. This
problem has been fixed. Now, rgb1_to_gray
returns a copy of the input object in such cases.
-
set_data_code_2d_param and read_data_code_2d_model did not set the symbol
size parameters symbol_cols_min, symbol_rows_min, symbol_cols_max, and
symbol_rows_max properly for the Data Matrix ECC 200 data code in case
that the model parameter 'symbol_shape' was set to 'square' (this is
set either explicitly with set_data_code_2d_param or implicitly after setting,
e.g., symbol_cols_min=symbol_rows_min and
symbol_cols_max=symbol_rows_max). Because read_data_code_2d_model was affected, too, models
written with write_data_code_2d_model
were not read in properly by read_data_code_2d_model. This problem has been fixed.
-
set_data_code_2d_param sometimes changed
the 'symbol_shape' parameter of the Data Matrix ECC 200 data code
although an error occurred during the operator run. This problem has
been fixed.
-
test_equal_obj returned true, if an image
was compared with another image that was created by appending an extra
channel to the first image. This problem has been fixed.
-
text_line_slant not always calculated
the correct angle. This problem has been fixed.
-
threshold_sub_pix might have returned an
open border contour although it should have been closed. In this very
rare case the first and last point of the returned XLD contour were not
the same. This problem has been fixed.
-
tile_images and tile_images_offset did not parallelize
correctly on channel level. This problem has been fixed and
these operators are now parallelized on internal data level
instead of on channel level.
-
The operators
did not return an error if elements of an empty tuple were accessed.
Instead, an empty tuple was returned. This was inconsistent with the
[] operation in HDevelop. This problem has been fixed and these tuple
operators now return the error 1402 (Wrong number of values of control
parameter: 2).
Note that the error handling in existing applications using tuple_first_n, tuple_last_n, tuple_select_range, and tuple_str_bit_select must be adapted accordingly.
-
tuple_greater_equal and tuple_less_equal returned 1 (true) if
one or both of the passed tuples contains a NaN ("Not a Number"
floating point numbers). According to most standards,
comparisons with NaNs should always return false. tuple_greater_equal and tuple_less_equal now return false if one of the
passed tuples contains a NaN.
-
watersheds returned basin regions that
lay outside the image domain, if the domain was not a regular
rectangle. This problem has been fixed.
-
Some sensors and methods create XYZ images of type real that
contain NaN or INF values. Such values might cause problems in
subsequent processing. xyz_to_object_model_3d now ignores such
values, and does not add them to the created 3D object model.
HALCON/C
Functionality
-
HALCON/C supports the new utility function create_tuple_type(Htuple
htuple, Hlong len, INT type) to create tuples (Htuple) of a specific
array type. The parameter type takes the values LONG_PAR, DOUBLE_PAR,
STRING_PAR, and MIXED_PAR, according to the supported tuple array
types.
Bug Fixes
-
The default type of the input parameter of tuple_number has been changed from real to
string.
Note that this change is not source code compatible regarding HALCON/C
because the type of the input parameter of the single value version of
the operator tuple_number has been changed from
double to string.
HALCON/C++
Functionality
-
The HALCON/C++ interface has been revised to support more
efficient tuple handling, and to provide an improved API that is
consistent with HALCON/.NET. Include files for the new interface
reside in the directory include/halconcpp of the HALCON
installation.
The new HALCON/C++ interface is not source code compatible to the old
HALCON/C++ interface, although a limited compatibility mode for
procedural code is available by setting the preprocessor define
HCPP_LEGACY_API. The old HALCON/C++ interface, which is now called
“legacy HALCON/C++ interface”, is still available by
linking against halconcpp10.dll or libhalconcpp10.so,
respectively. Existing applications using the HDevEngine that
corresponds to the legacy HALCON/C++ interface must also link against
the corresponding hdevenginecpp10.dll or libhdevenginecpp10.so
library. The old include directory include/cpp remains unchanged.
Extension package makefiles for HALCON/C++ must be adapted
according to the sample makefile under
extension_packages/halconuser. The HALCON compiler hcomp offers
a new option -P to generate code for the new HALCON/C++
interface, while the option -D is still supported for the legacy
HALCON/C++ interface. Also, the clean target needs to be called
explicitely to force regeneration of the C++ source code.
Bug Fixes
-
The HALCON/C++ class methods FindText, CreateMutex, and CreateEvent
could not be used under Windows if _UNICODE was defined, because the
include file windows.h redefines these symbols. This problem has been
fixed: HalconCpp.h now undefines FindText, CreateMutex, and
CreateEvent. If you want to use the Windows API functions FindText,
CreateMutex, or CreateEvent you must call FindTextA, CreateMutexA,
CreateEventA, FindTextW, CreateMutexW, or CreateEventW directly.
-
There was only one HCalibData::GetCalibData definition in HALCON/C++,
which returned only double values. Thus, data having any other type or
array data (like poses or camera parameters) could not be returned by
GetCalibData. This problem has been fixed.
HALCON/.NET
Functionality
-
The new class HErrorDef offers symbolic constants for the error codes
returned by operator exceptions, analogous to the HErrorDef.h include
for C/C++. This allows to test for specific error codes without
hard-coding their values in other languages, such as C# and VB.NET.
-
The HRegion class in HALCON/.NET now overloads the <= and >= operators for
subset testing and provides the convenience members Area, Row, and
Column.
-
HTuple now supports boolean expressions using the operators && and ||.
Furthermore, for consistency with other members of HTuple, the tuple
operators TupleEqual, TupleNotEqual, TupleGreater, TupleGreaterEqual,
TupleLess, TupleLessEqual, and TupleRegexpTest now have return values
of type HTuple instead of bool.
-
The HALCON/.NET interface now provides additional overloads of
operators where at least one of the arguments is of type HTuple or
HTupleElement.
-
The signatures of the operators
have been changed to allow the usage of arrays of data objects.
Note that this leads to source code incompatibilities in
HALCON/.NET and HALCON/COM. Some arguments or variables
receiving the return values have to be converted to arrays.
-
Members of tool classes with optional array parameters were needlessly
static even for the single API variants where the class state could be
used for the parameter. This has been changed.
Note that for the following class members, the signatures of their
single value API overload has changed:
HObjectModel3D::FitPrimitivesObjectModel3d,
HObjectModel3D::SegmentObjectModel3d, and
HObjectModel3D::PrepareObjectModel3d, as well as
HShapeModel::FindAnisoShapeModels,
HShapeModel::FindScaledShapeModels, and
HShapeModel::FindShapeModels.
The latter three are likely not relevant, as dedicated operators for
finding a single shape model exist.
-
The API for the generic XLD operators SelectXldPoint, SelectShapeXld,
ShapeTransXld, and GenGridRectificationMap has been improved to return
specific XLD classes when used on a specific XLD class (such as
HXLDCont).
Note that the API changes on the specific XLD classes are not source
code compatible. Also, existing source code may contain conversions
between HXLD and, e.g., HXLDCont that are syntactically correct but no
longer required.
-
Support for the obsolete dotnet10 architecture has been removed. The
minimum system requirement for HALCON/.NET applications is therefore
Visual Studio 2005 / .NET 2.0.
Bug Fixes
-
The methods ApproxChain and ApproxChainSimple of the class HMisc(X) in
HALCON/.NET and HALCON/COM did not allow to assign more than one value to Row and Column,
respectively. This problem has been fixed.
-
The object-oriented signature for the genParamName parameter of
HStereoModel.CreateStereoModel and the corresponding constructor was
string instead of HTuple. This made it impossible to pass either no
parameters or more than one. This problem has been fixed.
-
Indexing a tuple with a double value (e.g., t[1.0]) was not possible
for HALCON/.NET, although this is allowed in HDevelop, potentially
causing exported code to fail. This problem has been fixed.
Note that this change is not source code compatible as it
may lead to ambiguities if an index supports casting both to int and to
HTuple, e.g., when the index is itself a tuple element as in s[t[0]].
-
Copy constructors and indexer functions of HALCON objects might have
thrown the error 4051 (Image data management: object has been deleted
already in operator copy_obj) in very rare cases. The problem occurred
most likely if there was no further reference to the input object in
the program flow such that the garbage collector might have cleaned the
object too early. This problem has been fixed.
HDevEngine
Functionality
-
It is now possible to run HDevEngine applications without the
HALCON/help files because for executing HDevelop programs these files
are not directly needed. In addition, it is also possible to start
HDevelop and run HDevelop programs without the help files. However, in
HDevelop the user is warned about the missing help files and must
confirm to continue without them, because in this mode no operator
information like parameter names, chapters, short descriptions, or
semantic parameter types are available.
-
HDevEngine now allows to access the procedure documentation. With
HDevProcedure::GetInfo, HDevProcedure::GetParamInfo it is now
possible to get information of the procedure documentation, like
description, value ranges, type lists etc. Additionally, the methods
HDevProcedure::QueryInfo and HDevProcedure::QueryParamInfo are
provided to query all possible slots. HDevEngine has new options
'docu_language' and 'docu_encoding' to change the documentation language
and the actual encoding. These options can be set via the method
HDevEngine::SetEngineAttribute.
-
HDevEngine now has an option to throw an exception if an uninitialized
output parameter of a procedure is accessed via
HDevProcedureCall::GetOutputIconicParamObject or
HDevProcedureCall::GetOutputCtrlParamTuple. This option can be set via
the SetEngineAttribute method of HDevEngine using the generic parameter
"ignore_invalid_results". If this option is set
to false, an exception is also thrown if the uninitialized variable of
a program is accessed via HDevProgramCall::GetIconicVarObject or
HDevProgramCall::GetCtrlVarTuple. The default is that no exception is
thrown for not corrupting old programs.
The C++ example program hdevengine/cpp/error_handling.cpp has
been extended to show the handling of this error case.
Bug Fixes
-
The type library version of HDevEngine/COM is identical for HALCON 9
and HALCON 10. Therefore, uninstalling one of these versions will
unregister HDevEngine/COM for the other. This can be fixed by a manual
re-registration using regsvr32.
For compatibility reasons, this problem will not be fixed for
maintenance releases.
-
In HDevEngine, the short description of a procedure was not available
if the procedure was saved in .hdvp format. For these procedures the
method HDevProcedure::GetShortDescription returned an empty string. In
contrast, the short description was available if the procedure was
saved in the old .dvp format. This problem has been fixed.
-
There was a memory leak in HDevelop and HDevEngine in conjunction with
invalid or empty lines and comments. Some bytes were lost if an
invalid or empty line was loaded or if a comment was edited. This problem has been
fixed.
HALCON Codelets
Bug Fixes
-
The dimension units of the calibration plate and focal length in the
Codelet class CalibrationAssistant were different from the
Calibration Assistant in HDevelop.
Codelet |
HDevelop |
'Cell Width'[nm] |
'Cell Width'[µm] |
'Cell Height'[nm] |
'Cell Height'[µm] |
'Thickness'[µm] |
'Thickness'[mm] |
'Focal Length'[µm] |
'Focal Length'[mm] |
This inconsistency has been eliminated. Now, the dimension units
in the Codelet class CalibrationAssistant and in the Calibration
Assistant in HDevelop are identical.
-
In the Codelet class CalibrationAssistant, the default value for
the thickness was set to an incorrect value. Furthermore, the
value for the thickness of the calibration plate had the wrong
sign, which resulted in a small inaccuracy in the calculation of
the X,Y,Z coordinates of the reference pose. These problems
have been fixed.
HALCON Extension Packages
Functionality
-
The extension package mechanism has been extended by an interface for
compute devices. All functions of this interface are contained
in the new header
%HALCONROOT%/include/hlib/HComputeDeviceExt.h.
The new example extension_package/useropencl shows the usage of this
interface.
Miscellaneous
-
The makefiles for the extension package example halconuser no longer
build COM binaries using the default "all" target, which required to
always generate and specify GUIDs even though the COM interface is no
longer widely used. The explicit "com" target has been reintroduced.
Bug Fixes
-
If an extension package operator returns a user-defined error message
with an error code greater than 10000, the error
text was not correctly displayed in the HDevelop error message
box. This problem has been fixed.
-
get_operator_info, get_param_names, and get_param_info crashed for extension packages
without help files. This problem has been fixed.
Image Acquisition Interfaces
The latest information about new interface revisions and newly supported
image acquisition devices can be found on MVTec's web
server.
-
New Version of the HALCON Acquisition Integration Interface:
The HALCON Acquisition Integration Interface has been
upgraded to version 5.0 (INTERFACE_VERSION = 5). It
is not binary compatible to HALCON 10.0.x or lower. All
acquisition interfaces that are compatible with HALCON 11.0 have
a revision number 5.x, with x starting with
0.
Existing interfaces are mostly source-code compatible (see
the Image Acquisition Interface Programmer's Manual for
more information). Applications based on existing interfaces
are also mostly source-code compatible, in particular HDevelop
applications.
Please refer to the documentation of your acquisition
interface for more information, especially whether a new
revision of the corresponding device driver is required.
-
The HALCON image acquisition interface documentation now describes
all image acquisition interface operators and parameters in detail.
The documentation now shows how the parameter values can be set and
read in a separate section. The documentation lists the mandatory
HALCON parameters also if they are not implemented.
-
The image acquisition template now provides example code which shows
how to implement a threadsafe 'do_abort_grab' call. This functionality
uses the platform independent HALCON thread abstraction layer which is
provided through the new header %HALCONROOT%/include/hlib/HpThread.h.
The execution of set_framegrabber_param(...,'do_abort_grab',...)
will cancel the actual acquisition only at the desired code positions
which do not lock the cancel mutex.
Modified Image Acquisition Interfaces
Legacy Image Acquisition Interfaces
-
The following HALCON 11.0 image acquisition interfaces are now only
available in the Legacy download area:
-
SVCam-GigE (use GigEVision interface instead)
-
The following HALCON image acquisition interfaces are no longer
supported for HALCON 11.0:
-
BaumerFCAM
-
eneo
-
FALCON
-
FlashBusMX
-
mEnableIII
-
mEnableIV
-
mEnableVisualApplets
-
PXC
-
PXR
-
TAG
-
VRmAreaScan3D (use GenICamTL interface instead with A3TL)
Documentation
Installation Guide
The Installation Guide is available in a new edition. It has been
adapted to the changes in HALCON 11.0.
HDevelop User's Guide
The HDevelop User's Guide is now available in a new edition. It
has been adapted to the changes in HALCON 11.0. Amongst others, it
describes
Solution Guide I (Basics)
The Solution Guide I (Basics) is available in a new
edition. It has been adapted to the changes of HALCON 11.0.
Solution Guide II+III (Advanced)
-
The Solution Guide on 2D Data Codes is available in a
new edition. It has been adapted to the changes of HALCON 11.0.
-
The Solution Guide on 3D Vision is available in a new edition.
It has been revised as follows:
-
It now comprises links from the illustration that gives an overview
on the main methods used for 3D vision to the corresponding sections
of the solution guide.
-
It has been extended by a section that provides the user with an
extensive overview on working with 3D object models.
-
The documentation of the camera calibration has been adapted to the
change that find_calib_object replaces
the operator sequence of find_caltab,
find_marks_and_pose, and set_calib_data_observ_points.
-
Some rotation formulas did not match with the example formulas they are
linked with. This problem has been fixed. They are now formulated more
consistently.
Programmer's Guide
The Programmer's Guide is available in a new edition. It has been
adapted to the changes in HALCON 11.0. Amongst others, it
Extension Package Programmer's Manual
The Extension Package Programmer's Manual is available in a new
edition. It has been adapted to the changes in HALCON 11.0.
Reference Manual
-
The documentation of the operator angle_lx had an incorrect description of the
returned parameter angle. It stated that the angle can be interpreted
as a rotation of the passed line in counter clockwise direction onto
the horizontal axis. Now the documentation distinguish between two
cases: If the end point is above the start point (e.g. the row value is
smaller), the angle (with positive sign) can be interpreted as a
rotation of the horizontal axis onto the passed line in
counterclockwise direction. If the end point is below the start point
(e.g. the row value is greater), the angle (with negative sign) can be
interpreted as a rotation of the horizontal axis onto the passed line
in clockwise direction.
Supported Operating Systems
Windows
HALCON 11.0 has been compiled in the following Windows platform versions:
-
x86sse2-win32 platform version for Windows XP/2003/Vista/7 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/7 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 architecture.
Please note that if you want to switch to another platform version,
you must first install it, e.g., by re-inserting the DVD. Then,
you must adapt the environment variable HALCONARCH
(see the Installation Guide for more information).
Linux
HALCON 11.0 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 platfrom versions that can be
installed.
Mac OS X
HALCON 11.0 has been compiled for Mac OS X in the following platform version:
-
x64-macosx platform version for Mac OS X 10.7.
Miscellaneous
General
-
hbench now also references benchmark values for
automatic operator parallelization (aop) and parallel run mode.
-
Unnecessary variable types with bit resolution have been removed
from HIntDef.h.
-
HALCON now supports the operating system Mac OS X 10.7.
The HALCON library, the HALCON/C interface, and the HALCON/C++
interface are provided as frameworks.
The HALCON example programs in c, cpp, and
hdevengine/cpp have been adapted and extended with an
Xcode project. Furthermode, the new HALCON/C++ example in
cpp/cocoa shows how to use a HALCON window in
a Cocoa Application.
Installation
-
Under Windows 32 bit, the new dongle driver version Sentinel
7.6.4 is included. Note that the name of the installation
program has been changed to
SentinelProtectionInstaller-7.6.4.exe.
-
Under Linux 32 bit, the new USB dongle driver version
Sentinel HASP 1.16 is included.
-
The directory "images" that contains all the
example images is no longer located in the directory %HALCONROOT%,
but resides now in the directory %HALCONEXAMPLES%.
-
The new directory "3d_models" in
%HALCONEXAMPLES% contains all the 3D models used by the example
programs.
-
The installer now asks for installing a license file at the end of the
installation. This license file is then copied to %HALCONROOT%/license.
-
The installer now requests a reboot at the end of the installation if
the GigE Vision filter driver was installed.
-
The Windows installer now warns at the end of the installation process
if no PDF reader is installed. A PDF reader is needed to read parts of
the documentation.
-
The uninstaller did not restore the file associations for the file
extensions .dev and .hdev correctly for previous versions of
HDevelop. A double click on such a file correctly started HDevelop but
did not open the corresponding file. This problem has been fixed.
-
Some texts in the Windows installer were not displayed correctly for
the Japanese version. The strings were cut of where a newline was
expected.
Licensing
HALCON now uses version 11.10.1 of the FLEXnet Publisher license manager software.
Example Images
The directory "images" that contains all the
example images is no longer located in the directory %HALCONROOT%,
but resides now in the directory %HALCONEXAMPLES%.
New Example Images
For several of the new HDevelop example
programs, new images are available:
Changed Example Images
The following images have been renamed:
-
The folders and the respective images under images/barcode/
containing RSS codes were renamed to adopt the new
name GS1 DataBar
rss14/rss14* |
→ |
gs1databar_omnidir/gs1databar_omnidir* |
rss14_stacked/rss14* |
→ |
gs1databar_stacked/gs1databar* |
rss14_stacked_omnidir/rss14* |
→ |
gs1databar_stacked_omnidir/gs1databar* |
rss14truncated/rss14* |
→ |
gs1databar_truncated/gs1databar_* |
rss_composite/rss* |
→ |
gs1databar_composite/gs1databar* |
rssexpanded/rss* |
→ |
gs1databar_expanded/gs1databar_* |
rssexpanded_stacked/rss* |
→ |
gs1databar_expanded_stacked/gs1databar_* |
rsslimited/rss* |
→ |
gs1databar_limited/gs1databar_* |
The following example images have been removed:
-
images/face1.png
-
images/face2.png
-
images/face3.png
-
images/braille/embossed_01.png
-
images/braille/embossed_02.png
-
images/braille/embossed_03.png
-
images/braille/embossed_04.png
-
images/braille/embossed_05.png
-
images/braille/embossed_06.png
-
images/dff/smd_030000.png
-
images/dff/smd_030090.png
-
images/dff/smd_030180.png
-
images/dff/smd_045000.png
-
images/dff/smd_045225.png
-
images/dff/smd_045270.png
-
images/dff/smd_045315.png
-
images/dff/smd_060000.png
-
images/dff/smd_060090.png
-
images/dff/smd_060180.png
3D Models
There is a new directory “3d_models”
that contains all the 3D models used by the example programs. It can be
found in the directory %HALCONEXAMPLES%.
New 3D Models
For several of the new HDevelop example
programs, new 3d models are available:
-
bmc_mini.om3
-
glass_mug.ply
-
handeye/robot_gripper_3d_model.om3
-
handeye/robot_gripper_3d_scene_*.om3
-
joint.off
-
joint_noise.off
-
mvtec_bunny.om3
-
mvtec_bunny_normals.om3
-
scattered_data/scattered_data_xyz_*.om3
-
universal_joint_part/universal_joint_part_xyz_*.om3