Есть ли способ скопировать scikit.measure.label для обнаружения краев в Numpy? - PullRequest
0 голосов
/ 23 сентября 2018

Я знаю, что это легкомысленный вопрос, но есть ли способ воспроизвести эту функциональность без использования библиотеки scikit?

Этот вопрос по сути то, что я пытаюсь сделать.Насколько я понял, возможно, использую концепцию соседей через мета-массив, но я все еще борюсь с идеей, как разделить это на разные массивы для каждого набора соседей.

Редактировать:Извините, я не задавал много вопросов здесь, понял, что это трудно без реальных примеров.

Например, учитывая массив numpy:

[ 0, 0, 1, 1, 0, 0 ]
[ 0, 0, 1, 0, 0, 0 ]
[ 0, 0, 1, 1, 0, 0 ]
[ 0, 0, 0, 0, 0, 0 ]
[ 0, 1, 1, 1, 0, 0 ]
[ 0, 1, 1, 0, 0, 0 ]

Я пытаюсь получить вывод, который два разныхмассивы с указателем расположения значений касания (исключая нули).Итак, желаемый результат:

output1 = [[0,2], [0,3], [1,2], [2,2], [2,3]]
output2 = [[4,1], [4,2], [4,3], [5,1], [5,2]]

Правка № 2: я добился определенного прогресса.Теперь я могу создать список списков.Вот код:

data = np.asarray(image_x)
vals = np.argwhere(data == 0)
list = []
listoflists = []
row = -1
for x in range(0, vals.shape[0]):
    for y in range(0, vals.shape[1]-1):
        if row == -1:
            row = vals[x][0]
        if row == vals[x][0]:
            list.append(vals[x][1])
        else:
            listoflists.append((vals[x-1][0], list))
            row = vals[x][0]
            list = []
            list.append(vals[x][1])

Примечания:

  • image_x - черно-белое изображение контуров формы
  • Цикл в настоящее время не захватываетпиксель, если это один пиксель в одной строке в самом конце.Я устраняю это сейчас, просто хотел опубликовать обновление в моем волнении.
...