ACACIA (Advanced Content-Adaptive Compressor of ImAges) is an image compression tool which allows users to target specific image quality or file size metrics when compressing an image with JPEG or WebP. It adjusts to each image individually, with only minimal additional compression time. It is available with a graphical interface, and with a CLI for batch processing.
Current version: 0.17.
ACACIA operates by using machine learning to predict how an individual image will be compressed, and adjusts the aggressiveness of compression accordingly. ACACIA is not production software. Its primary purpose is to demonstrate research techniques.
If you use ACACIA in your research, please cite our paper describing the techniques used:
Predicting and Optimizing Image Compression, In the Proceedings of the 2016 ACM Conference on Multimedia, Pages 665-669 http://dl.acm.org/citation.cfm?doid=2964284.2967305
A preprint of the paper is available at http://jt.host.cs.st-andrews.ac.uk/
Contacts:
- John Thomson <j.thomson@st-andrews.ac.uk>
- Oleksandr Murashko <om21@st-andrews.ac.uk>
This application has GUI and command line modes. If run without arguments it starts in GUI by default. Use acacia --help
to see the list of command line options.
Note: Windows version GUI doesn't scale properly on 4k screens just now.
This version of the tool is designed to work with previously uncompressed images, obtained from a camera sensor, developed raw file, or from resizing a compressed image. If the supplied image has previously be compressed, it will still work, but might be less accurate. Support for previously compressed images is planned for later versions.
A test set of images can be downloaded at http://om21.host.cs.st-andrews.ac.uk/60_test_images_CC0.zip They are licensed under Creative Commons Zero - we are grateful to those generated them.
Alpha channel and images with high-contrast vector graphics are currently not supported.
ACACIA is free, open source software. An important aspect of all research is measuring and understanding the impact of research. If you use ACACIA or even just like it, please let us know at j.thomson@st-andrews.ac.uk. This helps us greatly in funding future research.
To compile and run ACACIA, you need the Qt library (mainly for GUI), as well as libjpeg and libwebp. This version was tested with the following external libraries: qt-4.8.7, libjpeg-turbo-1.5.0, libwebp-0.5.0. Also, this program uses AVX and AVX2 vector instructions, and requires a CPU that supports them.
- Install Qt developer tools with Qt Creator.
- Install external image compression libraries: libjpeg-turbo (may already be installed in your distribution) and libwebp.
- Open project file "acacia.pro" in Qt Creator.
- Change paths to image libraries in "acacia.pro" file according to your OS.
- Build project.
- Make sure all necessary external dynamic libraries can be located by application when it starts.
To build in Windows you can also use Visual Studio with installed "Qt Addin" plugin. You may need to copy some external libraries (like Qt and libjpeg dll's) alongside the executable to run it - if they are not present in the Windows PATH.
To build in Linux without Qt Creator go to the project directory, change paths to image libraries in "acacia.pro" file and execute:
qmake acacia.pro
make
ACACIA is licensed under GPL3. It uses Qt, libjpeg-turbo (or libjpeg) and libwebp under their respective licenses.
If you would like to integrate ACACIA into your project (open source or otherwise) and would like to discuss a different licence, please get in touch.