A method of EBSD.

the kernel average misorientation: the mean misorientation angle of every pixel to its neighbours; MATLAB’s KAM

Syntax

kam = ebsd['Forsterite'].KAM()

The nearest neighbours.

kam = KAM(ebsd, threshold=10*degree)

Misorientations above 10 degree left out.

kam = KAM(ebsd, order=2)

The neighbours up to the second order.

kam = KAM(ebsd, radius=3*ebsd.lattice.dxy)

The neighbours within a distance.

kam = KAM(ebsd, order=3, weights=lambda d: np.exp(-(d / dxy)**2))

Weighted by the distance.

kam = KAM(ebsd, max=True)

The largest angle instead of the mean.

Description

The neighbours of a pixel are those within order steps over the stencil of the lattice, square or hexagonal, or within a physical radius. Only neighbours of the same phase, both indexed, count, and on a map that carries grain ids (after calcGrains) only those of the same grain, so the grain boundaries are left out. A pixel with no neighbour to compare with is NaN. The map needs no grid: the lattice of a list is used too. The angles are in radian.

Input

ebsd EBSD

Keywords

keyword default description
order 1 the neighbours up to this many steps over the lattice
radius None the neighbours up to this distance, in the scan unit, instead of order
threshold inf a misorientation angle above it is left out
max False the largest misorientation angle instead of the mean
weights None a function of the distance of a neighbour, its weight in the mean

Output

kam array of the shape of the map, the angles in radian

Example

Compute nearest-neighbour KAM within reconstructed Forsterite grains. The small sample is downloaded and cached on first use; all displayed angles are in degrees.

import numpy as np
import matplotlib.pyplot as plt
from mtex import mtexdata, calcGrains, KAM, degree, plot, hold, mtexColorbar

ebsd = mtexdata('small', verbose=False)['Forsterite']
grains = calcGrains(ebsd, angle=10*degree, minPixel=5)
kam = KAM(ebsd, order=1, threshold=2.5*degree)/degree
print('Median KAM (degrees):', round(float(np.nanmedian(kam)), 3))
print('Pixels with no accepted neighbour:', np.count_nonzero(~np.isfinite(kam)))
plot(ebsd, kam, colorRange=(0, 2.5))
mtexColorbar(title='KAM (degrees)')
hold(True)
plot(grains.boundary, lineWidth=1)
hold(False)
plt.show()

calcGrains stores grain ids on the map, so comparisons across its grain boundaries are excluded. The threshold additionally rejects individual neighbour pairs above 2.5 degrees. KAM depends on scan spacing, neighbourhood and noise; it is not itself a strain measurement.

Median KAM (degrees): 0.509
Pixels with no accepted neighbour: 30

Example output for EBSD.KAM

See also

calcGROD, gradient, calcGrains, EBSDKAM, EBSD3.KAM

MATLAB’s EBSD.KAM

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/EBSD.KAM_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.