ImageDev

Computational Geometry

Algorithms transforming images into geometric objects.

Introduction to segment objects

Contour chaining involves representing edge lines of two-dimensional images as a list of consecutive pixels.
This change in the representation, called vectorization, is most suitable for binary lines of one pixel thickness resulting from the ZeroCrossings2d or ImageLocalMaxima2d algorithms.

Although many applications do not require vectorized edges, it results in a vast reduction of data, and it provides a representation more suitable for some algorithms. In particular, it is possible to process chains with computational geometry algorithms or 1D signal processing operators, and to solve problems that have a better formulation within these theories.

A chain consists of a list of adjacent pixels of an edge lying between two free ends, two triple points, or a free end and a triple point, as represented in Figure 1.
Chains are oriented, and the orientation may be a function of the gradient.
Each chain has a header containing information such as the size, the numbers of the previous or next connected chains, etc..

<b> Figure 1.</b> Chains representation
Figure 1. Chains representation

It makes data far less dependent on the digitization to approximate these chains as polygons composed of linear segments, as in Figure 2. This results in another reduction of data. A compression ratio of 1:50 from the original data is common. It is then possible to perform computations that would be very long otherwise.

<b> Figure 2.</b> Polygonal approximation with different value of angle
Figure 2. Polygonal approximation with different value of angle

There are many algorithms to find polygonal approximations of chains. We shall outline a polygonal approximation scheme based on cone covering.

Let $\alpha$ be an angle and $M_0$ the first point of the chain:
$M_0$ is then replaced by $M_h$ and the next end can be determined.

<b> Figure 4.</b> Chain definition
Figure 4. Chain definition

The $\alpha$ parameter can be interpreted as a scale factor. A small angle picks up short ranged variations in curvature and yields many segments. A large angle produces few segments but the resulting approximation is blind to local details.
The choice of a relevant $\alpha$ depends very much on the problem being studied.