| |
This document provides the release notes for MVTec HALCON 8.0.4, as released in
February 2010. HALCON 8.0.4 is primarily a maintenance release that fixes
all known bugs in HALCON 8.0.3;
besides, it provides added functionality.
Overview
This document contains the following information:
-
Compatibility
-
Detailed Description of Changes in HALCON
8.0.4
-
Detailed Description
of Changes in HALCON 8.0.3
-
Major New Features of
HALCON 8.0.2
-
Detailed Description
of Changes in HALCON 8.0.2
-
Major New Features of
HALCON 8.0.1
-
Detailed Description
of Changes in HALCON 8.0.1
-
Major New Features of HALCON 8.0
-
Detailed Description of
Changes in HALCON 8.0 (relative to HALCON 7.1.2)
-
Licenses
HALCON 8.0 licenses are also valid for HALCON 8.0.4. In contrast, all
HALCON 7.1 licenses must be replaced or upgraded. Please contact your
local distributor.
-
HALCON Library
HALCON 8.0.4 is fully compatible with HALCON 8.0. Compared to HALCON
7.1, many extensions have been introduced. Thus, the HALCON 8.0.4
libraries are not compatible with HALCON 7.1 or earlier versions.
-
HALCON Applications
Applications (i.e., executables) developed with HALCON 8.0, HALCON
8.0.1, HALCON 8.0.2, or HALCON 8.0.3 can be used with HALCON 8.0.4,
i.e., HALCON 8.0.4 is binary compatible with HALCON 8.0, HALCON
8.0.1, HALCON 8.0.2, and HALCON 8.0.3.
The incompatibility with HALCON 7.1
or earlier versions mainly concerns the binaries, with only
few changes in the language interfaces. If you
encounter problems during recompiling your programs, please check the
detailed description of changes below and for HALCON 8.0, HALCON 8.0.1, HALCON 8.0.2, and HALCON 8.0.3, respectively.
Please note the following source-code incompatibilities with respect
to previous HALCON 8.0.x releases:
-
Programs that evaluate the error message 8510 ("Number of shape
model points too small") with respect to create_ncc_model must be adapted because the error message has been changed.
-
Programs that evaluate the error message 8406 ("Error in projection:
s_x = 0 or s_y = 0 or z = 0") with respect to create_shape_model_3d must be adapted
because the error message has been
changed.
-
Newly created shape models might
differ in comparison to shape models that were created with
earlier HALCON revisions. Therefore, also the matching results might
change if a model is recreated.
-
Newly created 3D shape models might
differ in comparison to 3D shape models that were created with
earlier HALCON revisions. Therefore, also the matching results might
change if the model is recreated.
-
All OCR classifiers (box, MLP, and SVM) that use the feature
'gradient_8dir' in combination with at least one of the features
- 'chord_histo',
- 'pixel',
- 'pixel_binary',
- 'pixel_invar',
- 'projection_horizontal',
- 'projection_horizontal_invar',
- 'projection_vertical', or
- 'projection_vertical_invar'
must be re-trained because of an error in
the calculation of features from images in the operators
- traind_ocr_class_box,
- trainf_ocr_class_box,
- trainf_ocr_class_mlp,
- trainf_ocr_class_svm,
- do_ocr_multi,
- do_ocr_multi_class_mlp,
- do_ocr_multi_class_svm,
- do_ocr_single,
- do_ocr_single_class_mlp,
- do_ocr_single_class_svm,
- do_ocr_word_mlp,
- do_ocr_word_svm,
- get_features_ocr_class_mlp,
- get_features_ocr_class_svm,
- get_prep_info_ocr_class_mlp,
- get_prep_info_ocr_class_svm,
- ocr_get_features, and
- testd_ocr_class_box.
-
fit_ellipse_contour_xld does not allow
the fitting of ellipses to contours with
fewer than five points anymore. Although this was already the
case for the algorithms 'fitzgibbon' and 'geometric' and all their
derivatives, it is now also true for the algorithms 'voss',
'focpoint', 'fphuber', and 'fptukey'. If your program relies on the
behavior that fit_ellipse_contour_xld returns ellipse
parameters that represent a straight line when one of the latter
algorithms was selected and when the contour has two to four points,
you must determine the number of contour points with the operator
contour_point_num_xld and call the
operator fit_line_contour_xld if
the contour has two to four points.
-
For StartPhi=EndPhi and PointOrder='positive', gen_ellipse_contour_xld no longer
returns a full ellipse but only one point.
-
Programs that use illuminate with
different values for MaskWidth and MaskHeight should be adapted
because the sequence of parameters has
been corrected.
Please note that applications using HALCON/.NET (and HDevEngine/.NET)
have local copies of the corresponding assemblies
(halcondotnet.dll etc.). After installing HALCON 8.0.4, these
applications would therefore still use the old HALCON versions. You
must either replace the assemblies manually or re-compile the projects.
-
Image Acquisition Interfaces
The system requirements of the following image acquisition interfaces
have been changed since HALCON 8.0.3:
-
For using the updated mEnableVisualApplets
interface you must install the driver version 4.2.25 from
Silicon Software to support the new microEnable IV FULL x4 boards.
-
For using the updated pylon interface you
must install the new version 2.1 of the underlying pylon SDK
from Basler.
-
For using the updated RangerC and the RangerE
interfaces you must install the new version 4.0 of the
underlying Icon SDK from SICK.
-
For using the updated uEye interface under
Windows you must install the new driver version 3.40 (or 3.50
for Windows x64).
If you have developed your own acquisition interfaces with HALCON 8.0,
HALCON 8.0.1, HALCON 8.0.2, or HALCON 8.0.3, you can use them with
HALCON 8.0.4 without further action. Because of the new version of the
HALCON Acquisition Integration Interface in HALCON 8.0,
acquisition interfaces developed with HALCON 7.1.x or lower are not
binary compatible, but mostly source-code compatible with 8.0.
-
Extension Packages
Extension packages developed with HALCON 8.0,
HALCON 8.0.1, HALCON 8.0.2, or HALCON 8.0.3 can be
used with HALCON 8.0.4 without further action. Extension packages
developed with HALCON 7.1.x must be re-generated.
-
ActivVisionTools
Only ActivVisionTools 3.2 can be used directly with HALCON 8.0.4
because it is based on HALCON 8.0.2. All older ActivVisionTools
versions are based on HALCON 7.1.1 or earlier versions; by
installing HALCON 8.0.4, you would thus disable such an
ActivVisionTools installation. Therefore, the setup program of
HALCON 8.0.4 checks whether there is an ActivVisionTools
installation on your computer.
-
If it detects ActivVisionTools 3.2, no further action is
required, because this version is compatible to HALCON 8.0.4.
-
If it detects ActivVisionTools 3.1 or
ActivVisionTools 3.1.1, please contact your distributor
for further information on how to run this version together
with HALCON 8.0.4.
-
In contrast, ActivVisionTools 1.0 to 3.0 cannot be
used with HALCON 8.0.4. If the setup program detects such an
ActivVisionTools version, it warns you that by continuing to
install HALCON 8.0.4 you will disable your ActivVisionTools
installation.
If you still want to use your ActivVisionTools installation
you must also keep your old HALCON installation and switch
back to it as described in the "Installation Guide".
Detailed release notes can be obtained for the following topics:
-
HDevelop
-
HALCON Library
-
HALCON/C
-
HALCON/C++
-
HALCON/.NET
-
HDevEngine
-
Image Acquisition Interfaces
-
Miscellaneous
-
Functionality:
-
The Properties dialog that can be
opened via the File menu displays some information about the
current program file, amongst others, the creation and last
modification time of the program file. However, the format of
the date/time string did neither comply with the standard time
format of the language chosen in HDevelop nor with the current
locale settings of the operating system. This has been changed.
Now, the time strings are displayed in the standard date/time
format according to the current locale settings of the operating
system.
-
When the mouse cursor is moved over the Graphics window, pressing the Ctrl key
opens a tool tip that displays the current mouse position and
the gray values of the image at this position. However, no tool
tip was shown as long as no image was displayed before in the
Graphics window. This has been changed. When the mouse cursor
is over a Graphics window that contains no image, from now on,
pressing the control key opens a tool tip that displays the
mouse position.
-
Bug Fixes:
-
HDevelop failed to set the current working
directory correctly to the program path if the path
contained non-ASCII characters. As one consequence image
files that are addressed in the program relatively to the program
could not be opened. The problem did not occur if HDevelop was
started in the appropriate directory, e.g., by double clicking on
the program file in the Windows explorer. This problem has been
fixed.
-
HDevelop crashed if some of the HALCON help
files that are installed under %HALCONROOT%\help were
missing. This problem has been fixed. Now, if a help file is
missing, an error message is displayed and HDevelop is closed.
-
If the system option 'no_object_result' was set to 'false' in
HDevelop the operator gen_empty_obj
returned 3 (H_MSG_FALSE) instead of 2 (H_MSG_TRUE).
Additionally, an error message box was opened even if
dev_set_check('~give_error') was set. The error occurred only if
the operator gen_empty_obj was called within HDevelop
but not if it was called via HDevEngine or a language interface.
This problem has been fixed.
-
Although all parameters of the operator for accept real numbers, the semantic
type of these parameters was set to 'integer'. This problem has
been fixed. Now, the type is set to 'number'.
-
The parameter suggestions in
HDevelop have been improved. In some cases, row and column
variables were interchanged or suitable variables were not
suggested. These problems have been fixed.
-
The suggested default value for the
ErrorVar parameter of the operator dev_error_var was wrong. Instead of a
valid variable name the number 0 was suggested. This problem has
been fixed.
-
If within an expression a number
starts with 0, it is interpreted as an octal number. If such a
number contained digits that are not defined in the octal
numerical system (8 and 9), it was simply ignored without any
notification. This could have lead to surprising results. For
example, after executing a := 018, the variable a was set to
1. This behavior has been changed. Now, an assignment with an
invalid octal number is not possible anymore. When loading an
already existing program that contains such an invalid
expression, which can be the case for programs that are created
with HALCON 9.0 or higher, the whole expression is
transformed into a string.
-
Opening the context menu of the Program
Window via the context menu key did not work correctly: If
the mouse cursor was not over the selected text, the selection
changed from the previously selected program lines to the line
under the current mouse position. In addition, the insert cursor
was moved to that line. Hence, the required action was not
performed on the program line or text that was selected or had
the text insert cursor before pressing the context menu key but
on the program line under the mouse cursor. This problem has
been fixed.
-
HDevelop's Find/Replace dialog was
unable to work correctly with the backslash character "\".
Additionally, if it was used in the operator replacement mode and
the name of an external procedure that was corrupt and could
therefore not be loaded was used as the search or the replace
operator name, HDevelop sometimes crashed. These problems have
been fixed.
-
If a multi-channel image or an object tuple was inspected via the
Display Channel or Display Content
dialog, which are available via the image icon in the
Variable Window, a previously selected window part was ignored
and the image was always displayed in full size. This problem has
been fixed. Now, if the selected channel or image object has the
same size as the image that is currently displayed in the
Graphics Window, the same part is used for displaying the
selected image. Otherwise the image is displayed in full size.
-
In SDI mode, it was not possible to open a Graphics Window with dev_open_window or via the Visualization
menu with a width wider than 2/3 of the screen. Furthermore,
when setting the window size with dev_set_window_extents or via the Window
Size menu to a large width, the window size was also clipped to
2/3 of the width of the screen. This problem has been fixed.
-
HDevelop crashed if several images were dragged over the Graphics Window at once. This problem has
been fixed.
-
After maximizing HDevelop's Main
Window, it was still possible to resize this window via
the size grip in the bottom right corner of the status
bar. Resizing a maximized window is not usual and did confuse the
title bar. In particular, after resizing the maximized window,
the title bar continued to show the button for changing the
window to normal size. Even continuously pressing the button had
no effect. This problem has been fixed.
-
The variable inspection window for image
acquisition handles had no values under Linux 32 bit
Systems. This problem has been fixed. Now, it has the correct
values.
-
Within the Image Acquisition
Assistant, the default values for the resolution
properties on the 'Connection' tab were always set to "Full",
even if the acquisition interface specified a different value
such as "Default". This problem has been fixed.
-
After running HDevelop and opening modal dialogs or the Help
Window on a second monitor that was
connected to the computer system, the following problems occurred
if the second monitor was removed from the system after finishing
HDevelop: While the Main Window of the restarted HDevelop was
opened correctly on the visible part of the desktop, the Help
Window as well as some modal dialogs like the Print dialog, the
Property dialog, or the Export dialog were opened at their old
position that was now outside the desktop and therefore not
visible. After opening such a modal dialog HDevelop seemed to be
frozen. This problem has been fixed. Now, all dialogs are opened
in the visible part of the desktop.
-
HDevelop sometimes crashed if in the 'External Procedures' table in the
Preferences dialog a corrupt and therefore unloadable procedure
was double clicked. This table lists all external procedures
that are referred via the external procedure paths, including
invalid and unreachable procedures. Normally, by double clicking
on a procedure row in that table the appropriate procedure is
displayed in the Program Window. This problem has been fixed.
-
HDevelop crashed if an external
procedure was saved via the menu 'File -> Save Procedure
As...' to the same file it was loaded from. This problem has been
fixed.
-
HDevelop sometimes crashed when trying to export an invalid program line to C. This
happened if the invalid program line was activated and situated
within a procedure that contained at least one output control
parameter. This problem has been fixed.
-
HDevelop exported calls to dev_clear_obj incorrectly to C, C#
- HALCON/.NET, Visual Basic .NET - HALCON/.NET, C# - HALCON/COM,
and Visual Basic .NET - HALCON/COM. In C, dev_clear_obj
was exported as a comment. In C# (COM and .NET), the exported
code contained the wrong variable name, and in Visual Basic .NET
- HALCON/COM and HALCON/.NET, the variable was set to
Nothing. These problems have been fixed. Now, in C,
dev_clear_obj is exported as clear_obj followed by gen_empty_obj and in Visual Basic .NET -
HALCON/COM and HALCON/.NET, it is exported as a call to
ReleaseComObject and Dispose, respectively.
-
Examples:
-
The new HDevelop example programs crevis.dev, crevis_binning.dev,
crevis_parameters.dev, crevis_simple.dev, and crevis_trigger.dev in the
directory examples/hdevelop/Image/Acquisition show how to use the new Crevis interface.
-
The new HDevelop example programs
sentech.dev, sentech_parameters.dev, sentech_simple.dev, and
sentech_trigger.dev in the directory examples/hdevelop/Image/Acquisition
show how to use the new Sentech interface.
-
The new HDevelop example programs svcam-gige.dev, svcam-gige_crop.dev,
svcam-gige_parameters.dev, svcam-gige_simple.dev, and
svcam-gige_trigger.dev in the directory
examples/hdevelop/Image/Acquisition show how to use the new SVCam-GigE interface.
-
The new HDevelop example programs rangerc.dev and rangere.dev in the directory
examples/hdevelop/Image/Acquisition show how to use the RangerC and RangerE interfaces.
-
The new HDevelop example program gigevision_forceip.dev in the directory
examples/hdevelop/Image/Acquisition shows how to use ForceIP to correctly
configure a misconfigured GigEVision device with the GigEVision interface.
-
Modified Operators:
-
Until now, the parent window of a HALCON window was informed
about events from the left and right mouse button under Windows.
Now, a HALCON window posts also the following messages concerning
the middle mouse button and the mouse wheel to its parent window
(if it exists):
-
set_window_extents now handles
negative values for Width and/or Height in a manner compatible
with dev_set_window_extents in
HDevelop, i.e., by leaving the corresponding window dimension
unchanged.
-
gen_region_hline now renders the
Hesse line regions more accurately. Additionally, the border
treatment has been improved.
-
Bug Fixes:
-
HALCON did not work under Windows systems if the path in the
environment variable HALCONROOT or
HALCONIMAGES was surrounded by quotation marks. This
problem has been fixed.
-
The two calibration plate description
files calib/caltab_100mm_old.descr and
calib/caltab_650um_old.descr were incorrect. This problem
has been fixed.
-
When assessing the print quality of 2D data
codes of type 'Truncated PDF417' the returned 'Start/Stop
Pattern' grade sometimes was 0 although the symbol had a good
quality. This problem has been fixed.
-
The operators
- abs_invar_fourier_coeff,
- invar_fourier_coeff,
- match_fourier_coeff, and
- fourier_1dim_inv
returned no error message for a wrong number of input control
parameters. This problem has been fixed.
-
The operators
- add_noise_distribution,
- add_noise_white,
- add_noise_white_contour_xld,
and
- gen_random_region
sometimes did not generate random iconic objects that were
different from the previously generated ones. This happened if the
operators were called too fast in succession. This also implies
single operator calls with iconic object tuples or multi-channel
images as input parameters. In addition, the operators
add_noise_distribution and add_noise_white
generated the same output images if called with the same input
image objects. These problems have been fixed.
-
adjust_mosaic_images might have
crashed if the input image tuple contained images of different
size. This problem has been fixed. Now, the error 3117 ("Images
with different size") is returned.
-
affine_trans_image and affine_trans_image_size in rare cases did
not transform the first pixel of a column. This problem has been
fixed.
-
binocular_disparity and binocular_distance returned wrong results
on the last run of the domain for certain input image domains.
This problem has been fixed.
-
clear_rectangle, move_rectangle, and set_window_param (with Param=
'background_color' or Param='window_title') did not work with
buffer windows on Linux/UNIX systems and raised a BadMatch error.
This problem has been fixed.
-
The operators
- clear_shape_model,
- clear_shape_model_3d,
- clear_data_code_2d_model,
and its derivatives
- clear_scaled_shape_model and
- clear_aniso_shape_model
had a memory leak of 24/36 bytes per call on a 32/64 bit Windows
operating system. This problem has been fixed.
-
coherence_enhancing_diff sometimes
returned wrong values in the upper right and/or lower right corner
of non-square images. This problem has been fixed.
-
convol_image sometimes caused
unexpected memory overwriting during the border treatment. This
problem has been fixed.
-
create_funct_1d_pairs did not check
whether the input tuple for the parameter XValues contained
multiple identical values. This problem has been fixed.
-
create_ncc_model sometimes crashed
if an image with extremely different width and height was used as
template image and the image domain touched the image
borders. This problem has been fixed.
Additionally, create_ncc_model returned the error 8510
("Number of shape model points too small"). This problem has been
fixed, too. Now, the error 8506 ("Number of template points too
small") is returned. Programs that evaluate the returned error
messages must be adapted accordingly.
-
The shape models that were created with
- create_shape_model,
- create_scaled_shape_model,
- create_aniso_shape_model,
- create_component_model, or
- create_trained_component_model
sometimes contained incorrect contours at the border of the model
region. This could have happened if the model image contained
contours within the model region that continue outside the model
region. inspect_shape_model showed
the same behavior. These problems have been fixed. Note that the
created shape models might differ in comparison to shape models
that were created with earlier HALCON revisions. Therefore, also
the matching results might change if the model is recreated.
-
The automatic contrast estimation in create_shape_model, all its derivatives,
and determine_shape_model_params in
rare cases returned slightly different values on different
architectures for the contrast value or the hysteresis contrast
values.
Additionally, create_*shape_model and
determine_shape_model_params
hung in very rare cases.
Furthermore,
create_*shape_model* and create_*component_model crashed in rare
cases when all pixels within the domain of the model image had the
same gray value and automatic contrast estimation was switched on.
These problems have been fixed.
-
create_shape_model_3d sometimes did
not create views that are close to the poles of the spherical
pose range. In particular, this happened if the longitude was
restricted to a small range. As a consequence, objects that are
imaged from either of the two pole regions could not be found
when using find_shape_model_3d. This problem has
been fixed. Note that the created 3D shape
models might differ in comparison to 3D shape models that were
created with earlier HALCON revisions. Therefore, also the
matching results might change if the model is recreated.
Additionally,
create_shape_model_3d returned a
wrong error message when passing a 3D object model in
ObjectModel3DID that did not contain any faces. In this case the
error message 8406 ("Error in projection: s_x = 0 or s_y = 0 or z
= 0") was returned. This problem has been fixed as well. Now, the more
appropriate new error message 8944 ("3D object model does not
contain any faces") is returned. Note that programs that evaluate
the returned error message 8406 must be adapted
accordingly.
-
difference_closed_contours_xld
crashed in very rare cases. The crash occured if at least two
segments of the two contours were nearly identical. Additionally,
if at least two segments of the two contours were nearly
identical, the classification into boundaries that enclose
regions and boundaries that enclose holes might have been
wrong. These problems have been fixed.
-
dilation_rectangle1 accessed
unallocated memory in very rare cases. This resulted in crashes
or an undefined behavior of subsequent operators. This problem
has been fixed.
-
disp_arrow ignored the current line
width for drawing that is set with the operators dev_set_line_width or set_line_width.
Additionally, disp_arrow
sometimes returned with an internal error if the arrowhead size
was smaller than 1. These problems have been fixed.
-
disp_caltab did not display
calibration plates completely for telecentric cameras if the z
value of the pose was small. This problem has been fixed.
-
disp_obj and disp_region with the visualization
parameters draw = 'margin' and line_style > 0 displayed regions
incorrectly. The right and bottom parts of the contour were
shifted one pixel to the right and to the bottom.
Additionally, disp_region and dev_display did not display holes of
regions if the region fill mode (dev_set_draw) was set to 'margin' and if
the output pattern for region contours (set_line_style) was not set to a solid
line. These problems have been fixed.
-
distance_lr returned wrong results
for a region consisting of one pixel. Additionally, an empty
input region returned no error message. These problems have
been fixed.
-
distance_transform in some cases
did not work correctly if Metric was set to 'euclidean'. The
resulting transformation in some cases was erroneous if
Foreground was set to 'true' and the input region touched the
border of the resulting image, or if Foreground was set to
'false'. This problem has been fixed.
-
div_image returned wrong results
for complex images. This problem has been fixed.
-
The operators
- do_ocr_multi,
- do_ocr_multi_class_mlp,
- do_ocr_multi_class_svm,
- do_ocr_single,
- do_ocr_single_class_mlp,
- do_ocr_single_class_svm,
- do_ocr_word_mlp,
- do_ocr_word_svm,
- get_features_ocr_class_mlp,
- get_features_ocr_class_svm,
- get_prep_info_ocr_class_mlp,
- get_prep_info_ocr_class_svm,
- ocr_get_features, and
- testd_ocr_class_box
returned different results if called multiple times and if the
feature 'gradient_8dir' was used in combination with at least
one of the following features:
- 'chord_histo',
- 'pixel',
- 'pixel_binary',
- 'pixel_invar',
- 'projection_horizontal',
- 'projection_horizontal_invar',
- 'projection_vertical', or
- 'projection_vertical_invar'.
The variation of the results affected mostly the value of the
parameter Confidence, but in rare cases it might also have
affected the value of the parameter Class. The operators
- traind_ocr_class_box,
- trainf_ocr_class_box,
- trainf_ocr_class_mlp, and
- trainf_ocr_class_svm
were also affected. They produced erroneous OCR classifiers if
one of the above mentioned combinations of features was
used. These problems have been fixed. Note that all OCR
classifiers (box, MLP, and SVM) that use the feature
'gradient_8dir' in combination with one of the above mentioned
features must be re-trained.
Additionally, the operators
- do_ocr_multi_class_mlp,
- do_ocr_multi_class_svm,
- do_ocr_single_class_mlp,
- do_ocr_single_class_svm,
- do_ocr_word_mlp, and
- do_ocr_word_svm
sometimes crashed if the entire character region lay outside
the image domain.
Furthermore,
do_ocr_word_mlp and do_ocr_word_svm had a small memory leak
if the parameter Expression was a regular expression. These
problems have been fixed as well.
-
dots_image computed the first
channel only when passing multi-channel images. This problem
also led to different results when parallelizing on channel
level. This problem has been fixed. Now, all channels are
computed.
-
There was a memory leak when cancelling draw_* operators before actually
drawing anything. This problem has been fixed.
-
The operators
- edges_image,
- edges_color,
- edges_sub_pix, and
- edges_color_sub_pix
sometimes returned additional incorrect edges at the border of
the image domain if Filter was set to 'sobel_fast'.
Additionally, edges_image accepted
multi-channel images although it could not operate on multiple
channels. This behavior led to different results when
parallelizing on channel level. These problems have been fixed.
-
fill_up_shape disregarded all
shape features but 'area'. This problem has been fixed.
-
find_bar_code had the following
problems:
- It hung in very rare cases.
- The check character test of Codabar bar codes failed
for the check character '0'.
- It sometimes could not decode Codabar barcodes
although valid scanlines were found. This happened if
scanlines near the center could be decoded that did not
intersect with the candidate region.
- It did not decode Composite codes correctly that
encode GS1 data starting with '(17)xxxxxx(xx..' or
'(11)xxxxxx(xx..'.
- It sometimes interpreted alpha-numerical data in RSS
Expanded or Composite codes incorrectly, e.g., encoded
data (17)130900(10)Y123W45 was read like
(17)130900(10)0/79D7F3B23. This problem did not appear
if the data was only numerical, like
(17)130900(10)12345.
These problems have been fixed.
- find_data_code_2d had the
following problems:
- It crashed in rare cases;
amongst others, it sometimes
crashed if a PDF417 symbol encoded data in the Numeric
Compaction mode and if any of the codewords was the 0
codeword.
-
It caused a
memory leak if not enough memory was available.
- Using the QR data code reader and the gray-value-based
matching together in the same application could have caused
problems. In particular, calling the operator
find_data_code_2d or clear_data_code_2d_model could have
caused the deletion of a previously created gray-value-based
matching model.
These problems have been fixed.
-
find_marks_and_pose allowed to
set the parameters StartThresh, DeltaThresh, MinThresh, and
Alpha to zero although these values should not be used.
Especially, if DeltaThresh was set to zero,
find_marks_and_pose might have hung.
Additionally,
find_marks_and_pose had a memory
leak if the orientation of the calibration plate could not be
determined (error 8431: "Orientation of calibration plate
could not be determined"). These problems have been fixed.
-
find_ncc_model sometimes crashed
if the parameter Image contained an image with a height of 1
pixel. This problem has been fixed.
-
The least squares refinement in find_*shape_model(s) in very rare
cases did not work correctly. This especially happened if the
model was searched in artificially created images. This
problem has been fixed.
-
find_shape_model_3d sometimes
could not find objects that correspond to views that are close
to the poles of the spherical pole range that was passed in
create_shape_model_3d. This
might have even happened if the corresponding views were
contained in the 3D shape model. This problem has been fixed.
-
fit_ellipse_contour_xld allowed
the fitting of ellipses into contours with fewer than five
points for the algorithms 'voss', 'focpoint', 'fphuber', and
'fptukey'. This may have lead to unspecific error
messages. Especially, when the number of contour points minus
twice the number of clip points was less than zero,
fit_ellipse_contour_xld may have crashed. This
problem has been fixed.
Now, fit_ellipse_contour_xld does not allow the
fitting of ellipses into contours with less than five
points anymore. Although this was already the case for the
algorithms 'fitzgibbon' and 'geometric' and all their
derivatives, it is now also true for the algorithms 'voss',
'focpoint', 'fphuber', and 'fptukey'. If your program relies
on the behavior that fit_ellipse_contour_xld returns
ellipse parameters that represent a straight line when one of
the latter algorithms was selected and when the contour has
two to four points, you must determine the number of
contour points with the operator contour_point_num_xld and call the
operator fit_line_contour_xld if
the contour has two to four points.
-
The operators
- frei_dir,
- kirsch_dir,
- prewitt_dir, and
- robinson_dir
determined the edge direction of horizontal edges with an
intensity increase from top to bottom incorrectly.
Instead of 90 (180) degrees the value 0 (0) degrees was
returned for these edges. This problem has been fixed.
-
fwrite_string crashed if the
parameter String contained strings that were longer than the
number of maximum allowed characters (1024). This problem has
been fixed. Now, the error code 9006 ("String is too long
(max. 1024 characters)") is returned.
-
gauss_distribution did not work
for Sigma values smaller than 0.01 even though the
documentation stated that Sigma values equal or greater than 0
were allowed. For Sigma values smaller than 0.01 the error
1301 ("Wrong value of control parameter: 1") was returned.
This problem has been fixed.
-
gen_ellipse_contour_xld
sometimes created wrong results with an angle extent of 360
degrees. Instead of the full ellipse, a contour with three
identical points was returned. Additionally, for
StartPhi=EndPhi and PointOrder='positive',
gen_ellipse_contour_xld returned a full ellipse
instead of one point. Furthermore, for ellipses with no angle
extent, gen_ellipse_contour_xld returned a contour
with three identical points. These problems have been fixed.
-
gen_cross_contour_xld crashed if
an empty tuple was passed in the parameter Angle. This
problem has been fixed.
-
gen_ellipse returned a wrong
region for special combinations of the parameters Radius1,
Radius2, and Phi. This problem has been fixed.
-
gen_grid_rectification_map
crashed in rare cases. This problem has been fixed.
-
get_data_code_2d_results
sometimes crashed when assessing the PDF417 print quality
(ResultNames = 'quality_isoiec15415'). This problem has been
fixed.
-
The operators
- gray_erosion_rect,
- gray_dilation_rect,
- gray_opening_rect,
- gray_closing_rect, and
- gray_range_rect
computed the first channel only when passing multi-channel
images. This problem also led to different results when
parallelizing on channel level. This problem has been
fixed. Now, all channels are computed.
-
The operators
- gray_erosion_shape,
- gray_dilation_shape,
- gray_opening_shape, and
- gray_closing_shape
had the following problems:
- They sometimes accepted different values for the parameters
MaskHeight and MaskWidth although the MaskShape was 'rhombus'
or 'octagon'.
- They accepted the dimensions if the values rounded up to
the next odd integer were equal.
- In rare cases they returned wrong results if parallelized
on domain level and on tuple/channel level
simultaneously. This was the case if parallelization was
switched on and the number of threads was bigger than the
number of channels or objects in the parameter
Image.
Additionally, gray_erosion_shape and
gray_dilation_shape consumed more memory than
required if masks with subpixel accuracy were used. These
problems have been fixed.
-
histo_2dim sometimes crashed if
'clip_region' was false and the region extended beyond the
image borders. This problem has been fixed.
-
histo_to_thresh sometimes
returned wrong results if the parameter Histogram was an
absolute histogram with large values and/or if the parameter
Sigma was very large. This problem has been fixed.
-
illuminate used the parameters
MaskWidth and MaskHeight interchanged. The parameter
MaskWidth was used as the mask height and MaskHeight was used
as the mask width. This problem has been fixed. Now, the
parameter MaskWidth is used as the mask width and MaskHeight
is used as the mask height. Note that programs that use
illuminate with different values for MaskWidth and
MaskHeight must be adapted accordingly.
-
intensity in rare cases returned
NaN as the Deviation for homogeneous image regions on Solaris.
This problem has been fixed.
-
intersection_closed_contours_xld
crashed in very rare cases. This problem has been fixed.
-
lines_gauss in very rare
circumstances (very closely spaced lines of small contrast)
used an edge of incorrect polarity to determine the line
width. This problem has been fixed.
-
mean_image returned wrong
results if the mask was in at least one dimension at least as
large as the image and if the respective image size was odd.
Furthermore, if a tuple of images with different image sizes
was used and if the operator parallelization was switched off
and if the mask size exceeded the image size of one of the
images in the tuple, the following images of the tuple were
smoothed with an incorrect mask size. This problem has been
fixed.
-
mean_n crashed when large arrays
(n>20) of single-channel images were passed. This problem has
been fixed.
-
The operators
- measure_pos,
- measure_pairs,
- fuzzy_measure_pos,
- fuzzy_measure_pairs, and
- fuzzy_measure_pairing
might have returned wrong edge values for very large sigmas
(sigma > profile_length/7). This problem has been fixed.
-
median_separate in rare cases
did not work for images of type byte and MaskWidth=1.
Additionally,
in rare cases it
did not work for MaskWidth=1 for all supported image types
except byte. These problems have been fixed.
-
open_serial could not open
serial ports larger than COM9 directly. This problem has been
fixed.
-
paint_xld did not fill some
pixels at the border of the contour in very rare cases. This
problem has been fixed.
-
project_object_model_3d did not
return the complete silhouette in some cases. Especially if
the parameter HiddenSurfaceRemoval was set to 'false', no
silhouette was returned at all. This problem has been fixed.
-
projective_trans_image_size
returned the error 3605 ("Projective transformation is
singular") when HomMat2D had a too small determinant. To
prevent an image transformation under a singular matrix, the
operator checked the determinant, although matrices with small
determinants can still be well defined (non-singular). This
problem has been fixed. The check is now based on the matrix
rank.
-
read_contour_xld_dxf and read_polygon_xld_dxf read some
elliptical arcs incorrectly such that they were rotated by 180
degrees. This problem has been fixed.
-
Using Parallel HALCON read_fft_optimization_data returned the
error 3653 ("Storing the optimization data failed") if it was
called before any other FFT-related operator (e.g., fft_image, optimize_fft_speed). This problem has
been fixed.
-
read_tuple crashed in rare cases
when reading a tuple that contained strings. This problem has
been fixed.
-
segment_characters returned an
empty tuple in UsedThreshold if the operator was called in
tuple mode and -1 if it was called in simple mode if no
characters were segmented. This problem has been fixed. Now,
if no characters can be segmented, the parameter UsedThreshold
returns -1 for both modes. Note that if you use Parallel
HALCON, a single value is returned in tuple mode and in simple
mode. If you use Standard HALCON, in tuple mode UsedThreshold
contains one entry for every input region. It is suggested to
call segment_characters in tuple mode if more than one
region is used.
-
select_characters did not work
correctly if the parameter Punctuation was set to 'true'. It
added a character more than once.
Additionally,
select_characters lost small
regions like dots if the parameter ConnectFragments was set to
'true'. These problems have been fixed.
-
The operators
- send_image,
- send_region,
- send_tuple, and
- send_xld
by default did not send data immediately, but waited up to 200ms
until full data packets were accumulated. This is the default
setting of most operating systems. As a result, receive_* operators seemed to take
200ms (or multiples) until returning. This problem has been
fixed. Now, the data is transmitted without delay.
-
set_serial_param did not support
the setting of multiple modes for the parameter 'FlowControl'
at the same time. This problem has been fixed. Now, it is
possible to set 'xon_xoff', 'cts_rts', and 'dtr_dsr' at the
same time by concatenating the single modes separated with a
space, e.g., 'cts_rts dtr_dsr'.
-
The results of the operators smallest_circle and smallest_circle_xld were slightly
inaccurate on SSE2 and 64 bit architectures with regions or
contours that were positioned far away from the origin. Thus,
sometimes the results of select_shape, select_shape_xld, and fill_up_shape, when setting Features to
'outer_radius', and the results of shape_trans and shape_trans_xld, when setting Type to
'outer_circle', could have been slightly inaccurate. The error
was correlated with the distance of the input contour from the
origin, i.e., the error increased with large row or column
coordinates. The inaccuracy did not concern Halcon XL. This
problem has been fixed.
-
smallest_rectangle2_xld hung if
the input contour was at least two points long and if all
contour points were identical. This problem has been fixed.
-
sobel_amp, sobel_dir, and laplace did not return an error with
images of too small dimensions. This problem has been fixed.
-
tile_images and tile_channels returned incorrect image
domains in certain cases. If TileOrder was set to 'vertical'
and NumColumns and the number of input images were chosen such
that at least one column of the output image was empty and the
last used column was completely filled with images, this last
column was missing in the output domain. This problem has been
fixed.
-
trainf_ocr_class_mlp and trainf_ocr_class_svm returned an
undefined error if the trainfile contained samples with
empty regions. This problem has been fixed.
-
trans_from_rgb and trans_to_rgb did not return the correct
output domain if the input images had different domains when
running automatic parallelization on domain level. This
problem has been fixed.
-
tuple_chrt could have caused
crashes if called with input tuples containing 0 (zero) as
first element or containing multiple 0 (zeroes) consecutively.
This problem has been fixed.
-
tuple_string crashed when called
with the parameter Format of type integer or real instead of
string. This problem has been fixed.
-
zoom_image_size and zoom_image_factor caused artifacts when
zooming an image from a small size to a significantly larger
size, e.g., from a width of 2 to a width of 30. affine_trans_image and affine_trans_image_size were affected
as well. This problem has been fixed.
-
Examples:
-
The C interface example example6.c now shows the usage of the
function T_call_halcon_by_id instead of the deprecated function
T_call_halcon.
-
Bug Fixes:
-
If an operator was called using a single API variant in HALCON/C,
an empty tuple returned by the operator for a single-value return
type caused a crash. This problem has been fixed.
-
Functionality:
-
The access to parameter values by their parameter name via the
class HOperator (with methods such as SetInputCtrl) is now
significantly more efficient.
-
Bug Fixes:
-
Operators of extension packages under HALCON/C++ might have crashed
or returned an HALCON error when called as first operator. This
problem has been fixed.
-
If an operator was called using a single API variant in HALCON/C++,
an empty tuple returned by the operator for a single-value return
type caused a crash. This problem has been fixed.
-
Bug Fixes:
-
It was possible for HWindowControl to raise an error when a window
was resized to a very small size (or anchored to a form that got
minimized). This problem has been fixed.
-
Operators of extension packages under HALCON/.NET might have
crashed or raised an exception when called as first operator. This
problem has been fixed.
-
For HALCON/.NET the class HVariationModel did not release
all allocated resources when disposed, causing a memory leak. This
problem has been fixed.
-
Bug Fixes:
-
To load and free programs and procedures in HDevEngine was not
thread-safe. If several programs or procedures were loaded and
freed in different threads in parallel, the HDevEngine application
could have crashed or could have gotten into an undefined
state. This problem has been fixed. The following methods were
concerned:
-
HDevProcedureCall::HDevProcedureCall(const char* file_name);
-
HDevProcedureCall::~HDevProcedureCall();
-
HDevEngine::LoadProgram(const char* file_name);
-
HDevEngine::SetProcedurePath(const char* path);
-
The latest information about new extensions and newly supported
image acquisition devices can be found on MVTec's web
server.
-
New Image Acquisition Interfaces:
-
HALCON now also includes the Crevis
interface to support the USB
2.0 cameras from Crevis Corporation.
The new example programs
crevis.dev, crevis_binning.dev, crevis_parameters.dev,
crevis_simple.dev, and crevis_trigger.dev in the directory
examples/hdevelop/Image/Acquisition show how to use this
interface.
-
HALCON now also includes the Sentech
interface to support the STC USB 2.0 cameras from
Sentech.
The new example programs sentech.dev,
sentech_parameters.dev, sentech_simple.dev, and
sentech_trigger.dev in the directory
examples/hdevelop/Image/Acquisition show how to use this
interface.
-
HALCON now also includes the SVCam-GigE
interface to support the Gigabit Ethernet cameras from
SVS-Vistek.
The new example programs svcam-gige.dev,
svcam-gige_crop.dev, svcam-gige_parameters.dev,
svcam-gige_simple.dev, and svcam-gige_trigger.dev in the
directory examples/hdevelop/Image/Acquisition show how to use
this interface.
-
Modified Image Acquisition Interfaces:
-
Reference Manual:
-
The reference manual contained some C++ examples
that contained a header part for which the line "using namespace Halcon;" was
missing. Because of that, they could not be compiled without errors. This
problem has been fixed.
-
The reference manual entries of append_ocr_trainf, write_ocr_trainf_image, and write_ocr_trainf referred only to the box
classifier. They have been extended to comprise also the MLP and the SVM
classifier.
-
The reference manual entries of edges_image,
sobel_dir, frei_dir, and prewitt_dir were incorrect. They showed wrong
directions for the gradients in the lists that explain the edge direction.
This problem has been fixed.
-
The reference manual entry of gen_image_surface_first_order was wrong. The
description refered to gen_image_surface_second_order instead of
gen_image_surface_first_order. This problem has been fixed.
Now, it correctly states
that a tilted gray surface is created instead of a curved gray surface.
-
The reference manual entries of gen_rectangle2
and gen_circle have been extended. They now
explain why a resulting region may contain additional pixels at the border
and some individual pixels at the border may be missing.
-
The documentation of median_image incorrectly
described the parameter MaskType as a region. This problem has been
fixed. Furthermore, the documentation now describes how a median filter works
and shows typical applications of the filter.
-
The reference manual entry of project_3d_point
contains an example in which the parameters of affine_trans_point_3d were in the wrong order. This
problem has been fixed.
-
The reference manual entry of set_spy now
contains a warning that the operator cannot be used to debug multithreaded
programs or programs using the automatic parallelization.
-
The reference manual entry of test_obj_def now
states that the operator is obsolete and must not be used.
-
Installation:
- Under Windows, the new version HASP 4.116 of the USB dongle
driver is included.
- Now, the official runtime version of GenICam v2.0.1 is
included. The corresponding files are located in the directory
genicam under %HALCONROOT%.
- Now, a filter driver for the GigEVision
interface is included. The corresponding installation files are
located in %HALCONROOT%\misc\drivers\win_xp_32.
|
|