All posts

Why Do Resized Images Look Blurry or Jagged? Bicubic vs. Lanczos vs. Bilinear Downsampling Explained

Every time you export a 24-megapixel camera image (6000×4000 pixels) down to a 1200×800 web hero or a 400×400 product thumbnail, the resizer must discard more than 96% of the original pixel samples. If you pick the wrong image scaling algorithm—or rely on a browser’s default 4-tap bilinear pass—fine eyelashes, fabric weaves, and UI typography either turn into a soft, muddy blur or break into jagged stair-step moiré patterns. Understanding the mathematical difference between Nearest-Neighbor, Bilinear, Bicubic (Mitchell-Netravali vs. Catmull-Rom), and Lanczos-3 resampling lets you keep maximum edge sharpness without ringing halos.

When processing image sets in BatchPad, selecting the right 2D convolution kernel for your source material—photographs, vector-style UI screenshots, or pixel art—eliminates the need for destructive post-resize unsharp masking.

Why Downsampling Requires a Low-Pass Reconstruction Filter

According to the Nyquist–Shannon sampling theorem, shrinking an image by a factor of S (for example, S = 4 when resizing 4000px → 1000px) lowers the maximum spatial frequency the output grid can represent by 1 / S. Any detail in the source image with a spatial frequency higher than the new Nyquist limit must be attenuated before or during resampling, or it will fold back into the output as spatial aliasing (jagged diagonal edges and false moiré patterns):

Chart comparing Nyquist fine-detail retention, tap window size, and step-edge ringing across seven image resampling kernels
Figure 1: Passband detail retention near the target Nyquist limit (MTF50 %), 2D tap window size, and step-edge ringing overshoot across seven image scaling kernels. Download the complete kernel benchmark table in image-resampling-kernels-lanczos-bicubic-bilinear-comparison.csv.

7 Image Resampling Kernels Compared: Tap Window, Sharpness, and Ringing

In their classic 1988 SIGGRAPH paper, Don Mitchell and Arun Netravali parameterized the entire family of bicubic filters using two constants (B, C) subject to B + 2C = 1. Comparing those cubic splines against Nearest-Neighbor, Bilinear, and windowed Lanczos sinc filters reveals the exact sharpness-versus-ringing trade-off:

Resampling Kernel 2D Support Window Passband MTF Retention Step-Edge Ringing Relative CPU Cost Best Production Use Case
Lanczos-3 (a = 3 sinc) 6×6 (36 taps) 88.5% 9.4% overshoot 3.4× Photographic downsampling, foliage, skin & print/web export
Lanczos-2 (a = 2 sinc) 4×4 (16 taps) 81.0% 5.2% overshoot 2.1× Sharp photo downscaling with reduced high-contrast halos
Catmull-Rom (B=0, C=0.5) 4×4 (16 taps) 78.5% 4.6% overshoot 1.8× Default “Bicubic Sharper” for product photos & thumbnails
Mitchell-Netravali (B=1/3, C=1/3) 4×4 (16 taps) 68.0% 1.8% overshoot 1.8× UI screenshots, typography, CG renders & clean gradients
Bilinear (Triangle Tent) 2×2 (4 taps) 56.0% 0.0% overshoot 1.0× Real-time GPU mipmapping (visibly soft on standalone photos)
Cubic B-Spline (B=1, C=0) 4×4 (16 taps) 51.0% 0.0% overshoot 1.7× Noisy source smoothing (too blurry for general resizing)
Nearest-Neighbor (Box) 1×1 (1 tap) 42.0% 0.0% (Hard aliasing) 0.3× 8-bit pixel art, sprites, QR codes & exact 2×/4× integer UI

“When people say ‘Bicubic,’ they could mean three completely different filters: Cubic B-Spline (B=1, C=0) blurs more than Bilinear, Mitchell-Netravali (B=1/3, C=1/3) balances smoothness and edge control, and Catmull-Rom (B=0, C=0.5) acts as a high-acutance interpolating spline.”

Three Rules for Artifact-Free Batch Image Resizing

  1. Match the Kernel to Edge Contrast (Photos vs. UI Text): Continuous-tone photographs rarely contain 1-pixel jumps from pure black (#000000) to pure white (#FFFFFF), so Lanczos-3 (36 taps) or Catmull-Rom (16 taps) produces crisp eyelashes, hair, and architecture with negligible visible ringing. On synthetic UI screenshots, dark-mode code blocks, or vector logos, however, a 9.4% step-edge overshoot creates a faint bright halo around text—making Mitchell-Netravali or Lanczos-2 the cleaner choice.
  2. Never Multi-Pass Resize Without a Master File: Every non-integer resampling pass multiplies its modulation transfer function (MTF) loss: running three sequential Bilinear resizes (0.56 × 0.56 × 0.56 = 0.175) destroys over 82% of fine passband contrast. Always batch-generate every target size (1600w, 800w, 400w) in a single pass directly from the full-resolution master.
  3. Watch Gamma Encoding on Specular Highlights: Standard JPEG and PNG files store pixel values in non-linear sRGB (γ ≈ 2.2). Averaging dark and bright pixels directly in gamma-encoded space underweights bright specular highlights (such as night city lights or starry skies); resizing in linear light (or using high-precision floating-point convolution) preserves highlight energy and color saturation.

Need to resize, crop, or convert dozens of product photos, screenshots, or responsive web assets locally in your browser without uploading files to an external server? Open BatchPad to batch-process your images with clean scaling presets, or browse our image workflow guides.