Convolutions are used to perform many common image processing operations including sharpening, blurring, noise reduction, embossing, and edge enhancement. This section begins with a very brief overview of the mathematics of the convolution operation. More detailed explanations of the mathematics and uses of the convolution operation can be found in many books on computer graphics and image processing such as [30]. After this brief mathematical introduction, this section will describe two ways to perform convolutions using OpenGL: via the accumulation buffer and via the convolution extension.