Contours and connected components
Contour extraction operations can be considered halfway between feature extraction and segmentation, since a binary image is produced in which image contours are separated from other homogeneous regions. Contours will typically correspond to object boundaries.
While a number of simple methods detect edges in images (for example, the Sobel and Laplace filters), the Canny method is a robust algorithm for doing this.
Note
This method uses two thresholds to decide whether a pixel is an edge. In what is called a hysteresis procedure, a lower and an upper threshold are used (see http://docs.opencv.org/doc/tutorials/imgproc/imgtrans/canny_detector/canny_detector.html). Since OpenCV already includes a good example of the Canny edge detector (in [opencv_source_code]/samples/cpp/edge.cpp
), we do not include one here (but see the following floodFill
example). Instead, we will go on to describe other highly useful functions based on detected edges.
To detect straight lines...