Film To Avi: Dettagli

Ultimo Aggiornamento 14 Febbraio 2013

Sistema Autocorrettore

Quando il programma apre un immagine scansionata, non sempre la qualità della pellicola è ottimale, anzi in genere ci troviamo di fronte a pellicole logorate, in cui i dentini possono essere slabrati o rotti.

Film To Avi: 16mm

Film To Avi: 16mm

Nelle figure si possono notare casi concreti, ovvero una pellicola 16 mm dove ci troviamo di fronte a dentini rotti.
In questo caso il programma FilmToAvi intercettando il secondo dentino partendo da sinistra verso destra della prima immagine e il terzo e quarto della seconda immagine, identificherebbe molto male la loro posizione, dove (ricordo) viene utilizzato come riferimento la parte in alto a sinistra per catturare il frame corrispondente.
Il risultato è che per un istante si vedrebbe un fastidioso "Scatto" laterale del film che andiamo a produrre. Per ovviare a questo problema basterebbe operare un semplice fotoritocco sullo spezzone di pellicola scannerizzata, ricostruendo di fatto il dentino rotto.

Questo modo di operare è accettabile se ci troviamo in casi isolati, ovvero se il film è sostanzialmente integro e il dentino rotto o slabrato è raro.
Per identifìcare lo spezzone da correggere è sufficiente trovare il punto in cui si verifica questo scatto laterale e partendo dal numero di frame da correggere si riesce ad identificare il numero di spezzone di pellicola su cui intervenire. Infatti siccome il numero di frame catturati è un valore praticamente fisso, basta dividere il numero del frame con quanti fotogrammi vengono scansionati in una sola passata.
Ad esempio se i fotogrammi sono 14 per spezzone di pellicola e il frame "scattoso" è il numero 1000 si ottiene:

1000/14 = 71,4 quindi lo spezzone di pellicola su cui intervenire è il 72 (ammesso di essere partiti da 1).

A partire dalla versione 2.3 di FilmToAvi, è stato introdotto un sistema autocorrettore che parte da questa logica, ovvero che i dentini devono essere equidistanti e allineati. Sembrerebbe quindi estremamente facile individuare quello/quelli fuori da certi parametri, ma non è così.
Innanzitutto occorre considerare che un certo errore tra un dentino e il successivo esiste sempre, dovuto al fatto che la pellicola è un elemento che non ha una precisione assoluta e che sicuramente nel tempo ha subito delle dilatazioni o contrazioni anche se minime. Inoltre lavorando a 4800 dpi significa 189 punti per millimetro, ovvero accuratezza di circa mezzo centesimo di millimetro.
Con la prima versione del programma che prevedeva l'autocorrezione, è stato quindi introdotto un parametro che l'utente poteva impostare, sopra il quale la posizione X e/o Y veniva ricalcolata in funzione degli altri dentini. Con la versione successiva 2.4 è stato introdotto lo scarto medio lineare, ma i risultati migliori si stanno facendo con la versione attualmente in lavorazione, 2.5 di cui andiamo ad esporre i dettagli.

Innanzitutto sia per le posizioni X che Y relative, viene calcolato il valore medio. Per X il valore medio corrisponde alla distanza media tra un dentino e l'altro, mentre per la Y di quando sale o scende un dentino rispetto a quello successivo. Se la pellicola fosse perfettamente trasversale al piano pellicola la Y tra dentini dovrebbe essere pari a zero.
Il primo problema che nasce è che la media viene fatta su dentini che potrebbero essere danneggiati, quindi potrebbero falsare la media in modo non trascurabile.

Per questo motivo la media viene calcolata iterativamente:

Film To Avi: 16mm


La prima volta vengono utilizzati tutti i dentini per calcolare la media. Poi per ogni dentino viene calcolato lo scarto quadratico medio utilizzando la media appena trovata.
I dentini che hanno uno scarto quadratico medio superiore allo scarto quadratico medio totale vengono esclusi sia dal successivo calcolo della media, che dallo scarto quadratico medio.
Se pertanto su 10 dentini totali, ad esempio 2 risultano avere uno scarto quadratico medio superiore a quello globale, la media viene ricalcolata solo per gli 8 dentini più affidabili. In questo modo la media non risente più dei dentini inaffidabili.
L'operazione di calcolo degli scarti quadratici medi viene rifatto in modo iterativo come visibile dal diagramma sopra disegnato, utilizzando la nuova media che ora è sicuramente più affidabile e con i nuovi scarti quadratici medi.

Come si vede dal grafo, l'iterazione è comunque limitata a 5 iterazioni, dato che da simulazioni fatte si è visto che già dopo 4 volte, si sono individuati correttamente i dentini inaffidabili, e si esce comunque dall'iterazione anche nel caso in cui i dentini affidabili sono diventati meno di due, perchè ne servono almeno due per fare il calcolo della media e della deviazione standard.
Un altro caso in cui si esce dal calcolo è quando rispetto alla precedente iterazione i dentini considerati inaffidabili sono rimasti i medesimi. in questo caso infatti si rifarebbero inutilmente gli stessi calcoli precedenti.

Al termine delle iterazioni, viene individuato il dentino con lo scarto quadratico medio più piccolo rispetto agli altri e dalla sua coordinata e dalla media appena trovata vengono ricalcolate le posizioni di tutti i dentini risultati inaffidabili nell'ultima iterazione.

Questa operazione è fatta sia per la coordinata X che Y. Potrebbe capitare che un dentino inaffidabile per la posizione X sia affidabile per quella X e viceversa, ma in genere un dentino slabrato o rotto rende le sue coordinate X/Y entrambe inaffidabili.
Il sistema autocorrettore può essere escluso o meno a scelta dell'utente.

Il 16mm

Per chi è interessato a sperimentare la trasformazione di pellicole in formato 16mm, sono disponibili una decina di File di esempio da scaricare: Frame 16mm con risoluzione a 4800 dpi.
Gli spezzoni di pellicola dispongono anche della pista ottica sonora, come visibile in figura precedente.

Il formato 9,5 o Pathè baby

A partire dalla versione 2.4, anche questo antico formato di pellicola viene supportato.
La sua particolarità infatti è che il dentino trovandosi al centro della pellicola, non poteva essere utilizzato il programma fino alla versione 2.3 perchè anche utilizzando la maschera tipo "Custom" non era possibile nei campi di configurazione inserire valori negativi.

Film To Avi: 9.5mm Pathè Baby

Infatti mentre per il Normal 8, il super 8 e il 16mm il dentino si trova sempre in alto rispetto al fotogramma, con questo formato trovandosi invece al centro del fotogramma c'è la necessità di mettere come valore Left (B) un valore negativo, cosa resa possibile solo a partire dalla versione 2.4.

Film To Avi: 9.5mm Pathè Baby

La posizione Height (A) resta invece ancora positivo, come si vede dall'immagine.

Sistema di stabilizzazione: Cosa è e a cosa serve

Durante la scansione della pellicola tramite la maschera per scanner (si veda qui oppure qui) è possibile che la scansione non venga fatta a regola d'arte, oppure che la pellicola sia un po' consumata, provocando un certo ondeggiamento delle immagini.
In altri casi il problema risiede proprio nel fatto che le cineprese non disponevano certo di un sistema di stabilizzazione elettronico o ottico delle immagini come nelle attuali telecamere moderne.
In tutti i casi è particolarmente utile sfruttare i sistemi di stabilizzazione software disponibili, che talvolta risultano essere dei veri e propri programmi, ma che nella maggior parte dei casi sono dei plug-in utilizzabili nei diversi programmi di montaggio video.

Sistema di stabilizzazione: Come funziona (Riservata a chi non lo conosce e ai più curiosi)

Sia quelli Software che quelli elettronici montati all'interno delle telecamere, effettuano uno spostamento uguale e contrario rispetto allo spostamento da correggere.
Immaginiamo un operatore che stia facendo riprese a mano libera.
Nella parte relativa alle Tecniche di Ripresa non mi sono certo risparmiato nel consigliare l'uso del treppiedi o almeno del monopiede, dato che nessun sistema di stabilizzazione funziona meglio di una telecamera ben ancorata al terreno.
tuttavia non sempre questo e possibile quindi è normale assistere a riprese più o meno traballanti.

Guardiamo nella figura sottostante.
Schema Stabilizzatore Elettronico

Immaginiamo che l'obiettivo della Telecamera riprenda tutta l'immagine, ma sul dispositivo sensibile (CCD) ci vada a finire solo un sottoinsieme di tutta l'immagine, ovvero il rettangolo semitraparente in grigio.

In caso l'operatore stia riprendendo a mano libera, quello che succede è che tra un fotogramma e l'altro l'operatore si sia spostato anche se di poco rispetto all'istante precedente (ricordo che tra un fotogramma e l'altro c'è uno sfasamento temporale di un 25-esimo di secondo).
Supponiamo che si sia spostato leggermente in alto a destra (freccia gialla). L'effetto che avrà lo spettatore è esattamente opposto, ovvero tra il precedente fotogramma e quello corrente noterà un movimento in basso a sinistra (frecce blu).

Se è attivo il sistema stabilizzatore elettronico, quello che accadrà è che il rettangolo grigio seguirà questi movimenti facendone uno esattamente uguale e contrario a quello della telecamera, ovvero seguirà le frecce blu. Per chi ricorda qualche semplice concetto di fisica, lo spostamento della telecamera e lo spostamento opposto del rettangolo grigio (l'area attiva del CCD) danno risultato nullo rispetto alla scena, ovvero come se la telecamera fosse rimasta ferma.

Ma come capisce il sistema di stabilizzazione di quanto spostarsi?
Confrontando ogni istante l'immagine del fotogramma corrente con quello precedente ed operando un'operazione matematica di mutuacorrelazione, si ottengono i valori di X e Y di quanto spostare l'area grigia della foto, ovvero la parte attiva del CCD.

I plug-in o i software, funzionano in modo identico, ma sussiste un problema non trascurabile, ovvero dovendo lavorare su un film già acquisito, cioè con un formato a livello di dimensioni già determinato, presentano due inconvenienti.
Dovendo definire un'area più piccola dell'intero video in ingresso, è naturale che se abbiamo un classico formato DV pari a 720x576 e dovendo prevedere un bordo ad esempio di 30 pixel per compensare i movimenti tra un fotogramma e l'atro, quello che otteniamo è un video più piccolo pari a 660x516 pixel.

In genere questi software nelle imppostazioni chiedono se lasciare il video di uguali diomensioni, ma con un bordo nero attorno, oppure senza bordo ma più piccolo (fuori standard, ma adatto per essere riprodotto su PC), oppure facendo un upscaling, cioè aumentando artificialmente i pixel mancanti. E' chiaro che questo ultimo sistema è un artifizio che porta ad un certo peggioramento della qualità del video, ma almeno resta nel formato corretto.

Non bisogna dimenticare inoltre, che di fatto si opera una sorta di zoom delle immagini, con perdita quindi di una porzione di quadro tutto intorno.
Nel nostro caso specifico, siccome lavoriamo su fotogrammi che in genere hanno un numero di pixel superiori al formato del video standard finale, questa operazione di Upscaling non è necessaria, quindi opereremo sicuramente con l'opzione del taglio bordo. Di seguito i dettagli 

Sistema di stabilizzazione: Esempio Pratico

Come detto esistono vari software che effettuano questa stabilizzazione di immagine. Visto lo scopo divulgativo di questo sito, mi sono orientato a lavorare con Software Open Source. In particolare usando:

  • VirtualDUB: http://www.virtualdub.org

  • Deshaker (utilizzabile come plug in anche dentro VirtualDub): http://www.guthspot.se/video/deshaker.htm

Siccome il suo uso non è immediato, ho pensato di riportare tutti i passi necessari per ottenere un buon risultato.

Come prima operazione scaricatevi VirtualDub e Deshaker. Non vi fornisco il link perché cambiano talmente spesso che rischio di darvi un riferimento ormai obsoleto. Vi dico solo che mentre sto scrivendo questo articolo, ho scaricato la versione VirtualDub_1.9.11 e  Deshaker_3.0.

VirtualDub non è paragonabile ai costosissimi programmi di video editing, ma oltre ad essere gratuito (che non è male) è sufficiente per i nostri casi e non si installa (basta copiare la directory zippata in un posto sul PC a noi cogeniale e poi lanciare l'eseguibile).

Deshaker invece è un piccolo file che va copiato all'interno della sottodirectory: plugins di VirtualDub.

Una volta lanciato VirtualDub (doppio click su "VirtualDub.exe") da menu file selezioniamo il primo frame creato dal nostro programma FilmToAvi, ad esempio Fra00001.jpg. Il nome è quello che avete imposto sulla maschera di filmToAvi.

Film To Avi: Configurazione File

<Range File OutPut> è il campo che descrive come vengono numerati i frame di uscita. Per i dettagli: FilmToAvi.

Immediatamente comparirà il primo frame importato (o nel caso eveste importato un file avi, il primo frame corrispondente).
Nel caso le dimensioni fossero eccessive potete ridurre lo zoom utilizzando il tasto destro del mouse ed impostando (ad esempio) un 33% sia sulla prima finestra che sulla seconda (che rappresenta l'output).

Prima di procedere con l'export occorre impostare i filtri, in particolare quello relativo allo stabilizzatore d'immagine.

VirtualDub Filtri

Dal menu <Video> voce <filters> si apre la maschera corrispondente, che a differenza di quella indicata in figura è inizialmente priva di filtri impostati. Utilizzando il bottone <Add> si entra in una successiva maschera con tutti i filtri previsti in VirtualDub. Siccome "Deshaker" è un filtro esterno occorre importarlo con il bottone <Load> dalla posizione in cui lo abbiamo scaricato. Da questo momento in poi sarà sempre disponibile assieme a tutti i filtri interni di VirtualDub.

 Oltre al filtro  Deshaker, può essere utile il filtro con cui correggere eventualmente luminosità e contrasto come quello indicato in figura. grazie al preview a cui si accede dopo aver selezionato il filtro ed aver premuto <configure> è possibile impostare la luminosità e il contrasto desiderati.

Tornando al nostro filtro stabilizzatore, entrando in configurazione, si presenta la maschera in figura:

Deshaker Pass1

Tutti i parametri presenti possono spaventare chiunque, ma se ci concentriamo su quelli importanti, vi assicuro che si possono lasciare tutti gli altri con il valore di default.

Innanzitutto spieghiamo come funziona questo filtro.
Il lavoro viene svolto in due fasi, nella prima viene fatta l'analisi dei frame che si susseguono e scritto su un file di log le correzioni da apportare frame per frame, ovvero gli spostamenti da fare per permettere di compensare i movimenti del video.
Il nome di questo file si impostano sulla sinistra in basso dove c'è l'etichetta: <Log File>. Sempre sulla sinistra si deve impostare se lavoriamo su pixel quadrati (nel nostro caso si) e se il video è progressivo o interlacciato (nel nostro caso si tratta di immagini che si susseguono, quindi sicuramente progressivo). Cambiare opportunamente queste impostazioni se state stabilizzando un file video AVI.
Sulla parte centrale potete lasciare tutti i parametri di default.
Solo per curiosità vi informo che:

  • Video output: indica solamente se in visualizzazione durante la prima passata vi fa vedere o meno dei piccoli vettori che evidenziano gli spostamenti delle immagini e quindi la relativa correzioni. I vettori rossi indicano spostamenti non corretti. (Ad esemoi soggetti che si muovono all'interno di una scena, che giustamente non devono essere corretti.

  • Scale: Se si lavora in scala ridotta le correzioni sono meno precise, ma si guadagna in tempo di elaborazione. (Metà è accettabile)

  • Use pixel: Se si lavora su tutti i pixel il tempo di elaborazione aumenta sensibilmente. (Ogni 4 è accettabile)

    Detect Rotation: Controlla eventuali spostamenti attorno ad un asse centrale.  (Non Fondamentale nel nostro caso)

    Detect Zoom: Controlla eventuali spostamenti avanti/indietro tipici di una carrellata. (Non Fondamentale nel nostro caso)

Come scritto precedentemente a proposito di come funzionano gli stabilizzatori elettronici e software, abbiamo visto che lavorano in un'area più piccola rispetto a quella dell'immagine completa, in modo da permettere (entro certi limiti) di seguire le vibrazioni accidentali, annullandole.
Questo significa che il frame di uscita dovrebbe essere più piccolo dell'originale a meno di non creare un upscaling per recuperare i pixel mancanti, oppure creare un bordo nero attorno al frame o creare un bordo fittizio recuperando le informazioni dai frame precedenti o successivi.

Siccome nooi di fatto disponiamo di frame piuttosto grandi a livello di pixel, rispetto al video finale che vogliamo ottenere, abbiamo optato per ritagliare il bordo. Ovviamente ciascuno di voi opterà per la scelta che riterrà più opportuna.

Il ritaglio si ottiene partendo dalla maschera dei filtri e premendo il bottone <Cropping>.

VirtualDub Ritaglio

Come si vede l'uso della funzionalità è piuttosto semplice. Ci sono 4 campi su cui impostare quanto ritagliare sui 4 lati.
Qui abbiamo imposto 50 pixel per lato fino ad ottenere un file avi che avrà 100 pixel in meno sia in altezza che larghezza. In realtà il taglio va fatto non solo per togliere i bordi divenuti instabili a causa del filtro stabilizzatore, ma è utile per cercare di ottenere un formato video che si avvicini il più possibile ad un video standard.

Vi ricordo infatti che per evitare che sia il programma di montaggio video che utilizzerete a scegliere per voi, ci sono due parametri da tener presente, ovvero le dimensioni e il rapporto altezza/larghezza del vostro video.

Nel nostro caso particolare in cui abbiamo preso dei frame da una pellicola 16mm ottenendo singoli frame pari a 1900x1401 pixel, si nota subito che con questo formato non si ottengono video con formato standard. Nel mio caso ho scelto che il file finale fosse pari a 1800X1280, effettuando tagli opportuni del bordo, perché non mi intteressava di ottenere un file HD standard, essendo diretto al solo web. Ma se il vostro caso è quello di ottenere video televisivi, vi consiglio vivamente di tagliare opportunamente il video in modo da avvicinarvi al video DV tradizionale 720x576, oppure al video HD 720p oppure al full HD nel caso i vostri frame abbiano raggiunto (o superato) i 1920 x 1080 pixel.

Premendo <Ok> si torna alla maschera dei filtri e chiudendo anche questa siamo pronti per avviare la procedura di satbilizzazione delle immagini.

Come detto il filtro Deshaker lavora con due passate e per avviare questa prima fase è sufficiente premere il terzo tasto in basso di VirtualDub partendo da sinistra: <Starts preview of processed output> identificato da Play 0.

Immediatamente noterete sulla finestra di destra il video originale, sulla sinistra un video ancora non stabilizzato in cui ci saranno delle micro frecce ad indicare il rilevamento dello "shake" ovvero degli scossoni sul video. Interessante notare sono invece delle microfrecce rosse che indicano che è stato rilevato un movimento che potremmo definire "lecito", ovvero tipicamente un soggetto che si muove all'interno di una scena e che quindi non verrà compensato.

Terminata questa fase sul file di log di Deshaker, saranno stati memorizzate tutte le informazioni necessarie a muovere opportunamente il video per contrastarne il "traballamento". Si può quindi premere il tasto <Rewind> quarto tasto, per tornare all'inizio del video.

A questo punto si deve tornare sulla maschera dei filtri (menu <Video> voce <filters>) e riaprire il filtro Deshaker. Premere il secondo bottone in alto a sinistra <Pass2> che permetterà di operare sui parametri di uscita. Qui suggerisco di lasciare tutti i parametri di default, ma scegliere di non compensare i bordi: Edge Compensation: (none).
Infatti sappiamo che per compensare i movimenti, uno stabilizzatore muove il video e i bordi risultano anch'essi in continuo movimento, ma siccome noi abbiamo eseguito il ritaglio, tali movimenti non sono visibili.

 Uscendo dalle maschere di Desheker e poi dei filtri, possiamo finalmente generare il nostro video stabilizzato. Qui possiamo scegliere direttamente di esportare un video avi, con un determinato codec, ma ricordiamoci che spesso i codec non supportano una dimensione video non standard. Si possono esportare anche una sequenza di frame singoli, ma io suggerisco (se il video è di pochi minuti) di usare avi non compresso da dare poi in pasto ad un qualunque programma di video editing.

Per creare il nostro file avi basta scegliere sotto il menu <File> la voce <save as AVI>.

VirtualDub In Progress

In figura si puo notare il video originale a sinistra e a destra il nuovo formato scelto con gli opportuni ritagli e la correzione della luminosità e del contrasto.

Sistema di stabilizzazione: Il risultato Finale

Il risultato finale del video prodotto si può vedere qui: Esempio 16mm Stabilizzato.

Oppure può essere scaricato in formato HD: Esempio 16mm Stabilizzato HD

Le leggere ondulazioni che si vedono specialmente nella prima parte del video, sono dovute alla mancanza di una vera maschera per scanner specifica per il 16mm, che garantisce un perfetto allineamento tra la pellicola e il piano dello scanner. Questo significa che la qualità e l'attenzione con cui scannerizzerete i vostri video è essenziale per ottenere ottimi risultati.

Per qualunque ulteriore informazione scrivetemi coma al solito  qui: Fabio GALANTI

Per scaricare il SW o per informazioni generali, tornare alla Pagina Precedente <<<