MathKiller
MathKiller

Reputation: 39

scipy.ndimage measurements.labels algorithmunderstand

Well ,I am learning image processing with python.when I see the sentences below

 labels, nbr_objects = measurements.label(im)

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

 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:

>>> 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]])
>>> labeled_array, num_features = label(a)

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

>>> print num_features
4
>>> 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]])

So How can I understand the example and know the algorithm of measurements.labels

Upvotes: 3

Views: 2429

Answers (1)

Jalo
Jalo

Reputation: 1129

When you type 'help()' you generally obtain a short definition of what the function does, and it is focused on how the code works (different arguments, outputs...). For understanding the basis of the function, it is a better method to look at more theoretical explanations e.g. here and after that to look at the function definition.

The definition is quite obvious if you understand the labeling operation. To sum up, it is just distinguishing and then asigning a number ('labeling') to each of the regions in a binary image. So, it has 2 outputs: The number of regions and an array with the same shape as the input one with the different regions numbered.

Upvotes: 3

Related Questions