单向后方交会实验报告.docx
- 文档编号:2955841
- 上传时间:2022-11-16
- 格式:DOCX
- 页数:16
- 大小:112.34KB
单向后方交会实验报告.docx
《单向后方交会实验报告.docx》由会员分享,可在线阅读,更多相关《单向后方交会实验报告.docx(16页珍藏版)》请在冰豆网上搜索。
单向后方交会实验报告
课
程
设
计
报
告
班级:
测绘一班
学号:
20133279
姓名:
罗超
日期:
2015.4.26
一、计算原理
已知条件
摄影机主距f=153.24mm,x0=0,y0=0,像片比例尺为1:
40000,有四对点的像点坐标与相应的地面坐标如下表。
点号
像点坐标
地面坐标
x(mm)
y(mm)
X(m)
Y(m)
Z(m)
1
-86.15
-68.99
36589.41
25273.32
2195.17
2
-53.40
82.21
37631.08
31324.51
728.69
3
-14.78
-76.63
39100.97
24934.98
2386.50
4
10.46
64.43
40426.54
30319.81
757.31
以单像空间后方交会方法,求解该像片的外方位元素。
二、算法流程
(1)获取已知数据。
从航摄资料中差取平均航高与摄影机主距;获取控制点的地面测量坐标并转换为地面摄影坐标。
(2)量测控制点的像点坐标并作系统误差改正。
(3)确定未知数的初始值。
在竖直摄影且地面控制点大体对称分布的情况下,按如下方法确定初始值,即
,
,
(4)
用三个角元素的初始值按下式,计算各个方向余弦值,组成旋转矩阵R
(5)逐点计算像点坐标的近似值。
利用未知数的近似值和控制点的地面坐标;带入共线方程式,逐点近似像点坐标的近似值(x)、(y)。
(6)逐点计算误差方程式的系数和常数项,组成误差方程式。
(7)计算法方程的系数矩阵
和常数项
,组成法方程式。
(8)解法方程,求得外方位元素的改正数
。
(9)用前次迭代取得的近似值,加本次迭代的改正数,计算外方位元素的新值。
(10)将求得的外方位元素改正数与规定的限差比较,若小于限差,则迭代结束。
负责用新的近似值重复(4)-(9),直到满足要求为止。
用共线方程进行空间后方交会的程序框如图所示。
输入原始数据
像点坐标计算,系统误差正
确定外方位因素初始值
组成旋转矩阵R
逐点组成误差方程式并法化
所有像点完否
是
解法方程,求外方位元素改正数
计算改正后的外方位元素
外方位元素改正数是否小于限差
是
输出计算成果,计算并结束
结束并显示错误信息
是
否
否
三、源程序
#include”iostream"
usingnamespacestd;
#include”fstream"
#include
constintn=6;
voidinverse(doublec[n][n]);
template
template
intmain()
{
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};
inti,j,num=0;//num为迭代次数
doubleX0[6]={0};//设定未知数(XS,YS,ZS,三个角度)初始值
doublef=0.15324;//摄影机主距f=153.24mm
doublea=1/40000.0;//像片比例尺为1:
40000
doubleR[3][3]={0};//初始化旋转知阵R
doubleapprox_x[8]={0};//用于存放像点估计值
doubleA[8][6]二{0};//定义了一个系数阵
doubleAT[6][8]二{0};//定义了A的转置知阵
doubleL[8]={0}:
//定义常数项
constdoublepi=3.1415926535897932;
doubleAsum[6][6]={0};
doubleresult2[6]={0};
doubleresultl[6][8]={0};
doublesumXYZ[3]={0};
cout.precision(5);
cout<<”已知像点坐标为:
\n”;
for(i=0;i<4;i++)
for(j=0;j<2;j++)
{
cout< if(j==0) { cout<<”x”< } else { cout<<”y"< } } cout<<”己知地面四个点的坐标为: \n”; 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 { cout<<”Z”;cout< } } cout< for(j=0;j<3;j++) 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{ R[0][0]=cos(X0[3])*cos(X0[5])-sin(X0[3])*sin(X0[4])*sin(X0[5]); R[0][I]=-cos(X0[3])*sin(X0[5])-sin(X0[3])*sin(X0[4])*cos(X0[5]); R[0][2]=-sin(X0[3])*cos(X0[4]); R[1][0]=cos(X0[4])*sin(X0[5]); R[I1[1]=cos(X0[4])*cos(X0[5]); R[1][2]=-sin(X0[4]); R[2][0]=sin(X0[3])*cos(X0[5])+cos(X0[3])*sin(X0[4])*sin(X0[5]); R[2][l]=-sin(X0[3])*sin(X0[5])+cos(X0[3])*sin(X0[4])*cos(X0[5]); R[2][2]=cos(X0[3])*cos(X0[4]); //第一个像点的估计值,第一个点的坐标存放于X[0][0],X[0][1],X[0][2] approx_x[0]=-f*(R[0][0]*(X[0][0]-X0[0])+R[1][0]*(X[0][1]-X0[1])+R[2][0]*(X[0][2]-X0[2]))/(R[0][2]*(X[0][0]-X0[0])+R[1][2]*(X[0][1]-X0[1])+R[2][2]*(X[0][2]-X0[2]));approx_x[1]=-f*(R[0][1]*(X[0][0]-X0[0])+R[1][1]*(X[0][1]-X0[1])+R[2][1]*(X[0][2]-X0[2]))/(R[0][2]*(X[0][0]-X0[0])+R[1][2]*(X[0][1]-X0[1])+R[2][2]*(X[0][2]-X0[2])); //第二个像点的估计值,第2个点的坐标存放于X[1][0],X[1][1],X[1][2]approx_x[2]=-f*(R[0][0]*(X[1][0]-X0[0])+R[1][0]*(X[1][1]-X0[1])+R[2][0]*(X[1][2]-X0[2]))/(R[0][2]*(X[1][0]-X0[0])+R[1][2]*(X[1][1]-X0[1])+R[2][2]*(X[1][2]-X0[2]));approx_x[3]=-f*(R[0][1]*(X[1][0]-X0[0])+R[1][1]*(X[1][1]-X0[1])+R[2][1]*(X[1][2]-X0[2]))/(R[0][2]*(X[1][0]-X0[0])+R[1][2]*(X[1][1]-X0[1])+R[2][2]*(X[1][2]-X0[2])); //第三个像点的估计值,第3个点的坐标存放于X[2][0],X[2][1],X[2][2]approx_x[4]=-f*(R[0][0]*(X[2][0]-X0[0])+R[1][0]*(X[2][1]-X0[1])+R[2][0]*(X[2][2]-X0[2]))/(R[0][2]*(X[2][0]-X0[0])+R[1][2]*(X[2][1]-X0[1])+R[2][2]*(X[2][2]-X0[2])); approx_x[5]=-f*(R[0][1]*(X[2][0]-X0[0])+R[1][1]*(X[2][1]-X0[1])+R[2][1]*(X[2][2]-X0[2]))/(R[0][2]*(X[2][0]-X0[0])+R[1][2]*(X[2][1]-X0[1])+R[2][2]*(X[2][2]-X0[2])); //第四个像点的估计值,第4个点的坐标存放于X[3][0],X[3][1],X[3][2]approx_x[6]=-f*(R[0][0]*(X[3][0]-X0[0])+R[1][0]*(X[3][1]-X0[1])+R[2][0]*(X[3][2]-X0[2]))/(R[0][2]*(X[3][0]-X0[0])+R[1][2]*(X[3][1]-X0[1])+R[2][2]*(X[3][2]-X0[2]));approx_x[7]=-f*(R[0][1]*(X[3][0]-X0[0])+R[1][1]*(X[3][1]-X0[1])+R[2][1]*(X[3][2]-X0[2]))/(R[0][2]*(X[3][0]-X0[0])+R[1][2]*(X[3][1]-X0[1])+R[2][2]*(X[3][2]-X0[2]));for(i=0;i<4;i++) { //第i个像点估计值放在approx_x[2*(i-1)],approx_x[2*i-1]/*a11*/A[2*i][0]=(R[0][0]*f+R[0][2]*approx_x[2*i])/(R[0][2]*(X[i][0]-X0[0])+R[1][2]*(X[i][1]-X0[1])+R[2][2]*(X[i][2]-X0[2]));/*a12*/A[2*i][1]=(R[1][0]*f+R[1][2]*approx_x[2*i])/(R[0][2]*(X[i][0]-X0[0])+R[1][2]*(X[i][1]-X0[1])+R[2][2]*(X[i][2]
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单向 后方 交会 实验 报告