edge tracking by hysteresis python
bottom_to_top = image.copy() for row in range(image_row - 1, 0, -1): for col in range(image_col - 1, 0, -1): if bottom_to_top[row, col] == weak: if bottom_to_top[row, col + 1] == 255 or bottom_to_top[row, col - 1] == 255 or bottom_to_top[row - 1, col] == 255 or bottom_to_top[ row + 1, col] == 255 or bottom_to_top[ row - 1, col - 1] == 255 or bottom_to_top[row + 1, col - 1] == 255 or bottom_to_top[row - 1, col + 1] == 255 or bottom_to_top[ row + 1, col + 1] == 255: bottom_to_top[row, col] = 255 else: bottom_to_top[row, col] = 0 right_to_left = image.copy() for row in range(1, image_row): for col in range(image_col - 1, 0, -1): if right_to_left[row, col] == weak: if right_to_left[row, col + 1] == 255 or right_to_left[row, col - 1] == 255 or right_to_left[row - 1, col] == 255 or right_to_left[ row + 1, col] == 255 or right_to_left[ row - 1, col - 1] == 255 or right_to_left[row + 1, col - 1] == 255 or right_to_left[row - 1, col + 1] == 255 or right_to_left[ row + 1, col + 1] == 255: right_to_left[row, col] = 255 else: right_to_left[row, col] = 0 left_to_right = image.copy() for row in range(image_row - 1, 0, -1): for col in range(1, image_col): if left_to_right[row, col] == weak: if left_to_right[row, col + 1] == 255 or left_to_right[row, col - 1] == 255 or left_to_right[row - 1, col] == 255 or left_to_right[ row + 1, col] == 255 or left_to_right[ row - 1, col - 1] == 255 or left_to_right[row + 1, col - 1] == 255 or left_to_right[row - 1, col + 1] == 255 or left_to_right[ row + 1, col + 1] == 255: left_to_right[row, col] = 255 else: left_to_right[row, col] = 0