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Δ → 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ω i tω ieω i t
eω i ( t + 1 )-eω i ( t - 1 )2=eω ieω i t-e- ω ieω i t2=eω i-e- ω i2eω i t= eu peco( ω )eω i t
ωωω → π) É 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ω i ( t - Δ )+12eω i t+14eω i ( t + Δ )=12( 1 +e- ω i Δ+eω i Δ2)eω i t=12( 1 + cosω )eω i t
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⎡⎣⎢1210 00 00 0- 1- 2- 1⎤⎦⎥.