Introduction1
直接法依赖于光度恒定假设,但是多帧之间的曝光时间和辐照衰减都会破坏假设。
光度模型
物体通过反射光线从而被看见,一点反射的光量叫辐射(radiance) L L L 。如果辐射和观测的角度独立,则是朗伯反射(漫反射)。
传感器在x x x 位置接收的能量值叫辐照(Irradiance) I ( x ) I(x) I ( x ) .
不同的空间点的辐射与辐照应是一一对映的。但是相机都会存在渐晕 ,它符合cos的四阶关系,因此用V : Ω → [ 0 , 1 ] V:\Omega\to[0,1] V : Ω → [ 0 , 1 ] 建模:I ( x ) = V ( x ) L (1)
I(x)=V(x) L \tag{1}
I ( x ) = V ( x ) L ( 1 )
传感器在曝光时间e e e 内对辐照进行积分,假设期间辐照恒定,因此建模为:I a c c ( x ) = e I ( x ) (2)
I_{a c c}(x)=e I(x) \tag{2}
I a c c ( x ) = e I ( x ) ( 2 )
经过相机 响应函数(CRF) f : R → [ 0 , 255 ] f:\R\to[0,255] f : R → [ 0 , 2 5 5 ] 后输出图像强度,CRF限制了动态范围,过曝会设为255,欠曝会设置为0.我们无法得到决对尺度,因此把CRF归一化到单位区间[ 0 , 1 ] [0,1] [ 0 , 1 ] 。
因此辐射L L L 映射为图像强度O O O :O = f ( e V ( x ) L ) (3)
O=f(e V(x) L) \tag{3}
O = f ( e V ( x ) L ) ( 3 )
跟踪前端
使用金字塔KLT跟踪,在此基础上增加帧间的增益比,使用舒尔补来高效的实现。
为了恢复渐晕需要将特征点覆盖整个图像,因此使用网格来使特征均匀分布,使用长特征跟踪来更好的覆盖径向。
为了改善长期跟踪,使用双向光流剔除误匹配。同时还在特征附近使用小patch来一起加入优化,引入低梯度图像区域,降低对于几何误差的敏感。
优化后端
能量函数:E = ∑ p ∈ P ∑ i ∈ F p w i p ∥ O i p − f ( e i V ( x i p ) L p ) ⏟ r ( f , V , e i , L p ) ∥ h (4)
E=\sum_{p \in P} \sum_{i \in F_{p}} w_{i}^{p}\left\|\underbrace{O_{i}^{p}-f\left(e_{i} V\left(x_{i}^{p}\right) L^{p}\right)}_{r\left(f, V, e_{i}, L^{p}\right)}\right\|_{h} \tag{4}
E = p ∈ P ∑ i ∈ F p ∑ w i p ∥ ∥ ∥ ∥ ∥ ∥ ∥ r ( f , V , e i , L p ) O i p − f ( e i V ( x i p ) L p ) ∥ ∥ ∥ ∥ ∥ ∥ ∥ h ( 4 )
假设点都是在朗伯平面上。
CRF建模:f G ( x ) = f 0 ( x ) + ∑ k = 1 n c k h k ( x ) (5)
f_{G}(x)=f_{0}(x)+\sum_{k=1}^{n} c_{k} h_{k}(x) \tag{5}
f G ( x ) = f 0 ( x ) + k = 1 ∑ n c k h k ( x ) ( 5 )
选择n = 4 n=4 n = 4 ,它满足f G ( 0 ) = 0 , f G ( 1 ) = 255 f_G(0)=0,f_G(1)= 255 f G ( 0 ) = 0 , f G ( 1 ) = 2 5 5 。
假设衰减因子是中心对称:V ( x ) = 1 + v 1 R ( x ) 2 + v 2 R ( x ) 4 + v 3 R ( x ) 6 (6)
V(x)=1+v_{1} R(x)^{2}+v_{2} R(x)^{4}+v_{3} R(x)^{6} \tag{6}
V ( x ) = 1 + v 1 R ( x ) 2 + v 2 R ( x ) 4 + v 3 R ( x ) 6 ( 6 )
使用LM算法,将辐射的估计与其它参数解耦。
第一步
固定L p L^p L p ,求雅克比J = ( ∂ r ∂ c , ∂ r ∂ v , ∂ r ∂ e i ) (7)
J=\left(\frac{\partial r}{\partial \boldsymbol{c}}, \frac{\partial r}{\partial \boldsymbol{v}}, \frac{\partial r}{\partial e_{i}}\right) \tag{7}
J = ( ∂ c ∂ r , ∂ v ∂ r , ∂ e i ∂ r ) ( 7 )
通过求解公式(8)获得:( J T W J + λ diag ( J T W J ) ) Δ x = − J T W r (8)
\left(\boldsymbol{J}^{T} \boldsymbol{W} \boldsymbol{J}+\lambda \operatorname{diag}\left(\boldsymbol{J}^{T} \boldsymbol{W} \boldsymbol{J}\right)\right) \Delta \boldsymbol{x}=-\boldsymbol{J}^{T} \boldsymbol{W} \boldsymbol{r} \tag{8}
( J T W J + λ d i a g ( J T W J ) ) Δ x = − J T W r ( 8 )
权重矩阵由两部分的权重因子组成,第一是Huber函数,第二是降低高梯度图像位置的权重,防止小的不准确导致大的错误,即:w r ( 2 ) = μ μ + ∥ ∇ F i ( x i p ) ∥ 2 2 (9)
w_{r}^{(2)}=\frac{\mu}{\mu+\left\|\nabla F_{i}\left(x_{i}^{p}\right)\right\|_{2}^{2}} \tag{9}
w r ( 2 ) = μ + ∥ ∇ F i ( x i p ) ∥ 2 2 μ ( 9 )
公式(9)会降低图像块中心的权重,增加附近残差的权重。
第二步
固定其他的参数,每个点都是独立更新:J p = ( ∂ r ∂ L p ) (10)
\boldsymbol{J}^{p}=\left(\frac{\partial r}{\partial L^{p}}\right) \tag{10}
J p = ( ∂ L p ∂ r ) ( 1 0 )
Δ L = − J p T W p r p ( 1 + λ ) J p T W p J p (11)
\Delta L=\frac{-\boldsymbol{J}_{p}^{T} \boldsymbol{W}_{p} \boldsymbol{r}_{p}}{(1+\lambda) \boldsymbol{J}_{p}^{T} \boldsymbol{W}_{p} \boldsymbol{J}_{p}} \tag{11}
Δ L = ( 1 + λ ) J p T W p J p − J p T W p r p ( 1 1 )
该算法可以在离线和在线两种模式下工作:
所有参数一起优化,大的序列会分块。剔除外点后再进行优化一次。
新来一帧先根据当前值,去除渐晕和响应函数的影响:E = ∑ i = 1 M ∑ p ∈ P i w i p ( f − 1 ( O i p ) V ( x i p ) − e i L p ⏟ r ( e i , L p ) ) 2 (12)
E=\sum_{i=1}^{M} \sum_{p \in P_{i}} w_{i}^{p}\left(\underbrace{\frac{f^{-1}\left(O_{i}^{p}\right)}{V\left(x_{i}^{p}\right)}-e_{i} L^{p}}_{r\left(e_{i}, L^{p}\right)}\right)^{2} \tag{12}
E = i = 1 ∑ M p ∈ P i ∑ w i p ⎝ ⎜ ⎜ ⎜ ⎛ r ( e i , L p ) V ( x i p ) f − 1 ( O i p ) − e i L p ⎠ ⎟ ⎟ ⎟ ⎞ 2 ( 1 2 )
然后优化曝光时间,初始化辐射强度为跟踪点的平均强度。
在后台对渐晕和响应函数进行优化。
Introduction2
光圈焦距的变化会影响标定的参数,长时间使用也会变化。和上面的不同,这里没有假设渐晕是中心对称的。
本文2 的亮点
ORB特征附近取patch
CRF使用薄板样条插值(TPS, Thin Plate Splines)和Gamma曲线建模
六阶多项式和TPS建模渐晕
通过插值(TPS)稀疏变成稠密估计
联合优化辐照度,渐晕和CRF
CPU实时
自然环境和部分动态环境下运行
Method
假设(Assumptions)
朗伯反射
场景光照不随时间变化
衰减矫正系数为[0,1]之间
相邻的像素具有相似的衰减
衰减因子估计(Attenuation Factor Estimate)
二维薄板多项式样条为:h ( u ) = p ( u ) + ∑ i = 1 N c i ⋅ ϕ ( ∥ u − d i ∥ ) (13)
h(\mathbf{u})=p(\mathbf{u})+\sum_{i=1}^{N} c_{i} \cdot \phi\left(\left\|\mathbf{u}-\mathbf{d}_{i}\right\|\right) \tag{13}
h ( u ) = p ( u ) + i = 1 ∑ N c i ⋅ ϕ ( ∥ u − d i ∥ ) ( 1 3 )
径向基函数(RBF)ϕ ( r ) = r 2 ⋅ ln ( r ) (14)
\phi(r)=r^{2} \cdot \ln (r) \tag{14}
ϕ ( r ) = r 2 ⋅ ln ( r ) ( 1 4 )
多项式为:p ( u ) = v ⊤ ⋅ ( 1 u ) (15)
p(\mathbf{u})=\mathbf{v}^{\top} \cdot \left( \begin{array}{l}{1} \\ {\mathbf{u}}\end{array}\right) \tag{15}
p ( u ) = v ⊤ ⋅ ( 1 u ) ( 1 5 )
其中u \bf u u 是数据点,d i {\bf d}_i d i 是控制点,已知坐标位置u \bf u u 和矫正因子s u s_{\rm u} s u .
在插值的情况下是计算:s i = h ( u i ) , 1 ≤ i ≤ M (16)
s_{i}=h\left(\mathbf{u}_{i}\right), 1 \leq i \leq M \tag{16}
s i = h ( u i ) , 1 ≤ i ≤ M ( 1 6 )
插值需要N = M N=M N = M ,这是TPS要求的,一个当控制点其他的带入进行拟合,这会无法实现高效在线求解。因此代替方法是,使用包含固定数目N = P H × P V N=P^H\times P^V N = P H × P V 控制点的网格。argmin c , v ∑ i M ∥ h ( u i ) − s i ∥ 2 (17)
\underset{\mathbf{c}, \mathbf{v}}{\operatorname{argmin}} \sum_{i}^{M}\left\|h\left(\mathbf{u}_{i}\right)-s_{i}\right\|^{2} \tag{17}
c , v a r g m i n i ∑ M ∥ h ( u i ) − s i ∥ 2 ( 1 7 )
每个控制点,RBF固定,选择P H , P V ∈ { 3 , 4 , 5 , 6 , 7 } P^H,P^V \in \{3,4,5,6,7 \} P H , P V ∈ { 3 , 4 , 5 , 6 , 7 } ,并且需要满足:∑ i N c i = 0 , ∑ i N c i ⋅ d i , x = 0 , ∑ i N c i ⋅ d i , y = 0 (18)
\sum_{i}^{N} c_{i}=0, \sum_{i}^{N} c_{i} \cdot d_{i, x}=0, \sum_{i}^{N} c_{i} \cdot d_{i, y}=0 \tag{18}
i ∑ N c i = 0 , i ∑ N c i ⋅ d i , x = 0 , i ∑ N c i ⋅ d i , y = 0 ( 1 8 )
在渐晕矫正中,使用的是下面的公式:p ( r ) = 1 + ∑ i = 1 3 v i ⋅ r 2 i (19)
p(r)=1+\sum_{i=1}^{3} v_{i} \cdot r^{2 i} \tag{19}
p ( r ) = 1 + i = 1 ∑ 3 v i ⋅ r 2 i ( 1 9 )
h ( u ) = p ( 2 ∥ u − d m ∥ ) + ∑ i = 1 N c i ⋅ ϕ ( ∥ u − d i ∥ ) (20)
h(\mathbf{u})=p\left(\sqrt{2}\left\|\mathbf{u}-\mathbf{d}_{m}\right\|\right)+\sum_{i=1}^{N} c_{i} \cdot \phi\left(\left\|\mathbf{u}-\mathbf{d}_{i}\right\|\right) \tag{20}
h ( u ) = p ( 2 ∥ u − d m ∥ ) + i = 1 ∑ N c i ⋅ ϕ ( ∥ u − d i ∥ ) ( 2 0 )
这里没太看懂,是怎样计算的插值,应该是TPS插值不懂
目前的理解是使用已知点,利用公式(17)(19)(20)来计算它的参数。
NOTE:为了减小计算量,原本应该每个已知点轮流作为控制点,这里控制点选择是均匀分布在图像的网格中。
相机CRF
使用一维的薄板样条,控制点均匀分布在0和1之间,取5~20个点,是GCCM(Generalized Gamma Curve Model),要增加约束强迫f ( 0 ) = 0 , f ( 1 ) = 1 f(0)=0,f(1)=1 f ( 0 ) = 0 , f ( 1 ) = 1 p f ( x ) = ∑ i = 0 n v i ⋅ x i (21)
p_{f}(x)=\sum_{i=0}^{n} v_{i} \cdot x^{i} \tag{21}
p f ( x ) = i = 0 ∑ n v i ⋅ x i ( 2 1 )
f G G C M ( L ) = L p f ( L ) (22)
f_{G G C M}(L)=L^{p_{f}(L)} \tag{22}
f G G C M ( L ) = L p f ( L ) ( 2 2 )
g G G C M ( I ) = I 1 / p f ( I ) (23)
g_{G G C M}(I)=I^{1 / p_{f}(I)} \tag{23}
g G G C M ( I ) = I 1 / p f ( I ) ( 2 3 )
使用公式(21)代替公式(15)是G G C M + T P S GGCM+TPS G G C M + T P S ,使用公式(22)代替公式(15)是G G C M T P S GGCM^{TPS} G G C M T P S
值得注意的是,公式(22)和公式(23)并不是真正意义上的逆,是分别对两个函数进行估计。
图像矫正
使用公式(17)求解,使用公式(20)插值估计。矫正图像公式为:I c , u = f − 1 ( I u ) / [ V ( u ) ⋅ k ] (24)
I_{c, \mathbf{u}}=f^{-1}\left(I_{\mathbf{u}}\right) /[V(\mathbf{u}) \cdot k] \tag{24}
I c , u = f − 1 ( I u ) / [ V ( u ) ⋅ k ] ( 2 4 )
关键帧光度标定
和上一篇相似,不同的是联合优化了所有的参数,公式如下:argmin c , v , k , L p ∑ i , j , o = 1 N , M , O ρ h ( ∥ w j [ I u j − f ( k i V ( u j ) L p o ) ] ∥ 2 ) (25)
\underset{\mathbf{c}, \mathbf{v}, \mathbf{k}, \mathbf{L}_{\mathbf{p}}}{\operatorname{argmin}} \sum_{i, j, o=1}^{N, M, O} \rho_{h}\left(\left\|w_{j}\left[I_{\mathbf{u}_{j}}-f\left(k_{i} V\left(\mathbf{u}_{j}\right) L_{\mathbf{p}_{o}}\right)\right]\right\|^{2}\right) \tag{25}
c , v , k , L p a r g m i n i , j , o = 1 ∑ N , M , O ρ h ( ∥ ∥ w j [ I u j − f ( k i V ( u j ) L p o ) ] ∥ ∥ 2 ) ( 2 5 )
其中N N N 是关键帧数目,M M M 是观测数,O O O 是地图点数目
Huber函数的α = 0.2 / 255 \alpha = 0.2/255 α = 0 . 2 / 2 5 5 ,同样使用公式(9)来降低高梯度权重。使用5 × 5 5\times 5 5 × 5 的patch,255和0的像素直接丢弃。
单帧的曝光时间估计使用已经估计地图点的辐照(radiance)值:argmin k ∑ i = 1 N ρ h ( ∥ w i ⋅ [ f − 1 ( I u i ) V ( u i ) − k ⋅ L p i ] ∥ 2 ) (26)
\underset{k}{\operatorname{argmin}} \sum_{i=1}^{N} \rho_{h}\left(\left\|w_{i} \cdot\left[\frac{f^{-1}\left(I_{\mathbf{u}_{i}}\right)}{V\left(\mathbf{u}_{i}\right)}-k \cdot L_{\mathbf{p}_{i}}\right]\right\|^{2}\right)\tag{26}
k a r g m i n i = 1 ∑ N ρ h ( ∥ ∥ ∥ ∥ w i ⋅ [ V ( u i ) f − 1 ( I u i ) − k ⋅ L p i ] ∥ ∥ ∥ ∥ 2 ) ( 2 6 )
整体过程:
每一帧会根据当前跟踪的点,和当前的光度参数,来计算曝光时间;
关键帧创建时,会refine跟踪地图点和新创建地图点 的辐照度(radiance)估计,以及帧的曝光时间。
一定数目关键帧后,会进行global对所有的光度参数进行优化。
稀疏分布的特征使用样条插值来计算,用于后面的跟踪。
光照变化的应对
本文3 主要针对外部光照变化导致的鲁棒性,与上面两篇不同。
代价函数
W ( x , d , M ) = π I 1 ( M ⋅ π I 2 − 1 ( x , d ) ) (27)
W(\mathbf{x}, d, \mathbf{M})=\pi_{I_{1}}\left(\mathbf{M} \cdot \pi_{I_{2}}^{-1}(\mathbf{x}, d)\right) \tag{27}
W ( x , d , M ) = π I 1 ( M ⋅ π I 2 − 1 ( x , d ) ) ( 2 7 )
C ( M ) = 1 ∣ Ω D ∣ ∑ x ∈ Ω D ρ ( I ( x M ) − T ( x ) ) (28)
C(\mathbf{M})=\frac{1}{\left|\Omega_{D}\right|} \sum_{\mathbf{x} \in \Omega_{D}} \rho\left(I\left(\mathbf{x}_{\mathbf{M}}\right)-T(\mathbf{x})\right) \tag{28}
C ( M ) = ∣ Ω D ∣ 1 x ∈ Ω D ∑ ρ ( I ( x M ) − T ( x ) ) ( 2 8 )
这里x M : = W ( x , D ( x ) , M ) \mathbf{x}_{\mathbf{M}} :=W(\mathbf{x}, D(\mathbf{x}), \mathbf{M}) x M : = W ( x , D ( x ) , M )
使用了鲁棒核函数来过滤外点:ρ k ( r ) = { r 2 2 , if ∣ r ∣ ≤ k k ( ∣ r ∣ − k 2 ) , otherwise (29)
\rho_{k}(r)=\left\{\begin{array}{ll}{\frac{r^{2}}{2},} & {\text { if }|r| \leq k} \\ {k\left(|r|-\frac{k}{2}\right),} & {\text { otherwise }}\end{array}\right. \tag{29}
ρ k ( r ) = { 2 r 2 , k ( ∣ r ∣ − 2 k ) , if ∣ r ∣ ≤ k otherwise ( 2 9 )
使用逆向组合来计算C ( Δ M ) = 1 ∣ Ω D ∣ ∑ x ∈ Ω D ρ ( I ( x M ) − T ( x Δ M ) ) (30)
C(\Delta \mathrm{M})=\frac{1}{\left|\Omega_{D}\right|} \sum_{\mathrm{x} \in \Omega_{D}} \rho\left(I\left(\mathrm{x}_{\mathrm{M}}\right)-T\left(\mathrm{x}_{\Delta \mathrm{M}}\right)\right) \tag{30}
C ( Δ M ) = ∣ Ω D ∣ 1 x ∈ Ω D ∑ ρ ( I ( x M ) − T ( x Δ M ) ) ( 3 0 )
描述子
实际就是特征附近取的Patch
第一种如上图中间所示,没有考虑warpC ( Δ M ) = 1 ∣ Ω D ∣ ∑ x ∈ Ω D ρ ( ∥ D I ( x M ) − D T ( x Δ M ) ∥ 2 ) (31)
C(\Delta \mathbf{M})=\frac{1}{\left|\Omega_{D}\right|} \sum_{\mathbf{x} \in \Omega_{D}} \rho\left(\left\|\mathbf{D}_{I}\left(\mathbf{x}_{\mathbf{M}}\right)-\mathbf{D}_{T}\left(\mathbf{x}_{\Delta \mathbf{M}}\right)\right\|_{2}\right) \tag{31}
C ( Δ M ) = ∣ Ω D ∣ 1 x ∈ Ω D ∑ ρ ( ∥ D I ( x M ) − D T ( x Δ M ) ∥ 2 ) ( 3 1 )
这种通常是对应不上的。
第二种上图最右侧的C ( Δ M ) = 1 ∣ Ω D ∣ ∑ x ∈ Ω D ρ ( ∥ d ( I , N ( x ) M ) − d ( T , N ( x ) Δ M ) ∥ 2 ) (32)
C(\Delta \mathbf{M})=\frac{1}{\left|\Omega_{D}\right|} \sum_{\mathbf{x} \in \Omega_{D}} \rho\left( \left\| \mathbf{d}\left(I, N(\mathbf{x})_{\mathbf{M}}\right)- \mathbf{d}\left(T, N(\mathbf{x})_{\Delta \mathbf{M}}\right)\right\|_{2}\right) \tag{32}
C ( Δ M ) = ∣ Ω D ∣ 1 x ∈ Ω D ∑ ρ ( ∥ d ( I , N ( x ) M ) − d ( T , N ( x ) Δ M ) ∥ 2 ) ( 3 2 )
这种计算方法会比较慢,可以使用描述子图像梯度来近似,可以参考4 :∂ ∂ ϵ d ( T , N ( x ) Δ M ) ≈ ∇ D T ∂ ∂ ϵ x Δ M (33)
\frac{\partial}{\partial \epsilon} \mathbf{d}\left(T, N(\mathbf{x})_{\Delta \mathbf{M}}\right) \approx \nabla \mathbf{D}_{T} \frac{\partial}{\partial \epsilon} \mathbf{x}_{\Delta \mathbf{M}} \tag{33}
∂ ϵ ∂ d ( T , N ( x ) Δ M ) ≈ ∇ D T ∂ ϵ ∂ x Δ M ( 3 3 )
光照变化鲁棒方程
上面介绍的是基于光度不变假设的(BCA)
全局模型
A. Global median bias normalization (GMedian)
提前计算一个全局光度偏移β = median x ( I ( x M ) − T ( x Δ M ) ) (34)
\beta=\operatorname{median}_{\mathbf{x}}\left(I\left(\mathbf{x}_{\mathbf{M}}\right)-T\left(\mathbf{x}_{\Delta \mathbf{M}}\right)\right) \tag{34}
β = m e d i a n x ( I ( x M ) − T ( x Δ M ) ) ( 3 4 )
带入到公式(30)中得到:C ( Δ M ) = 1 ∣ Ω D ∣ ∑ x ∈ Ω D ρ ( I ( x M ) − T ( x Δ M ) − β ) (35)
C(\Delta \mathbf{M})=\frac{1}{\left|\Omega_{D}\right|} \sum_{\mathbf{x} \in \Omega_{D}} \rho\left(I\left(\mathbf{x}_{\mathbf{M}}\right)-T\left(\mathbf{x}_{\Delta \mathbf{M}}\right)-\beta\right) \tag{35}
C ( Δ M ) = ∣ Ω D ∣ 1 x ∈ Ω D ∑ ρ ( I ( x M ) − T ( x Δ M ) − β ) ( 3 5 ) B. Global affine model (GAffine)
使用光度仿射变换模型C ( Δ M , δ α , δ β ) = 1 ∣ Ω D ∣ ∑ x ∈ Ω D ρ ( ( 1 + α ) I ( x M ) + β − ( 1 + δ α ) T ( x Δ M ) − δ β ) (36)
C(\Delta \mathbf{M}, \delta \alpha, \delta \beta)=\frac{1}{\left|\Omega_{D}\right|} \sum_{\mathbf{x} \in \Omega_{D}} \rho\left((1+\alpha) I\left(\mathbf{x}_{\mathbf{M}}\right)+\beta- (1+\delta \alpha) T\left(\mathbf{x}_{\Delta \mathbf{M}}\right)-\delta \beta \right) \tag{36}
C ( Δ M , δ α , δ β ) = ∣ Ω D ∣ 1 x ∈ Ω D ∑ ρ ( ( 1 + α ) I ( x M ) + β − ( 1 + δ α ) T ( x Δ M ) − δ β ) ( 3 6 )
仿射参数和位姿一起更新:α : = α − δ α 1 + δ α β : = β − δ β 1 + δ α (37)
\alpha :=\frac{\alpha-\delta \alpha}{1+\delta \alpha} \quad \beta :=\frac{\beta-\delta \beta}{1+\delta \alpha} \tag{37}
α : = 1 + δ α α − δ α β : = 1 + δ α β − δ β ( 3 7 ) C. Zero-mean normalized cross correlation (ZNCC) Z N C C ( Δ M ) = ∑ x ∈ Ω D i x t x ∑ x ∈ Ω D i x 2 ∑ x ∈ Ω D t x 2 (38)
\mathrm{ZNCC}(\Delta \mathbf{M})=\frac{\sum_{\mathbf{x} \in \Omega_{D}} i_{\mathbf{x}} t_{\mathbf{x}}}{\sqrt{\sum_{\mathbf{x} \in \Omega_{D}} i_{\mathbf{x}}^{2}} \sqrt{\sum_{\mathbf{x} \in \Omega_{D}} t_{\mathbf{x}}^{2}}} \tag{38}
Z N C C ( Δ M ) = ∑ x ∈ Ω D i x 2 ∑ x ∈ Ω D t x 2 ∑ x ∈ Ω D i x t x ( 3 8 )
其中i x = ( I ( x M ) − I ‾ ) i_{\mathbf{x}}=\left(I\left(\mathbf{x}_{\mathbf{M}}\right)-\overline{I}\right) i x = ( I ( x M ) − I ) ,t x = ( T ( x Δ M ) − T ‾ ) t_{\mathbf{x}}=\left(T\left(\mathbf{x}_{\Delta M}\right)-\overline{T}\right) t x = ( T ( x Δ M ) − T ) ,I ‾ = 1 ∣ Ω D ∣ ∑ x ∈ Ω D I ( x ) \overline{I}=\frac{1}{\left|\Omega_{D}\right|} \sum_{\mathbf{x} \in \Omega_{D}} I(\mathbf{x}) I = ∣ Ω D ∣ 1 ∑ x ∈ Ω D I ( x ) ,最大化公式(39)即可。
D. Mutual information (MI)
互信息MI ( Δ M ) = ∑ r , t ∈ Ω I p I T ( r , t , Δ M ) log ( p I T ( r , t , Δ M ) p I ( r ) p T ( t , Δ M ) ) (39)
\operatorname{MI}(\Delta \mathbf{M})=\sum_{r, t \in \Omega_{I}} p_{I T}(r, t, \Delta \mathbf{M}) \log \left(\frac{p_{I T}(r, t, \Delta \mathbf{M})}{p_{I}(r) p_{T}(t, \Delta \mathbf{M})}\right) \tag{39}
M I ( Δ M ) = r , t ∈ Ω I ∑ p I T ( r , t , Δ M ) log ( p I ( r ) p T ( t , Δ M ) p I T ( r , t , Δ M ) ) ( 3 9 )
计算直方图,然后计算每个像素值的概率,最大化公式(39)
有需要,具体优化过程看论文中的参考文献。
局部偏差
E. Gradient magnitude (GradM)
使用梯度大小来作为描述子。
使用公式(40)代替公式(32)中的值d ( I , N ( x ) ) = ∥ ∇ ( I , N ( x ) ) ∥ 2 (40)
\mathbf{d}(I, N(\mathbf{x}))=\|\nabla(I, N(\mathbf{x}))\|_{2} \tag{40}
d ( I , N ( x ) ) = ∥ ∇ ( I , N ( x ) ) ∥ 2 ( 4 0 ) F. Gradient (Grad)
直接使用梯度向量来进行匹配d ( I , N ( x ) ) = ∇ ( I , N ( x ) ) (41)
\mathbf{d}(I, N(\mathbf{x}))=\nabla(I, N(\mathbf{x})) \tag{41}
d ( I , N ( x ) ) = ∇ ( I , N ( x ) ) ( 4 1 ) G. Local mean bias normalization (LMean)
减去局部均值d ( I , N ( x ) ) = I ( x ) − 1 ∣ N ( x ) ∣ ∑ y ∈ N ( x ) I ( y ) (42)
d(I, N(\mathbf{x}))=I(\mathbf{x})-\frac{1}{|N(\mathbf{x})|} \sum_{\mathbf{y} \in N(\mathbf{x})} I(\mathbf{y}) \tag{42}
d ( I , N ( x ) ) = I ( x ) − ∣ N ( x ) ∣ 1 y ∈ N ( x ) ∑ I ( y ) ( 4 2 )
类似特征描述子
H. Descriptor fields (DF)
计算描述子d ( I , N ( x ) ) = [ [ ( f 1 ∗ I ) ( x ) ] + , [ ( f 1 ∗ I ) ( x ) ] − , … [ ( f n ∗ I ) ( x ) ] + , [ ( f n ∗ I ) ( x ) ] T (43)
\begin{aligned} \mathbf{d}(I, N(\mathbf{x}))=&\left[\left[\left(\mathbf{f}_{1} * I\right)(\mathbf{x})\right]^{+},\left[\left(\mathbf{f}_{1} * I\right)(\mathbf{x})\right]^{-}, \ldots\right.\left[\left(\mathbf{f}_{n} * I\right)(\mathbf{x})\right]^{+},\left[\left(\mathbf{f}_{n} * I\right)(\mathbf{x})\right]^{T} \end{aligned} \tag{43}
d ( I , N ( x ) ) = [ [ ( f 1 ∗ I ) ( x ) ] + , [ ( f 1 ∗ I ) ( x ) ] − , … [ ( f n ∗ I ) ( x ) ] + , [ ( f n ∗ I ) ( x ) ] T ( 4 3 )
其中f i {\mathbf f}_i f i 表示卷积核,使用标准差为1的高斯核,符号[ ⋅ ] + [ ⋅ ] − [\cdot]^+[\cdot]^- [ ⋅ ] + [ ⋅ ] − 意义如下[ x ] + = { x , if x ≥ 0 0 , otherwise , and [ x ] − = [ − x ] + (44)
[x]^{+}=\left\{\begin{array}{ll}{x,} & {\text { if } x \geq 0} \\ {0,} & {\text { otherwise }}\end{array}\right. \quad, \text { and } \quad[x]^{-}=[-x]^{+} \tag{44}
[ x ] + = { x , 0 , if x ≥ 0 otherwise , and [ x ] − = [ − x ] + ( 4 4 ) I. Census transform (Census)
在双目深度估计中常用,顺序不变的仿射变化都不变。但是精度较低。方法是和周围的像素比较,每次比较就占一位,例如定义如下,大小定义可变d ( I , N ( x ) ) i = { 1 , if I ( x ) < I ( x i ) 0 , otherwise (45)
\mathbf{d}(I, N(\mathbf{x}))_{i}=\left\{\begin{array}{ll}{1,} & {\text { if } I(\mathbf{x})<I\left(\mathbf{x}_{i}\right)} \\ {0,} & {\text { otherwise }}\end{array}\right. \tag{45}
d ( I , N ( x ) ) i = { 1 , 0 , if I ( x ) < I ( x i ) otherwise ( 4 5 )
但是这种方法无法使用基于梯度的优化方法,具体解决办法看论文。
下面是几种方法的对比:
实验结果
实验结果表明,VO数据集中 GradM 方法更好,实际数据集中 Census 效果更好。闭环中SIFT特征效果更好,建议先使用feature进行匹配,然后使用直接法来求精位姿。
Reference
TPS: https://blog.****.net/VictoriaW/article/details/70161180
Bergmann P, Wang R, Cremers D. Online photometric calibration of auto exposure video for realtime visual odometry and SLAM[J]. IEEE Robotics and Automation Letters, 2018, 3(2): 627-634. ↩︎
Quenzel, Jan et al. “Keyframe-Based Photometric Online Calibration and Color Correction.” 2018 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS) (2018): 1-8. ↩︎ ↩︎
Park S , Thomas Schöps, Pollefeys M . Illumination change robustness in direct visual SLAM[C]// 2017 IEEE International Conference on Robotics and Automation (ICRA). IEEE, 2017. ↩︎
E. Antonakos, J. Alabort-i Medina, G. Tzimiropoulos, and S. P.Zafeiriou, “Feature-based Lucas-Kanade and active appearance models,” ITIP, vol. 24, no. 9, pp. 2617–2632, 2015. ↩︎