Photo Portfolio
ShutterSounds Blog
Resumé (pdf)

Exampe 2: Nearest-neighbor interpolation

Nearest Neighbor top/left
Top/left Nearest Neighbor
Nearest Neighbor 2x2 Bayer unit
2x2 Bayer unit Nearest Neighbor

The nearest neighbor algorithm is the most inexpensive full-resolution algorithm. Nearest-neighbor interpolation simply takes the spatially-closest data point and assumes its value. This algorithm maintains the full luminance resolution potential of the Bayer output, unlike pixel binning; however, since color values are simply assumed from neighboring pixels, color resolution is similar to pixel binning. Nearest neighbor tends to introduce severe artifacts, especially due to the sets of red, green, and blue photodetectors being offset in the Bayer pattern.

Nearest Neighbor top/left resized 3x Nearest Neighbor 2x2 Bayer unit resized 3x
Top/left NN (left), 2x2 Bayer unit NN (right). 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