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 III - Calculando Atributos dos Objetos para Realizar a Classificação dos Mesmos

Depois de encontrar um conjunto de passos de processamento para filtrar suficientemente a imagem para conseguir separar e tornar conexo o objeto de interesse (e mais alguns outros objetos) do resto da imagem, o próximo passo é gerar uma descrição desses objetos, de forma a que possamos classificá-los adequadamente e, caso necessário, reagir a uma situação onde um intruso foi detectado.

A nossa aplicação deverá possuir a capacidade de gerar atributos que permitam classificar os objetos encontrados nas imagens em três categorias distintas:

  1. intruso (ser humano);
  2. animal (cães de guarda);
  3. ruído (qualquer outra coisa).
Para realizar isto, nós vamos tomar a imagem resultante da última operação do passo anterior, o fechamento, e proceder com as seguintes operações:
  1. Realizar uma rotulação das componentes conexas resultantes do fechamento, identificando cada componente como um objeto separado.
  2. Gerar um conjunto de atributos descritores para cada uma dos objetos encontrados. Estes atributos devem ser significativos e descrever características importantes dos objetos, tais como posição de seu centróide, bounding box, componentes principais, inclinação, etc. É neste passo que nós vamos gerar um padrão para ser reconhecido.
  3. Analisar estes atributos para ver quais são característicos os suficiente para cada grupo para serem usados para alimentar um classificador de nossa escolha. Por fim vamos escolher um classificador (rede neural, k-NN, método estatístico, regras, if-then-else programático) para realizar o passo IV: a classificação. Mas isto é por sua conta e só vamos dar um toque no fim desta página.
Rotulação das Componentes

A rotulação é uma operação bastante simples, realizada sobre uma imagem binária, onde o valor dos pixel agrupados é substituído por um valor numérico crescente para cada grupo. Assim cada agrupamento de pixel conexo recebe valores 1, 2, 3, etc. O fundo recebe o valor 0. Se uma imagem possui três objetos resultantes da operação de fechamento, seus pixel serão numerados todos 0 para o fundo, 1 para os pixel da primeira região, 2 para os da segunda e assim por diante. O resultando é uma imagem em pseudo-tons de cinza, como a abaixo:



O valor do tom de cinza corresponde ao número do objeto. Para tornar esta imagem mais fácil de olhar e entender, já que alguns tons de cinza são muito escuros (como por exemplo o segmento 1 no alto, à esuqerda), podemo sgerar uma imagem de pseudo-cores com base nesta imagem, atribuindo-lhe simplesmente uma tabela de cores RGB arbitrária, mas com cores claras e diferentes para todos os valores de pixel. Isto pode ser realizado através do glifo Khoros adeuado, onde se escolhe uma tabela de cores predefinida que contenha preto como cor 0 (para não colorir o fundo), como rainbow ou RGB-spiral, resultando em uma imagem como a abaixo:

Esta imagem é muito mais fácil de entender e os objetos são mais fáceis de visualizar. O ruído que ficou no canto superior esquerdo aqui ficou bastante óbvio. Esta operação não altera a imagem, apenas associa uma tabela de cores a ela. 

Gerar um conjunto de atributos descritores

O próximo passo é extrair atributos descritores de cada um dos objetos da imagem. Isto pode ser realizado através do glifo Shape Analysis, que você vai encontrar no Toolbox Khoros1, em seu menu de glifos. Você pode optar por usar o do workspace-exemplo no fim desta página. O painel de controle deste glifo está exemplificado adiante:

Este método gera vários conjuntos de parâmetros e os armazena em um arquivo-texto, além de gerar imagens com duas versões de eixos principais de cada objeto e com as bordas dos objetos. Vamos inicialmente utilizá-lo no modo default, alterando apenas "Axis Representation" para "Principal Axis" clicando em cima. Os momentos vamos deixar de fora, por enquanto. Na caixa de texto "ASCII File" escreva o nome do arquivo onde você deseja que os parâmetros sejam escritos. 

A imagem de eixos principais é uma imagem onde para cada objeto é desenhada sua componente principal e a sua maior perpendicular. O ponto de cruzamento de ambas é o centro de massa do objeto. Esta imagem tem pouca utilidade para uma classificação automática dos objetos, mas ajuda você a entender o que está sendo representado nos parâmetros produzidos e ajuda também a entender como se comporta cada um dos objetos e se a componente principal dos objetos serve como um discriminante entre categorias ou não. A imagem com as silhuetas é só uma imagem para dar informação adicional. Abaixo um exemplo do eixo principal e da silhueta sobrepostos para a primeira imagem:

Observe que o eixo principal não é necessariamente do mesmo tamanho que a silhueta. Ele é um vetor que reflete a distribuição de massa do objeto.

O arquivo de atributos gerado possui os seguintes valores para cada um dos objetos presentes na imagem:

"Object number  1 "
Entire Image    :  65520 pixels 
Object          :  4167 pixels  //tamanho do objeto
Ratio Obj/Image :  6.36 %       //percentual do total da imagem
Area            :  4.167000e+03 //area do objeto 
Xcenter         :  1.300271e+02 //centro do objeto 
Ycenter         :  1.178683e+02 
Sigma_x         :  2.388712e+01 //variância do objeto 
Sigma_y         :  1.492050e+01 
Theta           :  -9.271203e-02//ângulo da componente principal
Eccentricity    :  6.403376e-01 //excentricidade
Uppermost point :  82           //coordenadas do bounding box
Leftmost point  :  81
Lowest point    :  174
Rightmost point :  147

Aqui não estão incluídos os momentos, que podem também opcionalmente ser calculados para cada objeto da imagem.

Associado a cada imagem de eixos na tabela abaixo está o arquivo de parâmetros gerado para a sua imagem original. Compare-os e veja quais parâmteros você consideraria interessantes de serem levados em conta.  Escolha um conjunto de parâmetros que você acredita descreverem bem as três categorias de objetos que devem ser detectados e utilize um classificador de padrões de sua escolha para realizar a classificação. Discutiremos este assunto em detalhes em aula.
 
 
 
 
Tabela 3: Resultados da rotulação e extração de atributos das imagens
Imagem  rotulada com uma cor arbitrária para cada região conexa. Para detecção de conectividade foi utilizado um operador de vizinhança-de-4.  Imagem mostrando os eixos principais de cada um dos objetos da imagem anterior. Esta imagem é um resultado da extração de atributos utilizando o utilitário provido pelo Khoros. Todos os atributos calculados podem ser visualizados no arquivo-texto associado à imagem, que também é gerado.  Silhueta dos objetos da imagem rotulada. Também gerada pela extração de atributos. Esta informação não é muito útil para a classificação dos objetos, mas serve para mostrar a relação entre o objeto e seu bounding box (aqui inserido manualmente). 


Workspace-Exemplo

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