Norm of derivative is a simple yet effective way of finding edges, very interesting for me to learn this.
cche
I think a more specific or robust way of doing it is to getting norm of derivatives with a Gaussian filter applied(derivative of Gaussian filter).
anonymous
How is this derivative calculated? It seems to be something like the inverse average distance between a pixel and its neighbors.
motoole2
If we interpret the image to be a multivariable function f(u,v) with respect to the pixel coordinates (u,v), then it might involve computing the gradient! We discussed computing gradients of continuous functions in today's lecture on this slide. For a discrete function like this image, one could use finite differencing, e.g., grad(f)(u,v) = [f(u+1,v)-f(u,v), f(u,v+1)-f(u,v)]. The magnitude of this gradient vector (i.e., its norm) would then give you the maximum rate of change at pixel (u,v).
When dealing with discrete functions, there are other ways for computing edges as well. As cche mentioned, one may also use the derivative of a Gaussian filter instead, which typically has larger kernel width (a.k.a., support) and is useful for detecting intensity variations that occur over larger scales.
In both cases, these derivatives are typically calculated by performing a 2D convolution operation between the image and a filter. For more details, I recommend checking out the wiki page on image gradients.
Norm of derivative is a simple yet effective way of finding edges, very interesting for me to learn this.
I think a more specific or robust way of doing it is to getting norm of derivatives with a Gaussian filter applied(derivative of Gaussian filter).
How is this derivative calculated? It seems to be something like the inverse average distance between a pixel and its neighbors.
If we interpret the image to be a multivariable function
f(u,v)
with respect to the pixel coordinates(u,v)
, then it might involve computing the gradient! We discussed computing gradients of continuous functions in today's lecture on this slide. For a discrete function like this image, one could use finite differencing, e.g.,grad(f)(u,v) = [f(u+1,v)-f(u,v), f(u,v+1)-f(u,v)]
. The magnitude of this gradient vector (i.e., its norm) would then give you the maximum rate of change at pixel(u,v)
.When dealing with discrete functions, there are other ways for computing edges as well. As cche mentioned, one may also use the derivative of a Gaussian filter instead, which typically has larger kernel width (a.k.a., support) and is useful for detecting intensity variations that occur over larger scales.
In both cases, these derivatives are typically calculated by performing a 2D convolution operation between the image and a filter. For more details, I recommend checking out the wiki page on image gradients.