【问题标题】:Extract Individual Line Segment Coordinates from Boundary Image - MATLAB从边界图像中提取单个线段坐标 - MATLAB
【发布时间】:2015-10-09 04:54:04
【问题描述】:

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

【问题讨论】:

    标签: matlab image-processing matlab-figure


    【解决方案1】:

    根据我对你问题的理解,我的想法是使用 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)'
    

    我在回答你的问题吗?

    【讨论】:

      【解决方案2】:

      在标记的图像上使用regionprops('desired feature')

      要生成带标签的图像,请使用

      bwlabel(Img)(高内存使用)

      bw=bwconncomp(Img,conn)(低内存使用)

      紧随其后

      labelmatrix(bw)

      最好的方法可能是使用Hough Transform 首先了解图像中存在的线条。您可以使用Hough Transform 来提取线条的端点。

      【讨论】:

      • 我已经有一个边界图像。 regionprops() 在这里无济于事,因为我需要将边界图像分割为其组成线段。
      • @KanishkaGanguly 我为我的错误回答道歉。由于您的边界是直线段,我假设 regionprops('ConvexHull') 会给您所需的坐标。我试了一下,发现只给出了大概的边界坐标。
      • @KanishkaGanguly 我已经编辑了我的答案,希望对您有所帮助。
      猜你喜欢
      • 2020-07-20
      • 2015-05-14
      • 2014-12-24
      • 2020-09-02
      • 2021-08-29
      • 1970-01-01
      • 1970-01-01
      • 2015-08-08
      • 2022-08-16
      相关资源
      最近更新 更多