版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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;j=0.00001|fabs(v40)=0.00001|fabs(v50)=0.00001);r00=cos(p01)*cos(k01)-sin(p01)*sin(w01)*si
12、n(k01);r01=(-1)*cos(p01)*sin(k01)-sin(p01)*sin(w01)*cos(k01);r02=(-1)*sin(p01)*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);/进行未知数的精度评定double av81,x8
13、1,xt18,xtx11,mo,d66,mi6;multiply(&a00,&v00,&av00,8,6,1);for(i=0;i8;i+)xi0=avi0-li0;transpose(&x00,&xt00,8,1);multiply(&xt00,&x00,&xtx00,1,8,1);mo=xtx00/2; for(i=0;i6;i+)for(j=0;j6;j+)dij=mo*ataij; for(i=0;i6;i+)mii=sqrt(dii);printf(左片结果为:nn);printf(旋转矩阵r为:n);shuchu(&r00,3,3);printf(外方为元素为:n);printf(
14、xs1=%lfn,xs1);printf(ys1=%lfn,ys1);printf(zs1=%lfn,zs1);printf(p01=%lfn,p01);printf(w01=%lfn,w01);printf(k01=%lfn,k01);printf(各外方位元素精度为:n); printf(m1=%lfnm2=%lfnm3=%lfnm4=%lfnm5=%lfnm6=%lfn,mi0,mi1,mi2,mi3,mi4,mi5);printf(迭代次数为:%dnnnn,n);fclose(fp);void youbian()file *fp = null;file *fp1 = null;if(f
15、p=fopen(f:image2.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;/摄影比例尺分母double m = 10177;double f=0.15;long i,j,k; for(i=0; i4; i+)for(j=0; j2; j+)fscanf(fp, %lf, &image
16、controlij);imagecontrolij /= 1000.0;for(k=0; k3; k+)fscanf(fp1, %lf, &groundcontrolik);fclose(fp);fclose(fp1); /计算外方位元素初始值for( i=0;i4;i+)xs2+=groundcontroli0;ys2+=groundcontroli1;zs2+=groundcontroli2;xs2/=4.0;ys2/=4.0; zs2/=4.0;zs2+=m*f;double r33=0.0;double l3=0.0,l1=0.0,l2=0.0;double l81=0.0,x=0.0
17、,y=0.0;double a86=0.0,at68=0.0,ata66=0.0,b68=0.0;double v61=0.0;int n=0;dor00=cos(p02)*cos(k02)-sin(p02)*sin(w02)*sin(k02);r01=(-1)*cos(p02)*sin(k02)-sin(p02)*sin(w02)*cos(k02);r02=(-1)*sin(p02)*cos(w02);r10=cos(w02)*sin(k02);r11=cos(w02)*cos(k02);r12=(-1)*sin(w02);r20=sin(p02)*cos(k02)+cos(p02)*sin
18、(w02)*sin(k02);r21=(-1)*sin(p02)*sin(k02)+cos(p02)*sin(w02)*cos(k02);r22=cos(p02)*cos(w02);for(i=0,j=0;j=0.00001|fabs(v40)=0.00001|fabs(v50)=0.00001);r00=cos(p02)*cos(k02)-sin(p02)*sin(w02)*sin(k02);r01=(-1)*cos(p02)*sin(k02)-sin(p02)*sin(w02)*cos(k02);r02=(-1)*sin(p02)*cos(w02);r10=cos(w02)*sin(k02
19、);r11=cos(w02)*cos(k02);r12=(-1)*sin(w02);r20=sin(p02)*cos(k02)+cos(p02)*sin(w02)*sin(k02);r21=(-1)*sin(p02)*sin(k02)+cos(p02)*sin(w02)*cos(k02);r22=cos(p02)*cos(w02);/进行未知数的精度评定double av81,x81,xt18,xtx11,mo,d66,mi6;multiply(&a00,&v00,&av00,8,6,1);for(i=0;i8;i+)xi0=avi0-li0;transpose(&x00,&xt00,8,1)
20、;multiply(&xt00,&x00,&xtx00,1,8,1);mo=xtx00/2; for(i=0;i6;i+)for(j=0;j6;j+)dij=mo*ataij; for(i=0;i6;i+)mii=sqrt(dii);printf(右片结果为:nn);printf(旋转矩阵r为:n);shuchu(&r00,3,3);printf(外方为元素为:n);printf(xs2=%lfn,xs2);printf(ys2=%lfn,ys2);printf(zs2=%lfn,zs2);printf(p02=%lfn,p02);printf(w02=%lfn,w02);printf(k02
21、=%lfn,k02);printf(各外方位元素精度为:n); printf(m1=%lfnm2=%lfnm3=%lfnm4=%lfnm5=%lfnm6=%lfn,mi0,mi1,mi2,mi3,mi4,mi5);printf(迭代次数为:%dn,n);fclose(fp);/求矩阵a的转置矩阵b,a为m行、n列void transpose(double *a, double *b, int m, int n)int i,j;for(i=0;im;i+)for(j=0;jn;j+)bj*m+i = ai*n+j;/矩阵a乘以矩阵b,结果存储在c中,a为mn大小,b为nl大小void multi
22、ply(double *a, double *b, double *c, int m, int n, int l)int i,j,k;double t;for(i=0;im;i+)for(j=0;jl;j+)t=0;for(k=0;kn;k+)t += ai*n+k*bk*l+j;ci*l+j=t;/求矩阵a的逆int inmerse1(double *a, int n)int *is, *js, i, j, k, l, u, m;double d,p;is = new intn;js = new intn;for(k=0; k=n-1; k+)d=0.0;for(i=k; i=n-1; i+
23、)for(j=k; jd) d=p; isk=i; jsk=j;if(d+1.0=1.0)delete is;delete js;printf(error, not inmerse!n);return 0;if(isk != k)for(j=0; j=n-1; j+)u=k*n+j; m=isk*n+j;p=au; au=am; am=p; if(jsk!=k)for(i=0; i=n-1; i+)u=i*n+k;m=i*n+jsk;p=au; au=am; am=p;l=k*n+k;al=1.0/al;for(j=0; j=n-1; j+)if(j!=k)u=k*n+j; au=au*al;
24、for(i=0; i=n-1; i+)if(i!=k)for(j=0; j=n-1; j+)if(j!=k)u=i*n+j;au=au-ai*n+k*ak*n+j; for(i=0; i=0; k-)if (jsk!=k)for(j=0; j=n-1; j+) u=k*n+j; m=jsk*n+j;p=au; au=am; am=p; if(isk!=k)for(i=0; i=n-1; i+) u=i*n+k; m=i*n+isk;p=au; au=am; am=p;delete is;delete js;return 1;/输出m行、n列的矩阵avoid shuchu(double *a,
25、int m, int n)int i,j;for(i=0;im;i+)for(j=0;jn;j+)printf(%9lf ,ai*n+j);printf(n);void main()zuobian();youbian();double a11,a12,a13,a21,a22,a23,b11,b12,b13,b21,b22,b23,c11,c12,c13,c21,c22,c23;double x1,y1,x2,y2,x1,y1,z1,x2,y2,z2,n1,n2,xt,yt,zt,bx,by,bz;double f=0.15;scanf(x1=%lf,y1=%lf,x2=%lf,y2=%lf,&
26、x1,&y1,&x2,&y2); /scanf(y1=%lf,&y1);/printf(x2=); /scanf(x2=%lf,&x2);/旋转矩阵a11=cos(p01)*cos(k01)-sin(p01)*sin(w01)*sin(k01); a12=(-1)*cos(p01)*sin(k01)-sin(p01)*sin(w01)*cos(k01);a13=(-1)*sin(p01)*cos(w01);a21=cos(p02)*cos(k02)-sin(p02)*sin(w02)*sin(k02); a22=(-1)*cos(p02)*sin(k02)-sin(p02)*sin(w02)*
27、cos(k02);a23=(-1)*sin(p02)*cos(w02);b11=cos(w01)*sin(k01);b12=cos(w01)*cos(k01);b13=(-1)*sin(w01);b21=cos(w02)*sin(k02);b22=cos(w02)*cos(k02);b23=(-1)*sin(w02);c11=sin(p01)*cos(k01)+cos(p01)*sin(w01)*sin(k01);c12=(-1)*sin(p01)*sin(k01)+cos(p01)*sin(w01)*cos(k01);c13=cos(p01)*cos(w01);c21=sin(p02)*co
28、s(k02)+cos(p02)*sin(w02)*sin(k02);c22=(-1)*sin(p02)*sin(k02)+cos(p02)*sin(w02)*cos(k02);c23=cos(p02)*cos(w02);/计算各待定点的像空间辅助坐标x1=a11*x1/1000+a12*y1/1000-a13*f;y1=b11*x1/1000+b12*y1/1000-b13*f;z1=c11*x1/1000+c12*y1/1000-c13*f;x2=a21*x2/1000+a22*y2/1000-a23*f;y2=b21*x2/1000+b22*y2/1000-b23*f;z2=c21*x2/1000+c22*y2/1000-c23*f;/计算摄影基线分量bx=xs2-xs1;by=ys2-ys1;bz=zs2-zs1;/计算点投影系数n1=(bx*z2-bz*x2)/(x1*z2-x2*z1);n2=(bx*z1-bz*x1)/(x1*z2-x2*z1);/计算待定点的地面摄影测量坐标xt=(n1*x1+xs1)+(n2*x2+xs2)/2;yt
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 债务合同协议范本
- 公司收购的协议范本
- 年终总结报告分享资料
- 全国赛课一等奖初中统编版七年级道德与法治上册《在劳动中创造人生价值》课件
- (参考)酒瓶项目立项报告
- 2023年大功率多功能电子式电度表项目融资计划书
- 2023年工业涂料水性色浆项目融资计划书
- ASP模拟考试题及答案
- 养老院老人请假外出审批制度
- 《标准成本差异分析》课件
- 食品安全与质量检测技能大赛考试题库400题(含答案)
- 储能系统培训课程设计
- 中小学生研学旅行实务 课件 项目5、6 研学旅行实施主体、研学旅行服务机构
- 考研英语阅读理解精读100篇之经济类
- 举牌验收专项方案
- 总承包公司项目管理岗位质量职责及管理动作清单
- 黑龙江省龙东地区2025届英语九上期末监测模拟试题含解析
- DZ∕T 0447-2023 岩溶塌陷调查规范(1:50000)(正式版)
- 2024年人教版小学三年级科学(上册)期末试卷及答案
- 公共广播系统施工与方案
- 2024年02月中国人口与发展研究中心2024年面向社会招考人员笔试上岸试题历年典型考题与考点剖析附带答案解析
评论
0/150
提交评论