# Difference between revisions of "Procedural Image"

Procedural Image
Field: Computer Graphics
Image Created By: [[Author:| ]]

Procedural Image

A procedural image is an image generated by a series of mathematical functions

# Basic Description

Procedural images can be created by combining a wide variety of mathematical functions into a single expression.

# A More Mathematical Explanation

Consider a simple example of creating a checkerboard texture for a binary image. Let '"UNIQ--math-0 [...]

Consider a simple example of creating a checkerboard texture for a binary image. Let $I(x,y)$ be our output image. To create a checkerboard image let's defined our image as

$I_{1}(x,y) \equiv \left( \frac{x}{w} \pmod{2} + \frac{y}{h} \pmod{2} \right) \pmod{2} \equiv \frac{x}{w} + \frac{y}{h} \pmod{2}$ where w is the width of the checker and h is it's height.

This function simply returns 1 when on a checker and 0 when not on a checker. Let's extend our example to three channel RGB images.

Let $I_{2}(x,y) = ( 1 - I_{1}(x,y) ) c_{0} + I_{1}(x,y) c_{1}$ where $c_{1}$ is a dimension 3 vector representing the color of a checker and $c_{0}$ is the other color.

Imagine that we want to add a bit of monochrome noise to our checkerboard image.

$I_{3}(x,y) = I_{2}(x,y) + r(x,y) \left[ \begin{array}{c} 1 \\ 1 \\ 1 \end{array} \right]$ where r(x,y) is a random number generator

Additionally we can add two images together: $I_{4}(x,y) = \frac{1}{2} I_{2}(x,y) + \frac{1}{2} I_{3}(x,y)$

## Demonstration

ERROR: Unable to find Java Applet file: ProcImages.class.`

Instructions:

Each machine has a set of inputs and outputs. Inputs are location on the top of the machine, outputs on the bottom. Connect machines by dragging from an output to an input. Disconnect by clicking on an input. One output can be connected to many inputs, but an input can only be connected to one output. Click and drag the box to move machines around. Connect machines to the "Output" machine to produce an image. The three inputs of the Output machine are the red, green, and blue channel of the image, respectively. The "X" and "Y" input machines send the X and Y pixel position from 0.0 to 1.0 to their outputs. Right click machines to change options or to delete them. Right click anywhere else to open a menu to add more machines.