This document provides the release notes for MVTec HALCON 11.0.4, as released in March 2015.
HALCON 11.0.4 is primarily a maintenance release that fixes all known bugs in HALCON 11.0.3; besides, it provides added functionality.
HALCON 11.0 licenses are also valid for HALCON 11.0.4. In contrast, all HALCON 10.0 licenses or licenses of earlier versions must be replaced or upgraded. Please contact your local distributor.
HALCON 11.0.4 is fully compatible with HALCON 11.0 except for the changed behavior of some operators owing to bug fixes. Compared to HALCON 10.0, many extensions have been introduced. Thus, the HALCON 11.0 libraries are not compatible with HALCON 10.0 or earlier versions.
In detail, please note the following incompatibilities with respect to HALCON 11.0.3:
The error codes returned by approx_chain in case of invalid input parameters MinWidthCoord or MinWidthSmooth have been changed. Instead of the error 10000 ("unknown extension error"), now the errors 1303 ("Wrong value of control parameter: 3") and 1308 ("Wrong value of control parameter: 8") are returned. Programs that evaluate the returned errors must be adapted accordingly.
More information.The error code that is returned by disp_object_model_3d if the index appended to a generic parameter name is invalid has been changed. Therefore, programs that evaluate the returned errors must be adapted accordingly. Instead of the error 1306 ("Wrong value of control parameter: 6"), now the error 1305 ("Wrong value of control parameter: 5") is returned.
More information.Because of the fix of a problem with prepare_sample_identifier that occurred when an identical set of preparation images was added to a sample identifier multiple times by using add_sample_identifier_preparation_data, the resulting prepared sample identifier slightly differs from the sample identifier that was prepared with previous HALCON versions with the same set of preparation images. Consequently, the sample-based identification may show a slightly different behavior compared to previous HALCON versions.
More information.set_system now throws an exception if a value of a generic parameter was set outside the allowed range. The affected parameters are
The error code returned by vector_to_pose has been changed. Instead of the error 10052 ("unknown extension error"), now the error 9205 ("Matrix is singular") is returned. Programs that evaluate the errors returned by vector_to_pose must be adapted accordingly.
More information.Applications (i.e., executables) developed with HALCON 11.0, HALCON 11.0.1, HALCON 11.0.2, or HALCON 11.0.3 can be used with HALCON 11.0.4, i.e., HALCON 11.0.4 is binary compatible with HALCON 11.0, HALCON 11.0.1, HALCON 11.0.2, and HALCON 11.0.3 (except for applications that use the HALCON/C++ interface).
All programs (C, C++, .NET, or COM) that have been developed with HALCON 10.0.x must be recompiled. The incompatibility with HALCON 10.0.x 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 11.0, HALCON 11.0.1, HALCON 11.0.2, and HALCON 11.0.3, respectively.
Please note that applications using HALCON/.NET (and HDevEngine/.NET) have local copies of the corresponding assemblies (halcondotnet.dll etc.). After installing HALCON 11.0.4, 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 recompile 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.
If you have developed your own acquisition interfaces with HALCON 11.0, HALCON 11.0.1, HALCON 11.0.2, or HALCON 11.0.3, you can use them with HALCON 11.0.4 without further action.
Extension packages developed with HALCON 11.0, HALCON 11.0.1, HALCON 11.0.2, or HALCON 11.0.3 can be used with HALCON 11.0.4 without further action. Extension packages developed with HALCON 10.0.x or earlier versions must be re-generated. Note that the old makefiles for HALCON/C++ must be adapted according to the sample makefile under extension_packages/halconuser.
If you have been using ActivVisionTools 3.2, please contact your distributor for further information on how to run this version together with HALCON 11.0.4.
ActivVisionTools 1.0 to 3.1 cannot be used with HALCON 11.0.4. If the setup program detects such an ActivVisionTools version, it warns you that by continuing to install HALCON 11.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.
The procedure interface dialog now shows the signature of the procedures in the procedure selection box.
When the complete table of HDevelop's Runtime Statistics is selected and copied to the clipboard, now also the header of the table is copied.
dev_open_tool has now been extended to throw an error if wrong values for the parameter GenParamValues are used for pages in the Preferences dialog and the Program Line View.
If the export mode 'Use HALCON Windows' was selected, HDevelop exported stop operator calls to C# and Visual Basic in the form of calls to the empty function HDevelopStop(). As there was no real usage for this functionality and for reasons of consistency with other exports, now, HDevelop no longer exports stop operator calls to C# and Visual Basic in export mode 'Use HALCON Windows'.
The quality assessment in the Calibration Assistant failed for very high resolution images of calibration plates (mark diameters of 50 pixels or higher). Also, the quality assessment was susceptible to noise. These problems have been fixed. Furthermore, for RGB images, the Calibration Assistant processed only the red channel. Now, the image is internally converted to grayscale before processing for a more balanced contribution of all pixels and channels.
In the Calibration Assistant the 'fill' mode for displaying the plate region did not work. This problem has been fixed.
The Image Acquisition Assistant did not support the local character sets. On German systems, the use of umlauts was not always supported for file names or directory names of camera files. For example, choosing the DirectFile interface and a Mediafile that contains umlauts led to an error message. The only interface that supported the local character sets was the File interface. This problem has been fixed.
The Image Acquisition Assistant might have crashed when picking the VideoForLinux2 Interface on Linux 32bit platforms. This problem has been fixed.
The model of the Matching Assistant was lost when an error occurred during the acquisition of test images. Also, it was possible for a grab error to be triggered due to an internal HALCON error in rare cases, so even when grabbing from file, the model would have been lost after some time of live acquisition. This problem has been fixed.
The Matching Assistant may have shown an info message that some test images could not be loaded during the loading of settings. This happened when test images were used that have been acquired with the Image Acquisition Assistant. These images have been inserted with names like Image01, Image02. These images cannot be loaded together with the settings because they have not been stored on disk. This problem has been fixed.
The Matching Assistant did not scale the DXF model when the deformable matching was selected. The code generation also did not scale the model. These problems have been fixed.
The layout of the Matching Assistant was not intuitive when descriptor-based or deformable matching was selected. The calibration widgets were sometimes visible and sometimes they were invisible. Furthermore, for deformable matching, the edit control with the model name got smaller when 'Using Image' was checked. These problems have been fixed. Now, the calibration widgets are always visible and the edit control with the model name is resized as expected.
The Matching Assistant used a wrong parameter value for Metric when loading a DXF file for the deformable matching. This problem has been fixed. Now 'ignore_color_polarity' instead of 'use_polarity' is used for the parameter Metric if no image is used.
In very rare cases, the OCR Training File Browser of the OCR Assistant displayed black bars next or under the sample icons. This only occurred when HDevelop was running on a remote computer. This problem has been fixed.
Within the OCR Assistant, the Generate Sample Variations dialog of the OCR Training File Browser created some training samples twice. This problem has been fixed.
The code generation of the OCR Assistant generated wrong code in the case that the text that was found contained more than one line. In this case, the call of clear_text_result was displaced. As a result, the error 8341 ("Invalid text result") was returned. This problem has been fixed.
The Export dialog warned twice about overwriting an existing file. This happened if an existing file was selected via the browse button. Then, a warning dialog was shown. After pressing the export button, the warning dialog appeared again. This problem has been fixed.
In the Operator Window, it can be chosen to automatically insert the end-statements for blocks like for, while, repeat, if, ifelse, try, and switch. This only works, if new blocks are inserted but not if an existing block statement is edited. Nevertheless, the respective check box in the Operator Window was always shown, even if it did not work. This problem has been fixed. Now, the check box is only shown if it works.
The Visualize Object Model 3D window froze if several empty and non empty models were displayed together. This problem has been fixed.
The status message of HDevelop sometimes showed no memory usage although the option 'Show memory usage' was enabled. This problem has been fixed.
The magnify mode of the Graphics Window did not work. If this mode was selected via the tool bar of the Graphics Window and the left mouse button was pressed, only a black square was displayed instead of an overlay with the magnified part. This problem has been fixed.
HDevelop crashed when an invalid parameter name was defined in the procedure interface dialog and then, the Help button was pressed. This problem has been fixed.
The Help window sometimes displayed unreadable characters in the title of an operator help file. This problem has been fixed.
The procedure interface dialog did not work correctly when renaming a parameter in very rare cases. If a program line contained a parameter more than once, for example in an expression, not all parameters were renamed correctly. This may have led to invalid program lines. Note that this problem only occurred if the parameter had the form xxx1[2], where 'xxx' stands for an arbitrary sequence of characters. This problem has been fixed.
HDevelop's copy and paste operation inserted unexpected text when the full text editor was used. The copy of an empty line was inserted as a new comment line, i.e., a line with a '*' at its beginning. The copy of read_image was inserted as read_image (, ). These problems have been fixed.
When opening a procedure for editing failed, HDevelop solely displayed a message that the procedure could not be loaded. This problem has been fixed. Now, HDevelop additionally displays the same information that is shown in the External Procedures tab or when loading a program fails.
The selection of variables in the Variable View may have changed if new variables were added or if existing ones were deleted. This problem has been fixed.
Creating a local procedure from a selection of code lines caused a problem when there was an import statement among the selected code lines and a procedure call that was resolved solely via that import statement. In this case, the procedure call in the newly created procedure remained unresolved. This problem has been fixed.
The background color in the user-defined color scheme could not be changed. This problem has been fixed.
The Line Profile tool crashed when a Measure Assistant that was connected with the tool was closed via File Exit and afterwards the input source of the Line Profile tool was changed to Window. This problem has been fixed.
The overlay for the Graphics Window, which was provided by the Gray Histogram tool for a selected threshold, was not properly cleared for RGB images when switching from single channel mode to RGB mode in the Gray Histogram tool. This problem has been fixed.
Some tools that allow to draw an ROI in HDevelop added empty components if ROI drawing was immediately canceled using the right mouse button before actually drawing an ROI. This problem has been fixed.
The Line Profile tool hid behind the Measure Assistant and the Graphics Window, when it was opened via the Measure Assistant. This problem has been fixed.
The zoom rectangle in the Graphics Window was not always visible when dragging. In addition, under Windows it could happen that the rectangle was not transparent and hid the part of the window to zoom into. These problems have been fixed.
HDevelop crashed when the position of a procedure's parameter was changed in the procedure interface dialog, this change was applied, and the parameter's position was changed again without reselecting the parameter. This problem has been fixed.
Using the Tab key or Ctrl+Shift+I to fix the indent of a line changed the cursor position if the cursor was inside the leading whitespaces of that line. This problem has been fixed.
On some Linux systems using the Window manager Xfce, the Program Editor could have lost the focus when the auto completion window was opened. This problem has been fixed.
If the interface of a local procedure is edited but not yet applied, and the program is closed (e.g., because a different program is loaded) while the procedure interface dialog is still open, HDevelop offers to keep a copy of that procedure. If afterwards the procedure interface dialog was closed without applying the interface changes, HDevelop crashed. This problem has been fixed.
Under OS X, the file dialogs that are opened from within HDevelop could have had a broken label for the file type filter, when the GUI language was set to German or French. This problem has been fixed.
If an external procedure that is unavailable via a procedure path is explicitly loaded for editing, HDevelop opens a new tab in the Program Editor to display this procedure. When the procedure is closed (via the file menu's 'Close Procedure' or 'Close All Procedures') while it is still displayed, HDevelop removes the tab and displayes another procedure. In this case, the procedure selection box showed a different procedure than the one that was actually displayed (typically the last one in the list). This problem has been fixed.
The icons in the Variable View did not correctly display iconic object arrays of mixing image, region, and XLD types. This problem has been fixed. In addition, iconic object arrays are now displayed using colored elements.
It was impossible to copy program lines from the dialog-based editor to another application if they had been inserted using the Operator Window. This problem has been fixed.
If very large images were moved or zoomed in the Graphics Window, they might have disappeared. This problem has been fixed.
The following HDevelop shortcuts did not work correctly:
These problems have been fixed.
The Graphics Window sometimes could not be cleared with the Del-key. Pressing the Del-key had no effect if an iconic object had been displayed and then, the Graphics Window was activated by a click on its title bar. This problem has been fixed. Now the Del-key works if the Graphics Window was activated by a click on its title bar. Note that the Del-key worked as expected if the Graphics Window was activated by a click into the display area.
Code inserted via the Visualize Object Model 3D dialog may have been invalid. The Visualize Object Model 3D dialog allows to insert code for displaying the model with the current dialog settings. However, if one of the variable names used by the code insertion, like Pose*, CamParam*, GenParamName*, GenParamValue*, or ObjectModel3D*, had already been used for an iconic variable, the name was re-used by the code insertion and therefore, the inserted code was invalid. (* means '' or the smallest number that is not used by an already existing control variable"). This problem has been fixed.
The 'Record Interactions' functionality of the Graphics Window inserted invalid code when
This problem has been fixed.
The procedure interface dialog did not display the minimum value for integer control parameters correctly. This problem has been fixed.
dev_set_paint did not influence newly opened Graphics Windows when Mode was set to 'histogram' or '3d_plot'. This problem has been fixed.
Inserting or removing line breaks within a single program statement could have temporarily caused the profiler display to appear shifted with respect to the program lines. This problem has been fixed.
If an OpenGL error occurred, displaying a 3D object model could have led to a crash. This problem has been fixed.
HDevelop could have crashed after renaming a library procedure via the procedure interface dialog.
This problem has been fixed
If a new procedure was created via the procedure interface dialog and if that procedure was inserted into a program or a procedure library, the new procedure was not marked with an asterisk (*) as being modified. This was confusing because it was not obvious for the user that the new procedure has not been written to file and therefore, was not visible to other HDevelop instances. Furthermore, when closing HDevelop, it was not obvious for the user why HDevelop raised a warning dialog that asks to save or discard the unsaved changes at the program or library. This problem has been fixed.
When in the procedure interface dialog a new procedure library is created for inserting the current procedure into it, and if the library is not reachable via the external procedure path, a dialog is opened, that asks the user, how to continue. One option offered by the dialog was 'Continue' without keeping the library open. This option was confusing because the library was created but could not be used. So that option was removed.
Furthermore, when an existing (unreachable) procedure library was selected as the target via the file selection dialog, the library was explicitly opened without asking. This was inconsistent to HDevelop's regular behavior, and has been changed, too. The same behavior applies now also to an external procedure path that is selected via 'Browse to an external dir ...' button.
Under certain circumstances, HDevelop crashed when closing the procedure interface dialog. This happened when either
or
This problem has been fixed.
The procedure interface dialog allows to rename the selected procedure. When the name was changed for a local or library procedure, a check box is displayed on the General Settings tab card, that offers the option to duplicate the procedure, i.e., to keep a copy of the procedure with the old name together with one with the new name. This option didn't work for library procedures if the changed procedure had to remain in the same library as the origin. This problem has been fixed.
When catching a user-defined exception that was thrown by the throw operator, the user data of the exception returned by dev_get_exception_data could have been wrong. In some cases HDevelop even crashed. This problem has been fixed.
Editing an assign_at operator where the parameter Index is a sequence, e.g., A[1:3] := 5, in the Operator Window, generated an additional bracket pair. This problem has been fixed.
If an HDevelop program or procedure contained two or more identical import statements and if one of these import statements was deleted and if the last line of the edited procedure was a procedure call that was resolved solely via the import statements, then this line became invalid (i.e., unresolved). This problem has been fixed.
HDevelop crashed when in the Operator Window a global variable was declared that used the name of a procedure parameter as variable name. This problem has been fixed.
dev_open_tool threw an error when ToolType was set to 'preferences' and no tab card value was specified in GenParamValues. This problem has been fixed.
When typing "global def" into the Program Editor and then pressing TAB, HDevelop at first seemed to hang and then crashed after a while. This problem has been fixed.
HDevelop still listed libraries and their procedures, even when the associated path or library had been deleted via the Edit/Preferences/Directories Delete button. The libraries and the procedures were still listed in the Preferences dialog under Procedures/Manage Procedure Libraries and under Procedures/External Procedures. This problem has been fixed.
HDevelop could not resolve library procedures if they were imported via the import statement and if the parameter of the import statement was the name of the directory that contains the procedure library instead of the library name itself. This was contrary to the documentation of the import statement. This problem has been fixed.
HDevelop in very rare cases showed a warning while copying standard procedures between two HDevelop instances. This problem has been fixed.
In HDevelop, it was possible to create a valid and executable procedure call of main. However, calling main recursively could crash or freeze HDevelop. Therefore, 'main ()' is no longer a valid statement.
HDevelop crashed if a new procedure was created from the selection and in the selected program lines a variable, which would have become a procedure parameter, was used as a control variable as well as an iconic variable. This problem has been fixed.
HDevelop crashed when certain user-defined procedure paths with heavily interdependent procedures were deleted. This problem has been fixed.
HDevelop exported operator and procedure calls that used the same global variable as input and output incorrectly to C, C#, and Visual Basic. In this case, the corresponding call did not modify the value of the global variable, which was an incorrect behavior. This problem has been fixed.
HDevelop code exported to .NET created a memory leak if global iconic variables were used as output parameters of operator or procedure calls. This problem has been fixed.
HDevelop in rare cases exported programs incorrectly to C# if they contained some handling of HDevelop Graphics Windows. This happened if a Graphics Window handle was referenced only via dev_get_window and if the option 'Window export' was set to 'Use HALCON Windows'. This problem has been fixed.
HDevelop exported single external procedures via the command line option -convert incorrectly in the following case:
In these cases, the exported code contained only comments instead of calls to the referenced procedures. This problem has been fixed.
HDevelop crashed when trying to export continue or break statements if the program code between the corresponding continue (or break) statement and its first valid enclosing loop structure contained an invalid loop structure, conditional statement, or the like. This problem has been fixed.
HDevelop exported for loops inside case statements incorrectly to HALCON/C++. This problem has been fixed.
After starting HDevelop, the auto save functionality was always deactivated, even if the corresponding checkbox (Edit->Preferences...->General Options->Auto Save) was checked. This problem has been fixed.
HDevelop's profiler wrongly counted calls to local, external, or library procedures twice. As a consequence, the profiler also calculated an average execution time for procedures that was only half the actual average execution time. This problem has been fixed.
After inserting a program line that consists of several text lines connected via backslashes ('\') at the end of the program, the program counter and the text insert marker could have disappeared. This problem has been fixed.
The features 'inner_width' and 'inner_height' of the Feature Histogram tool did not work correctly. This problem has been fixed.
After loading a program that was stored in the (legacy) .dev file format into the full text editor or creating it with the help of the Operator Window, it could have happened that pressing the TAB key to change the indentation of a program line corrupted the text of the program line. This problem has been fixed.
The Save image dialog that is offered in the Variable Window via the icons of iconic variables did not offer the option to save uint2 images as .png files although the operator write_image supports that. This problem has been fixed.
The following HDevelop example programs are new or have been improved:
The HDevelop example program
contains the local procedure inspect_object_model_3d, which is used to determine input parameters for create_shape_model_3d. This procedure now supports all camera types that can be used for shape-based 3D matching.
The HDevelop example program
has been revised.
The HDevelop example program
has been revised.
The HDevelop example program
has been added.
The HDevelop example program
which creates OCR training samples from system fonts, created some training samples twice. This problem has been fixed.
The HDevelop example program
contained memory leaks, e.g., handles were created and not deleted. This problem has been fixed.
The HDevelop example program
may have returned errors or it may have produced an empty mosaic image if it was adapted to another assembly of cameras and if therefore the geometry of the camera setup deviated from the one used in the example program. This problem has been fixed.
For the HDevelop example program
the slant calculation was wrong. This problem has been fixed.
Import statements with paths relative to the program's file location (like import .) were not resolved correctly. This problem has been fixed.
Using a dummy implementation for dev_open_window and dev_get_window, e.g.,
int MyHDevOperatorImpl::DevOpenWindow(...) { return H_MSG_TRUE; }
resulted in an error 1501 ("Wrong number of values of object parameter: 1") from dev_open_window and dev_get_window, respectively. Moreover, if no implementation was set at all, the window handles returned by dev_open_window and dev_get_window were uninitalized. These problems have been fixed. Now, in such a case they are both initialized with the value -1.
HDevEngine was not able to resolve import statements in programs when
This problem has been fixed.
HDevengine did not throw exceptions if license errors occurred during initialization. Instead an error message popped up and the application quit. This problem has been fixed.
GetParamInfo(ParName,"description") did not use the currently set documentation language if the documentation language had been changed with SetEngineAttribute. This problem has been fixed. Now, GetParamInfo(ParName,"description") uses the documentation language that has been set with SetEngineAttribute.
The Method HDevEngineX::GetGlobalCtrlVarTuple of HDevEngine/COM might have crashed. This problem has been fixed.
Applications using HDevEngine/.NET in rare cases could have crashed when the engine classes were not explicitely disposed. This problem has been fixed.
The HDevEngine/.NET functions GetGlobalIconicVarObject, GetGlobalIconicVarImage, GetGlobalIconicVarRegion, and GetGlobalIconicVarXld contained a memory leak. This problem has been fixed.
The ECC 200 data code reader now strictly respects the parameter settings for 'stop_after_result_num'.
The 2D data code reader now provides functionality for the assessment of direct mark quality, compliant with the SEMI T10-0701 standard. Note that direct mark quality assessment is provided only for the ECC 200 data code.
The new HDevelop example program
shows how to assess the direct mark quality of an ECC 200 data code.
The operators
returned one of the errors between error 1401 ("Wrong number of values of control parameter: 1") and error 1408 ("Wrong number of values of control parameter: 8") if more than 100 control parameters were passed. This problem has been fixed.
fit_ellipse_contour_xld, fit_circle_contour_xld, and fit_line_contour_xld returned the error 3264 ("All points classified as outliers (ClippingFactor too small)"), which could be misleading. Now, the operators return the modified error 3264 ("All points classified as outliers (ClippingFactor too small or used points not similar to primitive)").
binocular_disparity, binocular_distance, and reconstruct_surface_stereo sometimes returned unexpected results. This problem has been fixed.
binocular_disparity did not initialize points outside the image domain. Instead, points outside the image domain were set to a random value. This problem has been fixed.
binocular_distance did not return an error if RelPoseRect contained strings. This problem has been fixed.
convex_hull_object_model_3d returned wrong results if a 3D object model was passed that contains points that all lie in a plane. This problem has been fixed.
create_cam_pose_look_at_point returned three poses in CamPose if in RefPlaneNormal a tuple with three elements, which represent the three components of the normal vector, was passed. In this case, in CamPose a tuple of 21 elements was returned, which contained the correct pose three times. This problem has been fixed.
create_sheet_of_light_model crashed if the number of GenParamNames was not equal to the number of GenParamValues. This problem has been fixed.
distance_object_model_3d returned the wrong error code 1306 ("Wrong value of control parameter: 6") in case the passed object model ObjectModel3DTo did not have the required attributes. This problem has been fixed. Now, in this case the error code 9514 ("Required attribute missing in 3D object model") is returned.
find_shape_model_3d crashed if the parameter 'pose_refinement' was set to 'none', the image type was byte, and the parameter 'model_tolerance' was set to 0. This problem has been fixed.
fit_primitives_object_model_3d can fit planes into point clouds. Sometimes, small changes of the input point cloud switched the orientation of the fitted plane, i.e., its pose and normal. This problem has been fixed. Now, the normal vector points towards the side of the plane on which the origin is located.
get_object_model_3d_params returned incorrect diameters for rotated boxes. This problem has been fixed.
max_diameter_object_model_3d always returned 0 for 3D primitives. This problem has been fixed.
measure_profile_sheet_of_light computed wrong results if the last profile was empty and the calibration type was set to 'xyz' or 'offset_scale'. This problem has been fixed.
pose_to_quat was numerically unstable for rotation angles close to 180 degrees. This problem has been fixed.
project_object_model_3d in rare cases returned fragmented contours if there was no OpenGL support. This problem has been fixed.
register_object_model_3d_global, register_object_model_3d_pair, and create_surface_model crashed if one of the passed 3D object models contained points where one coordinate had the irregular floating point values 'infinity' or 'not a number'. This problem has been fixed.
render_object_model_3d and disp_object_model_3d did not always throw an exception if the passed generic parameters were invalid. This problem has been fixed.
sample_object_model_3d crashed or showed undefined behavior when sampling faces (triangles, polygons, or primitives) with the sampling distance set to zero. This problem has been fixed. The operator now returns the error code 1303 ("Wrong value of control parameter: 3") instead.
sample_object_model_3d returned slightly incorrect results if the parameter Method was set to 'accurate' or to 'accurate_use_normals'. This problem has been fixed.
sample_object_model_3d copied extended attributes if the parameter Method was set to 'accurate' or 'accurate_use_normals'. This problem has been fixed.
select_points_object_model_3d returned an error 3510 ("Exceeding the maximum number of run lengths while automatical expansion") or crashed in rare cases if the current maximum number of run lengths was exceeded during automatic expansion. This problem has been fixed.
set_profile_sheet_of_light ignored empty profiles. This problem has been fixed and set_profile_sheet_of_light is now consistent with apply_sheet_of_light_calibration.
set_profile_sheet_of_light and apply_sheet_of_light_calibration may have crashed if the region of the input image Disparity did not intersect all lines. Note that set_profile_sheet_of_light crashed only if 'calibration' was set to 'none' or 'xz'. apply_sheet_of_light_calibration crashed only if 'calibration' was set to 'xz'. These problems have been fixed.
set_profile_sheet_of_light did not take into account more than one MovementPoses:
These problems have been fixed. Now, if MovementPoses contains more than one pose, the number of elements in MovementPoses must be equal to seven times the height of the disparity image, otherwise an error is raised. The algorithm now uses the poses passed in MovementPoses.
triangulate_object_model_3d did not unlock the input model in special cases. Hence subsequent usage of the model may have deadlocked HALCON. This problem occurred only if the parameter Method was set to 'implicit' and triangulate_object_model_3d returned with an error. This problem has been fixed.
triangulate_object_model_3d, called with the parameter Method set to 'greedy', returns consistently ordered triangles (clockwise or anti-clockwise) over the entire surface. However, small changes of the 3D object model used as input could have switched the orientation of the triangles in the triangulated 3D object model. This had impact on further processing steps of the triangulated 3D object model, for example with sample_object_model_3d or create_surface_model and find_surface_model. This problem has been fixed. Now, the orientation of the triangles is chosen such that for the majority of triangles [0,1,2] the triangle normals (P1-P0)x(P2-P0) lie in the same half space as the mean of the input point normals N0, N1 and N2.
vector_to_pose in some cases returned the error 10052 ("unknown extension error") instead of 9205 ("Matrix is singular"). This problem has been fixed.
write_object_model_3d accepted empty 3D object models and saved them instead of returning an error message. This problem has been fixed.
If an OpenGL error occurred, displaying a 3D object model could have led to a crash. This problem has been fixed.
The operator decode_bar_code_rectangle2 rejected successfully decoded candidates in some special cases. This problem has been fixed.
find_bar_code did not read certain bar codes of type GS1 DataBar Limited correctly. This problem has been fixed.
The bar code reader for composite codes and the data code reader for PDF417 codes sometimes returned varying results depending on the number of threads the HALCON library used. This problem has been fixed.
The bar code reader did not decode multiple bar codes that are located close to each other horizontally. This problem has been fixed. Now, multiple bar codes, located close to each other horizontally, are decoded correctly in general.
calibrate_hand_eye could have crashed for articulated robots if the rotations between the calibration object poses exhibited only one rotation axis. This problem has been fixed.
cam_par_to_cam_mat returned an invalid camera matrix for telecentric camera parameters. This problem has been fixed. Now, an error is returned in this case because camera matrices do not support telecentric cameras.
get_calib_data returned incorrect statistical values. This problem has been fixed.
get_calib_data returned camera parameters that were not available for the currently set camera if the parameter DataName was set to 'calib_settings' or 'excluded_settings'. This problem has been fixed. Now, get_calib_data only returns camera parameters that are available for the currently set camera. Furthermore, get_calib_data now returns the default values for 'calib_settings' and 'excluded_settings' for the currently set camera if the parameter ItemIdx is set to 'general'.
set_calib_data crashed in some cases where numbers were passed instead of strings. The problem occurred in particular if the parameter ItemType was set to 'camera' and numbers were given for the parameter DataValue and if ItemType was set to 'calib_obj_pose', ItemIdx was not set to 'general', and numbers were given for DataValue. Furthermore, if ItemType was set to 'calib_obj_pose', ItemIdx was set to 'general', and numbers were given for DataValue, set_calib_data returned the wrong error message 1301 ("Wrong value of control parameter: 1"). These problems have been fixed. Now, the error message 1205 ("Wrong type of control parameter: 5") is returned in these cases.
set_calib_data allowed to set camera parameters that do not match the current camera type. This problem has been fixed. Now, set_calib_data sets only camera parameters that are supported by the underlying camera type.
sim_caltab sometimes did not draw all calibration marks. This problem has been fixed.
add_class_train_data_mlp added wrong training data to the MLP if the number of input nodes was different from the number of output nodes. This problem has been fixed.
add_sample_class_svm did not accept values of type real for the parameter Class. This problem has been fixed.
After training samples were added to or removed from an already trained sample identifier with add_sample_identifier_training_data or remove_sample_identifier_training_data, the sample identifier became inconsistent. When applying the inconsistent sample identifier with apply_sample_identifier, the results were non-deterministic. The inconsistency could be fixed by executing the training again by calling train_sample_identifier. This problem has been fixed. Now, retraining is enforced before applying the sample identifier again. If an inconsistent sample identifier is applied by calling apply_sample_identifier, now the error 9610 ("Sample identifier has not been trained yet (use train_sample_identifier)") is returned.
create_class_mlp crashed if it ran out of memory. This problem has been fixed.
The sample-based identification sometimes did not work correctly for input images with reduced domains. In these cases the results might have slightly changed if the domain of the input image was reduced compared to the result that was obtained with the full domain even if the image did not contain any texture outside the reduced domain. This problem has been fixed.
get_class_train_data_gmm, get_class_train_data_mlp, and get_class_train_data_svm crashed if the passed classifier handle did not contain any training data. This problem has been fixed.
prepare_sample_identifier in very rare cases did not work correctly if an identical set of preparation images was added to the sample identifier multiple times by using add_sample_identifier_preparation_data. In this case, the robustness of the identification was significantly reduced. This problem has been fixed.
select_feature_set_svm had a memory leak if the training of a SVM failed because of deficient data. This problem typically occurred when the number of samples per class was extremely disparate. This problem has been fixed.
Exact k-NN-Classification did not work as expected. This problem has been fixed. Now, setting the generic parameter 'num_checks' to 0 triggers an exact search.
find_data_code_2d had a high memory consumption and a long execution time for images containing many QR codes. This problem has been fixed.
find_data_code_2d in very rare cases trained the parameter 'finder_pattern_tolerance' for ECC 200 codes incorrectly. This problem has been fixed.
The ECC 200 data code reader did not find dot printed codes in very rare cases when the image domain was reduced. This problem has been fixed.
The ECC 200 reader did not decode the last codeword if the encodation scheme was C40, Text, or ANSI X12 and the last codeword was encoded as ASCII double digit numeric. Moreover, if the encodation scheme was EDIFACT, the unlatch codeword was ignored. This problem has been fixed.
Print quality inspection of non-square ECC 200 codes may have returned some incorrect grades and values for Fixed Pattern Damage, Axial Nonuniformity, Grid Nonuniformity, and Unused Error Correction. This problem has been fixed.
The data code quality grading of unused error correction was incorrect for ECC 200, QR code, Micro QR code, and Aztec when the symbol had error correction codewords reserved for error detection. This problem has been fixed.
The ECC 200 reader returned false positives in very rare cases. The decoded data of these false positives contained values larger than 255. This problem has been fixed.
For ECC 200 codes, the data code reader in very rare cases returned incorrect codes when the code was found with 'module_grid' set to 'variable'. This problem has been fixed.
The ECC 200 data code reader in rare cases produced duplicate results when the parameter 'finder_pattern_tolerance' was set to 'any' or 'low'. This problem has been fixed.
The PDF417 reader was sometimes not able to find the data code if 'polarity' was set to 'light_on_dark'. This problem has been fixed.
The PDF417 reader sometimes failed to decode, if one finder pattern could not be detected or only one finder pattern was present. The latter is always the case for Truncated/Compact PDF417 codes. This problem has been fixed.
The QR code reader in rare cases returned the error 8506 ("Number of template points too small"). This problem has been fixed.
The QR code reader returned incorrect grades for unused error correction in most cases. This problem occurred most likely with module sizes larger than 4 pixel. This problem has been fixed.
The data code reader did not find ECC 200 codes in very rare cases, when a strong edge existed near the data code. This problem has been fixed.
The data code print quality inspection for Aztec Codes returned wrong values for UEC in some cases. This problem has been fixed
The Aztec code reader did not handle the ECI protocol correctly. The reader failed to decode ECI character sets 000001 through 000009. Further it did double the '\' of the ECI escape sequence instead of all other occurrences of the byte value 92 ('\'). This problem has been fixed.
The ISO/IEC 15415 and AIMDPM-1-2006 print quality grades and values of QR codes were incorrect. This problem has been fixed.
The AIM DPM-1-2006 cell contrast grade was evaluated with the wrong grading table. This problem has been fixed.
When setting 'finder_pattern_tolerance' to 'high', the 'GS1 DataMatrix' reader returned results for codes that were non-conformant with the GS1 standard. This problem has been fixed.
get_data_code_2d_results returned an incorrect unused error correction grade for Aztec codes for quality_aimdpm_1_2006 when 'polarity' was 'light on dark'. This problem has been fixed.
get_data_code_2d_results returned an incorrect unused error correction grade for ECC 200 and QR codes for quality_aimdpm_1_2006 when the polarity was set to 'light_on_dark' and the code was light on dark. This problem has been fixed.
On Windows systems the maximum length for a path was limited to 260 characters. This problem has been fixed. Now, the maximum total path length on Windows systems is 32,767 characters.
The external procedure list_image_files returned invalid paths in the output parameter ImageFiles if it was called with the parameter ImageDirectory set to a path that starts with two slashes ('//'). In this case, the returned paths had only one leading slash. This problem has been fixed.
read_image crashed with 32 bit BMP images that contained only gray value data. This problem has been fixed.
read_polygon_xld_dxf might have returned corrupt polygons that could have caused a crash in successive operators using these polygons. This problem has been fixed.
read_sequence could not handle files larger than 2GB on Windows systems. This problem has been fixed
edges_sub_pix and lines_gauss did not close contours in rare cases. This problem has been fixed.
harmonic_interpolation could have crashed when processing a color image on a multicore processor with automatic operator parallelization turned on. This problem has been fixed.
info_edges returned incorrect results in certain cases. This problem has been fixed.
lines_gauss might have crashed if the system parameters for the image dimensions ('width' or 'height') were set smaller than the actual image dimensions of the input image and the input image had a reduced domain. This problem has been fixed.
lines_gauss had a memory leak if a runtime error occurred. This problem has been fixed.
polar_trans_image_inv might have set the output image domain incorrectly when running on compute devices and the angle extent was smaller than 2*PI. This problem has been fixed.
polar_trans_image_inv might have returned wrong gray values when the angle extent exceeded 2*PI. This problem has been fixed.
power_byte did not round correctly. This problem has been fixed.
projective_trans_image, projective_trans_image_size, and gen_projective_mosaic may have crashed with very large images. This problem has been fixed.
texture_laws in rare cases returned incorrect values on compute devices. Only filters of width 7 and specific image widths were affected. This problem has been fixed.
clear_window did not reset the text cursor position correctly. This problem has been fixed. Now, clear_window sets the text cursor position to (1,1) in window coordinates.
disp_circle was inconsistent with gen_circle. It did not produce the same results as gen_circle followed by disp_region. This problem has been fixed.
disp_ellipse and disp_rectangle2 allowed negative values for the half-axes, which may have led to an error when allocating the regions. This problem has been fixed.
disp_object_model_3d did not display poses if 'colored' was used after 'disp_pose' or 'disp_pose_n'. This problem has been fixed.
disp_object_model_3d crashed if the index appended to a generic parameter name was negative. Moreover, disp_object_model_3d crashed if 'intensity_idx', 'intensity_red_idx', 'intensity_green_idx', or 'intensity_blue_idx' referred to a non-existing 3D object model of index idx. These problems have been fixed.
disp_object_model_3d returned the wrong error code 1306 ("Wrong value of control parameter: 6") if the index appended to a generic parameter name was invalid or referred to a non-existing 3D object model. This problem has been fixed. Now, the error code 1305 ("Wrong value of control parameter: 5") is returned.
disp_object_model_3d and render_object_model_3d used incorrect colors or shading in specific cases. This problem occurred if the OpenGL compatibility mode was activated and points were rendered for at least one model. This problem has been fixed.
draw_nurbs crashed on OS X. This problem has been fixed.
dump_window_image crashed for windows that are 32768 pixels wide or high, i.e., that have - at least in one dimension - the maximum size supported by standard HALCON. This problem has been fixed. Note that this problem did not occur under HALCON XL.
query_font returned monospaced fonts (e.g., Courier or Consolas) incorrectly on Windows. Instead of returning '*' for width and height, query_font returned a number for width and height, even if arbitrary sizes are possible in set_font. This problem has been fixed.
render_object_model_3d and disp_object_model_3d did not always throw an exception if the passed generic parameters were invalid. This problem has been fixed.
set_line_style did not return an error for some invalid patterns. This problem has been fixed and the reference manual entry of set_line_style has been extended with the valid range for the parameter 'Style' (1-120).
set_part did not work correctly for very small negative part borders. This problem has been fixed.
real_to_complex, real_to_vector_field, complex_to_real and vector_field_to_real did not raise an error if the input consisted of multichannel images. Instead, only the first channel was processed and additional channels of the first iconic input object were copied to the output. This problem has been fixed.
create_ncc_model in rare cases crashed or returned the error 6041 ("No memory block allocated at last"). This problem has been fixed.
create_planar_calib_deformable_model_xld might have crashed if the number of shape model points were too small. This problem has been fixed. Now, the error 8510 ("Number of shape model points too small") is returned in this case.
create_shape_model_3d sometimes needed a very long time in HALCON XL if 'opengl_hidden_surface_removal_enable' was set to 'false' and DistMin was set to a small value such that the camera was very close to the 3D model, and hence the projection of the 3D model into the image became large. This problem has been fixed.
create_shape_model_3d crashed in rare cases if no OpenGL was available on the system or OpenGL was disabled by previously calling set_system ('opengl_hidden_surface_removal_enable', 'false'). This problem has been fixed.
The operators
in very rare cases did not return. This might have happened if the coordinates of the input contour were only integer precise, e.g., because the contour was artificially created or was created by using gen_contour_region_xld.
create_template and create_template_rot may have corrupted memory in case of an error. Subsequent calls to clear_all_templates (e.g., by pressing F2 in HDevelop) could have caused a crash. This problem has been fixed.
find_calib_descriptor_model and find_uncalib_descriptor_model did not accept values larger than 20 for NumMatches. This problem has been fixed.
find_planar_calib_deformable_model in rare cases returned different results when called multiple times on 32 bit systems. This problem has been fixed.
find_shape_model, find_shape_models, find_scaled_shape_model, find_scaled_shape_models, find_aniso_shape_model, and find_aniso_shape_models crashed in rare cases if the parameter SubPixel was set to anything else but 'none'. This problem has been fixed.
find_shape_model exceeded the timeout significantly under rare circumstances, especially with textured images and low values of MinContrast and MinScore. This problem has been fixed.
find_shape_model_3d in rare cases did not check the overlap between matches correctly. In such cases, matches that overlapped each other by more than the fraction that was passed in the generic parameter 'max_overlap' were returned. This problem has been fixed.
apply_metrology_model returned the error 6002 ("Memory partition on heap has been overwritten") if a large number of edges were found. This problem has been fixed.
apply_metrology_model sometimes did not find a rectangle if a measurement plane was set. The problem occurred if the chosen measurement plane had a rotation around the z-axis different from zero. This problem has been fixed.
apply_metrology_model did not always return a result when camera parameters and a measurement plane pose was set. This problem has been fixed. Note that result parameters in existing programs may change slightly.
get_metrology_object_param returned wrong values for the main axis if the values of at least 2 ellipses were returned. This problem has been fixed.
measure_pairs sometimes returned incorrect values for IntraDistance when measuring along a circular arc, i.e., if the measure has been created with gen_measure_arc. This problem has been fixed.
set_metrology_object_param did not return an error if 'measure_distance' was set to a value equal or below zero. This problem has been fixed. Now the error message 1312 ("Wrong value of control parameter: 12) is returned.
If a metrology model was created with 'measure_transition' set to 'uniform' and 'measure_select' set to 'first', up to two edge points per measure were returned instead of up to one per measure. This problem has been fixed.
approx_chain returned the wrong error code 10000 ("unknown extension error") in case of invalid input parameters MinWidthCoord or MinWidthSmooth. This problem has been fixed. Now, the errors 1303 ("Wrong value of control parameter: 3") and 1308 ("Wrong value of control parameter: 8") are returned, respectively.
clear_barrier returned the error 9000 ("Function not implemented on this machine"). This problem has been fixed.
There were no default file extensions for variation models and gray value templates. This problem has been fixed. The default file extension for variation models is now 'vam'. The default file extension for gray value templates is now 'gvt'.
Several operators might have crashed while processing large images. Examples include:
This problem has been fixed.
Some operators crashed for huge images. The problem occurred for images with reduced domains as well as for operators with automatic parallelization on domain level. This problem has been fixed.
For the error codes 4103 and 8855 no error messages were returned. This problem has been fixed. Now, the error messages "No device implementation for this parameter" and "Invalid 'contrast_tolerance'" are returned for the error codes 4103 and 8855, respectively.
Extension package operators returned incorrect regions in rare cases. If an operator that is parallelized on domain level should have returned an empty region even if the input region was not empty, it returned the input region. This problem has been fixed.
HALCON hung if the Windows system call SystemParametersInfo was called. This problem also caused HDevelop to hang if the keyboard layout was switched while HDevelop was running. This problem has been fixed.
match_funct_1d_trans sometimes crashed when the parameter Border was set to 'mirror'. This problem has been fixed.
select_lines_longest crashed with empty input tuples. This problem has been fixed.
The use of compute devices within a thread led to a memory leak when exiting this thread. This might have caused the error 4101 ("Out of compute device memory") when executing a compute device operator within a new thread after having forced the problem by exiting threads several times. This problem has been fixed.
The HALCON morphology operators
could have led to a crash in some cases if at the same time 'clip_region' was set to 'false' and the region was close to the allowed maximum image size, e.g., if it was generated via gen_rectangle1 (Rectangle, 32758, 194, 32766, 202). This problem has been fixed.
find_text may have returned warnings if low level error messages were switched on and 'local_mem_warnings' were set to 'true'. This problem has been fixed.
select_characters sometimes returned characters twice. This problem has been fixed.
set_text_model_param crashed when a 'text_line_structure' with a negative index was passed. Furthermore, it was possible to pass illegal text_line_structures, which could lead to an incorrect behavior of find_text. These problems have been fixed.
Operators parallelized on data level had a memory leak under Windows operating systems when the thread pool for the automatic operator parallelization (AOP) had been switched off. This problem has been fixed.
Operators parallelized on channel level leaked memory in certain cases. The problem occurred only if operators with multiple input object parameters were called with multichannel images with a mismatching number of channels, such that an error was raised. This problem has been fixed.
HALCON's implementation to read and write a mutex could deadlock under certain circumstances due to a race condition. This problem has been fixed.
crop_domain_rel did not free all temporarily allocated memory and therefore, returned a respective low level error. This problem has been fixed.
gen_circle and gen_ellipse returned an empty region if they were called with a huge radius/huge radii. This problem has been fixed.
merge_regions_line_scan sometimes returned the error 3501 ("Number of chords too big. Increase 'current_runlength_number' using set_system!") in the case of a large number of input regions. This problem has been fixed.
polar_trans_region crashed when the value for at least one of the parameters Width and Height was very large. This problem has been fixed. Note that this problem only occurred under HALCON XL.
select_shape returned incorrect values for the features 'area', 'row1', 'column1', 'row2', and 'column2' if floating point values where passed for Min.
These values where rounded down instead of rounded up. This problem has been fixed.
select_shape returned wrong results if the operator was called with the feature 'area_holes' and real values for the parameters Min and Max. This problem has been fixed.
connection returned incorrect results for regions that lay at the boundary of the range that is representable with standard HALCON, i.e., if the region contained the coordinates -32768 or 32767. This problem has been fixed. Note that HALCON XL was not affected by this problem.
Some threshold operators raised errors for images of maximum width or height (32768 pixel for standard HALCON). The affected operators are:
This problem has been fixed.
On Windows, receive_data did not return the correct address for the sender for TCP sockets. This problem has been fixed.
receive_tuple returned wrong numbers on 64 bit systems when negative integer values were send via send_tuple. E.g., sending -1 to a 64 bit system resulted in the received number 4294967295. This problem has been fixed.
set_system ('default_font', Font) did not return an error if an invalid font name was passed. This problem has been fixed. Now, the error 5137 ("Wrong font name") is returned.
set_system did not check the allowed range for the following generic parameter values correctly:
This problem has been fixed.
write_aop_knowledge returned the error 5198 ("Insufficient rights on file") for file names without path. The executable program hcheck_parallel was affected as well. This problem has been fixed.
tuple_number did not convert some real numbers. Strings containing an e/E but no decimal point were affected. This problem occurred first in HALCON 11.0.3.3. This problem has been fixed.
tuple_number did not convert hex-encoded numbers containing 'e' or 'E'. This problem has been fixed.
fit_ellipse_contour_xld might have crashed in rare cases. This problem has been fixed.
gen_contour_polygon_rounded_xld did not sample the new contour as specified. The spacing between some points was too large. This problem has been fixed.
gen_contours_skeleton_xld sometimes did not return the expected contours at a junction point with a quite straightforward vicinity. This problem has been fixed.
gen_parallels_xld sometimes extracted wrong parallel XLD polygons when identical polygons were used. This problem has been fixed.
gen_parallels_xld did not take into account the parameter Dist as expected for contour segments of very different length. This problem has been fixed
intersection_contours_xld in rare cases returned the start/end point of closed contours as intersections. This problem has been fixed.
intersection_contours_xld returned no intersection point in rare cases. This problem has been fixed.
intersection_contours_xld in rare cases did not intersect vertical contours correctly. Instead, no intersection was reported even if two contours intersected. This problem has been fixed.
read_contour_xld_dxf did not support POLYLINEs of the type 3D POLYLINE although the status message stated that only the z coordinates are ignored. This problem has been fixed. Now, the x and y coordinates of POLYLINEs of type 3D POLYLINE are read and respective (2D) contours are returned for 3D POLYLINES.
segment_contours_xld and union_cotangential_contours_xld in rare cases returned different results if called multiple times. This problem has been fixed.
select_contours_xld sometimes did not return contours if the parameter Feature was set to 'direction', even if the direction of their regression line was between Min1 and Max1. This problem has been fixed.
split_contours_xld crashed if the passed polygon did not have a reference to a contour. This problem has been fixed. In this case, split_contours_xld now returns an appropriate error.
union_adjacent_contours_xld crashed in certain cases when the contours were more than 10000 pixels away from each other. This problem has been fixed.
When the procedure disp_message was called with a tuple of row or column coordinates, the call of set_tposition failed and threw an exception. That could be irritating. Now an exception is thrown by disp_message itself.
The visualization of 3D object models provided by the procedure visualize_object_model_3d did not fit properly into the given window if the image part to be displayed by this window and its size were not identical. This may have happened if dev_set_part has been called explicitly for the window or if the window has been opened or resized with one of the procedures dev_open_window_fit_image, dev_open_window_fit_size, dev_resize_window_fit_image, or dev_resize_window_fit_size. This problem has been fixed.
Using the HObject::operator [] in HALCON/CPP might have caused the error 4051 ("Image data management: object has been deleted already "). This problem has been fixed.
Iconic classes in HALCON/C++ were not type-safe. For example, it was possible to assign a region object to an instance of HImage. This problem has been fixed. Now, in this situation an exception will be raised.
The latest information about new interface revisions and newly supported image acquisition devices can be found on MVTec's web server.
Please refer to the corresponding documentation for information about additional changes, especially whether a new revision of the corresponding device driver is required.
The image acquisition template returned uninitialized memory when grabbing an image using grab_image or grab_image_async. This problem has been fixed by adding a dummy API call for grabbing an image. This dummy imitates an API call that waits for the end of the grab.
The HDevelop example program
has been added.
The HDevelop example program
has been added.
The HDevelop example program
has been added.
The HDevelop example program
has been added.
The HDevelop example program
has been added.
The HDevelop example program
has been added.
The HDevelop example program
has been deleted.
The Programmer's Guide did not mention that HDevEngine loads all standard procedures when it is started. This problem has been fixed.
The reference manual entry of calibrate_cameras did not describe the returned error correctly. The error returned by the camera calibration was documented as the average back-projection error. Instead, it is the root-mean-square error of the back projection. This problem has been fixed.
The reference manual entry of calibrate_hand_eye did not mention the units of the returned errors. This problem has been fixed.
The reference manual entries of catch and dev_get_exception_data were not correct. In particular, the description of the content of the Exception tuple was incomplete and the sequence of the existing content was not correct. This problem has been fixed.
The reference manual entry of create_planar_calib_deformable_model did not mention the orientation in which the ReferencePose must be specified. This problem has been fixed.
In the reference manual entry of create_pose the Yaw-Pitch-Roll convention for 3D rotations is described. In this context, the operator hom_mat3d_rotate_local was shown with an incorrect interface. This problem has been fixed.
Now, instead of
hom_mat3d_identity (HomMat3DIdent) hom_mat3d_rotate_local (HomMat3DIdent, RotX, 'x', 0, 0, 0, HomMat3DRotX) hom_mat3d_rotate_local (HomMat3DRotX, RotY, 'y', 0, 0, 0, HomMat3DRotXY) hom_mat3d_rotate_local (HomMat3DRotXY, RotZ, 'z', 0, 0, 0, HomMat3DXYZ)
the operator calls are shown correctly in the following way:
hom_mat3d_identity (HomMat3DIdent) hom_mat3d_rotate_local (HomMat3DIdent, RotX, 'x', HomMat3DRotX) hom_mat3d_rotate_local (HomMat3DRotX, RotY, 'y', HomMat3DRotXY) hom_mat3d_rotate_local (HomMat3DRotXY, RotZ, 'z', HomMat3DXYZ).
The reference manual entries of create_scaled_shape_model_xld and create_aniso_shape_model_xld have been extended with an advice for the size of the input contours.
The reference manual entries of create_text_model and find_text did not provide the information that the memory, which has been allocated for the created handles, must be freed explicitly (using clear_text_model and clear_text_result, respectively) when the handles are not needed anymore. This problem has been fixed.
The reference manual entry of evaluate_class_gmm described the parameter KSigmaProb incorrectly. It stated that KSigmaProb contains as many values as there are classes. Instead, it contains only one value, namely the maximum value over all classes. This problem has been fixed.
The reference manual entries of
did not mention that the parameter AngleExtent must be set to 0 if approximately rotationally objects are searched for with 'max_deformation' set to a value greater than 0. This problem has been fixed.
The reference manual entry of fit_primitives_object_model_3d stated that "If no primitive can be fitted to the set of 3D points, an empty 3D object model is returned". This was not correct. The content of the returned object model depends on the chosen values for 'output_point_coord' and 'output_xyz_mapping'. This problem has been fixed.
The reference manual entries of
stated that pointers are generic (long) and thus a cast becomes necessary. This was misleading, as a cast from the data type 'long' may have led to truncated pointers depending on the used operator signature and programming environment. In some cases, e.g., 'Hlong' must be used instead of 'long'. This problem has been fixed.
The reference manual entry of gen_region_runs did not contain a warning concerning the restriction that ColumnEnd must be greater or equal to ColumnBegin. This problem has been fixed. Now, it contains a warning, which mentions that this restriction is not checked by gen_region_runs and that a violation of this restriction may result in errors and unexpected behavior of subsequent operations.
The reference manual entry of get_bar_code_result did not state that the value for the print quality grade 'Decode' may be 0 although the symbol has been successfully decoded with HALCON. This may happen, because the decode algorithm of HALCON differs from that of the reference decode algorithm in the ISO standard. This problem has been fixed.
The reference manual entry of get_calib_data_observ_points did not contain detailed information about the returned values for Row and Column. The documentation now gives more information about the values that are returned for the coordinates of the detected points depending on the used operator for the calibration. This problem has been fixed.
The reference manual entry of get_data_code_2d_results did not describe the parameters 'quality_aimdpm_1_2006', 'quality_aimdpm_1_2006_labels', and 'quality_aimdpm_1_2006_values' for Aztec codes. This problem has been fixed.
The reference manual entries of optimize_fft_speed and optimize_rft_speed were not clear enough. There was no information if the optimized data may be transferred and used on other computers. This problem has been fixed. The documentation now contains the information that the resulting data is not suited for the use on other computers with different configurations.
The reference manual entry of read_object_model_3d has been improved. Now, it is described what exactly happens when passing string values to the parameter Scale, and that it is possible to pass numeric values, as well.
The reference manual entry of reconstruct_surface_stereo did not describe how point normals are determined. This problem has been fixed. Now, it is described that the normal vector of a point is calculated by fitting a plane through its neighboring points and using the normal vector of the plane as normal vector of the respective point.
The reference manual entry of render_object_model_3d incorrectly stated that the output image is a single-channel image. But in fact, render_object_model_3d returns a 3-channel image. This problem has been fixed. Now, the reference manual entry states that a multi-channel image is returned.
The reference manual entry of sample_object_model_3d incorrectly described the unit of SampleDistance as dependent on the parameter Scale in read_object_model_3d. Instead, the unit of SampleDistance is always meter. This problem has been fixed.
The reference manual entries of set_bar_code_param and set_data_code_2d_param did not describe the behavior of the bar code reader and of the data code reader, respectively, if a timeout occurs. This problem has been fixed. Now, the reference manual entries describe that no exception is raised if a timeout has been set with set_bar_code_param or set_data_code_2d_param and find_bar_code or find_data_code_2d run into a timeout. Instead, the intermediate results are returned and the occurrence of the timeout can be checked afterwards with get_bar_code_result or get_data_code_2d_results, respectively. Note that this behavior differs from the behavior of the operators find_shape_model, find_shape_models, find_scaled_shape_model, find_scaled_shape_models, find_aniso_shape_model, find_aniso_shape_models, and find_ncc_model, which raise a 'timeout occurred' exception.
The PDF versions of the reference manual entries of trans_from_rgb and trans_to_rgb described the domain of the 'cielab' color space incorrectly. This problem has been fixed.
In the reference manual entries of tuple_is_int, tuple_is_real, and tuple_is_string it is now mentioned more explicitly that these operators return the type of the internal representation of a tuple, and that this type does not necessarily correspond to the type of the tuple's elements.
The reference manual entry of union_straight_contours_xld now describes the effect of the parameter Percent in more detail.
The reference manual entry of write_object_model_3d did not sufficiently describe the parameter 'invert_normals'. Especially, some details for different file formats were missing. This problem has been fixed. Now, the behavior for different file formats is clarified.
The reference manual entry of write_object_model_3d stated that the STL format supports triangles and triangle normals. This suggested that normals that were contained in a 3D object model were written to file. However, as triangle normals are not supported by 3D object models and point normals are not supported by the STL format, no normals were written to file. The documentation was extended accordingly.
In the Solution Guide 3D Vision, the code snippets that illustrate the determination of the object pose in robot base coordinates from the object pose in camera coordinates did not correspond to the respective formulas. This problem has been fixed.
The documentation of the Image Acquisition Assistant within the HDevelop User's Guide wrongly stated that Live mode was stopped in case of errors. This problem has been fixed.
The documentation of the Calibration Assistant within the HDevelop User's Guide erroneously stated that only 8-bit images ('byte') are supported by the assistant, although 16-bit images ('uint2') can be used, too. This problem has been fixed.
HALCON 11.0.4 has been compiled for the following Windows platform versions:
The setup process checks whether it is running on a 32 or 64 bit system and provides a suitable list of platform versions that can be installed.
During the installation, the environment variable HALCONARCH is set to x86sse2-win32 or x64-win64 to indicate the installed platform version. Please note that if you want to switch to another platform version, you must first install it. Then, you must adapt the environment variable HALCONARCH (see the Installation Guide for more information).
HALCON 11.0.4 has been compiled in the following Linux platform versions:
Please refer to the Installation Guide for detailed system requirements corresponding to the different Application Binary Interfaces.
The installation script checks whether it is running on a 32 or 64 bit system and provides a suitable list of platform versions that can be installed.
HALCON 11.0.4 has been compiled for Mac OS X in the following platform versions:
The installer for the GigE Vision Streaming Filter now offers return codes that reflect if the driver was actually installed or not. The section "2.5 Manually Installing a Runtime Version of HALCON on Windows" of the Installation Guide has been updated accordingly.
The HALCON 11.0.3 installer failed to install the auxiliary DLLs haspsrm_win32.dll (and haspsrm_win64.dll, respectively) in case that the dongle driver installation was not selected within the setup procedure. This problem has been fixed.
The HALCON installer did not install the following binaries in the directory %HALCONROOT%/bin/%HALCONARCH%, which are necessary to run the HALCON USB3Vision interface:
This problem has been fixed.
The Windows Installer for HALCON now includes the MVTec GigE Vision Streaming Filter installer, so it is not necessary anymore to install it manually. Please note that this installer also has its own uninstaller and will not be removed automatically with the de-installation of HALCON.
On Windows systems with a large PATH environment variable (> 2000 characters) some entries may have been missing after installing or uninstalling HALCON. Therefore, some programs did not work. This problem has been fixed. Now, the length of the PATH environment variable is checked by the installer and a reboot is recommended, if the length exceeds 2000 characters.
The major new features of HALCON 11.0.4 are described with respect to HALCON 11.0.3. Follow the links below to read about major new features of previous HALCON versions.
The changes in HALCON 11.0.4 are described with respect to HALCON 11.0.3. Follow the links below to read about changes in previous HALCON versions.