This document provides the release notes for MVTec HALCON 10.0.1, as released in April 2011. HALCON 10.0.1 is primarily a maintenance release that fixes all known bugs in HALCON 10.0; besides, it provides added functionality.



Overview

This document contains the following information:

Compatibility
Major New Features of HALCON 10.0.1
Detailed Description of Changes in HALCON 10.0.1
Advance Notice
Known Issues
Major New Features of HALCON 10.0
Detailed Description of Changes in HALCON 10.0
Errata Release Notes of HALCON 10.0


Compatibility

o Licenses

HALCON 10.0 licenses are also valid for HALCON 10.0.1. In contrast, all HALCON 9.0 licenses must be replaced or upgraded. Please contact your local distributor.


o HALCON Library

HALCON 10.0.1 is fully compatible with HALCON 10.0 except for the changed behavior of some operators due to bug fixes. Compared to HALCON 9.0, many extensions have been introduced. Thus, the HALCON 10.0 libraries are not compatible with HALCON 9.0 or earlier versions.


o HALCON Applications

Applications (i.e., executables) developed with HALCON 10.0 can be used with HALCON 10.0.1, i.e., HALCON 10.0.1 is binary compatible with HALCON 10.0.

The incompatibility with HALCON 9.0 or earlier versions mainly concerns the binaries, with only few changes in the language interfaces. If you encounter problems during recompiling your programs, please check the detailed description of changes below and for HALCON 10.0, respectively.

Please note the following incompatibilities with respect to HALCON 10.0:

Please note that applications using HALCON/.NET (and HDevEngine/.NET) have local copies of the corresponding assemblies (halcondotnet.dll etc.). After installing HALCON 10.0.1, these applications would therefore use the old version of the HALCON/.NET interface together with the new version of the HALCON library. In order to benefit from the bug fixes in the HALCON/.NET interface as well, you must either replace the assemblies manually or re-compile the projects. If you do not recompile the application, you need to add an application configuration file mapping the application's expected assembly version to the new version. See the Programmer's Guide for more information.


o Image Acquisition Interfaces

The system requirements of the following image acquisition interfaces have been changed since HALCON 10.0:

  • For using the updated MultiCam interface you must install the new MultiCam driver version 6.4. Note that the interface runs now also natively on Windows x64.
  • For using the updated pylon interface you must install the new Basler pylon SDK version 2.3.
  • For using the updated SICK-3DCamera interface you must install the new SICK icon API 4.2 with support of Windows 7. Note that the interface runs now also natively on Windows x64.
  • For using the updated VRmAreaScan3D interface you must install the new SDK driver version 2.3. Note that the interface runs now also natively on Windows x64.

If you have developed your own acquisition interfaces with HALCON 10.0, you can use them with HALCON 10.0.1 without further action.


o Extension Packages

Extension packages developed with HALCON 10.0 can be used with HALCON 10.0.1 without further action. Extension packages developed with HALCON 9.0.x must be re-generated.


o ActivVisionTools
  • If you have been using ActivVisionTools 3.2, please contact your distributor for further information on how to run this version together with HALCON 10.0.1.
  • ActivVisionTools 1.0 to 3.1 cannot be used with HALCON 10.0.1. If the setup program detects such an ActivVisionTools version, it warns you that by continuing to install HALCON 10.0.1 you will disable your ActivVisionTools installation.

    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.



Major New Features of HALCON 10.0.1

General Features

o General Enhancements:

HALCON Library

o Extended Functionality:

HDevelop:

o General Usabilty:

Image Acquisition:

o New Image Acquisition Interfaces:
  • The SwissRanger interface supports the SR4000 time-of-flight cameras from MESA Imaging.
  • The Video4Linux2 interface supports all cameras that provide a V4L2 compliant driver and is available for Linux x86 and Linux x86_64.

Documentation:

o Extended Solution Guide on 3D Vision:

  • The Solution Guide on 3D Vision has been extended in many ways. Amongst others, the section about shape-based 3D matching has been extended by tips and tricks for the handling of specific problems.


Detailed Description of Changes in HALCON 10.0.1

Detailed release notes can be obtained for the following topics:

HDevelop
HALCON Library
HALCON/.NET
HALCON/COM
HDevEngine
Image Acquisition Interfaces
Manuals
Miscellaneous

HDevelop

Functionality
Bug Fixes
Examples

o Functionality:
  • If HDevelop was loaded without the environment variable HALCONROOT being set, HALCONROOT is now determined automatically from the path where HDevelop was loaded. From this path, the file name is removed, and (if existant) also the part /bin/HALCONARCH/, where HALCONARCH is the name of the used architecture. The resulting path is then set as new environment variable HALCONROOT for the current process. In the demo version of HALCON, the automatic determination of HALCONROOT is always used, except when /bin/HALCONARCH or /lib/HALCONARCH could not be found.
  • The example descriptions, which appear in the Browse Examples dialog, are now also available in German.
  • The keyboard navigation within the Browse Examples dialog was improved. Now, it is possible to navigate between all GUI elements via the Tab key. In addition, the currently selected example program can be opened by pressing the Enter or Return key.
  • HDevelop now provides more keyboard shortcuts. For a detailed listing of the shortcuts, please refer to the documentation in the HDevelop User's Guide. Generally, the following actions are now supported via keyboard shortcuts:
    • Program window:
      • Setting and moving the program counter.
      • Setting the insert cursor (in dialog-based editor mode).
      • Jumping to the program counter and jumping to a specific line.
      • Opening the Operator window with the current operator loaded.
      • Opening the Procedure Interface dialog for the current procedure.
      • Toggling the editor mode, the enter-execution mode, and the auto-completion mode.
      • Providing alternative shortcuts for cut, copy, and paste, e.g., Shift+Del, Ctrl+Ins, and Shift+Ins.
    • In general:
      • Opening more windows, tools, and dialogs, e.g., with Ctrl+Shift+O.
      • Organizing windows, e.g., with Ctrl+Shift+W.
      • Direct access to some Help window chapters, e.g., with Ctrl+Shift+H.
      • More Graphics window actions, e.g., with Ctrl+Shift+G.
    • For the handling of the tab cards in the program listing:
      • Opening of a new and closing of the current tab card.
      • Displaying a different tab card.
      • Moving the current tab card to the left or to the right.
      • Opening the procedure list or the tab card list in the appropriate combo box.
      • Jumping directly to the main procedure.
      • Jumping to the procedure that is referred in the current program line, showing it on the current or a new tab card or within a new program window. In addition, if the Ctrl-Key is pressed while selecting a procedure from the procedure combo box, the procedure is opened on a new tab card.
    Please note that the short cuts for browsing within the history of displayed procedures were changed from Alt+Left/Right to Alt+Ctrl+Left/Right. Additionally, HDevelop provides a new shortcut (Ctrl+Double-Click) in the Iconic Variable window to insert dev_display into the program.
  • Program edit actions like Cut, Paste, or Delete are now disabled if another window than the Program window or the Program Line View becomes active. Until now, it could have happened that by activating a tool or the Graphics window and then pressing the Delete key the selected code from the Program window was deleted even if the Program window was hidden by another window. This was counter-intuitive and has been changed for all edit actions, namely the actions Copy, Cut, Paste, Delete, Activate, and Deactivate are disabled if the active window does not handle program lines. As one exception the Copy action is used to copy the value of the selected control variable if the Variable window is active. Undo and Redo remain always globally enabled because these actions are not related to a specific Program window but work globally on all performed edit actions.
  • It is now possible to specify the reaction time of the auto-completion in the User Interface tab of the Preferences dialog of HDevelop.
  • Opening a long program or procedure (e.g., 5000 program lines) in the full text editor was very slow. Additionally, almost the same period of time was used to switch from the dialog-based editor to the full text editor if such a procedure was displayed. These actions have been accelerated significantly.
  • Operators for which a warning exists are now handled more consistently. Both, in the combo box of the Operator window as well as in the auto-completion list of the full text editor these operators are displayed with a warning icon. Hence, these operators are no longer suppressed by the suggestion list given by the full text editor's auto completion.
  • The full text editor and the Operator window now provide the same auto detection functionality for the operator info_framegrabber as for the operator open_framegrabber.
  • HDevelop has been extended by a context-sensitive help that offers the opportunity to open the appropriate HDevelop User's Guide page for the currently active window easily. For this, the shortcut Shift+F1 was introduced. Furthermore, the shortcut F1 opens the same page unless the active window offers content-specific help pages, like the Program window or the Image Acquisition Assistant.
  • The selected tab cards of the Preferences dialog are now persistent.
  • HDevelop's gray histogram tool now resets the horizontal range in the mode 'fixed' to 0..255 for byte, and to -128..127 for int1 images instead of using the data range of the displayed image.
  • The iconic object/channel selection dialog now displays for every channel the pixel type because different channels may have different pixel types.
  • The menu entry 'Record Interactions' has been extended by the different 3D plot parameters. These are also recorded at the menu entry 'Insert Code' of the Graphics window's context menu.
  • Setting the 3D plot parameters 'display_axis', 'display_grid', and 'plot_quality' via the operator set_window_param will now adapt the toolbar of the Graphics window accordingly.
  • If several images with reduced domain are displayed in the Graphics window, the window is not cleared but the images are painted one over the other. If the sizes of the displayed images differ, the Graphics window's reference image size was set to the size of the uppermost image, so that in the window this image was scaled to fit the whole window and after setting the Graphics window's size to 100% of the image size, the window was resized to the extent of the uppermost image, cropping all images that were bigger. This behavior has been changed: now the 100% reference size is set to the maximum of all displayed images.
  • It is now possible to specify the direction of the mouse wheel that is used for zooming in and out within the Graphics window, Zoom window, and Histogram dialog. The direction can be specified in the General Options tab card of the Preferences dialog.
  • The size of the Zoom window in HDevelop is no longer limited.
  • Within various Variable Inspect dialogs and the result table of the Measure Assistant, the context menu of the table now offers a new entry for copying the selected values to the global clipboard. If the table has the keyboard focus, Ctrl-C can be used as an alternative. The values are separated by tabs and newlines or as HTML table.
  • The Image Acquisition Assistant now allows to enter arbitrary integer values for the port parameter (the previous maximum was 999). This allows acquisition interfaces to use the port parameter for more generic IDs, e.g., serial numbers.
  • The Image Acquisition Assistant now features a new inspection tab for displaying acquisition statistics.
  • For performance reasons, the table of reported quality issues in the Calibration Assistant was not updated when changing plate extraction parameters, which led to confusion. Now, the table is updated after a delay when the user appears to have finished adjusting a parameter value.
  • The Matching Assistant has been extended to support the find_*_shape_model parameter 'max_deformation' and the shape model parameter 'timeout'.

o Bug Fixes:
  • Working with two or more HDevelop instances in parallel and changing specific preferences in one instance could have led to an inconsistent state in the other instances. If, e.g., in one HDevelop instance the editor mode was changed, the editor mode in another HDevelop instance was not consistently handled. This problem has been fixed.
  • Copy and paste between a local HDevelop instance and an HDevelop instance on a Windows remote desktop was broken if the Program window was set to the dialog-based editor mode. This problem has been fixed.
  • In some rare cases it could have happened that an HDevelop program or procedure that was saved on a 32 bit operating system could not be opened by HDevelop/Demo on a 64 bit operating system or vice versa. Because of this problem, e.g., the HDevelop example program hdevelop/XLD/Transformations/union_cotangential_contours_xld.hdev could not be opened by HDevelop/Demo on a 64 bit operating system. This problem has been fixed.
  • Under Windows 7, saving a program file into an encrypted directory could have failed. On some systems, a message box was opened showing the error message "Target directory ... is write-protected. ..." if within the File Save dialog an encrypted directory was selected. This problem has been fixed.
  • The 'Save program as' suggestion was wrong if there was a subdirectory with the same name as the program but without the extension in the same directory as the program. This problem has been fixed.
  • HDevelop crashed if in SDI mode an ROI tool like the ROI dialog or the Line Profile tool was closed while the tool was in the "draw a region" mode. This problem has been fixed.
  • Under Linux it could have happened that HDevelop crashed at exit time if it was set to SDI mode and several program windows were open. This problem has been fixed.
  • If HDevelop was running in SDI mode, at least three Program windows were open, and a new program was loaded by Ctrl+N or Ctrl+O, HDevelop could have hung in an infinite loop. Additionally, in some rare cases it could have happened that the procedure name that was displayed in the Program window's procedure selection combo box did not fit the displayed procedure body. These problems have been fixed.
  • After replacing a program line that was invalid, e.g., because it had too many parameters, by the correct program line from the Operator window, the program line remained invalid. This happened if the suggested parameters have not been changed in the Operator window. This problem has been fixed.
  • Entering a part of the name of an invalid procedure into the Operator window could have crashed HDevelop. This happened if the name of a procedure file was not a valid procedure name (e.g., if it contained spaces, non-ascii characters, or started with a number) and the same procedure or another procedure with the same invalid name was reachable via another external procedure path. This problem has been fixed.
  • HDevelop scrolled all listings showing the same procedure and not only the active listing when the program counter was set in this procedure. This problem has been fixed.
  • HDevelop sometimes crashed if F2 was pressed during the call of wait_seconds. This happened in any case if wait_seconds was called within a procedure. Closing the program during the execution of wait_seconds could have also crashed HDevelop. These problems have been fixed.
  • In the dialog-based edit mode the copy and paste functionality did not work properly when copying and pasting from a 32 bit system to a 64 bit system or vice versa. This problem occured because of differently sized data types. This problem has been fixed. Note that the new behavior is not compatible to older HDevelop versions on 64 bit systems that do not have this fix.
  • The tool tips in the dialog-based editor of HDevelop did not show the operator name and the short description. This problem has been fixed.
  • It could have happened that within the full text editor the CursorUp and CursurDown keys as well as the PageUp and PageDown keys did not work as expected. As long as the auto-completion tool of the full text editor was able to suggest possible completions that match the entered sub-string, the keys were used to navigate within that list. However, if the suggestion list became empty and disappeared because no known value fitted the entered sub-string, the Up and Down keys were blocked. This problem has been fixed. Now, if the suggestion list disappears, the keys go back to their normal behavior, i.e., they can be used to set the text cursor within the editor window.
  • After calling 'Organize Windows' and scrolling the program listing with the mouse wheel, the line numbers may have become asynchronous to the source code. This problem has been fixed.
  • HDevelop crashed if a line continue character ('\') and a newline was inserted into a program line that was syntactically correct but would throw an error during execution and if, in addition, the Return behavior was set to 'Enter and execute' (automatic program execution while editing). This problem has been fixed.
  • The Suggestions menu was disabled if in the Program window nothing or more than one program line was selected and if the Operator window did not display an operator. Additionally, if the Operator window displayed an operator, the suggestions pertained always to that operator, even if the Program window was active and had the focus. These problems have been fixed. Now, the suggestions belong to the operator in the current program line if there is not a valid selection and the operator from the active window is taken as base of the Suggestions menu.
  • The identifiers 'by' and 'to' could not be used in the full text editor as variable names. In HALCON 9.0, variables named 'to' or 'by' could still be used as output variables if the operator was created via the Operator window. HALCON 10.0 crashed if such an operator was executed. This problem has been fixed. The identifiers 'by' and 'to' can now be used as variable names.
  • Modifying the name of an iconic variable in the full text editor in conjunction with large images could have blocked editing for one to several seconds. This problem occured in both sorting modes of the Variable window (sort-by-name, sort-by-occurrence). This problem has been fixed.
  • The auto-completion list stayed open at the end of statements that have no parentheses, like 'endfor' or 'endif', even if the entered name was complete and unambiguous. This impeded the work flow because the Cursor Up and Cursor Down keys were blocked by the auto completion list. This problem has been fixed.
  • If the floating point precision was set to a small value (<=2), the default values and value suggestions that are provided in the Operator window as well as in the full text editor were cut to the chosen precision. However, the precision should be applied only to calculated values and not to value suggestions. This problem has been fixed.
  • There was a memory leak in HDevelop in conjunction with passing undefined control parameters to an operator. In particular, if an expression was passed as the first input parameter to an operator while the second parameter was undefined, the tuple that was evaluated from the expression of the first input parameter was not freed. This problem has been fixed.
  • HDevelop's Procedure Interface dialog sometimes corrupted the list of procedures. This happened when the name of a procedure was modified but the changed name was discarded during the selection of a different procedure. This problem has been fixed.
  • The general documentation of the main procedure in HDevelop was saved but not loaded. This problem has been fixed.
  • HDevelop entered an inconsistent state after calling a procedure without a single valid program line. This problem has been fixed.
  • It could have happened that HDevelop crashed if it was closed after creating a procedure. This problem has been fixed.
  • HDevelop did not convert a procedure correctly when started from a shell with the '- dvp' or '- hdvp' option, i.e., the procedure code was not written to stdout. This problem has been fixed.
  • HDevelop crashed if the keyboard was used while a locked procedure was displayed in the full text editor. This problem has been fixed.
  • The color of the program line that calls a procedure was not correctly adapted if the procedure was first external and then became local. This problem has been fixed.
  • If an external procedure was stored as a dvp file, i.e., in the file format that was used in HALCON versions previous to HALCON 10, the name of a procedure could have been simply changed by renaming the dvp file. If an external procedure was stored as a hdev file, i.e., in the HALCON 10 file format, renaming the hdvp file had no effect on the procedure's name, which was confusing. This problem has been fixed. Now, the name of a procedure can be changed again by renaming the file name.
  • HDevelop sometimes crashed if an encrypted external procedure that consists of several hundred lines of code was loaded. If such a procedure was reachable via the external procedure paths this could have happened during the start of HDevelop. HDevEngine was also affected by this problem. This problem has been fixed.
  • If an external procedure was replaced via the External Procedure Settings dialog by another external procedure that has the same name but a different signature, the referring program lines could have become valid or invalid. However, the validation of the affected program lines did not change until they were edited manually. This problem has been fixed.
  • HDevelop sometimes saved external procedures in the wrong format. This happened when in the procedure interface dialog a local procedure was made external and the selected file format was not the default file format. Additionally, the file format combo box always offered the hdvp format at first position, even if the default format was dvp. These problems have been fixed.
  • If on the Search tab card in the Help window the full text search was restricted to PDF files while references and manuals were excluded from the search by deactivating the appropriate check boxes, the PDF manual files that are stored under %HALCONROOT%/doc/pdf/manuals were not searched. This problem has been fixed. Now, if the check box 'PDFs' is selected, all PDF files are searched.
  • While navigating with the keyboard through the search results in HDevelop's help browser, the external PDF viewer was opened as soon as a PDF file result was touched. This problem has been fixed. Now, the external viewer opens only on confirmation of the selected entry with the enter key or mouse click.
  • HDevelop crashed if the help files of an extension package were not available. This problem has been fixed. Now, HDevelop can continue to be used without the extension package help files. Extension package operators are tagged with a warning and their parameters get generic names, but they can still be entered and executed.
  • The vertical display range of the Line Profile tool could not be set to a negative value for images of type 'real'. This problem has been fixed.
  • The Line Profile tool's plot was cleared whenever a Measure Assistant was opened or deleted, even if the source for the line profile tool was not a Measure Assistant. Furthermore, the smoothing sometimes was not correctly drawn. In particular, if Smoothing was checked and the Smoothing slider was moved to the left very fast, the plot was not updated. These problems have been fixed.
  • HDevelop crashed on Linux/UNIX systems when the Line Profile tool was connected to a Measure Assistant and then the Measure Assistant was left via 'Exit Assistant'. This problem has been fixed.
  • It could have happened that after inserting a program file into the current program via one of the Insert Program entries from the File menu, the attempt to save the modified program was interrupted by the warning that the program was modified outside of HDevelop. The problem occurred if the inserted program file was older than the current program file. This problem has been fixed.
  • If the first attempt to save a program failed because of a problem with the file name and if the File dialog was automatically reopened for entering a different file name or selecting a different directory to write into, the Save Program File dialog became corrupted and could not be used anymore to save the program. It was reopened again and again until the action was aborted by pressing Cancel. This problem has been fixed.
  • There was a memory leak in the Read Image dialog. In particular, if within the dialog several images were loaded one after the other for being displayed in the preview window, only the last image was cleared. This problem has been fixed.
  • Under certain conditions, HDevelop crashed after closing the ROI dialog. This happened in the specific case that the ROI dialog was so small that the tool bar could not be displayed completely, i.e., a Show More button (>>) was displayed and, in addition, this button was used at least once to display the remaining tool buttons. This problem has been fixed.
  • The histogram tool sometimes used a wrong width when the Button 'Force minimum histogram width' was checked. This problem has been fixed.
  • HDevelop's histogram tools sometimes showed flawed labels on the x axis of the scales. This problem has been fixed.
  • HDevelop's histogram tools did not always handle the 'RGB' mode correctly. This problem has been fixed.
  • The statistics in the feature histogram were not refreshed when the red/green line selection was changed. This problem has been fixed.
  • The feature histogram did not display features correctly if there was only one value to show. This problem has been fixed.
  • Some problems occurred if the system setting 'flush_graphic' was set to 'false' by calling set_system ('flush_graphic', 'false'):
    • Pressing the 'Clear Window' button of the Graphics window did not clear the window.
    • Double clicking on the icon of an iconic variable in the Variable window or selecting the display action from the context menu did not display the iconic object in the Graphics window.
    • Any action that forced the repainting of the Graphics window, like resizing the window or resetting its part, reset the flush_graphic setting to 'true'.
    These problems have been fixed.
  • If in the Graphics window images with reduced domain were displayed over another image, the display flickered in 3D plot mode. This problem has been fixed.
  • HDevelop crashed if a Graphics window was opened after the default font was set to an invalid value. Additionally, HDevelop may have crashed during startup if the locale was set to a value for which the default font was not available. These problems have been fixed.
  • dev_set_paint with a tuple of 3D plot parameters led to wrong GUI element entries. In particular, only the first parameter was assumed. This problem has been fixed. Additionally, now the output of the Graphics window does not change until the next call to dev_display.
  • It could have happened that the tool tip of the Graphics windows that displays the coordinates and the gray value at the mouse position did not disappear although the Ctrl key was released. This happened especially in cases where the mouse was moved out of HDevelop and clicked while the Ctrl key was still pressed. This problem has been fixed.
  • HDevelop erroneously provided the possibility to sort global variables in the variable context menu of the global tab card. This sometimes caused HDevelop to crash. This problem has been fixed.
  • HDevelop might have been frozen if several variables were displayed in the same Variable Inspection window and one column of the table became very small, e.g., by updating one of the variable values or by resizing the window. This problem has been fixed.
  • Inserting code from the Image Acquisition Assistant could have crashed HDevelop if the action was performed via the tool bar button while the Parameter tab was active. This problem has been fixed.
  • There was a memory leak in the Matching Assistant. In particular, whenever a new image was selected for the model creation, the memory increased. Thus, using the Image Acquisition Assistant in live mode to select an image for the model creation led to a rapid increase of memory usage. This problem has been fixed.
  • If within the Export dialog the selected directory did not exist, the inappropriate error message 'Target directory ... is write-protected' was displayed. This problem has been fixed. Now, the dialog offers the possibility to create the directory.
  • HDevelop exported assignments incorrectly to Visual Basic .NET - HALCON/.NET if the right side of the assignment was a variable. In that case in the exported code only the reference to the variable was copied instead of the content of the variable. This problem has been fixed.
  • HDevelop exported floating point constants with a precision rounded to 6 significant decimal places, even if the HDevelop script contained a greater precision. This problem has been fixed. Additionally, HDevelop now exports floating point constants according to their string representations in the HDevelop script wherever possible.
  • HDevelop exported the functions firstn, lastn, str_firstn, and str_lastn incorrectly to C++. This problem has been fixed.
  • HDevelop exported break and continue statements within else statements incorrectly to C. This problem has been fixed.
  • HDevelop exported operator and procedure calls that used the same variable as input and output incorrectly to .NET, Visual Basic 6.0, and C. In case of an exception, the exported code could have led to memory leaks and runtime errors. Additionally, regardless of the exception case, there was unnecessary copying of variables if the latter were of type iconic. These problems have been fixed.
  • HDevelop programs exported to HALCON/.NET may have caused a runtime error if the program contained an insert operation with an uninitialized variable. This problem has been fixed.

o Examples:

HALCON has been extended by the following HDevelop example programs:

  • The new HDevelop example programs swissranger*.hdev in the directory hdevelop/Image/Acquisition show how to use the new SwissRanger interface.
  • The new HDevelop example programs video4linux2*.hdev in the directory hdevelop/Image/Acquisition show how to use the new Video4Linux2 interface.

The following HDevelop example programs have been modified:

  • The following HDevelop example programs from the subdirectory solution_guide/3d_vision have been modified to use the operator calibrate_cameras instead of camera_calibration:
    • handeye_movingcam_calibration.hdev and
    • handeye_stationarycam_calibration.hdev
    Additionally, solution_guide/3d_vision/stereo_calibration.hdev has been extended to write the camera setup model to file.
  • In the HDevelop example program hdevelop/Identification/Data-Code/calibration_aimdpm_1_2006.hdev, the output parameter BrightElmGrayvals of the local routine get_bright_elm_gray_values was read from the wrong image. This problem has been fixed. Now, it is read correctly from ImageReference instead of Image.
  • The HDevelop example program hdevelop/XLD/Transformations/union_cotangential_contours_xld.hdev could not be opened by HDevelop/Demo on a 64 bit operating system, because in some rare cases it could have happened that an HDevelop program or procedure that was saved on a 32 bit operating system could not be opened by HDevelop/Demo on a 64 bit operating system or vice versa. This problem has been fixed.

HALCON Library

Speed-Up and Enhancements
General Modifications
Modified Operators
Bug Fixes

o Speed-Up and Enhancements:
o General Modifications:
  • If the HALCON library is loaded without the environment variable HALCONROOT being set, HALCONROOT is now determined automatically from the path where the library was loaded. From this path, the file name of the library is removed, and (if existant) also the part /bin/HALCONARCH/ or /lib/HALCONARCH/, where HALCONARCH is the name of the architecture coded into the loaded library (see the parameter 'halcon_arch' in the operator get_system). The resulting path is then set as new environment variable HALCONROOT for the current process. Furthermore, the determined path of the library can be queried with the operator get_system using the Query parameter 'library_fullname'.
  • HALCON now runs from within directories with names containing special characters under Windows, i.e., any of the directory names in the path can contain special characters. Furthermore, all file names license*.dat in the directory license can contain special characters after the prefix "license".
  • The extension package mechanism has been extended by an initialization function. Now, extension packages can optionally export a function with the following name and signature:
     extern HUserExport Herror HXPkgMain(Hproc_handle);
    This function is called right after the extension package has been loaded.

o Modified Operators:
  • cfa_to_rgb now supports a bilinear interpolation mode ('bilinear_dir') that leads to fewer "zipper-like" artifacts at edges.
  • Previously, executing a draw_* operator in a HALCON window blocked all further graphics output until the draw operation was finished. For Windows, it is now possible for another thread to continue output into another window (created by that thread). For Linux/UNIX, the behavior is unchanged as X11 is not thread-safe.
  • edges_sub_pix and edges_color_sub_pix now use less temporary memory. If rh is the height of the input image's domain and w is the width of the image, the amount of required temporary memory has been reduced by rh*w*12 bytes.
  • find_planar_uncalib_deformable_model, find_planar_calib_deformable_model, and find_local_deformable_model use less memory, particularly for large models.
  • gen_grid_rectification_map is now more tolerant to input points that are erroneously found more than once. Instead of immediately throwing an error, gen_grid_rectification_map first analyzes the distances to the neighboring grid points and checks whether possible doublets cause problems during the calculation of the point order. If the distance between the respective points is small compared to the minimum distance to their immediate neighbors, the doublets are treated as one single grid point and no error is thrown. Instead, a low level error warns the user of the problematic points. However, note that the increased tolerance only affects certain parts of the process that calculates the rectification map.
  • get_compute_device_info has been extended with the new parameters 'image2d_max_width' and 'image2d_max_height' which return the maximum dimensions of OpenCL image objects.
  • get_deformable_model_params now allows to query the internal camera parameters of a calibrated deformable model with the parameter 'cam_param_rect'.
  • get_line_of_sight now appears in the chapter Calibration/Inverse Projection in the HALCON reference manual and in the HDevelop operator menu.
  • get_object_model_3d_params has been extended to return triangles and faces. The reference manual entry of get_object_model_3d_params has been adapted accordingly, i.e., for the generic parameter 'ParamName' now also the values 'triangles' and 'faces' are described.
  • project_3d_point now appears in the chapter Calibration/Projection in the HALCON reference manual and in the HDevelop operator menu.
  • read_object_model_3d is now able to create a mapping from the read 3D points to image coordinates if the points are aligned in a regular grid. The mapping is equivalent to the one created by xyz_to_object_model_3d.
  • set_window_param has been extended by the new parameter 'caption_color', which can be used to set the color of the 3D plot's axis captions. Additionally, the font that is used to display the axis captions is now the font that has been set before the 3D plot mode was enabled.

o Bug Fixes:
  • Operators of extension packages that were defined to run under mutual exclusion crashed. This problem has been fixed.
  • HALCON returned a low level error message if the help files could not be found. This problem has been fixed.
  • The system parameter flush_graphic could have been set to false on Linux/UNIX systems. As the semantics of flush_graphic are different on Windows and X Window systems, setting flush_graphic to false on Linux/UNIX systems led to undesired behavior. This problem has been fixed and setting flush_graphic to false on Linux/UNIX systems now has no effect.
  • Sometimes, for HALCON XL on 32 bit systems, operators incorrectly returned the error 3140 ("Not enough memory") when using large images with different sizes varying heavily in width and height. This problem has been fixed.
  • The characters included in some of the pretrained OCR fonts that are provided by HALCON were not correct:
    • 'DotPrint_A-Z+', 'Industrial_A-Z+', 'OCRA_A-Z+', 'OCRB_A-Z+', and 'Document_A-Z+' included digits although they should include only uppercase characters and special characters.
    • 'OCRB' and 'OCRB_A-Z+' did not include curly brackets although they should include them.
    • 'Document' and 'Document_A-Z+' did not include the special character '@' although they should include it. Instead, 'Document_A-Z+' included the special character '§' although it should not include it.
    • 'Industrial_A-Z+' did not include the special character '€' although it should include it.
    • 'Pharma_0-9+' did not include round brackets although it should include them.
    These problems have been fixed.
  • The training mode of the bar code reader did not determine the orientation of the bar codes correctly, i.e., the automatically determined values of the parameters 'orientation' and 'orientation_tol' could not be used.
  • The ECC200 Datacode reader crashed in rare cases if a timeout was set. This problem has been fixed.
  • Running some HALCON operators on an OpenCL device sometimes could have resulted in a crash. This problem has been fixed.
  • Some operators returned wrong results on AMD devices with specific driver/SDK versions due to a bug in the AMD OpenCL compiler. In particular, the AMD Stream SDK 2.3 was affected. This problem has been fixed.
  • Operators parallelized on domain level returned output image objects with a wrong domain if the number of input images was greater than 1, the domains of the input images differed, and the operator did not modify the output domain. This problem has been fixed.
  • The texture in the 3D plot paint mode was slightly displaced. This problem has been fixed.
  • The 3D plot did not display large textures with some graphics cards due to the hardware-dependent limit in texture dimensions. This problem has been fixed.
  • add_channels might have returned wrong images in the rare cases where the input image had a domain that was nearly rectangular, i.e., it was a rectangle for which some complete lines were missing. This problem has been fixed.
  • The OpenCL implementation of the following HALCON operators that use OpenCL's image2d functionality did not check if the image fit within the size constraints of the OpenCL device being used: These operators will now be executed on the CPU instead of reporting an error if the input image is too large for the selected OpenCL device.
  • affine_trans_object_model_3d failed and returned H_MSG_FAIL if the 3D object model contained primitive information. This problem has been fixed.
  • bandpass_image returned wrong results at the border. This problem has been fixed.
  • binocular_distance and binocular_disparity might have returned images with corrupted domains in rare cases. These corrupted domains might have caused a crash in succeeding filter operators that use them. This problem has been fixed.
  • If calibrate_cameras was performed on a calibration data model without any observations, it returned the value -1.INF or -1.IND in Error. This problem has been fixed. Now, calibrate_cameras returns -1 instead.
  • close_edges crashed when the region Edges was higher than the image EdgeImage. This problem has been fixed.
  • convol_image, median_image, and rank_image returned wrong results if the image width was smaller than three times the mask radius. Additionally, convol_image produced incorrect results when using floating point filter masks on compute devices. Furthermore, it crashed if the type of the input image was byte, uint2, or int2 and Mask contained floating point values. These problems have been fixed. In the latter case, convol_image now returns an error message.
  • The operators in rare cases erroneously returned the error 8510 ("Number of shape model points too small"). This could have happened if an artificial image was used as the model image and the contrast was estimated automatically. This problem has been fixed.
  • create_shape_model_3d sometimes returned the error 6002 ("Memory partition on heap has been overwritten"). This sometimes happened if for LatitudeMin or LatitudeMax a value outside the range of -pi/2 and +pi/2 was passed. This problem has been fixed. Now, an appropriate error message is returned for invalid values. Furthermore, the reference manual entry of create_shape_model_3d was adapted accordingly. It now states that LatitudeMin and LatitudeMax must be in the range [-pi/2;+pi/2].
  • create_[un]calib_descriptor_model crashed if no model points could be extracted. In particular, this could have happened if either:
    • both descriptor parameters 'min_rot' and 'max_rot' were set to 0,
    • the model image did not contain any point features,
    • or the detector parameters were inappropriate for their detection.
    These problems have been fixed.
  • crop_domain returned wrong results or might have crashed if called with multiple input image objects with the same underlying image matrix. This problem has been fixed.
  • depth_from_focus used wrong filter masks if filter sizes for smoothing were passed to it. In particular, the next larger mask was used instead of the selected mask (e.g., 5x5 instead of 3x3). Additionally, depth_from_focus was not parallelized correctly if smoothing was enabled. These problems have been fixed.
  • determine_deformable_model_params did not correctly support the case of planar calibrated deformable models. This problem has been fixed. Now, it is possible to provide the internal camera parameters for the correct parameter estimation.
  • deviation_image calculated the wrong result in the border region for all image types except 'byte'. This problem has been fixed.
  • disp_cross ignored the current line width that was set with the operators set_line_width or dev_set_line_width if the current region fill mode was set to 'fill'. This problem has been fixed.
  • The operators crashed if the entire character region was outside but close to the image domain. This problem has been fixed.
  • The draw_*_mod operators did not return the input values or input objects if the user canceled the operator and 'cancel_draw_result' was set to 'true'. The draw_* operators did not return the objects or control tuples drawn so far if the Stop button in HDevelop got pressed or HIOCancelDraw was called. These problems have been fixed.
  • eccentricity in rare cases returned erroneous results for Bulkiness and StructureFactor. This problem has been fixed.
  • find_aniso_shape_model did not return an error in the case that only a value for the maximum deformation but no value for the desired subpixel accuracy was passed in the parameter SubPixel. This problem has been fixed. Now, the error 1311 ("Wrong value of control parameter: 11") is returned.
  • find_local_deformable_model crashed in rare cases if invalid deformations were created during the matching. This problem has been fixed.
  • find_marks_and_pose sometimes failed to extract calibration marks from uint2 images of calibration plates with a marked corner, marks from large images where the calibration marks appear in a distance of more than 100 pixels from each other, and marks of very elongated calibration objects, i.e., if width >> height or vice versa. Additionally, find_marks_and_pose hung if the elements sx and sy of the camera parameters are both zero. These problems have been fixed.
  • find_planar_uncalib_deformable_model and find_planar_calib_deformable_model sometimes returned the error 9205 ("Matrix is singular"). This problem has been fixed.
  • The operators in very rare cases did not return the correct match. This might have happened if the object to be found showed a perfect reflection symmetry, the model was created from an artificial image, and the search image was also an artificial image. In the case of the shape-based 3D matching, the problem might have occured if one of the views of the object showed a reflection symmetry and the search image was an artificial image. This problem has been fixed.
  • find_shape_models, find_scaled_shape_models, and find_aniso_shape_models sometimes did not correctly check the overlap between matches of different models if for MaxOverlap only a single value other than 1.0 was passed. This happened if different lowest pyramid levels were specified for the different models in NumLevels. This might have also happened in some cases if SubPixel was set to 'interpolation' and for 'max_deformation' a value other than 0 was specified. This problem has been fixed.
  • find_text computed the structure of text lines incorrectly in some cases. As a consequence, such lines could not be matched with the structures provided via the set_text_model_param parameter text_line_structure. This problem has been fixed.
  • fit_primitives_object_model_3d returned no result if the value of the generic parameter ParamName was set to 'output_point_coord' and the value of the generic parameter ParamValue was set to 'false'. This problem has been fixed.
  • gen_binocular_rectification_map, get_sheet_of_light_param, get_deformable_model_params, and get_shape_model_3d_params did not handle camera parameters with polynomial distortion parameters correctly. Either the resulting camera parameter tuple had the wrong number of elements or the operator crashed. This problem has been fixed.
  • gen_contour_region_xld produced corrupt contours with neighbourhood=4. In particular, concave corners of the boundary open in upper left direction were not represented properly. This problem has been fixed.
  • gen_ellipse_contour_xld crashed if the input parameter Resolution was set to a value less than 1e-14. read_contour_xld_dxf crashed if a DXF file that contains polygons with extremely small circular arcs was read using HALCON XL. These problems have been fixed.
  • gen_gauss_pyramid sometimes returned an error when used to calculcate a pyramid of scaled down regions. This problem has been fixed. gen_gauss_pyramid is now able to return a pyramid of scaled down regions.
  • gen_grid_rectification_map sometimes missed meshes although in the previous steps the necessary grid points and connecting lines were detected correctly. As a consequence, the resulting image map's coverage might have been too small. This problem has been fixed.
  • gen_measure_rectangle2 crashed in rare cases if Interpolation was set to 'bicubic'. This problem has been fixed.
  • get_data_code_2d_objects returned erroneous regions of the modules if the module size was very small and the data code model parameter 'small_modules_robustness' was set to 'high'. This problem has been fixed.
  • get_data_code_2d_results did not implement the value 'small_modules_robustness' for the parameter ResultNames. Instead, the operator returned with an error in that case. Furthermore, in the reference manual entry of the operator, the documentation of the corresponding parameter value was missing. These problems have been fixed.
  • get_grayval_contour_xld returned no error messages for an array of images and an array of XLD contours. Additionally, it incorrectly returned the error 1302 ("Wrong value of control parameter: 2") for contour points outside the image. These problems have been fixed. Now, the error 3267 ("A contour point lies outside of the image") is returned for contour points outside the image. Programs that evaluate the returned error messages must be adapted accordingly.
  • get_object_model_3d_params returned incorrect results for the number of points ('num_points'), the point coordinates ('point_coord_x', 'point_coord_y', 'point_coord_z'), and the number of polygons ('num_faces'). This problem has been fixed.
  • get_pose_type did not check if the value of the pose type is valid. This problem has been fixed. Now, it is checked whether the last value of the given pose correctly represents one of the available pose types. If it does not, the error 1301 ("Wrong value of control parameter: 1") is returned.
  • get_surface_model_param with the parameter 'sampled_pose_refinement' erroneously translated the returned 3D object model. This problem has been fixed.
  • gray_dilation_shape and gray_erosion_shape could have returned incorrect results at the left edge of the image for the shape 'octagon' when MMX or SSE2 optimizations and automatic operator parallelization were enabled and the image width was not a multiple of eight. This problem has been fixed.
  • gray_opening_shape and gray_closing_shape could have returned incorrect results for a rectangular mask with either a width or a height smaller than 3 when working with automatic operator parallelization or when working on a reduced domain. This problem has been fixed.
  • gray_*_shape and gray_*_rect crashed in rare cases on 64 bit Linux systems if SSE2 was disabled while MMX was enabled. This problem has been fixed.
  • harmonic_interpolation hung in rare cases if automatic operator parallelization was turned on. This problem has been fixed.
  • min_max_gray returned an incorrect result if the value that was passed to the parameter Percent was not representable by an integer. This problem has been fixed.
  • paint_region, overpaint_region, and paint_xld can paint gray values into multi-channel images where each element of the input tuple Grayval corresponds to a channel. This did not work properly if the type of the first tuple element differed from the types of the remaining elements. This problem has been fixed.
  • project_object_model_3d returned incorrectly projected contours when a telecentric camera with parallel projection was used. The projection was scaled by a factor of 1000. This problem has been fixed.
  • read_contour_xld_dxf and read_polygon_xld_dxf inserted DXF BLOCKs at a wrong position if the DXF BLOCKs were scaled and/or rotated. This problem has been fixed.
  • The suggested values of the following parameters of the following operators were wrong: This problem has been fixed.
  • read_object_model_3d and read_object_model_3d_dxf returned an incorrect result in rare cases. This problem has been fixed.
  • read_string crashed if more than 1024 characters were read and if the third input control parameter was set to a value bigger than 1024. Additionally, it crashed if the value of the second input parameter had more than 1024 characters. Furthermore, for Linux systems the Backspace key did not work. These problems have been fixed. Now, the error 1303 ("Wrong value of control parameter: 3") is returned if the third input control parameter was set to a value bigger than 1024.
  • read_surface_model expects a string as file name and crashed or led to an undefined behavior if an integer or a float was passed as file name argument. Additionally, error 1402 ("Wrong number of values of control parameter: 2") instead of 1401 ("Wrong number of values of control parameter: 1") was returned if the number of arguments for the file name parameter was different to one. These problems have been fixed.
  • receive_image received wrong multi-channel images in case that the image matrices (the channels of the image) were shared, i.e., the identical image matrix was used multiple times within a multi-channel image. This problem has been fixed.
  • reconstruct_surface_stereo had the following problems:
    • It did not give any results with 'sub_sampling_step'=1. This problem has been fixed.
    • It sometimes returned the error 3513 ("Internal error: number of chords too big for num_max"). This happened especially if the distance of two cameras to the object was significantly different. This problem has been fixed.
    • It could have crashed when working with images that do not have the appropriate size, i.e., the size that was specified in the camera parameters that are defined in the stereo model. This problem has been fixed. Now, reconstruct_surface_stereo returns the error 8493 ("Image sizes must be identical with the corresponding camera parameters from the camera setup") if it detects that the image sizes are wrong.
    • It did not store the 'xyz_mapping' attribute to the output 3D object model. In general, when reconstructing surfaces from multiple image pairs, reconstruct_surface_stereo cannot create a point-to-image-coordinates mapping because the points will be originating from different images. However, if only one pair of images is processed, such a mapping to the first image is possible and the according information is needed by operators like segment_object_model_3d and object_model_3d_to_xyz (in the 'from_xyz_map' mode). This problem has been fixed. Now, if only one pair of images is processed, reconstruct_surface_stereo stores the 'xyz_mapping' attribute to the output 3D object model. The reference manual entry of the operator has been adapted accordingly.
  • reduce_ocr_class_svm caused a memory leak if not enough memory was available. This problem has been fixed.
  • regiongrowing_n accepts arrays of multi-channel images as input, but the number of channels was taken from the first image only. Thus, the operator failed with the error 9003 ("Undefined gray values"), e.g., when called with a combination of a multi-channel image and a single-channel image. This error might not have occured if the automatic operator parallelization was turned on. Additionally, regiongrowing_n sometimes returned the error 6002 ("Memory partition on heap has been overwritten"). These problems have been fixed.
  • The following operators returned wrong results for large real input control values on 64 bit systems: This problem has been fixed.
  • send_region did not send empty regions properly. The same problem occurred in send_image if the image contained an empty domain. These problems have been fixed.
  • In rare cases, zooming an image in a window after set_check('text') has been called, led to an error.
  • set_data_code_2d_param incorrectly returned the error 8847 ("invalid value for 'mirrored'") if called with GenParamNames = 'strict_model' and an invalid parameter value. Additionally, it incorrectly accepted strings as generic parameter values for GenParamNames = 'persistence'. These problems have been fixed. Now, set_data_code_2d_param returns the error 8830 ("Invalid parameter value") if called with GenParamNames = 'strict_model' and an invalid parameter value, and only the value 0 or 1 is allowed for the parameter 'persistence'.
  • set_*_deformable_model_metric in rare cases resulted in inconsistent models. This problem has been fixed.
  • set_system with 'temporary_mem_cache' was not thread-safe. Additionally, it may have caused a deadlock when running in multiple threads with exclusive parameter values. Furthermore, Int2 images were displayed incorrectly if the number of bits to be used for displaying the image was set with set_system('int2_bits',...). In particular, negative values of the image were not displayed as black. These problems have been fixed.
  • set_text_model_param crashed if a tuple containing 'text_line_structure' was passed in the Param slot. This problem has been fixed.
  • smooth_funct_1d_gauss and smooth_funct_1d_mean returned the error 9000 ("Function not implemented on this machine") if the function passed in the first argument was created with create_funct_1d_pairs instead of create_funct_1d_array. This problem has been fixed. Now, the new error 8375 ("Wrong function type") is returned instead.
  • text_line_orientation in rare cases returned different results if called multiple times. This problem has been fixed.
  • thickening transposed the input values of Row and Column. This problem has been fixed. Now, thickening handles the input values of Row and Column correctly. Programs that use this operator must change the values of Row and Column accordingly.
  • threshold, fast_threshold, expand_gray, and expand_gray_ref did not accept control parameter tuples that contain integer and real values. Additionally, expand_gray and expand_gray_ref limited the number of used channels to the number of tuple elements given in the parameter Threshold. Furthermore, threshold returned the error 3513 ("Internal error: number of chords too big for num_max") if the output region contained the maximum possible number of runs (i.e., vertical stripes, starting at column 0), the input domain was rectangular shaped with the width of the input image, and the width of the image was odd sized. These problems have been fixed.
  • translate_measure could have damaged an arc measure object such that a successive call to a measure_* operator caused a crash. In particular, this could have happened when the arc measure object was translated from the inside of its definition domain (Width x Height) to the border of the domain such that the measure object was intersecting with the border. Note that translating a rectangle2 measure object was not affected by this problem. This problem has been fixed.
  • tuple_is_number and tuple_number crashed in very rare cases. Furthermore, in rare cases the setting of the locale could have been changed by the execution of one of these two operators. These problems have been fixed.
  • update_kalman did not always update all the parameters that are specified in the content row of the update file with a '+'. This problem has been fixed.
  • var_threshold returned wrong results for even mask sizes if the parameter LightDark was set to 'light'. This problem has been fixed.
  • The behavior of wait_seconds was unintentionally changed to dispatch messages while waiting. This could have led to recursion in GUI applications under Windows. This problem has been fixed.
  • write_image allowed to encode direction images in lossy formats (i.e., JPEG2000 and JPG compressed TIFF layers). This problem has been fixed. write_image now automatically deactivates lossy encoding for direction images.

HALCON/.NET

o Functionality:
  • The overhead for calling operators via HALCON/.NET has been reduced. For light-weight tuple operations, this may cause a noticable speed-up of up to 30%.
  • Automatic operator parallelization in .NET applications did not exploit the full number of processors but left one processor idle. This problem has been fixed.

o Bug Fixes:
  • The classification classes HClassSvm, HClassMlp, and HClassGmm did not release their resources in HALCON/.NET. This problem has been fixed.
  • The initialization of HWindowControlWPF did not work on tab controls and similar components (when not initially visible), and could further be confused by events such as theme changes. This problem has been fixed.
  • DecodeBarCodeRectangle2 sometimes crashed if no bar code was found. This problem has been fixed.

HALCON/COM

o Bug Fixes:
  • Unregistering the halconx.dll of HALCON 10.0 by executing "regsvr32 -u" did not work. This problem has been fixed.
  • The classes HImageX, HRegionX, HClassSvmX, HClassMlpX, and HClassGmmX did not release their resources in HALCON/COM. This problem has been fixed.
  • Applications using HALCON/COM did not terminate properly in HALCON 10.0. This problem has been fixed.

HDevEngine

o Bug Fixes:
  • The vb.net examples for HDevEngine did not upgrade properly when opened with Visual Studio 2008 or higher due to an incorrectly set startup form. This problem has been fixed.
  • HDevEngine programs crashed if an uninitialized output object was accessed via the HDevProcedureCall::GetOutputIconicParamObject() method and assigned to an Halcon::HObjectArray or an Halcon::Hobject instance. This problem has been fixed.
  • If an error occurred during the initialization of HDevEngine, e.g., owing to missing help files, an unknown exception was thrown. The type of this exception was not HDevEngineException, so it could not be handled correctly. This problem has been fixed.
  • Multithreaded HDevEngine applications could have crashed if the same HDevelop procedure was called in parallel in several threads at the same time. This problem has been fixed.
  • If two procedure calls in HDevEngine/.NET simultaneously raised an exception from separate threads, an access violation occured. This problem has been fixed.

Image Acquisition Interfaces

The latest information about new extensions and newly supported image acquisition devices can be found on MVTec's web server.

o New Image Acquisition Interfaces:
  • HALCON now also includes the SwissRanger interface to support the SR4000 time-of-flight cameras from the Swiss camera manufacturer MESA Imaging. This new interface allows the easy acquisition of calibrated 3D data (distance, amplitude, and cartesian X/Y/Z images) based on time-of-flight technology. The new HDevelop example programs swissranger*.hdev in the directory hdevelop/Image/Acquisition show how to use this interface.
  • HALCON now also includes the Video4Linux2 interface to support all cameras that provide a V4L2 compliant driver and is available for Linux x86 and Linux x86_64. It is based on the V4L2 API, the second generation Linux kernel interface for video capture. The new HDevelop example programs video4linux2*.hdev in the directory hdevelop/Image/Acquisition show how to use this interface.

o Modified Image Acquisition Interfaces:
  • For the 1394IIDC interface a problem in get_framegrabber_param regarding the query of the currently used packet size has been fixed.
  • The Andor interface now supports the use of multiple output amplifiers and includes new parameters to dynamically specify the desired image part, to query the current camera temperature and to control the fan mode. Additionally, the default settings of the shutter values have been changed. Furthermore, a problem in the action parameter 'do_abort_grab' has been fixed.
  • The GenICamTL interface has been slightly enhanced. Additionally, several problems have been fixed.
  • The GigEVision interface comes with the new version 1.0.6.1 of the underlying HALCON GigE Vision Streaming Filter. This new driver version supports now also WoW64, i.e., running 32 bit applications on Windows x64, and provides several improvements regarding performance and stability especially in the resend case. Furthermore, the new HALCON GigEVision interface revision includes a couple of minor bugfixes and enhancements.
  • The MILLite interface now allows to control the GPIO lines of the Matrox frame grabber boards.
  • The MultiCam interface now is based on the new MultiCam driver version 6.4 and runs now also natively on Windows x64. Furthermore, a problem regarding info_framegrabber('info_boards') has been fixed.
  • The pylon interface has been adapted to the new Basler pylon SDK version 2.3 and allows to specify the desired device also via its IP address, DeviceUserID or serial number. Additionally, a problem that occured in case of an error when trying to grab images, a problem regarding the access of TransportLayer and StreamGrabber features, and a possible crash in open_framegrabber with the pylon SDK 2.3.3 that occurred if a Camera Link board was installed have been fixed.
  • For the SaperaLT interface a problem regarding timeout errors when setting the parameter 'grab_timeout' to -1 (infinite) has been fixed.
  • The SICK-3DCamera interface now is based on the new SICK icon API 4.2 with support of Windows 7 and runs now also natively on Windows x64. Additionally, a serious problem that led to application crashes while grabbing images (caused by using wrong runtime libraries), two problems in combination with the use of the calibration filter, and problems regarding high resolution images have been fixed.
  • The SiliconSoftware interface has been extended to enable the seamless use of Segmentation (Blob) SmartApplets. Furthermore, a problem regarding continuous grabbing has been fixed.
  • The SonyXCI-2 interface has been extended to fully support the GPIO functionality of the XCI-V100 / XCI-SX100 smart cameras. Additionally, a problem has been fixed to ensure the correct behavior of the parameter 'image_available'.
  • The uEye interface now is based on the uEye SDK 3.7 (or higher) and includes several new parameters regarding trigger debouncing, auto blacklevel compensation, white balancing, and error handling. Additionally, the new interface revision allows to specifiy a camera also by its serial number, supports the HDR sensor's auto features, and includes some minor bugfixes and enhancements.
  • The VRmAreaScan3D interface now is based on the new SDK driver version 2.3 and runs also natively on Windows x64 systems.

Please refer to the corresponding documentation for information about additional changes, especially whether a new revision of the corresponding device driver is required.


Manuals

o Installation Guide:

The Installation Guide is available in a new edition. In particular, the following information has been added:

  • Due to a limitation of the licensing software, USB dongles are not supported via Windows Terminal Server or Remote Desktop. The Installation Guide has been updated accordingly.
  • The name of the Windows installation program for the USB dongle driver has changed from "hinstall" to "haspdinst". The Installation Guide has been updated accordingly.
  • Windows Server 2008 has been added to the list of supported platforms in the Installation Guide.

o HDevelop User's Guide:

The HDevelop User's Guide is now available in a new edition. It has been adapted to the changes in HALCON 10.0.1.


o Solution Guide Basics:

The Solution Guide Basics is now available in a new edition. It has been revised as follows:

  • The Stereo Vision chapter has been partially revised. Amongst others, the descriptions of the acquisition of calibration images and stereo images have been separated more clearly.
  • The OCR chapter of the Solution Guide Basics listed the special characters that are contained in the pretrained OCR fonts incorrectly. In particular, some lists contained a comma, which should not be supported for any of the pretrained fonts because in practice a comma and a point often will be mixed up. Additionally, the font Pharma_0-9+ was missing in the lists. These Problems have been fixed. Furthermore, a note on the font 'OCRB_passport' regarding the special characters was misleading and has been corrected.

o Solution Guide on 3D Vision:

The Solution Guide on 3D Vision is now available in a new edition. It has been revised as follows:

  • The section about shape-based 3D matching has been extended by tips and tricks for the handling of specific problems.
  • The documentation for stereo vision has been partially revised. Amongst others, the descriptions of the acquisition of calibration images and stereo images have been separated more clearly.
  • The section about the transformation from world coordinates to image coordinates contained some incorrect descriptions for the shown example. In particular, affine_trans_point_3d was said to transform world coordinates to image coordinates instead of world coordinates to camera coordinates, and the operator project_3d_point for the transformation from camera coordinates to image coordinates was missing. This problem has been fixed.

o HALCON Operator Reference Manual:
  • The reference manual often referred to operators as procedures. This problem has been fixed.
  • The reference manual now indicates whether an operator supports direct manipulation of objects on compute devices without requiring a data transfer back to the CPU (e.g., reduce_domain).
  • The reference manual entries for shape-based matching and component-based matching now include the advice to combine the parameter 'max_deformation' with a least-squares adjustment.
  • The reference manual entry of append_channel did not state that regions can be used as first input object. This problem has been fixed.
  • The reference manual entry of create_shape_model_3d has been extended to describe the valid range for LatitudeMin and LatitudeMax.
  • The reference manual entry of fast_threshold described the process that is used by the operator to select the points for the segmentation incorrectly. This problem has been fixed.
  • The reference manual entry of get_data_code_2d_results has been extended to describe the value 'small_modules_robustness' for the parameter ResultNames.
  • The reference manual entry of get_line_of_sight now appears in the chapter Calibration/Inverse Projection in the HALCON reference manual.
  • The reference manual entry of get_object_model_3d_params has been extended to describe the new values of the generic parameter 'ParamName' ('triangles' and 'faces'). Additionally, it has been extended to describe the order of the results returned when setting the generic parameter ParamName to the value 'primitive_parameter'.
  • The reference manual entries of open_compute_device and init_compute_device contained an error. The multithreading scope was erronously defined as global instead of local. This problem has been fixed.
  • The reference manual entry of project_3d_point now appears in the chapter Calibration/Projection in the HALCON reference manual.
  • The reference manual entries of the operators now also inform about the offset of 0.5 pixels between the coordinate systems used by different types of operators. This information is similar to the information given in the reference manual entries of the corresponding operators for affine transformations.
  • The reference manual entries of the operators read_cam_par and write_cam_par did not describe the camera parameters for area scan cameras with the distortions modeled by the polynomial model. This problem has been fixed.
  • The reference manual entry of read_image contained an error in the paragraph about files of the .ima format. It did not correctly describe what happens if the description file of an image is not available. This problem has been fixed.
  • The reference manual entries for shape-based 3D matching linked to the operator read_object_model_3d_dxf, which is legacy, and assumed the 3D object model to be of type DXF. This problem has been fixed. Now, the documentation links to read_object_model_3d and assumes the 3D object model to be of any CAD type that is supported by read_object_model_3d.
  • The reference manual entry of reconstruct_surface_stereo has been adapted to the changed behavior of the operator related to the 'xyz_mapping' attribute.
  • The reference manual entry of sigma_image contained an error in the calculation of the gray value of the central pixel. It was described as being calculated by using the average of all pixels that differ by less than Sigma from the current pixel instead of the correct calculation, which is the average of all pixels that differ by less than Sigma times a previously calculated standard deviation. This problem has been fixed.
  • The reference manual entry of trans_to_rgb contained an error within the code for the RGB color representations "hsv" and "hls". The equations for Hi and Hf were not valid for 360 degrees. This problem has been fixed.

Miscellaneous

o Installation:
  • Under Windows, new versions of the dongle drivers are included: Sentinel HASP 5.95 and Sentinel 7.6.3. Note that the names of the installation programs have been changed to haspdinst.exe and SentinelProtectionInstaller-7.6.3.exe.
  • Under Linux, the new USB dongle driver version Sentinel HASP 1.15 is included.
  • The Linux/UNIX installation script install-unix.sh now supports updates. It detects whether the same major version of HALCON exists in the given directory and eventually suggests an update installation. The update installation tries to suggest the same components for installation as was already installed and suggests to replace existing files.


Advance Notice

The export of HDevelop programs and procedures into the .NET languages C# and Visual Basic .NET based on the HALCON/COM interface is marked as legacy and will be removed in the next major release of HALCON. Then, for these languages only the export that is based on the HALCON/.NET interface will be provided.



Known Issues

Please note the following known problems for HALCON 10:



Errata Release Notes of HALCON 10.0

In the release notes of HALCON 10.0 the note that set_system might have hung if SystemParameter was set to 'database' was missing.