 |
|
|
Release Notes for HALCON 6.0.3
|
 |
This document provides the release notes for MVTec HALCON 6.0.3, i.e.,
revision 3 of HALCON 6.0, as released in August 2002. HALCON 6.0.3 is
primarily a maintenance release that fixes all known bugs in HALCON
6.0.2; besides, it provides added functionality and speedups.
Overview
This document contains the following information:
- Compatibility
- 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
- 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
HALCON Library
HALCON 6.0.3 is compatible with HALCON 6.0.2, HALCON 6.0.1, and
HALCON 6.0. Compared to HALCON 5.2.x, however, many extensions
have been introduced. Thus, the HALCON 6.0.3 libraries are not
compatible with HALCON 5.2.x or earlier versions.
HALCON Applications
Due to a modification in the HALCON/C++ interface, you must recompile
and relink HALCON/C++ applications that make use of the overloaded
input and output operators >> and <<. See here for details.
Please re-compile all C or C++ programs developed with HALCON 5.2.x.
The incompatibility with HALCON 5.2.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
Please re-generate your own frame grabber interfaces developed with
HALCON 5.2.x. Note that HALCON 6.0 introduced syntactic and semantic
changes into the HALCON Frame Grabber Integration Interface, i.e., you
might also need to adapt the code of your interface; please refer to
the Frame Grabber Integration Programmer's Manual for
details about the changes.
Extension Packages
Due to a modification in the HALCON/C++ interface, you must recompile
extension packages that make use of the overloaded input and output
operators >> and <<. See here for details.
Please note that extension packages that were generated for HALCON
6.0 must be generated anew. The same holds for extension packages
developed with HALCON 5.2.x.
Licensing
HALCON 6.0.3 requires a newer version of the dongle
driver programs from GLOBEtrotter. If you install HALCON 6.0.3 via
the setup program (InstallShield), the old driver is automatically
uninstalled before the new one is installed (if you selected to install
the dongle driver). However, if you use the update mechanism
(ZIP file), only the new setup programs are provided. Therefore, you
must uninstall the old dongle driver and install the new one
manually. Please refer to the manual "Getting Started" for more
information.
All HALCON 5.2 license keys must be replaced or upgraded. Please
contact your local distributor.
ActivVisionTools
Please note that ActivVisionTools 1.0 to 2.0 are not fully
compatible with HALCON 6.0.3 (and HALCON 6.0.2)! See here
for more information. Therefore, the setup program of HALCON 6.0.3
checks whether there is an ActivVisionTools installation on your
computer.
-
If it detects ActivVisionTools 2.0, it offers to replace the
corresponding OCX with a new one that is compatible to HALCON
6.0.3. 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'.
-
For ActivVisionTools 1.0 to 1.3 no compatible OCX is
available. If the setup program of HALCON 6.0.3 detects such an
ActivVisionTools version, it therefore warns that by continuing to
install HALCON 6.0.3 you will damage your ActivVisionTools
installation.
As a workaround, you could keep your old HALCON 6.0.1 or HALCON 6.0
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
- HALCON/C++
- HALCON/COM
- Frame Grabber Interfaces
- Miscellaneous
Enhancements:
-
HDevelop now has a menu entry Help -> HALCON News (WWW). This menu
entry opens a browser with a page from MVTec's WWW server that
displays customized software news about the HALCON version that is
installed on the user's computer.
-
In HDevelop it is now possible to set multiple break points.
-
HDevelop now allows users to print the current HDevelop program.
It is possible to print the entire program or the currently
selected part.
Functionality:
-
HDevelop now displays more precise information about the type of
XLD objects in the status bar.
-
The dialog popping up every 100 operators in HDevelop Demo now
allows the user to stop program execution.
-
After pressing enter in the combo box 'Operator:' of HDevelop's
operator window the input focus now is set on the OK button if
possible.
-
HDevelop now declares the default window handle as Variant when
exporting to Visual Basic.
-
C and C++ programs exported by HDevelop no longer contain the
operator call 'reset_obj_db'.
Bug Fixes:
-
The status bar displayed a German text when operators from the
Suggestions menu were selected. The status bar now displays the
operator's short description as in the operators menu.
-
HDevelop's 'File->Read Image' dialog did not suggest the correct
variable names for the input image. This problem has been fixed.
-
HDevelop exported the internal function sort_index incorrectly to
C. This problem has been fixed.
-
HDevelop sometimes exported empty declarations to C, C++, and
Visual Basic if the special variable _ was used. This problem has
been fixed.
-
In HDevelop, the C++ export of nested tuple expressions like
TupleA[TupleB[i]-1] sometimes was wrong. This problem has been
fixed.
-
HDevelop's status bar and tool bar buttons did not observe the
selected color scheme under Windows NT/2000/XP. The status bar and
the background color of the tool bar bitmaps were always light
gray. This problem has been fixed.
-
HDevelop very rarely crashed if a dialog (e.g. Zoom) was open and
the user moved the mouse cursor over the Variable Watch window.
This problem has been fixed.
-
The height of HDevelop dialogs now is adapted according to the
height of the caption area under Windows.
-
C programs exported by HDevelop sometimes missed variable
declarations. This problem has been fixed.
-
Sometimes, HDevelop crashed when trying to use control variables as
object variables and vice versa. This problem has been fixed.
-
The internal HDevelop operators dev_update_pc, dev_update_time,
dev_set_window_extents and dev_set_draw crashed when called with
input control parameters of wrong type. This problem has been
fixed.
-
The HDevelop function deviation returned a wrong result when 2
values were passed. This problem has been fixed.
-
On Unix systems, HDevelop's dialog 'Find Operator' sometimes left
the HDevelop program window in an inconsistent state. This problem
has been fixed.
-
HDevelop no longer sets the program counter on the next
program line after a stop instruction if that line is a
comment. Instead the program counter is set on the next
line that is not a comment.
Manual:
-
The HDevelop User's Manual is available in a new edition. It now
also describes how to find operators and search and replace
variable names, how to print HDevelop programs, and how to access
customized software news about the HALCON version that is installed
on the user's computer.
Examples:
-
The example programs examples/hdevelop/Applications/OCR/fontt.dev
examples/hdevelop/Applications/OCR/lettertt.dev
examples/hdevelop/Tools/Function/match_function_trans_plot.dev
wrote data into the directory '/tmp'. This caused errors under
Windows systems. This problem has been fixed.
Speedup and Enhancements:
-
The operators gen_gauss_pyramid, zoom_image_size, and
zoom_image_factor now also support real images. The documentation
has been extended accordingly.
-
The operator gen_measure_rectangle2 and gen_measure_arc are now
faster by up to 80%. The new fast mode is selected when the system
parameter 'int_zooming' is set to 'true' (the default setting) with
set_system. If 'int_zooming' is set to 'false', the original
method, which uses floating point calculations, is used to
construct the measure object. The documentation has been extended
accordingly.
-
The operator invert_image is now faster by up to 75% for byte
images.
Modified Operators:
-
The operator integer_to_obj no longer has a default value for the
parameter 'SurrogateTuple'.
-
The operator paint_region now supports multi-channel images. To
enable users to specify a color for each channel, the parameter
GrayValue now also accepts tuples as input. The documentation has
been extended accordingly.
-
The operator lines_facet now sets the contour attributes 'angle'
and 'response'. The documentation has been extended accordingly.
-
The operator edges_sub_pix now has a mode in which the junctions
can be extracted more completely. This mode has a similar effect
as the mode CompleteJunctions = 'true' in lines_gauss. The new
mode is selected by appending '_junctions' to the parameter Filter
of edges_sub_pix. The documentation has been adapted accordingly.
Bug Fixes:
-
The operator x_range_funct_1d returned a wrong XMax value for 1d
function pairs. This problem has been fixed.
-
The operator transform_funct_1d returned the function values of 1d
function pairs in wrong index order if the parameter a3 was
negative. This problem has been fixed.
-
The operator tuple_not returned values of type real. This caused
problems whenever these values were used in other logical
operators, e.g., tuple_and. tuple_not now returns values of type
integer.
-
The operator shape_histo_all returned incorrect results for Feature
= 'holes'. This problem has been fixed.
-
The operator find_shape_model found only one instance if MaxOverlap
= 0, no matter how NumMatches was chosen. Furthermore, the
operator sometimes discarded too many instances based on their
overlap. These problems have been fixed.
-
The operators trans_to_rgb and trans_from_rgb produced incorrect
results with ColorSpace = 'hsi', trans_to_rgb sometimes also with
ColorSpace = 'hsv'. These problems have been fixed.
-
An error in the operator merge_regions_line_scan with parameter
MergeBorder = 'top' has been fixed. merge_regions_line_scan
sometimes returns the error 6001 (not enough memory available) for
this choice of MergeBorder.
-
An error in the operator decode_2d_bar_code when decoding 2d bar
codes with Base256 encodation has been fixed.
-
The operator get_serial_param did not return the parity correctly
under Windows. The value returned by get_serial_param was always
'none'. This problem has been fixed.
-
The operator polar_trans_image no longer returns the error 3505
(Run length column >= image width) if the parameter Width is chosen
larger than the input image width and the checking of data has been
enabled using set_check('data').
-
The operators get_region_thickness, get_region_polygon, and
get_region_chain sometimes returned the error 6041 (No memory block
allocated at last). This problem has been fixed.
-
The operators distance_pr and distance_lr returned the error 3513
(Internal error: number of chords too big for num_max) if the
region contained more than one hole. This problem has been fixed.
-
A bug in plane_deviation and moments_gray_plane, which caused
illegal results (-1.#IND and NaN, respectively) for regions that
either contain one pixel or pixels on a straight line has been
fixed. The documentation has been extended to reflect this change.
-
The operator gen_region_polygon_filled sometimes created
asymmetrical regions from a symmetrical polygon. This problem has
been fixed.
-
The operator laplace_of_gauss crashed with int4 and real
images. This problem has been fixed.
-
The operator close_edges_length no longer crashes in HALCON/C if
edges are traced to the border of the image.
-
The operator elliptic_axis_gray sometimes returned illegal results.
This problem has been fixed.
-
The operator depth_from_focus sometimes returned the error 7200
(Wrong number of output object parameter). This only happened if
Selection was set to 'next_maximum'. This problem has been fixed.
-
The operator do_ocv_simple sometimes returned wrong quality values
if AdaptGray was set to 'true'. This problem has been fixed.
-
The operator laplace now performs correct border treatment for
NeighborhoodType = 'n_8' and 'n_8_isotrop'.
-
The operators zoom_image_factor and zoom_image_size could cause
erroneous results for int2 images if the parameter Interpolation
was set to 'none'. This problem has been fixed.
-
The operators regiongrowing_n, learn_ndim_box, and class_ndim_box
created a stack overflow under Windows in HALCON/C and HALCON/C++.
The operators have been modified to use less than the default 1 MB
stack.
-
The operator union_straight_contours_xld sometimes failed to join
contours that fulfill the specified collinearity criteria.
Furthermore, the operator sometimes returned incorrect results for
Mode = 'paralleltoo' and Mode = 'every'. These problems have been
fixed. The mode 'every' has been improved so that a contour that is
as useful as possible for further processing is returned. In
particular, the algorithm now merges exactly two contours per
iteration in this mode. The contours that are merged are the two
contours having the closest distance. This ensures in most cases
that the surrounding contour of a single object is created. As a
consequence of this change, the mode 'every' has become slower than
in previous HALCON versions and thus should only be used for a
small number of contours as input.
-
The operator expand_gray_ref no longer crashes if an input region
is larger than the image.
-
The operator lut_trans returned incorrect results if the LUT
contained floating point numbers. This problem has been fixed.
-
Parallel HALCON sometimes crashed when exiting a HALCON
program. This problem has been fixed.
-
The operator area_center_gray returned illegal results for Row and
Column if the gray values defined by the input region were all 0.
This problem has been fixed.
-
The operators camera_calibration, do_ocv_simple, vector_to_rigid,
match_funct_1d_trans crashed under Solaris. This problem has been
fixed.
-
The operator gen_parallel_contour_xld sometimes created incorrect
contours if Mode = 'regression_normal'. This problem has been
fixed.
-
The operator read_region crashed when reading non-binary Tiff
images. Furthermore, the operator did not return the correct error
5567 when reading non-binary BMP images. Instead often the error
3510 was returned. These problems have been fixed.
-
The operator diameter_region did not compute the diameter correctly
for regions with 0 or 1 runs. This problem has been fixed.
-
The operator find_marks_and_pose sometimes returned the error 8417
(Fitting of calibration target failed) although the image quality
was good and the calibration target was planar enough that
find_marks_and_pose should have been able to find the correct pose
estimate. This problem has been fixed.
-
The operator select_contours_xld rejected contours from the output
if the selection feature ('contour_length', 'maximum_extent',
'curvature') had exactly the value of one of the thresholds. This
problem has been fixed. Now the operator complies with the
standard HALCON behavior where the thresholds belong to the
selection interval.
-
The operator read_ocr_trainf sometimes crashed under Linux 2.2.
This problem has been fixed.
-
The operators do_ocr_single and do_ocr_multi in rare cases
incorrectly returned an error. The error was caused if the input
parameter Character was 1 pixel wide and was situated on the image
border. This problem has been fixed.
-
The operator select_gray truncated the input parameters 'Min' and
'Max' when using the features 'min' and 'max' in conjunction with
integer image types. This problem has been fixed.
-
The operators edges_sub_pix and lines_gauss sometimes created angle
attributes for the extracted contours that pointed to the left side
of the contour, whereas they should always point to the right side
of the contour as the contour is traversed from start to end. This
problem has been fixed.
-
The operator sp_distribution sometimes did not work when passing
integer parameters in the parameter PercentPepper. This problem
has been fixed.
-
The operator add_noise_white did not work correctly with int2
images. Negative output values were clipped to 0. This problem
has been fixed.
-
The operator gen_gauss_pyramid sometimes returned the error 3107
(Scaling factor = 0.0 (IPImageScale)). This could happen if the
Scale was smaller than 0.5. This problem has been fixed.
-
The operator exhaustive_match_mg sometimes returned the error 6005
(Tmp-memory management: Null pointer while freeing) if Level = 0.
This problem has been fixed.
-
If a tuple of more that 2048 elements was passed to disp_line, only
the first 2048 lines were displayed correctly under Windows. This
problem has been fixed.
-
The operator tuple_deviation returned a wrong result when 2 values
were passed. This problem has been fixed.
-
If a region tuple was read with read_region, sometimes the region
features of all regions were identical to the region features of
the first region of the tuple. This problem has been fixed.
Manual:
-
The manual "Getting Started with HALCON" is now available in a new
edition. The problems occurring in conjunction with the new version
of the dongle driver required for HALCON 6.0.2 or higher versions
and their solution are described in the corresponding
sections. Furthermore, the installation process is now described in
more detail, including information on how to switch between
different HALCON versions. A new section contains additional
information for users of ActivVisionTools.
-
The documentation of the parameter Bulkiness in the operator
eccentricity has been corrected.
-
The documentation of difference no longer contains obsolete
information.
-
The description of comparable filter widths in edges_image and
edges_sub_pix has been clarified. It has been made obvious that
the unbiased version of the filters uses the same smoothing
parameter as the biased version.
-
The documentation of edges_sub_pix now describes that the attribute
'edge_direction' is set. Furthermore, the description of the
attribute 'angle' has been made more precise.
-
Please note that in the release notes for HALCON 6.0.2 a note
regarding the extension of the documentation of the operator
info_framegrabber was accidentially left out and has now been added
here.
Examples:
-
Some example workspaces for Visual Studio used relative paths.
These paths have been changed to be relative to
HALCONROOT. Furthermore, some example workspaces contained wrong
paths. This problem has been fixed.
Functionality:
-
HalconCpp.h no longer includes <iostream.h> but includes
<iostream> by default, since including <iostream.h>
could cause problems when newer features of the standard C++
library were being used. However, to be compatible with older C++
libraries, HalconCpp.h uses the namespace std by default so that
the iostream operators defined in various classes, e.g., HTuple,
also work with the older C++ libraries. Note, however, that on SGI
machines <iostream.h> is still included because SGI machines
use an older version of the C++ libraries.
Because of this change, all HALCON/C++ applications that make use
of the overloaded input and output operators >> and <<
that HALCON/C++ defined for some classes, e.g., HTuple, must be
recompiled and relinked. Programs that do not use the overloaded
operators >> and << are binary compatible.
Furthermore, if user-developed extension packages are used, they
must be recompiled. Under Windows, libcpmt.lib must be linked with
the C++ language interface of the package. If the standard HALCON
makefiles are used to compile the package, this means that
libcpmt.lib must be added to EXTRA_LD_FLAGS_CPP_LIB and
EXTRA_PAR_LD_FLAGS_CPP_LIB in make.i586-nt4.
-
The include file HOperator.h is now included by HalconCpp.h.
Bug Fixes:
-
The class method HImage::ReadImage threw an exception with the
wrong error code 7200 instead of 5 (H_MSG_FAILED) if the image
could not be opened. This problem has been fixed.
-
A bug in the HALCON exception class 'HException' that sometimes
caused the application to crash has been fixed. The problem
occurred in conjunction with user defined exception handlers that
throw a C++ exception with 'throw' and pass the HException object
as parameter to the 'catch' block.
-
Some methods of the classes HImage, HRegion, and HOperator now
return the error code of the appropriate HALCON operator instead of
0 in case an error occurs.
-
The HALCON/C++ class HOperator sometimes caused errors in the
called operators. This problem has been fixed.
-
The destructors of the classes HContour3D, HContourArray2D,
HContourArray3D, HPolygonArray2D and HPolygonArray3D crashed if an
empty object was created via the copy constructor. This problem has
been fixed.
-
The member Deviation of class HTuple returned a wrong result when 2
values were passed. This problem has been fixed.
Manual:
-
The HALCON/C++ User's Manual is available in a new edition. The
chapter "Exception Handling" now contains an example showing how
to use the C++ exception handling mechanism (try...catch) together
with the class HException.
Examples:
-
The new example examples/cpp/source/example_errorhandling.cpp shows
how to use the standard C++ exception handling (try...catch)
together with the class HException.
-
Several C++ example programs contained wrong calls to the
constructor of HWindow. This problem has been fixed.
-
Some example workspaces for Visual Studio used relative paths.
These paths have been changed to be relative to HALCONROOT.
Manual:
-
The HALCON/COM User's Manual is available in a new edition. It has
been updated and revised, mainly regarding syntax and
layout. Furthermore, it now contains links into the PDF version of
the HALCON/COM Reference Manual.
-
In the HALCON/COM reference manual, control parameters of methods
of the class HOperatorSetX are now correctly declared as VARIANT.
Examples:
-
A memory leak in the example program examples/mfc/MatchingCOM has
been fixed.
- 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 GINGA++
frame grabber boards from LinX Corporation.
-
HALCON now also includes an interface to
the MaxRevolution frame
grabber boards from Datacube.
Modified Frame Grabber Interfaces:
-
The existing HALCON DFG-BW1 frame grabber
interface has been extended to the more general HALCON DFG-BW frame
grabber interface, which supports not only The Imaging Source's
DFG/BW1 frame grabber board, but now also the DFG/BW4 and DFG/RGB2
boards.
-
The following HALCON frame grabber interfaces have been revised: File, BitFlow, DFG-LC, Fire-i, INSPECTA, MultiCam, Opteon, and PCEye. Please refer
to the corresponding documentation for more information, especially
whether a new revision of the corresponding device driver is
required.
Manual:
-
The Frame Grabber Integration Programmer's Manual is available in a
new edition. Two sections about parameter naming conventions and
the use of frame grabber interfaces in ActivVisionTools have been
added. Furthermore, a paragraph about the use of camera
configuration files has been introduced.
Examples:
-
In the directory hdevelop\Image\Framegrabber, the new examples
ginga++.dev, ginga++_2cameras.dev, ginga++_continuous.dev,
ginga++_crop.dev, ginga++_parameters.dev, ginga++_sequence.dev,
ginga++_simple.dev, and ginga++_trigger.dev, show how to use the new frame grabber interface for the LinX
GINGA++ frame grabber boards.
-
In the directory hdevelop\Image\Framegrabber, the new examples
dqvll.dev and dqvll_simple.dev show how to use the new frame grabber interface for the DataCube
MaxRevolution frame grabber boards.
-
In the directory hdevelop\Image\Framegrabber, the partly new,
partly renamed examples dfg-bw.dev, dfg-bw_crop.dev, and
dfg-bw_parameters.dev show how to use the extended frame grabber interface DFG-BW.
-
Further new examples in the directory hdevelop\Image\Framegrabber:
dfg-lc_2boards.dev, fire-i_simple.dev, fire-i_parameters.dev,
fire-i_trigger.dev, fire-i_2cameras.dev, ids_2boards.dev,
opteon_parameters.dev, opteon_queued.dev, opteon_trigger.dev,
pceye_parameters.dev.
-
The following examples in the directory hdevelop\Image\Framegrabber
have been renamed: flashbus2.dev to flashbus_2cameras.dev,
picport_2cam.dev to picport_2cameras.dev, px2.dev to
px_2boards.dev, pxc2.dev to pxc_2boards.dev
-
The following example in the directory hdevelop\Image\Framegrabber
has been removed: fire-i_XCD_SX900.dev
Installation:
-
The default working directory of HDevelop, Parallel HDevelop, and
HDevelop Demo is set to %HALCONROOT%/examples/hdevelop instead of
%HALCONROOT%.
Licensing:
-
HALCON now uses version 8.1 of the FLEXlm
license manager software by GLOBEtrotter. This version provides a
better support of Windows XP.
HALCON 6.0.2 used version 8.0, which introduced the support of the
new dongles that have IDs starting with '6-' and of USB dongles.
|