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
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)