3.双特征表示与匹配
3.1参数化与距离度量
在齐次坐标中,2D点的参数化表示为p:[x,y,1]T\mathbf{p} : [x, y, 1]^{\mathrm{T}}p:[x,y,1]T。类似地,2D线段被参数化为一个3维向量l:[a,b,c]T\mathbf{l}: [a, b, c]^{\mathrm{T}}l:[a,b,c]T,对应于其标准方程(1:ax+by+c=0)(1:ax+by+c=0)(1:ax+by+c=0)。这种参数化对于矩阵操作(例如变换)很方便,但当线段是垂直、水平或接近原点时,其参数不稳定【28】。此外,线段还可以通过极坐标(即Hough空间)进行参数化。这种方式在几何上直观,但不方便进行矩阵操作。
我们采用了另一种参数化方法 - 端点参数化:由其两个端点p0\mathbf{p}^0p0和p1\mathbf{p}^1p1表示线段I。假设线段l经过模型M\mathcal{M}M的变换。变换后的线段是Î,其端点变为p^0\hat{\mathbf{p}}^0p^0和p^1\hat{\mathbf{p}}^1p^1(其中p^0,1=M∘p0,1\hat{\mathbf{p}}^{0,1} = \mathcal{M} \circ \mathbf{p}^{0,1}p^0,1=M∘p0,1)。因此,几何上有意义的距离可以被定义为端点到线段的距离。也就是,从两个变换后的端点p^0\hat{\mathbf{p}}^{0}p^0和p^1\hat{\mathbf{p}}^{1}p^1到目标线段l’的垂直偏移的平方和的平方根距离(如图2\color{red}{2}2所示)。即,
d(l^,l′)=d2(p^0,l′)+d2(p^1,l′),d(\hat{\mathbf{l}},\mathbf{l}^{\prime})=\sqrt{d^{2}(\hat{\mathbf{p}}^{0},\mathbf{l}^{\prime})+d^{2}(\hat{\mathbf{p}}^{1},\mathbf{l}^{\prime})},d(l^,l′)=d2(p^0,l′)+d2(p^1,l′),
其中p^=[u^,v,1^]T\hat{\mathbf{p}} = [\hat{u}, \hat{v, 1}]^{\mathrm{T}}p^=[u^,v,1^]T,I′=[a′,b′,c′]T\mathrm{I^{\prime}} = [a^{\prime}, b^{\prime}, c^{\prime}]^{\mathrm{T}}I′=[a′,b′,c′]T,d(p,I′^)=∣l′⋅p^∣a′2+b′2d(\hat{\mathbf{p}, \mathrm{I^{\prime}}}) = \frac{|\mathrm{l^{\prime} \cdot \hat{p}}|}{\sqrt{a^{\prime2} + b^{\prime2}}}d(p,I′^)=a′2+b′2∣l′⋅p^∣是从变换后的点p^\hat{\mathbf{p}}p^到目标线段l′\mathrm{l}^{\prime}l′的距离。注意,这个距离最初用于基于线段的运动结构问题[23],我们借用它来进行2D运动模型估计。
运动模型M\mathcal{M}M然后通过共同最小化点的欧氏距离和我们新定义的线段距离来估计:
M^=argminM(∑id2(p^i,pi′)+∑jd2(l^j,lj′)),\hat{\mathcal{M}}=\arg\min_{\mathcal{M}}\left(\sum_{i}d^{2}\left(\hat{\mathbf{p}}_{i},\mathbf{p}_{i}^{\prime}\right)+\sum_{j}d^{2}(\hat{\mathbf{l}}_{j},\mathbf{l}_{j}^{\prime})\right),M^=argMmin(i∑d2(p^i,pi′)+j∑d2(l^j,lj′)),
其中p^i=M∘pi\hat{\mathbf{p}}_i=\mathcal{M}\circ\mathbf{p}_ip^i=M∘pi,Îj=M∘lj_j=\mathcal{M}\circ\mathcal{l}_jj=M∘lj分别为关键点和线段的索引。
线段的端点参数化相对于先前的表示具有三个优点:1) 点到线的距离在几何上有意义,与点到点的欧几里得距离具有一致的度量;2) 它免除了数值不稳定的条件[28],因为当前的几何距离对旋转是不变的;3) 它为基于变形的网格模型估计提供了有用的局部信息(长度和端点位置)。
3.2 引导线段匹配
为了获得关键点匹配,我们简单地使用VLFeat [24]实现的SIFT [20]特征。至于线段,我们采用EDLine [1]进行线段检测,但由于外观不够显著、相同线段的片段以及缺乏对极约束,线段匹配更具挑战性。尽管最近的基于外观的线段描述符(如MSLD[26]、LBD[30])在存在旋转、噪声和光照变化的情况下能够产生令人满意的匹配结果,但它们无法处理大尺度或透视变换(图 3(d){3}(\mathrm{d})3(d))。主要原因是该描述符在源图像和目标图像中的每条线周围采样一个固定宽度的矩形区域(称为线支持区域,LSR),使其对尺度敏感。为了克服这个问题,我们利用了初始关键点提供的全局信息,并提出了一种称为引导线段匹配的方法。
引导线段匹配。我们考虑在源帧和目标帧分别提取描述符的两个不同的LSR。源帧中的LSR Ωs\Omega_sΩs 仍然是一个固定宽度的矩形区域,而目标帧中的LSR Ωt′\Omega_t^{\prime}Ωt′ 可能是一个由初始单应性 H0\mathcal{H}_0H0 变换而来的梯形区域(图 3(c){3}(c)3(c)),其中 H0\mathcal{H}_0H0 最初是由关键点估计并可能提供了两个帧之间尺度/透视变换的近似。为了获得变换后的LSR Ωt′\Omega_t^{\prime}Ωt′,我们首先通过 H0−1\mathbf{H}_{0}^{-1}H0−1 从目标帧反投影线段到源帧,然后得到源帧中的矩形LSR Ωt∗\Omega_t^*Ωt∗。接下来,我们使用 H0\mathbf{H}_{0}H0 将 Ωt∗\Omega_t^*Ωt∗ 转换到目标帧,得到 Ωt′\Omega_t^{\prime}Ωt′,这是提取目标帧描述符的最终LSR。一旦确定了线段描述符的LSR,我们使用MSLD将线段的外观编码成描述符向量,然后进行常规的特征匹配过程。为了减少 H0\mathcal{H}_0H0 的偏差估计,我们采用迭代细化。伪代码如算法 1 所示。在我们的实验中,通常需要 2∼32\sim32∼3 次迭代才能收敛。图 3(e){3}(\mathrm{e})3(e) 展示了我们的匹配结果。
导线匹配算法 |
---|
估计 H0\mathbf{H}_0H0 从 p′=H0p\mathbf{p}^{\prime}=\mathbf{H}_0\mathbf{p}p′=H0p; |
重复 |
l∗←通过H0−1反投影l′;\mathrm{l}^* \gets \text{通过} \mathbf{H}_0^{-1} \text{反投影} \mathrm{l}^{\prime};l∗←通过H0−1反投影l′; |
Ωt∗←用于l∗的矩形LSR;\Omega_{t}^{*} \gets \text{用于} \mathrm{l}^* \text{的矩形LSR};Ωt∗←用于l∗的矩形LSR; |
Ωt′←通过H0变换的Ωt∗;\Omega_{t}^{\prime} \gets \text{通过} \mathbf{H}_0 \text{变换的} \Omega_{t}^{*};Ωt′←通过H0变换的Ωt∗; |
在 Ωt′\Omega_t^{\prime}Ωt′ 中提取 l′\mathrm{l}^{\prime}l′ 的线段描述符,在 Ωs\Omega_sΩs 中提取 l′\mathrm{l}^{\prime}l′ 的线段描述符; |
在帧之间找到线段对应关系 (1,1′)(1,1^{\prime})(1,1′); |
从新的对应关系更新 H0\mathcal{H}_0H0(见第 4.1{4.1}4.1 节); |
直到对应的点对 (p,p′),(l,l′)(\mathbf{p},\mathbf{p}^{\prime}),(\mathbf{l},\mathbf{l}^{\prime})(p,p′),(l,l′) 不再改变。 |