【后方交会】单目影像的空间后方交会Space resection

单目影像的空间后方交会Space resection

1.原理

空间交会的目的主要是确定外方位元素。主要类型有两类,一种是已知内方位元素,另外一种是未知内方位元素。但主要原理都大同小异,利用共线方程和最小二乘平差对内外方位元素参数进行解算,这一过程中需要用到一定数量的控制点,以及外方位元素的近似值。
主要的原理就是相机投影中心、相片上点和地物点的共线方程。
x ′ = x 0 ′ + z ′ r 11 ⋅ ( X − X 0 ) + r 12 ⋅ ( Y − Y 0 ) + r 31 ⋅ ( Z − Z 0 ) r 13 ⋅ ( X − X 0 ) + r 22 ⋅ ( Y − Y 0 ) + r 33 ⋅ ( Z − Z 0 ) + △ x ′ y ′ = y 0 ′ + z ′ r 12 ⋅ ( X − X 0 ) + r 22 ⋅ ( Y − Y 0 ) + r 32 ⋅ ( Z − Z 0 ) r 13 ⋅ ( X − X 0 ) + r 22 ⋅ ( Y − Y 0 ) + r 33 ⋅ ( Z − Z 0 ) + △ y ′ x' = x_0'+z'\frac{r_{11}·(X-X_0)+r_{12}·(Y-Y_0)+r_{31}·(Z-Z_0)}{r_{13}·(X-X_0)+r_{22}·(Y-Y_0)+r_{33}·(Z-Z_0)}+\triangle x' \\ y' = y_0'+z'\frac{r_{12}·(X-X_0)+r_{22}·(Y-Y_0)+r_{32}·(Z-Z_0)}{r_{13}·(X-X_0)+r_{22}·(Y-Y_0)+r_{33}·(Z-Z_0)}+\triangle y' x=x0+zr13(XX0)+r22(YY0)+r33(ZZ0)r11(XX0)+r12(YY0)+r31(ZZ0)+xy=y0+zr13(XX0)+r22(YY0)+r33(ZZ0)r12(XX0)+r22(YY0)+r32(ZZ0)+y
( X , Y , Z ) (X,Y,Z) (X,Y,Z)为地物坐标系下的坐标, ( x ′ , y ′ ) (x',y') (x,y)对应图片坐标系下的像素坐标, z ′ z' z等于相机焦距的相反数, △ x ′ , △ y ′ \triangle x',\triangle y' x,y表示影像的畸变程度, x 0 ′ , y 0 ′ x_0',y_0' x0,y0表示主点的影像坐标(也即投影中心在影像上的坐标)。

2.已知内方位元素的空间交会

由于有6个外方位元素 X 0 , Y 0 , Z 0 , ω , φ , κ X_0,Y_0,Z_0,\omega,\varphi,\kappa X0,Y0,Z0,ω,φ,κ。所以至少需要3个已知的地面控制点。

通过对上方的共线方程进行线性化,可以获得参数待定的最小二乘形式,从而利用间接平差的方法待定系数。
v x i ′ = ( ∂ x ′ ∂ X 0 ) 0 d X 0 + ( ∂ x ′ ∂ Y 0 ) 0 d Y 0 + ( ∂ x ′ ∂ Z 0 ) 0 d Z 0 + ( ∂ x ′ ∂ ω ) 0 d ω + ( ∂ x ′ ∂ φ ) 0 d φ + ( ∂ x ′ ∂ κ ) 0 d κ + ( x i ′ − x i ′ 0 ) v y i ′ = ( ∂ y ′ ∂ X 0 ) 0 d X 0 + ( ∂ y ′ ∂ Y 0 ) 0 d Y 0 + ( ∂ y ′ ∂ Z 0 ) 0 d Z 0 + ( ∂ y ′ ∂ ω ) 0 d ω + ( ∂ y ′ ∂ φ ) 0 d φ + ( ∂ y ′ ∂ κ ) 0 d κ + ( y i ′ − y i ′ 0 ) vx_i'=(\frac{\partial x'}{\partial X_0})^0dX_0+(\frac{\partial x'}{\partial Y_0})^0dY_0+(\frac{\partial x'}{\partial Z_0})^0dZ_0+(\frac{\partial x'}{\partial \omega})^0d\omega+(\frac{\partial x'}{\partial \varphi})^0d\varphi+(\frac{\partial x'}{\partial \kappa})^0d\kappa+(x_i'-x_i^{'0})\\ vy_i'=(\frac{\partial y'}{\partial X_0})^0dX_0+(\frac{\partial y'}{\partial Y_0})^0dY_0+(\frac{\partial y'}{\partial Z_0})^0dZ_0+(\frac{\partial y'}{\partial \omega})^0d\omega+(\frac{\partial y'}{\partial \varphi})^0d\varphi+(\frac{\partial y'}{\partial \kappa})^0d\kappa+(y_i'-y_i^{'0}) vxi=(X0x)0dX0+(Y0x)0dY0+(Z0x)0dZ0+(ωx)0dω+(φx)0dφ+(κx)0dκ+(xixi0)vyi=(X0y)0dX0+(Y0y)0dY0+(Z0y)0dZ0+(ωy)0dω+(φy)0dφ+(κy)0dκ+(yiyi0)
其中:
令 N = r 13 ⋅ ( X − X 0 ) + r 22 ⋅ ( Y − Y 0 ) + r 33 ⋅ ( Z − Z 0 ) K x = r 11 ⋅ ( X − X 0 ) + r 12 ⋅ ( Y − Y 0 ) + r 31 ⋅ ( Z − Z 0 ) K y = r 12 ⋅ ( X − X 0 ) + r 22 ⋅ ( Y − Y 0 ) + r 32 ⋅ ( Z − Z 0 ) 令N=r_{13}·(X-X_0)+r_{22}·(Y-Y_0)+r_{33}·(Z-Z_0) \\ K_x=r_{11}·(X-X_0)+r_{12}·(Y-Y_0)+r_{31}·(Z-Z_0)\\ K_y=r_{12}·(X-X_0)+r_{22}·(Y-Y_0)+r_{32}·(Z-Z_0) N=r13(XX0)+r22(YY0)+r33(ZZ0)Kx=r11(XX0)+r12(YY0)+r31(ZZ0)Ky=r12(XX0)+r22(YY0)+r32(ZZ0)
则各个参数的系数为:
∂ x ′ ∂ X 0 = z ′ N 2 ⋅ ( r 13 K X − r 11 N ) ∂ x ′ ∂ Y 0 = z ′ N 2 ⋅ ( r 23 K X − r 21 N ) ∂ x ′ ∂ Z 0 = z ′ N 2 ⋅ ( r 33 K X − r 31 N ) ∂ x ′ ∂ ω = z ′ N ⋅ ( K X N [ r 33 ( Y − Y 0 ) − r 23 ( Z − Z 0 ) ] − r 31 ( Y − Y 0 ) + r 21 ( Z − Z 0 ) ) ∂ x ′ ∂ φ = z ′ N ⋅ ( K X N [ K Y ⋅ s i n κ − K X ⋅ c o s κ ] − N ⋅ c o s κ ) ∂ x ′ ∂ κ = z ′ N ⋅ K Y \frac{\partial x'}{\partial X_0}=\frac{z'}{N^2}·(r_{13}K_X-r_{11}N) \\ \frac{\partial x'}{\partial Y_0}=\frac{z'}{N^2}·(r_{23}K_X-r_{21}N) \\ \frac{\partial x'}{\partial Z_0}=\frac{z'}{N^2}·(r_{33}K_X-r_{31}N) \\ \frac{\partial x'}{\partial \omega}=\frac{z'}{N}·(\frac{K_X}{N}[r_{33}(Y-Y_0)-r_{23}(Z-Z_0)]-r_{31}(Y-Y_0)+r_{21}(Z-Z_0))\\ \frac{\partial x'}{\partial \varphi}=\frac{z'}{N}·(\frac{K_X}{N}[K_Y·sin\kappa-K_X·cos\kappa]-N·cos\kappa)\\ \frac{\partial x'}{\partial \kappa}=\frac{z'}{N}·K_Y X0x=N2z(r13KXr11N)Y0x=N2z(r23KXr21N)Z0x=N2z(r33KXr31N)ωx=Nz(NKX[r33(YY0)r23(ZZ0)]r31(YY0)+r21(ZZ0))φx=Nz(NKX[KYsinκKXcosκ]Ncosκ)κx=NzKY

∂ y ′ ∂ X 0 = z ′ N 2 ⋅ ( r 13 K Y − r 12 N ) ∂ y ′ ∂ Y 0 = z ′ N 2 ⋅ ( r 23 K Y − r 22 N ) ∂ y ′ ∂ Z 0 = z ′ N 2 ⋅ ( r 33 K Y − r 32 N ) ∂ y ′ ∂ ω = z ′ N ⋅ ( K Y N [ r 33 ( Y − Y 0 ) − r 23 ( Z − Z 0 ) ] − r 32 ( Y − Y 0 ) + r 22 ( Z − Z 0 ) ) ∂ y ′ ∂ φ = z ′ N ⋅ ( K Y N [ K Y ⋅ s i n κ − K X ⋅ c o s κ ] + N ⋅ s i n κ ) ∂ y ′ ∂ κ = − z ′ N ⋅ K X \frac{\partial y'}{\partial X_0}=\frac{z'}{N^2}·(r_{13}K_Y-r_{12}N) \\ \frac{\partial y'}{\partial Y_0}=\frac{z'}{N^2}·(r_{23}K_Y-r_{22}N) \\ \frac{\partial y'}{\partial Z_0}=\frac{z'}{N^2}·(r_{33}K_Y-r_{32}N) \\ \frac{\partial y'}{\partial \omega}=\frac{z'}{N}·(\frac{K_Y}{N}[r_{33}(Y-Y_0)-r_{23}(Z-Z_0)]-r_{32}(Y-Y_0)+r_{22}(Z-Z_0))\\ \frac{\partial y'}{\partial \varphi}=\frac{z'}{N}·(\frac{K_Y}{N}[K_Y·sin\kappa-K_X·cos\kappa]+N·sin\kappa)\\ \frac{\partial y'}{\partial \kappa}=-\frac{z'}{N}·K_X X0y=N2z(r13KYr12N)Y0y=N2z(r23KYr22N)Z0y=N2z(r33KYr32N)ωy=Nz(NKY[r33(YY0)r23(ZZ0)]r32(YY0)+r22(ZZ0))φy=Nz(NKY[KYsinκKXcosκ]+Nsinκ)κy=NzKX

3.参数近似值的确定

可以通过GPS和INS方式确定参数近似值;可以通过拍照相机的姿态(如果相机相片几乎平行于地物系,则旋转角可以被认为都为0)和相机的放大倍数及参考点坐标( X 0 , Y 0 X_0,Y_0 X0,Y0通过重心确定, Z − Z 0 Z-Z_0 ZZ0通过主句和相机放大倍数确定);通常的方法,普适的方式就是通过几何条件进行计算参数近似值。

之所以需要参数的近似值,是共线方程模型是非线性化模型,最小二乘在计算过程中如果参数没有近似值,就可能会无法收敛。所以参数近似值是必要。

计算参数近似值的过程是通过获取相机坐标系下地物点的坐标,再与地物系下地物点的坐标进行7参数转换获得的。而地物点的坐标是通过四面体交会的方式通过迭代获取的。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UVASM6ny-1674290633987)(C:\Users\Mount Song\AppData\Roaming\Typora\typora-user-image

根据已知数据的情况,其中上图 s 13 , s 23 , s 12 s_{13},s_{23},s_{12} s13,s23,s12是已知的,因为地物点坐标已知;又内方位元素已知,所以 P 1 ′ , P 2 ′ , P 3 ′ , 0 ′ P_1',P_2',P_3',0' P1,P2,P3,0坐标是已知的,其中 O ′ O' O坐标为(0,0,0), P P P对应的z轴坐标为 − c -c c(即焦距的相反数)。进而可以计算出夹角 α , β , γ \alpha,\beta,\gamma α,β,γ,进而目的是为了确定 d 1 , d 2 , d 3 d_1,d_2,d_3 d1,d2,d3。根据四面体下底面三条边和上顶角三个角的确定情况,可以确定几组备选方案,从中获取到的几组数据用来通过筛选就可以得到最终的结果,或者逐一进行平差看哪组可以使结果收敛,就选择哪一组。在这里插入图片描述

s 13 , s 23 , s 12 s_{13},s_{23},s_{12} s13,s23,s12是已知的,夹角 α , β , γ \alpha,\beta,\gamma α,β,γ是已知的,所以可以首先假定 d 1 d_1 d1是一个很小的值,通过正弦定理

d 2 = s i n ∠ α ∗ d 1 s i n ∠ O ′ P 2 ′ P 1 ′ d_2=sin∠\alpha*\frac{d_1}{sin∠O'P_2'P_1'} d2=sinαsinOP2P1d1

再不断向后面的三角形推过去,就可以最终推回到 d 1 d_1 d1,判断与初始情况的 d 1 d_1 d1相差多大,如果相差非常小的情况下,则可以认为蓝色的三个三角可以交会到相机投影中心。然后不断扩大 d 1 d_1 d1,不断找下去。

已知了 d 1 , d 2 , d 3 d_1,d_2,d_3 d1,d2,d3就可以利用 O ′ P i ′ O'P_i' OPi O ′ P i O'P_i OPi之间的距离比值获得到相机 坐标系下地物点的坐标:
d = x ′ 2 + y ′ 2 + z ′ 2 x i = d i d i ′ ⋅ x i ′ y i = d i d i ′ ⋅ y i ′ z i = d i d i ′ ⋅ z i ′ d=\sqrt{x^{'2}+y^{'2}+z^{'2}}\\ x_i=\frac{d_i}{d_i'}·x_i'\\ y_i=\frac{d_i}{d_i'}·y_i'\\ z_i=\frac{d_i}{d_i'}·z_i' d=x2+y2+z2 xi=didixiyi=didiyizi=didizi
然后就可以利用7参数转换,获取相机坐标系下和地物坐标系下地物点的坐标转换关系,也即共线方程中参数的近似值了。同样需要注意7参数转换与外方位元素之间的区别,弄清楚到底是哪个坐标系向哪个坐标系转换!

在计算近似值的过程中, O ′ O' O透视中心和 R R R旋转矩阵可能不唯一,就要用第四个点进行检验,通过将地物系下图像点 ( X , Y , Z ) (X,Y,Z) (X,Y,Z)利用坐标转换转化到相片上,然后与相片上的点 ( x , y ) (x,y) (x,y)进行比较,如果相近则是较优的近似值。

检验,通过将地物系下图像点 ( X , Y , Z ) (X,Y,Z) (X,Y,Z)利用坐标转换转化到相片上,然后与相片上的点 ( x , y ) (x,y) (x,y)进行比较,如果相近则是较优的近似值。

4.代码实现

单目影像的空间后方交会代码

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
摘要:VC/C++源码,图形处理,单像空间,后方交会   VC++空间后方交会的3种实现形式,单像空间后方交会解算航空相片外方位元素,项目源码由武汉大学.遥感信息工程学院.卢昊编写。   几个主要函数:   函数功能:初始化坐标数据   参数说明:   sd:保存原始数据的结构体数组,PhotographicScale:摄影比例尺,focus:摄影机主距   filename:保存坐标数据的文件名   本程序的两种拓展形式:   1、将空间后方交会计算封装成类   为了实现空间后交计算的移植性,这里我将该过程封装成一个类CResection,并定义了相应的接口。该类接受原始数据的接口为带参构造函数,其原型为:   CResection ();   输出接口为两个类成员函数:   OutputResult ();//该成员适用于windows console application 程序调用时调用iostream库输出结果。   SaveResult ();//该成员适用于任何情况下将计算结果保存为文件,用户指定文件路径与文件名。   以上三个函数类型声明为public以满足从外部环境声明类对象调用的需要。另包含3个私有成员函数Iterator (), CheckPrecision(), InitData() 进行内部计算,编码与运行时对用户不可见。      2、将该功能封装成动态链接库   封装成动态链接库,只要将类CResection稍加修改即可,对于代码能实现可靠的隐蔽性。   调用该动态链接库,只需在工程设置中link标签页下添加CResection.lib,并在需要调用该库的文件中包含CResection.h,而后即可声明该类对象进行空间后交计算。   详细请参看工程CResection_dll代码。    来源:乐乐源码(www.lelecode.com)

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

狮子的心脏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值