| [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. |