Particle distribution of given image

6 views (last 30 days)
furkan bezci
furkan bezci on 3 Mar 2023
Commented: Image Analyst on 10 Apr 2023
Hello I need to distinguish three elements of this concrete picture. 1.LECA 2.Crushed Aggregate 3.Cement Paste.
I need their area distribution. I tried to segment and filter but I couldn't handlee it. I need an approximate result.

Answers (2)

Image Analyst
Image Analyst on 9 Mar 2023
This is a very difficult problem. I doubt thresholding would work great but you can try the Color Thresholder on the Apps tab of the tool ribbon. If color alone is not enough to distinguish regions then you might have to add in other things like texture, stdfilt
It's a generic, general purpose demo of how to threshold an image to find blobs, and then measure things about the blobs, and extract certain blobs based on their areas or diameters.
If you know that a picture definitely has all 3 materials in it you can use k-means, or linear discriminant analysis on the image. Or if you can hand pick some samples then you can try KNN. I'm attaching demos for those you can adapt. I doubt any of them will be great but it's worth a try. Otherwise you could always try hand tracing the regions -- might not be acceptable if you have more than 100 images though. I'm attaching some drawing/masking demos also.
  3 Comments
furkan bezci
furkan bezci on 9 Apr 2023
I tried to find blobs (LECAs darkest ones) by using MultiIntensityBlobsDemo but I failed. I don't think that I apply it correctly. Could you provide a small code snippet that distinguishes Leca's.
My images consist of only these three materials and a background. So, k-means, which you mentioned earlier, can be used. However, I still haven't been able to figure out how to apply it.
Thanks a lot for your help
Image Analyst
Image Analyst on 10 Apr 2023
kmeans is not rubust for all area fractions. For example if there is none of a particular class there, it will still "make up" one because you're forcing it to have 3 classes. Discriminant analysis might be better -- did you try that demo? Or you can hand trace several regions in each class and then use the Classification Learning app to try out lots of different classifiers and pick the best one.

Sign in to comment.


Jasvin
Jasvin on 8 Mar 2023
Unless you have any training data available using which you can create a proper model explicitly built to identify the three regions, you'll have to go for Image Processing-based Image Segmentation or Unsupervised Learning
Here's the Discovery page for Image Segmentation,
You've already mentioned that you've tried out Image Segmentation and Filtering but perhaps there's a method here that you've missed out on.
And here's the Discovery page for Unsupervised Learning,
Here you can hope that some clustering algorithm like K-means is able to cluster as per your requirements.
And one final technique would be to label the regions manually in each image to obtain a training dataset on which you can apply any of the state of the art DL algorithms. MATLAB even helps with you that!
  2 Comments
furkan bezci
furkan bezci on 8 Mar 2023
Thanks for your nice answer Jasvin. I am very new to MATLAB and image processing.
I was able to separate the LECAs and calculate their surface area, but I also need to determine how many there are. Additionally, I will try to separate the cement paste and aggregates according to your answer. I hope I can achieve it.
Jasvin
Jasvin on 9 Mar 2023
Good luck with that Furkan and if you feel that the answer was sufficient for your task then you can also mark it as the accepted answer.

Sign in to comment.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!