Template Matching (experimental features)

The new CudaTemplateMatching3d algorithm performs a cross-correlation between a reference image and a template image. This algorithm relies on the same concept as CrossCorrelation2d and brings the following improvements:

  • Works on 3D images.
  • Rotates and rescales the model under different configurations.
  • Masks the template using a user-defined image (not yet available).

Please note that:

  • This implementation is CUDA optimized for NVIDIA GPUs and is not available for incompatible hardware.
  • This command is experimental, its signature may be modified between now and its final version.

The RotationGenerator3d command has also been added to create a list of Euler angles, uniformly distributed around the unit sphere, that can be interpreted by the template matching algorithm.
The PeakExtractor command allows the detection of the positions that correspond to the template occurrences in the reference image from the template matching output score. These positions can be filtered by similarity scores, number of desired candidates and proximity.

Three-dimensional Image Rotation

The new Rotate3d algorithm is now available. This algorithm is intended to replace the RotateImage3d algorithm that is now deprecated. This new implementation supports any configuration of Euler angle, contrary to the former which only supported multiples of 90° on each axis.
By default, the new implementation automatically uses the image center as the rotation center, but the user can define any other rotation center.

GPU processing improvements

Out of core computation

All algorithms implemented with the CUDA framework can now be processed out of core, for instance when the input data does not fit the GPU memory. A tile size parameter has been added to each related algorithm.

CUDA memory allocation

The IOLink ImageView data objects can now be allocated directly to the CUDA GPU memory. Using GPU data as input and output limits, the data transfers between CPU and GPU memory when chaining several CUDA algorithms.

CUDA 2D cross correlation

The CudaCrossCorrelation2d algorithm is now available. It is the GPU counterpart of CrossCorrelation2d, with GPU-accelerated performances.

Similarity Metrics

The SimilarityMetricValue algorithm computes the mean square error (MSE) or the normalized crossed correlation (NCC) between two input images. These methods are widely used for estimating image similarity.
The SsimValue2d and SsimValue3d algorithms compute the mean structural similarity (SSIM) index between two input images. This metric translates the perceived variation between both images by considering the environment of each pixel, contrary to traditional technics which are pointwise operators.

Reference Image MSE = 513, NCC = 0.95, SSIM = 0.05 MSE = 3235, NCC = 0.74, SSIM = 0.01

Deep learning 3D inference

ImageDev AI capabilities are enriched by two new features for performing prediction from a 3D convolutional network model, still relying on the Open Neural Network Exchange runtime (ONNX Runtime).
OnnxPredictionFiltering3d computes a prediction on a three-dimensional image from an ONNX 3D model and generates an image representing the prediction scores.
OnnxPredictionSegmentation3d computes a prediction on a three-dimensional image from an ONNX 3D model and applies a post processing to generate a label or a binary image.

Input imageSegmentation by deep learning prediction with a model trained with the Avizo software

2D Scale Space LoG Filter

The new ScaleSpaceLogFilter2d algorithm allows the detection of spherical or blob like bright objects of various sizes, such as cell nuclei in Light Microscopy, or porosity in X-ray CT images of metal casts.
This filter enhances the center of such objects. It is especially useful for low contrast images or objects which are close to each other. Objects can then be detected by using binary thresholding, or the H-maxima module for peak detection.
This filter can operate over a range of scales and thus detect objects of variable size within the input image. An optional secondary output of the command indicates the standard deviation that generated the maximum response.

Multi scale detection of porosities on a CT image, displayed with a colormap showing high responses in red and low in blue

Compatibility changes

API removal

The Deblur2d command was deprecated since 2023.1, and has been removed in the 2024.1 release. The Deblurring2d algorithm can be used instead.

API renaming

  • The DIFFERENCE enumerate value of RadialFrequencyFilter2d::FilterMode has been renamed SUBTRACT to avoid conflicts with the DIFFERENCE Windows macro, included by Open Inventor.
  • In Python, the constructor of the MeasurementGroup class and its Add and Remove methods had an msrInfo parameter, whose name was not consistent with the Python naming convention. This parameter has been renamed msrInformation.

New Supported Platforms

ImageDev is now available for:

  • Visual Studio 2022.
  • Python 3.11.

Operating systems

ImageDev 2024.1 is available for:

  • Windows 64-bit: 2017 (VC 15), 2019 (VC 16), and 2012 (VC 17).
  • Linux 64-bit: GCC 9 (Ubuntu 20.04).

Known issue: There is a known limitation regarding the usage of ImageDev with Open Inventor 2023.2 or 2023.1 on Linux, which may result in certain issues. However, no such issues are encountered when using Open Inventor 10.12 or earlier versions. Our development team is currently working diligently to address this limitation and ensure its resolution in the upcoming release of ImageDev.

Deprecations and future removals

ImageDev 2024.2

ImageDev 2025.2

  • GradientOperator2d has been deprecated from 2023.1 and will be removed in 2025.1. The GradientVector2d and GradientMagnitude2d algorithm can be used instead. The CANNY_DERICHE, SHEN_CASTAN, CANNY, and AMPLITUDE_AND_ORIENTATION modes have no equivalent in the new API. Please contact our support if it is an impediment to your development.
  • GradientOperator3d has been deprecated from 2023.1 and will be removed in 2025.1. The GradientVector3d and GradientMagnitude3d algorithm can be used instead. The CANNY_DERICHE, and CANNY modes have no equivalent in the new API. Please contact our support if it is an impediment to your development.