【问题标题】:Finding imperfect straight lines in an image在图像中查找不完美的直线
【发布时间】:2016-04-27 02:48:03
【问题描述】:

我的任务是从像这样的随机灌木中找出所有的绿芽

使用颜色分割和斑点分析,我获得了图像的等高线图。为了从等高线图中找到芽,我使用了霍夫变换,但它们最终给出了一些误报。我已经尝试调整霍夫线和峰值的参数,但它会导致不同图像出现大量误报或误报。这是代码sn-p

  [H,theta,rho] = hough(BW,'Theta',-90:1:89,'rhoResolution',1);
P = houghpeaks(H,100,'threshold',ceil(0.3*max(H(:))),'NhoodSize',[21 21]);
lines = houghlines(BW,theta,rho,P,'FillGap',15,'MinLength',100);

这是我得到的输出:

能否给我指出一个更好的方法来做到这一点?

【问题讨论】:

  • 你是如何分割颜色的?我猜现在你在 G 通道上设置阈值。看起来您的图像中保留了一些白色花瓣。您可能可以通过过滤 G 大于 R 和 B 一些(实验确定的)量的区域来摆脱这些。这可能会有所帮助。
  • 是的。现在我们在 R 通道上使用阈值。但所需的芽也是绿色的,类似于叶子。所以分割是不可能的。

标签: matlab image-processing computer-vision filtering hough-transform


【解决方案1】:

我有一个想法,但是太长了,我无法将其放入评论中。

您可以在等高线图图像中识别和标记连接的组件,然后检查不同的组件以查看它是否又长又细或更像斑点。可能有很多方法可以测试它。首先想到的是将连接的组件与对角线穿过组件的边界矩形的线进行比较。 (但要双向检查。)您可能希望为遇到的每个边界框生成掩码,如下所示:

 1  1 -1 -1 -1
-1  1  1  1 -1
-1 -1 -1  1  1

...还有它的镜像。显然,你需要玩一下它。您可以为蒙版添加一些平滑,以便它对不完全笔直的事物具有更大的容忍度。然而,原理是掩码是逐元素乘以包含相关组件的子图像。结果矩阵中所有元素的总和会给你一个分数,告诉你它有多像线。如果您使用的是可变大小的掩码,那么您还需要以某种方式标准化分数。这可能会在与轴平行的线上失败,但这些线很容易测试,因为组件的边界框又长又细。

如果做不到这一点,您可以尝试将一组不同角度的线条蒙版进行卷积,以测量图像中任何给定点的线条相似度,但这可能会做更多的工作并且不太可靠。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-21
    • 2011-03-14
    • 2019-06-03
    • 2020-05-12
    • 2012-10-01
    • 1970-01-01
    • 2018-06-18
    相关资源
    最近更新 更多