Image gradient

From Wikipedia, the free encyclopedia
Jump to: navigation, search
Two types of gradients, with blue arrows to indicate the direction of the gradient. Dark areas indicate higher values

An image gradient is a directional change in the intensity or color in an image. Image gradients may be used to extract information from images.

In graphics software for digital image editing, the term gradient or color gradient is used for a gradual blend of color which can be considered as an even gradation from low to high values, as used from white to black in the images to the right. Another name for this is color progression.

Mathematically, the gradient of a two-variable function (here the image intensity function) at each image point is a 2D vector with the components given by the derivatives in the horizontal and vertical directions. At each image point, the gradient vector points in the direction of largest possible intensity increase, and the length of the gradient vector corresponds to the rate of change in that direction.

Since the intensity function of a digital image is only known at discrete points, derivatives of this function cannot be defined unless we assume that there is an underlying continuous intensity function which has been sampled at the image points. With some additional assumptions, the derivative of the continuous intensity function can be computed as a function on the sampled intensity function, i.e., the digital image. It turns out that the derivatives at any particular point are functions of the intensity values at virtually all image points. However, approximations of these derivative functions can be defined at lesser or larger degrees of accuracy.

The Sobel operator represents a rather inaccurate approximation of the image gradient, but is still of sufficient quality to be of practical use in many applications. More precisely, it uses intensity values only in a 3×3 region around each image point to approximate the corresponding image gradient, and it uses only integer values for the coefficients which weight the image intensities to produce the gradient approximation.

The gradient of the image is one of the fundamental building blocks in image processing. For example the Canny edge detector uses image gradient for edge detection.

Image gradients are often utilized in maps and other visual representations of data in order to convey additional information. GIS tools use color progressions to indicate elevation and population density, among others.

Computer vision[edit]

Left: Black and white picture of a cat. Center: The same cat, displayed in a gradient image in the x direction. Appears similar to an embossed image. Right: The same cat, displayed in a gradient image in the y direction. Appears similar to an embossed image.
On the left, an intensity image of a cat. In the center, a gradient image in the x direction measuring horizontal change in intensity. On the right, a gradient image in the y direction measuring vertical change in intensity. Gray pixels have a small gradient; black or white pixels have a large gradient.

Image gradients can be used to extract information from images. Gradient images are created from the original image (generally by convolving with a filter, one of the simplest being the Sobel filter) for this purpose. Each pixel of a gradient image measures the change in intensity of that same point in the original image, in a given direction. To get the full range of direction, gradient images in the x and y directions are computed.

One of the most common uses is in edge detection. After gradient images have been computed, pixels with large gradient values become possible edge pixels. The pixels with the largest gradient values in the direction of the gradient become edge pixels, and edges may be traced in the direction perpendicular to the gradient direction. One example of an edge detection algorithm that uses gradients is the Canny edge detector.

Image gradients can also be used for robust feature and texture matching. Different lighting or camera properties can cause two images of the same scene to have drastically different pixel values. This can cause matching algorithms to fail to match very similar or identical features. One way to solve this is to compute texture or feature signatures based on gradient images computed from the original images. These gradients are less susceptible to lighting and camera changes, so matching errors are reduced.

Math[edit]

The gradient of an image is given by the formula :

\nabla f=\frac{\partial f}{\partial x}\hat x + \frac{\partial f}{\partial y}\hat y,

where :

\textstyle\frac{\partial f}{\partial x} is the gradient in the x direction
\textstyle\frac{\partial f}{\partial y} is the gradient in the y direction.

The gradient direction can be calculated by the formula :

\theta =  \operatorname{atan2} \left( \frac{\partial f}{\partial y} , \frac{\partial f}{\partial x}\right).

An example of a gradient filter to use is[clarification needed]

-1
1

However this will shift the image by half a pixel. The following filter

-1
0
1

is more commonly used and does not shift the image

See also[edit]

References[edit]

Gonzalez, Rafael; Richard Woods. "3". Digital Image Processing (3rd ed.). Upper Saddle River, New Jersey: Pearson Education, Inc. pp. 165–68. ISBN 978-0-13-168728-8. 

Shapiro, Linda; George Stockman. "5, 7, 10". Computer Vision. Upper Saddle River, New Jersey: Prentice-Hall, Inc. pp. 157–158, 215–216, 299–300. ISBN 0-13-030796-3. 

External links[edit]