 |
|
|
Release Notes for HALCON 6.1.4
|
 |
This document provides the release notes for MVTec HALCON 6.1.4, as released
in January 2005. HALCON 6.1.4 is primarily a maintenance release that
fixes all known bugs in HALCON 6.1.3; besides, it provides added
functionality and speedups.
Overview
This document contains the following information:
- Compatibility
- Detailed Description of Changes in
HALCON 6.1.4
- Major New
Features of HALCON 6.1
- Detailed Description of
Changes in HALCON 6.1.3
- Detailed Description of
Changes in HALCON 6.1.2
- 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.4. In contrast,
all HALCON 6.0 licenses must be replaced or upgraded. Please
contact your local distributor.
HALCON Library
HALCON 6.1.4 is source code compatible with HALCON 6.1, 6.1.1,
6.1.2, and 6.1.3, i.e., programs written for HALCON 6.1.x can be
compiled and linked with HALCON 6.1.4. Compared to HALCON 6.0.x,
however, many extensions have been introduced. Thus, the HALCON
6.1.4 libraries are not compatible with HALCON 6.0.x or earlier
versions.
HALCON Applications
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, 6.1.1, 6.1.2, or 6.1.3 you can use them with HALCON 6.1.4
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, 6.1.1, 6.1.2, or
6.1.3 can be used with HALCON 6.1.4 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), ActivVisionTools 3.0 are based on
HALCON 7.0.1.1 and the ActivVisionTools versions 1.0
to 2.0 are based on HALCON 6.0 (or HALCON 6.0.1); thus, by
installing HALCON 6.1.4 you would disable such an
ActivVisionTools installation. Therefore, the setup program of
HALCON 6.1.4 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.4.
-
If it detects ActivVisionTools 2.0 it offers to
replace the corresponding OCX with a new one that is
compatible to HALCON 6.1.4. 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.4. If the setup
program of HALCON 6.1.4 detects such an ActivVisionTools
version it warns that by continuing to install HALCON 6.1.4
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'.
-
If it detects ActivVisionTools 3.0,
it warns that by continuing to install HALCON 6.1.4
you will disable your ActivVisionTools
installation.
If you still want to use your ActivVisionTools installation
you must also keep your HALCON 7.0.x installation and
switch back to it as described in the manual 'Getting Started
With HALCON'.
Detailed release notes can be obtained for the following topics:
- HDevelop
- HALCON Library
- HALCON/C++
- Frame Grabber Interfaces
- Extension Package Interface
Functionality:
-
HDevelop no longer uses the obsolete library ctl3d32.dll under
Windows.
-
In HDevelop the behavior of all functions for empty input
tuples is now standardized. As result the operators return an
empty tuple. The only exceptions are: mean, deviation, min, max,
rand, gen_tuple_const, not, or, and, xor (they return an error).
Bug Fixes:
-
The internal functions number and is_number sometimes
returned wrong results if the input parameter contained
strings. This problem has been fixed.
-
Creating and updating HDevelop's variable inspector
dialogs was slow and caused a memory leak. These
problems have been fixed. Furthermore, the dialogs are
now updated in a way that the previously first item in
the dialog's listbox remains the first item in the
listbox if possible.
-
The HDevelop operator / now only returns an error if the
numerator is exactly 0.
-
In some cases, HDevelop did not update its undo functionality
correctly after adding an operator line to the current procedure
body. This problem has been fixed.
-
HDevelop sometimes crashed when trying to display a tuple of
objects of different kind or size in the active graphics window.
This problem has been fixed.
-
HDevelop erroneously activated deactivated program lines after
replacing variables using the dialog 'Replace Variables'. This
problem has been fixed.
-
HDevelop sometimes exported break statements incorrectly to C.
This problem has been fixed.
Examples:
-
The new example programs multicam_split_cable.dev and
multicam_stereo.dev in the directory hdevelop\Image\Framegrabber
show the extended functionality of the HALCON MultiCam frame
grabber interface, i.e., the use of different board topologies
with Domino Alpha/Gamma boards and the use of StereoVision (image
capture from 2 synchronized cameras exactly at the same time)
with Domino Alpha/Alpha2 boards.
-
The new example program
examples\hdevelop\Image\Framegrabber\file_directory.dev shows how
to read all image files in a directory using the HALCON Virtual
(File) frame grabber interface.
Speedup and Enhancements:
-
The operator expand_domain_gray is now faster when expanding the
gray values beyond the image border.
-
The operator deviation_image is now faster by up to 40%.
-
The operators mult_image, div_image, sub_image, add_image, and
scale_image are now substantially faster for uint2 images.
Modified Operators:
-
The behavior of operators for empty input tuples is now
standardized. As result the operators return an empty
tuple. The only exceptions are: tuple_mean,
tuple_deviation, tuple_min, tuple_max, tuple_rand,
gen_tuple_const, tuple_not, tuple_or, tuple_and,
tuple_xor (they return an error).
-
The operator create_bg_esti now is able to create an
unlimited number of background estimators, i.e., the
number of background estimators is only limited by the
available memory.
-
The operators create_shape_model and create_scaled_shape_model
now do not return the error 8510 (Number of shape model points
too small) if more than four model points exist. This error
occurred if the number of model points in the original resolution
was between four and nine and the number of pyramid levels was
determined automatically. Because in the documentation of
create_shape_model the minimum number of model points is
specified to be four, no error message is returned any longer.
-
The operator expand_domain_gray now supports images of
pixel type int1, int4, and real.
-
The operator gen_contour_region_xld has a new mode
'border_holes', where in addition to the outer border of
the regions all contours of the holes are returned.
-
The operators rank_image and dual_rank now allow mask
sizes up to half the image width or height, whichever is
smaller.
-
The operator read_image is now able to read top-down BMP files,
in which the image rows are stored from top to bottom and not in
the conventional Windows order from bottom to top. Furthermore,
the operator is now able to read BMP files that have been saved
with a BITMAPV4HEADER or BITMAPV5HEADER header structure.
-
The operator set_font now provides a mechanism to use
fonts with a character set that is different from the
default character set under Windows.
-
The operators write_ocr_trainf, write_ocr_trainf_image,
append_ocr_trainf, and concat_ocr_trainf now support
writing an OCR training file in binary file format. The
new parameter 'ocr_trainf_version' of the operators
set_system and get_system determines whether the old
ASCII format or the new binary format is used for
writing a training file. The operators read_ocr_trainf,
read_ocr_trainf_select, read_ocr_trainf_names,
trainf_ocr_class_box, and trainf_ocr_class_mlp read both
file formats.
-
The operator write_tuple has been extended to write empty
tuples. Furthermore, it now stores double values with maximum
precision, i.e., with 16 significant digits instead of 6
significant digits.
Bug Fixes:
-
The operators add_image, div_image, max_image,
min_image, mult_image, sub_image, mean_n,
principal_comp, rgb1_to_gray, depth_from_focus, bit_and,
bit_or, and bit_xor sometimes did not return the correct
result for multi-channel images or image arrays. This
problem has been fixed.
-
The operators approx_chain and approx_chain_simple crashed in
rare cases. This problem has been fixed.
-
The operators bit_and, bit_or and bit_xor crashed for
input images of different type. Now, an appropriate
error message is returned.
-
The operators change_radial_distortion_contours_xld sometimes
created contours with invalid coordinates. This may have
happened if contours with exceedingly large coordinates were used
as input. Such points sometimes may not be undistorted
(depending on the value of the radial distortion coefficient
kappa, which must be positive for this to occur).
change_radial_distortion_contours_xld now returns the error 8407
(Error in inverse projection) in this case.
-
The operators convol_gabor and convol_fft crashed if the
Fourier-transformed input image and the Gabor filter were of
different size. Now, an appropriate error message is returned.
-
The operator create_shape_model sometimes created a different
model if it was called the first time. From then on, when
recreating the model using the same input paramters, a different
pose was obtained if the model was used in find_shape_model in
contrast to the pose that was obtained when using the model that
was created by the first call of create_shape_model. This
especially happened if the model contained points at the border
of the model image. This problem has been fixed.
-
The operator create_scaled_shape_model in rare cases created a
floating point exception if the floating point coprocessor was
configured in a non-standard manner. This problem has been
fixed.
-
The operator deviation_image returned a run length error when
processing images with domains of height 1. This problem has been
fixed.
-
Some regions were not completly displayed if the margin
of regions was displayed and the line style was set to
dotted or dashed lines. This problem has been fixed.
-
The operators do_ocr_* no longer crash if the character region
lies partially outside the image.
-
The operator dyn_threshold sometimes produced erroneous results
for real images for Mode = 'equal' and Mode =
'not_equal'. Furthermore, it did not work correctly for Mode =
'not_equal' if the image type was byte, int2, uint2, or int4 and
there were extended runs of pixels that had a gray value
difference that corresponded exactly to the threshold. These
problems have been fixed.
-
The operator edges_image did incorrect gray value rounding for
some some values of parameter Alpha and with the value 'canny'
for the parameter Filter. This problem has been fixed. In this
context, info_edges now returns slightly corrected coefficients
with value 'canny' for parameter Filter.
-
The operator edges_sub_pix sometimes missed edges that are within
the hysteresis thresholds. This happened particularly frequently
if the parameter Filter was set to 'sobel'. This problem has been
fixed.
-
The operator energy_gabor ignored the second input image and,
instead, used the first one. This problem has been fixed.
-
The operator expand_domain_gray crashed if a multi-channel image
with different image types was passed as input image. This
problem has been fixed.
-
The operator find_1d_bar_code sometimes did not filter
out the correct extra elements when 'max_extra_elements'
was set to a certain number and the bar code had the
specified number of extra elements. This problem has
been fixed.
-
The operators find_shape_model, find_shape_models,
find_scaled_shape_model, and find_scaled_shape_models sometimes
returned poses outside the given angle and scale range. This
happened if the angle/scale range that was specified during model
creation and the angle/scale range that was specified during the
search did not overlap. This problem has been fixed.
-
The operator find_shape_model in very rare cases
returned the error 3510 (Exceeding the maximum number of
run lengths while automatical expansion). This could
happen if the domain of the search image was extremely
complex. This problem has been fixed.
-
The operators fit_circle_contour_xld,
fit_ellipse_contour_xld, and fit_line_contour_xld
sometimes crashed. This happened if the parameter
Algorithm was set to 'atukey' (fit_circle_contour_xld),
'ftukey' or 'fptukey' (fit_ellipse_contour_xld), or
'tukey' or 'drop' (fit_line_contour_xld) and the
parameter ClippingFactor was set to a small value. In
this case, all points were classified as outliers. This
problem has been fixed. Now, an appropriate error
message is returned if all points are classified as
outliers.
-
The operator fit_ellipse_contour_xld did not work if the points
lay perfectly on an ellipse or on a straight line and if the
selected algorithm was not 'voss'. Furthermore, it did not work
if the contour represented a very small ellipse with a very large
ratio of the major and the minor axis. These problems have been
fixed.
-
The operators fit_surface_first_order and
fit_surface_second_order sometimes returned the error 6002
(Memory partition on heap has been overwritten). Furthermore, the
operators could crash when using Parallel HALCON. These problems
have been fixed.
-
The operators fuzzy_measure_pos, fuzzy_measure_pairs, and
fuzzy_measure_pairing sometimes crashed if no fuzzy function was
set. This problem has been fixed.
-
The operator gen_circle sometimes returned an erroneous region at
the image border. This happened if the row or the column
coordinate of any pixel within the circle region was -0.5. As a
consequence, the row within the circle region with row coordinate
0 was missing and the column with column coordinate 0 was
duplicated. This error has been fixed.
-
The operator gen_contour_polygon_rounded_xld caused a memory
error in rare cases. This problem has been fixed.
-
The operator gen_region_polygon sometimes produced
incorrect results if some of the polygon points had
negative coordinates and 'clip_region' was set to 'true'
(the default state). This problem has been fixed.
-
The operator get_pair_funct_1d erroneously accepted
float values as indices. Now, an error message is
returned.
-
Gray morphology operations with structuring elements
(i.e. gray_dilation, gray_erosion, gray_closing, gray_opening,
gray_bothat, gray_tophat) sometimes overwrote memory
partitions. This problem has been fixed.
-
The operators gray_closing_shape, gray_opening_shape,
gray_erosion_shape, and gray_dilation_shape sometimes returned
the error 3513 (Internal error: number of chords too big for
num_max). This problem has been fixed.
-
The operator gray_projections sometimes returned wrong horizontal
and vertical projection values. For example, it returned wrong
horizontal projection values for image rows containing more than
one run of the input region. Furthermore, it returned wrong
values for the parameter VertProjection if the parameter Mode was
set to 'rectangle' and a byte image was passed in Image. These
problems have been fixed.
-
The operator hough_line_trans crashes in rare cases. This
problem has been fixed.
-
The operators int1_to_dvf, optical_flow_match, real_to_complex,
rgb3_to_gray, and select_grayvalues_from_channels did not return
the correct result when the (first) input object contained
identical input images. This problem has been fixed.
-
When passing mask sizes of 1, mean_image automatically used mask
sizes of 3. mean_image now uses mask sizes of 1 instead. The
documentation has been adapted accordingly.
-
The operator mean_image treated image borders
incorrectly for 5x5 filter masks. This problem has been
fixed.
-
The operator median_image crashed in rare cases for
MaskType 'rectangle', Radius 2 and Margin
'mirrored'. This problem has been fixed.
-
The operator paint_xld sometimes returned a wrong border
interpolation value if a contour point fell exactly on
the row and column border of a pixel. This problem has
been fixed.
-
The operator query_font now works correctly under Windows.
-
The operator read_image could not read 16-bit BMP files
with an odd width correctly. The padding was not
accounted for correctly. This problem has been fixed.
-
The operator read_image could not read certain GIF
images. This problem has been fixed.
-
The operators read_ocr_trainf and read_ocr_trainf_select crashed
if the train file contained more than 100,000 character
samples. This problem has been fixed. Furthermore,
read_ocr_trainf_names and read_ocr_trainf might have crashed when
reading train files that contain more than 500 classes. Now these
operators return the error message 'Too many classes'.
-
The operator read_tuple sometimes crashed if the file did not
contain a valid tuple. This problem has been fixed.
-
The operator rotate_image did not work correctly if a rotation
angle of 180 degrees was chosen and the domain of the input image
was reduced. In this case the input image was rotated by 180
degrees but additionally its lines were wrongly shifted depending
on the domain of the input image. This problem has been fixed.
-
The use of set_font in a window created with new_extern_window
caused a resource leak. This problem has been fixed.
-
The call set_system('flush_graphic','true') was ignored
when an empty object was displayed with disp_channel,
disp_color, disp_image, disp_obj, and disp_region. This
problem has been fixed.
-
The operator sim_caltab crashed on 64 bit systems if the input
parameter ScaleFac was chosen very small. This problem has been
fixed.
-
The operators smallest_circle and smallest_circle_xld sometimes
returned erroneous values for Row, Column, and Radius. The
corresponding circle was not enclosing the region/XLD
completely. Accordingly, sometimes the result obtained from
select_shape, select_shape_xld, and fill_up_shape when setting
Features to 'outer_radius' and the result obtained from
shape_trans and shape_trans_xld when setting Type to
'outer_circle' was erroneous. This problem has been fixed.
-
The operators smooth_image and diff_of_gauss sometimes returned
an image with some incorrectly rounded gray values, which might
also have caused a gray value overflow. With smooth_image this
problem occured only with value 'gauss' for the parameter
Filter. This problem has been fixed. In this context, info_smooth
now returns slightly corrected coefficients with value 'gauss'
for the parameter Filter.
-
The operator split_contours_xld crashed in extremely rare cases
for Mode 'dominant'. This problem has been fixed.
-
The operator translate_measure sometimes deleted the
fuzzy evaluation functions. This problem has been fixed.
-
The operators trans_from_rgb and trans_to_rgb did not return the
correct result when the image object was identical for all three
input images. This problem has been fixed.
-
The operators tuple_number and tuple_is_number in some
cases returned wrong results if the input parameter
contained strings. This problem has been fixed.
-
The operators watersheds, gray_inside, and depth_from_focus
sometimes did not converge. In these cases the respective
operator got stuck within an infinite loop. This problem has been
fixed.
Manual:
-
The documentation of the operators in the chapters Tools ->
Affine-Transformations and Tools -> Calibration has been revised
and extended.
-
The documentation of the operators learn_ndim_box and
learn_ndim_norm now clarifies the differences between these two
operators.
-
The documentation of select_grayvalues_from_channels has been
extended to clarify the possible numbers of images in the input
object parameter 2.
-
The documentations of select_matching_lines, hough_lines, and
hough_lines_trans showed a wrong typical range of values for the
parameters DistIn, DistOut, and Dist, respectively, i.e.,
-1.5707963 <= Dist <= 3.1415927. However, these parameters are
equal to or greater than 0. The reference manual has been
corrected accordingly.
-
The documentation of set_lut has been adapted. The sentence: "If
there are less lines than gray values, the available information
values are distributed over the whole interval calculating the
missing values by interpolation." did not describe the behavior
of the operator accurately. In fact, the gray values in the
displayed image are set to the nearest value that is specified in
the LUT file.
-
The documentation now explicitly describes that the domain of the
image is ignored for measuring with the operators in the chapter
Tools -> Measure, e.g., with measure_pos or measure_pairs.
Bug Fixes:
-
The constructors of the HALCON/C++ class HFramegrabber internally
swapped the values passed to the last two input parameters 'Port'
and 'LineIn'. This problem has been fixed.
-
Calling the HALCON/C++ member function HTuple::Append() sometimes
led to a crash if the input parameter was the tuple to be
modified itself. This problem has been fixed.
-
The HALCON/C++ member functions HTuple::Number() and
HTuple::IsNumber() in some cases returned wrong results in case
the input parameter contained strings. This problem has been
fixed.
-
The overloaded comparison operators == and != in the HALCON/C++
class HTuple sometimes returned wrong results. This problem has
been fixed.
Manual:
-
The "HALCON/C++ User's Manual" is available in a new edition. For
the class Hobject, it incorrectly described a member function
Clear(), which does not exist. Instead, the manual now describes
the function Reset(). Furthermore, the example code for the class
HRegion and the description of the operators << and >> in the
member function list of the class HRegionArray have been
corrected.
-
The latest information about new extensions and newly supported
boards can be found on MVTec's web
server.
New Frame Grabber Interfaces:
- HALCON now also includes an interface
to the uEye USB 2.0
cameras from IDS.
Modified Frame Grabber Interfaces:
-
The following HALCON frame grabber interfaces have been revised:
BARRACUDA,
Basler BCAM 1394,
BitFlow,
DFG-LC,
DirectShow,
File,
Ginga++,
IDS,
Inspecta,
MatrixVision,
MultiCam,
Opteon,
and
PXR800.
Please refer to the corresponding documentation for more
information, especially whether a new revision of the
corresponding device driver is required.
Manual:
-
In the "Extension Package Programmer's Manual", the type
definition of Hpar contained errors, which have been corrected.
Licensing:
-
HALCON now uses version 9.5 of the
FLEXlm license manager software. The underlying dongle
drivers have also been updated to version 4.95 (HASP for
USB dongles) and 5.41 (Sentinel for Parallel Port dongles)
to ensure maximum compatibility with current Windows
operating systems.
|