Convolutions are used to perform many common image processing operations including sharpening, blurring, noise reduction, embossing, and edge enhancement. In this section, we begin 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. One good reference is [14]. After our brief mathematical introduction, we will describe two ways to perform convolutions using OpenGL: via the accumulation buffer and via the convolution extension.