MVTec Software GmbH
  Building Vision For Business


Release Notes for HALCON 6.1.2

This document provides the release notes for MVTec HALCON 6.1.2, as released in June 2003. HALCON 6.1.2 is primarily a maintenance release that fixes all known bugs in HALCON 6.1.1; besides, it provides added functionality and speedups.


Overview

This document contains the following information:

Compatibility
Major New Features of HALCON 6.1.2
Detailed Description of Changes in HALCON 6.1.2
Major New Features of HALCON 6.1
Detailed Description of Changes in HALCON 6.1.1
Detailed Description of Changes in HALCON 6.1
Major New Features of HALCON 6.0
Detailed Description of Changes in HALCON 6.0.3
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


Compatibility

o Licenses
    HALCON 6.1 licenses are also valid for HALCON 6.1.2. In contrast, all HALCON 6.0 licenses must be replaced or upgraded. Please contact your local distributor.

o HALCON Library
    HALCON 6.1.2 is source code compatible with HALCON 6.1 and 6.1.1, i.e., programs written for HALCON 6.1[.1] can be compiled and linked with HALCON 6.1.2. Compared to HALCON 6.0.x, however, many extensions have been introduced. Thus, the HALCON 6.1.2 libraries are not compatible with HALCON 6.0.x or earlier versions.

o HALCON Applications
    Applications (i.e., executables) developed with HALCON 6.1 or 6.1.1 can be used with HALCON 6.1.2, with one exception: Programs using shape-based matching must in most cases be re-compiled and linked, because of the changes in the operators for model creation. This means that HALCON 6.1.2 is not completely binary compatible with HALCON 6.1 or 6.1.1.
    C or C++ programs developed with HALCON 6.0.x must be re-compiled. The incompatibility with HALCON 6.0.x 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.

o Frame Grabber Interfaces
    If you developed your own frame grabber interfaces with HALCON 6.1 or 6.1.1, you can use them with HALCON 6.1.2 without further action. Frame grabber interfaces developed with HALCON 6.0.x must be re-generated. Note that you might also need to adapt the code of your interface due to changes in the HALCON Frame Grabber Integration Interface. Please refer to the Frame Grabber Integration Programmer's Manual for more information.

o Extension Packages
    Extension packages developed with HALCON 6.1 or 6.1.1 can be used with HALCON 6.1.2 without further action. Extension packages developed with HALCON 6.0.x must be re-generated.

o ActivVisionTools
    In contrast to ActivVisionTools 2.1 and 2.2, which are based on HALCON 6.1 (or HALCON 6.1.1), the ActivVisionTools versions 1.0 to 2.0 are all based on HALCON 6.0 (or HALCON 6.0.1); thus, by installing HALCON 6.1.2 you would disable such an ActivVisionTools installation. Therefore, the setup program of HALCON 6.1.2 checks whether there is an ActivVisionTools installation on your computer.
    • If it detects ActivVisionTools 2.1 or 2.2, no further action is required, as these versions are compatible to HALCON 6.1.2.
    • If it detects ActivVisionTools 2.0, it offers to replace the corresponding OCX with a new one, which is compatible to HALCON 6.1.2. Then, you can use ActivVisionTools 2.0 without any further action.
      Typically, you will choose this option. If not, you can replace the OCX manually as described in the manual 'Getting Started With HALCON'.
    • In contrast to ActivVisionTools 2.x, ActivVisionTools 1.x cannot be used together with HALCON 6.1.2. If the setup program of HALCON 6.1.2 detects such an ActivVisionTools version, it warns that by continuing to install HALCON 6.1.2 you will disable your ActivVisionTools installation.
      If you still want to use your ActivVisionTools installation, you must also keep your old HALCON 6.0.x installation and switch back to it as described in the manual 'Getting Started With HALCON'. Note that if you only want to evaluate HALCON 6.1.2, you can minimize the switching effort by installing only the demo version.


Major New Features of HALCON 6.1.2

o Improved Shape-Based Matching
    HALCON's powerful shape-based matching (the operators as well as HMatchIt) has been further extended: When creating a model, a new hysteresis threshold mechanism facilitates the selection of significant model parts. A second extension allows to exclude small, unimportant model components. Furthermore, the automatic selection of angle and scale step widths has been improved significantly.

o Faster Fill-Up Operations


Detailed Description of Changes in HALCON 6.1.2

Detailed release notes can be obtained for the following topics:

HDevelop
HALCON Library
Frame Grabber Interfaces
Extension Package Interface
HMatchIt
Miscellaneous

HDevelop

o Functionality:
  • HDevelop no longer scrolls the program window to the position of the program counter after deletion or cutting of a program line.
  • In case the option Experienced Programmer is activated, HDevelop now also lists input variables with special semtype in the lists of comboboxes for input control parameters in the operator window. Furthermore, it lists iconic variables of all semtypes in the lists of comboboxes for input iconic parameters in the operator window.

o Bug Fixes:
  • HDevelop exported endfor statements incorrectly to C. This problem has been fixed.
  • HDevelop sometimes erroneously exported the simple version of an operator to C. This problem has been fixed.
  • HDevelop didn't reset loops exited by the break statement. This problem has been fixed.
  • HDevelop now observes the selected color scheme under X. This change is particularly beneficial under KDE 3.0, where the KDE control center sets many, but not all, Motif-relevant resources when changing the color scheme, and hence HDevelop's background colors sometimes could appear inconsistent.
  • HDevelop's gray histogram displayed an incorrect peak value for int2/int4 images. This problem has been fixed.
  • In HDevelop's program window the insert cursor was not set correctly after pasting program lines using the window menu. This problem has been fixed.
  • HDevelop crashed if one of the histogram windows was opened for the first time and no graphics window was open. This problem has been fixed.
  • HDevelop crashed when trying to open a HDevelop graphics window that was too large. This problem has been fixed.

HALCON Library

o Speedup and Enhancements:
  • The operators fill_up and connect_and_holes are now up to 4 times faster. The operator fill_up_shape is now up to 10 times faster. The speedup depends on the size of the region and the number of holes.
  • The operator lines_facet is now faster by up to 10%.
  • The operators create_shape_model, create_scaled_shape_model, and inspect_shape_model now support a hysteresis threshold mechanism, which enables better selection of salient model points. This mode is selected by specifying two values for the parameter Contrast. These values detemine the lower and upper hysteresis threshold, respectively. Furthermore, the operators now support a mechanism to remove small model components based on their size. The threshold for the minimum size of the components is specified as the third element in a tuple for the parameter Contrast.

    The operator create_shape_model now reduces the number of pyramid levels automatically if the number of pyramid levels chosen by the user leads to a model with too few model points. The error 8510 (Number of shape model points too small) is now only be returned if the number of model points on the lowest pyramid level is too small.

    Furthermore, the operators create_scaled_shape_model and create_shape_model now use a more sophisticated algorithm to determine the angle and scale step widths automatically. Previous HALCON versions estimated step widths for some models that were so high that a relatively small value for the minimum score had to be used in order to find the model with find_scaled_shape_model and find_shape_model. This happened, for example, if the model contained many one pixel wide linear structures. The new algorithm chooses a smaller angle or scale step width automatically in these cases.
    The documentation has been adapted accordingly.

o Modified Operators:
  • There is no longer a restriction to 10,000 input points for the operators gen_region_polygon and gen_region_polygon_filled. Now, polygons with up to 200,000 points can be created. Similarly, the number of input points for the operator gen_region_points and of input runs for the operator gen_region_runs is no longer restricted to 50,000. The number of input lines for the operator gen_region_lines is no longer restricted to 100,000.
  • The operator convert_image_type was not able to convert int2 or uint2 images into int1 images. The missing functionality has been implemented.
  • The operator skeleton returned incorrect skeletons for regions with one-pixel holes. The one-pixel holes were filled before computing the skeleton. This is no longer done. Programs that rely on the old behavior should call fill_up_shape with Feature = 'area' and Min = Max = 1 before calling skeleton.

o Bug Fixes:
  • The operator median_image treated image borders incorrectly for MaskType 'rectangle' and Radius 2. This problem has been fixed.
  • The operator fill_up suppressed all components of the input region that were only one pixel in size if the input region consisted of several connected components and had more than three runlengths altogether. This problem has been fixed.
  • In some cases, the operator gen_contour_region_xld with the mode set to 'border' created contours with end points that were not equal although they should be, and although the contour was marked as closed. This problem has been fixed.
  • The operator get_region_polygon returned for some input regions a wrong polygon approximation. This happened especially with small or detailed input regions and a small tolerance parameter. These problems has been fixed.
  • In some rare cases the operator gen_contour_polygon_xld returned a wrong polygon approximation. This problem has been fixed.
  • The operators gen_region_polygon, gen_region_polygon_filled, and gen_region_line now are able to handle empty input tuples.
  • On regions with many of runlengths the operator fill_up sometimes crashed or returned the error message 3502: Run length row with negative length. This problem has been fixed.
  • On input regions with a very long contour (more than 100,000 contour points) the operator get_region_contour crashed or did not return the whole contour of the input region. This problem has been fixed.
  • The operator do_ocv_simple sometimes did not free all internal temporary memory. This problem has been fixed.
  • The operator find_shape_model and all variants thereof crashed in rare cases. This problem has been fixed.
  • The operator gen_contours_skeleton_xld no longer causes a memory leak if Mode is set to 'generalize1' or 'generalize2'.
  • The operator paint_xld did not clip the input contour if it was extending out of the image. This problem has been fixed.
  • The operator affine_trans_image produced incorrect results if the image was scaled by a factor of more than 200 and if the interpolation was set to 'constant' or 'weigthed'. The same problem occured in zoom_image_size and zoom_image_factor. These problems have been fixed.
  • The operator create_template sometimes crashed if Optimize = 'sort'. This happened if the domain of the template image was too close to the image border. This problem has been fixed.
  • The operator find_shape_model sometimes returned the error 3510 (Exceeding the maximum number of run lengths while automatical expansion) for small images. This problem only occured if find_shape_model was used in compiled programs, i.e., it did not occur in HDevelop. The problem has been fixed.
  • The operators find_shape_models and find_scaled_shape_models returned the error 6002 (Memory partition on heap has been overwritten) if the model id tuple was empty. They now return the correct error 1401 (Wrong number of values of control parameter: 1) instead.
  • The operators segment_contours_xld and fit_ellipse_contour_xld caused a memory leak under parallel HALCON. This problem has been fixed.
  • The operators find_1d_bar_code and get_1d_bar_code no longer crash if num_scanlines is set to an even value.
  • The operator vector_to_rigid sometimes crashed. This problem has been fixed.
  • The operator decode_2d_bar_code crashed on DataMatrix symbols greater than 48x48 modules. This problem has been fixed.
  • The operator lines_facet sometimes returned different results for input images of type byte and type real, although they contained exactly identical data. This problem occured with masks of size 9 and 11. The problem has been fixed.
  • The functions write_string and new_line now observe the system parameter 'flush_graphic'.
  • Parallel HALCON generated the error 6002 (Memory partition on heap has been overwritten) in edges_sub_pix. This problem has been fixed.
  • The operator hom_mat2d_to_affine_par returned incorrect results if the matrix contained a slant around the x axis or the matrix contained a negative slant. This problem has been fixed.
  • The operator regiongrowing_n only used the first channel of a multi-channel image. In particular, either empty regions or full regions were returned as output when using the metrics 'variance', 'correlation', 'variance-diff', 'variance-ratio', 'mean-abs-diff', 'mean-abs-ratio', 'max-abs-diff', 'max-abs-ratio', 'min-abs-diff', 'min-abs-ratio', and 'plane'. This problem has been fixed.
  • The operator dyn_threshold returned with an error in case the system parameter 'alloctmp_single_block' was set 'true'. This problem has been fixed.
  • The operator complement returned with an error in case the system parameter 'alloctmp_single_block' was set 'true'. This problem has been fixed.
  • The operator rotate_image sometimes did not free all temporary memory. This problem has been fixed.
  • The operator gen_region_polygon_filled sometimes has unsymmetric raster behavior in x-y direction. This problem has been fixed.
  • There was a memory leak in operator gen_ellipse_contour_xld. This problem has been fixed.
  • The operator shape_trans_xld had a memory leak. This problem has been fixed.
  • Entering the continuous mode with set_framegrabber_param(FGHandle, 'continuous_mode', 'enable') sometimes failed if at the same time an asynchronous grab was executed. This problem has been fixed.
  • In continuous grabbing mode, sporadically old images were provided by grab_image_async() with the IDS and DFG-LC frame grabber interfaces. These problems have been fixed.
  • The HALCON operator crop_domain crashed for input images with empty domain. It now returns the error 3111 (At least one input object has an empty region) in this case. The operator crop_domain_rel now also returns this error if the domain is empty.
  • When zooming (with set_part and disp_image) into a huge image, the runtime error 3510 was sometimes caused. This problem has been fixed.
  • The operator union_straight_contours_xld sometimes returned the error 3257 (Regression parameters of contours not yet entered! Please compute them by calling regress_cont_xld) even though the regression parameters had been computed. This problem has been fixed.
  • The operator paint_xld caused memory errors with point-like contours of area 0. This problem has been fixed.
  • The operator gray_projections crashed in Mode 'simple' in case the input region contained points outside the input image and the system parameter 'clip_region' was set 'false'. This problem has been fixed.
  • The operators expand_gray and expand_gray_ref sometimes crashed if Mode == 'region'. This problem has been fixed.
  • The operators plateaus and plateaus_center returned the error 6041 (No memory block allocated at last), if called with the wrong image type (vectorfield or complex images). They now return the error 9001 (Image to process has wrong gray value type) instead.
  • The operator contour_to_world_plane_xld exchanged the coordinates when transforming the contour. This exchange led to the fact that the transformed contours did not match an image that was rectified with the same parameters with image_to_world_plane. This problem has been fixed.
  • The operator dual_threshold now works correctly for byte images.
  • The operator morph_hat sometimes returned the error 3513 (Internal error: number of chords too big for num_max) for very large regions. This problem has been fixed.
  • The operator move_rectangle did not work correctly. On all systems, the destination coordinates were treated as offsets. The destination coordinates now are treated as absolute coordinates, as in copy_rectangle. Furthermore, on Windows systems the movement was clipped to the original rectangle. These problems have been fixed.
  • The operators closing_golay, opening_golay, and erosion_golay sometimes returned the errors 3503-3506 (Run length row < 0, Run length row >= image height, Run length column < 0, and Run length column >= image width) for certain combinations of structuring elements and rotations. The operators thickening_golay, thinning_golay, hit_or_miss_golay, thinning_seq, and thickening_seq sometimes returned the error 3510 (Exceeding the maximum number of run lengths while automatical expansion) for structuring elements of type 'h'. These problems have been fixed.
  • The operator decode_1d_bar_code did not check whether the start and stop symbols are correct for code 39. This led to the fact that sometimes an invalid barcode was decoded if the number of elements was correct even though the start or stop symbol was incorrect. This problem has been fixed.

o Manual:
  • The manual "Getting Started with HALCON" is available in a new edition; it now uses the terms "license / license file / license key" and "update / upgrade" consistently. Furthermore, it warns that the number of modules should be determined in the actually used environment and describes how to customize the port number of the floating license daemon. The index of the manual has been revised.
  • The "Application Note on Shape-Based Matching" is available in a new edition. It describes how to use the new mechanisms for selecting significant model parts. Furthermore, it explains how set_shape_model_origin affects the accuracy of the estimated position.
  • The example of union1 in the HDevelop Reference Manual contained a syntax error. This problem has been fixed.
  • The description of the operators edges_sub_pix and lines_gauss has been extended to indicate how much temporary image memory will be allocated depending on the input image size.
  • The operators tuple_ceil and tuple_floor have been moved to the chapter Tuple/Arithmetic. tuple_is_number has been moved to the chapter Tuple/Conversion.

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:
o Modified Frame Grabber Interfaces:
  • The following HALCON frame grabber interfaces have been revised: DFG-LC, DirectShow, Ginga++, IDS, MatrixVision, MultiCam, and Opteon, 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 Manual:
  • The "Extension Package Programmer's Manual" is available in a new edition. It now describes the image type UINT2_IMAGE and the corresponding struct HUint2Pixel and states whether procedures (macros) implicitely perform error handling using HCkP. Furthermore, the description of HCopyXLDContPart has been corrected. The index of the manual has been revised.

HMatchIt

o Functionality:
  • HMatchIt now enables users to set the new parameters of the model creation, i.e., the two hysteresis thresholds and the threshold for the minimum size of the model components. The online documentation has been extended accordingly.

Miscellaneous

o Licensing:
  • HALCON now uses version 8.3 of the FLEXlm license manager software by GLOBEtrotter, together with a new version of the device drivers for USB dongles.

o Examples:
  • The parameters of find_shape_models in the example program examples/hdevelop/Applications/FA/pm_multiple_models.dev have been optimized for speed.


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






Webmaster Last modified: Tue May 02 14:15:57 CEST 2006