How to measure a crack length (using skeleton function)?
6 次查看(过去 30 天)
显示 更早的评论
I am trying to calculate the length of the crack (attached) however I can't figure out a way to remove the extra sections of the skeleton that branch off from the main crack path - crackoverlay.png.
Does anyone have any advice as to how I could do this?
clc
clear variables
RGB = imread('crack2.jpg'); % Aquires original image
I = rgb2gray(RGB); % Creates greyscale image
BW = imbinarize(I,'global'); % Binarises it
BW2 = ~(bwmorph(BW,'majority',Inf)); % Fills in holes
BW3 = bwmorph(BW2,'skel',Inf); % Reduces image to center areas of the white sections
BW4 = bwmorph(BW3,'spur',Inf); % Removes spurs
Ov = imfuse(RGB,BW4); % Overlay of original image and skeleton
figure('Name','All_Steps')
subplot(3,2,1), imshow(RGB), title('Original Image')
subplot(3,2,2), imshow(BW) , title('Binarised Image')
subplot(3,2,3), imshow(BW2), title('Binarised Inverted')
subplot(3,2,4), imshow(BW3), title('Skeleton')
subplot(3,2,5), imshow(BW4), title('Simplified Skeleton')
subplot(3,2,6), imshow(Ov), title('Overlay')
4 个评论
Adam Danz
2020-10-22
Well done! Perhaps you could share your solution as an answer. I'd be interested in seeing it.
采纳的回答
更多回答(1 个)
Jimena López de Uralde Gómez de Olea
2022-1-16
the script was so helpfull for my program too thanks!!
one question, the units from the path length are pixels?
1 个评论
Image Analyst
2022-1-16
Yes, units are pixels. See attached spatial calibration demo and other demos.
Also, you might want to look at bwskel() - I think it has less spurs than bwmorph()
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!