如何在MATLAB中进行多直线拟合?

如何在MATLAB中进行多直线拟合?,matlab,image-processing,Matlab,Image Processing,我试着在一个图像中找到所有的直线,这是边界。例如,邮票有四条边,我已经通过MATLAB中的edge函数找到了这些边。但有一个问题是,它们不是真正的直线。所以我需要使用直线拟合来获得所有四个边界。但是polyfit函数一次只能安装一行。是否有任何解决方案可以同时适用于所有生产线。 例如:我上传了一些图片,带有红线的图片就是我想要的。请注意,我需要四条单独的线。从图像判断,您不会试图平滑一些线,或填补空白。相反,它看起来更像是你需要把你的图像放在尽可能小的盒子里 以下是您可以尝试的算法: 从四个角开

我试着在一个图像中找到所有的直线,这是边界。例如,邮票有四条边,我已经通过MATLAB中的
edge
函数找到了这些边。但有一个问题是,它们不是真正的直线。所以我需要使用直线拟合来获得所有四个边界。但是
polyfit
函数一次只能安装一行。是否有任何解决方案可以同时适用于所有生产线。
例如:我上传了一些图片,带有红线的图片就是我想要的。请注意,我需要四条单独的线。

从图像判断,您不会试图平滑一些线,或填补空白。相反,它看起来更像是你需要把你的图像放在尽可能小的盒子里

以下是您可以尝试的算法:

  • 从四个角开始
  • 向内“行走”其中一个角,并确定所有点是否仍在四个角内
  • 如果是,保存此角并转至步骤2,否则转至步骤2

  • 不断重复第2步和第3步,直到找到一个稳定的解决方案。

    您是否正在尝试去除穿孔?在这种情况下,我建议使用阈值分割来分割图像的暗区域,然后使用
    regionprops
    来获得它们的边界框。然后,您可以计算出排除它们的最大矩形。

    在您发布的链接上看不到任何内容。只提到一个私人档案。此外,您是否只有图片或基础数据?如果你能用
    polyfit
    安装一条线,那么为什么不简单地使用
    polyfit
    四次呢?@DennisJaheruddin抱歉,我对该网站不熟悉,你现在能看到吗?@DennisJaheruddin但是这四条线相互扭曲