270 likes | 285 Views
Explore the innovative algorithm for stippling based on graph traversal and weighted distances, prioritizing feature emphasis, with high-quality results and progressive placement. The method ensures blue noise distribution for naturalistic rendering, akin to historical mosaics.
E N D
Stipple Placement using Distance in a Weighted Graph David Mould University of Saskatchewan
Stippling • Sole primitive is a dot of ink [Wall Street Journal]
Automatic Stippling • essentially halftoning: effort to match image intensity • Weighted Voronoi diagrams often employed (introduced by Secord) [Secord 2002]
Importance of Edges [Façade] [child's drawing]
Areas and Lines • Area-based methods inherently underemphasize linear features (edges) • Paths travel across linear features, and the point of crossing can be detected • Idea: multisource distance calculation (breadth-first search in graph) to find feature points
Graph Traversal Starting point Structure (union of all visited nodes) Frontier (all unvisited sites adjacent to at least one visited site)
Graph Traversal "edge" – high cost feature 4-connected isocontours path cost isocontours
Algorithm Overview • Construct graph • Traverse graph • start at arbitrary point, distance zero • expand cheapest node • if cheapest node exceeds threshold: • place stipple on frontier • set cost of stipple location to zero • terminate when no nodes remain
Graph Construction • Regular 4-connected lattice: one node per image pixel • Weighted edges: a*I + b*G
Distance in Graph • Distance between two nodes is cost of shortest path • Cost of a path is the sum of all edge costs • Dijkstra's algorithm: finds costs from single source to all other nodes • source: added to frontier with cost 0 • "expansion step": convert cheapest frontier node to known node, add neighbours to frontier
Stipple Placement • Expansion step: choose cheapest node from frontier, update neighbour costs • If expanded node cost exceeds threshold, trigger a stipple placement operation • choose stipple location (highest gradient location, in our implementation) • set cost to zero • add to frontier
Blue Noise Distribution • Blue noise: enforces minimum distance between any two samples • Progressive algorithm: path cost between sites is at least the threshold (may be more) • at time of placing stipple, cost to frontier exceeds threshold • stipples never placed behind frontier
"handmade" distribution Progressive Voronoi
Secord -- halftoning progressive
Secord – weight is half intensity, half gradient Progressive
Summary of Stippling Results • High-quality stipple placement • feature emphasis • "handmade" stipple distribution • "progressive" non-iterative algorithm • have not investigated stipple size changes
Irregular Mosaics • Regions naturally defined by distance+sites • Regions irregular in shape, but tile boundaries conform to image edges • Akin to historical "chip" and "pebble" mosaics