X-Git-Url: http://www2.svjatoslav.eu/gitweb/?p=imagesqueeze.git;a=blobdiff_plain;f=doc%2Findex.org;fp=doc%2Findex.org;h=e98689d1e79a89dba7c492fb5dbdc26aa2214573;hp=0000000000000000000000000000000000000000;hb=3290570a4cac6708f4488f068029e557c96e1853;hpb=d382fb70d9d196ecd1ae6d9190d57f330eb5c121 diff --git a/doc/index.org b/doc/index.org new file mode 100644 index 0000000..e98689d --- /dev/null +++ b/doc/index.org @@ -0,0 +1,87 @@ +#+TITLE: ImageSqueeze - lossy image codec + +----- +- [[http://www2.svjatoslav.eu/gitweb/?p=imagesqueeze.git;a=snapshot;h=HEAD;sf=tgz][download latest snapshot]] + +- This program is free software; you can redistribute it and/or modify it under + the terms of version 3 of the [[https://www.gnu.org/licenses/lgpl.html][GNU Lesser General Public License]] or later as + published by the Free Software Foundation. + +- Program author: + - Svjatoslav Agejenko + - Homepage: http://svjatoslav.eu + - Email: mailto://svjatoslav@svjatoslav.eu + +- [[http://www.svjatoslav.eu/programs.jsp][other applications hosted at svjatoslav.eu]] + +* (document settings) :noexport: +** use dark style for TWBS-HTML exporter +#+HTML_HEAD: +#+HTML_HEAD: +#+HTML_HEAD: " +#+HTML_HEAD: +* Overview +Lossy image codec. Optimized for photos. I developed it to test out an +image compression ideas. + +I believe my [[id:1d917f74-e763-4a71-976e-4aa60732efa6][algorighm has interesting advantages.]] + +Below are original photo and the same image being compressed down to +~93 Kb and then decompressed. + +[[file:originalAndCompressed.png][file: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. +* 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 [[https://en.wikipedia.org/wiki/Diamond-square_algorithm][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. +** Algorighm advantages + :PROPERTIES: + :ID: 1d917f74-e763-4a71-976e-4aa60732efa6 + :END: ++ 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. + +* 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.