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

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.