## BicubicResize / BilinearResize / LanczosResize / Lanczos4Resize / PointResize

`BicubicResize` (clip, int target_width, int target_height, float "b", float "c")
`BilinearResize` (clip, int target_width, int target_height)
`LanczosResize` (clip, int target_width, int target_height)
`Lanczos4Resize` (clip, int target_width, int target_height)
`PointResize` (clip, int target_width, int target_height)

Per tutte le forme di resize si può usare una sintassi estesa che croppa prima di ridimensionare. Sono eseguite le stesse operazioni come se si mettesse Crop prima di Resize, ci può essere una piccola differenza di velocità.

    Crop(10,10,200,300).BilinearResize(100,150)
      è la stessa cosa di
    BilinearResize(100,150,10,10,200,300)

`BicubicResize` (clip, int target_width, int target_height, float "b", float "c", float "src_left", float "src_top", float "src_width", float "src_height")
`BilinearResize` (clip, int target_width, int target_height, float "src_left", float "src_top", float "src_width", float "src_height")
`LanczosResize` (clip, int target_width, int target_height, float "src_left", float "src_top", float "src_width", float "src_height")
`Lanczos4Resize` (clip, int target_width, int target_height, float "src_left", float "src_top", float "src_width", float "src_height")
`PointResize` (clip, int target_width, int target_height, float "src_left", float "src_top", float "src_width", float "src_height")

Importante: AviSynth ha resizers orizzontali e verticali completamente separati. Se su un asse l'input è lo stesso dell'output , quel resizer verrà saltato. Quale dei due sia chiamato per primo, è determinato da quello che ha il più piccolo rapporto di ridimensionamento. Questo è fatto per salvaguardare il massimo della qualità, sicchè i 2 resizers hanno la miglior immagine possibile su cui lavorare.

### Bilinear

Il filtro `BilinearResize` ridimensiona i video frames a qualsiasi nuova risoluzione. Se si forniscono i parametri opzionali, il risultato è identico a quello che si avrebbe applicando il `Crop` con quei valori prima del `BilinearResize` (eccetto la maggior velocità).

`BilinearResize` usa un filtraggio bilineare standard ed è quasi identico all' opzione "precise bilinear" di VirtualDub. Lo è solo "quasi" perché il filtro di di VirtualDub sembra assumere il fattore di scala in modo leggermente errato, col risultato che i pixels della parte superiore e destra dell'immagine vengono o tagliati o duplicati. (Questo errore è apprezzabile quando si allarga la dimensione del frame di 2 o più volte, ma è altrimenti insignificante, cosicchè non mi preoccuperei troppo.)

    Examples:
    # Caricamento di un file video e resize a  240x180 (da qualunque dimensione
        originaria)
    AVISource("video.avi").BilinearResize(240,180)

    # Caricamento di un video 720x480 (CCIR601) e resize a 352x240 (VCD),
    # mantenendo la corretta aspect ratio
    AVISource("dv.avi").BilinearResize(352,240,8,0,704,480)

    # Estrazione del quadrante superiore destro di un video 320x240 e zoom
    # per riempire l'intero frame
    BilinearResize(320,240,160,0,160,120)

### Bicubic

``BicubicResize`` è simile al ``BilinearResize``, eccetto che al posto di una funzione lineare di filtraggio usa la funzione Mitchell-Netravali two-part cubic. I parametri b e c si usano per tarare le proprietà del cubic, e sono chiamate a volte "blurring" e "ringing".

Co b = 0 e c = 0.75 il filtro è identico al "precise bicubic" di VirtualDub "precise bicubic," ed i risultati sono identici salvo il fatto del problema di scaling cui si accennava prima. Il default è b = 1/3 e c = 1/3, che erano i valori raccomandati da Mitchell e Netravali come quelli che forniscono i risultati più piacevoli nei tests soggettivi con esseri umani. Valori più grandi di b e c producono interessanti effetti "op-art" --ad esempio provate b = 0 e c = -5.

Se si vogliono ingrandire i video, si ottengono migliori risultati visivi col ``BicubicResize`` che con ``BilinearResize``. Tuttavia, se lo si vuole restringere, i risultati migliori si hanno col ``BilinearResize``. Sebbene il filtro bicubico di VirtualDub 'produca immagini migliori alla vista del bilinear , questo è principalmente dovuto al fatto che il bicubico contrasta l'immagine, non perchè sia migliore. Le immagini contrastate sono piacevoli da guardare--fino al momento in cui non si cerca di comprimerle, al che esse ridiventano sgradevoli e molto alla svelta :-((. Il valore di default del ``BicubicResize`` non contrasta così tanto quanto il bicubic di VirtualDub ma in ogni caso contrasta più del Bilinear. Se si pianifica di encodare un video a basso bitrate, non mi sorprenderei del tutto se il ``BilinearResize`` ottenesse una maggior qualità.

Si deve impostare
b + 2 * c = 1
per il filtraggio più accurato. Questo dà per b = 0 un valore max per c = 0.5, che è un valore buono di contrasto.

Da c>0.6 il filtro comincia a produrre effetto "ring". Non si ottiene un reale contrasto, quello che si ottiene è un effetto TV.
Non sono ammessi valori negativi per b.

### Lanczos

``LanczosResize`` è una alternativa al ``BicubicResize`` con alti valori di c (circa 0.6 ... 0.75) che produce un contrasto ancora maggiore. Normalmente produce una miglior qualità (meno artifatti) ed una immagine ben definita.

### Lanczos4

`Lanczos4Resize` (aggiunto in v2.55) è strettamente imparentato con `LanczosResize` (nome corretto: Lanczos3Resize). Quest'ultimo usa un filtro 6-tap mentre il primo un filtro 8-tap . Il risultato è che `Lanczos4Resize` produce immagini più nitide. Utile in special modo quando si ingrandiscono le immagini.

### Point

``PointResize`` è il resizer più semplice possibile. Usa un algoritmo Point Sampler o Nearest Neighbour , che normalmente produce immagini "blocchettose". In generale dovrebbe essere usato solo per ingrandire piccole aree per esaminarle meglio.

`$Date: 2004/10/03 21:26:00 $`