从边界图像中提取单个线段坐标 - MATLAB

时间:2014-06-19 18:42:05

标签: matlab image-processing matlab-figure

我有一个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

2 个答案:

答案 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)'

我回答你的问题吗?