Derivando as equações de Sobel de derivativos

10

Muitos sites fornecem aos operadores Sobel a máscara de convolução para suavizar uma imagem. No entanto, não encontrei um único site que descreva como você pode derivar os operadores de primeiras derivadas parciais. Se alguém puder explicar a derivação, eu apreciaria muito.

Quanquan Liu
fonte

Respostas:

3

O operador Sobel é uma aproximação da derivada na dimensão X seguida por um operador de suavização simples na dimensão Y. (Ou derivada na dimensão Y e depois suavizada em X).

Considere um sinal unidimensional f(t). A derivada def(t), df(t)/dt pode ser escrito como:

limΔ0 0f(t+Δ)-f(t-Δ)2Δ

Isso é chamado de fórmula de diferença centralizada .

Mas, com um sinal discreto, o menor você tem à sua disposição é a distância entre as amostras; portanto, você a usa como uma aproximação do limite.Δ

Podemos ver o quão ruim (ou boa) é uma aproximação observando o que ela faz com um sinal exponencial complexo . A derivada verdadeira daria . A aproximação fornece tão extremamente preciso com frequências baixas ( perto de 0), mas cada vez mais impreciso à medida que aproxima da frequência Nyquist (eωEutωEueωEut

eωEu(t+1)-eωEu(t-1)2=eωEueωEut-e-ωEueωEut2=eωEu-e-ωEu2eωEut=Eupecado(ω)eωEut
ωωωπ) É o melhor que você fará com três amostras. Ele também tem a vantagem de atenuar demais a resposta de alta frequência, em vez de amplificar demais.

Agora vamos suavizar a dimensão Y. Queremos algo que use apenas 3 pontos, e o melhor que você obterá é . Este filtro tem resposta de frequência: que transita sem problemas da baixa frequência de passagem para a alta atenuante.14f(t-Δ)+12f(t)+14f(t+Δ)

14eωEu(t-Δ)+12eωEut+14eωEu(t+Δ)=12(1+e-ωEuΔ+eωEuΔ2)eωEut=12(1+cosω)eωEut

Portanto, envolva a aproximação derivada na dimensão X com a mais suave na dimensão Y e você obtém o kernel:

18[10 0-120 0-210 0-1].
Lógica Errante
fonte