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.