Соседние пиксели в двумерном массиве (изображение) с использованием Python

У меня есть пустой массив, подобный этому:

x = np.array([[1,2,3],[4,5,6],[7,8,9]])

Мне нужно создать функцию, назовем ее «соседи» со следующим входным параметром:

  • x: пустой массив 2d
  • (i,j): индекс элемента в массиве 2d
  • d: радиус окрестности

В качестве вывода я хочу получить соседей ячейки i,jс заданным расстоянием d. Итак, если я запущу

neighbors(im, i, j, d=1) with i = 1 and j = 1 (element value = 5) 

, я должен получить индексы следующих значений: [1,2,3,4,6,7,8,9]. Надеюсь, я ясно выразился. Есть ли какая-нибудь библиотека, подобная scipy, которая занимается этим?

Я сделал что-то работающее, но это грубое решение.

def pixel_neighbours(self, p):

    rows, cols = self.im.shape

    i, j = p[0], p[1]

    rmin = i - 1 if i - 1 >= 0 else 0
    rmax = i + 1 if i + 1 < rows else i

    cmin = j - 1 if j - 1 >= 0 else 0
    cmax = j + 1 if j + 1 < cols else j

    neighbours = []

    for x in xrange(rmin, rmax + 1):
        for y in xrange(cmin, cmax + 1):
            neighbours.append([x, y])
    neighbours.remove([p[0], p[1]])

    return neighbours

Как это улучшить?

15
задан blueSurfer 12 June 2012 в 13:06
поделиться