Changelog¶
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[0.8.1] - 2025-10-24¶
Fixed¶
The C/C++ reference in the docs is now included correctly.
The documentation’s live demo has been fixed.
[0.8.0] - 2025-10-22¶
Added¶
sdk:
HSImagemethodstreamadded - it starts a concurrent stream with a full slice.sdk: Initial experimental support for qamlib-rs (internal use only).
c-ffi: Debug format functions added for most types.
c-ffi:
hv_ensure_dtypemethod added.c-ffi: You can now edit/get extra metadata in the header with the
hv_hsi_header_get/hv_hsi_header_setmethods.python: The python API now supports the
streammethod and theHSIStreamtype. Support is still experimental.apps: New cli application
hvfor performing basic operations. Currently, the application can just show file information.docs: New unified API documentation and guides. Includes a wasm-based demo of the Python API.
Changed¶
sdk:
HSImagemethodslice_iterchanged tostream_slice.sdk:
HSImagemethodslice_arraychanged toarray_slice.sdk:
HSImagemethodplane_axischanged toarray_plane.sdk:
HSImagemethodfullchanged toarray_full.sdk:
HSImagemethodplane_axis_cropchanged toarray_plane_crop.
Deprecated¶
sdk:
HSImagemethodarray_plane_cropis deprecated. Instead, useslicefollowed byarray_plane.
Removed¶
apps: Old unused applications (hsi-viewer).
Fixed¶
A critical bug in the camera API that prevented the camera from streaming.
[0.7.3] - 2025-09-27¶
Added¶
Scalar operations for images (both left and right hand side)
HSIStream now provides a synchronous mode. This is useful for applying lightweight operations. Most simple operations, including
as_dtype,nan_to_num, etc. now use this mode.The C and Python APIs support the added scalar operations.
[0.7.2] - 2025-08-19¶
Added¶
C bindings for the entire SDK.
Doxygen documentation for the C bindings.
[0.7.1] - 2025-08-18¶
Added¶
Small PCA/projection sample program.
A rust
writefunction similar to the one implemented for the Python API.
Fixed¶
A bug in InterleaveChangeOperation where the shape was not correctly updated, resulting in broadcasting errors in many cases.
[0.7.0] - 2025-08-10¶
This update introduces infinite data streams and integration with the HyperVision 1700 camera.
Added¶
Initial generic HyperVision camera API.
Interface layer for the quark-backend REST API.
Image-backed camera type that can simulate a real camera.
Initial integration between cameras and the HSImage/HSImageOps API.
Initial Python API reflecting the Rust camera APIs.
An
openfunction in the Rust API that detects file extension and header/data file for ENVI files. It is an improvement to the Python API version and the Python function now just calls the Rust function internally.
Changed¶
The framework uses a new ShapeMeta type to allow for infinite streams of hsi data.
The Python calibration routines now support setting a target interleave and uses the rust-based ensure_dtype method.
Fixed a bug in the PAM header writing code when calculating the PAM shape.
The documentation is now published to qtec-mono.
The image-tiff fork has been rebased onto the latest main branch (version 0.10)
The HSIReader trait has been removed completely. Having individual
openmethods makes it easier to account for file type differences.
Fixed¶
A bug in MeanAxisOp, where it would not work correctly in certain instances.
A bug in InterleaveChange, where the shape was not calculated correctly for BSQ output.
A deprecated use of PyTuple became a bug when updating the pyo3 version.
A bug in the PAM header writing code where the shape calculation would be wrong.
An issue with the ENVI header parser not working correctly for files with CRLF endings. A new test has been added to check for these special cases.
[0.6.3] - 2025-06-09¶
Added¶
NanToNum operation that replaces NaN values with a specified value.
Changed¶
predictorin the Python API now replaces nan values with 0 before calling the model’s predict function.
[0.6.2] - 2025-06-01¶
Added¶
Operation decorator for easy adaptation of Python functions into the SDK.
Predictor function wrapper for easily integrating scikit-learn models into the framework.
Pca-model function wrapper for efficient integration of projection models.
Documentation has been updated with new information.
Fixed¶
The ufunc (VectorizedUnaryOp) operator did not correctly adjust the slice for the source image.
[0.6.1] - 2025-05-23¶
Added¶
New Binning operation.
Changed¶
Combining slices now skips single indexes, which is more efficient.
Streams now return Result for each element, which makes proper error handling possible.
Array reconstruction now prints channel-related errors to stderr for easier debugging.
Fixed¶
Bug in interleave change that caused slices not to be correctly calculated.
Added an extra GIL lock to VectorizedUnaryOp which caused segfaults.
[0.6.0] - 2025-05-02¶
Added¶
Data processing is now performed using the HSIStream type which uses Rayon and crossbeam to asynchronously execute pipelines.
Slicing is now done using the new SliceElem and SliceDescriptor types that are based specifically on HSI terminology.
Slicing shapes are now validated and returns an appropriate error when relevant.
Added a mask selection operation, which uses a boolean mask array to select spatial pixels.
Changed¶
The HSIError::ShapeError variant now has a backtrace. This may be added to other errors in the future.
Switched to the nightly compiler.
Debug symbols have been removed from the release build.
[0.5.6] - 2025-03-13¶
Changed¶
Package/library name is now
qtec-hv-sdk. This prevents naming clashes and increases clarity. The Python import is stillhsi.
[0.5.5] - 2025-03-12¶
Changed¶
Now using a manylinux_2_28 based image to build the binary packages.
The public package upload now only publishes the binary packages.
[0.5.4] - 2025-03-10¶
Changed¶
Packages are now uploaded to our public repo.
[0.5.3] - 2025-03-03¶
Changed¶
Dynarray version bumped to 0.5.3 to make it equivalent to the rest of the packages. Since they are updated together, this makes versions much simpler to understand.
Fixed¶
Updated CI to fix Windows build.
[0.5.2] - 2025-02-25¶
Added¶
Interleave change operation
Changed¶
Select operation now uses
Array2instead of a vector of tuples.The Python API for select now automatically converts Numpy arrays, list of lists, and lists of tuples to
Array2internally.
Fixed¶
Blas inclusion did not work properly on windows. It has now been made optional and is not used in the automated builds. The current impact on performance is negligible.
Modified CI to correctly build for linux/windows distributions and added a source distribution for easy local compilation.
Some doc pages didn’t build correctly due to a missing dependency.
[0.5.1] - 2025-01-28¶
Added¶
Select operation that allows passing a list of arbitrary line/sample coordinates to select a spectral subset of an image. Useful for subsampling patterns.
random_sampleutility function for the Python extension to easily generate random samples (currently with repetition).
Changed¶
Tiff default interleave is now BSQ, which is the most intuitive format when viewing the files in regular image editors.
Fixed¶
A few errors in the documentation (recipes section).
[0.5.0] - 2024-11-06¶
Added¶
Matrix-vector and Matrix-matrix product support.
Basic tiff support added.
Documentation of operations and missing basic types in the Python docs.
Header modification operation (will likely change since it is cumbersome to use).
Added blas support.
Changed¶
Mean now uses a memory efficient approach for BSQ. This should be adapted to other reductions.
Fixed¶
Interleave bugs everywhere
Slicing bugs in many places.
[0.4.0] - 2024-08-02¶
Added¶
HSImage trait for a unified interface for image types and operations.
HSImageOps trait for arithmetic operations (addition, subtraction, multiplication, division) as well as type changes, numeric clamping, and axis reduction functions (mean, std, var, sum).
Lazy slicing through
slice_iterfor building compound operations.InMemoryCube can now be created directly from an array.
(python) Preprocessing module with SNV and reflectance calibration functions.
(python) Magic methods implemented for arithmetic operations.
(python) Index magic method implemented as lazy slicing.
(python) Can create new HSImages from NumPy arrays.
Changed¶
HSIFile and InMemoryCube now work through the unified HSImage trait.
(python) Writing now works directly on HSImage objects.
Fixed¶
Multiple bugs related to slicing and indexing.
Deprecated¶
(python) HSIFile is no longer used in the python API.
[0.3.0] - 2024-06-03¶
Added¶
Read individual planes of HSI files.
Added in-memory HSI type. The interface is likely to change.
Changed¶
Refactored crate into several sub-crates for each specific area of functionality.
Fixed¶
Bug in
hsi-cliwhere the header would not be updated.Bug where files would be read incorrectly.
[0.2.0]¶
Added¶
Conversion between PAM, ENVI, and yaml hyperspectral file formats.
Conversion between HSI interleave formats.
Memory efficient implementation only reads and processes small chunks of a file at a time.
Iterator implementations for processing hyperspectral data.
(cli) A simple tool for converting between file formats and interleaves.