Alfa Directo vs. Alfa Premultiplicado

¿Alguna vez habéis exportado un render de Cinema 4D hacia After Effects con máscaras y alfas y os ha aparecido el maldito halo alrrededor de las figuras recortadas? Si es así y aún no habéis entendido el porqué y encontrado solución, voy a intentar alumbraros.

En este artículo entraremos en temas teóricos y en la problemática que podemos encontrarnos. En posteriores entradas veremos las diferentes soluciones para el método tradicional de exportación y para Cineware.

Alfa Directo vs. Alfa Premultiplicado

Un canal alfa es una imagen que no contiene información de color, sólo blanco (zona visible) y negro (zona transparente) para delimitar transparencia. Las imágenes con canales alfa almacenan esta información de transparencia de dos maneras posibles:

  • Alfa Directo (Straight)
  • Alfa Premultiplicado (Matted)

El canal alfa en ambos casos es el mismo; son los canales de color los que difieren.

alpha

Canal alfa típico

Alfa Directo

La información de transparencia se almacena sólo en el canal alfa y no en los canales de RGB visibles. En áreas en las que esta máscara es completamente transparente, aún puede haber colores en los canales RGB. En la conversión a alfa premultiplicado los colores en estas áreas se convierten en negro y se pierden.

Los resultados correctos de la transparencia no son visibles hasta que se procese la imagen en una aplicación que admita canales directos (como AFX). Mientras no se visualiza en el programa correcto aparecen píxeles huérfanos aleatoriamente en los bordes (es un comportamiento correcto).

En C4D sería el equivalente a exportar una imagen sin fondo con la opción Alfa Directo activada en el apartado Guardar de la Configuración de Render.

Alfa Premultiplicado

La información de transparencia se almacena en el canal alfa y también en los canales RGB visibles, que se multiplican con un color de fondo. Los colores de las áreas semitransparentes, como los bordes suavizados, se tintan del color de fondo en proporción a su grado de transparencia.

Si los píxels blancos tienen un valor de 1 (figura) y los píxels negros un valor de 0 (fondo transparente) y los multiplicamos por los píxels de la imagen RGB, los píxels multiplicados por 1 mantendrán sus valores mientras que los píxels multiplicados por 0, se convertirán en negro. El problema viene cuando es un valor entre 0 y 1, es decir, una escala de grises.

A la hora de componer este tipo de imágenes sobre otro fondo es cuando suelen ocurrir problemas. Éstos se evidencian en los contornos donde, debido al antialiasing u otros efectos, algunos de los píxels son grises, con lo cual son semitransparentes. Al componer nuestras imágenes, esa semitransparencia dejará ver los pixels negros del fondo. Cuando además, la imagen con alfa contiene desenfoque de movimiento, el problema suele ser mucho peor, ya que aumenta el número de pixels afectados por la premultiplicación.

El equivalente en C4D sería un canal alfa sin marcar la opción Alfa Directo.

Búfer de Objeto

Éste es un caso especial, donde mediante una ID extraemos máscaras de objetos concretos, llamado también matte.

Conversión e interpretación

La conversión entre los dos tipos de alfa no es una operación simple y puede suponer perdida de información debido a que uno puede representar información que el otro no, aunque normalmente estas diferencias son mínimas.

Una interpretación incorrecta puede provocar colores indeseables en el borde de una imagen o una pérdida de la calidad en los bordes del canal alfa. Por ejemplo, si un canal se interpreta como directo siendo premultiplicado, las áreas semitransparentes conservarán algunos de los colores de fondo. Si aparece un halo, lo primero a comprobar es si el método de interpretación (img.1) en nuestro programa de composición es el correcto.

interpretfootage

(img.1) Opciones Alpha en el panel de Interpret Footage

De todas maneras, un mal uso de la gamma y del espacio lineal hace que repetidas veces nos encontremos con este halo en canales alpha de los dos tipos.

¿Cuando usar cada uno?

El hecho más claro es que el alfa directo conserva una información de color más precisa que los canales premultiplicados pero estos últimos son compatibles con una gama más amplia de programas. Eso quiere decir que en principio siempre querremos disponer de un canal alfa directo y no de uno premultiplicado. En el único caso donde nos puede interesar es en las escenas donde se está emitiendo luz y dejando pasar luz desde el fondo. Por ejemplo, un render con fuego que debe emitir luz pero dejar pasar la luz de los objetos detrás de él. Al convertir a alfa directo perderíamos este efecto.

En C4D el Alpha Directo sólo se puede extraer de la escena completa, así que si necesitamos el alfa de diferentes objetos por separado deberemos un render para cada uno de ellos con los demás objetos ocultos.

Los Bufers de Objeto nos permiten crear recortes de cualquier objeto, pero Cinema 4D trata de una manera extraña estos canales y la consecuencia es que añade aún más halo del que tendríamos con un simple alfa premultiplicado, haciendo imposibles muchos de los trucos para desmultiplicar un alfa.

Recomendación

Siempre que puedas, consigue un alfa directo de todos tus objetos aunque requiera más pasos y más trabajo. Los Bufer de Objeto tienen deficiencias técnicas y nunca conseguirás evitar el halo sin tener que utilizar varios trucos, con la consiguiente pérdida de calidad.

En los próximos artículos veremos las soluciones en los diferentes casos.