Вращение области просмотра 3D Slicer на пути модели в питоне - PullRequest
0 голосов
/ 16 июня 2019

Я не уверен, есть ли здесь разработчики 3D Slicer, которые могли бы помочь, но я решил, что стоит попробовать.Я разрабатываю расширение, которое основано на модуле эндоскопии.Модуль эндоскопии создает модель пути из набора опорных точек.Я использую эту модель траектории, чтобы установить плоскую проекцию, которая является нормальной к траектории, по которой он следует, а затем отображать эту проекцию в одном из окон просмотра.

Проблема заключается в том, что иногда отображаемая плоскость случайным образом вращается вокруг плоскости.нормальный (или параллельный путь), и я не уверен, как исправить, чтобы ориентация была статической.См. Прикрепленный фрагмент кода алгоритма, который выполняет это рендеринг, и снимок экрана проблемы.

def reslice_on_path(self, p0, pN, orientation='normal'):
  fx=np.poly1d(np.polyfit([p0[0],pN[0]],[p0[1],pN[1]], 1))
  fdx = np.polyder(fx)
  normal_line = lambda x: (-1/fdx(p0[0]))*(x-p0[0])+p0[1]
  t=np.array([p0[0]+0.00001,normal_line(p0[0]+0.00001),p0[2]], dtype='f')
  t=t-p0
  n=pN-p0
  t.astype(float)
  n.astype(float)
  p0.astype(float)
  sliceNode = slicer.mrmlScene.GetNodeByID("vtkMRMLSliceNodeGreen")
  if orientation == 'normal': orientation = 0
  elif orientation == 'tangent': orientation = 1
  sliceNode.SetSliceToRASByNTP(n[0], n[1], n[2], t[0], t[1], t[2], p0[0], p0[1], p0[2], orientation)
  sliceNode.Modified()

bug capture

Ответы [ 2 ]

0 голосов
/ 18 июня 2019

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

В последних версиях 3D Slicer есть выделенная криваяузел (vtkMRMLMarkupsCurveNode), который обеспечивает согласованное, плавно изменяющееся касательное и нормальное направление кривой на основе кадра Френе-Серре.Вы можете использовать эти указания для изменения объема.Подробнее в этом сообщении .

0 голосов
/ 17 июня 2019

В библиотеке есть «Volume Slicer» для «ноутбуков Jupyper».

https://plot.ly/python/visualizing-mri-volume-slices/

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...