Mudanças entre as edições de "Reconhecimento de Placas de Sinalização Via Processamento Digital de Imagem e Aprendizado de Máquina"

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar
Linha 35: Linha 35:
 
:{{collapse top | Anotações do artigo }}
 
:{{collapse top | Anotações do artigo }}
  
O seguinte trabalho propõe um algoritmo que pode ser divido em três partes: pré-processamento da imagem, extração das características e classificação. O intuito do trabalho é apresentar, na parte de extração das características, uma otimização do algoritmo ''Scale-Invariant Feature Transform'' (SIFT) através do procedimento de análise de componentes principais (''Principal Component Analysis'' - PCA).
+
O seguinte trabalho propõe um sistema de detecção e reconhecimentos de placas de sinalização dando foco na extração das características das regiões de interesse, especialmente na otimização utilizando o algoritmo ''Scale-Invariant Feature Transform'' (SIFT) através do procedimento de análise de componentes principais (''Principal Component Analysis'' - PCA). Na etapa de classificação é utilizada a técnica de Máquinas de Vetores de Suporte (SVM).
  
'''Pré-processamento'''
+
'''SIFT'''
 +
 
 +
O SIFT(''Scale-Invariant Feature Transform'') é uma técnica utilizada para detecção e extração de regiões de interesse que são praticamente invariáveis a mudanças de iluminação, ruído, rotação e escala. Após a detecção das regiões de interesse (chamadas neste trabalho como pontos-chave) em uma imagem, é criado um descritor para cada região. Estes descritores são comparados entre si e possibilita o casamento entre diferentes imagens contendo o mesmo objeto. O algoritmo que executa esta técnica é apresentado pelos seguintes passos:
  
O pré-processamento é a utilização de métodos que alteram as características da imagem (pixels) com objetivo de aumentar a qualidade da imagem e proporcionar uma maior precisão ao sistema. Entre os principais métodos para o pré-processamento da imagem estão: mudança para escala cinza, equalização do histograma, filtros e correção de Gama.
+
*Criação da pirâmide de imagens: O primeiro passo do algoritmo é criação uma pirâmide de imagens ou uma pirâmide Gaussiana. É aplicado sobre a imagem original sucessivas convoluções com um filtro gaussiano de fator σ multiplicado por uma constante k (0,k,2k,...). Essas convoluções irão gerar imagem de resolução menos (ou com efeito blur) formando as denominadas oitavas. A partir das oitavas são gerados os intervalos, onde cada intervalo é a diferença entre duas oitavas (aproximação do Laplaciano da Gaussiana)<ref>COUTINHO, D.P.; MARROQUIM R. SIFT - Scale Invariant Feature Transform. ''LCG Computer Graphics Lab'', Universidade Federal do Rio de Janeiro, 2013</ref>. A figura 1 abaixo apresenta o espaço de escala e a diferença das Gaussianas. A figura 2 apresenta a aplicação deste processo sobre uma imagem.
  
'''SIFT'''
+
<center>[[Imagem: piramideGaussiana.png|500px]]</center>
 +
<center>'''Figura 1  - Pirâmide Gaussiana'''</center>
 +
<center>'''Fonte: ''' <ref>COUTINHO, D.P.; MARROQUIM R. SIFT - Scale Invariant Feature Transform. ''LCG Computer Graphics Lab'', Universidade Federal do Rio de Janeiro, 2013</ref></center>
  
O SIFT é uma técnica utilizada para detecção e extração de descritores de imagem que são praticamente invariáveis a mudanças de iluminação, ruído, rotação e escala aplicado em uma imagem. O algoritmo que executa esta técnica é apresentado pelos seguintes passos:
+
<center>[[Imagem: Filtros gaussiano.png|500px]]</center>
*Detecção dos contornos: É aplicado a imagem original sucessivas convoluções com um filtro Gaussiano, essas sucessivas convoluções geram imagens com efeito de blur proporcional ao valor do desvio padrão vezes um fator k (0,k,2k...). A figura abaixo apresenta as sucessivas aplicações desse filtro:
+
<center>[[Imagem:Extremos_max_min.png‎|400px]]</center>
 +
<center>'''Figura 2  - Aplicação em uma imagem'''</center>
 +
<center>'''Fonte: Próprio artigo'''</center>
  
<center>[[Imagem: Filtros gaussiano.png|500px| Convolução com Filtro Gaussiano]]</center>
+
*Localização dos pontos chaves: Os pontos chaves são encontrados comparando-o com os pontos vizinhos em uma mesma imagem e nas imagens acima e abaixo. O objetivo identificar os pontos máximos (regiões totalmente pretas envoltas por áreas brancas) e pontos mínimos (regiões brancas envoltas por área pretas) dos quais serão utilizados para a próxima etapa e eliminar os pontos ruins, no caso, aqueles que possuem baixo contraste  ou são localizados nas arestas<ref>BELO, F. A. Desenvolvimento de Algoritmos de Exploração e Mapeamento Visual para Robôs Móveis de Baixo Custo. Diss. PUC-Rio, 2006.</ref>.
  
Após este processo, é feito uma subtração entre as imagens de escala vizinha, ou seja, é destacado as bordas conforme é apresentado na imagem abaixo.  
+
*Orientação do ponto-chave: É encontrado dentro da área do ponto-chave os gradientes e orientações de cada pixels. Esse valores são acumulados em um histograma de 36 posições. É determinado o ponto máximo do histograma e é atribuído essa orientação para o ponto-chave.  
  
<center>[[Imagem:Extremos_max_min.png‎|400px|Substração das Imagens Filtradas]]</center>
+
*Criação dos descritores locais: Por fim, para cada ponto chave é estabelecido um descritor para cada ponto-chave. Através de uma janela 16x16 ao redor do ponto, é criado novamente um histograma para cada região. A união destes histogramas unidos em um só vetor de 128 dimensões formará o descritor do ponto-chave.  
  
*Localização dos pontos chaves: Cada nova imagem gerada é então comparada entre as demais, gerando os denominados pontos chaves. O objetivo identificar os pontos máximos (regiões totalmente pretas envoltas por áreas brancas) e pontos mínimos (regiões brancas envoltas por área pretas) dos quais serão utilizados para a próxima etapa.
+
Essas informações extraídas serão utilizadas posteriormente para a classificação.
  
*Criação dos descritores locais: Após a localização dos pontos chave, é obtido para cada região relacionada um histograma de gradiente orientados (HOG), do qual representa a frequência das intensidades dos pixels de cada região. Para cada histograma é atribuído um vetor espacial que é direcionado para o pico de intensidades, como é apresentado pela figura abaixo.
+
'''Análise de Componentes Principais (PCA)'''
  
<center>[[Imagem:Hog.png‎|200px|Substração das Imagens Filtradas]]</center>
+
A  análise  de  componentes  principais (Principal Component Analysis) é uma técnica estatística que consiste em transformar um conjunto de variáveis em outro conjunto de mesma  dimensão denominadas  de componentes  principais. Os  componentes  principais apresentam propriedades importantes: cada componente principal é uma combinação linear de todas as variáveis originais, são independentes entre si e estimados com o propósito de reter,  em  ordem  de  estimação,  o  máximo  de  informação,  em  termos  da  variação  total contida nos dados<ref>VARELLA, C. A.Análise de componentes principais. Seropédica: Universidade Federal Rural do Rio de Janeiro, 2008<\ref>.
  
Com estas informações é possível estabelecer um conjunto de coordenadas contendo posição horizontal(x), vertical(y), desvio padrão de maior resposta e orientação do gradiente para cada ponto chave. Uma matriz 16x16 é formada contendo as informações de todos os pontos chaves e será utilizada para a formação dos descritores. A matriz é então, divida em 4 regiões, cada região é relacionada à um descritor. O descritor é representado por um vetor, onde cada valor do vetor é referente a uma das direções de um dos histogramas. Este processo é apresentado pela figura abaixo:
+
A análise de componentes principais é associada à ideia de redução de massa  de dados, com  menor  perda  possível  da  informação. Procura-se  redistribuir  a variação observada nos eixos originais de forma a se obter um conjunto de eixos ortogonais não correlacionados.
  
<center>[[Imagem:Descritores.png‎|500px|Matriz de Histogramas e Descritores]]</center>
+
Esta técnica é utilizada neste trabalho com o objetivo de otimizar a extração das características das regiões de interesse e consequentemente aumentar a precisão dos sistema de detecção e reconhecimento de placas de sinalização.
  
'''Análise de Componentes Principais (PCA)'''
+
'''SVM'''
 +
 
 +
Uma Máquina de vetores de suporte (Support vector machine -SVM) é uma técnica de aprendizagem utilizada para classificação de classes binárias. Os resultados da aplicação desta técnica são comparáveis e muitas vezes superiores aos obtidos por outros algoritmos de aprendizado como as Redes Neurais Artificiais (RNAs). Exemplos de aplicações de sucesso podem ser encontradas na categorização de textos, reconhecimento de imagens e na Bioinformática.
 +
O objetivo do algoritmo é encontrar a melhor escolha para um hiperplano que classifica os dados de entrada em duas classes distintas. Os fatores mais importantes são as margens entre o hiperplano e os dados adjacentes ao hiperplano, correspondentes à cada classe.
  
 +
'''Resultados'''
  
 +
Os resultados alcançados estão apresentados pela tabela 1:
  
 +
<center>[[Imagem: results_pca-sift.png|400px]]</center>
 +
<center>'''Tabela 1  - Resultados'''</center>
  
 +
'''Referências'''
  
  
Linha 116: Linha 130:
 
Inclua aqui suas anotações
 
Inclua aqui suas anotações
 
{{collapse bottom}}
 
{{collapse bottom}}
 +
 +
{{referências}}

Edição das 21h52min de 21 de março de 2017

Uma câmera no painel do carro filma (ou tira fotos) da estrada. Via processamento de imagem, as placas de sinalização são detectadas pelo sistema, que emite um aviso ao motorista. Trabalho feito em MATLAB.

Revisão bibliográfica

Sistemas diversos

Anotações do artigo

O trabalho proposto segue uma linha bem diferente dos demais trabalhos feitos anteriormente para o mesmo intuito. Foi um dos primeiros trabalhos a não utilizar técnicas baseadas na visão, ou seja, técnicas que utilizam o processamento de imagens provenientes de câmeras acopladas ao sistema. Por isso, o presente trabalho não está sujeito aos obstáculos enfrentados por estas técnicas como problemas relacionados às condições de tempo, luminosidade, ângulo, etc, que devem ser contornados na detecção e reconhecimento de placas de sinalização.

A técnica utilizada envolve o uso de uma arquitetura Cliente-Servidor da qual o veículo (cliente) envia requisições periódicas, contendo informações de posição geográfica (GPS), para uma base de dados (servidor). A base de dados que contém armazenada toda a informação referente as placas de sinalização em uma determinada região incluindo: posição geográfica, nome das ruas e uma breve descrição do conteúdo de cada placa, responde a requisição indicando qual placa de sinalização possui maior proximidade no ângulo de deslocamento do veículo. Para isso, o lado servidor aplica um algoritmo de filtragem que utiliza o deslocamento do veículo para extrair a placa que mais se adequa à situação.

Vantagens

Se comparado à outros sistemas com as técnicas de detecção como Histograma de Gradientes Orientados (HOG) ou Regiões de Máxima Estabilidade (MSER), o trabalho proposto possui uma latência, pois ignora as influências do ambiente e as condições do tráfego. O gráfico abaixo apresenta a relação entre os sistemas e o tempo de latência.

Fonte: Próprio Artigo
Fonte: Próprio Artigo

Desvantagens

Apesar de possuir baixa latência, a taxa de acerto do sistema depende totalmente da precisão do GPS utilizado. Caso ocorra o envio de uma posição diferente da posição do veículo, mesmo em dezenas de metros, o sistema pode responder a requisição com uma placa de sinalização incorreta.

Outra questão é que para o perfeito funcionamento do sistema, é requerido um link de boa confiabilidade e taxas de transmissão e recepção aceitáveis.

Via processamento de imagens

Anotações do artigo

O seguinte trabalho propõe um sistema de detecção e reconhecimentos de placas de sinalização dando foco na extração das características das regiões de interesse, especialmente na otimização utilizando o algoritmo Scale-Invariant Feature Transform (SIFT) através do procedimento de análise de componentes principais (Principal Component Analysis - PCA). Na etapa de classificação é utilizada a técnica de Máquinas de Vetores de Suporte (SVM).

SIFT

O SIFT(Scale-Invariant Feature Transform) é uma técnica utilizada para detecção e extração de regiões de interesse que são praticamente invariáveis a mudanças de iluminação, ruído, rotação e escala. Após a detecção das regiões de interesse (chamadas neste trabalho como pontos-chave) em uma imagem, é criado um descritor para cada região. Estes descritores são comparados entre si e possibilita o casamento entre diferentes imagens contendo o mesmo objeto. O algoritmo que executa esta técnica é apresentado pelos seguintes passos:

  • Criação da pirâmide de imagens: O primeiro passo do algoritmo é criação uma pirâmide de imagens ou uma pirâmide Gaussiana. É aplicado sobre a imagem original sucessivas convoluções com um filtro gaussiano de fator σ multiplicado por uma constante k (0,k,2k,...). Essas convoluções irão gerar imagem de resolução menos (ou com efeito blur) formando as denominadas oitavas. A partir das oitavas são gerados os intervalos, onde cada intervalo é a diferença entre duas oitavas (aproximação do Laplaciano da Gaussiana)[1]. A figura 1 abaixo apresenta o espaço de escala e a diferença das Gaussianas. A figura 2 apresenta a aplicação deste processo sobre uma imagem.
PiramideGaussiana.png
Figura 1 - Pirâmide Gaussiana
Fonte: [2]
Filtros gaussiano.png
Extremos max min.png
Figura 2 - Aplicação em uma imagem
Fonte: Próprio artigo
  • Localização dos pontos chaves: Os pontos chaves são encontrados comparando-o com os pontos vizinhos em uma mesma imagem e nas imagens acima e abaixo. O objetivo identificar os pontos máximos (regiões totalmente pretas envoltas por áreas brancas) e pontos mínimos (regiões brancas envoltas por área pretas) dos quais serão utilizados para a próxima etapa e eliminar os pontos ruins, no caso, aqueles que possuem baixo contraste ou são localizados nas arestas[3].
  • Orientação do ponto-chave: É encontrado dentro da área do ponto-chave os gradientes e orientações de cada pixels. Esse valores são acumulados em um histograma de 36 posições. É determinado o ponto máximo do histograma e é atribuído essa orientação para o ponto-chave.
  • Criação dos descritores locais: Por fim, para cada ponto chave é estabelecido um descritor para cada ponto-chave. Através de uma janela 16x16 ao redor do ponto, é criado novamente um histograma para cada região. A união destes histogramas unidos em um só vetor de 128 dimensões formará o descritor do ponto-chave.

Essas informações extraídas serão utilizadas posteriormente para a classificação.

Análise de Componentes Principais (PCA)

A análise de componentes principais (Principal Component Analysis) é uma técnica estatística que consiste em transformar um conjunto de variáveis em outro conjunto de mesma dimensão denominadas de componentes principais. Os componentes principais apresentam propriedades importantes: cada componente principal é uma combinação linear de todas as variáveis originais, são independentes entre si e estimados com o propósito de reter, em ordem de estimação, o máximo de informação, em termos da variação total contida nos dados<ref>VARELLA, C. A.Análise de componentes principais. Seropédica: Universidade Federal Rural do Rio de Janeiro, 2008<\ref>.

A análise de componentes principais é associada à ideia de redução de massa de dados, com menor perda possível da informação. Procura-se redistribuir a variação observada nos eixos originais de forma a se obter um conjunto de eixos ortogonais não correlacionados.

Esta técnica é utilizada neste trabalho com o objetivo de otimizar a extração das características das regiões de interesse e consequentemente aumentar a precisão dos sistema de detecção e reconhecimento de placas de sinalização.

SVM

Uma Máquina de vetores de suporte (Support vector machine -SVM) é uma técnica de aprendizagem utilizada para classificação de classes binárias. Os resultados da aplicação desta técnica são comparáveis e muitas vezes superiores aos obtidos por outros algoritmos de aprendizado como as Redes Neurais Artificiais (RNAs). Exemplos de aplicações de sucesso podem ser encontradas na categorização de textos, reconhecimento de imagens e na Bioinformática. O objetivo do algoritmo é encontrar a melhor escolha para um hiperplano que classifica os dados de entrada em duas classes distintas. Os fatores mais importantes são as margens entre o hiperplano e os dados adjacentes ao hiperplano, correspondentes à cada classe.

Resultados

Os resultados alcançados estão apresentados pela tabela 1:

Results pca-sift.png
Tabela 1 - Resultados

Referências


Anotações do artigo

Inclua aqui suas anotações

Anotações do artigo

Inclua aqui suas anotações

Anotações do artigo

Inclua aqui suas anotações

Anotações do artigo

Inclua aqui suas anotações

Anotações do artigo

Inclua aqui suas anotações

Anotações do artigo

Inclua aqui suas anotações

Anotações do artigo

Inclua aqui suas anotações

Anotações do artigo

Inclua aqui suas anotações

Anotações do artigo

Inclua aqui suas anotações

Referências

  1. COUTINHO, D.P.; MARROQUIM R. SIFT - Scale Invariant Feature Transform. LCG Computer Graphics Lab, Universidade Federal do Rio de Janeiro, 2013
  2. COUTINHO, D.P.; MARROQUIM R. SIFT - Scale Invariant Feature Transform. LCG Computer Graphics Lab, Universidade Federal do Rio de Janeiro, 2013
  3. BELO, F. A. Desenvolvimento de Algoritmos de Exploração e Mapeamento Visual para Robôs Móveis de Baixo Custo. Diss. PUC-Rio, 2006.