fundamentos

Upload: david-pena

Post on 21-Jul-2015

136 views

Category:

Documents


0 download

TRANSCRIPT

Fundamentos de Procesamiento de ImgenesEvento:

CONATEC 2002

Sede:

INSTITUTO TECNOLGICO DE CIUDAD MADERO

Instructor: M. C. Jos Jaime Esqueda Elizondo Universidad Autnoma de Baja California, Unidad Tijuana

Noviembre de 2002

Dedicatorias y agradecimientosA 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 formacin que me dieron. Al Dr. Juan Garca Lpez, gua, maestro y amigo. Agradezco de sobremanera la ayuda de mis alumnos: Pedro Fernndez Robledo, Mario A. Velarde C., Nelson Hernndez Cons, Gisell Haydee Arias, Eduardo Hernndez Acosta, Pilar Ivette Snchez Bentez, Samuel Garca Alvarado, Julio Csar Trizn. Asimismo a Jos Luis Vargas Cruz y a Jorge Espinosa Caballero, que colaboraron con el Apndice A.

1 M. en C. Jos Jaime Esqueda Elizondo

IndiceI. Fundamentos de procesamiento de imgenes digitales ................................................... 5 I. Fundamentos de procesamiento de imgenes digitales ................................................... 5 I.1 Definiciones ............................................................................................................... 5 Color................................................................................................................................ 6 I.2 Relaciones entre pxeles............................................................................................. 7 I.2.1 Conectividad ....................................................................................................... 8 I.2.2 Distancia ............................................................................................................. 8 I.3 Ruido en imgenes..................................................................................................... 9 I.4 Procesamiento espacial .............................................................................................. 9 I.4.1 Operaciones aritmticas, lgicas y transformaciones geomtricas................... 10 I.4.2 Operaciones lgicas .......................................................................................... 13 I.4.3 Transformaciones geomtricas ......................................................................... 13 I.4.3.1 Interpolacin .............................................................................................. 13 I.4.3.2 Amplificacin/Reduccin de imgenes ..................................................... 14 I.4.3.3 Traslacin................................................................................................... 15 I.4.3.4 Convolucin bidimensional ....................................................................... 16 I.4.3.5 Correlacin................................................................................................. 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 imgenes bsico.......................................................................... 24 I.6.1 Binarizacin de una imagen.............................................................................. 24 I.6.2 Manipulacin del contraste ............................................................................... 25 I.6.3 Modificacin del contraste................................................................................ 27 I.6.4 Modificacin 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 Deteccin de contornos.............................................................................. 32 I.6.5.5.1 Tcnicas basadas en el gradiente ........................................................ 32 II. Manejo de las imgenes en Matlab............................................................................... 36 II.1 Clases de almacenamiento usadas en el toolbox .................................................... 36 II.2 Conversiones entre tipos de imgenes.................................................................... 36 II.2.1 Despliegue de imgenes indexadas ................................................................. 37 II.2.2 Despliegue de imgenes de intensidad. ........................................................... 38 II.2.3 Despliegue de imgenes binarias..................................................................... 38 II.2.4 Despliegue de imgenes RGB ......................................................................... 38 II.2. 5 Tipos de imgenes en Matlab ......................................................................... 38 II.2.5.1 Imgenes indexadas.................................................................................. 38 II.2.5.2 Imgenes de intensidad............................................................................. 39 II.2.5.3 Imgenes binarias ..................................................................................... 40 2 M. en C. Jos Jaime Esqueda Elizondo

II.2.5.4 Imgenes RBG.......................................................................................... 40 II.2.6 Seleccin de una seccin de imgenes en Matlab ........................................... 41 III. Ejercicios..................................................................................................................... 42 Ejercicio 1. Formacin de imgenes 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. Obtencin de el histograma de una imagen. .......................................... 42 Ejercicio 5. Amplificacin/Reduccin de imgenes ................................................. 42 Ejercicio 6 Rotacin de una imagen.......................................................................... 43 Ejercicio 7. Binarizacin de imgenes ...................................................................... 44 Ejercicio 8. Operaciones aritmticas con imgenes. ................................................. 44 Ejercicio 9. Operaciones aritmticas con imgenes. ................................................. 44 Ejercicio 10. Generacin de ruido y filtrado de imgenes. ....................................... 44 Ejercicio 11. Modificacin del contraste y ecualizacin de una imgenes............... 44 Ejercicio 12. Deteccin de contornos........................................................................ 44 Ejercicio 13. Deteccin de caractersticas usando correlacin. ................................ 44 Ejercicio 14. Compresin de imgenes usando la transformada discreta coseno. .... 45 Apndice A. Formatos de Imgenes ................................................................................. 46 Qu son los formatos grficos? ............................................................................... 46 Formatos vectoriales ................................................................................................. 46 Formatos bitmap........................................................................................................ 46 Formatos de grficos mas importantes...................................................................... 47 Bibliografa y Referencias................................................................................................. 50

Lista de FigurasFigura 1. Imagen de 16 pxeles ........................................................................................... 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 imgenes....................................................................................... 10 Figura 10. Aumento del brillo de la imagen usando la suma de un escalar a cada pxel de la imagen, imagen original (izquierda) e imagen modificada (derecha)........................... 11 Figura 11. Resta de dos imgenes, imagen original (izquierda), imagen a restar (centro) y resultado (derecha). ........................................................................................................... 11 Figura 12. Resta de un escalar (50) a cada pxel de la imagen original (izquierda) ......... 11 Figura 13 Multiplicacin de una imagen por si misma, imagen original (izquierda), imagen resultante (derecha). ............................................................................................. 12 Figura 14. Multiplicacin de una imagen por un escalar, imagen original (izquierda), imagen resultante (derecha). ............................................................................................. 12 Figura 15. Divisin de imgenes, se muestra la divisin de la imagen original (izquierda) entre el fondo (centro) dando como resultado la figura de la derecha. ............................. 13 Figura 16. Operaciones lgicas aplicadas a imgenes binarias......................................... 13 Figura 17. Imagen original ................................................................................................ 15 3 M. en C. Jos Jaime Esqueda Elizondo

Figura 18. Amplificacin de la figura 17 usando diferentes mtodos de interpolacin.... 15 Figura 19. Rotacin de la imagen de la figura 17 usando diferentes mtodos de interpolacin...................................................................................................................... 16 Figura 20. Imagen ............................................................................................................. 17 Figura 21. Mscara de convolucin. ................................................................................. 17 Figura 22. Mscara rotada para la convolucin. ............................................................... 17 Figura 23. Convolucin para obtener el valor de A(2,4) .................................................. 18 Figura 24. Insercin de ceros (zero padding) en los extremos.......................................... 18 Figura 25. Correlacin de A con h. ................................................................................... 19 Figura 26. Formacin de la seal cuadrada mediante la serie de Fourier. (a) cinco seales senoidales (trminos); (b) suma de dos trminos; (c) suma de tres trminos; (d) suma de cuatro trminos; (e) suma de cinco trminos; (f) suma de veinte trminos. ..................... 20 Figura 27. Divisin en cuatro partes iguales de la imagen transformada (B) ................... 22 Figura 28. Insercin de ceros para obtener la matriz B aumentada (B)........................... 23 Figura 29. Compresin de imgenes usando la TDC........................................................ 25 Fig. 30. Binarizacin de una imagen................................................................................. 25 Figura 31. Expansin del histograma de la imagen. ......................................................... 26 Figura 32. Modificacin de contraste................................................................................ 27 Figura 33. Caso general..................................................................................................... 27 Figura 34. Vecindad de a y obtencin de la mediana........................................................ 31 Figura 35. Realce de una imagen ...................................................................................... 31 Figura 36. Deteccin de contornos mediante la primera y segunda derivada................... 33 Figura 37. Mscaras para los operadores: Roberts, Prewitt, Sobel e Isotrpico. .............. 34 Figura 38. Mscaras utilizadas para el operador laplaciano.............................................. 34 Figura 39. Ejemplos de deteccin 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 TablasTabla I. Colores RGB.......................................................................................................... 6 Tabla II. Tipos de imgenes y clases numricas ............................................................... 37 Tabla III. Comandos de conversin de imgenes ............................................................. 37 Tabla IV. Comandos informativos .................................................................................... 41

4 M. en C. Jos Jaime Esqueda Elizondo

I. Fundamentos de procesamiento de imgenes digitalesI.1 DefinicionesVisin por computadora.- Consiste en la adquisicin, procesamiento, clasificacin y reconocimiento de imgenes digitales. Pxel.- Elemento bsico de una imagen (picture element). Imagen.- Arreglo bidimensional de pxeles con diferente intensidad luminosa (escala de gris).x

y

0 7 6 5

1 6 0 5

1 6 4 1

2 5 0 2

Figura 1. Imagen de 16 pxeles Si la intensidad luminosa de cada pxel se representa por n bits, entonces existirn 2n escalas de gris diferentes. Matemticamente, una imagen se representa por r = f ( x, y ) , donde r es la intensidad luminosa del pxel cuyas coordenadas son (x,y). Matemticamente, un sistema para procesar imgenes se representa como g ( x, y ) = T [ f ( x, y )] . Color.- El color se forma mediante la combinacin de los tres colores bsicos rojo, azul y verde (en ingls RGB). A continuacin se presentan algunas definiciones bsicas para comprender los espacios de color: Brillo.- Indica si un rea est ms o menos iluminada. Tono.- Indica si un rea parece similar al rojo, amarillo, verde o azul o a una proporcin de ellos. Luminosidad.- Brillo de una zona respecto a otra zona blanca en la imagen. Croma.- Indica la coloracin de un rea respecto al brillo de un blanco de referencia. Para obtener una imagen a color deben transformarse primero los parmetros cromticos en elctricos 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 combinacin de tres seales de luminancia cromtica distinta: rojo, verde, azul (Red, Green, Blue). La forma ms sencilla de obtener un color especfico es determinar la cantidad de color rojo, verde y azul que se requiere combinar

5 M. en C. Jos Jaime Esqueda Elizondo

para obtener el color deseado, ver la figura 2; para lo cual se realiza la suma aritmtica de las componentes: X = R + G + B, grficamente representada por un cubo.Azul Magenta

Cian

Blanco Gris Negro Rojo

Verde

Amarillo

Figura 2. Espacio de colores RGB. En la recta que une el origen con el valor mximo se encuentran ubicados los grises (escala de gris) debido a que sus tres componentes son iguales. Cuando una cmara adquiere una imagen a color, para cada pxel en color se tienen en realidad 3 componentes, una para cada uno de los colores bsicos (rojo, verde y azul); la ganancia mxima para cada componente corresponde a la longitud de onda de los tres colores bsicos.

ColorUn color puede definirse como la combinacin de tres colores bsicos: 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 bsicos rojo, verde y azul, respectivamente. En la tabla I se presentan ejemplos de colores definidos mediante estas tripletas. Tabla I. Colores RGB Color Blanco Rojo Amarillo Verde Turquesa Gris Rojo Oscuro Azul Aguamarina Negro

R 1 1 1 0 0 0.5 0.5 0 0.5 0

G 1 0 1 1 1 0.5 0 0 1 0

B 1 0 0 0 1 0.5 0 1 0.83 0 6

M. en C. Jos Jaime Esqueda Elizondo

Mapa de color El mapa de color es una matriz de n x 3, donde cada rengln es una tripleta de colores. El primer rengln corresponde al valor mnimo del eje de color y el ltimo rengln al mximo. Al definir diferentes distribuciones de intensidad de los tres colores bsicos, 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 representacin del nmero de pxeles de cierto nivel de gris en funcin de los niveles de gris.

I.2 Relaciones entre pxelesUn pxel 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 pxeles se llama vecindad 4 o 4 vecinos de p y se denota por N4(p), ver la figura 3. Ntese que para cada uno de estos pxeles hay una distancia de 1 de p y que en los bordes de la imagen algunos de estos pxeles quedarn fuera de la imagen.

(x-1,y)

(x,y-1)

(x,y)

(x,y+1)

(x+1,y)

Figura 3. Vecindad N4(p). Existen tambin 4 vecinos diagonales de p con coordenadas: (x+1,y+1), (x+1,y-1), (x1,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-1,y+1)

(x,y)

(x+1,y-1)

(x+1,y+1)

Figura 4. Vecindad ND(p).

7 M. en C. Jos Jaime Esqueda Elizondo

I.2.1 Conectividad La conectividad es un concepto importante utilizado para establecer los lmites de objetos en regiones dentro de una imagen. Para determinar si dos pxeles estn conectados se determina si son adyacentes en algn 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 pxeles pueden ser vecinos N4(p), pero se dice que estn conectados solo cuando tienen el mismo valor. I.2.2 Distancia La distancia o transformada de distancia proporciona una medicin de la separacin existente entre dos puntos dentro de una imagen. Dados tres pxeles, p, q y z, con coordenadas (x,y), (s,t) y (u,v), respectivamente, se puede definir una funcin de distancia D si se cumple: D( p, q ) 0, (D( p, q ) = 0, si p = q ) D( p, q ) = D(q, p ) D( p, z ) D( p, q ) + D(q, z ) Las funciones de distancia comnmente usadas son: distancia euclidiana, distancia Manhattan o de cuadra y distancia tablero de ajedrez. Distancia euclidiana entre p y q: DE ( p, q ) = (x s ) + ( y t ) . En la figura 5 se muestra la distancia euclidiana para una imagen de 5 por 5.2

8 5 2 5 8 5 2 1 2 5 2 1 0 1 2 5 2 1 2 5 8 5 2 5 8 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: D = xs + y t En la figura 6 se muestra la distancia Manhattan de una imagen de 5 por 5. 4 3 2 3 4 3 2 1 2 3 2 1 0 1 2 3 2 1 2 3 4 3 2 3 4 Figura 6. Distancia Manhattan para una imagen de 5 por 5. 8 M. en C. Jos Jaime Esqueda Elizondo

Distancia tablero de ajedrez: es similar a la distancia Manhattan, en donde se observa que los 4-vecinos estn a una distancia unitaria del pxel central; si se desea que los 8-vecinos estn a la misma distancia se toma: D( p, q ) = Max(x s, y t ) En la figura 7 se muestra la distancia tablero de ajedrez. 2 2 2 2 2 2 1 1 1 2 2 1 0 1 2 2 1 1 1 2 2 2 2 2 2 Figura 7. Distancia tablero de ajedrez.

I.3 Ruido en imgenesTodas las imgenes tienen cierta cantidad de ruido, la cual se puede deber a la cmara o al medio de transmisin de la seal. Generalmente el ruido se manifiesta como pxeles aislados que toman un nivel de gris diferente al de sus vecinos. Los algoritmos de filtrado que se vern ms adelante permiten eliminar o disminuir este ruido. El ruido puede clasificarse en los siguientes tipos: Gaussiano: produce pequeas variaciones en la imagen; generalmente se debe a diferentes ganancias en la cmara, ruido en los digitalizadores, perturbaciones en la transmisin, etc. Se considera que el valor final del pxel sera el ideal ms una cantidad correspondiente al error que puede describirse como una variable aleatoria gaussiana. Impulsional (sal y pimienta): el valor que toma el pxel no tiene relacin 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 saturacin del sensor o por un valor mnimo captado, si se ha perdido la seal en ese punto. Se encuentran tambin al trabajar con objetos a altas temperaturas, ya que las cmaras tienen una ganancia en el infrarrojo que no es detectable por el ojo humano; por ello las partes ms calientes de un objeto pueden llegar a saturar un pxel. Multiplicativo: La imagen obtenida es el resultado de la multiplicacin de dos seales. En la figura 8 se muestran los diferentes ruidos afectando a una imagen.

I.4 Procesamiento espacialEl procesamiento espacial esta formado por aquellas tcnicas que operan directamente sobre los valores de los pxeles de la imagen. Las transformaciones son de la siguiente forma: S (x, y ) = F (I (x, y )) donde I(x,y) es la imagen original, S(x,y) la imagen resultante y F la transformacin.

9 M. en C. Jos Jaime Esqueda Elizondo

I.4.1 Operaciones aritmticas, lgicas y transformaciones geomtricas. Las operaciones aritmticas ms usadas en procesamiento de imgenes son; suma, resta, multiplicacin y divisin. Para que se pueda llevar a cabo una operacin aritmtica, ambas imgenes deben ser del mismo tamao. En la figura 9 se muestra la suma de dos imgenes, la cual se realiza de la forma C ( x, y ) = A( x, y ) + B( x, y ) mediante el comando imadd en Matlab.

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

+

=

Figura 9. Suma de dos imgenes Tambin es posible aumentar el brillo a una imagen sumndole un valor constante a cada pxel. En la figura 10 se muestra el efecto de sumar un escalar (50) a una imagen, el cual se realiza de la forma B( x, y ) = A( x, y ) + a .

10 M. en C. Jos Jaime Esqueda Elizondo

Figura 10. Aumento del brillo de la imagen usando la suma de un escalar a cada pxel de la imagen, imagen original (izquierda) e imagen modificada (derecha). La resta de imgenes consiste en restar de una imagen el valor correspondiente de otra imagen. Esta operacin es un paso intermedio en algunos procesamientos ms complejos, como la deteccin de movimiento, etc. La resta, al igual que la suma de imgenes requiere que ambas imgenes sean de igual tamao. En la figura 11 se muestra el efecto de restar una imagen de otra, de la forma C ( x, y ) = A( x, y ) B( x, y ) mediante el comando imsubtract en Matlab.

-

=

Figura 11. Resta de dos imgenes, imagen original (izquierda), imagen a restar (centro) y resultado (derecha). En la figura 12 se muestra la resta de un escalar (50) a cada pxel de la imagen original, la cual se lleva a cabo de la forma B( x, y ) = A( x, y ) a .

Figura 12. Resta de un escalar (50) a cada pxel de la imagen original (izquierda) 11 M. en C. Jos Jaime Esqueda Elizondo

En el campo de las imgenes, la multiplicacin se puede llevar a cabo, entre dos imgenes del mismo tamao, multiplicando elemento a elemento cada uno de los pxeles de la imagen, de la forma C ( x, y ) = A( x, y ) B( x, y ) , en Matlab esto se realiza con el comando immultiply. En la figura 13 se muestra la multiplicacin de dos imgenes.

Figura 13 Multiplicacin de una imagen por si misma, imagen original (izquierda), imagen resultante (derecha). Cuando se multiplica cada uno de los pxeles de una imagen por un escalar, se le conoce como escalamiento, el cual se realiza de la siguiente forma B( x, y ) = a A( x, y ) . 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. Multiplicacin de una imagen por un escalar, imagen original (izquierda), imagen resultante (derecha). La divisin de imgenes consiste en una divisin de elemento a elemento, como las dems operaciones vistas anteriormente. La divisin entre imgenes puede utilizarse para detectar cambios en dos imgenes, sin embargo, en lugar de dar el cambio absoluto de cada pxel, la divisin da el cambio fraccional o razn de cambio entre los valores de dos pxeles correspondientes. A la divisin de imgenes tambin se le conoce como 12 M. en C. Jos Jaime Esqueda Elizondo

racionalizacin. En la figura 15 se presenta la divisin entre imgenes, la cual se realiza de la forma C ( x, y ) = A( x, y ) B( x, y ) .

Figura 15. Divisin de imgenes, se muestra la divisin de la imagen original (izquierda) entre el fondo (centro) dando como resultado la figura de la derecha. I.4.2 Operaciones lgicas Las principales operaciones lgicas utilizadas en el procesamiento de imgenes son: AND, OR, NOT, las cuales se aplican solo a imgenes binarizadas. En la figura 16 se muestran las operaciones lgicas aplicadas a imgenes binarias.

Figura 16. Operaciones lgicas aplicadas a imgenes binarias. I.4.3 Transformaciones geomtricas Las transformaciones geomtricas modifican las relaciones espaciales entre pxeles; a continuacin se presentan algunas. I.4.3.1 Interpolacin La interpolacin es el proceso en el cual se estiman los valores de una imagen en una seccin especfica, cuando por ejemplo, se cambia el tamao de una imagen y en la nueva imagen existen ms pxeles que en la imagen original. Dentro de Matlab los comandos 13 M. en C. Jos Jaime Esqueda Elizondo

imresize e imrotate utilizan interpolacin bidimensional como paso intermedio en sus procesos. De forma general, la interpolacin de una imagen se presenta como: f (x, y ) = g (i, j )h(x i, y j ) donde: g(x,y) es la imagen original, f(x,y) representa la imagen procesada y h(x,y) es la interpolacin (mscara). En el toolbox de Image Processing se encuentran implementados los siguientes mtodos de interpolacin: interpolacin por el vecino ms prximo, interpolacin bilineal e interpolacin bicbica. Dichos mtodos se explicarn ms delante de forma breve. Los tres mtodos de interpolacin funcionan de forma similar, en cada caso para determinar el valor para un pxel interpolado, se encuentra el punto en la imagen original que corresponde a la imagen interpolada. Se asigna el valor del pxel interpolado calculando el promedio ponderado de el conjunto de pxeles hallados en la vecindad de dicho punto. Los tres mtodos difieren en el conjunto de pxeles que consideran: Vecino ms prximo: al pxel interpolado se le asigna el valor del pxel que corresponde Interpolacin bilineal: el valor del pxel interpolado es el promedio ponderado de los pxeles en la vecindad 2x2 ms cercana. Interpolacin bicbica: el valor del pxel interpolado es el promedio ponderado de los pxeles presentes en la vecindad 4x4 ms cercana. Ntese que el nmero de pxeles considerado aumenta la complejidad del clculo, es por eso que la interpolacin bilineal es ms lenta que el mtodo del vecino ms prximo y el mtodo bicbico es ms lento que el mtodo bilineal. Ntese tambin que si se considera un mayor nmero de pxeles, se tendrn mejores resultados. Para la mayora de las funciones el mtodo utilizado por omisin es el de vecino ms prximo. Este mtodo produce resultados aceptables para todos los tipos de imgenes y es el nico mtodo apropiado para imgenes indexadas. Sin embargo, para imgenes de intensidad y RBG generalmente se especifica la interpolacin bilineal o bicbica porque estos mtodos proporcionan mejores resultados. Para imgenes RGB, la interpolacin se ejecuta en los planos de color rojo, verde y azul de forma individual. I.4.3.2 Amplificacin/Reduccin de imgenes Para el cambio de tamao de una imagen (amplificacin/reduccin) se utiliza el comando imresize. Este comando permite especificar: el tamao de la imagen de salida (procesada), el mtodo de interpolacin utilizado y el filtro a usar para evitar el efecto alias. El efecto alias se presenta al reducir el tamao de una imagen. Esto es debido a que se presenta una prdida de informacin cuando se reduce el tamao de una imagen. En las figuras 17 y 18 se presenta un ejemplo de amplificacin de imgenes usando los mtodos de interpolacin descritos anteriormente. La interpolacin mediante Fourier se expone ms adelante.

14 M. en C. Jos Jaime Esqueda Elizondo

Figura 17. Imagen original

Figura 18. Amplificacin de la figura 17 usando diferentes mtodos de interpolacin. I.4.3.3 Traslacin Si se requiere trasladar el origen de una imagen se aplican las ecuaciones: x f = xi + x o y f = yi + yo Que en coordenadas homogneas es: x f 1 0 y = 0 1 f 1 0 0 xo xi yo yi 1 1

15 M. en C. Jos Jaime Esqueda Elizondo

Rotacin respecto al origen x f cos y = sen f 1 0 Rotacin respecto a un punto cualquiera x f 1 0 y = 0 1 f 1 0 0 xo cos y o sen 1 0 sen cos 0 0 1 0 x o x i 0 0 1 y o y i 1 0 0 1 1 sen cos 0 0 xi 0 y i 1 1

En la figura 19 se muestra la rotacin de la figura 17 usando diferentes mtodos de interpolacin.

Figura 19. Rotacin de la imagen de la figura 17 usando diferentes mtodos de interpolacin. I.4.3.4 Convolucin bidimensional La convolucin bidimensional discreta es la base de algunos procesamientos comunes, como el filtrado de imgenes. En la convolucin, el valor de un pxel de salida se calcula mediante la suma ponderada de los pxeles vecinos. Dentro del campo del procesamiento de imgenes, la convolucin se realiza entre la imagen y una matriz (los coeficientes del filtro) llamada mscara para filtrar una imagen. En Matlab la convolucin bidimensional (aplicada a imgenes) se encuentra en el comando conv2. La convolucin de f(x,y) y h(x,y) est dada por: g (x, y ) = h(x, y ) f (x, y ) =i = j =

f (i, j )h(x i, y j )2 2

Lo ms comn es usar convoluciones de 3 x 3 elementos; entonces la ecuacin anterior se convierte en: g (x, y ) = h(x, y ) f (x, y ) = f (i, j )h(x i, y j )i = 0 j =0

que, por ejemplo, para obtener g(2,2) se tiene: g (2,2) = f (i, j )h(2 i,2 j ) = f (0,0 )h(2,2 ) + f (0,1)h(2,1) + f (0,2 )h(2,0 ) + ! 16 M. en C. Jos Jaime Esqueda Elizondoi =0 j =0 2 2

! + f (1,0 )h(1,2) + f (1,1)h(1,1) + f (1,2 )h(1,0 ) + ! ! + f (2,0 )h(0,2 ) + f (2,1)h(0,1) + f (2,2 )h(0,0 ) Considrese que la imagen es la mostrada en la figura 20:17 23 A= 4 10 11 24 5 6 12 18 1 7 13 19 25 8 14 20 21 2 15 16 22 3 9

Figura 20. Imagen y la mscara se muestra en la figura 21:8 h= 3 4 1 5 9 6 7 2

Figura 21. Mscara de convolucin. En la figura 22 se muestra como calcular el pxel de salida (procesada) mediante los siguientes pasos: 1. Rotar la mscara de convolucin 180 grados a partir del elemento del centro. La mscara rotada queda entonces como:2 7 6 9 5 1 4 3 8

Figura 22. Mscara rotada para la convolucin. 2. Sobreponer el elemento central de la mscara de tal forma que quede sobre el elemento de inters, en este caso el elemento (2,4) de A, tal como se muestra en la figura 23.

17 M. en C. Jos Jaime Esqueda Elizondo

17 23 4 10 11

24 5 6 12 18

1 7

2 7

8

9

4 15 3 16 8 22 3 9

5 14 1 20 21 2

6 13 19 25

Figura 23. Convolucin para obtener el valor de A(2,4) 3. Multiplicar cada peso (valor) de la mscara rotada por el pxel de A que se encuentra bajo la mscara. 4. Sumar los productos individuales obtenidos en el paso 3. Por ejemplo, para el pxel (2,4), el pxel 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.2 7 6 9 5 1 4 3 8

0 0 0

0 17 23 4 10 11

0 24 5 6 12 18

1 7 13 19 25

8 14 20 21 2

15 16 22 3 9

Figura 24. Insercin de ceros (zero padding) en los extremos. I.4.3.5 Correlacin La correlacin es una operacin parecida a la convolucin, en la cual el valor de un pxel de salida se calcula como la suma ponderada de los pxeles vecinos. La diferencia est en que la matriz de pesos o mscara, en este caso llamada ncleo o kernel de correlacin no se rota durante el clculo. La correlacin est dada por: g (x, y ) = h(x, y ) " f (x, y ) =i = j =

f (i, j )h(x + i, y + j )

18 M. en C. Jos Jaime Esqueda Elizondo

La correlacin se utiliza para encontrar el parecido entre pxeles de una imagen. Si los pxeles son iguales o parecidos, se dice que estn altamente correlacionados entre si. La correlacin permite hallar patrones. La diferencia entre la correlacin y la convolucin estriba en que la mscara de correlacin no se rota como en la convolucin. En la figura 25 se muestra como se calcula la correlacin para el pxel (2,4) de la imagen A usando como mscara de correlacin a h.17 23 4 10 11 24 5 6 12 18 1 7 8 3 8 1 6 15 7 16 2 22 3 9

5 14 9 20 21 2

4 13 19 25

Figura 25. Correlacin de A con h.

El algoritmo de la correlacin opera de la siguiente forma: 1. Sobreponer el elemento central de la mscara de tal forma que quede sobre el elemento de inters, en este caso el elemento (2,4) de A, tal como se muestra en la figura 22. 2. Multiplicar cada peso (valor) de la mscara rotada por el pxel de A que se encuentra bajo la mscara. 3. Sumar los productos individuales obtenidos en el paso 2. Por ejemplo, para el pxel (2,4), el pxel 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 frecuenciaEn el campo de las imgenes, el dominio de la frecuencia es aquel en el que una imagen se representa como la suma de seales peridicas con diferentes frecuencias. Por ejemplo, la transformada de Fourier de una imagen es la representacin 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 convolucin, el mejoramiento de imgenes, la deteccin de caractersticas, compresin, etc. I.5.1 Series de Fourier Dada una funcin peridica en el dominio del tiempo f(t), es lgico pensar que esta funcin se puede expresar mediante la suma de otras funciones peridicas. Lo anterior se expresa mediante las series de Fourier, las cuales dan las frmulas matemticas que

19 M. en C. Jos Jaime Esqueda Elizondo

expresan esta relacin con las funciones peridicas seno y coseno. As, cualquier funcin f(t) con periodo To se puede expresar como: f (t ) = a 0 + a k cos(k 0 t ) + bk sen(k 0 t )k =1

Donde: 1 a0 = T0

T0

0

2 f (t ) ft , a k = T0

T0

0

2 f (t ) cos(k 0 t )dt , bk = T0

T0

f (t )sen(k t )dt , 0 0

0

=

2 T0

La serie de Fourier de la seal cuadrada se puede representar como: 4 sen((2k + 1)t ) f (t ) = k =0 2k + 1 En la figura 26 se presenta la seal cuadrada1 0.5 0 -0.5 -1 0 1 0.5 0 -0.5 -1 0 1 0.5 0 -0.5 -1 0 1 2 3 (e) 4 5 6 1 2 3 (c) 4 5 6 1 0.5 0 -0.5 -1 0 1 2 3 (f) 4 5 6 1 2 3 (a) 4 5 6 1 0.5 0 -0.5 -1 0 1 2 3 (d) 4 5 6 1 0.5 0 -0.5 -1 0 1 2 3 (b) 4 5 6

Figura 26. Formacin de la seal cuadrada mediante la serie de Fourier. (a) cinco seales senoidales (trminos); (b) suma de dos trminos; (c) suma de tres trminos; (d) suma de cuatro trminos; (e) suma de cinco trminos; (f) suma de veinte trminos. I.5.2 Transformada de Fourier La transformada de Fourier es una extensin de las series de Fourier a seales no peridicas. El par transformado analtico de Fourier est dado por: F [x(t )] = X ( f ) = x(t ) = F1

x(t )e

j 2ft

dt (ec. de anlisis)

[X ( f )] = X ( f )e

j 2ft

1 df = 2

donde X ( ) = 2X ( f ) .

X ( )e

j t

d (ec. de sntesis)

20 M. en C. Jos Jaime Esqueda Elizondo

Para el caso unidimensional discreto, el par transformado de Fourier est dado por: F [x(n)] = X (k ) = x(n)en =0 N 1 j 2 kn N

; k = 0, 1, ..., N-1 (ec. de anlisis) ; n = 0, 1, ..., N-1 (ec. de sntesis)

F 1 [X (k )] = x(n) =

1 N

X ( k )ek =0

N 1

j 2 kn N

Para el caso bidimensional discreto, se tiene que: F [x(k , l )] = X (k , l ) = F 1 [X (k , l )] = x(m, n) =M 1 N 1 m=0 n=0

x(m, n)e1 MNM 1 N 1 k =0 l =0

j 2 km M

e

j 2 ln N

; k = 0, 1, ..., M-1; l = 0, 1, , N-1 ; m = 0, 1, ..., M-1; n = 0,1,, N-1

X (k , l )e

j 2 km M

e

j 2 ln N

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 informacin esencial sobre la estructura de la imagen. La amplitud por si sola implica solo que existe una estructura peridica 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 posicin. Por lo tanto, resulta obvio que si se obtiene un espectro de potencia, se tendra muy poca informacin sobre la imagen debido a que la fase se ha perdido. Si se asocia un nivel de gris con la amplitud de un proceso fsico, por ejemplo una oscilacin armnica, entonces el espectro de potencia proporciona la distribucin de la energa en el dominio de la frecuencia. I.5.2.1 Aplicaciones de la transformada de Fourier En esta seccin se presentan algunos procesamientos de imgenes 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. Convolucin rpida Una propiedad clave de la transformada de Fourier es que la multiplicacin de dos transformadas de Fourier de dos funciones corresponde a la convolucin de las funciones espaciales asociadas. Esta propiedad, junto con la transformada rpida de Fourier forman la base para el algoritmo de la convolucin. 21 M. en C. Jos Jaime Esqueda Elizondo

Supngase que A es una matriz de M por N y B es una matriz de P por Q; la convolucin 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 tamao sea una potencia de 2 debido a que el algoritmo de la fft2 es ms rpido 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 multiplicacin mediante el comando ifft2. Localizacin de caractersticas en imgenes La transformada de Fourier se utiliza tambin para realizar correlaciones. La correlacin se utiliza para localizar algunas caractersticas en una imagen. Por ejemplo si se desea encontrar la letra a en una imagen que contenga texto, se establece un patrn (seccin de la imagen con la caracterstica de bsqueda deseada) con la letra a . Posteriormente se obtiene la correlacin de la imagen patrn y la imagen original rotando 180 la imagen patrn y se utiliza la tcnica de convolucin basada en la transformada de Fourier, descrita anteriormente (Nota: la convolucin es equivalente a la correlacin si se rota el kernel de convolucin 180. Para buscar coincidencias en la imagen se utiliza la transformada de Fourier y la transformada inversa de Fourier. Amplificacin de imgenes Para realizar la ampliacin de una imagen se utiliza una interpolacin en el dominio del tiempo (espacial) mediante la transformada discreta de Fourier, siempre y cuando los lados de la imagen tengan un nmero de pxeles que sea potencia de dos. A continuacin se presenta el procedimiento para cuadruplicar el tamao 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.N 2 N I N 2 III IV II

N

Figura 27. Divisin en cuatro partes iguales de la imagen transformada (B) 3. Insertar N ceros a cada rengln 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. 22 M. en C. Jos Jaime Esqueda Elizondo

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 relacin es 4(2n-1), donde n es el nmero 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 amplificacin diferente de dos, por ejemplo un factor , debern agregarse a B ( -1) ceros.I I III II IV I Ceros III IV III Insercin de N ceros a cada rengln (b) Insercin de N ceros a cada columna (c) IV II Ceros II

Imagen (Matriz B) (a)

Figura 28. Insercin 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 tpica, la mayora de la informacin visualmente significativa de una imagen se concentra en solo unos cuantos coeficientes de la DCT. Por esta razn, la TDC es comnmente usada en aplicaciones de compresin de imgenes. Por ejemplo, la TDC es el corazn del algoritmo estndar de compresin de imgenes conocido como JPEG (Joint Photographic Experts Group). La transformada discreta coseno de una matriz A de M por N, tal como se define a continuacin: M 1 N 1 0 p M 1 (2m + 1) p (2n + 1)q cos , B pq = p q Amn cos 0 q N 1 2M 2N m =0 n =0 1 1 , q=0 , p=0 N M p = p = 2 2 1 q N 1 1 p M 1 M N Los valores Bpq son los coeficientes de la transformada discreta coseno de A. La TDC es invertible, y su inversa est dada por: Amn = p q B pq cosm =0 n = 0 M 1 N 1

(2m + 1) p (2n + 1)q cos , 2M 2N

0 m M 1 0 n N 1

23 M. en C. Jos Jaime Esqueda Elizondo

1 , p=0 M p = 2 1 p M 1 M

1 , q=0 N p = 2 1 q N 1 N

La ecuacin 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: 0 m M 1 (2m + 1) p (2n + 1)q p q cos cos , 0 n N 1 2M 2N A estas funciones se les llama funciones bsicas de la TDC, estos coeficientes Bpq se conocen como pesos aplicados a cada funcin base. La razn por la cual las imgenes pueden ser comprimidas y recuperadas exitosamente con pequeos errores es la gran cantidad de redundancia en las imgenes tpicas. El propsito de esta transformada es obtener un conjunto de coeficientes que representen la imagen con valores que no estn correlacionados (es decir, cada valor en el arreglo o imagen proporciona nueva informacin no dada por ningn otro valor en el arreglo). Algunos valores en el arreglo transformado dan poca o ninguna informacin acerca de la imagen original y pueden ser descartados. En la figura 29 se presenta un ejemplo de compresin usando la transformada discreta coseno (comando dct2) usado para transformar la imagen mostrada. La imagen transformada muestra de forma logartmica la distribucin de los niveles de gris en la imagen transformada. La imagen cuantizada muestra los niveles de gris transformados representativos de forma logartmica, 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 imgenes bsicoEn esta seccin se presentan y describen algunos procesamientos ms comunes. I.6.1 Binarizacin de una imagen La binarizacin 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 pxel 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.

24 M. en C. Jos Jaime Esqueda Elizondo

Figura 29. Compresin de imgenes usando la TDC.

Fig. 30. Binarizacin de una imagen I.6.2 Manipulacin 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 funcin 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 mnimos y mximos, respectivamente, puede definirse la funcin T(c) que asigna los nuevos valores de gris a partir de los antiguos: 25 M. en C. Jos Jaime Esqueda Elizondo

ca ba donde: a y b son los lmites inferior y superior, c es el valor de gris de la imagen original y A es el valor mximo que se desea que tengan los pxeles de la imagen. y = T (c ) = A

A

0

a

c

b

Figura 31. Expansin del histograma de la imagen. En la figura 32 se muestra el resultado de aplicar a la imagen la modificacin del contraste, procesamiento tambin conocido como ecualizacin de la imagen. El contraste (separacin 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 separacin entre los diferentes niveles de gris es mayor. En este caso la separacin es igual para todos los niveles de gris debido a que la transformacin es lineal. Ntese que aunque la imagen se ve mejor, la informacin es la misma en ambas imgenes, lo nico que se ha hecho es asignar nuevos niveles de gris, pero los pxeles que tenan 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 ms general la funcin buscada tendr la forma (ver la figura 33) x 0 xa y = T ( x) = ( x a) + y a a x b ( x b) + y bxL b donde: y, x son los niveles de gris de las imgenes resultante y original , , son ganancias de cada tramo a, b y L son los intervalos de ganancia

26 M. en C. Jos Jaime Esqueda Elizondo

Figura 32. Modificacin de contraste

vb

va

Imagen original

a

b Imagen original

L

Figura 33. Caso general I.6.3 Modificacin del contraste La modificacin del contraste consiste en aplicar una funcin a cada uno de los pxeles de la imagen, de la forma: p = m a donde: 27 M. en C. Jos Jaime Esqueda Elizondo

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 ms usuales se encuentran: Funcin inversa p = 255 m Funcin cuadrada Funcin cbica Funcin raz cuadrada Funcin raz cbica Funcin logartmica m2 255 m3 p= 255 2 p = 255m p= p = 3 255 2 m ln(1 + m) p = 255 ln(1 + 255)

El valor 255 se utiliza para normalizar los valores entre 0 y 255 si se trabaja con imgenes con niveles de gris de 8 bits, de lo contrario se debe remplazar este valor por el valor mximo representable con el nmero de bits utilizados. Con la funcin cuadrada y cbica se oscurece la imagen resultante. Con las funciones raz cuadrada, raz cbica y logartmica sucede lo inverso. I.6.4 Modificacin del histograma Los mtodos anteriores modifican cada nivel de gris y dependen nicamente de su valor y por lo tanto, son locales. Si se desea adquirir una informacin global de la imagen, la forma ms fcil 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 ms usual se conoce como ecualizacin del histograma, en la que se pretende que ste sea horizontal, es decir, que para todos los valores de gris se tenga el mismo nmero de pxeles. La ecualizacin del histograma se realiza trabajando sobre el histograma acumulado, el cual est dado por: H (i ) = h(k )k =0 i

Si el histograma fuera totalmente plano, el histograma para cada nivel de gris sera: NM G (i ' ) = (i + 1) 256 donde N y M son las dimensiones de la imagen y 256 corresponde al nmero de niveles dado por el nmero de bits con los que se representan (en este caso 8 bits). Como se desea que G(i) = H(i), se tiene que; 256 NM (i '+1) = H (i ) i ' = H (i ) 1 256 NM

28 M. en C. Jos Jaime Esqueda Elizondo

Debido a que los niveles de gris son nicamente valores enteros, se realiza un cambio en los niveles de gris de acuerdo a: 256 inuevo = Parte entera H (i anterior ) 1 NM I.6.5 Filtrado de una imagen El filtrado es una tcnica para modificar o mejorar a una imagen. Por ejemplo, un filtro puede resaltar o atenuar algunas caractersticas. El filtrado es una operacin de vecindario, en la cual el valor de un pxel dado en la imagen procesada se calcula mediante algn algoritmo que toma en cuenta los valores de los pxeles de la vecindad de la imagen original. I.6.5.1 Filtros lineales espaciales El ruido en una imagen es una caracterstica 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 seal que se suma a la seal (imagen) original, el nivel de gris de un pxel 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 ms o menos a un pxel determinado es aleatorio. Si se trata de un ruido Gaussiano, este esta definido por una distribucin normal de media cero y variancia tpica 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 ms sencillo e intuitivo es aquel que tiene coeficientes unitarios en todos los elementos, tal como se muestra a continuacin.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 pxeles, por lo que el ruido disminuye. Sin embargo, este filtro presupone que la influencia de todos los pxeles es igual. Otra consideracin es que cuanto ms alejado est el pxel del central, su valor ser menor y se obtiene la siguiente mscara:

29 M. en C. Jos Jaime Esqueda Elizondo

1

1

1

1

2

1

1

1

1

Si se desea dar mayor peso al pxel central que a sus vecinos, y a los vecinos tipo 4 que a los de tipo 8, se tiene1 2 1

2

4

2

1

2

1

En general, se tiene:1 b 1

b

b

2

b

1

b

1

debiendo ser la ganancia de todas ellas la unidad para no variar la imagen. El filtrado de imgenes 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 nmeros 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 pxeles de menor a mayor, y el pxel que se encuentra en (N-1)/2 es la mediana , tal como se muestra en la figura 34. A continuacin 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 30 M. en C. Jos Jaime Esqueda Elizondo

0 0 0

0 22 0 4 10 11 a

0 10 0 6 12 18 b 10 7 13 19 25 255 14 20 21 2 15 16 22 Mediana 3 9

vecindad de a = [0,0,0,0,22,10,0,0,0] Se ordena de mayor a menor vecindad de a = [0,0,0,0,0,0,0,10,22]

Figura 34. Vecindad de a y obtencin 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 eliminacin de ruido; consiste en enfatizar o resaltar aquellos pxeles 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 imgenes consiste en aumentar la ganancia de las altas frecuencia, es decir: 31 M. en C. Jos Jaime Esqueda Elizondo

Imagen resultante = (Ganancia)(Imagen Original) Bajas frecuencias De forma general, la mscara 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 Deteccin de contornos La deteccin de contornos es un paso intermedio en el reconocimiento de patrones en imgenes 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 pxel cambia rpidamente, 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 buscarn grandes picos y en el segundo cambios de signo, tal como se muestra en la figura 36. I.6.5.5.1 Tcnicas basadas en el gradiente Estas tcnicas se basan en una aproximacin al concepto de la derivada para espacios discretos. Esta generalizacin se basa en el clculo de diferencias entre pxeles vecinos; estas diferencias, segn la relacin de pxeles considerados, puede dar lugar a derivadas unidimensionales o bidimensionales, as como aplicarse en una direccin 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: f f f ( x, y ) = G x G y = x y

[

]

32 M. en C. Jos Jaime Esqueda Elizondo

f(x)

f ' (x)

f '' (x)

Figura 36. Deteccin de contornos mediante la primera y segunda derivada. El vector gradiente representa el cambio mximo de intensidad para el punto (x,y); su magnitud y direccin estn dados por:2 2 f = G xx + G y

Gy f = arctan G x

siendo la direccin del gradiente perpendicular al borde. Para reducir el costo computacional, generalmente se aplica: f = G x + G y Debido a que las imgenes digitales no son seales continuas, se tiene: f f f ( x, y ) = G x G y = x y que se puede representar mediante las mscaras:

[

]

Gx =Gy =

f xf y

-1

1

f(x,y)

-1 1

f(x,y)

33 M. en C. Jos Jaime Esqueda Elizondo

Estas mscaras generalmente no se utilizan debido a que son muy poco sensibles al ruido al tomar en cuenta solamente la informacin de dos pxeles. Entre los filtros (operadores) ms usados, que adems permiten obtener un gradiente suavizado, se encuentran: Roberts, Prewitt, Sobel e Isotrpico. En la figura 37 se muestran las mscaras referentes a estos operadores.0 1 -1 0 -1 0 0 1 -1 -1 -1 0 0 0 1 1 1 -1 0 1 -1 0 1 -1 0 1

Operador de Roberts

Operador de Prewitt -1 -2 -1 0 0 0 1 2 1 -1 0 1 -2 0 2 -1 0 1 -1 0 0 0 12

-1 0 1

20

-1 0 1

2-1

1

2

Operador de Sobel

Operador Isotrpico

Figura 37. Mscaras para los operadores: Roberts, Prewitt, Sobel e Isotrpico.

I.6.5.5.2 Tcnicas basadas en el laplacianoEl laplaciano es la segunda derivada de una funcin y representa la derivada de esta respecto a todas las direcciones, y esta dado por: 2 f 2 f 2 f (x, y ) = 2 + 2 x y Generalmente para el laplaciano se utilizan las mscaras mostradas en la figura 38. Ntese que el pxel central toma el valor negativo de la suma de todos los que lo rodean, de tal forma que la suma aritmtica de todos los pxeles sea cero. -1 -1 -1 -1 8 -1 -1 -1 -1 0 -1 0 -1 0 -1 0 -1 0

Figura 38. Mscaras utilizadas para el operador laplaciano.

34 M. en C. Jos Jaime Esqueda Elizondo

En la figura 39 se presentan algunos ejemplos de deteccin de contornos.

Figura 39. Ejemplos de deteccin de contornos. La deteccin de contornos se encuentra implementada en Matlab en el comando edge.

35 M. en C. Jos Jaime Esqueda Elizondo

II. Manejo de las imgenes en MatlabLa estructura bsica 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 imgenes, 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 mayora de las imgenes como arreglos bidimensionales (matrices) en los cuales cada elemento de la matriz corresponde a la intensidad de un pxel de la imagen. Por ejemplo, una imagen de 200 renglones por 300 columnas se almacena en Matlab como una matriz de 200x300. Algunas imgenes, como las imgenes 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 pxeles, el segundo plano representa la intensidad de verde de los pxeles y el tercer plano representa la intensidad de azul de los pxeles. Esta convencin hace que el trabajar con imgenes en Matlab sea similar al trabajar con matrices con datos de cualquier tipo. Por ejemplo, se puede seleccionar un solo pxel de una imagen-matriz de la forma I(2,15), con lo cual Matlab regresa el valor del pxel localizado en el rengln 2, columna 15 de la imagen-matriz I.

II.1 Clases de almacenamiento usadas en el toolboxPor omisin, Matlab almacena la mayora de los datos en clase double (doble). Los datos en estos arreglos se almacenan como datos de punto flotante de doble precisin (64 bits). En el caso de las imgenes, esta representacin no es la ideal, debido a que en una imagen se tiene un nmero grande de pxeles. Por ejemplo, si se tiene una imagen de 1000 x 1000 pxeles tiene un milln de pxeles y debido a que cada pxel se representa con al menos un elemento del arreglo, se requeriran aproximadamente 8 MB de memoria para almacenarla. Para reducir el espacio en memoria requerido para almacenar imgenes, 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 imgenesPara 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 sern los deseados. En la Tabla II se presentan los tipos de imgenes y en la Tabla III se presentan los comandos usados para la conversin entre tipos de imgenes. En el Apndice A se presenta ms informacin sobre los tipos de imgenes. 36 M. en C. Jos Jaime Esqueda Elizondo

Tabla II. Tipos de imgenes y clases numricas Tipo de imagen Clase de almacenamiento Binaria lgica Indexada1 double uint8 o uint16 Intensidad1 double

Interpretacin

Arreglo de 1s y 0s Arreglo de enteros en el rango [1, p] Arreglo de enteros en el rango [1, p-1] Arreglo de valores en punto flotante, su rango tpico es [0, 1] Arreglo de enteros, rango tpico [0, 255] uint8 o uint16 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] Arreglo de enteros de m x n x 3 en el uint8 o uint16 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 imgenes de intensidad, el mapa de color tpicamente es una escala de gris. Tabla III. Comandos de conversin de imgenes Comando Descripcin dither Crea una imagen binaria a partir de una imagen de intensidad en escala de gris por difuminacin. Crea una imagen indexada a partir de una imagen RGB por difuminacin. 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 escalndolos 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 imgenes 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 pxel de X el color almacenado en la correspondiente columna del mapa de color.

37 M. en C. Jos Jaime Esqueda Elizondo

II.2.2 Despliegue de imgenes de intensidad. Para desplegar las imgenes 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 pxel con valor 1.0 se despliega como blanco y los dems valores como niveles de gris. II.2.3 Despliegue de imgenes binarias El despliegue de imgenes binarias se sigue la siguiente sintaxis imshow(I). En Matlab esta clase de imgenes es de tipo logical, debido a que este tipo de imgenes solo contiene 1s (blanco) y 0s (negro). Para invertir los colores al desplegar la imagen, se utiliza la operacin 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 imgenes RGB Las imgenes RGB, tambin conocidas como imgenes de color verdadero (truecolor), representan directamente valores de color, mejor que usando un mapa de color. Para desplegar este tipo de imgenes, la sintaxis bsica es imshow(RGB), donde RGB es un arreglo de m x n x 3. Para cada pxel (rengln, columna) de RGB, el comando imshow despliega el color representado por la tripleta (rengln, columna,1:3). II.2. 5 Tipos de imgenes en Matlab El toolbox de Procesamiento de Imgenes maneja cuatro tipos de imgenes bsicos: imgenes indexadas, imgenes con intensidad, imgenes binarias e imgenes RGB, los cuales se discutirn a continuacin. II.2.5.1 Imgenes 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 pxel a los valores del mapa de color. El color para cada pxel 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 automticamente se carga al usar el comando imread. Sin embargo, el usuario no est limitado a usar el mapa de color por omisin. En la figura 40 se muestra la estructura de una imagen indexada. Los pxeles en la imagen son enteros, los cuales apuntan (ndices) a los valores de color almacenados en el mapa de color.

38 M. en C. Jos Jaime Esqueda Elizondo

Figura 40. Imagen indexada La relacin 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 imgenes de clase uint16, pero antes de procesar estas imgenes, 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 Imgenes de intensidad Una imagen de intensidad es una matriz de datos, llamada I, cuyos valores representan intensidades dentro de un rango. Matlab almacena las imgenes de intensidad como una sola matriz, donde cada elemento corresponde a la intensidad de un pxel de la imagen. La matriz puede ser de clase double, uint8 o uint16. Debido a que las imgenes 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.

39 M. en C. Jos Jaime Esqueda Elizondo

Figura 41 Imagen de intensidad. II.2.5.3 Imgenes binarias En una imagen binaria, cada pxel asume un valor discreto; esencialmente dichos valores corresponden a 1 o 0, encendido o apagado. Una imagen binaria se almacena en un arreglo de pxeles 1s o 0s. En la figura 42 se muestra una imagen binaria.

Figura 42. Imagen binaria II.2.5.4 Imgenes RBG A las imgenes RGB generalmente se les conoce como imgenes de color verdadero. En Matlab estas imgenes se almacenan mediante 3 arreglos de dimensin m x n que definen 40 M. en C. Jos Jaime Esqueda Elizondo

los componentes de colores rojo, verde y azul para cada pxel. En estas imgenes, el color se forma mediante la combinacin de las intensidades almacenadas en cada plano de color para cada pxel. 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 Descripcin 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 informacin 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 Seleccin de una seccin de imgenes en Matlab Para tomar una seccin de cualquier imagen se utiliza el comando imcrop. A continuacin 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 regin a cortar, simplemente presione el botn derecho del ratn y forme un rectngulo sobre la regin. Si presiona la tecla Shift, se captura una seccin cuadrada. Cuando se suelta el botn del ratn, el comando regresa la seccin seleccionada al argumento de salida especificado. Si no se especifica ningn argumento, el comando simplemente despliega la imagen seleccionada en una nueva figura. Tambin es posible seleccionar la seccin de inters de forma no interactiva; en este caso se debe especificar el rectngulo 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])

41 M. en C. Jos Jaime Esqueda Elizondo

III. EjerciciosA continuacin se presenta una serie de ejercicios Ejercicio 1. Formacin de imgenes 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 apndice 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 despliegaName I Size 291x240 Bytes 69840 Class uint8 array

Grand total is 69840 elements using 69840 bytes

Ejercicio 4. Obtencin de el histograma de una imagen. Para observar la distribucin 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. Amplificacin/Reduccin de imgenes Para verificar los mtodos de amplificacin de imgenes se utilizan los comandos imresize, fft2 e ifft2. Primero crguese en memoria la imagen lenaojo.tiff, posteriormente 42 M. en C. Jos Jaime Esqueda Elizondo

utilice el comando imresize y observe los resultados con las opciones nearest (vecino, la cual es la opcin por omisin), bilinear (bilineal), bicubic (bicbica).>>I=imread('lenaojo.tiff'); >>imshow(I); >>J=imresize(I,2); >>imshow(J)

Posteriormente implemente el mtodo de amplificacin de imgenes 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 Rotacin 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. Tambin se puede agregar como argumento el mtodo de interpolacin a utilizar y el tamao de la imagen procesada. Rote 30 la imagen lenaojo.tiff utilizando los tres mtodos (vecino, bilineal y bicbico), los resultados se muestran en la figura 17.>>I=imread('lenaojo.tiff'); >>imshow(I); >>J=imrotate(I,30,'nearest'); >>imshow(J)

43 M. en C. Jos Jaime Esqueda Elizondo

Ejercicio 7. Binarizacin de imgenes La binarizacin 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 binarizacin se observa en la figura 27. Ejercicio 8. Operaciones aritmticas con imgenes. Aplique las operaciones aritmticas suma, resta y multiplicacin a las imgenes rice.tif y cameraman.tif. Realice las operaciones expuestas entre imgenes. 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 imgenes a color lena256a.tif y lena256b.tif. Ejercicio 9. Operaciones aritmticas con imgenes. Aplique las operaciones lgicas a las imgenes rice.tif y cameraman.tif. Realice las operaciones expuestas entre imgenes. Compare los resultados obtenidos con los mostrados en la figura 16. Ejercicio 10. Generacin de ruido y filtrado de imgenes. Aada diferentes tipos de ruido a las imgenes cameraman.tif y lena256a.tif. Posteriormente pruebe los diferentes tipos del filtros existentes. Ejercicio 11. Modificacin del contraste y ecualizacin de una imgenes. Utilice el comando histeq para ecualizar la imagen de lena.tiff, cameraman.tif y pout.tif. Ejercicio 12. Deteccin de contornos Utilice el comando edge para hallar contornos en las imgenes lena.tiff, eight.tif y rice.tif. Ejercicio 13. Deteccin de caractersticas usando correlacin. Utilice la correlacin para encontrar la letra a en la imagen text.tif, tal como se muestra en el siguiente programabw =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 pxeles con valor mayor al %umbral

44 M. en C. Jos Jaime Esqueda Elizondo

Ejercicio 14. Compresin de imgenes usando la transformada discreta coseno. Aplique la transformada discreta coseno a las imgenes autum.tif, lena.tiff y pout.tif siguiendo el ejemploumbral=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)