Beispiel #1
0
def koponging(bw):
    bwr = bw.copy()
    
    # remove filler
    rollup, rolldown, rollleft, rollright = nph.roll_all(bwr)
    bwr -= bwr * rolldown * rollup * rollright * rollleft
    
    # remove zigzag
    rollup, rollright = nph.roll_up(bwr), nph.roll_right(bwr)
    rolldownleft = nph.roll_left(nph.roll_down(bwr))
    bwr -= bwr * rollup * rollright * (rolldownleft == False)
    
    rollright, rolldown = nph.roll_right(bwr), nph.roll_down(bwr)
    rollupleft = nph.roll_left(nph.roll_up(bwr))
    bwr -= bwr * rollright * rolldown * (rollupleft == False)
    
    rolldown, rollleft = nph.roll_down(bwr), nph.roll_left(bwr)
    rollupright = nph.roll_right(nph.roll_up(bwr))
    bwr -= bwr * rolldown * rollleft * (rollupright == False)
    
    rollleft, rollup = nph.roll_left(bwr), nph.roll_up(bwr)
    rolldownright = nph.roll_right(nph.roll_down(bwr))
    bwr -= bwr * rollleft * rollup * (rolldownright == False)
    
    return bwr
Beispiel #2
0
def get_identity(tulang):
    rollup, rolldown, rollleft, rollright = nph.roll_all(tulang)
    rollupleft = nph.roll_left(rollup)
    rollupright = nph.roll_right(rollup)
    rolldownleft = nph.roll_left(rolldown)
    rolldownright = nph.roll_right(rolldown)
    
    neighbors = tulang.astype(np.uint8)*(0+rollup+rolldown+rollleft+rollright+rollupleft+rollupright+rolldownleft+rolldownright)
    ujung_nonzero = (neighbors == 1).nonzero()
    simpangan_nonzero = (neighbors > 2).nonzero()
    
    ujung = []
    for i in range(0, ujung_nonzero[0].shape[0]):
        ujung.append((ujung_nonzero[0][i], ujung_nonzero[1][i]))
    
    simpangan = []
    for i in range(0, simpangan_nonzero[0].shape[0]):
        simpangan.append((simpangan_nonzero[0][i], simpangan_nonzero[1][i]))
    
    # remove redundant simpangan
    i = 0
    while i < len(simpangan):
        yi, xi = simpangan[i]
        j = i+1
        while j < len(simpangan):
            yj, xj = simpangan[j]
            if yi-1 <= yj <= yj+1 and xi-1 <= xj <= xi+1:
                simpangan.pop(j)
                j -= 1
            j += 1
        i += 1
    
    return (ujung, simpangan)