

When processing time is not an immediate issue, bicubic interpolation is more often chosen over bilinear or nearest-neighbor interpolation during processing. With still images, however, the differences are very minimal and not easily noticeable. Rendered animations resampled using this interpolation algorithm are also smoother and have fewer interpolation artifacts. In contrast to this type of interpolation, taking only four pixels (2×2 pixel values) into account, bicubic interpolation takes 16 pixels (4×4 pixel values) into account, making for an even smoother albeit slightly blurry result. This results in an image with a smoother appearance compared to nearest-neighbor interpolation. It then calculates a weighted average of those pixels to come up the final interpolated value. Bilinear interpolation takes into consideration the closest 2×2 neighborhood of known pixel values surrounding a pixel. Linear interpolation uses this grid most succinctly but seeing as how for images these interpolations are happening in two dimensions, this method is usually referred to as bilinear. Bilinear and Bicubic InterpolationĪs mentioned earlier, it’s best to observe image scaling and processing as if it were set by a grid (or a matrix, for the technical minded). A common approach is to round towards zero because it creates less artifacts.

While you may assume that “nearest” refers to the nearest mathematically, that is not necessarily the case. The biggest drawback, however, is that the resulting image may contain jagged edges. Pixel art regularly uses this technique as it’s the fastest interpolation method, requires the least amount of processing time, and allows for sharper detail. This potentially results in multiple pixels of the same color showing up in the final rendering.

The most common and basic approach to expanding image sizes is called nearest-neighbor interpolation (or round interpolation), which calculates the average or closest value of each pixel and replaces it with the closest matching pixel and intensity value, resampling into the render’s output.
