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 $