• No se han encontrado resultados

Operaciones sobre imágenes binarias representadas por árboles binarios basados en interpolación.

N/A
N/A
Protected

Academic year: 2021

Share "Operaciones sobre imágenes binarias representadas por árboles binarios basados en interpolación."

Copied!
14
0
0

Texto completo

(1)

U

NIVERSIDAD

DE

S

EVILLA

Escuela Técnica Superior Ing. Informática

Procesamiento de Imágenes Digitales

Operaciones sobre imágenes

binarias representadas por

árboles binarios basados en

interpolación.

Ignacio Guajardo-F. Caballos

José Miguel García Lluch

(2)

ÍNDICE

1. INTRODUCCIÓN...

pag.3

2. REPRESENTACIÓN IBB....

pag.4

3. OPERACIONES...

pag.5

4. APLICACIÓN...

pag.11

(3)

INTRODUCCIÓN

Existen diferentes técnicas de representación de imágenes binarias, que se agrupan en tres tipos: árbol, cadena y conjunto de códigos. Dentro del conjunto de códigos tenemos: Linear Quadtree (LQ), Interpolation – based bintree (IBB) y Minimized Boolean Function (MFB).

Este trabajo se centra en la representación IBB y en operaciones sobre imágenes representadas de esta forma. Las distintas operaciones son:

• Cálculo del número de pixeles negros.

• Cálculo de centroide.

• Cálculo del código ibb de un bloque rectangular

• Traslación.

• Rotación.

(4)

REPRESENTACIÓN IBB

La representación IBB consiste en un conjunto de códigos. Para obtener estos códigos primero representamos la imagen binaria mediante un árbol binario. Para obtener el árbol binario de una imagen binaria (2^n x 2^n) primero se divide verticalmente la imagen en dos partes iguales. Luego cada parte, si no es totalmente negra o blanca, se divide horizontalmente. La imagen se divide así sucesivamente hasta encontrar partes totalmente negras o blancas. Estas partes totalmente negras o blancas forman las hojas del árbol. Para obtener la representación IBB de la imagen calculamos un código a cada hoja negra de árbol.

Cada hoja negra del árbol representa un bloque en la imagen. Para obtener su código necesitamos las coordenadas inferior izquierda del bloque en la imagen (i, j) y el nivel (l) en el árbol de la hoja que lo representa. El código binario (Q) de un bloque se obtiene de la siguiente forma:

• Pasamos las coordenadas inferior izquierda del bloque a binario. i = Σn-1(ik * 2k)

j = Σn-1(j

k * 2k)

• Obtenemos “S” y lo pasamos a binario. S= 22n – 2(2n – l)

S= Σ2n-1(s

k * 2k)

• Obtenemos el código

Q= Σn-1(ik * 24k+3) + Σn-1(jk * 24k+1) + Σ2n-1(sk * 22k)

El conjunto códigos de todas las hojas negras es la representación IBB de la imagen.

(5)

OPERACIONES

Las distintas operaciones que hemos implementado en la aplicación son las siguientes.

1. Cálculo del número de pixeles negros. 2. Cálculo de centroide.

3. Traslación. 4. Rotación. 5. Reflexión.

Las técnicas computaciones para realizar estas operaciones están descritas a continuación. Estas técnicas u operaciones se aplican individualmente a cada bloque rectangular de la imagen. Estas operaciones se puede extender a una imagen completa, si analizamos bloque a bloque toda la imagen.

1. Cálculo del número de pixeles negros.

Dada una imagen binaria (2^n x 2^n) cuya representación IBB sea Qi

con i=1,2,...,N , el número de pixeles negros de la imagen se calcula de la siguiente forma:

Del código de cada bloque (Qi) se obtiene el nivel (l) en el árbol de

la hoja que lo representa. Qi = Σ4n-1(qk * 2k)

Si = Σ(qk * 2k div 2) donde k={0,1,...,4k – 1} y k mod 2=0 y

“div” es la división entera. li = 2n – log2(22n – Si)

El número de pixeles negros de ese bloque se obtiene mediante la siguiente expresión:

num_pixeles_negros = 2(2n - l)

Luego para obtener el número de pixeles negros de una imagen hay que obtener el número de pixeles negros de los bloques que la forman.

(6)

2. Cálculo del centroide

Dada una imagen binaria (2^n x 2^n) cuya representación IBB sea Qi

con i=1,2,...,N , el centroide de la imagen se calcula de la siguiente forma:

De cada código Qi se obtienen la coordenada inferior izquierda

(xll,yll) del bloque que representa y el nivel (l) de la hoja que lo

representa en el árbol. Qi = Σ4n-1(qk * 2k)

Si = Σ(qk * 2k div 2) donde k={0,1,...,4k – 1} y k mod 2=0 y

“div” es la división entera. li = 2n – log2(22n – Si)

xll = Σ(qk * 2k div 4) donde 4n ≥ k > 0 y k mod 4 = 3

yll = Σ(qk * 2k div 4) donde (4n – 1) ≥ k > 0 y k mod 4 = 1

Si li es par

El ancho (w) del bloque es: w = 2(n - l/2) El alto (h) del bloque es: h = w

Si li es impar

El ancho (w) del bloque es: w = 2(n – (l + 1)/2) El alto (h) del bloque es: h = 2w

Por último la coordenada (xc,yc) del centroide se obtiene de la

siguiente forma: x = x + {wxll + w(w-1)/2}h y = y + {hyll + h (h-1)/2}w xc = x / num_pixeles_negros_imagen yc = y / num_pixeles_negros_imagen

(7)

3. Cálculo los códigos ibb de un bloque rectangular

Para calcular los códigos ibb de un bloque rectangular no es indispensable conocer la representación en árbol de la imagen. Basta con conocer su coordenada inferior izquierda (xll, yll), su anchura ‘w’ y su altura ‘h’.

Una vez conocidas las características del bloque, se analizan, mediante un sencillo algoritmo, averiguando por cuantos bloques básicos está formado (un bloque se considera básico si es hoja del árbol que representa la imagen). Conocidos todos los bloques básicos por los que está constituido el bloque rectangular inicial, calcular los códigos ibb de éste bloque consistirá en obtener el código ibb de cada bloque básico.

Ejemplo: Disponemos de una imagen binaria de 16 x 16. Queremos conocer los códigos del bloque rectangular superior: la cabeza cuadrada del individuo.

El algoritmo es capaz de encontrar los 4 bloque básicos por los que está formado la cabeza (cada uno coloreado de un color). Luego se calculan los códigos de los 4 bloques, obteniendo los códigos del bloque original.

(8)

4. Traslación de un bloque

Para realizar una traslación de un bloque necesitamos conocer su coordenada inferior izquierda (xll,yll), su anchura ‘w’ y altura ‘h’, además de las filas ‘f’ y columnas ‘c’ a trasladar. Las coordenadas del bloque resultante, se obtienen de la siguiente forma:

xll’ = xll + c yll’ = yll + f

Teniendo en cuenta que las nuevas coordenadas deben de estar dentro del dominio de la imagen (2^n x 2^n).

La altura y la anchura del bloque resultante serán las mismas.

Para calcular el código ibb del nuevo bloque resultante se le aplica el algoritmo descrito en el apartado 3

Ejemplo: Vamos a trasladar la imagen situada a la izquierda. La traslación consistirá en dos columnas (c =2) y una fila (f =1)

(9)

5. Rotación de un bloque

Los distinto ángulos de rotación que se pueden realizar son 90º, 180º y 270º

Para realizar la rotación de un bloque necesitamos conocer sus características (xll, yll, w y h). Una vez conocidas, las características del bloque resultante se calculan de la siguiente forma:

Rotación de 90º Rotación de 180º Rotación de 270º xll’ = 2^n – yll – h xll’ = 2^n – xll – w xll’ = yll

yll’ = xll yll’ = 2^n – yll –h yll’ = 2^n –xll –w

W’ = h w’ = w w’ = h

h’ = w h’ = h h’ = w

Conocidas la características del bloque resultante, para calcular su código ibb, únicamente hay que aplicarle el algoritmo del apdo. 3

Ejemplo. Vamos a rotar una imagen de ejemplo (una F y un cuadrado) 180º

(10)

6. Reflexión de un bloque

La reflexión de un bloque se puede realizar respecto del eje de ordenadas, el eje de abcisas, la diagonal principal y la secundaria .

Igual que en las operaciones anteriores, para realizar la reflexión de un bloque necesitamos conocer sus características (xll, yll, w y h). Una vez conocidas, las características del bloque resultante se calculan de la siguiente forma:

Eje de abcisas Eje de ordendas Diag. Principal Diag. Secundaria

xll’ = xll xll’ = 2^n – xll - w xll’ = yll xll’ = 2^n –yll – h yll’ = 2^n – yll - h yll’ = yll yll = xll yll = 2^n – xll – w

w’ = w w’ = w w’ = h w’ = h

h’ = h h’ = h h’ = w h’ = w

Conocidas la características del bloque resultante, para calcular su código ibb, únicamente hay que aplicarle el algoritmo del apdo. 3

Ejemplo. Vamos a rotar un bloque rectangular respecto de la diagonal primaria. Datos requeridos: coordenada inferior izquierda del bloque (13,2), su anchura (w = 2) y su altura (h =6).

Imagen Original Imagen Destino (diagonal primaria)

(11)

APLICACIÓN

Para implementar esta aplicación hemos escogido el lenguaje de programación Visual Basic 6.0.

Manual de Usuario

• Para cargar el programa ejecutar: ProyectoIBB.exe

• Una vez cargada la aplicación, en la pantalla principal se presenta una malla de 16 x 16 y las distintas operaciones que se pueden realizar.

• Sobre la malla de representación se puede tanto dibujar una imagen (con el ratón) como cargar tres imágenes de ejemplo.

• Las operaciones se dividen en operaciones sobre bloque, que

requieren la introducción de las correctas características del mismo; y operaciones sobre imágenes.

• Para finalizar la aplicación pulsar el botón ‘salir’

• Se recomienda utilizar una configuración de pantalla 600x800 A continuación vamos a presentar sucesivas pantallas de la aplicación a modo de ejemplo

Ejemplo 1. La aplicación se carga. Aparece la pantalla de inicio. Se pueden apreciar las distintas opciones que presenta la aplicación

(12)

Ejemplo 2. Elegimos una operación para bloques: Traslación. Nos aparece un cuadro de diálogo para especificar las características de dicho bloque. La aplicación comprobará la veracidad de las mismas.

Ejemplo 3.Resultado de la traslación de bloque. Podemos observar el bloque original situado a la izquierda y el bloque desplazado 3 columnas.

(13)

Ejemplo 4. Escogemos ahora una operación sobre imágenes: Calcular el centroide. La aplicación muestra una nueva ventana con la imagen original, los códigos que la representan y el cálculo del centroide (en rojo). A la derecha se puede leer una simplificada información sobre la operación.

Ejemplo 5. Realizamos otra operación sobre imágenes: Reflexión. Podemos elegir 4 ejes de reflexión. Elegimos sobre el eje de ordenadas.

(14)

Ejemplo 6. La aplicación muestra tanto la imagen original como la imagen destino. Además se pueden visualizar los códigos que representan a las mismas.

REFERENCIAS

Operations on binary images represented by interpolation based bintrees: Debrajan Sakar, Nishit Gupta. 1998

Referencias

Documento similar

Cedulario se inicia a mediados del siglo XVIL, por sus propias cédulas puede advertirse que no estaba totalmente conquistada la Nueva Gali- cia, ya que a fines del siglo xvn y en

El nuevo Decreto reforzaba el poder militar al asumir el Comandante General del Reino Tserclaes de Tilly todos los poderes –militar, político, económico y gubernativo–; ampliaba

que hasta que llegue el tiempo en que su regia planta ; | pise el hispano suelo... que hasta que el

Missing estimates for total domestic participant spend were estimated using a similar approach of that used to calculate missing international estimates, with average shares applied

El principio general mencionado antes implica, evidentemente, que si la competencia autonómica es exclusiva y plena, las Comunidades Autónomas adoptarán las medidas de

Por PEDRO A. EUROPEIZACIÓN DEL DERECHO PRIVADO. Re- laciones entre el Derecho privado y el ordenamiento comunitario. Ca- racterización del Derecho privado comunitario. A) Mecanismos

Así, antes de adoptar una medida de salvaguardia, la Comisión tenía una reunión con los representantes del Estado cuyas productos iban a ser sometidos a la medida y ofrecía

First, we must remember that time travel (specially a trip to the past, or a two-way trip) would only be possible in the block universe. In the presentist alternative,