This document provides the release notes for MVTec HALCON 10.0.4, as released in June 2013. HALCON 10.0.4 is primarily a maintenance release that fixes all known bugs in HALCON 10.0.3.
Overview
This document contains the following information:
- Detailed Description of Changes in HALCON 10.0.3
- 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.4. In contrast, all HALCON 9.0 licenses must be replaced or upgraded. Please contact your local distributor.
-
HALCON Library
HALCON 10.0.4 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.4 libraries are not compatible with HALCON 9.0 or earlier versions.
In detail, please note the following incompatibilities with respect to HALCON 10.0.3:
- Because of a fix concerning the determination of the angle and scale increment during the creation of shape models, 3D shape models, and NCC models and because of a fix of a very unlikely crash during the creation of shape models, the created models might differ from models created with previous versions. Therefore, the respective matching results might also differ slightly. Sometimes, the runtime can increase slightly, however, the search is now more robust.
- Because of a fix concerning the creation of small descriptor models, the created descriptor models might differ from models created with previous versions. Therefore, the respective matching results might also differ slightly for small models. Additionally, if no valid model can be created, create_uncalib_descriptor_model and create_calib_descriptor_model now return the error 8977 ("Too few feature points can be found").
- Because of a fix concerning the computation of the score values, the behavior of find_calib_descriptor_model and find_uncalib_descriptor_model has changed slightly.
- Because of a fix concerning the creation of 3D shape models, the created 3D shape models might differ from models created with previous versions. Therefore, the respective matching results might also differ slightly. The runtime of create_shape_model_3d, the size of the resulting model, and the runtime of find_shape_model_3d increased by about 15 percent, however find_shape_model_3d is now more robust.
- write_image only writes the first channel of the given image if the file format is set to 'ima'. To avoid data loss, write_image now returns the error 9005 ("Wrong number of image components for image output") if called with a multi-channel image and the file format set to 'ima'. If you want to write only the first channel and your program relied on the behavior that higher channels were silently ignored, you now have to select the first channel with access_channel explicitly and write just this channel with write_image.
-
HALCON Applications
Applications (i.e., executables) developed with HALCON 10.0, HALCON 10.0.1, HALCON 10.0.2, or HALCON 10.0.3 can be used with HALCON 10.0.4, i.e., HALCON 10.0.4 is binary compatible with HALCON 10.0, HALCON 10.0.1, HALCON 10.0.2, and HALCON 10.0.3.
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, HALCON 10.0.2, and HALCON 10.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 10.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 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.3:
- For using the updated SiliconSoftware interface you must install the new Silicon Software SDK 5.2.1.
If you have developed your own acquisition interfaces with HALCON 10.0, HALCON 10.0.1, HALCON 10.0.2, or HALCON 10.0.3, you can use them with HALCON 10.0.4 without further action.
-
Extension Packages
Extension packages developed with HALCON 10.0, HALCON 10.0.1, HALCON 10.0.2, or HALCON 10.0.3 can be used with HALCON 10.0.4 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.4.
-
ActivVisionTools 1.0 to 3.1 cannot be used with HALCON 10.0.4. If the setup program detects such an ActivVisionTools version, it warns you that by continuing to install HALCON 10.0.4 you will disable your ActivVisionTools installation.
If you still want to use your ActivVisionTools installation, you must also keep your old HALCON installation and switch back to it as described in the Installation Guide.
Detailed Description of Changes in HALCON 10.0.4
Detailed release notes can be obtained for the following topics:
- HDevelop
- HALCON Library
- HALCON/C
- HALCON/.NET
- HALCON/COM
- HDevEngine
- Image Acquisition Interfaces
- Manuals
- Miscellaneous
HDevelop
-
Functionality:
- When refreshing parameters in the Image Acquisition Assistant, conflicts between externally modified values and local changes were resolved by restoring the local values. This had unintuitive side effects in some situations. Therefore, the behavior has been changed to always honor the external device state.
- In the Measure Assistant, the range of the parameter 'Reference Pair Width' on the Fuzzy tab card has been increased to accommodate larger values.
- If a variable of type 'any' is expected, the auto completion list box of HDevelop now lists all available variables, even object IDs and model IDs.
-
Bug Fixes:
- In some cases, the tooltip in the full text editor did not show the contents of the variable under the mouse cursor, but only a general tooltip of the program line. This happened within newly created procedures if the procedure was created from the selected program lines of another procedure. This problem has been fixed.
- If an HDevelop variable contains a very long string and if the content of this variable is displayed in a tooltip, in the Variable View, or in the Variable Inspect, HDevelop seemed to hang. This problem has been fixed. For a better working experience, the displayed strings are now limited in their size. In the Variable Inspect, no more than 10000 characters are displayed. In the Variable View and in tooltips, which provide only limited possibilities to inspect the value of a variable, the lengths of strings is limited to 5000 characters and 1000 characters, respectively.
-
There were some minor problems with the Insert Program
functionality:
- There was no message box opened if the loading and inserting of the program failed.
- The file dialogs that were opened by selecting any Insert Program task listed also HDevelop procedure files, although inserting external procedures is not supported.
- In HDevelop/Demo, the task 'Insert Mainbody' did not work.
- In MDI mode, some HDevelop tools were not correctly opened if the MDI windows were maximized. The following windows did not occupy the whole MDI area and had no frame: Zoom window, Create Procedure and Procedure Interface dialog, Line Profile tool, Create and Edit Procedure Library dialog. This gave the false impression that the maximize mode was left, which was, however, broken. This problem has been fixed.
- In the Operator window and in the parameter suggestion list that is opened in the Program Listing by the auto completion, a browse button allows to open a file dialog for selecting a file name interactively. However, this dialog was not always initialized with the current parameter value. This happened in particular when the current parameter value was a relative path and, within the auto completion, if the file name parameter was the very last parameter, like the parameter FileName in the operator read_image. This problem has been fixed.
- For parameters of the semantic type 'filename', the Operator window offers a button that allows to select the file name via a file dialog. If the file dialog was opened again, it was not opened in the same directory where it was left before. This problem has been fixed.
- The auto completion popup could occur even if the Program Editor window was moved into the background. This could happen when another HDevelop window, the Save As dialog, or another application was activated immediately after editing a program line. In addition, if the Save As dialog was opened while the auto completion popup was open, the auto completion popup was not closed and could hide parts of the file dialog. These problems have been fixed.
- If a program is (partly) executed and if a program line above the program line that contains the PC is edited, the PC should be set to the edited program line. This did not happen if in the edited program line just parameters were changed and the program line was valid all the time. This problem has been fixed.
- The auto completion support of the full text editor did not handle negative values correctly. If for a specific parameter a negative value was selected from the suggestion list and then TAB was pressed in order to complete this parameter with a comma and go to the next parameter, nothing happened. When the suggestion list was opened again and the parameter was selected again, an additional minus ('-') was added. This problem has been fixed.
- HDevelop crashed if the Graphics window of HDevelop displayed XLD contours and the user tried to select a contour by using the mouse and clicking on it. This problem has been fixed.
- The operation 'Scale' in the Gray Histogram of HDevelop did not change the output when the current range was smaller than 0.001. This has been changed: Now the output is changed even when the difference between min and max is smaller than 0.001.
- In rare cases, HDevelop crashed when the Find/Replace dialog was open, a search was executed with the 'Find All' option, and a new program was loaded or created. This problem has been fixed.
- If the Variables mode of the Find/Replace dialog was used to replace some or all occurrences of a variable name by a different name, the replacement failed and an error box was opened when the variable name to be replaced was located within the call of a procedure. This problem has been fixed.
-
If the search direction was changed in the Find/Replace dialog
after finding a hit and without moving the text cursor explicitly
to a new search position, the following problems could occur:
- If the Find button was pressed to continue the search, the last hit was found again.
- If the Replace button was pressed, an error message box was opened.
- Depending on the GUI style and the number of external procecures, the procedure name combo box popup list in the Program Editor window could become very big and actually occupy the whole screen. This happened if the selected GUI style was Cleanlooks, which is the default style for Linux. Under Windows, the problem occurred if HDevelop was started explicitly with the Cleanlooks style by passing the command line option -style Cleanlooks. This problem has been fixed.
- Empty regions were erroneously labeled as empty objects in the Variable window, in the tooltip, and in the status bar. This problem has been fixed.
- The background color of the Zoom window and of the Magnify window was always set to black. This problem has been fixed. Now, the background color of these windows is set to the background color of the active Graphics window.
- The Calibration Assistant of HDevelop showed HALCON low-level errors when adding calibration images with specific properties. This happened, e.g., if the width of an image was smaller than 640 or if the extraction of calibration marks failed for all loaded images. In rare cases, loading of such images might even have lead to a crash in HDevelop, independent of whether throwing of low level errors was activated or not. This problem has been fixed.
- The Calibration Assistant could not load images on its Calibration tab card if the path contained non-ASCII characters. This problem has been fixed.
- HDevelop could have crashed if any assistant was closed while it was grabbing images in Live Image mode. This problem has been fixed.
- The "auto disconnect" feature of the Image Acquisition Assistant did not work in Live Image mode. Live acquisition continued after code generation, blocking the device. This problem has been fixed.
- The Image Acquisition Assistant could not handle non-ASCII characters correctly that were returned from the image acquisition interfaces. This could concern device names, parameter values, and tool tips. In addition, the path names of the File interface were also effected. These problems have been fixed.
- The Matching Assistant crashed if the Usage tab listed images that have been acquired with the Image Acquisition Assistant, then, the settings were saved, and finally reloaded into a new Matching Assistant. This problem has been fixed.
-
The Matching Assistant generated incorrect code for loading a DXF
model. This problem has been fixed. Now, the following correct
code is generated:
read_contour_xld_dxf (DXFModelContours, 'model.dxf', [], [], DXFStatus) - In the Matching Assistant it was not possible to switch between a loaded model and a created model, although the settings made for the models were displayed. This problem has been fixed.
- If the path of the DXF file to be loaded by the Matching Assistant was very long, it could happen that the Insert Code button was no longer visible. This problem has been fixed.
- The Matching Assistant could not load saved assistant settings with a DXF model. This problem has been fixed.
- When using the Matching Assistant with the deformable or shape-based matching method, in some cases it was suggested to run the optimization again with an lower score, even if the recognition rate was already higher than requested. This happened if in the Usage tab 'Visible' was set to a value lower than the number of matches found in the sample image. This problem has been fixed. Now the user is informed to check the value of the parameter 'Visible'.
- The Measure Assistant raised low-level errors when the extracted edges should be visualized with shadows but no edges were found. This problem has been fixed.
- By double clicking on a local or external procedure in one of the Procedures tab cards of the Preferences dialog, this procedure is displayed in the Program window. For locked procedures, the combo box of the Program window was not updated, i.e., it still showed the name of the previously selected procedure. This problem has been fixed.
- HDevelop crashed when there was no program window and a procedure was opened for editing, or if there was no program window and the replace functionality of HDevelop's Find/Replace dialog was used. This problem has been fixed.
- If a short description of a procedure contained multiple lines, only the first line was exported as a comment. This problem has been fixed.
- If another program was inserted into the current procedure via File / Insert Program / Insert All... or Insert Mainbody... and if then this action was undone, e.g., with Ctrl+Z and redone again (Ctrl+Y), all blocks that have been inserted from the other main procedure became invalid. This problem has been fixed.
- If a local variable in a HDevelop program is changed into a global variable, or vice versa, typically, its value changes. However, the new value of the variable was not displayed in the Variable window of HDevelop. This problem has been fixed.
- If an HDevelop program contains in two or more different procedures global variable declarations for the same variable name that give different types, HDevelop chooses the type that is given in the first declaration, and all declarations that give a different type become invalid. If all valid declarations are removed or deactivated, the up to now invalid declarations should become valid and define the new type of the global variable. This, however, did not happen, and the remaining declarations stayed invalid. HDevelop might even have crashed as a consequence. This problem has been fixed.
- HDevelop sometimes exported unnecessary declarations of local variables. This happened, e.g., if a local variable was referenced only by operators that were not exported or that were deactivated. This problem has been fixed.
- HDevelop exported increment statements of global variables incorrectly to C++ if the initialization of a global variable and the increment statement were located in different procedures. This problem has been fixed.
- HDevelop and HDevEngine had a small memory leak while loading programs and procedures. This problem has been fixed.
- ROI files that had been written with the ROI tool and that contained at least two regions connected via an XOR operation were not read correctly. This problem has been fixed. Note that this problem concerned only the reading of the ROI files, i.e., ROI files that have been written with older HALCON versions are correct and can be read correctly.
- The encoding of the tooltips of variables that hold a tuple with several strings were sometimes wrong. Non-ASCII characters were not correctly encoded in the tooltip if the file name encoding was set to locale during the creation of the string tuple. This problem has been fixed.
- HDevelop crashed if a character was inserted before the very last character of a program line and if in that moment that program line was not visible in the editor because it was scrolled out-of-view. This problem has been fixed.
- Within a program line, comments can follow after '//', however, this did not work within global variable declarations. These program lines became invalid by the '//'-comment. This problem has been fixed.
- If there are two HDevelop instances running at the same time, and if one instance is blocked by a long running operator, it could happen that the other HDevelop instance did not respond when the clipboard was used by this instance, e.g., by trying to copy and paste the selected text into the full text editor. This problem has been fixed.
- Under Solaris, some HDevelop tools and the Measure Assistant could freeze HDevelop when they were started. The following tools were effected: Gray Histogram, Feature Histogram, and Line Profile tool. Starting the histogram tools, HDevelop froze only if an image was loaded and displayed in the Graphics window. The Line Profile tool and the Measure Assistant froze HDevelop without any precondition. These problems have been fixed.
-
Procedures:
- The chapter names of the external standard procedures are now available in German, as well.
- The procedure parse_filename did not work if the supplied input contained periods (.) in folder names and the file name had no extension. This problem has been fixed.
HALCON Library
-
Modified Operators:
- The shape-based 3D matching and the calibrated perspective matching now are more efficient for lenses with strong polynomial distortions or strong pincushion-shaped radial distortions. Efficiency in this context means both in terms of model size as well as in terms of runtime when searching the model in an image. For very large distortions, this might result in speed-ups up to a factor of 2.
-
Bug Fixes:
- For some HALCON operators, the OpenCL implementation did not check if the required OpenCL image channel data type is supported by the OpenCL device. This problem has been fixed.
- Many operators did not treat an empty domain correctly when executed on an OpenCL device. These problems have been fixed.
- Accessing an image object on a compute device from a thread different to the one that originally created the image could freeze or crash HALCON under certain conditions. This problem has been fixed.
- After setting the file name encoding to UTF-8, strings with non-ASCII characters were not displayed correctly in the HALCON window under Windows. This problem has been fixed. Now it is possible to display characters in the HALCON window that do not belong to the native encoding table.
- append_ocr_trainf did not check whether any of the input regions is empty. This problem has been fixed.
- The individual boundaries of regions that have more than one boundary, e.g., because of holes, were displayed in different colors if a dashed line style was specified and dev_set_colored was used. This problem has been fixed.
- calibrate_cameras optimized both Sx and Sy when excluding the focal length from optimization and using a non-telecentric camera. This problem has been fixed. Now Sy remains excluded from optimization when calibrate_cameras is called without any further parameter exclusion.
- change_radial_distortion_cam_par sometimes returned the error 6001 ("Not enough memory available"). Only the polynomial camera model was affected. This problem has been fixed.
- class_2dim_unsup returned wrong results. This problem has been fixed.
- concat_ocr_trainf showed an erroneous behavior if the input and output files were identical. If the output file was the first file in the list of input files, then concat_ocr_trainf returned the error 8313 ("unknown OCR training file version"), which was not the correct error message. Otherwise, i.e., if the output file was in the list of input files but not at the first position, concat_ocr_trainf crashed. Now, in these cases the error message 8319 ("OCR training file concatenation failed: identical input and output files") is returned. The documentation of concat_ocr_trainf has been extended by a reference saying that it is not allowed to use the same file as input and output file.
- create_calib_descriptor_model and create_uncalib_descriptor_model did not work correctly if the value of the generic parameter 'min_rot' was equal to the value of the generic parameter 'max_rot'. If a model that has been created such was used in find_calib_descriptor_model or find_uncalib_descriptor_model, respectively, no matches were found. This problem has been fixed.
-
create_calib_descriptor_model and
create_uncalib_descriptor_model
sometimes created invalid models if the domain of the input image
was small. More precisely, this was the case if the diagonal of the
smallest bounding box of the extracted model points was smaller than
100. If a model that has been created such was used in find_calib_descriptor_model or find_uncalib_descriptor_model, respectively,
no matches were found. This problem has been fixed.
Note that because of this fix, the behavior of find_calib_descriptor_model and find_uncalib_descriptor_model has changed slightly for small models. Additionally, if no valid model can be created, create_uncalib_descriptor_model and create_calib_descriptor_model now return the error 8977 ("Too few feature points can be found"). - create_class_svm failed to notice the case where the user attempted to do image segmentation or novelty detection, providing samples from just one class, and mistakenly choosing a classification mode other than 'novely-detection'. This problem has been fixed.
- create_planar_calib_deformable_model sometimes wrongly returned the error 8510 ("Number of shape model points too small"). This might have happened if Contrast was set to 'auto' and CamParam contained polynomial distortions or pincushion-shaped radial distortions. This problem has been fixed.
-
The operators
- create_shape_model,
- create_shape_model_xld,
- create_scaled_shape_model,
- create_scaled_shape_model_xld,
- create_aniso_shape_model,
- create_aniso_shape_model_xld,
- create_local_deformable_model,
- create_local_deformable_model_xld,
- create_planar_uncalib_deformable_model,
- create_planar_uncalib_deformable_model_xld,
- create_planar_calib_deformable_model,
- create_planar_calib_deformable_model_xld,
- create_shape_model_3d, and
- create_ncc_model
Note that the created models might differ slightly from models created with previous versions. Therefore, the respective matching results might also differ slightly. Sometimes, the runtime can increase slightly, however, the search is now more robust. -
create_shape_model_3d did not create
enough views in some parts of the pose range. Consequently, objects
with a pose that was within this part of the pose range could not be
found robustly by using find_shape_model_3d. This problem has been
fixed.
Note that because of this fix create_shape_model_3d, and hence, the created models themselves slightly changed. The runtime of create_shape_model_3d, the size of the resulting model, and the runtime of find_shape_model_3d slightly increased by about 15 percent on average. Further note that the precomputed 3D shape model file clamp_sloped_35.sm3 in the directory examples/hdevelop/Applications/Position-Recognition-3D has been updated accordingly. - create_shape_model_3d crashed in some cases. This problem has been fixed.
- crop_contours_xld sometimes behaved unexpectedly when points of the contour lay directly on the border of the cropping rectangle: It either did not clip the contour in the expected place or returned the point twice. This problem has been fixed.
- crop_contours_xld returned undefined values if the contour entered or left the rectangle exactly vertically and if this vertical segment was coincident with one of the vertical borders of the rectangle. This problem has been fixed.
- derivate_funct_1d shifted the output function that represents the derivatives such that it started at the position x=0 if the input function has been created by sample_funct_1d or transform_funct_1d. This problem has been fixed.
- derivate_gauss returned values for pixels outside of the domain of the input image if the SSE or AVX implementation was used, even if the system variable 'init_new_image' was set to 'true'. This especially happened if the output of derivate_gauss was used in an operator that ignores the domain of the input image (e.g., fft_generic). This problem has been fixed.
- determine_shape_model_params and determine_deformable_model_params sometimes did not return the error 8510 ("Number of shape model points too small"). This was the case if the number of pyramid levels was not determined automatically, i.e., 'num_levels' was not passed in Parameters. This problem has been fixed.
- dev_display showed the full image instead of just the pixels within the image domain if the image domain had exactly the same dimensions as the window. This problem has been fixed.
- disp_image showed a blank window under some settings of the image region to be displayed given by the operator set_part. In particular, when the rectangular region specified by set_part was shifted by an amount such that the sum of that offset and the image domain size exceeded the 32k limit. This problem has been fixed.
- disp_obj copied the left image column to the right image column under some settings, where the displayed image part specified by the operator set_part fell out of the image. This problem has been fixed.
- draw_nurbs_mod did not work correctly with closed input NURBS if the first and the last weight of the input NURBS differed. This problem has been fixed.
- find_bar_code returned the error 3513 ("Internal error: number of chords too big for num_max") in rare cases. This problem only occured if the domain of the input image had been reduced. This problem has been fixed.
- The print quality for composite bar codes was calculated incorrectly under specific circumstances. This problem has been fixed.
-
find_calib_descriptor_model and find_uncalib_descriptor_model sometimes
computed score values that were too low. As a consequence, sometimes
obviously correct matches were not found which finally might also
resulted in a reduced robustness. This problem has been fixed.
Note that because of this fix, the behavior of find_calib_descriptor_model and find_uncalib_descriptor_model has changed slightly. - find_data_code_2d did not find a mirrored data code in training mode in some cases. This problem has been fixed.
- For the ECC200 data code reader, the parameter 'symbol_shape' was not reset to 'any' if the parameter 'symbol_shape' was first set to the value 'square' or 'rectangle' and then, the parameter 'default_parameters' was set to 'standard_recognition', 'enhanced_recognition', or 'maximum_recognition'. This implied that the values for 'symbol_rows_min', 'symbol_rows_max', 'symbol_cols_min', and 'symbol_cols_max' were set to the maximum and minimum values available for the shape 'square' or 'rectangle' instead of 8, 144, 10, and 144. These problems have been fixed.
- The QR code reader failed to decode some QR codes of model type 1 if 'model_type' was set to 'any', although they were successfully decoded if 'model_type' was set to '1'. This problem has been fixed.
- The data code print quality inspection may have returned incorrect grades if a timeout was set. This problem has been fixed.
- The data code print quality inspection for ECC200 codes depended on the parameter 'module_grid'. For different settings of this parameter the print quality inspection may have returned significantly different values. This problem has been fixed.
- find_marks_and_pose returned erroneous mark coordinates for telecentric lenses with the polynomial distortion model. This problem has been fixed.
- find_planar_calib_deformable_model returned different results if the planar calibrated deformable model contained polynomial camera parameters and if it was saved and loaded with write_deformable_model and read_deformable_model. This problem has been fixed.
- find_planar_calib_deformable_model did not find planar calibrated deformable models created with create_planar_calib_deformable_model_xld and additionally augmented with set_planar_calib_deformable_model_metric if the distortion of the camera was very large. This problem has been fixed.
- find_planar_calib_deformable_model, find_planar_uncalib_deformable_model, and find_local_deformable_model sometimes did not return a result if the parameter MinScore was set to an integer value, such as 0. Additionally, the three operators sometimes crashed if negative values were passed as MinScore. These problems have been fixed.
-
The operators
- find_shape_model,
- find_shape_models,
- find_scaled_shape_model,
- find_scaled_shape_models,
- find_aniso_shape_model,
- find_aniso_shape_models,
- find_local_deformable_model,
- find_planar_calib_deformable_model,
- find_planar_uncalib_deformable_model,
- find_component_model, and
- find_shape_model_3d
Note that because of this fix the corresponding model creation process, and hence, the created models themselves changed slightly. This is the case for the following operators:- create_shape_model,
- create_shape_model_xld,
- create_scaled_shape_model,
- create_scaled_shape_model_xld,
- create_aniso_shape_model,
- create_aniso_shape_model_xld,
- create_local_deformable_model,
- create_local_deformable_model_xld,
- create_planar_uncalib_deformable_model,
- create_planar_uncalib_deformable_model_xld,
- create_planar_calib_deformable_model,
- create_planar_calib_deformable_model_xld,
- create_shape_model_3d,
- create_component_model, and
- create_trained_component_model.
- find_surface_model did not return more than 100 matches, even if the corresponding scene contained more instances of the search object. This problem has been fixed.
-
find_surface_model did not
always return the score as documented. This happened in the
following two cases:
- If the dense pose refinement was disabled and the sparse pose refinement was enabled, find_surface_model always returned the 'score_type' of type 'model_point_fraction', regardless of the setting of 'score_type'.
- If the 'score_type' was set to 'num_scene_points', a weighted sum is returned, whereas the documentation incorrectly stated that the actual number of scene points would be returned. Additionally, if the dense pose refinement was enabled, the documentation incorrectly states that the sampled scene points would be used.
- fit_ellipse_contour_xld in very rare cases returned the value NaN for parameters of the fitted ellipse if the algorithm 'voss' was used. This happened, e.g., if the contour is extremely elongated and has many self-intersections. This problem has been fixed.
- gen_region_polygon_xld ignored the system parameter 'store_empty_region'. It always behaved as if 'store_empty_region' were set to 'true'. This problem has been fixed.
- get_bar_code_result in rare cases returned the wrong string for bar codes using composite symbols. This could happen if the composite encodation method 10 was used and the composite symbol started with application identifier 10. For example, "(10)1234ABC...") was returned as "(10)101234ABC...". This problem has been fixed.
- The bar code reader could not read UPC-A bar codes in rare cases. This might have happened for bar codes where the first symbol character is out of number set A but might also be interpreted as character in number set C. The wrong number set C could have been used in rare cases and the code be read in the wrong direction. Very likely, the code was not accepted by the checksum test and no result was returned. This problem has been fixed.
- It was possible that bar codes with narrow elements could not be trained successfully, even though they can be read when setting element_size_min to 1.5 manually. This problem has been fixed.
- The bar code print quality inspection may have returned incorrect grades for Codabar codes. This problem has been fixed.
- get_data_code_2d_objects crashed while requesting the 'process_image', if 'small_modules_robustness' was set to 'high' and at the same time the height of the image was larger than its width. This problem has been fixed.
- get_data_code_2d_results crashed in some cases for the quality inspection of ECC200 data codes when results were queried by setting the parameter ResultNames to 'quality_isoiec15415'. This problem has been fixed.
- get_data_code_2d_results may have added new data code candidates to the data code handle if it was used for print quality inspection. This problem has been fixed.
- On Windows operating systems with a display setting with more than 256 colors, the following problem could occur: if get_lut was called on a HALCON window before set_lut, get_lut returned '' instead of 'default'. If set_lut was then called with the value returned by get_lut (''), an error was returned. This problem has been fixed.
- get_region_convex returned open polygons. This problem has been fixed. Now, the polygon, which describes the border of the convex hull of the region, is closed.
- get_text_model_param returned 0 as default value for 'fragment_size_min'. Furthermore, the parameter 'add_fragments' was missing in the list of default parameters of get_text_model_param. These problems have been fixed.
- list_files had a memory leak. This problem occurred only when the file name encoding was set to UTF8. This problem has been fixed.
- local_min_sub_pix and local_max_sub_pix sometimes did not return all local minima or maxima. This problem has been fixed.
- map_image crashed with some maps generated by convert_map_type or gen_image_to_world_plane_map. This was only the case for maps of type 'coord_map_sub_pix'. This problem has been fixed.
- mean_image crashed under HALCON XL with very large images when using reduced domains and if the image domain started at a linear image coordinate (i.e., Row*ImageWidth+Col) of above 2^30. The problem also occurred in combination with very large images and automatic operator parallelization on domain level, as the underlying concept uses reduced domains implicitly.
- mean_sp and eliminate_sp returned incorrect results or an error for multi-channel images. This problem has been fixed.
- opening_rectangle1 and closing_rectangle1 may have returned regions with corrupted features. These regions caused undefined behavior in subsequent operators, e.g., in select_shape. The erroneous behavior did only occur if the result of opening_rectangle1 or closing_rectangle1 was an empty region. This problem has been fixed.
- optical_flow_mg crashed in rare cases if the created vector field contained the value NaN. Additionally, the operator unwarp_image_vector_field crashed if the passed vector field contained the value NaN. These problems have been fixed.
- paint_region did not work correctly or crashed for multi-channel images of mixed type. This problem has been fixed.
- polar_trans_image_ext returned only black images when applied to images of height (or width) 1 in case that the last parameter was set to 'bilinear'. This problem has been fixed. polar_trans_image_ext now returns the error 3018 ("Image height too small") or the error 3019 ("Image width too small").
- prepare_object_model_3d did not close all holes during the triangulation of the given 3D object model, i.e., if the parameter Purpose was set to 'segmentation'. This problem has been fixed.
- project_object_model_3d did not return all edges that are horizontal in the projection. This problem has been fixed.
- query_available_compute_devices may have returned an error on certain systems. This problem only occurred on systems with OpenCL compatible CPUs. This problem has been fixed.
- read_image does not read BMP files with BitCount = 4 correctly. It exchanged the green and the blue channel of these files. This problem has been fixed.
- read_object_model_3d read incorrect values from ASCII files in rare cases if those files contained floating-point numbers with a precision larger than 9. This problem has been fixed.
- receive_tuple caused a high CPU load on Windows systems when the parameter Wait of socket_accept_connect was set to 'true'. This problem has been fixed.
- The QR code reader failed to decode some mirrored QR codes. This problem only occurred if 'mirrored' has been set to yes using set_data_code_2d_param. This problem has been fixed.
- When setting the line style to a value not equal to [], e.g., by calling set_line_style with Style set to [2,2], subsequent calls to display a region in 'fill' mode could take a lot of time under Windows. This problem has been fixed.
- set_shape_model_metric wrongly reset the shape model parameters 'shape_model_origin', 'timeout', and 'border_shape_models' to default values. This problem has been fixed.
- The automatic operator parallelization had a memory leak when the thread pool was switched off by set_system ('thread_pool', 'false'). This problem has been fixed.
- set_text_model_param crashed in rare cases. This problem has been fixed.
- skeleton showed an inconsistent behavior if the input region contained one or more isolated pixels. If the input region consisted of only a single pixel, this pixel was returned as the skeleton. If the input region consisted of at least two isolated pixels, an empty region was returned as the skeleton. This problem has been fixed. Now, the skeleton contains each isolated pixel.
- text_line_orientation returned incorrect results when the search range was not symmetrical about the horizontal axis, e.g., from 10° to 30°. Also, the restrictions on the search range have been relaxed to allow any search range spanning less than 180°, e.g., from 70° to 110°. Furthermore, text_line_orientation could in rare cases return an angle that was off by one or two degrees from the best estimated orientation. These problems have been fixed.
- text_line_orientation and segment_characters sometimes returned the error 3501 ("Number of chords too big. Increase 'current_runlength_number' using set_system!") or the error 3513 ("Internal error: number of chords too big for num_max"). This problem has been fixed.
- text_line_orientation raised an error if the input region lay partially outside of the input image. This problem has been fixed.
- union_adjacent_contours_xld did not always merge all adjacent contours if the distance between the endpoints of the contours was smaller than 1 and the contours appeared in a certain order. This problem has been fixed.
- union_cocircular_contours_xld in some cases did not merge segments of circles, even though the angles between their tangents and their connecting line were small and MaxTangentAngle was set to a much larger value. This problem has been fixed.
- write_image wrote the two files Sample.ima.ima and Sample.ima.exp, respectively if called in the following way: write_image (Image, 'ima', 0, 'Sample.ima'). Now the suffix '.ima' is ignored if it was specified with the file name and the two files Sample.ima and Sample.exp, respectively, are written. Furthermore, when the user tries to write a multi-channel image, now the error 9005 ("Wrong number of image components for image output") is returned, because write_image only writes the first channel of the given image if the file format is set to 'ima'.
HALCON/C
-
Bug Fixes:
- clear_obj was not able to handle iconic objects set to UNDEF_KEY in HALCON/C. This made it impossible to export a working error handling of an operator from HDevelop language to HALCON/C code. This problem has been fixed.
HALCON/.NET
-
Bug Fixes:
- When using an instance of HWindowControl on a Windows Forms MDI child form, the control no longer worked after hiding and re-showing the form. This problem has been fixed.
HALCON/COM
-
Bug Fixes:
- HALCON/COM had a memory leak if a null pointer was passed instead of an iconic or tool class input object. This problem has been fixed.
- clear_obj was not able to handle iconic objects set to UNDEF_KEY in HALCON/COM. This made it impossible to export a working error handling of an operator from HDevelop language to HALCON/COM code. This problem has been fixed.
HDevEngine
-
Bug Fixes:
- There was a small memory leak in HDevelop and HDevEngine while loading programs and procedures. This problem has been fixed.
- list_files had a memory leak. This problem occurred only when the file name encoding was set to UTF8. This problem has been fixed.
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 Example Programs:
-
The new HDevelop example programs
- hdevelop/Image/Acquisition/sick-3dcamera_buffer_queue.hdev
- hdevelop/Image/Acquisition/sick-3dcamera_grabbing_modes.hdev
-
The new HDevelop example programs
- hdevelop/Image/Acquisition/siliconsoftware_fieldparameter.hdev
- hdevelop/Image/Acquisition/siliconsoftware_multiroi.hdev
-
In the example programs
- c#/IACallback/source/IACallback.cs and
- cpp/console/source/ia_callback.cpp,
-
The HDevelop example program
- hdevelop/Image/Acquisition/saperalt_split_channel_mode.hdev
-
The new HDevelop example programs
-
Modified Image Acquisition Interfaces:
- The following HALCON image acquisition interfaces have been
revised since HALCON 10.0.3:
- The new revision of the BitFlow interface fixes a bug in the operator grab_image_start that could lead to a deadlock situation in combination with succeeding asynchronous image acquisition operators.
- The new revision of the DirectFile interface includes an enhanced DLL registration process in case the interface is not already registered correctly.
- The new revision of the DirectShow interface enhances the device enumeration to enable the use of multiple cameras with the same name, allows to choose different formats/resolutions for more cameras, and enhances setting of the parameters for such cameras. Furthermore, the interface includes an enhanced DLL registration process in case it is not already registered correctly and contains various bug fixes.
- The new revision of the File (VirtualFG) interface allows now to specify a directory name also relatively to the search path and fixes a bug that occured when reading TIFF files with an alpha channel.
- The new revision of the GenICamTL interface has been revised and extended to completely support GenTL v1.3 and provides numerous fixes and improvements. The new interface revision now provides access to GenICam chunk data and supports GenICam events through callbacks. Especially, a bug that led to a crash while opening some devices as well as a bug regarding XML loading from a device have been fixed and warning messages while registering internal GenApi callbacks are omitted.
- The new revision of the GigEVision interface now uses the internal GenApi callbacks for the parameters 'Width', 'Height', 'PayloadSize', 'AcquisitionMode' to enable automatic adaption when these values are invalidated by changes to other parameters. It includes several bug fixes and improvements, in particular in the underlying GigE Vision transport layer and regarding the handling of devices that are no more reachable ("lost devices"). The new interface revision allows to receive only the newest images without the need to explicitly flush buffers and it now supports also the callback types 'transfer_end' and 'device_lost'. The internal callback handling has been improved and can be controlled via three new parameters and an additional callback type. Furthermore, the new interface revision provides a more detailed documentation of the ForceIP and 'clear_buffer' parameters.
- The new revision of the LinX interface fixes a bug in the operator grab_image_start that could lead to a deadlock situation in combination with succeeding asynchronous image acquisition operators.
- The new revision of the LPS36 interface fixes a bug regarding the 'generic' parameter values.
- The new revision of the MILLite interface improves the error handling in the operator open_framegrabber when trying to open an already used digitizer a second time.
- The new revision of the MultiCam interface includes bug fixes in determining the used image size in case of an bit-depth greater than 8 and regarding aborting a pending grab via the operators grab_image_start and grab_image, using the MONO_DECA board topology for GRABLINK Full boards, and to allow to use an image height or image width smaller than 64.
- The new revision of the OpenNI interface now also supports the new Microsoft Kinect for Windows.
- The new revision of the pylon interface has been adapted to support also the new Basler pylon SDK version 3.2. It includes bug fixes regarding correct recovering from timeouts during asynchronous image acquisition, aborting a pending grab via calling the operator grab_image_start, setting unsupported parameters to IEEE 1394 cameras, and in setting the 'grab_timeout' parameter to -1. It fixes a bug in the operator grab_image in continuous acquisition mode, in the operator info_framegrabber when querying the actually available read-only parameters, and in the operator open_framegrabber in case of Camera Link devices. Furthermore, small memory leaks during initialization and closing were fixed and the default settings during initialization were changed in order to use the camera default settings.
- The new revision of the SaperaLT interface provides improvements regarding the buffer allocation in case of very large images and fixes two problems with setting specific parameter values, a problem in the operator open_framegrabber when opening a camera with an image height or image width smaller than 8, a problem in the operator set_framegrabber_param regarding the value range check, in particular in combination with Xcelera boards, and a bug regarding floating point parameter values.
- The new revision of the Sentech interface now also supports the new USB 3.0 camera models, enables to use the 'color_reduction' interpolation mode and provides an improved error handling if external triggering is not supported by the camera. Furthermore, the new interface revision fixes a bug in combination with software trigger mode.
- The new revision of the SICK-3DCamera interface fixes two problems in the measurement configuration, and bugs in case of an image acquisition timeout, regarding the use of mark data and of the initialization of the calibration filter, regarding the range images in case that the rectification filter is disabled, and regarding the use of only one component with a 16 bit representation. It includes improvements and bug fixes regarding the continuous grabbing mode and various extensions and improvements such as an adapted grab engine to allow the use of the framegrabber's internal queue of buffers, a new method to access all generic parameters, the possibility to specify an user-specific callback to indicate the end of the actual image transfer and a new parameter and a new HDevelop example program to show how to use the internal queue of buffers. Furthermore, the new revision includes now new and updated HDevelop example programs, in particular to show the usage of the different grabbing modes. The interface documentation has been generally reviewed and adapted.
- The new revision of the SiliconSoftware interface is now based on the new Silicon Software SDK 5.2.1 and supports the Multiple ROI functionality of VisualApplets modules. Besides several smaller bug fixes, it fixes a bug in the parameter 'available_param_names', bugs regarding the continuous grabbing mode, and a bug in the operator close_framegrabber. It provides a new parameter to specify the timeout value for the device detection of all connected GigE Vision cameras. Furthermore, it provides new and updated HDevelop example programs. In particular, a new HDevelop example program shows how to create a HALCON 3D object model in combination with the 3D Triangulation SmartApplets from Silicon Software.
- The new revision of the uEye interface fixes a bug in the operator open_framegrabber in case of using CameraType='default' and a camera parameter set containing an AOI.
- 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.3:
Manuals
-
HALCON Operator Reference Manual:
- The reference manual entry of clip_region_rel was unclear. This was particularly relevant for the definition of the rectangle to which the input region is clipped. Now, the description is more precise.
- The reference manual entry of concat_obj incorrectly mentioned the restriction that object tuples of mixed type must not be created in HDevelop. This restriction was already eliminated with the release of HALCON 8.0. Also, the remark that the operator is designed especially for HALCON/C and is not needed in other language interfaces was obsolete. The reference manual entry has been adapted accordingly.
- The reference manual entry of convol_image incorrectly stated that convol_image performs a convolution of an image with a given filter mask. convol_image calculates the correlation between the image and the filter mask. The reference manual entry of convol_image has been corrected.
- The example code (C syntax) in the reference manual entry of fft_generic was erroneous. This problem has been fixed.
-
The reference manual entries of the operators
- find_component_model,
- find_ncc_model,
- find_planar_uncalib_deformable_model,
- find_planar_calib_deformable_model,
- find_local_deformable_model,
- find_shape_model,
- find_scaled_shape_model,
- find_aniso_shape_model,
- find_shape_models,
- find_scaled_shape_models,
- find_aniso_shape_models, and
- find_surface_model
- The reference manual entries of find_shape_model, find_scaled_shape_model, find_aniso_shape_model, find_shape_models, find_scaled_shape_models, and find_aniso_shape_models now describe the syntax of the parameter SubPixel more precisely for the case that 'max_deformation' is used.
- The German reference manual entry of find_text did not mention that a text line consists of at least three characters. This problem has been fixed.
- The PDF reference manual entry of fuzzy_perimeter contained an incorrect formula. This problem has been fixed. Now, in Zadeh's Standard-S function, the whole expression in brackets is squared.
- The PDF version and the HTML version of the reference manual entry of gen_image_const were not consistent. Furthermore, the value ranges of some image types were incorrect. This problem has been fixed.
- The reference manual of get_data_code_2d_results contained an error in the description of the parameter 'quality_isoiec15415_values'. For the 2D stacked code PDF417, it erroneously stated that the grades are 'codeword', 'yield', 'unused', and 'error correction'. This problem has been fixed. Now, the correct grades 'codeword yield' and 'unused error correction' are mentioned.
- In the value list of the parameter GenParamNames of get_deformable_model_params the value 'created_from_xld' was missing. This problem has been fixed.
- In the HTML version of the reference manual entry of hand_eye_calibration, the notation of homogeneous transformation matrices was not consistent with the respective notation in the PDF version. This problem has been fixed.
- The reference manual entry of set_data_code_2d_param describes the possible side effects of the parameters 'symbol_rows', 'symbol_cols', 'symbol_rows_min', 'symbol_rows_max', 'symbol_cols_min', 'symbol_cols_max', 'symbol_size_min', 'symbol_size_max', and 'symbol_shape' for Data Matrix ECC200 codes more specifically.
- The reference manual entries of various operators mentioned the following operator call: set_system('store_empty_region',<true/false>). To avoid misunderstandings, this call has been corrected into the following form: set_system('store_empty_region',<'true'/'false'>), because 'true' and 'false', respectively, have to be given as strings.
- The HDevelop example code in the reference manual entry of slide_image was erroneous. This problem has been fixed.
- The reference manual entry of var_threshold contained an incorrect formula for the case that LightDark was set to 'not_equal'. This problem has been fixed.
Miscellaneous
-
Installation:
- Erroneously, the HALCON 10.0.3 installer packages provided the wrong version 10.8 of the included FLEXlm binaries. Since HALCON 10.0.3 is using FLEXlm 11.10.1, the installed FLEXlm binaries in %HALCONROOT%/FLEXlm were too old. In particular, when installing the floating license server from the HALCON 10.0.3 installer, the launch of HALCON 10.0.3 led to the error message "#2319: Bad message command". This problem has been fixed.
- No desktop shortcuts for HDevelop were created if the system was rebooted at the end of the installation (a reboot is suggested by the installer after installing the GigEVision filter driver). This problem has been fixed.
-
Licensing:
- Under Windows, the new USB dongle driver version Sentinel HASP 6.56 is included.
- Under Linux 32 bit, the new USB dongle driver version Sentinel HASP 2.1.1 is included.
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 HALCON 11. Then, for these languages only the export that is based on the HALCON/.NET interface will be provided.