MVTec Software GmbH
  Building Vision For Business


Release Notes for HALCON 7.0.2

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



Overview

This document contains the following information:

Compatibility
Detailed Description of Changes in HALCON 7.0.2
Major New Features of HALCON 7.0
Detailed Description of Changes in HALCON 7.0.1
Detailed Description of Changes in HALCON 7.0
Major New Features of HALCON 6.1
Detailed Desription of Changes in HALCON 6.1.2
Detailed Description of Changes in HALCON 6.1.1
Detailed Description of Changes in HALCON 6.1



Compatibility

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

o HALCON Library
    HALCON 7.0.2 is fully compatible with HALCON 7.0. Compared to HALCON 6.1, many extensions have been introduced. Thus, the HALCON 7.0.2 libraries are not compatible with HALCON 6.1 or earlier versions.

o HALCON Applications
    Applications (i.e., executables) developed with HALCON 7.0.1 can be used with HALCON 7.0.2, i.e., HALCON 7.0.2 is binary compatible with HALCON 7.0.1. In contrast, C++ programs developed with HALCON 7.0 that use methods of the class HMeasure must be re-compiled and linked, because of a bug fix in the operators set_fuzzy_measure and set_fuzzy_measure_norm_pair. This means that HALCON 7.0.2 is not completely binary compatible with HALCON 7.0.
    C or C++ programs developed with HALCON 6.1.x must be re-compiled. The incompatibility with HALCON 6.1 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.0 or 7.0.1, you can use them with HALCON 7.0.2 without further action. Frame grabber interfaces developed with HALCON 6.1.x are binary compatible with HALCON 7.0.2, interfaces developed with older versions must be re-generated.
    Please make sure that you no longer use the old PicPort, PicPortPro or PicProdigy interfaces that are part of older Leutron LV-SDS releases since these interfaces are not fully compatible with HALCON 7.0.2. Please use the new Leutron interface instead.

o Extension Packages
    Extension packages developed with HALCON 7.0 or 7.0.1 can be used with HALCON 7.0.2 without further action. Extension packages developed with HALCON 6.1.x must be re-generated.

o ActivVision Tools
    ActivVisionTools 3.0 is based on HALCON 7.0.1.1., which is a prerelease of HALCON 7.0.2. All older ActivVisionTools versions are based on HALCON 6.1.1 or below and can therefore not be used directly with HALCON 7.0.2. By installing HALCON 7.0.2, you would thus disable such an ActivVisionTools installation. Therefore, the setup program of HALCON 7.0.2 checks whether there is an ActivVisionTools installation on your computer.
    • If it detects ActivVisionTools 3.0, no further action is required, as this version is compatible to HALCON 7.0.2.
    • If it detects ActivVisionTools 2.2, it offers to replace the corresponding OCX with a new one that is compatible to HALCON 7.0.2. Note that you might encounter problems with existing ActivVisionTools applications since HALCON 7.0.2 also replaces the used frame grabber interfaces.
    • In contrast, ActivVisionTools 1.0 to 2.1 cannot be used with HALCON 7.0.2. If the setup program detects such an ActivVisionTools version, it warns you that by continuing to install HALCON 7.0.2 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". Note that if you only want to evaluate HALCON 7.0.2, you can minimize the switching effort by installing only the demo version.


Detailed Description of Changes in HALCON 7.0.2

Detailed release notes can be obtained for the following topics:

HDevelop
HALCON Library
HALCON/C
Frame Grabber Interfaces
Miscellaneous

HDevelop

o Functionality
  • In HDevelop, the working directory now always equals the directory that contains the current HDevelop program.
  • 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, and xor (they return an error).
  • HDevelop's undo and redo functionality has been extended. It now also applies to the adding and deleting of procedures and to the modification of a procedure's interface.
  • HDevelop's Visual Basic export now uses different prefixes for different variable classes. Furthermore, it now exports DoEvents with conditional compilation to Visual Basic. Accordingly, in the HDevelop Visual Basic template program examples\vb\HDevelopTemplate the conditional compilation statement USE_DO_EVENTS is set to 1 in the project properties dialog. Finally, HDevelop now exports a module name to Visual Basic. The module name is derived from the HDevelop program name with the same algorithm that is used to transform operator names.

o Bug Fixes
  • HDevelop automatically continued execution after loading a new program. This problem has been fixed.
  • HDevelop sometimes exported break statements incorrectly to C. This problem has been fixed.
  • In rare cases, HDevelop exported recursive assignments incorrectly to C. This problem has been fixed.
  • HDevelop exported recursive assignments incorrectly to C++ if the assigned expression was a string concatenation. This problem has been fixed.
  • The following parts of HDevelop's Visual Basic export contained bugs, which have been fixed: Export of array accesses, export of operator calls that use the same variable as input and output, and export of programs containing the internal HDevelop operator insert.

o Examples
  • The new example hdevelop\Image\Framegrabber\baumerfcam_flash.dev shows how to use the new parameters 'flash_mode' and 'flash_invert' to control the flash ability of the driver.

HALCON Library

o Speedup and Enhancement
  • The operators add_image, div_image, mult_image, scale_image, and sub_image are now substantially faster for uint2 images.
  • The operator deviation_image is now faster by up to 40%.
  • The operator expand_domain_gray is now faster when expanding the gray values beyond the image border.
  • The operator proj_match_points_ransac now typically finds more point matches, potentially leading to a more accurate determination of the projective transformation.
  • The operators train_class_mlp and train_ocr_class_mlp now use less memory for extremely large training sets (e.g., for OCR training sets that contain several thousands of samples).
  • 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.

o Modified Operators
  • The operators camera_calibration, binocular_calibration, and hand_eye_calibration now also enable users to explicitly exclude complementary values for the parameter EstimateParams.
  • The operator create_bg_esti is now able to create an unlimited number of background estimators, i.e., the number of background estimators is only limited by the available memory.
  • The operator expand_domain_gray now supports images of pixel type byte, 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 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, tuple_gen_const, tuple_not, tuple_or, tuple_and, and tuple_xor (they return an error).
  • The operator read_image is now able to read BMP files that have been saved with a BITMAPV4HEADER or BITMAPV5HEADER header structure.
  • The operator read_serial now returns immediately with the available characters if both timeouts are set to zero.
  • 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.
  • In the operator set_grayval, the tuple length of the input control parameters Row, Column, and Grayval was limited to 100,000 elements. This limitation has been removed.
  • The operator watersheds now returns connected watersheds, i.e., the output region Watersheds now contains a region that completely separates the basins so that they no longer touch each other. Furthermore, the resulting watersheds now are, at least approximately, in the neighborhood that has been set with set_system('neighborhood', ...).
  • The operator write_tuple 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 operator add_samples_image_class_mlp did not add all samples correctly. This problem has been fixed.
  • The operators approx_chain and approx_chain_simple crashed in rare cases on 64 bit systems with a floating exception. This problem has been fixed.
  • The operators binocular_disparity, binocular_distance, correlation_fft, and edges_color returned incorrect results when passing special image arrays. 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 operator change_radial_distortion_image crashed if the region of interest was larger than the image. This problem has been fixed.
  • The operator correlation_fft did not return the correct result when the first input object contained identical input images. This problem has been fixed.
  • The operator count_relation returned a wrong number of data base entries. This problem has been fixed.
  • The operator create_component_model got stuck within an infinite loop if only one component region was passed in ComponentRegions, AngleExtent was set to 0, and PregenerationComp was set to 'false'. This problem has been fixed.
  • 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 parameters, 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 operators create_shape_model and create_scaled_shape_model returned the HALCON error 6005 (Tmp-memory management: Null pointer while freeing) if a very large template was given and if the contrast was set to a small value. Now, the error 6001 (Not enough memory available) is returned.
  • The operators critical_points, local_max_sub_pix, local_min_sub_pix, and saddle_points had a memory leak. These problems have 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 completely 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_* could crash if feature 'cooc' was used for the training. Furthermore, they crashed if the character region lay partially outside the image. These problems have been fixed.
  • The operator dyn_threshold 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. The 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.
  • In some rare cases after using the training mode of the HALCON data code reader, the operator find_data_code_2d could not read some symbols. This problem has been fixed.
  • In rare cases, the operator find_data_code_2d on a QR Code model returned the error message 'Memory partition on heap has been overwritten'. Furthermore, there was a problem with small ROIs in the operator find_data_code_2d: In some cases the operator returned with the error 'convol: no filter object has got empty region'. These problems have 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 operator fit_circle_contour_xld crashed in rare cases on 64 bit systems with a floating exception. This problem has been fixed.
  • 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 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 gray_histo crashed with int4 images whose gray value range exceeded abs(INT4_MIN). This problem has been fixed.
  • The operator gray_inside did not converge in rare cases. This problem has been fixed.
  • The operator gray_projections returned wrong values for the parameter VertProjection if the parameter Mode was set to 'rectangle' and a byte image was passed in Image. This problem has been fixed.
  • The operator hough_line_trans crashed in rare cases. This problem has been fixed.
  • The operator info_framegrabber crashed if the output parameters were declared as char* and ValueList returned a NULL pointer. This problem has been fixed.
  • 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 operators min_max_gray and scale_image_max returned wrong results for int4 images whose gray value range exceeded abs(INT4_MIN). This problem has been fixed.
  • The feature 'moments_central' in the OCR classifiers was computed incorrectly. 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.
  • The operator proj_match_points_ransac used a wrong distance threshold internally: instead of DistanceThreshold, sqrt(DistanceThreshold) was used. The operator proj_match_points_ransac now uses DistanceThreshold correctly.
  • The operator query_font now works correctly under Windows.
  • The operator read_data_code_2d_model read the symbol size incorrectly from models written with write_data_code_2d_model. 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.
  • 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, or 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 operator split_contours_xld crashed in extremely rare cases for Mode 'dominant'. This problem has been fixed.
  • The operator trainf_ocr_class_mlp sometimes crashed if the classifier was not created with create_ocr_class_mlp, but instead was created by reading an existing classifier with read_ocr_class_mlp. 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 operator translate_measure sometimes deleted the fuzzy evaluation functions. This problem has been fixed.

o Manual
  • The documentation of correlation_fft and select_grayvalues_from_channels has been extended to clarify the possible numbers of images in the input object parameter 2.

HALCON/C

o Bug Fixes
  • The insertion of a single value into a tuple using the functions set_i, set_d, or set_s caused a memory leak if the tuple already contained a value of type string at the given input position. This problem has been fixed.

Frame Grabber Interfaces

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

o Modified Frame Grabber Interfaces
o Manual
  • The query types of info_framegrabber have been extended in such a way that all queries regarding the general frame grabber parameters now should provide explicit value lists. Thus, the Programmer's Manual on Frame Grabber Integration has been extended accordingly.

o Examples
  • The query types of info_framegrabber have been extended in such a way that all queries regarding the general frame grabber parameters now should provide explicit value lists. Thus, the frame grabber integration template examples\fg_integration\HFGTemplate.c has been extended accordingly.

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.96 (HASP for USB dongles) and 5.41 (Sentinel for Parallel Port dongles) to ensure maximum compatibility with current Windows operating systems.

o Installation
  • When installing additional components of a HALCON installation with the InstallShield setup program it could happen that already installed components were re-installed: If you selected an item in the left window of the component dialog (e.g., 'Examples') *all* sub-components of this component were installed including the ones that were already installed on your system. This problem has been fixed.
  • HALCON now includes description files for all standard calibration plates. Thus, the three files caltab_6mm.descr, caltab_2500um.descr, and caltab_650um.descr have been added to the %HALCONROOT%\calib directory.
  • By default, the HALCON setup program now sets the environment variable %HALCONIMAGES% to the value '%HALCONROOT%\images' instead of '%HALCONROOT%\images;%CDROM%\images' with %CDROM% the actual drive letter. On some systems the old setting leads to the effect that every call of read_image requires the CD in the drive until the installation CD is actually unmounted correctly.

o Documentation
  • Under Linux, it is now possible to use dongle-bound licenses with USB dongles. The Installation Guide has been updated accordingly.
  • In the Application Note on 3D Machine Vision, the section on how to obtain a suitable calibration plate has been revised.
  • The documentation of the operators affine_trans_contour_xld and affine_trans_polygon_xld describes now the underlying coordinate system.
  • The Application Note on Shape-Based Matching now describes that the XLD model contours can be queried with an operator and that they are saved along with the model. The example programs in examples\application_guide\shape_matching\hdevelop have been adapted accordingly.
  • The Application Note on Shape-Based Matching now explains how to use models that are not pregenerated and describes the advantages and disadvantages of this method.
  • The documentation of the operators find_shape_model and find_scaled_shape_model contains now example code, which demonstrates the usage of the operators.
  • The documentation of the operator select_gray now mentions that the maximum number of features is limited to 100.


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






Webmaster Last modified: Fri April 28 11:53:33 CEST 2006