• Nenhum resultado encontrado

Extração de contornos de telhados usando princípios de Snake Balloon

N/A
N/A
Protected

Academic year: 2017

Share "Extração de contornos de telhados usando princípios de Snake Balloon"

Copied!
78
0
0

Texto

(1)

UNIVERSIDADE ESTADUAL PAULISTA

Faculdade de Ciências e Tecnologia de Presidente Prudente

Programa de Pós-Graduação em Matemática Aplicada e Computacional

Extração de Contornos de Telhados Usando

Princípios de

Snake Balloon

Diego Venâncio Thomaz

Orientador: Prof. Dr. Aluir Porfírio Dal Poz

Co-orientador: Prof. Dr. José Roberto Nogueira

(2)

Faculdade de Ciências e Tecnologia de Presidente Prudente

Programa de Pós-Graduação em Matemática Aplicada e Computacional

Extração de Contornos de Telhados Usando

Princípios de

Snake Balloon

Diego Venâncio Thomaz

Orientador: Prof. Dr. Aluir Porfírio Dal Poz

Co-orientador: Prof. Dr. José Roberto Nogueira

Dissertação apresentada ao Programa de Pós-Graduação em Matemática Aplicada e Computacional da Faculdade de Ciências e Tecnologia da UNESP para obtenção do tí-tulo de Mestre em Matemática Aplicada e Computacional.

(3)

FICHA CATALOGRÁFICA

Thomaz, Diego Venâncio.

T384e Extração de Contornos de Telhados Usando Princípios de Snake Balloon / Diego Venâncio Thomaz. - Presidente Prudente : [s.n], 2012

xi, 75 f. : il.

Orientador: Aluir Porfírio Dal Poz Coorientador: José Roberto Nogueira

Dissertação (mestrado) - Universidade Estadual Paulista, Faculdade de Ciências e Tecnologia

Inclui bibliografia

(4)
(5)
(6)

Essa deveria ser a parte mais fácil de todo o trabalho, mas não é. Tenho muita gente pra agradecer, apenas sei por quem começar.

Em primeiro lugar queria agradecer a Deus, que através do seu incansável olhar amo-roso, ensinou-me a lidar com os meus limites, guiando-me nesta caminhada.

Agora como não poderia ser diferente vêm meus familiares. Agradeço aos meus pais José e Lúcia, meus irmãos Daniel e Ighor, minha cunhada Jaqueline, meu sobrinho Carlos Daniel e todos aqueles que não foram citados aqui, pelo apoio e incentivo nos meus estudos, pela confiança de que eu conseguiria alcançar meus objetivos e pela compreensão nos momentos de ausência. Sem vocês eu jamais chegaria até aqui.

Também incluindo na parte da família. Agradeço a minha namorada e amiga Tatiane Tambarussi pelo apoio, incentivo, compreensão da distância, amor e carinho. E como não há muitas maneiras de dizer o indizível, digo apenas que te amo.

Agora chegou a parte dos professores. Agradeço primeiramente ao meu orientador Prof. Dr. Aluir Porfírio Dal Poz pela orientação, paciência, discussões e contribuições para meu crescimento científico e pessoal. Sem suas dicas preciosas acho que estaria programando até agora.

Não poderia deixar de agradecer ao meu co-orientador Prof. Dr. José Roberto No-gueira pela co-orientação, incentivo e contribuições essenciais na realização deste trabalho. Ainda no que diz respeito aos professores. Agradeço aqueles que dividiram genero-samente seus conhecimentos ministrando as disciplinas do Programa de Pós-Graduação em Matemática Aplicada (PosMAC), dentre os quais cito os Professores Doutores Aluir Porfírio Dal Poz, Cristiane Néspoli, Eniuce Souza, Marcelo Messias, Messias Meneguette, Roberto Prado e Vanessa Botta.

Não posso deixar de citar também os professores do curso de Matemática das Facul-dades Adamantinenses Integradas (FAI), Camila Cremasco, Luiz Roberto e Simone Leite que foram as primeiras inspirações na vida acadêmica.

(7)

4

..., entre outros), Cristiane (Caricatas), José (Pargatão), Juliano (Brow), Larissa, Marília, Patrícia (Penny), Pedro (Carneiro), Reginaldo (Merejolli) e Tatiane. Também agradeço aos amigos do mestrado em Ciência da Computação: Álvaro (Irmão), Fernanda e Lilian. Agradeço a todos pelo companheirismo, amizade e momentos de alegria proporcionados. Também agradeço aos amigos do Grupo de Pesquisa de Fotogrametria, Érico, Esrom, Gabriel, Juliano, Mariana, Michelle, Renata, Rodrigo, Vanessa, e em especial à Tatiana por ter gerado os modelos utilizados nesta pesquisa. Agradeço a todos pelos conhecimentos que compartilharam nas tardes de segunda-feira.

Incluo aqui também os amigos Daniel Felipe, Diego Franco, Evandro Polli e Fabricio Nery pelo apoio, amizade, incentivo e força nos momentos de dificuldade.

Agora agradeço aos funcionários da Seção de Pós-Graduação, em especial à Erynat, pelo auxílio prestado durante o decorrer do curso de mestrado.

Também agradeço ao Conselho de Aperfeiçoamento de Pessoal de Nível Superior (CA-PES) pelo apoio financeiro.

(8)
(9)

Resumo

Este trabalho propõe um método de extração de contornos de telhados convexos de edifícios a partir de dados de um Modelo Digital de Superfície normalizado (MDSn). A modelagem do contorno se dará através do modelo de snake balloon, onde um funcional de energia dependente de muitas variáveis será otimizado através do algoritmo de Progra-mação Dinâmica (PD). O MDSn se mostra atrativo na aplicação de extração de contornos de telhados de edifícios, pois permite separar as regiões de edifícios da maioria das outras regiões, principalmente as mais baixas. O modelo de snake balloon pode ser interpretado como uma curva poligonal fechada que se deforma sob a ação de forças internas e externas agindo sobre o modelo. O método proposto neste trabalho utiliza algumas características apresentadas pelo MDSn para desenvolver uma estratégia de solução do problema de oti-mização. Uma dessas características está ligada ao fato de que os contornos de telhados de edifícios no MDSn estão associados com grandes desníveis e os pontos representativos do contorno apresentam-se sobre o edifício. Assim, para dar início ao processo de extra-ção, bastaria colocar um único ponto semente sobre o telhado. Tal ponto se expandiria, tornando-se uma curva poligonal fechada. Até que a curva encontre o limite do telhado são necessárias várias etapas de expansão, onde somente os pontos situados sobre o te-lhado do edifício são considerados candidatos. Isto evita que a curva salte os limites do telhado durante o processo de expansão. O método de extração de contornos de telhados convexos de edifícios foi implementado no MATLAB e testado utilizando dados reais. Os resultados são polígonos representando os contornos de telhados de edifícios. Através de avaliações visuais e numéricas foi possível comprovar que o método proposto foi bem sucedido.

(10)

This work proposes a method for building convex-roof contours extraction from data of a normalized Digital Surface Model (nDSM). The contour modeling will be made by the snake balloon model, where an energy functional depending on many variables will be optimized through the Dynamic Programming algorithm (DP). The nDSM proves to be attractive in the application of building roof contour extraction, as it allows separa-ting buildings regions from mostly other regions, especially the lowest ones. The snake balloon model can be interpreted as an polygonal closed curve that deforms under the action of internal and external forces acting on the model. The method proposed in this work uses some of the features presented by nDSM in order to develop a strategy to solve an optimization problem. One of these characteristics is related to the fact that building roof contours in a nDSM are associated with large elevation differences and representa-tive points of the contour are presented over the building. So, to start the extraction process, it would be enough to place a single seed point on the roof. The point would expand and become a polygonal closed curve. Until the curve find the edge of the roof, several expansion stages are required, where only those who are on the building roof are considered as candidate. This prevents that the curve exceeds the limit of the building roof during the expansion process. The method for building convex-roof contours extrac-tion was implemented in MATLAB and tested using real data. The results are polygons that represent building roof contours. Through visual and numerical evaluations, it was possible to prove that the proposed method was successful.

(11)

Lista de Figuras

2.1 Imagem com transição entre região escura e clara, e borda degrau. . . 16

2.2 Detecção de bordas: (a) Primeira derivada do perfil de níveis de cinza. (b) Segunda derivada do perfil de níveis de cinza. (Fonte: Adaptado de Gonzales e Woods [8]). . . 17

3.1 Curva Snake Suave. . . 25

3.2 Curva Snake Não-Suave. . . 26

3.3 Ação de uma Curva Snake Utilizando a Força de Inflação. . . 32

4.1 Mapa da Cidade com Ruas de Mão Única. . . 34

4.2 Padrão das Tabelas de Mínimo de fk. (Fonte: Adaptado de Dal Poz (2000)) 38 4.3 Fluxo de Algoritmo para Programação Dinâmica. . . 43

5.1 Princípio de Varredura a Laser. . . 45

5.2 Representação de um Modelo Digital de Superfície. . . 48

5.3 Representação de um Modelo Digital de Terreno. . . 48

5.4 Representação de um Modelo Digital de Superfície normalizado. . . 48

6.1 Ponto Semente Dado Pelo Operador. . . 52

6.2 Altura do Edifício. . . 53

6.3 Construção do Espaço de Busca. . . 53

6.4 Polígono Inicial Obtido por PD. . . 54

6.5 Polígono Inicial e Poligono Limite. . . 54

6.6 Espaço de Busca a Patir do Polígono Atual. . . 56

6.7 Polígono Obtido ao Final da Primeira Etapa. . . 57

6.8 Construção do Espaço de Busca na Segunda Etapa. . . 58

6.9 Polígono inicial Obtido na Segunda Etapa. . . 59

6.10 Final dos Passos em um dos Lados do Polígono. . . 59

6.11 Polígono Obtido ao Final da Segunda Etapa. . . 60

(12)

tado Obtido no Teste 1. . . 64 7.3 Teste 2: (a) Ponto Semente Dado Pelo Operador. (b), (c), (d) e (e) Evolução da

Curva. (f) Contorno Extraído. . . 65

7.4 Contorno Extraído Manualmente Utilizado na Análise Numérica do Resul-tado Obtido no Teste 2. . . 66 7.5 Teste 3: (a) Ponto Semente Dado Pelo Operador. (b), (c), (d) e (e) Evolução da

Curva. (f) Contorno Extraído. . . 67

7.6 Contorno Extraído Manualmente Utilizado na Análise Numérica do Resul-tado Obtido no Teste 3. . . 67 7.7 Teste 4: (a) Ponto Semente Dado Pelo Operador. (b), (c), (d) e (e) Evolução da

Curva. (f) Contorno Extraído. . . 68

7.8 Contorno Extraído Manualmente Utilizado na Análise Numérica do Resul-tado Obtido no Teste 4. . . 69 7.9 Teste 5: (a) Ponto Semente Dado Pelo Operador. (b), (c), (d) e (e) Evolução da

Curva. (f) Contorno Extraído. . . 70

(13)

Lista de Tabelas

4.1 Função g1(x1, x2). . . 39

4.2 Função g2(x2, x3). . . 39

4.3 Função g3(x3, x4). . . 40

4.4 Primeiro Passo de Resolução. . . 40

4.5 Segundo Passo de Resolução f1(x2) +g2(x2, x3). . . 41

4.6 Função f2(x3). . . 41

4.7 Terceiro Passo de Resolução f2(x3) +g3(x3, x4). . . 42

(14)

1 Introdução 13

1.1 Considerações Iniciais . . . 13

1.2 Objetivos . . . 14

1.3 Estrutura da Dissertação . . . 15

2 Fundamentos de Detecção de Bordas 16 2.1 Conceito de Borda . . . 16

2.1.1 Operadores de Gradiente . . . 18

3 Modelos de Contorno Ativo 20 3.1 Princípio Hamiltoniano de Ação Mínima . . . 20

3.2 Modelos Deformáveis Generalizados . . . 21

3.3 Snakes . . . 23

3.4 O Modelo Balloon . . . 31

4 Programação Dinâmica 34 4.1 Problema do Caminho Simples . . . 34

4.2 Algoritmo para Resolução do Problema de Programação Dinâmica . . . 37

5 Modelo Digital de Superfície Normalizado 45 5.0.1 Posicionamento e Orientação pelo Sistema de Varredura a Laser . . 45

5.1 Modelagem de Dados de Elevação e Representação de Superfícies . . . 46

6 Metodologia 49 6.1 Modelo Matemático de Contornos de Edifícios . . . 49

6.2 Otimização do Modelo de Contornos de Edifícios Através de PD . . . 51

7 Testes Numéricos 61 7.0.1 Teste 1 . . . 62

7.0.2 Teste 2 . . . 64

7.0.3 Teste 3 . . . 66

7.0.4 Teste 4 . . . 67

(15)

7.0.5 Teste 5 . . . 69

(16)

1

Introdução

1.1

Considerações Iniciais

As snakes foram inicialmente propostas por Kass et al. em 1988 [10], e desde então, têm se destacado como uma das mais bem sucedidas áreas de pesquisa na segmentação de imagens, podendo-se citar Cohen [3] que utilizou as snakes para extração de feições em imagens médicas.

No trabalho de Cohen de 1991[3], é proposto o modelo de snake balloon que apresenta algumas melhorias em relação ao modelo de snake original. Pode ser interpretado geo-metricamente como um laço que se expande. Neste modelo é adicionada uma força de expansão ao termo de energia externa, aumentando assim o raio de convergência.

A extração de contornos de telhados de edifícios a partir de um MDSn é um procedi-mento que pode ser adequadamente formulado em termos de um problema de otimização, que por sua vez pode ser solucionado a partir da utilização de técnicas específicas. O re-quisito básico para tal é a formulação de um modelo matemático representativo do objeto de interesse a ser extraído. O modelo desnake balloon, apresenta características atrativas para a construção de um modelo matemático representando contornos de telhados de edi-fícios. O modelo resultante apresenta uma estrutura particularmente adequada para ser solucionado através do algoritmo de Programação Dinâmica (PD). A solução ótima para o modelo são polígonos representando os contornos extraídos de telhado de edifícios.

Entretanto, os conceitos desnakes e PD têm sido pouco explorados na área de extração de características de edifícios a partir de imagens ou modelos digitais de superfície.

O trabalho realizado por Ruther et al. [14], apresenta uma estratégia de extração de edifícios em áreas de assentamentos informais a partir de imagens aéreas. Assnakes foram utilizadas para modelar os contornos de edifícios e o método de otimização empregado era o de PD, cuja inicialização baseava-se na projeção na imagem de contornos aproximados obtidos pela limiarização de um modelo digital de superfície.

(17)

14

Em 2003, Guo et al. [9] propuseram uma abordagem baseada em snakes para a extração de edifícios a partir da combinação de imagens de alta resolução do satélite IKONOS e dados de elevação. Múltiplos indicadores, derivados de ambas as fontes de dados são integrados no modelo desnake de modo a extrair precisamente os contornos de telhado de edifícios.

No trabalho elaborado por Peng et al. [13], são apresentadas modificações no modelo desnake original para a detecção de edifícios a partir de imagens aéreas. Tais modifica-ções acontecem no critério de seleção de pontos sementes na função de energia, a fim de possibilitar uma convergência mais estável para os contornos de edifícios.

No trabalho realizado por Mayunga et al. [15], é desenvolvido um método semiauto-mático de extração de edifícios em áreas de assentamentos urbanos, a partir de imagens espaciais de alta resolução. O método proposto utiliza um algoritmo de moldagem radial para a extração dos contornos de edifícios que são modelados através de modificações no modelo de snake original.

O trabalho de Lau [16] discute o desenvolvimento de um algoritmo de inicialização do modelo de contorno ativo. O modelo de snake tradicional é utilizado para extrair os contornos de edifícios a partir de imagens de satélite, mas com um algoritmo de moldagem circular.

Os autores, Fazan e Dal Poz [7] apresentam um método para extração de contornos de telhado de edifícios a partir de imagens digitais tomadas sobre cenas urbanas complexas. O método proposto é baseado na otimização de uma função de energiasnake que representa contornos de edifícios em imagens digitais, através da técnica de otimização por PD.

O método de extração de contornos de telhados de edifícios proposto neste trabalho tem por motivação principal explorar os grandes desníveis associados aos contornos de edifícios num MDSn. Os pontos representativos do contorno do telhado apresentam-se sobre o edifício, o que sugere colocar apenas um único ponto semente sobre o telhado, este ponto expandiria até o limite do telhado do edifício. Durante as etapas de expansão, são considerados candidatos a pontos do polígono representativo do contorno do telhado, somente os pontos que estiverem sobre o edifício; isto evita que o polígono salte os limites do telhado do edifício em alguma das etapas de expansão. A modelagem do contorno de telhado de edifício será feita através do modelo de snake balloon.

1.2

Objetivos

(18)

otimização a partir de um único ponto semente, através do algoritmo de PD. Propõe-se também, avaliar visual e numericamente o método desenvolvido usando dados reais.

1.3

Estrutura da Dissertação

(19)

Capítulo

2

Fundamentos de Detecção de Bordas

A detecção de bordas é a abordagem mais comum para a detecção de descontinuidades significantes nos níveis de cinza da imagem. Basicamente, a idéia por trás da maioria das técnicas para a detecção de bordas é o cálculo de um operador diferencial. A seguir serão apresentados conceitos, propriedades e alguns operadores de detecção de bordas.

2.1

Conceito de Borda

Uma borda é o limite ou a fronteira entre duas regiões com propriedades relativamente distintas de nível de cinza [8].

O tipo mais comum de variação na imagem caracteriza-se como um degrau, daí a denominação de borda degrau. Uma borda degrau ideal ocorre na transição entre duas regiões homogêneas da imagem, onde tal transição pode ser determinada com base apenas na descontinuidade dos níveis de cinza. A Figura (2.1) mostra uma imagem formada por uma região escura e outra clara, e o perfil modelado como uma mudança abrupta dos níveis de cinza (borda degrau), representando o nível de cinza ao longo de uma linha de varredura horizontal da imagem.

Figura 2.1: Imagem com transição entre região escura e clara, e borda degrau.

(20)

A ideia básica que está por trás das técnicas de detecção de bordas é o uso de um operador diferencial local.

A Figura (2.2(a)) mostra a primeira derivada, ao longo de uma linha transversal às bordas. Pode-se observar, que a primeira derivada é positiva nas transições da região escura para clara, negativa nas transições da região clara para escura e nula nas regiões de nível de cinza constante. A Figura (2.2(b)) mostra que a segunda derivada é positiva na parte da transição associada ao lado escuro da borda, negativa na parte da transição associada ao lado claro da borda e nula nas áreas de nível de cinza constante. Portanto, a magnitude da primeira derivada pode ser utilizada na detecção de borda na imagem, enquanto o sinal da segunda derivada permite a localização das bordas na imagem [8].

Figura 2.2: Detecção de bordas: (a) Primeira derivada do perfil de níveis de cinza. (b) Segunda derivada do perfil de níveis de cinza. (Fonte: Adaptado de Gonzales e Woods [8]).

(21)

18

2.1.1

Operadores de Gradiente

O operador utilizado em diferenciação de imagens, é o gradiente. Este operador é um vetor cuja direção indica os locais nos quais os níveis de cinza sofrem maior variação. Sendo assim, em regiões de bordas, o vetor gradiente irá apontar na direção transversal a essas bordas [8].

Uma imagem pode ser definida como uma função, denotada porf(x, y), cujo valor na coordenada(x, y)fornece o brilho da imagem naquele ponto [12]. Então, o vetor gradiente da imagem f na posição (x, y)é dado por:

∇f(x, y) =

Gx Gy = ∂f ∂x ∂f ∂y . (2.1)

A magnitude do vetor gradiente, denotada por|∇f|, equivale à maior taxa de variação da imagem f por unidade de distância na direção do vetor∇f, e é dada por:

|∇f|=mag(∇f) =

G2x+G2y

12

(2.2)

Considerando uma região da imagem formada por 3 ×3 pixels, em que os valores denotam os níveis de cinza dos pixels, representada por

f(x−1, y−1) f(x, y−1) f(x+ 1, y−1)

f(x−1, y) f(x, y) f(x+ 1, y)

f(x−1, y+ 1) f(x, y+ 1) f(x+ 1, y+ 1)

A magnitude do gradiente, mostrada na Equação (2.2), pode ser aproximada no ponto

f(x, y)de várias maneiras. Uma forma simples consiste em usar a diferençaf(x+ 1, y)−

f(x, y)como derivada parcial em relação àxef(x, y+ 1)−f(x, y)como derivada parcial em relação à y. Assim |∇f|pode ser expressa como

|∇f| ≈

[f(x+ 1, y)−f(x, y)]2+ [f(x, y+ 1)−f(x, y)]212 (2.3)

A Equação (2.3) pode ser implementada por meio de máscaras de tamanho1×2e2×1

pixels, somando-se o quadrado das respostas das duas máscaras mostradas na Equação (2.4) e fazendo a raiz quadrada do resultado da soma. As máscaras representando esta forma de aproximação das derivadas parciais são dadas por

Gx = -1 1 Gy = -1

1 (2.4)

(22)

Gx ≈ [f(x+ 1, y−1) + 2f(x+ 1, y) +f(x+ 1, y+ 1)]

− [f(x−1, y−1) + 2f(x−1, y) +f(x−1, y+ 1)]

(2.5)

Gy ≈ [f(x−1, y+ 1) + 2f(x, y+ 1) +f(x+ 1, y+ 1)]

− [f(x−1, y−1) + 2f(x, y −1) +f(x+ 1, y−1)]

E a implementação é feita por meio das máscaras de tamanho3×3 pixels.

Gx =

-1 0 1

-2 0 2

-1 0 1

Gy =

-1 -2 -1

0 0 0

1 2 1

(2.6)

Portanto, para o cálculo da magnitude do gradiente na posição central da máscara utiliza-se a Equação (2.2), o que fornece um valor. Para a obtenção do próximo valor, as máscaras são deslocadas para a posição do próximo pixel e o procedimento é repetido. Quando o procedimento é realizado para todas as posições possíveis, o resultado é a imagem de magnitude do gradiente.

(23)

Capítulo

3

Modelos de Contorno Ativo

Este capítulo apresenta a revisão teórica fundamental para o desenvolvimento do tra-balho proposto. Na Seção (3.1) é apresentado o Princípio Hamiltoniano de Ação Mínima, essencial para o entendimento do princípio de minimização do funcional de energia. Na Seção (3.2) é apresentado o conceito generalizado de modelos deformáveis, que é funda-mental para o entendimento do conceito de snake; que é apresentado na Seção (3.3). A Seção (3.4) apresenta o modelo desnake balloon como uma forma de generalizar e resolver alguns dos problemas encontrados com o modelo original.

3.1

Princípio Hamiltoniano de Ação Mínima

Em geral, denomina-se grau de liberdade o número de variáveis a serem determina-das dentro de um sistema. Quando um conjunto qualquer de coordenadetermina-das {v1, . . . , vd}, determina totalmente o estado de um sistema (nesse caso com d graus de liberdade), as mesmas são denominadas coordenadas generalizadas e as derivadas correspondentes são denominadas velocidades generalizadas.

Um estado do sistema é definido por um conjunto de valores que suas coordenadas generalizadas(v1, ..., vd)podem assumir. Um tal estado é imaginado como sendo represen-tado por um ponto v(t) = (v1(t), ..., vd(t)) no chamado espaço de estado do sistema. A medida em que o tempot vai passando o sistema pode "evoluir"ou "mover"de um estado

v(t1) = (v1(t1), ..., vd(t1)) para outrov(t2) = (v1(t2), ..., vd(t2)).

O problema geral passa a ser formulado nos seguintes termos: dentre todas as traje-tórias ligando v(t1) à v(t2) no espaço de estado do sistema, qual é aquela que deve ser

seguida. O guia para a resposta é o Princípio de Hamilton:

Princípio de Hamilton: A trajetória v(t) = (v1(t), ..., vd(t)) que descreve o movi-mento do sistema do estado v(t1) para v(t2) é tal que o funcional de ação do sistema

(24)

E(v) =

t2

t1

L(v(t),v˙(t), t)dt, (3.1)

assume um valor mínimo. Aqui L(v(t),v˙(t), t) é uma função que caracteriza o sistema, chamada Lagrangeana deste sistema.

A trajetória v(t) que mapeia o movimento do sistema, a qual torna estacionário o valor do funcional deste sistema, deve ser solução das equações de Euler

d dt

∂L ∂v˙i

− ∂L

∂vi

= 0, i= 1, ..., d, (3.2)

com as condições de contorno que fixam os pontos extremosv(t1)ev(t2). Estas equações

passaram então a se chamar equações de Euler-Lagrange; o nome Euler está ligado ao Cálculo Variacional e o nome Lagrange ao problema geral correspondente na Mecânica Lagrangeana.

3.2

Modelos Deformáveis Generalizados

Um modelo deformável generalizado pode ser interpretado geometricamente como uma superfície n-dimensional constituída por um material elástico que se deforma sob a ação de forças internas e externas atuando sobre ele [11]. As forças internas são inerentes ao modelo considerado e o campo de forças externas é obtido a partir de dados referentes ao meio onde o modelo está inserido.

SejaEq(v)a energia de deformação do objeto. Pelo Princípio de Hamilton, a dinâmica do modelo deformável é regida por uma equação de movimento. O modelo deformável representado pela função v(s)se estabiliza quando sua energia de deformação total, dada por [11]

Eq(v) = λEint(v) + (1−λ)Eext(v), (3.3) atinge um valor de mínimo global.

Na Equação (3.3), Eint(v) representa a energia de deformação interna, Eext(v) a energia de deformação externa e 0 ≤ λ ≤ 1 é o parâmetro que controla a influência relativa dos dois tipos de energia (interna e externa) atuando sobre o modelo.

Definição 1 Um modelo deformável generalizado com d graus de liberdade de deforma-ção, cada qual possuindo dimensionalidade p, pode ser representado por uma função ve-torial definida por [11]

v(s) : Ω ⊂Rp →A⊂Rd

s→v(s) = (v1(s), v2(s), ..., vd(s)),

(25)

22

e um funcional Eq(v) que representa a energia do modelo deformável v(s), que se esta-biliza quando sua energia atinge um valor de mínimo global (Princípio de Hamilton). O funcional Eq(v) tem a seguinte forma:

Eq :A⊂Rd→R

v →Eq(v) = q m=1

d j1...jm=1

Ωwm(s)

∂mv(s) ∂sj1∂sj2...∂sjm

2

ds+

Ωw(s)|P (v(s))|ds,

(3.5)

onde:

• Ω é um subconjunto do espaço real de dimensionalidade p;

• s = (s1, s2, ..., sp) é um ponto de Ω;

• v(s) é uma função de mapeamento vetorial regular que mapeia o conjunto Ω no espaço Rp para o espaço Rd;

• q é uma constante positiva que denota a ordem das derivadas parciais da função

v(s), que por sua vez determinam a ordem de continuidade que cada componente em v(s) deve possuir;

• m é um índice e (j1, j2, ..., jm)é um índice múltiplo relacionado ao índice m;

• wj(s)e w(s) são funções de ponderação;

• P (v(s)) é um potencial generalizado.

Desta forma, a função de mapeamento definida na Equação (3.4) é a imagemA⊂Rd do conjuntoΩ, na qual cada componente é uma função paramétrica dep variáveis.

O primeiro termo do funcional de energiaEq(v)dado em (3.5) que será denotado por

Sq(v)mede a suavidade da função de mapeamento v(s). Este termo constitui uma classe de funções estabilizadoras para regularização contínua por partes.

As funções de ponderação [w1(s), w2(s), ..., wq(s)] são, em geral, positivas e não ne-cessariamente contínuas [11]. As propriedades inerentes a essas funções possibilitam in-troduzir, de modo seletivo, descontinuidades específicas no modelo.

(26)

número de direções nas quais o objeto pode se deformar. Cada grau de liberdade possui dimensão paramétrica de ordem p. Consequentemente, a função v(s) dada na Equação (3.4) pode ser expandida na forma

v(s1, s2, ..., sp) = (v1(s1, s2, ..., sp), v2(s1, s2, ..., sp), ..., vd(s1, s2, ..., sp)). (3.6) Os graus de liberdaded denotam as posições ou deslocamentos dos pontos do modelo em um espaço euclidianon-dimensional. Para um problema de reconstrução de superfícies, por exemplo, o modelo deformável teria d = 1 grau de deformação, representando o deslocamento Z em profundidade com p = 2 parâmetros representando as coordenadas

(x, y) correspondentes ao ponto (X, Y, Z) no espaço tridimensional (n= 3) [11].

3.3

Snakes

As snakes1 foram inicialmente propostas em [10] e, desde então, têm sido usadas em

muitas aplicações em imagens 2-D e 3-D por Terzopoulos, Witkin e Kass, onde têm-se destacado como uma das mais ativas e bem-sucedidas áreas de pesquisa na segmentação de imagens, sendo largamente aplicadas em procedimentos como a detecção de fronteiras, segmentação, modelagem de formas, detecção de movimentos; etc.

Definição 2 Uma snake é dada pelo conjunto de curvas definidas em um espaço de ad-missíveis deformações A ⊂R2 que se movem ao longo das direções x e y e representada por uma função vetorial paramétrica bidimensional v da forma [10]:

v(s) : Ω = [a, b]→R2

s→v(s) = (x(s), y(s)), (3.7)

e um funcional E2(v) que representa a energia do modelo que será minimizada e tem a

seguinte forma [10]:

E2 :A⊂R2 →R

v →E2(v) =

Ω

w1(s)|vs|2 +w2(s)|vss|2+w(s)P(v(s))

ds, (3.8)

na qual

• x(s) e y(s) são funções paramétricas des;

• Ω ⊂ R representa o intervalo no qual a função vetorial está definida e se refere ao comprimento de um arco da curva desde a origem até o ponto considerado;

(27)

24

• vsevssdenotam respectivamente as derivadas parciais de primeira e segunda ordem de v em relação a s;

• P é uma função potencial generalizada associada as forças externas.

O modelo snake é um caso especial de modelos deformáveis generalizados, visto que seus parâmetros (q, d, p) assumem os seguintes valores específicos: q = 2, pois a energia energia interna do modelo é constituída por termos de primeira ordem (dependente da primeira derivada dev(s)) e de segunda ordem (dependente da segunda derivada dev(s));

d= 2, pois a curva v(s) se move e deforma ao longo das direções x e y; p= 1, visto que a posição (s) de um ponto na curvav(s)pode ser expressa em função de um escalar, isto é, s={s1}. Deste modo, o funcional que representa a energia total de uma curva do tipo

snake, passa a ser definido por:

E2(v) = 2

m=1

Ω

wm(s)

dm

dsm (v(s))

2 ds+ Ω

w(s)P (v(s))ds. (3.9)

A expansão do somatório na Equação (3.9) resulta em:

E2(v) =

Ω

w1(s)

d dsv(s)

2 ds+ Ω

w2(s)

d2

ds2v(s)

2 ds+ Ω

w(s)P(v(s))ds

=

Ω

w1(s)

d dsv(s)

2

+w2(s)

d2

ds2v(s)

2

+w(s)P (v(s))

ds. (3.10)

Considerando x(s) = xe y(s) = y, tem-se

v(s) = (x, y). (3.11) Fazendo as derivadas de primeira e segunda ordem da função vetorialv(s)temos:

d

dsv(s) =

dx ds, dy ds

ed2

ds2v(s) =

d2x

ds2,

d2y

ds2 . (3.12) Assim: d dsv(s)

2 = dx ds, dy ds = dx ds 2 + dy ds 2 = ⎡ ⎣ dx ds 2 + dy ds 2 ⎤ ⎦ 2 ; (3.13) d2

ds2v(s)

2 =

d2x

ds2,

d2y

ds2

=

d2x

ds2

2

+

d2y

ds2 2 = ⎡ ⎣

d2x

ds2

2

+

d2y

(28)

Substituindo (3.13) e (3.14) em (3.10), se obtém

E2(v) =

Ω

⎝w1(s) ⎡ ⎣ dx ds 2 + dy ds 2 ⎤ ⎦ 2

+w2(s)

d2x

ds2

2

+

d2y

ds2 2 ⎤ ⎦ 2⎞ ⎠ds + Ω

w(s)P (v(s))ds=λEint(v) + (1−λ)Eext(v), (3.15)

sendoλ o parâmetro derivado das funções de ponderação w1(s),w2(s) e w(s), utilizado

para controlar a influência relativa dos termos de energia interna e externa. Quando

λ→1, a solução fornecida pela Equação (3.15) torna-se genérica e robusta a ruídos. No outro extremo, quandoλ →0, o modelo resultante é capaz de detectar detalhes da feição de interesse a ser extraída, mas torna-se sensível aos ruídos presentes na imagem. Uma notação mais usual para a Equação (3.15) é dada pela Equação (3.8).

A energia interna Eint(v) é composta de um termo de primeira ordem controlado porw1(s) e um termo de segunda ordem controlado porw2(s). Em modelos deformáveis

generalizados, as funções de ponderaçãowm(s), ou seja,w1(s)ew2(s)são utilizadas para

inserir descontinuidades específicas nos modelos. No caso das snakes, w1(s) controla a

elasticidade, aumentando incentiva-se asnake ser não-suave, ew2(s)controla a rigidez da

curva no ponto parametrizado por s, aumentado incentiva-se a snake ser suave. Quando w1(s)

w2(s) →0, a curvasnake apresenta um comportamento suave, semelhante ao ilustrado na

Figura (3.1).

Figura 3.1: Curva Snake Suave.

Em outro extremo, quando a razão w1(s)

w2(s) → ∞, a curva snake permite desenvolver

(29)

26

Figura 3.2: Curva Snake Não-Suave.

A derivada de segunda ordem na Equação (3.8) representa a curvatura da funçãov(s). Em um caso extremo como o exemplificado pela Figura (3.2), quandow2(s) se anula em

todo o domínio da snake, a curvatura é anulada em todos os pontos e a curva se degenera em um segmento poligonal, conectando os pontos dados.

A energia externa de uma curva snake é calculada a partir dos dados da imagem, com base em propriedades bem definidas das feições de interesse. Sua função é mover o contorno em direção à feição a ser extraída a partir da imagem. Assim, uma curva snake é capaz de incorporar diferentes informações a respeito da forma dos objetos de interesse, variando de acordo com a aplicação desejada.

Quando a feição de interesse a ser extraída a partir da imagem é representada por uma linha, a função de energia externa da curva snake pode ser dada, por exemplo, pela equação

Elinha ext =

Ω

Plinha(v(s))ds=

Ω

wlinhaG2(x(s), y(s))ds =wlinha

Ω

G2(x(s), y(s))ds,

(3.16) ondePlinha(v(s)) =wlinhaG2(x(s), y(s))é uma função potencial de linha, na qualwlinha é uma constante que depende do tipo de linha a ser extraída eG2(x(s), y(s))é o quadrado

dos valores de brilho dos pontos (pixels) que descrevem a linha na imagem. No caso da constante wlinha, são utilizados valores positivos para linhas escuras e valores negativos para linhas claras.

Quando a feição a ser extraída a partir da imagem é limitada por bordas, a função de energia externa para a snake é dada por

Eborda ext =

Ω

Pborda(v(s))ds=

Ω

wborda|∇G(x(s), y(s))|2ds

= wborda

Ω

(30)

onde Pborda(v(s)) = |∇G(x(s), y(s))|2 é uma função potencial de borda, wborda é uma constante negativa e |∇G(x(s), y(s))|2 é o quadrado da magnitude do gradiente dos pontos de borda.

A posição de uma snake em uma imagem é definida por sua energia. Existe uma desvantagem principal associada com as snakes originalmente propostas em [10], que diz respeito à posição do contorno inicial da snake, que por sua vez, deve ser suficientemente próxima ao contorno do objeto a ser extraído a partir da imagem. Caso contrário, a snake pode não evoluir corretamente para o contorno desejado. Isso significa que as snakes originais possuem raio de convergência limitado. Para resolver esse problema, em [3] é proposta uma outra força externa tornando o contorno mais dinâmico; tal modelo será apresentado na próxima seção.

A condição necessária (mas em geral não suficiente) para solucionar a equação de energia snake e, desta forma, extrair a feição de interesse na imagem, é dada pelas equações diferenciais parciais de Euler-Lagrange de quarta ordem, cuja forma vetorial é

Fv −

∂ ∂sFvs −

∂2

∂s2Fvss = 0, (3.18)

com F (s, v, vs, vss) representando o integrando no funcional de energia E2(v),

represen-tado em (3.8), ou seja,

F (s, v, vs, vss) = w1(s)|vs(s)|2+w2(s)|vss(s)|2 +w(s)P (v(s)). (3.19) Supondo que as funções de ponderação w1(s),w2(s) ew(s) sejam dadas,

respectiva-mente, pelas constantes α,β e κ, a Equação (3.19) pode ser reescrita como

F (s, v, vs, vss) =α

x2s(s) +ys2(s)

x2ss(s) +y2ss(s)

+κP (x(s), y(s)). (3.20)

Os componentes Fv, Fvs e Fvss na equação diferencial parcial de Euler-Lagrange são dados por (omitindo-se s na representação)

Fv = (Fx, Fy) =

κ ∂

∂xP (x, y), κ ∂

∂yP (x, y)

, (3.21)

Fvs = (Fxs, Fys) =

α ∂ ∂xs

x2s, α ∂ ∂ys

ys2

= (2αxs,2αys), (3.22)

Fvss = (Fxss, Fyss) =

β ∂ ∂xss

x2ss, β

∂ ∂ys

y2ss

= (2βxss,2βyss). (3.23)

(31)

28

κ ∂

∂xP (x, y)

κ ∂

∂yP (x, y)

− ∂

∂s

2αxs

2αys

+ ∂

2

∂s2

2βxss

2βyss

= 0 0 . (3.24)

Que corresponde ao sistema de equações

−2αxss+ 2βxssss+κ∂x∂ P (x, y) = 0

−2αyss+ 2βyssss+κ∂y∂ P(x, y) = 0

(3.25)

Em uma implementação computacional, é conveniente aproximar a snake por uma linha poligonal composta por n vértices, de modo que

vi =v(si) = (x(si), y(si)), (3.26)

vs(si) = (xs(si), ys(si)), (3.27)

vss(si) = (xss(si), yss(si)), (3.28) para, i= 1, ..., n.

Desta forma, a solução do funcional de energia consiste em determinar os n vértices que descrevem a curva na imagem. Uma maneira conveniente de discretizar os termos do funcional de energia (para efeito de implementação computacional) é aproximá-los através de diferenças finitas e considerandoP (v(s)) = Eext(x(si), y(si)). Assim, a Equação (3.8) torna-se

E2(v) =

n

i=1

w1(si)|vi+1−vi|2+w2(si)|vi−1−2vi+vi+1|2+w(si)Eext(x(si), y(si))

.

(3.29) FazendoPx(x, y) = ∂x∂ Eext(x(si), y(si)),Py(x, y) = ∂y∂ Eext(x(si), y(si))e utilizando diferenças finitas, tem-se:

Fv =w(si) (Px(x(si), y(si)), Py(x(si), y(si))), (3.30)

∂sFvs = 2 ∂

∂s(w1(si)vs(si))

= 2 (w1(si+1)−w1(si)) (v(si+1−v(si)) +w1(si) (v(si−1)−2v(si) +v(si+1)))

= 2 (w1(si+1) (v(si+1)−v(si))−w1(si) (v(si)−v(si−1)))

= 2 (w1(si+1) (vi+1−vi)−w1(si) (vi−vi−1)), (3.31)

∂sFvss = 2 ∂

∂s(w2(si)vss(si)) = 2

∂sw2(si)vss(si) +w2(si)vsss(si)

(32)

Utilizando a Equação (3.32), temos:

∂2

∂s2Fvss = 2

∂2

∂s2w2(si)vss(si) + 2

∂sw2(si)vsss(si) +w2(si)vssss(si)

= 2

⎜ ⎝

(w2(si−1)−2w2(si) +w2(si+1)) (v(si)−2v(si−1) +v(si−2))

+ (w2(si+1)−w2(si)) (v(si+2)−2v(si+1) + 2v(si−1)−v(si−2))

+w2(si) (v(si+2)−4v(si+1) + 6v(si)−4v(si−1) +v(si−2))

⎞ ⎟ ⎠ = 2 ⎛ ⎜ ⎝

w2(si−1) (v(si)−2v(si−1) +v(si−2))

−2w2(si) (v(si−1)−2v(si) +v(si+1))

+w2(si+1) (v(si)−2v(si+1) +v(si+2))

⎟ ⎠

= 2

w2(si−1) (vi−2−2vi−1+vi)

−2w2(si) (vi−1−2vi+vi+1) +w2(si+1) (vi−2vi+1+vi+2)

. (3.33)

Substituindo as Equações (3.30), (3.31) e (3.33) na equação (3.18), então a equação diferencial parcial de quarta ordem de Euler-Lagrange se torna

− 2 (w1(si+1) (vi+1−vi)−w1(si) (vi−vi−1))

+ 2

w2(si−1) (vi−2−2vi−1 +vi)−2w2(si) (vi−1−2vi+vi+1)

+w2(si+1) (vi−2vi+1+vi+2)

+ w(si) (Px(x(si), y(si)), Py(x(si), y(si)))

= 0. (3.34)

A expansão da equação vetorial dada em (3.34) resulta nas equações

⎧ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎨ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎩

−2 (w1(si+1) (xi+1−xi)−w1(si) (xi −xi−1))

+2 (w2(si−1) (xi−2−2xi−1+xi)−2w2(si) (xi−1−2xi+xi+1) +w2(si+1) (xi−2xi+1+xi+2))

+w(si) (Px(x(si), y(si)), Py(x(si), y(si))) = 0

−2 (w1(si+1) (yi+1−yi)−w1(si) (yi−yi−1))

+2 (w2(si−1) (yi−2−2yi−1+yi)−2w2(si) (yi−1−2yi +yi+1) +w2(si+1) (yi−2yi+1+yi+2))

+w(si) (Px(x(si), y(si)), Py(x(si), y(si))) = 0

(3.35) A condição dada pelas equações de Euler-Lagrange deve ser satisfeita pelosn vértices da linha poligonal. As Equações (3.35) podem ser escritas para todos os pontos em forma matricial A x y +W

Px(x, y)

Py(x, y)

= 0, (3.36)

(33)

30

• W é uma matriz diagonal formada pelas funções de ponderação w(si), ou seja,

⎛ ⎜ ⎜ ⎜ ⎜ ⎝

w(s1) 0 · · · 0

0 w(s2) · · · 0

... ... ... ...

0 0 · · · w(sn)

⎞ ⎟ ⎟ ⎟ ⎟ ⎠ ;

• x=#x1 x2 · · · xn

$T

;

• y =#y1 y2 · · · yn

$T

;

• Px(x, y) =

#

Px(x1, y1) Px(x2, y2) · · · Px(xn, yn)

$T

• Py(x, y) =

#

Py(x1, y1) Py(x2, y2) · · · Py(xn, yn)

$T

• A é uma matriz combinada (formada por sub-matrizes), dada pela equação

A=−2W1D2 + 2W2D4, (3.37)

na qual:

W1 =

⎛ ⎜ ⎜ ⎜ ⎜ ⎝

w1(s1) 0 · · · 0

0 w1(s2) · · · 0

... ... ... ...

0 0 · · · w1(sn)

⎞ ⎟ ⎟ ⎟ ⎟ ⎠ , (3.38)

W2 =

⎛ ⎜ ⎜ ⎜ ⎜ ⎝

w2(s1) 0 · · · 0

0 w2(s2) · · · 0

... ... ... ...

0 0 · · · w2(sn)

⎞ ⎟ ⎟ ⎟ ⎟ ⎠ , (3.39) D= ⎛ ⎜ ⎜ ⎜ ⎜ ⎝

−1 1 0 · · · 0 0 −1 1 · · · 0

... ... ... ... ...

0 0 0 · · · −1

⎞ ⎟ ⎟ ⎟ ⎟ ⎠ , (3.40) sendo

Di =

−Di−1DT,i par

Di−1D,i impar (3.41)

(34)

A solução do sistema dado em (3.36) pode ser calculada iterativamente através das equações

xt+1= (A+λI)−1[λxt−W Px(xt, yt)]

yt+1 = (A+λI)−1[λyt−W Py(xt, yt)]

(3.42)

onde t denota o número de iterações realizadas e λ é uma constante positiva usada para controlar a velocidade de convergência e estabilizar a solução. A convergência do sistema dado ocorre apóst+ 1 iterações se

|vt+1−vt|< T, (3.43) onde T é um limiar pré-estabelecido no início do processo de extração.

3.4

O Modelo Balloon

O modelo de snake apresentado na seção anterior é bastante dependente de uma boa aproximação inicial. Além disso, a curva pode ser presa por falsos pontos de borda (provocados por algum ruído na imagem) e não possuir força para evoluir para o contorno desejado. Por isso em [3] é proposto o modelo de snake balloon, onde são definidas novas forças e um funcional potencial. Uma das forças definidas no modelo de snake balloon está associada com a normalização da força da imagem, fazendo com que a expansão da curva ocorra com mesma velocidade em todos os seus pontos. A outra força está associada com a convergência da curva, garantindo a expansão da curva nas direções normais aos vértices do polígono até encontrar as regiões de interesse.

As duas modificações apresentadas em [3], são as seguintes:

Normalização da Força: O potencial P (v(s)) = − |∇G(v)|2 e a força externa

F(v) = −∇P(v(s)), que são baseados em dados da imagem foram utilizados no modelo original de snake. Quando o potencialP(v(s))e a força externaF (v)são aplicados sobre uma curva para extrair feições de um objeto qualquer, a força baseada no gradiente da imagem faz com que a curva evolua em direção as regiões de alto gradiente, ou seja, para as regiões de borda do objeto. Esta evolução acontece de maneira desordenada, onde nem todos os pontos da curva encontram as regiões de interesse ao mesmo tempo.

Para se obter resultados mais estáveis, a força externa torna-se [3]:

F (v) =−k ∇P (v(s))

|∇P (v(s))|. (3.44)

Isto simula um passo de evolução local para cada ponto da curva v(s), fazendo com que os pontos da curva evoluam na mesma velocidade.

(35)

32

é inflado. Assim a força de pressão é dada por:

Fpressao =k1n(s). (3.45)

Esta força de pressão é definida com intuito de empurrar a curva exteriormente, como se fosse introduzido ar no seu interior. Ao mesmo tempo em que a curva se expande, a mesma é atraída para as bordas, como acontecia no modelo original de snake, apresentado na Seção (3.3).

A força de pressão evita que a curva seja presa por falsos pontos de borda, pois pode ser controlada pelo termo de amplitude (k1) e faz com que o resultado final seja menos

sensível as condições iniciais.

Assim com a adição das Equações (3.44) e (3.45) a força F passa a ser [3]:

F =k1n(s)−k

∇P(v(s))

|∇P(v(s))|, (3.46)

onde n(s) é o vetor normal unitário da curva no ponto s, k1 é a amplitude desta força,

que indica inflação (quandok1 é positivo) ou deflação (quando k1 é negativo) e k é o peso

associado à normalização da força. O valor do peso k deve ser ligeiramente maior quek1,

pois assim um ponto de borda pode parar a força de inflação [3].

Esta forçaF também pode ser interpretada como o gradiente de um termo de energia externa, este seria um termo de superfície Earea = −k1

dA, medindo a área dentro da região delimitada pela curva. O significado de minimizar este termo de energia é o mesmo que obter a região interior à curva tão grande quanto possível, tal efeito é obtido pela força puxando a curva na direção do vetor normal.

A Figura (3.3) ilustra um retângulo preto sobre um fundo branco e uma curva que é inserida dentro do retângulo. Sem a ação da força de inflação a curva deve contrair sobre si mesma, não avançando para uma nova posição. Partindo da mesma curva, mas agora usando a força de inflação, o retângulo inteiro seria obtido.

Figura 3.3: Ação de uma Curva Snake Utilizando a Força de Inflação.

(36)

da posição v(s). Um destes potenciais é dado por:

P(v) = −e−d(v)2

, (3.47)

onde d(v) é a distância entre um ponto v(s) e a borda mais próxima. A unidade de distância é o tamanho do pixel.

Pode-se observar que quando v(s)é um ponto de borda, ou seja, d(v(s)) = 0, tem-se

P(v) = −1, e quanto maior a distância entre o ponto v(s) e a borda, mais próximo de 0

é o valor deP (v), ou seja, este potencial faz com que os pontos de borda tenham maior influência sobre o funcional de energia.

Outro potencial utilizado por Cohen et al. [4], é dado por:

P (v) =

−1 se d(v)<1

−1

d(v) caso contrário.

(3.48)

Este potencial produz uma convergência mais rápida em relação ao potencial ante-rior, pois os seus valores decaem mais lentamente, produzindo forças maiores em pontos distantes das bordas.

Assim a energia do modelo de snake balloon, pode ser dada por [3]:

E2(v) =

Ω

w1(s)|vs|2+w2(s)|vss|2

ds+

Ω

P (v)ds. (3.49)

onde o termo de energia interna dado sobre a primeira integral é o mesmo do modelo de snake original apresentado na seção anterior, e o potencialP pode ser um dos apresentados pelas Equações (3.47) ou (3.48).

Para solucionar o funcional de energia snake balloon são feitos os mesmo cálculos do modelo original de snake. São procurados os vércices vt que satisfazem as equações diferenciais parciais de Euler-Lagrange de quarta ordem e como tais equações não possuem solução analítica então são utilizados métodos numéricos. Desse modo a solução pode ser calculada iterativamente através da equação

vt+1 = [A+λI)−1[λvt−W P(xt, yt) +Fpressao]. (3.50) onde t denota o número de iterações realizadas e λ é uma constante positiva usada para controlar a velocidade de convergência e estabilizar a solução. A convergência do sistema dado ocorre apóst+ 1 iterações se

(37)

Capítulo

4

Programação Dinâmica

Em otimização o conceito de programa está relacionado como problema de dominar, de forma ótima, uma situação proposta. Tal conceito surgiu originalmente na economia e diz respeito ao desenvolvimento de planejamentos ótimos de produção.

4.1

Problema do Caminho Simples

Suponha que numa cidade imaginária as ruas (todas de mão única) estejam dispostas de acordo com a configuração mostrada na Figura (4.1) [2].

A B C E H L O D G P N K I F M J 1 5 2 3 5 2 1 4 2 4 3 0 4 2 2 1 4 8 5 2 2 7 1 3

Figura 4.1: Mapa da Cidade com Ruas de Mão Única.

(38)

Cada letra representa uma esquina e os números representam o custo (tempo, com-bustível, ...) para se utilizar a respectiva rua. O objetivo é encontrar o caminho de A até

B que possua o menor custo associado possível.

O método mais simples de resolver o problema é enumerar todos os caminhos possíveis e comparar os custos totais de cada caminho. O esforço computacional necessário para executar este método é tal que:

• Existem 20 diferentes caminhos de A até B. De fato, de H a B existe um único caminho e ídem de K a B. De I a B existem 3 caminhos e ídem de J a B. Logo, existem 4 caminhos de E aB, 4 caminhos de GaB e 6 caminhos deF aB. Então, existem 10 caminhos de C a B e 10 caminhos deD a B.

• Para cada caminho realiza-se 5 somas, a fim de computar o custo total.

• Precisa-se ainda de 19 comparações para encontrar o menor custo.

Utilizando o princípio é desenvolvida a idéia da programação dinâmica.

• Um caminho ótimo de A até B passa obrigatoriamente ou por C ou por D.

• se Pc é um caminho ótimo de C até B de custo pc e Pd é um caminho ótimo de D até B de custo pd, é possível determinar o caminho ótimo de A até B somando a

pc o custo da rua de A a C, somando a pd o custo da rua de A a D e escolhendo a menor das somas.

Desta forma o caminho ótimo fica estabelecido. Observe que o procedimento acima descrito é baseado no princípio de Bellman:

Uma vez descoberto o caminho até C(ou D), determine o restante do caminho de modo que este seja ótimo de C (ou D) até B.

Seja V (Q1, Q2) o custo do caminho ótimo de Q1 a Q2 e d(Q1, Q2) o custo da rua

unindoQ1 eQ2. De acordo com o princípio de otimalidade temos:

V (A, B) = min{V (C, B) +d(A, C) ;V (D, B) +d(A, D)}. (4.1)

Note-que V (C, B) e V (D, B) são ainda desconhecidos. Para cálculá-los é preciso conhecer os caminho ótimos de C a B e de D a B, respectivamente. Para isso aplica-se recursivamente o princípio de otimalidade. Os próximos valores necessários são os de

V (E, B)e V (F, B). A partir deles calcula-se

V (C, B) = min{V (E, B) +d(C, E) ;V (F, B) +d(C, F)}, (4.2)

(39)

36

Prosseguindo desta forma chega-se finalmente a

V (M, B) = min{V (O, B) +d(M, O) ;V (P, B) +d(M, P)}. (4.4)

MasV (O, B) =d(O, B)eV (P, B) = d(O, P)são conhecidos. Sendo assim, é possível calcular os caminhos ótimos de trás para frente, simplesmente calculando os valores da função V (., .).

• V (O, B) = 2,V (P, B) = 1;

• V (L, B) = 5 + 2 = 7, V (N, B) = 4 + 1 = 5, V (M, B) = min{2 + 2,1 + 8} = 4

(isto é, quando o caminho ótimo passa por M ele tem que continuar por O);

• V (H, B) = 3 + 5 + 2 = 10,V (K, B) = 2 + 4 + 1 = 7,

V (J, B) = min{4 + 2,5 + 2}= 6 (caminho JM...),

V (I, B) = min{7 + 3,4 + 4}= 8 (caminho IM...);

• V (E, B) = min{10 + 2,8 + 1}= 9(caminhoEI...),V (F, B) = min{8 + 1,6 + 2}= 8 (caminho F J...),V (G, B) = min{6 + 5,7 + 4}= 11 (caminho GJ... ouGK...);

• V (C, B) = min{9 + 5,8 + 4}= 12(caminhoCF...),V (D, B) = min{8 + 7,11 + 3}= 14 (caminho DG...);

• V (A, B) = min{12 + 1,14 + 0}= 13 (caminho AC...).

O caminho ótimo deA aB é então: A−C−F −J−M−O−B e o custo mínimo é

V (A, B) = 13.

A seguir o problema é apresentado de maneira mais formal [11]. Define-se um conjunto de nós {Pi},i = 1,2, . . . , n, e com uma matriz custo associada [Cij], onde Cij é o custo para ir do nó Pi para o nó Pj. O problema de otimização é encontrar o mínimo custo necessário para ir do nó inicial PA até o nó final PN e o caminho associado.

Sejam agorag(i, j) a função de duas variáveis (ou função custo) que descreve o custo envolvido na movimentação do nó Pi para o nó Pj, de modo ótimo, e s é o conjunto de nós ótimos ao longo do caminho. Pode-se escrever:

g(i, j) = g(i, s) +g(s, j). (4.5)

Para encontrar o caminho ótimo entre os nós Pi e Pj é necessário encontrar g(i, j) e um conjuntos que satisfaça:

g(i, j) = min

(40)

Esta Equação (4.6) é conhecida como equação funcional de movimento [11], pois nela está implícita a decisão de quais nós de sdevem ser escolhidos na construção do caminho entre os nós Pi e Pj. Se nenhuma restrição for imposta, a Expressão (4.6) estabelece um problema geral de busca em grafo. Entretanto, se o grafo for similar a aquele apresentado na Figura (4.1), onde apenas alguns nós estão diretamente conectados, então a busca pelo caminho ótimo envolve um procedimento de otimização sequencial e, como tal, um algoritmo eficiente para resolver o problema é o da programação dinâmica.

Cabe lembrar, que o uso de programação dinâmica não implica somente em encontrar o mínimo da função custo, mas também pode-se utilizar o processo para se estabelecer o máximo da função.

4.2

Algoritmo para Resolução do Problema de

Progra-mação Dinâmica

De acordo com o exposto, programação dinâmica é a técnica utilizada para a reso-lução de problemas de otimização quando nem todas as variáveis da função custo estão simultaneamente inter-relacionadas [1]. Considerar o problema de encontrar o mínimo M

da função:

g =g(x1, x2, . . . , xn), (4.7) onde xi, i= 1,2, . . . , n, são valores tomados em um domínio discreto.

Portanto, o objetivo é encontrar a n-upla(x1, x2, . . . , xn)que minimiza a Função (4.7). Se nada é conhecido sobre g, então a única técnica que garante um mínimo global é a enumeração exaustiva de todas as combinações dos valores discretos de x1, x2, . . ., xn [1]. Contudo, se nem todas as variáveis são simultaneamente inter-relacionadas, então o algoritmo de programação dinâmica pode ser aplicado para resolver o problema, isto é, o problema é passível de decomposição em uma sequência de problemas isolados mais simples unidos por via recursiva. Supor então que:

g(x1, x2, . . . , xn) =g1(x1, x2, x3) +. . .+gn−2(xn−2, xn−1, xn). (4.8) Onde a função g1 depende apenas de x1,x2 e x3, a função g2 apenas de x2, x3 e x4, e

assim por diante.

Assim posto o problema, o valor mínimo da Função (4.8) pode ser encontrado através de um processo de eliminação sequencial das variáveis envolvidas.

O processo se inicia então com a eliminação da variável x1. Como as funções g2,

. . . ,gn−2 não dependem de x1, somente a funçãog1 deve ser considerada nesse momento,

(41)

38

minimiza g1, para cada par (x2, x3), isto é:

f1(x2, x3) = min

x1

[g1(x1, x2, x3)]. (4.9)

O processo continua com a eliminação da variável x2, sendo que o mesmo princípio é

aplicado, ou seja, escolhe-se x2 que minimizag1, para cada par (x3, x4), como segue:

f2(x3, x4) = min

x2

[f1(x2, x3) +g2(x2, x3, x4)]. (4.10)

A eliminação das demais variáveis segue o mesmo princípio da etapa anterior. Entre-tanto, é conveniente formalizar a eliminação das duas últimas variáveis (xn−1, xn), como segue:

fn−1(xn, xn) = min xn−1

[fn−2(xn−1, xn)] (4.11)

M = min (g) = min

xn [fn−1(xn, xn)] (4.12) Encontra-se dessa forma o mínimo M e parte-se dessa forma para a segunda parte do objetivo, que é encontrar a n-upla (x1, x2, . . . , xn) que quando aplicada à função g proporciona o valor mínimo M.

Notar que a primeira parte do problema é resolvida em n −1 estágios, sendo que cada qual proporcionou a eliminação de uma variável da funçãog, pela seleção de valores de (xk+1, xk+2) que minimizavam fk. Este procedimento permite gerar tabelas com o padrão mostrado na Figura (4.2), onde para cada realização do par (xk+1, xk+2) há uma

realização de xk, cujo valor da função fk(xk+1, xk+2) é mínima. Todas as n−1 tabelas

geradas devem ser armazenadas para possibilitar posteriormente a solução da segunda parte do problema.

x

k

f x

k

(

k+1

,x

k+2

)

Figura 4.2: Padrão das Tabelas de Mínimo de fk. (Fonte: Adaptado de Dal Poz (2000))

A solução da segunda parte do problema baseia-se, principalmente, num procedimento de retro-busca pelasn−1 tabelas de mínimos, isto é, a partir do menor valor defn−1, da

tabela(n−1), encontram-se os respectivos xn e xn−1 e seguindo o caminho inverso pelas

(42)

problema de otimização:

f0(x1, x2) = 0, (4.13)

fk(xk+1, xk+2) = min

xk [fk−1(xk, xk+1) +gk(xk, xk+1, xk+2)], (4.14)

fn−1(xn, xn) = min xn1

[fn−2(xn−1, xn)], (4.15)

M = min [g] = min

xn [fn−1(xn, xn)], (4.16)

(xn−1, xn) = arg (min [fn−1(xn, xn)]) (4.17)

xk=retroagindo em(xk+1, xk+2) (4.18)

As fórmulas recursivas (4.13), (4.14), (4.15) e (4.16) são usadas para construir asn−1

tabelas de mínimos. A busca pelo vetor solução(x1, x2, . . . , xn)é iniciada com a expressão (4.17), que possibilita a identificação de quais as realizações dexn−1exnrespectivamente, (xn−1exn) que minimizam a funçãog. As demais realizações(x1, x2, . . . , xn−2)são obtidas

retroagindo-se pelas n−1 tabelas, conforme mostra a expressão (4.18). Por exemplo, começando com a (n−1)-ésima tabela, verifica-se qual linha contém as realizações xn−1

e xn (isto é, k =n−2), permitindo a identificação da melhor realização de xn−2, isto é,

xn−2. Na sequência, tendo agora por base as realizações xn−2 e xn−1 (isto é, k =n−3),

repete-se o procedimento para a (n−2)-ésima tabela, permitindo, desta vez, a obtenção da realização ótima dexn−3, isto é, xn−3. Este procedimento é repetido até que a realização

x1 de x1 seja obtida.

Em [1] é apresentado um exemplo bem simples, onden = 4 e as funções gi dependem apenas de 2 variáveis. Neste exemplo, cada x pode ser tomado de uma terna de valores discretos. As funções gi são completamente descritas pelas Tabelas (4.1), (4.2) e (4.3). Por exemplo, o valor g1(0,1) = 5.

Tabela 4.1: Função g1(x1, x2).

x2

1 2 3

0 5 7 3

x1 1 2 1 8

2 6 3 3

Tabela 4.2: Função g2(x2, x3).

x3

-1 0 1

1 1 7 1

x2 2 1 1 3

(43)

40

Tabela 4.3: Função g3(x3, x4).

x4

1 2 3

-1 7 9 8

x3 0 2 3 6

1 5 4 1

Na Tabela (4.4) tem-se o passo 1:

Tabela 4.4: Primeiro Passo de Resolução.

x2 f1 x1

1 2 1

2 1 1

3 3 0

Na Tabela (4.4), para cada valor de x2 tem-se o respectivo valor de x1 que minimiza

g1(x1, x2), retendo-se dessa forma os menores valores de g1. A construção da função

f1(x2) baseia-se nas fórmulas de recursão (4.13) e (4.14), ficando, para o exemplo em

discussão:

f1(x2) = min

x1

[f0(x1) +g1(x1, x2)], comf0(x1) = 0. (4.19)

Aplicando a Equação (4.19) para os possíveis valores dex2 (isto é, 1, 2 e 3) obtém-se

os respectivos valores def1(x2):

f1(1) = min

x1

[f0(1) +g1(1,1)] = 2, (4.20)

f1(2) = min

x1

[f0(1) +g1(1,2)] = 1, (4.21)

f1(3) = min

x1

[f0(0) +g1(0,3)] = 3, (4.22)

Nas Tabelas (4.5) e (4.6) tem-se o passo 2. Notar que a Tabela (4.5) é formada pela adição dos elementos f1(x2) às respectivas linhas de g2(x2, x3). Este passo baseia-se na

seguinte fórmula de recursão:

f2(x3) = min

x2

[f1(x2) +g2(x2, x3)], (4.23)

A Tabela (4.5) é montada usando o argumento do operador min [.]da Equação (4.23). Por exemplo, para montar a primeira linha (valores 10, 12 e 11) basta fixar x2 = 1 e

atribuir àx3 os valores -1, 0 e 1.

f2(−1) = min

x2

[f1(1) +g2(1,−1)] = 3, (4.24)

f2(0) = min

x2

(44)

f2(1) = min

x2

[f1(1) +g2(1,1)] = 3. (4.26)

Fixandox2 = 2, temos:

f2(−1) = min

x2

[f1(2) +g2(2,−1)] = 2, (4.27)

f2(0) = min

x2

[f1(2) +g2(2,0)] = 2, (4.28)

f2(1) = min

x2

[f1(2) +g2(2,1)] = 4. (4.29)

Fixandox2 = 3, temos:

f2(−1) = min

x2

[f1(3) +g2(3,−1)] = 8, (4.30)

f2(0) = min

x2

[f1(3) +g2(3,0)] = 9, (4.31)

f2(1) = min

x2

[f1(3) +g2(3,1)] = 5. (4.32)

Agora, para completar o passo 2, computam-se os mínimos a partir da Tabela (4.5), como no passo 1, obtendo-se, dessa forma, f2(x3)(Tabela (4.6)):

Tabela 4.5: Segundo Passo de Resolução f1(x2) +g2(x2, x3).

x3

-1 0 1

1 3 9 3

x2 2 2 2 4

3 8 9 5

Tabela 4.6: Função f2(x3).

x3 f2 x2

-1 2 2

0 2 2

1 3 1

A montagem das Tabelas (4.7) e (4.8) é realizada de forma análoga ao procedimento descrito para a montagem das tabelas do passo anterior, fixamos x3 e variamosx4. Nesse

caso, a seguinte fórmula de recursão deve ser utilizada:

f3(x4) = min

x3

[f2(x3) +g3(x3, x4)], (4.33)

Fixado x3 =−1, temos:

f3(1) = min

x3

(45)

42

f3(2) = min

x3

[f2(−1) +g3(−1,2)] = 11, (4.35)

f3(3) = min

x3

[f2(−1) +g3(−1,3)] = 10, (4.36)

Fixado x3 = 0, temos:

f3(1) = min

x3

[f2(0) +g3(0,1)] = 4, (4.37)

f3(2) = min

x3

[f2(0) +g3(0,2)] = 5, (4.38)

f3(3) = min

x3

[f2(0) +g3(0,3)] = 8, (4.39)

Fixado x3 = 1, temos:

f3(1) = min

x3

[f2(1) +g3(1,1)] = 8, (4.40)

f3(2) = min

x3

[f2(1) +g3(1,2)] = 7, (4.41)

f3(3) = min

x3

[f2(1) +g3(1,3)] = 4. (4.42)

Tabela 4.7: Terceiro Passo de Resolução f2(x3) +g3(x3, x4).

x4

1 2 3

-1 9 11 10

x3 0 4 5 8

1 8 7 4

Tabela 4.8: Função f3(x4).

x4 f3 x3

1 4 0

2 5 0

3 4 1

A solução é encontrada pelo traçado em sentido contrário, seguindo-se as 3 tabelas no sentido inverso, respectivamente, as Tabelas (4.8), (4.6) e (4.4). Assim, tomando o menor

f3(x4), vê-se que x4 = 1 e x3 = 0. Retrocedendo à Tabela f2(x3), encontra-se x2 = 2,

pois é este valor que está relacionado a x3 = 0, da tabela anterior. Em seguida, seguindo

o caminho inverso, encontra-se x1 = 1, que é o valor relacionado a x2 = 2, em f1(x2).

Assim, tem-se a solução ótimag(x1, x2, x3, x4) = 4, com x1 = 1, x2 = 2,x3 = 0 ex4 = 1.

Retornando-se agora ao caso mais geral (Eq. (4.8)), e levando-se em conta as Equações (4.13) e (4.14), pode-se resumir o algoritmo descrito através dos seguintes passos:

(46)

• construir a tabela de mínimos para a função fk(xk+1, xk+2);

• se k < n−1, então fazer k =k+ 1 e ir para o passo anterior;

• tomar o valor n defn−1 e retroagir pelasn−1tabelas para obter a ênupla solução.

O fluxo acima pode ser melhor visualizado através da Figura (4.3).

!

(47)

44

A seguir são apresentados alguns comentários adicionais sobre o algoritmo apresentado [11]

• o procedimento apresentado é ótimo, pois todas as possibilidades são avaliadas;

• considerando-se que cada uma das n variáveis assumem valores discretos, o esforço computacional é O(nm3);

• uma possibilidade interessante desse algoritmo é a introdução de injunções de de-sigualdade. Por exemplo, na extração de contorno de edifício, pontos que superam um determinado limiar de curvatura não são avaliados;

• o algoritmo pode ser utilizado para encontrar o valor máximo, em vez do mínimo. Para isso, basta substituir o operador min (.) por max (.);

• a equação (4.8) pode ser estendida para um caso mais geral, onde cada variável depende de p subsequente variáveis. Para o caso analisado p= 3. A complexidade computacional cresce exponencialmente com o aumento de p;

(48)

5

Modelo Digital de Superfície

Normalizado

Este capítulo apresenta algumas noções básicas sobre o sistema de varredura a laser e a construção do MDSn, propiciando o entendimento da origem e natureza dos dados utilizados nesta pesquisa.

5.0.1

Posicionamento e Orientação pelo Sistema de Varredura a

Laser

A Figura (5.1) mostra o princípio de posicionamento, onde os feixes laser são repre-sentados por vetores 3D. Cada vetor tem origem no ponto de emissão do laser (E) e o ponto terminal (P) sobre a superfície física (SF). O objetivo é a determinação dos pontos terminais dos vetores 3D, permitindo a descrição geométrica da superfície física da Terra e de objetos sobre ela. O conjunto desses pontos determinados é denominado nuvem de pontos.

E

GPS/IMU

P SF

Sensor Laser

Figura 5.1: Princípio de Varredura a Laser.

(49)

46

Um dado vetor EP−→ fica totalmente determinado através dos seguintes parâmetros geométricos do respectivo feixe laser:

• Ponto origem (E) do feixe laser;

• Orientação do feixe laser;

• Distância EP

O ponto origem (E), que corresponde a posição do sensor na hora da medição de cada ponto, é determinado mediante um sistema de DGPS obtendo-se as posiçõesXGP S,YGP S,

ZGP S.

A orientação do feixe laser é determinada pelo sistema IMU, que é encarregado de calcular a inclinação (ω, ϕ, κ) do sensor em torno dos eixos x,y ez, respectivamente.

A distância (EP) entre o sensor e a superfície física é determinada através do sensor laser que mede o tempo de propagação do feixe entre os pontosEeP, e pode ser calculada através da seguinte equação:

EP = 1

2tc. (5.1)

Onde t é o tempo de percurso do feixe laser e c é a velocidade da luz ((c ∼= 300 × 103km/s)).

Esses parâmetros geométricos permitem determinar as coordenadas 3D do ponto P, entretanto sem nenhuma redundância. Isto significa que erros cometidos nas medidas dos parâmetros geométricos do feixe não podem ser verificados internamente.

Após a determinação das coordenadas tridimensionais de cada ponto, o resultado é uma malha irregular. Para a produção de modelos digitais de elevação, como o MDT (Mo-delo Digital de Terreno) e o MDS (Mo(Mo-delo Digital de Superfície), é necessário interpolar essa malha irregular para gerar uma grade regular. O MDT é uma grade regular que representa apenas a superfície topográfica, não contendo edificações nem objetos feitos pelo homem. Já o MDS representa além da topografia, todas as feições que estão sobre a superfície terrestre, como edificações, vegetações, etc.

5.1

Modelagem de Dados de Elevação e Representação

de Superfícies

(50)

A perfilagem dos dados é uma das técnicas mais empregadas para a obtenção de informações espaciais para fins de modelagem matemática de superfícies. Neste caso, o processo consiste em obter pontos representativos de relevo na região de estudo.

Os dados da varredura a laser consistem de uma perfilagem irregular onde não se tem o exato espaçamento de pontos no perfil ou entre perfis [5].

Existem várias metodologias para a elaboração de modelos de superfície. De forma geral, os pontos amostrados são interligados formando triângulos e estes formando um poliedro. Desta maneira, a superfície é aproximada por um modelo que é um poliedro cujos vértices são os pontos amostrados [17]. Os métodos mais usados para representar superfícies digitalmente são o TIN (Triangulated Irregular Network) e a malha regular. Interessa-se aqui pelo modelo de malha regular.

Uma malha regular pode ser vista como um arranjo regular de pontos no plano (x, y)

de referência de cotagem das alturas, sendo que em cada um desses pontos se tem a altura

(z) do ponto correspondente na superfície. Cada ponto da superfície pode ser obtido por um processo de interpolação de uma malha irregularmente amostrada de pontos.

Uma das considerações importantes a respeito da malha regular é o espaçamento a ser estabelecido entre os pontos no plano de referência das alturas [17]. Um valor excessivamente pequeno proporciona um aumento na fidelidade da modelagem em regiões muito movimentadas, mas nada oferece em regiões pouco movimentadas, acarretando num aumento significativo de tempo de processamento. Por outro lado, um valor grande, diminui o tempo de processamento, mas acarreta em perda de fidelidade em regiões muito movimentadas.

A modelagem do terreno usando uma malha regular requer algum método de inter-polação para regularizar a malha irregular, obtida originalmente por algum método de amostragem. Entre os métodos mais conhecidos, pode-se citar a interpolação por splines, elementos finitos, krigagem e vizinho mais próximo [6]. Dentre esses métodos, o mais comum é a interpolação pelo vizinho mais próximo. Este método é relativamente sim-ples e exige menor tempo computacional. Este método costuma ser bastante utilizado quando se deseja interpolar pontos relacionados com edificações, isto porque as linhas de descontinuidades (limites de telhados ou paredes) não são suavizadas.

Existem várias formas de representação discreta de superfície baseada na estrutura de malha regular. As principais são:

Referências

Documentos relacionados

F REQUÊNCIAS PRÓPRIAS E MODOS DE VIBRAÇÃO ( MÉTODO ANALÍTICO ) ... O RIENTAÇÃO PELAS EQUAÇÕES DE PROPAGAÇÃO DE VIBRAÇÕES ... P REVISÃO DOS VALORES MÁXIMOS DE PPV ...

As questões acima foram a motivação para o desenvolvimento deste artigo, orientar o desenvol- vedor sobre o impacto que as cores podem causar no layout do aplicativo,

As etapas principais para instalar e iniciar o uso do Tivoli Identity Manager Server variam dependendo se a instalação é para servidor único ou para configuração em cluster..

Em números absolutos, os resultados mostraram que as regiões médio-norte e nordeste apresentaram a maior amostragem de produtores rurais que expandiram a sua área agrícola através

For additional support to design options the structural analysis of the Vila Fria bridge was carried out using a 3D structural numerical model using the finite element method by

Dessa maneira, os resultados desta tese são uma síntese que propõe o uso de índices não convencionais de conforto térmico, utilizando o Índice de Temperatura de Globo Negro e

Purpose: This thesis aims to describe dietary salt intake and to examine potential factors that could help to reduce salt intake. Thus aims to contribute to

Este estudo, assim, aproveitou uma estrutura útil (categorização) para organizar dados o que facilitou a sistematização das conclusões. Em se tratando do alinhamento dos