直线段检测法(LSD)

  • 1简介
  • 2算法介绍
  • 3.算法简述
  • 4.应用示例
  • 感谢观看 :)
  • 本文仅用于个人学习/复习用途

1简介

LSD是一种线段检测算法,该方法号称是能在线性时间(linear-time)内得到亚像素级准确度的直线段检测算法。LSD的目标在于检测图像中局部的直的轮廓,这也是我们称之为直线分割的原因。

2算法介绍

LSD直线检测方法首先计算每个像素点的水平线(level-Line)角度,从而形成了一个水平线场,即单位矢量场,这里像素点的水平线角度就是该点梯度方向的垂直角度,如下图所示,而水平线场就是一个与图像中的点一一对应的矩阵,矩阵中元素的值即为对应到图像中点的水平线角度。


算法首先计算每个像素的水平线角度,以构成一个水平线场。该场被分割为连通的若干个部分,它们方向近似相同并且在容忍度τ内,这样可以得到一系列区域,这些区域被称为 line support regions(支持域)。如下图所示:

如图绿色、蓝色、橙色区域各是一个线支持区域。

每一个line support region(支持域)其实就是一组像素,它也是直线段(line segment)的候选。同时,对于这个line support region(支持域),我们可以观察它的最小外接矩形。直观上来讲,当一组像素构成的区域,特别细长时,那么这组像素更加可能是直线段。line support region(支持域)的一个主惯性轴作为矩形的主方向,矩形的大小选择为覆盖整个区域。


矩形中的像素的level-line angle(水平线角度)与最小外接矩形的主方向的角度差在容忍(tolerance)τ内的话,那么这个点被称作"aligned point"(同性点或者是对齐点)。

通过统计最小外接矩形内的所有像素数n和其内的alinedg points个数k,用来判定这个line support region是否是一个直线段。

矩形的验证方法是基于Desolneux, Moisan, and Morel提出的contrario方法和Helmholtz法则,所谓的亥姆霍兹原理指出,不应在噪声图像上产生感知(或检测),因此,相反的方法提出定义噪声或相反的模型H0,其中不存在期望的结构。在含有线段的情况下,我们对对齐点的数量感兴趣,因此考虑噪声模型中的虚警线段具有与所观测的真实线段一样多或更多对齐点的事件。给定图像i和矩形r,定义 k(r,i) 表示矩形r中对齐点的数量,n(r )表示矩形 r中像素点的总数,这样上述事件发生的次数即为:

也就是说这种事件发生即表示产生一个直线段检测的虚警。其中Ntest表示被考虑到的矩形总数,PH0表示一个矩形对应的噪声模型中对齐点数量不小于实际模型中对齐点数量的概率。I是模型H0对应的噪声图像,即为一个各个元素独立同分布的的矩阵,其尺寸与真实图像i一致,每一个元素是在 [0,2π ]上服从均匀分布的独立随机变量。

任意一个像素点属于对齐点的概率为P:

于是矩形对应的噪声模型中对其点数量不小于实际模型中对齐点数量的概率为:


设图像的尺寸为M×N,矩形的宽度最大为(MN)1/2,因此所有可能的矩形个数为(NM)5/2,考虑到后续对于P值还有其他的测试值而不仅仅是τ/π,设为γ个,因此测试矩形总数Ntest为:

最后定义虚警的个数(the Number of False Alarms)为
设置一个阈值ε,若NFA(r,i)≤ε,那么就可以将其保留为一个直线段的检测结果。

3.算法简述

整体算法的过程图如图所示:

4.应用示例


感谢观看

直线段检测法(LSD)相关推荐

  1. 直线段检测算法(LSD:a Line Segment Detector)

    直线段检测算法(LSD:a Line Segment Detector) 1 简介 LSD是一种线段检测算法,该方法能在较短的时间内获得较高精度的直线段检测结果. LSD直线检测算法首先计算图像中所有 ...

  2. 【转】 LSD(Line Segment Detector) 直线段检测算法学习~

    论文回顾之一 一种新的直线段检测算法---LSD:a Line Segment Detector 原文地址:http://blog.csdn.net/polly_yang/article/detail ...

  3. 直线段检测算法---LSD

    直线段检测算法---LSD:a Line Segment Detector LSD的核心是像素合并于误差控制.利用合并像素来检测直线段并不是什么新鲜的方法,但是合并像素的方法通常运算量较大.LSD号称 ...

  4. 直线检测之LSD算法及其OpenCV/C++案例实现

    直线段检测算法-LSD:a Line Segment Detector 详细的算法解读,实际就是对论文<LSD:a Line Segment Detector>的分析,请戳:LSD算法 O ...

  5. 计算机图形学直线扫描转论文,计算机图形学实验报告-实验1直线段扫描转换.doc...

    PAGE 32 PAGE 7 计算机图形学 实验报告 班级 计算机工硕班 学号 2011220456 姓名 王泽晶 实验一:直线段扫描转换 实验目的 通过本次试验,学生可以掌握直线段的扫描转换算法及其 ...

  6. 带你读AI论文:基于Transformer的直线段检测

    摘要:本文提出了一种基于Transformer的端到端的线段检测模型.采用多尺度的Encoder/Decoder算法,可以得到比较准确的线端点坐标.作者直接用预测的线段端点和Ground truth的 ...

  7. 实验二 实现中点分割直线段裁剪算法

    一.目的 1. 了解直线裁剪的基本原理和常用方法. 2. 掌握中点分割直线段裁剪算法的基本原理和步骤. 3. 使用C++.OpenGL编程实现如下内容:输入直线段的起始点和终止点坐标位置.用四边形模拟 ...

  8. 计算机图形学直线裁剪原理,计算机图形学-3.2用Liang-Barsky算法实现直线段裁剪...

    计算机图形学-3.2用Liang-Barsky算法实现直线段裁剪 计算机图形学-3.2用Liang-Barsky算法实现直线段裁剪 (1)算法设计原理 依次处理(p1,q1)(p2,q2)(p3,q3 ...

  9. 空间两条直线段的最短距离及最近点计算

    如果这两条直线段不共线,假设直线段l0的两端点为:P0.P1:直线段l1的两端点为Q0.Q1,:求两直线段的最短距离? 直线段l0我们可以用方程表示为:     (1) 直线段l1我们也可以用方程表示 ...

  10. 3.1 详细讲解直线段工具 [Illustrator CC教程]

    原文:http://coolketang.com/staticDesign/5a979bd6ee920a7880804f08.html 1. 本节课将为您详细讲解[直线段工具]的使用.使用直线段工具, ...

最新文章

  1. Nginx——upstream参数
  2. 做服务器_码迷SEO:细数那些做SEO巨坑的服务器们
  3. zabbix监控之二----Zabbix受控端及监控项
  4. 10-Platform Interrupt Controller API
  5. oracle误删数据的解决方法
  6. python中ls是什么_使用Python代码实现Linux中的ls遍历目录命令的实例代码
  7. 我很喜欢写作。但总难以坚持!
  8. 简述Java Object类中的方法有哪些
  9. 陈绪博士作序:这不是一本白皮书 | 凌云时刻
  10. Excel绘制折线图_基础整理
  11. 2021年东南大学软件学院电子信息考研信息
  12. 关于H5唤起地图导航小结
  13. 【基础】603- 深入分析Session和Cookie
  14. 互联网+来袭,消费者更挑剔,什么才是零售业的未来?
  15. 2022年金属非金属矿井通风上岗证题库及模拟考试
  16. python入门(三)列表、元组、range()、字典
  17. afudos备份bios不动_救命宝典:BIOS刷坏后的恢复方法
  18. cancase vector_vector CANcase 1630
  19. 转一篇Decorator模式的讲解文章
  20. 瑞波Ripple概念解析-共识网络(官方文档不完全翻译)

热门文章

  1. python模拟生成微软序列号,python生成随机序列号
  2. 2017-2018-2 1723《程序设计与数据结构》问题汇总 (更新完毕)
  3. shader 学习之 pass 块
  4. nginx中proxy_pass的作用以及注意事项(不看后悔一生)
  5. 自然语言处理基于java实现(1) 之 中文分词
  6. html百度换皮肤,windows7系统下怎么给百度网页更换皮肤
  7. smartbi v7 Linux,配置Smartbi
  8. smart bi 学习
  9. MOCTF-WRITE-UP(二)
  10. python量化交易实战 pdf 王晓华_Ext JS实战(第2版)pdf