[mmblob] [Up] [mmpatspec] Measurements

mmlabelflat
Label the flat zones of gray-scale images.

Synopsis

y = mmlabelflat( f, Bc = None, _lambda = 0 )

Implemented in Python.

Input

f Image Gray-scale (uint8 or uint16) or binary image.
Bc Structuring Element

( connectivity).

Default: None (Diamond structuring element with radius 1)

_lambda Double

Connectivity given by |f(q)-f(p)|<=_lambda.

Default: 0

Output

y Image Gray-scale (uint8 or uint16) or binary image.

If number of labels is less than 65535, the data type is uint16, otherwise it is int32.

Description

mmlabelflat creates the image y by labeling the flat zones of f, according to the connectivity defined by the structuring element Bc. A flat zone is a connected region of the image domain in which all the pixels have the same gray-level ( lambda=0). When lambda is different than zero, a quasi-flat zone is detected where two neighboring pixels belong to the same region if their difference gray-levels is smaller or equal lambda. The minimum label of the output image is 1 and the maximum is the number of flat-zones in the image.

Equation

Source Code

def mmlabelflat(f, Bc=None, _lambda=0):
    from Numeric import allclose, ravel, nonzero, array
    if Bc is None: Bc = mmsecross()
    zero = mmbinary(mmsubm(f,f))       # zero image
    faux = mmneg(zero)
    r = array(zero)
    label = 1
    y = mmgray( zero,'uint16',0)          # zero image (output)
    while not allclose(faux,0):
        x=nonzero(ravel(faux))[0]        # get first unlabeled pixel
        fmark = array(zero)
        fmark.flat[x] = 1                # get the first unlabeled pixel
        f2aux = mmcmp( f, '==', ravel(f)[x])
        r = mminfrec( fmark, f2aux, Bc)  # detects all pixels connected to it
        faux = mmsubm( faux, r)          # remove them from faux
        r = mmgray( r,'uint16',label)    # label them with the value label
        y = mmunion( y, r)               # merge them with the labeled image
        label = label + 1
    return y
    

See also

mmlabel Label a binary image.
mmsebox Create a box structuring element.
mmsecross Cross structuring element.
mmblob Blob measurements from a labeled image.
[mmblob] [Up] [mmpatspec] Python