Fundamentação Teórica
2.1 Conceitos de Processamento Digital de Imagens
2.1.4 Filtros Passa-Altas
Filtros passa-altas, como o próprio nome já indica, deixam passar apenas os sinais de alta frequência, produzindo assim um realce nas bordas da imagem. A seguir, são apresentados dois filtros (Sobel e laplaciano) que o executa, assim como um método de detecção de bordas, com base em Sobel, chamado Canny.
2.1.4.1 Filtro de Sobel
O filtro de Sobel é usado para detectar bordas. Antigamente, quando ainda não existiam técnicas de detecção de bordas fundadas com uma base teórica, foi o mais popular detector de bordas, por se sobressair entre seus contemporâneos [3]. Sua diferença está no fato de possuir duas componentes kernels, sendo uma para o eixo x e outra para o eixo y, que são normalmente matrizes quadradas de ordem 3 — embora haja como construir maiores através de algoritmos. A Figura 2.7mostra como os operadores x e y do filtro de Sobel.
Figura 2.7: Componentesx e y do filtro de Sobel [3].
Observando o arranjo de elementos das matrizes Mx e My, constata-se que a segunda é sim-plesmente a transposta da primeira.
Considerando-se que existem uma matriz imagem I a ser processada e queSx e Sy são resul-tados da convolução de Mx e My I, respectivamente, têm-se as Equações 2.6e 2.7:
Sx=I ∗Mx (2.6)
Sy =I ∗My (2.7)
Daí, juntam-se essas duas componentes para formar a Equação 2.8, cujo resultado da combi-nação produz um vetor gradiente no píxel p. Tal vetor aponta para o maior crescimento de brilho da imagem I em volta do píxel p[5].
−
→S(p) =Sx(p)−→
i +Sy(p)−→
j =I∗M (2.8)
A Figura2.8detalha o efeito de cada uma das componentesMx eMy, bem como o efeito delas em conjunto.
(a) Imagem original.
(b) Sobel emx. (c) Sobel emy. (d) Sobel.
Figura 2.8: Realce de contornos por meio do operador de Sobel [5].
É importante salientar queMxrealça as bordas na direçãox, afetando assim as bordas verticais, como é possível visualizar na Subfigura 2.8(b). Da mesma forma,My torna as bordas horizontais mais visíveis, como na Subfigura 2.8(c).
2.1.4.2 Filtro Laplaciano
O filtro Laplaciano é usado para implementar uma derivada de segunda ordem em imagens.
Como se deve saber, uma derivada de segunda ordem avaliada em um píxel x pode ser expressa da forma que se encontra na Equação2.9:
f00(x)∼=f0(x)−f0(x+ 1) (2.9) Por Séries de Taylor, todavia, sabe-se que a derivada de primeira ordem em torno do píxel x é dada pela Equação 2.10:
f0(x)∼= f(x+ ∆x)−f(x)
∆x −O(∆x) (2.10)
em queO(∆x) é o erro associado a operação sendo realizada no sistema, que é significativo somente para distâncias relativamente grandes [3], e ∆x é a distância do píxel que está sendo avaliado até outro mais próximo em unidade de píxel, que no caso é 1, por se tratar de vizinhos imediatos.
Assim sendo, desconsidera-se a existência deO(∆x), por causa do erro associado ser ínfimo. Dessa maneira, a Equação 2.10fica sendo equivalente a Equação2.11:
f0(x) =f(x+ 1)−f(x) (2.11)
Substituindo, então, a Equação2.11 na Equação 2.9, chega-se à Equação2.12:
f00(x)∼=f(x+ 1)−f(x)−f(x+ 2) +f(x+ 1) =−1·f(x) + 2·f(x+ 1)−1·f(x+ 2) (2.12) Com isso, uma parte do kernel é obtida, a qual é a derivada de segunda ordem horizontal.
Para encontrar o restante do kernel, combinam-se tal parte com a derivada de segunda ordem vertical, unindo e somando seus respectivos píxeis centrais. Finalmente, encontra-se o kernel do filtro laplaciano como é apontado pela Figura 2.9:
Figura 2.9: Kernel laplaciano gerado por meio da composição das derivadas de segunda ordem em x ey [3].
Outros kernels de filtro laplaciano são apresentados pelas matrizesKlapl1e Klapl2 [5]:
Klapl1 =
−1 −1 −1
−1 8 −1
−1 −1 −1
Klapl2 =
1 −2 1
−2 4 −2 1 −2 1
No caso do kernel da Figura 2.9, percebe-se que é feita a diferença entre um píxel e a média aritmética de seus quatro vizinhos imediatos. Já em Klapl1, é realizada a diferença entre um píxel e a média de seus oito vizinhos imediatos.
Para qualquer um doskernels de operador laplaciano vistos até aqui, ressalta-se a inversão de sinal de seus elementos não afeta em nada na funcionalidade do filtro. O que importa, na verdade, é que a soma dos coeficientes seja igual a zero, para que bordas não sejam detectadas em regiões de brilho uniforme [3].
Uma aplicação da filtragem com o operador laplaciano é aludida pela Figura2.10. A detecção de bordas é realizada a matriz imagem da Subfigura2.10(a)e se revela na Subfigura2.10(b)como sendo os zeros que apareceram nas bordas da matriz L.
2.1.4.3 Canny
Canny é um método de detecção de bordas bastante popular. A fim de entender como ele funciona, por ser um algoritmo multifase, é interessante seguir alguns passos determinados pelo seu criador, John Canny, os quais são enumerados abaixo [6]:
(a) Matriz imagem original. (b) Depois da aplicação do operador laplaciano.
Figura 2.10: Efeito da filtragem com o operador laplaciano [3].
1o passo: Reduzir ruídos
Uma vez que ruídos podem atrapalhar a detecção de bordas, um operador gaussiano 5×5 é utilizado para removê-los.
2o passo: Encontrar gradientes de intensidade da imagem
Implementa-se o operador Sobel tanto na direção horizontal quanto na vertical para obter os gradientes respectivos Gx e Gy, gerando duas imagens filtradas. Destas duas, encontra-se a magnitude e o ângulo do gradiente de cada píxel por meio das Equações 2.13 e2.14:
|G|=qG2x+G2y (2.13)
θ= tan−1 G2y G2x
!
(2.14) Na Equação2.14, o gradiente, que é sempre perpendicular às bordas, tem seu ângulo arredon-dado para um dos quatro ângulos que representam a vertical, a horizontal, e as duas diagonais.
3o passo: Suprimir pontos de não-máximos
É feita uma varredura por ao longo das bordas para checar se não há píxeis enganosos, que eventualmente não constituem bordas. Para tal, o máximo local é analisado para cada píxel, tendo em vista sua adjacência na direção do gradiente do conjunto. A Figura2.11exemplifica isso. Nela, compara-se o píxel A, que está em uma borda, com os píxeis C e B, pelo fato de todos estarem na direção horizontal do gradiente. Como A é um máximo local na adjacência que compõe uma borda, o valor de sua magnitude permanece o mesmo. Caso contrário, a magnitude zero seria atribuída ao seu valor de intensidade no momento da varredura.
Figura 2.11: Análise de píxeis para descobrir o máximo local [6].
4o passo: Limiarizar a histerese
Define-se aqui quais píxeis são bordas de verdade e quais não são. Para isso, escolhem valores para dois limiares: um máximo e outro mínimo. Todo píxel cuja intensidade está acima do limiar máximo é considerado uma borda-verdadeira. Em contrapartida, todo aquele cuja intensidade se encontra abaixo do limiar mínimo é definitivamente não-borda. Mas aqueles que estão entre os dois limiares são classificados de acordo com a sua conectividade mútua. Nesse caso, se um deles está ligado a um píxel borda-verdadeira, este passa a ser considerado parte da borda. Caso contrário, ele é descartado. Isso fica claro na Figura 2.12:
Figura 2.12: Limiares de máximo e mínimo que definem o que é borda de verdade [6].
Na Figura2.12,Aé um píxel considerado borda-verdadeira, por estar acima do limiar máximo.
Com isso, C torna-se um píxel componente da borda, já que está conectado a feature da qualA faz parte. No entanto, o píxelB não é considerado integrante de nenhuma borda. Sua magnitude, então, é alterada para zero.
Tendo em vista os quatro passos apresentados, a aplicação do filtro de Canny produz a detecção de bordas mostrada na Figura 2.13: