GPU accelerations

GPU accelerated 3D Gaussian filter

CudaGaussianFilter3d, performing a 3D Gaussian filtering on GPU, filter is now available.

Computing a Gaussian filter using this implementation with a 21x21x21 kernel (standard deviation = 7) can be accelerated by a factor of 4 relative to the CPU implementation (tested on a 1301x1301x351 16-bit dataset with an NVIDIA RTX 6000 GPU).

Non-Local means filter by adaptive Manifolds

The CudaAdaptiveManifoldNlmFilter algorithm is a CUDA implementation of the Non-local means filter algorithm. This new algorithm is not a straightforward CUDA implementation of the existing NonLocalMeansFilter2d and NonLocalMeansFilter3d algorithms.

To optimize the filter performance, the original implementation is approximated by using several manifolds within the high-dimensional space. The results of this implementation are consequently not identical to the standard CPU version of the algorithm.

CUDA helpers

Two new Processing helper functions have been added to facilitate the integration of CUDA based algorithms:

  • cudaInit initializes the CUDA library to avoid wasting time at the first run of a CUDA algorithm.
  • isCudaGpuAvailable can be used in an application to set a trigger between a CUDA implementation and a CPU implementation.

Stack alignment

Stack Normalization

The StackRescaleIntensity algorithm performs a linear scaling of the gray level values of each slice of an image stack to match the intensity levels in all slices of the 3D data. The linear scaling can be performed either using intensity range (normalization) or the mean value and the standard deviation (standardization).

Serial block face EM data in cross-section showing unequal image intensity along the Z axis (A). Intensity of images has been normalized, and slices with higher or lower intensities have disappeared (B).

 

Shearing 3D

The Shearing3d algorithm applies a shear transformation which can be seen as the translation of axis-aligned slices along a user-defined direction.

Original image Shearing with y as the shift axis, z as the slice axis (xy slices are shifted), angle is 38°

Image metrics

Similarity Metric PSNR

The peak signal-to-noise ratio (PSNR) metric has been added to the SimilarityMetricValue algorithm. This metric, expressed in decibels, represents the ratio of the maximum possible input intensity to the mean square error between the input images.

Segmentation Metrics

The SegmentationMetrics algorithm compares a segmented image with a ground truth in order to assess the accuracy of a segmentation process, for instance, a classification by machine learning. It computes the common metrics used in this context such as recall, precision, intersection over union, and many others. These metrics can be computed either independently for each label of the input image, or globally to assign a unique quality score for the whole image.

Deep learning

ONNX model loading

The new ReadOnnxModel command loads an ONNX model in memory into an OnnxModel object. This object can be used as a parameter of any ONNX prediction algorithm. The model is no longer loaded at each execution of a prediction. It can save significant time when applying the same model to different images.

Prediction with 2-outputs models

The new OnnxPredictionTwoOutputs2d and OnnxPredictionTwoOutputs3d algorithms are equivalent to the existing OnnxPredictionFiltering2d and OnnxPredictionFiltering3d algorithms. They can be used with models that produce two output images.

Image enhancement

3D Scale Space LoG Filter

The new ScaleSpaceLogFilter3d algorithm is the 3D counter part of ScaleSpaceLogFilter2d introduced in ImageDev 2024.1. It 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.

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

Deconvolution

The PointSpreadFunctionImage3d algorithm generates a point spread function (PSF) volume that can be used for deconvolving images of integrated Fluorescence Light Microscopy (iFLM).

The new RichardsonLucyDeconvolution algorithm performs a fixed number of deconvolution steps using the Richardson Lucy deconvolution method. This algorithm corrects the degradation induced in light microscopy systems by modeling the Point Spread Function (PSF) of the instrument.

Label Analysis

Two new methods have been added to the AnalysisMsr Class:

  • unregisterCustomMeasurement which removes a custom measurement.
  • exists which indicates if a custom measurement already exists.

Template Matching (experimental features)

The performance and the robustness of the CudaTemplateMatching3d algorithm have been improved in this version.

The RotationGenerator3d command has new options that allow:

  • The generation of simple orientations, instead of rotations in the 3D rotation group SO(3). This option is especially useful when the object to rotate during the template matching has a symmetry axis, like a cylinder or an ellipsoid.
  • The definition of the distribution sampling by angle pitch, providing an alternative to the number of rotations as already available.

The WedgeMaskImage3d command generates a three-dimensional binary image representing the region of acquisition of an electron tilted image series. It can be used as a mask in the frequency domain by the template matching algorithm to mitigate missing wedge artifacts.

Interoperability with Open Inventor

A new fromSoVolumeData method has been added in the Converter class of the OpenInventor/ImageDev C++ and C# Examples solutions. This method can be used to transfer an SoVolumeData object from Open Inventor to an ImageView object usable in ImageDev. Its usage is shown in the Dental Panoramic example.

Compatibility notes

Breaking changes

  • The signature of all deep learning prediction algorithms has changed (all algorithm starting by ‘Onnx’). The model was previously identified by its path and was loaded at each execution of a prediction. You can now load once and keep it in memory for several prediction executions. The ONNX prediction algorithms now take an OnnxModel object parameter instead of a string representing a path. This modification allows a faster execution of repetitive predictions with the same model. The impacted algorithms are OnnxPredictionFiltering2d, OnnxPredictionFiltering3d, OnnxPredictionSegmentation2d, and OnnxPredictionSegmentation3d
  • The experimental RotationGenerator3d algorithm has the new parameters samplingMode, angularSampling, and orientationOnly. The default settings correspond to the former behavior.

API removal

Note about Supported Python versions

ImageDev is now delivered through the same package for all supported Python versions (from Python 3.8.10 to 3.11). Other python versions are not tested, but ImageDev is theoretically compatible with any recent Python version.

Operating systems

ImageDev 2025.1 is available for:

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

Deprecations and future removals

End of compiler support

ImageDev 2026.1 will drop the support of

  • Visual Studio 2017 (VC 15) for C++ and .NET.
  • GCC 9 (Ubuntu 20.04), which will be replaced by GCC 11 (Ubuntu 22.04).

Feature removal

The following features will no longer be available in ImageDev 2026.1.

  • GradientOperator2d has been deprecated from 2023.1 and will be removed in 2025.2 (internal version). 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.2 (internal version). 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.
  • The Image Data helper functions have been deprecated from 2023.2. The equivalent methods are available as members of the ImageView class of IOLink.
    • getImageInterpretation and setImageInterpretation are replaced by imageInterpretation  and setImageInterpretation 
    • getDimensionalInterpretation and setDimensionalInterpretation are replaced by dimensionalInterpretation and setDimensionalInterpretation
    • getCalibrationOrigin and setCalibrationOrigin are replaced by calibrationOrigin and setCalibrationOrigin
    • getCalibrationSpacing and setCalibrationSpacing are replaced by calibrationSpacing and setCalibrationSpacing
    • getCalibrationUnit and setCalibrationUnit are replaced by calibrationUnit and setCalibrationUnit