MVTec Software GmbH
  Building Vision For Business


 
  Release Notes for HALCON 8.0  
 

 

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




Compatibility

o Licenses

All HALCON 7.1 licenses must be replaced or upgraded. Please contact your local distributor.



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



o 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:



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



o Extension Packages

Please re-generate your own extension packages developed with HALCON 7.1.x.



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




Major New Features of HALCON 8.0

General Features
HDevelop
Native .NET Support
Supported Operating Systems and Platforms
Documentation

General Features

o 3D Machine Vision



o OCR and Classification



o Matching



o 2D Measuring



o Bar Code and Data Code Reading



o Other New Operators and Extensions

o Speed-Up

HDevelop

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



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



o Internationalization

HDevelop's GUI texts are available in 9 languages.



o HDevelop Language

HDevelop now provides additional language elements for programming control structures.



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



o HDevEngine/.NET

Based on HALCON/.NET, HALCON now also provides a native .NET version of HDevEngine.



o Export for HALCON/.NET

You can now export HDevelop programs and procedures to C# and Visual Basic .NET based on HALCON/.NET.



Supported Operating Systems and Platforms

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



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

Documentation

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



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



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



o 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 Description of Changes in HALCON 8.0

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.



HDevelop

Speed-Up and Enhancements
Functionality
Bug Fixes
Examples
Manuals
o 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.


o Functionality:
  • When exporting HDevelop programs or procedures to C# or Visual Basic .NET, you can now choose between an export based on HALCON/.NET (recommended) and HALCON/COM.
  • The new menu item File - Export facilitates program and procedure export by providing a separate dialog for configuring the export.
  • HDevelop's dialog Used Modules (menu File - Properties) now contains a checkbox allowing to specify whether to check for used modules in all local and external procedures, or only in local and external procedures that are used by the current program.
  • Corresponding to HALCON's new operators for regular expressions, HDevelop expressions now support the new built-in functions regexp_match, regexp_test, and regexp_select, as well as the short-hand notation "=~" for testing a match.
  • HDevelop's GUI can now be switched between the multiple-document interface and single-document interface mode.
  • The dialog for opening image files (File - Read Image) has been enhanced. It now shows a preview of the selected image and further information like its size and type. Furthermore, you can choose whether to insert the corresponding operator call at the position of the insert cursor or the program counter.
  • The list of recently opened HDevelop programs now resides in the new entry Recent Programs of the menu File (instead of its bottom).
  • The new run mode Step Forward (menu Execute) allows you to step out of a loop, executing all remaining runs of the loop without interruption.
  • The former zoom and pixel information dialogs have been combined and enhanced to form a new zoom tool, which can be opened via the toolbar or via the menu Visualization - Zoom. Pixel information is now also displayed in the status bar.

    Further enhancements:

    • positioning the mouse cursor pixel-precisely with the keyboard cursor keys
    • zooming using the scrolling wheel of the mouse
    • arbitrary size of the zoom window
  • HDevelop's gray histogram and feature histogram now provide more display options, e.g., to smooth the histogram.
  • You can now reset a procedure or abort its execution. Both actions are available via the menu Execute and via the keyboard shortcuts Shift-F2 and Shift-F8, respectively.
  • You can now open HDevelop programs by drag-and-drop.
  • You can now also insert programs that contain procedures.
  • External procedures can now be stored independently of the program.
  • If procedure calls cannot be resolved upon loading a program, they are not commented out anymore but can be made valid by modifying the procedure path.
  • When you select a procedure in the menu Operators, it is automatically displayed in the operator window. After selecting a procedure via the menu item Procedures - Edit Prodedure, you can edit it in the program window.
  • The following command line switches have been added or modified:
    • The switches for displaying help text and version now exist in two variants: -help and -version open a message box, --help and --version send their output to the console.
    • -reset_preferences resets all all persistent settings from previous sessions to the default ones.
    • -preferences <file> starts HDevelop with the preferences from a file.
    • When using -run or -convert, the sequence of option and file name is now arbitrary.
    • -style sets the application GUI style.
  • The behavior of for-loops upon termination has been changed: As in other programming languages the loop index variable now keeps its value when the evaluation of the loop condition fails. It is no longer set to the termination value of the loop.

    Applications that relied on the former behavior are not source-code compatible and must be adapted accordingly.



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


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


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


HALCON Library

New Operators
Speed-Up and Enhancements
Modified Operators
Bug Fixes
Miscellaneous
Manuals
o 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):
    • adjust_mosaic_images automatically adjusts images in a mosaic radiometrically. The operator features estimation of the camera's response, lens vignetting, and different exposure/aperture settings.
    • gen_cube_map_mosaic computes six cube maps of a spherical mosaic. Just like gen_spherical_mosaic, it offers the StackingOrder modes 'default', 'voronoi' and 'blend'. Cube maps are especially useful in computer graphics, where they will mostly be preferred over the results of gen_spherical_mosaic.

      The new example blended_mosaic.dev in examples/hdevelop/Filter/Geometric-Transformations compares the two operators. It uses the new images in images/panorama/.

  • 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:
    • clear_train_data_variation_model clears the memory of the variation model that is required for the training of the variation model. clear_train_data_variation_model can be called once the model has been prepared for image comparison with prepare_variation_model. It can be used to save memory (in main memory as well as on disk) once the model has been trained.

      The following example programs in examples/hdevelop/Applications/FA/ have been modified to use clear_train_data_variation_model: print_check.dev, and print_check_single_chars.dev.

    • get_thresh_images_variation_model returns the internal threshold images that are used by the variation model to detect too large deviations of an image from the model.
    • compare_ext_variation_model allows to select which types of errors should be detected. It supports the following modes:
      • 'absolute': Too bright and too dark pixels are returned in a single region (identical to compare_variation_model).
      • 'light': Too bright pixels are returned in a single region.
      • 'dark': Too dark pixels are returned in a single region.
      • 'light_dark': Too bright and too dark pixels are returned as two separate regions.
    • prepare_direct_variation_model prepares a variation model that has been created with the new mode 'direct' in create_variation_model for image comparison.

    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.



o 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:
    • They now support uint2 images. It is now possible to create models for uint2 images with create_component_model. It is possible to train models for uint2 images with train_model_components and cluster_model_components. Furthermore, it is possible to find models in uint2 images with find_component_model. Finally, gen_initial_components also supports uint2 images.

      Note that when calling train_model_components the order of the resulting model components, which are returned in the object tuple ModelComponents, may differ from previous HALCON versions.

    • The component-based matching now provides a mode in which models can be found in color and more generally in multi-channel images even if the color polarity changes locally. This mode is selectable by setting Metric to 'ignore_color_polarity' in create_component_model and create_trained_component_model. In addition, train_model_components and cluster_model_components now support multi-channel images with this metric. Furthermore, it is now possible to find models in multi-channel images with find_component_model using this metric. Finally, gen_initial_components now also supports multi-channel images.
  • 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 operator prepare_variation_model now has a mode in which different thresholds for too light and too dark pixels can be specified. This can be done by passing two values in AbsThreshold and VarThreshold, respectively. In this mode, the first value refers to too bright pixels, while the second value refers to too dark pixels.
    • The memory consumption of the variation model has been reduced by 2 bytes per pixel to 12 bytes per pixel for byte images and 14 bytes per pixel for uint2 images. This change means that at most 65535 images can be trained with train_variation_model. Because of this change, the file format of the variation model has changed. Variation model files written with HALCON 8.0 cannot be read by previous HALCON versions. Variation model files written with previous HALCON versions can, of course, still be read with HALCON 8.0.
    • The variation model now supports a mode in which the ideal image and the variation image can be specified directly. Models of this type can be created with the new mode 'direct' in create_variation_model. The training of the ideal image and the variation image must be performed with the new operator prepare_direct_variation_model.

      The new examples variation_model_single.dev and variation_model_illumination.dev in the directory solution_guide/basics/ show how to use this mode. The latter uses the new images in images/cap_illumination/.

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



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