1D не максимальное подавление в Python / scipy - PullRequest
5 голосов
/ 29 августа 2011

Есть ли у вас 1D алгоритм не максимального подавления, написанный на Python.Он мне нужен для создания детектора контуров Canny в Python с использованием scipy, который принимает в качестве входных данных вектор интенсивности 1D.

Я просмотрел в Интернете много информации, описывающей поведение края Cannyдетектор и некоторые примеры, написанные на Java, но все они описывают обнаружение фронта в 2D.

Однако scipy поддерживает другие алгоритмы, необходимые для обнаружения фронта Канни, а именно гауссовскую фильтрацию и дифференцирование для 1D.

Заранее спасибо.

1 Ответ

2 голосов
/ 06 сентября 2011

Вы имеете в виду максимальный фильтр?Если это так, взгляните на scipy.ndimage.maximum_filter1d

В качестве быстрого примера:

import numpy as np
import scipy.ndimage as ndimage

input = np.sin(np.linspace(0, 4*np.pi, 20))
input = (input * 10).astype(np.int) # Makes it easier to read
output = ndimage.maximum_filter1d(input, 4)

print 'In: ', input
print 'Out:', output

Это дает:

In:  [ 0  6  9  9  4 -1 -7 -9 -8 -3  3  8  9  7  1 -4 -9 -9 -6  0]
Out: [ 6  9  9  9  9  9  4 -1 -3  3  8  9  9  9  9  7  1 -4  0  0]
...