domingo, 21 de diciembre de 2008

Focus Stacking Primera Aproximacion

Focus Stacking: Primera aproximacion

La tecnica conocida como "Focus Stacking" consiste en combinar multiples imagenes con distinto foco en una sola imagen. Esto se hace en general para lograr mayo profundidad de campo DOF.
La primera aplicacion practica de esta tecnica es en macros en donde el DOF es muy limitado y no es recomendable llevar la apertura mas alla de F11 o F16 para no caer en problemas de difraccion. Puede usarse tambien en paisajes para obtener una imagen hiperfocal con una apertura en la cual esto no seria posible.

Entre varios programas que hacen focus stacking menciono los 3 mas populares:

Helicon Focus (comercial, hay trial)
CombineZM (freeware)
Tufuse (freeware)

Los dos primeros Helicon Focus y CombineZM son los mas populares y creo los que mejores resultados dan.

El workflow para hacer focus stacking es bastante sencillo:

- Armar tripode y demas de la forma mas estable posible camara en foco manual. (Si o si)
- Hacer foco en lo que este mas lejano en la foto (en un paisaje en infinito)
- Sacar foto
- Mover el foco un pelin hacia adelante tratando de que se superpongan las areas en foco entre foto y foto.
- Sacar foto, repetir...

En general para resultados aceptables hacen falta 10 o 12 fotos y para resultados muy buenos unas 20 o 30 fotos. He visto resultados maravillosos con unas 24 o 25 fotos asi que podemos calcular ese numero de fotos para saber como ir moviendo el foco.
Tener un lente con un anillo de foco de amplio recorrido ayuda muchisimo.

Una vez sacadas las fotos en general es facil armar el apilado del foco en cualquiera de los programas mencionados. Helicon Focus es notablemente mas amistoso por su interfase que CombineZM pero en resultado final estan muy parejos.

Esta tecnica es posiblemente el gran secreto de muchos que sacan macros con DOFs increibles, es necesario que el sujeto no se mueva en absoluto eso si.

Ejemplo:

Esta es la primera foto de un stack de 10 fotos, para tener una idea de cual era el DOF original en cada frame:
























Este es el resultado con Helicon Focus

























Este es el resultado con CombineZM






























Pese a solo haber usado 10 fotos los resultados son bastante aceptables, tanto Helicon Focus como CombineZM dan resultados a mi juicio parecidos. Supongo que con 20o 30 fotos el resultado final podria haber sido aun mejor.

Proximos pasos: Probar lo mismo pero con un paisaje.





jueves, 18 de diciembre de 2008

Enfuse a partir de un solo RAW

Fusionando exposiciones a partir de una sola imagen

Vuelvo a la carga con el ilustre desconocido "Enfuse", un software gratuito que me parece maravilloso.

En esta ocasion el objetivo es proponer una forma sencilla de volcar el rango dinamico de un RAW a un JPG.

Como sabemos el archivo RAW tal y como sale de la camara tiene un rango dinamico mucho mayor que un jpg, gracias a esto podemos cambiar la exposicion al revelar el RAW y mejorar la luz de las fotos que nos hayan salido un poco quemadas o un poco oscuras. La "secta" de exponer a la derecha se apoya precisamente en esto para sobreexponer todo lo posible una imagen sin quemar nada y luego ajustar la exposicion al revelar maximizando la cantidad de informacion que reciben los pixeles y de esta forma reduciendo el ruido.

Al pasar el RAW al JPG lo que hacemos es basicamente seleccionar una partecita del rango dinamico capturado en el RAW y volcarlo al JPG, esto muchas veces es mas que suficiente pero en otros casos el rango dinamico de la escena es mayor a lo que un JPG puede mostrar. El siguiente metodo pretende fusionar el rango dinamico de un archivo RAW en un JPG usando herramientas libres y gratuitas.

Paso 1: A partir del RAW generar todos los JPGs para todas las exposiciones posibles.

Es decir que partiendo del RAW generemos archivos JPG para exposicion -3, -2.5, -2, -1.5 y asi sucesivamente hasta +3.

Esto lo pueden hacer a mano pero es tedioso, yo uso un programita que se llama UFRAW, muy lindo para revelar RAWs y que cuenta con un modo batch.

Para instalar ufraw visitar esta pagina:
http://ufraw.sourceforge.net/

Una vez instalado me hice 2 archivos batch (para windows) para automatizar el proceso:

enfuse.bat
-------------cut----------------------
for %%Y in (%1) do uf.bat %%Y
--------------------------------------


uf.bat
--------------cut------------------------
ECHO %1
for %%X in (-3 -2.5 -2 -1.5 -1 -0.5 0 0.5 1 1.5 2 2.5 3) do "c:\archivos de programa\Gimp-2.0\bin\ufraw-batch.exe" --out-type=jpeg --compression=100 --exposure=%%X %1 --wb=camera --output=%1_%%X.jpg
-----------------------------------------


(los guioncitos no son parte del archivo, tenia que aclarar sepan comprender...)

Simplemente crear los archivos con el nombre indicado con el notepad o similar y reemplazar en uf.bat el path por el que hayan elegido para instalar el UFRAW en sus equipos.

Almacenando estos dos archivos en un directorio junto con el RAW a procesar (o varios) los usamos asi:

enfuse.bat *.CR2 (procesar todos los RAW)
o bien
enfuse.bat pepe.CR2 (procesar un RAW especifico)

El resultado son 13 simpaticos archivos .jpg por cada RAW con todo el rango dinamico de nuestro RAW, lo siguiente es fusionar todo.

El Paquete Enfuse/Enblend si no lo tienen esta aqui:
http://enblend.sourceforge.net/

El enfuseGUI lo pueden bajar de aqui:
http://software.bergmark.com/enfuseGUI/

Una vez instalado simplemente cambiar el numero de exposiciones a 13, usar el botoncito "+" para seleccionar los archivos a fusionar y clickear en "enfuse!". Luego de unos minutillos deberiamos tener un bonito archivo TIFF con el resultado final.

El archivo final es una imagen de bajo contraste global y alto contraste local por lo que es bueno procesarla mediante niveles para ajustar el contraste. Gimp, photoshop o lo que sea que usen si estan leyendo hasta este punto les va a servir muy bien. Auto-levels funciona bien en la mayoria de los casos.

Ejemplo:

Imagen JPG en base a la exposicion mas razonable: (como salio de la camara)


Imagen JPG en base al RAW enfusionado:


Aplicaciones practicas:

He encontrado que en imagenes con cielos los resultados suelen ser bastante buenos ya que el rango dinamico del cielo y del sujeto que estemos sacando en general no van bien en un JPG.

Diferencias con HDR:

Aqui no hay tonemapping, simplemente fusion de exposiciones por lo que el resultado es en general una imagen de menor impacto visual que un HDR pero mas realista. No deberian presentarse halos y otros artefactos que aparecen en los HDRs.

Fuentes:

El enfuse y el UFRAW no son nada nuevos y mucha gente los usa. El proceso este hasta donde yo se lo he inventado yo mismo y creo firmemente que compartir lo que uno aprende o desarrolla es la mejor forma de aprender. Ademas aqui no hay nada magico, cualquiera podria haber inventado esto mismo en sus casas en un dia de lluvia.

Reflexiones sobre el ruido el ISO y el tiempo de exposicion

Como esto es medio largo voy a empezar con una frase polemica para atraer la atencion de los lectores:

"Subir el ISO no aumenta el ruido en las fotos"

El Ruido:

En una fotografia tomada a velocidades de obturacion normales, es decir menores a un segundo el 99% del ruido en la imagen tiene dos origenes:
  1. Ruido del flujo de fotones
  2. Ruido de lectura del sensor

El ruido del flujo de fotones

Esta es la principal fuente de ruido ya que es el ruido propio de una imagen, es independiente de la camara que usemos y es absolutamente inevitable aun con tecnologia perfecta.

Dado un punto de una escena su luminosidad esta dada por el numero de fotones que se originan en la misma, supongamos que tenemos un cierto punto que tiene una luminosidad de 1000 fotones por intervalo de tiempo, si el flujo de fotones fuera siempre constante al sensor de la camara llegarian siempre 1000 fotones en un lapso de tiempo fijo. Sin embargo el flujo de fotones sufre variaciones y la variacion esta dada por la raiz cuadrada de la luminosidad. Es decir que de 1000 fotones al sensor le estarian llegando 1000 +/- 31.62 fotones. Esa diferencia entre los fotones que deberian llegar al sensor y los que realmente llegan es ruido.

De aqui podemos sacar varias conclusiones interesantes

La primera es que medida que aumenta la luminosidad de la imagen (señal) el ruido aumenta, en 100 fotones tenemos una variacion de 10 como ruido, en 1000 fotones la variacion es de 31.62.

Sin embargo en una foto lo que afecta la calidad de imagen no es la cantidad absoluta de ruido sino la tasa señal/ruido, esto es facil de entender si pensamos en lo siguiente:
Supongamos un pixel que tiene un valor de luminosidad de 1000, si variamos 1 punto esta luminosidad el resultado es totalmente imperceptible para el ojo humano. Si el pixel tuviera en cambio luminosidad 1 el variar 1 punto seria equivalente a duplicar su luminosidad o bien a apagar el pixel por completo y esto se notaria mucho. De aqui que cuanto mas oscura sea la foto mayor va a ser el ruido debido a que una foto oscura tiene poca señal y la tasa señal/ruido sera mucho mayor. Muchos dicen "en una foto hay mas ruido en las sombras", esto es falso, en las luces altas hay muchisimo mas ruido que en las sombras pero como la señal es alta la tasa señal/ruido es menor y se nota menos. Esto sirve para impresionar a fotografos aficionados en charlas de cafe.

Como el ruido es la raiz cuadrada de la señal a medida que la señal aumenta la tasa señal/ruido disminuye, en 1000 fotones hay 31 de ruido para un 3.1% de señal/ruido en 2000 fotones hay 44.7 de ruido 2.2% de señal/ruido.

Conclusion simple: Hay que sacar la foto con la mayor cantidad de luz posible. Viva la luz.

El "culto" de exponer a la derecha se basa precisamente en esto, hay muchos articulos que explican erroneamente por que exponer a la derecha es bueno hablando de niveles en el RAW y cosas por el estilo, la pura verdad es que la idea es simplemente maximizar la tasa señal/ruido y cuanta mas luz captemos mejor. La calidad de imagen "optima" en una camara se logra en ISO100 con el histograma tan a la derecha como pueda lograrse. Mas sobre esto un poquito mas adelante.

Otra cosa que podemos tambien observar es como el hacer "stacking" de imagenes nos ayuda a eliminar el ruido, si la luminosidad de un punto es 100 +/- 10 debido al ruido sacando suficientes fotos podemos hacer que el promedio de luminosidad del punto sea tan cercano al 100 absoluto como querramos de esta forma eliminamos, completamente, el ruido de la imagen.

La reduccion de ruido de la camara no puede eliminar este tipo de ruido ya que es imposible para el sensor saber si un punto que recibe un cierto numero de fotones deberia en realidad recibir mas o menos. Una camara avanzada podria eliminar ruido sacando 100 fotos en lugar de una y promediando valores pero las camaras por el momento no hacen esto y hay que hacerlo por software.

El ruido de lectura del sensor

Esta fuente de ruido es debida a la imperfeccion de la tecnologia. Si al sensor le llegan 100 fotones el sensor no siempre registra 100 fotones sino que el valor que registra oscila un poco. La oscilacion en general es constante y no depende de la luminosidad de la escena. Es posible eliminar gran parte de este ruido tomando una foto con la tapa del lente puesto; bajo la suposicion de que ningun foton deberia ser registrado por el sensor todo aquello que
el sensor registre es ruido y puede eliminarse de una foto tomada con iguales parametros de exposicion. Esto es lo que hace el reductor de ruido de la camara, simplemente toma una foto con el diafragma cerrado para igual tiempo de exposicion y todo lo que aparece en esta foto si tambien estaba en la foto original lo elimina de la misma ya que se sabe es ruido.

El ruido de lectura del sensor tiene 2 componentes uno es la lectura de la cantidad de fotones que el sensor hace que es imperfecta y otro es la conversion analogica/digital que el sensor hace de cantidad de fotones a un cierto voltaje.

RL = RF + RC

RL = ruido de lectura
RF = ruido de lectura de fotones
RC = ruido de conversion

RF depende de la señal y es amplificado al aumentar el ISO. Pero RC es constante.

Entonces:

RL = G * RF + RC

Donde G es el factor de amplificacion debido al ISO.
Notar que a medida que la señal aumenta aumenta RL pero como RC es constante el aumento no es proporcional.

Sean 100 fotones con un error +/- 10 y G=1 (ISO 100). Sea RC= 5 (arbitrario)

RL = 1*10 + 5 = 15
Como señal es 100 la tasa señal/ruido es 15/100 = 15%

Si duplicamos G (ISO 200)
RL = 2*10 + 5 = 25 (señal = 200)
como señal ahora es 200 la tasa señal ruido es 25/200 = 12.5%

Sean ahora 1000 fotones con un error +/- 31 y G=1. Sea RC= 5 para el mismo sensor

RL = 1*31 + 5 = 46
Tasa señal/ruido = 46/1000 = 4.6%
Si duplicamos G
RL = 2*31 + 5 = 67
Tasa señal/ruido = 67/2000 = 3.35%

Conclusion: A medida que subimos el ISO el ruido de lectura aumenta pero la proporcion de ruido con respecto a la señal disminuye(!).

Volvamos entonces a nuestra frase polemica

"Subir el ISO no aumenta el ruido en las fotos"

El motivo principal por el cual al subir el ISO las fotos nos salen mas ruidosas es simplemente que sacamos con menor tiempo de exposicion y reducimos la señal.

1/100 ISO 100 tiene menos ruido que 1/200 ISO 200. Esto no es nada nuevo.

Si bien el ruido de lectura del sensor aumenta al subir el ISO hemos aprendido que lo que realmente importa es la tasa señal/ruido si subir el ISO nos ayuda a subir la señal entonces subiendo el ISO mateniendo el tiempo de exposicion reducimos el ruido de la foto.

No, no estoy loco. Veamos un ejemplo.

Sea el siguiente histograma:



El histograma corresponde a una foto normal, como podemos ver el rango dinamico de la escena es menor que el del sensor y queda "espacio" en el histograma para exponer de forma distinta. Los cultores de exponer a la derecha inmediatamente reconoceran que aumentando la exposicion de la foto podria reducirse el ruido. Pomposamente nosotros sabemos que en realidad el ruido absoluto aumentara pero aumentaremos tambien la señal disminuyendo la tasa señal/ruido ya que el ruido es funcion de la raiz cuadrada de la señal.

Supongamos ahora que para la foto en cuestion la exposicion no puede cambiarse, la apertura fue la maxima del lente y si cambiamos la velocidad de exposicion pasaria algo terrible, por ejemplo una foto movida. ¿Tiene sentido entonces aumentar el ISO para derechear el histograma? La respuesta es que SI y esta es la gran "idea" que presentamos en este articulo.

Si aumentando el ISO podemos pasar a este tipo de histograma:



Lo que hacemos es aumentar la señal mediante el ISO y como hemos demostrado oportunamente el ruido de lectura si bien aumenta no aumenta en forma proporcional a como aumenta la señal debido al componente constante RC.

Esto tiene aplicaciones inmediatas para los que sacan objetos en movimiento en condiciones de luz pobre, recitales, deportes, etc.

Si bien lo optimo para exponer a la derecha es sacar en ISO100 en la velocidad mas lenta que podamos en las condiciones mencionadas hay una cierta velocidad de obturacion limite, si el histograma lo permite debemos entonces aumentar el ISO para bajar el ruido de las fotos. Tambien aplica a la luna y fotografia astronomica en general, siempre y cuando el histograma lo permita, es decir sin quemar las luces altas hay que sacar en el ISO mas alto posible si la velocidad de obturacion no puede cambiar porque, por ejemplo, las estrellas mostrarian traza o la luna se nos moveria en la imagen.

Conclusion practica

Supongamos que tenemos una foto en f2.8 y 1/100 ISO100 y supongamos que el histograma admite variar 1 stop sin quemar las luces altas.
Lo optimo es entonces sacar la misma foto en 1/50 ISO100 aumentando la señal sin generar ruido de lectura extra al sacar en ISO minimo.
Si variar la velocidad de obturacion no es posible entonces es mejor sacar en 1/100 ISO200 y luego ajustar el RAW que 1/100 iso100, aumenta el ruido del lectura pero queda compensado y superado por el aumento de la señal. La tasa señal/ruido es menor.

Repetimos:

f2.8 ISO100 1/100 tiene MAS RUIDO
que
f2.8 ISO200 1/100


Suponiendo que en ambos casos no hay luces altas quemadas y ambos seteos son correctos para la escena.

Referencias:
"Noise Dynamic Range and Bit Depth" de Emil Martinec (Noise, Dynamic Range and Bit Depth in Digital SLRs)
"Expose Right" de Cambridge in Colour (Expose Right)
"Rawanalize" Un software para analizar imagenes RAW sin procesar. (http://www.cryptobola.com/PhotoBola/Rawnalyze.htm)

Gimp 101: Capitulo 1

Gimp 101: Cursito de Gimp para principiantes

Capitulo I: Introducción y Primera edición de una fotografía

En este capítulo:

  • Cómo instalar Gimp
  • Qué hacer una vez instalado, primeros pasos
  • Ajustes básicos en una foto: recorte, contraste y nitidez

Instalando Gimp

Gimp funciona tanto en Windows como en Linux y es totalmente gratuito y libre, para instalarlo simplemente debemos acceder a http://gimp.org/downloads/ y elegir la version que corresponda a nuestro sistema operativo. Gimp se instala como cualquier otro programa en nuestra PC. Esta disponible en varios idiomas en este curso lo usaremos en inglés.

Una vez instalado podemos abrir Gimp para ver que se presentan dos (a veces 3) ventanas.



























La ventana "Toolbox" ofrece mediante iconos una lista de las herramientas de edición mas populares que iremos estudiando a medida que avancemos.
La ventana principal es la que en este momento vemos en la imagen vacía, aqui es donde editaremos nuestras fotografías.

Es hora de poner manos a la obra y editar nuestra primera foto.
Para cargar la foto en Gimp hay varias opciones las dos mas populares son:

  • Desde la ventana principal hacer file->open y buscar la imagen en nuestra PC.
  • Desde el explorador de windows tomar la imagen con el mouse y arrastrarla hasta la ventana principal de Gimp y soltarla alli.
Como ejemplo usaremos en este capítulo la siguiente imagen:
























Una vez abierta la imagen con Gimp deberíamos ver la pantalla mas o menos asi:



























Ajustes básicos

Explicaremos ahora los ajustes básicos que suelen hacerse sobre una fotografía y cómo hacerlos con Gimp, si bien esto es sólo el 1% del Iceberg de la edición de fotos para el 80% de las fotos que saquemos bien podría ser mas que suficiente y sin dudas es mejor que no hacer nada en asboluto.

Primer paso: Ajuste automático de Niveles

Este paso mejora el contraste de la imagen y los tonos de los colores. Se hace desde el menú Colors de la ventana principal seleccionando "Levels" y luego el botón "auto".




























El resultado debería verse mas o menos asi:
























Como vemos ha mejorado el contraste y los colores se ven mas vívidos, el ajuste automático no siempre da un buen resultado, cuando el resultado no nos guste presionando Control-Z (undo) deshacemos la operación, mas adelante veremos como ajustar los colores manualmente cuando el ajuste automático no da buen resultado.

Segundo paso: Recortando la foto

Evidentemente tenemos una zona oscura que corresponde al techito desde donde se tomo la foto que resulta muy molesto,es como un borde negro en la foto. Queremos entonces recortar la fotografía para quitar este techo, para hacer esto usaremos la herramienta de recorte que esta en la ventana de herramientas de Gimp y tiene el aspecto de un cutter.



















Seleccionamos el area de la foto que queremos recortar con el mouse y luego hacemos click en el interior de la zona seleccionada.



Deberiamos tener ahora una foto con un aspecto bastante mejor al original.

















Tercer paso: Brillo y contraste

En toda foto en general hace falta algo de contraste, muchas veces con el ajuste automático de colores esto no es necesario pero de todas formas es una herramienta muy útil.

Vamos a Colors->Brightness and Contrast y movemos el contraste y el brillo hasta obtener un resultado que nos agrade.
En nuestro ejemplo aumentamos el brillo en 14 y el contraste en 6 para llegar a este resultado:

















Cuarto paso: Nitidez

El 99.99% de las fotos que editemos necesitarán un cierto ajuste para mejorar su nitidez, en Gimp hay varias formas de hacer esto y vamos a comenzar con la mas simple y popular. Desde Filters->Enhance seleccionamos "Unsharp Mask" o "Máscara de desenfoque" en español.























Veremos una ventana en donde se nos piden los parametros a usar.
Es recomendable dejar el Radius (radio) en 5 y el threshold en 0 (valores por default).
El "amount" es la cantidad de nitidez que queremos agregar a la foto y en general se usan valores entre 0.5 y 0.8,

Si el resultado aun no se ve muy nítido podemos hacer Ctrl-Z para deshacer y probar con un valor mayor (no es bueno aplicar 2 veces este filtro). Lo mismo si nos pasamos, hacemos
Ctrl-Z y probamos un valor menor. En nuestro ejemplo como la imagen es muy pequeña (800x400) hemos usado 0.3 como valor y el resultado es un poco exagerado pero sirve para ver el efecto.



















Cambiando el tamaño y salvando la imagen.

Finalmente si queremos subir la imagen a algun sitio web restaria cambiar el tamaño de la misma y salvarla.

Para cambiar el tamaño vamos a Image->Scale y seleccionamos el valor de X o Y que deseemos el otro valor se ajusta automaticamente en forma proporcional.

Para salvar la imagen vamos a File->Save As y elegimos un nombre y formato, podemos salvar en Tiff, JPG, Png o bien en XCF que es el formato interno de Gimp. Es recomendable salvar nuestros trabajos siempre en XCF ya que es un formato que no pierde información al no comprimir la imagen, luego para la web tomamos el XCF le
cambiamos el tamaño y salvamos como JPG.

Bien, ¿no fue tan difícil verdad?. Increiblemente con lo que aprendimos en este capítulo podemos hacer mucho sobre nuestras fotos, estamos aun lejos de hablar de matrices de convolución pero vamos hacia alli.

En el próximo capítulo:
  • Recortando la imagen, regla de los tercios y otras ayudas.
  • Rotando la imagen (al fin nos van a quedar las cosas derechas)

Images and inspiration from MeetTheGimp gran fuente de tutoriales en video si entienden ingles.