用于计算python中的体积或表面积的良好算法

用于计算python中的体积或表面积的良好算法,第1张

概述我正在尝试计算3D numpy数组的体积(或表面积).在许多情况下,体素是各向异性的,并且我在每个方向上具有像素到厘米的转换因子. 有没有人知道找到工具包或包来做上述的好地方? 现在,我有一些内部代码,但我希望在准确性方面升级到更具工业实力的东西. 编辑1:这是一些(差)样本data.这比典型的球体小得多.我可以在生成它时添加更好的数据!它在(自我)肿瘤脑肿瘤中. 一种选择是使用VTK. (我将在 我正在尝试计算3D numpy数组的体积(或表面积).在许多情况下,体素是各向异性的,并且我在每个方向上具有像素到厘米的转换因子.

有没有人知道找到工具包或包来做上述的好地方?

现在,我有一些内部代码,但我希望在准确性方面升级到更具工业实力的东西.

编辑1:这是一些(差)样本data.这比典型的球体小得多.我可以在生成它时添加更好的数据!它在(自我)肿瘤脑肿瘤中.

解决方法 一种选择是使用VTK. (我将在这里使用tvtk python绑定…)

至少在某些情况下,获得等值面内的区域会更准确一些.

此外,就表面积而言,tvtk.MasspropertIEs也会计算表面积.它是mass.surface_area(下面代码中的mass对象).

import numpy as npfrom tvtk.API import tvtkdef main():    # Generate some data with anisotropic cells...    # x,y,and z will range from -2 to 2,but with a     # different (20,15,and 5 for x,and z) number of steps    x,z = np.mgrID[-2:2:20j,-2:2:15j,-2:2:5j]    r = np.sqrt(x**2 + y**2 + z**2)    dx,dy,dz = [np.diff(it,axis=a)[0,0] for it,a in zip((x,z),(0,1,2))]    # Your actual data is a binary (logical) array    max_radius = 1.5    data = (r <= max_radius).astype(np.int8)    IDeal_volume = 4.0 / 3 * max_radius**3 * np.pi    coarse_volume = data.sum() * dx * dy * dz    est_volume = vtk_volume(data,(dx,dz),(x.min(),y.min(),z.min()))    coarse_error = 100 * (coarse_volume - IDeal_volume) / IDeal_volume    vtk_error = 100 * (est_volume - IDeal_volume) / IDeal_volume    print 'IDeal volume',IDeal_volume    print 'Coarse approximation',coarse_volume,'Error',coarse_error,'%'    print 'VTK approximation',est_volume,vtk_error,'%'def vtk_volume(data,spacing=(1,1),origin=(0,0)):    data[data == 0] = -1    grID = tvtk.ImageData(spacing=spacing,origin=origin)    grID.point_data.scalars = data.T.ravel() # It wants fortran order???    grID.point_data.scalars.name = 'scalars'    grID.dimensions = data.shape    iso = tvtk.ImagemarchingCubes(input=grID)    mass = tvtk.MasspropertIEs(input=iso.output)    return mass.volumemain()

这会产生:

IDeal volume 14.1371669412Coarse approximation 14.7969924812 Error 4.66731094565 %VTK approximation 14.1954890878 Error 0.412544796894 %
总结

以上是内存溢出为你收集整理的用于计算python中的体积或表面积的良好算法全部内容,希望文章能够帮你解决用于计算python中的体积或表面积的良好算法所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1192666.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存