• Nenhum resultado encontrado

2012.1 TCC Isabela

N/A
N/A
Protected

Academic year: 2021

Share "2012.1 TCC Isabela"

Copied!
78
0
0

Texto

(1)

BACHARELADO EM ENGENHARIA DE COMPUTAÇÃO

ISABELA SANTOS GONÇALVES

DESENVOLVIMENTO DE UM SISTEMA REATIVO PARA DESVIO DE OBSTÁCULO

FEIRA DE SANTANA 2011

(2)

DESENVOLVIMENTO DE UM SISTEMA REATIVO PARA DESVIO DE OBSTÁCULO

Trabalho de Conclusão de Curso apresentado ao Colegiado de Engenharia de Computação como requisito parcial para obtenção do grau de Bacharel em Engenharia de Computação da Universidade Estadual de Feira de Santana. Orientador: Anfranserai Morais Dia

Co-Orientador: Antônio Lopes Apolinário Jr

Feira de Santana 2011

(3)
(4)

Agradeço aos meus pais Evilásio Gonçalves e Laura Gonçalves por todo apoio, dedicação, carinho, amor incondicional e por todos os sacrifícios que vocês fizeram e fazem por mim.

Agradeço a minha irmã Luana Santos Gonçalves por sempre acreditar em mim e me dá forças pra que eu consiga alcançar meus objetivos.

Agradeço a Fladmy Alves de Souza por ao longo desses quase cinco anos ter sido meu amigo, companheiro, confidente, namorado, por ter estado esse tempo todo ao meu lado, virando noites estudando, me incentivando, cuidando de mim, não me deixando desistir, compartilhando alegrias e também tristezas. Obrigada pela paciência nos meus momentos de desespero, por todo suporte que você foi pra mim. Se com você foi difícil nem consigo imaginar como teria sido sem você.

Agradeço a todos os meus colegas de sala e de curso em especial à Fernando Alberto Correia, Jhielson Pimentel, João Carlos Bittencourt e André Souza pois principalmente no início do curso a amizade e companhia de vocês foram fundamentais. Obrigada também a Luiz Bernardo, Igor Leonardo e Carlos Emanuel que, no decorrer do curso, passaram de bons colegas de PBL para excelentes amigos e fizeram dos meus dias bem mais divertidos.

Agradeço aos professores pelo conhecimento e experiência compartilhados e por sempre terem se mostrados dispostos a ajudar. Em especial agradeço ao professor Anfranserai Morais Dias pela orientação nesse trabalho, obrigada por ter estado sempre presente acompanhando, ajudando, me acalmando e incentivando nos momentos de dificuldades. Agradeço também ao professor Antônio Lopes Apolinário Jr por ter estado presente na minha vida acadêmica desde o início, primeiro como tutor desde a minha primeira aula no curso, posteriormente como orientador em projeto de pesquisa e agora como co-orientador. Obrigada também aos professores Claudio Eduardo Goes e Nilton Dantas por terem me ajudado com algumas dúvidas durante o desenvolvimento do projeto.

Enfim, obrigado a todos os “gigantes” que ajudaram direta ou indiretamente nessa conquista.

(5)

A robótica é uma área de estudo que cresce a cada dia mais, principalmente por automatizar e facilitar a realização de tarefas em diversos campos da sociedade. Dentre as diversas categorias de robôs, os robôs autônomos merecem destaque por possibilitarem a execução de tarefas perigosas ou até mesmo impossíveis de serem realizadas pelo homem. Porém, essa é uma área que ainda requer muitas pesquisas e avanços para que esses robôs possam realizar as mais diversas tarefas necessitando cada vez menos da intervenção do homem. O presente trabalho descreve o desenvolvimento de um sistema reativo para desvio de obstáculos que possa ser utilizado no auxílio a locomoção de robôs móveis autônomos. Um diferencial do trabalho é que o sistema será embarcado em hardware possibilitando um melhor aproveitamento dos recursos. O sistema final funciona da seguinte forma: utiliza-se um sensor infra-vermelho para indicar quando existe um obstáculo à frente do robô, sempre que houver um obstáculo há uma distância x (essa distância ainda não foi definida) o sensor irá indicar a presença de tal obstáculo e então será acionado o sistema embarcado na câmera que localizará o obstáculo na imagem, depois será calculado sua dimensão e então o ângulo que o robô deve rotacionar e a distância mínima que ele deve percorrer para contornar o obstáculo. Dessa forma o sistema contém 3 módulos principais. O módulo de extração de características, o qual é responsável por detectar os pontos extremos dos obstáculos, para isso foram implementadas 3 técnicas: A Transformada Probabilística de Hough, O Método do Gradiente - Processamento Local e o Método de Crescimento de Região. O módulo de calibração de câmera para que os pontos extremos do obstáculos que tiverem sido localizados na imagem possam ser transformados em pontos do mundo. Por fim, o módulo do cálculo do desvio que utiliza as informações provenientes dos módulos de extração de características e do módulo de calibração para calcular o ângulo e a distância mínima.

(6)

Robotics is a field of study that is growing every day more, mainly by automate and facilitate the realization of tasks in various fields of society. Among the various types of robots, autonomous robots deserve attention for they make possible the execution of hazardous tasks or even impossible of be realized by the man. However this is an area that still requires many research and advances for these robots can perform many different tasks requiring less of human intervention. This paper describes the development of a reactive system for obstacle avoidance that can be used for assistance in the locomotion of autonomous mobile robots. A differential this work is that the system will be embedded in hardware allowing a better use of resources. The final system works as follows: is used an infrared sensor to indicate when there is an obstacle in front of the robot, always there is an obstacle for a distance x (the distance is not yet defined), the sensor will indicate the presence of such an obstacle is then triggered the system embedded on the camera that finds the obstacle in the image, then its size will be calculated and then the angle the robot must rotate and the minimum distance that it must go through to get around the obstacle. Therefore the system contains three main modules. The feature extraction module, which is responsible for detecting the points extreme obstacles, for this was implemented three techniques: A Probabilistic Hough Transform, The Gradient Method - Local Process and Method Region Growing. The camera calibration module for the extreme points of the obstacles that have been located in the image can be transformed points in the world. Finally, the module for calculating the deviation using the information from feature extraction and calibration modules to calculate the angle and minimum distance.

(7)

Figura 1 Cubo representando o espaço de cores RGB . . . 17

Figura 2 Representação do Padrão 4:4:4 em relação aos componentes de luminância e crominância . . . 17

Figura 3 Representação do Padrão 4:2:2 em relação aos componentes de luminância e crominância . . . 18

Figura 4 Operador de Sobel: (a) Máscara para a direção horizontal (Gx) e (b) Máscara para a direção vertical (Gy) . . . 19

Figura 5 Exemplo dos dois espaços envolvidos na HT: (a) espaço da imagem, o espaço (x, y) e (b) espaço de parâmetros, o espaço (a, b) . . . 20

Figura 6 Espaço de parâmetros discretizado . . . 21

Figura 7 Fluxograma do algoritmo da HT para retas utilizando o espaço de parâmetros (a, b) . . . 21

Figura 8 Representação de retas em coordenadas polares . . . 22

Figura 9 Exemplo dos dois espaços: (a) espaço da imagem, o espaço (x,y) e (b) espaço de parâmetros, o espaço (θ , ρ) . . . 22

Figura 10 Fluxograma do algoritmo da HT para retas utilizando o espaço de parâmetros (θ , ρ) . . . 23

Figura 11 Fluxograma do método de gradiente . . . 27

Figura 12 Fluxograma do método por Thresholding . . . 28

(8)

Figura 15 Transformação do SCI para o SCP . . . 34

Figura 16 Transformação do SCM para o SCP . . . 35

Figura 17 Exemplo de Padrão Xadrez Coplanar . . . 37

Figura 18 Janelas 3x3 mostrando os vetores de 0°, 45°, 90° e 135°, respectivamente . . . . 37

Figura 19 Diagrama de Blocos do Sistema . . . 42

Figura 20 Modelo do protótipo físico . . . 43

Figura 21 Exemplos de projeção dos pontos do sensor na imagem capturada. . . 43

Figura 22 Surveyor SRV-1 Blackfin Camera . . . 45

Figura 23 Layout da placa projetada . . . 46

Figura 24 Espaço de parâmetros θ ρ discretizado . . . 48

Figura 25 Fluxograma da adaptação do método do gradiente para pixels pertencentes à uma borda vertical . . . 50

Figura 26 Fluxograma da adaptação do método do gradiente para pixels pertencentes à uma borda horizontal . . . 51

Figura 27 Exemplo de como as regiões foram divididas e a forma como são percorridas 52 Figura 28 Fluxograma para determinar as dimensões do obstáculo durante a execução do método de CR . . . 52

(9)

Figura 30 Cálculo da distância entre P1e Pc e entre Pce o P2para a escolha do lado que o

robô deve rotacionar para desviar do obstáculo . . . 54

Figura 31 Triângulo formado pela reta que vai do ponto central do robô até o ponto Pce a reta que vai de Pcaté o ponto P1ou P2 . . . 56

Figura 32 Interface em JAVA desenvolvida para testes . . . 56

Figura 33 Obstáculos utilizados no teste do sistema de extração de características . . . 58

Figura 34 Resultados com a TPH . . . 59

Figura 35 Resultados com o Método do Gradiente - Processamento Local . . . 59

Figura 36 Resultados com o método de Crescimento de Região . . . 59

Figura 37 Gráfico do Desvio Padrão no Caso(a) . . . 62

Figura 38 Gráfico do Erro Médio no Caso(a) . . . 63

Figura 39 Gráfico do Desvio Padrão no Caso(b) . . . 63

Figura 40 Gráfico do Erro Médio no Caso(b) . . . 63

Figura 41 Gráfico do Desvio Padrão no Caso(c) . . . 64

Figura 42 Gráfico do Erro Médio no Caso(c) . . . 64

Figura 43 Gráfico do Tempo Médio . . . 64

Figura 44 Obstáculos utilizado no primeiro teste da calibração . . . 66

(10)

central . . . 69

Figura 47 Resultados do cálculo do desvio para dois obstáculos diferentes ambos com a extremidade esquerda distante 7cm do eixo central . . . 70

(11)

Tabela 1 Etapas do trabalho . . . 39

Tabela 2 Vértices marcados manualmente na imagem . . . 59

Tabela 3 Pontos encontrados e erros obtidos com a TPH . . . 60

Tabela 4 Pontos encontrados e erros obtidos com o Método do Gradiente -Processamento Local . . . 60

Tabela 5 Pontos encontrados e erros obtidos com o método de Crescimento de Região 60

Tabela 6 Desvio Padrão, Erro Médio e Tempo Médio com a TPH . . . 61

Tabela 7 Desvio Padrão, Erro Médio e Tempo Médio com o Método do Gradiente -Processamento Local . . . 62

Tabela 8 Desvio Padrão, Erro Médio e Tempo Médio com o método de Crescimento de Região . . . 62

Tabela 9 Desvio Padrão e Erro Médio para o Teste 1 . . . 67

Tabela 10 Desvio Padrão e Erro Médio para 3 obstáculos à um distância de 34cm da câmera . . . 68

(12)

RGB Red, Green e Blue

HT Hough Transform

TPH Transformada Probabilística de Hough RHT Transformada Randômica de Hough SCM Sistema de Coordenadas do Mundo SCC Sistema de Coordenadas da Câmera SCI Sistema de Coordenadas da Imagem SCP Sistema de Coordenadas em Pixels IDE Integrated Development Environment CR Crescimento de Região

API Application Programming Interface

DP Desvio Padrão

EM Erro Médio

(13)

1 INTRODUÇÃO . . . 14

2 FUNDAMENTAÇÃO TEÓRICA . . . 16

2.1 ESPAÇO DE CORES . . . 16

2.1.1 RGB . . . 16

2.1.2 YUV/YCRCB . . . 17

2.1.3 PADRÃO DE LUMINÂNCIA E CROMINÂNCIA . . . 17

2.1.3.1 PADRÃO 4:4:4 . . . 17

2.1.3.2 PADRÃO 4:2:2 . . . 18

2.2 DETECÇÃO DE BORDAS . . . 18

2.3 TRANSFORMADA DE HOUGH PADRÃO . . . 19

2.3.1 TRANSFORMADA DE HOUGH PADRÃO PARA RETAS . . . 20

2.3.1.1 USO DA EQUAÇÃO DA RETA NA FORMA SLOPE-INTERCEPT . . . 20

2.3.1.2 USO DA REPRESENTAÇÃO NORMAL DE UMA LINHA . . . 22

2.4 VARIAÇÕES NA IMPLEMENTAÇÃO DA TRANSFORMADA DE HOUGH . . . 23

2.4.1 TRANSFORMADA PROBABILÍSTICA DE HOUGH . . . 24

2.4.2 TRANSFORMADA RANDÔMICA DE HOUGH . . . 24

2.5 TRANSFORMADA HIERÁRQUICA DE HOUGH . . . 25

2.6 MÉTODO DO GRADIENTE - PROCESSAMENTO LOCAL . . . 25

2.7 SEGMENTAÇÃO DE IMAGEM POR THRESHOLDING DE HISTOGRAMA UTILIZANDO ANÁLISE DE CLUSTER HIERÁRQUICA . . . 26

2.7.1 CALCULO DA DISTÂNCIA ENTRE GRUPOS ADJACENTES . . . 28

2.8 CRESCIMENTO DE REGIÃO POR AGREGAÇÃO DE PIXELS . . . 29

2.9 CALIBRAÇÃO DE CÂMERAS . . . 30

2.9.1 TRANSFORMAÇÕES DE CÂMERA . . . 30

2.9.1.1 TRANSFORMAÇÃO DO SCM PARA SCC . . . 31

2.9.1.2 TRANSFORMAÇÃO DO SCC PARA SCI . . . 32

2.9.1.3 TRANSFORMAÇÃO DO SCI PARA SCP . . . 33

2.9.1.4 COMPOSIÇÃO DAS TRANSFORMAÇÕES . . . 34

2.9.2 HOMOGRAFIA . . . 35

2.9.3 CORRESPONDÊNCIA ENTRE PONTOS 3D E 2D . . . 36

2.9.4 OPERADOR DE MORAVEC . . . 37

(14)

3.3 DESENVOLVIMENTO DO SISTEMA DE EXTRAÇÃO DE CARACTERÍSTICAS 41

3.4 DESENVOLVIMENTO DO MÓDULO PARA CALCULAR O DESVIO . . . 41

3.5 INTEGRAÇÃO DOS MÓDULOS . . . 41

3.6 TESTES . . . 42

4 DESENVOLVIMENTO . . . 43

4.1 VISÃO GERAL DO PROJETO . . . 43

4.2 DEFINIÇÃO DA ARQUITETURA . . . 44

4.3 PREPARAÇÃO DO AMBIENTE PARA DESENVOLVIMENTO . . . 44

4.4 DESENVOLVIMENTO DO SISTEMA DE EXTRAÇÃO DE CARACTERÍSTICAS 46 4.4.1 TRANSFORMADA DE HOUGH PARA RETAS . . . 47

4.4.2 SEGMENTAÇÃO POR THRESHOLD - COM O THRESHOLDING DE HISTOGRAMA UTILIZANDO ANÁLISE DE CLUSTER HIERÁRQUICA . . . 49

4.4.3 MÉTODO DO GRADIENTE - PROCESSAMENTO LOCAL . . . 49

4.4.4 CRESCIMENTO DE REGIÃO . . . 52

4.5 DESENVOLVIMENTO DO MÓDULO PARA CALIBRAÇÃO DE CÂMERA . . . 53

4.6 DESENVOLVIMENTO DO MÓDULO PARA CALCULAR O DESVIO . . . 54

4.7 TESTES . . . 55

4.8 FUNCIONAMENTO GERAL DO SISTEMA . . . 57

5 RESULTADOS E DISCUSSÕES . . . 58

5.1 RESULTADOS PARA O MÓDULO DE EXTRAÇÃO DE CARACTERÍSTICAS . . 58

5.2 RESULTADOS PARA O MÓDULO DE CALIBRAÇÃO DE CÂMERAS . . . 65

5.3 RESULTADOS PARA O MÓDULO DO CÁLCULO DO DESVIO . . . 69

6 CONSIDERAÇÕES FINAIS . . . 72

REFERÊNCIAS . . . 74

(15)

1 INTRODUÇÃO

O constante avanço tecnológico tem levado o homem a criar máquinas capazes de auxiliá-lo em determinadas tarefas ou até mesmo substituí-lo, principalmente em atividades que colocam a sua vida em risco. Com isso, muitas vezes aumenta-se a velocidade e agilidade na realização de tarefas e atividades antes difíceis ou incapazes de serem realizadas tornam-se viáveis. Nesse contexto destaca-se o desenvolvimento de robôs autônomos.

Para que um robô seja definido como autônomo o usuário deve interferir o mínimo possível na operação do mesmo. Ele deve ser capaz de realizar sua trajetória, chegando de um ponto ao outro, em segurança, ou seja, desviando dos obstáculos no caminho. Desta forma, o robô tem que perceber o ambiente no seu entorno, para isso, eles são equipados com sensores e um sistema de visão (KATO; NINOMIYA; MASAKI, 2002).

Os trabalhos presentes na literatura demonstram que o tipo de técnica de visão computacional a ser utilizada depende basicamente dos equipamentos acoplados ao robô (sensores e câmeras), bem como do tipo de visão que ele possui (monocular ou visão estéreo) e do propósito do robô. Porém, nota-se que na maioria das vezes, em determinada etapa do processamento, é necessário utilizar alguma técnica de segmentação de imagens. Isso ocorre principalmente quando não se conhece previamente o ambiente onde o robô irá atuar, sendo necessário, portanto localizar os obstáculos na imagem e extrair as dimensões destes para que o robô possa contorná-los. Em (MANDUCHI et al., 2005; PROCOPIO; MULLIGAN; GRUDIC, 2009; WURM; STACHNISS; BURGARD, 2008) usam-se diferentes técnicas de segmentação para detectar os obstáculos no terreno (ambiente), podendo assim determinar uma trajetória segura para o robô.

As técnicas de visão podem ser implementadas diretamente no hardware, para aproveitar melhor os recursos e com isso obter mais eficiência. Isso requer técnicas de segmentação mais simples. Nesse contexto, há técnicas de segmentação que requerem baixo custo computacional, como a segmentação por crescimento de região, por limiarização ou então as técnicas apresentadas nos trabalhos (MOSABBEB et al., 2007; BROUN; STUDLEY, 2011). Além disso, técnicas para a detecção de formas geométricas simples, como linhas, círculos, elipses, mostram-se atrativas. Tais técnicas ainda possuem diversas otimizações, como pode ser observado em (CHEN; CHUNG, 2001a; ASANO, 2002; GUIL; VILLALBA; ZAPATA, 1995), reduzindo ainda mais o custo computacional.

Este trabalho visa desenvolver um sistema de desvio de obstáculos que utiliza informação proveniente de um sensor infra-vermelho em conjunto com uma câmera digital, que é responsável por identificar o obstáculo a ser contornado. O objetivo inicial do projeto

(16)

é que sejam detectados obstáculos retangulares, podendo ser incrementado futuramente para a detecção de obstáculos em qualquer formato. O sistema de visão proposto será embarcado no hardwareda câmera para que este possa ser acoplado ao robô.

Este documento está organizado da seguinte forma: no Capítulo 2, Fundamentação Teórica, são abordados os principais conceitos e técnicas utilizadas no decorrer do projeto. O Capítulo 3, Metodologia, apresenta as etapas do projeto e as suas respectivas descrições. O Capítulo 4, Desenvolvimento, descreve como foram implementados os módulos do sistema e também as decisões de projetos. O Capítulo 5, Resultados e Discussões, apresenta os resultados alcançados juntamente com uma análise dos mesmos. Por fim, no Capítulo 6, Considerações Finais, estão as conclusões finais do trabalho, dificuldades encontradas e possíveis melhorias como trabalhos futuros.

(17)

2 FUNDAMENTAÇÃO TEÓRICA

Neste capítulo serão abordados os principais conceitos envolvidos na concepção deste trabalho. Na seção 2.1 descreve-se de forma geral o que é o espaço de cores e depois são apresentados dois modelos de cores. A seção 2.2 refere-se ao pré-processamento de imagens necessário em alguns dos métodos utilizados no projeto, a detecção de bordas. Da seção 2.3 até a seção 2.8 são descritos alguns métodos de segmentação de imagens: a transformada de hough padrão, otimizações da transformada de Hough, método do gradiente - processamento local, uma técnica de segmentação de imagem por thresholding e o método de crescimento de região. A seção 2.9 explica os conceitos envolvidos na calibração de câmera, bem como um método para realizar a calibração, a Homografia, e um método de detecção de cantos utilizado durante o processo de calibração, o Operador de Moravec.

2.1 ESPAÇO DE CORES

O espaço de cores tem como objetivo descrever numericamente uma cor através da representação de cada um dos seus componentes (MANZATO, 2004). Uma cor é definida a partir de uma combinação dos componentes. A seguir serão descritos dois espaços de cor, o espaço RGB (Red, Green e Blue) que é um dos mais utilizados e o espaço YUV/YCrCb, que é o padrão utilizado neste trabalho.

2.1.1 RGB

O modelo RGB representa as cores através da combinação das três cores primárias aditivas: vermelho, verde e azul. O espaço de cores RGB é tradicionalmente representado por uma figura geométrica denominada de: cubo das cores (figura 1). Esse cubo ilustra como a combinação das cores primárias aditivas em diferentes intensidades formam as outras cores. Os valores sobre os eixos R, G e B, estão normalizados, variando de 0 a 1. Os vértices do cubo representam as cores primárias e secundárias, e as cores preto e branco (BURDICK, 1997). É importante ressaltar que a cor branca corresponde a combinação das três cores primárias aditivas, todas com intensidade máxima, e a cor preta é obtida quando todas as cores primárias apresentam intensidade mínima (LOPES, 2008). Nas arestas do cubo são representadas o restante das cores que podem ser formada pela combinação das cores.

O modelo RGB está intimamente associado às superfícies emissoras de luz. Por isso, que este modelo é um dos modelos mais utilizados universalmente em equipamentos que manipulam a emissão de luz, tais como os monitores e os televisores a cores (LOPES, 2008).

(18)

Figura 1: Cubo representando o espaço de cores RGB.

Fonte: Adaptado de (BURDICK, 1997).

2.1.2 YUV/YCRCB

O formato YUV ou YCrCb é composto por duas componentes de cores: luminância (Y) e crominância (U ou Cr e V ou Cb). A componente Y representa os níveis de cinza, ou brilho da imagem, já as componentes U e V definem as cores da imagem (FOURCC, 2011). Esse espaço de cor possui a vantagem de ser mais perceptível, devido ao fato de que, assim como nossa visão, ela trabalha separadamente com brilho e cor (MANZATO, 2004). Além disso, possui a vantagem de que a obtenção da imagem em níveis de cinza é direta, basta separar apenas a componente Y.

2.1.3 PADRÃO DE LUMINÂNCIA E CROMINÂNCIA

Um padrão de luminância e crominância define qual a relação entre luminância e crominância por pixel, ou seja, a frequência dessas componentes para cada pixel. A seguir serão descritos dois tipos de padrões: o padrão 4:4:4 e o padrão 4:2:2.

2.1.3.1 PADRÃO 4:4:4

Nesse padrão, para cada pixel existe uma componente de luminância e uma componente de crominância, ou seja, a cada pixel há um componente Y, um U e um V (figura 2).

Figura 2: Representação do Padrão 4:4:4 em relação aos componentes de luminância e crominância.

(19)

2.1.3.2 PADRÃO 4:2:2

Nesse padrão, para cada pixel existe uma componente de luminância, porém só há uma nova componente de crominância a cada 2 pixels, ou seja, para cada pixel há um componente Y, porém a cada 2 pixels são compartilhados os componentes U e V (figura 3).

Figura 3: Representação do Padrão 4:2:2 em relação aos componentes de luminância e crominância.

2.2 DETECÇÃO DE BORDAS

De acordo com (GONZALEZ; WOODS, 2010), “uma borda é o limite entre duas regiões com propriedades relativamente distintas de níveis de cinza”. Sendo assim, os algoritmos de detecção de borda procuram determinar onde há essa descontinuidade de níveis de cinza, diferenciando assim as bordas do restante da imagem. Essa descontinuidade pode ser obtida pelo uso de derivadas. Como uma imagem depende de duas coordenadas espaciais (altura e largura), as bordas podem ser expressas por meio de derivadas parciais, na direção x (largura) e y (altura).

Uma forma de detecção de bordas é através do uso de operadores de gradiente. Esse operador é um vetor que indica onde os níveis de cinza sofrem maior variação. Para a detecção de borda, geralmente utiliza-se a magnitude do gradiente. A magnitude do vetor gradiente é denotado por ∇ f e definido pela equação:

∇ f = q

G2x+ G2

y (1)

sendo Gx a derivada parcial na direção x e Gy a derivada parcial na direção y. A magnitude do vetor gradiente, ∇ f pode ser aproximada para a equação 2, reduzindo assim o custo computacional.

∇ f = |Gx| + |Gy| (2)

Em geral para implementar a derivada de forma numérica, são utilizados máscaras 2x2 ou 3x3, uma para cada direção. Para explicar melhor como utilizar essas máscaras será dado um exemplo utilizando o operador de Sobel, que é uma máscara 3x3 bastante utilizada, figura 4.

(20)

Figura 4: Operador de Sobel: (a) Máscara para a direção horizontal (Gx) e (b) Máscara para a direção vertical (Gy).

(a) (b)

Para calcular o Gx, de um pixel cujas coordenadas são (x,y), por exemplo, a máscara deve ser posicionada de forma que este pixel fique no centro dela. O valor de cada pixel, presente na região onde a máscara está localizada, é multiplicado pelo peso correspondente à sua posição na máscara e todos esses resultados são somados. Para o exemplo, denominando à máscara de Gxcomo MSx, o valor de Gx, ficaria da seguinte forma:

Gx= (pixel(x − 1, y − 1) ∗ Sx(0, 0) + pixel(x, y − 1) ∗ Sx(1, 0) + pixel(x + 1, y − 1) ∗ Sx(2, 0)) +

(pixel(x − 1, y) ∗ MSx(0, 1) + pixel(x, y) ∗ MSx(1, 1) + pixel(x + 1, y) ∗ MSx(2, 1)) +

(pixel(x − 1, y + 1) ∗ MSx(0, 2) + pixel(x, y + 1) ∗ MSx(1, 2) + pixel(x + 1, y + 1) ∗ MSx(2, 2))

onde pixel(x,y) corresponde, de forma genérica, ao valor de nível de cinza do pixel com essas coordenadas e MSx(x, y) representa o valor correspondente da máscara Gxna posição (x, y).

Um limiar é definido, tal que, um pixel é definido como pixel de borda caso seu ∇ f for maior que esse limiar. Sendo assim, para obter a detecção de borda de uma imagem é só posicionar a máscara inicialmente no primeiro pixel, computar o ∇ f , verificar se esse valor foi maior que o limiar definido, deslocar a máscara para o próximo pixel e repetir o processo para todos os pixels da imagem.

2.3 TRANSFORMADA DE HOUGH PADRÃO

A Hough Transform ( HT ) ou transformada de Hough é um método para detecção de formas em imagens digitais (MACEDO, 2005). Originalmente, a HT foi desenvolvida por Paul Hough em 1962 apenas para a detecção de retas. No entanto, esse método vem sendo expandido para a detecção de qualquer forma geométrica que possa ser parametrizada (círculos (CHEN; CHUNG, 2001b), elipses (MCLAUGHLIN, 1998), entre outras formas).

Para que esse método possa ser aplicado, primeiramente é necessário realizar um pré-processamento de detecção de borda na imagem, como o explicado na seção 2.2. A transformada de Hough atua apenas nos pixels de borda.

(21)

em um espaço de parâmetros, o qual é definido de acordo com o tipo de forma que se está procurando. Esse mapeamento faz com que pontos pertencentes à mesma forma geométrica correspondam a uma única célula no espaço de parâmetros. Por exemplo, no caso de se estar procurando por retas, todos os pontos que pertencerem à mesma reta serão mapeados para a mesma célula. Para cada uma dessas células há um contador associado, o qual é incrementado cada vez que um pixel for mapeado para a mesma. Ao final do processo, as células cujo contador tiver o maior valor indicarão quais são os parâmetros correspondentes a forma desejada. 2.3.1 TRANSFORMADA DE HOUGH PADRÃO PARA RETAS

O objetivo da HT para retas é encontrar as retas que definem os elementos presentes na imagem (GONZALEZ; WOODS, 2010). Isso pode ser feito através de duas representações diferentes:

2.3.1.1 USO DA EQUAÇÃO DA RETA NA FORMA SLOPE-INTERCEPT

A equação da reta é representada por y = x.a + b onde x e y são as coordenadas do pixel e a e b são respectivamente o coeficiente angular e linear da reta.

Define-se então o plano (a, b), chamado espaço de parâmetros, onde uma reta é representa em função desses 2 parâmetros. No espaço de parâmetros cada pixel da imagem origina uma reta. A interseção dessas retas define um ponto com coordenadas a e b, tal ponto representa os parâmetros da reta originada pelos pixels que geraram essa interseção. A figura 5 apresenta o exemplo do mapeamento do espaço da imagem no espaço de parâmetros. A figura 5(a) mostra o exemplo de 4 pontos pertencentes a mesma reta (os quais podem ser vistos como pixel de borda) e a figura 5(b) representa o espaço de parâmetro formado por eles, destacando o ponto de interseção. O ponto de interseção fornece justamente o coeficiente angular e linear da reta da figura 5(a).

Figura 5: Exemplo dos dois espaços envolvidos na HT: (a) espaço da imagem, o espaço (x, y) e (b) espaço de parâmetros, o espaço (a, b).

(a) (b)

Fonte: (MACEDO, 2005).

(22)

6. Pode-se entender essas células acumuladoras como a discretização dos parâmetros a e b.

Figura 6: Espaço de parâmetros discretizado.

Cada célula possui um contador associado que é iniciado com zero, então para cada pixel da imagem é realizado o fluxograma da figura 7.

Figura 7: Fluxograma do algoritmo da HT para retas utilizando o espaço de parâmetros (a, b).

Ao final verifica-se qual das células teve o maior número de incrementos ou que teve um número de incrementos maior que um determinado limiar e então tem-se os parâmetros da reta correspondente.

(23)

Porém, ao usar essa equação da reta ocorre um problema quando tenta-se detectar retas verticais pois o coeficiente angular tende a infinito. Por isso têm-se a segunda forma de representação do espaço da imagem, a qual será descrita a baixo.

2.3.1.2 USO DA REPRESENTAÇÃO NORMAL DE UMA LINHA Esse tipo de representação é dada pela equação:

ρ = x ∗ cos θ + y ∗ sin θ (4)

onde ρ é a distância da reta até a origem e θ é ângulo formado entre a normal dessa reta e o eixo x (figura 8).

Figura 8: Representação de retas em coordenadas polares.

Fonte: (GONZALEZ; WOODS, 2010).

Para essa representação, ao invés do plano ab tem-se o plano θ ρ e as células acumuladoras agora são em função de ρ e θ . Outra diferença é que ao invés dos pixels gerarem retas no espaço de parâmetros, eles geram curvas, assim como ilustrado na figura 9.

Figura 9: Exemplo dos dois espaços: (a) espaço da imagem, o espaço (x,y) e (b) espaço de parâmetros, o espaço (θ , ρ).

(a) (b)

Fonte: (MACEDO, 2005).

Analogamente a forma anterior, a interseção dessas curvas define o ponto θ , ρ (figura 9(b)) que são os parâmetros da curva que equivalem a reta da figura 9(a), por exemplo. O

(24)

algoritmo em si é o mesmo, porém como as células acumuladoras estão em função de θ e ρ têm se os parâmetros referentes à curva, então ao final do processo é necessário converter essas curvas para as retas correspondentes utilizando a equação 4. A figura 10 representa o fluxograma do algoritmo para esse tipo de representação.

Figura 10: Fluxograma do algoritmo da HT para retas utilizando o espaço de parâmetros (θ , ρ).

2.4 VARIAÇÕES NA IMPLEMENTAÇÃO DA TRANSFORMADA DE HOUGH

A transformada de Hough padrão é um algoritmo considerado custoso computacionalmente, pois, como pode ser visto nos algoritmos da seção anterior, para cada pixel de borda, repete-se o cálculo para encontrar (a, b) ou (θ , ρ) uma quantidade de vezes igual ao range definido para o parâmetro a ou θ . Então sua complexidade é diretamente proporcional a quantidade de pixels de borda e a discretização do espaço de parâmetros. Objetivando diminuir esse custo computacional foram desenvolvidas variações da HT padrão (MACEDO, 2005). A seguir serão descritas algumas das variações existentes na literatura.

(25)

2.4.1 TRANSFORMADA PROBABILÍSTICA DE HOUGH

A transformada probabilística de Hough ( TPH ) foi desenvolvida por Kiryati, Eldar e Bruckstein, utiliza o mesmo algoritmo descrito na seção 2.3.1. A única diferença é que ao invés de utilizar todos os pixels de borda, usa-se apenas uma porcentagem deles (XU; OJA; KULTANEN, 1990). De acordo com os autores, é possível obter bons resultados usando apenas 2% dos pixels de borda. No entanto, é importante ressaltar que essa porcentagem depende da aplicação, da qualidade da imagem, dentre outros fatores.

Os pixels que serão utilizados no algoritmo são escolhidos randomicamente de acordo com uma função de densidade de probabilidade uniforme, definida a partir das características da imagem (XU; OJA; KULTANEN, 1990).

2.4.2 TRANSFORMADA RANDÔMICA DE HOUGH

Na HT padrão, para cada pixel de borda encontra-se x parâmetros referentes a figura geométrica procurada, em que x depende da faixa de quantização do espaço de parâmetros definida. A transformada randômica de Hough ( RHT ) baseia-se no fato de que um ponto no espaço de parâmetros é formado por um pequeno subconjunto de pixels de borda. Ou seja, a HT padrão, para um pixel de borda encontra todos os parâmetros que são representados por esse pixel, já a RHT, para um subconjunto de pixels de borda encontra um único ponto do espaço de parâmetros.

Essa técnica consiste basicamente em (XU; OJA; KULTANEN, 1991):

• escolher aleatoriamente uma quantidade x de pixels de borda, sendo que x depende da forma geométrica que se deseja definir;

• encontrar os parâmetros da figura geométrica representada por esses pixels.

Para o exemplo de detecção de retas, são necessários apenas dois pontos. Nesse caso para encontrar os parâmetros da reta formada por eles é necessário resolver um sistema linear de duas incógnitas, a e b, e duas equações, a equação da reta do pixel 1 (5) e a equação da reta do pixel 2 (6). Com isso encontra-se o coeficiente angular e linear da reta formada por eles.

y1= x1.a + b (5)

y2= x2.a + b (6)

Nesse método têm-se também uma matriz acumuladora de parâmetros (no caso de retas, em relação à a e b) assim como na HT, porém o incremento das células acumuladoras é feito de forma diferente. Ao realizar o processo descrito acima, encontra-se os parâmetros da figura

(26)

geométrica, então incrementa-se a célula acumuladora correspondente à tais parâmetros. Isso é repetido até que todos os pixels de borda tenham sido utilizados no processo. Ao final procura-se por aquelas células que têm o maior acumulador, obtendo assim os parâmetros das formas geométricas procuradas na imagem (XU; OJA; KULTANEN, 1991).

2.5 TRANSFORMADA HIERÁRQUICA DE HOUGH

Esse método é um tipo de otimização que foi desenvolvido apenas para a detecção de reta que consiste em subdividir a imagem original em imagens menores e aplicar o algoritmo da transformada de Hough padrão nessas sub-imagens. Com isso, em cada uma dessas sub-imagem são detectados pequenos segmentos de linha (ESPINOSA; PERKOWSK, 1992). Por fim, basta agrupar esses segmentos encontrados em cada uma dessas sub-imagens adjacentes para obter-se a reta completa.

Esse método é utilizado principalmente quando é possível paralelizar o processamento, pois a transformada pode ser calculada de forma independente em cada sub-imagem. Além disso, apresenta a vantagem de que para cada sub-imagem é requerida uma quantidade menor de memória para armazenar a matriz acumuladora se comparada com a aplicação da transformada de Hough padrão para toda a imagem (ESPINOSA; PERKOWSK, 1992).

2.6 MÉTODO DO GRADIENTE - PROCESSAMENTO LOCAL

Na prática ao realizar o processamento de detecção de borda nem todos os pixels da borda são realmente detectados, portanto, a depender da aplicação, muitas vezes é necessário realizar outros procedimentos para conectar todos os pixels pertencentes à borda.

Esse método tem como objetivo ligar os pixels de uma vizinhança (3x3, 5x5, etc) que possuem características semelhantes entre si. Geralmente, as duas propriedades que são consideradas nesse tipo de abordagem são (GONZALEZ; WOODS, 2010):

1. A força de resposta do operador gradiente; 2. A direção do gradiente.

A primeira propriedade é dada pela magnitude do gradiente, o ∇ f (equação 2). Considerando o pixel (x, y) para que o pixel (x0, y0) (vizinho do pixel em questão) seja considerado semelhante em magnitude:

|∇ f (x, y) − ∇ f (x0, y0)| ≤ T (7) Sendo T um limiar que deve ser definido de acordo com a aplicação, pois quanto maior o valor de T menor será a precisão da semelhança.

(27)

A direção do gradiente é dada pelo ângulo α(x, y) que é o ângulo da direção do vetor ∇ f (GONZALEZ; WOODS, 2010). A partir de análise vetorial tem-se que:

α (x, y) = tan−1 Gy Gx



(8) Analogamente à magnitude, para que o pixel (x0, y0) pertencente a vizinhança do pixel (x, y) seja considerado similar, é necessário que:

|α(x, y) − α(x0, y0)| ≤ A (9)

Assim como T , A é um limiar que depende da precisão desejada na aplicação. Para que o pixel (x0, y0) seja conectado ao pixel (x, y) é necessário que ambos os critérios de magnitude e de direção sejam satisfeitos. Esse processo é repetido para todos os pixels de borda da imagem (GONZALEZ; WOODS, 2010). Sendo que, a forma de diferenciar os pixels que foram conectados do restante, depende da aplicação. Uma forma comumente usada é atribuir uma cor para os pixels conectados e outra para os não conectados. Objetivando facilitar o entendimento desse método, a figura 11 representa o fluxograma para o algoritmo em questão.

2.7 SEGMENTAÇÃO DE IMAGEM POR THRESHOLDING DE HISTOGRAMA

UTILIZANDO ANÁLISE DE CLUSTER HIERÁRQUICA

A técnica de Thresholding é também chamada de Limiarização e apesar de simples, é bastante utilizada para a segmentação de imagens. O thresholding de histograma, tem como objetivo encontrar a partir do histograma um nível de cinza que melhor separe o fundo do restante da imagem. Um histograma representa a quantidade de pixels presentes em cada nível de cinza para uma determinada imagem (GONZALEZ; WOODS, 2010).

O método de thresholding utilizando análise de cluster hierárquica baseia-se na formação de grupos ou clusters. Nesse método, inicialmente cada nível de cinza é um grupo distinto. O algoritmo consiste em ir agrupando esses grupos a cada iteração, obtendo ao fim do processo apenas dois grupos. O critério utilizado para a união de dois grupos é a distância entre eles, a qual indica o quanto os grupos são semelhantes entre si (ARIFIN; ASANO, 2006). Essa distância é calculada com base na variância inter-classe de cada um dos grupos e com base na variância intra-classe do possível grupo formado por eles. O fluxograma da figura 12 representa o algoritmo para esse método.

(28)
(29)

Figura 12: Fluxograma do método por Thresholding.

O threshold será o valor do maior nível de cinza do grupo que tiver o menor brilho (grupo com os menores níveis de cinza).

2.7.1 CALCULO DA DISTÂNCIA ENTRE GRUPOS ADJACENTES

Como já dito anteriormente, para o cálculo da distância são usados a variância inter-classe a a intra-classe (ARIFIN; ASANO, 2006). O algoritmo a seguir descreve como isso é feito.

1. Sendo z um determinado nível de cinza presente no histograma, faça: (a) Para todos os z presentes no histograma

(b) Calcula-se o h(z) que é a quantidade de pixels com o nível de cinza z

(c) Calcula-se p(z) que representa a probabilidade de ocorrência de um pixel com o nível de cinza z, ou seja, p(z) = h(z)

N , sendo N o total de pixels da imagem. (d) Calcula-se P(Ck) que é a soma de todos os p(z)

(e) Calcular a distância entre Ck1e Ck2:

Dist(Ck1,Ck2) = σ12(Ck1∪Ck2)σA2(Ck1∪Ck2) (10) 1Ver sub-seção 2.7.1

(30)

sendo σ12(Ck1∪ Ck2) a variância inter-classe e σA2(Ck1∪ Ck2) a variância intra-classe, as quais são definidas pelas seguintes equações:

σ12(Ck1∪Ck2) = P(Ck1)P(Ck2) (P(Ck1) + P(Ck2))2 [m(Ck1) − m(Ck2)]2 (11) σA2(Ck1∪Ck2) = 1 P(Ck1) + P(Ck2) ∗ Tk2

Tk1−1+1 [(z − M(Ck1∪Ck2))2p(z)] (12) onde: m(Ck) = 1 P(Ck) Tk

Tk1−1+1 zp(z) (13) e M(Ck1∪Ck2) = P(Ck1)m(Ck1) + P(Ck2)m(Ck2) P(Ck1) + P(Ck2) (14) Resumindo, para cada grupo adjacente são feitos os cálculos das variâncias e os dois grupos que tiverem a menor distância (ou seja, que forem mais similares) são unidos formando um único novo grupo (ARIFIN; ASANO, 2006). Esse processo é repetido até que se tenham apenas dois grupos C0que contém os pixels com níveis de cinza de [0, k] e C1com os níveis de pixel de [k+1, L-1], encontrando portanto o limiar K que melhor separa a imagem.

Em (ARIFIN; ASANO, 2006), esse método foi comparado com outros métodos já consolidados como o método de Otsu (OTSU, 1979), método de KI (KITTLER; ILLINGWORTH, 1986) e Kwon (KWON, 2004). O método proposto mostrou-se bastante eficiente visto que para todas as imagens de teste, tal método obteve os melhores resultados em relação aos outros.

2.8 CRESCIMENTO DE REGIÃO POR AGREGAÇÃO DE PIXELS

Esse método consiste em agrupar pixels com propriedades semelhantes (nível de cinza, cor, textura, entre outros) para formar uma região (GONZALEZ; WOODS, 2010). O crescimento é feito a partir de pixels denominados sementes, agregando a cada pixel semente outros pixels que possuam propriedades similares. Sendo assim, a quantidade de regiões segmentadas é feita de acordo com o número de sementes que se escolhe.

Os dois problemas associados a esse método são (GONZALEZ; WOODS, 2010): 1. A escolha da(s) semente(s);

2. O critério de similaridade.

O problema na escolha da semente decorre, pois ao escolher a semente errada pode-se formar uma região que não é a região de interesse. A similaridade deve ser definida de tal forma,

(31)

que a partir da semente escolhida, sejam agregados todos (ou a maioria) os pixels corretos e não sejam agregados pixels incorretos. Sendo assim, o critério de similaridade deve ser flexível o suficiente para que pixels de interesse não deixem de ser agregados, e limitante o suficiente para que pixels que não sejam de interesse, não sejam agregados. Para obter resultados mais precisos, critérios além dos locais (cor, textura) podem ser adicionados levando em consideração o processo de crescimento também. Critérios tais como: tamanho da região formada, similaridade entre o pixel candidato e os pixels crescidos até o momento, a forma da região sendo crescida, entre outros (GONZALEZ; WOODS, 2010).

2.9 CALIBRAÇÃO DE CÂMERAS

A calibração de câmera consiste no processo de determinar parâmetros geométricos e ópticos da câmera, admitindo que sejam conhecidos um conjunto de pares de pontos bidimensionais (2D) em uma imagem e seus respectivos pontos tridimensionais (3D) (CARVALHO et al., 2005). Esses dados são determinados resolvendo as equações de transformação que relaciona os pontos 2D e 3D.

A calibração fornece os parâmetros extrínsecos e intrínsecos da câmera. Os parâmetros extrínsecos são as informações da posição e orientação da câmera em relação a um sistema de coordenadas global (ou do mundo). Os parâmetros intrínsecos correspondem as características ópticas e geométricas internas da câmera, ou seja, a distância focal, fatores de escala, posição em pixels da projeção ortogonal do centro óptico no plano de projeção e distorções (MARQUES, 2011).

Para compreender o processo de calibração é preciso entender as transformações que mapeiam um ponto 3D em seu respectivo ponto 2D, pois essas transformações estão relacionadas diretamente com os parâmetros intrínsecos e extrínsecos da câmera. As sub-seções seguintes explicarão tais transformações.

2.9.1 TRANSFORMAÇÕES DE CÂMERA

A correspondência de um ponto 3D com um ponto 2D envolve 4 sistemas de coordenadas de modo que a transformação de câmera possa ser expressa como a composição de transformações simples realizadas entre estes sistemas (MARQUES, 2011).

• Sistema de Coordenadas do Mundo ( SCM ): é um sistema tridimensional escolhido de forma conveniente a definir as coordenadas de cada ponto da cena. As coordenadas de um ponto neste sistema serão denotadas como (Xm,Ym, Zm).

(32)

• Sistema de Coordenadas da Câmera ( SCC ): um sistema também tridimensional com origem no centro óptico da câmera. Os eixos x e y são escolhidos de forma que sejam paralelos ao plano da imagem, e o eixo z sendo o mesmo do eixo óptico. A distância do plano de projeção da câmera ao centro óptico é denominada de distância focal, a qual será denotada pela letra f . Um ponto nesse sistema será denotado como (Xc,Yc, Zc).

• Sistema de Coordenadas da Imagem ( SCI ): é um sistema de coordenadas bidimensionais situado no plano de projeção. A origem deste sistema corresponde à projeção ortogonal do centro óptico no plano de projeção. Um ponto neste referencial será denotado por (X, Y). As coordenadas da imagem serão denotadas por (Xu,Yu) quando utiliza-se uma câmera sem as distorções da lente (câmera pinhole), e (Xd,Yd) como as coordenadas da imagem com distorções da lente.

• Sistema de Coordenadas em Pixels ( SCP ): também consiste de um sistema de coordenadas bidimensionais. As coordenadas de um ponto da imagem neste sistema são expressas em pixel. Geralmente, a origem deste sistema é o canto superior esquerdo da imagem. As coordenadas de um ponto neste sistema será denotada por (Xf,Yf).

Para que um ponto 3D seja mapeado em seu ponto 2D correspondente é necessário realizar a transformação entre cada um desses sistemas obtendo ao final, a partir da composição de cada uma dessas transformações, uma transformação do SCM para o SCP. Sendo assim, como foram definidos quatro sistemas de coordenadas, a seguir serão explicadas separadamente cada uma das 3 transformações entre eles e depois a composição delas formando a transformação de câmera final.

2.9.1.1 TRANSFORMAÇÃO DO SCM PARA SCC

A primeira etapa consiste em converter um ponto P do SCM no SCC. Isso é feito através de uma transformação de corpo rígido entre esses dois sistemas ortogonais (figura 13). Sendo T o vetor correspondente a origem do SCM e R a matriz cujas colunas r1, r2, r3 sejam as coordenadas dos vetores unitários i, j e k dos eixos do SCM com relação a base formada pelos vetores~i,~j,~k dos eixos do SCC. Então, sendo P um ponto no SCM, suas coordenadas no SCC podem ser definidas da seguinte forma (MARQUES, 2011):

    Xc Yc Zc     = R     Xm Ym Zm     + T (15)

(33)

onde: R=     r1 r2 r3 r4 r5 r6 r7 r8 r9     e T =     Tx Ty Tz     (16)

A matriz R e o vetor T determinam a orientação e posição da câmera, respectivamente, correspondendo aos parâmetros extrínsecos da câmera (CARVALHO et al., 2005).

Figura 13: Transformação do SCM para o SCC.

Fonte: Adaptado de (MARQUES, 2011).

2.9.1.2 TRANSFORMAÇÃO DO SCC PARA SCI

A transformação do SCC para o SCI desconsiderando as distorções da câmera, consiste em uma projeção perspectiva. Por semelhança de triângulos é possível definir as coordenadas do SCI em relação ao SCC assim como mostrado na figura 14.

Figura 14: Transformação do SCC para o SCI.

(34)

Ou seja: Xu= fXc Zc Yu= fYc Zc (17) Assumindo que Zc∼= 1 e reescrevendo a equação 17 na forma matricial tem-se que:

    Xu Yu 1     ∼ =     f 0 0 0 0 f 0 0 0 0 1 0            Xc Yc Zc 1        (18)

Nessa transformação f é a distância focal, um dos parâmetros intrínsecos da câmera.

2.9.1.3 TRANSFORMAÇÃO DO SCI PARA SCP

Em câmera digitais a formação da imagem acontece por meio dos registros dos raios luminosos em um sensor. Tais sensores (usualmente CCD ou CMOS) estão dispostos segundo uma matriz retangular. Porém essa matriz nem sempre é perfeita, com as linhas e colunas uniformemente alinhas, isso pode ocorrer devido às imperfeições geométricas de construção ou devido ao processo de aquisição dos valores dos sensores (CARVALHO et al., 2005). Pode ocorrer que o espaçamento entre as linhas seja diferente do espaçamento entre as colunas, ou então que as linhas não estejam exatamente perpendiculares as colunas.

Devido a essas possíveis distorções geométricas, a transformação de um ponto no SCI para um no SCP é definida como (MARQUES, 2011):

    Xf Yf 1     =     sx τ Cx 0 sy Cy 0 0 1         Xu Yu 1     (19)

Os coeficientes da matriz acima correspondem ao restante dos parâmetros intrínsecos da câmera. Em que (CARVALHO et al., 2005):

• sxe sydeterminam o número de pixels por unidade de comprimento na direções horizontal e vertical, respectivamente. Em situações ideias (na maioria das câmeras) os pixels são quadrados e portanto sx= sy;

• Cx e Cy representam, em pixels, as coordenadas da projeção ortogonal do centro óptico no plano de projeção. Na maioria das câmeras a projeção do centro óptico correspondem ao centro da imagem, sendo assim, os valores de Cx e Cy correspondem a metade das dimensões da imagem;

(35)

Figura 15: Transformação do SCI para o SCP.

Fonte: Adaptado de (MARQUES, 2011).

• τ é a tangente do ângulo que as colunas da matriz de pixels formam com a perpendicular as linhas. Na maior parte da câmeras ocorre a situação ideal, onde as linhas e colunas são perpendiculares e portanto τ = 0.

2.9.1.4 COMPOSIÇÃO DAS TRANSFORMAÇÕES

A transformação que associa um ponto do sistema SCM à sua projeção em SCP é obtida compondo (multiplicando) as transformações descritas acima (equações 15, 18 e 19) (CARVALHO et al., 2005). Sendo assim:

    Xf Yf 1     ∼ =     sx τ Cx 0 sy Cy 0 0 1         f 0 0 0 0 f 0 0 0 0 1 0            r1 r2 r3 Tx r4 r5 r6 Ty r7 r8 r9 Tz 0 0 0 1               Xm Ym Zm 1        (20) ou     Xf Yf 1     ∼ =     f sx f τ Cx 0 f sy Cy 0 0 1         r1 r2 r3 Tx r4 r5 r6 Ty r7 r8 r9 Tz            Xm Ym Zm 1        (21) A matriz K=     f sx f τ Cx 0 f sy Cy 0 0 1     (22)

(36)

Figura 16: Transformação do SCM para o SCP.

Fonte: Adaptado de (MARQUES, 2011).

intrínsecos. Por sua vez, a matriz     r1 r2 r3 Tx r4 r5 r6 Ty r7 r8 r9 Tz    

é a matriz extrínseca de calibração contendo os parâmetros extrínsecos da câmera (CARVALHO et al., 2005).

2.9.2 HOMOGRAFIA

Em situações em que os pontos do mundo tridimensional (no SCM) estão em um mesmo plano, esses pontos são chamados de pontos coplanares, ou seja, possuem a coordenada Zw= 0. Satisfeita essa condição a equação 21 pode ser reescrita da seguinte forma (MARQUES, 2011):

    Xf Yf 1     ∼ =     f sx f τ Cx 0 f sy Cy 0 0 1         r1 r2 r3 Tx r4 r5 r6 Ty r7 r8 r9 Ty            Xm Ym 0 1            Xf Yf 1     ∼ =     f sx f τ Cx 0 f sy Cy 0 0 1         r1 r2 Tx r4 r5 Ty r7 r8 Ty         Xm Ym 1     (25)

(37)

onde H=     f sx f τ Cx 0 f sy Cy 0 0 1         r1 r2 Tx r4 r5 Ty r7 r8 Ty     =     h1 h2 h3 h4 h5 h6 h7 h8 h9     (26)

em que H é chamada de homografia e representa a transformação linear que associa as coordenadas do ponto do mundo às suas projeções na imagem (MUÑOZ, 2011). Sendo assim, tem-se que:     Xf Yf 1     ∼ =     h1 h2 h3 h4 h5 h6 h7 h8 h9         Xm Ym 1     (27)

A homografia pode ser determinada a partir da correspondência entre pontos do SCM aos pontos do SCP. Cada uma dessas correspondências gera duas equações linearmente independentes. Sendo assim, são necessário no mínimo 4 pontos no SCM e seus correspondentes no SCP, no entanto, quanto mais pontos forem utilizados melhor será a precisão dos resultados. Então a equação 26, pode ser escrita da seguinte forma:

Xmh1 +Ymh2 + h3 = Xf Xmh4 +Ymh5 + h6 = Yf Xmh7 +Ymh8 + h9 = 1

(28)

Reescrevendo estas equações na forma matricial, para n pares de pontos correspondentes tem-se o sistema do anexo A (SZENBERG, 2001).

Para resolver esse sistema e encontrar os valores finais da homografia é necessário utilizar um método numérico de minimização (MUÑOZ, 2011). No caso deste trabalho foi utilizado o método dos mínimos quadrados (HUFFEL; VANDEWALLE, 1991).

Após encontrar a homografia, é possível dado um ponto no SCP, encontrar seu correspondente no SCM resolvendo a equação 27, a qual pode ser representada como AC = B. Sendo assim, a equação 27 pode ser solucionada usando algum método para solução de sistemas lineares. Neste trabalho foi utilizado o método de Gauss-Jordan (PRESS et al., 2002).

2.9.3 CORRESPONDÊNCIA ENTRE PONTOS 3D E 2D

A primeira etapa da calibração consiste em obter um conjunto de pontos 3D (no SCM) e seus correspondentes 2D (no SCP). Usualmente, utiliza-se para isso padrões simples, com medidas e propriedades bem definidas (MARQUES, 2011). Neste trabalho utilizou-se um padrão xadrez coplanar (figura 17).

Para realizar a correspondência entre os pontos do padrão e suas respectivas projeções na imagem usou-se um método de detecção de cantos, o Operador de Moravec (sub-seção

(38)

Figura 17: Exemplo de Padrão Xadrez Coplanar.

Fonte: Adaptado de (BOUGUET, 2012).

2.9.4). Sendo assim, os pontos do padrão são localizados automaticamente na imagem e sendo conhecida as dimensões dos retângulos que compõe o padrão a correspondência entre os pontos localizados (i, j) e os pontos no mundo (xi j, yi j,0) é feita da seguinte forma:

xi j= i.Dx yi j = j.Dy

(29) sendo Dxo comprimento horizontal do retângulo e Dyo comprimento vertical.

2.9.4 OPERADOR DE MORAVEC

O operador de Moravec é um método para detecção de cantos na imagem. Esse método baseia-se na variância direcional nas direções: 0º, 45º, 90º e 135º. Calcula-se o quadrado da diferença de tons de cinza para essas quatro direções (figura 18).

Figura 18: Janelas 3x3 mostrando os vetores de 0°, 45°, 90° e 135°, respectivamente.

(39)

Considerando uma janela com nxn pixels, sendo n um número ímpar, o operador de interesse Moravec pode ser calculado através das equações seguintes (KOKUBUM, 2004):

OI[l][c] = min                                              V0◦ = 1 n(n − 1) 2N

l=0 2N

c=N (img(l, c) − img(l, c − 1))2 V45◦= 1 (n − 1)2 N

l=0 2N

c=N (img(l, c) − img(l + 1, c − 1))2 V90◦= 1 n(n − 1) N

l=0 2N

c=0 (img(l, c) − img(l + 1, c))2 V135◦ = 1 (n − 1)2 N

l=0 N

c=0 (img(l, c) − img(l + 1, c + 1))2 (30) Onde:

• l, c - linhas e colunas da imagem, respectivamente; • img(l, c) - nível de cinza na posição (l,c);

• N = (n − 1) 2 ;

• OI - operador de interesse.

Aplicando a Equação 30 para cada pixel da imagem, obtém-se o Operador de Moravec para toda a imagem, o valor mínimo do operador de interesse entre as quatro direções. A partir disso encontra-se então os máximos locais de OI[l][c]. Pixels com valores de OI[l][c] superiores a um determinado limiar pré-estabelecido correspondem aos pontos de interesse, pontos de quina/cantos (KOKUBUM, 2004).

(40)

3 METODOLOGIA

Para a realização do trabalho, o mesmo foi dividido em seis etapas principais, como pode ser visto na tabela 1. As atividades envolvidas em cada uma destas etapas serão detalhadas nas sub-seções seguintes.

Tabela 1: Etapas do trabalho.

Etapas Descrição Ações

Etapa 1 Definição da Arquitetura

◦ Escolha dos equipamentos a serem utilizados

◦ Levantamento sobre câmeras embarcadas

Etapa 2 Preparação do ambiente para desenvolvimento

◦ Estudar o funcionamento da câmera escolhida

◦ Identificar os requisitos de hardware e software para a utilização da câmera escolhida

Etapa 3 Desenvolvimento do sistema de extração de características

◦ Levantamento bibliográfico sobre técnicas de visão computacional

◦ Desenvolvimentos dos métodos estudados de segmentação de imagens e extração de características

Etapa 4 Desenvolvimento do módulo para calcular o desvio

◦ Levantamento bibliográfico sobre métodos de Calibração de Câmera

◦ Implementação de um dos métodos estudados

◦ Implementação do calculo do desvio necessário para o robô contornar o obstáculo

Etapa 5 Integração dos módulos desenvolvidos ◦ Junção de cada um dos módulos desenvolvidos, sincronizando a ação de cada um deles para construir o sistema final

Etapa 6 Testes ◦ Testar a robustez e eficiência do que foi

desenvolvido

3.1 DEFINIÇÃO DA ARQUITETURA

A definição da arquitetura consistiu em definir quais os equipamentos que foram utilizados para o desenvolvimento do projeto. No caso deste trabalho, essa etapa consistiu basicamente em definir qual câmera seria utilizada no sistema de extração de características.

(41)

Para isso foi necessário realizar uma busca por câmeras embarcadas existentes no mercado. Um dos requisitos do projeto foi que o sistema desenvolvido ficasse totalmente embarcado na própria câmera. Essa foi a restrição mais importante que precisou ser levada em consideração para a escolha da câmera.

3.2 PREPARAÇÃO DO AMBIENTE PARA DESENVOLVIMENTO

Definida a câmera a ser utilizada, foi realizado um estudo sobre seu funcionamento. Esse estudo serviu como base para entender questões relevantes tanto no que diz respeito ao seu hardwarecomo ao seu software (firmware).

Primeiramente, compreendeu-se as questões relacionadas ao software, focando-se a princípio na compreensão do firmware:

• Em qual linguagem foi implementado o firmware; • Quais rotinas já vem implementas;

• Como utilizá-las;

• Como elas estão organizadas; • Como alterá-las;

• Como adicionar novas funções e recompilar o firmware.

Esse estudo permitiu identificar as ferramentas necessárias para o funcionamento da câmera e para o desenvolvimento do projeto.

Em relação a parte de hardware os estudos focaram-se principalmente em entender: • Como a câmera é ligada;

• Com qual nível de tensão ela funciona;

• Como é feita a transferência de dados entre ela e outros dispositivos.

Com isso foi possível determinar quais os equipamentos seriam necessários para que a câmera pudesse ser conectada:

1. Computador:

• objetivando transferir para a câmera o firmware a medida em que ele fosse atualizado;

• para realizar os testes durante o desenvolvimento do sistema. 2. Microcontrolador do robô:

(42)

3.3 DESENVOLVIMENTO DO SISTEMA DE EXTRAÇÃO DE CARACTERÍSTICAS Nessa etapa desenvolveu-se a parte principal do projeto, a extração das dimensões do obstáculo, sua altura e largura, e a partir dessas informações, o cálculo do desvio que o robô precisa realizar.

Primeiramente, realizou-se um levantamento teórico sobre técnicas de visão computacional para a obtenção das informações de altura e largura de um objeto retangular. Nesse estudo levou-se em consideração as limitações quanto ao poder computacional da câmera, buscando técnicas com baixo custo computacional ou que pudessem ser otimizadas.

O passo seguinte consistiu em implementar cada uma das técnicas estudadas, realizando as adaptações necessárias para atingir o objetivo, construindo assim o módulo de extração das características do obstáculo.

3.4 DESENVOLVIMENTO DO MÓDULO PARA CALCULAR O DESVIO

Na etapa anterior são encontradas as dimensões do obstáculo medidas em pixels. Um sensor infra-vermelho fornecerá a informação de distância entre o robô e o obstáculo em centímetros. Essas duas informações são usadas para calcular o desvio que o robô deve realizar para contornar o obstáculo. No entanto, para realizar o cálculo do desvio é necessário que essas informações estejam no mesmo sistema de medidas. Sendo assim, foi preciso calibrar a câmera para que os pontos do mundo real pudessem ser transformados em pontos da imagem e vice-versa. Neste caso, optou-se por converter os pontos extremos dos obstáculo, encontrados na etapa anterior, para pontos do mundo real e então calcular sua dimensão em centímetros. 3.5 INTEGRAÇÃO DOS MÓDULOS

Finalizada as etapas de desenvolvimento, foi necessário sincronizar cada uma das ações. A primeira etapa que deve ocorrer é a calibração da câmera, o que é necessário ser realizado uma vez no início, em seguida o sistema fica aguardando a indicação de que existe um obstáculo à frente. Ao receber essa indicação, a informação de distância entre o robô e o obstáculo obtida a partir do sensor infra-vermelho é enviada para a câmera e então o sistema de extração de características é acionado. Os extremos do obstáculo são encontrados e por fim calcula-se o desvio que deverá ser feito pelo robô para contornar o obstáculo. Portanto, o sistema final pode ser dividido em 4 módulos cuja sequência em que eles são executado é mostrada na figura 19, apresentando uma visão geral do funcionamento do sistema.

(43)

Figura 19: Diagrama de Blocos do Sistema.

3.6 TESTES

O objetivo dos testes é verificar como os módulos desenvolvidos estão funcionando separadamente e como está funcionando o sistema como um todo após a integração dos módulos.

Os testes foram divididos da seguinte forma: 1. Teste do sistema de extração de características; 2. Teste do método de calibração de câmera; 3. Teste do módulo para calcular o desvio.

(44)

4 DESENVOLVIMENTO

Este capítulo descreve as atividades realizadas em cada uma das etapas mostradas no capítulo 3. Para uma melhor compreensão, neste capítulo será apresentado primeiramente uma seção com a visão geral do projeto e depois será dividido em seções de acordo com as principais atividades descritas na metodologia.

4.1 VISÃO GERAL DO PROJETO

O robô, objeto deste projeto, embarca um sensor infra-vermelho, o qual irá fornecer a informação de distância entre o robô e obstáculo, e um sistema de visão, composto por uma câmera. A figura 20 representa o modelo do protótipo físico referente ao projeto.

Figura 20: Modelo do protótipo físico.

Como pode ser visto na figura a câmera e o sensor ficarão alinhados e apontando para a mesma direção. Sendo assim, é possível projetar na imagem capturada pela câmera os pontos correspondentes ao sensor, a figura 21 ilustra dois exemplos de como seria essa projeção.

Figura 21: Exemplos de projeção dos pontos do sensor na imagem capturada.

(a) (b)

Na figura 21 são mostrados também os 4 pontos extremos dos obstáculos, esses são os pontos retornados pelos métodos escolhidos para a obtenção das dimensões do obstáculo.

(45)

4.2 DEFINIÇÃO DA ARQUITETURA

Essa etapa consistiu basicamente em uma pesquisa de qual câmera seria utilizada no projeto.

Essa pesquisa resultou em três câmeras: • AVRcam (JROBOT, 2011);

• CMUcam (UNIVERSITY, 2011);

• Surveyor SRV-1 Blackfin Camera (SURVEYOR, 2011).

A primeira delas, a AVRcam, foi descartada pois não foram encontradas referências suficientes a seu respeito e as poucas encontradas (basicamente sua homepage) estavam desatualizadas. Notou-se também a falta de suporte do fabricante, não se conseguiu sequer obter informações a respeito da compra da câmera.

Em relação a CMUcam foram encontradas mais informações e referências de projetos que a utilizaram. Inclusive contactou-se alguns pesquisadores da Universidade Federal da Bahia (UFBA) que estavam trabalhando ou já trabalharam com a CMUcam, afim de obter informações mais práticas quanto ao seu uso. Nesse processo de busca de informações, constatou-se que tal câmera possui um firmware embutido, mas que não permite alterações. Esse foi o motivo pelo qual essa câmera também foi descartada, pois uma restrição importante do projeto é que o sistema de extração de características fosse embarcado na própria câmera. No entanto, com a CMUcamo projeto ficaria limitado apenas a utilizar as funcionalidades já implementadas em seu firmware.

Por fim restou a Surveyor SRV-1 Blackfin Camera que atendeu a todos os requisitos básicos esperados. A página da câmera contém muita informação, apresenta exemplos de projetos que a utilizam, além de conter um fórum, o qual percebeu-se bastante atividade com muitas dúvidas solucionadas. Esta, assim como a CMUcam, possui um firmware embarcado, porém este é desenvolvido sob licença GPL Open Source e permite alterações. Baseado nesses pontos, a Surveyor SRV-1 Blackfin Camera foi a câmera escolhida para o desenvolvimento do projeto.

4.3 PREPARAÇÃO DO AMBIENTE PARA DESENVOLVIMENTO

A Surveyor SRV-1 Blackfin Camera é um dispositivo que possui uma câmera digital com resolução variando de 160x128 até 1280x1024 pixels, um processador ADSP-BF537 pertencente à família Blackifin de processadores, disponibiliza dois tipos de memória, 32MB de SDRAM e 4MB de SPI Flash. Há duas formas de interação com o dispositivo, via SPI e via UART. A tensão de entrada para que o dispositivo funcione é de 3.3 volts. A Surveyor SRV-1

(46)

Blackfin Camerapossui dimensão de 50 mm x 60 mm e pesa 36g (figura 22) (SURVEYOR, 2011). Com esse dispositivo vem incluído um firmware desenvolvido em linguagem C sob

Figura 22: Surveyor SRV-1 Blackfin Camera.

Fonte: (SURVEYOR, 2011).

licença GPL Open Source, compilado com GNU bfin-elf-gcc e bfin-uclinux-gcc toolchains. É possível acessar de forma rápida o frame capturado pela câmera, o qual fica armazenado na SDRAM. Possui também alguns processamentos de imagens básicos como: histograma, detecção de borda, diferença entre frames, entre outros (SURVEYOR, 2011). Além disso, possibilita uma fácil atualização do firmware, possibilitando a modificação das funções existentes bem como a adição de novas funcionalidades. Implementa o protocolo XMODEM, um protocolo confiável para a transferência de arquivos (MORIMOTO, 2011), o qual é usado entre outras coisas para transferir o firmware do computador para o dispositivo.

A partir dessas informações sobre a câmera e de um estudo aprofundado da mesma, no tocante as questões de software, identificou-se duas ferramentas essenciais para a parte que envolve as modificações no firmware, são elas:

• Compilador: o compilador disponível pela Surveyor é o GNU bfin-elf Blackfin Toolchain, o qual possui uma versão tanto para Linux como para Windows. No entanto, optou-se por configurar o ambiente de desenvolvimento no Windows, pois, para essa plataforma, foram encontrados mais materiais sobre como essa configuração deve ser feita.

• Make: uma ferramenta para possibilitar a execução do arquivo Makefile, o qual contém as instruções para a compilação do firmware. Utilizou-se para esse fim o make do MinGW.

Além disso, para a codificação, optou-se pela utilização do ambiente de desenvolvimento NetBeans IDE 7.0.1, pois esta é uma IDE (Integrated Development Environment) bastante familiar, possibilitando configurar o ambiente para codificação e compilação de forma rápida e fácil.

Feita a configuração de todo o ambiente para a programação do firmware, o passo seguinte foi entender como é feita a transferência do firmware do computador para a

(47)

câmera. A forma disponível para isso é através de uma comunicação serial, utilizando o protocolo XMODEM. Essa transferência é realizada conectando a câmera à porta serial do computador e usando um programa que permita essa comunicação e que disponibilize o uso do protocolo XMODEM, como o HyperTerminal. Durante o desenvolvimento utilizou-se tanto o HyperTerminalcomo o TeraTerm.

Em relação ao hardware, a preocupação a princípio foi a respeito do interfaceamento entre a câmera e o computador. Como já citado, para atualizar o firmware é necessário uma comunicação serial, porém verificou-se que não bastava apenas uma comunicação direta entre eles, pois isso danificaria a câmera, devido a incompatibilidade de tensões entre o protocolo RS-232 e a câmera, a qual funciona a uma tensão de 3, 3V . Então foi necessário pensar em um circuito para fazer as conversões de tensão do computador para a câmera (tensão maior para uma tensão menor) e da câmera para o computador (tensão menor para um tensão maior). Foi decidido então confeccionar uma placa de circuito impresso para realizar essa conversão de tensões.

Foi utilizado o software Eagle 5.11 (CADSOFT, 2011) para Windows para fazer o layout da placa de circuito impresso. Na placa, além do circuito envolvendo o Max3232 colocou-se um regulador de tensão com uma entrada para fonte de alimentação. A figura 23 mostra o layout projetado.

Figura 23: Layout da placa projetada.

4.4 DESENVOLVIMENTO DO SISTEMA DE EXTRAÇÃO DE CARACTERÍSTICAS Primeiro realizou-se um levantamento teórico sobre técnicas de segmentação de imagens que pudessem atender aos requisitos do projeto. Requisitos tais como: poder computacional da câmera, velocidade do método e possibilidade de otimizações. Com isso foram escolhidas quatro técnicas que se acreditou serem viáveis e que pudessem gerar resultados satisfatórios, são elas:

(48)

• Transformada de Hough para retas; • Segmentação por Threshold;

• Método do gradiente - Processamento local; • Crescimento de Região.

Foram escolhidas quatro técnicas para que os resultados entre elas pudessem ser comparados no que diz respeito a taxa de acertos e tempo de execução. As sub-seções seguintes descrevem como foram desenvolvidas cada uma das técnicas escolhidas para a extração das dimensões dos obstáculos.

4.4.1 TRANSFORMADA DE HOUGH PARA RETAS

O objetivo inicial do projeto é a detecção de obstáculos retangulares, então resolveu utilizar a transformada de Hough para a detecção de retas, já que um retângulo é composto por quatro retas. Devido as limitações computacionais da câmera e a necessidade de uma resposta relativamente rápida, optou-se por utilizar uma das variações da transformada de Hough padrão. Dentre as variações estudadas optou-se pela transformada probabilística pois com as limitações computacionais da câmera o ideal é que se realize o menor número de cálculos possíveis, então, como para formar uma reta são necessários poucos pontos, seria possível eliminar um alto percentual de pixels de borda usando a transformada probabilística. Além disso, existem outras otimizações feitas a partir da transformada probabilística, o que pode ser usado futuramente.

Para iniciar o algoritmo antes é necessário realizar a detecção de borda. O firmware da câmera já possui essa função implementada, então foi necessário apenas uma adaptação. Já que a HT opera apenas nos pixels de borda, na função de detecção de borda, os pixels que forem sendo considerados de borda são armazenados em uma lista encadeada. Essa lista na verdade contém a posição (linha e coluna) de cada pixel de borda, que são os parâmetros x e y utilizados no método.

Após obter todos os pixels de borda, inicia-se o algoritmo da transformada probabilística de Hough. O primeiro passo é determinar qual a porcentagem dos pixels de borda serão utilizados e selecioná-los. Implementou-se para isso uma função que tem como entrada a porcentagem de pixels que se deseja eliminar e retorna, através de uma escolha aleatória, os pixels de borda resultantes para a aplicação do método.

Foi utilizada a representação normal de uma reta, visto que um retângulo é formado idealmente por retas verticais e horizontais. Essa característica dos retângulos também foi utilizada na discretização do espaço de parâmetros θ ρ. Para retas verticais θ = 0° e para retas horizontais θ = 90°. No entanto, isso acontece apenas em situações ideais, então definiu-se uma faixa próxima desses valores para os valores de θ . A figura 24 ilustra como ficou a discretização

Referências

Documentos relacionados

¢ll', ™pe• oÙ m£qon œrga qalassopÒrwn ¡li»wn ka• buq…hj oÙk o‧da dolorrafšoj dÒlon ¥grhj, Leukoqšhj œce dîma baqÚrroon, e„sÒke pÒntou ka• s ka•

A análise dos dados meteorológicos foi dividida em três etapas a partir de um esquema de decomposição temporal-cronológica, iniciando pela série de dados de longo

Com o fomento de políticas voltadas o contexto da Língua de Sinais nos cursos de Ensino Superior tem como fator de observação a prática docente e o uso de

devidamente assinadas, não sendo aceito, em hipótese alguma, inscrições após o Congresso Técnico; b) os atestados médicos dos alunos participantes; c) uma lista geral

referencial serve de base para o desenvolvimento de um tópico, a presença de um tópico oferece tão somente as condições possibilitadoras e preservadoras da

O presente artigo se propôs a estabelecer as bases fundamentais do Direito & Literatura e, a partir delas, examinar relevantes aspectos da obra literária “1984” de

A prova do ENADE/2011, aplicada aos estudantes da Área de Tecnologia em Redes de Computadores, com duração total de 4 horas, apresentou questões discursivas e de múltipla

A Seqüência de Três Níveis oferece um quadro mais amplo de uma situação e pode ser útil para fazer perguntas a respeito da situação de pessoas que não estão fisicamente