A method of grainBoundary.

the boundary with the vertices dropped that carry no shape, Douglas-Peucker chain by chain; MATLAB’s grainBoundary.simplify

Syntax

gB = gB.simplify()

The pixel staircase straightened.

gB = gB.simplify(0.5)

A tolerance of 0.5 map units.

gB = gB.simplify(protect=vertexIds)

These vertices kept as well.

gB = gB.simplify(keepGrains=grains.id)

No grain of the list collapsed.

Description

A vertex is dropped when leaving it out moves the boundary by less than epsilon, so many vertices go along a straight run and none at a corner; on a pixel grid this turns a staircase into the straight line it approximates. The junctions, the ends of the chains, always stay, so which grains touch, and where, is unchanged; a closed chain keeps at least three vertices. The dropped vertices’ segments are merged as by reduce.

The default tolerance is the median segment length over sqrt(2): a staircase of spacing d never strays further than d / sqrt(2) from the line it approximates, the worst case being a boundary at 45 degree, so it removes the grid and nothing else.

Input

gB grainBoundary

Keywords

keyword default description
epsilon None the tolerance in the units of the map, how far the boundary may move; 0 leaves the boundary as it is, by default the median segment length over sqrt(2)
protect None the ids of the vertices that must stay, on top of the junctions
keepGrains None the ids of the grains that must keep a polygon: a grain smaller than epsilon would lose all its vertices and is not coarsened at all; MATLAB does this for every grain, grain2d.simplifyBoundary passes all of them

Output

gB grainBoundary, the simplified boundary

See also

grainBoundary.reduce, grainBoundary.refine, grain2d.simplifyBoundary, smoothBoundary

MATLAB’s grainBoundary.simplify

source

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/grainBoundary.simplify_py.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.