Hi all,
I’ve been working on reprocessing a large dataset (M3 for those interested), and turned to wavelets (my beloved) for background radiance removal.
Wavelets.jl is great, and should probably be your first port of call. They support way more algorithms (best-basis algorithms like matched pursuit, various denoising schemes, etc.) than this library does.
Unfortunately, it didn’t do the trick for me; M3 observations are 300 pixels by 30,000 pixels by 85 spectral indices. Thinking in terms of filter bank trees, analysis is best suited to nonstandard wavelet packet transforms with additional transform levels in the along-track direction – which Wavelets.jl didn’t support.
So, I rolled my own package. This used to sit in another repo (MoonTools.jl, which I’m hoping to post soon), but ended up being useful as a standalone package.
I figured that others might find this useful, so – here’s NDWaveletTransforms.jl!
Features:
- Transforms of arbitrary dimensions.
- Speed. Lots of speed.
- Band-indexing notation using
rtview()and@rtview. - A small selection of wavelet-adjacent algorithms (cycle-spinning, cascade algorithm, etc.)
Limitations:
- Currently, only orthogonal bases are supported, as those are what I need.
- No continuous wavelets - if it’s not from a filter bank, it’s not here, at the moment.
I wrote this library in pieces over many months, but used an LLM to prep for this release (bug-squashing, optimisation, etc.).
Please feel free to raise issues, ask questions, etc. - I’ll do my best to be responsive.
Cheers all!