Как эффективно рассчитать расстояние до ближайшей 1 в маске в numpy? - PullRequest
5 голосов
/ 12 марта 2012

В numpy у меня есть 2d массив 1 и 0.Мне нужно вычислить новый массив (те же размеры), где каждый элемент содержит расстояние до ближайшей 1 от соответствующей точки в массиве маски.

например,

a=np.array(
[[1,1,0],
[1,0,0],
[1,0,0]])

Мне нужно bвыглядеть так:

array([[0,0,1],
       [0,1,1.41],
       [0,1,2]])

PS.Я буду делать это на очень больших массивах, поэтому, чем эффективнее, тем лучше!Спасибо!

1 Ответ

10 голосов
/ 12 марта 2012

Вы ищете эквивалент MATLAB bwdist;проверьте этот ТАК вопрос для более подробной информации.Короткий ответ - использовать scipy.ndimage.morphology.distance_transform_edt.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...