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;ds=sidebyside
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.