单像空间后方交会编程实习报告_第1页
单像空间后方交会编程实习报告_第2页
单像空间后方交会编程实习报告_第3页
单像空间后方交会编程实习报告_第4页
单像空间后方交会编程实习报告_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 单像空间后方交会编程实习报告学 号姓 名指导老师1、 实习目的1、掌握空间后方交会的定义和实现算法(1) 定义:空间后方交会是以单幅影像为基础,从该影像所覆盖地面范围内若干控制点的已知地面坐标和相应点的像坐标量测值出发,根据共线条件方程,解求该影像在航空摄影时刻的外方位元素Xs,Ys,Zs,。(2) 算法:由于每一对像方和物方共轭点可列出2个方程,因此若有3个已知地面坐标的控制点,则可列出6个方程,解求6个外方位元素的改正数Xs,Ys,Zs,。实际应用中为了提高解算精度,常有多余观测方程,通常是在影像的四个角上选取4个或均匀地选择更多的地面控制点,因而要用最小二乘平差方法进行计算。2、了解摄

2、影测量平差的基本过程(1) 获取已知数据。从摄影资料中查取影像比例尺1/m,平均摄影距离(航空摄影的航高)、内方位元素x0,y0,f;获取控制点的空间坐标Xt,Yt,Zt。(2) 量测控制点的像点坐标并进行必要的影像坐标系统误差改正,得到像点坐标。(3) 确定未知数的初始值。单像空间后方交会必须给出待定参数的初始值,在竖直航空摄影且地面控制点大体对称分布的情况下,Xs0和Ys0为均值,Zs0为航高,、的初值都设为0。或者的初值可在航迹图上找出或根据控制点坐标通过坐标正反变换求出。(4) 计算旋转矩阵R。利用角元素近似值计算方向余弦值,组成R阵。(5) 逐点计算像点坐标的近似值。利用未知数的近似

3、值按共线条件式计算控制点像点坐标的近似值(x),(y)。(6) 逐点计算误差方程式的系数和常数项,组成误差方程式。(7) 计算法方程的系数矩阵ATA与常数项ATL,组成法方程式。(8) 解求外方位元素。根据法方程,解求外方位元素改正数,并与相应的近似值求和,得到外方位元素新的近似值。(9) 检查计算是否收敛。将所求得的外方位元素的改正数与规定的限差比较,通常对,的改正数,给予限差,通常为0.1,当3个改正数均小于0.1时,迭代结束。否则用新的近似值重复(4)(8)步骤的计算,直到满足要求为止。2、 程序源代码程序源代码#include iostream.h#includestdio.h#inc

4、lude stdlib.h#include#define N 4 void mult(double *m1,double *m2,double *result,int i_1,int j_12,int j_2)/矩阵相乘 int i,j,k;for(i=0;ii_1;i+)for(j=0;jj_2;j+)resulti*j_2+j=0.0;for(k=0;kj_12;k+)resulti*j_2+j+=m1i*j_12+k*m2j+k*j_2;return; int invers_matrix(double *m1,int n)/矩阵求逆int *is,*js;int i,j,k,l,u,v;

5、double temp,max_v; is=(int *)malloc(n*sizeof(int);js=(int *)malloc(n*sizeof(int);if(is=NULL|js=NULL)printf(out of memory!n);return(0);for(k=0;kn;k+)max_v=0.0;for(i=k;in;i+)for(j=k;jmax_v)max_v=temp; isk=i; jsk=j;if(max_v=0.0)free(is); free(js);printf(invers is not availble!n);return(0);if(isk!=k)for

6、(j=0;jn;j+)u=k*n+j; v=isk*n+j;temp=m1u; m1u=m1v; m1v=temp;if(jsk!=k)for(i=0;in;i+)u=i*n+k; v=i*n+jsk;temp=m1u; m1u=m1v; m1v=temp;l=k*n+k;m1l=1.0/m1l;for(j=0;jn;j+)if(j!=k)u=k*n+j;m1u*=m1l;for(i=0;in;i+)if(i!=k)for(j=0;jn;j+)if(j!=k)u=i*n+j;m1u-=m1i*n+k*m1k*n+j;for(i=0;i=0;k-)if(jsk!=k)for(j=0;jn;j+)

7、u=k*n+j; v=jsk*n+j;temp=m1u; m1u=m1v; m1v=temp;if(isk!=k)for(i=0;in;i+)u=i*n+k; v=i*n+isk;temp=m1u; m1u=m1v; m1v=temp;free(is); free(js);return(1); void transpose(double *m1,double *m2,int m,int n) /矩阵转置 int i,j; for(i=0;im;i+) for(j=0;jn;j+) m2j*m+i=m1i*n+j; return; void main()double Xs,Ys,Zs,q,w,k

8、;double a3,b3,c3;double x0,y0,f;double xN,yN;double XN,YN,ZN;double x1N,y1N;double m;double L2*N;double XX6;double A2*N6;double X0N,Y0N,Z0N,At62*N,result166,result261;int i,n=0;double sum=0,m0;/*-输入点地面坐标-*/for(i=0;iN;i+)printf(请输入第%d个点的地面坐标:,i+1);scanf(%lf%lf%lf,&Xi,&Yi,&Zi);/*-输入点像片坐标-*/for(i=0;iN;

9、i+)printf(请输入第%d个点的像片坐标:,i+1);scanf(%lf%lf,&xi,&yi);cout0.00001 | XX40.00001 | XX50.00001)&n100)/*-旋转矩阵R-*/a0=cos(q)*cos(k)-sin(q)*sin(w)*sin(k);a1=-cos(q)*sin(k)-sin(q)*sin(w)*cos(k);a2=-sin(q)*cos(w);b0=cos(w)*sin(k);b1=cos(w)*cos(k);b2=-sin(w);c0=sin(q)*cos(k)+cos(q)*sin(w)*sin(k);c1=-sin(q)*sin(

10、k)+cos(q)*sin(w)*cos(k);c2=cos(q)*cos(w);/*-像点坐标计算值-*/for(i=0;iN;i+)X0i=a0*(Xi-Xs)+b0*(Yi-Ys)+c0*(Zi-Zs);Y0i=a1*(Xi-Xs)+b1*(Yi-Ys)+c1*(Zi-Zs); Z0i=a2*(Xi-Xs)+b2*(Yi-Ys)+c2*(Zi-Zs);x1i=x0-f*X0i/Z0i;y1i=y0-f*Y0i/Z0i;/*-误差方程中各偏导数的值-*/for(i=0;iN;i+)A2*i0=(a0*f+a2*(xi-x0)/Z0i;A2*i1=(b0*f+b2*(xi-x0)/Z0i;A

11、2*i2=(c0*f+c2*(xi-x0)/Z0i;A2*i3=(yi-y0)*sin(w)-(xi-x0)*(xi-x0)*cos(k)-yi*sin(k)/f+f*cos(k) *cos(w);A2*i4=-f*sin(k)-(xi-x0)*(xi-x0)*sin(k)+(yi-y0)*cos(k)/f;A2*i5=yi-y0; L2*i=xi-x1i;A1+2*i0=(a1*f+a2*(yi-y0)/Z0i;A1+2*i1=(b1*f+b2*(yi-y0)/Z0i;A1+2*i2=(c1*f+c2*(yi-y0)/Z0i;A1+2*i3=-(xi-x0)*sin(w)-(yi-y0)*(

12、xi-x0)*cos(k)-(yi-y0)*sin(k)/f-f*sin(k) *cos(w);A1+2*i4=-f*cos(k)-(yi-y0)*(xi-x0)*sin(k)+(yi-y0)*cos(k)/f;A1+2*i5=-xi+x0;L1+2*i=yi-y1i;/*-解法方程-*/transpose(&A00,&At00,2*N,6);mult(&At00,&A00,&result100,6,2*N,6);invers_matrix(&result100,6);mult(&At00,L,&result200,6,2*N,1);mult(&result100,&result200,&XX

13、0,6,6,1);Xs+=XX0;Ys+=XX1;Zs+=XX2;q+=XX3;w+=XX4;k+=XX5;n+;/*-旋转矩阵R-*/a0=cos(q)*cos(k)-sin(q)*sin(w)*sin(k);a1=-cos(q)*sin(k)-sin(q)*sin(w)*cos(k);a2=-sin(q)*cos(w);b0=cos(w)*sin(k);b1=cos(w)*cos(k);b2=-sin(w);c0=sin(q)*cos(k)+cos(q)*sin(w)*sin(k);c1=-sin(q)*sin(k)+cos(q)*sin(w)*cos(k);c2=cos(q)*cos(w

14、);cout迭代次数为:nendl;printf(n像片外方位元素的解n);cout航向顷角q:qendl;cout旁向倾角w:wendl;cout像片旋角k:kendl;printf(Xs=%lfttYs=%lfttZs=%lfn,Xs,Ys,Zs);coutendl;printf(旋转矩阵R:n);for(i=0;i3;i+)printf(%lft,ai);printf(n);for(i=0;i3;i+)printf(%lft,bi);printf(n);for(i=0;i3;i+)printf(%lft,ci);printf(n);/*-计算单位权中误差-*/for(i=0;i2*N;i+)sum+=Li*Li;m0=sqrt(sum/(2*N-6);cout单位权中误差m0=m0endl;cout测量精度:endl;coutXs的精度为:m0*sqrt(result100)endl;coutYs的精度为:m0*sqrt(result111)endl;coutZs的精度为:m0*sqrt(re

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论