Algorithms that improve the quality of the image when enlarging or shrinking (resizing the image or showing zoomed).
Filter
Name
Description
Speed*
B+W (ie1g)
Gray-Scale (ie8g, ie16g)
ie24RGB
ie32RGB, ie48RGB
rfNone
None
No quality filtering is applied
rfTriangle
Triangle
Produces good results for image reduction and enlargement, but displays sharp transition lines
193 ms
rfHermite
Hermite
Uses a convolution kernel to interpolate the four nearest neighboring pixels
194 ms
rfBell
Bell
Uses a convolution kernel to interpolate pixels. Bell attempts to compromise between reducing block artifacts and blurring the image, giving a soft image (useful for pictures containing noise)
205 ms
rfBSpline
B-Spline
A basis spline which tends to create blurry images
207 ms
rfLanczos3
Lanczos 3
A high-quality, processor-intensive filter that produces sharp images, but may introduce some ringing artifacts. Pixels are interpolated using a special curve simulating the real dissemination of information. Has a strong "self-sharpening effect" and is most useful when enlarging pictures. It can cause unaesthetic grid-like artifacts when shrinking due to the sharpening effect
234 ms
rfMitchell
Mitchell
Produces smooth transitions when enlarging photo-realistic images. This filter is good compromise between the ringing effect of Lanczos and the blurring effect of other filters
211 ms
rfNearest
Nearest Neighbor
The simplest and fastest native filter. It does not use interpolation, but evaluates each pixel based on their relative position in the source image (e.g. if enlarge an image by 2, one pixel will be enlarged to 2x2 area of the same color. If shrinking an image by 2, only 1 pixel of a 2x2 pixel block is retained). Works poorly with photos, but is useful for technical drawings with hairlines. Also called "Box"
182 ms
rfLinear
Linear
A simple linear interpolation. Generally not recommended
192 ms
rfFastLinear
Fast Linear
A fast algorithm that uses averages pixels when shrinking images and linear interpolation when enlarging. Provides the most "Bang-for-Buck," i.e. good quality output with excellent speed
35 ms
rfBilinear
Bilinear
A simple interpolation that samples the closest 4 pixels surrounding the destination pixel. Fast and generally good when shrinking images
188 ms
rfBicubic
Bicubic
A more advanced method that samples the 16 closest pixels, interpolating the values along a cubic curve. Produces good results with photos and complex or irregular images
185 ms
rfProjectBW
Project BW
Quality filter for white on black background monochrome images
rfProjectWB
Project WB
Quality filter for black on white background monochrome images
rfWICNearestNeighbor
Nearest Neighbor (WIC)
Output pixel is assigned the value of the pixel that the point falls within. No other pixels are considered
8 ms
rfWICLinear
Bicubic (WIC)
Output pixel values are computed as a weighted average of the nearest four pixels in a 2x2 grid
4 ms
rfWICCubic
Bilinear (WIC)
Output pixel values are computed as a weighted average of the nearest sixteen pixels in a 4x4 grid
10 ms
rfWICFant
Fant (WIC)
Output pixel values are computed as a weighted average of the all the pixels that map to the new pixel
21 ms
rfWICCubicHQ
High Quality Bicubic (WIC)
A high-quality bicubic interpolation algorithm. Output pixel values are computed using a much denser sampling kernel than regular cubic. The kernel is resized in response to the scale factor, making it suitable for downscaling by factors greater than 2. Requires Windows 10 or newer!
110 ms
* Example timings compared with rfNone when resampling a large image
Recommendations
For best quality: rfLanczos3, rfMitchell, rfBilinear, rfBicubic, rfWICCubicHQ
For speed: rfFastLinear, rfWICCubic, rfWICFant
For Monochrome images: rfProjectBW, rfProjectWB
You can view the effect of the various filters in the demo:
Demos\Display\ZoomFilter\ZoomFilter.dpr
Sample Comparison
Filter
Upscale a 165x100 image to 300%
Downscale a 2400x1500 image to 20%
rfNone
rfTriangle
rfHermite
rfBell
rfBSpline
rfLanczos3
rfMitchell
rfNearest
rfLinear
rfFastLinear
rfBilinear
rfBicubic
rfWICNearestNeighbor
rfWICLinear
rfWICCubic
rfWICFant
rfWICCubicHQ
Note: rfFastLinear creates a new pixels from a linear interpolation of pixel x+0 and pixel x+1 (or y+0 and y+1), so the right border or bottom borders have to interpolate with themselves when enlarging (as there are no further pixels). This results in simple duplication and causes the image content to be offset. For this reason, rfFastLinear should not be used when accurate measurement/positioning is required