En quoi le débit binaire diffère-t-il pour la même résolution et la même fréquence d'images?

15

En lisant sur la qualité vidéo, j'ai trouvé que cela dépend de la résolution, des images par seconde et du débit binaire, qui décide de la taille de la vidéo.

Ma question est de savoir comment le débit binaire est calculé et comment il peut différer.

Disons qu'une vidéo a une résolution de 360x240. Il faut 86400 pixels par image. La fréquence d'images est de 30 Hz. La vidéo prend donc 86400 × 30 = 2592000 pixels par seconde.

Supposons donc qu'un pixel soit 3 octets (24 bits) de données: nous avons 2592000 × 24 bits par seconde de vidéo (62208000 bits), soit 62208 kBits (cela ne semble pas correct, peut-être un problème dans mon calcul).

Mais comment peut-il différer et comment cela fait-il une différence de qualité?

vincent mathew
la source
Si la vidéo était une séquence d'images bitmap. Vos calculs sont déjà désactivés pour les fichiers image png / jpg.
Daniel Beck
Les deux réponses existantes ne mettent pas l'accent sur l'attribut saillant de la compression vidéo: la plupart (sinon la totalité) de tous les codecs vidéo utilisent une compression avec perte. Autrement dit, certaines informations sur l'image sont supprimées lorsque la vidéo brute est compressée et codée. La quantité ou le degré d'informations / détails d'image jetés et perdus est déterminé par un facteur de qualité . Quant à la compression audio, il existe des techniques de compression avec et sans perte.
sciure de bois
@sawdust: Ils ne le font pas? Je pensais que mon troisième paragraphe le disait assez clairement. Quoi qu'il en soit, donner trop d'informations n'est parfois pas si bon; Je crois qu'il faut en donner suffisamment pour permettre au demandeur d'en savoir plus, s'il le souhaite. Sinon, je pourrais dire que votre message ne souligne pas pourquoi quelqu'un choisirait un compresseur plutôt qu'un autre, ou pourquoi il y a tant de méthodes différentes, etc., etc.
Marty Fried
@sawdust Vous avez raison, cela a été quelque peu enfoui dans la partie JPEG. J'ai ajouté un peu plus de détails.
slhck

Réponses:

21

Ce que vous avez calculé est le débit binaire d'une vidéo brute et non compressée. Vous ne les trouverez généralement que dans la recherche ou d'autres applications spécialisées. Même les diffuseurs utilisent la vidéo compressée, bien qu'à un débit binaire beaucoup plus élevé que votre vidéo YouTube typique.

Ainsi, la qualité vidéo a beaucoup à voir avec la façon dont la vidéo a été compressée. Plus vous le compressez, moins il faut de bits par trame. De plus, plus vous compressez, plus la qualité est mauvaise. Maintenant, certaines vidéos sont beaucoup plus faciles à compresser que d'autres - c'est essentiellement pourquoi elles ont un débit binaire inférieur même si elles ont la même résolution et la même fréquence d'images.

Afin de comprendre pourquoi c'est, vous devez être conscient des deux principes principaux utilisés par la compression vidéo. Celles-ci sont appelées "redondance spatiale" et "temporelle".

Redondance spatiale

La redondance spatiale existe dans les images qui montrent un contenu naturel. C'est la raison pour laquelle JPEG fonctionne si bien - il compresse les données d'image car des blocs de pixels peuvent être codés ensemble. Ce sont des pixels 8 × 8, par exemple. Ils sont appelés "macroblocs".

Les codecs vidéo modernes font de même: ils utilisent essentiellement des algorithmes similaires à JPEG afin de compresser une image, bloc par bloc. Ainsi, vous ne stockez plus de bits par pixel, mais des bits par macrobloc, car vous "résumez" les pixels en groupes plus importants. En les résumant, l'algorithme supprimera également les informations qui ne sont pas visibles à l'œil humain - c'est là que vous pouvez réduire la majeure partie du débit binaire. Cela fonctionne en quantifiant les données. Cela permettra de conserver des fréquences plus perceptibles et de «jeter» celles que nous ne pouvons pas voir. Le facteur de quantification est exprimé comme "QP" dans la plupart des codecs, et c'est le bouton de contrôle principal pour la qualité.

Vous pouvez maintenant même aller de l'avant et prévoir des macroblocs à partir de macroblocs qui ont été précédemment encodés dans la même image. C'est ce qu'on appelle la prédiction intra . Par exemple, une partie d'un mur gris était déjà codée dans le coin supérieur gauche du cadre, nous pouvons donc réutiliser ce macrobloc dans le même cadre, par exemple pour le macrobloc juste à côté. Nous allons simplement enregistrer la différence qu'elle avait avec la précédente et enregistrer les données. De cette façon, nous n'avons pas à coder deux macroblocs qui sont très similaires l'un à l'autre.

Pourquoi le débit change-t-il pour la même taille d'image? Eh bien, certaines images sont plus faciles à encoder que d'autres. Plus l'activité spatiale est élevée, plus vous devez réellement encoder. Les textures lisses prennent moins de bits que les textures détaillées. Il en va de même pour la prédiction intra: un cadre d'un mur gris vous permettra d'utiliser un macrobloc pour prédire tous les autres, alors qu'un cadre d'eau qui coule pourrait ne pas fonctionner aussi bien.

Redondance temporelle

Cela existe car un cadre suivant un autre cadre est probablement très similaire à son prédécesseur. Généralement, juste un tout petit peu de changements, et cela n'aurait aucun sens de l'encoder complètement. Les encodeurs vidéo ne font que coder la différence entre deux images suivantes, tout comme ils peuvent le faire pour les macroblocs.

Prenant un exemple de l'article de Wikipedia sur la compensation de mouvement , disons que c'est votre cadre d'origine:

Ensuite, la différence avec l'image suivante est la suivante:

L'encodeur ne stocke désormais que les différences réelles , pas les valeurs pixel par pixel. C'est pourquoi les bits utilisés pour chaque trame ne sont pas les mêmes à chaque fois. Ces trames de "différence" dépendent d'une trame entièrement codée, et c'est pourquoi il existe au moins deux types de trames pour les codecs modernes:

  • I-frames (aka keyframes) - ce sont ceux entièrement encodés
  • P-frames - ce sont ceux qui stockent juste la différence

Vous devez parfois insérer des images I dans une vidéo. Le débit binaire réel dépend également du nombre de trames I utilisées. De plus, plus il y a de différence de mouvement entre deux images suivantes, plus l'encodeur doit stocker. Une vidéo de "rien" en mouvement sera plus facile à encoder qu'une vidéo de sport et utilisera moins de bits par image.

slhck
la source
+1 - c'est ce que je voulais dire, mais mon algorithme de compression a laissé un peu de côté. :)
Marty Fried
+1 C'est tout ce dont j'avais besoin. Surtout la compensation de mouvement. Merci
vincent mathew
6

Je crois que vos calculs sont en fait corrects, mais il y a un peu plus; la compression est le chaînon manquant ici.

Vous avez calculé le débit binaire non compressé et avez trouvé la raison pour laquelle la compression existe. Les débits binaires deviennent incroyablement élevés avec la vidéo non compressée. Ainsi, ils compressent la vidéo à la source et la décompressent au niveau du récepteur, puis le débit binaire devient gérable. Vous avez juste besoin d'un décompresseur assez rapide, qui peut être matériel ou logiciel.

Donc, le problème devient la quantité de compression qui peut être tolérée - ce n'est pas sans perte, généralement, donc vous perdez des informations, mais ils essaient de la rendre suffisamment intelligente pour perdre les données moins importantes qui ne seront pas si visibles. C'est généralement assez facile jusqu'à ce qu'il y ait beaucoup de mouvement, puis cela devient plus compliqué.

Edit: J'ai oublié d'ajouter, mais les parties qui implémentent la méthode de compression sont le codec; J'ai remarqué que vous l'utilisiez comme balise dans votre message.

Marty Fried
la source
3
De plus, la compression vidéo n'est généralement pas basée sur les pixels, mais fonctionne sur des blocs de pixels, appelés macroblocs .
slhck