visão computacional features (características) lmarcos/courses/visao
TRANSCRIPT
![Page 1: Visão Computacional Features (características) lmarcos/courses/visao](https://reader035.vdocuments.mx/reader035/viewer/2022062512/552fc111497959413d8c604c/html5/thumbnails/1.jpg)
Visão Computacional
Features (características)
http://www.dca.ufrn.br/~lmarcos/courses/visao
![Page 2: Visão Computacional Features (características) lmarcos/courses/visao](https://reader035.vdocuments.mx/reader035/viewer/2022062512/552fc111497959413d8c604c/html5/thumbnails/2.jpg)
Sinopse
• Conceito de features
• Arestas, contornos, curvas
• Features não geométricas
•
![Page 3: Visão Computacional Features (características) lmarcos/courses/visao](https://reader035.vdocuments.mx/reader035/viewer/2022062512/552fc111497959413d8c604c/html5/thumbnails/3.jpg)
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
![Page 4: Visão Computacional Features (características) lmarcos/courses/visao](https://reader035.vdocuments.mx/reader035/viewer/2022062512/552fc111497959413d8c604c/html5/thumbnails/4.jpg)
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
![Page 5: Visão Computacional Features (características) lmarcos/courses/visao](https://reader035.vdocuments.mx/reader035/viewer/2022062512/552fc111497959413d8c604c/html5/thumbnails/5.jpg)
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).
![Page 6: Visão Computacional Features (características) lmarcos/courses/visao](https://reader035.vdocuments.mx/reader035/viewer/2022062512/552fc111497959413d8c604c/html5/thumbnails/6.jpg)
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.
![Page 7: Visão Computacional Features (características) lmarcos/courses/visao](https://reader035.vdocuments.mx/reader035/viewer/2022062512/552fc111497959413d8c604c/html5/thumbnails/7.jpg)
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)
![Page 8: Visão Computacional Features (características) lmarcos/courses/visao](https://reader035.vdocuments.mx/reader035/viewer/2022062512/552fc111497959413d8c604c/html5/thumbnails/8.jpg)
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
![Page 9: Visão Computacional Features (características) lmarcos/courses/visao](https://reader035.vdocuments.mx/reader035/viewer/2022062512/552fc111497959413d8c604c/html5/thumbnails/9.jpg)
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)
![Page 10: Visão Computacional Features (características) lmarcos/courses/visao](https://reader035.vdocuments.mx/reader035/viewer/2022062512/552fc111497959413d8c604c/html5/thumbnails/10.jpg)
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
![Page 11: Visão Computacional Features (características) lmarcos/courses/visao](https://reader035.vdocuments.mx/reader035/viewer/2022062512/552fc111497959413d8c604c/html5/thumbnails/11.jpg)
Gaussiano
Espaço Freqüência
![Page 12: Visão Computacional Features (características) lmarcos/courses/visao](https://reader035.vdocuments.mx/reader035/viewer/2022062512/552fc111497959413d8c604c/html5/thumbnails/12.jpg)
Gradiente do Gaussiano
Espaço Freqüência
![Page 13: Visão Computacional Features (características) lmarcos/courses/visao](https://reader035.vdocuments.mx/reader035/viewer/2022062512/552fc111497959413d8c604c/html5/thumbnails/13.jpg)
Laplaciano do Gaussiano
Espaço Freqüência
![Page 14: Visão Computacional Features (características) lmarcos/courses/visao](https://reader035.vdocuments.mx/reader035/viewer/2022062512/552fc111497959413d8c604c/html5/thumbnails/14.jpg)
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
![Page 15: Visão Computacional Features (características) lmarcos/courses/visao](https://reader035.vdocuments.mx/reader035/viewer/2022062512/552fc111497959413d8c604c/html5/thumbnails/15.jpg)
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.
![Page 16: Visão Computacional Features (características) lmarcos/courses/visao](https://reader035.vdocuments.mx/reader035/viewer/2022062512/552fc111497959413d8c604c/html5/thumbnails/16.jpg)
Algoritmo de Canny
• Aplicar CannyEnhancer a I(i,j)
• Aplicar NonMaxSuppression ao resultado
• Aplicar HysteresisThresh ao resultado
![Page 17: Visão Computacional Features (características) lmarcos/courses/visao](https://reader035.vdocuments.mx/reader035/viewer/2022062512/552fc111497959413d8c604c/html5/thumbnails/17.jpg)
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)+Jy
2(i,j))1/2
– c) estime a orientação da normal da aresta
E(i,j)=atan2(Jy,Jx)
![Page 18: Visão Computacional Features (características) lmarcos/courses/visao](https://reader035.vdocuments.mx/reader035/viewer/2022062512/552fc111497959413d8c604c/html5/thumbnails/18.jpg)
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)
![Page 19: Visão Computacional Features (características) lmarcos/courses/visao](https://reader035.vdocuments.mx/reader035/viewer/2022062512/552fc111497959413d8c604c/html5/thumbnails/19.jpg)
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.
![Page 20: Visão Computacional Features (características) lmarcos/courses/visao](https://reader035.vdocuments.mx/reader035/viewer/2022062512/552fc111497959413d8c604c/html5/thumbnails/20.jpg)
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.
![Page 21: Visão Computacional Features (características) lmarcos/courses/visao](https://reader035.vdocuments.mx/reader035/viewer/2022062512/552fc111497959413d8c604c/html5/thumbnails/21.jpg)
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
![Page 22: Visão Computacional Features (características) lmarcos/courses/visao](https://reader035.vdocuments.mx/reader035/viewer/2022062512/552fc111497959413d8c604c/html5/thumbnails/22.jpg)
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
![Page 23: Visão Computacional Features (características) lmarcos/courses/visao](https://reader035.vdocuments.mx/reader035/viewer/2022062512/552fc111497959413d8c604c/html5/thumbnails/23.jpg)
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)=(I1
2(i,j)+I22(i,j))1/2
• marque como aresta todos o pixels em que G(i,j)>.
![Page 24: Visão Computacional Features (características) lmarcos/courses/visao](https://reader035.vdocuments.mx/reader035/viewer/2022062512/552fc111497959413d8c604c/html5/thumbnails/24.jpg)
Algoritmo SobelEdgeDetector
• Mesmo que Roberts, exceto as máscaras do segundo passo
• Prewitt: similar
![Page 25: Visão Computacional Features (características) lmarcos/courses/visao](https://reader035.vdocuments.mx/reader035/viewer/2022062512/552fc111497959413d8c604c/html5/thumbnails/25.jpg)
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
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.
C=
![Page 26: Visão Computacional Features (características) lmarcos/courses/visao](https://reader035.vdocuments.mx/reader035/viewer/2022062512/552fc111497959413d8c604c/html5/thumbnails/26.jpg)
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
0 2
Os dois auto-valores 1 e 2 são não negativos (assumamos 1 > 2).
C=
![Page 27: Visão Computacional Features (características) lmarcos/courses/visao](https://reader035.vdocuments.mx/reader035/viewer/2022062512/552fc111497959413d8c604c/html5/thumbnails/27.jpg)
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).
![Page 28: Visão Computacional Features (características) lmarcos/courses/visao](https://reader035.vdocuments.mx/reader035/viewer/2022062512/552fc111497959413d8c604c/html5/thumbnails/28.jpg)
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
![Page 29: Visão Computacional Features (características) lmarcos/courses/visao](https://reader035.vdocuments.mx/reader035/viewer/2022062512/552fc111497959413d8c604c/html5/thumbnails/29.jpg)
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
![Page 30: Visão Computacional Features (características) lmarcos/courses/visao](https://reader035.vdocuments.mx/reader035/viewer/2022062512/552fc111497959413d8c604c/html5/thumbnails/30.jpg)
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.
![Page 31: Visão Computacional Features (características) lmarcos/courses/visao](https://reader035.vdocuments.mx/reader035/viewer/2022062512/552fc111497959413d8c604c/html5/thumbnails/31.jpg)
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
![Page 32: Visão Computacional Features (características) lmarcos/courses/visao](https://reader035.vdocuments.mx/reader035/viewer/2022062512/552fc111497959413d8c604c/html5/thumbnails/32.jpg)
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
![Page 33: Visão Computacional Features (características) lmarcos/courses/visao](https://reader035.vdocuments.mx/reader035/viewer/2022062512/552fc111497959413d8c604c/html5/thumbnails/33.jpg)
Operadores de Frei e Chen
• Considere o conjunto de operadores:
![Page 34: Visão Computacional Features (características) lmarcos/courses/visao](https://reader035.vdocuments.mx/reader035/viewer/2022062512/552fc111497959413d8c604c/html5/thumbnails/34.jpg)
Operadores de Frei e Chen
• Seja gk = f * hk, então:
• Definindo
• Se >threshold, reporte/rotule aresta
![Page 35: Visão Computacional Features (características) lmarcos/courses/visao](https://reader035.vdocuments.mx/reader035/viewer/2022062512/552fc111497959413d8c604c/html5/thumbnails/35.jpg)
Magnitude do gradiente x
Threshold de Frei-Chen
![Page 36: Visão Computacional Features (características) lmarcos/courses/visao](https://reader035.vdocuments.mx/reader035/viewer/2022062512/552fc111497959413d8c604c/html5/thumbnails/36.jpg)
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
![Page 37: Visão Computacional Features (características) lmarcos/courses/visao](https://reader035.vdocuments.mx/reader035/viewer/2022062512/552fc111497959413d8c604c/html5/thumbnails/37.jpg)
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
![Page 38: Visão Computacional Features (características) lmarcos/courses/visao](https://reader035.vdocuments.mx/reader035/viewer/2022062512/552fc111497959413d8c604c/html5/thumbnails/38.jpg)
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
p1
p2
x
y m
n
n
m=tan
![Page 39: Visão Computacional Features (características) lmarcos/courses/visao](https://reader035.vdocuments.mx/reader035/viewer/2022062512/552fc111497959413d8c604c/html5/thumbnails/39.jpg)
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
![Page 40: Visão Computacional Features (características) lmarcos/courses/visao](https://reader035.vdocuments.mx/reader035/viewer/2022062512/552fc111497959413d8c604c/html5/thumbnails/40.jpg)
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)
![Page 41: Visão Computacional Features (características) lmarcos/courses/visao](https://reader035.vdocuments.mx/reader035/viewer/2022062512/552fc111497959413d8c604c/html5/thumbnails/41.jpg)
Na prática
x
y
m=1n=0
1 2
2
1
m
n
x=1y=1
1
1
n=-mx+y
n=-m+1
y=mx+n
x=2y=2
n=-2m+2 m=0, n=2m=1,n=0
m=0, n=1
m=1,n=0
![Page 42: Visão Computacional Features (características) lmarcos/courses/visao](https://reader035.vdocuments.mx/reader035/viewer/2022062512/552fc111497959413d8c604c/html5/thumbnails/42.jpg)
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)
![Page 43: Visão Computacional Features (características) lmarcos/courses/visao](https://reader035.vdocuments.mx/reader035/viewer/2022062512/552fc111497959413d8c604c/html5/thumbnails/43.jpg)
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
p1
p2
x
y
n
m=tan
p1
p2
x
y
=x cos+y sin
![Page 44: Visão Computacional Features (características) lmarcos/courses/visao](https://reader035.vdocuments.mx/reader035/viewer/2022062512/552fc111497959413d8c604c/html5/thumbnails/44.jpg)
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
![Page 45: Visão Computacional Features (características) lmarcos/courses/visao](https://reader035.vdocuments.mx/reader035/viewer/2022062512/552fc111497959413d8c604c/html5/thumbnails/45.jpg)
Algoritmo HoughLinesInput: 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 cosd(h)+j sind(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
![Page 46: Visão Computacional Features (características) lmarcos/courses/visao](https://reader035.vdocuments.mx/reader035/viewer/2022062512/552fc111497959413d8c604c/html5/thumbnails/46.jpg)
HoughCurvesInput: 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
![Page 47: Visão Computacional Features (características) lmarcos/courses/visao](https://reader035.vdocuments.mx/reader035/viewer/2022062512/552fc111497959413d8c604c/html5/thumbnails/47.jpg)
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.