Você está na página 1de 44

1

UNIVERSIDADE FEDERAL DA BAHIA


INSTITUTO DE MATEMTICA
DEPARTAMENTO DE CINCIA DA COMPUTAO

Daniel Vitor Oliveira Rodrigues

Estudo comparativo de funes de Green para deteco de arestas

Salvador 2009

Daniel Vitor Oliveira Rodrigues

Estudo comparativo de funes de Green para deteco de arestas

Monografia apresentada ao Curso de graduao em Cincia da Computao, Departamento de Cincia da Computao, Instituto de Matemtica, Universidade Federal da Bahia, como requisito parcial para obteno do grau de Bacharel em Cincia da Computao. Orientador: Perfilino Eugnio Ferreira Jnior

Salvador 2009

Dedico este estudo: aos meus pais, Valdemar e Vera Lcia.

AGRADECIMENTOS

Muitos me ajudaram a concluir esse trabalho. Gostaria de sinceramente agradecer em especial... ... a Deus, pois nada possvel sem ele; ... minha me pelas palavras de consolo, apoio, confiana e incentivo; ... ao meu pai pela ajuda e pacincia; ... minha irm Aline por acreditar no meu potencial; ... ao meu orientador pela disponibilidade e ateno; ... aos meus colegas de faculdade pelas sugadas, conversas e amizade;

Agradeo tambm a todos aqueles que indiretamente me ajudaram com este trabalho e de alguma forma somaram a minha formao.

Muito Obrigado!

"A mente que se abre a uma nova idia jamais voltar ao seu tamanho original".

(Albert Einstein)

RESUMO

Aps o trabalho de Canny, que props um filtro de deteco de arestas com desempenho superior aos anteriormente relatados na literatura e formalizou trs medidas de desempenho baseadas em trs critrios para um filtro timo, tornou-se possvel avaliar formalmente o desempenho de um filtro e, conseqentemente passou-se a procurar um filtro que obtivesse um desempenho superior ao proposto no seu trabalho. O trabalho de Torreo props um filtro baseado em funes de Green, construdo pela combinao de operadores diferenciais que obteve desempenho superior ao de Canny. Neste contexto, este trabalho prope utilizar esta mesma abordagem para atravs de outras combinaes de operadores diferenciais, criar e implementar novos filtros de deteco de arestas. Palavras-chave: Funes de Green; Deteco de arestas; Operadores diferenciais; Filtro de Canny

ABSTRACT

After Cannys work, that proposed a edge detector filter with performance superior to the ones previously proposed in literature and formalized three performance measures based on three optimal filter criteria, it became possible to formally evaluate a filter's performance, which resulted in a widespread search for a filter with an even superior performance. Torreos work proposed a filter based on the Greens functions, built by combining differential operators, which resulted in a performance superior to Canny's filter. In this context, this work proposes the usage of this same approach to create and implement new edge detection filters with different differential operators combinations. Keywords: Greens functions; Edge detection; Differential operator; Cannys filter

LISTA DE FIGURAS
2.1 2.2 3.1 4.1 4.2 4.3 4.4 4.5 4.6 4.7 As reas da computao visual ....................................................................................... 14 Exemplo de utilizao de filtragem para deteco de arestas ........................................ 16 Uso do filtro de Canny ...................................................................................................23 Funo de Green G2 .......................................................................................................26 Funo de Green G3 ........................................................................................................28 Filtros D2 (- - -) e D3 (---) para o mesmo valor de u .......................................................29 Filtro D23 .........................................................................................................................30 Comparao visual entre o filtro de Canny (esquerda) e o filtro D23 (direita) .............. 31 Comparao visual entre o filtro de Canny (esquerda) e o filtro D12 (direita) .............. 33 Comparao visual entre o filtro de Canny (esquerda) e o filtro D13 (direita) .............. 34

4.8 Comparao visual entre os filtros: (a) Filtro de Canny, (b) Filtro D23 ,(c) Filtro .........35 D12 e (d) Filtro D13

SUMRIO
1 2 Introduo ........................................................................................................................ 11 Conceitos relacionados deteco de arestas ............................................................... 13

2.1 Processamento de imagens ................................................................................................ 13 2.2 Filtros ................................................................................................................................ 14 2.3 Deteco de arestas ........................................................................................................... 15 2.4 Calibrao de cmeras ....................................................................................................... 16 3 O filtro de canny .............................................................................................................. 18

3.1 Os critrios de um filtro timo .......................................................................................... 18 3.1.1 O primeiro critrio .......................................................................................................... 18 3.1.2 O segundo critrio .......................................................................................................... 19 3.1.3 O terceiro critrio............................................................................................................ 20 3.2 Obteno do filtro timo ................................................................................................... 21 3.2.1 Medidas de desempenho ................................................................................................. 21 3.2.2 Aproximao do filtro timo de canny ............................................................................ 22 4 Funes de Green para deteco de arestas.................................................................. 24

4.1 Apresentao dos operadores diferenciais do trabalho de Torreo ................................... 24 4.1.1 O operador diferencial D2 ............................................................................................... 24 4.1.2 O operador diferencial D3 ............................................................................................... 27 4.1.3 O operador diferencial D23 .............................................................................................. 29 4.2 Construo de novos operadores diferenciais ................................................................... 31 4.2.1 O operador diferencial D12 .............................................................................................. 32

10

4.2.2 O operador diferencial D13 .............................................................................................. 33 5 Concluso ......................................................................................................................... 36

Referncias Bibliogrficas ..................................................................................................... 38 Apndice A Cdigo-Fonte dos filtros ................................................................................. 39

11

1 INTRODUO

Atualmente, uma rea da computao visual que devido ao crescimento de sua utilizao se tornou de grande importncia e alvo de ampla pesquisa computacional a rea de processamento de imagens, sendo utilizada em diversos ramos, tais como: medicina, controle, agropecuria, entretenimento, etc. Devido ao aumento da demanda da utilizao e da dependncia de vrias reas em relao a obter informaes a partir de imagens, vrios algoritmos e tcnicas foram desenvolvidos para filtrar, restaurar, comprimir, descomprimir, diferenciar e reconhecer imagens.

Uma imagem adquire as caractersticas de um objeto, ou seja, as variaes nos tons de cinza da imagem. So utilizadas vrias tcnicas de processamento de imagens para extrair informaes desses objetos. Uma dessas tcnicas, a deteco de bordas ou arestas de uma imagem essencial para a anlise de imagens e implementada atravs de vrios algoritmos que visam diferentes propsitos, atravs de frmulas matemticas diferenciadas, e basicamente derivam a imagem para acentuar suas arestas. Estas tcnicas so o foco principal deste trabalho.

Os algoritmos de deteco de arestas so utilizados para diversos fins, podendo ser empregados como um fim, quando se quer obter apenas as arestas de uma imagem para, por exemplo, a partir de uma imagem extrada de um satlite, calcular a rea ou permetro dos objetos presentes nesta imagem, ou como um passo intermedirio ou pr-processamento para passos subseqentes, ou seja, quando a deteco de bordas necessria para se utilizar posteriormente outra tcnica de processamento de imagens, por exemplo, para calibrar automaticamente uma cmera utilizada numa partida de futebol necessrio usar um filtro para realar as linhas do campo (bordas) e detect-las, utilizando os pontos de interseo dessas linhas posteriormente para determinar os parmetros intrnsecos e extrnsecos da cmera para calibr-la.

12

Diante da dificuldade de implementar um algoritmo de deteco de bordas que possua um bom desempenho (chamado de filtro timo por Canny) (CANNY, 1986) em contextos diferentes, ou seja, funcione bem com imagens que possuam caractersticas diferentes, vemos a necessidade de comparar o desempenho desses algoritmos com o objetivo de verificar qual a tcnica que obtm melhores resultados globais aplicadas a diferentes contextos.

Nesse contexto, esse trabalho prope formalizar e implementar alguns filtros de deteco de arestas baseados em funes de Green e comparar visualmente os seus resultados.

Os prximos captulos sero organizados da seguinte forma: O captulo 2 apresenta os conceitos bsicos necessrios para a compreenso do trabalho. O captulo 3 apresenta o trabalho proposto por Canny e a formalizao de seus critrios para a obteno de um filtro de deteco de arestas timo. O captulo 4 apresenta inicialmente a abordagem da utilizao de operadores diferenciais baseados em funes de Green para a obteno de filtros de deteco de arestas e, posteriormente, apresenta um filtro construdo pela combinao de operadores proposta por (TORREAO; AMARAL, 2002). Posteriormente, o captulo 4 apresenta novos filtros criados a partir de novas combinaes de operadores diferenciais. Por fim, no captulo 5, so apresentados as consideraes finais e os trabalhos futuros.

13

2 CONCEITOS RELACIONADOS DETECO DE ARESTAS

O objetivo deste captulo apresentar os principais conceitos utilizados e que so necessrios para a compreenso do trabalho.

2.1 PROCESSAMENTO DE IMAGENS

O campo do processamento de imagens consiste em desenvolver tcnicas de compreenso dos mecanismos de viso natural e artificial e em fornecer ferramentas cujo desempenho aproxima-se o mais possvel das extraordinrias capacidades do sistema visual humano (FACON, 2002). A rea do processamento de imagens juntamente com as de processamento de dados, computao grfica e viso computacional compem a computao visual conforme ilustrado na figura 2.1. No processamento de imagens a entrada composta por uma imagem que aps ser processada d origem a uma outra imagem como sada. Com o passar do tempo, inmeras atividades corriqueiras passaram a ser automatizadas fazendo-se uso de tcnicas de processamento de imagens. Estas tcnicas podem necessitar de conhecimento prvio ou at de processamento em tempo real. So exemplos de aplicaes:

Aplicaes industriais - O campo industrial utiliza processamento de imagens para

vrias atividades tais como: Pilotagem de robs para escolha e manipulao de peas,

14

alm de escolha de melhor trajetria para evitar obstculos. Inspeo visual para medir e fazer o controle da qualidade do produto, detectando possveis defeitos. Reconhecimento de padres - As tcnicas utilizadas so: Reconhecimento de caracteres para leitura automtica. Reconhecimento de impresses digitais e de assinaturas.

Figura 2.1: As reas da computao visual

2.2 FILTROS
Um filtro uma aplicao do espao das imagens no espao das imagens, a fim de melhorar ou interpretar uma imagem. Filtragem um conjunto de tcnicas destinadas a corrigir e realar uma imagem digital. As tcnicas de filtragem podem ser divididas em dois grupos: Correo ou Restaurao e Melhoria ou Realce. As tcnicas de realce de imagens so

15

relacionadas com expanso de contraste, realce de bordas e suavizao. Alguns dos objetivos principais do realce de uma imagem so a obteno de: Imagem com um bom contraste Contornos ntidos Detalhes importantes Pouco rudo

Os mtodos de realce diferem dos de restaurao pelo fato de que os primeiros so essencialmente projetados para manipular a imagem a partir das caractersticas psicofsicas do sistema de referncia que a viso humana. Esses mtodos podem ser divididos em duas categorias principais que so:

Os mtodos ponto por ponto

1. Modificao de histograma 2. Modificao de contraste


Os mtodos de vizinhana ou locais

1. Suavizao do rudo 2. Realce de contornos e de detalhes (FACON, 2002).

2.3 DETECO DE ARESTAS


Aresta ou bordas so definidas como descontinuidades na intensidade do nvel de cinza dos pixels de uma imagem. As tcnicas de deteco de arestas consistem em detectar variaes nos nveis de cinza, ou seja, se h taxa de mudana nos nveis de cinza (ver figura 2.2). Elas utilizam tcnicas de filtragem para detectar a mudana da intensidade dos nveis de cinza. Uma imagem I(x,y) uma seqncia de regies de tamanhos diversos, onde os nveis de cinza so constantes, e de fronteiras, encontros de vrias regies, marcando uma transio entre elas. Do ponto de vista matemtico, as regies so caracterizadas por derivadas suaves e

16

pouco acentuadas e as fronteiras por derivadas fortes e acentuadas. O princpio derivar a imagem para acentuar as bordas contidas na imagem (FACON, 2002).

Figura 2.2: Exemplo de utilizao de filtragem para deteco de arestas

2.4 CALIBRAO DE CMERAS


A calibrao de uma cmera envolve estimar os parmetros intrnsecos e extrnsecos (internos ou externos). Entendemos como parmetros intrnsecos os que so necessrios para ligar as coordenadas de pixel de um ponto na imagem com as respectivas coordenadas no frame da cmera. Podemos citar: Distncia focal; Localizao do centro da imagem, em coordenadas de pixel; Tamanho efetivo horizontal e vertical do pixel; Coeficientes de distoro

J os parmetros extrnsecos so os que definem a localizao e orientao do frame de cmera com relao a um frame de mundo conhecido. Podemos citar:

17

Vetor de translao; Matriz de rotao (ou os seus parmetros livres).

Na calibrao de cmeras so utilizados vrios sistemas de coordenadas, so eles: O sistema de coordenadas do mundo (SCM), utilizado para descrever a cena com origem no ponto O e referencial (X, Y,Z); O sistema de coordenadas da cmera (SCC), que tem origem em O, no centro ptico, referencial (X, Y, Z), tem plano xy paralelo ao plano de projeo e f a distncia desse plano de projeo a O; O sistema de coordenadas da imagem (SCI) que um sistema bidimensional no plano de projeo, tem origem C obtida pela projeo do centro ptico O sobre o plano de projeo e referencial (x,y); O sistema de coordenadas em pixel (SCP) que define a posio de um ponto em relao a matriz de pixels, tem sistema de coordenadas (u, v) e normalmente se situa num canto da imagem.

Um exemplo de mtodo de calibrao de cmeras o mtodo de Tsai (Tsai, 1987). Este mtodo se baseia nas seguintes restries: Os pontos de entrada so coplanares; O SCM e o SCC tem a mesma orientao, logo R uma matriz de rotao; Todos os pontos de calibrao se situam no plano Z = 0 (SCM); Os parmetros intrnsecos da cmera, com excees da distncia focal e coeficiente de distoro, devem ser conhecidos, de modo que a partir de um ponto do SCP seja possvel determinar o ponto equivalente no plano de projeo.

18

3 O FILTRO DE CANNY

3.1 OS CRITRIOS DE UM FILTRO TIMO


Segundo (CANNY, 1986), um filtro de deteco de arestas precisa atender a trs critrios bsicos. Esses critrios podem ser enunciados como:

1. Boa deteco 2. Boa localizao espacial 3. Resposta nica

3.1.1 O PRIMEIRO CRITRIO


O primeiro critrio define que o detector de arestas deve ter baixa probabilidade de falha na deteco de arestas, ou seja, baixa probabilidade de escolher pixels que esto fora das arestas. Este critrio chamado de Taxa de deteco e consiste na maximizao da razo sinal/rudo. Ao analisarmos a razo sinal/rudo (SNR), podemos afirmar que quanto maior ela for, maior ser a probabilidade de se detectar as bordas verdadeiras dessa imagem. A resposta de um filtro f(x) a uma borda G(x) com centro em H(x) dada por uma integral de convoluo, sendo que essa resposta limitada por [-w,w] e tem valor zero fora desse intervalo:

(1)

19

Para o rudo n(x), considerando a raiz quadrada da reposta do filtro e sendo n0 a amplitude quadrtica mdia do rudo por unidade de comprimento e assumindo que a borda est centrada em x = 0 temos:

(2)

Logo a razo sinal/rudo (SNR) representada por:

(3)

3.1.2 O SEGUNDO CRITRIO


O segundo critrio define que as distncias entre os pixels da borda encontrados pelo detector e os pixels da borda verdadeira deve ser mnima, ou seja, os pixels da borda devem estar bem localizados. Este critrio chamado de Localizao (L) e definido como sendo o inverso da distncia entre um ponto detectado e a respectiva posio verdadeira, logo quanto maior for L, mas prximo das posies verdadeiras estaro os pontos detectados pelo filtro (DO VALE; DAL POZ, 2002).

(4)

20

Podemos concluir que por esses dois primeiros critrios, um filtro de bordas precisa maximizar tanto a razo sinal/rudo (SNR) como a localizao (L) e, portanto deve maximizar o produto entre eles.

(5)

3.1.3 O TERCEIRO CRITRIO


Por fim, o terceiro critrio para um filtro timo define que o detector de bordas no pode identificar mltiplas bordas onde existe somente uma, ou seja, deve haver apenas um nico pixel de borda para um nico pixel de borda verdadeira. Este critrio chamado de critrio de resposta nica e consiste em maximizar a distncia (Xmax ) entre mximos adjacentes na resposta do filtro f(x) devido ao rudo (CANNY, 1986).

(6)

Assim, ao maximizar o produto entre SNR e L, deve-se tambm garantir que Xmax seja maior possvel, aumentando a possibilidade de separao de mximos verdadeiros dos falsos de sada do filtro f(x) (DO VALE; DAL POZ, 2002).

21

3.2 OBTENO DO FILTRO TIMO

3.2.1 MEDIDAS DE DESEMPENHO


Segundo (CANNY, 1986), as medidas de desempenho (f) e (f ') esto relacionadas respectivamente com o primeiro e o segundo critrios, os critrios de deteco e localizao:

(7)

Demonstra-se que (f) e (f ') variam inversamente ao longo do espao-escala, ou seja, quando se tenta maximizar a deteco perde-se em localizao, j quando se tenta maximizar a localizao perde-se em deteco.

Ao utilizar apenas os dois primeiros critrios no se obtm um filtro timo, pois se obtm um resultado truncado por produzir muitos mximos locais devido grande largura de banda, o que inflinge o primeiro critrio. O terceiro critrio utiliza o Xmax para restringir a escolha de f(x) segundo a expresso:

Xmax[f(x)] = kW

(8)

onde k varia no intervalo [0,1] e W o coeficiente da largura do operador. A forma do filtro f(x) depende, ento, da injuno de respostas mltiplas, isto , depende das distncias entre as respostas adjacentes (Xmax ). Em geral, o ideal que as respostas adjacentes estejam o mais distante possvel, facilitando a separao do pico verdadeiro dos falsos. Segundo (Canny, 1986), quanto menor o espaamento entre as respostas adjacentes, mais ngreme a funo f(x) na origem. Assim, um filtro muito ngreme, em relao

22

origem, ou seja, que tenha uma maior declividade da funo f(x) na origem, beneficia o critrio de localizao, mas no favorvel aos outros critrios. Por outro lado, um filtro menos ngreme, em relao origem, ou seja, menor declividade da funo f(x) na origem, desfavorvel ao critrio de localizao, mas os critrios de deteco e de resposta nica so beneficiados (DO VALE; DAL POZ, 2002).

Portanto, conclui-se que uma soluo analtica invivel e se pode afirmar que para se obter um filtro timo, necessrio obter um conjunto de parmetros que balanceie os trs critrios mencionados.

3.2.2 APROXIMAO DO FILTRO TIMO DE CANNY


Devido dificuldade de se obter uma soluo analtica, foi desenvolvida uma variante. A ao do filtro timo de Canny pode ser aproximada pela primeira derivada da funo Gaussiana G(x), tambm chamada de DoG (Derivative of Gaussian). A funo Gaussiana dada por:

(9)

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, devido forma analtica simples que possui e a semelhana dos resultados. A imagem de sada (ver figura 3.1) desse processo ter suas bordas realadas, mesmo na presena de rudos, incorporadas no modelo de bordas da imagem (Miranda; Camargo Neto, 2008).

23

Figura 3.1: Uso do filtro de Canny

24

4 FUNES DE GREEN PARA DETECO DE ARESTAS

Com o passar do tempo, vrios trabalhos foram apresentados, propondo diversos tipos de filtros para deteco de arestas. No entanto, por ser baseado num modelo matemtico formal com critrios de desempenho bem definidos o filtro para deteco de arestas de Canny se tornou o mais popular na literatura. (TORREAO; AMARAL, 2002) props uma nova abordagem para utilizar operadores diferenciais na obteno de arestas atravs de um filtro que possui desempenho superior aos relatados na literatura. Este filtro baseado em funes de Green de equaes de casamento de imagens e alm de ser mais simples que o processo de otimizao de Canny possui um melhor desempenho1.

4.1 APRESENTAO DOS OPERADORES DIFERENCIAIS DE TORREO

4.1.1 O OPERADOR DIFERENCIAL D2


Segundo (TORREAO; AMARAL, 2002), dado o sinal I(x), a derivada deste sinal expressa por

Conforme pode ser visto em (TORREO; AMARAL, 2002).

25

(10)

Suponha que exista um sinal (x) tal que

(11)

e expandindo o 1 membro de (11) at 2 ordem, temos:

(12)

A soluo que satisfaz esta equao diferencial dada por

(13)

onde a funo de Green, G2() que representada e dada por (figura 4.1) e (14) respectivamente.

26

Figura 4.1: Funo de Green G2

(14)

De forma anloga, supondo existir (x) tal que

(15)

e tem a soluo dada por

(16)

Usando (x) e (x), pode-se escrever I'(x) como

(17)

27

Desta forma, obtm-se o operador diferencial de convoluo

(18)

4.1.2 O OPERADOR DIFERENCIAL D3


De forma similar, a abordagem utilizada pode ser estendida para a expanso da terceira ordem de Taylor

(19)

obtendo-se no final a funo de Green, G3(), que representada e dada por (figura 4.2) e (20) respectivamente.

28

Figura 4.2: Funo de Green G3

(20)

onde um parmetro livre, = 1.596/u, = 0.702/u, = 1.807/u, e

(21)

E por fim, obtm-se o operador diferencial de convoluo

(22)

29

4.1.3 O OPERADOR DIFERENCIAL D23


Um melhor operador de deteco de arestas pode ser construdo pela combinao dos operadores diferenciais D2 e D3 num nico operador diferencial chamado D23.

Figura 4.3: Filtros D2 (- - -) e D3 (---) para o mesmo valor de u.

Este operador obtm melhores resultados por conseguir um melhor equilbrio entre a preciso da deteco e a robustez contra o rudo.

O operador D23 obtido pela generalizao da derivada do sinal I(x)

(23)

onde um parmetro real. E dado por

30

(24)

onde a um parmetro real. Substituindo I(x u) e I(x u), respectivamente, pelas integrais correspondentes, envolvendo G2 e G3, chegamos ao operador D23 que representado e dado por (figura 4.4) e (25) respectivamente.

Figura 4.4: Filtro D23

(25)

com F(x) dado por

31

(26)

onde , , , e A so os mesmos que em (20) e C() = 2/(uA).

A figura 4.5 faz uma comparao visual entre o filtro de canny e o filtro D23.

Figura 4.5: Comparao visual entre o filtro de Canny (esquerda) e o filtro D23 (direita)

4.2 CONSTRUO DE NOVOS OPERADORES DIFERENCIAIS

32

Seguindo a mesma abordagem para a combinao de operadores diferenciais apresentada em (TORREAO; AMARAL, 2002), novos filtros de deteco de arestas podem ser construdos ao combinar os operadores diferenciais D1, D2 e D3, criando os operadores D12 e D13.

4.2.1 O OPERADOR DIFERENCIAL D12


O operador diferencial D12 um filtro de deteco de arestas construdo atravs da combinao dos operadores D1 e D2.

Inicialmente, precisa-se obter a funo de Green G1(), para construir o operador D1. Segundo (FERREIRA JUNIOR; TORREAO; CARVALHO, 2009), G1() dada por

(27)

e de forma anloga a (17) , obtm-se o operador diferencial

(28)

Para combinar os operadores D1 e D2 utiliza-se a mesma tcnica de combinao apresentada no filtro D23 do item 4.1.3, que consiste na generalizao da derivada do sinal I(x). De (24), (27) e (14) se obtm o operador D12 que dado por

(29)

com F(x) dado por

33

(30)

Na figura 4.6 compara-se visualmente o filtro de Canny e o filtro D12 e observa-se que o filtro D12 possui arestas mais suaves e no apresenta o efeito aliasing que bastante evidente no filtro de Canny.

Figura 4.6: Comparao visual entre o filtro de Canny (esquerda) e o filtro D12 (direita)

4.2.2 O OPERADOR DIFERENCIAL D13


De forma similar, o operador diferencial D13 um filtro de deteco de arestas construdo atravs da combinao dos operadores D1 e D3. De (24), (27) e (20) se obtm o operador D13 que dado por

34

(31) com F(x) dado por

(32)

onde , , , e A so os mesmos que em (20) e C() = 1/(uA).

Na figura 4.7 compara-se visualmente o filtro de Canny e o filtro D13 e tambm observa-se que o filtro D13 possui arestas mais suaves e no apresenta o efeito aliasing do filtro de Canny.

Figura 4.7: Comparao visual entre o filtro de Canny (esquerda) e o filtro D13 (direita)

Na figura 4.8 compara-se visualmente os filtros: (a) de Canny, (b) D23 ,(c) D12 e (d) D13.

35

(a)

(b)

(c)

(d)

Figura 4.8 : Comparao visual entre os filtros: (a) Filtro de Canny, (b) Filtro D23 ,(c) Filtro D12 e (d) Filtro D13

36

5 CONCLUSO

O campo dos filtros de deteco de arestas uma das reas do processamento de imagens que devido ao seu vasto uso na anlise de imagens possui grande relevncia e alvo de constantes trabalhos de pesquisa.

Este trabalho, inicialmente, apresentou o filtro e os critrios bsicos para se obter um filtro timo de deteco de arestas propostos no trabalho de Canny. Posteriormente, apresentou a abordagem utilizada no trabalho de (TORREAO; AMARAL, 2002) de utilizar uma combinao de operadores diferenciais baseados em funes de Green como filtro de deteco de arestas. Esta abordagem obteve arestas mais suaves e, portanto um resultado superior ao filtro de Canny (Figura 4.5). O objetivo principal desse trabalho foi utilizar esta abordagem para criar e implementar novos filtros de deteco de arestas a partir da combinao de outros operadores diferenciais, completando uma lacuna deixada no trabalho acima citado, pois nele no utiliza-se a funo de primeira ordem.

A grande dificuldade encontrada neste trabalho foi formalizar e modelar a combinao dos operadores diferenciais a partir da generalizao da derivada do sinal (24) e posteriormente implementar esses novos filtros. Ao comparar visualmente os resultados da aplicao dos novos filtros criados com o filtro de Canny, percebemos que os novos filtros tambm possuem arestas mais suaves e, portanto resultados superiores ao obtido pelo filtro de Canny, porm como pode-se ver na figura 4.8, esses resultados no so melhores que o filtro D23 de (TORREAO; AMARAL, 2002), pois possuem uma resposta mais fraca j que as arestas detectadas tem uma intensidade mais baixa.

Outras possibilidades de trabalhos futuros so: Criar e implentar o filtro D123 a partir da combinao dos operadores diferenciais D1, D2 e D3.

37

Calcular as trs medidas de desempenho, propostas por Canny, dos filtros D12 , D13 e D123. Utilizar os filtros propostos para deteco de linhas para calibrao automtica de cmeras. Estender o trabalho de (TORREAO; AMARAL, 2002) ao caso de funes de Green com u sendo uma funo afim (na abordagem utilizada u uma constante).

38

REFERNCIAS BIBLIOGRFICAS
CANNY, J. A Computational Approach to Edge Detection. IEEE Transactions on Pattern Analysis and Machine Intelligence, V. 8, n. 6, pp. 679-698, 1986. DO VALE, G.M.; DAL POZ, A.P. Processo de deteco de bordas de Canny. 2002. FACON, J. Processamento e anlise de imagens. 2002. FERREIRA JNIOR, P.E., TORREO, J.R.A., CARVALHO, P.C.P., A Comparative Analysis of Greens Functions of 1D Matching Equations for Motion Synthesis, Pattern Recognition Letters (2009). MIRANDA, J.I.; CAMARGO NETO, J. Filtro de Canny para deteco de bordas: implementao Java. Campinas: Embrapa Informtica Agropecuria, 2008. (Embrapa Informtica Agropecuria. Comunicado Tcnico, 96). TSAI, R. Y. (1987), A versatile camera calibration technique for high-accuracy 3d machine vision metrology using off-the-shelf tv cameras and lenses, Ieee Journal Of Robotics And Automation RA-3(4), 323344. TORREAO, J.R.A.; AMARAL, M.S., 2002. Signal differentiation through a Greens function approach. Pattern Recognition Lett. 23, 17551759.

39

APENDICE A CDIGO-FONTE DOS FILTROS

#include #include #include #include #include

<stdio.h> <stdlib.h> <im.h> <im_image.h> <math.h>

#define sq(x) x * x

// Funo de Green G2 float G2 (float Xi, float u) { if (Xi > 0) return sin(Xi/u) * exp(-Xi/u) * 2.0 / u; else return 0; } // Operador D2 float D2(float Xi, float u) { return G2(-Xi,u) - G2(Xi,u); } // Funo de Green G3 float G3(float Xi, float u) { float A; float fi = 0.0; float alfa = 1.596 / u; float beta = .702 / u; float gama = 1.807 / u; float part; if (Xi > 0) { part = cos(fi) * ((beta - alfa) + (sq(alfa) - sq(beta) + sq(gama) / 3)) + gama * sin(fi) * (1 - 2 * beta / 3); A = 2.0 / (u * part); return A * (cos(fi) * exp( -alfa * Xi ) - cos(gama * Xi + fi) * exp( -beta * Xi)); } else return 0.0;

40

} // Operador D3 float D3(float Xi, float u) { return G3(-Xi,u) - G3(Xi,u); }

// Funo de Green G12 float G12(float Xi, float u) { float A; float a = 1.0 / 9; float fi = 0.0; float alfa = 1.596 / u; float beta = .702 / u; float gama = 1.807 / u; float eta = 2.808; float part; if (Xi > 0) { part = 2 * sq(a) * sin(Xi/(eta * u)) * exp(-Xi/(eta * u))/(sq(eta) * u) + (exp(-Xi/u)/u); return (1 + a) * part; } } // Operador D12 float D12(float Xi, float u) { return (G12(-Xi,u) - G12(Xi,u)) / (2 * u); } // Funo de Green G13 float G13(float Xi, float u) { float A; float a = 1.0 / 9; float fi = 0.0; float alfa = 1.596 / u; float beta = .702 / u; float gama = 1.807 / u; float eta = 2.808; float part; if (Xi > 0) { part = cos(fi) * ((beta - alfa) + (sq(alfa) - sq(beta) + sq(gama)) / 3) + gama * sin(fi) * (1 - 2 * beta / 3); A = 2.0 / (u * part); part = cos(fi) * exp(- alfa * Xi / (eta * u)) - cos(gama * Xi / (eta * u) + fi) * exp(- beta * Xi / (eta * u)) + eta * exp(- Xi / u) / (u * A * a); else return 0.0;

41

return A * part; } else return 0.0; } // Operador D13 float D13(float Xi, float u) { return (G13(-Xi,u) G13(Xi,u)); } // Funo de Green G23 float G23(float Xi, float u) { float A; float a = 1.0 / 9; float fi = 0.0; float alfa = 1.596 / u; float beta = .702 / u; float gama = 1.807 / u; float eta = 2.808; float part; if (Xi > 0) { part = cos(fi) * ((beta - alfa) + (sq(alfa) - sq(beta) + sq(gama)) / 3) + gama * sin(fi) * (1 - 2 * beta / 3); A = 2.0 / (u * part); part = cos(fi) * exp(- alfa * Xi / (eta * u)) - cos(gama * Xi / (eta * u) + fi) * exp(- beta * Xi / (eta * u)) + eta * sin(Xi / u) * exp(- Xi / u) * 2.0 / (u * A * a); return A * part; } else return 0.0; } // Operador D23 float D23(float Xi, float u) { return (G23(-Xi,u) G23(Xi,u)); }

int main(int argc, const char *argv[]) { imFile * ifile, * ofile; imImage * im, * imOut; int error; int w, x, y, i, addr, sum; float sumFX1, sumFX2, sumFY1, sumFY2, sumX, sumY; float inc, boundary, Xi;

42

void **data, * ptr_data; float u = .042; const int m_size = 5; const int m_bound = m_size >> 1; float MR[m_size], ML[m_size]; ifile = imFileOpen(argv[1],&error); im = imFileLoadImage(ifile,0,&error); imFileClose(ifile); if (argc > 4) u = atof(argv[4]); data = (void**) malloc(sizeof(void*)); *data = (void*) malloc(im->size); boundary = 0.7; inc = boundary / m_bound; // mascara de convolucao - esquerda-->direita for (i = 0, Xi = -boundary; Xi <= boundary && i < m_size; i++, Xi += inc) { //MR[i] = D12(Xi,u); //Utilizar o filtro D12 //MR[i] = D13(Xi,u); //Utilizar o filtro D13 MR[i] = D23(Xi,u); //Utilizar o filtro D23 } // mascara de convolucao - esquerda<--direira for (i = 0; i < m_size; i++) { ML[i] = -MR[i]; } for (w = 0; w < im->depth; w++) { ptr_data = (unsigned char*)im->data[0] + w * im->plane_size; for(y = 0; y < im->height; y++) { for(x = 0; x < im->width; x++) { sumFX1 = sumFX2 = 0.0; sumFY1 = sumFY2 = 0.0; addr = y * im->width + x; //convolucao sobre eixo Ox - varrendo da esquerda-->direita for (i = -m_bound; i <= m_bound; i++) {

43

if (x + i >= 0 && x + i < im->width) { sumFX1 += (float) *((unsigned char*)ptr_data + addr + i) * MR[i + m_bound]; } } if (sumFX1 < 0) sumFX1 = 0.0; else sumFX1 /= 2 * u; //convolucao sobre eixo Ox - varrendo da esquerda<--direita for (i = m_bound; i >= -m_bound; i--) { if (x + i >= 0 && x + i < im->width) { sumFX2 += (float) *((unsigned char*)ptr_data + addr + i) * ML[i + m_bound]; } } if (sumFX2 < 0) sumFX2 = 0.0; else sumFX2 /= 2 * u; //convolucao sobre eixo Oy - varrendo de cima-->baixo for (i = -m_bound ; i <= m_bound; i++) { if (y + i >= 0 && y + i < im->height) { sumFY1 += (float) *((unsigned char*)ptr_data + addr + im->width * i) * MR[i + m_bound]; } } if (sumFY1 < 0) sumFY1 = 0.0; else sumFY1 /= 2 * u; //convolucao sobre eixo Oy - varrendo de cima<--baixo for (i = m_bound ; i >= -m_bound; i--) { if (y + i >= 0 && y + i < im->height) { sumFY2 += (float) *((unsigned char*)ptr_data + addr + im->width * i) * ML[i + m_bound]; } } if (sumFY2 < 0) sumFY2 = 0.0; else sumFY2 /= 2 * u; sumX = (sumFX1 + sumFX2) / 2; sumY = (sumFY1 + sumFY2) / 2;

44

sum = (int) floor(sqrt(sq(sumX) + sq(sumY))); if (sum > 255) sum = 255; else if (sum < 0) sum = 0; addr = w * im->plane_size + y * im->width + x; *((unsigned char*)data[0] + addr) = (unsigned char)sum; } } } ofile = imFileNew(argv[2],argv[3],&error); imOut = imImageCreate(im->width, im->height, im->color_space, im->data_type); imOut->data = data; error = imFileSaveImage(ofile,imOut); imImageDestroy(imOut); imImageDestroy(im); imFileClose(ofile); return 0; }

Você também pode gostar