Special-graphic-formats / ako

Lossy image format using discrete wavelet transform.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Ako

Lossy image codec using discrete wavelet transform.

It supports/implements:

  • Deslauriers-Dubuc 13/7 and CDF 5/3, wavelets.
  • Configurable quality loss (showcase below).
  • 8 bits per component. 4 channels.
  • Reversible YCoCg color transformation.
  • Elias coding + Rle compression. Nonetheless can handle ratios of 1:12 before artifacts became visible.
  • Good performance. There is care on cache and memory usage.
  • Everything is done with integers, ensuring always identical outputs (even in lossy compression).

And in an experimental state:

  • Lossless compression.

Showcase

Cafe

12:1 (327.74 kB) 24:1 (163.12 kB) 48:1 (81.86 kB)
cafe-thumb-12 cafe-thumb-24 cafe-thumb-48

Tractor

12:1 (973.95 kB) 24:1 (506.31 kB) 48:1 (252.05 kB)
tractor-thumb12 tractor-thumb24 tractor-thumb48

Compilation

Aside from C and C++ compilers (later only needed to build executable tools), the only requirement is cmake. On Ubuntu you can install it with:

sudo apt install cmake

Then compile with:

mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
cmake --build . --config Release

Tools usage

Two executables: akoenc and akodec will let you try the codec. Run them without any argument to read the usage help. But, in most cases is:

akoenc -q 16 -i "input.png" -o "out.ako"
  • Where -q 16 is the quantization step that controls loss.
  • There is also a noise gate, with -g 16, it can be used as a denoiser to help with compression. It is possible to use both, or disable either one with a value of zero.

References

At the end of the day this is a toy-project, it's me having fun while learning how image codecs work. So, my thanks to following authors:

  • ADAMS, Michael David (2002). Reversible Integer-to-integer Wavelet Transforms For Image Coding. University of British Columbia.
  • ARNTZEN, Hans-Kristian (2014). Linelet, an Ultra-Low Complexity, Ultra-Low Latency Video Codec for Adaptation of HD-SDI to Ethernet. Norwegian University of Science and Technology Department of Electronics and Telecommunications.
  • CHRISTOPOULOS, Charilaos, SKODRAS, Athanassios & EBRAHIMI, Touradj (2000). The JPEG2000 Still Image Coding System: An Overview. IEEE Transactions on Consumer Electronics, Vol. 46, No. 4, pp. 1103-1127.
  • DAUBECHIES, Ingrid & SWELDENS, Wim (1998). Factoring Wavelet Transforms Into Lifting Steps. The Journal of Fourier Analysis and Applications 4, pp. 247–269.
  • FYFFE, Graham (2016). GFWX: Good, Fast Wavelet Codec. ICT Tech Report ICT-TR-01-2016. University of Southern California Institute.
  • KIELY, A., KLIMESH, M. (2003). The ICER Progressive Wavelet Image Compressor. IPN Progress Report 42-155.
  • ? (2008 September 23). Dirac Specification Version 2.2.3.

And in the early days of the project, when terms like "lift" and "dyadic" were incredible obscure, hardware oriented papers gave me an invaluable help:

  • AL-AZAWI, Saad, ABBAS, Yasir Amer & JIDIN, Razali. (2014). Low Complexity Multidimensional CDF 5/3 DWT Architecture. 9th International Symposium on Communication Systems, Networks & Digital Sign (CSNDSP).
  • ANGELOPOULOU, Maria, CHEUNG, Peter, MASSELOS, Konstantinos & ANDREOPOULOS, Yiannis (2008). Implementation and Comparison of the 5/3 Lifting 2D Discrete Wavelet Transform Computation Schedules on FPGAs. Journal of VLSI Signal Processing. pp. 3-21.
  • HEDGE, Shriram & RAMACHADRAN, S. (2014). Implementation of CDF 5/3 Wavelet Transform. International Journal of Electrical, Electronics and Data Communication. Vol. 2, No. 11, pp. 36-38.

Not directly related, but influencing the project:

  • HANS, Mat & SCHAFER, Ronald (1999). Lossless Compression of Digital Audio. HP Laboratories Palo Alto.
  • ROBINSON, Tony (1994). Shorten: Simple Lossless And Near-Lossless Waveform Compression. Cambridge University Engineering Department Technical Report CUED/F-INFENG/TR156.
  • WEINBERGER, Marcelo, SEROUSSI, Gadiel & SAPIRO, Guillermo (2000). The LOCO-I Lossless Image Compression Algorithm: Principles and Standardization into JPEG-LS. IEEE Transactions on Image Processing, Vol. 9, No. 8, pp. 1309-1324.
  • ? (????). FLAC Format Specification. Retrieved from: https://xiph.org/flac/format.html.

License

Source code under MIT License. Terms specified in LICENSE.

Each file includes the respective notice at the beginning.


About

Lossy image format using discrete wavelet transform.

License:MIT License


Languages

Language:C 60.9%Language:C++ 37.4%Language:CMake 1.3%Language:Shell 0.3%