Release Notes: Zebra Aurora™ Vision Studio 5.2
2022.06.30
Adaptive Vision is now Zebra Aurora™ Vision
Last May, Zebra Technologies shared the news of its acquisition of Adaptive Vision. Since then we have been busy integrating the expert team at Adaptive Vision, and the software products you’re used to, into Zebra. While the name may change, customers will continue to receive the same focus on product improvement, service and support that has led them to put their trust in Adaptive Vision.
As of 25 May, 2022 the name of Adaptive Vision Studio has changed to Zebra Aurora™ Vision Studio.
If you have any questions about the rebranding or new product names, please contact us at av-office@zebra.com
Offline Mode
- New: A new button was added to the main
command bar for switching between "Online" and "Offline" modes of
program execution. The new Offline mode disables I/O filters from the
ACQUIRE section and enables using data from the Filmstrip control
instead.
-
- NOTE: The EnumerateImages filter, which was
often used to load images one by one from disk, is now becoming
obsolete.
- New: There is a new Filmstrip control that
contains snapshots of acquired data - usually images, but any other
type of data is possible. This control has several purposes:
-
- Filmstrip provides snapshots of data for use in
the Offline Mode, replacing the need to execute the I/O filters in
the ACQUIRE section.
- Filmstrip provides an easy access to image
datasets stored on disk, replacing the need to use EnumerateImages
tool.
- Filmstrip provides an easy way to manage test
cases for your application, facilitating Test Driven
Development.
- Note: When you add images (or any other
data) to Filmstrip, no files are copied, but only file paths are
stored. This is the responsibility of the user to manage
directories with images on disk.
- Note: Filmstrip data is organized into
"Workspaces", which then divide into "Datasets", which in turn
divide into "Channels". Channels are useful e.g. in multi-camera
systems or when there is any other data associated with the
acquired images (e.g. timestamps).
- Note: Filmstrip data, including
Workspaces and Datasets, do not belong to any project. They may be
shared by multiple projects. On the other hand, in any project
configuration it is remembered which Workspace it requires. When
you open a project, Studio will attempt to switch to its required
Workspace.
- Note: Data can be read from the
Filmstrip control in two ways: (1) with
"ReadFilmstrip:<channel-name>" filter (will work only in the
Offline mode), or (2) by binding an output of an I/O filter with a
Filmstrip channel (will work differently in Online and Offline
modes).
Deep Learning
- New: New filters were added for unloading
deep learning models. This is useful when your application allows for
using multiple models interchangeably.
- New: It is now possible to use multiple GPU
cards for inference. Deployment parameters now not only allow for
choosing between CPU and GPU, but also include a device index. This may
be especially useful in multi-threaded applications when different
threads may use different GPU cards to significantly improve overall
inference performance.
- New: Anomaly Detection tools now come with a
much more accurate test metrics. Up to the version 5.1 we only
supported per-image classification metrics, which tends to be quite
inaccurate. Now, it is possible to mark regions of anomalies and
calculate metrics per-region. More specifically, we measure Recall
per-region, while Precision is measured per-pixel (on GOOD images only)
and normalized to deal with unbalanced Good vs Bad classes.
- New: Deep Learning: Locate Rectangles algorithm has been added.
- New: The DL_DetectAnomalies2 tool received a new operation mode, "Texture",
which is good for these projects, where the applied anomaly model is the same at every image location.
- New: New tools were added to Anomaly Detection plugins which allows to apply new statistics based on heatmap quality.
- New: Deep Learning now allows to version models. Models now can be compared and restored.
- New: Deep learning inference tools can now be interrupted with the "Work Cancelation" mechanism from Studio.
This way, if a tool takes dosens of seconds to complete, the user may force its completion by simply pressing the "Stop" button on the main toolbar.
- Changed: The output of DL_LocateObjects was
changed. It now uses the same type of data as the traditional
LocateObjects tools. This simplifies experimentation when you are
trying to compare deep learning and traditional object location
methods.
- Changed: The DL_DetectAnomalies1 tool does not have the "Approach" setting anymore.
After extensive testing we found that the improved "Denoising" approach was overperforming other methods in vast majority
of cases, so there was no point to keep the option to change to the legacy methods.
- Changed: Underperforming Detect Anomalies algorithms were removed from the
Deep Learning Editor but all existing models can still be used.
- Improved: Several tweaks in network
architectures result in ~15% lower execution time and improved accuracy
of DL_DetectFeatures and DL_LocatePoints.
- Improved: Improved: Folders with models no longer contain copies of images.
- Fixed: Deep Learning: Fixed a problem, which could occur after training when using relative paths.
- Fixed: Fixed problem with mixed Train and Test sets values in ROC graph.
Deep Learning - OCR
- New: A new "Fast" variant of the DL-OCR tool
has been added. It works 3 times faster with only a minor drop in
overall accuracy. However, it works with a limited range of character
sizes (±15%).
- Improved: The accuracy of the standard OCR
model has increased from 95.1 to 98.8% on our internal test set of 572
test images (including very difficult ones).
- Improved: The standard OCR model has been
significantly improved for recognition of mixed small and capital
letters (kerning).
- New: The OCR tool has a new input,
inContrastThreshold, that allows for effective removal of False
Positives that have low or opposite contrast.
- New: The OCR tools is now available and well
optimized for ARM.
- New: Deep Learning: ReadCharacters model can now be loaded from the file.
- Changed: The DL_ReadCharacters.outMasks output type has been changed from ImageArray to RegionArray.
- Improved: The postprocessing tool, MergeCharactersIntoLines, has been improved in terms of its accuracy.
Also, it now sorts the output lines better.
IDE
- New: The style of drawing ROI, scan paths
and fitting fields have been changed - as these elements are not really
computed, but defined by the user, their visualization should not
interfere with inspection results. Thus, we are now drawing these
without colors and fill, but with gray dotted lines.
- New: User Types counter was added to Project Explorer Tree.
- New: It is now possible to iterate program in Worker Tasks and HMI Event macrofilters.
- New: It is now easier to start only one Worker. Added a 'Program Run Mode' button on the top bar to help you work with a multi - threaded program.
- Improved: Images in the data preview windows
can now be moved away from the windows edges. This improves usability
when you want to zoom in and focus on pixels that are at the boundaries
of the image.
- Improved: Time Program Statistics are now calculated from all Workers.
- Improved: Slightly dimmed non-main worker name in macrofilters navigator.
- Improved: Better handling error messages in multi - worker programs.
- Fixed: Fixed missing "Move to..." option in Project Explorer.
- Fixed: Fixed problem with showing invalid scale in Profile preview.
- Fixed: Fixed the problem with a deadlock occurring while executing application in "Update each filter" mode.
- Fixed: Solved issue that lead to "startup application" list being displayed below the main window in Zebra Aurora™ Vision Studio Runtime, when WindowMode was set to FullScreenCenter/FullScreenStretch.
- New: User now can generate a basic WebHMI while exporting application to AVEXE. After that a simple HMI can be accessed trough HTTP page.
HMI
- New: Video2DBox HMI control can now show Heatmap type.
- New: Added HMI editor for EdgeModel2.
- New: Added HMI editor for Golden Template 2.
- New: A search tool has been added for HMI controls.
- New: HMI: New AccessLevel input of controls is showed when ProgressPanel is added to form.
- Improved: Performance of the HMI for large projects has been greatly improved.
- Fixed: Fixed problem with HMI Golden Template Editor updating Alignment too often when set dynamically.
New and improved filters
- New: Then interface of the ExtractBlobs
tools has been significantly revised.
- New: Three additional rotation-invariant
region features were added: RegionThickness, RegionComplexity and
RegionDispersion.
- New: Some directional region features were
also added: RegionSkewness, RegionSymmetricity, ...
- New: Two new filters were added: BottomHat
and TopHat for images and for regions.
- New: Added a new filter: FitSegmentToRegion.
- New: Added a new variant of the TrimSegment filter: ToPolygon.
- New: A new GoldenTemplate3D tool is ready
for applications of simultaneous 3D object detection (one) and
comparison against a template. Differences are considered defects.
- New: For those who want to analyse 3D points
clouds in a more advanced way, a set of new auxiliary filters was also
added: AdjustPointGrids3DGlobal, Points3DGridDistance, Point3DGridRMSE,
RemoveOutliersFromPoint3DGrid, VoxelizePoint3DGrid.
- New: Two new filters: AccessVector3D and MakeVector3D, were added.
- New: Rotate3D filters have a new _AroundSegment variant added.
- New: Loading hyperspectral TIFF images is now possible with LoadMultiplePagesTiffImage filter.
- Improved: New output outTransform was added to filters: RotatePoint3DGrid, RotatePoint3D, RotatePoint3DArray.
- Improved: Data Matrix code reader has been
improved in several details, based on experience from Zebra
Technologies, especially when working with very low contrast
codes.
- Improved: Data Matrix code reader can now
read codes with module size as low as 1.25 px (previously the minimum
was 2.5 px).
- Improved: Some TCP/IP filters got new input inSendWithoutDelay which disables Nagle's algorithm which could lead to unnecessary delay.
- Improved: The execution time for the RescalePath and RotatePath filters has been significantly reduced.
- Improved: ImageHistogram works much faster now for images with constant color.
- Improved: Improved performance of ResizeImage_Flex.
- Improved: Filter JoinImageTiles can now joint tiles with the different sizes
- Improved: Execute filter now has option to WaitForExit or not (StartOnly).
- Improved: Edge-based Template Matching has
been significantly improved, including:
-
- Much faster model creation, especially when
template scaling is enabled.
- Optimized model searching for the case of very
large templates (like 500x500 px) - when used together with
scaling, the speed up can be huge.
- Improved match score calculation that results
in overall higher scores and faster execution.
- Instead of one "Ignore" mode for edge polarity,
there are now two "IgnoreLocally" and "IgnoreGlobally". The latter
comes with significant speed improvement.
- The "diagEdges" output was promoted from
diagnostic to normal ("outEdges"), so that it can be used in
runtime too (e.g. for visualization).
- Improved: Similar optimization techniques were also applied to Gray-based Template Matching.
New filter LocateSingleObject_NCC2 is available.
- Fixed: Fixed ScanEdges3D outputs while using alignment.
Zebra Aurora™ Vision Studio for Linux and ARM
- New: Zebra Aurora™ Vision Studio Runtime now
works on Linux and embedded systems. This means that programs created
in the well-known graphical environment of Zebra Aurora™ Vision Studio can
now be run on smart cameras based on ARM processors.
- New: The GigE Vision and GenICam functions are now
also available also under Linux (should work on ARM too, but for now comes with
no guarantee).
SMART Edition
- New: The content of Toolbox has been reduced
to ready-made tools and basic other filters which do not require
in-depth understanding of computer vision.
- New: Auto-previews became default for the
SMART edition. With this, it is no longer necessary to drag and drop
data to previews manually, but - instead - the previews are
automatically populated with all important data from the current
macrofilter.
- New: When a new "Auto-connect" mode is
turned on, every time you add a new filter to the program, its main
inputs get automatically connected with the nearest suitable data
source (usually an image or a coordinate system).
- New: It is now possible to connect property outputs
(e.g. outPoint.X) directly through the Properties Control, without the need to
expose the property on the source filter. This simplifies the view in the
Program Editor as the filters now have significantly fewer output ports exposed.
- New: Some frequently used property outputs, like outBlobs.Size,
are now always available in the Results Control, so that the user can set appropriate
Limits without the need to expose that output on the filter in the Program Editor.
- Improved: The "out" prefix is now hidden in the Minimal program
view. Thanks to that, the filters become a bit more compact, improving readability.
Formulas
- New: The formula engine now supports matrix
and vector arithmetics:
-
- Matrices can be created in formulas
directly.
- It is possible to add, subtract and multiply
matrices.
- It is possible to multiply a matrix by a
scalar, Vector2D, Point2D, Vector3D or Point3D.
AVL
- Changed: AVL.NET now supports only .NET Framework 4.8 which can be downloaded here.
GenICam / GigE Vision
- New: Support for GenTL has been updated to version 1.6.
- New: [EXPERIMENTAL] GenICam File Access Control is now supported.
- New: Support for GigEVision 2.1 Multi-part Payload has been added (available
with GigEVision_GrabImage:MultiPart filter).
- New: Support for GigEVision stream multicasting has been added (available
to set up in the GigEVision Application Transport Settings).
- Improved: Added support for the "Not Yet Available" stream packet status
(for line-scal cameras; when supported by the camera, allows for the acquisition process to slow down
or stop mid-image).
- Improved: Added automatic stream network packet size negotiation
(in accordance with GigEVision 2.1 guidelines).
- New: [EXPERIMENTAL] Added support for "All-In" network transmission mode
(requires to be enabled in the GigEVision Application Transport Settings).
- New: [EXPERIMENTAL] Added support for JPEG image compression in the
video stream.
- New: The GigE Vision and GenICam functions are
now available also under Linux (should work on ARM too, but for now comes with no guarantee).
Other
- New: Euresys - added support for pixel format: Y10P.
- New: Added new OpenCV filters: cvReprojectImageTo3D, cvCalibrateHandEye,
cvCalibrateRobotWorldHandEye, cvProjectPoints.
- Improved: Improved error messages in the Studio for OpenCV edition.
- Improved: Added inRepeat input to Enumerate filters.
- Improved: BMP image files are now loaded up
to 5 times faster.
- Improved: New image/pixel formats available in the WebCamera_GrabImage filter.
- Improved: Support for Vimba SDK has been updated to version 4.2.
- Fixed: C++ Code Generator was omitting
calculation of filter's property outputs which were used only in the
FINALIZE section.
- Fixed: Library was crashing when run with
processors with more than 32 cores.
Release Notes: Adaptive Vision Studio 5.0 FINAL
2020.10.05
(This document summarizes changes that are coming with the final
release 5.0, which were not available in 5.0 BETA + GAMMA)
Simplified IDE
- Improved: A horizontal cursor has been added
to the Program Editor. It enable easy insertion of new elements, like
filters or formulas, at a specified place.
- Improved: Items in the Minimal Program View
are now more clearly numbered.
- Improved: Formulas can be created in an
"inline" style in the Minimal Program View (see item no 2 above).
- Here is how it looks now on the Tablets
example:

- Improved: Tool-related errors are now better
signaled in the Minimal Program View.
- New: Results control now supports limits for
String-typed data.
Deep Learning Add-on
- Changed: Minimum required version of nVidia
drivers is now 436.02. Older drivers will not work.
- Improved: New version of Detect Anomalies 1
tool makes significant progress in quality of detecting unknown
defects.
- Improved: Heatmaps in Detect Features,
Detect Anomalies 1 Local and Detect Anomalies 2 should be less
blocky.
- New: Finally, Segment Instances tools has
been implemented with WEAVER. This finished moving all our tools to the
high performance inference engine.
- New: It is now possible to perform
automatic labeling with partially trained neural networks. You
first train a model with a limited number of images and then you use
auto-marking to quickly prepare more training data. WARNING:
Automatically prepared training data must be carefully checked and
corrected as any mistakes in the training set may lead to poor quality
models.
- Improved: The article on Deep Learning in
the Machine Vision Guide has been significantly revised. See:
https://docs.adaptive-vision.com/current/avl/machine_vision_guide/DeepLearning.html
- Improved: Several details in the editor for
Locate Points tool have been refined for better UX.
- Improved: A "class stripe" was added - it is
an easier way to change classes while editing deep learning data.
Affected tool: Detect Features, Segment Instances, Locate Points.

- New: Our internal Grid Search functionality
has been published (as-is). After pressing Alt+F2 you get a window for
controlling possible ranges of training parameters. Then, your model
will be training with all different combinations, looking for the most
effective solution. This is useful when you can leave you training
process running for entire night, or better... entire weekend.

AVL.NET
- New: Method overloads were simplified.
Hardware support
- New: Support X-SIGHT smart cameras has been
added.
- Improved: Support for Spinnaker SDK from
FLIR has been updated.
- Improved: Support for GoSDK from LMI
Technologies has been updated to version 6.0.
- Improved: Support for Basler Pylon SKD has
been updated to version 6.1.0.
New and improved tools
- Improved: Several important improvements
were added to our Data Matrix reader. Our tests show that we outperform
key competitor's solution now with both performance and detection
rate.
- Improved: Reliability of QR Code reading has
been further improved.
- Changed: The way the
GetMultipleArrayElements tool works with inInvert=True was changed to a
more intuitive one.
- Improved: The SmoothProfile_Gauss_Mask
filters has been optimized with SSE and AVX.
- Improved: Shape Fitting tools got more
outlier suppression methods: TheilSen and Siegel. These methods had
been previously only available in FitLineToPoints.
- New: A new tool, SmoothImage_DirAndPresence,
introduces possibility to smooth results of the GradientDirAndPresence
tool. It was quite tricky as the range of possible values is
cyclic.
- New: Some new advanced 5x5-based methods
were implemented in BayerToRgb leading to less artifacts.
- Fixed: Several potential memory issues have
been fixed after running an address sanitizer.
- Changed: LoadImage and similar functions are
no longer marked as "I/O". This makes it possible to change the inFile
parameter and have the object instantly re-loaded when running a
program in interactive way. This will also enable running these filters
in OFFLINE mode which is coming in version 5.1.
Other
- New: C++ Code Generation has been
implemented for programs that include sections (new in 5.0).
- Improved: Tables of Content and tool tables
have been re-designed for easier browsing. See:
-
- New: Additional properties have been added
for filter outputs:
-
- Segment2D.Direction
- Segment2D.Center
- Line2D.Orientation
- Vector2D.Direction
- Path.Length
Formulas:
- New: A log2 function has been added
(logarithm with base 2).
- New: There are several new functions and
properties in formulas:
-
- sequence - for generating arrays of integer or
real numbers
- crop - for limiting arrays to a given
range
- pick - for selecting every n'th element in an
array
- Path constructor taking a PointArray as an
input
- Path[] - for accessing individual
points
- Path.Segments - returns an array of segments
from a path
- New: Geometrical functions in formulas are
now available also for 3D types of data.
Release Notes: Adaptive Vision Studio 5.0 GAMMA
2020.08.06
(This document summarizes changes that are coming with 5.0 GAMMA,
which were not available in 5.0 BETA)
Simplified IDE
- Improved: In the Minimal program view, data
sources that are used somewhere are now marked with a dark outline.
This improves the clarity of the program and makes it easier to notice
some filter outputs that were disconnected accidentally.
- Improved: Information contained in the
Program Statistics window has been extended to take program sections
into account.
- Improved: Checking of so called "array
synchronization" has been disabled for the connections outgoing from
formulas because they often caused False Positive warnings.
Deep Learning Add-on
- New: It is now possible to select the
required target device (CPU or CUDA) directly in the tools'
parameters.
- New: Deep learning editors now have an
option to import annotation data created in the Zillin.io service.
- New: Adaptive Vision Library now
includes functions for parsing Well-known Text representation of
geometry (WKT). This may be useful when working with data exported from
Zillin.
- Changed: Names of deep learning tools have
been simplified using the following pattern:
-
- DeepLearning_DetectFeatures →
DL_DetectFeatures
- DeepLearning_DetectAnomalies →
DL_DetectAnomalies
- ...
- Improved: Due to performance reasons we now
clearly separate two phases of deep learning tools:
-
- Deployment - firstly, the
DL_DetectFeatures_Deploy (etc.) filter should be placed in the
INITIALIZE section. This filter loads a model from disk and places
it on the target device in a form that is dynamically optimized for
that specific device. Execution of this filter may take up to
several seconds.
- Inference - next, the DL_DetectFeatures (etc.)
filter, which quickly calculates results for a given input image,
has to be placed in the PROCESS section.
- NOTE: It is still possible to use the inference
filter only, but then deployment will be done in the first
iteration causing a significant lag.
AVL.NET
- New: A new designer control for the Golden
Template method has been added.
- Improved: View2DBox control has been
extended with a more natural way of working with geometric
primitives.
Hardware support
- New: I/O ports of X-SIGHT industrial
computers are now supported.
New and improved tools
- New: We have added a new article to the
documentation containing a comprehensive summary of corresponding
functions between OpenCV, Halcon and AVL. This summary may be very
helpful when porting a project from one library to another:
https://docs.adaptive-vision.com/avl/technical_issues/LibrariesComparison.html
- New: For the tools in which there was an
option to normalize angles to 0-180 or 0-360 degrees, now also 0-90
degrees is possible.
- New: A new filter has been added,
CreatePathRegion.
- New: Added new advanced methods for Image
Inpainting.
- New: Added new camera calibration
options, which are more suitable for line-scan cameras.
- Changed: 1D Edge Detection and Shape Fitting
filters' performance characteristics have been significantly adjusted.
In the previous versions, these filters were precomputing pixel
sampling maps in the first iteration. Now, they directly scan pixels in
each iteration. This is faster when we use local coordinate systems but
~20% slower when the scan path or the fitting field does not change
between iterations. On the C++ level the functions did not change, but
a new set of functions has been added: ScanSingleEdge_Direct,
FitSegmentToEdges_Direct etc.
- Improved: Speed of reading QR Codes from
high-resolution images has been significantly increased.
- Improved: Reliability of QR Code reading has
been improved and further improvements are coming...
- Improved: CreatePathBorderRegion filter has
been improved - the resulting regions are now guaranteed to be
continuous and fixed width.
- Improved: Additional improvements have been
implemented in image downsampling filters, giving slightly lower pixel
value rounding errors.
Other
- Fixed:
Input frames queue in GigEVision image acquisition filters was actually
1 frame larger than set by the inInputQueueSize parameter. Existing
applications requiring reliable video acquisition might need adjustment
of the inInputQueueSize parameter.
- Improved: Selecting of filters in the
Minimal view has been improved, especially when they contain diagnostic
outputs.
- Fixed: Numerous issues in the new formula
editor have been fixed.
Release Notes: Adaptive Vision Studio 5.0
2020.05.04
HMI Events
- New: It is now possible to create separate
sub-programs that will be executed when a specific event occurs in the
HMI. These sub-programs are called "event handlers". Full details are
included in the documentation, below are the quick notes only:
-
- Event handlers run in parallel with the main
program loop.
- Communication between event handlers and the
main program loop can be performed through Global Parameters or
Global Queues.
- Typical events are: ImpulseButton.Click,
VideoBox.MouseMove, TrackBar.ValueChanged.
- New: There is a new button in the Properties
window that switches it from properties to event configuration:

-
Deprecated: Outputs of HMI controls that indicated events with
boolean or conditional data are no longer recommended. Use real
events instead.
4.12 |
5.0 |

|
 |
Parallel Tasks
- New: It is now possible to create multiple
sub-programs that run in parallel. These sub-programs are called
"Worker Tasks".
-
- "Main" is the default Worker Task.
- When you have multiple enabled Worker Tasks,
they will start running in parallel when you click the "Run (F5)"
button (
). To run only one selected task
click the "Run Single Worker (Ctrl+F6)" button (
).
- It is not possible to create new parallel tasks
dynamically. All parallel tasks are create when the program
starts.
- New: The combo-box in the main toolbar now
selects one Worker Task, which execution we will be controlling and
debugging. The other workers will run in parallel, but cannot be paused
or executed step-by-step.

- Improved: The TCP/IP toolset has been
adapted for possible multi-threaded work.
- Improved: The "Third Party" image
acquisition toolset was marked as single-thread only. For
multiple-thread image acquisition we recommend GigE Vision and GenICam
tools which are fully thread-safe.
- New: It is now possible to use
GigEVision_GrabImage filter in one Parallel Task and invoke
GigeVision_ExecuteCommand in an event handler to issue a software
trigger. This style of programming opens up many new options and
broadens the scope of potential applications.
- New: Besides Global Parameters, Queues are
also available for use now. A queue extends a global parameter by
buffering multiple elements between a producer and a consumer threads.
You can put elements to a queue in one worker task and remove them in
another worker task. For example, in one task you may generate
candidate objects for inspection and in another task you may process
these candidates one by one. These two things will run in parallel (as
a pipeline).
- Note: You will need a multi-threaded runtime
license to use multiple Worker Tasks with data analysis tools. In order
to run an unlimited number of threads, you will need to purchase a
license for 4,8 or 10 core CPU. If you only use other Worker Tasks for
HMI Events or for I/O communication, a basic runtime license should be
sufficient.
BETA VERSION: Exception handling in multiple Worker Tasks is
not functional yet.
Program Sections
- New: The Program Editor may be now divided
into four sections for any Task macrofilter:
-
- INITIALIZE - intended for filters, which will
be executed only once, before the main loop.
- ACQUIRE - this is a place for image (data)
acquisition filters; loop generators.
- PROCESS - intended for the data processing
tools, more typically ones that take an image and calculate the
inspection result.
- FINALIZE - this section is executed once, after
the main loop is finished; most typically we close network
connections or save settings to a file here.
- Deprecated: There is no more need to create
separate macrofilters for Initialize and MainLoop (as was earlier a
recommended idiom).
- New: Step and Variant Step macrofilters can
also have sections, but these are limited to INITIALIZE and PROCESS.
The INITIALIZE section defined here will be executed right after
initialization of the containing Task macrofilter.
- Improved: Thanks to sections, many
applications that required macrofilters in the past now can be
streamlined into a one-screen program.
- Improved: Thanks to sections, we can
preserve outputs of filters after the last iteration. No more
disappearing results when the program is finished.
- New: When loading an old program, Studio
will ask the user to choose or reject automatic conversion to sections.
Note that this will often give only partial results.
- Improved: With the sections feature
simplifying the application structure, the notion of a "program
iteration" has been refined. Now, an iteration of the program is always
the iteration of its top-level task. This impacts:
-
- the behavior of the "Iterate (F6)" button.
- the calculation of "iterations per second" on
the status bar.
- the way the Pause button works in the runtime
application (now it pauses after a full iteration is completed and
not in a random place).
- Coming in 5.1: "Offline mode", in which the
outputs of the ACQUIRE section will be replaced with an Image List /
Filmstrip window. This will simplify working with the same project on
the production site and during development/testing. Currently, we still
recommend having two different programs for this purpose, which use the
same inspection sub-programs.
Simplified IDE
- New: Minimal View. We have completely
re-designed the program editor for easy use in basic applications.
Connections are hidden, but many programs can be created in a single
view, without macrofilters. This simplifies application development,
especially directly on the production and by the end users.
-
- Note: We do not recommend Minimal
View for large or complicated projects. The Compact view is still
preferable for advanced users.
- Changed: To allow switching between
Minimal and Compact views, we have changed the way output labels
are displayed in the Compact view. Now they are directly in the
place of the filter's output (in 4.12 they were displayed as an
additional element on a side of the filter).
- Improved: The "Results" window has been
re-defined. In version 4.12 it was highly hierarchical. Now it displays
a more flat list of filter outputs for easier operation. In short, the
elements of the Result control correspond closely to visible outputs of
the selected filter, including labeled outputs. (*)
- Changed: Adaptive Vision Studio Smart is now
intended to be used in Minimal Program View and with the Results
control for setting Pass/Fail limits.
- Improved: In the previous versions we had
two controls for selecting filters: Filter Catalog and Toolbox. This
was sometimes misleading. We have merged the two controls into a single
one. If you want to get back the old Filter Catalog view, click this
icon:

- Improved: All message boxes in the
application have been thoroughly revised for clarity and
consistency.
- Improved: Many data types can be displayed
in both textual and graphical way. If the choice it not obvious the
user is now asked to decide.
- Improved: All example programs were revised.
In many cases we got rid of subprograms for the sake of simplicity that
is now possible with sections.
- Improved: The Search tool (for finding
filters in a program) has been re-implemented. Now you can easily find
multiple instances and browse though them using a "Find Results"
window.

Powerful formulas
- New: The new text editor for formulas brings
the formulas editing experience much closer to editing code:
-
- To create a new expression just press Enter and
type "outName = ..." instead of clicking "Add output...".
- You can define the type of an output within the
text editor using the following syntax: "outValue : Integer =
...".
- You can even define data labels this way. Just
skip the "out" prefix.
- New: There is a new powerful mechanism for
suggesting function and parameter names.
- Changed: From now on, pressing Enter will
always create a new line in a formula. Use Ctrl+Enter or Esc to finish
editing.
- New: When using labels, you can directly
refer to them in your expressions. There is no need to create a formula
input for them anymore.
- New: It is now possible to use array
expressions in formulas (this is sometimes also referred to as
broadcasting). It makes it possible to use simple operators to
perform operations on entire arrays, element by element. You can
optionally add "[]" to arrays to resolve any ambiguities. For
example:
-
- inValues + 1 // adds one to each element of the
array inValue
- count(inValues == 5) // finds the number of
elements equal to five
- all(inValues1[] < inValues2[]) // checks if
all corresponding elements in inValue1 are lower than in
inValue2
- New: A lot of new functions are
available:
-
- min, max for 3 and 4 arguments
- flatten - transforms a two-dimensional array
into a flat, one-dimensional one (concatenates the elements one
after another)
- removeNils - removes all Nil elements from an
array
- select - creates a sub-array from elements
fulfilling some condition (use it instead of Classify...
filters)
- findFirst, findLast, findAll - for searching in
arrays
- indexOfMin, indexOfMax - returning the index of
the smallest or the biggest element
- minElement, maxElement - returning the smallest
or the biggest element
- New: It is also possible to perform basic
geometrical calculations inside a formula now:
-
- distance - measures the distance between points
or between a point and a line
- angleNorm, angleDiff, angleTurn - for easy
operations on angles (modulo arithmetic)
- project - point on line projection
- area - returns the area of different
geometrical primitives
- normalize - returns a vector with the same
direction but with length equal to one
- dot - calculates the dot product of two
vectors
- New: There are also several new data
properties: Segment.Direction, Segment.Length, Segment.Center,
Line2D.Orientation, Vector2D.Length, Vector2D.Direction.
- New: There is a new "if-then-elif-else"
syntax for conditional expressions. It may be more preferable than the
C-style "?:" operator.
- Changed:
.Length property for arrays has been changed to .Count. Manual update
will be required. This was necessary to avoid ambiguity with a new
property Segment2D.Length.
Library for modern C++
- Improved: We now use C++14 in public
headers, thus dropping support for Microsoft Visual Studio 2013.
Versions 2015 and later are supported.
- Improved: The new version of our library is
based on modern C++. We use the following features:
-
- noexcept / override / final - for our class
methods, where appropriate
- move semantics in all our containers
- std::thread for implementation of Parallel
Tasks
- Note: We use non-standard atl::Array
(instead of std::vector), atl::String (instead of std::wstring) and
atl::Optional/Conditional (instead of std::optional) classes due to
the follwing reasons: (a) binary compatibility between platforms as
well as between C++ and C# code, including serialization to files,
(b) custom memory management with optimization of raw memory buffer
re-use, (c) std::optional cannot hold references, (d) std::wstring
does not have a fixed character type.
Deep Learning Add-on
- New: We added a Heatmap type which makes
visualization much easier. Before we used Images for that, but now the
Heatmap type also remembers its key thresholds making the visualzation
very straigthforward. You do not need to use the VisualizeHeatmap
filter anymore.
- New: All anomaly detection tools are now
supported on the WEAVER inference
engine. Speed-up factors as compared to version 4.12 are:
-
- CPU
-
- DA1/global: 6.5x
- DA1/featurewise: 5.2x
- DA2: 20x
- GPU
-
- DA1/global: 3.1x
- DA1/featureswise: 11x
- DA2: 14x
- New: Instance segmentation tools are now
supported on the WEAVER inference
engine (NOT AVAILBLE IN BETA VERSION).
- Improved: We optimized the WEAVER more on the RTX series of nVidia GPU.
Typical speed-up factor on this platform is 1.2x as compared to version
4.12.
- Improved: We finished optimizeation of the
CPU back-end of WEAVER. Comparing to
the version 4.12 (the first release of WEAVER), the speed-up factors
are:
-
- Feature Detection: 1.7x
- Point Location: 1.7x
- Object Classification: 1.5x
- Changed: Model editors are now being
installed with Deep Learning Add-on only (before they were also
installed with Studio and Library installers).
- Changed: The list of images is now displayed
on the left side of the editor window. This follow the general UX
principle that GUI elements should be put in order from left to right
and from top to bottom in accordance to how they are typically
used.
- Changed: Set Minimum Feature Size in Detect
Anomalies 2 to 32. Executing Detect Anomalies 2 models with lower
Feature Size is not supported.
New and improved tools
- New: It is now possible to compensate for
the thickness of a calibration target in Camera Calibration.
- New: The image drawing tools were revised:
now, there are three variants: _SingleColor, _TwoColors, _MultiColor.
The new multi-color variant is especially useful for drawing results of
detection of multiple classes of objects.
- New: A new filter, DrawCrosshairs, is good
for drawing the results of Point Location tools.
- New: For subpixel-precise template matching
there is now a set of revised tools, EnhanceObjectMatch.
- New: Sharr operator has been added to
gradient computing filters.
- New: New filters: CreatePathRegion,
CropImageToQuadrangle and CropRegionToQuadrangle.
- New: More advanced image in-painting methods
were added. See a new filter: InpaintImage_Telea.
- Improved: Many filters were further
optimized, e.g. RegionUnion_OfArray, SmoothProfile_Gauss.
- Improved: The Golden Template 2 filter is
now the default for comparing images against a predefined
template.
Improved code reading
- Improved: We are releasing new highly
optimized reader for Data Matrix codes. Its performance and reliability
puts it among the top players on the market.
- Improved: QR Code readers have been
optimized, giving typically 2-3 times better execution times.
ShapeRegion
- Changed: ShapeRegion type has been
re-designed. In 4.12 it could be a rectangle or a circle. Now it is a
union of Rectangle, Circle, Polygon or (any) Region.
- Changed: CheckPresence filters now use the
new ShapeRegion type on the inRoi input.
- Changed: Filters that use the new
ShapeRegion type instead of Region are: ExtractBlobs, LocateObjects
(for inSearchRegion), InpaintImage.
-- This highly improves user-experience, especially when a ROI needs to
be adjusted at production.
-- One can now use the new ShapeRegion type everywhere by adding
CreateShapeRegionRegion.
- Changed:
If you were using ShapeRegionEditor as an HMI Control, you need to
manually replace it with ShapeRegionDeprecated.
- Changed: To avoid possible confusion we also
renamed filters working with closed paths like ShapeArea,
ShapeElongation etc.. Now these are PolygonArea, PolygonElongation
etc.
Histograms
- Changed: Histograms are now represented with
64-bit floating point numbers (WAS: integers). Therefore, it is
possible to use histograms also as general probability density
distributions, which was not possible in previous versions. Each
histogram is represented by DomainStart (Real) + BinSize (Real) +
BinCount (Integer) + the bins (DoubleArray).
- Improved: Histograms now support cyclic
domains, e.g. when considering a histogram of directions (0..360
degrees), the value 0 and the value 360 are considered the same. This
is important, for example, when smoothing a histogram.
Other
- New: Modules of macrofilters (.AVLIB) can
now be encrypted. Thanks to this, you can implement subprograms and
share them with other people (usually the customers) without being
afraid of revealing your know-how.
Licensing
- New: At quantities of 25+, runtime licenses
for both Studio and Library are now modular. If you need 1 or 2 modules
only, you can get a better price.
- New: The list of modules actually used in
the current project can be found in the Statistics window.
- New: The module of each tool is now clearly
displayed in documentation, and also when selecting a tool from the
Toolbox:

- New: Now both Studio and Library Runtime are
licensed by default for one process and according to the number of
physical processor cores (hyper-threading does not count).
Release Notes: Adaptive Vision Studio 4.9
2018.04.24
HMI Controls in Studio and in AVL.NET
- New: Our special HMI controls, such as
ZoomingVideoBox, AnalogIndicator or OnOffButton, are now available for
use with AVL.NET. It becomes more straightforward to port an application
from Studio to a C# project.
- Changed: Mouse Up and Down events have been
modified in VideoBox controls to better correspond to standard Windows
controls.
- New: There are new outputs in the
ZoomingVideoBox control: outLeftClick, outMouseMove.
- New: User Types became supported in .NET
Macrofilter Interfaces.
- New: DLL files of .NET Macrofilter Interfaces
can now be versioned and signed. This makes it possible to use them in
signed applications.
3D Machine Vision
- New: Support for Gocator's "Sections" have
been added.
- New: Shape fitting filters, well known from
our 2D library, are now also available in 3D.
- New: Profile data can now include information
about offset and scale on the X axis. This makes it possible to represent
3D scans in real-world units.
- Changed: Gocator_GrabResampledProfile now
returns a Profile instead of Point2DArray.
- New: New basic filters: RemoveInvalidPoints3D,
CropSurfaceByPlaneProximity, CropSurfaceByNeighborsProximity,
GetSurfacePoint, GetSurfaceElement. (*)
- New: Point clouds can be loaded from .STL and
.PLY files. (*)
- New: 3D data previews can now be switched to
orthogonal projections. (*)
- New: Regions can be visualized on 3D data
previews as open-base prisms. (*)
- New: Paths can be visualized on 3D data
previews as curved vertical walls. (*)
- Improved: Toolbox structure has been revised
after we finished implementing all the basic 3D filters. (*)
- Changed: By default 3D data get colored along
the vertical axis (Y or Z depending on a setting).
Results window and inspection status
- New: There is a new window, Results, that
displays for filters seleted in the Program Editor:
-
- Name, Type and current Value,
- Limits, current Pass/Fail indications and
Pass/Fail statistic,
- Statistics such as: minimum, maximum, average,
median and scewness.
- New: Each filter's output, as well as the
filter itself, can now have a .Status property (Bool type) which
indicates the inspection result (Pass or Fail).
Regions of interest
- New: There is a new type of data, named
RegionOfInterest, which is an union of rectangle, circle, polygon and
region. It makes it easier to: (a) use geometrical primitives as
regions-of-interests (no need to use CreateRectangleRegion and similar
filters), (b) draw basic regions-of-interest in the editor, (c) handle
regions-of-interests in the HMI.
New and improved tools
- Improved: Image and region morphological
operations have been significantly speeded up.
- Improved: Some image drawing filtres have been
significantly speeded up.
- Changed: The filters for locating image local
extrema had several outputs. These outputs have been merged into
structures and now these filters have only one output.
- Fixed: GetArrayElement_OrNil filter was
throwing a DomainError in a scenario with inInvers=True instead of
returning a Nil value. (*)
- Changed: Some filter names appeared weird and
we changed them or made shorter:
-
- MergeWithDefault -> MergeDefault
- JoinArrays_OfArray -> FlattenArray
- JoinArrays_OfLoop -> AccumulateArray
- LastMultipleObjects -> AccumulateElements
- Fixed: CombineSpatialMaps was creating some
artifacts. Now it is all smooth. (*)
- Changed: Filters PointOnLineProjection and
similar have been renamed to ProjectPointOnLine (and similar) to keep
with general conventions.
- Improved: Our Data Matrix reader has been
extended with inContrastPerturbations parameter that allows for checking
different parameters for more reliable detection. (*)
- Improved: Long-running data matrix detection
can now be cancelled (in the development environment). (*)
- Improved: 2D Edge Detection filters have been
significantly optimized for UINT8 pixels.
- New: Dynamic thresholding is now possible also
with Median and Middle filtering (was: only with Mean).
- Improved: PCA filters have been revised. Now
we have three: (Create/Apply/Reverse)PCATransform.
- Improved: 2D Edge Detection filters have been
significantly speeded up and improved for noisy images.
- Improved: There is a new filter for easy
conversion from image to real distances: PixelToRealDistance. It supports
a constant bias as an additional parameter.
- Improved: The ProfileSections filter has got
new inputs for setting min/max gap or section widths.
- Improved: The ResizeImage filter has been
optimized for integer scaling factors.
GigE Vision 2.0
- New: Support for 64-bit Block Identification
Mode (Extended ID Mode).
- New: Support for new Extended Chunk Data
format.
- New: Support for Multi-zone Image format.
- New: Support for new stream packet Status
Codes and flags improving lost packets recovery process.
- New: Support for XML file Manifest Table.
Other
- Improved: Region, Path and Profile data are
now returned from filters without copying of the internal data buffers.
This optimizes performance and memory usage.
- Fixed: Adaptive Vision Executor does not
prevent Windows system shutdown anymore. (*)
- Fixed: User filters did not define NDEBUG
definition in the Release mode.
- New: User types can now be used in formula
blocks.
- Fixed: The documentation for AVL.NET was
generated incorrectly in some places resulting in mismatch between
entries and their descriptions.
- New: Visual Studio 2017 is now supported for
creating User Filters. (*)
- Improved: Adaptive Vision Library for Linux
has gone through a major revise. A number of compatibility problems with
various libraries and systems were solved. (*)
- New: Some additional types of data (Edge1D,
Stripe1D, Ridge1D, StringLabel) are supported in the View2DBox control.
(*)
- New: It is possible to display numerical
values with more than three decimal points.
- Improved: AVEXE files are now protected with a
stronger encryption algorithm.
Licensing
- New: It is now possible to have one license
with a "factor" number run multiple programs created with Adaptive Vision
Library.
- Changed: License names have been revised for
better clarity as follows:
-
- StudioProfessional (was: Professional)
- StudioRuntime (was: Runtime)
- StudioSmart (was: Smart)
- LibraryProfessional (was: Library)
- LibraryRuntime (was: LibraryRuntime)
- Improved: License keys based on computer-id
were redesigned for increased security.
- Improved: License keys based on computer-id
are now based on Base32 encoding, which is more human-friendly.
Hardware support
- New: Cameras from Thorlabs(R) are now
supported through the manufacturers SDK. (*)
- Improved: Support for PointGrey cameras
through the Spinnaker SDK has been updated. (*)
- Improved: Support for NET's iCube SDK has been
updated. (*)
- New: Support for Lumerena cameras has been
added.
- New: Support for HikVision cameras has been
added.
- New: Support for Ensenso 3D sensors has been
added.
- Fixed: There was a mismatch between RGB and
BGR color spaces in support for the Imaging Source cameras. (*)
Embedded
- New: Adaptive Vision Library (C++) is now
available for nVidia® Jetson platform and for the ARMv8a architecture in
general.
Deep Learning Add-on
- New: Added a new Network Type for Unsupervised
mode, named Texture, designed specially for detecting anomalies on
materials with repetitive pattern.
- New: There is a new tool,
DeepLearning_ClassifyObject, which analyses an entire image and decides
which type of an object there is.
- Changed: To avoid confusion with
classification, the DeepLearning_ClassifyFeatures fillter was renamed to
DeepLearning_DetectFeatures.
- New: It is possible to set elliptical Region
of Interest during training in Deep Learning Editor.
- Improved: The Training Progress window shows
more information and allows for better preview of the training
process.
- Improved: Training is almost fully
interruptible in the preparation phase.
- New: Chart on the Training Progress window
contains information about validation process from an already existing
model (if any).
- New: A newly trained model no longer
overwrites a previous model automatically. Now, the user has to decide
whether to save the new model or not. This decision can be made on the
basis of comparison of validation results with the previous ones (see
above).
- New: A mechanism for checking compatibility
with the version of Deep Learning Service was added. Using a too old
Adaptive Vision Studio or Deep Learning Service will result in an error
message.
- New: Added a new preprocessing operation:
downsampling. It shortens the execution time significantly.
- Improved: Training and classification using
Region of Interest is faster and leads to better results.
- Improved: Training in the Supervised mode with
multiple classes has been improved.
- Changed: Heatmaps from Deep Learning filters
always have one channel now.
- Changed: All samples in the Unsupervised use
the same Region of Interest (defined during training).
- Improved: The Unsupervised classification
gives results with much better quality. (*)
- Improved: Increased maximum size of image
(after downsampling) being able to process.
- Fixed: Handling file path and directories with
non-ASCII characters.
- Fixed: Running multiple Deep Learning filters
does not worsen performance anymore.
- Changed: Removed "Validation Set Size"
parameter - size of validation set is calculated automatically by Deep
Learning Service instead.
- Improved: Inference has been significantly
speeded up.
- All already trained models should work with new Deep
Learinng Add-on. However, to achieve best results, re-training is
strongly advised.
(*) These features were also added to latest revision of version
4.8.
Release Notes: Adaptive Vision Studio 4.0
2014.07.30
Adaptive Vision Library for C++ Programmers
- New: An article has been added about
Processing Images in Worker Thread.
- Improved: Up to version 3.2 there was a
separate build of the library for each version of Microsoft Visual
Studio. Now there is one set of binary files that work with all of them
(2008-2013).
- Improved: Functions that can be used for
in-place data processing, like NegateImage, have been clearly
documented.
- New: A project creation wizard and data
visualizers have been added for VS2013.
- Improved: More function parameters (both
input and output) have been grouped into structures for easier
use.
- New: More examples have been ported from
Studio.
- New: New examples have been added
demonstrating interoperability with MFC, WinAPI and Euresys.
Interoperability with C++ and .NET
- New: Adaptive Vision Library is now
available also as a native library for the .NET Framework (for C# or
Visual Basic programming).
- New: Users Filters now support also
Microsoft Visual Studio 2012 and 2013.
- New: .NET Macrofilter Interfaces can be used
also with Express Editions of Microsoft Visual Studio.
Adaptive Vision Library .NET
- New: .NET Macrofilter Wrappers now support
Microsoft Visual Studio versions from 2010 to 2013.
Filter Grouping
- New: Groups of filters performing the same
task, but with different methods, have been merged in the Filter
Catalog. This makes the catalog much easier to browse.
-
- E.g. SmoothImage... groups filters:
SmoothImage_Mean, SmoothImage_Gauss,
SmoothImage_Median etc.
- E.g. Classify... groups filters:
ClassifyByRange, ClassifyByPredicate, ClassifyByCase.
- E.g. ScanEdges... groups fiters:
ScanSingleEdge, ScanExactlyNEdges, ScanMultipleEdges.
- New: Individual filter can be chosen from a
group in a dialog window that provides additional illustration and
information about the filter's applications.
- New: A filter already placed in the Program
Editor can have its variant (e.g. "Gauss" to "Mean"), as well as
instantiation type, changed dynamically. Common parameters and
connections are preserved.
Toolbox
- New: There is a completely new way of
browsing and selecting filters, the Toolbox window. This is a
task-oriented and much more visual alternative to the old Filter
Catalog.
Ready-made Tools
Up to version 3.2 we were providing a set of filters from which both
simple and highly complex image analysis algorithms could be created.
Flexibility (adaptiveness) was one of the primary design goals. From
version 3.3 we are introducing additional tools created on top of the
filters, which replace some common sequences of several filters with just
one tool. These are called ready-made tools and allow for
creating algorithms much faster in 90% of typical industrial
applications.
- New: "CheckPresence: Intensity / PixelAmount
/ EdgeAmount" tool has been added for quick and easy presence or
absence verification.
- New: "MeasureObjectWidth" tool has been
added for high precision measurement of distances between two parallel
edges.
- New: "ClassifyRegions", "SortRegions" and
"ChooseRegions" tools have been added for quick and easy analysis of
regions (or blobs) on the basis of some feature.
- New: "EnumerateImages" filter replaces the
standard pair of "EnumerateFiles" + "LoadImage".
- New: "Statistics_OfLoop/OfArray" filters now
provide a quick way to computer mean, standard deviation, minimum,
maximum and spread with just one block.
- New: "ReadBarcodes", "ReadDataMatrices" and
"ReadQRCodes" tools now replace pairs of "DetectBarcodes" +
"RecognizeBarcode" etc. (The old filters still can be used in advanced
applications).
-
New: "MatchObjectTemplate" tool has been added for defect
detection with simple image difference analysis.
-
New: "CreateUndistortionMap_FromChessboards"
User Proficiency Levels
- New: There are three User Proficiency
Levels: Basic, Advanced, Expert. At lower proficiency levels some
rarely used filters and features are hidden.
Structure Field Expansion
- New: Filters in the Program Editor can have
additional ports created for fields of structures, e.g. "X" and "Y" for
a port of type "Point2D".
- New: Some existing filter outputs, e.g.
RegionBoundingBox.outBoxWidth, have been replaced with expanded fields,
e.g. RegionBoundingBox.outBox.Width.
- Improved: Several closely related filter
ports have been grouped into structures - e.g. there is one "Object2D"
structure on the outputs of Template Matching filters instead of
separate Match, Alignment, Point, Angle and Score outputs.
Local Coordinate Systems
- Changed: Transform2D type has been renamed
to CoordinateSystem2D.
- New: It is possible to select local
coordinate systems when editing geometrical primitives.
- New: Local coordinate systems can be created
at any computed location, not only as results of Template Matching
filters.
- New: Geometrical primitives can be edited in
the context of any input image to be automatically aligned with the
results of Template Matching (was: only in the context of a single
reference image).
- New: Article in the Machine Vision Guide:
Using Local Coordinate Systems.
New and Improved Filters
- New: DifferenceOfGaussians filter.
- Improved: Test and Assertion filters have
been revised and grouped appropriately.
- New: Filters for XML parsing and creation
(read: Working with XML Trees).
- Improved: The Transform2D type has been
renamed to CoordinateSystem2D and its use on inAlignment ports of tools
has been revised for better ease of use.
- New: ThresholdImage_Color and
ThresholdToRegion_Color filters were added for more straightforward
color analysis.
- New: ImageInfo structure have been added for
consistent use in filter that precompute data for specific image
formats.
- Improved: Drawing filters now accept
conditional objects, so that drawing a Nil objects is now results in an
unchanged image and not in a Nil image.
- Improved: Drawing filters now have three
variants for easier use: SingleColor (the simplest), TwoColors (for
drawing ok/nok) and Palette (for multi-color).
- Improved: Drawing filters now accept
geometrical primitives belonging to local coordinate systems.
- Removed:
Automatic conversions from geometrical primitives to regions (e.g.
Rectangle2DToRegion) have been removed, because they were a common
source of programming errors (explicit filters, like
CreateRectangleRegion, should be used instead).
User Experience Improvements
- New: The software automatically verifies
whether pairs of arrays connected to a filter like ClassifyByRange or
GetMaximumElement are guaranteed to have the same size.
- New: Ports containing synchronized arrays
(whose elements correspond to each other) are decorated with colorful
markers for better understanding of the dependencies.
- New: Changing parameters in a paused program
causes re-execution of the entire macrofilter (was: only the single
filter that is modified).
- Improved: It is more straightforward to copy
a color value from a preview to a parameter in Properties.
- New: It is possible to create formulas from
the context menu in Program Editor.
- New: It is possible to choose between
graphical and textual data display (drag-and-drop with the right mouse
button).
- New: It is possible to expose additional
ports of HMI controls, e.g. the background color, and control their
values from the program.
Error Handling
- New: Task macrofilters can have Error
Handlers added. These are special sub-macrofilters that get executed
when an error occurs (e.g. the camera get unconnected).
- Improved: Error messages are now displayed
directly in the alert message boxes, not only in the console
window.
- New: It is possible to configure assertion
filters so that the program execution can be continued after an
assertion is raised.
- New: An article has been added about Error
Handling.
Optimizations
- New: VideoBox HMI control has been added for
very fast image display (>100 fps).
- Improved: Array execution of small filters
have been optimized by an order of magnitude.
- Improved: NCC Template Matching have been
further optimized.
Hardware Support
- Improved: Extended support for CORSIGHT
smart cameras from NET GmbH.
- Improved: Extended support for all cameras
supported by the SynView API.
- New: Filters have been added for direct
support of the Modbus IP protocol.
Examples
- Improved: All existing examples have been
revised and in some cases significantly simplified by using new
features of version 3.3.
- New: New official examples have been added:
"Badge Measurement", "Blister Inspection (NET GmbH)", "Calibration from
Custom Grid", "Dynamic Template Matching", "Fertilizer Granulation",
"Gasket Inspection", "Globe Flattening", "Inset Distance", "Molybdenum
Foil" and "Plate Measurement".
Other
- New: User Manual is available also in the
form of PDF files.
- New: A new HMI control, SelectingVideoBox,
have been added for easy implementation of applications that include
selection of a rectangular region by the end-user.
Release Notes: Adaptive Vision Studio 3.2
2014.02.08
Adaptive Vision Library for C++ Programmers
Up to version 3.1, Adaptive Vision Library assumed one-to-one
correspondence between filters (Studio) and functions (Library). Although
providing sound relationship between the two products, it was also making
some parts of the library strange-to-use for programmers writing code
manually. We have changed this by introducing functions in the library
that do not correspond strictly to filters, but are much more convenient
to use in C++. The old functions corresponding to filters are still
available, but they were renamed by adding "AvsFilter_" prefix. As a
result we were able to finally implement all the most crucial feature
requests from the users of Adaptive Vision Library.
- Improved: Some functions that in Studio are
well represented by a single filter have been split into pairs of
functions in the Library. These new functions are much more convenient
to use when writing C++ code. For example, instead of single
ReadVideo, there are now two separate functions:
OpenInputVideoStream and ReadVideoStream.
- Improved: 1D Edge Detection and Shape
Fitting functions have been split into pairs of functions to allow
preprocessing before the first iteration. For example, to perform the
most simple 1D edge detection one should call two functions:
CreateScanMap and ScanSingleEdge.
- Improved: Functions for GigE Vision have
been integrated with machine vision in a single library.
- New: Functions for GenICam camera interface
have been added.
- New: Functions converting the Image type
between different libraries (OpenCV, MFC, Qt etc.) are now available as
part of the library.
- Improved: Several output parameters of
functions became optional. For example, there is no need now to provide
'alpha channel' parameter to the LoadImage function.
- New: There are new functions for drawing
single geometrical primitives beside the old functions that draw entire
arrays.
- Improved: Many functions that returned
several arrays (e.g. LocateMultipleObjects,
ScanMultipleEdges), now return an array of structures, which is
much more convenient.
- New: Default (suggested) values of function
input parameters are now specified in the documentation and in
structured comments for Microsoft Visual Studio.
- New: There is a standard project template
for Microsoft Visual Studio. This makes it much easier to create a
project with properly selected project settings.
- Improved: Some common sets of function
parameters have been grouped into structures. For example, parameters:
inProfileInterpolation, inSmoothingStdDev, inMinMagnitude and
inEdgeTransition, which appear in all 1D edge detection functions and
in related shape fitting functions, have been grouped into
EdgeScanParams structure.
- Improved: Some hack have been introduced as
a workaround for conflicts between avl::LoadImage and the function from
MFC of the same name.
- Improved: The installer for library runtime
has been reorganized to include only the things that are needed at
production environment.
- Improved: The editors of regions,
geometrical primitives and template matching models have been
redesigned.
- New: The lists of possible background images
in the editors are now displayed as thumbnails.
.NET Macrofilter Interface
- New: It is possible to generate .NET
assemblies (dll) automatically from macrofilters in Studio. Interfacing
with .NET languages, like C# or VB, is now straightforward.
More HMI Events and Multi-Screen Applications
- New: The TabControl control can now be used
with hidden tabs to create multi-screen applications.
- New: The ImageBox control has now outputs
corresponding to mouse events. It makes it possible to program advanced
behaviors like selecting shapes.
Redesigned Editors and Data Previews
- Improved: Textual display of data has been
redesigned.
- New: Textual data are now displayed with
labels corresponding to the names of filter outputs.
- New: Geometrical objects displayed with
images (e.g. blobs) can be labelled with their array indices for
understanding which feature values correspond to them.
- Improved: "No data" and "Nil" values
displayed on the previews now clearly separate the cases of filters:
(1) not yet executed, and (2) skipped due to a condition.
Possibility to Navigate and View Data from All Instances of
Macrofilters
- New: When two or more instances of a single
macrofilter exist in a program, then it is now possible to enter each
of them separately (up to version 3.1 it was only possible to enter the
one which was executed the latest).
- Improved: The tree nodes of macrofilters
displayed in Macrofilter Navigator can be collapsed.
Other
- Improved: Performance of the execution
engine has been significantly improved.
- New: It is possible to set macrofilter
outputs to constant values (not only connections).
- Improved: The user manual has been revised
and extended.
- New: Articles:
-
- New: USB Dongles can now be managed in the
User Area.
- New: The support period can now be managed
in the User Area.
- New: It is possible to display in the
Project Explorer how many time each of the macrofilter is used.
- Improved: The Position2D type has been
replaced with two separate types: Rectangle2D and Transform2D.
- Improved: Some filter inputs are marked as
compulsory. A warning will be signaled on the console if they are not
set.
- New: Analog framegrabbers from Euresys are
now supported.
- New: Cameras from NET GmbH are now supported
also through the SynView api.
- New: "ADAM" family of Advantech's i/o
devices has been supported.
- Improved: There are new algorithms for
DataMatrix recognition.
- New: Filters for easier joining of images:
JoinImages, JoinImages_OfArray,
JoinImages_OfSeries.
- Improved: Image Local Transforms for box and
arbitrary-shaped kernels have been optimized.
- Improved: Names of NotEmptyXxx_OrNil
filters have been changed to more user-friendly
SkipEmptyXxx.
- Improved: Drawing filters, like
DrawSegments, can now draw each primitive with a different
color.