消失点:Fast and Accurate Vanishing Point Detection in Complex Scenes

    技术2024-04-18  106

    消失点:Fast and Accurate Vanishing Point Detection in Complex Scenes

    1.韦伯定律1.1 WLD1.2 WOD 算法实现获得WOD提取道路线索区域LVS获得消失点 文章中算法的大体框架如下:

    首先,通过WOD获取图像的特征。然后,基于差励计算出有效的道路线索。最终,使用文中提出的line-voting scheme (LVS)检测出主消失点。

    1.韦伯定律

    韦伯定律是表明心理量和物理量之间关系的定律,即感觉的差别阈值跟随原来刺激量的变化而变化,而且表现为一定的规律性。用公式来表示,就是: Δ I I = k \frac{\Delta I }{I} = k IΔI=k 其中 I I I为原刺激量, Δ I \Delta I ΔI为此时的差别阈值, k k k为常数,又称韦伯率。

    1.1 WLD

    由此引出了韦伯局部描述子(Weber Local Descriptor)来描述局部图像纹理特征。原始的WLD由两个部分组成:差励(differential excitation ξ w l d \xi wld ξwld)和方向( θ w l d \theta wld θwld)。

    差励部分由两项的比例计算:

    当前像素 p c p_c pc和它的邻域 p i p_i pi k ∗ k k*k kk的内核)的相对光强差的和。 2.当前像素的光强 p c p_c pc

    为了将结果限制在一个有限的区间范围内,采用了arctan函数来表达公式。因此,当前像素的差励可以计算为: ξ w l d ( p c ) = arctan ⁡ ( ∑ i = 1 n ∣ p i − p c ∣ p c ) \xi_{w l d}\left(p_{c}\right)=\arctan \left(\sum_{i=1}^{n} \frac{\left|p_{i}-p_{c}\right|}{p_{c}}\right) ξwld(pc)=arctan(i=1npcpipc) WLD的方向部分是一个梯度方向,可以快速的得到稳定的结果。Arctangent函数也可以用当前像素 p c p_c pc在y轴方向上的差值 d y ( p c ) d_y(p_c) dy(pc)和在x轴方向上的差值 d x ( p c ) d_x(p_c) dx(pc)的比例来计算。因此,在方向部分的差值可以计算为: θ w l d ( p c ) = arctan ⁡ ( d y ( p c ) / d x ( p c ) ) \theta_{w l d}\left(p_{c}\right)=\arctan \left(d_{y}\left(p_{c}\right) / d_{x}\left(p_{c}\right)\right) θwld(pc)=arctan(dy(pc)/dx(pc))

    1.2 WOD

    虽然WLD有着小的计算复杂度,在运行速度上还算快,但是它降低了描述子的精度,因此它仅作为了消失点检测的基础。相比之下,文中设计了一款Weber Orientation Descriptor,也由两个部分组成:更精确的差励和更精确的方向来解决文中WLD的缺陷。

    差励的组成与之前不同,每一个相邻像素 p i p_i pi被换成了所有相邻像素的平均光强 p ˉ i \bar{p}_i pˉi。这样,可以减少不同内核大小带来的相邻像素个数的影响。

    G ( p c ) = arctan ⁡ ( p c − p ˉ i p c ) G\left(p_{c}\right)=\arctan \left(\frac{p_{c}-\bar{p}_{i}}{p_{c}}\right) G(pc)=arctan(pcpcpˉi)

    在公式中,仅考虑 G G G大于零的响应,因为在暗处和阴影区域的方向是不可信的。平方根函数被用在了上述函数的结果中。平方根函数的作用是:减小更大的值相对于更小的值的变化,使得差励部分对较小的值更为敏感。因此,差励被计算为: ξ w o d ( p c ) = { G ( p c )  if  G ( p c ) ≥ 0 0  if  G ( p c ) < 0 \xi_{w o d}\left(p_{c}\right)=\left\{\begin{array}{ll} \sqrt{G\left(p_{c}\right)} & \text { if } G\left(p_{c}\right) \geq 0 \\ 0 & \text { if } G\left(p_{c}\right)<0 \end{array}\right. ξwod(pc)={G(pc) 0 if G(pc)0 if G(pc)<0 在WLD中,方向部分仅使用到了在x轴与y轴方向的像素。它忽略了内核中其他像素的细节,这也许会导致在方向估计上的错误。我们使用Gabor filter,它可以使用内核中所有的像素,来更精准的估计在每个像素上的局部主要方向。Gabor滤波器组是目前估计局部纹理方向的最佳滤波器之一,广泛应用于指纹分类等领域。一个二维的 k × k k\times k k×kGabor内核 g g g,在一个特定的方向 φ n \varphi_n φn和一个径向频率 ω \omega ω下,可以表示为: g φ n ( x , y ) = e − 1 8 σ 2 ( 4 a 2 + b 2 ) ⋅ ( i a ω − e c 2 / 2 ) g_{\varphi_{n}}(x, y)=e^{-\frac{1}{8 \sigma^{2}}\left(4 a^{2}+b^{2}\right)} \cdot\left(i a \omega-e^{c^{2} / 2}\right) gφn(x,y)=e8σ21(4a2+b2)(iaωec2/2) 该函数中, ( x , y ) = ( 0 , 0 ) (x,y)=(0,0) (x,y)=0,0)为内核中心位置; a = x cos ⁡ φ n + y sin ⁡ φ n a=x \cos \varphi_{n}+y \sin \varphi_{n} a=xcosφn+ysinφn; b = − x sin ⁡ φ n + y cos ⁡ φ n b=-x \sin \varphi_{n}+y \cos \varphi_{n} b=xsinφn+ycosφn; σ = k / 9 \sigma=k / 9 σ=k/9; c = 2.2 c = 2.2 c=2.2

    为了估计在图像中每个像素位置 p c p_c pc的主方向 θ a ( p c ) \theta_a(p_c) θa(pc),灰度输入图 I ( p c ) I(p_c) I(pc)使用了36个预定义方向 ( 0 ∘ , 5 ∘ , . . . 17 5 ∘ ) (0^\circ,5^\circ,...175^\circ) (0,5,...175)的一组Gabor滤波器卷积。Gabor energy E φ n E_{\varphi_{n}} Eφn被计算为复合滤波相应的幅值。 E φ n ( p c ) = Re ⁡ ( I ^ φ n ( p c ) ) 2 + Im ⁡ ( I ^ φ n ( p c ) ) 2 E_{\varphi_{n}}\left(p_{c}\right)=\operatorname{Re}\left(\hat{I}_{\varphi_{n}}\left(p_{c}\right)\right)^{2}+\operatorname{Im}\left(\hat{I}_{\varphi_{n}}\left(p_{c}\right)\right)^{2} Eφn(pc)=Re(I^φn(pc))2+Im(I^φn(pc))2 其中 I ^ φ n ( p c ) = I ( p c ) ⊗ g φ n \hat{I}_{\varphi_{n}}\left(p_{c}\right)=I\left(p_{c}\right) \otimes g_{\varphi_{n}} I^φn(pc)=I(pc)gφn ⊗ \otimes 代表卷积算子。卷积结果 I ^ φ n ( p c ) \hat{I}_{\varphi_{n}}\left(p_{c}\right) I^φn(pc)由两部分组成,一个实部 R e Re Re和一个虚部 I m Im Im。因此我们计算复合响应的平方范数来获得稳定的局部纹理特性。

    最终,滤波器给出最大复合相应的方向,被选为了实际方向,即: θ w o d ( p c ) = Argmax ⁡ φ n E φ n ( p c ) \theta_{w o d}\left(p_{c}\right)=\operatorname{Argmax}_{\varphi_{n}} E_{\varphi_{n}}\left(p_{c}\right) θwod(pc)=ArgmaxφnEφn(pc)

    算法实现

    获得WOD

    给定一个输入图像,首先使用中值滤波卷积来降低噪声和图像缺陷。图像被转换成了灰度空间, ξ w o d \xi_{w o d} ξwod θ w o d \theta_{wod} θwod将通过WOD模型获得。

    一个比较重要的需要考虑的点是如何在WOD中设定内核大小 k k k的值。更大的 k k k值可以让更多的纹理信息被考虑,但会使结果缺少局部代表性。

    提取道路线索区域

    根据韦伯定律,任何有效区域仅当差励大于一个固定的比率 T T T时才值得注意,而更小的被当成了背景噪声。减小背景噪声的效果可以提高模型的精度。更多的道路线索,能得到更准确的结果。因此,T需要被设置的足够小。

    LVS获得消失点

    在完成了上述的步骤之后,可以为图像区域的消失点投票。投票的方案有:hard-voting scheme, soft-voting scheme, weighting-voting scheme。文中提出了line-voting scheme(讲道理,这个时间复杂度有点长(等等,我可以试试,累加器只用中间特别小的一部分,因为消失点的上下浮动区域会特别小))。

    首先,构建一个与图片大小相同的累加器空间,将值均设为0。然后,有效区域内的每一个像素都可以被看成一个voter,如果候选消失点在它的位置和方向的线上,所对应的累加器位置值增加1。最终,累加器值最大的位置被选定为所估计的消失点。

    Processed: 0.018, SQL: 9