Aula03 SSC0715 2012(fosorio)

De CoteiaWiki

SSC0715 - SENSORES INTELIGENTES - Agosto 2012

Aula 03 => Processamento de Imagens
*******

1. Segmentação por Tonalidade e Cor (Modelo de Cor)
   Limiar de Intensidade (Brilho: muito claro, muito escuro)
   Modelo de Cor (Estatística: média e desvio padrão)
   Ajuste de Limiares

2. Segmentação por Detecção de Bordas
   Algoritmo usado no Robô SRV1
   Algoritmo de Segmentação baseado no OpenCV
   > Smooth, Laplace/Canny, Limiares/Binarização, Erosão/Dilatação
   > Determinação automática de parâmetros por Aprendizado/Otimização 

3. Segmentação por Extração de BackGround (Modelo de Fundo da Cena)
   Treinamento do Fundo da Cena  (background)
   Segmentação: Separação do Elemento Frontal da Cena (foreground)
   Permite o acompanhamento dos elementos móveis da cena (Tracking)

4. Tracking: Deteção de Atributos/Descritores de Elementos (Robust Features)
   > Algoritmo Harris Corner Detector (deteção de pixels "relevantes" na cena)
   > Algoritmos SIFT e SURF  (invariante posição, escala, orientação e 
     inclusive a variações pequenas de iluminação) - 1 pixel pode ser
     representado por uma assinatura de cerca de 200 bytes (quase única)!  
   
5. Tracking de Movimentação: Fluxo Ótico
   Algoritmo: Método Lucas–Kanade
   Demo OpenCV: lkdemo

>> Tracking por Features => Busca uma "assinatura" na Imagem
   http://en.wikipedia.org/wiki/Feature_detection_(computer_vision)

   - Corners Detectors (Harris) 
   - Dectores de Retângulos e de Círculos (Hough Transform)
   - Detecção de Blocos (regiões) 
   - Histogram Match
   - NCC: Normalized Cross-Correlation
   - Mean Shift
   - Detecção de Features Invariantes
   - SIFT
   
Referências Complementares:

Trabalhos Orientados por F.Osório (docs disponíveis)
> Correlação: Leandro Facchinetti/Histogram (IC), Eduardo Righes/NCC (TCC)
> SIFT/SURF: Rafael Jeffman (Mestrado), Leandro Couto (Mestrado)
> Detecção de Bordas: Ignácio Magalhães (TCC), Matheus Compri (IC)
> Modelos de Cores: Túlio Bender (Mestrado)

======================================================================

1. Segmentação por Tonalidade e Cor (Modelo de Cor)
   Limiar de Intensidade (Brilho: muito claro, muito escuro)
   Modelo de Cor (Estatística: média e desvio padrão)
   Ajuste de Limiares

Demos/Programas Exemplo:

>> Exibindo um arquivo de Imagens (JPG, PNG, ...)
   Show-imagem.cpp  [parâmetro: nome do arquivo]

>> Exibindo a captura de uma Câmera (WebCam). 
   OpenCV adquire imagens compatíveis com o V4L (video for Linux) 
   Show-camera.cpp  [parâmetro: nro. da câmera]

>> Aplicando um limiar para seleção e alteração de cores na WebCam (limiar)
   em tempo real. O programa permite acessar os pixels da imagem obtida
   a partir de uma WebCam (ou de qualquer imagem no OpenCV usando IPLImage).
   As Cores próximas ao preto (muito escuras, com valores baixos) < 40 em R,G,B 
      => Troca para Vermelho (0,0,255) na notação BGR adotada pelo OpenCV
   As Cores próximas ao branco (muito claras, com valores altos) > 220 
      => Troca para Azul (255,0,0)
   Note que os limiares foram definidos de modo empírico (a mão)
   Show-change.cpp  

>> Aplicando um limiar para seleção de cores por limiar em Vídeo
   Binarização da Imagem (Similar ao Show-Change porem aplicado em um vídeo)
   Show-avi-change.cpp

>> Segmentação Por Intenside: Show-change é um exemplo desta técnica.

>> Segmentação Por Cor: modelo de cores RGB (poderia ser baseado no HSV)

   1. Selecionar uma região
      mouse-box.cpp  => Exemplo de como selecionar um retângulo com mouse
      roi.cpp        => Definindo uma Região de Interesse no OpenCV (ROI)
      draw-lines.cpp => Exemplo de como desenhar linhas na tela
 
   2. Recortar a região selecionada: gera um arquivo denominado out.png
      Select.cpp     => Exemplo de uma selação interativa de uma região a
                        ser recortada da imagem

   3. Dada uma região selecionada (ROI) é possível usar funções para 
      estimar medidas (estatísticas) sobre o modelo de cores desta
      região (modelo => média e desvio padrão RGB ou HSV)
      Stats.cpp      => Exemplo de determinação da média e desvio das cores

   4. Segmentar a região baseado no modelo: baseado no modelo extraído do 
      arquivo out.png realiza a segmentação de uma imagem (colors.jpg)
      Stats1.cpp

AULA 03 - REFERÊNCIAS COMPLEMENTARES:

  • BGSlibrary
 OpenCV C++ Background Subtraction Library 
 [1]

  • Wikipedia: Feature Detection
 [2]
  • SIFT
 [3]
 [4]
 [5]
  • Material de Aula:
 [6]

Atualizado em 20/08/2012
F.Osório

Voltar para Material_SSC0715_2012(fosorio)