Радиальная выборка с SciPy

Я занимаюсь обработкой изображений с помощью scipy.ndimage. Учитывая кольцеобразный объект, я хотел бы создать «профиль» по его окружности. Профиль может быть чем-то вроде измерения толщины в различных точках кольца или средним сигналом вдоль «толщины» кольца.

Мне кажется, что я мог бы использовать ndimage.mean, если бы я мог сначала получить хорошее изображение этикетки.

Если мое кольцо выглядит так,

 A = array([[0, 0, 0, 0, 1, 0, 0, 0, 0, 0],
            [0, 0, 1, 1, 1, 1, 1, 1, 0, 0],
            [0, 0, 1, 1, 1, 1, 1, 1, 0, 0],
            [0, 0, 1, 1, 0, 0, 1, 1, 0, 0],
            [0, 0, 1, 1, 0, 0, 1, 1, 0, 0],
            [0, 0, 1, 1, 0, 0, 1, 1, 0, 0],
            [0, 0, 1, 1, 0, 0, 1, 1, 1, 0],
            [0, 0, 1, 1, 0, 0, 1, 1, 0, 0],
            [0, 0, 1, 1, 1, 1, 1, 1, 0, 0],
            [0, 0, 0, 0, 1, 0, 0, 0, 0, 0]])

Я мог бы получить «профиль средств» с numpy.mean( A, labels ), где labels.

array([[0,  0,  0,  0,  2,  0,  0,  0,  0,  0],
       [0,  0,  1,  1,  2,  3,  4,  4,  0,  0],
       [0,  0,  1,  1,  2,  3,  4,  5,  0,  0],
       [0,  0, 16, 16,  0,  0,  5,  5,  0,  0],
       [0,  0, 15, 15,  0,  0,  6,  6,  0,  0],
       [0,  0, 14, 14,  0,  0,  7,  7,  0,  0],
       [0,  0, 13, 13,  0,  0,  8,  8,  8,  0],
       [0,  0, 13, 12,  0,  0,  9,  9,  0,  0],
       [0,  0, 12, 12, 11, 10,  9,  9,  0,  0],
       [0,  0,  0,  0, 11,  0,  0,  0,  0,  0]])

Бьюсь об заклад, есть некоторые вещи интерполяции, которые останутся незамеченными, но это все, что я могу придумать самостоятельно.

Есть ли способ сгенерировать мое предложенное изображение labels? Есть ли лучший подход для создания моих профилей?


person ajwood    schedule 21.09.2012    source источник
comment
Я начал с этого ответа.   -  person ajwood    schedule 25.09.2012


Ответы (1)


Стандартное распределение вероятностей на круге (или сфере) — это распределение фон-Мизеса-Фишера.

Scipy поддерживает этот дистрибутив: http://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.vonmises.html

Таким образом, вы должны иметь возможность использовать функцию подгонки, чтобы найти параметры максимального правдоподобия для ваших данных.

person user1149913    schedule 21.09.2012
comment
Извините, я не понимаю. Не могли бы вы уточнить? - person ajwood; 21.09.2012
comment
Если у вас есть набор дискретных отсчетов под разными углами вдоль кольца, то вы можете подобрать распределение фон Мизеса с учетом этих измерений. Затем подобранное распределение даст вам вероятность того, что единица толщины присутствует под определенным углом. - person user1149913; 21.09.2012