# Bilinear filtering **tutorial**

Download offline version of this tutorial (5k)

## Bilinear filtering

Bilinear filtering is an algorithm to interpolate between pixels often used to render textures or pictures in a size larger than the original. Usually a larger version of a picture looks ugly because you can see the rectangle structure of the pixels.## 1D interpolation

The solution is to interpolate the colors to get a smooth fading from one color to another. An easy 1D interpolation can be done with the following formula:**result = position * col1 + (1 - position) * col2**

where

**col1**is the first color,

**col2**is the second color and

**position**is a number between 0 and 1 that determines the position between this colors. If you fade two colors with this formula, you get a smooth looking result (for RGB colors, you just have to fade each component seperate).

## 2D interpolation

When you fade 2D data it is getting harder, because you have to fade between 4 pixel colors. But you can still use the formula above. First fade between the two colors on the edges above and below and then fade between these two colors:**col5 = posx * col1 + (1 - posx) * col2**

col6 = posx * col3 + (1 - posx) * col4

result = posy * col5 + (1 - posy) * col6

col6 = posx * col3 + (1 - posx) * col4

result = posy * col5 + (1 - posy) * col6

where

**col1 - col4**are the original four colors,

**col5**and

**col6**are the interpolations at the edges above and below and

**(posx/posy)**is a 2D-position between (0,0) and (1,1).

Surprisingly, the result looks very ugly:

This is because we used a linear interpolation, which means using posx as a factor in our formula. We now use the SCURVE function to interpolate our function. The SCURVE function has the formula

**y = 3*x*x - 2*x*x*x**

The resulting image looks much better and shows the correct way to use bilinear interpolation: