2010-05-23 14 views
2

J'essaie maintenant de comprendre comment fonctionne le codage JPEG et tout semble bien sauf la partie transformation de couleur.Espace colorimétrique - RGB et YCbCr question

Avant de tenter de faire un DCT dans l'algorithme JPEG, l'image est transformée en espace colorimétrique YCbCr. Pour moi, cela signifie essentiellement que nous juste (en comparant à l'image initiale RGB) prendre une partie des informations de couleur et de le disposer tout en appliquant la transformation RGB -> YCbCr. Par conséquent, nos étapes de codage ressemblent généralement à RGB -> YCbCr -> DCT -> Huffman. Le moyen de décodage inverse ce processus.

Et ma question est - pourquoi l'image (par exemple, créé et exporté à JPEG) reste la même en termes de couleur, bien que nous devions faire inverse YCbCr -> RGB transformer. D'où vient la partie éliminée des informations de couleur ou comment est-elle gérée?

Répondre

2

Pour moi, cela signifie essentiellement que nous juste (comparaison initiale image RVB) prendre un morceau d'information de couleur et tout en appliquant disposer du RGB -> transformation YCbCr.

Aucune information n'est éliminée par la transformation elle-même. La transformation est réversible dans un sens mathématique. Par exemple. Si vous convertissez une couleur en YCbCr et transformez le résultat en RGB, vous obtenez la même couleur. Dans un monde parfait après tout.

En pratique, il y a une perte d'information. Supposons que vous commencez avec trois octets en RVB. Si vous convertissez en YCbCr, vous obtenez trois valeurs dont deux, à savoir Cb et Cr ne tiennent plus dans 8 bits. Parlant techniquement les deux représentations RGB et YUV ont une gamme différente (http://en.wikipedia.org/wiki/Gamut)

Cette perte d'information est heureusement rarement visible. Side-node important: Cette chose de la gamme est un effet secondaire indésirable et n'a rien à voir avec le choix d'utiliser YCbCr à la première place.

Le point d'utilisation de YCbCr est que les données stockées dans Y sont les plus importantes. C'est la luminosité, ou la valeur de l'échelle de gris. Les données dans Cb et Cr sont les informations de couleur avec la luminosité soustraite pour ainsi dire.

Maintenant, nos yeux ne sont pas très bons pour choisir de subtiles différences de couleur, mais ils sont sensibles aux nuances d'intensité. Pour l'utiliser en jpeg, seule une image basse résolution de Cb et Cr est stockée et Y est stocké en pleine résolution. Il y a différentes façons de le faire avec le plus commun d'omettre tous les autres pixels de Cb et Cr en x et y.Cela réduit d'un facteur quatre les besoins en espace pour Cb et Cr.

D'où vient la partie disposé de l'information couleur vient ou comment est-il

traitées

Il ne vient pas par magie. L'information est perdue pour toujours. Cependant, puisque l'information n'était pas si importante au départ, nous ne voyons pas beaucoup d'artefacts. En JPEG, les pixels laissés à l'écart des volets Cb et Cr sont approximés en redimensionnant les plans Cb et Cr à nouveau. Certains décodeurs reproduisent simplement les pixels manquants en choisissant un voisin, d'autres font une interpolation linéaire.

1

RGB to YCbCr est une transformation mathématique déterminable, inversible. Par conséquent, il n'y a pas de partie "éliminée". En d'autres termes, un pixel RVB a le même contenu d'information qu'un pixel YCbCr de la même manière que "A" et "01000001" sont des représentations alternatives de la même information avec un schéma de codage différent.

Une clarification: Il est très fréquent pour les chroma downsampling à faire entre le YCbCr -> transformation TCD dans lequel les informations cas sera perdu, mais en fonction de l'algorithme utilisé (réglage de la qualité), l'étape de sous-échantillonnage peut être "aucun".

+0

Merci beaucoup. –

+0

Il y a aussi l'étape de quantification entre la transformée de couleur et la DCT, qui peut être sans perte, étant donné un segment DQT de tous les 1 – matja