GREYCstoration – Documentación.

Web del proyecto:

http://www.greyc.ensicaen.fr/~dtschump/greycstoration/

::Instalación en MacOSX:

Ver link externo (gracias a Eli Bressert).

::Descripcion del algoritmo:

El algoritmo de GREYCstoration tiene tres modos diferentes (restauración, inpainting y reescalado) cada uno con sus propios parámetros. De todas formas, todos estos modos se basan en la misma idea: suavizar la imagen localmente preferiblemente a lo largo de las estructuras de la imagen.

Los parámetros principales del algoritmo básicamente definen cómo se debe recuperar la geometría de la estructura de la imagen, y cómo se debe hacer el suavizado. Tambien puedes decirle al algoritmo cuantas pasadas de suavizado tiene que hacer (iteraciones).

Esta es una idea muy simple pero las posibilidades para ajustar finamente los parámetros permiten una infinidad de comportamientos a la hora de suavizar de la imagen y, tal y como puedes ver en la sección demo, pueden conseguirse una gran cantidad de ediciones interesantes.

Realmente, imagina el algoritmo de GREYCstoration como un operador humano al que se le permite procesar una imagen solamente usando una herramienta falta de definición (desenfocada), tratando de aplicarla localmente a lo largo de la(s) direccion(es) correctas con la intensidad correcta, y haciendo eso hasta que la imagen se suavice lo suficiente. GREYCstoration trata de realizar la tarea tan automaticamente como sea posible para todos los pixeles de la imagen. A continuación detallamos los parámetros principales del algoritmo de GREYCstoration y explicamos cómo puede afectar los resultados obtenidos.

::Restauracion de la imagen.

Generalmente la restauración de la imagen supone quitar el ruido (denoising) o despixelar (deblocking). Solamente recuerda que GREYCstoration funciona aplicando suavizado local en la imagen. ¡Si tu problema no se puede afrontar por medio de esta clase de técnica, no esperes demasiado de GREYCstoration! Por ejemplo, quitar ruido de la sal y de la pimienta (Salt & Pepper???) de imágenes se hará de una manera mucho más eficiente con un simple filtro de mediana, puesto que está particularmente bien adaptado para esta clase de ruido. Desafortunadamente, el ruido encontrado generalmente en imágenes naturales es más difícil de quitar, y GREYCstoration puede, quizás, ayudarte en tales casos. Para funcionar en modo de restauración, tienes que invocar GREYCstoration con la opción -restore seguido por el archivo de la imagen que quieres procesar:

./greycstoration -restore imagen-ruidosa.jpg

Los parámetros por defecto se han fijado para utilizarse con una imagen que contenga poco ruido. Pueden ser inadecuados para las imágenes muy ruidosas (el ruido no será quitado en cantidad suficiente) o para imagenes con muy poco ruido (las imágenes resultantes aparecerán sobresuavizadas). Es muy importante que pruebes diferentes combinaciones de parámetros al procesar una imagen, puesto que es casi seguro que los de por defecto no funcionaran totalmente a la perfección. Esto se ilustra mas abajo, compara el resultado obtenido con los parámetros por defecto (imagen del medio) a la que esta obtenida con los “ajustes finos” (imagen de la derecha):

obelix original obelix default obelix tunned

De izquierda a derecha: Imagen original, imagen restaurada con el greycstoration – restore obelix.png, imagen restaurada con el greycstoration -restore obelix.png -p 0.7 -a 0.73 -dt 10 -iter 50 -sigma 0.5 -alfa 0.3.

Al contrario que otras técnicas antiruido basadas en PDE, el algoritmo de GREYCstoration se ha diseñado para ser muy flexible y dar resultados muy diferentes con diferentes combinaciones de parámetros. Describamos ahora cuáles son los parámetros principales que indudablemente tienes que ajustar para el modo restauración. Esos parámetros se pueden dividir en dos grupos: los parámetros que dicen cómo recuperar la geometría de las estructuras de la imagen, y los parámetros que dicen cómo suavizar la imagen, según dicha geometría:

Parametros relativos a la geometria de la imagen:

¤ Alfa float_number: Este parámetro se define matemáticamente como la desviación estándar de un núcleo gaussiano falto de definición (blurring) aplicado a la imagen original antes de estimar su geometría. Es decir define una especie de escala bajo la cual los detalles no son considerados como estructuras si no más bien como ruido. Este parámetro es muy dependiente del nivel del ruido presente en tu imagen. Recuerda que el aumentar demasiado este parámetro dirá a GREYCstoration que suavice más estructuras (puede ser agradable para efectos visuales especiales). El valor prefijado de alfa es 0.8, que es relativamente bajo (se preservarán muchos detalles). Las imagenes de abajo muestran un ejemplo de los resultados obtenidos al aumentar el valor de alfa. Fijate cómo los detalles son ignorados con valores altos de alfa:

moi original moi default moi alpha moi alpha2

De izquierda a derecha: Imagen original, imagen restaurada con los parámetros por defecto, imagen restaurada con -alfa 6, imagen restaurada con -alfa 12.

¤ Sigma float_number: Este parámetro se define matemáticamente como la desviación estándar de un núcleo gaussiano falto de definición (blurring) aplicado al campo de los tensores de la estructura, que son las matrices que describen localmente la geometría de la estructura de la imagen. Como en el caso de alfa, puede ser visto como una escala pero no en la imagen en sí misma, si no en sus estructuras. Básicamente, la sigma le dirá a GREYCstoration cómo es suavizada debe ser la geometría de las estructuras de la imagen, después de la recuperación. El valor prefijado de sigma es 0.5, que es relativamente bajo (se preservarán muchos detalles). La imagen de abajo muestra un ejemplo de los resultados obtenidos de aumentar el valor de sigma.

moi original moi default moi sigma moi sigma2

De izquierda a derecha: Imagen original, imagen restaurada con los parámetros por defectos, imagen restaurada con -sigma 3, imagen restaurada con -sigma 6.

Una vez que se ha determinado la estructura de la imagen, el algoritmo de GREYCstoration debe aplicar el suavizado en la imagen procesada. Básicamente, tratara de suvizar la imagen a lo largo de las direcciones de las estructuras principales pero ésto puede ser tuneado con los parámetros descritos mas abajo.

Parámetros relacionados con el comportamiento en el suavizado:

¤ P float: Este parámetro le habla a GREYCstoration sobre la preservación de las estructuras. Una vez que las estructuras locales de la imagen han sido detecadas, GREYCstoration tienen que decidir cuánto suavizara los pixeles de la imagen. Básicamente, disminuye el suavizado cuando la estructura local es contrastada. El parámetro p simplemente marca como debe ser considerado este decremento. Cuando p es alto, incluso las estructuras poco contrastadas serán preservadas. No marques un p demasiado alto o puede que el ruido tambien sea preservado. Por el contrario, cuando p es bajo, las estructuras tienen que ser muy contrastadas para evitar el suvizado local. No marques un p demasiado bajo o las estructuras de la imagen serán sobresuavizadas. Como puedes ver, hay un (a veces difícil) equilibrio para acertar donde situal el valor de p. Por defecto es 0.8 y los valores típicos se encuentran entre 0 y 5. La imagen abajo muestra un ejemplo de los resultados obtenidos con el aumento de p.

jungle original p0 jungle default p2 p4

De izquierda a derecha: Imagen original, imágenes restauradas con -p 0, -p 0.8 (por defecto), -p 1.5 y -p 3.

¤ A float: Este los parámetros fija el nivel de anisotropia del suavizado. Va desde 0 (que significa “isotrópico puro”) a 1 (que signifique “anisotropico puro”). La noción de anisotropia se relaciona con la manera en la que la orientación del suvizado se extiende por el espacio: el suavizado puramente isotrópico (-p 0) será realizado en todas las direcciones posibles, mientras que el alisado puramente anisotropico (-p 1) será realizado solamente a lo largo de las direcciones de las estructuras. Los valores de p entre 0 y 1 le dicen a GREYCstoration que alise la imagen principalmente a lo largo de las direcciones de la estructura, pero con cierto porcentaje de tolerancia. El valor prefijado para a es 0.8 (que es ya muy anisotropico). La imagen de abajo muestra un ejemplo de los resultados obtenidos con el aumento de a.

jungle original2 a0 a1 default a2

De izquierda a derecha: Imagen original, imágenes restauradas con -a 0, -a 0.3, -a 0.8 (defecto), y -a 1

¤ Iter integer: Este parámetro le dice simplemente a GREYCstoration que realice varias iteraciones en vez solo una. Repite la accion de suavizar hasta que la imagen queda aceptablemente libre de ruido. Observa que esto puede ser hecho interactivamente cuando GREYCstoration nos muestra el resultado (usando la tecla I). La imagen de abajo muestra un ejemplo de los resultados obtenidos con el aumento de iteraciones. Observe que para el propósito de la restauración, el número de iteraciones es bastante alto: 1 a 5 iteraciones son generalmente necesarias conseguir un resultado aceptable. El valor prefijado es 1.

original 1 10 100-

De izquierda a derecha: Imagen original, imágenes restauradas con -iter 1 (por defecto), -iter 10 y -iter 100.

¤ DT float: Este parámetro representa la cantidad media de suavizado que se utilizara. GREYCstoration realiza un promedio espacial de los valores de pixel, y dt representa una especie de dimensión del área donde se computa el suavizado. Se relaciona con el paso de tiempo (time step) en PDE. El valor prefijado es 50. La imagen de abajo muestra que un ejemplo de los resultados obtenidos al aumentar dt, es preferible usar un dt alto a realizar varias iteraciones (al menos hasta que aparecen artefactos indeseables), esto acelerará bastante el proceso.

original tun 10 50 150

De izquierda a derecha: Imagen original, imágenes restauradas con – dt 10, – dt 50 (por defecto) y – dt 150.

Eligiendo parámetros para casos reales:
Dejanos mostrarte cómo podemos coseguir un conjunto de parametros “correcto” para situaciones reales. Ahí van algunos ejemplos:
La imagen siguiente (a la izquierda) es una captura obtenida con una webcam de muy baja calidad. Hay bastante ruido de Poisson (Poisson noise) y pixelado debido a la compresión hecha por la webcam. La imagen también esta ligeramente desenfocada.

reno original reno default reno tunned

¿La imagen del medio es el resultado obtenido por GREYCstoration con los parámetros de defecto? No esta mal para empezar. De todas formas aún queda algo de pixelado así como ruido. Tambien sigue habiendo la falta de definición, pero eso no puede ser solucionado con GREYCstoration (realiza solamente suavizado local, no realce de bordes). Y como la imagen esta falta de definición, la geometría de su estructura debe ser, también, relativamente suave. Este concepto se puede introducir en GREYCstoration aumentando el parámetro alfa (fijalo a 1 en vez de 0.8) y sigma (fijalo a 1.5 en vez de 0.8), según lo descrito arriba. Finalmente, es necesario suavizar mas, así que aumentamos el parámetro dt (fijalo a 120 en vez del valor predeterminado 80). La imagen derecha muestra el resultado obtenido con greycstoration -restore reno.png -sigma 1.5 – dt 120 -alfa 1.

Y aquí está una muestra de la original y la restaurada:

reno

He aquí otro ejemplo con una imagen que contiene ruido de “escaner”. Los parámetros por defecto no dan buen resultado en este caso (imagen del medio), puesto que el ruido considerado tiene un patrón relativamente grande. Fijate que en esta imagen las estructuras son bastante simples, la imagen se compone básicamente de colores planos y de contornos rectos.

moule orig moule default moule tuned
moule

En este caso, podemos utilizar una anisotropia muy baja (por eso marqué a=0.1), y como los parámetros por defecto resultan en una imagen poco suavizada, aplicamos dos iteraciones, cada una con una intensidad de 100: greycstoration -restore moule_original.png -a 0.1 -dt 100 -iter 2 -o moule_tuned.png.

::Image inpainting

La función inpainting intentará dibujar partes que falta de una foto. ¡Especialmente útil para quitar y para ocultar partes no deseadas!. Para decirle a GREYCstoration a qué zonas quisieras aplicar el inpaint haz una imagen “mascara” (una imagen en blanco y negro donde los pixeles blancos denotan las partes no deseadas). Asi seria con el Gimp:

  • Abre la imagen.
  • Crea una nueva capa transparente del diálogo de capas (CTRL+L)
  • Seleccionan el color blanco y dibuja sobre las partes no deseadas con el lápiz.
  • Suprime la capa que contiene la imagen original y añade una de color negro.
  • Mueve la capa negra al fondo y aplana la imagen.
  • Guardala como mask.png

Entonces ejecuta en la línea de comando: GREYCstoration_XXX_YYY -inpaint mi_imagen.jpg -m mask.jpg, se abrira una ventana de previsualización mostrando el proceso del algoritmo en tiempo real. Cuando creas que el retoque es suficientemente bueno cierra la ventana: se abrirá de nuevo y mostrara instrucciones en la ventana del terminal. (gracias a Romain Behar por esta descripción corta).

::Reescalado de la imagen.

El reescalado es completamente funcional, pero la documentación falta… .

Un pensamiento en “GREYCstoration – Documentación.

  1. Pingback: The Lost Blog :: Como eliminar el ruido de tus fotos :: February :: 2009

Los comentarios están cerrados.