# Como convertir YCrCb a RGB



## Paloky (Oct 10, 2007)

Hola.

Hace varios dias que estoy buscando por webs, la "formula" para poder convertir YCrCb (Que no es lo mismo que YUV por lo que he leido, creo   ) en una señal RGB (Ambas en formato Digital de 8 bits).

Creo que he encontrado una página que me da  la siguente ecuación:

R = Y + 1.402 (Cr -128)
G = Y - 0.34414 (Cr-128) - 0.71414 (Cr-128)
B = Y + 1.772 (Cb-128)

Esta ecuación es teniendo en cuenta la norma CCIR-656 (El rango en 8 bits va de 0 hasta 255).

Todo esto viene dado, porque tengo un Decoder de Texas Instruments (TVP5150) que a partir de una entrada PAL, me da las señales codificadas de sincronismos y la salida me la da en YCrCb, pero yo quiero convertirla a RGB para poder mandarla a una LCD.

Otra questión que me planteo, es el porqué la trama de YCrCb, es de forma alternada (Cb Y Cr Y Cb Y Cr Y .).

Alguien me puede explicar un poco si voy bien encaminado y si estoy en lo cierto?

Muchas gracias.

Un Saludo.


----------



## tiopepe123 (Oct 10, 2007)

Antes de seguir mira si tu lcr permite ingresar  señales con sincronismo de 50hz y 15khz,

Si la LCD es de un monitor, si no han cambiado mucho las cosas te sera imposible, 
Busca un separador de sincronismos, necesitas sincronismos ttl, hay diseños muy simples con poco mas que una puerta 40106 o 7414 y algun transistor

Con este circuito y invectando una señal svideo en algunos de los colores deberias como minimo ver una señal estable, de un solo color pero estable .


La codificacion pal es algo compleja al tratarse de señales vectoriales, pero si recuerdas pitagoras una señal se puede deducir de las otras y esa es la Y


----------



## Paloky (Oct 11, 2007)

Hola Tiopepe123.

La señal no la enviare directamente al LCD.    Previamente, la almacenaré en un mapa de memoria SRAM, para poder tratarla y después la enviaré al LCD con sus correspondientes frecuencias y sincronismos.

El Separador de sincronismos me lo genera el integrado TVP5051 de Texas Instruments.


La "formula" para hacer la conversion de YCrCb a RGB es correcta?

Porque la señal de YCrCb, tiene la trama ( Cr Y Cb Y Cr Y Cb .)  Porque la Luminancia (Y) tiene el doble de frecuencia que las de Cromancia roja y azul?


Gracias.


----------



## tiopepe123 (Oct 11, 2007)

te recomiendo encarecidamente un libro de lectura, es un metodo un moto lioso
Esto puede darte un poco la idea
http://usuarios.lycos.es/chemahz/VIDEO_ES.pdf

No conozco el TVP5051, el tipico es un lm1881 y sus modernos.

Ojito que este proyecto lo veo bastante complejo.

Nos podrias hacer un resumen de lo que quieres implementar?


----------



## Paloky (Oct 15, 2007)

Hola.

He mirado el Lm1881, pero este integrado, solo me genera las señales de sincronismo.  El TVP5150, a parte de separarme los sincronismos, también me da la imagen digitalizada.

Gracias por el Link.  Esta muy bien.


La implementación que quiero hacer, son pruebas de Visión Artificial, mediante una FPGA de Altera (Cyclone II).  Pero paso a paso. Primero conseguir capturar video i reproducirlo en una pantalla 320x240 RGB en tiempo real. Y luego ja se irá amplificadorando.

Estoy siguiendo la inspiración de esta página.  

http://www.itoosoft.com/motorolos/php/cyclopeus.php


Quiero conseguir algo parecido.

Un Saludo.


----------



## tiopepe123 (Oct 15, 2007)

En principio los fabricantes principales son

st.com
http://www.nxp.com

Tambien podrias buscar alguna tele vieja y recuperar una parte de la circuteria, seguramente habra un TDAXXXX

Tambien podrias digitalizar la croma y la luminancia a 8 bits y hacer los calculos con la FPGA no creo que tubieras problemas. Si buscas un poco ya lo encontraras implementado, miralo.
Mira en la casa de altera, ya lei algo sobre el tema del video.

Recuerda que lo importante no es la resolucion en un sistema de deteccion, no vale para nada tener muchos pixel y tardar 2 horas en dispararse.


puedes utilizar un tda8708 y tda8709 para la digitalizacion.

Otros metodos de hacerlo

http://www.circuitcellar.com/avr2006/winners/AT3142.htm
http://www.circuitcellar.com/avr2006/winners/AT3267.htm



Este integrado lo tenian en amidata.es, no se si todabia lo tienen
cxa1229

http://doc.chipfind.ru/sony/cxa1229.htm


A la a trabajae.


----------



## Paloky (Oct 16, 2007)

Hola TioPepe123.

Creo que al fin he encontrado lo que buscaba.

En la pàgina de Xilinx, he encontrado una nota de aplicación donde ja está implementada la funcion en VHDL  (y sin limitaciones propietarias como el de Altera) :

http://www.xilinx.com/bvdocs/appnotes/xapp931.pdf


En cuando pueda lo pruebo y te digo te tal funciona.


----------



## ant_rock (Feb 20, 2008)

Hola Paloky,

Yo también estoy usando un dispositivo FPGA que contiene el video decoder tvp5150 para procesado de video. Resulta que también me descargué la aplicación de Xilinx, que es un covertidor de formato YCrCb a RGB.

Mi curiosidad es saber que tal te ha ido con la implementación de este módulo de Xilinx, yo todavía no lo he integrado en mi proyecto. 

Pero se me presenta la duda de que el bloque convertidor en vhdl de Xilinx convierte tramas de YCrCb a RGB, y como bien dices en tu primer "post" el video decoder tvp5150 saca tramas alternativas Cb0 Y0 Cr0 Y1 Cb1 Y2 Cr1 Y3 Cb2 etc... con lo cual tenemos una primera muestra completa [Cb0 Y0 Cr0] luego una de luminancia solo [Y1] luego otra completa ....

¿Cómo has conseguido hacerlo sin perder datos de luminancia?

Muchas gracias

Saludos


----------



## Paloky (Feb 21, 2008)

Pues la verdad, todavía no he podido probar nada.

Últimamente estoy muy liado con el trabajo y no tengo mucho tiempo para hacer mis propios proyectos.

Si consigues hacer algo, te agradecería si me lo pudieras contar que tal ha funcionado.

Saludos.


----------



## ant_rock (Feb 21, 2008)

Ok si me funcionase pues ya te lo comentaría. Lo poco que me he informaciónrmado por ahora es que desde el video codec tvp5150 salen los datos en formato ITU-R 656 4:2:2. Como te comenté anteriormente la salida es de la forma Cb0 Y0 Cr0 Y1 Cb1 Y2....

Para poder conectarlo al módulo de Xilinx creo que hay que hacer antes una conversión de ITU-R 4:2:2 a ITU-R 4:4:4 y de aquí conectarlo convertidor YCrCb-->RGB.

En el pdf xapp294 de Xilinx te explica la anterior conversión de fomratos.

Espero que sea de ayuda.

Saludos


----------



## Paloky (Feb 21, 2008)

Muchas gracias por la información de los métodos de conversión.


----------



## Andiamo (Ene 7, 2010)

ant_rock dijo:


> Ok si me funcionase pues ya te lo comentaría. Lo poco que me he informaciónrmado por ahora es que desde el video codec tvp5150 salen los datos en formato ITU-R 656 4:2:2. Como te comenté anteriormente la salida es de la forma Cb0 Y0 Cr0 Y1 Cb1 Y2....
> 
> Para poder conectarlo al módulo de Xilinx creo que hay que hacer antes una conversión de ITU-R 4:2:2 a ITU-R 4:4:4 y de aquí conectarlo convertidor YCrCb-->RGB.
> 
> ...




Hola

Permiteme que te haga una pregunta, ya que he seguido todos los post y creo que tu eres la persona que me puedes ayudar.

Yo tengo un problema y es que quiero sacar de Yprbr una salida RGB.

Yprbr es digital y RGB es analógico sino me equivoco? Te comento:

Yo tengo un navegador de coche que tiene una pantalla de 8" que acepta entrada de RGB + Csync, y por otro lado tengo un multimedia que tiene tres salidas, Yprbr, Video compuesto (RCA amarillo) y HDMI.

Lo que necesito es entrar video con la salida Yprbr al navegador, no sé sin con un integrado LM1881, separando el sincronismo, puedo obtener el RGB+ Csync.

Esta salida ya la he probado en conexión directa conectada al navegador, y puedo sincronizar el video con una imagen perfecta en Blanco y Negro.

Pues pensaba que si separo el sincronismo cpm el LM1881 podría sacar el Csync que necesita el navegador.

Lo que no sé tampoco si en el caso que pudiera ser posible, como se haría el circuito, en fin, perdido total.

Un saludo


----------

