MVTec Software GmbH
  Building Vision For Business


Release Notes for HALCON 6.1.4

This document provides the release notes for MVTec HALCON 6.1.4, as released in January 2005. HALCON 6.1.4 is primarily a maintenance release that fixes all known bugs in HALCON 6.1.3; besides, it provides added functionality and speedups.



Overview

This document contains the following information:

Compatibility
Detailed Description of Changes in HALCON 6.1.4
Major New Features of HALCON 6.1
Detailed Description of Changes in HALCON 6.1.3
Detailed Description of Changes in HALCON 6.1.2
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.4. In contrast, all HALCON 6.0 licenses must be replaced or upgraded. Please contact your local distributor.

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

o HALCON Applications
    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, 6.1.1, 6.1.2, or 6.1.3 you can use them with HALCON 6.1.4 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, 6.1.1, 6.1.2, or 6.1.3 can be used with HALCON 6.1.4 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), ActivVisionTools 3.0 are based on HALCON 7.0.1.1 and the ActivVisionTools versions 1.0 to 2.0 are based on HALCON 6.0 (or HALCON 6.0.1); thus, by installing HALCON 6.1.4 you would disable such an ActivVisionTools installation. Therefore, the setup program of HALCON 6.1.4 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.4.
    • If it detects ActivVisionTools 2.0 it offers to replace the corresponding OCX with a new one that is compatible to HALCON 6.1.4. 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.4. If the setup program of HALCON 6.1.4 detects such an ActivVisionTools version it warns that by continuing to install HALCON 6.1.4 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'.
    • If it detects ActivVisionTools 3.0, it warns that by continuing to install HALCON 6.1.4 you will disable your ActivVisionTools installation. If you still want to use your ActivVisionTools installation you must also keep your HALCON 7.0.x installation and switch back to it as described in the manual 'Getting Started With HALCON'.


Detailed Description of Changes in HALCON 6.1.4

Detailed release notes can be obtained for the following topics:

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

HDevelop

o Functionality:
  • HDevelop no longer uses the obsolete library ctl3d32.dll under Windows.
  • In HDevelop the behavior of all functions for empty input tuples is now standardized. As result the operators return an empty tuple. The only exceptions are: mean, deviation, min, max, rand, gen_tuple_const, not, or, and, xor (they return an error).

o Bug Fixes:
  • The internal functions number and is_number sometimes returned wrong results if the input parameter contained strings. This problem has been fixed.
  • Creating and updating HDevelop's variable inspector dialogs was slow and caused a memory leak. These problems have been fixed. Furthermore, the dialogs are now updated in a way that the previously first item in the dialog's listbox remains the first item in the listbox if possible.
  • The HDevelop operator / now only returns an error if the numerator is exactly 0.
  • In some cases, HDevelop did not update its undo functionality correctly after adding an operator line to the current procedure body. This problem has been fixed.
  • HDevelop sometimes crashed when trying to display a tuple of objects of different kind or size in the active graphics window. This problem has been fixed.
  • HDevelop erroneously activated deactivated program lines after replacing variables using the dialog 'Replace Variables'. This problem has been fixed.
  • HDevelop sometimes exported break statements incorrectly to C. This problem has been fixed.

o Examples:
  • The new example programs multicam_split_cable.dev and multicam_stereo.dev in the directory hdevelop\Image\Framegrabber show the extended functionality of the HALCON MultiCam frame grabber interface, i.e., the use of different board topologies with Domino Alpha/Gamma boards and the use of StereoVision (image capture from 2 synchronized cameras exactly at the same time) with Domino Alpha/Alpha2 boards.
  • The new example program examples\hdevelop\Image\Framegrabber\file_directory.dev shows how to read all image files in a directory using the HALCON Virtual (File) frame grabber interface.

HALCON Library

o Speedup and Enhancements:
  • The operator expand_domain_gray is now faster when expanding the gray values beyond the image border.
  • The operator deviation_image is now faster by up to 40%.
  • The operators mult_image, div_image, sub_image, add_image, and scale_image are now substantially faster for uint2 images.

o Modified Operators:
  • The behavior of operators for empty input tuples is now standardized. As result the operators return an empty tuple. The only exceptions are: tuple_mean, tuple_deviation, tuple_min, tuple_max, tuple_rand, gen_tuple_const, tuple_not, tuple_or, tuple_and, tuple_xor (they return an error).
  • The operator create_bg_esti now is able to create an unlimited number of background estimators, i.e., the number of background estimators is only limited by the available memory.
  • The operators create_shape_model and create_scaled_shape_model now do not return the error 8510 (Number of shape model points too small) if more than four model points exist. This error occurred if the number of model points in the original resolution was between four and nine and the number of pyramid levels was determined automatically. Because in the documentation of create_shape_model the minimum number of model points is specified to be four, no error message is returned any longer.
  • The operator expand_domain_gray now supports images of pixel type int1, int4, and real.
  • The operator gen_contour_region_xld has a new mode 'border_holes', where in addition to the outer border of the regions all contours of the holes are returned.
  • The operators rank_image and dual_rank now allow mask sizes up to half the image width or height, whichever is smaller.
  • The operator read_image is now able to read top-down BMP files, in which the image rows are stored from top to bottom and not in the conventional Windows order from bottom to top. Furthermore, the operator is now able to read BMP files that have been saved with a BITMAPV4HEADER or BITMAPV5HEADER header structure.
  • The operator set_font now provides a mechanism to use fonts with a character set that is different from the default character set under Windows.
  • The operators write_ocr_trainf, write_ocr_trainf_image, append_ocr_trainf, and concat_ocr_trainf now support writing an OCR training file in binary file format. The new parameter 'ocr_trainf_version' of the operators set_system and get_system determines whether the old ASCII format or the new binary format is used for writing a training file. The operators read_ocr_trainf, read_ocr_trainf_select, read_ocr_trainf_names, trainf_ocr_class_box, and trainf_ocr_class_mlp read both file formats.
  • The operator write_tuple has been extended to write empty tuples. Furthermore, it now stores double values with maximum precision, i.e., with 16 significant digits instead of 6 significant digits.

o Bug Fixes:
  • The operators add_image, div_image, max_image, min_image, mult_image, sub_image, mean_n, principal_comp, rgb1_to_gray, depth_from_focus, bit_and, bit_or, and bit_xor sometimes did not return the correct result for multi-channel images or image arrays. This problem has been fixed.
  • The operators approx_chain and approx_chain_simple crashed in rare cases. This problem has been fixed.
  • The operators bit_and, bit_or and bit_xor crashed for input images of different type. Now, an appropriate error message is returned.
  • The operators change_radial_distortion_contours_xld sometimes created contours with invalid coordinates. This may have happened if contours with exceedingly large coordinates were used as input. Such points sometimes may not be undistorted (depending on the value of the radial distortion coefficient kappa, which must be positive for this to occur). change_radial_distortion_contours_xld now returns the error 8407 (Error in inverse projection) in this case.
  • The operators convol_gabor and convol_fft crashed if the Fourier-transformed input image and the Gabor filter were of different size. Now, an appropriate error message is returned.
  • The operator create_shape_model sometimes created a different model if it was called the first time. From then on, when recreating the model using the same input paramters, a different pose was obtained if the model was used in find_shape_model in contrast to the pose that was obtained when using the model that was created by the first call of create_shape_model. This especially happened if the model contained points at the border of the model image. This problem has been fixed.
  • The operator create_scaled_shape_model in rare cases created a floating point exception if the floating point coprocessor was configured in a non-standard manner. This problem has been fixed.
  • The operator deviation_image returned a run length error when processing images with domains of height 1. This problem has been fixed.
  • Some regions were not completly displayed if the margin of regions was displayed and the line style was set to dotted or dashed lines. This problem has been fixed.
  • The operators do_ocr_* no longer crash if the character region lies partially outside the image.
  • The operator dyn_threshold sometimes produced erroneous results for real images for Mode = 'equal' and Mode = 'not_equal'. Furthermore, it did not work correctly for Mode = 'not_equal' if the image type was byte, int2, uint2, or int4 and there were extended runs of pixels that had a gray value difference that corresponded exactly to the threshold. These problems have been fixed.
  • The operator edges_image did incorrect gray value rounding for some some values of parameter Alpha and with the value 'canny' for the parameter Filter. This problem has been fixed. In this context, info_edges now returns slightly corrected coefficients with value 'canny' for parameter Filter.
  • The operator edges_sub_pix sometimes missed edges that are within the hysteresis thresholds. This happened particularly frequently if the parameter Filter was set to 'sobel'. This problem has been fixed.
  • The operator energy_gabor ignored the second input image and, instead, used the first one. This problem has been fixed.
  • The operator expand_domain_gray crashed if a multi-channel image with different image types was passed as input image. This problem has been fixed.
  • The operator find_1d_bar_code sometimes did not filter out the correct extra elements when 'max_extra_elements' was set to a certain number and the bar code had the specified number of extra elements. This problem has been fixed.
  • The operators find_shape_model, find_shape_models, find_scaled_shape_model, and find_scaled_shape_models sometimes returned poses outside the given angle and scale range. This happened if the angle/scale range that was specified during model creation and the angle/scale range that was specified during the search did not overlap. This problem has been fixed.
  • The operator find_shape_model in very rare cases returned the error 3510 (Exceeding the maximum number of run lengths while automatical expansion). This could happen if the domain of the search image was extremely complex. This problem has been fixed.
  • The operators fit_circle_contour_xld, fit_ellipse_contour_xld, and fit_line_contour_xld sometimes crashed. This happened if the parameter Algorithm was set to 'atukey' (fit_circle_contour_xld), 'ftukey' or 'fptukey' (fit_ellipse_contour_xld), or 'tukey' or 'drop' (fit_line_contour_xld) and the parameter ClippingFactor was set to a small value. In this case, all points were classified as outliers. This problem has been fixed. Now, an appropriate error message is returned if all points are classified as outliers.
  • The operator fit_ellipse_contour_xld did not work if the points lay perfectly on an ellipse or on a straight line and if the selected algorithm was not 'voss'. Furthermore, it did not work if the contour represented a very small ellipse with a very large ratio of the major and the minor axis. These problems have been fixed.
  • The operators fit_surface_first_order and fit_surface_second_order sometimes returned the error 6002 (Memory partition on heap has been overwritten). Furthermore, the operators could crash when using Parallel HALCON. These problems have been fixed.
  • The operators fuzzy_measure_pos, fuzzy_measure_pairs, and fuzzy_measure_pairing sometimes crashed if no fuzzy function was set. This problem has been fixed.
  • The operator gen_circle sometimes returned an erroneous region at the image border. This happened if the row or the column coordinate of any pixel within the circle region was -0.5. As a consequence, the row within the circle region with row coordinate 0 was missing and the column with column coordinate 0 was duplicated. This error has been fixed.
  • The operator gen_contour_polygon_rounded_xld caused a memory error in rare cases. This problem has been fixed.
  • The operator gen_region_polygon sometimes produced incorrect results if some of the polygon points had negative coordinates and 'clip_region' was set to 'true' (the default state). This problem has been fixed.
  • The operator get_pair_funct_1d erroneously accepted float values as indices. Now, an error message is returned.
  • Gray morphology operations with structuring elements (i.e. gray_dilation, gray_erosion, gray_closing, gray_opening, gray_bothat, gray_tophat) sometimes overwrote memory partitions. This problem has been fixed.
  • The operators gray_closing_shape, gray_opening_shape, gray_erosion_shape, and gray_dilation_shape sometimes returned the error 3513 (Internal error: number of chords too big for num_max). This problem has been fixed.
  • The operator gray_projections sometimes returned wrong horizontal and vertical projection values. For example, it returned wrong horizontal projection values for image rows containing more than one run of the input region. Furthermore, it returned wrong values for the parameter VertProjection if the parameter Mode was set to 'rectangle' and a byte image was passed in Image. These problems have been fixed.
  • The operator hough_line_trans crashes in rare cases. This problem has been fixed.
  • The operators int1_to_dvf, optical_flow_match, real_to_complex, rgb3_to_gray, and select_grayvalues_from_channels did not return the correct result when the (first) input object contained identical input images. This problem has been fixed.
  • When passing mask sizes of 1, mean_image automatically used mask sizes of 3. mean_image now uses mask sizes of 1 instead. The documentation has been adapted accordingly.
  • The operator mean_image treated image borders incorrectly for 5x5 filter masks. This problem has been fixed.
  • The operator median_image crashed in rare cases for MaskType 'rectangle', Radius 2 and Margin 'mirrored'. This problem has been fixed.
  • The operator paint_xld sometimes returned a wrong border interpolation value if a contour point fell exactly on the row and column border of a pixel. This problem has been fixed.
  • The operator query_font now works correctly under Windows.
  • The operator read_image could not read 16-bit BMP files with an odd width correctly. The padding was not accounted for correctly. This problem has been fixed.
  • The operator read_image could not read certain GIF images. This problem has been fixed.
  • The operators read_ocr_trainf and read_ocr_trainf_select crashed if the train file contained more than 100,000 character samples. This problem has been fixed. Furthermore, read_ocr_trainf_names and read_ocr_trainf might have crashed when reading train files that contain more than 500 classes. Now these operators return the error message 'Too many classes'.
  • The operator read_tuple sometimes crashed if the file did not contain a valid tuple. This problem has been fixed.
  • The operator rotate_image did not work correctly if a rotation angle of 180 degrees was chosen and the domain of the input image was reduced. In this case the input image was rotated by 180 degrees but additionally its lines were wrongly shifted depending on the domain of the input image. This problem has been fixed.
  • The use of set_font in a window created with new_extern_window caused a resource leak. This problem has been fixed.
  • The call set_system('flush_graphic','true') was ignored when an empty object was displayed with disp_channel, disp_color, disp_image, disp_obj, and disp_region. This problem has been fixed.
  • The operator sim_caltab crashed on 64 bit systems if the input parameter ScaleFac was chosen very small. This problem has been fixed.
  • The operators smallest_circle and smallest_circle_xld sometimes returned erroneous values for Row, Column, and Radius. The corresponding circle was not enclosing the region/XLD completely. Accordingly, sometimes the result obtained from select_shape, select_shape_xld, and fill_up_shape when setting Features to 'outer_radius' and the result obtained from shape_trans and shape_trans_xld when setting Type to 'outer_circle' was erroneous. This problem has been fixed.
  • The operators smooth_image and diff_of_gauss sometimes returned an image with some incorrectly rounded gray values, which might also have caused a gray value overflow. With smooth_image this problem occured only with value 'gauss' for the parameter Filter. This problem has been fixed. In this context, info_smooth now returns slightly corrected coefficients with value 'gauss' for the parameter Filter.
  • The operator split_contours_xld crashed in extremely rare cases for Mode 'dominant'. This problem has been fixed.
  • The operator translate_measure sometimes deleted the fuzzy evaluation functions. This problem has been fixed.
  • The operators trans_from_rgb and trans_to_rgb did not return the correct result when the image object was identical for all three input images. This problem has been fixed.
  • The operators tuple_number and tuple_is_number in some cases returned wrong results if the input parameter contained strings. This problem has been fixed.
  • The operators watersheds, gray_inside, and depth_from_focus sometimes did not converge. In these cases the respective operator got stuck within an infinite loop. This problem has been fixed.

o Manual:
  • The documentation of the operators in the chapters Tools -> Affine-Transformations and Tools -> Calibration has been revised and extended.
  • The documentation of the operators learn_ndim_box and learn_ndim_norm now clarifies the differences between these two operators.
  • The documentation of select_grayvalues_from_channels has been extended to clarify the possible numbers of images in the input object parameter 2.
  • The documentations of select_matching_lines, hough_lines, and hough_lines_trans showed a wrong typical range of values for the parameters DistIn, DistOut, and Dist, respectively, i.e., -1.5707963 <= Dist <= 3.1415927. However, these parameters are equal to or greater than 0. The reference manual has been corrected accordingly.
  • The documentation of set_lut has been adapted. The sentence: "If there are less lines than gray values, the available information values are distributed over the whole interval calculating the missing values by interpolation." did not describe the behavior of the operator accurately. In fact, the gray values in the displayed image are set to the nearest value that is specified in the LUT file.
  • The documentation now explicitly describes that the domain of the image is ignored for measuring with the operators in the chapter Tools -> Measure, e.g., with measure_pos or measure_pairs.

HALCON/C++

o Bug Fixes:
  • The constructors of the HALCON/C++ class HFramegrabber internally swapped the values passed to the last two input parameters 'Port' and 'LineIn'. This problem has been fixed.
  • Calling the HALCON/C++ member function HTuple::Append() sometimes led to a crash if the input parameter was the tuple to be modified itself. This problem has been fixed.
  • The HALCON/C++ member functions HTuple::Number() and HTuple::IsNumber() in some cases returned wrong results in case the input parameter contained strings. This problem has been fixed.
  • The overloaded comparison operators == and != in the HALCON/C++ class HTuple sometimes returned wrong results. This problem has been fixed.

o Manual:
  • The "HALCON/C++ User's Manual" is available in a new edition. For the class Hobject, it incorrectly described a member function Clear(), which does not exist. Instead, the manual now describes the function Reset(). Furthermore, the example code for the class HRegion and the description of the operators << and >> in the member function list of the class HRegionArray have been corrected.

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 uEye USB 2.0 cameras from IDS.

o Modified Frame Grabber Interfaces:

Extension Package Interface

o Manual:
  • In the "Extension Package Programmer's Manual", the type definition of Hpar contained errors, which have been corrected.

Miscellaneous

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


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






Webmaster Last modified: Tue May 02 14:29:02 CEST 2006