This is a micrograph of a hybrid material that contains glass fiber (small white dots), carbon fibers (big grey dots) and a matrix that contains everything! I would like to calculate the surface area (volume fraction) of each of the elements.
1 Answer
$\begingroup$
$\endgroup$
This is all quite crude and largely done by eye.
img =
totalMeasure =
ImageMeasurements[Binarize[1 - ImageSubtract[img, img]], "Total"]
(* Out[348]= 170240. *)
Get the glass part by playing with blurring and binarization.
imgGlass =
MorphologicalBinarize[
Blur[MorphologicalBinarize[Blur[img, 1], .5], 2], .15]
ImageMeasurements[imgGlass, "Total"]
ImageMeasurements[imgGlass, "MeanIntensity"]
(* 49506.
0.290801 *)
Now subtract and binarize to get the carbon part.
imgCarbon =
Binarize[ImageSubtract[img, Blur[imgGlass, 4]], .18]
ImageMeasurements[imgCarbon, "Total"]
ImageMeasurements[imgCarbon, "MeanIntensity"]
(* Out[585]= 66975.
Out[586]= 0.393415 *)
To see if this is at all consistent, also get the matrix part.
imgBlack = Binarize[ColorNegate[img], .75]
ImageMeasurements[imgBlack, "Total"]
ImageMeasurements[imgBlack, "MeanIntensity"]
(* Out[709]= 55782.
Out[710]= 0.327667 *)
So it comes to around 100% but still this was all from using eyeballing to see if the pictures were in the right ballpark. I'd expect maybe up to 10% relative error in each of the measurements.
Binarize
should be pretty good at separating the different types of elements from each other. $\endgroup$