PatchMatchNet单应变换公式推导

Camera file cam.txt stores the camera parameters, which includes extrinsic, intrinsic, minimum depth and maximum depth:

extrinsic
E00 E01 E02 E03
E10 E11 E12 E13
E20 E21 E22 E23
E30 E31 E32 E33

intrinsic
K00 K01 K02
K10 K11 K12
K20 K21 K22

DEPTH_MIN DEPTH_MAX 

e x t r i n s i c = T = [ R t 0 T 1 ] i n t r i n s i c = K = [ f x 0 c x 0 f y c y 0 0 1 ] extrinsic = \boldsymbol{T} = \begin{bmatrix} \boldsymbol{R} &\boldsymbol{t} \\ \boldsymbol{0}^T & 1 \end{bmatrix} \\ intrinsic = \boldsymbol{K} = \begin{bmatrix} f_x & 0 & c_x \\ 0 & f_y & c_y \\ 0 & 0 & 1 \end{bmatrix} extrinsic=T=[R0Tt1]intrinsic=K=fx000fy0cxcy1

d p = d [ u v 1 ] = K ( R P w + t ) = ( K R P w + K t ) = [ K R K t ] [ P w 1 ] d\boldsymbol{p} = d\begin{bmatrix} u\\ v\\ 1 \end{bmatrix} =\boldsymbol{K}(\boldsymbol{RP}_w + \boldsymbol{t}) = (\boldsymbol{KRP}_w + \boldsymbol{Kt}) = \begin{bmatrix} \boldsymbol{KR} & \boldsymbol{Kt}\\ \end{bmatrix} \begin{bmatrix} \boldsymbol{P}_w \\ 1 \end{bmatrix} dp=duv1=K(RPw+t)=(KRPw+Kt)=[KRKt][Pw1]
P w = R − 1 ( K − 1 p d − t ) \boldsymbol{P}_w = \boldsymbol{R}^{-1}(\boldsymbol{K}^{-1}\boldsymbol{p}d - \boldsymbol{t}) Pw=R1(K1pdt)
P w \boldsymbol{P}_w Pw为世界坐标系下的坐标。

考虑参考图中的某个像素 p \boldsymbol{p} p,以及其深度 d j d_j dj,计算这个点在源图 i i i中的坐标:
p i , j = p i ( d j ) = K i ( R i P w + t i ) = K i ( R i R 0 − 1 ( K 0 − 1 p d j − t 0 ) + t i ) = K i R i R 0 − 1 K 0 − 1 p d j − K i R i R 0 − 1 t 0 + K i t i = R ^ p d j + t ^ \begin{aligned} \boldsymbol{p}_{i,j} & = \boldsymbol{p}_i(d_j) \\ & = \boldsymbol{K}_i(\boldsymbol{R}_i \boldsymbol{P}_w+\boldsymbol{t}_i) \\ & = \boldsymbol{K}_i(\boldsymbol{R}_i \boldsymbol{R}_0^{-1}(\boldsymbol{K}_0^{-1}\boldsymbol{p}d_j - \boldsymbol{t}_0) + \boldsymbol{t}_i) \\ & = \boldsymbol{K}_i \boldsymbol{R}_i \boldsymbol{R}_0^{-1}\boldsymbol{K}_0^{-1}\boldsymbol{p}d_j - \boldsymbol{K}_i \boldsymbol{R}_i \boldsymbol{R}_0^{-1}\boldsymbol{t}_0 + \boldsymbol{K}_i \boldsymbol{t}_i \\ & = \hat{\boldsymbol{R}}\boldsymbol{p}d_j + \hat{\boldsymbol{t}} \end{aligned} pi,j=pi(dj)=Ki(RiPw+ti)=Ki(RiR01(K01pdjt0)+ti)=KiRiR01K01pdjKiRiR01t0+Kiti=R^pdj+t^

proj_mat = extrinsics.copy()
proj_mat[:3, :4] = np.matmul(intrinsics, proj_mat[:3, :4])

有下式:
p r o j _ m a t = [ K R K t 0 T 1 ] \boldsymbol{proj\_mat} = \begin{bmatrix} \boldsymbol{KR} & \boldsymbol{Kt} \\ \boldsymbol{0}^T & 1 \end{bmatrix} proj_mat=[KR0TKt1]
p r o j _ m a t − 1 = [ R − 1 K − 1 − R − 1 t 0 T 1 ] \boldsymbol{proj\_mat}^{-1} = \begin{bmatrix} \boldsymbol{R}^{-1}\boldsymbol{K}^{-1} & -\boldsymbol{R}^{-1}\boldsymbol{t} \\ \boldsymbol{0}^T & 1 \end{bmatrix} proj_mat1=[R1K10TR1t1]

proj = torch.matmul(src_proj, torch.inverse(ref_proj))
rot = proj[:, :3, :3]  # [B,3,3]
trans = proj[:, :3, 3:4]  # [B,3,1]

p r o j = p r o j _ m a t i × p r o j _ m a t 0 − 1 = [ K i R i K i t i 0 T 1 ] [ R 0 − 1 K 0 − 1 − R 0 − 1 t 0 0 T 1 ] = [ K i R i R 0 − 1 K 0 − 1 − K i R i R 0 − 1 t 0 + K i t i 0 T 1 ] = [ R ^ t ^ 0 T 1 ] = [ r o t t r a n s 0 T 1 ] \begin{aligned} \boldsymbol{proj} & = \boldsymbol{proj\_mat}_i \times \boldsymbol{proj\_mat}_0^{-1} \\ & = \begin{bmatrix} \boldsymbol{K}_i \boldsymbol{R}_i & \boldsymbol{K}_i \boldsymbol{t}_i \\ \boldsymbol{0}^T & 1 \end{bmatrix} \begin{bmatrix} \boldsymbol{R}_0^{-1}\boldsymbol{K}_0^{-1} & -\boldsymbol{R}_0^{-1}\boldsymbol{t}_0 \\ \boldsymbol{0}^T & 1 \end{bmatrix} \\ & = \begin{bmatrix} \boldsymbol{K}_i \boldsymbol{R}_i \boldsymbol{R}_0^{-1}\boldsymbol{K}_0^{-1} & -\boldsymbol{K}_i \boldsymbol{R}_i \boldsymbol{R}_0^{-1}\boldsymbol{t}_0 + \boldsymbol{K}_i \boldsymbol{t}_i \\ \boldsymbol{0}^T & 1 \end{bmatrix} \\ & = \begin{bmatrix} \hat{\boldsymbol{R}} & \hat{\boldsymbol{t}} \\ \boldsymbol{0}^T & 1 \end{bmatrix} \\ & = \begin{bmatrix} \boldsymbol{rot} & \boldsymbol{trans} \\ \boldsymbol{0}^T & 1 \end{bmatrix} \\ \end{aligned} proj=proj_mati×proj_mat01=[KiRi0TKiti1][R01K010TR01t01]=[KiRiR01K010TKiRiR01t0+Kiti1]=[R^0Tt^1]=[rot0Ttrans1]

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值