Pues eso, es un programa para eliminar automáticamente a la gente, los coches o todo lo que se mueva (se llama Amenabar por la escena de 'Abre los ojos' en que Eduardo Noriega aparece corriendo por la Gran Vía totalmente desierta (claro que creo que a él le cerraron los accesos y no necesitó de estas artimañas jeje).
Honestamente, no es muy usable porque como veréis es muy exigente con la toma, pero me entretuve haciéndolo y aquí os lo muestro. Pudiera ser de aplicación en arquitectura, fotos de lugares turísticos, y de calles o parajes concurridos en general. A diferencia de lo que hace un filtro neutro forzando un largo tiempo de exposición (donde se promedia todo lo que discurre por delante de la cámara fundiendo así a los transeuntes con el fondo y dando la impresión de que estos "desaparecen"), este programa clasifica los pixels de las distintas tomas en fondo o persona, de modo que lo que no queda clasificado como fondo es descartado y desaparece de la imagen final.
Éste es el GUI del programa (una primerísima versión, ya se me han ocurrido varias mejoras del algoritmo sobre todo):
Requisitos:
- Varias fotos, cuantas más mejor, de aquello en que queréis eliminar a la gente (para probar el programa de manera virtual podéis coger una foto, copiarla n veces, y guarrear de un modo distinto cada copia, a ver qué pasa).
- Hechas con trípode y en modo manual para tener exactamente la misma velocidad y apertura en todas ellas y por tanto exposición. También bloquear el enfoque (una vez enfocada la zona de interés ponerlo en manual y no tocarlo).
- Hay que dejar pasar tiempo entre toma y toma para dar tiempo a los "pesados" a irse (ver a la cuchipanda que espera el bus en el ejemplo), pero tampoco demasiado para que no cambie la iluminación (a mí me ha pasado, desde que he empezado a tomar hasta el final ha bajado 1/3 EV porque se ponía el sol), por ejemplo si está amaneciendo, atardeciendo o pasan nubes.
- En general cuantas más fotos mejor, pero lo realmente importante es que los obstáculos cambien de posición de unas a otras. Es decir: es más fácil eliminar a mucha gente pero que aparece por sitios diversos aunque tengamos pocas fotos, que eliminar obstáculos que aparecen siempre por la misma zona de la foto (los coches como veremos luego son un gran enemigo).
- Todas las fotos de igual tamaño. Yo además las he tirado en JPG para ahorrarme el revelado en condiciones de iluminación uniformes.
Manual de uso:
1. Ponemos todas las fotos en una carpeta solo para ellas. Pueden ser TIFF, JPEG, BMP o GIF mezlados. Eso sí han de tener el mismo tamaño en pixels.
2. Con '...' seleccionar una cualquiera de ellas para que el programa sepa el directorio de donde habrá de leer.
3. Este paso es opcional, pero muy recomendable. Se trata de crear una imagen de referencia con una máscara. Elegir de las fotos anteriores aquella que esté más limpia de obstáculos, hacer una copia y pintar con rojo puro (255,0,0) una máscara encima de todo aquello que queremos eliminar. De usar dicha máscara que como digo es opcional, el programa sólo procesará las áreas pintadas en rojo, dejando el resto de pixels tal cual aparecen en esta imagen patrón de referencia. La máscara no puede ser un JPEG (usar TIFF o BMP) ya que los bordes de la zona roja deben estar perfectamente delimitados. Si usáis PS para pintar la máscara, usar un lápiz con dureza 100% ya que el pincel aplica cierto suavizado antialiasing en los límites de donde se pinta.
Esta máscara como digo no es obligatoria, pero sí muy recomendable para:
- Un procesado mucho más rápido (6 veces o más), ya que sólo se procesan las áreas pintadas.
- Preservar aquellas partes que, perteneciendo al fondo, pueden moverse de una toma a otra (sombras que se mueven con el sol, agua que fluye, hojas de los árboles mecidas por el viento, humo, una bandera que ondea,...).
- Evitar efectos indeseables en áreas que siendo afectadas por obstáculos móviles en muchas de las tomas, están sin embargo limpias en la imagen de referencia con máscara.
El fichero de máscara se puede guardar en el mismo directorio que las fotos ya que caso de seleccionarla, el programa la ignora a efectos del procesado de recuperación del fondo. Para usar la máscara hay que seleccionarla con el segundo '...', el que indica 'Red mask'.
4. Elegir un umbral (típ. 5%) para crear los clusters de color: se considerará que 2 pixels tienen el mismo color si difieren en menos de este umbral. Modificando este parámetro conseguiremos mejores o peores resultados en los casos más rebeldes. En general valores demasiado bajos pueden provocar que aparezcan pixels espúreos de color indeseado, entre otros correctos. Valores demasiado altos permitirían amplias zonas donde el color proviene de promediar el fondo junto con los obstáculos, dando lugar a que estos aparezcan como difuminados ("fantasmas").
5. Elegir un modelo de color. El absoluto es el recomendado. Aun estoy haciendo pruebas con el relativo; la idea de éste último es mejorar los resultados cuando tratamos de eliminar obstáculos oscuros sobre un fondo más claro (por ejemplo las ruedas y la sombra de los bajos de los coches contra el aslfalto soleado de una calle).
6. Con 'Remove' el programa hace sus cálculos (para 17 imágenes de una calle concurrida de 2Mpx cada una, mi P4 con 2GB tarda menos de 30s si uso la máscara, 3min sin máscara). El resultado se guarda en la forma: "RemovedFiles17_TH5%_Mask_AbsMode.tif" indicando el número de imágenes origen, y los parámetros usados.
La imagen resultante de la limpieza se guarda en el mismo directorio que las demás, pero si repetimos el procesado (por ejemplo con otro valor umbral), será ignorada por lo que no hace falta quitarla de ahí.
Os pongo el ejemplo. Tenemos 17 toma de una calle petada de gente y coches. Estas 6 son una muestra (todas son del estilo, algunas con más obstáculos pero no menos):
Escogemos la de abajo a la derecha, con el chaval de la camiseta roja, para pintar nuestra máscara. Esto se hace de manera rápida sin tener demasiado cuidado, o no tendría gracia. Pensad que no utilizar máscara viene a ser equivalente a usar una máscara que ocupe toda la foto.
Y el resultado:
Aquí a tamaño realLa gente de la parada del bus la he dejado fuera de la máscara porque no se fueron en todo el tiempo en que hice las tomas. Son lo que yo llamo "saboteadores". Así que es imposible recuperar su fondo.
Han quedado unos pocos pixels oscuros en la calzada en la parte derecha de la farmacia, pero el resultado global es muy bueno.
Los coches son una pesadilla; estoy convencido de que eliminar solo personas en edificios turísticos por ejemplo, requiere de muchas menos fotos y funciona mejor aún.
Lo podéis bajar de aquí (Software - Amenabar):
AmenabarUn saludo y espero vuestros comentarios.
PD: como prueba de fuego traté de ponerlo en práctica en la Gran Vía en hora punta. Pero no había manera
prácticamente todas las áreas de asfalto aparecían más tiempo tapadas por un coche que al descubierto con lo que os imgináis el resultado. Para casos así, hay que esperar a que haya una manifestación y corten el tráfico: