|   | 1 | = Libcaca study: the science behind colour ASCII art = | 
                  
                          |   | 2 |  | 
                  
                          |   | 3 | 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. | 
                  
                          |   | 4 |  | 
                  
                          |   | 5 | 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. | 
                  
                          |   | 6 |  | 
                  
                          |   | 7 | == Foreword == | 
                  
                          |   | 8 |  | 
                  
                          |   | 9 | 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 Mona Lisa of image processing. ![2] | 
                  
                          |   | 10 |  | 
                  
                          |   | 11 | [[Image(source:/web/trunk/static/study/lena256.png,alt="Lena (256×256)")]] | 
                  
                          |   | 12 | [[Image(source:/web/trunk/static/study/gradient256.png,alt="colour gradient (64×256)")]] | 
                  
                          |   | 13 | [[Image(source:/web/trunk/static/study/lena256bw.png,alt="Lena (256×256BW)")]] | 
                  
                          |   | 14 | [[Image(source:/web/trunk/static/study/gradient256bw.png,alt="greyscale gradient (32×256)")]] | 
                  
                          |   | 15 |  | 
                  
                          |   | 16 | 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. | 
                  
                          |   | 17 | Table of contents | 
                  
                          |   | 18 |  | 
                  
                          |   | 19 |  * [wiki:libcaca/study/1 1. Colour quantisation] | 
                  
                          |   | 20 |    * 1.1. Black and white thresholding | 
                  
                          |   | 21 |    * 1.2. Greyscale thresholding | 
                  
                          |   | 22 |    * 1.3. Dynamic thresholding | 
                  
                          |   | 23 |    * 1.4. Random dithering | 
                  
                          |   | 24 |  * [wiki:libcaca/study/2 2. Halftoning] | 
                  
                          |   | 25 |    * 2.1. Halftoning patterns | 
                  
                          |   | 26 |    * 2.2. Screen artifacts | 
                  
                          |   | 27 |    * 2.3. Ordered dithering | 
                  
                          |   | 28 |    * 2.4. Random ordered dithering | 
                  
                          |   | 29 |    * 2.5. Non-rectangular dither tiles | 
                  
                          |   | 30 |    * 2.6. Supercell dithering | 
                  
                          |   | 31 |    * 2.7. Void and cluster method | 
                  
                          |   | 32 |  * [wiki:libcaca/study/3 3. Error diffusion] | 
                  
                          |   | 33 |    * 3.1. Floyd-Steinberg and !JaJuNi error diffusion | 
                  
                          |   | 34 |    * 3.2. Floyd-Steinberg derivatives | 
                  
                          |   | 35 |    * 3.3. Changing image parsing direction | 
                  
                          |   | 36 |    * 3.4. Variable coefficients error diffusion | 
                  
                          |   | 37 |    * 3.5. Block error diffusion | 
                  
                          |   | 38 |    * 3.6. Sub-block error diffusion | 
                  
                          |   | 39 |    * 3.7. Direct binary search | 
                  
                          |   | 40 |  * [wiki:libcaca/study/4 4. Model-based dithering] | 
                  
                          |   | 41 |    * 4.1. Gaussian human visual system model | 
                  
                          |   | 42 |    * 4.2. Direct binary search | 
                  
                          |   | 43 |    * 4.3 Comparing dithering algorithms | 
                  
                          |   | 44 |  * [wiki:libcaca/study/5 5. Greyscale dithering] | 
                  
                          |   | 45 |    * 5.1. Introducing gamma | 
                  
                          |   | 46 |    * 5.2. Gamma correction | 
                  
                          |   | 47 |    * 5.3. Greyscale sub-block error diffusion | 
                  
                          |   | 48 |  * [wiki:libcaca/study/6 6. Colour dithering] | 
                  
                          |   | 49 |    * 6.1. Separate-space dithering | 
                  
                          |   | 50 |    * 6.2. Accounting for other dimensions | 
                  
                          |   | 51 |    * 6.3. Reducing visual artifacts | 
                  
                          |   | 52 |    * 6.4. Colour sub-block error diffusion | 
                  
                          |   | 53 |  * [wiki:libcaca/study/7 7. Photographic mosaics] | 
                  
                          |   | 54 |    * 7.1. Image classification | 
                  
                          |   | 55 |    * 7.2. Error diffusion | 
                  
                          |   | 56 |    * 7.3. Colour ASCII art | 
                  
                          |   | 57 |  * [wiki:libcaca/study/bibliography Bibliography] |