Common Vision Blox 14.1
Release Notes - Common Vision Blox 14.1

Following are the Release Notes for Common Vision Blox 14.01.xxx.

What is New

Pixel Format Conversion

  • Add API for standard PFNC format conversion (CVPixFmtCnv.dll). The conversion focuses on converting from any format to a displayable and processable image format. There is no support for encoding data as a PFNC format.

RTPStreaming

  • Enables image streaming via RTP. Support for various video codecs can be added when FFmpeg is available.

GEV with GenDC

  • Full GigE Vision 2.2 support including GenDC container streaming. The container components are mapped to the parts of a multi-part image and/or the items of a composite whenever possible.

RDMA for GEV (preview)

  • Preview for Vision 3.0 support focusing on RDMA (RoCE v2) streaming.
    • Windows: RDMA using Network Direct Service Provider required.
    • Linux: RDMA using librdmacm and libibverbs

FWUpdater

  • Command line tool for generic firmware file upload and GenApi standard firmware updates. Both methods are supported through the CLI. if possible standard way is should be preferred.

New features in Core3D.dll

  • New AT calibration model correcting laser straightness (AT model CX_3D_CALIB_MODEL_N_MASK, see AT documentation) supported. The corrections parameters can read from the AT calibration file (xml) and applied with CVB.
  • Functionality added to fill gaps in rectified point clouds (range maps):

CVMockTL in Tutorials

The CVMockTL.cti is provided with version 14.01.xxx under %cvb%/GenICam and can be used with the CVB tutorials.

SBOM

A software bill of material is available for Common Vision Blox and can be purchased via de.sa.nosp@m.les@.nosp@m.stemm.nosp@m.er-i.nosp@m.magin.nosp@m.g.co.nosp@m.m. The SBOM file is provided in CDX JSON format following the CycloneDX standard.

Breaking Changes and End-of-Life Information

2nd Generation Stack deprecated

The 2nd generation stack (vin stack) is deprecated. Please switch to the 3rd generation stack. The 3rd generation interface also supports acquisition of multiple streams from one device, acquisition of structured data streams that contain multiple logical parts (e.g. 3D point clouds) and acquisition into user-specified destination buffers.

Removals

Windows 7 is not supported anymore.

The Common Vision Blox documentation (chm) has been removed from the setup. Please refer to the online documentation under https://help.commonvisionblox.com/NextGen/index.html.

The following dlls have been removed:

  • CVOpcUa.dll
  • OpticalFlow.dll
  • ZXBarcode.dll
  • CVCColor.dll

Announcements for Future Releases

Win32 will not be supported anymore in next release.

The following modules/tools and ActiveX controls will be removed in future release:

  • all ActiveX controls
  • all compiled HTML help files (chm)
  • Movie2
  • Manto
  • TextOut
  • DrawGraph
  • Barcode
  • Windows Forms Support

Target Platforms and Available Installers

Target Platforms

x86/i686 x64/x64_64 armv7l aarch64
Current Windows X X
Ubuntu 18.04 X X
Ubuntu 20.04 X X
Ubuntu 22.04 X X

The Common Vision Blox packages are available for the following platforms:

Windows (32 bit) Windows (64 bit) Linux
Image Manager & GenICam X X X
Foundation Package (CVFoundation.dll) X X
Arithmetic X X X
Barcode X X
BayerToRGB X X X
CVC Blob X X X
DNC X X X
Edge X X X
GEVServer X X X
LightMeter X X X
Manto X
Metric X X X
Minos X X X
Movie X X
Polarization X X X
Polimago X X X
ShapeFinder X X X
TextOut X X X

Available Installers

All installation packages are available for download from the CVB User Forum's download page: https://forum.commonvisionblox.com/c/downloads.

For windows a full and runtime installer is available. The size of the installers and of the installed product differs between installer flavors as well as between system architectures and operating systems. The available installer flavors on Windows are:

Installer
A Common Vision Blox CameraSuite Runtime
B Common Vision Blox CameraSuite
C Common Vision Blox Runtime
D Common Vision Blox
  • Flavors B and D come with developer resources (tutorials, reference documentation, header files) and are generally intended for development systems.
  • Flavors A and C contain files needed during runtime only and are therefore smaller than B and D. They are ideally suited for deployment in a system to be shipped to the factory floor as they do not burden the system they are installed on with things that are only of interest for developers.
  • Flavors A and B are CameraSuite installers, which means they will install the Image Manager plus GenICam (i.e. GigE Vision and USB3 Vision) support. They are intended for those customers who want to merely use Common Vision Blox as a versatile and robust image acquisition SDK. Common Vision Blox CameraSuite may be used free of charge with any GigE Vision or USB3 Vision camera bought from STEMMER IMAGING.
  • Flavors C and D contain the full set of tools available for the respective target platform and are the ones to be used while developing and/or deploying an application that utilizes the powerful algorithms in Common Vision Blox.

List of Changes

Installers

  • Removed many legacy examples and tutorials.

CVB++

  • Added feature that calculates a rigid body transformation that maps the plane into the XY plane of the global coordinate system. See the Cvb::Plane3D::AlignToXYPlane method.
  • Added feature that gets the integer representation of an enumeration node. See the NumericValue method of the Cvb::GevServer::EnumerationNode class and the Cvb::GenApi::EnumerationNode class respectively.
  • TryGetNode to Cvb::GenApi::NodeMap added.
  • RingBuffer LockMode.Off removed.
  • FillGaps method for range maps added.
  • Fixed the issue observed when CVB calculates histogram of an image by using the Cvb::Histogram function.
  • OPCUA removed.
  • Wrapper method for CreateRotatedImageMap added.
  • Wrapper method for NodeMap.ToJson() added.
  • Calculation of rotation angles and scale from Matrix3D added.
  • Inverse() member function added to all matrix classes.
  • From now on the model point cloud is matched to the scene for IcpMatch().
  • Added match3d replaced by advanced match3d.
  • Support of pixel format conversion added.
  • Alignment of plane to xy plane added.
  • Spectral::Cube member function Transpose() replaced by Convert().
  • Deprecated function SwapSamplesAndLines() removed.
  • Quality overload for Image.Save added.
  • RTP streaming added

CVB.NET

  • Added feature that calculates a rigid body transformation that maps the plane into the XY plane of the global coordinate system. See the Stemmer.Cvb.Plane.AlignToXYPlane method.
  • Added feature that gets the integer representation of an enumeration node. See the NumericValue method of the Stemmer.Cvb.GevServer.EnumerationNode class and the Stemmer.Cvb.GenApi.EnumerationNode class respectively.
  • RingBuffer LockMode.Off removed.
  • Processing.FillGaps method for range maps added.
  • Fixed issue with copying large images (> 2 GB).
  • .ToJson() method to NodeMap added.
  • RotatedImageMap wrapper method added.
  • OpticalFlow, zxBarcode and OPCUA removed.
  • Default number of scene/model points (Match3d) is zero now, i.e. all points are used for the matching.
  • Calculation of rotation angles and scale from Matrix3D added.
  • Inverse() member function added to all matrix classes.
  • Matrix3D::Invert() does the inversion now in-place!
  • From now on the model point cloud is matched to the scene for IcpMatch().
  • Wrappers for CVSpectral.dll added: CubeNormalize, CreateInterpolator, InterpolatorGetObserver, InterpolatorGetIlluminant, InterpolatorGetWavelengths, InterpolatorGetWavelengths, ConvertCubeToXYZ, ConvertCubeToLab, ConvertXYZToLab, ConvertLabToRGB8, MetaDataGetNumberOfFields, MetaDataGetFieldnameAsString, MetaDataGetFieldnameAsStringW, CubeGetSlice, CubeMultiplication, CubeDivision, CubeAddition, CubeSubtraction.
  • Spectral: CreateTransposedCube is replaced by CreateConvertedCube.
  • Deprecated function CubeSwapSamplesAndLines removed.
  • Tutorial for PixelFormatConversion added.
  • Wrapper for pixel format conversion added.
  • The destination type of the pixel format conversion limited.
  • Add wrapper for advanced match3d (old match3d removed).
  • Wrapper for laser line extraction added.
  • Wrapper for aligning plane to xy plane added.
  • GetUnmanagedString: Supports not asserting anything about the result on any query call.

CVBPy

  • Added feature that calculates a rigid body transformation that maps the plane into the XY plane of the global coordinate system. See the cvb.Plane3D.align_to_xy_plane method.
  • Added feature that gets the integer representation of an enumeration node. See the numeric_value method of the cvb.GevServer.EnumerationNode class and the cvb.GenApi.EnumerationNode class respectively.
  • Added feature that retrieves a node in a node map by using a node name as a key. See the cvb.NodeMap.node method.
  • Added support for Python 3.11.
  • The PFNCBuffer class has been introduced.
  • Added support for NumPy-compliant array conversion. See the cvb.to_array function.
  • Opcua removed.
  • Added feature that serializes the nodes of a node map. See the cvb.NodeMap.to_json method.
  • The Off entry has been removed from the LockMode enumeration.
  • FillGaps method for range maps added.
  • From now on the model point cloud is matched to the scene for icp_match().
  • The NodeMap.try_get_node method has been added.
  • Added the pixel format conversion feature.
  • Full NumPy support for planes added.

Image Manager

CVCDriver.dll

  • Validate image handle in NMHGetNodeMap..
  • AccessNode to nlohmann/json ported.
  • Utf8 remainders fixed.
  • Utf8 change in CVFactory adapted.
  • Random crashes in CS2SetCamPort fixed.
  • Random crashes fixed by deleting a second ReleaseObject().

CVCImg.dll

  • Fixed an issue that leads to access violations when trying to copy images with more than 2 GByte.
  • Retrieve the last portion as the extension when its called by WriteImageFile_native.

CVCore.dll

  • CVCPR_PixRGB_RGB added.

CVCore3d.dll

  • Fixed the issue that caused an exception if a JSON file that is being loaded contains only one Brown-Conrady coefficient.
  • Signed int range maps and range maps with VPAT access not supported anymore.
  • Function CVC3DRangeMapFillGaps added.
  • Application of new AT calibration model (laser straightness correction) added (enabled via AT xml calibration file).
  • The following functions added:
    • CVC3DRotationMatrixFromRotationAngles
    • CVC3DMatrixFromRotationAnglesScale
    • CVC3DRotationAnglesFromRotationMatrix
    • CVC3DRotationAnglesScaleFromMatrix
    • CVC3DRotationAnglesScaleFromMatrixApproximation
    • CVC3DCreateAlignmentToXYPlane added.

CVCUtilities.dll

  • Only file version read on linux added.
  • Added function to check for the presence of a NoLicense marker in the lowermost byte of the first nine pixels of the first line of an image.
  • Fixed InnerGetCVBVersion so that it explicitly terminates the version number string to be returned.

CVGenapi.dll

  • GenApi version updated to 3.4.2.
  • Node dumping to JSON added.
  • Access violation when using DownloadFile on a file that does not exist fixed.

CVGevServer.dll

  • Removed packed formats that do not exist.

GenICamBrowser.exe

  • Added support for the GenDC standard-compliant image acquisition.
  • Improved the user experience upon closing the operation of multi-streaming devices.
  • OpenGL is no longer supported.
  • Warning showed when configuring the deprecated vin stack.
  • Fixed the issue that closed all other devices by clicking the close button dedicated to an arbitrary device.
  • Vin wizard removed.
  • CameraSuite key web retrieval removed.
  • Fix for deprecated pixel formats (e.g RGB8Packed).
  • All streams are closed when closing a multi-stream device.
  • Fix for display and load of non-ascii containing tl(name)s.
  • Fix: device event threads are killed correctly.
  • Fix: Setting IP if an interface has more than one device. Use try get to get device info.
  • "kill acquisition" button removed and normal stop grab button to kill the acquisition added.
  • Fix: Setting of packet size in device when opening device.
  • Fix: Yellow device double click not opening assign ip dialog.
  • GEV standard way for assigning IPs used.
  • Fix for IPLineEditor widget for IntegerProperty.
  • Retrieve License Key in Dropdown for arm/aarch64 removed.
  • URL for online GenICam user guide / GenICam browser user guide added.
  • Event thread termination + started transition unified to std::thread.
  • Fix for event thread shutdown.
  • Fix: Escape key breaking the device config dialog window.
  • Discover devices after setting a static IP.
  • Fix: DataStream getting created even when an error occurs.

LicenseManager.exe

  • Link to license key request updated.
  • Embedded license support for arm added.
  • Camsuite for arm removed.

CVMgmtSvc.exe

  • CVUAL static lib with dll version replaced.
  • Made more resilient versus situations where CmAccess2 fails because the CodeMeter service is not yet fully present.
  • Updated file name for dynamic loading of WIBU CodeMeter runtime (on Linux a name change in the CodeMeter SDK on Linux went unnoticed for a while).
  • DNC magic number for 999 key removed.
  • Embedded license provider for armv7l/aarch64 platform added.
  • Support for CameraSuite Licenses on ARM platforms removed.
  • Fix for node locked license on Ubuntu 18.04.

collect-camsuite.exe

  • Web address to not include port updated.
  • Updated for new web api.
  • Web api url from configuration read.

LogGui.exe

  • Link to documentation replaced.
  • Fix for service config file path on linux.

EditBindings.exe

  • XML validator added.

CVPixFmtCnv.dll added

  • Add API for standard PFNC format conversion.

CVRTPStreaming.dll added

  • Enables image streaming via RTP.

GenICam

CVFactory.dll

  • Adaptions for Utf8.
  • Flow mapping table to wrapper added.
  • GenTL capability checks fixed.

CVUAL.dll

  • Device information with spaces are not shown.
  • Deadlock during acquisition stop on Windows removed.
  • RAW IO on Windows added.
  • Endpoint stall recover during stop disabled.

CVRegistry.dll

  • Database singleton for multithreading support implemented.
  • Inter process lock file next to db file.

CVDeviceID.dll added

  • Internal use only

CVCodecBridge.dll added

  • Internal use only

GenICam.vin

  • The GenICam chunk parser errors are no longer treated as a CVB error event. They are treated as a warning instead.
  • Fixed the issue that failed to detect link disconnection of the USB3 Vision standard-compliant cameras.
  • Revised ComponentsCount with PFNC.
  • Fix: TD for legacy devices which are missing the CAP_TURBO_V2 node.
  • Handle unreadable AttachChunk well.
  • PacketSize to optional DeviceInformation parameters added.
  • Fixed a parameter override issue of the CDriverIImageRect.
  • Fix for image release after pool deregister.
  • Fix for lost buffers due to early event queue flush.
  • cvbBase::exception caught before std::exception.
  • cvbBase::exceptions are not copied on throw.
  • Some warnings removed.
  • TD decompress only complete buffers.
  • Retrieve TL Queue twice to avoid buffers remaining queued.
  • Packet size from ini read before creating data streams.
  • Added support for the GenDC standard-compliant image acquisition with the
  • GigE Vision devices.
  • Only valid nodes to VinBuffer NodeMap added.
  • USB-disconnection of the device as a new case added.
  • Fix: USB disconnect event for code depending on DriverIPropertyChange.
  • Replaced 2nd gen stack with 3rd gen stack internally.

GevTL.cti

  • Added support for the GigE Vision Action Command.
  • Fixed the issue that made GigE Vision-compliant cameras no response if their pixel format was configured with one that requires a color space conversion such as a Bayer format.
  • The GevDataStreamingMode feature node introduced.

CVUSBTL.cti

  • Logic to split payload if it exceeds the maximum implemented.
  • Common logo burner and C++17.
  • Modified the license check behavior: If no license was found, re-check again after 500 frames.
  • Modified the watermarking code to also embed a "NoLicense" marker into the lowermost bytes of the first nine pixels of the first line of the image.

CVMockTL.cti added

  • Generic Transport Layer completely emulated in software t showcase API usage without hardware.

FWUpdater.exe added

  • Command line tool for generic firmware file upload and GenApi standard firmware updates.

Foundation Package and tools

CVMetric.dll

  • Function CVMExtractLaserLineFromMonoImage added.

Tools

CVDNCFind.dll

  • Licensing from DNC changed to Match3D.

CVMatch3d.dll

  • If number of maximum scene/model points is zero, then all points are used.
  • From now on the model point cloud is matched to the scene (for all matching functions.). As the clouds are also swapped in the API function, the user will not notice any difference applying old or new match3d (except he reads the documentation).
  • CVM3DCT_ConsensusICP added.
  • Given correspondence type is now considered (bug fixed).

CVSpectral.dll

  • Fixed the issue that caused the wrong cover conversion by XYZ2Lab for all dark pixels.
  • Fixed the issue that caused the failure at the second CVSWriteEnviFile function call against the same cube object.
  • Color conversion from XYZ to Lab corrected.
  • Color conversion from Lab to XYZ corrected.
  • (Linear) RGB values outside the gamut are clipped.
  • Call of FromPointer fixed for mapped and linear cube.
  • Function CVSCreateConvertedCube added.
  • CVSCreateTransposedCube and CVSCubeSwapSamplesAndLines are deprecated now.
  • Fixed CVSCubeNormalize (wrong access to memory).
  • Fixed messed up interleaves.
  • Fixed crash in normalization.

TeachBench.exe

  • Help class to use online documentation rewritten.
  • Fix for binding error in PolimagoCR wizard.
  • DNC renamed to Match3D DNC.
  • Fix: DNC sample generation dialog not creating samples again after they have been deleted.
  • Fix: up/down arrow keys not selecting virtualized items in ImagePool.
  • Fix for creation of PolimagoCR projects
  • Fix for fringe minimum.
  • Show samples when they are generated, not when dialog is closed.

CVB Tutorials

CVB++

  • Added a tutorial program that demonstrates the CVB's pixel format conversion feature. See CppPixelFormatConversion in the tutorial directory.
  • Added a tutorial program that demonstrates the RTP streaming with FFmpeg. See CppRTPStreaming in the tutorial directory.
  • Added a tutorial program that demonstrates how to use the Cvb::Async::CompositeStreamHandler as a 3rd generation stream handler. See CppCompositeStreamHandler in the tutorial directory.
  • Added a tutorial program that demonstrates the subnet-independent device discovery. The tutorial also addresses how to programmatically set a persistent IP address to an arbitrary GigE Vision-compliant device. See CppCameraIPConfig in the tutorial directory.
  • Added a tutorial program that demonstrates a basic GenDC standard-compliant image acquisition. See CppStreamGenDCContainer in the tutorial directory.

CVBpy

  • Added a tutorial program that demonstrates the CVB's pixel format conversion feature. See pixel_format_conversion.py in the tutorial directory.
  • Added a tutorial program that demonstrates the RTP streaming. See CppRTPStreaming in the tutorial directory.
  • Added a tutorial program that demonstrates how to use the cvb.CompositeStreamHandler as a 3rd generation stream handler. See composite_stream_handler.py in the tutorial directory.
  • Added a tutorial program that demonstrates how to apply a calibration to a range map. See metric_calibration.py in the tutorial directory. The tutorial covers how to execute the AQS12 calibration.
  • Added a tutorial program that demonstrates image acquisition with a multi-part capable device. See multi_part.py in the tutorial directory.
  • Added a tutorial program that demonstrates image acquisition with a multi-streaming capable device. See multi_stream.py in the tutorial directory.

CVB.Net

  • Added a tutorial program that demonstrates the CVB's pixel format conversion feature. See PixelFormatConversion.csproj in the tutorial directory.
  • Added a tutorial program that demonstrates the RTP streaming. See CppRTPStreaming in the tutorial directory.
  • Added a tutorial program that demonstrates image acquisition with a multi-part capable device. See Multipart.csproj in the tutorial directory.
  • Added a tutorial program that demonstrates image acquisition with a multi-streaming capable device. See Multistream.csproj in the tutorial directory.