![]() |
![]() |
|||||||||||||||||
Visão Computacional 1. Representação de Prof. Aldo von Wangenheim |
Marcelo Lemes Bueno
Resumo: O principal objetivo de um sistema de visão computacional é o desenvolvimento de mecanismos que interpretem imagens de maneira eficiente. Desta forma a detecção de bordas é uma ferramenta extremamente importante no processo de análise de imagens. Este trabalho tem como objetivo apresentar um dos algoritmos para detecção de bordas, o detector de bordas canny. As bordas em uma imagem é
o resultado de mudanças em alguma propriedade física ou espacial
de superfícies iluminadas. A maioria das técnicas de detecção
de bordas empregam operadores diferenciais de primeira ou de segunda ordem.
Os operadores diferenciais ressaltam os contornos das bordas mas também
amplificam o ruído da cena. Grande parte dos operadores de borda
utilizam algum tipo de suavização da imagem antes da operação
diferencial. O operador de Marr utiliza uma máscara gaussianica
convoluída com a imagem; o operador de canny também suaviza
a imagem. Isto pode atenuar as bordas fracas, onde o contraste é
pequeno.
Algoritmo Canny O detector de bordas Canny surgiu através dos trabalhos de Marr e Hildreth. Ele é um operador gaussiano de primeira derivada que suaviza os ruídos e localiza as bordas. Para desenvolver este algoritmo, primeiramente concentraram seus estudos em bordas ideais, cuja representação pode ser feita por funções em uma dimensão (1-D). Na prática este não é um modelo exato, mas representa muito bem os efeitos causados pelos ruídos. Considerando a função
gaussianica em uma dimensão, podemos expressar:
a primeira derivada é:
e a segunda derivada é:
A figura abaixo mostra os
gráficos das funções de Gauss (a), a primeira derivada
(b) e a segunda derivada (c).
(a) (b) (c) As funções
bidimensionais (2-D) são melhor expressadas em coordenadas polares
onde
a primeira derivada é
e a segunda derivada é
A figura abaixo mostra os
gráficos das funções em 2-D, de Gauss (a), primeira
derivada (b) e segunda derivada (c).
(a) (b) (c) De fato, a primeira derivada
da imagem convolucionada da função gaussianica,
é equivalente a imagem
convolucionada da primeira derivada da função de Gauss,
Portanto, é possível combinar os estágios de detecção e suavização em uma simples convolução em 1-D, cada convolução com a primeira derivada da função de Gauss e considerando os picos, ou com a segunda derivada considerando os cruzamentos dos zeros. Como exemplo, a figura abaixo
compara as respostas entre um gradiente e a primeira derivada do gradiente
gaussianico para um ruído de borda. A detecção de
borda pode surgir de um simples "thresholding" dos dados da função
situada na posição 5, mas na prática a determinação
final da presença ou ausência de uma borda é mais complexo,
e é comum incluir estágios de pós processamento e
limiarização (thresholding).
Comparação
entre o gradiente e a primeira derivada
O algoritmo Canny baseia-se nas seguintes regras:
Estágio 1 - Uniformização da imagem A imagem é uniformizada
por uma função gaussianica bidimensional (2-D) de tamanho
especificado por um parâmetro usual. Na prática, convoluções
gaussianicas bidimensionais de tamanho elevado, levam muito tempo para
serem processadas, portanto é comum aproximá-las por duas
funções gaussianicas unidimensionais, uma no eixo Estágio 2 – Diferenciação Considerando a convolução
bidimensional apresentada no estágio anterior, a imagem uniformizada
é separada nas direções Considerando também
a aproximação unidimensional apresentada no estágio
1, os valores uniformizados na direção Para somar os valores dos
gradientes de Estágio 3 – Omissão de pontos de mínima intensidade Encontrado a medida da intensidade de cada ponto da imagem, precisa-se localizar agora as bordas. Isso é possível localizando os pontos de máxima intensidade, ou de maneira inversa, pelos pontos de mínima intensidade, que precisam ser omitidos. Um valor de máxima intensidade ocorre no local mais alto da função gradiente ou onde a derivada da função gradiente possui valor zero. Entretanto, desejamos omitir os pontos de mínima intensidade ou pontos de mínimas direções perpendiculares com a borda. Aproximações
são freqüentemente usadas, além da diferenciação
perpendicular para cada borda. Cada pixel em volta forma o centro de um
novo pixel na vizinhança. Interpolando os valores dos pixels ao
redor, as magnitudes dos gradientes são calculados pelos limites
das fronteiras vizinhas em ambas as direções perpendiculares
do pixel central, como mostrado na figura abaixo. Se o pixel considerado
na figura abaixo possuir valor menor do que os valores dos pixels vizinhos,
ele será omitido.
Estágio 4 – Limiarização da borda (threshold) A limiarização usado no algoritmo Canny usa o método chamado "histerese". Considerando um segmento
de borda, para todo valor situado acima do limite superior de limiarização,
ele é imediatamente aceito. Para todo valor situado abaixo do limite
inferior de limiarização, ele é imediatamente rejeitado.
Pontos situados entre os dois limites serão aceitos se eles estiverem
relacionados com pixels que apresentem respostas fortes. As figuras abaixo
mostram aplicações utilizando o operador Canny considerando
diferentes escalas e diferentes limiarizações.
Conclusão O objetivo deste trabalho foi de apresentar de uma forma geral e resumida, a técnica para detecção de bordas conhecida como detector de bordas de Canny. Referências Bibliográficas [ 1 ] J. Canny, A computational approach to edge detection, IEEE Transactions on pattern analysis and machine intelligence, 8(6), pp 679 – 698 (1986). [ 2 ] R.C.Gonzalez, R.E.Woods, Digital Image Processing, Addison – Wesley publishing company, 1992. [ 3 ] Digital Image Processing: W. K. Pratt – A Willey Intercience Publication 1991 2nd edition. [ 4 ] Digital Image Processing: R.C.Gonzalez, Paul Wintz, Addison-Wesley Publishing Company 1987. [ 5 ] Carme Torras, Computer
Vision Theory and Industrial Applications, Springer – Verlag, 1992.
|
|||||||||||||||||
![]() |
![]() |
![]() |