我有一个MATLAB脚本,它使用bwboundaries()
为我提供图像的边界线
现在,在绘制该图像后,我得到了完整的图像,由各种直线段组成
我想得到坐标或显示构成边界的各个线段。
我认为这种方法被称为数字线性直线,但我想知道如何在这种情况下应用它。
[B,L,N] = bwboundaries(z,'noholes');
for k=1:length(B),
boundary = B{k};
if(k > N)
figure, plot(boundary(:,2),boundary(:,1),'g','LineWidth',2);
else
figure, plot(boundary(:,2),boundary(:,1),'r','LineWidth',2);
end
end
答案 0 :(得分:1)
在带标签的图片上使用regionprops('desired feature')
。
要生成带标签的图像,请使用
bwlabel(Img)
(内存使用率高)
或
bw=bwconncomp(Img,conn)
(内存使用率低)
接着是
labelmatrix(bw)
最好的方法可能是使用Hough Transform
来了解图像中存在的线条。您可以使用Hough Transform
来提取线条的终点。
答案 1 :(得分:0)
根据我对你的问题的理解,我的想法是使用bwtraceboundary()。
BW = imread('image.png');
imshow(BW,[]);
r = 165; % you can get the r and c for your image using "impixelinfo"
c = 43;
contour = bwtraceboundary(BW,[r c],'W',4,Inf,'counterclockwise');
hold on;
plot(contour(:,2),contour(:,1),'g','LineWidth',2);
x=contour(:,2)'
y=contour(:,2)'
我回答你的问题吗?