This document provides the release notes for MVTec HALCON 10.0.3, as released in July 2012. HALCON 10.0.3 is primarily a maintenance release that fixes all known bugs in HALCON 10.0.2.
Overview
This document contains the following information:
- Detailed Description of Changes in HALCON 10.0.2
- Major New Features of HALCON 10.0.1
- Detailed Description of Changes in HALCON 10.0.1
- Major New Features of HALCON 10.0
- Detailed Description of Changes in HALCON 10.0
- Major New Features of HALCON 9.0.2
- Detailed Description of Changes in HALCON 9.0.2
- Major New Features of HALCON 9.0.1
- Detailed Description of Changes in HALCON 9.0.1
- Major New Features of HALCON 9.0
- Detailed Description of Changes in HALCON 9.0
Compatibility
-
Licenses
HALCON 10.0 licenses are also valid for HALCON 10.0.3. In contrast, all HALCON 9.0 licenses must be replaced or upgraded. Please contact your local distributor.
-
HALCON Library
HALCON 10.0.3 is fully compatible with HALCON 10 except for the changed behavior of some operators due to bug fixes. Compared to HALCON 9.0, many extensions have been introduced. Thus, the HALCON 10.0.3 libraries are not compatible with HALCON 9.0 or earlier versions.
-
HALCON Applications
Applications (i.e., executables) developed with HALCON 10.0, HALCON 10.0.1, or HALCON 10.0.2 can be used with HALCON 10.0.3, i.e., HALCON 10.0.3 is binary compatible with HALCON 10.0, HALCON 10.0.1, and HALCON 10.0.2.
The incompatibility with HALCON 9.0 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 10.0, HALCON 10.0.1, and HALCON 10.0.2, respectively.
Please note that applications using HALCON/.NET (and HDevEngine/.NET) have local copies of the corresponding assemblies (halcondotnet.dll etc.). After installing HALCON 10.0.3, these applications would therefore use the old version of the HALCON/.NET interface together with the new version of the HALCON library. In order to benefit from the bug fixes in the HALCON/.NET interface as well, you must either replace the assemblies manually or re-compile the projects. If you do not recompile the application, you need to add an application configuration file mapping the application's expected assembly version to the new version. See the Programmer's Guide for more information.
-
Image Acquisition Interfaces
The system requirements of the following image acquisition interfaces have been changed since HALCON 10.0.2:
- For using the updated ABS interface you must install the new UK11xx camera API version 1.10 or higher.
- For using the updated Andor interface you must install the new Andor SDK version 2.93 or higher.
- For using the updated BitFlow interface you must install the new BitFlow SDK 5.60.
- For using the updated LinX interface you must install the new LinX SDK 5.60.
- For using the updated pylon interface you must install the new Basler pylon SDK version 3.0 or 3.1.
- For using the updated Sentech interface you must install the new Sentech SDK version 1.0.0.7 or higher.
If you have developed your own acquisition interfaces with HALCON 10.0, HALCON 10.0.1, or HALCON 10.0.2, you can use them with HALCON 10.0.3 without further action.
-
Extension Packages
Extension packages developed with HALCON 10.0, HALCON 10.0.1, or HALCON 10.0.2 can be used with HALCON 10.0.3 without further action. Extension packages developed with HALCON 9.0.x must be re-generated.
-
ActivVisionTools
- If you have been using ActivVisionTools 3.2, please contact your distributor for further information on how to run this version together with HALCON 10.0.3.
-
ActivVisionTools 1.0 to 3.1 cannot be used with HALCON 10.0.3. If the setup program detects such an ActivVisionTools version, it warns you that by continuing to install HALCON 10.0.3 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 10.0.3
Detailed release notes can be obtained for the following topics:
- HDevelop
- HALCON Library
- HALCON/.NET
- HDevEngine
- HALCON Codelets
- Image Acquisition Interfaces
- Manuals
- Miscellaneous
HDevelop
-
Functionality:
- HDevelop now provides a new command line option named -delete_unused_local_procs that allows in conjunction with the option -convert to remove all unused local procedures from the program that is about to be converted.
- For invalid program lines, the error tool tip is now displayed everywhere in the program line. Until now, the error tool tip was displayed only if the mouse cursor was over the operator name. If the mouse cursor was over a variable name the contents of the variable was displayed also on invalid program lines. This has been changed. In an invalid program line it is now possible to display the variable contents in a tool tip by pressing the control key while the mouse cursor rests over a variable name.
- The Browse Example dialog now allows to exit the Find edit area by keyboard navigation: pressing the <Enter> or the <Move Down> keys will now move the key focus into the example file list and select the first entry in this list.
- The Variable Inspection window now allows to set values to control variables that haven't been instantiated yet.
- If within the Procedure Interface dialog the interface of a procedure is changed and than, without pressing Apply another procedure is selected, a message box warns the user that the modifications may be lost. One option was to save the changes via a Save button, but this was misleading. One could think that the procedure should be saved into the file system but what happens is that the modifications made in the dialog are saved or applied to the procedure. Hence, the button was renamed into Apply.
-
Bug Fixes:
- Especially under Windows, updating the program counter became quite slow after selecting the user color scheme for the program listing via the Preferences dialog. This problem emerged notably if many operations each with a short run time were executed. This problem has been fixed.
- Although dev_update_pc was switched off, the listing jumped to a catch statement if an exception is caught. This problem has been fixed.
- There was no auto completion shown if as the operator name fragment an HDevelop operation name, like 'band', was entered. This problem has been fixed.
- In the Operator window, the operator list was not updated according to the new operator name substring if the operator name was altered only via a mouse action, e.g., via the context menu of the editor field or by pasting a text with the middle mouse button under Linux. If an operator name was pasted to the operator name area as the very first action within the Operator window, the operator was not loaded into the Operator window as expected. This problem has been fixed.
- If, within the Graphics window, images with a very low height or width were displayed, e.g., images from a line scan camera, the zooming via the mouse wheel or the Zoom In/Out tool buttons was faulty. After the zooming (independent of the zooming direction) the short side of the image was heavily increased while the other side was zoomed normally. By this the aspect ratio became extremely distorted. This problem has been fixed.
- There were some interactive operators for which no or a wrong instruction was displayed in the status bar. The following operators were effected: drag_region1, drag_region2, drag_region3, read_string, read_char, and slide_image. This problem has been fixed.
- Live acquisition in HDevelop could interfere with draw operations, preventing the creation of ROIs and in rare cases even causing a crash. This problem has been fixed. In addition to disabling the GUI, draw operations now block background operations such as live acquisition.
- The Window sub menu from the main menu bar could become very big if a procedure with a very long signature was selected and displayed in the Variable window. This problem has been fixed.
- HDevelop sometimes could not trigger the opening of PDF files from the help browsers right pane. This problem has been fixed.
- HDevelop's Program Line View did not always maintain the correct selections when new breakpoints or bookmarks were added. This happened when the new breakpoints or bookmarks were added between two selected ones. This problem has been fixed.
- If for the operator open_framegrabber with File as image acquisition interface the Open File dialog was opened for the parameter CameraType some file types, like *.tif and *.seq have been suppressed although they are listed in the list of supported media files. This problem has been fixed.
- After loading the operator open_framegrabber from the Program listing into the Operator window, pressing the auto detect button, and canceling the message box that warns about a possible crash owing to possible driver problems HDevelop could crash. This problem has been fixed.
- The User tab card of the Variable View sometimes showed wrong variables if the variable names were changed in the Program window. This problem has been fixed.
- HDevelop's Find/Replace dialog sometimes did not mark and replace the correct occurrence of the found text. This problem has been fixed.
- The Find/Replace dialog did find variables that are written in brackets at the wrong position. The selection of the search result started at the first bracket instead of the position of the first character of the variable name. This problem has been fixed.
- After closing the Find/Replace dialog, setting the text cursor, and reopening the Find/Replace dialog the search did not start at the current cursor position but after the last search result. The same problem occurred with the Find Again functionality (Ctrl+G). This problem has been fixed.
- If the Line Profile tool was opened via the Measure Assistant, the selected smoothing value was not correctly transferred to the Line Profile tool. This problem has been fixed.
- The Gray Histogram tool crashed if an image was used that contains the values INF or NaN. This problem has been fixed.
-
There were some problems with the RGB channel mode in the
Gray Histogram tool.
- If the RGB channel mode was selected for an int2, uint2, int4, int8, or real RGB image with all pixels having the same value, HDevelop crashed.
- The adaptive mode was not properly set in the RGB channel mode. Instead of setting the vertical and horizontal ranges according to the minimum and maximum values over all channels, only the third channel was used.
- The colors used for displaying the histograms of the second and third channels were interchanged: the histogram plot of the second channel was displayed in blue and the plot of the third one in green.
- In the Gray Histogram tool, the auto quantization could wrongly return 0 for the quantization of the histogram of an int4 image. This led to a wrong histogram curve: instead of printing connected bars for neighbored bins only thin peaks were displayed. This could suggest that there were gray values in between that did not occur in the image. This problem has been fixed.
- In the Print dialog, it was not possible to configure the Print Selection mode properly. It was not possible to select whether used procedures should be printed or not because the corresponding check boxes were disabled. However, the selected settings that had been made there before were used. This problem has been fixed.
- The assistants of HDevelop did not support file names that contain non-ASCII characters. The file could be used, but when the settings were stored and loaded, the file name was decoded incorrectly. This problem has been fixed.
- If the HDevelop Image Acquisition Assistant was closed while the live grab was running, it continued to grab images. This problem has been fixed.
- While working with the Calibration assistant message boxes with HALCON low-level error messages could pop up and interrupt the work flow. This happened when the calibration plate could not be extracted and the low-level error messages were switched on. This problem has been fixed.
- Since HALCON 10.0.1, the Calibration Assistant no longer displayed the coordinate system even when the option was activated. This problem has been fixed.
-
If in the Matching assistant an anisotropic shape model was
loaded, the code generation produced incorrect code: the
different values for the scaling in row and column direction
were ignored and the operator find_scaled_shape_model, which uses only the
parameters for the scaling in row direction, was generated into
the program instead of the operator find_aniso_shape_model. This problem has been
fixed.
In addition, if the scaling factors for the scaling in row and column direction are explicitly unlocked by pressing the lock/unlock button, now always the anisotropic shape model is used independently of the actually selected parameters. - Using the Matching assistant, it could happen that after loading an assistant settings file (*.das) the property 'Shape models may cross the image border' was not correctly handled. Although the appropriate check box was correctly set and the generated code would contain the appropriate operator call, the parameter was not used within the assistant while applying the model on the test images. In addition, the Always Find property on the Model Use tab card was not properly set and evaluated if it was set from an assistant settings file. These problems have been fixed.
- The ROI width used by the Measure Assistant was twice as large as the value specified in the GUI. This problem has been fixed. Also, a value of 0 is now supported for the ROI width.
- If an HDevelop program contained locked procedures and the default file format was dvp, 'Make All External' resulted in the loss of the locked procedures. This problem has been fixed.
- If procedure names differ only by upper and lower case, the sorting of bookmarks and breakpoints within these procedures could be wrong. The bookmarks and breakpoints within these procedures were sorted only by their line number, so that in the Program Line View window the program lines of these procedures were mixed up and stepping through the bookmarks with F11/Shift+F11 could jump between the procedures. These problems have been fixed.
- The activation of the minimum or maximum value of a procedure's control parameter via the Enabled check box within the Procedure Interface dialog was ignored if the appropriate minimum or maximum value remained unchanged on 0. After applying the changes in the Procedure Interface dialog, the Enabled check box was reset to unchecked. In addition, if the minimum value is changed, intentionally the maximum value is adapted accordingly and the Enabled check box is automatically checked. However, if afterwards the check box have been unchecked by the user because only the setting of the minimum value was intended, the unchecking was ignored and after pressing Apply the check box was checked again. These problems have been fixed.
- If the documentation of a procedure contained an ampersand (&), everything behind the ampersand was lost after saving the procedure. This problem has been fixed.
- HDevelop sometimes exported programs containing nested exception handling incorrectly to C and Visual Basic 6.0. This problem has been fixed.
- HDevelop exported error handling incorrectly to Visual Basic 6.0. If an error variable was used (see usage of dev_error_var and dev_set_check('~give error')) then the value of the error variable was not always updated correctly in the exported code. This happened if an error variable was first assigned an error code in case of an operator error and afterwards another operator call worked correctly. In that case, the value of the error variable was not updated correctly. Furthermore, it was not possible to use different local error variables in one procedure in exported Visual Basic 6.0 code. These problems have been fixed.
- HDevelop exported program lines containing string constants incorrectly to C if the string constant contained the sub string '*/' and the program line was exported as a comment. In that case, the exported code failed to compile. This problem has been fixed.
- HDevelop exported the module name incorrectly to Visual Basic .NET and Visual Basic 6.0. If all referenced external procedures were exported to separate files an external procedure could not be called from within another module (in most cases). This problem has been fixed.
- HDevelop exported calls to procedures beginning with dev_map, dev_unmap, and dev_update as comments. This problem has been fixed.
- When exporting external procedures to separate files, HDevelop's Export dialog sometimes erroneously warned that the external procedures export directory is not writeable. This happened if the directory string in the Export dialog was not normalized, i.e., if it contained backslashes, double slashes, or similar. This problem has been fixed.
- When exporting a program that uses external procedures to separate files, HDevelop exported the file with main and the local procedures incorrectly, if the directory string in the dialog did not contain a backslash or slash at the end. In this case the regarding export file was not named correctly and it was not placed in the export directory but parallel to it. These problems have been fixed.
- HDevelop exported local procedures incorrectly to C# if the procedure contained output parameters and exporting of local procedure bodies was disabled. This problem has been fixed.
- In SDI mode, the ROI Inspection windows of the Line Profile tool and different assistants, namely the Matching assistant and the Measure assistant, were opened at the wrong place. Instead of opening a separate top level window the ROI inspection widget was placed somewhere inside the tool or assistant. This problem has been fixed.
- HDevelop may have crashed on shutdown if SDI mode was used and the Variable View showed the Auto tab card. This problem has been fixed.
- If an extension package operator returns a user-defined error message with an error code greater than 10000, the error text was not correctly displayed in the HDevelop error message box. This problem has been fixed.
- HDevelop sometimes crashed if during the execution of the operator wait_seconds within a procedure the program counter was set in another procedure like main. This problem has been fixed.
- On Linux systems, HDevelop could crash if during the execution of read_string the Graphics window was closed. This problem has been fixed.
- It was possible to bring HDevelop into a state where no parameter edit field in the procedure interface dialog was activated but the Move Down button (which is used to change the order of procedure parameters) was enabled. Pressing the Move Down button in such a state caused HDevelop to crash. This problem has been fixed.
- If the execution of a program line that threw an exception, returned a low-level error, and was embedded within a try-catch block was stopped via the HALCON Low Level Error dialog, and if the program counter was then set to another program line, the program counter jumped, after the execution of the new program line with F6, to the catch statement that followed the program line that returned the low-level error. This problem has been fixed.
-
Examples:
New HDevelop example programs:
-
The new HDevelop example program
- hdevelop/Image/Acquisition/genicamtl_areascan3d_objectmodel3d.hdev
-
The new HDevelop example program
- hdevelop/Image/Acquisition/gigevision_link_aggregation.hdev
-
The new HDevelop example program
- hdevelop/Image/Acquisition/pylon_2cameras.hdev
The following HDevelop example programs have been modified:
- The error handling in some HALCON/C example programs has been corrected.
- Some HDevelop example
programs contained unused local procedures. These
examples may have incorrectly been listed as examples for
specific operators in the Browse Examples dialog. The
following HDevelop example programs were affected:
- hdevelop/explore_halcon.hdev
- hdevelop/Tools/Geometry/distance_cc_min.hdev
- hdevelop/Identification/Bar-Code/rss14truncated.hdev
- hdevelop/Identification/Bar-Code/composite_print_quality_isoiec15416.hdev
- hdevelop/Applications/Data-Codes/pdf417_bottle.hdev
- hdevelop/Applications/OCR/find_text_dongle.hdev
- hdevelop/Applications/Completeness-Check/color_segmentation_pizza.hdev
- hdevelop/Applications/Position-Recognition-2D/find_cocoa_packages_local_deformable.hdev
- hdevelop/Matching/Deformable/create_planar_calib_deformable_model_xld.hdev
- hdevelop/Matching/Correlation-Based/find_ncc_model_defocused_precision.hdev
- hdevelop/Image/Acquisition/abs.hdev
- hdevelop/Image/Acquisition/video4linux2_parameters.hdev
- hdevelop/Image/Acquisition/svcam-gige.hdev
- hdevelop/Image/Acquisition/sentech.hdev
- hdevelop/XLD/Transformations/crop_contours_xld.hdev
- hdevelop/Matrix/adjust_circle_matrix.hdev
- solution_guide/basics/measure_metal_part.hdev
- solution_guide/basics/matching_green_dot.hdev
- solution_guide/basics/ecc200_training_simple.hdev
- solution_guide/basics/atoms.hdev
- solution_guide/basics/crystal.hdev
- solution_guide/2d_measuring/measure_metal_part_extended.hdev
- solution_guide/3d_vision/handeye_stationarycam_grasp_nut.hdev
- solution_guide/3d_vision/bundle_adjusted_mosaicking.hdev
- solution_guide/2d_data_codes/write_2d_data_code_model.hdev
- solution_guide/2d_data_codes/2d_data_codes_first_example.hdev
- The C++ example program
- hdevengine/cpp/error_handling.cpp
- The example programs
- cpp/mfc/MultiThreading and
- cpp/mfc/FGMultiThreading
- The HDevelop example
program
- hdevelop/Control/comment.hdev
-
The new HDevelop example program
HALCON Library
-
Modified Operators:
- The bar code reader now has a new parameter 'upce_encodation' to set the encodation of UPC-E results to be in UCC-12 format or in zero-suppressed format. The parameter can be set with the operators set_bar_code_param and set_bar_code_param_specific and read with get_bar_code_param and get_bar_code_param_specific.
- gen_rectangle2 and gen_measure_rectangle2 had default values that produced rectangles that lie partially outside the image. Now, these rectangles lie typically within the image area.
- points_harris_binomial now also supports uint2 images.
- read_contour_xld_dxf now allows to control the approximation accuracy of the DXF entity SPLINE with the generic parameter 'min_num_points'.
- set_calib_data_cam_param now has the default value 'area_scan_division' instead of 'area_scan_polynomial' for the parameter CameraType. Users should typically use the division model for camera calibration because it works with fewer images. Only if the accuracy of the calibration is not sufficient owing to the type of the lens distortions, the polynomial model should be used.
- The mode of the shape-based matching in which models that lie partially outside the search image can be found can be activated individually for each shape model with the operator set_shape_model_param and the parameter 'border_shape_models'. This allows to have different behaviors for different shape models regarding this mode.
-
Bug Fixes:
- adjust_mosaic_images crashed if an image pair was passed that did not overlap. This problem has been fixed. Now, the error 3701 ("Fields of view of both cameras do not intersect each other.") is returned.
- approx_chain and approx_chain_simple did not return an error if the input parameter 'Row' had more elements than the input parameter 'Column'. This problem has been fixed.
- binocular_disparity and binocular_distance sometimes returned the error 6002 ("Memory partition on heap has been overwritten"). This could particularly happen, when the left image had a reduced domain and the parameter NumLevels was set to a fairly high value, e.g., to 5. Note that this behavior could be observed even with full domain images when the operators execution was parallelized. This problem has been fixed. Now, such a situation is detected and the error message 1307 ("Wrong value of control parameter: 7"; for binocular_disparity) or 1310 ("Wrong value of control parameter: 10"; for binocular_distance) is returned instead, indicating that the value of NumLevels is inadequate.
- calibrate_cameras sometimes returned too high error values indicating that the internal optimization did not converge properly. This behaviour could be observed when the focal length of the camera was larger than 0.02 m. This problem has been fixed.
- connection may have returned wrong results if the system variable neighborhood was set to 4. This happened only, if the input region was the result of a previous call of the operator connection and if the system variable neighborhood was set to 8 for this previous call of connection. This problem has been fixed.
- create_shape_model_3d and read_shape_model_3d sometimes had a memory leak of varying size if an error occurred during the execution (e.g., not enough memory available). This problem has been fixed.
- create_surface_model did not invert the normal vectors if the generic parameter 'model_invert_normals' was set to 'true' and the passed 3D object model contained vertex normals without faces. This problem has been fixed.
- create_uncalib_descriptor_model and create_calib_descriptor_model did not support uint2 images in the case when the point extractor 'harris_binomial' was selected. This problem has been fixed.
- The data code print quality inspection was not robust. Especially the grade for modulation may have changed significantly if the image containing the symbol was cropped by a few pixels. This problem has been fixed.
- determine_deformable_model_params was wrongly executed in 'reentrant' multithreading mode. This might have caused HALCON to crash when executing determine_deformable_model_params in multiple threads simultaneously. This problem has been fixed. The documentation has been corrected accordingly.
- determine_shape_model_params was wrongly executed in 'reentrant' multithreading mode. This might have caused HALCON to crash when executing determine_shape_model_params in multiple threads simultaneously. This problem has been fixed. The documentation has been corrected accordingly.
- determine_shape_model_params, determine_ncc_model_params, and determine_deformable_model_params sometimes returned a wrong value for the generic output parameter 'angle_step', i.e., the value differed from the value that was returned by the operator get_shape_model_params, get_ncc_model_params, or get_deformable_model_params, respectively. This was only the case for very large angle steps that exceeded 11.25 degrees. This problem has been fixed.
- Images with reduced domain were displayed incorrectly in certain cases. This problem has been fixed.
- HALCON could not read or process images with a height or width of MAX_FORMAT. This problem has been fixed.
- disp_obj ignored the background color in certain cases. This problem has been fixed.
- drag_region1 returned the error 6041 ("No memory block allocated at last") when running in memory checking mode (set_check('memory') or 'Show Memory Usage'-Flag in HDevelop) and pressing the right mouse button before the left mouse button. This problem has been fixed.
- draw_nurbs, draw_nurbs_mod, draw_nurbs_interp, draw_nurbs_interp_mod, draw_xld, and draw_xld_mod crashed or lead to memory corruption if they were called with an invalid window handle. These problems have been fixed.
- exhaustive_match crashed in rare cases when diagonal templates are searched in an image. This problem has been fixed.
- find_aniso_shape_model, find_aniso_shape_models, find_scaled_shape_model, find_scaled_shape_models, find_shape_model, and find_shape_models may have crashed if the system parameter 'border_shape_models' was set to 'true' and the search image had a reduced domain. This problem has been fixed.
- find_bar_code might have returned a wrong UPC-E result if the bar code reader detected an invalid combination of the number sets A and B. This problem has been fixed.
- find_data_code_2d returned the error 3513 ("Number of chords too big for num_max") in rare cases. This problem has been fixed.
- find_marks_and_pose might have crashed in rare cases. This problem has been fixed.
- find_shape_model in very rare cases crashed if 'max_deformation' with a value greater than 0 was used and the input image had a reduced domain. This problem has been fixed.
- find_shape_model_3d did not find matches if the parameter NumLevels was set to 1, i.e., only the finest pyramid level was searched. This problem has been fixed.
- find_shape_model_3d returned the error 3510 ("Exceeding the maximum number of run lenths while automatic expansion") if NumLevels was set to a value below the lowest available model level that previously was set with create_shape_model_3d. This problem has been fixed.
- find_shape_model_3d in rare cases returned inaccurate results if 'pose_refinement' was set to 'least_squares', 'least_squares_high', or 'least_squares_very_high'. This problem has been fixed.
- find_text hung in rare cases. This problem has been fixed.
- find_text crashed in rare cases. This problem has been fixed.
- find_text crashed in rare cases if 'stroke_width' was set to a very low value. Further find_text hung in rare cases with uint2 images. These problems have been fixed.
- fit_circle_contour_xld might have returned a circle that did not fit well for small contours if using the Algorithm 'algebraic'. This problem has been fixed.
- fit_ellipse_contour_xld determined the point order incorrectly if the parameter Algorithm was set to 'geometric', 'geohuber', or 'geotukey' and if the first points of the contour were heavily distorted, e.g., owing to strong noise. This problem has been fixed.
- fit_line_contour_xld may have returned negative values in the parameter Dist. This problem has been fixed.
- measure_pairs, measure_pos, fuzzy_measure_pairing, fuzzy_measure_pairs, and fuzzy_measure_pos returned too low amplitudes. This was especially the case for small sigmas. This problem has been fixed.
- gen_arbitrary_distortion_map did not return a correct image map. Furthermore, the width and height of the returned image map were too small by one pixel each. This problem has been fixed.
- get_bar_code_param did not return the parameter value 'start_stop_tolerance' but returned an error instead. This problem has been fixed.
- get_data_code_2d_results in rare cases returned the internal error 3513 ("Number of chords too big for num_max") if the print quality of QR codes was inspected. This problem has been fixed.
- get_system returned the wrong value 'fixed' instead of '-fixed-' for 'default_font' on Windows systems. This problem has been fixed.
- gray_dilation_shape could crash if a real-valued height was used with the 'rectangle' shape. The problem appeared only if the automatic operator parallelization was enabled. This problem has been fixed.
- import_lexicon did not return when the text file to be read was emtpy. This problem has been fixed.
- open_framegrabber crashed with the File image acquisition interface when reading a TIFF image that contains an alpha channel. This problem has been fixed.
- prepare_object_model_3d and segment_object_model_3d failed in rare cases. This problem has been fixed.
- read_calib_data caused a small memory leak (224 Bytes). This problem has been fixed.
- read_contour_xld_dxf did not allow to control the approximation accuracy of the DXF entities CIRCLE, ARC, ELLIPSE, and SPLINE with the parameter 'max_approx_error'. This problem has been fixed.
- read_shape_model_3d crashed in rare cases if the model file could not be opened. This happened if the specified file did not exist, or the file had no read permission, or the file was no 3d shape model file, or the file had a wrong file version. This problem has been fixed.
- read_shape_model_3d sometimes crashed if the system ran out of memory. This problem has been fixed.
- read_string did not allow to remove already typed digits/text by pressing the backspace key. This problem has been fixed. On windows systems, it is now possible to remove typed digits/text in the operator read_string by pressing the backspace key.
- read_tuple did not check correctly for overflow when reading long values in a tuple. This was specially critical when attempting to load values in a 32 bit system which, however, were generated by a 64 bit system. The problem has been fixed
- receive_image and receive_region returned the error 5624 ("Received data type is too large") in HALCON XL (32bit) for large regions. This problem has been fixed.
- reconstruct_surface_stereo returned erroneous results in rare cases. This problem has been fixed.
- set_data_code_2d_param and read_data_code_2d_model did not set the symbol size parameters 'symbol_cols_min', 'symbol_rows_min', 'symbol_cols_max', and 'symbol_rows_max' properly for the Data Matrix ECC 200 data code in case that the model parameter 'symbol_shape' was set to 'square' (this is set either explicitly with set_data_code_2d_param or implicitly after setting, e.g., 'symbol_cols_min'='symbol_rows_min' and 'symbol_cols_max'='symbol_rows_max') As read_data_code_2d_model was affected, too, models written with write_data_code_2d_model will not have been read in properly by read_data_code_2d_model. This problem has been fixed.
- set_data_code_2d_param sometimes changed the 'symbol_shape' parameter of the Data Matrix ECC 200 data code although an error occurred during the operator run. This problem has been fixed.
- set_lut failed with error 5163 ("Wrong color table") if the file name had more than 40 characters. This problem has been fixed.
- test_equal_obj returned true, if an image was compared with another image that was created by appending an extra channel to the first image. This problem has been fixed.
- text_line_slant has not always calculated the correct angle. This problem has been fixed.
- Parallelization of threshold on big image arrays with small image domains decreased processing performance on some systems. This problem has been fixed.
- threshold_sub_pix might have returned an open border contour although it should have been closed. In this very rare case the first and last point of the returned XLD contour were not the same. This problem has been fixed.
- tile_images and tile_images_offset did not parallelize correctly on channel level. This problem has been fixed and these operators are now parallelized on internal data level instead of on channel level.
- tuple_greater_equal and tuple_less_equal returned 1 (true) if one or both of the passed tuples contains a NaN ("Not a Number" floating point numbers). According to most standards, comparisons with NaNs should always return false. tuple_greater_equal and tuple_less_equal now return 0 (false) if one of the passed tuples contains a NaN.
- tuple_number failed to parse negative integers correctly, i.e., values ranging from 0x7fffffff+1 to 0xffffffff. This problem has been fixed.
- watersheds returned basin regions that lay outside the image domain, if the domain was not a regular rectangle. This problem has been fixed.
- Some sensors and methods create XYZ images of type real that contain NaN or INF values. Such values might cause problems in subsequent processing. xyz_to_object_model_3d now ignores such values, and does not add them to the created 3D object model.
HALCON/.NET
-
Bug Fixes:
- Copy constructors and indexer functions of HALCON objects might have thrown the exception 4051 ("Image data management: object has been deleted already in operator copy_obj") in very rare cases. The problem occurred most likely if there was no further reference to the input object in the program flow such that the garbage collector might have cleaned the object too early. This problem has been fixed.
- In HALCON/.NET, a tuple element of type integer was automatically converted to the type double if it was assigned to a tuple of type double. This problem has been fixed. Now the element is not converted, but it is kept as an integer in a mixed tuple.
- There was a possible race condition in the termination of HWindowControlWPF that could in rare cases lead to an exception when closing the parent window. Also, a small memory leak occured when opening and closing a window containing HWindowControlWPF. These problems have been fixed.
HDevEngine
-
Functionality:
-
HDevEngine now has an option to throw an exception if
an uninitialized output parameter of a procedure is
accessed via
HDevProcedureCall::GetOutputIconicParamObject or
HDevProcedureCall::GetOutputCtrlParamTuple. This option
can be set via the SetEngineAttribute method of
HDevEngine setting the value false to the generic
parameter "ignore_invalid_results". If this option is
set to false, an exception is also thrown if the
uninitialized variable of a program is accessed via
HDevProgramCall::GetIconicVarObject or
HDevProgramCall::GetCtrlVarTuple. The default is that
no exception is thrown for not corrupting old
programs.
The C++ example program- hdevengine/cpp/error_handling.cpp
-
HDevEngine now has an option to throw an exception if
an uninitialized output parameter of a procedure is
accessed via
HDevProcedureCall::GetOutputIconicParamObject or
HDevProcedureCall::GetOutputCtrlParamTuple. This option
can be set via the SetEngineAttribute method of
HDevEngine setting the value false to the generic
parameter "ignore_invalid_results". If this option is
set to false, an exception is also thrown if the
uninitialized variable of a program is accessed via
HDevProgramCall::GetIconicVarObject or
HDevProgramCall::GetCtrlVarTuple. The default is that
no exception is thrown for not corrupting old
programs.
-
Bug Fixes:
- In HDevEngine, the short description of a procedure was not available if the procedure was saved in .hdvp format. For these procedures the method HDevProcedure::GetShortDescription returned an empty string. In contrast, the short description was available if the procedure was saved in the old .dvp format. This problem has been fixed.
- There was a memory leak in HDevelop and HDevEngine in conjunction with invalid or empty lines and comments. Some bytes were lost if an invalid or empty line was loaded or if a comment was edited. This problem has been fixed.
HALCON Codelets
-
Bug Fixes:
- The dimension units of the
calibration plate and focal length in the Codelet class
CalibrationAssistant were different from the Calibration
Assistant in HDevelop.
Codelet HDevelop 'Cell Width'[nm] 'Cell Width'[µm] 'Cell Height'[nm] 'Cell Height'[µm] 'Thickness'[µm] 'Thickness'[mm] 'Focal Length'[µm] 'Focal Length'[mm] - In the Codelet class CalibrationAssistant, the default value of the thickness was set to an incorrect value. Furthermore, the calibration plate thickness value had a sign error which resulted in a small inaccuracy in calculation of the X,Y,Z coordinates of the reference pose. These problems have been fixed.
- The dimension units of the
calibration plate and focal length in the Codelet class
CalibrationAssistant were different from the Calibration
Assistant in HDevelop.
Image Acquisition Interfaces
- The latest information about new extensions and newly
supported image acquisition devices can be found on
MVTec's
web server.
-
Image Acquisition Template:
- The HALCON image acquisition interface documentation now describes all image acquisition interface operators and parameters in detail. The documentation now shows how the parameter values can be set and read in a separate section. The documentation lists the mandatory HALCON parameters also if they are not implemented.
- The image acquisition template now provides example code that shows how to implement a threadsafe 'do_abort_grab' call. This functionality uses the platform independent HALCON thread abstraction layer, which is provided through the new header %HALCONROOT%/include/hlib/HpThread.h. The execution of set_framegrabber_param(...,'do_abort_grab',...) will cancel the actual acquisition only at the desired code positions which do not lock the cancel mutex.
-
Modified Image Acquisition Interfaces:
- The following HALCON image acquisition interfaces
have been revised since HALCON 10.0.2:
- For the HALCON 1394IIDC interface, a thread safety problem has been fixed in the operators grab_image and grab_image_async that could occur if a pending grab was aborted via the 'do_abort_grab' parameter of set_framegrabber_param. Furthermore, the return value of the operators grab_image and grab_image_async erroneously indicated a timeout error in case the grab was aborted via the 'do_abort_grab' parameter of set_framegrabber_param. This problem has been fixed, too.
- For the HALCON 1394IIDC-2 interface a thread safety problem has been fixed in the operators grab_image and grab_image_async that could occur if a pending grab was aborted via the 'do_abort_grab' parameter of set_framegrabber_param.
- For the HALCON ABS interface is now based on the new camera API version 1.10 and is now also available natively for Windows x64. Furthermore, the new revision provides the new parameter 'profile_load' and fixes a bug regarding the first image grab.
- For the HALCON ADLINK interface a thread safety problem has been fixed in the operators grab_image and grab_image_async that could occur if a pending grab was aborted via the 'do_abort_grab' parameter of set_framegrabber_param.
- The HALCON Andor interface is now based on the new Andor SDK version 2.93 and is now also available natively for Windows x64. Furthermore, the new revision provides several new parameters and fixes a thread safety problem in the operators grab_image and grab_image_async that could occur if a pending grab was aborted via the 'do_abort_grab' parameter of set_framegrabber_param.
- The HALCON BitFlow interface is now based on the BitFlow SDK 5.60. Furthermore, the new revision provides several new parameters and fixes a thread safety problem in the operators grab_image and grab_image_async that could occur if a pending grab was aborted via the 'do_abort_grab' parameter of set_framegrabber_param.
- For the HALCON Crevis interface a thread safety problem has been fixed in the operators grab_image and grab_image_async that could occur if a pending grab was aborted via the 'do_abort_grab' parameter of set_framegrabber_param.
- The HALCON DahengCAM interface supports now also the HV-50xx camera series and provides new parameters to configure the trigger delay.
- For the HALCON File (VirtualFG) interface, a bug has been fixed that occured when reading TIFF files with an alpha channel.
- The HALCON GenICamTL interface is now based on the latest GenApi release v2.3.1 and includes several bug fixes and minor enhancements. In particular, the new interface revision now supports the simultaneous usage of multiple GenTL producers and fixes a bug with the automatic update of the parameters Width, Height, PayloadSize, and AcquisitionMode due to incorrect handling of internal GenApi callbacks.
- The HALCON GigEVision interface is now based on the latest GenApi release v2.3.1 and includes the new version 1.0.6.7 of the underlying HALCON GigE Vision Streaming Filter (Windows only). In particular, the new HALCON GigEVision interface revision now supports static link aggregation (LAG) and provides several new parameters. Besides some further bug fixes, it fixes a problem with sockets that where not closed properly and a problem on 32 bit systems which could lead to lost buffers in rare cases.
- For the HALCON INSPECTA interface a thread safety problem has been fixed in the operators grab_image and grab_image_async that could occur if a pending grab was aborted via the 'do_abort_grab' parameter of set_framegrabber_param.
- The HALCON LinX interface is now based on the LinX SDK 5.60. Furthermore, the new revision provides several new parameters and fixes a thread safety problem in the operators grab_image and grab_image_async that could occur if a pending grab was aborted via the 'do_abort_grab' parameter of set_framegrabber_param.
- The LPS36 interface has been extended to achieve an improved usage in highly loaded networks. Furthermore, the default IP address now matches the factory default of the sensor.
- For the HALCON LuCam interface a thread safety problem has been fixed in the operators grab_image and grab_image_async that could occur if a pending grab was aborted via the 'do_abort_grab' parameter of set_framegrabber_param.
- For the HALCON MatrixVisionAcquire interface a thread safety problem has been fixed in the operators grab_image and grab_image_async that could occur if a pending grab was aborted via the 'do_abort_grab' parameter of set_framegrabber_param.
- The MILLite interface supports now to dynamically change the current image size during runtime. Furthermore, a thread safety problem has been fixed in the operators grab_image and grab_image_async that could occur if a pending grab was aborted via the 'do_abort_grab' parameter of set_framegrabber_param. Finally, the new interface revision prevents to open a already used digitizer a second time.
- The HALCON MultiCam interface supports now DOMINO Symphony boards and also GRABLINK Full boards in combination with 10-tap devices. Furthermore, a thread safety problem has been fixed in the operators grab_image and grab_image_async that could occur if a pending grab was aborted via the 'do_abort_grab' parameter of set_framegrabber_param.
- The OpenNI interface is now also available natively for Windows x64.
- The HALCON pylon interface is now based on the Basler pylon SDK version 3.0 and has been adapted to support also the new Basler pylon SDK version 3.1. It allows to limit the device discovery to a certain transport layer technology like GigE Vision or IIDC 1394 to accelerate the time for connecting to a camera. Furthermore, the error handling in cleaning up the acquisition callbacks has been improved and a bug in the operator grab_image_async has been fixed that occurred in case the grabbed image was considered as to be too old regarding the parameter MaxDelay.
- For the SaperaLT interface, a problem with delay and duration parameters has been fixed for some frame grabber boards, where valid values could not be set.
- The HALCON Sentech interface is now based on the new Sentech SDK version 1.0.0.7 and is now also available natively for Windows x64. Furthermore, the new interface revision fixes a thread safety problem in the operators grab_image and grab_image_async that could occur if a pending grab was aborted via the 'do_abort_grab' parameter of set_framegrabber_param.
- The SiliconSoftware interface has been extended to support also the new 3D Triangulation SmartApplets from Silicon Software and it provides a new parameter to query the availability of a new image. A thread safety problem has been fixed in the operators grab_image and grab_image_async that could occur if a pending grab was aborted via the 'do_abort_grab' parameter of set_framegrabber_param. Furthermore, the return value has been corrected in case that a pending grab was aborted by the user. Furthermore, a problem regarding timeouts in continuous grabbing mode has been fixed.
- For the HALCON uEye interface a thread safety problem has been fixed in the operators grab_image and grab_image_async that could occur if a pending grab was aborted via the 'do_abort_grab' parameter of set_framegrabber_param.
Please refer to the corresponding documentation for information about additional changes, especially whether a new revision of the corresponding device driver is required.
- The following HALCON image acquisition interfaces
have been revised since HALCON 10.0.2:
Manuals
-
Solution Guide on 3D Vision:
- In the Solution Guide on 3D Vision, some rotation formulas did not match with the example formulas they are linked with. This problem has been fixed. They are now formulated more consistently.
-
HALCON Operator Reference Manual:
- The reference manual entry
of the operator angle_lx
described the return parameter Angle incorrectly. It
stated that the angle can be interpreted as an rotation
of the passed line in counter clockwise direction onto
the horizontal axis. Now the documentation distinguish
between two cases:
If the end point is above the start point (e.g. the row value is smaller), the angle (with positive sign) can be interpreted as a rotation of the horizontal axis onto the passed line in counter clockwise direction.
If the end point is below the start point (e.g. the row value is greater), the angle (with negative sign) can be interpreted as a rotation of the horizontal axis onto the passed line in clockwise direction. - The reference manual entry
of calibrate_cameras
contained the following error: The example code (see
point 5 of the section "Preparing the calibration input
data") used the invalid parameter value
'excluded_params':
set_calib_data (CalibDataID,'camera','general','excluded_params',['sx','sy'])
This problem has been fixed. The example code now uses the parameter value 'excluded_settings':
set_calib_data (CalibDataID,'camera','general','excluded_settings',['sx','sy']). - The reference manual entries of create_shape_model_3d and of create_surface_model have each been extended by a reference to a respective scientific publication.
- The attention slot of the reference manual entry of determine_shape_model_params is more specific. It now states in which cases a parameter might differ from the respective parameter that is used in create_shape_model.
- The attention slot of the reference manual entry of determine_ncc_model_params has been removed, because it has become obsolete.
- The reference manual entry of set_spy mentioned in the description of the control mode 'button_window' the wrong parameter values 'true' and 'false' for the option 'button_click'. This problem has been fixed. Now, the correct values 'on' and 'off' are mentioned instead.
- The reference manual entries of all operators described in the chapter Image/Features using images and regions as input contained no information on the influence of previously set domains. This problem has been fixed. The two ways in which domains are treated have been documented in the reference manual. For most operators, previously set domains are ignored and only the region is used. For the operators fuzzy_entropy and fuzzy_perimeter, the region has to lie completely within the domain. Otherwise an exception is raised.
- The reference manual entry
of the operator angle_lx
described the return parameter Angle incorrectly. It
stated that the angle can be interpreted as an rotation
of the passed line in counter clockwise direction onto
the horizontal axis. Now the documentation distinguish
between two cases:
Miscellaneous
-
Installation:
- Some texts in the Windows installer were not displayed correctly for the Japanese version. The strings were cut of where a newline was expected.
- The installer now requests a reboot at the end of the installation if the GigE Vision filter driver was installed.
- The uninstaller did not restore the file associations for the file extensions .dev and .hdev correctly for previous versions of HDevelop. A double click on such a file correctly started HDevelop but did not open the corresponding file. This problem has been fixed.
- Under Windows 32 bit, the new dongle driver version Sentinel 7.6.4 is included. Note that the name of the installation program has been changed to SentinelProtectionInstaller-7.6.4.exe.
- Under Linux 32 bit, the new USB dongle driver version Sentinel HASP 1.16 is included.
-
Licensing:
HALCON now uses version 11.10.1 of the FLEXnet Publisher license manager software.
Advance Notice
The export of HDevelop programs and procedures into the .NET languages C# and Visual Basic .NET based on the HALCON/COM interface is marked as legacy and will be removed in the next major release of HALCON. Then, for these languages only the export that is based on the HALCON/.NET interface will be provided.
Known Issues
Please note the following known problems for HALCON 10:
- The type library version of HDevEngine/COM is identical for HALCON 9.0 and HALCON 10. Therefore, uninstalling one of these versions will unregister HDevEngine/COM for the other. This can be fixed by a manual re-registration using regsvr32. Note that for compatibility reasons, this problem will not be fixed for maintenance releases.
- The HALCON/C++ class methods FindText,
CreateMutex, and CreateEvent can not be used under Windows if
_UNICODE is defined, because the include file windows.h redefines
these symbols.
As a workaround, add the following lines to your C++ source file before HalconCpp.h is included:#include <windows.h>
#if defined(_WIN32) && defined(UNICODE)
#define FindText FindTextA
#define CreateMutex CreateMutexA
#define CreateEvent CreateEventA
#endif
Note that if you want to use the Windows API functions FindText, CreateMutex, or CreateEvent with this workaround you must call FindTextW, CreateMutexW, or CreateEventW directly.
This problem cannot be fixed for maintenance releases but will be fixed for the next major release of HALCON.