| 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] |