An Automated and Unbiased Grain Segmentation Method based on Directional Reflectance Microscopy, Wittwer et al.
This repository contains the data and code necessary to reproduce the results presented in our publication. Abstract: Identifying individual grains from sectioned polycrystalline metals is a foundational task of microstructure analysis. However, traditional grain segmentation methods applied to optical micrographs may suffer from the lack of optical contrast between grains and require the manual selection of adjustable parameters to achieve acceptable segmentation results. We propose an alternative method which takes advantage of a multi-angle optical microscopy technique termed directional reflectance microscopy. By combining dimensionality reduction, similar-dissimilar classification, and multi-region merging of surface directional reflectance, our method enables fully automated and reliable grain segmentation of polycrystalline surfaces. We apply our method to metal samples with different crystal structures and grain orientation distributions. Our results suggest applicability of the method to a wide range of microstructures, enabling a more objective, robust, and universal characterization of polycrystalline metals.
Steps to reproduce
The "data" folder contains sub-folders corresponding to the four samples presented in our publication (nickel, aluminium, titanium and Inconel 718), each containing a DRM dataset, a matrix of Euler angles and a reference segmentation (as NPY files). The DRM dataset are 4D matrices of shape (x, y, theta, phi) and type UINT-8. The Euler angles (shape (x, y, 3), type float32) are registered to the DRM dataset and were measured by EBSD. The reference segmentations (shape (x, y), type int32) were determined by the Matlab MTEX grain segmentation algorithm applied to the EBSD data with a misorientation angle threshold of 5 degrees. The "lib" folder contains the Python code base implementing the LRC-MRM algorithm, as well as the data ingestion, dimensionality reduction, and tools to analyze the results. The "tests" folder contains a file test_LRC-MRM.py which can be executed to test the algorithm. For each sample, the basic output of the program is the segmented grain map resulting from the LRC-MRM pipeline, which can be visualized against the reference segmentation. The code can also estimate the grain size distribution, provide a comparison against a baseline model, and generate the plots discussed in Figure 6 of our publication. For any inquiry, please contact the corresponding author.