conversión entre las representaciones matriz binaria y árbol binario

26
Conversión entre las representaciones matriz binaria y árbol binario

Upload: martirio-lozoya

Post on 28-Jan-2016

220 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: Conversión entre las representaciones matriz binaria y árbol binario

Conversión entre las representaciones matriz binaria y

árbol binario

Page 2: Conversión entre las representaciones matriz binaria y árbol binario

OBJETIVO

Nuestro proyecto consiste en realizar las conversiones entre las representacionesde matriz binaria y árbol binario que son dos formatos que van a permitir larepresentación de imágenes digitales.

Una parte del software estará dedicada a dichas conversiones mientras que habráotra parte que, partiendo de las representaciones en forma de árbol binario de dos conjuntosdigitales S y T, establecerá una representación en este mismo formato para los conjuntossiguientes:

Complementario de S, Unión de S y T Intersección de S y T Diferencia de S y T ( T - S ).

Para la realización del proyecto no se han tenido en cuenta las convenciones decódigo establecidas en la librería Cppima sino que todo el software ha sido desarrollado enC sin necesidad de utilizar ningún tipo abstracto de datos (sobre todo para tratar laestructura árbol).

Page 3: Conversión entre las representaciones matriz binaria y árbol binario

Introducción

La representación más trivial de una imagen digital es en forma de matriz binaria, en la que el valor ‘1’ representará al color NEGRO y el valor ‘0’ al color BLANCO.

•Otra posible representación de la misma imagen consiste en emplear árboles binarios.

•Para realizar la conversión entre una representación de la imagen a su equivalente en árbol binariodebemos suponer que la matriz binaria es cuadrada y el rango de la misma es potencia de 2.

•En esta representación obtendremos un árbol por cada fila de la matriz binaria, que almacenaremos en una estructura para poder trabajar posteriormente sobre esta representación en futuras operaciones.

•El proceso principal de obtención de un árbol binario consiste en ir dividiendo la fila en dos mitades cuando ésta no tenga un valor constante, hasta que lleguemos al caso de encontrar un trozo de tal fila cuyos elementos tengan el mismo valor o bien tengamos únicamente una fila con un único elemento, guandándose en ese caso información pictórica.

Page 4: Conversión entre las representaciones matriz binaria y árbol binario

Ejemplo representaciones Matriz binaria y Árbol binario

Page 5: Conversión entre las representaciones matriz binaria y árbol binario

1.Descripción de tipos de datos usados en el programa1.1.Tipo IMAGEN.1.2.Tipo NODO.1.3.TABLAS.

1.3.1.Ejemplo.2.Conversión Matriz binaria a Árbol binario.

2.1.Pseudocodigo. 2.2.Ejemplo.

3.Conversión Árbol binario a Matriz binaria.3.1.Pseudocodigo.3.2.Ejemplos.

4.Obtención de Conjuntos asociados.4.1.Complementario.4.2.Unión / Intersección.

4.2.1.Ejemplo.4.3.Diferencia.

5.Transformaciones lineales.5.1.Ejemplo.

Page 6: Conversión entre las representaciones matriz binaria y árbol binario

1.Descripción de tipos de datos usados en el programa. 1.1.Tipo IMAGEN.

IMAGEN: Estructura registro que contiene toda la información acerca de las imágenesdigitales con las que trabajará el programa. Está compuesta de…

Filas / Columnas: Número de filas y columnas de la matriz. En nuestro caso,esta información estará almacenada en las constantes MAXFILA yMAXCOLUMNA respectivamente.

NumColores: Representa el número de colores que tendrá la imagen. En nuestrocaso, se trabajará con imágenes en blanco y negro. Se corresponde con laconstante NUMCOLORES.

AdyNegro / AdyBlanco: Número de vecinos que se tendrán en cuenta a la horade trabajar con los pixels de la matriz. Generalmente los valores que se asignaránson: 8-adyacencias para negro y 4-adyacencias para blanco.

Pixel: Matriz binaria que representa a la imagen, cuyo tamaño por vendrádeterminado por los valores MAXFILAxMAXCOLUMNA.

La estructura de datos IMAGEN se corresponde con la siguienteimplementación en el código C:

typedef struct image{int Filas;int Columnas;int NumColores;int AdyNegro;int AdyBlanco;byte Pixel[MAXFILA][MAXCOLUMNA];

}IMAGEN;

Page 7: Conversión entre las representaciones matriz binaria y árbol binario

NODO: Estructura registro necesaria para la construcción de los árboles. Dentro de esteregistro tendremos los siguientes campos:

Hijo_izq / Hijo_der: Punteros a otra estructura del tipo NODO.

Dato: Contenido del nodo. Éste podrá ser NEGRO, BLANCO o NADA.

La estructura de datos NODO se corresponde en la implementación C con elsiguiente código:

typedef struct node { struct node* Hijo_izq; struct node* Hijo_der; tipopixel dato;} NODO;

1.2.Tipo NODO.

Page 8: Conversión entre las representaciones matriz binaria y árbol binario

Dependiendo del tipo de árboles que se vayan a almacenar tendremos distintas tablas:

TablaArbolBinarioi: Contiene las referencias de los árboles binarios de coloresque representan la imagen i en el programa.

TablaUniones: Contiene las referencias de los árboles binarios de coloresresultado de la unión de dos imágenes.

TablaIntersecciones: Contiene las referencias de los árboles binarios de coloresresultado de la intersección de dos imágenes.

TablaComplementarios: Contiene los punteros a las raíces de los árbolesbinarios de colores resultado de invertir los colores (blanco y negro) de unaimagen.

TablaDiferencias: Contiene los punteros a las raíces de los árboles binarios decolores resultado de haber realizado la diferencia de dos imágenes.

1.3.TABLAS.

NODO *ConjuntoArbolBinario[MAXFILA];NODO *ConjuntoArbolBinario2[MAXFILA];NODO *TablaUniones[MAXFILA];NODO *TablaIntersecciones[MAXFILA];NODO *TablaComplementarios[MAXFILA];NODO *TablaDiferencias[MAXFILA];

Page 9: Conversión entre las representaciones matriz binaria y árbol binario

1.3.1.Ejemplo estructura ConjuntoArbolBinario.

Page 10: Conversión entre las representaciones matriz binaria y árbol binario

1.Descripción de tipos de datos usados en el programa1.1.Tipo IMAGEN.1.2.Tipo NODO.1.3.TABLAS.

1.3.1.Ejemplo.2.Conversión Matriz binaria a Árbol binario.

2.1.Pseudocodigo. 2.2.Ejemplo.

3.Conversión Árbol binario a Matriz binaria.3.1.Pseudocodigo.3.2.Ejemplos.

4.Obtención de Conjuntos asociados.4.1.Complementario.4.2.Unión / Intersección.

4.2.1.Ejemplo.4.3.Diferencia.

5.Transformaciones lineales.5.1.Ejemplo.

Page 11: Conversión entre las representaciones matriz binaria y árbol binario

Para cada fila de la matriz a transformar hacer

Si la fila es toda de unos o toda de ceros entonces

Insertar un nodo hoja en el árbol binario correspondiente a esa fila con ese valor constante ( uno o cero )

Sino

Dividir la fila en dos mitadesInsertar un nodo intermedio ( sin información pictorica ) en el árbol binarioTransformar la primera mitad de la fila de entrada ya dividida en árbol binario ( se corresponderá con el hijo izquierdo del árbol )Transformar la segunda mitad de la fila de entrada ya dividida en árbol binario ( la información irá en el hijo derecho )

Finsi

Dibujar el árbol binario construido para esa fila

Finpara

2.- CONVERSIÓN MATRIZ BINARIA A ÁRBOL BINARIO

2.1.Pseudocodigo.

Page 12: Conversión entre las representaciones matriz binaria y árbol binario

2.2.Ejemplo conversión Matriz binaria en Árbol binario.

Page 13: Conversión entre las representaciones matriz binaria y árbol binario

1.Descripción de tipos de datos usados en el programa1.1.Tipo IMAGEN.1.2.Tipo NODO.1.3.TABLAS.

1.3.1.Ejemplo.2.Conversión Matriz binaria a Árbol binario.

2.1.Pseudocodigo. 2.2.Ejemplo.

3.Conversión Árbol binario a Matriz binaria.3.1.Pseudocodigo.3.2.Ejemplos.

4.Obtención de Conjuntos asociados.4.1.Complementario.4.2.Unión / Intersección.

4.2.1.Ejemplo.4.3.Diferencia.

5.Transformaciones lineales.5.1.Ejemplo.

Page 14: Conversión entre las representaciones matriz binaria y árbol binario

3.- CONVERSIÓN ÁRBOL BINARIO A MATRIZ BINARIA

Inicializar la variable ‘nivel’ a cero ( nivel de profundidad que se alcanza en el recorrido )

Para cada fila a reconstruir de la matriz hacer

Si el árbol binario no es vacio entonces

Si el árbol binario es una hoja entonces

Reconstruir la fila ( toda o parte de ella ) a partir del número de elementos consecutivos ( con el mismo valor que la hoja ) que serán dos elevado a ‘k’ ( que es la raiz cuadrada del orden de la matriz ) menos el ‘nivel’ por el que va el recorridoActualizar la variable global ‘desp’ ( posición a partir de la cual se deben insertar los elementos restantes para completar la fila a reconstruir )

Sino

Aumentamos el ‘nivel’ de profundidad en una unidadReconstruir parte de la fila a partir del hijo izquierdo del árbol binarioReconstruir parte de la fila a partir del hijo derecho del árbol binario

Finsi

Finsi

Dibujar la fila de la matriz ( que acaba de ser reconstruida )

Finpara

3.1.Pseudocodigo.

Page 15: Conversión entre las representaciones matriz binaria y árbol binario

3.2.Ejemplo conversión Árbol binario en Matriz binaria.

Page 16: Conversión entre las representaciones matriz binaria y árbol binario

3.2.Ejemplo conversión Árbol binario en Matriz binaria.

Page 17: Conversión entre las representaciones matriz binaria y árbol binario

1.Descripción de tipos de datos usados en el programa1.1.Tipo IMAGEN.1.2.Tipo NODO.1.3.TABLAS.

1.3.1.Ejemplo.2.Conversión Matriz binaria a Árbol binario.

2.1.Pseudocodigo. 2.2.Ejemplo.

3.Conversión Árbol binario a Matriz binaria.3.1.Pseudocodigo.3.2.Ejemplos.

4.Obtención de Conjuntos asociados.4.1.Complementario.4.2.Unión / Intersección.

4.2.1.Ejemplo.4.3.Diferencia.

5.Transformaciones lineales.5.1.Ejemplo.

Page 18: Conversión entre las representaciones matriz binaria y árbol binario

3.1 Complementario.

3.2 Unión / Intersección.

3.3 Diferencia.

4.- OBTENCIÓN DE CONJUNTOS ASOCIADOS

Page 19: Conversión entre las representaciones matriz binaria y árbol binario

Para cada árbol binario de colores que componen la imagen hacer

Si el árbol es una hoja Cambiar el color de la hoja

Sino

Realizar el cálculo de árboles complementarios para el hijo izquierdo Realizar el cálculo de árboles complementarios para el hijo derecho

Finsi

Dibujar el árbol complementario

Finpara

4.1.-Complementario.

Page 20: Conversión entre las representaciones matriz binaria y árbol binario

Para cada par de árboles binarios ( uno de una imagen y el correspondiente de laotra imagen ) hacer

Si los dos árboles son nodos hojas

Realizar la intersección/unión de las dos hojas colocando en el árbol resultado un nodo hoja con el resultado de la operación realizada

Sino

Si los dos árboles son nodos intermedios

Crear un nodo intermedio en el árbol resultadoCalcular la intersección/unión del hijo izquierdo de un árbol con el hijo izquierdo del otroCalcular la intersección/unión del hijo derecho de un árbol con el hijo derecho del otro

Si no

Si un árbol es un nodo hoja y el otro es un nodo intermedio

Crear un nodo intermedio en el árbol resultadoCalcular la intersección/unión del nodo hoja con el hijo izquierdo

del árbol cuyo nodo era intermedioCalcular la intersección/unión del nodo hoja con el hijo derecho

del árbol cuyo nodo era intermedio Finsi

Finsi

Finsi

Dibujar el árbol intersección/unión

Finpara

4.2.-Unión / Intersección

Page 21: Conversión entre las representaciones matriz binaria y árbol binario

4.2.1.Ejemplo Unión de dos árboles binarios.

Page 22: Conversión entre las representaciones matriz binaria y árbol binario

Para cada par de árboles binarios

Obtener el complementario de uno de los dos árboles Realizar la intersección de uno de los árboles con el complementario del otro Dibujar el árbol diferencia

Finpara

4.3.- Diferencia

Page 23: Conversión entre las representaciones matriz binaria y árbol binario

1.Descripción de tipos de datos usados en el programa1.1.Tipo IMAGEN.1.2.Tipo NODO.1.3.TABLAS.

1.3.1.Ejemplo.2.Conversión Matriz binaria a Árbol binario.

2.1.Pseudocodigo. 2.2.Ejemplo.

3.Conversión Árbol binario a Matriz binaria.3.1.Pseudocodigo.3.2.Ejemplos.

4.Obtención de Conjuntos asociados.4.1.Complementario.4.2.Unión / Intersección.

4.2.1.Ejemplo.4.3.Diferencia.

5.Transformaciones lineales.5.1.Ejemplo.

Page 24: Conversión entre las representaciones matriz binaria y árbol binario

5.Transformaciones lineales

TRASLACIÓN

Para trasladar todos los puntos de un objeto de unaposición a otra, debemos tomar un punto de referenciainicial y especificar su destino. De esta forma, todos losdemás quedarán arrastrados en la dirección y con lamagnitud indicada por el vector definido por la diferenciaentre los puntos final e inicial. Si este vector tienecomponentes (m,n), las ecuaciones de traslación son:

x’ = x + my’ = y + n

Donde (x, y) representa un punto arbitrario delobjeto original y (x’, y’) es su transformado portraslación. La siguiente figura ilustra una traslación.

ROTACIÓN

La rotación de un objeto bidimensional se realizaalrededor de un punto denominado centro y fijando unángulo de giro. Debe quedar claro que podemossuponer que el centro de rotación es el origen decoordenadas. Cuando se trate de rotar un objeto respectoa otro punto (cx,cy), bastará con concatenar la traslaciónque aplica (cx,cy) en el origen, efectuar allí la rotación ydevolver de nuevo (cx,cy) mediante la traslación inversa.

Page 25: Conversión entre las representaciones matriz binaria y árbol binario

5.1.Ejemplo Traslación vertical.

Page 26: Conversión entre las representaciones matriz binaria y árbol binario

FIN