La curiosità di approfondimento è nata dal 3d sulla hvx200 e sulla sony ex1 dove io e roby68 abbiamo inziato una interessante conversazione sul comportamento dei codec intra e inter-frames.
Il succo del discorso è che ci domandavamo se, date due camere esattamente uguali fosse meglio quella che comprime interframes, per esempio in mpeg2 35mbit, o l'altra che comprime solo intra frames a 100mbit di compressione.
Quello su cui si deve però riflettere è che, se si ragiona solo in termini di massimizzazione della qualità nel minimo spazio, è chiaro che la compressione interframe vince e stravince. Se si vuole massimizzare invece l'editabilità ma soprattutto la necessità di avere una PRIMA acquisizione il piu possibile "vicina alla realtà" allora una compressione intra frame a bitrate
molto elevato, a parità di altre condizioni, dovrebbe essere una scelta piu adatta.
Vedremo tra breve una interessante tabella in cui ho cercato di riassumere un pò di dati e di casi limite, mettendo riferimenti di compressione intra e inter frames "noti" e molto utilizzati. Come si noterà, alcuni risultati "stupiranno", pur senza andare a confliggere con la teoria. Anzi la confermeranno.
Prima di andare avanti voglio fare un piccola premessa affinchè tutti possano addentrarsi a leggere bene la tabella.
E' stato necessario affidarmi ad alcuni sistemi di Visual Quality (VQ) che si occupano di oggettivizzare la misura della stessa VQ senza incorrere nelle percezioni soggettive della qualità che ciascuno di noi ha.
Vi sono diversi strumenti di VQ (che ho potuto conoscere grazie al Alex_e_Basta). Utilizzerò il
PSNR e il
SSIM, due strumenti matematici che ci dicono "quanto" abbiamo perso durante una codifica da una certa fonte. Ovvero "quanto abbiamo perso" dall'originale.
- il
PSNR è una misura puramente
oggettiva. Misura esattamente, matematicamente, le differenze tra il frame originale e il frame compresso.
- il
SSIM, sebbene anch'esso oggettivo, tende a dare piu peso a "come vedrebbe l'occhio umano". Cioè il SSIM pesa le differenze che rileva tra il frame originale e il compresso in funzione della percezione dell'occhio umano.
Dunque il SSIM è particolarmente indicato quando vogliamo effettuare dei confronti tra uno o piu codec lossy (che comprimono interframe, cioè con perdita 'completa' di informazione, nello "spazio" e nel "tempo") a partire da una certa fonte. Infatti quando ci limitiamo a guardare un video in TV a noi "poco" interessa che questo sia matematicamente piu o meno vicino all'originale.
Mi spiego: per esempio l'applicazione di un denoiser cioè di un filtro antirumore ad un video rumoroso renderebbe il video originale e quello compresso molto differenti matematicamente e questo il PSNR lo rileverebbe. Ma magari i nostri occhi potrebbero addirittura gradire di piu la compressione piu "pulita".
Ecco, questo è in grado di capirlo meglio il SSIM rispetto al PSNR.
Ho spiegato questo per dire che quello che è un limite del PSNR diventa un punto di forza in questo tipo di test, dove vogliamo misurare esattamente quale compressione riesce a contenere le differenze rispetto al frame originale, in modo del tutto oggettivo.
In quanto la fase della prima acquisizione con la nostra camera, molto probabilmente necessiterà di essere editata con effetti, dissolvenze o altro prima di essere ri-compressa nel prodotto finale destinato alla SOLA riproduzione (o alla distribuzione via web per esempio..).
Quindi in questa fase a noi non "viene bene" che un codec applichi modelli psicovisuali per risparmiare spazio garantendoci comunque un buon livello di percezione qualitativa. (ci potrà interessare dopo, ma non adesso).
Comunque, come vedete, non stiamo parlando di sistemi perfetti, in quanto entrambi hanno dei pregi e dei limiti.
------
Approfondimento:
PSNR -> http://en.wikipedia.org/wiki/Signal-to-noise_ratio
SSIM -> http://www.cns.nyu.edu/~zwang/
In realtà trovate ancora piu informazioni sul PSNR all'interno delle pubblicazioni di Zhou Wang sul SSIM.
-----
Compressione Inter e Intra frames. Semplificando al massimo. Una compressione INTER è come quella del DVD per esempio. E' come quella utilizzata dalle camere HDV che comprimono su HDD, su schede di memoria o su miniDV. E' una compressione particolarmente efficiente che comprime sia 'nello spazio' che 'nel tempo'. Essa è lossy, cioè con perdita di informazione. E' fondamentale quando si vuole riversare un film, un video o contenuti simili in un supporto dedicato unicamente alla riproduzione. E la sua vocazione nativa non sarebbe dunque rivolta ad una editabilità successiva.
La compressione INTRA frame nasce invece tipicamente con la vocazione di essere già "pronta" ad essere piu facilmente editata. Necessita di bitrate molto piu elevati e comprime solo 'nello spazio', cioè, per capirci, è un pò come una compressione jpeg. (tuttavia è anch'essa lossy). Comprime dunque ogni singolo fotogramma e, ogni fotogramma, benchè piu o meno compresso, viene conservato per intero. (nella compressione inter-frame come mepg2 o h264 non è cosi, perchè solo una parte dei fotogrammi vengono conservati per intero, gli altri vengono "calcolati" per differenze e/o approssimazioni attraverso particolari 'matrici'...).
Il perchè la compressione INTRA non sia facilmente fruibile nella camere commerciali o semiprofessionali è che per sua natura richiede bitrate (cioè spazio per capirci) molto elevati. Richiedendo molto spazio questo comporta problemi consistenti per una archiviazione "al volo" o cmq comporta problemi per archiviazioni di una certa "lunghezza"...
L'argomento è vastissimo...
Suggerisco, per esempio, come approfondimento per capire le basi, il sito http://www.benis.it/dvd/mpeg/mpeg.htm#Frequenze%20video dove Benedetto è davvero in gamba a 'snocciolare' argomenti molto complessi.
UPDATE:
E' necessario osservare che nel momento in cui si iniziava a utilizzare la compressione intra su camere professionali, tale scelta era dettata soprattutto dal fatto che i PC del tempo non sarebbero stati in grado di "ricostruire" un GOP in tempi decenti per un editing al volo e da una non completa maturità della compressione interframe (che è stata raggiunta con la compressione h264). Infatti, oggi (nei dintorni del 2010) è possibile non solo rivoltare come si vuole un GOP in post ma la possibilità di utilizzare bitrate molto elevati rende la compressione interframe qualcosa che va oltre il semplice compromesso anche in fase di "prima" acquisizione.
Se si ragiona in termini "lineari" (in termini "intra" cioè) non si riuscirà mai a comprendere il funzionamento di una compressione interframe e che questa, in condizioni statiche, può anche essere migliore di quella intra. Mentre una compressione lineare (intra) garantirà risultati migliori in scene veloci (anche se è necessario ricordare come l'occhio abbia maggiori difficoltà a notare "errori" nelle scene veloci).
Chiaramente l'affermazione sopra, se letta con i soliti pregiudizi, farà saltare dalla sedia. Spieghiamo con i numeri: la compressione a 100mbit dvcprohd in 1" di girato (25fps) assegnerà in media 4mbit x ogni frame e in qualsiasi tipo di scena. Una compressione long gop a 25mbit, in condizioni statiche, assegnerà ben più di 4mbit x ogni I frames (si può ipotizzare che in 25fps di scena statica ci siano un paio di I frames considerando un GOP=13 in un mpeg2 ma in h264 i GOP possono anche essere molto piu lunghi in base al tipo di scena e alla precisione dell'encoder...).
Chiaro? In post, in fase di editing, "spacchettando" opportunamente il GOP (evitando OVVIAMENTE di passare nuovamente da una compressione interframe) potrò ottenere informazioni "complete"...
Asus P6T| 6x2Gb DDR3| i7-920 D0 @ 3801mhz @ 1.168v RS, AIR cooled Noctua NH-U12P| Liberty 620w| Stacker| 2xRAID0 su 2x (2x500)gb Seagate 7200.11|Seagate 500gb 7200.12| Seagate 1.5Tb 7200.11| 8800GTX 768Mb| Canopus ADVC50+ PCTV| DELL U2410 24"+ Samtron 19"| Se7en 64 su Velociraptor 300gb|
Test vari sulla compressione video e dintorni... MIE TRATTATIVE