grain2d.refineBoundary edit page

refine grain boundary

Description

Resamples the grain boundaries at a constant spacing, so that the vertices are spread evenly along each boundary instead of sitting on the corners of the pixel grid. Junctions stay exactly where they are. This is the step that lets grain2d/smoothBoundary produce a genuinely smooth boundary rather than a finer staircase.

It is also what keeps a coarsened boundary from collapsing under the smoothing that follows. A simplifyBoundary leaves a curve as a handful of long chords, and a Laplacian run on those few, unevenly spaced vertices cuts the corners off the polygon they form - a circle of 15 pixel radius loses 14% of its area over 25 iterations. Resampling first brings that back to 0.4%.

Syntax

grains = refineBoundary(grains)
grains = refineBoundary(grains,delta)

Input

grains grain2d
delta new segment length (default: half the median segment length)

Output

grains grain2d

See also

grainBoundary.refine grain2d.simplifyBoundary grain2d.reduceBoundary grain2d.smoothBoundary