MVTec Software GmbH
  Building Vision For Business


Release Notes for HALCON 6.0.1

This document provides the release notes for MVTec HALCON 6.0.1, i.e., revision 1 of HALCON 6.0, as released in July 2001. HALCON 6.0.1 is primarily a maintenance release which fixes all known bugs in HALCON 6.0; besides, it provides added functionality and speedups. HALCON 6.0.1 is compatible with 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.1 libraries are not compatible with HALCON 5.2 or earlier versions.

Please uninstall older versions prior to installing this new release. Optionally, you can install 6.0.1 and keep older versions of HALCON. In this case you have to make sure that the environment variable HALCONROOT points to version 6.0.1 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. All extension packages provided by MVTec for HALCON 5.2 are now included in HALCON 6.0.1.

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 have to 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.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.1

The intention of this revision is to fix bugs, and to improve the performance and handling of HALCON 6.0.

Detailed release notes can be obtained for the following topics:

HDevelop
HALCON Library
HALCON/C
HALCON/C++
HALCON/COM
Frame Grabber
Extension Package Interface
Supported Operating Systems
Miscellaneous

HDevelop

O Speedup and Enhancements:
  • HDevelop now has a mechanism to search for operators in the program text. The functionality is accessible via the menus Edit->Find operator... (Ctrl-F) and Edit->Find again (Ctrl-G).

O Bug Fixes:
  • A bug in the Region Info window under Alpha that led to crashes has been fixed.
  • The information about the possible types of a parameter in the operator window, which is displayed to the right of the combo box in which the value of the parameter can be selected, was sometimes clipped. This problem has been fixed.
  • Some operators could not be selected from the menu 'Operators'. These operators also displayed 'Halcon Operator Chapter' as the operator description in the status bar. This problem has been fixed.
  • The name of a parameter, which is displayed to the right of the combo box in which the value of the parameter can be selected, was not displayed if the parameter name is very long. This problem has been fixed.
  • Parallel HDevelop didn't parallelize any operators under Solaris, because it was linked with the wrong libraries. This has been fixed.
  • The operator check_par_hw_potential can now also be used safely from within Parallel HDevelop and no longer causes any crashes.
  • A bug in the FGHandle inspection window has been fixed. HDevelop could crash for certain frame grabbers that allow one to open the frame grabber although no camera is attached.
  • If a program line was inserted before a comment line and entered by pressing OK, or if an existing line before a comment line was edited and entered by pressing OK, not only the entered or edited line was executed. Instead, the program was executed as if Execute->Run had been selected from the menu. This problem has been fixed.
  • Breakpoints on lines following endif lines or else lines were ignored if the condition in the if clause evaluated to false and hence the body of the if clause was not executed. This problem has been fixed.
  • HDevelop crashed when an empty tuple was used in an if, ifelse, or while statement. This problem has been fixed.
  • HDevelop exported dev_clear_obj statements incorrectly in C++. The line dev_clear_obj (Image) was exported as Image.Clear(), whereas it should have been exported as Image.Reset(). This problem has been fixed.
  • HDevelop exported statements that contained the same variable in input and output control parameters incorrectly to C. This problem only occured if the input control parameter only contained the variable in its expression. If a more complex expression was used, the code was exported correctly. This problem has been fixed.
  • If a breakpoint was set on a program line between the line the program counter was pointing to and another program line further below in the program, then if the latter line was executed by pressing OK, the program runs until reaching the lower line without stopping at the breakpoint. This behavior has been modified so that the program stops at the breakpoint now.
  • HDevelop sometimes caused warnings because of unaligned accesses under DEC OSF1. This problem has been fixed.
  • HDevelop crashed if 'run' was executed and the breakpoint was set on the first line. This problem has been fixed.
  • HDevelop ignored the breakpoint when running a program using the popup-menu item 'Run to cursor' in the program window. This problem has been fixed.
  • If no graphics window was open and the menu entry Window->Tile was executed the operator and the program dialog were positioned correctly but the variable watch dialog was placed far "down". This problem has been fixed.
  • HDevelop crashed when trying to close a window through its popup menu. This problem has been fixed.
  • The HDevelop function is_number no longer returns an error if a real number is used as input.

HALCON Library

O Speedup and Enhancements:
  • The display of images has been speeded up by up to 45% on all Unix systems. As a consequence of this change, all programs that use the HALCON library must be linked with the X extension library, i.e., -lXext must be added to the linker command.
  • The operators gen_1d_bar_code_descr, find_1d_bar_code, find_1d_bar_code_region, decode_1d_bar_code, discrete_1d_bar_code, and get_1d_bar_code now support Code 128, UPC-A, and UPC-E bar codes. Furthermore, they support the 2 and 5 digit add-on codes for the EAN and UPC bar codes. Correspondingly, two new example programs have been added in examples/hdevelop/Applications/Barcode (Code128.dev, EAN13AddOn5.dev).
  • The rank and median filters are now 25% faster for all mask sizes.
  • The operator create_shape_model has been extended to determine a suitable value for the angle step size automatically if AngleStep is passed as 0.
  • The operator inspect_shape_model has been speeded up by about 20%.
  • The operator gen_image_surface_second_order is now 40% faster.
  • The operator derivate_gauss has been speeded up by about 20%. The operator lines_gauss has been speeded up by about 20%. The operator edges_sub_pix has been speeded up by about 15% when using the Canny filter.
  • The writing of gray value tiff images has been speeded up significantly under Linux.
  • The operator median_image is faster for rectangle masks of size 3x3 and 5x5 under Intel processors running Windows or Linux operating systems.
  • The operator create_ocr_class_box now uses 'pixel_invar' and 'ratio' as the features that are used when 'default' is passed in the parameter Features. This leads to much improved recognition rates in almost all cases.
  • HALCON can now handle calibration target description files with an arbitrary number of points. This change affects the following operators: caltab_points, disp_caltab, find_caltab, find_marks_and_pose, and sim_caltab.
  • The maximum number of connected components returned by the operator connection can now be specified via set_system('max_connection',Num). For Num = 0, all connected components are returned. This is the default behavior. An example program that shows this functionality has been added in examples/hdevelop/Regions/Transformations/max_connection.dev.

O Modified Operators:
  • The operator wait_seconds now can wait for fractions of a second on Unix systems. Previously, the waiting time was rounded to the nearest integer.
  • The operator corner_response was not invariant against rotations by +/- 90 degrees. This problem has been fixed by re-implementing the operator to use more accurate arithmetic operations. Therefore, the operator now needs more time to execute. corner_response also has been extended to handle int2 and real images. The documentation has been extended to reflect this change.
  • The operator set_colored(12) now uses colors that can be discriminated more easily.
  • The operators set_framegrabber_lut() and get_framegrabber_lut() now support the handling of frame grabber lookup tables with up to 16 bpp.
  • The operator read_image has been extended to read 16 and 32 bit bmp files.
  • The operator moments_any_xld has been extended to compute the unnormalized central moments if the parameter 'Mode' is set to 'unnormalized_central'.
  • The operators emphasize, illuminate, frei_dir, kirsch_dir, prewitt_dir, and robinson_dir have been extended to process int2 images.
  • The operators mean_image, mean_n, gauss_image, and trimmed_mean no longer truncate the result but instead round it.
  • The operator mean_image truncated to the nearest smaller value of absolute magnitude for int2 and int4 images. Now values are rounded to the next smaller value.
  • The operator lut_trans is now able to process int2 images. The LUT must be a tuple of length 256 <= length <= 65536. If the length of the LUT is <= 32768, the transformation is applied to the positive gray values only, i.e., the first element of the LUT specifies the new gray value for the gray value 0. If the LUT is longer than 32768, exactly 65536 must be passed. In this case, the positive and negative gray values are transformed. In this case, the first element indicates the new gray value for the gray value -32768 of the input image, while the last element of the tuple indicates the new gray value for the gray value 32767. In all cases, the gray values of values outside the range of the LUT are set to 0.
  • The operators add_image, sub_image, mult_image, div_image, max_image and min_image were modified regarding their ability to process input object parameters with different numbers of objects. The output object parameter always has the same number of objects as the first input object parameter. If the first and the second input object parameter contain the same number of objects, then the objects with the same index are processed together. If the second object input parameter contains exactly one object, this object is processed with every object of the first input object parameter. Otherwise an error is returned. In any case, the number of channels of two objects that have to be processed has to be equal, otherwise an error is returned.
  • The operator convert_image_type now rounds (instead of truncating) when converting real images to int1, int2, and int4 images.
  • An unlimited number of measure objects can now be created using the operators gen_measure_rectangle2 and gen_measure_arc.
  • The operators bit_and, bit_or, and bit_xor now intersect the domains of the input images before computing the output image instead of using the domain of the first image as the region of interest.
  • The operator read_sequence now returns an int4 image for pixel type 'short'.
  • The operators query_color, set_color, query_paint, and set_paint now use "gray" instead of "grey". set_color and set_paint also support the old parameters "grey".

O Bug Fixes:
  • If two very dissimilar characters were compared the operator do_ocv_single in rare cases could return the error 9205. Now a quality of 0 is returned and no error is generated.
  • A resource leak in new_extern_window has been fixed.
  • If set_comprise(..., 'image') was used on a window and an image of a type different from byte image (e.g., an int4 image) with a reduced domain, the displayed image was not correct. This problem has been fixed.
  • The operator edges_image could return angles of 180 degrees in the direction image. Now the angles all lie in the correct range from 0 to 179 degrees.
  • A bug in the operator invert_image which caused only byte images to be inverted has been fixed. invert_image now works for all image types listed in the documentation.
  • The accuracy of the row coordinates returned by the operator find_shape_model was lower than the accuracy of the column coordinates and the accuracy of the angles. This problem has been fixed. As a consequence, all shape models written with the operator write_shape_model must be generated and written anew.
  • If a wrong parameter was passed to append_ocr_trainf the train file was not closed. This bug has been fixed.
  • The operator get_2d_bar_code sometimes crashed when the barcode was very close to the image border. This problem has been fixed.
  • The operator find_neighbors sometimes returned the error 3513 (Internal error: number of chords too big for num_max). This problem has been fixed.
  • In some rare cases the operator fit_line_contour_xld produced wrong results under Linux. This happened if most of the contour points lie exactly on a straight line. This problem has been fixed.
  • If the operator laplace is used in Parallel HALCON, its result image shows no more distortions (dark rows), even if the operator is parallelized and used with large filter sizes (i.e. larger than 3).
  • For some shapes, the operator smallest_circle could return an error of up to 2 pixels in the radius of the circle. This problem has been fixed.
  • The operator gen_contour_region_xld could crash if the contour of the region had too many points. This problem has been fixed.
  • The operator find_neighbors returned the wrong result if the input regions contain the same number of regions. This problem has been fixed.
  • The operator fit_circle_contour_xld sometimes returned the wrong parameters if the contour contains outliers at the beginning or end of the contour and ClippingEndPoints was not set to a value greater than zero. The operator now returns the correct results if ClippingEndPoints is set to 0 and there are outliers at the beginning or end of the contour.
  • The operator gen_contours_skeleton_xld sometimes caused application errors under Windows NT. This problem has been fixed.
  • The operator read_image crashed when reading RLE8-compressed BMP files. Furthermore, it was unable to read XWD files in X11 format. Both problems have been fixed.
  • The operator moments_any_xld sometimes returned a wrong result for P=Q=1. This problem has been fixed.
  • A memory leak in the operator moments_any_xld in Parallel HALCON has been fixed.
  • The operator find_shape_model did not extract the row and column coordinates with subpixel accuracy if the angle extent of the model was 0, i.e., if the parameter AngleExtent was set to 0 in the call to create_shape_model. This problem has been fixed.
  • The operator disp_region sometimes returned an error if large zooming was used, i.e., if the part was set to a very small part of the window. This problem has been fixed.
  • The operator paint_region crashed if the region to be painted was empty. This problem has been fixed.
  • In rare cases, the operator vector_to_rigid returned a matrix in which the rotation was wrong by 180°. This problem has been fixed.
  • In rare cases, the operator find_shape_model returned the error 3513 (Internal error: number of chords too big for num_max). This problem has been fixed.
  • The operator clip_region returned an invalid region if Column2 > Column1. Now an empty region is returned.
  • The operator gen_image_gray_ramp sometimes created images with a black column at the right border of the image. This problem has been fixed.
  • The operators prewitt_amp and robinson_amp crashed when int2 images were used as input images. This problem has been fixed.
  • The operators sobel_amp and sobel_dir crashed for int2 images that used the complete range of values if FilterType = 'sum_sqrt'. This problem has been fixed.
  • The operator sobel_amp returned images in which the direction of the derivatives was reversed if FilterType = 'x' or FilterType = 'y'. Rising edges had 'negative' values, while falling edges had 'positive' values. This problem has been fixed. Furthermore, the result image was a byte image in which 127 was added to the true derivative. This was inconvenient for further processing of the images. The type of the result images for FilterType = 'x' and FilterType = 'y' is now int1 for input images of type byte and int2 for input images of type int2.
  • The operator gauss_image now returns results that are independent of adding constant offsets to the input image.
  • The operator spatial_relation crashed if the first input region was an empty object. This problem has been fixed.
  • The operator hysteresis_threshold sometimes returned the error 3113 (Too many relevant points (IPHysterese)) when the input image was not an edge image. This problem has been fixed.
  • The operator affine_trans_image sometimes returned erroneous pixels at the image border if int_zooming = false and the interpolation was set to constant or weighted. This problem has been fixed.
  • The operator segment_contours_xld now segments closed contours correctly for Mode = 'lines'. The first and last line segment of the returned contours are merged if the can be approximated by a line with the specified tolerance.
  • The operator deviation_image returned wrong pixel values near the image border for int2, int4, and real images. This problem has been fixed.
  • The operator write_template and read_template did not write and read all properties of the template correctly. If the template was first written to and afterwards read from file, image processing operators using the template (i.e., best_match, best_match_mg, best_match_pre_mg, best_match_rot, and best_match_rot_mg) could produce matching results that differed from the results that were returned before writing the template by at most ±0.5 pixels and ±0.5 angle steps. This problem has been fixed.
  • In rare cases, the operators inspect_shape_model and gen_gauss_pyramid returned the error 3502 (Run length row with negative length). This problem has been fixed.
  • The operator convol_image sometimes returned the error 3513 (Internal error: number of chords too big for num_max). This problem has been fixed.
  • The operator find_shape_model in rare cases did not discard overlapping matches although they overlapped by more than the maximum allowed overlap. This problem has been fixed.
  • The operator add_image no longer modifies the domain of the first input image.
  • The operator select_shape now returns the correct regions when using the feature 'rect2_len2'.
  • The operator set_origin_pose translated the origin in the wrong direction. This problem has been fixed. The corresponding documentation and the example program 3d-coordinates.dev have been changed accordingly.
  • A bug has been fixed which could crash Parallel HALCON in very rare cases if it parallelizes an operator on the channel level and if this operator exits with an error.
  • The operator edges_sub_pix did not support the Shen filter as specified in its documentation. It returned the error H_MSG_FAIL (5) when the parameter Filter was set to 'shen' or 'mshen'. This problem has been fixed.
  • The operator best_match_mg did not return an appropriate error message when being called with a wrong string-value of the control parameter WhichLevels. Instead it behaved as if WhichLevels was set to 'original'. Furthermore, it sometimes returned the HALCON error message 3513 when called with control parameter WhichLevels set to 0 or 'original'. Both problems have been fixed.
  • The operators fit_circle_contour_xld and fit_ellipse_contour_xld caused memory leaks. This problem has been fixed.
  • The operator find_caltab sometimes returned the error 3513 (Internal error: number of chords too big for num_max). This problem has been fixed.
  • The operator find_marks_and_pose no longer crashes when using non-square calibration targets. Furthermore, it now handles calibration targets in which the rectangular grid of marks is placed in an arbitrary position (instead of being centered around the origin) correctly.
  • The operator create_shape_model sometimes added erroneous points to the model if the template was too close to the image border. This sometimes led to models not being found in the image although they were present. Furthermore, it sometimes created inconsistent models when the model points extend to the border of the region of interest. Both problems have been fixed.
  • The operator read_sequence produced wrong output images for pixel type 'long' and 'signed_short'. This problem has been fixed.
  • The operator decode_1d_bar_code sometimes failed to decode valid EAN 13 codes. This problem has been fixed.
  • The parameter values 'bottom' and 'top' now are accepted by the operator merge_regions_line_scan as specified in the documentation.
  • The operator segment_contours_xld returned output contours that contained multiple equal points in case the input contour was closed and one of the output contours contained the end/start point of the input contour. This problem has been fixed.
  • The operators regiongrowing and regiongrowing_mean returned a wrong result on Alpha machines. This problem has been fixed.
  • The operator smallest_rectangle2 sometimes returned values that were too large by 0.5 pixels. This problem has been fixed.
  • The operators moments_any_xld, select_region_spatial, spatial_relation, and fit_line_contour_xld returned the error 6001 (not enough memory available) on Alpha machines. This problem has been fixed.
  • The operator find_neighbors returned the error 1502 (Wrong number of values of object parameter: 2) on Alpha machines. This problem has been fixed.
  • The operator gray_histo crashed if the region in 'Regions' is bigger than the image. This problem has been fixed.
  • The operator do_ocv_simple did not parallelize correctly on object tuples. This problem has been fixed.
  • The operator best_match did not concatenate the result tuples in a parallelized operation. This problem has been fixed.

O Manual:
  • The manual 'Getting Started' is now available in its 6th edition. It contains more information about how to install HALCON and the license file when using floating licenses and about the customization of the port number of the license server daemon. Furthermore, the section 'Troubleshooting' now offers help if licensing via a network board fails under Windows 2000. Finally, the manual was adapted to the changes regarding the supported operating systems.
  • The documentation of the operators set_window_dc and new_extern_window has been extended to explain that if new_extern_window is used, set_window_dc(windowID,&l) must be called, where l is a long set to zero (long l=0;).
  • In the reference manual examples for the operator texture_laws, class_2dim has been replaced by class_2dim_sup.
  • The documentation of create_ocr_class_box has been extended to give more information about the parameter Interpolation. Furthermore, the documentation of the operators char_threshold, rank_image, and scale_image has been improved.

O Miscellaneous:
  • It is now possible to set a bold font under Windows NT.

HALCON/C

O Manual:

HALCON/C++

O Bug Fixes:
  • A bug in the Reset() member function of the classes HImageArray, HRegionArray, HXLDContArray, HXLDExtParaArray, HXLDModParaArray, HXLDParaArray, and HXLDPolyArray has been fixed.
  • Exceptions thrown in a user-defined HALCON/C++ exception handler that has been installed with HException::InstallHHandler() could not be caught by the application under Linux. This problem has been fixed.
  • The operators HRegion::TestRegionPoint and HRegion::TestEqualRegion and their counterparts in the class HRegionArray always caused an exception if the test condition evaluated to false (i.e., if the point does not lie within the region or the regions are not equal, respectively). These operators now return FALSE and no longer cause an exception. As a consequence of this change, extension packages that were generated for Halcon 6.0 must be generated anew.
  • A memory leak in the class HPixVal has been fixed.
  • RunLength::RunLength() in HRLRegion.h caused a warning under Linux. This problem has been fixed.
  • HByteImage, HInt1Image, HInt2Image, HInt4Image, and HFloatImage sometimes returned the wrong type in the member function PixType(). This problem has been fixed.

O Examples:
  • The example program examples/mfc/Matching has been added. The program uses MFC and HALCON/C++ and shows the use of the operators open_window and set_window_extents in an application in which the main window can be resized by the user.
  • The example program examples/mfc/MatchingExtWin has been added. The program uses MFC and HALCON/C++ and shows the use of new_extern_window and set_window_dc to display HALCON objects in an MFC window.

O Manual:

HALCON/COM

O Bug Fixes:
  • A memory leak in all classes that use a handle internally (HBgEstiX, HClassBoxX, HFeatureSetX, HFileX, HFramegrabberX, HFunction1dX, HGnuplotX, HHomMat2dX, HHomMat3dX, HMeasureX, HOcrX, HOcvX, HSerialX, HShapeModelX, HSocketX, HTemplateX, HWindowX) has been fixed.

O Examples:
  • The example program examples/mfc/MatchingCOM has been added. The program shows how to use HALCON/COM in Visual C++ in an MFC application.

O Manual:
  • The 'HALCON/COM User's Manual' is available in its 3rd edition. The section 'Limitations' now also warns that HALCON/COM and HALCON/C++ cannot be used in the same application.

Frame Grabber

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

O New Frame Grabber Interfaces:
  • HALCON now also includes an interface to the C-Cam Technologies CMOS imaging sensors CCi4.
  • HALCON now also includes an interface to the Euresys frame grabber boards Multi.
  • For detailed information about the new interfaces, please consult the HTML description of the frame grabber interfaces.

O Modified Frame Grabber Interfaces:
  • The HALCON INSPECTA2 interface now supports also the Mikrotron INSPECTA3 and INSPECTA4 frame grabber boards. To reflect this the HALCON interface has been renamed from 'INSPECTA2' to 'INSPECTA'.
  • The following HALCON frame grabber interfaces have been revised: BitFlow, DT315x, PCEye, IDS, Pxd, DFG-LC, DFG-BW1, MatrixVision, INSPECTA, Opteon, Fire-i, File.
  • For detailed information about the changes, please consult the HTML description of the frame grabber interfaces.

O Miscellaneous:
  • The source code of the interface template CIOFGTemplate.c changed due to minor corrections. The "Frame Grabber Integration Programmer's Manual" has been adapted accordingly.

Extension Package Interface

O Manual:
  • The 'Extension Package Programmer's Manual' is available in its 6th edition. The section 'Extended Operator Description' now contains additional information about the slot 'parallelization'. The section about 'The HALCON Compiler hcomp' now also explains how to create interactive PDF reference manuals. Furthermore, it was adapted to the changes regarding the supported operating systems.

Supported Operating Systems

O Tru64 UNIX (DIGITAL UNIX):
    HALCON 6.0.1 has been compiled for Compaq Tru64 UNIX 5.1 (formerly called DIGITAL UNIX). The directory names have been changed to reflect this. Please set the environment variable ARCHITECTURE to alpha-compaq-osf5.1 and update the environment variables PATH and LD_LIBRARY_PATH accordingly.

O HP-UX:
    From this release on, HP-UX is no longer supported.

O Philips TriMedia:
    HALCON 6.0.1 includes a version for the use on Philips TriMedia DSPs. For more details please refer to the 'HALCON/C User's Manual'.

Miscellaneous

O Manuals:
  • The PDF versions of the Reference Manuals now contain hyperlinks similarly to the HTML version. The LaTeX style file halcon_reference.sty used to format the LaTeX version of reference manuals has been extended to provide this functionality.
  • In the PDF versions of the User's Manuals, references to sections, figures, or pages (e.g., in the index) now also form hyperlinks; furthermore, references to HALCON operators form a hyperlink to the corresponding entry in the Reference Manual (HDevelop syntax). Note, that these 'external' hyperlinks only work for the manuals which reside in the folder where you installed HALCON!

O Example Images:
  • The images in images/barcode/code128 and images/barcode/ean13addon5 were added.


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






Webmaster Last modified: Tue May 02 11:40:26 CEST 2006