MVTec Software GmbH
  Building Vision For Business


Release Notes for HALCON 7.1.3

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



Overview

This document contains the following information:

Compatibility
Detailed Description of Changes in HALCON 7.1.3
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
Detailed Description of Changes in HALCON 7.0.2
Detailed Description of Changes in HALCON 7.0.1
Detailed Description of Changes in HALCON 7.0


Compatibility

o Licenses
    HALCON 7.1 licenses are also valid for HALCON 7.1.3. In contrast, all HALCON 7.0 licenses must be replaced or upgraded. Please contact your local distributor.

o HALCON Library
    HALCON 7.1.3 is fully compatible with HALCON 7.1, 7.1.1, and 7.1.2. Compared to HALCON 7.0.x, many extensions have been introduced. Thus, the HALCON 7.1.3 libraries are not compatible with HALCON 7.0 or earlier versions.

o HDevEngine

o HALCON Applications
    Applications (i.e., executables) developed with HALCON 7.1, 7.1.1, or 7.1.2 can be used with HALCON 7.1.3, i.e., HALCON 7.1.3 is binary compatible with HALCON 7.1, 7.1.1, and 7.1.2.
    C or C++ programs developed with HALCON 7.0.x must be re-compiled. The incompatibility with HALCON 7.0 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 7.1, 7.1.1, or 7.1.2, you can use them with HALCON 7.1.3 without further action. Frame grabber interfaces developed with HALCON 7.0.x and 6.1.x are binary compatible with HALCON 7.1.3, interfaces developed with older versions must be re-generated.

o Extension Packages
    Extension packages developed with HALCON 7.1, 7.1.1, or 7.1.2 can be used with HALCON 7.1.3 without further action. Extension packages developed with HALCON 7.0.x must be re-generated.

o ActivVisionTools
    Only ActivVisionTools 3.1 and 3.1.1 can be used directly with HALCON 7.1.3 because they are based on (a modified version of) HALCON 7.1 or 7.1.1, respectively. All older ActivVisionTools versions are based on HALCON 7.0.1 or below; by installing HALCON 7.1.3, you would thus disable such an ActivVisionTools installation. Therefore, the setup program of HALCON 7.1.3 checks whether there is an ActivVisionTools installation on your computer.
    • If it detects ActivVisionTools 3.1 or 3.1.1, no further action is required, as this version is compatible to HALCON 7.1.3.
    • If it detects ActivVisionTools 3.0, please contact your distributor for further information on how to run this version together with HALCON 7.1.3.
    • In contrast, ActivVisionTools 1.0 to 2.2 cannot be used with HALCON 7.1.3. If the setup program detects such an ActivVisionTools version, it warns you that by continuing to install HALCON 7.1.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".



Detailed Description of Changes in HALCON 7.1.3

Detailed release notes can be obtained for the following topics:

HDevelop
HALCON Library
HDevEngine
Frame Grabber Interfaces
Miscellaneous

HDevelop

o Functionality
  • HDevelop's Used Modules dialog now contains a checkbox allowing to specify whether to check for used modules in all local and external procedures, or only in local and external procedures used by the current program.

o Bug Fixes
  • HDevelop sometimes exported procedures incorrectly to C# and VB.NET in case a procedure contained local iconic variables and the HALCON error handling mechanism was deactivated (via dev_set_check('~give_error')) before returning from the procedure. This problem has been fixed.
  • Erroneous execution of the operator dev_open_window left HDevelop in an inconsistent state if the error handling had been turned of via dev_set_check('~give_error'). This problem has been fixed.
  • If a Qt application using OpenGL was executed before HDevelop was started, HDevelop freezed on Linux/UNIX systems while it tried to open a graphics window. Only applications linked to specific 3.x versions of Qt caused this behavior. This problem has been fixed.

o Manual
  • The HDevelop User's Manual is now available in a new edition. It has been updated and extended following the changes in HALCON 7.1.3. In particular, it now describes the new option for determining the used modules.

o Examples
  • The following new example programs in examples/hdevelop/Image/Framegrabber show how to use the new acquisition interface iPORT: iport.dev, iport_parameters.dev, iport_simple.dev

HALCON Library

o Speed-up and Enhancements
  • open_window now also works on systems with multiple screens. The column parameter can be greater than the horizontal resolution of the virtual display and the row parameter can be greater than the vertical resolution of the virtual display, so it is no longer limited to the resolution of the primary display monitor.
  • rotate_image is now faster for Phi = 90 and Phi = 270. The speedup depends on the processor and on the image size. It is larger for larger images. For example, for images of size 640x480, rotate_image is faster by up to a factor of 2. For 4096x3072 images, rotate_image is faster by up to a factor of 16.5.

o Modified Operators
  • deviation_image now can get parallelized automatically on domain level.
  • draw_circle(_mod) and draw_ellipse(_mod) now return floating point values. Furthermore, they now display the circle/ellipse subpixel-accurate.
  • fit_circle_contour_xld, fit_ellipse_contour_xld, dist_ellipse_contour_xld, dist_ellipse_contour_points_xld, disp_xld, and segment_contours_xld run non-exclusively now.
  • send_tuple and receive_tuple now allow tuples with more than 100000 elements. Furthermore, send_tuple and receive_tuple now are able to handle strings of more than 1024 characters.

o Bug Fixes
  • add_noise_distribution did not add pepper noise if noise with a salt-and-pepper distribution with less than 0.2 percent of pepper should be added. In addition, images of type int2 were clipped to the range [0,255]. Furthermore, the operator added noise defined by a Gaussian distribution incorrectly: The gray value of some pixels was increased too much. These problems have been fixed.
  • approx_chain_simple sometimes crashed if the point coordinates contained the same point multiple times consecutively. This problem has been fixed.
  • area_center_xld, do_ocr_multi, do_ocr_muti_class_mlp, and get_obj_class caused a memory leak when being parallelized automatically. This problem has been fixed.
  • bit_and, bit_or, and bit_xor did not parallelize correctly on domain level if the domains of both input images differed. This problem has been fixed.
  • class_ndim_norm crashed if Radius contained more than 1024 elements (the maximum number of clusters). It now returns an error message instead.
  • depth_from_focus sometimes crashed. This problem has been fixed.
  • disp_cross and gen_cross_contours_xld interpreted angles inconsistently to the rest of HALCON, i.e., in these two operators angles were used mathematically negative (i.e., clockwise) instead of mathematically positive (i.e., counterclockwise). Furthermore, disp_cross sometimes displayed crosses incompletely or not at all. This was the case, when the cross to be displayed lied outside the limits of the biggest image that was used so far. These problems have been fixed.
  • deviation_image sometimes returned erroneous results for images with reduced domains. This problem has been fixed.
  • disp_distribution did not work correctly under Windows. No output was performed in the graphics window after executing the operator. The distribution became only visible after causing a manual flush by, e.g., minimizing and subsequently maximizing the graphics window. This problem has been fixed.
  • disp_xld might caused a hang up of the program if an error was provoked. This problem has been fixed.
  • draw_* and get_mposition now recognize if the HALCON window is occluded by other top-level windows under Linux/UNIX systems. In particular, the draw_* operators no longer modify the primitive being drawn if the user clicks into another top-level window that occludes the HALCON window. Furthermore, the elements drawn with the operators draw_* now do not flicker during the drawing process.
  • draw_polygon and draw_region now display the polygon sides in one color, even if dev_set_colored is used.
  • draw_rectangle1, draw_rectangle1_mod, draw_rectangle2, and draw_rectangle2_mod did not display the pick points correctly when a window part was set. This problem has been fixed.
  • draw_xld and draw_xld_mod treated the visualization and the sensitive part of the pick points incorrectly when a window part was set. Furthermore, they did not rotate and scale the drawn contour respectively to its midpoint but respectively to a point translated by (-0.5, -0.5) from the midpoint. Finally, the operators had a memory leak. These problems have been fixed.
  • dump_window and dump_window_image now return the correct result if the display is set to a mode with more than 8 bit (256 colors). The image is no longer shifted to the right by one pixel.
  • expand_line performed wrong tests on the input contol parameter Coordinate for the 'row' mode. This might have caused an unexpected error 1301 ("Wrong value of control parameter 1"). Furthermore, the operator returned wrong results in the 'column' mode. The returned regions might have missed a pixel at the border. These problems have been fixed.
  • find_1d_bar_code now ignores failed scanlines and proceeds with the processing of the remaining scanlines instead of returning an error.
  • find_data_code_2d crashed in rare cases for ECC200 data codes if the generic parameter 'module_grid' was set to 'variable' (default in the mode 'enhanced_recognition') or if the parameter 'persistence' was set to a value greater than 0. Furthermore, in rare cases with ECC200 candidates close to the image border, the operator crashed or returned an error code.

    Finally, the operator failed to decode some larger model 1 QR codes. This concerned all combinations of symbol versions and error correction levels where the number of remaining code words is greater than 0. In detail, the following codes were affected (version-error correction levels): 7-H, 8-H, 10-QH, 11-H, 12-H, 13-LMQH, 14-LMH. These problems have been fixed.

  • find_marks_and_pose sometimes returned a memory error. Furthermore, it might have crashed when using line scan cameras together with calibration plates with orientation mark. Theses problems have been fixed.
  • gen_measure_arc in rare cases crashed for Interpolation = 'bicubic' if the arc contained a part for which the central circular arc lies outside the image, but a part of the corresponding projection annulus lies inside the image. This problem has been fixed.
  • gen_region_polygon_filled returned a slightly too small region. This occurred only in rare cases and if the input polygon was not closed. This problem has been fixed.
  • get_region_index now cannot be parallelized on tuple level automatically as it returned wrong results.
  • Under Linux/UNIX, get_tposition returned the wrong values: the values of the parameters Row and Column were interchanged. This problem has been fixed.
  • gray_histo_abs sometimes returned erroneous results for int2 images. This problem has been fixed.
  • gray_inside did not converge in rare cases if the input image contained at least one pixel with a gray value of 255. This problem has been fixed.
  • gray_projections returned fewer than the expected number of vertical projections for the mode 'rectangle', depending on the orientation of the smallest surrounding rectangle of the input region. If the surrounding rectangle had an orientation of 0 or 90 degrees, the number of vertical projections equaled the length of the rectangle, as one would have expected. However, the more the orientation neared 45 or 135 degrees, respectively, the fewer vertical projections were returned. This problem has been fixed.
  • hough_lines and hough_circles sometimes returned the error 3513 ("Internal error: number of chords too big for num_max"). This problem has been fixed.
  • lines_gauss in very rare cases returned inconsistent results. This problem has been fixed.
  • Parallel HALCON might have hung or crashed if an automatically parallelized operator failed with an error. This problem has been fixed.
  • When running Standard HALCON in mutliple threads in parallel, a thread might have hung up in very rare cases. This problem has been fixed.
  • partition_dynamic did not use the full specified search range for the determination of the position at which the region is partitioned. This problem has been fixed.
  • partition_rectangle returned regions that were one pixel too wide and one pixel too high. This problem has been fixed.
  • points_foerstner returned erroneous results for reduced domains and Smoothing = 'mean', i.e., the results differed from the results in the relevant region obtained with the full domain. This problem has been fixed.
  • points_harris had a memory leak. This problem has been fixed.
  • read_image returned the error 6041 ("No memory block allocated at last") when reading binary PBM files. Furthermore, read_image read in ASCII PBM files incorrectly. The images were inverted. Finally, the operator returned the error 6001 ("Not enough memory available") if a very large PNG file with a region was read. These problems have been fixed.
  • read_region returned inverted regions for 1-bit TIFF images. This problem has been fixed.
  • regiongrowing_mean returned the error 3513 ("Internal error: number of chords too big for num_max") for images with very small domains. Furthermore, in rare cases it returned the error 6002 ("Memory partition on heap has been overwritten"). These problems have been fixed.
  • rgb1_to_gray and rgb3_to_gray now use the luminance formula given in ITU-R BT.470-6 (Conventional Television Systems). The formula is G = 0.299*R + 0.587*G + 0.114*B. The factor of 0.144 for B used in previous HALCON versions was erroneous.
  • rotate_image with 90, 180, and 270 degrees now returns results that are consistent with other angles. In particular, the full image is now transformed for these angles instead of the reduced domain only.
  • segment_contours_xld crashed if the number of output contours exceeded 50000. This problem has been fixed.
  • set_window_extents could crash under Linux/UNIX for very large window sizes. This problem has been fixed.
  • shape_trans_xld in rare cases did not eliminate collinear points in the convex hull if 'convex' was chosen for the input control parameter Type. This problem has been fixed.
  • sub_image sometimes returned wrong results for INT2 images. This problem has been fixed.
  • union_collinear_contours_xld, union_collinear_contours_ext_xld, and union_adjacent_contours_xld might have crashed or returned the error message "Memory allocation failed" if they were called on an input object with a large number of contours. This problem has been fixed.
  • var_threshold did not work correctly with negative values for the parameter StdDevScale. This problem has been fixed.
  • HALCON windows of window type 'pixmap' sometimes displayed images incompletely, i.e., the rightmost column of the image was not displayed at all. This problem has been fixed.
  • zoom_image_factor, zoom_image_size, affine_trans_image, and affine_trans_image_size could cause erroneous results if the input image contained gray values close to the maximum gray value and the image was zoomed with very small factors.

    Furthermore, zoom_image_factor and zoom_image_size returned wrong results for int2 and uint2 images if Interpolation was set to 'none'. This happened if the image was scaled in vertical direction with a scaling factor exceeding 1.0. In this case, the resulting scaled image contained wrong gray values in the right half of the image.

    These problems have been fixed.


o Manual
  • The "Installation Guide" is available in a new edition. Is has been adapted to the currently supported Windows versions. Furthermore, the chapter "Troubleshooting" has been extended.
  • The documentation of add_noise_distribution has been extended. It now describes the meaning of the values in the tuple that defines the distribution.
  • The documentation of distance_rr_min has been improved. In particular, it is now described what results from the fact that the computation is based solely on the regions' contours.
  • The documentation of find_shape_model and its derivates now explicitly describes the semantics of the output parameters Row and Column.
  • The documentation of sfs_mod_lr, sfs_orig_lr, sfs_pentland, and phot_stereo stated the obsolete restriction that the input images must be square and that their dimensions must be powers of two.

HDevEngine

o Bug Fixes
  • In the C++ interface of the HDevEngine the parameter names of the method HDevOperatorImpl::DevSetPart were wrong. The parameters were named as row, col, width, height, however, their semantics is row1, col1, row2, col2. The parameter names were renamed according to their semantics.

Frame Grabber Interfaces

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

o New Frame Grabber Interfaces
  • HALCON's BitFlow interface for the R64/R64e frame grabber boards from BitFlow is now also available for Windows x64.
  • HALCON's IDS interface for the FALCON/EAGLE frame grabber boards from IDS is now also available for Linux x86.
  • HALCON now also includes the iPORT interface to support cameras that are connected through the iPORT IP Engine from Pleora.
  • HALCON's MatrixVisionAcquire interface for the mvBlueFOX, mvDELTA, mvGAMMA, mvSIGMA, and mvTITAN acquisition devices from MATRIX Vision is now also available for Linux x86.

o Modified Frame Grabber Interfaces

Miscellaneous

o Licensing
  • HALCON now uses version 10.8.5 of the FLEXlm license manager software. The underlying dongle drivers have also been updated to version 4.102 (HASP for USB dongles) and 7.3.2 (Sentinel for Parallel Port dongles) to ensure maximum compatibility with current Windows operating systems.

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






Webmaster Last modified: Tue Aug 14 15:30:00 CET 2007