 |
|
|
Release Notes for HALCON 7.1.3
|
 |
This document provides the release notes for MVTec HALCON 7.1.3, as released
in August 2007. HALCON 7.1.3 is primarily a maintenance release that
fixes all known bugs in HALCON 7.1.2; besides, it provides added
functionality and speed-ups.
Overview
This document contains the following information:
- Compatibility
- Detailed Description of Changes in
HALCON 7.1.3
- 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
- Detailed
Description of Changes in HALCON 7.0.2
- Detailed
Description of Changes in HALCON 7.0.1
- Detailed
Description of Changes in HALCON 7.0
Compatibility
Licenses
HALCON 7.1 licenses are also valid for HALCON 7.1.3. In contrast,
all HALCON 7.0 licenses must be replaced or upgraded. Please
contact your local distributor.
HALCON Library
HALCON 7.1.3 is fully compatible with HALCON 7.1, 7.1.1, and
7.1.2. Compared to HALCON 7.0.x, many extensions have
been introduced. Thus, the HALCON 7.1.3 libraries are
not compatible with HALCON 7.0 or earlier versions.
HDevEngine
HALCON Applications
Applications (i.e., executables) developed with HALCON
7.1, 7.1.1, or 7.1.2 can be used with HALCON 7.1.3, i.e., HALCON 7.1.3
is binary compatible with HALCON 7.1, 7.1.1, and 7.1.2.
C or C++ programs developed with HALCON 7.0.x must be
re-compiled. The incompatibility with HALCON 7.0 or earlier
versions mainly concerns the binaries, with only few changes in
the operators' signatures. If you encounter problems during
recompiling your programs, please check the detailed description
of changes below and look up the signatures of the concerned
operators in the reference manual.
Frame Grabber Interfaces
If you developed your own frame grabber interfaces with
HALCON 7.1, 7.1.1, or 7.1.2, you can use them with HALCON 7.1.3 without
further action. Frame grabber interfaces developed with
HALCON 7.0.x and 6.1.x are binary compatible with HALCON
7.1.3, interfaces developed with older versions must be
re-generated.
Extension Packages
Extension packages developed with HALCON 7.1, 7.1.1, or 7.1.2 can
be used with HALCON 7.1.3 without further action. Extension
packages developed with HALCON 7.0.x must be re-generated.
ActivVisionTools
Only ActivVisionTools 3.1 and 3.1.1 can be used directly
with HALCON 7.1.3 because they are based on (a modified
version of) HALCON 7.1 or 7.1.1, respectively. All older
ActivVisionTools versions are based on HALCON 7.0.1 or
below; by installing HALCON 7.1.3, you would thus
disable such an ActivVisionTools installation.
Therefore, the setup program of HALCON 7.1.3 checks
whether there is an ActivVisionTools installation on
your computer.
-
If it detects ActivVisionTools 3.1 or 3.1.1, no
further action is required, as this version is
compatible to HALCON 7.1.3.
-
If it detects ActivVisionTools 3.0, please
contact your distributor for further information on how to run
this version together with HALCON 7.1.3.
-
In contrast, ActivVisionTools 1.0
to 2.2 cannot be used with HALCON 7.1.3. If the setup
program detects such an ActivVisionTools version, it warns
you that by continuing to install HALCON 7.1.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 Description of Changes in HALCON
7.1.3
Detailed release notes can be obtained for the following topics:
- HDevelop
- HALCON Library
- HDevEngine
- Frame Grabber
Interfaces
- Miscellaneous
Functionality
-
HDevelop's Used Modules dialog now contains a
checkbox allowing to specify whether to check for
used modules in all local and external procedures,
or only in local and external procedures used by the
current program.
Bug Fixes
-
HDevelop sometimes exported procedures incorrectly
to C# and VB.NET in case a procedure contained local
iconic variables and the HALCON error handling
mechanism was deactivated (via
dev_set_check('~give_error'))
before returning from the procedure.
This problem has been fixed.
-
Erroneous execution of the operator dev_open_window left
HDevelop in an inconsistent state if the error handling had
been turned of via dev_set_check('~give_error').
This problem has been fixed.
-
If a Qt application using OpenGL was executed before HDevelop
was started, HDevelop freezed on Linux/UNIX systems while it
tried to open a graphics window. Only applications linked to
specific 3.x versions of Qt caused this behavior. This
problem has been fixed.
Manual
Examples
-
The following new example programs in
examples/hdevelop/Image/Framegrabber show how to use the new acquisition interface iPORT: iport.dev,
iport_parameters.dev, iport_simple.dev
Speed-up and Enhancements
-
open_window now also works
on systems with multiple screens. The column
parameter can be greater than the horizontal
resolution of the virtual display and the row
parameter can be greater than the vertical resolution
of the virtual display, so it is no longer limited to
the resolution of the primary display monitor.
-
rotate_image is now faster for Phi =
90 and Phi = 270. The speedup depends on the processor and on
the image size. It is larger for larger images. For example,
for images of size 640x480, rotate_image is faster by up to a
factor of 2. For 4096x3072 images, rotate_image is faster by
up to a factor of 16.5.
Modified Operators
-
deviation_image now can get
parallelized automatically on domain level.
-
draw_circle(_mod) and draw_ellipse(_mod) now return
floating point values. Furthermore, they now display the
circle/ellipse subpixel-accurate.
-
fit_circle_contour_xld,
fit_ellipse_contour_xld, dist_ellipse_contour_xld,
dist_ellipse_contour_points_xld, disp_xld, and
segment_contours_xld
run non-exclusively now.
-
send_tuple and
receive_tuple now
allow tuples with more than 100000 elements. Furthermore,
send_tuple and receive_tuple now are able to handle strings of
more than 1024 characters.
Bug Fixes
-
add_noise_distribution did not add
pepper noise if noise with a salt-and-pepper distribution with
less than 0.2 percent of pepper should be added. In addition,
images of type int2 were clipped to the range
[0,255]. Furthermore, the operator added noise defined by a
Gaussian distribution incorrectly: The gray value of some
pixels was increased too much. These
problems have been fixed.
-
approx_chain_simple
sometimes crashed if the point coordinates contained
the same point multiple times consecutively. This
problem has been fixed.
-
area_center_xld,
do_ocr_multi,
do_ocr_muti_class_mlp,
and get_obj_class
caused a memory leak when being parallelized automatically.
This problem has been fixed.
-
bit_and, bit_or, and
bit_xor
did not parallelize correctly on domain level if the
domains of both input images differed. This problem has
been fixed.
-
class_ndim_norm crashed if
Radius contained more than 1024 elements (the maximum
number of clusters). It now returns an error message
instead.
-
depth_from_focus sometimes
crashed. This problem has been fixed.
-
disp_cross and gen_cross_contours_xld
interpreted angles inconsistently to the rest of HALCON, i.e.,
in these two operators angles were used mathematically
negative (i.e., clockwise) instead of mathematically
positive (i.e., counterclockwise). Furthermore, disp_cross sometimes displayed
crosses incompletely or not at all. This was the case,
when the cross to be displayed lied outside the limits
of the biggest image that was used so far. These
problems have been fixed.
-
deviation_image
sometimes returned erroneous results for images with
reduced domains. This problem has been fixed.
-
disp_distribution did not
work correctly under Windows. No output was performed
in the graphics window after executing the
operator. The distribution became only visible after
causing a manual flush by, e.g., minimizing and
subsequently maximizing the graphics window. This
problem has been fixed.
-
disp_xld might caused a
hang up of the program if an error was provoked. This
problem has been fixed.
-
draw_* and get_mposition now recognize if
the HALCON window is occluded by other top-level windows
under Linux/UNIX systems. In particular, the
draw_* operators no longer modify the primitive being
drawn if the user clicks into another top-level window
that occludes the HALCON window.
Furthermore, the elements drawn with the operators
draw_* now do not flicker during the drawing
process.
-
draw_polygon and draw_region now display the
polygon sides in one color, even if dev_set_colored is
used.
-
draw_rectangle1,
draw_rectangle1_mod,
draw_rectangle2, and
draw_rectangle2_mod
did not display the pick points correctly when a window part
was set. This problem has been fixed.
-
draw_xld and draw_xld_mod treated the
visualization and the sensitive part of the pick points
incorrectly when a window part was set.
Furthermore, they did not rotate and scale the
drawn contour respectively to its midpoint but
respectively to a point translated by (-0.5, -0.5)
from the midpoint. Finally, the operators had a memory
leak. These problems have been fixed.
-
dump_window and
dump_window_image now return the correct result
if the display is set to a mode with more than 8 bit (256
colors). The image is no longer shifted to the
right by one pixel.
-
expand_line performed wrong tests on
the input contol parameter Coordinate for the 'row'
mode. This might have caused an unexpected error 1301
("Wrong value of control parameter 1"). Furthermore,
the operator returned wrong results in the 'column' mode.
The returned regions might have missed a pixel at the border.
These problems have been fixed.
-
find_1d_bar_code now ignores failed
scanlines and proceeds with the processing of the remaining
scanlines instead of returning an error.
-
find_data_code_2d crashed in
rare cases for ECC200 data codes if the generic
parameter 'module_grid' was set to 'variable' (default
in the mode 'enhanced_recognition') or if the
parameter 'persistence' was set to a value greater
than 0.
Furthermore, in rare cases with ECC200 candidates
close to the image border, the operator crashed or
returned an error code.
Finally, the operator
failed to decode some larger model 1 QR codes. This
concerned all combinations of symbol versions and error
correction levels where the number of remaining
code words is greater than 0. In detail, the following
codes were affected (version-error correction levels):
7-H, 8-H, 10-QH, 11-H, 12-H, 13-LMQH, 14-LMH.
These problems have been fixed.
-
find_marks_and_pose
sometimes returned a memory error. Furthermore, it
might have crashed when using line scan cameras
together with calibration plates with orientation
mark. Theses problems have been fixed.
-
gen_measure_arc in rare
cases crashed for Interpolation = 'bicubic' if the arc
contained a part for which the central circular arc
lies outside the image, but a part of the
corresponding projection annulus lies inside the
image. This problem has been fixed.
-
gen_region_polygon_filled returned a
slightly too small region. This occurred only in rare cases and
if the input polygon was not closed. This problem has been
fixed.
-
get_region_index now cannot
be parallelized on tuple level automatically as it
returned wrong results.
-
Under Linux/UNIX, get_tposition
returned the wrong values: the values of the
parameters Row and Column were interchanged. This
problem has been fixed.
-
gray_histo_abs sometimes
returned erroneous results for int2 images. This
problem has been fixed.
-
gray_inside did not converge
in rare cases if the input image contained at least
one pixel with a gray value of 255. This problem has
been fixed.
-
gray_projections returned
fewer than the expected number of vertical projections
for the mode 'rectangle', depending on the orientation
of the smallest surrounding rectangle of the input
region. If the surrounding rectangle had an
orientation of 0 or 90 degrees, the number of vertical
projections equaled the length of the rectangle, as
one would have expected. However, the more the
orientation neared 45 or 135 degrees, respectively,
the fewer vertical projections were returned. This
problem has been fixed.
-
hough_lines and hough_circles sometimes
returned the error 3513 ("Internal error: number of
chords too big for num_max"). This problem has been fixed.
-
lines_gauss in very rare
cases returned inconsistent results. This problem has
been fixed.
-
Parallel HALCON might have
hung or crashed if an automatically parallelized
operator failed with an error. This problem has
been fixed.
-
When running Standard HALCON in mutliple threads in parallel, a
thread might have hung up in very rare cases. This problem has
been fixed.
-
partition_dynamic did not use the
full specified search range for the determination of the
position at which the region is partitioned. This problem has
been fixed.
-
partition_rectangle returned
regions that were one pixel too wide and one pixel too
high. This problem has been fixed.
-
points_foerstner returned
erroneous results for reduced domains and Smoothing =
'mean', i.e., the results differed from the results in
the relevant region obtained with the full
domain. This problem has been fixed.
-
points_harris had a memory
leak. This problem has been fixed.
-
read_image returned the error 6041
("No memory block allocated at last") when reading binary PBM
files. Furthermore, read_image read in ASCII PBM files
incorrectly. The images were inverted. Finally, the operator
returned the error 6001 ("Not enough memory available") if a
very large PNG file with a region was read. These problems have
been fixed.
-
read_region returned
inverted regions for 1-bit TIFF images.
This problem has been fixed.
-
regiongrowing_mean returned
the error 3513 ("Internal error: number of chords too
big for num_max") for images with very small
domains. Furthermore, in rare cases it returned the error
6002 ("Memory partition on heap has been overwritten").
These problems have been fixed.
-
rgb1_to_gray and
rgb3_to_gray now use the luminance formula
given in ITU-R BT.470-6 (Conventional Television
Systems). The formula is G = 0.299*R + 0.587*G +
0.114*B. The factor of 0.144 for B used in previous
HALCON versions was erroneous.
-
rotate_image with 90, 180, and 270
degrees now returns results that are consistent with other
angles. In particular, the full image is now transformed for
these angles instead of the reduced domain only.
-
segment_contours_xld crashed
if the number of output contours exceeded 50000. This
problem has been fixed.
-
set_window_extents could
crash under Linux/UNIX for very large window sizes. This
problem has been fixed.
-
shape_trans_xld in rare
cases did not eliminate collinear points in the convex
hull if 'convex' was chosen for the input control
parameter Type. This problem has been fixed.
-
sub_image sometimes returned
wrong results for INT2 images. This problem has been
fixed.
-
union_collinear_contours_xld,
union_collinear_contours_ext_xld,
and union_adjacent_contours_xld might
have crashed or returned the error message "Memory
allocation failed" if they were called on an input
object with a large number of contours. This problem
has been fixed.
-
var_threshold did not work
correctly with negative values for the parameter
StdDevScale. This problem has been fixed.
-
HALCON windows of window type
'pixmap' sometimes displayed images incompletely, i.e.,
the rightmost column of the image was not displayed at
all. This problem has been fixed.
-
zoom_image_factor, zoom_image_size,
affine_trans_image, and affine_trans_image_size
could cause erroneous results if the input image
contained gray values close to the maximum gray value
and the image was zoomed with very small factors.
Furthermore, zoom_image_factor and zoom_image_size
returned wrong results for int2 and uint2 images if
Interpolation was set to 'none'. This happened if the
image was scaled in vertical direction with a scaling
factor exceeding 1.0. In this case, the resulting
scaled image contained wrong gray values in the right
half of the image.
These problems have been fixed.
Manual
-
The "Installation Guide" is available in a new
edition. Is has been adapted to the currently
supported Windows versions. Furthermore, the chapter
"Troubleshooting" has been extended.
-
The documentation of add_noise_distribution has been
extended. It now describes the meaning of the values in the
tuple that defines the distribution.
-
The documentation of distance_rr_min has been improved. In
particular, it is now described what results from the fact
that the computation is based solely on the regions'
contours.
-
The documentation of find_shape_model and its derivates now
explicitly describes the semantics of the output parameters
Row and Column.
-
The documentation of sfs_mod_lr,
sfs_orig_lr, sfs_pentland, and
phot_stereo stated the
obsolete restriction that the input images must be square and
that their dimensions must be powers of two.
Bug Fixes
-
In the C++ interface of the HDevEngine the parameter
names of the method HDevOperatorImpl::DevSetPart
were wrong. The parameters were named as row, col,
width, height, however, their semantics is row1,
col1, row2, col2. The parameter names were renamed
according to their semantics.
- The latest information about new extensions and newly supported
image acquisition devices can be found on MVTec's
web server.
New Frame Grabber Interfaces
-
HALCON's BitFlow
interface for the R64/R64e frame grabber boards
from BitFlow is now also available for Windows x64.
-
HALCON's IDS
interface for the FALCON/EAGLE frame grabber boards
from IDS is now also available for Linux x86.
-
HALCON now also includes the iPORT interface to
support cameras that are connected through the iPORT IP Engine
from Pleora.
-
HALCON's MatrixVisionAcquire
interface for the mvBlueFOX, mvDELTA, mvGAMMA, mvSIGMA, and
mvTITAN acquisition devices from MATRIX Vision
is now also available for Linux x86.
Modified Frame Grabber Interfaces
Licensing
-
HALCON now uses version 10.8.5 of the FLEXlm license manager
software.
The underlying dongle drivers have also been updated to version
4.102 (HASP for USB dongles) and 7.3.2 (Sentinel for Parallel
Port dongles) to ensure maximum compatibility with current
Windows operating systems.
|