一套分析多孔材料三维图像的工具

poresp的Python项目详细描述


https://travis-ci.org/PMEAL/porespy.svg?branch=masterhttps://codecov.io/gh/PMEAL/PoreSpy/branch/master/graph/badge.svghttps://img.shields.io/badge/ReadTheDocs-GO-blue.svghttps://img.shields.io/pypi/v/porespy.svghttps://img.shields.io/badge/DOI-10.5281%2Fzenodo.2633284-blue.svg

引用为:

Gostick J, Khan ZA, Tranter TG, Kok MDR, Agnaou M, Sadeghi MA, Jervis R. PoreSpy: A Python Toolkit for Quantitative Analysis of Porous Media Images. Journal of Open Source Software, 2019. doi:10.5281/zenodo.2633284

什么是porespy?

porespy是一个图像分析工具的集合,用于提取信息 从多孔材料的三维图像(通常从X射线断层扫描获得)。 有许多软件包提供通用的图像分析工具(即 python环境中的skipage和scipy.ndimage,imagej,matlab的图像 处理工具箱),但所有这些都需要构建复杂的脚本或宏 完成多孔介质的特殊用途。porespy的目的是 为所有常见的多孔介质提供一套预写工具 测量。

porespy在很大程度上依赖于两个通用的图像分析软件包: scipy.ndimage 以及scikit-image也称为skipage。 前者包含各种通用图像分析工具,如图像 形态过滤器,而后者提供更复杂但仍然通用的 分水岭分割等功能。porespy没有复制任何 这些一般功能,因此您还必须安装并学习如何 利用它们从porespy那里得到最大的收益。porespy的功能一般是 使用skipage提供的几个更通用的函数构建 以及scipy。在porespy中有一些函数是被实现的 本机的,但只有在必要时。

能力

porespy由以下模块组成:

  • generators:生成多孔材料人造图像的例程,用于测试和说明
  • filters:接受图像并返回已更改图像的函数
  • metrics:用于量化图像属性的工具
  • simulations:基于物理过程的更复杂的计算
  • networks:将图像分析为孔隙网络的工具
  • visualization:用于创建图像的有用视图的帮助函数
  • io:以各种格式输出图像数据的函数,用于通用软件
  • tools:用于处理图像的各种有用工具

安装

porespy在很大程度上依赖于scipy堆栈。充分利用 功能环境是 Anaconda distribution。 请确保获得python 3.6+版本

一旦安装了conda,就可以安装porespy。它是可用的 在Python Package Index上,可以是 通过在conda提示符下键入以下命令安装:

pip install porespy

在windows上,您应该在 “开始”菜单中的“Python”程序组。这将打开一个windows命令 控制台,可以访问由conda添加的python特性,例如 通过pip安装内容。

在Mac或Linux上,您需要打开一个正常的终端窗口,然后键入 source activate {env}其中您将{env}替换为 要安装porespy的环境。如果你不知道这意味着什么, 然后使用source activate root,它将在根目录中安装porespy 默认的环境。

如果你认为你有兴趣为porespy做贡献并希望 使用编辑源代码,然后应该克隆 repository发送到本地计算机,然后 使用以下pip命令安装:

pip install -e "C:\path\to\the\local\files\"

有关投稿的信息,请参阅contributors guide

示例

下面的代码片段演示如何生成二维图像,应用 几个过滤器,并计算一些常用度量。 此repo中包含一组示例,可以是browsed here

生成图像

porespy提供了几种生成人工图像的方法,用于快速测试 开发工作流程网络,而不是处理读/写/存储 大的断层扫描。

importporespyaspsimportmatplotlib.pyplotaspltim=ps.generators.blobs(shape=[200,200],porosity=0.5,blobiness=2)plt.imshow(im)
https://github.com/PMEAL/porespy/raw/master/docs/_static/fig1.png

应用过滤器

普通的污秽要应用的er是局部厚度,它替换了每个体素 与之重叠的球体的半径。直方图分析 体素值提供有关孔径分布的信息。

lt=ps.filters.local_thickness(im)plt.imshow(lt)
https://github.com/PMEAL/porespy/raw/master/docs/_static/fig2.png

一种不太常见的过滤方法是在 给定的方向。有可能获得 通过观察每个原理中和弦长度的分布 方向。

cr=ps.filters.apply_chords(im)cr=ps.filters.flood(cr,mode='size')plt.imshow(cr)
https://github.com/PMEAL/porespy/raw/master/docs/_static/fig3.png

计算指标

metrics子模块包含几个分析二进制文件的公共函数 直接断层扫描。例如简单的孔隙度,以及两点 相关函数。

data=ps.metrics.two_point_correlation_fft(im)fig=plt.plot(*data,'bo-')plt.ylabel('probability')plt.xlabel('correlation length [voxels]')
https://github.com/PMEAL/porespy/raw/master/docs/_static/fig4.png

metrics子模块还包含一组生成图的函数 基于图像中通过过滤器(如local)的值 厚度。

mip=ps.filters.porosimetry(im)data=ps.metrics.pore_size_distribution(mip,log=False)plt.imshow(mip)# Now show intrusion curveplt.plot(data.R,data.cdf,'bo-')plt.xlabel('invasion size [voxels]')plt.ylabel('volume fraction invaded [voxels]')
https://github.com/PMEAL/porespy/raw/master/docs/_static/fig5.pnghttps://github.com/PMEAL/porespy/raw/master/docs/_static/fig6.png

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何在mybatis中捕获SQLException   java Spring XML自动连线记录器不确定目标类名   JavaSpringDataJPA:使用联接表进行排序和分页   JAVA循环的lang.NullPointerException数组   带Jetty和空密码的java双向SSL   当对象为类型时,java在tableview上显示图像   如何在GWT中从javascript到java获取返回类型“any”?(泛型类型传递)   java从ListView Android中的微调器获取选定值   java缓冲图像中较小的图像被裁剪,我如何解决这个问题?   java Spring MVC 3.1:使用SimpleUrlHandlerMapping和通用基本控制器时的问题   java在每次调用时生成唯一的随机数   java libGDX:在屏幕上移动多边形   java TextView未在应用程序中居中,但在match_约束中居中   在python中重复运行同一java函数的最佳方式是什么?