 |
|
|
Release Notes for HALCON 6.1.2
|
 |
This document provides the release notes for MVTec HALCON 6.1.2, as released
in June 2003. HALCON 6.1.2 is primarily a maintenance release that
fixes all known bugs in HALCON 6.1.1; besides, it provides added
functionality and speedups.
Overview
This document contains the following information:
- Compatibility
- Major New Features of HALCON 6.1.2
- Detailed Description of Changes in HALCON
6.1.2
- Major New Features of
HALCON 6.1
- Detailed Description of Changes in
HALCON 6.1.1
- Detailed Description of
Changes in HALCON 6.1
- Major New Features of
HALCON 6.0
- Detailed Description of Changes in
HALCON 6.0.3
- Detailed Description of Changes in
HALCON 6.0.2
- Detailed Description of Changes in
HALCON 6.0.1
- Detailed Description of
Changes in HALCON 6.0
Licenses
HALCON 6.1 licenses are also valid for HALCON 6.1.2. In contrast,
all HALCON 6.0 licenses must be replaced or upgraded. Please
contact your local distributor.
HALCON Library
HALCON 6.1.2 is source code compatible with HALCON 6.1 and 6.1.1,
i.e., programs written for HALCON 6.1[.1] can be compiled and linked
with HALCON 6.1.2. Compared to HALCON 6.0.x, however, many extensions
have been introduced. Thus, the HALCON 6.1.2 libraries are not
compatible with HALCON 6.0.x or earlier versions.
HALCON Applications
Applications (i.e., executables) developed with HALCON 6.1 or 6.1.1
can be used with HALCON 6.1.2, with one exception: Programs using
shape-based matching must in most cases be re-compiled and linked,
because of the changes in the operators for
model creation. This means that HALCON 6.1.2 is not completely
binary compatible with HALCON 6.1 or 6.1.1.
C or C++ programs developed with HALCON 6.0.x must be re-compiled.
The incompatibility with HALCON 6.0.x 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 6.1 or
6.1.1, you can use them with HALCON 6.1.2 without further
action. Frame grabber interfaces developed with HALCON 6.0.x must be
re-generated. Note that you might also need to adapt the code of
your interface due to changes in the HALCON Frame Grabber Integration
Interface. Please refer to the Frame Grabber Integration Programmer's
Manual for more information.
Extension Packages
Extension packages developed with HALCON 6.1 or 6.1.1 can be used
with HALCON 6.1.2 without further action. Extension packages
developed with HALCON 6.0.x must be re-generated.
ActivVisionTools
In contrast to ActivVisionTools 2.1 and 2.2, which are based on
HALCON 6.1 (or HALCON 6.1.1), the ActivVisionTools versions 1.0 to
2.0 are all based on HALCON 6.0 (or HALCON 6.0.1); thus, by
installing HALCON 6.1.2 you would disable such an ActivVisionTools
installation. Therefore, the setup program of HALCON 6.1.2 checks
whether there is an ActivVisionTools installation on your computer.
-
If it detects ActivVisionTools 2.1 or 2.2, no further
action is required, as these versions are compatible to HALCON
6.1.2.
-
If it detects ActivVisionTools 2.0, it offers to replace
the corresponding OCX with a new one, which is compatible to
HALCON 6.1.2. Then, you can use ActivVisionTools 2.0 without
any further action.
Typically, you will choose this option. If not, you can replace
the OCX manually as described in the manual 'Getting Started With
HALCON'.
-
In contrast to ActivVisionTools 2.x, ActivVisionTools
1.x cannot be used together with HALCON 6.1.2. If the
setup program of HALCON 6.1.2 detects such an ActivVisionTools
version, it warns that by continuing to install HALCON
6.1.2 you will disable your ActivVisionTools installation.
If you still want to use your ActivVisionTools installation, you
must also keep your old HALCON 6.0.x installation and switch back
to it as described in the manual 'Getting Started With
HALCON'. Note that if you only want to evaluate HALCON 6.1.2, you
can minimize the switching effort by installing only the demo
version.
Improved Shape-Based Matching
HALCON's powerful shape-based matching (the operators as well as
HMatchIt) has been further extended:
When creating a model, a new hysteresis threshold mechanism
facilitates the selection of significant model parts. A second
extension allows to exclude small, unimportant model
components. Furthermore, the automatic selection of angle and scale
step widths has been improved significantly.
Faster Fill-Up Operations
Detailed release notes can be obtained for the following topics:
- HDevelop
- HALCON Library
- Frame Grabber Interfaces
- Extension Package Interface
- HMatchIt
- Miscellaneous
Functionality:
-
HDevelop no longer scrolls the program window to the position of
the program counter after deletion or cutting of a program line.
-
In case the option Experienced Programmer is activated, HDevelop
now also lists input variables with special semtype in the lists of
comboboxes for input control parameters in the operator
window. Furthermore, it lists iconic variables of all semtypes in
the lists of comboboxes for input iconic parameters in the operator
window.
Bug Fixes:
-
HDevelop exported endfor statements incorrectly to C. This problem
has been fixed.
-
HDevelop sometimes erroneously exported the simple version of an
operator to C. This problem has been fixed.
-
HDevelop didn't reset loops exited by the break statement. This
problem has been fixed.
-
HDevelop now observes the selected color scheme under X. This
change is particularly beneficial under KDE 3.0, where the KDE
control center sets many, but not all, Motif-relevant resources
when changing the color scheme, and hence HDevelop's background
colors sometimes could appear inconsistent.
-
HDevelop's gray histogram displayed an incorrect peak value for
int2/int4 images. This problem has been fixed.
-
In HDevelop's program window the insert cursor was not set
correctly after pasting program lines using the window menu. This
problem has been fixed.
-
HDevelop crashed if one of the histogram windows was opened for the
first time and no graphics window was open. This problem has been
fixed.
-
HDevelop crashed when trying to open a HDevelop graphics window
that was too large. This problem has been fixed.
Speedup and Enhancements:
-
The operators fill_up and connect_and_holes are now up to 4 times
faster. The operator fill_up_shape is now up to 10 times faster.
The speedup depends on the size of the region and the number of
holes.
-
The operator lines_facet is now faster by up to 10%.
-
The operators create_shape_model, create_scaled_shape_model, and
inspect_shape_model now support a hysteresis threshold mechanism,
which enables better selection of salient model points. This mode
is selected by specifying two values for the parameter Contrast.
These values detemine the lower and upper hysteresis threshold,
respectively. Furthermore, the operators now support a mechanism
to remove small model components based on their size. The
threshold for the minimum size of the components is specified as
the third element in a tuple for the parameter Contrast.
The operator create_shape_model now reduces the number of pyramid
levels automatically if the number of pyramid levels chosen by the
user leads to a model with too few model points. The error 8510
(Number of shape model points too small) is now only be returned if
the number of model points on the lowest pyramid level is too
small.
Furthermore, the operators create_scaled_shape_model and
create_shape_model now use a more sophisticated algorithm to
determine the angle and scale step widths automatically. Previous
HALCON versions estimated step widths for some models that were so
high that a relatively small value for the minimum score had to be
used in order to find the model with find_scaled_shape_model and
find_shape_model. This happened, for example, if the model
contained many one pixel wide linear structures. The new algorithm
chooses a smaller angle or scale step width automatically in these
cases.
The documentation has been adapted accordingly.
Modified Operators:
-
There is no longer a restriction to 10,000 input points for the
operators gen_region_polygon and gen_region_polygon_filled. Now,
polygons with up to 200,000 points can be created. Similarly, the
number of input points for the operator gen_region_points and of
input runs for the operator gen_region_runs is no longer restricted
to 50,000. The number of input lines for the operator
gen_region_lines is no longer restricted to 100,000.
-
The operator convert_image_type was not able to convert int2 or
uint2 images into int1 images. The missing functionality has been
implemented.
-
The operator skeleton returned incorrect skeletons for regions with
one-pixel holes. The one-pixel holes were filled before computing
the skeleton. This is no longer done. Programs that rely on the
old behavior should call fill_up_shape with Feature = 'area' and
Min = Max = 1 before calling skeleton.
Bug Fixes:
-
The operator median_image treated image borders incorrectly for
MaskType 'rectangle' and Radius 2. This problem has been fixed.
-
The operator fill_up suppressed all components of the input region
that were only one pixel in size if the input region consisted of
several connected components and had more than three runlengths
altogether. This problem has been fixed.
-
In some cases, the operator gen_contour_region_xld with the mode
set to 'border' created contours with end points that were not
equal although they should be, and although the contour was marked
as closed. This problem has been fixed.
-
The operator get_region_polygon returned for some input regions a
wrong polygon approximation. This happened especially with small
or detailed input regions and a small tolerance parameter. These
problems has been fixed.
-
In some rare cases the operator gen_contour_polygon_xld returned a
wrong polygon approximation. This problem has been fixed.
-
The operators gen_region_polygon, gen_region_polygon_filled, and
gen_region_line now are able to handle empty input tuples.
-
On regions with many of runlengths the operator fill_up sometimes
crashed or returned the error message 3502: Run length row with
negative length. This problem has been fixed.
-
On input regions with a very long contour (more than 100,000
contour points) the operator get_region_contour crashed or did not
return the whole contour of the input region. This problem has
been fixed.
-
The operator do_ocv_simple sometimes did not free all internal
temporary memory. This problem has been fixed.
-
The operator find_shape_model and all variants thereof crashed in
rare cases. This problem has been fixed.
-
The operator gen_contours_skeleton_xld no longer causes a memory
leak if Mode is set to 'generalize1' or 'generalize2'.
-
The operator paint_xld did not clip the input contour if it was
extending out of the image. This problem has been fixed.
-
The operator affine_trans_image produced incorrect results if the
image was scaled by a factor of more than 200 and if the
interpolation was set to 'constant' or 'weigthed'. The same
problem occured in zoom_image_size and zoom_image_factor. These
problems have been fixed.
-
The operator create_template sometimes crashed if Optimize =
'sort'. This happened if the domain of the template image was too
close to the image border. This problem has been fixed.
-
The operator find_shape_model sometimes returned the error 3510
(Exceeding the maximum number of run lengths while automatical
expansion) for small images. This problem only occured if
find_shape_model was used in compiled programs, i.e., it did not
occur in HDevelop. The problem has been fixed.
-
The operators find_shape_models and find_scaled_shape_models
returned the error 6002 (Memory partition on heap has been
overwritten) if the model id tuple was empty. They now return the
correct error 1401 (Wrong number of values of control parameter: 1)
instead.
-
The operators segment_contours_xld and fit_ellipse_contour_xld
caused a memory leak under parallel HALCON. This problem has been
fixed.
-
The operators find_1d_bar_code and get_1d_bar_code no longer crash
if num_scanlines is set to an even value.
-
The operator vector_to_rigid sometimes crashed. This problem has
been fixed.
-
The operator decode_2d_bar_code crashed on DataMatrix symbols
greater than 48x48 modules. This problem has been fixed.
-
The operator lines_facet sometimes returned different results for
input images of type byte and type real, although they contained
exactly identical data. This problem occured with masks of size 9
and 11. The problem has been fixed.
-
The functions write_string and new_line now observe the system
parameter 'flush_graphic'.
-
Parallel HALCON generated the error 6002 (Memory partition on heap
has been overwritten) in edges_sub_pix. This problem has been
fixed.
-
The operator hom_mat2d_to_affine_par returned incorrect results if
the matrix contained a slant around the x axis or the matrix
contained a negative slant. This problem has been fixed.
-
The operator regiongrowing_n only used the first channel of a
multi-channel image. In particular, either empty regions or full
regions were returned as output when using the metrics 'variance',
'correlation', 'variance-diff', 'variance-ratio', 'mean-abs-diff',
'mean-abs-ratio', 'max-abs-diff', 'max-abs-ratio', 'min-abs-diff',
'min-abs-ratio', and 'plane'. This problem has been fixed.
-
The operator dyn_threshold returned with an error in case
the system parameter 'alloctmp_single_block' was set 'true'. This
problem has been fixed.
-
The operator complement returned with an error in case the system
parameter 'alloctmp_single_block' was set 'true'. This problem has
been fixed.
-
The operator rotate_image sometimes did not free all temporary
memory. This problem has been fixed.
-
The operator gen_region_polygon_filled sometimes has unsymmetric
raster behavior in x-y direction. This problem has been fixed.
-
There was a memory leak in operator gen_ellipse_contour_xld. This
problem has been fixed.
-
The operator shape_trans_xld had a memory leak. This problem has
been fixed.
-
Entering the continuous mode with set_framegrabber_param(FGHandle,
'continuous_mode', 'enable') sometimes failed if at the same time
an asynchronous grab was executed. This problem has been
fixed.
-
In continuous grabbing mode, sporadically old images were provided
by grab_image_async() with the IDS and DFG-LC frame grabber
interfaces. These problems have been fixed.
-
The HALCON operator crop_domain crashed for input images with empty
domain. It now returns the error 3111 (At least one input object
has an empty region) in this case. The operator crop_domain_rel
now also returns this error if the domain is empty.
-
When zooming (with set_part and disp_image) into a huge image, the
runtime error 3510 was sometimes caused. This problem has been
fixed.
-
The operator union_straight_contours_xld sometimes returned the
error 3257 (Regression parameters of contours not yet entered!
Please compute them by calling regress_cont_xld) even though the
regression parameters had been computed. This problem has been
fixed.
-
The operator paint_xld caused memory errors with point-like
contours of area 0. This problem has been fixed.
-
The operator gray_projections crashed in Mode 'simple' in case the
input region contained points outside the input image and the
system parameter 'clip_region' was set 'false'. This problem has
been fixed.
-
The operators expand_gray and expand_gray_ref sometimes crashed if
Mode == 'region'. This problem has been fixed.
-
The operators plateaus and plateaus_center returned the error 6041
(No memory block allocated at last), if called with the wrong image
type (vectorfield or complex images). They now return the error
9001 (Image to process has wrong gray value type) instead.
-
The operator contour_to_world_plane_xld exchanged the coordinates
when transforming the contour. This exchange led to the fact that
the transformed contours did not match an image that was rectified
with the same parameters with image_to_world_plane. This problem
has been fixed.
-
The operator dual_threshold now works correctly for byte images.
-
The operator morph_hat sometimes returned the error 3513 (Internal
error: number of chords too big for num_max) for very large
regions. This problem has been fixed.
-
The operator move_rectangle did not work correctly. On all
systems, the destination coordinates were treated as offsets. The
destination coordinates now are treated as absolute coordinates, as
in copy_rectangle. Furthermore, on Windows systems the movement
was clipped to the original rectangle. These problems have been
fixed.
-
The operators closing_golay, opening_golay, and erosion_golay
sometimes returned the errors 3503-3506 (Run length row < 0, Run
length row >= image height, Run length column < 0, and Run length
column >= image width) for certain combinations of structuring
elements and rotations. The operators thickening_golay,
thinning_golay, hit_or_miss_golay, thinning_seq, and thickening_seq
sometimes returned the error 3510 (Exceeding the maximum number of
run lengths while automatical expansion) for structuring elements
of type 'h'. These problems have been fixed.
-
The operator decode_1d_bar_code did not check whether
the start and stop symbols are correct for code 39.
This led to the fact that sometimes an invalid barcode
was decoded if the number of elements was correct even
though the start or stop symbol was incorrect.
This problem has been fixed.
Manual:
-
The manual "Getting Started with HALCON" is available in a new
edition; it now uses the terms "license / license file / license
key" and "update / upgrade" consistently. Furthermore, it warns
that the number of modules should be determined in the actually
used environment and describes how to customize the port number of
the floating license daemon. The index of the manual has been
revised.
-
The "Application Note on Shape-Based Matching" is available in a
new edition. It describes how to use the new mechanisms for selecting significant
model parts. Furthermore, it explains how
set_shape_model_origin affects the accuracy of the estimated
position.
-
The example of union1 in the HDevelop Reference Manual contained a
syntax error. This problem has been fixed.
-
The description of the operators edges_sub_pix and lines_gauss has
been extended to indicate how much temporary image memory will be
allocated depending on the input image size.
-
The operators tuple_ceil and tuple_floor have been moved to the
chapter Tuple/Arithmetic. tuple_is_number has been moved to the
chapter Tuple/Conversion.
- The latest information about new extensions and newly supported
boards can be found on MVTec's web
server.
New Frame Grabber Interfaces:
Modified Frame Grabber Interfaces:
-
The following HALCON frame grabber interfaces have been revised:
DFG-LC,
DirectShow,
Ginga++,
IDS,
MatrixVision,
MultiCam, and
Opteon,
Please refer to the corresponding documentation for more
information, especially whether a new revision of the corresponding
device driver is required.
Manual:
-
The "Extension Package Programmer's Manual" is available in a new
edition. It now describes the image type UINT2_IMAGE and the
corresponding struct HUint2Pixel and states whether procedures
(macros) implicitely perform error handling using
HCkP. Furthermore, the description of HCopyXLDContPart has been
corrected. The index of the manual has been revised.
Functionality:
-
HMatchIt now enables users to set the new parameters of the model
creation, i.e., the two hysteresis thresholds and the threshold for
the minimum size of the model components. The online documentation
has been extended accordingly.
Licensing:
-
HALCON now uses version 8.3 of the FLEXlm
license manager software by GLOBEtrotter, together with a new
version of the device drivers for USB dongles.
Examples:
-
The parameters of find_shape_models in the example program
examples/hdevelop/Applications/FA/pm_multiple_models.dev have been
optimized for speed.
|