CLAHE
The new Clahe2d and Clahe3d algorithms perform a contrast limited adaptive histogram equalization (CLAHE) on a two-dimensional or three-dimensional image.
This filter uses a user-defined sliding window to improve the local contrast and enhance the definition of edges in each region of the input image.
Input Image | Standard histogram equalization | CLAHE |
Resampling a 2D image with an affine transformation
The ResampleAffine2d new algorithm is the two-dimensional counterpart of the existing ResampleAffine3d algorithm.
It warps an image by specifying a matrix transformation, an output spacing, an output bounding box, and an interpolation policy.
Decomposition of the matrix to be set to perform a warping with 45° rotation and factor 2 scaling |
GPU optimizations (experimental features)
A set of algorithms have been implemented with the CUDA toolkit.
- Morphological operators: CudaErosion2d, CudaDilation2d, CudaOpening2d and CudaClosing2d
- Smoothing filters: CudaBoxFilter2d and CudaMedianFilter2d
Please note that these features are currently experimental, which means that:
- Their API may be modified between now and the final version.
- Some issues or limitations may occur.
Performance comparisons on a 4096×4096 8-bit grayscale data (X axis: kernel size, Y axis: computation time in ms) Performed on a laptop with an Intel Core i7-10850H CPU and an NVIDIA Quadro T1000 GPU. |
Image resizing
The new Resize2d and Resize3d algorithms are now available. These algorithms are intended to replace the RescaleImage2d and RescaleImage3d algorithms that are now deprecated. These new implementations significantly reduce calculation time and are thread-safe.
Performance comparisons for resizing a 497×510 8-bit grayscale data (X axis: output size, Y axis: computation time in ms) |
Two-dimensional Image Rotation
The new Rotate2d algorithm is now available. This algorithm is intended to replace the RotateImage2d and RotateCenterImage2d algorithms that are now deprecated. These new implementations significantly reduce calculation time and are thread-safe. By default, the new implementation automatically uses the image center as the rotation center, but another rotation center can be user-defined.
Performance comparisons for rotating an 8-bit grayscale image at 45° (X axis: input size, Y axis: computation time in ms) |
Algorithm improvements
Label Boundaries
The ObjectBoundaries algorithm is now thread-safe and properly manages label input images with connected objects.
Input Image | Object boundaries with 2023.1 | Object boundaries with 2023.2 |
Fill Holes
The FillHoles2d and FillHoles3d algorithms are now thread safe and FillHoles3d accepts label images as an input.
Algorithm new implementations
A set of algorithms have been reimplemented with the following properties:
- The new implementation is thread-safe.
- They are consistently split into a 2D and a 3D version.
- Their neighborhood configuration can be selected.
The old versions of these algorithms are now deprecated. The related algorithms are:
- BorderKill which is replaced by KillBorder2d and KillBorder3d.
- RegionalMinima and RegionalMaxima which are replaced by RegionalExtrema2d and RegionalExtrema3d.
- HMinima and HMaxima which are replaced by HExtrema2d and HExtrema3d.
Compatibility changes
Header architecture in C++
The C++ header files have been moved to make their organization more consistent. Now, the ‘ImageDev.h’ header automatically includes all headers required to work with ImageDev.
Some include instructions that can raise an error at compilation after upgrading a previous ImageDev version. To solve this issue, remove all headers except the ‘ImageDev.h’ header.
Enumerate value change
The enumerate values of CONNECTIVITY_4 and CONNECTIVITY_8 used by the neighborhood parameter of FillHoles2d have been switched. This change has no impact on the regular use of the ImageDev API. It could imply a minor behavior change when setting this parameter by its integer enumerate value instead of its name.
Operating systems
ImageDev 2023.2 is available for:
- Windows 64-bit: 2017 (VC 15) and 2019 (VC 16).
- 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.1
- Deblur2d has been deprecated since 2023.1 and will be removed in 2024.1. The Deblurring2d algorithm can be used instead.
- The support of Python 3.7 is deprecated from 2023.2 and will be removed in 2024.1.
ImageDev 2024.2
- RescaleImage2d and RescaleImage3d have been deprecated from 2023.2 and will be removed in 2024.2. The Resize2d and Resize3d algorithms can be used instead.
- RotateImage2d and RotateCenterImage2d have been deprecated from 2023.2 and will be removed in 2024.2. The Rotate2d algorithm can be used instead.
- BorderKill has been deprecated from 2023.2 and will be removed in 2024.2. The KillBorder2d or KillBorder3d algorithms can be used instead.
- RegionalMinima and RegionalMaxima have been deprecated from 2023.2 and will be removed in 2024.2. The RegionalExtrema2d and RegionalExtrema3d algorithms can be used instead.
- HMinima and HMaxima have been deprecated from 2023.2 and will be removed in 2024.2. The HExtrema2d and HExtrema3d algorithms can be used instead.
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.