◩ Grafica e immagini

Interpolazione e ricampionamento: bilineare, bicubica e Lanczos

Cosa accade quando si ridimensiona un'immagine: vicino più prossimo, bilineare, bicubica, Lanczos, aliasing e moiré, e quale filtro scegliere.

Ridimensionare un'immagine significa costruire una nuova griglia di pixel a partire da quella esistente. I nuovi punti di campionamento quasi mai coincidono con quelli vecchi, quindi il programma deve stimare i valori mancanti. Il metodo con cui lo fa si chiama interpolazione o filtro di ricampionamento, e la scelta influisce su nitidezza, aloni, seghettature e motivi indesiderati. Vale la pena capire le differenze invece di lasciare sempre l'impostazione predefinita.

Ingrandire e ridurre sono problemi diversi

  • Ingrandendo, si devono creare valori tra i campioni esistenti. Nessun metodo classico aggiunge dettaglio reale: si sceglie solo come riempire gli spazi, più morbidi o più netti.
  • Riducendo, molti pixel originali confluiscono in uno solo. Il rischio principale non è la sfocatura ma l'aliasing: dettagli più fini della nuova griglia possono trasformarsi in disegni falsi.

Per questo un filtro ottimo per ingrandire non è necessariamente il migliore per ridurre.

I metodi principali

Vicino più prossimo (nearest neighbor)

Ogni nuovo pixel prende il valore del pixel originale più vicino. Nessuna media, nessun colore nuovo.

  • Pro: velocissimo, conserva esattamente i colori originali, mantiene i bordi netti.
  • Contro: ingrandimenti a blocchi, riduzioni piene di aliasing.
  • Quando usarlo: pixel art, icone ingrandite di fattori interi, mappe di indici o maschere in cui non devono comparire valori intermedi.

Bilineare

Il nuovo valore è una media ponderata dei quattro pixel più vicini, in base alla distanza.

  • Pro: veloce e senza seghettature evidenti.
  • Contro: ammorbidisce; in riduzione forte considera solo quattro pixel e salta i dettagli intermedi, producendo aliasing.

Bicubica

Considera i sedici pixel più vicini e usa curve di terzo grado. Esistono diverse varianti con parametri differenti: alcune più morbide, altre più incisive.

  • Pro: buon equilibrio tra nitidezza e regolarità; è l'impostazione predefinita di molti programmi.
  • Contro: le varianti più nitide producono leggeri aloni attorno ai bordi contrastati.

Lanczos

Usa una funzione derivata dal seno cardinale (sinc), troncata su una finestra di due o tre pixel per lato. Si avvicina al ricampionamento teoricamente ideale.

  • Pro: risultati molto nitidi, soprattutto in riduzione.
  • Contro: più lento e incline al ringing, cioè aloni chiari e scuri attorno ai bordi molto netti, come testi neri su fondo bianco.
Metodo Pixel considerati Nitidezza Rischio principale
Vicino più prossimo 1 massima, a blocchi seghettatura, aliasing
Bilineare 4 bassa sfocatura, aliasing in riduzione
Bicubica 16 media-alta lievi aloni
Lanczos (3) 36 alta ringing

Aliasing e moiré in riduzione

Il teorema del campionamento dice, in sostanza, che una griglia non può rappresentare dettagli più fini di metà della propria frequenza. Se si riduce una foto di una camicia a righe sottili senza prima eliminare quei dettagli, le righe si trasformano in bande ondulate che non esistono: è il moiré.

I buoni algoritmi di riduzione fanno due cose:

  1. applicano un filtro passa-basso proporzionale al fattore di riduzione, cioè considerano tutti i pixel che confluiscono nel nuovo;
  2. solo dopo campionano la nuova griglia.

Molte librerie lo fanno automaticamente quando si usano i filtri bicubico o Lanczos, ma non sempre con il bilineare. Un trucco pratico, se lo strumento non lo fa, è ridurre in più passaggi successivi del 50% ciascuno, che approssima un filtraggio corretto.

Consigli per i casi reali

  • Foto per il web: riducete con bicubica o Lanczos, poi applicate una leggera maschera di contrasto alla dimensione finale. La nitidezza va regolata dopo la riduzione, non prima.
  • Screenshot e interfacce: evitate fattori non interi, se possibile. Ridurre al 50% esatto dà risultati molto più puliti che al 47%.
  • Pixel art e sprite: vicino più prossimo con fattori interi (2×, 3×, 4×).
  • Maschere, mappe di segmentazione, immagini indicizzate: vicino più prossimo, altrimenti compaiono valori che non hanno significato.
  • Immagini con trasparenza: premoltiplicate l'alfa prima di ridimensionare, per evitare bordi scuri.
  • Ricordate la gamma: per risultati accurati, soprattutto con dettagli chiari su fondo scuro, il ricampionamento va fatto in luce lineare.

E l'ingrandimento "intelligente"?

Esistono oggi metodi di ingrandimento basati su reti neurali che producono immagini più dettagliate dei filtri classici. È importante capire cosa fanno: non recuperano informazioni presenti nell'originale, ma generano dettagli plausibili sulla base di ciò che hanno appreso da altre immagini. Per uso creativo possono essere utili; nel mio lavoro di analisi, dove conta ciò che l'immagine contiene davvero, un ingrandimento di questo tipo non può essere trattato come prova di un dettaglio.

In sintesi

  • Ridimensionare significa stimare valori su una nuova griglia; ingrandire e ridurre pongono problemi diversi.
  • Vicino più prossimo per pixel art e maschere; bicubica o Lanczos per le fotografie.
  • In riduzione il nemico è l'aliasing: il filtro deve considerare tutti i pixel che confluiscono.
  • La nitidezza si regola dopo il ridimensionamento, alla dimensione finale.
  • Gli ingrandimenti con reti neurali inventano dettagli plausibili, non li recuperano.
MM
Marco Marzaduri

Marco Marzaduri si occupa di cybersecurity, informatica forense e sviluppo web. Laureato in informatica, unisce il rigore dell'analisi tecnica all'attenzione per le persone che usano la tecnologia.

Leggi anche