Piccolo e letale. Avisynth è un potentissimo strumento di editing audio-video.
|
|
8. Ripulire la sorgente videoCaratteristica di alcuni video è la presenza del
noise, del rumore, che si può presentare sotto la forma del tipico effetto-neve o come una grana presente in maniera uniforme più o meno su tutto il video.
Perchè ci si ostina nella sua rimozione?
In primis, perchè la presenza del rumore rende meno comprimibile il video rispetto a quanto potrebbe esserlo.
E' anche vero che c'è chi ritiene la presenza del rumore essenziale per conferire ad alcuni video quell'affascinante aspetto "old-style", ma se si vuole dare priorità alla qualità dell'archiviazione, è meglio rimuoverlo.
Si ripulisce l'immagine e si rende più comprimibile, risparmiando spazio.
Tutto questo si può ottenere con un numero sterminato di filtri:
PeachSmoother (concepito proprio per l'acquisizione TV),
Denoise,
Fluxsmooth,
MipSmooth,
Deen,
Convolution3d,
TemporalSoften tanto per citarne qualcuno.
I Denoisers, come vengono chiamati, agisono su due piani: quello spaziale e quello temporale o tutti e due insieme.
Il denoiser
spaziale prende un frame, ne esamina i pixel servendosi al più dei
pixel circostanti nello stesso frame e, in base ad essi, determina se si tratti di rumore oppure no.
Il denoiser
temporale prende un frame, ne esamina i pixel servendosi al più dei
frame circostanti e, in base ad essi, determina se si tratti di rumore oppure no.
Chiaramente il secondo approccio è più attento nella rimozione dei dettagli ma anche più lento.
Sembrerebbe incauto a questo punto l'uso di un filtro spaziale però si deve tener conto che:
- come già osservato in precedenza, a volte sacrificare una piccola parte di dettaglio può essere utile per guadagnare in comprimibilità.
- possono risultare utilissimi anche in impieghi non necessariamente legati alla rimozione del rumore.
Ci occuperemo ora di un filtro molto particolare che unisce all'aggressività dei filtri spaziali la moderazione propria dei filtri temporali in maniera molto originale.
Tanto per ricalcare ciò che era stato detto nell'introduzione della
Parte B, non si tratta di un filtro ma di uno script.
8.1. Denoise con Remove GrainCiò che segue è una parziale traduzione delle istruzioni sul filtro in allegato.
RemoveGrain è un filtro molto potente per la rimozione del rumore video.
Si presenta in
4 versioni differenti ottimizzate a seconda della tipologia del processore in uso.
E' essenzialmente un
filtro spaziale ma in combinazione con altri filtri appartenenti allo stesso package,
Clense e
Repair, è possibile definire delle funzioni Avisynth per operare nche in ambito
spazio-temporale o su
sorgenti interlaced.
Ogni denoiser spaziale adotta più o meno la stessa tecnica, vale a dire che il pixel di riferimento viene stimato se essere rumore o meno, ed eventualmente rimpiazzato con uno dei pixel adiacenti. La stima viene fatta confrontando il luma, o il chroma, o tutti e due.
RemoveGrain dispone di 18 modalità.
Le 1-10,17,18 sono state concepite per
sorgenti progressive, mentre le 13-16 per quelle
interlaced.
Non è efficace per la rimozione delle grosse macchie o dei graffi tipici delle vecchie VHS per es. (per le quali è consigliabile usare qualcosa di specifico come
Despot o
Descratch) ma per il rumore che non oltrepassa la grandezza di un pixel.
Che fa removeGrain? Se 1 <= mode <= 4, il pixel in esame viene evenualmente rimpiazzato con uno degli 8 pixel adiacenti ossia tutti quelli che gli stanno intorno.
Come?Fra gli 8 pixel ordinati per luma, ne vengono scelti 2. Fra i 3, vince il pixel (che rimpiazza quello eventualmente in esame) che ha il luma che sta nel mezzo (il
minmax clipping delle istruzioni in allegato fa esattamente questo).
La scelta dei due dipende dalla modalità (mode) in uso perchè si considerano i pixel p
mode e p
(9-mode).
Es.Supponiamo il nostro pixel abbia
luma=39 e che i pixel adiacenti abbiano
luma=32,180,56,32,83,215,17,43Ordinandoli avremmo:
17,32,47,53,83,110,180,215
- Se mode=1 avrò p1=17 e p(mode-1)=215 => il pixel non sarà rimpiazzato
- Se mode=2 avrò p1=17, p(mode-2)=180 => il pixel non sarà rimpiazzato
Il pixel verrà rimpiazzato solo per
mode >= 3.
- mode=1 lavora esattamente come Undot ma è più efficace nell'eliminazione del rumore e di conseguenza meglio dal punto di vista della compressione globale.
- mode=2 è un pò più aggressivo ma sempre attento nel preservare i particolari
- mode=3,4 tendono a rimuovere i dettagli più fini e devono essere usati con cautela
I primi 4 modi sfumano per diminuire il rumore e aumentare la compressione, i
mode 5-9,17,18 coservano meglio i bordi.
in particolare il mode 17 è una variante del
mode 4 ma più conservativo.
Questi modi non lavorano sui pixel adiacenti come i primi 4, ma pigliano come riferimento le
linee adiacenti al pixel, che sono 4: destra, sinistra, sopra e sotto.
Alcuni accorgimenti nell'uso:
- RemoveGrain non può levare il rumore dai bordi perchè, per costruzione, non riesce a catturare i pixel adiacenti.
- O si usa il filtro prima del crop o si tiene il rumore sui bordi.
- Il mode 2, quello di default, è il miglior compromesso fra efficienza e velocità.
- Il resize dev'essere fatto dopo l'applicazione del filtro se si aumenta la dimensione originale. Prima, se si diminuisce. (Thanks Dijkstra
)
Altri filtri compresi nel pacchetto sono
Clense e
Repair. Il primo è un efficace pulitore ma un pò brutale. Dev'essere usato insieme a
Repair per la gestione degli artefatti che inevitabilmente produce.
- Clense ha due parametri: il clip e un boolean, grey, che ha valore vero o falso a seconda che la sorgente video sia in bianco e nero o meno.
- Repair lavora in un modo simile a RemoveGrain solo che serve per rimuovere gli artefatti introdotti da Clense.
In poche parole confronta il clip originale con quello filtrato e lo rielabora per cercare ricostruire dettagli importanti persi nel processo di ripulitura.
Per questo motivo l'utilizzo migliore di questi filtri è all'interno di uno script che li combini in modo ottimale.
Nell'area download è presente il tipico
RemoveDust estratto dallla documentazione del filtro.
Richiede il clip, ovviamente, e il
mode per
RemoveGrain.
Lo script è semplicissimo. Non fa altro che:
Clense,
Repair e
RemoveGrain.
La modalità di
Repair usata è la 16, un buon compromesso fra conservazione dei dettagli e comprimibilità che, volendo, si può cambiare adeguandola a
RemoveGrain ricordando che:
RemoveGrain (1-6) -> Repair (11-16)E siccome tante chiacchiere servono a poco, in basso troverete un estratto dell'
EncByJonny 1.03 che mostra le due differenti situazioni nell'uso o meno di
RemoveDust e che fa vedere benissimo come possa aumentare in maniera sensibile, a parità di condizioni, la comprimibilità a scapito di una minima perdita di dettaglio:
Codec=XviD 1.1 CVS del 16/10/2005
Settaggi:
- Bframe (consecutive,offset,ratio) = (1,1.00,1.00)
- Max I-frame Interval = 125
- Motion Search Precision = 6
- VHQ = 2 anche sui BFrames
1° script: