Как получить массив вокселей из списка трехмерных точек, которые составляют линию в воксализированном объеме? - PullRequest
0 голосов
/ 12 июня 2019

У меня есть список точек, которые представляют иглу / катетер в трехмерном томе. Этот объем воксализируется. Я хочу получить все воксели, которые пересекает линия, соединяющая точку. Линия должна пройти через все точки.

В идеале, поскольку круглая игла / катетер имеет ширину, я хотел бы иметь возможность получать воксели, которые пересекают фактический трехмерный объект, который является иглой / катетером. (Я предполагаю, что это намного сложнее, поэтому, если бы я мог получить ответ на первую проблему, я был бы очень счастлив!)

Я использую последнюю версию Anaconda (Python 3.7). Я видел некоторые похожие проблемы, но код всегда написан на C ++, и ни одна из них, похоже, не является тем, что я ищу. Я совершенно уверен, что мне нужно использовать raycasting или алгоритм 3D Брезенхэма, но я не знаю как.

Буду признателен за вашу помощь!

1 Ответ

0 голосов
/ 01 июля 2019

Я сам решил эту проблему.Для тех, кто интересуется, как, я объясню вкратце.

Во-первых, поскольку все катетеры направлены в общем направлении оси z, я получил толщину срезов вдоль этой оси.Обе входные точки приземляются на срез.Затем я получил координаты каждого пересечения между линией между двумя входными точками и z-срезами.Затем, поскольку я знаю радиус катетера и могу рассчитать угол между двумя точками, я смог нарисовать эллиптические контуры на каждом срезе вокруг точек, которые я ранее нашел (когда вы разрезали конус под углом и крест-сечение является эллипсом).Затем я получил координаты всех вокселей на каждом срезе вдоль оси z и проверил, какие воксели находятся в пределах моего пути эллипса.Те воксели, которые описывают объем катетера.Если вы хотите увидеть мой код, пожалуйста, дайте мне знать.

...