Как расширить / расширить массив? - PullRequest
0 голосов
/ 24 июня 2019

Я выполняю анализ изображения и генерирую семена в виде логического значения array:

import numpy as np

# Example output array
a = np.array([[False, False, False], [False, True, False], [False, False, False]])

>>> a
array([[False, False, False],
       [False,  True, False],
       [False, False, False]])

Поскольку я хочу выполнить последующий анализ области, окружающей значение True, я хочу расширить его (на определенное число, скажем, в пикселях). Это приведет к следующему:

>>> a
array([[False, True, False],
       [True, True, True],
       [False, True, False]])

Есть ли function или простой способ решения моей проблемы с "радиальным расширением"?

Спасибо заранее, BBQuercus

Ответы [ 2 ]

1 голос
/ 24 июня 2019

Решение с scipy.signal.convolve2d :

import numpy as np
from scipy.signal import convolve2d


# Example input
# [[False False False False False]
#  [False False  True  True False]
#  [False False False False False]
#  [False False False False False]
#  [False False False False  True]]
in_array = np.zeros((5, 5), dtype=bool)
in_array[1,2] = True
in_array[1,3] = True
in_array[4,4] = True

# Kernel: here you should define how much the True "dilates"

kernel = np.asarray([[False, True, False],
                     [True, True, True],
                     [False, True, False]])

# Convolution happens here
# Convolution is not possible for bool values though, so we convert to int and
# back. That works because bool(N) == True if N != 0.
result = convolve2d(in_array.astype(int), kernel.astype(int), mode='same').astype(bool)
print(result)

# Result:
# [[False False  True  True False]
#  [False  True  True  True  True]
#  [False False  True  True False]
#  [False False False False  True]
#  [False False False  True  True]]
0 голосов
/ 24 июня 2019

Я мог бы предложить простой способ создать массив большего размера и вставить в него меньший массив, как описано в:

Как "встроить" небольшой массив с numpy в предопределенный блок большого массива с numpy?

Я только начал пытаться отвечать на вопросы по stackoverflow, поэтому я новичок. Поэтому, пожалуйста, прости меня, если мой ответ слишком прост или не соответствует тому, что ты искал.

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