Visão Computacional
1.  Representação de 
     imagens
2.  Filtragem de imagens
3.  Detecção de Bordas
4.  Segmentação Simples
5.  Crescimento de Regiões
6.  Segmentação com
     Filtros
7.  Segmentação a Cores
8.  Análise de Texturas
9.  Análise de Texturas
    Multiescalar
10. Redes Neurais
11. Morfologia Matemática
12. Convolução
13. Esqueletonização
14. Técnicas Estatísticas
15. Fractais
16. Reconhecimento de
      Formas
17. Representação de
      Objetos
18. Quadtrees e Octrees
19. Visão Estereo
20. Inteligência Artificial
21. Controle de qualidade
22. Robótica
23. Medicina
24. Sensoriamento remoto

Prof. Aldo von Wangenheim 
Currículo...
Publicações
Pesquisa
Projetos
Ensino de Graduação
Ensino de Pós Graduação 
Cursos

Você lê?

Seminário Visão Computacional - CPGCC/UFSC - 2001.2

Detecção de Bordas em Imagens Utilizando Redes Neurais Artificiai

<Saulo Popov Zambiasi - saulopz@inf.ufsc.br>
<RExLab / CTC / INE / UFSC>

 
1. Introdução

A navegação de robôs necessita de dispositivos e sensores capazes de fornecer informações do ambiente para que o mesmo possa se locomover sem colisões e executar as demais funções da qual ele objetiva. Como exemplo, um robôs que navega em um ambiente fechado e tem a função de em empilhar caixas, dispersas no ambiente, em locais adequados.

A visão, fornecida através de um dispositivo de CCD, pode prover informações suficientes para que o agente (robô) possa se localizar no ambiente em que se encontra. Em contrapartida, são muitas as informações recebidas e essas também precisam ser tratadas de forma adequada para que as mesmas sejam utilizadas para estruturar uma representação interna do ambiente externo.

Diversas técnicas são utilizadas, em conjunto, para a análise das imagens recebidas do ambiente, possibilitando a modelagem do mesmo. Uma destas técnicas é a detecção de bordas na imagem. Estas bordas, geralmente na visão estéreo em que dois CCDs capturam imagens do mesmo ponto de diferentes ângulos, possibilitam a análise de distâncias, dimensões e formas de objetos, assim como localização de paredes e caminhos por onde o agente deve seguir.

Este trabalho fornece um método que se utiliza de redes neurais artificiais para a detecção das bordas de uma imagens ou uma seqüência de imagens.
 

2. Rede Neural

A rede neural é composta de 9 neurônios na camada de entrada, uma camada intermediária com 10 neurônios e um neurônio na camada de saída. Os neurônios de entrada representam uma matriz de 3x3, sendo esta um pixel e todos seus pixels vizinhos, e o neurônio de saída representa o pixel resultante. Para o treinamento da rede, utiliza-se o algoritmo de Backpropagation. É feito também um pré-processamento nos pixels de forma que os pixels de valor menor que 128 se transformam em 0 (preto) e os maiores ou igual a 128 em 255 (branco). Na rede é feita uma normalização, em que 255 corresponde a 1 e 0 continua 0. Depois da execução do algoritmo, é feita a normalização inversa.


Figura 1: Matriz de pixels de entrada e pixel de saída.



3. Algoritmo

Inicialmente treina-se a rede, pegando-se uma imagem, neste caso com até 256 tons de cinza, e uma imagem equivalente em branco e preto com apenas suas linhas que delimitam as bordas. Para a gerar a imagem resultante, foi usado um filtro do Adobe Photoshop de "Traçado de Contorno" a partir da imagem original em tons de cinza no formato GIF. Aqui é apresentado o algoritmo de treino da rede neural:
 

  1. Inicia a rede com pesos aleatórios.
  2. Vá para o início da imagem original e da imagem resultante.
  3. Pega o pixel da imagem original e todos seus respectivos vizinhos, sendo um total de nove pixels, usando-os como entrada na rede.
  4. Pega o pixel da imagem resultante e usando-o como saída da rede.
  5. Executa a rede, calcula o erro e ajusta os pesos sinápticos dos neurônios usando o algoritmo de treinamento da Backpropagation.
  6. Pega o próximo pixel da imagem original e da imagem resultante.
  7. Enquanto não haver 200 amostras, vá para o passo 3


O algoritmo para a execução da rede faz uma varredura da imagem, do lado esquerdo para o direito e de baixo para cima, pegando-se um pixel e seus respectivos vizinhos como entrada na rede neural, extraindo na saída o pixel respectivo como resultado. O algoritmo procede da seguinte maneira:
 

  1. Vá para o inicio da imagem.
  2. Pega o pixel e todos seus respectivos vizinhos, sendo um total de nove pixels usando-os como entrada na rede neural.
  3. Executa a rede e pega o resultado, colocando-o como o pixel respectivo na imagem resultante.
  4. Enquanto não for o fim da imagem, pegue o próximo pixel e vá para o passo 2.


4. Resultados

A imagem de 320x320 pixels, na figura 2, foi redimensionada para 64x64 pixels e foi aplicado o filtro de "Traçado de Contorno" para gerar uma imagem resultante. Destas foram retiradas algumas amostras para serem usadas para o treinamento da rede.

Figura 2: Imagem original, imagem original redimensionada e após o filtro

A imagem de 320x320 pixels da figura 3 é o resultado do algoritmo aplicado na imagem original, gerando uma nova imagem de 320x320 pixels com apenas contornos.


Figura 3: Imagem resultante.

5. Conclusão

O trabalho apresentado ofereceu uma técnica alternativa para detecção de contornos usando redes neurais artificiais, como parte de técnicas para navegação de robôs. O algoritmo  apresentado mostrou-se eficiente, com um ótimo resultado na imagem resultante e atingindo o resultado esperado.
 
 

6. Trabalhos Futuros

Como melhoria no trabalho, pode-se aumentar a quantidade de pixels na matriz de entrada e na matriz de saída, diminuindo o rastreamento da imagem, porém, aumentando-se a quantidade de neurônios de entrada e saída. Também pode-se acrescentar ao algoritmo o suporte a imagens coloridas.
 
 
Contato:
Tel.: +55-48-331 7552/9498
FAX: +55-48-331-9770
awangenh@inf.ufsc.br