Download: PDF

Download: Java 1.1 Version

Download: Java 1.2 Version

We present a method that takes a raster image as input and produces a painting-like image composed of strokes rather than pixels. Unlike previous automatic painting methods, we attempt to use very few brush-strokes. This is accomplished by first segmenting the image into features, finding the medial axes points of these features, converting the medial axis points into ordered lists of image tokens, and finally rendering these lists as brush strokes. Our process creates images reminiscent of modern realist painters who often want an abstract or sketchy quality in their work.

There are two tasks involved in the creation of a digital painting. First is the creation of brush stroke positions. The second is the ``rendering'' of brush strokes into pixel values. If the brush stroke positions are manually created by a user, then this is a classic ``paint'' program. If the brush stroke positions are computed algorithmically, then this is an ``automatic'' painting system. In either case, once the brush stroke geometry is known, the brush strokes must be rendered, usually simulating the physical nature of paint and canvas.

This system uses computer vision algorithms and medial axis calculations to compute the brush stroke positions and colors. A modified version of Strassmanns algorithm is then used to simulate the painted brush strokes.

Java 1.1 Interface

    MENUS:

    File Menu:

    Open Image File: Opens an image file that will become the source image for the painting. GIF, JPEG and PPM file formats are supported.

    Open U. P. File: Opens and Under Painting file. This is the image that the paint program will paint on top of. If no under painting file is loaded the painting will be done on a black screen. If you want to draw onto the source image file you will need to load that file as an under painting as well.

    Quit: Exits the program, and quits Java.

    Tools Menu:

    Paint: Runs the Artistic vision algorithms, and renders the resulting brush strokes to the screen.

    LABELS:

    Two labels allow the user to view the status and location of the Under Painting and Source Image files.

    SLIDERS:

    Segmentation Levels: This slider moves between 2 and 255. This parameter controls the number of gray levels the source image is segmented into during the creation of brush stroke positions. A high value for this parameter results in an image that is very true to the source image, while a low value for this parameter will result in paintings with a more abstract quality.

    Enhancement Levels: This slider moves between 2 and 255. This parameter controls the number of gray levels the source image is segmented into if the user chooses to enhance part of the image after the initial automatic painting. An enhancement level higher than the segmentation level can "clarify" part of an image by placing more high frequency brush stroke in the selected area. While a value lower than the segmentation level will mask high frequency information behind large brush strokes.

    Brush Artifact Level: This slider moves between 0 and 100. This parameter controls the amount of brush artifact in each brush stroke. A high value for this parameter results in a large amount of "brush noise" while a low value results in no brush artifact. This process simulates the viscosity of various paints.

    BUTTONS:

    C. Strokes On/Off: Runs an algorithm during the paint process that attempts to connect strokes in segmented regions.

    Paint: Runs the Artistic vision algorithms, and renders the resulting brush strokes to the screen.

    Quit: Exits the program, and quits Java.

    MOUSE:

    When a source image is loaded, either before or after the paint algorithm is run, the user can click and drag on the image screen to select a portion of the image for enhancement. A rubber-banded box will appear on the screen during this time to aid the user in region selection. When the user releases the mouse (mouse up) the selected region is painted using the enhancement parameter as the value for segmentation.


Java 1.2 Interface

    ADDITIONS

    The Java 1.2 interface adds an additional button and slider to control an alpha blending parameter. Alpha blending is used to simulate paints of various opacity.

    SLIDERS:

    Alpha Percentage: This slider moves between 0 and 100. This parameter controls the percentage of blending between the underpainting and the brush strokes.

    BUTTONS:

    A. Blend Off/On: Allows the user to turn alpha blending on or off.


File Menu

    Standard Java File interface.


Example of Yosimite image with 4 different image segmentation levels


Examples of Underpainting and Underpainting Effects levels


User-directed Painting Enhancement


An example of using the enhancement tool directly on an image for artistic effect.


Brush Artifact Example

10 percent 40 percent 70 percent 100 percent


Connecting Strokes Example

62 Strokes Single Stroke


Alpha Blending Example

Alpha 15 Alpha 25 Alpha 35 Alpha 45



Contact: bgooch@cs.utah.edu