PDA

View Full Version : [Long GOP o Intra-frame] Quale videocamera è meglio? ...


Gannjunior
19-05-2008, 12:17
Poichè questo 'test' è dedicato ai formati di registrazione delle videocamere attuali non so se va bene postarlo qua oppure su "Altre discussioni sull'informatica"...in quanto non esiste una vera e propria sezione per gli argomenti in questione.

La curiosità di approfondimento è nata da un 3d sulla hvx200 e sulla sony ex1 dove io e roby68, un utente di VM, 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, è una scelta piu adatta.

Vediamo 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.

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 intra e interframe, cioè con perdita 'completa' di informazione) 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'. Ed è completamente lossy, cioè con perdita "completa" 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. Comprime dunque ogni singolo fotogramma e, ogni fotogramma, benchè piu o meno compresso, viene conservato per intero. (nella compressione inter-frame non è cosi, perchè solo una parte dei fotogrammi vengono conservati per intero, gli altri vengono "calcolati" per differenze e 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, il sito www.benis.it dove Benedetto è davvero in gamba a 'snocciolare' argomenti molto complessi.

Gannjunior
19-05-2008, 12:19
Programmi e codec utilizzati per il test - nelle versioni piu aggiornate -:
avisynth, megui, HCenc, Qenc, TmpgEnc, virtualdubmod, DGavc, DGindex, blackmagic, cineform, huffyuv, x264, panasonic dvcprohd, canopus DV, mjpeg...spero di avere scritto tutto.


Sistema operativo:
Vista 64 e Xp x86


Le CONDIZIONI del test e motivazione delle SCELTE fatte:

- Per rendere il piu possibile veritieri i test, il confronto tra gli stessi e quindi la loro "normalizzazione", ho deciso di costruirimi un video non compresso (RGB 4:4:4) a partire da flussi HD che possedevo. Da cui sono partito per ottenere le diverse compressioni negli spazi colore 4:2:0 e 4:2:2 che si vedono nelle due tabelle sotto.

- Una sessione di test è relativa a 400 frames di contenuto video statico, ricco di colori e in buone condizioni di luminosità.

- L'altra sessione di test, pari a 1000 frames, è stata ottenuta mettendo insieme vari contenuti video con quantità di movimento piuttosto accentuata e altre condizioni per mettere in "crisi" i codec (per esempio il "pelo" dell'acqua in continuo movimento e in leggero controluce, cambi di scena frequenti, etc...)

- E' evidente osservare infatti il consumo "assoluto" di bitrate della prova a 1000 frames (1500 mbit) guardando i file non compressi. (Ciò si riscontra anche andando ad osservare i relativi quantizers effettivi che i vari codec hanno assegnato alle rispettive sessioni di test dove, a parità di bitrate, le prove dei 1000 frames "complessi" avevano quantizers piu elevati rispetto alle prove dei 400 frames "tranquilli").


La scelta dei parametri di compressione e i limiti incontrati

Non è possibile reperire quale tipo di encoder (almeno per me) ogni casa utilizzi nel suo camcorder, nè i singoli parametri. Si sa solo qualcosa in generale e su quello mi sono basato.

Nel caso delle nuove proposte sony e pana (rispettivamente mpeg2 50mbit 4.2.2 e AVC-intra 4.2.2 a 50 e 100mbit) ho trovato qualche dettaglio in piu qua:

AVC-Intra -> ftp://ftp.panasonic.com/pub/Panasonic/Drivers/PBTS/papers/WP_AVC-Intra.pdf
mpeg-2 sony XDcam, 4.2.2, 50mbit-> http://pro.sony.com/bbsccms/assets/files/micro/xdcam/articles/XDCAM_WhitePaper_F.pdf

(notare come panasonic sia piu tecnica e completa)
------

Tuttavia non ci sono guide che permettono di replicare i loro parametri esatti di acquisizione. Si possono però fare delle (ragionevoli) deduzioni. A vostra richiesta posso postare le esatte righe di comando usate per ogni test.

In generale dico che:

- per mpeg2 ho utilizzato sempre un long gop pari a 12 con 2 Bf consecutivi, dc precision a 11, e, in generale tutti i parametri piu spinti per aumentare il PSNR.

- per h264/avc ho scelto la versione "x264" dove ho utilizzato un numero di Bf non superiore a tre (anche se il suo valore di ottimo è di 10-13) non avendo la certezza di cosa fanno esattamente le camere (quindi ho scelto di "deprimere" il risultato per non dargli potenziali vantaggi aggiuntivi) e anche qua ho settato gli altri parametri in modo spinto x spremere al meglio il codec.

- in entrambi i casi, a parte delle codifiche di riferimento a 2 passi che vedrete nel test "400 frames", ho optato per codifiche a 1 solo passo per meglio replicare quello che succede nella realtà con le nostre cam.

P.S. La tabella dei "1000" frames risulterà lievemente incompleta perchè mi è morto un hdd da 750gb su cui avevo tutto il test e per un colpo di fortuna sono riuscito giusto a recuperare uno dei file di excel su cui 'appuntavo' tutto...

Gannjunior
19-05-2008, 12:20
- I valori di PSNR sono espressi in decibel e le sue variazioni sono tipicamente comprese nel range 30-50. Differenze superiori allo 0.5-0.8db rappresentano già una differenza potenzialmente visibile.

- I valori di SSIM variano tra 0 e 1. Per semplicità li esprimiamo in valore percentuale per renderli piu leggibili e nella pratica troviamo valori tra l'80% e il 100. Differenze oltre gli 0.3-0.5 punti sono da ritenersi già non piu trascurabili.



Test dei 400 frames con poco movimento:

http://img529.imageshack.us/img529/4688/400800eg6.gif

"grande" -> http://img88.imageshack.us/img88/3453/400lb5.th.jpg (http://img88.imageshack.us/my.php?image=400lb5.jpg)

Gannjunior
19-05-2008, 12:20
Test dei 1000 frames complessi e con vari cambi di scena:


http://img158.imageshack.us/img158/4595/1000800vz0.jpg

"grande" -> http://img80.imageshack.us/img80/3967/1000en7.th.jpg (http://img80.imageshack.us/my.php?image=1000en7.jpg)

***************

----> N.B.

- Faccio notare che ho scelto i migliori programmi di compressione sia per mpeg2 (HCenc ha una precisione nel rispettare il bitrate impostato impressionante!) che per AVC. Sottolineo tuttavia che, in media, in AVC, anche con impostazioni automatiche, ci sono variazioni di qualità inferiori tra i vari tipi di encoder, a parità di altre condizioni. Mentre con mpeg2 la variabilità della qualità è maggiore.
Volete un esempio? TmpgENC (considerato un programma di qualità e non voglio dire che non lo sia), sebbene permetta un ottimo tuning, a parità di settaggi, si prende quasi sempre almeno mezzo decibel di PSNR da programmi freeware come Qenc o HCenc...(non parlo solo per sentito dire...HO PROVATO...prima di inziare la sessione di test per mettere i test dell' mpeg2 nella miglior condizione possibile...).

- Pertanto non mi aspetto una grande sofisticatezza degli encoder delle camere che comprimono in mpeg2.
E cmq ribadisco come le mie condizioni di test siano molto favorevoli per i codec in questione rispetto a quello che di fatto faranno le camere nella realtà.

- Una NOTA: qua si parla di differenze di qualità, che possono essere grandi, meno grandi, medie, piccole e a volte trascurabili. Passi il trascurabile, passi il fatto che probabilmente 9 occhi su 10 non vedono il mezzo punto di SSIM o di PSNR di differenza. Ma qua non si tratta di essere pazzi o pignoli. Però questi test servono proprio per avvicinarsi a tentare di fare le migliori scelte possibili...Uno si fa un pò di prove e sa come funzionano le cose, sa se un nuovo codec appena uscito che promette faville fa veramente quello che dice...(e credetemi che in questi anni ho imparato sempre a DUBITARE e ad arrangiarmi e per fortuna che l'ho fatto!).

- Poi non dimentichiamoci il senso di tutto questo. Cioè "come si può migliorare la famosa prima acquisizione". Direi che per chi lo fa per lavoro (a maggiore ragione) o per hobby, la PRIMA acquisizione è il momento piu importante. Immaginate di costruire un ponte che deve avere una lunghezza 1355mm. E probabile (anzi è certo) che dovrà essere esattamente di quella misura e non, per esempio, 1353mm...(certo ci saranno delle tolleranze ma di entità davvero minuscola). D'altra parte su quei 1355mm si baseranno altre misure di altri pezzi e se inziamo a sommare errori anche apparentemente piccoli, alla fine, tutto questo peserà nel risultato finale.
E' esattamente cosi anche nella compressione video. Ecco perchè è importante sapere cosa si sta facendo, sapere COME una CAMERA comprime per essere consapevoli dell'entità degli errori che introdurremo nel nostro lavoro finale...

Gannjunior
19-05-2008, 12:21
OSSERVAZIONI e CONCLUSIONI - 1/3 -

Ho scritto le varie osservazioni in momenti diversi, come degli appunti, quando mi venivano in mente delle cose da dire o quando avevo tempo di scrivere...Ergo non fate caso se sono scritte senza uno strettissimo legame consequenziale!

Inziamo (mi scuso se scrivo anche delle ovvietà, ma alcune è bene esplicitarle, credo):

- si osservi come la codifica a un passo, paragonata a quella teorica a 2 passi, permetta un miglioramento della media del PSNR, piu che altro andando a "limare" i valori estremi. Anche di diversi punti. Cioè è interessante osservare come questi dati ci dicano veramente quello che succede nella realtà. Cioè con un solo passo (quello che fanno le camere) spesso può possono capitare ci siano cali piu o meno "vistosi" di qualità, proprio in alcuni frames "critici". Con 2 passi, dove il bitrate viene ottimizzato, le "punte" vengono smorzate.

- Le suddette "fluttuazioni qualitative" aumentano all'aumentare del livello di compressione; aumentano in condizione completamente lossy e tendono a diminuire con una codifica intra ad elevato bitrate.

- Il range di efficienza dell'mpeg2 inter associato all'HD ha una forbice molto piu limitata rispetto all'AVC. Diciamo > 20 mbit e tende, naturalmente, a migliorare al crescere del bitrate a parità di altre condizioni. Questo è ovvio. In condizioni "facili" le differenze tra i codec tendono ad appiattirsi. (Faccio un paragone fantasioso per chi è amante della fotografia: se prendo un obiettivo che apre a f1.4, mi aspetto di usarlo spesso f1.4 e mi aspetto quindi che a f1.4 sia piuttosto nitido. Non prendo di certo un f1.4 per usarlo a f8 sistematicamente, quando a f8 anche obiettivi "collo di bottiglia" da 50 eur sono eccellentemente nitidi...)

- la compressione avc-loseless è poderosa. Basta osservare i dati. Ottima per chi ha necessità di archiviazione...Guardate quanto spazio consuma lei e quanto ne consumano i piu blasonati codec c.d. "intermedi" che cmq non sono completamente loseless in quanto comprimono nello spazio...una bestia, una bestia!!!

- mjpeg sebbene spunti buoni valori, paga senz'altro l'obsolescenza e il fatto di non essere ottimizzato per le risoluzioni elevate. Infatti qualità uguali o superiori sono garantite anche in meno spazio da altri concorrenti. Resta tuttavia sempre valido per la sua notevole velocità e versatilità.

- mpeg2 a 50mbit sicuramente si riscatta grazie al grande bitrate dove riesce a recuperare terreno.

- molto valido cineform nella prova higher HD, piu che altro la "stabilità" qualitativa offerta (min e max molto viciini alla media).

Gannjunior
19-05-2008, 12:22
OSSERVAZIONI e CONCLUSIONI - 2/3 -


- Il fatto che mpeg-4/AVC sia drasticamente migliore in termini di efficienza, (quando poi siamo a parità di bitrate non ha neanche senso il paragone) rispetto a mpeg-2, non è condizione sufficiente per dire che AVCHD è meglio di HDV. Ovviamente. Diverse sono le variabili in gioco, a cominciare da come ciascuna di queste compressioni è implementata in queste macchine da 1000 eur (cioè, di fatto, come lavorano i loro encoder interni..). E non solo...

- Dal lato opposto, dubitino e si informino bene, coloro che, o per sentito dire o per pigrizia o per altro, condannano a priori AVCHD e le memorie solide... Perchè, effettivamente, anche con bitrate ridicoli (certamente estremi e che mi fanno storcere il naso) acvhd è in grado di competere con mpeg2. (dare uno sguardo anche a questo thread qua -> http://www.videomakers.net/index.php?option=vm_phpbbforum&Itemid=118&page=viewtopic&t=46698 dove ci sono anche prove visive che dimostrano l'infondatezza delle leggende che vogliono che l'avchd lasci scie ed artefatti con molto movimento...).

- Oh, i numeri ci parlano e ci danno tante belle informazioni eh!! :-)

- Molto probabilmente (direi, anzi, sicuramente) gli encoders delle camere in commercio lavorano meno bene di come ho tentato io di riprodurre in "laboratorio". Per esempio la "motion estimation" e la "motion compensation"** saranno non esasperate dato che, quando vengono aumentati i valori del loro "grado di complessità", aumentano contestualmente le risorse hw necessarie (cioè, piu M.E. ed M.C. saranno accurate, piu lenta sarà la codifica...ma come sappiamo le nostre camere devono fare tutto in un solo passo e in tempo reale e non hanno al loro interno un "computer" della NASA...).

- M.E. ed M.C. sono tanto piu importanti quanto è piu elevato sia il livello di compressione, sia la complessità del GOP (x esempio con l'aumentare della quantità di B-frames) in una compressione lossy.
Ecco perchè nella maggior parte dei casi, un'acquisizione in tempo reale, con un solo passo e "alla cieca", sebbene meno "efficiente", è meglio che sia fatta con una compressione solo intra, in cui il ruolo della ME, x ovvi motivi, ha un impatto inferiore e i bitrate in gioco sono molto grandi.

- La considerazione precedente di "teoria" si fonde con la pratica dove, in caso di compressione alla "cieca", che è quello che facciamo con le nostre camere, cioè quando non possiamo conoscere, con certezza (certo si possono fare delle ipotesi) la natura di quello che andremo a riprendere (cioè il grado di complessità delle scene, la quantità di movimento etc..), una compressione intra e una inter tendono ad eguagliarsi attorno ai 50mbit (se parliamo poi di lossy-AVC allora notiamo che intra si prende ben 3db di PSNR). - vedere tabella -

** M.E. ed M.C si occupano letteralmente di effettuare la "stima del movimento" sui macroblocchi e sui blocchi movimento...forse non ho detto molto di piu ma mi addentrerei in un discorso davvero complesso...ci sono plichi interessantissimi in inglese da leggere. La cosa piu semplice che mi riesce di proporre per farsi un'idea, in italiano è qua: -> http://digilander.libero.it/andypanix/DVD/Configurazione_Avanzata_Codec_Xvid.html#ME_MC_in_pratica

Gannjunior
19-05-2008, 12:22
OSSERVAZIONI e CONCLUSIONI - 3/3 -


- AVC intra a 100mbit è considerato dalla panasonic come un formato per dei "raw master". Beh, la definizione è senza dubbio azzeccata.

- AVC intra 50mbit da notevoli risultati ma non identici al dvcproHD a 100mbit come pana afferma (certo, paragonabili sì.).

- Poi avrete visto un pò di prove di quello che potrebbe essere il futuro andamento dei bitrate di avc, per esempio i 24mbit (che sono quelli che ha la pana hmc-150). Le altre prove possono essere indicative, come ad esempio (mi è parso un test naturale da fare) AVC inter a 50 mbit che "dà letteralmente il bianco"...d'altra parte una compressione inter con quel bitrate per un'alta definizione è sicuramente in grado di coprire le esigenze di bitrate anche di casi "difficili"...

- La prova di mpeg2 a 13mbit era scontata come risultato. Ma era solo per confermare come il suo range di lavoro efficiente sia molto ristretto.

- L'avvento delle HD consumer a prezzi umani ha dimostrato inesorabilmente l'"obsolescenza" delle camere DV in definizione standard. Pressochè in ogni condizione. Anche rispetto a camere SD con "enormi" CCD come le panasonic GS-400/500. E questo nonostante la "parità di bitrate" (confrontando il DV con l'HDV 25mbit), dimostrando come l'impatto del positivo "effetto risoluzione" associato ad una efficiente compressione inter, produca globalmente un risultato migliore di una 576p con lo stesso bitrate costante e compressione intra.

- Appena tornerà online, potrete dare un'occhiata al mio test "alla ricerca della massima efficienza tra bitrate e risoluz..." del 2002 (in firma) che non è mirato all'HD ma che permette, indirettamente, di capire perchè l'HD attuale, a fronte di una pura compressione lossy, sia migliore di una compressione 576p "semi-lossy" (solo temporale, come il DV).

- Per questo motivo il test appena proposto si sarebbe perfettamente completato tentando di riprodurre una condizione in cui effettuavo una compressione interframe di un 4k, diciamo a 100mbit (credo sarebbe sufficiente per delle condizioni medie) e rigorosamente AVC. Credo avrebbe vinto su tutte le altre.