线特征的LSD提取算法

线特征的LSD提取算法


大多数图像中都存在直线特征,是视觉感知、描述外部环境的重要特征信息。直线是一种大尺度的特征,在水面环境中具有更为理想的适用性,线特征具有光照和视角不变性特点,表现更为稳定、有效。因此将点、线特征进行结合使用,可以有效的提高系统的精度和鲁棒性。

线段检测器算法

线段检测器算法(Line Segment Detector, LSD)是一种线段检测算法在线性时 间内得到亚像素级精度的检测结果,可在较短的时间里获得较高精度的直线检测结果, 其核心思路是将在同一梯度相近的像素点进行合并。LSD通过图像中像素点与基准线夹 角确定基准线长度,然后利用区域生长算法合并近似一致的像素区域,从而得到其支持 域。每一个线段支持域可能对应着一条线段,需要根据每一个矩形支持域进行判断。通 过矩形支持域区域内像素点密度大小决定是否将矩形支持域区域断开成多个矩形区域。 最后将所有生成的矩形支持域进行改善和筛选,保留满足条件的矩形支持域作为线特征 检测结果。LSD算法计算速度快,提取出的线段具有方向,可以减少在图像匹配时的误 匹配,良好的实时性和精确使得LSD算法可以更好地适用于SLAM算法中。

算法流程

算法过程可分为6个步骤:
1、图像缩放;
2、梯度计算;
3、对梯度进行排序;
4.判断梯度幅值阈值;
5、线段支持域更新增长;
6、矩形估计;
7、错误报警数(Number of False Alarms, NFA)计算。
LSD算法流程图
1)图像缩放:主要是为了解决图片在边缘出现锯齿状,导致提取出的直线段可能存在断裂的现象,对于图片的x,y轴各降采样比例为0.8,对于一幅图像总像素采样的缩放因子为E=0.64,采集原始图像64%的像素点。
2)梯度计算:图像中在进行LSD梯度计算的过程中,对图像中每个像素点的右下四个像素进行梯度计算,如图2.2所示,为计算图像中某一像素点梯度示意图。在计算的过程中利用尽可能小的模板进行计算,这样做的目的是减小梯度计算过程中像素点之间的依赖。
像素点梯度示意图

图中为所需要计算像素点在图像中(X,Y)位置的灰度值,那么该像素点在x轴、y轴的像素梯度gx(x,y和gy(x,y)分别为:
在这里插入图片描述
根据像素点在x轴、y轴的像素梯度gx(x,y和gy(x,y),可以的到梯度幅值G(x,y)和梯度方向(level-line angle, LLA):
在这里插入图片描述
3)梯度排序:图像中像素点计算出来的梯度幅值越大,表明该像素点越是显著的边缘点,更加适合作为线段检测的种子点。由于将图像中每一个像素点的梯度幅值进行排序是一个耗时时间长且利用效率低。
4)梯度幅值阈值设置:图像中部分像素点的梯度幅值数值较小,该部分像素点基本出现在平滑区域,或者是图像中的噪声。通过设定梯度幅值阈值p来进行像素点梯度幅值筛选,如果像素点梯度幅值小于设定的梯度幅值阈值p,那么在进行线段区域构建时,该像素点将不会被考虑。
5)线段支持域更新增长:像素点根据周围像素点可以计算出自身梯度幅值和像素点梯度方向。由大量像素点构成的线段支持域区域可以通过区域内像素点梯度方向获得一个线段支持域梯度方向。线段支持域周围有大量孤立像素点,将排序列表中随机选取一个孤立像素点(NOT USED),计算孤立像素点的梯度方向与线段支持域的梯度方向之间的方向容忍值是否小于r,如果容忍值r满足阈值,那么将孤立像素点更改为USED,并纳入线段支持域内,更新加入该孤立像素点后的线段支持域。
在这里插入图片描述
其中,r为设置的方向误差容忍值,表示线段支持域矩形方向与第个像素点之间的误差值,当r<22.5时,像素点都会被纳入原有的线段支持域区域中。
6)矩形估计:将更新后的线段支持域进行矩形化,将线段支持域区域进行矩形近似计算,得到一个较为规整的矩形区域作为线段提取结果展示。
在这里插入图片描述
其中,lx, ly为矩形的中心点坐标,G(j)为像素点j的梯度幅值,2^R_nG(y)为遍历线段支持域内所有像素点。线段支持域矩形化后矩形区域的主方向M为;
在这里插入图片描述
7)错误报警数(NFA)计算:估计矩形中满足梯度幅值的像素点数量可以作为判断该矩形是否可以作为一条“线段”,满足像素梯度幅值的像素点数量越多,该矩形越有可能是一条“线段”,通过设置矩形中像素点密度值f来对生成的每个矩形进行判断。
LSD线特征提取算法以伪代码的形式展示,如下:
在这里插入图片描述
为了验证在水面环境图像中提取线特征的有效性,选取无人船航行过程中拍摄的某一张图片进行LSD线特征提取,提取结果如图3.6所示,可以看出经过LSD线特征提取算法对图像的处理,对于原始图像(a)中线特征提取结果如图(b)所示,验证了在水面环境中LSD线特征提取算法的有效性。
在这里插入图片描述

  • 7
    点赞
  • 53
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值