Vous êtes sur la page 1sur 9

Esqueletización Tópicos Especiales en Procesamiento Gráfico

Esqueletización
Carranza Athó, Fredy
Tópicos Especiales en Procesamiento Gráfico
Escuela Académico Profesional de Informática
Universidad Nacional de Trujillo
Trujillo Perú
2006

Resumen. La esqueletización pretende obtener de la imagen, un patrón continuo que contenga la


menor cantidad datos posibles, pero que siga aun conteniendo un rastro del objeto original. Para
ello existen algoritmos que operan de manera general eliminando los píxeles bajo reglas pre
definidas, y deteniéndose cuando no haya mas cambios que hacer. Hay que tener en cuenta que
el tiempo de procesamiento es alto en muchas ocasiones, pero ello generalmente depende del
tipo de algoritmo y del tamaño de la foto.

1. Introducción

Simplificar la forma de un objeto, o reducir la cantidad de datos que éste contiene siempre ha sido un tema
de interés en el campo del procesamiento de imágenes. Para ello es necesario contar con técnicas adecuadas
que nos faciliten el poder reducir los datos de los objetos.

Unas de las técnicas más utilizadas para lograr este objetivo, es la esqueletización de las imágenes. Obtener el
esqueleto de una imagen significara encontrar un patrón a partir de la forma del objeto, el cual contendrá
menor datos pero conservará la continuidad y la menor cantidad menor de píxeles posible.

Obtener un esqueleto, es un proceso iterativo y puede que demande mucho tiempo de procesamiento ya que
generalmente todos los algoritmos, requieren muchos recorridos por toda la imagen. Existen a su vez
algoritmos que provienen de estructuras matemáticas complejas y otros de cálculos lógicos; pero los cuales
finalmente producen tener una nueva imagen con menos datos.

2. Definición

La esqueletización es un proceso de quitar de un patrón la mayor cantidad de píxeles posibles sin afectar la
forma general del patrón. En otras palabras, después que los píxeles hayan sido quitados, el patrón debe ser
reconocido. El esqueleto obtenido debe tener las siguientes tres propiedades.

• Tan delgado como sea posible


• Conectado
• Centrado

Cuando estas características son alcanzadas el algoritmo debe detenerse.


A continuación un patrón y su esqueleto.

Figura 1. Un patrón en forma de T, y su respectivo esqueleto.

1
Esqueletización Tópicos Especiales en Procesamiento Gráfico

Otra manera de pensar sobre los esqueletos es como el lugar donde convergen los centros de círculos bi
tangenciales que entran de manera completa dentro de la región considerada.

Figura 2. El esqueleto de un rectángulo definido en términos de círculos bi tangenciales.

El término Transformación de eje medio (MAT) y Esqueletización son comúnmente usados de manera
indistinguible. El esqueleto es un imagen binaria que simplemente muestra el esqueleto de por sí, mientras
que MAT es una imagen de niveles de gris, donde cada punto del esqueleto tiene una intensidad la cual
representa su distancia a los límites del objeto original.

Finalmente, el esqueleto de una imagen será tratado como la primera definición que dimos, así pues las
siguientes referencias a un esqueleto serán como se mencionó.

3. TÉCNICAS EMPLEADAS

En las presentes descripciones, se asumirá que los objetos dentro de las imágenes, deben estar sombreados
de color negro, mientras que el fondo debe ser blanco.

3.1. Diagrama de Voronoi

Los diagramas de Voronoi fueron por primera vez discutidos por Peter Lejeune-Dirichlet en 1850, pero fue
hasta mucho después en 1908 que estos diagramas fueron escritos por Georgy Voronoi, de ahí su nombre.

Un diagrama de Voronoi es una estructura geométrica que representa información de proximidad acerca de
un conjunto de puntos u objetos es decir, el diagrama de Voronoi de un conjunto de objetos geométricos es
una partición del espacio en celdas cada una de la cuales contiene una colindancia con sus puntos más
cercanos, lo que se suele representar no por celdas sino por puntos de manera discreta.

De una manera más formal, tenemos un conjunto de puntos Ω = {pi } también llamados sitios en el plano E,
la región poligonal convexa V(i) que contiene solo el sitio pi, el polígono Voronoi de pi se define como el
conjunto de todos los puntos que se encuentran mas cerca de pi que ningún otro sitio pj:

V(i) = {p , p ∈ E | ∀j ≠ i : d 2 ( p, pi ) ≤ d 2 ( p, p j )}

Donde d2 denota la distancia entre dos puntos.

El conjunto de los límites ∂V(pI ) de todos V (pi ) es llamado diagrama de Voronoi (VD) o teselacion de
Voronoi Vor(Ω).

Vor(Ω) = U ∂V( pi )
p i ∈Ω

2
Esqueletización Tópicos Especiales en Procesamiento Gráfico

En palabras sencillas, el diagrama de Voronoi contiene celdas o polígonos de Voronoi los cuales, encierran
los puntos pi, para los cuales se cumple siempre que los puntos dentro de los polígonos adyacentes a éste,
son los más cercanos que hay.

Figura 3. Diagrama de Voronoi

En el caso que se utiliza una imagen, los puntos que se deben considerar para producir un esqueleto, deben
ser no todos los píxeles, sino solamente los puntos de los bordes de la imagen. Así y solamente así se
conseguirá que el esqueleto se forme de una manera correcta

Si se siguen los pasos indicados, el diagrama de Voronoi solo necesitará ser intersectado con la imagen a la
cual se le esta extrayendo el esqueleto, ya que el diagrama de Voronoi estirará sus aristas hasta fuera de los
bordes. Veamos un ejemplo:

Figura 5. Esqueleto de una imagen binarizada a través del diagrama de Voronoi

3.2. Algoritmo de Zhang - Suen

El algoritmo de Zhang Suen, es la variación de un algoritmo antiguo como el algoritmo de Hilditch y al igual
que ese requiere de una cierta máscara y el paso de ella a través de toda la imagen, de manera tal que los
píxeles cubiertos por la máscara son analizados por ciertas condiciones básicas. De estas condiciones define
que el punto sea borrado de la imagen o no. En este algoritmo se utilizan dos subiteraciones, cada una de
ellas se encarga de eliminar píxeles de zonas determinadas de la máscara.

La técnica que utiliza este algoritmo es la de los ocho vecinos. Para ello debemos considerar una máscara de
3x3 y de preferencia numeraremos los píxeles internos de la siguiente manera.

Las condiciones que se mencionaron inicialmente, requieren la definición de dos funciones básicas. Tenemos
la función A(p), que representa la cantidad de veces que el patrón 0,1, se repite en la secuencia de puntos de
la matriz, tomados desde el punto p2 hasta p2 mismo, de manera horaria. En otras palabras, habrá que contar
cuantas veces se repite el patrón 0,1 en p1, p2, p3, p4, p5, p6, p7, p8, p1. Y además se cuenta con la función B(p),

3
Esqueletización Tópicos Especiales en Procesamiento Gráfico

que se define como el número de píxeles 1 alrededor del píxel central. El siguiente ejemplo permitirá
concebir con mayor claridad las funciones.

P8 P1 P2 P8 P1 P2
P7 P0 P3 P7 P0 P3
P6 P5 P4 P6 P5 P4

B(p0)=2 , A(p0)=1 B(p0)=2, A(p0)=2

Una vez, determinadas las funciones mencionadas, se debe pasar la mascara por toda la imagen, y el píxel
central debajo de la máscara será cambiado al color del fondo, si es que cumple las siguientes condiciones:

Para la primera subiteración Para la segunda subiteración

1. 2 <= B(p0) <= 6 5. 2 <= B(p0) <= 6


2. A(p0) = 1 6. A(p0) = 1
3. p1.p3.p5=0 7. p1.p3.p7=0
4. p3.p5.p7=0 8. p1.p5.p7=0

Para entender mejor el algoritmo, es necesario comprender el significado de las condiciones que se
mencionan.

Condición 1: 2 <= B(p1) <= 6

Esta condición combina dos subcondiciones, primero que la cantidad de vecinos diferentes de cero de p0, sea
mayor o igual que dos, y segundo que esta cantidad sea menor o igual que seis. La primera condición
asegura que ningún píxel punto final, el cual no este aislado, sea eliminado. Un píxel punto final, es
cualquier píxel que tiene como vecino un píxel del color del objeto. La segunda condición, asegura que ese
píxel sea un píxel en el borde. El siguiente ejemplo aclara mejor las cosas.

P8 P1 P2 P8 P1 P2 P8 P1 P2
P7 P0 P3 P7 P0 P3 P7 P0 P3
P6 P5 P4 P6 P5 P4 P6 P5 P4

B(p1)=1 B(P1)=0 B(p1)=7

En la figura podemos apreciar, que si B(p0) = 1, entonces p0 es un píxel punto final, y además es un punto
del esqueleto, por lo tanto no debe ser borrado. En el siguiente cuadro, se observa que como B(p0) = 0, el
punto es un punto aislado, el cual representa a una clase de ruido, pero este algoritmo no encarga de
eliminarlo. En el tercer cuadro, se ve que como B(p0) = 7, p0 no es un píxel de borde, por lo tanto no debe ser
eliminado.

Condición 2: A(p1)=1

Esta condición representa una prueba de conectividad. De hecho, si se considera las figuras siguientes donde
A(p0) > 1, se observa que si se elimina el píxel p0, el esqueleto quedaría desconectado.

P8 P1 P2 P8 P1 P2 P8 P1 P2
P7 P0 P3 P7 P0 P3 P7 P0 P3
P6 P5 P4 P6 P5 P4 P6 P5 P4

4
Esqueletización Tópicos Especiales en Procesamiento Gráfico

A(p1)=2 A(p1)=2 A(p1)=3

Condición 3, 4, 5, 6:

Por éstas condiciones se asegura que los puntos a borrar pertenezcan al borde sur este y en la esquina
noroeste, para la primera iteración, y para la segunda los de los bordes noreste y la esquina suroeste,
validando así que dichos puntos no pertenecerán al esqueleto.

Norte
Oeste P8 P1 P2 Este
P7 P0 P3
P6 P5 P4
Sur

3.3. Algoritmo de Holt

El algoritmo de Holt nació en el año 1987, y surgió para modificar las reglas que imponía el algoritmo de
Zhang Suen, y transformar dichas reglas en expresiones lógicas, de manera que el tratamiento de los
patrones y las máscaras fuese en forma de ecuaciones. Así pues Holt propuso resumir las ocho reglas, cuatro
para cada una de las dos subiteraciones, en dos simples expresiones booleanas. Las expresiones se definen
como:

Para la primera iteración: V(C) ∧ (~ edge(C) ∨ ( V(E) ∧ V(S) ∧ ( V( N) ∨ V(O))))


Para la segunda iteración: V(C) ∧ (~ edge(C) ∨ ( V(O) ∧ V( N) ∧ ( V(S) ∨ V(E))))

Donde la función V, se define como:

Verdadero , color( X ) = Negro


V( X ) 
Falso , color( X ) = Falso

Y edge, o borde, como:

Verdadero , A( X ) = 1 ∧ 2 ≤ B( X ) ≤ 6
edge 
Falso , en caso contrario

Donde A y B, son las funciones definidas por el algoritmo de Zhang Suen, y mencionadas en el apartado 3.2.

Holt, propuso a su vez combinar las dos expresiones anteriores en una sola, de manera que solo se produzca
una sola iteración en el recorrido de la imagen. La expresión resultante fue la siguiente:

4. IMPLEMENTACIÓN

El algoritmo a implementar es el algoritmo 3.2, el algoritmo de Zhang Suen. A continuación veremos el


pseudocódigo del algoritmo.

5
Esqueletización Tópicos Especiales en Procesamiento Gráfico

Entrada: Imagen I
Salida: Esqueleto
hacer
para i = 1 + w:nf - w
para j = 1+ w:nc - w
si I(i,j) es un punto de color negro 0
llenar en W, todos los vecinos del píxel
si hay algún píxel blanco en W
si fB(W)>= 2 y fB(W) <= 6
si fA(W) == 1
si W(1,2) == 255 o W(2,3) == 255 o W(3,2) == 255
si W(2,3) == 255 o W(3,2) == 255 o W(2,1) == 255
marcar el píxel i,j como candidato a ser borrado
fin si
fin si
fin si
fin si
fin si
fin si
fin para
fin para

borrar todos los pixeles marcados

para i = 1 + w:nf - w
para j = 1+ w:nc - w
si I(i,j) es un punto de color negro 0
llenar en W, todos los vecinos del píxel
si hay algún píxel blanco en W
si fB(W)>= 2 y fB(W) <= 6
si fA(W) == 1
si W(1,2) == 255 o W(2,3) == 255 o W(2,1) == 255
si W(1,2) == 255 o W(3,2) == 255 o W(2,1) == 255
marcar el píxel i,j como candidato a ser borrado
fin si
fin si
fin si
fin si
fin si
fin si
fin para
fin para

borrar todos los píxeles marcados


mientras mas píxeles puedan ser marcados como candidatos

Vale aclarar que el algoritmo en las iteraciones, no debe borrar los píxeles, sino que debe marcarlos, ya que si
se cambian los colores de los píxeles a medida de cómo avanza el algoritmo, el resultado no será el esperado.

De manera didáctica se presenta una imagen, donde el algoritmo ha hecho las dos iteraciones, y finalmente
acaba resultando en el esqueleto.

Como se puede apreciar, a la primera iteración los píxeles a eliminarse con los de la parte este y sur, y en la
segunda son los píxeles del oeste norte.

6
Esqueletización Tópicos Especiales en Procesamiento Gráfico

(a) (b) (c)

5. RESULTADOS

La implementación fue realizada en el MatLab, y las imágenes que se procesaron, fueron imágenes binarias
sencillas y no de mucho tamaño.

Entrada Salida Iteraciones

26

16

13

43

7
Esqueletización Tópicos Especiales en Procesamiento Gráfico

34

11

15

17

15

21

34

8
Esqueletización Tópicos Especiales en Procesamiento Gráfico

6. CONCLUSIONES

- Los algoritmos revisados, presentan diversidad de enfoques, pero los cuales por su particularidad,
pueden o no obtener exactamente el mismo resultado. Si bien es cierto obtiene un esqueleto puede que
este no sea el mismo para todos los métodos.

- El algoritmo implementado funciona muy bien con las imágenes presentan formas irregulares y rectas,
así pues lo demuestran los resultados anteriores. Pero si bien es cierto que el resultado es efectivo, vale
saber que cuando se trata de este algoritmo, las formas curvas generalmente quedan con un esqueleto
poco reconocible.

- Para la obtención de cualquier esqueleto el tiempo de proceso siempre es algo largo, ya que los
procedimientos necesitan barrer la imagen continuamente. Y el proceso se debe estar repitiendo muchas
veces, ya que solo parará cuando ya no se pueda esqueletizar más la imagen.

REFERENCIAS BIBLIOGRÁFICAS

[1] D. AZAR, Skeletonization[en línea], Canada Montreal, 1997, disponible en:


http://cgm.cs.mcgill.ca/~godfried/teaching/projects97/azar/skeleton.html
[2] B. FISHER, S. PERKINS, A WLAKER, E WOLFART, Hypermedia Image Processing Reference[en línea],
Universidad de Edinburgo, 1994, disponible en:
http://www.cee.hw.ac.uk/hipr/html/skeleton.html
[3] D. MERAD, M. MALLAN, S. LELANDAIS, Skeletonization of Two-Dimensional regions Using Hybrid
Method, Paper, Francia, disponible en:
http://wscg.zcu.cz/wscg2004/Papers_2004_Short/K05.pdf
[4] M. PAGOLA, Imágenes binarias[en línea], Universidad Pública de Navarra, 2004
http://www.ayc.unavarra.es/miguel.pagola/binarias.htm
[5] T.Y. Zhang, C.Y. SUEN, A fast parallel algorithm for Thinning digital patterns, Paper, Canada Montreal,
1984
[6] M. GIUSTI, M. VILA, G. LUJAN, Manuscript Document Digitalization and Recognition: A First
Approach, Mar del Plata Argentina, 2005

Vous aimerez peut-être aussi