论文阅读——椭圆检测 2014:Joint A Contrario Ellipse and Line Detection

直线段椭圆检测 2014:Joint A Contrario Ellipse and Line Detection

这篇论文是真的难读,标题可以理解为一个联合逆向的椭圆和直线段检测算法,这确实很符合TPAMI的风格啊,下面进行慢慢啃吧。14年的直线段和椭圆同时检测,发在TPAMI上,有源码,下面进行详细的阅读分析吧。因为之前有关于椭圆的调研,这里有些内容就不放了,多数是放关键的部分。

摘要

我们提出了一种线段和椭圆弧检测器,它能够在不调整任何参数的情况下减少各种类型的图像上的错误检测数目。对于灰度图像中的给定像素区域,检测器决定是否存在线段或椭圆弧(模型验证)。如果两种结果对于同一区域都是可能的,那么检测器选择最能解释数据的结果(模型选择)。我们描述了一个基于逆向理论的统计准则,它既用于验证又用于模型选择。实验结果表明,当应用于合成图像和真实图像时,与现有检测器相比,所提出的方法具有更好的性能。

介绍

(这里一些应用,相关工作之类我就不分析了,只列出比较重要的部分)

椭圆和直线段应用的算法关键的方面就是对检测参数进行调参,这些参数会直接导致错误的检测结果。阈值宽松会检测出错误的椭圆,太约束的参数很多椭圆检测不出来。

论文的目的是提出一种自动检测方法,允许可靠地检测图像中的线段和椭圆弧,而不管它们的大小、内容或来源。椭圆弧和多边形经常容易解释错误,但这些问题可以通过调参解决。本文的主要关注点是提出这些阈值的自动计算。

这篇文章之前有一篇论文叫做ELSD,采用了三个步骤:候选生成,候选验证与模型选择。本文在这个的基础上提出了ELSDc,与ELSD的过程一致。这两个算法都选择了逆向准则进行候选验证与模型选择,ELSDc使用的是连续的公式,而ELSD是离散的,这个方法使得结果更加鲁棒。在ELSD中,直线段和椭圆弧段是直接处理与比较的,在ELSDc中部分直线段根据凸性和多边形光滑性组合在一起。然后,将椭圆弧与整个多边形线段进行比较,以代替孤立线段,给出更公平的比较,并显著改进了模型选择步骤。最后,多边形线被分解成线段用于输出。

论文使用的逆向方法,提供了一种基于非偶然性原理或Helmholtz感知原理的自动计算检测阈值的有效技术,该原理声明在随机图像中不存在感知。这种推理起源于Lowe关于无参数重要性评估的初步工作,其中基于事件偶然发生的概率来量化事件的重要性:“we need to determine the probability that each relation in the image could have arisen by accident. Naturally, the smaller that this value is, the more likely the relation is to have a causal interpretation”(我们需要确定图像中每个关联可能是一个偶然事件的概率,当然,这个值越小,关系就越可能具有因果解释。)。尽管无参,Lowe的准则没有评估总体的非偶然性,这导致没有完全防范错误检测。这恰恰是逆向统计框架的主要贡献:通过关注偶然发生事件的期望值,而不是Lowe那样关注概率,实现了整体错误检测数目的控制。

反向框架将Number of False Alarms(NFA)关联到每个候选,该数目表示可能偶然出现在相同大小的噪声图像中的候选的预期数量,NFA值越小,这个结构越结构化。这个准则用作验证标准:当原始的NFA小于一个给定的阈值,这个被声明为有效,也就是一个显著的结构(直线段,圆或椭圆)。

在这里插入图片描述
根据上图有如下几个定义:
d-side polygonal line g: d个直线段,共计d+1个端点。
elliptical arc a:一个椭圆环,参数为(中心点,长短轴,旋转角,环的起始与结束角度,宽度)
circular arc a ˉ \bar{a} aˉ: 长短轴相等,旋转角为0的一个椭圆环

候选生成

从一个种子点开始 p s 0 p_{s_0} ps0,迭代的连接那些在给定精度一致的那些像素点。当没有像素点可以生成的时候,这组像素可以拟合出一个矩形。这个矩形的两段就是一个新的搜索种子点 p s r , p s l p_{s_r},p_{s_l} psr,psl。然后将具有相同端点的矩形连接起来(这样就可以得到候选椭圆弧段),连接时候遵循如下的椭圆性质:凸性(矩形变化方向一致),光滑性(矩形变化角度小于 π / 2 \pi/2 π/2

当没有矩形区域可以添加之后,就得到了多边形候选和椭圆弧段候选。

多边形候选 g g g:直接从矩形序列得到,其最大矩形的宽度作为整体多边形的宽度。

候选椭圆弧段 a a a:其前5个参数可以通过拟合算法(ELSD的拟合算法)得到,两个端点可以算出圆环起始终点角度,该宽度是通过分别求出从椭圆到外部和内部的最远点的距离来计算的。

候选圆弧段 a ˉ \bar{a} aˉ:拟合类似,而且其参数小可以克服小弧段拟合的精度差的缺点。

从种子像素开始,候选生成这个步骤输出三个结构候选:多边形,椭圆,圆。验证之后,这些像素均不会被使用。然后新的种子点选择出来,直到所有像素都被标记使用过。

模型验证 ※

(这节非常关键,我会详细的对其进行分析)

逆向验证的主要思想是使用一个能够拒绝那些可能偶然出现的候选的方法来自动计算检测阈值。在逆向框架内需要两个主要要素:

  1. 一个验证函数,能够给每个候选打分,反映其结构化的程度。
  2. 一个非结构图像数据的随机模型。

在(1)的度量意义下,当它太结构化以至于无法再(2)模型中得到期望,则这个候选被验证。

一个非结构模型,我们定义其为一个逆向 H 0 \mathcal{H}_0 H0模型:

  • ∀ p ∈ Γ \forall p\in \Gamma pΓ a n g l e ( ▽ x ( p ) ) angle(\bigtriangledown x(p)) angle(x(p))是在 [ 0 , 2 π ) [0,2\pi) [0,2π)之间的均匀分布。
  • { a n g l e ( ▽ x ( p ) ) } p ∈ Γ \{angle(\bigtriangledown x(p))\}_{p\in \Gamma} {angle(x(p))}pΓ是独立随机变量。

其中, ▽ x ( p ) \bigtriangledown x(p) x(p)表示在图像 x x x中点 p p p处的梯度, a n g l e ( ▽ x ( p ) ) angle(\bigtriangledown x(p)) angle(x(p))表示其方向角。在后面的说明中, x x x表示要分析的图像, X X X是与 x x x大小一样的随机图像,由 H 0 \mathcal{H}_0 H0模型绘制得到。

c x c^x cx表示一个在图像 x x x中的候选特征 c c c,这个 c c c可以为直线段 s s s,多边形线 g g g,椭圆弧段 a a a,圆弧段 a ˉ \bar{a} aˉ

定义:aligned pixel: 对于一个有方向的直线段 s x s^x sx,一个像素点 p ∈ Γ p\in \Gamma pΓ被认为是在精度 δ ∈ [ 0 , 1 ] \delta\in[0,1] δ[0,1]下对齐的(aligned),如果其满足 a n g l e _ e r r ( ▽ x ( p ) , d i r ⊥ ( s x ) ) ⩽ δ π angle\_err(\bigtriangledown x(p), dir_{\perp}(s^x))\leqslant\delta\pi angle_err(x(p),dir(sx))δπ,其中 d i r ⊥ ( s x ) dir_{\perp}(s^x) dir(sx)表示直线段 s x s^x sx的正交方向, a n g l e _ e r r ( a , b ) angle\_err(a,b) angle_err(a,b)表示两个向量的角度差。

对于多边形段,验证像素点是否对齐,可以利用上述公式验证角度对齐,对于椭圆弧段来说,验证当前像素点对应最近的椭圆像素点的角度是否对齐即可。(这个如果还不理解可以直接读论文部分,原理很简单)

l ( c x ) l(c^x) l(cx)表示特征 c x c^x cx的支撑域的像素点个数,定义一系列二值 y 1 , y 2 , . . . , y l ( c x ) y_1,y_2,...,y_{l(c^x)} y1,y2,...,yl(cx)关联支撑域内的每个像素点,如果对齐则令 y i = 0 y_i=0 yi=0,否则为1。令 k ( c x ) k(c^x) k(cx)表示为特征 c x c^x cx的结构化程度。

对于直线段检测问题,测度函数 k ( s x ) = ∑ j = 1 l ( s x ) y j k(s^x)=\sum_{j=1}^{l(s^x)}y_j k(sx)=j=1l(sx)yj,对于多边形线和椭圆弧段有同样的累加函数。但这个函数是离散的,取值范围从 0 0 0 l ( c x ) l(c^x) l(cx):0表示完美的结构化, l ( c x ) l(c^x) l(cx)表示特征无结构。为了绕开这里面的精度参数 δ \delta δ,作者给出了一个连续的计算方法。
y j ~ = a n g l e _ e r r ( ▽ x ( p j ) , d i r ⊥ ( c x ) ) π ∈ [ 0 , 1 ] \tilde{y_j}=\dfrac{angle\_err(\bigtriangledown x(p_j), dir_{\perp}(c^x))}{\pi}\in[0,1] yj~=πangle_err(x(pj),dir(cx))[0,1]

将上面这个公式带入原来的测度函数里面,则得到 k ~ ( c x ) = ∑ j = 1 l ( c x ) y j ~ \tilde{k}(c^x) = \sum_{j = 1}^{l(c^x)}\tilde{y_j} k~(cx)=j=1l(cx)yj~,其他性质与原来一致,只不过原来离散变为连续了,而且少了一个参数 δ \delta δ

为了验证特征 c x c^x cx具有很强的结构性,就要计算这个特征在对应的噪声图中的结构性比在图像 x x x中更好的概率,概率越大就说明这个特征结构性越弱(因为噪声图都比它好)。对于原来的离散公式来说,概率表达式为 P [ k ( c X ) ⩽ k ( c x ) ] \mathbb{P}[k(c^X)\leqslant k(c^x)] P[k(cX)k(cx)],对于连续公式来说,概率表达式为 P [ k ~ ( c X ) ⩽ k ~ ( c x ) ] \mathbb{P}[\tilde{k}(c^X)\leqslant \tilde{k}(c^x)] P[k~(cX)k~(cx)],下面给出这两个公式的计算推导过程。

对于离散的情况,很容易得到一个随机像素点对齐的概率是 δ \delta δ,那么这个概率问题就是 l ( c x ) l(c^x) l(cx)的伯努利概率为题,即概率计算公式如下:
P [ k ( c X ) ⩽ k ( c x ) ] = ∑ j = 0 k ( c x ) ( l ( c x ) j ) δ l ( c x ) − j ( 1 − δ ) j \mathbb{P}[k(c^X)\leqslant k(c^x)] = \sum_{j=0}^{k(c^x)}\left(\begin{array}{c}l(c^x)\\j\end{array}\right)\delta^{l(c^x)-j}(1-\delta)^j P[k(cX)k(cx)]=j=0k(cx)(l(cx)j)δl(cx)j(1δ)j

那么对于连续的情况,每个 y ~ i \tilde{y}_i y~i是[0,1]上的均匀分布,他们之间独立同分布。那么这个函数的概率计算方式用到了Irwin-Hall分布公式,令 Z Z Z为一个参数 r r r的Irwin-Hall随机变量,也就是多个[0,1]均匀分布的和,那么它的概率分布为如下所示。其中 ⌊ z ⌋ \left \lfloor z \right \rfloor z表示不超过z的最大整数。
P [ Z ⩽ z ] = 1 r ! ∑ j = 0 ⌊ z ⌋ ( − 1 ) j ( r j ) ( z − j ) r P[\mathbb{Z\leqslant z}] = \dfrac{1}{r!}\sum_{j=0}^{\left \lfloor z \right \rfloor}(-1)^j\left(\begin{array}{c}r\\j\end{array}\right)(z-j)^r P[Zz]=r!1j=0z(1)j(rj)(zj)r

在当前公式中, k ~ ( c x ) \tilde{k}(c^x) k~(cx)对应于 Z Z Z k ( c x ) k(c^x) k(cx)对应于 z z z l ( c x ) l(c^x) l(cx)对应于r,那么针对椭圆这个概率公式计算方式如下所示。
P [ k ~ ( c X ) ⩽ k ~ ( c x ) ] = 1 l ( c x ) ! ∑ j = 0 ⌊ k ~ ( c x ) ⌋ ( − 1 ) j ( l ( c x ) j ) ( k ~ ( c x ) − j ) l ( c x ) \mathbb{P}[\tilde{k}(c^X)\leqslant \tilde{k}(c^x)] = \dfrac{1}{l(c^x)!}\sum_{j=0}^{\left \lfloor \tilde{k}(c^x) \right \rfloor}(-1)^j\left(\begin{array}{c}l(c^x)\\j\end{array}\right)(\tilde{k}(c^x)-j)^{l(c^x)} P[k~(cX)k~(cx)]=l(cx)!1j=0k~(cx)(1)j(l(cx)j)(k~(cx)j)l(cx)

(如果是我想到上面的点子,我估计就设一个概率阈值,对所有特征直接检验这个对齐情况,不会想到下面的NFA问题,NFA相当于融合了特征的一种检验方式)

下面是给出NFA验证公式的定义与推导。
定义: Z = { Z 1 , . . . , Z N Z } \mathcal{Z}=\{Z_1,...,Z_{N_\mathcal{Z}}\} Z={Z1,...,ZNZ}为一组正实数随机变量。观测值 z i z_i zi对于 Z i Z_i Zi是一个 ϵ − m e a n i n g f u l \epsilon-meaningful ϵmeaningful事件,当其对应的NFA: N F A ( z i ) = N Z P [ Z i ⩽ z i ] &lt; ϵ NFA(z_i)=N_\mathcal{Z}\mathbb{P}[Z_i\leqslant z_i]&lt;\epsilon NFA(zi)=NZP[Zizi]<ϵ

个人理解:以椭圆为例,假设这个图片上存在所有可能的椭圆,整体对齐概率的期望应该小于一个阈值 ϵ \epsilon ϵ,针对于直线段也是类似,所以才引出上面的NFA定义来保证这个性质,这里存疑。

(暂时读不下去了,始终无法理解NFA的想法,还有其自由度的概念,乘上前面的那个常数项,是个巨大的值,都无法进行解释,看论文的说法有点牵强,但是其结果确实是很好,所以其方法一定隐藏着什么大问题我没有看明白,我暂时先放这,读明白之后继续补)

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值