单向后方交会实验报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(10)将求得的外方位元素改正数与规定的限差比较,若小于限差,则迭代结束。负责用新的近似值重复(4)-(9),直到满足要求为止。
用共线方程进行空间后方交会的程序框如图所示。
输入原始数据
像点坐标计算,系统误差正
确定外方位因素初始值
组成旋转矩阵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;
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]);
template<typename Tl,typename T2>void transpose (TI*mat1,T2*mat2,int a,int b);
template<typename TI,typename T2>void multi(T1*mat1,T2*mat2,T2*result, int a, int b, int c);
(5)逐点计算像点坐标的近似值。利用未知数的近似值和控制点的地面坐标;带入共线方程式,逐点近似像点坐标的近似值(x)、(y)。
(6)逐点计算误差方程式的系数和常数项,组成误差方程式。
(7)计算法方程的系数矩阵 和常数项 ,组成法方程式。
(8)解法方程,求得外方位元素的改正数 。
(9)用前次迭代取得的近似值,加本次迭代的改正数,计算外方位元素的新值。
int i,j,num=0;//num为迭代次数
double X0[6]={0};//设定未知数(XS,YS,ZS,三个角度)初始值
double f=0.15324;//摄影机主距f=153.24mm
double a=1/40000.0;//像片比例尺为1:40000
double R[3][3]={0};//初始化旋转知阵R
二、算法流程
(1)获取已知数据。从航摄资料中差取平均航高与摄影机主距;获取控制点的地面测量坐标并转换为地面摄影坐标。
(2)量测控制点的像点坐标并作系统误差改正。
(3)确定未知数的初始值。在竖直摄影且地面控制点大体对称分布的情况下,按如下方法确定初始值,即
, ,
(4) 用三个角元素的初始值按下式,计算各个方向余弦值,组成旋转矩阵R






班级:测绘一班
学号: 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
{
cout<<fixed:
if (j==0)
{
cout<<”x”<<i+l<<”=”<<setw (8)<<x[i][j]<<””;
}
else
{
cout<<”y"<<i+1<<”=”<<setw(6)<<x[i][j]<<endl;
}
}
cout<<”己知地面四个点的坐标为:\n”;
for(i=0;i<4;i++)
int main()
{
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};
计算改正后的外方位元素
外方位元素改正数是否小于限差

输出计算成果,计算并结束
否百度文库

3、
#include”iostream"
using namespace std;
#include”fstream"
#include <iomanip>
const int n=6;
void inverse(double c[n][n]);
for(j=0;j<3;j++)
{
if (j==0)
{
cout<<”X";cout<<i+1;cout<<”=“<<X[i][j]<<””;
}
else
if(j==1)
{
cout<<”Y";cout<<i+1;cout<<”=“<<X[i][j)<<””:
}
else
{
cout<<”Z”;cout<<i+1;cout<<”=”;cout<<X[i][j]<<endl;
}
}
cout<<endl;
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]);
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++)
-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
以单像空间后方交会方法,求解该像片的外方位元素。
相关文档
最新文档