python求表面积代码_用于计算python中的体积或表面积的良好算法
我正在尝试计算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中的体积或表面积的良好算法相关推荐
- python重复三角形代码_用于检查Python中两个三角形的一致性的程序
在本教程中,我们将检查两个三角形的一致性.我们将检查SSS,SAS和AAA.基于这些标准证明了三角形的相似性. 我们必须根据定理检查不同的条件.在下面的代码中检查它们. 示例def side_side ...
- python 求函数最大值_遗传算法与Python图解
import matplotlib.pyplot as plt import numpy as np import random import pandas as pd 遗传算法求函数最值 遗传算法的 ...
- python项目软件代码_七套Python库快速提升您项目的代码可维护性,软件工程,代码库...
保护项目未来可维护性的一种理想方式,在于利用外部库检查您的代码运行状况.以下是目前开发人员最喜爱的的代码梳理库,它们能够以强制方式执行一致性样式,并确保项目在成熟之后仍具备可接受的测试覆盖率. 当软件 ...
- python画动物代码_如何用python画简单的动物_后端开发
python3.x完全兼容python2.x吗?_后端开发 可以说是完全不兼容.相对于Python的早期版本,Python3是一个较大的升级,为了不带入过多的累赘,Python 3.0在设计的时候没有 ...
- python求成绩平均值_(生活)使用Python计算学生成绩平均值
今天发现了一个比较复杂的成绩文本,个人并不想手动去除其中的空格以及其他数据,于是就使用了python中的正则表达式来计算 下面放的是这次的成绩文本,文本文件名我命名为a.txt 433 91 89 4 ...
- 用python求正方形周长_用于正方形、矩形和ci的周长和面积的单独函数
嘿,伙计们,我对Python和一般的编码还很陌生,我想知道为什么我的代码不能工作.我一直有两个错误.我很沮丧,我已经在这干了几个小时了.谢谢 这些是我一直收到的错误. Typeerror:**或pow ...
- 用python画机器猫代码_如何用Python画一只机器猫?| 原力计划
原标题:如何用Python画一只机器猫?| 原力计划 作者 | 人邮异步社区 责编 | 胡巍巍 出品 | CSDN博客 自信心是成功的源泉,对刚入门编程行业的初级程序员来说,多敲代码多做项目就是构建自 ...
- python求线段长度_如何用python求线段长度
我想用Python计算线段的长度(任意数量).我使用了下面的代码,但是我遇到元组不能将减法作为操作数.我怎样才能克服呢?我想知道我是否错过了任何重要的Python概念.在from itertools ...
- python语言画图代码_零: python matplotlib 画图进阶(含完整代码)
导论: 在科研和研究的过程中,无论是哪个学科或者将来走上工作岗位,可视化是非常重要的一个环节. 这里的重要性,在我看来有三点:人是视觉动物,老板看你工作做的怎么样,paper reviewer看你研究 ...
最新文章
- Java怎么把数组怎么放入set,如何将数组转换为Java中的Set
- 如何向mysql表中添加数据类型_java中怎么把data类型的数据添加到数据库?
- Hinton 发表新作探索流体胶囊网络 | AI日报
- 浏览器本地存储简单了解一下
- 9.2 mnist_with_summaries tensorboard 可视化展示
- CSS3动画(典型模板)
- 文献学习(part30)--Clustering of temporal gene expression data by regularized spline regression and...
- ZooKeeper Programmer's Guide(3.4.6)英文快读
- java http zip参数,如何从Web API 2 HttpGet发送zip文件
- 软件测试的目标及组织测试过程
- 目标检测——各个框架下Tensor和矩阵的维度次序
- 镜头上的四线电机怎么驱动_MS3988/N双路步进电机驱动MS4982内置16细分单路步进电机驱动MS41908M摄像机用镜头聚焦、变倍、自动...
- NOIP2018游记(更新完毕)
- Android 去除头部标题
- Taskctl安装以及简单使用
- java中文汉字转英文拼音工具类(无需引用外部pom)
- 传化智联如何拿下第248张第三方支付牌照
- 复盘:企业微信中国发展简史
- 打台球百发百中?油管博主球杆上“做手脚”
- 操作既简单、实用性强的文件批量改名高手