SEM View and X-Ray View¶
Two synthetic renderings that make a segmented image look like the instruments people know. Neither is a physical simulation of the instrument. Both are quick ways to see depth and density in a stack of black-and-white slices, and to compare an image with a micrograph or radiograph of the same material.
- Solves a depth count along each axis (SEM View) and a projection of solid along each axis (X-Ray View)
- Method PoreSpy, on CPU
- Reports three depth-shaded views or three flat projections, stored with the image
- How to run it SEM View and X-Ray View in the User guide
Definition¶
Both views turn a segmented image into greyscale pictures. SEM View gives each voxel of a plane a brightness that falls with the depth of pore behind it; X-Ray View gives each line of voxels along an axis a brightness that falls with the amount of solid on it.
SEM View¶
A scanning electron micrograph of a fractured or polished surface shows depth: you see into the pores, and surfaces farther below the cut look darker. SEM View reproduces that depth cue for every slice of the image, along each axis.
For each axis \(a\), PoreStore scans every line of voxels in the \(+a\) direction, counting consecutive pore voxels and resetting the count to zero at each solid voxel. At a pore voxel, the count \(n(\mathbf{x})\) is the depth, in voxels, to the nearest solid behind it, looking towards \(-a\) into the pore from a plane cut at \(\mathbf{x}\). Solid voxels have \(n = 0\). A run of pore that starts at the image edge counts from 1. These are the counts of PoreSpy's linear distance transform in its forward mode.1 Brightness is
so solid cut by the plane is brightest, and deep pores fade to dark. Three 3D views are stored, one for slicing normal to each axis: the XY panel shows the view along z, XZ along y and YZ along x.
X-Ray View¶
A radiograph records how much material an X-ray beam passes through. X-Ray View projects the image along each axis and shades each line by the amount of solid on it:
where \((i, j)\) is a line of voxels along axis \(a\), \(\mathbf{x}_{ijk}\) its \(k\)-th voxel of \(N\), and \(N_s\) the number of solid voxels on it. The result is one flat picture per axis, dark where the sample is dense. It's PoreSpy's X-ray projection.1
It's a linear projection of solid path length, not a Beer–Lambert attenuation \(e^{-\mu \ell}\), with \(\mu\) an attenuation coefficient and \(\ell\) a path length, and it ignores beam hardening and the solid's composition. It's good for spotting density variation, not for quantitative radiography.
Reading the result¶
- Brightness is relative. SEM View counts down from the image's deepest run of pore, and X-Ray View is scaled by its densest line, which is always black. Compare grey levels within one image, not between images.
- Layers show along one axis only. X-Ray View sums along its axis, so a layer normal to that axis adds the same to every line and doesn't show, while a layer parallel to it shows as a band. Look along each axis.
- The low edge. A run of pore that starts at the image edge counts from 1, so in SEM View pores open to the edge at index 0 look shallower than they are.
References¶
-
J. T. Gostick et al., "PoreSpy: A Python toolkit for quantitative analysis of porous media images," Journal of Open Source Software 4 (2019) 1296. doi:10.21105/joss.01296 ↩↩