Example #1
0
def iaseshow(B, option="NORMAL"):
    from ia870 import iaisbinary, iaintersec, iagray, iabinary
    from ia870 import iasedil, iaero, iabshow

    option = upper(option)
    if option == 'NON-FLAT':
        y = array([0], int32)
        if iaisbinary(B):
            B = iaintersec(iagray(B, 'int32'), 0)
    elif option == 'NORMAL':
        if iaisbinary(B): y = iabinary([1])
        else:
            y = array([0], int32)
    elif option == 'EXPAND':
        assert iaisbinary(B), 'This option is only available with flat SE'
        y = iasedil(iabinary([1]), B)
        b1 = iabinary(y >= 0)
        b0 = b1 < 0
        b0[shape(b0)[0] / 2, shape(b0)[1] / 2] = 1
        y = iabshow(b1, y, b0)
        return y
    else:
        print('iaseshow: not a valid flag: NORMAL, EXPAND or NON-FLAT')

    y = iasedil(y, B)
    return y
Example #2
0
def iaseshow(B, option="NORMAL"):
    from ia870 import iaisbinary, iaintersec, iagray, iabinary
    from ia870 import iasedil, iaero, iabshow

    option = upper(option)
    if option == "NON-FLAT":
        y = array([0], int32)
        if iaisbinary(B):
            B = iaintersec(iagray(B, "int32"), 0)
    elif option == "NORMAL":
        if iaisbinary(B):
            y = iabinary([1])
        else:
            y = array([0], int32)
    elif option == "EXPAND":
        assert iaisbinary(B), "This option is only available with flat SE"
        y = iasedil(iabinary([1]), B)
        b1 = iabinary(y >= 0)
        b0 = b1 < 0
        b0[shape(b0)[0] / 2, shape(b0)[1] / 2] = 1
        y = iabshow(b1, y, b0)
        return y
    else:
        print "iaseshow: not a valid flag: NORMAL, EXPAND or NON-FLAT"

    y = iasedil(y, B)
    return y
Example #3
0
def iasedisk(r=3, DIM="2D", METRIC="EUCLIDEAN", FLAT="FLAT", h=0):
    from ia870 import iabinary, iasecross, iasedil, iasesum
    from ia870 import iasebox, iaseintersec, iagray

    METRIC = METRIC.upper()
    FLAT = FLAT.upper()
    assert DIM == '2D', 'Supports only 2D structuring elements'
    if FLAT == 'FLAT': y = iabinary([1])
    else: y = int32([h])
    if r == 0: return y
    if METRIC == 'CITY-BLOCK':
        if FLAT == 'FLAT':
            b = iasecross(1)
        else:
            b = int32([[-2147483647, 0, -2147483647], [0, 1, 0],
                       [-2147483647, 0, -2147483647]])
        return iasedil(y, iasesum(b, r))
    elif METRIC == 'CHESSBOARD':
        if FLAT == 'FLAT':
            b = iasebox(1)
        else:
            b = int32([[1, 1, 1], [1, 1, 1], [1, 1, 1]])
        return iasedil(y, iasesum(b, r))
    elif METRIC == 'OCTAGON':
        if FLAT == 'FLAT':
            b1, b2 = iasebox(1), iasecross(1)
        else:
            b1 = int32([[1, 1, 1], [1, 1, 1], [1, 1, 1]])
            b2 = int32([[-2147483647, 0, -2147483647], [0, 1, 0],
                        [-2147483647, 0, -2147483647]])
        if r == 1: return b1
        else:
            return iasedil(iasedil(y, iasesum(b1, r // 2)),
                           iasesum(b2, (r + 1) // 2))
    elif METRIC == 'EUCLIDEAN':
        v = arange(-r, r + 1)
        x = resize(v, (len(v), len(v)))
        y = transpose(x)
        Be = iabinary(sqrt(x * x + y * y) <= (r + 0.5))
        if FLAT == 'FLAT':
            return Be
        be = h + int32(
            sqrt(maximum((r + 0.5) * (r + 0.5) - (x * x) - (y * y), 0)))
        be = iaintersec(iagray(Be, 'int32'), be)
        return be
    else:
        assert 0, 'Non valid metric'

    return B
Example #4
0
def iasesum(B, N=1):
    from ia870 import iaisbinary, iabinary, iasedil

    if N==0:
        if iaisbinary(B): return iabinary([1])
        else:             return array([0],int32) # identity
    NB = B
    for i in range(N-1):
        NB = iasedil(NB,B)
    return NB
Example #5
0
def iasesum(B, N=1):
    from ia870 import iaisbinary, iabinary, iasedil

    if N == 0:
        if iaisbinary(B): return iabinary([1])
        else: return array([0], int32)  # identity
    NB = B
    for i in range(N - 1):
        NB = iasedil(NB, B)
    return NB