LSD算法

LSD算法是一个直线提取算法,在opencv 中也有封装,它的主要思想是通过求导得到灰度的梯度,因为灰度梯度的方向的垂直方向就是线条的方向,将有相同方向的向量用矩形圈起来,再将举行精细化,最后就可以得到的一条线段了。

关于它的文章和算法和demo基本上可以在这里找到。

这篇文章里引入了很多名词,切听我一一道来。首先,我们看下图,这里的图片首先根据梯度的垂线构造了一个level-line field,它把和梯度的垂直方向的线叫做level-line,所以这个field就是由这样的线组成的场。有了这个场,因为有直线的区域我们总能够找到,很多方向相同的level-line,这样我们就能得到右边这些颜色区域了,也就是所谓的line support region。

如果把这个区域用举行圈起来的话就得到了如下图所示的矩形,注意这个举行我们是区分方向的。

至于,是根据什么规则生成的矩形,就像之前说的,在直线的区域,自然地level-line(梯度方向的垂线)自然就会比较接近,因此,我们就给定一个阈值\(/tau\),如果这些向量的夹角小于\(/tau\)且在这个区域内满足条件的向量足够多,我们就认为这个区域可能是直线,比如下图中,就只有8个符合条件的level-line,感觉是不足够多的,因此它可能不被看作是一个直线。具体地,这里使用了区域生长算法,即从某个点开始,找其领域内符合条件的点。

但是慢着,你可能会问,怎样才叫足够多?改天再说吧...

原文地址:https://www.cnblogs.com/drunknbeard/p/9986375.html

时间: 2024-10-13 01:31:22

LSD算法的相关文章

直线匹配-LSD算法

转自https://www.cnblogs.com/Jessica-jie/p/7523364.html 参考文章:An efficient and robust line segment matching approach based on LBD descriptor and pairwise geometric consistency ----Lilian Zhang  , Reinhard Koch   第二部分:Line detection and description 1.尺度空间

线特征LSD and 描述子LBD---LBD算法(二)

上一节主要是介绍LSD算法理论,这节主要是介绍LBD算法. 1.尺度空间中提取线段 为了克服在线检测碎片问题和提高大尺度变化的性能,我们的检测框架采用由对原始图像进行搞死下采样( with a set of 尺度因子and 高斯模糊 )的尺度空间金字塔组成(N层图像).我们首先用Edline算法每层的尺度空间产生一组线.每一条直线都有一个方向,它是由从直线左边到右边的大部分边缘像素的梯度构成的.然后通过在尺度空间中找到对应的直线来组织它们.在尺度空间中所有的线,他们被分配一个唯一的ID,如果图像

论文:LSD-线段提取算法

前言 参考资料: 论文主页:LSD: a Line Segment Detector  Rafael Grompone von Gioi, Jérémie Jakubowicz, Jean-Michel Morel, Gregory Randall 博客:基于LSD的直线提取算法 by tianwaifeimao 博客:线特征 by essica&jie 致谢 摘要 本文中的LSD算法是一种线段(line segment)检测算法,能够在线性时间内得到亚像素级精度的检测结果.它无需调试参数就可以

各种排序算法的实现和比较

算法的稳定性 如果待排序表中有两个元素 Ri 和 Rj,其对应的关键字keyi = keyj,注意是关键字相等,且在排序前 Ri 排在 Rj 前面,如果使用某一算法排序后,Ri 仍在 Rj 前面,则称这个算法是稳定的,否则是不稳定的. 在排序过程中,根据元素是否完全在内存中,可以将排序算法分为两类:内部排序是指在排序期间元素全部存放在内存中的排序:外部排序是指在排序期间元素无法全部同时放在内存中,必须在排序过程中根据要求不断地在内外存之间移动. 以下所有代码基于此类结构: typedef int

字符串低位优先排序真的只能排序字符串相同的字符么?

最近在刷剑指Offer上的题时遇到一题: 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个.例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323. 突然想到使用LSD算法, 1 package com.roysatm.niuke; 2 3 4 /** 5 * Created by roysatm on 2016/5/30. 6 */ 7 public class SolutionPrintMinNumber { 8 9 /*

20191209-八大排序之基数排序

1. 基数排序 算法核心思想 基数排序(radix sort)是一种只适用于数字或字母类型的排序方法,它检查数字或字母的每一位,将之分类,按照位数的特定顺序,来将元素排列.以数字为例,将所有元素按照个位数字分类,分类好后,将个位数字大小排列组合起来,再按照十位数字分类,再按照数字大小排列组合起来,一直到最大数位为止. 基数排序分类 基数排序的方式分为2类: LSD(Least significant digital):LSD的排序方式由键值的最右边开始,先比较最低位,也就是个位,进行分桶,分桶过

动画 | 什么是基数排序?

基数排序和计数排序一样无需进行比较和交换,和桶排序一样利用分布和收集两种基本操作进行排序.基数排序是把每一个元素拆成多个关键字,一个关键字可以在每一个元素上同等的位置进行计数排序,一个元素拆成多个关键字可以看作是要进行几轮分桶,以一个元素最长的长度为准. 基数排序可以看成多(单)关键字的排序,可以想象成桶排序那样分桶排序,也可以像计数排序那样归约化分治. 基数排序的思想是将待排序序列中的每组关键字进行桶排序.例如整数序列[103, 9, 1,7,11,15, 25, 201, 209, 107,

《转》八大算法详细讲解

转自http://blog.csdn.net/jobbofhe/article/details/51426934 排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存. 我们这里说说八大排序就是内部排序. 当n较大,则应采用时间复杂度为O(nlog2n)的排序方法:快速排序.堆排序或归并排序序. 快速排序:是目前基于比较的内部排序中被认为是最好的方法,当待排序的关键字是随机分布时,快速排序的平均时间最短:

数据挖掘十大经典算法

一. C4.5  C4.5算法是机器学习算法中的一种分类决策树算法,其核心算法是ID3 算法.   C4.5算法继承了ID3算法的优点,并在以下几方面对ID3算法进行了改进: 1) 用信息增益率来选择属性,克服了用信息增益选择属性时偏向选择取值多的属性的不足: 2) 在树构造过程中进行剪枝: 3) 能够完成对连续属性的离散化处理: 4) 能够对不完整数据进行处理. C4.5算法有如下优点:产生的分类规则易于理解,准确率较高.其缺点是:在构造树的过程中,需要对数据集进行多次的顺序扫描和排序,因而导