grain3d.smoothBoundary edit page

smooth the boundary surfaces of 3d grains

Description

The vertices move, nothing else: the faces, the grains they separate and the voxels they carry stay. The boundary network is a stratified complex. Quadruple points, where four grains meet, are kept fixed. The 'hierarchical' scheme then smooths every triple line as a curve between its quadruple points and afterwards every boundary face as a surface between its triple lines, so that a junction is never averaged with the interior of a face. The 'coupled' scheme smooths all vertices at once and lets a triple line drift with the faces around it.

Which filter moves the vertices is a boundaryFilter, the same objects as in two dimensions: laplaceFilter shrinks every grain a little per iteration, taubinFilter keeps the volumes approximately, curvatureFilter and huberFilter solve for a smoothing length. The outer hull is fixed, so the volumes of all grains together are conserved exactly. 'maxDisplacement' bounds how far the surface may travel, half a voxel keeps a one voxel grain in place.

Syntax

grains = smoothBoundary(grains)
grains = smoothBoundary(grains,10)
grains = smoothBoundary(grains,taubinFilter(20))
grains = smoothBoundary(grains,curvatureFilter('smoothingLength',3))
grains = smoothBoundary(grains,10,'maxDisplacement',0.5)

Input

grains grain3d with triangular faces
iter number of iterations (default 1)

Options

scheme |'hierarchical'| (default) or |'coupled'|
maxDisplacement no vertex moves further than this from where it was

Flags

fixTripleLines keep the triple lines where they are
moveOuterBoundary let the vertices on the outer hull move

Output

grains grain3d

References

  • S. Maddali, S. Ta'asan, R. M. Suter, Topology-faithful nonparametric estimation and tracking of bulk interface networks, Computational Materials Science 125 (2016), the hierarchical scheme.
  • S. F. F. Gibson, Constrained elastic surface nets, MICCAI 1998, the bound on the displacement.

See also

grain2d.smoothBoundary grain3d.reduceBoundary grain3d.refineBoundary boundaryFilter

Citing this page. This page is part of the documentation of MTEX, a free and open source MATLAB toolbox for analyzing and modeling crystallographic textures. It was written by The MTEX Developers and is published at https://mtex-toolbox.github.io/grain3d.smoothBoundary.html. If you use MTEX, or reuse text or figures from this page, in your research, please cite

F. Bachmann, R. Hielscher, H. Schaeben: Texture Analysis with MTEX - Free and Open Source Software Toolbox, Solid State Phenomena 160 (2010), 63-68. 10.4028/www.scientific.net/SSP.160.63

BibTeX
@article{bachmann2010mtex,
  author  = {F. Bachmann and R. Hielscher and H. Schaeben},
  title   = {Texture Analysis with MTEX - Free and Open Source Software Toolbox},
  journal = {Solid State Phenomena},
  volume  = {160},
  pages   = {63-68},
  year    = {2010},
  doi     = {10.4028/www.scientific.net/SSP.160.63},
  url     = {https://doi.org/10.4028/www.scientific.net/SSP.160.63}
}

Other papers describing specific MTEX methods are listed under Publications — please cite the one that best fits your application. The MTEX source code is licensed under the GNU General Public License v2.0; the text and figures of this documentation are licensed under CC BY 4.0, which permits reuse — including by automated systems — provided The MTEX Developers and this page are credited.