<?php header("Content-Type: text/html; charset=utf-8"); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="GENERATOR" content="vim" /> <meta name="Author" content="sam@zoy.org (Sam Hocevar)" /> <meta name="Description" content="Libcaca study: the science behind colour ASCII art" /> <meta name="Keywords" content="libcaca, ASCII, ASCII ART, console, text mode, ncurses, slang, AAlib, dithering, thresholding" /> <title>Libcaca study: the science behind colour ASCII art</title> <link rel="icon" type="image/x-icon" href="/favicon.ico" /> <link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" /> <link rel="stylesheet" type="text/css" href="/main.css" /> </head> <body> <?php include($_SERVER["DOCUMENT_ROOT"]."/header.inc"); ?> <p> <span style="color: #aa0000; font-weight: bold;">Warning</span>: this document is still work in progress. Feel free to send comments but do not consider it final material. </p> <!--<div style="float: left;"> <a href=""></a> </div>--> <div style="float: right;"> <a href="part1.html">>>> Colour quantisation</a> </div> <br style="clear: both;" /> <h2> Libcaca study: the science behind colour ASCII art </h2> <p> This document is an attempt at extending the leverage of skilled resources by uncovering and addressing the challenges the industry faces today in the area of colour ASCII art generation. </p> <p> Seriously, guys. If you think that what libcaca does is easy, you either don’t know what you are talking about, or we want you in the team. </p> <h3> Foreword </h3> <p> Meet Lena. She will guide us through this document, because the seriousness of a scientific document in the area of computer graphics can be measured by the number of times Lena appears in it. She truly is the <i>Mona Lisa</i> of image processing. [2] </p> <p style="text-align: center;"> <img src="lena256.png" width="256" height="256" class="inline" alt="Lena (256×256)" /> <img src="gradient256.png" width="64" height="256" class="inline" alt="colour gradient (64×256)" /> <img src="lena256bw.png" width="256" height="256" class="inline" alt="Lena (256×256BW)" /> <img src="gradient256bw.png" width="32" height="256" class="inline" alt="greyscale gradient (32×256)" /> </p> <p> This document makes a lot of assumptions, such as the fact that input images are made of pixels that have either one (grey level) or three (red, green and blue) values uniformly spread between 0 and 1 (with regards to human contrast perception). Real life is more complicated than that, but that is beyond the scope of this document for now. </p> <h3> Table of contents </h3> <ul> <li> <a href="part1.html">1. Colour quantisation</a> <ul> <li> 1.1. Black and white thresholding </li> <li> 1.2. Greyscale thresholding </li> <li> 1.3. Dynamic thresholding </li> <li> 1.4. Random dithering </li> </ul> </li> <li> <a href="part2.html">2. Halftoning</a> <ul> <li> 2.1. Halftoning patterns </li> <li> 2.2. Screen artifacts </li> <li> 2.3. Ordered dithering </li> <li> 2.4. Random ordered dithering </li> <li> 2.5. Non-rectangular dither tiles </li> <li> 2.6. Supercell dithering </li> <li> 2.7. Void and cluster method </li> </ul> </li> <li> <a href="part3.html">3. Error diffusion</a> <ul> <li> 3.1. Floyd-Steinberg and JaJuNi error diffusion </li> <li> 3.2. Floyd-Steinberg derivatives </li> <li> 3.3. Changing image parsing direction </li> <li> 3.4. Variable coefficients error diffusion </li> <li> 3.5. Block error diffusion </li> <li> 3.6. Sub-block error diffusion </li> <li> 3.7. Direct binary search </li> </ul> </li> <li> <a href="part4.html">4. Model-based dithering</a> <ul> <li> 4.1. Gaussian human visual system model </li> <li> 4.2. Direct binary search </li> <li> 4.3 Comparing dithering algorithms </li> </ul> </li> <li> <a href="part5.html">5. Greyscale dithering</a> <ul> <li> 5.1. Introducing gamma </li> <li> 5.2. Gamma correction </li> <li> 5.3. Greyscale sub-block error diffusion </li> </ul> </li> <li> <a href="part6.html">6. Colour dithering</a> <ul> <li> 6.1. Separate-space dithering </li> <li> 6.2. Accounting for other dimensions </li> <li> 6.3. Reducing visual artifacts </li> <li> 6.4. Colour sub-block error diffusion </li> </ul> </li> <li> <a href="part7.html">7. Photographic mosaics</a> <ul> <li> 7.1. Image classification </li> <li> 7.2. Error diffusion </li> <li> 7.3. Colour ASCII art </li> </ul> </li> <li> <a href="biblio.html">Bibliography</a> </li> <li> <a href="source.html">Source code</a> </li> </ul> <!--<div style="float: left;"> <a href=""></a> </div>--> <div style="float: right;"> <a href="part1.html">>>> 1. Colour quantisation</a> </div> <?php $rev = '$Id$'; include($_SERVER['DOCUMENT_ROOT'].'/footer.inc'); ?> </body> </html>