[mmareaclose] [Up] [mmasfrec] | Connected Operators |
Implemented in Python.
f | Image Gray-scale (uint8 or uint16) or binary image. |
a | Double non negative integer. |
Bc | Structuring Element ( connectivity). Default:
|
y | Image Same type of
|
mmareaopen removes any grain (i.e., connected component) with area less than
a
of a binary image
f
. The connectivity is given by the structuring element
Bc
. This operator is generalized to gray-scale images by applying the binary operator successively on slices of
f
taken from higher threshold levels to lower threshold levels.
>>> f=mmbinary(uint8([ [1, 1, 0, 0, 0, 0, 1], [1, 0, 1, 1, 1, 0, 1], [0, 0, 0, 0, 1, 0, 0]]))
>>> y=mmareaopen(f,4,mmsecross())
>>> print y
[[0 0 0 0 0 0 0] [0 0 1 1 1 0 0] [0 0 0 0 1 0 0]]
>>> f=uint8([ [10, 11, 0, 0, 0, 0, 20], [10, 0, 5, 8, 9, 0, 15], [10, 0, 0, 0, 10, 0, 0]])
>>> y=mmareaopen(f,4,mmsecross())
>>> print y
[[10 10 0 0 0 0 0] [10 0 5 5 5 0 0] [10 0 0 0 5 0 0]]
The structuring elements allowed are the elementary cross (4-connected) and the elementary box (8-connected).
def mmareaopen(f, a, Bc=None): if Bc is None: Bc = mmsecross() if mmisbinary(f): fr = mmlabel(f,Bc) # binary area open, use area measurement g = mmblob(fr,'area') y = mmthreshad(g,a) else: y = mmintersec(f,0) zero = mmbinary(y) k1 = mmstats(f,'min') k2 = mmstats(f,'max') for k in range(k1,k2+1): # gray-scale, use thresholding decomposition fk = mmthreshad(f,k) fo = mmareaopen(fk,a,Bc) if mmisequal(fo,zero): break y = mmunion(y, mmgray(fo,mmdatatype(f),k)) return y
mmfreedom | Control automatic data type conversion. |
mmlabel | Label a binary image. |
mmsebox | Create a box structuring element. |
mmsecross | Diamond structuring element and elementary 3x3 cross. |
mmareaclose | Area closing |
[mmareaclose] [Up] [mmasfrec] | ![]() |
Copyright (c) 2003, Roberto A. Lotufo, UNICAMP-University of Campinas; Rubens C. Machado, CenPRA-Renato Archer Research Center. |