0

我喜欢从图像数据中获取特定的轮廓。我的主要目标是以网格形式重新划分多数据。所以我遵循以下管道:

  1. 使用 PolyDataToImageData 将多数据转换为图像

  2. 将上述图像输出转换为 vtkImageDataGeometryFilter

  3. 使用 vtkImplicitPolyDataDistance 计算与原始多数据的距离

  4. 在步骤 2 中将距离值复制到图像输出标量

    结果如下:

    在此处输入图像描述

  5. 然后我尝试使用 vtkContourFilter 通过 SetValue(0, 0.0) 获取 polydata。如您所见,结果并不完全正确:

    在此处输入图像描述

距离数组的值是https://pastebin.ubuntu.com/p/2mZsgdrcmX/它永远不是 0 所以我认为我在 SetValue 中做错了,但我也不确定如何获得特定的绿色轮廓。

有没有办法得到那些绿点轮廓?

4

1 回答 1

0

我不完全确定了解您的管道。

vtkContourFilter中,SetValue有两个参数。第一个是轮廓的 id(因为过滤器可以一次提取多个轮廓,请参阅SetNumberOfContours)。第二个是等值线的等值线。在这里,您将等值设置为 0.0。这意味着您想要距离原始数据集为 0 的点。看第一张图片,似乎这些是红点。如果您希望在绿点处有轮廓,则可能需要指定更高的标量值。

PS:如果您的管道的目标是拥有“更大版本”的形状,您还可以查看 vtkWarpVector(并为其提供多数据的法线)。

于 2020-08-26T07:35:36.427 回答