Newsgroup: it.comp.software.divx
Titolo: frame quality Qf

Una domandina. :-)
Cos'è il Qf che si legge con Gspot quando analizza
un avi? Come va interpretato?
-- 
mail to: pinko ((at)) 
people.it

 
Facendo delle prove mi sembra che cresca con il bitrate
e diminuisca al crescere della risoluzione.
Forse è una specie di densità di bitrate.
Volendo realizzare un divx c'è un rapporto ottimale
a cui sarebbe bene attenersi?


 e diminuisca al crescere della risoluzione.
Più che mi sembra c'è una fortissima correlazione.
Qf = bitrate * 40 / risoluzione
Giusto?


 Qf = bitrate * 40 / risoluzione
quasi giusto, ma la formula esatta e' questa:
Qf = bitrate / ( risoluzione * fps )
si tratta del numero medio di bit dello stream video che sono usati
per rappresentare un pixel del filmato.
Nei casi che hai visto tu, il framerate era sempre 25, e hai
considerato il "bitrate diviso 1000" (un bitrate di 950 kbps,
nella formula, va considerato come 950000, non 950), quindi i
calcoli tornavano anche con la tua formula; pero', se cerchi un
divx con un framerate diverso da 25, vedrai che non torna...
In realta', non c'e' un valore "ottimale" di Qf che vada bene per
tutti i filmati: un filmato potrebbe avere un Qf piu' basso di un
altro e allo stesso tempo presentare meno artefatti da compressione
dell'altro; questo perche' e' semplicemente "piu' comprimibile"
dell'altro (ad esempio, potrebbe avere meno scene movimentate).
Basandosi sull'esperienza, si e' visto che per la maggior parte dei
film codificati con codec mpeg-4 (asp), una buona qualita' di
codifica si ottiene con un valore di Qf compreso tra 0.2 e 0.3,
ma si ottengono risultati accettabili anche nel range 0.15 - 0.2;
non e' raro imbattersi in Qf vicini a 0.1 o addirittura inferiori,
ma quasi sempre hanno artefatti.
Per conoscere il valore ottimale di uno specifico film, non hai
che da codificarlo a quantizer fissato, e vedere che Qf esce fuori
(oppure puoi usare programmi che fanno cio', limitandosi a fare
una codifica parziale).
Per i codec di tipo H.264, a pari qualita', i valori di Qf sono
tipicamenti piu' bassi (10% - 30% in meno).

 Come va interpretato?
Spero che il buon Frank mi perdonerà se riassumo volgarmente le sue parole:
il qf non serve a nulla, è solo un riempi-spazio!
Per avere un test di qualità esistono altri strumenti, il citato enc, il
SSIM e volendo il DRF analyzer, anche se quest'ultimo non è proprio così
buono.
bye, giubbe
-- 
HomePage e FAQ: 
http://giubbe.altervista.org
Inutile scrivere in privato, non ricevo le email

 buono.
forse mi sfugge qualcosa, ma enc e DRF analyzer mi pare si basino
sullo stesso presupposto, cioe', che tanto piu' bassi sono i quantizer
usati, quanto piu' e' alta la qualita' (enc usa altri criteri? Effettua
anche il calcolo del PSNR?)
Questo principio e' abbastanza valido, ma non in assoluto: si possono
trovare numerosi controesempi (coppie di immagini in cui la prima, se
compressa usando quantizzatori piu' grandi, risulta meno degradata
della seconda, meno compressa).
Invece, il SSIM e' piu' sofisticato e non tiene conto in alcun modo dei
metodi di compressione, ma effettua un confronto diretto tra l'immagine
compressa e l'originale (come il PSNR, solo che questo e' piu' rozzo).

 ma quasi sempre hanno artefatti.
Vediamo se ho capito.
Volendo comprimere un filmato in divx entro una certa dimensione,
scelgo prima il bitrate che mi permette di conoscere approssivativamente
la dimensione finale , e poi sto cercando di capire come scegliere
la risoluzione.
Visto che quando andrò a visualizzarlo sul pc o sul televisore,
l'immagine viene di solito ingrandita con perdita di qualità;
pensavo perciò di impostare una risoluzione alta, tipo un 640 in
larghezza.
Un bitrate non elevato però comporta un basso Qf
e ho pensato che potrei andare incontro ad altri problemi.
Dunque mi calcolo il Qf con la formula:
Qf = bitrate * 1000 /( risoluzione * fps)
e imposto la risoluzione più elevata che mi consente
di avere  0.2 < Qf < 0.3
Così facendo dovrei generalemte ottenere un risultato accettabile.


 anche il calcolo del PSNR?)
Io ho capito che il QF è un mero calcolo matematico, mentre con il DRF vai
a vedere quante volte ogni tipo di frame viene utilizzato e lo fa
analizzando frame per frame.
Più frame di tipo 2 hai più il file è meglio compresso. Stessa cosa con
enc, codifichi a q=2 e vedi quanto è grande il file, se è troppo diverso da
quello analizzato allora quest'ultimo ha buone probabilità di essere
ciofecoso.
Comunque questi due metodi non indicano la qualità perchè per un frame può
benissimo essere utilizzato q=3 senza perdita di qualità semplicemente
perchè è facilmente comprimibile.
Se questi metodi che non "guardano" il fotogramma non sono pienamente
attendendibili figuriamoci quello che fa solo un conto.
L'unico vero attendibile è il SSIM.
Comunque mi sembrava che fossimo d'accordo, sbaglio qualcosa?
grazie, giubbe


 L'unico vero attendibile è il SSIM.
si', sono d'accordo.
Pero' va considerata una cosa: il SSIM (cosi' come il PSNR) richiede
anche il filmato sorgente (quello dato in ingresso all'encoder).
Se ti danno un divx che non hai fatto tu, non puoi calcolare il SSIM,
mentre DRF analyzer riesce a dirti la media e la deviazione standard
dei quantizzatori senza avere bisogno del filmato sorgente, e tali
informazioni ti permettono comunque di farti un'idea sulla qualita'
della codifica.
Per quanto riguarda il PSNR, ho letto che non e' attendibile... ad
esempio, anche qui: 
http://en.wikipedia.org/wiki/SSIM
----------------------
Some traditional method like PSNR and MSE are proved to be inconsistent
with human eye perception
----------------------
In pratica, per fare tali affermazioni, immagino che abbiano trovato
controesempi, cioe' coppie di immagini che in base ai diversi valori
di PSNR avrebbero dovuto apparire agli occhi delle persone piu' o meno
simili, e invece le prove sperimentali hanno dato risultati diversi da
quelli attesi basandosi su tale metodo.
Questo non mi sorprende perche' il PSNR e' troppo "perfetto" da un
punto di vista matematico, mentre, solo per fare un esempio, il
sistema visivo umano non e' ugualmente sensibile a tutti i colori
dello spettro visivo. Negli ultimi tempi mi sto appassionando di
queste cose :-) e ho scoperto tra l'altro che gli uccelli hanno ben
quattro tipi di coni a differenza dei mammiferi (noi ne abbiamo 3);
che sono gli organelli nella retina che reagiscono a differenti
frequenze delle onde luminose, permettendo poi al cervello di
discriminare tra diversi colori. C'era anche un articolo su
"Scientific American" di luglio ("What Birds See" di Timothy
H. Goldsmith).
Nell'articolo che descrive il SSIM
( 
http://www.cns.nyu.edu/~zwang/files/papers/ssim.html
 )
viene menzionato in bibliografia un articolo che dovrebbe trattare
proprio di questo (cioe', dell'inaffidabilita' del PSNR o, meglio,
dell'errore quadratico medio); e' stato pubblicato in un libro:
"Digital images and human vision" (MIT Press, 1993). Il titolo
dell'articolo e' "What's wrong with mean-squared error?" e
l'autore e' Bernd Girod: 
http://tinyurl.com/m339e
Ma per ora non sono riuscito a trovarlo :-)

 Così facendo dovrei generalemte ottenere un risultato accettabile.
si', quello che hai descritto e' un metodo veloce ma assai
approssimativo.
Se vuoi una migliore precisione, devi usare un programma tipo "enc"
( 
http://jonny.leffe.dnsalias.com
 )
----------------
This tool is able to encode, make a size prediction at a given quantizer and
make a compressibility test with (almost) every codec.
----------------
Comunque, tieni presente che questi problemi si hanno solo nel
caso in cui si ha un forte vincolo sulla dimensione finale del filmato.
Questo era particolarmente vero quando si era costretti a masterizzare
i filmati su CD (700 MB o, prima ancora, 650 MB), mentre adesso, usando
supporti piu' capienti (DVD da 4.7 GB) secondo me non ha piu' molto
senso intestardirsi a voler ottenere un file di una ben precisa
dimensione...
Se non sei interessato alla dimensione finale, allora puoi evitare
di codificare in due passate: fai una singola passata a quantizer
costante, risparmiando molto tempo e ottenendo qualita' migliore.

 ( 
http://jonny.leffe.dnsalias.com
 )
Ho scaricato enc.
Di solito creo un progetto avi con DGM e vfapi che mi creano un file
d2v e poi
uso VirtualDubMod. Oppure uso GordianKnot che fa circa le
stesse cose.
Enc però mi chiede di aprire un file con esetnsione .avs
( avisynth , credo).
Per il momento uso il metodo veloce e quando ne saprò di più
userò enc.
Grazie. Mi sei stato utile.  :-)


 
Se ti interessa ne "La fisica di Feynmann"
( The Feynmann lectures on physics)
c'è un capitolo dedicato a quest'argomento.
Volume primo, se non ricordo male.


 Volume primo, se non ricordo male.
volume 1, capitolo 35: "Color Vision". Lo lessi alcuni mesi fa.
(Feynman, con una sola 'n' finale :-))
In rete si trova davvero un sacco di roba interessante :-)
Ad esempio, questa pagina qua:
http://student.kuleuven.be/~m0216922/CG/
Quello che mi stupisce molto sulla visione, e' come il biologo
evoluzionista Richard Dawkins (quello del "gene egoista") ritenga
"facile" la realizzazione di sistemi visivi negli organismi animali
da parte della evoluzione darwiniana... Lui dice che nella storia
della vita sul pianeta questo e' avvenuto molte volte, in modo
indipendente le une dalle altre.
Comunque, credo che ai tempi delle lezioni di Feynman (primi anni
'60) ancora non si sapesse molto sul fatto che gli uccelli vedono
molte piu' cose di noi...