cursoimagenes

51
Fundamentos de Procesamiento de Imágenes Evento: CONATEC 2002 Sede: INSTITUTO TECNOLÓGICO DE CIUDAD MADERO Instructor: M. C. José Jaime Esqueda Elizondo Universidad Autónoma de Baja California, Unidad Tijuana Noviembre de 2002

Upload: darwin-vargas

Post on 01-Jul-2015

58 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: cursoimagenes

Fundamentos de Procesamiento de Imágenes

Evento:

CONATEC 2002

Sede:

INSTITUTO TECNOLÓGICO DE CIUDAD MADERO

Instructor: M. C. José Jaime Esqueda Elizondo

Universidad Autónoma de Baja California, Unidad Tijuana

Noviembre de 2002

Page 2: cursoimagenes

M. en C. José Jaime Esqueda Elizondo

1

Dedicatorias y agradecimientos A mi esposa, mis padres y a ese maravilloso ser que está por venir, son el motor de mi vida. A mis alumnos de la UABC por inspirarme y alentarme a seguir. Al ITCM y al IPN por la formación que me dieron. Al Dr. Juan García López, guía, maestro y amigo. Agradezco de sobremanera la ayuda de mis alumnos: Pedro Fernández Robledo, Mario A. Velarde C., Nelson Hernández Cons, Gisell Haydee Arias, Eduardo Hernández Acosta, Pilar Ivette Sánchez Benítez, Samuel García Alvarado, Julio César Trizón. Asimismo a José Luis Vargas Cruz y a Jorge Espinosa Caballero, que colaboraron con el Apéndice A.

Page 3: cursoimagenes

M. en C. José Jaime Esqueda Elizondo

2

Indice I. Fundamentos de procesamiento de imágenes digitales ................................................... 5 I. Fundamentos de procesamiento de imágenes digitales ................................................... 5

I.1 Definiciones ............................................................................................................... 5 Color................................................................................................................................ 6 I.2 Relaciones entre píxeles............................................................................................. 7

I.2.1 Conectividad ....................................................................................................... 8 I.2.2 Distancia ............................................................................................................. 8

I.3 Ruido en imágenes..................................................................................................... 9 I.4 Procesamiento espacial .............................................................................................. 9

I.4.1 Operaciones aritméticas, lógicas y transformaciones geométricas................... 10 I.4.2 Operaciones lógicas .......................................................................................... 13 I.4.3 Transformaciones geométricas ......................................................................... 13

I.4.3.1 Interpolación .............................................................................................. 13 I.4.3.2 Amplificación/Reducción de imágenes ..................................................... 14 I.4.3.3 Traslación................................................................................................... 15 I.4.3.4 Convolución bidimensional ....................................................................... 16 I.4.3.5 Correlación................................................................................................. 18

I.5 Procesamiento en el dominio de la frecuencia......................................................... 19 I.5.1 Series de Fourier ............................................................................................... 19 I.5.2 Transformada de Fourier................................................................................... 20

I.5.2.1 Aplicaciones de la transformada de Fourier .............................................. 21 I.5.3 Transformada discreta coseno........................................................................... 23

I.6 Procesamiento de imágenes básico.......................................................................... 24 I.6.1 Binarización de una imagen.............................................................................. 24 I.6.2 Manipulación del contraste ............................................................................... 25 I.6.3 Modificación del contraste................................................................................ 27 I.6.4 Modificación del histograma ............................................................................ 28 I.6.5 Filtrado de una imagen...................................................................................... 29

I.6.5.1 Filtros lineales espaciales........................................................................... 29 I.6.5.2 Filtro pasa bajas espacial ........................................................................... 29 I.6.5.3 Filtrado por la mediana .............................................................................. 30 I.6.5.4 Realce de bordes ........................................................................................ 31 I.6.5.5 Detección de contornos.............................................................................. 32

I.6.5.5.1 Técnicas basadas en el gradiente ........................................................ 32 II. Manejo de las imágenes en Matlab............................................................................... 36

II.1 Clases de almacenamiento usadas en el toolbox .................................................... 36 II.2 Conversiones entre tipos de imágenes.................................................................... 36

II.2.1 Despliegue de imágenes indexadas ................................................................. 37 II.2.2 Despliegue de imágenes de intensidad. ........................................................... 38 II.2.3 Despliegue de imágenes binarias..................................................................... 38 II.2.4 Despliegue de imágenes RGB ......................................................................... 38 II.2. 5 Tipos de imágenes en Matlab ......................................................................... 38

II.2.5.1 Imágenes indexadas.................................................................................. 38 II.2.5.2 Imágenes de intensidad............................................................................. 39 II.2.5.3 Imágenes binarias ..................................................................................... 40

Page 4: cursoimagenes

M. en C. José Jaime Esqueda Elizondo

3

II.2.5.4 Imágenes RBG.......................................................................................... 40 II.2.6 Selección de una sección de imágenes en Matlab ........................................... 41

III. Ejercicios..................................................................................................................... 42 Ejercicio 1. Formación de imágenes y mapas de color. ............................................ 42 Ejercicio 2. Cargar y desplegar una imagen.............................................................. 42 Ejercicio 3.Verificar el almacenamiento de la imagen cargada en la memoria. ....... 42 Ejercicio 4. Obtención de el histograma de una imagen. .......................................... 42 Ejercicio 5. Amplificación/Reducción de imágenes ................................................. 42 Ejercicio 6 Rotación de una imagen.......................................................................... 43 Ejercicio 7. Binarización de imágenes ...................................................................... 44 Ejercicio 8. Operaciones aritméticas con imágenes. ................................................. 44 Ejercicio 9. Operaciones aritméticas con imágenes. ................................................. 44 Ejercicio 10. Generación de ruido y filtrado de imágenes. ....................................... 44 Ejercicio 11. Modificación del contraste y ecualización de una imágenes. .............. 44 Ejercicio 12. Detección de contornos........................................................................ 44 Ejercicio 13. Detección de características usando correlación. ................................ 44 Ejercicio 14. Compresión de imágenes usando la transformada discreta coseno. .... 45

Apéndice A. Formatos de Imágenes ................................................................................. 46 ¿Qué son los formatos gráficos? ............................................................................... 46 Formatos vectoriales ................................................................................................. 46 Formatos bitmap........................................................................................................ 46 Formatos de gráficos mas importantes...................................................................... 47

Bibliografía y Referencias................................................................................................. 50 Lista de Figuras Figura 1. Imagen de 16 píxeles ........................................................................................... 5 Figura 2. Espacio de colores RGB. ..................................................................................... 6 Figura 3. Vecindad N4(p). ................................................................................................... 7 Figura 4. Vecindad ND(p). ................................................................................................... 7 Figura 5. Distancia euclidiana para una imagen de 5 por 5. ............................................... 8 Figura 6. Distancia Manhattan para una imagen de 5 por 5................................................ 8 Figura 7. Distancia tablero de ajedrez. ................................................................................ 9 Figura 8. Diferentes tipos de ruido afectando a una imagen. ............................................ 10 Figura 9. Suma de dos imágenes....................................................................................... 10 Figura 10. Aumento del brillo de la imagen usando la suma de un escalar a cada píxel de la imagen, imagen original (izquierda) e imagen modificada (derecha)........................... 11 Figura 11. Resta de dos imágenes, imagen original (izquierda), imagen a restar (centro) y resultado (derecha). ........................................................................................................... 11 Figura 12. Resta de un escalar (50) a cada píxel de la imagen original (izquierda) ......... 11 Figura 13 Multiplicación de una imagen por si misma, imagen original (izquierda), imagen resultante (derecha). ............................................................................................. 12 Figura 14. Multiplicación de una imagen por un escalar, imagen original (izquierda), imagen resultante (derecha). ............................................................................................. 12 Figura 15. División de imágenes, se muestra la división de la imagen original (izquierda) entre el fondo (centro) dando como resultado la figura de la derecha. ............................. 13 Figura 16. Operaciones lógicas aplicadas a imágenes binarias......................................... 13 Figura 17. Imagen original ................................................................................................ 15

Page 5: cursoimagenes

M. en C. José Jaime Esqueda Elizondo

4

Figura 18. Amplificación de la figura 17 usando diferentes métodos de interpolación.... 15 Figura 19. Rotación de la imagen de la figura 17 usando diferentes métodos de interpolación...................................................................................................................... 16 Figura 20. Imagen ............................................................................................................. 17 Figura 21. Máscara de convolución. ................................................................................. 17 Figura 22. Máscara rotada para la convolución. ............................................................... 17 Figura 23. Convolución para obtener el valor de A(2,4) .................................................. 18 Figura 24. Inserción de ceros (zero padding) en los extremos.......................................... 18 Figura 25. Correlación de A con h. ................................................................................... 19 Figura 26. Formación de la señal cuadrada mediante la serie de Fourier. (a) cinco señales senoidales (términos); (b) suma de dos términos; (c) suma de tres términos; (d) suma de cuatro términos; (e) suma de cinco términos; (f) suma de veinte términos. ..................... 20 Figura 27. División en cuatro partes iguales de la imagen transformada (B) ................... 22 Figura 28. Inserción de ceros para obtener la matriz B aumentada (B’)........................... 23 Figura 29. Compresión de imágenes usando la TDC........................................................ 25 Fig. 30. Binarización de una imagen................................................................................. 25 Figura 31. Expansión del histograma de la imagen. ......................................................... 26 Figura 32. Modificación de contraste................................................................................ 27 Figura 33. Caso general..................................................................................................... 27 Figura 34. Vecindad de a y obtención de la mediana........................................................ 31 Figura 35. Realce de una imagen ...................................................................................... 31 Figura 36. Detección de contornos mediante la primera y segunda derivada................... 33 Figura 37. Máscaras para los operadores: Roberts, Prewitt, Sobel e Isotrópico. .............. 34 Figura 38. Máscaras utilizadas para el operador laplaciano.............................................. 34 Figura 39. Ejemplos de detección de contornos................................................................ 35 Figura 40. Imagen indexada .............................................................................................. 39 Figura 41 Imagen de intensidad. ....................................................................................... 40 Figura 42. Imagen binaria ................................................................................................. 40 Figura 43. Histograma obtenido de la imagen pout.tif...................................................... 43 Lista de Tablas Tabla I. Colores RGB.......................................................................................................... 6 Tabla II. Tipos de imágenes y clases numéricas ............................................................... 37 Tabla III. Comandos de conversión de imágenes ............................................................. 37 Tabla IV. Comandos informativos .................................................................................... 41

Page 6: cursoimagenes

M. en C. José Jaime Esqueda Elizondo

5

I. Fundamentos de procesamiento de imágenes digitales I.1 Definiciones Visión por computadora.- Consiste en la adquisición, procesamiento, clasificación y reconocimiento de imágenes digitales. Píxel.- Elemento básico de una imagen (picture element). Imagen.- Arreglo bidimensional de píxeles con diferente intensidad luminosa (escala de gris).

0 1 1 27 6 6 56 0 4 05 5 1 2

x

y

Figura 1. Imagen de 16 píxeles

Si la intensidad luminosa de cada píxel se representa por n bits, entonces existirán 2n escalas de gris diferentes. Matemáticamente, una imagen se representa por ),( yxfr = , donde r es la intensidad luminosa del píxel cuyas coordenadas son (x,y). Matemáticamente, un sistema para procesar imágenes se representa como [ ]),(),( yxfTyxg = . Color.- El color se forma mediante la combinación de los tres colores básicos rojo, azul y verde (en inglés RGB). A continuación se presentan algunas definiciones básicas para comprender los espacios de color: Brillo.- Indica si un área está más o menos iluminada. Tono.- Indica si un área parece similar al rojo, amarillo, verde o azul o a una proporción de ellos. Luminosidad.- Brillo de una zona respecto a otra zona blanca en la imagen. Croma.- Indica la coloración de un área respecto al brillo de un blanco de referencia. Para obtener una imagen a color deben transformarse primero los parámetros cromáticos en eléctricos y representar los colores, lo cual puede realizarse de diferentes maneras, dando lugar a diferentes espacios de colores o mapas de color. Espacio RGB.- se basa en la combinación de tres señales de luminancia cromática distinta: rojo, verde, azul (Red, Green, Blue). La forma más sencilla de obtener un color específico es determinar la cantidad de color rojo, verde y azul que se requiere combinar

Page 7: cursoimagenes

M. en C. José Jaime Esqueda Elizondo

6

para obtener el color deseado, ver la figura 2; para lo cual se realiza la suma aritmética de las componentes: X = R + G + B, gráficamente representada por un cubo.

Negro

Gris

BlancoCian

Verde Amarillo

Rojo

MagentaAzul

Figura 2. Espacio de colores RGB.

En la recta que une el origen con el valor máximo se encuentran ubicados los grises (escala de gris) debido a que sus tres componentes son iguales. Cuando una cámara adquiere una imagen a color, para cada píxel en color se tienen en realidad 3 componentes, una para cada uno de los colores básicos (rojo, verde y azul); la ganancia máxima para cada componente corresponde a la longitud de onda de los tres colores básicos. Color Un color puede definirse como la combinación de tres colores básicos: rojo, verde y azul, y expresarse mediante una tripleta de valores de 0 a 1 (R, G, B), donde R, G y B representan las intensidades de cada uno de los tres colores básicos rojo, verde y azul, respectivamente. En la tabla I se presentan ejemplos de colores definidos mediante estas tripletas. Tabla I. Colores RGB

Color R G B Blanco 1 1 1 Rojo 1 0 0

Amarillo 1 1 0 Verde 0 1 0

Turquesa 0 1 1 Gris 0.5 0.5 0.5

Rojo Oscuro 0.5 0 0 Azul 0 0 1

Aguamarina 0.5 1 0.83 Negro 0 0 0

Page 8: cursoimagenes

M. en C. José Jaime Esqueda Elizondo

7

Mapa de color El mapa de color es una matriz de n x 3, donde cada renglón es una tripleta de colores. El primer renglón corresponde al valor mínimo del eje de color y el último renglón al máximo. Al definir diferentes distribuciones de intensidad de los tres colores básicos, se crean diferentes mapas de color. Algunos de los mapas de color predeterminados en MATLAB son:

hsv, cool, hot, jet, gray, flag

Histograma de una imagen. El histograma de una imagen es una representación del número de píxeles de cierto nivel de gris en función de los niveles de gris. I.2 Relaciones entre píxeles Un píxel p con coordenadas (x,y) tiene cuatro vecinos horizontales y verticales, cuyas coordenadas son: (x+1,y), (x-1,y), (x,y-1), (x,y+1). A este conjunto de píxeles se llama vecindad 4 o 4 vecinos de p y se denota por N4(p), ver la figura 3. Nótese que para cada uno de estos píxeles hay una distancia de 1 de p y que en los bordes de la imagen algunos de estos píxeles quedarán fuera de la imagen.

(x-1,y)

(x,y) (x,y+1)

(x+1,y)

(x,y-1)

Figura 3. Vecindad N4(p).

Existen también 4 vecinos diagonales de p con coordenadas: (x+1,y+1), (x+1,y-1), (x-1,y-1), (x-1,y-1) y se les denota por ND(p), ver la figura 4. N4(p) y ND(p) juntos forman la vecindad 8 denotada por N8(p).

(x-1,y-1)

(x,y)

(x+1,y+1)

(x-1,y+1)

(x+1,y-1)

Figura 4. Vecindad ND(p).

Page 9: cursoimagenes

M. en C. José Jaime Esqueda Elizondo

8

I.2.1 Conectividad La conectividad es un concepto importante utilizado para establecer los límites de objetos en regiones dentro de una imagen. Para determinar si dos píxeles están conectados se determina si son adyacentes en algún sentido (ND(p), N4(p) por ejemplo) y si sus niveles de gris satisfacen un criterio de similaridad (por ejemplo si son iguales). Por ejemplo, en una imagen binaria con valores de 1 y 0, dos píxeles pueden ser vecinos N4(p), pero se dice que están conectados solo cuando tienen el mismo valor. I.2.2 Distancia La distancia o transformada de distancia proporciona una medición de la separación existente entre dos puntos dentro de una imagen. Dados tres píxeles, p, q y z, con coordenadas (x,y), (s,t) y (u,v), respectivamente, se puede definir una función de distancia D si se cumple:

( ) ( )( )qpsiqpDqpD ==≥ ,0,,0, ( ) ( )pqDqpD ,, =

( ) ( ) ( )zqDqpDzpD ,,, +≤ Las funciones de distancia comúnmente usadas son: distancia euclidiana, distancia Manhattan o de cuadra y distancia tablero de ajedrez. Distancia euclidiana entre p y q: ( ) ( ) ( )tysxqpDE −+−= 2, . En la figura 5 se muestra la distancia euclidiana para una imagen de 5 por 5.

8525852125

210125212585258

Figura 5. Distancia euclidiana para una imagen de 5 por 5. Distancia Manhattan: se toman solamente en cuenta los vecinos de orden 4, es decir:

tysxD −+−= En la figura 6 se muestra la distancia Manhattan de una imagen de 5 por 5.

4323432123210123212343234

Figura 6. Distancia Manhattan para una imagen de 5 por 5.

Page 10: cursoimagenes

M. en C. José Jaime Esqueda Elizondo

9

Distancia tablero de ajedrez: es similar a la distancia Manhattan, en donde se observa que los 4-vecinos están a una distancia unitaria del píxel central; si se desea que los 8-vecinos estén a la misma distancia se toma:

( ) ( )tysxMaxqpD −−= ,, En la figura 7 se muestra la distancia tablero de ajedrez.

2222221112210122111222222

Figura 7. Distancia tablero de ajedrez. I.3 Ruido en imágenes Todas las imágenes tienen cierta cantidad de ruido, la cual se puede deber a la cámara o al medio de transmisión de la señal. Generalmente el ruido se manifiesta como píxeles aislados que toman un nivel de gris diferente al de sus vecinos. Los algoritmos de filtrado que se verán más adelante permiten eliminar o disminuir este ruido. El ruido puede clasificarse en los siguientes tipos: Gaussiano: produce pequeñas variaciones en la imagen; generalmente se debe a diferentes ganancias en la cámara, ruido en los digitalizadores, perturbaciones en la transmisión, etc. Se considera que el valor final del píxel sería el ideal más una cantidad correspondiente al error que puede describirse como una variable aleatoria gaussiana. Impulsional (sal y pimienta): el valor que toma el píxel no tiene relación con el valor ideal, sino con el valor del ruido que toma valores muy altos o bajos (puntos blancos y/o negros) causados por una saturación del sensor o por un valor mínimo captado, si se ha perdido la señal en ese punto. Se encuentran también al trabajar con objetos a altas temperaturas, ya que las cámaras tienen una ganancia en el infrarrojo que no es detectable por el ojo humano; por ello las partes más calientes de un objeto pueden llegar a saturar un píxel. Multiplicativo: La imagen obtenida es el resultado de la multiplicación de dos señales. En la figura 8 se muestran los diferentes ruidos afectando a una imagen. I.4 Procesamiento espacial El procesamiento espacial esta formado por aquellas técnicas que operan directamente sobre los valores de los píxeles de la imagen. Las transformaciones son de la siguiente forma:

( ) ( )( )yxIFyxS ,, = donde I(x,y) es la imagen original, S(x,y) la imagen resultante y F la transformación.

Page 11: cursoimagenes

M. en C. José Jaime Esqueda Elizondo

10

I.4.1 Operaciones aritméticas, lógicas y transformaciones geométricas. Las operaciones aritméticas más usadas en procesamiento de imágenes son; suma, resta, multiplicación y división. Para que se pueda llevar a cabo una operación aritmética, ambas imágenes deben ser del mismo tamaño. En la figura 9 se muestra la suma de dos imágenes, la cual se realiza de la forma ),(),(),( yxByxAyxC += mediante el comando imadd en Matlab.

Figura 8. Diferentes tipos de ruido afectando a una imagen.

+ =

Figura 9. Suma de dos imágenes También es posible aumentar el brillo a una imagen sumándole un valor constante a cada píxel. En la figura 10 se muestra el efecto de sumar un escalar (50) a una imagen, el cual se realiza de la forma ayxAyxB += ),(),( .

Page 12: cursoimagenes

M. en C. José Jaime Esqueda Elizondo

11

Figura 10. Aumento del brillo de la imagen usando la suma de un escalar a cada píxel de

la imagen, imagen original (izquierda) e imagen modificada (derecha). La resta de imágenes consiste en restar de una imagen el valor correspondiente de otra imagen. Esta operación es un paso intermedio en algunos procesamientos más complejos, como la detección de movimiento, etc. La resta, al igual que la suma de imágenes requiere que ambas imágenes sean de igual tamaño. En la figura 11 se muestra el efecto de restar una imagen de otra, de la forma ),(),(),( yxByxAyxC −= mediante el comando imsubtract en Matlab.

- =

Figura 11. Resta de dos imágenes, imagen original (izquierda), imagen a restar (centro) y resultado (derecha).

En la figura 12 se muestra la resta de un escalar (50) a cada píxel de la imagen original, la cual se lleva a cabo de la forma ayxAyxB −= ),(),( .

Figura 12. Resta de un escalar (50) a cada píxel de la imagen original (izquierda)

Page 13: cursoimagenes

M. en C. José Jaime Esqueda Elizondo

12

En el campo de las imágenes, la multiplicación se puede llevar a cabo, entre dos imágenes del mismo tamaño, multiplicando elemento a elemento cada uno de los píxeles de la imagen, de la forma ),(),(),( yxByxAyxC ⋅= , en Matlab esto se realiza con el comando immultiply. En la figura 13 se muestra la multiplicación de dos imágenes.

Figura 13 Multiplicación de una imagen por si misma, imagen original (izquierda),

imagen resultante (derecha). Cuando se multiplica cada uno de los píxeles de una imagen por un escalar, se le conoce como escalamiento, el cual se realiza de la siguiente forma ),(),( yxAayxB ⋅= . Cuando el escalar o constante es menor a 1, se oscurece la imagen y si es mayor a uno aumenta el brillo de la imagen. En la figura 14 se muestra el resultado de multiplicar la imagen original por el escalar 1.2

Figura 14. Multiplicación de una imagen por un escalar, imagen original (izquierda),

imagen resultante (derecha).

La división de imágenes consiste en una división de elemento a elemento, como las demás operaciones vistas anteriormente. La división entre imágenes puede utilizarse para detectar cambios en dos imágenes, sin embargo, en lugar de dar el cambio absoluto de cada píxel, la división da el cambio fraccional o razón de cambio entre los valores de dos píxeles correspondientes. A la división de imágenes también se le conoce como

Page 14: cursoimagenes

M. en C. José Jaime Esqueda Elizondo

13

racionalización. En la figura 15 se presenta la división entre imágenes, la cual se realiza de la forma ),(),(),( yxByxAyxC ÷= .

Figura 15. División de imágenes, se muestra la división de la imagen original (izquierda)

entre el fondo (centro) dando como resultado la figura de la derecha.

I.4.2 Operaciones lógicas Las principales operaciones lógicas utilizadas en el procesamiento de imágenes son: AND, OR, NOT, las cuales se aplican solo a imágenes binarizadas. En la figura 16 se muestran las operaciones lógicas aplicadas a imágenes binarias.

Figura 16. Operaciones lógicas aplicadas a imágenes binarias.

I.4.3 Transformaciones geométricas Las transformaciones geométricas modifican las relaciones espaciales entre píxeles; a continuación se presentan algunas. I.4.3.1 Interpolación La interpolación es el proceso en el cual se estiman los valores de una imagen en una sección específica, cuando por ejemplo, se cambia el tamaño de una imagen y en la nueva imagen existen más píxeles que en la imagen original. Dentro de Matlab los comandos

Page 15: cursoimagenes

M. en C. José Jaime Esqueda Elizondo

14

imresize e imrotate utilizan interpolación bidimensional como paso intermedio en sus procesos. De forma general, la interpolación de una imagen se presenta como:

( ) ( ) ( )∑∑ −−= jyixhjigyxf ,,,

donde: g(x,y) es la imagen original, f(x,y) representa la imagen procesada y h(x,y) es la interpolación (máscara). En el toolbox de Image Processing se encuentran implementados los siguientes métodos de interpolación: interpolación por el vecino más próximo, interpolación bilineal e interpolación bicúbica. Dichos métodos se explicarán más delante de forma breve. Los tres métodos de interpolación funcionan de forma similar, en cada caso para determinar el valor para un píxel interpolado, se encuentra el punto en la imagen original que corresponde a la imagen interpolada. Se asigna el valor del píxel interpolado calculando el promedio ponderado de el conjunto de píxeles hallados en la vecindad de dicho punto. Los tres métodos difieren en el conjunto de píxeles que consideran: • Vecino más próximo: al píxel interpolado se le asigna el valor del píxel que

corresponde • Interpolación bilineal: el valor del píxel interpolado es el promedio ponderado de los

píxeles en la vecindad 2x2 más cercana. • Interpolación bicúbica: el valor del píxel interpolado es el promedio ponderado de

los píxeles presentes en la vecindad 4x4 más cercana. Nótese que el número de píxeles considerado aumenta la complejidad del cálculo, es por eso que la interpolación bilineal es más lenta que el método del vecino más próximo y el método bicúbico es más lento que el método bilineal. Nótese también que si se considera un mayor número de píxeles, se tendrán mejores resultados. Para la mayoría de las funciones el método utilizado por omisión es el de vecino más próximo. Este método produce resultados aceptables para todos los tipos de imágenes y es el único método apropiado para imágenes indexadas. Sin embargo, para imágenes de intensidad y RBG generalmente se especifica la interpolación bilineal o bicúbica porque estos métodos proporcionan mejores resultados. Para imágenes RGB, la interpolación se ejecuta en los planos de color rojo, verde y azul de forma individual. I.4.3.2 Amplificación/Reducción de imágenes Para el cambio de tamaño de una imagen (amplificación/reducción) se utiliza el comando imresize. Este comando permite especificar: el tamaño de la imagen de salida (procesada), el método de interpolación utilizado y el filtro a usar para evitar el efecto alias. El efecto alias se presenta al reducir el tamaño de una imagen. Esto es debido a que se presenta una pérdida de información cuando se reduce el tamaño de una imagen. En las figuras 17 y 18 se presenta un ejemplo de amplificación de imágenes usando los métodos de interpolación descritos anteriormente. La interpolación mediante Fourier se expone más adelante.

Page 16: cursoimagenes

M. en C. José Jaime Esqueda Elizondo

15

Figura 17. Imagen original

Figura 18. Amplificación de la figura 17 usando diferentes métodos de interpolación.

I.4.3.3 Traslación Si se requiere trasladar el origen de una imagen se aplican las ecuaciones:

oif

oif

yyyxxx

+=

+=

Que en coordenadas homogéneas es:

=

11001001

1i

i

o

o

f

f

yx

yx

yx

Page 17: cursoimagenes

M. en C. José Jaime Esqueda Elizondo

16

Rotación respecto al origen

−=

11000cos0cos

1i

i

f

f

yx

sensen

yx

θθθθ

Rotación respecto a un punto cualquiera

−−

=

11001001

1000cos0cos

1001001

1i

i

o

o

o

o

f

f

yx

yx

sensen

yx

yx

θθθθ

En la figura 19 se muestra la rotación de la figura 17 usando diferentes métodos de interpolación.

Figura 19. Rotación de la imagen de la figura 17 usando diferentes métodos de

interpolación. I.4.3.4 Convolución bidimensional La convolución bidimensional discreta es la base de algunos procesamientos comunes, como el filtrado de imágenes. En la convolución, el valor de un píxel de salida se calcula mediante la suma ponderada de los píxeles vecinos. Dentro del campo del procesamiento de imágenes, la convolución se realiza entre la imagen y una matriz (los coeficientes del filtro) llamada máscara para filtrar una imagen. En Matlab la convolución bidimensional (aplicada a imágenes) se encuentra en el comando conv2. La convolución de f(x,y) y h(x,y) está dada por:

( ) ( ) ( ) ( ) ( )∑ ∑∞

−∞=

−∞=

−−=∗=i j

jyixhjifyxfyxhyxg ,,,,,

Lo más común es usar convoluciones de 3 x 3 elementos; entonces la ecuación anterior se convierte en:

( ) ( ) ( ) ( ) ( )∑∑= =

−−=∗=2

0

2

0,,,,,

i jjyixhjifyxfyxhyxg

que, por ejemplo, para obtener g(2,2) se tiene:

( ) ( ) ( )∑∑= =

=−−=2

0

2

02,2,2,2

i jjihjifg

( ) ( ) ( ) ( ) ( ) ( ) !+++ 0,22,01,21,02,20,0 hfhfhf

Page 18: cursoimagenes

M. en C. José Jaime Esqueda Elizondo

17

( ) ( ) ( ) ( ) ( ) ( ) !! ++++ 0,12,11,11,12,10,1 hfhfhf ( ) ( ) ( ) ( ) ( ) ( )0,02,21,01,22,00,2 hfhfhf +++!

Considérese que la imagen es la mostrada en la figura 20:

A =

17 24 1 8 15

23 5 7 14 16

4 6 13 20 22

10 12 19 21 3

11 18 25 2 9

Figura 20. Imagen y la máscara se muestra en la figura 21:

8 1 6

3 5 7

4 9 2

h =

Figura 21. Máscara de convolución.

En la figura 22 se muestra como calcular el píxel de salida (procesada) mediante los siguientes pasos:

1. Rotar la máscara de convolución 180 grados a partir del elemento del centro. La máscara rotada queda entonces como:

816

357

492

Figura 22. Máscara rotada para la convolución.

2. Sobreponer el elemento central de la máscara de tal forma que quede sobre el

elemento de interés, en este caso el elemento (2,4) de A, tal como se muestra en la figura 23.

Page 19: cursoimagenes

M. en C. José Jaime Esqueda Elizondo

18

������������������������������

17 24 1 8 15

23 5 7 14 16

4 6 13 20 22

10 12 19 21 3

11 18 25 2 9

816

357

492

Figura 23. Convolución para obtener el valor de A(2,4)

3. Multiplicar cada peso (valor) de la máscara rotada por el píxel de A que se

encuentra “bajo” la máscara. 4. Sumar los productos individuales obtenidos en el paso 3.

Por ejemplo, para el píxel (2,4), el píxel de salida (procesado) es:

1 · 2 + 8 · 9 + 15 · 4 + 7 · 7 + 14 · 5 + 16 · 3 + 13 · 6 + 20 · 1 +22 · 8 = 575 Cuando se trabaja en los extremos de la imagen, se acostumbra insertar ceros (zero padding) en los extremos, tal como se muestra en la figura 24.

������������������������������

816

357

492

17 24 1 8 15

23 5 7 14 16

4 6 13 20 22

10 12 19 21 3

11 18 25 2 9

0

0

0 0 0

Figura 24. Inserción de ceros (zero padding) en los extremos.

I.4.3.5 Correlación La correlación es una operación parecida a la convolución, en la cual el valor de un píxel de salida se calcula como la suma ponderada de los píxeles vecinos. La diferencia está en que la matriz de pesos o máscara, en este caso llamada núcleo o kernel de correlación no se rota durante el cálculo. La correlación está dada por:

( ) ( ) ( ) ( ) ( )∑∑∞

−∞=

∞=

∗ ++==i j

jyixhjifyxfyxhyxg ,,,,, "

Page 20: cursoimagenes

M. en C. José Jaime Esqueda Elizondo

19

La correlación se utiliza para encontrar el parecido entre píxeles de una imagen. Si los píxeles son iguales o parecidos, se dice que están altamente correlacionados entre si. La correlación permite hallar patrones. La diferencia entre la correlación y la convolución estriba en que la máscara de correlación no se rota como en la convolución. En la figura 25 se muestra como se calcula la correlación para el píxel (2,4) de la imagen A usando como máscara de correlación a h.

������������������������������

8 1 6

3 5 7

4 9 2

17 24 1 8 15

23 5 7 14 16

4 6 13 20 22

10 12 19 21 3

11 18 25 2 9

Figura 25. Correlación de A con h. El algoritmo de la correlación opera de la siguiente forma:

1. Sobreponer el elemento central de la máscara de tal forma que quede sobre el elemento de interés, en este caso el elemento (2,4) de A, tal como se muestra en la figura 22.

2. Multiplicar cada peso (valor) de la máscara rotada por el píxel de A que se encuentra “bajo” la máscara.

3. Sumar los productos individuales obtenidos en el paso 2. Por ejemplo, para el píxel (2,4), el píxel de salida (procesado) es:

1 · 8 + 8 · 1 + 15 · 6 + 7 · 3 + 14 · 5 + 16 · 7 + 13 · 4 + 20 · 9 +22 · 2 = 585 I.5 Procesamiento en el dominio de la frecuencia En el campo de las imágenes, el dominio de la frecuencia es aquel en el que una imagen se representa como la suma de señales periódicas con diferentes frecuencias. Por ejemplo, la transformada de Fourier de una imagen es la representación de dicha imagen como una suma de exponenciales complejos de diferentes magnitudes, frecuencias y fases. Este tipo de transformaciones frecuenciales se llevan a cabo para una amplia gama de procesamientos, entre los cuales se encuentran: la convolución, el mejoramiento de imágenes, la detección de características, compresión, etc. I.5.1 Series de Fourier Dada una función periódica en el dominio del tiempo f(t), es lógico pensar que esta función se puede expresar mediante la suma de otras funciones periódicas. Lo anterior se expresa mediante las series de Fourier, las cuales dan las fórmulas matemáticas que

Page 21: cursoimagenes

M. en C. José Jaime Esqueda Elizondo

20

expresan esta relación con las funciones periódicas seno y coseno. Así, cualquier función f(t) con periodo To se puede expresar como:

∑∞

=

++=1

000 )()cos()(k

kk tksenbtkaatf ωω

Donde:

∫=0

000 )(1 T

fttfT

a , ∫=0

00

0

)cos()(2 T

k dttktfT

a ω , ∫=0

00

0

)()(2 T

k dttksentfT

b ω , 0

02Tπω =

La serie de Fourier de la señal cuadrada se puede representar como:

∑∞

= ++=

0 12))12((4)(

k ktksentf

π

En la figura 26 se presenta la señal cuadrada

0 1 2 3 4 5 6-1

-0.5

0

0.5

1

(a)0 1 2 3 4 5 6

-1

-0.5

0

0.5

1

(b)

0 1 2 3 4 5 6-1

-0.5

0

0.5

1

(c)0 1 2 3 4 5 6

-1

-0.5

0

0.5

1

(d)

0 1 2 3 4 5 6-1

-0.5

0

0.5

1

(e)0 1 2 3 4 5 6

-1

-0.5

0

0.5

1

(f) Figura 26. Formación de la señal cuadrada mediante la serie de Fourier. (a) cinco señales senoidales (términos); (b) suma de dos términos; (c) suma de tres términos; (d) suma de

cuatro términos; (e) suma de cinco términos; (f) suma de veinte términos. I.5.2 Transformada de Fourier La transformada de Fourier es una extensión de las series de Fourier a señales no periódicas. El par transformado analítico de Fourier está dado por:

[ ] ∫∞

∞−

−== dtetxfXtxF ftj π2)()()( (ec. de análisis)

[ ] ∫ ∫∞

∞−

∞−

− === ωωπ

ωπ deXdfefXfXFtx tjftj )(21)()()( 21 (ec. de síntesis)

donde )(2)( fXX πω = .

Page 22: cursoimagenes

M. en C. José Jaime Esqueda Elizondo

21

Para el caso unidimensional discreto, el par transformado de Fourier está dado por:

[ ] ∑−

=

−==

1

0

2

)()()(N

n

knN

j

enxkXnxFπ

; k = 0, 1, ..., N-1 (ec. de análisis)

[ ] ∑−

=

− ==1

0

21 )(1)()(

N

k

knN

j

ekXN

nxkXFπ

; n = 0, 1, ..., N-1 (ec. de síntesis)

Para el caso bidimensional discreto, se tiene que:

[ ] ∑∑−

=

=

−−==

1

0

1

0

ln22

),(),(),(M

m

N

n

Nj

kmMj

eenmxlkXlkxFππ

; k = 0, 1, ..., M-1; l = 0, 1, …, N-1

[ ] ∑∑−

=

=

− ==1

0

1

0

ln221 ),(1),(),(

M

k

N

l

Nj

kmMj

eelkXMN

nmxlkXFππ

; m = 0, 1, ..., M-1; n = 0,1,…, N-1

Los valores X(k,l) son los coeficientes de la transformada de Fourier de la imagen x(m,n). A los coeficientes referentes a la frecuencia cero, X(0,0) usualmente se les conoce como la componente de corriente directa. La transformada de Fourier se encuentra implementada en Matlab en el comando fft (para el caso unidimensional), fft2 (para el caso bidimensional) y fftn (para el caso N-dimensional). Las transformadas inversas se encuentran en los comandos ifft (para el caso unidimensional), ifft2 para el caso bidimensional e ifftn (para el caso N-dimensional). La fase obtenida mediante la transformada de Fourier contiene información esencial sobre la estructura de la imagen. La amplitud por si sola implica solo que existe una estructura periódica dentro de la imagen, pero no especifica donde se encuentra. Es decir, si no se conoce la fase de la transformada de Fourier, se puede determinar que objetos hay en la imagen, pero no su posición. Por lo tanto, resulta obvio que si se obtiene un espectro de potencia, se tendría muy poca información sobre la imagen debido a que la fase se ha perdido. Si se asocia un nivel de gris con la amplitud de un proceso físico, por ejemplo una oscilación armónica, entonces el espectro de potencia proporciona la distribución de la energía en el dominio de la frecuencia. I.5.2.1 Aplicaciones de la transformada de Fourier En esta sección se presentan algunos procesamientos de imágenes relacionados con la transformada de Fourier. Respuesta a la frecuencia de filtros lineales La transformada de Fourier de la respuesta al impulso de un filtro lineal proporciona la respuesta a la frecuencia del filtro. Esto puede obtenerse mediante el comando freqz2, el cual calcula y despliega la respuesta a la frecuencia de un filtro. Convolución rápida Una propiedad clave de la transformada de Fourier es que la multiplicación de dos transformadas de Fourier de dos funciones corresponde a la convolución de las funciones espaciales asociadas. Esta propiedad, junto con la transformada rápida de Fourier forman la base para el algoritmo de la convolución.

Page 23: cursoimagenes

M. en C. José Jaime Esqueda Elizondo

22

Supóngase que A es una matriz de M por N y B es una matriz de P por Q; la convolución de A y B se obtiene de la siguiente forma:

1. Se agregan ceros a A y a B para que su longitud sea de al menos (M+P+1) por (N+Q-1). Generalmente se les agrega ceros a A y B para que su tamaño sea una potencia de 2 debido a que el algoritmo de la fft2 es más rápido para potencias de dos.

2. Se calcula la transformada de Fourier bidimensional mediante fft2 3. Se multiplican las dos transformadas 4. Se obtiene la transformada inversa de Fourier bidimensional de la multiplicación

mediante el comando ifft2. Localización de características en imágenes La transformada de Fourier se utiliza también para realizar correlaciones. La correlación se utiliza para localizar algunas características en una imagen. Por ejemplo si se desea encontrar la letra “a” en una imagen que contenga texto, se establece un patrón (sección de la imagen con la característica de búsqueda deseada) con la letra “a” . Posteriormente se obtiene la correlación de la imagen patrón y la imagen original rotando 180º la imagen patrón y se utiliza la técnica de convolución basada en la transformada de Fourier, descrita anteriormente (Nota: la convolución es equivalente a la correlación si se rota el kernel de convolución 180º. Para buscar coincidencias en la imagen se utiliza la transformada de Fourier y la transformada inversa de Fourier. Amplificación de imágenes Para realizar la ampliación de una imagen se utiliza una interpolación en el dominio del tiempo (espacial) mediante la transformada discreta de Fourier, siempre y cuando los lados de la imagen tengan un número de píxeles que sea potencia de dos. A continuación se presenta el procedimiento para cuadruplicar el tamaño de una imagen (duplicar cada lado),

1. Transformar la imagen A al dominio de la frecuencia (imagen o matriz B). 2. Dividir la imagen transformada (imagen o matriz B) en cuatro partes iguales, tal

como se muestra en la figura 27.

I II

III IV

N

N

N2

N2

Figura 27. División en cuatro partes iguales de la imagen transformada (B)

3. Insertar N ceros a cada renglón de la matriz B, ver la figura 28 (b); enseguida

insertar N ceros a cada columna, tal como se muestra en la figura 28(c) para formar una matriz aumentada, B’.

Page 24: cursoimagenes

M. en C. José Jaime Esqueda Elizondo

23

4. El siguiente paso es antitransformar la matriz aumentada B’ para obtener una matriz A’ aumentada, de dimensiones 2N x 2N.

5. Dividir cada elemento de la matriz X’ entre 64. La relación es 4(2n-1), donde n es el número de veces que se amplifica la imagen, en este caso n = 2.

El procedimiento anterior amplifica la imagen original por un factor de 2 (el área original se cuadruplica). Si se requiere un factor de amplificación diferente de dos, por ejemplo un factor α, deberán agregarse a B (α -1) ceros.

Imagen(Matriz B) Inserción de N ceros a

cada renglón

Ceros

����������������������������I

��������������������������II��������������

����������������������������III

���������������������������������������IV

Ceros������������������������������������IV

���������������������������������������III

������������������������������������II

���������������������������������������I

Inserción de N ceros acada columna(a) (b)

(c)

������������������������������������III

������������������������I

������������������������������II���������������������������������������������IV

Figura 28. Inserción de ceros para obtener la matriz B aumentada (B’).

I.5.3 Transformada discreta coseno La transformada discreta coseno (TDC) representa una imagen como la suma de senoidales de diferentes amplitudes y frecuencias. La transformada discreta coseno tiene una propiedad tal que para una imagen típica, la mayoría de la información visualmente significativa de una imagen se concentra en solo unos cuantos coeficientes de la DCT. Por esta razón, la TDC es comúnmente usada en aplicaciones de compresión de imágenes. Por ejemplo, la TDC es el corazón del algoritmo estándar de compresión de imágenes conocido como JPEG (Joint Photographic Experts Group). La transformada discreta coseno de una matriz A de M por N, tal como se define a continuación:

( ) ( )1010

,2

12cos2

12cos1

0

1

0 −≤≤−≤≤++= ∑∑

=

= NqMp

Nqn

MpmAB

M

m

N

nmnqppq

ππαα

−≤≤

==

−≤≤

==

11 2

0q ,1

11 2

0 ,1

NqN

N

MpM

pM

pp αα

Los valores Bpq son los coeficientes de la transformada discreta coseno de A. La TDC es invertible, y su inversa está dada por:

( ) ( )1010

,2

12cos2

12cos1

0

1

0 −≤≤−≤≤++= ∑∑

=

= NnMm

Nqn

MpmBA

M

m

N

npqqpmn

ππαα

Page 25: cursoimagenes

M. en C. José Jaime Esqueda Elizondo

24

−≤≤

==

−≤≤

==

11 2

0q ,1

11 2

0 ,1

NqN

N

MpM

pM

pp αα

La ecuación de la TDC inversa se puede interpretar como una matriz A de M por N que puede escribirse como la suma de MN funciones de la forma:

( ) ( )1010

,2

12cos2

12cos−≤≤−≤≤++

NnMm

Nqn

Mpm

qpππαα

A estas funciones se les llama funciones básicas de la TDC, estos coeficientes Bpq se conocen como pesos aplicados a cada función base. La razón por la cual las imágenes pueden ser comprimidas y recuperadas exitosamente con pequeños errores es la gran cantidad de redundancia en las imágenes típicas. El propósito de esta transformada es obtener un conjunto de coeficientes que representen la imagen con valores que no estén correlacionados (es decir, cada valor en el arreglo o imagen proporciona nueva información no dada por ningún otro valor en el arreglo). Algunos valores en el arreglo transformado dan poca o ninguna información acerca de la imagen original y pueden ser descartados. En la figura 29 se presenta un ejemplo de compresión usando la transformada discreta coseno (comando dct2) usado para transformar la imagen mostrada. La imagen transformada muestra de forma logarítmica la distribución de los niveles de gris en la imagen transformada. La imagen cuantizada muestra los niveles de gris transformados representativos de forma logarítmica, los tonos negros pueden desecharse (en este caso se desecharon valores inferiores a 10), con lo que se comprime la imagen y por último se muestra la imagen reconstruida. I.6 Procesamiento de imágenes básico En esta sección se presentan y describen algunos procesamientos más comunes. I.6.1 Binarización de una imagen La binarización de una imagen consiste en comparar los niveles de gris presentes en la imagen con un valor (umbral) predeterminado. Si el nivel de gris de la imagen es menor que el umbral predeterminado, se le asigna al píxel de la imagen binarizada el valor 0 (negro), y si es mayor, se le asigna un 1 (blanco). De esta forma se obtiene una imagen en blanco y negro. Generalmente se utiliza un umbral de 128 si se trabaja con 255 niveles de gris, pero en algunas aplicaciones se requiere de otro umbral. En la figura 30 se muestra un ejemplo de imagen binarizada.

Page 26: cursoimagenes

M. en C. José Jaime Esqueda Elizondo

25

Figura 29. Compresión de imágenes usando la TDC.

Fig. 30. Binarización de una imagen

I.6.2 Manipulación del contraste El histograma que se muestra en la figura 31 toma valores limitados, por lo que el contraste en la imagen es muy bajo y apenas se aprecian los detalles. Se desea encontrar una función que produzca una nueva imagen que si cubra todo el conjunto de valores posibles de la imagen (niveles de gris). Si a y b son los valores mínimos y máximos, respectivamente, puede definirse la función T(c) que asigna los nuevos valores de gris a partir de los antiguos:

Page 27: cursoimagenes

M. en C. José Jaime Esqueda Elizondo

26

abacAcTy

−−== )(

donde: a y b son los límites inferior y superior, c es el valor de gris de la imagen original y A es el valor máximo que se desea que tengan los píxeles de la imagen.

a bc

0

A

Figura 31. Expansión del histograma de la imagen.

En la figura 32 se muestra el resultado de aplicar a la imagen la modificación del contraste, procesamiento también conocido como ecualización de la imagen. El contraste (separación entre los niveles de gris) ha mejorado y ahora se aprecian mejor los detalles de la imagen. En el nuevo histograma puede observarse como la separación entre los diferentes niveles de gris es mayor. En este caso la separación es igual para todos los niveles de gris debido a que la transformación es lineal. Nótese que aunque la imagen se ve mejor, la información es la misma en ambas imágenes, lo único que se ha hecho es asignar nuevos niveles de gris, pero los píxeles que tenían un nivel de gris determinado en la imagen original diferente a los niveles de gris inferior y superior, son los mismos en la imagen nueva. Para un caso más general la función buscada tendrá la forma (ver la figura 33)

≤≤+−≤≤+−≤≤

==Lxbybxbxayaxaxx

xTy

b

a

)()(

0)(

γβ

α

donde: y, x son los niveles de gris de las imágenes resultante y original α, β, γ son ganancias de cada tramo a, b y L son los intervalos de ganancia

Page 28: cursoimagenes

M. en C. José Jaime Esqueda Elizondo

27

Figura 32. Modificación de contraste

a b LImagen original

Imag

en o

rigin

al

av

bv

Figura 33. Caso general

I.6.3 Modificación del contraste La modificación del contraste consiste en aplicar una función a cada uno de los píxeles de la imagen, de la forma: amp = donde:

Page 29: cursoimagenes

M. en C. José Jaime Esqueda Elizondo

28

m es el valor de gris de la imagen original p es el nuevo valor de gris en la imagen resultante a es la potencia a la que se eleva Entre las transformaciones más usuales se encuentran: Función inversa mp −= 255

Función cuadrada 255

2mp =

Función cúbica 2

3

255mp =

Función raíz cuadrada mp 255=

Función raíz cúbica 3 2255 mp =

Función logarítmica )2551ln(

)1ln(255++= mp

El valor 255 se utiliza para normalizar los valores entre 0 y 255 si se trabaja con imágenes con niveles de gris de 8 bits, de lo contrario se debe remplazar este valor por el valor máximo representable con el número de bits utilizados. Con la función cuadrada y cúbica se oscurece la imagen resultante. Con las funciones raíz cuadrada, raíz cúbica y logarítmica sucede lo inverso. I.6.4 Modificación del histograma Los métodos anteriores modifican cada nivel de gris y dependen únicamente de su valor y por lo tanto, son locales. Si se desea adquirir una información global de la imagen, la forma más fácil de hacerlo es analizar y modificar el histograma. Esto se hace con la idea de que éste se ajuste a una forma predeterminada; la forma más usual se conoce como ecualización del histograma, en la que se pretende que éste sea horizontal, es decir, que para todos los valores de gris se tenga el mismo número de píxeles. La ecualización del histograma se realiza trabajando sobre el histograma acumulado, el cual está dado por:

∑=

=i

kkhiH

0

)()(

Si el histograma fuera totalmente plano, el histograma para cada nivel de gris sería:

256)1()'( NMiiG +=

donde N y M son las dimensiones de la imagen y 256 corresponde al número de niveles dado por el número de bits con los que se representan (en este caso 8 bits). Como se desea que G(i’) = H(i), se tiene que;

)(256

)1'( iHNMi =+ 1)(256' −=∴ iHNM

i

Page 30: cursoimagenes

M. en C. José Jaime Esqueda Elizondo

29

Debido a que los niveles de gris son únicamente valores enteros, se realiza un cambio en los niveles de gris de acuerdo a:

( )

−= 1256entera Parte anteriornuevo iH

NMi

I.6.5 Filtrado de una imagen El filtrado es una técnica para modificar o mejorar a una imagen. Por ejemplo, un filtro puede resaltar o atenuar algunas características. El filtrado es una operación de vecindario, en la cual el valor de un píxel dado en la imagen procesada se calcula mediante algún algoritmo que toma en cuenta los valores de los píxeles de la vecindad de la imagen original. I.6.5.1 Filtros lineales espaciales El ruido en una imagen es una característica que se desea eliminar, y al ser este variaciones sobre los niveles de gris, le corresponden las frecuencias altas. Si se supone que el ruido es una señal que se suma a la señal (imagen) original, el nivel de gris de un píxel puede definirse como la suma del nivel de gris ideal y el ruido:

f(x, y) = fi(x, y) + r(x, y) Aunque el ruido esta siempre presente, el que afecte más o menos a un píxel determinado es aleatorio. Si se trata de un ruido Gaussiano, este esta definido por una distribución normal de media cero y variancia típica de σ . I.6.5.2 Filtro pasa bajas espacial Una forma de eliminar el ruido consiste en hacer pasar la imagen por un filtro pasa bajas que disminuya la ganancia de las componentes de alta frecuencia. El filtro más sencillo e intuitivo es aquel que tiene coeficientes unitarios en todos los elementos, tal como se muestra a continuación.

1 1 1

1 1 1

1 1 1

Si al resultado se le multiplica por un noveno, se obtiene la media de todos los píxeles, por lo que el ruido disminuye. Sin embargo, este filtro presupone que la influencia de todos los píxeles es igual. Otra consideración es que cuanto más alejado esté el píxel del central, su valor será menor y se obtiene la siguiente máscara:

Page 31: cursoimagenes

M. en C. José Jaime Esqueda Elizondo

30

1 1 1

1 2 1

1 1 1

Si se desea dar mayor peso al píxel central que a sus vecinos, y a los vecinos tipo 4 que a los de tipo 8, se tiene

1 2 1

2 4 2

1 2 1

En general, se tiene:

1 b 1

b b b

1 b 1

2

debiendo ser la ganancia de todas ellas la unidad para no variar la imagen. El filtrado de imágenes en Matlab está implementado en el comando filter2. I.6.5.3 Filtrado por la mediana El filtrado por la mediana permite eliminar el ruido tipo sal y pimienta, es decir, elimina puntos blancos y negros presentes en la imagen. En una secuencia de números x1, x2, ...xN, la mediana es aquel valor que cumple que (N-1)/2 elementos tienen un valor menor o igual a ella y que (N-1)/2 tiene un valor mayor o menor que la mediana. La mediana se obtiene ordenando las intensidades de los píxeles de menor a mayor, y el píxel que se encuentra en (N-1)/2 es la mediana , tal como se muestra en la figura 34. A continuación se muestra como el filtrado por la mediana puede eliminar un valor.

vecindad de x = [0,0,0,0,255,0,0,0,0]

vecindad de x = [0,0,0,0,0,0,0,0,255]

Mediana

Page 32: cursoimagenes

M. en C. José Jaime Esqueda Elizondo

31

������������������������������������������

22 10 10 255 15

0 0 7 14 16

4 6 13 20 22

10 12 19 21 3

11 18 25 2 9

0

0

0 0 0

vecindad de a = [0,0,0,0,22,10,0,0,0]

a b

Se ordena de mayor a menor

vecindad de a = [0,0,0,0,0,0,0,10,22]

Mediana

Figura 34. Vecindad de a y obtención de la mediana.

En Matlab este filtro se encuentra implementado en el comando medfilt2. I.6.5.4 Realce de bordes El realce de bordes en una imagen tiene un efecto opuesto a la eliminación de ruido; consiste en enfatizar o resaltar aquellos píxeles que tienen un valor de gris diferente al de sus vecinos. Cabe resaltar que si la imagen contiene ruido, su efecto se multiplicará, por lo que ser recomienda primero eliminar el ruido. En la figura 35 se muestra un ejemplo de realce de contornos.

Figura 35. Realce de una imagen

En el realce de imágenes consiste en aumentar la ganancia de las altas frecuencia, es decir:

Page 33: cursoimagenes

M. en C. José Jaime Esqueda Elizondo

32

Imagen resultante = (Ganancia)(Imagen Original) – Bajas frecuencias De forma general, la máscara usada para realzar los bordes es:

-1 -1 -1

-1 A -1

-1 -1 -1

donde:

A = 9 · Ganancia –1 y todo ello multiplicado por un noveno.

I.6.5.5 Detección de contornos La detección de contornos es un paso intermedio en el reconocimiento de patrones en imágenes digitales. En una imagen, los contornos corresponden a los limites de los objetos presentes en la imagen. Para hallar los contornos se buscan los lugares en la imagen en los que la intensidad del píxel cambia rápidamente, generalmente usando alguno de los siguientes criterios: • Lugares donde la primera derivada (gradiente) de la intensidad es de magnitud

mayor que la de un umbral predefinido • Lugares donde la segunda derivada (laplaciano) de la intensidad tiene un cruce por

cero. En el primer caso se buscarán grandes picos y en el segundo cambios de signo, tal como se muestra en la figura 36.

I.6.5.5.1 Técnicas basadas en el gradiente Estas técnicas se basan en una aproximación al concepto de la derivada para espacios discretos. Esta generalización se basa en el cálculo de diferencias entre píxeles vecinos; estas diferencias, según la relación de píxeles considerados, puede dar lugar a derivadas unidimensionales o bidimensionales, así como aplicarse en una dirección determinada de la imagen o en todas direcciones. Otras aproximaciones diferenciales de gran utilidad son la de Roberts y la de Sobel. El operador gradiente G aplicado a una imagen f(x,y) esta definido como:

[ ]

∂∂

∂∂==∇

yf

xfGGyxf yx),(

Page 34: cursoimagenes

M. en C. José Jaime Esqueda Elizondo

33

f(x)

f ' (x)

f '' (x)

Figura 36. Detección de contornos mediante la primera y segunda derivada.

El vector gradiente representa el cambio máximo de intensidad para el punto (x,y); su magnitud y dirección están dados por:

22yxx GGf +=∇

=∠∇

x

y

GG

f arctan

siendo la dirección del gradiente perpendicular al borde. Para reducir el costo computacional, generalmente se aplica:

yx GGf +=∇

Debido a que las imágenes digitales no son señales continuas, se tiene:

[ ]

∆∆

∆∆==∇

yf

xfGGyxf yx),(

que se puede representar mediante las máscaras:

xfGx ∆

∆= -1 1 ∗ f(x,y)

yfGy ∆

∆= -1

1

∗ f(x,y)

Page 35: cursoimagenes

M. en C. José Jaime Esqueda Elizondo

34

Estas máscaras generalmente no se utilizan debido a que son muy poco sensibles al ruido al tomar en cuenta solamente la información de dos píxeles. Entre los filtros (operadores) más usados, que además permiten obtener un gradiente suavizado, se encuentran: Roberts, Prewitt, Sobel e Isotrópico. En la figura 37 se muestran las máscaras referentes a estos operadores.

0 -1

1 0

-1 0

0 1

Operador de Roberts

-1 0

-1 0

-1 0

1

1

1

-1 -1

0 0

1 1

-1

0

1

Operador de Prewitt

-1 0

-2 0

-1 0

1

2

1

-1 -2

0 0

1 2

-1

0

1

Operador de Sobel

-1 0

0

-1 0

1

1

-1

0 0

1

-1

0

1

2− 2

2−

2

Operador Isotrópico Figura 37. Máscaras para los operadores: Roberts, Prewitt, Sobel e Isotrópico.

I.6.5.5.2 Técnicas basadas en el laplaciano El laplaciano es la segunda derivada de una función y representa la derivada de esta respecto a todas las direcciones, y esta dado por:

( ) 2

2

2

22 ,

yf

xfyxf

∂∂+

∂∂=∇

Generalmente para el laplaciano se utilizan las máscaras mostradas en la figura 38. Nótese que el píxel central toma el valor negativo de la suma de todos los que lo rodean, de tal forma que la suma aritmética de todos los píxeles sea cero.

-1 -1

-1 8

-1 -1

-1

-1

-1

0 -1

-1 0

0 -1

0

-1

0

Figura 38. Máscaras utilizadas para el operador laplaciano.

Page 36: cursoimagenes

M. en C. José Jaime Esqueda Elizondo

35

En la figura 39 se presentan algunos ejemplos de detección de contornos.

Figura 39. Ejemplos de detección de contornos.

La detección de contornos se encuentra implementada en Matlab en el comando edge.

Page 37: cursoimagenes

M. en C. José Jaime Esqueda Elizondo

36

II. Manejo de las imágenes en Matlab La estructura básica de datos en Matlab es el arreglo, el cual se puede definir como un conjunto ordenado de datos reales o complejos. En el caso de las imágenes, estas pueden ser representadas por matrices formadas por conjuntos ordenados de valores reales que representan la intensidad de color o de niveles de gris. Matlab almacena la mayoría de las imágenes como arreglos bidimensionales (matrices) en los cuales cada elemento de la matriz corresponde a la intensidad de un píxel de la imagen. Por ejemplo, una imagen de 200 renglones por 300 columnas se almacena en Matlab como una matriz de 200x300. Algunas imágenes, como las imágenes a color (RGB), que requieren de un arreglo tridimensional, donde en el primer plano en el espacio tridimensional representa la intensidad de rojo de los píxeles, el segundo plano representa la intensidad de verde de los píxeles y el tercer plano representa la intensidad de azul de los píxeles. Esta convención hace que el trabajar con imágenes en Matlab sea similar al trabajar con matrices con datos de cualquier tipo. Por ejemplo, se puede seleccionar un solo píxel de una imagen-matriz de la forma I(2,15), con lo cual Matlab regresa el valor del píxel localizado en el renglón 2, columna 15 de la imagen-matriz I. II.1 Clases de almacenamiento usadas en el toolbox Por omisión, Matlab almacena la mayoría de los datos en clase double (doble). Los datos en estos arreglos se almacenan como datos de punto flotante de doble precisión (64 bits). En el caso de las imágenes, esta representación no es la ideal, debido a que en una imagen se tiene un número grande de píxeles. Por ejemplo, si se tiene una imagen de 1000 x 1000 píxeles tiene un millón de píxeles y debido a que cada píxel se representa con al menos un elemento del arreglo, se requerirían aproximadamente 8 MB de memoria para almacenarla. Para reducir el espacio en memoria requerido para almacenar imágenes, Matlab almacena los datos en arreglos de 8 o 16 bits sin signo, clases uint8 y uint16, respectivamente. Estos arreglos requieren cuando mucho la octava o cuarta parte de la memoria requerida por un arreglo tipo double. II.2 Conversiones entre tipos de imágenes Para ciertas operaciones es necesario convertir una imagen de su tipo original a otro tipo de imagen que facilite su procesamiento. Por ejemplo, si se desea filtrar una imagen a color almacenada como imagen indexada, primero se debe convertir la imagen a formato RGB. Esto es para que Matlab filtre los valores de intensidad de la imagen de forma apropiada. Si se intenta filtrar una imagen indexada, el filtro simplemente se aplica a los índices que se encuentran en la matriz indexada y los resultados no serán los deseados. En la Tabla II se presentan los tipos de imágenes y en la Tabla III se presentan los comandos usados para la conversión entre tipos de imágenes. En el Apéndice A se presenta más información sobre los tipos de imágenes.

Page 38: cursoimagenes

M. en C. José Jaime Esqueda Elizondo

37

Tabla II. Tipos de imágenes y clases numéricas

Tipo de imagen Clase de almacenamiento

Interpretación

Binaria lógica Arreglo de 1s y 0s Indexada1 double Arreglo de enteros en el rango [1, p] uint8 o uint16 Arreglo de enteros en el rango [1, p-1] Intensidad1 double Arreglo de valores en punto flotante, su

rango típico es [0, 1] uint8 o uint16 Arreglo de enteros, rango típico [0, 255]

o [0, 65535], respectivamente RGB (color verdadero) double Arreglo de valores en punto flotante de

m x n x 3 en el rango [0, 1] uint8 o uint16 Arreglo de enteros de m x n x 3 en el

rango [0, 255] o [0, 65535], respectivamente

1. El mapa de color asociado es un arreglo de p x 3 de valores en punto flotante en el rango [0, 1]. Para imágenes de intensidad, el mapa de color típicamente es una escala de gris. Tabla III. Comandos de conversión de imágenes Comando Descripción dither Crea una imagen binaria a partir de una imagen de intensidad en

escala de gris por difuminación. Crea una imagen indexada a partir de una imagen RGB por difuminación.

gray2ind Crea una imagen indexada a partir de una imagen de intensidad en escala de gris

grayslice Crea una imagen indexada a partir de una imagen en intensidad en escala gris mediante un umbral

im2bw Crea una imagen binaria a partir de una imagen de intensidad, imagen indexada o RGB basado en un umbral de luminancia

ind2rgb Crea una imagen RGB a partir de una imagen indexada mat2gray Crea una imagen de intensidad en escala de gris a partir de los datos

almacenados en una matriz escalándolos rgb2gray Crea una imagen de intensidad en escala de gris a partir de una

imagen RGB rgb2ind Crea una imagen indexada a partir de una imagen RGB II.2.1 Despliegue de imágenes indexadas Para desplegar una imagen indexada, se utiliza el comando imshow, pero se especifica tanto la matriz-imagen como el mapa de color de la forma: imshow(X,mapa), donde imshow despliega para cada píxel de X el color almacenado en la correspondiente columna del mapa de color.

Page 39: cursoimagenes

M. en C. José Jaime Esqueda Elizondo

38

II.2.2 Despliegue de imágenes de intensidad. Para desplegar las imágenes de intensidad (escala de gris) se utiliza imshow(I), donde imshow despliega la imagen escalando los valores de intensidad para que funcionen como índices de un mapa de color en escala de gris. Si I es tipo double, un píxel con valor 1.0 se despliega como blanco y los demás valores como niveles de gris. II.2.3 Despliegue de imágenes binarias El despliegue de imágenes binarias se sigue la siguiente sintaxis imshow(I). En Matlab esta clase de imágenes es de tipo logical, debido a que este tipo de imágenes solo contiene 1s (blanco) y 0s (negro). Para invertir los colores al desplegar la imagen, se utiliza la operación NOT en Matlab, es decir, se utiliza imshow(-BN). Para desplegar la imagen en otros dos colores se puede hacer uso de un mapa formado por los dos colores deseados. Por ejemplo, si se desea desplegar una imagen binaria solo en rojo y azul, imshow(I,[1 0 0; 0 0 1]). II.2.4 Despliegue de imágenes RGB Las imágenes RGB, también conocidas como imágenes de color verdadero (truecolor), representan directamente valores de color, mejor que usando un mapa de color. Para desplegar este tipo de imágenes, la sintaxis básica es imshow(RGB), donde RGB es un arreglo de m x n x 3. Para cada píxel (renglón, columna) de RGB, el comando imshow despliega el color representado por la tripleta (renglón, columna,1:3). II.2. 5 Tipos de imágenes en Matlab El toolbox de Procesamiento de Imágenes maneja cuatro tipos de imágenes básicos: imágenes indexadas, imágenes con intensidad, imágenes binarias e imágenes RGB, los cuales se discutirán a continuación. II.2.5.1 Imágenes indexadas Una imagen indexada consiste de una matriz de datos X y un mapa de color, mapa. Los datos de la matriz pueden ser de clase uint8, uint16 o double. El mapa de color es una matriz (arreglo) de m x 3 de clase double que contiene valores en punto flotante en el rango de 0 a 1. Cada una de las columnas especifica las componentes de rojo, verde y azul de un solo color. Una imagen indexada utiliza el mapeo directo de los valores de un píxel a los valores del mapa de color. El color para cada píxel de la imagen se determina usando el correspondiente valor de X como un índice dentro de mapa. El valor de 1 apunta a la primer columna del mapa, el valor 2 apunta a la segunda columna y así sucesivamente. Generalmente se almacena un mapa de color con una imagen indexada y automáticamente se carga al usar el comando imread. Sin embargo, el usuario no está limitado a usar el mapa de color por omisión. En la figura 40 se muestra la estructura de una imagen indexada. Los píxeles en la imagen son enteros, los cuales apuntan (índices) a los valores de color almacenados en el mapa de color.

Page 40: cursoimagenes

M. en C. José Jaime Esqueda Elizondo

39

Figura 40. Imagen indexada

La relación entre los valores de la imagen y el mapa de color depende de la clase de la matriz que almacena la imagen. Si la matriz es de clase double, el valor 1 apunta a la primera columna del mapa de color, el valor 2 apunta a la segunda columna y así sucesivamente. Si la matriz que almacena la imagen es de clase uint8 o uint16, existe un offset, el valor 0 apunta a la primer columna del mapa de color, el valor 1 apunta a la segunda columna, y así sucesivamente. El toolbox de Image Processing permite manejar imágenes de clase uint16, pero antes de procesar estas imágenes, deben convertirse a clase double o uint8. Para convertir a double, utilizar el comando im2double, para reducir la imagen a 256 colores o menos (clase uint8), utilizar el comando imapprox. II.2.5.2 Imágenes de intensidad Una imagen de intensidad es una matriz de datos, llamada I, cuyos valores representan intensidades dentro de un rango. Matlab almacena las imágenes de intensidad como una sola matriz, donde cada elemento corresponde a la intensidad de un píxel de la imagen. La matriz puede ser de clase double, uint8 o uint16. Debido a que las imágenes de intensidad rara vez se guardan con un mapa de color, pero Matlab usa un mapa de color para desplegarla. Los elementos en una matriz de intensidad representan varios niveles de intensidad o niveles de gris, donde generalmente el 0 representa el negro y la intensidad ya sea 1, 255 o 65535 representa el blanco. En la figura 41 se muestra una imagen de intensidad.

Page 41: cursoimagenes

M. en C. José Jaime Esqueda Elizondo

40

Figura 41 Imagen de intensidad.

II.2.5.3 Imágenes binarias En una imagen binaria, cada píxel asume un valor discreto; esencialmente dichos valores corresponden a 1 o 0, encendido o apagado. Una imagen binaria se almacena en un arreglo de píxeles 1s o 0s. En la figura 42 se muestra una imagen binaria.

Figura 42. Imagen binaria

II.2.5.4 Imágenes RBG A las imágenes RGB generalmente se les conoce como imágenes de color verdadero. En Matlab estas imágenes se almacenan mediante 3 arreglos de dimensión m x n que definen

Page 42: cursoimagenes

M. en C. José Jaime Esqueda Elizondo

41

los componentes de colores rojo, verde y azul para cada píxel. En estas imágenes, el color se forma mediante la combinación de las intensidades almacenadas en cada plano de color para cada píxel. En la Tabla IV se presentan algunos comandos de Matlab que pueden utilizarse para determinar el tipo de imagen con que se está trabajando Tabla IV. Comandos informativos Comando Descripción isbw Regresa un valor verdadero (1) si la imagen es binaria isgray Regresa un valor verdadero (1) si la imagen es de intensidad isind Regresa un valor verdadero (1) si la imagen es indexada isrgb Regresa un valor verdadero (1) si la imagen es RGB imfinfo Regresa información sobre la imagen Los comandos listados en la Tabla III se pueden utilizar de la siguiente forma: bandera = isbw(A) info = imfinfo(archivo,formato) info = imfinfo(archivo) II.2.6 Selección de una sección de imágenes en Matlab Para tomar una sección de cualquier imagen se utiliza el comando imcrop. A continuación se presenta la sintaxis de este comando: I2 =imcrop(I) X2 =imcrop(X,map) RGB2 =imcrop(RGB) Si se omite el argumento de entrada, el comando opera sobre la imagen actual. Para seleccionar la región a cortar, simplemente presione el botón derecho del ratón y forme un rectángulo sobre la región. Si presiona la tecla Shift, se captura una sección cuadrada. Cuando se suelta el botón del ratón, el comando regresa la sección seleccionada al argumento de salida especificado. Si no se especifica ningún argumento, el comando simplemente despliega la imagen seleccionada en una nueva figura. También es posible seleccionar la sección de interés de forma no interactiva; en este caso se debe especificar el rectángulo de la forma: I2 =imcrop(I,[xmin ymin ancho alto]) X2 =imcrop(X,map,[xmin ymin ancho alto]) RGB2 =imcrop(RGB,[xmin ymin ancho alto])

Page 43: cursoimagenes

M. en C. José Jaime Esqueda Elizondo

42

III. Ejercicios A continuación se presenta una serie de ejercicios Ejercicio 1. Formación de imágenes y mapas de color. Crear una matriz de 32x32, desplegarla como imagen usando el comando imshow, cambiar los mapas de color con el comando colormap y observar los cambios. >> y=rand(32,32); >> imshow(y) >> colormap(jet) >> colormap(hot)

Ejercicio 2. Cargar y desplegar una imagen. Primero se limpia el espacio de trabajo y se cierra cualquier ventana que este abierta >> clear all, close all

Para cargar una imagen, se utiliza el comando imread, en este caso se cargará una imagen en formato TIFF (consulte el apéndice A para saber con qué formatos puede operar el toolbox de Image Processing) llamada pout.tif, la cual viene con el toolbox de Image Processing y se guarda la imagen en un arreglo llamado I. >>I=imread(‘pout.tif’)

La imagen se despliega mediante el comando imshow. >>imshow(I)

Repetir el ejercicio usando la imagen a color flowers.tif. Ejercicio 3.Verificar el almacenamiento de la imagen cargada en la memoria. Teclear el comando whos para verificar como se almacenó I en la memoria. >> whos

y Matlab despliega Name Size Bytes Class I 291x240 69840 uint8 array Grand total is 69840 elements using 69840 bytes

Ejercicio 4. Obtención de el histograma de una imagen. Para observar la distribución de las intensidades de gris en la imagen se utiliza el comando imhist.. Primero cargar la imagen pout.tif y posteriormente desplegar el histograma de la imagen, tal como se muestra en la figura 43. >>I=imread(‘pout.tiff’); >>imhist(I) Repetir con la imagen a color flowers.tif Ejercicio 5. Amplificación/Reducción de imágenes Para verificar los métodos de amplificación de imágenes se utilizan los comandos imresize, fft2 e ifft2. Primero cárguese en memoria la imagen lenaojo.tiff, posteriormente

Page 44: cursoimagenes

M. en C. José Jaime Esqueda Elizondo

43

utilice el comando imresize y observe los resultados con las opciones nearest (vecino, la cual es la opción por omisión), bilinear (bilineal), bicubic (bicúbica). >>I=imread('lenaojo.tiff'); >>imshow(I); >>J=imresize(I,2); >>imshow(J) Posteriormente implemente el método de amplificación de imágenes usando la transformada de Fourier y compare los resultados obtenidos con lo obtenido con el comando imresize. El resultado se muestra en la figura 16.

Figura 43. Histograma obtenido de la imagen pout.tif.

Ejercicio 6 Rotación de una imagen Para rotar una imagen se utiliza el comando imrotate, el cual acepta principalmente dos argumentos: la imagen a rotar y el ángulo, este último puede especificarse en grados. Si se especifica un valor positivo, la imagen gira en sentido contrario a las manecillas del reloj; si se especifica un valor negativo, se rota la imagen en sentido de las manecillas del reloj. También se puede agregar como argumento el método de interpolación a utilizar y el tamaño de la imagen procesada. Rote 30º la imagen lenaojo.tiff utilizando los tres métodos (vecino, bilineal y bicúbico), los resultados se muestran en la figura 17. >>I=imread('lenaojo.tiff'); >>imshow(I); >>J=imrotate(I,30,'nearest'); >>imshow(J)

Page 45: cursoimagenes

M. en C. José Jaime Esqueda Elizondo

44

Ejercicio 7. Binarización de imágenes La binarización de una imagen se obtiene con el comando im2bw. Cargue la imagen cameraman.tif y binarice la imagen usando diferentes valores de umbral. >>I=imread('cameraman.tif'); >>imshow(I); >>J=im2bw(I); >>figure >>imshow(J) El resultado de la binarización se observa en la figura 27. Ejercicio 8. Operaciones aritméticas con imágenes. Aplique las operaciones aritméticas suma, resta y multiplicación a las imágenes rice.tif y cameraman.tif. Realice las operaciones expuestas entre imágenes. Ahora pruebe con la imagen flowers.tif las operaciones ahora usando un escalar. Compare sus resultados con los mostrados en las figuras 9 a 15. Repita las operaciones con las imágenes a color lena256a.tif y lena256b.tif. Ejercicio 9. Operaciones aritméticas con imágenes. Aplique las operaciones lógicas a las imágenes rice.tif y cameraman.tif. Realice las operaciones expuestas entre imágenes. Compare los resultados obtenidos con los mostrados en la figura 16. Ejercicio 10. Generación de ruido y filtrado de imágenes. Añada diferentes tipos de ruido a las imágenes cameraman.tif y lena256a.tif. Posteriormente pruebe los diferentes tipos del filtros existentes. Ejercicio 11. Modificación del contraste y ecualización de una imágenes. Utilice el comando histeq para ecualizar la imagen de lena.tiff, cameraman.tif y pout.tif. Ejercicio 12. Detección de contornos Utilice el comando edge para hallar contornos en las imágenes lena.tiff, eight.tif y rice.tif. Ejercicio 13. Detección de características usando correlación. Utilice la correlación para encontrar la letra “a” en la imagen text.tif, tal como se muestra en el siguiente programa bw =imread('text.tif'); a=bw(59:71,81:91);%Extrae la letra a buscar. imshow(bw); figure,imshow(a); C =real(ifft2(fft2(bw).*fft2(rot90(a,2),256,256))); max(C(:))%Encuentra el valor maximo de C thresh =45;%Utiliza un umbral menor que el valor maximo figure,imshow(C >thresh)%Despliega los píxeles con valor mayor al

%umbral

Page 46: cursoimagenes

M. en C. José Jaime Esqueda Elizondo

45

Ejercicio 14. Compresión de imágenes usando la transformada discreta coseno. Aplique la transformada discreta coseno a las imágenes autum.tif, lena.tiff y pout.tif siguiendo el ejemplo umbral=10; RGB = imread('autumn.tif'); I = rgb2gray(RGB); subplot(221),imshow(I), title('Original') J = dct2(I); figure(1) subplot(222),imshow(log(abs(J)),[]), title('Transformada') J(abs(J)<umbral) = 0; K = idct2(J); subplot(223),imshow(log(abs(J)),[]); title('Cuantizada') subplot(224), imshow(K,[0 255]), title('Reconstruida')

Page 47: cursoimagenes

M. en C. José Jaime Esqueda Elizondo

46

Apéndice A. Formatos de Imágenes ¿Qué son los formatos gráficos? Básicamente, los formatos gráficos son archivos en los cuales se guarda información que conforma una imagen. Cada formato es independiente. Las posibilidades que ofrece cada formato con respecto a la gama de colores, a la compatibilidad, a la rapidez de carga, etc., merece ser explicada para determinar cuál de ellos es el más adecuado para la tarea que estamos realizando. Con respecto a la estructura, la mayoría posee una cabecera que indica al programa que lo solicite, las características de la imagen que almacenan; por ejemplo su color, tipo, resolución, etc. Cada formato tiene una organización propia de su estructura. Se pueden dividir en dos grandes grupos: los formatos vectoriales y los formatos bitmap (mapa de bits). Formatos vectoriales Son más simples que los bitmap. Consisten en una serie de dibujos lineales basados en una lista de objetos gráficos, por ejemplo: líneas, curvas, triángulos, círculos, rectángulos, etc. Estos objetos, y muchos más, ubicados estratégicamente en la pantalla, forman dibujos lineales complejos. En este tipo de formatos las áreas vacías entre las líneas pueden ser llenadas con colores o con "rellenos", pequeños diseños que se repiten una y otra vez sin dejar espacios vacíos hasta llenar el área en cuestión. El tamaño de las imágenes almacenadas en este tipo de formatos puede ser modificado sin notar pérdida alguna de calidad. Gracias a esta característica son muy útiles a la hora de imprimir imágenes. Formatos bitmap Contienen imágenes basadas en pixeles (por ejemplo una imagen cuya resolución es de 640 x 480 pixeles, contiene 640 pixeles horizontales y 480 pixeles verticales). Las imágenes generadas por scanner son de tipo bitmap. Cuanto mayor sea la gama de colores, más realismo se consigue con este tipo de formato. Las imágenes bitmap poseen un tamaño natural en el cual se imprimirán perfectamente, pero, a diferencia de las vectoriales, no ofrecen grandes posibilidades con respecto a la variación del tamaño. Al aumentar el tamaño bruscamente, es fácil notar una gran disminución de la calidad. Otro punto en contra de los formatos bitmap es la cantidad de memoria y espacio que ocupan. Debido a esto, la mayoría de ellos utilizan diversos métodos de compresión de la información que constituye la imágen. Nota: El bitmap o mapa de bits es una Imagen formada por miles o millones de puntos de colores, una junto a otra y una debajo de otra, pueden tener una profundidad de colores de: 16, 256, color de Alta densidad (65,536 colores) o Color Verdadero (16,777,216 colores), y pueden o no incluir canal de transparencia pueden ser con o sin compresión. Ideales para digitalizar fotografías o diseño de carteles con efectos de sombras esfumados complejos, simulación de realce y otros.

Page 48: cursoimagenes

M. en C. José Jaime Esqueda Elizondo

47

Formatos de gráficos mas importantes BMP (Bitmapped File Format) Junto con el surgimiento de Windows 3.x se desarrolla un nuevo formato gráfico bitmap que constituye el estándar adoptado por este entorno operativo, es decir al BMP, en el cual están almacenadas las imágenes que constituyen los llamados wallpapers. Este formato guarda las imágenes descomprimidas, lo que significa mayor velocidad de carga y mayor espacio requerido. Con respecto a la resolución, cualquiera es aceptable. Las imágenes pueden ser de 1, 4, 8 y 24 bits. La estructura de los BMPs es sencilla: se trata de un header que contiene varias características de la imagen. Este encabezado está compuesto por información acerca del tamaño, el número de colores, y una paleta de colores (si es necesario) de la imagen. A continuación del encabezado se encuentra la información que constituye la imagen en sí. Tiene una curiosa forma de almacenarla: comienza desde la última línea inferior. Es por eso que los programas encargados de exhibir los BMPs en pantalla trazan la imagen de abajo hacia arriba. Es un formato muy utilizado en la actualidad y la mayoría de las aplicaciones lo utilizan.

GIF (Graphic Interchange Format) Es el formato gráfico bitmap por excelencia. Fue creado por Compuserve en junio de 1987 y con el paso del tiempo se ha convertido en el formato más difundido en el mundo. A la primera versión se la llamó GIF87a, y a la segunda, GIF89a. Esta última versión presenta nuevas características para facilitar el manejo de imágenes en este formato. Los GIFs utilizan una paleta de entre 2 y 256 colores. Poseen una rutina de compresión muy eficaz que, aunque demora un poco la carga, reduce los archivos a una tamaño mucho menor que otros formatos. Gracias a esa rutina de compresión que empequeñece los archivos, el GIF es el formato óptimo para ser bajado de BBS o Internet. La resolución máxima alcanzada es la de 1024 x 768 pixels en 256 colores, pero no hay razón por la cual no pueda crearse una imagen de mayor tamaño. Incluso hay GIFs que almacenan más de una imagen en un solo archivo, ideal para hacer slideshows. Su estructura está basada en bloques. Sobre todo desde la incorporación del GIF 89a, se ha dado más importancia a los bloques. Estos pueden contener uno de estos elementos: una imagen, instrucciones acerca de cómo exhibirla, texto, información característica de alguna aplicación, un marcador que determina el final del archivo, etc. Muchos GIFs solamente contienen un bloque que determina su imagen. Todos los GIFs poseen dos tipos de paleta: la paleta global y la paleta local. La global determina los colores de todas las imágenes almacenadas en el GIF, y la local determina específicamente la paleta de cada imagen del GIF (en el caso de haber una sola imagen, la única paleta disponible será la global). Existe un bloque llamado comment block, o "bloque de comentarios", donde puede incluirse un breve comentario personal acerca de la imagen en cuestión. Incluso existe una opción para aplicar a los GIF llamada interlacing. Consiste en lo siguiente: generalmente, cuando un programa exhibe un GIF en pantalla, comienza desde la primera línea superior hasta llegar a la última línea inferior y de una pasada completa la imagen. Pero si el GIF es interlaced, la imagen se visualizará de otra manera: harán falta cuatro pasadas en lugar de una. En cada pasada se visualizan líneas que conforman la imagen, pero esta vez no aparecen seguidas una de la otra, sino distribuidas en la parte superior, central e inferior de la imagen. Este proceso se repite hasta finalizar las cuatro pasadas y

Page 49: cursoimagenes

M. en C. José Jaime Esqueda Elizondo

48

completar esa imagen. Gracias al interlacing visualizamos distintas partes de la imagen al bajarla de Internet o un BBS, y es posible darse cuenta si realmente nos sirve antes de que la imagen esté completa. Si esa imagen no es lo que esperábamos, es posible cancelar la operación. Gracias a la popularidad de este formato, se han desarrollado infinidad de programas shareware para manipular GIFs. Ya sea para exhibirlos, modificarlos, convertirlos o incluso comprimirlos. Si alguno de estos programas modifica el archivo .GIF, es muy probable que aparezca alguna información sobre esta aplicación en el application block.

IMG (Aplicación GEM) Este formato bitmap es el utilizado por la antigua aplicación GEM. Es capaz de almacenar imágenes de entre 2 y 256 colores. No hay restricciones con respecto al tamaño de las imágenes y utiliza una rutina de compresión medianamente eficaz. El único inconveniente es que hay muy pocas aplicaciones que lo utilizan, y se hace un poco pesado tener que convertir este formato a otro más conocido cuando haya que modificarlo y luego volver a convertirlo a IMG. JPG (JPEG) El formato JPEG ofrece los imprescindibles 16 millones de colores (truecolor), unido a una compresión realmente asombrosa (valores superiores a 20:1 son habituales). Sólo tiene una limitación: para obtener esos valores de compresión modifica sutilmente la imágen, descartándose su uso en aplicaciones en las que se desea mantener una calidad bit a bit. El diseño de este formato está pensado para almacenar imágenes del "mundo real", también llamadas imágenes de tono continuo, como digitalizaciones o renderizaciones de alta calidad. Si se intenta almacenar imágenes de tipo vectorial o dibujos sencillos no realísticos, se observará como la compresión disminuye enormemente, y las modificaciones hechas sobre la imagen original por el algoritmo de compresión se observan a simple vista. La abreviación JPEG viene de las iniciales de Joint Photographic Experts Group. Se trata del grupo de expertos que definieron las bases de este formato. El formato JPEG sólo puede almacenar imágenes de 24 bits (true color), utilizando tres canales para su almacenamiento o de escala de grises, usando sólo un canal. La compresión JPEG consiste en una serie de complejas operaciones matemáticas, tales como: conversión del formato del color, transformación separada de coseno (DCT), cuantizaciones y codificación entrópica. JPEG, junto con GIF, son los formatos de imágenes usados en WWW.

TIFF (Tagged Image File Format - TIFF) O TIF Más que una imagen en una archivo, el formato TIF (formato de archivo de imagen etiquetada) contiene una serie de bloques que conforman la imagen. Estos bloques pueden contener cierta información sobre la imagen en sí, su tamaño, su manejo del color, información a las aplicaciones que utilicen ese archivo, texto, y hasta thumbnails. Un thumbnail o miniatura es una pequeña representación de una imagen mucho más extensa, a la cual el programa accede rápidamente y no pierde tiempo descomprimiendo toda la imagen. Sirve para ver el contenido del archivo de una manera rápida y segura. Este formato es totalmente compatible con PC y Macintosh. Soporta gran cantidad de colores y es uno de los formatos preferidos por las aplicaciones de hoy en día. Fue

Page 50: cursoimagenes

M. en C. José Jaime Esqueda Elizondo

49

introducido por Aldus Corporation y es el formato más usado cuando se trabaja con scanners debido a su útil manejo del color.

RAW (Raw Binary Image Format ) En el formato RAW (formato imagen crudo binario) se guardan la datos tal cual esta en la imagen sin ningún tipo de análisis de la misma, además los datos son brutos, o sea, están sin procesamiento y generalmente sin formatos, no teniendo informaciones de "header". Ellos son de fácil lectura y escritura y son almacenados en 8 bits por pixel, variando de 0 a 255 niveles de gris. En cuanto al cuerpo de la imagen, este formato es el más sencillo de todos porque no se utiliza ningún método de compresión para la imagen como se menciono antes, sino que simplemente se almacena en el disco de manera lineal. Es decir, se almacenan de forma consecutiva los datos de la imagen y de la paleta en el archivo, y opcionalmente la cabecera (header), que normalmente se coloca al principio. Con este método se puede saber el tamaño del archivo crudo resultante, sabiendo el ancho y el alto de la imagen, el número de colores y la longitud de la cabecera y la paleta. Los ficheros RAW (a veces también llamados SCR, CLP o similar) se basan pues simplemente en el almacenamiento de los mapas de bits en archivos binarios.

Page 51: cursoimagenes

M. en C. José Jaime Esqueda Elizondo

50

Bibliografía y Referencias [1] Arturo de la Escalera, “Visión por computador” [2] Juan García López, “Procesamiento Digital de Señales” [3] Mathworks, “Image Processing Toolbox, User`s Guide”, Version 3 [4] J. R. Parker, “Practical Computer Vision using C”, John Wiley & Sons, Inc., New York [5] A. Low, “Introductory Computer Vision and Image Processing”, Prentice-Hall, Englewood Cliffs, New Jersey, 1989 [6] Brend Jähne, “Digital Image Processing, Concepts, Algorithms and Scientific Applications”, 4th Edition, Springer [7] R. C. González, Woods, R. E., “Digital Image Processing”, Addison Wesley, 1993