29.3.11

Alphas: ¿Straight o Premultiplied?

Entender cómo funcionan los canales alpha puede ser algo confuso, pero es bastante importante para cualquiera que haga postproducción de video. Uno de los errores más conocidos en televisión nacional son las sobreimposiciones mal tratadas donde se ve un halo feísimo en vez de un corte preciso.

Creo que todos entendemos que el canal alpha es un canal adicional a una imagen RGB, el cual indica el grado de transparencia/opacidad de un pixel. Sin embargo hay dos formas de obtener un canal alpha: straight y premultiplied. Como sus nombres lo indican el primero es "recto" y el segundo es "pre-multiplicado". ¿Sencillo verdad?

Hay que dejar claro que en ambos casos el canal alpha es exactamente igual, lo que cambia es el relleno del mismo. En un straight alpha, los canales RGB muestran solamente información de color y el cuarto canal muestra el grado de transparencia. Esto es lo idóneo. En este caso el relleno RGB existe fuera de dependencia de la transparencia. Al contrario en un premultiplied alpha, los canales RGB están combinados con la transparencia y se multiplican con el color de fondo del archivo (generalmente negro o blanco).

Para ponerlo en cristiano, cuando cortas una imagen en Photoshop, los pixeles en los bordes generalmente tienen un grado de transparencia. Si grabas esa imagen cortada en un formato que no acepta alpha (.jpg, .pict, etc) no podrá interpretar los pixeles semitransparentes y se verá obligado a mezclarlo (multiplicarlo) con el fondo (en el caso de Photoshop blanco). Para entender mejor recomiendo que lean este escrito, así como la ayuda de Adobe, y si quieren ponerse científicos recomiendo esto también.

Más importante que saber las ecuaciones que forman un pixel, creo que es saber con qué estás trabajando y cómo reacciona cada software que usas frente a eso. Un día recibí un zócalo que mostraba un halo de color cyan alrededor de todo lo que tenía motion blur. ¡Sí cyan! Así que el problema es grave. El diseñador había renderizado el archivo con premultiplied alpha, pero aparte había cambiado el background color en After Effects. Si renderizan premultiplied, asegúrense que el color de fondo sea blanco o negro; caso contrario al software se le hará difícil dividir el color de los pixeles y resultará una transparencia horrible.

Ahora bien; como ya dije anteriormente hay que saber cómo trabaja cada herramienta que usamos. After Effects puede interpretar y generar perfectamente un alpha straight o premultiplied. Lastimosamente de los NLE que conozco, solo Premiere Pro puede interpretar premultiplied; tanto Media Composer como Final Cut, esperan que usemos straight alphas (aunque si no me equivoco en Final Cut hay un filtro para solucionar eso). El problema viene porque Photoshop, por ejemplo, no nos crea un straight alpha a menos que lo hagamos manualmente. Igual que los renders de Maya y Lightwave vienen con premultiplied por default.

La solución a todo este lío para mi es sencilla: siempre, siempre renderizar straight alpha. Es lo óptimo. Los alphas premultiplicados existen solamente porque habían softwares incapaces de interpretar el cuarto canal. Lo único que tienen que tener en cuenta es que los archivos sin premultiplicar se verán feos si los ven en un software que no permite visualizar el alpha correctamente (QuickTime por ejemplo) Los bordes se verán duros y con el "efecto escalera" típico de un croma mal cortado. Sin embargo se verá perfecto una vez que se interprete la transparencia en el software apropiado.

Para renderizar con After Effects correctamente en los Render Settings se debe marcar RGB+, Million Colors+ y por supuesto Straight Alpha. 
En Photoshop lo que hay que hacer es hacer un Merge de todas las capas, seleccionar el Merge con Ctrl+click y crear un Alpha Channel a partir de la selección. 
En Maya, utilizando Mental Ray lo que hay que hacer es dentro de la pestaña Quality, bajar hasta donde dice Framebuffer y deseleccionar la opción Premultiply.
Hacer esto me permite importar los renders 3D o los dibujos con drop shadows directamente al Media Composer sin nigún tipo de halo negro dañando la imagen. En el ejemplo siguiente la imagen de la izquierda es con straight alpha mientras que la de la derecha es con premultiply. Nótese la diferencia de calidad especialmente cuando la transparencia celeste se combina con la lámpara de la imagen de fondo.

3 comentarios:

Victor dijo...

Genial. Mil gracias por tu publicación. Hace muchos años me trabajo en postproducción y he lidiado con el problema de los bordes en las transparencias. Soy autodidacta y eso muchas veces trae sus desventajas.

Verónica dijo...

Muy bien explicado.
Desgraciadamente hay softwares, por ejemplo Viz Artist que se empeñan en leer mal las máscaras y aunque le des las imágenes con alpha recto añade un feísimo halo negro.

Rosa Gasull dijo...

Disculpen me gustaria saber qual es el plug-in de Final cut para interpretar un archivo con Rgb stright.
Gracias y muy buena información en el post