123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. <?php header("Content-Type: text/html; charset=utf-8"); ?>
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
  3. "http://www.w3.org/TR/xhtml1/DTD/xhtml11.dtd">
  4. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
  5. <head>
  6. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  7. <meta name="GENERATOR" content="vim" />
  8. <meta name="Author" content="sam@zoy.org (Sam Hocevar)" />
  9. <meta name="Description" content="Libcaca study: the science behind colour ASCII art" />
  10. <meta name="Keywords" content="libcaca, ASCII, ASCII ART, console, text mode, ncurses, slang, AAlib, dithering, thresholding" />
  11. <title>Libcaca study: the science behind colour ASCII art</title>
  12. <link rel="icon" type="image/x-icon" href="/favicon.ico" />
  13. <link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
  14. <link rel="stylesheet" type="text/css" href="/main.css" />
  15. </head>
  16. <body>
  17. <?php include($_SERVER["DOCUMENT_ROOT"]."/header.inc"); ?>
  18. <p> <span style="color: #aa0000; font-weight: bold;">Warning</span>: this
  19. document is still work in progress. Feel free to send comments but do not
  20. consider it final material. </p>
  21. <!--<div style="float: left;">
  22. <a href=""></a>
  23. </div>-->
  24. <div style="float: right;">
  25. <a href="part1.html">&gt;&gt;&gt; Colour quantisation</a>
  26. </div>
  27. <br style="clear: both;" />
  28. <h2> Libcaca study: the science behind colour ASCII art </h2>
  29. <p> This document is an attempt at extending the leverage of skilled
  30. resources by uncovering and addressing the challenges the industry faces
  31. today in the area of colour ASCII art generation. </p>
  32. <p> Seriously, guys. If you think that what libcaca does is easy, you either
  33. don’t know what you are talking about, or we want you in the team. </p>
  34. <h3> Foreword </h3>
  35. <p> Meet Lena. She will guide us through this document, because the
  36. seriousness of a scientific document in the area of computer graphics can
  37. be measured by the number of times Lena appears in it. She truly is the
  38. <i>Mona Lisa</i> of image processing. [2] </p>
  39. <p style="text-align: center;">
  40. <img src="lena256.png" width="256" height="256"
  41. class="inline" alt="Lena (256×256)" />
  42. <img src="gradient256.png" width="64" height="256"
  43. class="inline" alt="colour gradient (64×256)" />
  44. <img src="lena256bw.png" width="256" height="256"
  45. class="inline" alt="Lena (256×256BW)" />
  46. <img src="gradient256bw.png" width="32" height="256"
  47. class="inline" alt="greyscale gradient (32×256)" />
  48. </p>
  49. <p> This document makes a lot of assumptions, such as the fact that input
  50. images are made of pixels that have either one (grey level) or three (red,
  51. green and blue) values uniformly spread between 0 and 1 (with regards to
  52. human contrast perception). Real life is more complicated than that, but
  53. that is beyond the scope of this document for now. </p>
  54. <h3> Table of contents </h3>
  55. <ul>
  56. <li> <a href="part1.html">1. Colour quantisation</a>
  57. <ul>
  58. <li> 1.1. Black and white thresholding </li>
  59. <li> 1.2. Greyscale thresholding </li>
  60. <li> 1.3. Dynamic thresholding </li>
  61. <li> 1.4. Random dithering </li>
  62. </ul>
  63. </li>
  64. <li> <a href="part2.html">2. Halftoning</a>
  65. <ul>
  66. <li> 2.1. Halftoning patterns </li>
  67. <li> 2.2. Screen artifacts </li>
  68. <li> 2.3. Ordered dithering </li>
  69. <li> 2.4. Random ordered dithering </li>
  70. <li> 2.5. Non-rectangular dither tiles </li>
  71. <li> 2.6. Supercell dithering </li>
  72. <li> 2.7. Void and cluster method </li>
  73. </ul>
  74. </li>
  75. <li> <a href="part3.html">3. Error diffusion</a>
  76. <ul>
  77. <li> 3.1. Floyd-Steinberg and JaJuNi error diffusion </li>
  78. <li> 3.2. Floyd-Steinberg derivatives </li>
  79. <li> 3.3. Changing image parsing direction </li>
  80. <li> 3.4. Variable coefficients error diffusion </li>
  81. <li> 3.5. Block error diffusion </li>
  82. <li> 3.6. Sub-block error diffusion </li>
  83. <li> 3.7. Direct binary search </li>
  84. </ul>
  85. </li>
  86. <li> <a href="part4.html">4. Model-based dithering</a>
  87. <ul>
  88. <li> 4.1. Gaussian human visual system model </li>
  89. <li> 4.2. Direct binary search </li>
  90. <li> 4.3 Comparing dithering algorithms </li>
  91. </ul>
  92. </li>
  93. <li> <a href="part5.html">5. Greyscale dithering</a>
  94. <ul>
  95. <li> 5.1. Introducing gamma </li>
  96. <li> 5.2. Gamma correction </li>
  97. <li> 5.3. Greyscale sub-block error diffusion </li>
  98. </ul>
  99. </li>
  100. <li> <a href="part6.html">6. Colour dithering</a>
  101. <ul>
  102. <li> 6.1. Separate-space dithering </li>
  103. <li> 6.2. Accounting for other dimensions </li>
  104. <li> 6.3. Reducing visual artifacts </li>
  105. <li> 6.4. Colour sub-block error diffusion </li>
  106. </ul>
  107. </li>
  108. <li> <a href="part7.html">7. Photographic mosaics</a>
  109. <ul>
  110. <li> 7.1. Image classification </li>
  111. <li> 7.2. Error diffusion </li>
  112. <li> 7.3. Colour ASCII art </li>
  113. </ul>
  114. </li>
  115. <li> <a href="biblio.html">Bibliography</a> </li>
  116. <li> <a href="source.html">Source code</a> </li>
  117. </ul>
  118. <!--<div style="float: left;">
  119. <a href=""></a>
  120. </div>-->
  121. <div style="float: right;">
  122. <a href="part1.html">&gt;&gt;&gt; 1. Colour quantisation</a>
  123. </div>
  124. <?php $rev = '$Id$';
  125. include($_SERVER['DOCUMENT_ROOT'].'/footer.inc'); ?>
  126. </body>
  127. </html>