EBSD data is usually acquired on a regular grid. Hence, even over a finite number of grid points, all possible grain boundary directions can not be uniquely represented. One way of overcoming this problem - and also allowing to compute grid-independent curvatures and grain boundary directions - is the interpolation of grain boundary coordinates using `grains.smooth`

.

Proper smoothing has an influence on measures such as total grain boundary length, grain boundary curvature, triple point angles or grain boundary directions among others.

While we used `grains.smooth`

before, here we will illustrate the different options.

With the default parameters we have the following result

The grain boundary boundaries look noew a little bit more smooth and the total grain boundary length is reasonable reduced.

However, if we look at the frequnecy distribution of grain boundary segments, we find that some angle are over-represented which is due to the fact that without any additional input argument, `grains.smooth`

performs just a single iteration

## Effect of smoothing iterations

If we specify a larger number of iterations, we can see that the scatting around 0 and 90 degree decreases.

We can compare the histogram of the grain boundary directions of the entire map.

Note that we are still stuck with many segments at 0 and 90 degree positions which is due to the boundaries in question being too short for the sample size to deviate from the grid.

`grains.smooth`

usually keeps the triple junction positions locked. However, sometimes it is necessary (todo) to allow triple junctions to move.

Comparing the grain boundary direction histograms shows that we suppressed the gridding effect even a little more.

Be careful since this allows small grains to shrink with increasing number of smoothing iterations

Todo: different smoothing algorithms and 2nd order