《前方后方空间交会实验报告.》由会员分享,可在线阅读,更多相关《前方后方空间交会实验报告.(22页珍藏版)》请在金锄头文库上搜索。
1、中南大学本科生课程设计(实践)任务书、设计报告 (摄影测量与遥感概论)题 目空间后方-前方交会 学生姓名指导教师邹峥嵘学 院地球科学与信息物理学院专业班级测绘0902班学生学号一、 实验目的通过对数字影像空间后交前交的程序设计实验,要求我们进一步理解和掌握影像外方位元素的有关理论、原理和方法。利用计算机程序设计语言编写摄影测量空间交会软件进行快速确定影像的外方位元素及其精度,然后通过求得的外方位元素求解未知点的地面摄影测量坐标,达到通过摄影测量量测地面地理数据的目的。二、 实验要求 用C、VB或者Matlab编写空间后方交会-前方交会计算机程序。 提交实验报告:程序框图,程序源代码、计算结果及
2、体会。 计算结果:地面点坐标、外方位元素及精度。 完成时间:2011年11月17日。三、 实验数据点号 左片 右片 地面摄影测量坐标 x y x y X Y Z GCP1 16.012 79.963 -73.93 78.706 5083.205 5852.099 527.925 GCP2 88.56 81.134 -5.252 78.184 5780.02 5906.365 571.549 GCP3 13.362 -79.37 -79.122 -78.879 5210.879 4258.446 461.81 GCP4 82.24 -80.027 -9.887 -80.089 5909.264
3、4314.283 455.484 1 51.758 80.555 -39.953 78.463 2 14.618 -0.231 -76.006 0.036 3 49.88 -0.782 -42.201 -1.022 4 86.14 -1.346 -7.706 -2.112 5 48.035 -79.962 -44.438 -79.736 f=150.000mm,x0=0,y0=0四、 实验思路 利用后方交会得出两张像片各自的外方位元素1) 获取已知数据:从摄影资料中插曲像片比例尺、平均航高、内方位元素以及控制点的地面摄影测量坐标及对应的像点坐标。2) 确定未知数的初始值:在竖直摄影的情况下,胶
4、原素的初始值为0,线元素其中Zs=m*f+,Xs=,Ys=。3) 计算旋转矩阵R。4) 逐点计算像点坐标的近似值:利用共线方程。5) 组成误差方程并法化。6) 解求外方位元素。7) 检查计算是否收敛。 利用解求出的外方位元素进行前方交会1) 用各自像片的角元素计算出左右像片的旋转矩阵R1和R2。2) 根据左右像片的外方位元素计算摄影基线分量Bx,By,Bz。3) 逐点计算像点的空间辅助坐标。4) 计算投影系数。5) 计算未知点的地面摄影测量坐标。6) 重复以上步骤完成所有点的地面坐标的计算。五、 实验过程 程序流程框图后方交会函数确定已知数据比例尺m确定各外方位元素初始值计算旋转矩阵逐点计算像
5、点坐标近似值不满足限差则重复计算逐点计算误差方程系数项,组成误差系数矩阵A利用矩阵运算求解外方位元素检查是否满足限差若满足则输出外方位元素将整个过程作为一个函数继续进行右片的外方位元素求解求解各外方位元素精度空间前方交会利用已求得的角元素计算2张像片各自的旋转矩阵利用已求得的线元素Xs1,Ys1,Zs1,p0,,w01,k01;Xs2,Ys2,Zs2,p02,w02,k02,计算基线分量:Bx=Xs2-Xs1;By=Ys2-Ys1;Bz=Zs2-Zs1;输入像片坐标,利用旋转矩阵求解想空间辅助坐标计算点投影系数:N1=(Bx*Z2-Bz*X2)/(X1*Z2-X2*Z1);N2=(Bx*Z1-
6、Bz*X1)/(X1*Z2-X2*Z1);计算地面摄影测量坐标Xt=(N1*X1+Xs1)+(N2*X2+Xs2)/2;Yt=(N1*Y1+Ys1)+(N2*Y2+Ys2)/2;Zt=(N1*Z1+Zs1)+(N2*Z2+Zs2) /2 ;结束程序 程序中的主要函数设计子函数(矩阵求积multiply,计算函数Resection,矩阵转置transpose,矩阵求逆inMerse1,输出函数shuchu,左片的外方位元素求解函数zuobian。右片的外方位元素求解函数youbian。) 程序源代码#include stdio.h#include math.hdouble Xs1,Xs2,Ys1
7、,Ys2,Zs1,Zs2,p01,p02,w01,w02,k01,k02;/求矩阵a的转置矩阵b,a为m行、n列void transpose(double *a, double *b, int m, int n);/矩阵a乘以矩阵b,结果存储在c中,a为mn大小,b为nl大小void multiply(double *a, double *b, double *c, int m, int n, int l);/求矩阵a的逆int inMerse1(double *a, int n);/输出m行、n列的矩阵avoid shuchu(double *a, int m, int n);/计算并输出左
8、片的外方位元素void zuobian();/计算并输出右片的外方位元素void youbian();void zuobian() FILE *fp = NULL;FILE *fp1 = NULL;if(fp=fopen(F:image.txt,r) = NULL)printf(Open file error!);return;if(fp1=fopen(F:ground.txt,r) = NULL)printf(Open file error!);return;/像点坐标和地面点坐标double imagecontrol42=0.0;double groundcontrol43=0.0;/摄影
9、比例尺分母double m = 9943;double f=0.15;long i,j,k; for(i=0; i4; i+)for(j=0; j2; j+)fscanf(fp, %lf, &imagecontrolij);imagecontrolij /= 1000.0;for(k=0; k3; k+)fscanf(fp1, %lf, &groundcontrolik);fclose(fp);fclose(fp1); /计算外方位元素初始值for( i=0;i4;i+)Xs1+=groundcontroli0;Ys1+=groundcontroli1;Zs1+=groundcontroli2
10、;Xs1/=4.0;Ys1/=4.0; Zs1/=4.0;Zs1+=m*f;double R33=0.0;double L3=0.0,L1=0.0,L2=0.0;double L81=0.0,x=0.0,y=0.0;double A86=0.0,AT68=0.0,ATA66=0.0,B68=0.0;double V61=0.0;int n=0;do/计算旋转矩阵R00=cos(p01)*cos(k01)-sin(p01)*sin(w01)*sin(k01);R01=(-1)*cos(p01)*sin(k01)-sin(p01)*sin(w01)*cos(k01);R02=(-1)*sin(p0
11、1)*cos(w01);R10=cos(w01)*sin(k01);R11=cos(w01)*cos(k01);R12=(-1)*sin(w01);R20=sin(p01)*cos(k01)+cos(p01)*sin(w01)*sin(k01);R21=(-1)*sin(p01)*sin(k01)+cos(p01)*sin(w01)*cos(k01);R22=cos(p01)*cos(w01);for(i=0,j=0;j4;i+=2,j+)/计算像点坐标的近似值L1=R00*(groundcontrolj0-Xs1)+R10*(groundcontrolj1-Ys1)+R20*(groundc
12、ontrolj2-Zs1);L2=R01*(groundcontrolj0-Xs1)+R11*(groundcontrolj1-Ys1)+R21*(groundcontrolj2-Zs1);L3=R02*(groundcontrolj0-Xs1)+R12*(groundcontrolj1-Ys1)+R22*(groundcontrolj2-Zs1);x=(-1)*f*L1/L3;y=(-1)*f*L2/L3; /计算常数项L2*j0=imagecontrolj0-x;L2*j+10=imagecontrolj1-y;/计算系数矩阵Ai0=(R00*f+R02*imagecontrolj0)/L3;Ai1=(R10*f+R12*imagecontrolj0)/L3;Ai2=(R20*f+R22*imagecontrolj0)/L3;Ai3=imagecontrolj1*sin(w01)-(imagecontrolj0/f)*(imagecontrolj0*cos(k01)-imagecontrolj1*sin(k01)+f*cos(k01)*cos(w01);Ai4=(-