单向后方交会实验报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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 latevoid transp ose (TI*mat1,T2*mat2,i nt a,i nt b);

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<

相关文档
最新文档