Coder Social home page Coder Social logo

anko / acacia Goto Github PK

View Code? Open in Web Editor NEW

This project forked from johndthomson/acacia

0.0 3.0 0.0 1 MB

ACACIA (Advanced Content-Adaptive Compressor of ImAges) is an image compression tool which allows the users to target specific image quality or file size metrics when compressing an image with JPEG or WebP, with only minimal additional compression time. It does this by using machine learning to predict how an individual image will be compressed, and adjusts the aggressiveness of compression accordingly.

License: GNU General Public License v3.0

QMake 1.46% C++ 39.90% C 58.64%

acacia's Introduction

ACACIA

screenshot

ACACIA (Advanced Content-Adaptive Compressor of ImAges) is an image compression tool which allows the users to target specific image quality or file size metrics when compressing an image with JPEG or WebP, with only minimal additional compression time. It does this by using machine learning to predict how an individual image will be compressed, and adjusts the aggressiveness of compression accordingly.

ACACIA allows users to target compression to their file size or quality needs, significantly increasing the effectiveness of compression by adjusting to each individual image. It is available with a graphical interface, and with a CLI for batch processing.

ACACIA is licensed under GPL3. It uses Qt, libjpeg-turbo (or libjpeg) and libwebp under their respective licenses.

Current version: 0.17.

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 [email protected]. This helps us greatly in funding future research.

ACACIA is not production software. Its primary purpose is to demonstrate research techniques.

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.

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 - [email protected]
- Oleksandr Murashko - [email protected]

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.

To compile and run ACACIA you need 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 respective CPU to run.


To compile in Windows, Linux or OSX using Qt Creator:

  1. Install Qt developer tools with Qt Creator.
  2. Install external image compression libraries: libjpeg-turbo (may already be installed in your distribution) and libwebp.
  3. Open project file "acacia.pro" in Qt Creator.
  4. Change paths to image libraries in "acacia.pro" file according to your OS.
  5. Build project.
  6. 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

Analytics

acacia's People

Contributors

johndthomson avatar oleksandr-murashko avatar

Watchers

 avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.