ImageSqueeze - lossy image codec
+1 General
+-
+
- This program is free software: released under Creative Commons Zero +(CC0) license + -This software is distributed under GNU GENERAL PUBLIC LICENSE Version 2. +
- Program author:
+
-
+
- Svjatoslav Agejenko + +
- Homepage: https://svjatoslav.eu + +
- Email: mailto://svjatoslav@svjatoslav.eu + +
+ - Other software projects hosted at svjatoslav.eu + +
1.1 Source code
+-
+
- Download latest snapshot in TAR GZ format + -I believe my algorithm has following advantages: - * Fast. Relatively few computations per pixel. - * Easy to add support for progressive image loading. (Saving is already progressive) +
- Browse Git repository online + -Current limitations / to do: - * Documentation describing idea behind this algorithm is still missing (lack of time) - * Code documentation is weak. - * Better sample applications needed: Commandline image conversion utility. Image viewer. +
- Clone Git repository using command:
+
+git clone https://www2.svjatoslav.eu/git/imagesqueeze.git +
+
+
2 Overview
++Lossy image codec. Optimized for photos. I developed it to test out an +image compression ideas. +
-When looking very closely, slight grainyness, loss of color precision and -blurriness (loss of detail) could be noticed as a compression artifacts. -Still sharp edges are always preserved. Also no blocks typical to JPEG are ever seen. -I think that is awesome result for just ~ 2.5 bits per pixel on that color photo. - ++I believe my algorighm has interesting advantages. +
+ ++Below are original photo and the same image being compressed down to +~93 Kb and then decompressed. +
+ + + + ++When looking very closely, slight grainyness, loss of color precision +and blurriness (loss of detail) could be noticed as a compression +artifacts. Still sharp edges are always preserved. Also no blocks +typical to JPEG are ever seen. I think that is awesome result for +just ~ 2.5 bits per pixel on that color photo. +
+3 Algorithm description
+-
+
- Color image is split into three separate channels: Y, U and V.
+
-
+
- Each channel is independently compressed. + +
+
+ - Single channel compression method:
+
+
-
+
- Algorithm is inspired by diamond-square algorithm that is meant to +produce random heightmap/plasma effect. + + +
- During image compression: 2D image surface is iterated in the +similar manner to diamond-square algorithm. Average color from +neighbors is calculated and difference between neighbors average +and actual pixel color is saved. As the pixel grid becomes +gradually more dense, difference between neighbors tends to get +smaller, thereby requiring less bits per pixel for storing the +difference. + +
+
3.1 Algorighm advantages
+-
+
- It can be applied to any amount of dimensions, even for sound and +volumetric data. + + +
- Algorithm can operate in lossy and lossless mode. + + +
- Algorithm naturally handles progressive loading. That is: low +resolution thumbnail of entire thing is immediately available and +gets gradually more dense during entire loading process. + + +
- Algorithm naturally supports variable resolution. That is: different +areas can be encoded with different resolutions / pixel densities. + + +
- Fast: Very little computations per pixel. + +
4 TODO Things to improve
+-
+
- Code documentation is weak. + + +
- Better sample applications needed:
+
-
+
- Commandline image conversion utility. + +
- Image viewer. + +
+
+ - Add lossless support. + + +
- Extract algorithm key parts into reusable library and make it +variable dimensional. So that the same code can be used for sound, +image and volumetric data compression/decompression. + +