-
I am I am Johannes Hommel, a PostDoc at the University of Stuttgart, and more or less recently started using PoreSpy to extract pore networks from CT images of sintered glass bead columns in which calcite was precipitated and, more recently, 3D reconstructions of "quasi-2D" mircofluidic experiments, which were imaged by simple microscopy. Due to the precipitation over time, the initially identical images in the z-direction will become different as more and more calcite accumulates. This is also why I would like to have the resolution of the z-direction, reconstructed from the 2D microscopy images as fine as possible. However, concerning this email, everything I write relates to the "empty/clean" cells, so the resulting pore network should indeed be 2-dimensional and the height of all pore throats and pore bodies be simply the resolution of the reconstruction in z-direction. In the "quasi-2D" setups, it became suddenly quite obvious, that the throat diameters as extracted by PoreSpy (I have the 1.3.1 version installed) seem off. Especially odd is that the throat inscribed diameter, which in a "quasi-2D" setup should be <= the height of the microfluidic cell, seems to vary greatly and often is 2 to 5 times the microfluidic cell's height. The throat equivalent diameter is also at times much larger than the microfluidic cell's height, but this is to be expected as some of the throats in the cell are often much wider than the microfluidic cell's height. Really strange is that, in general, the throat inscribed diameters are larger than the throat equivalent diameters, although I did not compare the values for all the few thousand throats. I initially suspected that for some reasons, the created pore network is not completely flat (2D), but all the pore bodies have the same coordiantes in z direction, so I guess having throats with some angle to the x,y plane cannot be the reason for the large throat diameters. Interestingly, the the pore (body) diameters seem correct. Additionally, I noted that when I increase the resolution of the reconstruction of the 2D microscopy in the 3rd direction, and thus also in the other two dimensions, the pore network gets oversegmented resulting in more than one "pore" in the network where I visually would assign only a single pore. I could somewhat, but not completely, compensate by trying to adjust the "r" and "sigma" parameters of the SNOW Algorithm. I would greatly appreciate any hints at what to look at in detail to figure out if/when/where somethings goes wrong or any other advice. I can also provide some examples (geometries, csv tables with the extracted pore networks and pore/throat parameters, ...) as needed, but wanted to wait for if and what you exactly deem necessary. |
Beta Was this translation helpful? Give feedback.
Replies: 2 comments 22 replies
-
Interesting. The inscribed diameter should certainly not exceed the model height, so your concerns are valid there. I will have to investigate and get back to you. Would you be able to send me a 2D image of our micromodel? I can then pad it into 3D. Regarding the over-segmentation, this is just a common problem with the watershed. We have tried to reduce this as much as possible with our algorithm, but it's never going to be perfect for all cases. |
Beta Was this translation helpful? Give feedback.
-
When you tile this image to make it 'thick', you need to put 0's on the top and bottom to represent the plates or glass covers or whatever you have there. Otherwise the distance transform will treat the z-direction as infinite, so the nearest solid will be the pillar, not the plates. This may also help with the watershed partitioning problem since the contours of the distance transform will be better defined. The following code snippet explains how to do this: import porespy as ps
import imageio
import numpy as np
import matplotlib.pyplot as plt
im = imageio.imread('micromodel.png')
im = np.tile(np.atleast_3d(im), reps=[1, 1, 10])
im[..., 0] = 0
im[..., -1] = 0 |
Beta Was this translation helpful? Give feedback.
When you tile this image to make it 'thick', you need to put 0's on the top and bottom to represent the plates or glass covers or whatever you have there. Otherwise the distance transform will treat the z-direction as infinite, so the nearest solid will be the pillar, not the plates. This may also help with the watershed partitioning problem since the contours of the distance transform will be better defined. The following code snippet explains how to do this: