Vis�o Computacional by AT74O7

VIEWS: 8 PAGES: 47

									        Visão Computacional

          Features (características)
http://www.dca.ufrn.br/~lmarcos/courses/visao
                 Sinopse
• Conceito de features
• Arestas, contornos, curvas
• Features não geométricas
•
         O que são features?
• Feature global
  – Uma propriedade global de uma imagem ou
    parte dela, por exemplo, média dos níveis de
    cinza, área em pixel.
• Feature local
  – Parte de uma imagem com propriedades
    especiais, por exemplo, um círculo, uma linha,
    ou uma região com textura numa imagem de
    intensidade, uma superfície plana numa
    imagem de profundidade
                 Definição
• Features (características) de imagem são
  partes detectáveis locais da imagem com
  algum significado (meaningful)
• Seqüência de operações iniciais dos
  sistemas de visão:
  – Detecção (realce) de features
  – Localização de features
     Significado (meaningful)
• Associadas a elementos de interesse na cena
  via o processo de formação de imagens
  – Variação alta da intensidade causada pelos
    contornos
  – Regiões com nível de intensidade uniforme
  – Algumas vezes procuramos features que não se
    traduzem a alguma característica na imagem
    mas refletem arranjos particulares dos pixels
    com certas propriedades desejadas (invariância,
    coisas fáceis de detectar).
                Detectáveis
• Deve existir um algoritmo de localização,
  caso contrário, a feature não serve para nada
• Features diferentes são associadas a
  algoritmos de detecção diferentes;
• A saída geralmente são os descritores das
  features, especificando posição e outras
  propriedades essenciais da feature.
  – Ex: descritor de linha contém o ponto central,
    seu tamanho e orientação.
            Arestas (bordas)
• São pixels (ou regiões) da imagem onde o
  valor da intensidade possui uma variação
  brusca
• Problema de detecção de arestas:
  – dada uma imagem (considere com erro),
    localizar as arestas geradas pelos elementos da
    cena (não pelo erro)
      Por que aresta interessa?
• Contornos de elementos de interesse na
  cena
  – objetos sólidos, marcas em superfícies, sombras
  – Linhas, curvas e contornos (elementos básicos
    para muitos algoritmos) são cadeias de pixels
    de arestas
  – Line drawing (wire frame) é são imagens
    comuns e sugestivas para seres humanos
                  Algoritmo
• Suavização do ruído
  – suprimir ruídos sem destruir arestas
  – assumir ruído branco ou gaussiano
• Realce de arestas
  – projetar um filtro que responda a arestas
  – valor alto nas arestas e baixo fora delas
• Localização de arestas
  – decidir que máximos locais no filtro são arestas
     • afinar arestas grossas para um pixel de largura
     • estabelecer um valor mínimo para aresta (treshold)
    Detetor de arestas de Canny
• Seja f(x,y) uma imagem, com ruído branco
  ou gaussiano
• Para eliminar (ou diminuir) ruído, convoluir
  com o filtro gaussiano
         Gaussiano
Espaço               Freqüência
Gradiente do Gaussiano
Espaço          Freqüência
Laplaciano do Gaussiano
Espaço           Freqüência
                   Canny
• Então f*g suprime erro antes da detecção de
  arestas, ou seja, limita f em banda, mas
  ainda é uma boa aproximação de f
• Então, para detectar arestas, basta aplicar
  diferenciação
                  Canny
• Como o filtro gaussiano é linear, leva-se a
  diferenciação para a máscara da gaussiana e
  então aplica-se o resultado (outra máscara)
  à imagem original.



• O resultado é o mesmo que se fosse
  primeiro suavizado e depois diferenciado.
        Algoritmo de Canny

• Aplicar CannyEnhancer a I(i,j)

• Aplicar NonMaxSuppression ao resultado

• Aplicar HysteresisThresh ao resultado
       Função CannyEnhancer
• Aplicar suavização gaussiana a I(i,j) (filtro
  linear com kernel gaussiano discretizado)
                     J=I*G
• Para cada pixel (i,j):
  – a) calcule as componentes do gradiente Jy e Jx
  – b) estime a magnitude da aresta (strenght)
               Es(i,j)=(Jx2(i,j)+Jy2(i,j))1/2
  – c) estime a orientação da normal da aresta
                  E(i,j)=atan2(Jy,Jx)
    Função NonMaxSuppresion
• Considere as direções dk = 0, 45, 90, 135o
• Para cada pixel em es(i,j)
  – ache a direção dk que melhor aproxima a
    direção de E(i,j) (a normal à aresta)
  – se Es(i,j) for menor que pelo menos um dos dois
    vizinhos ao longo de dk faça In(i,j)=0
    (supressão); caso contrário, faça In(i,j)= Es(i,j)
• Saída é imagem In(i,j) de pontos de arestas
  afinadas, isto é, Es(i,j) após supressão de
  pontos de aresta não máximos (max. locais)
   Eliminando máximos locais
          (tresholding)
• A imagem afinada ainda contém máximos
  locais criados por erro
• Uma idéia seria descartar pixels com
  valores menor que um treshold. Problemas:
  – se tentarmos capturar arestas verdadeiras que
    sejam fracas, algum erro pode ainda passar
    (contornos falsos)
  – os valores dos máximos verdadeiros podem
    flutuar ao longo de uma aresta, acima e abaixo
    do treshold, fragmentando a aresta resultante.
       Função HysteresisTresh
• Entrada é a imagem In(i,j), E(i,j) e l e h,
  dois tresholds l<h
• Para todos os pontos em In(i,j), passando
  numa ordem fixa:
   – localiza próximo pixel não visitado In(i,j) > h
   – começando de In(i,j), tente achar uma cadeia de
     máximos locais conectados em ambas as
     direções perpendiculares à normal à aresta
     desde que In(i,j) > l.
   – Marque todos os pontos visitados e salve a lista
     das posições dos pixels no contorno conectado
     encontrado.
          Saída do algoritmo
• Conjunto de listas de arestas, cada uma
  descrevendo a posição de um contorno
  conectado na imagem
• Imagem de orientação
• Imagem de magnitude
             Generalidades
• Hysteresis reduz probabilidade de falsos
  contornos, uma vez que estes devem
  produzir uma resposta maior que h para
  ocorrerem
• Reduz probabilidade de quebra, requerendo
  flutuações muito maiores que no caso de
  simples thresholding
• Tracking de arestas, achando máximos em
  arestas conectados, ou contornos conectados
Algoritmo RobertsEdgeDetector
      (Input: imagem I(i,j) e treshold )
• Aplique remoção de ruídos caso deseje (Is)
• filtrar Is(i,j) com as máscaras de roberts
                     1-1       -1 1
                    -1 1        1-1
  obtendo duas imagens I1(i,j) e I2(i,j)
• estime a magnitude do gradiente em cada
  pixel como
              G(i,j)=(I12(i,j)+I22(i,j))1/2
• marque como aresta todos o pixels em que
  G(i,j)>.
  Algoritmo SobelEdgeDetector
• Mesmo que Roberts, exceto as máscaras do
  segundo passo




• Prewitt: similar
          Detectando cantos
• Considere o gradiente espacial da imagem
  dado por (Ex,Ey)t , com Ex=E/x e
  Ey=E/y;
• Considere um pixel p genérico na imagem,
  uma vizinhança Q de p e uma matriz C:
            Ex2 ExEy
      C=
           ExEy Ey2
  onde as somatórias são tomadas sobre a
  vizinhança Q.
• A matriz C caracteriza a estrutura dos níveis
  de cinza da imagem, em cada pixel.
    Auto-valores e auto-vetores
• A matriz C é simétrica, portanto pode ser
  diagonalizada por uma rotação do eixo de
  coordenadas, sem perda de generalidades:
          1 0
      C=
          0    2
Os dois auto-valores 1 e 2 são não negativos
  (assumamos 1 > 2).
 Interpret. geométrica de 1 e 2
• 1) Considere uma vizinhança Q uniforme: o
  gradiente desaparece em toda a vizinhança,
  C vira uma matriz nula e 1=2=0
• 2) Assuma que Q contém um aresta degrau
  ideal preto para branco; temos então 2=0,
  1>0 e o auto-vetor associado com 1 é
  paralelo ao gradiente da imagem
• O posto (rank) de C é deficiente nos dois
  casos (0 e 1, respectivamente).
 Interpret. geométrica de 1 e 2
• 3) Considere que Q contém o canto de um
  quadrado preto contra um fundo branco:
  como tem duas direções principais em Q,
  espera-se que 1>2>0 e que quanto maior
  forem, mais forte (maior contraste) serão as
  linhas da imagem correspondente
• Posto de C é 2
 Interpret. geométrica de 1 e 2
• Auto-vetores codificam direções das arestas
  e auto-valores codificam sua magnitude.
• Um canto é identificado por duas arestas
  fortes, então sendo 1>2, um canto é uma
  localização onde o menor deles é grande
          Algoritmo Corners
(Input: I(x,y), threshold 2,  e tamanho de Q)
• Calcule o gradiente na imagem I(x,y)
• Para cada pixel p:
  – a) componha a matriz C numa vizinhança 2n+1
  – b) calcule 2, o menor dos auto-valores de C
  – c) se 2>, salve coordenadas de p numa lista L
• Ordene L em ordem decrescente de 2
• Passando na lista (ordenada), para cada
  ponto corrente p, apague todos os pontos
  que aparecem depois na lista mas que
  pertençam também à vizinhança de p.
             Generalidades
• O threshold  pode ser estimado a partir do
  histograma de 2.
• O tamanho da vizinhança Q não é trivial,
  não havendo um critério para sua definição.
• Experiências indicam um tamanho entre 2 e
  10 como sendo adequado na maioria dos
  casos práticos
Operadores de textura Frei e Chen
• A probabilidade de operadores de aresta
  encontrarem uma evidência zero de uma
  aresta em qualquer lugar da imagem é muito
  pequena, devido ao ruído superposto em
  variações de baixa freqüência
• Algumas vezes, gradiente não funciona
  como esperado
    Operadores de Frei e Chen
• Considere o conjunto de operadores:
     Operadores de Frei e Chen
• Seja gk = f * hk, então:




• Definindo


• Se >threshold, reporte/rotule aresta
Magnitude do gradiente
           x
Threshold de Frei-Chen
    Detecção de linhas e curvas
• Dada a saída de um operador de arestas,
  encontrar todas as instâncias de uma dada
  curva (linha ou elipse) ou parte dela
  (segmentos de linha ou arcos de elipses)
• Agrupamento
  – Quais pontos da imagem compõem cada
    instância da curva alvo na imagem
• Model fitting
  – Dado um conjunto de pontos na imagem
    provavelmente pertencente a uma instância
    única da curva alvo, encontrar a melhor curva
    que interpola os pontos
Transformada de Hough (linhas)
• Transforma detecção de linhas em um
  problema de interseção de linhas
• Qualquer linha y=mx+n é identificada por
  um par (m,n), representada por um ponto no
  plano (m,n) , o espaço de parâmetros
• Por outro lado, qualquer ponto p=(x,y) na
  imagem corresponde a uma linha n=-mx+y
  no espaço de parâmetros
• Variando (m,n), pode-se representar todas
  as linhas possíveis que passam em p
Transformada de Hough (linhas)
• Uma linha definida por k pixels colineares
  p1,...pk, é identificada no espaço de
  parâmetros pela interseção das linhas
  associadas a p1,...,pk
   x                      n
                p2
           p1    
   n


 m=tan              y                    m
Transformada de Hough (linhas)
• Basta transformar interseção de linhas em
  um problema de detecção de pico,
  procurando por um máximo de interseções
• Dividir o plano (m,n) numa grade discreta
  (resolução depende da precisão desejada)
• Associar um contador a cada célula,
  inicialmente zero para todas
                Exemplo
• Seja apenas uma linha (m´,n´) na imagem,
  formada pelos pontos p1,...,pk
• Para cada pixel pi, incremente todos os
  contadores na linha correspondente no
  espaço de parâmetros
• Todas as linhas r1,...,rk no espaço de
  parâmetros associadas a p1,...,pk terão os
  mesmos parâmetros (m´, n´), de modo que
  c(m´,n´) = k e os contadores das outras
  linhas são 1.
• Basta então achar o pico de c(m,n)
                    Na prática
    y=mx+n                       n=-mx+y
y                         n
2
               m=1         1
1              n=0

     1     2    x                 1      m

     x=1                      n=-m+1
                              m=0, n=1
     y=1
                              m=1,n=0

     x=2                      n=-2m+2
     y=2                      m=0, n=2
                              m=1,n=0
       Problemas com m e n
• Como manter m e n (que são infinitos)
  dentro de uma resolução desejada
  (discreto), de modo a não perder linhas?
• O par (m,n) não captura a linha x=c (com c
  constante)
            Representação polar
• Usar representação polar: =x cos+y sin,
  onde  representa a distância entre a origem
  da imagem e a linha e  a sua orientação
• Os parâmetros  e  são finitos e podem
  representar qualquer linha
   x
                p2               x
                                               p2
           p1                        p1            
   n
                                

 m=tan                  y
                             =x cos+y sin            y
     Detecção de várias linhas
• Arestas na imagem podem ter varias linhas
• Encontrar todas: olhar para todos os
  máximos locais em c(m,n)
• Pontos em curvas ou ruídos geram pontos
  randômicos no espaço (m,n).
• Basta passar um threshold
• Ruídos
       Algoritmo HoughLines
 Input: E(i,j), d<=(M2+N2)1/2,d [0,] e R,T
• Discretize espaço de parâmetros de  e 
  nos vetores d e d usando passos  e 
• Seja A(R,T) matriz de contadores,em zero
• Para cada pixel E(i,j)=1, e para h=1,...,T
  – faça =i cosd(h)+j sind(h)
  – ache o índice k, do elemento de d mais
    próximo de 
  – incremente A(k,h)
• Encontre todos os máximos locais (kp,hp),
  tais A(kp,hp)>, trhreshold def. pelo usuário
                 HoughCurves
  Input: Seja f(x,a) parametrizacao da curva
• Discretize os intervalos de variação de a1, ..., ap.
  Sejam s1, ..., sp os tamanhos dos intervalos
  amostrados
• Seja A(s1, ..., sp) um vetor de contadores inteiros,
  inicialmente em zero
• Para cada pixel E(i,j)=1, incremente todos os
  contadores na curva definida por y=f(x,a) em A
• Encontre todos os máximos locais am tais que
  A(am)>, o trhreshold definido pelo usuário
                 Homework
• Implemente os algoritmos de deteção de arestas de
  Sobel, Prewit, Roberts, Chen e Frei.
• Implemente o algoritmo de detecção de cantos do
  livro do Trucco.
• Implemente os filtros Gaussiano, Gradiente do
  Gaussiano e Laplaciano do Gaussiano.
• Teste a transformada de hough para linhas (use
  uma implementação já existente).
• Faça um relatório, iincluindo as máscaras usadas
  de cada filtro, bem como as imagens resultantes.
  Comente os resultados.

								
To top