首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mayavi.mlab.pipeline.iso_surface.IsoSurface使用什么算法?

mayavi.mlab.pipeline.iso_surface.IsoSurface使用什么算法?
EN

Stack Overflow用户
提问于 2014-07-20 16:45:52
回答 1查看 1.2K关注 0票数 1

我一直在筛选Mayavi文档和谷歌,但是我找不到任何关于IsoSurface类使用什么算法的声明。如果有帮助,我的源数据来自传递给mayavi.mlab.pipeline.scalar_field函数的3D mayavi.mlab.pipeline.scalar_field数组。下面是在包含三维立方体的图像上使用iso_surface函数的代码:

代码语言:javascript
复制
import numpy as np
from mayavi import mlab
img = np.pad(np.ones((5,5,5)), 1, mode='constant')
src = mlab.pipeline.scalar_field(img, figure=False)
iso = mlab.pipeline.iso_surface(src, contours=0.5)

iso_surface函数生成IsoSurface的一个实例。mayavi\modules\iso_surface.py中的代码显示使用了mayavi.components.contour。mayavi\components\contour.py中的注释声明它包装了tvtk.ContourFilter。从tvtk\tvtk_classes.zip\tvtk_classes\contour_filter.py在本地安装中找到的代码中,我在ContourFilter类的__init__方法中找到了这样的代码:

代码语言:javascript
复制
tvtk_base.TVTKBase.__init__(self, vtk.vtkContourFilter, obj, update, **traits)

查看源代码 for vtkContourFilterwww.vtk.org上的相关文档,我看不到对发布的引用,也没有看到在那里实现的算法的名称。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-21 07:30:49

正如您已经发现的,Mayavi的iso_surface模块使用(最终)VTK的vtkContourFilter。在“可视化工具包:面向对象的3D图形方法,第4版”(Schroeder,Martin和Lorensen)一书中有几句话讲述了vtkContourFilter使用的算法。这本书的第198页:

VTK中的等高线是利用前面提出的行进立方体算法的变化来实现的。..。例如,四面体单元类型实现“行进四面体”并创建三角形原语,而三角形单元类型实现“行进三角形”并生成线段。

还有一个特定于图像数据的vtkMarchingCubes过滤器(在1d、2d或3d网格上有规则的间隔数据);这本书接着对3d卷的vtkMarchingCubesvtkContourFilter的执行时间进行了比较。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24852687

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档