 |
|
|
Release Notes for HALCON 7.0.2
|
 |
This document provides the release notes for MVTec HALCON 7.0.2, as
released in April 2005. HALCON 7.0.2 is primarily a maintenance
release that fixes all known bugs in HALCON 7.0.1;
besides, it provides added functionality and speedups.
Overview
This document contains the following information:
- Compatibility
- Detailed Description of Changes in
HALCON 7.0.2
- Major
New Features of HALCON 7.0
- Detailed
Description of Changes in HALCON 7.0.1
- Detailed
Description of Changes in HALCON 7.0
- Major
New Features of HALCON 6.1
- Detailed
Desription of Changes in HALCON 6.1.2
- Detailed
Description of Changes in HALCON 6.1.1
- Detailed Description
of Changes in HALCON 6.1
Compatibility
Licenses
HALCON 7.0 licenses are also valid for HALCON 7.0.2. In
contrast, all HALCON 6.1 licenses must be replaced or
upgraded. Please contact your local distributor.
HALCON Library
HALCON 7.0.2 is fully compatible with HALCON 7.0.
Compared to HALCON 6.1, many extensions have been introduced.
Thus, the HALCON 7.0.2 libraries are not compatible with
HALCON 6.1 or earlier versions.
HALCON Applications
Applications (i.e., executables) developed with HALCON 7.0.1
can be used with HALCON 7.0.2, i.e., HALCON 7.0.2 is binary
compatible with HALCON 7.0.1. In contrast, C++ programs
developed with HALCON 7.0 that use methods of the class
HMeasure must be re-compiled and linked, because of a bug fix
in the operators set_fuzzy_measure and
set_fuzzy_measure_norm_pair. This means that HALCON
7.0.2 is not completely binary compatible with HALCON 7.0.
C or C++ programs developed with HALCON 6.1.x must be
re-compiled. The incompatibility with HALCON 6.1 or earlier
versions mainly concerns the binaries, with only few changes
in the operators' signatures. If you encounter problems
during recompiling your programs, please check the detailed
description of changes below and look up the signatures of
the concerned operators in the reference manual.
Frame Grabber Interfaces
If you developed your own frame grabber interfaces with
HALCON 7.0 or 7.0.1, you can use them with HALCON 7.0.2
without further action. Frame grabber interfaces developed
with HALCON 6.1.x are binary compatible with HALCON 7.0.2,
interfaces developed with older versions must be re-generated.
Please make sure that you no longer use the old PicPort,
PicPortPro or PicProdigy interfaces that are part of older
Leutron LV-SDS releases since these interfaces are not fully
compatible with HALCON 7.0.2. Please use the new Leutron
interface instead.
Extension Packages
Extension packages developed with HALCON 7.0 or 7.0.1 can be
used with HALCON 7.0.2 without further action. Extension
packages developed with HALCON 6.1.x must be re-generated.
ActivVision Tools
ActivVisionTools 3.0 is based on HALCON 7.0.1.1., which
is a prerelease of HALCON 7.0.2. All older ActivVisionTools
versions are based on HALCON 6.1.1 or below and can therefore
not be used directly with HALCON 7.0.2. By installing HALCON
7.0.2, you would thus disable such an ActivVisionTools
installation. Therefore, the setup program of HALCON 7.0.2
checks whether there is an ActivVisionTools installation on
your computer.
Detailed Description of Changes
in HALCON 7.0.2
Detailed release notes can be obtained for the following topics:
- HDevelop
- HALCON Library
- HALCON/C
- Frame Grabber
Interfaces
- Miscellaneous
Functionality
-
In HDevelop, the working directory now always equals the
directory that contains the current HDevelop program.
-
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, and xor (they
return an error).
-
HDevelop's undo and redo functionality has been extended.
It now also applies to the adding and deleting of procedures
and to the modification of a procedure's interface.
-
HDevelop's Visual Basic export now uses different prefixes for
different variable classes. Furthermore, it now exports
DoEvents with conditional compilation to Visual Basic.
Accordingly, in the HDevelop Visual Basic template program
examples\vb\HDevelopTemplate the conditional compilation
statement USE_DO_EVENTS is set to 1 in the project properties
dialog. Finally, HDevelop now exports a module name to Visual
Basic. The module name is derived from the HDevelop program
name with the same algorithm that is used to transform operator
names.
Bug Fixes
-
HDevelop automatically continued execution after loading a
new program. This problem has been fixed.
-
HDevelop sometimes exported break statements incorrectly to C.
This problem has been fixed.
-
In rare cases, HDevelop exported recursive assignments
incorrectly to C. This problem has been fixed.
-
HDevelop exported recursive assignments incorrectly to C++ if
the assigned expression was a string concatenation. This
problem has been fixed.
-
The following parts of HDevelop's Visual Basic export contained
bugs, which have been fixed: Export of array accesses, export
of operator calls that use the same variable as input and
output, and export of programs containing the internal
HDevelop operator insert.
Examples
-
The new example
hdevelop\Image\Framegrabber\baumerfcam_flash.dev
shows how to use the new parameters 'flash_mode' and
'flash_invert' to control the flash ability of the driver.
Speedup and Enhancement
- The operators add_image, div_image, mult_image, scale_image,
and sub_image are now substantially faster for uint2
images.
-
The operator deviation_image is now faster by up to 40%.
-
The operator expand_domain_gray is now faster when expanding
the gray values beyond the image border.
-
The operator proj_match_points_ransac now typically finds
more point matches, potentially leading to a more accurate
determination of the projective transformation.
-
The operators train_class_mlp and train_ocr_class_mlp now
use less memory for extremely large training sets (e.g.,
for OCR training sets that contain several thousands of
samples).
-
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.
Modified Operators
-
The operators camera_calibration, binocular_calibration, and
hand_eye_calibration now also enable users to explicitly
exclude complementary values for the parameter
EstimateParams.
-
The operator create_bg_esti is now able to create an
unlimited number of background estimators, i.e., the
number of background estimators is only limited by the
available memory.
-
The operator expand_domain_gray now supports images of
pixel type byte, 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 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,
tuple_gen_const, tuple_not, tuple_or, tuple_and, and
tuple_xor (they return an error).
-
The operator read_image is now able to read BMP files
that have been saved with a BITMAPV4HEADER or
BITMAPV5HEADER header structure.
-
The operator read_serial now returns immediately with the
available characters if both timeouts are set to zero.
-
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.
-
In the operator set_grayval, the tuple length of the input
control parameters Row, Column, and Grayval was limited to
100,000 elements. This limitation has been removed.
-
The operator watersheds now returns connected watersheds,
i.e., the output region Watersheds now contains a region
that completely separates the basins so that they no longer
touch each other. Furthermore, the resulting watersheds
now are, at least approximately, in the neighborhood that
has been set with set_system('neighborhood', ...).
-
The operator write_tuple 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 operator add_samples_image_class_mlp did not add all
samples correctly. This problem has been fixed.
-
The operators approx_chain and approx_chain_simple crashed in
rare cases on 64 bit systems with a floating exception.
This problem has been fixed.
-
The operators binocular_disparity, binocular_distance,
correlation_fft, and edges_color returned incorrect results
when passing special image arrays. 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 operator change_radial_distortion_image crashed if the
region of interest was larger than the image. This problem
has been fixed.
-
The operator correlation_fft did not return the correct
result when the first input object contained identical
input images. This problem has been fixed.
-
The operator count_relation returned a wrong number of data
base entries. This problem has been fixed.
-
The operator create_component_model got stuck within an
infinite loop if only one component region was passed in
ComponentRegions, AngleExtent was set to 0, and
PregenerationComp was set to 'false'. This problem has been
fixed.
-
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
parameters, 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 operators create_shape_model and
create_scaled_shape_model returned the HALCON error 6005
(Tmp-memory management: Null pointer while freeing) if a
very large template was given and if the contrast was set
to a small value. Now, the error 6001 (Not enough memory
available) is returned.
-
The operators critical_points, local_max_sub_pix,
local_min_sub_pix, and saddle_points had a memory leak.
These problems have 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 completely 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_* could crash if feature 'cooc' was used
for the training. Furthermore, they crashed if the character
region lay partially outside the image. These problems have
been fixed.
-
The operator dyn_threshold 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. The 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.
-
In some rare cases after using the training mode of the
HALCON data code reader, the operator find_data_code_2d
could not read some symbols. This problem has been fixed.
-
In rare cases, the operator find_data_code_2d on a QR Code
model returned the error message 'Memory partition on heap
has been overwritten'. Furthermore, there was a problem
with small ROIs in the operator find_data_code_2d: In some
cases the operator returned with the error 'convol: no
filter object has got empty region'. These problems have
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 operator fit_circle_contour_xld crashed in rare cases on
64 bit systems with a floating exception. This problem
has been fixed.
-
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 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 gray_histo crashed with int4 images whose gray
value range exceeded abs(INT4_MIN). This problem has been
fixed.
-
The operator gray_inside did not converge in rare cases. This
problem has been fixed.
-
The operator gray_projections returned wrong values for the
parameter VertProjection if the parameter Mode was set to
'rectangle' and a byte image was passed in Image. This
problem has been fixed.
-
The operator hough_line_trans crashed in rare cases. This
problem has been fixed.
-
The operator info_framegrabber crashed if the output
parameters were declared as char* and ValueList returned a
NULL pointer. This problem has been fixed.
-
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 operators min_max_gray and scale_image_max returned wrong
results for int4 images whose gray value range exceeded
abs(INT4_MIN). This problem has been fixed.
-
The feature 'moments_central' in the OCR classifiers was
computed incorrectly. 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.
-
The operator proj_match_points_ransac used a wrong distance
threshold internally: instead of DistanceThreshold,
sqrt(DistanceThreshold) was used. The operator
proj_match_points_ransac now uses DistanceThreshold
correctly.
-
The operator query_font now works correctly under Windows.
-
The operator read_data_code_2d_model read the symbol size
incorrectly from models written with
write_data_code_2d_model. 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.
-
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, or 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 operator split_contours_xld crashed in extremely rare
cases for Mode 'dominant'. This problem has been fixed.
-
The operator trainf_ocr_class_mlp sometimes crashed if the
classifier was not created with create_ocr_class_mlp, but
instead was created by reading an existing classifier with
read_ocr_class_mlp. 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 operator translate_measure sometimes deleted the fuzzy
evaluation functions. This problem has been fixed.
Manual
-
The documentation of correlation_fft and
select_grayvalues_from_channels has been extended to clarify
the possible numbers of images in the input object parameter
2.
Bug Fixes
-
The insertion of a single value into a tuple using the
functions set_i, set_d, or set_s caused a memory leak if the
tuple already contained a value of type string at the given
input position. This problem has been fixed.
-
The latest information about new extensions and newly supported
boards can be found on MVTec's web
server.
Modified Frame Grabber Interfaces
-
The following HALCON frame grabber interfaces have been
revised:
BARRACUDA,
BaumerFCAM,
Basler BCAM 1394,
BitFlow,
DFG-BW1,
DFG-LC,
DirectShow,
DT315x,
DT3162,
FirePackage,
FlashBus MV,
FlashBus MX,
GINGA,
Ginga++,
IDS,
Inspecta,
Leutron,
MatrixVision,
Meteor-II,
MultiCam,
Opteon,
p3i2,
p3i4,
PCEye,
Px,
Pxc,
Pxd,
PXR800,
TWAIN, and
uEye.
-
All HALCON frame grabber interfaces have been revised to
allow a more generic integration into ActivVisionTools:
The query types 'bits_per_channel', 'camera_type',
'color_space', 'device', 'external_trigger', 'field', and
'port' for info_framegrabber now provide specific
value lists for the corresponding parameters in
open_framegrabber.
Please refer to the corresponding documentation for
information about additional changes, especially whether a
new revision of the corresponding device driver is required.
Manual
-
The query types of info_framegrabber have been extended in such
a way that all queries regarding the general frame grabber
parameters now should provide explicit value lists. Thus, the
Programmer's Manual on Frame Grabber Integration has been
extended accordingly.
Examples
-
The query types of info_framegrabber have been extended in
such a way that all queries regarding the general frame
grabber parameters now should provide explicit value lists.
Thus, the frame grabber integration template
examples\fg_integration\HFGTemplate.c has been extended
accordingly.
Licensing
-
HALCON now uses version 9.5 of the FLEXlm
license manager software. The underlying dongle drivers have
also been updated to version 4.96 (HASP for USB dongles) and
5.41 (Sentinel for Parallel Port dongles) to ensure maximum
compatibility with current Windows operating systems.
Installation
-
When installing additional components of a HALCON
installation with the InstallShield setup program it could
happen that already installed components were re-installed:
If you selected an item in the left window of the component
dialog (e.g., 'Examples') *all* sub-components of this
component were installed including the ones that were already
installed on your system. This problem has been fixed.
-
HALCON now includes description files for all standard
calibration plates. Thus, the three files caltab_6mm.descr,
caltab_2500um.descr, and caltab_650um.descr have been added
to the %HALCONROOT%\calib directory.
-
By default, the HALCON setup program now sets the environment
variable %HALCONIMAGES% to the value '%HALCONROOT%\images'
instead of '%HALCONROOT%\images;%CDROM%\images' with %CDROM%
the actual drive letter. On some systems the old setting
leads to the effect that every call of read_image requires
the CD in the drive until the installation CD is actually
unmounted correctly.
Documentation
-
Under Linux, it is now possible to use dongle-bound licenses
with USB dongles. The Installation Guide has been updated
accordingly.
-
In the Application Note on 3D Machine Vision, the section on
how to obtain a suitable calibration plate has been revised.
-
The documentation of the operators affine_trans_contour_xld
and affine_trans_polygon_xld describes now the underlying
coordinate system.
-
The Application Note on Shape-Based Matching now describes
that the XLD model contours can be queried with an operator
and that they are saved along with the model. The example
programs in
examples\application_guide\shape_matching\hdevelop have been
adapted accordingly.
-
The Application Note on Shape-Based Matching now explains
how to use models that are not pregenerated and describes
the advantages and disadvantages of this method.
-
The documentation of the operators find_shape_model
and find_scaled_shape_model contains now example code, which
demonstrates the usage of the operators.
-
The documentation of the operator select_gray now mentions
that the maximum number of features is limited to 100.
|