osclet

Crates.ioosclet
lib.rsosclet
version0.3.1
created_at2025-11-04 20:43:01.673355+00
updated_at2026-01-10 17:58:40.53363+00
descriptionPlay with wavelets! Or they will play with you.
homepagehttps://github.com/awxkee/osclet
repositoryhttps://github.com/awxkee/osclet
max_upload_size
id1916914
size1,883,543
Radzivon Bartoshyk (awxkee)

documentation

https://github.com/awxkee/osclet

README

Osclet

Osclet is a high-performance Rust library for Discrete Wavelet Transform (DWT), Stationary Wavelet Transform (SWT), and their inverses. It supports f32, f64, and integer signals, with highly optimized implementations for modern architectures including ARM NEON (AArch64) and x86 SIMD (AVX/AVX2).


Features

  • Multi-level DWT decomposition for 1D signals (f32, f64, i16, i32).

  • Inverse DWT/SWT for exact or energy-preserving reconstruction.

  • Stationary Wavelet Transform (SWT) / Maximal Overlap DWT (MODWT) for shift-invariant analysis.

  • Support for multiple wavelet families: Daubechies (db1, db2, …)

    Symlets

    Coiflets

    Biorthogonal

    CDF 5/3 and CDF 9/7 (integer and floating-point variants)

    Custom wavelets via user-provided filter coefficients.

  • Border modes: zero-padding, symmetric, mirror, and circular wrap.

  • Thread-safe and parallel-ready.

  • Hardware-optimized using SIMD instructions: ARM NEON (AArch64) x86 AVX2/SSE

  • 2D separable wavelet transforms for images with row/column decomposition.

let signal: Vec<f64> = vec![1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0];
let dwt_executor = Osclet::make_daubechies_f64(DaubechiesFamily::Db4, BorderMode::Wrap);

let dwt = dwt_executor.dwt(&signal, 1).unwrap();
println!("Approximation coefficients: {:?}", dwt.approx);
println!("Detail coefficients: {:?}", dwt.detail);

This project is licensed under either of

  • BSD-3-Clause License (see LICENSE)
  • Apache License, Version 2.0 (see LICENSE)

at your option.

Commit count: 45

cargo fmt