MAC6903 - 2s20 - Processamento de Imagens usando Grafos

Introdução

Slides

Rotulação de componentes conexos e hierarquia de partições

Slides

Vários métodos de segmentação não supervisionada de imagens usando grafos, consideram um grafo esparso G(V, E), onde os vértices no conjunto V são os pixels e as arestas em E são definidas entre pixels vizinhos. Os pesos das arestas são dados por uma função de dissimilaridade entre as características dos pixels vizinhos (ex: magnitude do gradiente de intensidades), ou pela sua noção dual dada por uma função de afinidade/similaridade.

Uma partição do conjunto finito V é um conjunto P de subconjuntos disjuntos e não vazios de V, cuja união é V (isto é,  ∀X,Y ∈ P,   X ∩ Y = ∅ se X ≠ Y   e   ∪{X ∈ P} = V). Qualquer elemento de uma partição P de V é chamada de região de P. Se x é um elemento de V, existe uma única região de P que contém x; essa única região é denotada por [P]x. Dadas duas partições P e P' de um conjunto V, dizemos que P' é um refinamento de P se qualquer região de P' está incluída em uma região de P. Uma hierarquia (em V) é uma sequência H = (P0, ..., P) de partições de V tal que Pi-1 é um refinamento de Pi, para qualquer i ∈ {1, ..., ℓ}. Se H = (P0, ..., P) é uma hierarquia, o inteiro ℓ é chamado a profundidade de H. Uma hierarquia H = (P0, ..., P) é chamada de completa se P = {V} e se P0 contém todos os elementos individuais de V como regiões separadas (isto é, P0 = {{x} | x ∈ V}).

Para um dado grafo derivado da imagem, uma relação binária entre pixels contida no produto cartesiano V \times V que satisfaz as propriedades de reflexividade, simetria e transitividade, induz naturalmente uma segmentação da imagem, pois uma relação de equivalência permite particionar o grafo em classes de equivalência. Por exemplo, para um grafo não direcionado, considere a relação binária a \overset{\kappa}{\leadsto} b tal que existe um caminho interligando os pixels a e b, contendo apenas arestas com pesos abaixo de um dado limiar \kappa (isto é, ∃ um caminho \pi_{a \leadsto b} = \langle p_1, \ldots, p_n\rangle com a = p_1 e b = p_n, tal que \omega(p_i, p_{i+1}) < \kappa, para qualquer i \in \{1, \ldots, n-1\}).

  1. a \overset{\kappa}{\leadsto} a   (reflexividade)
  2. a \overset{\kappa}{\leadsto} b \implies b \overset{\kappa}{\leadsto} a   (simetria)
  3. a \overset{\kappa}{\leadsto} b e b \overset{\kappa}{\leadsto} c \implies a \overset{\kappa}{\leadsto} c   (transitividade)

As partições geradas por essa relação binária correspondem aos componentes conexos do grafo, após a remoção de todas as arestas com pesos maiores ou iguais à \kappa. Variando o parâmetro \kappa, é possível construir uma hierarquia das partições. Veja o exemplo abaixo:

image image image
(a) Grafo de imagem com vizinhança-4 (b) Partições para κ=3 (c) Partições para κ=4
image image
(d) Partições para κ=5 (e) Partições para κ=6

Esse procedimento para a criação de hierarquias tal como descrito acima é conhecido como hierarquia de zona quase plana (quasi-flat zone hierarchy [1]).

Dado um grafo G(V, E), uma partição de V é conexa (em G) se todas as suas regiões são conexas e uma hierarquia em V é conexa (em G) se todas as suas partições são conexas. Uma hierarquia conexa pode ser tratada de forma equivalente por meio de um grafo ponderado nas arestas, com w : E(G) → ℝ sendo a função de peso, tal como explicado na próxima seção.

Correspondência entre hierarquias e mapas de saliência

Vimos que qualquer grafo ponderado nas arestas induz uma hierarquia conexa de partições (chamada de hierarquia de zona quase plana). Nesta seção, abordamos o problema inverso, isto é, dada uma hierarquia conexa H, encontre um mapa w de modo que a hierarquia de zona quase plana para w é precisamente H. Veremos que os mapas de saliência (saliency maps) fornecem uma solução para este problema [1].

Seja P uma partição de V, o corte de P (em G), denotado por ϕG(P), é o conjunto de arestas de G formadas por dois vértices em regiões diferentes de P, isto é, ϕG(P) = {{x, y} ∈ E | [P]x ≠ [P]y }.

Seja H = (P0, ..., P) uma hierarquia em V. O mapa de saliência de H é o mapa ΦG(H) de E a {0, ..., ℓ} de modo que o peso de qualquer aresta u para ΦG(H) é o máximo valor λ para o qual u pertence ao corte de Pλ:

ΦG(H)(u) = max{λ ∈ {0, ..., ℓ}| u ∈ ϕG(Pλ)}

Por exemplo, considere o exemplo abaixo de uma hierarquia conexa H = (P0, ..., P) com ℓ=3 em um grafo de vizinhança-4:
image
Abaixo são mostradas as arestas pertencentes aos cortes ϕG(Pi) para cada uma das partições Pi da hierarquia para 0 ≤ i ≤ ℓ:
image
O mapa de saliência ΦG(H) resultante é mostrado abaixo:
image

[1] Hierarchical Segmentations with Graphs: Quasi-flat Zones, Minimum Spanning Trees, and Saliency Maps.
    Jean Cousty, Laurent Najman, Yukiko Kenmochi, Silvio Guimarães.
    Journal of Mathematical Imaging and Vision, volume 60, pages 479-502 (2018)

Transformada Imagem-Floresta (IFT)

Slides

Estrutura de dados da IFT

Slides

Filtragem Conexa por IFT

Slides (parte A)
Slides (parte B)

Árvore de componentes

Slides

Valores de extinção da árvore de componentes

image Max-tree com atributo de altura
tree_h
Valores de extinção nas folhas
tree_h_ex

image Max-tree com área dos vértices
tree_area
Max-tree com atributo de área (acumulada)
tree_areaac
Valores de extinção nas folhas
tree_area_ex

image Max-tree com volume dos vértices
tree_vol
Max-tree com atributo de volume (acumulado)
tree_volac
Valores de extinção nas folhas
tree_vol_ex
Artigo: Efficient computation of new extinction values from extended component tree

Max-tree toolbox

iamxt: Max-tree toolbox para processamento e análise de imagens

Superpixels por IFT

Slides

Artigos relacionados:

Transformada Imagem-Floresta Diferencial (DIFT)

Em algumas operações de processamento de imagens, tais como a segmentação interativa, é desejável calcular sequências de IFTs, mantendo fixas a função de custo e a relação de adjacência, porém, considerando sementes adicionais em conjuntos S_t, t=1,2, \ldots, n. Mais ainda, podemos remover árvores marcadas por pixels em conjuntos M_t, t=1,2,\ldots,n a cada iteração t.

A cada iteração t, os conjuntos S_t e M_t são informados e uma IFT é calculada de forma diferencial/incremental em relação a floresta da iteração anterior t-1. As árvores com pixels em M_t serão removidas e suas regiões disponibilizadas para a nova conquista por parte das raízes restantes e das novas sementes em S_t. Essas raízes são representadas por pixels das árvores não removidas que são adjacentes a pixels das árvores removidas. Estes pixels são denotados pixels de fronteira.

Artigos relacionados:

Corte em grafo generalizado

Slides

Fluxo Máximo/Corte Mínimo

Slides

Exemplo em filtragem: Para uma dada imagem binária I com ruído e imperfeições, desejamos obter uma imagem filtrada F. Considere a imagem I abaixo.

image

Os ruídos e imperfeições finas da imagem I resultam em uma elevada quantidade de pixels de borda. Logo, a fim de eliminar os ruídos devemos reduzir o número de transições preto/branco na imagem filtrada F. Isso pode ser formulado pela seguinte energia:

E = \sum_{(a,b)\in E} \lvert F(a) - F(b) \rvert.

A minimização da energia acima possui como soluções triviais imagens filtradas F de brilho constante. Portanto, devemos incluir um segundo termo que penaliza resultados divergentes em relação à imagem I:

E = \kappa \sum_{(a,b)\in E} \lvert F(a) - F(b) \rvert + \lambda \sum_{a \in {\cal D}_I} \lvert I(a) - F(a) \rvert.

A energia acima pode ser minimizada através do algoritmo do fluxo máximo/corte mínimo, utilizando o seguinte grafo no qual:

image

Variando os pesos \kappa e \lambda dos termos da energia temos diferentes soluções:
image image image image
\kappa=1 e \lambda=1 \kappa=2 e \lambda=1 \kappa=3 e \lambda=1 \kappa=5 e \lambda=1

Observe que a imagem filtrada resultante não pode ser obtida via filtragem conexa.

Transformada Imagem-Floresta Orientada (OIFT)

Slides

Artigo: Oriented Image Foresting Transform Segmentation by Seed Competition
Artigo: Image Segmentation by Oriented Image Foresting Transform: Handling Ties and Colored Images

Convexidade Geodésica em Estrela

Artigo: Geodesic Star Convexity for Interactive Image Segmentation
Artigo: Image Segmentation by Oriented Image Foresting Transform with Geodesic Star Convexity

Passeios aleatórios em grafos (Random Walks)

Monografia: Segmentação de imagens utilizando passeios aleatórios em grafos
Artigo: Random Walks for Image Segmentation
Artigo: Relaxed image foresting transforms for interactive volume image segmentation

Clusterização espectral (Spectral clustering)

Considere um grafo não direcionado com pesos nas arestas, representando uma medida de similaridade entre seus vértices.

image

Numerando os vértices do grafo podemos representá-lo pela sua matriz de afinidade \mathbf{A}.

image

\mathbf{A} = \begin{bmatrix} w_{11} & w_{12} & w_{13} & \dots & w_{1n} \\ w_{21} & w_{22} & w_{23} & \dots & w_{2n} \\ \hdotsfor{5} \\ w_{n1} & w_{n2} & w_{n3} & \dots & w_{nn} \end{bmatrix} = \begin{bmatrix} 0 & 2 & 0 & 2 & 0.1 & 0 & 0 & 0 & 0 \\ 2 & 0 & 5 & 3 & 0 & 0 & 0 & 0 & 0 \\ 0 & 5 & 0 & 2 & 0 & 0 & 0 & 0 & 0 \\ 2 & 3 & 2 & 0 & 0 & 0 & 0 & 0 & 0.1 \\ 0.1 & 0 & 0 & 0 & 0 & 1 & 3 & 0 & 1 \\ 0 & 0 & 0 & 0 & 1 & 0 & 4 & 2 & 0 \\ 0 & 0 & 0 & 0 & 3 & 4 & 0 & 2 & 4 \\ 0 & 0 & 0 & 0 & 0 & 2 & 2 & 0 & 1 \\ 0 & 0 & 0 & 0.1 & 1 & 0 & 4 & 1 & 0 \end{bmatrix} = image

Considere o problema de dividir o grafo em grupos de vértices de alta afinidade. Um grupo pode ser especificado por um vetor \mathbf{u} = [u_1 \ldots u_n]^T, no qual u_i representa o grau de pertinência do i-ésimo vértice ao conjunto.

Gostaríamos de maximizar o seguinte funcional de energia:

E(\mathbf{u}) = \mathbf{u}^T \mathbf{A} \mathbf{u} = \sum_i \sum_j u_i w_{ij} u_j
sob a restrição: \mathbf{u}^T \cdot \mathbf{u} = 1 \Rightarrow ||\mathbf{u}|| = 1

Dado que a matriz de afinidade é simétrica (w_{ij} = w_{ji}), ela admite uma base ortonormal (\mathbf{u_1}, \ldots , \mathbf{u_n}) de autovetores.
Logo, podemos reescrever \mathbf{u} na base de autovetores de \mathbf{A}:
\mathbf{u} = \sum_i c_i \mathbf{u_i}

Substituindo na equação, temos:
\mathbf{u}^T \mathbf{A} \mathbf{u} = (\sum_j c_j \mathbf{u_j})^T \mathbf{A} (\sum_i c_i \mathbf{u_i})
= (\sum_j c_j \mathbf{u_j}^T)(\sum_i c_i \mathbf{A} \mathbf{u_i})
= (\sum_j c_j \mathbf{u_j}^T)(\sum_i c_i \lambda_i \mathbf{u_i})
= \sum_j \sum_i (c_j c_i \lambda_i \mathbf{u_j}^T \mathbf{u_i})
Note que:
i \neq j \Rightarrow \mathbf{u_j}^T \cdot \mathbf{u_i} = 0
i = j \Rightarrow \mathbf{u_j}^T \cdot \mathbf{u_i} = 1.

Portanto temos:
\sum_j \sum_i (c_j c_i \lambda_i \mathbf{u_j}^T \mathbf{u_i}) = \sum_i (c_i^2 \lambda_i)

Note que a restrição ||\mathbf{u}|| = 1 pode ser reescrita como \sum c_i^2 = 1

Portanto, a energia corresponde a uma média ponderada dos autovalores da matriz de afinidade, com pesos c_i^2.
Dado que os autovalores são números reais, temos que o máximo valor da energia é obtido atribuindo-se peso total para o maior autovalor. Logo, a solução corresponde ao autovetor associado ao maior autovalor.

Exercícios:

  1. Encontre o autovetor associado ao maior autovalor da matriz de afinidade do exemplo acima, usando alguma ferramenta online, e analise o resultado da clusterização. Dado que o autovetor possui valores reais, a clusterização deve ser obtida por limiarização/binarização do resultado.

Clusterização de dados por corte normalizado (Normalized Cuts)

Artigo: Normalized Cuts and Image Segmentation

Segmentação de múltiplos objetos com restrições hierárquicas

Artigo: What Energy Functions Can Be Minimized via Graph Cuts?
Artigo: Globally Optimal Segmentation of Multi-Region Objects
Artigo: Multi-Object Segmentation by Hierarchical Layered Oriented Image Foresting Transform

Corte médio (Mean Cut & Ratio Cut)

Artigo: Image Segmentation with Minimum Mean Cut
Artigo: Image segmentation with ratio cut