lunes, 22 de noviembre de 2010

Deformaciones en Imágenes usando 2D - Free Form Deformation

En este trabajo se hace uso de la técnica 2D-FFD (Free-Form Deformation) para generar deformaciones en
una imagen, las que pueden ser adaptadas para diversas aplicaciones. Principalmente analizamos el impacto que puede tener en aplicaciones, donde existen limitaciones para especificar el resultado final de la deformación en una imagen, las cuales optan mayormente por usar deformaciones predefinidas. Se analiza el caso de las restricciones que existen en el proceso de simular resultados de cirugía plástica usando deformaciones preestablecidas basadas en superficies producto tensorial de Bézier.

1.- Motivación


La principal  motivación de este trabajo es la búsqueda de algún algoritmo de procesamiento de imágenes digitales que nos permita transformar el rostro A en el rostro B. Estos rostros aparentemente son imágenes iguales, pero si analizamos detenidamente nos daremos cuenta que existen pequeños detalles que de cierta manera hacen que el rostro B tenga rasgos mas finos que el rostro A. Esto debido que se le aplicó una transformación warping con el fin de embellecer el rostro. Esta imagen fue tomada del paper: "Data-Driven Enhancement of Facial Attractiveness" (Cohen-Or, et al 2008).
Rostro A                                                  Rostro B 

En la siguiente imagen podemos ver el proceso, de manera general, que se realiza para obtener los resultados deseados.

Proceso de la deformación de una imagen mediante puntos característicos.


2.- Introducción

Existen diversos métodos para especificar una función de deformación, popularmente llamada función de mapeo (warping), la cual mapea las posiciones de los puntos (pixeles) de la imagen inicial (imagen sin deformar) en la imagen objetivo (imagen deformada).

En Simulación de Cirugía Plástica, nosotros usamos una función de mapeo, basada en la manipulación de superficies producto tensorial de Bézier, con bases de grado 2 (usando tres puntos de control, por cada curva de la superficie). Cuando se desea generar deformaciones que simulen resultados de cirugía plástica (específicamente estética) tales como (Rinoplastia, liposucción, etc), el usuario debe especificar una superficie, la cual tiene una configuración predefinida de los puntos de control, para generar dicha deformación, así como se muestran las figuras 1, 2 y generan resultados como las mostradas en la figura 3.

Figura 1: Malla sin deformar - Malla deformada(reducción y aumento Horizontal y Vertical).

Figura 2: Malla sin deformar - Malla deformada (reducciones y aumentos oblicuos).

Figura 3: Ejemplo de rinoplastía de la aplicación: simulación de cirugía plástica ).



Lamentablemente las forma de trabajo utilizado en Simulación de Cirugía Plástica no puede ser aplicado para nuestro propósito ya que tendríamos que predefinir muchas deformaciones sobre una misma imagen. Una solución a esto es definir puntos origen (Pi) y destino (Qi), los cuales guiarán la deformación; para ello utilizaremos 2D-Free Form Deformation (2D-FFD).
3.- 2D-FFD (Free Form Deformation)
La técnica de 2D-FFD, propuesto por Seungyong Lee(S. Lee and Wolberg, 1995), es usada para deformar una placa rectangular en el plano-xy, por la manipulación de una lattice rectangular superpuesta sobre ella. Los autores proponen el producto tensorial de B-spline cubico como la función de deformación de FFD, ya que una B-spline tiene un control local. Esta propiedad hace posible manipular localmente la lattice cuando un punto en la placa es movido a una posición especificada. Por consiguiente la nueva lattice que produce este movimiento puede ser eficientemente calculada aun cuando el número de puntos de control sea muy grande.




S. Lee, K.-Y. Chwa, S. S. and Wolberg, G. (1995). Image metamorphosis using snakes and free -form deformations. Computer Graphics (Proc. SIGGRAPH ’95)


3.1 Manipulación de 2D-FFD por el movimiento de un punto

Proceso de Deformación






Sea W(p) = q entonces:
Gráficamente podemos representar la malla inicial de esta manera:







Con esta solución, los puntos de control cercanos a p obtienen más grandes desplazamiento que los otros porque w(p) depende de la distancia entre los kl-th puntos de control y el punto p. La deformación w genera que el efecto del movimiento disminuya suavemente


3.2 Manipulación de 2D-FFD por el movimiento de mas de un punto


Proceso de Deformación






Gráficamente podemos representar la malla inicial de esta manera:






 4.- Resultados:












domingo, 22 de agosto de 2010

Proyecto: Simulación de Cirugía Plástica basada en coordenas polares

INTRODUCCIÓN


Hemos buscado una aplicación interesante para aplicar lo aprendido en esta primera parte del curso, despues de un debate realizado en el grupo, llegamos a la conclusión de realizar una aplicación que permita simular el resultado de una cirugía plástica, para ello nuestro fin principal es crear una técnica que permita esta simulación, para cirugías realizadas en distintas partes del cuerpo, de esta manera nos permitira simular el resultado de rinoplastía, liposucción, etc.

Lo que nosotos buscamos es mejorar algunas técnicas agregándole otras mas conocidas, vistas en clase (y mostrados en este blog) como son los filtros de Suavizamiento - Filtros Estadísticos.

La simulación se basa principalmente en la deformación de imágenes, para lo cual aplicamos la técnica conocida como "Warping", esta técnica es muy conocida y aplicada en diferentes campos del procesamiento.

Por ejemplo en el Procesamiento de sonido, se utiliza para la combinación, deformación de sonidos, un caso muy específico se da en el reconocimiento del habla, donde para su pre-procesamiento se aplica la técnica del Warping.

Warping tambien es aplicado en el procesamiento de imagenes, en el cual se aplica esta técnica para la deformación o correción de imágenes, una aplicación muy interesante en este campo es el que veremos en este proyecto.

Además de todas estas aplicaciones, la técnica del warping es tan aplicada en la ciencia de la computación, que en los últimos años se esta aplicando para la recreación de movimiento, para obtener videos a partir de haber aplicado warping en una imágen. Entonces esto es una clara aplicación del Warping en el procesamiento de video.

Nosotros hemos realizado esta aplicación en Java, bajo la plataforma de NetBeans 6.5.

TRABAJOS PREVIOS EN WARPING

En la busqueda de información para nuestro proyecto, encontramos algunos software privativos que aplican la técnica del warping. Los diferentes software encontrados aplican de manera diferente esta técnica, esto dependerá del tipo de aplicación de que se requiera trabajar.

Por ejemplo el software "Fun Motion" aplica el warping para fusionar imagenes, a partir de dos imágenes, en las cuales se ubicaron puntos de control, los caules serán los que coincidiran en la imagen fusionada.



Otro software en el que se aplica el warping es el VPSS (Virtual Plastic Surgery Software), que es uno de los software en el que nos inspiramos para realizar este proyecto.



PRIMEROS INTENTOS

Para lograr este tipo de simulación lo primero que se intento es repintar los pixeles que son "innecesarios", con pixeles vecinos. Pero obtuvimos un gran problema el cual era la pérdida de mucho detalle en imágenes, no era una verdadera cirugía.

La solución para resolver este problema fue utilizar Warping + Filtro, el filtro fue creado por nosotros para obtener mejores resultados conjuntamente con el warping. Este filtro fue creado en base a los filtros estadísticos basicamente la mediana, la cual fue mejorada para obtener los ojetivos propuestos.

WARPING

Se trata de una técnica en la que el objetivo es conseguir deformar la imgen, para lo cual cambia la disposición de los píxeles de una imagen.

Así, el warping se puede clasificar como una transformación geométrica no lineal, en la cual se realiza una transformación no lineal entre las coordenadas de la fuente y el destino. La ecuación general del warping es la siguiente:


Donde (u,v) son las coordenadas de IO(), y (x,y) son las coordenadas de IF. Y donde las funciones de proyección (encargadas de determinar la transformación espacial) son:


COMO APLICAR WARPING EN IMÁGENES

  • Para cada pixel (i,j) de la imagen (normalizar)
x=2*i/width-1
y=2*j/height-1
  • Obtener coordenadas polares(ri,phi)
ri= sqrt(x^2+y^2)
phi= atan2(y,x)
  • Transformación Inversa(Para realizar el warping)
r=ri^p p=0.9
x=r*cos(phi)
y=r*sin(phi)

FUNCIONES PARA REALIZAR WARPING

r=r^p p=0.9



PASOS PARA LA IMPLEMENTACIÓN

1. Obtener la matriz de la imagen. (R,G,B)

2. Obtener una submatriz (para procesar).

3. Aplicar una función warping a la submatriz.

r=r^p p=0.9

4. Aplicar un filtro para mejorar la submatriz.

5. Reemplazar la submatriz mejorada en la imagen.

TRABAJOS FUTUROS
  • Encontrar una técnica que permita una mejor calidad en la imagen resultante.
  • Crear un procedimiento para que el Warping se aplicado de manera continúa.
  • Buscar mas técnicas para la simulación de cirugía plástica, como para la eliminación de arrugas.
RESULTADOS OBTENIDOS CON LA APLICACIÓN

Aquí mostramos nuestros principales resultados:


  • Rinoplastía:

  • Aumento de Medidas (Senos):

  • Reducción de Papada:

  • Aumento de Masa Muscular:


  • Aumento de Masa Muscular (II):

  • Aumento de medidas (Senos y Caderas):


  • Aumento de Gluteos y Reducción de Cintura:



Para poder descargar el informe del proyecto (paper) hacer clic aqui *

* Esperen 20 segundos en la página que se abre para poder descargar...