|
This document provides the release notes for MVTec HALCON 8.0.1, as released in
October 2007. HALCON 8.0.1 is primarily a maintenance release that fixes
all known bugs in HALCON 8.0; besides, it provides added functionality
and speed-ups.
Overview
This document contains the following information:
-
Compatibility
-
Major New Features of HALCON 8.0.1
-
Detailed Description of Changes in HALCON
8.0.1
-
Errata Release Notes of HALCON 8.0
-
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.1. In contrast, all
HALCON 7.1 licenses must be replaced or upgraded. Please contact your
local distributor.
-
HALCON Library
HALCON 8.0.1 is fully compatible with HALCON 8.0. Compared to HALCON
7.1, many extensions have been introduced. Thus, the HALCON 8.0.1
libraries are not compatible with HALCON 7.1 or earlier versions.
-
HALCON Applications
Applications (i.e., executables) developed with HALCON 8.0 can
be used with HALCON 8.0.1, i.e., HALCON 8.0.1 is binary compatible with
HALCON 8.0.
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, respectively.
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.1, these
applications would therefore still use the HALCON 8.0 versions. You
must either replace the assemblies manually or re-compile the projects.
For compatibility reasons to earlier HALCON versions it is now
possible to save HDevelop programs and external procedures optionally
with the locale encoding table instead of UTF-8. This option can be
chosen in the Preferences dialog on the General Options tab card: The
encoding for saving HDevelop programs and external procedures can be
set to 'UTF-8' or 'Native'.
-
Image Acquisition Interfaces
If you have developed your own acquisition interfaces with HALCON 8.0,
you can use them with HALCON 8.0.1 without further action. Because of
the new version of
the HALCON Acquisition Integration Interface, 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 can be used with
HALCON 8.0.1 without further action. Extension packages
developed with HALCON 7.1.x must be
re-generated.
-
ActivVisionTools
Since all ActivVisionTools versions are based on HALCON 7.1.1 or
lower, none of them can be used directly with HALCON 8.0.1. By
installing HALCON 8.0.1, you would thus disable such an
ActivVisionTools installation. Therefore, the setup program of HALCON
8.0.1 checks whether there is an ActivVisionTools installation on your
computer and warns you that by continuing to install HALCON 8.0.1 you
will disable your ActivVisionTools installation.
-
If you have been using ActivVisionTools 3.1 or 3.1.1, please
contact your distributor for further information on how to run
this version together with HALCON 8.0.1.
-
In contrast, ActivVisionTools 1.0 to 3.0 cannot be used
together with HALCON 8.0.1.
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". Note that if
you only want to evaluate HALCON 8.0.1, you can minimize the
switching effort by installing only the demo version.
Installation
-
USB Dongles
HALCON now supports USB dongles under
Windows x64 Editions.
Extended Functionality
-
Bar Code Reader
The bar code reader has been extended for the RSS-14 bar code (Reduced Space
Symbology). After RSS-14, RSS-14 Truncated, RSS Limited, and RSS
Expanded, now also the symbols ot type RSS-14 Stacked, RSS-14
Stacked Omnidirectional, and RSS Expanded Stacked can be read.
HDevEngine
-
Parallel HDevEngine
The HDevEngine is now reentrant. Thus
it is possible to execute multiple HDevelop programs and/or
procedures in parallel taking advantage
of a multi-processor system.
HDevelop
-
External Procedures
HDevelop provides a new dialog for password administration for multiple
procedures simultaneously
-
Histograms
The usability of the histograms in HDevelop
has been enhanced. Additionally, a larger number of supported features
for the Feature Histogram is provided.
-
General Usabilty
The general usability of
HDevelop has been enhanced in many ways.
Documentation
-
Solution Guide Basics
The "Solution Guide
Basics" now also shows how to use HALCON's operators for
classification, e.g., in order to segment images into regions of similar color
or texture. Further, the chapter '3D Matching' has been extended to
show how to restrict the pose range for the model creation.
-
Solution Guide II-F on 3D Machine Vision
The chapter 'Robot Vision' in the Solution Guide
II-F on 3D Machine Vision now contains more information about using
the calibration data, in particular for grasping objects with a moving
camera system.
-
Programmer's Guide
For the "Programmer's Guide" the part
about HDevEngine has been extended, amongst other to show how to use
Parallel HDevEngine to speed up applications by executing procedures in
parallel by multiple threads.
Detailed release notes can be obtained for the following topics:
-
HDevelop
-
HALCON Library
-
HALCON/.NET
-
HDevEngine
-
Image Acquisition Interfaces
-
Miscellaneous
- Speed-Up and Enhancements
- Functionality
- Bug Fixes
- Examples
- Manuals
-
Speed-Up and Enhancements:
- HDevelop's Feature
Inspection dialog now is faster for large images.
-
The input and result strings of string operations (environment, convert, chrt, sum) are not longer limited in
size. Furthermore, string constants that are entered manually into the
Operator Window are no longer limited to 1024 characters.
-
Accessing control variables within expressions is now faster in
HDevelop and the HDevEngine.
-
Functionality:
-
The General Options tab card on the Preferences
dialog now enables the user to specify the precision that is
used for displaying real numbers in the Variable Window and Inspection
dialogs.
-
HDevelop now supports a keyboard shortcut CTRL-F for 'Find' in the Help Window. A consecutive CTRL-F now finds the
next occurrence and the search wraps around at the end of the
displayed text.
-
HDevelop now offers the variable clean up functionality also in the
context menus of the Variable Window.
-
The tool tip for an image with a reduced
domain now also displays the data of the domain. This distinguishes
this kind of images from images with a full domain, where no
information about the domain is displayed.
-
The display of string values in the Variable
Window and Variable Inspect
Window now uses escaped representations like '\\' or '\n' for
unprintable characters, which also makes it easier to edit these
strings. Furthermore, it is now possible to enter arbitrary characters
in a string using the C-like escapes '\xhh' (an 'x' followed by one or
two hexadecimal digits) and '\ooo' (one, two, or three octal digits
that follow directly after the backslash) for hexadecimal and octal
notation, respectively.
-
So far, the vertical line to be moved in a Histogram was chosen according to the minimum
and maximum value, and the histogram's x value that is represented by
the mouse position. This made the handling of the lines sometimes
difficult, especially when the minimum and maximum value are
identical. Instead, the line to be moved is now chosen according to
the screen positions of the mouse and the lines.
Furthermore, for minimum and maximum values that lie outside of the
actually displayed range dashed lines are displayed at the left or
right border of the histogram display, and these lines are selectable
as if they were inside.
-
HDevelop no longer changes the selected feature in the Feature Histogram dialog when the input object
changes. As a consequence the Feature Histogram dialog now always
displays the full list of features, regardless of the input object's
type.
-
HDevelop's Histograms now have
different display modes, i.e., different ways the actual and the
possible display range may react to new input objects. These modes can
be selected for the vertical and the horizontal direction
seperately. Roughly spoken, these modes are:
-
'adaptive': The possible display range is restricted to the
histogram's range (0..255 for byte images, -128..127 for int1
images). The display is reset to the maximum possible range.
-
'increasing': The possible display range is unrestricted. If the
new input object's value range exceeds the previous one, the display
range is extended to the new value range.
-
'fixed': The possible display range is unrestricted. The display
stays unaltered.
-
HDevelop's Feature Inspection dialog now
supports all *_points_xld features.
-
HDevelop's Variable Inspect dialog for
acquisition handles now can handle more than one online image at the
same time.
-
HDevelop opened new Zoom Windows when
the user clicked onto the tool bar icon and placed them at a free area
somewhere on the workspace. This was sometimes confusing, because
the opening position could be outside the visible scroll area and
a new Zoom Window was always opened, even if the user wanted to bring
a hidden Zoom Window to the front. Therefore, the behavior was
changed: Now HDevelop opens existing Zoom Windows by a click on the
tool bar icon. Only if none exists, a new one is opened. For opening
multiple Zoom Windows, a new entry "New Zoom Window" was added to the
Visualization Menu.
-
With the help of the internal operator dev_inspect_ctrl it is now possible to open
a Variable Inspection table that lists an arbitrary number of
variables. The operator dev_close_inspect_ctrl removes the
passed variables from the Variable Inspection table. If all
variables from one table are removed, the table is closed. The
variables are passed as a tuple: dev_inspect_ctrl ([A,B,C])
-
For improving the usability, the following changes have been made to
the Operator Window:
-
If a new operator is selected for being edited in the Operator
Window, its short description is now displayed in the status bar.
-
The name of the selected operator is now displayed in the title bar
of the Operator Window. This is especially useful if a new name
was inserted into the combo box but the editing of that entry is not
yet finished. In this case, the operator name that is displayed in
the operator combo box may differ from the operator that is
currently selected for editing.
-
As long as no operator is selected, the parameter section of the
Operator Window is completely hidden so that you can distinguish
between the state where no operator is selected from cases where an
operator without parameters was entered in a more convenient way.
-
The Operator Window is now cleared if
the selected procedure is deleted or the program changes.
-
The suggestions made in the Operator
Window for control parameters were
improved:
-
If the experienced user option 'Ignore semantic type' is not
switched on (default), for parameters that expect a handle only
the variables that store such a handle are listed.
-
For parameters with a more complex semantic type than number or
string (like point or rectangle), now available variables with the
requested or a similar type are suggested instead of the default
values.
-
The cursors that are used in the left part of the program listing for setting breakpoints, the
program counter, and the insert position have been changed. The problem
with the old cursors was that there was an ambiguity concerning the
hot spots of these cursors. For example, it was ambiguous whether the
program counter would be set at the arrowhead or at the position of
the decoration (which was an arrow too). The hot spot of the new
cursors is always in the center.
-
Invalid program lines (like unresolved procedure calls and
unconnected block statements) that have been deactivated are now
displayed in the program listing with
the deactivation color instead of the color for invalid lines.
-
The activation/deactivation behavior of connected block statements was changed in the following
way:
-
If a block begin (e.g., 'for', 'if', ...) or block end
statement (e.g., 'endfor', 'endif', ...) is activated or
deactivated, always the whole block (including 'elseif' or 'else'
statements) is automatically activated or deactivated,
respectively. In contrast, the intermediate block statements
'elseif' and 'else' are (de)activated without influence on the
rest of the block.
-
If a deactivated operator is edited in the Operator Window and
re-entered into the program, this program line is activated. If
this operator is a connected block statement, now the same
activation method concerning the other block statements is used as
with the normal activation and described above, i.e., the other
block operators are also activated.
-
Undoing any previously performed activation or deactivation
action of connected block statements now restores exactly the
state from before the action.
-
When using the file selection box in the Operator Window for the file
name of write_image, the default filter
is now set to "All Files (*)" to prevent the unexpected adding of the file
extension ".ima" when typing a name with no or unknown extension.
-
In case of an execution error, HDevelop
now sets the focus onto the erroneous parameter instead of the first
parameter in the Operator Window.
-
If the execution of an operator is aborted with an error message, the output parameters are no
longer reset but keep their old values (as in HALCON version 7.1 and
earlier).
-
If an error occurs in HDevelop, a message box pops up that shows,
besides a text which describes the error, an error code. If the error
occurred during the execution of an HALCON operator, additionally the
HALCON error code and text are
displayed. To avoid confusing the user by different error codes (from
the same range), the following changes were made:
- If an HALCON error occurs, the HDevelop error code is
suppressed.
- The HDevelop error codes were redefined (>10000) so that they do
not overlap the range of the HALCON error codes.
-
In case of an abnormal program termination (e.g., crash, segmentation
fault, or unhandled exception) HDevelop now tries to save the program
(if it was modified) as well as all modified external procedures. The
program and procedure files are written to the user's temporary
directory. The file name is composed from the program or procedure
name followed by '_xxx', where xxx is a unique number. Older backup
files are not overwritten. For every saved file, a message with the
file name is shown in a message box as well as on the console.
-
HDevelop no longer accepts reserved
identifiers, e.g., 'if', 'min', 'H_MSG_TRUE', etc., as variable
names or as procedure parameters or procedure names. Because older
HDevelop versions didn't have such a restriction, in existing programs
or procedures these identifier names may still be used for variables
and procedure parameters. If such a program or procedure is loaded,
the identifiers are prefixed by '_AUTO_RENAMED_', i.e., a variable
'min' is renamed to '_AUTO_RENAMED_min'. Although even in older
HDevelop versions most of these identifiers could not be used within a
control parameter expression, such invalid expressions may pop up if
new reserved identifiers are added to future HDevelop versions. In such
a case, the whole expression is inserted as a quoted string parameter.
-
For improving the usability of HDevelop some changes concerning
the saving of programs and procedures
were made:
-
The main 'Save' action (Ctrl-S) works now on the procedure that is
currently listed in the Program Window. If this is a local
procedure or 'main', the program will be saved. Hence, the 'Save'
button is disabled if the visible procedure (or the program) is
not modified. The icon in the Save button indicates whether Save
works on an external procedure or on the program.
-
For easier access, the action 'Save All' now has the short cut
Ctrl-Alt-S. In addition, a corresponding icon was added to the
tool bar.
-
For improving the feedback to the user, (a) the cursor changes to
a wait cursor as long as the Save action is performed and (b) after
finishing the Save action, the status bar informs the user about
success or failure of the action.
-
HDevelop's Find/Replace dialog is
extended with the following features:
-
After selecting a program line in the listing the search
continues at this position.
-
If displayed, the result list reflects all changes in the program
listing.
-
The Replace/Replace All buttons are now disabled if no replace text
was entered. The Replace action with an empty text was ignored
anyway.
-
If the Operator mode is selected, when applying a Replace action,
the option Whole Words is selected and locked, because replacing
only works if a distinct operator pair is selected.
-
If an external procedure is created (by
changing the interface of an existing procedure, creating a new
procedure, or making all local procedures external) in a directory
that is not in the list of external procedure paths, the new directory
is automatically added to the list of registered directories. This
was also performed, when as a new directory a subdirectory of one of
the registered paths was passed, although in that case the new
procedure was already reachable. This behavior was changed, so that
in cases where the procedure is reachable without modifications of the
external procedure path settings the directory list will not be
extended.
In addition, in cases where the chosen directory is not reachable, the
user now has the opportunity to abort the automatic extension of the
directory list.
-
The Edit Procedure Interface dialog has a
combo box 'Directory' for showing or selecting the path of external
procedures. In cases where an external procedure is selected, its
behavior was changed in the following way:
-
Instead of showing the directory from where the search started,
it now displays the real location of the procedure file (this may
be the search directory itself or any subdirectory of the search
directory).
-
Owing to the fact that an external procedure cannot be moved in
the file system via the Edit Procedure Interface dialog, it is no
longer possible to enter a new directory for an existing external
procedure. This is possible only for local procedures that are
going to be made external.
-
HDevelop now switches the displayed interface in an open Edit Procedure Interface dialog if a new
procedure is selected in the program listing window and Edit Interface
is clicked.
-
HDevelop now has an extended dialog for managing password protection for external procedures.
This dialog enables the user to lock and unlock protected external
procedures, as well as to set the password for unprotected external
procedures and to remove or change password protection for unlocked
protected external procedures. It is possible to apply the above
actions to a selection of external procedures belonging to the
corresponding category (unprotected, unlocked protected, and locked
protected) at the same time.
-
HDevelop now disables the Ok button in the Password dialog as long as no password is
entered. This prevents entering of empty passwords which was treated
as canceling the dialog anyway.
-
It is now possible to export HDevelop
programs containing invalid program lines. The corresponding
program lines are exported as comments in the selected export
language.
-
Floating point values are now always
displayed with a decimal point even if the fractional part is zero, to
avoid confusion and prevent some rare problems when exporting code from the Image Acquisition
Assistant for floating point parameters.
-
For compatibility reasons to earlier HALCON versions it is now
possible to save HDevelop programs and external procedures
optionally with the locale encoding
table instead of UTF-8. This option can be chosen in the
Preferences dialog on the General Options tab card: The encoding
for saving HDevelop programs and external procedures can be set to
'UTF-8' or 'Native'.
-
If an HDevelop program with non-ASCII characters was exported to a
file format different than text, the exported code used different
encodings for comments (UTF8) and string
constants (native or UTF-8, depending whether at least one character
of the string could be encoded in the native character set). Now, the
user can select the encoding in the Export dialog:
-
Native for the native or locale character encoding table or
-
UTF8.
-
Bug Fixes:
-
The integrated help browser
did not show help files for operators defined in an user extension.
This problem has been fixed.
-
HDevelop omitted some entries of long context
menus if there was not enough screen height. Long menus are
now split into multiple columns if needed.
-
HDevelop's context menus did not work
as expected if invoked on the line numbers of a program listing. This
problem has been fixed.
-
According to the documentation, it should be possible to load an
HDevelop program or an image by drag 'n' drop from applications like
Windows Explorer or Konqueror to a running HDevelop instance.
This did not work under Linux/UNIX systems. This problem has been
fixed.
-
HDevelop crashed if an HDevelop program was dragged from another application (like Windows
Explorer) and dropped into the running HDevelop window while an
interactive operator (like draw_rectangle1 or
get_mbutton) was running. This problem has been fixed.
-
There was a problem in the Graphics
Window when the user clicked on the background image (the
first image on the history stack) if the Graphics Window stack
contained another image with a reduced ROI. In this case the
background image came to the front hiding all other objects in the
Graphics Window. This problem has been fixed.
-
If the Visualization Parameters dialog
was opened while no Graphics Window was open, the GUI elements of
the Visualization Parameters dialog were not initialized.
Furthermore, by pressing the buttons 'Use settings for new windows'
HDevelop crashed. These problems have been fixed.
-
If the part of the Graphics Window was set with dev_set_part, the part of the Graphics
Window has to be reset if a new program is loaded or created. This
reset was not performed. This problem has been fixed.
-
HDevelop sometimes crashed when a variable selected in the Variable Window was removed by a cleanup.
This problem has been fixed.
-
HDevelop's auto mode in the Variable
Window did not work correctly when single-stepping through a
program and the variable update was switched off. This problem has been
fixed.
-
HDevelop did not save the state of the settings in the Variable Window. This problem has been
fixed.
-
The behavior for displaying information in the status bar about the variable selected in the
Variable Window was erroneous:
-
The information was not displayed for the selected control variable
but for the one that was selected the last time the mouse was moved over
the table with the left button pressed.
-
The status bar was not updated and kept the variable information
even if a program line was executed.
These problems have been fixed. In addition, the status bar now
shows information about the iconic variables, too.
-
By calling dev_update_var('off') (or unchecking the appropriate
check box on the Preferences->Runtime Settings tab card) updates of
the Control Variable table in the Variable
Window are suppressed during the program execution. If the
program is not running, the Update Variables setting should have no
effect. However, if a control variable was modified manually via
the Variable Inspect Window, the value of the modified variable was
not updated in the Variable Window. This problem has been fixed.
-
HDevelop's Gray Histogram had several
problems with monochrome images concerning the histogram display and
statistics. These problems have been fixed.
-
HDevelop's Gray Histogram threw an
error for complex images. HDevelop's Feature
Histogram threw an error for gray features when the topmost
image in the active Graphics Window was of type complex. Instead,
HDevelop now simply displays an empty histogram and empty statistical
values.
-
HDevelop's Feature Histogram did not
always reset all statistics values correctly, i.e., when a feature
couldn't be calculated (e.g., any gray_* feature on a
complex image), value, number, and percentage of the peak value were
not reset. This problem has been fixed.
-
The Feature Histogram dialog displayed
a wrong value for the relative frequency of the peak value when the
option smoothing was chosen. This problem has been fixed.
-
HDevelop's Feature Histogram displayed
a wrong range in the statistics for single objects. Additionally, the
minimum and maximum marks in the histogram display were placed
incorrectly. These problems have been fixed.
-
Zooming histograms with the mouse did
not work correctly. In particular, the upper and lower display
borders were calculated too small, and it was possible to zoom beyond
the possible range. This problem has been fixed.
-
HDevelop's histogram dialogs did not
always display histograms correctly. This problem has been fixed.
-
In the following cases there was a potential problem with the
consistency of a Variable Inspection
table that was opened with multiple variables:
-
If the first column (i.e., variable) was hidden via the context
menu of the horizontal table header an empty column could remain
on the left hand side of the table.
-
If an arbitrary column was removed from the table via the operator
dev_close_inspect_ctrl the statistics part of the column was not
removed.
These problems have been fixed.
-
HDevelop sometimes suggested variables
with a wrong semantic type in the Operator
dialog. This problem has been fixed.
-
The suggestions for the parameter
'LutName' of dev_set_lut could have caused an error. This problem
has been fixed.
-
HDevelop did not print the character
'<' correctly. This problem has been fixed.
-
If the font size for the program
listing was changed via the Preferences dialog, the size of
the program lines was not adapted. Furthermore, if a new operator
was inserted, the line numbers and the program lines themselves
sometimes became inconsistent, i.e., got a different height. This
problem has been fixed.
-
Executing Run to Insert Cursor (Shift-F5) caused a crash if the insert
cursor was at the end of the program and the last line of the program
was a comment or deactivated. This problem has been fixed.
-
After inserting the body of a
program, name conflicts between iconic and control parameters
could have caused errors or even a crash. This problem has been
fixed. Furthermore, HDevelop will now display an error message when
entering an expression containing an iconic variable.
-
If block statements (loops or
conditions) are entered to the program, the suitable block
begin and block end statements are connected, if possible, making
this statement valid. This validation was not performed when the
block statements were entered via an Undo or Redo action. This
problem has been fixed.
-
There was a problem if a 'break' or
'continue' statement followed a loop begin statement like
'for' or 'while' that was invalid or disabled. In such a case the
'continue' or 'break' statement was connected to the disabled or
invalid loop. This led to some strange and erroneous behavior:
-
'continue' within a disabled loop caused an infinite loop.
-
'break' within a disabled loop caused a jump after the (disabled)
loop end statement.
-
if 'break' or 'continue' followed after an invalid (because
incomplete) loop begin statement, they became also invalid, even if
there was a valid outer loop.
These problems have been fixed. For clarifying which loops are
executable and which not, and which statements (like 'break' and
'continue') work, loops that are disabled are no longer
indented.
-
If a block, like 'for' or 'if', is
partly selected, the other, unselected side of the block is now
marked by a different background color that is similar to the
selection color. This is due to the fact that there are some actions
possible (e.g., Delete or (De)activate) that work on the block on the
whole. Other actions, like Cut or Copy work only on the selected
program line.
-
If a new operator was inserted into the program with OK at the end of
a loop (for, while), the operator was
executed and the PC jumped directly to the beginning of the
loop instead of staying at the end statement (endfor, endwhile). As
a consequence, the next cycle of the loop was always completely
executed when a further operator was entered with OK. This problem
has been fixed.
-
Starting an interactive draw operation
by clicking the Apply button in the Operator Window now correctly
sets the tool bar buttons. All running buttons are now disabled and
only the Stop button is enabled. Furthermore, the Operator Window is
disabled until the draw operation is finished or stopped.
-
HDevelop remained in an inconsistent state after calling the operators
dev_set_colored, dev_set_color, dev_set_line_width, dev_set_draw, dev_set_shape, dev_set_lut, or dev_set_paint with erroneous parameter
values. This problem has been fixed.
-
There was a problem with calling the HDevelop operator dev_clear_window if the Graphics Window was
smaller than the displayed image. In some cases, after calling
dev_clear_window the image part was reset to the window size even if
the part was set in the Graphics Window by displaying an image or
setting it explicitly with dev_set_part. A similar problem occurred
if certain user actions like selecting a region or changing the color
or line width were performed in the Graphics Window. These problems
have been fixed.
-
HDevelop had a memory leak if the operators select_obj or copy_obj were called on a single XLD
selecting this one and only object as output object and assigning the
result directly to the same variable. This problem has been fixed.
-
It was not possible to evaluate the value of an error variable that was defined with dev_error_var and stored in the state of the
last operator execution within an if-statement: before the
evaluation was performed, the error variable was reset to 2. This
problem has been fixed.
-
In the Find/Replace dialog, the
operator substitution failed if a local procedure was entered as the
'Replace' operator. This problem has been fixed.
-
If in the Find/Replace dialog a
disabled operator was replaced by another operator, the substituted
operator was enabled. This problem has been fixed: now, the replaced
operator keeps its enabled/disabled state after the substitution.
-
HDevelop's Find/Replace dialog
sometimes also replaced texts in constant strings when variable names
should be replaced. This problem has been fixed.
-
HDevelop crashed if an outdated result in the Find/Replace dialog was selected. This problem
has been fixed.
-
There were several problems if the user tried to use the Change Procedure Interface dialog for making
a local procedure external:
-
If there was already an external procedure with the same name in the
selected directory, this procedure was overwritten without
confirmation. This problem has been fixed. If the external procedure
file already exists, now, a message box is opened where the user can
choose between overwriting the file or going back to the dialog for
selecting a different procedure name or directory.
-
Although the procedure was correctly written to disk, the Program
Window listed the contents of the old (and now overwritten) procedure
(or an empty procedure, if there did not exist an external procedure
with that name before). This problem has been fixed.
-
The deletion of the local procedure was not added to the undo stack,
so it was not possible to recreate the local procedure with
'Undo'. Although the procedure was correctly written to disk, the
Program Window listed the contents of the old (and now overwritten)
procedure (or an empty procedure, if there did not exist an external
procedure with that name before). This problem has been fixed. The
local procedure can be recreated now by calling Undo and removed
again with Redo. Creating an external procedure is because of
consistency problems intentionally not added to the undo stack.
-
The program was not marked as modified, although the local procedure
was removed. This problem has been fixed.
-
If the external procedure could not be written (e.g., because the
already existing procedure or the directory was write-protected), an
error message was shown AFTER the local procedure had been
removed from the program. This problem has been fixed. The selected
directory is now checked before any other action is performed, so
that a message box can inform the user about possible problems when
writing the external procedure file and asking him to enter a
different directory. If, nonetheless, an unexpected error occurs
during writing, the local procedure is kept in the program. However,
all other changes of the interface (concerning, e.g., name, short
description, chapters, or parameters) have been performed.
-
If the name of a procedure was changed via the Change Procedure Interface dialog, the
program lines referring to that procedure were not adapted even if
the check-box 'Adapt program' was checked. This problem has been
fixed.
-
There were some cases where the execution of a procedure that is going to be removed (or
replaced) was not aborted. This led to an inconsistent call stack,
where the execution was in an 'invisible' procedure. This happened
in the following cases:
-
'Delete Current' is called on a local procedure that has the program
counter.
-
'Make All External' is called while a local procedure has the program
counter
-
'Insert Used/All As Local' is called while the program counter is
within an external procedure.
The problem occurred also, if these actions were performed via the
undo stack. In addition, with calling Undo or Redo the problem
occurred also if the procedure was made local or external over the
Change Interface dialog.
This problem has been fixed in all cases mentioned above.
-
If a new procedure is created from
selected program lines, the variables that are used in these program
lines are suggested as parameters of the created procedure. If these
parameter names are changed, two problems occurred:
-
If the selected program lines were replaced by the call of the
newly created procedure, the variables used in that procedure call
were replaced by the new names, although the new names are not
valid in the name space of the calling procedure (the new names
belong only to the name space of the new procedure).
-
If the selected program lines contain some complex expressions,
the variables were not replaced correctly, especially if the expression
contained the same function call more than once or if the variable
name was part of a string.
These problems have been fixed.
-
Making an external procedure from the
program listing local led to an inconsistency in the program listing:
while the combo box showed 'main' the listing still displayed the
body of the previously external procedure. This problem has been
fixed.
-
The External Procedure section on the
Preferences dialog contains a Procedure Use tab card.
This tab card offers - among others - the opportunity to list all
procedures that are not used by the current program. On this list,
the first external procedure was missing. This problem has been
fixed.
-
HDevelop sometimes crashed when an external procedure path was
deleted from the list of external directories in the External Procedure Settings dialog. This
happened when the list contained at least two directories, a
procedure from the second directory referred to a procedure from the
first one, and the first directory was deleted. This problem has been
fixed.
-
The behavior how references from external
procedures to local procedures were resolved was not
consistent. Depending on the order how certain actions (loading a
program that defines local procedures and setting the external
procedure path) were performed, an external procedure could refer to
a local procedure or not.
This behavior has been clarified now: it is no longer possible
that local procedures are called from external procedures. This is
due to consistency problems that occur especially in cases where
within one application an external procedure is used from different
HDevelop programs at the same time (e.g., in conjunction with the
HDevEngine), and that procedure calls another procedure that is in
one program locally redefined.
-
If via the External Procedure Settings
dialog a directory entry was removed from the list of managed
external procedure paths, all external procedures from that directory
were removed from HDevelop without checking whether they were changed
or not. Hence, all unsaved changes within these procedures were
lost.
This problem has been fixed. For every directory that is selected
for being removed, the modification states of the procedures are
checked, and, if required, a dialog is opened for confirming or
canceling the removal.
-
HDevelop did not scroll to newly inserted parameters in the Procedure Interface dialog. This made it
hard to create long parameter lists. This problem has been fixed.
-
HDevelop could not handle external procedure
paths that contained non-ASCII characters. Although the path
was correctly displayed in the directories table of the External
Procedure Settings dialog, the procedures from such a path were not
recognized and thus not be loaded. This problem has been fixed.
-
HDevelop did not check, whether the file name
of an external procedure is a valid procedure name. However,
this is important because if a procedure is renamed in the file
system, the new filename becomes the name of the procedure. By this,
it is possible that the new name is not a valid identifier, e.g., it
might start with a number or contain non-ASCII characters. This
problem has been fixed: procedure files with an invalid name are now
listed in the External Procedures table but marked as not loadable.
-
The program listing in HDevelop could
become corrupted if an external procedure
file that was reachable over the external procedure paths
could not be loaded. In such a case the procedures that followed
after the corrupted file(s) in the listing might not be displayed: the
listing kept empty or showed another procedure's body. This problem
has been fixed.
-
If an HDevelop procedure that is saved
with 'Save Procedure As...' overwrites another procedure on the file
system that was already loaded, the listing of the overwritten
procedure was not updated and kept showing the old body. This
problem has been fixed.
-
HDevelop's Export dialog did not always
display the export file name correctly. This problem has been fixed.
-
HDevelop now exports the short description and
chapter information of procedures as comments.
-
After setting the system parameter 'filename_encoding' to 'utf8', HALCON is able
to open images even if the filename consists of characters that cannot
be encoded in the current locale (e.g. japanese characters on a german
or english system). However, HDevelop's Read Image dialog (File/Read
Image) did not show a preview of these images. This problem has been
fixed.
-
After enabling HALCON's 'utf8' with set_system('filename_encoding', 'utf8'), the
handling of strings with Unicode characters that do not belong to the
native encoding set (e.g., japanese characters on a german or english
system) was wrong:
The variables were not correctly displayed and string operations on
input strings with different encodings resulted in a string with the
different encodings mixed (e.g., the result of a string concatenation
on special native characters and not-native characters used native and
utf8 encoding in one string). This problem has been fixed.
-
When using the japanese or simplified chinese
GUI, deleting a program line using the "Del" key did not
work. This problem has been fixed.
-
The Save Window action from the
Graphics Window's context menu did not work if the selected file name
contained Unicode characters and
'filename_encoding' was set to 'locale'
(default). The following errors occured:
-
If the path was ASCII but the file name contained native characters,
the image was stored with a cryptic name (the same happens with
arbitrary Unicode characters, but in that case this is the expected
behavior).
- If the path contained any Unicode characters, HDevelop was
aborted with an abnormal program termination.
These problems have been fixed. Now the filename for Save Window
can contain arbitrary Unicode characters.
-
There are some GUI elements in HDevelop
where on a german system a comma was used as decimal separator
instead of a point. In detail, the histogram windows and the
Matching Assistant were concerned. Whether a comma appeared or not
depended on the Language settings
(locale) of the operating systems, not on the language that
was selected in HDevelop. This problem has been fixed: now always a
point is used as the decimal separator.
-
The japanese operator reference files
are now correctly displayed in the HDevelop Help Window.
-
The assistants could not handle
filenames with non-ASCII characters, if the hlib's 'filename_encoding' was set to 'locale'
(default):
In the Image Acquisition Assistant
the following problems occured:
-
Selecting a file with the 'Select File(s)...' button: images with
non-ASCII filenames could not be loaded even if they are supported on
the local system.
-
Selecting a directory with the 'Select Directory...' button: if the
directory name has non-ASCII characters no image file was loaded
In the Matching Assistant the
following problems occured with non-ASCII filenames:
-
loading of
model images failed
- loading of test images failed
-
loading of shape-based models failed
- writing of shape-based models failed.
All these problems have been fixed.
-
If the Image Acquisition Assistant was
opened after setting the 'filename_encoding' to 'utf8' HDevelop crashed
under Windows. This problem has been fixed.
-
HDevelop crashed when closing an image
acquisition device that was used in volatile mode if there was
still an iconic variable that was referring to an image that was
grabbed in volatile mode. This problem has been fixed: In HDevelop
volatile images will automatically be copied. This will not apply for
the HDevEngine.
-
It was not possible to reconnect to a FireWire camera in the Image Acquisition Assistant using the 1394IIDC
interface with FirePackage2v19 driver or higher. A workaround for
this driver problem has been implemented in HDevelop.
-
HDevelop did not raise existing Assistant
dialogs when selecting the corresponding named entry in the
Assistant menu. This problem has been fixed.
-
The assistants of HDevelop went into
an inconsistent state if the program was reset or a new program was
opened. This regarded all HALCON handles that were opened by the
assistants, in particular,
-
the image acquisition handles of a connected Image Acquisition
Assistant and
-
the shape model handle of the Matching Assistant.
As a consequence, after resetting the program (F2) or opening a new
program, error messages were returned by some actions of the
assistants:
-
the Image Acquisition Assistant failed to grab images, if it was
connected to the device before the reset
-
calling 'Optimize Recognition Speed' or 'Inspect Recognition Rate'
in the Matching Assistant produced lots of error messages if the
model was searched in a test image before the reset.
These problems have been fixed.
-
When running HDevelop in SDI mode, there was a problem on some UNIX systems with remembering the correct
position of the Graphics and the Operator Window. If HDevelop was
closed and restarted again, these two windows were moved to the right
and down by the window frame size. Whether the problem occurred or
not could also depend on the window manager and the X-server. This
problem has been fixed.
-
Examples:
-
The new example program
examples/hdevelop/Filter/Enhancement/adjust_mosaic_images.dev shows
how images can be adjusted radiometrically to create a mosaic image from
images with different exposure and white balance settings.
-
The new example program RSS14Stacked.dev in
examples/hdevelop/Applications/Barcode/ shows how to use the bar code
reader with bar codes of type RSS-14 Stacked.
-
The new example program RSS14StackedOmnidir.dev in
examples/hdevelop/Applications/Barcode/ shows how to use the bar code
reader with bar codes of type RSS-14 Stacked Omnidirectional.
-
The new example program RSSExpandedStacked.dev in
examples/hdevelop/Applications/Barcode/ shows how to use the bar code
reader with bar codes of type RSS Expanded Stacked.
-
The new example program barcode_param_max_diff_orient.dev in
examples/hdevelop/Applications/Barcode/ shows how to use the
new parameter 'max_diff_orient' of
the bar code reader.
-
The following new image acquisition examples in
hdevelop/Image/Acquisition show how to perform image acquisition with
the newly supported image acquisition
interfaces RangerC, RangerE, and mEnableIV:
-
rangerc_components.dev,
rangerc_parameters.dev, and
rangerc_simple.dev,
-
rangere_components.dev,
rangere_parameters.dev, and
rangere_simple.dev,
-
menable4.dev,
menable4_continuous.dev,
menable4_crop.dev,
menable4_parameters.dev,
menable4_shaftencoder.dev, and
menable4_simple.dev.
-
The new example program tag_2cameras.dev in
examples/hdevelop/Image/Acquisition shows how to grab images from two Tattile TAG cameras.
-
Manuals:
-
The HDevelop User's Guide is available in a new
edition. It has been adapted to the changes in HALCON
8.0.1.
-
For the HDevelop operators dev_set_preferences and
dev_get_preferences that were introduced in HALCON 8.0 the
missing documentation in the reference manual was added.
- Speed-Up and Enhancements
- Modified Operators
- Bug Fixes
- Manuals
Speed-Up and Enhancements:
- HALCON now supports USB dongles under
Windows x64 Editions.
-
The DLLs of extension packages can now
be found under Windows even if the environment variable
HALCONEXTENSIONS contains quotation marks.
-
rotate_image is now faster for Phi = 90
and Phi = 270. The speedup depends on the processor and on the image
size. It is faster for larger images. For example, for images of
size 640x480, rotate_image is faster by up to a factor of 2. For
4096x3072 images, rotate_image is faster by up to a factor of 16.5.
-
adjust_mosaic_images now supports
disabling the internal caching in order to reduce memory
consumption. Internal caching can be disabled by adding the new
optional parameter 'no_cache' to EstimateParam.
Additionally,
adjust_mosaic_images now allows to use subsampling in order
to reduce memory consumption. Subsampling can be selected by adding
the new optional parameter 'subsampling_N', with N an integer larger
than 1, to EstimateParam.
The new example program
examples/hdevelop/Filter/Enhancement/adjust_mosaic_images.dev shows
how images can be adjusted radiometrically to create a mosaic image
from images with different exposure and white balance settings. It
uses the new example images
images/panorama/sankt_martin_automatic_*.jp2.
-
send_tuple and receive_tuple now allow tuples with more than
100000 elements. Furthermore, send_tuple and
receive_tuple now are able to handle strings of more than 1024
characters.
Modified Operators:
-
The HALCON bar
code reader now is able to read RSS-14 Stacked, RSS-14 Stacked
Omnidirectional and RSS Expanded Stacked bar code symbols. The
find_bar_code operator can be called with the code types
'RSS-14 Stacked', 'RSS-14 Stacked Omnidir', or 'RSS Expanded
Stacked'.
Under examples/hdevelop/Applications/Barcode, there are example
programs for each of the three new bar code symbologies. These example
programs use new example images in the directories
images/barcode/rss14_stacked, images/barcode/rss14_stacked_omnidir, and
images/barcode/rssexpanded_stacked.
Additionally, the bar code reader now allows to adjust the maximal deviation in
orientation of adjacent pixels in a candidate region (i.e., a region
with similar edge orientation) by using the parameter
'max_diff_orient'. As with all parameters 'max_diff_orient' can be set
in create_bar_code_model or set_bar_code_param. The parameter can be used
to control the size of the candidate region and therewith the result of
the find_bar_code operator.
The new example program barcode_param_max_diff_orient.dev in
examples/hdevelop/Applications/Barcode/ shows how to use the new
functionality. It uses the new image code128_max_diff_orient.png out of the
directory images/barcode/code128.
-
open_window now also works on systems
with multiple screens. The column parameter can be greater than the
horizontal resolution of the virtual display and the row parameter can
be greater than the vertical resolution of the virtual display, so it
is no longer limited to the resolution of the primary display monitor.
-
polar_trans_region_inv and
polar_trans_contour_xld_inv were not able to transform input
data covering an angle extent of more than 360 degrees. They have
been extended to facilitate this kind of transformation.
Bug Fixes:
-
add_noise_distribution did not add
pepper noise if noise with a salt-and-pepper distribution with less
than 0.2 percent of pepper should be added. In addition, images of
type int2 were clipped to the range [0,255]. These problems have been
fixed. In addition, the documentation of the operator has been
extended. It now describes the meaning of the values in the tuple that
defines the distribution.
Additionally, add_noise_distribution added noise
defined by a Gaussian distribution incorrectly: The gray value of some
pixels was increased too much. In particular, in HALCON 8.0 these
pixels were set to 255. This problem has been fixed.
-
If the operator affine_trans_object_model_3d was used to
scale an object model, the projection of this scaled object model
with project_object_model_3d contained
wrong contours. This problem has been fixed.
-
The operator best_match_pre_mg was
parallelized on tuple level. This caused erroneous behavior in
Parallel HALCON. This problem has been fixed.
-
connect_grid_points sometimes returned
erroneous results, e.g., for no apparent reasons there were meshes
missing (and as a consequence, the generated map image contained
holes). This problem has been fixed.
-
create_cam_pose_look_at_point returned
the error 1307 ("Wrong value of control parameter: 7") if
RefPlaneNormal was set to 'z'. This problem has been fixed.
-
create_shape_model and create_shape_model_3d had a memory leak of 48
bytes when using Parallel HALCON. This problem has been fixed.
-
create_shape_model_3d in some cases
crashed if the model that is projected into the image plane was too
large. A projected model that is too large may result because of three
reasons: First, the value for DistMin is chosen too small. Second, the
image size in CamParam is chosen too small. Third, the parameter Scale
in read_object_model_3d_dxf is chosen too small. This problem
has been fixed. Now, in these cases, the error 8910 ("The projected
model is too large") is returned instead.
Additionally, create_shape_model_3d created the
model in the wrong pose range if CamRollMax-CamRollMin exceeded the
full circle, i.e. rad(360). In this case the model was created only
from CamRollMin to CamRollMax-rad(360). The same problem occured for
LongitudeMin and LongitudeMax. This problem has been fixed. Now, in
this case the model is created for the full circle.
Furthermore, create_shape_model_3d in rare cases added
cluttered contours to the model that were not part of the 3D
object. In general, these extra contours were very small in comparison
to the correct model contours.
Additionally, create_shape_model_3d in some cases
returned the error 8940 ("Pose is not well-defined"). This could only
happen if the parameter LatitudeMin was set to a value that is close
to -rad(90) or LatitudeMax was set to a value that is close to
rad(90). The meaning of 'close' in this context strongly depends on the
used object. However, for some objects even -rad(80) or rad(80),
respectively, might already have caused the error.
Finally, create_shape_model_3d sometimes created
incomplete models with parts of the projected 3D object model
missing. If the missing part was too large the error 8510 ("Number of
shape model points too small") was returned. This only occured if the
system parameter 'clip_region' was set to 'true'.
These problems have been fixed.
-
deviation_image sometimes returned
erroneous results for images with reduced domains. This problem has
been fixed.
-
do_ocr_word_mlp and do_ocr_word_svm did not apply any corrections
to the raw classification result if the value of NumCorrections was
equal to the number of input regions or greater. This problem has been
fixed.
-
disp_distribution did not work correctly
under Windows. No output was performed in the Graphics Window after
executing the operator. The distribution became only visible after
causing a manual flush by, e.g., minimizing and subsequently
maximizing the Graphics Window. This problem has been fixed.
-
distance_transform did not work if for
the output image Width was set to 1 and Metric was set to one of the
following values: 'chessboard', 'octagonal', 'chamfer-3-4',
'chamfer-3-4-unnormalized', or 'euclidean'. In some cases, the
operator returned wrong results, in other cases,
distance_transform returned the error 6002 ("Memory partition
on heap has been overwritten"). This problem has been fixed.
-
expand_line performed wrong tests on the
input control parameter Coordinate for the 'row' mode. This might have
caused an unexpected error 1301 ("Wrong value of control parameter
1").
Additionally, expand_line returned wrong results in
the 'column' mode. The returned regions might have missed a pixel at
the border.
These problems have been fixed.
-
find_1d_bar_code now ignores failed
scanlines and proceeds with the processing of the remaining scanlines
instead of returning an error.
-
find_bar_code caused a memory leak.
This problem has been fixed.
-
find_shape_model_3d sometimes
returned the error 6002 ("memory partition on heap has been
overwritten") when restricting the search to a pose range that was
smaller than the pose range of the model. This was the case if the
pose range that was specified by the generic parameters
'latitude_min', 'latitude_max', 'longitude_min', and 'longitude_max'
in find_shape_model_3d was smaller than the pose range that
was specified when calling create_shape_model_3d. This problem has
been fixed. Please note that this problem also often caused matches
to be found significantly outside the specified pose range.
Additionally, find_shape_model_3d crashed if the size of
the input image differed from the image size that was specified in the
camera parameters that were used during the model generation with
create_shape_model_3d. This problem has been fixed. Now,
instead the appropriate error message 2106 ("Wrong image width") or
2107 ("Wrong image height"), respectively, is returned.
-
gen_random_region in rare
cases raised the error 3513 ("number of chords too big for num_max")
if the width was an odd number. This problem has been fixed.
-
gen_region_polygon_filled returned a
slightly too small region. This occurred only in rare cases and if the
input polygon was not closed. This problem has been fixed.
-
gen_spherical_mosaic with StackingOrder
= 'blend' and gen_cube_map_mosaic with
any StackingOrder sometimes created incomplete mosaics.
Additionally, gen_spherical_mosaic did not work correctly with
three images if StackingOrder was set to 'voronoi' or 'blend'.
Furthermore, gen_spherical_mosaic sometimes created
images with an one pixel wide gap when using StackingOrder =
'blend'.
These problems have been fixed
-
get_data_code_2d_results did not work
correctly for the data code print quality assessment with 'polarity' set
to 'light_on_dark'.
Additionally, get_data_code_2d_results with
(...,'quality_isoiec15415',...) returned the error 6041 ("No memory
block allocated at last") if used for QR-code or PDF417 reading. This
error occurred if the HDevelop option "Preferences->General
Options->Experienced User->Show memory usage" was chosen.
These problems have been fixed.
-
gray_inside did not converge in rare
cases if the input image contained at least one pixel with a gray
value of 255. This problem has been fixed.
-
hysteresis_threshold, edges_image, and edges_color in some cases returned error 6041
("no memory allocated at last") for big output regions. This problem
has been fixed.
-
inpainting_ct in rare cases returned
erroneous results. This problem has been fixed.
-
list_files crashed when the system
variable 'filename_encoding' was set to 'utf8'. This problem has been
fixed.
-
measure_pairs had a memory leak of 16
bytes if no pairs of edges were found. This problem has been fixed.
-
open_window now also works on systems
with multiple screens. The column parameter can be greater than the
horizontal resolution of the virtual display and the row parameter can
be greater than the vertical resolution of the virtual display, so it
is no longer limited to the resolution of the primary display monitor.
-
partition_dynamic did not use the full
specified search range for the determination of the position at which
the region is partitioned. This problem has been fixed.
-
partition_rectangle returned regions
that are one pixel too wide and one pixel too high. This problem has
been fixed.
-
polar_trans_region_inv did not transform
the complete input region if the transformation contained a large
amount of zooming. This problem has been fixed.
-
project_object_model_3d did not return
all projected edges if MinFaceAngle was set to zero.
Additionally, project_object_model_3d sometimes
returned wrong contours. This occured if HiddenSurfaceRemoval was set
to 'true' and 'clip_region' was set to 'true'.
Furthermore, project_object_model_3d sometimes
returned wrong contours. This could occur if the DXF file that has
been read by the operator read_object_model_3d contained polyface
meshes with successive identical points.
These problems have been fixed.
-
read_contour_xld_dxf did not close the
DXF entity LWPOLYLINE if the value of the group 70 was 1. This problem
has been fixed.
-
read_image returned the error 6001 ("Not
enough memory available") if a very large PNG file with a region was
read. This problem has been fixed.
-
read_object_model_3d crashed if the DXF
file contained an entity of type BLOCK that contained only entities of
type BLOCK. This problem has been fixed.
-
regiongrowing_mean in rare cases
returned the error 6002 ("Memory partition on heap has been
overwritten"). This problem has been fixed.
-
rgb1_to_gray and rgb3_to_gray now use the luminance formula
given in ITU-R BT.470-6 (Conventional Television Systems). The
formula is G = 0.299*R + 0.587*G + 0.114*B. The factor of 0.144 for B
used in previous HALCON versions was erroneous.
-
rotate_image with 90, 180, and 270
degrees now returns results that are consistent with other angles. In
particular, the full image is now transformed for these angles instead
of the reduced domain only.
-
segment_contours_xld crashed if the
number of output contours exceeded 50000. This problem has been fixed.
-
select_characters: The partitioning of
neighboring characters did not work correctly. If more than one
neighboring characters were connected, only one of them was
partitioned. This problem has been fixed. Now, all regions are
partitioned when using the operator with the parameter
'step2_partition_characters'. For example: AB BCD E F GHI J are
partitioned, whereas previously only AB or BCD or GHI were
partitioned.
Furthermore, select_charactes caused a memory leak.
This problem has been fixed.
-
set_socket_timeout could set the
parameter value 'infinite' only once per socket. This problem has been
fixed.
-
If the operator set_spy was used with
the parameter 'input_gray_window' to trace gray images, HALCON
sometimes crashed. This problem has been fixed.
-
set_window_extents could have crashed
under Linux/UNIX for very large window sizes. This problem has been
fixed.
-
The operators smooth_funct_1d_gauss,
smooth_funct_1d_mean, negate_funct_1d, abs_funct_1d, and scale_y_funct_1d overwrote the input
function. The operator get_pair_funct_1d overwrote its parameter
Index. This problem did not affect programs executed in HDevelop,
but programs using a language interface. This problem has been
fixed.
-
split_skeleton_lines returned an error
6002 ("Memory partition on heap has been overwritten") in case of large,
branched regions. This problem has been fixed.
-
There was an inconsistency with
the tuple_select_range operator and the
appropriate tuple operation in HDevelop [i:j]: In contrast to the
documentation, both versions of tuple selection allow to pass as the
right index a value that is by 1 smaller than the left index ([i:i-1]).
The result of this operation is an empty tuple:
tuple_select_range([1,2,3],1,2) -> [2,3]
tuple_select_range([1,2,3],1,1) -> [2]
tuple_select_range([1,2,3],1,0) -> [] However, it was not
possible to pass [0:-1] as a range. Consequently, this range is now also
allowed: tuple_select_range([1,2,3],0,1) -> [1,2]
tuple_select_range([1,2,3],0,0) -> [1]
tuple_select_range([1,2,3],0,-1) -> [] The documentation
of the tuple_select_range operator was adapted
accordingly.
Furthermore, the HALCON operator tuple_select_range allowed
to pass as a range arbitrary value pairs [i:i-1] with i > 0, even if it
was not a valid index: tuple_select_range([1,2,3],100,99)
-> [] In this case an error will be returned now.
-
wiener_filter crashed if the width of
the input image was greater than the height of the input image. This
problem has been fixed.
-
zoom_image_factor and zoom_image_size returned wrong results for
int2 and uint2 images if Interpolation was set to 'none'. This
happened if the image was scaled in the vertical direction with a
scaling factor exceeding 1.0. In this case, the resulting scaled image
contained wrong gray values in the right half of the image. This
problem has been fixed.
-
If a Qt application using OpenGL was
executed before HDevelop was started, HDevelop freezed on Linux/UNIX systems while it tried to open a
Graphics Window. Only applications linked to specific 3.x versions of
Qt caused this behavior. This problem has been fixed.
-
HALCON no longer includes winsock.h by
default because this created the problem that applications that wanted
to use winsock2.h had to include winsock2.h before the HALCON header
files.
- HALCON windows of window type
'pixmap' sometimes displayed images incompletely, i.e., the
rightmost column of the image was not displayed at all. As a
consequence, in HDevelop version 8.0 color images were also displayed
incompletely in the Variable View. This problem has been fixed.
-
When running Standard HALCON in multiple
threads in parallel, a thread might have hung up in very rare
cases. This problem has been fixed.
-
Parallel HALCON returned an error ("wrong
number of control parameters") when using automatic and manual
parallelization concurrently. This problem has been fixed.
Manuals:
-
The Solution Guide I (Basics) is available in a new
edition. The new chapter
'Classification' shows how to use HALCON's classification
operators for different classification tasks. Furthermore, the
chapter '3D Matching' has been extended to facilitate setting the
reference pose.
-
The Solution Guide II-F on 3D Machine Vision
is available in a new edition. The chapter 'Robot Vision'
now contains more information about using the calibration
data, in particular for grasping objects with a moving
camera system.
-
The Installation Guide is available in a new edition. In
particular, it describes how to upgrade floating licenses for
8.0.1. Additionally, the part about troubleshooting has been extended,
e.g., for license errors that can occur with floating dongle licenses.
-
The Programmer's Guide is available in a new edition. The part
on HDevEngine has been extended. In particular, it now describes how
to use Parallel HDevEngine to speed up
applications by executing procedures in parallel by multiple
threads. Besides, it now explains how to access program variables and
how to execute local procedures. Furthermore, it describes the basic
way of developing applications with HDevEngine, e.g., when to execute
programs and when to execute (local or external) procedures.
In the part on HALCON/C++, code examples have been adapted to use the
new bar code reader of HALCON 8.0.
- The reference manual entry on add_noise_distribution has been extended. It
now describes the meaning of the values in the tuple that defines the
distribution.
-
The reference manual entry on adjust_mosaic_images has been extended. It
now contains more details on the algorithms used and provides some
recommendations for applications.
-
The reference manual entry on partition_dynamic has been rewritten. It now
describes the determination of the positions where the input region
is partitioned in more detail.
-
The reference manual entry on read_object_model_3d_dxf has been extended. It
now describes a way to create a suitable DXF file.
-
The reference manual entries on set_spy
and get_spy listed two control modes for
the parameter Class that were not supported: 'output_gray_window'
and 'output_region_window'. These entries have been removed from the
documentation.
-
The reference manual entries of sfs_mod_lr, sfs_orig_lr, sfs_pentland, and phot_stereo stated the obsolete restriction
that the input images must be square and that their dimensions must be
powers of two. These entries were corrected.
- The reference manual entry on tuple_select_range has been adapted to
the changes of the operator.
-
Bug Fixes:
-
The operators ChangeRadialDistortionCamPar, SmoothFunct1DMean, SmoothFunct1DGauss, SampleFunct1D, GetRectanglePose, VectorToRelPose, MatchRelPoseRansac, TupleMin, TupleMax, and ReceiveTuple did not work properly via
HALCON/.NET. This problem has been fixed.
-
A few operators can return empty tuples even when a single value API variant is used. This case was
not handled correctly and could have caused a crash. This problem has
been fixed.
-
Single value API style class members for
HALCON operators with output parameters of ambiguous type returned
corrupt values when used in situations returning an inappropriate
type. Now, an exception is raised instead.
-
Speed-Up and Enhancements:
-
The HDevEngine is now reentrant. Thus it is possible to execute
multiple HDevelop programs and/or procedures in parallel taking advantage of a multi-processor system. The new C# example
programs MultiThreading and MultiThreadingTwoWindows in the directory
examples/hdevengine/c# show how to speed up applications by letting two
threads execute the same procedure or different procedures,
respectively, in parallel. The Programmer's Guide contains additional information, in
particular for HDevEngine/C++.
-
Accessing control variables within
expressions became faster in HDevelop and the HDevEngine.
-
Bug Fixes:
-
If a program was loaded into HDevEngine,
this program was not unloaded if a new program was loaded with
LoadProgram or if the HDevEngine instance was destroyed. The
consequences were that the memory used by the first program was not
freed and that the local procedures of the first program hid
procedures with the same names in the second program. This problem
has been fixed.
-
Executing dev_open_window via
HDevEngine/.NET could have caused a crash or unpredictable
behavior. This problem has been fixed.
-
Using string parameters via
HDevEngine/.NET caused a memory leak. This problem has been fixed.
-
Examples:
-
The new examples cpp/source/exec_procedures.cpp,
c#/ExecProcedures, and
vb.net/ExecProcedures in
examples/hdevengine show how to execute multiple
local and external procedures.
-
The examples cpp/source/exec_program.cpp,
c#/ExecProgram, and vb.net/ExecProgram in
examples/hdevengine now also show how to access the
final state of program variables.
-
The C++ example implementation of HDevelop's internal display
operators has been moved from
examples/hdevengine/cpp/source/exec_program.cpp to a
separate file (my_hdevoperatorimpl.cpp)
so that it can be included more easily by multiple
applications.
-
The examples cpp/source/exec_program.cpp,
c#/ExecExtProc, and vb.net/ExecExtProc in
examples/hdevengine contained memory leaks. These
problems have been fixed.
-
The latest information about new extensions and newly supported
image acquisition devices can be found on MVTec's web
server.
-
Modified Image Acquisition Interfaces:
-
Examples:
-
The following examples in solution_guide/images_acquisition replace
examples that worked similar but used different image acquisition
interfaces:
-
error_handling_timeout_leutron.dev (replaces
error_handling_timeout_picport.dev)
- first_example_acquisition_falcon.dev (replaces
first_example_acquisition_ids.dev)
- info_framegrabber_falcon.dev (replaces info_framegrabber_ids.dev)
- real_time_grabbing_falcon.dev (replaces real_time_grabbing_ids.dev)
- volatile_grabbing_falcon.dev (replaces volatile_grabbing_ids.dev)
-
The following examples in hdevelop/Image/Acquisition show how to
perform image acquisition with the newly supported image acquisition
interfaces RangerC, RangerE, and mEnableIV:
-
rangerc_components.dev,
rangerc_parameters.dev, and
rangerc_simple.dev,
-
rangere_components.dev,
rangere_parameters.dev, and
rangere_simple.dev,
-
menable4.dev,
menable4_continuous.dev,
menable4_crop.dev,
menable4_parameters.dev,
menable4_shaftencoder.dev, and
menable4_simple.dev.
-
The new example hdevelop/Image/Acquisition/tag_2cameras.dev shows how
to grab images from two Tattile TAG cameras.
-
In the procedure FGInfo of the example
code examples/ia_integration/hAcqTemplate.c for developing
a new image acquisition interface, the output parameter info was
not initialized to a valid string for the query FG_QUERY_FIELD.
This problem has been fixed.
-
Licensing:
-
HALCON now uses version 11.4.1 of the FLEXnet Publisher license manager software.
-
Installation:
-
Example Images:
-
The new example images images/panorama/sankt_martin_automatic_*.jp2
are used in the example that shows how images can be adjusted
radiometrically to create
a mosaic image from images with different exposure and white balance
settings.
-
The new example images images/barcode/rss14_stacked/rss14_stacked_01
and images/barcode/rss14_stacked/rss14_stacked_02 are used in the
example for the bar code reader with the bar code type RSS-14 Stacked.
-
The new example images
images/barcode/rss14_stacked_omnidir/rss14_stacked_omnidir_01 and
images/barcode/rss14_stacked_omnidir/rss14_stacked_omnidir_02 are used
in the example for the bar code reader with the bar code type RSS-14 Stacked Omnidirectional.
-
The new example images
images/barcode/rssexpanded_stacked/rssexpanded_stacked_01 and
images/barcode/rssexpanded_stacked/rssexpanded_stacked_02 are used in
the example for the bar code reader with the bar code type RSS Expanded Stacked .
-
The new example image images/barcode/code128/code128_max_diff_orient
is used in the example illustrating the new parameter 'max_diff_orient' for the bar
code reader.
|
|