3. Theorizing knowledge with assemblage thinking
3.2 What is an assemblage?
/* função para computação do último leveling por vértice (Equação 6.10) e das funções associadas */ 1 computação-do-último-leveling-por-vértice(Vértice C)
2 se∃i ∈ I tal que C ∈ N r(i) então
3 r+
i (C) ← [level(C) − level(Pai(C)) ∨ 0]
4 r−
i (C) ← [level(Pai(C)) − level(C) ∨ 0]
5 se Pai(C) ∈ N r(i) então
6 r+ i (C) ← r+i(C) + ri+(Pai(C)) 7 r− i (C) ← r − i (C) + r − i (Pai(C))
// Atualização das funções associadas
8 q+ I(C) ← q+I(Pai(C)) 9 q− I(C) ← q − I(Pai(C)) 10 qκ+(C) ← q+κ(Pai(C)) 11 qκ−(C) ← qκ−(Pai(C)) 12 senão // Computação de q+ I, q−I, qκ+ e q−κ 13 ser+(C) > R+(Pai(C)) então 14 q+ I(C) ← i + 1
15 qκ+(C) ← κ(C) // A i-ésima primitiva gerou máximos resíduos positivos
16 senão
17 q+
I(C) ← q+I(Pai(C))
18 qκ+(C) ← q+κ(Pai(C)) // Atualização das funções associadas
19 ser−
i (C) > R−(C) então
20 q−
I(C) ← i + 1
21 qκ−(C) ← κ(C) // A i-ésima primitiva gerou máximos resíduos negativos
22 senão
23 q−
I(C) ← qI−(Pai(C))
24 qκ−(C) ← qκ−(Pai(C)) // Atualização das funções associadas
// Manter atualizados os máximos residuos
25 R+ θ(C) ← R + θ(Pai(C)) ∨ r + i (C) 26 R− θ(C) ← R − θ(Pai(C)) ∨ r − i (C)
27 para cadaS∈ Filhos(C) faça
28 computação-do-último-leveling-por-vértice(S)
/* função para computação do último leveling e das funções associadas */
1 computação-do-último-leveling-por-árvore(Árvore Tf) 2 para cadaC∈ Filhos(Raiz(Tf)) faça
3 computação-do-último-leveling-por-vértice(C)
4 para cadap∈ D faça
5 [Rθ(f )](p) ← [R+ θ(SC(Tf, p))](p) ∨ [R−θ(SC(Tf, p))](p) 6 seq+ I(SC(Tf, p)) > q−I(SC(Tf, p)) então 7 qI(p) ← q+ I(SC(Tf, p)) 8 senão 9 qI(p) ← q− I(SC(Tf, p)) 10 seq+κ(SC(Tf, p)) > q−κ(SC(Tf, p)) então 11 qκ(p) ← qκ+(SC(Tf, p)) 12 senão 13 qκ(p) ← qκ−(SC(Tf, p)) 14 retorne(Rθ(f ), qI, qκ)
/* função principal para computar um último leveling */
1 computação-do-último-leveling(Imagem f ) 2 Tf ← construa-a-árvore(f )
3 (Rθ(f ), qI, qκ)) ← computação-do-último-leveling-por-árvore(Tf) 4 retorne(Rθ(f ), qI, qκ)
Na Figura 6.7 são apresentados exemplos de operadores últimos levelings onde a família de primitivas são: aberturas por atributo de altura, fechamento por atributo de altura e últimos filtros
82 ÚLTIMOS LEVELINGS 6.4 por grãos utilizando atributo de altura.
253 203 126 60 161 72 54 39 126 30 38 78 nulo nulo 77 143 42 54 149 122 77 131 88 125 nulo nulo 5 + 1 3 + 1 2 + 1 5 + 1 3 + 1 0 + 1 2 + 1 0 + 1 1 + 1 2 + 1 nulo nulo 54 6 131 54 6 9 131 9 0 131 Árvore Tfcom os níveis de cinza Árvore Tfcom os resíduos r−i Árvore Tfcom os índices qIdos máximos resíduos Árvore Tfcom os atributos (altitudes) qκdos máximos resíduos
Imagem de entrada f Último leveling negativo R−
θ(f ) Rotulação da imagem associada qI Rotulação da imagem associada qκ
Figura 6.6:Exemplo de computação de último leveling com funções associadas utilizando uma árvore min-
tree.
imagem de entrada UAO UAC UGF
rotulação da imagem associada ao UAO rotulação da imagem associada ao UAC rotulação da imagem associada ao UGF
imagem associada (altitude) ao UAO imagem associada (altitude) ao UAC imagem associada (altitude) ao UGF
Figura 6.7: Exemplos de aplicações de últimos levelings: (da esquerda para direita) imagem de entrada,
Capítulo 7
Estratégias para construções de últimos
levelings
Resumo do capítulo
Neste capítulo são apresentadas estratégias para construções de últimos levelings. Em particular, são apresentadas estratégias para escolha de famílias de primitivas. Dessa forma, um último leveling é o supremo dos i-ésimos resíduos ri extraídos ao longo da
família de primitiva escolhida. Neste processo de extração dos i-ésimos resíduos ri po-
dem existir resíduos extraídos de regiões indesejáveis. Assim, são apresentados neste capítulo estratégias para filtrar resíduos ri indesejáveis extraídos ao longo da família de
primitivas, e assim o último leveling é definido como supremo dos resíduos ri desejáveis.
7.1 Estratégias para escolher a família de primitivas
A escolha da família de primitivas leva em consideração hipóteses sobre as regiões que se pretende extrair os valores residuais de uma imagem e sobre essas hipóteses, constrói-se um espaço de escala contendo as primitivas mais significativas para construção do último leveling. Neste sentido, um ponto de partida para a escolha da família de primitivas é a questão da polaridade dos objetos de interesses, ou seja, se os objetos são claros ou escuros em relação ao seu background. Neste caso, as primitivas podem ser obtidas por reconstruções inferiores ou superiores o que fazem produzirem resíduos positivos R+ (objetos claros) ou negativos R− (objetos escuros). Mas, se os objetos de
interesses estiverem em ambas polaridades então as primitivas podem ser obtidas por reconstruções de formas ou alternativamente, pode-se considerar simultaneamente duas famílias de primitivas obtidas por reconstruções inferiores e superiores e depois combinar seus resultados.
O resultado de um operador último leveling é diretamente influenciado pela escolha da família de primitivas as quais são obtidas, como já mencionado, por reconstruções de podas sucessivas de uma árvore. Embora no Algoritmo 6.1, aparece somente o conjunto N r(i) que contém vértices
obtidos pela diferenças entre duas podas consecutivas. Assim, para cada índice i ∈ I de uma família de primitivas, precisa-se determinar o conjunto N r(i). Esta tarefa é simples, mas depende das primitivas incluídas na família de primitivas.
A ideia para determinar a família de primitivas (ver Algoritmo7.1) consiste em fazer marcações dos vértices C da árvore, por meio de um critério Γ : P(D) → {verdadeiro, falso}, de tal forma que a remoção da aresta que conecta um vértice C ao vértice Pai(C) resulta na árvore podada. Assim, estas marcações em uma árvore Tf dão origem as árvores (Tf0,Tf1, . . . ,T
IM AX
f ) obtidas por
84 ESTRATÉGIAS PARA CONSTRUÇÕES DE ÚLTIMOS LEVELINGS 7.1 podas sucessivas e consequentemente os conjuntos N r(i) de vértices removidos entre duas árvores consecutivas. Estas marcações podem ser obtidas (e consecutivamente, cada árvore Ti
f e seu conjunto
N r(i)), por exemplo, através de um percurso em pós-ordem em Tf. Mas é claro, podem ser usados
outros tipos de ordenação para visitar os vértices de Tf, entretanto isto não modifica o resultado dos
últimos levelings graças à Proposição6.15. Na Figura7.1são mostrados dois exemplos de construção da família de primitivas usando o mesmo critério Γ, um pelo Algoritmo7.1 onde as primitivas são produzidas de acordo com o percurso em pós-ordem e a outra família de primitivas estão ordenadas pelo atributo de altura.
Primitivas ordenadas de acordo com o percurso em pós-ordem
T0
f Tf1 Tf2 Tf3 Tf4 Tf5 Tf6
ψ0(f ) ψ1(f ) ψ2(f ) ψ3(f ) ψ4(f ) ψ5(f ) ψ6(f )
r0(f ) r1(f ) r2(f ) r3(f ) r4(f ) r5(f ) R−θ(f )
Primitivas ordenadas pelo atributo de altura
T0
f Tf1 Tf2 Tf3 Tf4 Tf5 Tf6
ψ0(f ) ψ1(f ) ψ2(f ) ψ3(f ) ψ4(f ) ψ5(f ) ψ6(f )
r0(f ) r1(f ) r2(f ) r3(f ) r4(f ) r5(f ) R−θ(f )
Figura 7.1: Exemplo de computação de um último leveling negativo onde é evidenciado que a ordem das
marcações nos vértices da árvore não modifica o resultado final dos últimos levelings.
Por exemplo, o conjunto com maior número de primitivas que podem ser derivadas de uma árvore Tf é dado pelo seguinte critério: um vértice C de uma árvore Tf satisfaz a condição do
7.1 ESTRATÉGIAS PARA ESCOLHER A FAMÍLIA DE PRIMITIVAS 85