• Nenhum resultado encontrado

Extração de Contornos de Telhados Usando Princípios de Snake Balloon

N/A
N/A
Protected

Academic year: 2021

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

1. Snake Balloon. 2. Programação Dinâmica. 3. Modelo Digital de Superfície Normalizado. I. Dal Poz, Aluir Porfírio. II. Nogueira, José Roberto. III. Universidade Estadual Paulista. Faculdade de Ciências e Tecnologia. IV. Título.

(4)
(5)

Aos meus pais, José e Lúcia. Dedico!

(6)

Agradecimentos

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.

Os amigos. Inicialmente agradeço aqueles que comigo formaram a primeira turma do curso de mestrado do PosMAC: Cláudio, Danilo (in memoriam), Marcelo, Marilaine, Mar-luce, Marluci, Tamiris, e em especial a amiga Vanderléa que não hesitou em dividir seus conhecimentos acadêmicos, mostrando-se uma pessoa humana e de grande coração. Quero agradecer também aos amigos da segunda turma: Camila, Clóvis (Choko, Dalai Lama,

(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.

E pra finalizar, agradeço a todas as pessoas que direta ou indiretamente contribuíram para a execução dessa dissertação de mestrado.

(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.

Palavras-chave: Snake Balloon; Programação Dinâmica; Modelo Digital de Superfície normalizado.

(10)

Abstract

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

7.1 Teste 1: (a) Ponto Semente Dado Pelo Operador. (b), (c), (d) e (e) Evolução da Curva. (f) Contorno Extraído. . . 63

(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 7.10 Contorno Extraído Manualmente Utilizado na Análise Numérica do

(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)

Sumário

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 11

(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 de snake 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 de snakes 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. As snakes 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 de snake 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 de snake 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 energia snake 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

Os objetivos deste trabalho são desenvolver e implementar um método de extração de contornos de telhados convexos de edifícios, onde o modelo de snake balloon é utilizado como base para a construção de um modelo matemático representando os contornos. Mais especificamente, propõe-se: desenvolver uma estratégia de solução do problema de

(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

A dissertação está organizada da seguinte forma. Os Capítulos (2), (3), (4) e (5) apresentam a revisão teórica fundamental para o método proposto. No Capítulo (2) são apresentados alguns conceitos básicos de detecção de bordas. No Capítulo (3) é apresentado o conceito de snakes, essencial para a construção do modelo matemático representando contornos de telhado de edifícios. O Capítulo (4) apresenta o algoritmo de PD, utilizado para resolver problemas de otimização. O Capítulo (5) traz uma breve introdução sobre a elaboração de um MDSn a partir de dados de varredura a laser. O Capítulo (6) descreve detalhadamente o método proposto. No Capítulo (7) são mostrados alguns testes numéricos, com intuito de verificar visualmente e numericamente se o método funciona de forma eficiente. O Capítulo (8) traz algumas considerações finais a respeito deste trabalho.

(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].

Extração automática de polígonos representando contornos de telhado a partir de um MDS

normalizado.

Relatório Parcial IC/FAPESP – Processo 2010/07997-2

27

Figura 7 - (a) Primeira derivada sem a influência de ruído; e (b) Segunda derivada sem a

influência de ruído. (Fonte: Adaptado de GONZALEZ e WOODS, 2000).

Toda a descrição anterior foi para o caso unidimensional. Em duas dimensões, a

primeira derivada é definida pelo gradiente e a segunda derivada é aproximada pelo

Laplaciano ou pela segunda derivada na direção do gradiente.

2.5.2

Propriedades básicas dos detectores de bordas

Um detector de bordas tem por objetivo básico gerar um mapa de bordas a partir

de uma dada imagem. Existe uma variedade de detectores de bordas, que se diferenciam em

relação às diferentes propostas e propriedades matemáticas dos algoritmos. Dependendo do

detector, o mapa de bordas inclui informações sobre a posição, intensidade e orientação das

bordas.

Conceitualmente, os esquemas mais comuns para detectar bordas incluem três

operações básicas (ZIOU e TABBONE, 1998): diferenciação, suavização e rotulação. A

diferenciação consiste no cálculo da derivada da imagem. A suavização consiste na redução

do nível de ruído da imagem e na regularização da diferenciação numérica. A rotulação é a

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]).

Toda a descrição anterior foi limitada para o caso unidimensional. Já para o caso bidimensional, a primeira derivada é definida pelo vetor gradiente e a segunda derivada pelo Laplaciano.

(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 por f (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 ) = G2 x+ G 2 y 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ça f (x + 1, y) − f (x, y) como derivada parcial em relação à x e f (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 tamanho 1×2 e 2×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)

Uma outra abordagem para aproximação da Equação (2.2) é usar o operador de Sobel, cujas derivadas parciais são dadas por [8]

(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 tamanho 3 × 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.

Existem vários outros operadores de gradiente na literatura, podendo-se citar os ope-radores de Roberts e Prewitt. Neste trabalho foi utilizado o operador de Sobel para estimar os gradientes de borda.

(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 de snake 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 tempo t vai passando o sistema pode "evoluir"ou "mover"de um estado v (t1) = (v1(t1) , ..., vd(t1)) para outro v (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) = Z 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 ∂ ˙vi  − ∂L ∂vi = 0, i = 1, ..., d, (3.2)

com as condições de contorno que fixam os pontos extremos v (t1) e v (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.

Seja Eq(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 7→ 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 7→ Eq(v) = Pq m=1 Pd j1...jm=1 R Ωwm(s) ∂mv(s) ∂sj1∂sj2...∂sjm 2 ds +Rw (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 imagem A ⊂ Rd

do conjunto Ω, na qual cada componente é uma função paramétrica de p variáveis. O primeiro termo do funcional de energia Eq(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.

Conforme mencionado anteriormente, um modelo deformável generalizado pode ser visto como um objeto deformável composto por um material elástico abstrato. O estabili-zador funcional Sq(v) (1◦ termo da Equação (3.5)) representa a energia interna do objeto e

o segundo termo da mesma equação representa a energia potencial generalizada associada ao campo de forças externas aplicado sobre o objeto. Tais forças são derivadas dos dados e de propriedades inerentes a eles. Em termos de aproximação ótima, P (v (s)) é uma função penalizante, cuja tarefa é penalizar a discrepância entre a função v (s) e os dados. Os modelos generalizados têm d graus de liberdade de deformação, que representam o

(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 liberdade d denotam as posições ou deslocamentos dos pontos do modelo em um espaço euclidiano n-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 7→ 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 7→ E2(v) = R Ω 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 de s;

• Ω ⊂ 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;

1No presente trabalho, a palavra aparecerá na língua inglesa, por assim ser usada nos trabalhos que a ela se referem.

(27)

24

• vse vssdenotam 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 de v (s)) e de segunda ordem (dependente da segunda derivada de v (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 curva v (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 X m=1 Z Ω wm(s) dm dsm (v (s)) 2 ds + Z Ω w (s) P (v (s)) ds. (3.9)

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

E2(v) = Z Ω w1(s) d dsv (s) 2 ds + Z Ω w2(s) d2 ds2v (s) 2 ds + Z Ω w (s) P (v (s)) ds = Z Ω w1(s) d dsv (s) 2 + w2(s) d2 ds2v (s) 2 + w (s) P (v (s)) ! ds. (3.10) Considerando x (s) = x e y (s) = y, tem-se v (s) = (x, y) . (3.11)

Fazendo as derivadas de primeira e segunda ordem da função vetorial v (s) temos:

d dsv (s) =  dx ds, dy ds  ed 2 ds2v (s) =  d2x ds2, d2y ds2  . (3.12) Assim: d dsv (s) 2 = dx ds, dy ds  = dx ds 2 + dy ds 2 =   s  dx ds 2 + dy ds 2   2 ; (3.13) d2 ds2v (s) 2 = d 2x ds2, d2y ds2  = d 2x ds2 2 + d 2y ds2 2 =   s  d2x ds2 2 + d 2y ds2 2   2 . (3.14)

(28)

Substituindo (3.13) e (3.14) em (3.10), se obtém E2(v) = Z Ω  w1(s)   s  dx ds 2 + dy ds 2   2 + w2(s)   s  d2x ds2 2 + d 2y ds2 2   2 ds + Z Ω

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

por w1(s) e um termo de segunda ordem controlado por w2(s). Em modelos deformáveis

generalizados, as funções de ponderação wm(s), ou seja, w1(s) e w2(s) são utilizadas para

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

elasticidade, aumentando incentiva-se a snake ser não-suave, e w2(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 curva snake 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 cantos, como aquela ilustrada na Figura (3.2).

(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ção v (s). Em um caso extremo como o exemplificado pela Figura (3.2), quando w2(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 Eextlinha = Z Ω Plinha(v (s)) ds = Z Ω wlinhaG2(x (s) , y (s)) ds = wlinha Z Ω G2(x (s) , y (s)) ds, (3.16) onde Plinha(v (s)) = wlinhaG2(x (s) , y (s)) é uma função potencial de linha, na qual wlinha

é uma constante que depende do tipo de linha a ser extraída e G2(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

Eextborda = Z Ω Pborda(v (s)) ds = Z Ω wborda|∇G (x (s) , y (s))|2ds = wborda Z Ω |∇G (x (s) , y (s))|2ds, (3.17)

(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) e w (s) sejam dadas,

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

F (s, v, vs, vss) = αx2s(s) + y 2 s(s) + β x 2 ss(s) + y 2 ss(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)

A substituição de (3.21), (3.22) e (3.23) na equação diferencial parcial de Euler-Lagrange produz uma equação diferencial vetorial de quarta ordem, dada por

(31)

28 κ∂x∂ P (x, y) κ∂y∂P (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 considerando P (v (s)) = Eext(x (si) , y (si)). Assim, a Equação (3.8)

torna-se E2(v) = n X 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) Fazendo Px(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)  . (3.32)

(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 pelos n 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) onde:

(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ós t + 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 potencial P (v (s)) e a força externa F (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.

Força de Expansão: Em [3], é proposta uma força de pressão interna sobre a curva, fazendo com que o contorno tenha um comportamento mais dinâmico, como um "laço"que

(35)

32

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

Fpressao = k1~n (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 = k1~n (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 (quando k1 é 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 que k1,

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

Esta força F também pode ser interpretada como o gradiente de um termo de energia externa, este seria um termo de superfície Earea = −k1R 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.

No trabalho de Cohen et al. [4], foram formulados vários modelos de potenciais P , que não dependem do vetor normal ~n em uma posição v (s), sendo dependentes apenas

(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 de P (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) = Z Ω w1(s) |vs| 2 + w2(s) |vss| 2 ds +Z Ω 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 potencial P 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ós t + 1 iterações se

|vt+1− vt| < T, (3.51)

(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 a B, 4 caminhos de G a B e 6 caminhos de F a B. Então, existem 10 caminhos de C a B e 10 caminhos de D 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

unindo Q1 e Q2. 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)

Mas V (O, B) = d (O, B) e V (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 J M...),

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

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

• V (C, B) = min {9 + 5, 8 + 4} = 12 (caminho CF...), 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 de A a B é 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 agora g (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 conjunto s 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 s devem 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ção g1 deve ser considerada nesse momento,

sendo que tal possibilidade se justifica pelo fato das variáveis não estarem simultaneamente inter-relacionadas. A eliminação de x1 é realizada através da seleção do valor de x1 que

(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 minimiza g1, 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ção g, 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 pelas n − 1 tabelas de mínimos, isto é, a partir do menor valor de fn−1, da

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

tabelas (n − 2), (n − 3),. . . , 1, são encontrados os demais xi, respectivamente

(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 xn−1 [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 as n − 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 de xn−1 e xn respectivamente,

(xn−1e xn) que minimizam a função g. 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çõesxn−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 de xn−3, isto é, xn−3. Este procedimento é repetido até que a realização

x1 de x1 seja obtida.

Em [1] é apresentado um exemplo bem simples, onde n = 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 3 5 6 2

(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 de x2 (isto é, 1, 2 e 3) obtém-se

os respectivos valores de f1(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 [f1(1) + g2(1, 0)] = 9, (4.25)

(44)

f2(1) = min x2 [f1(1) + g2(1, 1)] = 3. (4.26) Fixando x2 = 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) Fixando x2 = 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 variamos x4. 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 [f2(−1) + g3(−1, 1)] = 9, (4.34)

(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 ótima g (x1, x2, x3, x4) = 4, com x1 = 1, x2 = 2, x3 = 0 e x4 = 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 de fn−1 e retroagir pelas n − 1 tabelas para obter a ênupla solução.

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

Fonte: Dal Poz (2000).

,  = max



,  + , ,   Construir e armazenar as tabelas de mínimos para:

,  = 0,  = 1

Tomar o mínimo  de  e retroagir pelas  − 1 tabelas

 =  + 1

, ̅, ̅ , … , ̅

 <  − 1

N S

(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 assume m 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.

Referências

Documentos relacionados

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

Todas as outras estações registaram valores muito abaixo dos registados no Instituto Geofísico de Coimbra e de Paços de Ferreira e a totalidade dos registos

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,

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

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

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