How can I measure the length of these line segments in this image mask?
7 次查看(过去 30 天)
显示 更早的评论
I have a binary image (BW_roi.mat attached) like this. And I wanted to measure the length of every line segment.
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/509602/image.jpeg)
I tried the solution given in this link hough-transform. But it does not work out for me. It just measured the length of some lines as shown below.
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/509607/image.jpeg)
I tried the other code
boundaries = bwboundaries(BW);
patchno=1
b = boundaries{patchno}; % Extract N by 2 matrix of (x,y) locations.
x = b(:, 1);
y = b(:, 2);
It though give me points (x,y) that make up these polygons. But how can I get the length of the sides of these patches?
回答(1 个)
yanqi liu
2021-2-5
clc; clear all; close all;
load BW_ROI.mat
b = BW_roi_nodot;
b = ~b;
% measure the length of every line segment
% b([1 end],:) = 1;
% b(:,[1 end]) = 1;
b = logical(b);
b2 = imfill(b, 'holes');
b3 = b2 - b;
b3 = logical(b3);
b4 = imclose(b3, strel('disk', 5));
b5 = imopen(b2, strel('square',7));
b6 = b2 - b5;
b6 = logical(b6);
[L, num] = bwlabel(b3);
stats = regionprops(L,'ConvexHull');
figure; imshow(BW_roi_nodot); hold on;
for i = 1 : num
p = stats(i).ConvexHull;
plot(p(:,1), p(:,2),'LineWidth',2);
end
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/510067/image.png)
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!