viernes, 19 de junio de 2009

Mejora de Imágenes en el Dominio Espacial

El concepto de mejora de imágenes en el dominio espacial se refiere al conjunto de pixeles que componen una imagen, y los métodos del dominio espacial son procedimientos que operan directamente sobre los pixeles. Las funciones de procesamiento de imágenes en el dominio espacial se puede expresar como:


g(x,y) = T[f(x,y)]

donde f(x,y) es la imagen de entrada, g(x,y) es la imagen procesada y T es un operador que opera sobre f, definido en algún entorno (x,y).

  1. Transformaciones Básicas en Nivel de Grises:

Estas transformaciones lo que hacen es simplemente es amentar o disminuir el contraste de tal manera que nos permita apreciar detalles que no eran visibles a simple vista en la imágen original. Las causas que pueden generar una imagen de bajo contraste pueden ser: una deficiente iluminación, falta de un rango dinámico en el sensor el cual capta la imagen o una incorrecta apertura de la lente. Dentro de las tranformaciones básicas en escala de grises tenemos las siguientes:


  • Transformaciones Logarítmicas: Este tipo de transformaciones es usada cuando el rango dinámico de una imagen procesada excede ampliamente la capacidad del dispositivo de presentación, en cuyo caso sólo las partes más brillantes de la imagen aparecera en pantalla. Esta transformación se lleva a cabo a través de la siguiente fórmula:
Sk = C*log(1+rk)

donde Sk es la imagen de salida, rk es el k-ésimo nivel de gris de la imagen de entrada y C es una constante la cual regulará el contraste de la imagen.




  • Tranforación exponencial: Esta función al igual que la logarítmica nos permite manipular el contraste de la imagen. Sin embargo presenta una problema el cual se debe de tener en cuenta al momento de su implementación, el problema que presenta es de desbordamiento de nivel de grises en la imagen resultante debido al exponente f de la funcion de transformación. La transformación se lleva a cabo a través de la siguiente fórmula:

Sk = C*rk^f ó Sk = C*(rk+e)^f




  • Recorte de Plano de Bits: Lo que hace esta transformación es descartar sierta contribución que realizan bits específicos. Como nosotros trabajamos con imagenes de 8 bits (es decir un rango de 0 a 255 niveles de grises) podemos eliminar una de estas 8 capas, transformando a cero capas que no son seleccionadas y manteniendo la capa selecionada. Para el ejemplo eliminamos el sexto bit o capa.


2. Procesamiento de Histograma: El histograma de una imagen nos proporciona una información muy útil como es la distribución estadística de la intensidad de los pixeles, la cual nos podría servir para mejorar la imagen.






  • Ecualización de Histograma: La ecualización de las imágenes se lleva cabo a través del cálculo previo de la función del histograma h(rk) de la siguiente manera: h(rk) = nk, donde nk es la cantidad de nilvel de pixeles de la del k-ésimo nivel de gris de la imagen entrante (rk); Pr(rk) = nk/n, donde n es el número de pixeles de la imagen y Pr es la probabilidad de k-ésimo pixel; y la función de transferencia T(rk) la cual varía de acuerdo a la aplicación. De esta manera podemos tener diversas funciones de transformación para ecualizar una imagen. Acontinuación mostaremos los resultados obtenidos aplicando las funciones de transformación Uniforme, Exponencial, Rayleigh e Hipercúbica mostrando para cada caso su histograma.

  • Función de transformación Uniforme: Cuya función de transferencia es :



  • Función de Transformación Exponencial: La fución de transformación esta dada por la siguiente ecuación:




  • Función de Transformación Rayleigh:La fución de transformación esta dada por la siguiente ecuación:


  • Función de Transformación Hipercúbica:La fución de transformación esta dada por la siguiente ecuación:




Expansión Del Histograma: Esta técnica nos permite expandir los niveles de grises de la imagen y ello se ve refejado en los histogramas, tanto de la himagen a procesar así como como en la imagen resultante. La función de transformación para la expación esta dada por:





Contracción del Histograma: El redultado obtenido con esta técnica, más se ve reflejado en el histograma de la imagen resultante que en la imagen misma. La función de transformación para la contracción esta dada por:





Desplazamiento del histograma: Esta técnica nos permite aclarar u oscurecer la imagen de entrada através de una factor de despla samiento aplicada a la imagen de entrada. La función de transformación para el desplazamiento esta dada por:





Matching del Histograma: A veces no se requiere de una distribucion uniforme del histograma, sino que se requiere especificar la forma que el histograma de una imagen debe tener, a esta tecnica se la denomina Matching o Especificacion del Histograma.


domingo, 14 de junio de 2009

Transformaciones Geométricas

En este Laboratorio las transformaciones geométricas, realizan cambios sobre la imagen, pero ya no sobre la intensidad de sus pixeles, sino en sobre sus posiciones.

  1. Interpolación: La interpolación es una técnica que se aplica en las imágenes para poder hallar los puntos vacíos producidos cuando por ejemplo se escala o rota una imagen, o cualquier otro proceso en cual exista perdida de información, existen varios tipos de interpolación, las cuales difieren en el núcleo(función) que se aplica para ser interpoladas, en nuestro caso para el procesamiento de imágenes este núcleo(función) lo aplicamos a la distancia que existe entre el pixel que queremos hallar y cada uno de sus respectivos vecinos. Para este laboratorio utilizaremos 3 tipos de interpolación, en los cuales obtenemos imágenes al doble de resolución que las imágenes originales.
Importante: Hacer clic en las imágenes para poder ver con mejor detalle y resolución los resultados obtenidos.

  • Interpolación por el Vecino más Cercano: En este tipo de interpolación el valor que tomara el pixel, que queremos interpolar, estará en función de las distancias a sus 4 vecinos, tomando como valor el pixel más cercano a él. El siguiente es un ejemplo claro de la aplicación de este resultado:


  • Interpolación Bilineal: Este tipo de interpolación ajusta mejor los valores de las intensidades de los pixeles porque cada pixel vecino, dependiendo de la distancia que tengan al pixel que queremos hallar, aportan con un factor a la intensidad del pixel resultante.


  • Interpolación Bicúbica: En esta interpolación se logra definir mejor la intensidad de un pixel, ya no en función de 4 pixeles sino de 16 pixeles, lo cual provoca que tengamos una mejor resolución en la imagen resultante. Este tipo de interpolación es muy conocida, porque es aplicado por muchos software de diseño gráfico, tales como el Adobe Photoshop, Corel Draw, entre otros.


2. Transformaciones Elementales:
  • Traslación: La imagen se trasladó con Tx= 200 Ty=100.
  • Rotación: La imagen se rotó 55º con respecto a su centro.
  • Escalación: La imagen se escaló con Ex= 1, Ey=2.


3. Generalización de las Transformaciones:

  • Transformada Afin: En esta transformada se aplican todas las transformaciones elementales, es decir traslación, rotación, escalación. En nuesro ejemplo los valores ingresados son los siguientes: jd=0.5 id=1.09 Sx=15 Sy=1.5 Ángulo: -95
  • Registro entre Imágenes:

sábado, 6 de junio de 2009

Operaciones Puntuales

Este programa ha sido desarrollado en Java, bajo la IDE NetBeans 6.1, y aplica las principales operaciones puntuales en imágenes para obtener un mejoramiento de las mismas, de tal manera que puedan ser útiles para diversas áreas, como por ejemplo: la medicina, la astronomía, la biología, la minería, la electronica entre otras mas. Las imágenes son convertidas a escales de grises, en un rango de 0 a 255.

Las operaciones puntuales desarrolladas son las siguientes:
  • Operador Identidad: Este operador nos sirve para poder generar una imagen de salida que es igual a la imagen de entrada, pero en escala de grises. En este ejemplo mostramos una imagen de una neurona en escala de grises.
  • Operador Inverso (Negativo): Este tipo de operador nos devuelve una imagen con los detalles que no son visibles en la imagen original, es decir nos devuelve una imagen que es el complemento en escala de grises de la imagen original. En este ejemplo podemos observar como algunas venas son vistas con mas detalle en la imagen resultante.
  • Operador Umbral: El operador Umbral nos permite establecer un límite(umbral) el cual establecerá que todas las intensidades de pixeles menores a ese umbral se conviertan en 0(negro) y las intensidades mayores a ese umbral se convertiran en 255(blanco). En este ejemplo mostramos la operación umbral realizada por nuestro programa, aplicada a la radiografía de una cabeza de un paciente, que luego de aplicar el umbral=150 podemos observar la desproporción que existe entre los transversales del craneo con la cara, esto es justamente lo que se diagnostico a este paciente.
  • Operador Umbral Binario: Este tipo de operador nos permite aplicar 2 umbrales, umbral1= 40 y umbral2=190, esto quiere decir que las intensidades de pixeles que sean menor a 40 o mayor a 190 se volverán 255(blanco) y los que esten dentro del rango de los umbrales se volveran 0(negro). En este ejemplo podemos observar como a la imagen inicial se le extrae solo la mano para poder apreciarla mejor.
  • Operador Umbral Binario Invertido:En esta operación tambien aplicamos 2 umbrales, umbral1= 40 y umbral2=190, con la diferencia que ahora las intensidades de pixeles que sean menor a 40 o mayor a 190 se volverán 0(negro) y los que esten dentro del rango de los umbrales se volveran 25(blanco). En este caso el resultado es una mano la cual esta sobresaltada gracias al fondo negro(0).
  • Operador Umbral de Escala de Grises:En esta operación aplicamos 2 umbrales, umbral1= 10 y umbral2=100, para que los pixeles que sean menor a 10 o mayor a 100 se volverán 255(blanco) y los que esten dentro del rango de los umbrales se quedarán con la misma intensidad en la que se encuentran en la imagen original. En este ejemplo lo que buscamos es resaltar los detalles de la casa que se encuentra en la imagen.

  • Operador Umbral de Escala de Grises Invertido: Esta operación es parecida a la anterior con 2 umbrales, umbral1= 10 y umbral2=255, pero con la diferencia que los pixeles que sean menor a 10 o mayor a 255 se volverán 255(blanco), y las intensidades de los pixeles que se encuentren dentro de los umbrales serán convertidas en sus respectivos complementos con respecto a 255. En este ejemplo la imagen ha sido capturada por el observatorio de SONNEBERG de ALEMANIA, en esta imagen lo que se busca es detectar objetos variables en imagenes astronómicas (asteroides, satelites, meteoritos,etc.), y este operador nos sirve para mostrar mas detalles en las imagenes para detectar estos objetos, para luego ser procesadas.
  • Operador Extensión: Para este tipo de operador tambien se utilizan 2 umbrales, y se trabaja de la misma forma que en el operador umbral binario invertido, es decir suprimir todos los pixeles que se encuentren fuera del rango de los umbrales, la diferencia que cuando las intensidades de los pixeles se encuentran dentro de los umbrales entonces se aplica la siguiente función:
(p-u1)*255/u2-u1

En donde p es el valor de la intensidad del pixel inicial, u1 y u2 son los umbrales. Para este ejemplo se utilizaron los umbrales u1=10, u2=210.

  • Operador Reducción de Nivel de Gris: En esta operación lo que se busca es reducir los niveles grises que tiene una imagen, como sabemos inicialmente tenemos 256 niveles de gris (0-255), entonces esta operación nos permite definir que cantidad de niveles de gris queremos tener en nuestra imagen resultante. En este ejemplo nuestra imagen resultante solo tiene 5 niveles de gris debido a que se define un incremeto de 50 en un rango de 50-200. Siendo q:
q1:0
q2:(50+100)/2
q3:(100+150)/2
q4:(150+200)/2
q5:255


  • Transformaciones Punto a Punto: Este tipo de transformación utiliza la información contenida en la misma lozalización (posición de los pixeles) de dos imagenes de entrada A y B para crear una nueva imagen C.
Suma: Esta técnica se usa para reducir el ruido en las imagenes y para producir el efecto de movimiento entre imagenes iguales que se encuentran en posiciones diferentes. En este caso las imagenes provienen de una radiografias seriadas Gastroduodenal de un órgano en movimiento, las cuales pretenden comprobar la persistencia de una imagen sospechosa. Para detectar el movimiento de dichas imagenes aplicamos la técnica de la Suma de Imágenes, donde podemos apreciar claramente dicho movimiento.


Resta: La resta de imágenes se aplica de la misma forma que la suma, esta técnica es muy útil para detectar el cambio producido en dos imágenes que han sido captadas en dos instantes de tiempo diferentes. En este caso en nuestro ejemplo podemos darnos cuenta que el resultador de la nueva imagen es una imagen que representa el cambio entre la primera y segunda imagen.

  • Operaciones de Vecindad: Las operaciones de vecindad nos permiten mejorar el contraste de una imagen que no era muy buena; además de permitirnos definir filtros para reducir el ruido que puedan presentar las imágenes, utilizando para ello una máscara. En este caso utilizamos una máscara de 3x3.
Máscara 1: La máscara 1 aplicada a esta imagen es la siguiente:

M1[0][0]=1 M1[0][1]=2 M1[0][2]=1
M1[1][0]=0 M1[1][1]=0 M1[1][2]=0
M1[2][0]=-1 M1[2][1]=-2 M1[2][2]=-1

Esta máscara se convoluciona por todos los pixeles de la imagen original obteniendo los siguientes resultados:

Máscara 2: La máscara 2 aplicada a esta imagen es la siguiente:

M2[0][0]= -0.1667 M2[0][1]=-0.6667 M2[0][2]=-0.1667
M2[1][0]=-0.6667 M2[1][1]=4.3333 M2[1][2]=-0.6667
M2[2][0]=-0.1667 M2[2][1]=-0.6667 M2[2][2]=-0.1667

Con esta máscara se obtiene un mejor contraste que la imagen original