Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
1
● HALCON
● Overview This document provides the release notes for MVTec HALCON 7.1, as
released in August 2005. HALCON 7.1 is a major new release.
● News
● Applications
● Solutions
Overview
● Technical Data
● Tutorials
Major New Features of HALCON 7.1
● Frame Grabber Detailed Description of Changes in HALCON 7.1 (relative to
● HDevelop
HALCON 7.0.2)
● HMatchIt
Major New Features of HALCON 7.0
● Packages Detailed Description of Changes in HALCON 7.0.2
● Where To Buy Detailed Description of Changes in HALCON 7.0.1
Detailed Description of Changes in HALCON 7.0
● Support
● Download
❍ Registration
❍ Demo Version
❍ Full Version
Compatibility
● Demo Version
● MVTec Licenses
All HALCON 7.0 licenses must be replaced or upgraded. Please
contact your local distributor.
HALCON Library
Compared to HALCON 7.0, many extensions have been
introduced. Thus, the HALCON 7.1 libraries are not compatible
with HALCON 7.0 or earlier versions.
HALCON Applications
Please re-compile all C, C++, or COM programs developed with
HALCON 7.0.x.
The incompatibility with HALCON 7.0 or earlier versions mainly
concerns the binaries, with only few changes in the language
interfaces. If you encounter problems during recompiling your
programs, please check the detailed description of changes
below.
Please note the following incompatibilities:
■ Due to the introduction of the C++ namespace "Halcon", old
HALCON/C++ programs cannot be compiled. You must adapt
them by using the namespace.
■ HALCON/C++ programs that use iostream operators must be
modified by including the new header file "HIOStream.h".
■ HALCON/COM programs that use default values that are not at
the end of the parameter list must be modified so that the
default parameters appear at the end of the list.
■ Applications using the operators sobel_amp and sobel_dir
must be adapted to the changed behavior of the operators.
Extension Packages
Please re-generate your own extension packages developed with
HALCON 7.0.x.
ActivVisionTools
Since all ActivVisionTools versions are based on HALCON 7.0.1
or below, none of them can be used directly with HALCON 7.1. By
installing HALCON 7.1, you would thus disable such an
ActivVisionTools installation. Therefore, the setup program of
HALCON 7.1 checks whether there is an ActivVisionTools
installation on your computer and warns you that by continuing to
install HALCON 7.1 you will disable your ActivVisionTools
installation.
■ If you have been using ActivVisionTools 3.0, please contact
your distributor for further information on how to run this
version together with HALCON 7.1.
■ In contrast, ActivVisionTools 1.0 to 2.2 cannot be used
together with HALCON 7.1.
If you still want to use your ActivVisionTools installation, you
must also keep your old HALCON installation and switch back
to it as described in the "Installation Guide". Note that if you
only want to evaluate HALCON 7.1, you can minimize the
switching effort by installing only the demo version.
Extended Functionality
❍ HALCON's data code reader can now also read PDF417 data
codes. The reader is robust to occlusions and to poor print quality,
invariant to image contrast and to rotation, and allows
simultaneous detection of multiple instances. All features of
PDF417 are supported.
❍ HALCON now provides pre-trained OCR classifiers that are based
on a large amount of training data stemming from various
application areas. These fonts allow you to read text on forms, on
pharmaceutical or industrial products, dot prints, and even
handwritten numbers. Furthermore, HALCON includes pre-trained
fonts for OCR-A, OCR-B, and MICR.
❍ So far, HALCON offered the 3D camera calibration for area scan
cameras. With HALCON 7.1 you can now also calibrate line scan
cameras.
❍ HALCON now provides radiometric self-calibration (gray value
calibration). This preprocessing step increases the accuracy of all
high-accuracy machine vision methods like shape-based
matching, point finders, measurements, or subpixel line and edge
extraction. The calibration process needs no special calibration
target and no optimized illumination.
❍ With HALCON 7.1, most parameters of the shape-based matching
can be determined automatically.
❍ HALCOn now provides operators for uncalibrated binocular
stereo. For this, no special calibration target is needed.
❍ HALCON now provides operators for the self-calibration of a
camera rotated around its optical center and for spherical
mosaicking (360° mosaicking). For this calibration process, no
special calibration target is needed.
❍ HALCON now provides operators for inpainting. These operators
can be used, e.g., to reconstruct destroyed image data or to
remove unwanted image parts.
❍ More filtering operators have been sped up by providing an MMX
implementation.
HDevelop
External Procedures
HDevelop procedures can now also be stored externally. Thus,
multiple programs can use the same procedures.
Documentation
HDevelop Tutorials
The two tutorials Getting Started With HDevelop and Creating an
HDevelop Application introduce you to the interactive development
tool HDevelop.
HDevelop
HALCON Library
HALCON/C
HALCON/C++
HALCON/COM
Frame Grabber Interfaces
Extension Package Interface
HMatchIt
Supported Operating Systems
Miscellaneous
Please note that these release notes are relative to HALCON 7.0.2. If you
are upgrading from earlier versions, you should also consult the release
notes for earlier HALCON versions.
HDevelop
Functionality:
❍ HDevelop's language provides the following new tuple functions:
■ cumul calculates the cumulative sums of a tuple.
■ remove removes a set of elements from a tuple.
■ median calculates the median of a tuple.
Examples:
❍ The new example program examples/hdevelop/explore_halcon.
dev demonstrates a multitude of machine vision solutions from
many different industries and application areas.
❍ The new example programs pdf417_simple.dev and
pdf417_optimized.dev in examples/hdevelop/Applications/
Datacode and pdf417_default_settings.dev and
pdf417_optimized_settings.dev in examples/hdevelop/Tools/
Datacode show how to read PDF417 data codes.
❍ The new example programs examples/hdevelop/Tools/Calibration/
line_scan_calibration.dev and examples/hdevelop/Applications/
Calibration/world_coordinates_line_scan.dev show how to
calibrate line scan cameras.
❍ The new example program examples/hdevelop/Tools/Calibration/
radiometric_self_calibration.dev shows how to use the new
operator radiometric_self_calibration.
❍ The new example programs examples/hdevelop/Tools/Calibration/
get_circle_pose.dev and examples/hdevelop/Applications/
Calibration/3d_position_of_circles.dev show to use the new
operator get_circle_pose.
❍ The new example program examples/hdevelop/Tools/Calibration/
stationary_camera_self_calibration.dev shows how to use the new
operator stationary_camera_self_calibration.
❍ The new example program examples/
application_guide/3d_machine_vision/hdevelop/
bundle_adjusted_mosaicking.dev shows how to use the new
operators for bundle-adjusted mosaicking.
❍ The example program examples/hdevelop/Tools/2D-
Transformations/gen_projective_mosaic.dev has been rewritten to
use the new operators for bundle-adjusted mosaicking.
❍ The new example programs examples/hdevelop/Tools/Stereo/
uncalib_stereo_boxes.dev and examples/hdevelop/Applications/
Stereo/board_segmentation_uncalib.dev show how to use the new
operators for uncalibrated binocular stereo.
❍ The new example programs handeye_create_robot_poses.dev,
handeye_stationarycam_calibration.dev,
handeye_movingcam_calibration.dev, and
handeye_stationarycam_grasp_nut.dev in examples/
application_guide3d_machine_vision/hdevelop show how to use
HALCON's hand-eye calibration for robot vision. They are
described in detail in the "Application Note on 3D Machine Vision".
❍ The new example program examples/hdevelop/Segmentation/
Topography/watersheds_threshold.dev shows how to use the new
operator watersheds_threshold.
❍ The new example program examples/hdevelop/XLD/Features/
fit_ellipse_tooth_rim_xld.dev shows how to use geometric
distances with the operators fit_ellipse_contour_xld,
dist_ellipse_contour_xld, and dist_ellipse_contour_points_xld.
❍ The new example programs in examples/hdevelop/Filter/Inpainting
show how to use the new operators for inpainting.
❍ The following new example programs show how to use the new
operators for smoothing and enhancing images: isotropic_diffusion.
dev and anisotropic_diffusion.dev in examples/hdevelop/Filter/
Smoothing/, coherence_enhancing_diff.dev, mean_curvature_flow.
dev, and shock_filter.dev in examples/hdevelop/Filter/
Enhancement/.
❍ The new example programs in examples/
application_guide/1d_metrology/hdevelop show how to use
HALCON's measure and fuzzy measure tool. They belong to the
new Application Note on 1D Metrology.
❍ The new example programs color_fuses.dev, color_pieces.dev,
color_pieces_euclid.dev, and color_simple.dev in the directory
examples/quick_guide/hdevelop show how to perform color
processing in HALCON. They are described in detail in the "Quick
Guide to HALCON".
❍ The new example program examples/hdevelop/Segmentation/
Threshold/var_threshold.dev shows how to use the new operator
var_threshold.
❍ The new example program examples/hdevelop/XLD/
Transformation/union_cocircular_contours_xld.dev shows how to
use the new operator union_cocircular_contours_xld.
❍ In the example program examples/hdevelop/XLD/Transformation/
union_contours_xld.dev the old operator
union_straight_contours_xld was replaced by the new operator
union_adjacent_contours_xld.
❍ The examples for OCR have been rewritten to use one of the new
pre-trained OCR classifiers.
❍ The new example program examples/hdevelop/Regions/Features/
rectangularity.dev shows how to use the new operator
rectangularity.
❍ The new example program examples/hdevelop/Image/Features/
estimate_noise.dev shows how to use the new operator
estimate_noise.
❍ The new example program examples/hdevelop/XLD/
Transformation/crop_contours_xld.dev shows how to use the new
operator crop_contours_xld.
❍ The new example program examples/hdevelop/XLD/Features/
test_self_intersection_xld.dev shows how to use the new operator
test_self_intersection_xld.
❍ The following new example programs in hdevelop/Image/
Framegrabber show how to use the new frame grabber interfaces:
■ menable3.dev, menable3_continuous.dev, menable3_crop.
dev, menable3_parameters.dev, menable_simple.dev
■ directfile.dev
Bug Fixes:
❍ HDevelop's gray histogram displayed an incorrect peak value for
int1 images. This problem has been fixed.
❍ HDevelop erroneously allowed indexing into an empty tuple. This
problem has been fixed.
Manual:
❍ Two tutorials introduce you to HDevelop, HALCON's interactive
development tool: The tutorial Getting Started With HDevelop
shows you how to load and run HDevelop programs. How to
create your own application in HDevelop is explained in the tutorial
Creating an HDevelop Application.
❍ The HDevelop User's Manual is now available in a new edition. It
has been updated and extended following the changes in
HALCON 7.1. Especially, it now describes how to work with
external HDevelop procedures.
HALCON Library
New Operators:
❍ HALCON has been extended with an operator
radiometric_self_calibration that performs a radiometric self
calibration from multiple images with different exposures.
The new example program examples/hdevelop/Tools/Calibration/
radiometric_self_calibration.dev shows how to use the new
functionality. It uses the new example images in the directory
images/radiometry.
❍ HALCON has been extended with the operator get_circle_pose,
which determines the position and orientation of a circle in 3D
from its perspective 2D projection.
The new example programs examples/hdevelop/Tools/Calibration/
get_circle_pose.dev and examples/hdevelop/Applications/
Calibration/3d_position_of_circles.dev show how to use the new
functionality.
❍ HALCON now has an operator stationary_camera_self_calibration
for the self-calibration of stationary cameras. Stationary means
that the camera can only rotate around its optical center and can
zoom.
Furthermore, there are two new operators cam_mat_to_cam_par
and cam_par_to_cam_mat that convert the output of
stationary_camera_self_calibration to the format for the camera
parameters used by camera_calibration.
Finally, since the output of stationary_camera_self_calibration can
be used to create spherical mosaic images, HALCON now has an
operator gen_spherical_mosaic to create such images.
The new example program examples/hdevelop/Tools/Calibration/
stationary_camera_self_calibration.dev shows how
stationary_camera_self_calibration can be used to determine the
interior camera parameters of a camera. It uses the new example
images in the directory images/self_calib.
❍ HALCON has been extended with two operators for bundle-
adjusted mosaicking: The operator bundle_adjust_mosaic
performs a bundle adjustment of a planar mosaic image. The
operator gen_bundle_adjusted_mosaic creates a mosaic image
based on the output of bundle_adjust_mosaic.
The new example program examples/
application_guide/3d_machine_vision/hdevelop/
bundle_adjusted_mosaicking.dev shows how to use the new
functionality. The example program examples/hdevelop/Tools/2D-
Transformations/gen_projective_mosaic.dev has been rewritten to
use these new operators.
In the "Application Note on 3D Machine Vision", the section on
Uncalibrated Mosaicking has been extended to also describe the
bundle-adjusted mosaicking.
❍ HALCON now comprises the following operators for uncalibrated
binocular stereo: match_fundamental_matrix_ransac,
match_essential_matrix_ransac, match_rel_pose_ransac,
vector_to_fundamental_matrix, vector_to_essential_matrix,
vector_to_rel_pose, essential_to_fundamental_matrix,
rel_pose_to_fundamental_matrix,
reconst3d_from_fundamental_matrix, and
gen_binocular_proj_rectification.
A new example program for stereo with known cameras is
examples/hdevelop/Tools/Stereo/uncalib_stereo_boxes.dev. The
functionality of projective rectification is demonstrated by the new
example examples/hdevelop/Applications/Stereo/
board_segmentation_uncalib.dev. New images for both examples
are located under stereo/uncalib.
❍ HALCON has been extended with the operator
watersheds_threshold that computes the watersheds of an image
and returns the corresponding basins. In order to get reasonable
results it is possible to specify the minimum height of the
watersheds by passing a threshold parameter.
The new example program examples/hdevelop/Segmentation/
Topography/watersheds_threshold.dev shows how to use the new
functionality. It uses the new example images images/pills and
images/mvtec_logo.
❍ HALCON has been extended with the following operators for
inpainting:
■ harmonic_interpolation performs an image inpainting operation
using harmonic interpolation.
■ inpainting_aniso performs an image inpainting operation using
anisotropic diffusion.
■ inpainting_ced performs an image inpainting operation using
coherence-enhancing diffusion.
■ inpainting_mcf performs an image inpainting operation using a
mean curvature flow.
■ inpainting_texture performs an image inpainting operation
using a texture propagation approach.
The following new example programs in examples/hdevelop/Filter/
Inpainting/ show how to use the new functionality:
harmonic_interpolation.dev, inpainting_aniso.dev, inpainting_ced.
dev, and inpainting_mcf.dev show how the corresponding
operators can be used to fill up unreconstructed areas in a
distance image created by stereo reconstruction;
inpainting_texture.dev shows how to use inpainting_texture to
remove unwanted objects from a photograph.
❍ HALCON has been extended with operators for smoothing and
enhancing images:
■ isotropic_diffusion performs an isotropic diffusion on an image.
This corresponds to a Gaussian filtering. However, in
isotropic_diffusion the filtering is performed by solving the
underlying Laplace partial differential equation with von
Neumann boundary conditions at the borders of the image
domain. This causes only the gray values inside the domain to
be used for the filtering and helps to avoid border artifacts in
most cases.
■ anisotropic_diffusion performs an anisotropic diffusion on an
image. anisotropic_diffusion provides three different anisotropic
diffusion functions and hence is more comprehensive than
anisotrope_diff, which it obsoletes. anisotrope_diff is still
supported for backwards compatibility, however.
■ coherence_enhancing_diff performs a coherence enhancing
diffusion on an image.
■ mean_curvature_flow performs a mean curvature flow on an
image. The mean curvature flow smoothes along the edge
direction, but performs no smoothing across edges.
■ shock_filter performs a shock filter on an image. The shock
filter sharpens edges.
The following new example programs show how to use the new
operators: isotropic_diffusion.dev and anisotropic_diffusion.dev in
examples/hdevelop/Filter/Smoothing/, coherence_enhancing_diff.
dev, mean_curvature_flow.dev, and shock_filter.dev in examples/
hdevelop/Filter/Enhancement/.
❍ HALCON has been extended with an operator var_threshold that
performs thresholding based on local mean and standard
deviation.
The new example program examples/hdevelop/Segmentation/
Threshold/var_threshold.dev shows how to use var_threshold to
segment characters in an image.
❍ There are two new operators to merge XLD contours:
■ union_adjacent_contours_xld merges contours whose
endpoints are close together. This operator (together with the
operator union_collinear_contours_xld) replaces the operator
union_straight_contours_xld, which is now obsolete and
remains in the HALCON library for compatibility reasons only.
■ union_cocircular_contours_xld merges contours within an XLD
contour array which are on the same circle.
In the example program examples/hdevelop/XLD/Transformation/
union_contours_xld.dev the old operator
union_straight_contours_xld was replaced by the new operator
union_adjacent_contours_xld. The new example program
examples/hdevelop/XLD/Transformation/
union_cocircular_contours_xld.dev shows how to merge contours
belonging to similar circles.
❍ HALCON has been extended with the operator rectangularity,
which determines the rectangularity of a region. Accordingly, the
operator select_shape now offers a new feature 'rectangularity'.
The new example program examples/hdevelop/Regions/Features/
rectangularity.dev shows how to use the new functionality.
❍ HALCON has been extended with an operator estimate_noise that
estimates the standard deviation of the noise within an image. The
estimation process is solely based on a single input image.
Different methods that are able to estimate the noise from a single
image are available.
The new example program examples/hdevelop/Image/Features/
estimate_noise.dev shows how to use estimate_noise.
❍ HALCON now has an operator crop_contours_xld that crops an
XLD contour against a given rectangle. crop_contours_xld clips
each contour segment against the clipping rectangle, i.e., in
contrast to clip_contours_xld it creates a shorter segment for each
segment that partially lies inside the clipping rectangle.
Furthermore, crop_contours_xld has an option to create closed
output contours from closed input contours.
The new example program examples/hdevelop/XLD/
Transformation/crop_contours_xld.dev shows how to use this
operator.
❍ HALCON now has an operator test_self_intersection_xld that tests
an XLD contour whether it intersects itself. If the contour is open, a
parameter specifies whether the contour is closed before applying
the test. test_self_intersection_xld returns a tuple that contains the
result of the test for each input contour. Each element of the tuple
holds either 1 or 0, depending on whether the corresponding
contour self-intersects.
The new example program examples/hdevelop/XLD/Features/
test_self_intersection_xld.dev shows how to use this operator.
❍ HALCON offers the new operator dist_ellipse_contour_points_xld,
which computes the distances of all contour points to an ellipse.
The usage is shown in the new example program examples/
hdevelop/XLD/Features/fit_ellipse_tooth_rim_xld.dev which uses
the new image tooth_rim.
❍ HALCON now has an operator gen_image_interleaved that
creates a three-channel HALCON image from a matrix of
interleaved pixels. gen_image_interleaved works in a similar
manner as gen_image1. Furthermore, gen_image_interleaved
supports cropping and, in case of 16 bits per channel and pixel,
shifting of the pixel values to the right.
The new example program examples/hdevelop/Image/Creation/
gen_image_interleaved.dev shows how to use this operator.
❍ HALCON has been extended with the operator
dump_window_image that dumps the contents of a graphics
window into a HALCON image object.
The new example program examples/hdevelop/Graphics/Output/
dump_window_data.dev shows how to use the new functionality.
❍ HALCON has the two new operators gray_opening_rect and
gray_closing_rect, complementing gray_erosion_rect and
gray_dilation_rect.
The new example programs examples/hdevelop/Morphology/Gray-
Values/gray_opening_rect.dev and examples/hdevelop/
Morphology/Gray-Values/gray_closing_rect.dev show how to use
the new functionality.
❍ HALCON now has 2 new operators for handling 2D homogeneous
matrices:
■ hom_mat2d_transpose computes the transpose of a
homogeneous 3x3 transformation matrix.
■ hom_mat2d_determinant computes the determinant of a
Bug Fixes:
❍ The operator best_match_rot_mg crashed if a matching template
was created, deleted, and then read_template was called with a
non-existing template file. This problem has been fixed.
❍ The operator closing_rectangle1 raised the error 3510 (exceeding
the maximum number of run lengths while automatic expansion) in
rare cases. This problem has been fixed.
❍ The operators create_component_model and
train_model_components returned the HALCON error 6005 (Tmp-
memory management: Null pointer while freeing) if a very large
template was given. Now, the error 6001 (Not enough memory
available) is returned.
❍ The operator disp_obj crashed when displaying int4 images that
contained INT4_MAX, INT4_MIN, and 0 as gray values. Besides,
in rare cases it ignored the LUT set with set_lut under Windows.
These problems have been fixed
❍ In some cases draw_xld_mod returned erroneous contours if the
Shift button was pressed. This problem has been fixed.
❍ The operator edges_sub_pix now sets the correct edge amplitude
for Filter = 'sobel' for ideal step edges. Since the output of the
Sobel filter is not isotropic, this behavior only occurs for horizontal
and vertical edges. Since the edge amplitude is used to perform
the hysteresis thresholding, this change implies that the hysteresis
thresholds have to be divided by 2 in applications that use
edges_sub_pix with Filter = 'sobel'.
❍ The operator find_component_model in rare cases returned the
error 3503 (run length row >= image height) or 3513 (number of
chords too big for num_max) or got stuck within an infinite loop.
This might have happened if 'least_squares', 'least_squares_high',
or 'least_squares_very_high' was selected for the parameter
MinScoreComp. This problem has been fixed.
❍ The operator find_shape_model in rare cases returned different
results if called multiple times and if the parameter SubPix was set
to 'least_squares_high' or 'least_squares_very_high'. This problem
has been fixed.
❍ The operator find_data_code_2d sometimes returned the
HALCON error 9201 (Singular value decomposition did not
converge). Furthermore, on very small ROIs, find_data_code_2d
returned the error 8109 ("convol: no filter object has got empty
region"). These problems have been fixed.
❍ The operator find_data_code_2d, when called in training mode,
adapted in some cases the model even if the symbol could not be
read. This happened especially in cases where the symbol could
be read in enhanced mode but not be trained. This problem has
been fixed: If the symbol can be read in enhanced mode, the
model will be trained accordingly. If the model cannot be trained, it
will not be adapted.
❍ The operator fuzzy_measure_pairs sometimes returned different
edge pairs to measure_pairs if no fuzzy function hade been set.
This problem has been fixed.
❍ The operator gen_image1 did not work correctly for int2 and uint2
images. It did not set the number of significant bits for the image
correctly. This caused the images to be displayed incorrectly. This
problem has been fixed.
❍ The operator gen_parallels_xld grouped some polygons into
parallels even if their distance was larger than specified with the
parameter Dist. This problem has been fixed.
❍ The operator gen_projective_mosaic no longer crashes for uint2
and real images.
❍ The operator gen_region_polygon_filled returned an empty region
if only 1 point was passed as input. This problem has been fixed.
❍ The operator info_parallels_xld returned different results on
different architectures. This problem has been fixed.
❍ The operator optical_flow_match erroneously created a multi-
channel output image for multi-channel input images. This
problem has been fixed. optical_flow_match now always returns a
single-channel output image that contains only the displacement
vector field.
❍ The operators paint_region and overpaint_region did not return
correct results for int4 images if very large positive or negative
gray values were used as the fill value. This problem has been
fixed.
❍ Multi-threaded programs using Parallel HALCON might have
thrown a runlength error in rare cases. This problem has been
fixed.
❍ The operator partition_dynamic used the input control parameter
Percent wrongly and sometimes partitioned regions at wrong
positions. This problem has been fixed.
❍ The resulting region of the example program Segmentation/
Topography/plateaus_center.dev differed heavily between ia64-
linux2.4 and the remaining architectures. This problem has been
fixed.
❍ The operator projective_trans_image sometimes returned
incorrect results for uint2 images. This problem has been fixed.
❍ The operator receive_image caused a crash if an image with
identical image matrices was transmitted. This was the case, e.g.,
if an image object tuple was transmitted that contained the same
image matrix more than once or a multi-channel image was
transmitted where different channels referred to the same image
matrix. This problem has been fixed.
❍ The operator shape_trans_xld sometimes returned wrong results
on 64 bit systems if the control parameter Type was set to
'convex'. This problem has been fixed.
❍ The operator sobel_dir performed incorrect border treatment. This
problem has been fixed.
❍ The operator train_model_components crashed in very rare
cases. This problem has been fixed.
❍ The operator traind_ocv_proj now returns an error if Mode is set to
an unsupported value.
❍ The operators threshold, dyn_threshold, and
compare_variation_model might have caused erroneous behavior
when running on multi-processor platforms in automatic
parallelization mode combined with setting 'store_empty_region' to
'false' by set_system before. This problem has been fixed.
Manual:
❍ The new "Application Note on 1D Metrology" shows you how to
use HALCON's measure and fuzzy measure tool to detect edges
and to measure their position and distance along lines and arcs. It
can be found via the Windows Start Menu or in the subdirectory
doc/pdf/application_guide.
It uses the following new examples in the subdirectory examples/
application_guide/1d_metrology/hdevelop: fuzzy_measure_switch.
dev, measure_caliper.dev, measure_ic_leads.dev, measure_ring.
dev, and measure_switch.dev.
❍ The "Quick Guide to HALCON" is available in a new edition. Its
main new feature is a section explaining how to perform color
processing with HALCON. Besides, it has been adapted to the
changes in HALCON 7.1. On Windows systems, you can now
click on the example programs to open them in HDevelop.
The section on color processing uses the new example programs
color_fuses.dev, color_pieces.dev, color_pieces_euclid.dev, and
color_simple.dev in the directory examples/quick_guide/hdevelop,
which in turn use the new images in the new subdirectory images/
color.
❍ The "Installation Guide" is available in a new edition. It has been
adapted to the changes in HALCON 7.1.
❍ The "Programmer's Guide" is available in a new edition. It has
been adapted to the changes in HALCON 7.1.
❍ The "Application Note on 3D Machine Vision" is available in a new
edition. It has been extended by a chapter that shows how to use
HALCON's hand-eye calibration for robot vision applications,
based on the new example programs
handeye_create_robot_poses.dev,
handeye_stationarycam_calibration.dev,
handeye_movingcam_calibration.dev, and
handeye_stationarycam_grasp_nut.dev in examples/
application_guide3d_machine_vision/hdevelop. The examples use
the new example images in the directory
images/3d_machine_vision/handeye.
Furthermore, the Application Note has been updated and
extended following the changes in HALCON 7.1. Thus, it now
describes the calibration of line-scan cameras, the new
asymmetric calibration plate, self-calibration and spherical
mosaicking, and uncalibrated stereo.
❍ The "Application Note on Shape-Based Matching is available in a
new edition. It has been adapted to the changes in HALCON 7.1,
especially the automatic determination of parameters.
❍ The example of cluster_model_components in the reference
manual contained an error. The first input object parameter of
cluster_model_components was ModelComponents instead of
TrainingImages. This problem has been fixed.
HALCON/C
Programming:
❍ In HALCON/C, the input parameters of operators are now
declared const.
HALCON/C++
Programming:
❍ All HALCON/C++ functions and classes now use the namespace
"Halcon" to prevent potential name conflicts with other C++
libraries. This means that HALCON/C++ programs are no longer
source code compatible to previous versions. However, old
programs can be converted by including the statement "using
namespace Halcon;" after "HalconCpp.h" has been included.
Furthermore, if the global HALCON operators are used with the
prefix "::" (e.g., ::read_image(&Image,"file");), the prefix "::" will
have to be removed or replaced with "Halcon::". The first solution
is preferable since it creates backwards-compatible source code
(apart from the "using namespace Halcon;" line mentioned above).
Note that in order to keep the reference manual readable, the
namespace is not mentioned in the operator descriptions in the
reference manual.
All example programs that use HALCON/C++ have been
converted to use the namespace functionality. Furthermore,
HDevelop exports HALCON/C++ code with the namespace.
❍ The HALCON/C++ class HTuple has the following new members:
■ Cumul calculates the cumulative sums of a tuple.
■ Remove removes a set of elements from a tuple.
■ Median calculates the median of a tuple.
■ SelectRank returns the element at rank n of a tuple.
Furthermore, the class HTuple has been extended by adding
various overloaded operators allowing expressions including long
integers, e.g., HTuple(2) + (long)2. Additionally, corresponding to
the already existing overloaded operators in class HTuple,
overloaded operators allowing expressions in which simple types
are combined with HTuple expressions, e.g., (long)2 + HTuple(3),
have been added.
Finally, the operators HTuple HTuple::operator () have been
augmented with a const class qualifier. The signature is now:
HTuple HTuple::operator () (int min, int max) const HTuple
HTuple::operator () (const HTuple &min, const HTuple &max)
const.
❍ HALCON/C++ no longer provides iostream operators by default
because this created problems for applications that want to use
the older iostream interface (i.e., that want to use <iostream.h>
instead of <iostream>). Consequently, the HALCON/C++ library
now does not provide operators for either interface.
To enable backwards compatibility, the iostream operators for the
class HTuple are now provided as inline functions in a new header
file "HIOStream.h", which can optionally be included. HIOStream.h
uses the newer interface <iostream> by default, but uses the older
interface <iostream.h> if USE_IOSTREAM_H is defined before
"HIOStream.h" is included.
This means that HALCON/C++ programs are not fully source
code compatible with older HALCON versions. However, old
programs can simply be converted to HALCON 7.1 by including
the following statement after having included "HalconCpp.h":
#include "HIOStream.h" Furthermore, it may be necessary to
include the statement using namespace std;
Examples:
❍ The HALCON Qt example program examples/qt/Matching has
been adapted to support Qt version 3.1 and later as well as Qt
version 4.0.
HALCON/COM
Programming:
❍ HALCON/COM now provides default values only for parameters
for which this is explicitly allowed in the IDL specification.
Previously, HALCON/COM provided default values for parameters
that were sometimes not permitted by the IDL specification. While
this caused no harm, and was in fact supported by Microsoft's
tools, there may be a slight chance that this may cause problems
with some programming environments. An example of such an
operator is HXLDContX::FitEllipseContourXld. Here, according to
the strict interpretation of the IDL specification, no input control
parameter may have a default value because there are several
output control parameters after the input control parameters.
Default values may only be used if all the parameters with default
values come at the end of the parameter list.
As a consequence, HALCON/COM is no longer source code
compatible with previous HALCON versions if the feature of
using default values that are not at the end of the parameter list
was used. This probably could only have been done in Visual
Basic 6.0, so this change should affect very few programs.
❍ All HALCON/COM classes that encapsulate a handle now have a
method to read out the handle. This method is provided via a read-
only property Handle that returns a variant with the encapsulated
handle.
Bug Fixes:
❍ The two functions BinocularDisparity and GenRadialDistortionMap
were contained erroneously in the class HPoseX and
consequently have been removed from this class.
Manual:
❍ The "Extension Package Programmer's Manual" is available in a
new edition. It has been adapted to the currently supported
operating systems.
HMatchIt
Functionality:
❍ HMatchIt now is able to determine the contrast, minimum
component size, and optimization automatically, corresponding to
the extended functionality in determine_shape_model_params.
The online documentation has been extended accordingly.
❍ HMatchIt now allows to specify up to 100 visible models in the
"View Test Images" dialog and up to 100 models in the "Edit
Standard Run Parameters" dialog.
Windows:
HALCON 7.1 has been compiled for Windows NT/2000/XP on 32
bit systems (Intel Pentium or compatible processors) and for
Windows XP x64 on 64 bit systems (Intel EM64T or AMD64). The
setup process checks whether it is runing on a 64 bit system and
in this case lets you choose to install the 32 bit or 64 bit version of
HALCON.
Please note that if you want to switch to the other version, you
must first install it, e.g., by re-inserting the CD. Then, you must
modify the environment variable %PATH% as described in the
"Installation Guide".
Note that the native HALCON version for Windows XP x64 does
not include the auxiliary tool HMatchIt. Furthermore, due to the
lack of available 64 bit drivers HALCON does not support the use
of dongles and includes currently no interfaces to actual image
acquisition devices.
Linux:
HALCON 7.1 has been compiled for 32 bit systems (Linux 2.2/2.4,
gcc 3.3, glibc-2.2.x, optimized for Intel Pentium or compatible
processors) and for 64 bit systems (Linux 2.4, gcc 3.3, glibc-2.3.4,
Intel EM64T or AMD64). To use these versions, please set the
environment variable ARCHITECTURE to i586-linux2.2-gcc33 or
x64-linux2.4-gcc33, respectively, and update the environment
variables PATH and LD_LIBRARY_PATH accordingly.
Solaris:
HALCON 7.1 has been compiled for Solaris 7 or higher on
UltraSPARC workstations. To use these versions, please set the
environment variable ARCHITECTURE to sparc-sun-solaris7 and
update the environment variables PATH and LD_LIBRARY_PATH
accordingly.
Miscellaneous
Licensing:
❍ HALCON now checks all files license*.dat in HALCONROOT/
license as well as a file license.dat in the current directory of the
application for a valid license. The order in which the licenses are
checked is:
■ license.dat in the current directory of the application
■ HALCONROOT/license/license.dat
■ all the remaining files license*.dat in HALCONROOT/license
If none of the above license files contain a valid license, HALCON
returns an error that corresponds to the last license file in the
above list.
❍ HALCON now uses version 10.8 of the FLEXlm license manager
software.
Example Images:
❍ New example images have been added in the directory images/
radiometry; they are used in the example for
radiometric_self_calibration.
❍ New example images have been added in the directory images/
self_calib; they are used in the example for
stationary_camera_self_calibration.
❍ The images pills.png and mvtec_logo.png have been added in
images; they are used in the example for the new operator
watersheds_threshold.
❍ New example images have been added in the directory
images/3d_machine_vision/handeye; they are used in the
examples for robot vision in the "Application Note on 3D Machine
Vision".
❍ New example images have been added in the directory images/
datacode/pdf417; they are used in the examples for reading
PDF417 data codes.
❍ The new example images images/calib/calib_line_scan_[01-17]
and images/caliper/caliper_line_scan are used in the examples for
calibrating line scan cameras.
❍ The image tooth_rim.png has been added in images; it is used in
the new example for the operators fit_ellipse_contour_xld,
dist_ellipse_contour_xld, and dist_ellipse_contour_points_xld.
❍ New example images have been added in the directory images/
stereo/uncalib; they are used in the examples for uncalibrated
binocular stereo.
❍ The video file xing.avi has been added in images/xing/; it is used
in the example for the new frame grabber interface DirectFile.
❍ With the Quick Guide to HALCON, new example images have
been added: atoms.png, crystal.png, fuse.png, surface_scratch.
png, and numbers_scale.png in images, and the new images in
the subdirectory images/coins.
❍ The new images in the directory images/explore_71 are used for
illustration in the HDevelop program explore_halcon.dev.