Está en la página 1de 320
Tratamiento de imagenes con MATLAB # Tratamiento de Imagenes con MATLAB Erik Cuevas Margarita Diaz Cortés José Octavio Camarena Méndez Ad Alfaomega hs Director Eciterial Marcelo Grille Gianaetto sngrillo@alfaomeza com.mx Datos catalograficos (Cuevas, Erick: Diaz, Margarita; Camarena, José Jefe de Edicion Tratamieato de imégeaes con MATLAB Fraacisco Jevier Rodriguez Cruz Primera Edicion Hodrigue:@aliaomega com.mx Alfsomega Grupo Editor, $.A. de C.V., México ISBN: 978-607-622-928-6 Formato: 17x23 cm Paginas: 328 Tratamiento de imagenes con MATLAB Erick Cuevas: Margarita Diaz Cortés: José Octavio Camarena Méndez Derechos reservados © Alfamega Grupo Editor, S.A. de C.V., México Primera ediciom Alfaomeza Grupo E¢itor, México, junio 2017 © 2017 Alfaomega Grupo Editor, S.A. de CV. Dr. Isidoro Olvera (Eje 2 sus) No. 74, Col. Doctores, 06720. Ciudad de México Miembro de la Camara Nacional de la Industia Editorial Mexicana Registro No. 2317 Pag. Web: http://www alfaomega.com.mx E-mail: atencionalcliente@alfaomega.com.mx ISBN: 978-607-622-928-5 Derechos reservados: Esta obra es propiedad intelectual de su autor y los derechos de publicacién en lengua espafiola han sido legaimente transferidos al editor. Prohibida su reproduccién parcial o total por cualquier medio sin permiso por escrito del propietario de los derechos del copyright Nota importante: La informacicn contenida en esta obra tiene un fin exclusivamente didactic y, por lo tanto, no est previsto suaprovechamiento 2 nivel profesional o industrial. Las indicaciones técnicas y programas, incluidos, han sido elaborados con gran cuidedo por al autor y reproducidos bajo estrictas normas de control. ALFAOMEGA GRUPO EDITOR, S.A. de CV. no seré juridicamente responsable por: errores u omisiones; datios y perjuicios que se pudieran atribuir al uso de la informacion comprendida en este libro, ni por la utilizacién indebida que pudiera darsele. Edicién autorizada para venta en todo el mundo. Impreso en México Printed in Mexico Empresas del orupo México: Alfacmega Grupo Editor, S.A. de CV — Dr. Isidore Otvera (Eje 2 sue) No. 74, Col. Doctores, ‘CP 06720, Del. Cuauhtémoe, Cindad de México (52-58) 5575-2420 /2490. Sin costo: 01-$00-020-4396 - E-mail atencion Colombia: Alfsomega Colombiana S.A. ~ Calle 62.No. 20-46, Barrio San Luis, Bogoté, Colombia, Tels.: (57-1) 746 0102 | 210 0415 ~E-mail: cliente @alfaomega.com co Chile: Alfaomegs Grupo Eéitor S.A — Av Providencia 1443. Oficina 24, Santiago, Chile ‘Tel: (56-2) 2235-4248 — Fax: (56-2) 2235-5786 - E-mail: azechile@alfacmeza cl Argentina: Atfiomega Grupo Editor Argent, S.A. Av Cérdoba 1245, piso 10, CP: 1055, Buenas Aires Argentina, ~ Tel Fax: (54-1!) 4811-0887 y 4811 7183 -E-mail: venta:@alfsomegaeditorcom ar Acerca de los autores Erik Cuevas Es Ingeniero en Comunicaciones y Electrdnica por parte de la Universidad de Guadalajara, Maestro en Electrénica industrial por el ITESO y Doctor en Inteligencia Artificial por la Universidad Libre de Berlin (FU-Berlin) en Ale- mani, Desde 2007 es Profesor investigador en el Departamento de Elec- trdnica en el Centro Universitario de Ciencias Exactas e Ingenierias (CUCE!) en Guadalajara, México; es autor de varios libros y articulos de revistas especializedas y desde 2012 es miemoro del comité editorial de la revista Mathematical Problems in Enginerring, Actualmente, es miembro del Siste- ‘ma Nacional de Investigadores Nivel l. Sus lineas de investigacidn incluyen el cémputo evolutivo y sus aplicaciones al procesamiento de imagenes. Margarita Diaz Cortés Recibié al grado de Ingeniera Biomédica en 2012 y de Maestra en Cien- cias de la Ingenieria Electrénica y Computacién en 2014, en la Universidad, de Guadalajara (UDG). Actualmente aspira al titulo de Doctora en Ciencias ‘Computacionales en la Universidad Libre de Berlin, Sus intereses de inves- tigacién incluyen el desarrollo de aplicaciones de la inteligencia artificial al area médica, técnicas de optimizacin y el desarrollo de nuevos algoritmos evolutivos. ye José Octavio Camarena Méndez Recibié el grado de Ingeniero Electrénico con especialidad en Instru- mentacién biomédica en el Instituto Tecnolégico de Morelia (ITM) y el titulo de Maestro en Ciencias en Ingenieria Electronica y Computaci6n por la Uni- versidad de Guadalajara (UDG). Actualmente estudia el Doctorado en Cien- cias de Ia Electrdnica y Comoutacién en el Centro Universitario de Ciencias Exactas e Ingenierias: entre sus intereses cientificos se incluye el desarrollo @ implementacién de algoritmos para el area de visién robética, lens aje del editor Una de las convicciones fundamentales de Alfaomega es que los conocimientos son esenciales en el desempefio profesional, ya que sin ellos es imposible adquirir las habilidades para competir laboralmente. El avance de Ia ciencia y de la técnica hace necesario actualizar continuemente esos conocimientos, y de acuerdo con esto Alfsomega publica obras actualizadas, con alto rigor cientifico y +técnico, y escritas por los especialistas del érea respectiva més destacados. Consciente del alto nivel competitive que debe de adquirir el estudiante durante su formacién profesional, Alfaomega aporta un fondo editorial que se destaca por sus lineamientos pedagégicos que coadyuvan a deserrollar las competencias requeridas en cada profesién especific. De acuerdo con esta misién, con al fin de facilitar la comprension y apropiacion del contenido de esta obra, cada capitulo iniciacon el planteamiento de los objetivos del mismo y con una introduccién en la que se plantean los antecedentas y una descrigcién de la estructura ldgica de los temas expues- ttos, asimismo a lo largo de la exposicién se presentan ejemplos desarrollados con toda detalle y cada copitulo concluye con un resumen y una serie de ejercicios propuestes. ‘Ademés de la estructura pedagégica con que estén disefiados nuestros libros, Alfaomega hace uso de los medios impresos tradicionales en combinacién con las Tecnologias de la Informacion y las Comunicaciones (TIC) para facilitar el aprendizaje. Corresponciente a este concepto de edicién, todas nuestras obras tienen su complemento en una pagina Web en donde el alumno y e! profesor encon- ttrarén software relacionado con temas especificos dela obra. Loslibros de Alfamega estén disefiados para ser utilizados en los procesos de ensefianza apren- dizaje, y pueden ser usados como textos en diversos cursos 0 como apoyo para reforzar el desarrollo profesional, de esta forma Alfaomege espera contribuir a la formacion y al desarrollo de protesionales exitosos para beneficio de la sociedad, y espera ser su compafiera profesional en este viaje de por vida por el mundo del conocimiento Contenido Prélogo Capitulo 1 Acerca del procesamiento de imagenes. 11 Introduccion a 11.2 Sistema de visidn y procesamiento de imagenes. 1.3 Procesamiento digital de imégenes. L4 Relaciones basicas entre PiKeleS omen 1.4.1 Vecinos de un pixel. 1.4.2 Conectividad. 15 Medidas de distancia. Capitulo 2 Principios basicos de MATLAB ed intr odUcchb neee ee een 2.2 Consideracione: 2.3 Lecture, despliegue y escritura de imagenes. 2.4 Tipos de datos 2.5 Tipos de imagenes en MATLAB. 2.5.1 Imagenes en escala de grises. 2.5.2 Imagenes bi 2.6 Comversién entre diferentes tipos de datos y de imagenes. 2.6.1 Conversion entre tipas de datos. 2.6.2 Conversién entre diferentes tipos de imagenes. 2.7 indexado de vectores y matrices 2.7.1 Indexado de vectores. 2.7.2 Indexado de Matrices ene eneeennnnnennennnnn 2.8 Operaciones sobre matrices completas..n--n--enn 2.9 Programaclon en MATLAB. 2.10 Estructuras de control para la programacién 2.10.1 Estructura ify else if. 2.10.2 Estructura jor 2.10.3 Estructura while... 2.10.4 break y continue 2.10.5 Estructura switch Capitulo 3 Transformada de Fourier, 3.1 Introduccién. oe 3.2 Acerca de la transformada de Fourier... xi GRWWEKRe 23 24 24 VIL Contenico -1 Funciones del senoy coseno. .2 Frecuencia y amplitud. 3 Fase, 3.2.4 Ortogonalidad 3.2.5 La notacidn de Euler 3.2.6 Serie de Fourier para la representa: 3.3 La integral de Fourier 3.4 La transformada de Fourier. 3.4.1 Pares de transformada de Fourier. 3.5 Propiedades de la transformada de Fourier. 3.5.1 Simetria 3.5.2 Linealidad. 3.5.3 Escalamiento. 3.5.4 Traslacion. 3.5.5 Propiedad de la convolucién. 3.6 Consideraciones hacia sefiales discretas. 1 Muestreo. 3.6.2 Muestreo mediante la funcién impulso. 63 La Funct pete ee .4 Efecto del muestreo en la transformada de Fourier. oe 3.6.5 El teorema de muestreo y el fendmeno del alias. .6 Funciones discretas y periddicas, 3.7 La transformada discreta de Fourier (DFT) .oc-eeoweweeeennennnnnnnnnnn 3.7.4 Definicién de la DFT. 3.8 Cdlculo de la DFT de MATLAB. oe 3.9 Espectro de potencié de FOUTIEL veneer n de sefiales periddicas. Capitulo 4 Operaciones de pixel. a 4.1 Introduccién. 4.2 Cambio del valor de la intensidad del pixel on <1 Contraste @ iluminacién 0 rtll0,..-.ecnmunnnnnnnninnnnnntnnnnnnnnnnn j6n de los resultados por operaciones de pixel... .3 Complemento de le imagen. 4 Segmentacién por umbral........ 4.3 Histograma y operaciones de pixel. von 4.3.1 Histograma.. a 4.3.2 Caracteristicas de toma de une imagen. co -3 CAlculo del histograma de una imagen con MATLAB 4 Histogramas de imagenes a color .5 Efectos de las operaciones de pixel en el histograma......... .6 Adaptacién automética del contraste .7 Histograma acumulativo. .8 Ecualizacién lineal del histograma 24 25 26 26 7 29 29 30 32 34 34 24 35 35 35 36 36 37 38 39 43 43 44 44 46 51 52 53 53 54 55 55 57 57 59 62 63 65 is 70 4.3.9 Adaptacion del histograms por especificacion 4.3.10 Probabilidades e histogramas de frecuencias, 4.3.11 Principio del ajuste del histograma por especificacién 4,3.12 Distribuciones de referencia lineal por partes. 4.3.13 Ajuste a un histograma en particular 4.4 Correccién Gamma 4.4.1 La funcion Gamma 4.4.2 Utilizaci6n de la correccion Gamma 4.5 Operaciones de pixel en MATLAB. . 4.5.1 Cambio de contraste e lluminacién en MATLAB. 4.5.2 Segmentacion de una imagen por umbral usando MATLAB, 4.5.3 Ajuste de contraste con MATLAB. 4.5.4 Ecualizacién del histograma usando MATLAB. 4.6 Operaciones de pixel de multiples fuentes. 7 4.6.1 Operaciones légicas y aritméticas. 4.6.2 Operacién de mezclado Alfa Capitulo 5 Segmentacién y tratamiento de imagenes binarias. 5.1 Introduccién 5.2 Segmentacin 5.3 Umbralizaci6n 5.4 Célculo del umbral éptimo. 5.5 Algoritmo Otsu 5.6 Segmentacidn por crecimiento de region 5.6.1 Pixel inicial 5.6.2 Busqueda local 5.7 Etiquetado de objetos en imagenes binarias. 5.8 Contornos de objetos 5.8.1 Contornos externos ¢ internos 5.8.2 Combinacién de identificacion de contornos y etiquetado de objetos. 5.9 Representacién de objetos binarios 5.9.1 Codificacién de longitud 5.9.2 Codigo. 5.10 Caracteristicas de los objetos binarios 5.10.1 Caracteristicas. 5.10.2 Caracteristicas geométricas. Capitulo 6 Filtraje espacial 6.1 Introduccién. 6.2 £Qué es un filtro? Costeepe IX 72 74 74 15 7 79 30 81 con sc sone pS 88 iB 93 94 94 95 9g 99 103 103 103 108 118 118 119 132 132 133 136 136 137 441 142 142 X Contempo 6.3 Filtro: eales espaciales. 6.3.1 Matriz del filtro, 6.3.2 Operacion de los filtros. 6.4 Célculo de las operaciones de filtro en MATLAB. s de filtros lineales. -1 Filtros de suavizado, 6.5.2 Filtros de diferencia 6.6 Caracteristicas formales de los filtros lineales, 6.6.1 Convolucion lineal y correlacion. 6.6.2 Propiedades de la convolucién lineal 6.5.3 Separabilidad de los filtros. 6.5.4 Respuesta al impulso de un filtra 6.7 Adicién de ruido a imagenes con MATLAB. 6.8 Filtros nolineeles espaciales.. -1 Filtros maximos y minimos. .2 Filtro de la mediana. .3 Filtro de la mediana con ventana de multi 4 Otros filtros no lineales. - 6.9 Filtros espaciales lineales en MATLAB. 6.9.1 Tamaiio de la correlacién y convolucién. ose .2 Manejo de las fronteras de la imagen. .3 Funciones de MATLAB para filtros lineales espaciales... 6.9.4 Funciones de MATLAB para el filtraje espacial no lineal. GAL Filtre DiMA TI Oe 6.10.1 Implementacién del filtro binario en MATLAB Capitulo 7 Deteccién de bordes. 7.1 Introducci6n. 7.2 Bordes y contornos. 7.3 Deteccién de bordes con técnicas del gradiente 7.3.1 Derivada parcial y gradiente. .2 Filtro derivada ros para la deteccién de bordes 1 Operadores Prewitt y Sobel .2 Operador Roberts. .3 Operadores de Kirsch (compés). 4 Deteccion de bordes con MATLAB. 7.4.5 Funciones de MATLAB para la deteccion de bordes. 7.5 Operadores basados en la segunda derivada 7.5.1 Deteccién de bordes con la segunda derivada .2 Mejora de nitidez en las imagenes. 3 Filtro Laplaciano y nitidez de Ia imagen. 4 Filtro Canny. 144 144 145 146 150 150 152 153 194 156 157 158 160 164 165 167 169 471 172 172 177 180 182 186 189 195 196 196 196 197 198 199 200 203 204 205 210 212 212 212 216 218 Coxtenpo XI 7.8.5 Herramientas de MATLAB para el filtro de Canny. 219 Capitulo 8 Determinacién de esquinas. 221 8.1 introduccién 222 8.2 Esquinas en una imagen. 222 8.3 Algoritmo de Harris. 222 8.3.1 Matriz de estructuras. 223 8.3.2 Filtrado de la matriz de estructuras. 223 8.3.3 Calculo de los valores y vectores propios. 223 8.3.4 Funci6n del valor de la esquina (V) 225 8.3.5 Determinacién de los puntos esquina 226 8.3.6 Implementacién del algoritmo. 226 8.4 Determinacién de puntos esquina con MATLAB. 230 8.5 Otros detectares de esquinas 236 8.5.1 Detector Beaudet 236 8.5.2 Detector Kitchen & Rosenfeld. 240 8.5.3 Detector de Wang & Brady. 243 Capitulo 9 Deteccién de lineas. 249 9.1 Introduccion. Estructuras en una imagen 250 9.2 Transformada de Hough. 250 9.2.1 Espacio de parémetros. 252 9.2.2 Matriz de registros de acumulacién. 254 9.2.3 Cambio de modelo paramétrico. 255 9.3 implementacién de la transformada de Hough 256 9.4 Codificacién de la transformada de Hough en MATLAB. 260 9.5 Deteccion de lineas mediante funciones de MATLAB, 268 9.5.1 Deteccién de lineas de las funciones de MATLAB 270 Capitulo 10 Operaciones morfolégicas. poe 27S 20.1 INtrOGUCCIOM ee eonenennnnnenennennntnnnnnnnnnennnnnnen pone 216 10.2 Contraccién y crecimiento de estructuras 276 10.2.1 Tipos de vecindad entre pixeles o-en-weneeennnn - penne 27B 110.3 Operaciones morfologicas fundamentales....._---~ pone 2B 10.3.1 Estructura de referencia nenceeennnenennneennn once 279 10.3.2 Conjunto de puntos....... pee enensen 279 10.3.3 DI BtBCIOM nnn enone ee 280 10.3.4 EPOSI6M nen coven 281 ‘XII Coxtexpo 10.3.5 Propiedades de la dilatacién y erosién 10.3.6 Disefio de filtros morfoldgicos. 10.4 Deteccién de bordes en imagenes binarias. 10.5 Combinacidn de operaciones morfoldgicas. 10.5.1 Apertura. 10.5.2 Cierre. 10.5.3 Propiedades de las operaciones apertura y cierre 10.5.4 Transformacion de éxito 0 fracaso (‘hit-or-miss’). 110.6 Filtros morfologicos para imagenes a escala de grises. 10.6.1 Estructura de referencia 10.6.2 Dilatacién y erosién para imagenes de intensidad 10.6.3 Apertura y clerre con Imagenes escala de grises. 10.6.4 Transformacion top-hat y bottom-hat 10.7 Funciones de MATLAB para operaciones morfoldgicas. 10.7.1 Funcién strel. 10.7.2 Funciones de MATLAB pare le dilatacin y erosion 10.7.3 Funciones de MATLAB que involucran aperture y cierre. 10.7.4 Funcién bwmorph 10.7.5 Etiquetado de componentes convexos Indic alitico. 282 283 285 287 287 288 288 288 290 290 291 293 296 297 298 301 302 303 306 309 > Proélogo as imagenes, como conjunto, representan una de las principales formas de trasmitir informacién; ‘ociales en internet, son algunos ejemplos que muestran su enorme potencial. El conacimiento de los algoritmos usados para su manipulaci6n, mejoramiento, realzado y detecci6n, formula una de las habilidades primordiales @ ser inciuidas en el plan de estudios de la mayor parte de las carreras de Ingenieria y ciencias afines. Tras nuestra experiencia docente, los autores de este libro constatames que ninguns obra en el mercado presenta una exposici6n tedrica y practice que se ajuste 2 los objetivos académicos requeridos por los estudiantes. Ademés, la bibliografia en idioma espafiol sobre procesamiento de imagen y vision artificial es muy escasa. Este libro de texto ha sido elaborado a partir de la modificacién sucesiva de nuestros aountes personales para los cursos de Procesamiento digital de imagenes y Visién Artificial, que hemos impartido durante los tiltimos diez afios en el Centro Universitario de Ciencias Exactas e Ingenieria de la Universidad de Guadalajara en México. El objetivo principal de esta publicacién es abarcar los temas basicos y avanzados de los sistemas actuales de visién artificial. En la parte de teoria se profundiza en los conceptos y algoritmos expuestos, de modo que el lector con pleno conocimiento prevea los resultados que se obtendran si decide modificar los parémetros estructurales. En le practica, se aporta la informacién necesaria para que cada uno de los algoritmos tratados sea implementado por el lector usando MATLAB, Aunque la utilizacion de esta nerramienta ye ha sido tratada en otros libros, su uso se reduce 2 un empleo esporddico. En cambio, en este libro todos los algoritmos se explican usando MATLAB. El lioro se compone de 10 capitulos: en el capitulo 1 se realiza ung introductién al procesamiento de imagenes y se exponen los conceptos que serén usados lo largo del libro. El capitulo 2 aborda de manera condensada algunos aspectosimportantesdel manejo de imagenes y de funciones incluidas en el Toolbox de MATLAB. En el capitulo 3 se explora la Transformada de Fourier. El lector podra encontrar la segunda parte del capitulo en la pagina de Alfaomega. En al capitulo 4 son tratadas a detalle las operaciones de pixel, asi como sus propiedades y aplicaciones en el tratamiento de imagenes. En el capitulo § se plantes la construccién de un programe que cuenta el numero de objetos contenidos e interpreta su tipo. En el 6, se aborda el tema de los filtros. El capitulo 7 corresponde al tema de los bordes 0 contornos; en el 8, se exponen los principales métodos para la determinacion de esquinas, sus particularidades principales, ecuaciones ceracteristicas, asi como su implementacién en MATLAB. Por tiltimo, en el capitulo 9 se hace un tratamiento de los métodos més popularespara la deteccién de primitivas geométricas, considerando el caso introductorio, que son las ineas; y en el 10 se tratael andlisis, la aplicacién y manipulacién de les filtros morfoldgicos. Transformar nuestros apuntes de curso @ un libro requirié de un esfuerzo mayor al previsto. Durante este proceso los autores se preguntaron en varias ocasiones si valia la pene terminar. Por lo anterior quisiéramos agradecer de manera muy especial a nuestros colaboradores Jorge Galvez, ‘Omar Avalos, Salvador Hinojosa, Fernando Fausto, Adriin Gonzéles, Primitivo Diaz, Alberto Luque, Arturo Valdivia, Nog Ortega, Alma Rodriguez y Héctor Bacerra, quienes participaron activamente en el desarrollo del manuscrito. Este libro fue desarrollado utilizando el soporte econémico del Consejo Nacional de Ciencia y Tecnologia (CONACYT) bajo el apoyo CB-81053, Erik Cuevas Morgarita Diaz Cortés José Octavio Camarena Méndez ‘Abril 2017 Universidad de Guadalajara, CUCEI Guadalajara, Jalisco México Plataforma de contenidos interactivos Para tener acceso al material de la plataforma de contenidos interactivos de este libro, siga los siguientes pasos Ira la pégina: http://libroweb.alfacmega.com.mx Ira la seccién Catdlogo y seleccionar le imagen de le portada del libro, al dar doble clic sobre ella, tendra acceso al material descargeble. NOTA: Se recomienda respaldar los archivos descargados de la pagina web en un soporte fisico. Capitulo 1 Acerca del procesamiento de imagenes 1.L. INTRODUCCION 1.2. SISTEMA DE VISION Y PROCESAMIENTO DE IMAGENES 1.3. PROCESAMIENTO DIGITAL DE IMAGENES 1.4, RELACIONES BASICAS ENTRE PIXELES 1.5. MEDIDAS DE DISTANCIA Objetivo: En este capitulo se reeliza una introduccién a la vision y el procesemiento de imé- genes, asi como al establecimiento de una serie de conceptos que serén usados alo largo del libro. A diferencia de la mayoria de los libros del drea, en éste no se realiza un estudio exhaustivo del sistema visual humano, ya que los autores consideran que éste aun con la tecnologia existente sdlo debe ser considerado como motivacién, guardandbo la debida distancia entre ste y los algoritmos propuestos actualmente. 2 Capitol. Acs -ESAMIENTO DE IMAGENES 1.1 INTRODUCCION olfato para sobrevivir, en el caso de los humanos, la visién es de vital importancia I tratamiento de imagen puede ser considerado como un proceso que permite @ una persona obtener una gran cantidad de informacién del ambiente, la cual a su vez leayudaa desenvolverse ya sea en la navegacién obien en la realizacidn de tareas. Elque este proceso con todos sus problemas se intente resolver de forma automética mediante compu- tadoras, formula una de las areas de investigacién y desarrollo de mayor inversién en los Ultimos afios. El tratamiento de imagen se define como todo intento enfocado al desarrollo de algoritmos que tratan de lograr que una maquina simule hasta cierto grado el proceso de vision biol6gico. La visidn en general y las imagenes en particular han jugado un rol importante en la vida de los humanos. En el pasado las imagenes fueron, en el presente son y en el futuro serén la forma més inmediata de transmitir informacion e ideas. Nuevos avances en el tratamiento de imagen han conducido a una explosién en el uso de imagenes en éreas productivas donde antes era impensable su aplicacién, \ ientras muchos animales depencen de algtin sentido, tal como la eudicion o el 1.2 SISTEMA DE VISION Y PROCESAMIENTO DE IMAGENES Un sistema de visién y procesamiento de imagenes se compone de una serie de subsiste- mas que operan sobre una escena con el abjetivo de interpretar alguna caracteristice nota- ble. La figura 1.1 muestra cémo el sistema de procesamiento de imagenes se divide en una serle de subsistemas, los cueles son: procesamiento de bajo nivel, procesamiento de nivel medio y procesamiento de alto nivel ; yo \ Ima \ ; = nel Bajo Nivel Medio Nivel Alto Nivel Figura 1.1 Pracesos que componen el sistema de procesamiento de Imagenes. En el bajo nivel se encuentran procesos que se realizan sobre imagenes correspondientes de suavizado, umbralizacién, eliminacién de ruido, definicién de bordes, etc. Los procesos que se desarrollan en esta etapa de procesamiento suelen conocerse en la comunidad de visién como preprocesamiento. En el nivel mediose encuentran procesos tales como definicién de limites y extraccién de caracteristicas. En el alto nivel se establecen relaciones seménticas entre los objetos de le descripcién de le escena. En este libro la mayoria de los algoritmos tratados a lo largo de los capitulos son de bajo nivel y medio nivel. As attaomega TRATAMENTODE DK 2 CAMARENA 1.4 ReLaciongs sastcas |7Re 20 1.3 PROCESAMIENTO DIGITAL DE IMAGENES El procesamiento digital de imagenes puede definirse come Ie operacién de imagenes me- diante computadora, el tipo de operaciones que se realizan coincide a nivel de procesos con los tratados en la seccién anterior. Una diferencia importante entre el procesamiento de imagenesy la visiGn es que las imagenes con las que se trabaja en el primer caso no pro- vienen unicamente de la captacion del espectro visible a la que corresponde el sistema de visién biolégico, ya que las imagenes pueden originarse de la captacién de cualquier Srea del espectro electromagnético. Existen hoy dia sistemas de procesamiento de imagenes que operan sobre aquéllas generadas a partir de la captura de rayos X, rayos gamma, resonancia magnética, microondas, entre otras. La materia prima del procesamiento y la visidn son las imagenes, las cuales se con- siderarén como una representacién del mundo fisico que tiene informacién importante, misma que es captada mediante un praceso de muestreo, generalmente por medios elec- tronicos. Pera poder obtener imagenes digitales se requiere de un proceso que involucra captura, muestreo, cuantificaciény codificacién. Una imagen puede definirse como una fun- cin bidimensional que cuantifice le intensidad de luz (el espectro visible esel més comtn). Una imagen normalmente es representada como J(,), donde el valor de la in- tensidad se abtiene por el indexado de las coordenadas x y V. El modelo més comtin de representacién de la imagen es por medio de una matriz, tal que: 10) 12,1) KINI) I(x,y)= ve ee 5 ao (14) 10,M) 1(2,M) K I(N,M) 1.4 RELACIONES BASICAS ENTRE PIXELES En este apartado se establecerén algunas relaciones importantes que existen entre los pixeles de una imagen; la idea es describirias tanto en su concepto camo en su nomencla- tura, ya que serdn tratadas de manera extensiva en los siguientes capitulos del libro. 1.4.1 Vecinos de un pixel La vecindad se define como le relacién que tiene un pixel de manera posicional con los pixeles més cercanos a él. Existen dos tipos de vecindad que posee un pixel en la imagen, la 4-vecinos y la &-vecinos. La vecindad 4-vecinos se constituye de los pixeles V1, V2, V3 yV4, que se encuen- tran arriba, abajo, ala derecha e izquierda del pixel en cuestién P. La figura 1.2 (a) muestra una representacién de este tipo de vecindad. AMENTO DE IMAGENES / CvEVAS «Diaz « Canara &> Aifaomega caine 2 La vecindad 8-vecinos se constituye de los pixeles V1, V2, V3, V4, V5, V6, V7 y V8, correspondientes a los 4-vecinos, mas los 4 pixeles que se encuentran en forma diagonal al pixel en cuestion P, La figura 1.2 (b) muestra una representacién de este tipo de vecindad. (a) (b) igura 1.2 Definicién de la vecindad de un pixel P. (a Vecindad 4, definida sobre P, y(b) vecindad 8, definida sobre P. 1.4.2 Conectividad La conectividad entre pixeles es un concepto utilizado ampliamente en la detaccién de re- giones u objetos presentes en una determinada imagen, Por esta raz6n la conectividad se define como una situacion de adyacencia y vecindad. Bajo esta observacion existen dos tipos de conectividad: la conectividad 4 y la conectividad & Elconcepto de conectividad puede ser mejor entendido si se considera une imagen binaria, es decir, una imagen cuyos pixeles representan una caracteristica en lugar de lumi- nosidad, por lo que sus valores sélo pueden ser 0.0 1 Considerande lo anterior, se dice que dos pixeles 1,(x,y) y J,(x,y) cuyos valores en la imagen son 1, estén conectados con conectividad-4 si ambos se encuentran en rela- cién de 4-vecinos. De igual manera, los mismos pixeles estarian conectados con conectivi- ded-8 si ambos se encuentran en relacién de 8-vecines. Con el objetivo de mostrar la importancia de estos conceptos se ilustra en la figura 1.3 una imagen binaria en la cual se encuentran uno o dos objetos, segtn el tipo de conecti- vidad utilizada. En caso de considerar la conectividad-4 la imagen tendré dos objetos, ya que el punto en el que ambes estructuras se encuentran mas cercanas es donde los pixeles de contacto no estén en relacién de vecindad 4-vecinos [figura 1.3 (a)]. Si en la misma imagen se considera como criterio de vecindad el de 8-vecinos los dos pixeles de contacto estarian conectados, por lo que embes estructuras son como un solo objeto [figure 1.3 (b)] (a) (6) Figura 1.3 Influencia de la vecindad en la conectividad de pixeles. (a) Imagen segiin la conectividad-4 y (b) imagen segtin la conectividad-8. Ax attaomega ‘TRATAMGENTO DE IMAGENES / CLEVAS + Diaz « CaMaaena 15 MppasDepmmayca 5 1.5 MEDIDAS DE DISTANCIA La distancia existente entre dos piveles es una de las medidas més usadas en el procesa- miento de imagenes, con aplicaciones que van desde la similitud hasta la medicién de obje- tos encontrados en la escena. Existen varios tipos de medidas para hallar relaciones posicio- nales entre pixeles; sin embargo, las mas comunes son la distancia euclidiana, la distancia city-block y la chessboard. Para la definicin y caracterizacién de las distancias entre dos puntos se consi- dera la imagen mostrade en le figura 1.4 (2), que muestra dos pixeles etiquetados como ACY I=P) © 1.09) Le distancia euclidiana se define como la distancia existente entre dos pixeles de acuerdo con: y (12) La distancia representa el vector resultante entre /,(x,,},) 2 /,(x,,¥,) [figura 1.4 (b)]. La distancia city-block corresponde a la suma de la distancia horizontal y vertical entre ambos pixeles, la cual es definida como: Dz_g(PyP2 —x|+]y,- | (1.3) Estaes le distancia que arroja un valor més grande en comperacién a sus contrapartes eucli- diana y chessboard, para una misma relacién posicional [figura 1.4 (c)]. La distancia chessboard es la méxima distancia entre el recorrido horizontal y el vertical que se experimenta entre dos pixeles. Dicha distancia se define de acuerdo con: bv, -»J) (1.4) nex[.- El hecho de que la distancia chessboard Unicamente considere el recorride maximo en un sentido, la hace parecer al juego de ajedrez [figura 1.4 (d)]. La decisién de qué tipo de distancia utilizar se las determina por la aplicacién y las ceracteristicas de posicién requeridas; sin embargo, la distancia euclidiana es la més usada, salvo en aquellas situaciones (capitulo 16) donde caracteristicas tales como recorridos maxi- ‘mos entre caminos formados por pixeles son de interés ‘TRATAMIENTO DE IMAGENES /CUEVAS « Diaz « Canara &> aitaomega S CariruLe1, A DEL PROCESAMENTODE = Hit Ps P, (a) (b) () (a) Figura 1.4 llustracién de los tipos de distancias para medir las relaciones posicionales entre pixeles. (a) Definicion de los pixeles, (b) distancia euclidiane D,, {c) distancia city-block D,.. y (d) distancia chessboard De, AS attaomega ‘TRATAMGENTO DE IMAGENES /CUEVAS * DIAZ * CaMasena Capitulo 2 Principios basicos de MATLAB 2.1 INTRODUCCION 2.2 CONSIDERACIONES INICIALES. 2.3 LECTURA, DESPLIEGUE Y ESCRITURA DE IMAGENES 2.4 TIPOS DE DATOS 2.5 TIPOS DE IMAGENES EN MATLAB 2.6 CONVERSION ENTRE DIFERENTES TIPOS DE DATOS Y DE IMAGENES 2.7 INDEXADO DE VECTORES Y MATRICES. 2.8 OPERACIONES SOBRE MATRICES COMPLETAS 2.9 PROGRAMACION EN MATLAB 2.10 ESTRUCTURAS DE CONTROL PARA LA PROGRAMACION Objetivo: En este capitulo se ebordan de manera condensade algunos aspectos importantes del manejo de imagenes y funciones incluidas en el toolbox de procesamiento de imagen de MATLAB que seran de uso extensivo a lo largo del libra; de igual manera, se den los detalles generales de la programacién en MATLAB. El material tratado en este capitulo es considerado como bésico é indispensable pare el desarrollo de los algorit mos propuestos a lo largo de la obra. 8 CaviTvLo 2. Pamvcpios aisicos D2? MATLAB. 2.1 INTRODUCCION computadora era un grupo relativamente pequetto de personas, el cual tenia acceso herramientas de procesamiento muy caras, o bien se caracterizaba por ser exper- toen algin lenguaje de programacién. Actualmente, existe una gran cantidad de librerfas que facilitan el proceso de disefio del sistema de procesamiento de imagen, ya sea para aplicaciones de inspeccién de manufactura o hasta para la navegacién de un robot mévil. Ejernplos de este tipo de herramientas son OpenCV para utilizarse con lenguaje C, o Imaje pera ser usada oon Java. Sin embargo, a pesar de la oferta existente en librerias y software desarrollado por empresas e institutos de irvestigaciin, sigue siendo compleja la implementecién de algorit- mos de vision; esto se debe principalmente a que la curva de aprendizaje de la utilizacién de librerias, asi como la caprichosa configuracién de sus ambientes hace complicado el uso. Lo anterior puede ser ertendible, ya que el uso de una libreria no sélo involucra el dominio de los tipos de datos y parémetros de las funciones que implementan, sino que demanda un conacimiento aceptable del lenguaje en el que la libreria se encuentra implementada. MATLAB es un programa que permite realizar cdlculos técnicos y cientificos; cuenta con varios afios en el mercado y una gran cantidad de funciones implementadas para dife- rentes disciplinas cientifices, por lo que se ha convertido précticamente en un estindar de programacién y desarrollo répido de aplicaciones. La unidad de procesamiento de MATLAB es la matriz, por lo que su utilizacién en el procesamiento de imagenes (matrices) es una extensidn natural de su lenguaje de programacién. He hace pocos affos la comunidad de procesamiento de Imagenes y vislén por 2.2 CONSIDERACIONES INICIALES Una imagen es considerada una funcién bidimensianal descrita en forma matricial como: 10) 12) K TN 10,2) (2,2) K 1(N,2) M M O M 10,M) 1(2,M) K I(N,M) 1(x,y)= (2.1) donde el desplazemiento en forma horizontal trae consigo un aumento en el indicex »mien- tras que los desplazamientos en sentido vertical incrementan el indicey' ; ademas.N y M representan las dimensiones de le imagen. La forma de representar imagenes en MATLAB es. una adaptacién del modelo descrito en la ecuacién 2.1 respecto a la manera de indexar los datos matricialmente, esto significa que los indices intercambian posiciones, con lo cual es posible adoptar la notacién matricial tipica de renglén-columna. Considerando lo anterior, las imagenes en MATLAB seran representadas de la siguiente manera: AS attaomega ‘TRATAMGENTO DE IMAGENES / CUEVAS + Diaz * CaMasena 23 T(1,1) (1,2) - I(2,1) 1I(2,2) M M I(M,1) IM, 2) (2.2) 2.3 LECTURA, DESPLIEGUE Y ESCRITURA DE IMAGENES Las imagenes son leidas de algun dispositive de almacenamiento al ambiente de MATLAB usando la funcién imread. La sintaxis general de esta funcién es: A=imread(‘nombre_del_archivo?) donde nombre_del_archivo es una cadena de caracteres que determina el nombre de la imagen con su respectiva direccién de busqueda, mientras que la variable A elmacenaré la imagen obtenida. El tipo de imagen que se puede carger mediante la funcién imread corresponde a los tipos descritos en la tabla 2.1. Una vez que la imagen ha sido cargade en une variable, es conveniente indagar sobre sus dimensiones, lo que puede ser realizado mediantela funcién size. De tal manera que pere averiguer el tamefio de la imagen elmacenada en A, se escribe: [M N]=size(A) donde la variable M_almacenaré el nlimero de renglones de la imagen y N, el ntimero de columnas. Tabla 2.1 Tipos de imagenes soportadas por la funcién amread Aad Susie TIFF Atif o tiff JPEG -ips 0 jpeg GIF gif BMP -bmp PNG png XWD. xwd Pare desplegar imagenes en MATLAB, como si se tratara de gréficas generadas por un comando plot, se utiliza la funcién imshow. De esta manera, si se desea- re desplegar la imagen almacenada en le variable A, se escribird en linee de comandos imshow(A) TaaTanien0 De nsieans /Cuevas Diag + Caanexa &> Attiomega 10 Carirvno 2. Pacetos sisicos p: MATLAB. Después de que se han realizado procesemientos sobre la imagen seria conveniente guardar la imagen resultante, lo cual se realiza mediante la funcién amurate. Su sintaxis se define como: imwrite(B, ‘nombre_del_archivo?) donde 8 representa la imagen que se pretende guarder, mientras que nombre_de]_ar- chivo representa la cadena de caracteres que define un nombre valido para le imagen junto con une extensién congruente con las defi 2.4 TIPOS DE DATOS Aunque normalmente se utilizan nimeros enteros para indexar las coordenadas de la ima gen, los valores de los pixeles no se encuentran restringidos a valores enteros del intervalo clésico de despliegue [0,255], sino que éstos pueden asumir diferentes valores 0 tipos, in- clusive nimeros complejos (en el caso de la transformada de Fourier) Todos los célculos numéricos desempefiados por MATLAB se realizan considerando que los nimeros son del tipo double (o nimeros de coma flotante), por lo que muchas de las operaciones realizadas sobre imagen tienen (o tendrén) también este formato. El tipo de dato uint8 (enteros en el intervalo [0,255]) se presenta normalmente cuando se efectua la carga de una imagen al embiente de MATLAB por medio de la funcién amread. Otro tipo de dato popular para la representacién de imagenes es el logical, el cual permite ilustrar en forma compacta imagenes binarias, por lo que este tipo de dato sélo tiene dos valores posibles: Oy 1. 2.5 TIPOS DE IMAGENES EN MATLAB El toolbox de procesamiento de imagenes de MATLAB permite la manipulacién de cuatro tipos de imagenes: 1. Imégenes de intensidad o escala de grises. 2. Imagenes binarias. 3. Imagenes indexadas. 4, Imagenes de color RGB. En esta seccién sdlo se analiza el caso de las dos primeras por ser consideradas las més co- munes y bésicas en el procesamiento, los demés tipos de imagenes serdn descritos en los subsecuentes capitulos. 2.5.1 Imagenes a escala de grises Una imagen a escala de grises es una matriz cuyos valores han sido escalados para repre sentar un determinado niimero de intervalos. Sila imagen es dal tipo uint8, entonces los. datos que la conformen se encuentran en el intervelo [0, 255]. Sila imagen es del tipo dou- ble, entonces los datos que la constituyen son del tipo flotante y estén en el intervalo [0,1]. 4s attaomega ‘Taaransenro De mckcenss / Cuevas + Diaz * Cancatena 2.5.2 Imagenes binarias Una imagen binaria del tivo logical se representa en MATLAB como un arreglo que sdlo contiene unos y ceros, los cuales son especiales porque no implican valores numéricos, sino més bien banderes que indican el estado de falso (0) o verdadero (1). 2.6 CONVERSION ENTRE DIFERENTES TIPOS DE DATOS Y DE IMAGENES La conversion entre diferentes tipos de datos que constituyen las imagenes es una tarea frecuente en el procesamiento de imagenes, debido @ que no todos los tipos de datos son convenientes para realizar una operacién especifica 2.6.1 Conversién entre tipos de datos La conversin entre diferentes tipos de datos se realiza de manera sencilla en MATLAB uti- lizando la siguiente sintaxis general B-tipo_de_dato(A) donde tipo_de_dato es uno de los tipos de datos uint8 double, logical. De esta manera, el tipo de dato original atribuido a A se convertiré en el tipo de dato designado por +tipo_de_dato y seré grabado en la matriz B. Un ejemplo de esta conversidn seria: si se considere que la imagen A es del tipo de datos uiint8y se desea convertir en el tipo double, se escribiria en linea de comandos: B=double(A); 2.6.2 Conversién entre diferentes tipos de imagenes El toolbox de procesamiento de imagenes posee varias funciones que permiten realizar los escalamientos necesarios para convertir diferentes tipos de imagenes. La funcidn am2udnts indege el tipo de dato de la imagen de entrada y realiza a partir de éste las operaciones necesarias para convertirla al intervalo de valores definido para uint8, el cual se encuentra entre 0 y 255. Para ejemplificer esta funcién se considera une Imagen de 2X2 del tipo double, definida en MATLAB como: Sise desempefiara la conversién, se escribiria B-im2uints(A) ; TaaTanien0 De nsieans /Cuevas Diag + Caanexa &> Attiomega 12 Carirvto 2. Pacetos nistoos p MATLAB. Resultando: 0 204 255 51 Del resultado se puede observer cémo se le asigna al menor nimero de A el menor nimero representable en el tipo uint8 (0), y al maximo valor de A, el méximo representable (255); los demés valores se escalan linealmente en el intervalo [0,255]. Una funcién que ser frecuentemente utilizada en este libro es mat2gray. La funcién mat2gray escela linealmente una imagen del tipo double cuyo inter- valo de valores puede ser cualquiera a otra imagen del tipo double pero con un intervalo de valores que van de 0 2 1. En el procesemiento de imégenes existen diferentes 1 pos de algoritmos, los cuales al procesar una imagen generan una resultante cuyos valo- res pueden diferir en intervalos bastante amplios, por lo que normalmente se dificulta is y visualizacién, es por ello que le funcién mat2gray serd utilizade siempre en aquellos casos donde sea necesario ver la informacion contenida en un intervalo representable 2 escala de grises. Para ejemplificar esta funcién se considera une imagen de 2X2 del tipo double, definida en MATLAB como: su enél A= -100 20 200 1000 Si se desempefiara la conversién, se escribiria: B=mat2gray (A) Resultando: 0 0.5100 0.6000 1.0000 2.7 INDEXADO DE VECTORES Y MATRICES En las operaciones de pracesamiento de imagenes es frecuente la discriminacidn y biisque- de de elementos o pixeles contenidos en la imagen, por lo que las operaciones de indexa- do deben ser consideradas importantes. MATLAB soporta poderosos métodos de indexado para matrices y vectores que simplificen la elaboracidn de programas y mejoran la eficiencia de los algoritmos. Ax attaomega ‘Taarancesto oe nckonses / Curvas * Diaz « Canc 2.7 Inpexapo pe vectors r maruces 13 2.7.1 Indexado de vectores Un vector renglén de dimension 1X Npuede ser indexado utilizando solamente un indice numérico; de este manera, sise considera a este vector como v, se elegiré el primerelemen- to si se indexa como v(1), de la misma forme se elige el elemento numero 2 del vector si se indexa v(2). Esto puede ejemplificarse si se considera: yseelige v(2), se tlene: Para acceder a bloques de elementos en un vector MATLAB utiliza la notacién de los dos puntos v (ni :n2), los cuales sefialan una secuencia de indices que van desde el primer numero especificado n1, hasta el segundo n2. Por lo que sise tiene: >> v(2:4) ans 2 3 4 Puede tembién especificarse el final de la secuencia utilizando la palebra reservade end, de tal forma que se indica el ultimo indice considerado en el vector. Esto en el ejemplo signifi- caria: >> v(2:end) ans = 2 a 4 5 é 7 ‘También puede seleccionarse en la notacién de los dos puntos para que el incremento rea- lizado del primer indice ni y el segundo n2, no sea unitario. Por consiguiente, si se quisiera elegir s6lo los indices pares del vector se escribiria: >> v(2:2:end) ans 2 4 2.7.2 Indexado de matrices Pare el indexado de matrices son necesarios dos ntimeros: uno pera elegir los renglones y otro para las columnas. De esta manera, si se utiliza como ejemplo la matriz 3X3 definida como: >> Be[1 23; 45 6; 78 91; A= L 2 2 5 6 7 8 9 Taatanaento De neienes / Cuevas «Diaz * Canara 4) Aifaomega 14 Caritvno 2, Prcetcs sisioos ps MATLAB. considerando le matriz A puede seleccionarse el elemento correspondiente al renglén 3 y columna 2, utilizando: >> A(3,2) ans 8 Es posible utilizar la notacién de los dos puntos para indexar de forma total; es decir, los dos puntos en el contexto de matrices se consideran como un comodin que indica todo ola totalidad. Por lo que si se quisiere seleccionar todo el renglén 2, se tendria >> A(2,2) ans = 4 5 6 De igual manera, si se quisiera indexar Ia columna 1, se escribirfa: >> A(:,1) ans 4 7 Ejemplos de indexado en imagenes Todas, las formas de indexar elementos en matrices pueden ser usadas para ele} tos y reducir o seleccionar bloques en imagenes. A continuacién se presenta una seri ejercicios de indexados reelizados sobre imagenes y los resultados obtenidos de forma gré- fica. Si se considera como imagen ejemplo asignade a la variable Aa la mostrada en la figura 2.1 (a) y se desea mostrar la imagen, de tal manera que se tome un pixel de la misma y otrono, en sentido horizontal y vertical, se escribirfa en linea de comandos: nd, 1 Con lo anterior se crearia una nueva imagen B cuyas dimensiones serian la mitad de A, ya que solamente la mitad de los pixeles serian seleccionados pare formar B. El resultado de esta operacién se muestra en la figure 2.4 (b). Se podrie también, al igual que las operacio~ nes sobre vectores, seleccionar un bloque de le imagen A para former une nueva imagen C. De esta manera la sentencia: >>BSA (1:2 2:end); -A(1:100,1:100); Seleccionard un bloque de 100 pixeles tanto en el sentido horizontal como vertical. El resul- tado de esta operacién se muestra en la figura 2.1(c). Cuando se manipulan bloques de imégenes resulta importante poder cambiar el velor de intensidad de un bloque seleccionado, ya sea para eliminar su informacién o para formar ung mdscera de un procesamiento posterior, Lo anterior puede ser facil mente reall- zado indexando el bloque de la imagen y confiriéndole el valor deseado, de esta manera la instruccién: 00, 1:100)=0; A. attaomega ‘Taarancesto De nckonns / Curvas + Diaz + Cancatena 2.8 OrERAcIONES soBRE MATRICES © s 15 Colaceria todos los pixeles del bloque de 100 pixeles cuadrados en negro. El resultado de esta operacin se observa en la figura 2.1 (4). mes (a) (d) Figura 2.1 Ejemplos de operaciones de index en MATLAB. 2.8 OPERACIONES SOBRE MATRICES COMPLETAS De manera frecuente es necesario desempefiar operaciones que engloben la totalidad de los elementos de la imagen. Un ejemplo tipico es encontrar el pixel maximo ¢ minimo presente en la imagen. El probleme de utilizar de forma sencilla la funcin max o min de MATLAB aplicada a la imagen o matriz es que devolverd el valor maximo 0 minimo de cada columna, por lo que el valor absoluto es encontrado mediante la operacién concatenada de mos o minimos. Esto es, si se tiene una matriz definida como: om ‘Tratanamsto pe ndiomss /Crevas «Diaz « Caan 4S Aifaomega 16 Carirvzo 2. Prcetos nisioos >: MATLAB yssise colocara: >> max (M) ans 7 8 9 se obtendrfa el valor maximo de cada columna, de tal forma que si se elige la forma conca- teneda; >> max (max (M) ) ans = 9 se obtiene el méximo global. La forma de operar en forma global puede utilizarse con mu chas operaciones como serd visto a lo largo del libro. 2.9 PROGRAMACION EN MATLAB MATLAB no solamente puede ser usado como una patente calculadora en linea de coman- dos, sino que es posible realizar programas utilizando estructurasy lineamientos propios de un lenguaje de programacion. La ventaja de usar MATLAB para realizar programas es que se puede sacar ventaja de los cientos de funciones ya programadas creadas para el proce- samiento de imagenes; o bien, de funcicnes realizadas como herramientas para otras dreas afines como el procesamiento digital de sefiales. Ademas se puede de igual manera utlizar los poderosos modos de indexado de matrices mostrados en secciones anteriores. A todas estas ventajas se aflade que la forma de programar en MATLAB es practicamente intuitiva y sencilla, ya que no es necesario declarar variables (a menos que se quiera que tengan v dez en varias funciones) ni preocuparse por el tipo de su contenido. En la programacién de MATLAB se pueden crear principalmente dos tipos de pro- gramas los llamados .m y las funciones. Este tipo de programas debe ser considerado como un seript, el cual ejecuta una serie de instrucciones en MATLAB, tal como se hiciera se- cuencialmente desde la consola de MATLAB. Gran parte de los programas mostrados en el libro son sm, la razén de esto es que representan la forma més répida de codificar y probar algoritmos. Como ejemplo de un archivo .m, se muestra el cdcigo del programa 2.1 que determina el pixel maximo y minimo de una imagen. Av attaomega ‘Taarancesto De nciceses / Curvas + Diaz + Cagatena 2.9 Procamactéx NMATLAB 17 Programa 2.1 Ejemplo de archivo sm, que determina el valor de los pixeles méximo y minimo. Una funcién en MATLAB es un programa que, a diferencia de los .m, tiene una estructura definida que permite la comunicacidn ya sea con linea de comandos u otros programas. Esto se debe a que este segmento de cédigo permite la transferencia de datos para que opere sobre ellos y también envia informacion de los resultados obtenidos como efecto de su ope- racién. Una funcién tiene por lo tanto en MATLAB la siguiente estructura: Le palabra reservada Function al inicio del programa indice que se codifica una funcién. Entre corchetes se establecen los datos resultados o salidas que la funcion regre- saré como resultado de onerar sobre los datos recibidos en entradas o datos. Como ejemplo se estructurard el programa 2.1 como .m, pero ahora como funcién, el cédigo se muestra en el programa 2.2. Programa 2.2 Ejemplo de funcién que determing el valor de los pixeles méximo y minimo. ‘Teatanamsto pe nciomies /Cuevas «Diaz + Cananeva, Ax Atfaomega 18 Cavirvzo 2. Pancetos sisioo: D? MATLAB. 2.10 ESTRUCTURAS DE CONTROL PARA LA PROGRAMACION Las estructuras de control se basan en une serie de condiciones légicas que permiten cam- biar el flujo de las operaciones en un programa, tales estructuras constituyen el coraz6n de cualquier lenguaje de programacién. MATLAB posee seis estructuras de control, las cuales se encuentran resumidas en latabla 2.2. Tabla 2.2 Estructuras de control en la programacién en MATLAB En conjuncién con else y else if, ejecuta una serie de instrucciones basada en el cumplimiento de una determinada condicién légica. Ejecuta un conjunto de instrucciones un determinado ntimero de veces. Pr Ejecuta un conjunto de instrucciones un indeterminado numero de veces, en tanto una condicién légica se cumple. Porch Termina la ejecucién de un ciclo for o while. Ld Pasaelcontrolal siguiente ciclo forsaltando lasinstrucciones restantes del cuerpo del ciclo. EVE al Ejecuta diferentes grupos de instrucciones dependiendo del valor de una variable asignada a switch. La estructura de control if se utiliza pare decidir si se ejecuta o no un bloque de instruccio- nes, cuando cumple una condicién Igice. Por otro lado, la estructura de control while repite continuamente un bloque de Instrucciones mientras se cumple una condicién ldgica. Una condicién légica se define como una expresién que involucra la indagacién del estatus de una determinada relacién. Esta relacién puede a su vez involucrar los operadores relaciona- les mostrados en la table 2.3, Tabla 2.3 Operadores relacionales en MATLAB Cerct ad < Menor que Menor 0 igual que > Mayor que Mayor 0 igual que Iguala No igual a A, ttaomega ‘Taarancento De maicewes / Cuzvas + Diaz « Caasena 240 Esraveruma: PARALAPROCRAMACION 19 comme Debe de considerarse que en MATLAB si una congicién involucra el test de un numero, como podria ser i (a), la condicién seria verdadera siel valor de (a) es diferente de cero, mien- tras que si es cero la condicién seré false. En ocasiones las condiciones que esteblecen el flujo del programa se determinen a partir de le concatenacién de diferentes condiciones conectadas a partir de operadores légicos, que son resumidos en la tabla 2.4 Tabla 2.4 Operadores légicos en MATLAB Bray eos & And | or ~ Not 2.10.1 Estructura if yelse if La sintaxis de esta estructura es if (condicién) Instrucciénl; Instruccién2; end En este caso la condicién es evaluada y si es verdadera ejecutard el conjunto de instrucciones Instrucciénl, Instrucciénz2.., etcétera.Sicondicién es falsa, el control del programa se pasa al comando siguiente: 4f. Como se observa en la estructura anterior, toda instruccién i£ debe ser cerrada con un end. Otra variante de la estructure if es: ciénl) af (cond: Instru else if (condicién2) Instruccién: énl: else Instrucci6n3; end Siesta estructura condicionl es verdadera se ejecuta Instruceion1 y el control del programa sale fuera de la estructura. Sin embargo, si condiciont es falsa la condi- cién2 es evaluada, y si es verdadera se ejecuta la Instruccién2. Si condicién2 fuera falsa se ejecuta la Instruccion3 2 / Cuevas + Diaz + CaMARENA ‘TaaTaMENto De neions (20 © Caritvio 2. Pamcptos pAsicos pz MATLAB 2.10.2 Estructura for La estructura fer permite la ejecucién de un conjunto de instrucciones un determinado né- mero de veces. Su sintaxis general es: for indice=inicio:incremento:final Instrucciones; end En esta estructural valor del indice se le asigna el valor inicio, yseejecuta el conjunto Instrucciones. cada ver que termina la ejecucidn, la variable indice aumenta de manera que su siguiente valor es su valor actual més incremento, de este modo el ciclo. se repite hasta que el valor de indice llega al valor final. Como ejemplo se muestra el programa 2.3 que suma el valor de los primeros diez ntimeros, Programa 2.3 Ejemplo de funcién que determine el valor de los pixeles maximo y minimo. En esta estructura, al igual que en if, es necesario cerrar con la palabra reservada end. 2.10.3 Estructura while Un ciclo while ejecuta un grupo de instrucciones en tanto una condicién se cumpla, Su sintaxis general es: while (condicién) Instrucciones; end Mientras la condicién es verdadera se seguirén ejecutando Instrucciones; cuando condicién es falsa el flujo del programa se pasa al siguiente comando. Normalmente, dentro del cuerpo de Instruceiones se modifica el valor de condicién detal manera queen algun determinado momento el ciclo while termine. As Attaomega “Taatanceto De meicenes / Cuzvad + Diaz « CARCARENA 210 Ex CONTROL PARA LA PROCRAMACION 2.10.4 break y continue La Instrucci6n break termina con la ejecucién de un ciclo fox o while. Cuando una ins- truccién break es encontrada, el flujo del programa contintia con la siguiente instruccién fuera del ciclo fox o while. La Instruccién contanue pasa el control del flujo del programa a la siguiente Iteracién del ciclo for o whileen el cual aparece de esta manera; ya no se ejecutardn las instrucciones siguientes a continue durante esa iteracién 2.10.5 Estructura switch En esta estructura se elige una opcién de varias posibles, depenciendo del valor de la varia- ble asociado a switeh, su general es: switch variabl case orl Instrucciéni; case or2 Instruccién: otherwise Instruccién3; end En esta estructura si el valor de variable es igual a valor se ejecuta la Instrue- ciént1, sisuvelor es valor2 la Instruccién2; si tiene cualquier otro valor diferente a valor yvalor2, seejecuta Instruceion3. En esta estructura al igual que if, for y while es necesario certar con la palabra reservada end. Az + CAMARENA A, Attaomega Capitulo 3 Transformada de Fourier 3.1 INTRODUCCION 3.2 ACERCA DE LA TRANSFORMADA DE FOURIER 3.3 LA INTEGRAL DE FOURIER 3.4 LA TRANSFORMADA DE FOURIER 3.5 PROPIEDADES DE LA TRANSFORMADA DE FOURIER 3.6 CONSIDERACIONES HACIA SENALES DISCRETAS 3.7 LA TRANSFORMADA DISCRETA DE FOURIER (DFT) 3.8 CALCULO DE LA DFT DE MATLAB 3.9 ESPECTRO DE POTENCIA DE FOURIER pitulo se aborda el tema de le representacién y andlisis de imégenes en el dominio de la frecuencia mediante la descomposicién de la imagen en funciones senoidales y cosenoidales a través de la transformada de Fourier. 24 © Cavitvno 3, TaassroRuapa ve FouRER 3.1 INTRODUCCION esde el punto de vista de los autores, la mayoria de las operaciones y métodos del jprocesamiento de imégenes 0 visién artificial pueden ser entendidos sin un cono% miento profundo de las técnicas espectreles, raz6n por le cual dichos temas fueron analizados hasta este punto, contrario a los libros tradicionales en donde aquéllos aparecen al princi ser aplicados después en ninguna parte de la obro. Las técnicas basadas en la transformada de Fourier fueron usadas ampliamente en el pasado por razones de eficiencia e implementacién: sin embargo, hoy dia debido a los altos rendimientos de las computadoras modernas, han pasado a desempefiar un papel secundario. A pesar del argumento anterior, existen operaciones que pueden ser mejor en- tendidas en el dominio de la frecuencia; al considerar esto, el tema no puede ser relegado. El andlisis de Fourier representa no sdlo una teoria elegante, sino que trata de manera interesante y formal conceptos abordados en capitulos anteriores, especialmente los filtros lineales y la operacién de convolucién, Igual de importante son las técnices espec- trales en el tratamiento de temas tales como la compresién de video o imagenes, o simple- menteen el entendimiento de procesos como la discretizacién ¢ interpolacién de imagenes. El tratamiento de la transformada de Fourier en este capitulo empezaré con una introduccién que permita ¢ los lectores con poca experiencia entender los conceptos y ope- raciones que se analizarén posteriormente. 3.2 ACERCA DE LA TRANSFORMADA DE FOURIER En general, el concepto de descomposicién frecuencial se basa en las propiedades de las sefiales trigonométricas del seno y el coseno, por esta razén en esta seccién se analizeré una serie de conceptos y propiedades relativos a estas sefiales. 3.2.1 Funciones del seno y coseno Le funcién cosene es definida come: F(x) = cos(x) (3.1) La cual tiene el valor de 1. cuando x= 0 y cumple una figura completa desde 0 hasta 2 [figura 2.1 (a)]. La funcién coseno por lo tanto es periédica (con un periodo deT = 27), por lo que se dice que la seffal se repite: cos(x cos(x + 2m) = cos(x +47) cos(x + 4272) (2.2) donde K€ ¢ . Todo lo anterior es también vélido pera el correspondiente caso de le funcién seno (x), con la diferencia de que el valor inicial de la funcién seno es 0; esto es;sen(0) = 0. Ay Atfaomega ‘TeataucenTo De neicenes /Cuevas « Diaz + Canaazra 32 TRANSFORMADA 3.2.2 Frecuencia y amplitud El ntimero de periodos de la funciéncos(x) dentro de una longitud 27¢ es 1, por lo que su velocidad angular se define como: (3.3) Sise modifica la funcién coseno de tal forme que se tenga a expresion: (x)= cos(3x) (3.4) Se tendria una oscilacién tres veces mayor a la de la funcién original de cos(x) [figura 3.1 {(b)]. Con esto le funciéneos(3x) recorreré tres veces el ciclo completo y le distancia de2x, tendra une velocidad angular de 3 y un periodo de T = 27/3 ‘ , ~y a, sac” | al _L a ot i Sos af \ sal! a/ fe oat ; tf \ / ji “ eds(x) \, \ J ae aa i x to 4 3 x x (a) (6) Figura 3.1 Las funciones coseno y seno. (a) cos (x), sen(x) y (b) cos(3x) ysen(3x). Donde.r se encuentra en el intervalo de 0 a2” = 6.28. En general, puede definirse el periodo como: (2.5) Las funciones seno y coseno oscilan entre los valores limite +1 y-1. Una multiplicacién de estas funciones por una constanted cambiaria la emplitud de la funcién aA. Las funcio- nes definidas como: A: costar) yA-sen(ax) (3.6) tienen una amplitud 4 y una velocidad angular de@ calculada en la posicién x. La relacién existente entre la velocidad angular y le frecuencia de le funcién es: ‘Tratancenro de meine /Cuzvas + Diaz» Cucssana AS Alfaomega 26 Capirvno 3. Tuursrormapa oe FooRes (3.7) Por lo que descrita desde el punto de vista de la velocidad angular se tendra o=2xf (3.8) Donde f define el numero de ciclos por unidad de medida. 3.2.3 Fase Sise considera el desplazamiento de la funcién coseno a lo largo del eje X en una distancia @, la funcidn asume la siguiente estructura: cos(x—¢) (3.9) donde @ corresponde al éngulo de desfasamiento de la funcién resultante de! desplaza- miento. Considerando lo anterior, pueden trazarse equivalencias entre las funciones seno y coseno, ya que una funcién seno puede ser considerada como una funcién coseno despla- zada ¢ = 1/2; estoes: (2.10) 3.2.4 Ortogonalidad Los procesos de transformacién pueden ser considerados como la descomposicion de un modelo en componentes. Para pader descomponer un modelo, es necesario conter con un Conjunto definido de componentes ortogonales, sobre los cuales se realizaré la descomposi- cién, La propiedad de ortogonalidad de los componentes se refiere a que la descomposicién realizada tendré informacién excluyente entre los elementos, es decir, a informacién conte ide en una componente, producto de la descomposicién, no se encontraré en ningtin otro elemento del conjunto definido para la descomposicién. Considerando lo anterior el mode- lo descompuesto sera igual a la combinacién de los componentes ortogonales en los cuales se descompuso. $i el conjunto de componentes utlizado para le descomposicién no fuera ortogonal, las descomposiciones realizadas contendrian informacién duplicede de! modelo. Las funciones seno y coseno son artogonales, por lo que podrian ser utilizadas pera describir otras funciones de cualquier frecuencia, amplitud y fase. Un caso simple seria la adicién de ambas funciones con idéntica frecuencia y amplitudes 4 y 8, lo cual formaria una funcién cosenoidel de la misma frecuencia; sin embargo, con diferente amplitud y fase; esto es: A-cos(@x)+ B sen(@x)=C-cos(@x— 9) (3.11) A, Atfaomega ‘TeataucenTo De neicenes /Cuevas « Diaz + Canaazra 3.2 AreRcA DELA TRANSFORNADA. donde los valores de 4,B y ¢pueden ser calculados de acuerdo con: c VA+B yo=un'(2) (3.12) Le figura 3.2 muestra un ejemplo donde 4 = B = 0.5, porlo queg = 45". 08 0.6} sen(@x) 04) Acos(cx) + Bsen(@x) 02) a 0} A os 02 OScos(x) 04 a cos x) 08 0.5sen(x) a oe 089 2 so 4 5 6 x (a) (0) Figura 3.2 AdiciSn de las funciones seno y coseno de frecuencia idéntica Acos(wx) + Bsen(@x), con @ = I, asi como A- . El resultado es una sefial coseno desplazada con una fase 6, de tal forma que C = (0.5) + (0.5)° = 0.7071 yo=4s'. 3.2.5 La notacién de Euler La figure 3.2 (b) muestra la representacién de los componentes del seno y coseno, como componentes ortogonales cuya dimension es determinada por las magnitudes A y B. Esta ilustracién es parecida a la manera en que se representan bidimensionalmente los compo- nentes de los ntimeros complejos, donde: c=atjb (3.13) y J representa la unidad imaginaria definida como j Esta relacién serd més clara sise analiza la notacién de Euler para la representaciGn de los numeras complejos que se encuentran sobre el circulo unitario, tal que: e” = cos(8)+ jsen(8) (3.14) Donde ¢ representa el ntimero de Euler el cual tiene la correspondencia de e~ 2.71828. La figura 3.3 muestra una representacién del circulo unitaria descrito por e” TRaranaento De mic Diaz + Canaaara &) Aitfaomega 28 Capirvte 3, Taavsrorwana 9: FooRes v Figura 3.3 Circulo unitario descrito por e”. Si se considera a e”” como funcién de @ , entonces se obtendré de la funcién un nimero complejo, donde los valores de la parte real e imaginaria quedarian determinados por: Re{e"*} cos(@) imfe4 Como e” se encuentra ubicada sobre el circulo unitario, su amplitud es igual a 1. Esto es tal que: |e*|= eos @)+ sen? @) =1 (2.18) Considerando lo enterior, la menere de modificar la amplitud de e”” es multiplicarlo por un escalar @. La fase de e” pude ser vista de dos diferentes maneres: o bien, como simple- mente al argumento del 4ngulo sumarle el desplazemiento, o mediante la multiplicacién de un ndmero complejo constante que se encuentra sobre el cfrculo unitario. Loanterior puede ser formalizado como: (2.15) sen(6) 9) = oP oP (3.17) Si se hace un resumen de todo lo tratado anteriormente, se tendria que: si se multiplice e” por un escalar, se modificard la amplitud. Una multiplicacién con un ntimero complejo que se encuentra sobre el circulo unitario se modificaré solamente en la fase; sin embargo, siel numero complejono se encuentra sobre el circulo unitario, se modificaré tantola fase como la amplitud. La notacién compleja ofrecida por €” posibilita que el par de funciones del senoy coseno con ls misma frecuencia expresade en 3.11, pueden ser representadas com A\ Atfaomega ‘Taarancento De ncicenes / Cuevas » Diaz « Cananeva 33 Lamece pe Four 20 oe! = cos(@x)+ jsen(@x) (3.18) 3.2.6 Serie de Fourier para la representacién de sefiales periddicas Como fue visto en la ecuacién 2.11, es posible representar funciones de forma cosenoidal de cualquier frecuencia, amplitud y fase, mediante la suma de funciones seno y coseno. De igual manera, es también posible representar funciones periddicas que no tienen forma cosenoidal, a partir de la suma de funciones senes y cosenos. La idea por lo tanto es repre- sentar una funcién periédica g(x) con una frecuencia fundamental (2, a través de la suma infinita de funciones seno y coseno (Iiamados arménicos), de tal forme que esta represen- tacién pueda ser mostrada como: @(x)= Y[ A,cos( ka, x)+ Bsenkox) | (3.19) esta expresién es conocida como la serie de Fourier y los pesos constantes 4 y s, que participan en le expresién son denominados coeficientes de Fourier de la funcién g(x). Las frecuencias que participan en la ecuacion 3.19 son miltiplos de la frecuencia fundamental. €@, (incluida también la frecuencia O cuando k= 0). Loscoeficiantes 4, y 2, que al principio son desconocidos dependen directamente de la funcién periddica g(x) y deben de ser cal- culados a partir de ella. Al proceso de célculo de los coeficientes 4, y B, a partir de g(x), se le conoce como andlisis de Fourier. 3.3 LA INTEGRAL DE FOURIER El concepto de representar une funcién por medio de una sume de senos y cosenos no esté restringido a funciones periddicas, sino que puede también ser utilizado para representar cualquier tipo de funcidn. Esto exige, sin embargo, que se consideren en lugar de miiltiplos discretos de la frecuencia fundamental, un valor continuo que puede ser descrito mejor por una funcién de densidad. Por lo tanto, esta descomposicién tiene ahora un expresién diferente, que formalmente es definida como: F(x) = |) A, cox) + B,sen(x)do (3.20) Donde los coeficientes A, y B,, son de nueva cuenta los pesos de las funciones eoseno y seno para una determinada frecuencia ©. La integral de Fourier es la base para la transfor- mada de Fourier y el anélisis espectral de las sefiales. Cada uno de los coeficientes A, y B, especificen la manera con la que cada fun- cién del coseno y seno contribuyen en le representecion de la funcién f(x). Estos coeficien- tes son calculados a partir d ‘Trarancenro be meicrves / Crevas « Diaz « Canara ®y Altaomega

También podría gustarte