pressio_tthresh
is a LibPressio compatible implementation of tthresh written by Robert Underwood.
The code borrows most of the original tthresh implementation, whose description can be found below.
TThresh is an open-source C++ implementation written by Rafael Ballester-Ripoll (rballester@ifi.uzh.ch) of the compressor developed in TTHRESH: Tensor Compression for Multidimensional Visual Data (R. Ballester-Ripoll, P. Lindstrom and R. Pajarola). It is intended for Cartesian grid data of 3 or more dimensions, and leverages the higher-order singular value decomposition (HOSVD), a generalization of the SVD to 3 and more dimensions.
If you use TTHRESH for a scientific publication, please cite one or both of these papers:
@article{BLP:19, Author = {Ballester-Ripoll, Rafael and Lindstrom, Peter and Pajarola, Renato}, Journal = {IEEE Transaction on Visualization and Computer Graphics}, Keywords = {visualization, data compression, volume rendering, higher-order decompositions, tensor approximation}, Note = {arXiv:1806.05952}, Title = {TTHRESH: Tensor Compression for Multidimensional Visual Data}, Volume = {to appear}, Year = {2019}}
- Lossy Volume Compression Using Tucker Truncation and Thresholding: ```@article{BP:15, year={2015}, issn={0178-2789}, journal={The Visual Computer}, title={Lossy volume compression using {T}ucker truncation and thresholding}, publisher={Springer Berlin Heidelberg}, keywords={Tensor approximation; Data compression; Higher-order decompositions; Tensor rank reduction; Multidimensional data encoding}, author={Ballester-Ripoll, Rafael and Pajarola, Renato}, pages={1-14}}
For more information on the Tucker transform and tensor-based volume compression, check out the [slides](http://www.ifi.uzh.ch/dam/jcr:00000000-73a0-83b8-ffff-ffffd48b8a42/tensorapproximation.pdf) of the authors of tthresh.
### Download
```bash
git clone https://github.com/rballester/tthresh.git
(or as a zip file).
Use CMake to generate an executable tthresh
:
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
make
Link to the library, and then use the libpressio interface.
The original work has this acknowledgments:
This work was partially supported by the UZH Forschungskredit "Candoc", grant number FK-16-012. I also thank Enrique G. Paredes for his help with CMake compilation issues.
Tensor-based compression is non-local, in the sense that all compressed coefficients contribute to the reconstruction of each individual voxel (in contrast to e.g. wavelet transforms or JPEG for images, which uses a localized DCT transform). This can be computationally demanding but decorrelates the data at all spatial scales, which has several advantages:
- Very competitive compression quality
- Fine bit-rate granularity
- Smooth degradation at high compression (in particular, no blocking artifacts or temporal glitches)
- Ability to downsample in the compressed domain