| |
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.
|