MVTec Software GmbH
  Building Vision For Business


 
  Release Notes for HALCON 8.0.3  
 

 

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



Overview

This document contains the following information:

Hotfixes included in HALCON 8.0.3.1 installation package
Compatibility
Detailed Description of Changes in HALCON 8.0.3
Major New Features of HALCON 8.0.2
Detailed Description of Changes in HALCON 8.0.2
Major New Features of HALCON 8.0.1
Detailed Description of Changes in HALCON 8.0.1
Major New Features of HALCON 8.0
Detailed Description of Changes in HALCON 8.0 (relative to HALCON 7.1.2)
Major New Features of HALCON 7.1
Detailed Description of Changes in HALCON 7.1.2
Detailed Description of Changes in HALCON 7.1.1
Detailed Description of Changes in HALCON 7.1



Hotfixes included in HALCON 8.0.3.1 installation package

Unfortunately, the originally released version of HALCON 8.0.3 had the following critical bugs regarding the binary compatibility of the HALCON/COM and HALCON/.NET language interfaces:

  • Binary compatibility was broken for the method HImage.WriteImage in HALCON/COM and HALCON/.NET.
  • Binary compatibility was broken for the method HPose.HandEyeCalibration in HALCON/.NET. This method actually was not usable at all.

To solve these problems, a new version HALCON 8.0.3.1 is available on the MVTec web server. If you have already installed HALCON 8.0.3, we recommend to download this version and install it over the existing installation. For this purpose, the Windows installer has been adapted to replace the changed files automatically.

To check which version under Windows is currently installed please check the file properties of the files halcon.dll and hdevelop.exe: The file version has been adapted to 8.0.3.1 instead of 8.0.3, and the file modification date shows "April 6, 2009".



Compatibility

o Licenses

HALCON 8.0 licenses are also valid for HALCON 8.0.1, 8.0.2, and 8.0.3. In contrast, all HALCON 7.1 licenses must be replaced or upgraded. Please contact your local distributor.


o HALCON Library

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


o HALCON Applications

Applications (i.e., executables) developed with HALCON 8.0, 8.0.1, or 8.0.2 can be used with HALCON 8.0.3, i.e., HALCON 8.0.3 is binary compatible with HALCON 8.0, 8.0.1, and 8.0.2.

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

Please note the following source-code incompatibilities with respect to previous HALCON 8.0.x releases:

  • The behavior of applications which extracted the low-level value of a tool handle using the hidden member HTool.Handle has changed.
  • Because of a revision of HALCON's hand-eye calibration, the operator hand_eye_calibration is not source-code compatible to previous HALCON releases. Applications that use hand_eye_calibration must therefore be adapted to the changed interface.
  • For zoom_image_factor and zoom_image_size the error messages have changed. 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 8.0.3, 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

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


o Extension Packages

Extension packages developed with HALCON 8.0, 8.0.1, or 8.0.2 can be used with HALCON 8.0.3 without further action. Extension packages developed with HALCON 7.1.x must be re-generated.


o ActivVisionTools

Only ActivVisionTools 3.2 can be used directly with HALCON 8.0.3. All older ActivVisionTools versions are based on HALCON 7.1.1 or below; by installing HALCON 8.0.3, you would thus disable such an ActivVisionTools installation. Therefore, the setup program of HALCON 8.0.3 checks whether there is an ActivVisionTools installation on your computer.

  • If it detects ActivVisionTools 3.2, no further action is required, as this version is compatible to HALCON 8.0.3.
  • If it detects ActivVisionTools 3.1 or ActivVisionTools 3.1.1, please contact your distributor for further information on how to run this version together with HALCON 8.0.3.
  • In contrast, ActivVisionTools 1.0 to 3.0 cannot be used with HALCON 8.0.3. If the setup program detects such an ActivVisionTools version, it warns you that by continuing to install HALCON 8.0.3 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".



Errata Release Notes of HALCON 8.0.2



Detailed Description of Changes in HALCON 8.0.3

Detailed release notes can be obtained for the following topics:

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

HDevelop

o Functionality:
  • The basic iconic operators gen_empty_obj, select_obj, concat_obj, and count_obj were treated in a special way concerning their textual representation in the program listing, the text file export, and selected program lines. Instead of using the common operator function syntax 'operator(parameter list)', the operators were displayed using the assign operation syntax:
    • EmptyObject := []
    • ObjectSelected := Objects[Index]
    • ObjectsConcat := [Objects1,Objects2]
    • Number := |Objects|

    Thus, it was not obvious, if a program line resulted from assign or from one of the iconic operators mentioned above. Now, the textual representation of gen_empty_obj, select_obj, concat_obj, and count_obj corresponds to the common HALCON operator syntax.
  • If the user is going to save a program or external procedure file, now it is checked whether in the meantime the file was modified outside HDevelop, e.g., by another user who edited the same file. If the file was changed, a message box is displayed warning the user and offering the opportunity to overwrite the external changes or going back to HDevelop for saving the program or procedure under a different name.
  • The Open Example dialog now offers a possibility to open the selected example program in a new HDevelop instance.
  • HDevelop's gray value histogram now displays a value range instead of a single peak value for int4, int8, and real images. The feature histogram always displays a value range instead of a single peak value. That is, the range of input values is divided into quantization steps to obtain a meaningful histogram, and, as a consequence, the histogram's "peak value" may actually represent a whole range of input values.
  • HDevelop's Operator Window now offers an easy way to change temporarily the Return-key mode. In the Preferences dialog under 'General Options' the user can select whether by pressing Return in the Operator Window the edited operator is only entered into the program or entered and executed. Now, this mode temporarily can be toggled: pressing Ctrl-Return performs the non-default behavior.
  • Within the Program Listing Window, it is possible to create a new procedure by selecting some program lines and calling the action 'Create New Procedure' from the context menu. The Create Procedure dialog that opens offers the check box 'Replace selected program lines', which controls whether the selected program lines are replaced by a program line calling the new procedure or not. If the current procedure is an external one and the new procedure is local, this opened the opportunity to insert the call of a local procedure into an external procedure, although, calling a local from an external procedure is not possible and, consequentially, the inserted procedure call was marked as invalid. Now, it is no longer possible to insert invalid code by the Create Procedure dialog:
    • If a new procedure is created by selecting code in an external procedure, the default for the new procedure is also external.
    • If the procedure is changed to local, the check box 'Replace selected program lines' now is disabled and after confirming the creation of a local procedure the selected program lines are not replaced.
  • HDevelop's Program Window now provides an option 'Show Caller' to select and show all locations where the currently displayed procedure is called. This option is part of the Program Window's context menu.
  • It is now possible to copy and paste HDevelop code between two or more instances of HDevelop.
    If the copied code contains calls to local procedures, the procedures are copied, too. If necessary, the copied procedures are renamed.
    If the copied code contains calls to external procedures, the paths to the procedures are copied, too. However, before an external procedure path is added during a paste action, the user is asked whether or not he wants to add that particular path to the external procedure paths.
  • The navigation within the Help Window of HDevelop was improved by providing more keyboard shortcuts. In particular, the following keyboard shortcuts are now available:
    • Alt-Left - Back in history
    • Alt-Right - Forward in history
    • Alt-Home - Home: go to the index page of the HALCON reference manual
    • Ctrl-+ - Increase the font size
    • Ctrl-- - Decrease the font size
    • Ctrl-D - Add current page to bookmark
    • Ctrl-P - Print current page
    • Ctrl-F - Search text on the current page
    • Alt-Enter - Enter operator to Operator Window
    • Tab - Go to next link on page
    • Shift-Tab - Go to previous link on page
    • Enter - Follow the selected link.

    In addition, it is now possible to select text on the Help page not only by the mouse but also with the help of the keyboard.
  • The Contents tab card of HDevelop's Help Window so far only presented the chapters and sections of the HALCON Reference Manual as a hierarchical tree. The same now also applies to the HDevelop Reference Manual and the Image Acquisition Devices overview. Furthermore, image acquisition devices that do not appear in the Image Acquisition Devices overview are now listed under 'Additional Interfaces'.
  • The usability of the Image Acquisition Assistant has been increased with various small improvements:
    • Filtering by category and visibility as well as sorting is now also applied to read-only parameters. This can be very helpful, in particular for the GigEVision interface.
    • The communication between assistant and acquisition interface has been optimized, which should mean faster connection and less low level errors in case something goes wrong.
    • The measured acquisition time in live mode is now more reliable, also, it is possible to disable displaying the image, show the speed as frames/second, and measure the speed for volatile acquisition without copying the image (by disabling image display or setting it to the new mode "volatile").
    • For acquisition of individual images (not live acquisition), the image acquisition now uses grab_image instead of grab_image_async.
  • HDevelop's 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'.

o Bug Fixes:
  • 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.
  • On an operating system with Asian locale settings, some Asian characters became disrupted if they were used within a control parameter while the HALCON 'filename_encoding' was set to 'locale' (which is the default).
    This concerned all characters for which the multi-byte word that is used for encoding that character in the locale encoding table contains the hexadecimal code 0x5c (e.g., the Katakana letter SO (ソ) that is encoded in Shift-JIS by 0x83 0x5c). 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.
  • Some special characters in file names such as apostrophes ("'") were not correctly handled when inserting code from HDevelop assistants or via the Read Image dialog, leading to errors. This problem has been fixed.
  • HDevelop sometimes crashed in the Find/Replace dialog, while creating or opening a new program. This problem has been fixed.
  • If in the Find/Replace dialog the option 'Whole Words' was unchecked, replacing variable names or parts of them did not work correctly within expressions: only the occurrences of the search string in the leftmost word of the expression were replaced. This problem has been fixed.
  • Standard HDevelop hung if a gray image was displayed, the Feature Histogram dialog was opened, and one of the features gray_fuzzy_entropy or gray_fuzzy_perimeter was selected. This problem did not occur in Parallel HDevelop. This problem has been fixed.
  • The Property dialog allows to copy the names of the used modules to the clipboard. This did not always work correctly. Under Windows, only in some rare cases the module names were not copied correctly to the clipboard. In that cases the clipboard kept its old value. Under Linux, in general, pressing the button 'Copy to Clipboard' worked only for the first time. Additional copy calls resulted in numerous error messages on the console: 'QClipboard: Cannot transfer data, no data available'. After that the clipboard was empty. This problem has been fixed.
  • After inserting a large number of program lines from the clipboard or the undo/redo stack, the left part of the listing that contains the line numbers, the PC, and the insert cursor, and the right part containing the program lines were sometimes not synchronous. The right part was scrolled in order to display as much of the inserted program lines as possible while the left part remained unchanged. This problem has been fixed.
  • Copying values from the Variable Window to the clipboard did not always work correctly. Under Windows the copying sometimes worked and sometimes not, under Linux the copying worked only for the first time. Additional copy calls resulted in numerous error messages on the console: 'QClipboard: Cannot transfer data, no data available'. This problem has been fixed.
  • HDevelop crashed if an HDevelop program was dragged from a Windows Explorer and dropped over a second Graphics Window. This problem has been fixed.
  • If a Graphics Window and a Zoom Window were open and displayed the same image, closing the Graphics Window and then clicking into the Zoom Window caused HDevelop to crash. This problem has been fixed.
  • If an image was displayed in the Graphics Window, zooming into the image by using the Zoom In function (+) and then continuously doubling the image size by selecting and clicking the Double entry on the Image Size menu sometimes caused the error 5174 ("negative height of area (or 0)"). This problem has been fixed.
  • If HDevelop was run in SDI mode, opening several Zoom windows or Variable Inspect windows caused the Program window to move to the right and down. This problem has been fixed.
  • Parallel HDevelop hung if a draw_* operator was performed while a Zoom Window was open. This problem has been fixed.
  • HDevelop crashed when the set_system parameter 'empty_region_result' was set to 'false' while an empty region was used as the domain of an image. This problem has been fixed.
  • On Windows systems, it was possible that HDevelop's top level windows were opened outside the desktop and became therefore invisible. This could happen by switching from MDI to SDI mode for windows that had been placed on a virtual MDI area that was much bigger than the real desktop outside the visible part. In addition, this could also happen, 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's histograms did not always update when switching between smoothing and quantization mode. This problem has been fixed.
  • If an existing comment operator was selected for being edited in the Operator Window, and a string with newlines was entered as the comment parameter (e.g., by pasting such a string from the clipboard), the program became corrupted after re-entering the comment into the program. This affected the program listing, either by printing several program lines one upon the other or by setting the left and the right part of the listing out of sync. In addition, if such a program (or procedure) was saved, it could not be re-loaded owing to a format error. As long as the program or procedure was loaded in HDevelop, the problem could be solved just by removing the corrupt comment. The problem did not occur if a new comment operator (with new lines in the comment string) was entered into the program. In that case, as intended, several comments - one for each text line - were entered into the program. This problem has been fixed. Now it is safe to replace an existing comment operator by several comments at once.
  • Control variables that had been passed to a procedure lost their semantic type. As a consequence, within the procedure framegrabber or matrix handles that had been passed to the procedure as control parameters could not be inspected by their special inspection tools. This problem has been fixed.
  • HDevelop might have crashed during the creation of an external procedure, if a password was set and immediately removed again before the Procedure Creation dialog was closed. This problem has been fixed.
  • If the interface of a procedure was changed via the Edit Procedure Interface dialog while the option 'Adapt Program' was checked on (default), deactivated program lines that refer to that procedure were adapted to the new signature, as requested, but, they were also activated. This problem has been fixed.
  • HDevelop might have crashed after removing an external procedure path from the list of managed directories under the following condition:
    • one of the referred external procedures was modified, or
    • after removing the external procedure path an undo or redo action was performed on the removed procedure.

    This problem has been fixed.
  • Setting a password to a procedure via the 'External Procedures' / 'Manage Passwords' tab card on the 'Preferences' dialog sometimes failed. After selecting one or several procedures in the 'Unprotected Procedures' list, pressing the 'Move to the Right' button, and entering a password into the 'Password' dialog that opens, the selected procedures remained in the 'Unprotected Procedures' list and were no longer selected. This problem has been fixed.
  • HDevelop crashed if the full text search in the Help window was searched for the character '='. This problem has been fixed.
  • The code export of string constants with special characters like newline (\n), tab (\t), or double quotes (") to the different Visual Basic dialects was erroneous. Special characters were quoted according to the C/C++ standard and not as valid Visual Basic code. This problem has been fixed.
  • HDevelop did not export external procedures that were referenced only by unused local procedures. As all local procedures (used and unused) are always exported, this meant that the exported code was inconsistent if the program contained an unreferenced local procedure that referenced an external procedure. 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.
  • C programs exported by HDevelop caused a memory leak if a control variable was used multiple times as output parameter in the same operator or procedure call. This problem has been fixed.
  • C programs exported by HDevelop crashed if the variable '_' was used as output parameter in procedure calls. This problem has been fixed. Furthermore, the variable '_' is no longer exported as '_' and '_t' to C and C++, respectively. Instead, the exported code contains a new control variable with a default name (similar to exported C# or Visual Basic .NET code).
  • HDevelop exported constant tuple expressions containing exactly one integer or real value incorrectly to C. This problem has been fixed.
  • If for 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.
  • If a for statement was exported to C by HDevelop, it did not work correctly if the start and the end value of the statement were equal and the step value was negative. 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 in rare cases exported assignments incorrectly to C# - HALCON/.NET. This happened if the right side of the assignment expression was a selection with an index not of type integer. In this case, the exported code was either syntactically incorrect or produced a runtime error during execution. 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 might have crashed when attempting to load settings for the Image Acquisition Assistant from a *.das file. This problem has been fixed.
  • The 'Auto' check boxes for acquisition parameters in the Image Acquisition Assistant did not work in HALCON 8.0.2. This problem has been fixed. Note that HALCON 8.0 and 8.0.1 were not affected.
  • Configuring the Image Acquisition Assistant for volatile acquisition could have caused a crash when accessing the displayed image after closing the device (e.g., by resizing the Graphics Window). This problem has been fixed.
  • The creation of volatile image objects caused a memory leak in HDevelop. Volatile image objects can be created by some image acquisition devices or by calling gen_image* operators that expect a pointer as one of the input parameters. This problem has been fixed. The HDevEngine was not affected by this problem.

o Examples:
  • The new HDevelop example programs eneo.dev, eneo_parameters.dev, and eneo_simple.dev in the directory examples/hdevelop/Images/Acquisition show how to use the eneo interface for remote grabbing.
  • The new HDevelop example program examples/hdevelop/Images/Acquisition/gigevision_crop.dev shows how to apply the GigEVision interface for software cropping.
  • The new HDevelop example programs pixelink.dev, pixelink_simple.dev, pixelink_parameters.dev, and pixelink_2cameras.dev in the directory examples/hdevelop/Images/Acquisition show how to use the PixeLINK interface.
  • The new HDevelop example programs sonyxci2.dev, sonyxci2_simple.dev, and sonyxci2_parameters.dev in the directory examples/hdevelop/Images/Acquisition show how to use the SonyXCI-2 interface.

HALCON Library

o Speed-Up and Enhancements:
  • hand_eye_calibration no longer needs an initial solution and the iterative optimization method has been improved. Some input parameters are now marked as obsolete because they are not required any more, such as the initial poses. Instead, the operator provides the following new input parameters: 'Method' and 'QualityType' to chose the desired type of algorithm and to define the output quality measure, respectively. The output parameter 'Quality' returns different types of quality measures to assess the computed results.
    Because of this change, the operator hand_eye_calibration is not source-code-compatible to previous HALCON versions. Applications that use hand_eye_calibration must therefore be adapted to the changed interface. Applications that do not use hand_eye_calibration, on the other hand, are binary compatible to previous HALCON versions.

o Modified Operators:
  • So far, connect_grid_points might have returned connecting lines between grid points that consisted of only two contour points. Such connecting lines are virtually useless for the grid rectification and may cause undesired results. Therefore, connect_grid_points now returns only connecting lines with at least three contour points. Furthermore, the reference manual entry on connect_grid_points now explicitly mentions the fact that high values of the input parameter MaxDist may lead to the loss of connecting lines.
  • smooth_funct_1d_mean now increments the value of SmoothSize if an even value is provided. This way the center of the filter mask is always explicitly determined. The reference manual entry has been extended accordingly.

o Bug Fixes:
  • The automatic parallelization of operators on channel or domain level had a memory leak if the operator returned with an error. This problem has been fixed.
  • Long contours were displayed with some small gaps under Windows. The gap size depended on the distance between the consecutive contour points. This problem has been fixed.
  • The ECC200 data code reader in rare cases returned different results if called multiple times. This problem has been fixed.
  • HALCON sometimes crashed when assessing the print quality of a 'Model 1' QR Code. This problem has been fixed.
  • Owing to some errors in the description table that stored the data and error block sizes, the QR Code reader failed to decode symbols of the following versions:
    • version 33 (size: 149x149), error correction level: L
    • version 33 (size: 149x149), error correction level: Q
    • version 34 (size: 153x153), error correction level: M
    • version 36 (size: 161x161), error correction level: M

    Even with a perfect classification the reader returned the status message "error correction failed" for these symbols. This problem has been fixed.
  • area_center_gray, select_gray, and elliptic_axis_gray crashed with regions exceeding the dimensions of the input image. This problem has been fixed.
  • boundary crashed in rare cases with BoundaryType ='inner_filled'. This problem has been fixed.
  • camera_calibration returned altered values for the motion vector (vx, vy, vz) even if the motion vector was excluded from the calibration. This problem has been fixed.
  • change_radial_distortion_image clipped the input region to the currently largest image dimensions. Furthermore, this operator was not threadsafe and may have caused crashes if executed in parallel. These problems have been fixed.
  • check_par_hw_potential crashed in rare cases or wrote corrupt parallelization information. The same problem applied to the program hcheck_parallel. This problem has been fixed.
  • class_ndim_norm crashed in rare cases. This problem has been fixed.
  • clip_contours_xld sometimes returned the error 3254 ("maximum number of contours exceeded") when the input contours were divided into too many pieces. This problem has been fixed.
  • cooc_feature_matrix and cooc_feature_image were not parallelized correctly on tuple level. These operators returned the results of the first thread only. This problem has been fixed.
  • create_component_model crashed in very rare cases. This might have happened if at least one region that was passed in ComponentRegions contained only very noisy image edges. This problem has been fixed.
  • create_lexicon crashed if a parameter of invalid type was passed as a word list. 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. This problem has been fixed.
  • crop_domain sometimes crashed. This happened especially for large images. This problem has been fixed.
  • deviation_image crashed in rare cases if the mask dimensions exceeded the image dimensions. This problem has been fixed.
  • disp_circle crashed if the input radius value was negative. This problem has been fixed.
  • disp_obj hanged 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. This problem has been fixed.
  • drag_region1, drag_region2, and drag_region3 ignored the system variable 'clip_region', i.e., the preview displayed while dragging was clipped independent of the value of 'clip_region'. Additionally, the operators sometimes crashed. These problems have been fixed.
  • draw_nurbs and draw_nurbs_mod returned a Weights vector for closed curves that could not be used with gen_contour_nurbs_xld. This problem has been fixed.
  • draw_region and draw_polygon terminated as soon as the right mouse button was pressed. All other draw operaters (e.g., draw_rectangle1) did not terminate until the right mouse button has been released. This problem has been fixed.
  • draw_xld and draw_xld_mod had a memory leak. This problem has been fixed.
  • edges_color_sub_pix set the 'edge_direction' attribute of the returned edge XLDs incorrectly. This problem has been fixed.
  • edges_sub_pix does not support processing of image tuples and therefore cannot be parallelized on tuple level anymore.
  • eliminate_min_max sometimes returned wrong results, especially at the border of a reduced domain. When parallelized on domain level, erroneous pixels could have also occured in the middle of the domain. This problem has been fixed.
  • fill_interlace did not parallelize correctly for Mode = 'rmodd' or Mode = 'rmeven'. In this case, the domain of the output image was too large. This problem has been fixed.
  • find_bar_code sometimes hung while reading an 'RSS Expanded' symbol if the scanning failed to fetch the elements of the last data character, crashed if any of the image dimensions was smaller than 2 times 'element_size_max', sometimes crashed while reading RSS-14 Stacked code symbols positioned close to the image border, and sometimes crashed while processing a composite 'CC-A/B' symbol that is perspectively distorted. Additionally, find_bar_code sometimes returned the error 3513 ("Internal error: number of chords too big for num_max") with very small images. Furthermore, it could not find bar codes if their orientation was opposite to the specified orientation range. These problems have been fixed.
  • find_data_code_2d in rare cases returned the error 6041 ("System parameter for memory-allocation inconsistent") for PDF417 codes that were not completely inside the image. Additionally, it sometimes crashed when processing an image of height 1. This usually happened for PDF417 symbols if the general parameters were set to 'train'/'all'. These problems have been fixed.
  • find_marks_and_pose returned the error 6041 ("No memory block allocated at last") in very rare cases. Additionally, it returned the error 3274 ("Not enough valid points for fitting the model") in rare cases if the parameter MinContLength was set to a value below 5. These problems have been fixed.
  • find_shape_model returned imprecise results if the model was generated with Optimization set to 'pregeneration' and the search was performed with SubPixel set to 'none'. Additionally, find_shape_model, all variants thereof, find_component_model, and find_ncc_model returned the error 6002 ("Memory partition on heap has been overwritten") for input images with a very small width or height. In particular, this was the case if the width or the height of the input image was less than 2 on the highest pyramid level. These problems have been fixed.
  • find_shape_model_3d sometimes returned poses that were shifted in the image with respect to the true pose. This happened if the radial distortion kappa that is passed to create_shape_model_3d in the parameter CamParam was exactly 0.0 and additionally the scale factors sx and sy that are also passed in the parameter CamParam significantly differed from each other. This problem has been fixed.
  • fit_surface_first_order and fit_surface_second_order were not parallelized correctly on tuple level. These operators returned the results of the first thread only. This problem has been fixed.
  • gauss_image sometimes returned erroneous results or even crashed. This happened if the width or height of the input image was smaller than half the size of the filter mask. Now, if the image is too small for the chosen filter size, the error 3035 ("Filter is too big") is returned.
  • gen_caltab and create_caltab created PostScript files that could not be read correctly by some PostScript viewers. In such cases, the error "DSC Error %%Pages: doesn't match number of %%Page:" might appear. This problem has been fixed.
  • gen_contour_nurbs_xld crashed with certain input data. This was only the case if MaxError and/or MaxDistance were chosen too restrictive, such that these 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_cooc_matrix crashed if the input region exceeded the domain of the input image. Additionally, it did not parallelize correctly on tuple level. Single image matrices of the tuple result might have been overwritten. These problems have been fixed.
  • gen_ellipse_contour_xld hung for very large input angle values (Phi, StartPhi, and EndPhi). This problem has been fixed.
  • gen_parallels_xld returned the parallels in arbitrary order. If the two operators gen_polygons_xld and gen_parallels_xld were called alternately, the order of the resulting parallels varied. This problem has been fixed.
  • gen_random_regions returned wrong results for region type rectangle1. If WidthMax was set to WidthMin and/or HeightMax was set to HeightMin, the resulting regions were one pixel too wide/high. Furthermore, the values for the width and height were interchanged. These problems have been fixed.
  • get_bar_code_object with argument 'scanlines_all' or 'scanlines_valid' can crash if the bar code image on which find_bar_code was executed last is out of the current program scope. A new bar code model parameter 'persistence' is introduced to resolve this problem. Now, to obtain scanlines, 'persistence' must be set to 1 before calling find_bar_code. This can be done while creating the model with create_bar_code_model or later with set_bar_code_param.
  • The ECC200 data code reader in rare cases could not decode the symbol although the symbol candidate was correctly found in the image and the modules within the symbol were correctly classified. In such cases, the candidate status that can be queried with get_data_code_2d_results in most cases returned 'decoding failed: inconsistent data'. This problem has been fixed.
  • The HALCON operator get_param_num crashed, if the passed operator name string was longer than 80 characters. This problem has been fixed.
  • get_rectangle_pose sometimes crashed if an open XLD contour was passed as an input object. This problem has been fixed.
  • get_region_thickness returned different results for shifted regions. This problem has been fixed.
  • The parameter FileName in gnuplot_open_file erroneously was of type filename.read. This problem has been fixed. Now, it has the correct type filename.write.
  • gnuplot_plot_ctrl, gnuplot_plot_funct_1d, and gnuplot_plot_image crashed if they wrote to a file that has already been closed. Now, the HALCON error 5241 ("Not a valid gnuplot output stream") is returned in these cases.
  • gray_erosion_rect, gray_dilation_rect, gray_opening_rect, and gray_closing_rect handled even mask dimensions incorrectly. Instead of the next larger value, the next smaller value was used. This problem has been fixed.
  • gray_erosion_shape, gray_dilation_shape, gray_opening_shape, and gray_closing_shape had the following problems:
    • In rare cases they led to memory access violation. This was only the case if the width of the input image was smaller than 8 pixels and MMX processing was enabled (which is the default).
    • In rare cases they returned the error 9020 ("Internal Error: Unknown value") with uint2 images. This was only the case if at least one of the Parameters MaskHeight and MaskWidth was not an integer and MMX processing was enabled with set_system('mmx_enable','true') (the default).
    • In rare cases they returned wrong results if parallelized on domain level.
    • They did not parallelize correctly for mask sizes of type float.
    • They returned undefined gray values outside the image domain if parallelized automatically on domain level.

    These problems have been fixed.
  • gray_inside returned incorrect values using a reduced domain. This problem has been fixed.
  • illuminate returned wrong results when parallelized on domain level for all image types except of 'byte'. Now it is not parallelized on domain level automatically anymore.
  • inner_rectangle1 returned wrong results for certain regions. Regions with at least two runs and a largest inner rectangle of area 1 were affected. This problem has been fixed.
  • inpainting_ct returned incorrect results for uint2 images. This problem has been fixed.
  • list_files returned the error 6041 ("No memory block allocated at last") if the option 'recursive' was set and a subdirectory of the search directory was not readable.
  • local_min and local_max crashed with images of width or height 1 in rare cases. This problem has been fixed.
  • mean_image crashed with 'real' images if border treatment had to be applied to the whole image domain. Additionally, it returned wrong results for byte images and mask sizes larger than 16 MPixels. These problems have been fixed.
  • median_image returned wrong results at the image border if parallelized on domain level in rare cases. This only applied to the rectangular filter of size 1 and 2 and if MMX was enabled (which is the default). This problem has been fixed.
  • mirror_image did not mirror the region for Mode = 'main'. This problem has been fixed.
  • The optical_flow_mg operator produced unpredictable results when invoked with the 'clg' algorithm. This problem has been fixed.
  • read_fft_optimization_data returned the error 3652 ("Optimization data was created with a different HALCON version (Standard HALCON / Parallel HALCON)") in Parallel HALCON if an optimization file written by Parallel HALCON was read. This problem has been fixed.
  • 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. This problem has been fixed.
  • read_string crashed with some fonts set by set_font on UNIX systems. Now the error 5177 ("Font not allowed for this operation") is returned in these cases.
  • rectangle1_domain crashed if the input parameter Row1 was larger than the image height and/or the input parameter Column1 was larger than the image width. This problem has been fixed.
  • regiongrowing in very rare cases returned the error 3513 ("Internal error: number of chords too big for num_max") if the domain of the input image was reduced. This problem has been fixed.
  • regiongrowing_mean returned incorrect results for uint2 images. In rare cases, regiongrowing_mean even crashed. This problem has been fixed.
  • reset_obj_db had a memory leak of 200 bytes per call. This problem has been fixed.
  • select_characters sometimes did not return if PartitionLines was set to 'true'. This problem has been fixed.
  • set_color was very slow if used remote on recent X servers. The HDevelop operator dev_set_color was affected as well. This problem has been fixed.
  • set_font overwrote the paint mode of the window if the font string was longer than 30 characters. This problem has been fixed.
  • If the parameter Mode of set_insert is set to a value different from 'copy', a call of clear_window now behaves as expected and clears the window.
  • The operators set_paint and dev_set_paint returned no or a wrong error message if Mode had an invalid value. This problem has been fixed by changing the error message.
  • set_tshape returned an incorrect error description. This problem has been fixed by changing the error description for the operators set_tshape and set_mshape.
  • set_window_attr now returns an error if invalid colors are passed as 'background_color' or 'border_color'.
  • sobel_amp, sobel_dir, and power_byte sometimes returned incorrect results in their first call in Parallel HALCON. sobel_amp and sobel_dir were only affected if 'sum_sqrt' was used as FilterType. Additionally, sobel_amp returned incorrect results for pixels at the border of a reduced domain for the filter types 'thin_sum_abs' and 'thin_max_abs'. When parallelized on domain level, erroneous pixels could have also occured in the middle of the domain. These problems have been fixed.
  • stationary_camera_self_calibration may have not terminated if an element of NumCorrespondences was larger than 32767. This problem has been fixed.
  • store_par_knowledge and load_par_knowledge in rare cases returned the errors 1201 or 1401 ("wrong type/number of control parameter 1"), although the parameter was passed correctly. This problem has been fixed.
  • test_self_intersection_xld sometimes returned the error 6041 ("No memory block allocated at last"). 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.
  • text_line_orientation sometimes crashed. This problem has been fixed.
  • thickening_seq returned the error 6041 ("No memory block allocated at last") in very rare cases. This problem has been fixed.
  • tile_images_offset didn't work for multi-channel images having different pixel types in the different channels. This problem has been fixed.
  • train_model_components and create_component_model returned the error 6002 ("Memory partition on heap has been overwritten") if one of the input regions passed in InitialComponents or ComponentRegions, respectively, was lying completely outside the ModelImage or if one of the input regions was an empty region. This problem has been fixed.
  • tuple_remove had a memory leak if all elements of a tuple were removed and thus an empty tuple was returned. This problem has been fixed.
  • Calling tuple_str_last_n with an invalid index in rare cases led to a crash. This problem has been fixed.
  • tuple_string had the following problems:
    • It crashed in case the second input control parameter contained an empty tuple.
    • It did not return an error in case the parameter contained a tuple with more than one element, which is incorrect.
    • It 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. The same applied to the C++ methods HTuple::ToString(const char*) and HTuple::ToString(const Halcon::HTuple&).
    • It crashed in rare cases if it was called with invalid patterns. The same applied to the C++ methods HTuple::ToString(const char*) and HTuple::ToString(const Halcon::HTuple&).

    These problems have been fixed. As a consequence, tuple_string now only allows patterns that are conform with the documentation of tuple_string.
  • union_straight_contours_xld erroneously returned the error 3257 ("Regression parameters of contours not yet entered!") even if regress_contours_xld was called before. This happened if one of the contours consisted of only one point with the coordinates (0,0) or if there were multiple identical contours that consisted of only one point. This problem has been fixed.
  • unwarp_image_vector_field did not parallelize correctly on domain level. This problem has been fixed.
  • write_data_code_2d_model did not write the contrast training state of PDF417 symbologies. Consequently, the training of the contrast was wrongly reinitialized after reading the 2D data code model from disk. This problem has been fixed.
  • write_image ignored the value of the parameter FillColor if Format was set to 'ima'. Additionally, it crashed if images with more than 8192 lines were written in JPEG2000 format. These problems have been fixed.
  • write_variation_model wrote corrupt data for files larger than 64 MB (Windows x86) and for files larger than 32 MB (Windows x64). This problem has been fixed.
  • zoom_image_factor and zoom_image_size returned the wrong error messages for wrong input control parameters. This problem has been fixed.
    Compatibility note: zoom_image_factor and zoom_image_size 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. Now, the errors 1301 ("Wrong value of control parameter: 1") and 1302 ("Wrong value of control parameter: 2") are returned. Programs that evaluate the returned error messages must be adapted accordingly.

HALCON/C++

o Bug Fixes:
  • It was possible for HALCON/C++ to crash under low memory conditions when the memory error occured within a class member function and not within an actual operator call. The result was an access violation under Windows and an unhandled std::bad_alloc under UNIX. This problem has been fixed. In such cases, HALCON/C++ will now raise an HException.
  • When a NULL pointer was passed to an output control parameter of an operator via HALCON/C++, any errors which occured during the execution of the operator were ignored. In particular, this case occured when exporting C++ code from HDevelop for operators using the built-in variable "_" for output. This problem has been fixed.
  • The HALCON/C++ member function HTuple::Split() returned erroneous results in most cases if the HTuple instance contained more than one string element. This problem has been fixed.

HALCON/.NET

o Bug Fixes:
  • Resizing HWindowControl caused flickering output even with "flush_graphic" disabled under Windows. This problem has been fixed.
  • For some tool classes, the resources allocated for the first instance of that type were never released. The memory leak was non-growing and therefore uncritical. However, freeing other resources such as for HSerial and HSocket was only possible via HOperatorSet. This problem has been fixed.
    Compatibility Note: This fix may change the behavior of applications that extracted the low-level value of a tool handle using the hidden member HTool.Handle (uninitialized tool handles are now -1, not 0). However, the old value did not work properly anyway as 0 is a valid and in fact common handle for many tool classes.
  • Accessing mixed tuples with inexact but castable types (such as t[1].L when the element at index 1 actually contained an int) caused an InvalidCastException. This problem has been fixed.
  • GetCirclePose did not work properly via HALCON/.NET. 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.

HDevEngine

o Bug Fixes:
  • HDevEngine failed to load a procedure and threw an exception if the procedure contained invalid or unresolved program lines, no matter whether the program lines were activated or not. If an activated program line is invalid, this behavior is intended in order to signal that the procedure will not work properly. However, if the program line is deactivated, the procedure should be loaded and executed normally. This problem has been fixed.
  • The method GetVariableXld of HDevEngine/.NET did not work. This problem has been fixed.
  • HDevEngine crashed if not all HALCON help files were installed under %HALCONROOT%\help or if HALCONROOT was set to another major version than the used binaries. 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.

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 eneo interface for remote grabbing from the eneo SC camera series from Videor Technical under Windows x86.
    The new HDevelop example programs eneo.dev, eneo_parameters.dev, and eneo_simple.dev in the directory examples/hdevelop/Images/Acquisition show how to use this interface.
  • HALCON now also includes the PixeLINK interface, which supports the IEEE 1394 (FireWire), USB, and GigE cameras from PixeLINK.
    The new HDevelop example programs pixelink.dev, pixelink_simple.dev, pixelink_parameters.dev, and pixelink_2cameras.dev in the directory examples/hdevelop/Images/Acquisition show how to use this interface.
  • HALCON now also includes the SonyXCI-2 interface, which supports the new Sony XCI-SX100/C and XCI-V100/C smart cameras. Thus, in combination with the standard HALCON installation for Windows x86, HALCON now completely runs on the Sony XCI-SX100/C and XCI-V100/C smart cameras, see also here.
    The new HDevelop example programs sonyxci2.dev, sonyxci2_simple.dev, and sonyxci2_parameters.dev in the directory examples/hdevelop/Images/Acquisition show how to use the new interface.

o Modified Image Acquisition Interfaces:
  • In the source code template hAcqTemplate for developing new acquistion interfaces the function ExtractChannelsFromRGB16 showed an erroneous usage of the input parameter *data. This problem has been fixed.
  • 'info_framegrabber(...,'generic',...)' always returned the error 1302 ("Wrong value of control parameter: 2") instead of calling the corresponding query in the specific image acquisition interface. This problem has been fixed.
  • The following HALCON image acquisition interfaces have been revised since HALCON 8.0.2:
    • The new version 2v30 of the FirePackage driver is available, which can be used in combination with the 1394IIDC interface and fixes most notably the compatibility problem of the former versions 2v25...2v28 in case of multiple camera configurations. Additionally, the 1394IIDC interface now allows to specify the actual number of used image buffers.
    • The 1394IIDC interface for Linux is now available also for Linux x86_64 and is based on new versions of the underlying system libraries libraw1394 and libdc1394. Additionally, it now allows to change the Format7 settings during runtime and fixes a bug in the operator close_framegrabber.
    • For the BaumerFCAM interface a bug regarding the interdependency of external triggering and continuous grabbing mode has been fixed. Additionally, it provides two new parameters. Furthermore, a bug in external triggering in case of synchronous grabbing has been fixed.
    • The BitFlow interface now includes bugfixes in the parameters 'do_comm_param', 'ctab_fill', 'overflow_thread', and 'hardware_exception_thread'.
    • The DahengCAM interface now supports also the SV-xxxx camera series and includes several new parameters, e.g., to control strobe and digital I/O.
    • The dPict, INSPECTA , and INSPECTA5 interfaces now support the auto-detection of actually available devices in HDevelop.
    • The iPORT interface now includes several enhancements such as the support of dual output format.
    • For the FlashBusMV interface a bug in querying the revision number of the interface via the operator info_framegrabber has been fixed.
    • The GigEVision interface is now also available for Windows x64. It includes various extensions and improvements such as an advanced packet resend mechanism, support of more pixel formats, dynamically setting of transport layer-related parameters, automatic packet size optimization, software cropping, and support of ForceIP. Furthermore, all parameter names have been made consistent to the GenICam Standard Feature Naming Convention. Additionally, the GigEVision interface provides a new acquisition mode to enforce the grabbing of latest available images, broadcast device discovery, new parameters for IP configuration and block timeout, automatic checking for firewalls on Windows XP, and support of real-time scheduling policy on Linux systems. Furthermore, several bugs have been fixed and enhancements have been implemented, regarding, e.g., the support of the 'SingleFrame' acquisition mode and the handling of custom pixel formats, multiple camera configurations, error handling, automatic detection of packet size, and packet resending.
      The new HDevelop example program examples/hdevelop/Images/Acquisition/gigevision_crop.dev shows how to apply the GigEVision interface for software cropping.
    • For the Ginga interface a bug in querying the revision number of the interface via the operator info_framegrabber has been fixed.
    • The GingaDG and the Ginga++ interfaces now provide a special thread handling in continuous grabbing mode.
    • The LINX interface now provides new parameters for controlling exposure and shutter speed. Furthermore, several bugs have been fixed.
    • The LuCam interface provides new parameters to control the frame rate and to query the actual sensor size. Additionally, the interface now accelerates the execution time of the GPIO parameters and a bug in the operator close_framegrabber has been fixed. Furthermore, the interface now supports also Windows x64 Editions and provides new parameters for aborting a pending grab and for controlling 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 mEnableVisualApplets interface now provides a new parameter to query the serial number of the board and fixes bugs regarding the continuous grabbing mode and querying Visual Applet's generic parameters.
    • The mEnableIII and mEnableIV interfaces now 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.
    • The MILLite image acquisition interface has been extended to support also Vio frame grabber boards. Additionally, bugs in the operator grab_image_async have been fixed to reach the full frame rate in case of free-running analog cameras and to allow software triggering.
    • The pylon interface now supports software cropping. Furthermore, several bugs have been fixed. Amongst others, bugs in the operator open_framegrabber regarding the device names and in handling multiple devices have been fixed. Other bugfixes concern, e.g., multi-camera configurations, buffer re-queueing, buffer protection in multithreaded applications, and aborting a pending grab.
    • For the PXC interface a bug in querying the revision number of the interface via the operator info_framegrabber has been fixed.
    • The Ranger C and Ranger E interfaces have been adapted to the latest icon_API version 3.3.2 from Sick IVP. Additionally, the operators grab_data and grab_data_async are implemented to return a tuple of images instead of multi-channel images in measurement mode. Furthermore, the interaction with the HDevelop Image Acquisition Assistant has been refined.
    • The SaperaLT interface now supports Windows x64 Editions and includes new parameters for controlling the line scan direction. Furthermore, the new interface revision includes minor bug fixes. Additionally, for the interface a bug in the operators grab_image and grab_image_async in case of an error have been fixed.
    • The uEye interface now includes various extensions and improvements such as new parameters to query the presence of an beforehand asynchronously grabbed image and to support new color formats and pixel depths. Furthermore, several bugs have been fixed.
    • For the VRmUsbCam interface a bug in the operator grab_image_start has been fixed to avoid unnecessary re-initializing of the acquisition engine.

    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 HDevelop User's Guide:

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

o Solution Guide III-C on 3D Machine Vision:

The Solution Guide III-C on 3D Machine Vision is now available in a new edition. In particular, the section about Robot Vision has been adapted to the changes related to the hand-eye calibration.

o Reference Manual:
  • Some of the examples in the documentation of the classification operators contained errors. These problems have been fixed.
  • The reference manual entry on check_difference described the case of identity incorrectly. This problem has been fixed.
  • Some of the examples in the documentation of the classification operators contained errors. These problems have been fixed.
  • The reference manual entry on connect_grid_points now explicitly mentions the fact that high values of the input parameter MaxDist may lead to the loss of connecting lines.
  • The reference manual entry on create_shape_model_3d and find_shape_model_3d has been extended. It now emphasizes more explicitly that the pose resulting from find_shape_model_3d refers to the original 3D object model coordinate system that is used in the DXF file but not to the reference coordinate system that is introduced in find_shape_model_3d.
  • The reference manual entries on do_ocr_single_class_svm, do_ocr_multi_class_svm, and get_features_ocr_class_svm falsely stated that only byte images were accepted. In fact, these operators also work with uint2 images. The reference manual entries have been adapted accordingly.
  • The reference manual entry on find_ncc_model has been extended. It now explains why instances of the model that lie close to the image border cannot be found in some cases. It also describes a way how to deal with this matter.
  • get_data_code_2d_param returns 0 for QR Code models that can handle models of type 1 and 2 and not 'any' as it was described in the reference manual. The reference manual entry has been adapted accordingly.
  • The reference manual entry on remove_noise_region has been extended. It now explains the various possibilities for the parameter Type.
  • The reference manual entry on segment_contours_xld has been extended. It now explains why contours with less than 6 contour points are not segmented.
  • The reference manual entry on smooth_funct_1d_mean has been extended to describe the new behavior when incrementing the value of SmoothSize.

Miscellaneous

o Installation:
  • Under Windows, new versions of the dongle drivers are included: HASP 4.110 for USB dongles and Sentinel 7.5.0 for Parallel Port dongles.

o Licensing:
  • HALCON now uses version 11.6 of the FLEXnet Publisher license manager software.

 
© Copyright 2010, MVTec Software GmbH, corporate/legal/privacy information






Webmaster Last modified: Thu Apr 9 11:30:00 CEST 2009