LINUX.ORG.RU

Сегментация трехмерного грида

 , , ,


0

2

Есть трехмерная решетка, заполненная значениями. После обрезки по некому трешхолду получается приблизительно следующая картина: http://vsb.fbb.msu.ru/share/2017-10-22-191536_1918x1177_scrot.png

Хочется: выделить все непрерывные ненулевые (возможно с предварительным префиллом или гауссовым блюром) зоны (фиолетовые) и нарезать их в отдельные подмассивы.

В сторону каких библиотек на питоне или, хотя бы, алгоритмов смотреть?

★★★★★

Последнее исправление: silw (всего исправлений: 1)

Может имеет смысл использовать собственную реализацию разреженного массива?

PeKar
()
Ответ на: комментарий от shty

1) принято.

2) выглядит как то, что надо! python-pcl биндинги тоже есть и как раз сегментация реализована.

3) спасибо за напоминание! я как-то уже забыл и про cgal. в свое время писал для нее обертки, включая базовые классы, так что, по идее, дописать для нескольких нужных функций тоже будет несложно.

silw ★★★★★
() автор топика

1. Для выделения --- подсчитать число компонент связности, в простейшем случае — «заливкой» какой-нибудь. 2. Структура данных (глобальная) --- Sparse voxel octrees, но, вообще, можно хранить каждую компоненту связности как массив номеров ячеек, из которых он состоит. Меньше особо не получится, в любом случае.

anonymous
()
Ответ на: комментарий от anonymous

«Заливка» - watershed? Как-то уже пробовал, но с наскоку вышло не очень. Попытаюсь еще раз.

Sparse voxel octrees - интересная штука, спасибо!

silw ★★★★★
() автор топика
Ответ на: комментарий от anonymous

Ага, знаю про него. Но в моем случае pymol - следствие специализации. Я занимаюсь моделированием биомолекул и пимол в этом деле очень полезен)

silw ★★★★★
() автор топика
Ответ на: комментарий от silw

Это еще проще, --- как в задачке про поиск пути в лабиринте. Или как в Paint-e.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.