Particle distribution of given image

6 次查看(过去 30 天)
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.

回答(2 个)

Image Analyst
Image Analyst 2023-3-9
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 个评论
furkan bezci
furkan bezci 2023-4-9
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 2023-4-10
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.

请先登录,再进行评论。


Jasvin
Jasvin 2023-3-8
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 个评论
furkan bezci
furkan bezci 2023-3-8
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 2023-3-9
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.

请先登录,再进行评论。

Community Treasure Hunt

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

Start Hunting!

Translated by