javascript - 在 python-vtk/three.js 中居中多数据模型的轴/枢轴

标签 javascript python python-2.7 three.js vtk

我正在根据一系列 dicom 图像创建 3D 模型。我使用的工作流程如下:

  • 使用 vtkDICOMImageReader 阅读 dicom 系列。
  • 使用 vtkImageThreshold 从卷中获取 Threshold 图像。
  • 使用离散行进立方体算法生成 3D 模型。
  • 使用 vtkPLYWriter 将输出写入 PLY 文件。

当我使用 meshlab 查看 ply 文件时,它看起来像 this (从后面)。

我面临的问题是,轴/枢轴不在模型的中心。那么有没有办法解决这个问题?我知道我需要使用 vtkTransformfilter 来完成它(我想,我可能是错的),但我只是不知道如何做。

我确实看过他们网站上提供的 vtk 示例,但它没有提供足够的信息来说明我想要什么。我也搜索了SO中的其他问题,但大多数都是使用vtkActors和渲染器,并没有解决我遇到的问题。

我使用的 dicom 集来自 here .

我还想知道是否可以在 Three.js 中执行此操作,例如加载模型然后将其居中?

谢谢

最佳答案

如果可以移动模型,那么可以定义模型的中心,将其变换到全局原点,然后将变换后的模型保存为PLY文件。

首先,您要定义模型的中心。一种快速而肮脏的方法可能是获得质心:

centerFilter = vtk.vtkCenterOfMass()
centerFilter.SetInputData(polydata)
centerFilter.SetUseScalarsAsWeights(False)
centerFilter.Update()
center = centerFilter.GetCenter()

然后你想转换你的模型:

transform = vtk.vtkTransform()
transform.Translate(-center[0], -center[1], -center[2])
transformFilter = vtk.vtkTransformPolyDataFilter()
transformFilter.SetInputData(polydata)
transformFilter.SetTransform(transform)
transformFilter.Update()
centeredPolydata = transformFilter.GetOutput()

然后用centeredPolydata写入输出的PLY文件。

注意:这将使居中模型与图像数据的关联变得更加困难。

关于javascript - 在 python-vtk/three.js 中居中多数据模型的轴/枢轴,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35619907/

相关文章:

php - 无法使 xmlhttprequest 发送方法正常工作

javascript - 迭代绑定(bind)到键的数组(动态)

python - __init__() 在转储的 json/__init__.py 中获得意外的关键字参数 'default'

python - 如何根据 python 中的自定义蒙版裁剪图像?

python - 如何提取之间的所有数据

Python.Net 无法导入 dll

javascript - 函数未在 onclick 事件中调用

javascript - AngularUI Select2 ajax : Selection not updating ng-model

python - 向量化 numpy 循环

python-2.7 - 如何使用python获取查看者的IP地址?