Just another WordPress.com site

LOOK UP TABLES (LUT)

Look Up Table en informática:

Un Look Up Table es una estructura de datos que se organiza en una matriz, es decir, una forma de almacenar una cantidad de datos en una tabla de manera que se pueda tener acceso a esos datos posteriormente. Generalmente el Look Up Table se usa para reemplazar ciertas operaciones de computación que ejecutan los programas, ahorrando tiempo y procesamiento de la información.

La definición y ejemplificación más básica de un Look Up Table serían la de las Tablas de Multiplicar. Durante el colegio todos debimos aprendernos las tablas de multiplicar, almacenarlas en nuestra memoria del mismo modo que una matriz o Look Up Table, con el objetivo de ahorrar tiempo y esfuerzo a la hora de hacer operaciones matemáticas mas complejas. En este sentido, cuando debemos hacer una multiplicación para resolver un problema matemático (Ej: (3X5) + (5×6) = …) nos remitimos a nuestra Tabla de Multiplicar almacenada en la memoria y ya tenemos este dato a la mano, (Ej: 15+30 = 45) en vez de efectuar la operación matemática de la multiplicación paso por paso (Ej: (3+3+3+3+3) + (5+5+5+5+5+5) = 15+30 = 45)

Siempre recuperar un dato almacenado en la memoria es mucho mas rápido que empezar un proceso de computación donde entra un dato, se computa y sale un dato final o resultado (esta es la típica operación de input/output que se usa en procesamiento de imagen digital). Estos Look Up Tables se almacenan en programas de memoria estática (Static Memory Allocation), es decir memoria permanente y no temporal, de modo que permanecen intactos todo el tiempo y nunca son alterados.

Verificar datos de input: El Look Up Table también sirve para verificar datos de entrada (input) comparando los datos del sistema o programación con los datos del Look Up Table. Luego veremos que este proceso informático es el que sirve para configurar y verificar el display de los diferentes sistemas de imagen digital según el LUT previamente configurado.

Forma de acceder a los datos: Existen también las “Listas” en programación, que resultan ser también estructuras de datos almacenadas en una memoria permanente. Pero la diferencia entre un Look Up Table y una lista radica en la forma de almacenamiento y de acceso a la información. En una lista los datos se almacenan en un orden específico y así mismo el acceso y la búsqueda de esos datos se hace en el mismo orden; De esta manera si quiero llegar a un dato debo recorrer uno por uno los demás elementos de la lista hasta llegar al dato requerido:

Si quiero acceder al dato 5. El programa debe recorrer y leer cada uno de los 4 primeros datos hasta llegar al 5º. Si se trata de una lista de datos muy grande el desgaste de procesamiento y tiempo será cada vez mayor. Para este ejemplo supongamos que cada dato es el resultado de una operación matemática que el programa necesita efectuar con  frecuencia. O para ejemplificarlo en procesamiento de imágenes, cada dato puede ser un valor de color o luminancia.

Ej:

  1. Dato 1
  2. Dato 2
  3. Dato 3
  4. Dato 4
  5. Dato 5
  6. Dato 6
  7. Dato 7
  8. Dato 8
  9. Dato 9

10.  Dato 10

En un Look Up Table cada dato es asociado con un key (código), además los datos son almacenados y leídos de manera aleatoria. De modo que se indexa el key o código del dato requerido y el acceso a la información es mucho más rápido. El ejemplo más sencillo para entender esta forma de indexar un código a un valor o dato determinado puede ser por ejemplo una agenda telefónica: Digamos que el número 3427416 corresponde a Lucía, de esta manera “Lucía” sería el código (key input) para encontrar el dato 3427416 (output).

De esta manera podemos pensar en un Look Up Table como una tabla bidimensional de datos. Donde hay unos códigos y unos valores para encontrar ciertos datos (del mismo modo que las tablas de multiplicar):

Casa Oficina
Lucía 3427416 2813229
Camilo 7215648 5139542
Miguel 2715689 1568123

Para encontrar los datos en este ejemplo basta con definir dos parámetros de entrada (input) (Nombre y Lugar). Así no solamente se pueden almacenar datos únicos, sino combinaciones de datos y variables. Se llama bidimensional porque los datos se almacenan horizontal y verticalmente. Para procesamiento de la imagen podemos pensar en parámetros como Color y Luminancia y darle a cada una de las combinaciones un valor específico.

LUTs en Procesamiento de Imágenes Digitales:

El LUT en el trabajo digital de imágenes se usa principalmente para transformar unos datos de input (entrada) correspondientes a cada uno de los valores informáticos de la imagen, en otros datos de output, según un serie de valores indexados en un LUT previamente, con el objetivo de transformar ciertas características de la imagen de una forma más exacta, mas rápida y eficaz para el procesador de las imágenes, ya sea para corrección de color o simplemente para calibrar el display o la proyección de una imagen.

Se dice sin embargo, que el uso de un LUT puede ser un error si la información que el LUT almacena es demasiado sencilla, tanto así que el proceso de remitirse a los datos del LUT sea más demorado y complicado que hacer la transformación de los valores directamente. Por otro lado es importante que la LUT no exceda la capacidad de memoria que ha sido asignada, ya que la indexación y la búsqueda de los datos dentro de una LUT demasiado grande podría ocasionar un proceso demasiado lento y podría ocupar toda la capacidad de memoria y procesamiento de los datos.

Uno de los usos más comunes del LUT en el procesamiento de imágenes digitales es a la hora de programar y utilizar el hardware y/o software para la graficación de imágenes en un computador. En este caso hay una LUT muy común que se llama Palette, la cual contiene los datos de la cantidad y calidad de colores (saturación, cantidad de tonos e intensidad lumínica) que por ejemplo una pantalla o una tarjeta graficadora va ejecutar para leer una imagen digital. En ese sentido la LUT Palette contiene por ejemplo la información de la profundidad de color, que pueden ser de estos tipos:

  • 1 bit  -> Monocromático
  • 8 bits -> Escala de grises
  • 8 bits -> Color
  • 15/16 bits -> High Color
  • 24 bits -> True Color
    • 30/36/48 bits -> Deep Color

Este tipo de Color LUTs se usan mucho por ejemplo en los hardware de las tarjetas de video para calibrar el gamma y la temperatura de color, o también en la programación de los videojuegos, de manera que los gráficos del programa se ejecuten tal cual fueron diseñados en cualquier display.

3D LUTs

En la creación de imágenes digitales el LUT se usa para calcular y verificar las características de una imagen que se va a proyectar o emitir según una serie de parámetros de color previamente configurados, con el fin de que la imagen de la copia final corresponda fielmente al look y las características fotográficas planteadas desde el rodaje y/o la pre-producción.

Ej:

Según esta LUT. Para una entrada (input) con valor de 1 el valor de salida del Rojo sería de 25, de Verde de 34 y de Azul de 88.

Por ejemplo si los valores de entrada son (R=4, G=2, B=3), los valores de salida serían: R= 21, G=38, B=5

R          G         B

1 25        34        88

2 18        38        15

3 5          53        5

4 21        8          34

Cuando usamos los LUTs en cine (ya sea cine digital, HD, Datos, Video, Película, etc.) hablamos de 3D Luts porque son datos que funcionan en una matriz de 3 ejes; del mismo modo que entendimos las tablas de multiplicar como una matriz de dos ejes. Estos LUTs contienen la información según cada uno de los 3 componentes del color: rojo, verde y azul (RGB). Un color determinado se sitúa en algún punto dentro de esa matriz de 3 ejes y es modificado según la configuración del LUT. De esta manera un 3D LUT es una matriz que contiene datos específicos de salida (output) de color de una imagen digital.

En este caso el valor 255 sería el valor máximo de cada color. De Modo que si en todos los canales RGB el valor es 255 sería el color blanco.

Interpolación de los datos:

Sin embargo las LUTs no pueden exceder una cierta cantidad de datos porque atrofiaría las capacidades y la rapidez de procesamiento de la imagen, y también sería imposible que fueran infinitas en su capacidad de almacenamiento de datos de entrada y salida; de modo que esa matriz que se presenta como una red de datos en tres dimensiones tiene puntos específicos donde se alojan los datos y cabe la posibilidad que un dato de entrada (input) de color no coincida exactamente con ninguno de los puntos de la matriz.

Eje de valores de Rojo (R)
Eje de valores de Azul (B)
Eje de valores de Verde (G)

En esta figura podemos ver que un dato de entrada representado por el punto rojo C no coincide con ninguno de los datos almacenados en la LUT en ninguno de los ejes (RGB). En este caso se usa la interpolación, que consiste en calcular el dato faltante a partir de su relación con los datos conocidos; Un ejemplo muy simplificado sería si tengo un dato que representa 4 y otro dato que representa 10, y mi dato de entrada es un punto entre estos dos datos:

4
10
X

Puedo calcular que el punto X está más cercano a 10, aproximadamente a 2/3 de la distancia entre 4 y 10; En este caso sería fácil deducir que X corresponde a 8.

En el caso de los 3D LUTS, la interpolación para hallar estos puntos se denomina “trilineal”, ya que se hace sobre 3 ejes calculando las distancias y los promedios a cada uno de los ejes:

Hallar con exactitud los datos por medio de interpolación hace que las LUTs no necesiten ser tan grandes ni almacenar tanta cantidad de datos y se conserva la misma calidad de exactitud en los datos usados. Sin embargo el LUT no pude ser tampoco tan escaso de datos, porque la interpolación requeriría demasiados procesos matemáticos para el computador y en ese caso el objetivo de ahorrar tiempo y esfuerzo no se cumpliría.

La capacidad de un sistema, por ejemplo un sistema de proyección digital, para interpolar los datos de los LUTs logra que la lectura de la imagen sea óptima, sin embargo las diferencias entre un sistema y otro son mínimas a la hora de una comparación a simple vista.

La mayoría de los 3D LUTs son cubos de 17 puntos de datos, es decir que hay 17 puntos en cada uno de los ejes.

3D vs 1D (LUTs):

El 3D LUT en comparación con un LUT unidimensional a veces ofrece mejores resultados, ya que maneja todos los canales de color al tiempo. Un 1D LUT por ejemplo no sería capaz de separar cambios entre saturación y luminancia, esto debido a que sus valores se expresan en unas sola dimensión en cada canal sin tener en cuenta las combinaciones con los otros 3 canales; recordemos que en el sistema RGB la suma de todos los colores resulta el blanco y del otro modo resulta el negro. Sin embargo a veces un 1D LUT puede ser más preciso en los datos solamente de crominancia si se hace un LUT separado por cada canal, en el cual se pueden almacenar mucho más puntos de datos por cada LUT, mientras en un 3D LUT solo hay 17 datos por cada canal.

USOS DE LOS LUTs:

LUTs para Calibración:

El LUT de calibración nació para emparejar y verificar la correcta proyección de una película según la copia final que se obtuvo y según fue aprobada luego de la corrección de color en posproducción. Por ejemplo un uso importante de los LUTs de calibración se da a la hora de la impresión en película de un material proveniente de imagen digital. Desde que la mayoría de las películas ejecutan el intermedio digital como proceso de workflow: captura en película y escaneo para convertir a imagen digital en formato DPX Log, el cual posteriormente vuelve a ser transferido a película; todos los sistemas de impresión de digital a película esperan una imagen en formato DPX. Sin embargo puede haber la posibilidad de que la transferencia a película se haga desde un formato de vídeo digital diferente (DVCAM, HDV, XDCAM, etc.), en este caso el sistema debe ejecutar un LUT de calibración para transformar ese input de vídeo en un output que corresponda a la forma en que el formato DPX lee y reproduce la imagen antes de la impresión a película; de otro modo la transferencia sería fallida en términos de calibración de color. En este proceso además el LUT ayudará a verificar siempre la correcta calibración de la grabadora de película.

En un mundo ideal el LUT serviría no solamente para calibrar la impresión de la película, sino también para verificar y supervisar el proceso de laboratorio, de copiado y las condiciones de proyección de la película (ambiente, temperatura, luz, etc.) ya sea en proyección de 35mm o proyectores digitales. Cuidando siempre que los valores de proyección de la imagen sean exactamente los que han sido configurados en el LUT. Sin embargo las condiciones de revelado, procesamiento y copiado de la película, o de proyección digital no siempre son óptimas ni están bajo una estricta supervisión, de modo que es allí donde la imagen sufre cambios indeseados.

Diagrama del uso de LUTs para calibrar la proyección de una imagen digital:

LUTs para Monitoreo:

Uno de los grande dilemas a la hora del rodaje en medio digital es tratar de conseguir un monitoreo de la señal que corresponda a la imagen que se esta produciendo, y sobre todo que esa imagen sea igual a la imagen del producto final. En el caso del rodaje en fílmico los sistemas de video-assist ofrecen un monitoreo muy pobre de calidad y todos saben que esa imagen está muy lejos de lo que el fotógrafo está realmente capturando en la película. En un rodaje por ejemplo con la Red One, la señal proveniente del formato RAW es una imagen plana y con colores apagados, exactamente como la proyección de la imagen de una película interpositiva. Entonces entra el deseo de los miembros de la producción de visualizar una imagen que corresponda con lo que vamos a ver en el producto final (importante sobre todo para clientes y productores). En este momento es cuando se podrían usar los LUTs aplicados al sistema de monitoreo para previsualizar (no capturar) la imagen según como se espera ver en la copia final. Estos LUTs estarían calibrados para ofrecer una imagen según el formato DPX previendo que el trabajo de flujo sea un intermedio digital para copia final en película, de este modo podemos monitorear la imagen tal cual se verá en la copia de película final. Este tipo de LUTs serían de impresión y/o de corrección de color.

Por otro lado estarían los LUTs de visualización. El LUT de visualización se usaría para monitorear una imagen proveniente de un medio de captura (cámara de cine digital) de modo que imite en cierto modo el look que se le quiere dar en posproducción. Sin embargo esta visualización puede no ser precisa en términos de compaginar con el formato de impresión a copia final (DPX), y en este caso no estaríamos en realidad viendo lo que va a ser impreso en película, sino un look específico que se le está aplicando al monitoreo durante el rodaje. Lo anterior teniendo en cuenta que por lo menos hasta ahora no hay ninguna cámara que en términos de contraste y colorimetría corresponda correctamente con los parámetros de la impresión en copia final en película.

En este sentido visualizar en el set con un LUT de visualización que nos muestre “cómo queremos que sea el look final de la película” puede ser una buena opción teniendo en cuenta que hasta ahora esto no está cercano a los parámetros de impresión en película. Porque si le aplicamos un LUT de calibración para impresión la imagen va a aparecer con seguridad muy errónea en cuanto a color y contraste. Pero luego durante la corrección de color es imperativo que usen LUTs que correspondan al formato de impresión a película con el fin de que veamos lo que en realidad se va a ver en la copia final. Para esto existe la opción de aplicar el LUT calibrado para película antes o después de la corrección de color (proceso creativo). Obviamente no sería necesario aplicar este LUT si la copia final del producto no va a ser película, sino simplemente proyección o exhibición por medios digitales o análogos.

Es importante saber, sin embargo, que las condiciones de visualización de un monitor varían en un set a una sala de corrección de color bien diseñada. En este sentido hay que tener en cuenta aspectos como la misma calibración del monitor, la luz del ambiente, el ángulo y la distancia de visualización a la hora de evaluar las condiciones de la imagen monitoreada.

LUTs para Corrección de Color:

Para este caso es importante que durante el rodaje se usen LUTs de visualización, es decir, que nos muestran cómo queremos el look de la película, y son en cierto modo un acercamiento a lo que queremos lograr durante la corrección de color. Entonces lo primero a tener en cuenta es que el LUT usado durante el rodaje para la visualización del material debe ser el mismo LUT usado para la corrección de color. En este punto es donde se vuelve muy importante que las condiciones de monitoreo en el set y en la sala de corrección de color sean lo más parecidas posibles, de otro modo crear un LUT durante el rodaje va a ser totalmente inútil. Además de las configuraciones de los monitores en ambas etapas (especificaciones, temperatura de color del monitor, capacidad de luminancia, etc.). Sin embargo si las condiciones de monitoreo son imposibles de configurarse durante el rodaje de manera óptica, hay LUTs que ofrecen la posibilidad de tomar en cuenta estas variables y reproducir una imagen similar a la que se obtiene en el monitor de la sala de corrección de color.

Entonces el LUT que se obtiene durante el rodaje resulta ser el punto de partida más importante para iniciar la corrección de color en posproducción. De este modo el colorista y el sistema de procesamiento de corrección de color tienen bastante trabajo y tiempo ahorrados al obtener un LUT que representa el look deseado a partir del cual se debe trabajar la imagen.

Sin embargo, lo sistemas de monitoreo en set que puedan soportar LUTs son todavía poco populares, lo cual hace que el uso adecuado y preciso de los LUTs en rodaje no sea totalmente aprovechado. La mayoría de estos sistemas solo soportan LUTs unidimensionales.

Bibliografía:

http://en.wikipedia.org/wiki/Lookup_table

http://en.wikipedia.org/wiki/3D_LUT

http://www.lightillusion.com/usingluts.htm

Deja un comentario