直线段检测法(LSD)

直线段检测法(LSD)直线段检测法(LSD)1简介2算法介绍3.算法简述感谢观看:)本文仅用于个人学习/复习1简介LSD是一种线段检测算法,该方法号称是能在线性时间(linear-time)内得到亚像素级准确度的直线段检测算法。LSD的目标在于检测图像中局部的直的轮廓,这也是我们称之为直线分割的原因。2算法介绍LSD直线检测方法首先计算每个像素点的水平线(level-Line)角度,从而形成了一个水平线场,即单位矢量场,这里像素点的水平线角度就是该点梯度方向的垂直角度,如下图所示,而水平线场就是一个与图像中的点一一对应

大家好,又见面了,我是你们的朋友全栈君。

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.应用示例

在这里插入图片描述
在这里插入图片描述

感谢观看 ?

本文仅用于个人学习/复习用途

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/132355.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 大数据应用实例[通俗易懂]

    大数据应用实例[通俗易懂]通过对全国各地不同时间段的购买华硕笔记本电脑的销售量进行大数据处理,将其通过汇总分析,即可制成图表的格式,使用户能对华硕笔记本销售量进行研究,可以查看出华硕笔记本最近的销售同比(与上一年的销售比较)与环比(与上月的销售比较),购买的人数地域分布量,及购买的人群年龄分布,性别分布等等首先就是对华硕笔记本最近的销售同比(与上一年的销售比较)与环比(与上月的销售比较),整体同比及移…

    2022年6月2日
    52
  • vscode 字体太小的问题,安装新字体

    vscode 字体太小的问题,安装新字体vscode 很好用 但是字体太小了 尤其是 linux 版本 字都拥挤在一起 1 左侧字体小 可以 ctrlshift 或者 ctrlshift 来控制界面整体缩放 2 右侧字体太小 可以安装新的字体 Fira Code v5 22 1 下载链接 FiraCode 为写程序而生的字体 简书 2 2windows 安装字体在 ttf 文件上逐个双击 打开字体管理器 点安装 2 3linux 安装字体 mkdir p usr share fo

    2025年10月29日
    2
  • 史上最全设计模式导学目录(完整版)

    史上最全设计模式导学目录(完整版)圣诞献礼!2012年-2013年,Sunny在CSDN技术博客中陆续发表了100多篇与设计模式相关的文章,涵盖了七个面向对象设计原则和24个设计模式(23个GoF设计模式+简单工厂模式),为了方便大家学习,现将所有与设计模式学习相关文章的链接进行了整理,希望能给各位带来帮助!

    2022年6月14日
    27
  • SSAS(3)_ssa怎么算

    SSAS(3)_ssa怎么算介绍SSAS的存储,涉及:理解分区度量组分区的变更与创建分区的存储模式与区别:MOLAP、ROLAP、HOLAP主动缓存的作用以及低延迟分区的配置  *网上看到有翻译成“预先缓存”的理解聚合部署SSAS对象;自动调度处理SSAS对象使数据最新提及数据延迟的问题,再回到ETL工具SSIS,补充一个实际应用话题:在SSIS中如何捕获上游变更数据(Change DataCap

    2025年6月30日
    4
  • 变量

    变量

    2022年3月3日
    42
  • jumpserver win终端无法添加

    jumpserver win终端无法添加

    2021年6月19日
    120

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号