单像空间后方交会实验报告(c++版)
单像空间后方交会实习报告

摄影测量学单像空间后方交会实习报告一、实习目的1.掌握空间后方交会的定义和实现算法(1)定义:空间后方交会是以单幅影像为基础,从该影像所覆盖地面范围内若干控制点的已知地面坐标和相应点的像坐标量测值出发,根据共线条件方程,解求该影像在航空摄影时刻的外方位元素Xs,Ys,Zs,φ,ω,κ。
(2)算法:由于每一对像方和物方共轭点可列出2个方程,因此若有3个已知地面坐标的控制点,则可列出6个方程,解求6个外方位元素的改正数△Xs,△Ys,△Zs,△φ,△ω,△κ。
实际应用中为了提高解算精度,常有多余观测方程,通常是在影像的四个角上选取4个或均匀地选择更多的地面控制点,因而要用最小二乘平差方法进行计算。
2.了解摄影测量平差的基本过程(1)获取已知数据。
从摄影资料中查取影像比例尺1/m,平均摄影距离(航空摄影的航高)、内方位元素x0,y0,f;获取控制点的空间坐标X,Y,Z。
(2)量测控制点的像点坐标并进行必要的影像坐标系统误差改正,得到像点坐标。
(3)确定未知数的初始值。
单像空间后方交会必须给出待定参数的初始值,在竖直航空摄影且地面控制点大体对称分布的情况下,Xs0和Ys0为均值,Zs0为航高,φ、ω、κ的初值都设为0。
或者κ的初值可在航迹图上找出或根据控制点坐标通过坐标正反变换求出。
(4)计算旋转矩阵R。
利用角元素近似值计算方向余弦值,组成R阵。
(5)逐点计算像点坐标的近似值。
利用未知数的近似值按共线条件式计算控制点像点坐标的近似值(x),(y)。
(6)逐点计算误差方程式的系数和常数项,组成误差方程式。
(7)计算法方程的系数矩阵ATA与常数项ATL,组成法方程式。
(8)解求外方位元素。
根据法方程,解求外方位元素改正数,并与相应的近似值求和,得到外方位元素新的近似值。
(9)检查计算是否收敛。
将所求得的外方位元素的改正数与规定的限差比较,通常对φ,ω,κ的改正数△φ,△ω,△κ给予限差,通常为0.000001弧度,当3个改正数均小于0.000001弧度时,迭代结束。
摄影测量学单像空间后方交会编程实习报告(精品资料).doc

【最新整理,下载后即可编辑】摄影测量学单像空间后方交会编程实习报告班级:130x姓名:xx学号:2013302590xxx指导老师:李欣一、实习目的通过对提供的数据进行计算,输出像片的外方位元素并评定精度。
深入理解单像空间后方交会的思想,体会在有多余观测情况下,用最小二乘平差方法编程实现解求影像外方位元素的过程。
通过尝试编程实现加强编程处理问题的能力和对实习内容的理解,通过对实验结果的分析,增强综合运用所学知识解决实际问题的能力。
了解摄影测量平差的基本过程,掌握空间后方交会的定义和实现算法。
二、实习内容根据学习的单像空间后方交会的知识,用程序设计语言(C++或C语言)编写一个完整的单像空间后方交会程序,通过对提供的数据进行计算,输出像片的外方位元素并评定精度。
三、实习数据已知航摄仪的内方位元素:fk =153.24mm,x=y=0,摄影比例尺为1:15000;4个地面控制点的地面坐标及其对应像点的像片坐标:四、实习原理如果我们知道每幅影像的6个外方位元素,就能确定被摄物体与航摄影像的关系。
因此,如何获取影像的外方位元素,一直是摄影测量工作者所探讨的问题。
可采取的方法有:利用雷达、全球定位系统(GPS)、惯性导航系统(INS)以及星相摄影机来获取影像的外方位元素;也可以利用影像覆盖范围内一定数量的控制点的空间坐标与摄影坐标,根据共线条件方程,反求该影像的外方位元素,这种方法称为单幅影像的空间后方交会。
单像空间后方交会的基本思想是:以单幅影像为基础,从该影像所覆盖地面范围内若干控制点的已知地面坐标和相应点的像坐标量测值出发,根据共线条件方程,解求该影像在航空摄影时刻的外方位元素Xs,Ys,Zs,ϕ,ω,κ。
五、 实习流程1. 获取已知数据。
从摄影资料中查取影像比例尺1/m ,平均摄影距离(航空摄影的航高、内方位元素x 0,y 0,f ;获取控制点的空间坐标X t ,Y t ,Z t 。
2. 量测控制点的像点坐标并进行必要的影像坐标系统误差改正,得到像点坐标。
单像空间后方交会实习报告

单像空间后方交会实习报告摘要本报告旨在总结并评估笔者在单像空间后方交会实习中的经验和收获。
首先,报告介绍了单像空间后方交会实习的目的和背景。
接着,报告详细描述了实习期间所进行的实验和操作步骤。
在实习过程中,笔者遇到了一些挑战,但通过团队合作和专业指导取得了成功。
最后,报告总结了实习对于个人职业发展的重要性,并提出了改进实习体验的建议。
1. 引言单像空间后方交会是测量和分析地球或其他星球上的点的空间坐标的方法之一。
该方法通过将来自不同位置的图像投影到一个共同的平面上,并在该平面上对图像进行测量和分析,以确定点的坐标。
本实习旨在将现实生活中的实地测量和图像处理技术相结合,通过实际操作了解和掌握单像空间后方交会的原理和应用。
2. 实习过程本次实习分为三个步骤:图像获取、图像处理和空间坐标计算。
2.1 图像获取首先,为了进行后续的图像处理和分析,我们需要获取一组具有不同视角的图像。
为了实现这个目标,我们选择了一片公共景区进行实地测量。
在测量过程中,我们使用了专业的测量设备和相机,并按照一定的间隔和角度拍摄了一组图像。
这些图像将被用于后续的图像处理和分析。
2.2 图像处理在图像处理阶段,我们使用了专业的图像处理软件对获取到的图像进行处理。
首先,我们使用了相机标定算法对相机内外参数进行校准,以保证后续测量的精度和准确度。
然后,我们对每张图像进行了特征点提取和匹配,以建立图像之间的对应关系。
最后,根据所获得的对应关系,我们重建了图像场景的三维模型,并将其用于后续的空间坐标计算。
2.3 空间坐标计算在空间坐标计算阶段,我们使用了单像空间后方交会的原理,计算了每个图像特征点的空间坐标。
首先,我们将图像场景的三维模型与图像上的特征点进行对应,以确定特征点在三维空间中的位置。
然后,我们利用三角测量原理计算出特征点的三维坐标。
最后,通过对所有图像特征点的计算,我们可以得到目标点的空间坐标。
3. 实习挑战与解决在实习过程中,我们遇到了一些挑战,如图像质量、算法调优和测量误差等。
单像空间后方交会实习报告

单像空间后方交会实习报告本文是一份单像空间后方交会实习报告,旨在总结和分享本人在这个领域进行实习的经验和所得。
一、实习背景和目的在开始正文之前,首先介绍一下实习的背景和目的。
本次实习是为了深入了解单像空间后方交会的原理和应用,并提升我的实践能力。
通过与团队合作,完成一系列的实习任务和项目,我期望能够在这个领域不断成长和进步。
二、实习内容和方法2.1 实习内容本次实习主要涉及单像空间后方交会的方法和技术。
我通过参与实际项目,了解和学习了从数据采集到数据处理的整个流程,并深入研究了相关的算法和工具。
2.2 实习方法为了能够全面了解单像空间后方交会的知识和技术,我采用了多种实习方法。
首先,我积极参与了团队的讨论和会议,与同事们交流和分享我们的学习和经验。
其次,我通过独立完成一些小型项目和任务,提升了自己的实践能力。
此外,我还阅读了大量的相关文献和资料,深入研究了该领域的理论知识。
三、实习成果和收获3.1 实习成果在实习期间,我完成了几个实践项目任务,并取得了一些成果。
首先,我成功实现了单像空间后方交会的基本原理和方法,并在实际项目中应用。
其次,我编写了一份详尽的实习报告,总结了整个实习过程和所得的经验。
3.2 实习收获通过这次实习,我获得了很多宝贵的经验和收获。
首先,我深入了解并掌握了单像空间后方交会的原理和方法,提升了自己的实践能力。
其次,我学会了如何与团队合作,并通过与他人的交流和合作进一步提升自己。
此外,我还学会了如何独立思考和解决问题,在实践中培养了自己的创新思维能力。
四、实习感悟和建议4.1 实习感悟通过实习,我深刻体会到了理论与实践的结合的重要性。
只有将所学的理论知识应用到实践项目中,才能真正理解和掌握。
在实践中遇到各种困难和挑战,我也学会了如何从失败中总结经验,再次进行尝试。
4.2 实习建议对于即将进行单像空间后方交会实习的同学们,我有几点建议。
首先,要注重理论知识的学习和积累,打好基础。
摄影测量后方交会VC实现代码及实习报告

摄影测量课间实习单片空间后方交会班级:09031姓名:吴煜晖学号:20093025901232011-10-8一、实习原理单像空间后方交会的基本思想是:以单幅影像为基础,从该影像所覆盖地面范围内若干控制点的已知地面坐标和相应点的像坐标测值出发,根据共线条件方程,解求该影像在航空摄影时刻的外方位元素XS ,YS,ZS,ψ,ω,κ。
由于空间后方交会所采用的数学模型共线方程是非线性函数,为了便于外方位元素的解求,须首先对共线方程进行线性化,然后进行后方交会,最后在精度评定。
二、实习过程1、实习所用数据本次实习数据采用课本P.44 27题所给数据。
如下图:2、程序流程图及界面设计本程序程序框图如下:本人采用Visual C++6.0编此程序,利用MFC来设计程序。
主程序页面设计如下:子窗口(即进行计算后所得结果页面)设计如下:3、程序代码本程序代码较多,在此讲部分重要代码列出,其余代码参见程序源代码。
对话框类头文件内声明的类成员及函数(后来增加的):public:void houfangjiaohui();double fi,w,k; //影像外方位角double Xs0,Ys0,Zs0; //后方交会所求解double a[3],b[3],c[3];double mx[6],m0;void inv(double *a,int n); /*正定矩阵求逆*/void transpose(double *m1, double *m2, int m, int n); //矩阵转置void mult(double *m1, double *m2, double *result, int i_1, int j_12, int j_2); //矩阵相乘部分核心代码,在此讲后方交会计算代码给出:void CFinalworkDlg::houfangjiaohui(){double t_fk;fi=w=k=0.0;int i; //中间变量double t_x[4],t_y[4],t_X[4],t_Y[4],t_Z[4];//将单位换成米t_x[0]=m_x1/1000.0; t_x[1]=m_x2/1000.0; t_x[2]=m_x3/1000.0;t_x[3]=m_x4/1000.0;t_y[0]=m_y1/1000.0; t_y[1]=m_y2/1000.0; t_y[2]=m_y3/1000.0;t_y[3]=m_y4/1000.0;t_X[0]=m_X1; t_X[1]=m_X2; t_X[2]=m_X3; t_X[3]=m_X4;t_Y[0]=m_Y1; t_Y[1]=m_Y2; t_Y[2]=m_Y3; t_Y[3]=m_Y4;t_Z[0]=m_Z1; t_Z[1]=m_Z2; t_Z[2]=m_Z3; t_Z[3]=m_Z4;Xs0=Ys0=Zs0=0.0;for(i=0;i<4;i++){Xs0+=t_X[i];Ys0+=t_Y[i];}//确定未知数初始值Xs0/=4;Ys0/=4;t_fk=m_fk/1000.0;Zs0=t_fk*m_mk;double x00=m_x00;double y00=m_y00;double A[8*6];double AT[6*8];double ATA[6*6];double L[8];double ATL[6*1];double Xo[4],Yo[4],Zo[4],Xom,Yom,Zom;double Delta[6];while(1){a[0]=cos(fi)*cos(k)-sin(fi)*sin(w)*sin(k);a[1]=-cos(fi)*sin(k)-sin(fi)*sin(w)*cos(k);a[2]=-sin(fi)*cos(w);b[0]=cos(w)*sin(k);b[1]=cos(w)*cos(k);b[2]=-sin(w);c[0]=sin(fi)*cos(k)+cos(fi)*sin(w)*sin(k);c[1]=-sin(fi)*sin(k)+cos(fi)*sin(w)*cos(k);c[2]=cos(fi)*cos(w);for(i=0;i<4;i++){Xom=a[0]*(t_X[i]-Xs0)+b[0]*(t_Y[i]-Ys0)+c[0]*(t_Z[i]-Zs0);Yom=a[1]*(t_X[i]-Xs0)+b[1]*(t_Y[i]-Ys0)+c[1]*(t_Z[i]-Zs0);Zom=a[2]*(t_X[i]-Xs0)+b[2]*(t_Y[i]-Ys0)+c[2]*(t_Z[i]-Zs0);Xo[i]=-t_fk*Xom/Zom;Yo[i]=-t_fk*Yom/Zom;Zo[i]=Zom;A[i*12+0]=(a[0]*t_fk+a[2]*(t_x[i]-x00))/Zo[i];A[i*12+1]=(b[0]*t_fk+b[2]*(t_x[i]-x00))/Zo[i];A[i*12+2]=(c[0]*t_fk+c[2]*(t_x[i]-x00))/Zo[i];A[i*12+3]=(t_y[i]-y00)*sin(w)-cos(w)*(t_fk*cos(k)+((t_x[i]-x00)*cos(k)-(t _y[i]-y00)*sin(k))*(t_x[i]-x00)/t_fk);A[i*12+4]=-t_fk*sin(k)-(t_x[i]-x00)*((t_x[i]-x00)*sin(k)+(t_y[i]-y00)*cos(k ))/t_fk;A[i*12+5]=t_y[i]-y00;A[i*12+6]=(a[1]*t_fk+a[2]*(t_y[i]-y00))/Zo[i];A[i*12+7]=(b[1]*t_fk+b[2]*(t_y[i]-y00))/Zo[i];A[i*12+8]=(c[1]*t_fk+c[2]*(t_y[i]-y00))/Zo[i];A[i*12+9]=-(t_x[i]-x00)*sin(w)-((t_y[i]-y00)*((t_x[i]-x00)*cos(k)-(t_y[i]-y0 0)*sin(k))/t_fk-t_fk*sin(k))*cos(w);A[i*12+10]=-t_fk*cos(k)-(t_y[i]-y00)*((t_x[i]-x00)*sin(k)+(t_y[i]-y00)*cos(k))/t_fk;A[i*12+11]=-(t_x[i]-x00);L[i*2+0]=(t_x[i]-x00-Xo[i]);L[i*2+1]=(t_y[i]-y00-Yo[i]);}transpose(A,AT,8,6);mult(AT,A,ATA,6,8,6);mult(AT,L,ATL,6,8,1);inv(ATA,6);mult(ATA,ATL,Delta,6,6,1);Xs0+=Delta[0];Ys0+=Delta[1];Zs0+=Delta[2];fi+=Delta[3];w+=Delta[4];k+=Delta[5];if((fabs(Delta[0])>0.00001||fabs(Delta[1])>0.00001||fabs(Delta[2])>0.00001|| fabs(Delta[3])>0.00001||fabs(Delta[4])>0.00001||fabs(Delta[5])>0.00001)==0) {double V[8];double s=0.0;mult(A,Delta,V,8,6,1);for(i=0;i<8;i++){V[i]-=L[i];s+=V[i]*V[i];}m0=sqrt(s/2.0); //单位权中误差for(i=0;i<6;i++) //精度评定{mx[i]=sqrt(ATA[7*i])*m0;}break;}}}三、实习结果程序主界面如下:在该界面中,我们可以手动输入各项数据,也可以清空所有数据以及将所有空恢复默认数据(即题目所给数据)。
摄影测量学空间后方交会实验报告

摄影测量学实验报告实验一、单像空间后方交会学院:建测学院班级:测绘082姓名:肖澎学号: 15一.实验目的1.深入了解单像空间后方交会的计算过程;2.加强空间后方交会基本公式和误差方程式,法线方程式的记忆;3.通过上机调试程序加强动手能力的培养。
二.实验原理以单幅影像为基础,从该影像所覆盖地面范围内若干控制点和相应点的像坐标量测值出发,根据共线条件方程,求解该影像在航空摄影时刻的相片外方位元素。
三.实验内容1.程序图框图2.实验数据(1)已知航摄仪内方位元素f=153.24mm,Xo=Yo=0。
限差0.1秒(2)已知4对点的影像坐标和地面坐标:3.实验程序using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace ConsoleApplication3{class Program{static void Main(){//输入比例尺,主距,参与平参点的个数Console.WriteLine("请输入比例尺分母m:\r");string m1 = Console.ReadLine();double m = (double)Convert.ToSingle(m1);Console.WriteLine("请输入主距f:\r");string f1 = Console.ReadLine();double f = (double)Convert.ToSingle(f1);Console.WriteLine("请输入参与平差控制点的个数n:\r");string n1 = Console.ReadLine();int n = (int)Convert.ToSingle(n1);//像点坐标的输入代码double[] arr1 = new double[2 * n];//1.像点x坐标的输入for (int i = 0; i < n; i++){Console.WriteLine("请输入已进行系统误差改正的像点坐标的x{0}值:\r", i+1);string u = Console.ReadLine();for (int j = 0; j < n; j += 2){arr1[j] = (double)Convert.ToSingle(u);}}//2.像点y坐标的输入for (int i = 0; i < n; i++){Console.WriteLine("请输入已进行系统误差改正的像点坐标的y{0}值:\r", i+1);string v = Console.ReadLine();for (int j = 1; j < n; j += 2){arr1[j] = (double)Convert.ToSingle(v);}}//控制点的坐标输入代码double[,] arr2 = new double[n, 3];//1.控制点X坐标的输入for (int j = 0; j < n; j++){Console.WriteLine("请输入控制点在地面摄影测量坐标系的坐标的X{0}值:\r", j+1);string u = Console.ReadLine();arr2[j , 0] = (double)Convert.ToSingle(u);}//2.控制点Y坐标的输入for (int k = 0; k < n; k++){Console.WriteLine("请输入控制点在地面摄影测量坐标系的坐标的Y{0}值:\r", k+1);string v = Console.ReadLine();arr2[k , 1] = (double)Convert.ToSingle(v);}//3.控制点Z坐标的输入for (int p =0; p < n; p++){Console.WriteLine("请输入控制点在地面摄影测量坐标系的坐标的Z{0}值:\r", p+1);string w = Console.ReadLine();arr2[p , 2] = (double)Convert.ToSingle(w);}//确定外方位元素的初始值//1.确定Xs的初始值:double Xs0 = 0;double sumx = 0;for (int j = 0; j < n; j++){double h = arr2[j, 0];sumx += h;}Xs0 = sumx / n;//2.确定Ys的初始值:double Ys0 = 0;double sumy = 0;for (int j = 0; j < n; j++){double h = arr2[j, 1];sumy += h;}Ys0 = sumy / n;//3.确定Zs的初始值:double Zs0 = 0;double sumz = 0;for (int j = 0; j <= n - 1; j++){double h = arr2[j, 2];sumz += h;}Zs0 = sumz / n;doubleΦ0 = 0;doubleΨ0 = 0;double K0 = 0;Console.WriteLine("Xs0,Ys0,Zs0,Φ0,Ψ0,K0的值分别是:{0},{1},{2},{3},{4},{5}", Xs0, Ys0, Zs0, 0, 0, 0);//用三个角元素的初始值按(3-4-5)计算各方向余弦值,组成旋转矩阵,此时的旋转矩阵为单位矩阵I:double[,] arr3 = new double[3, 3];for (int i = 0; i < 3; i++)arr3[i, i] = 1;}double a1 = arr3[0, 0]; double a2 = arr3[0, 1]; double a3 = arr3[0, 2];double b1 = arr3[1, 0]; double b2 = arr3[1, 1]; double b3 = arr3[1, 2];double c1 = arr3[2, 0]; double c2 = arr3[2, 1]; double c3 = arr3[2, 2];/*利用线元素的初始值和控制点的地面坐标,代入共线方程(3-5-2),* 逐点计算像点坐标的近似值*///1.定义存放像点近似值的数组double[] arr4 = new double[2 * n];//----------近似值矩阵//2.逐点像点坐标计算近似值//a.计算像点的x坐标近似值(x)for (int i = 0; i < 2 * n; i += 2){for (int j = 0; j < n; j++){arr4[i] = -f * (a1 * (arr2[j, 0] - Xs0) + b1 * (arr2[j, 1] - Ys0) + c1 * (arr2[j, 2] - Zs0)) / (a3 * (arr2[j, 0] - Xs0) + b3 * (arr2[j, 1] - Ys0) + c3 * (arr2[j, 2] - Zs0)); }}//b.计算像点的y坐标近似值(y)for (int i = 1; i < 2 * n; i += 2){for (int j = 0; j < n; j++){arr4[i] = -f * (a2 * (arr2[j, 0] - Xs0) + b2 * (arr2[j, 1] - Ys0) + c2 * (arr2[j, 2] - Zs0)) / (a3 * (arr2[j, 0] - Xs0) + b3 * (arr2[j, 1] - Ys0) + c3 * (arr2[j, 2] - Zs0)); }}//逐点计算误差方程式的系数和常数项,组成误差方程:double[,] arr5 = new double[2 * n, 6]; //------------系数矩阵(A)//1.计算dXs的系数for (int i = 0; i < 2 * n; i += 2){arr5[i, 0] = -1 / m; //-f/H == -1/m}//2.计算dYs的系数for (int i = 1; i < 2 * n; i += 2){arr5[i, 1] = -1 / m; //-f/H == -1/m}//3.a.计算误差方程式Vx中dZs的系数for (int i = 0; i < 2 * n; i += 2)arr5[i, 2] = -arr1[i] / m * f;}//3.b.计算误差方程式Vy中dZs的系数for (int i = 1; i < 2 * n; i += 2){arr5[i, 2] = -arr1[i] / m * f;}//4.a.计算误差方程式Vx中dΦ的系数for (int i = 0; i < 2 * n; i += 2){arr5[i, 3] = -f * (1 + arr1[i] * arr1[i] / f * f);}//4.a.计算误差方程式Vy中dΦ的系数for (int i = 1; i < 2 * n; i += 2){arr5[i, 3] = -arr1[i - 1] * arr1[i] / f;}//5.a.计算误差方程式Vx中dΨ的系数for (int i = 0; i < 2 * n; i += 2){arr5[i, 4] = -arr1[i] * arr1[i + 1] / f;}//5.b.计算误差方程式Vy中dΨ的系数for (int i = 1; i < 2 * n; i += 2){arr5[i, 4] = -f * (1 + arr1[i] * arr1[i] / f * f);}//6.a.计算误差方程式Vx中dk的系数for (int i = 0; i < 2 * n; i += 2){arr5[i, 5] = arr1[i + 1];}//6.b.计算误差方程式Vy中dk的系数for (int i = 1; i < 2 * n; i += 2){arr5[i, 5] = -arr1[i - 1];}//定义外方位元素组成的数组double[] arr6 = new double[6];//--------------------外方位元素改正数矩阵(X)//定义常数项元素组成的数组double[] arr7 = new double[2 * n];//-----------------常数矩阵(L)//计算lx的值for (int i = 0; i < 2 * n; i += 2)arr7[i] = arr1[i] - arr4[i]; //将近似值矩阵的元素代入}//计算ly的值for (int i = 1; i <= 2 * (n - 1); i += 2){arr7[i] = arr1[i] - arr4[i]; //将近似值矩阵的元素代入}/* 对于所有像点的坐标观测值,一般认为是等精度量测,所以权阵P为单位阵.所以X=(ATA)-1ATL *///1.计算ATdouble[,] arr5T = new double[6, 2 * n];for (int i = 0; i < 6; i++){for (int j = 0; j < 2 * n; j++){arr5T[i, j] = arr5[j, i];}}//A的转置与A的乘积,存放在arr5AA中double[,] arr5AA = new double[6, 6];for (int i = 0; i < 6; i++){for (int j = 0; j < 6; j++){arr5AA[i, j] = 0;for (int l = 0; l < 2 * n; l++){arr5AA[i, j] += arr5T[i, l] * arr5[l, j];}}}nijuzhen(arr5AA);//arr5AA经过求逆后变成原矩阵的逆矩阵//arr5AA * arr5T存在arr5AARATdouble[,] arr5AARAT = new double[6, 2 * n];for (int i = 0; i < 6; i++){for (int j = 0; j < 2 * n; j++){arr5AARAT[i, j] = 0;for (int p = 0; p < 6; p++){arr5AARAT[i, j] += arr5AA[i, p] * arr5T[p, j];}}}//计算arr5AARAT x L,存在arrX中double[] arrX = new double[6];for (int i = 0; i < 6; i++){for (int j = 0; j < 1; j++){arrX[i] = 0;for (int vv = 0; vv < 6; vv++){arrX[i] += arr5AARAT[i, vv] * arr7[vv];}}}//计算外方位元素值double Xs, Ys, Zs, Φ, Ψ, K;Xs = Xs0 + arrX[0];Ys = Ys0 + arrX[1];Zs = Zs0 + arrX[2];Φ = Φ0 + arrX[3];Ψ = Ψ0 + arrX[4];K = K0 + arrX[5];for (int i = 0; i <= 2; i++){Xs += arrX[0];Ys += arrX[1];Zs += arrX[2];Φ += arrX[3];Ψ += arrX[4];K += arrX[5];}Console.WriteLine("Xs,Ys,Zs,Φ,Ψ,K的值分别是:{0},{1},{2},{3},{4},{5}", Xs0, Ys0, Zs0, Φ, Ψ, K);Console.Read();}//求arr5AA的逆矩public static double[,] nijuzhen(double[,] a) {double[,] B = new double[6, 6];int i, j, k;int row = 0;int col = 0;double max, temp;int[] p = new int[6];for (i = 0; i < 6; i++){p[i] = i;B[i, i] = 1;}for (k = 0; k < 6; k++){//找主元max = 0; row = col = i;for (i = k; i < 6; i++){for (j = k; j < 6; j++){temp = Math.Abs(a[i, j]);if (max < temp){max = temp;row = i;col = j;}}}//交换行列,将主元调整到k行k列上if (row != k){for (j = 0; j < 6; j++){temp = a[row, j];a[row, j] = a[k, j];a[k, j] = temp;temp = B[row, j];B[row, j] = B[k, j];B[k, j] = temp;i = p[row]; p[row] = p[k]; p[k] = i; }if (col != k){for (i = 0; i < 6; i++){temp = a[i, col];a[i, col] = a[i, k];a[i, k] = temp;}}//处理for (j = k + 1; j < 6; j++){a[k, j] /= a[k, k];}for (j = 0; j < 6; j++){B[k, j] /= a[k, k];a[k, k] = 1;}for (j = k + 1; j < 6; j++){for (i = 0; j < k; i++){a[i, j] -= a[i, k] * a[k, j];}for (i = k + 1; i < 6; i++){a[i, j] -= a[i, k] * a[k, j];}}for (j = 0; j < 6; j++){for (i = 0; i < k; i++){B[i, j] -= a[i, k] * B[k, j];}for (i = k + 1; i < 6; i++){B[i, j] -= a[i, k] * B[k, j];}for (i = 0; i < 6; i++) {a[i, k] = 0;a[k, k] = 1;}}//恢复行列次序for (j = 0; j < 6; j++){for (i = 0; i < 6; i++) {a[p[i], j] = B[i, j]; }}for (i = 0; i < 6; i++){for (j = 0; j < 6; j++) {a[i, j] = a[i, j];}}return a;}4.实验结果四.实验总结此次实验让我深入了解单像空间后方交会的计算过程,加强了对空间后方交会基本公式和误差方程式,法线方程式的记忆。
摄影测量学单像空间后方交会编程实习报告

摄影测量学单像空间后方交会编程实习报告实习背景在本次实习中,我们学习了摄影测量学单像空间后方交会的编程实现。
这是一种通过计算影像中各点的坐标来确定被摄物的三维坐标的方法,应用广泛于测绘、地理信息、建筑等领域。
本次实习采用 MATLAB 软件进行编程,目的是将理论知识应用到实际操作中,让我们更深入理解摄影测量学单像空间后方交会的原理和应用。
实习内容理论部分首先,我们在工作室进行了理论部分的学习。
老师讲解了单像空间后方交会的原理,以及如何通过影像坐标、相机外方位元素、像点坐标和像平面坐标等参数来计算被摄物的三维坐标。
在理论部分的学习过程中,我们通过公式的推导和实例分析,更加深入地理解了单像空间后方交会的原理。
实践部分实践部分是本次实习的重头戏。
我们利用 MATLAB 软件进行了单像空间后方交会的编程实现,具体步骤如下:1.输入相机外方位元素通过读取文本文件,将相机外方位元素(相机在拍摄时的姿态、位置等参数)输入到 MATLAB 中。
2.输入影像坐标通过读取文本文件,将影像中的像点坐标输入到 MATLAB 中。
3.计算像平面坐标利用相机内定标参数,将像点坐标转化为像平面坐标。
4.计算被摄物三维坐标根据单像空间后方交会的原理,利用相机外方位元素、像平面坐标和像点坐标等参数,计算被摄物的三维坐标。
5.输出结果将计算结果输出到文本文件中,以便后续的数据处理和分析。
在实际操作中,我们首先编写了 MATLAB 脚本文件,根据上述步骤逐步实现了单像空间后方交会的计算过程。
然后,我们利用自己拍摄的实际照片进行实验,将相机外方位元素和像点坐标输入到程序中,最终得到了被摄物的三维坐标结果。
实习收获通过本次实习,我从理论到实践,更深入地理解了摄影测量学单像空间后方交会的原理和应用,同时也掌握了 MATLAB 的编程技能。
在实践中,我遇到了许多问题,包括数据的输入输出、代码的调试和结果的分析等等。
通过和同学的讨论和老师的指导,我不仅解决了这些问题,还对摄影测量学的应用有了更深入的认识。
(样本)空间后方交会实验报告

空间后方交会实验报告
1 实习目的:
用Visual C++编写一个完整的单片空间后方交会程序,通过对提供的试验数据进行计算,输出像片的外方位元素并评定精度。
深入理解单片空间后方交会的原理,体会在有多余观测情况下,用最小二乘平差方法编程实现解求影像外方位元素的过程。
通过上机调试程序加强动手能力的培养,通过对实验结果的分析,增强综合运用所学知识解决实际问题的能力。
2实习环境:
2.1硬件环境:window操作系统
2.2软件环境:vc++6.0
略
3实习内容:
利用一定数量的地面控制点,根据共线条件方程求解像片外方位元素:
略
4 数据准备:
4.1 已知航摄仪内方位元素f=153.24mm,Xo=Yo=0。
5实习过程:
5.1学习单张像片空间后方交会的基本理论,掌握其基本思想。
略
5.2在纸上绘出空间后方交会的计算机程序框图。
为了能够在宏观上指导我们编写程序,我们需要在草稿纸上绘出程序框图。
框图如下:
↓
↓
↓
︱
︱
︱
迭
迭
次
数
小↓完
于
限↓
差
否否↓
否︱↓是
︱
输出中间结果和出错信息↓
︱
非正常结束
6. 按照程序框图编写程序。
程序代码如下:必须有注释
7 程序结果显示
(略)
8 实习心得与总结:
略。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单像空间后方交会姓名:学号:时间:目录一、作业任务 ............................................................................................................... - 3 -二、计算原理 ............................................................................................................... - 3 -三、算法流程 ............................................................................................................... - 7 -四、源程序 ................................................................................................................... - 8 -五、计算结果 ............................................................................................................... - 8 -六、结果分析 ............................................................................................................... - 8 -七、心得与体会 ........................................................................................................... - 8 -八、附页 ....................................................................................................................... - 8 -1.c++程序 ........................................................................................................... - 8 -2.C++程序截图.................................................................................................. - 15 -3.matlb程序..................................................................................................... - 16 -一、 作业任务 已知条件:摄影机主距f=153.24mm ,x0=0,y0=0, 像片比例尺为1:40000,有四对点的像点坐标与相应的地面坐标如下表。
以单像空间后方交会方法,求解该像片的外方位元素。
二、 计算原理1. 获取已知数据。
从航摄资料中查取平均航高与摄影机主距;获取控制点的地面测量坐标并转换为地面摄测坐标。
2. 测量控制点的像点坐标并作系统误差改正。
3. 确定未知数的初始值。
在竖直摄影且地面控制点大体对称分布的情况下,按如下方法确定初始值,即01,,S SSX Y X YZmf Z nnn===+∑∑∑ 0000ϕωκ===式中:m 为摄影比例尺分母;n 为控制点个数4. 用三个角元素的初始值按下式计算各方向余弦值,组成旋转矩阵R123123123a a a R b b b c c c ⎡⎤⎢⎥=⎢⎥⎢⎥⎣⎦矩阵中各元素的计算公式如下:123123123cos cos sin sin sin cos sin sin sin cos sin cos cos sin cos cos sin sin cos cos sin sin sin sin cos sin cos cos cos a a a b b b c c c ϕκϕωκϕκϕωκϕωωκωκωϕκϕωκϕκϕωκϕω=-⎧⎪=--⎪⎪=-⎪=⎪⎪=⎨⎪=-⎪⎪=+⎪=-+⎪⎪=⎩ 5. 逐点计算像点坐标的近似值。
利用未知数的近似值和控制点的地面坐标,带入以下共线方程式,111333222333()()()()()()()()()()()()A S A S A S A S A S A S A S A S A S A S A S A S a X X b Y Y c Z Z x f a X X b Y Y c Z Z a X X b Y Y c Z Z y f a X X b Y Y c Z Z -+-+-⎧=-⎪-+-+-⎪⎨-+-+-⎪=-⎪-+-+-⎩逐点计算像点坐标的近似值()x 、()y1111111313131212121131313112121223232322()()()()()()()()()()()()()()()()()()()()()()S S S S S S S S S S S S S S S S S S a X X b Y Y c Z Z x f a X X b Y Y c Z Z a X X b Y Y c Z Z y f a X X b Y Y c Z Z a X X b Y Y c Z Z x f a X X b Y Y c Z Z y -+-+-=--+-+--+-+-=--+-+--+-+-=--+-+-=2222223232321313133333333232323333333314()()()()()()()()()()()()()()()()()()()()(()S S S S S S S S S S S S S S S S S S a X X b Y Y c Z Z fa X Xb Y Yc Z Z a X X b Y Y c Z Z x f a X X b Y Y c Z Z a X X b Y Y c Z Z y f a X X b Y Y c Z Z a x f -+-+---+-+--+-+-=--+-+--+-+-=--+-+-=-414143434342424244343434)()()()()()()()()()()()()S S S S S S S S S S S S X X b Y Y c Z Z a X X b Y Y c Z Z a X X b Y Y c Z Z y f a X X b Y Y c Z Z ⎧⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪-+-+-⎪⎪-+-+-⎪-+-+-⎪=-⎪-+-+-⎩6. 逐点计算误差方程式的系数和常数项,组成误差方程式。
111213141516212223242526313233343536141424344454628651425354555636162636465664717273747576818283848586a a a a a a aa a a a a a a a a a a A a a a a a a A A a a a a a a A a a a a a a A a a a a a a a a a a a a ⨯⎡⎤⎢⎥⎢⎥⎢⎥⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥==⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦⎢⎥⎢⎥⎢⎥⎣⎦ 由常数项计算公式:111333222333()()()()()()()()()()()()(1,2,3,4)i S i S i S ixi i S i S i S i yi i S i S i S ii S i S i S a X X b Y Y c Z Z x f l a X X b Y Y c Z Z L l a X X b Y Y c Z Z y f a X X b Y Y c Z Z i -+-+-⎡⎤+⎢⎥-+-+-⎡⎤⎢⎥==⎢⎥⎢-+-+-⎥⎣⎦+⎢⎥-+-+-⎣⎦=得到常数项矩阵计算式为:1111111313131212121131313112121223232128134()()()()()()()()()()()()()()()()(S S S S S S S S S S S S S S S S a X X b Y Y c Z Z x f a X X b Y Y c Z Z a X X b Y Y c Z Z y f a X X b Y Y c Z Z a X X b Y Y c Z Z x f a X X b Y Y L L L L L ⨯-+-+-+-+-+--+-+-+-+-+--+-+-+-+-⎡⎤⎢⎥⎢⎥==⎢⎥⎢⎥⎣⎦322222222323232131313333333323232333333334)()()()()()()()()()()()()()()()()()()()S S S S S S S S S S S S S S S S S S S S c Z Z a X X b Y Y c Z Z y f a X X b Y Y c Z Z a X X b Y Y c Z Z x f a X X b Y Y c Z Z a X X b Y Y c Z Z y f a X X b Y Y c Z Z x +--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+-1414143434342424244343434()()()()()()()()()()()()S S S S S S S S S S S S a X X b Y Y c Z Z f a X X b Y Y c Z Z a X X b Y Y c Z Z y f a X X b Y Y c Z Z ⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥-+-+-⎢⎥+-+-+-⎢⎥⎢⎥-+-+-⎢⎥+-+-+-⎢⎥⎣⎦7. 计算法方程的是系数矩阵T A A 和常数项T A L ,组成法方程式。
8. 解法方程,求得外方位元素的改正数,,,,,S S S dX dY dZ d d d ϕωκ。
9. 用前次迭代取得的近似值,加本次迭代的改正数,计算外方位元素的新值。