MVTec Software GmbH
  Building Vision For Business


Release Notes for HALCON 6.1

This document provides the release notes for MVTec HALCON 6.1, as released in June 2002. HALCON 6.1 is a major new release.


Overview

This document contains the following information:

Compatibility
Major New Features of HALCON 6.1
Detailed Description of Changes in HALCON 6.1 (relative to HALCON 6.0.2)
Major New Features of HALCON 6.0
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
    All HALCON 6.0 license keys must be replaced or upgraded. Please contact your local distributor.

O HALCON Library
    Compared to HALCON 6.0, many extensions have been introduced. Thus, the HALCON 6.1 libraries are not compatible with HALCON 6.0 or earlier versions.

O HALCON Applications
    Please re-compile all C or C++ programs developed with HALCON 6.0.x.
    The incompatibility with HALCON 6.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
    Please re-generate your own frame grabber interfaces developed with HALCON 6.0.x.

O Extension Packages
    Please re-generate your own extension packages developed with HALCON 6.0.x.

O ActivVisionTools
    The ActivVisionTools versions 1.0 to 2.0 are all based on HALCON 6.0 (or HALCON 6.0.1); thus, by installing HALCON 6.1 you would disable your ActivVisionTools installation! Therefore, the setup program of HALCON 6.1 checks whether there is an ActivVisionTools installation on your computer.
    • If it detects ActivVisionTools 2.0, it offers to replace the corresponding OCX with a new one which is compatible to HALCON 6.1. 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.0, ActivVisionTools 1.0 to 1.3 cannot be used together with HALCON 6.1. If the setup program of HALCON 6.1 detects such an ActivVisionTools version, it therefore warns that by continuing to install HALCON 6.1 you will disable your ActivVisionTools installation.
      If you still want to use your ActivVisionTools installation, you must also keep your old HALCON 6.0.x installation and switch back to it as described in the manual 'Getting Started With HALCON'. Note that if you only want to evaluate HALCON 6.1, you can minimize the switching effort by installing only the demo version.


Major New Features of HALCON 6.1

General Features

O Extended Functionality
  • HALCON's powerful shape-based matching has been further extended: Objects can now be recognized even under different scaling. Furthermore, different objects can now be found in a single call, thereby reducing the preprocessing time and improving the performance significantly. Other new operators facilitate the use of the shape-based matching, e.g., by allowing to modify the reference point of a model. Besides, synthetical models can now be created more easily and flexibly using new operators described here.
    Last but not least, the position, scaling, and angle of matched objects can now determined with an up to ten times higher accuracy.
  • Using the new operators for image rectification, images can be transformed into a world plane efficiently. This is a useful preprocessing step for operations relying on the fact that the objects must not be distorted by a perspective transformation. Notable examples are OCR applications, in which the camera cannot be mounted perpendicular to the planar surface on which the characters are printed. Another application where the rectification of an image is useful is shape-based matching, which can thus be made robust to a constant perspective transformation, which can be determined in advance by using HALCON's powerful 3D calibration.
  • In some applications, defect detection is performed by comparing the image of the object to examine to a reference image of a known "good" object, while tolerating some variations in the objects before marking them as defect. One such application is mark quality inspection. If, for example, different colors are printed in different processing steps, the marks printed in different colors usually will move with respect to each other. While small movements may be permissible, large movements, misprints, extra ink, and other kinds of defects will have to be detected. For such applications, HALCON 6.1 provides a set of new operators implementing this so-called variation model.
  • HALCON 6.1 introduces a new measure tool that uses fuzzy member functions to evaluate and select edges to be extracted from an image. This is very useful when extracting edges of objects where it is not possible to determine a fixed threshold value because of the difficult optical appearance or illumination of the object.
  • Other new operators provide

O New Image Type
  • HALCON 6.1 introduces the new image data type "uint2" to support applications that need to evaluate the full 16 bits per pixel resolution. About 160 HALCON operators have been optimized for this type. This data type is the new standard data type for 16 bit images. New applications should use this data type instead of the previous data type "int2".

O Enhanced Parallelization
  • The performance of Parallel HALCON has been further improved: First, by significantly reducing the parallelization overhead. As a result, the parallelization speedup increased up to 18% for some operators. Second, over 15 additional operators can now be automatically processed in parallel, including often used operators like threshold, median_separate, or dual_rank. Third, the parallelization at program level has been further facilitated by allowing the graphics operators to be run non-exclusively.

HDevelop

O New Inspection Tool: Region Feature Histogram
  • HDevelop's inspection tools are now completed by a powerful tool for examining the histogram of region features, such as area, moments, convexity, circularity, roundness, etc. Altogether, you can inspect 78 different features.
    The region feature histogram not only displays the distribution of feature values over all regions, but also assists you in finding suitable segmentation parameters: You can interactively specify a minimum and a maximum threshold for the feature values; the regions fulfilling this condition are automatically highlighted in HDevelop's graphics window. Thus, you can quickly determine those values which select the desired regions and then use them as parameters for the operators select_shape and select_gray. This is typically the first step in blob analysis applications.

HMatchIt

  • HMatchIt is a front-end to HALCON's powerful shape-based matching, which lets you locate objects with subpixel accuracy at high speed - even when they appear rotated, scaled, partly occluded, or under changing illumination. In its new, further improved version 2.0, it is now integral part of the HALCON software.

Documentation

O Application Guide
  • With HALCON 6.1, MVTec starts a new form of documenting HALCON: the Application Guide. In contrast to the existing HALCON manuals, the Application Guide is written from the point of view of developing machine vision applications: Instead of describing what the various HALCON operators do, the Application Guide shows how to use them to solve machine vision tasks.
    The Application Guide consists of multiple, independent documents called Application Notes, each covering a specific topic. HALCON 6.1 starts with two Application Notes:
    • Shape-Based Matching
      This Application Note explains how to apply HALCON's powerful shape-based matching to find objects in real-time and determine their position with subpixel accuracy. Further topics are how to improve the matching performance, use synthetical models, and handle complex model ROIs.
    • Image Acquisition
      This Application Note shows how to connect to simple and complex configurations of frame grabbers and cameras and how to acquire images in various timing modes, with the emphasis on real-time image acquisition.

O HALCON/C++ Manual
  • The HALCON/C++ User's Manual has been extended significantly: Besides including the new handle classes, it now also describes the basics of the HALCON/C++ interface in more detail, e.g., how to call operators or realize error handling in the procedural and in the object-oriented way, or how to combine procedural and object-oriented code.

O HALCON Frame Grabber Integration Programmer's Manual
  • The HALCON Frame Grabber Integration Programmer's Manual has been extended slightly: Two sections about parameter naming conventions and the use of frame grabber interfaces in ActivVisionToools have been added. Furthermore, a paragraph about the use of camera configuration files has been introduced and the list of currently supported frame grabbers has been updated.

Detailed Description of Changes in HALCON 6.1

Detailed release notes can be obtained for the following topics:

HDevelop
HALCON Library
HALCON/C
HALCON/C++
HALCON/COM
Frame Grabber Interfaces
Extension Package Interface
HMatchIt
Miscellaneous
Please note that these release notes are relative to HALCON 6.0.2. If you are upgrading from earlier versions, you should also consult the release notes for earlier HALCON versions.

HDevelop

O Speedup and Enhancements:
  • HDevelop now has a region feature histogram window in which the feature histogram of the region and gray value features available in select_shape and select_gray, respectively, are selectable for display.
  • HDevelop now has a menu entry Help->HALCON News (WWW). This menu entry opens a browser with a page from MVTec's WWW server that displays customized software news about the HALCON version that is installed on the user's computer.

O Functionality:
  • HDevelop now creates the icons in the Variable Watch window for XLD objects (contours and polygons) in a manner so that the data is easier to see in the icons. The same algorithm as the one that is used for regions is used, i.e., the smallest enclosing rectangle of the XLD contours or polygons is used to set an appropriate visible part.
  • The height of HDevelop dialogs now is adapted according to the height of the caption area under Windows.

O Examples:
O Bug Fixes:
  • The status bar displayed a German text when operators from the Suggestions menu were selected. The status bar now displays the operator's short description as in the Opertors menu.
  • HDevelop's dialog 'File->Read Image' did not suggest the correct variable names for the input image. This problem has been fixed.
  • HDevelop's status bar and tool bar buttons did not observe the selected color scheme under Windows NT/2000/XP. The status bar and the background color of the tool bar bitmaps were always light gray. These problems have been fixed.
  • HDevelop exported the internal function sort_index incorrectly to C. This problem has been fixed.
  • HDevelop sometimes exported empty declarations to C, C++, and Visual Basic if the special variable _ was used. This problem has been fixed.
  • In HDevelop, the C++ export of nested tuple expressions like TupleA[TupleB[i]-1] sometimes was wrong. This problem has been fixed.
  • HDevelop very rarely crashed if a dialog (e.g., Zoom) was open and the user moved the mouse cursor over the Variable Watch window. This problem has been fixed.

O Manual:
  • The HDevelop User's Manual is now available in its 6th edition. The new inspection tool calculating region feature histograms is presented in the chapter "Graphical User Interface". Furthermore, the manual now describes how to find operators and search and replace variable names.

HALCON Library

O Speedup and Enhancements:
  • The operators find_shape_model and find_scaled_shape_model have been extended with a mode in which the pose is determined with subpixel accuracy by using a least-squares adjustment. While the current mode, which uses interpolation, is accurate enough for most applications, even higher accuracy (required by some applications) can be achieved with this new mode. Note that the least-squares adjustment adds some runtime to the matching. To select the new subpixel mode, the parameter SubPixel in find_shape_model and find_scaled_shape_model supports three new values: 'least_squares', 'least_squares_high', and 'least_squares_very_high', which enable users to specify the tradeoff between speed and accuracy. Furthermore, the old modes 'false' and 'true' for SubPixel have been renamed to 'none' and 'interpolation', respectively (the old values are still supported for backwards compatibility, of course).
    The internal data of the shape model had to be extended to enable the least-squares adjustment. Therefore, the operators read_shape_model and write_shape_model (and consequently the file format of the shape model files) had to be changed. If shape models are read with read_shape_model, to make use of the new subpixel mode, the shape models must be regenerated and written anew using write_shape_model. Older shape model files can still be read, of course. However, the new subpixel mode will not be available and will silently be changed to 'interpolation' to achieve the same behavior of previous HALCON versions.
    Furthermore, the shape-based matching now has a mode in which the search can be terminated on a higher pyramid level than the lowest pyramid level. This enables a speedup of the search (in general at the expense of a reduced accuracy for the pose of the objects). This mode is selected by specifying two values for NumLevels in find_shape_model and find_scaled_shape_model.
  • The parallelization overhead of Parallel HALCON has been reduced so that its speedup for operators parallelized on the domain level now is up to 15% better. Moreover, the overhead of reentrancy also has been reduced in order to improve Parallel HALCON's performance for operators that cannot be parallelized.
    Furthermore, Parallel HALCON now can also parallelize operators that (solely) output regions (e.g., threshold or dyn_threshold) on domain level.
    The graphics operators now run non-exclusively in Parallel HALCON.
  • HALCON has a new image data type for unsigned 16 bit images (uint2). The following operators support this new image data type: disp_obj, disp_image, disp_channel, disp_rgb, convert_image_type, copy_image, count_channels, change_format, gen_image_const, gen_image_extern, gen_image1, gen_image3, gen_image_proto, gen_gauss_pyramid, min_max_gray, gray_histo, area_center_gray, elliptic_axis_gray, intensity, select_gray, get_grayval, set_grayval, get_image_pointer1, get_image_pointer3, get_image_pointer1_rect, get_image_time, derivate_gauss, mean_image, gnuplot_plot_image, fft_generic, lines_facet, lines_gauss, principal_comp, simulate_motion, simulate_defocus, wiener_filter, wiener_filter_ni, threshold, dyn_threshold, threshold_sub_pix, fast_threshold, hysteresis_threshold, nonmax_suppression_amp, nonmax_suppression_dir, tile_images_offset, tile_images, tile_channels, compose2, compose3, compose4, compose5, compose6, compose7, decompose2, decompose3, decompose4, decompose5, decompose6, decompose7, add_channels, image_to_channels, reduce_domain, change_domain, crop_domain, crop_domain_rel, crop_part, crop_rectangle1, full_domain, rectangle1_domain, get_domain, select_obj, copy_obj, concat_obj, clear_obj, count_obj, get_obj_class, test_equal_obj, scale_image, scale_image_max, abs_image, sub_image, add_image, div_image, mult_image, min_image, max_image, invert_image, bit_not, bit_and, bit_or, bit_xor, bit_lshift, bit_rshift, bit_mask, bit_slice, emphasize, illuminate, frei_dir, frei_amp, prewitt_dir, prewitt_amp, kirsch_dir, kirsch_amp, robinson_dir, robinson_amp, sobel_dir, sobel_amp, edges_image, edges_sub_pix, roberts, laplace, laplace_of_gauss, gauss_image, affine_trans_image, affine_trans_image_size, mirror_image, polar_trans_image, rotate_image, zoom_image_factor, zoom_image_scale, bandpass_image, convol_image, lut_trans, expand_domain_gray, monotony, mean_n, texture_laws, deviation_image, smooth_image, local_max, plateaus, plateaus_center, paint_gray, paint_region, receive_image, send_image, read_image, write_image, read_sequence, measure_pos, measure_pairs, measure_projection, measure_thresh, gray_projections, find_caltab, find_marks_and_pose, change_radial_distortion_image, gen_image_surface_first_order, gen_image_surface_second_order, fit_surface_first_order, fit_surface_second_order, rank_image, dual_rank, median_image, median_separate, midrange_image, trimmed_mean, find_1d_bar_code, find_1d_bar_code_region, get_1d_bar_code.
  • The operators rank_image, dual_rank, midrange_image, median_separate, trimmed_mean, and median_image now support int2, uint2, int4, and real images; the operator convol_image now supports int2 images. The semantics of the parameter Margin have been changed so that constant border gray values can be entered correctly for these newly supported image types. The value of -3 for byte images has been replaced with the string 'mirrored', the value of -2 with the string 'cyclic', and the value of -1 with 'continued'. For byte images, the above three negative integer values are still supported for backwards compatibility reasons.
    The default type of the parameter Margin has been changed to string. This causes a source code incompatibility to older HALCON versions in HALCON/C. Here, calls to rank_image with values -1, -2, or -3 for Margin should be replaced with calls using the equivalent strings. Calls with values between 0 and 255 for Margin must be replaced with calls to the corresponding tuple mode operator, e.g., T_rank_image instead of rank_image.

O New Operators:
  • HALCON's shape-based matching has been extended by a number of new operators: The operators create_scaled_shape_model and find_scaled_shape_model provide functionality to determine the scale of objects using shape-based matching. These operators were part of the HALCON package 'matchscale' released in September 2001. How to use them is shown in the new example program examples/hdevelop/Tools/Matching/find_scaled_shape_model.dev.
    The new operators find_shape_models and find_scaled_shape_models can be used to find instances of multiple models in one call. Using the new operators is considerably faster than calling find_shape_model or find_scaled_shape_model multiple times. The new example program examples/hdevelop/Applications/FA/pm_multiple_models.dev shows how to use find_shape_models; the new example program examples/hdevelop/Applications/FA/print_check_single_chars.dev shows how to use find_shape_models in combination with HALCON's variation model operators to perform a print check application where each character needs to be checked separately.
    The new operator get_shape_model_params can be used to read out the defining parameters of the shape model: number of pyramid levels, angle range and angle step size, scale range and scale step size, metric, and minimum contrast.
    The new operator HALCON set_shape_model_origin enables users to set the origin (reference point) of the shape model. The origin is set relative to the standard origin (i.e., the center of gravity of the domain of the model image). Hence, setting the origin to (-40,-20) moves the origin to the upper left part of the model. Additionally, HALCON has been extended with the operator get_shape_model_origin, which enables users to read out the current origin of the shape model.
    The new operator clear_all_shape_models frees the memory of all shape models.
  • HALCON's measure tool now supports the selection of edges based on fuzzy membership functions via six new operators: fuzzy_measure_pos, fuzzy_measure_pairs, fuzzy_measure_pairing, set_fuzzy_measure, set_fuzzy_measure_norm_pair, reset_fuzzy_measure. How to use them is shown in the new example examples/hdevelop/Applications/Measure/fuzzy_measure_pin.dev.
  • The four new operators gray_dilation_shape, gray_erosion_shape, gray_opening_shape and gray_closing_shape provide fast gray value morphology with a restricted set of structuring elements. These operators were part of the HALCON package 'graymorph' released in September 2001. How to use them is shown in the new example examples/hdevelop/Morphology/Gray-Values/pcb-inspection.dev.
  • There are four new operators for the rectification of images: gen_image_to_world_plane_map and gen_radial_distortion_map generate maps for the use in map_image; image_to_world_plane rectifies images based on the internal camera parameters and the pose of a world plane (similar to contour_to_world_plane_xld and image_points_to_world_plane). These operators were part of the HALCON package 'rectify' released in October 2001. How to use them is shown in the new example programs examples/hdevelop/Tools/Calibration/image_to_world_plane.dev, examples/hdevelop/Tools/Calibration/map_image.dev, and examples/hdevelop/Applications/FA/pm_world_plane.dev; the latter shows how to use image rectification together with shape-based matching.
  • Nine new operators allow to compare images to a reference image, while taking the variability of objects into account: create_variation_model, clear_variation_model, clear_all_variation_models, train_variation_model, prepare_variation_model, compare_variation_model, get_variation_model, write_variation_model, and read_variation_model. These operators were part of the HALCON package 'variation' released in November 2001. How to use them is shown in the new example examples/hdevelop/Applications/FA/print_check.dev.
  • Twelve new operators enable users to calculate frequently used shape features of XLD contours and polygons similarly to region features (circularity_xld, compactness_xld, convexity_xld, diameter_xld, eccentricity_xld, elliptic_axis_xld, orientation_xld, smallest_circle_xld , smallest_rectangle1_xld, smallest_rectangle2_xld), to select XLD contours based on these and previously available shape features (select_shape_xld), and to transform XLD contours (shape_trans_xld), e.g., into their convex hull. These operators were part of the HALCON package 'xldfeat' released in December 2001. The new example program examples/hdevelop/XLD/Features/shape_trans_xld.dev shows how to use shape_trans_xld; examples/hdevelop/XLD/Features/select_shape_xld.dev shows how to use select_shape_xld.
  • The operator cfa_to_rgb has been added. It converts color filter array images (i.e., Bayer pattern images) to RGB images. The new example program examples/hdevelop/Filter/Color/cfa_to_rgb.dev demonstrates how to use the operator.
  • The operators hough_lines_dir and hough_line_trans_dir have been added, which provide a faster and more selective Hough transformation for lines by using the gradient direction returned by edge filters. The new example program examples/hdevelop/Tools/Hough/hough_lines_dir.dev demonstrates how to use the operator hough_lines_dir.
  • HALCON has a new operator affine_transform_image_size that enables users to specify the desired output image size. This is useful when transforming and cropping images at the same time. The new example programs examples/hdevelop/Filter/Affine-Transformations/affine_transform_image_size.dev and examples/hdevelop/Applications/FA/print_check_single_chars.dev show how to use this operator.
  • The operators set_socket_timeout and get_socket_timeout have been added. They provide a timeout mechanism for all socket operators that receive data (receive_image, receive_region, receive_tuple, and receive_xld) and for socket_accept_connect.
  • The operator translate_measure has been added. It allows to translate a measure object efficiently without having to recreate it with close_measure and gen_measure_rectangle2 or gen_measure_arc. How to use this operator is shown in the new example program examples/application_guide/shape_matching/align_measurements.dev.
    Furthermore, the new operator close_all_measures frees the memory of all measure objects.
  • The operator clear_all_templates has been added. It frees the memory of all templates.
  • HALCON now has an operator gen_image_surface_first_order. Its functionality is similar to gen_image_gray_ramp. In addition, the type of the output image can be specified (similar to gen_image_surface_second_order).
  • HALCON has a new operator paint_xld that paints a filled XLD contour or polygon with a defined gray value into an image. The border of the contour is painted using anti-aliasing. This operator can be used, for example, to create synthetic images from which an ideal shape model can be created. How to use this operator is shown in the new example examples/hdevelop/Image/Manipulation/paint_xld.dev.
    Furthermore, the new operator gen_contour_polygon_rounded_xld enables users to create XLD contours with rounded corners from polygon data; the new operators gen_region_contour_xld and gen_region_polygon_xld create a filled region from an XLD contour or polygon, respectively.
  • The new operator get_os_window_handle returns the operating system window handle and hence enables applications to perform custom drawing into the HALCON window.
  • HALCON now has an operator get_window_attr, with which the attributes that can be set with set_window_attr can be read.
  • The new operator gray_histo_abs allows to obtain frequencies of gray values with adjustable gray scale from images.

O Modified Operators:
  • The operator count_seconds has been extended to be able to measure the total elapsed time as well as the processor time. set_system("clock_mode",...) can be used to select the desired behavior of count_seconds: If the mode is set to "processor_time", the time used by the process itself is returned. This is the same behavior as in previous HALCON versions and also the default behavior. If the mode is set to "elapsed_time", the total elapsed time is returned.
  • The operators for gray-value and shape-based matching now have their own top-level chapter in the manual: Matching/Gray-Value-Based and Matching/Shape-Based, respectively.
  • The operator mean_n now supports int2 and int4 images.
  • The operator mirror_image now supports int4 and real images.
  • The operator integer_to_obj no longer has a default value for the parameter 'SurrogateTuple'.
  • The operators trans_from_rgb and trans_to_rgb now support the YUV color space transformation.

O Bug Fixes:
  • The operator x_range_funct_1d returned a wrong value XMax for 1d function pairs. This problem has been fixed.
  • The operator transform_funct_1d returned the function values of 1d function pairs in wrong index order if the parameter a3 was negative. This problem has been fixed.
  • The operator tuple_not returned values of type real. This caused problems whenever these values were used in other logical operators, e.g., tuple_and. tuple_not now returns values of type integer.
  • The operator shape_histo_all returned incorrect results for Feature = 'holes'. This problem has been fixed.
  • The operator find_shape_model found only one instance if MaxOverlap = 0, no matter how NumMatches was chosen. This problem has been fixed.
  • The operators trans_to_rgb and trans_from_rgb produced incorrect results for ColorSpace = 'hsi'; trans_to_rgb sometimes produced incorrect results for ColorSpace == 'hsv'. Both problems have been fixed.
  • An error in the operator merge_regions_line_scan with parameter MergeBorder = 'top' has been fixed. merge_regions_line_scan sometimes returned the error 6001 (not enough memory available) for this choice of MergeBorder.
  • An error in the operator decode_2d_bar_code concerning the decoding of 2d bar codes with Base256 encodation has been fixed.
  • The operator get_serial_param did not return the parity correctly under Windows. The value returned by get_serial_param was always 'none'. This problem has been fixed.
  • The operator polar_trans_image no longer returns the error 3505 (Run length column >= image width) if the parameter Width is chosen larger than the input image width and the checking of data has been enabled using set_check('data').
  • The operators get_region_thickness, get_region_chain, and get_region_polygon sometimes returned the error 6041 (No memory block allocated at last). This problem has been fixed.
  • The operators set_rgb, set_pixel, set_hsi, tile_images_offset, principal_comp, integer_to_obj, obj_to_integer, select_matching_lines and concat_ocr_trainf specified parameters as tuples only although the parameters can be passed as simple values as well. This problem has been fixed.
  • The operators distance_pr and distance_lr returned the error 3513 (Internal error: number of chords too big for num_max) if the region contained more than one hole. This problem has been fixed.
  • A bug in plane_deviation and moments_gray_plane, which caused illegal results (-1.#IND and NaN, respectively) for regions that either contain one pixel or pixels on a straight line has been fixed.
  • The operator elliptic_axis_gray sometimes returned illegal results. This problem has been fixed.
  • For operators with more than one iconic input parameter, Parallel HALCON now always returns the same output object domain as (standard) HALCON, even if the domains of input objects of different parameters are different. In former HALCON versions, this bug affected the operators add_image, sub_image, div_image, mult_image, min_image, max_image, select_grayvalues_from_channels, rgb3_to_gray, trans_from_rgb, and trans_to_rgb.
  • The operator gen_region_polygon_filled sometimes created asymmetrical regions from a symmetrical polygon. This problem has been fixed.
  • The operator laplace_of_gauss crashed with int4 and real images. This problem has been fixed.
  • The operator depth_from_focus sometimes returned the error 7200 (Wrong number of output object parameter). This only happened if Selection was set to 'next_maximum'. This problem has been fixed.
  • The operator do_ocv_simple sometimes returned wrong quality values if AdaptGray was set to 'true'. This problem has been fixed.
  • The operator laplace now performs correct border treatment for NeighborhoodType = 'n_8' and 'n_8_isotrop'.
  • The operators regiongrowing_n, learn_ndim_box, and class_ndim_box created a stack overflow under Windows in HALCON/C and HALCON/C++. The operators have been modified to use less than the default 1 MB stack.
  • The operator union_straight_contours_xld sometimes failed to join contours that fulfill the specified collinearity criteria. Furthermore, the operator sometimes returned incorrect results if Mode = 'paralleltoo' or Mode = 'every'. All problems have been fixed. The mode 'every' has been improved so that a contour that is as useful as possible for further processing is returned. In particular, the algorithm now merges exactly two contours per iteration in this mode. The contours that are merged are the two contours having the closest dictance. This ensures in most cases that the surrounding contour of a single object is created. As a consequence of this change, the mode 'every' has become slower than in previous HALCON versions and thus should only be used for a small number of contours as input.
  • The operator expand_gray_ref no longer crashes if an input region is larger than the image.
  • The operator lut_trans returned incorrect results if the LUT contained floating point numbers. This problem has been fixed.
  • Parallel HALCON sometimes crashed when exiting a HALCON program. This problem has been fixed.
  • The operator area_center_gray returned illegal results for Row and Column if the gray values defined by the input region were all 0. This problem has been fixed.
  • The operators camera_calibration, do_ocv_simple, vector_to_rigid, match_funct_1d_trans crashed under Solaris. This problem has been fixed.
  • The operator gen_parallel_contour_xld sometimes created incorrect contours if Mode = 'regression_normal'. This problem has been fixed.
  • The operator close_edges_length no longer crashes if edges are traced to the border of the image.
  • The operator find_shape_model sometimes discarded too many instances based on their overlap. This problem has been fixed.

O Manual:
  • The manual "Getting Started with HALCON" is available in its 6th edition. The problems occurring in conjunction with the new version of the dongle driver required for HALCON 6.0.2 and their solution are described in the corresponding sections. Furthermore, the installation process is now described in more detail, including information on how to switch between different HALCON versions. A new section contains additional information for users of ActivVisionTools.
  • The new "Application Note on Shape-Based Matching" can be found via the Windows Start Menu or in the subdirectory doc/pdf/application_guide. It shows how to apply HALCON's powerful shape-based matching to find objects in real-time and determine their position with subpixel accuracy with the help of 10 new HDevelop example programs, which can be found in the subdirectory examples/application_guide/shape_matching/hdevelop.
  • The new "Application Note on Image Acquisition" can be found via the Windows Start Menu or in the subdirectory doc/pdf/application_guide. It shows how to how to connect to simple and complex configurations of frame grabbers and cameras and how to acquire images in various timing modes with the help of 15 new example programs (11 for HDevelop, 2 in C, 1 in C++, 1 for Visual Basic), which can be found in the subdirectory examples/application_guide/image_acquisition.

HALCON/C

O Programming:
  • The HALCON/C interface has been modified such that operators that only return tuples are only available in the correct T_-form of the operator. The reference manuals now show all available operator forms.

O Examples:
  • The subdirectory examples/application_guide/image_acquisition/c contains two new example programs used in the Application Note on Image Acquisition: use_extern_image.c shows how to integrate externally created images into HALCON, error_handling_timeout_picport.c shows how to react to a timeout error (preconfigured for the HALCON PicPort frame grabber interface).

HALCON/C++

O Speedup and Enhancements:
  • The runtime behavior of HALCON/C++ has been improved. Tuples with a large number of values are passed more quickly from the operators to the tuples in C++.
  • HALCON/C++ now provides access to all functionality via classes. The underlying data is encapsulated in a handle, which is contained in every instance of such a class. The new HALCON/C++ classes are: HFramegrabber, HShapeModel, HVariationModel, HTemplate, HMeasure, HFile, HSerial, HSocket, HBarCode1D, HBarCode2D, HBgEsti, HOCR, HOCV, HClassBox, HFunction1D, HGnuplot.

O Programming:
  • HALCON/C++ now has a class HUInt2Image that encapsulates uint2 (unsigned 16 bit) images.
  • HalconCpp.h no longer includes <iostream.h> but includes <iostream> by default, since including <iostream.h> could cause problems when newer features of the standard C++ library were being used. However, to be compatible with older C++ libraries, HalconCpp.h uses the namespace std by default so that the iostream operators defined in various classes, e.g., HTuple, also work with the older C++ libraries. Note, however, that on SGI machines <iostream.h> is still included because SGI machines use an older version of the C++ libraries.
    Because of this change, all HALCON/C++ applications that make use of the overloaded input and output operators >> and << that HALCON/C++ defined for some classes, e.g., HTuple, must be recompiled and relinked. Programs that do not use the overloaded operators << and >> are binary compatible.
    Furthermore, if user-developed extension packages are used, they must be recompiled. Under Windows, libcpmt.lib must be linked with the C++ language interface of the package. If the (old) standard HALCON makefiles are used to compile the package, this means that libcpmt.lib must be added to EXTRA_LD_FLAGS_CPP_LIB and EXTRA_PAR_LD_FLAGS_CPP_LIB in make.i586-nt4.
  • HALCON/C++ now includes operators with simple mode input control parameters wherever possible. On the other hand, it no longer includes operators in simple mode that always return tuples.
  • The HALCON/C++ classes HXLD and HXLDArray are no longer virtual, i.e., all XLD functionality is now available via classes. Operators with object parameters of semtype 'xld' and 'xld-array', respectively, that were so far only available via global HALCON/C++ functions are now members of the classes HXLD and HXLDArray, respectively.

O Bug Fixes:
  • A bug in the HALCON exception class 'HException' that may cause the application to crash was fixed. The problem occurred if a user-defined exception handler threw an C++ exception with 'throw' and passed the HException object as parameter to the 'catch' block.
  • The class method HImage::ReadImage threw an exception with the wrong error code 7200 instead of 5 (H_MSG_FAILED), if the image could not be opened. This problem has been fixed.
  • In the case of an error, some methods of HImage, HRegion, and HOperator returned 0 instead of the error code of the responsible HALCON operator; this problem has been fixed.

O Manual:
  • The HALCON/C++ User's Manual has been revised and extended significantly and is now available in its 6th edition. The basics of the HALCON/C++ interface, e.g., how to call operators in the procedural and in the object-oriented way or how to realize error handling, are now described in detail in a new chapter; the section "Exception Handling" has been extended by an example showing how to use the C++ exception handling mechanism (try...catch) together with the class HException. Furthermore, the chapter describing the parameter classes has been updated and now also lists the new handle classes.

O Examples:
  • The directory structure for the C++ examples has been modified: The source files have been moved to the new subdirectory 'source' of the base directory 'examples/cpp'; the executables generated with gmake/nmake are placed in the (automatically created) subdirectory 'bin/$ARCHITECTURE'. The Visual Studio projects are still in the subdirectory 'i586-nt4'.
    The set of makefiles has been adapted to the new directory structure; besides, its use has been facilitated: You can now generate an executable by directly specifying its name, e.g., call 'gmake/nmake pen' to compile and link the file 'source/pen.cpp'; furthermore, you can generate all example programs at once with the call 'gmake/nmake all'.
  • Nine new example programs have been added in examples/cpp/source: example_errorhandling.cpp shows how to use the standard C++ exception handling (try...catch) together with the class HException; the programs bottle2.cpp, ean13.cpp, ecc200.cpp, engraved2.cpp, fuzzy_measure_pin.cpp, multi_chars.cpp, pen.cpp, and xing.cpp realize the same application as the corresponding HDevelop examples by using the HALCON/C++ classes. In the subdirectory 'i586-nt4', the corresponding Visual Studio projects have been added.
  • The subdirectory examples/application_guide/image_acquisition/cpp contains a new example program used in the Application Note on Image Acquisition: error_handling_timeout_picport.cpp shows how to react to a timeout error (preconfigured for the HALCON PicPort frame grabber interface).

HALCON/COM

O Speedup and Enhancements:
  • The class HXLDX contained eight member functions: AreaCenterXld, DispXld, GetParallelsXld, LengthXld, MomentsAnyXld, MomentsXld, ReceiveXld, and SendXld. Because of this, calling these functions on an object of a derived class, e.g., HXLDContX, was quite cumbersome since the objects had to be cast to HXLDX using the operator Cast(). To make calling these functions easier, the class HXLDX has been made an abstract class, and the above eight operators have been moved to the classes HXLDContX, HXLDPolyX, HXLDParaX, HXLDModParaX, and HXLDExtParaX.

O Manual:
  • The HALCON/COM User's Manual is now available in its 3rd edition. It has been updated and revised, mainly regarding syntax and layout. Furthermore, it now contains links into the PDF version of the HALCON/COM Reference Manual.
  • In the HALCON/COM reference manual, control parameters of methods of the class HOperatorSetX are now correctly declared as VARIANT.

O Examples:
  • The subdirectory examples/application_guide/image_acquisition/vb contains a new Visual Basic example program used in the Application Note on Image Acquisition: error_handling_timeout_picport/error_handling_timeout_picport.vbp shows how to react to a timeout error (preconfigured for the HALCON PicPort frame grabber interface).

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 GINGA++ frame grabber boards from LinX Corporation.
  • HALCON now also includes an interface to the MaxRevolution frame grabber boards from Datacube.

O Modified Frame Grabber Interfaces:
  • The existing HALCON DFG-BW1 frame grabber interface has been extended to the more general HALCON DFG-BW frame grabber interface, which supports not only The Imaging Source's DFG/BW1 frame grabber board, but now also the DFG/BW4 and DFG/RGB2 boards.
  • The following HALCON frame grabber interfaces have been revised: DFG-LC, MultiCam, Opteon, and PCEye. Please refer to the corresponding documentation for more information, especially whether a new revision of the corresponding device driver is required.

O Manual:
  • The Frame Grabber Integration Programmer's Manual is available in its 6th edition. Two sections about parameter naming conventions and the use of frame grabber interfaces in ActivVisionTools have been added. Furthermore, a paragraph about the use of camera configuration files has been introduced.

Extension Package Interface

O Programming:
  • The debugging procedure HTestAllocTmp has been renamed to HXTestAllocTmp, and a new macro HTestAllocTmp, which calls HXTestAllocTmp and which fits the description in the Extension Package Interface Programmer's Manual has been introduced. Extension packages that use HTestAllTmp should be rewritten to either omit the last two parameters of the call or to call HXTestAllocTmp instead.

HMatchIt

O Speedup and Enhancements:
  • HMatchIt now is able to handle scaled shape models. The dialog 'Edit Standard Model Parameters' now enables users to specify the minimum and maximum scale of the model. The dialog 'Edit Advanced Model Parameters' enables users to specify the scale step size. The dialog 'Determine Pose Bounds' now also displays statistics about the scale of the found objects.
  • HMatchIt now is able to determine the recognition rate if more than than one match should be found. This change also enable users to optimize the recognition speed if more than one match should be found. There now are three modes to determine the recognition rate:
    • Find at least one model instance: In this mode, the recognition rate is 100% if at least one model instance is found in each image.
    • Find maximum number of model instances: In this mode, the recognition rate is 100% if exactly the number of matches specified in the dialog 'Edit Standard Run Parameters' is found in each image.
    • Find number of instances selected manually: In this mode, the recognition rate is 100% if exactly the number of visible objects specified manually for each image in the dialog 'View Test Images' is found in each image.
    The dialog 'View Test Images' has been extended by a scroll bar and text field to enable users to specify this information.

O Functionality:
  • HMatchIt now enables users to set the new parameters of the shape-based matching (the subpixel mode and the last level on which the matching is performed). The Edit Advanced Run Parameters dialog has been extended to enable users to specify these parameters.

O Miscellaneous:
  • The layout of the dialogs View Test Images, Determine Recognition Rate, Determine Pose Bounds, and Optimize Recognition Rate have been changed to create a consistent look-and-feel.
  • The shortcuts to define the ROI in HMatchIt have been changed from F1-F5 to F2-F6 because the shortcut F1 is used for the help system.
  • The layout of the menu Edit in HMatchIt has been changed. The model and run parameters now each have their own submenu.

Miscellaneous

O Example Images:
  • The images images/green-dot.tif and images/green-dots.tif have been added; they are used in the new example program for scale-invariant matching.
  • The images in images/pen have been added; they are used in the new example program for the variation model.
  • The image images/pcb.tif has been added; it is used in the example program for gray value morphology.
  • The images in images/radius-gauges have been added; they are used in the new example program combining shape-based matching with image rectification.
  • The images in images/metal-parts have been added; they are used in the new example program for finding multiple models in an image.
  • The images razors1.tif, razors2.tif, and rings_and_nuts.tif in images/, and the images in images/rings, images/capacitors, and images/cd_cover have been added; they are used in the new example programs for the Application Note on Shape-Based Matching.
  • The images images/clips have been added; they are used in one of the new example programs for the Application Note on Image Acquisition.


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






Webmaster Last modified: Tue May 02 14:07:54 CEST 2006