Inspiration

The Materials Engineering Department from McMaster University proposed a challenge to the DeltaHacks Attendees - to analyze microscopic grain structures from metals. The program should be able to distinguish the grain boundaries and display information about the 3 types of grains in the image (light, dark, and lam).

What it does

The user interfaces with our program with our GUI. They drag and drop a file into the GUI and run the program. It will output a mask for each of the following: grain boundaries, precipitates, light grains, dark grains, and lam grains. The user can scroll through and save the masks. Information about each type grain is included in a table - average grain area, average grain length, and number of grains of that type.

How we built it

We built the GUI using pyqt. The majority of the image processing algorithms were programmed in python using opencv. We performed processing steps such as thresholding, condensing, flattening, and expanding boarders. The curtaining effect was removed by implementing a Fourier transform and then removing the frequency of the curtaining from the image. The light flares were reduced by sampling the image to obtain a background level and subtracting that from the original image.

Challenges we ran into

The noise caused by the precipitates were the largest challenge we faced as the noise that resulted from them in each processing step impacted our ability to extract information from the images. We had to determine how to remove the precipitates from the images early in the processing procedure.

Accomplishments that we're proud of

We are proud that we accomplished something for each task.

What we learned

Theoretical image processing techniques do not work well on real images due to noise and other artifacts. We found an actual application for Fourier transforms.

What's next for Materialistic

The next steps would be to fine tune our algorithms so that they work a bit more efficiently. Additionally, we would like to further automate our procedure and improve the functionality by implementing a neural network. Given the data sets that were provided, the results of our image segmentation would have been much more sophisticated if we had the time to train the neural network to recognize the periodic frequency of the curtaining artifacts in the image. ML would be able to optimize the pattern recognition of the curtaining, resulting in a more accurate Fourier transform model to remove the specified frequency content from the image.

Built With

Share this project:

Updates