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):
⇒ ![](core3d_gapfilling_nogaps.png)
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
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
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
CVCodecBridge.dll added
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.