Operaciones sobre imágenes binarias representadas por

Anuncio
PID
Operaciones en Imágenes Binarias Representadas por IBB
UNIVERSIDAD
DE SEVILLA
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
1
PID
Operaciones en Imágenes Binarias Representadas por IBB
ÍNDICE
1.
2.
3.
4.
5.
INTRODUCCIÓN................pag.3
REPRESENTACIÓN IBB....pag.4
OPERACIONES...................pag.5
APLICACIÓN......................pag.11
REFERENCIAS...................pag.14
2
PID
Operaciones en Imágenes Binarias Representadas por IBB
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.
Reflexión.
3
PID
Operaciones en Imágenes Binarias Representadas por IBB
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(jk * 2k)
• Obtenemos “S” y lo pasamos a binario.
S= 22n – 2(2n – l)
S= Σ2n-1(sk * 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.
4
PID
Operaciones en Imágenes Binarias Representadas por IBB
OPERACIONES
Las distintas operaciones que hemos implementado en la aplicación son
las siguientes.
1.
2.
3.
4.
5.
Cálculo del número de pixeles negros.
Cálculo de centroide.
Traslación.
Rotación.
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.
5
PID
Operaciones en Imágenes Binarias Representadas por IBB
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
6
PID
Operaciones en Imágenes Binarias Representadas por IBB
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.
7
PID
Operaciones en Imágenes Binarias Representadas por IBB
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)
Imagen Original
Imagen Destino (c=2, f=1)
8
PID
Operaciones en Imágenes Binarias Representadas por IBB
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º
xll’ = 2^n – yll – h
yll’ = xll
W’ = h
h’ = w
Rotación de 180º
xll’ = 2^n – xll – w
yll’ = 2^n – yll –h
w’ = w
h’ = h
Rotación de 270º
xll’ = yll
yll’ = 2^n –xll –w
w’ = 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º
Imagen Original
Imagen Destino (180º rotada)
9
PID
Operaciones en Imágenes Binarias Representadas por IBB
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
yll’ = 2^n – yll - h
w’ = w
h’ = h
xll’ = 2^n – xll - w
yll’ = yll
w’ = w
h’ = h
xll’ = yll
yll = xll
w’ = h
h’ = w
xll’ = 2^n –yll – h
yll = 2^n – xll – w
w’ = 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 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)
10
PID
Operaciones en Imágenes Binarias Representadas por IBB
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
11
PID
Operaciones en Imágenes Binarias Representadas por IBB
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.
12
PID
Operaciones en Imágenes Binarias Representadas por IBB
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.
13
PID
Operaciones en Imágenes Binarias Representadas por IBB
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
14
Descargar