53
Renan Costa Sbeghen 0450071, 8° Semestre Processamento Digital de Imagem Jaguariúna 2007

Processamento Digital de Imagem

Embed Size (px)

DESCRIPTION

Estudos na área de processamento de imagem têm comoobjetivo o reconhecimento de ambientes desconhecidos. Atualmente existem vários tipos de processamento de imagens, sendo que a maioria tem um alto custo para ser utilizado. No entanto foi utilizado algo simples como a mono visão, onde se desenvolveu um método para o reconhecimento de ambientes para que o robô possa se locomover entre objetos. A implementação de um modelo computacional para processamento de imagens. Utilizou-se o software Borland C/C++ builder para a criação do modelo computacional.

Citation preview

Page 1: Processamento Digital de Imagem

Renan Costa Sbeghen

0450071, 8° Semestre

Processamento Digital de Imagem

Jaguariúna

2007

Page 2: Processamento Digital de Imagem

2

Renan Costa Sbeghen

0450071, 8° Semestre

Processamento Digital de Imagem

Monografia apresentada à disciplina Trabalho de Graduação, do curso de Ciência da Computação da Faculdade de Jaguariúna, sob orientação do Prof. Dr. André Mendeleck, como exigência parcial para conclusão do curso de graduação.

Jaguariúna

2007

Page 3: Processamento Digital de Imagem

3

Sbeghen, Renan Costa. Processamento Digital de Imagem. Monografia defendida e aprovada na FAJ em 13 de dezembro de 2007 pela banca examinadora constituída pelos professores:

_________________________________________________________________

Prof. Dr. André Mendeleck

_________________________________________________________________

Prof. Ms. Fernando Augusto Zancheta

_________________________________________________________________

Prof. José Arnaldo Geraldini Nunes

Page 4: Processamento Digital de Imagem

4

Dedico este humilde trabalho a todos

aqueles que com muito esforço e fé em

Deus, trilharam COMIGO este longo

caminho e cá estão como vencedores.

Page 5: Processamento Digital de Imagem

5

AGRADECIMENTOS

Primeiramente a Deus, que me deu a oportunidade de chegar onde

estou hoje.

A todos os meus amigos que com uma palavra, dica ou um simples

gesto me ajudaram. Agradeço a todos que me ajudaram na realização deste trabalho.

Particularmente agradeço: Meu orientador, Prof. Dr. André

Mendeleck, pelo seu apoio, confiança e paciência, que foram fundamentais para a

realização e finalização desta monografia.

Aos meus pais Eliana e Miguel e irmão Renato, que com muito amor

me deram apoio, conselhos, e tiveram muita paciência com as longas noites em claro.

Aos professores do curso de Ciência da Computação que, durante a

graduação, tanto contribuíram para o meu crescimento intelectual e pessoal.

E de uma forma especial, a todos os amigos do curso de Ciência da

Computação pelos momentos alegres durante todos estes anos.

Page 6: Processamento Digital de Imagem

6

Ninguém é tão grande que não possa aprender,

nem tão pequeno que não possa ensinar.

(Píndaro, poeta romano)

Page 7: Processamento Digital de Imagem

7

Sbeghen, Renan Costa. Processamento Digital de Imagem. 2007. Monografia (Bacharelado

em Ciência da Computação) – Curso de Ciência da Computação da Faculdade de Jaguariúna,

Jaguariúna.

RESUMO

Estudos na área de processamento de imagem têm como objetivo o reconhecimento de

ambientes desconhecidos. Atualmente existem vários tipos de processamento de imagens,

sendo que a maioria tem um alto custo para ser utilizado. No entanto foi utilizado algo

simples como a mono visão, onde se desenvolveu um método para o reconhecimento de

ambientes para que o robô possa se locomover entre objetos. A implementação de um modelo

computacional para processamento de imagens. Utilizou-se o software Borland C/C++ builder

para a criação do modelo computacional.

Palavras-chave: Computação, Processamento de Imagem, Computação Gráfica, Robôs.

Page 8: Processamento Digital de Imagem

8

Sbeghen, Renan Costa. Processamento Digital de Imagem. 2007. Monografia (Bacharelado

em Ciência da Computação) – Curso de Ciência da Computação da Faculdade de Jaguariúna,

Jaguariúna.

ABSTRACT

Studies in the area of image processing are designed to recognition of unknown

environments. Currently there are various types of processing images, and the majority has a

high cost to be used. But something simple was used as mono vision, which has developed a

method for the recognition of environments so that the robot can locomover between objects.

The implementation of a computational model for processing images. The software used is

Borland C / C + + builder for the creation of the computational model.

Key word: Computer, Image Processing, Computer Graphics, Robots.

Page 9: Processamento Digital de Imagem

9

SUMÁRIO

LISTA DE ILUSTRAÇÕES..................................................................................................10

1. INTRODUÇÃO ..................................................................................................................11

2. AQUISIÇÃO DE IMAGENS DIGITAIS.........................................................................14

2.1. REGIÃO DE INTERESSE........................................................................................19

2.2. PASSOS PARA O PROCESSAMENTO DE IMAGEM ........................................20

2.3. PRÉ-PROCESSAMENTO DE IMAGEM ...............................................................21

2.4. SEGMENTAÇÃO DE IMAGEM .............................................................................22

3. DESCRIÇÃO DO PROJETO .......................................................................................23

3.1 Diagrama estrutural do projeto ................................................................................24

3.2 Metodologia.................................................................................................................25

3.3 Projeto..........................................................................................................................26

3.4 Caso de uso..................................................................................................................27

3.5 Interface.......................................................................................................................30

3.6 Diagrama funcional ....................................................................................................34

3.7 Simulação do processamento da imagem .................................................................36

4 CONCLUSÃO.................................................................................................................40

REFERÊNCIAS BIBLIOGRÁFICAS .................................................................................41

ANEXO I .................................................................................................................................43

Page 10: Processamento Digital de Imagem

10

LISTA DE ILUSTRAÇÕES

FIGURA 01 - Aquisição de imagem ................................................................................. 14

FIGURA 02 - Diagrama em blocos de um sistema gen. de processamento de imagens ... 15

FIGURA 03 - Convenção dos eixos para representação de imagens ................................ 16

FIGURA 04 - Passos para processamento das imagens digitais ....................................... 17

FIGURA 05 - Imagem original ......................................................................................... 18

FIGURA 06 - Imagem em tom de cinza ........................................................................... 18

FIGURA 07 - Imagem preto e branco ............................................................................... 19

FIGURA 08 - Passos em processamento de imagens digitais ........................................... 21

FIGURA 09 - Passos a serem executados pelo software ................................................... 24

FIGURA 10 - Diagrama de caso de uso ............................................................................ 27

FIGURA 11 - Tela do sistema ........................................................................................... 30

QUADRO 1 - Mapa panorâmico ....................................................................................... 31

QUADRO 2 - Mapa de locomoção ................................................................................... 32

QUADRO 3 - Botões de comando .................................................................................... 32

QUADRO 4 - Campos de resultados ................................................................................. 33

QUADRO 5 - Área de tratamento da imagem .................................................................. 33

FIGURA 12 - Diagrama Funcional ................................................................................... 34

FIGURA 13 - Imagem inicial ............................................................................................ 36

FIGURA 14 - Após processamento ................................................................................... 37

FIGURA 15 - Após processamento ................................................................................... 38

FIGURA 16 - Após processamento ................................................................................... 39

Page 11: Processamento Digital de Imagem

11

1. INTRODUÇÃO

O Processamento de Imagens são técnicas para a análise de dados multidimensionais,

que manipula imagens para obter informações que podem conduzir à tomada de decisão. O

elemento principal é a imagem ou um conjunto delas, captadas através de uma câmera, de um

scanner laser, de um ultra-som, de um ressonador magnético, ou por qualquer outro meio.

A Computação Gráfica consiste na geração, manipulação e interpretação de modelos e

imagens de objetos utilizando o computador.

A computação gráfica tem relação com 3 sub-áreas[Persiano and Oliveira, 1989]:

• Síntese de Imagens: produção de representações visuais a partir das

especificações geométricas e visuais de seus componentes.

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

tanto a imagem original quanto a imagem resultado, apresentam-se sob uma

representação visual (geralmente matricial). Essas transformações visam

melhorar as características visuais da imagem.

• Análise de Imagens: procura obter a especificação dos componentes de uma

imagem a partir de sua representação visual (primitivas geométricas

elementares que compõem a imagem).

E em processamento digital de imagens, existem vários tipos de aplicação, onde

podemos citar:

• Melhoria da informação visual para a interpretação humana.

• Processamento de dados de cenas para percepção automática através de

máquinas.

O processamento digital de imagens tem como objetivo melhorar as características

estruturais da imagem fornecendo subsídios para a sua interpretação, de tal forma a permitir,

por exemplo, a sua utilização para o reconhecimento de ambientes para aplicações em

Page 12: Processamento Digital de Imagem

12

robótica e também para outros processamentos, onde os algoritmos realizam operações com o

objetivo de segmentá-las.

Para GONZALEZ & WOODS (2000), “Podem ser considerados como a partição de

imagens digitais em conjuntos de pixels considerando-se a necessidade geral e critérios

previamente definidos”.

Para Albuquerque (2000, p.1), ”O processamento de imagens é certamente uma área

em crescimento. Diversos temas científicos são abordados e em alguns casos de caráter

interdisciplinar. Entre eles podemos citar: a compreensão de imagens, a análise em multi-

resolução e em multi-freqüência, a análise estatística, a codificação e a transmissão de

imagens, etc”.

O Processamento Digital de Imagens tem crescido muito nas últimas décadas, com a

utilização de imagens e gráficos em uma grande variedade de aplicações, possibilitando a

utilização de sistemas mais eficientes e mais baratos. Muitas áreas vêm utilizando Sistemas de

Processamento Digital de Imagens, como por exemplo: reconhecimento de padrões, medicina,

meteorologia, pesquisas espaciais etc.

Pode-se aplicar o processamento digital de imagens em análise de recursos naturais,

análise ambiental, meteorologia, onde é necessário realçar as informações da imagem.

Em contrapartida, o tipo e a quantidade de sensores, como por exemplo a

quantificação e sensoriamento remoto na investigação geográfica, determinam o volume de

dados para o processamento e composição da “imagem” do ambiente, impondo na maioria

dos casos, alto custo computacional.

Para BERTOZZI (et al., 2000), “Muitas das aplicações para controle de veículos

autônomos que apresentaram bons resultados, tanto para ambientes externos quanto para

ambientes internos, utilizavam a visão computacional como parte integrante do conjunto de

sensores”.

Neste trabalho considerou-se somente um sensor(câmera), a monovisão, isto é, um

sensor irá adquirir imagens do ambiente e estas fornecerão informações ao sistema

computacional. Embora a monovisão seja uma solução bastante econômica, possui a

desvantagem de não conseguir obter informações de profundidade, limitando a percepção do

sistema, sendo trivial para o sistema humano, construir cenas tridimensionais a partir de

imagens bidimensionais captadas pelo sistema de visão, e a partir destas tomar decisões

precisas para a navegação, pode não ser trivial para os sistemas computacionais.

Diferentemente do sistema humano, sistemas de processamento e análise de imagens

computacionais mais complexos podem desencadear alguns prejuízos como a velocidade de

Page 13: Processamento Digital de Imagem

13

resposta do sistema devido ao tempo de processamento. Como exemplo, temos a alta

demanda de informações que são submetidas ao sistema de visão, em função da relação

existente entre um sistema de decisão em tempo real, com um sistema de leitura de imagens

que opera em uma determinada taxa de captação/leitura, isto é, quantidade de imagens

geradas por segundo.

Page 14: Processamento Digital de Imagem

14

2. Aquisição de Imagens Digitais

Para ser feito o processamento da imagem é preciso obtê-la, onde é utilizada uma

câmera para a captura da imagem.

Um sistema genérico mínimo de processamento de imagens deve permitir as seguintes

operações com imagens:

• aquisição

• visualização

• manipulação

Como mostra a FIGURA 01, a aquisição é feita por uma câmera, onde passará pelo

processamento que fará o tratamento da imagem, logo após ela poderá ser armazenada

em discos ou mostrada em monitores e impressoras.

Alguns dos componentes de um sistema de visão artificial podem ser os sensores de visão

(câmeras), sistema de digitalização de imagens, memória para armazenamento das imagens,

um processador para acessar a memória e um conjunto de ferramentas que permita processar

as imagens armazenadas.

Um sistema de processamento de imagens pode ser dividido em diversos componentes

independentes, como mostrados na FIGURA 02.

AQUISIÇÃO

Câmeras

PROCESSAMENTO

processamento

SAÍDA Monitores de

video Impressoras

ARMAZENAMENTO

Discos Vídeo

FIGURA 01 – Aquisição de imagem

Page 15: Processamento Digital de Imagem

15

FIGURA 02 – Diagrama em blocos de um sistema genérico de processamento de imagens. Fonte: [3] - Processamento de Imagens: Métodos e Análises.

O módulo de entrada é constituído por uma câmera que capta a imagem real de uma

cena.

Uma imagem digital é discretizada espacialmente (ou seja em x e y) e em luminância

(níveis de cinza / cores). Alguns exemplos de módulos de aquisição são: as câmeras, os

scanners ou ainda alguns sensores dedicados (como sistemas de infravermelho, mapeamento

magnético de uma superfície, sensoriamento de radares, etc). Sendo que a câmera de vídeo é o

sensor de aquisição de imagem mais freqüentemente utilizado.

Uma câmera de vídeo apresenta características de sensibilidade, resolução e função de

transferência (entre a imagem captada da cena e a intensidade do sinal de vídeo fornecido).

Algumas câmeras mais sofisticadas permitem ainda controlar o “offset” ou ganho do sinal de

vídeo, possibilitando uma correção do contraste da imagem em tempo real. Em alguns casos

podemos encontrar módulos que permitem o ajuste da iluminação de fundo ou ainda realçar

os contornos dos objetos através da execução de funções específicas.

Neste trabalho foi considerado somente imagens em níveis de cinza, pois grande parte

dos algoritmos de análise de imagens coloridas são feitas recombinando as componentes de

Page 16: Processamento Digital de Imagem

16

cores e trabalhando com a informação de luminância somente. No caso de imagens coloridas

cada componente da imagem ("Red", "Green" e "Blue") é armazenada separadamente na

memória principal.

A imagem de saída é geralmente reconstruída através de conversores digitais

/Analógicos (DAC), onde são somados pulsos de sincronização para geração do sinal de

vídeo. Este formato de sinal é bastante utilizado por ser padrão adotado por todos os

fabricantes de equipamentos de vídeo.

A imagem é, nada mais, que uma função bidimensional de intensidade da luz, sendo

f(x,y), onde x e y são as coordenadas e o valor f em qualquer ponto (x,y) proporciona um

nível de cinza da imagem, conforme mostrado na FIGURA 03.

FIGURA 03 - Convenção dos eixos para representação de imagens

A visão computacional é uma ótima forma de ter informações sobre um ambiente

desconhecido, mas só podemos tratar ela em 2D, para transformá-la em 3D precisa-se de um

alto custo computacional e algoritmos muito complexos.

Para BERTOZZI (et al., 2000), “A visão computacional pode ser uma importante

ferramenta para recuperar ou obter informações sobre ambientes”.

Page 17: Processamento Digital de Imagem

17

FIGURA 04 – Passos para processamento das imagens digitais

S. Paciornik – DCMM PUC-Rio

Seguindo os passos da FIGURA 04 conseguimos deixar a imagem tratada para a

interpretação do caminho, onde a imagem é capturada e passa pelos processos de filtragem,

que é o pré-processamento da imagem (dá um realce a imagem, deixando ela até mais nítida),

a segmentação da imagem (procura-se distinguir as partículas umas das outras e do fundo,

onde permitirá ao programa interpretar pixels contíguos e agrupá-los em regiões), o pós-

processamento (técnicas de luminosidade, reparo de cores), a extração de atributos (faz

medidas na imagem novamente e aplicam-se os métodos), classificação e reconhecimento

(classifica o pixel em branco ou preto), como demonstrado logo abaixo.

A imagem mostrada na FIGURA 5 é a imagem original, capturada de uma webcam e

selecionada entre 12 imagens que fazem parte do software, foi escolhida está imagem, pois é a

imagem de partida do robô (simulação).

Page 18: Processamento Digital de Imagem

18

FIGURA 05 – Imagem original

Após obter a imagem, deve-se deixá-la em tom de cinza, onde é reduzida a quantidade

de informações fornecidas pela imagem, facilitando a obtenção dos parâmetros necessários

para a escolha da trajetória do robô, como mostra a FIGURA 06.

FIGURA 06 – Imagem em tom de cinza

Feito isto, deve-se transformar a imagem em preto e branco para que o sistema possa

reconhecer no ambiente, as áreas de navegação, que considera-se as regiões em branco, como

mostra a FIGURA 07.

Page 19: Processamento Digital de Imagem

19

FIGURA 07 – Imagem preto e branco

Todos estes processos são feitos com a varredura dos pixels da imagem, fazendo

comparações das cores RGB do pixel, onde se o valor do RGB for maior que o valor do

Threshold o pixel será preto senão o pixel será branco, até chegar ao final da imagem e o

Threshold que definimos para este projeto foi de 95, para o tratamento das imagens.

2.1. Região de Interesse

Um conceito importante em processamento de imagens é a Região de Interesse.

Entende-se como Região de Interesse a região definida automaticamente a partir de

parâmetros obtidos na própria imagem (ou por um usuário) onde o processamento estará

totalmente concentrado. Podemos, por exemplo, definir uma região de interesse onde sabemos

por antecedência que a iluminação de fundo é constante ou foi corrigida.

Normalmente, nas técnicas de processamento de imagens iremos sempre encontrar

problemas no tratamento das bordas da imagem. A criação de regiões de interesse faz com

que apareçam também problemas nas bordas das regiões de interesse. A solução deste

problema é completamente dependente do problema ao qual o processamento de imagens esta

associado, i.e., ao que conhecemos e podemos levar em consideração anteriormente ao

processamento.

Page 20: Processamento Digital de Imagem

20

Com a região de interesse podemos localizar um caminho em uma imagem, coisa que

será utilizada neste trabalho.

2.2. Passos para o Processamento de Imagem

O processamento de imagens envolve a aplicação de vários métodos/algoritmos para

se atingir os objetivos. A primeira etapa consiste em adquirir a imagem digital com uma

câmera digital ou uma webcam. FIGURA 08

Após adquirida a imagem, a mesma passa por um processo de filtragem para melhorar

o conteúdo da imagem, como o realce do contraste e a remoção de ruído, podendo assim dar

mais nitidez a ela.

Em seguida são aplicados métodos de segmentação a imagem, dividindo em partes para

a produção de uma nova imagem com menos cores. Segmentar consiste na realidade em

dividir a imagem em diferentes regiões, que serão posteriormente analisadas por algoritmos

especializados em busca de informações ditas de "alto-nível".

Com o processo de seleção de características, tentamos extrair características que

tenham alguma informação quantitativa de interesse ou que sejam básicas para discriminação

entre classes de objetos.

O último estágio envolve reconhecimento e interpretação, onde o reconhecimento

atribui um parâmetro a um objeto e a interpretação envolve a atribuição de significado a um

conjunto de objetos.

Page 21: Processamento Digital de Imagem

21

FIGURA 08 – Passos em processamento de imagens digitais

2.3. Pré-processamento de Imagem

Para BERTOZZI (et al., 2000), “Muitos dos grupos de pesquisa em visão

computacional utilizam algoritmos de filtragem altamente sofisticados. Na maior parte,

imagens em nível de cinza são usadas, porém em outros, imagens coloridas: este é o caso do

MOSFET9 robô móvel, que utiliza um algoritmo de segmentação para maximizar o contraste

entre as linhas da pista e a estrada”.

O pré-processamento consiste em analisar a imagem capturada, onde será aplicado os

tratamentos que fará com que a imagem fique em tom de cinza para poder aplicar o Threshold

que deixará a imagem em preto e branco.

Neste trabalho será necessário utilizarmos as imagens em preto e branco para a

interpretação de caminhos para podermos enviá-las para um robô.

Algumas aplicações típicas são: a determinação do número de células presentes em um

tecido biológico, o cálculo das formas dos contornos de uma célula ou ainda a determinação

da distribuição de uma população específica de um conjunto de células. As técnicas dedicadas

à análise de imagens podem variar significativamente segundo a sua complexidade e a

necessidade em tempo de processamento. E nesta área que vamos encontrar um nível elevado

de complexidade no tratamento da informação. Um exemplo prático e quando da classificação

automática de células doentes dentro de um conjunto de células observadas em microscopia.

Page 22: Processamento Digital de Imagem

22

2.4. Segmentação de Imagem

A segmentação consiste na primeira etapa de processamento da imagem quando

consideramos uma análise do ponto de vista da INFORMAÇÃO nela presente. O termo

segmentação vem do termo em inglês "image segmentation", criado durante os anos 80 [11].

Esta área representa até hoje uma linha de pesquisa importante do processamento de

imagens, principalmente por ela estar na base de todo o processamento da informação em uma

imagem. Segmentar consiste em dividir a imagem em diferentes regiões, que serão

posteriormente analisadas por algoritmos especializados em busca de informações ditas de

"alto-nível".

Existem diversas técnicas de segmentação de imagens, mas não existe nenhum método

único que seja capaz de segmentar todos os tipos de imagem. Globalmente, uma imagem em

níveis de cinza pode ser segmentada de duas maneiras: ou consideramos a semelhança entre

os níveis de cinza ou consideramos as suas diferenças. A detecção de um contorno de um

objeto, através de matrizes do tipo Passa-Alta, é um exemplo de técnicas baseado nas

diferenças. Neste caso estamos segmentando as imagens em regiões que pertencem a borda do

objeto.

Neste trabalho será utilizado a segmentação para localização de um caminho a ser

percorrido, onde a imagem será divida em 3 partes para ser feita a análise em cada parte e

escolher o melhor caminho.

Page 23: Processamento Digital de Imagem

23

3. DESCRIÇÃO DO PROJETO

O projeto consiste em fazer o tratamento de imagens capturadas por câmeras (webcam),

onde o mesmo aplicará os tratamentos necessários para que o robô possa de deslocar.

O modelo computacional será criado a partir da linguagem de programação C++, um

software que recebe a entrada de valores através da interação com o usuário pela interface

gráfica, fará a modelagem dos dados e a execução da simulação do movimento de um robô

em um determinado plano. Para a programação será utilizado o software C++ BUILDER 6.

Os objetivos deste trabalho são:

• A implementação de um modelo computacional para processamento digital de

imagens, onde o robô consiga interpretar um caminho a ser percorrida sendo como sua

inspiração biológica, o olhar do ser humano.

• O modelo computacional será uma simulação.

Após os experimentos e implementação computacional, será criado um modelo real do

robô.

Page 24: Processamento Digital de Imagem

24

3.1 Diagrama estrutural do projeto

Este diagrama representa os módulos para se processar a imagem e localizar o caminho onde

se obtém o resultado final, onde os módulos são:

• Capturar Imagem: O usuário ou o robô utilizará uma câmera para capturar a imagem;

• Filtrar Imagem: Assim que capturada a imagem, aplica-se o filtro de imagem, onde

será utilizado o método de Threshold que deixará a imagem em preto e branco;

• Identificação: O sistema irá dividir a imagem em 3 partes e contar a quantidade de

pixel de cada parte para a identificação do caminho, onde ele selecionará o melhor

caminho a ser percorrido pelo robô;

• Gerar ação: O sistema irá gerar a ação para o robô, onde ele utilizará um gerador de

movimento para ajudar;

• Enviar comandos para o robô: Após todos os processos o sistema irá enviar os

comandos para o robô, onde o mesmo irá executar.

FIGURA 09 – Passos a serem executados pelo software

CAPTURAR IMAGEM

FILTRAR IMAGEM

GERAR AÇÃO

IDENTIFICAÇÃO

ENVIAR COMANDOS P/ ROBO

THRESHOLD

LOCALIZAR CAMINHO

GERADOR DE MOVIMENTO

Page 25: Processamento Digital de Imagem

25

A imagem será capturada por uma câmera passando por um filtro utilizando os métodos

(Threshold ) para fazer a identificação da imagem que irá localizar o caminho a ser percorrido

pelo robô, gerando a ação que fará o robô entender qual caminho ele terá que percorrer e

enviar para o robô.

3.2 Metodologia

Neste tópico será abordado sobre as etapas que foram feitas para a conclusão deste

trabalho.

As etapas deste trabalho são:

• Estudo de computação gráfica;

• Estudo de processamento digital de imagens;

• Estudo de vários métodos para o processamento de imagens;

• Pesquisa de algoritmos de processamento de imagens;

• Desenvolvimento do software que irá capturar a imagem de uma webcam;

• Desenvolvimento do algoritmo, utilizando o método de Threshold, que irá filtrar a

imagem;

• Estudos da imagem filtrada, para localizar o melhor caminho a ser percorrido;

• Programação para a saída de dados via porta serial do computador, para que o modelo

real possa receber os dados necessários para a execução dos movimentos;

• Analisar resultados;

• Conclusão.

Page 26: Processamento Digital de Imagem

26

3.3 Projeto

O projeto consiste em criar um modelo computacional de processamento de imagens

para locomoção de um robô em ambiente desconhecido, que servirá como base para

implementação da programação em C++ (linguagem de programação).

O modelo computacional terá uma interface para capturar (seleção) da imagem para que

possam ser acionadas as ações. Através dessa interface será aplicado o tratamento da imagem,

onde será aplicado o método de Threshold com um nível de 95.

A imagem então será mostrada em preto e branco, a partir daí a imagem será dividida

em 3 partes (esquerda, frente, direita) onde será calculado a quantidade de pixels brancos em

cada parte.

A parte que contiver o maior número de pixels brancos será o melhor caminho a ser

percorrido pelo robô.

Com isso, será capturada uma nova imagem para um novo processamento e assim

sucessivamente.

Page 27: Processamento Digital de Imagem

27

3.4 . Caso de uso

FIGURA 10 – Diagrama de caso de uso

Use case – Capturar imagem

Atores - Usuário

Descrição - Este caso de uso começa quando o usuário captura a imagem a ser processada.

Page 28: Processamento Digital de Imagem

28

Use case – Filtrar imagem

Atores – Não há atores neste processo

Descrição – Após a captura da imagem, o sistema irá filtrar a imagem(transformá-la em preto

e branco) deixando pronta para o próximo passo.

Use case – Identificar caminhos

Atores – Não há atores neste processo

Descrição – Feito o filtro na imagem, o sistema irá dividir a imagem em 3 partes e irá calcular

a quantidade de pixels brancos existem em cada parte da imagem.

Use case – Selecionar o melhor caminho

Atores – Não há atores neste processo

Descrição – Após ser feita a identificação dos caminhos, o sistema irá selecionar a parte que

contiver a maior quantidade de pixels brancos, pois será a parte que contêm o melhor caminho

a ser seguido.

Page 29: Processamento Digital de Imagem

29

Use case – Gerar ação / Enviar comandos para o robô

Atores – Não há atores neste processo

Descrição – Após a identificação do melhor caminho, o sistema irá gerar a ação para o robô,

para que ele possa se locomover e será enviado via porta serial.

Page 30: Processamento Digital de Imagem

30

3.5 Interface

É uma forma de interação com o usuário, no caso homem-maquina e refere-se às

informações gráficas e textuais apresentadas ao usuario, e as sequências de controle (como

comandos de teclado ou movimentos do mouse) para interagir com o programa.

A interface é dividida em 5 partes onde temos: Mapa panorâmico, mapa de

locomoção(das fotos), botões de comando, campos de resultados e área de tratamento da

imagem, como mostra a FIGURA 11.

FIGURA 11 – Tela do sistema

Para melhor entendimento será explicado cada parte do programa, começando pelo

mapa panorâmico.

O mapa panorâmico mostra a região onde o robô poderá se locomover, como mostra o

QUADRO 1.

Page 31: Processamento Digital de Imagem

31

O b sta c ulos

QUADRO 1 – Mapa panorâmico

Em seguida temos o mapa de locomoção, onde temos todas as imagens do local onde o

usuário poderá selecionar a imagem de partida do robô, sendo a primeira ou a segunda ou a

terceira de baixo para cima e da esquerda para a direita, como mostra o QUADRO 2.

Page 32: Processamento Digital de Imagem

32

QUADRO 2 – Mapa de locomoção

Logo após temos os botões de comando, onde você seleciona qual a operação que

deseja ser executada, que no caso será o processamento da imagem, onde o software irá fazer

o tratamento da imagem, como mostra o QUADRO 3.

QUADRO 3 – Botões de comando

O botão para processar a imagem irá fazer o tratamento da imagem deixando-a em

preto e branco e fazendo os cálculos necessários para a localização do melhor caminho, sendo

o campo que tiver o maior valor é será o melhor caminhos a ser percorrido e esses valores

serão impressos nos campos de resultados como mostra o QUADRO 4

Page 33: Processamento Digital de Imagem

33

QUADRO 4 - Campos de resultados

Nesta parte será mostrada a imagem original e a imagem tratada, como mostra o

QUADRO 5.

Lo c a l d a im a g e m o rig ina l

Lo c a l d a im a g e m tra ta d a

QUADRO 5 – Área de tratamento da imagem

Cada parte apresentada a cima tem sua devida importância para que possa ser

analisada pelo usuário.

Page 34: Processamento Digital de Imagem

34

3.6 Diagrama funcional

Processos de execução do software desenvolvido para processamento digital de imagens:

1 – Capturar a imagem para o processamento;

2 – Processar a imagem para localização do caminho;

3 – Selecionar o melhor caminho a ser percorrido (Caminho1 (Esquerda), Caminho2

(Frente), Caminho3 (Direita));

4 – Executar a ação para que o robô se locomova.

FIGURA 12 – Diagrama Funcional

Capturar Imagem

Processar Imagem

Seleção do melhor caminho a percorrer

Caminho 1 Caminho 2 Caminho 3

Executar processo

Page 35: Processamento Digital de Imagem

35

Como mostra o diagrama funcional (FIGURA 12), o software irá capturar a imagem

passando ela por um processamento onde será aplicado o método de Threshold e a partir da

imagem tratada será gerado 3 caminhos (esquerda, frente, direita), onde o sistema irá

selecionar o melhor caminho a ser percorrido pelo robô e irá executar o processo, ordenando a

ação.

Page 36: Processamento Digital de Imagem

36

3.7 Simulação do processamento da imagem

A simulação será feita por uma base de dados (imagens) já existente no software

desenvolvido para analise, pois não temos o robô em si para fazer os testes, então será tudo

uma simulação.

O usuário irá capturar (selecionar) a imagem, e irá mandar processar a imagem.

O software irá tratá-la e verificar qual o melhor caminho a ser percorrido, isso será

feito imagem por imagem.

Como mostra a FIGURA 13, o robô está em sua posição inicial no mapa de

locomoção.

Posiç ã o inic ia l d o rob ô

FIGURA 13 – Imagem inicial

Ao clicarmos no botão Processar Imagem, o software irá fazer a aplicação do método

de Threshold na imagem e após a aplicação do método o software irá fazer os cálculos para

definir qual o melhor caminho a ser percorrido pelo robô, sendo que se os resultados dos

campos de resultados (variáveis) forem iguais (1,1,1), o robô irá em frente, pois isto foi uma

Page 37: Processamento Digital de Imagem

37

regra definida no desenvolvimento do algoritmo, a FIGURA 14 mostra o robô em sua nova

posição e também a nova imagem a ser processada.

No va p osiç ã o d o rob ô

Posiç ã o a nte rio r

Va lo re s d a s va ria ve is im p re sso s

No va im a g e m c a rre g a d a

FIGURA 14 – Após processamento

Como mostra a FIGURA 14 todos os valores exibidos nos campos de valores foram

iguais (1,1,1) então o sistema irá fazer com que o robô avance para frente e a nova imagem a

ser processada já foi carregada para o próximo processamento.

Page 38: Processamento Digital de Imagem

38

Nova p osiç ã o d o ro b ô

Posiç ã o a nte rio rVa lo re s d a s va ria ve is im p re ssos

No va im a g e m c a rre g a d a

FIGURA 15 – Após processamento

Na FIGURA 15 o robô se deslocou para a esquerda, pois foi onde o software

encontrou o maior espaço em branco na imagem, como está impresso nos campos de

resultados (esquerda = 0,83, centro = 0,49, direita = 0,72).

Page 39: Processamento Digital de Imagem

39

Nova p osiç ã o d o ro b ô / p osiç ã o fina l

Posiç ã o a nte rio r

Va lo re s d a s va ria ve is im p re ssos

No va im a g e m c a rre g a d a

FIGURA 16 – Após processamento

Já na FIGURA 16 o robô se deslocou para a direita, pois foi onde o software

encontrou o maior espaço em branco na imagem, como está impresso nos campos de

resultados (esquerda = 0,62, centro = 0,63, direita = 0,96).

Page 40: Processamento Digital de Imagem

40

4 CONCLUSÃO

Para o desenvolvimento do programa responsável pelo processamento das imagens, foi

necessário estudar aspectos técnicos da visão humana e computação gráfica.

Com os resultados obtidos, que um modelo computacional pode simular o

processamento da imagem para a navegação de um robô em um plano com êxito. Pode-se

concluir que através do modelo computacional desenvolvido, é possível a criação de

simulação de navegação em ambientes desconhecidos.

A implementação do processamento de imagens para o robô real é um projeto futuro,

onde será integrado o software desenvolvido para a simulação de processamento de imagens.

Page 41: Processamento Digital de Imagem

41

REFERÊNCIAS BIBLIOGRÁFICAS1

1. ALBUQUERQUE, M. P.; ALBUQUERQUE, M. P . Processamento de Imagens:

Métodos e Análises. Disponível via URL em:

http://www.cbpf.br/cat/pdsi/pdf/ProcessamentoImagens.PDF. Acessado em 03 de junho

de 2007.

2. BERTOZZI, M., BROGGI, A. & FASCIOLI, A., (2000), “Vision-based intelligent

vehicles: state of the art and perspectives”. Robotics and Autonomous systems 32, pp. 1-

16.

3. Conceitos Básicos. Disponível via URL em:

<http://www.ee.furg.br/~silviacb/DIP/Conceitos_Basicos.html >. Acessado em 25 de

novembro de 2007

4. Criação de desenhos para abstrair fotografias. Disponível via URL em:

<http://w3.impa.br/~lvelho/ip02/demos/sossai/Apresentacao.pdf>. Acessado em 31 de

outubro de 2007.

5. Extração de Características. Disponível via URL em:

<http://www.tecgraf.puc-rio.br/~mgattass/ra/ppt/03Caracteristicas.ppt#307,8,Série de

Taylor>. Acessado em 31 de outubro de 2007.

6. Facçãocientifica.org. Disponível via URL em:

<http://www.faccaocientifica.org/index.php?option=com_content&task=view&id=169&I

temid=135>. Acessado em 25 de novembro de 2007.

7. GONZALEZ, C. R. & WOODS, E. R., (2000), “Processamento de Imagens Digitais”,

São Paulo, Editora Edgard Blucher Ltda.

8. J. Richards, "Remote Sensing Digital Image Analysis", Springer-Verlag, 1986

9. Neto, A. M. Navegação de Robôs Autônomos baseada em Monovisão. 2007. 134 f.

Tese (Mestrado em Engenharia Mecânica) – Universidade Estadual de Campinas,

Campinas.

10. Origens da Computação Gráfica. Disponível via URL em:

<http://www.inf.pucrs.br/~pinho/CG/Aulas/Intro/intro.htm>. Acessado em 15 de

novembro de 2007.

1 De acordo com a ABNT –Associação Brasileira de Normas Técnicas.

Page 42: Processamento Digital de Imagem

42

11. Ozawa, D. M. Processamento e Reconhecimento de Imagens Digitais da Retina

Humana. 2004. 46 f. Universidade Estadual de Londrina. Disponível em:

<http://www.dc.uel.br/nou-rau/document/?view=140>. Acessado em 03 de junho de

2007.

12. Persiano, R. C. M. and Oliveira, A. A. F. (1989). Introdução à Computação Gráfica.

Livros Técnicos e Científicos Editora Ltda.

13. Processamento de Imagens. Disponível via URL em:

<http://atlas.ucpel.tche.br/~vbastos/pi.htm>. Acessado em 05 de maio de 2007

14. R. Gonzalez, R. Woods, "Digital Image Processing", 2nd Ed.Prentice Hall, 2002

15. TECGRAF. Disponível em: <http://www.tecgraf.org/~mgattass/ra/trb03/MichelAlain/>.

Acessado em 03 de junho de 2007.

16. UFSC. Disponível em: <http://s2i.das.ufsc.br/harpia/downloads/apostila-sistemas-

visao.pdf>. Acessado em 03 de junho de 2007.

17. Universidade Federal de Santa Catarina. Disponível via URL em:

<http://www.inf.ufsc.br/~visao/1998/seara/index.html>. Acessado em 31 de outubro de

2007

Page 43: Processamento Digital de Imagem

43

Anexo I //---------------------------------------------------------------------

#include <vcl.h>

#pragma hdrstop

#include "Unit1.h"

//---------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

// Variaveis Globais

TForm1 *Form1;

int col0=0,lin0=240;

int corR=0,corB=0,corG=0;

int panel=0;

//---------------------------------------------------------------------

// Sair do software

void __fastcall TForm1::bnSairClick(TObject *Sender)

{

Close();

}

//---------------------------------------------------------------------

// Transferi a imagem selecionada para a tela do software

void __fastcall TForm1::btnTransferirClick(TObject *Sender)

{

// Gerando um bitmap

Graphics::TBitmap *pBitmap = new Graphics::TBitmap();

// Verifica em qual imagem que está e transferi para o programa

if (panel == 1){ pBitmap-

>LoadFromFile("D:\\Faculdade\\TCC\\CIMAGEM001\\foto1.bmp"); }

if (panel == 2){ pBitmap-

>LoadFromFile("D:\\Faculdade\\TCC\\CIMAGEM001\\foto2.bmp"); }

if (panel == 3){ pBitmap-

>LoadFromFile("D:\\Faculdade\\TCC\\CIMAGEM001\\foto3.bmp"); }

if (panel == 4){ pBitmap-

>LoadFromFile("D:\\Faculdade\\TCC\\CIMAGEM001\\foto4.bmp"); }

if (panel == 5){ pBitmap-

>LoadFromFile("D:\\Faculdade\\TCC\\CIMAGEM001\\foto5.bmp"); }

if (panel == 6){ pBitmap-

>LoadFromFile("D:\\Faculdade\\TCC\\CIMAGEM001\\foto6.bmp"); }

Page 44: Processamento Digital de Imagem

44

if (panel == 7){ pBitmap-

>LoadFromFile("D:\\Faculdade\\TCC\\CIMAGEM001\\foto7.bmp"); }

if (panel == 8){ pBitmap-

>LoadFromFile("D:\\Faculdade\\TCC\\CIMAGEM001\\foto8.bmp"); }

if (panel == 9){ pBitmap-

>LoadFromFile("D:\\Faculdade\\TCC\\CIMAGEM001\\foto9.bmp"); }

if (panel == 10){ pBitmap-

>LoadFromFile("D:\\Faculdade\\TCC\\CIMAGEM001\\foto10.bmp"); }

if (panel == 11){ pBitmap-

>LoadFromFile("D:\\Faculdade\\TCC\\CIMAGEM001\\foto11.bmp"); }

if (panel == 12){ pBitmap-

>LoadFromFile("D:\\Faculdade\\TCC\\CIMAGEM001\\foto12.bmp"); }

Form1->Canvas->Draw(0,0,pBitmap);

for( int linha=0;linha<pBitmap->Height;linha++)

for( int coluna=0;coluna<pBitmap->Width;coluna++) //Image1-

>Width;coluna++)

Canvas->Pixels[coluna+col0][linha+lin0]= Canvas-

>Pixels[coluna][linha];

delete pBitmap;

}

//---------------------------------------------------------------------

// Remove as cores da imagem, deixando a imagem em tom de cinza

void __fastcall TForm1::btnRemoverCorClick(TObject *Sender)

{

// Gerando um bitmap

Graphics::TBitmap *pBitmap = new Graphics::TBitmap();

// Verifica em qual imagem que está e transferi para o programa

if (panel == 1){ pBitmap-

>LoadFromFile("D:\\Faculdade\\TCC\\CIMAGEM001\\foto1.bmp"); }

if (panel == 2){ pBitmap-

>LoadFromFile("D:\\Faculdade\\TCC\\CIMAGEM001\\foto2.bmp"); }

if (panel == 3){ pBitmap-

>LoadFromFile("D:\\Faculdade\\TCC\\CIMAGEM001\\foto3.bmp"); }

if (panel == 4){ pBitmap-

>LoadFromFile("D:\\Faculdade\\TCC\\CIMAGEM001\\foto4.bmp"); }

if (panel == 5){ pBitmap-

>LoadFromFile("D:\\Faculdade\\TCC\\CIMAGEM001\\foto5.bmp"); }

if (panel == 6){ pBitmap-

>LoadFromFile("D:\\Faculdade\\TCC\\CIMAGEM001\\foto6.bmp"); }

if (panel == 7){ pBitmap-

>LoadFromFile("D:\\Faculdade\\TCC\\CIMAGEM001\\foto7.bmp"); }

if (panel == 8){ pBitmap-

>LoadFromFile("D:\\Faculdade\\TCC\\CIMAGEM001\\foto8.bmp"); }

Page 45: Processamento Digital de Imagem

45

if (panel == 9){ pBitmap-

>LoadFromFile("D:\\Faculdade\\TCC\\CIMAGEM001\\foto9.bmp"); }

if (panel == 10){ pBitmap-

>LoadFromFile("D:\\Faculdade\\TCC\\CIMAGEM001\\foto10.bmp"); }

if (panel == 11){ pBitmap-

>LoadFromFile("D:\\Faculdade\\TCC\\CIMAGEM001\\foto11.bmp"); }

if (panel == 12){ pBitmap-

>LoadFromFile("D:\\Faculdade\\TCC\\CIMAGEM001\\foto12.bmp"); }

Form1->Canvas->Draw(0,0,pBitmap);

TColor c;

for( int linha=0;linha<pBitmap->Height;linha++)

for( int coluna=0;coluna<pBitmap->Width;coluna++) //Image1-

>Width;coluna++)

{

c = Canvas->Pixels[coluna+col0][linha+lin0];

Canvas->Pixels[coluna+col0][linha+lin0]=RGB(c,c,c);

Canvas->Pixels[coluna+col0][linha+lin0]=RGB(c,c,c);

}

delete pBitmap;

}

// Remove as cores da imagem, deixando a imagem preto e branco

void __fastcall TForm1::Button2Click(TObject *Sender)

// Variáveis

{ int linha, coluna;

int linha1, linha2, linha3, coluna1, coluna2, coluna3;

float aux1 = 0 , aux2 = 0, aux3 = 0;

float cont1 = 0, cont2 = 0, cont3 = 0;

float tot1 = 0, tot2 = 0, tot3 = 0;

float caminho = 0, maior = 0;

// Gerando um bitmap

Graphics::TBitmap *pBitmap = new Graphics::TBitmap();

// Verifica em qual imagem que está e transferi para o programa

if (panel == 1){ pBitmap-

>LoadFromFile("D:\\Faculdade\\TCC\\CIMAGEM001\\foto1.bmp"); }

if (panel == 2){ pBitmap-

>LoadFromFile("D:\\Faculdade\\TCC\\CIMAGEM001\\foto2.bmp"); }

if (panel == 3){ pBitmap-

>LoadFromFile("D:\\Faculdade\\TCC\\CIMAGEM001\\foto3.bmp"); }

if (panel == 4){ pBitmap-

>LoadFromFile("D:\\Faculdade\\TCC\\CIMAGEM001\\foto4.bmp"); }

if (panel == 5){ pBitmap-

>LoadFromFile("D:\\Faculdade\\TCC\\CIMAGEM001\\foto5.bmp"); }

if (panel == 6){ pBitmap-

>LoadFromFile("D:\\Faculdade\\TCC\\CIMAGEM001\\foto6.bmp"); }

Page 46: Processamento Digital de Imagem

46

if (panel == 7){ pBitmap-

>LoadFromFile("D:\\Faculdade\\TCC\\CIMAGEM001\\foto7.bmp"); }

if (panel == 8){ pBitmap-

>LoadFromFile("D:\\Faculdade\\TCC\\CIMAGEM001\\foto8.bmp"); }

if (panel == 9){ pBitmap-

>LoadFromFile("D:\\Faculdade\\TCC\\CIMAGEM001\\foto9.bmp"); }

if (panel == 10){ pBitmap-

>LoadFromFile("D:\\Faculdade\\TCC\\CIMAGEM001\\foto10.bmp"); }

if (panel == 11){ pBitmap-

>LoadFromFile("D:\\Faculdade\\TCC\\CIMAGEM001\\foto11.bmp"); }

if (panel == 12){ pBitmap-

>LoadFromFile("D:\\Faculdade\\TCC\\CIMAGEM001\\foto12.bmp"); }

Form1->Canvas->Draw(0,0,pBitmap);

TColor c;

// Executa a função do botão Transferir

btnTransferirClick(Sender);

// Transferi a imagem original para o segundo plano para ser processada

for( linha=0;linha<pBitmap->Height;linha++)

for( coluna=0;coluna<pBitmap->Width;coluna++) //Image1->Width;coluna++)

{

c = Canvas->Pixels[coluna+col0][linha+lin0];

if (c>RGB(ScrollBar6->Position,ScrollBar6->Position,ScrollBar6-

>Position)) c=255;

else c=0;

Canvas->Pixels[coluna+col0][linha+lin0]=RGB(c,c,c);

Canvas->Pixels[coluna+col0][linha+lin0]=RGB(c,c,c);

}

// Calcula a quantidade de pixel total da imagem

for( linha1=180;linha1<240;linha1++)

for( coluna1=0;coluna1<106;coluna1++)

{

cont1 = cont1 + 1;

if (Canvas->Pixels[coluna1+col0][linha1+lin0] == RGB(255,255,255)) aux1

= aux1 + 1;

}

for( linha1=180;linha1<240;linha1++)

for( coluna2=107;coluna2<212;coluna2++)

{

cont2 = cont2 + 1;

if (Canvas->Pixels[coluna2+col0][linha1+lin0] == RGB(255,255,255)) aux2

= aux2 + 1;

}

for( linha1=180;linha1<240;linha1++)

for( coluna3=213;coluna3<320;coluna3++)

{

cont3 = cont3 + 1;

if (Canvas->Pixels[coluna3+col0][linha1+lin0] == RGB(255,255,255)) aux3

= aux3 + 1;

}

Page 47: Processamento Digital de Imagem

47

// Calcula a maior quantidade de pixel branco

tot1 = aux1 / cont1;

tot2 = aux2 / cont2;

tot3 = aux3 / cont3;

// Verifica qual o melhor caminho a percorrer

caminho = 2;

maior = tot2;

if (tot1 > maior) {

maior = tot1;

caminho = 1;

}

if (tot3 > maior) {

maior = tot3;

caminho = 3;

}

// Verifica em que imagem que está e qual o melhor caminho a ser percorrido

if (panel == 11) {

if (caminho == 1) {

panel = 8;

Image14->Left = 144;

Image14->Top = 34;

pBitmap-

>LoadFromFile("D:\\Faculdade\\TCC\\CIMAGEM001\\foto8.bmp");

Form1->Canvas->Draw(0,0,pBitmap);

TColor c;

exit;

}

if (caminho == 2) {

panel = 12;

Image14->Left = 264;

Image14->Top = 34;

pBitmap-

>LoadFromFile("D:\\Faculdade\\TCC\\CIMAGEM001\\foto12.bmp");

Form1->Canvas->Draw(0,0,pBitmap);

TColor c;

exit;

}

}

if (panel == 10) {

if (caminho == 1) {

panel = 15;

}

if (caminho == 2) {

panel = 11;

Image14->Left = 264;

Image14->Top = 154;

pBitmap-

>LoadFromFile("D:\\Faculdade\\TCC\\CIMAGEM001\\foto11.bmp");

Form1->Canvas->Draw(0,0,pBitmap);

TColor c;

exit;

}

}

if (panel == 9) {

if (caminho == 1) {

panel = 6;

Page 48: Processamento Digital de Imagem

48

Image14->Left = 144;

Image14->Top = 274;

pBitmap-

>LoadFromFile("D:\\Faculdade\\TCC\\CIMAGEM001\\foto6.bmp");

Form1->Canvas->Draw(0,0,pBitmap);

TColor c;

exit;

}

if (caminho == 2) {

panel = 10;

Image14->Left = 264;

Image14->Top = 274;

pBitmap-

>LoadFromFile("D:\\Faculdade\\TCC\\CIMAGEM001\\foto10.bmp");

Form1->Canvas->Draw(0,0,pBitmap);

TColor c;

exit;

}

}

if (panel == 7) {

if (caminho == 1) {

panel = 4;

Image14->Left = 24;

Image14->Top = 34;

pBitmap-

>LoadFromFile("D:\\Faculdade\\TCC\\CIMAGEM001\\foto4.bmp");

Form1->Canvas->Draw(0,0,pBitmap);

TColor c;

exit;

}

if (caminho == 2) {

panel = 8;

Image14->Left = 144;

Image14->Top = 34;

pBitmap-

>LoadFromFile("D:\\Faculdade\\TCC\\CIMAGEM001\\foto8.bmp");

Form1->Canvas->Draw(0,0,pBitmap);

TColor c;

exit;

}

if (caminho == 3) {

panel = 12;

Image14->Left = 164;

Image14->Top = 34;

pBitmap-

>LoadFromFile("D:\\Faculdade\\TCC\\CIMAGEM001\\foto12.bmp");

Form1->Canvas->Draw(0,0,pBitmap);

TColor c;

exit;

}

}

if (panel == 6) {

if (caminho == 1) {

panel = 3;

Image14->Left = 24;

Image14->Top = 154;

pBitmap-

>LoadFromFile("D:\\Faculdade\\TCC\\CIMAGEM001\\foto3.bmp");

Form1->Canvas->Draw(0,0,pBitmap);

Page 49: Processamento Digital de Imagem

49

TColor c;

exit;

}

if (caminho == 2) {

panel = 7;

Image14->Left = 144;

Image14->Top = 154;

pBitmap-

>LoadFromFile("D:\\Faculdade\\TCC\\CIMAGEM001\\foto7.bmp");

Form1->Canvas->Draw(0,0,pBitmap);

TColor c;

exit;

}

if (caminho == 3) {

panel = 11;

Image14->Left = 164;

Image14->Top = 154;

pBitmap-

>LoadFromFile("D:\\Faculdade\\TCC\\CIMAGEM001\\foto11.bmp");

Form1->Canvas->Draw(0,0,pBitmap);

TColor c;

exit;

}

}

if (panel == 5) {

if (caminho == 1) {

panel = 2;

Image14->Left = 24;

Image14->Top = 274;

pBitmap-

>LoadFromFile("D:\\Faculdade\\TCC\\CIMAGEM001\\foto2.bmp");

Form1->Canvas->Draw(0,0,pBitmap);

TColor c;

exit;

}

if (caminho == 2) {

panel = 6;

Image14->Left = 144;

Image14->Top = 274;

pBitmap-

>LoadFromFile("D:\\Faculdade\\TCC\\CIMAGEM001\\foto6.bmp");

Form1->Canvas->Draw(0,0,pBitmap);

TColor c;

exit;

}

if (caminho == 3) {

panel = 10;

Image14->Left = 164;

Image14->Top = 174;

pBitmap-

>LoadFromFile("D:\\Faculdade\\TCC\\CIMAGEM001\\foto10.bmp");

Form1->Canvas->Draw(0,0,pBitmap);

TColor c;

exit;

}

}

if (panel == 3) {

if (caminho == 2) {

panel = 4;

Page 50: Processamento Digital de Imagem

50

Image14->Left = 24;

Image14->Top = 34;

pBitmap-

>LoadFromFile("D:\\Faculdade\\TCC\\CIMAGEM001\\foto4.bmp");

Form1->Canvas->Draw(0,0,pBitmap);

TColor c;

exit;

}

if (caminho == 3) {

panel = 8;

Image14->Left = 144;

Image14->Top = 34;

pBitmap-

>LoadFromFile("D:\\Faculdade\\TCC\\CIMAGEM001\\foto8.bmp");

Form1->Canvas->Draw(0,0,pBitmap);

TColor c;

exit;

}

}

if (panel == 2) {

if (caminho == 2) {

panel = 3;

Image14->Left = 24;

Image14->Top = 154;

pBitmap-

>LoadFromFile("D:\\Faculdade\\TCC\\CIMAGEM001\\foto3.bmp");

Form1->Canvas->Draw(0,0,pBitmap);

TColor c;

exit;

}

if (caminho == 3) {

panel = 7;

Image14->Left = 144;

Image14->Top = 154;

pBitmap-

>LoadFromFile("D:\\Faculdade\\TCC\\CIMAGEM001\\foto7.bmp");

Form1->Canvas->Draw(0,0,pBitmap);

TColor c;

exit;

}

}

if (panel == 1) {

if (caminho == 2) {

panel = 2;

Image14->Left = 24;

Image14->Top = 274;

pBitmap-

>LoadFromFile("D:\\Faculdade\\TCC\\CIMAGEM001\\foto2.bmp");

Form1->Canvas->Draw(0,0,pBitmap);

TColor c;

exit;

}

if (caminho == 3) {

panel = 6;

Image14->Left = 144;

Image14->Top = 274;

pBitmap-

>LoadFromFile("D:\\Faculdade\\TCC\\CIMAGEM001\\foto6.bmp");

Form1->Canvas->Draw(0,0,pBitmap);

Page 51: Processamento Digital de Imagem

51

TColor c;

exit;

}

}

if (panel == 15) {

Image14->Left = 144;

Image14->Top = 154;

pBitmap-

>LoadFromFile("D:\\Faculdade\\TCC\\CIMAGEM001\\foto7.bmp");

Form1->Canvas->Draw(0,0,pBitmap);

TColor c;

panel = 7;

exit;

}

//Imprime os valores calculados

edtCorR->Text = tot1;

edtCorG->Text = tot2;

edtCorB->Text = tot3;

delete pBitmap;

}

//---------------------------------------------------------------------

// Carrega a imagem principal da esquerda

void __fastcall TForm1::Image1Click(TObject *Sender)

{

panel = 1;

Graphics::TBitmap *pBitmap = new Graphics::TBitmap();

pBitmap->LoadFromFile("D:\\Faculdade\\TCC\\CIMAGEM001\\foto1.bmp");

Form1->Canvas->Draw(0,0,pBitmap);

for( int linha=0;linha<pBitmap->Height;linha++)

for( int coluna=0;coluna<pBitmap->Width;coluna++) //Image1-

>Width;coluna++)

Canvas->Pixels[coluna+col0][linha+lin0]= Canvas-

>Pixels[coluna][linha];

delete pBitmap;

Image14->Left = 24;

Image14->Top = 394;

}

//---------------------------------------------------------------------

// Carrega a imagem principal central

void __fastcall TForm1::Image5Click(TObject *Sender)

{

panel = 5;

Graphics::TBitmap *pBitmap = new Graphics::TBitmap();

pBitmap->LoadFromFile("D:\\Faculdade\\TCC\\CIMAGEM001\\foto5.bmp");

Form1->Canvas->Draw(0,0,pBitmap);

for( int linha=0;linha<pBitmap->Height;linha++)

for( int coluna=0;coluna<pBitmap->Width;coluna++) //Image1-

>Width;coluna++)

Canvas->Pixels[coluna+col0][linha+lin0]= Canvas-

>Pixels[coluna][linha];

delete pBitmap;

Image14->Left = 144;

Image14->Top = 394;

Page 52: Processamento Digital de Imagem

52

}

//---------------------------------------------------------------------

// Carrega a imagem principal da direita

void __fastcall TForm1::Image9Click(TObject *Sender)

{

panel = 9;

Graphics::TBitmap *pBitmap = new Graphics::TBitmap();

pBitmap->LoadFromFile("D:\\Faculdade\\TCC\\CIMAGEM001\\foto9.bmp");

Form1->Canvas->Draw(0,0,pBitmap);

for( int linha=0;linha<pBitmap->Height;linha++)

for( int coluna=0;coluna<pBitmap->Width;coluna++) //Image1-

>Width;coluna++)

Canvas->Pixels[coluna+col0][linha+lin0]= Canvas-

>Pixels[coluna][linha];

delete pBitmap;

Image14->Left = 264;

Image14->Top = 394;

}

//---------------------------------------------------------------------

// Ao executar o programa, carrega o threshold em 95 e a imagem do robô na imagem inicial

void __fastcall TForm1::FormShow(TObject *Sender)

{

ScrollBar6->Position = 95;

Image14->Left = 144;

Image14->Top = 394;

}

//---------------------------------------------------------------------

Page 53: Processamento Digital de Imagem

53

Prof. Dr. André Mendeleck Renan Costa Sbeghen