线特征的LSD提取算法
线特征的LSD提取算法
- 线段检测器算法
- 算法流程
大多数图像中都存在直线特征,是视觉感知、描述外部环境的重要特征信息。直线是一种大尺度的特征,在水面环境中具有更为理想的适用性,线特征具有光照和视角不变性特点,表现更为稳定、有效。因此将点、线特征进行结合使用,可以有效的提高系统的精度和鲁棒性。
线段检测器算法
线段检测器算法(Line Segment Detector, LSD)是一种线段检测算法在线性时 间内得到亚像素级精度的检测结果,可在较短的时间里获得较高精度的直线检测结果, 其核心思路是将在同一梯度相近的像素点进行合并。LSD通过图像中像素点与基准线夹 角确定基准线长度,然后利用区域生长算法合并近似一致的像素区域,从而得到其支持 域。每一个线段支持域可能对应着一条线段,需要根据每一个矩形支持域进行判断。通 过矩形支持域区域内像素点密度大小决定是否将矩形支持域区域断开成多个矩形区域。 最后将所有生成的矩形支持域进行改善和筛选,保留满足条件的矩形支持域作为线特征 检测结果。LSD算法计算速度快,提取出的线段具有方向,可以减少在图像匹配时的误 匹配,良好的实时性和精确使得LSD算法可以更好地适用于SLAM算法中。
算法流程
算法过程可分为6个步骤:
1、图像缩放;
2、梯度计算;
3、对梯度进行排序;
4.判断梯度幅值阈值;
5、线段支持域更新增长;
6、矩形估计;
7、错误报警数(Number of False Alarms, NFA)计算。
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线特征提取算法的有效性。
线特征的LSD提取算法相关推荐
- 中线提取算法_综述|线结构光中心提取算法研究发展
摘 要: 线结构光扫描是三维重建领域的关键技术.光条纹中心提取算法是决定线结构光三维重建精度以及光条纹轮廓定位准确性的重要因素.本文详细阐述了光条纹中心提取算法的理论基础及发展历程,将现有算法分为三类 ...
- 【必备知识】:线激光条纹中心线提取算法导读
线激光条纹特性 线激光器是由点激光器和前置透镜组成的.点激光器可以为He-Ne激光器或半导体激光器.相比较He-Ne激光器,半导体激光器因其输出光源具有发散性,更适合用于制作线激光器.需要说明的是,半 ...
- SLAM--PL-SLAM中基于线特征的初始化方法(LSD算法,LBD描述子,计算R和t)
SLAM中基于线特征的初始化方法 线特征的初始化 直线段检测算法---LSD:a Line Segment Detector 描述子---LBD:Line detection and descript ...
- 特征描述子提取公用接口
OpenCV封装了一些特征描述子提取算法,使得用户能够解决该问题时候方便使用各种算法.这章用来计算的描述子提取被表达成一个高维空间的向量 vector.所有实现 vector 特征描述子子提取的部分继 ...
- java 文本分析 关键词提取_文本关键词提取算法总结
1.TF-IDF 昨天给大家演示简单的文本聚类,但要给每个聚类再提取一两个关键词用于表示该聚类.我们还是用TFIDF算法来做,因为这是比较简单的提取特征算法,不过这里的TF是指某词在本聚类内所有文章的 ...
- 线特征LSD提取、LBD描述子匹配实现过程源码
使用opencv实现线特征LSD提取.LBD描述子匹配实现: 具体逻辑如下: 1.设置读图的路径 2. 加载图片 3. 创建mask掩代码 4.初始化参数 5.检测LSD线段 6. 计算尺度第一塔的描 ...
- 基于线条特征的机场检测算法——LSD直线检测算法、平行线组提取和聚类
遥感图像的机场检测是图像处理在军事以及航空领域一个重要的应用,现有一些机场提取方法利用显著性特征获取机场区域的方法容易使得机场提取不够完整,而且会混入过多的虚警区域,原因在于图像的显著性特征并能用来表 ...
- LSD(Line Segment Detector)直线提取算法
LSD是2010年发表在ipol上的一篇论文提出的直线提取算法,在较短的时间内可以提取一张灰度图上所有的线段特征. (文中提到了a contrario model 和 Helmoholtz princ ...
- lsd 特征点匹配代码_线特征LSD and 描述子LBD(一)(示例代码)
最近在看有关特征提取的线特征,暑期就看了相关的论文:<基于点线综合特征的双目视觉SLAM方法_谢晓佳>,最近呢,把里面有关线特征提取LSD和描述子LBD的代码跑了一遍,记录如下: [1]L ...
最新文章
- python找零钱_Python递归 - 找零钱
- 用cmd运行python文件_怎么用cmd运行python文件
- linux中的fork函数详解
- (转)iOS 各种控件默认高度(图示)
- Java压缩html
- java全文检索工具_全文检索工具elasticsearch:第三章: Java程序中的应用
- SQL Server执行计划
- 面试中精华,俺自己总结的
- 计算机图形学知识点整理(一)
- 文件包含漏洞原理/利用方式/应对方案
- Android初级教程:对文件和字符串进行MD5加密工具类
- 福布斯中国上市公司最佳CEO排行
- h5调用指纹识别_Vue指纹识别验证 h5plus
- 标准库:turtle --- 海龟绘图
- facebuilder免费版_Face Blender(人脸混合器)V2018 最新免费版
- MLY -- 6.Your dev and test sets should come from the same distribution
- 重建windows系统的引导盘(亲测可用)
- 探索二进制世界----1
- 微信小程序一个你可能需要的功能
- 批量修改文件夹下文件的名字