Third Order Edge Detector

The traditional approach to edge detection (e.g. canny) using image derivatives localizes edges at the maxima of the gradient magnitude |grad I| in the direction of the gradient grad I/|grad I|, which gives grad(|grad I|) . grad I/|grad I| = 0. In Cartesian coordinates, this condition can be written as F(x,y) = Ix^2*Ixx + 2*Ix*Iy*Ixy + Iy^2*Iyy = 0, which involves up to second-order derivatives. However, the edge orientation is simply taken as the orthogonal to the image gradient, which only involves first order derivatives. This is why the orientations of the edges as computed by the gradient operator are incorrect. The tangent computation needs to involve one higher order gradient than the computation to localize the edges. Hence it needs to involve third-order derivatives. The tangent to the edge contour can be correctly computed by the gradient of F(x,y) at the zero level set. The orientation of the edge thus involves up to third-order derivatives. For this reason we have chosen to call our edge detector the "Third-order orientation detector". In the image above, edgels computed by the traditional method (in red) are compared to those computed by the third-order orientation operator (in green). Notice the consistency of the third-order edges with respect to the edge curves.

Website