binaryImage = imread('6.bmp'); binaryImage = im2bw(binaryImage); %将二值图像转换为二维矩阵 skeletonImage = bwmorph(binaryImage,'skel',Inf); pixelLength = 0.1; branchPoints = bwmorph(skeletonImage,'branchpoints'); endPoints = bwmorph(skeletonImage,'endpoints'); junctionPoints = branchPoints + endPoints; junctionPoints = imfill(junctionPoints,'holes'); skeletonImage(junctionPoints) = false; [labelImage, numLabels] = bwlabel(skeletonImage, 4); labelSizes = zeros(numLabels,1); for i = 1:numLabels labelSizes(i) = sum(labelImage(:) == i); end labelSizes(labelSizes < 3) = 0; skeletonImage = ismember(labelImage, find(labelSizes)); labelSizes = labelSizes * pixelLength; for i = 1:numLabels [y,x] = find(labelImage == i); distances = pdist2([y(1),x(1)],[y(end),x(end)]); if distances > 1 labelSizes(i) = labelSizes(i) * 2; end end shortLabels = find(labelSizes < 0.483); skeletonImage(ismember(labelImage,shortLabels)) = false; remainingLabels = find(labelSizes >= 0.483); remainingImage = ismember(labelImage, remainingLabels); imshow(remainingImage);

读取二进制图像 binaryImage = imread6bmp; 将二值图像进行骨架提取 skeletonImage = bwmorphbinaryImageskelInf; 计算像素长度 pixelLength = 01; 假设像素大小为01nm 消除分支条纹 branchPoints = bwmorphskeletonImagebranchpoints; endPoints = bwm

原文地址: https://www.cveoy.top/t/topic/bsJT 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录