You are on page 1of 26

Conversin entre las

representaciones matriz binaria y


rbol binario

OBJETIVO
Nuestro proyecto consiste en realizar las conversiones entre las representaciones
de matriz binaria y rbol binario que son dos formatos que van a permitir la
representacin de imgenes 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 conjuntos
digitales S y T, establecer una representacin en este mismo formato para los conjuntos
siguientes:

Complementario de S,
Unin de S y T
Interseccin de S y T
Diferencia de S y T ( T - S ).

Para la realizacin del proyecto no se han tenido en cuenta las convenciones de


cdigo establecidas en la librera Cppima sino que todo el software ha sido desarrollado en
C sin necesidad de utilizar ningn tipo abstracto de datos (sobre todo para tratar la
estructura rbol).

Introduccin
La representacin ms 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 representacin de la misma imagen consiste en emplear rboles binarios.


Para realizar la conversin entre una representacin de la imagen a su equivalente en rbol binario
debemos suponer que la matriz binaria es cuadrada y el rango de la misma es potencia de 2.
En esta representacin obtendremos un rbol por cada fila de la matriz binaria, que
almacenaremos en una estructura para poder trabajar posteriormente sobre esta representacin en
futuras operaciones.
El proceso principal de obtencin 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, guandndose en ese caso informacin pictrica.

Ejemplo representaciones Matriz binaria y rbol binario

1.Descripcin de tipos de datos usados en el programa


1.1.Tipo IMAGEN.
1.2.Tipo NODO.
1.3.TABLAS.
1.3.1.Ejemplo.
2.Conversin Matriz binaria a rbol binario.
2.1.Pseudocodigo.
2.2.Ejemplo.
3.Conversin rbol binario a Matriz binaria.
3.1.Pseudocodigo.
3.2.Ejemplos.
4.Obtencin de Conjuntos asociados.
4.1.Complementario.
4.2.Unin / Interseccin.
4.2.1.Ejemplo.
4.3.Diferencia.
5.Transformaciones lineales.
5.1.Ejemplo.

1.Descripcin de tipos de datos usados en el programa.


1.1.Tipo IMAGEN.
IMAGEN: Estructura registro que contiene toda la informacin acerca de las imgenes
digitales con las que trabajar el programa. Est compuesta de

Filas / Columnas: Nmero de filas y columnas de la matriz. En nuestro caso,


esta informacin estar almacenada en las constantes MAXFILA y
MAXCOLUMNA respectivamente.

NumColores: Representa el nmero de colores que tendr la imagen. En nuestro


caso, se trabajar con imgenes en blanco y negro. Se corresponde con la
constante NUMCOLORES.

AdyNegro / AdyBlanco: Nmero de vecinos que se tendrn en cuenta a la hora


de trabajar con los pixels de la matriz. Generalmente los valores que se asignarn
son: 8-adyacencias para negro y 4-adyacencias para blanco.

Pixel: Matriz binaria que representa a la imagen, cuyo tamao por vendr
determinado por los valores MAXFILAxMAXCOLUMNA.

La estructura de datos IMAGEN se corresponde con la siguiente


implementacin en el cdigo C:
typedef struct image{
int Filas;
int Columnas;
int NumColores;
int AdyNegro;
int AdyBlanco;
byte Pixel[MAXFILA][MAXCOLUMNA];
}IMAGEN;

1.2.Tipo NODO.
NODO: Estructura registro necesaria para la construccin de los rboles. Dentro de este
registro 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 implementacin C con el


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

1.3.TABLAS.
Dependiendo del tipo de rboles que se vayan a almacenar tendremos distintas tablas:

TablaArbolBinarioi: Contiene las referencias de los rboles binarios de colores


que representan la imagen i en el programa.

TablaUniones: Contiene las referencias de los rboles binarios de colores


resultado de la unin de dos imgenes.

TablaIntersecciones: Contiene las referencias de los rboles binarios de colores


resultado de la interseccin de dos imgenes.

TablaComplementarios: Contiene los punteros a las races de los rboles


binarios de colores resultado de invertir los colores (blanco y negro) de una
imagen.

TablaDiferencias: Contiene los punteros a las races de los rboles binarios de


colores resultado de haber realizado la diferencia de dos imgenes.

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

1.3.1.Ejemplo estructura ConjuntoArbolBinario.

1.Descripcin de tipos de datos usados en el programa


1.1.Tipo IMAGEN.
1.2.Tipo NODO.
1.3.TABLAS.
1.3.1.Ejemplo.
2.Conversin Matriz binaria a rbol binario.
2.1.Pseudocodigo.
2.2.Ejemplo.
3.Conversin rbol binario a Matriz binaria.
3.1.Pseudocodigo.
3.2.Ejemplos.
4.Obtencin de Conjuntos asociados.
4.1.Complementario.
4.2.Unin / Interseccin.
4.2.1.Ejemplo.
4.3.Diferencia.
5.Transformaciones lineales.
5.1.Ejemplo.

2.- CONVERSIN MATRIZ BINARIA A RBOL BINARIO


2.1.Pseudocodigo.
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 mitades
Insertar un nodo intermedio ( sin informacin pictorica ) en el rbol binario
Transformar 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 informacin ir en el hijo derecho )
Finsi
Dibujar el rbol binario construido para esa fila
Finpara

2.2.Ejemplo conversin Matriz binaria en rbol binario.

1.Descripcin de tipos de datos usados en el programa


1.1.Tipo IMAGEN.
1.2.Tipo NODO.
1.3.TABLAS.
1.3.1.Ejemplo.
2.Conversin Matriz binaria a rbol binario.
2.1.Pseudocodigo.
2.2.Ejemplo.
3.Conversin rbol binario a Matriz binaria.
3.1.Pseudocodigo.
3.2.Ejemplos.
4.Obtencin de Conjuntos asociados.
4.1.Complementario.
4.2.Unin / Interseccin.
4.2.1.Ejemplo.
4.3.Diferencia.
5.Transformaciones lineales.
5.1.Ejemplo.

3.- CONVERSIN RBOL BINARIO A MATRIZ BINARIA


3.1.Pseudocodigo.
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 nmero de elementos
consecutivos ( con el mismo valor que la hoja ) que sern dos elevado a k (
que es la raiz cuadrada del orden de la matriz ) menos el nivel por el que va
el recorrido
Actualizar la variable global desp ( posicin 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 unidad
Reconstruir parte de la fila a partir del hijo izquierdo del rbol binario
Reconstruir 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.2.Ejemplo conversin rbol binario en Matriz binaria.

3.2.Ejemplo conversin rbol binario en Matriz binaria.

1.Descripcin de tipos de datos usados en el programa


1.1.Tipo IMAGEN.
1.2.Tipo NODO.
1.3.TABLAS.
1.3.1.Ejemplo.
2.Conversin Matriz binaria a rbol binario.
2.1.Pseudocodigo.
2.2.Ejemplo.
3.Conversin rbol binario a Matriz binaria.
3.1.Pseudocodigo.
3.2.Ejemplos.
4.Obtencin de Conjuntos asociados.
4.1.Complementario.
4.2.Unin / Interseccin.
4.2.1.Ejemplo.
4.3.Diferencia.
5.Transformaciones lineales.
5.1.Ejemplo.

4.- OBTENCIN DE CONJUNTOS ASOCIADOS

3.1 Complementario.
3.2 Unin / Interseccin.
3.3 Diferencia.

4.1.-Complementario.
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 clculo de rboles complementarios para el hijo izquierdo
Realizar el clculo de rboles complementarios para el hijo derecho
Finsi
Dibujar el rbol complementario
Finpara

4.2.-Unin / Interseccin
Para cada par de rboles binarios ( uno de una imagen y el correspondiente de la
otra imagen ) hacer
Si los dos rboles son nodos hojas
Realizar la interseccin/unin de las dos hojas colocando en el rbol
resultado un nodo hoja con el resultado de la operacin realizada
Sino
Si los dos rboles son nodos intermedios
Crear un nodo intermedio en el rbol resultado
Calcular la interseccin/unin del hijo izquierdo de un rbol con el
hijo izquierdo del otro
Calcular la interseccin/unin 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 resultado
Calcular la interseccin/unin del nodo hoja con el hijo izquierdo
del rbol cuyo nodo era intermedio
Calcular la interseccin/unin del nodo hoja con el hijo derecho
del rbol cuyo nodo era intermedio
Finsi
Finsi
Finsi
Dibujar el rbol interseccin/unin
Finpara

4.2.1.Ejemplo Unin de dos rboles binarios.

4.3.- Diferencia

Para cada par de rboles binarios


Obtener el complementario de uno de los dos rboles
Realizar la interseccin de uno de los rboles con el complementario del otro
Dibujar el rbol diferencia
Finpara

1.Descripcin de tipos de datos usados en el programa


1.1.Tipo IMAGEN.
1.2.Tipo NODO.
1.3.TABLAS.
1.3.1.Ejemplo.
2.Conversin Matriz binaria a rbol binario.
2.1.Pseudocodigo.
2.2.Ejemplo.
3.Conversin rbol binario a Matriz binaria.
3.1.Pseudocodigo.
3.2.Ejemplos.
4.Obtencin de Conjuntos asociados.
4.1.Complementario.
4.2.Unin / Interseccin.
4.2.1.Ejemplo.
4.3.Diferencia.
5.Transformaciones lineales.
5.1.Ejemplo.

5.Transformaciones lineales
TRASLACIN
Para trasladar todos los puntos de un objeto de una
posicin a otra, debemos tomar un punto de referencia
inicial y especificar su destino. De esta forma, todos los
dems quedarn arrastrados en la direccin y con la
magnitud indicada por el vector definido por la diferencia
entre los puntos final e inicial. Si este vector tiene
componentes (m,n), las ecuaciones de traslacin son:
x = x + m
y = y + n
Donde (x, y) representa un punto arbitrario del
objeto original y (x, y) es su transformado por
traslacin. La siguiente figura ilustra una traslacin.

ROTACIN
La rotacin de un objeto bidimensional se realiza
alrededor de un punto denominado centro y fijando un
ngulo de giro. Debe quedar claro que podemos
suponer que el centro de rotacin es el origen de
coordenadas. Cuando se trate de rotar un objeto respecto
a otro punto (cx,cy), bastar con concatenar la traslacin
que aplica (cx,cy) en el origen, efectuar all la rotacin y
devolver de nuevo (cx,cy) mediante la traslacin inversa.

5.1.Ejemplo Traslacin vertical.

FIN

You might also like