图像LSD直线检测

简介

  本篇是对快速图像直线检测算法实现的记录,参考资料:1、LSD: a Line Segment Detector; 2、LSD: A Fast Line Segment Detector with a False Detection Control
LSD直线检测相对于霍夫变换来说,能够很好的筛选掉直线检测干扰,并且算法复杂度大幅度减小。在实际使用中,比较实用。

实现流程

  整个都流程实现,大致可以分为如下几个步骤:
       1、将输入图像通过高斯核采样,缩放到0.8。

       2、计算图像梯度强度,以及每个像素点的梯度角:atan2(gx,-gy),其中gx核gy分别为水平和垂直方向梯度。

       3、设置图像梯度强度范围到[0, 1023](大于1023的梯度强度,强制设置为1023)。

       4、创建1024个链表,遍历整个梯度图,根据梯度强度,相同梯度值像素坐标放入同一张链表中。

       5、将1024个链表,按从大到小顺序,合成一张大链表(首部为1023链表,尾部为0)。

       6、取出链表头部存储图像坐标位置,作为种子像素,根据梯度角方向相似,进行区域扩散。(每扩散一个像素,将该像素坐标从链表中删除,并且做标记,之后新的区域扩散,无法再扩散到在像素)。 

       7、将扩散区域进行矩形拟合。 

       8、检测拟合矩形内梯度角,根据对应NFA公式(来自论文),计算出该拟合矩形精度误差,如果不满足,则丢弃;如果满足要求,则将该矩形记录存储,表示为一条检测到的直线。

       9、继续回到第6步,从链表中,找到下一个种子点,从剩下图像进行区域扩散,至到遍历完全图,得到所有检测到的直线。

结果演示

  在我PC上实验:测试跑512X512图像,花费时间60ms左右。
检测结果显如下:
      
  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值