Segmenting layers/plies in a carbon-fiber composite micrograph (?)

1 view (last 30 days)
I would like to select the dark grey resin interlayers in the attached carbon-fibre composite micrograph. I am new to image processing in Matlab and am only aware of basic functions and techniques.
I have been playing with for several evenings and cannot seem to find a way to differentiate between intra and inter-ply resin areas. Ultimately, I would like reduce the more prominent resin inter-layers to medial-axis lines similarly to using bwmorph(I,'skel') to isolate cracks in a previously thresholded, binary image.
I would greatly appreciate any advice for tackling this problem. I am hoping to avoid more involved approaches such as machine learning.
Cheers!

Answers (2)

Stephen Jue
Stephen Jue on 21 Jun 2017
If this does not make you lose too much information, one approach could be to apply a horizontal motion blur filter to the image, then binarize it, like so:
I = imread('compImg.jpg');
h = fspecial('motion', 300, 0); % Apply motion blur
I = imfilter(I, h);
imshow(I);
BW = imbinarize(I, 0.60); % Apply threshold
mask = true(size(BW));
mask(:, 200:end-200) = false;
BW(mask) = 1;
imshow(BW)
This would need some tweaking, but once you can successfully isolate the resin interlayers, you can use a method such as the Hough Transform to detect these lines.

Image Analyst
Image Analyst on 21 Jun 2017
I'd probably get initial ending points by averaging the last 10 or 20 columns together and look for major dips (dark places). Then I'd use dynamic programming to wind my way back to the other side of the image.
Alternatively I'd try a heuristic method like A* or seam carving.
Any of these methods will allow it to follow the wiggles between the layers better than something like lines which you'd get from Hough.

Categories

Find more on Image Processing Toolbox in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!