# mmasf
Alternating Sequential Filtering

## Synopsis

y = mmasf( f, SEQ = "OC", b = None, n = 1 )

Implemented in Python.

### Input

f | Image Gray-scale (uint8 or uint16) or binary image.
SEQ | String 'OC', 'CO', 'OCO', 'COC'. Default: `"OC"`
b | Structuring Element Default: `None` (3x3 elementary cross)
n | Double Non-negative integer. (number of iterations). Default: `1`

### Output

y | Image

## Description

mmasf creates the image `y` by filtering the image `f` by `n` iterations of the close and open alternating sequential filter characterized by the structuring element `b`. The sequence of opening and closing is controlled by the parameter `SEQ`. 'OC' performs opening after closing, 'CO' performs closing after opening, 'OCO' performs opening after closing after opening, and 'COC' performs closing after opening after closing.

## Examples

Binary image:

    >>> f=mmreadgray('gear.tif')

    >>> g=mmasf(f,'oc',mmsecross(),2)

    >>> mmshow(f)

    >>> mmshow(g)

f | g |

Gray-scale image:

    >>> f=mmreadgray('fabric.tif')

    >>> g=mmasf(f,'oc',mmsecross(),3)

    >>> mmshow(f)

    >>> mmshow(g)

f | g |

## Equation

Case oc, close-open filter:
Case co, open-close filter:
Case oco:
Case coc:

## Source Code

    def mmasf(f, SEQ="OC", b=None, n=1):
        from string import upper
        if b is None: b = mmsecross()
        SEQ=upper(SEQ)
        y = f
        if SEQ == 'OC':
            for i in range(1,n+1):
                nb = mmsesum(b,i)
                y = mmopen(mmclose(y,nb),nb)
        elif SEQ == 'CO':
            for i in range(1,n+1):
                nb = mmsesum(b,i)
                y = mmclose(mmopen(y,nb),nb)
        elif SEQ == 'OCO':
            for i in range(1,n+1):
                nb = mmsesum(b,i)
                y = mmopen(mmclose(mmopen(y,nb),nb),nb)
        elif SEQ == 'COC':
            for i in range(1,n+1):
                nb = mmsesum(b,i)
                y = mmclose(mmopen(mmclose(y,nb),nb),nb)
        return y

## See also

mmfreedom | Control automatic data type conversion.
mmsebox | Create a box structuring element.
mmsecross | Diamond structuring element and elementary 3x3 cross.
mmopen | Morphological opening.
mmclose | Morphological closing.
mmasfrec | Reconstructive Alternating Sequential Filtering

[`mmcenter`] [Up] [`mmclose`] |
Copyright (c) 2003, Roberto A. Lotufo, UNICAMP-University of Campinas; Rubens C. Machado, CenPRA-Renato Archer Research Center.