Difference between revisions of "Image Convolution"

From Math Images
Jump to: navigation, search
m
(Fixed hides, cleaned up formatting)
 
(4 intermediate revisions by one other user not shown)
Line 1: Line 1:
 
{{Image Description Ready
 
{{Image Description Ready
 
|ImageName=Image Convolution
 
|ImageName=Image Convolution
|Image=imageconvolution.png
+
|Image=ImageConvolution.jpg
|ImageIntro=Image Convolution is the process of applying a filter to images
+
 
 +
|ImageIntro=Image Convolution is the process of applying a filter to images. Clockwise from top left, this images shows an original image, a Gaussian Blur filter, a Poster Edges filter, and a Sharpen filter. The filters were applied in Photoshop.
 +
 
 
|ImageDescElem=Images can be convolved by applying a function to each pixel of the image. Usually, this function is precalculated inside a small two dimensional array called a kernel.
 
|ImageDescElem=Images can be convolved by applying a function to each pixel of the image. Usually, this function is precalculated inside a small two dimensional array called a kernel.
|ImageDesc=Most generally, the convolution of two functions f and g is defined as the following:  
+
 
 +
|ImageDesc=
 +
Most generally, the convolution of two functions f and g is defined as the following:  
  
 
<math>(f * g)(x,y) = \sum_{v=-\infty}^{\infty} \sum_{u=-\infty}^{\infty} f(u,v) g(x - u, y - v)</math>
 
<math>(f * g)(x,y) = \sum_{v=-\infty}^{\infty} \sum_{u=-\infty}^{\infty} f(u,v) g(x - u, y - v)</math>
Line 54: Line 58:
  
 
==Applet==
 
==Applet==
 
+
{{SwitchPreview|ShowMessage=Click to show applet|hideMessage=Click to hide applet|PreviewText= |FullText=
 
<java_applet code="ImageConvolution2.class" width="800" height="600" archive="ImageConvolution2.jar" />
 
<java_applet code="ImageConvolution2.class" width="800" height="600" archive="ImageConvolution2.jar" />
 +
}}
 +
|Field=Other
  
|Field=Other
 
|Pre-K=No
 
|Elementary=No
 
|MiddleSchool=No
 
|HighSchool=Yes
 
|InProgress=Yes
 
 
}}
 
}}

Latest revision as of 15:31, 17 July 2012


Image Convolution
ImageConvolution.jpg
Field: Other
Image Created By: [[Author:| ]]

Image Convolution

Image Convolution is the process of applying a filter to images. Clockwise from top left, this images shows an original image, a Gaussian Blur filter, a Poster Edges filter, and a Sharpen filter. The filters were applied in Photoshop.


Basic Description

Images can be convolved by applying a function to each pixel of the image. Usually, this function is precalculated inside a small two dimensional array called a kernel.

A More Mathematical Explanation

Most generally, the convolution of two functions f and g is defined as the following:

'"`UNIQ--mat [...]

Most generally, the convolution of two functions f and g is defined as the following:

(f * g)(x,y) = \sum_{v=-\infty}^{\infty} \sum_{u=-\infty}^{\infty} f(u,v) g(x - u, y - v)

In this formula f(x,y) is a function that represents the image, and g(x,y) is the kernel. In practical situations, the kernel is only defined over a finite set of points, so we can modify our definition as follows:

(f * g)(x,y) = \sum_{v=y-h}^{y+h} \sum_{u=x-w}^{x+w} f(u,v) g(x - u, y - v)

Where 2w + 1 is the width of the kernel and 2h + 1 is the height of the kernel. In this example g is only defined over the points [-w, w] \times [-h, h]. To convolve an image, this formula is evaluated at every point in the image. In the following pseudocode to convolve an image, f(x, y) is the original image, g(x, y) is the kernel, and h(x, y) is the new image.

for y from 0 to imageHeight
   for x from 0 to imageWidth
      sum := 0;
      for v from y - h to y + h
         for u from x - w to x + w
            sum := sum + f( u, v ) * g( x - u, y - v );
      h( x, y ) := sum;

Examples

The most common type of kernel is a gaussian which acts as a lowpass filter, suppressing high frequency data in the signal. The most common example of the gaussian for a 3x3 kernel is the following:

\frac{1}{16}
\left[ {\begin{array}{ccc}
 1 & 2 & 1  \\
 2 & 4 & 2  \\
 1 & 2 & 1  \\
 \end{array} } \right]

Other types of filters include edge detectors, which are essentially high pass filters. One type of edge detectors is called the Sobel operator. Mathematically, it computes the first derivative. The first derivative is large when the image greatly increases in intensity between two adjacent points which is what an edge looks like. The sobel operator has the form:


\left[ {\begin{array}{ccc}
 1 & 0 & -1  \\
 2 & 0 & -2  \\
 1 & 0 & -1  \\
 \end{array} } \right]


\left[ {\begin{array}{ccc}
 1 & 2 & 1  \\
 0 & 0 & 0  \\
 -1 & -2 & -1  \\
 \end{array} } \right]

Separable Filters

Applet


ERROR: Unable to find Java Applet file: ImageConvolution2.class.




Teaching Materials

There are currently no teaching materials for this page. Add teaching materials.









If you are able, please consider adding to or editing this page!


Have questions about the image or the explanations on this page?
Leave a message on the discussion page by clicking the 'discussion' tab at the top of this image page.


[[Category:]]