X-Git-Url: http://www2.svjatoslav.eu/gitweb/?p=imagesqueeze.git;a=blobdiff_plain;f=doc%2Findex.html;h=5301bcfb0ae9a9db943f867816efbfb3a9805a3c;hp=406aa91779ce6a3b43fb8788b080785bf4862725;hb=3290570a4cac6708f4488f068029e557c96e1853;hpb=d382fb70d9d196ecd1ae6d9190d57f330eb5c121 diff --git a/doc/index.html b/doc/index.html index 406aa91..5301bcf 100644 --- a/doc/index.html +++ b/doc/index.html @@ -1,47 +1,360 @@ - - + + - - ImageSqueeze +ImageSqueeze - lossy image codec + + + + + + + +" + + + -

ImageSqueeze - lossy image codec

-Download -   -Online homepage -   -Other applications hosted on svjatoslav.eu -
-Program author:
-    Svjatoslav Agejenko
-    Homepage: http://svjatoslav.eu
-    Email: svjatoslav@svjatoslav.eu
-
-This software is distributed under GNU GENERAL PUBLIC LICENSE Version 2.
-
-
-Lossy image codec. Optimized for photos.
-I developed it to test out an image compression ideas.
-
-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)
-
-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.
-
-
-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. 
-
+
+

ImageSqueeze - lossy image codec

+
+ + +
+

1 Overview

+
+

+Lossy image codec. Optimized for photos. I developed it to test out an +image compression ideas. +

+ +

+I believe my algorighm has interesting advantages. +

+ +

+Below are original photo and the same image being compressed down to +~93 Kb and then decompressed. +

+ + +
+

originalAndCompressed.png +

+
+ +

+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. +

+
+
+
+

2 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. +
    • +
    +
  • +
+
+
+

2.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. +
  • +
+
+
+
+ +
+

3 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. +
  • +
+
+
+
+