<. UNIDAD IZTAPALAPA PROYECTO DE INVESTIGACION: / J REPRESENTACION DE IMAGENES POR MEDIO DEL '&TODO "ARBOLES CUATERNARI-** Asesor8 Pedr o Flores Surez, Alumnos: Av i Ka Cruz Roberto &>e z Ctdrezo Martha Adriana i Ol NDoeE . L I I. Introduccibn . . . . . . . o . . . . . . . . . 1 11. Tchicas para la representacibn de imgenes . . 2 A. Arboles Strip . . . . . . . . . . . . . I . . 3 B. Quadtrees. . . . . . . . . . . . . . . . . . 4 C-Oct-trees. . . . . . . . . . . . . . . . 6 111. Especificaciones del proyecto . . . . . . . . 8 A. Plan de trabajo . . . . . . . . . . . 9 . IV, Diseo .lgico del sistema . . . . . . . . . . 10 V. Elecci6n del lenguaje . . . . . . . . . . . . . 13 Vi . Herramientas . . . . . . . . . . . . . . . . . 15 VII. DiseKo ffsico del sistema'\, . . . . . . . . . . 17 A. Definiciones . . . . .\. . . . . . . . . . 17 B. Generacin de un rbol cuaternario . . . . 20 \ 1 C. Modikaciones a l a Estructura de Datos . . . . 24 1. Anlisis del algoritmo Construye . . . . 27 - D. Calculo de propiedades geomtricas . , . . 33 1. Area. . . . . . . . . . . . . . - 34 2. Centroide . . . . . . . . . . . . . 35 E. Operaciones de Conjuntos . . . . . . . . . . 36 b 1. Complemento. . . . . . . . . . . . . . . 36 2. Interseccion . . . . . . . . . . . . . . 37 3. Union. . . . . . . . . . . . . . . . . 42 F. Girar una Imagen . . . . . . . . . . . . . - 47 VIII. Car t as IPO . . . . . . - . . . . . . . . . . . . 48 I X, Conclusiones , o . , , , .) , , . . , , , 49 X, Bibliografia u . . , , . , , . . , a . , , . I , , 50 I-, . En este proyecto de investigacin estudiaremos el tema de "representacin . de imgenes" mediante el mtodo rboles cuat or r ur i o-, " Quadt t -ees" , con la finalidad de crear- un sistema de graficacin. (Por congruencia d e nomenclatura seguiremos manejando el ter-mino Quadtr-eee en lo sucesivo). Haremos una comparacin de otras tcnicas de representacin de imgenes con el mtodo Quadtrees y esplicar-emos el por qu elegimos este. Para el estudio d e los Quadtrees nos basamos en los artculos , mencionados en la bibliografa y analizamos -10s algoritmos y las aplicaciones que tienen. Dentro d e las aplicaciones est, por ejemplo, la creacin de sistemas de informacin geogrfica. Que se pueden hacer gr aci as a l as caracteristicas de los Quadtrees. Las ventajas de usar Quadtrees. para la representacibn de imgenes son el poder ejecutar operaciones sobr e conjuntos como la superposicin de dos imagenes, unin de dos imgenes, obtener el complemento de una imagen, tambin nos pe-mite calcular el Area, el permetro, el centro de masas, etc&ter& Far-a la implementacin del c.istema estudipmos a el lenguaje de programaci6n que se adecuar-a a la necesidades del mi s mo. Dentr-o d e las especificaciones del proyecto y el diseo lgico del sistema explicaremos tales necesidades, y hablaremos en o t r o tema del por queelegimos el lenguaje "C", as como tambin expondremos los problemas que tuvimos y l a solucin de estos a l implementar los algor-itmos en dicho lenguaje. Dentro de l diseo fsico del sistema explicaremos el algoritmo de creacin de un Quadtree, la estructura de datos que utilizamos y el anlisis de los dems algoritmos. Tambin se encuentran los algoritmos escr-i tos ya en lenguaje "C", documentados para dar una mayor semblanza de estos. L Par a hacer una documentacibn formal del sistema utilizamos las cartas IF0 ( Input Process Ouput) para todos los procedimientos y funciones desarrolladas implementadas. 1 8 Las estructuras de datos jerrquicas han llegado a 5er una tcnica importante en varias ramas de la computacin: procesamiento de idgenes, geometra computacional, sistemas de informacibn geogrfica, g r d f icas, t-obdtica, cut -vas para r-epr-esen tar estructuras, volumencs. Estas estructuras, estan basadas en el principio de descomposicin recursiva ( similar al, mtodo de dividir para vencer) . Las estructuras de datos son muy &tiles ya que 5e encuentran sobre subcon juntos de datos. Estas estructuras tienen una representacin y tiempo de ejecucin eficientes para realizar operaciones de conjuntos. Y esto hace que resulten atractivas por su cl ari dad y fcil implementacin. Ya que Quadtree es una estructura de datos sencilla y de facil implementacin nos pareci interesante el estudio de es t a tcnica de representacin de imgenes. , A continuacin se presentan, en algunas tcnicas que tambin usan estructuras de datos para la representaci6n de imgenes. Es t o con e l ob jeto d? comparar-laskon Quadtree. 1 i 2 1 fJ0.A'. ARBOLES STRIP . Esta es una tcnica de representacibn jerarquica para curvas, consistiendo en arboles bi nari os con un nodo (dato) especial en cada nodo. Este dato es llamado ' s tri p' y al arbol que contiene estos datos se l e- l l ama arbol ' stri p' . Las cut-vas pueden set- codificadas y desplegadas a vari as resoluciones. La r-epresentacibn es cerrada baj o l a interseccin y unibn. Es t a es una tcnica que1 se basa en l a interpolacin l i neal , l a cual hace un importante ahorro de espacio, ya que no representa todos l os puntos expl citamente y es comparable en cuanto espacio a l as representaciones 'raster' que representan muchos de l os puntos explcitamente. Las curvas son aproximadas por pollgonos dados por una l i s ta, de puntos Xo, ... . . , Xn subconjuntos, l os cuales pueden ser col ineales. Lac; operaciones que se pueden hacer con esta tcnica son: Longitud de una curva, I nterseccin de dos curvas, Unin de dos curvas, Area de una curva, Determinar s i un punto es t a en una area, I ntersectar dos areas. En Geograf a se uti 1 izan curvas para representar 1 ineas, carreteras, ri os en un mapa. Una coleccin de mapas puede ser vi sta como una Ease d e datos, en la C U ~ podriamos hacer l as siguentes consultas: 1.- Encuentra el punto donde una carretera se i ntersect con un ri o. 2.- I nvestiga s i e l punto X se encuentra en l a region Y. 3.- Despliega un subconjunto de caracter sti cas de un mapa que aparezca en un sector X . r X. L . . 001. B. QUADTREE Los Qua d t r e e s son una e s t r u c t u r a d e d a t o s q ue se usa pa r a c o mpac t ar l a r - e pr e s e nt ac i n de una imagen. La g e n e r a c i n d e l Qua d t r e e es me di ant e l a d i v i s i h n d e l a i magen e n c ua d r a nt e s y l a i magen d e c a da c ua d r a nt e se s u b d i v i d e e n c ua d r a nt e s y as1 s uc e s i v a me nt e se ha c e l a mi sma o p e r a c i n h a s t a o b t e n e r b l o q ue s ( p o s i b l e me n t e d e l tamao d e un p i x e l ) que c o n s i s t e n e n 1' s o O's. For e j e mp l o , c o n s i d e r e una i magen ( f i g u r a 00- 0) r e p r e s e n t a d a p o r c o r r e s po nde n a l a i magen, y ltzts O's a l a p a r t e de a f u e r a d e la t i magen. E l r e s u l t a d o e n b l o q ue s pa r a l a ma t r i z d e l a f i g u r a 00-00 queda en l a f i g u r a O!l-OOO. Y f i n a l me n t e el Qua d t r e e r e s u l t a n t e 10 podemos v e r e n l a f i g u r a 00-OW. I I I una ma t r i z 2' x 2 ' ( f i gur - a 00- 001, o b s e r v e que los 1' 5 I No t e que l a r - ai z d e l r b o l es l a ma t r i z A, e s t a r-aiz se d i v i d e e n nodo se s u b d i v i d e en 4 y a s i s uc e s i v a me nt e h a s t a l l e g a r a los no do s t e r mi n a l e s que sol o c o n t i e n e n 0' 5 o 1's. 4 nodos, c o r r e s p o n d i e n t e s a 1ms c ua d r a nt e s NW, NE, CW, SE, cada En l a f i g u r a 00- OW del Qua d t r e e los no do s I NTERNOS 1 os t e r mi n a l e s con un y los Ydoa i d e n t i f i c a mo s con un semicrculo c ua dr o BLANCO o NEGRO. E l t i p o d e pr o bl e ma s que podemos r e s o l v e r 1 a p l i c a r el mt odo Qua d t r e e s e r i a , por E! jemplo, e n un s i s t e ma d e i nf owr mci bn g e o g r f i c a : Co n s i d e r e s e una b a s e d e d a t o s que consiste e n i mgenes d e mapas y p r e g unt a s t p i cas. La b a s e d e d a t o s nos puede pt mpo r c i o na r l a i magen d e l mapa que c ont e nga, p o r e j e mp l o , l a s z onas e n donde es abundant e l a l l u v i a , y o t r a i magen que c o nt e ng a l as l u g a r e s e n donde e5 mejor el c u l t i v o d e l a v i d . Te ni e ndo ya, l a s dos i mgenes podemos h a c e r una i n t e r s e c c i n y o b t e n e r d a t o s i n t e r e s a n t e s para el e s t u d i o de l a geogr af f a. .L Con las i mgenes que tenemos en la base d e d a t o s podemos hacer- t o d a s l a s o p e r a c i o n e s 1 6 g i c a s que no s p r o p o r c i o n a Qua dt r e e , as p o d e r tener r- i - sul t ados e f i c i e n t e s y r p i d o s para el s i s t e ma d e i nf o r ma c i n geogr Pf ico. 4 FI GURA 0 0 - 0 I MAGEN W . . N E S FI GUR6 00-00 REPRESENTACION DE LA IMAGEN EN UNA MATRIZ F I GURA 00 -000 REPRESENTACI ON EN BLOQUES \ M F I GURA 00 -ow QUADTREE 00.C. OCT - TREES La v e r s i n en t e r c e r a di me ns i n d e l m t odo d e Qua d t r e e s es l l amada Oc t - t r e e , p r o c e d e por s u b d i v i s i n r e c u r s i v a de un vol umen e n o c ho o c t a n t e s h a s t a q u e c a d a o c t a r i t e ha si do r e d u c i d o d una f or ma m ni ma. E s t e p r o c e s o es r e p r e s e n t a d o p o r un At-bol d e gr-ado o c h o e n el c u a l la r a i r r e p r e s e n t a el o b j i e t o entet; o, cuyos o c t a n t e s e s t n e t i q u e t a d o s como se mue s t r a e n l a f i g u r a s i g u i e n t e , y los nodos h o j a c o r r e s p o nd e n a a q u e l l o s c ub o s p a r a los c u a l e s y a n o es n e c e s a r i a m s s u b d i v i s i n . Los nodos t e r mi n a l e s s o n l l a ma do s NEGRO o BLANCO ( de pe ndi e ndo si c ubo s c o r r e s p o n d i e n t e s i magen d e l ObJe t o . Los nodos i n t e r n o s s o n l l a ma d o s GRIS. La i i g u e n t e f i g u r a muest r a un e s t a l l e n o o v ac o ) , de pe ndi e ndo si e s t n e nt e r a me nt e f uer-a o d e n t r o d e li\ n y su c o r r e s p o n d i e n t e Oct-tree. " b 1 Ls v e n t a j a d e est a rept - esent aczi n s e der - i va de el he c ho q ue es una o r g a n i z a c i n e s t r u c t u r a d a que pe r mi te que l a s imageries t e ngan una r e p r e s e n t a c i n c ompac t a y una i mpl e me nt a c i n e f r c i e n t e . Al g una s o p e r a c i o n e s q u e se pueden r e a l i z a r s on l a s s i g u i e n t e s : t r a s l a d a r . y t-citar una i m a g e n , t r a s l a d a i y aumentar o r e d u c i r una imagen, el imincin de s u p e r f i c i e s ocultas y d e r i v a c i n d e sec c i ori es a t-b i t r a r- i as. Cllgunas aplicaciones son las siguientes: Anlisis de secciones, reconstruccin dinmica de un corazn latiendo o * d e un pulmn respirando, por medio de la toinografla por computacin. La imagen de un cerebro obtenida por resonanc i a magntica almacenada en un arreglo de 64 x 64 x 64 = 262,144 bits, puede ser almacenada en un oct-tree el cual utilizar-la 248,736 bits. . L 7 Actualmente exist.en di versas ttcni cas para e l manejo de imgenes por medio d e computadoras com(3 lo vimos en el punto anter-ior, entre e l l a s est l a de Quadtrees. Elegimos este mtodo por que permite, mediante e l uso de estructuras de datos, el manejo ef i ci ent e y r-&pido de algunas operaciones que ot r as tcni cas no poseen . En e l estudi o de los al gori tmos para l os Quadtree se observan algunas ventaj as que ti ene est e m&todo par a hacer operaciones sobre imgenes. En primer l ugar podemos representar una f i gur a y hacer operaciones sobre e l l a tomado todo det al l e de &St a, ya que el Quadtree vi s i t a cada pi xel de l a imagen. i Como usamos estructuras de datos para l a generacin de l os Quadtree e5 f c i l , entonces, hacer- operaciones sobre conjuntos como son l a unin, obtener e l complemento, etctera. Usando esta tcnica de representaci 6k de imgenes, nuestro obj et i vo es hacer consul tas ( uti l i zando op raci ones l hgi cas) entre dos o ms imgenes. Las aplkcaciones d e estos estudi os estan orientados a l a car t ogr af a o a hacer un sistema de ensenanza sobre la5 operaciones bsi cas de conjuntos ( pr i nci pi os bsi cos 16gi cos) , en donde el estudi ante pueda hacer operaciones de conjuntos ayudado d e imgenes p a r a el-mejor entendimiento de estos conceptos. \ \ * i 8 I I I I I I I 1 1 I I I 1 I 1 I I I I I t- 000. A. PLAN DE TRABAJO . 1. Lectura de artculos con el tema "Representacin de imgenes con Arboles Cuaternarios (Quadtree) ". 2. Disefo lbgico del problema. 3. Identificar las funciones de creacin de un rbol cuaternario y con esta estructura realizar operaciones con las imgenes como: unin, interseccibn, complemento, Ar ea, centro de masas. 4. Estudio de las necesidades para hacer las funciones anteriores y del equipo de trabajo. Revisar todas las herramientas y documentacin necesarias. 13. Eleccin del lenguaje (ventajas y desventajas). 6. Elaborar los algobitmos y realizar l as funciones de operaciones con las imgenes (creacin de la primera biblioteca de funciones en C del sistema). 7. Elaborar los algoritmos y realizar las #unciones de graficacibn (segunda biblioteca: funciones de graficacibn) 8. Elaborar los algor-itmos y realizar las funciones para la creacin del ambiente con e l usuario: pantallas, menus, etcetera. (Ter-cera biblioteca d e funciones). 9. Unin de las tres bibliotecas en un m b h l o principal. - Hasta este punto queda terminado todo el kmbiente par-a el s i s t ema. Acepta una o dos imagenes y puede hacer diferentes operaciones con ellas . \ 10. Elecci6n de una aplicacitin. - Las tres bibliotecas y el mdulo princiapal que las une estan creadas en forma independiente para poder adaptarlas a cualquier- aplicacin cin necesidad de modificarlas. Solo se necesita crear el nuevo ambiente. 11. Documetacibn. 12. Revisin. El diseo lgico del sistema es muy sencillo, ya que, la nica informacin de entrada es la o las imagenes, que pasan por un dnico proceso en el que se elige la opet-acii5n lgica que se desea hacer, y como salida se tendr$ la imagen de resultado de dicha oper-ac i n . I MAGEN ( ES) [ = - I - I MAGEN ENTRADA operacion lgica RESULTADO \ Par a la eleccin de la operacin, se necesita crear una biblioteca de operaciones con lag imagenes y una de herramientas para el desplegado de stas. El sistema consta de un Brea de trabajo, que contiene tres menilis, y para facilitar su uso, el usuario p ede llamar a cualquier opcin de cualquiera de los tres mentlis d h t r o del Area de trabajo, En seguida se muestra un diagrama del si st del sistema Mend Creacin de operaciones general una imagen con l a imagen 10 La pmntalla de trnbnJo consta de l as si gui entes Areas: I MAGEN 1 AREf i : La idea del diagrama del sistema es que e l us uar i o pueda d i b u j a r una imagen en el Area de trabajo y con @{ l a genere un Quadtree y despus de esto pueda hacer cual qui er opgaci n 16gica del me& de operaciones El men de opc i ones: Tecla F l FZ F3 F4 FS F6 F7 F8 F 9 a con l a imagen. creacin de una imagen consta de l as s i gui ent es Significado Ayuda pun t o b o r r ar un punto Lnea C rcul o Ar c o Cuadro Rellenar cuadr ant e b o r r ar el Areq de t r ab aj o C l i c I I LENGUAJE "C" "C" es un lenguaje de alto nivel, sin embargo, la denaminacibn de "altura" d e un lenguaje, depende de las facilidades que ofrezca para la comunicacibn con la arquitectura interna de la computadora, con sus registros, con las localidades de memoria, etc. En este sentido el lenguaje "C" ofrece caractersticas que lo diferencian de los ot r os 1engua;ies de alto nivel. Y por estas diferenciaq, nos interes el lenguaje "C" para hacer los algoritmos del proyecto. PRINCIPALES APLICACIONES DEL LENGUAJE C Aunque "C" se ha utilizado para programacin de sistemas, como p o r ejemplo, el sistema opet-ativo UNI X est escrito en un 90% en distintas reas de lenguaje "Cii, ha ganado popularidad aplicaci6n. =\ 1. Aplicaciones numricas, 2. Procesamiento de textos, 3. Procesamiento de bases de datos, 4. -Sistemas de comunicacihn, etc Ritchie explica que "C" e5 un lenguaje de pr-ogramacin de empleo general, caracterizado por su c:oncisin y por poseer un moderno flujo de control y estructuras de datos, asi como un rico conjunto de operadores. "C" no e5t especializado en ningh r ea particular de operacin, dada su carencia d e restricciones y su generalidad. Por- esto "C" es m a s eficaz y conveniente para muchas tareas a diqerencia de otros lenguajes de? alto nivel. , El libro Lenguajes de programacin de allen E. Tucker, hace una evaluaci6n de las caractersticas del lenguaje "C" y es l a sigui en te: 4 EVALUACI CI N GLOBAL DE "C" 1, Expresividad Bueno. 2. Bi en def i ni do Excelente 3. Estructuras de datos Excelente 4. Modularidad. Exc el-en t e d. Entrada-lida. Bueno 8. Transportabi l i dad Excelente 7. Pedagogla Regular 8. Generalidad Bueno 9. Ef i ci enci a Excelente ha demostrado ser un lenguaje extiemadamente eficaz I 1 c I t expresi vo para una extensa gama d e aplicaciones de programacin. Es eficiente por su variedad de tipos de datos y operadores de t-elativo "bajo nivel''. \ La caracterfstica de excelente en el uso d e las estructuras de datos, fue la razn mas importante que nos llev a elegir a "C" como lenguaje par a el proyecto, dado que los algoritmos necesitan de una definicin de estructuras de datos. tiene un rico conjunto de operadores, que permiten la I I c II expresi6n de algori tmos para manejo detal lado de estructuras de datos, apuntadores, listas, etc. La modularidad est soportada fuertemen a e por la compilacin independiente de funciones, el poder crea+ bibliotecas de uso general, etctera. Esta caracterstica hace Que nos interese an mas el lenguaje. "C" e5 independiente de cualquier arquitectura de mquina en pat-ticular, de aqu la caracterfstica de que "C" sea transportabl e. Y tambin podemos aadir que los operadores, tipos de datos y bibliotecas en funciones en 'IC" son bastos y transportabl er, haciendo que 5u aplicacin sea potencialmente amplia. "C" permite, de manera completa y conveniente, la expresin de algovitmos de programacin estructurada, as c o mo la codificacin de aplicaciones especializadas. L Hay que tomar en cuenta que adems de la eleccin del lenguaje, tuvimos que elegir el tipo d e computador, y con esto, como es lgico, se reduce el campo de operacin del sistema que implantemos. For facilidad y pot- ser tan crmunes, optamos por una PC XT . Cabe sealar que utilizamoc, TURBO-C para hacer las pri>gr-am;.E en "C". I J Despus de elegir el lenguaje y el computador nos enfrentamos con otros problemas. A diferencia de otros lenguajes de alto nivel "C" no posee funciones de graficacin, por lo tanto tuvimos que estudiar la forma de hacer dichas funciones. Teniamos dos opciones para hacer las funciones de graficacin: 1. Hacerlas en lenguaje ensamblador. 2. Hacer las funciones en "C" mediante interrupciones. i Y a que tenamos estas opciones decidimos estudiar el tema de interrupciones para poder hacer las funciones. INTERRUPCIONES PC Existen tres formas de hacer interrupciones, \ 1.- La que seneran los circuitos de \ l a computadora en respuesta a algGn evento como el oprimir alguna tecla (st as interrupciones se manejan por medio del "interrupt controller"). 2.- La interrupcin que genera el C W , debido a algn resultado inusual, como la divisih por cero. 3. - Y l as interrupciones que se generan deliberadamente por programas, mediante invocaciones a la RAM 6 RON, est as interrupciones suelen llamarse "Caftware interrupts", y en la PC son parte de ROM- BI OSy DOS service, Para hacer las funciones de graficacin utilizahos entonces las interrupciones por software. Turbo C, tiene l a funcin int86 que genera una interrupcin, 5610 hay que especificar dicha interrupcin. 15 -. 4 I I 6 r r woo. A. DEFINICIONES, Flsumimos que la'imagen dada es una matriz de tamao 2" X 2n. Cada elemento de la matriz representa un pixel que tiene el valor de 1 d O (NEGRO o BLCSNCO). El Quadtree e5 una aproximaci6n a la imagen representada, basado en una subdivisin sucesiva de cuadrantes. Se repite la subdivisin del arreglo en cuadrantes, subcuadrantes, hasta llegar a bloques, que consisten de 1's o O ' s . Este proceso es representado por un rbol de grado 4, en el cual la raz es la matriq completa.. Los 4 hijos de l a r a f z representan los cuadrantes, y los nodos terminales corresponden a aquellos elementos de la matriz para los cuales ya no es necesario hacer subdivisiones. Ejemplo: Tenemos una imagen (figura 7-11, que representamos en una matriz d e 2* x 2' (figura 7-21, la figura 7-8 es una descomposicin en bloques de la regin en la figura 7-2. La figura 7-4 es el Quadtree resultante. Los 1's de la figura 7-1 muestran el inberior d e la imagen O's la parte de afuera de la imagen. En l a figura 7-4 la raiz del rbol es l a m triz. En general nodos cuadrados (NEGROS y BLANCOS) representan bloques que son 1 ' s O O's, a estos nodos les llamamos TERMINCILEC y los nodos semicircularea les llamamos INTERNOS. y los \ 1 1 os C 17 " .--I- * 1 1 1 0 0 1 1 1 0 0 - 1 o O 0 1 0 I FI GURA WOO4 IMAGEN FI GURA WOO-OO REPRESENTACION DE LA iMAGEN EN UNA MATRIZ A w . N E S FI GURCI WOO-000 REPRESENTAUON EN BLOQUES B FI GURA wflo-ov QUADTREE Q 18 Los nodos que son internos tienen 6 campos; de informacint uno para almacenar l a direccin del padre, otro que i denti f i ca a este nodo ( I NTERNO) y cuatro apuntadores a io5 hi j os. . Los nodos terminales tienen dos campos: un apuntador al padre y otro para- el ti po de nodo de que se trata (BLANCO o NEGRO). Los cuatro hi j os de un nodo i nterno se etiquetan de la siguiente manerat NW - .Noroeste NE - Noreste SW - Suroeste SE - Sureste i N W S .- E S i un nodo es $e tamao 2n X an, es deci r, corresponde- a una cada hi j o ser de 2 regin de tamano 2" X 2" pixeles en la imagen, e1 tamano de , n-i 2n- S. L 19 VO0.B. GENERACION DE UN ARBOL CUATERNARIO . - Hanan Samet propone l a estructura de un nodo cualqui-era (terminal o interno) como un regi stro de b campos: Uno para almacenar l a direccin del padre, otro para i denti fi car e l ti po de nodo de que se trate (blanco, negro o interno) y l os cuatro restantes son apuntadores a sus hijos. I 1 T F I (3URA VUU -V Estructura de un nodo para Quadtree E l algoritmo de construccin de un Quadtree xamina cada pi xel de l a ma t r i z una sola vez de maner.an6loga a l recorri do posteri or de un Arbol, Por ejemplo para tina matriz de 2 x 2'se muestra en J la fi gura VD-VO e l orden en que son registrados l os pixeles. S i n embargo un nodo es creado cuando es maximo, s deci r cuando ya no puede parti ci par en un "merge". Un "merge" ocurre cuando l os 4 h i j o s de un nodo son todos negros o blancos. 2 a c FIGURA WOO-VO Orden en que son registrados l os pi xel es 20 . . . . . -. . . . . i , . . Cuando un cuadrante lo forman 4 pixeles del mi s mo color (NEGRO o BLANCO) el nodo resultante en el Quadtree no tendr hijos que apunten a NIL, simplemente un apuntador a su padre (si este lo tiene) y el tipo de nodo que es. Es decir, no se generarn 4 nodos del mismo tipo 5610 se crear un solo nodo que represente a los pixeles. Por ejemplo, en l a Figura los pixeles 9 , 10, 11 y 12 se reducen a solo un nodo, esto se ve claramente en la representacin del Quadtree resultante (figura 7-41 . El procedimento principal es 1.lamado QUADTREE y es invocado con el valor del tamafo de la i ma g e n , por ejemplo n para una matriz de 2" x 2". Hacemos uso d e un apuntador a una estructura llamada pair que es un registro con dos campos: un apuntador a un nodo llamado apunta y otro para el tipo de un nodo ( I NTERNO, NEGRO o BLANCO). El proceso de construccin del rbol es ejecutado por la funcin Construye que examina recursivamente todos los pixeles. \ Cuando se crea un nodo interna Q en Construye, se almacena en 4 Apunt aCpai r- 3 la direccin de a , &hora bien IIPO-NODOCpair3 tiene el tipo correspondiente al nodo generado por Const ruye. Si Construye encuentra un nodo NEGRO o CINCO el campo que apunta de pai r se lo asigna a NIL. Cuando l a funcin Construye termina de r correr la matriz, si encontr un nodo terminal l a +uncin QUADTREE crea un nodo de este tipo y dev-l ve un apuntador a este. Independentemente del tipo de nodo que sea. se le asigna al campo PADRE el valor de NIL en QUADTREE. Bt ! i _- 21 PSEUDOCODIGO Func QUfiDTREE 4 ni vel ) comienza P <- construye t nivel, 2". 2") si TIPONODO (PI = I NTERNO ent onces comienza padre (P> <- NI L QUCIDTREE <- P termina comienza otro Q <- DISPO TIPO-NODO t Q) <- TIPONODO (PI par a i <- NWhasta SE h a hi j o( I ) ( P) <- NI L QUADTREE <- termina i termina . . 3 c 22 1 SALIDAS DEL M-GORITMO La f unci on devuel ve un apunt ador del t i p o pa i r I Func Const r uye ( n i v , x, y) . comi enza si ( n i v =O) ent onces Const r uye <- ( ( c ol or (ACx,yJ, NIL>) o t r o comienza n n i v <- n i v -1 PCNWI <- Const r uye ( n i v , ~ - 2 , ~ y-2" 1 PCNE3 <- Const r uye n i v , x-2 , x 1 P C S WI C- Const r uye ( ni v , x, y-2 ) PESE3 <- Const r uye 4 n i v , x, y 1 si (TIPONODO (PCNWI <> INTERNO and TIPONODO ( P CNW3 =TIPO-NODO(PCNE3) = TIPONODO (PCCWI =TIFO~NODO(PCSE3) 1 ent onces o t r o Const r uye <-- PCNWI corn i en ra Q <- DISFO par a i <- NW hasta SW hat si TIPONODO( P E i 3 ) = INTERNO ent onces corn i en z a HI J Ot i ) (9) <- APUNTCS ( PCi I ) P h D E (APUN+?A<PCiJ) <- Q \ \ -- t er mi na o t r o com enza \ R <- DISPO TIPO-NODO<R) C- TIPONODO ( P f i l ) par a J <- NW has t a SE haz PADRE R) <- Q HIJO ( j > ( R) <- NI L -- t er mi na TIPONODO C Q) <- INTERNO Const r uye <- ((INTERNO, Q>> t er mi na t er mi na termina 23 VO0.C. MODIFICACIONES A LA ESfRUCTURA DE DATOS Ya que en las hojas terminales los apuntadores de los hijos tienen el v al or de NIL decidimos manejar dos estruclxwas diferentes, por razones d e espacio: una para io5 nodos internos y - o t r a para los terminal es. b T I Tipo de nodo FIGURA WOO-WOO Estructura tipo padre .- F-w Ti p o de nodo F 1:GURA woo -woo0 Estructura tipo hijo Con esta modificacin hacemos un ahorro de memoria que se desperdicia con la estructura anterior. 'Ahora bien, cuando Construye crea un nodo interno el campo APUNTACPAIR) almacena la direccin del nodo tipo HIJO en pair ya que este es un apuntador. 24 I-, Despus de esto, QUFTREE sbl o tiene' que examinar el c :PO tipo-nodo en pai r para devolver l a direccin correcta; es decir, si CONSTRUYE creo un nodo interno, QUADTREE regresar 1 mo resultado PADREC pai r) y en otro caso regresara simplemente pa . Usamos la estructura de tipo HIJO para pai r . Pi-esentamos ahora los algoritmos modificado. PSEUDOCODIGO Func QUADTREE ( nivel corn i en za P <- Canst r uye t nivel, 2", 2") si TIPONODO ( pair : = INTERNO entonces corn i en za PADRE (FADRE (pair)) <- NI L QUCIDTREE <- PADRE (pair) t e r m i n a comienza ot r o FADRE (pair) <- NXL QUADTREE <- pair termina termina . \ Las llamadas a DISPO para Construye se sustihyen po r : 1. Creafnterno- Crea una estructura tipo PADRE y devuelve un apuntador a esta. L 2. Crea-hoja- Crea una estructura tipo HI J O y un apuntador a esta. 25 L PCEUDOCODIGO j- , . Func Construye (ni v, x , y) comienza si (niv =O) entoncerr comenza aux <- Crea-hoja0 TIPONODO (dux) 4:- matrizCxlCy3 PADRE(aux1 <- NIL Construye <- dux termina com ien za o t t'0 ni v <- ni v -1 PCNWI <- Construye ( ni v, x-2,' y-2" 1 PCNEI <- Construye 4 ni v, x-2 1 Pcsw3 <- Construye ( ni v, x , y-2' PCSEI <- Construye t ni v, x , y 1 fi (TIPONODO (PCNWI 0 INTERNO and n TIPONODO (PCNWI =TIPONODO<PCNEl) = TIPONODO (PCSWJ =TIPO-NODO(PCSE3) 1 entonces otro Construye <-- PCNWI comienza Q C- Crea-interno para i <- NW hasta CW comienza si PADHE( PAREJACi.3) <> NIL entonces \ HXJO(i)(Q) <- RADRE (PCiI) .PADRE (PCiJ) <- Q termina comienza -- otro HJJO(I)(Q) <- PCII PADRE (HIJO(1) (Q) 1 <- Q termina TIPONODO (Q1 <- INTERNO au x <- Crea-interno TIPONODO(aux) <- INTERNO PADRE(2iux) <- Q Construye <- a u x termina termina termina 26 82r i 2g i _ WOO. C. 1 . ANALI SI S DEL ALGORITMO CONSTRUYE . El hacer el analsis de un algoritmo, significa'.medir la cantidad de recursos que necesita el algcritmo para resolver un problema. A esto comunmente se le conoce como funcin complejida. La funci6n complejdad puede ser de dos tipos: espacial si lo que se mide es la cantidad de memoria requerida por el algoritmo para dar solucin al problema o temporal si se mide el tiempo que necesita el algori'tmo para resolver el probelma. Todas estas medidas tiene como aibjetivo hacer un uso eficiente de los recut*sos de la mquina, coma) son: la memoria y el tiempo del procesador. Para el clculo de la complejida temporal y espacial del algoritmo Construye se divide el problema en 3 casos: 1. Mejor. De las 'definiciones que se dieron para generar un quadtree, dada una imagen de 2n x 2n, se puede apreciar que si la imagen es toda NEGRA o toda BLANCA solo se crea un nodo, l a raz, con la informacin del color d e la imagen. (Figura WOO- OX) 2. Medio. Depende de la regin que ocupe la imagen, ya que como vimos en todos los; ejemplos anteriores, se puede generar un arbol diferente por cada uno y por ello el espacio que ocupan es diferente paba cada figura. \ 3. Peor. Siguiendo la misma definicin de generacin de un rbol para una imagen dada de 2" x 2n, si la imagen es, por ejemplo, un pixel NEGRO seguido de uno BLANCO. El rbol generadoas forzosamente aquel en que todos sus nodos terminales representan un pixel. (Figura WOO- 8 ) . 27 . IMAGEN W \ ', 1 REPRESENTAClON DE LA IMAOEN EN UNA MATRIZ A m N E QUADTREE FGURA woo - 02/1 REPRESENTACION EN BLOQUES - 28 . f IMAOW N REPRESENTACION DE LA IMAOEN EN UNA MATRIZ A S REPRESENTACION EN BLOQUES ' . OUADTREE FI GURA v00-W 29 COMPLEJI DAD ESPACf AL . Calculo de la complejidad espacial del atgoritmo Coristruye. Mejor casot solo se necesita espacio para el nodo generado entonces la complejidad es: t Peor caso: de nodos-requerido por nivel es 4n. para el arbol generado en la figura WOO - X el nmero Est0 (-15: NIVEL NODOS O 2 k ' 1 0 4" 4' 42 donde 4L es igual al nmero t o t a l de pixelears, esto es 4k =2" x Zn *\ nota: de esta informacin 5e sabe que l a altu* del rbol es k. La cantidad de espacio requerido es la suma de todos los nodos en el rbol cuaternario, por lo tantor ._ i=o ' C 2tn+i> De aqu que la complejidad espacial es oC2 3 en el peor caso. . . COMPLEJIDAD TEMPORAL . Para el clculo de la complejidad temporal, dado que es variable si se hace en f or ma experimental, entonces se recurre a contar el nmero de operaciones que se necesitan para resolver el problema. Se debe elegir aquella operacibn que se realize en la mayor parte del algoritmo. Para nuestro caso, se elgib la operacin asignacin para los nodos del rbol. Peor caso8 Siguiendo el algori.tmo Construye (pag.26) el caso base se presenta cuando ni vel =O. Esta es cuando solo hay un pixel y en este nivel se realizan 3 operaciones de asignacin, de donder F C l > = 3 Y si el nivel no es igual a cero el algoritmo sigue el recorrido recursivo. De regreso de la rec:ursividad se hace la pregunta para saber si los tipos de nodos son iguyles. Pero como estamos analizando el peor caso, esta c:ondicin n G c a se cumple. Por lo tanto realiza 6 operaciones multplicadas cuatro veces (total 24 operaciones) que se ejecuta la FC 2f n 3 4 F ( 'T) + 24 ) + 24 2lJ-4 - 2 * F ( 2 Del anlisis anterior se obtiene la ecuacin recurrente. C FC 2= > - 2' F ( ?lu-'* ) +24 31 ." L I 22i FC p - r >. =2 2i+2 F ( 2" YN- t i - 2 ) +22i 24 24 Zn+Z 22n+2 FC 4 =2Zn+4 3 + 2 3 2n+4 24 +2 Zi+2 FC SZn > = 24 +2' 24 + ...+ 2 n + s ~ ~ + ~ 3 + 24 2k+2 = E 2 4 2 k=o n k=O * zrz2 2k+2 +SZn+4 3 +24 donde 22 - 1 zzk+' a 2" 2' p 22k I 22<n+*) por lo t ant o la complejidad temporal en\el peor caso es: oc SZn+*> 32 -y..- * W G , i WOO. D. CALCULO DE PROP1 EDADES GEOPfE TRI CAS DE I MAGENES REPRFSENTADAS POR (11 1AL)TREES La r e p r e s e n t a c i n d e f i g u r a s 12s un a s p e c t o i mp o r t a n t e de p r o c e s a mi e nt o de i magenes. Es t i l p a r a t e n e r una &p r e s e n t a c i n que p e r mi t a un c l c u l o f c i l d e c a t - a c t e r i s t i c a s y d i f e r e n c i a s de f i g u r as . A c o n t i n ua c i n pr e s e nt a mo s los a l g o r i t mo s d e uni n, i n t e r s e c c i n , compl ement o, rea y el c e n t r o i d e i Je un Quadt r ee. Suponemos q ue l a i magen es una ma t r i z d e 2"X 2" d e p unt o s b l a n c o s y ne gr os . La r e p r e s e n t a c i n ( o e s t r u c t u r a ) Qua d t r e e d e t a l i magen se o b t i e n e por d i v i s i o n e s s u c e s i v a s e n c ua dr a nt e s . E l no do r a i r d e l &bol r e p r e s e n t a la i magen c ompl e t a. Si ste n o es b l a n c o o ne g r o , se d i v i d e e n sus c u a t r o c uadr ant e s . Cada nodo q u e n o r e p r e s e n t e par t e d e l a i magen se s u b d i v i d e e n s u s c u a t r o c uadr ant e s . E l p r o c e s o t e r mi n a ha<st a q ue se v i s i t a n las hoj as t e r mi na 1 es. 33 - 8 Wall. D.1. AREA. . . Es t e algoritmo encuentra el rea de una imagen vepresentada p o r un Quad t re@. E l r ea se define como el total de pi xel es col or NEGRO en l a imagen. ENTRADAS AL QLGURI TMO: i) Un apuntador a l a r a z del Quadtree. ii) Un ndmero n , : que denota el logaritmo del dimetr3 de la imagen, es deci r, l a imagen es de tamao 2 X 2 . FSEUDOCODI GO \ c o m i en za Func Area( rai z, n) \ \ area-negra <: - O si TI PO- NODO( rai n) = I NTERN@entonces para i <- NW hasta SE haz at-ea-negra .<- area-negra + fired( HI J O() ( r ai z ) , L n - 1 ) o t t-o si TI PONC)DO( RAI Z) = NEGRO e n t o n m area-negra -::- area-negra + 2 A r e a .<- a r ea-n eg r a termina Se puede ver fcilmente que el algor-itmo vi s i ta cada hoj a de color NEGRO una y solo una vez, obteniendo as el rea cor t -ect a. c- E- 1 r -- u . . WOO, E. OPERACIONES DE CONJUKTOS A menudo es decabl e comparar dos regi ones de una imagen y encontrar qu hay de comn entre e l l a s . Esto iniplica l a interseccin de dos imageries y detreminat- l os puntos comunes sntr-e estas. Otras opet-aciones de conjunto que son Gt i l es son l a unin y e l complemento. Los algoritmos para estas operaciones implican un recorri do de l os rbol es. Si n embargo, los algoritmos de interseccibn y uni n, en algunos casos, no recorren completamente l os r-boles. i VOO. E, 1 * COMPLEMENiO La construcci6n de el complemento de una imagen implica intercambiarlos pi xel es NEGROS por ELfiNCOS y vi ceversa. Es una operacibn simple que no cambia completamente l a estructura del rbol . \ ENTRADBS BL ALGORITMO: \ 1 apuntador- a id r a z de un r bol . PSEUDOCODIGO Pr oc Complemento( raiz) corn ien na L 51 T I PONOD O( r ai z) =: INTERNO entonces Complemental( HI JO( i ) ( r-ai=)) p ar a i <- NW h as t a SE h 2 otro si TIPONODO( r a z ) = NEGRO entonces TIPONODO( rai n) <- ELbNCO o t r o TiPO-NDO( r al z) .:;- NEGRO t e r-m 1 n a b ---- En id Fi g. A de l anexo 5e presenta un ejemplo de esta operacin. . VEO . E. 2. I NTERSECCI ON E s t e p r o c e d i mi e nt o . e nc ue nt r a el ' Y ' l gi co de dos i mag e ne s r e p r e s e n t a d a s po r Quadt r e e s . ste a l g o r i t mo r ec or r er los rboles en p a r a l e l o . A c o n t i n u a c i 6 n pr e s e nt a mo s 105 cosos que se p r e s e nt a n ent t - e dos nodos: i ! Cuando el t i p o d e no do de el pri mer r b o l es NEGRO, e n el r b o l d e i n t e r s e c c i n se i n s e r t a r el no do c o r r e s p o n d i e n t e d e l s e g undo r bol i nde pe ndi e nt e me nt e d e l t i p o d e este. i i ) Si el t i p o d e no do d e l s e g undo rbol es NEGRO, e n el r b o l d e i n t e r s e c c i t n sc i nsert at - - & e1 no do c o r r e s p o n d i e n t e del p r i me r r b o l i nde pe ndi e nt e me nt e d e l t i p o de este. i i i ) S i ambos r b o l e s t i e n e n no do s I NTERNOS e n s u5 c o r r e s p o n d i e n t e s p o s i c i o n e s , los hijos d e estos s o n exami nados r e c u r s i v a me n t e usando el mismo pt-oceso. ENTRADAS AL ALGRITMO: Los a punt a do r e s a l a r a z de cada SALI DA DEL ALGORI TMO: Un apunt ado r a l a r a f t d e l a i n t e k e c c i n d e los d o s r b o l e s . FCEUDOCODIGO Func Interseccin( no d o l , inodo2) corn i en za si TI PONODO( nodo1) = NEGRO y TI PONODO( nodo2) = ELf i NCO e n t o n c e s I n t e r s e c c i n c- Co pi a $ nado21 otro SA ' Ti PO- i d ODO( n o d c Q) = NEGRO y TI PONODO( nodol ) = BLANCO e n t o n c e s I nterseccj n (.I- Co p i a ( n o d o l ) i n t e r c DI SPO p a r a i <:- NW tt;csta SE h a cmi en- HI J Oi i ) (i nter- ) <.:- I n t ~ r s e c c i 6 n ( HI J O( i i i nodol i , HI JO ( i i ( nodoL) ) FGDHE( HI J O( i ) ( i n t e r ) ) .<- i n t e r t e r- m i n a l n t et - s ec c in ..'- inter termi no. . Ej empl o: Tenemos una imagen ( f i g u r a WOO-OX) que representamos en una matriz de 2 ' x 2' ( f i g u r a WOO-W), l a f i g u r a WOO-MI es una f i g u r a WOO-XOO es el Quadtree t-esul tante. descomposicic5n en bl oques de l a regi n e n l a f i g u r a woo-x. La F I EiURA WOO -U# IMAGEN \ N FI GURA WOO-X REPRESENTACION DE LA IMAGEN EN UNA MATRIZ A W E FI GURA WOO-m REPRESENTACION EN BLOQUES En este ej empl o queremos hacer l a i nt er s ecci 6n L S l a f i g u r a anterior y l a f i g u r a VOO-XOOO, para mayor c l a r i d a d presentamos nuevamente el At-bol generado para esta f i g u r a: 1 1 1 1 0 1 1 1 1 0 1 0 1 1 1 0 1 I .REPRESENTACION DE LA WAOEN EN UNA MATRIZ A W E S REPRESENTACION EN 8LOOUES Imagen produci da por la Intersecci on: IMAGEN W REPRESENTACION DE LA IMAOEN EN UNA MATRIZ A . N S RE L $?ESENTACION EN BLOQUES r .. . -t ' I I . . En la Fi g . B d e l a ne x o se p r e s e n t a un e j e mp l o d e esta o p e r a c i o n. . Copia: E s t e al gor i t mo r e c i b e como e n t r a d a al apunt ado r a un no do t i p o hi j o o padr e . Co p i a el no do r e c i b i d o en otro que se crea a l comeniar el a l g o r i t mo . R c o n t i n u a c i n pr e s e nt a mo s e1 p s e ud o c d i g o d e l al gor i t mo o r - i g i na l . Func Co p i a ( nodo) c o m i e n ;I* nue v o ci DICPO p a r a i <- NW h a s t a SE haz si ( HI J Ot i ) ( no do ) ) =N i l e n t o n c e ? ( HI JO ( i 1 ( nue v o) ) <- N i 1 o t t-o -- c o mi e nz a ( HI J O( i ) ( nue v o ) ) <- Co p i ( HI J O( i ) ( nodo) ) FfiDRE ( HI JO ( i ) ( nue v o ) ) ..;- nue v o te r n i 1 na -- term i n a -- a \ dado q ue p a r a l a i mpl e me nt ac i n u t i l i z a mo dos t i p o s de nodos, l a l l amada a DICFO l a s u s t i t u i mo s por el s i g u ' e n t e c d i g o . SATI PONODO ( nodo) = I NTERNO e n t o n c e s nue v o <- C; rea- i nt erno o t r-o nue v o <- Cr-ea-hoja T I P ONODO( nue v o) <- TI F' ONODO( nodo) Ya que los; no do s q ue n o s o n hojas n o t i e n e n a punt a do r e s a hijos, l a s a s i g n a c i o n e s a N i l las omitimos. Fr e s e nt amo s a ho r a el ps e udo c bdi g o d e l a l g o r i t mo resultante: Func Co p i a ( no do ) i com i e n z a - si TI PONODOi nodoi = INTERNO e n t o n c e s nue v o 1- Cr e a - i nt e r no o t PO nue v o <- Crea-hoja TIPO-NODO( nue v o ) <'- TIPO-NODO( no do ) si TI FO- NODO( nue v o) = I NTERNO e n t o n c e s p a r a i <I- NW hasta. SE p s c o mi e nz a ( HI J:O ( i ) ( nue v o ) i PADF:E ( HI J O ( i i ( nue v o) i .:.:- nue v o -:I- Copia ( HI JO ( i i i no do ) i t e r m i n a C OP ~ a ..I - nb-ievo t er-rn 1 n a --- ___. I_____- 8 . VOO.E.3 UNION E l al gori t mo de uni n es s i mi l a r a l d e ' i n t e r s e c c i n . Los r b o l e s s o n r e c o r r i d o s e n p a r a l e l o , y las d e s i c i o n e s s o n hechas c ada vez q ue c u a l q u i e r a d e 'los r e c o r r i do ! s busca una hoj a. i ) Cuando se l o c a l i z a una h o j a NEGRA , es t a llega a ser el s ub r b o l cor- r- espondi nt e e n el r b o l de uni bn. i i ) Cuando se l o c a l i z a una h o j a BLANCA e n un r b o l , sta es r e e mpl a z a da e n el rbol d e uni n, p o r el 5i l b3rbo1 c o r r e s p o n d i e n t e d e l s e g undo r b o l , s i n i mp o r t a r que t i p o de no d o sea ste. \ ENTRADAS AL ALGORTMO: Los a p unt a d o r e s a, la r a z de c a da rbol . SALI DA DL ALGORITMO: Un a punt a do r a l a r- afz d e : l a uni dn d e estos dos r b o l e s . \ FSEUDOCODIGO a Func Uni n( n o d o i , nodo21 o m 1 e n z a SA TIPO-NODO( nodoL) E- NEGRO v TI PONODO( n o d o l ) = BLANCO otro e n t o n c e s Uni n %; - Copia( nodo21 5 . TIFO-NODO(nodo2) = BLANCO v TI PONODO( nodo1) = NEGRO ._ Ent o nc e s Uni n - Co p i a ( n o d o l ) une e DISPO p a r a i Z.- NW h a s t a SE hr c o mi e nz a (HIJO(i) ( une ) ) 5- Uni n( HI J O( i ) ( no d o l ) , HI J O( i ) ( nodo=) PADRE( HI JO( i ) ( une) 1 <- une t e r m i n a Uni n <- une -__I_ t e r m i fi a A c o n t i n u a c i n pr e s e nt a mo s un e j e mp l o p a r a d o s A r b o l e s y el r b o l r e s u l t a n t e ae la uni n de est os. l os d o s r b o l e s s e r n el g e ne r a d o por l a f i g u r a VOO-MOW y el g e ne r a d o p o r l a f i g u r a VOO-XV. Fat- a mayor - claridad, dar e mo s nuevsment e l a r e p r e s e n t a c i n d e l At-bol de cada f i gur a. . i FI GURA won-mv IMAGEN REPRECENTACI ON DE L A IMAGEN EN UNA MATRIZ N A (QUADTREE 8 . REPRESENTACION DE LA IMAGEN EN UNA MATRIZ A S E REPRESENTACION EN BLOQUES QUADTREE -. .. ..,.". . . ... .. ~ 1 . I 1 I 1 1 1 1 1 1 1 1 1 1 0 1 0 1 1 1 1 I J I 9 - . . , . F I GURA VD0 -XWO IMAGEN REPRESENTACION DE LA IMAOEN EN UNA MATRIZ A N E REPRESENTACION EN BLOQUES c . Una vez que construimos el al gori tmo de unin- y complemento hacemos uso de l as si gui ente tautol ogf a para construi r l a operacion l gi ca Si - entonces: I I I S i -> entonces ( a - > # ) <-> i 7 a i +) donde a y 9 son dos dr-bales cuaternari os. PCEUDOCODIGO fctnc Si ent onces (ar bol -1, arbol-2) 1 corn i en z a te t-m i na Si ent onces <- Union (complementoCarbo1-1) , ai-bol-2) -- . . WOO, F, GIRAR UNA IMAGEN Para p o d e r g i r a r una i magen es n e c e s a r i o l l e g a r . . as v a los nodaci t e r mi n a l e s e i n t e c a mb i a r l o s conlo 5e mue s t r a e n la f i g u r a: Hecho esto n o s regresamos a l n i v e l q n t e r i o r p a r a r e p e t i r el . proceso p e r o a ho r a e n t r e no do s i n t e r n o s a s i s uc e s i v a me nt e h a s t a l l e g a r a un n i v e l a n t e s d e la r a z . 9 \ a PSEUDOCODIGO Proc Gir&-9O__grados( n i v e l , r ai z ) c o mi e nz a si TI PONODO( r a i z ) := INTERNO e n t o n c e s corn i enza par a i <- NW hai sta SE h a z si TI PO- .ODO( HI J O( i ) ( r a i z ) ) = INTERNO e n t o n c e s comiei= n i v e l <- ni v e l - 1 Gi1-a-9O-qrados(~ n i v e l , HI J O( i ) ( r ai z ) ) t er - m i ina --- t e mpl <..- Co p i a ( HIJO(NE) ( r a i z ) ) HI JO( NE) ( r a i z ) .:- Ca mb i a d e - l ug a r ( HI JO( NE) ( r a i z ) , HIJO(NW1 ( t - ai z ) ) HIJO(NW) ( r - ai z ) .<- Ca mb i a d e - l ug a r ( HIJO(NW) ( r a i z ) , HI J Ci(SW) ( r a i z ) i t emp2 ::- Co p i a ( HI J O( CE) ( r a i z ) ) HI JO( SE) ( i - a i z ) <- Carnbia-de-iugar( HI J O( SE) ( r - a i z f , HIJO(SW) ( r a i r ) .:- Car nbi ade - l uqar ( ti I J O( SW) (raiz), templ) t emp2) t i t - m 1 na -__--- . Como se u t i l i z a r o n dos t i p o s d e no do s par a los A r b o l e s c r e amos una f unc i n Cambia-de-lugar que e n l a v a r i a b l e ' d e s t i n o ' al macena l a d i r e c c i b n d e ' f ue nt e ' . S i los t i p o s d e los dos apunt ado r e s es i g u a l s i mpl e me nt e .se hace una a s i g n a c i n nor mal , e n otro c a s o se ha c e u s o del ' c a s t ' que pr opor c : i ona "C". Como ya hemos v i s t o e s t a t cni c: a consi der - a que l a s i mgenes e s t a n al macenadas e n una ma t r i z cuadr ada, donde el tamao de st a, es una p o t e n c i a d e dos. S i u t i l i z a mo s una matriz de, 128 x 128, c a r a c t e r e s p ar a al macenar l a i magen el e s p a c i o r e q u e r i d o es d e 16K. Podemos apr ov ec har c ada b y t e pa r a al macenar. e! v a l o r de un p i x e l (O o 1 ) e n un b i t , d e e s t a manera al macenamos o c ho b i t s e n un c a r a c t e r . De esta f orma solo utilizamos una ma t r i z d e 128 x 16, que ocupa 2K hac i e ndo no s un a h o r r o de 14K en memori a. Par a po de r mapear el v a l o r d e un p i x e l a l a p o s i c i n que l e c o r r e s po nde en 1 ma t r i z u t i l i z a mo s l a o p e r a c i n mdul o y los ope r ad or es ' B i t - w i ce que p rup o r c i o n a I' C 'I . L I C J s-1 Entradas: * CARTA IPO 1 ~~~~~r a l rbol generado- \ a Sistema: Quadtree Preparada por: Avia Cr uz Cdnchez Cerezo Mdulo: Creacin de un Arbol Fechas May o 1988 cuaternar io. Nombre: Quad-tree Invocada por: proceso llamadas o Invocacionest Construye ( carta IPO 2) Potencia ( carta IPO 3 ) Var i abler l ocal es pot - almacena el val or de . pi vel pa i r - apuntador a l rbol generado. Nota: . I . Como nos dimos cuenta los algoritmos de esta representacin son altamente recursivos, pero la estructura para almacenar y manejar las imagenes, es muy fcil de generar. A Partir de l as operaciones: Interseccin, Unin y Complemento se pueden desarrollar nuevas rutina:;, como 10 fue el caso de Si -- entonces, que pueden ser muy interesantes dependiendo de la aplicacin. Tomando en cuenta el anlisis de complejidad espacial para el algoritmo de generaci&n d e rboles, recomendamos utilizar una mquina con ma5 capacidad de memoria que una PC XT, ya que se requiere espacio para as matrices, de las cuales se generan los Quad t rees. 8 i 49 I M. iBUtBllO6Mj(RAFOA . A LIBROS CONSULTADOS: Gehani, Narain. CIdvanced Cr F'ood for the educated pafete. AT&+ Bell Laboratories, E.U., 1984. Holub I., Clllen. The c Companion. Prentice Hall, E.U., 1987. Kernighan, Brian y Dennis tl. Ritchie. 1lenquaje d p proqamacion c, Prentice Hall. Me,tico, 1985 Norton, Peter. Programmer's guide To the IBM-PC, Microsoft Presa, .U,, 1985, Schwaderer, David, c wizard's proqramminq reference. John Wiley b Sons, Inc., E.U., 1985. Tucker B., Allen. Lenciuajes Programacion, Mc. Graw Hill, 1982 Whirth, Niklaus. CSlisorithms 5 data structures 2 proqrams. Prentice-Hall,' E.U., 1976. William S . , Davis. Svstems -7alysis Addison Wesley, E.U., 1983. c ARTICULOS CONSLTADOS Ballart H. Dana. "Strip trees: A hierarchical representation for curves", Comm. ACM, mayo - 1981, pp. 310-321 Samet, Hanan. "Region representation: Quadtrees from Binary Arrays"* Computer Graphics and Image Wocessing", 13: 1980, pp. 88-94 L , "The Quadtree and Related Hierarchical Data Structu- res", Computyng Surveys, junio - 1984, pp. 187-247 Shenier, Mi c h a e l , "Calculations of Gometric Properties using Quadt r ees" , Computeir Graphics and Image Processing, 1 6 : 1981, pp. 296-:302 Yau, Mann-May y Shrihari N., Sargur. "A Hierarchical Data Structure for Multidimenson Digital Image@', Comm ACM, julio - 1983, 115-130 . a . OTROS ARTICULOS DE INTERES Chien C.H. y Aggarwal J., K:. "A Normalized Quadtree represen- tation", Computer Graphlcs and Image Processing', 26% 1984, pp 331-346 D.J., Clbel. " A B-Tree Structure for Large Quadtrees', Gmpu- ter Vision, Graphics and Imag Processing", 27 : 1984, pp. 19-31 Samet, Hanan. " An Algrithnr for Converting rasters to quad- trees", IkEE transactions n patter analysis and ma- quine inteligence, vol. pains-3, l : 1981 , "Connected Component Labeling Using Quadtrees", Jour- nal of the Associat;ion for Computing Machinery, Vol. 28, 3 : 1981, pp. 487-501 , "Deletion en Two-Di.mensiona1 Quadtrees@', Comm. ACM, diciembre - 1980, pp. 705-710 . ocessing, 18 : 1982, , "Neighbor Finding Techniques Image by Quadtrees', Computer Graphics and Image pp. 37-57 , "Region Representation: Bundary Codes From Quadtrees" Comm. ACM, marzo 1980, pp. 171-179 51 " . . .- . .-.._ -.-. , * 1 IMfiCEN 1 J IMfiCEN 2 RREW 228 4. ' i RESULTADOS I I I