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.
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)
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.
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.
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.
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 $