Photo Portfolio
ShutterSounds Blog
Resumé (pdf)

Exampe 3: Bilinear interpolation

Bilinear interpolated image
Bilinear interpolated image

Bilinear interpolation is another inexpensive interpolation algorithm which assumes information from an average (arithmetic mean) of surrounding pixels. Bilinear interpolation produces much smoother images and less artifacts than simple nearest-neighbor interpolation, and maintains much higher color resolution. Note the "zipper" artifact pattern which occurs at edges. This is a characteristic artifact of non-adaptive interpolation algorithms (algorithms which do not analyze the image for local image features to provide context).

Bilinear interpolated image resized 3x
(Resized 3x for clarity)


Choose an algorithm from the left. Feel free to send suggestions/links for new ones to thedailynathan at gmail.

Shown here is the original image for reference, and the simulated Bayer raw data which the different algoriths are run on. The simulated Bayer data is generated by taking only green, red, and blue values from the corresponding pixel in a 2x2 GRGB Bayer pattern. Assuming the image used is a 100% crop taken from an image with the top-left pixel (at position 0,0) being a first green photosite (G1), this should be a fairly accurate representation of the actual raw data (assuming of course, that a camera using a Bayer filter sensor was used, and ignoring any compression losses due to compression to 24-bit true color and possible JPEG lossy compression).

Note that this demo does not quite work as effectively with resized images (this demo resizes images greater than 300x300 for performance reasons), or images not generated from a camera using a Bayer sensor. In these cases, resolution can approach or exceed that of a Bayer sensor and anti-aliasing (AA) filter combination, and severe mosaicing artifacts should be expected to appear, no matter the algorithm.

Original image
Simulated Bayer raw data