Estudo de Sistemas de Visão Artificial, Notas de estudo de Informática
davi-cardoso-10
davi-cardoso-10

Estudo de Sistemas de Visão Artificial, Notas de estudo de Informática

122 páginas
50Números de download
1000+Número de visitas
100%de 0 votosNúmero de votos
Descrição
Estudo de Sistemas de Visão Artificial e a implementação de um software de visão para o uso no Futebol de Robôs.
70 pontos
Pontos de download necessários para baixar
este documento
Baixar o documento
Pré-visualização3 páginas / 122
Esta é apenas uma pré-visualização
3 mostrados em 122 páginas
Esta é apenas uma pré-visualização
3 mostrados em 122 páginas
Esta é apenas uma pré-visualização
3 mostrados em 122 páginas
Esta é apenas uma pré-visualização
3 mostrados em 122 páginas
Microsoft Word - TCC_101105_FinalE.doc

ESCOLA DE ENGENHARIA DE PIRACICABA - EEP/FUMEP BACHARELADO

EM CIÊNCIA DA COMPUTAÇÃO ESTÁGIO SUPERVISIONADO

Davi Cardoso

e

Vanderlei Vitório Gomes

Estudo de Sistemas de Visão Artificial e

a implementação de um software de visão

para o uso no Futebol de Robôs.

Orientadores

Prof. Msc. José Martins Junior e

Profª. Dra. Maria Cristina A. Batocchio

Piracicaba, Novembro de 2005

ESCOLA DE ENGENHARIA DE PIRACICABA - EEP/FUMEP BACHARELADO

EM CIÊNCIA DA COMPUTAÇÃO ESTÁGIO SUPERVISIONADO

Piracicaba, Novembro de 2005.

Davi Cardoso

e

Vanderlei Vitório Gomes

Estudo de Sistemas de Visão Artificial e

a implementação de um software de visão

para o uso no Futebol de Robôs.

Relatório Final do trabalho acadêmico

apresentado ao Programa de Estágio

Supervisionado do curso de

Bacharelado em Ciência da

Computação da Escola de Engenharia

de Piracicaba – EEP/FUMEP.

Trabalho de Iniciação Científica do Curso de Ciência da Computação.

Supervisor de estágio: Prof. Msc. José Martins Junior

ii

ESCOLA DE ENGENHARIA DE PIRACICABA - EEP/FUMEP BACHARELADO

EM CIÊNCIA DA COMPUTAÇÃO ESTÁGIO SUPERVISIONADO

Para uso dos Orientadores:

Piracicaba, Novembro de 2005.

Analisado por: Assinatura:Data:

Orientadores:

Prof. Msc. José Martins Junior / /

Profª. Dra. Maria Cristina A. Batocchio / /

Supervisor de Estágio:

Prof. Msc. José Martins Junior / /

iii

ESCOLA DE ENGENHARIA DE PIRACICABA - EEP/FUMEP BACHARELADO

EM CIÊNCIA DA COMPUTAÇÃO ESTÁGIO SUPERVISIONADO

Piracicaba, Novembro de 2005.

“O que sabemos é uma gota, o

que ignoramos é um oceano”

Isaac Newton

iv

ESCOLA DE ENGENHARIA DE PIRACICABA - EEP/FUMEP BACHARELADO

EM CIÊNCIA DA COMPUTAÇÃO ESTÁGIO SUPERVISIONADO

Piracicaba, Novembro de 2005.

Dedico este trabalho aos meus pais,

Ciro e Célia, que com suas benção me

guiaram, conduziram, protegeram e

apoiaram através dos atenuantes mas

gratificantes caminhos pela vida.

Vanderlei Vitório Gomes

Dedico este trabalho aos meus pais,

Isabel e Antonio, que sem diplomas ou

títulos demonstraram serem mais que

doutores na minha educação e com

paciência e amor me ensinaram a viver.

Davi Cardoso

v

ESCOLA DE ENGENHARIA DE PIRACICABA - EEP/FUMEP BACHARELADO

EM CIÊNCIA DA COMPUTAÇÃO ESTÁGIO SUPERVISIONADO

Piracicaba, Novembro de 2005.

Queremos expressar nossos profundos agradecimentos ao Sr. Osvaldo e a Sra. Lígia

pela paciência, compreensão e espaço cedido para o desenvolvimento deste projeto e também

a professora Ellen Cristina Andrade pela atenção dedicada à realização deste trabalho.

Agradecemos aos professores, Pedro Grosso, Francisco Arnold, Wagner Cavalcante,

Luis Camolesi e em especial aos nossos orientadores, José Martins Junior e Maria Cristina

Aranda Batocchio pelo apoio e incentivo concedido.

Por fim agradecemos aos integrantes da banca examinadora pela atenção e

disponibilidade dedicada a leitura e avaliação deste trabalho.

Davi Cardoso e Vanderlei Vitório Gomes

vi

Agradeço primeiramente a Deus, que com tanta sabedoria e distinção, me concebeu

virtudes, oportunidades, proteção e uma ótima família.

Aos meus pais que com muito esforço me ofereceram essa estrutura familiar e pessoal

que possuo hoje e a meu irmão, que com sua irreverência soube me respeitar e apoiar nas

horas necessárias.

A minha namorada e melhor amiga Angela, que soube compreender minhas ausências

e sempre esteve me apoiando e amando.

Aos outros integrantes do grupo 1G1, Andrés Villalobos, Davi Cardoso, Ivan Santos e

Thiago Richter, pois sem suas amizades, apoios e cobranças nada se concretizariam. Com

especial agradecimento ao meu amigo e companheiro Davi Cardoso, pessoa marcante na vida

de todos os que o conhece, mesmo conhecendo-o pouco como eu conheço.

E ao grande amigo Ricardo Albuquerque, pessoa com a qual tenho um profundo

respeito e carinho.

Vanderlei Vitório Gomes

ESCOLA DE ENGENHARIA DE PIRACICABA - EEP/FUMEP BACHARELADO

EM CIÊNCIA DA COMPUTAÇÃO ESTÁGIO SUPERVISIONADO

Piracicaba, Novembro de 2005.

Agradeço primeiramente a Deus pela proteção e oportunidade de vida que tenho hoje.

À minha amada noiva e futura esposa Ellen, que com amor, paciência e

profissionalismo me auxiliou com suas pertinentes observações a respeito dessa dissertação.

Aos outros integrantes do grupo 1G1, Andrés, Ivan, Thiago e especialmente Vanderlei

pelas horas de dedicação e esforços em um trabalho particular e ímpar que trouxe muito mais

do que 101 motivos para a alegria de todos.

Aos meus irmãos. Ao Ezequiel pela alegria transmitida com suas rápidas piadas e

especialmente ao Samuel que com criatividade e capricho demonstrou ser um mestre em

nosso projeto e implementação mecânica inicial.

E finalmente aos melhores amigos que um homem pode ter: Tilly, Lobão e Bisqui

pelas imagens concedidas para ilustração deste trabalho.

Davi Cardoso

i

Resumo Este trabalho procura direcionar a uma leitura amigável e fluente para o tão complexo e

“obscuro” tema da Visão Computacional. Desde seu início, onde se aborda a conceituação dos

aspectos históricos e as metodologias aplicadas atualmente nesta área, até a implementação das

técnicas básicas de visão em um software voltado ao uso do futebol de robôs, buscou-se facilitar

a compreensão e viabilizar o domínio, na prática, das técnicas de digitalização e

dimensionamento de imagens, aplicação de filtros por convolução, reconhecimento de borda,

segmentação por cor e vetorização, muito conhecidas no mundo dos Sistemas de Visão

Computacional. Para tanto, faz-se necessário o uso de funções pré-determinadas pelas APIs

(Aplication Program Interface- Interface de Programas Aplicativos) gráficas e de um compilador

amigável ao ambiente gráfico do Microsoft Windows ®. A elaboração do software de visão para

este trabalho procura também seguir as regras e a utilização dos diagramas comumente aplicados

na prática da linguagem UML (Unified Modeling Language – Linguagem Unificade de

Modelagem). A título informativo, este trabalho encontra-se no contexto de um projeto maior que

previu a integração de outros dois trabalhos de iniciação científica. Um dos trabalhos objetivou a

construção do hardware e do mecanismo para agentes robóticos. O outro propôs a aplicação de

métodos de aprendizado para a definição de estratégias e trajetórias no jogo. Tal integração

permitiu a solução de vários problemas envolvidos no jogo de futebol de robôs e viabilizou a

execução deste trabalho de visão computacional.

ii

Abstract

This work aims to direct a friendly and fluent reading for the complex and “obscure”

subject of computational vision. Since the beginning of computational vision, the

conceptualization of the historic aspects and the applied methodologies currently used in this area

are approached, up to the implementation of the basic vision techniques in a software used for

robot soccer. In order to do so it was attempted to ease the comprehension and to enable the

control in practicing the following techniques: image digitalization and dimensioning, filter

application by convolution, outline recognition, color segmentation and vectoring, well know in

the world of computational vision systems. For that, it is necessary to use the predetermined

functions of the graphic APIs (Application Program Interface) and a friendly compiler for the

graphic environment of Microsoft Windows ®. The vision software design for this project, also

aims to follow the rules, and the use of diagrams commonly applied in UML (Unified Modeling

Language). For informative subject, this work belong in a bigger project context, that integrate others

two works of scientific initiation. One of then, describes the hardware construction and the works for

robotics agents. The other one proposed the application of apprenticeship’s methods for the definition

of strategy and trajectories of robotics soccer’s game. This integration allowed the problems solution

engaged on the robot soccer game and makes possible the execution of this work of computational

vision.

iii

Índice dos assuntos. 1. Introdução.................................................................................................................................. 1

1.1. Histórico da Computação Gráfica. ...................................................................................... 1

2. Objetivo ..................................................................................................................................... 3

3. Justificativa................................................................................................................................ 4

4. Revisão de Literatura................................................................................................................. 5

4.1. A Computação Gráfica. ....................................................................................................... 5

4.2. A visão humana ................................................................................................................... 9

4.2.1. Conhecendo a estrutura do olho humano. .................................................................. 9

4.3. O Sistema de Visão Artificial e suas estruturas................................................................. 12

4.3.1. Aquisição e digitalização de imagens....................................................................... 13

4.3.2. Propriedades de uma imagem................................................................................... 15

4.3.3. Convolução com máscaras ....................................................................................... 18

4.3.4. Detecção de borda por convolução........................................................................... 20

4.3.5. Ampliação e redução geométrica de imagens .......................................................... 24

4.3.6. Histograma e Técnicas de filtragem de imagem ...................................................... 25

4.3.7. Sistemas de cores...................................................................................................... 36

4.3.8. Segmentação de imagens por cor ............................................................................. 45

4.3.9. Vetorização baseada na diferença entre pixels ......................................................... 45

5. Materiais e Métodos. ............................................................................................................... 49

5.1. Técnicas para implementação do software de visão.......................................................... 49

5.2. Recursos computacionais para o tratamento gráfico ......................................................... 50

5.3. Um pouco sobre UML....................................................................................................... 53

5.4. O Visual Basic e a Orientação a Objeto ............................................................................ 55

6. Desenvolvimento do software de visão computacional .......................................................... 57

6.1. Problemas de estrutura mínima de software e hardware ................................................... 57

6.1.1. Solução adotada para hardware e software............................................................... 57

6.1.2. As classes e as APIs para o software........................................................................ 59

6.1.3. Planejamento e engenharia do software ................................................................... 62

6.1.4. Resultados obtidos na implementação do hardware e software ............................... 72

6.2. Problemas relativos à captura, digitalização e filtros por software ................................... 72

iv

6.2.1. Solução para captura de imagens reais seqüenciais.................................................. 75

6.2.2. Solução para escolha de filtros para o ambiente....................................................... 77

6.2.3. Resultados obtidos com a captura, digitalização e aplicação de filtros.................... 79

6.3. Problemas relativos à calibração dos elementos................................................................ 80

6.3.1. Solução para os problemas de calibração................................................................. 82

6.3.2. Resultados obtidos na calibração.............................................................................. 83

6.4. Problemas de limites do campo, busca e processamento de imagens ............................... 85

6.4.1. Solução adotada para determinação de limites, busca e processamento .................. 85

6.4.2. Resultados obtidos com limites, busca e processamento de imagens ...................... 87

6.5. Problemas relativos à Comunicação.................................................................................. 91

6.5.1. Solução para Comunicação e Protocolo definido..................................................... 91

6.5.2. Resultados obtidos na comunicação ......................................................................... 92

7. Planejamento do Trabalho....................................................................................................... 93

8. Conclusões, Resultados Finais, Dificuldades e Pretensões Futuras ........................................ 94

9. Referências Bibliográficas....................................................................................................... 96

10. Anexo A............................................................................................................................. 99

11. Anexo B........................................................................................................................... 103

v

Lista de Figuras. Figura 1 – Divisão proposta por Persiano e Oliveira, 1989......................................................... 6

Figura 2 – Resultado do sistema visão computacional moderno.................................................. 8

Figura 3 – Olho Humano e suas divisões (adaptação de Gonzáles, R.C., Woods, R.E, 1992). ... 9

Figura 4 – Faixa de adaptação do olho à intensidade luminosa. ................................................ 10

Figura 5 – Esquema básico para um Sistema de Visão Artificial............................................... 12

Figura 6 – Eixos para identificação matricial de valores discretos dos níveis de cinza. ............ 14

Figura 7 – Vizinhanças de um pixel de uma imagem digitalizada. ............................................ 16

Figura 8 – Aplicação lógica aplicada a imagens binárias........................................................... 17

Figura 9 – Resultado da primeira operação de convolução de A por B. .................................... 20

Figura 9 – Detecção de bordas por máscaras de convolução. .................................................... 24

Figura 10 – Ampliação de 2 X aplicada a um pixel p(x,y);........................................................ 24

Figura 11a – Histograma de imagem predominantemente escura;............................................. 26

Figura 11b – Histograma de imagem predominantemente clara; ............................................... 26

Figura 11c – Histograma de imagem pouco contratante; ........................................................... 27

Figura 11d – Histograma de imagem muito contrastante;.......................................................... 27

Figura 12 – Exemplo de função injetora monotônica;................................................................ 28

Figura 13 – Exemplos de funções lineares aplicadas a imagens em tons de cinza .................... 29

Figura 14 – Exemplo de Função não–linear aplicada a imagens em tons de cinza.................... 29

Figura 15a – Histograma gerado a partir dos valores da imagem original. ................................ 31

Figura 15b – Histograma gerado a partir dos valores calculados pela equalização. .................. 32

Figura 16a, 16b – Resultado do realce de contraste com equalização de histograma. ............... 32

Figura 17 – Expansão do histograma, realce de contraste.......................................................... 33

Figura 18 – compressão do histograma, diminuição de contraste. ............................................. 33

Figuras 19a – Imagem original; Figura 19b – Aplicação da máscara de convolução; .............. 34

Figuras 19c, Figura 19d – com as respectivas máscaras de convolução; .................................. 35

Figura 20a – Imagem original; Figura 20b – Aplicação da máscara de convolução;................. 36

Figura 21 – Espectro de decomposição da luz branca por um prisma de vidro. ........................ 37

Figura 22 – Comprimentos de onda e a divisão entre luz visível, ultravioleta e infravermelho. 37

Figura 23 – Mistura de cores primárias aditivas....................................................................... 38

Figura 24 – Mistura de cores primárias subtrativas.................................................................. 38

vi

Figura 25 – Gráfico de padronização da C.I.E. para coeficientes de cromaticidade. ................. 40

Figura 26 – Distribuição do sistema de cores RGB.................................................................... 41

Figura 27 – Representação espacial do modelo de cor HSI. ...................................................... 43

Figura 28 – Definição dos vetores elementares.......................................................................... 46

Figura 29 – Contribuição de cada elemento para o cálculo da área ........................................... 47

Figura 30 – Resultados de um processo de vetorização de imagem........................................... 48

Figura 31 – Visão geral do hardware do sistema de futebol de robôs. ....................................... 58

Figura 32 – Diagrama de Atividades, Captura de Imagem ........................................................ 62

Figura 33 – Diagrama de Atividades, Limites de Campo .......................................................... 63

Figura 34 – Diagrama de Atividades, Calibrar Elementos ......................................................... 64

Figura 35 – Diagrama de Atividades, Processamento de Imagens............................................. 65

Figura 36 – Diagrama de Atividades, Enviar Dados .................................................................. 66

Figura 37 – Diagrama de Seqüência, Ativar Captura ................................................................. 66

Figura 38 – Diagrama de Seqüência, Limites de Campo ........................................................... 67

Figura 39 – Diagrama de Seqüência, Cores dos Elementos ....................................................... 67

Figura 40 – Diagrama de Seqüência, Enviar Dados ................................................................... 68

Figura 41 – Diagrama de Classe, Ativar Captura ....................................................................... 68

Figura 42 – Diagrama de Classe, Limites de Campo ................................................................. 69

Figura 43 – Diagrama de Classe, Cores dos Elementos ............................................................. 70

Figura 44 – Diagrama de Classe, Enviar Dados ......................................................................... 71

Figura 45 – Pontos de máxima e mínima luminosidade incidentes sobre o campo. ................. 73

Figura 46 – Binarização da imagem para demonstração dos pontos de luminosidade. ............ 74

Figura 47 – Apresentação da imagem original capturada X tratamento com filtro.................... 75

Figura 48 – Imagem real capturada. .......................................................................................... 78

Figura 49 – Imagem adquirida após a aplicação de filtros corretivos. ...................................... 79

Figura 50 – Imagem ampliada 1600 vezes e os tons de cores encontrados na imagem. ............ 81

Figura 51 - Pontos de calibração dos elementos......................................................................... 83

Figura 52 – Tela de calibração dos elementos............................................................................ 84

Figura 53 – Limites do campo. ................................................................................................... 85

Figura 54a – Pontos de delimitação do campo. .......................................................................... 86

Figura 54b - Varredura da imagem com filtros de correção e campo delimitado. ..................... 86

vii

Figura 55 – Tela de configuração dos pontos limites do campo. ............................................... 87

Figura 56a – Uso normal do processador. .................................................................................. 88

Figura 56b – Uso do processador durante a busca e o processamento de imagem. ................... 88

viii

Lista de Tabelas. Tabela 1- Comparação entre o Sistema de Visão Humano e o Sistema artificial de Visão. ...... 11

Tabela 2- Resultados das aplicações aritméticas de imagens em tons de cinza. ........................ 17

Tabela 3 - Tipos de máscaras utilizadas na aproximação do gradiente e laplaciano.................. 23

Tabela 4 -Valores originais do histograma em Pr(rk) e os resultados da euqlização (Sk). ........ 31

Tabela 5 - Valores da contribuição de área de cada elemento.................................................... 48

Tabela 6 - Descrição dos valores de ação para funções API ...................................................... 61

Tabela 7 - Resultado das medições da variação luminosa do campo . ....................................... 73

Tabela 8a - Resultados de tempo obtidos das etapas de processamento e filtros por hardware. 80

Tabela 8b - Resultados de tempo obtidos das etapas de processamento e filtros por software.. 80

Tabela 9 - Extração da cor RGB em R,G,B e I........................................................................... 82

Tabela 10 - Extração da cor RGB em R, G, B e I....................................................................... 84

Tabela 11 - Protocolo usado para a comunicação RS232........................................................... 92

ix

Abreviaturas Utilizadas. 2D- Duas dimensões.

3D- Três dimensões.

ADC- Analogical Digital Converter - Conversor Analógico Digital

API- Application Program Interface - Interface de Programas Aplicativos

AVI- Audio Video Interleave - Licenciamento de Vídeo e Áudio

BMP- Bitmap - Mapa de Bits

CCD- Charge Coupled Device - Dispositivo de Cargas Acopladas

CDF- Cumulative Distribution Function - Função de Distribuição Acumulativa

CIE- Comission Internationale de I’Eclairage - Comissão Internacional de Iluminação

CMY- Cyan, Magenta e Yellow - Ciano, Margenta e Amarelo

DC- Device Context- Dispositivo de Contexto

DLL- Dynamic Link Libraries - Biblioteca de Ligações Dinâmicas

EIA- Electronic Industries Association - Associação das Indústrias de Eletrônicas.

HDC- Handle Device Context - Dispositivo de Contexto Mnuseável

HSI- Hue, Saturation, Intensity - Matiz ou Coloração, Saturação, Intensidade ou Brilho.

HWND- Handle Window - Janela Manuseável

NTSC- National Television Standards Committee - Comitê Nacional de Padrões de Televisão.

OpenCV- Open Source Computer Vision - Código Aberto de Visão Computacional

OpenGl- Open Graphics Library - Código Aberto de Biblioteca Gráfica.

P & B- Preto e Branco.

PAL- Phase Alternating Line - Linha de Fases Alternadas.

RC- Rendering Context - Contexto de Renderização

RGB- Red Green Blue- Vermelho, Verde e Blue.

RS- Recommended Standards - Padrões Recomendados.

SVA- System of Artificial Vision- Sistema de Visão Artificial

UML- Unified Modeling Language – Linguagem Unificada de Modelagem

YIQ- padrão NTSC de Televisão

1

1. Introdução.

1.1. Histórico da Computação Gráfica.

As áreas da computação gráfica e de processamento de imagens apresentam até hoje um

crescimento de interesses e de tecnologias em vários campos de aplicações.

As primeiras utilizações registradas do processamento de imagens datam de meados de

1929, onde imagens eram codificadas em cinco níveis de intensidade distintos, a fim de serem

enviadas através do sistema Bartlane de Transmissão, que ligava Londres a Nova Iorque por

cabos submarinos. Mas somente três décadas mais tarde o grande impulso da computação gráfica

ocorreria com o início do sistema espacial americano e o advento dos computadores de grande

porte (MARQUES FILHO & VIEIRA NETO; 1999).

Segundo Marques Filho e Vieira Neto (1999) as técnicas computacionais de

aprimoramento de imagens começaram a serem elaboradas pelo Jet Propulsion Laboratory

(Pasadena, Califórnia – EUA) em 1964, quando imagens enviadas pela sonda Ranger2 da lua

eram corrigidas devido a distorções inerentes à câmera de TV acoplada à ela. De 1964 até os dias

atuais, a área de processamento de imagens vem apresentando um crescimento em quase todos os

ramos da atividade humana. Na Medicina, no uso de diagnósticos médicos, a utilização de

técnicas de processamento permitiram o desenvolvimento de novos equipamentos e maior

facilidade na interpretação de imagens produzidas por equipamentos mais antigos como, por

exemplo, o Raio X. Outro exemplo se vê na Biologia, com a contagem do número de células

através do processamento automático de imagens recebidas de um microscópio, e obtenção de

maior fidelidade e velocidade na execução de tarefas laboratoriais.

Para esses mesmos autores, o processamento e a interpretação de imagens recebidas de

satélites auxiliam dentre outras áreas as de Geografia, Sensoriamento Remoto,

Geoprocessamento e Meteorologia. Além disso, o uso de técnicas de restauração de imagens

auxilia a arqueologia na recuperação de fotos humanamente ilegíveis de artefatos raros

encontrados em estado de deterioração.

O uso de robôs dotados de visão artificial para a execução de diversas tarefas tais como

controle de fluxo de materiais, controle de qualidade, segurança e proteção, tem crescido a cada

ano com o frenético avanço da automação industrial (MARQUES FILHO & VIEIRA NETO;

1999).

2

Vê-se, então, que o avanço das técnicas de processamento de imagens tende a ser cada

vez maior nas mais diversas áreas de aplicação, consolidando ainda mais o uso do processamento

de imagens e da visão computacional no mundo atual.

3

2. Objetivo

O trabalho em questão tem por objetivo a elaboração de uma versão simplificada de um

software de visão computacional capaz de capturar, analisar e repassar informações de

posicionamento das imagens de agentes robóticos envolvidos no futebol de robôs.

Em específico, o objetivo deste trabalho é capturar, filtrar e analisar imagens, fornecendo

as coordenadas x e y do centro de um ou mais identificadores coloridos provenientes dos robôs e

de uma bola em tempo hábil, a fim de transmiti-las ao computador responsável pelo sistema

estratégico, permitindo assim, que cada robô “enxergue” o que o cerca.

4

3. Justificativa

Atualmente existem inúmeras técnicas e equipamentos caros para desenvolvimento de

softwares de visão computacional onde são abordados modelos complexos e não genéricos em

diferentes áreas de aplicabilidade prática, dificultando o entendimento e o caminho a seguir na

iniciação dos estudos de sistemas de visão.

Basicamente, este trabalho possibilita uma interação inicial e simplificada aos

interessados no aprendizado da visão computacional que, historicamente falando, ainda se

encontra em seus primórdios, abordando a utilização de segmentação por cor e vetorização de

imagens 2D. Além disso, permite aos aprendizes obterem maior ânimo ao notar que técnicas

simples podem ser implementadas e utilizadas praticamente em conjunto com equipamentos

relativamente baratos existentes hoje no mercado, proporcionando resultados aceitáveis ao

sistema desenvolvido.

5

4. Revisão de Literatura.

4.1. A Computação Gráfica.

A Computação Gráfica é a área da ciência da computação que estuda a geração,

manipulação e interpretação de modelos e imagens de objetos ou ambientes utilizando

computador. Uma variedade de disciplinas como física, matemática, engenharia e arquitetura

contribuem para a formulação de tais modelos (TRAINA & OLIVEIRA, 2003).

A Computação Gráfica pode ser subdividida em três áreas (ver Figura 1) segundo

Persiano e Oliveira (1989):

• Síntese de imagens: área que se preocupa com a produção de representações

visuais a partir das especificações geométrica e visual de seus componentes;

• Processamento de imagens: envolve técnicas de transformação de imagens, em

que tanto a imagem original quanto a imagem resultante apresentam-se geralmente

sob uma representação matricial. Ela visa melhorar as características visuais da

imagem, aumentando ou diminuindo contraste, foco, ruídos ou distorções;

• Análise de imagens: procura obter as especificações dos componentes de uma

imagem a partir da representação visual e das informações pictóricas da própria

imagem produzindo informações matemáticas a partir, por exemplo, das

primitivas geométricas que compõem essa imagem.

6

Figura 1 – Divisão proposta por Persiano e Oliveira, 1989.

Na última década somou-se a esse contexto a área da Visualização de Dados, conhecida

como Visão Computacional (SCHROEDER et al., 1996 apud TRAINA & OLIVEIRA, 2003) que

se utiliza as das técnicas de Computação Gráfica para representar informações de forma a

facilitar o entendimento de conjuntos de dados numéricos de alta complexidade. Dessa maneira, a

visualização de dados partilha das características da síntese, do processamento e da análise de

dados.

Hoje, a computação gráfica passou a ser altamente interativa, onde o usuário pode

controlar o conteúdo, a estrutura e a aparência dos objetos e das imagens visualizadas. Os

displays gráficos de baixo custo possibilitaram o desenvolvimento de inúmeros aplicativos

baratos e relativamente fáceis de usar, que dispunham de interfaces gráficas como planilhas,

processadores de texto e programas de desenho. Em tais interfaces, através de um gerenciador, o

usuário pode criar e posicionar janelas que atuam como terminais virtuais, cada qual executando

aplicativos independentes. Abstrações de objetos de um escritório como arquivos, caixas de

correio, impressoras e latas de lixo, que executam operações análogas à da vida real, são

implementadas por meios controles gráficos de imagens. Aplicativos que manipulam texto (como

processadores de texto) ou dados numéricos (como planilhas) usam interfaces gráficas, reduzindo

sensivelmente a interação textual por meio de teclados alfanuméricos (TRAINA & OLIVEIRA,

2003).

Análise de

Imagens

Imagens ... especificações de imagens ...

Imagens ...

Processamento de

Imagens

Síntese de

Imagens

7

Como dito anteriormente, segundo Traina e Oliveira (2003) a manipulação com elementos

gráficos na computação nem sempre foi tão acessível assim, devido principalmente ao alto custo

do hardware. Poucos programas aplicativos exploravam o uso de sistemas gráficos mais

complexos e atualizados. Com o advento dos computadores pessoais de baixo custo, como o

IBM-PC e o Apple Macintosh, que utilizavam terminais gráficos de varredura (Raster Graphics

Displays), houve a popularização do uso de sistemas gráficos por usuários, permitindo a estes o

desenvolvimento de novas técnicas no campo da computação gráfica e da visão computacional.

Atualmente, pesquisadores estão desenvolvendo novas tecnologias que poderão dar aos robôs a

capacidade visual quase humana, permitindo que eles monitorem áreas pobremente iluminadas e

até mesmo pilotem veículos em condições ambientais extremas.

Nos dias atuais, planeja-se construir um chip que elimine os efeitos de uma iluminação

ambiente arbitrária, permitindo que a visão robótica saia de seus estreitos limites atuais,

funcionando bem apenas nas condições controladas dos laboratórios e passe a funcionar

perfeitamente nas condições de iluminação do mundo real. O chip funcionará muito mais como

uma retina do que como um sensor CCD (Charge Coupled Device - Dispositivo de Cargas

Acopladas) tradicional, do tipo usado em câmeras digitais até agora. Da mesma forma que as

células do olho humano processam informações antes de enviar os sinais para o cérebro, os pixels

do novo chip "conversarão" entre si sobre o que eles estão vendo.

Um programa foi utilizado para processar cerca de 80.000 imagens de lugares e objetos

ao redor do mundo, balanceando a exposição entre as imagens, retirando "ruídos" e melhorando o

contraste. O algoritmo que está por trás desse novo programa permite que os pixels "percebam" a

reflexão - uma propriedade da superfície que determina quanto da luz incidente sobre um objeto

será refletida. Ele revelou texturas indecifráveis, expôs indivíduos escondidos e descobriu até

características obscuras em chapas de raios-X. como mostra a (Figura 2 ) (Visão Artificial quase

Humana..., 2005).

8

Figura 2 – Resultado do sistema visão computacional moderno.

Segundo Brajovic no artigo Visão Artificial quase Humana...,(2005)"A maioria dos problemas na visão robótica pode ser resumida em ter-se muita luz em algumas partes da imagem

e muito pouca luz em outras,"... "Mesmo assim nós precisamos da luz para mostrar os objetos em

um campo de visão."

Portando, a visão computacional não é mais uma raridade: é parte essencial de muitas

áreas de aplicação como educação, ciências, engenharia, medicina, publicidade, lazer e militar em

tarefas que antes somente poderiam ser realizadas pela visão humana.

9

4.2. A visão humana

4.2.1. Conhecendo a estrutura do olho humano.

Segundo Gonzáles e Woods (1992) o globo ocular tem um diâmetro aproximado de

20mm, é envolvido por três membranas, a camada externa (córnea e esclerótica), camada

mediana (coróide) e a camada interna que é a retina. A coróide é revestida com uma forte

pigmentação que garante o controle da quantidade de luz que entra no olho feito pelo diafragma

da íris. O diâmetro de abertura e controle da íris pode variar de 2 a 8 mm, sendo que a parte

frontal da íris determina a cor do olho que nos é visível e a parte posterior possui um pigmento

negro. A Figura 3 mostra detalhes do olho humano.

Figura 3 – Olho Humano e suas divisões (adaptação de Gonzáles, R.C., Woods, R.E, 1992).

Para esses autores, ao focalizar uma cena, a retina que se localiza na parede posterior do

olho recebe a projeção de uma imagem correspondente. A retina é composta de dois tipos de

sensores de luz discretos, os cones e os bastonetes. Os 75 a 150 milhões de bastonetes não são

suscetíveis à cor, mas são sensíveis a baixos níveis de iluminação, estando distribuídos em toda a

superfície da retina.

Na fóvea, área circular de aproximadamente 1,5 mm² localizada na retina, estão

localizados cerca de trezentos e quarenta mil cones. Estes são altamente sensíveis à cor e estão

10

conectados um a um à terminações nervosas. Seu número pode ser de seis a sete milhões em cada

olho. Para se ter uma idéia geral, hoje, sensores de CCD, com área de 7 mm² atingem facilmente

este valor.

De acordo com os autores citados acima, um fato interessante na identificação da cor

pelos cones no olho humano é o de basear-se nas três componentes básicas de cor - R (red-

Vermelho), G (green- Verde) e B (blue- Azul). Outro fato muito relevante ao sistema de visão

humana é sua grande capacidade de percepção luminosa do ambiente, onde os valores de

intensidade luminosa atingem a ordem de 1010, adaptando-se rapidamente - mas não

simultaneamente - aos diferentes níveis intensidade e brilho. A faixa de intensidade luminosa que

olho consegue identificar simultaneamente é relativamente pequena em relação a sua faixa total

de adaptação (vide Figura 4).

Figura 4 – Faixa de adaptação do olho à intensidade luminosa.

Levando-se em consideração que atualmente sistemas eletrônicos e computacionais

possibilitam o reconhecimento de cor e a distinção de intensidade luminosa do ambiente, nota-se

a possibilidade da elaboração de um sistema artificial de visão que se assemelhe ao sistema

11

humano. A tabela abaixo apresenta uma idéia geral e comparativa da capacidade dos elementos

de visão artificial em relação ao sistema de visão humano. Tabela 1- Comparação entre o Sistema de Visão Humano e o Sistema artificial de Visão.

Capacidades envolvidas Sistema de Visão Humano Sistema de Visão Artificial Espectro Luminoso Limitado à faixa de luz visível

(300 nm à 700 nm) do espectro de ondas eletromagnéticas

Pode operar praticamente em todos os espectros de radiações eletromagnéticas, dos raios X ao infravermelho.

Flexibilidade Extremamente Flexível Normalmente inflexível, apresentando bom desempenho somente para a tarefa que foi planejada.

Habilidade Pode estabelecer estimativas relativamente precisas em assuntos subjetivos.

Efetua medições exatas, baseadas em contagem de pixels e, portanto, depende da resolução da imagem.

Cor Capacidade de interpretação subjetiva de cores

Medição objetiva dos componentes R, G e B para determinação da cor.

Sensibilidade Capaz de se adaptar a diferentes condições de luminosidade, características físicas do objeto e distancia do mesmo. Limita- se a distinção de muitos níveis diferentes de cinza simultaneamente.

Sensível ao nível e padrão de iluminação, bem como à distancia em relação ao objeto e suas características físicas. Pode trabalhar com centenas de tons de cinza ao mesmo tempo conforme o tipo de projeto.

Tempo de Resposta Elevado, da ordem de 0,1s. Depende de aspectos de hardware e software, podendo ser tão baixo quanto 0,001 s

Percepção Percebe variações de brilho em escala logarítmica. A interpretação subjetiva de brilho depende da área ao redor do objeto.

Pode perceber brilho em escala linear e logarítmica, baseando- se no sistema de cor utilizado.

2-D e 3-D Pode executar tarefas 3-D com múltiplos comprimentos de onda (dentro do espectro de luz visível ) com facilidade.

Executa tarefas 2-D com relativa facilidade, mas pode ser lento e limitado no espaço 3-D.

12

4.3. O Sistema de Visão Artificial e suas estruturas

Baseada na proposta de Marques Filho e Vieira Neto (1999) a Figura 5 apresenta o

esquema básico para funcionamento de um Sistema de Visão Artificial (SVA) na solução de

problemas específicos.

Figura 5 – Esquema básico para um Sistema de Visão Artificial.

Aquisição e Digitalização de

Imagem

Filtragem e Pré - processamento

Segmentação de Imagem por Cor ou Forma

Extração e Armazenamento das Características de

Comparação.

Reconhecimento e Interpretação de Valores

A melhoria do sistema

baseia-se no conhecimento

adquirido e aplicação dos

métodos conhecidos.

13

4.3.1. Aquisição e digitalização de imagens

Dois elementos básicos são necessários para aquisição de uma imagem e sua digitalização

(GONZÁLES & WOODS, 1992). O primeiro diz respeito ao dispositivo físico sensível a uma

faixa do espectro eletromagnético luminoso como, por exemplo, raio X, ultravioleta,

infravermelho ou a luz visível, capaz de converter os valores captados em sinais elétricos

proporcionais. O segundo se trata dos conhecidos digitalizadores ou ADC (Analogical Digital

Conversor – Conversor Analógico Digital), que são dispositivos capazes de converter sinais

analógicos de entrada como os gerados pelos sensores luminosos acima descritos, em sinais

digitais reconhecidos pelo sistema computacional.

No processo de aquisição de imagem, os sensores do tipo CCD são os mais utilizados

atualmente. Um CCD é composto de uma matriz de células semicondutoras foto sensíveis que

geram um sinal analógico que posteriormente é tratado por dispositivos eletrônicos, convertendo

este em um sinal conhecido de vídeo.

De acordo com esses autores, uma câmera monocromática consiste basicamente em um

conjunto de lentes para a focalização da imagem em um CCD. Já uma câmera colorida requer o

uso de prismas e filtros de cor capazes de decompor a imagem nos componentes R, G e B que

serão focalizados cada um em CCD’s distintos. Os sinais elétricos então são posteriormente

combinados conforme cada padrão de cor utilizado, como por exemplo, o NTSC (National

Television Standards Commitee - Comitê Nacional de Padrões de Televisão) e o Pal (Phase

Alternating Line – Linha de Fases Alternadas) ou as variações baseadas nestes.

Para digitalização de imagens monocromáticas é necessário primeiramente levar em

consideração que existe a perda de uma dimensão da imagem 3D do objeto para sua

representação eletrônica analógica 2D e, além disso, deve-se compreender a representação

matemática da imagem para esses valores analógicos como sendo uma função f (x,y) da

intensidade luminosa, onde a f (x,y) representa o produto da iluminância i (x,y) (luz incidente

sobre o objeto) e a refletância (r) do ponto específico (x, y) do objeto representado.

Matematicamente:

f (x,y) = i ( x,y ) * r ( x,y )

onde : 0 < i (x,y) < ∞ e

0 < r (x,y) < 1

( 1 )

14

Assim, para Gonzáles e Woods (1992) os níveis de cinza (Nc ) podem ser representados

analógica e proporcionalmente à intensidade de luz de uma imagem monocromática em cada

ponto (x,y) pela f (x,y), determinando um intervalo de variações para Nc :Nc min< Nc (x,y) < Nc Max.

Agora, para digitalização dos sinais analógicos obtidos, deve-se realizar a conversão em

valores discretos do intervalo de Nc para identificação espacial e de amplitude. Basicamente,

esses valores passam a ser representados na forma matricial K (m x n) onde os valores de

identificação espacial determinam a quantidade de pixels (elementos k mn) da matriz e a

identificação de amplitude determina o valor discreto da faixa de 0 a 2n -1 que cada pixel ou

elemento k mn assumirá, conforme mostra a matriz na equação 2.

f (0,0) f (0,1) ... f (0, n-1)

K (m x n) = f (1,0) f (1,1) .... f (1, n-1)

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

f (m,0) f (m,1) ..... f (m-1,n-1)

Onde os valores m e n estão distribuídos na imagem como mostra a Figura 6 .

Figura 6 – Eixos para identificação matricial de valores discretos dos níveis de cinza.

( 2 )

15

Observando-se a formação da matriz imagem em relação à qualidade da mesma, fica fácil

perceber que quanto maior a quantidade de elementos (pixels) e maior a faixa de níveis de cinza

utilizado, maior será a qualidade final da imagem digitalizada. Porém, é preciso levar em

consideração qual a finalidade de uso para tal digitalização e o espaço de memória ocupado por

essa imagem. Para se ter uma idéia da qualidade de uma imagem digital em relação à quantidade

de pixels e níveis de cinza utilizados, em uma imagem de televisão P & B tem-se uma matriz de

512 x 512 pixels, com 128 níveis de cinza. Em geral, para o olho humano, 64 níveis de cinza são

considerados suficientes para uma boa interpretação da imagem (MARQUES FILHO & VIEIRA

NETO,1999).

Tendo-se o entendimento do processo de digitalização de uma imagem monocromática

descrito acima, pode-se expandir tal processo para os diferentes níveis discretos dos intervalos de

R, G e B independentes entre si, de forma análoga à feita no processo de aquisição da imagem

monocromática para a colorida pelos sensores CCD, descrita nesta sessão.

4.3.2. Propriedades de uma imagem.

Para iniciação no processo de processamento de imagem é requerido o conhecimento de

algumas propriedades relacionais entre os pixels da imagem discreta digitalizada, descritas por

Marques Filho e Vieira Neto (1999) tais como: vizinhança, conectividade, adjacência, caminho e

os tipos de medições de distância.

A vizinhança de um pixel pode ser dividida em vizinhança vertical / horizontal e

vizinhança diagonal. A vizinhança vertical / horizontal, trata dos quatro vizinhos do pixel (x,y)

em questão que são ( x+1, y ), ( x-1, y ), ( x , y+1 ) e ( x , y-1 ). A vizinhança diagonal trata dos

pontos ( x-1, y -1 ), ( x-1, y + 1 ), ( x+1 , y-1 ) e ( x+1 , y+1 ) em relação ao pixel (x, y).

De acordo com esses autores, a vizinhança total do pixel (x,y) passa então a ser a união

entre a vizinhança vertical / horizontal e a vizinhança diagonal ( Vt = Vv/h U Vd ). A Figura 7

ilustra os tipos de vizinhança para um pixel p de (x,y).

16

Figura 7 – Vizinhanças de um pixel de uma imagem digitalizada.

A conectividade permite estabelecer os limites de objetos e componentes de uma região

em uma imagem. Para determinar a conectividade entre os pixels, é necessário estabelecer um

critério de comparação e similaridade entre os níveis de cinza dos pixels vizinhos. A

conectividade pode se dar entre dois ou mais pixels pela comparação desses níveis adotados

como critério entre as vizinhanças vertical /horizontal, diagonal ou a união delas.

A adjacência de um pixel p a outro q existe se estes forem conectados, portanto pode-se

assim determinar se um subconjunto N de pixels da imagem é adjacente a outro subconjunto M de

pixels dessa mesma imagem.

O caminho de pixel p de coordenadas (x,y) até atingir um pixel q de coordenadas (k,l) é

constituído por uma seqüência de pixels i (xi,yi) distintos e adjacentes entre si, onde: (xi, yi) é

adjacente a (xi-1,yi-1) | 1 ≤ i ≤ n , n determina o comprimento do caminho.

Os tipos de medições mais comumente utilizados são: a distância euclidiana entre os

pontos p (x,y) e q (k,l) dada por: D(p,q) = ( x – k ) ² + ( y – l ) ² ; a distância tipo D4

dada por: D4 (p,q) = | x – k | + | y – l | e a D8 dada por: D8 = max (| x – k |,| y – l |).

Pode-se também utilizar algumas operações aritméticas como adição, multiplicação,

subtração e divisão pixel a pixel obtendo os resultados demonstrados na Tabela 2, ou ainda

operações lógicas (Not, And , Or , Xand , Xor), representadas na Figura 8, tanto em imagens

binárias como em imagens de diferentes tons de cinza desde que se observe a normalização dos

diferentes intervalos utilizados.

17

Tabela 2- Resultados das aplicações aritméticas de imagens em tons de cinza.

Operação Resultados Obtidos. Adição Normalização de brilho da

imagem a uma faixa pré- definida. Auxilio na remoção de ruídos.

Subtração Permite a detecção de diferenças entre duas imagens adquiridas de forma consecutivas em uma cena.

Multiplicação Possibilita a calibração do brilho da imagem.

Divisão Normalização do brilho for um fator K escolhido.

Figura 8 – Aplicação lógica aplicada a imagens binárias.

18

4.3.3. Convolução com máscaras

Uma das operações muito úteis no processamento de imagem é a chamada convolução

com máscara. O termo convolução é determinado por um processo finito de operações

matemáticas feitas pixel a pixel na matriz imagem, obtendo-se um valor resultante para cada um

dependendo diretamente do tipo de máscara (matriz quadrada com valores pré-determinados)

aplicada. Para compreender melhor as operações realizadas com a convolução, observe

inicialmente o exemplo proposto por Marques Filho e Vieira Neto (1999), em um vetor

unidirecional e em seguida sua aplicação feita em uma matriz imagem elaborada para este

exemplo:

Dado um vetor A = { 0,1,2,3,2,1,0 } como sendo um “vetor imagem”, e uma máscara a

aplicar por convolução, B = {1,3,-1}, obtém-se o resultado Cv(AB) realizando as seguintes

operações:

1° - O vetor B deve ser espelhado, ficando B(esp) = {-1,3,1};

2° - Alinha-se o centro do vetor B ao elemento inicial de A como abaixo;

v.B(esp) -1 3 1

v.A 0 1 2 3 2 1 0

Cv(AB)

3°- Multiplica-se cada elemento de B ao elemento logo abaixo de A, considerando a falta

de elementos como valor 0 (zero), somando-se os resultados obtidos de todos os produtos e

posicionando este logo abaixo do elemento correspondente de A ao qual a convolução foi

centralizada. Matematicamente: (0*-1) + (3*0) + (1*1) = 1

v.B(esp) -1 3 1

v.A 0 1 2 3 2 1 0

Cv(AB) 1

4° Repete-se o procedimento anterior, deslocando a máscara do vetor B(esp),

centralizando este em cada elemento do vetor A até o seu final. Agora (-1* 0 ) + (3*1)+(1*2)=5;

v.B(esp) -1 3 1

v.A 0 1 2 3 2 1 0

Cv(AB) 1 5

19

5° Ao final do processo repetitivo do 3° e 4° acima descritos obtém-se o vetor resultante

da convolução de A por B,Cv(AB)= {1,5,8,9,4,1,-1}, mostrado abaixo:

v.B(esp) -1 3 1

v.A 0 1 2 3 2 1 0

Cv(AB) 1 5 8 9 4 1 -1

Como dito anteriormente, este processo pode ser expandido do caso unidirecional para o

caso bidirecional, utilizando-se de uma matriz imagem e uma máscara de convolução matricial

quadrática para realização dos cálculos, como mostra o exemplo abaixo:

Seja a matriz A, uma suposta matriz imagem em tons de cinza dada por:

5 8 3 4 6 2 3 7

3 2 1 1 9 5 1 0

0 9 5 3 0 4 8 3

Amn = 4 2 7 2 1 9 0 6

9 7 9 8 0 4 2 4

5 2 1 8 4 1 0 9

1 8 5 4 9 2 3 8

3 7 1 2 3 4 4 6

Seja a matriz B utilizada como máscara dada a seguir:

2 1 0

Bij = 1 1 -1

0 -1 -2

Lembrando que a máscara deve ser espelhada para iniciar-se o processo de convolução, a

Figura 9 mostra o cálculo a ser realizado para o primeiro elemento da convolução Cv(AB) das

matrizes.

20

Figura 9 – Resultado da primeira operação de convolução de A por B.

A matriz resultante no final do processo de convolução de A por B é dada por:

20 10 2 26 23 6 9 4

18 1 -8 2 7 3 3 -11

14 22 5 -1 9 -2 8 -1

Cv(AB) = 29 21 9 -9 10 12 -9 -9

21 1 16 -1 -3 -4 2 5

15 -9 -3 7 -6 1 17 9

21 9 1 6 -2 -1 23 2

9 -5 -25 -10 -12 -15 -1 -12

Finalmente, com o uso de diferentes máscaras no processo de convolução, podem-se obter

alterações interessantes da imagem original a fim de realçar detalhes da mesma como linhas,

bordas ou outros pontos isolados como apresentado no próximo item.

4.3.4. Detecção de borda por convolução.

Em uma análise de imagens, o primeiro passo a se realizar é a separação ou a

segmentação dos objetos dentro da imagem. Com o uso de algoritmos de segmentação como, por

exemplo, os de detecção de borda, pode-se achar as diferenças entre dois ou mais objetos. A

segmentação baseia-se em dois conceitos básicos, a descontinuidade e a similaridade (SEARA,

1998).

21

Segundo a autora não existe um modelo formal para a segmentação, o processo é

empírico e deverá ser ajustado a diferentes tipos de imagem e suas modificações. Assim, as

técnicas de segmentação tornam-se relativamente complexas porque tentam traduzir para o

computador um processo extremamente sofisticado e cognitivo realizado pela visão humana. O

conceito de descontinuidade pode apresentar-se basicamente de três formas, a descontinuidade de

um ponto isolado, de uma linha, ou da borda de um objeto.

Na detecção de pontos isolados, uma das mais simples técnica de detecção, busca-se uma

mudança drástica do valor de cinza de um pixel em relação aos seus vizinhos. Na detecção de

linhas, um processo pouco mais complicado que o anterior, é necessário achar os pixels que são

semelhantes, testando-os para verificar se estes fazem parte de uma mesma linha.

A detecção de bordas é uma das técnicas utilizadas pela visão humana no reconhecimento

de objetos, que consiste no processo de localização e realce dos pixels da borda de determinado

objeto, aumentado o contraste entre a borda deste e o fundo, através da verificação da variação

dos valores de luminosidade da imagem (PRATT, 1991, apud MARQUES FILHO & VIEIRA

NETO, 1999).

Os próximos parágrafos detalham algumas técnicas de interesse a este trabalho utilizadas

no processo de detecção de borda, tais como, reconhecimento por gradiente, operador laplaciano

e a interessante aplicação de máscaras de convolução.

O reconhecimento de um a borda pelo gradiente ∇f de uma imagem f (x,y) na localização

(x, y) é determinado pelo vetor gradiente ( 3 ):

onde Gx e Gy são as máscaras que podem variar de acordo com o tipo de detecção

(OLIVEIRA, 2003).

Na detecção da borda pelo gradiente, a magnitude e a direção do vetor ∇f são de grande

importância, fornecendo informações da taxa de aumento da f (x,y) na direção de ∇f ( 4 ) e a

direção do mesmo ( 5 ). As respectivas equações de magnitude e direção estão representadas a

seguir:

( 3 )

22

e,

Segundo Neves e Pelaes (2001) uma das práticas utilizadas é a aproximação do gradiente

por um valor absoluto determinado por:

o que facilita sua implementação. O operador laplaciano utilizado na detecção de borda

para uma imagem 2-D dada por f (x,y) é a derivada de segunda ordem definida como:

Embora o laplaciano seja capaz de realçar ou detectar bordas em qualquer direção, seu uso

é restrito devido a sua grande suscetibilidade a ruídos, que são pequenos distúrbios randômicos

de níveis de cinza, estatisticamente independente dos dados da imagem e normalmente

ocasionados quando esta é transmitida eletronicamente de um lugar para outro (SEARA, 1998).

Tanto o gradiente quanto o método do laplaciano costumam ser aproximados com a

aplicação de máscaras de convolução geralmente de 3ª ordem (3 x 3), detalhadas na sessão

anterior. As máscaras de Roberts, Sobel, Prewitt e Frei-chen, bem como as específicas máscaras

de laplaciano, são as mais utilizadas para as aplicações descritas anteriormente, e estão

apresentadas na Tabela 3.

( 5 )

( 6 )

( 7 )

( 4 )

23

Tabela 3 - Tipos de máscaras utilizadas na aproximação do gradiente e laplaciano.

Para se ter uma idéia dos resultados obtidos com aplicação de algumas destas máscaras, as

Figuras 9-b e 9-c, apresentam respectivamente o uso das máscaras de Prewitt (vertical “OR”

horizontal) e Sobel (vertical “OR” horizontal), aplicadas a uma imagem original (Figura 9-a).

24

Figura 9-a (Imagem Original); Figura 9-b (Prewitt); Figura 9-c (Sobel);

Figura 9 – Detecção de bordas por máscaras de convolução.

4.3.5. Ampliação e redução geométrica de imagens

O processo de ampliação e redução de imagens consiste basicamente no aumento ou

diminuição das dimensões lineares desta apenas para fins de visualização. Um método simples de

se ampliar uma imagem é a duplicação dos valores de cada pixel p de (x,y) nas direções de x ou

de y, ou ainda em ambas. Diferentes fatores de ampliação ou redução utilizados numa mesma

imagem nas direções de x e y que respectivamente podem ocasionar alterações no aspecto da

proporcionalidade desta (MARQUES FILHO & VIEIRA NETO, 1999).

A ampliação de uma imagem utilizando um fator 2 em ambas as direções, consiste na

copia de cada pixel da imagem original, quatro vezes na imagem a ser gerada (Figura 11).

Figura 10 – Ampliação de 2 X aplicada a um pixel p(x,y);

25

Para aplicar-se a redução basta utilizar o processo inverso, ou seja, agrupar quatro pixels

da imagem original, de preferência com mesma conectividade, a um único pixel da imagem a ser

gerada. A proporcionalidade para a cópia de pixels em uma ampliação ou zoom pode ser descrita

através da fórmula de (F)², onde a F é o fator de zoom a se obter. Exemplificando: se se deseja

obter um zoom de uma imagem da ordem de 4 x, então a cópia de pixels vizinhos a ser gerada é

em número da ordem de (4)² = 16 pixels. A ampliação e redução da imagem por fatores não

inteiros, ou seja, fracionários é perfeitamente possível, porém muito mais complexa e requer o

uso de algoritmos e técnicas de interpolação não condizentes com as justificativas deste trabalho.

4.3.6. Histograma e Técnicas de filtragem de imagem

O histograma de uma imagem em tons de cinza consiste basicamente na obtenção do

percentual de pixels de uma imagem que se apresenta em um determinado valor de nível de

cinza. Segundo Gonzáles e Woods (1992) para cada elemento encontrado no conjunto dos

valores específicos de níveis de cinza vale a seguinte regra:

P r ( rk ) = nk / n

onde : 0 ≤ rk ≤ 1;

k é 0,1...... L-1, sendo L a quantidade de níveis de cinza da imagem;

n é o total de pixels da imagem digitalizada;

P r ( rk ) é a probabilidade do K-ésimo nível de cinza;

nk é o numero de cinza cujo nível de cinza corresponde a k.

assim, pela concentração de pixels em determinada faixa do gráfico discreto obtido dos

valores de probabilidade para os níveis de cinza da imagem (Figura 11a – 11d ), é possível

determinar se uma imagem apresenta-se de forma predominantemente clara, escura, muito ou

pouco contrastante. Por exemplo, se a maior concentração está nos valores mais baixos de cinza,

a imagem é predominantemente escura e se a concentração está nos valores mais altos, a imagem

é predominantemente clara.

( 6 )

26

0 0,1 0,2 0,3 0,4 0,5 0,6 0,7 0,8

Pr ob

ab ili

da de

1 2 3 4 5 6 7 8

Faixas de Níveis de Cinza

Histograma de Imagem

Figura 11a – Histograma de imagem predominantemente escura;

0 0,1 0,2 0,3 0,4 0,5 0,6 0,7 0,8

Pr ob

ab ili

da de

1 2 3 4 5 6 7 8

Faixas de Níveis de Cinza

Histograma de Imagem

Figura 11b – Histograma de imagem predominantemente clara;

27

0 0,1 0,2 0,3 0,4 0,5 0,6 0,7 0,8 0,9

Pr ob

ab ili

da de

1 2 3 4 5 6 7 8

Faixas de Níveis de Cinza

Histograma de Imagem

Figura 11c – Histograma de imagem pouco contratante;

0

0,1

0,2

0,3

0,4

0,5

0,6

Pr ob

ab ili

da de

1 2 3 4 5 6 7 8

Faixas de Níveis de Cinza

Histograma de Imagem

Figura 11d – Histograma de imagem muito contrastante;

Portanto, conhecendo-se o histograma de uma imagem e aplicando os valores dos níveis

de cinza desta em determinadas funções matemáticas, pode-se obter algumas transformações

visuais de contraste, brilho e intensidade. Filtros como equalização, compressão e expansão dos

tons de cinza em imagens são baseados na transformação de histogramas (MARQUES FILHO, &

VIEIRA NETO, 1999). Outros filtros como passa alta, passa baixa e filtro da média descritos por

Gonzáles e Woods (1992), são baseados na aplicação de máscaras de convolução ou de

aproximações matemáticas de determinadas funções. As técnicas de filtros apresentadas a seguir

28

estão descritas apenas para imagens em tons de cinza, mas podem ser expandidas para um

sistema colorido do tipo RGB, respeitando-se os valores dos níveis para cada cor

independentemente.

Como dito anteriormente, as transformações de intensidade podem ocorrer a partir da

aplicação de determinadas funções aos valores de tons de cinza de cada pixel da imagem. Assim,

pode-se descrever funções tanto lineares como não lineares que respeitem às seguintes

exigências:

1° - Elas devem ser funções injetoras, ou seja, se x1 ≠ x2 → f(x1) ≠ f(x2) x1,x2 € à f

original.

2° - Devem ser monotonicamente crescentes dentro do intervalo padronizado para os

histogramas: 0 ≤ f ≤ 1.

A Figura 12 mostra um exemplo de uma função que obedece aos critérios acima descritos.

Figura 12 – Exemplo de função injetora monotônica;

Para as transformações lineares, seguindo a regra g (x) = c * f (x) + b, onde a g (x) é a

resultante da transformação linear dos valores da imagem f (x) pode-se obter os seguintes

gráficos da Figura 13:

V

29

Figura 13 – Exemplos de funções lineares aplicadas a imagens em tons de cinza

Para as transformações não-lineares, seguindo a regra g (x) = c * log( f (x) + 1) definida

por Gonzáles e Woods (1992), tal que a g (x) é a resultante da transformação não-linear dos

valores da imagem f (x) multiplicada por uma constante (c) onde pode-se obter o seguinte

gráfico da Figura 14:

Figura 14 – Exemplo de Função não–linear aplicada a imagens em tons de cinza.

30

Uma das funções utilizadas para o auto-ajuste dos valores do histograma da imagem,

conhecida como auto-escala pode ser implementada à uma imagem, respeitando-se a seguinte

equação:

sendo que f max e f min são os níveis máximos e mínimos de cinza da imagem original

respectivamente.

A equalização de um histograma busca a redistribuição uniforme dos valores atribuídos a

cada pixel da imagem. Uma função de distribuição acumulativa cdf (cumulative distribution

function), baseada na probabilidade que gerou o histograma, mostrada abaixo, é comumente

utilizada para realizar a equalização dos tons de cinza:

onde:

Sk é a resultante do tratamento feito a todos os pixels da imagem original;

0 ≤ rk ≤ 1;

k é 0,1...... L-1, sendo L a quantidade de níveis de cinza da imagem.

A Tabela 4 apresenta os dados obtidos para um histograma de uma imagem de 8 tons de

cinza e a resultante da aplicação de equalização desta imagem.

( 8 )

( 9 )

31

Tabela 4 -Valores originais do histograma em Pr(rk) e os resultados da euqlização (Sk).

Nível de Cinza nk(quant. Pixel) Pr(rk) Original Result. (Sk) 1 1120 0,068 0,068 2 3214 0,196 0 3 4850 0,296 0,196 4 3425 0,209 0 5 1995 0,122 0,296 6 784 0,048 0,209 7 541 0,033 0,122 8 455 0,028 0,109

Total 16384 1 1

Seguem também os histogramas destes valores Figura 15a e 15b:

0

0,05

0,1

0,15

0,2

0,25

0,3

P ro

ba bi

lid ad

e

1 2 3 4 5 6 7 8

Faixas de Níveis de Cinza

Histograma de Imagem Original

Figura 15a – Histograma gerado a partir dos valores da imagem original.

32

0

0,05

0,1

0,15

0,2

0,25

0,3 P

ro ba

bi lid

ad e

1 2 3 4 5 6 7 8

Faixas de Níveis de Cinza

Histograma de Imagem Equalizada

Figura 15b – Histograma gerado a partir dos valores calculados pela equalização.

Abaixo é apresentada uma equalização de imagem, na qual é possível visualizar o realce

dos contrastes desta. A Figura 16a mostra uma imagem pouco contrastante e seu respectivo

histograma. A figura 16b mostra o resultado da equalização desta.

Figura 16a, 16b – Resultado do realce de contraste com equalização de histograma.

33

Outras técnicas como expansão e compressão de histogramas podem ser utilizadas para o

realce e diminuição do contraste de imagens respectivamente.

Na expansão de histograma, os valores são organizados de forma que ocupem toda faixa

do histograma uniformemente, respeitando-se as proporcionalidades dos tons de cinza. No

processo de compressão, esses valores são reagrupados para ocupar uma determinada faixa do

histograma. As Figuras 17 e 18 apresentam respectivamente a aplicação das técnicas de expansão

e compressão e seus devidos histogramas.

Figura 17 – Expansão do histograma, realce de contraste.

Figura 18 – compressão do histograma, diminuição de contraste.

34

Para efeitos de suavização, remoção de ruídos de imagens e detalhamento desta, são

aplicados alguns filtros do tipo passa-baixa, filtros da média e passa-alta, que estão baseadas na

aplicação de máscaras de convolução, detalhadas anteriormente neste trabalho. Os filtros

denominados de passa baixa e filtros da média atenuam ou eliminam os componentes de alta

freqüência que correspondem à região de bordas e/ou detalhes mais finos da imagem, tratando-se

assim dos efeitos de suavização da imagem. As Figuras 19b, 19c e 19d mostram o resultado de

um filtro da média pela convolução das máscaras da M-1, M-2 e M-3 respectivamente, onde é

possível notar que quanto maior a máscara aplicada maior é o grau de atenuação da imagem pelo

filtro feito à imagem original Figura 19a.

Figuras 19a – Imagem original; Figura 19b – Aplicação da máscara de convolução;

35

Figuras 19c, Figura 19d – com as respectivas máscaras de convolução;

Os filtros do tipo passa-alta evidenciam detalhes finos da imagem e podem ser utilizados

como métodos de diferenciação entre linhas, como por exemplo, no reconhecimento de digitais

humanas. Assim, uma máscara básica de convolução para este pode ser elaborada, apresentando

coeficientes positivos no centro e suas proximidades, e coeficiente negativo fora destes.

A Figura 20 apresenta uma máscara de convolução básica para passa-alta e sua aplicação.

36

Figura 20a – Imagem original; Figura 20b – Aplicação da máscara de convolução;

4.3.7. Sistemas de cores

A cor é um poderoso diferenciador no instante do reconhecimento de objetos e padrões

em sistemas de processamento de imagem. A segmentação por cor é baseada no processamento

de imagens coloridas adquiridas por meio de equipamentos (câmeras) já dotadas de um sistema

de reconhecimento de cores por hardware, ou na pseudocolorização de imagens em tons de cinza,

onde se atribui a cada tom uma cor diferente, permitindo-se assim a sua segmentação

(GONZÁLES & WOODS, 1992).

Para entender como são classificados os sistemas de cores mais conhecidos atualmente, é

preciso antecipadamente compreender alguns princípios básicos do reconhecimento da cor.

Mesmo tendo o domínio destes princípios, vale lembrar que as técnicas para o processamento de

imagens coloridas ainda são relativamente recentes, apesar dos aspectos físicos da cor estarem

sendo estudados há muitos anos, e constituírem hoje um forte embasamento teórico (MARQUES

FILHO & VIEIRA NETO, 1999).

37

Segundo Gonzáles e Woods (1992) os estudos sobre a cor iniciaram-se por volta de 1666,

quando Sir Isaac Newton utilizou--se de um prisma de vidro para decompor a luz branca,

visualizando assim o conhecido espectro de cores que vai do violeta ao vermelho (Figura 21).

Figura 21 – Espectro de decomposição da luz branca por um prisma de vidro.

Como dito anteriormente, a luz vista pelo olho humano é a luz refletida pelos objetos.

Assim, ao ver a cor azul em um objeto, significa que a luz refletida por este é apenas a faixa

correspondente ao azul que se vê e o restante do espectro luminoso é absorvido pelo objeto. A

teoria proposta por Yong em 1801, sugere que a percepção humana da cor está baseada na

divisão dos cones (células fotossensíveis do olho) em três faixas de percepção, RGB. A

percepção dessas três cores, denominadas de primárias aditivas, permitem através de

determinadas combinações, que o olho humano perceba diferentes cores de uma determinada

faixa de luz, conhecida como luz visível.

Em 1931, a CIE (Comission Internationale de I’Eclairage – Comissão Internacional de

Iluminação), padronizou os comprimentos de ondas para as cores primárias como sendo:

vermelho de 700 nm, verde de 546,1 nm e azul de 435,8 nm. A Figura 22 apresenta a

classificação dos diferentes comprimentos de onda para o espectro da luz branca.

Figura 22 – Comprimentos de onda e a divisão entre luz visível, ultravioleta e infravermelho.

38

Com a combinação das cores primárias sendo feita duas a duas obtêm-se as chamadas

cores secundárias, margenta (R + B), amarelo (R + G) e o ciano (G + B). A mistura de todas as

cores produz a luz branca, conforme a Figura 23. Esse é o tipo de combinação utilizado pelos

dispositivos luminosos, monitores de computador e televisores (FOLEY et al.,1990).

Outra combinação é a chamada de subtrativa, utilizada em dispositivos de pigmentação,

como impressoras coloridas e equipamentos de fabricação de tinta, onde cada pigmento

depositado subtrai parte da luz branca refletida pelo papel ou base, permitindo assim que somente

a luz da cor desejada seja refletida. A mistura de todas as cores primárias subtrativas, margenta,

amarelo e ciano, diferentemente como ocorre na mistura das cores primárias aditivas, levam ao

preto, ou seja, a ausência de reflexão da luz pelo papel ou base. As Figuras 23 e 24 mostram as

combinações das cores primárias aditivas e subtrativas, respectivamente.

Figura 23 – Mistura de cores primárias aditivas.

Figura 24 – Mistura de cores primárias subtrativas.

39

Basicamente, no processamento de imagens coloridas, a distinção entre cores com mesma

quantidade de mistura R, G e B pode ser obtida pela identificação de outras características destas

como os valores de I (Intensity - Intensidade ou Brilho), H (hue - Matiz ou Coloração) e

S (Saturation - Saturação). A intensidade representa a quantidade luminosa da radiação, a matiz

está associada ao comprimento de onda predominante da combinação de luz, enquanto a

saturação expressa a pureza da matiz. A relação Matiz “AND Lógico” Saturação recebe o nome

de cromaticidade e assim pode-se dizer que é possível identificar uma cor pelo brilho e sua

cromaticidade.

De acordo com Foley e colaboradores (1990) as porcentagens de R, G e B presentes em

determinada cor recebem o nome de coeficientes tricromáticos, e são padronizadas numa escala

de 0 à 1 seguindo respectivamente as seguintes regras:

onde r + g + b = 1.

Os coeficientes exatos de cromaticidade para cada cor são padronizados de acordo com o

Diagrama de cromaticidade da C.I.E, apresentados na Figura 25.

(10)

(11)

(12)

40

Figura 25 – Gráfico de padronização da C.I.E. para coeficientes de cromaticidade.

A fim de padronizar a especificação para os sistemas de cores desenvolvidos atualmente

para hardware criaram-se modelos de representação tridimensional, onde cada cor é representada

por um ponto de coordenadas do sistema.

41

Os parágrafos seguintes apresentam alguns modelos utilizados para representação de

cores como o RGB, HSI, CMY (cyan-ciano, margenta-margenta, yellow-amarelo) e o YIQ

(padrão NTSC de TVs).

O modelo RGB utilizado por câmeras e monitores de vídeo, baseia-se em um sistema de

coordenadas cartesianas tridimensional (x,y,z), onde um cubo de lado 1 é plotado (ver Figura 26)

e os eixo x , y e z do sistema são as três arestas do cubo que representam as escalas de R, G e B

individualmente. A origem (0,0,0) determina a cor preta e o vértice mais afastado desta, a cor

branca. Assim, para o modelo RGB, as escalas de tons de cinza assumem os valores dispostos na

linha diagonal de (0,0,0) à (1,1,1) do cubo representado na Figura 26 e as cores secundárias,

ciano, margenta e amarelo resultam da interação entre as cores primárias como visto

anteriormente.

Figura 26 – Distribuição do sistema de cores RGB.

42

O sistema de cores HSI é fortemente utilizado em sistemas de visão artificial baseado na

segmentação por cor, uma vez que permite identificar as componentes de matiz, saturação e

intensidade, através das cores obtidas de um sistema RGB.

Para se obter o sistema HSI a partir do modelo RGB, deve-se primeiramente ter uma visão

do espaço vetorial de onde estão os elementos HSI no sistema RGB. A intensidade (I) é o vetor

representado no RGB pela própria diagonal dos tons de cinza, que vai de (0,0,0) à (1,1,1). Assim

sendo, se um vetor (c) determinar a cor por c=(r, g, b), a intensidade (I), determinada pelo vetor

pc(i, i, i), é o módulo da projeção do vetor c(r, g, b) sobre o vetor I. A saturação (S) é a distância

do ponto (r, g, b) ao ponto (i, i, i) encontrado, definida também pelo módulo de do vetor c-pc.

Para determinar-se a Matiz (H), cria-se um plano (β) perpendicular à diagonal passando pela

origem e define-se o valor (H) como sendo o ângulo entre as projeções do vetor c(r,g,b) e do

vetor r(1,0,0) ao plano β. O Anexo A – O Sistema de Cor HSI, apresenta em maiores detalhes a

demonstração dos cálculos vetoriais das conversões de RGB para HSI. Praticamente, pode-se

obter tais conversões através das equações seguintes:

onde o vetor (u,v) é dado por :

e ainda,

(13)

(14)

(15)

(16)

(17)

43

Outra forma mais simples de se de se obter os valores da matiz (H) e da saturação (S) é a

equivalente proposta de Marques Filho & Vieira Neto (1999), onde:

sabendo-se que para ( B / I ) > ( G / I ), deve-se fazer H = 360° - H, tal que sua

normalização faz-se por H = H / 360°.

A Figura 27 apresenta uma idéia espacial de representação do modelo HSI, onde os

cortes horizontais, como o corte AA representado, produzem as imagens vistas à direita.

Figura 27 – Representação espacial do modelo de cor HSI.

(18)

(19)

44

O modelo CMY é a base para os dispositivos de pigmentação, como impressoras

coloridas e equipamentos de fabricação de tinta, uma vez que este usa as cores ciano, margenta e

amarelo como sendo cores primárias do princípio de deposição de pigmentos em um papel ou

base.

Para possibilitar a correta interpretação dos dispositivos baseados na adição de luz, como

os monitores de computador e os dispositivos baseados na deposição de pigmentos, ou seja,

subtração da luz, é necessário realizar a conversão do modelo RGB para o modelo CMY, baseada

na seguinte igualdade:

onde R,G e B estão padronizados no intervalo [0..1].

O modelo YIQ foi desenvolvido para permitir a compatibilidade do sistema utilizado nos

televisores preto & branco e o novo sistema NTFC que estava sendo desenvolvido para os

televisores coloridos. Baseado nisso, o sistema YIQ aproveitou-se da informação de brilho (Y)

necessária para geração de imagens monocromáticas, e acrescentou a essa as informações de

cromaticidade representadas por (I e Q).

Uma vantagem da utilização do sistema YIQ é a capacidade de alterar o brilho (Y) de

imagens coloridas sem alterar as informações de cromaticidade, utilizando as técnicas de

histograma descritas no item 4.3.6. Para tanto, a conversão do modelo RGB para o YIQ faz-se

necessária e segue a seguinte regra:

onde R,G e B estão padronizados no intervalo [0..1].

(20)

(21)

45

4.3.8. Segmentação de imagens por cor

Agora, com o conhecimento dos diferentes sistemas de cores e das técnicas básicas de

conversão entre os modelos, torna-se possível realizar o processamento e a segmentação de

imagens coloridas em busca do reconhecimento de determinados detalhes da imagem.

Segundo Ballard e Brown (1982) a idéia de segmentação de uma imagem é o termo usado

em visão computacional para “o agrupamento de partes de uma imagem genérica em unidades

que são homogêneas com respeito a uma ou várias características (ou atributos), que resulta em

uma imagem segmentada”.

Comumente, duas maneiras básicas são utilizadas para realizar a segmentação de uma

imagem. A análise da imagem, baseada na similaridades entre regiões desta - essas regiões são

normalmente definidas como áreas de conectividade entre pixels, como já descritas

anteriormente - e a análise baseada na descontinuidades na imagem, que utiliza as variações

bruscas nos valores de intensidade dos pixels para selecionar uma imagem (BIANCHI, 2001).

Como visto anteriormente, existem modelos que são mais adequados para a segmentação,

ou reconhecimento da cor em sistemas de visão artificial, é o caso dos modelos HSI e YIQ, que

isolam a intensidade (I), muito utilizada nesses sistemas, das demais componentes de

cromaticidade de uma imagem. Assim, com a decomposição de imagens coloridas (full color

images) nas diferentes componentes dos modelos de cor, torna-se possível aplicar diversas

técnicas existentes para imagens em tons de cinza, como a busca de pixels por vizinhança,

adjacência, conectividade e caminho, além do reconhecimento de borda e equalização de

histogramas (MARQUES FILHO & VIEIRA NETO, 1999).

A utilização do modelo RGB em conjunto com outros modelos como o HSI e o YIQ, ou

até mesmo componentes individuais destes, possibilita o reconhecimento da similaridade e

diferenciação entre pixels e a classificação de regiões da imagem por um sistema de visão

artificial. O desenvolvimento do software se visão artificial deste trabalho baseia-se no uso dos

modelos RGB e HSI para a segmentação por similaridade e a segmentação por diferenciação dos

elementos de cor envolvidos no jogo de futebol de robôs (BIANCHI, 2001).

4.3.9. Vetorização baseada na diferença entre pixels

O processo de vetorização de regiões baseado na diferença consiste inicialmente na

filtragem de imagem e o reconhecimento de bordas, como por exemplo, a convolução utilizando

46

a máscara de Sobel. Após realizar tais processos, pode-se utilizar um limiar de cor para a busca

da descontinuidade da conectividade entre os pixels, encontrando-se todas as regiões da imagem

que possuem um contorno fechado (Bianchi, 2001). Os parágrafos seguintes descrevem um

processo básico para se encontrar o perímetro, a área e o centro dessas regiões.

Obtendo-se uma imagem binarizada (imagem, preto e branco) pelo processo de

reconhecimento de borda é possível fazer uso do algoritmo de chain code proposto por Ballard e

Brown (1982) e baseado no descrito em Rillo (1998 apud Bianchi, 2001). Basicamente, este

algoritmo considera que qualquer ponto na matriz da imagem binarizada a ser considerado para

fins de cálculo deve estar conectado aos oito pontos imediatamente a sua volta através de um

vetor elementar, cuja direção foi rotulada (de v1 até v8), apresentados na Figura 28.

Figura 28 – Definição dos vetores elementares

Através destes vetores, inicia-se um procedimento que segue os contornos de uma

imagem, criando uma corrente de vetores ligados. Portanto, basta ter um ponto inicial da corrente

e a seqüência dos vetores para se determinar precisamente uma região. Para evitar a perda

constante da seqüência dos elos da corrente, quando a borda possui mais de um pixel de

espessura este procedimento segue o contorno um pouco mais externo que o contorno esperado.

O cálculo da área de uma região para este procedimento é semelhante ao realizado pela integral

definida entre pontos, onde a área total é então dada pela somatória da contribuição de cada vetor

elementar. O perímetro de uma região pode ser encontrado através dos algoritmos baseados em

chain-codes, onde o perímetro total é definido por:

47

Perímetro Total = Perímetro Par + Perímetro Impar *

ou seja, a soma do número de vetores com rótulo par (que estão na horizontal ou vertical e

por isso tem tamanho unitário) mais a soma do vetores com perímetro ímpar (que estão nas

diagonais) vezes o tamanho destes, que é .O centro da pode ser calculado com o uso de

vetores de contribuição positiva ou negativa em uma somatória que inicia-se dos pontos x, y de

cada pixel pertencente à corrente encontrada. A Figura 29 mostra as contribuições destes vetores

e a Tabela 5 apresenta os valores desta contribuição.

Figura 29 – Contribuição de cada elemento para o cálculo da área

(22)

48

Tabela 5 - Valores da contribuição de área de cada elemento

A Figura 30 apresenta um exemplo do processo de vetorização de imagem descrito acima.

Imagem Capturada Imagem Filtrada Detecção de Borda Vetorização da Região

Figura 30 – Resultados de um processo de vetorização de imagem.

49

5. Materiais e Métodos.

5.1. Técnicas para implementação do software de visão

O futebol de robôs é visto como uma plataforma para elaboração de projetos ligados à

área de pesquisa e desenvolvimentos de técnicas para robótica e automação industrial inteligente.

A proposta do futebol de robôs é inspirada em trabalhos realizados por diversos pesquisadores

como Prof. Dr. Roberto Tavares Filho, Profa. Dra. Anna Helena Reali Costa e Profa. Dra.

Manuela M. Veloso e de universidades como Carnegie Mellon University, Cornell University,

Universidade de São Paulo (USP), Universidade Estadual de Campinas (UNICAMP) e

Universidade Estadual Paulista Julio de Mesquita Filho (UNESP).

De uma forma geral, para este trabalho, desenvolveu-se uma plataforma de software que

permitiu a interação entre as áreas envolvidas no futebol de robôs, visão, estratégia e

mecatrônica. As normas utilizadas para dimensionamento do campo e dos elementos envolvidos

no jogo (robôs e bola) foram baseados na F-180 (normatização para futebol de robôs). Uma visão

geral mais detalhada dos equipamentos utilizados e relacionamentos entre eles no sistema de

futebol de robôs pode ser obtida no Anexo B - Controle e Decisão de Estratégias Aplicáveis a

Agentes Robóticos Jogadores de Futebol em Ambiente Simulado e Real. (SANTOS &

RICHTER, 2005).

Basicamente, o software desenvolvido utiliza os conceitos de digitalização de imagens

descritos anteriormente e filtros de imagens por convolução propostos por Marques Filho e Vieira

Neto (1999) para a aquisição e tratamento das imagens recebidas pelo computador.

Para a calibração de cada um dos elementos envolvidos no jogo, as técnicas de ampliação

de imagens de Marques Filho e Vieira Neto (1999) e de histogramas de Gonzáles e Woods

(1992) permitiram determinar os limites máximos e mínimos do padrão de cor definido em 1931

pela CIE, através das conversões de RGB e HSI descritas anteriormente.

A segmentação por cor para a busca e reconhecimento da posição dos elementos no

campo, teve por base os o conceito de agrupamento homogêneo de pixels segundo Ballard e

Brown (1982) e a descontinuidade de regiões da imagem definida por Bianchi (2001). Para a

busca por vetorização, foi utilizado o método de chain code e as definições de vetores

elementares baseadas no descrito por Rillo(1998 apud Bianchi, 2001).

50

A transmissão dos dados adquiridos pelo software é realizada através da porta serial do

microcomputador em modo RS-232.

5.2. Recursos computacionais para o tratamento gráfico

Biblioteca Gráfica OpenGL: em 1992 a biblioteca de suporte gráfico OpenGL,

introduzida no mercado pela empresa Silicon Graphics, implementou uma API gráfica

independente do dispositivo de exibição. O intuito foi criar uma ligação entre a modelagem

geométrica dos objetos e as rotinas de exibição e criação de imagens.

Para Manssour (2003) o OpenGl é uma biblioteca de rotinas gráficas e de modelagem

bidimensional e tridimensional. O OpenGl não é uma ferramenta de programação, é um conjunto

de API, descrita mais adiante, para criação de animações gráficas. Assim, o OpenGl tem em suas

funções internas os mesmos nomes e parâmetros para todos os sistemas operacionais compatíveis

(WANGENHEIM, 2001). Essas funções são implementadas em baixo nível pelo OpenGL,

proporcionando maior eficiência em desenhos gráficos computacionais (MATTOS NETO, 2004

apud FREIRE, 2004).

Segundo esses autores, a biblioteca OpenGL dispõe os seguintes conjuntos de recursos

gráficos disponíveis:

• modos de desenho de pontos;

• ajustes de largura de linhas;

• aplicação de transparência;

• ativação e desativação de serrilhamento;

• mapeamento de superfície com textura;

• seleção de janela (window) de desenho;

• manipulação de fontes, tipos de iluminação e sombreamento;

• transformações de sistemas de coordenadas;

• transformações em perspectivas;

• combinações de imagens.

A configuração para o uso do OpenGl em um ambiente de programação é específico e

diferente para os mais diversos ambientes, mas basicamente em todos os casos requer-se a

criação de um DC (Device Context – Dispositivo de Contexto). O DC do OpenGL é uma

estrutura utilizada pelo Sistema Operacional Windows como HDC (Handle Device Context

51

Dispositivo de Contexto Manuseável) que representa a saída direta do sistema operacional para

um dispositivo ou uma interface gráfica (window). Após criação do DC, deve-se determinar para

o ambiente de programação que este DC é a saída para o ambiente gráfico utilizado. Além disso,

para o OpenGL deve-se criar um RC (Rendering Context - Contexto de Reenderização) a fim de

guardar as configurações do sistema de cor está sendo utilizado. Assim, após criação e

configuração do DC e RC, a imagem pode ser criada e mostrada no dispositivo gráfico de saída

simplesmente com chamadas diretas feitas às funções da biblioteca gráfica OpenGL.

Plataforma Gráfica OpenCV: o OpenCV (Open Source Computer Vision – Código

Aberto de Visão Computacional) é uma plataforma aberta da Intel que permite a construção de

aplicativos educacionais e comerciais com o uso de pacotes gráficos. Essa biblioteca consiste em

uma caixa de ferramentas com funções de geração e manipulação de imagens, que possibilita

pesquisadores comerciais e industriais o desenvolvimento de aplicações com o que há de mais

moderno em algoritmos para visão computacional de desempenho otimizado (ROLLOF, 2004).

Segundo o manual de referência da Intel, essa biblioteca dispõe das seguintes

funcionalidades:

• operações e estruturas básicas para captura de imagens;

• análise de imagens;

• análises estruturais de imagens Raster;

• reconhecimento de objetos;

• análise de movimento e detecção de objetos móveis;

• reconstrução de ambientes 3D.

O OpenCV foi desenvolvido inicialmente no padrão de programação ANSI C para a

plataforma Windows. Porém, segundo o seu manual, é possível realizar sua aplicação em outros

sistemas operacionais e plataformas com algumas modificações.

APIs do Windows32: uma API do Windows32 (Aplication Program Interface

Interface de Programas Aplicativos) é um conjunto de funções pré-definidas do sistema

operacional Windows para controle do comportamento dos componentes deste, que vai desde a

alteração da aparência das janelas da área de trabalho até a alocação de memória para novos

processos. Observa-se então que, neste sistema, em cada ação do usuário ocorre a execução de

uma ou mais funções de API em resposta à requisição.

52

As funções de API residem em DLLs (como as User32.dll, GDI32.dll, Shell32.dll) do

sistema operacional Windows e podem ser requisitada como qualquer outra função existente em

DLL pelos programas criados em diversos ambientes de programação, como por exemplo no

Visual C, Builder C, Visual Basic ou no Delphi. Destes, o Visual Basic destaca-se devido a

facilidade de uso e implementação das APIs através do editor API Text View deste ambiente para

o Windows 32.

Segundo Oliveira (2000) o uso das APIs do Windows em algumas operações executadas

pelo Visual Basic torna estas mais rápidas do que se as mesmas fossem realizadas por funções

similares à do próprio ambiente de programação. Para esta autora, as funções APIs podem ser

divididas nos seguintes conjuntos:

• funções de execução de aplicações;

• funções de comunicação;

• funções de erro;

• funções de entrada e saída em arquivos;

• funções de informação sobre o sistema;

• funções de manipulação de recursos de memória;

• funções de arquivo de inicialização e registro;

• funções de impressão;

• funções de controle de janelas;

• funções de manipulação de strings;

• funções de controle de imagens como bitmap (mapa de bits).

Outra facilidade implementada pelo ambiente do Visual Basic é a conversão dos tipos

utilizados pelas APIs para os tipos mais comuns do Visual Basic e ainda a criação da nova

sintaxe de comando realizada pelo próprio API Text View, como mostra o exemplo a seguir:

A função API original é:

BOOL GetComputerName( LPSTR lpBuffer, LPDWORD nSize);

onde para o Visual Basic os tipos LPDWORD e BOOL assumem o tipo LONG e o tipo LPSTR

assume o tipo String. Sendo que o API Text View disponibiliza a seguinte sintaxe:

Function GetComputerName Lib "kernel32" Alias "GetComputerNameA" (ByVal

lpBuffer As String, nSize As Long) As Long.

53

Outro tipo comumente utilizado pelas APIs é o HWnd (Handle Window - Janela

Manuseável), que representa o endereçamento do sistema operacional para um formulário ou

janelas. O Windows usa handles (valores inteiros únicos de 32 bits) como indexadores para se

referenciar a objetos que são armazenados em uma tabela de ponteiros. Desta forma uma API do

Windows pode se referir a uma janela ou formulário somente através de seu handle, ou até

mesmo fazer uma referência direta aos componentes internos desta pelo uso do tipo similar ao

HWnd, como o HDC (OLIVEIRA , 2000).

5.3. Um pouco sobre UML

Para Booch e Colaboradores (2000) a UML (Unified Modeling Language - Linguagem

Unificada de Modelagem) é uma linguagem-padrão para elaboração de projetos de software e

pode ser aplicada para visualização, especificação e documentação de sistemas complexos de

software. Como é considerada uma linguagem, ela é apenas parte do método para

desenvolvimento de softwares e pode ser utilizada tanto em processos orientados a casos de uso

como em processos centrados na arquitetura interativa e incremental. Para tanto, a UML

disponibiliza basicamente nove diagramas para visualização de um sistema sob diferentes

perspectivas. Na prática, o uso dos diagramas pode se restringir à apresentação dos que

proporcionam ao sistema uma visão mais ampla e dinâmica do mesmo.

A seguir apresenta-se uma breve descrição para cada um dos nove diagramas divididos

em dois grupos, apresentada por Booch et al. (2000):

• Diagramas Estruturais: são compostos por quatro diagramas (Classe, Objetos,

Componentes e Implantação). Servem para visualizar, especificar, construir e documentar

os aspectos estáticos de um sistema, tais aspectos estáticos representam o esqueleto e as

estruturas estáveis do sistema.

o Diagrama de classes: exibe um conjunto de classes utilizadas, bem como a relação entre elas. São diagramas geralmente utilizados em projetos com modelagem

voltada para a orientação ao objeto a fim de abranger uma visão estática da

estrutura do sistema;

o Digrama de objetos: exibe um conjunto de objetos utilizados e seus relacionamentos, objetivado a mostrar uma visão estática mais próxima dos casos

reais e de seus protótipos;

54

o Diagrama de componentes: exibe a relação e as dependências do sistema ou parte dele a um conjunto de componentes externos mapeados por uma ou mais classes,

interfaces ou colaborações;

o Diagrama de implantação: apresenta a configuração dos nós de um sistema em tempo de execução e os componentes nele existentes.

• Diagramas Comportamentais: são compostos por cinco diagramas (casos de uso,

seqüência, colaboração, gráfico de estados e atividades), que servem para visualizar,

especificar, construir e documentar os aspectos dinâmicos de um sistema, ou seja, as

partes que sofrem alterações.

o Diagrama de casos de uso: exibe um conjunto de caso de uso e atores (um tipo especial de classes) e seus relacionamentos. Utilizados principalmente para

organização do sistema, servem como apoio à visualização da interação entre

atores e seus casos;

o Diagrama de seqüência e diagrama de Colaboração: esses dois diagramas são definidos como diagramas de interação. A diferença entre eles está na ênfase que

cada um aplica à visão dinâmica do sistema a ser implementado. Para o de

seqüência, a ênfase ocorre na ordenação temporal das mensagens enquanto para o

de colaboração, ela ocorre na organização dos objetos e suas mensagens de

comunicação;

o Diagramas de gráfico de estados: apresenta uma máquina de estado, com transições eventos e atividades a fim de abranger uma visão dinâmica do sistema

com ênfase a projetos orientados a eventos;

o Diagrama de atividades: um tipo especial de gráfico de estados que exibe o fluxo de uma atividade para a outra, com ênfase ao fluxo de controle entre objetos de

um sistema.

Segundo Booch e Colaboradores (2000) “as regras de UML incentivam - mas não

obrigam - o usuário a considerar as questões mais importantes de análise, projeto e

implementação que levam esses modelos a se tornarem bem-formados ao longo do tempo”.

Assim, também é comum que uma equipe de desenvolvimento de software utilize muitas vezes

modelos parciais e até mesmo incompletos, a fim de simplificar a visão e omitir elementos não

relevantes.

55

5.4. O Visual Basic e a Orientação a Objeto

Assim como outras ferramentas, o Microsoft Visual Basic® é um ambiente de

programação e desenvolvimento de aplicações gráficas para o ambiente do Microsoft Windows®

que possui vantagens adicionais que facilitam a produção de aplicações corporativas de forma

simples e rápida (NUNES, 1995 apud SATO, 2002).

Inicialmente, o Microsoft Visual Basic® era considerado como um brinquedo pelos

profissionais de programação. Dizia-se constantemente, “Faça um protótipo em VB; faça a

versão de produção em C”. Porém, atualmente não é bem assim. Desde que foi lançado em

outubro 1998, o uso do Visual Basic 6.0® chegou a alcançar um número não oficial de 3 milhões

de licenças já no início de 1999, e estimou-se um número de 6,8 milhões para 2003. Por esse

motivo a Microsoft implementou nesta plataforma alterações como o uso de recursos orientados a

objeto, compilação de código nativo e um suporte razoável para a lógica comercial (REED JR,

2000).

Para este autor o Visual Basic 6.0® é uma plataforma de programação que reúne várias

características orientadas a objeto, mesmo que para muitos da indústria ele seja considerado

como baseado em objeto e não orientado a objeto. Existe também quem diga que as únicas

linguagens verdadeiramente orientadas a objeto são a SmallTalk e o Eiffel e que todas as outras se

“autodenominam” orientadas a objeto. Porém, não cabe a este trabalho a discussão sobre a

comparação entre linguagens e sim, a viabilização prática de um software de visão

computacional.

Segundo Reed Jr (2000) não existe uma definição globalmente aceita sobre o que faz com

que uma linguagem seja orientada a objeto. Assim, praticamente utiliza-se um conjunto de

critérios para avaliar se uma linguagem é ou não orientada a objeto. Especificamente, uma

linguagem orientada a objeto deve conter:

• classes de Objetos;

• criação de Tipos Complexos baseados em classes;

• encapsulamento;

• herança;

• passagem de mensagem entre objetos e classes;

• polimorfismo.

56

De forma simples, ou por similaridade, o Microsoft Visual Basic 6.0® possibilita

implementar as técnicas de UML acima citadas desde sua versão 5.0, com o uso de componentes

ActiveX (uma aplicação que expõe objetos e seus componentes para outras aplicações

compatíveis com um servidor OLE Automation) (SWARTZFAGER, 1997).

De acordo com Reed Jr (2000) “a UML e o VB se encaixam muito bem” e o valor que a

UML acrescenta é realçado pelo uso de uma ferramenta de modelagem visual que suporta tanto a

engenharia direta quanto a reversa, como é o caso do VB.

Para o mesmo autor o VB tem mais do que o necessário em “exame de objetos” para se

beneficiar das técnicas da linguagem UML aumentando dramaticamente a qualidade e as chances

de sucesso de um projeto implementado nesta linguagem. Jim Rumbaugh disse certa vez, “Você

não pode esperar que um método lhe diga tudo o que tem de fazer. Escrever um software é um

processo criativo, como pintar, escrever, ou fazer um projeto arquitetônico. Há princípios de

pintura, por exemplo, que fornecem as diretrizes para composição, seleção de cores e

perspectivas, mas eles não o transformam em um Picasso.” Portanto, escolha uma ferramenta e

torne-a parte de seu processo.

57

6. Desenvolvimento do software de visão computacional

6.1. Problemas de estrutura mínima de software e hardware

A elaboração de um software relativamente rápido e confiável tanto para o uso da visão

relativa ao futebol de robôs como para o uso de sistemas de visão comerciais está diretamente

ligada à base de hardwares com que este irá interagir. Existem atualmente no mercado

equipamentos com qualidade relativamente baixa comparada ao custo de aquisição e

implementação deste. Este trabalho, no entanto, buscou equilibrar custo e qualidade.

6.1.1. Solução adotada para hardware e software

O hardware envolvido no sistema de visão artificial a que se destinou este trabalho consta

de uma câmera de VHS comum, compacta da JVC tipo GR-AX827 que disponibiliza uma

imagem colorida analógica de vídeo no formato do padrão 3 x 4 NTSC na ordem de trinta

quadros por segundo. Esta está conectada ao computador por um cabo coaxial e uma placa de

captura de vídeo modelo TView CPH057 PCI, baseada no conversor BT878 da Philips que

permite a captura de forma analógica da imagem do campo de futebol e dos elementos (robôs e

bola) envolvidos e realiza a conversão para o sistema digital em um quadro de 240 x 320 pixels.

Para que a captura seja realizada o campo de ação dos elementos e cada identificador deles deve

estar devidamente iluminado permitindo um IRC (índice de reprodução de cores) de

aproximadamente 90%. A Figura-31 apresenta uma idéia do campo utilizado.

58

Figura 31 – Visão geral do hardware do sistema de futebol de robôs.

Os quadros de imagem do vídeo capturados pela placa são convertidos pelo software de

visão desenvolvido para um padrão conhecido de imagem e cor do sistema operacional utilizado,

a fim de permitir o tratamento desta pela aplicação de alguns dos filtros descritos anteriormente

neste trabalho. O padrão que o software utiliza para armazenamento de imagens em movimento é

o conhecido formato AVI da Microsoft (Áudio Vídeo Interleave - Licenciamento de Vídeo e

Áudio) e para imagens estáticas e análise destas o BMP (Bitmap - Mapa de bits).

Como dito anteriormente, o software permite a captura de imagens reais advindas

diretamente da câmera para análise bem como o armazenamento para posterior análise destas,

tanto em vídeo digital (capture.avi) como em imagem estática (nome.bmp). Para o processamento

das imagens utilizou-se um microcomputador do tipo AMD XP com 2.7 GHz de processamento,

1.0 GB de memória RAM e placa aceleradora de vídeo AGP de 256 MB.

Tendo-se as imagens digitalizadas o software permite a calibração através do

reconhecimento, armazenamento e segmentação dos dados de cor (RGBI) de cada elemento

envolvido no jogo.

Basicamente, a identificação do robô é feita por meio de adesivos de diferentes cores e de

forma circular com diâmetro de 65 mm. São adotados dois pontos na parte superior do mesmo,

sendo que um identifica o centro do robô e outro a parte dianteira dele. A finalidade dos dois

pontos de identificação em cada robô é de possibilitar a criação de um vetor de posição pelo

59

software de estratégia. A cor da bola seguiu o padrão para o futebol de robôs (normas da F-180),

e é laranja, sendo esta basicamente a sua única identificação para o software de visão.

A implementação do software de visão artificial para este trabalho foi realizada no

Microsoft Visual Basic 6.0®, e contem as seguintes partes:

• Captura: parte responsável pela captura, digitalização e armazenamento da imagem

de vídeo fornecida pela câmera acima descrita;

• Filtros: responsável pelo ajustes de cromaticidade da imagem colorida digitalizada e

aplicação de filtros e efeitos na mesma de forma contínua (on-line);

• Calibração: responsável pela captura das configurações de cor dos elementos

utilizados no jogo e de posições estratégicas do campo (marcas de gol, centro, limites

de cantos);

• Busca e Localização: responsável pela segmentação de cor e a localização do centro

(x, y) dos elementos calibrados acima, de forma mais rápida possível, seguindo pelo

menos duas técnicas já descritas, a segmentação por cor e a vetorização;

• Comunicação: responsável pela transmissão dos dados aquisitados pelo software de

visão computacional ao software de estratégia desenvolvido por Santos e Richter

(2005).

Para cada uma das partes descritas acima, criou-se classes de objetos no Visual Basic®

baseando-se nos diagramas da UML, a fim de facilitar a troca de mensagens entre as classes deste

software. O uso de diversas funções de APIs do Windows® 32 fez-se necessário para possibilitar

que as imagens capturadas e o tratamento das mesmas fosse feito diretamente em memória, com

o intuito de agilizar a execução dos procedimentos aplicados a estas pelo Visual Basic®. O item

seguinte descreve algumas classes implementadas e as APIs utilizadas para elaboração deste

software de visão para o uso no futebol de robôs.

6.1.2. As classes e as APIs para o software.

Para facilitar a compreensão deste código nomeou-se cada classe com a letra inicial “c”

seguida de um nome de identificação específico para o serviço a que esta se destina. (Exemplo:

cVideoCapture). A seguir são mencionadas as classes criadas e a descrição da tarefa que estas

realizam:

60

• cVideoCapture: inicializa as configurações de Captura de imagem entre a câmera e a placa de

vídeo utilizada;

• cElementClass: possibilita a identificação, armazenamento e calibração dos valores dos

elementos coloridos escolhidos para o jogo;

• cFieldClass: permite a identificação, armazenamento e configuração dos pontos elementares

(centro, posição do gol) do campo de futebol em uso;

• cColorClass: possibilita a conversão entre os sistemas de cores utilizados, RGB e HSI;

• cPalette: possibilita o reconhecimento do padrão de imagem Bitmap do Windows;

• cPictureEx: cria, destrói e altera os valores de memória correspondente à imagem capturada e

já convertida para os padrões utilizados;

• cFilter: permite a aplicação de filtros especiais na imagem;

• cImageProcess: realiza o tratamento dos valores de memória da imagem para alterações como

brilho, contraste, intensidade e tons de cinza;

• cFindClass: realiza a busca contínua dos valores de centro (x,y) dos elementos escolhidos e

calibrados pela cElementClass;

• cComunication: auxilia as configurações de comunicação entre o sistema de visão e o de

estratégia pela porta serial.

Para o tratamento das imagens adquiridas pelo software de visão em questão as seguintes

APIs do Windows já reescritas para o Visual Basic foram utilizadas:

• Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (lpvDest As Any,

lpvSource As Any, ByVal cbCopy As Long)

• Public Declare Function GetTickCount Lib "kernel32" () As Long

• Public Declare Function GetPixel Lib "gdi32" (ByVal hDC As Long, ByVal X As Long,

ByVal Y As Long) As Long

• Public Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Long, ByVal X As Long,

ByVal Y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As

Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long

61

• Public Declare Function SetPixelV Lib "gdi32" (ByVal hDC As Long, ByVal X As Long,

ByVal Y As Long, ByVal crColor As Long) As Long

• Public Declare Function StretchBlt Lib "gdi32" (ByVal hDestDC As Long, ByVal xD As

Long, ByVal yD As Long, ByVal nWidthD As Long, ByVal nHeightD As Long, ByVal

hSrcDC As Long, ByVal xS As Long, ByVal yS As Long, ByVal nWidthS As Long, ByVal

nHeightS As Long, ByVal dwRop As Long) As Long

• Public Declare Function Polyline Lib "gdi32" (ByVal hDC As Long, lpPoint As POINTAPI,

ByVal nCount As Long) As Long

Baseado nas especificações de Oliveira (2000) as variáveis das APIs acima discriminadas

assumem:

• hDC: identifica o dispositivo de contexto da janela ativa;

• hDestDC: identifica o dispositivo de contexto do destino;

• hSrcDC: identifica o dispositivo de contexto da origem;

• X: especifica a coordenada lógica x do canto superior esquerdo do retângulo de destino;

• Y: especifica a coordenada lógica y do canto superior esquerdo do retângulo de destino;

• XSrc: especifica a coordenada lógica x do canto superior esquerdo do retângulo de origem;

• YSrc: especifica a coordenada lógica y do canto superior esquerdo do retângulo de origem;

• nWhidth: especifica a largura lógica dos dispositivos e do retângulo de destino;

• nHeigth: especifica a altura lógica dos dispositivos e do retângulo de destino;

• dwRop: especifica um código de ação para a função, como mostra a Tabela 6 abaixo:

Tabela 6 - Descrição dos valores de ação para funções API

Código e Valor Descrição SRCAND = &H8800C6 Efetua um operador lógico “E” com os dois

parâmetros de cor (destino e origem). SRCOPY = &HC0020

Copia uma imagem exatamente como ela é.

SRCERASE = &H440328 Faz a inversão entre duas imagens (destino e origem). SRCINVERT =&H660046 Faz um operador lógico “XOR” entre os dois

parâmetros de cor (destino e origem). SRCPAINT=&HEE0086 Faz um operador lógico “OR” entre os dois

parâmetros de cor (destino e origem).

62

• crColor: especifica a cor a ser utilizada;

• lpvDest: especifica o valor de posição de memória do destino;

• lpvSource: especifica o valor de posição de memória da origem.

6.1.3. Planejamento e engenharia do software

As classes e diagramas das páginas seguintes estão baseados na linguagem UML e

apresentam os principais diagramas utilizados na implementação do software de visão no

contexto deste trabalho.

Figura 32 – Diagrama de Atividades, Captura de Imagem

63

Figura 33 – Diagrama de Atividades, Limites de Campo

64

Figura 34 – Diagrama de Atividades, Calibrar Elementos

65

Figura 35 – Diagrama de Atividades, Processamento de Imagens

66

Figura 36 – Diagrama de Atividades, Enviar Dados

Figura 37 – Diagrama de Seqüência, Ativar Captura

67

Figura 38 – Diagrama de Seqüência, Limites de Campo

Figura 39 – Diagrama de Seqüência, Cores dos Elementos

68

Figura 40 – Diagrama de Seqüência, Enviar Dados

Figura 41 – Diagrama de Classe, Ativar Captura

69

Figura 42 – Diagrama de Classe, Limites de Campo

70

Figura 43 – Diagrama de Classe, Cores dos Elementos

71

Figura 44 – Diagrama de Classe, Enviar Dados

72

6.1.4. Resultados obtidos na implementação do hardware e software

A definição das classes e o uso de APIs proporcionou uma implementação prática do

código do software de maneira mais rápida e fácil. Pelos trechos dos códigos abaixo é possível

verificar que o envio de mensagens à uma classe para a execução de determinada tarefa facilita o

entendimento do código e que também o uso das APIs resolve questões de implementações

relativamente demoradas.

6.2. Problemas relativos à captura, digitalização e filtros por software

A transferência das imagens seqüenciais reais advindas da câmera para digitalização em

um padrão conhecido pelo sistema operacional utilizado deve ser feita de maneira mais rápida

possível para viabilizar seu uso no jogo de futebol de robôs. Além disso, o uso de filtros torna-se

imprescindível para melhoria da imagem real capturada.

Além da velocidade de transferência e filtragem das imagens reais para o software outro

problema relativo ao uso de imagens reais capturadas é a variação da luminosidade em diferentes

pontos de ação dos agentes robóticos no campo. A Tabela 7 apresenta os valores de intensidade

luminosa (LUX) relativos aos pontos da Figura 45.

A Figura 46 apresenta de forma visivelmente clara a variação dos pontos de máxima e

mínima luminosidade incidentes sobre o campo no ambiente utilizado.

‘// API que copia toda imagem de PicEx diretamente para PicImage

BitBlt PicImage.hdc, 0, 0, 320, 240, PicEx.m_BoundedPB.hdc, 0, 0, vbSrcCopy

‘// Classe FindEL de busca de elementos já calibrados da posição X,Y do inicio ao X,Y do fim da imagem

Public Sub ContinuosF( )

FindEl.BrazilianFind myXini, myYini, myXend, myYend

End Sub

73

Tabela 7 - Resultado das medições da variação luminosa do campo .

Pontos de intensidade luminosa, medidos em lux. Ponto 1 210 Ponto 6 230 Ponto 11 250

Ponto 2 222 Ponto 7 220 Ponto 12 240

Ponto 3 200 Ponto 8 230 Ponto 13 240

Ponto 4 225 Ponto 9 250 Ponto 14 235

Ponto 5 220 Ponto 10 250 Ponto 15 232

Figura 45 – Pontos de máxima e mínima luminosidade incidentes sobre o campo.

74

Figura 46 – Binarização da imagem para demonstração dos pontos de luminosidade.

Na Figura 47 a tela superior apresenta a imagem original capturada e a inferior o seu

tratamento pelos filtros de brilho, contraste e gama realizados pelo software. É possível perceber

que dependendo do tipo de filtro aplicado para correção da variação luminosa (dos pontos de

maior intensidade para os pontos de menor intensidade) o reconhecimento de certas cores pode

ficar prejudicado, como no caso do amarelo. Devido a isto, tornou-se necessária a execução de

testes práticos, tanto do tipo de filtro a ser aplicado como da intensidade deste em relação as

cores utilizadas para identificação dos elementos no campo. Em um próximo item será detalhado

o procedimento de escolha das cores dos elementos.

75

Figura 47 – Apresentação da imagem original capturada X tratamento com filtro.

6.2.1. Solução para captura de imagens reais seqüenciais

Para a transferência da imagem real obtida pela placa de captura ao software desenvolvido

utilizou-se um componente que possibilitou o armazenamento e recuperação das posições de

memória específica utilizada pelo Windows em um lwndc (endereço único de 4 bytes para a

janela do dispositivo de contexto). Esse endereço corresponde à localização dos dados que

compõem a formação da imagem no dispositivo de visualização (Display LDC ou Monitor).

Uma vez conhecida tal posição de memória tornou-se possível adequar a imagem a um

padrão conhecido (como, por exemplo, um Bitmap de 24 bits True-Color). Isto possibilitou

realizar interações com os valores do mapa de bits implementando diversos filtros por software

na imagem real e apresentá-los novamente no monitor com os novos valores.

Imagem apresentada após a captura e aplicação dos filtros de brilho, contraste e gama.

Imagem original antes da aplicação dos filtros de brilho, contraste e gama.

Seleção do tipo de filtro e nível de aplicação.

76

As partes do código a seguir demonstram respectivamente o reconhecimento da área de

memória utilizado bem como a conversão para o padrão de imagem conhecido e alteração dos

valores dos RGB desta por um filtro de ajuste de contraste.

Procedimento de carregamento da imagem real de vídeo pelo componente auxiliar EZVideo_Cap:

Private Sub EZVideo_Capture() Dim lpszName As String Dim lpszVer As String Dim Caps As CAPDriverCAPS 'Cria constante de Captura pelo Windows capGetDriverDescriptionA 0, lpszName, 100, lpszVer, 100 ' Coleta as informações dos drivers lwndC = capCreateCaptureWindowA (lpszName, WS_CAPTION Or WS_THICKFRAME _ Or WS_VISIBLE Or WS_CHILD, 80, 70, 320, 240, Me.hWnd, 0) ‘//lwndc - Endereço correspondente da janela de exibição do video pelo Windows, posição e ‘//tamanho da imagem apresentada. SetWindowText lwndC, "Sistema de visão 1G1" ‘//Determinda um nome para a Janela capSetCallbackOnError lwndC, AddressOf MyErrorCallback ‘//Verifica erros no carregamento If capDriverConnect(lwndC, 0) Then ‘//Tratamento de erros capDriverGetCaps lwndC, VarPtr(Caps), Len(Caps) capPreviewRate lwndC, 30 ‘//Seleciona a taxa de refresh ( milisec) capPreview lwndC, True ‘//Inicia a visualização da imagem ResizeCaptureWindow lwndC ‘//Corrige dimensões de amostragem End If End Sub

77

Função de conversão para padrão conhecido: Retorna Matriz Imagem abPicture():

6.2.2. Solução para escolha de filtros para o ambiente

A aplicação dos filtros corretivos possibilitou ajustes de brilho, contraste e intensidade,

conversão de imagens para tons de cinza, negativação, colorização e ativação de efeitos, (filtros

especiais) como passa alta e passa baixa, de forma contínua sem oscilação da imagem entre um

filtro e outro.

Para contornar as diferenças de luminosidade procurou-se utilizar o mínimo de filtros

possíveis, uma vez que cada filtro aplicado demanda um uso de tempo considerável de

processamento que pode variar de décimos de segundos até alguns segundos, prejudicando a

velocidade de resposta do software de visão em relação à movimentação real no campo.

O código a seguir apresenta um procedimento de transformação nos valores relativos ao

contraste da matriz imagem contida em abPicture( ). É interessante ressaltar a necessidade de um

controle de posições dos valores originais de R, G e B, uma vez que estes foram armazenados em

colunas separadas e de forma seqüencial, exemplo: abPicture(1,1)→R, abPicture(2,1)→ G,

abPicture(3,1)→B para cada ponto da imagem de 320x240 pixels.

Assim, se utilizarmos todos os pontos, ou seja, de 0-320 e de 0-240, teremos cerca de

((321 * 3) * 241) = 232083 valores a serem “manipulados” pelo software de variáveis em Byte

para aplicação de um único filtro.

Public Function Get_TrueBits(pb As PictureBox, abPicture() As Byte, BI As BITMAPINFO) As Boolean Dim bmp As BITMAP Call Get_ObjectAPI(pb.Picture, Len(bmp), bmp) ReDim BI.bmiColors(0) With BI.bmiHeader ‘// Determina um padrão conhecido para a imagem a ser filtrada .biSize = Len(BI.bmiHeader) .biWidth = bmp.bmWidth .biHeight = bmp.bmHeight .biPlanes = 1 .biBitCount = 24 .biCompression = BI_RGB ReDim abPicture(BytesPerScanLine(.biWidth) - 1, .biHeight - 1) End With Get_TrueBits = Get_DIBits(pb.hDC, pb.Picture, 0, BI.bmiHeader.biHeight, abPicture(0, 0), BI, DIB_RGB_COLORS) ‘// Função para montagem da Matriz Imagem abPicture( ) End Function

78

Procedimento para Ajuste de Contraste:

As Figuras 48 e 49 apresentam respectivamente a imagem real e o resultado da aplicação

dos filtros corretivos realmente utilizados para a localização dos agentes robóticos e bola no

campo de ação.

Figura 48 – Imagem real capturada.

Public Sub Change_Contrast(abPicture() As Byte, ByVal lAmount As Long, Optional clrIdx As Integer) Dim X As Long, Y As Long Dim xMax As Long, yMax As Long Dim iStep As Integer xMax = UBound(abPicture, 1) ‘//Valores RGB da Imagem alinhados ( 3 * nX ) por colunas (R,G,B) yMax = UBound(abPicture, 2) ‘//Valores RGB normais para as linhas da imagem If clrIdx Then iStep = 3 xStart = 3 - clrIdx Else iStep = 1 End If For X = xStart To xMax Step iStep If (X Mod 3 = 0) Then X = (X + (3 * FJumper)) ‘//Posiciona Coluna Correta de R,G ou B For Y = 0 To yMax abPicture(X, Y) = cTable(lAmount, abPicture(X, Y)) ‘//Incremento de Valor para R,G,B Y = Y + FJumper ‘//da Matriz Imagem abPicture( ) Next Y Next X End Sub

79

Figura 49 – Imagem adquirida após a aplicação de filtros corretivos.

6.2.3. Resultados obtidos com a captura, digitalização e aplicação de filtros.

Para a parte da captura utilizou-se um componente auxiliar EZVideo_Cap, o qual

configurou automaticamente as interrupções necessárias para acesso ao vídeo da placa de captura

facilitando o reconhecimento da região de memória correspondente à imagem real capturada.

Como dito anteriormente, a aplicação dos filtros possibilitou ajustes de brilho, contraste e

intensidade, conversão de imagens para tons de cinza, negativação, colorização e ativação de efeitos,

(filtros especiais) como passa alta e passa baixa, de forma contínua sem oscilação da imagem entre a

aplicação dos diferentes filtros.

Nos testes realizados com aplicação de filtros corretivos por software, averiguou-se que o uso

destes diminuiu consideravelmente o rendimento do processamento de captura e localização como um

todo, visto o grande número de variáveis a serem “manipuladas”. Sendo assim, decidiu-se utilizar os

recursos que a placa de captura fornece para a aplicação de filtros por hardware, mantendo as

mesmas características dos resultados obtidos dos testes feitos com filtros por software. Os

tempos de captura e análise das imagens com processamento de filtros por hardware ou por

software podem ser vistos nas Tabelas 8a e 8b.

Desenvolveu-se também um procedimento de “saltos” dos pontos da imagem real a serem

processados, tanto para a parte de aplicação dos filtros quanto para a parte de busca e localização

dos elementos coloridos dos robôs e da bola, diminuindo consideravelmente o tempo gasto com o

processamento sem interferir na qualidade e robustez dos resultados.

80

Tabela 8a - Resultados de tempo obtidos das etapas de processamento e filtros por hardware.

Salto

Criar Matriz Imagem &

Localização ( s )

Filtro por Hardware (FPS)

Round(FPS) Tempo/Frame( s ) Captura & Dig. em ( s )

0 1,468 1 1,000 0,468 1 0,400 3 0,333 0,067 2 0,188 4 0,250 0,062 3 0,125 5 0,200 0,075 4 0,094 6 0,167 0,073 5 0,078 7 0,143 0,065 10 0,040 8 0,125 0,085

Tabela 8b - Resultados de tempo obtidos das etapas de processamento e filtros por software.

Salto

Criar Matriz Imagem &

Localização ( s )

Filtro por Software (FPS)

Round(FPS) Tempo/Frame ( s ) Captura & Dig. em ( s )

0 1,468 1 1,000 0,468 1 0,400 2 0,500 0,100 2 0,188 3 0,333 0,145 3 0,125 4 0,250 0,125 4 0,094 5 0,200 0,106 5 0,078 5 0,200 0,122 10 0,040 6 0,167 0,127

6.3. Problemas relativos à calibração dos elementos

Como já discutido nos itens anteriores referentes aos problemas decorrentes da má

iluminação homogênea presente no campo, a coloração das identificações dos agentes robóticos -

bem como da bolinha -sofrem alterações naturais de cor devido a incidência da luz no objeto,

muitas vezes imperceptíveis ao olho nu, mas perfeitamente decifrável quando a cor é decomposta

na formação RGBI. A Figura 50 ampliada 1600 vezes representa a bolinha do jogo na cor laranja.

Nela observou-se a existência de diferentes tons, como por exemplo, o preto, a rosa e o vermelho,

o que prejudica o reconhecimento da similaridade dos pixels, já discutida.

81

Figura 50 – Imagem ampliada 1600 vezes e os tons de cores encontrados na imagem.

O código a seguir representa o procedimento de extração da cor RGB no formato Long (4

bytes, entre -2,147,483,648 e 2,147,483,647) decompondo-os em R,G,B e I do tipo byte (1 byte,

entre 0 e 255).

Procedimento para extração do RGBI da cor RGB.

A tabela 9 representa a extração das cores amarelo e ouro (robô 1), azul e verde (robô 2) e

laranja (bolinha).

Public Function SetColorComponent(Color As Long) bytRed = Color And 255 '// Retorna o Red da cor RGB do tipo long bytBlue = Color \ 256 \ 256 '// Retorna o Blue da cor RGB do tipo long bytGreen = (Color - bytBlue * 65536) \ 256 '// Retorna o Green da cor RGB do tipo long intSum = CInt(bytBlue) + CInt(bytGreen) + CInt(bytRed) 'Soma RGB intIntensity = CInt(intSum / 3) '// Calcula a média das cores - intensidade End Function

82

Tabela 9 - Extração da cor RGB em R,G,B e I

Cor Representação

Long

R

(Byte)

G

(Byte)

B

(Byte)

I

(Byte)

Amarelo 5283730 148 153 91 128

Ouro 7575198 154 145 112 141

Azul 13275529 128 145 169 255

Verde 9607809 125 154 142 133

Laranja 9141438 190 124 138 191

6.3.1. Solução para os problemas de calibração

A extração das cores R,G,B e da intensidade a partir da cor RGB no formato long,

possibilitou a captura dos mínimos e máximos de R, de G, de B e de I da cor referente a

iluminação presente naquele ponto de calibração. Como o jogo de futebol de robôs exige a

movimentação dos agentes robóticos para a obtenção do objetivo, os mesmos atingirão áreas com

iluminação depreciada. Conseqüentemente, a comparação da extração R, G, B, I desses pontos

com a extração R, G, B, I realizada no ponto calibrado será diferente, tornando impossível a

localização do elemento em pontos com iluminação diferentes do ponto de calibração.

Para resolver esse problema é efetuada a calibração de máximos e mínimos das cores R,

G, B, I de todos os elementos do jogo em três diferentes pontos de iluminação do campo. Optou-

se por utilizar a calibração através dos mínimos e máximos da cor para se criar uma faixa

aceitável de identificação da cor, evitando assim o reconhecimento de uma cor ao invés de outra

com a qual possuem proximidades. Os pontos de calibração dos elementos podem ser analisados

na Figura 51, após a obtenção dos máximos e mínimos de cada um dos três pontos de calibração.

O software realiza a comparação do mínimo e máximo dos três pontos, utilizando somente a

faixa estipulada pelo menor dos três mínimos calibrados e o maior dos três máximos calibrados

para realizar a busca dos elementos dentro da área de atuação do campo.

83

Figura 51 - Pontos de calibração dos elementos.

A seguir podemos analisar o procedimento que compara se uma determinada cor

transformada em R, G, B, I pertence a algum elemento previamente calibrado.

6.3.2. Resultados obtidos na calibração

Dentre o processo de escolha da cor que melhor suprisse as necessidades aqui discutidas,

foram analisadas as colorações e brilhos de diferentes materiais, como por exemplo, papel

cartolina, papel cartão, papel color set, papel laminado, papel lustroso, tinta para tecidos e

finalmente tinta plásticas de alto relevo. Observou-se que cores foscas ou com pouco brilho,

Private Function Exist_Color(ByRef IDxObj As Byte, ByVal intXimg As Integer, ByVal intYimg As Integer) As Boolean Exist_Color = False If ElementoID(IDxObj).ActEl Then '// Comparação dos mínimos e máximos. If (MatImg(intXimg, intYimg).PiCor.Intens <= ElementoID(IDxObj).MaxIntens _ And MatImg(intXimg, intYimg).PiCor.Intens >= ElementoID(IDxObj).MinIntens) _ And (MatImg(intXimg, intYimg).PiCor.Red < ElementoID(IDxObj).MaxRed _ And MatImg(intXimg, intYimg).PiCor.Red >= ElementoID(IDxObj).MinRed) _ And (MatImg(intXimg, intYimg).PiCor.Green <= ElementoID(IDxObj).MaxGreen _ And MatImg(intXimg, intYimg).PiCor.Green >= ElementoID(IDxObj).MinGreen) _ And (MatImg(intXimg, intYimg).PiCor.Blue <= ElementoID(IDxObj).MaxBlue _ And MatImg(intXimg, intYimg).PiCor.Blue >= ElementoID(IDxObj).MinBlue) Then Exist_Color = True End If End If End Function

84

independentes do tipo de material, apresentaram resultados indesejados aos objetivos do projeto,

tais como reconhecimentos de sombra como pseudo-cores para o sistema, e que a tinta plástica de

alto relevo, com propriedades de fluorescência e metálica apresentaram melhor desempenho no

processo de calibração do software.

As cores escolhidas nos testes realizados bem como os mínimos e máximos das mesmas

podem ser analisadas na Tabela 10, e a Figura 52 apresenta a tela de calibração dos elementos.

Tabela 10 - Extração da cor RGB em R, G, B e I

R G B I Elemento Cor Mín Máx Mín Máx Mín Máx Mín Máx Azul (Centro) 123 140 148 156 189 239 4 36 Robô 1 Verde (Direção) 108 132 155 170 136 162 0 4 Ouro (Centro) 158 177 143 149 96 124 0 4 Robô 2 Amarelo (Direção) 140 151 155 166 63 108 0 100

Bolinha Laranja 172 212 122 139 102 134 0 4

Figura 52 – Tela de calibração dos elementos

85

6.4. Problemas de limites do campo, busca e processamento de imagens

O tamanho do campo é compreendido por 2430 mm por 1600 mm, sendo a área de

atuação compreendida por 2230 mm x 1600 mm devido à marcação das saídas do campo, como

mostra a Figura 53.

Figura 53 – Limites do campo.

6.4.1. Solução adotada para determinação de limites, busca e processamento

Tendo em vista a otimização do sistema para busca e processamento dos elementos

atuantes no jogo, optou-se por delimitar a área de varredura da imagem conforme mostrada na

Figura 54a. A Figura 54b representa a varredura da imagem com filtros de correção e o campo

delimitado. É importante ressaltar que após a modificação dos pontos limites de varredura da

imagem, o ponto de origem (0,0) não é transladado e continua sendo no canto Noroeste.

86

Figura 54a – Pontos de delimitação do campo.

Figura 54b - Varredura da imagem com filtros de correção e campo delimitado.

87

Os dez pontos elementares definidos na calibração dos limites do campo foram

estipulados pelo sistema de controle de estratégia e controle. Esses pontos são enviados via serial

RS232 durante o processo de calibração e configuração do sistema, conforme mostra a Figura 55.

Figura 55 – Tela de configuração dos pontos limites do campo.

6.4.2. Resultados obtidos com limites, busca e processamento de imagens

Além da fácil configuração dos limites do campo, o software possibilita salvar as

configurações definidas do campo para uma posterior carga dessas configurações, agilizando

assim o processo como um todo.

A busca e processamento das imagens tanto pela segmentação de cor como pela

vetorização ocupa um notável tempo de processamento do computador devido à quantidade de

ações tomadas para a realização da busca dos elementos, e também devido aos processos normais

88

decorrentes do Sistema Operacional, como por exemplo o antivírus, o gerenciador de serviços,

gerenciador de logon, entre outros. A Figura 56a apresenta o uso normal do processador pelo

Sistema Operacional e a Figura 56b, mostra o gráfico de utilização do processador durante a

busca e localização dos agentes, utilizando o processo de segmentação por cor e um salto de 1

pixel na imagem.

Figura 56a – Uso normal do processador.

Figura 56b – Uso do processador durante a busca e o processamento de imagem.

O código a seguir é responsável pelas estatísticas apresentadas acima e tem como funcionalidade

a busca e processamento de imagens dos elementos utilizando a técnica de segmentação por cor.

89

Public Sub BrazilianFind(ByVal xIni As Integer, ByVal yIni As Integer, ByVal xEnd As Integer, ByVal yEnd As Integer)

Dim iD, pass As Byte Dim crono As Long Dim intYimg, intXimg, intYBimg, intXBimg As Integer crono = GetTickCount CaptureMatriz_Cmode xIni, yIni, xEnd, yEnd 'Determina limites do campo para varredura intXimg = 0 intYimg = 0 intXBimg = MaxI For intXimg = 0 To (MaxI \ 2) ' captura valores da matriz image intXBimg = MaxI - intXimg intYBimg = MaxJ For intYimg = 0 To MaxJ intYBimg = MaxJ - intYimg SetPixelV FrmImageCap.PicImage.hDC, MatImg(intXimg, intYimg).PiX, MatImg(intXimg,

intYimg).PiY, rgb(0, 255, 0) For IDxObj = 0 To 5 If Exist_Color(IDxObj, intXimg, intYimg) Then 'IFÃO ElementoID(IDxObj).control = ElementoID(IDxObj).control + 1 ElementoID(IDxObj).Xcenter = MatImg(intXimg, intYimg).PiX ElementoID(IDxObj).Ycenter = MatImg(intXimg, intYimg).PiY If ElementoID(IDxObj).control <= CInt(FrmFind.Ccalc.Text) Then LastXY(IDxObj).LastX = LastXY(IDxObj).LastX + (ElementoID(IDxObj).Xcenter) LastXY(IDxObj).LastY = LastXY(IDxObj).LastY + (ElementoID(IDxObj).Ycenter) End If GoTo nextOBJ End If

90

If Exist_Color(IDxObj, intXBimg, intYBimg) Then ElementoID(IDxObj).control = ElementoID(IDxObj).control + 1 ElementoID(IDxObj).Xcenter = MatImg(intXBimg, intYBimg).PiX ElementoID(IDxObj).Ycenter = MatImg(intXBimg, intYBimg).PiY If ElementoID(IDxObj).control <= CInt(FrmFind.Ccalc.Text) Then LastXY(IDxObj).LastX = LastXY(IDxObj).LastX + (ElementoID(IDxObj).Xcenter) LastXY(IDxObj).LastY = LastXY(IDxObj).LastY + (ElementoID(IDxObj).Ycenter) End If End If nextOBJ: Next IDxObj SetPixelV FrmImageCap.PicImage.hDC, MatImg(intXBimg, intYBimg).PiX, MatImg(intXBimg,

intYBimg).PiY, rgb(255, 255, 0) Next intYimg Next intXimg For IDxObj = 0 To 5 '// Seleciona elementos de cor de 0 a 5 With ElementoID(IDxObj) If .control >= CInt(FrmFind.Ccalc.Text) Then .Xcenter = LastXY(IDxObj).LastX \ CInt(FrmFind.Ccalc.Text) '// Calcula a média dos n últimos

pontos selecionados no combobox .Ycenter = LastXY(IDxObj).LastY \ CInt(FrmFind.Ccalc.Text) '// Calcula a média dos n últimos

pontos selecionados no combobox FrmFind.LblX(IDxObj).Caption = Str$(.Xcenter) '// Valor a ser enviado. FrmFind.lblY(IDxObj).Caption = Str$(.Ycenter) '// Valor a ser enviado. FrmImageCap.PicImage.Circle (.Xcenter, .Ycenter), 4 .control = 0 LastXY(IDxObj).LastX = 0 LastXY(IDxObj).LastY = 0 End If End With Next With FrmFind MasterForm.Comm.elementos .LblX(0).Caption, .lblY(0).Caption, .LblX(2).Caption, .lblY(2).Caption, _ .LblX(3).Caption, .lblY(3).Caption, .LblX(4).Caption, .lblY(4).Caption, _ .LblX(5).Caption, .lblY(5).Caption End With crono = (GetTickCount - crono) FrmFind.lbltime.Caption = Format(crono / 1000, "##0.000") & " sec." End Sub

91

6.5. Problemas relativos à Comunicação

Para a comunicação precisou-se elaborar diferentes métodos que permitiram a transmissão

configurável e confiável tanto dos dados de posição (X,Y) adquiridos no processamento da

imagem, quanto da calibração dos limites de campo.

6.5.1. Solução para Comunicação e Protocolo definido

O tipo de comunicação utilizado entre o sistema de visão aqui descrito e o de estratégia

desenvolvido por Santos e Richter (2005) foi o conhecido RS-232.

O RS é uma abreviação de “Recommended Standard ”e relata uma padronização de uma

interface comum para comunicação de dados entre equipamentos por um comitê conhecido

atualmente como (EIA) (Electronic Industries Association - Associação das Indústrias de

Eletrônica). O padrão RS232 especifica as tensões, temporizações, funções dos sinais, um

protocolo para troca de informações e as conexões mecânicas a serem utilizadas (CAZIAN,

2004).

Para garantir a validação dos dados transmitidos, utilizou-se o método de detecção de

erros pelo cálculo do checksum (checagem por somatória). Segundo Cazian (2004) os valores que

constituem uma mensagem são adicionados aritmeticamente. O número de checksum é então

adicionado a seqüência do pacote de dados de tal forma que a soma dos dados mais o checksum é

zero. Quando recebidos, os dados devem ser adicionados pelo processador local e se a soma do

pacote der um resultado diferente de zero, caracteriza-se então um erro. Neste caso o pacote

recebido é ser descartado.

A Tabela 11 apresenta o protocolo utilizado para o envio dos dados de calibração do

campo e de localização dos elementos envolvidos no jogo:

92

Tabela 11 - Protocolo usado para a comunicação RS232.

Protocolo proposto para a transmissão dos pontos calibrados do campo :

#1 x1 y1 x2 y2 x3 y3 x10 y10 Byte High Byte Low

Cabeçalho Ponto 1 Ponto 2 Ponto 3 ...

Ponto 10 Check Sun

Protocolo proposto para a transmissão dos elementos calibrados e localizados:

#1 x1 y1 x1 y1 X2 y2 x3 y3 x10 y10 Byte High Byte Low

Centro Centro Frente Centro Frente Cabeçalho

Bola Robô 1 Robô 2 Check Sun

6.5.2. Resultados obtidos na comunicação

Com o uso do checksum obteve-se uma boa garantia dos dados transmitidos para a equipe

de estratégia mesmo com as taxas mais altas de transferências pela porta serial.

A fácil alteração do tempo de envio (baund rate) dos valores (x,y) encontrados,

possibilitou uma interação configurável entre as velocidades do sistema de visão e estratégia. Nos

testes realizados verificou-se que uma maior taxa de transmissão possibilita ao sistema de

estratégia a execução de um processamento com dados mais próximos aos do acontecimento no

ambiente real.

93

7. Planejamento do Trabalho

4

3

2

N ov

em br

o

1

4

3

2

O ut

ub ro

1

4

3

2

Se te

m br

o

1

4

3

2 A go

st o

1

4

3

2 Ju lh

o

1

4

3

2 Ju nh

o

1

4

3

2 M ai

o

1

4

3

2 A br

il

1

Se m

/ Fa

se

1 2 3 4 5

Fa se

1 –

P es

qu is

as e

e sp

ec ifi

ca çã

o de

re qu

is ito

s

Fa se

2 –

P ro

to tip

aç ão

e d

es en

vo lv

im en

to d

os m

ód ul

os d

e V

is ão

.

Fa se

3 –

In te

gr aç

ão d

os tr

ês m

ód ul

os (V

is ão

, E st

ra té

gi a

e H

ar dw

ar e)

.

Fa se

4 –

A va

lia çã

o do

si st

em a

e re

al iz

aç ão

d e

aj us

te s.

Fa se

5 –

F in

al iz

aç ão

d a

do cu

m en

ta çã

o e

pr ep

ar at

iv os

p ar

a ap

re se

nt aç

ão .

94

8. Conclusões, Resultados Finais, Dificuldades e Pretensões Futuras

Verificou-se que o uso de um ambiente com iluminação controlada facilita em muito a

aplicação das técnicas de visão para localização dos agentes robóticos, porém a falta de tal

ambiente não impede a implementação de tais técnicas.

Concluiu-se também que para o jogo gol-a-gol executado, uma velocidade de

processamento de imagens e transmissão de valores X,Y da ordem de 5 FPS apresentou um bom

desempenho comparado ao valor de 30 FPS comumente utilizado por equipes de universidades

estrangeiras de renome, como por exemplo a Cornell University e a Carnegie Mellon University.

Verificou-se também que análise da imagem utilizando saltos de pixels permitiu boa

precisão dos pontos localizados, e facilitou em muito o processamento de cada frame de imagem.

Uma grande vantagem desse sistema de visão desenvolvido em relação aos sistemas

comerciais existentes no mercado, é sem dúvida o baixo custo financeiro, já que este utilizou-se

de equipamentos de imagens comuns como câmeras, computador e placas de captura que

possuem preços acessíveis no mercado.

O uso da calibração por limites máximos e mínimos da faixa de R, G, B, I para cada

elemento de cor possibilitou o reconhecimento de tais elementos mesmo em condições de baixa

luminosidade no ambiente em que os mesmos estavam atuando. É importante ressaltar que em

um ambiente de iluminação com 230 LUX em média, as cores definidas para os robôs e para a

bola foram bem localizadas. Considerando que num ambiente profissional da ROBOCUP a

iluminação é da ordem de 2000 LUX, somente neste ano este torneio começou a diminuir a

iluminação utilizada para chegar mais próximo possível de ambientes reais onde as sombras

coexistem com as imagens.

A capacidade de armazenamento de imagens seqüenciais implementadas no software

permitiu e auxiliou o processo de testes, tanto da calibração das cores dos elementos como dos

limites do campo. Graças a essa capacidade tais calibrações que antes só poderiam ser realizadas

em ambientes reais puderam ser feitas em um ambiente simulado.

Assim, pelos resultados apresentados acima, pode-se concluir que foi possível a

implementação de um sistema de visão artificial para a análise de imagens reais e seqüenciais.

Além disso, tal implementação pode ser realizada em equipamentos de custo relativamente baixo

que apresentam um bom desempenho para o sistema de visão como um todo.

95

A título informativo, a realização do projeto geral encontrou várias dificuldades que não

impediram a realização desse trabalho. Dentre as dificuldades encontradas podemos citar a falta

de incentivo e apoio financeiro por parte da instituição de ensino como sendo uma das principais,

a disponibilidade de espaço físico e tempo para a realização do projeto geral, a dificuldade de

locomoção dos equipamentos pessoais (computadores, campo e agentes robóticos) até o local de

realização do projeto. A falta de uma abordagem mais específica nas áreas de Computação

Gráfica e Linguagem de Programação em C++, prejudicou o desenvolvimento de um software

que apresentasse um maior desempenho. Sugere-se aqui que, se possível, a instituição de ensino

antecipe e priorize a instrução dos tópicos embasados das matérias supra citadas, melhorando

assim o desempenho em trabalhos futuros.

Com base nos conhecimentos adquiridos com a execução deste trabalho, almeja-se a

implementação de um software de visão computacional em uma linguagem mais apropriada para

sistemas de tempo real, ou sua elaboração em sistemas de hardware.

96

9. Referências Bibliográficas

Ballard, D. H. & Brown, C. M. (1982).Computer Vision Prentice-Hall, Englewood Cliffs, 1982.

Bianchi, R. A. C. (2001). Visão Computacional Aplicada ao Controle de Micro Robôs;

Faculdade de Engenharia Industrial, Departamento de Engenharia Elétrica, São Bernardo

do Campo, Brasil.

Booch. G. et al (2000). UML, Guia do Usuário; Rio de Janeiro, Brasil: Ed. Campus Ltda.

Cazian E. (2004). Comunicação Serial RS-232; Apostila do Curso de comunicação Ministrado

pela CNZ Engenharia e Informática Ltda., São Paulo. Disponível em

<http://www.apostilando.com/download.php?cod=333&categoria=Outras%20Apostilas >.

Acessado em: 28 agosto 2004.

Freire, J. J. (2004). Simulação do Controle de Tráfico de Automóveis em uma Malha

Rodoviária Urbana; Trabalho de Conclusão de Curso submetido à Universidade Regional

de Blumenau.

Foley, J. D. et al. (1990). Computer Graphics: principles and pratice; United States of

America, Ed. Addison-Wesley Publishing Company, Inc.

Gonzales, R. C. & Woods R. E. (1992). Digital Image Processing; United States of America,

Ed. Addison-Wesley Publishing Company, Inc.

Jarol, S (1995). Visual Basic para Multimídia; Tradução PubliCare Serviços de Informática,

Rio de Janeiro, Brasil: Ed. Campus Ltda.

Manssour, I. H. (2003). Introdução a OpenGl; Porto Alegre. Disponível em:

<http://www.inf.pucrs.br/~manssour/OpenGL/>. Acessado em: 28 agosto. 2004.

Marques Filho, O. & Vieira Neto, H. (1999). Processamento Digital de Imagens; Rio de

Janeiro, Brasil: Ed. Brasport Livros e Multimídia.

Neves, S. C. M. & Pelaes, E. G.(2001). Estudo e Implementação de Técnicas de Segmentação

de imagens; Departamento de Engenharia Elétrica e de Computação, Revista Virtual de

Iniciação Acadêmica da UFPA, Universidade Federal do Pará. Disponível em:

<http://www.ufpa.br/revistaic>. Acessado em: 28 agosto. 2004.

97

Oliveira, I. N. S. (2003). Metodologia para Detecção Rápida de Movimento em Seqüências

de Imagens; USP, Instituto de Física de São Carlos, São Carlos, Brasil.

Oliveira, A. G. (2000). Usando a API do Windows, Avançado no Visual Basic; Florianópolis:

Ed Advanced Books.

Persiano, R. C. M. & Oliveira, A. A. F. (1989). Introdução à Computação Gráfica; Livros

Técnicos e Científicos Editora Ltda.

Reed, Jr P. R. (2000) Desenvolvendo Aplicativos com Visual Basic e UML;São Paulo, Brasil:

Ed Makron Books do Brasil Ltda.

Rollof, M.L.(2004) Pesquisa e Desenvolvimento de uma Biblioteca de Processamento de

Imagens Aplicada a Sistemas de Visão Embutidos; Departamento de Automação e

Sistemas Universidade Federal de Santa Catarina, Florianópolis. Disponível em:

<http://www.das.ufsc.br/~ferdes/artigo_sbai2005.doc>. Acessado em: 28 agosto. 2004.

Sato, F. H. (2002). Automação do Sistema de Carregamento em Ensaios Estruturais;

Dissertação de Mestrado apresentada à Faculdade de Engenharia de Ilha Solteira, Núcleo

de Estudos e Pesquisa da Alvenaria Estrutural. Disponível em:

<http://www.feis.unesp.br/dec/nepae> Acessado em: 28 de agosto de 2005.

Santos, I. S.G. & Richter, T.(2005). Controle e Decisão de Estratégias Aplicáveis a Agentes

Robóticos Jogadores de Futebol em Ambiente Simulado e Real; Trabalho de Iniciação

Científica apresentado à Escola de Engenharia de Piracicada como trabalho de conclusão

do curso de Ciência da Computação.

Seara, D. M. (1998) Algoritmos para Detecção de Bordas; Universidade Federal de Santa

Catarina, Departamento de Informática e Estatística; Florianópolis. Disponível em:

<http://www.inf.ufsc.br/~visao/1998/seara/index.html>. Acessado em: 28 de agosto de

2005.

Smallsize ROBOCUP (2004). Laws of the F180 League 2004 - Release 4.00. Disponível em:

<http://www.itee.uq.edu.au/%7Ewyeth/F180%20Rules/f180rules400.pdf>. Acessado em:

28 agosto de 2005.

Swartzfager, G (1997). Visual Basic 5 Programação Orientada a Objeto; Rio de Janeiro,

Brasil: Ed. Ciência Moderna Ltda..

98

Traina, A.J.M. & Oliveira M.C.F (2003). Apostila de Computação Gráfica; Instituto de

Ciências Matemáticas e de Computação, ICMC-USP.

Venetianer, T. (1998). Desmistificando a Computação Gráfica; São Paulo, Brasil:Ed.McGraw

Will.

Novo chip dará aos robôs visão artificial quase humana; Da Redação da Revista Eletrônica

Inovação Tecnológica (2005), Campinas. Disponível em:<http://www.inovacaotecnologica.

com.br/noticias/noticia.php?artigo=010180050222> . Acessado em: 28 agosto de 2005.

Wangenheim, A. V. (2001). The Cyclops Project - Seminário de Introdução à Visão

Computacional, Universidade Federal de Santa Catarina, Departamento de Informática e

Estatística. Disponível em: <http://www.inf.ufsc.br/~visao>. Acessado em: 28 de agosto de

2005.

99

10. Anexo A

O Sistema de Cor HSI+ (Hue, Saturation and Intensity)

Outubro de 2002, por Antonio Escaño Scuri (scuri@tecgraf.puc-rio.br)

A descrição informal de cor pelo ser humano segue naturalmente suas capacidades

perceptuais e caracteriza uma determinada cor através de sua matiz, saturação e brilho. Por isso

os sistemas de especificação de cor em interfaces com o usuário utilizam sistemas de cor com

essas características.

Só que quando esses sistemas foram criados era fundamental que a conversão para RGB

fosse o mais rápida possível. Com isso, os mesmos realizam várias simplificações que por sua

vez de formam o cubo RGB, ora em um hexacone (HSV), ora em um hexacone de duas pontas

(HLS).

Qualquer processamento técnico de matiz, saturação e brilho em imagens, baseado nestes

sistemas, possui resultados questionáveis, devido a deformação do cubo.

Também nos sistemas HSV e HLS, quando mantém-se H e, L ou V (dependendo do

sistema), fixos e varia-se S, a intensidade luminosa não se mantém constante devido a essa

deformação.

Assim, gostaríamos de um sistema que mantivesse o espaço de cor no formato de um

cubo, mas posicionasse seus eixos de maneira a obter uma representação caracterizada por matiz,

saturação e brilho.

Esse sistema não existe na literatura, talvez por ser óbvio demais e parecido demais com

os outros sistemas tais como HLS e HSV. Ou talvez por não ser um sistema perceptual e essas

características só fazerem sentido em sistemas perceptuais? Eu gostaria de um sistema que não

deformasse o cubo, e por isso fosse inversível.

No Gonzalez existe um sistema HSI, mas deforma o cubo para duas pirâmides achatando

o centro do mesmo. Por isso chamamos esse de HSI+.

A CIE também possui sistemas com essas características baseado em uma modificação

do Luv. Só que são sistemas perceptuais de cor e não tem relação com o cubo RGB. Até por que

o RGB que estamos falando aqui não está calibrado e assim não tem relação com o CIE-RGB.

100

As cores no sistema HSI+ são exatamente as mesmas do sistema RGB, ou seja, não é um

novo sistema de cor apenas uma re-escrita do sistema RGB. Não deformando o cubo, e sendo

plenamente inversível, me pareceu ser o sistema ideal para processamento de imagens científicas

coloridas usando informações de matiz, saturação e brilho, onde será necessário inverter os

resultados.

O sistema de coordenadas HSI+ é um sistema cilíndrico, que é um cubo visto pela sua

diagonal (0,0,0)-(1,1,1). Essa diagonal é justamente o eixo de I. Assim a primeira coisa a fazer é

projetar o vetor c=(r,g,b) sobre a diagonal. I é a distância do ponto encontrado à origem, ou o

módulo do vetor pc=(i,i,i). S é a distância do ponto (r,g,b) ao ponto (i,i,i), ou o módulo do vetor

c-pc.

Em seguida criamos um plano perpendicular à diagonal passando pela origem. H é

definido como o ângulo entre as projeções de c e do r=(1,0,0) sobre nesse plano.

Usando o produto vetorial:

101

O ideal seria normalizarmos S pelo seu valor máximo, que por sua vez depende de H e de

I. Esse valor máximo estará sempre nas faces do cubo. Esta normalização tornaria S coerente com

a definição de saturação feita sobre o diagrama de cromaticidade. Repare que dessa forma o eixo

de S possuirá uma escala não linear, que reflete a própria disponibilidade de variações da

saturação para um determinado H e I. Mas perceptualmente o resultado da normalização torna a

saturação visualmente difícil de aceitar. Assim deixamos a normalização disponível para uso no

controle de overflow mas não usamos na conversão RGB2HSI. O cálculo de Smax não é

complicado mas trabalhoso. Deixamos a cargo do código fonte. Quando S=0 ou I=1 ou I=0, H

não faz sentido, por padronização adota-se o valor de 360°.

Isso facilitará mais tarde a criação de uma palette para visualização de ângulos usando

cores.

Quando H=0° deve coincidir com o vermelho, depois H=120o deve ser o verde, depois

H=240° deve ser o azul.

Escrevendo os vetores (1,0,0), (0,1,0) e (0,0,1) na base do plano u-v perpendicular a

diagonal e v alinhado com R, temos:

102

Assim temos, H variando de 0 a 360 graus. Aqui vemos a função ANSI C atan2 que

permite o cálculo correto do ângulo baseado em duas componentes, mas que retorna valores de -

π a π. Um outro cálculo possível para S é aproveitar os eixos u e v para calcular:

OBS: Para evitar erros de quantização e prezervar a informação RGB original é importante

trabalhar com números de ponto flutuante.

103

11. Anexo B

Controle e Decisão de Estratégias Aplicáveis a Agentes

Robóticos Jogadores de Futebol em Ambiente Simulado e Real por Santos & Richter, 2005 sob Orientação do Prof. Msc. José Martins Junior

( ivansalera@yahoo.com, thirichter@yahoo.com.br, jmartins@sc.usp.br )

2.1 - Futebol de Robôs

A idéia de robôs jogando futebol data do início da década de 90 quando foi mencionada

por Mackworth em seu artigo “On Seeing Robots” [MACKWORTH, 1992]. Paralelamente às

pesquisas, um grupo de pesquisadores japonês organizou em outubro de 1992 o seminário (Grand

Challange in Artificial Intelligence) “Principais Desafios na Inteligência Artificial” em Tokyo,

Japão, para discutir possíveis grandes problemas a serem abordados no campo de Inteligência

Artificial (IA). O jogo de futebol foi um assunto seriamente discutido para promover a ciência e a

tecnologia e em junho de 1993 pesquisadores decidiram dar inicio às competições no Japão.

Alguns meses depois, estudiosos de várias partes do mundo solicitaram a extensão da iniciativa a

um projeto internacional, surgindo, então, a Robot World Cup (RoboCup).

Atualmente existem duas organizações internacionais principais que promovem as

competições, a Federation of International Robot-soccer Association (FIRA) e a Robot World

Cup (Robocup). A FIRA, iniciou suas atividades em 1995 e realizou sua primeira competição

internacional em 1996 no Instituto Avançado de Ciência e Tecnologia da Coréia do Sul (KAIST),

Daejeon, e teve a participação de 20 equipes. A FIRA é atualmente dividida em 7 categorias:

Hurosot, Kheperasot, Mirosot, Narosot, Quadrosot, Robosot e Simurosot.

A RoboCup iniciou suas atividades em 1993 e realizou sua primeira competição

internacional de futebol de robôs (Robot Soccer World Cup I) em 1997 contando com a

participação de mais de 40 equipes. A RoboCup é dividida atualmente em 3 domínios principais

(RoboCupSoccer, RoboCupRescue e RoboCupJunior). O domínio do futebol de robôs, o

RoboCupSoccer, é dividido em 5 categorias: Simulation League, Small Size Robot League (F-

180), Middle Size Robot League (F-2000), Four Legged Robot League, Humanoid League. Tanto

a RoboCup quanto a FIRA possuem regulamentos específicos para cada categoria que são

104

atualizados constantemente para as competições. O desenvolvimento do projeto será parcialmente

baseado nas regras da liga F-180 da RoboCup (SMALLSIZE, 2004).

Este projeto reflete, então, um esforço mundial de pesquisa que consiste em

desenvolvimento nas áreas de IA e robótica inteligente através da adoção de um problema

padrão. Esse problema permite avaliar o progresso da pesquisa permitindo aprimorar teorias,

algoritmos e arquiteturas onde uma grande variedade de tecnologias pode ser integrada.

Os principais temas de pesquisas na atualidade, além de inteligência artificial, visão

computacional, estratégia, planejamento e eletrônica, os quais serão abordados, são sistemas

multiagentes e colaborativos, respectivamente, “objetiva prover princípios para a construção de

sistemas complexos envolvendo múltiplos agentes e mecanismos para coordenar o

funcionamento de agentes independentes” (VELOSO; STONE, 2000) e “executar uma

determinada tarefa de modo sincronizado envolvendo dois ou mais robôs autônomos”

(RAUSCH; LEVI, 1996).

2.1.2 - No Brasil

O Brasil tem vários grupos de pesquisa na área de robótica e especificamente em futebol

de robôs. Algumas equipes já foram formadas e a equipe Guaraná, (união da equipe FUTEPOLI,

UPUSP, e UNESP), foi vice-campeã em 1998 no torneio da FIRA realizada em Paris, sendo esse

o título mais importante conquistado por uma equipe brasileira. Em 1999, o Brasil sediou a Copa

do Mundo 99 de Robôs, onde participaram diversos países entre eles Coréia do Sul, Alemanha,

Inglaterra e Canadá. O Brasil foi representado por três equipes: a Bravo, de Campinas, a

MineiroSoft, de Belo Horizonte, e o Carrossel Caipira, de Bauru [Época, 1999]. Outra

participação significativa do Brasil no futebol de robôs foi o título de campeão na 2º Competição

Estudantil Latino-Americana de Robôs, ocorrida em Bauru, sendo a equipe Bravo campeã da

categoria Soccer I e vice na categoria Soccer II. A diferença dessas categorias está no tamanho

dos robôs. Na primeira os agentes robóticos medem até 7,5 cm cúbicos e, na segunda, até 180 cm

cúbicos, sendo classificados de F180. [UNESP, 1999].

105

2.1.3 - Ambiente Robocup

A Robocup possui inúmeras regras parecidas com as regras de um jogo de futebol. Cada

modalidade possui as suas e será especificado apenas as do Smallsize, que é a mais próxima do

presente trabalho.

As dimensões do campo são de 4900 mm de comprimento por 3400 mm de largura e tem

aumentado a cada competição. O campo é verde e pode ser de madeira ou coberto com um

carpete. Existem linhas brancas de marcação com 10 mm de espessura.

A área de defesa é demarcada com um semicírculo com raio de 500 mm. A marca do pênalti é

feita a 450 mm da linha do gol. Existem também duas barras verticais de 4000 mm que formam a

estrutura onde são colocadas as luzes e câmeras.

Especificações dos objetos:

• A bola utilizada é uma bola oficial de golfe, laranja com 46 g de massa e 43 mm de

diâmetro.

• O robô deve caber em um cilindro de 180 mm de diâmetro e altura menor que 225 mm.

Uma cor é destinada a cada time, sendo colocada uma marca circular de 50 mm de

diâmetro em cima do robô. As cores branco e preto podem ser usadas livremente no robô

e marcações em verde claro, rosa claro e ciano também.

• As rodas do robô devem ser feitas em material que não danifiquem o material do campo.

Dispositivos de chute são permitidos.

• O uso de um sistema de captura de imagens é opcional que pode ficar junto com o robô

ou colocado na estrutura do campo.

• O jogo tem duração de 20 minutos, sendo dividido em dois tempos de 10 minutos cada

um. Cada time pode pedir um “tempo”, que seria uma interrupção no jogo. O time pode

pedir no máximo quatro tempos e a soma não pode exceder 10 minutos.

• O gol acontece quando a bola passa, em sua totalidade, a linha do gol.

• Não há regras para impedimento.

106

Davi Cardoso, Ciência da Computação, e-mail: davi_cardoso@terra.com.br;

Vanderlei Vitório Gomes, , Ciência da Computação, e-mail: gomes_va@terra.com.br.

Piracicaba, Novembro de 2005.

Até o momento nenhum comentário
Esta é apenas uma pré-visualização
3 mostrados em 122 páginas