 |
|
|
Release Notes for HALCON 6.1
|
 |
This document provides the release notes for MVTec HALCON 6.1, as released in
June 2002. HALCON 6.1 is a major new release.
Overview
This document contains the following information:
- Compatibility
- Major New Features of HALCON 6.1
- Detailed Description of Changes in
HALCON 6.1 (relative to HALCON 6.0.2)
- 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
Licenses
All HALCON 6.0 license keys must be replaced or upgraded.
Please contact your local distributor.
HALCON Library
Compared to HALCON 6.0, many extensions have been introduced.
Thus, the HALCON 6.1 libraries are not compatible with HALCON
6.0 or earlier versions.
HALCON Applications
Please re-compile all C or C++ programs developed with HALCON
6.0.x.
The incompatibility with HALCON 6.0 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 6.0.x.
Extension Packages
Please re-generate your own extension packages developed with
HALCON 6.0.x.
ActivVisionTools
The ActivVisionTools versions 1.0 to 2.0 are all based on
HALCON 6.0 (or HALCON 6.0.1); thus, by installing HALCON 6.1 you
would disable your ActivVisionTools installation! Therefore, the
setup program of HALCON 6.1 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 which is
compatible to HALCON 6.1. 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.0, ActivVisionTools
1.0 to 1.3 cannot be used together with HALCON 6.1. If
the setup program of HALCON 6.1 detects such an
ActivVisionTools version, it therefore warns that by
continuing to install HALCON 6.1 you will disable your
ActivVisionTools installation.
If you still want to use your ActivVisionTools installation,
you must also keep your old HALCON 6.0.x installation and
switch back to it as described in the manual 'Getting
Started With HALCON'. Note that if you only want to evaluate
HALCON 6.1, you can minimize the switching effort by
installing only the demo version.
General Features
Extended Functionality
-
HALCON's powerful shape-based matching has been further extended:
Objects can now be recognized even under different scaling. Furthermore, different objects can now be found in a
single call, thereby reducing the preprocessing time and
improving the performance significantly. Other new operators
facilitate the use of the shape-based matching, e.g., by allowing
to modify the reference point of a model. Besides, synthetical
models can now be created more easily and flexibly using new
operators described here.
Last but not least, the position, scaling, and angle of matched
objects can now determined with an up to ten times higher accuracy.
-
Using the new operators for image
rectification, images can be transformed into a world plane
efficiently. This is a useful preprocessing step for operations
relying on the fact that the objects must not be distorted by a
perspective transformation. Notable examples are OCR
applications, in which the camera cannot be mounted
perpendicular to the planar surface on which the characters are
printed. Another application where the rectification of an image is
useful is shape-based matching, which can thus be made robust to a
constant perspective transformation, which can be determined in
advance by using HALCON's powerful 3D calibration.
-
In some applications, defect detection is performed by comparing
the image of the object to examine to a reference image of a
known "good" object, while tolerating some variations in the
objects before marking them as defect. One such application is
mark quality inspection. If, for example, different colors are
printed in different processing steps, the marks printed in
different colors usually will move with respect to each other.
While small movements may be permissible, large
movements, misprints, extra ink, and other kinds of defects will
have to be detected. For such applications, HALCON 6.1 provides
a set of new operators implementing
this so-called variation model.
-
HALCON 6.1 introduces a new measure
tool that uses fuzzy member functions to evaluate and select
edges to be extracted from an image. This is very useful when
extracting edges of objects where it is not possible to determine
a fixed threshold value because of the difficult optical
appearance or illumination of the object.
-
Other new operators provide
New Image Type
-
HALCON 6.1 introduces the new image data type
"uint2" to support applications that need to evaluate the
full 16 bits per pixel resolution. About 160 HALCON operators
have been optimized for this type. This data type is the new
standard data type for 16 bit images. New applications should
use this data type instead of the previous data type "int2".
Enhanced Parallelization
-
The performance of Parallel HALCON has
been further improved: First, by significantly reducing the
parallelization overhead. As a result, the parallelization speedup
increased up to 18% for some operators. Second, over 15 additional
operators can now be automatically processed in parallel, including
often used operators like threshold, median_separate, or
dual_rank. Third, the parallelization at program level has been
further facilitated by allowing the graphics operators to be run
non-exclusively.
HDevelop
New Inspection Tool: Region Feature Histogram
-
HDevelop's inspection tools are now completed by a powerful tool for examining the histogram of region
features, such as area, moments, convexity, circularity,
roundness, etc. Altogether, you can inspect 78 different
features.
The region feature histogram not only displays the distribution of
feature values over all regions, but also assists you in finding
suitable segmentation parameters: You can interactively specify
a minimum and a maximum threshold for the feature values; the
regions fulfilling this condition are automatically highlighted
in HDevelop's graphics window. Thus, you can quickly determine
those values which select the desired regions and then use them
as parameters for the operators select_shape and select_gray.
This is typically the first step in blob analysis applications.
HMatchIt
-
HMatchIt is a front-end to HALCON's powerful shape-based matching,
which lets you locate objects with subpixel accuracy at high speed -
even when they appear rotated, scaled, partly occluded, or under
changing illumination. In its new, further
improved version 2.0, it is now integral part of the HALCON
software.
Documentation
Application Guide
-
With HALCON 6.1, MVTec starts a new form of documenting HALCON: the
Application Guide. In contrast to the existing HALCON manuals, the
Application Guide is written from the point of view of developing
machine vision applications: Instead of describing what the various
HALCON operators do, the Application Guide shows how to use them to
solve machine vision tasks.
The Application Guide consists of multiple, independent documents
called Application Notes, each covering a specific topic.
HALCON 6.1 starts with two Application Notes:
-
Shape-Based Matching
This Application Note explains how to apply HALCON's powerful
shape-based matching to find objects in real-time and
determine their position with subpixel accuracy. Further
topics are how to improve the matching performance, use
synthetical models, and handle complex model ROIs.
- Image Acquisition
This Application Note shows how to connect to simple and
complex configurations of frame grabbers and cameras and how
to acquire images in various timing modes, with the emphasis
on real-time image acquisition.
HALCON/C++ Manual
-
The HALCON/C++ User's Manual has been extended significantly:
Besides including the new handle
classes, it now also describes the basics of the HALCON/C++
interface in more detail, e.g., how to call operators or realize
error handling in the procedural and in the object-oriented way,
or how to combine procedural and object-oriented code.
HALCON Frame Grabber Integration Programmer's Manual
-
The HALCON Frame Grabber Integration Programmer's Manual has been
extended slightly: Two sections about parameter naming
conventions and the use of frame grabber interfaces in
ActivVisionToools have been added. Furthermore, a paragraph about
the use of camera configuration files has been introduced and the
list of currently supported frame grabbers has been updated.
Detailed release notes can be obtained for the following topics:
- HDevelop
- HALCON Library
- HALCON/C
- HALCON/C++
- HALCON/COM
- Frame Grabber Interfaces
- Extension Package Interface
- HMatchIt
- Miscellaneous
Please note that these release notes are relative to HALCON 6.0.2.
If you are upgrading from earlier versions, you should also consult
the release notes for earlier HALCON versions.
Speedup and Enhancements:
-
HDevelop now has a region feature histogram window in which the
feature histogram of the region and gray value features available in
select_shape and select_gray, respectively, are selectable for
display.
-
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.
Functionality:
-
HDevelop now creates the icons in the Variable Watch window for XLD
objects (contours and polygons) in a manner so that the data is
easier to see in the icons. The same algorithm as the one that
is used for regions is used, i.e., the smallest enclosing
rectangle of the XLD contours or polygons is used to set an
appropriate visible part.
-
The height of HDevelop dialogs now is adapted according to the
height of the caption area under Windows.
Examples:
- The new example program
examples/hdevelop/XLD/Features/shape_trans_xld.dev shows how to use
the new operator shape_trans_xld.
-
The new example program
examples/hdevelop/XLD/Features/select_shape_xld.dev shows how
to apply new operator
select_shape_xld.
-
The new example program
examples/hdevelop/Tools/Matching/find_scaled_shape_model.dev
shows how to apply the new operators
for scale-invariant matching.
- The new example programs
examples/hdevelop/Applications/FA/pm_multiple_models.dev and
examples/hdevelop/Applications/FA/print_check_single_chars.dev
show how to use the new operators
for finding instances of multiple models in one call.
- The new example programs
examples/hdevelop/Tools/Calibration/image_to_world_plane.dev and
examples/hdevelop/Tools/Calibration/map_image.dev show how to
apply the new operators for image
rectification. The new example program
examples/hdevelop/Applications/FA/pm_world_plane.dev
combines image rectification with shape-based matching to find
planar objects if the camera is not perpendicular to the objects,
i.e., if the images are perspectively distorted.
-
The new example program
examples/hdevelop/Applications/FA/print_check.dev shows how to
apply the new operators for comparing
images using the variation model.
-
The new example program
examples/hdevelop/Morphology/Gray-Values/pcb-inspection.dev
shows how to apply the new operators for
gray value morphology.
-
The new example program
examples/hdevelop/Applications/Measure/fuzzy_measure_pin.dev
shows how to apply the new operators for
measuring with fuzzy membership functions.
-
The new example program
examples/hdevelop/Filter/Color/cfa_to_rgb.dev
shows how to use the new operator for the
conversion of color filter array images.
-
The new example program
examples/hdevelop/Tools/Hough/hough_lines_dir.dev demonstrates
how to use the new operator hough_lines_dir.
-
The new example examples/hdevelop/Image/Manipulation/paint_xld.dev
shows how to use the new operator
paint_xld
that paints a filled XLD contour or polygon with a defined gray
value into an image.
-
The new example program
examples/hdevelop/Filter/Affine-Transformations/affine_transform_image_size.dev
shows how to use the new
operator for transforming and cropping images at the same
time.
-
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.
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.
The new 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: dfg-lc_2boards.dev, ids_2boards.dev,
opteon_parameters.dev, opteon_queued.dev and opteon_trigger.dev.
-
The subdirectory examples/application_guide/shape_matching/hdevelop
contains 10 new example programs used in the Application Note on Shape-Based Matching.
-
The subdirectory
examples/application_guide/image_acquisition/hdevelop
contains 11 new example programs used in the Application Note on Image Acquisition.
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 Opertors menu.
-
HDevelop's dialog 'File->Read Image' did not suggest the correct
variable names for the input image. 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. These problems have 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 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.
Manual:
-
The HDevelop User's Manual is now available in its 6th edition.
The new inspection tool calculating region feature histograms is
presented in the chapter "Graphical User Interface". Furthermore,
the manual now describes how to find operators and search and
replace variable names.
Speedup and Enhancements:
-
The operators find_shape_model and find_scaled_shape_model
have been extended with a mode in which the pose is determined with
subpixel accuracy by using a least-squares adjustment. While the
current mode, which uses interpolation, is accurate enough for most
applications, even higher accuracy (required by some applications)
can be achieved with this new mode. Note that the least-squares
adjustment adds some runtime to the matching. To select the new
subpixel mode, the parameter SubPixel in find_shape_model and
find_scaled_shape_model supports three new values:
'least_squares', 'least_squares_high', and
'least_squares_very_high', which enable users to specify the
tradeoff between speed and accuracy. Furthermore, the old modes
'false' and 'true' for SubPixel have been renamed to 'none' and
'interpolation', respectively (the old values are still supported
for backwards compatibility, of course).
The internal data of the shape model had to be extended to enable
the least-squares adjustment. Therefore, the operators
read_shape_model and write_shape_model (and consequently the file
format of the shape model files) had to be changed. If shape
models are read with read_shape_model, to make use of the new
subpixel mode, the shape models must be regenerated and written
anew using write_shape_model. Older shape model files can still
be read, of course. However, the new subpixel mode will not be
available and will silently be changed to 'interpolation' to
achieve the same behavior of previous HALCON versions.
Furthermore, the shape-based matching now has a mode in which the
search can be terminated on a higher pyramid level than the lowest
pyramid level. This enables a speedup of the search (in general at
the expense of a reduced accuracy for the pose of the objects).
This mode is selected by specifying two values for NumLevels in
find_shape_model and find_scaled_shape_model.
-
The parallelization overhead of Parallel HALCON has been reduced so
that its speedup for operators parallelized on the domain level
now is up to 15% better. Moreover, the overhead of reentrancy
also has been reduced in order to improve Parallel HALCON's
performance for operators that cannot be parallelized.
Furthermore, Parallel HALCON now can also parallelize operators
that (solely) output regions (e.g., threshold or dyn_threshold)
on domain level.
The graphics operators now run non-exclusively in Parallel HALCON.
-
HALCON has a new image data type for unsigned 16 bit images
(uint2). The following operators support this new image data
type: disp_obj,
disp_image, disp_channel, disp_rgb, convert_image_type, copy_image,
count_channels, change_format, gen_image_const, gen_image_extern,
gen_image1, gen_image3, gen_image_proto, gen_gauss_pyramid,
min_max_gray, gray_histo, area_center_gray, elliptic_axis_gray,
intensity, select_gray, get_grayval, set_grayval,
get_image_pointer1, get_image_pointer3, get_image_pointer1_rect,
get_image_time, derivate_gauss, mean_image, gnuplot_plot_image,
fft_generic, lines_facet, lines_gauss, principal_comp,
simulate_motion,
simulate_defocus, wiener_filter, wiener_filter_ni, threshold,
dyn_threshold, threshold_sub_pix, fast_threshold,
hysteresis_threshold,
nonmax_suppression_amp, nonmax_suppression_dir, tile_images_offset,
tile_images, tile_channels, compose2, compose3, compose4, compose5,
compose6, compose7, decompose2, decompose3, decompose4, decompose5,
decompose6, decompose7, add_channels, image_to_channels,
reduce_domain,
change_domain, crop_domain, crop_domain_rel, crop_part,
crop_rectangle1, full_domain, rectangle1_domain, get_domain,
select_obj, copy_obj, concat_obj, clear_obj, count_obj,
get_obj_class,
test_equal_obj, scale_image, scale_image_max, abs_image, sub_image,
add_image, div_image, mult_image, min_image, max_image,
invert_image,
bit_not, bit_and, bit_or, bit_xor, bit_lshift, bit_rshift,
bit_mask,
bit_slice, emphasize, illuminate, frei_dir, frei_amp, prewitt_dir,
prewitt_amp, kirsch_dir, kirsch_amp, robinson_dir, robinson_amp,
sobel_dir, sobel_amp, edges_image, edges_sub_pix, roberts, laplace,
laplace_of_gauss, gauss_image, affine_trans_image,
affine_trans_image_size, mirror_image, polar_trans_image,
rotate_image,
zoom_image_factor, zoom_image_scale, bandpass_image, convol_image,
lut_trans, expand_domain_gray, monotony, mean_n, texture_laws,
deviation_image, smooth_image, local_max, plateaus,
plateaus_center,
paint_gray, paint_region, receive_image, send_image, read_image,
write_image, read_sequence, measure_pos, measure_pairs,
measure_projection, measure_thresh, gray_projections, find_caltab,
find_marks_and_pose, change_radial_distortion_image,
gen_image_surface_first_order, gen_image_surface_second_order,
fit_surface_first_order, fit_surface_second_order, rank_image,
dual_rank, median_image, median_separate, midrange_image,
trimmed_mean,
find_1d_bar_code, find_1d_bar_code_region, get_1d_bar_code.
-
The operators rank_image, dual_rank, midrange_image,
median_separate, trimmed_mean, and median_image now support int2,
uint2, int4, and real
images; the operator convol_image now supports int2 images. The
semantics of the parameter Margin have been changed so that constant
border gray values can be entered correctly for these newly
supported
image types. The value of -3 for byte images has been replaced with
the string 'mirrored', the value of -2 with the string 'cyclic', and
the value of -1 with 'continued'. For byte images, the above three
negative integer values are still supported for backwards
compatibility reasons.
The default type of the parameter Margin has been changed to string.
This causes a source code incompatibility to older HALCON versions
in HALCON/C. Here, calls to rank_image with values -1, -2, or -3
for Margin should be replaced with calls using the equivalent
strings.
Calls with values between 0 and 255 for Margin must be replaced with
calls to the corresponding tuple mode operator, e.g., T_rank_image
instead of rank_image.
New Operators:
-
HALCON's shape-based matching has been extended by a number of new
operators: The operators create_scaled_shape_model and
find_scaled_shape_model provide functionality to determine the
scale of
objects using shape-based matching. These operators were part of
the HALCON package 'matchscale' released in September 2001. How
to use them is shown in the new example program
examples/hdevelop/Tools/Matching/find_scaled_shape_model.dev.
The new operators find_shape_models and
find_scaled_shape_models can be used to find instances of
multiple models in one call. Using the new operators is
considerably faster than calling find_shape_model or
find_scaled_shape_model multiple times. The new example program
examples/hdevelop/Applications/FA/pm_multiple_models.dev shows
how to use find_shape_models; the new example program
examples/hdevelop/Applications/FA/print_check_single_chars.dev
shows how to use find_shape_models in combination with HALCON's
variation model operators to perform a print check application
where each character needs to be checked separately.
The new operator get_shape_model_params can be used to read out the
defining parameters of the shape model: number of pyramid levels,
angle range and angle step size, scale range and scale step size,
metric, and minimum contrast.
The new operator HALCON set_shape_model_origin enables users to
set the origin (reference point) of the shape model. The origin
is set relative to the standard origin (i.e., the center of
gravity of the domain of the model image). Hence, setting the
origin to (-40,-20) moves the origin to the upper left part of
the model. Additionally,
HALCON has been extended with the operator get_shape_model_origin,
which enables users to read out the current origin of the shape
model.
The new operator clear_all_shape_models frees the memory of all
shape models.
-
HALCON's measure tool now supports the selection of edges based on
fuzzy membership functions via six new operators:
fuzzy_measure_pos, fuzzy_measure_pairs, fuzzy_measure_pairing,
set_fuzzy_measure, set_fuzzy_measure_norm_pair,
reset_fuzzy_measure. How to use them is shown in the new example
examples/hdevelop/Applications/Measure/fuzzy_measure_pin.dev.
-
The four new operators gray_dilation_shape, gray_erosion_shape,
gray_opening_shape and gray_closing_shape provide fast gray value
morphology with a restricted set of structuring elements. These
operators were part of the HALCON package 'graymorph' released in
September 2001. How to use them is shown in the new example
examples/hdevelop/Morphology/Gray-Values/pcb-inspection.dev.
-
There are four new operators for the rectification of images:
gen_image_to_world_plane_map and gen_radial_distortion_map generate
maps for the use in map_image; image_to_world_plane rectifies
images based on the internal camera parameters and the pose of
a world plane (similar to contour_to_world_plane_xld and
image_points_to_world_plane). These operators were part of the
HALCON package 'rectify' released in October 2001. How to use
them is shown in the new example programs
examples/hdevelop/Tools/Calibration/image_to_world_plane.dev,
examples/hdevelop/Tools/Calibration/map_image.dev, and
examples/hdevelop/Applications/FA/pm_world_plane.dev; the latter
shows how to use image rectification together with shape-based
matching.
-
Nine new operators allow to compare images to a reference image,
while taking the variability of objects into account:
create_variation_model, clear_variation_model,
clear_all_variation_models, train_variation_model,
prepare_variation_model,
compare_variation_model, get_variation_model,
write_variation_model, and read_variation_model.
These operators were part of the HALCON
package 'variation' released in November 2001. How to use them
is shown in the new example
examples/hdevelop/Applications/FA/print_check.dev.
-
Twelve new operators enable users to calculate frequently used
shape features of XLD contours and polygons similarly to region
features
(circularity_xld, compactness_xld, convexity_xld, diameter_xld,
eccentricity_xld, elliptic_axis_xld, orientation_xld,
smallest_circle_xld , smallest_rectangle1_xld,
smallest_rectangle2_xld), to select XLD contours based on these and
previously available shape features (select_shape_xld), and to transform XLD
contours (shape_trans_xld), e.g.,
into their convex hull. These operators were part of the HALCON
package
'xldfeat' released in December 2001. The new example program
examples/hdevelop/XLD/Features/shape_trans_xld.dev shows how to use
shape_trans_xld;
examples/hdevelop/XLD/Features/select_shape_xld.dev
shows how to use select_shape_xld.
-
The operator cfa_to_rgb has been added. It converts color filter
array images (i.e., Bayer pattern images) to RGB images.
The new example
program examples/hdevelop/Filter/Color/cfa_to_rgb.dev
demonstrates how to use the operator.
-
The operators hough_lines_dir and hough_line_trans_dir have been
added, which provide a faster and more selective Hough
transformation for lines by using the gradient direction returned
by edge filters. The new example program
examples/hdevelop/Tools/Hough/hough_lines_dir.dev
demonstrates how to use the operator hough_lines_dir.
-
HALCON has a new operator affine_transform_image_size that enables
users to specify the desired output image size. This is useful
when transforming and cropping images at the same time.
The new example programs
examples/hdevelop/Filter/Affine-Transformations/affine_transform_image_size.dev
and examples/hdevelop/Applications/FA/print_check_single_chars.dev
show how to use this operator.
-
The operators set_socket_timeout and get_socket_timeout have been
added. They provide a timeout mechanism for all socket operators
that receive data (receive_image, receive_region, receive_tuple,
and receive_xld) and for socket_accept_connect.
-
The operator translate_measure has been added. It allows to
translate a measure object efficiently without having to recreate
it with close_measure and gen_measure_rectangle2 or
gen_measure_arc. How to use this operator is shown in the new
example program
examples/application_guide/shape_matching/align_measurements.dev.
Furthermore, the new operator close_all_measures frees the memory
of all measure objects.
-
The operator clear_all_templates has been added. It frees the
memory of all templates.
-
HALCON now has an operator gen_image_surface_first_order. Its
functionality is similar to gen_image_gray_ramp. In addition,
the type of the output image can be specified (similar to
gen_image_surface_second_order).
-
HALCON has a new operator paint_xld that paints a filled XLD
contour or polygon with a defined gray value into an image.
The border of the contour is painted using anti-aliasing.
This operator can be used, for example, to create synthetic
images from which an ideal shape model can
be created. How to use this operator is shown in the new example
examples/hdevelop/Image/Manipulation/paint_xld.dev.
Furthermore, the new operator gen_contour_polygon_rounded_xld
enables users to create XLD contours with rounded corners from
polygon data; the new operators gen_region_contour_xld and
gen_region_polygon_xld create a filled region from an XLD
contour or polygon, respectively.
-
The new operator get_os_window_handle returns the operating system
window handle and hence enables applications to perform custom
drawing into the HALCON window.
-
HALCON now has an operator get_window_attr, with which the
attributes that can be set with set_window_attr can be read.
-
The new operator gray_histo_abs allows to obtain frequencies of
gray values with adjustable gray scale from images.
Modified Operators:
-
The operator count_seconds has been extended to be able to
measure the total elapsed time as well as the processor time.
set_system("clock_mode",...) can be used to select the desired
behavior of count_seconds: If the mode is set to "processor_time",
the time used by the process itself is returned. This is the same
behavior as in previous HALCON versions and also the default
behavior. If the mode is set to "elapsed_time", the total
elapsed time is returned.
-
The operators for gray-value and shape-based matching now have
their own top-level chapter in the manual:
Matching/Gray-Value-Based and Matching/Shape-Based, respectively.
-
The operator mean_n now supports int2 and int4 images.
-
The operator mirror_image now supports int4 and real images.
-
The operator integer_to_obj no longer has a default value for the
parameter 'SurrogateTuple'.
-
The operators trans_from_rgb and trans_to_rgb now support the
YUV color space transformation.
Bug Fixes:
-
The operator x_range_funct_1d returned a wrong value XMax 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.
This problem has been fixed.
-
The operators trans_to_rgb and trans_from_rgb produced incorrect
results for ColorSpace = 'hsi'; trans_to_rgb sometimes produced
incorrect results for ColorSpace == 'hsv'. Both 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 returned the error 6001 (not enough memory available)
for this choice of MergeBorder.
-
An error in the operator decode_2d_bar_code concerning the
decoding of 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_chain, and
get_region_polygon sometimes returned the error 6041 (No memory
block allocated at last). This problem has been fixed.
-
The operators set_rgb, set_pixel, set_hsi, tile_images_offset,
principal_comp, integer_to_obj, obj_to_integer,
select_matching_lines and concat_ocr_trainf specified parameters
as tuples only although the parameters can be passed as simple
values as well. 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 operator elliptic_axis_gray sometimes returned illegal results.
This problem has been fixed.
-
For operators with more than one iconic input parameter, Parallel
HALCON now always returns the same output object domain as
(standard) HALCON, even if the domains of input objects of
different parameters are different. In former HALCON versions,
this bug affected the operators add_image, sub_image, div_image,
mult_image, min_image, max_image, select_grayvalues_from_channels,
rgb3_to_gray, trans_from_rgb, and trans_to_rgb.
-
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 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 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 if
Mode = 'paralleltoo' or Mode = 'every'. All 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 dictance. 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 close_edges_length no longer crashes if edges are
traced to the border of the image.
-
The operator find_shape_model sometimes discarded too many
instances based on their overlap. This problem has been fixed.
Manual:
-
The manual "Getting Started with HALCON" is available in its 6th
edition. The problems occurring in conjunction with the new
version of the dongle driver required for HALCON 6.0.2 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 new "Application Note on Shape-Based Matching" can be found
via the Windows Start Menu or in the
subdirectory doc/pdf/application_guide. It
shows how to apply HALCON's powerful shape-based matching to find
objects in real-time and determine their position with subpixel
accuracy with the help of 10 new HDevelop example programs, which
can be found in the subdirectory
examples/application_guide/shape_matching/hdevelop.
-
The new "Application Note on Image Acquisition" can be found via
the Windows Start Menu or in the subdirectory
doc/pdf/application_guide. It shows how to how to connect to
simple and complex configurations of
frame grabbers and cameras and how to acquire images in various
timing modes with the help of 15 new example programs (11 for
HDevelop, 2 in
C, 1 in C++, 1 for Visual Basic), which can be found in the
subdirectory examples/application_guide/image_acquisition.
Programming:
-
The HALCON/C interface has been modified such that operators that
only return tuples are only available in the correct T_-form of the
operator. The reference manuals now show all available operator
forms.
Examples:
-
The subdirectory examples/application_guide/image_acquisition/c
contains two new example programs used in the Application Note on Image Acquisition:
use_extern_image.c shows how to integrate externally created images
into HALCON, error_handling_timeout_picport.c shows how to react
to a timeout error (preconfigured for the HALCON PicPort frame
grabber interface).
Speedup and Enhancements:
-
The runtime behavior of HALCON/C++ has been improved.
Tuples with a large number of values are passed more quickly from
the operators to the tuples in C++.
-
HALCON/C++ now provides access to all functionality via classes.
The underlying data is encapsulated in a handle, which is
contained in every instance of such a class.
The new HALCON/C++ classes are:
HFramegrabber, HShapeModel, HVariationModel, HTemplate, HMeasure,
HFile, HSerial, HSocket, HBarCode1D, HBarCode2D, HBgEsti, HOCR,
HOCV, HClassBox, HFunction1D, HGnuplot.
Programming:
-
HALCON/C++ now has a class HUInt2Image that encapsulates uint2
(unsigned 16 bit) images.
-
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 (old) 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.
-
HALCON/C++ now includes operators with simple mode input control
parameters wherever possible. On the other hand, it no longer
includes operators in simple mode that always return tuples.
-
The HALCON/C++ classes HXLD and HXLDArray are no longer virtual,
i.e., all XLD functionality is now available via classes.
Operators with object parameters of semtype 'xld' and
'xld-array', respectively, that were so far only available
via global HALCON/C++ functions are now members of the classes
HXLD and HXLDArray, respectively.
Bug Fixes:
-
A bug in the HALCON exception class 'HException' that may cause the
application to crash was fixed. The problem occurred if a
user-defined exception handler threw an C++ exception with
'throw' and passed the HException object as parameter to the
'catch' block.
-
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.
-
In the case of an error, some methods of HImage, HRegion,
and HOperator returned 0 instead of the error code of the
responsible HALCON operator; this problem has been fixed.
Manual:
-
The HALCON/C++ User's Manual has been revised and extended
significantly and is now available in its 6th edition. The basics
of the HALCON/C++ interface, e.g., how to call operators in the
procedural and in the object-oriented way or how to realize
error handling, are now described in detail in a new chapter;
the section "Exception Handling" has been extended by an example
showing how to use the C++ exception handling mechanism
(try...catch) together with the class HException.
Furthermore, the chapter describing the parameter classes
has been updated and now also lists the new handle classes.
Examples:
-
The directory structure for the C++ examples has been modified: The
source files have been moved to the new subdirectory 'source' of
the base directory 'examples/cpp'; the executables generated with
gmake/nmake are placed in the (automatically created) subdirectory
'bin/$ARCHITECTURE'. The Visual Studio projects are still in the
subdirectory 'i586-nt4'.
The set of makefiles has been adapted to the new directory
structure; besides, its use has been facilitated: You can now
generate an executable by directly specifying its name, e.g.,
call 'gmake/nmake pen' to compile and link the file
'source/pen.cpp'; furthermore, you can generate all example
programs at once with the call 'gmake/nmake all'.
-
Nine new example programs have been added in examples/cpp/source:
example_errorhandling.cpp shows how to use the standard C++
exception handling (try...catch) together with the class
HException; the programs bottle2.cpp, ean13.cpp, ecc200.cpp,
engraved2.cpp, fuzzy_measure_pin.cpp, multi_chars.cpp, pen.cpp,
and xing.cpp realize the same application as the corresponding
HDevelop examples by using the HALCON/C++ classes. In the
subdirectory 'i586-nt4', the corresponding Visual Studio projects
have been added.
-
The subdirectory examples/application_guide/image_acquisition/cpp
contains a new example program used in the Application Note on Image Acquisition:
error_handling_timeout_picport.cpp shows how to react to a timeout
error (preconfigured for the HALCON PicPort frame grabber
interface).
Speedup and Enhancements:
-
The class HXLDX contained eight member functions: AreaCenterXld,
DispXld, GetParallelsXld, LengthXld, MomentsAnyXld, MomentsXld,
ReceiveXld, and SendXld. Because of this, calling these
functions on an object of a derived class, e.g., HXLDContX, was
quite cumbersome since the objects had to be cast to HXLDX using
the operator Cast().
To make calling these functions easier, the class HXLDX has been
made an abstract class, and the above eight operators have been
moved to the classes HXLDContX, HXLDPolyX, HXLDParaX,
HXLDModParaX, and HXLDExtParaX.
Manual:
-
The HALCON/COM User's Manual is now available in its 3rd 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:
-
The subdirectory examples/application_guide/image_acquisition/vb
contains a new Visual Basic example program used in the Application Note on Image Acquisition:
error_handling_timeout_picport/error_handling_timeout_picport.vbp
shows how to react to a timeout error (preconfigured for the
HALCON PicPort frame grabber interface).
- 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:
DFG-LC,
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 its 6th 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.
Programming:
-
The debugging procedure HTestAllocTmp has been renamed to
HXTestAllocTmp, and a new macro HTestAllocTmp, which calls
HXTestAllocTmp and which fits the description in the Extension
Package Interface Programmer's Manual has been introduced.
Extension packages that use HTestAllTmp should be rewritten to
either omit the last two parameters of the call or to call
HXTestAllocTmp instead.
Speedup and Enhancements:
-
HMatchIt now is able to handle scaled shape models.
The dialog 'Edit Standard Model Parameters' now enables users
to specify the minimum and maximum scale of the model. The
dialog 'Edit Advanced Model Parameters' enables users to specify
the scale step size. The dialog 'Determine Pose Bounds' now also
displays statistics about the scale of the found objects.
-
HMatchIt now is able to determine the recognition rate if more than
than one match should be found. This change also enable users to
optimize the recognition speed if more than one match should be
found. There now are three modes to determine the recognition
rate:
-
Find at least one model instance: In this mode, the recognition
rate is 100% if at least one model instance is found in each
image.
-
Find maximum number of model instances: In this mode, the
recognition rate is 100% if exactly the number of matches
specified in the dialog 'Edit Standard Run Parameters' is
found in each image.
-
Find number of instances selected manually: In this mode, the
recognition rate is 100% if exactly the number of visible objects
specified manually for each image in the dialog 'View Test
Images' is found in each image.
The dialog 'View Test Images' has been extended by a scroll
bar and text field to enable users to specify this information.
Functionality:
-
HMatchIt now enables users to set the new parameters of the
shape-based matching (the subpixel mode and the last level on
which the matching is performed). The Edit Advanced Run
Parameters dialog has been extended to enable users to specify
these parameters.
Miscellaneous:
-
The layout of the dialogs View Test Images, Determine Recognition
Rate, Determine Pose Bounds, and Optimize Recognition Rate have
been changed to create a consistent look-and-feel.
-
The shortcuts to define the ROI in HMatchIt have been changed from
F1-F5 to F2-F6 because the shortcut F1 is used for the help system.
-
The layout of the menu Edit in HMatchIt has been changed.
The model and run parameters now each have their own submenu.
Example Images:
-
The images images/green-dot.tif and images/green-dots.tif have
been added; they are used in the new example program for scale-invariant matching.
-
The images in images/pen have been added; they are used in the new
example program for the variation model.
-
The image images/pcb.tif has been added; it is used in the example
program for gray value morphology.
-
The images in images/radius-gauges have been added; they are
used in the new example program combining shape-based matching
with image rectification.
-
The images in images/metal-parts have been added; they are
used in the new example program for finding multiple models in an image.
-
The images razors1.tif, razors2.tif, and rings_and_nuts.tif in
images/, and the images in images/rings, images/capacitors, and
images/cd_cover have been added; they are used in the new example
programs for the Application Note on
Shape-Based Matching.
-
The images images/clips have been added; they are used in one
of the new example programs for the Application Note on Image Acquisition.
|