У меня есть матрица трехмерных меток. Использование ndimage.sum
Я могу получить размеры помеченных объектов, что отлично подходит для фильтрации по объему. Мой вопрос: могу ли я легко получить размеры объектов вдоль каждой оси, чтобы устранить те, которые находятся только в одной плоскости, например?Размеры объектов по размеру?
Маленький код может быть яснее ...
from scipy import ndimage
labmat,n = ndimage.label(np.random.rand(30,30,30) > 0.99)
sizes = ndimage.sum(labmat.astype(bool),labmat,range(n+1))
Теперь вместо 1-мерного, представляющих объемов меченых объектов, есть способ иметь 3D-массив, представляющие их поверхность в каждом измерении? 30-мерный массив, представляющий их поверхности в каждой плоскости, также будет в порядке, хотя я бы предпочел первый вариант.
'find_objects' [игнорирует ярлыки со значением 0] (http://docs.scipy.org/doc/scipy-0.16.1/reference/generated/scipy. ndimage.measurements.find_objects.html # scipy.ndimage.measurements.find_objects). Таким образом, первая строка размеров соответствует значению метки 1. Обязательно удалите/измените 'np.random.seed (2016)' для проверки других случайных входов. 'mask = (размеры> 1) .all (axis = 1)' выбирает поля, которые отображаются в более чем одной плоскости в каждом измерении. Чтобы выбрать поля, которые отображаются в более чем 1 плоскости вдоль только первого измерения, используйте 'mask = (размеры [:, 0]> 1)'. – unutbu
О, ладно, я смутился, потом осознал это и удалил свой комментарий, прежде чем увидеть твое. Благодарю. – nicoco