Image analysis for speckle pattern

조회 수: 40(최근 30일)
Filippo 2023년 1월 31일
댓글: Image Analyst 2023년 2월 3일
I have a NxN real (double) matrix which contains the information of a speckle pattern like the one shown in figure 1 (see the attachement).
The main goal here is to have a size distribution of the "speckle grains", so we can divide the problem in two different parts:
1. given the image (or the matrix, whatever is the best for the algorithm), try to find the grains of the image;
2. for each grain, apply some sort of analysis (contour? regionprops? edge?) in order to extrapolate the information of its size (i.e.: is it possible to fit a circunference and then extrapolate the diameter/radius?)
The idea is to apply a sort of "pattern recognition" in order to extrapolate both the number of grains and their size information, is it possible?
댓글 수: 2표시숨기기 이전 댓글 수: 1
Filippo 2023년 2월 1일
Thank you for replying. I think that the crux of the problem is to isolate the grains, given the complexity of the pattern. You are right, Benjamin's suggestion is a good place to start, but, unfortunately, it fails in separating all those (very complicated) entangled blobs.

댓글을 달려면 로그인하십시오.

답변(3개)

Benjamin Thompson 2023년 1월 31일
댓글 수: 3표시숨기기 이전 댓글 수: 2
Filippo 2023년 2월 2일
I agree with you. Indeed, thank you very much for your answer, it helped me by looking at my problem from a different perspective. To answer the last part of your reply: unfortunately I cannot change my image since it is a simulation, so I cannot change lighting, or similar.

댓글을 달려면 로그인하십시오.

Image Analyst 2023년 2월 1일
It's not obvious what a single grain is. What instrument created this? Was it an AFM? Can you zoom in so that the "grains" are bigger than a few pixels? What material is this?
Otherwise I think you'll need to look to other metrics to describe what you are trying to correlate your image analysis measurement to. Like for example you want some image metric to correlate with strength of the material. Well maybe you can measure some bulk metric like the standard deviation of the gray levels and that might be just as good as if you were able to find the grain area distribution.
댓글 수: 6표시숨기기 이전 댓글 수: 5
Image Analyst 2023년 2월 3일
To do blob detection by thresholding, see my Image Processing Tutorial in my File Exchange:

댓글을 달려면 로그인하십시오.

Bjorn Gustavsson 2023년 2월 3일
A couple of things I'd try would be to determine the size-distribution of the speckles at different intensity-levels. This I'd do by determining the grain-boundaries at some intensity-levels using contour and either of contour-matrix-to-coordinates or getcontourlinecoordinates to get the speckle-boundaries, then find all contours that are closed and calculate their areas using
For each speckle j.
It should be reasonably straightforward to determine which contours are closed - same start and end-point, at least to within double-precision.
Once you have the contour-coordinates and loop over all speckles you might as well calculate the total intensity inside a speckle, for that you should have good use of inpolygon to determine which pixels belong to a speckle (this might not be very efficient, but this should not be a too time-consuming task anyway). You might just as well calculate the centroids (both the area-centroid and the center-of-intensity) of the speckles and look at the distribution of those over the image (nearest-neighbor-distance and whatnot.)
HTH

댓글을 달려면 로그인하십시오.

범주

Find more on Contrast Adjustment in Help Center and File Exchange

R2022b

Community Treasure Hunt

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

Start Hunting!

Translated by