2010-10-27 5 views
3

Voici une matrice pour convertir RGB en YCbCr. Pouvez-vous me dire comment puis-je obtenir une formule pour convertir YCbCr en RGB? Je veux dire, j'ai la valeur YCbCr disponible et je veux en obtenir le RVB. RGB to YUV ImageYCbCr à RGB à partir de la table matricielle

+0

Voulez-vous dire "convertir RGB en YCbCr"? Demandez-vous * comment * la formule est dérivée? Sinon, je pense que vous avez répondu à votre propre question. –

+0

@Steve: Oui, je demande comment la formule peut être dérivée? Il y a longtemps que j'ai fait des mathématiques matricielles. – SunnyShah

+0

Est-ce que c'est pour les devoirs? – Jacob

Répondre

1
Y = 0.2126*(219/255)*R + 0.7152(219/255)*G + 0.0722*(219/255)*B + 16 
CB = -0.2126/1.18556*(224/255)*R - 0.7152/1.8556(224/255)*G + 0.5*(219/255)*B + 128 
CR = 0.5*(224/255)*R - 0.7152/1.5748(224/255)*G - 0.0722/1.5748*(224/255)*B + 128 
+0

Merci pour la réponse rapide, mais la question est de savoir comment avoir YCbCr à la conversion RGB. – SunnyShah

+0

Pourquoi n'êtes-vous pas satisfait de cette formule? – user434507

+0

Je veux dire que j'ai YCbCr disponible et je veux le convertir en RGB. – SunnyShah

1

http://www.fourcc.org/fccyvrgb.php a YUV vers RGB conversions.

+0

J'ai YCbCr aleready disponible, j'ai juste besoin d'une formule pour convertir ce YCbCr en RVB. Cette formule devrait être basée sur le tableau ci-dessus. – SunnyShah

+0

@Sunny, avez-vous vérifié le lien? Les deux formules sont disponibles. –

+0

@Mark Ransom, Mais je veux que la formule dérivée de la matrice ci-dessus seulement. – SunnyShah

4

Si vous demandez comment la formule est dérivée, vous pouvez rechercher des «systèmes de coordonnées de couleur». This page a une bonne discussion sur l'espace YCbCr, en particulier.

Nous savons que presque n'importe quelle couleur peut être représentée comme une combinaison linéaire de rouge, vert et bleu. Mais vous pouvez transformer (ou "faire tourner") ce système de coordonnées de sorte que les trois éléments de base ne soient plus RGB, mais quelque chose d'autre. Dans le cas de YCbCr, la couche Y est la couche de luminance, et Cb et Cr sont les deux couches de chrominance. Cb est plus proche du bleu et plus proche du rouge.

YCbCr est souvent préféré car le système visuel humain est plus sensible aux changements de luminance que les changements quantitativement équivalents de chrominance. Par conséquent, un codeur d'image tel que JPEG peut comprimer davantage les deux couches de chrominance que la couche de luminance, ce qui entraîne un taux de compression plus élevé.

EDIT: J'ai mal compris la question. (Vous devez le modifier pour clarifier.) Voici la formule pour obtenir de RVB YCbCr, tiré du above link:

r = 1.0 * y' + 0 * cB + 1.402 * cR 
g = 1.0 * y' - 0.344136 * cB - 0.714136 * cR 
b = 1.0 * y' + 1.772 * cB + 0 * cR 
+0

J'ai YCbCr aleready disponible, j'ai juste besoin d'une formule pour convertir ce YCbCr en RVB. Cette formule devrait être basée sur le tableau ci-dessus. – SunnyShah

+0

Nice link, mais la formule n'est pas tout à fait raison - comme indiqué c'est pour les valeurs 0.0-1.0, pas 0-255. –

+0

Oui, bon point. Le lien contient également la modification supplémentaire (mais simple) pour [0,255]. –

2

Je ne vais pas rendre compte de la partie round, mais depuis M regarde inversible:

alt text

Vous pouvez arrondir le vecteur résultant.

Questions connexes