Version 1.6.0
Features
- Added experimental support for Aligning an XYZ image with the pixel grid of another camera. This is used to associate texture data acquired by that camera with the corresponding 3D points and to create a 3D point cloud with additional texture information. See Textured Point Cloud for more information.
- TIFF Image Reading from disk: Broadened the ForcedPixelFormat parameter when reading TIFF files from disk. You can now request any compatible target pixel format; if a conversion pathway exists, the image is automatically converted during loading to return your desired format.
- Improved performance of Drago Tonemapping
- Update versioning to SemVer 2.0
Bug Fixes
- TIFF Image Reading from disk: Resolved a bug where requesting an incompatible forced pixel format during TIFF ingestion silently produced corrupted image data (e.g., loading a Coord3D_C16 TIFF as Coord3D_C32f resulted in a Mono16 image instead of an error). The loader now validates format compatibility and throws an exception on mismatch.
- Fixed an issue where the C++ point cloud writer failed to save point clouds containing RGB metadata.
Version 1.5.0
Features
- Added support for more pixelformats when subtracting images. All unpacked formats except ones with an alpha channel are now supported.
- Added support for more pixelformats when thresholding images. All single channel unpacked formats are now supported.
- Added support to load Mono16 images from file.
- Improved performance of the following:
- XYZ Image creation
- Point Cloud transformation to workspace
- Querying Points from a Point Cloud
- Threshold processing
- Painting
- Drago Tonemapping
Bug Fixes
- Fixed incorrect image deep copy. During a deep copy of an image, the associated image region was only shallow copied.
Version 1.4.0
Features
- Added support for writing images in .hdr format.
- Added support for reading images in .hdr format.
- Point clouds now support RGB color attributes.
- The Python Image class now supports deep copying via image.copy().
Added new PFNC pixel formats RGB32f and Mono32f
These are the successor of RGB32fIDS and Mono32fIDS, which are now deprecated and will be removed in a future version. The deprecated pixel formats have already been replaced in HDR-like functions, as they are experimental. Other functionality is unaffected, but will be replaced in future versions.
- HDR: Removed the experimental status from all existing HDR-related functionalities and migrate them out of the experimental namespace.
HDR Response Curve I/O: Added support for saving and loading Camera Response Curves to and from disk.
This allows you to perform the computationally expensive estimation step only once and reuse the resulting curve for future HDR processing.
HDR NaN Handling: Updated the treatment of under- and overexposed pixels across all input images.
These pixels are now clamped to the HDR image's global minimum and maximum values, respectively. Additionally, the processing region is now strictly limited to valid, properly exposed pixels.
- HDR tone mapping: Changed tone mapping interface to be able to provide multiple different tone mapping algorithms with different parameters.
- HDR tone mapping: Replaced the Reinhard tone mapping algorithm with Drago.
- Speed up image conversion in image.ConvertPixelFormat for packed source images.
- Added functionality to choose whether to zero initialize images, when created from size.
- Added a method to the C++ interface to convert the pixel format of an image into a previously created destination image (see Image::ConvertPixelFormat ).
- (Experimental) HDR tone mapping: Added linear tone mapping algorithm.
Bug Fixes
- Fixed issues throughout all interfaces, that metadata was not retained when the image was processed by an algorithm
Documentation
- The link to the calibration plate description file in the Camera Calibration guide now points to the correct location.
Version 1.3.0
Breaking changes
Major Milestone
- New .NET interface: First release of the dotnet wrapper with full C++ and Python feature parity. The package is now publicly available on NuGet.
Features
- Expanded the HDR feature to support input images with varying gains (previously only varying exposure times were supported).
- Added support for extracting HDR images for Quad-HDR (for IMX900) and Clear-HDR (for Starvis 2 sensors), including cutting of lines and colums that don't contain valid image data, unpacking, and de-interleaving.
- C++:
Image.Deinterleave()
- Python:
Image.deinterleave()
- .NET:
Image.Deinterleave()
- Added Chromatic Adaption to the default pipeline.
Improvements
- Renamed the HDR calibrate function:
- C++:
Calibrate to EstimateResponseCurve
- Python:
calibrate to estimate_response_curve
- Setting a hotpixel list with negative values now correctly throws an out of range exception.
Bug Fixes
- Fixed an issue where the pipeline wrote to the same memory repeatedly when calling process sequentially. This might occur when an image pixel format is converted within the pipeline and no copy is done afterward.
- Fixed an issue where the default pipeline did not reset its internal properties, leaving stale values in
GammaFeature and DigitalBlackFeature.
- The default pipeline will now reset the processing policy to Fast when calling reset to default.
- In Python, the default pipeline will now reset its features correctly.
- Fixed
ToneCurveCorrectionModule applying stale values in the native backend when disabled.
- Fixed
DefaultPipeline.process in Python failing to guarantee a memory copy despite documentation claims.
Documentation
- Made company logo clickable to return to the documentation homepage.
- Added explicit warnings across all languages that the
DefaultPipeline's process function can modify the input image, and warned against holding onto internal buffers returned from the pipeline.
- Synchronized C++ and Python documentation and reordered programming languages alphabetically in the menus.
Version 1.2.0
Breaking changes
- Removed the dynamic loader interface.
Features
- Added HDR imaging and tonemapping support.
- Introduced an experimental Data Matrix code reader.
- Implemented support for new pixel formats, including:
Improvements
- Moved memory ownership from ids_peak_ipl to ids_peak_icv to improve memory management.
- Changed the minimum calibration plate pattern size to 5x5 for improved robustness.
- Updated the Python package name to follow PEP conventions (kebab-case).
Bug Fixes
- Fixed an issue where image undistortion could result in images that were too small under certain distortion coefficients.
- Ensured a meaningful exception is thrown when attempting to write an empty point cloud.
- Fixed regressions caused by pixel format changes, including updates to the renamed
PixelFormatInfo::GetChannelIndex() function.
- Ensured image metadata is retained after move operations.
- Fixed an issue where RGB10 and RGB12 TIFF images could be saved but not loaded.
Documentation
- Added instructions for uploading calibration parameters to the camera in the camera calibration guide.
- Added serialization code snippets to the documentation.
- Added missing “since” version annotations to API documentation.
Version 1.1.0
Features
- Added a Python interface (see here for more information).
- Implemented image pipeline in Python (see here for more information).
- Added automatic type-checking mechanisms, external type-checker support, and mypy integration.
- Added support for undistortion considering regions. (see more information for Python or for C++).
- Add convertPixelFormatWithFactor to apply multiplication factor to image pixelwise while converting pixel format (see more information for Python or for C++).
- Add ROI (Region Of Interest) to image metadata and use it in undistortion to make it possible to also undistort images with different ROI than used during calibration.
- Move experimental features to stable:
- Camera calibration: From now on, cameras might be calibrated using a supported calibration plate, which then results in intrinsic and extrinsic parameters. See Camera Calibration for more information
- Undistortion: Added support for image undistortion using camera calibration results. This corrects lens distortion effects for more accurate image representation. See Undistortion for more information.
- Workspace calibration: The workspace calibration calculates the extrinsic parameters based on a single image.
- PointCloud: A point cloud is a set of data points defined in a three-dimensional (3D) coordinate system.
- Median Filter: The MedianFilter class applies a median filter to reduce noise in an image. It replaces each pixel value with the median value of its neighboring pixels, based on a defined kernel size.
- Painter: Can be used to paint simple things (e.g. a region) on images.
- RegionSelector: Can be used to filter regions by different criteria.
- Threshold: Can be used to apply a threshold to an image. See Thresholding and Segmentation for more information.
- Add support for pixel format conversion from all bayer formats to format RGB10p32 (see here for more information).
Improvements
- When saving a point cloud existing files are now overridden and no exception occurs.
- Revisit binning/decimation implementation Replaced the binning/decimation function that internally allocates memory by a function with a previously allocated output image. The new implementation will also use multi threading and is faster now
- Remove nodiscard macro and use the one from ids_peak_common.
Bug Fixes
- Fix memory leak when creating regions or calibration results.
- Change output of peak::icv::Serializer::Write to be empty, when the archive itself is empty Previously the functions output was just an empty json object.
- Change peak::pipeline::detail::DownsamplingModule::ResetToDefault to not disable the module upon invocation.
- Added validation to ensure that the origin of a calibration plate cannot be placed outside the plate’s defined coordinate system.
- Fix a
-Wundef warning when checking _MSVC_LANG before checking if it's defined.
Version 1.0.0
The IDS Industrial Computer Vision Library (ICV) is a modern C++ library for high-performance image processing in industrial vision applications. It builds on the foundation of the IDS Image Processing Library (IPL) and is designed to expand its capabilities with a modern architecture, improved performance, and greater flexibility.
The ICV library provides a configurable, modular image processing pipeline that converts raw sensor data into high-quality, ready-to-use images. The pipeline includes stages such as raw data unpacking, sensor artifact correction, debayering and format conversion. When combined with the IDS Auto Feature Library, the pipeline also supports advanced auto features like brightness, white balance, and focus.
The IPL will continue to be supported for existing projects, while the ICV evolves to cover and extend its feature set — making the ICV the recommended choice for new developments.