Title: Pointillist Halftoning Alejo Hausner CS Department University of New Hampshire
1Pointillist HalftoningAlejo HausnerCS
DepartmentUniversity of New Hampshire
2Color Reduction Problem
- Print continuous-tone images
- image colors gtgt device colors
- eg laser printer colors 2
Continuous tone
Fixed threshold
Random threshold
3Halftoning
- Spatial vs Color Resolution
- eye fuses dot patterns, sees color tones
- Ordered dither
- Bayer, Clustered-dot
- Error diffusion
- Floyd-Steinberg
4Halftoning
greyscale
ordered
clustered
Error diffusion
5Closest Color
R-G-B-W ramp
Closest Color
6Random Threshold
R-G-B-W ramp
Random Threshold
7Our Algorithm
R-G-B-W ramp
25 BFS 75 DFS
8Artists Halftone Random Dots
9Outline
- Motivation why random-point halftone?
- Problem Statement
- Approach non-grid error diffusion
- Results
- Conclusion
10Why?
- Alias-free display devices
- scanned color prints moiré patterns
- CRT displays need antialising
- Poisson-disc dots noise replaces aliasing
- High-saturation printing
- CMYK color separation regular dot grid
- ink dots overlap
11Color Separation
Black
Cyan
Magenta
Yellow
12Commercial offset printing
Ink dots overlap ? loss of saturation
13Simulated Pointillism
- Pointillist art
- unmixed paint richer colors
- scintillatingeffect
- Seurat, Signac
- NPR filter
14Mosaics with Few Colors
- commercial tiles
- limited palette
- nearest-color alg?
- color banding!
Desired mosaic
Using only 27 colors
15Outline
- Motivation why random-point halftone?
- Problem Statement
- Approach non-grid error diffusion
- Results
- Conclusion
16The Challenge
- No regular grid
- Stippling random ink strokes
- Pointillism hand-placed paint dots
- Halftoning algs assume regular grid
- ordered dither dither matrix
- error diffusion scanline processing
- How to halftone random-point images?
17Problem Statement
- Given
- 1 dot (or stroke) positions
- 2 underlying image
- 3 discrete set of colors
- Output
- color for each dot
- Goal
- colored dots look like underlying image
18Outline
- Motivation why random-point halftone?
- Problem Statement
- Approach non-grid error diffusion
- Results
- Conclusion
19The Approach
- eg Floyd-Steinberg error diffusion
- well-researched
- random-looking dither
- Algorithm
- set pixel to nearest color
- add error to neighbors
- visit pixels in scanline order
spread error
7/16
5/16
1/16
3/16
20The Approach (2)
- Random-dot F-S
- nearest dot neighbors
- in what order?
- Floyd-Steinberg (F-S)
- pixel neighbors
- scanline order
- Dot-processing orders investigated
- get nearest-neighbor graph, traverse
- depth-first
- breadth first
- error-driven (choose from frontier dots)
- hybrids
21Original Dots
22Points (dot centers)
23Dots and Neighbors (Delaunay Triangulation)
24Pixel Graphs
(Pixels have neighbors too)
4-neighbors
diagonal neighbors
8-neighbors
25The Algorithm
- Visit Dots in some order
- for each dot
- set to closest color in set
- (color changed ? error)
- add error to neighbors
26Visit dots in What order?
- dots nodes in graph
- visit dots traverse graph
- depth-first graph traversal?
- breadth-first?
- other?
27Depth-first graph traversal
- Stack stores advancing front
- push node on stack
- while (stack not empty) node ? top of
stack process node (color it) for each
neighbor of node push neighbor on
stack
28Breadth-first graph traversal
- Queue stores advancing front
- push node on queue
- while (queue not empty) node lt head of
queue process node for each neighbor of
node append neighbor on queue
29Error-driven traversal
- Front set of candidate dots
- add node to front
- while (front not empty) choose node from
front (min, max, or median error)
process node for each neighbor of node
add neighbor to front
30Gray Ramp Test (8-neighbor graph)
Gray ramp
Depth-first(DFS)
Breadth-first(BFS)
25 BFS 75 DFS
31Use Hybrid Traversal
- Error-driven traversal looks horrible!
- too ugly to show
- Breadth-first and Depth-first show artifacts
- Hybrid
- queue of pixels, random variable x (0 ? x ?
1) - if (x ? 1/4) get pixel from head of queue
- if (x gt 1/4) get pixel from tail of queue
32Outline
- Motivation why random-point halftone?
- Problem Statement
- Approach non-grid error diffusion
- Results
- Conclusion
33Pointillism simulation
- Restricted set of colors
- Dots are paint strokes
- Assume dot positions are known
34Seurats Pointillism
Original
Simulation
35Luces Pointillism
Original
Simulation
36Color Stippling
37Application Color Printing
- 4-color offset printing
- dots overlap
- loss of saturation
- random-dot halftoning color stippling
- dots dont overlap
- brighter colors
38Comparison
Standard 4-color printing
Error diffusion on adjacency graph
39Comparison
Sharper, more saturated
4-color printing
40Restricted Mosaic
- Simulated tiles
- tile color underlying image
- many colors possible
- Actual tiles
- limited color choice
- must use halftone
- Dots are square!
- use area voronoi diagram to get graph
41Restricted-color Mosaic
Continuous color
27 tile colors
42Better-chosen colors
2000 tile colors
8 tile colors
43Conclusion
- Random-dot halftone
- error diffusion on adjacency graph
- Applications
- simulated pointillism
- improved offset printing
- arbitrary dot shapes
44Future Work
- Pointillism
- better paint stroke placement
- artists didnt place them randomly
- Color printing
- edge emphasis non-round dots
- Ordered dither?
- what is the Bayer matrix for a graph?