单向后方交会实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
班级:测绘一班 学号:20133279
日期:2015426
Southw^ JIaotong UnjiverSity
、计算原理.
二、算法流程.
三、源程序.
四、计算结果.
五、结果分析.
六、心得体会. 目
录
13
13
13
、计算原理
已知条件
摄影机主距f=153.24mm, xO=O, yO=O,像片比例尺为1:40000,有四对点的像点坐标与相应的地面坐标如下表。
二、算法流程
(1)获取已知数据。从航摄资料中差取平均航高与摄影机主距;获取控制点的地面测量坐标并转换为地面摄影坐标。
(2)量测控制点的像点坐标并作系统误差改正。
(3)确定未知数的初始值。在竖直摄影且地面控制点大体对称分布的情况下,按如下方法确定初始值,即
x S 上,Y s0
n
丄Z0
n,Z s mf
(4)用三个角元素的初始值按下式,计算各个方向余弦值,组成旋转矩阵R
31 cos cos sin sin sin
a
2
cos sin sin sin cos
33 sin cos
b1 cos sin
b2 cos cos
b3 sin
C1 sin cos cos sin sin
'c sin sin cos si
n cos
C3 cos cos
(5)逐点计算像点坐标的近似值。禾I」用未知数的近似值和控制点的地面坐
标; 带入共线方程式,逐点近似像点坐标的近似值((6)
(7) X)、(y)。
逐点计算误差方程式的系数和常数项,组成误差方程式。
计算法方程的系数矩阵A A和常数项A L L,组成法方程式。(8) 解法方程,求得外方位元素的改正数dX s、dY s、dZ s、d、d、d 。
(9)用前次迭代取得的近似值,加本次迭代的改正数,
xr xL dX S\Y S K Y S K1 dY S K,Z K 计算外方位元素的新值。z K1dz(
K K 1 . K K K 1 . K K
d , d ,
(10)将求得的外方位元素改正数与规定的限差比较,负责
用新的近似值重复(4)-(9),直到满足要求为止。
若小于限差,则迭代结束。
用共线方程进行空间后方交会的程序框如图所示。
输入原始数据
像点坐标计算,系统误差正 确定外方位因素初始值
组成旋转矩阵R
所有像点完否
是C
解法方程,求外方位元素改正数
计算改正后的外方位元素 外方位元素改正数是否小于限差 输出计算成果,计算并结束
、源程序
#in elude ”ostream" using n ames pace std;
#in elude "fstream" #in clude
const int n=6;
void in verse(double c[n ][ n]);
temp late
temp latevty pen ame TI,t ypen ame T2>void multi(T1*mat1,T2*mat2,T2*result, i nt a, i nt b, i nt c); int mai n() {
double
x[4][2]={-0.08615,-0.06899,-0.05340,0.08221 ,-0.01478,-0.07663,0.01046,0.06443};
double
X[4][3]={36589.41,25273.32,2195.17,37631.08,31324.51,728.69,39100.97,24934.98, 2386.50,40426.54,30319.81,757.31};
int i,j,num=0;//num 为迭代次数
double X0[6]={0};//设定未知数(XS,YS,ZS,三个角度)初始值 double f=0.15324;// 摄影机主距 f=153.24mm
结束并显示错误信息
逐点组成误差方程式并法化
否
否
L
迭代次数小于
n
double a=1/40000.0;// 像片比例尺为 1:40000 double R[3][3]={0};// 初始化旋转知阵 R double approx_ x[8]={0};// 用于存放像点估计值 double A[8][6] 二 {0};// 定义了一个系数阵 double AT[6][8] 二 {0};// 定义了 A 的转置知阵 double L[8]={0}:// 定义常数项 const double pi=3.1415926535897932; double Asum[6][6]={0}; double result2[6]={0}; double resultl[6][8]={0}; double sumXYZ[3]={0}; cout.precision(5); cout<< ”已知像点坐标为 :\n ”; for(i=0;i<4;i++)
for(j=0;j<2;j++)
{
cout< cout<< ”x ”< { cout<< ”Z ”;cout< } } cout< for(i=0;i<4;i++) sumXYZ[j]+=X[i][j]; for(i=0;i<2;i++) X0[i]=sumXYZ[i]/4;//X0,Y0 初始化 X0[i]=1/a*f+sumXYZ[2]/4. 0;// 对 Z0 进行初始化 do{ } else { cout<< ”y"< } } cout<< ”己知地面四个点的坐标为 for(i=0;i<4;i++) for(j=0;j<3;j++) { if (j==0) { cout<< ”X";cout< } else if(j==1) { cout<< ”Y";cout< } else :\n ”; < < ”;cout<