MVTec Software GmbH
  Building Vision For Business


Release Notes for HALCON 6.0.2

This document provides the release notes for MVTec HALCON 6.0.2, i.e., revision 2 of HALCON 6.0, as released in March 2002. HALCON 6.0.2 is primarily a maintenance release that fixes all known bugs in HALCON 6.0.1; besides, it provides added functionality and speedups. HALCON 6.0.2 is compatible with HALCON 6.0.1 and HALCON 6.0; however, extension packages that were generated for HALCON 6.0 must be generated anew. Compared to HALCON 5.2, many extensions have been introduced. Thus, the HALCON 6.0.2 libraries are not compatible with HALCON 5.2 or earlier versions.

Note that is ActivVisionTools 2.0 are not fully compatible with HALCON 6.0.2! See here for detailed information.

Please uninstall older versions prior to installing this new release. Optionally, you can install 6.0.2 and keep older versions of HALCON. In this case you must make sure that the environment variable HALCONROOT points to version 6.0.2 whenever you want to use it. Furthermore, if you have used HALCON 5.2 or earlier up to now, please re-compile all C or C++ programs and re-generate your own extension packages or frame grabber interfaces.

The incompatibility with HALCON 5.2 or earlier versions mainly concerns the binaries, with only few changes in the operators' signatures. If you encounter problems during recompiling your programs, please check the detailed description of changes below and look up the signatures of the concerned operators in the reference manual.

Note that all HALCON 5.2 license keys must be replaced or upgraded. Please contact your local distributor.


Overview

This document contains the following information:

Major New Features of HALCON 6.0
Detailed Description of Changes in HALCON 6.0.2
Detailed Description of Changes in HALCON 6.0.1
Detailed Description of Changes in HALCON 6.0
Notes for Users of the Beta Version of HALCON 6.0
Major New Features of HALCON 5.2
Detailed Description of Changes in HALCON 5.2.3
Detailed Description of Changes in HALCON 5.2.2
Detailed Description of Changes in HALCON 5.2.1
Detailed Description of Changes in HALCON 5.2


Detailed Description of Changes in HALCON 6.0.2

Detailed release notes can be obtained for the following topics:

HDevelop
HALCON Library
HALCON/C++
HALCON/COM
Frame Grabber Interfaces
Extension Package Interface
Miscellaneous

HDevelop

O Speedup and Enhancements:
  • The popup menu of the program window has been extended by the items 'cut', 'copy' and 'delete'.
  • HDevelop now saves the relevant options that can be set via the menu File -> Options... The saved options are: "Show Variable Usage", "Show Low Level Errors", "Automatic Program Save", "Experienced Programmer", "Syntax", and "Digits".
  • The HDevelop dialogs have been generally improved considering layout and handling.
  • HDevelop now has a mechanism to search and replace variables in the program text. The functionality is accessible via the menu Edit -> Replace Variables (Ctrl-H).

O Functionality:
  • Under UNIX, HDevelop now saves the window positions and the file history in the directory "~/.hdevelop" in the user's home directory.
  • After (de)activating a line of code in the program window, HDevelop used to scroll the window to the position defined by the most recently selected program line. This behavior has been changed such that no window scrolling takes place at all.
  • Some HDevelop dialogs are no longer resizable under UNIX.
  • Most HDevelop dialogs could not be closed using the window manager or the system menu. This functionality has been implemented.
  • The default value for option "Show Variable Usage" was changed to FALSE.
  • When writing the modules used in a HDevelop program named 'name.dev' to file, the name of the modules file now is 'name_modules.txt'. In case the program has no name, the modules now are written to the file 'unknown_modules.txt'.
  • The operations accessible via the program window popup menu always related to the program line pointed to by the cursor. This behavior has been changed so that the operations 'cut', 'copy', 'delete', 'activate', and 'deactivate' relate to the line(s) selected in the program window or to the program line pointed to by the cursor if no lines are selected.
  • HDevelop's pixel information dialog now displays the whole range of pixel values also for images with more than 8 bits per pixel. Furthermore, for two-channel images, the pixel values in both channels are now visualized separately.
  • HDevelop now checks 'data', 'parameter' and 'database' (see the documentation of the operator set_check) by default.

O Bug Fixes:
  • Loop counters in HDevelop were not always reset correctly. This problem has been fixed.
  • When using the mode "Insert Interaction" and changing the line width, the combo box for the line widths of the display parameter dialog showed a new wrong text entry. This problem has been fixed.
  • It was possible to activate comment lines using the HDevelop program window popup menu. This problem has been fixed.
  • The HDevelop gray histogram window could not display complex images correctly; furthermore, it displayed an error if an image object tuple (an object containing multiple images) was displayed in the graphics window. Both problems have been fixed.
  • HDevelop crashed when a frame grabber variable dialog was opened before the variable was initialized for the first time. This problem has been fixed.
  • The text inside the status bar of HDevelop's main window was not set correctly when selecting internal or control operators. This problem has been fixed.
  • HDevelop sometimes displayed a warning message when exporting programs to C or C++ and the option 'Show Low Level Errors' was activated. This problem has been fixed.
  • HDevelop now returns a more appropriate error message in case an operator is not known.
  • HDevelop's options dialog did not reset all settings when selecting 'Cancel'. This problem has been fixed.

O Examples:

HALCON Library

O Speedup and Enhancements:
  • The operator affine_transform_image has been speeded up by up to 30%.
  • The operator read_image is now able to read CMYK and YCCK jpeg files. It is assumed that the files were written with the Adobe Photoshop convention. See the updated documentation of read_image.
  • The operator gray_projections has been extended to process int2 images.
  • The operator create_shape_model now determines the number of pyramid levels to use automatically if NumLevels is set to 0.
  • The operator read_sequence now supports reading floating point images (files containing 32 bit floating point numbers).

O Modified Operators:
  • Please note that in the original release notes for HALCON 6.0.1 two entries regarding the modification of get_image_pointer1_rect and the modification of gen_image1_rect were left out by mistake!
  • The operators connect_and_holes, fill_up, get_region_contour, and euler_number now take the neighborhood setting that can be set with set_system ('neighborhood', ...) into account.
  • The operator find_2d_bar_code now has value lists for the parameters GenParamNames and GenParamValues.
  • The operator select_contours_xld now is able to select contours based on their contour length. This mode is called 'contour_length'. The parameter value 'length' has been renamed to 'maximum_extent' because it does not compute the true contour length but instead uses the maximum distance of the eight extremal points, as described in the reference manual. Note that the mode 'length' is still supported for backward compatibility.
  • The parameter LineWidth in operator (dev_)set_line_width now has has an upper bound of 2000. Not limiting the value of LineWidth could cause HDevelop to crash.
  • The operator open_file now is able to open output files for appending to existing files.
  • The operator find_shape_model now uses the number of pyramid levels that was specified in create_shape_model if NumLevels is passed as 0.
  • The operator gen_region_polygon now takes the system parameter 'clip_region' into account when generating the region. Previously, gen_region_polygon acted as if 'clip_region' was set to 'false'.
  • The operator gen_contour_polygon_xld now handles an arbitrary number of points as input. The previous limit was 20000 points.
  • The description of gen_ellipse_contour_xld has been extended by adding default values and value lists for all input control parameters.
  • HALCON now has an operator chapter Image->Access. The operators get_image_time, get_grayval, get_image_pointer1, get_image_pointer1_rect and get_image_pointer3 have been moved from chapter Image->Manipulation to Image->Access.
  • The operators segment_contours_xld and gen_polygons_xld are now able to handle contours with more than 50000 points.
  • The border treatment of the gray value morphology operators gray_erosion, gray_dilation, gray_opening, gray_closing, gray_bothat, grat_tophat has been changed from setting the gray values outside the image to 0 to the customary mirroring of the gray values at the image border.
  • The operator clip_region_rel now returns the error 3514 (Operator cannot be implemented for complemented regions; intersect the region with a finite region or set clip_region to true with set_system) for complemented regions if clip_region has been set to false using set_system.
  • The operators create_template and create_template_rot now allow templates with domains (regions of interest) that can extend up to the image border. Previously, the error 8504 (Pattern too near the image border) was returned for images in which the domain was too close to the image border.
  • The default value for Contrast in create_shape_model and inspect_shape_model has been changed to 30. The previous default value of 60 was too high for most applications.
  • The operator create_funct_1d_pairs now checks whether the x values are given in ascending order.
  • The parameters RefLineStartY, RefLineStartX, RefLineEndY, RefLineEndX of the operator union_straight_contours_histo_xld have been renamed to RefLineStartRow, RefLineStartColumn, RefLineEndRow, RefLineEndColumn, respectively. The parameter nWidth has been renamed to Width.
  • The new parameter 'revision' of info_framegrabber enables the user to query the revision number of a specific HALCON frame grabber interface even before opening a connection. Note that not all interfaces implement this functionality yet.

O Bug Fixes:
  • The order of the parameters Bottom and Left of the operator crop_domain_rel has been exchanged because the second and third parameters affect clipping columns and rows, respectively. Furthermore, the operator has been included in the chapter Image->Format instead of Regions->Transformation.
  • The operator clip_contours_xld now deletes the global contour attributes. They are deleted because in most cases they are no longer valid for the clipped contours.
  • The operators gen_gabor and convol_gabor now result in images that have zero values (up to rounding errors) in the imaginary component of the back-transformed images. To enable this, the filter pair is no longer returned in a single-channel byte image but in a two-channel float image. The documentation has been adapted accordingly.
  • When calling the operators draw_rectangle2_mod or draw_ellipse_mod, two mouse clicks were required until the system reacted on mouse move events. Now the objects can be modified with the first mouse click.
  • The operator connect_and_holes sometimes returned an incorrect number of holes. This problem has been fixed.
  • The operator laplace_of_gauss no longer returns the error 8120 for Sigma >= 11.15. The reference manual now specifies that Sigma must be smaller than 25.
  • The operator diff_of_gauss no longer returns the error 3513 for large Sigma on images with a reduced domain.
  • The operator smooth_image no longer returns the error 3513 for large Alpha with the Gauss filter on images with a reduced domain.
  • The operator read_tuple sometimes appended several "garbage" characters to the end of a string. This problem has been fixed.
  • The operator convol_gabor computed an incorrect Hilbert image. This problem has been fixed.
  • The operator gen_region_polygon_filled did not produce correct regions when at least one of the coordinates of the polygon were negative. This problem has been fixed.
  • The operators draw_circle_mod, draw_point_mod, draw_line_mod, and draw_rectangle1_mod did not erase the displayed circle when the object was not being modified. This problem has been fixed.
  • The operator set_lut did not work correctly on systems without a hardware LUT (e.g., 24-bit displays) if the first call to set_lut was made with a tuple LUT (i.e., a tuple with 768 integers). This problem has been fixed. Furthermore, set_lut now supports setting LUTs from a file on all display types.
  • Repeately opening and closing a window in a loop no longer causes a memory leak under UNIX (X Windows).
  • The operators dilation1 and dilation2 returned the error 6041 (No memory block allocated at last) if Iterations > 1. This problem has been fixed.
  • The operator get_contour_angle_xld returned the error 6002 (Memory partition on heap has been overwritten) if the contour contained more than 20000 points. This problem has been fixed.
  • When calculating the correlation value for an image that does not cover a large range of gray values (i.e., less than 256-2^LdGray) the returned value for the correlation in cooc_feature_image and cooc_feature_matrix were intentionally set to a very high value (3.4e38) because the standard deviation in the formula for the correlation is 0. In the limit, the correlation tends to 0 for small gray value ranges. Therefore, the correlation now is returned as 0 if the standard deviation is 0.
  • The operator corner_response returned the error 6002 (Memory partition on heap has been overwritten) if the image was not square. This problem has been fixed.
  • The operator decode_1d_bar_code could not decode some Code 128 codes of type C (codes that consist entirely of packed numbers). This problem has been fixed.
  • The operators dual_rank and median_separate provided wrong region border treatment for reduced image domains. This problem has been fixed.
  • The operators get_region_chain and get_region_polygon no longer return the error 6005 (Tmp-memory management: Null pointer while freeing).
  • The operator create_shape_model sometimes created divide by zero errors if the model containd no points. For these errors to occur, the 8087 control word had to be set to a special (non-standard) value. This problem has been fixed.
  • The operator read_image now reads TIFF files with 9 <= BitsPerSample <= 15 and RGB TIFF files with BitsPerSample = 16 correctly.
  • The operator set_window_extents had no effect on some systems under X11. The window was not resized. This problem has been fixed. Note that it still may be necessary to ensure that the first call to set_window_extents happens a sufficient amount of time after the window has been opened with open_window.
  • The operator find_marks_and_pose sometimes returned the error 8404 (Minimum threshold while searching for ellipses) although the ellipses of the calibration target could be segmented easily. This problem has been fixed.
  • The operator get_pair_funct_1d now returns the results in the correct order. Previously, the x values were returned in the result parameter Y, while the y values were returned in the parameter X.
  • Under Windows, the operator set_line_style now works as specified in the manual. Previously, set_line_style ignored the given pattern if the line width was greater than one.
  • The operators tuple_sort_index, tuple_neg, tuple_first_n, tuple_last_n, tuple_inverse, tuple_select, tuple_select_range, tuple_str_bit_select, tuple_str_first_n, tuple_str_last_n, and tuple_sort no longer crash with empty tuples.
  • The operator tuple_concat no longer crashes if both input tuples are empty.
  • The border treatment of median_image, convol_image, and rank_image did not work as specified in the reference manual. For Margin = -3, the gray values were mirrored incorrectly. For Margin = -1, a black border was generated on output. For 0 <= Margin <= 255, some strange results could be returned, especially at the four corners of the image. This problem has been fixed.
  • The operator gray_dilation had a wrong border treatment for small structuring elements. This problem has been fixed.
  • The operator expand_gray no longer crashes if an input region is larger than the image.
  • The operator camera_calibration crashed if the pose and world points were degenerate, i.e., some world points lay in the focal plane after the transformation to the camera coordinate system effected by the pose, and hence could not be projected to the image plane. camera_calibration now returns the error 8406 (Error in projection: s_x = 0 or s_y = 0 or z = 0) in this case.
  • The operator set_grayval no longer crashes if the pixel coordinates lie outside the input image.
  • The operator clip_region now works correctly for complemented regions if 'clip_region' has been set to false using set_system.
  • The operators read_tuple, read_function, and read_ocr_trainf_select no longer display a warning message if the option 'show low level errors' is activated.
  • The operators depth_from_focus sometimes returned wrong results if the input images had a reduced domain. This problem has been fixed.
  • The operator fit_circle_contour_xld sometimes did not terminate if Iterations was set to 1. This problem has been fixed.
  • The operator watersheds could return inconsistent results with reduced domain images. The output depended also on pixels not lying within the domain of the input image. Problems usually only occurred if 'init_new_image' had been set to 'false' with set_system. This problem has been fixed.
  • The operators inspect_shape_model and distance_rr_min_dil sometimes returned the error 3513 (Internal error: number of chords too big for num_max). This problem has been fixed.
  • The operator median_image computed image borders incorrectly for MaskType 'rectangle' and Radius 1 on an MMX-compatible processor. Furthermore, it computed the first pixels of a chord incorrectly under Linux with an MMX-compatible processor for MaskType 'rectangle' and Radius 1 or 2. Both problems have been fixed.
  • The operator write_image wrote incorrect tiff files for small image sizes. It produced files that sometimes could not be read by other programs. This problem has been fixed.
  • The operator threshold sometimes returned the error 3510 (Exceeding the maximum number of run lengths while automatical expansion). This only happened if all images in memory were extremely small. This problem has been fixed.
  • The operators set_color and set_colored caused memory leaks in the X server under Linux on TrueColor displays. This problem has been fixed.
  • The operator texture_laws sometimes returned incorrect results for reduced domains at the borders of the domain. This problem has been fixed.
  • The operator regiongrowing_n sometimes returned the error 6002 (Memory partition on heap has been overwritten). This problem has been fixed.
  • The operator find_shape_model now always returns scores <= 1. Previously, scores slightly larger than 1 could occur because of rounding errors.
  • The operator sort_region no longer crashes if Order = 'false'.
  • The list of allowed values for the parameter SizeGauss of find_caltab has been corrected.
  • If a tuple of parameters is passed to the operator set_framegrabber_param now all parameters are handled correctly; previously, only the first element was passed to the specified frame grabber interface.
  • The operator gen_parallels_xld sometimed did not detect vertical parallels. This problem has been fixed.
  • Parallel HALCON displayed the low level error message 'calling HMemClrLocal: number of still allocated local space: ... ' for some operators. This problem has been fixed.
  • The operator gen_region_line sometimes created wrong lines when 'clip_region' was set to 'true' with set_system. The created lines were different from the lines that were obtained when 'clip_region' was set to 'false' and the region was clipped afterwards. This problem has been fixed.
  • The operator line_position returned wrong lengths and angles. This problem has been fixed.

O Manual:
  • The manual "Getting Started with HALCON" is now available in a new edition. The manual now contains more details regarding the use of dongles (parallel port and USB) including how to install, configure, and uninstall the corresponding device drivers.
  • The documentation of the operator set_colored was slightly misleading. The example suggested (for users that didn't look closely at the example) that tuples can be used as input values, whereas only the values 3, 6, and 12 are possible. The example has been removed and a value list has been provided for the parameter NumberOfColors.
  • The documentation of gray_projections has been extended substantially.
  • The documentation of gen_parallel_contour_xld erroneously mentioned that lines_facet computes the angle contour attribute. This problem has been fixed.
  • The documentation of the operator info_framegrabber now describes also the query value 'info_boards'.

HALCON/C++

O Functionality:
  • The operator istream& operator>>(istream &s, HTuple &t) is now implemented.

O Manual:
  • The HALCON/C++ User's Manual is now available in a new edition. Errors in the description of the class HException were corrected.

HALCON/COM

O Speedup and Enhancements:
  • The class HWindowXCtrl has been extended by a read-only property HalconWindow. This enables a simplified access to the encapsulated HALCON window and the use of HWindowXCtrl in Visual Basic.NET.

O Functionality:
  • The operators SelectObj, CopyObj, and ConcatObj returned objects of the wrong class in the classes that do not only serve as aggregation classes (HImageX, HRegionX, HXLDContX, HXLDPolyX, HXLDParaX, HXLDModParaX, and HXLDExtParaX). For example, the interface of SelectObj in the class HRegionX was HRegionX.SelectObj(Index As Long) As HUntypedObjectX (in Visual Basic syntax). Having the class HUntypedObjectX as return value required the user to cast the object back to the correct type using the member function Cast(). The return value of the above operators has been changed to be of the same type as the class of which these functions are members. For example, in HRegionX the interface of SelectObj now is HRegionX.SelectObj(Index As Long) As HRegionX. Because of this change, programs that used the workaround using the Cast() method must be modified: The Cast() function call must be removed and the returned object can directly be assigned to a variable of the correct type.
  • All methods except the Cast() method have been removed from the class HUntypedObjectX. All programs that have used any of these methods, e.g., SelectObj, must be modified to use the equivalent method in the class HOperatorSetX.
  • HALCON/COM now supports input variant parameters of type currency. This greatly helps under Delphi, where constants with less than 5 digits after the decimal point, e.g., 1.5, are often treated as variants of type currency.

Frame Grabber Interfaces

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

O New Frame Grabber Interfaces:
  • HALCON now also includes an interface to the Imagenation PXR800 frame grabber boards from CyberOptics.
  • HALCON now also includes an interface to the Integral Technologies frame grabber boards of the FlashBus MX family
  • HALCON now also includes an interface for the Allied Vision Technologies/Intek Firepackage Driver, which allows to acquire images from IEEE1394 cameras via PCILynx-IEEE1394 adapter cards.

O Modified Frame Grabber Interfaces:
  • The existing HALCON Multi frame grabber interface has been extended to the more general HALCON MultiCam frame grabber interface, which supports not only the Euresys Multi digital boards, but also the Euresys Domino (Alpha/Gamma) analog frame grabber boards.
  • The following HALCON frame grabber interfaces have been revised: BitFlow, IDS, PicPort, Pxc, DFG-LC, and TWAIN. Please refer to the corresponding documentation for more information, especially whether a new revision of the corresponding device driver is required.

Extension Package Interface

O Examples:
  • The package halconuser did not work with Parallel HDevelop under Linux and Solaris because its language interfaces were not linked with the corresponding library of the package itself. This problem has been fixed.
  • The makefile of the example extension "halconuser" has been modified to avoid compiler errors in the case that %HALCONROOT% contains a blank (as in "C:\Program Files\MVTec\Halcon").
  • The def file print.def of the example HALCON package halconuser has been corrected.

Miscellaneous

O Licensing:

O Manuals:
  • The numbering of editions of the User's and Programmer's Manuals has changed: Now, only editions corresponding to a major release of HALCON are numbered; editions corresponding to minor releases rank as subeditions and are denoted by letters. This change led to a renaming of the new editions released with HALCON 6.0.1: The former 6th editions of the manuals "Getting Started", "HALCON/C", "HALCON/C++", and "Extension Package" are now listed as edition 5a, edition 3 of the manual "HALCON/COM" as edition 2a.

O Examples:
  • The example program examples/hdevelop/Regions/Creation/gen_checker_region.dev now resets the neighborhood to 8 at the end of the program.

ActivVisionTools

When used together with HALCON 6.0.2, ActivVisionTools 2.0 show the following problems:
  • ActivBarcode displays an error message if the display of the bar code elements is enabled.
  • If ActivDecision evaluates multiple objects as "not okay", none is marked in the error color in AVTView.


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






Webmaster Last modified: Tue May 02 13:55:49 CEST 2006