Release Notes for HALCON 9.0.1  
 

 

This document provides the release notes for MVTec HALCON 9.0.1, as released in June 2009. HALCON 9.0.1 is primarily a maintenance release that fixes all known bugs in HALCON 9.0; besides, it provides added functionality and speed-ups.




Overview

This document contains the following information:

Compatibility
Major New Features of HALCON 9.0.1
Detailed Description of Changes in HALCON 9.0.1
Major New Features of HALCON 9.0
Detailed Description of Changes in HALCON 9.0 (relative to HALCON 8.0.2)




Compatibility

o Licenses

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



o HALCON Library

HALCON 9.0.1 is fully compatible with HALCON 9.0. Compared to HALCON 8.0, many extensions have been introduced. Thus, the HALCON 9.0.1 libraries are not compatible with HALCON 8.0 or earlier versions.



o HALCON Applications

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

The incompatibility with HALCON 8.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 9.0, respectively.

Please note the following source-code incompatibilities:

  • Because problems concerning erroneous calculations for the polynomial camera model have been fixed, all camera parameters using the polynomial camera model obtained by camera_calibration or binocular_calibration cannot be used anymore and must be recomputed. Additionally, all 3D shape models, descriptor models, deformable models, and sheet-of-light models using the polynomial camera model must be recreated.
  • Applications that use the operators find_uncalib_descriptor_model or find_calib_descriptor_model might need adapted parameter values because of the new point matching algorithm.
  • Applications that use the operator points_lepetit might need adapted parameter values because of the modified score calculation of this operator.
  • The output of gen_arrow_contour_xld for point pairs with identical start and end points has been changed so that now an XLD consisting of a single point is returned.
  • Because problems concerning the assignment of the axes shown in the '3d_plot' paint mode have been fixed, all applications that supply a quaternion in the call to set_paint must be adapted.
  • Because the error messages for wrong input control parameters returned by zoom_image_factor and zoom_image_size have been corrected, programs that evaluate the returned error messages must be adapted accordingly.

Please note that applications using HALCON/.NET (and HDevEngine/.NET) have local copies of the corresponding assemblies (halcondotnet.dll etc.). After installing HALCON 9.0.1, these applications would therefore still use the old HALCON versions. You must either replace the assemblies manually or re-compile the projects.


o Image Acquisition Interfaces

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

  • For using the updated pylon interface you must install the new version 2.1 of the underlying pylon SDK from Basler.
  • For using the updated RangerC and the RangerE interfaces you must install the new version 4.0 of the underlying Icon SDK from SICK IVP.
  • Under Linux, the directory structure of the new version of the GigEVision interface has been changed because of an update of the underlying GenApi installation. Thus, to use the new version, you must adapt your search library path ${LD_LIBRARY_PATH}.

If you have developed your own acquisition interfaces with HALCON 9.0, you can use them with HALCON 9.0.1 without further action. Because of the new version of the HALCON Acquisition Integration Interface in HALCON 9.0, acquisition interfaces developed with HALCON 8.0.x or lower are not binary compatible, but mostly source-code compatible with HALCON 9.0.


o Extension Packages

Extension packages developed with HALCON 9.0 can be used with HALCON 9.0.1 without further action. Extension packages developed with HALCON 8.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 9.0.1.
  • ActivVisionTools 1.0 to 3.1 cannot be used with HALCON 9.0.1. If the setup program detects such an ActivVisionTools version, it warns you that by continuing to install HALCON 9.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 and Important Changes of HALCON 9.0.1

HDevelop

o 3D Visualization Mode:

The graphics windows of HDevelop now provides a new button to switch to the 3D visualization mode that allows, in particular, the interactive inspection of range data.



o Full Text Editor:

The auto-completion of the full text editor has been enhanced for expressions and tuples.



HALCON Library

o Matching:

The descriptor-based matching has been enhanced. It is now significantly faster and more robust.



o Camera Model:

The polynomial camera model is now applied to undistort points in the image instead of distorting them.



General Features

o HALCON Codelets:

A new reference documentation for the HALCON Codelets is provided.



o Installation:

A runtime installer under Windows that also supports silent installations is now available for download.





Detailed Description of Changes in HALCON 9.0.1

Detailed release notes can be obtained for the following topics:

HDevelop
HALCON Library
Procedures
HALCON/C
HALCON/C++
HALCON/.NET
HDevEngine
HALCON Codelets
Image Acquisition Interfaces
Manuals
Miscellaneous

HDevelop

Speed-Up and Enhancements
Functionality
Bug Fixes
Examples

o Speed-Up and Enhancements:
  • HDevelop has been extended by a new button in the toolbar of the Graphics Window. It can be used to easily change the graphic mode, i.e., to switch the 3D visualization mode on or off.
  • The auto-completion functionality has been extended significantly regarding the handling of tuples and expressions. Now, auto-completion supports to compose complex expressions or multi-value tuples by selecting different values from the parameter suggestion list. Additionally, for existing program lines it supports the substitution of single values in complex expressions or multi-value tuples by items from the parameter suggestion list.
  • When opening a PDF document from within the Help Window using the Acrobat Reader under Windows as external PDF viewer, the following new features have been implemented:
    • If the PDF document is a result of the full text search the Acrobat Reader searches automatically for the entered search strings.
    • If a specific page of the PDF document is referred by a keyword on the Keyword tab card the Acrobat Reader now opens this page automatically.
    Restrictions:
    • If the PDF document is already open in the Acrobat Reader, neither the search is started nor the passed page is selected.
    • The described feature will not work under Linux or with other PDF readers because the used command line options are not supported.
  • The HDevelop GUI is now also available in Portuguese.

o Functionality:
  • If an invalid program line was entered via the full text editor it was handled like a comment operator. For example, by double clicking on the program line in the listing not the appropriate operator was entered into the Operator Window but the comment operator with the program line as the comment text. In addition, it was not possible to deactivate an invalid program line by <F4> or via the main or context menu. This has been changed so that also invalid program lines are handled like normal operators as long as the operator name is a valid operator or procedure name. Now, it is possible to load the appropriate operator into the Operator Window by clicking on an invalid program line. The parameter expressions that have been entered into the full text editor are passed to the corresponding fields in the Operator Window's parameter area, if possible. In addition, invalid program lines can be deactivated by <F4>.
  • Block statements that are entered into the full text editor with an invalid condition are now handled like normal block statements. This has the following consequences:
    • the next line is automatically indented to the next level,
    • the statement is automatically connected to an appropriate block end statement, and
    • deactivating this statement by pressing <F4> will automatically deactivate the corresponding block end statement.
  • If a new block end statement that can be connected to a block begin statement is entered into the full text editor it is now indented to the correct level as soon as it is completely entered without the necessity to terminate the program line by <ENTER>.
  • HDevelop used to resolve name conflicts by renaming erroneous variable names automatically when loading a program or inserting other programs or procedures into the current procedure using the dialog-based editor. Name conflicts occurred, e.g., if names were detected that were used as iconic and as control variables. As the invalid name was only renamed in the dialog-based editor but not in the full text editor, which allows the creation of invalid program lines, the behavior was inconsistent. This problem has been fixed. Now, in both editors variables are not renamed automatically anymore.
  • The image acquisition operators open_framegrabber, get_framegrabber_param, and set_framegrabber_param are now better assisted by the full text editor. Now, the full text editor behaves in a similar manner as the Operator Window. A button to detect the available image acquisition interfaces is supplied, the parameter suggestion lists for the different parameters are adapted, and - if applicable - a file selection button is supplied.
  • It is now possible to select files via a file selection box in the full text editor. Thus, for operators like read_image or write_image a file selection box can be opened by clicking on the file name parameter in the full text editor and opening the auto-completion box. This box contains a 'Browse...' entry.
  • The indentation of the comment operator in the program listing has been changed. Instead of placing the comment sign '*' of the comment operator always in the first column, it is now indented to the indentation that is valid for the current program line. This concerns the dialog-based editor as well as the full text editor. The latter is affected by code that was created within the Operator Window and by code that was automatically indented using the 'Auto Indent' function. In addition, using the 'Auto Indent' function in the full text editor will no longer remove additional spaces that were entered at the beginning of the comment. Furthermore, if the indentation of a block is decreased by pressing <Shift-Tab>, leading spaces of a comment that were explicitly entered in the Operator Window or in the full text editor after the asterisk are no longer removed.
  • After loading a procedure or program and opening the procedure in the program editor for the first time, the beginning of the procedure was shown while the insert cursor was located at the end of the procedure. This was confusing especially because other editor applications set the insert cursor to the beginning of the text. For a more intuitive handling the behavior of HDevelop has been changed so that the insert cursor is located at the beginning as well.
  • The Find/Replace dialog in the full text editor has been extended with the functionality to specify the search direction. The direction can be changed by the Backward check box in the dialog's options. Additionally, the Find/Replace dialog has been extended with the functionality to search for and replace single occurrences of variables in a program line.
  • The handling of input parameters that are modified by a HALCON operator was changed: If a variable is passed as an output parameter to an operator and changed by the execution of that operator, and if the appropriate runtime settings 'update variable' and 'update graphics window' are enabled, the representations of this variable in HDevelop, i.e., its icon in the Variable Window, its values in the Variable Inspect Window, and/or the display in the Graphics Window are updated immediately after the operator has finished execution. However, there are some operators that modify an input - not the output - variable, e.g., overpaint_region, set_grayval, or the modifying matrix operations, like add_matrix_mod. If a variable was changed by such an operator, the variable representations were not updated during the program execution and modified iconic objects were not displayed at all. This has been changed: if a variable is modified as the input of an operator, its icon in the Variable Window as well as values in the variable inspection tools are now updated as soon as an operator changes the value. In addition, iconic objects will be (re-)displayed in the Graphics Window.
  • So far, HDevelop offered all image channels when the option 'Display Channel' of the Variable Window's Context menu was chosen. This was quite unpractical for multichannel images with a large number of channels. This problem has been fixed. Now, the 'Display Channel' option behaves in the same way as the 'Display Content' option for image arrays, i.e., 'Display Channel' displays a maximum number of 15 channels and offers an additional option 'Select...' if the image has more than 15 channels.
  • HDevelop's Preferences dialog has been extended by a splitter to control the size and orientation of the child widgets.
  • If the user changes the language for HDevelop via the Preferences dialog, a message box pops up that asks the user to restart HDevelop for activating the new language. This message is now displayed not only in the current language but also in the new language.
  • For HDevelop running in a different language than English more status and error messages have been translated.
  • The Properties dialog that can be opened via the File menu displays some information about the current program file, amongst others, the creation and last modification time of the program file. However, the format of the date/time string was very strange and did neither comply with the standard time format of the language chosen in HDevelop nor with the current locale settings of the operating system. This was changed: now the time strings are displayed in the standard date/time format according to the current locale settings of the operating system.
  • HDevelop's help index (tab "keywords") has been extended and corrected. In particular, it now includes index entries for the HDevelop-specific operators like dev_open_window or assign. Besides, index entries have been revised regarding syntax and consistent terminology.
  • It is now possible to show the subpixel mouse position in the Status Bar, in the Zoom Window, and in the tool tip of the Graphics Window. The user is able to specify the precision of the displayed values in the General Options tab card, in the Preferences dialog, or in the context menu of the Graphics Window.
  • The sub-menus that can be used to scale the image display or the whole window in relation to the image size have been extended by an entry for scaling the image or window down to 10% of the image size. These menus are reachable via the tool bar and the Context menu of the Graphics Window as well as the Visualization menu from the main tool bar.
  • The handling of Graphics Windows after resetting the program (e.g., by pressing <F2>) has been adapted to the behavior that is implemented while loading a new program: all Graphics Windows except one are closed and the remaining window is cleared.
  • In contrast to Windows systems, the Graphics Window flickered if the output of a histogram tool was changed on a Linux or UNIX system. This behavior has been changed: now the Graphics Window does not flicker anymore.
  • The status message of draw_xld* and draw_nurbs* now shows more information about the possible drawing modes.
  • The Matching Assistant has been improved to select different matching methods. If all four scale factors are equal to 1.0, the matching method is 'unscaled'. If all four scale factors are equal or the scale factors are locked, the matching method is 'scaled'. In all other cases the matching method is 'aniso'.
  • The Matching Assistant now provides the possibility to correct the file name or path of an image model when loading the assistant settings. For test images that can not be loaded, a message box with more information is displayed.
  • The Matching Assistant now supports the increased tolerance mode in the find_*_shape_model operators.
  • When changing a calibration parameter in the Calibration Assistant after performing a calibration, the outdated calibration data is now cleared to avoid confusion. Additionally, if the Calibration Assistant reports the quality issue 'Field of view not covered by calibration plate images' it is now possible to visualize the coverage by clicking on the button 'Show' in the column 'Details' in the table of quality issues.
  • The HDevelop C code export has been improved regarding runtime efficiency and readability of the exported code.


o Bug Fixes:
  • If several program lines were copied together from the full text editor to the clipboard and pasted into another application, e.g., an editor or mail program, the line break characters that should separate the single program lines were corrupt. In some applications, the lines were printed without any visible separator, while in other applications a special character was printed as placeholder for unprintable characters. This problem has been fixed.
  • In the full text editor, the auto-indentation that indents all selected lines automatically to the correct position did not work for the last program line. This problem has been fixed.
  • If the dialog-based editor was active while a long procedure was loaded, the beginning of the procedure was shown. However, after switching the listing to the full text editor, the end of the procedure was shown while the line numbers in the left part of the listing kept unchanged starting with 1. This problem has been fixed.
  • A double assignment for the key combination <Alt-Right> existed. This problem has been fixed. Now, <Alt-Right> can not be used to open the auto-completion window in HDevelop's full text editor anymore but is only assigned to step forward in the procedure history.
  • In the full text editor, invalid program lines are marked by red color. Additionally, the error position is underlined by a dotted line and the tool tip describes shortly the error. However, in some cases the dotted line disappeared, e.g., after terminating an invalid line by <ENTER>. Moreover, for some error classes the short error description disappeared, too. This concerned all errors that are not syntactical errors, e.g., operator calls with the wrong number of parameters or that use variables inconsistently as iconic as well as control parameters. This problem has been fixed.
  • The full text editor sometimes displayed wrong line numbers after editing program lines consisting of more than one text line. This problem has been fixed.
  • In the following cases, the full text editor scrolled unintentionally horizontally to the right end of a long program line:
    • The program line was edited via the Operator Window.
    • The program line was activated or deactivated.
    • A change of a long program line was undone or redone with <Ctrl-Z> or <Ctrl-Y>, respectively.
    This problem has been fixed. Now, the cursor keeps its position or is moved to the beginning of the program line.
  • While entering a new operator into the Operator Window or the full text editor, HDevelop did in some cases suggest for the input control parameters the default values although there were variables that would fit much better. This problem has been fixed.
  • HDevelop's full text editor lost the keyboard focus after reactivation of HDevelop's main window (e.g., after a different program was active). This problem has been fixed.
  • Typing a call to open_framegrabber into the full text editor caused interface queries even when acquisition help was disabled. This problem has been fixed. Furthermore, even for the case that acquisition help is enabled, the queries were optimized, resulting in fewer error boxes when something goes wrong and low level errors are enabled.
  • In HDevelop Demo, it was not possible to copy a text from the full text editor into the clipboard and paste it from there into the editor again. It was only possible to paste texts from other applications into the full text editor. This behavior was changed: now, it is possible to copy the selected text from the full text editor as well as from other applications into the full text editor. However, intentionally it is still not possible to copy a text from the full text editor of HDevelop Demo into other applications. This restriction is now shown by the popup window that is displayed after starting HDevelop Demo.
  • For some types of corrupt and therefore unloadable procedures HDevelop crashed if after entering the name of such a procedure in the full text editor the <TAB> key was pressed or the mouse was moved over the corrupt line. This problem has been fixed.
  • HDevelop positioned the text cursor on deactivated program lines wrongly if <ENTER> was pressed at the beginning of that line. This problem has been fixed.
  • HDevelop sometimes hung during Find/Replace operations in the dialog-based editing mode. This problem has been fixed.
  • HDevelop sometimes started find/replace actions at the program beginning and not at the current cursor position. This problem has been fixed.
  • The tooltip for the auto-completion always stayed in the foreground, even when another application was activated. This problem has been fixed. Now, the tooltip is closed when another application is activated.
  • The expanding of tuple expressions with the help of auto-completion did not work correctly. This problem has been fixed. Now, the closing bracket is added, if possible, and every entry inside the tuple can be replaced without the need to replace the whole tuple.
  • Opening the context menu of the Program Window via the context menu key did not work correctly: If the mouse cursor was not over the selected text, the selection changed from the previously selected program lines to the line under the current mouse position. In addition, the insert cursor was moved to that line. Hence, the required action was not performed on the program line or text that was selected or had the text insert cursor before pressing the context menu key but on the program line under the mouse cursor. This problem has been fixed.
  • According to the documentation, the Boolean operation 'not' is not defined for tuples with not exactly one element. However, if 'not' was performed on a multi-value tuple, no error message was returned. Instead, only the first element of the resulting tuple was set and the additional elements were undefined. This behavior was changed. Now the operation 'not' returns an error if its parameter is not a tuple with one element.
  • If within an expression a number starts with 0, it is interpreted as an octal number. If such a number contained digits that are not defined in the octal numerical system (8 and 9), this and the following digits were simply ignored without any notification. This could lead to surprising results, e.g., after executing a := 018, the variable a is set to 1. This behavior was changed: Now, an assignment with an invalid octal number produces a syntax error in the expression and the program line becomes invalid. The Operator Window now rejects to accept such an expression.
  • HDevelop could get into an inconsistent state and finally crash after changing the interface of a procedure, e.g., by adding new parameters, and afterwards undoing and redoing the changes via the undo stack actions (<Ctrl-Z> and <Ctrl-Y>). This problem has been fixed.
  • Control variables that have been passed to a procedure lost their semantic type. As a consequence, within the procedure framegrabber or matrix handles that have been passed to the procedure as control parameters could not be inspected by their special inspection tools. This problem has been fixed.
  • HDevelop became very slow if the currently visible procedure had some iconic variables that have been instantiated with region arrays consisting of many regions. This affected mainly the execution of single program lines, when typing text into the full text editor, and switching between the two editor modes. This problem has been fixed.
  • HDevelop crashed if an external procedure was saved via the menu 'File -> Save Procedure As...' to the same file it was loaded from. This problem has been fixed.
  • HDevelop crashed if it was started with the option -preferences and a normal HDevelop.ini file as argument. This problem has been fixed.
  • HDevelop sometimes crashed if in the 'External Procedures' table in the Preferences dialog a corrupt and therefore unloadable procedure was double clicked. This table lists all external procedures that are referred via the external procedure paths, including invalid and unreachable procedures. Normally, by double clicking on a procedure row in that table the appropriate procedure is displayed in the Program Window. This problem has been fixed.
  • In some cases, HDevelop crashed if in the Procedure Interface dialog a parameter was removed and then the Reset button of the dialog was pressed for reconstructing the original parameter state. The crash occurred if the parameter that was removed was one parameter of a list of at least three parameters in one group and at least two parameters followed after it. This problem has been fixed.
  • If a multi-channel image or an object tuple was inspected via the Display Channel or Display Content dialog that are available via the image icon in the Variable Window, a previously selected window part was ignored and the image was always displayed in full size. This problem has been fixed. Now, if the selected channel or image object has the same size as the image that is currently displayed in the Graphics Window, the same part is used for displaying the selected image. Otherwise the image is displayed in full size.
  • After maximizing HDevelop's main window, it was still possible to resize this window via the size grip in the bottom-right corner of the status bar. Resizing a maximized window is not usual and did confuse the title bar: after resizing the maximized window the title bar continued showing the button for changing the window to normal size and even continuously pressing the button had no effect. This problem has been fixed.
  • On Windows systems, it was possible that HDevelop's top level windows were opened outside the desktop and therefore became invisible. This could have happened by switching from MDI to SDI mode for windows that have been placed on a virtual MDI area that was much larger than the actual desktop outside the visible part. Additionally, this could have happened also if the desktop became smaller after executing HDevelop and restarting it again, e.g., by removing a second monitor that was used to expand the Windows desktop. This problem has been fixed. All windows are now opened so that at least the left part of the title bar is visible on the desktop.
  • HDevelop failed to set the current working directory correctly to the program path if the path contained non-ASCII characters. As one consequence, e.g., image files that are addressed in the program relatively to the program could not be opened. The problem did not occur if HDevelop was started in the appropriate directory, e.g., by double clicking on the program file in the Windows Explorer. This problem has been fixed.
  • As long as no language is selected explicitly, HDevelop tries to detect an appropriate language automatically from the operating system's locale settings. On a Chinese system, always traditional Chinese was selected by mistake, even if the locale settings use simplified Chinese. This problem has been fixed.
  • HDevelop crashed if on a Japanese Windows system the operator dev_display was called with an uninitialized iconic variable. This problem has been fixed.
  • If the system option 'no_object_result' was set to 'false', in HDevelop the operator gen_empty_obj returned 3 (H_MSG_FALSE) instead of 2 (H_MSG_TRUE). Additionally, an error message box was opened even if dev_set_check('~give_error') was set. The error occurred only if the operator gen_empty_obj was called within HDevelop but not if it was called via HDevEngine or a language interface. This problem has been fixed.
  • If in HDevelop's Print dialog the 'Print' button is pressed without prior selecting a printer explicitly, the Printer Selection dialog is opened automatically for confirming the printer. Canceling this dialog by pressing the 'Cancel' button could have - depending on the active printer - caused HDevelop to crash or to print the program anyway. This problem has been fixed.
  • HDevelop crashed if some of the HALCON help files that are installed under %HALCONROOT%\help were missing. This problem has been fixed. Now, if a help file is missing, an error message is displayed and HDevelop is closed.
  • HDevelop's histograms did not always update when switching between smoothing and quantization mode. This problem has been fixed.
  • In conjunction with the gray histogram tool the feature histogram tool did not always update correctly. When the feature histogram was opened while the Graphics Window displayed the output of the gray histogram's threshold operation, the feature histogram displayed an empty histogram (the gray histogram's output is not a valid input for the feature histogram). However, when the feature histogram was already opened and the gray histogram's threshold operation was activated, the feature histogram was not cleared. This problem has been fixed.
  • Additionally, in conjunction with the gray histogram tool the feature histogram tool generated program lines with empty parameters that were not marked as invalid and crashed HDevelop if they were executed. This happened if both histogram tools were open at the same time and the gray histogram output a threshold region to the Graphics Window, while the 'Insert Code' button of the feature histogram tool was pressed. In this case, the iconic input parameter of the generated code line, e.g., the Regions parameter of the select_shape operator, was empty, nevertheless, the code line was not marked as invalid. If that program line was executed, HDevelop crashed. This problem has been fixed. The feature histogram now recognizes correctly the gray histogram's output as an invalid input and disables any feature thus preventing any code generation. Furthermore, the histograms now disable the 'Insert code' button when there is no activated and enabled feature or operation.
  • If the gray histogram tool was opened on an image that was created by the Image Acquisition Assistant the code generation of the histogram failed. After pressing the 'Insert Code' button in the gray histogram tool, an error 'Invalid variable name (HDevelop error code: 21070)' was shown and the wait cursor was not reset to the normal cursor. This problem has been fixed. Now, if the gray histogram tool is used on the output of the Image Acquisition Assistant, it uses the same variable name for the code generation as the Image Acquisition Assistant.
  • In some cases, the Image Acquisition Assistant auto-selected the TWAIN interface after auto-detection. This problem has been fixed.
  • HDevelop crashed when trying to export empty special comments, i.e., comment lines beginning with '#' followed by an empty string or an arbitrary number of blanks. This problem has been fixed.
  • If for loop statements were exported to C by HDevelop, they were executed in the reverse order (compared to the execution in HDevelop) if the step was negative. In rare cases, this could have led to an erroneous behavior of the exported code. This problem has been fixed.
  • HDevelop exported HALCON operator calls in procedures incorrectly to C++ if an error variable was active at the time of the operator call and the error variable was a procedure parameter. In that case, the exported program failed to compile. This problem has been fixed.
  • HDevelop code exported to C# - HALCON/COM did not run on Windows x64 systems. This problem has been fixed.
  • HDevelop in rare cases exported assignments incorrectly to C# - HALCON/.NET. This happened if the expression on the right side of the assignment was a selection with an index that was not of type integer. In this case, the exported code was either syntactically incorrect or produced a runtime error during the execution. This problem has been fixed.
  • HDevelop exported expressions containing the operation =~ (substitute for regexp_test) incorrectly to Visual Basic .NET - HALCON/.NET. This problem has been fixed.


o Examples:

HALCON has been extended by the following HDevelop example programs:

  • The new HDevelop example program examples/solution_guide/basics/barcode_typical_cases.dev shows typical cases for the preprocessing of 1D bar codes. It uses the new images ean13_to_preprocess_* from the subdirectory images/barcode/ean13. The example is described in detail in the Solution Guide I (Basics).
  • The new HDevelop example programs crevis.dev, crevis_binning.dev, crevis_parameters.dev, crevis_simple.dev, and crevis_trigger.dev in the directory examples/hdevelop/Images/Acquisition show how to use the Crevis interface.

The following HDevelop example programs have been modified:

  • The HDevelop example program examples/hdevelop/Applications/3D-Vision/calibrate_sheet_of_light.dev has been revised and is now more robust. The three procedures compute_3d_coordinates_of_light_line, fit_3d_plane_xyz, and get_light_plane_pose now return empty tuples if the processing was not successful. Now, when using the procedures, the size of the returned tuples should be tested after the processing and an error handling can be applied if necessary.
  • The two example programs examples/hdevelop/Tools/Calibration/change_radial_distortion_points.dev and examples/hdevelop/Applications/3D-Vision/reconstruct_connection_rod_calib.dev have been adapted to the changes of the polynomial camera model.
  • The HDevelop example program examples/solution_guide/image_acquisition/port_switching_inspecta.dev has been enhanced for the extended description of port switching in the Solution Guide on Image Acquisition.


HALCON Library

Speed-Up and Enhancements
Modified Operators
Bug Fixes

o Speed-Up and Enhancements:
  • find_uncalib_descriptor_model and find_calib_descriptor_model use a new point matching algorithm. In contrast to the old algorithm, which used a random search strategy, the new algorithm uses a deterministic strategy for searching objects in an image. This new strategy has the following major advantages:
    • it can robustly detect multiple objects in the image,
    • it leads to nearly constant and well predictable execution times for sequences of similar images,
    • it is between 20% and 90% faster than the old random algorithm (90% only if compared with the cases where the old algorithm took unreasonably long to make a decision), and
    • it detects the absence of objects in the image very quickly.
    Note that existing applications might need adapted parameter values due to the new algorithm. Furthermore, if the 'lepetit' point detector was selected, the value for 'min_score' has to be adapted due to the modified score calculation of the operator points_lepetit.


o Modified Operators:
  • Until now, the parent window of a HALCON window was informed about events from the left and right mouse button under Windows. Now, a HALCON window posts also the following messages concerning the middle mouse button and the mouse wheel to its parent window (if it exists):
    • WM_MBUTTONUP
    • WM_MBUTTONDOWN
    • WM_MBUTTONDBLCLK
    • WM_MOUSEWHEEL
  • gen_region_hline now renders the Hesse line regions more accurately. Additionally, the border treatment has been improved.
  • points_lepetit internally calculates a score for each extracted point and rejects all points with a score less than the parameter MinScore. The score was calculated based on the Laplacian-of-Gaussian (LoG) kernel. However, the discretization of the kernel that was used proved to be vulnerable to illumination changes. Therefore, the score calculation has been changed and is now based on the Laplacian kernel. As a result, the typical values of the MinScore parameter are now between 5 and 20. The default value is 10. Note that this change makes the internal score calculation conform to the existing reference manual entry of the operator.


o Bug Fixes:
  • On Windows systems, HALCON sometimes incorrectly returned error 2985 ("failed to create a tsd key") during the initialization of the HALCON library. As a consequence, e.g., HALCON could not be used in the Visual Studio designer or similar environments (via HWindowControl, HWindowXCtrl, or ActivVisionTools). This problem has been fixed.
  • HALCON might have detected too many CPUs on some Linux machines. This problem has been fixed.
  • HALCON did not work under Windows systems if the path in the environment variable HALCONROOT or HALCONIMAGES was surrounded by quotation marks. This problem has been fixed.
  • Long contours were displayed with some small gaps. The gap size depended on the distance between the consecutive contour points. This problem has been fixed.
  • The temporal accuracy of the ECC200 data code reader's timeout mechanism was insufficient. This was especially the case with large images. This problem has been fixed.
  • The data code reader (ECC200 and QR code) sometimes crashed in training mode if the data code parameter 'persistence' was set to 1, the parameter 'small_modules_robustness' was set to 'low' (default), and no data code could be found in the input image. This problem has been fixed.
  • The sheet-of-light operators crashed with invalid model handles, e.g., with handles of models that have already been cleared. This problem has been fixed.
  • affine_trans_image and affine_trans_image_size did not transform the first pixel of a column in rare cases. This problem has been fixed.
  • apply_sheet_of_light_calibration could have crashed if the size of the image passed in Disparity did not correspond to the width of the profile region and to the value of the parameter 'num_profiles'. This problem has been fixed.
  • binocular_disparity_mg and binocular_distance_mg crashed in rare cases. The crashes were independent of the input images. This problem has been fixed.
  • binocular_distance returned the distance image instead of the score image. As a consequence there was a memory leak because the memory allocated for the score image was never freed. This problem has been fixed.
  • The distortion formula of the polynomial camera model was used in the wrong direction. In contrast to the procedure described in the documentation of camera_calibration, the distortion formula was used to distort points analytically and undistort points numerically. This problem has been fixed. The two example programs examples/hdevelop/Tools/Calibration/change_radial_distortion_points.dev and examples/hdevelop/Applications/3D-Vision/reconstruct_connection_rod_calib.dev have been adapted accordingly.
    Note that all camera parameters using the polynomial camera model obtained by camera_calibration or binocular_calibration cannot be used anymore and must be recomputed. Additionally, all 3D shape models, descriptor models, deformable models, and sheet-of-light models using the polynomial camera model must be recreated.
  • camera_calibration did not allow to use the values 'vx', 'vy', and 'vz' as well as '~vx', '~vy', and '~vz' for the parameter EstimateParams. If one of these values was passed in EstimateParams, the error 1308 ("Wrong value of parameter: 8") was returned. Additionally, camera_calibration returned altered values for the motion vector (vx, vy, vz) even if the motion vector was excluded from the calibration. Furthermore, camera_calibration returned an altered value for the pose angle alpha even if it was excluded from the calibration. These problems have been fixed.
  • clear_rectangle, move_rectangle, and set_window_param (with Param= 'background_color' or Param='window_title') did not work with buffer windows on Linux/UNIX systems and raised a BadMatch error. This problem has been fixed.
  • clear_shape_model, clear_scaled_shape_model, clear_aniso_shape_model, clear_shape_model_3d, and clear_data_code_2d_model had a memory leak of 24/36 bytes per call on a 32/64 bit Windows operating system. This problem has been fixed.
  • coherence_enhancing_diff sometimes returned wrong values in the upper right and/or lower right corner of non-square images. This problem has been fixed.
  • create_shape_model_3d crashed in rare cases. The crash occurred only for some combinations of object models, camera parameters, and pose ranges. Additionally, create_shape_model_3d returned the error 6002 ("Memory partition on heap has been overwritten") or crashed in very rare cases. This was only the case if create_shape_model_3d was parallelized. This problem has been fixed.
  • determine_shape_model_params and create_*shape_model hung in very rare cases. This problem has been fixed.
  • difference_closed_contours_xld crashed in very rare cases. The crash occurred if at least two segments of the two contours were nearly identical. This problem has been fixed.
  • 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 crashed in some cases if the coordinates of the contours or polygons had absolute values larger than 16383. This problem has been fixed.
  • disp_obj hung or crashed if the image part to be displayed in the window was set with set_part such that it lies completely left of the image. Additionally, disp_obj and disp_region with draw = 'margin' and line_style > 0 displayed regions incorrectly. The right and bottom parts of the contour were shifted one pixel to the right and to the bottom. These problems have been fixed.
  • distance_lr returned wrong results for a region consisting of one pixel. Additionally, an empty input region returned no error message. These problems have been fixed.
  • do_ocr_word_mlp and do_ocr_word_svm had a small memory leak if the parameter Expression was a regular expression. This problem has been fixed.
  • drag_region1, drag_region2, and drag_region3 sometimes crashed. This problem has been fixed.
  • draw_xld and draw_xld_mod had a memory leak. This problem has been fixed.
  • There was a resource leak when cancelling draw_* operators before actually drawing anything. This problem has been fixed.
  • fill_up_shape disregarded all shape features but 'area'. This problem has been fixed.
  • find_bar_code had the following problems:
    • It sometimes crashed when 'element_size_max' was changed.
    • It sometimes returned the error 3513 ("Internal error: number of chords too big for num_max").
    • It could not find bar codes if their orientation was opposite to the specified orientation range.
    • It sometimes crashed while processing a composite 'CC-A/B' symbol that was perspectively distorted.
    • It hung in very rare cases.
    These problems have been fixed.
  • find_data_code_2d sometimes crashed when processing an image of height 1. This usually happened for PDF417 symbols if the general parameters were set to 'train'/'all'. Additionally, find_data_code_2d sometimes crashed with a PDF417 symbol that encoded data in Numeric Compaction mode and any of the codewords was the 0 codeword. These problems have been fixed.
  • find_marks_and_pose in rare cases returned the error 3274 ("Not enough valid points for fitting the model") if the parameter MinContLength was set to a value smaller than 5. This problem has been fixed.
  • find_ncc_model returned different results in sequential and in parallel mode. This problem has been fixed.
  • find_shape_model and its derivates sometimes had a small memory leak if their execution was interrupted by a timeout, which previously had been set by using set_shape_model_param. This problem has been fixed.
  • fread_line read the last character of a file incorrectly if the file was not terminated by a newline character. This problem has been fixed.
  • frei_dir, kirsch_dir, prewitt_dir, and robinson_dir determined the edge direction of horizontal edges with an intensity increase from top to bottom incorrectly. Instead of 90 (180 degrees) the value 0 (0 degrees) was returned for these edges. This problem has been fixed.
  • gen_binocular_rectification_map sometimes returned the error 9205 ("Matrix is singular"). This problem has been fixed.
  • gen_contour_nurbs_xld crashed if MaxError and/or MaxDistance were choosen too restrictive, so that the constraints could not be fulfilled due to floating point resolution limitations. gen_contour_nurbs_xld now returns the new error 3291 ("Constraints (MaxError/MaxDistance) cannot be fulfilled") in these cases.
  • gen_ellipse_contour_xld returned incorrect results for StartPhi=rad(360). This problem has been fixed.
  • gen_grid_rectification_map crashed in rare cases. This problem has been fixed.
  • get_bar_code_result with argument 'quality_isoiec15416' sometimes crashed when performing bar code print quality assessment on an image with sub-optimal image quality (e.g., minimum bar code element width < 5 pixels). This problem has been fixed.
  • get_data_code_2d_results sometimes crashed when assessing the PDF417 print quality (ResultNames = 'quality_isoiec15415'). This problem has been fixed.
  • get_sheet_of_light_result could have returned erroneously scaled values for the calibrated coordinates X, Y, and Z if the model parameter 'scale' was not set to 'mm'. This problem has been fixed.
  • get_sub_matrix sometimes crashed for invalid input parameter values. This problem has been fixed.
  • gray_erosion_shape, gray_dilation_shape, gray_opening_shape, and gray_closing_shape returned undefined gray values outside the image domain if parallelized automatically on domain level. For byte and uint2 images, gray_erosion_rect, gray_dilation_rect, gray_opening_rect, and gray_closing_rect were affected as well. This problem has been fixed.
  • gray_inside returned incorrect values using a reduced domain. This problem has been fixed.
  • histo_to_thresh sometimes returned wrong results if the parameter Histogram was an absolute histogram with large values and/or if the parameter Sigma was very large. This problem has been fixed.
  • intensity in rare cases returned NaN as Deviation for homogeneous image regions on Solaris. This problem has been fixed.
  • mean_n crashed when large arrays (n>20) of single-channel images were passed to it. This problem has been fixed.
  • For HALCON XL, the measure operators measure_pos, measure_pairs, measure_projection, fuzzy_measure_pos, fuzzy_measure_pairs, and fuzzy_measure_pairing returned incorrect results if the measure object covered image coordinates bigger than 65535. This problem has been fixed.
  • measure_profile_sheet_of_light might have returned wrong values for the disparity image as well as for the score image when the model parameter 'ambiguity_solving' was set to 'brightest' and the model parameter 'score_type' was set to 'width'. This problem has been fixed.
  • median_separate in rare cases did not work for MaskWidth=1. This problem has been fixed.
  • mirror_image and mirror_region did not work for large regions if Mode='diagonal' (depending on the available memory). This problem has been fixed.
  • optical_flow_mg produced unpredictable results when invoked with the 'clg' algorithm. This problem has been fixed.
  • paint_xld did not fill some pixels at the border of the contour in very rare cases. This problem has been fixed.
  • points_lepetit returned the error 3513 ("Internal error: number of chords too big for num_max") when the image domain had more than one connected components. This error affected also the operators create_[un]calib_descriptor_model and find_[un]calib_descriptor_model if the 'lepetit' point detector was selected. This problem has been fixed.
  • projective_trans_image_size returned the error 3605 ("Projective transformation is singular") when HomMat2D had a too small determinant. To prevent an image transformation under a singular matrix, the operator checked the determinant, although matrices with small determinants can still be well defined (non-singular). This problem has been fixed. The check is now based on the matrix rank.
  • radial_distortion_self_calibration in rare cases crashed. Additionally, it returned a wrong error message for a wrong input control parameter. These problems have been fixed.
  • read_contour_xld_arc_info, read_polygon_xld_arc_info, and read_world_file could have crashed with nonexisting input files on Windows systems. This problem has been fixed.
  • read_deformable_model could not read models that were created with the metric 'ignore_color_polarity'. The error 8501 ("Wrong pattern file version") was returned for these models. This problem has been fixed.
  • read_image returned the error 6002 ("Memory partition on heap has been overwritten") when reading a TIFF file with file extension '.tiff'. Additionally, read_image and read_region crashed if a monochrome bitmap file (BMP) was read that was saved top-down, i.e., with a negative value in the height field. Furthermore, read_image could not read TIFF files that have a file size larger than 2 GB. These problems have been fixed.
  • read_tuple crashed in rare cases when reading a tuple that contained strings.
  • select_characters did not work correctly if the parameter Punctuation was set to 'true'. It added a character more than once. Additionally, if the parameter ConnectFragments was set to 'true', small regions like dots were lost. These problems have been fixed.
  • set_check did not clear any check flags with parameter values 'none' and 'ref_none'. This problem has been fixed.
  • The axes shown in the '3d_plot' paint mode were not colored in the correct order. Now, they are colored correctly in the order row axis, height axis, and column axis. Further they were assigned to the wrong axes, i.e., row was assigned to the Z axis, column to the X axis, and height to the Y axis. Now, the row axis is assigned to the X axis, the column axis to the Y axis, and the height axis to the Z axis. Note that all applications that supply a quaternion in the call to set_paint must be adapted.
  • sobel_amp, sobel_dir, and laplace did not return an error with images of too small dimensions. This problem has been fixed.
  • testd_ocr_class_box does not parallelize region tuples correctly. Therefore, the ability of tuple parallelization has been switched off for testd_ocr_class_box.
  • tile_images and tile_channels returned incorrect image domains in certain cases. If TileOrder was set to 'vertical' and NumColumns and the number of input images were chosen such that at least one column of the output image was empty and the last used column was completly filled with images, this last column was missing in the output domain. This problem has been fixed.
  • tile_images_offset did not work for multi-channel images having different pixel types in the different channels. This problem has been fixed.
  • trans_from_rgb and trans_to_rgb did not return the correct output domain if the input images had different domains when running automatic parallelization on domain level. This problem has been fixed.
  • tuple_chrt could have caused crashes if called with input tuples containing 0 (zero) as first element or containing multiple 0 (zeroes) consecutively. This problem has been fixed.
  • tuple_string violated memory if a string was converted into a string of fixed length using a format string such as '-Ns', where N is the desired string width. Additionally, tuple_string crashed when called with the parameter Format of type integer or real instead of string. These problems have been fixed.
  • zoom_image_factor and zoom_image_size returned the wrong error messages for wrong input control parameters. In particular, they returned the error 1302 ("Wrong value of control parameter: 2") if the first input control parameter was wrong and the error 1303 ("Wrong value of control parameter: 3") if the second input control parameter was wrong. This problem has been fixed. Now, the errors 1301 ("Wrong value of control parameter: 1") and 1302 ("Wrong value of control parameter: 2") are returned. Note that programs that evaluate the returned error messages must be adapted accordingly.


Procedures

o Bug Fixes:
  • gen_arrow_contour_xld raised a 'division-by-zero' error if a tuple of more than one point pair was passed and the start and end point for at least one point pair were identical. If a single point pair was passed, an empty tuple was returned. These problems have been fixed. Now, an XLD consisting of a single point is returned if the start and end point of a point pair are identical.


HALCON/C

o Examples:
  • The C interface example example6.c now shows the usage of the function T_call_halcon_by_id instead of the deprecated function T_call_halcon.


HALCON/C++

o Speed-Up and Enhancements:
  • The access to parameter values by their parameter name via the class HOperator (with methods such as SetInputCtrl) is now significantly more efficient.


o Bug Fixes:
  • It was not possible to use the class HDeformableModel via HALCON/C++. This problem has been fixed.
  • The C++ methods HTuple::ToString(const char*) and HTuple::ToString(const Halcon::HTuple&) violated memory if a string was converted into a string of fixed length using a format string such as '-Ns', where N is the desired string width. This problem has been fixed.


o Examples:
  • In the MFC example MatchingExtWin, the parameter WINHWin in the call of new_extern_window was used erroneously. The example has been fixed. Furthermore, the example program in the reference manual entry of new_extern_window has been updated.


HALCON/.NET

o Bug Fixes:
  • Tool classes in HALCON/.NET entered an inconsistent state when an operator constructing a new tool (such as HShapeModel.CreateShapeModel) encountered an error. The tool class could then no longer be reused. This problem has been fixed.
  • When calling GetParallelsXLD via HALCON/.NET, the parameters Row2 and Col2 contained corrupt output values. This problem has been fixed.
  • The signature of the method HPose.HandEyeCalibration did not allow to pass an array of robot poses but only a single pose. This problem has been fixed.
  • It was possible for HWindowControl to raise an error when a window was resized to a very small size (or anchored to a form which got minimized). This problem has been fixed.


HDevEngine

o Bug Fixes:
  • External procedures that contained empty program lines could not be executed within HDevEngine. The execution of such a procedure was aborted with a syntax error message. This problem has been fixed.
  • The methods HDevProcedure::GetInputIconicParamName(par_idx), HDevProcedure::GetOutputIconicParamName(par_idx), HDevProcedure::GetInputCtrlParamName(par_idx), and HDevProcedure::GetOutputCtrlParamName(par_idx) for querying a specific parameter name of a procedure were erroneous. The passed parameter index was not interpreted correctly. According to the documentation, the index should range from 1 to the parameter number. However, it was interpreted as if it would range from 0 to the parameter number - 1. But, passing 0 as parameter index, the methods threw - as intended - an HDevEngineException. Passing the parameter number as index, the program was aborted by an unexpected and unhandled out-of-range exception instead of returning the last parameter name. This problem has been fixed.
  • HDevEngine crashed if not all HALCON help files were installed under %HALCONROOT%\help or if HALCONROOT accidentally pointed to a different HALCON version, e.g., HALCON 8.0. This problem has been fixed. Now, before starting HDevEngine it is checked whether the help files are available and whether they have the correct version. If the correct help files cannot be found, an error message is displayed. In addition, an exception is thrown that can be caught by an exception handler in the HDevEngine application.
  • There was a memory leak in HDevEngine/COM when passing iconic objects as input parameters to procedures. This problem has been fixed.


HALCON Codelets

o Speed-Up and Enhancements:

o Bug Fixes:
  • The class design of the HALCON Codelets was not consistent. Furthermore, minor problems concerning the user interface occurred. These problems have 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 Crevis interface which supports the USB 2.0 cameras from Crevis Corporation. The new HDevelop example programs crevis.dev, crevis_binning.dev, crevis_parameters.dev, crevis_simple.dev, and crevis_trigger.dev in the directory examples/hdevelop/Images/Acquisition show how to use this interface.


o Modified Image Acquisition Interfaces:
  • The following HALCON image acquisition interfaces have been revised since HALCON 9.0:
    • The 1394IIDC interface now allows to specify the actual number of used image buffers. Furthermore, querying the parameter ranges under Windows x64 via get_framegrabber_param(..,'*_range',..) did not return the optional values 'auto' or 'one_push'. This problem has been fixed.
    • The File interface crashed when trying to read a non-existing or corrupt TIFF file. The crash occurred
      • if a directory containing corrupt files with the extensions 'tiff' or 'tif' was opened,
      • if a TIFF file or a sequence file referencing to TIFF files was to be opened but the TIFF file was corrupt or non-existing, or
      • if the file name was specified without an extension and a correspondig file with the extension 'tif' or 'tiff' was found but was corrupt.
      This problem has been fixed.
    • For the GigEVision interface the underlying GenApi installation has been updated from version 1.1 to version 1.1.2. Under Linux, the directory structure in ${GENICAM_ROOT_V1_1}/lib has been adapted to the new official one, i.e., the library files have been moved to ${GENICAM_ROOT_V1_1}/lib and ${GENICAM_ROOT_V1_1}/lib64, respectively. Thus, to use this new version, you must adapt your search library path ${LD_LIBRARY_PATH} accordingly. Additionally, for the GigEVision interface several minor enhancements were added, e.g., the support of the 'SingleFrame' acquisition mode and the handling of custom pixel formats. Furthermore, the color conversion crashed in case of converting RGB10/12/16_PACKED image formats to RGB. This problem has been fixed.
    • The LuCam interface now provides new parameters to abort a pending grab and to control the strobe signal.
    • The MatrixVisionAcquire interface now supports also mvBlueLYNX-M7 devices and provides an easier syntax to select a specific image acquisition device.
    • The mEnableIII and the mEnableIV interface provide new parameters to query the serial number of the board, to specify the actual number of used image buffers, and to control the Camera Link CC0-3 lines.
    • For the PXC interface a problem in querying the revision number of the interface via the operator info_framegrabber has been fixed.
    • The pylon interface now is based on the new version 2.1 of the underlying pylon SDK. Additionally, it has been extended to provide also access mode, category, and visibility for each parameter. Furthermore, several problems have been fixed that concerned multi-camera configurations, buffer re-queueing, buffer protection in multi-threaded applications, and aborting a pending grab.
    • The RangerC and the RangerE interface are now based on the new version 4.0 of the underlying Icon SDK. Additionally, the interaction with the HDevelop Image Acquisition Assistant has been refined. Furthermore, the operators grab_data and grab_data_async have been extended to support also the reading of mark data provided by Ranger 3D cameras and return a tuple of images in measurement mode instead of multi-channel images.
    • The SaperaLT interface now includes new parameters to control the line scan direction.
    • The SonyXCI-2 interface now includes new parameters to control the white balancing. Additionally, a problem in the color conversion has been fixed.
    • The uEye interface now includes various extensions and improvements such as new parameters to query the presence of a beforehand asynchronously grabbed image and to support new color formats and pixel depths. Furthermore, several problems have been fixed.

    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 Quick Guide:

The Quick Guide has been briefly extended. In the section describing HALCON regions, it now warns that regions may be clipped to the default image size if they are created or loaded before the first image. Furthermore, it shows the value of the default image size for HDevelop and for the programming interfaces.



o Installation Guide:

The Installation Guide is now available in a new edition. Besides the adaptation to the changes of HALCON 9.0.1, the following problem has been fixed: Table 3.1 of the Installation Guide (table on license binding options) contained contradictory entries for 64 bit platforms. Now, the table shows the correct information:

  • On Windows x64, parallel port dongles are only supported if running the 32 bit version of HALCON.
  • On Linux x86_64, USB port dongles are only supported if running the 32 bit version of HALCON.

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



o Solution Guide I (Basics):

The Solution Guide I (Basics) is now available in a new edition. In particular, the section about 1D bar codes has been extended by additional information about the preprocessing of 1D bar codes that are difficult to read.
The new HDevelop example program examples/solution_guide/basics/barcode_typical_cases.dev shows typical cases for the preprocessing of 1D bar codes. It uses the new images ean13_to_preprocess_* from the subdirectory images/barcode/ean13.

o Solution Guide II-A on Image Acquisition:

The Solution Guide II-A on Image Acquisition is now available in a new edition. In particular, the description of port switching has been extended. The corresponding HDevelop example program examples/solution_guide/image_acquisition/port_switching_inspecta.dev has been adapted accordingly.

o Solution Guide III-C on 3D Vision:

The Solution Guide III-C on 3D Vision is now available in a new edition. It has been extended by more detailed descriptions for the sheet-of-light measurement, in particular the interpretation of the gray values in the images resulting from the measurement is discussed. Additionally, the documentation of pose origins for the perspective, deformable matching and the descriptor-based matching has been revised.

o Programmer's Guide:

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

o HALCON Operator Reference Manual:
  • The index in the PDF version of the Operator Reference Manual did not contain the correct index texts. This problem has been fixed.
  • Example code in the Reference Manuals can now be pasted into HDevelop's full text editor. For this, operator calls that are split over multiple lines now are marked with a backslash at the end. Furthermore, in the PDF manuals correct quote characters are used.
  • The Reference Manual entry of add_channels has been extended and corrected.
  • Some of the examples in the Reference Manual entries of the classification operators contained errors. This problem has been fixed.
  • The Reference Manual entry of convol_image now describes how the reference point of the mask is determined.
  • The Reference Manual entries of create_planar*_deformable_model and find_planar*_deformable_model now correctly state that also uint2 images as well as multi-channel images are supported.
  • The Reference Manual entry of create_calib_descriptor_model has been extended by information about the relation between the reference pose and the internally derived model pose.
  • The Reference Manual entry of depth_from_focus falsely stated that if odd values are used for the parameter Filter, the next larger odd value is used. This problem has been fixed. Additionally, the Reference Manual entry of depth_from_focus now describes the parameters Filter and Selection in more detail.
  • The Reference Manual entry of div_image now states that for a division by zero the result is set to zero instead of being undefined.
  • The Reference Manual entries of edges_image, sobel_dir, frei_dir, and prewitt_dir were incorrect. They showed wrong directions for the gradients in the lists that explain the edge direction. This problem has been fixed.
  • The Reference Manual entries of edges_sub_pix, edges_color_sub_pix, lines_facet, lines_gauss, and lines_color were extended by a note on the dependence of the temporary memory requirements on the height of the input region.
  • The Reference Manual entry of find_planar_calib_deformable_model accidentally mixed up the calibrated and the uncalibrated operators. This problem has been fixed.
  • The Reference Manual entry of gen_image_surface_first_order was wrong. The description refered to gen_image_surface_second_order instead of gen_image_surface_first_order. This problem has been fixed.
  • The Reference Manual entries of the operators gen_image_to_world_plane_map, gen_radial_distortion_map, gen_arbitrary_distortion_map, gen_grid_rectification_map, and gen_binocular_rectification_map have been extended by the information that you can save the created maps as multi-channel images with the operator write_image, using the format 'tiff'.
  • The Reference Manual entries of gray_erosion_rect, gray_dilation_rect, gray_opening_rect, and gray_closing_rect now list uint2 as valid input image type.
  • The Reference Manual entry of integer_to_obj now states that the value 0 must not be passed to SurrogateTuple.
  • The Reference Manual entry of mirror_image has been extended. It now states that the diagonal mode can only be applied for images having the same width and height.
  • The Reference Manual entry of phot_stereo now states that the runtime of the operator can be influenced by a previous call to optimize_fft_speed.
  • The Reference Manual entry of proj_match_points_ransac_guided referred under 'See also' to the operator itself instead of proj_match_points_ransac. This problem has been fixed.
  • The example program in the Reference Manual entry of new_extern_window contained an incorrect parameter. This problem has been fixed. Additionally, the Reference Manual entry of new_extern_window suggested that the position of the external window can be modified using set_window_extents. It now clearly states that only the size of the external window can be modified.
  • The Reference Manual entry of remove_noise_region now explains the various possibilities for the parameter Type.
  • The Reference Manual entry of set_window_dc contained errors in the examples. This problem has been fixed.
  • The Reference Manual entry of set_window_param contained a wrong default value for the generic parameter 'axis_captions'. This problem has been fixed.
  • The Reference Manual entry of write_image has been reformatted to make it easier to read.


o HALCON Codelets Reference Manual:

A new reference documentation for the HALCON Codelets is provided that can be used in the online help of Visual Studio. Every class contains an API specification that includes a class summary and detailed descriptions of important class members, constants, and methods. An HTML version can be accessed via the Windows start menu or via the file index.html in the subdirectory doc\html\reference\codelets of the folder where you installed HALCON.

Miscellaneous

o Installation:
  • A runtime installer under Windows that also supports silent installations is now available for download. Please refer to the MVTec's download area for more information about how to use it.
  • When checking online for updates, the installer now will not only check for newer maintenance releases but also for hotfixes of the current release.
  • Some temporary files were not removed from the %TEMP% directory after running the installer or uninstaller. This problem has been fixed.
  • If the system path under Windows was longer than 1024 characters it was overwritten by the HALCON installer (instead of appended to). This problem has been fixed.


o Example Images:



 
  © Copyright 2009 MVTec Software GmbH - All rights reserved.