Analyzing Individual Grains

Explanation how to extract and work with single grains from EBSD data

On this page ...
Connection between grains and EBSD data
Visualize the misorientation within a grain
Testing on Bingham distribution for a single grain
Profiles through a single grain

Connection between grains and EBSD data

As usual, let us first import some EBSD data construct some grains

close all
mtexdata forsterite
plotx2east

% consider only indexed data for grain segmentation
ebsd = ebsd('indexed');
% perform grain segmentation
[grains,ebsd.grainId,ebsd.mis2mean] = calcGrains(ebsd);

The GrainSet contains the EBSD data it was reconstructed from. We can access these data by

grain_selected = grains( grains.grainSize >=  1160)
ebsd_selected = ebsd(grain_selected)
 
grain_selected = grain2d  
 
 Phase  Grains  Pixels     Mineral  Symmetry  Crystal reference frame
     1      32   62262  Forsterite       mmm                         
 
 boundary segments: 11070
 triple points: 782
 
 Properties: GOS, meanRotation
 
 
ebsd_selected = EBSD  
 
 Phase  Orientations     Mineral       Color  Symmetry  Crystal reference frame
     1  62262 (100%)  Forsterite  light blue       mmm                         
 
 Properties: bands, bc, bs, error, mad, x, y, grainId, mis2mean
 Scan unit : um
 

A more convenient way to select grains in daily practice is by spatial coordinates.

grain_selected = grains(12000,3000)
 
grain_selected = grain2d  
 
 Phase  Grains  Pixels     Mineral  Symmetry  Crystal reference frame
     1       1    1208  Forsterite       mmm                         
 
 boundary segments: 238
 triple points: 18
 
  Id   Phase   Pixels          GOS   phi1   Phi   phi2
 640       1     1208   0.00808162    153    68    237
 

you can get the id of this grain by

grain_selected.id
ans =
   640

let's look for the grain with the largest grain orientation spread

[~,id] = max(grains.GOS)
grain_selected = grains(id)
id =
        1856
 
grain_selected = grain2d  
 
 Phase  Grains  Pixels     Mineral  Symmetry  Crystal reference frame
     1       1    2614  Forsterite       mmm                         
 
 boundary segments: 458
 triple points: 28
 
   Id   Phase   Pixels        GOS   phi1   Phi   phi2
 1856       1     2614   0.170049    153   109    246
 
plot(grain_selected.boundary,'linewidth',2)
hold on
plot(ebsd(grain_selected))
hold off

Visualize the misorientation within a grain

close
plot(grain_selected.boundary,'linewidth',2)
hold on
plot(ebsd(grain_selected),ebsd(grain_selected).mis2mean.angle./degree)
hold off
mtexColorbar

Testing on Bingham distribution for a single grain

Although the orientations of an individual grain are highly concentrated, they may vary in the shape. In particular, if the grain was deformed by some process, we are interested in quantifications.

cs = ebsd(grain_selected).CS;
ori = ebsd(grain_selected).orientations;
plotPDF(ori,[Miller(0,0,1,cs),Miller(0,1,1,cs),Miller(1,1,1,cs)],'antipodal')
  I'm plotting 1250 random orientations out of 2614 given orientations
  You can specify the the number points by the option "points".
  The option "all" ensures that all data are plotted

Testing on the distribution shows a gentle prolatness, nevertheless we would reject the hypothesis for some level of significance, since the distribution is highly concentrated and the numerical results vague.

calcBinghamODF(ori,'approximated')
 
ans = ODF  
  crystal symmetry : Forsterite (mmm)
  specimen symmetry: 1
 
  Bingham portion:
     kappa: 0 1156.7723 1493.9082 1580.029
    weight: 1
 
T_spherical = bingham_test(ori,'spherical','approximated');
T_prolate   = bingham_test(ori,'prolate',  'approximated');
T_oblate    = bingham_test(ori,'oblate',   'approximated');

[T_spherical T_prolate T_oblate]
ans =
     1     1     1

Profiles through a single grain

Sometimes, grains show large orientation difference when being deformed and then its of interest, to characterize the lattice rotation. One way is to order orientations along certain line segment and look at the profile.

We proceed by specifying such a line segment

close,   plot(grain_selected.boundary,'linewidth',2)
hold on, plot(ebsd(grain_selected),ebsd(grain_selected).orientations)

% line segment
lineSec =  [18826   6438; 18089 10599];

line(lineSec(:,1),lineSec(:,2),'linewidth',2)

The command spatialProfile restricts the EBSD data to this line

ebsd_line = spatialProfile(ebsd(grain_selected),lineSec);

Next, we plot the misorientation angle to the first point of the line as well as the orientation gradient

close all % close previous plots

% misorientation angle to the first orientation on the line
plot(ebsd_line.y,...
  angle(ebsd_line(1).orientations,ebsd_line.orientations)/degree)

% misorientation gradient
hold all
plot(0.5*(ebsd_line.y(1:end-1)+ebsd_line.y(2:end)),...
  angle(ebsd_line(1:end-1).orientations,ebsd_line(2:end).orientations)/degree)
hold off

xlabel('y'); ylabel('misorientation angle in degree')

legend('to reference orientation','orientation gradient')

We can also plot the orientations along this line into inverse pole figures and colorize them according to their y-coordinate

close, plotIPDF(ebsd_line.orientations,[xvector,yvector,zvector],...
  'property',ebsd_line.y,'markersize',3,'antipodal')

mtexColorbar