• No se han encontrado resultados

PROYECTO FIN DE CARRERA. Segmentación de imágenes y teoría de grafos

N/A
N/A
Protected

Academic year: 2022

Share "PROYECTO FIN DE CARRERA. Segmentación de imágenes y teoría de grafos"

Copied!
55
0
0

Texto completo

(1)

Segmentaci´ on de im´ agenes y teor´ıa de grafos

Susana M

a

Rodr´ıguez L´azaro Julio de 2012

Departamento proponente: Matem´atica Aplicada Tutores: Carmen Tobar Puente

Pedro M. Gonz´alez Manch´on

Autor: V

o

B

o

del tutor coordinador:

Susana M

a

Rodr´ıguez L´azaro Carmen Tobar Puente

(2)
(3)

Introducci´on I

1. Imagen, Segmentaci´on y Energ´ıa 1

1.1. ¿Qu´e es una imagen? . . . 1

1.2. ¿Qu´e significa segmentar una imagen? . . . 1

1.3. Energ´ıas . . . 2

1.4. ¿Qu´e tiene que ver segmentar con el concepto de energ´ıa? . . . 2

1.5. Algunos ejemplos de energ´ıas razonables . . . 3

2. Grafos 7 2.1. ¿Qu´e es un grafo? . . . 7

2.2. Caminos . . . 7

2.3. Grafos dirigidos . . . 8

2.4. Capacidades . . . 8

2.5. Redes . . . 9

2.6. Corte de una red . . . 9

2.7. Coste de un corte. Corte m´ınimo . . . 10

2.8. Flujo en una red . . . 10

2.9. El valor de un flujo. Flujo m´aximo . . . 11

2.10. El coste del m´ınimo corte es el valor del flujo m´aximo . . . 13

2.11. ¿Qu´e es una red residual? . . . 13

3. Relaci´on entre Energ´ıas y Grafos 15 3.1. Imagen y grafo . . . 15

3.2. Segmentaci´on binaria y corte de un grafo . . . 15

3.3. Energ´ıas representables por un grafo . . . 16

3.4. ¿C´omo son las energ´ıas que se pueden representar por grafos? . . . 17

3.4.1. T´erminos Vp . . . 19

3.4.2. T´erminos Vp,q . . . 20

3.4.3. Energ´ıas de la tabla 1 . . . 22

4. El algoritmo de Boykov/Kolmogorov 25 4.1. Objetivo . . . 25

4.2. Inputs . . . 25

4.3. Outputs . . . 26

4.4. Definiciones involucradas en el algoritmo . . . 26

(4)

4.4.1. ´Arboles S y T . . . 26

4.4.2. Nodos libres . . . 27

4.4.3. Nodos activos y pasivos . . . 27

4.4.4. Etapas del algoritmo . . . 28

4.4.5. Final del algoritmo . . . 29

4.5. Orden de recorrido de nodos y arcos . . . 29

4.5.1. Orden de recorrido de los nodos . . . 29

4.5.2. Orden de recorrido de los arcos . . . 29

4.6. Proceso del algoritmo . . . 30

4.6.1. Resultado del algoritmo . . . 39

5. Aplicaci´on: segmentaci´on de im´agenes 41 5.1. T´erminos dependientes de una variable . . . 41

5.2. T´erminos dependientes de dos variables . . . 42

5.3. Ejemplo pr´actico . . . 42

6. Conclusiones 45

Referencias 47

(5)

En la siguiente figura podemos ver la imagen de dos h´ıgados, uno sano y otro enfermo.

Figura 1: Un h´ıgado sano y un h´ıgado en el que se aprecia un tumor

Estas im´agenes, y la problem´atica que conlleva el procesamiento de im´agenes en gene- ral, y m´edicas en particular, es el origen de nuestro proyecto. En la imagen de la derecha se aprecia un h´ıgado alterado, y ser´ıa importante resaltar esta alteraci´on mediante alg´un tipo de software, que pudiese delimitar con claridad la zona alterada, es decir, segmentarla.

La segmentaci´on es una t´ecnica de tratamiento digital de im´agenes que permite la separaci´on de las diferentes partes de una imagen que pertenecen o pueden pertenecer a una misma estructura. Es parte del tratamiento y procesamiento general de im´agenes. En el caso de las im´agenes m´edicas relacionadas con el h´ıgado, es por ejemplo importante poder segmentar un h´ıgado sano para poder calcular su volumen, un requisito necesario antes de una donaci´on de un paciente sano, en el que prima donar y al mismo tiempo conservar un volumen de h´ıgado suficiente.

La segmentaci´on es la consecuci´on de dos tareas que son complementarias: el re- conocimiento y la delineaci´on. El reconocimiento es la ubicaci´on del objeto a sepa- rar. La delineaci´on es la determinaci´on de la extensi´on del objeto y su diferenciaci´on del resto de la imagen.

(6)

El objetivo es encontrar m´etodos de segmentaci´on que sean capaces de delinear los objetos de forma precisa y tan eficiente como lo podr´ıa hacer un radi´ologo experto, y hacerlo de modo autom´atico, sin la intervenci´on de ´este.

Existen diferentes formas a partir de las cuales se puede obtener una segmentaci´on de una imagen (ecuaciones en derivadas parciales, geometr´ıa diferencial, etc). En nuestro proyecto usamos como referencia el algoritmo desarrollado por Yuri Boykov y Vladimir Kolmogorov, basado en la teor´ıa de grafos.

Una funci´on de energ´ıa es b´asicamente un modo de evaluar las distintas segmentaciones que podr´ıamos realizar. Un problema dif´ıcil consiste en encontrar esta funci´on de energ´ıa, que intentar´ıa evaluar distintos aspectos de la imagen. Una energ´ıa razonable deber´ıa asignar bajos valores de energ´ıa a buenas segmentaciones del h´ıgado, y altos valores de energ´ıa a segmentaciones malas. Idealmente, nuestra energ´ıa deber´ıa asignar el menor de los valores a la mejor de las segmentaciones.

En este proyecto, en cambio, partimos de una funci´on de energ´ıa razonable, que asumi- mos ya dada. Es entonces cuando aparece un segundo problema, clave en la segmentaci´on;

se trata de un problema de minimizaci´on, consistente en encontrar la segmentaci´on con menor nivel de energ´ıa.

Este problema puede expresarse en t´erminos de grafos, cuando la energ´ıa es de tipo submodular. Sin tratar de ser precisos por el momento, b´asicamente se construye un grafo que tiene por v´ertices a los p´ıxeles de la imagen, junto con otros dos v´ertices terminales (s y t), y se asigna una capacidad (un valor positivo) a cada arista del grafo. Las seg- mentaciones binarias de la imagen (que distinguen en general objeto y fondo, h´ıgado de lo no h´ıgado, o un tumor dentro de un h´ıgado), se corresponden entonces con los cortes del grafo, es decir, una partici´on de los v´ertices de ´este que agrupa unos con el v´ertice terminal s (fuente) y el resto con el v´ertice terminal t (sumidero). El coste de un corte del grafo se calcula sumando las capacidades de las aristas cuyos extremos se han agrupado, uno con s, el otro con t.

Si las capacidades han sido asignadas adecuadamente (cosa que es s´olo posible cuando la energ´ıa es de tipo submodular), se verifica entonces que, salvo una constante, la energ´ıa de una segmentaci´on de la imagen se corresponde con el coste del corte correspondiente en el grafo. En resumen, para energ´ıas de tipo submodular, y al menos de modo te´orico, podemos decir que el problema de encontrar la mejor segmentaci´on se reduce al problema de encontrar el corte con menor coste de un grafo con capacidades.

Lo interesante de este asunto es el hecho de que esto puede hacerse mediante al- goritmos, en tiempo polinomial. La raz´on es que, de acuerdo con el Teorema de Ford

ii

(7)

tal de esta comparaci´on, uno imagina las aristas del grafo como tuber´ıas, y entonces la capacidad de esta arista mide en realidad la capacidad de dicha tuber´ıa. El flujo m´aximo es el valor del caudal mayor que podemos hacer circular entre la fuente s y el sumidero t.

Este proyecto se centra en un algoritmo concreto, que calcula el flujo m´aximo (y por tanto el coste m´ınimo del corte, y por ende la segmentaci´on de la imagen con menor energ´ıa), debido a Boykov y Kolmogorov.

El objetivo del proyecto ha sido doble. Por un lado se ha estudiado en profundidad el art´ıculo [3], tratando de reproducir de un modo claro, preciso y asequible, las ideas que contiene. La primera secci´on trata de detallar, paso a paso, la relaci´on entre el problema original, la segmentaci´on de una imagen, y c´omo se refleja esto en el problema de corte m´ınimo de un grafo con capacidades. En concreto presentamos una sencilla hoja de c´alculo en el que se discuten tres funciones de energ´ıa distintas, usadas para evaluar las diecis´eis posibles segmentaciones de una imagen con cuatro p´ıxeles. En la exposici´on se han recorri- do todos los conceptos involucrados, explic´andolos con detenimiento, y poniendo sencillos ejemplos de todos ellos.

El segundo objetivo ha sido el estudio detenido del algoritmo de Boykov y Kolmogorov, con el que se han realizado adem´as una serie de pruebas, que se incluyen en una secci´on final del proyecto.

Despu´es de explicar las distintas etapas del algoritmo, se present´o un ejemplo sencillo de grafo, en el que se sigue paso a paso la obtenci´on del m´aximo flujo y el m´ınimo corte.

Por ´ultimo se obtiene la segmentaci´on de una imagen usando las t´ecnicas estudiadas.

Se usan las energ´ıas propuestas por Boykov. Se ha implementado desde MATLAB usando el c´odigo fuente C++ facilitado por Boykov y disponible en la web.

iii

(8)
(9)

1.1. ¿Qu´ e es una imagen?

Una pantalla Ω est´a formada por p´ıxeles p. La imagen I la constituyen estos p´ıxeles p junto con un nivel de gris Ip para cada p´ıxel. Formalmente una imagen I es una aplicaci´on (asignaci´on)

I : Ω ⊂ R2 → [0, 1]

p → Ip

El valor Ipes la intensidad de gris en el p´ıxel p. Por ejemplo, una imagen 3 x 3, constituida por 9 p´ıxeles, ser´ıa la siguiente:

0.9 0.9 0.8

0.8 0 0

0.7 0 0

Se ver´ıa apr´oximadamente una imagen as´ı:

1.2. ¿Qu´ e significa segmentar una imagen?

Imaginemos por ejemplo la imagen diagn´ostica del h´ıgado de un paciente. En esta imagen queremos reconocer el h´ıgado y un posible tumor. Podr´ıamos reconocer el h´ıgado en negro, el tumor en rojo y el fondo en blanco, para lo que necesitar´ıamos 3 etiquetas:

L = {0, 1, 2} = {negro, blanco, rojo}

Una segmentaci´on f se define como una aplicaci´on

(10)

2 Proyecto Fin de Carrera

f : Ω ⊂ R2 → L donde L = {0, 1, 2, ...n} es el conjunto de etiquetas.

En nuestro proyecto trabajaremos exclusivamente con segmentaciones binarias. Una segmentaci´on binaria se define como una aplicaci´on:

f : Ω ⊂ R2 → {0, 1}

y se nota por fp ∈ {0, 1} al valor de la segmentaci´on en el p´ıxel p. Es decir, f : Ω ⊂ R2 → {0, 1}

p → fp

El conjunto de posibles segmentaciones de una imagen se denota por L. As´ı, en una imagen 2 x 2 constitu´ıda por 4 p´ıxeles, si a cada p´ıxel le asignamos una etiqueta que puede ser 0 ´o 1, el n´umero de segmentaciones posibles ser´a 24 = 16. Si tenemos N p´ıxeles, el n´umero de posibles segmentaciones ser´a 2N.

1.3. Energ´ıas

Una energ´ıa es una aplicaci´on

E : L → R f → E(f)

Es decir, una energ´ıa asigna a cada posible segmentaci´on f un valor num´erico E(f).

1.4. ¿Qu´ e tiene que ver segmentar con el concepto de energ´ıa?

Disponer de una energ´ıa es disponer de un modo de evaluar la calidad de las seg- mentaciones. Para ello entendemos que una segmentaci´on es mejor cuanta menor energ´ıa asociada tiene, e idealmente la mejor segmentaci´on se corresponde con aquella que tiene menor energ´ıa asociada. Se trata pues de:

1. Encontrar una energ´ıa adecuada para evaluar las posibles segmentaciones.

2. Una vez que tenemos una energ´ıa E, que se acepta como buena para evaluar las posibles segmentaciones, habr´ıa que encontrar la segmentaci´on f0 con menor energ´ıa, es decir, tal que

E(f0) ≤ E(f) para cualquier otra segmentaci´on f.

(11)

En el sentido del punto 2, podemos decir que la segmentaci´on de im´agenes es un problema de optimizaci´on de energ´ıas.

1.5. Algunos ejemplos de energ´ıas razonables

Vamos a desarrollar un ejemplo sencillo a partir de una imagen, formada por 4 p´ıxeles, con los siguientes valores de intensidad:

0.51 0.48

1 1

Compararemos tres energ´ıas distintas, para lo que utilizamos de soporte para nuestro ejemplo un archivo Excel, en el que representamos:

Las 16 posibles segmentaciones.

Energ´ıa 1. El valor de la energ´ıa para cada segmentaci´on f depende exclusivamente de la diferencia entre la intensidad Ip de cada p´ıxel y el valor de la etiqueta fp

asignada al mismo. Con precisi´on, E(f) =X

p

Vp(fp) siendo Vp(fp) = |fp− Ip|

donde p recorre el conjunto de los p´ıxeles. Se penaliza en este caso que la etiqueta sea muy distinta del nivel de gris del p´ıxel. En nuestro ejemplo, el valor de la energ´ıa para la segmentaci´on n´umero 3 es el m´as bajo, as´ı que la tercera segmentaci´on ser´ıa la mejor.

Energ´ıa 2. El valor de la energ´ıa para cada segmentaci´on f tiene en cuenta la vecin- dad de cada p´ıxel.Un sistema de vecindad a 4 es aquel en el que consideramos que cada p´ıxel tiene 4 vecinos, a saber, derecha, izquierda, arriba y abajo.

E(f) =X

p,q

Vp,q(fp, fq) siendo Vp,q(fp, fq) = | |fp− fq| − |Ip− Iq| |

donde p, q van recorriendo las posibles parejas de p´ıxeles vecinos, significando esto que ambos est´an uno a la derecha del otro, o uno encima del otro. En nuestro ejemplo, el valor de la energ´ıa para las segmentaciones 7 y 8 es el m´as bajo, as´ı que cualquiera de estas dos segmentaciones es ´optima.

(12)

4 Proyecto Fin de Carrera

Cuadro 1: Comparativa de tres energ´ıas

Segmentaciones Energ´ıa 1 Energ´ıa 2 Energ´ıa 3 1 1

1 1 1 1,01 1,04 2,05

1 1

2 0 1 2,01 2,06 4,07

1 0

3 1 1 0,97 1,45 2,42

0 1

4 1 1 1,03 2 3,03

1 1

5 1 0 2,01 2 4,01

0 1

6 0 1 2,03 2,98 5,01

0 0

7 1 1 0,99 1,02 2,01

1 1

8 0 0 3,01 1,02 4,03

1 0

9 1 0 1,97 2,98 4,95

0 1

10 1 0 2,03 2,96 4,99

1 0

11 0 1 1,97 2,96 4,93

0 0

12 0 1 1,99 2 3,99

1 0

13 0 0 2,97 2 4,97

0 1

14 0 0 3,03 1,94 4,97

0 0

15 1 0 1,99 2,06 4,05

0 0

16 0 0 2,99 1,04 4,03

(13)

Energ´ıa 3. El valor de la energ´ıa para cada segmentaci´on f se obtiene como suma de las dos energ´ıas anteriores:

E(f) =X

p

Vp(fp) +X

p,q

Vp,q(fp, fq)

En nuestro ejemplo, el valor de la energ´ıa para la segmentaci´on 7 es el m´as bajo.

(14)
(15)

2. Grafos

2.1. ¿Qu´ e es un grafo?

Un grafo es un par G = (V, E) de conjuntos tal que cada elemento de E es un subconjunto formado por dos elementos de V.

Los elementos de V son los v´ertices o nodos del grafo.

Los elementos de E son las aristas.

La arista {p,q} normalmente se denota por pq (´o qp). Dos v´ertices p, q ∈ V son adyacentes o vecinos en G si pq ∈ E.

1

3

2

4

5

6

7

Figura 2: V = {1, 2, 3, 4, 5, 6, 7} y E = {{1, 2}, {2, 4}, {4, 5}, {4, 6}, {4, 7}, {6, 7}}.

2.2. Caminos

Dado un grafo (V, E), un camino es un nuevo grafo P = (V0, E0) con V0 = {x0, x1, ..., xk} ⊂ V y E0 = {x0x1, x1x2, ..., xk−1xk} ⊂ E, donde los xi son todos distintos.

Se dice que los v´ertices x0y xk est´an unidos por el camino P , o que son los v´ertices terminales de P . La longitud del camino es su n´umero de aristas. Un camino se nota por sus v´ertices, es decir, P = x0x1...xk.

(16)

8 Proyecto Fin de Carrera

1

3

2

4

5

6

7

Figura 3: Camino P = 12467.

2.3. Grafos dirigidos

Un grafo dirigido es un par G = (V, E) de conjuntos tal que los elementos de E son pares ordenados del conjunto de v´ertices V , es decir, E ⊂ V × V . Intuitivamente, un grafo dirigido es un grafo en el que se ha establecido una direcci´on en cada arista. En un grafo dirigido las aristas se notan como pares ordenados, es decir, por (p,q), significando ´esto que la arista est´a dirigida de p a q.

1

3

2

4

5

6

7

Figura 4: V = {1, 2, 3, 4, 5, 6, 7} y E = {(1, 2), (2, 1), (2, 4), (5, 4), (4, 6), (7, 4), (6, 7)}.

2.4. Capacidades

Una funci´on de capacidades de un grafo G = (V, E) es una aplicaci´on c : E → R+∪ {+∞}

O sea, a cada arista e ∈ E se le asigna una capacidad no negativa c(e). Una interpretaci´on de esto podr´ıa considerar a las aristas como tuber´ıas, y la capacidad podr´ıa medir el ´area de la secci´on trasversal de cada tuber´ıa.

(17)

2.5. Redes

Una red es un grafo con capacidades. M´as formalmente, es un grafo dirigido G = (V, E) al que se le a˜naden dos v´ertices fijos s,t ∈ V y una funci´on de capacidades

c : E → R+∪ {+∞}

Se nota por (G, s, t, c).

Los v´ertices s y t se denominan fuente y sumidero respectivamente y nos referimos a ellos como los v´ertices terminales. En una red se distinguen dos tipos de aristas: las aristas terminales y las no terminales.

Arista terminal: uno de sus v´ertices es un v´ertice terminal, s ´o t.

Arista no terminal: ninguno de sus v´ertices es terminal.

s

0

1

2

3

4

t 5

3 7

1 3

3 1

2 6

5 2

9

Figura 5: Ejemplo de una red.

Aunque grafo y red son conceptos distintos, en muchas ocasiones, cuando no hay lugar a dudas, se habla de grafo en lugar de red.

2.6. Corte de una red

Un corte en una red (G, s, t, c) consiste en separar todos los v´ertices en dos subcon- juntos, S y T, de modo que:

V = S ∪ T S ∩ T = ∅ s ∈ S t ∈ T

(18)

10 Proyecto Fin de Carrera

Los cortes de una red se notan indicando los dos subconjuntos S y T . Escribimos entonces C = (S, T ).

En la Figura 6 se muestra el corte en la red anterior definido por S = {s, 0, 1} y T = {t, 2, 3, 4}. Para indicar el corte utilizamos una l´ınea discontinua que pasa por encima de las aristas dirigidas con primer v´ertice en S y segundo v´ertice en T.

s

0

1

2

3

4

t 5

3 7

1 3

3 1

2 6

5 2

9

Figura 6: Corte en una red definido por S = {s, 0, 1} y T = {t, 2, 3, 4}.

El n´umero de cortes de una red con N v´ertices no terminales es 2N. En el ejemplo de la Figura 6 hay 25 = 32 posibles cortes.

2.7. Coste de un corte. Corte m´ınimo

Se denomina coste del corte C = (S, T ) a

|C| = c(S, T ) = X

p∈S,q∈T

c(p, q),

es decir, es la suma de las capacidades de las aristas orientadas (p, q) donde p ∈ S y q ∈ T.

Por ejemplo, el coste del corte de la Figura 6 es 3 + 1 + 2 + 1 + 3 = 10.

En una red, hablaremos de corte m´ınimo para referirnos al corte con menor coste, de entre todos los posibles cortes. Como se ver´a posteriormente, el corte m´ınimo del grafo de la Figura 5 es el definido por S = {s, 0, 1} y T = {t, 2, 3, 4} representado en la Figura 6.

2.8. Flujo en una red

Un flujo en una red (G, s, t, c) es una funci´on F : E → [0, +∞)

(19)

verificando las siguientes condiciones:

El flujo que pasa por cada arista e tiene que ser menor o igual que su capacidad:

F (e) ≤ c(e) para toda arista e.

Para todo v´ertice x, el flujo entrante coincide con el flujo saliente (v´ease la Figura 7):

X

y

F (y, x) =X

z

F (x, z) para todo v´ertice x.

x

Figura 7: Aristas entrantes y salientes del v´ertice x.

Ya hemos mencionado como visualizar una red en t´erminos de un sistema de tuber´ıas, donde la capacidad de una arista ser´ıa el caudal m´aximo que soporta la tuber´ıa. Igualmente pude pensarse en un entramado de autopistas, con capacidades en funci´on del n´umero de carriles. Podr´ıamos hablar as´ı del flujo de veh´ıculos, y del flujo m´aximo de veh´ıculos que soporta el tr´afico en dichas autopistas.

En la Figura 8 se representa un flujo sobre el grafo anterior. En cada arista aparecen dos valores separados por una barra a/b, que indican el flujo a y la capacidad b de la arista correspondiente. Por supuesto, debe ser a < b.

2.9. El valor de un flujo. Flujo m´ aximo

Se denomina valor total de un flujo F al flujo saliente de la fuente, que coincide con el flujo entrante al sumidero:

F (s, V ) =X

x∈V

F (s, x) =X

x∈V

F (x, t) = F (V, t).

(20)

12 Proyecto Fin de Carrera

s

0

1

2

3

4

t 3/5

2/3 4/7

1/1 0/3

3/3 1/1

2/2 3/6

2/5 2/2

7/9

Figura 8: Flujo en una red.

El valor de un flujo F se denota por |F |. Por ejemplo, el valor del flujo representado en la Figura 8 es nueve.

En una red, hablaremos de flujo m´aximo cuando el valor de ´este sea m´aximo pasa esa red. Puede haber muchos flujos m´aximos, que tendr´an todos en com´un su valor de flujo.

En el ejemplo de red mostrado en la Figura 9, est´a representado un flujo m´aximo. Su valor de flujo es 10.

s

0

1

2

3

4

t 3/5

3/3 4/7

1/1 0/3

3/3 1/1

2/2 4/6

2/5 2/2

8/9

Figura 9: Flujo m´aximo en una red.

Al considerar la analog´ıa entre una red y un sistema de tuber´ıas, donde las capacidades de las aristas se corresponden con el caudal m´aximo de fluido que puede circular por la correspondiente tuber´ıa, ¿cu´al es la mayor cantidad de fluido que podemos transportar desde la fuente al sumidero respetando las restricciones que marcan las capacidades? Este es el problema consistente en encontrar el flujo m´aximo (max-flow). El valor de este flujo ser´ıa la cantidad de flujo que puede entrar por el nodo fuente y salir por el nodo sumidero.

(21)

2.10. El coste del m´ınimo corte es el valor del flujo m´ aximo

El Teorema de Ford y Fulkerson establece que el problema de m´aximo flujo en un grafo es equivalente al problema de m´ınimo corte: el coste del corte m´ınimo coincide con el valor del flujo m´aximo.

Se han desarrollado algoritmos conocidos como min-cut/max-flow de resoluci´on en tiempo polinomial. Uno de ellos, debido a Boykov y Kolmogorov [3], se estudia posterior- mente.

2.11. ¿Qu´ e es una red residual?

Si una red est´a definida por (G, s, t, c), y F es un flujo en la red, se define la red residual asociada como (GF, s, t, cF), donde:

1. GF es un grafo, denominado grafo residual, definido como GF = (V, EF), siendo EF = V × V.

2. cF es la capacidad residual en una arista (p, q) y se define como el m´aximo flujo adicional que puede ir de p a q usando las aristas (p, q) y (q, p).

En la Figura 10 se muestra la red residual para el flujo definido en la Figura 8.

s

0

1

2

3

4

t 2

1 3

0 1 3

1

2 0

1 0 3 2

3

2 3

0

2

Figura 10: Red residual para el flujo definido en la Figura 8.

(22)
(23)

3. Relaci´ on entre Energ´ıas y Grafos

3.1. Imagen y grafo

Una pantalla Ω est´a formada por p´ıxeles p. La imagen I la constituyen estos p´ıxeles p junto con un nivel de gris para cada p´ıxel Ip.

I1 I2 I3

I4 I5 I6

I7 I8 I9

A partir de la imagen I construimos un grafo G = (V, E), considerando cada p´ıxel de la imagen como un nodo o v´ertice del grafo, y a˜nadiendo dos v´ertices extra s y t, as´ı que V = Ω ∪ {s, t}.

s

t

v1 v2 v3

v4 v5 v6

v7 v8 v9

Figura 11: V´ertices del grafo asociado a una imagen formada por 9 p´ıxeles.

Recordar que s y t son los llamados v´ertices terminales. Se distinguen dos tipos de aristas: las aristas terminales y las no terminales.

Arista terminal ´o t-link: uno de sus extremos es un v´ertice terminal s ´o t.

Arista no terminal ´o n-link: ninguno de sus extremos es un v´ertice terminal.

3.2. Segmentaci´ on binaria y corte de un grafo

Las segmentaciones binarias de la imagen se corresponden exactamente con los cortes del grafo (hay un corte por cada segmentaci´on y viceversa).

(24)

16 Proyecto Fin de Carrera s

t

v1 v2 v3

v4 v5 v6

v7 v8 v9

Figura 12: Grafo asociado a una imagen. Se han omitido alguna de las aristas t-link.

Toda segmentaci´on binaria f, define un corte C(S, T ) en el grafo de modo que, si vi

es el v´ertice correspondiente al p´ıxel pi, tenemos

f(pi) = 1 ⇔ vi ∈ T f(pi) = 0 ⇔ vi ∈ S

Dada una segmentaci´on f, el corte correspondiente se denota por Cf. Rec´ıprocamente, si C es un corte, la segmentaci´on correspondiente se denota por fC. Esquem´aticamente:

Segmentaci´on f ⇔ Corte Cf

Corte C ⇔ Segmentaci´on fC

As´ı, por ejemplo, dada la imagen I definida anteriormente, una segmentaci´on de la misma puede ser

0 0 0

0 1 0

1 1 1

que se corresponde con el corte en el grafo de la Figura 13.

El n´umero de posibles segmentaciones de la imagen I es 2N, siendo N el n´umero de p´ıxeles. ´Este es el mismo n´umero de cortes posibles en el grafo.

3.3. Energ´ıas representables por un grafo

Dadas una imagen I y una energ´ıa E

E : {0, 1}N → R,

(25)

s

t

v1 v2 v3

v4 v5 v6

v7 v8 v9

Figura 13: Corte en el grafo correspondiente al ejemplo de segmentaci´on.

construimos una red (G, s, t, c). La funci´on de capacidades debe definirse de modo que, para cualquier segmentaci´on f ∈ {0, 1}N, el valor de la energ´ıa E(f) coincida con el coste del corte correspondient Cf, salvo una constante. O sea,

E(f) = K + |Cf|.

Es decir, es lo mismo calcular la energ´ıa de una segmentaci´on que calcular el coste del corte correspondiente, salvo el valor de esta constante.

Como ejemplo, consideremos una imagen con dos p´ıxeles I1 I2

y la energ´ıa definida por la tabla

p1\p2 0 1

0 10 14

1 8 9

Veamos que esta energ´ıa est´a representada por el grafo de la Figura 14.

La tabla 2 demuestra que el grafo representa a la energ´ıa, siendo 0 el valor de la constante K de la definici´on.

Los cuatro posibles cortes del grafo est´an representados en la Figura 15.

3.4. ¿C´ omo son las energ´ıas que se pueden representar por grafos?

Las energ´ıas que se utilizan en la segmentaci´on de im´agenes son de la forma X

p

Vp(fp) +X

p,q

Vp,q(fp, fq).

(26)

18 Proyecto Fin de Carrera

s

t

4 5

1 2

8 2

v1 v2

Figura 14: Grafo que representa la energ´ıa anterior.

E(f) Segmentaci´on Corte |C|

10 (0,0) S = {s, 1, 2}, T = {t} 10 14 (0,1) S = {s, 1}, T = {t, 2} 14

8 (1,0) S = {s, 2}, T = {1, t} 8 9 (1,1) S = {s}, T = {t, 1, 2} 9

Cuadro 2: Energ´ıa de una segmentaci´on y el coste del corte correspondiente.

s

t

4 5

1 2

8 2

v1 v2

C1

C2 C3

C4

Figura 15: Cortes en el grafo de la Figura 14.

Los t´erminos Vp indican la preferencia de etiqueta del p´ıxel p y est´an basados en la intensidad. Los t´erminos Vp,q indican la interacci´on entre p´ıxeles vecinos [2], [1].

Si cada uno de los t´erminos de la energ´ıa puede representarse por grafos, la energ´ıa vendr´a representada por el grafo con capacidades igual a la suma de las capacidades parciales.

(27)

3.4.1. T´erminos Vp

Los t´erminos dependientes de un ´unico p´ıxel, Vp, son siempre representables por grafos.

S´olo se tienen aristas t-link, siendo sus capacidades (Figura 19) c(s, p) = m´ax{0, Vp(1) − Vp(0)}, c(p, t) = m´ax{0, Vp(0) − Vp(1)}.

s

t p

m´ax{Vp(1) − Vp(0), 0}

m´ax{Vp(0) − Vp(1), 0}

Figura 16: Grafo asociado al t´ermino de la energ´ıa Vp. En efecto:

Si Vp(1) ≤ Vp(0),

• El coste del corte definido por los conjuntos S = {s} y T = {t, p} es 0. El valor de la energ´ıa para la segmentaci´on correspondiente a este corte (fp = 1) es Vp(1).

• El coste del corte definido por los conjuntos S = {s, p} y T = {t} es Vp(0) − Vp(1). El valor de la energ´ıa para la segmentaci´on correspondiente a este corte (fp = 0) es Vp(0).

Entonces, Vp(f) = K + |Cf| para toda segmentaci´on con K = Vp(1)).

Si Vp(1) ≥ Vp(0),

• El coste del corte definido por los conjuntos S = {s} y T = {t, p} es Vp(1) − Vp(0) . El valor de la energ´ıa para la segmentaci´on correspondiente a este corte (fp = 1) es Vp(1).

• El coste del corte definido por los conjuntos S = {s, p} y T = {t} es 0. El valor de la energ´ıa para la segmentaci´on correspondiente a este corte (fp = 0) es Vp(0).

(28)

20 Proyecto Fin de Carrera

Entonces, Vp(f) = K + |Cf| para toda segmentaci´on con K = Vp(0).

3.4.2. T´erminos Vp,q

Los t´erminos de la energ´ıa dependientes de dos p´ıxeles, Vp,q, no siempre son representa- bles por grafos. Kolmogorov y Zabih [4] estudian las condiciones que deben cumplir estos t´erminos para ser representables, demostrando que la condici´on necesaria y suficiente es que sea submodular. Esto se traduce en

V (0, 0) + V (1, 1) ≤ V (0, 1) + V (1, 0).

Una forma sencilla de comprobarlo es escribir la energ´ıa Vp,q de la forma Vp,q(fp, fq) = a0+ apfp+ aqfq+ afpfq.

Los coeficientes a0, ap, aq y a se obtienen de las ecuaciones





V (0, 0) = a0

V (0, 1) = a0+ aq

V (1, 0) = a0+ ap

V (1, 1) = a0+ ap+ aq+ a, de donde se obtiene





a0 = V (0, 0)

aq= V (0, 1) − V (0, 0) ap = V (1, 0) − V (0, 0)

a = V (1, 1) + V (0, 0) − V (0, 1) − V (1, 0).

s

t

p −a q

−a

Figura 17: Representaci´on por un grafo del t´ermino afpfq, con a ≤ 0.

Los t´erminos apfp y aqfq de Vp,q dependen cada uno de ellos de un s´olo p´ıxel y, como se ha visto, se pueden representar por grafos con aristas t-link. El t´ermino que depende

(29)

de los dos p´ıxeles, afpfq, es representable por grafos si y s´olo si a ≤ 0, con capacidades (v´ease la Figura 17 en la p´agina anterior):

c(p, q) = −a, c(q, t) = −a.

Observar que la condici´on

a = V (1, 1) + V (0, 0) − V (0, 1) − V (1, 0) ≤ 0 es equivalente a la condici´on de submodularidad.

Ejemplo

Consideramos la energ´ıa definida para una imagen con dos p´ıxeles vista al inicio de la secci´on:

p\q 0 1

0 10 14

1 8 9

Al ser a = −3 ≤ 0, es una funci´on submodular y por lo tanto representable por grafos.

Siguiendo el procedimiento descrito, un grafo lo podemos obtener de la siguiente forma.

Se tiene: 





a0 = E(0, 0) = 10,

ap = E(1, 0) − E(0, 0) = −2, aq = E(0, 1) − E(0, 0) = 4, a = −3.

Luego,

E(fp, fq) = 10 − 2fp+ 4fq− 3fpfq.

Al ser a = −3 ≤ 0, cada uno de los t´erminos se puede representar por un grafo, siendo la suma de todos ellos un grafo que representa a la energ´ıa E (Figura 18).

En la tabla 3 puede comprobarse esta afirmaci´on. La constante K de la definici´on de energ´ıa representable por grafos es K = 5.

(30)

22 Proyecto Fin de Carrera

E(fi) Segmentaci´on Corte |C|

10 (0,0) S = {s, 1, 2}, T = {t} 5 14 (0,1) S = {s, 1}, T = {t, 2} 9

8 (1,0) S = {s, 2}, T = {1, t} 3 9 (1,1) S = {s}, T = {t, 1, 2} 4

Cuadro 3: Segmentaciones de una imagen y cortes del grafo.

s

t p

2

+

s

t p

4

+

s

t

p 3 q

3

=

s

t

p1 p2

4 3

3 2

Figura 18: Construcci´on del grafo asociado a la energ´ıa.

3.4.3. Energ´ıas de la tabla 1

En la primera secci´on comparamos tres energ´ıas diferentes:

(31)

Energ´ıa 1: los t´erminos

Vp(fp) = |fp− Ip|

siempre son representables por grafos, al ser t´erminos que dependen de un solo p´ıxel.

s

t p

Vp(1) = 1 − Ip

Vp(0) = Ip

Figura 19: Grafo asociado al t´ermino de la energ´ıa Vp(fp) = |fp− Ip|.

Energ´ıa 2: los t´erminos

Vpq(fp, fq) = | |fp− fq| − |Ip− Iq||

no son siempre representables por grafos. La energ´ıa est´a definida por

p\q 0 1

0 |Ip− Iq| 1 − |Ip− Iq| 1 1 − |Ip− Iq| 1 − |Ip− Iq|

La condici´on de submodularidad, imprescindible para que una energ´ıa sea repre- sentable por grafos, es:

a = V (1, 1) + V (0, 0) − V (0, 1) − V (1, 0) ≤ 0 En nuestro caso,

a = 4|Ip − Iq| − 2 ≤ 0

con lo que, para que la energ´ıa sea representable por un grafo tiene que cumplir que

|Ip− Iq| ≤ 1 2,

(32)

24 Proyecto Fin de Carrera

para todo par de p´ıxeles vecinos p y q. Como esta condici´on no se cumple siempre, la energ´ıa 2 no es represtable por grafos y no podemos utilizar la t´ecnica de m´ınimo corte presentada.

Energ´ıa 3: no es representable por grafos por no serlo la energ´ıa 2.

(33)

4. El algoritmo de Boykov/Kolmogorov

4.1. Objetivo

La segmentaci´on de im´agenes se basa en la optimizaci´on de una funci´on de coste o energ´ıa. Cuando estas energ´ıas pueden representarse mediante grafos, cada segmentaci´on de la imagen se corresponde con una partici´on del conjunto de v´ertices del grafo, siendo la partici´on o corte de coste m´ınimo la que minimiza la energ´ıa, y por lo tanto proporciona la segmentaci´on buscada.

Los algoritmos de partici´on s/t de grafos, como el desarrollado por Boykoy/Kolmogorov objeto de nuestro estudio, proporcionan una segmentaci´on binaria de la imagen, es decir, la separaci´on objeto/fondo. Estos algoritmos buscan el corte de coste m´ınimo, a trav´es del m´aximo flujo.

Vamos a tratar de explicar el algoritmo desarrollado por Yuri Boykov y Vladimir Kolmogorov bas´andonos en su art´ıculo de referencia [3], usando como hilo conductor el grafo de la Figura 20:

s

0

1

2

3

4

t 5

3 7

1 3

3 1

2 6

5 2

9

Figura 20: Grafo ejemplo.

4.2. Inputs

Matriz B de capacidades de las aristas t-link.

(34)

26 Proyecto Fin de Carrera

B s t

0 5

1 7

2 3

3 2

4 9

Matriz A de capacidades de las aristas n-link.

A 0 1 2 3 4

0 3 3

1 1 1 2

2 6

3 5

4

4.3. Outputs

Valor de Flujo m´aximo.

Corte con coste m´ınimo: etiquetado de cada nodo (0 o 1).

4.4. Definiciones involucradas en el algoritmo

4.4.1. Arboles S y T´

Seg´un la terminolog´ıa b´asica del algoritmo de Boykov, en un grafo, se mantienen dos

´arboles no superpuestos S y T , con ra´ıces en los nodos s y t.

En la Figura 21 el ´arbol S est´a formado por el nodo ra´ız s y los nodos 0, 1 y 2 y tanto los nodos como las aristas que lo componen est´an resaltados en rojo. El ´arbol T est´a formado por el nodo ra´ız t y los nodos 3,4. Tanto los nodos como las aristas que lo componen est´an resaltados en color verde.

En el ´arbol S, el sentido de la arista va de padre a hijo. En el ´arbol T , el sentido de la arista va de hijo a padre (para seguir lo marcado por el grafo).

(35)

s

0

1

2

3

4

t 5

3 7

1 3

3 1

2 6

5 2

9

Figura 21: ´Arboles S (en rojo) y T (en verde) en el grafo.

4.4.2. Nodos libres

Todos los nodos del grafo que no est´an en los ´arboles S y T son llamados nodos libres.

En la figura el nodo 1 es un nodo libre.

s

0

1

2

3

4

t 5

3 7

1 3

3 1

2 6

5 2

9

Figura 22: ´Arboles S (en rojo) y T (en verde) y nodos libres (en negro).

4.4.3. Nodos activos y pasivos

Los nodos que forman parte de un ´arbol pueden ser activos o pasivos. Los nodos activos representan el borde exterior en cada ´arbol, son los nodos por los que el ´arbol puede crecer. Los nodos pasivos representan la cara interna, por ellos el ´arbol no puede crecer.

De ahora en adelante si los nodos de un ´arbol son activos est´an representados por un c´ırculo de puntos del color del ´arbol al que pertenecen.

En la Figura 23, el ´arbol S est´a formado por los v´ertices {s, 0, 1, 2}, en el que el nodo 1 es un nodo activo, mientras que los nodos s, 0 y 2 son nodos pasivos. En el ´arbol T , los nodos 3 y 4 son activos.

(36)

28 Proyecto Fin de Carrera

s

0

1

2

3

4

t 5

3 7

1 3

3 1

2 6

5 2

9

Figura 23: Nodos activos y pasivos.

4.4.4. Etapas del algoritmo

El algoritmo iterativamente repite las siguientes tres etapas:

Etapa de Crecimiento: Se realizan las siguientes acciones:

Los ´arboles S y T se expanden. Los nodos activos exploran nodos vecinos a trav´es de aristas de capacidad positiva con el objetivo de a˜nadirlos a los ´arboles S ´o T . Solamente se a˜naden cuando los nodos explorados son nodos libres, pasando a con- vertirse en nodos activos cuando se incorporan al ´arbol S ´o T . Cuando todos los nodos vecinos de un nodo activo son explorados, dicho nodo activo se convierte en pasivo.

La etapa de crecimiento termina cuando, en nuestra exploraci´on de nodos veci- nos, encontramos un arco cuyo nodo origen pertenece al ´arbol S y el nodo destino pertenece al ´arbol T , formando un camino de s a t.

Etapa de Camino: se parte del camino encontrado en la etapa de crecimiento ante- rior. En esta etapa pasamos la mayor cantidad de flujo a trav´es del camino encontrado.

Algunas aristas pueden llegar a estar saturadas, por lo que algunos nodos pueden llegar a estar hu´erfanos, dando lugar a la ´ultima fase de nuestro algoritmo y que comentamos a continuaci´on, la adopci´on.

Etapa de Adopci´on: se intenta encontrar otro padre v´alido para cada hu´erfano dentro de los ´arboles originales de b´usqueda S ´o T al que pertenec´ıa el nodo antes de quedarse hu´erfano. Los nuevos padres deben pertenecer a los mismos ´arboles de b´usqueda S o T del hu´erfano. As´ı mismo el padre debe estar conectado a trav´es de un arco no saturado. Si no es posible encontrar un nuevo padre, se declara nodo libre. Se declaran todos los nodos hijos como libres. La etapa termina cuando no quedan hu´erfanos, y por tanto, las estructuras de los ´arboles S y T se restauran.

(37)

Despu´es de completar la etapa de adopci´on el algoritmo vuelve a la etapa de crecimiento, y repite estas etapas iterativamente.

4.4.5. Final del algoritmo

El algorimo termina cuando los ´arboles S y T no pueden crecer m´as, es decir, no tienen nodos activos. Los ´arboles est´an separados por aristas saturadas.

Esto conlleva que se alcanza el flujo m´aximo. El correspondiente m´ınimo corte lo definen los nodos de los ´arboles S y T . Si quedan nodos libres, es decir, si alg´un v´ertice del grafo no est´a en alguno de los ´arboles, el coste m´ınimo se alcanza para m´as de un corte. En este caso el algoritmo asocia la etiqueta 0 a todos los nodos libres.

4.5. Orden de recorrido de nodos y arcos

Tomando como punto de partida las matrices A y B definidas anteriormente vamos a aclarar en qu´e orden se van a recorrer los nodos, y estando en cada nodo en qu´e orden se recorren los arcos que tienen como origen dicho nodo.

4.5.1. Orden de recorrido de los nodos

1. Todos los nodos activos pertenecientes al ´arbol S: se recorren los nodos activos pertenecientes al ´arbol S seg´un el orden determinado por la matriz B.

2. Todos los nodos activos pertenecientes al ´arbol T : se recorren los nodos activos pertenecientes al ´arbol T seg´un el orden determinado por la matriz B.

4.5.2. Orden de recorrido de los arcos

Para cada nodo activo se recorren todos los arcos cuyo origen sea dicho nodo en el orden determinado de la siguiente forma. Tomamos como base la matriz A. Para cada columna de dicha matriz, si existen elementos de dicha columna con valor distinto de 0, se forma el arco de origen el ´ındice de la fila del correspondiente elemento y como destino el

´ındice de la columna que estamos recorriendo. As´ı por ejemplo, en la matriz A de nuestro ejemplo, si recorremos la columna 1, tenemos como elemento distinto de cero la capacidad 3 correspondiente al arco a01. Una vez recorridas todas las columnas de esta matriz A se recuperan los arcos siguiendo el m´etodo LIFO (´ultimo en entrar, primero en salir).

(38)

30 Proyecto Fin de Carrera

4.6. Proceso del algoritmo

El ejemplo que explicamos es el reflejado en la imagen 20:

1. Situaci´on Inicial:

Arboles S = {s}, T = {t}´ Nodos libres {0, 1, 2, 3, 4}.

Nodos activos en S: {s}, nodos activos en T : {t}

Nodos pasivos en S: {}, nodos pasivos en T : {}

2. Etapa de crecimiento: se recorre el ´arbol S. Como el nodo s es activo, el ´arbol S crece por el nodo s a˜nadiendo los nodos 0,1 y 2 que pasan a ser activos e hijos de s.

El nodo s pasa a ser pasivo.

Se recorre el ´arbol T . Como el nodo t es activo, el ´arbol T crece por el nodo t a˜nadiendo los nodos 3 y 4 que pasan a ser activos e hijos de t. El nodo t pasa a ser pasivo. Se tiene la siguiente situaci´on, que queda reflejada en la Figura 24.

Arboles S = {s, 0, 1, 2}, T = {t, 3, 4}´ Nodos libres {}.

Nodos activos en S: {0, 1, 2}, nodos activos en T : {3, 4}

Nodos pasivos en S: {s}, nodos pasivos en T : {t}

ARBOL NODO PADRE TIPO TR_CAP ARCO R_CAP

S 0 TERMINAL ACTIVO 5 a03 3

a01 3

S 1 TERMINAL ACTIVO 7 a14 2

a13 1

a12 1

S 2 TERMINAL ACTIVO 3 a24 6

T 3 TERMINAL ACTIVO -2 a34 5

T 4 TERMINAL ACTIVO -9 -

3. Etapa de crecimiento: se empieza a recorrer el ´arbol S por el nodo 0. A trav´es del arco a03 (con capacidad positiva de valor 3) llegamos al nodo 3. Como el nodo 3 pertenece al ´arbol T hemos encontrado un camino. Este camino queda definido yendo de padre a hijo por el ´arbol S, desde el nodo terminal s hasta el nodo 0, y de hijo a padre por el ´arbol T , desde el nodo 3 hasta el nodo terminal t. Es decir, el camino encontrado que une los ´arboles de b´usqueda es:

s−→ 05 −→3 3−→ t2

(39)

s

0

1

2

3

4

t 5

3 7

1 3

3 1

2 6

5 2

9

Figura 24: Etapa crecimiento.

En la Figura 25 se muestra la situaci´on actual de los ´arboles en el grafo y el camino de s a t encontrado.

s

0

1

2

3

4

t 5

3 7

1 3

3 1

2 6

5 2

9

Figura 25: Camino s −→ 05 −→3 3−→ t.2

4. Etapa camino: el flujo m´aximo que es posible pasar de S a T a trav´es de este camino tiene el valor 2. Se disminuye 2 del valor de las capacidades iniciales y se crea el grafo residual, que ser´ıa el mostrado en la imagen 26.

s

0

1

2

3

4

t 3

3 7

1 3

1

2 1

2 6

5 0

9

Figura 26: Grafo Residual (etapa 4).

5. Etapa adopci´on: despu´es de la etapa camino la capacidad de la arista que une el nodo ra´ız t con el nodo 3 es 0. Esto quiere decir que no es posible pasar flujo

(40)

32 Proyecto Fin de Carrera

desde el nodo ra´ız t al nodo 3 a trav´es de la arista inicial que los un´ıa. El nodo 3 es h´uerfano, dando paso a la fase de adopci´on. En esta fase de adopci´on se intenta encontrar un nuevo padre para el nodo 3 dentro del mismo ´arbol de b´usqueda T , y en nuestro ejemplo el nuevo padre es el nodo 4.

La situaci´on de los nodos y arcos despu´es de la fase adopci´on es la siguiente:

Arboles S = {s, 0, 1, 2}, T = {t, 3, 4}´ Nodos libres {}.

Nodos activos en S: {0, 1, 2}, nodos activos en T : {3, 4}

Nodos pasivos en S: {s}, nodos pasivos en T : {t}

ARBOL NODO PADRE TIPO TR_CAP ARCO R_CAP

S 0 TERMINAL ACTIVO 3 a03 1

a01 3

S 1 TERMINAL ACTIVO 7 a14 2

a13 1

a12 1

S 2 TERMINAL ACTIVO 3 a24 6

3 4 ACTIVO 0 a34 5

a30 2

T 4 TERMINAL ACTIVO -9 -

El ´arbol T mantiene los mismos nodos que en el paso anterior, pero el padre del nodo 3 ahora es 4, no t como antes. En la Figura 27 se muestra la situaci´on actual del grafo.

s

0

1

2

3

4

t 3

3 7

1 3

1

2 1

2 6

5 0

9

Figura 27: Etapa adopci´on (etapa 5).

6. Etapa crecimiento: se contin´ua recorriendo el ´arbol S por el nodo 0. Se comienza de nuevo el recorrido a trav´es del arco a03 (con capacidad positiva de valor 1) y llegamos al nodo 3. Como el nodo 3 pertenece al ´arbol T hemos encontrado de nuevo un camino. Este camino queda definido yendo de padre a hijo por el ´arbol S, desde el nodo terminal s hasta el nodo 0, y de hijo a padre por el ´arbol T , desde el

(41)

nodo 3 hasta el nodo terminal t. Es decir, el camino encontrado que une los ´arboles de b´usqueda es:

s−→ 03 −→1 3−→ 45 −→ t9

7. Etapa camino: el flujo m´aximo que es posible pasar de S a T tiene el valor 1.

Se disminuye 1 del valor de las capacidades iniciales y se obtiene el grafo residual mostrado en la Figura 28. El valor del flujo total es 3.

No quedan nodos hu´erfanos, por lo que no hay etapa de adopci´on.

s

0

1

2

3

4

t 2

3 7

1 3

0

3 1

2 6

1 4

0

8

Figura 28: Grafo residual (etapa 7).

La situaci´on de los nodos y arcos es la siguiente:

Arboles S = {s, 0, 1, 2}, T = {t, 3, 4}´ Nodos libres {}.

Nodos activos en S: {0, 1, 2}, nodos activos en T : {3, 4}

Nodos pasivos en S: {s}, nodos pasivos en T : {s}

ARBOL NODO PADRE TIPO TR_CAP ARCO R_CAP

S 0 TERMINAL PASIVO 2 a03 0

a01 3

S 1 TERMINAL ACTIVO 7 a14 2

a13 1

a12 1

S 2 TERMINAL ACTIVO 3 a24 6

3 4 ACTIVO 0 a34 4

a30 3

T 4 TERMINAL ACTIVO -8 a43 1

T

8. Etapa crecimiento: se sigue recorriendo el ´arbol S por el nodo 0. Se empieza de nuevo por el arco a03. Como la capacidad del arco a03 es 0 no tiene lugar ninguna acci´on.

(42)

34 Proyecto Fin de Carrera

9. Etapa crecimiento: se contin´ua el recorrido por los arcos con origen el nodo 0. En este caso se recorre el arco a01. Como el nodo 1 pertenece al ´arbol S no tiene lugar ninguna acci´on. El nodo 0 pasa a pasivo.

10. Etapa crecimiento: se sigue recorriendo el ´arbol S por el nodo 1. A trav´es del arco a14 (con capacidad positiva de valor 2) llegamos al nodo 4. Como el nodo 4 pertenece al ´arbol T hemos encontrado un camino como en casos anteriores que une los ´arboles de b´usqueda S y T y es:

s−→ 17 −→2 4−→ t8

11. Etapa camino: el flujo m´aximo que es posible pasar de S a T tiene el valor 2. Se disminuye 2 del valor de las capacidades iniciales y se obtiene el grafo residual de la Figura 29. El valor total del flujo es 5.

s

0

1

2

3

4

t 2

3 5

1 3

0

3 1

0 6 2

1 4

0

6

Figura 29: Grafo residual (etapa 11).

No quedan nodos hu´erfanos por lo que no hay etapa de adopci´on. La situaci´on de los nodos y arcos es la siguiente:

Arboles S = {s, 0, 1, 2}, T = {t, 3, 4}´ Nodos libres {}.

Nodos activos en S: {1, 2}, nodos activos en T : {3, 4}

Nodos pasivos en S: {0}, nodos pasivos en T : {}

(43)

ARBOL NODO PADRE TIPO TR_CAP ARCO R_CAP

S 0 TERMINAL PASIVO 2 a03 0

a01 3

S 1 TERMINAL ACTIVO 5 a14 0

a13 1

a12 1

S 2 TERMINAL ACTIVO 3 a24 6

T 3 4 ACTIVO 0 a34 4

a30 3

T 4 TERMINAL ACTIVO -6 a43 1

a41 2

12. Etapa crecimiento: se contin´ua recorriendo el grafo por el nodo 1 a trav´es del arco a14. Como la capacidad es 0 no hace nada.

13. Etapa crecimiento: se contin´ua recorriendo el grafo por el nodo 1 a trav´es del arco a13 (con capacidad positiva de valor 1) y llegamos al nodo 3. Como el nodo 3 pertenece al ´arbol T hemos encontrado de nuevo un camino que une los ´arboles de b´usqueda S y T . Es

s−→ 15 −→1 3−→ 44 −→ t6

14. Etapa camino: El flujo m´aximo que es posible pasar de S a T tiene el valor 1. Se disminuye 1 del valor de las capacidades iniciales y se obtiene el grafo residual de la Figura 30. El valor del flujo total es 6.

s

0

1

2

3

4

t 2

3 4

1 3

0

3 0

1 0 6 2

2 3

0

5

Figura 30: Grafo residual (etapa 14).

No quedan hu´erfanos, por lo que no hay etapa de adopci´on y se pasa a la etapa de crecimiento. La situaci´on de los nodos y arcos es la siguiente.

Arboles S = {s, 0, 1, 2}, T = {t, 3, 4}´ Nodos libres {}.

Nodos activos en S: {1, 2}, nodos activos en T : {3, 4}

Nodos pasivos en S: {s, 0}, nodos pasivos en T : {t}

(44)

36 Proyecto Fin de Carrera

ARBOL NODO PADRE TIPO TR_CAP ARCO R_CAP

S 0 TERMINAL PASIVO 2 a03 0

a01 3

S 1 TERMINAL ACTIVO 4 a14 0

a13 0

a12 1

S 2 TERMINAL ACTIVO 3 a24 6

T 3 4 ACTIVO 0 a34 3

a30 3

a31 1

T 4 TERMINAL ACTIVO -5 a43 2

a41 2

15. Etapa crecimiento: se ha terminado de recorrer el nodo 1 y pasa a ser pasivo. Se contin´ua recorriendo el ´arbol S por el nodo 2 a trav´es del arco a24 (con capacidad positiva de valor 6) y llegamos al nodo 4. Como el nodo 4 pertenece al ´arbol T hemos encontrado de nuevo un camino que une los ´arboles de b´usqueda S y T . Es

s−→ 23 −→6 4−→ t5

16. Etapa camino: el flujo m´aximo que es posible pasar de S a T tiene el valor 3. Se disminuye 3 del valor de las capacidades iniciales y se obtiene el grafo residual de la Figura 31. El flujo total es 9.

s

0

1

2

3

4

t 2

0 4

1 3

0

3 0

1 0 3 2

3

2 3

0

2

Figura 31: Grafo residual (etapa 16)

17. Etapa adopci´on: El nodo 2 es hu´erfano y se intenta encontrar un nuevo padre para el nodo 2 dentro del ´arbol de b´usqueda S. El nuevo padre es el nodo 1. La situaci´on de los nodos y arcos despu´es de la fase de adopci´on es la siguiente y se muestra en la Figura 32:

Arboles S = {s, 0, 1, 2}, T = {t, 3, 4}´ Nodos libres {}.

(45)

Nodos activos en S: {2}, nodos activos en T : {3, 4}

Nodos pasivos en S: {s, 0, 1}, nodos pasivos en T : {t}

ARBOL NODO PADRE TIPO TR_CAP ARCO R_CAP

S 0 TERMINAL PASIVO 2 a03 0

a01 3

S 1 TERMINAL PASIVO 4 a14 0

a13 0

a12 1

S 2 1 ACTIVO 0 a24 3

T 3 4 ACTIVO 0 a34 3

a30 3

a31 1

T 4 TERMINAL ACTIVO -2 a43 2

a41 2

a42 3

s

0

1

2

3

4

t 2

0 4

1 3

0

3 0

1 0 3 2

3

2 3

0

2

Figura 32: Grafo residual y ´arboles S y T (etapa 17)

18. Etapa crecimiento: se contin´ua recorriendo el ´arbol S por el nodo 2 a trav´es del arco a24 (con capacidad positiva de valor 6) y llegamos al nodo 4. Como el nodo 4 pertenece al ´arbol T hemos encontrado de nuevo un camino que une los ´arboles de b´usqueda S y T . Es

s−→ 14 −→ 21 −→3 4−→ t2

19. Etapa camino: El flujo m´aximo que es posible pasar de S a T tiene el valor 1. Se disminuye 1 del valor de las capacidades iniciales y se obtiene el grafo residual de la Figura 33. El valor del flujo total es 10.

20. Etapa adopci´on: El nodo 2 es hu´erfano y se intenta encontrar un nuevo padre para el nodo 2 dentro del ´arbol de b´usqueda S. No se encuentra padre para el nodo 2 con lo que se convierte en nodo libre. (Figura 34)

(46)

38 Proyecto Fin de Carrera

s

0

1

2

3

4

t 2

0 3

0 1 3

0

3 0

1 0 2 2

4

2 3

0

1

Figura 33: Grafo residual (etapa 19).

s

0

1

2

3

4

t 2

0 3

0 1 3

0

3 0

1 0 2 2

4

2 3

0

1

Figura 34: Grafo residual (etapa 20).

21. Etapa crecimiento: se ha terminado de recorrer el ´arbol S. Se empieza a recorrer el ´arbol T desde el nodo 3, comenzando por el arco a34. Llega al nodo 4, pertenece a T y no hace nada.

22. Etapa crecimiento: se contin´ua recorriendo desde el nodo 3 por el arco a30. Tiene capacidad 0 con lo que no hace nada. El nodo 3 pasa a pasivo.

23. Etapa crecimiento: se recorre el ´arbol T desde el nodo 4, comenzando por el arco a43. Llega al nodo 3, pertenece a T con lo que no hace nada.

24. Etapa crecimiento: se contin´ua recorriendo el ´arbol T desde el nodo 4, comenzando por el arco a42. Llega al nodo 2, que como es un nodo libre pasa al ´arbol T , como nodo activo.

25. Etapa crecimiento: se ha terminado de recorrer el nodo 4, por lo que pasa a ser pasivo. A partir del nodo 2 no puede crecer m´as el ´arbol T , por lo que pasa a ser nodo pasivo.

26. El algoritmo termina al no quedar nodos activos. La situaci´on final puede verse en la Figura 35.

Referencias

Documento similar

En cuarto lugar, se establecen unos medios para la actuación de re- fuerzo de la Cohesión (conducción y coordinación de las políticas eco- nómicas nacionales, políticas y acciones

This section provides guidance with examples on encoding medicinal product packaging information, together with the relationship between Pack Size, Package Item (container)

Volviendo a la jurisprudencia del Tribunal de Justicia, conviene recor- dar que, con el tiempo, este órgano se vio en la necesidad de determinar si los actos de los Estados

[r]

[r]

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

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

De acuerdo con Harold Bloom en The Anxiety of Influence (1973), el Libro de buen amor reescribe (y modifica) el Pamphihis, pero el Pamphilus era también una reescritura y