L'operatore Sobel è un'approssimazione della derivata nella dimensione X seguita da un semplice operatore di livellamento nella dimensione Y. (O derivata nella dimensione Y e quindi levigata in X).
Considera un segnale monodimensionale . La derivata di , può essere scritta come:f(t)f(t)df(t)/dt
limΔ→0f(t+Δ)−f(t−Δ)2Δ
Questa è chiamata la formula della differenza centrata .
Ma con un segnale discreto il più piccolo Δ che hai a disposizione è la distanza tra i campioni, quindi lo usi come approssimazione del limite.
Possiamo vedere quanto sia approssimativa (o buona) un'approssimazione osservando cosa fa a un segnale esponenziale complesso . Il vero derivato darebbe . L'approssimazione dà
così estremamente accurato con le basse frequenze ( near 0), ma sempre più impreciso quando avvicina alla frequenza di Nyquist (eωitωieωit
eωi(t+1)−eωi(t−1)2=eωieωit−e−ωieωit2=eωi−e−ωi2eωit=isin(ω)eωit
ωωω→π). Questo è il meglio che hai intenzione di fare con tre campioni. Ha anche il vantaggio di attenuare eccessivamente la risposta alle alte frequenze piuttosto che amplificare eccessivamente.
Ora facciamo un po 'di smoothing nella dimensione Y. Vogliamo qualcosa che utilizza solo 3 punti e il meglio che otterrai sarà . Questo filtro ha una risposta in frequenza:
che passa senza problemi dal passaggio delle basse frequenze alle alte frequenze completamente attenuanti.14f(t−Δ)+12f(t)+14f(t+Δ)
14eωi(t−Δ)+12eωit+14eωi(t+Δ)=12(1+e−ωiΔ+eωiΔ2)eωit=12(1+cosω)eωit
Quindi contorti l'approssimazione derivata nella dimensione X con quella più liscia nella dimensione Y e otterrai il kernel:
18⎡⎣⎢121000−1−2−1⎤⎦⎥.