scipy.ndimage measurements.labels algorithmunderstand
<p>Well ,I am learning image processing with python.when I see the sentences below </p>

<pre><code> labels, nbr_objects = measurements.label(im)
</code></pre>

<p>I want to know the algorithm behind it, So I go to the definition of "label" and see an example which is showed below</p>

<pre><code> Parameters
    ----------
    **input** : array_like
        An array-like object to be labeled.  Any non-zero values in `input` are
        counted as features and zero values are considered the background.
    **structure** : array_like, optional
        A structuring element that defines feature connections.
        `structure` must be symmetric.  If no structuring element is provided,
        one is automatically generated with a squared connectivity equal to
        one.  That is, for a 2-D `input` array, the default structuring element
        is::

                       [[0,1,0],
                        [1,1,1],
                        [0,1,0]]

     **output** : (None, data-type, array_like), optional
           If 'output' is a data type, it specifies the type of the resulting  labeled feature array
           If 'output' is an array-like object, then `output` will be updated
    with the labeled features from this function

Returns
-------
labeled_array : array_like
    An array-like object where each unique feature has a unique value
num_features : int
    How many objects were found

If `output` is None or a data type, this function returns a tuple,
(`labeled_array`, `num_features`).

If `output` is an array, then it will be updated with values in
`labeled_array` and only `num_features` will be returned by this function.


See Also
--------
find_objects : generate a list of slices for the labeled features (or
               objects); useful for finding features' position or
               dimensions

Examples
--------

Create an image with some features, then label it using the default
(cross-shaped) structuring element:

&gt;&gt;&gt; a = array([[0,0,1,1,0,0],
...            [0,0,0,1,0,0],
...            [1,1,0,0,1,0],
...            [0,0,0,1,0,0]])
&gt;&gt;&gt; labeled_array, num_features = label(a)

Each of the 4 features are labeled with a different integer:

&gt;&gt;&gt; print num_features
4
&gt;&gt;&gt; print labeled_array
array([[0, 0, 1, 1, 0, 0],
       [0, 0, 0, 1, 0, 0],
       [2, 2, 0, 0, 3, 0],
       [0, 0, 0, 4, 0, 0]])
</code></pre>

<p>So How can I understand the example and know the algorithm of measurements.labels</p>