Real-Time Gradient-Domain Painting

Step 1 Step 2 Step 3 Step 4 Step 5 Step 6 Step 7
Portrait sketched using our program by M. Mahler.



Hall, before Hall, after
Window, before Windows, after
Photo-editing results. Before images are on the left. Source images from clayjar and P Doodle via flickr.

We present an image editing program which allows artists to paint in the gradient domain with real-time feedback on megapixel-sized images. Along with a pedestrian, though powerful, gradient-painting brush and gradient-clone tool, we introduce an edge brush designed for edge selection and replay. These brushes, coupled with special blending modes, allow users to accomplish global lighting and contrast adjustments using only local image manipulations -- e.g. strengthening a given edge or removing a shadow boundary. Such operations would be tedious in a conventional intensity-based paint program and hard for users to get right in the gradient domain without real-time feedback. The core of our paint program is a simple-to-implement GPU multigrid method which allows integration of megapixel-sized full-color gradient fields at over 20 frames per second on modest hardware. By way of evaluation, we present example images produced with our program and characterize the iteration time and convergence rate of our integration method.

Additional Results

The following images were created with our gradient paint system by members of the Carnegie Mellon graphics community as part of an informal gradient-painting contest.

ronit_cat nancy raphael ronit_cute q j2_2 jean_francois j2_3 jduesing_1 atkeson ronit_sub ronit_carrot someone portia jduesing_3 jhays_trees fun ronit_scary ronit_bunny2 ronit_bunny jduesing_4 jeehee j2_1 ronit_sammax jhays_sunbeams eakta jduesing_2 ronit_platypus mlau_gumdrops adam jhays_ship eakta_iguana jduesing_5 j2_4 ronit_dragon


James McCann and Nancy S. Pollard. Real-time Gradient-domain Painting, ACM Transactions on Graphics (SIGGRAPH 2008), August 2008, Vol 27. No. 3. [PDF, compressed figures, 3.4MB] [PDF, full figures, 21MB] [BibTeX]


Snapshot for movie [h.264, 640x480, 30MB] [YouTube]


Note: The work-around for graphics cards that do not support linear interpolation of floating-point textures (ATI X-series, notably) is now included in the binary releases for OSX and Windows.

Snapshot for app [Linux Binary] [OSX Binary] [Windows Binary] [Source]

Copyright notice