我正在尝试计算3D numpy数组的体积(或表面积).在许多情况下,体素是各向异性的,并且我在每个方向上具有像素到厘米的转换因子.

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

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

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

最佳答案 一种选择是使用VTK. (我将在这里使用tvtk python绑定…)

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

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

import numpy as np

from tvtk.api import tvtk

def 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, y, and z) number of steps

x,y,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,0] for it, a in zip((x,y,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, dy, 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, 'Error', vtk_error, '%'

def vtk_volume(data, spacing=(1,1,1), origin=(0,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.volume

main()

这会产生:

Ideal volume 14.1371669412

Coarse approximation 14.7969924812 Error 4.66731094565 %

VTK approximation 14.1954890878 Error 0.412544796894 %

python求表面积代码_用于计算python中的体积或表面积的良好算法相关推荐

  1. python重复三角形代码_用于检查Python中两个三角形的一致性的程序

    在本教程中,我们将检查两个三角形的一致性.我们将检查SSS,SAS和AAA.基于这些标准证明了三角形的相似性. 我们必须根据定理检查不同的条件.在下面的代码中检查它们. 示例def side_side ...

  2. python 求函数最大值_遗传算法与Python图解

    import matplotlib.pyplot as plt import numpy as np import random import pandas as pd 遗传算法求函数最值 遗传算法的 ...

  3. python项目软件代码_七套Python库快速提升您项目的代码可维护性,软件工程,代码库...

    保护项目未来可维护性的一种理想方式,在于利用外部库检查您的代码运行状况.以下是目前开发人员最喜爱的的代码梳理库,它们能够以强制方式执行一致性样式,并确保项目在成熟之后仍具备可接受的测试覆盖率. 当软件 ...

  4. python画动物代码_如何用python画简单的动物_后端开发

    python3.x完全兼容python2.x吗?_后端开发 可以说是完全不兼容.相对于Python的早期版本,Python3是一个较大的升级,为了不带入过多的累赘,Python 3.0在设计的时候没有 ...

  5. python求成绩平均值_(生活)使用Python计算学生成绩平均值

    今天发现了一个比较复杂的成绩文本,个人并不想手动去除其中的空格以及其他数据,于是就使用了python中的正则表达式来计算 下面放的是这次的成绩文本,文本文件名我命名为a.txt 433 91 89 4 ...

  6. 用python求正方形周长_用于正方形、矩形和ci的周长和面积的单独函数

    嘿,伙计们,我对Python和一般的编码还很陌生,我想知道为什么我的代码不能工作.我一直有两个错误.我很沮丧,我已经在这干了几个小时了.谢谢 这些是我一直收到的错误. Typeerror:**或pow ...

  7. 用python画机器猫代码_如何用Python画一只机器猫?| 原力计划

    原标题:如何用Python画一只机器猫?| 原力计划 作者 | 人邮异步社区 责编 | 胡巍巍 出品 | CSDN博客 自信心是成功的源泉,对刚入门编程行业的初级程序员来说,多敲代码多做项目就是构建自 ...

  8. python求线段长度_如何用python求线段长度

    我想用Python计算线段的长度(任意数量).我使用了下面的代码,但是我遇到元组不能将减法作为操作数.我怎样才能克服呢?我想知道我是否错过了任何重要的Python概念.在from itertools ...

  9. python语言画图代码_零: python matplotlib 画图进阶(含完整代码)

    导论: 在科研和研究的过程中,无论是哪个学科或者将来走上工作岗位,可视化是非常重要的一个环节. 这里的重要性,在我看来有三点:人是视觉动物,老板看你工作做的怎么样,paper reviewer看你研究 ...

最新文章

  1. Java怎么把数组怎么放入set,如何将数组转换为Java中的Set
  2. 如何向mysql表中添加数据类型_java中怎么把data类型的数据添加到数据库?
  3. Hinton 发表新作探索流体胶囊网络 | AI日报
  4. 浏览器本地存储简单了解一下
  5. 9.2 mnist_with_summaries tensorboard 可视化展示
  6. CSS3动画(典型模板)
  7. 文献学习(part30)--Clustering of temporal gene expression data by regularized spline regression and...
  8. ZooKeeper Programmer's Guide(3.4.6)英文快读
  9. java http zip参数,如何从Web API 2 HttpGet发送zip文件
  10. 软件测试的目标及组织测试过程
  11. 目标检测——各个框架下Tensor和矩阵的维度次序
  12. 镜头上的四线电机怎么驱动_MS3988/N双路步进电机驱动MS4982内置16细分单路步进电机驱动MS41908M摄像机用镜头聚焦、变倍、自动...
  13. NOIP2018游记(更新完毕)
  14. Android 去除头部标题
  15. Taskctl安装以及简单使用
  16. java中文汉字转英文拼音工具类(无需引用外部pom)
  17. 传化智联如何拿下第248张第三方支付牌照
  18. 复盘:企业微信中国发展简史
  19. 打台球百发百中?油管博主球杆上“做手脚”
  20. 操作既简单、实用性强的文件批量改名高手

热门文章

  1. 滑动窗口—至多包含两个不同字符的最长子串(leetcode 159)
  2. 【RHCE】NFS服务器简介及简单共享目录配置
  3. 120行代码爬取电子书网站
  4. 归并排序【算法解析,代码模板】
  5. Win10家庭版升级至专业版
  6. 杨绛:她和谁都不争,和谁争都不屑
  7. 【PCL模块解析 05 之KDTree】01 KDTree原理及代码解析
  8. 机器学习——马尔可夫模型及马尔可夫决策过程(MDP)
  9. 远程进服务器怎么全屏显示,远程服务器如何全屏显示
  10. windows计划任务执行powershell脚本