| |
This document provides the release notes for MVTec HALCON 8.0, as released
in June 2007. HALCON 8.0 is a major new release.
Overview
This document contains the following information:
-
Compatibility
-
Major New Features of HALCON 8.0
-
Detailed Description of Changes in HALCON
8.0 (relative to HALCON 7.1.2)
-
Major New Features of
HALCON 7.1
-
Detailed Description of Changes
in HALCON 7.1.2
-
Detailed Description of Changes
in HALCON 7.1.1
-
Detailed Description
of Changes in HALCON 7.1
-
Licenses
All HALCON 7.1 licenses must be replaced or upgraded. Please
contact your local distributor.
-
HALCON Library
Compared to HALCON 7.1, many extensions have been introduced. Thus,
the HALCON 8.0 libraries are not compatible with HALCON 7.1 or
earlier versions.
-
HALCON Applications
Please re-compile all C, C++, or COM programs developed with HALCON
7.1.x.
The incompatibility with HALCON 7.1 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:
-
A new output parameter for the operators
file_exists, test_equal_object, test_equal_region,
test_obj_def, and test_region_point makes these
operators source-code-incompatible.
-
A change in the operator find_shape_model (and its
variants) might necessitate an enlarged ROI when calling
find_shape_model.
-
Applications using the operator gen_spherical_mosaic are not
source-code compatible because of a new parameter.
-
The operators optical_flow_match and
fill_dvf have been removed from HALCON because the new
optical_flow_mg makes them obsolete.
-
Because of the changed data type for
vector fields and the corresponding renaming of the operators
int1_to_dvf, dvf_to_int1, and dvf_to_hom_mat2d, applications using
vector fields are not source-code compatible and vector field images
can no longer be sent to and received via sockets from older HALCON
versions.
-
Due to the changed default value
of the internal HALCON variable HDoLicenseError,
applications that rely on HDoLicenseError being TRUE now
have to set the value explicitly before calling the first
HALCON operator.
-
In HDevelop's language, the behavior of
for-loops upon termination has been modified. Applications that
use the value of the loop index index variable after loop termination
might be source-code incompatible.
-
In HALCON/C++, the method NumInst has
been removed from various classes, leading to
source-code incompatibility for appplications that used the
method.
Furthermore, the class HOCR has been
renamed to HOCRBox, causing another source-code
incompatibility.
-
In HALCON/COM, the class HOperatorSetX now uses the type
IHUntypedObjectX for iconic input objects, which breaks
source-code compatibility for applications that use
HOperatorSetX.
Applications using the class HBarcodeX are not source-code
compatible because HBarcodeX is now the class
of the new bar code reader.
Furthermore, the member GetDataCode2DObjects has been
removed from all iconic classes, leading to source-code
incompatibility for appplications that used the
member.
Another source of incompatibility is the renaming of the class HOcrX to
HOcrBoxX.
-
Image Acquisition Interfaces
Because of the new version of the HALCON Acquisition
Integration Interface, acquisition interfaces developed with
HALCON 7.1.x or lower are not binary compatible, but mostly
source-code compatible with 8.0. See here for more information.
-
Extension Packages
Please re-generate your own extension packages developed with
HALCON 7.1.x.
-
ActivVisionTools
Since all ActivVisionTools versions are based on HALCON 7.1.1 or
lower, none of them can be used directly with HALCON 8.0. By
installing HALCON 8.0, you would thus disable such an
ActivVisionTools installation. Therefore, the setup program of HALCON
8.0 checks whether there is an ActivVisionTools installation on your
computer and warns you that by continuing to install HALCON 8.0 you
will disable your ActivVisionTools installation.
-
If you have been using ActivVisionTools 3.1 or 3.1.1, please
contact your distributor for further information on how to run
this version together with HALCON 8.0.
-
In contrast, ActivVisionTools 1.0 to 3.0 cannot be used
together with HALCON 8.0.
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 8.0, you can minimize the
switching effort by installing only the demo version.
- General Features
- HDevelop
- Native .NET Support
- Supported Operating Systems
and Platforms
- Documentation
-
3D Machine Vision
-
OCR and Classification
-
Matching
-
2D Measuring
-
Bar Code and Data Code Reading
-
Other New Operators and Extensions
-
Speed-Up
-
Complete Revision of the User Interface
HDevelop's Graphical User Interface has been completely
revised to improve usability. Besides design improvements like
new icons, many functional extensions have been introduced in
almost every part of HDevelop. Due to their number, the list of detailed changes contains
only the most important ones. The completely revised HDevelop User's
Guide contains a detailed description of the current
functionality.
-
Assistants
HDevelop now provides assistants that simplify the use
of important machine vision tasks. The Image Acquisition Assistant allows to
quickly configure the connection to an image acquisition
device. The Matching Assistant
acts as a comfortable front-end to HALCON's shape-based
matching. It replaces HMatchIt. The assistants automatically
generate the corresponding HDevelop code.
-
Internationalization
HDevelop's GUI texts are available in 9 languages.
-
HDevelop Language
HDevelop now provides additional
language elements for programming control structures.
-
Extended Online Help
HDevelop's online help has been extended significantly: It
provides access to the complete HTML
documentation (operator reference, manuals for image
acquisition interfaces, etc.) in an integrated
browser. Besides the operator reference, now also the
reference of HDevelop's GUI is available in HTML. Additional
pages give an overview of the User's Manuals and open them in
a separate PDF viewer. You can also search the complete
documentation. Example programs
for HALCON operators can be found easily in the dialog
Open Example.
Native .NET Support
-
New Language Interface: HALCON/.NET
HALCON now provides a native
interface to .NET programming languages like C# or Visual
Basic. Being a native interface, it is faster than the
interface HALCON/COM, which should therefore only be used for
non .NET languages like Visual Basic 6.0.
-
HDevEngine/.NET
Based on HALCON/.NET, HALCON now also provides a native .NET version of HDevEngine.
-
Export for HALCON/.NET
You can now export HDevelop programs and
procedures to C# and Visual Basic .NET based on
HALCON/.NET.
-
Optimized Versions for SSE2
For Windows and Linux, HALCON is now available in additional
versions that are optimized for computers that support SSE2
instructions. These versions are significantly faster than the
non-SSE2 versions.
-
Separate Versions for Linux ABI 1 and 2
For Linux, HALCON is now available in separate versions for
Application Binary Interface (ABI) 1 and 2, i.e., it can be
used with either gcc-3.2/3.3 or gcc-3.4/4.x.
-
Please refer to the detailed list
of supported operating systems for more information.
-
New Manual Structure
The former Quick Guide and Application Guide
have been restructured to assure that you can find the relevant
information as fast as possible:
-
The new Quick Guide now lives up to its name and
quickly introduces you to HALCON in general and to the ways
of developing applications with it. The examples from the
various industries and application areas have been reduced to
a short description of the task to solve. The description of
HALCON's machine vision methods and the code examples from
industries and application areas have been moved to the new
Solution Guide I.
-
The new Solution Guide guides you from your task to
its solution. It is divided into two volumes: The first
(subtitle Basics) shows which machine vision methods
are useful for the different application areas and describes
the methods themselves. The second volume (subtitle
Advanced Topics) consists of the former Application
Notes, which provide detailed information for more advanced
applications.
Further extensions of the manuals are described here.
-
Completely Revised HDevelop User's Guide
In parallel to HDevelop itself, this manual has been
completely revised. It now starts with application-oriented
chapters that show you how to work with HDevelop, from loading
and executing programs over acquiring images to creating your
own programs. To reflect this revision, the manual has been
renamed to HDevelop User's Guide.
Further extensions are described here.
-
New Solution Guide: 2D Measuring
The new Solution Guide II-E (2D Measuring) leads you
through a variety of approaches for measuring in 2D with
HALCON.
It uses the new examples in the subdirectory
examples/solution_guide/2d_measuring/.
-
Programmer's Guide Describes HALCON/.NET
A new part now explains how to use the new language interface
HALCON/.NET. The part on HDevEngine now also describes the
new version based on HALCON/.NET.
Further extensions are described here.
Detailed release notes can be obtained for the following topics:
-
HDevelop
-
HALCON Library
-
HALCON/C++
-
HALCON/.NET (New)
-
HALCON/COM
-
HALCON/C
-
Image Acquisition Interfaces
-
Extension Package Interface
-
HMatchIt
-
Supported Operating Systems
-
Miscellaneous
Please note that these release notes are relative to HALCON 7.1.2. If
you are upgrading from earlier versions, you should also consult the
release notes for earlier HALCON versions.
- Speed-Up and Enhancements
- Functionality
- Bug Fixes
- Examples
- Manuals
-
Speed-Up and Enhancements:
-
With the new Image Acquisition Assistant you can
create the image acquisition part of your HDevelop
application quickly and easily. Images can be acquired from
files or directories or via image acquisition interfaces.
The connection to an image acquisition interface can be
configured in detail; the assistant lists all available
parameters. The HTML manuals of the individual acquisition
interfaces are available via the assistant's Help
menu.
The assistant automatically generates the corresponding
HALCON operator calls and lets you insert them at a suitable
place in the application.
How to use the assistant is described in the HDevelop
User's Guide.
-
The new Matching Assistant is an interactive front-end
to HALCON's powerful shape-based matching, which lets you
locate objects with subpixel accuracy at a high speed, even
when they appear rotated, scaled, partly occluded, or under
changing illumination. Using the Matching Assistant you can
configure and test the matching process with a few mouse
clicks and optimize the parameters interactively to get the
maximum matching speed and recognition rate.
The assistant automatically generates the corresponding
HALCON operator calls and lets you insert them at a suitable
place in the application.
How to use the assistant is described in the HDevelop
Reference Manual (which can also be accessed via the
assistant's Help menu) and in the PDF version of the
HDevelop User's Guide.
-
The texts appearing in HDevelop's GUI are available in the
following languages: English, German, French, Spanish,
Turkish, Japanese, Simplified Chinese, Traditional Chinese,
Korean. You can switch between languages via the menu
Edit - Preferences.
-
HDevelop's language now provides additional control
structures:
-
if ... elseif ... else (nested conditionals)
-
repeat ... until (loop that is executed at least
once)
-
continue (skip rest of loop block and start next
loop cycle)
Besides, you can now add an else block to an existing
if block.
-
HDevelop now displays all HTML documentation in an integrated
browser that can be opened by pressing the key F1 or
via the menu Help. The following information is
available:
-
Readme and Release Notes
-
HALCON Operator Reference Manuals (syntax can be switched
via the browser's toolbar)
-
HDevelop Reference Manual (describing the complete GUI and
HDevelop's language)
-
HTML manuals of HALCON's image acquisition interfaces
-
User's Manuals (short overview pages and link to open the
PDF files in a separate viewer)
Several tab cards allow to switch between the table of
contents, the index of all operators, and a list of keywords
linked to the operator reference manual. Further tab cards
provide a full-text search in the
complete documentation (HTML and PDF) and allow to create
bookmarks.
Via the browser's toolbar you can also directly add an
operator call to the current program.
-
HDevelop's dialog Open Example (menu File)
now also lets you select examples for a specified
operator. You can also select more than one category element
to list examples for all of them. The list of examples can be
filtered by specifying a text that must appear in the file
name or in the short description of the
examples. Furthermore, you can list all examples that are new
in HALCON 8.0 (or any older version).
-
You can now extensively configure HDevelop via the dialog
Preferences (menu Edit). Configurable
aspects include
-
the user interface (fonts, colors for syntax highlighting,
language)
-
external procedures (paths, state)
-
visualization settings (pen color and draw mode, look-up
tables, paint mode)
-
runtime settings (e.g., whether to update the graphics
windows)
Further enhancements:
-
Besides modifying the current visualization setting, you can now
also customize the default visualization settings, which are used
upon start.
-
The "Experienced User Settings" can now be switched on and off
individually.
-
The current state of error handling
(dev_set_check('give_error')) can now be modified via the
runtime settings.
-
HDevelop's find-and-replace mechanisms (menu Edit -
Find/Replace) have been extended. You can now also replace
operator calls, even if they have different signatures, and specify in
more detail in which parts of the program variables or operators are
to be found / replaced.
-
Various changes in HDevelop's program window facilitate
the development of applications:
-
Program counter, insert cursor, and break points can now
all be set by clicking with the left mouse button at
different positions in the left column. An icon hovering
beside the cursor shows what will be set.
-
Lines can be selected using the Shift and cursor keys.
-
Syntax highlighting makes programs more readable. Besides, line
numbers have been added.
-
In the combo box listing the procedures, icons
differentiate between local and external procedures. An
asterisk (*) indicates a modified procedure; different
arrow types show whether the procedure is currently executed.
-
The context menu (right-mouse click) now allows to run the
program up to the line under the mouse cursor. Furthermore,
if you right-click on a procedure call, the context menu
lets you switch to this procedure.
-
The button Create for the creation of procedures
has been replaced by an entry in the context menu, which
can be opened with a right-mouse click.
-
The dialog for creating or editing procedure interfaces now
contains procedure-specific options that were formerly
located in the menu File -
Options. Furthermore, it now allows to reset parameters.
-
You can copy program lines to the clipboard and insert them in other
applications.
-
The operator window has been enhanced in multiple ways:
-
Parameters corresponding to files now provide a file selector box.
-
The different parameter categories are now visualized by icons, thus
long parameter lists become more readable.
-
The row of buttons at the bottom is now always visible, even for
operators with many parameters.
-
After entering a search string in the combo box, the list of
operators and procedures is available until a new search string is
entered.
-
HDevelop's graphics windows now provide additional
functionality via their toolbar:
-
New zooming tools allow to quickly magnify parts of the
image or zoom in or out.
-
You can fit the window to the image size or vice versa.
Further enhancements:
-
You can now position the mouse cursor pixel-precisely with
the keyboard cursor keys.
-
When keeping the Ctrl key pressed, you can move the image
pixel by pixel.
-
Selecting objects has been facilitated: The selected object is
highlighted in the graphics window, information about it is
displayed in the window title area. XLDs are selected if you click
close to them. You can select overlapping objects (or objects that
are close to each other) by clicking multiple times; then, the
objects are selected one after the other.
-
HDevelop's variable window now provides various means to
configure the display of variables:
-
You can switch between a horizontal and vertical layout.
-
You can specify which variables are to be displayed and
which are to be hidden.
-
The new tab Auto restricts the displayed variables
to those of the current and previous operator call.
-
A right-mouse click on an iconic variable opens a context
menu that allows to display the object or parts of it.
-
The dialog that opens upon double-clicking a control
variable now also contains statistical data. Its display
can be switched off via a context menu. Furthermore, it
allows to edit values.
-
You can also display the content of multiple control
variables together by selecting them with the Ctrl
key pressed and then displaying them via the context menu
(right-mouse click).
-
The former tool Region Info has been renamed to
Feature Inspection. It now provides a navigation
tree in the left column that allows you to select those
features you want to inspect.
-
Functionality:
-
Bug Fixes:
-
HDevelop sometimes exported procedures incorrectly to C#
and VB.NET in case a procedure contained local iconic
variables and the HALCON error handling mechanism was
deactivated (via dev_set_check ('~give_error')) before
returning from the procedure. This problem has been
fixed.
-
Examples:
-
Corresponding to the new
terminology regarding image acquisition, the example in
the directory examples/fg_integration/ has been moved to the
new directory examples/ia_integration/ and has been renamed
to hAcqTemplate.c. Furthermore, the examples in
examples/hdevelop/Image/Framegrabber/ have been moved to the
new directory examples/hdevelop/Image/Acquisition.
-
Corresponding to the new
manual structure, the examples in the directories
examples/quick_guide and examples/application_guide have been
moved to the new directory examples/solution_guide.
-
The new example programs in
examples/hdevelop/Applications/Barcode/ have been adapted to
use the new bar code reader. The
examples bar_err.dev element_width.dev, and multiple.dev
have been removed.
-
The new example programs RSS14.dev, RSS14Truncated.dev,
RSSExpanded.dev, and RSSLimited.dev in
examples/hdevelop/Applications/Barcode/ show how to read bar codes of the types RSS-14, RSS-14
Truncated, RSS Limited, and RSS Expanded.
-
The new example programs get_rectangle_pose_barcode.dev in
examples/hdevelop/Applications/Barcode/ and
3d_position_of_rectangle.dev in
hdevelop/Applications/Calibration/ show how to use the new operator get_rectangle_pose.
-
The new example program color_segmentation_pizza.dev in
examples/hdevelop/Applications/Color/ uses color space
transformation to find salami pieces on a pizza. It uses the
new images pizza_* in images/color/.
-
The new example programs phot_stereo_board.dev and
phot_stereo_braille.dev in
examples/hdevelop/Applications/DFF/ show applications of
photometric stereo. The first reconstructs the 3D shape of
SMD components, the second extracts braille characters. They
use the new images smd_* in images/dff/ and the new images
in images/braille/, respectively.
-
The new example program 3d_matching_clamps.dev in
examples/hdevelop/Applications/FA/ shows how to perform 3D Matching.
-
The new example programs pm_multiple_dxf_models.dev in
examples/hdevelop/Applications/FA/ and dxf_input_output.dev in
examples/hdevelop/File/XLD/ show how to use the new operators for creating contours from CAD
data (DXF files).
-
The new example programs find_pads.dev in
examples/hdevelop/Applications/FA/ and
fit_rectangle2_contour_xld.dev in
examples/hdevelop/XLD/Features/ show how to use the new operators fit_rectangle2_contour_xld,
dist_rectangle2_contour_points_xld, and
gen_rectangle2_contour_xld.
-
The new example programs matching_multi_channel_clamp.dev and
matching_multi_channel_yogurt.dev in
examples/hdevelop/Applications/FA/ show how to use the new multi-channel matching.
-
The new example program matching_image_border.dev in
examples/hdevelop/Applications/FA/ shows how to perform shape-based matching with objects that
partially lie outside the image.
-
The new example programs optical_flow.dev and
optical_flow_bicycle.dev in
examples/hdevelop/Applications/Monitoring/ and
optical_flow_hydraulic_engineering.dev in
examples/hdevelop/Applications/Sequences/ show how to use the
new operators for optical flow.
-
The new example programs cr_dongle.dev and ocr_lot_number.dev
in examples/hdevelop/Applications/OCR/, lexicon.dev in
examples/hdevelop/OCR/Lexica/, and
label_word_process_mlp.dev in
examples/hdevelop/OCR/Neural-Nets/ show how to use lexica and word-based processing
for OCR.
-
The new example ocr_gradient_feature.dev in
examples/hdevelop/Applications/OCR/ shows how to use the new gradient feature for OCR.
-
The example
examples/hdevelop/Applications/OCR/letters_mlp.dev has been
moved to the directory examples/hdevelop/OCR/Neural-Nets/.
-
The new example programs class_overlap_gmm.dev in
examples/hdevelop/Classification/Gaussian-Mixture-Models/ and
classify_image_class_gmm.dev and
novelty_detection_gmm.dev in Segmentation/Classification/,
show how to use the new classifier based on
Gaussian Mixture Models.
-
The new example gen_principal_comp_trans.dev in
examples/hdevelop/Filter/Color/ shows how to use the new
operators gen_principal_comp_trans.
-
The new example program inpainting_ct.dev in
examples/hdevelop/Filter/Inpainting/ shows how to use the new operator inpainting_ct.
-
The new example program binomial_filter.dev in
examples/hdevelop/Filter/Smoothing/ shows how to use the new operator binomial_filter.
-
The following new example programs in
examples/hdevelop/Image/Acquisition/ have been added:
Because of the renaming of
acquisition interfaces, the corresponding examples have
been renamed accordingly.
Examples for legacy interfaces
have been removed.
-
The following examples have been removed from the directory
examples/hdevelop/Manuals/HDevelop/, because they are not
referenced in the HDevelop User's Guide anymore:
ball.dev, calib.dev, dtm.dev, exception.dev, eyes.dev,
ic.dev, marks.dev, misc_op.dev, particle.dev, road_signs.dev,
stamps.dev, vessel.dev, wood.dev, and wood_cells.dev.
-
The new example programs find_ncc_model_defocused.dev and
find_ncc_model_exposure.dev in
examples/hdevelop/Matching/Correlation-Based/ show how to use
the new operators for correlation-based matching.
-
The new example program find_aniso_shape_model.dev in
examples/hdevelop/Matching/Shape-Based/ shows how to use shape-based matching with anisotropic scaling.
-
The new example programs text_line_orientation.dev and
text_line_slant.dev in examples/hdevelop/OCR/Tools/ show how
to use the new operators
text_line_orientation and text_line_slant. The new
example select_characters.dev shows how to use the new operators segment_characters and select_characters.
-
The new example programs letters_svm.dev and
compare_ocr_svm_mlp.dev in
examples/hdevelop/OCR/Support-Vector-Machines/,
class_overlap_svm.dev, get_support_vector_class_svm.dev,
and novelty_detection.dev in
examples/hdevelop/Classification/Support-Vector-Machines/, and
novelty_detection_svm.dev in
examples/hdevelop/Segmentation/Classification/ show how to
use the new classifier based on Support Vector
Machines.
-
The new example program inner_rectangle1.dev in
examples/hdevelop/Regions/Features/ shows how to use the new operator inner_rectangle1.
-
The new example program ecc200_print_quality.dev in
examples/hdevelop/Tools/Datacode/ shows how to check the print quality of 2D data codes.
-
The new example program regexp.dev in
examples/hdevelop/Tuple/ shows how to use the new
operators tuple_regexp_match, tuple_regexp_replace,
tuple_regexp_test and tuple_regexp_select.
-
The new example programs features_points_xld.dev and
statistics_points_xld.dev in examples/hdevelop/XLD/Features/
show how to use the new point-based XLD moment
operators.
-
The new example programs difference_closed_contours_xld.dev,
intersection_closed_contours_xld.dev,
symm_difference_closed_contours_xld.dev,
union2_closed_contours_xld.dev,
difference_closed_polygons_xld.dev,
intersection_closed_polygons_xld.dev,
symm_difference_closed_polygons_xld.dev, and
union2_closed_polygons_xld.dev in the directory
examples/hdevelop/XLD/Sets/ show how to use the new operators for set operations for regions
enclosed by contours or polygons.
-
The new example program blended_mosaic.dev in
examples/hdevelop/Filter/Geometric-Transformations/ shows how
to use the new operator
gen_cube_map_mosaic and the new
mode for blending images.
-
The new examples in examples/solution_guide/2d_measuring/ are
used in the new Solution Guide on
2D Measuring.
-
The new example programs variation_model_single.dev and
variation_model_illumination.dev in the directory
solution_guide/basics/ show how to use the new functionality of HALCON's
variation model. They are described in detail in the Solution Guide I (Basics).
-
Manuals:
-
The HDevelop User's Manual has been renamed to
HDevelop User's Guide. It has been completely revised
and is now available in a new edition. It now starts with
application-oriented chapters that show you how to work with
HDevelop, from loading and executing programs over acquiring
images to creating your own programs. The chapter describing
HDevelop's graphical user interface (GUI) reflects the
changes in HDevelop itself. The chapter covering HDevelop's
language also describes the additional
language elements for programming control structures. The
chapter "Export" also shows how to export HDevelop programs and procedures to
C# and Visual Basic .NET based on HALCON/.NET. The
chapter "Examples" has been removed from the manual. A new
appendix lists all command line switches.
-
The two tutorials Getting Started With HDevelop and
Creating an HDevelop Application are not included in
HALCON anymore.
- New Operators
- Speed-Up and Enhancements
- Modified Operators
- Bug Fixes
- Miscellaneous
- Manuals
-
New Operators:
-
HALCON has been extended with a set of operators for matching
3D objects. The matching provides the functionality to find
the 3D pose of a 3D CAD model in an image. For this, it is
possible to read a 3D object model from a DXF file. The 3D
object model can then be used to create a 3D shape model that
contains a representation of the 3d object model that could
be used for matching.
The following operators provide the 3D matching
functionality: read_object_model_3d_dxf,
clear_object_model_3d, clear_all_object_model_3d,
affine_trans_object_model_3d, project_object_model_3d,
get_object_model_3d_params, create_shape_model_3d,
find_shape_model_3d, get_shape_model_3d_params,
get_shape_model_3d_contours, project_shape_model_3d,
trans_pose_shape_model_3d, write_shape_model_3d,
read_shape_model_3d, clear_shape_model_3d,
clear_all_shape_model_3d, convert_point_3d_cart_to_spher,
convert_point_3d_spher_to_cart, create_cam_pose_look_at_point.
The new example program
examples/hdevelop/Applications/FA/3d_matching_clamps.dev
shows how to use find_shape_model_3d to find a 3D object
under different conditions. It uses the DXF file
clamp_sloped.dxf and optionally the precomputed 3D shape
model file clamp_sloped_35.sm3 in the same
directory. Furthermore, it uses the new example images in the
directory images/clamp_sloped/.
-
Performing OCR with HALCON is now simplified by the following
extensions:
-
The new operators text_line_orientation and text_line_slant
allow to determine the orientation and slant of a text
line or a paragraph so that both can be corrected before
performing the OCR.
The new example programs text_line_orientation.dev and
text_line_slant.dev in examples/hdevelop/OCR/Tools/ show
how to use the new functionality. The examples use the new
example images in the directory images/dot_print_rotated/
and the new example image image/dot_print_slanted.png.
-
HALCON now provides specialized operators for extracting
characters before passing them to the OCR classifier:
-
segment_characters segments characters in an image even
in the presence of noise, textured background,
inhomogeneous illumination, or horizontal or vertical lines.
-
select_characters performs a further processing of the
segmentation result to robustly handle fragmented
characters (in particular dot prints), characters with
diacritic marks, punctuation marks, or characters that
are partly merged.
The new example
examples/hdevelop/OCR/Tools/select_characters.dev shows
how the new operators facilitate the segmentation of
dot-printed characters.
-
HALCON now provides OCR operators for word-based
processing, namely do_ocr_word_mlp and
do_ocr_word_svm. These operators allow to improve
classification results by describing the expected word
structure using regular expressions or lexica.
To this effect, HALCON also provides new operators for
working with lexica, namely create_lexicon, import_lexicon,
lookup_lexicon, suggest_lexicon, clear_lexicon, and
clear_all_lexica, as well as a new class HLexicon for
object-oriented language interfaces.
The new example program
examples/hdevelop/OCR/Lexica/lexicon.dev shows how to
create and use lexica.
The new example programs ocr_dongle.dev and
ocr_lot_number.dev in examples/hdevelop/Applications/OCR/
and label_word_process_mlp.dev in
examples/hdevelop/OCR/Neural-Nets/ show how to apply word
processing to OCR. The former two use the new images
dongle_* and lot_number_* in images/ocr/.
-
HALCON has been extended by an OCR classifier based on
Support Vector Machines. The OCR classifier comprises
the following operators in the chapter OCR ->
Support-Vector-Machines: create_ocr_class_svm,
get_params_ocr_class_svm,
get_support_vector_ocr_class_svm,
get_support_vector_num_ocr_class_svm,
get_prep_info_ocr_class_svm, trainf_ocr_class_svm,
reduce_ocr_class_svm, do_ocr_single_class_svm,
do_ocr_multi_class_svm, get_features_ocr_class_svm,
write_ocr_class_svm, read_ocr_class_svm,
clear_ocr_class_svm, and clear_all_ocr_class_svm.
Besides the special operators for OCR, the following
pure classification operators have been added in the
chapter Classification -> Support-Vector-Machine:
create_class_svm, get_params_class_svm,
add_sample_class_svm, get_sample_class_svm,
get_sample_num_class_svm, get_support_vector_class_svm,
get_support_vector_num_class_svm,
get_prep_info_class_svm, train_class_svm,
reduce_class_svm, classify_class_svm,
write_samples_class_svm, read_samples_class_svm,
write_class_svm, read_class_svm,
clear_samples_class_svm, clear_class_svm, and
clear_all_class_svm.
The classifier also comprises the following operators
(in the chapter Segmentation -> Classification) to
classify multichannel images:
add_samples_image_class_svm, and
classify_image_class_svm.
The new example program letters_svm.dev in the
directory examples/hdevelop/OCR/Support-Vector-Machines/
shows how to use the new OCR classifier. The new
example program compare_ocr_svm_mlp.dev (same directory)
compares the recognition rates and training and
classification speeds of the SVM and MLP OCR
classifiers.
The following new example programs in the directory
examples/hdevelop/Classification/Support-Vector-Machines/
show how to use the SVM classifier:
class_overlap_svm.dev, get_support_vector_class_svm.dev,
and novelty_detection.dev.
The new example program novelty_detection_svm.dev in
the directory
examples/hdevelop/Segmentation/Classification/ shows how
to use the classifier for a web inspection task using
the novelty detection mode of the SVMs with texture
classification. It uses the new example images in the directory
images/plastic_mesh.
-
HALCON has been extended by a classifier based on Gaussian
Mixture Models. The classifier comprises the following
operators in the chapter Classification ->
Gaussian-Mixture-Models: create_class_gmm,
get_params_class_gmm, add_sample_class_gmm,
get_sample_class_gmm, get_sample_num_class_gmm,
get_prep_info_class_gmm, train_class_gmm, evaluate_class_gmm,
classify_class_gmm, write_samples_class_gmm,
read_samples_class_gmm, write_class_gmm, read_class_gmm,
clear_samples_class_gmm, clear_class_gmm, and
clear_all_class_gmm.
The classifier also comprises the following operators (in
the chapter Segmentation -> Classification) to classify
multi-channel images: add_samples_image_class_gmm,
classify_image_class_gmm.
The following new example program shows how to use the
classifier:
examples/hdevelop/Classification/Gaussian-Mixture-Models/class_overlap_gmm.dev
The following new example program shows how to use the
classifier for segmenting an RGB image:
examples/hdevelop/Segmentation/Classification/classify_image_class_gmm.dev
The following new example program shows how to use the
classifier for a web inspection task with texture
classification:
examples/hdevelop/Segmentation/Classification/novelty_detection_gmm.dev
-
HALCON's shape-based matching can now find models that
have been scaled by different amounts in the row and
column direction, i.e., by anisotropic scaling. Models
for anisotropic scaling can be created with
create_aniso_shape_model. They can be found with
find_aniso_shape_model and find_aniso_shape_models.
determine_shape_model_params is able to determine the
row and column step widths automatically.
get_shape_model_params now returns the row and column
scalings as a two-element tuple if the shape model uses
anisotropic scaling. write_shape_model uses a
backward-compatible file format if the shape model does
not use anisotropic scaling and uses a new file format
if the model uses anisotropic scaling. Hence, shape
models not using anisotropic scaling can be read with
older HALCON versions.
The new example program
examples/hdevelop/Matching/Shape-Based/find_aniso_shape_model.dev
shows how to use find_aniso_shape_model to find SMD
components that can vary independently in their size in
the row and column direction. It uses the new example
images in the directory images/smd_capacitors/.
-
HALCON has been extended with the operators
read_contour_xld_dxf, write_contour_xld_dxf,
read_polygon_xld_dxf, and write_polygon_xld_dxf for the
DXF input and output of XLD contours and polygons. The
operator write_contour_xld_dxf writes all attributes and
global attributes, which are defined for the given XLD
contours. If the DXF file contains this information,
the operator read_contour_xld_dxf reads it.
The new example program
examples/hdevelop/File/XLD/dxf_input_output.dev shows
the general usage of the new operators.
The new example program
examples/hdevelop/Applications/FA/pm_multiple_dxf_models.dev
shows how to use the operator read_contour_xld_dxf to
create a shape model from CAD data. This example program
uses the new DXF files metal-part-01.dxf,
metal-part-02.dxf, and metal-part-03.dxf, which are
located in the directory
examples/hdevelop/Applications/FA/.
-
HALCON has been extended with a set of operators for matching
objects based on normalized cross correlation. The matching
provides the functionality to find rotated objects. The
following operators provide the matching functionality:
create_ncc_model, find_ncc_model, set_ncc_model_origin,
get_ncc_model_origin, get_ncc_model_params, write_ncc_model,
read_ncc_model, clear_ncc_model, and clear_all_ncc_models.
The new example program
examples/hdevelop/Matching/Correlation-Based/find_ncc_model_defocused.dev
shows how to use find_ncc_model to find an object despite
strong texture and significant defocus. It uses the new
example images in the directory images/smd_on_chip/.
The new example program
examples/hdevelop/Matching/Correlation-Based/find_ncc_model_exposure.dev
shows how to use find_ncc_model to find an object despite
strong linear illumination changes. It uses the new example
images in the directory images/cap_exposure/.
-
HALCON provides a new bar code reader, which robustly finds
any potential bar code region, can read multiple codes at the
same time, and is easy to use. The old bar code operators
are now obsolete, but still included in HALCON under
Tools/Tools-Legacy.
The following operators provide the bar code reader
functionality: create_bar_code_model, set_bar_code_param,
get_bar_code_param, find_bar_code, get_bar_code_result,
get_bar_code_object, clear_bar_code_model,
clear_all_bar_code_models.
The bar code example programs have been changed to work
with the new bar code reader.
-
HALCON has been extended with an operator binomial_filter
that smoothes an image using a binomial filter of a
user-definable size. binomial_filter can smooth images by
different amounts in the row and column directions.
The new example program binomial_filter.dev in
examples/hdevelop/Filter/Smoothing/ shows how to use the
operator. The example program
examples/hdevelop/Tools/Calibration/get_circle_pose.dev has
been rewritten to use binomial_filter instead of gauss_image.
-
HALCON has been extended with the operators
difference_closed_contours_xld,
intersection_closed_contours_xld,
symm_difference_closed_contours_xld,
union2_closed_contours_xld, difference_closed_polygons_xld,
intersection_closed_polygons_xld,
symm_difference_closed_polygons_xld, and
union2_closed_polygons_xld for the respective set operations
for regions enclosed by contours or polygons.
The new example programs
difference_closed_contours_xld.dev,
intersection_closed_contours_xld.dev,
symm_difference_closed_contours_xld.dev,
union2_closed_contours_xld.dev,
difference_closed_polygons_xld.dev,
intersection_closed_polygons_xld.dev,
symm_difference_closed_polygons_xld.dev, and
union2_closed_polygons_xld.dev in the directory
examples/hdevelop/XLD/Sets/ show how to use the new
operators.
-
HALCON now provides an operator fit_rectangle2_contour_xld
that fits a rectangle of arbitrary orientation to an XLD
contour. Furthermore, HALCON now provides an operator
dist_rectangle2_contour_points_xld that calculates the
distance of all points of a contour to a rectangle. Finally,
HALCON now provides an operator gen_rectangle2_contour_xld
that creates a rectangle of arbitrary orientation as an XLD
contour.
The new example program
examples/hdevelop/XLD/Features/fit_rectangle2_contour_xld.dev
shows how to use the three new operators. It uses the new
example image images/punched_holes.png. The new example
programs examples/hdevelop/Applications/FA/find_pads.dev
and examples/solution_guide/2d_measuring/measure_chip.dev
show how to use blob analysis, subpixel edge extraction, and
fit_rectangle2_contour_xld to find and accurately locate
pads on a die or dies on a chip, respectively.
The first one uses the new example image
images/die_pads.png and the second one uses the new example
image images/die_on_chip.
-
HALCON now has an operator gen_principal_comp_trans that
computes the transformation matrix for a principal
component transformation of a multi-channel image as well
as the inverse transformation matrix. Additionally, it
returns the mean gray value per channel and the
covariance matrix of the gray channels.
gen_principal_comp_trans is able to compute the
transformation matrix from multiple images.
Furthermore, HALCON now has an operator linear_trans_color that
applies an arbitrary linear gray value transformation,
i.e., a linear transformation of the gray values plus a
constant offset, to a multi-channel image.
The new example gen_principal_comp_trans.dev in
examples/hdevelop/Filter/Color/ shows how to use the new
operators. It uses the new image bavaria_north_7_channels.jp2.
-
HALCON now provides the operator get_rectangle_pose to
estimate the 3D pose of rectangular objects from a single
image.
The new examples get_rectangle_pose_barcode.dev in
examples/hdevelop/Applications/Barcode/ and
3d_position_of_rectangle.dev in
hdevelop/Applications/Calibration/ show how to use the new
operator. They use the new images tea_box_* in the directory
images/barcode/ean13/ and work_sheet_* in
images/metal-parts/, respectively.
-
The new operators grab_data and grab_data_async allow to grab
images (or image tuples), regions, and control data. They
replace the operators grab_region and
grab_region_async. Please refer to the documentation of your
image acquisition interface to see whether it supports the new
operators.
-
HALCON now has an operator inner_rectangle1 that returns
the largest axis-aligned rectangle that fits into a
region. The new example program
examples/hdevelop/Regions/Features/inner_rectangle1.dev
shows how to use inner_rectangle1 to detect knot-free
rectangles in a piece of wood. It uses the new example
image images/wood_knots.png.
-
HALCON now has an operator inpainting_ct that performs image
inpainting based on coherence transport. The new example
program examples/hdevelop/Filter/Inpainting/inpainting_ct.dev
shows how to use inpainting_ct. It uses the new example
images images/lynx.png and images/lynx_mask.tif.
-
HALCON now provides the following new operators for
mosaicking (image stitching):
-
HALCON has been extended with operators for XLD contours that
approximate NURBS curves: gen_contour_nurbs_xld creates an
XLD contour from the parameters of a NURBS curve. In
contrast, the operators draw_nurbs, draw_nurbs_mod,
draw_nurbs_interp, and draw_nurbs_interp_mod allow to
interactively draw and modify XLD contours that approximate
NURBS curves. It is possible to define the NURBS curves by
their control points (gen_contour_nurbs_xld, draw_nurbs,
draw_nurbs_mod) or such that they interpolate a set of given
points (draw_nurbs_interp and draw_nurbs_interp_mod).
-
HALCON has been extended with an operator optical_flow_mg to
compute the dense optical flow vector field between two
images. Furthermore, HALCON now has an operator
vector_field_length that computes the length of the vectors
of a vector field. HALCON now also provides an operator
unwarp_image_vector_field that can be used to unwarp the
second image of the input to optical_flow_mg to the first
image using the vector field computed by optical_flow_mg. As
a consequence, optical_flow_match and fill_dvf have been
removed from HALCON because optical_flow_mg makes them
obsolete.
The new example program optical_flow.dev and
optical_flow_bicycle.dev in
examples/hdevelop/Applications/Monitoring/ show how to use
optical_flow_mg to detect movement in a traffic scene and to
monitor a moving bicycle. The new example
optical_flow_hydraulic_engineering.dev in
examples/hdevelop/Applications/Sequences/ determines the
position, speed and movement direction of particles. They use
the new images in images/bicycle/ and
images/hydraulic_engineering/.
-
HALCON now provides point-based XLD moment operators to
complement the existing area-based XLD moment operators.
Point-based XLD moments have the advantage that they can
provide useful results for open contours that would become
self-intersecting after they are closed (which is done
automatically by the area-based XLD moment operators). In
particular, the following operators are now provided:
area_center_points_xld, moments_points_xld,
orientation_points_xld, elliptic_axis_points_xld,
eccentricity_points_xld, and moments_any_points_xld.
The new examples features_points_xld.dev and
statistics_points_xld.dev in examples/hdevelop/XLD/Features
show how to use the new operators. The first example compares
the new operators with their area-based counterparts; the
second example uses the operators to analyze statistical
data. area_center_points_xld is also used in the new example
measure_perspective_scratch.dev in
examples/solution_guide/2d_measuring/.
-
HALCON has been extended with the operators
polar_trans_region and polar_trans_region_inv for computing
the polar transformation and inverse polar transformation of
regions. The existing example program
examples/hdevelop/Applications/Barcode/circular_barcode.dev
has been extended to show how to use polar_trans_region_inv.
Analogously, the new operators polar_trans_contour_xld and
polar_trans_contour_xld_inv compute the polar transformation
and inverse polar transformation of XLD contours.
-
HALCON has been extended with an operator test_subset_region
that tests whether a region is a subset of another region.
-
HALCON now provides the new operators tuple_regexp_match,
tuple_regexp_replace, tuple_regexp_test, and
tuple_regexp_select for powerful string processing based on
regular expressions.
The new example program examples/hdevelop/Tuple/regexp.dev
shows how to work with regular expressions.
-
HALCON's variation model has been extended with the
following new operators:
The new examples variation_model_single.dev and
variation_model_illumination.dev in the directory
solution_guide/basics/ show how to use the new operators
prepare_direct_variation_model and
compare_ext_variation_model.
-
Speed-Up and Enhancements:
-
The HALCON memory management works faster and speeds up
all HALCON operators depending on their use of the
HALCON memory management. Especially Parallel HALCON
profits when running concurrently in several threads.
-
The operator compare_variation_model is now faster by up
to 10%.
-
The operators edges_image and edges_sub_pix are faster
for all recursive filters ('deriche1', 'deriche2',
'lanser1', 'lanser2', 'shen', 'mshen').
-
For the operators fit_ellipse_contour_xld and
fit_circle_contour_xld the algorithms for robust
geometric fitting, choosing Algorithm equal to
'geohuber' or 'geotukey', are faster now. As the robust
weighting is incorporated in the optimization routine
the value of the parameter Iterations is of no influence
any more.
-
The operator laplace is now faster by up to 500% on
Intel compatible processors that support MMX or SSE
under Windows and Linux.
-
The operator sobel_amp with Filter = 'sum_abs' is now
faster on Windows and Linux machines with MMX-capable
x86 and x64 processors. The speed-up is up to 370% for
byte images and up to 250% for uint2 images.
-
HALCON's operators for shape-based matching have been
enhanced in multiple ways:
-
The shape-based matching now provides a mode in which
models can be found in multi-channel images even if the
color polarity changes locally. This mode can be selected
by setting Metric to 'ignore_color_polarity' in
create_shape_model, create_scaled_shape_model, and
create_aniso_shape_model. It is now possible to search
shape models in multi-channel images with the above metric
using find_shape_model, find_shape_models,
find_scaled_shape_model, find_scaled_shape_models,
find_aniso_shape_model, and find_aniso_shape_models. As in
previous HALCON versions, for all metrics that refer to
gray value images (i.e., 'use_polarity',
'ignore_global_polarity', and 'ignore_local_polarity') only
the first channel of the image should be used.
Furthermore, determine_shape_model_params is now able to
determine the model parameters for multi-channel images if
Metric is set to 'ignore_color_polarity'. Finally,
inspect_shape_model now also supports multi-channel images,
and automatically uses multi-channel processing if an image
with more than one channel is passed.
The new example programs
matching_multi_channel_clamp.dev and
matching_multi_channel_yogurt.dev in
examples/hdevelop/Applications/FA/ show how to use the new
multi-channel matching. They use the new example images
clamp_* and yogurt_* in the
directory images/color.
-
They now support uint2 images. It is possible to
create models from uint2 images using
create_shape_model, create_scaled_shape_model, and
create_aniso_shape_model. Likewise, it is possible
to search shape models in uint2 images using
find_shape_model, find_shape_models,
find_scaled_shape_model, find_scaled_shape_models,
find_aniso_shape_model, and find_aniso_shape_models.
Furthermore, determine_shape_model_params is able to
determine the model parameters for uint2 images.
Finally, inspect_shape_model also supports uint2
images.
The new example program
examples/hdevelop/Matching/Shape-Based/find_aniso_shape_model.dev
shows how to use find_aniso_shape_model to find SMD
components in uint2 images. It uses the new example
images in the directory images/smd_capacitors.
-
The shape-based matching now has a mode in which
models that lie partially outside the search image
can be found. This mode can be activated with the
system parameter 'border_shape_models', which can be
set with the operator set_system. For speed
reasons, this mode is off by default.
The parameter 'border_shape_models' affects the
behavior of the following operators:
find_shape_model, find_scaled_shape_model,
find_shape_models, find_scaled_shape_models,
train_model_components, cluster_model_components,
and find_component_model. The documentation of
these operators has been extended.
The new example matching_image_border.dev in
examples/hdevelop/Applications/FA/ shows how to use the new
mode. It uses the new example images multiple_dies_01.png
and multiple_dies_02.png in images/.
-
HALCON's operators for component-based matching have been
enhanced in multiple ways:
-
The HALCON bar code reader now is able to read RSS-14, RSS-14
Truncated, RSS Limited, and RSS Expanded bar code symbols. As
the RSS-14 and the RSS-14 Truncated code are the same
symbology but just different in height, they are conceived as
a single code. So, the find_bar_code operator can be called
with the code types 'RSS-14', 'RSS Limited' and 'RSS
Expanded'.
Under examples/hdevelop/Applications/Barcode/, there are
example programs for each of the four new bar code
symbologies. These example programs use new example images
in the directories images/barcode/rss14/,
images/barcode/rss14truncated/, images/barcode/rsslimited/, and
images/barcode/rssexpanded/.
-
The 2D data code reader now provides the functionality for the
assessment of 2D data code print quality, compliant with
the international standard ISO/IEC 15415. Print quality
assessment is provided for ECC200, QR Codes, and PDF417 codes.
The new example ecc200_print_quality.dev in
examples/hdevelop/Tools/Datacode/ shows how to use the new
functionality.
-
The operator gen_spherical_mosaic now has a mode in which the
gray values in the mosaic image are blended. Effectively,
this means that seams between the images will be less
apparent even if the images have radiometrical differences or
are imperfectly aligned. This mode can be selected with
StackingOrder = 'blend'. The new example blended_mosaic.dev
in examples/hdevelop/Filter/Geometric-Transformations/ shows
how to use this mode.
Furthermore, the operator now offers an additional input
parameter Interpolation. Interpolation = 'bilinear' sets the
interpolation mode to biliniear interpolation, the previous
default, while Interpolation = 'bicubic' sets the
interpolation mode to bicubic interpolation. Bicubic
interpolation is slower than bilinear interpolation, but
offers higher quality.
Due to this new input parameter, gen_spherical_mosaic is
not source code compatible with previous HALCON versions.
-
HALCON now can handle UTF-8 encoded filenames, i.e., HALCON
is able to interpret file and directory names that are passed
to and from HALCON as string parameters either as UTF-8 or
locale encoded. How these strings are interpreted is
controlled by a new system variable. The new system variable
is accessable via get_system('filename_encoding',...) and
set_system('filename_encoding',...) respectively. If the new
system variable is 'locale', file and directory names are
used unaltered while for a value of 'utf8' these names are
interpreted as being UTF-8 encoded. In the latter case,
HALCON tries to translate input parameters from UTF-8 to the
locale encoding according to the current system settings, and
output parameters from locale to UTF-8 encoding.
-
HALCON's variation model operators have been enhanced in
several ways:
-
The internal data type for vector field images has been
changed from INT1 to float, enabling subpixel displacement
vectors to be represented. Furthermore, the externally used
name for vector field images has been changed from dvf to
vector_field. Consequently, the operators int1_to_dvf and
dvf_to_int1 have been renamed to real_to_vector_field and
vector_field_to_real. Furthermore, the operator
dvf_to_hom_mat2d has been renamed to
vector_field_to_hom_mat2d. Finally, vector field images are
now displayed using subpixel-precise drawing operations.
As a consequence of this change, vector field images can
no longer be sent to and received via sockets from older HALCON
versions. Furthermore, because of this change, HALCON 8.0 is not
source code compatible to earlier HALCON versions.
-
Modified Operators:
-
The operators dual_threshold and zero_crossing now support images of
type int1.
-
The operator change_radial_distortion_cam_par now has a new
mode 'preserve_resolution'. This mode yields the same
results as the mode 'fullsize' except that the resolution of
the resulting rectified image is not reduced in comparison
with the resolution of the input image. This is achieved by
enlarging the size of the rectified image accordingly.
Besides, the operators change_radial_distortion_image,
change_radial_distortion_contours_xld, and
gen_radial_distortion_map now also work if the image size
changes, i.e., if the image sizes given in CamParIn and
CamParOut differ. This is the case, for example, if the
camera parameters have been previously computed by using the
new mode 'preserve_resolution' of
change_radial_distortion_cam_par.
- The operators channels_to_image,
query_param_info, get_operator_name, gen_image_surface_second_order,
gen_image_surface_first_order, gen_region_polygon_filled,
gen_region_polygon, gen_region_points, gen_region_runs, get_image_time,
get_spy query_spy, set_spy, tuple_tanh, tuple_not,
union2_closed_polygons_xld, union2_closed_contours_xld,
symm_difference_closed_polygons_xld,
symm_difference_closed_contours_xld, difference_closed_polygons_xld,
difference_closed_contours_xld, intersection_closed_polygons_xld,
intersection_closed_contours_xld, add_noise_white_contour_xld,
give_bg_esti, open_framegrabber, close_framegrabber, info_framegrabber,
gen_arbitrary_distortion_map, gen_grid_rectification_map,
connect_grid_points, find_rectification_grid, and moments_any_xld run
non-local now.
-
The operator contour_point_num_xld now returns the
number of contour points for all contours instead of
only for the first contour.
-
The operators create_ocr_class_* now support a feature
'gradient_dir8' that computes a feature vector based on the
gradient directions of the character image. The feature
'gradient_dir8' has the potential to achieve slightly better
classification results for huge training sets than the
default set of features. However, since the feature vector
computed by 'gradient_dir8' is 2.5 times as long as the
default feature vector the classification time increases
significantly.
The new example ocr_gradient_feature.dev in
examples/hdevelop/Applications/OCR/ shows how to use this
feature.
-
The operator derivate_gauss now supports different sigmas in
the column and row direction by specifying a tuple with two
values for Sigma.
-
The operator deviation_image now can get
parallelized automatically on domain level.
-
The operators disp_xld,
fit_ellipse_contour_xld, dist_ellipse_contour_xld,
dist_ellipse_contour_points_xld, segment_contours_xld, give_bg_esti,
moments_any_xld, query_data_code_2d_params,
get_prep_info_ocr_class_mlp, get_prep_info_ocr_class_svm,
get_shape_model_origin, get_shape_model_params, and
get_shape_model_contours run non-exclusive now.
- The drawing operators now use the
currently set color and the insert mode. If the insert mode is set to
'xor', always the color 'white' is used for the drawing operators.
-
The operators draw_polygon and
draw_region now display the polygon sides in one color, even if
dev_set_colored is used.
-
The operators draw_circle(_mod)
and draw_ellipse(_mod) now return real values.
Further, they now display the circle/ellipse sub-pixel accurately.
-
Additionally, the drawing operators of Standard
HALCON now are reentrant concering windows message pipes. This means
that HALCON operators can be used in event callback functions.
-
The operators edges_image, edges_color, edges_sub_pix, and
edges_color_sub_pix now provide a fast Sobel filter mode
via Filter = 'sobel_fast'. This filter mode is
significantly faster than the other supported filter
modes, but has some limitations:
- For edges_image and edges_color, it does not
compute and return the edge direction image.
- For edges_sub_pix and edges_color_sub_pix, it may in rare
cases return slightly less accurate edge positions
than the other filter modes if comparable mask sizes
are used, e.g., Filter = 'canny' with Alpha =
0.7.
Besides, the operators return more accurate results
at domain borders when using recursive filters
('deriche1', 'deriche2', 'lanser1', 'lanser2', 'shen',
'mshen'). The image border treatment of recursive
filters changed from 'continued by zeros' to
'mirrored'.
Furthermore, edges_image and edges_color set
undefined direction values to gray value 255 if 'none'
is passed in the NMS parameter.
-
The operator estimate_noise now additionally supports
images of type uint2.
-
The operator gen_gauss_pyramid now supports multi-channel images.
-
There are some HALCON operators
that can be parameterized by so-called generic parameters. This is a
set of two parameters: one for passing one or more parameter names and
one for passing or receiving the corresponding values. These generic
parameters are now marked in their parameter descriptions by the new
semantic types 'attribute.name' and 'attribute.value',
respectively. You can query the semantic type of a parameter with the
operator 'get_param_info'.
-
The operator get_system has a new parameter
'halcon_arch' that returns the HALCON architecture of the running
HALCON library.
-
The operator find_shape_model and all variants thereof now
only return matches for which the reference point of the
model (i.e., the center of gravity of the domain of the image
with which the model was created) lies in the domain of the
search image. In previous HALCON versions, the reference
point could lie slightly outside the domain of the search
image.
Applications that relied on this behavior will need to
enlarge the ROI of the find_shape_model call.
-
The operator gen_spherical_mosaic now has a mode in which the
gray values in the mosaic image are determined from the
Voronoi cell of the image centers of the input images.
Effectively, this means that the gray values are taken from
the image to whose center the pixel in the mosaic image has
the smallest distance. This mode can be selected with
StackingOrder = 'voronoi'. This mode is advantageous if the
images have vignetting or uncorrected radial distortions.
Here, taking the gray values symmetrically from the closest
image causes these disturbances to be less noticeable.
-
The operators get_mposition and draw_* now recognize if the
HALCON window is occluded by other top-level windows under
UNIX and Linux systems. In particular, the draw_* operators
no longer modify the primitive being drawn if the user clicks
into another top-level window that occludes the HALCON
window.
-
The operator get_system now provides a query 'parallel_halcon' to
determine whether Parallel HALCON or Standard HALCON is used by an
application.
-
The number of threads used by automatic parallelization can now be
selected. To facilitate this, a new parameter 'thread_num' was
implemented for get_system and set_system operators to query or set the
current number of threads.
-
The performance of automatic parallelization has been improved by
thread pools. To facilitate this, a new parameter 'thread_pool' has
been implemented for get_system and set_system to query or set the
state of the pool. The default value 'true' of this parameter means
that a pool of threads is used, 'false' means that the threads will be
created on demand.
-
The operators 'get_window_type' and 'set_window_type' now
handle default values for the respective platform.
-
The operator info_framegrabber provides the new queries
'parameters_ro', 'parameters_wo', 'start_column',
'start_row', 'horizontal_resolution', 'vertical_resolution',
'image_width', 'image_height', and 'available_params_*'.
-
The operator laplace now provides more options to specify the
output image type. Consequently, the parameter FilterType
has been renamed to ResultType. ResultType now allows the
values 'absolute', 'signed_clipped', and 'signed'.
'absolute' returns the absolute value of the Laplace operator
in the same pixel type as the input image. 'signed_clipped'
returns the signed result of the Laplace operator in a signed
pixel type that has the same number of bytes per pixel as the
input image (i.e., int1 or int2). 'signed' returns the
signed result of the Laplace operator in a signed pixel type
that has the next higher number of bytes per pixel as the
input image (i.e., int2 or int4).
The parameter NeighbourhoodType has been renamed to
FilterMask. It now allows the values 'n_4', 'n_8', and
'n_8_isotropic'.
The normalization of the filters has been unified (i.e.,
'n_4' is returned as is, 'n_8' is divided by 2, and
'n_8_isotropic' is divided by 32).
The parameter Size has been renamed to MaskSize. Its
interpretation has been made consistent with sobel_amp and
sobel_dir, i.e., a mask size of n results in a Gaussian or
binomial filter of size n-2 to be applied before the Laplace
filtering.
-
Non-maximum-suppression operations (nonmax_suppression_amp,
nonmax_suppression_dir, edges_image, edges_color) return
images with reduced domain instead of coding suppressed
pixels by gray value.
-
The OCR classifiers now use different default file
extensions. The OCR box classifer uses the extension ".obc".
The OCR MLP classifier uses ".omc". The OCR SVM classifier
uses ".osc". For backward compatibility, the old OCR
extension ".fnt" is also searched when reading OCR
classifiers.
-
In the operator open_framegrabber, the parameter Gain has
been replaced by the new parameter Generic, in which a tuple
of interface-specific values can be passed that must be set
before the device is opened. The default value of
Generic is the same as for the former parameter Gain, thus
the change is mostly backwards compatible.
If the acquisition interface supports it, the gain can be
set dynamically using the operator set_framegrabber_param.
-
The operator principal_comp now takes the domain of the image
into account when computing the principal component analysis
(i.e., the transformation) and when transforming the image
itself.
-
The operator read_image now supports reading of JPEG 2000 files
and write_image and dump_window now support writing of JPEG 2000 files
(lossless and lossy with arbitrary user-specified compression ratios).
- Further, the operator read_image now returns image
object tuples instead of images with multiple channels when multiple
file names are passed. This enables reading images with different
sizes in one call. Applications that want to get the old behavior can
call channels_to_image immediately after the read_image call.
-
The operator regiongrowing_mean now supports
images of type uint2.
-
The operator select_shape now supports the selection of
regions based on the width and height of the axis-aligned
inner rectangle of the regions (based on the new operator inner_rectangle1).
Similarly, the operator shape_trans now supports a mode
'inner_rectangle1' to transform the input region into the
largest axis-aligned rectangle that fits into the region.
-
The operator select_shape_xld has been extended to enable the
selection of contours and polygons based on the new operators for point-based XLD
moments.
- The operator set_system now has a
new parameter 'global_mem_cache' to control the memory management. It
specifies whether unused global memory is cached ('shared') or freed
('idle'). Additionally, Parallel HALCON now offers the option to cache
global memory for each thread separately ('exclusive'). This mode can
accelerate processing at the cost of memory consumption. In contrast,
Standard HALCON treats the value 'exclusive' like the value 'shared'.
-
The operators sim_caltab, set_reference_template, adapt_template, and
set_offset_template now run non-mutual.
-
The operators sobel_amp, sobel_dir, and laplace are now able
to use the new operator
binomial_filter as the smoothing operator. The binomial
filter can be selected by appending '_binomial' to the values
of the parameter FilterType. The range of mask sizes is the
allowable range of the binomial filter if it is chosen as the
smoothing operator. In this case, it is possible to specify
two values in the parameter Size to facilitate different
smoothing in the column and row directions.
-
The operators file_exists, test_equal_object,
test_equal_region, test_obj_def, and test_region_point now
have an output control parameter that returns the result of
the rest instead of using the return value.
Note that because of this change these operators are no
longer source code compatible to previous HALCON
versions.
-
The operator test_self_intersection_xld now also works for
XLD polygons.
-
The operators trans_from_rgb and trans_to_rgb now have a ciexyz
transformation based on different primary colors. The primary colors
used correspond to sRGB and CIE Rec. 709, and D65 should be used as the
white point. The previous ciexyz transformation has been renamed to
ciexyz4. Further, trans_from_rgb now uses a different scaling for
'ciexyz2', 'ciexyz3', and 'i1i2i3' color spaces.
-
Bug Fixes:
-
The operators area_center_xld, do_ocr_multi, do_ocr_muti_class_mlp,
and get_obj_class caused a memory leak when being parallelized
automatically. This problem has been fixed.
-
The operator approx_chain_simple sometimes crashed if the point
coordinates contained the same point multiple times consecutively.
This problem has been fixed.
-
Using Parallel HALCON, the operators bit_and, bit_or, and bit_xor did
not parallelize correctly on domain level when the domains of both
input images differed. This problem has been fixed.
-
The operator class_ndim_norm crashed if 'Radius' contained more than
1024 elements (the maximum number of clusters). It now returns an
error message instead.
-
The operator depth_from_focus sometimes
crashed. This problem has been fixed.
-
The operators disp_cross and gen_cross_contours_xld interpreted
angles inconsistently to the rest of HALCON, i.e., in these two
operators angles were used mathematically negative (i.e., clockwise)
instead of mathematically positive (i.e., counterclockwise). This
problem has been fixed.
-
The operator disp_cross sometimes displayed crosses incompletely or
not at all. This was the case, when the cross to be displayed lied
outside the limits of the biggest image that was used so far. This
problem has been fixed.
-
Using Parallel HALCON, the operator disp_xld might cause a hang up of
the program if an error was provoked. This problem has been fixed.
-
The elements drawn with the operators draw_* flickered during the
drawing process. This problem has been fixed.
-
The operators draw_rectangle1 and draw_rectangle1_mod did not display
the move handle correctly when a window part was set. This problem has
been fixed.
-
The operators draw_rectangle2 and draw_rectangle2_mod did not display
the mouse handles correctly when a window part was set. This problem
has been fixed.
-
The operators draw_xld and draw_xld_mod treated the visualization and
the sensitive part of the mouse handles incorrectly when a window part
was set. This problem has been fixed.
-
Further, the operators draw_xld and draw_xld_mod had a memory
leak. This problem has been fixed.
-
Additionally, the operators draw_xld and draw_xld_mod did not rotate
and scale the drawn contour respectively to its midpoint but
respectively to a point translated by (-0.5, -0.5) from the
midpoint. This problem has been fixed.
- The operators dump_window and dump_window_image had the problem
that the image was shifted to the right by one pixel if the display was
set to a mode above 8 Bit (256 colors). This problem has been fixed.
-
The operator find_data_code_2d had the following problem:
In some rare cases the ECC200 data code reader crashed if the generic
parameter 'module_grid' was set to 'variable' (what is the default in
the 'enhanced_recognition' mode) or if the 'persistence' parameter was
set to a value greater than 0. This problem has been fixed.
-
Further, the operator find_data_code_2d failed to decode some
larger model 1 QRCodes. This concerned all combinations of symbol
version and error correction level, where the number of remainder
codewords is greater than 0. In detail the following codes were
affected (version-error correction levels): 7-H, 8-H, 10-QH, 11-H,
12-H, 13-LMQH, 14-LMH. This problem has been fixed.
-
Additionally, the operator find_data_code_2d had the following problem: In
some rare cases where candidates were close to the image border, it
crashed or returned an error code when called on an ECC200 data code
model. This problem has been fixed.
-
The operator find_marks_and_pose sometimes returned a memory
error. Furthermore, it might have crashed when using line scan cameras
together with calibration plates with orientation mark. These
problems have been fixed.
-
The operator gen_measure_arc in rare cases crashed for
Interpolation = 'bicubic' if the arc contained a part for which the
central circular arc lied outside the image, but a part of the
corresponding projection annulus lied inside the image. This problem
has been fixed.
-
The operator get_region_index returned wrong results when
automatically parallelized on tuple level. Now, it cannot be
automatically parallelized on tuple level anymore.
-
The operator get_tposition returned the wrong values on Unix systems,
in particular the values of the parameters Row and Column were
interchanged. This problem has been fixed.
-
The operator gray_histo_abs sometimes returned erroneous results
for int2 images. This problem has been fixed.
-
The operator gray_projections had the following problem: Depending on
the orientation of the smallest surrounding rectangle of the input
region, it returned fewer than the expected number of vertical
projections for mode 'rectangle'. If the surrounding rectangle had an
orientation of 0 or 90 degrees, the number of vertical projections
equaled the length of the rectangle, as one would have
expected. However, the more the orientation neared 45 or 135 degrees,
respectively, the fewer vertical projections were returned. This
problem has been fixed.
-
The operators hough_lines and hough_circles sometimes returned the
error 3513 (Internal error: number of chords too big for num_max). This
problem has been fixed.
- The operator lines_gauss in very
rare cases returned inconsistent results. This problem has been fixed.
-
Parallel HALCON might have hang up or crashed if
an automatic parallelized operator had failed with an error. This
problem has been fixed.
-
The operator points_foerstner returned erroneous results for
reduced domains and smoothing = 'mean', i.e., the results differed
from the results in the relevant region obtained with the full
domain. This problem has been fixed.
-
The operator points_harris had a memory leak. This problem has been
fixed.
-
The operator read_image returned the error 6041 (No memory block
allocated at last) when reading binary PBM files. This problem has
been fixed.
-
Further, the operator read_image read in ASCII PBM files incorrectly,
i.e., the images were inverted. This problem has been fixed.
-
Additionally, the operator read_region returned wrong regions for
1-bit TIFF images, i.e., the regions were inverted. This problem has
been fixed.
-
The operator regiongrowing_mean returned the error 3513 (Internal
error: number of chords too big for num_max) for images with very
small domains. This problem has been fixed.
-
The operator shape_trans_xld in rare cases did not eliminate
collinear points in the convex hull if 'convex' was chosen for the
input control parameter 'Type'. This problem has been fixed.
-
The operator sub_image sometimes returned wrong results for INT2
images. This problem has been fixed.
- The operators train_variation_model,
prepare_variation_model, and prepare_direct_variation_model did not run
exclusively. This might have caused a problem if at least two of these
operators ran in parallel. This problem has been fixed.
-
The operators union_collinear_contours_xld,
union_collinear_contours_ext_xld, and union_adjacent_contours_xld had
the following problem: If they were called on an input object with a
great number of contours, the operators might have crashed or returned
an error message (memory allocation failed). This problem has been
fixed.
-
The operator var_threshold did not work correctly with
negative values for the parameter StdDevScale. This problem has been
fixed.
-
The operators zoom_image_factor, zoom_image_size, affine_trans_image,
and affine_trans_image_size could have caused erroneous results if the
input image contained gray values close to the maximum gray value and
the image was zoomed with very small factors. This problem has been
fixed.
-
Miscellaneous:
-
All HALCON dynamic libraries now contain references to
the required libraries under Linux and Solaris. This
makes the linking of user applications easier because it
makes explicit which libraries are required to build an
application. With this change, the application now has
to link only against the relevant language interface and
has to specify the path to the required libraries if
they are not included in the standard linker path.
-
The default value of the internal HALCON variable
HDoLicenseError now is FALSE. Note that applications that
rely on HDoLicenseError being TRUE now have to set the value
explicitly before calling the first HALCON operator.
-
There are two new error codes regarding image acquisition:
H_ERR_FGCLOSE indicates that a device could not be
closed. H_ERR_FGCAMFILE indicates that a camera
configuration file could not be opened.
-
Manuals:
-
The Quick Guide is available in a new edition. Besides
the restructuration, the
manual has been adapted to the changes in HALCON 8.0, in
particular the new language
interface HALCON/.NET. Besides, examples have been added
for the application areas "Object Recognition 3D", "Position
Recognition 3D", and "Robot Vision".
-
The Solution Guide I (Basics) has been created by
restructuring the former
Quick Guide. Besides, it has been extended significantly:
-
A new chapter guides you
from the different application areas to suitable HALCON
methods.
-
How to use the new 3D Matching is described in a
new chapter.
-
Another new chapter shows how to
use HALCONs variation model for print check
applications. It uses the new example programs
variation_model_single.dev and
variation_model_illumination.dev in the directory
solution_guide/basics/.
Furthermore, the method chapters have been adapted to the changes
in HALCON 8.0, in particular the extensions of OCR and matching,
and the new bar code reader. The chapter
"Template Matching" now also contains a guide that shows which
matching method is suitable for which task.
The method "Metrology" has been renamed to "1D
Measuring".
The example programs have been moved from
examples/quick_guide/hdevelop/ to examples/solution_guide/.
-
The Installation Guide is available in a new
edition. It has been adapted to the changes in HALCON 8.0, in
particular regarding the supported operating systems.
-
The Programmer's Guide is available in a new
edition. A new part explains how to use the new language interface HALCON/.NET,
with the main focus on C# applications but also listing the
main differences when using Visual Basic .NET or Managed
C++. The part on HDevEngine now also describes the new version based on HALCON/.NET, based
on C# examples. A new chapter at the beginning of the manual
contains general information about programming with HALCON,
e.g., which HALCON language interface to use for which
programming language.
Furthermore, the manual has been adapted to
other changes in HALCON 8.0, in particular regarding the supported operating systems.
-
The Application Note on Image Acquisition has been
renamed to Solution Guide II-A (Image Acquisition). It
is available in a new edition. It has been adapted to the new terminology regarding image
acquisition. Besides, it now contains an appendix that
helps to setup your vision system so that the acquired images
contain useful and correct information.
Its examples have been moved from
examples/application_guide/image_acquisition/hdevelop/ to the
directory examples/solution_guide/image_acquisition/.
-
The Application Note on Shape-Based Matching has been renamed to
Solution Guide II-B (Shape-Based Matching). It is
available in a new edition. It has been adapted to the changes in HALCON 8.0.
Its examples have been moved from
examples/application_guide/shape_matching/hdevelop/ to the
directory examples/solution_guide/shape_matching/.
-
The Application Note on 2D Data Codes has been renamed
to Solution Guide II-C (2D Data Codes). It is
available in a new edition. It has been adapted to the
changes in HALCON 8.0, in particular the new functionality for checking print
quality.
Its examples have been moved from
examples/application_guide/2d_data_codes/hdevelop/ to the
directory examples/solution_guide/2d_data_codes/.
-
The Application Note on 1D Metrology has been renamed to
Solution Guide II-D (1D Measuring). Its examples have been
moved from examples/application_guide/1d_metrology/hdevelop/
to the directory examples/solution_guide/1d_measuring/.
-
The Application Note on 3D Machine Vision has been
renamed to Solution Guide II-F (3D Machine Vision). It
is available in a new edition, having been adapted to the
changes in HALCON 8.0, e.g., the new
operator get_rectangle_pose.
Its examples have been moved from
examples/application_guide/3d_machine_vision/hdevelop/ to the
directory examples/solution_guide/3d_machine_vision/.
-
The documentation of find_shape_model and its derivates now
explicitly describes the semantics of the output parameters
Row and Column.
-
The documentation of distance_rr_min has been improved. In
particular, it is now described what results from the fact
that the computation is based solely on the regions'
contours.
-
Speed-Up and Enhancements:
-
HALCON/C++ passes tuple control parameters faster. The
speed up increases with the length of the tuple control
parameter.
-
Programming:
-
Examples:
-
The new example in examples\mfc\MultiThreading shows how
to perform image acquisition, processing, and display in
parallel using three threads.
-
In examples\cpp, the Windows makefile has been renamed to
makefile.win, the directory for the Visual Studio workspace
and projects has been renamed to win, and the workspace itself
has been renamed to examples.dsw. The projects now use the new environment variable HALCONARCH so
that you can use them for all Windows platforms.
-
Manuals:
-
The HALCON/C++ reference manual now contains short overview
pages of the main classes, listing the operators that can be
called via them.
HALCON now offers a native language interface for .NET
(HALCON/.NET) that allows to use HALCON directly from managed
applications without requiring a COM layer. The HALCON operator
reference for this interface uses C# syntax. It provides
information about the operators and the classes. A new part in
the Programmer's Guide contains detailed information about using
HALCON/.NET.
The examples in the directories examples\c#, examples\vb.net,
and examples\cpp.net have been rewritten to use the HALCON/.NET
interface instead of the HALCON/COM interface. A new example
in example\c#\MultiThreading shows how to perform image
acquisition, processing, and display in parallel using three
threads.
-
Speed-Up and Enhancements:
-
HALCON/COM passes tuple control parameters faster. The
speed up increases with the length of the tuple control
parameter.
-
Programming:
-
Bug Fixes:
-
Some constructors of the class HHomMat2dX were
erroneous. Now, match_fundamental_matrix_ransac is a
constructor, whereas match_essential_matrix_ransac is
not a constructor of this class.
-
Examples:
-
The examples in the directories examples\c#,
examples\vb.net, and cpp.net have been rewritten to use
the HALCON/.NET
interface instead of the HALCON/COM interface. The
existing templates for using exported HDevelop programs
via HALCON/COM in C# or Visual Basic .NET have been
moved to the new directories
examples\c#\HDevelopTemplateCOM and
examples\vb.net\HDevelopTemplateCOM.
-
Speed-Up and Enhancements:
-
HALCON/C passes tuple control parameters faster. The
speed up increases with the length of the tuple control
parameter.
-
Programming:
-
The HALCON/C interface has a new function T_call_halcon_by_id for
calling HALCON operators in a generic way. In contrast to the old
function T_call_halcon that selects the HALCON operator that is called
by its name, the new function selects the operator by a unique id,
which is much faster. The operator id can be obtained by the function
get_operator_id that is also new to the HALCON/C interface. In
addition, with T_call_halcon_by_id the parameters of the HALCON
operator are passed directly to the operator together with the
operator id. Thus the old parameter setting functions set_in_opar,
set_out_opar, set_in_tpar, and set_out_tpar are not needed in
conjunction with T_call_halcon_by_id. By this means, in contrast to
T_call_halcon, calling an HALCON operator with T_call_halcon_by_id is
thread-safe and in conjunction with Parallel HALCON reentrant.
-
Examples:
-
The latest information about new extensions and newly supported
boards can be found on MVTec's web
server.
-
New Terminology:
To avoid confusion with image acquisition devices like IEEE 1394
or USB 2.0 cameras, the term "Frame Grabber Interface" has
been replaced with "Acquisition Interface". Where possible,
names in the HALCON library have been adapted, e.g., the
examples now lie in the directory
examples/hdevelop/Image/Acquisition/ instead of
examples/hdevelop/Image/Framegrabber/. The operator names,
however, have not been changed.
-
New Version of the HALCON
Acquisition Integration Interface:
The HALCON Acquisition Integration Interface has been
upgraded to version 3.0 (INTERFACE_VERSION = 3.0). It
is not binary compatible to HALCON 7.1.x or lower. All
acquisition interfaces that are compatible with HALCON 8.0 have
a revision number 3.x, with x starting with
0.
Existing interfaces are mostly source-code compatible (see
the Image Acquisition Interface Programmer's Manual for
more information). Applications based on existing interfaces
are also mostly source-code compatible, in particular HDevelop
applications. A notable exception are applications based on renamed interfaces.
Interface libraries now start with the prefix hAcq
instead of HFG. Their HTML documentation uses the same
name, e.g., hAcq1394IIDC.html instead of
nt-x86-1394iidc.html.
Please refer to the documentation of your acquisition
interface for more information, especially whether a new
revision of the corresponding device driver is required.
-
New Image Acquisition Interfaces:
-
HALCON now also includes the iPORT interface to
support cameras that are connected through the iPORT IP Engine
from Pleora.
-
Modified Image Acquisition Interfaces:
-
To avoid confusion with existing or coming acquisition
interfaces, the following interfaces have been renamed:
-
Legacy Image Acquisition Interfaces:
The following interfaces are only available in the
Legacy download area:
-
Manual:
Following the new terminology, the former Frame Grabber
Integration Programmer's Manual has been renamed to
Image Acquisition Interface Programmer's Manual. It is
available in a new edition, having been updated to the changes
in HALCON 8.0.
-
Functionality:
-
Examples:
-
The suffix of the Windows makefiles has been changed to 'win'.
-
Manual:
-
Speed-Up and Enhancements:
-
Functionality:
-
Bug Fixes:
-
In the C++ interface of the HDevEngine, the parameter
names of the method HDevOperatorImpl::DevSetPart were
wrong. The parameters were named as row, col, width,
height, however, their semantics is row1, col1, row2,
col2. The parameter names were renamed according to
their semantics.
-
Examples:
-
In examples/hdevengine/cpp/, the directory for the Visual Studio
workspace and projects has been renamed to win, the workspace itself
has been renamed to examples.dsw. The projects now use the new environment variable
HALCONARCH so that you can use them for all Windows
platforms.
-
Windows:
HALCON 8.0 has been compiled in three Windows versions:
-
x86-win32 version for Windows NT/2000/XP/2003/Vista on
Intel Pentium or compatible processors without SSE2 instructions
-
x86sse2-win32 version for Windows NT/2000/XP/2003/Vista on
x86 processors with SSE2 extension, e.g.,
Intel Pentium 4 / AMD Athlon64 or newer
-
x64-win64 version for Windows XP/2003/Vista x64 Edition
on Intel EM64T or AMD64
The setup process checks whether it is running on a 32 or 64
bit system and whether SSE2 instructions are available and
provides a suitable list of versions that can be installed.
During the installation, the environment variable
HALCONARCH is set to x86-win32,
x86sse2-win32, or x64-win64 to indicate the
installed version.
Please note that if you want to switch to another version,
you must first install it, e.g., by re-inserting the DVD. Then,
you must adapt the environment variable HALCONARCH
(see the Installation Guide for more information).
-
Linux:
HALCON 8.0 has been compiled in six Linux versions:
-
x86-linux2.4-gcc33 version for Linux, Kernel 2.4 or higher
with Application Binary Interface (ABI) 1 on Intel Pentium or
compatible processors without SSE2 instructions
-
x86-linux2.4-gcc40 version for Linux, Kernel 2.4 or higher
with ABI 2 on Intel Pentium or compatible processors without
SSE2 instructions
-
x86sse2-linux2.4-gcc33 version for Linux, Kernel 2.4 or
higher with ABI 1 on x86 processors with SSE2 extension, e.g.,
Intel Pentium 4 / AMD Athlon64 or newer
-
x86sse2-linux2.4-gcc40 version for Linux, Kernel 2.4 or
higher with ABI 2 on x86 processors with SSE2 extension, e.g.,
Intel Pentium 4 / AMD Athlon64 or newer
-
x64-linux2.4-gcc33 version for Linux x86_64, Kernel 2.4 or
higher with ABI 1, on Intel EM64T or AMD64
-
x64-linux2.4-gcc40 version for Linux x86_64, Kernel 2.4 or
higher with ABI 2, on Intel EM64T or AMD64
Please refer to the Installation Guide for detailed
system requirements corresponding to the different Application
Binary Interfaces.
The installation script checks whether it is running on a
32 or 64 bit system and whether SSE2 instructions are available
and provides a suitable default for the list of versions that can be
installed.
After the installation, please set the environment
variable HALCONARCH to the version name
(x86-linux2.4-gcc33, x86-linux2.4-gcc40,
x86sse2-linux2.4-gcc33, x86sse2-linux2.4-gcc40,
x64-linux2.4-gcc33, x64-linux2.4-gcc40) and
use it to extend the environment variables PATH and
LD_LIBRARY_PATH (see the Installation Guide for more
information).
-
Solaris:
HALCON 8.0 has been compiled for Solaris 9 or higher on
UltraSPARC workstations.
After the installation, please set the environment variable
HALCONARCH to sparc-sun-solaris9 and use it to
extend the environment variables PATH and LD_LIBRARY_PATH (see
the Installation Guide for more information).
HMatchIt has been replaced by HDevelop's new Matching Assistant.
-
Licensing:
-
HALCON now uses version 10.8.5 of the FLEXlm license manager
software.
-
The EULA has been adapted to use consistent terminology.
-
Installation:
-
The Windows installation now sets the new environment
variable HALCONARCH to the currently used platform,
e.g., x86-win32. This variable is used when adding the
path to the HALCON libraries to the environment variable
PATH.
Under UNIX, the variable HALCONARCH should be used
instead of the formerly recommended variable
ARCHITECTURE.
Please refer to the Installation Guide for more
information.
-
The installation script for Linux/UNIX has been renamed to
install-unix.sh and now uses sh syntax.
-
On Linux/UNIX systems, the default directory for installing
HALCON is now /opt/halcon.
-
Under Windows, new versions of the dongle drivers are
included: HASP 4.102 and Sentinel 7.3.2.
-
The DVD contains the FirePackage driver in the directory
3rdparty, which is necessary to use the IIDC1394
acquisition interface under Windows and Windows x64.
-
Example Images:
-
New example images have been added in the directory
images/barcode/rss14/, images/barcode/rss14truncated/,
images/barcode/rsslimited/ and images/barcode/rssexpanded/;
they are used in the examples for reading bar
codes of the types RSS-14, RSS-14 Truncated, RSS Limited, and
RSS Expanded.
-
The new example images tea_box_* in the directory
images/barcode/ean13/ and work_sheet_* in images/metal-parts/
are used in the examples for the new operator
get_rectangle_pose.
-
The new example image images/bavaria_north_7_channels.jp2 is used in
the example for the new
operator gen_principal_comp_trans.
-
New example images have been added in the directories
images/bicycle/ and images/hydraulic_engineering/; they are
used in the example for the new
operators for optical flow.
-
New example images have been added in the directory
images/clamp_sloped/; they are used in the example for 3D Matching.
-
New example images have been added in the directory
images/cap_illumination/; they are used in one of the new
examples for the new functionality of
HALCON's variation model.
-
New example images have been added in the directory
images/color/; they are used in the example for the new multi-channel matching and in the
new example for color space
transformation.
-
The following new example images are used in the new Solution Guide on 2D
Measuring: die_on_chip.png, circle_plate.png,
keypad.png, screw_thread.png, bga_14x14_model.png, and
bga_14x14_defects.png in images/,
metal-part-distorted-01.png, metal-part-distorted-02.png, and
metal-part-distorted-03.png in images/metal-parts/, and scratch_perspective.png
and scratch_calib_*.png in
images/scratch/.
-
The new example images images/punched_holes.png and
images/die_pads.png are used in the examples for the new operators fit_rectangle2_contour_xld,
dist_rectangle2_contour_points_xld, and
gen_rectangle2_contour_xld.
-
The new example image images/dot_print_slanted.png and the new
images in the directory images/dot_print_rotated/ are used in
the examples for the new operators
text_line_orientation and text_line_slant.
-
The new example images lynx.png and lynx_mask.tif in images/
are used in the example for the new
operator inpainting_ct.
-
The new example images multiple_dies_01.png and
multiple_dies_02.png in images/ are used in the example for
shape-based matching with objects that
partially lie outside the image.
-
The directory images/ocrcolor/ has been renamed to
images/ocr/. Its images have been renamed from ocrimg* to
color_form_*. Furthermore, the new images dongle_* and
lot_number_* have been added in this directory; they are used
in the examples for OCR with
word-based processing.
-
New example images have been added in the directory
images/panorama/; they are used in the example for the new mode for blending mosaic images.
-
New example images have been added in the directory
images/plastic_mesh/; they are used in one of the examples for
the new classifier based on Support Vector
Machines.
-
New example images have been added in the directory
images/smd_capacitors/; they are used in the example for shape-based matching with anisotropic
scaling.
-
The new example image images/smd_on_chip.png and the new
images in images/cap_exposure/ are used in the examples for
the new operators for correlation-based
matching.
-
The new example image images/wood_knots.png is used in the example
for the new operator inner_rectangle1.
|
|