This program uses Canny edge detection on images and video in real time. The algorithm is broken into the following steps:
-
Apply a 5-pixel Gaussian blur to the image. This program uses the open source library glsl-fast-gaussian-blur.
-
Calculate the texture intensity gradient using a 3x3 Sobel operator.
-
Round the gradient to 1 of the 8 cardinal directions. This is done by seeing which direction has the highest dot product with the gradient vector.
-
Suppress any gradient that is not a local maximum in the direction the vector points.
-
Apply a double threshold to the gradient vector to classify each pixel as not an edge, a weak edge, or a strong edge.
-
Apply hysteresis to the existing weak edges. If a weak edge does not neighbor a strong edge, then it is likely due to noise, so we consider it to not be an edge. If a weak edge does neighbor a strong edge, then consider it a strong edge as well.