Skip to content

Adaptive Alignment (Mutual Information)

Group (Subgroup)

Unsupported (Anisotropy)


This Filter segments each 2D slice, creating Feature Ids that are used when determining the mutual information between neighboring slices. The slices are shifted relative to one another until the position of maximum mutual information is determined for each section. The Feature Ids are temporary, they apply to this Filter only and are not related to the Feature Ids generated in other Filters.

This initial alignment is followed by a correction algorithm which adapts the shifts to a complementary criterion having one of the following forms:

  1. Images of the mapped area taken from each slice by scanning electron microscope (EDAX).
  2. User-defined shifts between the first and the last slice of the stack.

The initial alignment algorithm of this Filter is as follows:

  1. Segment Features on each 'section' of the sample perpendicular to the Z-direction. This is done using the same algorithm in the Segment Features (Misorientation) Filter (only in 2D on each section)
  2. Calculate the mutual information between neighboring sections and store that as the misalignment value for that position. Mutual information is related to the ratio of joint probability to individual probabilities of variables (i.e., p(x,y)/p(x)p(y) ). Details of the actual mutual information calculation can be found in the references below, but can be thought of as the inherent dependence between variables (here the Feature Ids on neighboring sections).
  3. Repeat step 2 for each position when shifting the second slice (relative to the first) from three (3) Cells to the left to three (3) Cells to the right, as well as from three (3) Cells up to three (3) Cells down Note that this creates a 7x7 grid
  4. Determine the position in the 7x7 grid that has the highest mutual information value
  5. Repeat steps 2-4 with the center of each (new) 7x7 grid at the best position from the last 7x7 grid until the best position in the current/new 7x7 grid is the same as the last 7x7 grid 6) Repeat steps 2-5 for each pair of neighboring sections

Note that this is similar to a downhill simplex and can get caught in a local minimum!

The correction alignment algorithm of this Filter attempts to improve the complementary fit as follows:

  1. Start with the shifts obtained by the initial algorithm, i.e., define the current shifts as those obtained from the initial algorithm for each pair of consecutive cross sections.
  2. For each pair of consecutive cross sections, consider all the shifts checked within the alignment algorithm (7x7 grids), different from the current shift, which improve the complementary fit. From these shifts, find the candidate shift as that with the lowest misalignment value.
  3. From the candidate shifts identified in step 2 (one candidate shift for each pair of consecutive sections), select the one with minimum difference between the misalignment value of the candidate shift and the misalignment value of the current shift. Change the current state by this candidate shift and recompute the complementary fit.
  4. Repeat steps 2 - 3 until no improvement in the complementary fit is attained in step 2.

The user choses the level of misorientation tolerance by which to align Cells, where here the tolerance means the misorientation cannot exceed a given value. If the rotation angle is below the tolerance, then the Cell is grouped with other Cells that satisfy the criterion.

The approach used in this Filter is to group neighboring Cells on a slice that have a misorientation below the tolerance the user entered. Misorientation here means the minimum rotation angle of one Cell's crystal axis needed to coincide with another Cell's crystal axis. When the Features in the slices are defined, they are moved until disks in neighboring slices align with each other.

If the user elects to use a mask array, the Cells flagged as false in the mask array will not be considered during the alignment process.

The user can choose to write the determined shift to an output file by enabling Write Alignment Shifts File and providing a file path.


Name Type Description
Misorientation Tolerance float Tolerance used to decide if Cells above/below one another should be considered to be the same. The value selected should be similar to the tolerance one would use to define Features (i.e., 2-10 degrees).
Write Alignment Shift File bool Whether to write the shifts applied to each section to a file.
Alignment File File Path The output file path where the user would like the shifts applied to the section to be written. Only needed if Write Alignment Shifts File is checked.
Global Correction: SEM Images bool Whether to use SEM images for adaptive alignment.
Global Correction: Own Shifts bool Whether to set the shifts for adaptive alignment manually.
Total Shift In X-Direction (Microns) float Shift in X-direction between the first and the last slice of the stack in microns. Only needed if Global Correction: Own Shifts is checked.
Total Shift In Y-Direction (Microns) float Shift in Y-direction between the first and the last slice of the stack in microns. Only needed if Global Correction: Own Shifts is checked.
Use Mask Array bool Whether to remove some Cells from consideration in the alignment process.

Required Geometry


Required Objects

Kind Default Name Type Component Dimensions Description
Image Data Array ImageData uint8_t any component size Specifies image data containing the SEM images to be used for global correction of the shifts.
Cell Attribute Array Quats float (4) Specifies the orientation of the Cell in quaternion representation.
Cell Attribute Array Phases int32_t (1) Specifies to which Ensemble each Cell belongs.
Cell Attribute Array Mask bool (1) Specifies if the Cell is to be counted in the algorithm. Only required if Use Mask Array is checked.
Ensemble Attribute Array CrystalStructures uint32_t (1) Enumeration representing the crystal structure for each Ensemble.

Created Objects



Scholar Pedia

Journal articles on Mutual Information that are useful:

  • Elements of information theory. John Wiley & Sons, New York, NY.Gray, R.M. (1990).
  • Entropy and Information Theory. Springer-Verlag, New York, NY. Nirenberg, S. and Latham, P.E. (2003).
  • Decoding neuronal spike trains: how important are correlations? Proc. Natl. Acad. Sci. 100:7348-7353. Shannon, C.E. and Weaver, W. (1949).
  • The mathematical theory of communication. University of Illinois Press, Urbana, Illinois. M zard, M. and Monatanari, A. (2009).
  • Information, Physics, and Computation. Oxford University Press, Oxford.

Example Pipelines

  • 03_Adaptive Alignment - Mutual Information - SEM Images

Please see the description file distributed with this Plugin

DREAM.3D Mailing Lists

If you need more help with a Filter, please consider asking your question on the DREAM.3D Users Google group!