A box blur (also known as a box linear filter) is a spatial domain linear filter in which each pixel in the resulting image has a value equal to the average value of its neighboring pixels in the input image. It is a form of low-pass ("blurring") filter. A 3 by 3 box blur ("radius 1") can be written as matrix Due to its property of using equal weights, it can be implemented using a much simpler accumulation algorithm, which is significantly faster than using a sliding-window algorithm. Box blurs are frequently used to approximate a Gaussian blur. By the central limit theorem, repeated application of a box blur will approximate a Gaussian blur. In the frequency domain, a box blur has zeros and negative components. That is, a sine wave with a period equal to the size of the box will be blurred away entirely, and wavelengths shorter than the size of the box may be phase-reversed, as seen when two bokeh circles touch to form a bright spot where there would be a dark spot between two bright spots in the original image. Extensions Gwosdek, et al. has extended Box blur to take a fractional radius: the edges of the 1-D filter are expanded with a fraction. It makes slightly better gaussian approximation possible due to the elimination of integer-rounding error. Mario Klingemann has a "stack blur" that tries to better emulate gaussian's look in one pass by stacking weights: The triangular impulse response it forms decomposes to two rounds of box blur. Stacked Integral Image by Bhatia et al. takes the weighted average of a few box blurs to fit the gaussian response curve. Implementation The following pseudocode implements a 3x3 box blur. Box blur (image) { set newImage to image; For x /*row*/, y/*column*/ on newImage do: { // Kernel would not fit! If x < 1 or y < 1 or x + 1 == width or y + 1 == height then: Continue; // Set P to the average of 9 pixels: X X X X P X X X X // Calculate average. Sum = image[x - 1, y + 1] + // Top left image[x + 0, y + 1] + // Top center image[x + 1, y + 1] + // Top right image[x - 1, y + 0] + // Mid left image[x + 0, y + 0] + //