# The dtcwt library

The `dtcwt` library provides a Python implementation of the 1, 2 and 3-D dual-tree complex wavelet transform along with some associated algorithms. It contains a pure CPU implementation which makes use of NumPy along with an accelerated GPU implementation using OpenCL.

## Comparison with MATLAB toolbox

The canonical implementation of the DT-CWT is that provided by Professor Nick Kingsbury on his website. This library aims to have near-identical output (to within a small multiple of machine precision). Significant deviation is a bug and should be reported. Cross-verification of the transform output is part of the test suite and each and every change is checked against that test suite automatically.

It is hoped that testing this will allow confidence in this library being suitable for porting existing MATLAB scripts over to Python. To that end there is a `dtcwt.compat` module which provides an API similar to the original MATLAB toolbox.

## Contents

- Getting Started
  - Installation
- Performing the DTCWT
  - 1D transform
  - 2D transform
  - 3D transform
  - Variant transforms
- Multiple Backend Support
  - NumPy
  - OpenCL
  - Tensorflow
  - Which backend should I use?
  - Using a backend
- DTCWT-based algorithms
  - Image Registration
- Example scripts
  - Showing 3D Directional Sensitivity
  - 2D Image Registration
- API Reference
  - Main interface
  - Keypoint analysis
  - Image sampling
  - Image registration
  - Plotting functions
  - Miscellaneous and low-level support functions
  - Compatibility with MATLAB
  - Backends