备注:关于LSD的原版论文可点击此处,这一篇是原课题组又添加了一点改进的版本。
概要
LSD是一个线性时间的线段检测器,提供亚像素的精确结果。它被设计成可以在任何数字图像上工作而不需要调整参数。它可以控制自己的错误检测数量:平均而言,每幅图像允许有一个false alarm。
源码
关于这篇论文的代码和展示页,请点击这里
介绍
这一小节主要是引入了几个概念,下面就进行说明。
A.梯度和水平线
LSD的目的是检测图像上的局部直线轮廓(原文为straight contours)。这就是我们所说的线段。Contours就是图像中灰度等级变化足够快的区域,从暗到亮或相反。因此,图像的梯度和水平线level lines是关键概念。

B.线支持区域和对齐点
算法首先计算每个像素的水平线角度,以产生一个水平线场,即一个单位矢量场,使所有矢量都与穿过其基点的水平线相切。然后,根据一定的公差τ,这个场被分割成像素的连接区域,这些像素共享相同的水平线角度。 这些连接区域被称为线支持区域。
说完上面这几个基本概念就举一个例子:
每个线段支持区域(图中间黑色的像素部分)都是一个线段的候选者。相应的几何对象(本例中为矩形)必须与之相关联。线条支持区域的主惯性轴被用作矩形的主要方向;矩形的大小要覆盖整个区域。对于矩形中的像素点,如果它的水平线的角度与矩形的角度在一个公差τ之内,被称为对齐点(aligned points)。
C.线段验证
每个矩形都要经过一个验证程序。在线段支持区域中的所有像素点个数为n,对齐点的个数为k,这两个数值用于验证这个矩形是否要作为一条检测到的线段。
下面就来解释一下这个验证的方法,方法是基于contrario方法(下文简称为相反性原理)和Desolneux, Moisan和Morel提出的亥姆霍兹原理(Helmholtz principle)。
亥姆霍兹原理指出,在有噪声的图像上无法进行感知(或检测)。
而相反性原理是为了定义一个噪声,或者一个相反模型(contrario model),这个相反性模型不存在期望的结构。如果在相反模型中,与被观测到的这个事件一样好的事件的预期数量较少,则这个事件就被验证。换句话说,结构化事件被定义为在逆向模型中是罕见的。说人话:结构化事件(structured events)在逆向模型中是罕见的。
那么,怎么把这个原理应用到前面的对齐点等概念中呢?
在相反性模型中,一条线段上的对齐点数量应该和被观测到的线段上的一样多,或者更多。用公式表示就是
N t e s t ∗ P H 0 [ k ( r , I ) ] ≥ k ( r , i ) ] ( 1 ) N_{test} * P_{H_0}[k(r,I)] \geq k(r,i)] \ \ \ \ \ \ \ \ \ \ \ (1) Ntest∗PH0[k(r,I)]≥k(r,i)] (1)
N t e s t N_{test} Ntest是可能被考虑的矩形的总数; P H 0 P_{H_0} PH

LSD(Line Segment Detector)是一种高效、亚像素精度的线段检测算法,能在各种图像上运行而无需参数调整。算法通过计算梯度和水平线角度,构建线支持区域并验证矩形来检测线段。采用相反性原理控制错误检测,通过NFA(Number of False Alarms)值判断线段有效性。在区域生长过程中,可能遇到的线段融合问题通过分割细化矩形解决。LSD算法的时间复杂度与图像像素数成正比,保证了其线性时间效率。
最低0.47元/天 解锁文章
1153

被折叠的 条评论
为什么被折叠?



