A edge detection é a base para praticamente qualquer aplicação de Realidade Aumentada, pois, a partir dela pode-se ter um maior controle sobre as propriedades da imagem. O algoritmo da Transformada de Sobel elimina o background da imagem e marca em tons de cinza os delimitadores dos objetos.

Ele se baseia em duas matrizes: Gx e Gy, então, calcula o gradiente local e assim consegue detectar a presença das bordas da imagem. A borda é caracterizada por uma região que contém um alto gradiente. O gradiente de uma imagem f numa posição (x,y) é dado pelo vetor das equações abaixo:


[δf]
Δf = [Gx]=[δx]
[Gy] [δf]
[δy]

Então, a magnitude do gradiente pode ser calculada por:
ΔF = [(Gx)² + (Gy)²]^1/2 = mag(Δf)

O gradiente do pixel é influenciado pelo seus pixels vizinhos. O padrão das matrizes Gx e Gy pode ser:

[-1 0 +1]
Gx=[-2 0 +2]
[-1 0 +1]

[-1 +2 -1]
Gy=[ 0 0 0]
[-1 -2 -1]

A partir destes gradientes, é possível determinar a magnitude e a direção da borda para cada pixel. Após isto, a partir de um limiar fixo, cada ponto da imagem é percorrido e é atribuído ao ponto (x,y) uma cor referente à distância do limiar pré-estabelecido, fazendo assim, uma imagem binarizada e evidenciando as principais bordas.

Imagem normal:


Após o Sobel Transform:


Fontes: Marcelo Gattass, UFPR.