ine 53xx

Programa

Links

Bibliografia

Plano de Ensino

Reconhecimento de Padrões 

5. Gerando Padrões: Análise de Sinais e Imagens

  1. Imagens para o Trabalho Final: Sistema de Vigilância Eletrônica
  2. Processamento Passo I: Detectando Diferenças entre Imagem-Modelo e Imagem Atual geradas por Movimento na Cena
  3. Processamento Passo II: Eliminando Ruídos gerados por Movimento da Câmera e Isolando os Objetos através de Morfologia Matemática
  4. Processamento Passo III: Calculando Atributos dos Objetos para Realizar a Classificação destes
Passos para o Trabalho Final de RP - Sistema de Vigilância Eletrônica
Parte I I - Eliminando Ruídos gerados por Movimento da Câmera e Isolando os Objetos 
através de Morfologia Matemática

Depois que nós geramos uma imagem binarizada a partir da diferença entre as imagens modelo e atual, a qual contém as diferenças relevantes entre a imagem-modelo e uma imagem qualquer, temos de eliminar ruídos (como por exemplo os reflexos variáveis na janela de cima) e os artefatos originados pelo movimento da câmera (visíveis sob a forma de traços verticais e horizontais). A imagem abaixo ilustra bem os problemas que enfrentamos:

As setas vermelhas indicam artefatos de movimento verticais e horizontais e os reflexos na janela são bastante visíveis à esquerda, em cima. A grande maioria destes ruídos possue características similares: são finos riscos. A morfologia matemática nos oferece as ferramentas de que necessitamos para eliminar estes artefatos. 

Para eliminar riscos podemos utilizar uma operação de abertura morfológica (erosão seguida de dilatação) com a utilização de um kernel que possua características contrárias às da estrutura que queremos eliminar na imagem. Realizamos uma abertura e não simplesmente uma erosão porque queremos reconstituir o resto da imagem, que não possue estas características. Assim afetamos apenas aquilo que queremos eliminar. 

Para isto utilizamos um kernel também em forma de risco, mas perpendicular ao risco a ser eliminado. Para isso realizamos primeiramente uma abertura com um kernel horizontal, eliminando os riscos verticais, como ilustrado abaixo:

Depois realizamos outra abertura, aplicada ao resultado da anterior, utilizando um kernel vertical, para eliminar riscos horizontais, como mostrado na próxima figura:

O resultado, como pode ser visto, é uma imagem onde o ruído foi quase totalmente eliminado, mas as estruturas "interessantes" foram preservadas. Como trataremos o ruído remanescente veremos mais tarde. Podemos realizar esta filtragem de riscos com um kernel criado por nós e os operações de erosão e dilatação oferecidas pelo pacote MMACH do Khoros, ou então utilizando diretamente uma operação especial para isso, denominada "Opening by a straight line segment", onde podemos parametrizar o kernel com um slider simples:

O parâmetro "angle" permite definir o ângulo do "risco" existente no kernel. Para eliminar ruídos verticais utilizamos um kernel com risco horizontal (angulo = 0), como mostrado na figura. Para riscos horizontais, setamos o ângulo para 90 graus. No workspace-exemplo possuímos dois glifos, um para cada orientação do kernel, realizando esta tarefa.

Juntando os pedaços

Como o método de eliminação de ruídos carece de inteligência e já foi aplicado sobre uma imagem um tanto quanto mutilada através da subtração de imagens realizada anteriormente, muitas coisas da imagem foram perdidas. Para podermos continuar, devemos tentar realizar uma reconstrução dos pedaços que obtivemos como resultados das operações realizadas até o momento. Isto vai facilitar o nosso trabalho, pois no momento temos vários pedaços representando o nosso objeto de interesse.

Isto pode ser realizado com uma operação morfológica de fechamento (dilatação seguida de erosão) realizada com um kernel simétrico em relação a x e a y.  A operação de fechamento tem a propriedade de ligar objetos próximos, porém desconectados, sem afetar o resto da imagem.  Para tanto vamos gerar um kernel circular de tamanho razoável (11 pixel) e aplicar o fechamento utilizando este kernel. Acreditamos que para as imagens que temos nesta aplicação isto será suficiente. O resultado para a imagem acima pode ser visto abaixo:

O resultado parece bastante bom. Unimos a silhueta do intruso à sua sombra, mas isto não era possível de se evitar, pois a informação de sombra é indistinguível de objetos reais quando trabalhamos em imagens de tons de cinza. Se trabalhássemos com imagens coloridas, poderíamos ter tentado ignorar aqueles resultados da subtração de imagens, onde a imagem só escureceu, mas manteve seu tom de cor anterior - mas isso também não funciona sempre. 

Além do intruso, a imagem resultante também contém dois outros objetos, que são ruído.  O próximo passo será classificar os objetos de forma e tentar reconhecer se algum deles é um cão ou um intruso. Isto será visto na próxima página.

Abaixo você pode ver os resultados de se aplicar esta técnica para as outras imagens desta série. Observe que nem todas possuem tanto ruído como esta aqui acima, mas na maioria dos casos isto não afetou o resultado. O cão teve suas patas amputadas na primeira imagem mostrando um cachorro. Isto é quase inevitável em função do filtro de linhas verticais (humanos possuem pernas relativamente mais grossas e não são afetados), mas o objeto resultante possue uma forma tão diferente da de um humano, que isto não deverá colocar problemas. O maior problema surge com o cão branco, que se confunde com a parede e é praticamente eliminado.
 
 
 
Tabela 2: Resultados das operações morfológicas para as imagens-exemplo
Imagem limiarizada após operação morfológica de abertura com kernel horizontal longo e fino para eliminação de linhas verticais perdidas na cena.  Imagem anterior após operação morfológica de abertura com kernel vertical longo e fino para eliminação de linhas horizontais perdidas na cena.  Imagem anterior após operação morfológica de fechamento com kernel circular grande para eliminação de divisões dos objetos da cena. Observe que em muitos casos a sombra do objeto é integrada (um defeito nesta técnica) 


Workspace-Exemplo


 

The Cyclops Project
German-Brazilian Cooperation Programme on IT
CNPq GMD DLR