如何解决在VTK中获取特定轮廓
我喜欢从图像数据中获取特定轮廓。 我的主要目标是重新整理网格形式的多数据。所以我遵循以下管道:
-
使用PolyDataToImageData将多数据转换为图像
-
将上述图像输出转换为vtkImageDataGeometryFilter
-
使用vtkImplicitPolyDataDistance计算与原始多数据的距离
-
在步骤2中将距离值复制到图像输出标量
结果如下:
-
然后我尝试使用vtkContourFilter来获取具有SetValue(0,0.0)的多数据。如您所见,结果并不完全正确:
距离数组的值是https://pastebin.ubuntu.com/p/2mZsgdrcmX/,并且永远不会为0,因此我认为我在SetValue中做错了,但是我也不知道如何获取特定的绿色轮廓。
有什么方法可以获取这些绿色点的轮廓吗?
解决方法
我不太确定您是否了解管道。
在vtkContourFilter中,SetValue采用两个参数。第一个是轮廓的ID(因为过滤器可以一次提取多个轮廓,请参见SetNumberOfContours)。第二个是轮廓的等值线。 在这里,将等值设置为0.0。这意味着您希望这些点位于原始数据集的距离0处。看第一张图像,似乎是这些红点。如果要在绿色点处绘制轮廓,则可能需要指定更高的标量值。
PS:如果管道的目标是使形状具有“更大的形状”,则还可以查看vtkWarpVector(并为其指定多数据的法线)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。