L'encodage JPEG doit-il prendre en compte le gamma?


11

Lorsqu'une image est encodée en JPEG, les pixels RVB sont d'abord encodés en YUV, puis les canaux UV sont sous-échantillonnés. Avant de faire le DCT et d'encoder les coefficients, JPEG ne corrige pas gamma le canal Y. Est-ce correct? Ne devrions-nous pas déterminer les coefficients DCT qui affecteront le plus notre résultat affiché?


Je ne sais pas, mais il est certainement logique de ne pas corriger le gamma.
joojaa

Je ne poste pas cela comme une réponse car je n'y suis pas confiant, mais la perception de la luminosité par la vision humaine n'est pas linéaire. En fait, sRGB fait un assez bon travail pour compenser cela et donner le plus de précision dans les domaines qui comptent. Ainsi, vous pourriez constater que la correction gamma avant de compresser la luma peut en fait donner de moins bons résultats.
yuriks

AFAIK, les normes vidéo supposent R'G'B ', c'est-à-dire. un espace colorimétrique non linéaire, lors de l'application des transformations de couleur 3x3 vers / depuis YCbCr. Dans une application telle que la vidéo où l'on veut maximiser la qualité par bit, il n'est pas logique d'utiliser linéaire. Je pense que les sections 27 et 29 de la FAQ couleur de Charles Poyton l'expriment plus clairement: poynton.com/notes/colour_and_gamma/ColorFAQ.html#RTFToC27
Simon F

"Vidéo démystifiée" dit également: "YCbCr est l'espace colorimétrique initialement défini par BT.601, et maintenant utilisé pour tous les formats vidéo de composants numériques. .... La notation techniquement correcte est Y'Cb'Cr 'puisque les trois composants sont dérivé de R'G'B '. "
Simon F

L'exposant gamma est stocké dans des données JPEG exif. la plupart des logiciels l'ignorent totalement. mais vous pouvez supposer qu'après avoir décodé un jpeg, il est déjà dans l'espace gamma, donc il n'y a pas de conversion à faire avant d'envoyer la valeur rgb sur le tampon d'affichage.
v.oddou

Réponses:


2

Selon Wikipédia (insérer la clause de non-responsabilité standard RE précision):

JPEG ne définit pas le codage couleur à utiliser pour les images. JFIF définit le modèle de couleur à utiliser: soit Y pour les niveaux de gris, soit YCbCr tel que défini par le CCIR 601.

YCbCr est un format non linéaire. Comme je l'ai mentionné précédemment, "Video Demystified" déclare:

"YCbCr est l'espace colorimétrique défini à l'origine par BT.601, et maintenant utilisé pour tous les formats vidéo de composants numériques. .... La notation techniquement correcte est Y'Cb'Cr 'car les trois composants sont dérivés de R'G'B "."

et de Charles Poynton Couleur FAQ États

Les systèmes vidéo approximent la réponse de luminosité de la vision en utilisant des signaux R'G'B 'qui sont chacun soumis à une fonction de puissance de 0,45.

Avec la compression, nous recherchons la meilleure représentation visuelle par bit et, comme l'œil est non linéaire à peu près de cette manière, il est logique d'utiliser des représentations non linéaires.


D'après ces détails, si je comprends bien, JPEG s'attend à ce que les valeurs RVB d'entrée soient encodées de manière à ce que l'affichage applique une fonction de puissance lors de l'affichage. Afin de recréer ces valeurs RVB spécifiques, elles ne doivent pas être corrigées avant l'encodage.
Mokosha

1
Le problème avec le dire comme ça, c'est que c'est un peu ambigu. Nous devrions probablement indiquer que, si vos données "RGB" sont, en fait, R'G'B '(et supposons que sRGB tombe dans cette catégorie), vous ne devez pas modifier les valeurs avant d'appliquer le R'G'B' => Matrice YCbCr. Si, cependant, les données ont été, par exemple, calculées avec un moteur de rendu (donc éventuellement linéaire), traitées en utilisant une réduction d'échelle (qui devrait être effectuée dans un espace linéaire) ou, disons, capturées (et nettoyées) avec un CCD (que je think is linear), il doit ensuite être remappé avant la compression JPEG.
Simon F

7

La réponse courte est "non", pour les raisons évoquées dans la note d'Alvy Ray Smith, Gamma Correction . Le gamma ne concerne pas la non-linéarité dans la perception humaine, il s'agit de la non-linéarité dans les dispositifs d'affichage (et, je suppose, les dispositifs d'acquisition aussi).

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.