| |
This document provides the release notes for MVTec HALCON 8.0.3, as released in
March 2009. HALCON 8.0.3 is primarily a maintenance release that fixes
all known bugs in HALCON 8.0.2;
besides, it provides added functionality and speed-ups.
Overview
This document contains the following information:
-
Hotfixes included in HALCON 8.0.3.1
installation package
-
Compatibility
-
Detailed Description of Changes in HALCON
8.0.3
-
Major New Features of
HALCON 8.0.2
-
Detailed Description
of Changes in HALCON 8.0.2
-
Major New Features of
HALCON 8.0.1
-
Detailed Description
of Changes in HALCON 8.0.1
-
Major New Features of HALCON 8.0
-
Detailed Description of
Changes in HALCON 8.0 (relative to HALCON 7.1.2)
-
Major New Features of
HALCON 7.1
-
Detailed Description of Changes
in HALCON 7.1.2
-
Detailed Description of Changes
in HALCON 7.1.1
-
Detailed Description
of Changes in HALCON 7.1
Unfortunately, the originally released version of HALCON 8.0.3 had
the following critical bugs regarding the binary compatibility of
the HALCON/COM and HALCON/.NET language interfaces:
-
Binary compatibility was broken for the method
HImage.WriteImage in HALCON/COM and
HALCON/.NET.
-
Binary compatibility was broken for the method
HPose.HandEyeCalibration in
HALCON/.NET. This method actually was not usable at all.
To solve these problems, a new version HALCON 8.0.3.1 is available
on the MVTec web server. If you have already installed HALCON 8.0.3, we
recommend to download this version and install it over the existing
installation. For this purpose, the Windows installer has been adapted
to replace the changed files automatically.
To check which version under Windows is currently installed please
check the file properties of the files halcon.dll and hdevelop.exe:
The file version has been adapted to 8.0.3.1 instead of 8.0.3,
and the file modification date shows "April 6, 2009".
-
Licenses
HALCON 8.0 licenses are also valid for HALCON 8.0.1,
8.0.2, and 8.0.3.
In contrast, all HALCON 7.1 licenses must be replaced or
upgraded. Please contact your local distributor.
-
HALCON Library
HALCON 8.0.3 is fully compatible with HALCON 8.0. Compared to HALCON
7.1, many extensions have been introduced. Thus, the HALCON 8.0.3
libraries are not compatible with HALCON 7.1 or earlier versions.
-
HALCON Applications
Applications (i.e., executables) developed with HALCON 8.0,
8.0.1, or 8.0.2 can be used with HALCON 8.0.3, i.e.,
HALCON 8.0.3 is binary compatible with HALCON 8.0, 8.0.1,
and 8.0.2.
The incompatibility with HALCON 7.1
or earlier versions mainly concerns the binaries, with only
few changes in the language interfaces. If you
encounter problems during recompiling your programs, please check the
detailed description of changes below and for HALCON 8.0,
8.0.1, and 8.0.2, respectively.
Please note the following source-code incompatibilities with respect
to previous HALCON 8.0.x releases:
-
The behavior of applications which extracted the low-level value of
a tool handle using the hidden member
HTool.Handle has changed.
-
Because of a revision of HALCON's hand-eye
calibration, the operator hand_eye_calibration is not source-code
compatible to previous HALCON releases. Applications that use
hand_eye_calibration must therefore be adapted to the
changed interface.
-
For zoom_image_factor and zoom_image_size the error messages have changed. Programs
that evaluate the returned error messages must be adapted
accordingly.
Please note that applications using HALCON/.NET (and HDevEngine/.NET)
have local copies of the corresponding assemblies
(halcondotnet.dll etc.). After installing HALCON 8.0.3, these
applications would therefore still use the old HALCON versions. You
must either replace the assemblies manually or re-compile the projects.
-
Image Acquisition Interfaces
If you have developed your own acquisition interfaces with HALCON 8.0,
8.0.1, or 8.0.2, you can use
them with HALCON 8.0.3 without further action. Because of the new version of the
HALCON Acquisition Integration Interface in HALCON 8.0,
acquisition interfaces developed with HALCON 7.1.x or lower are not
binary compatible, but mostly source-code compatible with 8.0.
-
Extension Packages
Extension packages developed with HALCON 8.0, 8.0.1, or
8.0.2 can be used with HALCON 8.0.3 without further
action. Extension packages developed with HALCON 7.1.x
must be re-generated.
-
ActivVisionTools
Only ActivVisionTools 3.2 can be used directly with HALCON 8.0.3. All
older ActivVisionTools versions are based on HALCON 7.1.1 or
below; by installing HALCON 8.0.3, you would thus disable such an
ActivVisionTools installation. Therefore, the setup program of
HALCON 8.0.3 checks whether there is an ActivVisionTools
installation on your computer.
-
If it detects ActivVisionTools 3.2, no further action is
required, as this version is compatible to HALCON 8.0.3.
-
If it detects ActivVisionTools 3.1 or
ActivVisionTools 3.1.1, please contact your distributor
for further information on how to run this version together
with HALCON 8.0.3.
-
In contrast, ActivVisionTools 1.0 to 3.0 cannot be
used with HALCON 8.0.3. If the setup program detects such an
ActivVisionTools version, it warns you that by continuing to
install HALCON 8.0.3 you will disable your ActivVisionTools
installation.
If you still want to use your ActivVisionTools installation
you must also keep your old HALCON installation and switch
back to it as described in the "Installation Guide".
Detailed release notes can be obtained for the following topics:
-
HDevelop
-
HALCON Library
-
HALCON/C++
-
HALCON/.NET
-
HDevEngine
-
Image Acquisition Interfaces
-
Manuals
-
Miscellaneous
-
Functionality:
-
The basic iconic operators gen_empty_obj, select_obj, concat_obj, and count_obj were treated in a special way
concerning their textual representation in the program listing, the
text file export, and selected program lines. Instead of using the
common operator function syntax 'operator(parameter list)', the
operators were displayed using the assign operation syntax:
- ObjectSelected := Objects[Index]
- ObjectsConcat := [Objects1,Objects2]
Thus, it was not obvious, if a program line resulted
from assign or from one of the iconic operators mentioned above.
Now, the textual representation of gen_empty_obj,
select_obj, concat_obj, and count_obj
corresponds to the common HALCON operator syntax.
-
If the user is going to save a program or
external procedure file, now it is checked whether in the
meantime the file was modified outside HDevelop, e.g., by another
user who edited the same file. If the file was changed, a message
box is displayed warning the user and offering the opportunity to
overwrite the external changes or going back to HDevelop for saving
the program or procedure under a different name.
-
The Open Example dialog now offers a
possibility to open the selected example program in a new HDevelop
instance.
-
HDevelop's gray value histogram now
displays a value range instead of a single peak value for int4,
int8, and real images. The feature
histogram always displays a value range instead of a single
peak value. That is, the range of input values is divided into
quantization steps to obtain a meaningful histogram, and, as a
consequence, the histogram's "peak value" may actually represent a
whole range of input values.
-
HDevelop's Operator Window now offers an
easy way to change temporarily the Return-key mode. In the
Preferences dialog under 'General Options' the user can select
whether by pressing Return in the Operator Window the edited operator
is only entered into the program or entered and executed. Now, this
mode temporarily can be toggled: pressing Ctrl-Return performs the
non-default behavior.
-
Within the Program Listing Window, it is
possible to create a new procedure by selecting some program lines
and calling the action 'Create New Procedure' from the context
menu. The Create Procedure dialog that opens offers the check box
'Replace selected program lines', which controls whether the selected
program lines are replaced by a program line calling the new
procedure or not. If the current procedure is an external one and the
new procedure is local, this opened the opportunity to insert the
call of a local procedure into an external procedure, although,
calling a local from an external procedure is not possible and,
consequentially, the inserted procedure call was marked as
invalid. Now, it is no longer possible to insert invalid code by the
Create Procedure dialog:
- If a new procedure is created by
selecting code in an external procedure, the default for the new
procedure is also external.
- If the procedure is
changed to local, the check box 'Replace selected program lines' now
is disabled and after confirming the creation of a local procedure
the selected program lines are not replaced.
-
HDevelop's Program Window now provides
an option 'Show Caller' to select and show all locations where the
currently displayed procedure is called. This option is part of the
Program Window's context menu.
-
It is now possible to copy and paste HDevelop
code between two or more instances of HDevelop.
If the copied code contains calls to local procedures, the
procedures are copied, too. If necessary, the copied procedures are
renamed.
If the copied code contains calls to external procedures, the paths
to the procedures are copied, too. However, before an external
procedure path is added during a paste action, the user is asked
whether or not he wants to add that particular path to the external
procedure paths.
-
The navigation within the Help Window
of HDevelop was improved by providing more keyboard shortcuts. In
particular, the following keyboard shortcuts are now available:
- Alt-Left - Back in history
- Alt-Right - Forward in history
- Alt-Home - Home: go to the index page of the HALCON
reference manual
- Ctrl-+ - Increase the font size
- Ctrl-- - Decrease the font size
- Ctrl-D - Add current page to bookmark
- Ctrl-P - Print current page
- Ctrl-F - Search text on the current page
- Alt-Enter - Enter operator to Operator Window
- Tab - Go to next link on page
- Shift-Tab - Go to previous link on page
- Enter - Follow the selected link.
In addition, it is now possible to select text on the Help page not
only by the mouse but also with the help of the keyboard.
-
The Contents tab card of HDevelop's Help
Window so far only presented the chapters and sections of the
HALCON Reference Manual as a hierarchical tree. The same now also
applies to the HDevelop Reference Manual and the Image Acquisition
Devices overview. Furthermore, image acquisition devices that do not
appear in the Image Acquisition Devices overview are now listed
under 'Additional Interfaces'.
-
The usability of the Image Acquisition
Assistant has been increased with various small
improvements:
- Filtering by category and visibility as well as sorting is
now also applied to read-only parameters. This can be very helpful,
in particular for the GigEVision interface.
- The communication between assistant and acquisition
interface has been optimized, which should mean faster connection and less low level errors in
case something goes wrong.
- The measured acquisition time in live mode is now more
reliable, also, it is possible to disable displaying the image,
show the speed as frames/second, and measure the speed for volatile
acquisition without copying the image (by disabling image display
or setting it to the new mode "volatile").
- For acquisition of individual images (not live
acquisition), the image acquisition now uses grab_image instead of grab_image_async.
-
HDevelop's Matching Assistant has been
improved to select different matching methods. If all four scale
factors are equal to 1.0, the matching method is 'unscaled'. If all
four scale factors are equal or the scale factors are locked, the
matching method is 'scaled'. In all other cases the matching method
is 'aniso'.
-
Bug Fixes:
-
According to the documentation, the Boolean
operation 'not' is not defined for tuples with not exactly
one element. However, if 'not' was performed on a multi-value
tuple, no error message was returned. Instead, only the first
element of the resulting tuple was set and the additional elements
were undefined. This behavior was changed. Now the operation
'not' returns an error if its parameter is not a tuple with one
element.
-
On an operating system with Asian locale
settings, some Asian characters became disrupted if they
were used within a control parameter while the HALCON
'filename_encoding' was set to 'locale' (which is the default).
This concerned all characters for which the multi-byte word that is
used for encoding that character in the locale encoding table
contains the hexadecimal code 0x5c (e.g., the Katakana letter SO
(ソ) that is encoded in Shift-JIS by 0x83 0x5c). This
problem has been fixed.
-
HDevelop crashed if on a Japanese Windows
system the operator dev_display was called with an
uninitialized iconic variable. This problem has been fixed.
-
Some special characters in file names
such as apostrophes ("'") were not correctly handled when inserting
code from HDevelop assistants or via the Read Image dialog, leading
to errors. This problem has been fixed.
-
HDevelop sometimes crashed in the Find/Replace dialog, while creating or
opening a new program. This problem has been fixed.
-
If in the Find/Replace dialog the
option 'Whole Words' was unchecked, replacing variable names or
parts of them did not work correctly within expressions: only the
occurrences of the search string in the leftmost word of the
expression were replaced. This problem has been fixed.
-
Standard HDevelop hung if a gray image
was displayed, the Feature Histogram dialog was opened, and one of
the features gray_fuzzy_entropy or gray_fuzzy_perimeter was
selected. This problem did not occur in Parallel HDevelop. This
problem has been fixed.
-
The Property dialog allows to copy the
names of the used modules to the clipboard. This did not always
work correctly. Under Windows, only in some rare cases the module
names were not copied correctly to the clipboard. In that cases the
clipboard kept its old value. Under Linux, in general, pressing the
button 'Copy to Clipboard' worked only for the first
time. Additional copy calls resulted in numerous error messages on
the console: 'QClipboard: Cannot transfer data, no data available'.
After that the clipboard was empty. This problem has been fixed.
-
After inserting a large number of
program lines from the clipboard or the
undo/redo stack, the left part of the listing that contains
the line numbers, the PC, and the insert cursor, and the right part
containing the program lines were sometimes not synchronous. The
right part was scrolled in order to display as much of the inserted
program lines as possible while the left part remained unchanged.
This problem has been fixed.
-
Copying values from the Variable Window to the
clipboard did not always work correctly. Under Windows the
copying sometimes worked and sometimes not, under Linux the copying
worked only for the first time. Additional copy calls resulted in
numerous error messages on the console: 'QClipboard: Cannot transfer
data, no data available'. This problem has been fixed.
-
HDevelop crashed if an HDevelop program was dragged from a Windows Explorer and dropped over a second Graphics Window.
This problem has been fixed.
-
If a Graphics Window and a Zoom Window were open and displayed the same
image, closing the Graphics Window and then clicking into the Zoom
Window caused HDevelop to crash. This problem has been fixed.
-
If an image was displayed in the Graphics
Window, zooming into the image by using the Zoom In function (+) and then continuously
doubling the image size by selecting and clicking the Double entry
on the Image Size menu sometimes caused the error 5174 ("negative
height of area (or 0)"). This problem has been fixed.
-
If HDevelop was run in SDI mode, opening several Zoom windows or Variable Inspect windows
caused the Program window to move to the right and down. This
problem has been fixed.
-
Parallel HDevelop hung if a draw_*
operator was performed while a Zoom
Window was open. This problem has been fixed.
-
HDevelop crashed when the set_system
parameter 'empty_region_result' was set to 'false' while an empty
region was used as the domain of an image. This problem has been
fixed.
-
On Windows systems, it was possible that HDevelop's top level windows were opened outside the
desktop and became therefore invisible. This could happen by
switching from MDI to SDI mode for windows that had been placed on a
virtual MDI area that was much bigger than the real desktop outside
the visible part. In addition, this could also happen, if the
desktop became smaller after executing HDevelop and restarting it
again, e.g., by removing a second monitor that was used to expand
the Windows desktop. This problem has been fixed. All windows are
now opened so that at least the left part of the title bar is
visible on the desktop.
-
HDevelop's histograms did not always
update when switching between smoothing and quantization mode. This
problem has been fixed.
-
If an existing comment operator was
selected for being edited in the Operator Window, and a string with
newlines was entered as the comment parameter (e.g., by pasting such
a string from the clipboard), the program became corrupted after
re-entering the comment into the program. This affected the program listing, either by printing several
program lines one upon the other or by setting the left and the
right part of the listing out of sync. In addition, if such a
program (or procedure) was saved, it could not be re-loaded owing to
a format error. As long as the program or procedure was loaded in
HDevelop, the problem could be solved just by removing the corrupt
comment. The problem did not occur if a new comment operator (with
new lines in the comment string) was entered into the program. In
that case, as intended, several comments - one for each text line -
were entered into the program. This problem has been fixed. Now it
is safe to replace an existing comment operator by several comments
at once.
-
Control variables that had been passed
to a procedure lost their semantic type. As a consequence, within
the procedure framegrabber or matrix handles that had been passed to
the procedure as control parameters could not be inspected by their
special inspection tools. This problem has been fixed.
-
HDevelop might have crashed during the creation of an external procedure, if a
password was set and immediately removed again before the Procedure
Creation dialog was closed. This problem has been fixed.
-
If the interface of a procedure was changed via the Edit Procedure Interface dialog while the
option 'Adapt Program' was checked on (default), deactivated
program lines that refer to that procedure were adapted to the new
signature, as requested, but, they were also activated. This
problem has been fixed.
-
HDevelop might have crashed after removing an external procedure path from the list of
managed directories under the following condition:
- one of the referred external procedures was modified, or
- after removing the external procedure path an undo or redo
action was performed on the removed procedure.
This problem has been fixed.
-
Setting a password to a procedure via the 'External Procedures' / 'Manage Passwords' tab
card on the 'Preferences' dialog sometimes failed. After
selecting one or several procedures in the 'Unprotected Procedures'
list, pressing the 'Move to the Right' button, and entering a
password into the 'Password' dialog that opens, the selected
procedures remained in the 'Unprotected Procedures' list and were no
longer selected. This problem has been fixed.
-
HDevelop crashed if the full text search in the Help window was searched for the character
'='. This problem has been fixed.
-
The code export of string constants with special characters
like newline (\n), tab (\t), or double quotes (") to the different Visual Basic dialects was
erroneous. Special characters were quoted according to the C/C++
standard and not as valid Visual Basic code. This problem has
been fixed.
-
HDevelop did not export external
procedures that were referenced only by unused local
procedures. As all local procedures (used and unused) are always
exported, this meant that the exported code was inconsistent if
the program contained an unreferenced local procedure that
referenced an external procedure. This problem has been fixed.
-
HDevelop crashed when trying to export empty
special comments, i.e., comment lines beginning with '#'
followed by an empty string or an arbitrary number of blanks.
This problem has been fixed.
-
C programs exported by HDevelop
caused a memory leak if a control variable was used multiple times
as output parameter in the same operator or procedure call. This
problem has been fixed.
-
C programs exported by HDevelop
crashed if the variable '_' was used as output parameter in
procedure calls. This problem has been fixed. Furthermore, the
variable '_' is no longer exported as '_' and '_t' to C and C++,
respectively. Instead, the exported code contains a new control
variable with a default name (similar to exported C# or Visual
Basic .NET code).
-
HDevelop exported constant tuple
expressions containing exactly one integer or real value
incorrectly to C. This problem has
been fixed.
-
If for statements were exported to C by HDevelop, they were
executed in the reverse order (compared to the execution in
HDevelop) if the step was negative. In rare cases, this could
have led to an erroneous behavior of the exported code. This
problem has been fixed.
-
If a for statement was exported to C by HDevelop, it did not work
correctly if the start and the end value of the statement were
equal and the step value was negative. This problem has been
fixed.
-
HDevelop exported HALCON operator calls in
procedures incorrectly to C++
if an error variable was active at the time of the operator
call and the error variable was a procedure parameter. In that
case, the exported program failed to compile. This problem has
been fixed.
-
HDevelop in rare cases exported
assignments incorrectly to C# -
HALCON/.NET. This happened if the right side of the
assignment expression was a selection with an index not of type
integer. In this case, the exported code was either syntactically
incorrect or produced a runtime error during execution. This
problem has been fixed.
-
HDevelop code exported to C# -
HALCON/COM did not run on Windows x64 systems. This problem has
been fixed.
-
HDevelop might have crashed when attempting to load settings for
the Image Acquisition Assistant from
a *.das file. This problem has been fixed.
-
The 'Auto' check boxes for acquisition parameters in the Image Acquisition Assistant did not work
in HALCON 8.0.2. This problem has been fixed. Note that HALCON
8.0 and 8.0.1 were not affected.
-
Configuring the Image Acquisition
Assistant for volatile acquisition could have caused a
crash when accessing the displayed image after closing the device
(e.g., by resizing the Graphics Window). This problem has been
fixed.
-
The creation of volatile image
objects caused a memory leak in HDevelop. Volatile image
objects can be created by some image acquisition devices or by
calling gen_image* operators that expect a pointer as one of the
input parameters. This problem has been fixed. The HDevEngine
was not affected by this problem.
-
Examples:
-
The new HDevelop example programs eneo.dev, eneo_parameters.dev,
and eneo_simple.dev in the directory
examples/hdevelop/Images/Acquisition show how to use the eneo interface for remote grabbing.
-
The new HDevelop example program
examples/hdevelop/Images/Acquisition/gigevision_crop.dev shows
how to apply the GigEVision interface
for software cropping.
-
The new HDevelop example programs pixelink.dev,
pixelink_simple.dev, pixelink_parameters.dev, and
pixelink_2cameras.dev in the directory
examples/hdevelop/Images/Acquisition show how to use the PixeLINK interface.
-
The new HDevelop example programs sonyxci2.dev,
sonyxci2_simple.dev, and sonyxci2_parameters.dev in the directory
examples/hdevelop/Images/Acquisition show how to use the SonyXCI-2 interface.
-
Speed-Up and Enhancements:
-
hand_eye_calibration no longer needs
an initial solution and the iterative optimization method has been
improved. Some input parameters are now marked as obsolete because
they are not required any more, such as the initial poses. Instead,
the operator provides the following new input parameters: 'Method'
and 'QualityType' to chose the desired type of algorithm and to
define the output quality measure, respectively. The output
parameter 'Quality' returns different types of quality measures to
assess the computed results.
Because of this change, the operator hand_eye_calibration
is not source-code-compatible to previous HALCON versions.
Applications that use hand_eye_calibration must therefore
be adapted to the changed interface. Applications that do not use
hand_eye_calibration, on the other hand, are binary
compatible to previous HALCON versions.
-
Modified Operators:
-
So far, connect_grid_points might
have returned connecting lines between grid points that consisted
of only two contour points. Such connecting lines are virtually
useless for the grid rectification and may cause undesired
results. Therefore, connect_grid_points now returns
only connecting lines with at least three contour points.
Furthermore, the reference manual entry on
connect_grid_points now explicitly mentions the fact
that high values of the input parameter MaxDist may lead to the
loss of connecting lines.
-
smooth_funct_1d_mean now
increments the value of SmoothSize if an even value is
provided. This way the center of the filter mask is always
explicitly determined. The reference manual entry has been
extended accordingly.
-
Bug Fixes:
-
The automatic parallelization of
operators on channel or domain level had a memory leak if the
operator returned with an error. This problem has been fixed.
-
Long contours were displayed with
some small gaps under Windows. The gap size depended on the
distance between the consecutive contour points. This problem
has been fixed.
-
The ECC200 data code reader in rare
cases returned different results if called multiple times. This
problem has been fixed.
-
HALCON sometimes crashed when assessing the print quality of a
'Model 1' QR Code. This problem has
been fixed.
-
Owing to some errors in the description table that stored the
data and error block sizes, the QR Code
reader failed to decode symbols of the following versions:
- version 33 (size: 149x149), error correction level: L
- version 33 (size: 149x149), error correction level: Q
- version 34 (size: 153x153), error correction level: M
- version 36 (size: 161x161), error correction level: M
Even with a perfect classification the reader returned the status
message "error correction failed" for these symbols. This problem
has been fixed.
-
area_center_gray, select_gray, and elliptic_axis_gray crashed with regions
exceeding the dimensions of the input image. This problem has
been fixed.
-
boundary crashed in rare cases with
BoundaryType ='inner_filled'. This problem has been fixed.
-
camera_calibration returned altered
values for the motion vector (vx, vy, vz) even if the motion
vector was excluded from the calibration. This problem has been
fixed.
-
change_radial_distortion_image
clipped the input region to the currently largest image
dimensions. Furthermore, this operator was not threadsafe and
may have caused crashes if executed in parallel. These problems
have been fixed.
-
check_par_hw_potential crashed in
rare cases or wrote corrupt parallelization information. The
same problem applied to the program hcheck_parallel. This
problem has been fixed.
-
class_ndim_norm crashed in rare
cases. This problem has been fixed.
-
clip_contours_xld sometimes
returned the error 3254 ("maximum number of contours exceeded")
when the input contours were divided into too many pieces. This
problem has been fixed.
-
cooc_feature_matrix and cooc_feature_image were not parallelized
correctly on tuple level. These operators returned the results
of the first thread only. This problem has been fixed.
-
create_component_model crashed in
very rare cases. This might have happened if at least one region
that was passed in ComponentRegions contained only very noisy
image edges. This problem has been fixed.
-
create_lexicon crashed if a
parameter of invalid type was passed as a word list. This
problem has been fixed.
-
create_shape_model_3d crashed in
rare cases. The crash occurred only for some combinations of
object models, camera parameters, and pose ranges. This problem
has been fixed.
-
crop_domain sometimes
crashed. This happened especially for large images. This
problem has been fixed.
-
deviation_image crashed in rare
cases if the mask dimensions exceeded the image dimensions.
This problem has been fixed.
-
disp_circle crashed if the input
radius value was negative. This problem has been fixed.
-
disp_obj hanged or crashed if the
image part to be displayed in the window was set with set_part such that it lies completely
left of the image. This problem has been fixed.
-
drag_region1, drag_region2, and drag_region3 ignored the system variable
'clip_region', i.e., the preview
displayed while dragging was clipped independent of the value of
'clip_region'. Additionally, the operators sometimes crashed.
These problems have been fixed.
-
draw_nurbs and draw_nurbs_mod returned a Weights vector
for closed curves that could not be used with gen_contour_nurbs_xld. This problem has
been fixed.
-
draw_region and draw_polygon terminated as soon as the
right mouse button was pressed. All other draw operaters (e.g.,
draw_rectangle1) did not terminate
until the right mouse button has been released. This problem
has been fixed.
-
draw_xld and draw_xld_mod had a memory leak. This
problem has been fixed.
-
edges_color_sub_pix set the
'edge_direction' attribute of the returned edge XLDs
incorrectly. This problem has been fixed.
-
edges_sub_pix does not support
processing of image tuples and therefore cannot be parallelized
on tuple level anymore.
-
eliminate_min_max sometimes
returned wrong results, especially at the border of a reduced
domain. When parallelized on domain level, erroneous pixels could
have also occured in the middle of the domain. This problem has
been fixed.
-
fill_interlace did not parallelize
correctly for Mode = 'rmodd' or Mode = 'rmeven'. In this case,
the domain of the output image was too large. This problem has
been fixed.
-
find_bar_code sometimes hung while
reading an 'RSS Expanded' symbol if the scanning failed to fetch
the elements of the last data character, crashed if any of the
image dimensions was smaller than 2 times 'element_size_max',
sometimes crashed while reading RSS-14 Stacked code symbols
positioned close to the image border, and sometimes crashed
while processing a composite 'CC-A/B' symbol that is
perspectively distorted. Additionally,
find_bar_code sometimes returned the error 3513
("Internal error: number of chords too big for num_max") with
very small images. Furthermore, it could not find bar codes if
their orientation was opposite to the specified orientation
range. These problems have been fixed.
-
find_data_code_2d in rare cases
returned the error 6041 ("System parameter for memory-allocation
inconsistent") for PDF417 codes that were not completely inside
the image. Additionally, it sometimes crashed when processing an
image of height 1. This usually happened for PDF417 symbols if
the general parameters were set to 'train'/'all'. These problems
have been fixed.
-
find_marks_and_pose returned the
error 6041 ("No memory block allocated at last") in very rare
cases. Additionally, it returned the error 3274 ("Not enough
valid points for fitting the
model") in rare cases if the parameter MinContLength was set to
a value below 5. These problems have been fixed.
-
find_shape_model returned imprecise
results if the model was generated with Optimization set to
'pregeneration' and the search was performed with SubPixel set to
'none'. Additionally, find_shape_model, all variants
thereof, find_component_model, and find_ncc_model returned the error 6002
("Memory partition on heap has been overwritten") for input
images with a very small width or height. In particular, this
was the case if the width or the height of the input image was
less than 2 on the highest pyramid level. These problems have
been fixed.
-
find_shape_model_3d sometimes
returned poses that were shifted in the image with respect to the
true pose. This happened if the radial distortion kappa that is
passed to create_shape_model_3d in
the parameter CamParam was exactly 0.0 and additionally the scale
factors sx and sy that are also passed in the parameter CamParam
significantly differed from each other. This problem has been
fixed.
-
fit_surface_first_order and fit_surface_second_order were not
parallelized correctly on tuple level. These operators returned
the results of the first thread only. This problem has been
fixed.
-
gauss_image sometimes returned
erroneous results or even crashed. This happened if the width or
height of the input image was smaller than half the size of the
filter mask. Now, if the image is too small for the chosen
filter size, the error 3035 ("Filter is too big") is returned.
-
gen_caltab and create_caltab created PostScript files
that could not be read correctly by some PostScript viewers. In
such cases, the error "DSC Error %%Pages: doesn't match number
of %%Page:" might appear. This problem has been fixed.
-
gen_contour_nurbs_xld crashed with
certain input data. This was only the case if MaxError and/or
MaxDistance were chosen too restrictive, such that these
constraints could not be fulfilled due to floating point
resolution limitations. gen_contour_nurbs_xld now
returns the new error 3291 ("Constraints (MaxError/MaxDistance)
cannot be fulfilled") in these cases.
-
gen_cooc_matrix crashed if the
input region exceeded the domain of the input image.
Additionally, it did not parallelize correctly on tuple level.
Single image matrices of the tuple result might have been
overwritten. These problems have been fixed.
-
gen_ellipse_contour_xld hung for
very large input angle values (Phi, StartPhi, and EndPhi). This
problem has been fixed.
-
gen_parallels_xld returned the
parallels in arbitrary order. If the two operators gen_polygons_xld and
gen_parallels_xld were called alternately, the order of
the resulting parallels varied. This problem has been fixed.
-
gen_random_regions returned wrong
results for region type rectangle1. If WidthMax was set to
WidthMin and/or HeightMax was set to HeightMin, the resulting
regions were one pixel too wide/high. Furthermore, the values
for the width and height were interchanged. These problems have
been fixed.
-
get_bar_code_object with argument
'scanlines_all' or 'scanlines_valid' can crash if the bar code
image on which find_bar_code was
executed last is out of the current program scope. A new bar
code model parameter 'persistence' is introduced to resolve this
problem. Now, to obtain scanlines, 'persistence' must be set to
1 before calling find_bar_code. This can be done while
creating the model with create_bar_code_model or later with
set_bar_code_param.
-
The ECC200 data code reader in rare cases could not decode the
symbol although the symbol candidate was correctly found in the
image and the modules within the symbol were correctly
classified. In such cases, the candidate status that can be
queried with get_data_code_2d_results in most cases
returned 'decoding failed: inconsistent data'. This problem has
been fixed.
-
The HALCON operator get_param_num
crashed, if the passed operator name string was longer than 80
characters. This problem has been fixed.
-
get_rectangle_pose sometimes
crashed if an open XLD contour was passed as an input
object. This problem has been fixed.
-
get_region_thickness returned
different results for shifted regions. This problem has been
fixed.
-
The parameter FileName in gnuplot_open_file erroneously was of
type filename.read. This problem has been fixed. Now, it has
the correct type filename.write.
-
gnuplot_plot_ctrl, gnuplot_plot_funct_1d, and gnuplot_plot_image crashed if they wrote
to a file that has already been closed. Now, the HALCON error
5241 ("Not a valid gnuplot output stream") is returned in these
cases.
-
gray_erosion_rect, gray_dilation_rect, gray_opening_rect, and gray_closing_rect handled even mask
dimensions incorrectly. Instead of the next larger value, the
next smaller value was used. This problem has been fixed.
-
gray_erosion_shape, gray_dilation_shape, gray_opening_shape, and gray_closing_shape had the following
problems:
- In rare cases they led to memory access
violation. This was only the case if the width of
the input image was smaller than 8 pixels and MMX processing
was enabled (which is the default).
- In rare cases they returned the error 9020 ("Internal Error:
Unknown value") with uint2 images. This was only the case if at
least one of the Parameters MaskHeight and MaskWidth was not an
integer and MMX processing was enabled with set_system('mmx_enable','true') (the
default).
- In rare cases they
returned wrong results if parallelized on domain level.
- They did not parallelize
correctly for mask sizes of type float.
- They returned undefined gray values outside the image domain
if parallelized automatically on domain level.
These problems have been fixed.
-
gray_inside returned incorrect
values using a reduced domain. This problem has been fixed.
-
illuminate returned wrong results
when parallelized on domain level for all image types except of
'byte'. Now it is not parallelized on domain level automatically
anymore.
-
inner_rectangle1 returned wrong
results for certain regions. Regions with at least two runs and
a largest inner rectangle of area 1 were affected. This problem
has been fixed.
-
inpainting_ct returned incorrect
results for uint2 images. This problem has been fixed.
-
list_files returned the error 6041
("No memory block allocated at last") if the option 'recursive'
was set and a subdirectory of the search directory was not
readable.
-
local_min and local_max crashed with images of width or
height 1 in rare cases. This problem has been fixed.
-
mean_image crashed with 'real'
images if border treatment had to be applied to the whole image
domain. Additionally, it returned wrong results for byte images
and mask sizes larger than 16 MPixels. These problems have been
fixed.
-
median_image returned wrong
results at the image border if parallelized on domain level in
rare cases. This only applied to the rectangular filter of size
1 and 2 and if MMX was enabled (which is the default). This
problem has been fixed.
-
mirror_image did not mirror the
region for Mode = 'main'. This problem has been fixed.
-
The optical_flow_mg operator
produced unpredictable results when invoked with the 'clg'
algorithm. This problem has been fixed.
-
read_fft_optimization_data returned
the error 3652 ("Optimization data was created with a different
HALCON version (Standard HALCON / Parallel HALCON)") in Parallel
HALCON if an optimization file written by Parallel HALCON was
read. This problem has been fixed.
-
read_image and read_region crashed if a monochrome
bitmap file (BMP) was read that was saved top-down, i.e., with a
negative value in the height field. This problem has been fixed.
-
read_string crashed with some fonts
set by set_font on UNIX systems.
Now the error 5177 ("Font not allowed for this operation") is
returned in these cases.
-
rectangle1_domain crashed if the
input parameter Row1 was larger than the image height and/or the
input parameter Column1 was larger than the image width. This
problem has been fixed.
-
regiongrowing in very rare cases
returned the error 3513 ("Internal error: number of chords too
big for num_max") if the domain of the input image was
reduced. This problem has been fixed.
-
regiongrowing_mean returned
incorrect results for uint2 images. In rare cases,
regiongrowing_mean even crashed. This problem has been
fixed.
-
reset_obj_db had a memory leak of
200 bytes per call. This problem has been fixed.
-
select_characters sometimes did not
return if PartitionLines was set to 'true'. This problem has
been fixed.
-
set_color was very slow if used
remote on recent X servers. The HDevelop operator dev_set_color was affected as well. This
problem has been fixed.
-
set_font overwrote the paint mode
of the window if the font string was longer than 30 characters.
This problem has been fixed.
-
If the parameter Mode of set_insert
is set to a value different from 'copy', a call of clear_window now behaves as expected and
clears the window.
-
The operators set_paint and dev_set_paint returned no or a wrong
error message if Mode had an invalid value. This problem has
been fixed by changing the error message.
-
set_tshape returned an incorrect
error description. This problem has been fixed by changing the
error description for the operators set_tshape and set_mshape.
-
set_window_attr now returns an
error if invalid colors are passed as 'background_color' or
'border_color'.
-
sobel_amp, sobel_dir, and power_byte sometimes returned incorrect
results in their first call in Parallel HALCON.
sobel_amp and sobel_dir were only affected if
'sum_sqrt' was used as FilterType.
Additionally, sobel_amp returned incorrect
results for pixels at the border of a reduced domain for the
filter types 'thin_sum_abs' and 'thin_max_abs'. When
parallelized on domain level, erroneous pixels could have also
occured in the middle of the domain. These problems have been fixed.
-
stationary_camera_self_calibration
may have not terminated if an element of NumCorrespondences was
larger than 32767. This problem has been fixed.
-
store_par_knowledge and load_par_knowledge in rare cases returned
the errors 1201 or 1401 ("wrong type/number of control parameter
1"), although the parameter was passed correctly. This problem
has been fixed.
-
test_self_intersection_xld
sometimes returned the error 6041 ("No memory block allocated at
last"). This problem has been fixed.
-
testd_ocr_class_box does not
parallelize region tuples correctly. Therefore, the ability of
tuple parallelization has been switched off for
testd_ocr_class_box.
-
text_line_orientation sometimes
crashed. This problem has been fixed.
-
thickening_seq returned the error
6041 ("No memory block allocated at last") in very rare
cases. This problem has been fixed.
-
tile_images_offset didn't work for
multi-channel images having different pixel types in the different
channels. This problem has been fixed.
-
train_model_components and create_component_model returned the error
6002 ("Memory partition on heap has been overwritten") if one of
the input regions passed in InitialComponents or
ComponentRegions, respectively, was lying completely outside the
ModelImage or if one of the input regions was an empty region.
This problem has been fixed.
-
tuple_remove had a memory leak if
all elements of a tuple were removed and thus an empty tuple was
returned. This problem has been fixed.
-
Calling tuple_str_last_n with an
invalid index in rare cases led to a crash. This problem has
been fixed.
-
tuple_string had the following
problems:
- It crashed in case the second input control
parameter contained an empty tuple.
- It did not return
an error in case the parameter contained a tuple with more than
one element, which is incorrect.
- It violated memory if a string was
converted into a string of fixed length using a format string
such as '-Ns', where N is the desired string width. The same
applied to the C++ methods HTuple::ToString(const char*) and
HTuple::ToString(const Halcon::HTuple&).
- It crashed in
rare cases if it was called with invalid patterns. The same
applied to the C++ methods HTuple::ToString(const char*) and
HTuple::ToString(const Halcon::HTuple&).
These
problems have been fixed. As a consequence,
tuple_string now only allows patterns that are conform
with the documentation of tuple_string.
-
union_straight_contours_xld
erroneously returned the error 3257 ("Regression parameters of
contours not yet entered!") even if regress_contours_xld was called before.
This happened if one of the contours consisted of only one point
with the coordinates (0,0) or if there were multiple identical
contours that consisted of only one point. This problem has been
fixed.
-
unwarp_image_vector_field did not
parallelize correctly on domain level. This problem has been
fixed.
-
write_data_code_2d_model did not
write the contrast training state of PDF417 symbologies.
Consequently, the training of the contrast was wrongly
reinitialized after reading the 2D data code model from disk.
This problem has been fixed.
-
write_image ignored the value of
the parameter FillColor if Format was set to 'ima'.
Additionally, it crashed if images with more than 8192 lines were
written in JPEG2000 format. These problems have been fixed.
-
write_variation_model wrote corrupt
data for files larger than 64 MB (Windows x86) and for files larger
than 32 MB (Windows x64). This problem has been fixed.
-
zoom_image_factor and zoom_image_size returned the wrong error
messages for wrong input control parameters. This problem has
been fixed.
Compatibility note: zoom_image_factor
and zoom_image_size returned the error 1302 ("Wrong
value of control parameter: 2") if the first input control
parameter was wrong and the error 1303 ("Wrong value of control
parameter: 3") if the second input control parameter was wrong.
Now, the errors 1301 ("Wrong value of control parameter: 1") and
1302 ("Wrong value of control parameter: 2") are returned.
Programs that evaluate the returned error messages must be
adapted accordingly.
-
Bug Fixes:
-
It was possible for HALCON/C++ to crash under low memory
conditions when the memory error occured within a class member
function and not within an actual operator call. The result was
an access violation under Windows and an unhandled std::bad_alloc
under UNIX. This problem has been fixed. In such cases,
HALCON/C++ will now raise an HException.
-
When a NULL pointer was passed to an output control parameter of
an operator via HALCON/C++, any errors which occured during the
execution of the operator were ignored. In particular, this case
occured when exporting C++ code from HDevelop for operators using
the built-in variable "_" for output. This problem has been
fixed.
-
The HALCON/C++ member function HTuple::Split() returned erroneous
results in most cases if the HTuple instance contained more than
one string element. This problem has been fixed.
-
Bug Fixes:
-
Resizing HWindowControl caused flickering output even with
"flush_graphic" disabled under Windows. This problem has been
fixed.
-
For some tool classes, the resources allocated for the first
instance of that type were never released. The memory leak was
non-growing and therefore uncritical. However, freeing other
resources such as for HSerial and HSocket was only possible via
HOperatorSet. This problem has been fixed.
Compatibility Note: This fix may change the behavior of applications
that extracted the low-level value of a tool handle using the
hidden member HTool.Handle (uninitialized tool handles are now -1,
not 0). However, the old value did not work properly anyway as 0 is
a valid and in fact common handle for many tool classes.
-
Accessing mixed tuples with inexact but castable types (such as
t[1].L when the element at index 1 actually contained an int)
caused an InvalidCastException. This problem has been fixed.
-
GetCirclePose did not work properly via HALCON/.NET. This problem
has been fixed.
-
When calling GetParallelsXLD via HALCON/.NET, the parameters Row2
and Col2 contained corrupt output values. This problem has been
fixed.
-
Bug Fixes:
-
HDevEngine failed to load a procedure and threw an exception if the
procedure contained invalid or unresolved program lines, no matter
whether the program lines were activated or not. If an activated
program line is invalid, this behavior is intended in order to
signal that the procedure will not work properly. However, if the
program line is deactivated, the procedure should be loaded and
executed normally. This problem has been fixed.
-
The method GetVariableXld of HDevEngine/.NET did not work. This
problem has been fixed.
-
HDevEngine crashed if not all HALCON help files were installed under
%HALCONROOT%\help or if HALCONROOT was set to another major version
than the used binaries. This problem has been fixed. Now, before
starting HDevEngine it is checked whether the help files are
available and whether they have the correct version. If the correct
help files cannot be found, an error message is displayed. In
addition, an exception is thrown that can be caught by an exception
handler in the HDevEngine application.
-
The latest information about new extensions and newly supported
image acquisition devices can be found on MVTec's web
server.
-
New Image Acquisition Interfaces:
-
HALCON now also includes the eneo
interface for remote grabbing from the eneo SC camera series
from Videor Technical under Windows x86.
The new HDevelop
example programs eneo.dev, eneo_parameters.dev, and
eneo_simple.dev in the directory
examples/hdevelop/Images/Acquisition show how to use this
interface.
-
HALCON now also includes the PixeLINK
interface, which supports the IEEE 1394 (FireWire), USB, and
GigE cameras from PixeLINK.
The new HDevelop example
programs pixelink.dev, pixelink_simple.dev,
pixelink_parameters.dev, and pixelink_2cameras.dev in the
directory examples/hdevelop/Images/Acquisition show how to use
this interface.
-
HALCON now also includes the SonyXCI-2
interface, which supports the new Sony XCI-SX100/C and
XCI-V100/C smart cameras. Thus, in combination with the standard
HALCON installation for Windows x86, HALCON now completely runs
on the Sony XCI-SX100/C and XCI-V100/C smart cameras, see also here.
The
new HDevelop example programs sonyxci2.dev, sonyxci2_simple.dev,
and sonyxci2_parameters.dev in the directory
examples/hdevelop/Images/Acquisition show how to use the new
interface.
-
Modified Image Acquisition Interfaces:
-
HDevelop User's Guide:
The HDevelop User's Guide is now available in a new
edition. It has been adapted to the changes of HDevelop in HALCON
8.0.3.
-
Solution Guide III-C on 3D Machine Vision:
The Solution Guide III-C on 3D Machine Vision is now available in a new
edition. In particular, the section about Robot Vision has been adapted to the
changes related to the hand-eye
calibration.
-
Reference Manual:
-
Some of the examples in the documentation of the classification
operators contained errors. These problems have been fixed.
-
The reference manual entry on check_difference described the case of
identity incorrectly. This problem has been fixed.
-
Some of the examples in the documentation of the
classification operators
contained errors. These problems have been fixed.
-
The reference manual entry on connect_grid_points now explicitly
mentions the fact that high values
of the input parameter MaxDist may lead to the loss of
connecting lines.
-
The reference manual entry on create_shape_model_3d and find_shape_model_3d has been extended. It
now emphasizes more explicitly that the pose resulting from
find_shape_model_3d refers to the original 3D object
model coordinate system that is used in the DXF file but not to
the reference coordinate system that is introduced in
find_shape_model_3d.
-
The reference manual entries on do_ocr_single_class_svm, do_ocr_multi_class_svm, and get_features_ocr_class_svm falsely stated
that only byte images were accepted. In fact, these operators
also work with uint2 images. The reference manual entries have
been adapted accordingly.
-
The reference manual entry on find_ncc_model has been extended. It now
explains why instances of the model that lie close to the image
border cannot be found in some cases. It also describes a way
how to deal with this matter.
-
get_data_code_2d_param returns 0
for QR Code models that can handle models of type 1 and 2 and not
'any' as it was described in the reference manual. The reference
manual entry has been adapted accordingly.
-
The reference manual entry on remove_noise_region has been extended. It
now explains the various possibilities for the parameter Type.
-
The reference manual entry on segment_contours_xld has been extended.
It now explains why contours with less than 6 contour points are
not segmented.
-
The reference manual entry on smooth_funct_1d_mean has been extended to
describe the new behavior when incrementing the value of SmoothSize.
-
Installation:
-
Under Windows, new versions of the dongle drivers are included:
HASP 4.110 for USB dongles and Sentinel 7.5.0 for Parallel Port dongles.
-
Licensing:
-
HALCON now uses version 11.6 of the FLEXnet Publisher license
manager software.
|
|