摄影测量中的计算机视觉之3D homography

快到期末了最简单的概念都没有搞明白
3D homography和Camera matrixP原来不是一个东西
3D homography是从3D点X’转到3D点X的矩阵,是4*4的矩阵,
Camera matrix也就是projection matrix是从3D点X’转到图像点x’的矩阵,是3*4的矩阵.
那么如何得到一个3D homography呢
第一步依旧是conditioning(归一化), 这里主要说一下对于放缩系数s, 可以各同向性缩放到原点的平均距离为 3 \sqrt{3} 3 .也可以按照坐标轴来缩放,每个坐标都缩放到各自到0的平均距离为1.
公式如下:
T = [ 1 s x 0 0 − t x s x 0 1 s y 0 − t y s y 0 0 1 s z − t z s z 0 0 0 1 ] T=\left[\begin{array}{cccc} {\frac{1}{s_{x}}} & {0} & {0} & {\frac{-t_{x}}{s_{x}}} \\ {0} & {\frac{1}{s_{y}}} & {0} & {\frac{-t_{y}}{s_{y}}} \\ {0} & {0} & {\frac{1}{s_{z}}} & {\frac{-t_{z}}{s_{z}}} \\ {0} & {0} & {0} & {1} \end{array}\right] T=sx10000sy10000sz10sxtxsytysztz1
证明如下:
[ U ′ V ′ W ′ T ′ ] = [ − h 1 ⊤ − − h 2 ⊤ − − h 3 ⊤ − − h 4 ⊤ − ] [ ∣ X ∣ ] \left[\begin{array}{c} {U^{\prime}} \\ {V^{\prime}} \\ {W^{\prime}} \\ {T^{\prime}} \end{array}\right]=\left[\begin{array}{l} {-h_{1}^{\top}-} \\ {-h_{2}^{\top}-} \\ {-h_{3}^{\top}-} \\ {-h_{4}^{\top}-} \end{array}\right]\left[\begin{array}{l} {|} \\ {X} \\ {|} \end{array}\right] UVWT=h1h2h3h4X
− h i ⊤ − {-h_{i}^{\top}-} hi代表H的第i行,每行有4个系数;
X = [ U V W T ] ⊤ X=\left[\begin{array}{llll} {U} & {V} & {W} & {T} \end{array}\right]^{\top} X=[UVWT]
U ′ = h 1 T X V ′ = h 2 T X W ′ = h 3 T X T ′ = h 4 T X U^{\prime}=h_{1}^{T} X\\ V^{\prime}=h_{2}^{T} X\\ W^{\prime}=h_{3}^{T} X\\ T^{\prime}=h_{4}^{T} X U=h1TXV=h2TXW=h3TXT=h4TX
用欧几里得分布/齐次分部
U ′ T ′ = h 1 ⊤ X h 4 ⊤ X V ′ T ′ = h 2 ⊤ X h 4 T X W ′ T ′ = h 3 ⊤ X h 4 T X \begin{aligned} &\frac{U^{\prime}}{T^{\prime}}=\frac{h_{1}^{\top} X}{h_{4}^{\top} X}\\ &\frac{V^{\prime}}{T^{\prime}}=\frac{h_{2}^{\top} X}{h_{4}^{T} X}\\ &\frac{W^{\prime}}{T^{\prime}}=\frac{h_{3}^{\top} X}{h_{4}^{T} X} \end{aligned} TU=h4Xh1XTV=h4TXh2XTW=h4TXh3X
化为线性
U ′ ⋅ h 4 ⊤ X − T ′ h 1 ⊤ X = 0 V ′ ⋅ h 4 ⊤ X − T ′ h 2 ⊤ X = 0 W ′ ⋅ h 4 ⊤ X − T ′ h 3 ⊤ X = 0 \begin{array}{l} {U^{\prime} \cdot h_{4}^{\top} X-T^{\prime} h_{1}^{\top} X=0}\\ {V^{\prime} \cdot h_{4}^{\top} X-T^{\prime} h_{2}^{\top} X=0} \\ {W^{\prime} \cdot h_{4}^{\top} X-T^{\prime} h_{3}^{\top} X=0} \end{array} Uh4XTh1X=0Vh4XTh2X=0Wh4XTh3X=0

化为矩阵形式
[ − T ′ X ⊤ 0 0 U ′ X ⊤ 0 − T ′ X ⊤ 0 V ′ X ⊤ 0 0 − T ′ X ⊤ W ’ X ⊤ ] [ h 1 h 2 h 3 h 4 ] \left[\begin{array}{cccc} {-T^{\prime} X^{\top}} & \pmb{0} & \pmb{0} & {U^{\prime} X^{\top}} \\ \pmb{0} & {-T^{\prime} X^{\top}} & \pmb{0} & {V^{\prime} X^{\top}} \\ \pmb{0} & \pmb{0} & {-T^{\prime} X^{\top}} & W’{X^{\top}} \end{array}\right]\left[\begin{array}{l} {h_{1}} \\ {h_{2}} \\ {h_{3}} \\ {h_{4}} \end{array}\right] TX000000000TX000000000TXUXVXWXh1h2h3h4
注意,这里的 0 = [ 0 0 0 0 ] \pmb{0} =\left[\begin{array}{llll} {0} & {0} & {0} & {0} \end{array}\right] 000=[0000]

然后用SVD解 A h = 0 \mathbf{A h}=\mathbf{0} Ah=0
最后把 h = ( h 1 , … , h 16 ) T \mathbf{h}=\left(h_{1}, \dots, h_{16}\right)^{T} h=(h1,,h16)T变成4*4的 H ~ \tilde{\mathbf{H}} H~,为什么上面加一个波浪线呢,因为这个 H ~ \tilde{\mathbf{H}} H~是用归一化后的点 X ~ \tilde{\mathbf{X}} X~ X ′ ~ \tilde{\mathbf{X'}} X~算出来的.
所以最后一步,解除归一化,得到H.
H = T − 1 H ~ T \mathbf{H}=\mathbf{T}^{-1} \tilde{\mathbf{H}} \mathbf{T} H=T1H~T

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值