 |
|
|
Release Notes for HALCON 6.0.2
|
 |
This document provides the release notes for MVTec HALCON 6.0.2, i.e.,
revision 2 of HALCON 6.0, as released in March 2002. HALCON 6.0.2 is
primarily a maintenance release that fixes all known bugs in HALCON
6.0.1; besides, it provides added functionality and speedups. HALCON
6.0.2 is compatible with HALCON 6.0.1 and HALCON 6.0; however,
extension packages that were generated for HALCON 6.0 must be
generated anew. Compared to HALCON 5.2, many extensions have been
introduced. Thus, the HALCON 6.0.2 libraries are not compatible with
HALCON 5.2 or earlier versions.
Note that is ActivVisionTools 2.0 are not fully compatible with HALCON
6.0.2! See here for detailed information.
Please uninstall older versions prior to installing this new release.
Optionally, you can install 6.0.2 and keep older versions of HALCON. In
this case you must make sure that the environment variable HALCONROOT
points to version 6.0.2 whenever you want to use it. Furthermore, if you
have used HALCON 5.2 or earlier up to now, please re-compile all C or C++
programs and re-generate your own extension packages or frame grabber
interfaces.
The incompatibility with HALCON 5.2 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.
Note that all HALCON 5.2 license keys must be replaced or
upgraded. Please contact your local distributor.
Overview
This document contains the following information:
- Major New Features
of HALCON 6.0
- 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
- Notes for Users of the
Beta Version of HALCON 6.0
- Major New Features of
HALCON 5.2
- Detailed Description of Changes
in HALCON 5.2.3
- Detailed Description of Changes
in HALCON 5.2.2
- Detailed Description of Changes
in HALCON 5.2.1
- Detailed Description
of Changes in HALCON 5.2
Detailed release notes can be obtained for the following topics:
- HDevelop
- HALCON Library
- HALCON/C++
- HALCON/COM
- Frame Grabber Interfaces
- Extension Package Interface
- Miscellaneous
Speedup and Enhancements:
-
The popup menu of the program window has been extended by the items
'cut', 'copy' and 'delete'.
-
HDevelop now saves the relevant options that can be set via the
menu File -> Options... The saved options are: "Show Variable
Usage", "Show Low Level Errors", "Automatic Program Save",
"Experienced Programmer", "Syntax", and "Digits".
-
The HDevelop dialogs have been generally improved considering
layout and handling.
-
HDevelop now has a mechanism to search and replace variables in the
program text. The functionality is accessible via the menu Edit ->
Replace Variables (Ctrl-H).
Functionality:
-
Under UNIX, HDevelop now saves the window positions and the file
history in the directory "~/.hdevelop" in the user's home
directory.
-
After (de)activating a line of code in the program window, HDevelop
used to scroll the window to the position defined by the most
recently selected program line. This behavior has been changed
such that no window scrolling takes place at all.
-
Some HDevelop dialogs are no longer resizable under UNIX.
-
Most HDevelop dialogs could not be closed using the window manager
or the system menu. This functionality has been implemented.
-
The default value for option "Show Variable Usage" was changed to
FALSE.
-
When writing the modules used in a HDevelop program named
'name.dev' to file, the name of the modules file now is
'name_modules.txt'. In case the program has no name, the modules
now are written to the file 'unknown_modules.txt'.
-
The operations accessible via the program window popup menu always
related to the program line pointed to by the cursor. This
behavior has been changed so that the operations 'cut', 'copy',
'delete', 'activate', and 'deactivate' relate to the line(s)
selected in the program window or to the program line pointed to
by the cursor if no lines are selected.
-
HDevelop's pixel information dialog now displays the whole range of
pixel values also for images with more than 8 bits per pixel.
Furthermore, for two-channel images, the pixel values in
both channels are now visualized separately.
-
HDevelop now checks 'data', 'parameter' and 'database' (see the
documentation of the operator set_check) by default.
Bug Fixes:
-
Loop counters in HDevelop were not always reset correctly. This
problem has been fixed.
-
When using the mode "Insert Interaction" and changing the line
width, the combo box for the line widths of the display parameter
dialog showed a new wrong text entry. This problem has been fixed.
-
It was possible to activate comment lines using the HDevelop
program window popup menu. This problem has been fixed.
-
The HDevelop gray histogram window could not display complex images
correctly; furthermore, it displayed an error if an image object
tuple (an object containing multiple images) was displayed in the
graphics window. Both problems have been fixed.
-
HDevelop crashed when a frame grabber variable dialog was opened
before the variable was initialized for the first time.
This problem has been fixed.
-
The text inside the status bar of HDevelop's main window was not
set correctly when selecting internal or control operators.
This problem has been fixed.
-
HDevelop sometimes displayed a warning message when exporting
programs to C or C++ and the option 'Show Low Level Errors' was
activated. This problem has been fixed.
-
HDevelop now returns a more appropriate error message in case an
operator is not known.
-
HDevelop's options dialog did not reset all settings when selecting
'Cancel'. This problem has been fixed.
Examples:
-
In the directory hdevelop\Image\Framegrabber, the new examples
pxr.dev, pxr_simple.dev, pxr_trigger.dev, pxr_lut.dev,
pxr_gain.dev, pxr_crop.dev, and pxr_2cameras.dev show how to
use the new frame grabber interface for the
Imagenation PXR800. The new examples flashbusmx.dev,
flashbusmx_simple.dev, and flashbusmx_lut.dev show how to use
the new frame grabber interface for
the Integral Technologies FlashBus MX family. The new
examples firepackage.dev, firepackage_simple.dev,
firepackage_parameters.def, firepackage_trigger.dev, and
firepackage_2cameras.dev show how to use the new frame grabber interface for the Allied
Vision Technologies/Intek Firepackage driver. The new examples
multicam.dev, multicam_simple.dev, multicam_parameters.dev, and
multicam_2cameras.dev show how to use the extended frame grabber interface for the
Euresys Multi and Domino boards.
Speedup and Enhancements:
-
The operator affine_transform_image has been speeded up by up
to 30%.
-
The operator read_image is now able to read CMYK and YCCK jpeg
files. It is assumed that the files were written with the Adobe
Photoshop convention. See the updated documentation of read_image.
-
The operator gray_projections has been extended to process int2
images.
-
The operator create_shape_model now determines the number of
pyramid levels to use automatically if NumLevels is set to 0.
-
The operator read_sequence now supports reading floating point
images (files containing 32 bit floating point numbers).
Modified Operators:
-
Please note that in the original release notes for HALCON 6.0.1 two
entries regarding the modification of get_image_pointer1_rect and the modification of
gen_image1_rect were left out by mistake!
-
The operators connect_and_holes, fill_up, get_region_contour, and
euler_number now take the neighborhood setting that can be set with
set_system ('neighborhood', ...) into account.
-
The operator find_2d_bar_code now has value lists for the
parameters GenParamNames and GenParamValues.
-
The operator select_contours_xld now is able to select contours
based on their contour length. This mode is called
'contour_length'. The parameter value 'length' has been renamed
to 'maximum_extent' because it does not compute the true contour
length but instead uses the maximum distance of the eight
extremal points, as described in the reference manual. Note that
the mode 'length' is still supported for backward compatibility.
-
The parameter LineWidth in operator (dev_)set_line_width now has
has an upper bound of 2000. Not limiting the value of LineWidth
could cause HDevelop to crash.
-
The operator open_file now is able to open output files for
appending to existing files.
-
The operator find_shape_model now uses the number of pyramid levels
that was specified in create_shape_model if NumLevels is passed
as 0.
-
The operator gen_region_polygon now takes the system parameter
'clip_region' into account when generating the region. Previously,
gen_region_polygon acted as if 'clip_region' was set to 'false'.
-
The operator gen_contour_polygon_xld now handles an arbitrary
number of points as input. The previous limit was 20000 points.
-
The description of gen_ellipse_contour_xld has been extended by
adding default values and value lists for all input control
parameters.
-
HALCON now has an operator chapter Image->Access. The operators
get_image_time, get_grayval, get_image_pointer1,
get_image_pointer1_rect and get_image_pointer3 have been moved from
chapter Image->Manipulation to Image->Access.
-
The operators segment_contours_xld and gen_polygons_xld are now
able to handle contours with more than 50000 points.
-
The border treatment of the gray value morphology operators
gray_erosion, gray_dilation, gray_opening, gray_closing,
gray_bothat, grat_tophat has been changed from setting the
gray values outside the image to 0 to the customary mirroring of
the gray values at the image border.
-
The operator clip_region_rel now returns the error 3514 (Operator
cannot be implemented for complemented regions; intersect the
region with a finite region or set clip_region to true with
set_system) for complemented regions if clip_region has been set
to false using set_system.
-
The operators create_template and create_template_rot now allow
templates with domains (regions of interest) that can extend up
to the image border. Previously, the error 8504 (Pattern too
near the image border) was returned for images in which the
domain was too close to the image border.
-
The default value for Contrast in create_shape_model and
inspect_shape_model has been changed to 30.
The previous default value of 60 was too high for most
applications.
-
The operator create_funct_1d_pairs now checks whether the x
values are given in ascending order.
-
The parameters RefLineStartY, RefLineStartX, RefLineEndY,
RefLineEndX of the operator union_straight_contours_histo_xld
have been renamed to RefLineStartRow, RefLineStartColumn,
RefLineEndRow, RefLineEndColumn, respectively. The parameter
nWidth has been renamed to Width.
-
The new parameter 'revision' of info_framegrabber enables the
user to query the revision number of a specific HALCON frame
grabber interface even before opening a connection. Note that
not all interfaces implement this functionality yet.
Bug Fixes:
-
The order of the parameters Bottom and Left of the operator
crop_domain_rel has been exchanged because the second and third
parameters affect clipping columns and rows, respectively.
Furthermore, the operator has been included in the chapter
Image->Format instead of Regions->Transformation.
-
The operator clip_contours_xld now deletes the global contour
attributes. They are deleted because in most cases they are no
longer valid for the clipped contours.
-
The operators gen_gabor and convol_gabor now result in images
that have zero values (up to rounding errors) in the imaginary
component of the back-transformed images. To enable this, the
filter pair is no longer returned in a single-channel byte image
but in a two-channel float image. The documentation has been
adapted accordingly.
-
When calling the operators draw_rectangle2_mod or
draw_ellipse_mod, two mouse clicks were required until the system
reacted on mouse move events. Now the objects can be modified
with the first mouse click.
-
The operator connect_and_holes sometimes returned an incorrect
number of holes. This problem has been fixed.
-
The operator laplace_of_gauss no longer returns the error 8120 for
Sigma >= 11.15. The reference manual now specifies that Sigma
must be smaller than 25.
-
The operator diff_of_gauss no longer returns the error 3513 for
large Sigma on images with a reduced domain.
-
The operator smooth_image no longer returns the error 3513 for
large Alpha with the Gauss filter on images with a reduced domain.
-
The operator read_tuple sometimes appended several "garbage"
characters to the end of a string. This problem has been fixed.
-
The operator convol_gabor computed an incorrect Hilbert image.
This problem has been fixed.
-
The operator gen_region_polygon_filled did not produce correct
regions when at least one of the coordinates of the polygon were
negative. This problem has been fixed.
-
The operators draw_circle_mod, draw_point_mod, draw_line_mod, and
draw_rectangle1_mod did not erase the displayed circle when the
object was not being modified. This problem has been fixed.
-
The operator set_lut did not work correctly on systems without a
hardware LUT (e.g., 24-bit displays) if the first call to set_lut
was made with a tuple LUT (i.e., a tuple with 768 integers).
This problem has been fixed. Furthermore, set_lut now supports
setting LUTs from a file on all display types.
-
Repeately opening and closing a window in a loop no longer causes a
memory leak under UNIX (X Windows).
-
The operators dilation1 and dilation2 returned the error 6041 (No
memory block allocated at last) if Iterations > 1.
This problem has been fixed.
-
The operator get_contour_angle_xld returned the error 6002 (Memory
partition on heap has been overwritten) if the contour contained
more than 20000 points. This problem has been fixed.
-
When calculating the correlation value for an image that does not
cover a large range of gray values (i.e., less than 256-2^LdGray)
the returned value for the correlation in cooc_feature_image and
cooc_feature_matrix were intentionally set to a very high value
(3.4e38) because the standard deviation in the formula for the
correlation is 0. In the limit, the correlation tends to 0 for
small gray value ranges. Therefore, the correlation now is
returned as 0 if the standard deviation is 0.
-
The operator corner_response returned the error 6002 (Memory
partition on heap has been overwritten) if the image was not
square. This problem has been fixed.
-
The operator decode_1d_bar_code could not decode some Code 128
codes of type C (codes that consist entirely of packed numbers).
This problem has been fixed.
-
The operators dual_rank and median_separate provided wrong region
border treatment for reduced image domains. This problem has been
fixed.
-
The operators get_region_chain and get_region_polygon no longer
return the error 6005 (Tmp-memory management: Null pointer while
freeing).
-
The operator create_shape_model sometimes created divide by zero
errors if the model containd no points. For these errors to
occur, the 8087 control word had to be set to a special
(non-standard) value. This problem has been fixed.
-
The operator read_image now reads TIFF files with
9 <= BitsPerSample <= 15 and RGB TIFF files with
BitsPerSample = 16 correctly.
-
The operator set_window_extents had no effect on some systems
under X11. The window was not resized. This problem has been
fixed. Note that it still may be necessary to ensure that the
first call to set_window_extents happens a sufficient amount of
time after the window has been opened with open_window.
-
The operator find_marks_and_pose sometimes returned the error 8404
(Minimum threshold while searching for ellipses) although the
ellipses of the calibration target could be segmented easily.
This problem has been fixed.
-
The operator get_pair_funct_1d now returns the results in the
correct order. Previously, the x values were returned in the
result parameter Y, while the y values were returned in the
parameter X.
-
Under Windows, the operator set_line_style now works as specified
in the manual. Previously, set_line_style ignored the given
pattern if the line width was greater than one.
-
The operators tuple_sort_index, tuple_neg, tuple_first_n,
tuple_last_n, tuple_inverse, tuple_select, tuple_select_range,
tuple_str_bit_select, tuple_str_first_n, tuple_str_last_n, and
tuple_sort no longer crash with empty tuples.
-
The operator tuple_concat no longer crashes if both input tuples
are empty.
-
The border treatment of median_image, convol_image, and rank_image
did not work as specified in the reference manual.
For Margin = -3, the gray values were mirrored incorrectly.
For Margin = -1, a black border was generated on output.
For 0 <= Margin <= 255, some strange results
could be returned, especially at the four corners of the image.
This problem has been fixed.
-
The operator gray_dilation had a wrong border treatment for small
structuring elements. This problem has been fixed.
-
The operator expand_gray no longer crashes if an input region is
larger than the image.
-
The operator camera_calibration crashed if the pose and world
points were degenerate, i.e., some world points lay in the focal
plane after the transformation to the camera coordinate system
effected by the pose, and hence could not be projected to the
image plane. camera_calibration now returns the error 8406
(Error in projection: s_x = 0 or s_y = 0 or z = 0) in this case.
-
The operator set_grayval no longer crashes if the pixel
coordinates lie outside the input image.
-
The operator clip_region now works correctly for complemented
regions if 'clip_region' has been set to false using set_system.
-
The operators read_tuple, read_function, and
read_ocr_trainf_select no longer display a warning message if
the option 'show low level errors' is activated.
-
The operators depth_from_focus sometimes returned wrong results
if the input images had a reduced domain.
This problem has been fixed.
-
The operator fit_circle_contour_xld sometimes did not terminate if
Iterations was set to 1. This problem has been fixed.
-
The operator watersheds could return inconsistent results with
reduced domain images. The output depended also on pixels not
lying within the domain of the input image. Problems usually
only occurred if 'init_new_image' had been set to 'false' with
set_system. This problem has been fixed.
-
The operators inspect_shape_model and distance_rr_min_dil sometimes
returned the error 3513 (Internal error: number of chords too
big for num_max). This problem has been fixed.
-
The operator median_image computed image borders incorrectly for
MaskType 'rectangle' and Radius 1 on an MMX-compatible processor.
Furthermore, it computed the first pixels of a chord incorrectly
under Linux with an MMX-compatible processor for MaskType
'rectangle' and Radius 1 or 2. Both problems have been fixed.
-
The operator write_image wrote incorrect tiff files for small image
sizes. It produced files that sometimes could not be read by other
programs. This problem has been fixed.
-
The operator threshold sometimes returned the error 3510
(Exceeding the maximum number of run lengths while automatical
expansion). This only happened if all images in memory were
extremely small. This problem has been fixed.
-
The operators set_color and set_colored caused memory leaks in
the X server under Linux on TrueColor displays.
This problem has been fixed.
-
The operator texture_laws sometimes returned incorrect results for
reduced domains at the borders of the domain.
This problem has been fixed.
-
The operator regiongrowing_n sometimes returned the error 6002
(Memory partition on heap has been overwritten).
This problem has been fixed.
-
The operator find_shape_model now always returns scores <= 1.
Previously, scores slightly larger than 1 could occur because of
rounding errors.
-
The operator sort_region no longer crashes if Order = 'false'.
-
The list of allowed values for the parameter SizeGauss of
find_caltab has been corrected.
-
If a tuple of parameters is passed to the operator
set_framegrabber_param now all parameters are handled correctly;
previously, only the first element was passed to the specified
frame grabber interface.
-
The operator gen_parallels_xld sometimed did not detect vertical
parallels. This problem has been fixed.
-
Parallel HALCON displayed the low level error message 'calling
HMemClrLocal: number of still allocated local space: ... ' for some
operators. This problem has been fixed.
-
The operator gen_region_line sometimes created wrong lines when
'clip_region' was set to 'true' with set_system. The created lines
were different from the lines that were obtained when
'clip_region' was set to 'false' and the region was clipped
afterwards. This problem has been fixed.
-
The operator line_position returned wrong lengths and angles.
This problem has been fixed.
Manual:
-
The manual "Getting Started with HALCON" is now available in a new
edition. The manual now contains more details regarding the use of
dongles (parallel port and USB)
including how to install, configure, and uninstall the
corresponding device drivers.
-
The documentation of the operator set_colored was slightly
misleading. The example suggested (for users that didn't look
closely at the example) that tuples can be used as input values,
whereas only the values 3, 6, and 12 are possible.
The example has been removed and a value list has been provided
for the parameter NumberOfColors.
-
The documentation of gray_projections has been extended
substantially.
-
The documentation of gen_parallel_contour_xld erroneously
mentioned that lines_facet computes the angle contour attribute.
This problem has been fixed.
-
The documentation of the operator
info_framegrabber now describes also the query value 'info_boards'.
Functionality:
-
The operator istream& operator>>(istream &s, HTuple &t) is now
implemented.
Manual:
-
The HALCON/C++ User's Manual is now available in a new
edition. Errors in the description of the class HException were
corrected.
Speedup and Enhancements:
-
The class HWindowXCtrl has been extended by a read-only property
HalconWindow. This enables a simplified access to the encapsulated
HALCON window and the use of HWindowXCtrl in Visual Basic.NET.
Functionality:
-
The operators SelectObj, CopyObj, and ConcatObj returned objects
of the wrong class in the classes that do not only serve as
aggregation classes (HImageX, HRegionX, HXLDContX, HXLDPolyX,
HXLDParaX, HXLDModParaX, and HXLDExtParaX). For example, the
interface of SelectObj in the class HRegionX was
HRegionX.SelectObj(Index As Long) As HUntypedObjectX
(in Visual Basic syntax). Having the class
HUntypedObjectX as return value required the user to cast the
object back to the correct type using the member function Cast().
The return value of the above operators has been changed to be
of the same type as the class of which these functions are
members. For example, in HRegionX the interface of SelectObj
now is HRegionX.SelectObj(Index As Long) As HRegionX.
Because of this change, programs that used the
workaround using the Cast() method must be modified: The Cast()
function call must be removed and the returned object can
directly be assigned to a variable of the correct type.
-
All methods except the Cast() method have been removed from the
class HUntypedObjectX. All programs that have used any of these
methods, e.g., SelectObj, must be modified to use the equivalent
method in the class HOperatorSetX.
-
HALCON/COM now supports input variant parameters of type currency.
This greatly helps under Delphi, where constants with less than 5
digits after the decimal point, e.g., 1.5, are often treated as
variants of type currency.
- 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 Imagenation PXR800 frame grabber boards from CyberOptics.
- HALCON now also includes an
interface to the Integral Technologies frame grabber boards of
the FlashBus MX family
- HALCON now also includes an
interface for the Allied Vision Technologies/Intek Firepackage
Driver, which allows to acquire images from IEEE1394 cameras via
PCILynx-IEEE1394 adapter cards.
Modified Frame Grabber Interfaces:
- The existing HALCON Multi frame
grabber interface has been extended to the more general HALCON MultiCam frame
grabber interface, which supports not only the Euresys Multi
digital boards, but also the Euresys Domino (Alpha/Gamma) analog
frame grabber boards.
-
The following HALCON frame grabber interfaces have been revised: BitFlow,
IDS,
PicPort,
Pxc,
DFG-LC, and
TWAIN. Please refer to
the corresponding documentation for more information, especially
whether a new revision of the corresponding device driver is
required.
Examples:
-
The package halconuser did not work with Parallel HDevelop under
Linux and Solaris because its language interfaces were not linked
with the corresponding library of the package itself.
This problem has been fixed.
-
The makefile of the example extension "halconuser" has been
modified to avoid compiler errors in the case that %HALCONROOT%
contains a blank (as in "C:\Program Files\MVTec\Halcon").
-
The def file print.def of the example HALCON package halconuser
has been corrected.
Licensing:
Manuals:
-
The numbering of editions of the User's and Programmer's Manuals
has changed: Now, only editions corresponding to a major release
of HALCON are numbered; editions corresponding to minor releases
rank as subeditions and are denoted by letters. This change led
to a renaming of the new editions released with HALCON 6.0.1: The
former 6th editions of the manuals "Getting Started", "HALCON/C",
"HALCON/C++", and "Extension Package" are now listed as edition 5a,
edition 3 of the manual "HALCON/COM" as edition 2a.
Examples:
-
The example program
examples/hdevelop/Regions/Creation/gen_checker_region.dev now
resets the neighborhood to 8 at the end of the program.
-
When used together with HALCON 6.0.2, ActivVisionTools 2.0 show the
following problems:
-
ActivBarcode displays an error message if the display of the bar
code elements is enabled.
-
If ActivDecision evaluates multiple objects as "not okay", none is
marked in the error color in AVTView.
|