MVTec Software GmbH
  Building Vision For Business


 
  Release Notes for HALCON 8.0.4  
 

 

This document provides the release notes for MVTec HALCON 8.0.4, as released in February 2010. HALCON 8.0.4 is primarily a maintenance release that fixes all known bugs in HALCON 8.0.3; besides, it provides added functionality.



Overview

This document contains the following information:

Compatibility
Detailed Description of Changes in HALCON 8.0.4
Detailed Description of Changes in HALCON 8.0.3
Major New Features of HALCON 8.0.2
Detailed Description of Changes in HALCON 8.0.2
Major New Features of HALCON 8.0.1
Detailed Description of Changes in HALCON 8.0.1
Major New Features of HALCON 8.0
Detailed Description of Changes in HALCON 8.0 (relative to HALCON 7.1.2)



Compatibility

o Licenses

HALCON 8.0 licenses are also valid for HALCON 8.0.4. In contrast, all HALCON 7.1 licenses must be replaced or upgraded. Please contact your local distributor.


o HALCON Library

HALCON 8.0.4 is fully compatible with HALCON 8.0. Compared to HALCON 7.1, many extensions have been introduced. Thus, the HALCON 8.0.4 libraries are not compatible with HALCON 7.1 or earlier versions.


o HALCON Applications

Applications (i.e., executables) developed with HALCON 8.0, HALCON 8.0.1, HALCON 8.0.2, or HALCON 8.0.3 can be used with HALCON 8.0.4, i.e., HALCON 8.0.4 is binary compatible with HALCON 8.0, HALCON 8.0.1, HALCON 8.0.2, and HALCON 8.0.3.

The incompatibility with HALCON 7.1 or earlier versions mainly concerns the binaries, with only few changes in the language interfaces. If you encounter problems during recompiling your programs, please check the detailed description of changes below and for HALCON 8.0, HALCON 8.0.1, HALCON 8.0.2, and HALCON 8.0.3, respectively.

Please note the following source-code incompatibilities with respect to previous HALCON 8.0.x releases:

  • Programs that evaluate the error message 8510 ("Number of shape model points too small") with respect to create_ncc_model must be adapted because the error message has been changed.
  • Programs that evaluate the error message 8406 ("Error in projection: s_x = 0 or s_y = 0 or z = 0") with respect to create_shape_model_3d must be adapted because the error message has been changed.
  • Newly created shape models might differ in comparison to shape models that were created with earlier HALCON revisions. Therefore, also the matching results might change if a model is recreated.
  • Newly created 3D shape models might differ in comparison to 3D shape models that were created with earlier HALCON revisions. Therefore, also the matching results might change if the model is recreated.
  • All OCR classifiers (box, MLP, and SVM) that use the feature 'gradient_8dir' in combination with at least one of the features
    • 'chord_histo',
    • 'pixel',
    • 'pixel_binary',
    • 'pixel_invar',
    • 'projection_horizontal',
    • 'projection_horizontal_invar',
    • 'projection_vertical', or
    • 'projection_vertical_invar'

    must be re-trained because of an error in the calculation of features from images in the operators
    • traind_ocr_class_box,
    • trainf_ocr_class_box,
    • trainf_ocr_class_mlp,
    • trainf_ocr_class_svm,
    • do_ocr_multi,
    • do_ocr_multi_class_mlp,
    • do_ocr_multi_class_svm,
    • do_ocr_single,
    • do_ocr_single_class_mlp,
    • do_ocr_single_class_svm,
    • do_ocr_word_mlp,
    • do_ocr_word_svm,
    • get_features_ocr_class_mlp,
    • get_features_ocr_class_svm,
    • get_prep_info_ocr_class_mlp,
    • get_prep_info_ocr_class_svm,
    • ocr_get_features, and
    • testd_ocr_class_box.

  • fit_ellipse_contour_xld does not allow the fitting of ellipses to contours with fewer than five points anymore. Although this was already the case for the algorithms 'fitzgibbon' and 'geometric' and all their derivatives, it is now also true for the algorithms 'voss', 'focpoint', 'fphuber', and 'fptukey'. If your program relies on the behavior that fit_ellipse_contour_xld returns ellipse parameters that represent a straight line when one of the latter algorithms was selected and when the contour has two to four points, you must determine the number of contour points with the operator contour_point_num_xld and call the operator fit_line_contour_xld if the contour has two to four points.
  • For StartPhi=EndPhi and PointOrder='positive', gen_ellipse_contour_xld no longer returns a full ellipse but only one point.
  • Programs that use illuminate with different values for MaskWidth and MaskHeight should be adapted because the sequence of parameters has been corrected.

Please note that applications using HALCON/.NET (and HDevEngine/.NET) have local copies of the corresponding assemblies (halcondotnet.dll etc.). After installing HALCON 8.0.4, these applications would therefore still use the old HALCON versions. You must either replace the assemblies manually or re-compile the projects.


o Image Acquisition Interfaces

The system requirements of the following image acquisition interfaces have been changed since HALCON 8.0.3:

  • For using the updated mEnableVisualApplets interface you must install the driver version 4.2.25 from Silicon Software to support the new microEnable IV FULL x4 boards.
  • For using the updated pylon interface you must install the new version 2.1 of the underlying pylon SDK from Basler.
  • For using the updated RangerC and the RangerE interfaces you must install the new version 4.0 of the underlying Icon SDK from SICK.
  • For using the updated uEye interface under Windows you must install the new driver version 3.40 (or 3.50 for Windows x64).

If you have developed your own acquisition interfaces with HALCON 8.0, HALCON 8.0.1, HALCON 8.0.2, or HALCON 8.0.3, you can use them with HALCON 8.0.4 without further action. Because of the new version of the HALCON Acquisition Integration Interface in HALCON 8.0, acquisition interfaces developed with HALCON 7.1.x or lower are not binary compatible, but mostly source-code compatible with 8.0.


o Extension Packages

Extension packages developed with HALCON 8.0, HALCON 8.0.1, HALCON 8.0.2, or HALCON 8.0.3 can be used with HALCON 8.0.4 without further action. Extension packages developed with HALCON 7.1.x must be re-generated.


o ActivVisionTools

Only ActivVisionTools 3.2 can be used directly with HALCON 8.0.4 because it is based on HALCON 8.0.2. All older ActivVisionTools versions are based on HALCON 7.1.1 or earlier versions; by installing HALCON 8.0.4, you would thus disable such an ActivVisionTools installation. Therefore, the setup program of HALCON 8.0.4 checks whether there is an ActivVisionTools installation on your computer.

  • If it detects ActivVisionTools 3.2, no further action is required, because this version is compatible to HALCON 8.0.4.
  • If it detects ActivVisionTools 3.1 or ActivVisionTools 3.1.1, please contact your distributor for further information on how to run this version together with HALCON 8.0.4.
  • In contrast, ActivVisionTools 1.0 to 3.0 cannot be used with HALCON 8.0.4. If the setup program detects such an ActivVisionTools version, it warns you that by continuing to install HALCON 8.0.4 you will disable your ActivVisionTools installation.

    If you still want to use your ActivVisionTools installation you must also keep your old HALCON installation and switch back to it as described in the "Installation Guide".



Detailed Description of Changes in HALCON 8.0.4

Detailed release notes can be obtained for the following topics:

HDevelop
HALCON Library
HALCON/C
HALCON/C++
HALCON/.NET
HDevEngine
Image Acquisition Interfaces
Miscellaneous

HDevelop

o Functionality:
  • The Properties dialog that can be opened via the File menu displays some information about the current program file, amongst others, the creation and last modification time of the program file. However, the format of the date/time string did neither comply with the standard time format of the language chosen in HDevelop nor with the current locale settings of the operating system. This has been changed. Now, the time strings are displayed in the standard date/time format according to the current locale settings of the operating system.
  • When the mouse cursor is moved over the Graphics window, pressing the Ctrl key opens a tool tip that displays the current mouse position and the gray values of the image at this position. However, no tool tip was shown as long as no image was displayed before in the Graphics window. This has been changed. When the mouse cursor is over a Graphics window that contains no image, from now on, pressing the control key opens a tool tip that displays the mouse position.

o Bug Fixes:
  • HDevelop failed to set the current working directory correctly to the program path if the path contained non-ASCII characters. As one consequence image files that are addressed in the program relatively to the program could not be opened. The problem did not occur if HDevelop was started in the appropriate directory, e.g., by double clicking on the program file in the Windows explorer. This problem has been fixed.
  • HDevelop crashed if some of the HALCON help files that are installed under %HALCONROOT%\help were missing. This problem has been fixed. Now, if a help file is missing, an error message is displayed and HDevelop is closed.
  • If the system option 'no_object_result' was set to 'false' in HDevelop the operator gen_empty_obj returned 3 (H_MSG_FALSE) instead of 2 (H_MSG_TRUE). Additionally, an error message box was opened even if dev_set_check('~give_error') was set. The error occurred only if the operator gen_empty_obj was called within HDevelop but not if it was called via HDevEngine or a language interface. This problem has been fixed.
  • Although all parameters of the operator for accept real numbers, the semantic type of these parameters was set to 'integer'. This problem has been fixed. Now, the type is set to 'number'.
  • The parameter suggestions in HDevelop have been improved. In some cases, row and column variables were interchanged or suitable variables were not suggested. These problems have been fixed.
  • The suggested default value for the ErrorVar parameter of the operator dev_error_var was wrong. Instead of a valid variable name the number 0 was suggested. This problem has been fixed.
  • If within an expression a number starts with 0, it is interpreted as an octal number. If such a number contained digits that are not defined in the octal numerical system (8 and 9), it was simply ignored without any notification. This could have lead to surprising results. For example, after executing a := 018, the variable a was set to 1. This behavior has been changed. Now, an assignment with an invalid octal number is not possible anymore. When loading an already existing program that contains such an invalid expression, which can be the case for programs that are created with HALCON 9.0 or higher, the whole expression is transformed into a string.
  • Opening the context menu of the Program Window via the context menu key did not work correctly: If the mouse cursor was not over the selected text, the selection changed from the previously selected program lines to the line under the current mouse position. In addition, the insert cursor was moved to that line. Hence, the required action was not performed on the program line or text that was selected or had the text insert cursor before pressing the context menu key but on the program line under the mouse cursor. This problem has been fixed.
  • HDevelop's Find/Replace dialog was unable to work correctly with the backslash character "\". Additionally, if it was used in the operator replacement mode and the name of an external procedure that was corrupt and could therefore not be loaded was used as the search or the replace operator name, HDevelop sometimes crashed. These problems have been fixed.
  • If a multi-channel image or an object tuple was inspected via the Display Channel or Display Content dialog, which are available via the image icon in the Variable Window, a previously selected window part was ignored and the image was always displayed in full size. This problem has been fixed. Now, if the selected channel or image object has the same size as the image that is currently displayed in the Graphics Window, the same part is used for displaying the selected image. Otherwise the image is displayed in full size.
  • In SDI mode, it was not possible to open a Graphics Window with dev_open_window or via the Visualization menu with a width wider than 2/3 of the screen. Furthermore, when setting the window size with dev_set_window_extents or via the Window Size menu to a large width, the window size was also clipped to 2/3 of the width of the screen. This problem has been fixed.
  • HDevelop crashed if several images were dragged over the Graphics Window at once. This problem has been fixed.
  • After maximizing HDevelop's Main Window, it was still possible to resize this window via the size grip in the bottom right corner of the status bar. Resizing a maximized window is not usual and did confuse the title bar. In particular, after resizing the maximized window, the title bar continued to show the button for changing the window to normal size. Even continuously pressing the button had no effect. This problem has been fixed.
  • The variable inspection window for image acquisition handles had no values under Linux 32 bit Systems. This problem has been fixed. Now, it has the correct values.
  • Within the Image Acquisition Assistant, the default values for the resolution properties on the 'Connection' tab were always set to "Full", even if the acquisition interface specified a different value such as "Default". This problem has been fixed.
  • After running HDevelop and opening modal dialogs or the Help Window on a second monitor that was connected to the computer system, the following problems occurred if the second monitor was removed from the system after finishing HDevelop: While the Main Window of the restarted HDevelop was opened correctly on the visible part of the desktop, the Help Window as well as some modal dialogs like the Print dialog, the Property dialog, or the Export dialog were opened at their old position that was now outside the desktop and therefore not visible. After opening such a modal dialog HDevelop seemed to be frozen. This problem has been fixed. Now, all dialogs are opened in the visible part of the desktop.
  • HDevelop sometimes crashed if in the 'External Procedures' table in the Preferences dialog a corrupt and therefore unloadable procedure was double clicked. This table lists all external procedures that are referred via the external procedure paths, including invalid and unreachable procedures. Normally, by double clicking on a procedure row in that table the appropriate procedure is displayed in the Program Window. This problem has been fixed.
  • HDevelop crashed if an external procedure was saved via the menu 'File -> Save Procedure As...' to the same file it was loaded from. This problem has been fixed.
  • HDevelop sometimes crashed when trying to export an invalid program line to C. This happened if the invalid program line was activated and situated within a procedure that contained at least one output control parameter. This problem has been fixed.
  • HDevelop exported calls to dev_clear_obj incorrectly to C, C# - HALCON/.NET, Visual Basic .NET - HALCON/.NET, C# - HALCON/COM, and Visual Basic .NET - HALCON/COM. In C, dev_clear_obj was exported as a comment. In C# (COM and .NET), the exported code contained the wrong variable name, and in Visual Basic .NET - HALCON/COM and HALCON/.NET, the variable was set to Nothing. These problems have been fixed. Now, in C, dev_clear_obj is exported as clear_obj followed by gen_empty_obj and in Visual Basic .NET - HALCON/COM and HALCON/.NET, it is exported as a call to ReleaseComObject and Dispose, respectively.

o Examples:
  • The new HDevelop example programs crevis.dev, crevis_binning.dev, crevis_parameters.dev, crevis_simple.dev, and crevis_trigger.dev in the directory examples/hdevelop/Image/Acquisition show how to use the new Crevis interface.
  • The new HDevelop example programs sentech.dev, sentech_parameters.dev, sentech_simple.dev, and sentech_trigger.dev in the directory examples/hdevelop/Image/Acquisition show how to use the new Sentech interface.
  • The new HDevelop example programs svcam-gige.dev, svcam-gige_crop.dev, svcam-gige_parameters.dev, svcam-gige_simple.dev, and svcam-gige_trigger.dev in the directory examples/hdevelop/Image/Acquisition show how to use the new SVCam-GigE interface.
  • The new HDevelop example programs rangerc.dev and rangere.dev in the directory examples/hdevelop/Image/Acquisition show how to use the RangerC and RangerE interfaces.
  • The new HDevelop example program gigevision_forceip.dev in the directory examples/hdevelop/Image/Acquisition shows how to use ForceIP to correctly configure a misconfigured GigEVision device with the GigEVision interface.

HALCON Library

o Modified Operators:
  • Until now, the parent window of a HALCON window was informed about events from the left and right mouse button under Windows. Now, a HALCON window posts also the following messages concerning the middle mouse button and the mouse wheel to its parent window (if it exists):

    • WM_MBUTTONUP
    • WM_MBUTTONDOWN
    • WM_MBUTTONDBLCLK
  • set_window_extents now handles negative values for Width and/or Height in a manner compatible with dev_set_window_extents in HDevelop, i.e., by leaving the corresponding window dimension unchanged.
  • gen_region_hline now renders the Hesse line regions more accurately. Additionally, the border treatment has been improved.

o Bug Fixes:
  • HALCON did not work under Windows systems if the path in the environment variable HALCONROOT or HALCONIMAGES was surrounded by quotation marks. This problem has been fixed.
  • The two calibration plate description files calib/caltab_100mm_old.descr and calib/caltab_650um_old.descr were incorrect. This problem has been fixed.
  • When assessing the print quality of 2D data codes of type 'Truncated PDF417' the returned 'Start/Stop Pattern' grade sometimes was 0 although the symbol had a good quality. This problem has been fixed.
  • The operators
    • abs_invar_fourier_coeff,
    • invar_fourier_coeff,
    • match_fourier_coeff, and
    • fourier_1dim_inv

    returned no error message for a wrong number of input control parameters. This problem has been fixed.
  • The operators
    • add_noise_distribution,
    • add_noise_white,
    • add_noise_white_contour_xld, and
    • gen_random_region

    sometimes did not generate random iconic objects that were different from the previously generated ones. This happened if the operators were called too fast in succession. This also implies single operator calls with iconic object tuples or multi-channel images as input parameters. In addition, the operators add_noise_distribution and add_noise_white generated the same output images if called with the same input image objects. These problems have been fixed.
  • adjust_mosaic_images might have crashed if the input image tuple contained images of different size. This problem has been fixed. Now, the error 3117 ("Images with different size") is returned.
  • affine_trans_image and affine_trans_image_size in rare cases did not transform the first pixel of a column. This problem has been fixed.
  • binocular_disparity and binocular_distance returned wrong results on the last run of the domain for certain input image domains. This problem has been fixed.
  • clear_rectangle, move_rectangle, and set_window_param (with Param= 'background_color' or Param='window_title') did not work with buffer windows on Linux/UNIX systems and raised a BadMatch error. This problem has been fixed.
  • The operators
    • clear_shape_model,
    • clear_shape_model_3d,
    • clear_data_code_2d_model, and its derivatives
    • clear_scaled_shape_model and
    • clear_aniso_shape_model

    had a memory leak of 24/36 bytes per call on a 32/64 bit Windows operating system. This problem has been fixed.
  • coherence_enhancing_diff sometimes returned wrong values in the upper right and/or lower right corner of non-square images. This problem has been fixed.
  • convol_image sometimes caused unexpected memory overwriting during the border treatment. This problem has been fixed.
  • create_funct_1d_pairs did not check whether the input tuple for the parameter XValues contained multiple identical values. This problem has been fixed.
  • create_ncc_model sometimes crashed if an image with extremely different width and height was used as template image and the image domain touched the image borders. This problem has been fixed. Additionally, create_ncc_model returned the error 8510 ("Number of shape model points too small"). This problem has been fixed, too. Now, the error 8506 ("Number of template points too small") is returned. Programs that evaluate the returned error messages must be adapted accordingly.
  • The shape models that were created with
    • create_shape_model,
    • create_scaled_shape_model,
    • create_aniso_shape_model,
    • create_component_model, or
    • create_trained_component_model

    sometimes contained incorrect contours at the border of the model region. This could have happened if the model image contained contours within the model region that continue outside the model region. inspect_shape_model showed the same behavior. These problems have been fixed. Note that the created shape models might differ in comparison to shape models that were created with earlier HALCON revisions. Therefore, also the matching results might change if the model is recreated.
  • The automatic contrast estimation in create_shape_model, all its derivatives, and determine_shape_model_params in rare cases returned slightly different values on different architectures for the contrast value or the hysteresis contrast values. Additionally, create_*shape_model and determine_shape_model_params hung in very rare cases. Furthermore, create_*shape_model* and create_*component_model crashed in rare cases when all pixels within the domain of the model image had the same gray value and automatic contrast estimation was switched on. These problems have been fixed.
  • create_shape_model_3d sometimes did not create views that are close to the poles of the spherical pose range. In particular, this happened if the longitude was restricted to a small range. As a consequence, objects that are imaged from either of the two pole regions could not be found when using find_shape_model_3d. This problem has been fixed. Note that the created 3D shape models might differ in comparison to 3D shape models that were created with earlier HALCON revisions. Therefore, also the matching results might change if the model is recreated. Additionally, create_shape_model_3d returned a wrong error message when passing a 3D object model in ObjectModel3DID that did not contain any faces. In this case the error message 8406 ("Error in projection: s_x = 0 or s_y = 0 or z = 0") was returned. This problem has been fixed as well. Now, the more appropriate new error message 8944 ("3D object model does not contain any faces") is returned. Note that programs that evaluate the returned error message 8406 must be adapted accordingly.
  • difference_closed_contours_xld crashed in very rare cases. The crash occured if at least two segments of the two contours were nearly identical. Additionally, if at least two segments of the two contours were nearly identical, the classification into boundaries that enclose regions and boundaries that enclose holes might have been wrong. These problems have been fixed.
  • dilation_rectangle1 accessed unallocated memory in very rare cases. This resulted in crashes or an undefined behavior of subsequent operators. This problem has been fixed.
  • disp_arrow ignored the current line width for drawing that is set with the operators dev_set_line_width or set_line_width. Additionally, disp_arrow sometimes returned with an internal error if the arrowhead size was smaller than 1. These problems have been fixed.
  • disp_caltab did not display calibration plates completely for telecentric cameras if the z value of the pose was small. This problem has been fixed.
  • disp_obj and disp_region with the visualization parameters draw = 'margin' and line_style > 0 displayed regions incorrectly. The right and bottom parts of the contour were shifted one pixel to the right and to the bottom. Additionally, disp_region and dev_display did not display holes of regions if the region fill mode (dev_set_draw) was set to 'margin' and if the output pattern for region contours (set_line_style) was not set to a solid line. These problems have been fixed.
  • distance_lr returned wrong results for a region consisting of one pixel. Additionally, an empty input region returned no error message. These problems have been fixed.
  • distance_transform in some cases did not work correctly if Metric was set to 'euclidean'. The resulting transformation in some cases was erroneous if Foreground was set to 'true' and the input region touched the border of the resulting image, or if Foreground was set to 'false'. This problem has been fixed.
  • div_image returned wrong results for complex images. This problem has been fixed.
  • The operators
    • do_ocr_multi,
    • do_ocr_multi_class_mlp,
    • do_ocr_multi_class_svm,
    • do_ocr_single,
    • do_ocr_single_class_mlp,
    • do_ocr_single_class_svm,
    • do_ocr_word_mlp,
    • do_ocr_word_svm,
    • get_features_ocr_class_mlp,
    • get_features_ocr_class_svm,
    • get_prep_info_ocr_class_mlp,
    • get_prep_info_ocr_class_svm,
    • ocr_get_features, and
    • testd_ocr_class_box

    returned different results if called multiple times and if the feature 'gradient_8dir' was used in combination with at least one of the following features:
    • 'chord_histo',
    • 'pixel',
    • 'pixel_binary',
    • 'pixel_invar',
    • 'projection_horizontal',
    • 'projection_horizontal_invar',
    • 'projection_vertical', or
    • 'projection_vertical_invar'.

    The variation of the results affected mostly the value of the parameter Confidence, but in rare cases it might also have affected the value of the parameter Class. The operators
    • traind_ocr_class_box,
    • trainf_ocr_class_box,
    • trainf_ocr_class_mlp, and
    • trainf_ocr_class_svm

    were also affected. They produced erroneous OCR classifiers if one of the above mentioned combinations of features was used. These problems have been fixed. Note that all OCR classifiers (box, MLP, and SVM) that use the feature 'gradient_8dir' in combination with one of the above mentioned features must be re-trained.
    Additionally, the operators
    • do_ocr_multi_class_mlp,
    • do_ocr_multi_class_svm,
    • do_ocr_single_class_mlp,
    • do_ocr_single_class_svm,
    • do_ocr_word_mlp, and
    • do_ocr_word_svm

    sometimes crashed if the entire character region lay outside the image domain.
    Furthermore, do_ocr_word_mlp and do_ocr_word_svm had a small memory leak if the parameter Expression was a regular expression. These problems have been fixed as well.
  • dots_image computed the first channel only when passing multi-channel images. This problem also led to different results when parallelizing on channel level. This problem has been fixed. Now, all channels are computed.
  • There was a memory leak when cancelling draw_* operators before actually drawing anything. This problem has been fixed.
  • The operators
    • edges_image,
    • edges_color,
    • edges_sub_pix, and
    • edges_color_sub_pix

    sometimes returned additional incorrect edges at the border of the image domain if Filter was set to 'sobel_fast'. Additionally, edges_image accepted multi-channel images although it could not operate on multiple channels. This behavior led to different results when parallelizing on channel level. These problems have been fixed.
  • fill_up_shape disregarded all shape features but 'area'. This problem has been fixed.
  • find_bar_code had the following problems:
    • It hung in very rare cases.
    • The check character test of Codabar bar codes failed for the check character '0'.
    • It sometimes could not decode Codabar barcodes although valid scanlines were found. This happened if scanlines near the center could be decoded that did not intersect with the candidate region.
    • It did not decode Composite codes correctly that encode GS1 data starting with '(17)xxxxxx(xx..' or '(11)xxxxxx(xx..'.
    • It sometimes interpreted alpha-numerical data in RSS Expanded or Composite codes incorrectly, e.g., encoded data (17)130900(10)Y123W45 was read like (17)130900(10)0/79D7F3B23. This problem did not appear if the data was only numerical, like (17)130900(10)12345.

    These problems have been fixed.
  • find_data_code_2d had the following problems:
    • It crashed in rare cases; amongst others, it sometimes crashed if a PDF417 symbol encoded data in the Numeric Compaction mode and if any of the codewords was the 0 codeword.
    • It caused a memory leak if not enough memory was available.
    • Using the QR data code reader and the gray-value-based matching together in the same application could have caused problems. In particular, calling the operator find_data_code_2d or clear_data_code_2d_model could have caused the deletion of a previously created gray-value-based matching model.
    These problems have been fixed.
  • find_marks_and_pose allowed to set the parameters StartThresh, DeltaThresh, MinThresh, and Alpha to zero although these values should not be used. Especially, if DeltaThresh was set to zero, find_marks_and_pose might have hung. Additionally, find_marks_and_pose had a memory leak if the orientation of the calibration plate could not be determined (error 8431: "Orientation of calibration plate could not be determined"). These problems have been fixed.
  • find_ncc_model sometimes crashed if the parameter Image contained an image with a height of 1 pixel. This problem has been fixed.
  • The least squares refinement in find_*shape_model(s) in very rare cases did not work correctly. This especially happened if the model was searched in artificially created images. This problem has been fixed.
  • find_shape_model_3d sometimes could not find objects that correspond to views that are close to the poles of the spherical pole range that was passed in create_shape_model_3d. This might have even happened if the corresponding views were contained in the 3D shape model. This problem has been fixed.
  • fit_ellipse_contour_xld allowed the fitting of ellipses into contours with fewer than five points for the algorithms 'voss', 'focpoint', 'fphuber', and 'fptukey'. This may have lead to unspecific error messages. Especially, when the number of contour points minus twice the number of clip points was less than zero, fit_ellipse_contour_xld may have crashed. This problem has been fixed.
    Now, fit_ellipse_contour_xld does not allow the fitting of ellipses into contours with less than five points anymore. Although this was already the case for the algorithms 'fitzgibbon' and 'geometric' and all their derivatives, it is now also true for the algorithms 'voss', 'focpoint', 'fphuber', and 'fptukey'. If your program relies on the behavior that fit_ellipse_contour_xld returns ellipse parameters that represent a straight line when one of the latter algorithms was selected and when the contour has two to four points, you must determine the number of contour points with the operator contour_point_num_xld and call the operator fit_line_contour_xld if the contour has two to four points.
  • The operators
    • frei_dir,
    • kirsch_dir,
    • prewitt_dir, and
    • robinson_dir

    determined the edge direction of horizontal edges with an intensity increase from top to bottom incorrectly. Instead of 90 (180) degrees the value 0 (0) degrees was returned for these edges. This problem has been fixed.
  • fwrite_string crashed if the parameter String contained strings that were longer than the number of maximum allowed characters (1024). This problem has been fixed. Now, the error code 9006 ("String is too long (max. 1024 characters)") is returned.
  • gauss_distribution did not work for Sigma values smaller than 0.01 even though the documentation stated that Sigma values equal or greater than 0 were allowed. For Sigma values smaller than 0.01 the error 1301 ("Wrong value of control parameter: 1") was returned. This problem has been fixed.
  • gen_ellipse_contour_xld sometimes created wrong results with an angle extent of 360 degrees. Instead of the full ellipse, a contour with three identical points was returned. Additionally, for StartPhi=EndPhi and PointOrder='positive', gen_ellipse_contour_xld returned a full ellipse instead of one point. Furthermore, for ellipses with no angle extent, gen_ellipse_contour_xld returned a contour with three identical points. These problems have been fixed.
  • gen_cross_contour_xld crashed if an empty tuple was passed in the parameter Angle. This problem has been fixed.
  • gen_ellipse returned a wrong region for special combinations of the parameters Radius1, Radius2, and Phi. This problem has been fixed.
  • gen_grid_rectification_map crashed in rare cases. This problem has been fixed.
  • get_data_code_2d_results sometimes crashed when assessing the PDF417 print quality (ResultNames = 'quality_isoiec15415'). This problem has been fixed.
  • The operators
    • gray_erosion_rect,
    • gray_dilation_rect,
    • gray_opening_rect,
    • gray_closing_rect, and
    • gray_range_rect

    computed the first channel only when passing multi-channel images. This problem also led to different results when parallelizing on channel level. This problem has been fixed. Now, all channels are computed.
  • The operators
    • gray_erosion_shape,
    • gray_dilation_shape,
    • gray_opening_shape, and
    • gray_closing_shape

    had the following problems:
    • They sometimes accepted different values for the parameters MaskHeight and MaskWidth although the MaskShape was 'rhombus' or 'octagon'.
    • They accepted the dimensions if the values rounded up to the next odd integer were equal.
    • In rare cases they returned wrong results if parallelized on domain level and on tuple/channel level simultaneously. This was the case if parallelization was switched on and the number of threads was bigger than the number of channels or objects in the parameter Image.

    Additionally, gray_erosion_shape and gray_dilation_shape consumed more memory than required if masks with subpixel accuracy were used. These problems have been fixed.
  • histo_2dim sometimes crashed if 'clip_region' was false and the region extended beyond the image borders. This problem has been fixed.
  • histo_to_thresh sometimes returned wrong results if the parameter Histogram was an absolute histogram with large values and/or if the parameter Sigma was very large. This problem has been fixed.
  • illuminate used the parameters MaskWidth and MaskHeight interchanged. The parameter MaskWidth was used as the mask height and MaskHeight was used as the mask width. This problem has been fixed. Now, the parameter MaskWidth is used as the mask width and MaskHeight is used as the mask height. Note that programs that use illuminate with different values for MaskWidth and MaskHeight must be adapted accordingly.
  • intensity in rare cases returned NaN as the Deviation for homogeneous image regions on Solaris. This problem has been fixed.
  • intersection_closed_contours_xld crashed in very rare cases. This problem has been fixed.
  • lines_gauss in very rare circumstances (very closely spaced lines of small contrast) used an edge of incorrect polarity to determine the line width. This problem has been fixed.
  • mean_image returned wrong results if the mask was in at least one dimension at least as large as the image and if the respective image size was odd. Furthermore, if a tuple of images with different image sizes was used and if the operator parallelization was switched off and if the mask size exceeded the image size of one of the images in the tuple, the following images of the tuple were smoothed with an incorrect mask size. This problem has been fixed.
  • mean_n crashed when large arrays (n>20) of single-channel images were passed. This problem has been fixed.
  • The operators
    • measure_pos,
    • measure_pairs,
    • fuzzy_measure_pos,
    • fuzzy_measure_pairs, and
    • fuzzy_measure_pairing

    might have returned wrong edge values for very large sigmas (sigma > profile_length/7). This problem has been fixed.
  • median_separate in rare cases did not work for images of type byte and MaskWidth=1. Additionally, in rare cases it did not work for MaskWidth=1 for all supported image types except byte. These problems have been fixed.
  • open_serial could not open serial ports larger than COM9 directly. This problem has been fixed.
  • paint_xld did not fill some pixels at the border of the contour in very rare cases. This problem has been fixed.
  • project_object_model_3d did not return the complete silhouette in some cases. Especially if the parameter HiddenSurfaceRemoval was set to 'false', no silhouette was returned at all. This problem has been fixed.
  • projective_trans_image_size returned the error 3605 ("Projective transformation is singular") when HomMat2D had a too small determinant. To prevent an image transformation under a singular matrix, the operator checked the determinant, although matrices with small determinants can still be well defined (non-singular). This problem has been fixed. The check is now based on the matrix rank.
  • read_contour_xld_dxf and read_polygon_xld_dxf read some elliptical arcs incorrectly such that they were rotated by 180 degrees. This problem has been fixed.
  • Using Parallel HALCON read_fft_optimization_data returned the error 3653 ("Storing the optimization data failed") if it was called before any other FFT-related operator (e.g., fft_image, optimize_fft_speed). This problem has been fixed.
  • read_tuple crashed in rare cases when reading a tuple that contained strings. This problem has been fixed.
  • segment_characters returned an empty tuple in UsedThreshold if the operator was called in tuple mode and -1 if it was called in simple mode if no characters were segmented. This problem has been fixed. Now, if no characters can be segmented, the parameter UsedThreshold returns -1 for both modes. Note that if you use Parallel HALCON, a single value is returned in tuple mode and in simple mode. If you use Standard HALCON, in tuple mode UsedThreshold contains one entry for every input region. It is suggested to call segment_characters in tuple mode if more than one region is used.
  • select_characters did not work correctly if the parameter Punctuation was set to 'true'. It added a character more than once. Additionally, select_characters lost small regions like dots if the parameter ConnectFragments was set to 'true'. These problems have been fixed.
  • The operators
    • send_image,
    • send_region,
    • send_tuple, and
    • send_xld
    by default did not send data immediately, but waited up to 200ms until full data packets were accumulated. This is the default setting of most operating systems. As a result, receive_* operators seemed to take 200ms (or multiples) until returning. This problem has been fixed. Now, the data is transmitted without delay.
  • set_serial_param did not support the setting of multiple modes for the parameter 'FlowControl' at the same time. This problem has been fixed. Now, it is possible to set 'xon_xoff', 'cts_rts', and 'dtr_dsr' at the same time by concatenating the single modes separated with a space, e.g., 'cts_rts dtr_dsr'.
  • The results of the operators smallest_circle and smallest_circle_xld were slightly inaccurate on SSE2 and 64 bit architectures with regions or contours that were positioned far away from the origin. Thus, sometimes the results of select_shape, select_shape_xld, and fill_up_shape, when setting Features to 'outer_radius', and the results of shape_trans and shape_trans_xld, when setting Type to 'outer_circle', could have been slightly inaccurate. The error was correlated with the distance of the input contour from the origin, i.e., the error increased with large row or column coordinates. The inaccuracy did not concern Halcon XL. This problem has been fixed.
  • smallest_rectangle2_xld hung if the input contour was at least two points long and if all contour points were identical. This problem has been fixed.
  • sobel_amp, sobel_dir, and laplace did not return an error with images of too small dimensions. This problem has been fixed.
  • tile_images and tile_channels returned incorrect image domains in certain cases. If TileOrder was set to 'vertical' and NumColumns and the number of input images were chosen such that at least one column of the output image was empty and the last used column was completely filled with images, this last column was missing in the output domain. This problem has been fixed.
  • trainf_ocr_class_mlp and trainf_ocr_class_svm returned an undefined error if the trainfile contained samples with empty regions. This problem has been fixed.
  • trans_from_rgb and trans_to_rgb did not return the correct output domain if the input images had different domains when running automatic parallelization on domain level. This problem has been fixed.
  • tuple_chrt could have caused crashes if called with input tuples containing 0 (zero) as first element or containing multiple 0 (zeroes) consecutively. This problem has been fixed.
  • tuple_string crashed when called with the parameter Format of type integer or real instead of string. This problem has been fixed.
  • zoom_image_size and zoom_image_factor caused artifacts when zooming an image from a small size to a significantly larger size, e.g., from a width of 2 to a width of 30. affine_trans_image and affine_trans_image_size were affected as well. This problem has been fixed.

HALCON/C

o Examples:
  • The C interface example example6.c now shows the usage of the function T_call_halcon_by_id instead of the deprecated function T_call_halcon.

o Bug Fixes:
  • If an operator was called using a single API variant in HALCON/C, an empty tuple returned by the operator for a single-value return type caused a crash. This problem has been fixed.

HALCON/C++

o Functionality:
  • The access to parameter values by their parameter name via the class HOperator (with methods such as SetInputCtrl) is now significantly more efficient.

o Bug Fixes:
  • Operators of extension packages under HALCON/C++ might have crashed or returned an HALCON error when called as first operator. This problem has been fixed.
  • If an operator was called using a single API variant in HALCON/C++, an empty tuple returned by the operator for a single-value return type caused a crash. This problem has been fixed.

HALCON/.NET

o Bug Fixes:
  • It was possible for HWindowControl to raise an error when a window was resized to a very small size (or anchored to a form that got minimized). This problem has been fixed.
  • Operators of extension packages under HALCON/.NET might have crashed or raised an exception when called as first operator. This problem has been fixed.
  • For HALCON/.NET the class HVariationModel did not release all allocated resources when disposed, causing a memory leak. This problem has been fixed.

HDevEngine

o Bug Fixes:
  • To load and free programs and procedures in HDevEngine was not thread-safe. If several programs or procedures were loaded and freed in different threads in parallel, the HDevEngine application could have crashed or could have gotten into an undefined state. This problem has been fixed. The following methods were concerned:
    • HDevProcedureCall::HDevProcedureCall(const char* file_name);
    • HDevProcedureCall::~HDevProcedureCall();
    • HDevEngine::LoadProgram(const char* file_name);
    • HDevEngine::SetProcedurePath(const char* path);

Image Acquisition Interfaces

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

o New Image Acquisition Interfaces:
  • HALCON now also includes the Crevis interface to support the USB 2.0 cameras from Crevis Corporation.
    The new example programs crevis.dev, crevis_binning.dev, crevis_parameters.dev, crevis_simple.dev, and crevis_trigger.dev in the directory examples/hdevelop/Image/Acquisition show how to use this interface.
  • HALCON now also includes the Sentech interface to support the STC USB 2.0 cameras from Sentech.
    The new example programs sentech.dev, sentech_parameters.dev, sentech_simple.dev, and sentech_trigger.dev in the directory examples/hdevelop/Image/Acquisition show how to use this interface.
  • HALCON now also includes the SVCam-GigE interface to support the Gigabit Ethernet cameras from SVS-Vistek.
    The new example programs svcam-gige.dev, svcam-gige_crop.dev, svcam-gige_parameters.dev, svcam-gige_simple.dev, and svcam-gige_trigger.dev in the directory examples/hdevelop/Image/Acquisition show how to use this interface.

o Modified Image Acquisition Interfaces:
  • The following HALCON image acquisition interfaces have been revised since HALCON 8.0.3:
    • The 1394IIDC interface now provides an improved control of the isochronous resource manager. Additionally, some minor problems regarding parameter queries have been fixed.
    • For the DirectFile interface a problem regarding the positioning of the current frame number in case that multiple DirectFile acquisition handles are used simultaneously has been fixed.
    • The DirectShow interface now allows the correct device initialization in special cases.
    • For the File (VirtualFG) interface a problem that occured when trying to read a non-existing or corrupt TIFF file has been fixed.
    • The GigEVision interface is now based on the latest GenICam release v2.0.1 and provides a specific filter driver to increase the performance under Windows XP/Vista/7. In contrast to older revisions of the GigEVision interface, all necessary environment variables are set automatically. Additionally, some problems have been fixed and the interface revision includes several new parameters and enhancements regarding device discovery, device initialization, and parameter handling.
      The new example program gigevision_forceip.dev in the directory examples/hdevelop/Image/Acquisition shows how to use ForceIP to correctly configure a misconfigured GigEVision device.
    • For the GingaDG interface a problem in the operator info_framegrabber when called with the input parameter 'parameters' has been fixed.
    • For the INSPECTA interface a problem regarding the color conversion for the 32BPP_XBGR pixel format has been fixed.
    • For the mEnableIII and mEnableIV interfaces a problem in the operators open_framegrabber, grab_image, grab_image_async, and grab_image_start regarding the use of multiple cameras connected to the same physical board has been fixed.
    • The mEnableVisualApplets interface is now based on the driver version 4.2.25 to support the new microEnable IV FULL x4 boards. Furthermore, a problem in the operators open_framegrabber, grab_image, grab_image_async, and grab_image_start regarding the use of multiple cameras connected to the same physical board has been fixed.
    • The MILLite interface now supports also the Solios eCL/XCL-B boards and provides the use of the continuous grabbing mode. Additionally, problems regarding external triggering, aborting a pending grab, the use of multiple cameras connected to the same physical board, the use of the action parameter 'do_abort_grab' (also in case that no corresponding grab operator is called concurrently), and two problems regarding the parameters of the user-specific callback functions have been fixed.
    • The pylon interface has been adapted to the new Basler pylon SDK version 2.1. Additionally, the interface has been extended to enable the query of the access mode, category name, and visibility of a specific parameter. Furthermore, two problems regarding the first triggered image in continuous grabbing mode and the exception handling in case of wrong device names have been fixed.
    • The RangerC and RangerE interfaces are now based on the new version 4.0 of the underlying Icon SDK. Furthermore, the interfaces have been extended to support also the reading of mark data, i.e., the call of grab_data or grab_data_async now returns also the mark data values and status.
      The new example programs rangerc.dev and rangere.dev in the directory examples/hdevelop/Image/Acquisition show how to use this interface.
    • For the SaperaLT interface problems have been fixed to ensure the proper use of multiple DALSA Genie cameras. Additionally, the interface supports now also the RGB161616 color format and ensures the correct alignment of BGR101010 pixel data. Furthermore, the interface now provides a new action parameter to enable software triggering and fixes a bug in the operator open_framegrabber when using multiple cameras.
    • For the SonyXCI-2 interface problems regarding the dynamic setting of the actual camera AOI, the control of horizontal binning via the operator set_framegrabber_param, and the control of the image size and cropping parameters have been fixed
    • For the SVCam-GigE interface a problem in the software trigger mode has been fixed. Additionally, the interface provides new parameters to enable the full control over the image acquisition in (software) trigger mode.
    • The uEye interface is now based on the new driver version 3.40 and includes several extensions and improvements such as the support of lookup tables and onboard color conversion, new parameters to abort a pending grab and to control the start of the next asynchronous grab, and a revised grab engine to avoid busy waiting. Additionally, it supports also Windows x64 and provides new parameters for controlling gain, white balancing, color correction, and for loading a camera parameter ini-file. Furthermore, problems regarding the parameter 'trigger_signal' and the behavior of the operator grab_image have been fixed.
    • Querying the parameter ranges under Windows x64 via get_framegrabber_param(...,'*_range',...) did not return the optional values 'auto' or 'one_push'. This problem has been fixed.

    Please refer to the corresponding documentation for information about additional changes, especially whether a new revision of the corresponding device driver is required.


Manuals

o Reference Manual:
  • The reference manual contained some C++ examples that contained a header part for which the line "using namespace Halcon;" was missing. Because of that, they could not be compiled without errors. This problem has been fixed.
  • The reference manual entries of append_ocr_trainf, write_ocr_trainf_image, and write_ocr_trainf referred only to the box classifier. They have been extended to comprise also the MLP and the SVM classifier.
  • The reference manual entries of edges_image, sobel_dir, frei_dir, and prewitt_dir were incorrect. They showed wrong directions for the gradients in the lists that explain the edge direction. This problem has been fixed.
  • The reference manual entry of gen_image_surface_first_order was wrong. The description refered to gen_image_surface_second_order instead of gen_image_surface_first_order. This problem has been fixed. Now, it correctly states that a tilted gray surface is created instead of a curved gray surface.
  • The reference manual entries of gen_rectangle2 and gen_circle have been extended. They now explain why a resulting region may contain additional pixels at the border and some individual pixels at the border may be missing.
  • The documentation of median_image incorrectly described the parameter MaskType as a region. This problem has been fixed. Furthermore, the documentation now describes how a median filter works and shows typical applications of the filter.
  • The reference manual entry of project_3d_point contains an example in which the parameters of affine_trans_point_3d were in the wrong order. This problem has been fixed.
  • The reference manual entry of set_spy now contains a warning that the operator cannot be used to debug multithreaded programs or programs using the automatic parallelization.
  • The reference manual entry of test_obj_def now states that the operator is obsolete and must not be used.

Miscellaneous

o Installation:
  • Under Windows, the new version HASP 4.116 of the USB dongle driver is included.
  • Now, the official runtime version of GenICam v2.0.1 is included. The corresponding files are located in the directory genicam under %HALCONROOT%.
  • Now, a filter driver for the GigEVision interface is included. The corresponding installation files are located in %HALCONROOT%\misc\drivers\win_xp_32.

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






Webmaster Last modified: Fri Feb 19 15:00:00 CET 2010