domingo, 7 de junio de 2009

Laboratorio 1: Operaciones Básicas en Imágenes

En el Procesamiento Digital de Imágenes, iniciamos con unas Operaciones Básicas dentro de las cuales tenemos Operaciones Puntuales y Operaciones de Vecindad.

Operaciones Puntuales: Llamadas así debido a que se aplica una función f a cada punto (pixel) de la imagen, es decir el valor inicial del pixel es cambiado y el nuevo valor se obtiene de q(x,y) = f(p(x,y))

Imagen Original con la que trabajaremos:
camionetas.jpg camionetas picture by Skarleth16
  • Operador Identidad: La función q=p, por lo que obtendríamos la misma imagen.
  • Operador Inverso o Negativo: la funcion q=255-p, la imagen de salida es el inverso de la imagen de entrada.
Photobucket
  • Operador Umbral: Ahora tenemos un umbral u, donde:
q=0 para p <= u; y
q=255 para p > u;

La imagen de salida solo es de 2 tonalidades:
Photobucket

  • Operador Intervalo de Umbral Binario: Ahora contamos con dos umbrales u1 y u2, y la funcion q estaria dada por:
q= 255 para p <= u1 || p >= u2; y
q= 0 para u1 < p < u2;

Con u1= 40 y u2=190 obtenemos una imagen donde los valores fuera de dicho intervalo toman el valor 255 y los que están dentro toman valor 0, así:

Photobucket

  • Operador Intervalo de Umbral Binario Invertido: La función q sería lo contrario que en el operador anterior, es decir los valores que están dentro del intervalo tomarían valor 255:
q= 0 para p <= u1 || p >= u2; y
q= 255 para u1 < p < u2;

Probamos la función con u1=40 y u2=190 y obtenemos:
Photobucket

  • Operador Umbral de Escala de Grises: Sean dos umbrales u1 y u2, obtenemos una imagen de salida con los valores de nivel de gris que están en ese intervalo, y 0 para el resto, entonces la función q sería:
q= 255 para p <= u1 || p >= u2; y
q= p para u1 < p < u2;

Con u1= 40 y u2=190 obtenemos:
Photobucket

  • Operador Umbral de Escala de Grises Invertido: Los valores que tenemos en el intervalo u1 y u2 ahora tomarán su valor inverso, y los valores que están fuera tomarán valor 0, entonces la función q quedaría de la siguiente forma:
q= 255 para p <= u1 || p >= u2; y
q= 255-p para u1 < p < u2;

Probamos nuevamente con u1=40 y u2=190 y notamos que se invirtieron los valores dentro del intervalo.
Photobucket

  • Operador de Extensión: Tenemos los umbrales u1 y u2, la imagen de salida contiene a los valores de grises que entán en este intervalo, y además elimina los valores de grises que se encuentran fuera de se intervalo, la función q se denota por:

q= 255 para p <= u1 || p >= u2; y
q= (p-u1)*255/(u2-u1) ,para u1< p

Con u1=40 y u2=190 tenemos la siguiente imagen:

Photobucket

  • Operador Reducción del Nivel de Gris: Con este operador manejamos la cantidad de nivel de grises que queremos que tenga la imagen de salida, obviamente se serán pocos los nieveles. Entonces si queremos tener n niveles de grises manejaremos n umbrales u1, u2,...,un.
Y definimos a q de la siguiente manera:

q=0 para p =< u1
q=q1 para u1 < p <= u2
q=q2 para u2 < p <= u3
.....
q=qn para un < p <= 255

Por ejemplo si queremos tener 8 niveles de grises: definimos los umbrales: u1=15; u2 =50; u3 =75; u4 =92; u5 =130; u6 =170; u7 =195; u8 =225;

y definimos q:
q=0 para p =< u1
q=30 para u1 < p <= u2
q=63 para u2 < p <= u3
q=85 para u3 < p <= u4
q=115 para u4 < p <= u5
q=150 para u5 < p <= u6
q=180 para u6 < p <= u7
q=210 para u7 < p <= u8
q=240 para u8 < p <= 255

con estos valores obtenemos la siguiente imagen:

Photobucket


*Operadores Puntuales con 2 Imágenes:

Para estos operadores, las 2 imágenes deben ser de la misma dimension mxn, para la imagen de salida c se utiliza la información de las 2 imágenes en el mismo punto.

Se define como:
c(x,y) = f D(a(x,y), b(x,y)) , donde f puede ser una suma, sustracción, multiplicación, división, etc. A continuación veremos la suma y la sustracción.

Imágenes con las que trabajaremos:

osito2.jpg osito1 image by Skarleth16 Imagen 1
osito2.jpg osito1 image by Skarleth16 Imagen 2


-Adición:
Estaría dada de la siguiente manera:
c(x,y) = (a(x,y) + b(x,y) )/k , donde k es igual al número de imagenes, en este caso k=2;

Si sumamos las 2 imágenes anteriores, tenemos:

Photobucket

-Sustracción:
Estaría dada de la siguiente manera:
c(x,y) = (a(x,y) - b(x,y) )*k ; k=2.

Aplicándolo en las 2 imagenes originales tenemos:

Photobucket


Operaciones de Vecindad:
En la imagen de salida de este operador, el nuevo pixel se determina por la combinacion los valores de los pixeles vecinos, y para esto se utiliza una máscara, que viene a ser una matriz que contiene valores de acuerdo al tipo de vecindad que se use. Entonces el nuevo pixel se determina por la suma ponderada de los 8 vecinos con la máscara definida.

Por ejemplo, usaremos una vecindad de E8(p), y definimos la máscara:
1 2 1
0 0 0
-1 -2 -1

la aplicamos a la imagen original de las camionetas y obtenemos:
Photobucket

1 comentario:

  1. Buenas tardes, disculpa tendras un codigo de matlab que se pueda seguir?

    ResponderEliminar