Anda di halaman 1dari 5

Comunicado 96 Tcnico

ISSN 1677-9274

Dezembro, 2008 Campinas, SP

Filtro de Canny para deteco de bordas: implementao Java

Jos Iguelmar Miranda Joo Camargo Neto2


O objetivo deste comunicado apresentar a implementao JavaTM do filtro para deteco de bordas de Canny (Canny, 1986). A implementao uma necessidade de uso em projetos desenvolvidos na Embrapa Informtica Agropecuria na rea de processamento de imagens aplicado agropecuria. O processo de deteco de bordas dos objetos de uma imagem essencial para a anlise de imagens, porque podem ser detectadas precisamente e os objetos podem ser localizados e suas propriedades bsicas, como rea e permetro a serem medidos. Trata-se de um dos processos mais comuns nas tcnicas de anlise de imagens digitais, contando com uma grande variedade de algoritmos. Uma introduo sobre o significado de bordas em imagens pode ser consultado em Miranda & Camargo Neto (2006a). Tambm em Miranda & Camargo Neto (2006a) encontra-se a implementao Java do filtro de difuso linear complexa, derivado do trabalho de Gilboa et al. (2004), que desenvolveram um filtro de difuso linear complexa com base na ideia de que em vrias reas da fsica e da engenharia podia-se estender a anlise do domnio real para o domnio complexo. Miranda & Camargo Neto (2006b) tambm
1

implementaram, em Java, um filtro de difuso complexa no linear, ou anisotrpico, tomando por base as propriedades do filtro anterior, de difuso linear complexa (Gilboa et al., 2004). O objetivo desse filtro atenuar rudos e realar bordas da imagem. Os autores denominaram esse filtro de preservao de rampa para atenuao de rudos, com base no fato de que funes de rampa podem ser usadas como modelo da estrutura bsica das bordas das imagens. E em Miranda & Camargo Neto (2007), apresentado mais um filtro com base em equaes diferencias parciais ou modelos de difuso anisotrpica (no linear). O formalismo desse problema a ideia da filtragem, ou transformao, do espao-escala. A ideia essencial para essa abordagem tem como base envolver a imagem original numa famlia de imagens derivadas, obtidas pela convoluo da imagem original com um filtro Gaussiano, com varincia (tempo) t (Perona & Malik, 1990). Tecnicamente, a deteco de bordas visa localizar os pixels de borda enquanto o realce de bordas incrementa o contraste entre as bordas e o fundo, tornando as bordas mais visveis (Parker, 1997). Na prtica, ambos os termos so usados com a mesma finalidade. Com esta publicao, d-se prosseguimento na implementao de algoritmos teis para a deteco de

Ph.D. em Geoprocessamento, Analista da Embrapa Informtica Agropecuria, Caixa Postal 6041, Baro Geraldo - 13083-970 - Campinas, SP. (e-mail: miranda@cnptia.embrapa.br) 2 Ph.D. em Processamento de imagens, Analista da Embrapa Informtica Agropecuria, Caixa Postal 6041, Baro Geraldo - 13083-970 - Campinas, SP. (e-mail: camargo@cnptia.embrapa.br)

Filtro de Canny para deteco de bordas: implementao Java

bordas, atividade importante tambm no campo de viso p o r c o m p u t a d o r. O o b j e t i v o m a i o r d e s t a s implementaes a constituio de uma biblioteca de processamento de imagens em Java, como software livre, sob a GNU (Licena Pblica Geral) conforme publicada pela Free Software Foundation. Todas as implementaes se encontram disponveis no diretrio da rede Agrolivre: (<http://repositorio.agrolivre.gov.br/projects/pid/>).

pode ser formalizado como a razo entre essas duas respostas (Canny, 1986):

(3)

O filtro de Canny
De uma maneira geral, requerido de todo algoritmo de deteco de bordas uma baixa taxa de erro na sua identificao. Igualmente, espera-se que os pixels das bordas sejam localizados com preciso, minimizando a distncia entre os pixels encontrados pelo detetor e a borda verdadeira. Um terceiro critrio na deteco deveria evitar a possibilidade da gerao de mltiplas bordas para expressar uma borda simples. Canny (1986) considerou essas trs questes no seu trabalho, que poderiam ser assim anunciadas: 1. Boa deteco: o detetor de bordas deveria ter baixa probabilidade de falhar na deteco das bordas e baixa probabilidade de marcar pixels fora das bordas. 2. Localizao: a distncia entre os pixels da borda encontrados pelo detetor de bordas e a borda verdadeira deveria ser a menor possvel. 3. Resposta simples: minimizar o nmero de bordas. O detector de bordas no poderia identificar mltiplas bordas aonde existe somente uma. Segundo o autor, o problema seria transformar esses critrios em formalismo matemtico. Ele iniciou seu trabalho analisando o comportamento dos critrios acima em uma dimenso. Para o primeiro critrio, considerou a razo entre sinal e rudo. Para o sinal, considerar f(x) a resposta do filtro a uma borda G(x). A resposta do filtro a essa borda, com centro em HG, dada por uma integral de convoluo (Canny, 1986):
(1)

Para o segundo critrio, Canny considerou a necessidade de uma medida que crescesse medida que a localizao melhorasse e, para isso, usou a inversa da distncia da raiz da mdia quadrtica. A marcao de bordas acontece em mximos locais da resposta do operador, f(x), ou seja, onde sua primeira derivada seja nula. Os detalhes para mostrar como o . autor chegou medida da localizao podem ser obtidos em Canny (1986):

(4)

Canny demonstrou que usando apenas os dois primeiros critrios, o detector timo para bordas com rudos (Fig. 1a) produz tambm um resultado truncado, semelhante a usar um filtro de diferena de caixas (Fig. 1c). Esse tipo de filtro, por ter uma largura de banda grande, tende a produzir muitos mximos locais, os quais deveriam ser considerados errados, de acordo com o primeiro critrio. A distncia mdia entre os mximos adjacentes e a resposta do rudo de f(x), denominada Xmax, restringe a escolha de f(x) de acordo com um critrio simples, o terceiro: Xmax [f(x)] = kW
(5)

Onde k uma frao de um coeficiente definida e W, a largura do operador. Devido complexidade da formulao, nenhuma soluo analtica foi encontrada. Uma variante foi desenvolvida permitindo a determinao de bordas. Para valores pequenos de Xmax, o operador de Canny se aproxima da ao do filtro caixa de diferena (Fig. 1c). Para grandes valores de Xmax, ele se aproxima da ao de um filtro do tipo primeira derivada da Gaussiana (Fig. 1b), tambm conhecido por DoG (derivative of Gaussian). No caso bidimensional, a funo Gaussiana dada por Parker (1997):

Sendo que o filtro tem uma resposta de pulso limitada por [-w, w] e zero fora desse intervalo. Para o rudo, n(x), considerar a raiz quadrada de sua resposta (Canny, 1986):

(6)

(2)

2 Sendo n0 o a amplitude quadrtica mdia do rudo por unidade de comprimento. Portanto, o primeiro critrio

Portanto, a aproximao do filtro timo de Canny para a deteco de bordas de imagens digitais a primeira derivada da funo Gaussiana, conseguido pela convoluo da imagem de entrada com G. A imagem de sada desse processo ter suas bordas realadas,

Filtro de Canny para deteco de bordas: implementao Java

mesmo na presena de rudos, incorporado no modelo de bordas da imagem. Para otimizar o processo computacionalmente, a convoluo bidimensional, expressa em (6), pode ser dividida em duas convolues com Gaussianas unidimensional, sendo a diferenciao feita a posteriori. O leitor interessado em maiores detalhes pode consultar o extenso artigo de Canny (1986).

<imagem> a imagem a ser filtrada; <dp> o desvio padro; <inf> o valor do limiar inferior; <sup> o valor do limiar superior. Os valores de desvio padro e limiares devem ser testados pelo usurio, at que se encontre uma imagem de sada com bom resultado. Sugerimos a construo de uma interface grfica que permita mudar esses valores com um JSlider, o que facilitaria analisar o comportamento das bordas com as mudanas. O construtor do filtro de Canny definido como: public FiltroCanny(String aFile, double s, int inf, int sup) { ... }

Fig. 1. Sinal com rudo, filtro da primeira derivada Gaussiana e filtro de caixa de diferena.

onde : 1. aFile: nome do arquivo com a imagem digital a ser filtrada; 2. s: desvio padro; 3. inf: no programa, a identificao dos pixels que pertencem borda feito com um processo de limiarizao. Comeando nos pixels com valores maiores que o limiar superior (sup), traa uma sequncia conectada de pixels que possuem valores maiores que o limiar inferior (inf); 4. sup: comentrio anterior. O construtor tem quatro tarefas: fazer a leitura da imagem a ser processada; chamar o mtodo canny, que implementa o filtro de Canny; definir os pixels da borda, usando os valores passados como parmetros, inf e sup, e mostrar a imagem resultante. O mtodo canny implementa os principais passos do algoritmo, assim descritos (Parker, 1997): 1. Criao de uma mscara Gaussiana, de uma dimenso, para fazer a convoluo da imagem original. O parmetro desvio padro, s, da funo Gaussiana usado neste passo. double funcGauss[] 2. Criao de uma mscara, de uma dimenso, para a primeira derivada da funo Gaussiana nas direes x e y. O valor do desvio padro usado tambm aqui. double derivadaGauss[] 3. Fazer a convoluo da imagem original com a Gaussiana, ao longo das linhas para produzir a imagem componente em x, componenteX, e ao longo das colunas, para produzir a imagem componente em y, componenteY. convolveImagemXY(imagem,funcGauss,

A Fig. 2 mostra o efeito, aproximado, dos filtros primeira derivada Gaussiana, Fig. 1b, e caixa de diferena, Fig. 1c, no sinal mostrado na Fig. 1a. Percebe-se que o sinal filtrado com o filtro diferena de caixa ainda apresenta problemas de mximos local.

Fig. 2. Efeito dos filtros primeira derivada Gaussiana e caixa de diferena no sinal mostrado na Fig. 1a.

Aspectos da implementao
Para implementar o filtro de Canny, desenvolvemos uma aplicao Java pura, contendo apenas um construtor e uma chamada atravs do main(). Evitamos o uso de ambiente de desenvolvimento integrado, como NetBeans, ou uma interface mais rebuscada. O objetivo maior disponibilizar o filtro de maneira limpa, para que possa ser inserido em outras aplicaes. O programa deve ser compilado e executado em uma janela DOS, ou um TERM do Linux. Para compilar o programa: C:[diretrio de instalao]>javac deprecation FiltroCanny.java E para execut-lo: C:[diretrio de instalao]>java FiltroCanny <imagem> <dp> <inf> <sup> Onde os parmetros so: -

Filtro de Canny para deteco de bordas: implementao Java

width, componenteX, componenteY); 4. Fazer a convoluo a imagem componente em x, componenteX, para produzir a imagem derivada na direo x, derivadaX, e da imagem componente em y, componenteY, para produzir a imagem derivada na direo y, derivadaY. derivadaX = convolveDerivadaXY(componenteX, nc, derivadaGauss, width, 1); derivadaY = convolveDerivadaXY(componenteY, nc, derivadaGauss, width, 0);

nr,

nr,

com pivs central (reas circulares), algumas reas de solo nu (rea branca), cana-de-acar e matas ciliares ao longo de crregos. A primeira imagem foi filtrada com s = 1,5. semelhana do que ocorreu com a figura anterior, esse valor de desvio padro permite a passagem de muito rudo, o que na realidade, so bordas de pequenos objetos da imagem. O resultado, visualmente, no bom. Um incremento no valor do desvio padro permite filtrar as bordas de pequenos objetos, limpando mais a imagem final, dando um efeito visual melhor. medida que incrementados o valor do desvio padro, a imagem aparece mais limpa, ao custo do algoritmo detectar menos bordas.

5. Combinar as duas imagens derivadas, com o clculo da magnitude ou norma do gradiente, para obter a imagem resultado: z = norma(derivadaX[j][i], derivadaY[j][i]); 6. Suprimir os falsos mximos, com o objetivo de zerar os pixels que no sejam mximos local: removeFalsoMax(derivadaX, derivadaY, nr, nc, imagemMag, imagemOrig);
Fig. 4. (a) imagem original, (b) s = 1,5 e (c) s = 2,2.

Estudo de caso
Na sequncia de figuras a seguir, mostramos o resultado da aplicao do filtro de Canny para deteco de bordas. Em todas as imagens, os valores dos parmetros de limiarizao foram inf = 10 e sup = 20. Variamos apenas os valores do desvio padro, que mostram comportamentos diferentes do filtro. A primeira figura mostra a deteco de bordas em objetos simples. A Fig. 3a, mostra a imagem original. Em (b), passamos o filtro com s = 1,5 e em (c), com s = 2,6. O primeiro valor de desvio padro permite que o filtro detecte as bordas dos objetos, mas mostra um efeito colateral, com a passagem de muito rudo proveniente da cor de fundo da imagem. Com um valor maior do desvio padro, esse rudo filtrado e podemos obter um resultado melhor do processo de deteco das bordas.

A Fig. 5 mostra um conjunto de glbulos. O primeiro filtro usou tambm um valor de desvio padro de 1,5, apresentando resultados semelhantes aos anteriores. O segundo filtro usou um valor de 2,6, apresentando uma imagem mais limpa. Nesse caso, semelhana do que aconteceu com a Fig. 3, onde temos apenas objetos, a sua discriminao bem melhor. Na Fig. 4, uma imagem com muitos objetos e nuanas, o processo de filtragem fica comprometido no delineamento dos objetos da cena.

Fig. 5. (a) imagem original, (b) s = 1,5 e (c) s = 2,6.

Concluses
A utilizao do filtro de Canny se mostrou eficiente para a deteco de bordas; Sua utilizao em cenas com objetos distintos eficiente, mas em cenas com objetos pequenos em grande quantidade h um comprometimento de sua eficincia, mas isso no chega a comprometer sua eficincia. Nesses casos, um filtro prvio de filtragem de altas frequncias ajudaria no delineamento de objetos maiores; A implementao Java da verso do filtro se encontra disponvel e operacional; O fonte, considerado software livre, est sob a GNU (Licena Pblica Geral) conforme publicada pela Free Software Foundation, e disponvel no diretrio da

Fig. 3. (a) imagem original, (b) s = 1,5 e (c) s = 2,6.

A Fig. 4 mostra uma rea de agricultura em Guara, SP,

Filtro de Canny para deteco de bordas: implementao Java

rede Agrolivre: (<http://repositorio.agrolivre.gov.br/projects/pid/>).

PERONA, P.; MALIK, J. Scale-space and edge detection using anisotropic diffusion. IEEE Transactions on Patterns Analysis and Machine Intelligence, v. 12, n. 7, p. 629-639, 1990.

Referncias Bibliogrficas

CANNY, J. A computational approach to edge detection. IEEE Transactions on Patterns Analysis and Machine Intelligence, v. 8, n. 6, p. 679-698, 1986. GILBOA, G.; SOCHE, N.; ZEEVI, Y. Y. Image enhancement and denoising by complex diffusion processes. IEEE Transactions on Pattern Analysis and Machine Intelligence, v. 26, n. 8, p. 1020-1036, 2004. MIRANDA, J. I.; CAMARGO NETO, J. Deteco de bordas com o modelo de difuso anisotrpica. In: SIMPSIO BRASILEIRO DE SENSORIAMENTO REMOTO (SBSR), 13, 2007, Florianpolis. Anais... So Jos dos Campos: INPE, 2007. p. 5957-5964. CD-ROM. Disponvel em: <http://www.dsr.inpe.br/sbsr2007>. Acesso em: 15 set. 2008. MIRANDA, J. I.; CAMARGO NETO, J. Filtro de difuso linear complexa para deteco de bordas: implementao Java. Campinas: Embrapa Informtica Agropecuria, 2006a. 5 p. (Embrapa Informtica Agropecuria. Comunicado Tcnico, 75). Disponvel em: <http://www.cnptia.embrapa.br/modules/tinycontent3/c ontent/2006/ct75.pdf>. Acesso em: 15 set. 2008. MIRANDA, J. I.; CAMARGO NETO, J. Filtro de difuso complexa no linear para atenuao de rudos: implementao Java. Campinas: Embrapa Informtica Agropecuria, 2006b. 4 p. (Embrapa Informtica Agropecuria. Comunicado Tcnico, 72). Disponvel em: <http://www.cnptia.embrapa.br/modules/tinycontent3/c ontent/2006/ct72.pdf>. Acesso em: 15 set. 2008. PARKER, J. R. Algorithms for image processing and computer vision. New York, NY: John Wiley, 1997. 417 p.

Comunicado Tcnico, 96

Ministrio da Agricultura, Pecuria e Abastecimento

Embrapa Informtica Agropecuria rea de Comunicao e Negcios (ACN) Endereo: Caixa Postal 6041 - Baro Geraldo 13083-886 - Campinas, SP Fone: (19) 3211-5743 Fax: (19) 3211-5754 URL: http://www.cnptia.embrapa.br e-mail: sac@cnptia.embrapa.com.br 1 edio on-line - 2008
direitos reservados. Todos os

Comit de Presidente: Kleber Xavier Sampaio de Souza. Publicaes Membros Efetivos: Leandro Henrique Mendona de
Oliveira, Marcia Izabel Fugisawa Souza, Martha Delphino Bambini, Slvia Maria Fonseca Silveira Massruh, Stanley Robson de Medeiros Oliveira, Suzilei Carneiro (secretria). Suplentes: Goran Neshich, Maria Goretti Gurgel Praxedes.

Expediente

Supervisor editorial: Suzilei Carneiro Normalizao bibliogrfica: Marcia Izabel Fugisawa Souza Reviso de texto: Adriana Farah Gonzalez Editorao eletrnica: rea de Comunicao e Negcios

Anda mungkin juga menyukai