Creare uno script per AviSynth, passando per DVD2AVI

Versione 1.4

Questa pagina è stata pubblicata da Andrea Panisson su http://digilander.libero.it/andypanix. Ultimo aggiornamento: 17/08/2003.
(Rimuovi "NOSPM_" dall'indirizzo email per contattarmi)




Software necessari: DVD2AVI, AviSynth ed un qualunque editor di testo (Notepad.exe di Windows va benissimo)



INDICE:



Questa guida

Ho scritto questa guida con lo scopo di illustrare le basi dell'utilizzo di AviSynth, un software freeware molto potente di editing video lineare che si presenta sotto forma di un linguaggio di script. Allo scopo, vi mostrerò come creare uno script che vi consentirà di importare i vostri DVD preferiti in VirtualDub, un altro ottimo programma di editing video lineare, che si presenta però con una comoda interfaccia a finestre e che consente ad esempio di creare DivX o Xvid anche con più tracce audio.

Per poter utilizzare un DVD, si intende che prima ne abbiate copiato il contenuto sul disco fisso del vostro computer secondo quanto descritto nella guida a DVD Decrypter demuxando, ovvero separando in 2 file diversi audio e video (vedi ad esempio il metodo IFO).
In questo articolo non mi occuperò della parte audio; fate riferimento alla guida ad HeadAC3he ed a VirtualDub per tutti i relativi dettagli sulla eventuale conversione audio.


I programmi

Come prima cosa è necessario procurarsi ed installare i programmi che vi servono.

DVD2AVI

Potete scaricarlo da Doom9.org nella sezione software: http://doom9.org/software.htm, nella categoria "Decoders"; sono disponibili diverse versioni, l'ultima, la 1.86, supporta anche la conversione audio con compressione mp3 tramite il codec Lame (il link diretto per la versione 1.86 è: http://www.doom9.org/Soft21/Decoders/dvd2avi186.zip). Comunque, dato che ci occupiamo del solo video la cosa non risulta di grande utilità, quindi potete usare una versione qualunque del programma (per la procedura da seguire con l'audio, fate riferimento alla guida "DVD Backup con Ogg Media Container"; l'ipotesi è quella che abbiate estratto sul disco fisso i flussi video ed audio in file separati, secondo quanto descritto nella guida a DVD Decrypter, metodo IFO). Non è necessaria installazione, dato che il programma è distribuito in un archivio compresso in formato Zip. Estraete il tutto in una cartella ed eseguite "DVD2AVI.EXE" per lanciare il programma.


Prestate attenzione ad utilizzare le versioni più recenti, in particolare quelle con un numero di release successivo od uguale alla 2.5. L'ultima versione disponibile, potete scaricarla al seguente indirizzo sul sito ufficiale del progetto: http://sourceforge.net/projects/avisynth2, oppure sempre su Doom9, nella sezione software, http://doom9.org/software.htm, sotto la categoria "Support Utils".
Rispetto alla vecchia versione 2.07, tutte le versioni successive alla 2.5, consentono di guadagnare qualcosina in termine di velocità di codifica, dato che consentono di lavorare direttamente nella modalità YV12. Per chi non avesse la più pallida idea di che cosa sia la modalità YV12, consiglio di leggere quanto ho scritto in questo articolo. Comunque, a farla breve, è un discorso di gestione del colore, di come vengono codificate le informazioni sul colore; YV12, al pari di RGB, sono dei cosiddetti "spazi di colore", ovvero il modo in cui vengono gestite le informazioni sui colori dei singoli pixels di ciascuna immagine. I video sotto Windows vengono gestiti in maniera nativa con lo spazio YV12 (YUV a 12 bit), e la nuova versione di AviSynth supporta lo YV12 e consente quindi di risparmiare i conti necessari al passaggio tra uno spazio di colore all'altro (YV12 -> RGB -> YV12). Per maggiori info, potete anche leggervi l'ottimo articolo di Benedetto: "La modalità YUV e i Sw che la supportano" forse un pò datato ma comunque utile.
La procedura di installazione è del tutto automatica dato che il software viene distribuito con un eseguibile autoinstallante e quindi non dovreste avere problemi di sorta. Un'unica nota: AviSynth è essenzialmente una libreria dll e come tale viene installata. Non aspettatevi quindi, una volta installato, di trovare nel menù di Windows il classico collegamento al file eseguibile; se tutto è andato a buon fine, al termine dell'installazione dovreste trovare il file avisynth.dll nella cartella dei files di sistema di Windows (ovvero in \Windows\System su Win98/ME, \WinNT\System32 su Win2000 e se non erro \Windows\System32 su WinXP). Di per se non potrete utilizzare AviSynth nel classico modo in cui siete abituati con gli altri programmi, ma non preoccupatevi, in quanto vi mostrerò di seguito come usarlo. Se avete dubbi, interrogativi, misteri da chiarire etc... etc..., vi consiglio di leggervi Avisynth & VirtualDub-> links utili e di fare riferimento al forum di doom9 in italiano per le vostre domande (non sono un "esperto" di AviSynth, quindi non è detto che sia in grado di aiutarvi).

FILTRI per AviSynth

La forza di AviSynth è la disponibilità di un numero enorme di filtri. Ne esistono davvero tanti, ed è praticamente impossibile postare tutti i link o consigliarne alcuni; provate a dare un'occhiata sul forum di doom9 in italiano nel post Avisynth & VirtualDub-> links utili, sezione DivX Encoding, oppure in inglese: AviSynth - YV12 FAQ, e AviSynth Q&A.
Sostanzialmente per utilizzare questa guida vi può bastare un solo filtro, ovvero "MPEG2Dec3: MPEG-2 Decoder for Avisynth 2.5+" di MarcFD, che dovreste trovare sul sito di Nic: ttp://nic.dnsalias.com.
Potreste procurarvi anche qualche buon filtro per la riduzione del rumore, quale ad esempio FluxSmooth; per una lista completa vi rimando comunque ad uno dei links sopra citati, e più in generale al forum di doom9.org.
Per comodità, ho reso disponibili per il download i due filtri cui accennavo;  li trovate in un file .zip che potete scaricare a questo indirizzo: Filtri per AviSynth versione 2.5 (contiene i seguenti filtri per AviSynth 2.5: MPEG2Dec3.dll v.1.08, FluxSmooth v. 1.0), ma vi consiglio di controllare ad uno degli indirizzi di cui sopra l'eventuale presenza di aggiornamenti e/o nuove versioni.
Ricordate che, una volta scaricati, dovete estrarre tutti i filtri in una cartella, cartella a cui dovrete fare riferimento quando andrete a caricare i filtri nello script di AviSynth. La cartella predefinita la trovate all'interno della cartella in cui avete installato AviSynth che per default è: "C:\Programmi\AviSynth 2.5\plugins". Tutti i filtri messi in questa cartella non necessitano di essere caricati esplicitamente con il comando "LoadPlugin", ma possono essere semplicemente chiamati. Ad esempio, potreste estrarli nella cartella "C:\Filtri".
Questi filtri funzionano solo con AviSynth 2.5 e non con le versioni precedenti.



Procediamo ora verso la creazione del vostro primo script per AviSynth.

DVD2AVI

L'utilizzo di questo programma è necessario per:

1) creare un progetto di lavoro, ovvero un file con estensione .d2v, che chiamerò film.d2v e che è necessario per poter aprire in AviSynth i file vob (mpeg2). A dire il vero, esiste anche un progetto per un filtro per AviSynth che consente di importare direttamente i files vob senza passare per DVD2AVI, ovvero MpegDecoder, sviluppato da Nic (http://nic.dnsalias.com/MPEGDecoder.html), tuttavia dovreste usare DVD2Avi comunque per ottenere altre informazioni, quindi preferisco utilizzare il primo metodo.

2) individuare il formato del video (16:9 anamorfico ad esempio)

3) individuare le dimensioni del video (in pixel) ed i valori da utilizzare per ritagliare le bande nere e per il ridimensionamento.

Apriamo quindi DVD2AVI (basta lanciare l'eseguibile DVD2AVI.exe).

Iniziamo con qualche impostazione di configurazione. Su "Audio" scegliete "None" in "Track Number" (come ho già detto l'audio non ci interessa; potete fare riferimento a "HeadAC3he" per la conversione dell'audio da AC3 ad altri formati, nell'ipotesi che abbiate estratto sul disco fisso i flussi video ed audio in file separati, secondo quanto descritto nella guida a DVD Decrypter, metodo IFO):



Tutte le impostazioni presenti nel menù "Option" potete tranquillamente ignorarle dato che non vengono utilizzate (solo se utilizzate DVD2Avi per la conversione da MPEG2 ad Avi dovrete preoccuparvene, ma non è il nostro caso).

Aprite ora i file MPEG2 precedentemente decriptati e copiati sul vostro disco fisso (per una descrizione della procedura, ripeto, vedi la guida a DVD Decrypter). A tal scopo, premete F3 od andate nel menù "File, Open":



Andate nella cartella in cui avete copiato il vostro DVD e scegliete il primo Mpeg della lista; supponendo di aver copiato i file nella cartella "E:\DVD", la finestra si presenta come di seguito:



aprite il primo file (in questo caso VTS_01_1.VOB) e cliccate quindi su "Apri":



Dovrebbe comparire la finestra seguente, dove sono stati automaticamente caricati tutti i file vob del film (se non fosse così, cliccate su "ADD" ed aggiungeteli manualmente):



Cliccate quindi su "OK".
Sebbene non strettamente necessario, nel menù "Video", scegliete "Field Operation -> None":



e, sempre nel menù "Video", scegliete "Color Space -> YUV 4:2:2"



Infine, premete F4 oppure nel menù "File" scegliete "Save Project":



Date quindi un nome al vostro file, in questo caso "film.d2v" e cliccate su "Salva":




A questo punto compare la finestra mostrata qui a lato. Mentre aspettate che il processo finisca (2), date un'occhiata a quanto mostrato nella sezione "Video". Oltre ad indicare che si tratta di un video in formato PAL a 25 fotogrammi per secondo (FPS) standard, memorizzate il fatto che in "Aspect Ratio" è indicato 16:9. Nel caso dei DVD, praticamente nel 99% dei casi il video è in formato anamorfico 16:9, ovvero si presenta tipicamente allungato in verticale. Senza dilungarmi troppo su di una discussione sul formato video (in rete trovate un'enormità di materiale in merito, anche se al solito vi consiglio di partire da doom9 http://www.doom9.it/), vi basti sapere che in ogni file MPEG-2 vi è memorizzato un valore che indica al lettore DVD se si tratta di video in formato anamorfico o meno. Nel caso il formato sia tale, ovvero, ripeto, si presenti allungato in verticale, sta poi al lettore restituire al video il suo aspetto "normale" prima di inviarlo al televisore.

Vedremo più avanti, quando si tratterà di ridimensionare il video, come viene calcolato tale valore. Tutta la procedura dovrebbe richiedere non più di 5-10 minuti (dipende dalla velocità del vostro PC ed ovviamente dalla lunghezza del film).
Al termine, nella cartella scelta troverete il file "film.d2v". A questo punto, non chiudete il programma, in quanto manca un'ultima cosa da fare.

Sulla barra del titolo, notate anzitutto alcune informazioni sulla risoluzione del video:



I DVD hanno una risoluzione standard (formato PAL) di 720x576 pixel; se il video è in formato anamorfico (allungato in verticale) le dimensioni devono essere ricalcolate per riottenere un aspetto corretto. Per far ciò il lettore DVD (sia il programma sul vostro PC, sia il lettore da salotto) ricalcola le dimensioni orizzontali usando una semplice formula, ovvero moltiplicando per 16/9 le dimensioni verticali:

Dim. Orizz. = dim. Vert. x 16 : 9 = 576 x 16 : 9 = 1024

Si ottiene in pratica una risoluzione orizzontale di 1024 pixel. Questo procedimento viene effettuato ogni qual volta che il video è in formato anamorfico. Ma torniamo al programma.
Spostando il cursore sulla barra di scorrimento alla base della finestra principale:



selezionate una scena sufficientemente chiara che vi consenta di distinguere nettamente i bordi neri che contornano il video (ricordate che potreste avere bordi non solo sopra e sotto ma anche a destra ed a sinistra):



Cliccate su "Video, Clip & Resize, Clip&Resize Ogo":



Compare la seguente finestra:



Utilizzate prima i cursori Left e Right per eliminare e tagliare un eventuale bordo a sinistra ed a destra. Vi consiglio fortemente, per quel che riguarda la dimensione orizzontale del video (Width), di usare solo valori che siano multipli di 16, questo per facilitare le cose quando andrete a ridimensionare il video; potrete infatti in tal modo usare la larghezza attuale del video come dimensione massima senza dover ridimensionare (e risparmiando quindi parecchi conti). Potete leggere nella barra del titolo se la larghezza impostata è multipla o meno di 16:



Utilizzate quindi i cursori Top e Bottom per eliminare le classiche bande nere superiori ed inferiori. Se qualcosa fosse andato storto, semplicemente cliccate su "Reset" per ritornare alla situazione iniziale.

P.S: i cursori in verticale si spostano per multipli di 2, mentre in orizzontale per multipli di 8, quindi non preoccupatevi se vi accorgete che i valori di taglio procedono a salti, non siete voi impediti, ma è il programma che ha questo vincolo per garantire un minimo di compatibilità con i codec video mpeg.

Non modificate o toccate nulla nella colonna di destra; soprattutto non reimpostate "Video aspect". Quanto presente in "Filter Type" non interessa minimamente, quindi ignoratelo. Terminato il tutto, la finestra dovrebbe presentarsi come di seguito indicato:



Facendo riferimento all'esempio mostrato, il vostro video ha quindi ora (senza bordi neri) una risoluzione di 720x436 pixel ((3) e (4)) sempre in formato anamorfico (allungato in verticale). Scrivetevi da qualche parte tutti i valori trovati, in particolare i valori che leggete in (1), (2), (3) e (4) (oppure semplicemente lasciate aperta la finestra del programma così come sta).

Se desiderate ora chiudere il programma potete tranquillamente farlo (ma ricordatevi di scrivervi da parte i valori appena trovati). DVD2Avi ha esaurito il suo scopo.




Il ridimensionamento del video

Sebbene questa procedura possa essere affrontata in seguito, penso che per semplicità, sia meglio occuparcene adesso. Prima di continuare è necessario quindi fare qualche conto. Nell'esempio di sopra, le dimensioni del video risultano, dopo il ritaglio delle bande nere, di 720x436 pixel (valori (3) e (4)):



Il video è però ancora in formato anamorfico, ed è quindi necessario ridimensionarlo per restituirgli un aspetto "normale" e non allungato.
Sostanzialmente vi sono due possibilità: aumentare la risoluzione orizzontale (allargarlo), oppure diminuire quella verticale (restringerlo in verticale). La seconda scelta è generalmente la migliore. Vediamone i motivi. Anzitutto, se si aumenta la risoluzione del video, ne aumentano anche le dimensioni, e questo potrebbe essere un problema per chi desidera salvare i propri video su supporti CD-R. Poi, in termini qualitativi, ingrandire un video richiede l'utilizzo di tecniche di interpolazione dato che si devono "inventare" alcuni pixel, e questa procedura, in termini qualitativi, non è mai molto buona. Ingrandendo il video si potrebbe perdere qualcosina in termini di definizione e nitidezza dei dettagli, cosa che invece non accadrebbe riducendone le dimensioni (ma in questo caso alcuni dettagli andrebbero persi del tutto). Sostanzialmente la scelta sta all'utente: se si desidera visualizzare il video compresso su di uno schermo ad alta risoluzione e di grandi dimensioni, aumentare la risoluzione orizzontale potrebbe essere la scelta migliore; se invece si desidera visualizzare il video su di uno schermo di dimensioni normali a risoluzioni non molto elevate, sicuramente la seconda scelta farebbe più al caso nostro. Detto questo, scegliamo di ridimensionare il video riducendone le dimensioni verticali, tenendo comunque presente che la procedura da seguire è sostanzialmente simile in entrambi i casi (noto l'Aspect Ratio): si tratta di calcolare una delle due dimensioni, nota l'altra.
Per far questo prima si deve calcolare l'aspect ratio, ovvero il rapporto tra altezza e larghezza effettivo del video. Vediamo come fare (per aiutarvi potete scaricare a questo indirizzo un file di Excel che vi consentirà di effettuare tutti i conti in automatico; comunque per capirne il funzionamento, vi consiglio in ogni caso di continuare con la lettura).

Ho già detto che un lettore DVD corregge la risoluzione orizzontale moltiplicando l'altezza per il rapporto 16:9. In pratica, la corretta risoluzione orizzontale è 576 x 16 : 9 = 1024. Questo valore è in realtà lo stesso per tutti i DVD in formato anamorfico 16:9 nello standard PAL (altre nazioni usano NTSC). Ma se vi sono delle bande nere questo non è il rapporto effettivo del video. Per calcolarlo è sufficiente dividere 1024 per l'altezza del video ritagliato e quindi senza i bordi neri; nel nostro esempio si tratta di dividere 1024 per 436. Si ottiene:

rapporto effettivo (Aspect Ratio): 1024 / 436 = 2,35 (arrotondato alla seconda cifra decimale)

Come si nota nel nostro caso si tratta di un classico video con rapporto 2,35:1.

Noto l'Aspect Ratio (AR), scelta la risoluzione orizzontale, basta dividerne il valore per l'AR calcolato per ottenere l'altezza mantenendo le proporzioni.  Ad esempio:

Risoluzione orizzontale = 720 pixel
Risoluzione verticale = 720 / 2,35 ~ 306

oppure

Risoluzione orizzontale = 640 pixel
Risoluzione verticale = 640 / 2,35 ~ 272

In realtà un piccolo intoppo c'è. E' infatti consigliabile, anzi, necessario, rispettare una regola per quel che riguarda le dimensioni di un video: queste devono essere multiple di 16 (vedi la guida al compressione MPEG per maggiori dettagli). Inoltre, se si sono rimossi eventuali bordi neri verticali, si deve tener conto di un fattore di correzione nel calcolo dell'aspect ratio finale. Per aiutarvi (ed aiutarmi) ho scritto un piccolo file di Excel:



cui avevo già accennato in precedenza, che si spiega sufficientemente bene da solo e che potete scaricare a questo indirizzo (.zip di circa 25Kb). Basta inserire qualche valore (5 per la precisione) e potrete trovare in basso le righe da copiare direttamente nello script per AviSynth per il cropping (ritaglio) e per il ridimensionamento usando il metodo bicubico o quello bilineare (uno solo dei due ovviamente).

Passiamo ora ad AviSynth.


AVISYNTH

Una guida completa ad AviSynth richiederebbe una quantità di tempo che al momento non ho (ed a dire il vero mi manca anche un pò di voglia). Mi limito quindi a fornirvi un semplice script di esempio che vi consentirà di utilizzare in modo basilare ma comunque proficuo questo ottimo strumento per l'editing video.

Per reperire maggiori informazioni su AviSynth, fate riferimento al seguente link: Avisynth & VirtualDub-> links utili. Una guida in italiano (piuttosto datata a dire il vero, ma utile comunque per farsi qualche idea) la trovate al seguente indirizzo: http://www.divax.it/php/guideview.asp?ID=330 (un grazie a Minho per il link).

Aprite dunque il Blocco note di Windows (Start, Programmi, Accessori, Blocco note) od un qualunque editor di testo e copiate ed incollate le seguenti righe, prestando attenzione nel caso dobbiate cambiare il nome della cartella in cui avete messo i filtri per AviSynth (in questo caso, in particolare, la cartella in cui avete messo Mpeg2Dec3.dll) ed in cui avete salvato il progetto DVD2AVI.

----------------------

#Tipico script per un video in formato 2.35:1
#con bande nere di 74 pixel sopra e 66 pixel sotto e
#ridimensionato a 640x272

LoadPlugin("C:\Filtri\MPEG2Dec3.dll")
mpeg2source("d:\DVD\film.d2v")
crop(0,74,720,436)
#BilinearResize(640,272)
BicubicResize(640,272,0,0.5)

----------------------

Nel mio esempio, la cartella contenente i filtri sarà C:\Filtri, mentre il film, o meglio, il file progetto DVD2AVI è D:\DVD\film.d2v.

Le cose essenziali da conoscere sono (non fa differenza utilizzare lettere maiuscole o minuscole):

#: questo carattere precede i commenti, ovvero qualunque cosa alla sua destra e nella stessa riga viene considerata un semplice commento e quindi saltata dal programma (nell'esempio ho commentato "BilinearResize..." avendo utilizzato il metodo bicubico).

LoadPlugin: viene usato per caricare un determinato plugin; tutti i plugins devono essere caricati con questo comando prima di poter essere usati, a meno che non mettiate i filtri nella cartella di default per i plugins ("C:\Programmi\AviSynth 2.5\plugins"), nel qual caso esiste l'autoload, ed il comando risulta superfluo. E' buona norma comunque caricare all'inizio tutti i plugins che intendete usare.

mpeg2source: è un comando interno al plugin MPEG2Dec3.dll e serve per importare il film come progetto .d2v.

crop: questo comando è invece interno ad avisynth.dll, ovvero è fornito con avisynth ed è utilizzato per eliminare le bande nere ai bordi del vostro video. I valori da inserire sono quelli che avete trovato prima con DVD2AVI, ed in particolare vanno inseriti nel seguente ordine: crop (pixels da sinistra, pixels dall'alto, larghezza del video, altezza del video) ovvero facendo riferimento alla finestra vista in DVD2Avi:



Quindi: crop ((1), (2), (3), (4)) => crop (0, 74, 720, 436)

BilinearResize, BicubicResize: sono i comandi di ridimensionamento e sono interni ad avisynth.dll. Ve ne sono altri ma nella maggior parte dei casi questi due soddisferanno ogni vostra esigenza. La differenza sta nella precisione: il bicubico è più preciso ma più lento (richiede più conti). Importanti da conoscere sono i primi due parametri (che sono anche gli unici nel caso del bilineare), ovvero la larghezza del video e l'altezza. Rimandandovi a quanto già visto in precedenza per il calcolo della dimensione corretta, ritengo superfluo aggiungere altro. Utilizzate il foglio di Excel che trovate qui per effettuare tutti i conti e gli aggiustamenti necessari. Alla fine, restando fedeli al nostro esempio, scriveremo BicubicResize(640,272,0,0.5).

--------------------------------

Quanto detto credo sia sufficiente per iniziare con AviSynth. Per una descrizione completa di tutte le funzioni e dei vari parametri disponibili, potete fare riferimento all'help che dovrebbe essere stato installato assieme alla versione 2.5 e che dovreste trovare nel menù di avvio (Start, Programmi, AviSynth 2, Avisynth Documentation). Purtroppo è in inglese, quindi, chi non sa questa lingua, deve fare riferimento all'ottima traduzione pubblicata da Alex_e_Basta e di cui dovreste trovate l'indirizzo nella "famosa" discussione Avisynth & VirtualDub -> links utili nel forum italiano di doom9.

Rimane da memorizzare il nostro piccolo script. Ecco come potrebbe presentarsi la finestra del "Blocco note":



A questo punto cliccate su "File, Salva" e salvate lo script con un nome qualsiasi in una qualsiasi cartella ma con estensione .avs, del tipo "film.avs". (vi consiglio di salvare lo script nella stessa cartella in cui avete copiato i file .vob del DVD).



E questo è tutto. Potete ora chiudere Blocco note ed avete pronto uno script per AviSynth che vi consentirà di importare il vostro film in DVD direttamente in VirtualDub.

Un'ultima cosa: ricordate che potete aprire gli script di AviSynth, ovvero i file di testo con estensione .avs, con un'infinità di programmi e non solo con VirtualDub. Potete ad esempio visualizzare il risultato del vostro script (vedere l'effetto dell'applicazione di alcuni filtri) aprendo direttamente il file .avs con un video player generico, quale lo stesso Windows Media Player.

NOTA: A questo indirizzo (.zip di ~15kB) potete trovare un foglio di calcolo creato da Federico (un doveroso grazie!) chiamato CalcXvid, che potete utilizzare per calcolare anche altri parametri oltre alle semplici dimensioni per il resizing, e che dovrebbe essere piuttosto semplice ed intuitivo da usare; ovviamente per tutte le eventuali domande dovrete rivolgetevi a Federico ;) di cui potete trovare l'indirizzo email nel file Excel.


APPENDICE: Utilizzo e funzione di alcuni filtri

Per quanto possa essere nitido e di alta qualità, un segnale video digitale contiene sempre un pò di rumore o disturbo, vuoi perchè il materiale originale prima della digitalizzazione o della cattura presentava di per se questo disturbo, vuoi perchè la compressione MPEG ne introduce sempre una certa quantità. Questo "rumore", la cui caratteristica fondamentale è quella di essere casuale, viene interpretato dai codec di compressione video alla strega di informazioni importanti che devono essere preservate: un algoritmo di compressione, per quanto avanzato possa essere, non potrà mai distinguere, ad esempio in una scena di cattivo tempo, l'eventuale rumore o disturbo di fondo dalle gocce di pioggia vera e propria. Il codec si prodiga quindi a conservare il maggior numero di dettagli possibili, anche quelli causati dal disturbo, con un'inutile spreco di bit. In tutte quelle situazioni in cui sia importante la dimensione finale del video, si intuisce quindi come potrebbe risultare proficua l'eliminazione del rumore, che si tradurrebbe a sua volta in un risparmio di bit ovvero in una diminuzione delle dimensioni del file video.

Purtroppo non è possibile eliminare totalmente il rumore di fondo, dato che una situazione estremamente difficile come quella vista in precedenza (pioggia) non ingannerebbe solo l'encoder di compressione video, ma anche un eventuale algoritmo di rimozione del rumore. Tuttavia, situazioni così difficili non sono certo la norma.

Esistono diverse tecniche di rimozione del rumore, ma sostanzialmente tutti gli algoritmi esistenti possono essere raggruppati in 3 categorie principali; in un modo o nell'altro tutti questi filtri sfruttano la caratteristica fondamentale del rumore: quella di essere casuale e tentano di ridurlo "uniformando" le variazioni di colore e/o luminosità tra pixel vicini.

Spatial smoother: tentano di rendere più uniformi le variazioni cromatiche e luminose tra pixel adiacenti all'interno della stessa immagine. L'ipotesi di base è che in un'immagine, se un pixel ha colore X, il pixel adiacente avrà con ogni probabilità un colore X' molto simile. Queste tecniche possono essere applicate anche ad immagini singole e non solo a filmati. Un utilizzo eccessivo di questo tipo di filtri tende a sfocare l'immagine ed a farle perdere un po' di dettaglio.
Temporal smoother: le variazioni tra i valori di un pixel vengono ricercate tra fotogrammi adiacenti. Se il pixel ha valore X nel fotogramma 2, è probabile che presenti un valore X' molto simile nel fotogramma 1 precedente e X'' sempre molto simile nel fotogramma 3 successivo. L'applicazione eccessiva di questo tipo di filtri può portare alla creazione di spiacevoli effetti nel video, quali ad esempio la comparsa di scie attorno ad oggetti molto luminosi che si spostano su di uno sfondo scuro.
Spatial-temporal smoother: sono i più completi in quanto combinano in un'unico filtro entrambe le tecniche analizzate in precedenza.

Nel file .zip dei filtri che avete scaricato in precedenza, è presente anche un ulteriore filtro oltre a Mpeg2Dec3: Fluxsmooth; si tratta di uno Spatial-Temporal smoother piuttosto efficace, nonchè veloce, e di seguito troverete una piccola guida su come utilizzarlo all'interno di uno script. Per maggiori informazioni fate comunque riferimento alla documentazione ufficiale (che trovate nel file zip assieme ai filtri veri e propri).

FluxSmooth:

LoadPlugin("C:\Filtri\FluxSmooth.dll")
LoadPlugin("C:\Filtri\MPEG2Dec3.dll")
mpeg2source("d:\DVD\film.d2v")
crop(0,74,720,436)
Fluxsmooth()
BicubicResize(640,272,0,0.5)

L'utilizzo del filtro Fluxsmooth() consente di ottenere una diminuzione delle dimensioni del video compresso tramite una riduzione del numero di bit necessari per la codifica, riduzione quantificabile in circa il 5-9% rispetto al video non trattato (ma il valore dipende molto dalla qualità dell'originale). Il seguente è un esempio dell'utilizzo del filtro FluxSmooth (parametri di default) per la riduzione del rumore di fondo nell'immagine. Le due immagini seguenti sono un ingrandimento del 400% di un particolare della stessa scena di un film, con la differenza che la scena in basso è stata processata con il parametro: FluxSmooth (). La cosa interessante da notare è che anche la pura compressione Jpeg richiede meno bit per l'immagine in basso, nonostante siano state salvate entrambe con la stessa qualità. Le dimensioni in bytes delle due immagini le potete leggere nella didascalia.

1) FluxSmooth OFF (10024 bytes)
(1)
(2)
2) FluxSmooth ON (9000 bytes)

Notate come le tinte ed i colori siano più uniformi nella seconda immagine, cosa che consente di diminuire il numero di bit necessari (meno informazioni da codificare) per il singolo fotogramma, come del resto ha mostrato la semplice compressione in formato Jpeg. Per il modo che hanno di uniformare il colore, questi filtri risultano estremamente utili nel caso stiate lavorando con film a disegni animati. Sebbene si possa notare la perdita di qualche dettaglio, ricordate che i due particolari sono ingranditi al 400%. All'atto pratico è estremamente difficile notare la differenza quando si guardano le immagini alla dimensione originale, tenendo inoltre presente che si tratta di immagini in movimento. Modificando i parametri di configurazione del filtro è possibile ottenere un incremento nella compressibilità del video. Lasciando vuoti i campi tra parentesi, si hanno i valori di default ed equivale a scrivere FluxSmooth(7,7). Altri valori che potete provare sono (15,8) che dovrebbero garantire comunque un risultato più che soddisfacente. Ovviamente incrementando i valori si avrà anche una maggior perdita di dettaglio ed un cosiddetto effetto si "softening" (ammorbidimento) dell'immagine.

Film completamente girati in digitale, quali ad esempio Star Wars - Episodio II, sono pressochè privi di rumore di fondo ed infatti risultano ottimamente comprimibili. In tali casi risulta piuttosto opinabile l'utilizzo delle tecniche di riduzione del rumore prima descritte, in quanto non solo sono praticamente inutili ma portano ad un rallentamento della codifica. Tuttavia in merito non ho effettuato test, quindi anche se vero in linea teorica, all'atto pratico potrebbe non essere così.



Come sempre, commenti, info, suggerimenti, insulti (spero nessuno) e domande, sono ben accetti.




(Rimuovi "NOSPM_" dall'indirizzo email per contattarmi)

Torna alla pagina principale