Как найти местоположения изображений с определенным значением в пакете изображений - PullRequest
0 голосов
/ 12 февраля 2019

У меня есть серия изображений с формой (N, C, H, W), где N - количество изображений, C - количество каналов, H, W - высота и ширина.

Каждое изображение имеет 2 канала с несколькими пикселямизначение [-1 , -1].

Как найти расположение этих пикселей в пакете без использования цикла for, поскольку он очень медленный.

Ответы [ 2 ]

0 голосов
/ 12 февраля 2019

Использование numpy.where:

# creating test data
test = np.zeros((5,2,3,3))
test[3,:,2,1] = [-1.,-1.]

value = -np.ones((1.,2.,1.,1.)) # this is the value you are looking for
np.where(test == value)

# this returns: (array([3, 3], dtype=int64),
#                array([0, 1], dtype=int64),
#                array([2, 2], dtype=int64),
#                array([1, 1], dtype=int64))

Редактировать: Чтобы получить соответствующую маску, просто не используйте where:

test == value
0 голосов
/ 12 февраля 2019

Вы можете использовать numpy.where.Простой пример:

x = np.random.randn(4,2,10,10)
x[0,1,2,3] = 1
x[0,1,4,5] = 1
np.where(x==1)

(массив ([0, 0], dtype = int64), массив ([1, 1], dtype = int64), массив ([2, 4]), dtype = int64), массив ([3, 5], dtype = int64))

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